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

Ataque com atirador no Texas deixa uma pessoa morta e sete feridas

Polícia na cena do ataque a tiros em Bryan, no Texas - Reprodução/CNN Internacional
Polícia na cena do ataque a tiros em Bryan, no Texas Imagem: Reprodução/CNN Internacional

Do UOL, em São Paulo

08/04/2021 19h02Atualizada em 09/04/2021 07h04

Um ataque a tiros na cidade de Bryan, no estado do Texas (EUA), deixou uma pessoa morta e sete feridas, quatro delas em estado grave. O tiroteio ocorreu em uma loja de móveis, poucas horas depois de o presidente do país, Joe Biden, revelar planos para lidar com a crise.

O suposto atirador é um homem de 27 anos que foi preso e acusado de assassinato. Ele era funcionário da loja em que aconteceu o tiroteio, informou Eric Buske, chefe da polícia de Bryan City. Seus motivos permanecem desconhecidos no momento.

"Por volta das 14h30, recebemos um chamado para um tiroteio. Os policiais responderam, encontraram várias vítimas e estavam revistando a área, revistando edifícios, procurando mais vítimas", informou Jason James, porta-voz da polícia de Bryan, no leste do Texas.

De acordo com imagens de câmeras do tráfego de veículos da cidade, duas ambulâncias deixaram a 350 Stone City Drive por volta das 14h30 (horário local, às 16h30 no horário de Brasília) em direção ao Hospital regional St. Joseph.

Uma pessoa morreu, confirmou Buske e quatro foram levadas para o hospital em estado crítico. No total, sete pessoas ficaram feridas.

O ministério da Segurança Pública do Texas informou que um oficial também foi ferido a tiros "quando perseguia um indivíduo suspeito de envolvimento no tiroteio de Bryan e está em condição grave, mas estável".

O ataque ocorre após recentes tiroteios em massa no Colorado, Geórgia e Califórnia.

Ontem, Biden qualificou a violência com armas de fogo nos Estados Unidos como uma "epidemia" e uma "vergonha internacional". Ele anunciou várias medidas para tentar reduzir o problema que provoca 40 mil mortes por ano nos Estados Unidos.