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

Podcast

UOL Entrevista

Entrevistas exclusivas e na íntegra, sobre variados temas, feitas pelo time de profissionais do UOL


Esse conteúdo é antigo

Salles afirma que Ibama é lento e diz que relatório de ONG é 'militância'

Do UOL, em São Paulo

25/05/2020 19h08Atualizada em 27/05/2020 13h47

Ricardo Salles, ministro do Meio Ambiente, chamou de "militância" um relatório da ONG Humans Rights Watch (HRW), que denunciou que as sanções a crimes ambientes estão paralisadas na parte brasileira da Amazônia desde outubro de 2019 por causa de um decreto do presidente Jair Bolsonaro (sem partido). Ele ainda apontou suposta lentidão do Ibama.

"Esse relatório da ONG é típico de militância. Há um relatório da CGU, em março de 2019, que os processos [istrativos] do Ibama demoram 7 anos para serem concluídos. Ou seja, não sou eu ou a atual gestão do Ibama para protelar. É o antigo modelo", afirmou em entrevista concedida ao UOL hoje.

"Se nós estivéssemos no modelo anterior, esses sete meses que a ONG HRW está dizendo 'absurdos' não teriam nem sido concluídos. Veja como é coisa de militância", completou. "O presidente me cobra esses temas publicamente. Agora, ele nunca interferiu sobre nenhum caso específico. O que ele reitera é que esse tipo de medida que tem de ser usado com muita moderação".

Embora Salles tente justificá-la, a frase dita na reunião (veja abaixo) teve repercussão negativa no exterior, sobretudo dentre personalidades ligadas às pautas de defesa do meio ambiente. É o caso da jovem ativista sueca Greta Thunberg.

"Parte da repercussão no exterior é propositalmente orquestrada por entidades que querem levantar projetos sociais, querem dinheiro lá fora. Mas tudo bem, isso faz parte", acusou.

"O governo tem um projeto sustentável para a Amazônia. O recurso que eles estão nos negando na compra de carbono poderia ir para a preservação da floresta", comentou. "Boicotar o produto brasileiro no exterior só vai piorar. Os locais onde há mais pobreza têm desrespeito com a natureza", disse Salles.