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

OPINIÃO

Luís Rosa: 'Se o São Paulo for eliminado, é mais decepção do que vexame'

Colaboração para o UOL, em Aracaju

25/04/2023 10h30

O São Paulo visita hoje o Ituano precisando vencer para avançar na Copa do Brasil. No UOL News Esporte, o colunista Luís Rosa disse que uma eventual eliminação não seria um vexame, mas uma decepção no início do trabalho de Dorival Júnior.

Parada dura: "Se fosse com o Rogério Ceni, acho que o São Paulo teria grandes dificuldades com o Ituano. Se for eliminado, não vai ser um vexame, o Ituano é um time muito duro e difícil de ser batido no Novelli Júnior. Óbvio que o time grande tem a obrigação de fazer o resultado, não acredito em vexame, não, mas em decepção. Vai ser um jogo duríssimo para ambos".

Decepção ou vexame?: "O momento do São Paulo, com a chegada do Dorival, é de cobra cascavel: se você não matar, ela te pica. Vai ser um jogo legal. Se o São Paulo for eliminado, vou ficar mais com a palavra decepção do que vexame".

Milly: 'Diretoria está destruindo reputação democrática do Corinthians'

A colunista Milly Lacombe afirmou que a diretoria do Corinthians está destruindo a história democrática do clube com a contratação de Cuca.

O que essa diretoria está fazendo é destruir a reputação democrática do Corinthians. Vai custar tão caro isso, tão caro, que talvez nenhum título consiga mudar essa derrocada da imagem do Corinthians no mundo." Milly Lacombe

'Cuca humilha todas nós ao tratar o caso assim', desabafa Milly

Milly Lacombe também cobrou do técnico do Cuca um pedido público de desculpas. Segundo ela, a forma com que o treinador trata o caso é ofensiva.

O Cuca não consegue se arrepender, pedir desculpas. Ele dá essa importância ao caso e ofende de novo todas nós, é uma ofensa, uma humilhação ele tratar o caso assim. Ele não precisa dar detalhes, dizer o que fez, mas entender o horror que é isso na nossa sociedade. Não é sobre o Cuca, é sobre nossas vidas." Milly Lacombe

'Cuca é a ponta do iceberg de uma coisa gigantesca', afirma Luís Rosa

Na opinião do colunista Luís Rosa, o caso Cuca é a "ponta de um iceberg" da nossa sociedade.

Precisamos revisitar a história para aprender e tentar evoluir. Olhar para o nosso ado e aprender para o futuro, para que essas coisas não aconteçam mais. O Cuca é a ponta do iceberg de uma coisa muito gigantesca que está acontecendo." Luís Rosa

Conselheiro do Corinthians é acusado de racismo em reunião no clube

O UOL News Esporte repercutiu a acusação de um conselheiro do Corinthians que teria sofrido racismo durante uma reunião no clube. Entenda o caso no vídeo.

Assista ao UOL News Esporte na íntegra