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

Paulista - 2023

OPINIÃO

São Paulo tem tarefa mais difícil? Colunistas analisam quartas do Paulista

Do UOL, em São Paulo

07/03/2023 10h00

As quartas de final do Campeonato Paulista já têm datas definidas. São Paulo e Água Santa definirão o último classificado na próxima segunda-feira, no Allianz Parque.

O UOL News Esporte avaliou o mata-mata do estadual. Os jornalistas Milly Lacombe e Thiago Arantes avaliaram os confrontos de São Paulo, Palmeiras (contra o São Bernardo) e Corinthians (contra o Ituano) nas quartas.

"Acho que todos os grandes vão ar, mas acho que o São Paulo corre mais riscos", disse Milly Lacombe. "Pega um time ajustadinho, e o São Paulo não joga no Morumbi", justificou a opinião.

"Vejo o Palmeiras muito bem encaminhado para ar, e o Corinthians também, talvez nem tanto pelo Corinthians e mais pela fragilidade do adversário, que só escapou do rebaixamento na reta final", afirmou Thiago Arantes, concordando com Milly.

Incêndio no Ninho é maior vergonha da história do Flamengo

"Perder a semifinal do Mundial não é vergonha nenhuma. O Flamengo só estava no Mundial porque ganhou a Libertadores. É orgulho. A maior vergonha da história do Flamengo é a tragédia do Ninho do Urubu", disse Milly Lacombe.

Advogados cogitam anular acordo com Flamengo

"As advogadas do Pablo Henrique e do Jorge Eduardo já cogitam anular os acordos celebrados na Justiça. Porque elas entendem que essa matéria traz elementos que o acordo naquele momento não estava baseado", disse Leo Burlá.

Flamengo tem histórico de demissões antiéticas

"Não sei se o Vítor Pereira fica se perder o estadual, por todas essas coisas. Se estiver mostrando evolução tem que ficar. Todo mundo diz que ele é bom treinador, mas ainda não mostrou isso no Brasil", disse Milly Lacombe.

Protestos em frente ao Ninho

"No Brasil, muitas vezes a gente vê as pessoas falando 'Fulano comemorou título de estadual', como se fosse algo menor. Agora a gente vê 'A torcida protestou no estadual'", disse Thiago Arantes.

Lesões são 'fatalidade'?

"Tratar como fatalidade não ajuda o São Paulo. Acho que deveria ser tratado como 'o que está acontecendo aqui?'. Por que se você acreditar em fatalidade, sei lá, leva um padre para benzer", disse Milly Lacombe.

Neymar vai mesmo voltar mais forte?

"O número de lesões do Neymar não é equiparável a nenhum outro jogador de alto nível desses últimos dez anos. É desesperador para quem gosta do Neymar", disse Thiago Arantes.

Premier League ou Brasil: qual o caminho para Neymar?

"Vejo como um caminho interessante para o Neymar ir para o futebol inglês. O que não sei é se ele teria essa motivação, essa força interior", disse Thiago Arantes.

Confira o programa na íntegra