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

Coluna

Campo Livre


Campo Livre

OPINIÃO

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

Trikas ou tricolor, São Paulo precisa reagir a ameaças de organizada

Parte da torcida do São Paulo no Morumbi para acompanhar o jogo contra o Athletico-PR - Ettore Chiereguini/AGIF
Parte da torcida do São Paulo no Morumbi para acompanhar o jogo contra o Athletico-PR Imagem: Ettore Chiereguini/AGIF

Pedro Lopes

Editor assistente do UOL Esporte

21/01/2022 19h34

O que começou como uma brincadeira inocente e uma tentativa de dialogar com são-paulinos jovens nas redes sociais terminou em ameaças de violência. O São Paulo ousou ao usar o termo "trikas" para falar de si próprio ao anunciar Nikão, reforço de peso. Alguns se divertiram com a brincadeira, outros a detestaram. A reação mais grave, entretanto, veio da Torcida Independente, principal organizada do São Paulo.

Em nota divulgada em suas redes, a Independente ameaça abertamente torcedores que ousarem utilizar o termo no Morumbi. "Não tentem a sorte. Para sua trika não virar zika pro seu lado. Estamos avisando numa boa, para ninguém dizer que não sabia depois". O "documento" ainda aproveita para excluir da torcida os são paulinos que utilizem brincos, alargadores de orelha ou tinjam os cabelos. Termina ameaçando o departamento de comunicação do clube: "nossa instituição trimundial não permite palhaçada. Perfeito?".

Ao contrário do "trikas", a ameaça de violência contra torcedores pagantes - e assim, clientes - do São Paulo, em eventos organizados e de mando do São Paulo, no estádio de propriedade do São Paulo não é uma brincadeira. É grave. Igualmente grave, neste contexto, é o silêncio do clube diante das ameaças.

Nos últimos anos, a escassez dos títulos que marcam a história do São Paulo empurrou o clube para uma relação conturbada com seus torcedores. Nesse período, nomes ligados a organizadas protagonizaram incidentes graves, primeiro com uma invasão em massa ao Centro de treinamento da Barra Funda, em 2016, depois com o ataque ao ônibus da delegação são-paulina no ano ado. Na ocasião, foram utilizadas bombas recheadas com pregos que, na avaliação da Polícia Militar, poderiam ter causado lesões graves ou mortes em jogadores.

Na nota divulgada hoje, a torcida diz ao torcedor comum como ele deve torcer, se vestir e estilizar o cabelo se quiser ser torcedor. O torcedor que paga seu ingresso ao São Paulo, que integra o programa de sócio torcedor do São Paulo, que frequenta a casa do São Paulo. Em um momento como esse, quem, se não o São Paulo, deve defendê-lo, garantir sua liberdade?

Nenhum apaixonado por futebol no Brasil vai relativizar a importância da torcida nas arquibancadas. É um elemento fundamental para que o esporte seja a paixão que é no país. Isto posto, colocar limites à ação das torcidas organizadas não seria algo inédito por aqui. Em 2013, na presidência do Palmeiras, Paulo Nobre, cortou relações com a Mancha. Os palmeirenses que integram a torcida seguiram palmeirenses, fanáticos. De lá para cá, o Allianz Parque se consolidou como um estádio extremamente incômodo para os adversários.

Tradicionalmente, esses limites têm sido poucos visíveis no São Paulo. No começo do ano ado, um documento criou no clube várias comissões. Em uma delas, em cargo - não remunerado, é verdade - estava um conhecido líder de torcida, que participou da invasão do CT em 2016.

Por tudo isso, pelo seu tamanho histórico, pela sua estrutura profissional e pelo cuidado com seus milhões de torcedores não filiados a torcida e que frequentam ou almejam frequentar o Morumbi, o São Paulo deveria se posicionar. O silêncio, se prolongado, vira argumento para empurrar a comunidade são-paulina a conclusões incômodas.

Campo Livre