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

Chris Brown parabeniza ex-namorada Rihanna por nascimento do primeiro filho

Chris Brown parabenizou Rihanna após nascimento do primogênito da cantora - Reprodução/Instagram
Chris Brown parabenizou Rihanna após nascimento do primogênito da cantora Imagem: Reprodução/Instagram

Colaboração para Splash, no Rio de Janeiro

19/05/2022 16h52Atualizada em 19/05/2022 19h43

O cantor e rapper Chris Brown, de 33 anos, parabenizou sua ex-namorada Rihanna, cantora e empresária de 34 anos que, de acordo com o TMZ, deu à luz a um menino no dia 13 de maio, em Los Angeles, Estados Unidos.

No story do Instagram, o rapper a felicitou. "Parabéns", escreveu ele, que também colocou emojis de coração e de uma mulher negra grávida na imagem.

Chris Brown dá parabéns a Rihanna por nascimento de primogênito - Reprodução/Instagram - Reprodução/Instagram
Chris Brown dá parabéns a Rihanna por nascimento de primogênito
Imagem: Reprodução/Instagram

O bebê é fruto da relação de Rihanna com o também rapper A$AP Rocky. Os dois assumiram o relacionamento em maio de 2021 e anunciaram a gravidez em janeiro deste ano — depois de Rihanna negar boatos de gravidez.

Agressão

A cantora e Chris Brown namoraram entre 2007 e 2009 e 2012 e 2013, relação que foi marcada por uma agressão: o cantor a agrediu em 2009 e foi condenado a cinco anos em liberdade condicional e 180 horas de serviços comunitários.

Rihanna afirmou que os ataques começaram depois de uma briga sobre uma mensagem de texto que Chris Brown recebeu quando eles estavam dirigindo de volta para casa após uma festa.

Asap Rocky e Rihanna - Grosby Group - Grosby Group
6.fev.2013 - Rihanna e Chris Brown em audiência por agressão que a cantora sofreu do rapper em 2009
Imagem: Grosby Group

"Eu não podia aceitar que ele continuasse mentindo para mim. E ele não podia aceitar que eu não deixasse para lá. E foi feio", disse ela entrevista ao programa "Good Morning America" na época,

Ela confirmou informações da polícia de que o rapper a mordeu e a sufocou até ela ter problemas para respirar, e deu vários socos no olho. "Eu me defendi com meus pés. Mas não era como lutar um com o outro. Eu realmente só queria que ele parasse", disse ela.

"Eu estava sangrando. Estava inchada no rosto", disse ela. "Por isso, não havia jeito de eu ir para casa, a não ser que eu saísse do carro e andasse. Começar a andar usando um vestido de baile, com um rosto sangrando. Então, eu realmente não sei o que eu pretendia."

Dramas durante a gravidez

Rihanna e A$AP Rocky viveram alguns dramas durante a gravidez. Em abril, surgiram rumores de que Rocky teria traído a cantora com a designer de calçados Amina Muaddi. Depois disso, os dois foram vistos juntos em Barbados, onde ambos têm família.

Ainda nesse período, o rapper foi preso no aeroporto de Los Angeles, devido a um episódio que aconteceu em novembro de 2021. Na ocasião, houve um tiroteio e uma suposta vítima alegou que Rocky atirou nela três ou quatro vezes.

Asap Rocky e Rihanna - Jacopo M. Raule/Getty Images for Gucci - Jacopo M. Raule/Getty Images for Gucci
Asap Rocky e Rihanna
Imagem: Jacopo M. Raule/Getty Images for Gucci