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

Paris Saint-Germain

PSG não joga a toalha, mas teme influência da data-Fifa no futuro de Mbappé

Futuro de Mbappé está entre PSG e Real Madrid a oito meses do final de seu contrato - REUTERS/Stephane Mahe
Futuro de Mbappé está entre PSG e Real Madrid a oito meses do final de seu contrato Imagem: REUTERS/Stephane Mahe

Arthur Sandes e João Henrique Marques

Do UOL, em São Paulo e em Paris

12/11/2021 04h00

Kylian Mbappé tem menos de oito meses de contrato com o Paris Saint-Germain e está perto de poder pré-contrato com qualquer outra equipe. Na Espanha, o Real Madrid segue confiante de poder ter o craque de graça; já em Paris há preocupação com a data-Fifa desta semana, mas esperança de que fatores externos possam culminar na permanência do francês.

Segundo o UOL Esporte apurou, o PSG ainda não se dá por vencido quanto à saída de Mbappé e confia que alguma mudança externa ao clube, no cenário europeu, possa mudar os rumos do futuro do atacante —uma temporada de gala de Vinícius Jr. no Real Madrid, por exemplo, ou um maior protagonismo do próprio Mbappé em Paris etc.

Este plano, no entanto, encontra um obstáculo na data-Fifa desta semana. Fontes no PSG item que cada convocação da seleção sa é motivo de preocupação porque pode aproximar Mbappé do futebol espanhol. Benzema é um fator importante da equação e já disse ter certeza que a ida do amigo para o Real Madrid é "questão de tempo". Ambos jogam juntos pela França nos próximos dias, contra Cazaquistão e Finlândia, pelas Eliminatórias para a Copa do Mundo.

Para ficar com o jogador, o Paris Saint-Germain está disposto a elevar seu salário ao patamar de Neymar e Messi e aceitar um contrato mais curto do que de costume. A possibilidade de afastamento de Mbappé chegou a estar na mesa no ado, mas foi descartada por causa da dedicação que o jogador tem mostrado nos treinamentos e jogos.

Mbappé ou por momentos de desconexão no PSG há alguns meses: não tinha muito assunto com os companheiros, ficou ausente das atividades extracampo da maior parte do elenco, queixou-se de que não lhe avam a bola, entre outros desencaixes. No entanto, fontes ligadas ao vestiário do clube relatam que tudo isso foi resolvido, e a relação do francês com o grupo voltou a ser boa.

É diferente de sua relação com Leonardo, diretor esportivo do PSG. Os dois estão em rota de choque, e o atrito piorou após o dirigente dizer publicamente que "Mbappé quer ir ao Real Madrid", ainda durante a janela de transferências, em agosto. O atacante se sentiu exposto e até hoje evita conversar com Leonardo.

Da parte do Real Madrid, o jornal espanhol Marca informa que a estratégia por enquanto é esperar. Restam 50 dias para a virada do ano, e o PSG ficaria de mãos atadas já em 1º de janeiro caso Mbappé escolha um pré-contrato. O próprio jogador já confirmou publicamente que "disse ao PSG que queria sair em julho".

Outra possibilidade seria o clube merengue refazer sua proposta na janela de transferências do inverno europeu. Ainda de acordo com a imprensa espanhola, seria uma carta de garantias que o Real Madrid estaria disposto a pagar para que o PSG não tivesse mais alguns meses para tentar fazer Mbappé mudar de ideia.

Paris Saint-Germain