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

Luísa Sonza se assume bissexual após beijão em Carol Biazin

Luísa Sonza e Carol Biazin no clipe "Tentação" - Reprodução/Instagram
Luísa Sonza e Carol Biazin no clipe "Tentação" Imagem: Reprodução/Instagram

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

07/05/2021 08h04

Na noite de ontem, foi lançado o novo clipe de Luíza Sonza, em parceria com Carol Biazin. Trata-se de "Tentação". As gravações trazem cenas bem quentes entre as duas cantoras, com direito a beijão de cinema e tudo!

Após o clipe ter mais de 500 mil vizualizações em poucas horas, Sonza recorreu ao seu Twitter para se assumir bissexual. Ela agradeceu Carol por ajudá-la a se "libertar" por meio da arte:

"Obrigada, Carol Biazin e Day Limns, por me darem tanta coragem! Amo vocês! Vocês sabem da importância que vocês tem pra mim!", iniciou Luísa.

"Pra quem queria saber, sim, sou", continuou ela.

"Pra falar sobre, por mais que muita gente já sabia e algumas coisas já vazaram... Quero falar mais a fundo sobre esse assunto da minha vida quando eu me sentir mais confortável e preparada pra isso tudo. Mas MUITO obrigada pelo carinho e apoio que vocês estão tão tendo".

Apesar de ter aberto o jogo com os fãs, Sonza disse que ainda não está 100% pronta para falar sobre o assunto, porém, está muito feliz por ter dado o primeiro o:

"Isso é realmente algo essencial é muito importante pra mim. Mas repito, é um assunto muito delicado e quero ter muita calma pra falar tudo no tempo certo. Mas tô muito feliz e principalmente ALIVIADA. Amo vocês".

"Dá um alívio ver o carinho que vocês estão tendo comigo... Há tive tanto medo (ok, tenho um pouco ainda) de ser quem eu sou por três principais motivos: o lugar de onde eu vim, minha família e como as pessoas iriam receber, acho que por isso eu 'demorei'".

"Não tem jeito melhor do que se libertar por meio da arte", finalizou a artista.

Atualmente, Luísa Sonza namora o cantor Vitão e já foi casada com Whindersson Nunes por dois anos.

Assista ao clipe de "Tentação":