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

Bolsonaro pede que seguidores pressionem Senado a manter decreto de armas

O presidente Jair Bolsonaro (PSL) - Fátima Meira/Futura Press/Estadão Conteúdo
O presidente Jair Bolsonaro (PSL) Imagem: Fátima Meira/Futura Press/Estadão Conteúdo

Do UOL, em São Paulo

15/06/2019 12h12Atualizada em 15/06/2019 13h37

O presidente Jair Bolsonaro (PSL) pediu apoio de seus seguidores nas redes sociais para pressionar senadores a rejeitarem projetos que anulam o decreto que flexibiliza a posse e o porte de armas. Os PDLs (projetos de decreto legislativo) que tentam derrubar o decreto assinado por Bolsonaro foram aprovados na CCJ (Comissão de Constituição e Justiça) do Senado na última quarta-feira (12) e devem ser votados no plenário da Casa nesta terça-feira (18).

"A CCJ do Senado decidiu revogar nossos decretos sobre CACs [colecionadores, atiradores desportivos e caçadores] e posse de armas de fogo. Na terça (18), o PL será votado no plenário. Caso aprovado, perdem os CACs e os bons cidadãos, que dificilmente terão direito de comprar legalmente suas armas. Cobrem os senadores do seu Estado", escreveu o presidente no Twitter.

Na CCJ, o resultado contrário ao decreto armamentista por 15 votos a 9 foi construído a partir de um acordo entre parlamentares, que envolveu partidos de esquerda e de direita, além dos senadores independentes. Se for aprovada, a matéria será remetida à Câmara dos Deputados, onde começará nova tramitação.

Os PDLs que questionam o decreto de Bolsonaro defendem que a medida é inconstitucional e que o presidente não pode legislar por meio de um ato normativo de iniciativa própria. Os autores argumentam que, nesse caso, houve uma invasão de competência.

Alcolumbre se diz indignado com ameaças

Ontem, o presidente do Senado, Davi Alcolumbre (DEM-AP), afirmou estar indignado com a notícia de que senadores contrários ao decreto das armas estariam sendo ameaçados. Segundo a Presidência da Casa, dentre os parlamentares, estão Randolfe Rodrigues (Rede-AP), Eduardo Girão (Podemos-CE), Fabiano Contarato (Rede-ES) e Veneziano Vital do Rego (PSB-PB).

Alcolumbre também disse que é preocupante que o direito do exercício à atividade parlamentar seja restringido por "covardes".

"Como presidente do Congresso, tomarei as providências necessárias para garantir a proteção e a liberdade de expressão constitucional e política de cada legislador", declarou Alcolumbre em sua conta no Twitter.

Entenda como ficou o decreto das armas de Bolsonaro

Band Notí­cias