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

Mulheres contam histórias de aborto em protesto à proibição no Alabama

Busy Philipps - Kevork Djansezian/Getty Images/AFP
Busy Philipps Imagem: Kevork Djansezian/Getty Images/AFP

Da Universa

16/05/2019 16h11

Desde que a governadora do estado norte-americano do Alamaba, Kay Ivey, sancionou uma lei que proíbe o aborto mesmo em casos de estupro, o assunto dominou as redes sociais nos Estados Unidos.

A atriz Busy Phillips, que já havia revelado durante seu programa ter feito um aborto aos 15 anos, promoveu uma campanha no Twitter pedindo que outras mulheres contassem suas histórias.

"1 em 4 mulheres fazem aborto. Muitas pessoas acham que elas não conhecem ninguém que tenha feito, mas #youknowme (você me conhece, em inglês). Então vamos fazer o seguinte: se você também é o 1 de 4, compartilhe e coloque fim a sua vergonha. Use a hashtag #youknowme e compartilhe sua verdade", propôs.

Em pouco tempo, muitas delas fizeram posts públicos para relatarem suas experiências.

"Eu tinha 16. Fui estuprada na escola por um voluntário. O feto causou um sangramento e eu estava há 15 minutos de morrer. Eu estava no segundo ano do Ensino Médio morrendo por causa da escolha de um homem. Era eu ou o feto que morreria de qualquer jeito", revelou Jennifer N.

"Eu tinha 12?preciso dizer mais alguma coisa?", desabafou Niesha Love.

"Eu tinha 18 anos e tinha acabado de começar um tratamento para um tumor nos ossos e descobri que estava grávida de poucas semanas. Ainda não tinha começado o tratamento com radiação, apesar dos testes para gravidez terem dado negativo antes da primeira cirurgia. Mas eles estavam errados. [A escolha era] fazer um aborto ou continuar com o meu tumor", disse Gypsy Nomad.

"Muito difícil para mim contar isso, mas a camisinha foi tirada sem o meu consenso, eu estava bêbada, perguntei muito tarde e a pílula do dia seguinte não funcionou. É hora de eu não me sentir mais tão envergonhada disso".

"Eu tinha 16 anos, zero e familiar e nem namorado. Nasci de uma mãe jovem, que também teve uma mãe jovem. Me recusei a continuar esse ciclo"