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

Danilo Lavieri

OPINIÃO

Texto em que o autor apresenta e defende suas ideias e opiniões, a partir da interpretação de fatos e dados.

Domingo reforça que Palmeiras é o time que mais sobra no início do ano

Colunista do UOL

13/03/2023 04h00

Receba os novos posts desta coluna no seu e-mail

Email inválido

Não foi nem de longe um show de bola e nem um jogo para empolgar o torcedor. Mas o Palmeiras no sábado venceu o São Bernardo por 1 a 0 e teve colocada em xeque a sua performance. Afinal, foi normal sofrer tanto contra o time do ABC nas quartas de final do Paulistão? O domingo mostrou que sim.

Ontem, o Corinthians conseguiu a proeza de ser eliminado para o Ituano. Um vexame. O time do interior de São Paulo lutava para não cair até as rodadas finais do Paulistão, conseguiu se classificar por causa do regulamento estranho da competição e eliminou o Alvinegro em plena Itaquera. Mais uma vez: um vexame. Com ou sem Renato Augusto, o time de Fernando Lázaro deveria ter avançado.

No Rio de Janeiro, o Fluminense perdeu para o Volta Redonda por 2 a 1. E olha que o gol de Nino poderia muito bem ter sido anulado se o VAR fosse um pouco mais rigoroso. O Tricolor poderia ficar perdendo por 3 a 0 também por um pênalti não marcado de André, que fez uma de suas piores partidas defendendo a equipe das Laranjeiras.

E em Belo Horizonte? Com a torcida rindo por causa da derrota do arquirrival Cruzeiro para o América-MG, a equipe entrou em campo no Mineiro e perdeu para o Athletic por 1 a 0. Com reservas, sim. Mas e daí? Não era obrigação a equipe que tanto gastou nos últimos anos ter um elenco suficiente para vencer mesmo sem seus principais jogadores?

A segunda-feira ainda reserva confrontos do São Paulo, contra o Água Santa, e do Flamengo, diante do Vasco. Tricolor e Rubro-Negro são amplos favoritos, mas é bem provável que, mesmo que vençam, fiquem longe de sobrar em campo.

E aí tudo isso mostra como o Palmeiras ainda está sobrando neste início de 2023. O time não sobrou mesmo nas quartas, mas eliminou o segundo melhor time do Paulistão, que inclusive venceu o São Paulo e o Corinthians na fase de grupos.

O resultado mantém a equipe de Abel Ferreira invicta na temporada, com o último revés do clube tendo sido ano ado diante do Inter, fora de casa, com o título garantido. Embora esteja longe de dar show, o Palmeiras mostra uma segurança que não existe em nenhum outro time no país, com todos seus rivais diretos ando por turbulências pesadas neste primeiro trimestre.

Siga também as opiniões de Danilo Lavieri no Twitter, no Instagram e no TikTok