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

Santos: Bustos elogia 'extraordinário' Ângelo e quer sequência como titular

Ângelo, do Santos, em partida contra o Coritiba - Fernanda Luz/ AGIF
Ângelo, do Santos, em partida contra o Coritiba Imagem: Fernanda Luz/ AGIF

Eder Traskini

Do UOL, em Santos

18/04/2022 04h00

Dribles curtos, es, lançamentos precisos e até finalização bonita de fora da área. O atacante Ângelo relembrou a qualquer um que possa ter esquecido que é o novo projeto de raio da Vila Belmiro. Durante a vitória de ontem (17) por 2 a 1 sobre o Coritiba, o atacante de apenas 17 anos comandou o Peixe na primeira etapa e encheu os olhos do técnico Fabián Bustos.

O argentino quer ter Ângelo como titular mais vezes e lembrou que o jovem vem de lesão, por isso a queda no desempenho na segunda etapa.

"Cada vez que Ângelo esteve 100% foi titular. É um jogador que gosto. Há muitos jogadores bons, alguns têm mais talentos que outros, caso de Ângelo. O treinador tem que tentar. Às vezes se prioriza o tático. Ângelo vem de uma lesão, fez um primeiro tempo extraordinário, gerou jogo, rematou para o gol, se habilitou a jogar, deu assistências. Espero que siga assim, e se seguir terá mais chances de ser titular", afirmou Bustos.

De fato, Ângelo sofreu com lesões neste ano. Dos 18 jogos da temporada, Ângelo participou de 14, mas os números totais podem enganar. Lesões quebraram sua sequência inicial e, depois, a saída de Carille atrapalhou o período em que esteve totalmente à disposição do Peixe.

Ângelo foi reserva na estreia e, a partir daí, emendou quatro jogos como titular antes da primeira lesão. Diante do São Bernardo, Ângelo sofreu um entorse no tornozelo esquerdo, no dia 10 de fevereiro. O problema interrompeu sua sequência e fez com que o atacante perdesse o jogo contra o Ituano. Ele retornou uma semana depois e foi titular na derrota para o Mirassol que derrubou o técnico Fábio Carille.

Titular nas três partidas com Marcelo Fernandes, foi mantido na equipe por Bustos contra Fluminense (PI) e Palmeiras, atingindo sua maior sequência na temporada: seis jogos. Se tornou reserva conta a Ferroviária, entrou vindo do banco e se machucou.

Exames identificaram uma lesão no músculo bíceps femoral, que fez com que Ângelo perdesse três jogos e ficasse quase um mês afastado dos gramados. Quando retornou aos treinos, chegou a sentir novamente um entorse, mas foi só o susto.

Reserva contra a Universidad Catolica (EQU), iniciou seu primeiro jogo desde 13 de março e fez, talvez, sua melhor atuação como profissional do Peixe. Com apenas um gol e uma assistência na temporada, Ângelo demonstrou que tem futebol para ampliar e muito esses números em 2022.

Santos