;(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

Pavlova

Divulgação
Imagem: Divulgação

1 porções

Fácil

Ingredientes

  • 6 claras
  • 1 xícara(s) de chá e 1/2 de açúcar refinado
  • 2 colher(es) de sopa rasas de amido de milho
  • 1 colher(es) de sopa de suco de limão
  • 2 colher(es) de sopa de essência de baunilha

Finalização

  • 4 xícara(s) de chá de creme de leite fresco
  • 1/2 xícara(s) de chá de açúcar
  • 1 colher(es) de sopa de essência de baunilha
  • Frutas vermelhas (ou geleia) de sua preferência

Modo de preparo

Preaqueça o forno. A Palora precisa ser assada a 130 graus. Se o seu forno não chegar a essa temperatura, ligue na sua temperatura mais baixa e deixe uma colher de pau na porta, para ela ficar um pouco aberta e dissipar o calor.

Na batedeira, bata as claras em velocidade média. Quando elas dobrarem de tamanho, vá adicionando o açúcar aos poucos. Ponha um pouco de clara entre os dedos e esfregue um no outro, para ver se o açúcar dissolveu. Quando sentir a textura lisa, adicione o amido, o suco de limão e a essência e bata mais um pouco.

Unte uma assadeira com óleo ou forre com papel manteiga (que também deve ser untado, senão gruda) e coloque as claras sobre ela, bem no centro da forma.

Modele sua Pavlova usando uma colher. Ela deve ser um círculo com um buraco no meio, para colocar o chantilly. Com as costas de uma colher, vá fazendo os desenhos e o formato. Não precisa deixar o fundo muito fino.

Leve para assar por 1 hora e 20 minutos (ela precisa estar opaca quando acabar o tempo de forno) e depois deixe de ela quietinha por mais 6 horas dentro do forno. Esse o é importante para ela secar e ficar cremosa por dentro.

Finalização

Para fazer o chantilly, bata 4 xícaras de creme de leite fresco (aqueles que ficam nas geladeiras do supermercados) com 1/2 xícara de açúcar e 1 colher de sopa de essência de baunilha, até atingir ponto de pico.

Coloque na parte funda da Pavlova. Decore com frutas vermelhas picadas ou com alguma geleia de frutas vermelhas.

Por Livia Pauliez