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

Rodolfo Rodrigues

OPINIÃO

Texto em que o autor apresenta e defende suas ideias e opiniões, a partir da interpretação de fatos e dados.

Obrigado, Pelé! O futebol brasileiro não seria o mesmo sem você

Pelé em ação pelo Santos em 1968 - Wally McNamee/CORBIS/Corbis via Getty Images
Pelé em ação pelo Santos em 1968 Imagem: Wally McNamee/CORBIS/Corbis via Getty Images

Colunista do UOL

29/12/2022 16h20

Infelizmente chegou nesta quinta (29) a notícia que nenhum brasileiro gostaria de ver: a morte de Pelé. Aos 82 anos, Edson Arantes do Nascimento não resistiu a complicações de um câncer no cólon e morreu em decorrência de falência múltipla dos órgãos, para tristeza do futebol.

O Rei do Futebol, justamente o único jogador da história do futebol a ganhar três vezes a Copa do Mundo, foi o maior de sua época e, para muitos, inclusive este colunista, o maior da história do esporte.

Não só pelos números, mas por tudo aquilo que representou para o futebol. Especialmente o brasileiro. Pelé surgiu como um fenômeno, bateu todos os recordes possíveis, conquistou títulos mundiais pelo Santos e pela seleção brasileira, exibindo um futebol jamais visto, completo em todos os fundamentos.

Pelé marcou 1283 gols. É o maior artilheiro da história do futebol. Fez 127 em um único ano (1959). Ganhou 25 títulos oficiais pelo Santos, três Copas do Mundo pela seleção brasileira, foi 18 vezes artilheiro (9 seguidas do Paulistão).

Exímio finalizador, Pelé encantou o mundo também com sua eficiência, seus dribles, seus lançamentos, sua capacidade de improvisar. Era um atleta completo. Sabia cabecear, bater falta, chutar com as duas pernas. Enfim, incomparável.

Pelé fez torcedores de outros clubes aplaudirem o Santos pelo mundo todo. Foi capaz de lotar o Maracanã em finais do Mundial Interclubes. Fez os portugueses o ovacionar em pleno Estádio da Luz, numa goleada incrível do Santos sobre o Benfica, de Eusébio, aquele que era considerado um dos melhores jogadores da Europa na época.

Pelé virou um mito e ou a ser conhecido no mundo todo. Pelé levou e elevou o nome do Santos e do futebol brasileiro por todo planeta. Algo impensável para aquela época, sem internet.

Há quem diga que Maradona foi melhor que o Rei com sua habilidade e seus dribles desconcertantes. Ou que Messi seja mais completo por ter feito mais gols em jogos oficiais e conquistado tantos títulos importantes pelo Barcelona. Mas foram jogadores de épocas distintas. Entendo as comparações, mas fico com Pelé e sua genialidade sempre.

Descanse em paz, Pelé. E muito obrigado por tudo o que você fez para o futebol.

Siga Rodolfo Rodrigues no Instagram

Siga Rodolfo Rodrigues no Twitter