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

Stalkeadas

Um olhar diferente sobre o que bomba nas redes sociais


Stalkeadas

O mundo tem um novo crush. E ele se chama Duque de Hastings

Regé-Jean Page, o "Duque de Hastings" em "Bridgerton" - Reprodução Instagram
Regé-Jean Page, o "Duque de Hastings" em "Bridgerton" Imagem: Reprodução Instagram

Júlia Flores

De Universa

04/01/2021 17h11

O mundo tem um novo crush. E ele se chama Regé-Jean Page. Protagonista da série mais popular do momento, o ator britânico conquistou uma legião de fãs pela atuação em "Bridgerton", da Netflix, e, em pouco tempo, seu personagem se tornou um dos favoritos de quem acompanha a produção.

Vamos combinar: não é difícil se apaixonar pelo "Duque de Hasting". Não bastasse a beleza, Regé é um artista com presença de cena, divertido, inteligente e encantador. A seguir, reunimos alguns motivos para você começar o ano com uma paixão platônica pelo mocinho de "Bridgerton".

Não é de hoje que ele rouba corações

Ok, tá tudo bem se você só conheceu o ator agora, mas não é de hoje que ele brilha nas telas da TV e do cinema. Regé-Jean Page já atuou em várias peças de teatro, filmes e séries - inclusive em "Roots", uma outra produção de época bem parecida com "Bridgerton". Dá uma olhadinha nessa thread pra conferir:

"Patrão" da coisa toda

Quando esse homem aparece em cena, não tem como segurar o suspiro. Haja presença de palco! Com 1,83 metro de altura, o mocinho de "Bridgerton" é imponente e já chegou a ser apontado por alguns tabloides americanos como o "homem líder" da próxima década. Uau...

Quenhé Christian Grey?

Digamos que "Bridgerton" é uma série "quente" e, como a internet não perdoa, já rolou até uma comparação entre ela e o filme "50 tons de cinza". Seria então Regé-Jean Page o novo Christian Grey? Em entrevista para a revista Variety, o ator brincou com a comparação e disse: "50 tons não, talvez 45". Para ele, "Bridgerton" é uma mistura de "Gossip Girls" e Jane Austen. Faz sentido!

Fã de café e de música

Regé contou detalhes dos bastidores de "Bridgerton" e, segundo o próprio artista revelou, duas coisas não faltavam nas gravações da série: café e música. "Um dos assuntos recorrentes no set era: 'Onde estão os AirPods de Regé? Regé perdeu seus AirPods. Regé está pirando porque não tem sua música'. Eu ouço música o tempo todo", contou. Ao ser questionado sobre o seu snack favorito, não teve dúvidas ao responder café.

Tem bom gosto para séries...

Advinha qual foi a última série que o ator viu - e gostou? A outra queridinha da Netflix "O Gambito da Rainha". Por aqui, em Universa, já falamos bastante sobre essa produção, clique para ler mais.

Encantador, charmoso, legal e...

Misterioso! Ele não fala muito sobre a vida pessoal, apesar de uma das perguntas mais associadas ao seu nome ser "quem é a namorada de Regé-Jean Page". A única coisa que sabemos é que ele desmentiu ter um romance com Phoebe Dynevor, atriz com quem contracena em "Bridgerton".

Same Energy

Para encerrar essa lista, deixamos aqui essa comparação... não é que lembra mesmo? Regé-Jean Page e Lewis Hamilton: dois crushes para chamar de seus em 2021.

Stalkeadas