;(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 de mel além do básico: receitas do doce vão de pudim a milk-shake

Pudim com gostinho de pão de mel - Sheila Oliveira
Pudim com gostinho de pão de mel Imagem: Sheila Oliveira

De Nossa

14/05/2021 04h00

Comum em padarias, mercadinhos e confeitarias, o pão de mel ficou conhecido no Brasil como um doce individual, de massa enriquecida com sabor de especiarias e mel e envolto de chocolate.

No recheio, brilha o doce de leite — de preferência, em quantidade generosa. Mas a receita não nasceu aqui. Uma versão da história conta que o doce original é europeu.

Inicialmente, era feito de mel, farinha de trigo, manteiga, ovos e especiarias. Felizmente, não demorou para que os cozinheiros de lá percebessem que adicionar um banho de chocolate preserva a umidade da massa por mais tempo e, de quebra, dá um sabor atrativo.

Pão de mel - Alexandre Machado/Getty Images/iStockphoto - Alexandre Machado/Getty Images/iStockphoto
Casquinha de chocolate, massa estruturada e recheio de doce de leite
Imagem: Alexandre Machado/Getty Images/iStockphoto

Na Rússia, também há registros de pão de mel. Chamado de pryanik, era composto de farinha, mel e sucos de frutas. Pela influência da Índia e do Oriente Médio, a receita foi incorporando aos poucos especiarias como canela e gengibre.

Como toda sobremesa adorada no Brasil, ficar no básico não é suficiente. Há adaptações aos montes para variar o formato e o gosto do doce. Pensando nisso, selecionamos receitas que vão deixar todo louco por pão de mel com água na boca.

Pão de mel de colher

A massa, o chocolate e o doce de leite estão presentes, só que organizados diferente do comum: dentro de um pote. Feito para comer de colher, rende até um presente no estilo do it yourself (faça você mesmo).

Pão de mel de colher

Dificuldade Fácil
20 porções
70 min
Ver receita completa

Pudim de pão de mel

Trata-se de uma receita bem simples, na qual todos os ingredientes entram no liquidificador. O mel, as especiarias e o chocolate deixam a pedida com gostinho de pão de mel.

Pudim de pão de mel

Ver receita completa

Bolo de pão de mel

A receita preparada com leite condensado e mel promete uma textura agradável e leva no topo chocolate derretido.

Bolo de pão de mel

Dificuldade Fácil
Ver receita completa

A versão sem glúten usa farinha de amêndoas no lugar do trigo.

Bolo sem glúten de pão de mel

Dificuldade Fácil
Ver receita completa

Milk-shake de pão de mel

No pão de mel "de beber", o sorvete de creme vai ao liquidificador com mel, canela, achocolatado e água. Não tem erro.

Milk-shake de pão de mel

Dificuldade Fácil
Ver receita completa