UNPKG

geoiq-frontend-ui-kit

Version:

This project is a UI kit for GeoIQ's frontend. It's built with React, TypeScript, and Vite.

99 lines (98 loc) 2 kB
import * as c from "react"; const d = 4, p = 1e6; let u = 0; function A() { return u = (u + 1) % Number.MAX_SAFE_INTEGER, u.toString(); } const a = /* @__PURE__ */ new Map(), S = (t) => { if (a.has(t)) return; const s = setTimeout(() => { a.delete(t), n({ type: "REMOVE_TOAST", toastId: t }); }, p); a.set(t, s); }, f = (t, s) => { switch (s.type) { case "ADD_TOAST": return { ...t, toasts: [s.toast, ...t.toasts].slice(0, d) }; case "UPDATE_TOAST": return { ...t, toasts: t.toasts.map( (e) => e.id === s.toast.id ? { ...e, ...s.toast } : e ) }; case "DISMISS_TOAST": { const { toastId: e } = s; return e ? S(e) : t.toasts.forEach((o) => { S(o.id); }), { ...t, toasts: t.toasts.map( (o) => o.id === e || e === void 0 ? { ...o, open: !1 } : o ) }; } case "REMOVE_TOAST": return s.toastId === void 0 ? { ...t, toasts: [] } : { ...t, toasts: t.toasts.filter((e) => e.id !== s.toastId) }; } }, r = []; let T = { toasts: [] }; function n(t) { T = f(T, t), r.forEach((s) => { s(T); }); } function O({ ...t }) { const s = A(), e = (i) => n({ type: "UPDATE_TOAST", toast: { ...i, id: s } }), o = () => n({ type: "DISMISS_TOAST", toastId: s }); return n({ type: "ADD_TOAST", toast: { ...t, id: s, open: !0, onOpenChange: (i) => { i || o(); } } }), { id: s, dismiss: o, update: e }; } function E() { const [t, s] = c.useState(T); return c.useEffect(() => (r.push(s), () => { const e = r.indexOf(s); e > -1 && r.splice(e, 1); }), [t]), { ...t, toast: O, dismiss: (e) => n({ type: "DISMISS_TOAST", toastId: e }) }; } export { f as reducer, O as toast, E as useToast }; //# sourceMappingURL=index.es73.js.map