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

Esse conteúdo é antigo

Ministro da Infraestrutura critica Witzel e garante aeroportos abertos

Tarcísio de Freitas, ministro da Infraestrutura - AMANDA PEROBELLI/Reuters
Tarcísio de Freitas, ministro da Infraestrutura Imagem: AMANDA PEROBELLI/Reuters

Colaboração para o UOL

20/03/2020 13h38

O ministro da Infraestrutura, Tarcísio Gomes de Freitas, foi incisivo hoje ao contrariar determinação do governador do Rio de Janeiro, Wilson Witzel (PSC), e garantiu que os aeroportos fluminenses seguirão abertos até segunda ordem.

Ontem, Witzel baixou um decreto que fechava as fronteiras do estado, incluindo os voos domésticos, como medida de prevenção ao coronavírus. "Padece de legalidade. Não vai haver fechamento de aeroportos, é de competência nossa. Existem efeitos colaterais", afirmou o ministro em entrevista à Globonews.

"Nós não vamos permitir o fechamento, o decreto do governador não tem legalidade alguma. Fomos consultados, mas fomos contra. Mesmo assim eles editaram", complementou.

A preocupação de Tarcísio é também com o transporte rodoviário. "Imagina um paciente que precisa de insumo para hemodiálise. O Rio de Janeiro não produz proteína animal, como o carioca vai se alimentar?", indagou. "Nós não podemos criar barreiras sanitárias que impeçam a circulação de combustíveis e de gêneros (alimentícios)."

O desabastecimento é o principal efeito da epidemia do coronavírus que a pasta quer evitar. Para isso, ele prometeu em breve novas medidas que possam garantir a continuidade das atividades portuários e dos caminhoneiros."É muito importante garantir que a logística aconteça porque o que pode agravar a crise é o desabastecimento. Estamos estudando uma série de medidas como segurança do trabalhador portuário, do caminhoneiro, porque o transporte rodoviário é essencial", disse.

Tarcísio também se esquivou da rixa política entre o presidente Jair Bolsonaro e o governador do Rio. "Não é momento para disputa política, é absolutamente supérfluo. Tem que pensar no bem-estar da população. A gente compreende estados que tentam fechar fronteiras, só que isso tem efeitos colaterais", reforçou o ministro.

"Nesse momento de crise é importante cumprir a legislação. A gente não pode entrar numa situação de desordem se a gente quer ar bem por essa crise, e nós vamos ar. Porque o brasileiro é criativo, é inteligente e é solidário", finalizou.