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

Jurema Werneck: Voz branca deve ser cada vez mais ativa no antirracismo

Do UOL, em São Paulo

11/06/2020 15h50Atualizada em 11/06/2020 22h31

Brancos podem colaborar com a luta antirracista falando a partir do seu próprio lugar, defendeu hoje Jurema Werneck, diretora da Anistia Internacional no Brasil, em participação no programa UOL Entrevista.

"Não é falar por nós, usar de seus privilégios. Mas falar como branco, entre brancos é fundamental", afirmou ela ao colunista do UOL, Leonardo Sakamoto, e à repórter Paula Rodrigues.

A diretora afirmou que o racismo permeia as relações cotidianas e faz com que a voz de negros seja menos escutada em algumas camadas. Werneck disse ainda que há estudos que apontam que a voz do branco antirracista tem um efeito importante nessas esferas.

Há um lugar de fala para o branco no antirracismo, que não pode ser o meu, o de uma pessoa negra. Mas há lugar para todo mundo, porque não existe antirracismo só por uma parte da sociedade. Tem um lugar para o branco no antirracismo. É preciso que esta voz branca seja cada vez mais ativa.

Werneck é médica e doutora em comunicação e cultura pela Universidade Federal do Rio de Janeiro (UFRJ). Na entrevista, disse que brancos escutam outros brancos se expressando de maneira racista dentro de seus próprios grupos, de uma maneira que ela, como mulher negra, pode não ouvir. "O branco antirracista deve falar que não é esta pessoa, e que as outras não devem ser [racistas], denunciar", defendeu.

Luta antirracista no campo profissional

Outra frente de ação concreta para os brancos, argumentou, é a participação em movimentos e levantar debates públicos sobre o tema.

"Muitos são jornalistas, por exemplo, há um debate sobre quem são as fontes destes jornalistas. Outros são da área da saúde, e todos sabem como a discriminação acontece diariamente no sistema de saúde, então é hora de interromper ali. Outros são políticos, empresários? Então há muito que as pessoas podem fazer. Além de recusar a carteirinha de clube dos racistas, é preciso agir ativamente para tirar o racismo do seu lugar."

Espaço ao negro na posição de especialista

O racismo nas manchetes tem levantado discussões também sobre quem analisa a luta antirracismo. No começo do mês, por exemplo, o canal GloboNews foi criticado nas redes sociais por escalar seis comentaristas brancos, entre homens e mulheres, para debater as manifestações em reação à morte de George Floyd nos Estados Unidos. No dia seguinte, a bancada foi formada apenas por profissionais negros.

"Os especialistas são gente de estudo e que têm algo a dizer, então é bom que estejam sendo convidados a falar, a mostrar o que têm a contribuir. Mas é preciso que não seja só agora", pontua Werneck. "Se há canais que só descobriram agora que negros têm voz, é preciso que [o espaço] seja permanente, que não acabe quando as ruas esvaziarem, precisamos garantir isso", afirma.

Na visão da diretora da Anistia Internacional no Brasil, as manifestações são apenas um dos mecanismos do enfrentamento ao racismo.

"É preciso atualizar estes mecanismos todos os dias, porque o racismo tem a capacidade de se refazer. Precisamos continuar permanentemente engajados: todo o mundo já sabe que o racismo existe e produz violências sem tamanho, portanto ninguém tem desculpa para se eximir desta luta. Ninguém", diz Werneck.

Participaram desta cobertura Arthur Sandes, Gabriela Sá Pessoa (redação) e Diego Henrique de Carvalho (produção).