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

Moro foi muito rápido, diz Bolsonaro sobre envio de Força Nacional ao Ceará

Gustavo Maia e Hanrrikson de Andrade

Do UOL, em Brasília

04/01/2019 12h24Atualizada em 04/01/2019 19h11

O presidente Jair Bolsonaro (PSL) elogiou nesta sexta-feira (4) a decisão do ministro da Justiça e da Segurança Pública, Sergio Moro, de enviar homens da Força Nacional ao Ceará, anunciada no fim da manhã.

Segundo Bolsonaro, o ex-juiz federal foi "muito hábil, muito rápido", diante da informação de que a violência se agravou no estado nordestino, "pelo que tudo indica".

Questionado sobre o fato de o governador do Ceará ser Camilo Santana, do PT, ele afirmou jamais faria oposição ao povo de qualquer estado.

"Desde ontem à noite, [estou] conversando com o ministro Sergio Moro e tratando desse assunto. Ele foi muito hábil, muito rápido e eficaz para atender inclusive o estado cujo governador reeleito tem uma posição radical a nós", declarou Bolsonaro. "E o povo do Ceará precisa nesse momento", acrescentou o presidente.

Segundo Bolsonaro, faltava por parte do governo do Ceará "realmente se enquadrar, e havia ofício, informar, dar a real necessidade da presença da Força pela sua incapacidade de resolver o problema".

"A Força Nacional já foi contatada, o plano de chamada já foi colocado em vigor e está na iminência de decolar para Fortaleza", informou.

Esta foi a primeira entrevista coletiva concedida por Bolsonaro depois de tomar posse. Nesta quinta, ele deu sua primeira entrevista como presidente, ao SBT. Na manhã desta sexta, ele participou da solenidade de troca de comando da Aeronáutica, na Base Aérea de Brasília.

Violência no Ceará

Desde a noite de quarta (2), Fortaleza e região metropolitana sofreram 39 ataques --entre eles, 16 incêndios a veículos, incluindo ônibus, e tentativas de explosão de uma delegacia e de um viaduto. Ao todo, 45 pessoas foram presas até o fim da manhã desta sexta, segundo o governo estadual.

De acordo com o ministério da Justiça e Segurança Pública, a Força Nacional irá atuar por 30 dias no estado. A tropa deve ir ainda nesta sexta para o Ceará. Caso necessário, o prazo de atuação da Força Nacional poderá ser prorrogado.

Na quinta-feira (3), o ministério disse que a Força Nacional foi mobilizada para se deslocar ao estado em caso de "deterioração de segurança". A portaria do Ministério foi publicada em edição extra do Diário Oficial da União no final da tarde.

Força-tarefa federal vai investigar ataques no Ceará

Band Notí­cias