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

Ela deu seu 1º beijo aos 32 e não se arrepende: 'Vida não é uma corrida'

Allora Campbell, 32, se concentrou na carreira após decepções com romance "ideal", mas voltou a dar chances a pretendentes esse ano  - Reprodução/Instagram
Allora Campbell, 32, se concentrou na carreira após decepções com romance "ideal", mas voltou a dar chances a pretendentes esse ano Imagem: Reprodução/Instagram

De Universa, em São Paulo

15/02/2023 15h49Atualizada em 16/02/2023 05h01

Uma mulher esperou 32 anos para dar o primeiro beijo. A escritora Allora Campbell nasceu e cresceu em Nova York, mas, apesar da vida metropolitana, itiu que se manteve longe de dates e até mesmo de selinhos por se sentir desconectada do que era vendido como amor — até o mês ado.

Enredo de filme

Após "perder a fé no amor", a norte-americana concentrou sua atenção na carreira. Em uma jornada parecida com a do clássico "Nunca Fui Beijada", estrelado por Drew Barrymore, Allora conta que se divertia com sua vida, viajando muito a trabalho e a lazer, mas sempre presa à ideia de que não tinha as características necessárias para conquistar um suposto homem ideal.

"Eu achava que mulheres tinham que ser cortejadas ou que algum encontro casual e romântico iria acontecer, mas isso nunca aconteceu na minha vida. Achei que tinha algo errado comigo", afirmou ela, ao jornal South West News Service.

Senti que tinha desperdiçado 15 anos lutando contra isso. Fui prejudicada por uma ideia tradicional de gênero: o príncipe para uma princesa"
Allora Campbell

A norte-americana ainda tentou encontrar pretendentes em aplicativos de namoro. Ela afirma que as tentativas duravam pouco, depois de "más experiências com idiotas", sem que as conversas chegassem a evoluir para um primeiro encontro.

Apesar das decepções, no final do ano Allora decidiu que queria tentar uma vida romântica. Sua meta era conseguir ter dates e, além disso, se sentir confortável o suficiente para os vivenciar.

"Eu amo a minha vida, mas queria tentar namorar. Eu ei anos da minha vida me preocupando com o que as pessoas pensavam sobre mim. Era autossabotagem, então baixei os aplicativos de novo e decidi me manter neles em janeiro", detalhou ela ao jornal norte-americano.

Primeiras conexões

Em janeiro, ela se "conectou" com um dos homens que conheceu online. Quatro dates depois ela conta: deu seu primeiro beijo.

Eu estava aterrorizada no primeiro encontro. (...) Mas ele foi muito legal ao saber que eu nunca tinha sido beijada ou ido a encontros românticos. Ele tem sido muito respeitoso. Dei meu primeiro beijo e foi muito amável.

Após se esconder por anos, Allora afirma que não se envergonha mais de seu ado. "Parece que você está carregando um segredo sombrio, mas me fez melhor falar sobre isso abertamente. Eu tentava sempre escapar de perguntas sobre namoro, então ninguém sabia, mas não é algo que me envergonha mais. Não há nada de errado em começar a ter uma vida romântica mais tarde. A vida não é uma corrida, é uma maratona."