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

Sob a sombra do radicalismo, pauta de Bolsonaro enfrenta teste das ruas

24.mai.2019 - O presidente Jair Bolsonaro durante reunião do Conselho Deliberativo da Superintendência de Desenvolvimento do Nordeste (Sudene), no Instituto Ricardo Brennand, no Recife - Chico Peixoto/Estadão Conteúdo
24.mai.2019 - O presidente Jair Bolsonaro durante reunião do Conselho Deliberativo da Superintendência de Desenvolvimento do Nordeste (Sudene), no Instituto Ricardo Brennand, no Recife Imagem: Chico Peixoto/Estadão Conteúdo

Bernardo Barbosa

Do UOL, em São Paulo

26/05/2019 04h00

Apoiadores do presidente Jair Bolsonaro (PSL) prometem ir hoje às ruas de dezenas de cidades em todo o país para defender pautas de interesse do governo, como a reforma da Previdência e o pacote anticrime, e repudiar o "centrão" --visto pelos militantes como obstáculo à aprovação das propostas no Congresso.

As manifestações poderão servir de termômetro do apoio a um governo que recebeu a pior avaliação para um começo de mandato nos últimos 24 anos e foi alvo de uma grande mobilização da oposição em seu quinto mês de vida, motivada pelos cortes nas universidades públicas.

A convocação para os protestos teve sobre si a sombra de militantes que levantaram, nas redes sociais e no WhatsApp, pautas radicais como uma intervenção militar ou o fechamento do STF (Supremo Tribunal Federal) e do Congresso Nacional. Os organizadores do ato rechaçaram tal associação, da qual Bolsonaro também buscou distância.

Não foi o suficiente para atrair movimentos como o MBL (Movimento Brasil Livre) e o Vem pra Rua, protagonistas da mobilização pelo impeachment de Dilma Rousseff (PT). O MBL, especificamente, declarou que não iria aderir às manifestações por causa de "um setor em especial" que incentivou "pautas antirrepublicanas".

Entre os movimentos da sociedade civil que convocaram as manifestações estão Nas Ruas, Avança Brasil e Ativistas Independentes. O Clube Militar também declarou seu apoio, e parlamentares federais e estaduais do PSL confirmaram presença.

Os organizadores dos atos marcados para hoje negam envolvimento com o governo ou partidos e tratam o movimento como "espontâneo". Bolsonaro cogitou participar das manifestações, segundo relatos de pessoas próximas, mas depois anunciou publicamente que não o faria.

Representantes de caminhoneiros também decidiram apoiar o governo neste domingo, mas nenhum grupo declarou endosso formal aos atos --a classe não apoia de forma unânime o governo ou pautas como a reforma da Previdência.

Movimento "espontâneo"

O domingo também deixa no ar a expectativa sobre a reação da classe política ao que acontecerá nas ruas, já que a mobilização dos militantes pró-Bolsonaro tem como pano de fundo a turbulenta relação entre Executivo e Legislativo.

O presidente da Câmara dos Deputados, Rodrigo Maia (DEM-RJ), disse neste mês que o Congresso aprova a nova Previdência "com o governo ajudando ou atrapalhando". Bolsonaro, por sua vez, endossou dois dias depois uma carta em que o Brasil é descrito como "ingovernável" fora de "conchavos", em discurso de tom bastante similar ao adotado pela militância que promete apoiá-lo hoje.

Neste clima, a ideia de um "protesto a favor" do governo e mirando o "centrão" foi rechaçada até mesmo por estrelas do partido de Bolsonaro, como a deputada federal Joice Hasselmann (PSL-SP), líder do governo no Congresso; e a deputada estadual paulista Janaina Paschoal.

Por adotarem tal atitude, ambas foram alvo da ira de militantes mais devotados a Bolsonaro nas redes sociais. O mesmo ocorreu com o MBL e seus integrantes mais conhecidos, como o deputado federal Kim Kataguiri (DEM-SP).