;(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
Logo Pagbenk Seu dinheiro rende mais
Topo

Carla Araújo

Bolsonaro busca saída honrosa para Vitor Hugo para dar liderança ao centrão

Líder do governo na Câmara, deputado Major Vitor Hugo (PSL - GO) - Pablo Valadares/Câmara dos Deputados
Líder do governo na Câmara, deputado Major Vitor Hugo (PSL - GO) Imagem: Pablo Valadares/Câmara dos Deputados

e Guilherme Mazieiro

23/07/2020 18h32

Receba os novos posts desta coluna no seu e-mail

Email inválido

Não é de hoje que o presidente Jair Bolsonaro articula com parlamentares do chamado centrão para construir uma base capaz de dar sustentabilidade ao governo e também conseguir fazer avançar os projetos de interesse do Executivo no parlamento.

Segundo auxiliares do presidente, a troca do líder do governo na Câmara, Vitor Hugo (PSL-GO), ganhou força e o seu substituto deve ser mesmo o deputado Ricardo Barros (PP-PR), ex-ministro da Saúde do governo Temer.

O detalhe que falta para a troca ser efetivada é que Bolsonaro tem em Vitor Hugo um aliado leal e não quer "queimar e magoar" o atual líder.
"Dificilmente vão anunciar isso sem ter um lugar para o Vitor Hugo ir", disse um ministro, que itiu a movimentação.

Procurado, Ricardo Barros desconversou, disse que a negociação não está madura e elogiou o atual líder. "Bolsonaro tem enorme apreço por Victor Hugo", declarou.

Conforme mostrou o UOL, a solução também teria como consequência arrefecer o conflito entre o centrão e o articulador político do governo, o ministro Luiz Eduardo Ramos (Secretaria de Governo).

No Palácio do Planalto, porém, há quem tenha resistência a mudança. "Não tem nada definido e a decisão é única exclusivamente do presidente", disse um auxiliar direto de Bolsonaro.

Governabilidade

O novo viés pragmático do presidente tirou de seu time de articuladores, ontem, uma antiga aliada. Bia Kicis (PSL-DF) foi destituída da função após votar contra a orientação do governo.

O movimento de abrir espaços para o centrão acontece desde o início do ano e se intensificou nos últimos meses.

A articulação do governo é para montar uma tropa de choque capaz não só de blindar o mandatário da ameaça de impeachment, que ganhou força na esteira das crises que ocorreram durante a pandemia do coronavírus, mas que também com poder de negociar votos no Parlamento e garantir aprovação de projetos.

Uma das pautas centrais do governo que será lançada nas próximas semanas é o Renda Brasil. A proposta que almeja ser o Bolsa Família de Bolsonaro entrou nas negociações do Fundeb.

O texto ainda está em elaboração por diferentes ministérios e o objetivo é lançá-lo ao Congresso com caminho pacificado para aprovação. Outro ponto é a reforma tributária, em discussão no Parlamento.