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

Stalkeadas

Um olhar diferente sobre o que bomba nas redes sociais


Stalkeadas

Saiba quem é a mulher que trocou o marido por nova companheira após ménage

Theresa já tinha interesse por mulheres, mas disse que só depois do ménage entendeu melhor seus sentimentos - Reprodução/Instagram
Theresa já tinha interesse por mulheres, mas disse que só depois do ménage entendeu melhor seus sentimentos Imagem: Reprodução/Instagram

De Universa

17/02/2022 16h11

A norte-americana Theresa Rose ganhou notoriedade após contar sua história ao jornal "The New York Post". Ela disse ter aceitado fazer um ménage à trois como forma de celebrar o aniversário do marido. Porém, semanas depois da experiência, pediu divórcio e começou a namorar uma mulher.

Segundo o que contou na entrevista, a vivência foi tão intensa que sentiu que "era isso o que estava faltando" em sua vida, reforçando que se sentia sozinha no casamento. O término, no entanto, não foi fácil, e ela acabou sendo exposta pelo ex-marido à família, que sempre foi religiosa e conservadora. Hoje, ela fala muito sobre sua história nas redes sociais, também com o objetivo de ajudar outras mulheres que possam estar ando por algo parecido. Saiba mais sobre ela.

É mãe de dois meninos

Pelo TikTok, Theresa posta vídeos ao lado dos filhos, sempre reforçando que apoia uma criação livre dos estereótipos gênero. Em um deles, conta que estava pintando as unhas e, como uma das crianças pediu para que pintasse as dele também, permitiu que ele usasse diversos esmaltes coloridos.

Milita contra Donald Trump

Pelas redes, ela deixa claro que não apoia o ex-presidente americano Donald Trump, cujo governo ficou marcado por falas homofóbicas e conservadoras.

Fala de temas sérios com bom humor

Por meio de dublagens e vídeos engraçados, ela estimula que as pessoas se aceitem como são.

Conta sobre as próprias experiências

Em vídeos curtos, Theresa conta sobre os problemas que teve no ado, principalmente com relação à família, que não reagiu bem à notícia de que ela estava namorando uma mulher.

Critica a visão das religiões sobre mulheres

A norte-americana também aborda temas polêmicos, tais como a valorização da virgindade feminina nas igrejas e o casamento precoce. Hoje, ela se declara ateia e avalia os impactos dos dogmas religiosos sobre sua criação.

Stalkeadas