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

Lucas Pasin

OPINIÃO

Texto em que o autor apresenta e defende suas ideias e opiniões, a partir da interpretação de fatos e dados.

Juliette ovacionada no São João é o maior prêmio da cantora desde o 'BBB'

Juliette no show de São João de Campina Grande/Paraíba - Reprodução/Instagram @emanueltadeu_
Juliette no show de São João de Campina Grande/Paraíba Imagem: Reprodução/Instagram @emanueltadeu_

Colunista do UOL

25/06/2022 06h20

Receba os novos posts desta coluna no seu e-mail

Email inválido

A madrugada deste sábado certamente ficará marcada na memória de Juliette, assim como quando ela descobriu que é um fenômeno e venceu o "BBB 21" (Globo).

Um dos maiores sonhos da "rainha dos cactos" era se tornar atração principal das festividades de São João de Campina Grande, Paraíba, cidade onde nasceu. Ela não só realizou o desejo, como também foi ovacionada pelo público.

Juliette, "em casa", como fez questão de dizer várias vezes durante o show, transformou uma das maiores festas da região em sua "festa de aniversário". Ali, do palco, estava rodeada de fãs de todo o Brasil, bexigas verdes, e um público — que já abraçou muitas forrozeiras famosas — acolhendo desta vez a artista e ex-BBB. O amigo Gil do Vigor presenciou tudo como um "melhor amigo" da aniversariante.

Antes da estreia como atração principal da noite, Juliette esteve na festa no dia anterior e fez uma participação no show de Elba Ramalho. Ali, ela já sentiu o que estava por vir, e aproveitou a prévia para buscar a confiança principal que precisaria para quando fosse seu momento de brilhar.

Juliette antes do show no São João de Campina Grande, Paraíba - Reprodução/Instagram @juliette @brunini_ - Reprodução/Instagram @juliette @brunini_
Juliette antes do show no São João de Campina Grande, Paraíba
Imagem: Reprodução/Instagram @juliette @brunini_

Em conversa exclusiva com esta coluna de Splash, no início do mês, Juliette falou que, assim como muitos esperavam o Réveillon para brindar, ela encarava o São João como seu maior e melhor momento do ano. E assumiu que, após dois anos de pandemia, viveria cada segundo deste mês de junho com muita intensidade.

Espero mais o São João do que o Réveillon. É tipo aquela festa de 15 anos, sabe? Eu vou fazer poucos shows esse mês, uns cinco no máximo. Não quero que seja cansativo. Quero poder curtir, cantar e ter uns dias para absorver.

A noite de ontem já tirava o sono de Juliette faz tempo, e ela também contou sobre o assunto para a coluna:

Todos os dias me imagino cantando nesse dia 24. Durmo e acordo pensando nisso. Vai ser um dos dias mais especiais da minha vida. Já sonhei com isso várias vezes.

Quando o momento chegou, Juliette se emocionou muitas vezes no palco, como pode ser visto por vídeos que circulam nas redes sociais. "Cactos" de todo o Brasil a acompanharam e mostraram que desde o "BBB" Juliette não está, de fato, sozinha.

Juliette pode (ainda) não ter ganhado um "BBB" duas vezes, mas certamente sentiu emoções semelhantes.