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

Bolsonaro ataca governadores: 'Excesso não vai curar problema, vai agravar'

Do UOL, em São Paulo

16/04/2020 17h28Atualizada em 16/04/2020 19h22

O presidente Jair Bolsonaro (sem partido) voltou a atacar governadores e prefeitos ao anunciar na tarde de hoje a demissão do ministro da Saúde, Luiz Henrique Mandetta, e o nome de seu substituto, Nelson Teich. Ele citou o "exagero" de políticos ao tomar decisões para o enfrentamento da pandemia do novo coronavírus.

Bolsonaro é contrário ao isolamento social e a medidas de restrição total do comércio. No discurso de hoje, ele criticou indiretamente governadores que já ameaçaram mandar prender pessoas que desrespeitem a quarentena.

"Devemos tomar medidas, sim, para evitar a proliferação ou expansão do vírus, mas pelo convencimento e com medidas que não atinjam a liberdade e garantias individuais de qualquer cidadão. Quem tem o poder de decretar estado de defesa ou de sítio, depois de uma decisão do parlamento brasileiro, é o presidente da República e não prefeito ou governador. O excesso não levará à solução do problema. Muito pelo contrário: se agravará", disse ele, que afirmou que jamais colocaria as Forças Armadas para prender alguém que desrespeitasse as orientações de isolamento.

"Em nenhum momento, eu fui consultado sobre as medidas adotadas por grande parte dos governadores e prefeitos. O preço vai ser alto", completou.

Bolsonaro não citou o nome de nenhum governador, mas sabe-se que, durante a crise da pandemia, o presidente bateu de frente com os governadores de São Paulo, João Dória (PSDB-SP), e também o governador do Rio, Wilson Witzel (PSC-RJ), por decisões que não o agradaram, como a determinação do isolamento social e o fechamento do comércio.

"Não poderíamos prejudicar os mais necessitados. Eles não têm como ficar em casa por muito tempo sem buscar alimento. Os primeiros que sofreram foram os informais: 38 milhões [de pessoas] no Brasil. Se chegar a um nível tal, a volta da normalidade, além de demorar muito, outros problemas aparecerão. Nos preocupamos para que a volta à normalidade chegue o mais breve possível", pontuou.

Mandetta foi demitido pelo presidente Bolsonaro, agora à tarde, em decorrência de divergências na estratégia de combate à pandemia do novo coronavírus. A exoneração ainda não foi publicada no Diário Oficial, mas o próprio ministro anunciou sua saída em posts no Twitter e depois em um pronunciamento.

O Ministério da Saúde informou hoje, em seu site oficial, que o Brasil contabiliza 30.425 casos oficiais do coronavírus. Já o número de mortes em decorrência da covid-19 subiu para 1.924 —188 mortes somente nas últimas 24 horas. Até ontem, eram 1.736 mortes no total.

A taxa de letalidade — que compara os casos já confirmados no Brasil com a incidência de mortes — é de 6,3%.