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

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

Anitta ganhou VMA, dançou ao som do funk, rebolou a raba e fez história

Anitta faz história ao vencer primeiro prêmio no MTV VMA - Divulgação/Getty Images: Photo by Theo Wargo
Anitta faz história ao vencer primeiro prêmio no MTV VMA Imagem: Divulgação/Getty Images: Photo by Theo Wargo
Tamiris Coutinho

Colaboração para Universa

29/08/2022 15h23

"Ela prometeu: "Um dia vou fazer o funk ser respeitado em nosso país". Mas ela foi além. Anitta está fazendo o funk ser respeitado nos quatro cantos do mundo, por onde ela a, exaltando qualidade técnica e estética.

Desde o dia da promessa, foram muitos desafios, mas a patroa seguiu firme. Em todos momentos possíveis, ela estava lá evidenciando o funk e a cultura periférica do RJ nas diversas apresentações internacionais, como Rock in Rio Lisboa, Réveillon na Times Square, Coachella e agora VMA.

O VMA (Video Music Awards) é a premiação da MTV americana, um dos principais eventos de música do mundo. No red carpet, os artistas mais emblemáticos. Nas apresentações, os artistas de mais destaque do momento. Na plateia, os principais nomes da música internacional. Nas premiações, os principais ícones pop da atualidade.

E lá estava ela. Chegou desfilando em um longo vestido vermelho, o mesmo que ela vestia ao sair da plateia para receber o merecidíssimo prêmio de melhor clipe de música latina com "Envolver" - música que colocou nossa poderosa no Top 1 mundial do Spotify.

O look vermelho também foi a escolha para sua apresentação no palco do evento, onde ela nos envolveu com a batida do funk e lançou a braba "vocês pensaram que eu não ia rebolar minha bunda hoje?"

Enquanto parcela da sociedade ainda insiste em criminalizar o funk e seus representantes, seguimos ampliando os caminhos do movimento na empreitada do mercado da música nacional e internacional; na esfera acadêmica, em todos os lugares. Em hits de sucesso, performances icônicas e premiações; em livros, palestras e feiras literárias.

Pode até ser ousadia minha fazer essa "comparação" com a rainha, mas durante esse final de semana fizemos a mesma coisa: falamos sobre funk, cultura periférica, empoderamento feminino, representatividade, importância da dança e da manifestação dos nossos corpos.

Ela no VMA, eu em uma feira literária. Sim, o funk tem o poder de estar em todos os espaços; nós mulheres temos o poder de estar em todos os espaços; nós, mulheres funkeiras, temos o poder de estar em todos os espaços.

Assim vamos fazendo história."

*Tamiris Coutinho é autora de "Cai de boca no meu b*c3t@o: o funk como potência do empoderamento feminino". Mestranda do PPGCOM-UFF, graduada em Relações Públicas pela UERJ, formada em Música e Negócios pela PUC/RJ. Idealizadora do Coletivo Funk no Poder e da Braba Comunicação.