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

Marina Mathey

OPINIÃO

Texto em que o autor apresenta e defende suas ideias e opiniões, a partir da interpretação de fatos e dados.

Eu não preciso que você me ame

Retratos de Atores e Atrizes: Treze Litografias: Anna Held (1898), impressa em alta resolução por Henri de Toulouse-Lautrec. Original do Museu de Arte de Cleveland/Domínio público
Imagem: Retratos de Atores e Atrizes: Treze Litografias: Anna Held (1898), impressa em alta resolução por Henri de Toulouse-Lautrec. Original do Museu de Arte de Cleveland/Domínio público

27/04/2022 06h00

Apesar de ser louca de amor
Não posso evitar o trocadilho infame
Preciso te dizer que eu não preciso que você me ame
É talvez um pouco extranho
Pois dessa falta eu reclamo
É talvez só um ime, pois já vivi esse vexame
Já clamei o teu afeto
Rebolei pro teu sucesso
Fiz de tudo e mais um pouco pra ar no teu exame
Chorei noites e mais noites
Pensando que era sobre
Isso tudo que você nunca nem teve pra oferecer
Iludida pelo erro
De não acreditar no desmame
Mas hoje digo tranquilona que não preciso que me ame
Nem preciso que me queira
Por perto, meio "en ant"
Fingindo que reconhece
que me conhece
Que tá de boua
Não preciso que mascare a tua falta de noção
Nem que masque minha presença com esse nojo de tesão
Só mesmo te comunico
Você que acha que é o centro
Que é umbigo do mundo todo que gira ao teu redor
Que pede que eu peça clemência pra andar perto de ti
Ti manca, desavisado
Tu chega de atravessado
E eu saio pela tangente
E aí, quando a gente
Menos percebe o balanço
Tu ficou fora do jogo
E quem samba já sou eu
Teu umbigo vira buraco
Do micromundo que fede
E eu, cá bem vibrante
Assisto o que aconteceu
Então eu te repito
Pois tenho outros tantos que querem
Outras tantas que me carinham
E mais outres que me amam
Que do teu desajeito tosco
Sem pé e sem pescoço
De quem não engole nem cospe
Não me interessa o desgosto
Não preciso do teu latifúndio
Nem do teu latido imúndio
Não quero tudo que é teu, só aquilo que me pertence
Então fique bem tranquilinho, não peço que se engane
Quero tudo desse mundo, mas não preciso que você me ame.

** Este texto não reflete, necessariamente, a opinião do UOL