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

Carla Araújo

REPORTAGEM

Texto que relata acontecimentos, baseado em fatos e dados observados ou verificados diretamente pelo jornalista ou obtidos pelo o a fontes jornalísticas reconhecidas e confiáveis.

Rodrigo Garcia deve deixar o PSDB e está de olho em ministério de Bolsonaro

O presidente Jair Bolsonaro entre o governador Rodrigo Garcia (PSDB) e o candidato Tarcísio de freitas (Republicanos) - Divulgação
O presidente Jair Bolsonaro entre o governador Rodrigo Garcia (PSDB) e o candidato Tarcísio de freitas (Republicanos) Imagem: Divulgação

Carla Araújo e Juliana Dal Piva

Colunistas do UOL e do UOL, em São Paulo

05/10/2022 15h38Atualizada em 11/10/2022 13h33

Receba os novos posts desta coluna no seu e-mail

Email inválido

O mal-estar com alguns setores do PSDB após a declaração do governador Rodrigo Garcia (PSDB) de "apoio incondicional" ao presidente Jair Bolsonaro (PL) no segundo turno deve resultar em breve em uma mudança de legenda.

No PSDB, há até quem defenda que Garcia seja expulso, mas o governador não deve esperar o partido tomar nenhuma decisão neste sentido e já intensificou as articulações com o União Brasil.

A migração está sendo considerada por pessoas a par das conversas como natural já que Garcia não seria um tucano raiz e tem mais proximidade com o União Brasil.

Nos últimos dias, Garcia tem mantido conversas com o vice-presidente nacional do União Brasil, Antônio Rueda, que tem trabalhado junto a lideranças do PP, como o presidente da Câmara Arthur Lira, para formar uma federação ampla que pode vir a ser a maior bancada de deputados, superando o PL, partido de Bolsonaro, presidido por Valdemar Costa Neto.

Nas conversas, Rueda e Garcia acreditam que há espaço para que o União Brasil possa compor com o governo Bolsonaro se ele for reeleito. Nesse xadrez de negociação, uma das ambições do atual governador de São Paulo seria ocupar uma vaga na Esplanada dos Ministérios. Do lado de Bolsonaro, no entanto, quem participa das conversas diz que ainda é cedo para fazer promessa de cargos.

Rueda foi quem iniciou as negociações de aproximação entre Garcia e Bolsonaro. O ex-ministro e candidato ao governo de São Paulo Tarcísio de Freitas aceitou o apoio do ainda tucano, mas não quer muita proximidade com o atual governador de SP.

Ontem, horas antes da declaração de apoio de Garcia a Bolsonaro, o ex-ministro da Infraestrutura afirmou que não via sentido em ter o tucano em seu palanque e que acreditava que teria adesão natural do PSDB pelo caráter anti-PT do partido.

Depois do anúncio de Garcia de compor com Bolsonaro, três secretários do governo paulista deixaram seus cargos. Rodrigo Maia (secretário de Projetos e Ações Estratégicas), ex-presidente da Câmara e um dos principais críticos de Bolsonaro, Zeina Latif (Desenvolvimento Econômico) e Laura Muller Machado (Desenvolvimento Social) anunciaram sua saída hoje.