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

São Paulo

Eder volta à briga por vaga no SPFC enquanto Pablo e Vitor Bueno dão adeus

Eder, Pablo e Vitor Bueno, jogadores do São Paulo, em treino no CT da Barra Funda - Divulgação/SPFC
Eder, Pablo e Vitor Bueno, jogadores do São Paulo, em treino no CT da Barra Funda Imagem: Divulgação/SPFC

Brunno Carvalho

Do UOL, em São Paulo

29/01/2022 04h00

A entrada em campo aos 36 minutos do segundo tempo na derrota contra o Guarani simbolizou um novo momento para Eder no São Paulo. Antes na lista de negociáveis do clube, o atacante vem mudando seu status no CT da Barra Funda.

O desejo de sair sempre partiu mais do São Paulo do que do próprio Eder. O atacante havia exposto publicamente a vontade de permanecer no Morumbi apesar da temporada ada com poucas oportunidades. Foram 29 jogos em 2021, sendo apenas 13 como titular, e cinco gols marcados.

Eder tem contrato com o São Paulo até o fim da atual temporada. O time do Morumbi mantém uma dívida com ele que gira entre R$ 3 milhões e R$ 4 milhões. Esse fator era apontado como uma das principais dificuldades para uma solução para o futuro dele.

A ideia do São Paulo era definir o futuro do atacante e de Pablo e Vitor Bueno, todos na lista de negociáveis, antes de começar a atual temporada. Os dois últimos entraram em acordo com o clube e am a rescisão de seus contratos. Já para o atacante de 35 anos, a pré-temporada mudou a situação.

Eder ganhou espaço nos treinos, foi inscrito no Paulistão e, atualmente, é considerado o reserva de Jonathan Calleri na disputa pela posição de centroavante. O jogador já foi, inclusive, elogiado pelo presidente Julio Casares pela postura apresentada na volta das férias.

"O Eder é um grande jogador, com experiência internacional. Cara que treina sério, que trabalha firme. Ele teve uma sequência de contusões que nunca teve na carreira. Sentimos nos olhos dele que ele está com muita vontade e acredito que ele vai ser uma opção, dependendo de uma avaliação técnica nos campeonatos do primeiro semestre. Acredito que ele ainda vai contribuir com o São Paulo, acreditamos na condição técnica do Eder", disse Casares à Gazeta Esportiva recentemente.

Afetado por um surto de covid-19 que atingiu 16 jogadores do elenco, o São Paulo ainda mantém um esquema de pré-temporada nas primeiras rodadas do Paulistão. A ideia de Rogério Ceni é rodar o elenco até que todos estejam em fisicamente em forma. Nesse cenário, é provável que Eder tenha mais chances de mostrar que pode ser útil para o time do Morumbi.

São Paulo