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

Indicada ao Oscar, Beyoncé conquista honra inédita na carreira

Daniel Palomares

De Splash, em São Paulo

08/02/2022 11h53

A história já está sendo escrita com o anúncio dos indicados ao Oscar, que aconteceu na manhã de hoje. Beyoncé conquistou sua primeira nomeação da carreira ao prêmio, em "Melhor Canção Original", por "Be Alive", parte da trilha sonora do longa "King Richard".

A indicação ao Oscar vem como o último grande mérito que faltava à coleção de Beyoncé, vencedora de 28 Grammys, o prêmio máximo da música, e indicada oito vezes ao Emmy, a honra maior da televisão.

Quase lá

Esta não é a primeira vez que Beyoncé tenta uma vaga entre os indicados ao Oscar. Ela já ou perto de uma indicação em outros dois anos, mas acabou ficando de fora da corrida.

No Oscar de 2007, Beyoncé estrelou o musical "Dreamgirls", que emplacou três músicas entre os prêmios de "Canção Original", incluindo "Listen", que se tornou um dos clássicos de sua carreira. Apesar de ser uma das compositoras, ela não foi listada entre os indicados, uma vez que o Oscar só privilegiava os três que mais contribuíram para a música, regra já abandonada pela premiação.

hgtyjt - Reprodução / Instagram - Reprodução / Instagram
Beyoncé ou perto do Oscar com "O Rei Leão"
Imagem: Reprodução / Instagram

Disney no comando

No Oscar de 2020, Beyoncé teve mais uma chance de aparecer entre as nomeações quando compôs uma das únicas músicas originais da versão live-action de "O Rei Leão", a faixa "Spirit".

Mesmo sendo lembrada no Globo de Ouro e tendo nas costas o peso da Disney, vencedora de 14 Oscars de "Canção Original", a cantora também acabou de fora do prêmio.

Agora vai?

Neste ano, Beyoncé enfrenta competição pesada na categoria. "Dos Oruguitas", de Lin-Manuel Miranda, representa "Encanto", cuja trilha sonora é o álbum mais vendido nos EUA no último mês, e "No Time to Die", de Billie Eilish, é a aposta de "007 - Sem Tempo para Morrer", franquia que já venceu o Oscar duas vezes por músicas de Adele e Sam Smith.

A lenda da música Van Morrison — com "Down to Joy", de "Belfast" — e Diane Warren — com "Somehow You Do", do longa "Four Good Days" —, indicada pela 13ª vez sem nunca vencer , completam o time de indicados.

No dia 27 de março, descobriremos se Beyoncé vai precisar arranjar um espaço para o Oscar na estante.