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

Nos EUA, Doria defende chapa Bruno-Joice e fala em fusão com o DEM

Bruno Covas, prefeito de São Paulo, e o governador João Doria - divulgação/Governo do Estado de São Paulo
Bruno Covas, prefeito de São Paulo, e o governador João Doria Imagem: divulgação/Governo do Estado de São Paulo

Pedro Venceslau, enviado especial*

São Francisco, EUA

25/11/2019 12h11

O governador paulista João Doria (PSDB) defendeu publicamente uma aliança entre o prefeito Bruno Covas (PSDB) e a deputada Joice Hasselmann (PSL-SP) na disputa pela Prefeitura de São Paulo em 2020. "Por que não (uma chapa unificada)? O Bruno é o candidato do PSDB e será reeleito. A Joice é uma deputada brilhante", disse Doria em São Francisco, nos Estados Unidos.

Na semana ada, Covas recebeu apoio explícito de Doria para a candidatura à reeleição, ao retomar a rotina na Prefeitura após internação para tratar um câncer na região do estômago. Na ocasião, o governador já havia falado de Joice.

"É uma pessoa de grande valor. Quanto mais perto ela estiver do Bruno mais feliz eu serei", disse Doria, que participou de uma entrevista coletiva ao lado do prefeito. Essa foi, para o grupo de Covas, a senha da estratégia do governador, que tem como principal objetivo derrotar o bolsonarismo em 2020 para evitar que o presidente Jair Bolsonaro construa uma base consistente na capital paulista.

Para Doria, que é apontado no PSDB como pré-candidato à Presidência em 2022, o "centro" precisa se aglutinar já nas eleições municipais do ano que vem. "Em 2020 vão se estabelecer claramente dois campos, que farão um grande confronto: a extrema-esquerda e a extrema-direita. As eleições municipais se anteciparão ao que serão as eleições gerais de 2022. Isso traz de forma de muito clara o campo do centro democrático, que são aqueles que, como eu, defendem o diálogo e a serenidade."

Com a saída do ex-presidente Luiz Inácio Lula da Silva da prisão, ganhou força no PSDB a discussão sobre a possibilidade de uma fusão com o DEM e/ou o PSL, que rompeu com Bolsonaro.

Uma das principais lideranças do PSDB, Doria promove nos bastidores uma aproximação da legenda com o PSL, que também avalia uma possível fusão com o DEM. "Esse debate (sobre fusão partidária) pode voltar. Vejo isso com naturalidade. Não somos refratários ou contrários a isso. Havendo a possibilidade é algo a se dialogar e a se pensar", disse Doria em conversa com jornalistas no fim de semana ma cidade norte-americana, onde realizou um tour em busca de investimentos na área de tecnologia para o estado de São Paulo.

O tucano acredita que a saída de Lula da prisão vai aglutinar a esquerda em torno do petista. "Os movimentos de esquerda estavam desaglutinados desde a prisão dele. Lula terá um papel expressivo nas eleições municipais de 2020", afirmou Doria.

* O repórter viajou a convite da Confederação Nacional das Indústrias (CNI)

Ouça o podcast Baixo Clero com análises políticas de blogueiros do UOL.

Os podcasts do UOL estão disponíveis no Spotify, Apple Podcasts, Google Podcasts e outras plataformas de áudio.