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

Mariana Kotscho

OPINIÃO

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

Mãe: nos momentos de dor nos perguntamos se dissemos todos os 'eu te amo'

Enquanto escrevo este texto, minha mãe está na UTI lutando para sobreviver - iStock
Enquanto escrevo este texto, minha mãe está na UTI lutando para sobreviver Imagem: iStock

Colunista de Universa

29/11/2022 04h00

Mãe é mãe, não tem jeito. Quando nos tornamos mães, entendemos a verdadeira dimensão do que é um amor incondicional. Por isso cada um de nós tem certeza do amor que recebe da própria mãe, aquela com quem podemos contar sempre, com quem podemos até brigar e discordar que vai continuar nos amando do mesmo jeito.

Ser mãe é realmente padecer no paraíso, envolve dores e delícias, alegrias e apreensões. E este ser chamado mãe é sim muito especial, um ser iluminado. Que lugar é melhor do que colo de mãe ou abraço de mãe?

A verdade é que tudo, ou quase tudo, de mãe, é bom: a casa da mãe, a comida da mãe, o cheiro da mãe, a voz da mãe. Eu e minha irmã sempre falamos brincando que temos uma pequena grande mãe. Porque ela tem 1,57 m, mas tem aquele coração enorme. Tão grande que cabem neste amor enorme mais um monte de sobrinhos e sobrinhas, netos e netas, irmãos, cunhadas, amigos e amigas que não acabam.

Enquanto escrevo este texto, minha mãe está na UTI lutando para sobreviver. A vida infelizmente tem dessas coisas. Num dia, tá tudo bem. E, de repente, parece que te tiram o chão. Uma pequena confusão mental, uma corrida ao PS e o diagnóstico: tumor cerebral. Tudo muito rápido e assustador, uma cirurgia de mais de 10 horas e muitas incertezas.

Nos grupos formados para saber notícias sobre ela, Mara, a minha mamãe Mara, não para de receber declarações de amor. A amiga que sempre deu ouvidos, atenção, dedicada. Aquela que sempre se lembras dos aniversários e manda mensagens carinhosas.

Em momentos assim a gente para e pensa se deu tempo de dizer todos os "eu te amo", de dar todos os beijos, de curtir todos os carinhos. Mãe a gente tem que gastar mesmo, não pode economizar.

Então se você estiver agora perto da sua mãe, aproveita para dizer coisas lindas para ela, se estiver longe, liga, manda uma mensagem. Por que a gente nunca sabe até quando teremos este lugar para correr.

E eu aproveito para dizer também por aqui para você, minha mamãe querida: eu te amo. Sempre e para sempre.