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

Luana Lira estreia nos saltos ornamentais, mas fica fora da semifinal

Brasileira Luana Lira cai na água após salto nas Olimpíadas de Tóquio - Antonio Bronic/Reuters
Brasileira Luana Lira cai na água após salto nas Olimpíadas de Tóquio Imagem: Antonio Bronic/Reuters

Colaboração para o UOL, de São Paulo

30/07/2021 05h00

A paraibana Luana Lira começou nesta sexta-feira (30) sua participação na disputa dos saltos ornamentais das Olimpíadas de Tóquio, entrando em ação no trampolim de três metros. Oscilando entre boas e baixas notas, ela não conseguiu a classificação para a semifinal.

A disputa na fase classificatória consiste em cinco saltos, cujos pontos são somados. Dezoito das 27 participantes desta fase avançam à semifinal da prova. A brasileira de 25 anos, que há sete reside em Brasília, ficou com a 21ª colocação e 244.35 pontos.

Luana foi a 13ª a saltar, mas não alcançou uma boa pontuação. Foi a 23ª com 49.95 pontos, pouco mais de 20 pontos atrás da chinesa Tingmao Shi, que liderou a primeira bateria com 72 pontos.

Ela não conseguiu ter regularidade nos saltos seguintes, e isso a atrapalhou na classificação. Apesar de três saltos acima dos 50, os 36 pontos que ela alcançou no terceiro salto foram determinantes para mantê-la fora das 18 que avançaram à semi.

"Eu estava muito ansiosa antes de competir e ao mesmo tempo feliz por disputar meu primeiro Jogos Olímpicos. Por um salto que errei, não consegui ir para a semifinal, foi por pouco. Sou grata à Deus, primeiramente, à minha família e toda equipe de treino, essas pessoas são essenciais na minha carreira. Agora é continuar treinando forte para chegar em Paris 2024 e classificar para a semifinal e, quem sabe, ir para uma final", destacou a atleta.

Esta é a primeira olimpíada de Luana, e o trampolim de três metros foi a única prova prevista para ela. O melhor resultado alcançado pela paraíbana na carreira foi o sexto lugar nos Jogos Pan-Americanos de Lima, em 2019.

Incerteza olímpica

Antes de disputar pela primeira vez uma edição dos Jogos Olímpicos, Lira viveu dias de angústia. Semifinalista do Mundial, também disputado em Tóquio, ela tinha vaga garantida para disputar o torneio mais importante do planeta. Contudo, faltando 60 dias para o início das disputas, a Fina (Federação Internacional de Desportos Aquáticos) fez alteração nas regras, ando a considerar apenas os finalistas como classificados.

A decisão da entidade foi bastante questionada e recebeu duras críticas. Juntos na missão de reverter o quadro, Comitê Olímpico do Brasil (COB) e a Confederação Brasileira de Desportes Aquáticos (CBDA) entraram em ação e, em junho, viram a pressão surtir efeito.

"Por tudo que eu ei, foi complicado até eu chegar aqui. Primeiro eu consegui a classificação por mérito, depois fui tirada, e finalmente fui classificada novamente. Só de estar aqui nos Jogos Tóquio 2020 estou muito feliz e honrada", finalizou.