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

Danilo Lavieri

Por que Matheus Cunha foi o escolhido de Tite para o lugar de Gabriel Jesus

Matheus Cunha comemora segundo gol do Brasil contra a Argentina - LUISA GONZALEZ/REUTERS
Matheus Cunha comemora segundo gol do Brasil contra a Argentina Imagem: LUISA GONZALEZ/REUTERS

Colunista do UOL

25/09/2020 13h52

Receba os novos posts desta coluna no seu e-mail

Email inválido

Quem não acompanha o futebol internacional ou as categorias de base da seleção brasileira pode ter se assustado com o nome de Matheus Cunha para o lugar de Gabriel Jesus. O atacante do Hertha Berlin, no entanto, já está no radar de Tite e sua comissão técnica há um bom tempo.

Esta é a primeira convocação do atleta para a seleção principal e ele estará disponível para os jogos contra a Bolívia e o Peru, no mês que vem, pelas Eliminatórias da Copa.

Em janeiro, tanto o treinador quanto Cleber Xavier, seu braço direito, estiveram na Colômbia para assistir in loco ao Pré-Olímpico. O atacante foi o destaque da competição ao terminar como artilheiro e, já na época, chamou a atenção do mercado internacional, deixando o RB Leipzig para sua equipe atual a pedido do então treinador, Jurgen Klinsmann.

De lá para cá, a comissão do time principal manteve conversas com a das categorias de base. Essa integração é tratada por Tite como um dos grandes pilares do bom trabalho. Ele mantém comunicação regular com André Jardine, técnico do time sub-23.

Além disso, Matheus Cunha manteve o bom nível dentro de campo. Nesta temporada, em dois jogos ele tem dois gols. No ano ado, em 11 jogos pelo Hertha, ele fez cinco gols.

Ele pode atuar como uma referência, mas também tem característica para procurar jogo fora da área. Seus chutes de média distância são elogiados pelos técnicos que o observam.

Na atual janela, inclusive, Matheus Cunha esteve no radar do PSG, mas as negociações não avançaram. Aos 21 anos, ele só não estará nas Olimpíadas se não obtiver liberação de seu time.

No Brasil, o atleta atuou apenas na base do Coritiba, de onde saiu direto para o FC Sion, da Suíça. Natural de João Pessoa, ele aproveitou que foi jovem para a Europa e se dedicou aos estudos de diferentes línguas: ele fala espanhol, italiano, alemão e inglês.