228 lines
8.9 KiB
JavaScript
228 lines
8.9 KiB
JavaScript
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
|