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

Deputados paulistas destinam R$ 325 mi em emendas para combater covid-19

Getty Images/iStockphoto
Imagem: Getty Images/iStockphoto

da Agência Brasil

03/04/2020 18h30

O governador de São Paulo, João Doria, anunciou que os deputados da Assembleia Legislativa de São Paulo vão destinar R$ 325 milhões em emendas parlamentares para o combate ao coronavírus no estado. O recurso vai ser utilizado exclusivamente para ações na área de saúde e de combate ao coronavírus.

A autorização para liberação inicial de R$ 82 milhões será publicada no Diário Oficial do Estado de São Paulo amanhã. O restante dos recursos, no total de R$ 243 milhões, será liberado no prazo máximo de dez dias.

Violência doméstica

Doria anunciou também que a Delegacia Eletrônica começou a registrar casos de violência doméstica em São Paulo. No entanto, o atendimento presencial prossegue normalmente nas 134 Delegacias de Defesa da Mulher (DDMs) do estado.

Assim como nos demais casos registrados pela delegacia eletrônica, os boletins de violência doméstica arão por uma triagem e serão encaminhados às DDMs correspondentes à região de cada ocorrência. Nas cidades que não possuem uma DDM, a ocorrência será direcionada à delegacia territorial correspondente à residência da vítima.

Caberá aos delegados e delegadas responsáveis providenciar as diligências e perícias necessárias, assim como entrar em contato com as vítimas.

Decreto municipal

Durante coletiva ao lado do governador, o prefeito de São Paulo, Bruno Covas, disse ter assinado um decreto que prevê, entre outras medidas, a prorrogação, por 90 dias, das validades das certidões conjuntas negativas de débito; a suspensão, por 60 dias, do envio de débitos inscritos na dívida ativa a tabelionatos de protestos e de letras e títulos; e a suspensão por 30 dias da inscrição em dívida ativa de débitos perante o município.

Segundo o prefeito, a medida prevê diminuir os impactos sociais e econômicos na cidade de São Paulo por causa da crise relacionada à pandemia do coronavírus. De acordo com Covas, a prefeitura estima agora que os impactos econômicos na cidade de São Paulo, com a perda de arrecadação, serão da ordem de R$ 3,6 bilhões.