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

Esse conteúdo é antigo

ACM Neto culpa Doria por ida de Rodrigo Garcia ao PSDB: 'Desagregador'

"Postura desagregadora do governador de São Paulo amplia o seu isolamento político", criticou ACM Neto - Reprodução/Facebook
"Postura desagregadora do governador de São Paulo amplia o seu isolamento político", criticou ACM Neto Imagem: Reprodução/Facebook

Anaís Motta e Leonardo Martins

Do UOL, em São Paulo

14/05/2021 15h33Atualizada em 14/05/2021 16h54

Presidente nacional do DEM, ACM Neto (BA) criticou hoje o governador de São Paulo, João Doria (PSDB), pela mudança de partido do vice-governador Rodrigo Garcia, agora tucano e ex-DEM. ACM atribuiu a decisão a Doria, a quem definiu como "desagregador" e "despreparado para liderar um projeto nacional".

"A mudança do vice-governador Rodrigo Garcia para o PSDB é fruto de uma inexplicável imposição estabelecida pelo governador de São Paulo, João Doria, cuja inabilidade política tem lhe rendido altíssima rejeição e afastado os seus aliados", escreveu o ex-prefeito de Salvador em uma rede social.

A postura desagregadora do governador de São Paulo amplia o seu isolamento político, e reforça a percepção do seu despreparo para liderar um projeto nacional.
ACM Neto, em postagem no Twitter

Segundo ACM Neto, o momento exige grandeza dos homens públicos e "não é hora de dividir, mas de agregar". Ele também afirmou que o DEM defende a união de forças e que se deixe os interesses pessoais de lado.

"Certos de que o PSDB possui lideranças e quadros nacionais que são capazes de colocar os objetivos comuns e os sonhos para o futuro do Brasil à frente de projetos pessoais, o Democratas espera preservar a longa história de parcerias construída com o partido", concluiu.

Repercussão

Após as declarações de ACM, o governador João Doria disse compreender a posição do presidente do DEM e que o "perdoa" pelas críticas. O governador também negou que tenha cobrado de Rodrigo Garcia a ida para o PSDB, acrescentando que "não é hora de ressentimentos", mas sim de "união".

"Rodrigo Garcia não recebeu imposição de nenhuma ordem para ingressar no PSDB, exatamente pela nossa capacidade agregadora, para somar forças. Em nenhum momento ele manifestou qualquer posição negativa, crítica, ao DEM. A figura do seu presidente continua mantendo respeito e a todos aqueles que compõem o DEM", disse Doria durante o evento de filiação do vice, em São Paulo.

Já Bruno Araújo, presidente nacional do PSDB, afirmou ver nas postagens de ACM Neto uma manifestação de "zelo e cuidado" com o PSDB.

"[ACM] Lembra alianças, quadros importantes. Eu recebo do ponto de presidente como uma nota respeitosa em relação à situação com o partido. Há um desencontro de informações com o aspecto local em São Paulo", opinou.