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

"Não há atrito com Abel Ferreira sobre usar a base", diz Anderson Barros

O técnico Abel Ferreira conversa com o diretor de Futebol do Palmeiras, Anderson Barros - Cesar Greco
O técnico Abel Ferreira conversa com o diretor de Futebol do Palmeiras, Anderson Barros Imagem: Cesar Greco

Diego Iwata Lima

Do UOL, em São Paulo

29/01/2022 16h36

Anderson Barros, diretor de futebol do Palmeiras, explicou, em entrevista exclusiva ao UOL Esporte, que não houve nenhuma cobrança direcionada ao técnico Abel Ferreira após as declarações do treinador sobre a utilização de atletas da categoria de base, especificamente os que foram campeões recentemente da Copa São Paulo.

Segundo o dirigente, não há nenhum atrito com Abel sobre o aproveitamento dos jovens e a questão é abordada com tranquilidade no dia a dia alviverde.

Não houve questionamento nem conversa especificamente sobre a declaração de Abel [na entrevista coletiva após a vitória sobre a Ponte Preta]. Existe sim, no Palmeiras, um planejamento e conversas constantes sobre esse tema, algo que vem acontecendo desde do início de 2020, que começou, com o Abel, sobre a geração do Gabriel Menino, Verón e Patrick de Paula, entre outros", explicou Anderson Barros.

"A posição do Abel [sobre os atletas da base encontrarem dificuldade de jogar com regularidade] foi nesse sentido, em cima desse processo de planejamento constante. Somos muito gratos à maneira como o Abel conduz esse trabalho conosco, ele não foi cobrado. Basta ver como o Abel utiliza a base. Desde 2020, 2021, muitos jogadores formados no clube tiveram participações efetivas e importantes, bem como oscilações, o que natural. Entendemos que o ano de 2022 será o ano de consolidação dessa geração que já está no profissional. É claro que há pontos individuais, mas é nesse sentido que vemos a dificuldade mencionada pelo Abel", diz.

Mais cedo, o UOL Esporte publicou que as declarações do técnico na ocasião haviam suscitado uma reunião específica para debater o tema.

Ano de maturação para geração que está no profissional

No elenco profissional, Danilo, Renan e Veron ainda têm idade para o sub-20. Já no time campeão da Copinha, Lucas Freitas, Pedro Bicalho e Lucas Sena estouraram a idade da categoria pensando nas próximas competições. Segundo Barros, as situações de Freitas e Bicalho já estão mais encaminhadas.

"Já trabalhamos na renovação do Freitas e do Bicalho. Quanto ao Sena, estamos conversando para entender o que é o melhor para o clube e os atletas, se emprestar, se negociar, enfim, qual o melhor caminho. O caso do Freitas está bem encaminhado para uma renovação"

Outro destaque da Copa São Paulo é o atacante Giovani, que recebeu recentemente propostas para trocar o Palmeiras pelo Ajax-HOL. Segundo o dirigente, o Palmeiras irá priorizar o retorno técnico neste momento e pretende dar mais espaço ao garoto no elenco principal.

"Quando a gente diz que não vai negociar, é por entendermos que o jogador ainda está no meio de um ciclo no Palmeiras, que ainda há etapas a cumprir no clube que podem ou não chegar no profissional. Mas que uma saída agora tem que contemplar um valor que tenha isso em mente, um trabalho que foi feito para ele jogar pelo Palmeiras, e que um valor de negociação também tem que levar isso em conta", concluiu.