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

Tales Faria

OPINIÃO

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

Bolsonaro, Michelle e Carlos saíram irritados da posse de Moraes no TSE

Colunista do UOL

17/08/2022 04h00

Receba os novos posts desta coluna no seu e-mail

Email inválido

Foram visíveis o constrangimento e a irritação do presidente da República, Jair Bolsonaro (PL), sua mulher, Michelle, e o filho Carlos, à saída da cerimônia de posse de Alexandre de Moraes como presidente do Tribunal Superior Eleitoral.

O novo presidente do TSE surpreendeu Bolsonaro com seu discurso duro em defesa do sistema de apuração "rápido e ágil" das eleições por urnas eletrônicas, sublinhando que o Brasil "é a única democracia do mundo que apura e divulga" o resultado no mesmo dia da votação.

As longas palmas da plateia, em pé, quando Moraes fez menção às urnas foram classificadas por bolsonaristas presentes, nas conversas reservadas, como uma manifestação contra o presidente da República.

Um dos aliados de Bolsonaro, presente à cerimônia, considerou "uma indelicadeza desnecessária" a ênfase do discurso do novo presidente do TSE na crítica às fake news. Foram entendidas como um recado ao filho Zero Dois do presidente, ali presente.

Como ministro do Supremo Tribunal Federal (STF), Alexandre de Moraes comanda as investigações da Corte sobre o inquérito das fake news.

O vereador Carlos Bolsonaro (Republicanos) é quem dá as cartas, desde a eleição de 2018, na área de internet e de redes sociais da campanha do pai.

Carlos tem sido apontado pelos adversários de Bolsonaro como o chefe do chamado Gabinete do Ódio, propagador de fake news bolsonaristas. E foi levado à cerimônia como uma demonstração de apoio do pai ao filho.

Moraes não se deu por rogado. Disse em seu discurso que a Justiça eleitoral protegerá as instituições contra quem desrespeitar o estado democrático de direito. E que liberdade de expressão não é "liberdade atacar as instituições, de propagação do ódio".

Bolsonaro e Michelle se mostraram constrangidos sobretudo nas vezes em que a plateia se levantou em reação entusiástica ao discurso duro de Alexandre de Moraes. O casal não bateu palmas.

Também foi visível o constrangimento do presidente da República ao ser levado para sentar ao lado da cadeira do presidente do TSE, mas exatamente de frente para o ex-presidente Luiz Inácio Lula da Silva (PT), contra quem havia acabado de desferir impropérios durante discursos em Minas Gerais.

O saldo da solenidade para a família Bolsonaro é de que, além do "mico" da situação em si, terão muitas dificuldades para continuar atacando publicamente o TSE, o sistema eleitoral e a Justiça, pelo menos até as eleições. Nem o procurador geral da República, Augusto Aras, em seu discurso, demonstrou disposição de apoiar a família Bolsonaro nos ataques às instituições.

Atualização às 16h27:

O ministro da Comunicação, Fabio Faria, telefonou para a coluna às 16h06 para comentar o texto publicado. Segundo ele, o presidente da República não ficou irritado com o discurso de Alexandre de Moraes. Faria disse que Bolsonaro e o novo presidente do TSE estão estabelecendo um "excelente relacionamento".

"Nem mesmo surpreso o presidente Bolsonaro ficou com os termos do discurso. Ele foi informado previamente do teor do discurso. Não houve qualquer ruído", disse Faria.