react-hooks-global-state-next
Version:
Simple global state for React with Hooks API without Context API
3 lines (2 loc) • 1.35 kB
JavaScript
import{useCallback as t}from"react";import{create as e}from"zustand";import{redux as r}from"zustand/middleware";const o=(t,e)=>{if(!t.includes(e))throw new Error(`'${e}' not found. It must be provided in initialState as a property key.`)},n=r=>{const n=e(()=>r),s=Object.keys(r),a=(t,e)=>{"production"!==process.env.NODE_ENV&&o(s,t),n.setState(r=>{return{[t]:(o=r[t],n=e,"function"==typeof n?n(o):n)};var o,n})};return{useGlobalState:e=>{"production"!==process.env.NODE_ENV&&o(s,e);const r=t(t=>t[e],[e]);return[n(r),t(t=>a(e,t),[e])]},getGlobalState:t=>("production"!==process.env.NODE_ENV&&o(s,t),n.getState()[t]),setGlobalState:a,subscribe:(t,e)=>{n.subscribe((r,o)=>{r[t]!==o[t]&&e(r[t])})}}},s=(o,n=o(void 0,{type:void 0}),a)=>{if(a)return a(s)(o,n);const i=e(r(o,n)),u=Object.keys(n),c=e=>{"production"!==process.env.NODE_ENV&&((t,e)=>{if(!t.includes(e))throw new Error(`'${e}' not found. It must be provided in initialState as a property key.`)})(u,e);const r=t(t=>t[e],[e]);return i(r)};return{useStoreState:c,useGlobalState:e=>("production"!==process.env.NODE_ENV&&console.warn("[DEPRECATED] useStoreState instead"),[c(e),t(t=>{i.setState(r=>{return{[e]:(o=r[e],n=t,"function"==typeof n?n(o):n)};var o,n})},[e])]),getState:i.getState,dispatch:i.dispatch}};export{n as createGlobalState,s as createStore};
//# sourceMappingURL=index.modern.js.map