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

Cleo revela vontade de ser mãe: "Tenho 6 cachorros, quero filhos humanos"

Cleo comentou solteirice e guarda compartilhada dos cachorros - Cleo (Foto: Reprodução/ Instagram)
Cleo comentou solteirice e guarda compartilhada dos cachorros Imagem: Cleo (Foto: Reprodução/ Instagram)

De Universa

07/09/2019 13h53

Cleo revelou a vontade de ter "filhos humanos" a Giovanna Ewbank durante entrevista no canal GIOH, publicada neste sábado. A atriz, que já tem seis cachorros, revelou que tem guarda compartilhada de todos eles com o ex-marido João Vicente de Castro.

Dois dos cachorrinhos moram com ela, os outros quatro, com o ator, com quem foi casada por três anos. Na entrevista, Cleo falou, também, sobre a solteirice. Revelou que tem uns "cachos" por aí, mas que, depois de dois casamentos, não está à procura de um relacionamento. Ela foi casada, ainda, com o ator Rômulo Neto.

Nas últimas semanas, Cleo abriu o jogo sobre ganho de peso e principalmente sobre ataques gordofóbicos que recebe nas redes sociais. A atriz e cantora mostrou que sua autoestima continua a mesma de sempre e publicou, na semana ada, uma foto sensualizando (muito!) em um vestido curtíssimo e calçando botas vermelhas.

Estar ou não acima do peso Pires é uma questão bem resolvida para Cleo, que já assumiu sofrer de distúrbio alimentar e emocional nas redes sociais.

"Eu tinha muito problema em ganhar peso. Eu ganhava peso e não saía de casa, sabe? Tipo, eu não estaria aqui", disse ela na festa de chegada da Balmain no Brasil, no Shopping Cidade Jardim, em São Paulo, que aconteceu no último dia 27.

"Hoje mudei depois de muita terapia, maturidade, mulheres que te inspiram e você fala: pera aí. Acho que está tudo bem", completou. O formato do seu rosto ou a ser questionado após o Prêmio MTV Miaw, em julho, e hoje Cleo negou ter ado por um procedimento de harmonização facial.

"Já fiz alguns procedimentos estéticos mas não harmonização facial. Já fiz plástica no nariz e nas olheiras. Se eu tivesse feito, não teria problema nenhum também. Acho maravilhosa mas não tenho vontade", explicou a artista que sempre lida com as críticas. "Elas (críticas) afetam, mas do chão não a", brinca.