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

Sabrina Sato revela perrengues nos bastidores do Carnaval: 'dor no furico'

Sabrina Sato desfilando pela Vila Isabel - Ricardo Borges/UOL
Sabrina Sato desfilando pela Vila Isabel Imagem: Ricardo Borges/UOL

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

25/04/2022 07h58Atualizada em 25/04/2022 14h38

Além de apresentadora e influenciadora, Sabrina Sato também é musa do samba. Nos últimos anos, a famosa tem feito história no Carnaval, desfilando por escolas e animando as madrugadas no Sambódromo e na Sapucaí. Em entrevista ao "Fantástico", da Rede Globo, a estrela mostrou a rotina dos bastidores e até soltou uma 'pérola'.

Questionada sobre estar com dor no corpo após o primeiro desfile, da Gaviões da Fiel em São Paulo, a famosa confessou: "dor no furico". Em seguida, contou que machucou tudo com a apresentação. Depois de fazer o comentário na entrevista, Sabrina escreveu no Twitter: "Mandei um 'furico' no Fantástico. Ai, gente".

Com isso, fãs se manifestaram e afirmaram que aquele era o jeitinho da artista. "Óbvio que mandou essa", destacou uma. "Você é a doida mais adorada do Brasil, você pode tudo", ressaltou outro seguidor.

Sato desfila há mais de 10 anos pela Gaviões da Fiel, em São Paulo, e pela Vila Isabel, no Rio de Janeiro. Neste Carnaval, a famosa teve que fazer várias adaptações para poder participar de ambas, uma vez que aconteceram na mesma madrugada, no dia 23.

Para que tudo desse certo, se hospedou em um hotel perto do Sambódromo para realizar sua produção para o evento, que aconteceu às 00h30, tendo quase uma hora de atraso. Assim, Sabrina Sato pegou um avião às 2h e desfilou às 3h50 pela Vila Isabel. No fim, tudo deu certo e a musa do samba agitou o Carnaval de São Paulo e do Rio de Janeiro.

Veja o Carnaval de Sabrina Sato