;(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 comenta em foto de Maluma e fãs 'shippam': 'Casalzão'

Maluma e Anitta cantaram juntos durante participação no programa "Música Boa Ao Vivo", do Multishow - Reprodução/Multishow
Maluma e Anitta cantaram juntos durante participação no programa "Música Boa Ao Vivo", do Multishow Imagem: Reprodução/Multishow

Colaboração para Splash, em São Paulo

22/11/2021 08h10Atualizada em 22/11/2021 08h26

Anitta, 28 anos, deixou um comentário em uma postagem recente de Maluma, 27, nas redes sociais e acabou deixando os fãs animados. A funkeira e o cantor colombiano já gravaram juntos e mantém uma amizade próxima.

Na postagem, o artista apareceu ao lado de um cachorro e provocou na legenda: "Quem nos adota?". Entre as dezenas de comentários de seguidores, Anitta apareceu e se ofereceu: "Eu", disse ela, em espanhol.

Em uma página de notícias de famosos no Instagram, que repercutiu o comentário da cantora, muitos fãs voltaram a "shippar" um possível casal. "A Anitta combina com qualquer pessoa, incrível", disse um deles. "Um casalzão", imaginou outro. No entanto, alguns não viram nada demais no comentário da artista. "Só porque a mulher comentou 'yo' que já tão fazendo 'shipp'. Meu Deus", disse a seguidora.

Os dois já assumiram que "ficaram" no ado. Em janeiro, ao ser questionada por uma fã no Twitter, Anitta disse brincando que "Malunita" (junção de seu nome ao de Maluma) pode acontecer se ambos estiverem na mesma cidade.

No fim de semana, Anitta desembarcou no Brasil e não perdeu tempo: enquanto se arrumava para um de seus compromissos, a cantora deixou claro que já abriu vagas para "novos boys" durante sua curta temporada no país, antes de voltar aos Estados Unidos.

"Outra coisa que a gente também vai aproveitar que está no Brasil, que faz tempo que a gente não aproveita, é: bofes, boys. Então, já vamos abrir aí vagas, superlimitadas porque a promoção não vai durar muito tempo", disse a artista em seus stories no Instagram, sendo apoiada por sua equipe que brincou sobre o surgimento de uma "nova geração" de interesses amorosos de Anitta.