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

Eliana Alves Cruz

No mundo ideal

Martin Luther King Jr.  - Time & Life Pictures/Getty Image
Martin Luther King Jr. Imagem: Time & Life Pictures/Getty Image

14/07/2020 04h00

Receba os novos posts desta coluna no seu e-mail

Email inválido

Nestes dias pandêmicos angustiantes, me peguei pensando demais no famoso discurso "I have a dream", de Mr. Martin Luther King. A fala é poderosa e icônica não apenas pela beleza poética e um tanto utópica de mundo que ele imaginou, mas pelo atrevimento e ousadia em dizer em alta voz e para uma multidão que tinha um sonho, pois o direito a imaginar o futuro e planejá-lo também é recheado de privilégios.

No mundo ideal teríamos atletas, clubes, modalidades, entidades, mídia, enfim... todo o "planeta esporte" construído e consumido majoritariamente por homens, engajado ao máximo nas lutas contra os cancros que adoecem nossa sociedade. Teríamos atletas e suas caras e desejadas imagens falando incessantemente contra o racismo, os altíssimos índices de violência doméstica que subiram escandalosamente em 40% no período de quarentena, contra o feminicídio que ceifa vidas tão precocemente e uma maioria esmagadora de vidas femininas negras. Teríamos aquelas vozes poderosas pela mídia que atraem e os milhões de seguidores que ouvem tudo o que dizem indignadas pela falta de igualdade em toda parte a uma altura dessas do relógio.

Alguém imaginar um amanhã é, a princípio, ter a oportunidade de pensar que terá um ciclo de vida completo, que não terá sua existência interrompida, ceifada por episódios originados nas mazelas sociais geradas no seio de uma sociedade construída em bases coloniais escravocratas, misóginas, homofóbicas, transfóbicas, cheia de ódios de classe, etc. Gritar "eu tenho um sonho!" é perseguir sem descanso uma utopia, mas é exigir o direito à vida, ao bem-estar e à humanidade plena.

Posicionar-se frente àquele microfone para discursar na primeira pessoa e puxar para si a responsabilidade pelos próprios desejos foi o gesto mais corajoso e ousado que ele, o Reverendo Luther King, poderia ter. Um homem que, pelo respeito que gera, tem sempre o "Mr.", ou seja, "Senhor, na frente do nome, mas era um jovem que morreu assassinado aos 38 anos e que marchou ao lado de artistas, atletas, políticos, religiosos, pessoas públicas e anônimas. Gente que não teve medo de se enfileirar do lado certo da história.

Ousar dizer "tenho um sonho" sabendo que não viverá para vê-lo realizado é ter muita fé em quem vem depois. É como estar numa corrida de revezamento, ar o bastão e ficar na beira da pista torcendo pelo companheiro de equipe. Na beira da pista está "Mr. King", mas estão também os brasileiríssimos Luiz Gama, André e Antônio Rebouças, Lélia Gonzales, Luiza Barrios, Oliveira da Silveira, Abdias Nascimento, Milton Santos, Beatriz Nascimento, nossos próprios pais, mães, avós... Uma multidão!

A corrida está acontecendo. Ela tão cedo não cessa e nas raias estamos nós, os que aqui estamos em 2020 em nossas casas assistindo a partida de futebol, a corrida de Fórmula Um, ao jogo de tênis degustando uma bebida... e talvez também com alguém humilhado e, literalmente, ferido ao lado. Não decepcionemos a nossa torcida mais que especial de anteados que atentos acompanham nossa performance, mas principalmente a quem está no aquecimento, que são as gerações futuras.

Neste século 21 ainda de tantas injustiças e brutalidades podemos ver, felizmente, muita gente do mundo esportivo que está engajada e preocupada com a mudança, mas ainda falta. Falta a unanimidade porque, afinal, "we have a dream".

Que sonho de mundo você tem para os que virão depois?