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

Jessi explica por que não vai se aliar a DG: 'Não posso me opor'

BBB 22: Jessilane teve DR com Douglas durante a madrugada - Reprodução/Globoplay
BBB 22: Jessilane teve DR com Douglas durante a madrugada Imagem: Reprodução/Globoplay

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

22/02/2022 04h23

Enquanto Natália e Arthur discutiram durante esta madrugada no "BBB 22" (TV Globo), Douglas Silva optou por fazer o caminho inverso. Após o fim do jogo da discórdia, o ator de "Cidade de Deus" buscou selar as pazes com Laís e Jessilane.

Relembrando a última formação de paredão, o brother iniciou seu entendimento com a bióloga. "A única coisa, ao meu ver, que rolou e eu expliquei lá no quarto, foi sobre a gente se juntar. Não era só pra te proteger, era pra proteger o grupo, tanto que não dei nomes e ninguém deu nomes. Daí, as pessoas tiram conclusão. Eu não posso mandar na conclusão que a pessoa tira", disse.

Continuou: "Isso já está chato pra mim. Você tem sua vida aqui e eu tenho a minha. O que estou colocando no meu coração é jogo. Alia quem quiser e quem não quiser tudo bem. Eu continuo batendo na tecla, não com você, mas com a gente, porque a porrad* vem quando cair um ou dois já era".

Em seguida, Jessilane explicou por que se enxerga na mira dos brothers da "Disney". "O P.A veio em mim no jogo da discórdia como se só eu tivesse mandado ele pro paredão. Só que quando eu fui, um dos votos era dele", relembrou a participante sobre a reação do brother durante a dinâmica da última segunda-feira.

"É que pareceu que o seu voto foi o de minerva. Lá no quarto, o Gustavo disse teu nome e eu falei que não votava", explicou Douglas.

Alguns minutos depois, a bióloga pontuou sobre o tipo de relação que gostaria de cultivar com os demais confinados. "Eu quero ter uma relação saudável, mas sem responsabilidade moral, porque não posso pensar contrário a você porque te devo", explicou.

Durante a conversa, ela também pontuou os motivos pelos quais não tem interesse de se juntar ao grupo.

"Paulo nunca foi minha prioridade, Scooby não é minha prioridade e muito menos Arthur. Não acho justo me articular com essas pessoas e votar", explicou. Continuou: "Eu penso dessa forma. Eu prefiro me apegar nas pessoas que eu acredito que não vão votar em mim", finalizou.

Quem você quer eliminar do 'BBB 22'?

Enquete encerrada

Total de 223788 votos
67,28%
Reprodução/Instagram @bbb