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

Santos

Renyer vê erro em saídas prematuras no Santos: "Indico que fique"

Renyer dribla a marcação durante partida contra o Ituano - Ivan Storti/Santos FC
Renyer dribla a marcação durante partida contra o Ituano Imagem: Ivan Storti/Santos FC

Eder Traskini e Gabriela Brino

Colaboração para o UOL, em Santos

17/07/2020 04h00

O atacante Renyer, de apenas 17 anos, esteve perto de deixar o Santos durante o processo de renovação de seu contrato, mas optou por ficar na equipe. A nova revelação do Peixe teve propostas do Benfica e do Porto, ambos de Portugal, e chegou a rescindir contrato com seu antigo empresário para poder seguir na Vila Belmiro.

Presença frequente nas seleções de base, Renyer estreou no profissional nesta temporada. A nova revelação santista, em conversa com o UOL Esporte, explicou que vê como erro deixar o clube de forma prematura.

"Vejo [como erro]. Você já construiu sua trajetória toda aqui, desde novo. No meu caso, cheguei aqui com 9 anos. Com 16, assinei meu contrato e subi pro profissional, graças a Deus. Então, vejo sim como erro. Mas se o jogador, ele treina bastante, se for melhor pro jogador, ele vai embora. Mas indico que ele fique, siga sua trajetória no clube que começou, que abriu as portas. Pra mim, eu queria muito ficar no Santos", disse em entrevista exclusiva à reportagem.

Renyer chegou a se despedir de seus companheiros de time durante o processo de renovação que se arrastou por meses. A primeira reunião deixou a negociação muito longe de ser concluída, mas a chegada do superintendente de futebol William Thomas fez o negócio andar. Renyer chegou a viajar para o Rio de Janeiro, mas voltou para com a equipe santista.

"Eu sempre quis ficar no Santos, né? Comentei que queria ficar. Até rescindi o contrato com o empresário pra poder facilitar, pra poder desenrolar com o Santos. Estou aqui há oito anos, não queria sair agora, no momento final pra subir pro profissional, ir pra outro time... Teve o Benfica, Porto, mas deu tudo certo. Quero pensar só aqui", afirmou.

Uma das apostas de Jesualdo Ferreira para a temporada, Renyer sofreu uma grave lesão enquanto treinava com a seleção de base: ele rompeu o ligamento cruzado do joelho direito e está em fase de recuperação.

Antes da lesão, o atacante vinha ganhando minutos com o técnico português que o acompanha de perto durante os treinamentos. Foram três partidas e um total de 65 minutos.

Contramão

Ao contrário de Renyer, outras revelações do Santos optaram por seguir um caminho diferente após negociações arrastadas para renovação de contrato. O zagueiro Robson Bambu acertou com o Athletico-PR, o meia Giovanni foi para o Ajax (HOL), o atacante André Anderson se transferiu para a Lazio (ITA) e o zagueiro Matheus Guedes assinou pelo Portimonense (POR).

O caso mais recente é o do atacante Yuri Alberto, que avisou ao Santos que deixará o clube após o término de seu contrato, que vence no fim do mês. O Peixe deve exigir uma indenização da equipe que contratá-lo.

Santos