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

Liga dos Campeões 2019/2020

PSG dá férias ao elenco e programa volta com foco na Liga dos Campeões

Neymar em ação durante treino do PSG - Reprodução/Instagram
Neymar em ação durante treino do PSG Imagem: Reprodução/Instagram

João Henrique Marques

Colaboração para o UOL, em Paris

25/05/2020 09h27

O Paris Saint-Germain definiu hoje (25) que vai dar férias para os jogadores do elenco profissional a partir de 1º de junho. Como o Campeonato Francês foi finalizado, a diretoria decidiu liberar o grupo e marcar a volta aos treinos para o dia 22 de junho, com foco na provável retomada da Liga dos Campeões.

O período de férias foi definido também pensando na próxima edição do Francês, que tem início previsto para o dia 22 de agosto. Assim, PSG e Lyon, clubes ses ainda vivos na Liga dos Campeões, devem emendar jogos consecutivos das duas competições.

A ideia da Uefa, já discutida entre os clubes participantes, é criar uma "Super Champions" para finalizar rapidamente o torneio continental em agosto. A competição foi interrompida com PSG, Atalanta, Atlético de Madrid e Leipzig já garantidos nas quartas de final. Os confrontos de oitavas ainda pendentes são Real Madrid x Manchester City, Barcelona x Napoli, Lyon x Juventus e Bayern de Munique x Chelsea.

O governo francês impediu a realização de esportes coletivo no país até setembro, mas o Ministério do Esporte local avalia ser possível encontrar uma brecha para reiniciar o Campeonato Francês no dia 22 de agosto. Porém, dificilmente PSG e Lyon poderão mandar jogos das fases restantes da Liga dos Campeões no país. Por isso, a Uefa propõe realizar todo o restante do torneio na Turquia, sede da final desta edição, e a ideia é de agrado dos clubes.

Neymar, Thiago Silva e Marquinhos estão no Brasil para o período de férias. O trio se programa para cumprir uma quarentena conforme orientação do governo da França para quem entra no país. Por isso, os três devem voltar na primeira quinzena de junho.

Outra questão já definida pela diretoria do PSG foi que o período de seguro de desemprego parcial para o elenco será encerrado no dia 31 de maio. Na França, os clubes acionaram em março uma medida que permitiu o pagamento de apenas 70% do salário bruto dos trabalhadores e ainda prevê reembolso do Estado de até 4.850,00 euros por funcionário.

Por exemplo: o salário de Neymar é de cerca de 2,5 milhões de euros mensais segundo reportagem do jornal francês L'Equipe publicada em janeiro. A redução fez com o que o ordenado asse a 1,75 milhão de euros ao mês entre março e maio. Como o teto da indenização é de 4.850,00 euros, o clube recebeu esse valor do governo.