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

Mbappé revela que pediu para sair do PSG: 'Minha posição foi clara'

Mbappé disse que avisou o PSG em julho sobre o desejo de ser negociado pelo clube - REUTERS/Stephane Mahe
Mbappé disse que avisou o PSG em julho sobre o desejo de ser negociado pelo clube Imagem: REUTERS/Stephane Mahe

Do UOL, em São Paulo

04/10/2021 08h09Atualizada em 04/10/2021 11h34

O atacante Kylian Mbappé disse que pediu para deixar o PSG em julho deste ano. O francês foi alvo do Real Madrid na última janela de transferências, mas acabou ficando na equipe de Paris.

"As pessoas disseram que recusei seis ou sete ofertas de renovação, que não quero mais falar com Leonardo (diretor do PSG). Isso não é verdade. Me disseram: 'Kylian, agora você está falando com o presidente'", afirmou à rádio RMC Sport.

"Não cabe a mim julgar, mas minha posição foi clara. Eu disse que queria ir embora e disse logo. Eu, pessoalmente, não gostei muito do fato que disseram que 'ele vai ver na última semana de agosto'. Eu disse no final de julho que queria ir embora."

Segundo a imprensa europeia, o Real viu o PSG recusar oferta de 170 milhões de euros, mais de R$ 1 bilhão, e mais tarde chegou a oferecer 200 milhões de euros (R$ 1,2 bilhão), novamente recusado pelos ses.

"Pedi para sair porque, a partir do momento que não queria renovar, queria que o clube tivesse um valor com a transferência para buscar um substituto de qualidade", declarou.

Sem contrato renovado, Mbappé tem vínculo até junho de 2022 com o Paris Saint-Germain. Apesar da vontade de ir embora, o francês disse que respeitou o desejo do clube de não negociá-lo.

"É um clube que me trouxe muito, sempre fui feliz aqui nos quatro anos que ei aqui e ainda sou. Anunciei cedo o suficiente para que o clube pudesse reagir. Queria que todos saíssem beneficiados, de mãos dadas para fazer um bom negócio. Eu os respeitei e disse: 'se vocês não querem que eu vá embora, eu fico'", explicou.

Paris Saint-Germain