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

OPINIÃO

Schelp: "Presidente está descontrolado. Sinal de quem está sob pressão"

Do UOL, em São Paulo

09/05/2020 04h00

O presidente Jair Bolsonaro (sem partido) elevou o tom na fala aos jornalistas na última terça-feira ao mandar calar a boca em frente ao Palácio da Alvorada. Mais tarde, pediu desculpas e foi mais comedido no trato com os profissionais na última quinta-feira.

No podcast Baixo Clero #36, o jornalista Diogo Schelp analisa as reações do presidente e vê um descontrole na atitude de Bolsonaro que pode estar sendo causado devido à pressão pela qual a o governo, com problemas políticos e a pandemia do novo coronavírus para lidar.

"O presidente Bolsonaro está descontrolado. Ele nunca foi uma pessoa muito calma, mas ele está completamente descontrolado", afirma Schelp (disponível no arquivo acima a partir de 25:32).

"Essa coisa ciclotímica, de xingar, mandar calar a boca num dia e no outro dia tratar bem, nesse bate e assopra, isso aí é sinal de alguém que está sob pressão e não está conseguindo lidar com a pressão", completa o jornalista.

Diogo Schelp também fala sobre os desdobramentos do depoimento dado no último sábado por Sergio Moro na superintendência da Polícia Federal em Curitiba, que teve seu conteúdo revelado na terça-feira, mesmo dia em que o presidente se exaltou com os jornalistas.

Para o colunista do UOL, o depoimento de Moro foi muito cuidadoso para entregar indícios sem se comprometer por sua posição anterior como ministro da Justiça, mas aponta que faltam as provas jurídicas dos motivos do interesse de Bolsonaro na troca da superintendência da Polícia Federal do Rio de Janeiro, o que poderia complicar o presidente.

"Tem duas questões aí, como é que o Procurador-Geral da República [Augusto Aras] vai interpretar esses fatos e quais são os fatos que a Polícia Federal vai levar ao Procurador Geral da República. Isso tudo ainda está em aberto e eu acho que é a chave para que tudo isso possa ser considerado mesmo um crime. Se ficar comprovado, é gravíssimo", diz Schelp.

Baixo Clero está disponível no Spotify, na Apple Podcasts, no Google Podcasts, no Castbox, no Deezer e em outros distribuidores. Você também pode ouvir o programa no YouTube. Outros podcasts do UOL estão disponíveis em uol.com.br/podcasts.