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

OPINIÃO

Bastidores de uma entrevista com Elza: 'Ela perguntava sobre o meu coração'

Elza Soares com a repórter Luiza Souto, em novembro de 2019, no Rio de Janeiro - Patrícia Lino
Elza Soares com a repórter Luiza Souto, em novembro de 2019, no Rio de Janeiro Imagem: Patrícia Lino

Luiza Souto

De Universa

20/01/2022 20h05

"Como está esse coração?", perguntava Elza Soares sempre quando nos víamos. Desde 2014, ano em que se deu o nosso primeiro encontro, no apartamento em que ela morava no Catete, zona sul do Rio de Janeiro, ela se recordava até das aventuras amorosas que eu havia contado naquele dia. E fazia questão de querer saber mais de mim, sempre atenta, olhando no olho.

Elza me enxergava, mas era eu quem via diante de mim toda a força que uma mulher deveria ter, que eu queria experimentar, sem no entanto precisar ar pelo que Elza sofreu: estupro, perda de filhos, uma bala de raspão no ombro disparada pelo primeiro marido, dentes quebrados pelo maior amor de sua vida —o ídolo do Botafogo Garrincha.

Apesar disso tudo, a cada encontro com ela eu morria de rir. Seu vigor era de arrepiar do cóccix até o pescoço. Esse era o impacto que causava aquela mulher que repetia a todo instante ser do planeta fome. Ela tinha a gana de viver e, mesmo usando cadeira de rodas nos últimos tempos, queria mais era arrastar todos consigo para esse lugar espirituoso de onde falava.

"Penso no agora. Não penso no fim", ela avisou, quando perguntei, na nossa última conversa, qual legado queria deixar. "Pelo amor de Deus. Não tenho tempo de pensar nisso. Se pensar nisso agora, vão achar que estou indo embora." Elza não queria mesmo se despedir. Apenas cantar. Até o fim.

"Quando você voltará a morar no Rio?", perguntou ela, no nosso último encontro, em novembro de 2019, no seu apartamento em Copacabana. Mesmo com a saúde mais debilitada do que quando nos conhecemos, recordou-se de que eu havia deixado a Cidade Maravilhosa para trabalhar na capital paulista por seis anos. Lá, ainda nos encontramos três vezes.

Nesta semana mesmo, acordei pensando em Elza. Planejei tomar um café com ela e contar, olhando para o mar, que estava de volta. E atualizá-la sobre as novidades do meu coração. A resposta seria bem diferente da de agora. Ele sangra, mas meu choro não é nada além de Carnaval.

Te amo, Elza.