;(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 conta desafios para show do Super Bowl: '17 anos em 13 minutos'

Rihanna fará show do intervalo no Super Bowl 2023 - Mario Anzuoni/Reuters
Rihanna fará show do intervalo no Super Bowl 2023 Imagem: Mario Anzuoni/Reuters

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

12/02/2023 16h36Atualizada em 12/02/2023 16h58

Rihanna vai voltar aos palcos para cantar suas músicas após sete anos no show do intervalo do Super Bowl 2023, que acontece hoje, no intervalo da partida entre Philadelphia Eagles e Kansas City Chiefs no State Farm Stadium, em Glendale, Arizona, EUA. A apresentação deve ser vista por milhões de telespectadores em todo o mundo.

Durante coletiva de imprensa promovida nesta última semana para falar da grande apresentação de apenas 13 minutos, a cantora deu detalhes de seu show.

Para ela, o mais difícil foi fechar o setlist com as músicas escolhidas. "Decidir como maximizar 13 minutos, mas também comemorar. É assim que esse show vai ser. Vai ser uma celebração do meu catálogo [e carreira], da melhor maneira que poderíamos ter montado".

"Você só tem 13 minutos. Isso é um desafio. Amontoar 17 anos de trabalho em 13 minutos é difícil. Você sabe, algumas músicas que tivemos que perder por causa disso e vai ficar tudo bem, mas acho que fizemos um bom trabalho ao reduzi-lo", afirmou, de acordo com a CBS Sports.

Uma palavra que define os últimos meses para Rihanna é foco: "Estive tão focada no Super Bowl [que] esqueci totalmente que meu aniversário está chegando [em 20 de fevereiro]. Esqueci do Dia dos Namorados. É muita preparação, muitas partes movidas".

Trabalho imenso

Ela se impressiona com a quantidade de pessoas envolvidas para fazer o show acontecer.

"É literalmente 300 a 400 pessoas desmontando o palco, reconstruindo-o e terminando em oito minutos. É incrível. É quase impossível".

1 - Reprodução/ YouTube/ 9NEWS - Reprodução/ YouTube/ 9NEWS
Rihanna durante coletiva de imprensa para falar sobre sua apresentação no intervalo do Super Bowl 2023
Imagem: Reprodução/ YouTube/ 9NEWS

Em maio seu bebê com A$AP Rocky completa um ano de vida. Ela declarou que recebeu o convite para se apresentar no Super Bowl três meses após o nascimento do baby.

"Quando recebi a ligação para fazer isso de novo este ano, eu fiquei tipo 'Tem certeza? [?] Estou três meses após o parto, devo tomar decisões importantes como esta agora? Tipo, eu posso me arrepender disso'. Quando você se torna mãe, algo acontece", explica Rihanna sobre a decisão de aceitar o desafio.

Ela diz que a maternidade a fez sentir que pode conquistar o mundo e reconhece que o palco do Super Bowl é um dos maiores do mundo: "Então, por mais assustador que isso tenha sido [receber o convite], porque eu não estou no palco há sete anos, há algo emocionante sobre o desafio de tudo isso".

"Pra mim é importante fazer isso este ano. É importante para a apresentação [do que quero mostrar]. É importante para o meu filho ver isso [no futuro]", ressalta.

Natural de Barbados e sempre orgulhosa das suas origens, ela exalta sua ilha caribenha: "É importante fazer este show. [É sobre] Representação — representar para os imigrantes, representar para o meu país, Barbados, representar para as mulheres negras em todos lugares".

"Essa é a chave para as pessoas verem as possibilidades e estou honrada em estar aqui", afirmou.