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

OPINIÃO

Texto em que o autor apresenta e defende suas ideias e opiniões, a partir da interpretação de fatos e dados.

Renato Augusto na seleção? Danilo anula rival e podia ser testado por Tite

Danilo, do Palmeiras, comemora seu gol durante partida contra o Corinthians - Marcello Zambrana/ AGIF
Danilo, do Palmeiras, comemora seu gol durante partida contra o Corinthians Imagem: Marcello Zambrana/ AGIF

Colunista do UOL

18/03/2022 04h00

Receba os novos posts desta coluna no seu e-mail

Email inválido

No jogo de ontem (17), ficou ainda mais evidente como Danilo joga bola. O meio-campista do Palmeiras roubou bola, distribuiu jogadas, comandou o setor do Alviverde como se já tivesse anos de experiência. De quebra, ainda anulou Renato Augusto, um dos jogadores mais perigosos do Corinthians. Seria justo que o palmeirense "furasse" a fila da Amarelinha.

Se Tite ainda sonha com uma possível recuperação do corintiano e assistiu a esse clássico, ele certamente ficou impressionado com a Cria da Academia e poderia até levá-lo como um teste. Ficou também bem claro que Renato precisa de muito mais intensidade se quiser ainda sonhar em jogar mais um Mundial.

Não estou dizendo que o palmeirense já merece uma vaga na Copa do Mundo, mas já que o Brasil já tem vaga garantida no Qatar, seria bom se ele pudesse ser testado pelo comandante. O técnico precisa ver de perto para confirmar as impressões que tem visto de longe. Claro que Abel Ferreira não ia gostar de perdê-lo em fase mata-mata do Paulista, mas o atleta não pode ser punido pelas bizarrices do calendário brasileiro.

A movimentação de Danilo sem a bola é surpreendente para um garoto com pouca experiência. Ele está sempre olhando seus companheiros e adversários, como se estivesse mapeando o campo. Quando ele recebe a bola, muitas vezes não fica mais de cinco segundos com ela nos pés, dando toques rápidos e dificultando demais as defesas adversárias.

Não é à toa que ele tem chamado tanta a atenção de times europeus e provavelmente vai receber uma proposta irrecusável no meio do ano, especialmente de times ingleses. Já na virada do ano, a diretoria do Alviverde recebeu dezenas de ligações e sondagens, assim como os empresários do atleta. O combinado era que até o Mundial ninguém sairia.

Danilo recentemente renovou seu contrato até 2026 e o clube deu aumento de salário para o jogador. Seu futuro, no entanto, vai ser alçar voos bem mais altos do que os que já conseguiu no Palestra Itália.

Siga também as opiniões de Danilo Lavieri no Twitter, no Instagram e no TikTok