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

Flávio Bolsonaro prega desfiliação de quem continuar no governo Witzel

Caio Sartori

Rio

18/09/2019 13h42

O senador Flávio Bolsonaro, que preside o PSL no Rio de Janeiro, tem dado determinações rigorosas para os integrantes do partido no Estado. Após orientar a saída da legenda da base do governo Wilson Witzel (PSC), o filho do presidente Jair Bolsonaro soltou nota nesta quarta-feira, 18, na qual prega a desfiliação de quem quiser manter cargos na gestão estadual.

"Aqueles que quiserem permanecer devem pedir desfiliação partidária. Nossa oposição não será ao Estado do Rio, mas ao projeto político escolhido pelo governador Wilson Witzel", afirmou o senador. O anúncio do desembarque, feito oficialmente nessa segunda-feira, 16, se deu após o governador criticar o presidente da República e negar que tenha sido eleito na esteira do bolsonarismo.

Além de ter a maior bancada da Assembleia Legislativa (Alerj), com 12 deputados, a sigla exerce ampla influência em nomeações para cargos no Executivo, incluindo dois secretários - o de Ciência e Tecnologia, Leonardo Rodrigues, e a de Vitimização e Amparo à Pessoa com Deficiência, Major Fabiana. No entanto, ninguém renunciou até agora.

Prefeitura

A imposição de Flávio é um teste de força para o parlamentar como dirigente partidário. Alvo da investigação que domina o noticiário político desde o fim de 2018, na qual se apura suspeita de peculato, lavagem de dinheiro e organização criminosa no período em que era deputado estadual, o senador viu recentemente seu escolhido para concorrer à Prefeitura do Rio, o deputado fluminense Rodrigo Amorim, minguar dentro do partido.

Ainda não há uma definição sobre como o PSL chegará à disputa pelo Executivo carioca em 2020. Há um conflito interno que envolve, como é comum nas decisões políticas do clã do presidente da República, discordâncias entre Flávio e Carlos Bolsonaro, vereador no Rio pelo PSC. Conhecido pela influência que exerce sobre o pai, Carlos discorda do nome de Amorim e conta com o beneplácito do presidente. O deputado federal Hélio Lopes, conhecido como Hélio Negão, seria o candidato favorito de Jair Bolsonaro.

Essa desarmonia entre os irmãos não é nova. Em 2016, Carlos - ao lado do pai - foi contra a candidatura de Flávio à Prefeitura. O então deputado estadual acabou indo bem e teve 14% dos votos, o que afastou a ideia de que ele poderia registrar um fracasso eleitoral e enfraquecer o projeto de Jair Bolsonaro de concorrer à Presidência.