dgz-ui-shared
Version:
Custom ui library using React.js, Shadcn/ui, TailwindCSS, Typescript, dgz-ui library
2 lines (1 loc) • 2.64 kB
JavaScript
;const O=require("react");function j(r,s){let t;try{t=r()}catch{return}return{getItem:a=>{var n;const f=d=>d===null?null:JSON.parse(d,void 0),u=(n=t.getItem(a))!=null?n:null;return u instanceof Promise?u.then(f):f(u)},setItem:(a,n)=>t.setItem(a,JSON.stringify(n,void 0)),removeItem:a=>t.removeItem(a)}}const I=r=>s=>{try{const t=r(s);return t instanceof Promise?t:{then(o){return I(o)(t)},catch(o){return this}}}catch(t){return{then(o){return this},catch(o){return I(o)(t)}}}},E=(r,s)=>(t,o,a)=>{let n={storage:j(()=>localStorage),partialize:e=>e,version:0,merge:(e,h)=>({...h,...e}),...s},f=!1;const u=new Set,d=new Set;let i=n.storage;if(!i)return r((...e)=>{console.warn(`[zustand persist middleware] Unable to update item '${n.name}', the given storage is currently unavailable.`),t(...e)},o,a);const g=()=>{const e=n.partialize({...o()});return i.setItem(n.name,{state:e,version:n.version})},v=a.setState;a.setState=(e,h)=>{v(e,h),g()};const S=r((...e)=>{t(...e),g()},o,a);a.getInitialState=()=>S;let m;const p=()=>{var e,h;if(!i)return;f=!1,u.forEach(c=>{var l;return c((l=o())!=null?l:S)});const y=((h=n.onRehydrateStorage)==null?void 0:h.call(n,(e=o())!=null?e:S))||void 0;return I(i.getItem.bind(i))(n.name).then(c=>{if(c)if(typeof c.version=="number"&&c.version!==n.version){if(n.migrate){const l=n.migrate(c.state,c.version);return l instanceof Promise?l.then(b=>[!0,b]):[!0,l]}console.error("State loaded from storage couldn't be migrated since no migrate function was provided")}else return[!1,c.state];return[!1,void 0]}).then(c=>{var l;const[b,w]=c;if(m=n.merge(w,(l=o())!=null?l:S),t(m,!0),b)return g()}).then(()=>{y==null||y(m,void 0),m=o(),f=!0,d.forEach(c=>c(m))}).catch(c=>{y==null||y(void 0,c)})};return a.persist={setOptions:e=>{n={...n,...e},e.storage&&(i=e.storage)},clearStorage:()=>{i==null||i.removeItem(n.name)},getOptions:()=>n,rehydrate:()=>p(),hasHydrated:()=>f,onHydrate:e=>(u.add(e),()=>{u.delete(e)}),onFinishHydration:e=>(d.add(e),()=>{d.delete(e)})},n.skipHydration||p(),m||S},J=E,_=r=>{let s;const t=new Set,o=(i,g)=>{const v=typeof i=="function"?i(s):i;if(!Object.is(v,s)){const S=s;s=g??(typeof v!="object"||v===null)?v:Object.assign({},s,v),t.forEach(m=>m(s,S))}},a=()=>s,u={setState:o,getState:a,getInitialState:()=>d,subscribe:i=>(t.add(i),()=>t.delete(i))},d=s=r(o,a,u);return u},N=r=>r?_(r):_,R=r=>r;function F(r,s=R){const t=O.useSyncExternalStore(r.subscribe,()=>s(r.getState()),()=>s(r.getInitialState()));return O.useDebugValue(t),t}const H=r=>{const s=N(r),t=o=>F(s,o);return Object.assign(t,s),t},P=r=>r?H(r):H;exports.create=P;exports.createJSONStorage=j;exports.persist=J;