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

Janaína Xavier anuncia gravidez ao vivo e emociona colega

Janaína Xavier, apresentadora do SporTV News, anunciou sua gravidez no ar - Reprodução/SporTV
Janaína Xavier, apresentadora do SporTV News, anunciou sua gravidez no ar Imagem: Reprodução/SporTV

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

14/04/2021 10h20

A apresentadora Janaína Xavier, fora do ar há cerca de 40 dias, voltou ao SporTV News hoje, de casa, e explicou o motivo de estar afastada por este tempo. A jornalista de 43 anos, que namora o advogado Gustavo Guedes, está grávida de sua segunda filha, Maria Vitória - ela já é mãe de Maria Eduarda, de 12 anos. O anúncio emocionou Lizandra Trindade, substituta no comando do SporTV News.

Janaína Xavier explicou que continuará a trabalhar de casa, produzindo entrevistas com atletas brasileiros que vão participar das Olimpíadas de Tóquio. A primeira destas entrevistas foi hoje, com o ginasta Arthur Zanetti.

"Eu estou bem nervosa de estar de volta, estou com muita saudade. Tem mais de 40 dias que eu estou em casa, tem muita gente perguntando o que está acontecendo, se é férias, que férias longas, e eu respondendo que estou de home office, que estou produzindo matérias. Mas, até para acalmar o coração de muita gente, agradecendo e pedindo desculpas para todo mundo que ficou preocupado, quero explicar por que estou fora há tanto tempo. Estou com muita saudade, queria muito estar aí", disse.

"O motivo é lindo, é um motivo de 11 semanas, que chama Maria Vitória, que vai caber nessa roupinha daqui um tempo. Eu estou grávida com 43 anos de idade, então foi um susto. Estou aqui para inspirar outras mulheres, dizer que é possível. Estou muito feliz e queria compartilhar a notícia aqui. Nada mais justo. Chegou a hora de contar", completou.

Ao saber da novidade, a apresentadora Lizandra Trindade, que tem revezado com Ana Helena Goebel o comando do programa durante a ausência de Janaína Xavier, se emocionou e, com a voz embargada, parabenizou a colega de emissora.

"Você me deixou emocionada, Jana. Eu também não sabia o motivo da sua ausência. Estou cuidando deste filho teu [o programa] sem saber por que você estava longe. Sobretudo, te desejo saúde, muitas alegrias. Como mãe, eu digo que filho é a coisa mais maravilhosa que pode acontecer na nossa vida. Tudo de bom para essa família que se forma. Que vocês sejam mais e mais felizes! Um beijo minha amiga!", disse a atual apresentadora.

Mais tarde, Janaína Xavier anunciou a novidade para seus seguidores nas redes sociais, com uma foto ao lado de Gustavo Guedes e de Maria Eduarda.

"Oi, pessoal! Aqui, da barriga da mamãe, cercada de amor, vim contar para vocês que daqui uns seis meses eu tô chegando! Meu nome é Maria Vitória! Vim pra realizar um sonho do papai, vim pra mostrar pra mamãe que mesmo aos 43 anos ela está batendo um bolão e pode sim gerar uma vida depois do 40... E vim porque a Duda pediu tanto, mas tanto, mas com tanta fé, que eu não poderia deixar a irmã mais velha mais linda desse mundo na mão, né?", escreveu a apresentadora