store.js (829B)
1 const createStore = require("zustand/vanilla").default; 2 const { subscribeWithSelector } = require("zustand/middleware"); 3 4 const navigation = require("./navigation.js"); 5 6 /* makes the store a function object from getState */ 7 function bindGetFn(store) { 8 let n = store.getState; 9 n.setState = store.setState; 10 n.getState = store.getState; 11 n.subscribe = store.subscribe; 12 n.destroy = store.destroy; 13 return n; 14 } 15 16 module.exports = bindGetFn(createStore(subscribeWithSelector( 17 set => ({ 18 qr: true, 19 qrClose: () => set(() => ({ qr: false })), 20 id: "", 21 idSet: (n) => { 22 if (!navigation.isIdValid(n)) n = navigation.generateId(); 23 set(() => ({id: n})) 24 }, 25 ydoc: null, 26 ydocSet: (n) => set(() => ({ ydoc: n })), 27 users: 0, 28 }) 29 )));