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

Gilmar Mendes critica 'despreparo policial' em atos: 'Cenas de truculência'

Ministro do STF, Gilmar Mendes criticou despreparo da polícia para lidar com manifestantes - Felipe Sampaio/STF
Ministro do STF, Gilmar Mendes criticou despreparo da polícia para lidar com manifestantes Imagem: Felipe Sampaio/STF

Colaboração para o UOL, em Alagoas

31/05/2021 11h41

O ministro do STF (Supremo Tribunal Federal) Gilmar Mendes criticou a ação da Polícia Militar no Recife, durante os atos realizados contra o presidente Jair Bolsonaro (sem partido), ocorridos no último sábado (29).

Por meio de seu perfil no Twitter, o ministro afirmou que as "cenas de truculência e brutalidade da ação policial" no Recife são preocupantes, sobretudo em um momento no qual "manifestações de grande porte tendem a se tornar frequentes em 2022", ano em que acontecerão eleições para presidente da República.

"As cenas de truculência e brutalidade da ação policial em Recife causam imensa preocupação com o despreparo das forças para lidar com manifestações de grande porte, que tendem a se tornar frequentes em 2022. Dois homens que sequer manifestavam perderam um olho. Até quando?", questionou Gilmar Mendes.

Trabalhador ficou cego de um olho

No tuíte crítico à ação policial no Recife, Gilmar Mendes utilizou a foto do trabalhador Daniel Campelo, de 51 anos, que perdeu a visão de um dos olhos após ser atingido por uma bala de borracha durante a manifestação anti-Bolsonaro na capital pernambucana.

Em entrevista ao UOL, Evelyn Maria da Sena, filha de Daniel, contou que sua família não é muito ligada às questões políticas, e que seu pai nem sequer participava da manifestação. Ele tinha ido ao centro para comprar material de trabalho.

"Meu pai trabalha com adesivação de veículos. Foi só comprar umas coisas para adesivar táxis. A gente nem sabia que estava tendo protesto". Daniel também desabafou e afirmou que foi "ao centro para comprar material para meu trabalho e acabei cego de um olho". Ele irá processar o estado de Pernambuco.

Além de Daniel, Jonas Correia de França, de 29 anos, também foi atingido por uma bala de borracha e ficou com lesão permanente em um dos olhos.

Manifestação

No último sábado, dezenas de milhares de manifestantes foram às ruas em várias cidades do país pela primeira vez desde o início da pandemia do novo coronavírus para protestar contra a gestão do presidente Jair Bolsonaro.

Organizados por movimentos sociais e com o apoio de partidos de esquerda, os atos foram realizados em todos os estados e no Distrito Federal e, entre as pautas, estavam a defesa do impeachment de Bolsonaro, além de críticas à gestão do mandatário, que durante a pandemia deu declarações polêmicas sobre a doença, e ignorou proposta de vacinas da farmacêutica Pfizer no ano ado.

Segundo os organizadores, os atos ocorreram em 213 cidades no Brasil e em 14 cidades no exterior, com a presença de 420 mil pessoas. Manifestantes ouvidos pelo UOL em capitais brasileiras afirmaram terem ido às ruas por causa das mais de 460 mil mortes causadas pela covid-19 e para cobrar mais vacinas.