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

Com elogios a Bolsonaro, Tarcísio oficializa candidatura ao governo de SP

Ao lado de Bolsonaro, Tarcísio é lançado candidato do Republicanos ao governo de SP - Stella Borges/UOL
Ao lado de Bolsonaro, Tarcísio é lançado candidato do Republicanos ao governo de SP Imagem: Stella Borges/UOL

Do UOL, em São Paulo

30/07/2022 12h43Atualizada em 30/07/2022 13h45

O ex-ministro da Infraestrutura Tarcísio de Freitas (Republicanos) teve sua candidatura ao governo de São Paulo oficializada hoje em convenção nacional do partido, realizada em São Paulo. O evento contou com a presença do presidente Jair Bolsonaro (PL), idealizador da candidatura de seu ex-ministro ao Palácio dos Bandeirantes, e da primeira-dama Michelle.

"Bolsonaro mudou a minha vida. Devo muito ao presidente, sempre vai contar com meu carinho e respeito", discursou o ex-ministro.

Depois de uma fase da pré-campanha em que se empenhou na estratégia de se descolar do presidente, cujos índices de rejeição são altos, e para atrair o eleitor não simpático aos extremismos do bolsonarismo, Tarcísio intensificou recentemente elogios ao presidente em discursos e publicações nas redes.

Os dois também estiveram juntos em eventos públicos em São Paulo. Em seus discursos, o presidente tem elogiado a performance do seu ex-ministro à frente da pasta da Infraestrutura.

Na última terça-feira, Tarcísio afirmou que "o fantasma do MST (Movimento dos Trabalhadores Rurais Sem Terra) tem que ser banido do país". O movimento social é historicamente ligado ao PT e também alvo frequente de ataques do presidente.

Internamente, a campanha avalia que apesar da alta rejeição do presidente, os eleitores de Bolsonaro são fundamentais para que Tarcísio consiga chegar ao segundo turno.

Pesquisa da Quaest Consultoria, contratada pela Genial Investimentos e divulgada no início de julho, aponta que o apoio do presidente ao ex-ministro contribui para que Tarcísio tenha desempenho melhor no primeiro turno. Quando tem seu nome vinculado ao do atual mandatário, as intenções de voto em Tarcísio crescem 13 pontos percentuais, de 15% para 28%.

O ex-ministro, no entanto, tenta se afastar dos discursos radicais do presidente, como a tentativa de desacreditar, sem provas, o sistema eleitoral brasileiro. Ele também já declarou que discordou de Bolsonaro sobre a vacina contra covid-19 — o presidente diz que não se vacinou.

Para atrair o eleitor de centro, Tarcísio tem dito que nunca foi radical e sempre manteve uma linha pragmática. Em um vídeo exibido na convenção, ele destacou que teve cargos nos governos de Dilma Rousseff (PT) e Michel Temer (MDB).

Essa intensificação para se ligar a Bolsonaro também se deve ao acenos do governador Rodrigo Garcia (PSDB), que concorre à reeleição, ao eleitorado mais à direita.

Nascido no Rio de Janeiro, a campanha tucana criou o mote "paulista raiz" para criticá-lo por ser de fora de São Paulo.

A convenção homologou ainda a coligação que contará com os partidos PSD, PTB, PSC e PL, e que apoiará o nome de Tarcísio. A chapa terá o ex-prefeito de São José dos Campos Felício Ramuth (PSD) como candidato a vice, e o ex-ministro da Ciência, Tecnologia e Inovações, Marcos Pontes, para uma vaga no Senado.