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

Stalkeadas

Um olhar diferente sobre o que bomba nas redes sociais


Stalkeadas

Maju, Kamala, Conceição: menina de 8 anos recria fotos de ícones negras

A escritora Conceição Evaristo foi uma das homenageadas por Clara no Instagram - Reprodução
A escritora Conceição Evaristo foi uma das homenageadas por Clara no Instagram Imagem: Reprodução

De Universa

14/04/2021 04h00

É impossível ar pelo perfil do Instagram da pequena Clara Larchete, de 8 anos, e não abrir um sorriso. Desde o ano ado e com a ajuda da mãe, Daiane, Clara tem reproduzido fotos de mulheres ícones em diversas áreas. Entre as mais recentes homenageadas estão a escritora Conceição Evaristo, a primeira negra eleita deputada estadual no Brasil, Antonieta de Barros, e a líder quilombola Tereza de Benguela (foto abaixo).

.

As legendas sempre trazem uma breve explicação sobre a vida da mulher que ganha a homenagem. A mãe, Daiane, conta que a ideia surgiu de uma atividade escolar, em que Clara reproduziu uma foto da pintora Tarsila do Amaral. O resultado foi postado por Daiane no Instagram. "Não achava que ia ter tanto retorno positivo."

Mas essa também foi uma maneira encontrada pela mãe de Clara para falar com a filha sobre racismo e sobre não se deixar diminuir ao ouvir algum tipo de comentário preconceituoso.

Ideia surgiu após menina sofrer racismo

"Clara já sofreu racismo na escola. Na primeira vez, eu não estava preparada para aquilo, nunca imaginei que ela fosse ser discriminada", conta Daiane. "Chegou um momento que toda vez que eu a arrumava para ir para a aula, ela chorava. Se preocupava se o cabelo estava preso, não queria mais usá-lo solto. Aí contou que tinha um menino que falava que ela era feia, que cabelo era feio."

Em outro episódio, mais uma vez ouviu ofensas sobre seu cabelo vindo de uma colega de classe. "Uma menina na minha sala, mais escura do que eu, falava que quando minha mãe fazia penteados parecia um monte de lixo. Até que teve um dia que eu falei com a professora", conta Clara. A mãe relembra que, depois disso, a escola fez um projeto sobre racismo.

Em casa, Daiane viu na releitura de Tarsila do Amaral um método para ensinar a filha sobre grandes mulheres negras que foram atrás de seus sonhos. "É uma forma de dizer que ela pode ser o que ela quiser."

A brincadeira tem sido uma maneira de mostrar a Clara exemplos de mulheres em quem se inspirar. "Quando vê que mulheres saíram de lugares simples e conquistaram a própria voz, ela entende que também tem a sua força, independentemente do lugar em que esteja crescendo e onde esteja estudando", diz Daiane.

"A luta, para a mulher negra e para o homem negro, é muito mais difícil. Algumas pessoas julgam você incapaz pela cor da pele que você tem", afirma.

Animada com o projeto, Clara conta que há uma releitura em especial que gostaria de fazer. "A Ofélia. Ela é uma personagem preta do 'Quintal da Cultura' [vivida pela atriz Mafalda Pequenino] e quase todos os dias está com penteado diferente", diverte-se a garota.

"Acho essas homenagens muito legais porque estamos lembrando pessoas que mudaram nossa história, mulheres que lutaram pelos seus sonhos", diz Clara.

Stalkeadas