{"_id":"react-fuffer","_rev":"222-e18a6a3bcbac10a63e90f93aeda7292d","name":"react-fuffer","dist-tags":{"latest":"2.0.4"},"versions":{"1.5.11":{"name":"react-fuffer","version":"1.5.11","description":"react-buffer-firestore, a class- or *hook-based, promise-less handler for firebase firestore onSnapshot documents","main":"src/index.js","keywords":["firebase","firestore","firebase-firestore","buffer","react","array-buffer","onSnapshot","snapshot","keepalive","firebase-plugin"],"repository":{"type":"git","url":"git+https://github.com/nickcarducci/react-fuffer.git"},"sideEffects":false,"license":"UNLICENSED","author":{"name":"Nick Carducci nick@carducci.sh"},"bugs":{"url":"https://github.com/nickcarducci/react-fuffer"},"peerDependencies":{"firebase":">=8.7.0","react":">=16.8.0"},"homepage":"https://github.com/nickcarducci/react-fuffer#readme","_id":"react-fuffer@1.5.11","_nodeVersion":"14.15.1","_npmVersion":"7.19.1","dist":{"integrity":"sha512-PVJvTVc4G8x6RuZ1pcDVaYQtB8EDehgFxJs84CYjMISy0DgkUFdIJRg5ZGRT7xUAb7OxQlgfpChvl61vwVmanw==","shasum":"8e148c3c9b448d842d207d45fbf760cfdde79696","tarball":"https://registry.npmjs.org/react-fuffer/-/react-fuffer-1.5.11.tgz","fileCount":4,"unpackedSize":44785,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJh24VJCRA9TVsSAnZWagAA+9AP/A3tQX5XpNJJUp3O8F9F\nigHVMGX51Psw18NsDngxitrvaYnZpMy6g3FTTETXQUdaWXeVz2kVZQ5MzdEi\ny0xJgPOMUy8GAh3EdGzBjdL1Xcoa/X72m9TBRToyTOdkuY7w08ZtQikKT/Bp\nbVEyimM5H/a4aCBRKwvh22CbluoUrsQtWoKyMvIrWkc2+xOrIPrOX9zyBJOE\nMdGWXU3cUoDxxspO/COxM4HwDFt97F2vfRApAAm8ltl47auGevgy7mUpTAdI\nZ1WNXNWXou48hHKh9bhCxLzF5i4MK0XkcHbtTxVlxbZl4TDZGpdZXphO28VV\n7K1v3PjQIkq/ehDJAQaArkopmF0RsEV7M6D4NuN735x+OErdH29Y3a4KJQGk\nZ3mpEx7QKihSUF21WL7VVvma62lS4eQLt1vSpDgsetroERmvS0yYdhAcyBDt\nbrJgA41wqKolWNUbdevVVkeovbHcYhWL/gd5GPDrShhYFoetVxJskBKZ/NEL\nMxqutwyA7ePtlAi6WhzrbG9IEx3R36gF5oB5noJIWpEMiwwf00hiuEjiUcFD\nzP5Tj3qRYA0qhiIsWXsBfiQH6sNTuI1qg/sPyXOt73T1pAWJY5rF2zVhAOhg\nneBJciSpA3JItrKkgN3ErIvprscRqaHFUmH8oU2097J2Rd3GufF5GDv9Xq3N\no2QA\r\n=EWTM\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGpfVVcT0dM/4TRD1vHv9eSv0GpH27hbal98Zvg3sd8xAiEA9WuRCg1l30Qat3bwuKFLDuallGApl8qIFXe3LvTfY6M="}]},"_npmUser":{"name":"nickcarducci","email":"nick@carducci.sh"},"directories":{},"maintainers":[{"name":"nickcarducci","email":"nick@carducci.sh"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/react-fuffer_1.5.11_1633288809020_0.9700918197862682"},"_hasShrinkwrap":false},"2.0.3":{"name":"react-fuffer","version":"2.0.3","description":"react-buffer-firestore, a class- or *hook-based, promise-less handler for firebase firestore onSnapshot documents","main":"src/index.js","keywords":["firebase","firestore","firebase-firestore","buffer","react","array-buffer","onSnapshot","snapshot","keepalive","firebase-plugin"],"repository":{"type":"git","url":"git+https://github.com/nickcarducci/react-fuffer.git"},"sideEffects":false,"license":"UNLICENSED","author":{"name":"Nick Carducci nmcarducci@gmail.com"},"bugs":{"url":"https://github.com/nickcarducci/react-fuffer"},"peerDependencies":{"firebase":">=8.7.0","react":">=16.8.0"},"gitHead":"efdb27f84c73b78829008e54a26b8bcc3e20fd98","homepage":"https://github.com/nickcarducci/react-fuffer#readme","_id":"react-fuffer@2.0.3","_nodeVersion":"16.17.0","_npmVersion":"8.15.0","dist":{"integrity":"sha512-AKV7bRDq8sJ+uLtxBb/aNZEBEvxgFhqegJPe+q01m0t2N6+I4X94BRrn2o6GhEUUIGgTzU7UZXJatGfOpTY65w==","shasum":"37d0527959d632b549e481d523628703d2c6089a","tarball":"https://registry.npmjs.org/react-fuffer/-/react-fuffer-2.0.3.tgz","fileCount":4,"unpackedSize":39749,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICpCScZ5ApHlxXPe5moTcnYNQjJoLPzGOgGLvbwIaq5IAiEAlGpS5B3DVHuQ0pxWtbpuJ6ZohHkZXudWIokwlBSBi3Y="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjql0uACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmoLIg//cyKIcjYDlNebLyomih9PCKBNdmxxdfI3NBseSYINeEsShr49\r\nyqmSF4JL8BPEKQzHMmLq66RIUIIrcuEwHCTZ3C2vQv99W8W4ZEJ9xwJq3cz6\r\n5eAo+7BXOI364oF6fAqtFI3Kuf8ByzDXey1Ur+09vWQ6VBFaIF45dzGK8LHO\r\nrHa8q7i8AucqIojHq9U4ZMGfoft5zTZHXkf2an1D5XnPaDgxLq02hYK5PxO5\r\n/Rg6jy0OmuoGAos+JCmSrpbg8urqxH51JMGgKmRmRBkJobg70Le69mjZ1XDf\r\nP6huLKKHAMov9SyKeESpZoMyGYB0Rk+YstJj9SJWdENM/Z1kZi0dJD9nJJGY\r\nLl/h5ZScn981ld8aZrfC+pA0MMCwANEjtBgkzJsImZN2zBDvI8yzmlgGCUIa\r\n178A/EIrKzcozqVRa2hwz6w+UQiR6yKGmtqgELRGid4l0llHm84pHg+0wPMw\r\niCkh/kc575yegsyatEyyzmC5gFTtx/SyDTkpk5jo2TnClNkVTQ4d1sI1aLV2\r\njqgejFjrqgD+YtDZZT3KorSsZ+hZo4kRIzjhfpE+N2v3leG0C4kcXlQiZAKf\r\nGA08bZx0nQq16crlw4GaUHjuevgD3kszbvjaemnYHlGpIHFAr1dljUcNBB6/\r\nGdY4N/6vSdvLlVjaCBTPAcfEJr36vR0IfQM=\r\n=ask4\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"nickcarducci","email":"nick@carducci.sh"},"directories":{},"maintainers":[{"name":"nickcarducci","email":"nick@carducci.sh"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/react-fuffer_2.0.3_1672109358219_0.4425086937512783"},"_hasShrinkwrap":false,"deprecated":"update currentJail"},"2.0.4":{"name":"react-fuffer","version":"2.0.4","description":"react-buffer-firestore, a class- or *hook-based, promise-less handler for firebase firestore onSnapshot documents","main":"src/index.js","keywords":["firebase","firestore","firebase-firestore","buffer","react","array-buffer","onSnapshot","snapshot","keepalive","firebase-plugin"],"repository":{"type":"git","url":"git+https://github.com/nickcarducci/react-fuffer.git"},"sideEffects":false,"license":"UNLICENSED","author":{"name":"Nick Carducci nmcarducci@gmail.com"},"bugs":{"url":"https://github.com/nickcarducci/react-fuffer"},"peerDependencies":{"firebase":">=8.7.0","react":">=16.8.0"},"gitHead":"efdb27f84c73b78829008e54a26b8bcc3e20fd98","homepage":"https://github.com/nickcarducci/react-fuffer#readme","_id":"react-fuffer@2.0.4","_nodeVersion":"16.17.0","_npmVersion":"8.15.0","dist":{"integrity":"sha512-yUzi++v4KahcjPH/jKJ/7C1I+Qppm7u+xAku/8YQIsfitkybyCTLvP2IBp6nffHxis8uWJic7dPQ6IC++G1vlw==","shasum":"9a6527b6d86de9b8977e9ddfd2560b14ad2f05d8","tarball":"https://registry.npmjs.org/react-fuffer/-/react-fuffer-2.0.4.tgz","fileCount":4,"unpackedSize":40828,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIH5TspleRvt1ZwL6hGesfeGGwDbLU5EXthFf6V0wCyGgAiEAuaan5zCnMEqRCZZmgslAw3npQ/AGbuQ2BxcbeWvmljA="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjtY/BACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrSaw//Uxq+NFV+XzTZwyR0Y49FUb/KZ3nlXktz6UgDUmXstkEN6EhC\r\n9KA2vADQ8slP9XpZFp1sb8PTnUI37DG2gcZ1ES+KEgejeF1F8e0PI8o1hqt+\r\nx/NXxT9PZCHpYkGjJcgmZRAKTNzoYkotV/cORGxhnofqoCBsT53gwaYq5lO0\r\ntgrcoC0dItj3fBZDaG5TV/2HmVrRn3u/vblhUKCFJXqOi+dTGUfz85T7Db9J\r\nhmUS5d/DkI3CRKJzfIwHtKiK061/TBkC7bXDCgt1GpqMY7axokaoVUVti49K\r\nt7ome+Ij0TwDOLenqfJb3ncMlmAt1s4h4tuLwRItKkgQ/KDDoK3LJMhHBRnG\r\nFistkpMrdR4LekxUUHhgUrTwdRbl6Nhum2s+Czvs/c3eHtZeevZaSqvCFOfy\r\nKV84Mm51q25Splt6KhS15a2SQJNp1fLm3KmdLT0f/MAV5C9T7JmvLI5sMEIi\r\nVzij5ZXopHhjCw3Xf9kiFGndmONvfzcHHKbbJqlpuFWAQz7AtLXe1qhNmDhu\r\nBwT90M4vPOgQIGbnUfzQa5whDp+YJyeTWW5ZBaiNrALQP7xLNzWAy46gzslU\r\nhrVE3U9z8/BrG6fzT4QxKQa0laq4zA8sqauac9fSJ5y/+KaGz11QapISAcFe\r\nmDW0UXlO5K0fPWnYcwCF0kO4yTviMH/BC64=\r\n=JOkP\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"nickcarducci","email":"nick@carducci.sh"},"directories":{},"maintainers":[{"name":"nickcarducci","email":"nick@carducci.sh"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/react-fuffer_2.0.4_1672843200955_0.4066430422032643"},"_hasShrinkwrap":false}},"time":{"created":"2021-07-05T03:15:10.991Z","1.0.0":"2021-07-05T03:15:11.154Z","modified":"2023-01-04T14:45:44.797Z","1.0.1":"2021-07-05T03:28:54.462Z","1.0.2":"2021-07-05T03:29:29.656Z","1.0.3":"2021-07-05T03:35:25.382Z","1.0.4":"2021-07-05T22:18:02.138Z","1.0.5":"2021-07-06T11:33:27.790Z","1.0.6":"2021-07-06T11:40:41.097Z","1.0.7":"2021-07-07T00:20:34.046Z","1.0.8":"2021-07-09T12:50:05.701Z","1.0.9":"2021-07-09T13:46:58.415Z","1.1.0":"2021-07-10T21:28:06.530Z","1.1.1":"2021-07-11T00:46:35.052Z","1.1.2":"2021-07-11T00:59:53.048Z","1.1.3":"2021-07-11T18:19:13.227Z","1.1.4":"2021-07-11T22:25:17.025Z","1.1.5":"2021-07-14T13:17:24.889Z","1.1.6":"2021-07-21T00:51:56.840Z","1.1.7":"2021-07-21T12:08:34.744Z","1.1.8":"2021-07-21T12:33:53.252Z","1.1.9":"2021-07-21T20:54:37.965Z","1.2.0":"2021-07-22T12:48:09.834Z","1.2.1":"2021-07-22T14:45:55.360Z","1.2.2":"2021-07-22T17:25:04.892Z","1.2.3":"2021-07-22T18:19:58.117Z","1.2.4":"2021-07-22T19:05:57.639Z","1.2.5":"2021-07-22T19:11:55.827Z","1.2.6":"2021-07-22T19:17:58.171Z","1.2.7":"2021-07-22T19:22:01.645Z","1.2.8":"2021-07-22T19:26:29.180Z","1.2.9":"2021-07-22T20:25:16.867Z","1.2.10":"2021-07-22T22:54:27.017Z","1.2.11":"2021-07-24T17:10:49.207Z","1.2.12":"2021-07-24T17:26:52.247Z","1.3.0":"2021-07-25T18:51:55.487Z","1.3.1":"2021-07-25T22:39:39.962Z","1.3.2":"2021-07-26T10:16:36.350Z","1.3.3":"2021-07-26T10:21:52.865Z","1.3.4":"2021-07-26T18:27:46.636Z","1.3.5":"2021-07-26T18:29:52.776Z","1.3.6":"2021-07-27T11:05:06.888Z","1.3.7":"2021-07-27T12:38:37.175Z","1.3.8":"2021-07-28T11:27:00.524Z","1.3.9":"2021-07-28T12:05:23.061Z","1.3.10":"2021-07-28T12:35:02.544Z","1.3.11":"2021-07-28T13:47:35.189Z","1.3.12":"2021-07-28T13:51:45.755Z","1.3.13":"2021-07-28T14:44:11.627Z","1.4.0":"2021-07-28T16:55:39.381Z","1.4.1":"2021-07-28T23:31:11.875Z","1.4.2":"2021-07-29T00:21:27.942Z","1.4.3":"2021-07-29T01:08:36.825Z","1.4.4":"2021-07-29T02:35:20.704Z","1.4.5":"2021-07-29T03:21:00.857Z","1.4.6":"2021-07-29T04:47:35.535Z","1.4.7":"2021-07-29T12:20:21.598Z","1.4.8":"2021-07-29T17:15:08.874Z","1.4.9":"2021-07-29T17:38:46.288Z","1.4.10":"2021-07-30T10:19:36.794Z","1.4.11":"2021-07-30T10:54:28.408Z","1.4.12":"2021-07-30T17:14:24.861Z","1.5.0":"2021-08-04T23:09:29.113Z","1.5.1":"2021-08-04T23:18:02.550Z","1.5.3":"2021-09-10T19:48:35.052Z","1.5.4":"2021-09-11T16:04:17.543Z","1.5.5":"2021-09-12T07:36:51.859Z","1.5.6":"2021-09-12T18:01:42.578Z","1.5.8":"2021-10-03T17:29:28.778Z","1.5.9":"2021-10-03T17:57:27.834Z","1.5.10":"2021-10-03T18:05:26.420Z","1.5.11":"2021-10-03T19:20:09.190Z","2.0.0":"2022-12-24T00:05:11.632Z","2.0.1":"2022-12-24T00:15:40.682Z","2.0.2":"2022-12-25T23:37:39.636Z","2.0.3":"2022-12-27T02:49:18.396Z","2.0.4":"2023-01-04T14:40:01.134Z"},"maintainers":[{"name":"nickcarducci","email":"nick@carducci.sh"}],"description":"react-buffer-firestore, a class- or *hook-based, promise-less handler for firebase firestore onSnapshot documents","homepage":"https://github.com/nickcarducci/react-fuffer#readme","keywords":["firebase","firestore","firebase-firestore","buffer","react","array-buffer","onSnapshot","snapshot","keepalive","firebase-plugin"],"repository":{"type":"git","url":"git+https://github.com/nickcarducci/react-fuffer.git"},"author":{"name":"Nick Carducci nmcarducci@gmail.com"},"bugs":{"url":"https://github.com/nickcarducci/react-fuffer"},"license":"UNLICENSED","readme":"# Fuffer, your array-buffer for firebase (in React)!\n\n![alt text](https://www.dl.dropboxusercontent.com/s/an4eso3vvme7mrf/react-fuffer%20sheep.png?dl=0 \"react-fuffer-sheep abstract!\")\n\n### enables snapshot cleanups with custom keepalive (default is hour-long), longpolling prompts, aliveFor, (soon?) browsing-to-freshen-each-snapshot, pagination, & quoted posts\n\nLICENSE AGPL-3\nNo redistribution but for strategy of parts, unless retributed\n\nhow to use (as this.state.jailclasses change, Fuffer will query and load)\nhttps://codesandbox.io/s/recursing-paper-4vosh?file=/src/data.js\n//add field dropIds = [\"\"] and dropId = \"\" for quoting posts with collectionID string: String(collection + ID), stored in object as drops.  \n\n    import { JailClass, Jail, WakeSnapshot, matchy } from \"./fuffer\";//\"react-fuffer\"\n    \n    const keepalive = 3600000;\n    const jailclass = {\n        uuid: \"fetchForum\", //forumPosts\n      docsOutputLabel: name,\n      stateAfterLabel: last,\n      endBeforeLabel: undo,\n      state: {\n        commentsName: NewcommentsName,\n        filterTime: true,\n        oppositeComments: ExpiredcommentsName,\n        oppositeCollection: old\n      },\n      snapshotQuery: [collection(firestore,\"collection\"),\n        where(\"communityId\", \"==\", community.id)], //optional canIncludes()?\n      keepalive,\n      sort: { order: \"time\", by: \"desc\" }, //sort\n      near: null, //sort && near cannot be true (coexist, orderBy used by geohashing)\n      //near for geofirestore { center: near.center, radius: near.distance }\n      limit: 14, //limit\n      startAfter: null, //startAfter\n      endBefore: null, //endBefore\n      verbose: true, //verbose\n      whenOn: false //whenOn\n    };\n\n    this.setState({\n      currentJail: jailclass, //new version 2(firebase9)\n        jailclasses: [\n          ...this.state.jailclasses.filter((x) => \n              // x.uuid !== \"fetchForum\" &&\n            matchy(jailclass.snapshotQuery) !== matchy(x.snapshotQuery)\n          ),\n          jailclass\n        ]\n    });\n\n...\n\n    const firestore = getFirestore(firebaseappinitialized); //new\n    class Data extends React.Component {\n      constructor(props) {\n        super(props);\n\n        this.state = {\n          deletedclasses: [],\n          closes: [],\n          alivefors: [],\n          updatedclasses: [],\n          jailclasses: [],\n          freedocs: []\n        }\n        this.fuffer = React.createRef();\n      }\n      render () {\n        const {\n          jailclasses,\n          updatedclasses,\n          deletedclasses\n        } = this.state; \n        return (\n          <div>    \n            <JailClass\n             firestore={firestore}\n              fuffer={this.fuffer}\n              jailclasses={jailclasses}\n              updateLiberty={(product, ids) => {\n                product = ids\n                  ? this.state.freedocs.find(\n                      (x) => x.id === matchy(this.state.currentJail.snapshotQuery)\n                    ) //ids.includes(x.id))\n                  : product; //new version 2(firebase9)\n\n                this.setState(\n                  {\n                    freedocs: [\n                      ...this.state.freedocs.filter((x) => x.id !== product.id),\n                      product\n                    ],\n                    [product.stateAfterLabel]: product.startAfter,\n                    [product.endBeforeLabel]: product.endBefore\n                  },\n                  () => this.finFetchForum(product)\n                  /*,\n                    () => {\n                      //console.log(product);\n                      clearTimeout(this.stopFreedocs); //[productFuffer.uuid]);\n                      this.stopFreedocs /*[productFuffer.uuid]* / = setTimeout(\n                        () =>\n                          //this.state.freedocs.forEach(\n                          //(product) =>\n                          //product &&\n                          this.setState(\n                            {\n                              [product.stateAfterLabel]: product.startAfter,\n                              [product.endBeforeLabel]: product.endBefore\n                            },\n                            () => this.finFetchForum(product)\n                          ),\n                        //)\n                        0 //800\n                      );\n                    }*/\n                );\n              }}\n              updatedclasses={updatedclasses}\n              setJail={(x) => this.setState(x)}\n              alivefors={this.state.alivefors}\n              closes={this.state.closes}\n              //={this.state.immutableRegister}\n              resnaps={this.state.resnaps}\n              freedocs={this.state.freedocs}\n            />\n            <WakeSnapshot\n              jailclasses={jailclasses}\n              deletedclasses={deletedclasses}\n              setJail={(x) => this.setState(x)}\n              updatedclasses={updatedclasses}\n              freedocs={this.state.freedocs}\n              loadingHeight={loadingHeight}\n              isProfile={isProfile}\n              openAnyway={this.state.openAnyway}\n              remount={(x, func) => {\n                this.setState(x, () => {\n                  clearTimeout(this.freetime);\n                  this.freetime = setTimeout(\n                    () =>\n                      this.setState({\n                        freedocs: [\n                          ...this.state.freedocs.filter((x) => x.id !== func.id),\n                          func\n                        ]\n                      }),\n                    200\n                  );\n                });\n              }}\n              alivefors={this.state.alivefors}\n              closes={this.state.closes}\n              resnaps={this.state.resnaps}\n            />\n\nyou can import <WakeSnapshot/> for default styling & ease\n\nWrite your own WakeSnapshot component\n\n    class WakeSnapshot extends React.Component {\n      unmount = (func) =>\n        this.props.setJail({\n          jailclasses: this.props.jailclasses.filter((y) => func.id !== y.id),\n          closes: this.props.closes.filter((y) => !y[func.id]),\n          alivefors: this.props.alivefors.filter((y) => !y[func.id]),\n          //deletedclasses is just for remounting without ...traveling\n          deletedclasses: [\n            ...this.props.deletedclasses,\n            { ...func.resnap, id: func.id }\n          ],\n          updatedclasses: this.props.updatedclasses.filter((u) => u.id !== func.id),\n          freedocs: this.props.freedocs.filter((u) => u.id !== func.id)\n        });\n      remount = (animal) =>\n        this.props.remount(\n          {\n            jailclasses: this.props.jailclasses.filter((y) => animal.id !== y.id),\n            closes: this.props.closes.filter((y) => !y[animal.id]),\n            alivefors: this.props.alivefors.filter((y) => !y[animal.id]),\n            //not deleted...remounted\n            //deletedclasses is just for remounting without ...traveling, await for send\n            updatedclasses: this.props.updatedclasses.filter(\n              (u) => u.id !== animal.id\n            ),\n            freedocs: this.props.freedocs.filter((u) => u.id !== animal.id),\n            resnaps: this.props.resnaps.filter((u) => u.id !== animal.id)\n          },\n          animal\n        );\n      flush = () =>\n        this.props.freedocs.forEach((animal) => {\n          this.remount(animal);\n        });\n\n      render() {\n        const { loadingHeight, isProfile, openAnyway, freedocs } = this.props;\n        const goingSnapshots = freedocs && freedocs.constructor === Array;\n        const atLeastOne =\n          goingSnapshots &&\n          freedocs.find((x) => x.aliveFor > 0 && x.aliveFor < 1200000);\n        const open = atLeastOne || openAnyway;\n        const stylequick = {\n          margin: \"0px 20px\",\n          borderRadius: \"22px\",\n          boxShadow: \"0px 0px 7px 2px black\",\n          border: \"4px solid rgb(160,200,255)\",\n          borderBottom: \"7px solid rgb(160,200,255)\",\n          display: \"flex\",\n          alignItems: \"center\",\n          justifyContent: \"center\",\n          height: \"30px\",\n          backgroundColor: \"rgb(20,60,120)\",\n          color: \"rgb(220,220,240)\"\n        };\n        return (\n          <div\n            style={{\n              overflow: !open ? \"hidden\" : \"\",\n              fontSize: open ? \"\" : \"0px\",\n              height: open ? loadingHeight : \"0%\",\n              width: \"100%\",\n              textAlign: \"center\",\n              alignItems: \"center\",\n              flexDirection: \"column\",\n              overflowWrap: \"break-word\",\n              zIndex: \"10\",\n              display: \"flex\",\n              position: isProfile ? \"fixed\" : \"relative\",\n              transition: \".3s ease-in\"\n            }}\n          >\n            are you still there?\n            <div\n              onClick={this.flush}\n              style={{\n                fontSize: open ? \"\" : \"0px\",\n                border: `${open ? 3 : 0}px green solid`,\n                borderRadius: open ? \"9px\" : \"0px\",\n                padding: open ? \"4px 10px\" : \"0px 0px\",\n                marginTop: open ? \"3px\" : \"0px\",\n                transition: \".3s ease-in\"\n              }}\n            >\n              YES\n            </div>\n            <br />\n            Ongoing Processes\n            <br />\n            <div\n              style={{\n                margin: open ? \"10px 0px\" : \"0px 0px\",\n                width: \"calc(100% - 10px)\",\n                border: \"2px solid\",\n                borderRadius: \"10px\"\n              }}\n            >\n              {freedocs &&\n                freedocs.map((func, i) => {\n                  const thisalivefor = this.props.alivefors.find((y) => y[func.id]);\n                  const thisclose = this.props.closes.find((y) => y[func.id]);\n                  return (\n                    <div\n                      key={func.id + i}\n                      style={{\n                        margin: \"10px 0px\",\n                        alignItems: \"center\",\n                        display: open ? \"flex\" : \"none\",\n                        opacity:\n                          func.aliveFor > 0 && func.aliveFor < 1200000\n                            ? func.aliveFor / 2400000\n                            : 1\n                      }}\n                    >\n                      <span style={{ ...stylequick, padding: \"0px 5px\" }}>\n                        {func.id}&nbsp;-&nbsp;\n                        {thisalivefor && Object.values(thisalivefor)}\n                      </span>\n                      <div style={{ ...stylequick, width: \"30px\" }}>\n                        <img\n                          style={{\n                            width: \"10px\",\n                            height: \"10px\"\n                          }}\n                          src={refresh}\n                          alt=\"redo\"\n                          onClick={() => this.remount(func)}\n                        />\n                      </div>\n                      <div\n                        style={{ ...stylequick, width: \"30px\" }}\n                        onClick={() => {\n                          thisclose && thisclose[func.id]();\n                          this.unmount(func);\n                        }}\n                      >\n                        &times;\n                      </div>\n                    </div>\n                  );\n                })}\n            </div>\n          </div>\n        );\n      }\n    }\n          \nhook\n\n    let collection = \"posts\"\n    let old = \"oldPosts\"\n    let dol = [];\n    let p = 0;\n    const keepalive = 3600000;\n    const firestore = getFirestore(firebaseappinitialized); //new\n    const free = Jail(\n      [collection(firestore,\"collection\"),\n        where(\"communityId\", \"==\", community.id)],\n      keepalive,\n      { order: \"time\", by: \"desc\" },\n      null,\n      14,\n      null,\n      null, \n      true,\n      firestore\n    ); \n    free.docs.forEach(async (foo) => {\n      p++;\n      foo.collection = collection;\n      if (filterTime) foo.datel = new Date(foo.date.seconds * 1000);\n      if (!filterTime || foo.datel > new Date()) {\n        canIView(this.props.auth, foo, community) && dol.push(foo);\n      } else if (this.props.auth !== undefined)\n        setDoc(doc(firestore,foo.collection,foo.id))\n          .then(() =>\n            deleteDoc(doc(firestore,lastCollection,foo.id))\n              .then(() =>\n                console.log(\n                  `document moved to ${foo.collection} collection ` + foo.id\n                )\n              )\n              .catch(standardCatch)\n          .catch(standardCatch)\n    });\n    if (free.docs.length === p) \n      this.setPosts({ [collection]: dol })\n    };\n\nHooks' drops are not live with snapshot but use get(), someone please help or at least let me know you want it.  I use classes\n\nSEE LICENSE IN LICENSE.lz.txt\n\ncopying the src code? https://github.com/npm/cli/issues/3514\nnpm install --force npm uninstall @babel/polyfill --save ...","readmeFilename":"Readme.md"}