;(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
Logo Pagbenk Seu dinheiro rende mais
Topo

Carla Araújo

A dificuldade de enquadrar Bolsonaro: "Não adianta falar", dizem auxiliares

Presidente Jair Bolsonaro e ministro da Saúde, Luiz Henrique Mandetta, durante entrevista coletiva em Brasília -
Presidente Jair Bolsonaro e ministro da Saúde, Luiz Henrique Mandetta, durante entrevista coletiva em Brasília

Do UOL, em Brasília

30/03/2020 11h50

Receba os novos posts desta coluna no seu e-mail

Email inválido

"Chega uma hora que não adianta mais falar"; "Ele é impulsivo"; "Não tem jeito, ele é o presidente e é assim, ninguém muda"; "Ele quer ser a linha de frente da tropa".

Essas são algumas das frases ditas por auxiliares próximos do presidente Jair Bolsonaro sobre os reiterados episódios em que o chefe do Executivo do país contraria recomendações de segurança e saúde ao interagir com a população em meio à pandemia do coronavírus.

O presidente, que desfilou por áreas populares de Brasília neste domingo, começa a semana com um desafio de tirar o papel os projetos prometidos para mitigar os efeitos da Covid-19 na economia. O Senado precisa aprovar a matéria que vai liberar auxílio de R$ 600 para trabalhadores informais para que Bolsonaro regulamente a medida. O presidente promete o quanto antes a medida.

No Palácio do Planalto, a ordem é minimizar o desgaste em torno das últimas atitudes do presidente. Na avaliação de um militar de alta patente que faz parte do governo, as ações que estão começando a aparecer para tentar responsabilizar Bolsonaro por incentivar o fim da quarentena não devem prosperar.

"Acho que não (vão prosperar). Fazem parte do contexto já criado", disse. "Já ou da hora de nos preocuparmos com pequenas coisas, precisamos olhar para os grandes problemas que batem à nossa porta", completou.

Sobre o fato de o Twitter ter apagado as postagens do presidente durante seu eio por Brasília, os auxiliares evitaram comentários ou minimizaram o episódio. Hoje cedo, Bolsonaro falou que não discutiria o assunto por se tratar de uma empresa privada.

"É irrelevante e não vai mudar nada", disse uma fonte palaciana sobre as postagens terem sido apagadas.

Ministros na linha de frente

Além do risco que se expõe ao sair e conversar com cidadãos, Bolsonaro convive com rumores constantes sobre a possibilidade de saída do ministro da Saúde, Luiz Henrique Mandetta, e da Economia, Paulo Guedes.

A interlocutores, Mandetta já afirmou que não deixará o cargo a menos que o presidente resolva demiti-lo. Já Guedes, depois de uma semana em quarentena no Rio, voltou a Brasília e vai ao Palácio do Planalto se encontrar com o presidente para fechar as novas medidas que o governo divulgará em breve, como a que permitirá a redução de salários.

No fim de semana, o ministro da Economia se mostrou dividido em relação a postura do presidente e disse que como cidadão preferia estar em casa.