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

Aliado de Eduardo Paes surge como favorito para presidir Câmara do Rio

Eduardo Paes e Carlo Caiado (de laranja, ao fundo) têm ido juntos a agendas, reforçando a parceria - Gabriel Sabóia/UOL
Eduardo Paes e Carlo Caiado (de laranja, ao fundo) têm ido juntos a agendas, reforçando a parceria Imagem: Gabriel Sabóia/UOL

Gabriel Sabóia

Do UOL, no Rio

19/11/2020 04h00

Pouco mais de 48 horas depois da votação que definiu os 51 vereadores que vão compor a Câmara Municipal do Rio no próximo mandato, os eleitos já se articulam pela liderança da Casa.

O vereador reeleito Carlo Caiado (DEM), um dos principais aliados de Eduardo Paes (DEM), surge como o favorito da bancada do partido para ocupar a presidência da Câmara na próxima legislatura e compor uma base de apoio, caso o ex-prefeito volte ao Executivo municipal.

Tradicionalmente, o grupo político de maior bancada na Câmara encabeça a chapa que comanda a Mesa Diretora.

Em raras oportunidades nos últimos anos houve uma disputa pela presidência. A coligação de Paes elegeu 15 dos 51 vereadores. No entanto, fala-se em mais cinco deputados que, apesar de não terem feito parte da coligação, possuem afinidades com Paes e poderiam compor a sua base de apoio, caso seja eleito.

Em seu quinto mandato, Caiado teve 26.212 votos —a maior parte deles na zona oeste. Na reta final da campanha, ele tem sido um fiel escudeiro de Eduardo Paes. Não por acaso, o bairro de Guaratiba, na zona oeste da capital, que concentra a maior parte dos eleitores de Caiado, foi escolhido pelo ex-prefeito para o último ato de campanha do 1º turno.

Na tarde de terça-feira (17), Paes iniciou a campanha do 2º turno no mesmo bairro. Novamente, ele chegou e saiu acompanhado por Caiado, ao lado de quem concedeu entrevistas e cumprimentou eleitores.

Questionado pelo UOL sobre a possibilidade de presidir a Câmara, Caiado fez questão de desconversar. "Só depois do 2º turno eu teria qualquer tipo de diálogo desse tipo", afirmou, antes de lembrar que é um político experiente e que a presidência da Câmara "precisa de alguém que agregue de todos os lados".

Aos 39 anos, Caiado foi eleito para o seu quinto mandato na Câmara. Ele também é presidente municipal do DEM. Antes, ocupou a vice-presidência da Câmara e foi integrante da Mesa Diretora.

O partido dele e de Paes, o DEM, elegeu sete vereadores, o mesmo número que o Republicanos e o PSOL. No entanto, a possibilidade desses partidos lançarem chapas competitivas para a disputa da Câmara é considerada nula, já que o PSOL dificilmente irá compor com outros partidos e ter votos suficientes.

Já em relação ao Republicanos, comenta-se que dificilmente haverá uma unidade no partido, cuja bancada é formada por políticos com afinidade com o presidente Jair Bolsonaro (sem partido), que se filiaram na última hora para ter uma legenda, e representantes da bancada religiosa, que votam de acordo com convicções próprias.

Embora a candidatura de Caiado seja pensada para a hipótese de eleição de Paes, o bloco liderado por ele fará oposição a Marcelo Crivella (Republicanos), caso o prefeito vença a disputa.