;(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 só lidera a parcela que o segue cegamente como zumbi, diz Renan

O comentário do senador foi feito um dia após as manifestações de 7 de setembro, marcadas por pautas antidemocráticas - Pedro França/Agência Senado
O comentário do senador foi feito um dia após as manifestações de 7 de setembro, marcadas por pautas antidemocráticas Imagem: Pedro França/Agência Senado

Do UOL, em São Paulo

08/09/2021 11h19

O senador Renan Calheiros (MDB-AL), líder da maioria no Senado e relator da I da Covid, disse hoje que o presidente Jair Bolsonaro (sem partido) "só lidera a parcela que o segue cegamente como zumbi". O comentário foi feito um dia após as manifestações de 7 de setembro, marcadas por pautas antidemocráticas, como pedidos de fechamento do STF (Supremo Tribunal Federal) e intervenção militar.

"Comemora o desemprego, a volta da fome e a fila do osso, o aumento da comida, da conta de luz, da gasolina, boicota a vacina, espalha o vírus, ri dos enlutados e prega a anarquia militar. Felizmente, são minoria", acrescentou o parlamentar em sua publicação no Twitter.

Os protestos a favor do governo aconteceram no momento em que o presidente registra os menores índices de aprovação de sua gestão e após 15 altas consecutivas do IPCA (Índice Nacional de Preços ao Consumidor Amplo), indicador mensal usado pelo BC (Banco Central) para medir a inflação.

Além da inflação, o país enfrenta aceleração do desemprego e alta no endividamento das famílias. Segundo o IBGE, o Brasil fechou o segundo trimestre de 2021 com 14,4 milhões de desempregados.

Na manhã de ontem, na capital federal, Bolsonaro participou de um ato, com discurso abertamente golpista, em que ameaçou o presidente do STF (Supremo Tribunal Federal), Luiz Fux. À tarde, em São Paulo, o presidente declarou abertamente que não respeitará "qualquer decisão" do ministro Alexandre de Moraes, incitando seus apoiadores contra o STF. O mandatário ainda xingou o magistrado de "canalha" e pediu sua saída diante de cerca de 125 mil pessoas, segundo a Polícia Militar.

Na avaliação de juristas consultados pelo UOL, ao declarar abertamente que não cumprirá "qualquer decisão" de Moraes, Bolsonaro comete crime de responsabilidade por desrespeitar os outros Poderes.

Depois dos discursos do mandatário, diversos partidos aram a falar mais claramente na possibilidade de apoiar processos de impeachment.

* Com informações da reportagem de Saulo Pereira Guimarães, do UOL