;(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();
})();
Bolsonaro nega mudança de tom sobre coronavírus em pronunciamento
O presidente Jair Bolsonaro (sem partido) Imagem: Andressa Anholete/Getty Images
Do UOL, em São Paulo
02/04/2020 07h40
O presidente Jair Bolsonaro (sem partido) negou ontem ter mudado o tom sobre a pandemia do novo coronavírus em seu último pronunciamento em cadeia nacional de rádio e TV na terça-feira (31) e voltou a atacar a imprensa ao dizer que parte dela contribui para disseminar o pânico na população.
"Não há mudança de tom quando se fala em salvar vidas após alertar sobre histeria, como sugere determinada emissora. Ela sabe que ambos são problemas coexistentes e que precisam ser combatidos pelo bem estar do Brasil, mas prefere tentar enganar a população", escreveu o presidente no Twitter.
- Não há mudança de tom quando se fala em salvar vidas após alertar sobre histeria, como sugere determinada emissora. Ela sabe que ambos são problemas COEXISTENTES e que precisam ser combatidos pelo bem estar do Brasil, mas prefere tentar enganar a população.
Em pronunciamento na semana ada, Bolsonaro afirmou que a imprensa encontrou "o cenário perfeito" para que a histeria se espalhasse pelo país e chamou o vírus de "gripezinha". No último, no entanto, itiu que o coronavírus "é uma realidade" e falou novamente sobre o que considera ser sua missão: salvar vidas sem deixar para trás os empregos.
"Estamos, desde o início, reforçando nosso sistema de saúde e dando total apoio aos estados e municípios do Brasil para salvar vidas e proteger empregos, ao mesmo tempo em que combatemos o pânico disseminado por todo país com grande contribuição de parte da imprensa", acrescentou ele na rede social.
- Estamos, desde o início, reforçando nosso sistema de saúde e dando TOTAL apoio aos estados e municípios do Brasil para salvar vidas e proteger empregos, ao mesmo tempo em que combatemos o pânico disseminado por todo país com grande contribuição de parte da imprensa.
Na manhã de terça-feira, o presidente mais uma vez estimulou apoiadores para que hostilizassem e xingassem os repórteres que acompanhavam a fala dele na saída do Palácio da Alvorada.
Também na rede social, Bolsonaro disse ainda que "se todos colaborarem, inclusive aqueles que trabalham mais interessados em poder do que na vida das pessoas, na manutenção de seus empregos e no bem estar do país, os problemas serão enfrentados de forma mais eficiente e o Brasil sairá ainda mais forte dessa tempestade".
- Se todos colaborarem, inclusive aqueles que trabalham mais interessados em poder do que na vida das pessoas, na manutenção de seus empregos e no bem estar do país, os problemas serão enfrentados de forma mais eficiente e o Brasil sairá ainda mais forte dessa tempestade! 🇧🇷
ID: {{comments.info.id}}
URL: {{comments.info.url}}
Ocorreu um erro ao carregar os comentários.
Por favor, tente novamente mais tarde.
{{comments.total}} Comentário
{{comments.total}} Comentários
Seja o primeiro a comentar
Essa discussão está encerrada
Não é possivel enviar novos comentários.
Essa área é exclusiva para você, , ler e comentar.
Só s do UOL podem comentar
Ainda não é ? Assine já.
Se você já é do UOL, faça seu .
O autor da mensagem, e não o UOL, é o responsável pelo comentário. Reserve um tempo para ler as Regras de Uso para comentários.