;(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 lança seu primeiro livro na Bienal, mas recusa título de escritora

Cleo e Tatiana Maciel, autora e escritora de "Todo Mundo que Amei já me Fez Chorar" - Felipe Gomes/Divulgação
Cleo e Tatiana Maciel, autora e escritora de 'Todo Mundo que Amei já me Fez Chorar' Imagem: Felipe Gomes/Divulgação

De Splash, em São Paulo

06/07/2022 19h37

Atriz, cantora e agora autora. Cleo Pires lançou hoje seu primeiro livro na Bienal do Livro de São Paulo. "Todo Mundo que Amei já me Fez Chorar" (Editora Melhoramentos) é uma parceria com a roteirista Tatiana Maciel ("A Dona da História", "Filhos da Pátria"), que escreveu os contos sobre relacionamentos tóxicos, sejam eles amorosos, familiares ou amizades.

"Eu me sinto mais autora do que escritora, porque eu não de fato escrevi [o livro]. Eu tenho autoria, mas não escrevi. Então não posso ser considerada escritora. Sou atriz, cantora e produtora", definiu Cleo para um auditório lotado que a deixou nervosa, como a própria confessou no início do bate-papo que também marcou sua estreia na Bienal.

Quem foi ver Cleo acabou também testemunhando uma verdadeira sessão de terapia comandada por outra participante convidada, a psiquiatra Ana Beatriz Barbosa, autora dos best-sellers "Mentes Inquietas" e "Mentes Perigosas", entre outros.

Falando essencialmente sobre comportamento humano, tema do livro idealizado em conjunto por Cleo e Tatiana Maciel, a psiquiatra explicou que pessoas com diagnóstico de TDAH, o transtorno de déficit de atenção, são mais criativas, o que justificaria a atriz ter se transformado em uma multiartista aos 39 anos.

Cleo diz que teve o diagnóstico há cerca de dois anos. "Quando eu descobri que eu tenho TDAH foi um processo de até hoje perceber como o diagnóstico me fez bem. Porque eu entendi que tinha um motivo de certas coisas acontecerem como elas aconteceram comigo, que a falta do conhecimento me fazia não ter ferramentas para lidar com aquilo."

cleo - Leo Fagherazzi/Divulgação - Leo Fagherazzi/Divulgação
Cleo aborda relacionamentos abusivos em seu primeiro livro
Imagem: Leo Fagherazzi/Divulgação

A autora ainda pretende lançar uma música e um clipe que vão complementar o livro "Todo Mundo que Amei já me Fez Chorar". E, em breve, o livro de contos também pode se transformar em uma série, como adiantou Cleo na Bienal.

"A gente se inspirou em muitas coisas que a gente ouvia. Acabamos colocando muita coisa que a gente se identificava, mas não necessariamente histórias nossas, nem de ninguém, mas coisas muito comuns a todas nós. É um livro muito fácil e gostoso de ler."