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

Bruna Biancardi revela infecção no dente após cirurgia: 'Rosto deformado'

Bruna Biancardi comenta cirurgia - Reprodução/Instagram
Bruna Biancardi comenta cirurgia Imagem: Reprodução/Instagram

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

01/08/2022 12h15

Bruna Biancardi ou por uma cirurgia de emergência depois de ter uma infecção no dente. E hoje, a influenciadora usou as redes sociais para tranquilizar os fãs e dizer que estava se recuperando bem.

"Não sei explicar o que tive. Mas quando fui para Las Vegas, já tinha acontecido isso. Um inchaço do nada, mas ou depois de uns três dias. Eu voltei e tive de novo. Achei que ia ar, mas só piorei. Eu estava com o rosto deformado, foi uma coisa muito grave", lamentou ela no Instagram.

Ela prosseguiu o desabafo dizendo que agradeceu a Deus por ter sido na parte de baixo da boca, pois os médicos disseram que se fosse em outra região seria muito pior. "Deu tudo certo, fiquei uns dias quietinha. Vou voltar a viver. Estou com pontos, mas é isso. Já estou comendo normal. Não vou compartilhar as fotos aqui, não quero que me vejam daquele jeito. Mas foi uma coisa muito horrível, fiquei com um negócio do lado. Mas ou!", tranquilizou Bruna.

Rumores da separação

Após os rumores de que o relacionamento com Neymar Jr. teria terminado, Bruna Biancardi apareceu nos Stories do Instagram na manhã de hoje e explicou o motivo de estar um pouco sumida das redes sociais.

A influenciadora gravou um vídeo tomando sol na beira de uma piscina e escreveu: "Bom dia. Precisava de um tempinho pra mim, espero que entendam... Obrigada por todas as mensagens".

b - Instagram - Instagram
Bruna Biancardi aparece após sumiço das redes em meio a rumores de término com Neymar Jr.
Imagem: Instagram

Bruna estava longe da web desde dia 1º de julho, enquanto Neymar apareceu sem o seu anel de compromisso, durante um jantar com os amigos em São Paulo.

Além disso, o atleta compareceu ao desfile da grife Jean-Paul Gaultier em Paris, na França, na quarta-feira ada, e novamente estava sem sua aliança.

Desde então, os fãs do casal tem especulado sobre o possível término do relacionamento. Neymar e Bruna assumiram o namoro no final de maio, mas os rumores sobre a relação entre os dois circulam sites de fofocas desde 2021.