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

Olhar Olímpico

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.

Raulzinho pede dispensa e Marquinhos se aposenta da seleção de basquete

Raulzinho com a camisa do Philadelphia 76ers - New Jersey. Elsa/Getty Images/AFP
Raulzinho com a camisa do Philadelphia 76ers Imagem: New Jersey. Elsa/Getty Images/AFP

04/06/2021 18h10

O técnico Aleksandar Petrovic comemorou cedo demais não ter recebido mais nenhum pedido de dispensa da seleção brasileira masculina de basquete. Oito horas após uma postagem do treinador no Twitter, Raulzinho anunciou que não vai ao Pré-Olímpico por razões pessoais e, logo em seguida, Marquinhos revelou que está se aposentando da seleção.

"Desde o início conversei bastante com o coach, precisava ter algumas certezas antes de fazer parte do time e, agora a pouco, conversamos sobre a minha decisão. É hora de descansar um pouco depois de uma temporada muito puxada, estar com a família, continuar me cuidando, já que ainda vivemos uma pandemia e recuperar meu corpo", postou Marquinhos, que foi tricampeão consecutivo do NBB com o Flamengo e estaria negociando sua transferência para o São Paulo.

"Foram anos e anos vestindo a amarelinha, tendo a honra e o privilégio de representar nosso país nas principais competições internacionais e me aposento da seleção com o sentimento de que sempre me doei ao máximo para representar o Brasil da melhor forma", continuou.

Também hoje, a assessoria de imprensa de Raulzinho informou que "por motivos pessoais", o armador não poderá se apresentar à seleção brasileira para o período de preparação para a competição". A presença do jogador no Pré-Olímpico já era dúvida, porque o Washington Wizards tinha possibilidades de chegar longe nos playoffs da NBA, que não vão parar para o Pré-Olímpico.

Mas, com os Wizards eliminados pelos 76ers anteontem (2), a expectativa era que Raulzinho ficasse à disposição da seleção, o que não aconteceu. O armador vai virar agente livre e busca uma nova equipe para a próxima temporada.

Petrovic já havia pedido Didi e Gui Santos, também por causa da NBA. O primeiro fechou recentemente com o New Orleans Pelicans, enquanto o segundo treina para o Draft, que vai ocorrer durante a Olimpíada. Ambos anunciaram o pedido de dispensa após a publicação de uma primeira lista com 25 nomes. Agora, Marquinhos e Raulzinho saem depois da divulgação de uma lista menor, com 17.

O treinador, que havia dito que estava "profundamente magoado" com as dispensas de Didi e Gui Santos", tem outros quatro armadores à disposição: Georginho, Rafa Luza, Yago e Marcelinho Huertas. A tendência é que um deles seja cortado na lista final de 12 nomes. Para a ala, conta só com Alex Garcia e Léo Meindl.