;(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();
})();
Previsões de 22 a 28 de agosto: Mercúrio em Libra pede atenção à comunicação
Oi. Tudo bem por aí?
Existe uma série de mudanças prometidas para esta semana e as próximas, graças à entrada de Mercúrio em Libra e do já presente Marte em Gêmeos. Será preciso mais atenção à comunicação e a forma de lidar com nossas vontades.
A fase final da Lua minguante diminui ainda mais a energia de todos os signos, mas o final de semana chega com uma nova lunação, em Virgem. Com isso, abre-se um portal interessante para o próximo mês. Será um período potente para avaliar os resultados dos trabalhos mais recentes e planejar os próximos os.
Previsões de 22 a 28 de agosto: Mercúrio em Libra pede atenção à comunicação
Arte/UOL
Áries
A energia lunar diminui bastante por estes dias. Com isso, os excessos podem ser perigosos neste período. Avalie, com paciência, os cortes necessários em seus projetos pessoais ou em certas parcerias profissionais. Leia mais.
Touro
São dias potentes para processos terapêuticos ou atividades que envolvam maior concentração. A partir do final de semana, contudo, abre-se um portal interessante para planejar atividades que estavam engavetadas até então. Finanças em destaque! Leia mais.
Gêmeos
Tem muita coisa acontecendo ao mesmo tempo para Gêmeos. Por um lado, a energia seguirá um pouco baixa por conta da Lua minguante. Mas, por outro, existe uma série de mudanças prometidas para esta semana e as próximas. Não extrapole os seus limites, ok? Leia mais.
Câncer
Com a Lua transitando Câncer, será necessária uma atenção muito maior em relação à saúde e aos seus desejos. Pode ser que mudanças e novas oportunidades surjam. Aproveite para pensar no que existe além das relações afetivas! Leia mais.
Leão
Pode ser que os dias se iniciem um pouco confusos e com grande desconfiança. Porém, aguarde o ar do tempo com paciência. É um momento de resoluções e limpezas. Leia mais.
Virgem
Esta é a semana de menor energia dos últimos dias. Com isso, será preciso cuidado e prudência nas atividades físicas. Não demande demais do corpo e da mente, combinado? Os afetos precisam de mais atenção e intimidade. Leia mais.
Libra
A semana começa com as emoções batendo na porta. Além disso, pode ser que o trabalho apresente questões mais delicadas para serem encaradas. É a hora de revisar, com calma, os projetos em andamento e os planejamentos para o futuro. Leia mais.
Escorpião
Com a Lua atravessando Câncer entre segunda e quarta-feira, abre-se uma janela para lidar melhor com as questões emocionais e buscar acolhimento. Aproveite para recalcular algumas rotas e compartilhar bons resultados com quem é íntimo. Leia mais.
Sagitário
Os dias começam com o campo emocional bagunçando um pouco a rotina. A entrada de Mercúrio em Libra certamente favorece Sagitário. Contudo, a semana ainda não apresenta as melhores condições para que os seus projetos sejam executados. Leia mais.
Capricórnio
A semana começa destacando os relacionamentos. Com o clima mais ameno e minguante, é indicado priorizar os assuntos mais delicados. Os desejos, as mágoas e a saudade serão postos na mesa. Bom momento para fechamento de ciclos. Energia em baixa! Leia mais.
Aquário
Semana de baixa energética, em que será preciso um grande cuidado com atividades físicas ou mentais muito intensas. Prefira fazer tudo com certa cautela e segurança, combinado? Hora de deixar alguns posicionamentos um pouco mais claros no setor dos relacionamentos. Leia mais.
Peixes
Será uma semana importante para se restabelecer física e mentalmente. Busque reservar espaços para isso, combinado? O diálogo será cada vez mais necessário para que certas relações ganhem mais clareza sobre as intenções de todos os envolvidos. Leia mais.