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

Bancada da bala critica Bolsonaro e revela "tristeza" por saída de Moro

Presidente Jair Bolsonaro e ministro da Justiça, Sergio Moro, em cerimônia no Palácio do Planalto - Reprodução
Presidente Jair Bolsonaro e ministro da Justiça, Sergio Moro, em cerimônia no Palácio do Planalto Imagem: Reprodução

Igor Mello

Do UOL, no Rio

24/04/2020 12h30

A bancada da bala, uma das mais fieis bases de sustentação do governo no Congresso, divulgou nota nesta sexta-feira (24) com críticas à interferência do presidente Jair Bolsonaro (Sem partido) no comando da PF (Polícia Federal), que levou à demissão do ministro da Justiça Sergio Moro. A demissão do ex-juiz da Operação Lava Jato gerou "tristeza e decepção", segundo nota dos parlamentares.

A nota foi assinada pelo deputado federal Capitão Augusto (PL-SP), coordenador da Frente Parlamentar da Segurança Pública, nome formal da bancada da bala. Ela foi distribuída à imprensa minutos depois do pronunciamento em que Moro anunciou sua saída do governo e denunciou tentativas de Bolsonaro de aparelhamento da Polícia Federal para barrar investigações que podem lhe afetar —como a apuração em relação à rede de fake news mantida pelo chamado "gabinete do ódio— e para obter informações ter o a informações sigilosas sobre investigações em curso.

No texto, os parlamentares afirmam que a bancada da bala recebeu com "extremo pesar" a saída de Moro do governo e classificam como "postura intransigente" a imposição da mudança do comando da PF. "A decisão do presidente Jair Bolsonaro de trocar o diretor-geral da Policia Federal, à revelia do ministro Sérgio Moro, não lhe deixou outra saída senão a de pedir a sua exoneração do cargo de Ministro da Justiça e da Segurança Pública", pontuam os parlamentares.

Capitão Augusto afirma que a bancada da bala irá se reunir para discutir sua postura em relação ao governo, mas adiantou que o sentimento de seus integrantes é de "tristeza e decepção" pela saída de Moro.

"A bancada da Frente Parlamentar da Segurança Pública irá se reunir para decidir os caminhos que serão trilhados daqui para frente, mas, desde logo, reafirma sua tristeza e decepção com a saída do Dr. Sérgio Moro do Ministério da Justiça e da Segurança Pública", afirma a nota..O texto é encerrado com uma sinalização de apoio a Moro, que deixou o governo sustentando uma postura de crítica a Bolsonaro: "Ao Dr. Sérgio Moro, queremos agradecer em nome de toda a sociedade brasileira pelos relevantes serviços que prestou ao Brasil no combate à corrupção e ao crime organizado, rogando a Deus que o proteja e o conduza pelos caminhos da vitória".