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

OPINIÃO

Tironi: Comemoração do Cano é simbólica, daqui 40 anos a gente vai lembrar

Do UOL, em São Paulo

29/06/2021 10h58

Devido ao Dia do Orgulho LGBTQIA+, clubes do futebol brasileiro se manifestaram ontem (28) nas redes sociais e alguns fizeram atos como os números das camisas de Flamengo e Fluminense, mas o que chamou mais a atenção foi o Vasco, que colocou mensagem em São Januário antes da partida com o Brusque, colocou as cores do arco-íris na faixa de sua camisa, além das bandeirinhas de escanteio, o que rendeu a comemoração de Germán Cano erguendo a bandeira contra a homofobia e a transfobia.

Em sua participação no programa UOL News Esporte, com Marcelo Hazan, Eduardo Tironi afirma que a imagem de Cano com a bandeira do arco-íris foi a mais simbólica do fim de semana de futebol e que ela ficará na história para ser lembrada dentro de algumas décadas.

"A gente falou de bastante coisa que aconteceu no Campeonato Brasileiro no fim de semana, mas para mim nenhuma delas é mais legal do que fez o Vasco e dessa foto. Essa foto é simbólica, daqui 30 anos, 40 anos, quando a gente falar 'você lembra quando tinha preconceito contra homossexuais, homofobia? Você lembra que o Vasco fez aquilo?'. Vai ser aquela foto histórica, vão mostrar essa foto do Cano com a bandeira LGBTQIA+", diz Tironi.

"Para mim isso foi a grande coisa do fim de semana indiscutivelmente e partindo do Vasco, que já tem uma história muito linda, muito interessante, muito corajosa na luta contra o racismo no século ado, começo do século ado, e agora faz de novo uma manifestação dessa natureza, corajosa, importante e necessária. Eu achei maravilhoso, achei emocionante, achei corajoso. Claro, os outros clubes também fizeram, alguns até meio atrasados, fizeram meio que 'deixa eu entrar aqui nesse negócio, porque está ficando ruim eu não entrar', mas o Vasco não, o Vasco foi com muita coragem e eu achei espetacular", completa.

Tironi afirma que o debate é necessário e cobra quer os clubes não fiquem apenas na manifestação devido à data, com postagem em redes sociais, mas que adotem uma postura contra o preconceito no dia a dia.

"Um debate necessário, corajoso e importante, que tem que ser naturalizado cada vez mais e que o Vasco mais uma vez sai na frente em um momento importante para o Vasco. O Vasco do ponto de vista esportivo está fragilizado, está na Série B, está tentando se reconstruir. Quando ele dá um sinal desse é um sinal de grandeza muito legal", diz Tironi.

"É muito legal o que o Vasco fez e é histórico, como eu falei, mas isso vale para o Vasco e vale para todo mundo, postar nas redes sociais não leva a nada, você vai fazer barulho por um dia e depois não vai mudar. Essa é uma luta contínua, que os clubes têm que tomar a frente disso no esporte, que os esportistas têm que tomar a frente disso no esporte. Postar na rede social quer dizer muito pouco, o seu dia a dia tem que ser um dia a dia contra o preconceito, é isso o que a gente tem que ficar de olho a partir de agora", conclui.