;(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 divulga capa de novo álbum com novo nome e data de lançamento; veja

De Splash, em São Paulo

31/03/2022 15h04Atualizada em 01/04/2022 13h42

A cantora Anitta, de 29 anos, divulgou hoje nas suas redes sociais a capa do seu novo álbum. Inicialmente chamado "Girl From Rio", o projeto foi renomeado para "Versions Of Me" (Versões de mim, em tradução livre), para representar as várias versões da cantora, conforme comunicado.

Na arte, que teve direção criativa de Maxime Quoilin (que já trabalhou com Beyoncé, Jay-Z, Rihanna e Miley Cyrus, entre outros nomes), vemos seis imagens diferentes de Anitta, que demonstram sua versatilidade e poder de adaptação.

O nome do álbum, "Versions of Me", também dialoga com o mergulho nas várias facetas da artista carioca, que vive em constantes mudanças pessoais e artísticas. A fotografia é assinada por Jacob Webster.

foto 1 - Reprodução/ Twitter - Reprodução/ Twitter
Cantora falou no Twitter após divulgar capa do novo álbum
Imagem: Reprodução/ Twitter

"Tô quase desmaiando de sono aqui. Depois volto pra explicar a genialidade e estratégia por trás da capa do meu álbum pra quem não conseguiu acompanhar rss. Mas já amei que tá dando controvérsia. Objetivo 1 alcançado", escreveu a cantora no Twitter.

"Tive uma ideia melhor. Assim que eu acordar explico tudo lá no meu OnlyFans... assina lá pra entender que eu tô precisando pagar umas contas do Coachella", declarou aproveitando para divulgar sua conta na plataforma de conteúdo adultos.

Esse será o primeiro lançamento de Anitta pela Warner Records e estará disponível em todos os apps de música no dia 12 de abril, quatro dias antes da sua primeira apresentação no Coachella. Ao comemorar aniversário, ela já tinha falado sobre as "várias versões" dela com uma sequência de fotos.

foto 1 - Divulgação - Divulgação
Capa do novo álbum de Anitta
Imagem: Divulgação