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

PSDB decide ir para a oposição ao governo e aderir à frente democrática

O presidente Jair Bolsonaro (sem partido) - Divulgação
O presidente Jair Bolsonaro (sem partido) Imagem: Divulgação

Lucas Valença

Do UOL, em Brasília

08/09/2021 19h03

A Executiva Nacional do PSDB, após convocação extraordinária do presidente do partido, Bruno Araújo, decidiu por unanimidade ar para a oposição ao governo do presidente Jair Bolsonaro (sem partido), mas não firmou questão sobre se irá apoiar um possível novo pedido de impeachment contra o mandatário.

O PSDB também irá integrar uma chamada "frente democrática", que poderá incluir partidos como o MDB e o Solidariedade. Nos bastidores, apoiadores do deputado federal Aécio Neves (MG) tentaram impedir a ida da legenda à oposição, mas quando constataram a possível derrota, aderiram à maioria.

Segundo o presidente do PSDB de São Paulo, Marcos Vinholi, o partido fará uma "oposição com consistência e com responsabilidade com a democracia brasileira".

"O PSDB teve um papel muito importante desde a redemocratização e segue com essa responsabilidade frente aos excessos do presidente Jair Bolsonaro", afirmou.

Mesmo com a ausência do governador de São Paulo, João Doria, no encontro, o PSDB reuniu as principais lideranças do partido para definir uma posição contra as declarações antidemocráticas proferidas ontem nas manifestações de Brasília e São Paulo pelo presidente.

Um eventual apoio a um possível afastamento presidencial ainda será discutido pela legenda, mas a nova posição da legenda afeta a postura de tucanos no Congresso, o que gerou insatisfação de representantes ligados a Aécio. O parlamentar não marcou presença no encontro.

O político mineiro estaria sendo beneficiado com as chamadas emendas de relator ou RP9, que não são divulgadas ao público, e a ida do partido à oposição pode prejudicar a liberação de recursos.

Por meio de nota, a assessoria de imprensa do deputado afirmou que "é falsa a informação de que o deputado Aécio Neves teria tido tratamento diferenciado na liberação de emendas parlamentares através das chamadas emendas de relator. Apesar de considerar legítimo que parlamentares busquem recursos para os municípios que representam".

Na pauta da reunião, os integrantes da Executiva do partido decidiram não entrar com "medidas legais" contra o presidente. A proposta vinha sendo defendida por tucanos ligados à ala do governador paulista.

Ontem, Doria marcou posição contra as declarações de Bolsonaro, afirmando que o país "não pode mais" tolerar retrocessos. Ele também disse que a democracia "prevalecerá sobre o autoritarismo".

"Independência só é plena quando há respeito às leis, à Constituição e à democracia. Fora Bolsonaro", escreveu nas redes sociais.

Por meio de nota, o PSDB repudiou as "atitudes antidemocráticas e irresponsáveis adotadas pelo presidente da República em manifestações pelo dia da Independência" e diz "conclamar" para que as "forças de centro" se unam em favor da democracia.

"Os brasileiros esperam de seu governante soluções para a pandemia, para o desemprego, para a inflação crescente, para a crise hídrica, para a desigualdade, e para o descalabro fiscal", afirma a nota.