;(function() { window.createMeasureObserver = (measureName) => { var markPrefix = `_uol-measure-${measureName}-${new Date().getTime()}`; performance.mark(`${markPrefix}-start`); return { end: function() { performance.mark(`${markPrefix}-end`); performance.measure(`uol-measure-${measureName}`, `${markPrefix}-start`, `${markPrefix}-end`); performance.clearMarks(`${markPrefix}-start`); performance.clearMarks(`${markPrefix}-end`); } } }; /** * Gerenciador de eventos */ window.gevent = { stack: [], RUN_ONCE: true, on: function(name, callback, once) { this.stack.push([name, callback, !!once]); }, emit: function(name, args) { for (var i = this.stack.length, item; i--;) { item = this.stack[i]; if (item[0] === name) { item[1](args); if (item[2]) { this.stack.splice(i, 1); } } } } }; var runningSearch = false; var hadAnEvent = true; var elementsToWatch = window.elementsToWatch = new Map(); var innerHeight = window.innerHeight; // timestamp da última rodada do requestAnimationFrame // É usado para limitar a procura por elementos visíveis. var lastAnimationTS = 0; // verifica se elemento está no viewport do usuário var isElementInViewport = function(el) { var rect = el.getBoundingClientRect(); var clientHeight = window.innerHeight || document.documentElement.clientHeight; // renderizando antes, evitando troca de conteúdo visível no chartbeat-related-content if(el.className.includes('related-content-front')) return true; // garante que usa ao mínimo 280px de margem para fazer o lazyload var margin = clientHeight + Math.max(280, clientHeight * 0.2); // se a base do componente está acima da altura da tela do usuário, está oculto if(rect.bottom < 0 && rect.bottom > margin * -1) { return false; } // se o topo do elemento está abaixo da altura da tela do usuário, está oculto if(rect.top > margin) { return false; } // se a posição do topo é negativa, verifica se a altura dele ainda // compensa o que já foi scrollado if(rect.top < 0 && rect.height + rect.top < 0) { return false; } return true; }; var asynxNextFreeTime = () => { return new Promise((resolve) => { if(window.requestIdleCallback) { window.requestIdleCallback(resolve, { timeout: 5000, }); } else { window.requestAnimationFrame(resolve); } }); }; var asyncValidateIfElIsInViewPort = function(promise, el) { return promise.then(() => { if(el) { if(isElementInViewport(el) == true) { const cb = elementsToWatch.get(el); // remove da lista para não ser disparado novamente elementsToWatch.delete(el); cb(); } } }).then(asynxNextFreeTime); }; // inicia o fluxo de procura de elementos procurados var look = function() { if(window.requestIdleCallback) { window.requestIdleCallback(findByVisibleElements, { timeout: 5000, }); } else { window.requestAnimationFrame(findByVisibleElements); } }; var findByVisibleElements = function(ts) { var elapsedSinceLast = ts - lastAnimationTS; // se não teve nenhum evento que possa alterar a página if(hadAnEvent == false) { return look(); } if(elementsToWatch.size == 0) { return look(); } if(runningSearch == true) { return look(); } // procura por elementos visíveis apenas 5x/seg if(elapsedSinceLast < 1000/5) { return look(); } // atualiza o último ts lastAnimationTS = ts; // reseta status de scroll para não entrar novamente aqui hadAnEvent = false; // indica que está rodando a procura por elementos no viewport runningSearch = true; const done = Array.from(elementsToWatch.keys()).reduce(asyncValidateIfElIsInViewPort, Promise.resolve()); // obtém todos os elementos que podem ter view contabilizados //elementsToWatch.forEach(function(cb, el) { // if(isElementInViewport(el) == true) { // // remove da lista para não ser disparado novamente // elementsToWatch.delete(el); // cb(el); // } //}); done.then(function() { runningSearch = false; }); // reinicia o fluxo de procura look(); }; /** * Quando o elemento `el` entrar no viewport (-20%), cb será disparado. */ window.lazyload = function(el, cb) { if(el.nodeType != Node.ELEMENT_NODE) { throw new Error("element parameter should be a Element Node"); } if(typeof cb !== 'function') { throw new Error("callback parameter should be a Function"); } elementsToWatch.set(el, cb); } var setEvent = function() { hadAnEvent = true; }; window.addEventListener('scroll', setEvent, { capture: true, ive: true }); window.addEventListener('click', setEvent, { ive: true }); window.addEventListener('resize', setEvent, { ive: true }); window.addEventListener('load', setEvent, { once: true, ive: true }); window.addEventListener('DOMContentLoaded', setEvent, { once: true, ive: true }); window.gevent.on('allJSLoadedAndCreated', setEvent, window.gevent.RUN_ONCE); // inicia a validação look(); })();
  • AssineUOL
Topo

Pão campeiro

Fácil

Ingredientes

  • 20 grama(s) de sal
  • 50 grama(s) de banha de porco ou manteiga
  • 15 grama(s) de açúcar
  • 25 grama(s) de fermento biológico seco
  • 550 mililitro (ml) de água (sendo 100 mililitros morna para ativar o fermento)
  • 1 quilo(s) de farinha de trigo 00 (sendo 30 gramas para ativar o fermento)

Modo de preparo

Junte o fermento em 100 mililitros de água morna e misture com um garfo. Em seguida, junte 30 gramas farinha de trigo e mexa. Deixe descansar por 20 minutos para ativar o fermento.

Numa tigela, junte o restante da farinha, o açúcar e o sal. Quando der o tempo do fermento, adicione à mistura. Coloque o bowl na batedeira e use o gancho para bater na menor velocidade possível.

Aumente um pouco a velocidade e adicione o restante da água (em temperatura ambiente) aos poucos. Quando a massa estiver homogênea, junte a banha ou a manteiga. Bata por mais cinco a oito minutos, até ficar lisa.

Leve o pão a uma bancada enfarinhada e faça movimentos de acordo com o vídeo. Transfira a massa para um bowl enfarinhado e cubra com um pano úmido ou plástico filme. Espere crescer em temperatura ambiente de uma hora a uma hora e meia.

Depois, corte a massa ao meio. Enrole uma parte no plástico filme para não ressecar enquanto trabalha com a outra. Separe porções de 100 ou 150 gramas e boleie como preferir. Descanse por uma hora ou até dobrar de tamanho com um pano úmido por cima. Por fim, asse em forno preaquecido a 200 graus sobre papel-manteiga de 25 a 30 minutos.
Cozinha Por Aí - xis - Cozinha por Aí/UOL - Cozinha por Aí/UOL
Imagem: Cozinha por Aí/UOL

Receita do programa "Cozinha por Aí" de Nossa. Veja mais episódios que mostram como uma receita base pode se transformar em dois pratos diferentes.

Quer ver mais dicas de cozinha?
Confira no YouTube de Nossa.