dgz-ui-shared
Version:
Custom ui library using React.js, Shadcn/ui, TailwindCSS, Typescript, dgz-ui library
168 lines (167 loc) • 4.06 kB
JavaScript
import _ from "react";
function w(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 b = (r) => (s) => {
try {
const t = r(s);
return t instanceof Promise ? t : {
then(o) {
return b(o)(t);
},
catch(o) {
return this;
}
};
} catch (t) {
return {
then(o) {
return this;
},
catch(o) {
return b(o)(t);
}
};
}
}, E = (r, s) => (t, o, a) => {
let n = {
storage: w(() => localStorage),
partialize: (e) => e,
version: 0,
merge: (e, S) => ({
...S,
...e
}),
...s
}, f = !1;
const u = /* @__PURE__ */ new Set(), d = /* @__PURE__ */ 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 h = () => {
const e = n.partialize({ ...o() });
return i.setItem(n.name, {
state: e,
version: n.version
});
}, v = a.setState;
a.setState = (e, S) => {
v(e, S), h();
};
const g = r(
(...e) => {
t(...e), h();
},
o,
a
);
a.getInitialState = () => g;
let m;
const I = () => {
var e, S;
if (!i) return;
f = !1, u.forEach((c) => {
var l;
return c((l = o()) != null ? l : g);
});
const y = ((S = n.onRehydrateStorage) == null ? void 0 : S.call(n, (e = o()) != null ? e : g)) || void 0;
return b(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((p) => [!0, p]) : [!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 [p, j] = c;
if (m = n.merge(
j,
(l = o()) != null ? l : g
), t(m, !0), p)
return h();
}).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: () => I(),
hasHydrated: () => f,
onHydrate: (e) => (u.add(e), () => {
u.delete(e);
}),
onFinishHydration: (e) => (d.add(e), () => {
d.delete(e);
})
}, n.skipHydration || I(), m || g;
}, N = E, H = (r) => {
let s;
const t = /* @__PURE__ */ new Set(), o = (i, h) => {
const v = typeof i == "function" ? i(s) : i;
if (!Object.is(v, s)) {
const g = s;
s = h ?? (typeof v != "object" || v === null) ? v : Object.assign({}, s, v), t.forEach((m) => m(s, g));
}
}, 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;
}, R = (r) => r ? H(r) : H, x = (r) => r;
function F(r, s = x) {
const t = _.useSyncExternalStore(
r.subscribe,
() => s(r.getState()),
() => s(r.getInitialState())
);
return _.useDebugValue(t), t;
}
const O = (r) => {
const s = R(r), t = (o) => F(s, o);
return Object.assign(t, s), t;
}, P = (r) => r ? O(r) : O;
export {
w as a,
P as c,
N as p
};