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

Gerson tem chance de começar nova história na seleção após recusas

Jorge Rodrigues/AGIF
Imagem: Jorge Rodrigues/AGIF

Brunno Carvalho

Do UOL, em São Paulo

15/05/2021 04h00

A convocação do técnico André Jardine para a seleção brasileira olímpica dará a Gerson a chance de começar a escrever uma nova história com a camisa amarela. Aos 23 anos, o meia do Flamengo tem um longo histórico de recusas em defender as categorias inferiores da seleção.

A mais recente aconteceu antes da disputa do Pré-Olímpico, em 2019. Depois de ter jogado o Mundial de Clubes pelo Flamengo, Gerson recusou a convocação da seleção brasileira para poder tirar férias. Antes disso, já tinha pedido dispensa do Mundial sub-17 em 2013 e ignorado as sondagens para participar do Mundial sub-20, em 2015.

"O erro faz parte, nós erramos muito, os jogadores também. Esperamos que o Gerson tenha amadurecido. É um ado talvez até distante para ele. Eu o vejo em um momento maravilhoso, não só técnico, mas também comportamental dentro do campo", minimizou o técnico André Jardine, durante entrevista coletiva ontem (14), após o anúncio da convocação.

Essa foi a primeira aparição de Gerson nas convocações depois da polêmica envolvendo o Pré-Olímpico. Em fevereiro do ano ado, Juninho Paulista, coordenador de seleções, afirmou que não era apenas o aspecto técnico que seria levado em conta na hora de montar as listas das seleções, quando questionado sobre Gerson. No mês seguinte, Branco, coordenador das seleções de base, negou que o meia do Flamengo tenha sido punido.

"O treinador [André] Jardine, com a comissão técnica, decidiu assim [não o convocar] (...) Gerson vai ter chance? Vai ter chance de ser convocado novamente. Está numa fase esplendorosa", disse na época.

Na entrevista de ontem, Jardine disse acreditar na vontade do jogador para contar com ele nos próximos compromissos da seleção olímpica. A CBF ainda não anunciou oficialmente quais serão os amistosos que a equipe realizará, em preparação para os Jogos Olímpicos de Tóquio, no Japão.

"Eu fui em alguns jogos observar, em alguns momentos exclusivamente ele, e senti dele um jogador já muito maduro, muito concentrado naquilo que faz, focado em conquistar títulos, em decolar na carreira. Foi o que ou para mim nos jogos que eu e tenho certeza que é esse Gerson que a gente vai encontrar aqui na seleção, e que já manifestou para nós que tem o desejo de jogar em qualquer seleção", completou.