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

Carolina Brígido

REPORTAGEM

Texto que relata acontecimentos, baseado em fatos e dados observados ou verificados diretamente pelo jornalista ou obtidos pelo o a fontes jornalísticas reconhecidas e confiáveis.

Com Rosa e Moraes, STF e TSE devem atuar firmes contra ameaças de Bolsonaro

Alexandre de Moraes e Rosa Weber - Reprodução/STF
Alexandre de Moraes e Rosa Weber Imagem: Reprodução/STF

Colunista do UOL

20/07/2022 04h00

Rosa Weber e Alexandre de Moraes têm perfis opostos. Com a voz mansa, a ministra é discreta, não dá declarações públicas e tem aversão a entrevista. Não tem amizade com parlamentares ou integrantes do governo. Moraes, por sua vez, tem relações estreitas com o mundo político. Em uma conta no Twitter, costuma postar textos em defesa da democracia.

No STF (Supremo Tribunal Federal), Weber e Moraes costumam entendimentos diferentes em alguns temas. Ainda assim, ambos têm uma disposição em comum: atuar de forma firme contra ameaças do presidente Jair Bolsonaro ao Poder Judiciário e ao sistema eleitoral.

A dupla deve provocar dores de cabeça em Bolsonaro no segundo semestre. Moraes assume a presidência do TSE (Tribunal Superior Eleitoral) em agosto e Weber comandará o STF a partir de setembro. O perfil de cada um deve nortear a istração dos tribunais. A tendência é o STF ficar menos nos holofotes e o TSE se lançar mais na frente de combate ao discurso de Bolsonaro.

A ideia de Moraes não é bater de frente com o presidente da República. Ao contrário. Ele deve reforçar o diálogo com pessoas ligadas a Bolsonaro - como o presidente da Câmara, Arthur Lira (PP-AL), e o procurador-geral da República, Augusto Aras. O plano é tentar promover alguma paz em um ambiente político conflagrado às vésperas das eleições. E, de quebra, tentar arrebanhar apoio institucional relevante para evitar eventual tentativa de ruptura por parte de Bolsonaro no caso de derrota nas urnas.

Nessa esteira, Moraes tem ainda a missão de pacificar os ânimos da Justiça Eleitoral com os militares. O ministro tem boa interlocução na caserna e deve usar essa carta na manga para tentar atrair o apoio político das Forças Armadas. Nesse aspecto, a gestão do TSE deve sofrer intensa mudança. O ministro Edson Fachin, à frente da Corte desde fevereiro, não tem relação estreita nem com políticos, nem com militares.

A carreira política de Moraes é vasta. Pertenceu aos quadros do PSDB e foi secretário municipal de Transportes da cidade de São Paulo (de 2007 a 2010) na gestão de Gilberto Kassab. Também atuou como secretário estadual de São Paulo na gestão Geraldo Alckmin em duas pastas: Defesa da Cidadania (2002 a 2005) e Segurança Pública (2014 a 2015).

Hoje, Moraes é relator de inquéritos no STF que preocupam o Palácio do Planalto, por mirar diretamente o presidente Jair Bolsonaro: o das fake news e o dos atos antidemocráticos. O ministro tem conduzido as apurações com firmeza. Ao todo, o presidente responde a cinco inquéritos no Supremo.

Rosa Weber também não dá trégua a Bolsonaro. Na última sexta-feira, autorizou que a PGR (Procuradoria-Geral da República) ouça os depoimentos dos ex-presidentes da Petrobras Roberto Castello Branco e do Banco do Brasil Rubem Novaes. Eles serão questionados sobre conversa que indicaria suposta interferência de Bolsonaro na estatal.

A ministra escreveu que "o exame dos fatos noticiados na peça exordial permite concluir que a conduta eventualmente criminosa atribuída ao Chefe de Estado teria sido por ele perpetrada no atual desempenho do ofício presidencial".

No mesmo dia, Moraes abriu prazo para Bolsonaro explicar supostos discursos de ódio e incitação à violência. Bolsonaro disse que estava sendo atacado e que era uma "covardia" contra ele. A atuação da semana ada dos dois ministros mostra que não haverá trégua ao presidente no próximo semestre.