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

Até tu? Noma, o 2º melhor restaurante do mundo, abre hamburgueria

Hambúrguer vegetariano: preparado com quinoa fermentada - Reprodução Instagram
Hambúrguer vegetariano: preparado com quinoa fermentada Imagem: Reprodução Instagram

Gabrielli Menezes

De Nossa

03/12/2020 10h51

A informalidade vem conquistando a alta gastronomia pouco a pouco. Chef do estrelado Noma, em Copenhague, na Dinamarca, René Redzepi entrou na lista dos cozinheiros que se renderam ao hambúrguer.

O trabalho na chapa, que começou como uma estratégia de retomada do restaurante após o lockdown, ganhará casa própria. Chamada de POPL, a hamburgueria abre ao público na quinta (3).

No blog do estabelecimento, René revela que a pandemia fez a brigada enfrentar um dos maiores desafios vistos nos 17 anos de operação da casa. O Restaurante 108, irmão mais novo do Noma, por exemplo, fechou as portas em setembro pela crise.

Noma - Reprodução Instagram - Reprodução Instagram
Atmosfera informal marcou a reabertura do Noma e será levado à nova POPL
Imagem: Reprodução Instagram

Em contrapartida, houve trunfos como a temporada de hambúrgueres de verão, quando a Dinamarca flexibilizou o funcionamento de restaurantes. Na época, o Noma deixou de lado a exigência de reserva e o menu sazonal para dar lugar ao serviço de hambúrgueres e às mesas ao ar livre.

Com isso, fisgou os clientes fiéis e ainda um novo público:

Dar as boas-vindas aos moradores de Copenhague e aos dinamarqueses que viajaram para visitar nosso restaurante naquele período significou muito. Apreciamos profundamente aqueles que vieram nos apoiar, do fundo do coração".

Hambúrguer que foi sucesso na temporada de verão do restaurante agora ganha casa própria - Reprodução Instagram - Reprodução Instagram
Hambúrguer que foi sucesso na temporada de verão do restaurante agora ganha casa própria
Imagem: Reprodução Instagram

Foi essa a inspiração para o nome da nova casa, que remete a expressão 'populus' — em latim, comunidade, povo, gente. Outro significado, que faz referência a um tipo de madeira, pretende ar para os clientes o respeito que René, um dos profissionais do ramo mais influentes do mundo, tem pela natureza.

A operação da POPL será tocada por um grupo de veteranos do Noma e carrega em sua concepção a valorização do produto de origem. Os discos de carne, por exemplo, são orgânicos e feitos com gado dinamarquês proveniente de três fazendas na costa oeste do país escandinavo, onde os bois pastam livremente.

O menu apresenta também versões vegetarianas e veganas preparadas com ingredientes como quinoa, além de acompanhamentos sazonais e sorvetes para a sobremesa. Os clientes poderão sentar-se no porto para comer com os amigos e famílias ou levar os sanduíches para casa.

Cada hambúrguer sairá por 110 kr (R$ 67,77) para viagem e 145 kr (R$ 89,34) para refeição no local.

POPL - Ditte Isager/Reprodução Instagram - Ditte Isager/Reprodução Instagram
Novo POPL: hambúrguer de carne orgânica e acompanhamentos sazonais
Imagem: Ditte Isager/Reprodução Instagram

"Estamos entrando em contato com a comunidade de produtores com os quais o Noma tem trabalhado nos últimos 17 anos. Procuramos os melhores artesãos, desde os fabricantes de pratos, aos agricultores biodinâmicos, aos fermentadores, cervejeiros e enólogos. Essa dedicação à qualidade, inovação, culinária e consideração ambiental é a espinha dorsal da POPL".