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

'Essa medalha não é só minha', diz Rebeca Andrade após prata em Tóquio

Do UOL, em São Paulo

29/07/2021 11h03

Lesões, três cirurgias no joelho, inúmeros tratamentos, momentos difíceis, e a volta por cima. Tudo isso foi lembrado por Rebeca Andrade logo após conquistar a prata na final do individual geral nos Jogos Olímpicos de Tóquio nesta quinta-feira (29).

A ginasta de 22 anos sempre foi considerada promissora, mas os inúmeros percalços físicos a impediam de chegar mais longe. Tudo isso ficou para trás com a medalha inédita no Japão. Pela primeira vez, uma atleta do sexo feminino do Brasil sobe no pódio na ginástica artística.

"Essa medalha não é só minha, é de todo mundo. Todo mundo sabe da minha trajetória, de tudo que eu ei, se eu não tivesse essas pessoas, não estaria aqui. Além de Deus, que me capacitou. Sou muito grata a todo mundo", falou Rebeca Andrade, minutos depois de entrar para a história do esporte brasileiro.

A agora vice-campeã olímpica falou bastante sobre a importância da psicologia no esporte depois de seu feito. Tanto pelos vários obstáculos que teve que superar ao longo da carreira, quanto pela ausência da estrela americana Simone Biles na final da competição. Biles, favorita à medalha de ouro, abriu mão de sua participação no individual geral, por não se sentir bem emocionalmente.

"O fato de ela (Biles) ter saído não foi nada negativo. As pessoas precisam entender que o atleta não é um robô, e sim um humano. A decisão dela foi a mais sábia para ela, não para os outros. Hoje sou uma atleta diferente justamente pela cabeça que tenho. Se fosse em 2016, quando era nova e crua, (essa medalha) não teria acontecido. Sempre falei nas entrevistas, que sempre irei o psicológico dela. Todo mundo sabe que ela é a melhor do mundo, Fiquei orgulhosa da atitude dela, ter pensado nela antes de qualquer coisa. E fico feliz de estar aqui e ter ganho minha medalhinha", analisou Rebeca.

A ginasta brasileira pode marcar ainda mais seu nome como uma das principais atletas do país nos Jogos Olímpicos de Tóquio, Ela ainda disputará as finais do solo e do salto nos próximos dias, com boas chances de conquistar mais medalhas.

"Mesmo se eu não tivesse ganhado a medalha, teria feito história. Justamente pela minha história, meu processo para estar aqui. Queria dizer para vocês não desistirem. Acreditem no sonho de vocês e sejam fortes, porque dificuldades nós sempre temos. Eu espero de verdade que vocês tenham pessoas que ajudem a chegar no topo, que foi onde eu cheguei", disse a mais nova medalhista olímpica do Brasil.