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

Quebrada Tech

REPORTAGEM

Texto que relata acontecimentos, baseado em fatos e dados observados ou verificados diretamente pelo jornalista ou obtidos pelo o a fontes jornalísticas reconhecidas e confiáveis.

Com pandemia, biblioteca cria delivery de livros para crianças da quebrada

Carolina Araújo é uma das gestoras culturais que coordenam o programa de delivery de livros em Perus - Djair Silva
Carolina Araújo é uma das gestoras culturais que coordenam o programa de delivery de livros em Perus Imagem: Djair Silva

Tamires Rodrigues

01/09/2021 04h00

"Muito obrigado, Tia Carol, por fazer voar minha imaginação." Esse foi o agradecimento escrito por uma criança de oito anos em carta enviada para a gestora cultural Carolina Araújo, uma das agentes culturais que organizam o projeto de delivery de livros na Ocupação Cultural Canhoba, um espaço comunitário de integração, criação, formação e fruição artística, localizado em Perus, bairro da zona noroeste de São Paulo.

Mais de 100 empréstimos de livros já foram realizados pela biblioteca comunitária que vem atuando em formato online, mostrando o interesse dos moradores da região pelo universo da leitura.

Em 2019, os integrantes da ocupação cultural inauguraram uma biblioteca comunitária para fomentar a leitura entre as crianças do território. Mas a pandemia de coronavírus determinou o encerramento das atividades presenciais do espaço comunitário de cultura e afetou a empolgação das crianças que estavam começando a descobrir a biblioteca.

"A gente estava com um grande público infantil, mas em março de 2020 a gente fechou", diz Caroline Araújo.

Com a ocupação cultural fechada, os agentes culturais que fazem a gestão do espaço começaram a receber mensagens de pais das crianças que frequentavam a biblioteca, perguntando quando o espaço iria reabrir e retomar as atividades.

Os agentes culturais então começaram a pensar em possibilidades para as crianças do bairro de Perus voltarem a ter o ao material da biblioteca. E assim surgiu a proposta de criar um delivery para entregar livros.

"A gente teve a ideia de montar um delivery para suprir essa necessidade. As crianças precisam de leitura nessa pandemia", diz a gestora cultural.

Araújo afirma que o delivery garante que os pais fiquem seguros em casa e não precisem sair para retirar livros para os filhos. "E a ideia é que todo mundo consiga pegar livro emprestado", diz.

A primeira ação do delivery de livros aconteceu em 2020 e se chamou 'Leia e devolva sem sair de casa'. No mesmo ano, a ocupação cultural foi contemplada com um edital de fomento ao teatro para a cidade de São Paulo, que chegou no momento certo para ajudar a financiar o projeto de entrega de livros.

"Tendo verba a gente consegue fazer os empréstimos de livros via delivery, e quem faz as entregas é o motoboy, que a gente contratou aqui da região de Perus. Ele faz as entregas, e o pedido de empréstimo é feito por meio de um formulário online, que a gente manda para as famílias", diz Araújo.

Pelo formulário, as famílias têm o ao acervo de publicações. A lista conta com a imagem de capa do livro, uma sinopse, e indicação de faixa etária adequada para leitura. "Nesse formulário, elas também fazem o cadastro, inserem nome do responsável, registro geral, nome da criança e uma data de agendamento, informando o dia que a gente vai entregar o livro na casa, no endereço que elas aram", conta Araújo.

Para sistematizar esse processo de entrega e catálogo de biblioteca em um formato online, os agentes culturais da Ocupação Cultural Canhoba criaram um banco de dados utilizando a plataforma de planilhas do Google, um processo simples que vem garantindo o ao livro e à leitura na região.

"Elas escolhem até dois livros e devolvem depois de 15 dias. A gente vai até a casa da pessoa e retira o livro, que é embalado e entregue numa sacolinha kraft", diz

"A nossa biblioteca comunitária tem um acervo adulto, mas a gente não conseguiu catalogar ainda. É um acervo grande, tem todas as áreas. Mas o foco agora são as crianças, elas estão com um tempo muito ocioso em casa, algumas não têm ido para a escola e muitas não têm o à internet. A gente sabe que as crianças estão superestressadas por conta da pandemia, e com a leitura elas dão uma acalmada. E também para elas não ficarem muito na rua, até para dar um sossego para as mães que estão em casa", afirma Araújo.

O grupo já realizou 13 ações e tem despertado um interesse crescente de moradores de outros bairros nos arredores de Perus. "Por enquanto, a gente não consegue atender os outros bairros", diz.