import { require_jsx_runtime } from "./chunk-CQKXKKJC.js"; import { require_react } from "./chunk-R7JHQV4C.js"; import { __toESM } from "./chunk-PLDDJCW6.js"; // node_modules/.pnpm/overlay-kit@1.8.4_react-dom_8ea85e22eb3956f3589f4c288e5185a7/node_modules/overlay-kit/dist/index.js var import_react = __toESM(require_react()); var import_react2 = __toESM(require_react()); var import_jsx_runtime = __toESM(require_jsx_runtime()); var import_react3 = __toESM(require_react()); var import_jsx_runtime2 = __toESM(require_jsx_runtime()); var import_react4 = __toESM(require_react()); var G = Object.defineProperty; var j = Object.defineProperties; var q = Object.getOwnPropertyDescriptors; var L = Object.getOwnPropertySymbols; var H = Object.prototype.hasOwnProperty; var P = Object.prototype.propertyIsEnumerable; var T = (e, r, t) => r in e ? G(e, r, { enumerable: true, configurable: true, writable: true, value: t }) : e[r] = t; var a = (e, r) => { for (var t in r || (r = {})) H.call(r, t) && T(e, t, r[t]); if (L) for (var t of L(r)) P.call(r, t) && T(e, t, r[t]); return e; }; var y = (e, r) => j(e, q(r)); var K = (e, r) => { var t = {}; for (var n in e) H.call(e, n) && r.indexOf(n) < 0 && (t[n] = e[n]); if (e != null && L) for (var n of L(e)) r.indexOf(n) < 0 && P.call(e, n) && (t[n] = e[n]); return t; }; var S = (e, r, t) => new Promise((n, o) => { var l = (c) => { try { s(t.next(c)); } catch (v) { o(v); } }, d = (c) => { try { s(t.throw(c)); } catch (v) { o(v); } }, s = (c) => c.done ? n(c.value) : Promise.resolve(c.value).then(l, d); s((t = t.apply(e, r)).next()); }); var M = (0, import_react2.memo)(({ isOpen: e, overlayId: r, overlayDispatch: t, controller: n }) => ((0, import_react2.useEffect)(() => { requestAnimationFrame(() => { t({ type: "OPEN", overlayId: r }); }); }, [t, r]), (0, import_jsx_runtime.jsx)(n, { isOpen: e, overlayId: r, close: () => t({ type: "CLOSE", overlayId: r }), unmount: () => t({ type: "REMOVE", overlayId: r }) }))); function C() { return `overlay-kit-${Math.random().toString(36).slice(2, 11)}`; } function w(e) { let [r, t] = b(`${e}/overlay-kit`), n = (v, i) => { var E; let u = (E = i == null ? void 0 : i.overlayId) != null ? E : C(), f = C(); return t("open")({ controller: v, overlayId: u, componentKey: f }), u; }, o = (v, i) => S(this, null, function* () { return new Promise((u) => { n((f, ...D) => { let E = (A) => { u(A), f.close(); }, g = y(a({}, f), { close: E }); return v(g, ...D); }, i); }); }), l = t("close"), d = t("unmount"), s = t("closeAll"), c = t("unmountAll"); return { open: n, openAsync: o, close: l, unmount: d, closeAll: s, unmountAll: c, useOverlayEvent: r }; } var W = Symbol("Null"); function N(e) { let r = (0, import_react3.createContext)(W); r.displayName = e != null ? e : "SafeContext"; function t() { let n = (0, import_react3.useContext)(r); if (n === W) { let o = new Error(`[${r.displayName}]: Provider not found.`); throw o.name = "[Error] Context", o; } return n; } return [r.Provider, t]; } function V() { let [e, r] = N("overlay-kit/OverlayContext"); function t() { return r().current; } function n() { return r().overlayData; } return { OverlayContextProvider: e, useCurrentOverlay: t, useOverlayData: n }; } var _ = (e, r, t) => { var l, d; let n = e.filter((s) => r[s].isOpen === true), o = n.findIndex((s) => s === t); return o === n.length - 1 ? (l = n[o - 1]) != null ? l : null : (d = n.at(-1)) != null ? d : null; }; function $(e, r) { switch (r.type) { case "ADD": { if (e.overlayData[r.overlay.id] != null && e.overlayData[r.overlay.id].isOpen === false) { let n = e.overlayData[r.overlay.id]; return n == null || n.isOpen ? e : y(a({}, e), { current: r.overlay.id, overlayData: y(a({}, e.overlayData), { [r.overlay.id]: y(a({}, n), { isOpen: true }) }) }); } let t = e.overlayOrderList.includes(r.overlay.id); if (t && e.overlayData[r.overlay.id].isOpen === true) throw new Error(`You can't open the multiple overlays with the same overlayId(${r.overlay.id}). Please set a different id.`); return { current: r.overlay.id, overlayOrderList: [...e.overlayOrderList.filter((n) => n !== r.overlay.id), r.overlay.id], overlayData: t ? e.overlayData : y(a({}, e.overlayData), { [r.overlay.id]: r.overlay }) }; } case "OPEN": { let t = e.overlayData[r.overlayId]; return t == null || t.isOpen ? e : y(a({}, e), { overlayData: y(a({}, e.overlayData), { [r.overlayId]: y(a({}, t), { isOpen: true, isMounted: true }) }) }); } case "CLOSE": { let t = e.overlayData[r.overlayId]; if (t == null || !t.isOpen) return e; let n = _(e.overlayOrderList, e.overlayData, r.overlayId); return y(a({}, e), { current: n, overlayData: y(a({}, e.overlayData), { [r.overlayId]: y(a({}, e.overlayData[r.overlayId]), { isOpen: false }) }) }); } case "REMOVE": { if (e.overlayData[r.overlayId] == null) return e; let n = e.overlayOrderList.filter((d) => d !== r.overlayId); if (e.overlayOrderList.length === n.length) return e; let o = a({}, e.overlayData); return delete o[r.overlayId], { current: _(e.overlayOrderList, e.overlayData, r.overlayId), overlayOrderList: n, overlayData: o }; } case "CLOSE_ALL": return Object.keys(e.overlayData).length === 0 ? e : y(a({}, e), { current: null, overlayData: Object.keys(e.overlayData).reduce((t, n) => y(a({}, t), { [n]: y(a({}, e.overlayData[n]), { isOpen: false }) }), {}) }); case "REMOVE_ALL": return { current: null, overlayOrderList: [], overlayData: {} }; } } function R() { let e = C(), s = w(e), { useOverlayEvent: r } = s, t = K(s, ["useOverlayEvent"]), { OverlayContextProvider: n, useCurrentOverlay: o, useOverlayData: l } = V(); function d({ children: c }) { let [v, i] = (0, import_react.useReducer)($, { current: null, overlayOrderList: [], overlayData: {} }), u = (0, import_react.useRef)(v), f = (0, import_react.useCallback)(({ controller: p, overlayId: O, componentKey: m }) => { i({ type: "ADD", overlay: { id: O, componentKey: m, isOpen: false, isMounted: false, controller: p } }); }, []), D = (0, import_react.useCallback)((p) => { i({ type: "CLOSE", overlayId: p }); }, []), E = (0, import_react.useCallback)((p) => { i({ type: "REMOVE", overlayId: p }); }, []), g = (0, import_react.useCallback)(() => { i({ type: "CLOSE_ALL" }); }, []), A = (0, import_react.useCallback)(() => { i({ type: "REMOVE_ALL" }); }, []); return r({ open: f, close: D, unmount: E, closeAll: g, unmountAll: A }), u.current !== v && (v.overlayOrderList.forEach((p) => { let O = u.current.overlayData, m = v.overlayData; if (O[p] != null && O[p].isMounted === true) { let k = O[p].isOpen === false, h = m[p].isOpen === true; k && h && requestAnimationFrame(() => { i({ type: "OPEN", overlayId: p }); }); } }), u.current = v), (0, import_react.useEffect)(() => () => { i({ type: "REMOVE_ALL" }); }, []), (0, import_jsx_runtime2.jsxs)(n, { value: v, children: [c, v.overlayOrderList.map((p) => { let { id: O, componentKey: m, isOpen: k, controller: h } = v.overlayData[p]; return (0, import_jsx_runtime2.jsx)(M, { isOpen: k, controller: h, overlayId: O, overlayDispatch: i }, m); })] }); } return { overlay: t, OverlayProvider: d, useCurrentOverlay: o, useOverlayData: l }; } var { overlay: He, OverlayProvider: Pe, useCurrentOverlay: Ke, useOverlayData: Se } = R(); function Me() { return R(); } function F(e) { return e = e || /* @__PURE__ */ new Map(), { all: e, on(r, t) { let n = e.get(r); n ? n.push(t) : e.set(r, [t]); }, off(r, t) { let n = e.get(r); n && (t ? n.splice(n.indexOf(t) >>> 0, 1) : e.set(r, [])); }, emit(r, t) { let n = e.get(r); n && n.slice().forEach((o) => { o(t); }), n = e.get("*"), n && n.slice().forEach((o) => { o(r, t); }); } }; } var I = F(); function ne(...e) { let r = typeof document != "undefined", t = typeof navigator != "undefined" && navigator.product === "ReactNative"; !r && !t || (0, import_react4.useLayoutEffect)(...e); } function oe(e, r) { I.emit(e, r); } function b(e) { function r(n) { let o = Object.keys(n).reduce((l, d) => { let s = `${e}:${d}`; return y(a({}, l), { [s]: function(c) { n[d](c); } }); }, {}); ne(() => (Object.keys(o).forEach((l) => { I.off(l, o[l]), I.on(l, o[l]); }), () => Object.keys(o).forEach((l) => { I.off(l, o[l]); })), [o]); } function t(n) { return (...o) => oe(`${e}:${String(n)}`, o[0]); } return [r, t]; } export { Pe as OverlayProvider, b as createUseExternalEvents, Me as experimental_createOverlayContext, He as overlay, Ke as useCurrentOverlay, Se as useOverlayData }; //# sourceMappingURL=overlay-kit.js.map