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

Em vídeo, Ciro se lança como 3ª via para 2022: 'nem Lula, nem Bolsonaro'

Ciro Gomes fez críticas a Bolsonaro e Lula em vídeo nas redes sociais - Kleyton Amorim/UOL
Ciro Gomes fez críticas a Bolsonaro e Lula em vídeo nas redes sociais Imagem: Kleyton Amorim/UOL

Do UOL, em São Paulo

12/07/2021 12h02Atualizada em 12/07/2021 15h34

O ex-governador do Ceará e ex-deputado federal Ciro Gomes (PDT) publicou hoje em suas redes sociais um vídeo no qual se coloca como uma terceira via para as eleições presidenciais de 2022.

Em tom eleitoreiro, Ciro diz no vídeo que, diferente de seus virtuais adversários Luís Inácio Lula da Silva (PT) e Jair Bolsonaro (sem partido), ele é o único que tem um "plano completo" para o Brasil, fazendo referência ao livro de sua autoria "Projeto Nacional: O Dever da Esperança".

Eu tenho um plano completo para tirar o Brasil desse dilema. Nesse livro está o mais difícil que temos de fazer, porque o mais fácil a gente sabe o que é: nem Lula, nem Bolsonaro
Ciro Gomes, em vídeo nas redes sociais

No vídeo, Ciro disse que suas críticas a Lula se deve ao fato de o petista dizer que vai fazer agora aquilo que não fez quando foi presidente. O pedetista foi aliado e ministro da Integração Nacional no governo Lula.

"O que eu critico o Lula não é pelas coisas boas que ele fez, é pelo que ele diz que fez e não fez, é pelo que ele fez de errado e tentou esconder, e, principalmente, pelo que ele diz que fará e não terá condições de fazer, porque ele não tem projeto claro, não tem propostas nem energia sincera para fazer", afirmou.

Sobre Bolsonaro, Ciro declarou que o atual Presidente da República representa "mentiras" e "traições" contra o povo brasileiro.

"O que eu critico e condeno em Bolsonaro é tudo o que ele representa, as mentiras e traições que cometeu e vem cometendo contra o povo brasileiro, a maldade, a destruição entranhadas em sua alma, o atraso, as trevas e a tragédia que ele representa", declarou.