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

Netflix divulga as primeiras imagens da 2ª temporada de 'Bridgerton'

Bridgerton 2ª temporada - Divulgação/Netflix
Bridgerton 2ª temporada Imagem: Divulgação/Netflix

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

19/01/2022 15h40

A Netflix divulgou hoje as primeiras imagens da segunda temporada de "Bridgerton", série de Shonda Rhimes exibida na Netflix. A nova fase da trama chegará em 25 de março no streaming.

Anthony (Jonathan Bailey), líder da família Bridgerton, está em busca de uma pretendente que atenda aos padrões da sociedade. É neste momento que Kate (Simone Ashley) e sua irmã mais nova Edwina (Charithra Chandran) chegam da Índia.

Ao cortejar Edwina, Anthony encontra um empecilho: Kate. A irmã da jovem faz de tudo para impedir a união, já que descobre que o Lord não quer se casar por amor, e sim, por status.

Seguem ainda, no elenco, Adjoa Andoh (Lady Danbury), Lorraine Ashbourne (Mrs. Varley), Harriet Cains (Philipa Featherington), Bessie Carter (Prudence Featherington), Shelley Conn (Mary Sharma), Nicola Coughlan (Penelope Featherington), Phoebe Dynevor (Daphne Basset), Ruth Gemmell (Violet Bridgerton), Polly Walker (Portia Featherington), Rupert Young (Jack) e Julie Andrews (Lady Whistledown), entre outros.

Confira as imagens:

1. Bridgerton 2ª temporada - Divulgação/Netflix - Divulgação/Netflix
Imagem: Divulgação/Netflix

2. Bridgerton 2ª temporada - Divulgação/Netflix - Divulgação/Netflix
Imagem: Divulgação/Netflix

3. Bridgerton 2ª temporada - Divulgação/Netflix - Divulgação/Netflix
Imagem: Divulgação/Netflix

4. Bridgerton 2ª temporada - Divulgação/Netflix - Divulgação/Netflix
Imagem: Divulgação/Netflix

5. Bridgerton 2ª temporada - Divulgação/Netflix - Divulgação/Netflix
Imagem: Divulgação/Netflix

6. Bridgerton 2ª temporada - Divulgação/Netflix - Divulgação/Netflix
Imagem: Divulgação/Netflix

7. Bridgerton 2ª temporada - Divulgação/Netflix - Divulgação/Netflix
Imagem: Divulgação/Netflix