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

Esse conteúdo é antigo

Deputado entrega vice-liderança do governo após xingar Moraes de 'lixo'

O deputado Otoni de Paula (PSC-RJ), vice-líder do governo na Câmara, em sessão extraordinária deliberativa - Maryanna Oliveira/Câmara dos Deputados
O deputado Otoni de Paula (PSC-RJ), vice-líder do governo na Câmara, em sessão extraordinária deliberativa Imagem: Maryanna Oliveira/Câmara dos Deputados

Colaboração para o UOL, em São Paulo

08/07/2020 21h22Atualizada em 08/07/2020 23h23

O deputado federal Otoni de Paula (PSC-RJ) anunciou hoje ter pedido seu afastamento da vice-liderança do governo. A decisão, segundo ele, foi motivada porque teriam tentado associar o presidente Jair Bolsonaro (sem partido) a uma declaração sua feita na última segunda-feira (6), contra o ministro Alexandre de Moraes, do STF (Supremo Tribunal Federal).

"Entreguei minha carta pedindo a minha saída, ainda que temporária, da vice-liderança do governo. Fiz essa carta justamente por entender esse jogo político contra o presidente, porque tentariam colocar minha fala como uma fala que estivesse representando o presidente, o Palácio do Planalto", explicou ele à Rádio Jovem Pan.

O parlamentar, que é investigado pelo STF em inquérito que apura o envolvimento em atos antidemocráticos, divulgou um vídeo em suas redes sociais com ofensas ao ministro Alexandre de Moraes, se referindo ao relator da ação como "lixo", "canalha" e "esgoto do STF".

Questionado se as ofensas contra o ministro não teriam sido exageradas, o deputado disse que foi movido por uma "emoção muito forte", após ter conhecimento das proibições impostas ao jornalista Oswaldo Eustáquio, preso durante dez dias. O blogueiro também é investigado pelo STF.

"Fui movido pela indignação dos justos. Eu fiz o vídeo porque o ministro Alexandre de Moraes manteve um jornalista preso por cinco dias, depois renovou a prisão por mais cinco. Questionado, ele disse que manteve a prisão para proteger as investigações. Depois desse ato ditatorial, ele resolveu impedir o Oswaldo de usar as suas redes sociais. Ele está impedindo um brasileiro de colocar o pão na sua mesa, até porque o trabalho do Oswaldo também é esse", defendeu.

O deputado acrescentou que poderia ter sido mais ponderado com as palavras, mas que isso não muda sua revolta.

"Eu não me arrependo da minha manifestação enquanto manifestação de indignação. Talvez alguns adjetivos que eu tenha usado aquele momento tenham sido impróprios para o ministro, mas o conteúdo em si, a minha indignação eu mantenho, porque eu entendo que foi uma indignação de um cidadão brasileiro", finalizou.