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

Futebol pelo mundo

ANÁLISE

Texto baseado no relato de acontecimentos, mas contextualizado a partir do conhecimento do jornalista sobre o tema; pode incluir interpretações do jornalista sobre os fatos.

Neymar volta à vida social no Brasil após quarentena rígida na França

Neymar vai a restaurante com amigos no Brasil - Manuela Scarpa e Marcos Ribas/Brazil News
Neymar vai a restaurante com amigos no Brasil Imagem: Manuela Scarpa e Marcos Ribas/Brazil News

João Henrique Marques

Colunista do UOL

25/05/2021 11h53

O primeiro dia de folga de Neymar no Brasil já foi explorado pelo jogador com a presença em um restaurante, em São Paulo, na noite de ontem, ao lado dos amigos, entre eles o ex-BBB Gil do Vigor. O agitado ambiente é uma mudança marcante da vida social do atacante após ar por quase seis meses trancado em casa em Paris, somente se deslocando para treinos e jogos do Paris Saint-Germain.

O rigoroso confinamento francês para controlar o avanço da pandemia da covid-19 teve restaurantes fechados desde outubro de 2020 até a semana ada. No período, o jogador não saiu de casa e recebeu visita de familiares e amigos totalizando um máximo de seis pessoas no local conforme outra norma do governo local.

A diferença da vida social de Neymar na França e no Brasil também foi marcante no final de ano. De férias por duas semanas em dezembro do ano ado, o jogador promoveu festa no Rio de Janeiro e um jantar de Réveillon com amigos e familiares em Santa Catarina. Em Paris, ele não fez pela primeira vez desde que chegou na cidade em 2017 sua grande festa de aniversário.

Na França, Neymar foi vacinado contra a covid-19 na semana ada, já se aproveitando da abertura no país para a imunização de todas as idades. No entanto, o jogador optou por ficar em casa na semana de reabertura de bares e restaurantes.

Seu último jogo da temporada com o PSG foi a vitória por 2 a 0 diante do Brest, no domingo. Ao longo da temporada 2020-2021, Neymar também não fez nenhuma viagem pela Europa em seus dias de folga. Seu hábito de viajar por Londres, Milão ou Barcelona foi deixado de lado por conta da proibição do turismo. Em alguns períodos, ele recebeu a visita do filho David Lucca, que mora em Barcelona.

Neymar tem mais um dia de folga no Brasil antes de se apresentar à seleção brasileira amanhã para a disputa das Eliminatórias da Copa do Mundo - jogos contra Equador e Paraguai -. Após isso, o jogador ainda seguirá com a seleção para a preparação da disputa da Copa América a partir de 12 de junho. O retorno ao PSG está previsto para a segunda quinzena de julho.