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

Referência no skate, Letícia Bufoni diz se inspirar em Rayssa Leal

As brasileiras Rayssa Leal (esq) e Leticia Bufoni durante as eliminatórias do skate nas Olimpíadas de Tóquio - TOBY MELVILLE/REUTERS
As brasileiras Rayssa Leal (esq) e Leticia Bufoni durante as eliminatórias do skate nas Olimpíadas de Tóquio Imagem: TOBY MELVILLE/REUTERS

Do UOL, em São Paulo

05/08/2021 19h29

Símbolo do skate feminino para as novas gerações com apenas 28 anos, Letícia Bufoni aprende da mesma forma que ensina. A skatista, que diz ter crescido sem referências no esporte, diz se inspirar em Rayssa Leal, a Fadinha, de apenas 13 anos, que começou a andar de skate por sua influência.

"Sempre quis ser uma referência porque quando comecei não tinha uma mulher para me inspirar, para eu mostrar para o meu pai, não tive isso. Queria ser isso para uma nova geração como fui para a Rayssa, e hoje me inspiro nela", disse, em entrevista à revista 'Marie Claire'.

Rayssa e Letícia são amigas, e em Tóquio, dividiram o quarto durante as competições do skate street. Com apenas 13 anos, Fadinha encontrou um cenário mais desbravado na modalidade - muito em razão do trabalho da 'veterana'.

"No começo senti mais discriminação, falavam que não era coisa de menina, me chamavam de maria joão, sapatão. Não me incomodava porque eu era uma criança apaixonada, mas meu pai escutava muita coisa e me proibiu, chegou a cortar meu skate no meio. Mas minha paixão falou mais alto e eu montei um skate novo e ele percebeu que não tinha jeito", relembra.

No topo do ranking mundial do skate street feminino, Letícia diz que competir em Jogos Olímpicos trouxe uma pressão até então inédita na sua carreira.

"Nos últimos dois ou três anos escuto 'vai trazer uma medalha de ouro'. Cheguei com muita pressão, um peso a mais. As pessoas esperam que a gente traga a medalha, mas esquecem que não somos robôs. Foi o campeonato mais tenso da minha vida, difícil de se concentrar porque tinha muita gente, muitas câmeras, e eu queria muito. Mas é só mais um campeonato e outros virão."

Lidar com a saúde mental em um cenário como esse é fundamenta, segundo a skatista, que elogiou Simone Biles pela coragem ao desistir de algumas das suas competições por não se sentir bem.

"Faço terapia há dois ou três anos. Todo atleta deveria fazer porque é muita pressão, não adianta treinar se a cabeça não está no lugar, e o emocional é o mais importante. A gente já sabe andar de skate, mas na hora de competir o que manda é a cabeça, e somos humanos, erramos, e skate exige mínimos detalhes. O melhor do mundo pode não estar no seu melhor dia".

"Ela teve muita coragem porque tem patrocinadores, muita gente que investe nela. Ela fez o certo porque se você não está bem, não adianta ter uma medalha", finalizou.