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

Restaurante se recusa a servir clientes sem vacina e faz sucesso nos EUA

Proprietários do restaurante Dame, em Nova York, nos EUA - Reprodução/DeSean McClinton-Holland
Proprietários do restaurante Dame, em Nova York, nos EUA
Imagem: Reprodução/DeSean McClinton-Holland

De Nossa

29/07/2021 11h33

O restaurante Dame, em Nova York, nos Estados Unidos, está tomando uma medida que vem sendo aclamada: recusar-se a servir clientes que não apresentarem uma prova de que foram vacinados. A medida foi anunciada nesta semana pelos proprietários.

De acordo com o site "Insider", a medida foi tomada pelos donos do estabelecimento em consequência do crescimento das taxas de infecção no Estado norte-americano.

"Temos observado ansiosamente o aumento da taxa de infecção de Nova York", disse a proprietária Patricia Howard à "Insider". "Não podemos controlar se a pessoa ao nosso lado no metrô está usando uma máscara, mas podemos controlar quem pode entrar por nossas portas no Dame".

A medida, além de servir como um "exemplo para outros restaurantes", tem como intuito também proteger dois funcionários do local, que possuem comorbidades.

Medida tomada pelos donos do Dame foram impostas em consequência do crescimento da taxa de infecção do coronavírus - Reprodução/Insider - Reprodução/Insider
Medida tomada pelos donos do Dame foram impostas em consequência do crescimento da taxa de infecção do coronavírus
Imagem: Reprodução/Insider

Embora a medida possa parecer polêmica — e tenha recebido críticas nas redes sociais, acabou tornando-se um sucesso. Isso porque, segundo os proprietários ao "Insider", as reservas do restaurante continuaram aumentando poucos minutos.

"Felizmente, quase todo mundo tem sido tão grato e solidário", disse Patricia Howard. "Recebemos centenas de e-mails de volta (o que não esperávamos), agradecendo-nos pela iniciativa, agradecendo-nos por manter nossa comunidade segura, dizendo que os deixa ainda mais animados para jantar no Dame e esperando que outros restaurantes sigam o exemplo".

Nas últimas 24 horas, vários outros restaurantes entraram em contato sobre o desejo de fazer o mesmo, mas sem saber como fazer isso, nervosos, etc."