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

Thaís Oyama

OPINIÃO

Texto em que o autor apresenta e defende suas ideias e opiniões, a partir da interpretação de fatos e dados.

Com sessão virtual, ministros perdem chance de apontar excessos de Moraes

                                O ministro do STF Alexandre de Moraes                              -                                 CARLOS ALVES MOURA/SCO/STF
O ministro do STF Alexandre de Moraes Imagem: CARLOS ALVES MOURA/SCO/STF

Colunista do UOL

12/01/2023 11h33

O fato de os invasores das sedes dos Três Poderes não terem deixado no prédio do STF uma única poltrona no lugar (todas foram arrancadas do chão) obrigou os ministros do Supremo a se reunirem virtualmente ontem.

Foi uma pena.

Como em toda sessão virtual, na de quarta-feira, em que os magistrados decidiram por 9 votos a 2 manter o afastamento do governador Ibaneis Rocha e a prisão do ex-secretário Anderson Torres, não houve debate — os ministros apenas depositaram seus votos no sistema eletrônico do tribunal.

Dessa forma, perderam-se as nuances de cada decisão e a chance de virem a público eventuais reparos críticos dos magistrados à decisão tomada de forma monocrática por seu colega Alexandre de Moraes — cujas heterodoxias a gravidade e o ineditismo dos últimos eventos têm ajudado a fazer ar quase incólumes.

Salvo honrosas exceções, como a do insuspeito criminalista e professor da FGV Celso Vilardi, advogados têm evitado vir a público lembrar, por exemplo, o óbvio e consensual fato de que a lei antiterrorismo, ao menos na forma como foi elaborada e vigora hoje, não se aplica aos vândalos que invadiram as sedes dos Três Poderes nem tampouco ao governador Ibaneis Rocha e seu agora ex-secretário Anderson Torres.

Em sua decisão, Moraes responsabilizou o governador por ter faltado com a preparação para evitar os atos criminosos que ele descreveu citando artigos da Lei 13.260.

A Lei Antiterrorismo, no entanto, como lembrou Vilardi em entrevista à CNN, é aplicável apenas contra criminosos que provocam terror social movidos por razões muito especificamente descritas: xenofobia, discriminação ou preconceito de raça, cor, etnia e religião. Não é preciso ser um catedrático do direito para saber que nenhuma dessas razões esteve presente nos ataques de domingo.

Caso os ministros do Supremo tivessem a chance de debater o assunto sentados nas cadeiras que os vândalos arrancaram do chão, poderiam observar também que a decisão de Moraes de afastar o governador Ibaneis Rocha se deu sem a provocação de qualquer órgão de investigação ou pedido de parlamentares — nos pedidos feitos ao ministro pela Advocacia-Geral da União e pelo senador Randolfe Rodrigues (Rede) não constava a solicitação de afastamento de Ibaneis.

Como lembra a Folha de hoje, é a primeira vez que um magistrado retira um governador do cargo por conta própria.

Além de Vilardi, grandes e respeitados juristas, em privado, se dizem preocupados com os excessos cometidos por Moraes.

Nenhum deles discorda que o Brasil vive um momento tristemente excepcional e que os ataques de domingo foram um crime contra a democracia sem precedentes na história da República.

Mas, como lembrou Vilardi, excessos são comuns em casos que atingem amplo grau de repercussão.

O Brasil já viu esse filme antes.

Melhor fariam os que hoje aplaudem incondicionalmente os precedentes que vem sendo estabelecidos por Moraes em se lembrar: pau que, em nome do bem, bate em Chico, também — em nome do bem — bate em Francisco.