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

Ludmilla lamenta críticas por defender Brunna: 'Não cometemos nenhum crime'

BBB 22: Ludmilla lamenta hate recebido após pedir permanência de Brunna - Reprodução/Twitter
BBB 22: Ludmilla lamenta hate recebido após pedir permanência de Brunna Imagem: Reprodução/Twitter

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

22/02/2022 18h23

A cantora Ludmilla publicou um longo desabafo em seu Twitter no fim da tarde de hoje. A esposa de Brunna Gonçalves afirma estar recebendo "ódio desnecessário" após defender a permanência da dançarina no "BBB 22" (TV Globo).

Desde que Brunna foi parar no paredão, a artista chegou a prometer nova apresentação acústica e ingressos de show para que os fãs votem para sua esposa ficar no programa. Ela também está puxando mutirões de voto para a eliminação do brother Gustavo.

"É muito triste ter que, mais uma vez, usar uma plataforma que deveria ser pra eu me conectar com meus fãs, me divertir e deixar vocês, que gostam do meu trabalho, ligados nas novidades, pra pedir o fim de todo esse hate desnecessário", começou.

Desde que a Brunna recebeu o convite para o BBB, no qual eu apoiei e incentivei, um dos maiores receios que ela tinha, era como isso podia refletir na nossa familia, e principalmente em mim, uma figura pública que em 10 anos de carreira, sofre uma perseguição desumana. O que mais me deixa triste em tudo isso, é que não importa o que eu faça, uma parcela da internet sempre vai interpretar de forma negativa. E agora, com toda a exposição da Bru no programa, não foi diferente.

Ela ainda questionou por que suas tentativas de manter a esposa no programa foram mal recebidas nas redes sociais.

Eu queria muito entender, de coração, o que vocês esperavam de mim nesse momento? Um mutirão pra tirar a minha esposa do programa? Que eu não me pronunciasse? Que eu não apoiasse um sonho de uma pessoa que nos últimos anos, tem vivido os meus junto comigo? Nós não fizemos nada de errado, não cometemos nenhum crime. Pelo contrário. Nos amamos e nos apoiamos, como qualquer um de vocês faria no nosso lugar. Vocês não precisam levar tudo tão a sério.

Com Brunna liderando as enquetes sobre quem sairá do "BBB 22" hoje à noite, Ludmilla garantiu que ela será recebida com amor em casa.

"Quando o programa acabar, a nossa vida vai seguir. E você, vai conseguir deitar a cabeça no travesseiro e dormir em paz?", refletiu. "Independente do resultado do paredão de hoje, a Brunna tem a plena ciência de que aqui fora, tem uma família, amigos e uma esposa que ama e apoia ela. Não vai ser o ódio de vocês que vai mudar isso."

Brunna Gonçalves está disputando o quinto paredão do reality show com Gustavo e Paulo André.

Quem você quer eliminar do 'BBB 22'?

Enquete encerrada

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