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

Sete receitas saborosas para turbinar o seu pastel

Do UOL

20/10/2017 04h00

Pastel de feira é aquele tipo de coisa que vale por uma bela refeição - e que todo mundo gosta, ainda que seja de vez em quando. Se não tem feira perto de casa, dá para fazer em casa sem problemas (dá até para assar ao invés de fritar, se for o caso). Mas se você fica desanimado com a ideia de pastel só de queijo, que tal dar aquela turbinada sem compromisso nos recheios?

Pastel de Frango, Brie e Tomate Seco - Leonardo Soares/UOL - Leonardo Soares/UOL
Imagem: Leonardo Soares/UOL

Pastel de frango, brie e tomate seco

O companheiro do frango dentro da massa de pastel não precisa, automaticamente, ser Catupiry. Que tal adicionar queijo brie na mistura? Clique aqui para ver a receita.

Pastel de Atum, Palmito, Azeitonas Verdes e Manjericão - Leonardo Soares/UOL - Leonardo Soares/UOL
Imagem: Leonardo Soares/UOL

Pastel de atum, palmito e manjericão

Pastel de atum não precisa ser seco - e também não precisa ser sem graça. Com a ajuda de palmito, manjericão e azeitonas, esta receita é praticamente uma refeição dentro da massa. Clique aqui para ver fotos do o a o.

Pastel de Jamón com Queijo Manchego - Wellington Nemeth/Divulgação - Wellington Nemeth/Divulgação
Imagem: Wellington Nemeth/Divulgação

Pastel de jamón com queijo manchego

Vale ingredientes exóticos? Vale! Aqui, dois produtos orgulhosamente espanhóis dividem o recheio do pastel, servido com um molho bem diferente à base de pimenta, limão-siciliano e alfavaca. Clique aqui para ver a receita.

Pastel de Festa - Joca Pontes/Arquivo Pessoal - Joca Pontes/Arquivo Pessoal
Imagem: Joca Pontes/Arquivo Pessoal

Pastel de Festa
Mais que uma receita, é um patrimônio dos pernambucanos. A combinação de recheio salgado (canre moída com azeitonas) e cobertura de açúcar pode parecer um pouco chocante para quem não conhece - mas, acredite, o produto final é uma delícia! Clique aqui para ver a receita.

Pastel de palmito de jaca - Eduardo H Hanazaki/Divulgação - Eduardo H Hanazaki/Divulgação
Imagem: Eduardo H Hanazaki/Divulgação

Pastel de palmito de jaca

E tem versão vegetariana (e vegana), muitíssimo bem temperada, à base de "carne" de jaca, tomates e pimentões. Clique aqui para ver a receita.

Pastel Recheado de Joelho de Porco e Catupiry - Lucas Aldi/Divulgação - Lucas Aldi/Divulgação
Imagem: Lucas Aldi/Divulgação

Pastel de joelho de porco e queijo Catupiry

E para quem é bem carnívoro, já pensou em comer joelho de porco dentro do pastel? Pois tem uma receita para isso. Clique aqui para ver.


Pastel de Manga e Coco - Leonardo Soares/UOL - Leonardo Soares/UOL
Imagem: Leonardo Soares/UOL

Pastel de manga e coco

Curte um pastel doce? Ao invés do pastel de chocolate de sempre, por que não uma combinação diferente, como manga e coco? Clique aqui para ver a receita.