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

Recife: Homem fica cego de olho atingido por bala de borracha da PM em ato

Homem tenta estancar sangue após ser atingido no olho por uma bala de borracha - INSTAGRAM @hugomunizzz via REUTERS
Homem tenta estancar sangue após ser atingido no olho por uma bala de borracha Imagem: INSTAGRAM @hugomunizzz via REUTERS

Carlos Madeiro

Colaboração para o UOL, em Maceió

29/05/2021 20h08Atualizada em 30/05/2021 00h29

O homem de 51 anos atingido hoje por uma bala de borracha durante ação da PM de Pernambuco contra manifestantes do ato anti-Bolsonaro teve uma lesão que o fez perder a visão do olho esquerdo.

Segundo apurou o UOL, Daniel Campelo deu entrada no Hospital da Restauração, principal emergência do Recife. Ele aparece em várias filmagens com sangue no rosto, sendo socorrido durante a manifestação.

Ao chegar ao hospital, médicos analisaram a lesão e —em razão da gravidade e da falta de oftalmologista na unidade— decidiram encaminhá-lo para a Fundação Altino Ventura.

Exames apontaram que ele tinha "um trauma ocular com hematoma retrobulbar com proptose importante".

Ele foi avaliado com "amaurose unilateral". Segundo um oftalmologista ouvido pelo UOL, esse quadro quer dizer perda de visão do olho. "Ele ainda corre o risco de perder o olho, a depender da lesão", disse, sob sigilo de identidade.

Segundo informou o portal Marco Zero, a vítima não estava participando do ato e ava pelo local porque iria comprar material para trabalhar.

Ainda segundo o site, a família teria sido informada no fim da tarde que ele perderia o globo ocular. Campelo mora no bairro dos Torrões, zona norte da capital pernambucana.

Ação violenta marca ato

O fim do ato no Recife foi marcado hoje por repressão da PM, que dispersou os manifestantes com balas de borracha, bombas de efeito moral e spray de pimenta. Não houve qualquer reação dos manifestantes. Quatro pessoas chegaram a ser detidas.

Durante a ação da PM, a vereadora Liana Cirne (PT) foi agredida por um policial militar que jogou spray de pimenta na parlamentar. A agressão foi gravada em vídeo. A vereadora estava tentando conversar com os policiais que atuavam contra manifestantes, no centro do Recife.

Sem darem atenção à vereadora, eles seguiram para a viatura. Após entrarem, os policiais dispararam dois jatos de spray no rosto dela, que caiu no chão em seguida.

O governador de Pernambuco, Paulo Câmara (PSB), gravou um vídeo em que se solidarizou com as vítimas e comunicou o afastamento dos comandantes da operação. Além disso, determinou a apuração da ação dos policiais.

No vídeo, ele não deixa claro se autorizou ou não uma ação da PM para findar o protesto.

No Recife, havia uma recomendação do MP (Ministério Público) de Pernambuco para que não fosse realizado o ato, por causa do decreto que estabelece que "permanece vedada no estado a realização de shows, festas, eventos sociais e corporativos de qualquer tipo, com ou sem comercialização de ingressos, em ambientes fechados ou abertos, públicos ou privados, inclusive em clubes sociais, hotéis, bares, restaurantes, faixa de areia e barracas de praia, independentemente do número de participantes."

Mesmo assim, muitas pessoas foram até a praça do Derby, onde se concentraram para o ato por volta das 9h. Eles caminharam pelas ruas e foram confrontados pela polícia na ponte Duarte Coelho.