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

Surfe 360°

REPORTAGEM

Texto que relata acontecimentos, baseado em fatos e dados observados ou verificados diretamente pelo jornalista ou obtidos pelo o a fontes jornalísticas reconhecidas e confiáveis.

Gabriel Medina e Italo Ferreira incluem meditação em treinos na Indonésia

Gabriel Medina medita na Indonésia - reprodução/Instagram
Gabriel Medina medita na Indonésia Imagem: reprodução/Instagram

Colunista do UOL

01/06/2022 11h43

Já são 4 dias sem boas ondas e com o campeonato parado.

E a turma que está na Indonésia para as disputas da 6ª etapa do mundial de surfe, tem feito um pouquinho de tudo para se divertir e cuidar do corpo e da mente.

Entre uma partida de sinuca e as sessões de treinos, os melhores surfistas do mundo aproveitam a paradisíaca região de G-Land.

GM - reprodução/Instagram - reprodução/Instagram
Gabriel Medina e Italo Ferreira meditam na Indonésia
Imagem: reprodução/Instagram

Se uma das noites foi curtida com muita música, dança e uma cervejinha (que ninguém é de ferro), a quarta-feira foi de relaxamento.

Gabriel Medina e Italo Ferreira escolheram um 'spa' para completar a preparação para quando o evento recomeçar.

Boa alimentação, sessão no ofurô e meditação preencheram parte do dia dos campeões mundiais.

GM - reprodução/Instagram - reprodução/Instagram
Post de Gabriel Medina
Imagem: reprodução/Instagram

No IG, Medina escreveu: "Se eu pudesse aconselhar a vocês a fazer algo.... MEDITAÇÃO. Se sentir mais leve, parar para pensar nas coisas que está vivendo, viveu, agradecer, entender, amar, pensar no próximo, respirar, dar valor às coisas que am batidas no nosso dia a dia com tantas distrações. Esse é o melhor sentimento do mundo. GRATIDÃO. Vamos viver o processo e fé em Deus".

Depois de ficar sem competir por quase 9 meses, Gabriel Medina voltou ao tour da World Surf League na Indonésia, e estreou com vitória diante do australiano Callum Robson e do brasileiro Samuel Pupo.

O tricampeão da liga declarou que apesar de ter ficado fora dos 5 primeiros campeonatos do ano e de querer se divertir no retorno, a meta é se classificar para o WSL Finals e brigar pela conquista do 4º título.

Assim como ele, Italo Ferreira e Miguel Pupo já estão classificados para as oitavas de final.

GM - reprodução/Instagram - reprodução/Instagram
Gabriel Medina durante treino para a etapa de G-Land
Imagem: reprodução/Instagram

Filipe Toledo (líder do ranking), Yago Dora, Caio Ibelli, Jadson André e Samuel Pupo vão disputar a repescagem.

Na chave feminina, Tatiana Weston-Webb - única brasileira na elite do mundial - está nas quartas de final.

Veja quais serão os confrontos da repescagem, com direito a duelo brasileiro logo de cara:

heat 1: Filipe Toledo x Yago Dora

heat 2: Matthew McGillivray (AFS) x Caio Ibelli

heat 3: Jackson Baker (AUS) x Kanoa Igarashi (JPN)

heat 4: Connor O'Leary (AUS) x Jordy Smith (AFS)

heat 5: Jadson André x Barron Mamiya (HAV)

heat 6: Kelly Slater (EUA) x Samuel Pupo

heat 7: Jake Marshall (EUA) x Callum Robson (AUS)

heat 8: Kolohe Andino (EUA) x Nat Young (EUA)

O período da etapa de G-Land vai até o dia 6.

Em seguida, a WSL segue para El Salvador (de 20 a 20/6), Saquarema (23 a 30/6), África do Sul (21 a 21/7) e Tahiti (11 a 21/8).

Os 5 melhores dos rankings masculino e feminino disputam as finais da temporada em Trestles, na Califórnia, entre os dias 8 e 16 de setembro.

por @thiago_blum / @surf360_