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

Palmeiras

Bastidores do Palmeiras: Clube não "colocará gasolina" na crise com o Fla

Jogadores do Palmeiras disputam lance com jogadores do Flamengo durante partida do Brasileirão - Marcello Zambrana/AGIF
Jogadores do Palmeiras disputam lance com jogadores do Flamengo durante partida do Brasileirão Imagem: Marcello Zambrana/AGIF

Thiago Ferri

Do UOL, em São Paulo

29/09/2020 12h00

A postura do Flamengo antes do jogo de domingo (27) revoltou praticamente todas as outras equipes da Série A do Brasileirão, em especial o Palmeiras. Ainda que a diretoria alviverde tenha ficado irritada com a forma como atuou a cúpula rubro-negra, o Verdão não deve "jogar gasolina" na crise envolvendo o clube carioca.

A tentativa de adiamento da partida por liminares foi vista por algumas pessoas no Palmeiras como um "atentado ao futebol". Presidentes de outras equipes se manifestaram publicamente contrários ao Fla, mas a realização da partida fez o tumulto diminuir, como publicou o blog do Rodrigo Mattos.

Considera-se que o caso ainda poderá ter repercussões no futebol brasileiro, uma vez que o Rubro-Negro ficou sozinho ao tentar mudar a data do jogo devido ao surto de Covid-19 em seu elenco, mesmo após recusas da CBF e do Superior Tribunal de Justiça Desportiva (STJD). A visão de que o time "cruzou a linha" é compartilhada por mais equipes brasileiras.

Maurício Galiotte, ainda que bastante incomodado com o ato, não deve fazer fazer articulações nos bastidores contra o rival. Pessoas ligadas à diretoria consideram que a discussão envolveu muito mais o conceito do protocolo dos clubes do que uma disputa direta com o Flamengo. Tanto que nem houve novo posicionamento depois de o presidente falar na paralisação do campeonato, sábado (26).

Outro tema em que as diretorias de Palmeiras e Flamengo divergem é sobre a volta do público aos estádios. Até antes destes problemas, a relação entre as partes não era ruim nos bastidores. Os clubes, inclusive, estão entre os principais articulares da Medida Provisória 984, que dá ao mandante de uma partida de futebol no país o direito de transmissão do jogo.

O entendimento é de que o caso não pode atrapalhar o trabalho em favor da MP, que irá caducar e deixará de valer se não for votada no Congresso em duas semanas. A tendência é de que isto ocorra.

Palmeiras