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

Em evento com Kassab e França, Alckmin inicia pré-campanha longe do PSDB

Geraldo Alckmin (PSDB) participa de evento do PSB junto a Gilberto Kassab (PSD), Aldo Rebelo (Solidariedade) e Márcio França (PSB), virtualmente - Lucas Borges Teixeira / UOL
Geraldo Alckmin (PSDB) participa de evento do PSB junto a Gilberto Kassab (PSD), Aldo Rebelo (Solidariedade) e Márcio França (PSB), virtualmente Imagem: Lucas Borges Teixeira / UOL

Lucas Borges Teixeira

Do UOL, em São Paulo

28/08/2021 16h43

O ex-governador Geraldo Alckmin explicitou sua entrada na pré-campanha ao governo de São Paulo longe do PSDB, que deve deixar nas próximas semanas. Em evento hoje na capital paulista, ele já foi tratado como candidato ao Palácio dos Bandeirantes por lideranças do PSB e do PSD.

Com a presença do ex-prefeito Gilberto Kassab (PSD), do ex-ministro Aldo Rebelo (Solidariedade) e a participação virtual do ex-governador Márcio França (PSB), o evento teve tom eleitoral e críticas à gestão de João Doria (PSDB-SP). Cada vez mais distante do PSDB, que ajudou a fundar, o ex-governador deve ir para o PSD.

Oficialmente, o evento marcou a filiação de Chiquinho Pereira, presidente do Sindicato dos Padeiros de São Paulo, ao PSB, mas a estrela foi o ex-governador paulista. Em meio a elogios a Alckmin, os presentes explicitaram demandas e falaram em "união dos partidos por São Paulo".

"Hoje, seguimos aqui esperando seus os para que possamos estar ao seu lado, com seu trabalho para construir um estado cada vez melhor", disse Kassab, que chamou o quase ex-tucano de "o principal político do estado de São Paulo e uma das principais lideranças do Brasil".

França, que perdeu a disputa do governo estadual contra Doria em 2018, levantou o tom contra o governador, a quem acusou de criar "uma campanha eleitoral de quatro anos".

"A campanha tem de ter seu momentos, não dá para antecipar esses fatos. A população espera uma condução. Se você antecipa as eleições, faz todo mundo ficar com o time dividido. O Brasil precisa voltar a unificar suas falas, poucas pessoas têm capacidade para isso. O governador Alckmin é um homem para isso, é um idealista", declarou França.

A uma plateia repleta de sindicalistas, Alckmin não seguiu as críticas a Doria, focou no governo federal, mas fez um discurso claramente político, chamando São Paulo de "a terra do trabalho".

"Nós vermos conquistas suadas serem suprimidas pelo Congresso, é inacreditável. Só tem uma resposta: organização da sociedade civil. É o trabalho, são os sindicatos!", bradou o ex-governador.

A ida de Alckmin ao PSD já é esperada. O ex-governador pretendia se lançar mais uma vez ao Palácio dos Bandeirantes, que ocupou de 2001 a 2006 e de 2011 a 2018, pelo PSDB, mas resvalou nos planos do grupo de Doria.

Em maio, o governador trouxe o vice-governador Rodrigo Garcia do DEM para o PSDB com o objetivo de lança-lo como sucessor. Alckmin, que se considerava candidato natural, irritou-se e estava resistente a disputar as prévias.

Com apoio de poucos tucanos da "velha guarda", Alckmin ou a negociar sua saída desde o início do ano. Segundo tucanos, ele dizia que não sairia do partido que ajudou a fundar "pela porta dos fundos".

No grupo de Doria, no entanto, a crítica ao ex-governador é que ele, com mais de uma década de Palácio, em dois turnos, deveria "largar o osso".