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

Gabriel Medina vive ano caótico com divórcio, lesão e sem tetra mundial

Gabriel Medina foi eliminado precocemente na etapa de Saquarema do Circuito Mundial de Surfe - Buda Mendes/Getty Images
Gabriel Medina foi eliminado precocemente na etapa de Saquarema do Circuito Mundial de Surfe Imagem: Buda Mendes/Getty Images

Gustavo Setti

Do UOL, em Saquarema (RJ)

26/06/2022 08h37

O ano de 2022 ainda está na metade, mas Gabriel Medina já tem motivos para torcer para que 2023 chegue logo. O surfista vive um ano caótico. Ele se divorciou da esposa, a modelo Yasmin Brunet, se lesionou e não tem mais chance de ser tetracampeão mundial nesta temporada. Tudo isso e nem estamos em julho.

A notícia do divórcio surgiu no fim de janeiro, poucos dias depois que Medina anunciou uma pausa na carreira para cuidar da saúde física e mental - mais tarde, ele revelou que enfrentou uma depressão. O surfista e Yasmin estavam juntos desde 2020. A modelo esteve ao lado do marido quando ele foi tricampeão mundial no ano ado.

Medina aproveitou o tempo livre para se recuperar, voltou a treinar e retornou ao Circuito Mundial de Surfe no fim de maio, em G-Land, na Indonésia. Ele se mostrou recuperado e conquistou o terceiro lugar. Em junho, repetiu o mesmo resultado na etapa de El Salvador, de novo parando nas semifinais.

Por ter perdido as cinco primeiras etapas do ano, somou poucos pontos, mas ainda assim tinha chances de se classificar para a disputa do título mundial, entre os cinco primeiros do ranking. Os bons resultados desde a volta empolgaram os fãs. Porém, veio Saquarema.

Na etapa brasileira do tour, Medina perdeu na estreia, foi para a repescagem e acabou eliminado precocemente pelo australiano Callum Robson. E pior: ele se lesionou durante a bateria ao tentar um aéreo, seguiu competindo e tentou novamente a manobra, mas errou seguidas vezes. O surfista recebeu atendimento médico logo após a bateria.

Gabriel Medina maca - Thiago Diz/World Surf League - Thiago Diz/World Surf League
Gabriel Medina recebeu atendimento médico após se lesionar em Saquarema
Imagem: Thiago Diz/World Surf League

Um dia depois, a situação ficou ainda mais delicada. O exame realizado pelo brasileiro constatou que ele sofreu uma lesão ligamentar no joelho esquerdo. Medina deve ficar de quatro a seis semanas em recuperação e perderá a próxima etapa, na África do Sul, em julho. Desta forma, não tem mais chances matemáticas de se colocar no top 5 para disputar o título no WSL Finals, em setembro, mesmo que volte a tempo para a etapa do Taiti, em agosto.

Agora, é pensar em 2023. O Circuito do ano que vem terá uma importância maior: além de valer o título mundial, será classificatório para as Olimpíadas de Paris-2024. Na estreia do surfe no programa olímpico, em Tóquio, Medina ficou na quarta colocação. O brasileiro Italo Ferreira levou a medalha de ouro.