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

'Ver o morro foi uma tristeza. É parte da nossa vida', diz desalojado em SP

Rua Maria Caetana, no morro da Barra do Sahy, uma das áreas afetadas em São Sebastião (SP) - Arquivo pessoal
Rua Maria Caetana, no morro da Barra do Sahy, uma das áreas afetadas em São Sebastião (SP) Imagem: Arquivo pessoal

Do UOL, em São Paulo

23/02/2023 12h21Atualizada em 23/02/2023 15h26

O aposentado Gilson Teixeira Gonçalves, 60, acordou com o barulho da chuva na madrugada do domingo (19). Nascido e criado em São Sebastião, ele sempre morou na rua Maria Caetana, no Morro da Barra do Sahy, uma das áreas mais afetadas pelas chuvas que devastaram o litoral norte de São Paulo. Hoje, está desalojado.

"Um amigo veio me avisar que o meu carro estava correndo risco de ser levado pela água. Aí fui ver meu carro, e já estava com muita água, muito acima do normal. Achei estranho, puxei o carro mais para cima e voltei para dormir", disse.

Mas Gilson não conseguiu mais dormir. Pouco depois, junto a um grupo de moradores, viu que uma das casas vizinhas desabou. "O caseiro estava pedindo ajuda porque era uma casa bem estruturada. Fui tentar ajudar e não consegui localizar. Acabou a luz, eu perdi minha lanterna na correnteza e foi impossível."

gilson - Arquivo pessoal - Arquivo pessoal
Gilson Teixeira Gonçalves, 60, é um dos desalojados do Morro da Barra do Sahy
Imagem: Arquivo pessoal

A chuva aumentou ainda mais. "A partir dali, comecei a limpar a água do lado de casa, com a enxada, porque estava com muito barro. Previ que o barro podia acumular ali, e a água entraria na minha casa."

O morro veio abaixo

Ao amanhecer, Gilson e a esposa começaram a perceber a gravidade da chuva que durou a madrugada toda: a via estava completamente bloqueada, não havia mais rede elétrica ou de internet. "Eu vi a água, vi o estrondo, materiais de entulho, nossa rede elétrica e de água, tudo junto. Não conseguimos andar", recordou.

Quando olhamos o morro foi uma tristeza. Ele faz parte da nossa vida. Mas vamos acreditar que a própria natureza vai reflorestá-lo."
Gilson, morador da Barra do Sahy

Na manhã do domingo, Gilson ajudou outros moradores a evacuar as casas, principalmente crianças. Eles foram para o Hotel Aldeia de Sahy, localizado a 1,3 quilômetros do morro, que acolheu desalojados. Agora o casal está hospedado na pousada Parcela das Ilhas, onde ficará até conseguir voltar para casa.

Para sairmos eu tive que limpar a trilha com o facão, do jeito que deu."

Segundo Gilson, sua residência não foi tão afetada como a dos vizinhos por ficar no meio do morro. "O perímetro da minha casa, tanto do lado direito quanto do lado esquerdo, não teve nenhum dano. Do topo do morro até embaixo não teve deslizamento, mas em volta foi um estrago grande", afirmou.

Agora, o morro começou a secar. Acho que vai dar para recuperar, a própria natureza vai recuperar."

Antigo morador da região, Gilson lembra que as encostas dos morros já foram os pontos mais procurados para se morar na região. "Na praia não existia água corrente, não tínhamos encanação. Os melhores lugares eram sempre nas encostas, porque era perto das cachoeiras e bicas d'água".

Até o momento, 49 mortes foram confirmadas pelas autoridades no litoral norte. São 48 vítimas em São Sebastião e uma em Ubatuba —38 corpos foram identificados e liberados para o sepultamento (13 homens, 12 mulheres e 13 crianças). Dezenas de pessoas ainda estão desaparecidas, vítimas de enchentes e desabamentos de casas.