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

País terá dificuldade se não mudar política ambiental, diz governador do ES

Renato Casagrande assinou carta com outros governadores em defesa do meio ambiente - Reprodução/Instagram
Renato Casagrande assinou carta com outros governadores em defesa do meio ambiente Imagem: Reprodução/Instagram

Do UOL, em São Paulo

21/04/2021 09h44Atualizada em 21/04/2021 10h12

O governador do Espírito Santo, Renato Casagrande (PSB), afirmou hoje que o governo brasileiro terá dificuldades caso o presidente Jair Bolsonaro (sem partido) e o ministro do Meio Ambiente, Ricardo Salles, mantenham o rumo de sua política ambiental.

"O presidente Bolsonaro tinha uma identidade 100% alinhada com [o ex-presidente dos EUA, Donald] Trump. Agora, ou governo muda e caminha corretamente nessa área ou terá dificuldade no governo do presidente Biden", afirmou Casagrande em entrevista ao canal GloboNews na manhã de hoje.

Casagrande e mais 20 governadores enviaram ontem uma carta ao presidente americano, Joe Biden, em que defendem medidas de preservação do meio ambiente. O Brasil participará da Cúpula de Líderes, que começa amanhã e vai discutir questões climáticas e ambientais.

O desmatamento na Amazônia deve ser uma das questões centrais a serem abordadas no encontro virtual. Números apontam que o desflorestamento avançou no governo Bolsonaro.

Governador nega concorrência com governo federal

Casagrande afirmou que o objetivo da carta enviada pelos governadores é estabelecer um canal de diálogo com Biden, que, segundo ele, tem uma visão mais progressista em relação às mudanças climáticas do que seu antecessor, Donald Trump.

O pessebista, no entanto, negou que os governadores estejam querendo concorrer com o governo federal em relação ao protagonismo no debate ambiental.

"Não quereremos concorrência com governo federal, mas entrar no tema efetivamente para que possamos alcançar metas estabelecidas no Acordo de Paris", declarou. "Queremos que nossa iniciativa seja mais uma e até incentive o governo federal a se voltar para esse tema, que está tirando oportunidade dos brasileiros."

Além disso, Casagrande afirmou que a iniciativa dos governadores também tenta mudar a imagem do Brasil, dentro e fora do país, em relação ao compromisso com a preservação ambiental.

"O Brasil é o país com a maior biodiversidade do planeta e nós, apesar disso tudo, conseguimos construir uma imagem muito ruim no cenário internacional. Os governadores podem atuar para ajudar a melhorar a imagem do Brasil e a consolidar ações concretas de recomposição florestal, de renovação das suas fontes de energia e de cumprimentos das metas estabelecidas no Acordo de Paris", disse.