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

Viver online gera exaustão na pandemia, e já tem amizade acabando por isso

Unsplash/Luis Villasmil
Imagem: Unsplash/Luis Villasmil

27/12/2020 04h01

Já ouviu falar do zoom fatigue? Mesmo que você não conheça a expressão, provavelmente está familiarizado com o sentimento que ela traduz: trata-se do cansaço depois de ar horas interagindo por meio de telas. É uma reunião depois da outra, sem pausa para cafezinho, sem transporte de casa até o trabalho, e a vida social também ou a ser mediada pelos eletrônicos.

Tem quem já tenha dito "basta", como a head de pesquisa da Consumoteca, Marina Roale. "Estou me relacionando mais com a natureza, com a selva, com bicho que entra aqui na minha sala do que com gente ultimamente. Acho que a gente começa a notá-los de uma maneira que não notava antes. Já dei até nome para as aranhas que aparecem aqui em casa. Era Aragogue a última", conta ela, no mais novo episódio do CAOScast que você escuta aqui em TAB (ouça abaixo partir de 3:41).

O CAOScast vai ao ar todas as quintas-feiras.

Roale já nem é mais convidada para o rolê virtual com os amigos, de tantos "nãos" que vinha dizendo para happy hour no Google Meet, aniversário no Zoom, jogo online no Discord, e por aí vai.

Tiago Faria, pesquisador que também faz parte da trupe do CAOS, afirma que a pandemia causou uma transposição de ansiedades. "Me parece que antes a cidade era o ponto nervoso, que causava estresse na gente, e na pandemia esse sistema nervoso se transferiu para o digital. É quase como se aquele engarrafamento urbano, buzina da metrópole, se convertesse nas inúmeras notificações pipocando na tela do celular. Tal qual na nossa relação com a cidade, a gente não dá conta de estar disponível para toda essa gente, para toda essa demanda a todo tempo, a partir dessa impossibilidade do encontro", avalia ele (a partir de 29:23).Com tanto estímulo, é natural reagir de forma mais blasé ou desinteressada em relação a alguns compromissos ou mesmo a algumas pessoas.

A obrigação do encontro online vira um peso extra. Se você já a nove horas por dia em frente ao computador, é normal que não queira gastar horas de descanso sentado na mesma cadeira, olhando para a mesma tela — só mudam os quadradinhos que você vê no mosaico. "No online, as pessoas ficam te chamando e fica uma ideia de que, se está todo mundo online nesse momento de isolamento, você está disponível. Não sei quem teve essa ideia de que se você está em casa você não pode recusar nada. Criam-se alguns atritos. Você começa a ficar de fora, começa a negar convite. Você descobre que alguns amigos estão marcando coisas e não te chamaram. Acho que 2021 vai ser um ano de treta em relação à amizade", opina Roale (a partir de 31:10).

E você, já perdeu alguma amizade durante a pandemia? Acha que no futuro vamos ser mais criteriosos na hora de escolher quem vamos ver ou a volta à "normalidade" vai ser completa? Ouça o episódio 7 do CAOScast veiculado aqui em TAB para saber a opinião dos caóticos e algumas dicas.