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

REPORTAGEM

Texto que relata acontecimentos, baseado em fatos e dados observados ou verificados diretamente pelo jornalista ou obtidos pelo o a fontes jornalísticas reconhecidas e confiáveis.

Marcos Leonardo quer novo projeto de carreira, e papo com Santos trava

Marcos Leonardo comemora gol do Santos contra o Flamengo - Reprodução
Marcos Leonardo comemora gol do Santos contra o Flamengo Imagem: Reprodução

Colunista do UOL

16/12/2021 18h35

Receba os novos posts desta coluna no seu e-mail

Email inválido

Santos e Marcos Leonardo ainda não têm um acordo pela renovação. O jogador tem vínculo até outubro de 2022, ficará livre para um pré-contrato com qualquer outro time a partir de abril e não gostou do projeto de carreira que lhe foi oferecido, segundo apurou o blog.

O principal entrave é a multa rescisória. O atacante gostaria que o valor começasse com um fixo mais baixo e fosse aumentando conforme ele tivesse mais minutos em campo. Assim, o atleta protegeria o clube caso ganhasse mais oportunidades e, ao mesmo tempo, manteria o valor mais baixo caso não fosse aproveitado, facilitando uma eventual saída.

Marcos não gostaria de ficar encostado entre os reservas como aconteceu em 2021, quando ele jogou como titular em apenas 18 vezes. Em apenas cinco delas, ele não foi substituído. Na reta final do Brasileirão, inclusive, ele fez quatro gols em três jogos, sendo decisivo na permanência da equipe na elite.

No meio do ano, o jovem de 18 anos ouviu da diretoria que estava em alta e que seria mais utilizado. Pouco depois, foram anunciadas as chegadas de Léo Baptistão e Diego Tardelli para a mesma posição, sem contar com Raniel, que já estava no elenco.

O Santos, por sua vez, não quer nem ouvir falar nessa multa escalonada. De acordo com dirigentes ouvidos pela reportagem, o valor precisa ser superior aos 30 milhões de euros para seguir a política de valorização de jovens revelados na Vila Belmiro. Em breve contato, Edu Dracena, executivo de futebol na Vila, disse que "colocar multa baixa não existe".

A ideia é que novos casos como os de Yuri Alberto e Kaio Jorge não se repitam com os atletas saindo do clube sem o retorno financeiro esperado. Ao mesmo tempo, Marcos não acha justo que ele seja colocado na fogueira para servir como resposta a erros do ado do Santos.

A última conversa entre as partes aconteceu antes do dia 10 de dezembro e, de lá para cá, não houve nenhuma contraproposta. A possibilidade de afastá-lo em caso de falta de acordo não está descartada. A conversa está estacionada.

Há outros detalhes pendentes nas conversas, como a questão salarial e as metas colocadas no papel para que ele fosse melhor remunerado. Nesse ponto, no entanto, os dois lados acreditam que o acordo será muito mais fácil do que a resolução do caso da multa. Até porque Marcos ainda tem salário de uma jovem promessa e não representa um peso na folha salarial santista.

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