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

Gabriel Santana quer 'ver o que faz sentido' com Bruna fora do BBB 23

BBB 23: Gabriel Santana e Bruna Griphao em festa  - Reprodução/Globoplay
BBB 23: Gabriel Santana e Bruna Griphao em festa Imagem: Reprodução/Globoplay

Bruna Calazans

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

24/04/2023 07h19Atualizada em 24/04/2023 07h19

Gabriel Santana deixou o BBB 23 (Globo) sendo elogiado por Tadeu Schmidt por ter desconstruído a masculinidade tóxica no programa.

Em entrevista a Splash, ele conta que isso não estava em seus planos. "Em nenhum momento pensei que eu iria virar referência em como um homem deveria agir", contou.

Uma das cenas que chamou a atenção do público foi em uma festa, em que Gabriel disse que estava com vontade de beijar Bruna Griphao, mas desistiu após a sister dizer que estava bêbada. "Não cheguei lá querendo desconstruir a masculinidade de outros garotos, mas que bom que a minha sociedade pode servir de exemplo".

Dentro do reality, Gabriel chegou a se declarar para Bruna. Ele disse estar gostando da atriz. "Eu não estou criando nenhuma expectativa em cima de nada que eu vivi lá dentro. As pessoas que estão lá dentro, estão vivendo outra realidade", opinou.

Ele ainda contou não saber como a cabeça da Bruna está em relação a tudo que eles viveram, e por isso não está se privando de viver a vida fora do game.

"Acho que quando ela sair a gente pode ver o que faz e o que não faz sentido" Gabriel Santana

Ele também 'se envolveu' com Fred Nicácio

Ainda no início do reality, Gabriel chegou a trocar beijos com Fred Nicácio, que é casado e vive um relacionamento aberto.

Depois do retorno do brother para a casa, eles trocaram algumas farpas e tentaram resolver a relação. "Para mim, todas as desavenças que eu tive com ele, eu nunca tive receio de falar com ele. Me sinto em paz. As coisas que me incomodavam nele, eu cheguei e falei com com ele", disse.

Gabriel disse não saber como será o reencontro dele com Fred, mas quer manter contato com todos. "Só quando todo mundo estiver aqui fora que vamos saber como as relações vão se construir".

ENQUETE UOL BBB 23: Qual foi o melhor beijo da edição?

Resultado parcial

Total de 294 votos
3,40%
Reprodução/Globoplay