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

Basquete em crise: CBB convoca assembleia para tirar chancela do NBB

Guy Peixoto, presidente da CBB - Divulgação/CBB
Guy Peixoto, presidente da CBB Imagem: Divulgação/CBB

10/09/2022 14h48

Enquanto a seleção masculina busca o título da Copa América em Recife (PE), uma briga por poder atinge os bastidores do basquete brasileiro. Neste sábado (10), poucas horas antes da semifinal contra o Canadá, a Confederação Brasileira de Basquete (CBB) convocou assembleia para tirar a chancela do NBB.

Na prática, a confederação quer impedir que os clubes, que pagam os salários da maior parte dos jogadores da seleção brasileira, continuem organizando o campeonato nacional, rompendo unilateralmente um termo de compromisso ratificado pelo atual presidente da CBB, Guy Peixoto, e válido por prazo indeterminado.

O NBB é o campeonato brasileiro de basquete desde 2009, um ano depois de a LNB ser fundada. Na época, a CBB não conseguia organizar um torneio nacional, a ponto de a edição de 2006 não ser finalizada. Desde então, o NBB é considerado um sucesso.

Mas, desde que chegou à presidência da CBB, em 2017, Guy Peixoto vem demonstrando incômodo com o fato de a confederação não comandar o campeonato nacional. Ele chegou a ratificar o contrato assinado em 2009, mas em diversas vezes bateu de frente com a LNB.

Agora a briga chegou a um novo patamar depois que a CBB conseguiu junto à Fiba uma vaga a mais para o Brasil na Liga Sul-Americana (equivalente à Copa Sul-Americana do futebol) e indicou o time campeão da segunda divisão nacional, torneio agora organizado por ela.

A LNB apontou que isso fere o contrato entre as partes, que diz que o NBB é o único campeonato nacional classificatório para torneios internacionais, e entrou na Justiça contra a CBB. E a confederação usa isso como argumento para convocar a assembleia.

"A CBB se encontra em franco processo de reestruturação e recuperação de sua credibilidade, reunindo plenas condições para a direção, promoção, organização e realização de todos os campeonatos nacionais de basquete na categoria adulta", diz a nota que convoca a assembleia. A CBB, porém, não cita capacidade de organizar um torneio feminino, que também tem organização terceirizada, para a Liga de Basquete Feminino (LBF).

Na mesma nota, a CBB argumenta que a LNB vem "reiteradamente desrespeitando suas obrigações e deveres previstos no termo de compromissos e aditivos, bom como descumprindo seus deveres e obrigações estatutárias enquanto membro da CBB". A nota cita apenas um dever supostamente não cumprido: o respeito ao STJD do basquete como justiça desportiva do NBB.

A CBB conclui que o "modela (sic) atual" prejudica o pleno desenvolvimento do basquete brasileiro, sem detalhar as razões, convocando a assembleia para 14 de outubro, em Brasília.

O Olhar Olímpico procurou a LNB, que desconhecia a convocação e pediu tempo para analisar a novidade. A CBB não respondeu o contato. Tão logo as duas entidades comentem a notícia, este texto será atualizado.