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

Em boa fase, jovens do Palmeiras também lideram o vestiário irreverente

Danilo, Patrick de Paula, Gabriel Silva, Gabriel Menino e Esteves chegam no Allianz Parque - Staff Images/CONMEBOL
Danilo, Patrick de Paula, Gabriel Silva, Gabriel Menino e Esteves chegam no Allianz Parque Imagem: Staff Images/CONMEBOL

Thiago Ferri

Do UOL, em São Paulo

04/12/2020 04h00

A goleada do Palmeiras sobre o Delfín (EQU), na última quarta-feira (2), teve participações dos garotos formados no clube nos cinco gols. Além do desempenho cada vez mais destacado, as crias da Academia de Futebol têm tido papel importante nos bastidores, trazendo irreverência para o vestiário comandado por Abel Ferreira.

Nos últimos jogos, com a volta da boa fase da equipe, os garotos estão sendo os responsáveis pela trilha sonora que embala a delegação. Acompanhados de uma grande caixa de som, que precisa ser carregada por duas pessoas, eles chegam no Allianz Parque dançando e cantando.

Além de Gabriel Menino, Patrick de Paula, Danilo, Esteves e Gabriel Silva, Lucas Lima costuma acompanhá-los neste momento. Os mais velhos e líderes do grupo também entram nas brincadeiras, como mostram vídeos da TV Palmeiras.

Há uma semana, o Verdão levou 13 jovens ao Equador — os goleiros Mateus e Leandro, o lateral Vanderlan, os meio-campistas Vitinho e Juninho, além dos atacantes Marcelinho e Fabrício estavam na primeira viagem internacional pelo time de cima. Por isso, tiveram de ar por um trote bem-humorado, acompanhado por todo o grupo e a comissão técnica de Abel (veja o vídeo abaixo).

Nos 5 a 0 de quarta-feira, que garantiu a vaga às quartas de final da Copa Libertadores, o primeiro gol foi de Patrick de Paula, o segundo de Gabriel Veron (com assistência de Danilo), o terceiro de Willian (com assistência de Veron), o quarto novamente de Veron e o quinto de Danilo (com assistência de Gabriel Silva). Abel Ferreira, ao falar deles, sempre reforça a importância dos atletas mais velhos no elenco.

"Eles são tão importantes quanto o Weverton, o Luan, o Gómez... A mescla entre a juventude irreverente e a experiência em campo que também exige deles o máximo é que nos leva a este caminho. A irreverência traz alma à equipe, mas não posso deixar de falar do Zé Rafael, do Luan, do Gómez, do Weverton, que são jogadores extremamente importantes para o crescimento destes jovens e isto se vê no espírito do grupo e alma apresentada em campo. Mas isto é mérito dos jogadores", elogiou.

Amanhã (5), contra o Santos, o técnico português precisará encontrar saídas, pois não contará com boa parte dos garotos que lideram as brincadeiras, mas principalmente vivem bom momento em campo. Danilo e Gabriel Menino estão suspensos, enquanto Patrick de Paula se lesionou e ficará um mês fora — o zagueiro Renan é outra ausência, por causa da Covid-19.

Veron será o único dos que começaram contra o Delfín a atuar no clássico. Como já tem sido costume na temporada, Abel deve precisar relacionar mais garotos do sub-20 para completar o banco no duelo válido pela 24ª rodada do Campeonato Brasileiro.

Ao menos aqueles que têm sido chamados estão correspondendo. No clube, considera-se que este é o momento em que se colhe os frutos dos R$ 90 milhões investidos no departamento de base nos últimos três anos, uma quantia recorde na história do Palmeiras.

Palmeiras