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

Paulo Anshowinhas

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.

Skate, surfe e escalada estarão oficialmente nas Olimpíadas de Los Angeles

A skatista Sky Brown, (de capacete azul), que desenhou um dos emblemas das Olimpíadas de Los Angeles 2028 - Paulo Anshowinhas/ UOL Esporte
A skatista Sky Brown, (de capacete azul), que desenhou um dos emblemas das Olimpíadas de Los Angeles 2028 Imagem: Paulo Anshowinhas/ UOL Esporte

Colunista do UOL

03/02/2022 11h14

O Comitê Olímpico Internacional (COI) aprovou oficialmente nesta quarta-feira (3), a entrada do skate, surfe e escalada esportiva no programa inicial de esportes das Olimpíadas de Los Angeles, em 2028.

Os três esportes, que foram anunciados em dezembro, fizeram sua estreia nos últimos Jogos Olímpicos de Tóquio, mas não integrando programa inicial.

Eles se juntam a outras modalidades como esportes aquáticos, arco e flecha, atletismo, bton, basquete, canoagem, ciclismo, equitação, esgrima, golfe, ginástica, handball, hóquei, judô, remo, rugby, vela, tiro esportivo, futebol, taekwondo, tênis, tênis de mês, triatlo, vôlei e luta livre que também estão confirmados para 2028, totalizando 28 esportes.

"Os jogos de Los Angeles 2028 irão trazer mais frescor, energia da juventude e criatividade para os Jogos Olímpicos e para o movimento Paralímpico", disse o presidente da comissão dos Jogos de Los Angeles, Casey Wasserman ao site do Comitê Organizador dos Jogos de Los Angeles.

Emblema de skate das Olimpiadas - Reprodução Boardroom - Reprodução Boardroom
Emblema das Olimpiadas de Los Angeles 2028 criado pela skatista Sky Brown
Imagem: Reprodução Boardroom

"Los Angeles é um lugar diferente de todos os demais e será incrível hospedar surfe, skate e escalada esportiva, como modalidades da Costa Oeste entre os favoritos.", completou em nota.

Para celebrar a inclusão oficial desses esportes, o Comitê revelou três emblemas que irão compor os logos de Los Angeles 28, desenhados por três atletas olímpicos renomados da nova geração: a skatista britânica Sky Brown, a surfista americana Carissa Moore e o escalador Nathaniel Coleman.

emblema surf - Reprodução Boardroom - Reprodução Boardroom
Emblema das Olimpiadas de Los Angeles 2028 criado pela surfista Carrisa Moore
Imagem: Reprodução Boardroom

Sky disse que sua obra foi inspirada no seu pico favorito na Califórnia, a pista de skate de Venice Beach. A surfista pagou um tributo para sua cidade natal Honolulu, e Coleman, por sua vez, optou por formas geométricas para representar o seu esporte em lembrança das montanhas de sua cidade natal, Utah.

Emblema escalada - Reprodução Boardroom - Reprodução Boardroom
Emblema das Olimpiadas de Los Angeles 2028 criado pelo escalador Nathaniel Coleman
Imagem: Reprodução Boardroom

O programa oficial, em conjunto com o Comitê Olímpico Internacional será finalizado até dezembro de 2023 e poderá ainda incluir outras modalidades como boxe, pentatlo e levantamento de peso.