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

Neymar não foi avisado de que será colocado à venda; PSG não comenta

Neymar exibe nova camisa do PSG para a temporada de 2022/23 - Reprodução
Neymar exibe nova camisa do PSG para a temporada de 2022/23 Imagem: Reprodução

Bruno Andrade, Marcelo Hazan e Pedro Lopes

Do UOL, em São Paulo e Lisboa

30/06/2022 04h00

A informação de que o PSG teria dito a Neymar que não conta com ele para a próxima temporada, publicada ontem pelo jornal El País, foi o principal assunto do noticiário esportivo. Em contato com o UOL Esporte, fontes ligadas ao estafe do brasileiro afirmam que não houve qualquer comunicado do clube francês nesse sentido: Neymar está de férias no Brasil e não houve nenhuma reunião com dirigentes do PSG para discutir seu futuro.

A notícia publicada pelo jornal espanhol também afirma que Mbappé é favorável à saída do brasileiro. Duas fontes ligadas a jogadores do PSG negam que haja qualquer problema de relacionamento entre Neymar e Mbappé. Uma delas disse considerar 'impossível' que o atacante francês tenha pedido a saída do companheiro de time.

Procurado, o próprio PSG não confirma que tenha comunicado qualquer coisa ao estafe de Neymar e nem fala abertamente sobre negociá-lo. O português Luis Campos assumiu a posição de diretor esportivo no início deste mês, quando Neymar já estava fora da França, de férias.

Há de concreto uma sinalização do PSG ao mercado de que, ao contrário do que ocorreu nos últimos quatro anos, a porta para conversas sobre uma transferência envolvendo Neymar está aberta. A negociação, entretanto, é complicada pelo alto salário do jogador (30 milhões de euros anuais) e pelos 222 milhões de euros gastos pelo clube francês na contratação em 2017.

Os parisienses querem, sim, em caso de venda, reaver parte dos valores investidos no seu camisa 10 e liberar uma parte significativa de sua folha salarial. Isso faz com que a lista de potenciais destinos para o brasileiro seja menor: em maio, o UOL Esporte explicou por que a contratação de Neymar, hoje, não a mais pelo radar de Barcelona e Real Madrid. Para que a situação mude, os moldes no negócio precisam ser outros.

Do lado do estafe do jogador, o clima é de tranquilidade. Neymar está adaptado a Paris, tem vários amigos no elenco do PSG e um contrato longo até 2025, com extensão até 2027. Também há o cuidado para que não haja movimentos bruscos que afetem sua preparação para a Copa do Mundo, em novembro, principal objetivo da temporada.