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

Palmeiras

"Dossiê" de Menino na seleção tem dados desde o sub-15 a estratégia de Luxa

Gabriel Menino, durante treino do Palmeiras, na Academia de Futebol - Cesar Greco
Gabriel Menino, durante treino do Palmeiras, na Academia de Futebol Imagem: Cesar Greco

Thiago Ferri

Do UOL, em São Paulo

19/09/2020 04h00

A convocação para a seleção brasileira pegou de surpresa Gabriel Menino e pessoas próximas a ele. Promovido em janeiro ao elenco profissional do Palmeiras, o polivalente meio-campista não sabia, mas vinha sendo analisado detalhadamente pela comissão técnica de Tite. Foi montado um "dossiê" sobre o jogador com informações desde o sub-15, ando pelo posicionamento na equipe de Vanderlei Luxemburgo.

Captado do Guarani, Menino chegou ao Verdão aos 16 anos como meio-campista, tendo sido também lateral direito no sub-15 do Bugre. Na base do Palmeiras, estabeleceu-se como um meio-campista ambidestro e versátil. Paulo Victor Gomes, atual técnico da seleção sub-17, trabalhou na base palmeirense e ajudou a dar informações para Tite e o auxiliar Cleber Xavier antes de montarem a lista da convocação para as Eliminatórias.

Ao longo das 25 partidas em 2020 no Palmeiras, Gabriel Menino comprovou sua polivalência: ainda que mais ambientado a atuar como volante, jogou também como ponta direita e lateral, quando Marcos Rocha e Mayke se machucaram. O desempenho foi elogiável, inclusive com boas partidas na Copa Libertadores.

A experiência de Gabriel no meio-campo faz com que ele consiga participar da criação ofensiva por dentro, não apenas buscando a linha de fundo como lateral. Este foi um diferencial para Tite e sua comissão técnica, que, inclusive, o compararam com Daniel Alves. "E na parte defensiva ele tem grande noção de posicionamento pela sua formação. Isto é importante", pontuou Cleber Xavier, auxiliar da seleção.

A participação mais recente de Menino como lateral foi no segundo tempo da vitória de virada sobre o Red Bull Bragantino. Ele começou como titular no meio-campo, mas, aos 21 minutos do segundo, Luxa tirou Mayke para colocar Willian, deslocando o camisa 25. Dois minutos depois, foi dele o cruzamento para Gabriel Veron empatar.

O pior momento do "lateral-meio-campista", como chamou Tite, foi quando precisou atuar na ponta direita. Este posicionamento havia sido o escolhido por Luxemburgo no começo do Campeonato Brasileiro. A partir do momento em que o técnico o recolocou como um volante pelo lado direito, voltou a se destacar. Na quarta (16), foi assim que fez seu primeiro gol como profissional, na vitória sobre o Bolívar (BOL), pela Libertadores.

"Jogador tem de ter mais de uma posição. Onde precisar pode contar comigo, que vou dar conta do meu espaço", avisou. "Eu aceito jogar até de goleiro (risos). Eu quero é jogar. Onde o professor achar que preciso jogar, vou dar o melhor na posição que eu estiver", completou.

Gabriel Menino renovou seu contrato com o Palmeiras até o fim de 2024, e possui multa de 60 milhões de euros (cerca de R$ 383 milhões na cotação atual). O Verdão adquiriu mais 10% de seus direitos econômicos no começo da temporada e é dono de 80% agora — o Guarani tem os outros 20%.

Palmeiras