;(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();
})();
Peixe grelhado com purê de banana caramelizada e quiabo tostado
Imagem: mathewemerick
Ingredientes
Purê de banana caramelizada
6 unidade(s) bananas caturra não muito maduras
1 colher(es) de sopa de açúcar mascavo
1 colher(es) de sopa de melaço de cana
pimenta do reino preta (moída na hora fica mais gostosa)
1 dose(s) de cachaça
300 mililitro (ml) de leite (pode substituir pelo leite de sua preferência)
50 grama(s) de manteiga gelada (óleo de coco ou manteiga de cacau também funcionam para uma opção vegana)
sal a gosto
Peixe grelhado
4 filé(s) de peixe branco de sua preferência
pimenta do reino, sal e azeite a gosto
Quiabo tostado
6 unidade(s) de quiabo
suco de um limão
sal, manteiga e páprica a gosto
Modo de preparo
Purê de banana caramelizada
Pré-aqueça o forno a 180 °C. Numa assadeira, coloque as bananas sem casca e tempere com o sal, pimenta, açúcar mascavo e o melaço de cana, espalhe bem para ficar uniforme. Leve ao forno por aproximadamente 20 minutos. O ponto é quando a banana está quase queimada. Assim que retirar a banana do forno, jogue a dose de cachaça no fundo da forma para pegar todo o fundo que sobrou da caramelização. Numa a, coloque a banana já caramelizada, esse caldinho que ficou da cachaça e acrescente apenas metade do leite. Bata no mixer ou liquidificador até virar um purê homogêneo. Leve ao fogo médio e acrescente o leite aos poucos. Mexa até que desgrude do fundo da a. Retire do fogo e acrescente a manteiga gelada e mexa rápido e com força, até derreter toda a manteiga.
Peixe grelhado
Tempere os filés de peixe com pimenta do reino e sal a gosto. Numa frigideira bem quente, besunte de azeite e coloque o peixe com a pele para baixo até que fique dourada como na foto. Vire o peixe e deixe cozinhar até o centro ficar pronto.
Quiabo tostado
Numa a com água fervendo, acrescente sal e suco de um limão. Adicione os quiabos e deixe cozinhar por um minuto. Retire da água e coloque numa bacia com água e gelo para parar o cozimento e ele continuar crocante. Seque e corte os quiabos ao meio "de comprido". Tempere com sal e páprica. Numa frigideira bem quente, adicione manteiga e os quiabos com a parte da sementes em para baixo. Deixe tostar até ficar dourado.
ID: {{comments.info.id}}
URL: {{comments.info.url}}
Ocorreu um erro ao carregar os comentários.
Por favor, tente novamente mais tarde.
{{comments.total}} Comentário
{{comments.total}} Comentários
Seja o primeiro a comentar
Essa discussão está encerrada
Não é possivel enviar novos comentários.
Essa área é exclusiva para você, , ler e comentar.
Só s do UOL podem comentar
Ainda não é ? Assine já.
Se você já é do UOL, faça seu .
O autor da mensagem, e não o UOL, é o responsável pelo comentário. Reserve um tempo para ler as Regras de Uso para comentários.