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

Ricardo Salles é recebido com canto pró-Lula durante campanha em São Paulo

Mulher faz o "L" para Ricardo Salles em Santa Cecília, na região central de São Paulo - Reprodução/Instagram
Mulher faz o "L" para Ricardo Salles em Santa Cecília, na região central de São Paulo Imagem: Reprodução/Instagram

Do UOL, em São Paulo

18/09/2022 17h37Atualizada em 18/09/2022 21h00

O ex-ministro do meio ambiente Ricardo Salles (PL) foi recebido por apoiadores de Lula quando fazia um ato de campanha em São Paulo na manhã deste domingo (18).

Imagens compartilhadas na internet mostram o momento em que Salles é saudado com gritos de "olê, olê, olê, olá, Lula, Lula" por eleitores. A cena aconteceu na esquina das ruas Dona Veridiana e Canuto do Val, no bairro de Santa Cecília.

Candidato a deputado estadual, Tomé Abduch (Republicanos) acompanhava o ex-ministro no momento em que tudo aconteceu.

No vídeo, Salles cumprimenta os eleitores, que respondem fazendo a letra L com os dedos. Um homem chega a fazer um sinal feio para o ministro na gravação. Salles é candidato a deputado federal pelo mesmo partido do presidente Jair Bolsonaro, principal rival de Lula na disputa pela presidência.

Na manhã deste domingo, bandeiras em apoio a diferentes candidatos podiam ser vistas na Avenida Paulista, no Parque do Ibirapuera e outros pontos da cidade.

Salles bateu em moto de entregador

No começo do mês, Salles bateu o carro em que dirigia em uma moto de um entregador. Nos vídeos publicados nas redes sociais é possível ver que Salles segue com seu carro e não para para ver o que aconteceu com o motoboy naquele momento.

Na época, a assessoria do ex-ministro, que é apoiador do presidente Jair Bolsonaro (PL), informou que o motoboy não se machucou e foi indenizado momentos após a batida.

O caso ocorreu na noite desta quinta (1º) em uma faculdade privada em São Paulo. Um grupo de manifestantes protestava contra a presença de Salles no momento em que ele deixava a garagem da instituição. De acordo com os vídeos, é possível ver o ex-ministro dirigindo um veículo vermelho de forma brusca.

Quando Salles acelera o veículo para sair do prédio e fazer a curva, seu carro atinge a moto, que cai no chão. O entregador fica em pé e gesticula em direção ao carro do político, que segue seu trajeto.

Nas redes sociais, Salles se defendeu e disse que não aconteceu nada com o motoboy. "Horda de bárbaros atacou nossa comitiva ontem. Jogaram pedras, chutaram carro e quebraram para-brisa. Na confusão, um dos carros derrubou uma moto quase parada. Falamos mais à frente com o rapaz, que nada sofreu. E a moto, nada de grave."