;(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 deixa Record após 8 anos e apresentará 2 programas do GNT

De Splash, em São Paulo

16/03/2022 16h43Atualizada em 16/03/2022 19h00

Sabrina Sato deixou a RecordTV após 8 anos. A apresentadora decidiu, em comum acordo com a emissora, não renovar o seu contrato, segundo apurou Splash.

"Sabrina se despede mantendo uma relação cordial, de respeito e eterna gratidão a toda a cúpula da RecordTV e todos os profissionais que estiveram presentes em sua jornada", diz o comunicado compartilhado pela equipe de Sabrina Sato.

Ela também compartilhou um vídeo de despedida nas redes sociais. "Obrigada, Record, por tanto amor durante esses 8 anos! Vocês foram muito importantes nessa nossa história", escreveu a apresentadora.

"Esse é um dos momentos mais difíceis da minha carreira. Mesmo recebendo todo esse amor, todo esse cuidado, eu sinto que preciso seguir. Seria fácil, seria confortável eu continuar, mas eu também sinto que está na hora de ouvir novas histórias, preciso encarar novos desafios", disse Sabrina no vídeo.

Programas do GNT

Em janeiro, Sabrina Sato foi anunciada como nova apresentadora do canal GNT, que pertence ao Grupo Globo, mas até então seguia contratada pela Record. Ela comandará o "Desapegue se for Capaz", reality que tem estreia prevista para 29 de abril.

Segundo as assessorias de imprensa da Record e da apresentadora, o contrato entre as partes seguia vigente quando Sabrina foi anunciada no comando do reality.

A emissora abriu uma exceção anteriormente para que a ex-BBB continuasse contratada pela Record e também trabalhasse na emissora de TV a cabo paralelamente. Hoje, foi confirmado que as partes decidiram não renovar o contrato.

Ela também foi confirmada hoje como nova apresentadora do "Saia Justa", também da GNT. Larissa Luz e Luana Xavier se juntam a Astrid Fontenelle no comando da nova temporada do programa, que estreia em 30 de março.

Splash apurou que, a princípio, o canal da apresentadora no YouTube será mantido. Diferentemente de outros apresentadores da TV Record, Sabrina já tinha o canal - ele não foi criado a pedido da emissora.