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

Países bálticos criam 'bolha de viagens' após redução dos casos na pandemia

Praça próxima ao palácio do Presidente da Lituânia, na cidade de Vilnius - Paulius Peleckis/Anadolu Agency via Getty Images
Praça próxima ao palácio do Presidente da Lituânia, na cidade de Vilnius
Imagem: Paulius Peleckis/Anadolu Agency via Getty Images

Da Reuters

11/05/2020 10h17

Letônia, Lituânia e Estônia abrirão suas fronteiras para os cidadãos a partir do dia 15 de maio, criando uma "bolha de viagens" dentro da União Européia, em meio ao alívio das restrições à pandemia, informaram os primeiros-ministros na quarta-feira.

"É um grande o em direção à vida normal", escreveu o primeiro-ministro da Estônia, Juri Ratas, no Twitter.

A área de viagens do Báltico seria a primeira a tomar a iniciativa no bloco, em que a maioria dos países restringiu a entrada a estrangeiros e impôs quarentena aos viajantes que chegavam à medida que o coronavírus se espalhava pelo continente.

Os cidadãos dos três países poderão viajar livremente pela região, mas quem vier de fora precisará se auto isolar por 14 dias, disse o primeiro-ministro lituano Saulius Skvernelis.

"Mostramos um bom exemplo ao afirmar, muito claramente, que apenas os países que lidaram com sucesso a situação podem se abrir", acrescentou.

"Acho que manteremos esse princípio ao lidar com países onde a situação é muito ruim, que não tomou medidas para controlar a propagação do vírus".

Polônia e Finlândia podem ser os próximos países a aderir ao bloco de agens livres, disse Skvernelis.

A Comissão Europeia recomendou que os controles nas fronteiras internas entre todos os estados membros sejam suspensos de maneira coordenada, uma vez que a situação do vírus diminua gradativamente, afirmou o escritório da comissão na Lituânia.

Movimentos para abrir seletivamente as fronteiras surgiram em outros lugares. A Austrália e a Nova Zelândia estão trabalhando para retomar as viagens entre os dois países, por exemplo.

Lituânia, Letônia e Estônia, os principais parceiros comerciais, também estão tomando medidas cautelosas para reabrir suas atividades econômicas.

"Esse é um estímulo muito importante para as empresas regionais de turismo. Isso não os levará de volta para onde estavam, mas muitos empregos serão salvos ", disse Zydre Gaveliene, chefe de um grupo de lobby de turismo na Lituânia.

A região faz parte da União Europeia desde 2004 e do Espaço Schengen de livre transição desde 2007. A Estônia e a Lituânia fecharam suas fronteiras para não-cidadãos durante o surto e os três países impam quarentenas obrigatórias a qualquer pessoa que ingressasse por não-trabalho ou razões relacionadas.

Novas infecções diminuíram a ponto de não serem registradas em nenhum dos países, que registraram mais de cinco novos casos na terça-feira. No total, a Estônia registrou 55 mortes, Lituânia 48 e Letônia 17.

"Pessoalmente, para mim, isso significa que, após a estagnação de um mês, existe luz no fim do túnel", disse Gabija Narusyte, 47 anos, moradora de Vilnius, à Reuters.