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

Como Neymar e Cavani reataram de forma silenciosa e findaram rusgas

Neymar sorri e cumprimenta Cavani durante treino do PSG - FRANCK FIFE / AFP
Neymar sorri e cumprimenta Cavani durante treino do PSG Imagem: FRANCK FIFE / AFP

João Henrique Marques

Do UOL, em Paris

08/02/2020 04h00

No vestiário do Paris Saint-Germain nota-se harmonia entre Neymar e Cavani. Eles usaram o tempo para reaproximação após período complicado, sem conversas pessoais e com "cutucadas" de bastidores. O cenário atual já tem até o reservado atacante uruguaio marcando presença na festa de aniversário do brasileiro.

Cavani não tem comportamento festivo e, assim, gera surpresa nos jogadores do PSG quando se junta ao elenco em comemorações. Para os amigos do brasileiro, no entanto, a presença já é encarada com normalidade, fruto de uma amizade que foi criada com o tempo. O uruguaio se vestiu de branco como mandava o figurino do aniversário de Neymar, e foi ao evento em Paris acompanhado da esposa.

Cavani na festa de Neymar - Reprodução - Reprodução
Imagem: Reprodução

A boa relação entre Neymar e Cavani foi notada nos bastidores do PSG em período em que os dois tratavam de lesões. Na temporada ada, o uruguaio se mostrava preocupado com um desânimo do brasileiro por conta da reincidência de lesão no pé direito. Mensagens de apoio e relatos de saudades de o ver em campo deixavam o camisa 10 animado.

Neymar posta foto com Cavani após o uruguaio perder pênalti no PSG - Reprodução/Instagram - Reprodução/Instagram
Neymar postou foto com Cavani
Imagem: Reprodução/Instagram

A boa relação foi bastante explorada pela mídia sa quando Neymar deixou Cavani cobrar um pênalti no trecho final da temporada ada, no empate por 1 a 1 diante do Nice, no Parque dos Príncipes. O uruguaio desperdiçou a cobrança, e o brasileiro realizou manifestação de apoio pública ao postar uma foto ao seu lado com a legenda : "El matador", o apelido dado pela torcida do PSG a Cavani.

Na atual temporada, Neymar voltou a ceder uma cobrança de pênalti para Cavani na goleada por 5 a 0 contra o Galatasaray, pela Liga dos Campeões, em dezembro. Mais uma vez, o camisa 9 desperdiçou a cobrança. "Estou feliz pelo resultado e atuação do time, mas queria muito ver o Cavani marcando um gol tão importante para ele", disse Neymar em entrevista no campo à RMC TV após o jogo.

Neymar vinha de período delicado no PSG, já que era perseguido pela organizada com vaias no Parque do Príncipe. Ceder um pênalti a Cavani, o ídolo máximo dos torcedores, tornava-se um gesto grandioso.

A briga que parecia interminável

O período de rusga entre Cavani e Neymar foi latente na primeira temporada 2017-2018, a primeira do brasileiro no clube francês. O caso da briga pelo posto de cobrador de pênaltis do time foi uma disputa de egos que parecia não ter fim. Enquanto Neymar reclamava nos bastidores que Cavani não tinha sabedoria para aceitar mudanças, o uruguaio, do outro lado, relatava falta de respeito.

O cenário ruim entre Neymar e Cavani tinha reflexos em campo. O brasileiro chegava a realizar jogos sem sequer trocar es com uruguaio, sendo a maioria dos es realizados para o outro atacante do PSG, o francês Kylian Mbappé.

Tuchel chamava o fato de "falta de comunicação entre atacantes", e dizia ser algo necessário de corrigir. Por um bom tempo, a solução encontrada foi a de colocar Cavani no banco e dar espaço para um esquema 4-3-3 com Di Maria, Mbappé e Neymar no trio ofensivo.

No momento atual, Cavani segue como opção no banco de reservas, já que o reforço para temporada, o argentino Mauro Icardi, tomou o posto de centroavante. No entanto, a ânsia de Neymar por ver oportunidades e gols do uruguaio é grande. No último jogo que disputou, a goleada por 5 a 0 contra o Montpellier, sábado ado, o camisa 10 deu es a Cavani nos 20 minutos em que ele esteve em campo. O gol do uruguaio marcado no lance final de jogo foi bastante festejado por Neymar. A jogada foi anulada em análise do VAR por conta de impedimento, mas deixou clara a alegria do brasileiro pelo gol do agora amigo Cavani.