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

Advogada de Luana Piovani se pronuncia após nota de Scooby: 'Antiético'

Pedro Scooby informou que entrou com uma ação contra a atriz Luana Piovani - Reprodução/@pedroscooby/@luapio
Pedro Scooby informou que entrou com uma ação contra a atriz Luana Piovani Imagem: Reprodução/@pedroscooby/@luapio

Colaboração para Splash, no Rio de Janeiro

27/01/2023 09h53

Maria Cristina, advogada de Luana Piovani, se pronunciou nos stories do Instagram após comunicado de Pedro Scooby. Na ocasião, a equipe do surfista alega que a atriz está proibida, em decisão, de falar sobre ele nas redes sociais.

"O colega advogado postou uma nota de esclarecimento tendenciosa e que gerou questionamentos se ela estaria descumprindo uma ordem judicial. Não, ela não está. Uma decisão judicial só surge efeito a partir do momento que outra parte é oficialmente notificada. Depois dessa nota, é muito triste explicar, o porquê dessa decisão não ter validade, mas meu colega sabe", negou a advogada da atriz.

Ademais, a representante de Piovani conta que o advogado de Scooby queria apenas a confirmação de recebimento por parte dela.

"Esse colega me mandou uma nota no Whatsapp para confirmar, mandou uma mensagem se apresentando, e pedindo a minha confirmação para que a gente pudesse ter um diálogo e resolver na melhor forma de todos. Ele só queria minha confirmação para tentar fazer minha cliente receber essa notificação porque nesse processo não sou advogada de Luana e ele fez isso para notificar Luana para vias eletrônicas e foi negado. Ele sabe que tem que ser oficial e seguir para Portugal e foi quando percebi a real intenção, não era um diálogo, ele simplesmente queria uma confirmação por escrito para tentar fazer minha cliente ser notificada mesmo que não esteja habilitada, teria que ser pelo sistema", aponta.

Por fim, Maria Cristina diz que foi bloqueada pelo advogado após dizer que não era habilitada. "O que me impressiona é que esse colega me bloqueou, inclusive não é da área da família, ele me bloqueou. O diálogo tem que acontecer entre advogados, agora se ele quiser fazer uma reconciliação como será possível. Foi muito antiético, leviana, a conduta desse colega", explica. A advogada não pode assumir o processo por ser representante de Luana em Portugal, não no Brasil.