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

Rihanna relembra quando conheceu A$AP Rocky: 'Agarrou minha bunda no palco'

Em entrevista à Vogue, Rihanna comenta sobre seu relacionamento, gravidez e o novo álbum - Getty Images
Em entrevista à Vogue, Rihanna comenta sobre seu relacionamento, gravidez e o novo álbum Imagem: Getty Images

De Splash, em São Paulo

12/04/2022 10h53

O relacionamento de Rihanna e A$AP Rocky pode parecer recente, mas os futuros pais são amigos há dez anos! Em entrevista à revista Vogue, a cantora relembra o dia em que conheceu o rapper: eles se juntaram no palco do VMA 2012 para cantar a música "Cockiness", e Rocky saiu do roteiro.

"Ele agarrou a minha bunda no palco. Isso não estava ensaiado! Eu fiquei tipo: 'O que você está fazendo?'", conta Rihanna. Ela diz que, para a surpresa de sua equipe, não quis brigar com o artista: "Meu empresário ficou tipo: nossa, ela deve gostar pelo menos um pouco desse cara. Ela nunca deixaria essa m*rda ar batida".

Rihanna conta que demorou para dar uma chance a A$AP Rocky: "Não é fácil sair da 'friend zone' comigo. E eu certamente demorei para superar o quanto eu o conheço e o quanto ele me conhece, porque também sabemos como podemos causar problemas um para o outro".

O relacionamento ficou mais sério durante a pandemia, quando os dois fizeram uma viagem pelos Estados Unidos sozinhos num ônibus de turnê. "Eu amo as coisas simples, mas também as grandes aventuras. Não tem essa baboseira pedante de 'minha marca, sua marca'. Somos só nós dois, vivendo".

Gravidez

Rihanna - Reprodução/Instagram/@diggzy - Reprodução/Instagram/@diggzy
Rihanna tem uma regra para seus looks de maternidade: se ela não usaria antes da gravidez, não vai usar agora
Imagem: Reprodução/Instagram/@diggzy

Na entrevista, Rihanna também divulga detalhes raros de sua gravidez. Ela comenta os looks nada convencionais que escolheu para exibir seu barrigão:

Espero que tenhamos conseguido redefinir o que é considerado 'decente' para mulheres grávidas. Meu corpo está fazendo coisas incríveis neste momento, não vou sentir vergonha disso. Este momento deveria ser de comemoração. Por que você deveria esconder sua gravidez?

Ela afirma que não se sente diferente antes e depois da gravidez: "Eu esperava alguma mudança mágica, mas na verdade continuo sendo eu mesma. Nada se diminuiu".

Rihanna tem medo de ter depressão pós-parto, e conta que ficou com medo de ser julgada por não querer fazer um chá de revelação do gênero do bebê: "Eu perguntei para o meu médico: tem algo errado comigo por não querer isso? As pessoas não param de me perguntar. Será que sou uma mãe ruim?"

Álbum

Os fãs já podem renovar sua fé: Rihanna afirma que, mesmo em meio a tantas mudanças em sua vida, está trabalhando no próximo álbum. Seu último trabalho na música foi o "Anti", lançado em 2016 — para a cantora, esse é o melhor álbum que já lançou.

Ela tenta não pensar na dificuldade de superar o próprio trabalho: "Eu estou olhando o meu próximo projeto de uma forma completamente diferente de como eu costumava planejá-lo. Eu acho que esse jeito funciona bem melhor para mim".

"É autêntico, vai ser divertido para mim, e reduz bastante a pressão", conclui Rihanna.