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

Vereador do PSOL mais votado no Rio quer derrota de Crivella no 2º turno

Tarcísio Motta (PSOL), reeleito vereador na Câmara do Rio - Divulgação
Tarcísio Motta (PSOL), reeleito vereador na Câmara do Rio Imagem: Divulgação

Herculano Barreto Filho

Do UOL, no Rio

17/11/2020 21h02

Com 86.243 votos, Tarcísio Motta (PSOL), o vereador que superou Carlos Bolsonaro nas urnas e se tornou o mais votado nas eleições municipais no Rio, quer a derrota do prefeito Marcelo Crivella (Republicanos) no 2º turno do pleito para a prefeitura. O partido progressista definirá o seu posicionamento amanhã à noite, após reunião virtual com a participação da direção, dos vereadores ainda com mandato vigente e dos eleitos no domingo.

Apesar de contrário à reeleição de Crivella, Tarcísio se recusa a orientar voto no ex-prefeito Eduardo Paes (DEM), na disputa com Crivella. "Meu posicionamento é 'Crivella nunca mais'. Não é adesão ao Paes. Mas o adversário mais importante é o bolsonarismo, que se expressa na candidatura do Crivella. Nós seremos oposição ao Crivella ou ao Paes", disse, em entrevista ao UOL no começo da noite de hoje.

Tarcísio também descartou qualquer tipo de aliança com Paes. "Não vamos oferecer apoio em troca de cargos. Mas a nossa responsabilidade histórica é derrotar o Crivella no 2º turno", completou.

Em orientação divulgada hoje, o PT pediu à militância voto contra Crivella no 2º turno, relacionando-o com o presidente Jair Bolsonaro (sem partido).

"Nós, petistas, temos clareza de nossa responsabilidade com a cidade e com os cariocas. Consideramos que derrotar Crivella e Bolsonaro é a prioridade. Precisamos virar a página dessa istração desastrada e incompetente. Sendo assim, orientamos nossa militância e base social ao voto contra Crivella e Bolsonaro", diz o PT em nota oficial.

Assim como Tarcísio, o PT descarta apoio a Paes. Segundo o partido, o adversário de Crivella "se encontra em um campo político distante das bandeiras" que o PT defende.

"Esperamos que Eduardo Paes, eleito, cumpra suas promessas eleitorais. Nossa aguerrida bancada será implacável na defesa dos interesses do povo carioca, fiscalizando as ações do Executivo Municipal. Não desejamos nenhuma contrapartida. Cobramos, sim, a manutenção de seu compromisso com uma agenda democrática e que atenda as demandas mais sentidas para recuperação de qualidade de vida dos cariocas", explica o PT, em nota.