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

Morango

OPINIÃO

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

'Situationship': o que significa novo termo usado pela geração Z

iStock
Imagem: iStock

Colunista do UOL

28/09/2022 04h00

Dias atrás li sobre "situationship", um termo popularizado pela geração Z, dos nascidos entre 1995 e 2010, que significa "estar em uma situação". Dei um sorrisinho de canto de boca, confesso.

Para a geração anterior à Z, os millennials, como eu, "estar em uma situação" antigamente tinha outro nome: "ficar". Estar em uma situação ou ficar é, basicamente, viver um relacionamento sem chamar de relacionamento. Fazer tudo o que um casal de namorados faz, só que evitando um rótulo. Mas será que evitar chamar uma coisa do que ela é faz diferença?

Quando eu era adolescente, se depois de um ou mais momentos ficando alguém fizesse o pedido de namoro, esse era um sinal de comprometimento que significava, por exemplo, que o casal já podia gritar pro mundo que tava junto.

Mas o que é que adolescentes sabem de amor e de mundo, não é mesmo? A gente acha que sabe tudo, que já nasceu sabendo. Até que sofre a primeira decepção. Aquela que vai preceder dezenas, quiçá centenas de outras, e desbotar o filtro cor-de-rosa com que enxergávamos o mundo. Há até uma beleza melancólica nisso.

Vácuo e chá de sumiço

Vinte anos atrás, o "ghosting" já era muito comum, só que tinha outros nomes, como "vácuo" e "chá de sumiço". Hoje, continua sendo uma opção pra quem quer sair de um relacionamento sem dar muitas explicações.

Sim, dá pra dizer que ghosting é uma escolha de quem tem menos maturidade e menos responsabilidade afetiva. Mas também pode ser um caminho, mesmo que bem torto, pra quem não quer magoar o outro falando a verdade. Afinal, é mais fácil digerir um sumiço ou ruminar uma mentira?

"Não tô pronta pra namorar, mas depende"

Que atire a primeira balinha Icekiss quem nunca falou "eu não me sinto pronta pra namorar agora" e, poucas semanas depois, apareceu felicíssima anunciando aos quatro ventos o namoro com outra pessoa.

Essa e outras frases como "o problema não é você, sou eu", "quero focar nos estudos agora" e "estou num momento complicado no trabalho, preciso priorizar minha carreira" completam o bingo da desfaçatez.

"Quiet quitting"

Atualmente, nos ambientes corporativos, a expressão da vez é o "quiet quitting", que pode ser traduzida como "demissão silenciosa", e acontece quando o funcionário faz o básico, sem motivação, desejando ser demitido. Pra mim, é uma situação semelhante ao ghosting, porque é uma saída pela porta dos fundos —mas, ainda assim, é uma saída.

As gerações mudam, mas as questões continuam sendo as mesmas. Há, indiscutivelmente, mais formatos de relacionamento e de negócios, mas novas possibilidades não são fórmulas mágicas que vão funcionar pra todo mundo, de forma indiscriminada. Há quem vá render muito mais trabalhando em casa do que presencialmente, assim como há quem vá se sentir mais realizado em um relacionamento tradicional que em um aberto.

Já reparou que, às vezes, a gente quer seguir um caminho, mas age na direção oposta? E aceita o que está disponível por medo de ir atrás do que deseja de verdade?

Nos negócios e no amor (com ou sem rótulos), há mais chances de sucesso para quem conhece as próprias necessidades e se posiciona de forma autêntica sobre elas.