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

Gracyanne Barbosa se diverte em show de Belo e faz seu 'próprio' Carnaval

Belo e Gracyanne Barbosa - REGINALDO TEIXEIRA / RT FOTOGRAFIA
Belo e Gracyanne Barbosa Imagem: REGINALDO TEIXEIRA / RT FOTOGRAFIA

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

01/03/2022 08h46

A influenciadora fitness Gracyanne Barbosa, de 38 anos, marcou presença no show do marido, o cantor Belo, de 47 anos, no Parque dos Atletas, na Barra da Tijuca, no Rio de Janeiro.

Por lá, ela aproveitou para mostrar muito samba no pé, já que neste ano não pode estar na avenida por conta da pandemia de covid-19.

"O samba entrou na minha vida para nunca mais sair. Não consigo olhar para trás ou para frente e imaginar meu coração bater fora do como de uma bateria. Sou muito grata por reinar nesse mundo tão mágico, feito por comunidades tão receptivas e calorosas. Mas aconteceu muita coisa durante a pandemia, muitas reflexões, meu desligamento um pouco polêmico da minha última escola de samba, e tudo trouxe uma grande reflexão para mim, e minha vida em especial", disse ela ao G1.

Gracy ainda falou sobre o "lado positivo" de estar mais em casa:

"Com a cobertura vacinal sendo um sucesso, estamos voltando com tudo de forma ainda mais confortável. A maturidade tem me trazido uma mensagem de que a vida é constituída de momentos especiais e estou me permitindo desfrutar disso. Nesse carnaval quis me permitir novas sensações. Olhar para o meu marido, curtir com ele, como ele sempre curtiu comigo. E curtir shows e artistas que só via quando estava trabalhando, dividindo palco quando eu dançava", relembrou.

Nas redes sociais, ela celebrou a apresentação de Belo:

"Ontem foi o fervo! Que saudades eu estava,de curtir uma folia! Dancei demais, me diverti, teve showzão do meu tudão Belo, dancei ao som do Harmonia do Samba (que show), assisti o meu ídolo Luan Santana. Já já estou chegando, porque hoje tem mais! Quem perdeu, corre no story para assistir o de ontem e claro, que irei postar mais hoje para vocês!", escreveu ela em um vídeo compartilhado em seu Instagram, em que aparece dançando.

Assista: