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

Anitta bate recorde no Spotify e comemora: 'Feliz e grata. Para sempre'

Anitta e o dançarino Ayoub em cena de "Envolver" - Reprodução/Instagram
Anitta e o dançarino Ayoub em cena de "Envolver" Imagem: Reprodução/Instagram

De Splash, em São Paulo

19/03/2022 16h09Atualizada em 21/03/2022 13h37

O mundo está envolvido! Depois de entrar para o TOP 50 do Spotify, a cantora Anitta chegou ao topo do ranking, ocupando a 9ª posição na tarde de hoje com a música "Envolver", lançada há quatro meses. A canção tem, até esta tarde, mais de 2,5 milhões de streams. Com essa marca, a artista se torna a primeira brasileira a estar entre as dez músicas mais ouvidas do mundo da plataforma de streaming.

No sábado ado (12), a música já estava na 48ª colocação, uma conquista que vem logo após o sucesso dos vídeos de challenge promovidos no TikTok - o que impulsionou ainda mais a performance da faixa. A dança ficou conhecida nos países vizinhos como "El Paso de Anitta" (o o de Anitta, em tradução livre) e gerou vídeos de diversas partes do mundo.

A cantora se pronunciou por uma postagem feita em seu Instagram:

"Hoje acordei com muita ressaca e vi meu celular estourando com mais mensagens do que quando é natal. Eu mesma não sou de paradas e números porque sei o quão difícil é o desafio que decidi enfrentar na minha vida. Cantar em tantas línguas, começar tudo de novo do zero depois que eu já tinha ado por todo o processo de ser grande no meu enorme país. Tentar quebrar as regras e os muros para mostrar ao meu país que não é IMPOSSÍVEL para os brasileiros (como estamos muito acostumados a ouvir)", declarou a cantora.

Anitta continuou. "Quer dizer, é muito. Leva tempo, paciência, persistência. Os gráficos e os números podem nos fazer sentir como se estivéssemos perdendo, mesmo quando não estamos. Mas dessa vez eu sinto que se eu não falasse sobre isso, os brasileiros iriam me matar porque eles estão transformando esse dia em feriado por lá", brincou a cantora.

Estou feliz e grata por estarmos no top 10 do mundo. Se eu conseguir isso de novo, ficarei feliz. Se não, ainda estarei feliz da mesma forma. Para sempre."

Nas redes sociais, fãs e amigos da cantora celebraram o feito, tornando o nome dela um dos assuntos mais comentados do Twitter nesta tarde.

Anitta fez o lançamento da canção em novembro ado como grande aposta para ganhar espaço no mercado latino. "Essa música estava guardadinha e resolvi lançar com foco no mercado latino, mas tenho certeza que todos vão curtir", revelou Anitta, em comunicado enviado à imprensa na época do lançamento da canção.

A canção foi escrita por Anitta, Julio Gonzales Tavarez, Freddy Montalvo, José Carlos Cruz e produzida por Jean Rodriguez e Lenny Tavares. Já o videoclipe foi dirigido pela cantora e contou com produção de Harold Jimenez.

Ela já havia alcançado o TOP 50 do Spotify anteriormente com as músicas "Downtown" e "Vai Malandra", em 2017.