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

Filha de João Alberto diz que sentiu raiva ao ver imagens da agressão

Thais Freitas, filha de João Alberto, que morreu após ser espancado por seguranças do Carrefour, em Porto Alegre - Reprodução/TV Globo
Thais Freitas, filha de João Alberto, que morreu após ser espancado por seguranças do Carrefour, em Porto Alegre Imagem: Reprodução/TV Globo

Do UOL, em São Paulo

23/11/2020 14h10

Thais Freitas, filha mais velha de João Alberto Silveira Freitas, que morreu após ser espancado em uma unidade do Carrefour, em Porto Alegre, contou que soube da morte dele por telefone e recebeu os vídeos das agressões que circularam na internet.

Em entrevista ao Encontro com Fátima Bernardes, da TV Globo, a jovem disse que sentiu raiva ao ver as imagens, as quais classificou como "horríveis".

"Senti raiva porque aquilo ali não se faz com ninguém, mesmo que a pessoa esteja certa, errada. Não precisava toda aquela agressividade deles", afirmou.

Segundo Thais, o pai se dava bem com todas as pessoas que o cercavam.

Os dois seguranças do estabelecimento — Magno Braz Borges e o policial militar temporário Giovane Gaspar da Silva — estão presos.

Análises iniciais dos departamentos de Criminalística e Médico-Legal do IGP (Instituto-Geral de Perícias) do Rio Grande do Sul apontam asfixia como provável causa da morte de João Alberto.

Thais também relatou que já se sentiu discriminada e que por vezes não quis ir ao colégio porque era chamada de "macaca" por alguns colegas.

Mãe de uma menina de 6 anos, ela disse que a filha viu as imagens do avô na televisão. "Comentei meio por cima com ela que ele tinha ido encontrar a mãezinha dele", disse ela sobre como explicou a situação para a criança.

Thais disse ainda não imaginar que a morte do pai fosse ter tamanha repercussão e que espera que a tragédia sirva para trazer mudanças para o país. A cena vem sendo comparada nas redes sociais ao que aconteceu com George Floyd, que morreu sufocado por policiais nos Estados Unidos e gerou protestos em algumas capitais do país.