;(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
Logo Pagbenk Seu dinheiro rende mais
Topo

Em costura com o Senado, governo ameniza derrota e reeditará MP trabalhista

Programa Verde Amarelo foi lançado pelo ministro Paulo Guedes e pelo presidente Jair Bolsonaro no Palácio do Planalto - Carolina Antunes/PR/Agência Brasil
Programa Verde Amarelo foi lançado pelo ministro Paulo Guedes e pelo presidente Jair Bolsonaro no Palácio do Planalto Imagem: Carolina Antunes/PR/Agência Brasil

Hanrrikson de Andrade

Do UOL, em Brasília

20/04/2020 16h42

O presidente Jair Bolsonaro (sem partido) decidiu acatar sugestão do chefe do Senado, Davi Alcolumbre (DEM-AP), e revogou a MP (medida provisória) do Contrato Verde e Amarelo, que perderia a validade hoje se não fosse votado a tempo no Parlamento.

Paralelamente, o governo anunciou que vai editar uma nova medida provisória com os trechos mais importantes da proposta.

A ideia é dar tempo para que o Congresso possa se debruçar sobre a proposição, cujo objetivo é flexibilizar regras trabalhistas para, de acordo com os argumentos do Ministério da Economia, estimular a criação de empregos.

Medidas provisórias têm um prazo de 60 dias, prorrogáveis por mais 60. O projeto original do Executivo foi enviado para a Câmara dos Deputados em dezembro e caducaria hoje.

Sem tempo para negociar, Bolsonaro aceitou a alternativa sugerida ontem (19) por Alcolumbre. Líder do Congresso Nacional, buscou dar uma ajuda ao governo no mesmo dia em que o presidente da República se juntou a um ato em defesa de um golpe de estado, em Brasília, e discursou para manifestantes que pediam o fechamento do Parlamento e do STF (Supremo Tribunal Federal).

Tramitação da 1ª versão da MP

Polêmica por natureza, pois mexe com regras trabalhistas e reduz encargos para empregadores, a tramitação da medida provisória se arrastou desde dezembro de 2019. A votação na Câmara dos Deputados só ocorreu na semana ada, em 15 de abril. No dia seguinte, foi remetida ao Senado.

Os senadores tiveram, portanto, apenas três dias úteis para analisar e votar o projeto. O prazo final era até hoje (20), meio ao feriado prolongado de Tiradentes.

Já na semana ada, Alcolumbre anunciou que, como não havia consenso, retiraria a MP da pauta de votações.

Ato com pauta anti-democrática

O tuíte de Alcolumbre com a sugestão endereçada a Bolsonaro foi publicado por volta de 16h de ontem. Até duas horas antes, o presidente estava em frente ao quartel-general do Exército em Brasília discursando para uma multidão de militantes aglomerados em ato pelo fechamento do Congresso e o retorno do AI-5 (Ato Institucional nº 5) —que representou o período mais duro da ditadura militar, entre 1968 e 1985.

"Não queremos negociar nada", afirmou ele, usando camiseta rosa em cima de uma caminhonete branca.

O discurso foi transmitido ao vivo pelas redes sociais do próprio presidente. "Todos no Brasil têm que entender que estão submissos à vontade do povo brasileiro", disse ele, antes de começar a tossir bastante. "Chega da velha política."