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

Sakamoto: Eleições deveriam ser na época das chuvas para políticos agirem

Colaboração para o UOL, em São Paulo

23/02/2023 13h08

O colunista do UOL Leonardo Sakamoto afirmou no UOL News que as eleições municipais deveriam ser realizadas na época de chuvas, já que, segundo ele, as omissões do poder público são esquecidas no período eleitoral.

Eleições municipais tinham que ser movidas para época de chuvas no Brasil, pelo menos no Sudeste. Você tinha que ter eleição em janeiro, porque a memória de muita gente seca no período seco. Muitas coisas que ocorrem por omissão do poder público acabam sendo esquecidas no momento das eleições. Deveriam mover para janeiro, votar no meio dessa catástrofe toda, para que, talvez assim, muitos políticos mudem".

Chuvas no litoral de SP: Vivemos um um cenário de guerra, diz presidente de ONG

O presidente da ONG Gerando Falcões, Edu Lyra, contou no programa que o litoral norte de São Paulo se assemelha a um "cenário de guerra".

É uma tragédia já anunciada há muito tempo, por sinal. Há muitas pessoas em meio aos escombros debaixo da terra, perdemos muitas pessoas nessa tragédia. A gente está trabalhando fortemente para fazer a ajuda chegar na ponta com muita velocidade".

O que tem sido legal, apesar dessa hecatombe, é o voluntariado: médicos, enfermeiros, bombeiros com turnos exaustivos procurando vítimas e o engajamento da comunidade. A gente tem se unido em torno da ajuda, da solidariedade, em torno de contribuir com esse momento e tornar um momento de tanta dor, em um momento de generosidade".

Bolsonaro acusar Zambelli de traição é irônico; ele é mestre em trair, diz Sakamoto

Sakamoto repercutiu a entrevista dada pela deputada federal Carla Zambelli (PL-SP) à Folha de São Paulo, onde ela criticou o ex-presidente Jair Bolsonaro e pediu trégua ao STF (Supremo Tribunal Federal).

Bolsonaro é mestre em trair, não dá para perguntar para Gustavo Bebianno, mas dá para perguntar para o general Santos Cruz e tantas pessoas que ele largou ao longo do caminho".

Bolsonaro sempre atuou ao longo de anos para salvar a si mesmo, em primeiro lugar, a sua família, em segundo lugar, e seus aliados próximos, em terceiro lugar".

O UOL News vai ao ar de segunda a sexta-feira em três edições: às 8h, às 12h e às 18h. O programa é sempre ao vivo.

Quando: de segunda a sexta, às 8h, às 12h e 18h.

Onde assistir: Ao vivo na home UOL, UOL no YouTube e Facebook do UOL.

Veja a íntegra do programa: