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

Drinques digestivos: aprenda receitas para servir após as refeições

Irina Cordeiro

Colaboração para Nossa

19/03/2021 04h02

Depois de uma mesa farta, um drinque digestivo fecha com chave de ouro a refeição. Tradição especialmente italiana, ele "cura" a indisposição, tira aquela sensação de estômago pesado e traz vitalidade para seguir na conversa em torno da mesa.

Os princípios digestivos desses drinques não estão relacionados ao álcool em si, mas às ervas, frutas ou raízes adicionados às bebidas.

Na Itália, um dos mais famosos é o limoncello, um licor bem viscoso feito com limões sicilianos. Também faz sucesso o sgroppino, um drinque digestivo que leva sorvete de limão.

No episódio de hoje de Refresco, Irina Cordeiro resgata o o a o desta receita característica da região do Vêneto. Ela também ensina a brasileiríssima meladinha, digestivo à base de cachaça, mel e limão.

Mais Refresco!

Perdeu os episódios anteriores do programa? Não se aperreie, não! Veja os drinques que já aram por aqui:

Clericot tropical

O drinque que é a cara do verão leva vinho e frutas brasileiras nesta versão pra lá de tropical servida em jarra.

Manhattan

Bebida forte é coisa de mulher, sim! Aprenda a fazer esse drinque potente.

Caipirinhas diferentes

Já viu o drinque mais famoso do Brasil ter a cor lilás? Descubra como no episódio de estreia de Refresco.

Whisky de verão

A combinação da bebida clássica com gelo de água de coco deixa o drinque com a cara da estação.

Gin beet

Cansou do gin tônica? Inove com drinque colorido e refrescante com a bebida do momento.

Anote aí!

Confira todos os episódios de Refresco e mais séries gastronômicas no Youtube de Nossa. Você também pode ver conteúdos extra no Instagram de Nossa e participar postando seus melhores drinques com a hashtag #Refresco.

E quem quer saber tudo para o churrasco perfeito, não pode perder o novo programa Vai ter churras, com Bruno Salomão. Dá só uma olhada no episódio no qual ele ensina macetes práticos para escolher as melhores carnes: