;(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 negocia volta de Pato com produtividade e alinha detalhes com DM

Colaboração para o UOL, em Aracaju

09/05/2023 13h20

O São Paulo negocia a volta de Alexandre Pato e planeja um contrato por produtividade para o atacante, informou Marcelo Hazan, no De Primeira.

O que aconteceu

Segundo Hazan, o São Paulo conversa com o staff de Pato para fazer um contrato por produtividade. O jogador seria pago por frequência e rendimento em campo.

O Tricolor se preocupa com o joelho operado de Pato e vai consultar o Departamento Médico do clube. O atacante não joga desde o ano ado, quando lesionou o joelho atuando pelo Orlando City, dos EUA.

Pato está na reta final da transição do DM para o campo e bola. Ele se recupera há meses no CT do São Paulo e já tem contato diário com o elenco tricolor.

Há dirigentes do São Paulo que apoiam o retorno de Pato. Eles veem o atacante de 33 anos como uma liderança positiva e são gratos pela postura do jogador em sua última agem pelo Morumbi.

O que disse Marcelo Hazan

O São Paulo conversa para fazer um contrato de produtividade mediante frequência de jogos, assiduidade, minutos em campo. Se ele jogar, vai receber na medida em que jogar." Marcelo Hazan

Marcelo Hazan O que ouvi do clube é que eles estão de olho na parte final da recuperação física do Pato, que está se recuperando desde o ano ado de uma lesão no joelho e está na transição, naquele período entre trabalhos internos e fisioterapia para o gramado. O São Paulo quer ouvir o Departamento Médico e deixar tudo bem alinhado. Então, pode ser que demore um pouco para o Pato ficar à disposição, mas a negociação existe e é um desejo dos dois lados que aconteça." Marcelo Hazan

Há dirigentes favoráveis no São Paulo: dizem que ele seria uma liderança positiva e lembram os milhões de reais de que ele abriu mão no contrato lá atrás. E do lado do Pato tem a identificação." Marcelo Hazan

Menon: 'Treinos do São Paulo continuarão fechados'

O colunista Menon trouxe informações do porquê o São Paulo manterá os treinos fechados sob o comando do técnico Dorival Jr. Confira no vídeo.

Assista ao De Primeira na íntegra