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

Onyx segue Bolsonaro e critica governadores do NE, mas diz que não haverá boicote

O Presidente Jair Bolsonaro conversa com o ministro da Casa Civil Onyx Lorenzoni - Andre Coelho/Folhapress
O Presidente Jair Bolsonaro conversa com o ministro da Casa Civil Onyx Lorenzoni Imagem: Andre Coelho/Folhapress

Gabriel Wainer

Em São Paulo

24/07/2019 10h00

O ministro-chefe da Casa Civil, Onyx Lorenzoni (DEM-RS), endossou as críticas que o presidente da República, Jair Bolsonaro, fez aos governadores da Paraíba e do Maranhão, respectivamente João Azevedo (PSB) e Flávio Dino (PCdoB), num áudio vazado na última sexta-feira em uma conversa com a imprensa estrangeira.

Lorenzoni era o interlocutor de Bolsonaro na conversa e disse que o comentário do mandatário, que gerou mais uma crise para o governo, ocorreu porque esses governadores "são muito agressivos com o governo e com o presidente, partindo até para o campo pessoal", criticou, em entrevista concedida nesta manhã à Rádio Gaúcha.

A despeito do endosso às críticas de Bolsonaro e da crise desencadeada pelos polêmicos comentários, considerados ofensivos a todos os nordestinos, porque Bolsonaro os classificou de "paraíbas", Lorenzoni disse que tudo isso "faz parte do jogo político" e que não haverá nenhuma espécie de boicote do governo federal a esses entes federativos.

Na entrevista à rádio, Lorenzoni disse que Bolsonaro, antes de tomar posse, já havia pedido desculpas pelas "eventuais caneladas" que deu quando ainda era deputado federal, e que o presidente da República, nos comentários feitos na última sexta-feira, não quis se referir ao Nordeste de forma pejorativa quando falou dos "paraíbas".

"O presidente estava se referindo especificamente aos governadores dos Estados da Paraíba e do Maranhão", reiterou o ministro da Casa Civil. E partiu para o endosso das críticas: "estes dois, principalmente, têm um discurso em Brasília e outro em suas bases".

Lorenzoni assegurou, no entanto, que não há nenhuma intenção da gestão federal represar recursos aos Estados citados e que há o compromisso do governo em "fazer o pacto federativo, sem fechar as torneiras, inclusive ao Maranhão", cujo governador Flávio Dino foi classificado por Bolsonaro como "o pior deles (governadores nordestinos)".

Sem saber que era gravado, Bolsonaro faz críticas

UOL Notícias