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

Tatuador morre após ser atropelado três vezes seguidas em Santa Catarina

O tatuador Joni de Souza não resistiu aos múltiplos ferimentos que sofreu ao ser atropelado três vezes - Reprodução/Redes Sociais
O tatuador Joni de Souza não resistiu aos múltiplos ferimentos que sofreu ao ser atropelado três vezes Imagem: Reprodução/Redes Sociais

Colaboração para o UOL

16/01/2023 17h30

Um homem de 32 anos morreu após sofrer ferimentos múltiplos ao ser atropelado por três carros diferentes na rodovia BR-470, perto do trevo do município de Luiz Alves, no Vale do Itajaí, em Santa Catarina. Ele foi sepultado hoje, na cidade de Ilhota.

Joni de Souza era tatuador e morava com a mãe na cidade de Gaspar (SC). Segundo testemunhas relataram ao Corpo de Bombeiros Militar de Santa Catarina, ele caminhava pela estrada quando foi atropelado por um veículo na noite de sábado (14).

Arremessado para o outro lado da rodovia, acabou atingido por um segundo automóvel. Com o impacto, Joni foi lançado novamente para o outro lado da via, onde foi atropelado por um terceiro veículo.

O Corpo de Bombeiros foi chamado para atender a ocorrência por volta de 19h40 de sábado. Quando a equipe chegou no local, encontraram o tatuador embaixo de um automóvel. Com o auxílio de ferramentas, populares já haviam erguido o carro para facilitar o resgate da vítima.

Joni apresentava fraturas múltiplas, traumatismo cranioencefálico grave e hemorragia interna. Ele chegou a ser levado para um hospital da região, mas não resistiu aos ferimentos. Ele deixa uma filha de 2 anos.

Quando os Bombeiros chegaram ao local, encontraram Joni embaixo de um automóvel - Divulgação/CBMSC - Divulgação/CBMSC
Quando os Bombeiros chegaram ao local, encontraram Joni embaixo de um automóvel
Imagem: Divulgação/CBMSC

A reportagem entrou em contato com a Polícia Civil em busca de informações sobre a investigação do caso, mas não obteve retorno até a publicação da matéria.