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

Para Aécio, articulação de Serra por candidatura à Presidência é "legítima"

Guilherme Balza

Do UOL, em São Paulo

28/10/2013 21h01

O senador Aécio Neves (MG), pré-candidato do PSDB à sucessão presidencial, afirmou nesta segunda-feira (28), em São Paulo, que considera “legítima” a postulação do ex-governador José Serra a uma eventual candidatura à Presidência.

Questionado sobre as viagens e o discurso de candidato adotado por Serra nas últimas semanas, Aécio disse que é algo “absolutamente natural e bom para as oposições”.

“Na hora certa o PSDB vai estar unido. Temos consciência que a nossa unidade, nosso mais vigoroso combustível político é enfrentar o governo. Eu tenho conversado com o companheiro Serra, é legitima sua postulação, é um quadro extraordinário da vida pública brasileira, mas o partido, na hora que tomar sua decisão, qual seja ela, estará unido”, afirmou o senador, que participa de um evento, ao lado da presidente Dilma Rousseff (PT), da revista "Carta Capital".

Perguntado sobre a possibilidade de Serra ser seu vice, Aécio respondeu que “isso sequer foi cogitado”. “Não está na nossa agenda de hoje. Essa é uma questão para o ano que vem. Nós sequer temos um candidato definido. Acho que estrategicamente não devemos ter.”

Embora evite se colocar como pré-candidato, Aécio disse que irá elaborar até dezembro um conjunto de proposta para basear o programa do próximo candidato tucano à Presidência. Para o senador, a candidatura deve ser definida entre fevereiro e março do ano que vem.

“A política é a arte de istrar o tempo. Não acho podemos ser engolidos pelo tempo. Mas também precipitar as coisas não há sentido pra isso. No início do ano que vem, entre fevereiro e março, é um bom momento para o PSDB tenha não só uma candidatura, mas um discurso muito claro”, disse. 

“Por isso, neste ano, em dezembro, eu estou definindo um conjunto de ações, não um programa, mas uma agenda de governo, a base do que viria a ser um programa de governo. E quando tivemos uma candidatura de alguma foram as pessoas já enxerguem nela o que pensamos”, disse Aécio.