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

Jamil Chade

REPORTAGEM

Texto que relata acontecimentos, baseado em fatos e dados observados ou verificados diretamente pelo jornalista ou obtidos pelo o a fontes jornalísticas reconhecidas e confiáveis.

Sem Bolsonaro, estados negociam dinheiro dos EUA e China para clima

Manifestação no centro de Glasgow, liderada pelo movimento Extinction Rebellion - REUTERS/Hannah McKay
Manifestação no centro de Glasgow, liderada pelo movimento Extinction Rebellion Imagem: REUTERS/Hannah McKay

Colunista do UOL

04/11/2021 09h26Atualizada em 04/11/2021 14h12

Receba os novos posts desta coluna no seu e-mail

Email inválido

Num gesto inédito, governadores brasileiros se unem para mandar uma mensagem política forte ao mundo de que estão dispostos a manter um plano de redução de emissões de gases de efeito estufa. Nesta quinta-feira, durante a COP26 (26ª Conferência Mundial do Clima da ONU), em Glasgow, um evento marcou o lançamento internacional do projeto, que visa buscar recursos para financiar projetos de adaptação no país e driblar a falta de credibilidade internacional do governo do presidente Jair Bolsonaro (sem partido).

O grupo, que já conta com 22 estados, manteve reuniões para buscar o financiamento de projeto com Europa, China, França, Reino Unido e EUA. A agenda repleta de encontros por parte dos governadores ainda contrasta com a ausência completa de reuniões de Bolsonaro no G20, no fim de semana.

O chefe de estado tampouco viajou para a Cúpula do Clima e, ao ser questionado pelo UOL sobre o motivo da ausência, apenas respondeu: "não te devo satisfação, rapaz".

Os estados, portanto, estão usando a ausência do governo federal para sair em busca de recursos. O processo mais avançado ocorre com os EUA. Depois de um primeiro encontro com John Kerry, o representante de Joe Biden para o clima, agora o grupo de governadores se reúne nesta quinta-feira para dar seguimento à aproximação.

Já com a China, a conversa é inicial. Mas existe uma esperança de que a aproximação com Pequim permita um novo fluxo de recursos.

Apesar da busca paralela por dinheiro, os estados sabem que vários dos projetos de financiamento terão de ar por uma aprovação do governo federal.

"Não podemos substituir o governo federal", disse o governador do Espírito Santo, Renato Casagrande, uma espécie de porta-voz do grupo. Segundo ele, os compromissos anunciados pelo governo federal de corte de emissões são importantes. Mas ele alerta: "compromissos nesse governo não significam muita coisa. Queremos ver os planos e o que vai ocorrer na prática".

Com cada um dos parceiros internacionais, os governadores tentam mostrar que contam não apenas como metas, mas com caminhos de implementação.

Eduardo Leite, governador do Rio Grande do Sul, é outro que faz parte do grupo e, em Glasgow, insistiu sobre a necessidade de que o bloco possa ter o a mecanismos de financiamentos no exterior. "A ausência do governo federal gera nossa mobilização", disse. Sua esperança é de que, nos próximos meses, todos os estados façam parte do consórcio.

Esnobado por Bolsonaro, príncipe Charles se reúne com governadores

Ainda hoje, o príncipe Charles irá se reunir com os governadores estaduais brasileiros durante a Conferência do Clima da ONU, a COP26. Em Glasgow, o herdeiro da coroa britânica buscará esclarecimentos sobre o que as autoridades estão planejando para permitir que metas de redução de emissões de gases de efeito estufa sejam atingidas e garantir a redução no desmatamento no país.

O encontro, porém, ocorre poucos dias depois que Charles foi esnobado pelo presidente brasileiro, Jair Bolsonaro. No domingo, durante a cúpula do G20 em Roma, a presidência italiana organizou um debate sobre o clima com os líderes mundiais. Charles fez o discurso de abertura, dando o tom sobre a emergência da crise.

Mas, no encontro, uma ausência chamou a atenção: a de Bolsonaro. Em seu lugar, o Brasil foi apenas representado pelo chanceler Carlos França. Procurado, o Palácio do Planalto não deu respostas sobre a ausência do presidente brasileiro, insistindo que sua agenda não incluía o encontro sobre o clima com o monarca e os demais líderes.