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

Fabricio Carpinejar escreve carta aberta para Preta Gil: 'Nasceu lutando'

Fabricio Carpinejar escreve carta para Preta Gil - Reprodução/Instagram
Fabricio Carpinejar escreve carta para Preta Gil Imagem: Reprodução/Instagram

Colaboração para Splash, em São Paulo

20/04/2023 09h33

O poeta, cronista, escritor e jornalista Fabricio Carpinejar, 50, fez um texto em homenagem à cantora Preta Gil, 48, que está tratando um câncer no intestino. Nesta semana, a artista voltou a ver seu nome no olho do furacão com os rumores do fim de seu casamento com o personal trainer Rodrigo Godoy, 34. Os boatos são de que Rodrigo teria, supostamente, traído a cantora com sua ex-estilista.

Fabricio escreveu uma carta para Preta, o que a deixou emocionada. Leia, abaixo:


"Querida Preta Gil, Preta Maria, Preta da gente, o que é seu ninguém tira. O que é seu ninguém põe a mão. Tudo o que foi embora não era seu, inclusive a doença. Logo ará por ela pulando com os dois pés juntos. Você não precisa do amor de ninguém para se sentir amada. Você não precisa da lealdade de ninguém para se sentir protegida. Você não precisa da fidelidade de ninguém para se sentir correspondida. Você nasceu inteira e completa", iniciou ele.

"Você nasceu lutando a ponto de algumas pessoas confundirem o que foi duramente conquistado pelo seu labor como parte natural delas. Mas não é. Jamais alguém pode profanar o santuário de seu dom. Colocar o coração para fora sempre será mais escandaloso do que colocar o peito à mostra na capa de um CD. A intensidade é perigosa, a fragilidade é transgressora. Você não merecia nada disso. Por mais que eu queira confortá-la com as minhas palavras, apenas o silêncio é curativo. Por mais que eu procure dizer algo relevante, não posso evitar que sofra. Por mais que você já tenha me curado com as suas canções, não há como cicatrizar no seu lugar", continuou.

"A dor é pessoal e intransferível. Mas entendo que existem desígnios limpando os seus caminhos. As aparências perecem com o tempo, e deixam a nossa essência mais bonita. Libertação, livramento. Suas lágrimas logo encontrarão o seu suor e serão uma mesma água brilhante na pele. Se não fossem os desafios reservados a sua vida, você nunca seria grande. Se não fossem as dificuldades que teve que enfrentar ao longo da sua carreira, você nunca seria Preta Gil. Os obstáculos são do tamanho da sua coragem. Deus tem um jeito estranho de amar. Só exige o impossível de quem pode dar. Você é uma predestinada.

Meu abraço, Fabricio Carpinejar, finalizou.

Preta Gil, então, respondeu:

Tão emocionada que não sei nem o que falar! Obrigada, obrigada por ser tão especial". O poeta comentou: "Preta, você não precisa falar, porque você vai além: você canta. Te amamos. Minha mão na sua!".