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

Marcelle Carvalho

REPORTAGEM

Texto que relata acontecimentos, baseado em fatos e dados observados ou verificados diretamente pelo jornalista ou obtidos pelo o a fontes jornalísticas reconhecidas e confiáveis.

'Verdades Secretas': ausência de Camila Queiroz em gravação irritou elenco

Colunista do UOL

19/11/2021 04h00

A ausência de Camila Queiroz na gravação de "Verdades Secretas 2" irritou bastante equipe e elenco da trama. Se não bastasse deixar todo mundo esperando, estar em um set, atualmente, demanda uma logística complicada.

Se já não era fácil orquestrar uma gravação antes da pandemia, vivendo novas diretrizes em tempos da covid-19, a situação se complica. Os protocolos de segurança são rígidos, todos que estão no set têm que ser testados. Não é mais apenas chegar e gravar. Há uma série de cuidados que os envolvidos precisam ter para que o trabalho seja feito com segurança.

Natural, portanto, que as reações de quem esteve presente no set e não pôde trabalhar devido à falta da atriz não sejam nada amistosas. A coluna apurou que um dos envolvidos, inclusive, chegou a questionar entre os demais nos bastidores o motivo de Camila não ter avisado que não iria. Assim, evitaria que houvesse deslocamento desnecessário.

A saída de Camila Queiroz do elenco de "Verdades Secretas 2" caiu como uma bomba dentro e fora da trama. A TV Globo divulgou um comunicado a respeito de seu desligamento de "Verdades Secretas 2", o que deixou a atriz bastante incomodada. A artista também enviou nota acusando a empresa de querer puni-la por ter rompido o contrato de longo prazo com o canal.

Camila ainda usou seu Instagram para divulgar uma carta de despedida para Angel. Mais tarde, foi aos stories, com o semblante bem abatido, agradecer o apoio dos fãs e amigos. E ainda disse que espera conseguir se sentir mais forte para "vir aqui e falar com vocês. Enquanto isso, a gente vai criando forças aqui para se recuperar do choque".

Processo contra TV Globo

A coluna apurou que Camila está seriamente inclinada a processar a emissora por difamação e assédio moral. A artista ou a gravar e fazer prints das conversas com a diretoria do canal, desde o mal-estar gerado por ela ter assinado contrato com a Netflix, ainda sendo funcionária da TV Globo. Esse arquivo, segundo informações dadas à coluna, não era segredo para quem circulava próximo à atriz.
De posse desse material, a artista e seus advogados estudam uma maneira de entrar com um processo contra a TV Globo.