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

Marcel Rizzo

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.

Conmebol voltará a receber cartolas no sorteio dos grupos da Libertadores

Sorteio das fases preliminares da Libertadores e da Sul-Americana em dezembro contou apenas com pessoal da Conmebol - NORBERTO DUARTE/AFP
Sorteio das fases preliminares da Libertadores e da Sul-Americana em dezembro contou apenas com pessoal da Conmebol Imagem: NORBERTO DUARTE/AFP

Colunista do UOL

21/02/2023 10h59

O sorteio das fases de grupos da Libertadores e da Sul-Americana será em 22 de março e terá o retorno da presença de dirigentes dos clubes, algo que foi impedido nos últimos anos por causa da pandemia de covid-19. O evento ocorrerá na sede da Conmebol, em Luque, no Paraguai.

A última vez em que dirigentes estiveram no prédio da confederação sul-americana participando do sorteio foi em dezembro de 2019, para a edição 2020. A pandemia foi declarada em março de 2020 pela OMS (Organização Mundial da Saúde), o que limitou eventos públicos e atrasou o calendários das competições, principalmente em 2020 e 2021.

A participação da cartolagem muda o ritmo de um evento desse porte pelas reuniões que ocorrem na véspera e no dia do sorteio. Pedidos são feitos à direção da Conmebol, mas também há intensa movimentação entre os dirigentes de clubes.

Há alguns anos, por exemplo, foi durante um encontro na sede da entidade que alguns clubes iniciaram um processo de rebelião contra a confederação sul-americana, que teve até Diego Maradona e Romário como personagens em reunião na sede do Corinthians, em São Paulo, em setembro de 2013.

O movimento de criação de uma Liga Sul-Americana, que tinha os direitos comerciais e de transmissão dos eventos no continente como pano de fundo, não avançou, mas os valores pagos pela Conmebol de cota aos clubes aumentaram consideravelmente.

Seis clubes brasileiros estão classificados diretamente à fase de grupos da Libertadores e terão cartolas em Luque em março: Flamengo, Palmeiras, Corinthians, Fluminense, Inter e Athletico-PR. O Atlético-MG e o Fortaleza estão na etapa preliminar, chamada no Brasil de "pré" Libertadores, e podem se juntar aos demais. Os mineiros encaram na segunda fase o Carabobo, na Venezuela, e os cearenses o Deportivo Maldonado, do Uruguai, com os confrontos começando nesta semana.

Na Sul-Americana, São Paulo, Santos, Botafogo, Goiás, América-MG e Bragantino entram diretamente nos grupos. Os dois torneios terão essa fase com início em abril.