1 line
284 KiB
Plaintext
1 line
284 KiB
Plaintext
{"version":3,"file":"index.mjs","sources":["../../utils/dist/index.mjs","../src/listener.ts","../src/clickoutside.ts","../src/display.ts","../src/shared/utils.ts","../src/full-screen.ts","../src/hover.ts","../src/intersection.ts","../src/manual-ref.ts","../src/modifier.ts","../src/mounted.ts","../src/moving.ts","../src/pointer.ts","../../../node_modules/.pnpm/@floating-ui+utils@0.2.9/node_modules/@floating-ui/utils/dist/floating-ui.utils.mjs","../../../node_modules/.pnpm/@floating-ui+core@1.7.0/node_modules/@floating-ui/core/dist/floating-ui.core.mjs","../../../node_modules/.pnpm/@floating-ui+utils@0.2.9/node_modules/@floating-ui/utils/dist/floating-ui.utils.dom.mjs","../../../node_modules/.pnpm/@floating-ui+dom@1.7.0/node_modules/@floating-ui/dom/dist/floating-ui.dom.mjs","../../../node_modules/.pnpm/@juggle+resize-observer@3.4.0/node_modules/@juggle/resize-observer/lib/utils/resizeObservers.js","../../../node_modules/.pnpm/@juggle+resize-observer@3.4.0/node_modules/@juggle/resize-observer/lib/algorithms/hasActiveObservations.js","../../../node_modules/.pnpm/@juggle+resize-observer@3.4.0/node_modules/@juggle/resize-observer/lib/algorithms/hasSkippedObservations.js","../../../node_modules/.pnpm/@juggle+resize-observer@3.4.0/node_modules/@juggle/resize-observer/lib/algorithms/deliverResizeLoopError.js","../../../node_modules/.pnpm/@juggle+resize-observer@3.4.0/node_modules/@juggle/resize-observer/lib/ResizeObserverBoxOptions.js","../../../node_modules/.pnpm/@juggle+resize-observer@3.4.0/node_modules/@juggle/resize-observer/lib/utils/freeze.js","../../../node_modules/.pnpm/@juggle+resize-observer@3.4.0/node_modules/@juggle/resize-observer/lib/ResizeObserverSize.js","../../../node_modules/.pnpm/@juggle+resize-observer@3.4.0/node_modules/@juggle/resize-observer/lib/DOMRectReadOnly.js","../../../node_modules/.pnpm/@juggle+resize-observer@3.4.0/node_modules/@juggle/resize-observer/lib/utils/element.js","../../../node_modules/.pnpm/@juggle+resize-observer@3.4.0/node_modules/@juggle/resize-observer/lib/utils/global.js","../../../node_modules/.pnpm/@juggle+resize-observer@3.4.0/node_modules/@juggle/resize-observer/lib/algorithms/calculateBoxSize.js","../../../node_modules/.pnpm/@juggle+resize-observer@3.4.0/node_modules/@juggle/resize-observer/lib/ResizeObserverEntry.js","../../../node_modules/.pnpm/@juggle+resize-observer@3.4.0/node_modules/@juggle/resize-observer/lib/algorithms/calculateDepthForNode.js","../../../node_modules/.pnpm/@juggle+resize-observer@3.4.0/node_modules/@juggle/resize-observer/lib/algorithms/broadcastActiveObservations.js","../../../node_modules/.pnpm/@juggle+resize-observer@3.4.0/node_modules/@juggle/resize-observer/lib/algorithms/gatherActiveObservationsAtDepth.js","../../../node_modules/.pnpm/@juggle+resize-observer@3.4.0/node_modules/@juggle/resize-observer/lib/utils/process.js","../../../node_modules/.pnpm/@juggle+resize-observer@3.4.0/node_modules/@juggle/resize-observer/lib/utils/queueMicroTask.js","../../../node_modules/.pnpm/@juggle+resize-observer@3.4.0/node_modules/@juggle/resize-observer/lib/utils/queueResizeObserver.js","../../../node_modules/.pnpm/@juggle+resize-observer@3.4.0/node_modules/@juggle/resize-observer/lib/utils/scheduler.js","../../../node_modules/.pnpm/@juggle+resize-observer@3.4.0/node_modules/@juggle/resize-observer/lib/ResizeObservation.js","../../../node_modules/.pnpm/@juggle+resize-observer@3.4.0/node_modules/@juggle/resize-observer/lib/ResizeObserverDetail.js","../../../node_modules/.pnpm/@juggle+resize-observer@3.4.0/node_modules/@juggle/resize-observer/lib/ResizeObserverController.js","../../../node_modules/.pnpm/@juggle+resize-observer@3.4.0/node_modules/@juggle/resize-observer/lib/ResizeObserver.js","../src/resize.ts","../src/rtl.ts","../src/popper.ts","../src/theme.ts","../src/timer-record.ts","../src/trigger-handler.ts","../src/virtual.ts"],"sourcesContent":["const y = typeof window < \"u\";\nvar Ot;\nconst yn = y && ((Ot = window == null ? void 0 : window.navigator) == null ? void 0 : Ot.userAgent) && /iP(ad|hone|od)/.test(window.navigator.userAgent), re = Object.prototype.toString, oe = Object.prototype.hasOwnProperty;\nfunction B(t, e) {\n return re.call(t) === `[object ${e}]`;\n}\nfunction Mn(t, e) {\n return oe.call(t, e);\n}\nfunction M(t) {\n return t != null;\n}\nfunction ie(t) {\n return t == null;\n}\nfunction Sn(t) {\n return typeof t == \"number\";\n}\nfunction se(t) {\n return Number.isNaN(t);\n}\nfunction wn(t) {\n return typeof t == \"string\";\n}\nfunction En(t) {\n return typeof t == \"boolean\";\n}\nfunction An(t) {\n return t === !0;\n}\nfunction Nn(t) {\n return t === !1;\n}\nfunction Fn(t) {\n return typeof t == \"symbol\";\n}\nfunction On(t) {\n return typeof t == \"bigint\";\n}\nfunction $n(t) {\n return Array.isArray(t);\n}\nfunction Y(t) {\n return B(t, \"Object\");\n}\nfunction Tn(t) {\n return !!t && typeof t.then == \"function\" && typeof t.catch == \"function\";\n}\nfunction $t(t) {\n return typeof t == \"function\";\n}\nfunction Cn(t) {\n return B(t, \"Set\");\n}\nfunction Rn(t) {\n return B(t, \"Map\");\n}\nfunction _n(t) {\n return B(t, \"Date\");\n}\nfunction kn(t) {\n return B(t, \"RegExp\");\n}\nfunction xn(t) {\n return Array.isArray(t) || typeof t == \"string\" ? t.length === 0 : t instanceof Map || t instanceof Set ? t.size === 0 : Y(t) ? Object.keys(t).length === 0 : typeof t == \"number\" ? se(t) : ie(t);\n}\nfunction Dn(t, e = !1) {\n return !e && !y ? !1 : !!(t && \"nodeType\" in t);\n}\nfunction G(t) {\n return M(t) && typeof t[Symbol.iterator] == \"function\";\n}\nfunction it() {\n}\nfunction ce() {\n return !0;\n}\nfunction In() {\n return !1;\n}\nfunction Ln(t, e = 1, n = 1) {\n const r = [];\n for (let o = 0; o < t; ++o)\n r.push(e + o * n);\n return r;\n}\nfunction ae(t) {\n return Object.prototype.toString.call(t).slice(8, -1);\n}\nfunction Hn(t = 16) {\n const e = \"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890\", n = e.length;\n let r = \"\";\n for (; t--; )\n r += e.charAt(Math.floor(Math.random() * n));\n return r;\n}\nasync function Pn(t, e = {}) {\n if (t.length) {\n for (const [n, r] of t)\n if (typeof n == \"function\" ? n() : n)\n return typeof e.beforeMatchAny == \"function\" && await e.beforeMatchAny(), await r(), typeof e.afterMatchAny == \"function\" && await e.afterMatchAny(), !0;\n }\n return !1;\n}\nasync function Bn(t) {\n if (!y) return !1;\n try {\n return await navigator.clipboard.writeText(t), !0;\n } catch {\n let e = !1;\n const n = document.createElement(\"textarea\"), r = document.activeElement;\n n.value = t, n.setAttribute(\"readonly\", \"\"), n.style.contain = \"strict\", n.style.position = \"absolute\", n.style.height = \"0\", n.style.fontSize = \"12pt\";\n const o = document.getSelection(), i = o ? o.rangeCount > 0 && o.getRangeAt(0) : null;\n return document.body.appendChild(n), n.select(), n.selectionStart = 0, n.selectionEnd = t.length, e = document.execCommand(\"copy\"), document.body.removeChild(n), i && (o.removeAllRanges(), o.addRange(i)), r && r.focus(), e;\n }\n}\nconst fe = \"[-\\\\+]?\\\\d+%?\", ue = \"[-\\\\+]?\\\\d*\\\\.\\\\d+%?\", F = `(?:${ue})|(?:${fe})`, le = `[\\\\s|\\\\(]+(${F})[,|\\\\s]+(${F})[,|\\\\s]+(${F})\\\\s*\\\\)?`, U = `[\\\\s|\\\\(]+(${F})[,|\\\\s]+(${F})[,|\\\\s]+(${F})[,|\\\\s]+(${F})\\\\s*\\\\)?`, Tt = new RegExp(`rgb${le}`), Ct = new RegExp(`rgba${U}`), Rt = new RegExp(`hsl${U}`), _t = new RegExp(`hsla${U}`), kt = new RegExp(`hsv${U}`), xt = new RegExp(`hsva${U}`), Dt = /^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/, It = /^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/, Lt = /^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/, Ht = /^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/, W = Object.freeze({\n aliceblue: \"f0f8ff\",\n antiquewhite: \"faebd7\",\n aqua: \"0ff\",\n aquamarine: \"7fffd4\",\n azure: \"f0ffff\",\n beige: \"f5f5dc\",\n bisque: \"ffe4c4\",\n black: \"000\",\n blanchedalmond: \"ffebcd\",\n blue: \"00f\",\n blueviolet: \"8a2be2\",\n brown: \"a52a2a\",\n burlywood: \"deb887\",\n burntsienna: \"ea7e5d\",\n cadetblue: \"5f9ea0\",\n chartreuse: \"7fff00\",\n chocolate: \"d2691e\",\n coral: \"ff7f50\",\n cornflowerblue: \"6495ed\",\n cornsilk: \"fff8dc\",\n crimson: \"dc143c\",\n cyan: \"0ff\",\n darkblue: \"00008b\",\n darkcyan: \"008b8b\",\n darkgoldenrod: \"b8860b\",\n darkgray: \"a9a9a9\",\n darkgreen: \"006400\",\n darkgrey: \"a9a9a9\",\n darkkhaki: \"bdb76b\",\n darkmagenta: \"8b008b\",\n darkolivegreen: \"556b2f\",\n darkorange: \"ff8c00\",\n darkorchid: \"9932cc\",\n darkred: \"8b0000\",\n darksalmon: \"e9967a\",\n darkseagreen: \"8fbc8f\",\n darkslateblue: \"483d8b\",\n darkslategray: \"2f4f4f\",\n darkslategrey: \"2f4f4f\",\n darkturquoise: \"00ced1\",\n darkviolet: \"9400d3\",\n deeppink: \"ff1493\",\n deepskyblue: \"00bfff\",\n dimgray: \"696969\",\n dimgrey: \"696969\",\n dodgerblue: \"1e90ff\",\n firebrick: \"b22222\",\n floralwhite: \"fffaf0\",\n forestgreen: \"228b22\",\n fuchsia: \"f0f\",\n gainsboro: \"dcdcdc\",\n ghostwhite: \"f8f8ff\",\n gold: \"ffd700\",\n goldenrod: \"daa520\",\n gray: \"808080\",\n green: \"008000\",\n greenyellow: \"adff2f\",\n grey: \"808080\",\n honeydew: \"f0fff0\",\n hotpink: \"ff69b4\",\n indianred: \"cd5c5c\",\n indigo: \"4b0082\",\n ivory: \"fffff0\",\n khaki: \"f0e68c\",\n lavender: \"e6e6fa\",\n lavenderblush: \"fff0f5\",\n lawngreen: \"7cfc00\",\n lemonchiffon: \"fffacd\",\n lightblue: \"add8e6\",\n lightcoral: \"f08080\",\n lightcyan: \"e0ffff\",\n lightgoldenrodyellow: \"fafad2\",\n lightgray: \"d3d3d3\",\n lightgreen: \"90ee90\",\n lightgrey: \"d3d3d3\",\n lightpink: \"ffb6c1\",\n lightsalmon: \"ffa07a\",\n lightseagreen: \"20b2aa\",\n lightskyblue: \"87cefa\",\n lightslategray: \"789\",\n lightslategrey: \"789\",\n lightsteelblue: \"b0c4de\",\n lightyellow: \"ffffe0\",\n lime: \"0f0\",\n limegreen: \"32cd32\",\n linen: \"faf0e6\",\n magenta: \"f0f\",\n maroon: \"800000\",\n mediumaquamarine: \"66cdaa\",\n mediumblue: \"0000cd\",\n mediumorchid: \"ba55d3\",\n mediumpurple: \"9370db\",\n mediumseagreen: \"3cb371\",\n mediumslateblue: \"7b68ee\",\n mediumspringgreen: \"00fa9a\",\n mediumturquoise: \"48d1cc\",\n mediumvioletred: \"c71585\",\n midnightblue: \"191970\",\n mintcream: \"f5fffa\",\n mistyrose: \"ffe4e1\",\n moccasin: \"ffe4b5\",\n navajowhite: \"ffdead\",\n navy: \"000080\",\n oldlace: \"fdf5e6\",\n olive: \"808000\",\n olivedrab: \"6b8e23\",\n orange: \"ffa500\",\n orangered: \"ff4500\",\n orchid: \"da70d6\",\n palegoldenrod: \"eee8aa\",\n palegreen: \"98fb98\",\n paleturquoise: \"afeeee\",\n palevioletred: \"db7093\",\n papayawhip: \"ffefd5\",\n peachpuff: \"ffdab9\",\n peru: \"cd853f\",\n pink: \"ffc0cb\",\n plum: \"dda0dd\",\n powderblue: \"b0e0e6\",\n purple: \"800080\",\n rebeccapurple: \"663399\",\n red: \"f00\",\n rosybrown: \"bc8f8f\",\n royalblue: \"4169e1\",\n saddlebrown: \"8b4513\",\n salmon: \"fa8072\",\n sandybrown: \"f4a460\",\n seagreen: \"2e8b57\",\n seashell: \"fff5ee\",\n sienna: \"a0522d\",\n silver: \"c0c0c0\",\n skyblue: \"87ceeb\",\n slateblue: \"6a5acd\",\n slategray: \"708090\",\n slategrey: \"708090\",\n snow: \"fffafa\",\n springgreen: \"00ff7f\",\n steelblue: \"4682b4\",\n tan: \"d2b48c\",\n teal: \"008080\",\n thistle: \"d8bfd8\",\n tomato: \"ff6347\",\n turquoise: \"40e0d0\",\n violet: \"ee82ee\",\n wheat: \"f5deb3\",\n white: \"fff\",\n whitesmoke: \"f5f5f5\",\n yellow: \"ff0\",\n yellowgreen: \"9acd32\"\n}), de = Object.freeze(new Set(Object.keys(W)));\nfunction Un(t) {\n return t = String(t).trim().toLowerCase(), t ? t === \"transparent\" || W[t] ? !0 : t === \"transparent\" || de.has(t) || Tt.test(t) || Ct.test(t) || Rt.test(t) || _t.test(t) || kt.test(t) || xt.test(t) || Dt.test(t) || It.test(t) || Lt.test(t) || Ht.test(t) : !1;\n}\nfunction he(t) {\n if (t = t.toString().trim().toLowerCase(), t === \"transparent\")\n return { r: 0, g: 0, b: 0, a: 0, format: \"name\", toString: S };\n let e = !1;\n W[t] && (t = W[t], e = !0);\n let n;\n if (n = Tt.exec(t)) {\n const { r, g: o, b: i } = R(n[1], n[2], n[3]);\n return {\n r: r * 255,\n g: o * 255,\n b: i * 255,\n format: \"rgb\",\n toString: S\n };\n }\n if (n = Ct.exec(t)) {\n const { r, g: o, b: i } = R(n[1], n[2], n[3]);\n return {\n r: r * 255,\n g: o * 255,\n b: i * 255,\n a: C(n[4]),\n format: \"rgba\",\n toString: S\n };\n }\n if (n = Rt.exec(t)) {\n const { h: r, s: o, l: i } = z(n[0], n[1], n[3]);\n return { h: r * 360, s: o, l: i, format: \"hsl\", toString: H };\n }\n if (n = _t.exec(t)) {\n const { h: r, s: o, l: i } = z(n[0], n[1], n[3]);\n return {\n h: r * 360,\n s: o,\n l: i,\n a: C(n[4]),\n format: \"hsla\",\n toString: H\n };\n }\n if (n = kt.exec(t)) {\n const { h: r, s: o, v: i } = j(n[0], n[1], n[3]);\n return { h: r * 360, s: o, v: i, format: \"hsv\", toString: q };\n }\n if (n = xt.exec(t)) {\n const { h: r, s: o, v: i } = j(n[0], n[1], n[3]);\n return {\n h: r * 360,\n s: o,\n v: i,\n a: C(n[4]),\n format: \"hsva\",\n toString: q\n };\n }\n return (n = Dt.exec(t)) ? {\n r: parseInt(`${n[1]}${n[1]}`, 16),\n g: parseInt(`${n[2]}${n[2]}`, 16),\n b: parseInt(`${n[3]}${n[3]}`, 16),\n format: e ? \"name\" : \"hex3\",\n toString: S\n } : (n = It.exec(t)) ? {\n r: parseInt(`${n[1]}${n[1]}`, 16),\n g: parseInt(`${n[2]}${n[2]}`, 16),\n b: parseInt(`${n[3]}${n[3]}`, 16),\n a: mt(`${n[4]}${n[4]}`),\n format: e ? \"name\" : \"hex4\",\n toString: S\n } : (n = Lt.exec(t)) ? {\n r: parseInt(n[1], 16),\n g: parseInt(n[2], 16),\n b: parseInt(n[3], 16),\n format: e ? \"name\" : \"hex6\",\n toString: S\n } : (n = Ht.exec(t)) ? {\n r: parseInt(n[1], 16),\n g: parseInt(n[2], 16),\n b: parseInt(n[3], 16),\n a: mt(n[4]),\n format: e ? \"name\" : \"hex8\",\n toString: S\n } : null;\n}\nfunction Yn(t) {\n const { a: e, ...n } = O(t);\n delete n.format;\n const r = Bt(n.r, n.g, n.b), o = Ut(n.r, n.g, n.b), i = st(n.r, n.g, n.b), s = ct(n.r, n.g, n.b, e);\n return {\n rgb: n,\n hsl: r,\n hsv: o,\n hex: i,\n alpha: e,\n rgba: { ...n, a: e, format: \"rgba\" },\n hsla: { ...r, a: e, format: \"hsla\" },\n hsva: { ...o, a: e, format: \"hsva\" },\n hex8: s,\n gray: Gt(n),\n origin: t\n };\n}\nfunction O(t) {\n let e = { r: 0, g: 0, b: 0 }, n = 1, r;\n return typeof t == \"string\" ? r = he(t) : r = t, r !== null && typeof r == \"object\" && (\"l\" in r ? e = Pt(r.h, r.s, r.l) : \"v\" in r && (e = pe(r.h, r.s, r.v)), \"a\" in r && (n = C(r.a ?? 1), Number.isNaN(n) && (n = 1)), e = r), { ...e, a: n, format: \"rgba\", toString: S };\n}\nfunction z(t, e, n) {\n return {\n h: w(t, 0, 360) / 360,\n s: w(I(e) ? L(e) : e, 0, 1),\n l: w(I(n) ? L(n) : n, 0, 1)\n };\n}\nfunction R(t, e, n) {\n return {\n r: w(t, 0, 255) / 255,\n g: w(e, 0, 255) / 255,\n b: w(n, 0, 255) / 255\n };\n}\nfunction j(t, e, n) {\n return {\n h: w(t, 0, 360) / 360,\n s: w(I(e) ? L(e) : e, 0, 1),\n v: w(I(n) ? L(n) : n, 0, 1)\n };\n}\nfunction C(t) {\n return w(I(t) ? L(t) : t, 0, 1);\n}\nfunction Pt(t, e, n) {\n let r, o, i;\n if ({ h: t, s: e, l: n } = z(t, e, n), e === 0)\n r = o = i = n;\n else {\n const s = n < 0.5 ? 1 * (1 + e) : n + e - n * e, c = 2 * n - s;\n r = tt(c, s, t + 1 / 3), o = tt(c, s, t), i = tt(c, s, t - 1 / 3);\n }\n return r *= 255, o *= 255, i *= 255, { r, g: o, b: i, toString: S };\n}\nfunction Bt(t, e, n) {\n ({ r: t, g: e, b: n } = R(t, e, n));\n const r = Math.max(t, e, n), o = Math.min(t, e, n);\n let i, s;\n const c = (r + o) / 2;\n if (r === o)\n i = s = 0;\n else {\n const a = r - o;\n switch (s = c > 0.5 ? a / (2 - r - o) : a / (r + o), r) {\n case t: {\n i = (e - n) / a + (e < n ? 6 : 0);\n break;\n }\n case e: {\n i = (n - t) / a + 2;\n break;\n }\n case n: {\n i = (t - e) / a + 4;\n break;\n }\n default:\n i = 0;\n }\n i *= 60;\n }\n return { h: i, s, l: c, toString: H };\n}\nfunction ge(t, e, n) {\n ({ h: t, s: e, l: n } = z(t, e, n));\n const r = 0.5 * (2 * n + e * (1 - Math.abs(2 * n - 1)));\n return e = 2 * (r - n) / r, { h: t * 360, s: e, v: r, toString: q };\n}\nfunction Gn(t, e, n) {\n ({ h: t, s: e, v: n } = j(t, e, n));\n const r = 0.5 * n * (2 - e);\n return e = n * e / (1 - Math.abs(2 * r - 1)), { h: t * 360, s: e, l: r, toString: H };\n}\nfunction pe(t, e, n) {\n ({ h: t, s: e, v: n } = j(t, e, n)), t *= 6;\n const r = Math.floor(t), o = t - r, i = n * (1 - e), s = n * (1 - o * e), c = n * (1 - (1 - o) * e), a = r % 6;\n let f = [n, s, i, i, c, n][a], u = [c, n, n, s, i, i][a], d = [i, i, c, n, n, s][a];\n return f *= 255, u *= 255, d *= 255, { r: f, g: u, b: d, toString: S };\n}\nfunction Ut(t, e, n) {\n ({ r: t, g: e, b: n } = R(t, e, n));\n const r = Math.max(t, e, n), o = Math.min(t, e, n);\n let i;\n const s = r, c = r - o, a = r === 0 ? 0 : c / r;\n if (r === o)\n i = 0;\n else {\n switch (r) {\n case t: {\n i = (e - n) / c + (e < n ? 6 : 0);\n break;\n }\n case e: {\n i = (n - t) / c + 2;\n break;\n }\n case n: {\n i = (t - e) / c + 4;\n break;\n }\n default:\n i = 0;\n }\n i *= 60;\n }\n return { h: i, s: a, v: s, toString: q };\n}\nfunction st(t, e, n, r = !1) {\n ({ r: t, g: e, b: n } = R(t, e, n));\n const o = [\n $(Math.round(t * 255).toString(16)),\n $(Math.round(e * 255).toString(16)),\n $(Math.round(n * 255).toString(16))\n ];\n return r && T(o[0]) && T(o[1]) && T(o[2]) ? o[0].charAt(0) + o[1].charAt(0) + o[2].charAt(0) : \"#\" + o.join(\"\");\n}\nfunction ct(t, e, n, r, o = !1) {\n ({ r: t, g: e, b: n } = R(t, e, n));\n const i = [\n $(Math.round(t * 255).toString(16)),\n $(Math.round(e * 255).toString(16)),\n $(Math.round(n * 255).toString(16)),\n $(me(C(r)))\n ];\n return o && T(i[0]) && T(i[1]) && T(i[2]) && T(i[3]) ? i[0].charAt(0) + i[1].charAt(0) + i[2].charAt(0) + i[3].charAt(0) : \"#\" + i.join(\"\");\n}\nfunction Wn(t, e, n = 0.5) {\n if (!t && !e) return { r: 0, g: 0, b: 0, a: 1 };\n if (!t) return O(e);\n if (!e) return O(t);\n const r = O(t), o = O(e), i = w(n, 0, 1), s = i * 2 - 1, c = r.a - o.a, f = ((s * c === -1 ? s : (s + c) / (1 + s * c)) + 1) / 2, u = 1 - f;\n return {\n r: Math.round(r.r * f + o.r * u),\n g: Math.round(r.g * f + o.g * u),\n b: Math.round(r.b * f + o.b * u),\n a: Math.round(r.a * i + o.a * (1 - i)),\n format: \"rgba\",\n toString: S\n };\n}\nfunction zn(t, e) {\n const n = O(t);\n return n.a = C(e), n;\n}\nfunction jn(t = !1, e = \"hex\") {\n const n = Math.round(Math.random() * 255), r = Math.round(Math.random() * 255), o = Math.round(Math.random() * 255);\n if (e === \"hex\")\n return t ? ct(n, r, o, Math.random()) : st(n, r, o);\n let i;\n return e === \"hsl\" ? i = Bt(n, r, o) : e === \"hsv\" ? i = Ut(n, r, o) : i = /* @__PURE__ */ Object.create({ r: n, g: r, b: o, toString: S }), t && (i.a = Math.random()), i.toString();\n}\nfunction Yt(t, e = !1, n = \"hex\") {\n const r = Math.round(Math.random() * 360), o = Math.round(t === \"hard\" ? 80 + Math.random() * 20 : 20 + Math.random() * 70) / 100, i = Math.round(t === \"hard\" ? 40 + Math.random() * 20 : 80 + Math.random() * 15) / 100;\n if (n === \"hsl\")\n return H.bind({ h: r, s: o, l: i })();\n let s;\n if (n === \"hex\" || n === \"rgb\") {\n if (s = Pt(r, o, i), n === \"hex\") {\n const { r: c, g: a, b: f } = s;\n return e ? ct(c, a, f, Math.random()) : st(c, a, f);\n }\n } else n === \"hsv\" && (s = ge(r, o, i));\n return e && (s.a = Math.random()), s.toString();\n}\nfunction qn(t = !1, e = \"hex\") {\n return Yt(\"hard\", t, e);\n}\nfunction Kn(t = !1, e = \"hex\") {\n return Yt(\"soft\", t, e);\n}\nfunction Qn(t) {\n return Gt(O(t));\n}\nfunction $(t) {\n return t.length === 1 ? `0${t}` : t.toString();\n}\nfunction T(t) {\n return t.charAt(0) === t.charAt(1);\n}\nfunction me(t) {\n return Math.round(parseFloat(t) * 255).toString(16);\n}\nfunction mt(t) {\n return parseInt(t, 16) / 255;\n}\nfunction w(t, e, n) {\n return Math.max(e, Math.min(n, parseFloat(t)));\n}\nfunction tt(t, e, n) {\n return n < 0 && (n += 1), n > 1 && (n -= 1), n < 1 / 6 ? t + (e - t) * 6 * n : n < 1 / 2 ? e : n < 2 / 3 ? t + (e - t) * (2 / 3 - n) * 6 : t;\n}\nfunction I(t) {\n return String(t).trim().includes(\"%\");\n}\nfunction L(t) {\n const e = parseFloat(t) / 100;\n return Number.isNaN(e) ? 0 : e;\n}\nfunction S() {\n return M(this.a) && this.a >= 0 && this.a < 1 ? `rgba(${this.r}, ${this.g}, ${this.b}, ${this.a})` : `rgb(${this.r}, ${this.g}, ${this.b})`;\n}\nfunction H() {\n const t = `${this.s * 100}%`, e = `${this.l * 100}%`;\n return M(this.a) && this.a >= 0 && this.a < 1 ? `hsla(${this.h}, ${t}, ${e}, ${this.a})` : `hsl(${this.h}, ${t}, ${e})`;\n}\nfunction q() {\n const t = `${this.s * 100}%`, e = `${this.v * 100}%`;\n return M(this.a) && this.a >= 0 && this.a < 1 ? `hsva(${this.h}, ${t}, ${e}, ${this.a})` : `hsv(${this.h}, ${t}, ${e})`;\n}\nfunction Gt(t) {\n return (t.r * 0.2126 + t.g * 0.7152 + t.b * 0.0722) / 255;\n}\nlet Wt = 0;\nfunction Xn() {\n return Wt++;\n}\nfunction Vn(t) {\n Wt = Math.round(t);\n}\nfunction Zn(t = 0) {\n return {\n getCount: () => t++,\n setCount: (e) => {\n t = e;\n }\n };\n}\nfunction bt(t) {\n return t & -t;\n}\nfunction Jn(t, e = 0) {\n const n = new Array(t + 1).fill(0);\n function r(c, a) {\n if (!(!a || c >= t))\n for (c += 1; c <= t; )\n n[c] += a, c += bt(c);\n }\n function o(c = t) {\n if (c <= 0) return 0;\n c > t && (c = t);\n let a = c * e;\n for (; c > 0; )\n a += n[c], c -= bt(c);\n return a;\n }\n function i(c) {\n return o(c + 1) - o(c);\n }\n function s(c) {\n let a = 0, f = t;\n for (; f > a; ) {\n const u = Math.floor((a + f) / 2), d = o(u);\n if (d > c) {\n f = u;\n continue;\n } else if (d < c) {\n if (a === u)\n return o(a + 1) <= c ? a + 1 : a;\n a = u;\n } else\n return u;\n }\n return a;\n }\n return { tree: n, add: r, sum: o, get: i, boundIndex: s };\n}\nconst be = /^\\s*[+-]?\\d*\\.?\\d+(?:[eE][+-]?\\d+)?\\s*$/;\nfunction ye(t, e = !1) {\n return typeof t == \"number\" ? !Number.isNaN(t) : e ? be.test(String(t)) : !Number.isNaN(parseFloat(t)) || !Number.isNaN(Number(t));\n}\nfunction Me(t) {\n let e = parseFloat(t);\n return Number.isNaN(e) && (e = Number(t)), Number.isNaN(e) ? 0 : e;\n}\nfunction Se(t, e) {\n return e <= 0 ? t.toString() : `${t < 0 ? \"-\" : \"\"}${String(Math.abs(Math.round(t))).padStart(e, \"0\")}`;\n}\nfunction A(t) {\n return Se(t, 2);\n}\nfunction E(t) {\n const e = t.toString().split(/[eE]/), n = (e[0].split(\".\")[1] || \"\").length - +(e[1] || 0);\n return n > 0 ? n : 0;\n}\nfunction vn(t) {\n return E(t);\n}\nfunction tr(t, e = 3, n = \",\") {\n if (typeof t != \"number\" && (t = parseFloat(t)), Number.isNaN(t)) return \"0\";\n let [r, o] = String(t).split(\".\");\n const i = new RegExp(`(\\\\d+)(\\\\d{${e}})`);\n for (; i.test(r); )\n r = r.replace(i, `$1${n}$2`);\n return o = o ? `.${o}` : \"\", `${r}${o}`;\n}\nfunction zt(t, e) {\n e = Math.max(Math.round(e), 0);\n let n = t.toFixed(E(t));\n const r = n.indexOf(\".\");\n if (r === -1) return t;\n const o = n.replace(\".\", \"\").split(\"\"), i = r + e;\n return o[i] ? (n.charAt(i + 1) === \"5\" ? n = n.substring(0, i + 1) + \"6\" : n = n.substring(0, i + 2), parseFloat(Number(n).toFixed(e))) : t;\n}\nfunction er(t, e, n) {\n return zt(t * e, n);\n}\nfunction nr(t, e) {\n if (e < 0 || e > 1)\n return Math.round(t);\n const n = Math.ceil(t);\n return t + 1 - e >= n ? n : Math.floor(t);\n}\nfunction rr(t, e, n) {\n return Math.max(e, Math.min(n, parseFloat(t)));\n}\nfunction or(t, e, n = 0) {\n if (t <= 0 || e <= 1) return [t];\n n < 1 && (n = 1 / 0);\n const r = [];\n let o = 0;\n for (; t >= e && o < n; )\n r.push(t % e), t = Math.floor(t / e), ++o;\n return r.push(t), r.reverse();\n}\nconst et = [\"th\", \"st\", \"nd\", \"rd\"];\nfunction ir(t) {\n if (t = Math.round(t), t <= 0) return `${t}th`;\n const e = t % 100 > 10 && t % 100 < 14 ? et[0] : et[t % 10] || et[0];\n return `${t}${e}`;\n}\nconst yt = Object.freeze([\n \"B\",\n \"KB\",\n \"MB\",\n \"GB\",\n \"TB\",\n \"AUTO\"\n]);\nfunction sr(t, e = \"AUTO\", n = !1, r) {\n typeof r > \"u\" && (typeof n == \"number\" ? (r = n, n = !1) : r = 2);\n let o = e.toUpperCase();\n o = yt.includes(o) ? o : \"AUTO\";\n let i;\n switch (o) {\n case \"AUTO\":\n i = 0;\n break;\n case \"KB\":\n i = 1;\n break;\n case \"MB\":\n i = 2;\n break;\n case \"GB\":\n i = 3;\n break;\n case \"TB\":\n i = 4;\n break;\n default:\n return t;\n }\n let s;\n if (i)\n s = t / 1024 ** i;\n else\n for (s = t; s > 1024 && !(i > 4); ++i)\n s = s / 1024;\n return s = zt(s, r), n ? `${s}${o === \"AUTO\" ? yt[Math.min(i, 4)] : o}` : s;\n}\nfunction cr(t, e = 0) {\n return e === t ? e : (e > t && ([e, t] = [t, e]), Math.random() * (t - e) + e);\n}\nfunction jt(t, e = 15) {\n return +parseFloat(Number(t).toPrecision(e));\n}\nfunction K(t) {\n const e = String(t);\n if (!e.includes(\"e\"))\n return Number(e.replace(\".\", \"\"));\n const n = E(t);\n return n > 0 ? jt(Number(t) * 10 ** n) : Number(t);\n}\nfunction Q(t) {\n return (...e) => {\n let n = e[0];\n for (let r = 1, o = e.length; r < o; ++r)\n n = t(n, e[r]);\n return n;\n };\n}\nconst P = Q((t, e) => {\n const n = K(t), r = K(e), o = E(t) + E(e);\n return n * r / 10 ** o;\n}), ar = Q((t, e) => {\n const n = 10 ** Math.max(E(t), E(e));\n return (P(t, n) + P(e, n)) / n;\n}), fr = Q((t, e) => {\n const n = 10 ** Math.max(E(t), E(e));\n return (P(t, n) - P(e, n)) / n;\n}), ur = Q((t, e) => {\n const n = K(t), r = K(e);\n return P(n / r, jt(10 ** (E(e) - E(t))));\n}), we = 1e3, N = 1e3, k = 60, Ee = k * N, lr = k * N, X = 60, qt = X * k, Ae = qt * N, dr = qt * N, Kt = 24, Ne = Kt * X, Qt = Ne * k, Fe = Qt * N, hr = Qt * N, at = 7, Oe = at * Kt, $e = Oe * X, Xt = $e * k, Te = Xt * N, gr = Xt * N, Vt = 3, Ce = 4, Re = Ce * Vt, _e = {\n y(t, e) {\n const n = t.getFullYear();\n return e.length === 4 ? n : n % 1e3 % 100;\n },\n M(t, e) {\n const n = t.getMonth() + 1;\n return e.length === 2 ? A(n) : n;\n },\n d(t, e) {\n const n = t.getDate();\n return e.length === 2 ? A(n) : n;\n },\n H(t, e) {\n const n = t.getHours();\n return e.length === 2 ? A(n) : n;\n },\n m(t, e) {\n const n = t.getMinutes();\n return e.length === 2 ? A(n) : n;\n },\n s(t, e) {\n const n = t.getSeconds();\n return e.length === 2 ? A(n) : n;\n },\n q(t, e) {\n const n = Math.ceil((t.getMonth() + 1) / 3);\n return e.length === 2 ? A(n) : n;\n }\n}, ke = /[yMdHmsq](\\w)*|./g, xe = /'(.+?)'/g;\nfunction h(t, e = !1) {\n const n = new Date(t);\n if (e && Number.isNaN(+n))\n throw new RangeError(\"Invalid date value\");\n return typeof t == \"string\" && !t.includes(\":\") && (n.setHours(0), n.setMinutes(0), n.setSeconds(0)), n;\n}\nfunction pr(t, e = \"yyyy-MM-dd HH:mm:ss\") {\n t = h(t);\n const n = e.match(ke), r = n == null ? void 0 : n.length;\n if (!r)\n return e;\n let o = 0, i = \"\";\n for (; o < r; ) {\n const s = n[o], c = s[0], a = _e[c];\n a ? i += a(t, s) : i += s, ++o;\n }\n return i.replace(xe, \"$1\");\n}\nfunction mr(t) {\n return t = h(t), `${A(t.getHours())}:${A(t.getMinutes())}:${A(\n t.getSeconds()\n )}`;\n}\nfunction ot(t) {\n return t = h(t), Math.floor(t.getMonth() / 3) + 1;\n}\nconst De = [\"日\", \"一\", \"二\", \"三\", \"四\", \"五\", \"六\"];\nfunction br(t) {\n return De[t.getDay()];\n}\nfunction Ie(t, e) {\n return t = h(t), t.setTime(t.getTime() + e), t;\n}\nfunction Le(t, e) {\n return e *= N, Ie(t, e);\n}\nfunction He(t, e) {\n return e *= k, Le(t, e);\n}\nfunction Pe(t, e) {\n return e *= X, He(t, e);\n}\nfunction yr(t, e) {\n return e *= 12, Pe(t, e);\n}\nfunction ft(t, e) {\n return t = h(t), e = ~~e, t.setDate(t.getDate() + e), t;\n}\nfunction Mr(t, e) {\n return e *= at, ft(t, e);\n}\nfunction ut(t, e) {\n return t = h(t), e = ~~e, t.setMonth(t.getMonth() + e), t;\n}\nfunction Sr(t, e) {\n return e *= Vt, ut(t, e);\n}\nfunction wr(t, e) {\n return e *= Re, ut(t, e);\n}\nfunction Er(t, e = 42, n = 1) {\n t = h(t);\n const r = [];\n for (let o = 0; o < e; ++o)\n r.push(ft(t, o * n));\n return r;\n}\nfunction Ar(t, e = 12, n = 1) {\n t = h(t);\n const r = [];\n for (let o = 0; o < e; ++o)\n r.push(ut(t, o * n));\n return r;\n}\nfunction Nr(t) {\n const e = t.getDay() ?? 7;\n return ft(t, -e);\n}\nfunction Mt(t) {\n return t = h(t), t.setMilliseconds(0), t;\n}\nfunction St(t) {\n return t = h(t), t.setSeconds(0, 0), t;\n}\nfunction wt(t) {\n return t = h(t), t.setMinutes(0, 0, 0), t;\n}\nfunction Et(t) {\n return t = h(t), t.setHours(0, 0, 0, 0), t;\n}\nfunction Fr(t) {\n return t = h(t), t.setHours(23, 59, 59, 999), t;\n}\nfunction At(t, e = 0) {\n e = e % 7, e < 0 && (e += 7), t = h(t);\n const n = t.getDay(), r = (n < e ? 7 : 0) + n - e;\n return t.setDate(t.getDate() - r), t.setHours(0, 0, 0, 0), t;\n}\nfunction Be(t) {\n return t % 4 === 0 && t % 100 !== 0 || t % 400 === 0;\n}\nfunction Ue(t, e) {\n let n;\n return e < 7 ? e !== 2 ? n = 30 + e % 2 : Be(t) ? n = 29 : n = 28 : n = 31 - e % 2, n;\n}\nfunction Or(t, e = 1) {\n t = h(t);\n const n = t.getFullYear(), r = t.getMonth() + 1, o = t.getDate(), i = Ue(n, r);\n return e = e % i, e < 0 && (e += i), o < e && t.setMonth(r - 1), t.setDate(e), t.setHours(0, 0, 0, 0), t;\n}\nfunction $r(t) {\n t = h(t);\n const e = ot(t);\n return t.setDate(1), t.setHours(0, 0, 0, 0), t.setMonth((e - 1) * 3), t;\n}\nfunction Tr(t, e = 0) {\n e = e % 11, e < 0 && (e += 11), t = h(t);\n const n = t.getMonth(), r = (n < e ? 11 : 0) + n - e;\n return t.setMonth(t.getMonth() - r), t.setDate(1), t.setHours(0, 0, 0, 0), t;\n}\nfunction lt(t, e) {\n return t = h(t), e = h(e), e.getTime() - t.getTime();\n}\nfunction Ye(t, e) {\n const n = lt(t, e) / we;\n return n > 0 ? Math.floor(n) : Math.ceil(n);\n}\nfunction Ge(t, e) {\n const n = lt(t, e) / Ee;\n return n > 0 ? Math.floor(n) : Math.ceil(n);\n}\nfunction We(t, e) {\n const n = lt(t, e) / Ae;\n return n > 0 ? Math.floor(n) : Math.ceil(n);\n}\nfunction ze(t, e) {\n return t = Et(t), e = Et(e), (e.getTime() - t.getTime()) / Fe;\n}\nfunction Cr(t, e, n = 0) {\n return t = At(t, n), e = At(e, n), (e.getTime() - t.getTime()) / Te;\n}\nfunction je(t, e) {\n t = h(t), e = h(e);\n const n = e.getFullYear() - t.getFullYear(), r = e.getMonth() - t.getMonth();\n return n * 12 + r;\n}\nfunction Rr(t, e) {\n t = h(t), e = h(e);\n const n = e.getFullYear() - t.getFullYear(), r = ot(e) - ot(t);\n return n * 4 + r;\n}\nfunction qe(t, e) {\n return t = h(t), e = h(e), e.getFullYear() - t.getFullYear();\n}\nfunction Ke(t, e) {\n t = h(t), e = h(e);\n const n = t.getTime() - e.getTime();\n return n < 0 ? -1 : n > 0 ? 1 : n;\n}\nfunction _(t, e) {\n return -Ke(t, e);\n}\nfunction _r(t, e) {\n return t = Mt(t), e = Mt(e), Ye(t, e);\n}\nfunction kr(t, e) {\n return t = St(t), e = St(e), Ge(t, e);\n}\nfunction xr(t, e) {\n return t = wt(t), e = wt(e), We(t, e);\n}\nfunction Qe(t, e) {\n const n = _(t, e), r = Math.abs(ze(t, e));\n t = h(t), t.setDate(t.getDate() + n * r);\n const o = _(t, e) === -n;\n return n * (r - (o ? 1 : 0));\n}\nfunction Dr(t, e) {\n const n = Qe(t, e) / at;\n return n > 0 ? Math.floor(n) : Math.ceil(n);\n}\nfunction Xe(t, e) {\n const n = _(t, e), r = Math.abs(je(t, e));\n t = h(t), t.setMonth(t.getMonth() + n * r);\n const o = _(t, e) === -n;\n return n * (r - (o ? 1 : 0));\n}\nfunction Ir(t, e) {\n const n = Xe(t, e) / 3;\n return n > 0 ? Math.floor(n) : Math.ceil(n);\n}\nfunction Lr(t, e) {\n const n = _(t, e), r = Math.abs(qe(t, e));\n t = h(t), t.setFullYear(t.getFullYear() + n * r);\n const o = _(t, e) === -n;\n return n * (r - (o ? 1 : 0));\n}\nfunction Ve(t, e = {}) {\n if (t == null || typeof t != \"object\")\n return t;\n const { cloneObject: n = it } = e, r = /* @__PURE__ */ Object.create(null), o = [\n {\n parent: r,\n prop: \"root\",\n data: t\n }\n ], i = /* @__PURE__ */ new WeakMap(), s = [], c = [];\n for (; o.length; ) {\n const { parent: a, prop: f, data: u } = o.pop();\n if (!a) continue;\n const d = ae(u);\n if (d === \"Date\") {\n a[f] = new Date(u);\n continue;\n }\n if (d !== \"Array\") {\n const l = n(d, u);\n if (l != null) {\n a[f] = l;\n continue;\n }\n }\n const g = a[f] = d === \"Array\" || d === \"Set\" || d === \"Map\" ? [] : /* @__PURE__ */ Object.create(null);\n if (d === \"Set\" || d === \"Map\") {\n let l = 0;\n if (d === \"Set\") {\n for (const p of u)\n i.has(p) ? g[l] = i.get(p) : p !== null && typeof p == \"object\" ? o.push({\n parent: g,\n prop: l,\n data: p\n }) : g[l] = p, ++l;\n s.push({ parent: a, prop: f });\n } else {\n for (const p of u) {\n const b = [];\n l = 0;\n for (const m of p)\n i.has(m) ? b[l] = i.get(m) : m !== null && typeof m == \"object\" ? o.push({\n parent: b,\n prop: l,\n data: m\n }) : b[l] = m, ++l;\n g.push(b);\n }\n c.push({ parent: a, prop: f });\n }\n } else\n for (const l of Object.keys(u)) {\n const p = u[l];\n i.has(p) ? g[l] = i.get(p) : p !== null && typeof p == \"object\" ? o.push({\n parent: g,\n prop: l,\n data: p\n }) : g[l] = p;\n }\n i.set(u, g);\n }\n for (const { parent: a, prop: f } of s)\n a[f] = new Set(a[f]);\n for (const { parent: a, prop: f } of c)\n a[f] = new Map(a[f]);\n return r.root;\n}\nconst Ze = \"This object was destroyed, do not use it anywhere\", Je = () => !0;\nfunction Hr(t, e = Ze) {\n const n = () => {\n throw new Error(e);\n };\n Object.keys(t).forEach((r) => {\n typeof t[r] == \"function\" ? t[r] = n.bind(t) : t[r] = null;\n }), Object.getOwnPropertyNames(t.constructor.prototype).forEach((r) => {\n r !== \"constructor\" && typeof t[r] == \"function\" && (t[r] = n.bind(t));\n }), t.isDestroyed = Je;\n}\nconst ve = y && (\"ontouchstart\" in window || tn() > 0), Pr = ve ? \"pointerdown\" : \"click\";\nfunction tn() {\n return typeof navigator < \"u\" && (navigator.maxTouchPoints || navigator.msMaxTouchPoints) || 0;\n}\nfunction Br(t, e, n = window.Event) {\n const { type: r, bubbles: o = !1, cancelable: i = !1, ...s } = e;\n if (!M(r) || r === \"\") return !1;\n let c;\n return M(n) ? c = new n(r, { bubbles: o, cancelable: i }) : (c = document.createEvent(\"HTMLEvents\"), c.initEvent(r, o, i)), Object.assign(c, s), t.dispatchEvent(c);\n}\nconst en = [\n \"button\",\n \"[href]:not(.disabled)\",\n \"input\",\n \"select\",\n \"textarea\",\n \"[tabindex]\",\n \"[contenteditable]\"\n].map((t) => `${t}:not(:disabled):not([disabled])`).join(\", \");\nfunction V(t) {\n return !!t && t.nodeType === 1;\n}\nfunction nn(t) {\n return V(t) ? t : document.body;\n}\nfunction rn(t, e) {\n return !y || !t ? [] : Array.from(nn(e).querySelectorAll(t));\n}\nfunction Ur(t) {\n if (!y) return !1;\n const e = document.activeElement;\n return !V(t) || !e ? !1 : t === e || Zt(e, t);\n}\nfunction Zt(t, e) {\n if (!t || !e) return !1;\n const n = e.__transferElement;\n return e.contains(t) || !!n && (n === t || n.contains(t));\n}\nfunction on(t) {\n if (!y || !V(t) || !t.parentNode || !Zt(t, document.body) || t.style.display === \"none\")\n return !0;\n const e = t.getBoundingClientRect();\n return !(e && e.width > 0 && e.height > 0);\n}\nfunction sn(t) {\n return !on(t);\n}\nfunction cn(t) {\n return !V(t) || t.hasAttribute(\"disabled\") && t.getAttribute(\"disabled\") !== \"false\" || t.disabled;\n}\nfunction Yr(t, e = !1) {\n const n = e ? () => !1 : cn;\n return rn(en, t).filter(\n (r) => sn(r) && r.tabIndex > -1 && !n(r)\n );\n}\nfunction an(t) {\n if (!y || !t) return 0;\n const e = getComputedStyle(t);\n return parseFloat(e.paddingLeft) + parseFloat(e.paddingRight) || 0;\n}\nfunction Gr(t) {\n if (!y || !t) return 0;\n const e = getComputedStyle(t);\n return parseFloat(e.paddingTop) + parseFloat(e.paddingBottom) || 0;\n}\nfunction Wr(t) {\n if (!y || !t) return 0;\n const e = getComputedStyle(t);\n return parseFloat(e.marginLeft) + parseFloat(e.marginRight) || 0;\n}\nfunction zr(t) {\n if (!y || !t) return 0;\n const e = getComputedStyle(t);\n return parseFloat(e.marginTop) + parseFloat(e.marginBottom) || 0;\n}\nfunction jr(t) {\n if (!y || !t) return 0;\n const e = getComputedStyle(t);\n return parseFloat(e.borderLeftWidth) + parseFloat(e.borderRightWidth) || 0;\n}\nfunction qr(t) {\n if (!y || !t) return 0;\n const e = getComputedStyle(t);\n return parseFloat(e.borderTopWidth) + parseFloat(e.borderBottomWidth) || 0;\n}\nfunction Kr(t) {\n if (!y || !t) return 0;\n const e = document.createRange();\n e.setStart(t, 0), e.setEnd(t, t.childNodes.length);\n const n = e.getBoundingClientRect().width, r = an(t);\n return n + r;\n}\nfunction Qr(t) {\n return ye(t, !0) ? `${Me(t)}px` : String(t).trim();\n}\nfunction Xr(t) {\n return M(t) && t !== !1 ? String(t) : void 0;\n}\nconst fn = /[\"'&<>]/;\nfunction Vr(t) {\n const e = \"\" + t, n = fn.exec(e);\n if (!n)\n return e;\n let r = \"\", o, i, s = 0;\n for (i = n.index; i < e.length; i++) {\n switch (e.charCodeAt(i)) {\n case 34:\n o = \""\";\n break;\n case 38:\n o = \"&\";\n break;\n case 39:\n o = \"'\";\n break;\n case 60:\n o = \"<\";\n break;\n case 62:\n o = \">\";\n break;\n default:\n continue;\n }\n s !== i && (r += e.substring(s, i)), s = i + 1, r += o;\n }\n return s !== i ? r + e.substring(s, i) : r;\n}\nfunction Zr() {\n const t = /* @__PURE__ */ new Map();\n return {\n on(e, n) {\n const r = t.get(e);\n (r == null ? void 0 : r.add(n)) || t.set(e, /* @__PURE__ */ new Set([n]));\n },\n off(e, n) {\n const r = t.get(e);\n r && r.delete(n);\n },\n clear(e) {\n const n = t.get(e);\n n && n.clear();\n },\n clearAll() {\n t.clear();\n },\n emit(e, ...n) {\n const r = t.get(e);\n r && r.forEach((o) => {\n o(...n);\n });\n }\n };\n}\nfunction dt(t, e, n) {\n t && !e.has(t) && (n(t), e.add(t));\n}\nconst un = /* @__PURE__ */ new Set();\nfunction Jr(t, e = console.info) {\n dt(t, un, e);\n}\nconst ln = /* @__PURE__ */ new Set();\nfunction vr(t, e = console.warn) {\n dt(t, ln, e);\n}\nconst dn = /* @__PURE__ */ new Set();\nfunction to(t, e = console.warn) {\n dt(t, dn, e);\n}\nconst ht = y ? requestAnimationFrame : (t) => {\n setTimeout(t, 16);\n};\nfunction eo(t, e = 16) {\n if (typeof t != \"function\")\n return it;\n const n = (...i) => {\n t(...i);\n };\n if (e <= 0)\n return Jt(n);\n let r = 0, o;\n return function(...i) {\n const s = Date.now(), c = s - r;\n clearTimeout(o), c >= e ? (r = s, n(...i)) : o = setTimeout(\n () => {\n r = Date.now(), n(...i);\n },\n Math.max(0, e - c)\n );\n };\n}\nfunction no(t, e = 100) {\n if (typeof t != \"function\")\n return it;\n const n = (...o) => {\n t(...o);\n };\n if (e <= 0)\n return Jt(n);\n let r;\n return function(...o) {\n clearTimeout(r), r = setTimeout(() => {\n n(...o);\n }, e);\n };\n}\nfunction Jt(t) {\n if (typeof t != \"function\")\n return t;\n let e = !1, n, r;\n return function(...o) {\n return n = o, e || (e = !0, r = Promise.resolve().then(() => (e = !1, r = void 0, t(...n)))), r;\n };\n}\nfunction ro(t) {\n if (typeof t != \"function\")\n return t;\n let e = !1, n, r;\n return function(...o) {\n return n = o, e || (e = !0, r = new Promise(\n (i) => ht(() => {\n e = !1, r = void 0, i(t(...n));\n })\n )), r;\n };\n}\nconst x = /* @__PURE__ */ new Set(), vt = /* @__PURE__ */ new WeakMap();\nfunction hn() {\n x.forEach((t) => {\n t(...vt.get(t));\n }), x.clear();\n}\nfunction oo(t, ...e) {\n if (typeof t != \"function\")\n return t;\n vt.set(t, e), !x.has(t) && (x.add(t), x.size === 1 && Promise.resolve().then(hn));\n}\nconst D = /* @__PURE__ */ new Set(), te = /* @__PURE__ */ new WeakMap();\nfunction gn() {\n D.forEach((t) => {\n t(...te.get(t));\n }), D.clear();\n}\nfunction io(t, ...e) {\n if (typeof t != \"function\")\n return t;\n te.set(t, e), !D.has(t) && (D.add(t), D.size === 1 && ht(gn));\n}\nasync function so(t, e, n) {\n const r = [], o = [];\n for (const i of e) {\n const s = Promise.resolve().then(() => n(i, e));\n if (r.push(s), t <= e.length) {\n const c = s.then(() => o.splice(o.indexOf(c), 1));\n o.push(c), o.length >= t && await Promise.race(o);\n }\n }\n return Promise.all(r);\n}\nlet nt = null;\nfunction co() {\n if (!y)\n return !0;\n if (nt === null) {\n const t = document.createElement(\"div\");\n t.style.display = \"flex\", t.style.flexDirection = \"column\", t.style.rowGap = \"1px\", t.appendChild(document.createElement(\"div\")), t.appendChild(document.createElement(\"div\")), document.body.appendChild(t), nt = t.scrollHeight === 1, document.body.removeChild(t);\n }\n return nt;\n}\nlet rt = null;\nfunction ao() {\n return y ? (rt === null && (rt = \"loading\" in document.createElement(\"img\")), rt) : !1;\n}\nfunction fo(t) {\n return Array.isArray(t) ? t : [t];\n}\nfunction uo(t, ...e) {\n return $t(t) ? t(...e) : t;\n}\nfunction lo(t) {\n return t.replace(/[\\\\/]+/g, \"/\");\n}\nfunction ho(t) {\n return t[t.length - 1];\n}\nconst Nt = (t) => t;\nfunction go(t, e, n, r) {\n let o;\n typeof n != \"function\" && r === void 0 ? (r = !!n, o = Nt) : o = typeof n == \"function\" ? n : Nt;\n const i = r ? /* @__PURE__ */ new Map() : {};\n if (!M(e)) return i;\n const s = r ? (a, f) => i.set(a, f) : (a, f) => i[a] = f, c = $t(e) ? e : (a) => a[e];\n return t.forEach((a) => {\n if (!M(a)) return;\n const f = c(a);\n M(f) && s(f, o(a));\n }), i;\n}\nfunction po(t, e, n = !1) {\n let r = -1;\n return n || typeof e != \"function\" ? r = t.findIndex((o) => o === e) : r = t.findIndex(e), ~r ? t.splice(r, 1)[0] : null;\n}\nfunction mo(t, e = []) {\n (typeof e == \"string\" || typeof e == \"function\") && (e = [e]);\n const n = e.length, r = {};\n for (const o of t) {\n let i;\n for (let s = 0; s < n; ++s) {\n const c = s === n - 1, a = e[s], f = typeof a == \"function\" ? a(o) : o[a];\n i ? (i[f] || (i[f] = c ? [] : {}), i = i[f]) : (r[f] || (r[f] = c ? [] : {}), i = r[f]);\n }\n i.push(o);\n }\n return r;\n}\nfunction bo(t, e = {}) {\n const {\n keyField: n = \"id\",\n childField: r = \"children\",\n parentField: o = \"parent\",\n rootId: i = null\n } = e, s = M(i) && i !== \"\", c = [], a = /* @__PURE__ */ new Map();\n for (let f = 0, u = t.length; f < u; ++f) {\n const d = t[f], g = d[n];\n if (!(s ? g === i : !M(g)))\n if (a.has(g) ? d[r] = a.get(g) : (d[r] = [], a.set(g, d[r])), d[o] && (!s || d[o] !== i)) {\n const l = d[o];\n a.has(l) || a.set(l, []), a.get(l).push(d);\n } else\n c.push(d);\n }\n return c;\n}\nfunction yo(t, e = {}) {\n const {\n keyField: n = \"id\",\n childField: r = \"children\",\n parentField: o = \"parent\",\n rootId: i = null,\n depthFirst: s = !1,\n injectId: c = !0,\n buildId: a = (m) => m,\n filter: f = ce,\n cascaded: u = !1,\n forceInject: d = !1\n } = e;\n let g = 1;\n const l = M(i) && i !== \"\", p = [], b = [...t];\n for (; b.length; ) {\n const m = b.shift(), Z = m[r], J = Array.isArray(Z) && Z.length ? Z : [];\n c && (d || !m[n]) && (m[n] = a(g++));\n const ee = m[n];\n c && o && (l ? m[o] === i : !m[o]) && (m[o] = i);\n const gt = f(m);\n if (gt && p.push(m), gt || !u) {\n for (let v = 0, ne = J.length; v < ne; ++v) {\n const pt = J[v];\n c && o && (pt[o] = ee), !s && b.push(pt);\n }\n s && b.unshift(...J);\n }\n }\n return p;\n}\nfunction Mo(t, e, n = {}) {\n const { childField: r = \"children\", depthFirst: o = !1 } = n, i = [...t.map((s) => ({ item: s, depth: 0, parent: null }))];\n for (; i.length; ) {\n const { item: s, depth: c, parent: a } = i.shift(), f = s[r];\n e(s, c, a), G(f) && i[o ? \"unshift\" : \"push\"](\n ...Array.from(f).map((u) => ({ item: u, depth: c + 1, parent: s }))\n );\n }\n}\nfunction So(t, e, n = {}) {\n const { childField: r = \"children\", depthFirst: o = !1, clearChildren: i = !0 } = n, s = [], c = [...t.map((a) => ({ item: a, depth: 0, parent: null, result: s }))];\n for (; c.length; ) {\n const { item: a, depth: f, parent: u, result: d } = c.shift(), g = a[r], l = e(a, f, u) ?? {};\n i && (l[r] = []), d.push(l), G(g) && Array.from(g).length && (l[r] = [], c[o ? \"unshift\" : \"push\"](\n ...Array.from(g).map((b) => ({\n item: b,\n depth: f + 1,\n parent: a,\n result: l[r]\n }))\n ));\n }\n return s;\n}\nfunction wo(t, e, n = {}) {\n const {\n childField: r = \"children\",\n leafOnly: o = !1,\n isLeaf: i = (c) => !G(c[r])\n } = n, s = (c, a, f) => c.map((u) => ({ ...u })).filter((u) => {\n const d = u[r], g = i(u), l = G(d) && Array.from(d);\n if (o && !g) {\n if (l && l.length) {\n const b = s(l, a + 1, u);\n return u[r] = b, !!b.length;\n }\n return !1;\n }\n const p = e(u, a, f);\n if (g) return p;\n if (!o && p) return !0;\n if (l && l.length) {\n const b = s(l, a + 1, u);\n return u[r] = b, !!b.length;\n }\n return p;\n });\n return s(t, 0, null);\n}\nconst Ft = (t, e) => Number.isNaN(Number(t) - Number(e)) ? String(t).localeCompare(e) : t - e;\nfunction Eo(t, e) {\n if (!t.sort || Y(e) && !e.key || !e.length)\n return t;\n const n = Array.from(t);\n Array.isArray(e) || (e = [e]);\n const r = e.map(\n (o) => typeof o == \"string\" ? {\n key: o,\n method: Ft,\n type: \"asc\"\n } : o\n ).map((o) => (typeof o.accessor != \"function\" && (o.accessor = (i) => i[o.key]), typeof o.method != \"function\" && (o.method = Ft), o.params = Array.isArray(o.params) ? o.params : [], o));\n return n.sort((o, i) => {\n let s = 0;\n for (const c of r) {\n const { method: a, type: f, accessor: u, params: d } = c, g = f === \"desc\", l = a(u(o, ...d), u(i, ...d));\n if (s = g ? -l : l, s) break;\n }\n return s;\n }), n;\n}\nfunction Ao(t, e, n = !0) {\n t = n ? Ve(t) : t;\n const r = [\n {\n source: t,\n target: e\n }\n ];\n for (; r.length; ) {\n const { source: o, target: i } = r.pop();\n Object.keys(i).forEach((s) => {\n Y(i[s]) ? (Y(o[s]) || (o[s] = /* @__PURE__ */ Object.create(null)), r.push({\n source: o[s],\n target: i[s]\n })) : Array.isArray(i[s]) ? (Array.isArray(o[s]) || (o[s] = []), r.push({\n source: o[s],\n target: i[s]\n })) : o[s] = i[s];\n });\n }\n return t;\n}\nfunction No(t) {\n t = Array.from(t);\n let e = !1;\n const n = () => {\n var r;\n e || ((r = t.shift()) == null || r(), t.length && ht(n));\n };\n return n(), () => e = !0;\n}\nfunction pn(t) {\n const e = t.match(/[A-Z]+/);\n return e && e[0] === t;\n}\nconst mn = /\\B([A-Z])(?=[^A-Z_-])/g;\nfunction Fo(t) {\n return t.replace(mn, \"-$1\").toLowerCase();\n}\nfunction bn(t) {\n return t = t.trim().replace(/\\s+/g, \"-\"), t = t.replace(/-+(\\w)/g, (e, n) => n ? n.toUpperCase() : \"\"), (t.charAt(0).toLocaleUpperCase() + t.slice(1)).replace(\n /[^\\w]/g,\n \"\"\n );\n}\nfunction Oo(t) {\n const e = bn(t);\n return pn(e) ? e.toLocaleLowerCase() : e.charAt(0).toLowerCase() + e.slice(1);\n}\nexport {\n Pr as CLICK_TYPE,\n de as COLOR_NAMES,\n Kt as DAY_ON_HOURS,\n hr as DAY_ON_MILLISECONDS,\n Fe as DAY_ON_MILLS,\n Ne as DAY_ON_MINUTES,\n Qt as DAY_ON_SECONDS,\n Dt as HEX_REG_3,\n It as HEX_REG_4,\n Lt as HEX_REG_6,\n Ht as HEX_REG_8,\n dr as HOUR_ON_MILLISECONDS,\n Ae as HOUR_ON_MILLS,\n X as HOUR_ON_MINUTES,\n qt as HOUR_ON_SECONDS,\n _t as HSLA_REG,\n Rt as HSL_REG,\n xt as HSVA_REG,\n kt as HSV_REG,\n lr as MINUTE_ON_MILLISECONDS,\n Ee as MINUTE_ON_MILLS,\n k as MINUTE_ON_SECONDS,\n W as NAMED_COLORS,\n Vt as QUARTER_ON_MONTHS,\n Ct as RGBA_REG,\n Tt as RGB_REG,\n N as SECOND_ON_MILLISECONDS,\n we as SECOND_ON_MILLS,\n ve as USE_TOUCH,\n at as WEEK_ON_DAYS,\n Oe as WEEK_ON_HOURS,\n gr as WEEK_ON_MILLISECONDS,\n Te as WEEK_ON_MILLS,\n $e as WEEK_ON_MINUTES,\n Xt as WEEK_ON_SECONDS,\n Re as YEAR_ON_MONTHS,\n Ce as YEAR_ON_QUARTERS,\n ft as addDays,\n yr as addHalfDays,\n Pe as addHours,\n Ie as addMilliseconds,\n He as addMinutes,\n ut as addMonths,\n Sr as addQuarters,\n Le as addSeconds,\n Mr as addWeeks,\n wr as addYears,\n zn as adjustAlpha,\n rr as boundRange,\n bo as buildTree,\n uo as callIfFunc,\n Ke as compareAsc,\n _ as compareDesc,\n Zt as contains,\n Jn as createBITree,\n Zn as createCounter,\n Zr as createEventEmitter,\n no as debounce,\n ro as debounceFrame,\n Jt as debounceMinor,\n Pn as decide,\n E as decimalLength,\n Ve as deepClone,\n Hr as destroyObject,\n ze as differenceDays,\n Qe as differenceFullDays,\n xr as differenceFullHours,\n kr as differenceFullMinutes,\n Xe as differenceFullMonths,\n Ir as differenceFullQuarters,\n _r as differenceFullSeconds,\n Dr as differenceFullWeeks,\n Lr as differenceFullYears,\n We as differenceHours,\n lt as differenceMilliseconds,\n Ge as differenceMinutes,\n je as differenceMonths,\n Rr as differenceQuarters,\n Ye as differenceSeconds,\n Cr as differenceWeeks,\n qe as differenceYears,\n vn as digitLength,\n Br as dispatchEvent,\n ur as divide,\n A as doubleDigits,\n Fr as endOfDay,\n fo as ensureArray,\n to as errorOnce,\n Vr as escapeHtml,\n wo as filterTree,\n yo as flatTree,\n pr as format,\n sr as formatByteSize,\n br as getChineseWeek,\n Xn as getGlobalCount,\n ho as getLast,\n Ue as getLastDayOfMonth,\n Nr as getLastSunday,\n ot as getQuarter,\n Kr as getRangeWidth,\n mr as getTime,\n ae as getType,\n jr as getXBorder,\n Wr as getXMargin,\n an as getXPadding,\n qr as getYBorder,\n zr as getYMargin,\n Gr as getYPadding,\n mo as groupByProps,\n Mn as has,\n ge as hslToHsv,\n Pt as hslToRgb,\n Gn as hsvToHsl,\n pe as hsvToRgb,\n Jr as infoOnce,\n B as is,\n $n as isArray,\n On as isBigInt,\n En as isBoolean,\n y as isClient,\n Un as isColor,\n _n as isDate,\n M as isDefined,\n cn as isDisabled,\n Dn as isElement,\n xn as isEmpty,\n Nn as isFalse,\n Ur as isFocusIn,\n $t as isFunction,\n on as isHidden,\n yn as isIOS,\n G as isIterable,\n Be as isLeapYear,\n Rn as isMap,\n se as isNaN,\n ie as isNull,\n Sn as isNumber,\n Y as isObject,\n Tn as isPromise,\n kn as isRegExp,\n Cn as isSet,\n wn as isString,\n Fn as isSymbol,\n An as isTrue,\n ye as isValidNumber,\n sn as isVisible,\n or as leaveNumber,\n go as listToMap,\n So as mapTree,\n Ao as mergeObjects,\n fr as minus,\n Wn as mixColor,\n er as multipleFixed,\n io as nextFrameOnce,\n oo as nextTickOnce,\n it as noop,\n C as normalizeAlpha,\n z as normalizeHsl,\n j as normalizeHsv,\n lo as normalizePath,\n R as normalizeRgb,\n be as numberRE,\n ir as ordinalNumber,\n Se as padStartZeros,\n Yn as parseColor,\n O as parseColorToRgba,\n he as parseStringColor,\n ar as plus,\n rn as queryAll,\n Yr as queryTabables,\n ht as raf,\n cr as random,\n jn as randomColor,\n qn as randomHardColor,\n Yt as randomPreferColor,\n Kn as randomSoftColor,\n Hn as randomString,\n Ln as range,\n Er as rangeDate,\n Ar as rangeMonth,\n po as removeArrayItem,\n st as rgbToHex,\n Bt as rgbToHsl,\n Ut as rgbToHsv,\n ct as rgbaToHex,\n nr as round,\n so as runParallel,\n No as runQueueFrame,\n tr as segmentNumber,\n Vn as setGlobalCount,\n Eo as sortByProps,\n Et as startOfDay,\n wt as startOfHour,\n St as startOfMinute,\n Or as startOfMonth,\n $r as startOfQuarter,\n Mt as startOfSecond,\n At as startOfWeek,\n Tr as startOfYear,\n co as supportFlexGap,\n ao as supportImgLoading,\n eo as throttle,\n P as times,\n Xr as toAttrValue,\n Oo as toCamelCase,\n bn as toCapitalCase,\n Qr as toCssSize,\n h as toDate,\n In as toFalse,\n zt as toFixed,\n Qn as toGrayScale,\n Fo as toKebabCase,\n Me as toNumber,\n jt as toPrecision,\n ce as toTrue,\n go as transformListToMap,\n bo as transformTree,\n Mo as walkTree,\n vr as warnOnce,\n Bn as writeClipboard\n};\n//# sourceMappingURL=index.mjs.map\n","import { computed, getCurrentScope, onScopeDispose, unref, watch } from 'vue'\n\nimport { noop } from '@vexip-ui/utils'\n\nimport type { MaybeRef } from 'vue'\n\nexport interface UseListenerOptions extends AddEventListenerOptions {\n /**\n * 是否禁用整个 hook 的事件处理\n */\n disabled?: MaybeRef<boolean>\n}\n\nexport function useListener<E = Event>(\n target: MaybeRef<EventTarget | null | undefined>,\n event: string,\n listener: (event: E) => any,\n options?: UseListenerOptions | boolean,\n) {\n if (!target) {\n return noop\n }\n\n const normalizedOptions = computed(() => {\n if (typeof options === 'boolean') {\n return { capture: options }\n }\n\n return options || {}\n })\n\n let remove = noop\n\n const stopWatch = watch(\n () => unref(target),\n el => {\n remove()\n\n if (!el) {\n return\n }\n\n const { disabled, ...opts } = normalizedOptions.value\n const handler = (event: Event) => {\n if (!unref(disabled)) {\n listener(event as E)\n }\n }\n\n el.addEventListener(event, handler, opts)\n\n remove = () => {\n el.removeEventListener(event, handler, opts)\n remove = noop\n }\n },\n { immediate: true, flush: 'post' },\n )\n\n const stop = () => {\n stopWatch()\n remove()\n }\n\n getCurrentScope() && onScopeDispose(stop)\n\n return stop\n}\n","import { getCurrentScope, onScopeDispose, ref, unref, watch } from 'vue'\n\nimport { CLICK_TYPE, dispatchEvent, isClient, noop } from '@vexip-ui/utils'\nimport { useListener } from './listener'\n\nimport type { Ref } from 'vue'\nimport type { TransferNode } from '@vexip-ui/utils'\n\nexport const CLICK_OUTSIDE = 'clickoutside'\n\nconst elements = new Set<TransferNode>()\n\nif (isClient) {\n document.addEventListener(\n CLICK_TYPE,\n (event: Event) => {\n const target = event.target as Node | null\n const path = event.composedPath && event.composedPath()\n\n elements.forEach(el => {\n if (\n el !== target &&\n (path ? !path.includes(el) : !el.contains(target)) &&\n (!el.__transferElement ||\n (el.__transferElement !== target && !el.__transferElement.contains(target)))\n ) {\n dispatchEvent(el, { type: CLICK_OUTSIDE })\n }\n })\n },\n true,\n )\n}\n\n/**\n * 创建一个可以添加 clickoutside 事件的元素 Ref\n *\n * @param handler 事件的回调方法\n * @param target 需要处理的元素 ref,可不传\n */\nexport function useClickOutside(\n handler: () => void,\n target: Ref<HTMLElement | null | undefined> = ref(null),\n) {\n let remove = noop\n\n const stopWatch = watch(\n () => unref(target),\n el => {\n remove()\n\n if (!el) {\n return\n }\n\n elements.add(el)\n\n remove = () => {\n elements.delete(el)\n remove = noop\n }\n },\n { immediate: true, flush: 'post' },\n )\n\n const stop = () => {\n stopWatch()\n remove()\n }\n\n getCurrentScope() && onScopeDispose(stop)\n useListener(target, CLICK_OUTSIDE, handler)\n\n return target\n}\n","import { nextTick, onBeforeUnmount, onMounted, ref } from 'vue'\n\nimport { noop } from '@vexip-ui/utils'\n\nimport type { Ref } from 'vue'\n\n/**\n * 创建一个观察了最近的上级元素 display 变化的元素 Ref\n *\n * @param displayInit 元素初次显示后执行的回调\n * @returns 观察了 display 变化的元素 Ref\n */\nexport function useDisplay(\n displayInit = noop,\n element: Ref<HTMLElement | null | undefined> = ref(null),\n) {\n let observer: MutationObserver | null\n\n onMounted(() => {\n nextTick(() => {\n const hiddenParentNode = queryOutsideHiddenElement(element.value)\n\n if (hiddenParentNode) {\n observer = new MutationObserver(() => {\n if (hiddenParentNode.style.display !== 'none') {\n if (typeof displayInit === 'function') {\n displayInit()\n }\n\n observer?.disconnect()\n observer = null\n }\n })\n\n observer.observe(hiddenParentNode, {\n attributes: true,\n childList: true,\n characterData: true,\n attributeFilter: ['style'],\n })\n } else {\n typeof displayInit === 'function' && displayInit()\n }\n })\n })\n\n onBeforeUnmount(() => {\n observer?.disconnect()\n observer = null\n })\n\n return element\n}\n\nexport function queryOutsideHiddenElement(el?: Element | null) {\n if (el) {\n let parentElement = el.parentElement\n\n while (parentElement && parentElement !== document.body) {\n if (parentElement.style.display === 'none') {\n return parentElement\n }\n\n parentElement = parentElement.parentElement\n }\n }\n\n return null\n}\n\nexport function isHiddenElement(el?: HTMLElement | null) {\n if (el?.style.display !== 'none') {\n return !!queryOutsideHiddenElement(el)\n }\n\n return true\n}\n","import {\n Comment,\n Fragment,\n createTextVNode,\n isVNode,\n readonly,\n ref,\n renderSlot,\n toRef,\n unref,\n watch,\n} from 'vue'\n\nimport { ensureArray, isClient, noop } from '@vexip-ui/utils'\n\nimport type {\n ComponentPublicInstance,\n MaybeRef,\n Ref,\n Slots,\n VNode,\n VNodeChild,\n VNodeNormalizedChildren,\n} from 'vue'\nimport type { MaybeElement, MaybeInstance } from './types'\n\nexport function createSlotRender(\n slots: Slots,\n names: string[]\n): ((params?: any) => VNodeChild) | null\nexport function createSlotRender(\n slots: Slots,\n names: string[],\n fallback: (params?: any) => VNodeChild\n): (params?: any) => VNodeChild\nexport function createSlotRender(\n slots: Slots,\n names: string[],\n fallback?: (params?: any) => VNodeChild,\n) {\n for (const name of names) {\n if (slots[name]) {\n return (params: any) =>\n renderSlot(slots, name, params, () => {\n const vnodes = fallback?.(params)\n\n return vnodes ? ensureArray(vnodes) : []\n })\n }\n }\n\n return fallback || null\n}\n\nexport function flatVNodes(children: VNodeNormalizedChildren) {\n const result: VNode[] = []\n const loop = Array.isArray(children) ? [...children] : []\n\n while (loop.length) {\n const vnode = loop.shift()!\n\n if (vnode === null) continue\n\n if (Array.isArray(vnode)) {\n loop.unshift(...vnode)\n }\n\n if (\n typeof vnode !== 'string' &&\n typeof vnode !== 'number' &&\n (!isVNode(vnode) || vnode.type === Comment)\n ) {\n continue\n }\n\n if (typeof vnode === 'string' || typeof vnode === 'number') {\n result.push(createTextVNode(String(vnode)))\n } else if (vnode.type === Fragment && Array.isArray(vnode.children)) {\n loop.unshift(vnode.children)\n } else {\n result.push(vnode)\n }\n }\n\n return result\n}\n\nexport function unrefElement<T extends string | MaybeInstance = string | MaybeInstance>(\n ref: MaybeRef<T>,\n): T extends string | ComponentPublicInstance ? MaybeElement : T {\n const plain = unref(ref)\n\n if (typeof plain === 'string') {\n return (isClient ? document.querySelector(plain) : null) as any\n }\n\n return (plain as ComponentPublicInstance)?.$el ?? plain\n}\n\nexport function proxyExposed<T>(vnode: VNode): T {\n return new Proxy({} as any, {\n get(_, key) {\n if (!vnode.component) return undefined\n\n return (\n (vnode.component.proxy as any)?.[key] ??\n (vnode.component.exposeProxy as any)?.[key] ??\n (vnode.component.exposed as any)?.[key]\n )\n },\n }) as T\n}\n\nexport function watchPauseable(...args: Parameters<typeof watch>) {\n const active = ref(true)\n const handle = args[1] || noop\n\n function pause() {\n active.value = false\n }\n\n function resume() {\n active.value = true\n }\n\n const stop = watch(\n args[0],\n (...callbackArgs) =>\n new Promise<void>((resolve, reject) => {\n if (active.value) {\n Promise.resolve(handle(...callbackArgs))\n .then(resolve)\n .catch(reject)\n }\n }),\n args[2],\n )\n\n return { active: readonly(active), pause, resume, stop }\n}\n\nexport function pickToRefs<T extends Record<any, any>, K extends keyof T>(reactive: T, keys: K[]) {\n return keys.map(key => toRef(reactive, key)) as { [P in K]: Ref<T[P]> }\n}\n","import { computed, getCurrentScope, isRef, onScopeDispose, ref, watch } from 'vue'\n\nimport { isClient, noop } from '@vexip-ui/utils'\nimport { unrefElement } from './shared/utils'\n\nimport type { ComputedRef, MaybeRef, Ref } from 'vue'\nimport type { MaybeInstance } from './shared/types'\n\nexport interface UseFullScreenResult {\n target: Ref<MaybeInstance>,\n supported: boolean,\n full: ComputedRef<boolean>,\n enter: (force?: boolean) => Promise<boolean>,\n exit: (force?: boolean) => Promise<boolean>,\n toggle: (force?: boolean) => Promise<boolean>\n}\n\ntype PropertiesMap = [\n 'requestFullscreen',\n 'exitFullscreen',\n 'fullscreenElement',\n 'fullscreenEnabled',\n 'fullscreenchange',\n 'fullscreenerror',\n]\n\nconst functionsMap = [\n [\n 'requestFullscreen',\n 'exitFullscreen',\n 'fullscreenElement',\n 'fullscreenEnabled',\n 'fullscreenchange',\n 'fullscreenerror',\n ],\n // New WebKit\n [\n 'webkitRequestFullscreen',\n 'webkitExitFullscreen',\n 'webkitFullscreenElement',\n 'webkitFullscreenEnabled',\n 'webkitfullscreenchange',\n 'webkitfullscreenerror',\n ],\n // Old WebKit\n [\n 'webkitRequestFullScreen',\n 'webkitCancelFullScreen',\n 'webkitCurrentFullScreenElement',\n 'webkitCancelFullScreen',\n 'webkitfullscreenchange',\n 'webkitfullscreenerror',\n ],\n [\n 'mozRequestFullScreen',\n 'mozCancelFullScreen',\n 'mozFullScreenElement',\n 'mozFullScreenEnabled',\n 'mozfullscreenchange',\n 'mozfullscreenerror',\n ],\n [\n 'msRequestFullscreen',\n 'msExitFullscreen',\n 'msFullscreenElement',\n 'msFullscreenEnabled',\n 'MSFullscreenChange',\n 'MSFullscreenError',\n ],\n] as PropertiesMap[]\n\nlet map!: PropertiesMap\n\nif (isClient) {\n for (const m of functionsMap) {\n if (m[1] in document) {\n map = m\n break\n }\n }\n}\n\nconst supported = !!map\nconst notSupportedResult = {\n supported,\n full: computed(() => false),\n enter: noop,\n exit: noop,\n toggle: noop,\n}\n\nconst states = new Set<Ref<boolean>>()\nconst subscriptions = new WeakMap<Element, Ref<boolean>>()\n\nif (isClient && map) {\n const ELEMENT = map[2]\n const EVENT = map[4]\n\n document.addEventListener(\n EVENT,\n () => {\n states.forEach(state => {\n state.value = false\n })\n\n if (document[ELEMENT]) {\n const full = subscriptions.get(document[ELEMENT])\n\n if (full) {\n full.value = true\n }\n }\n },\n false,\n )\n}\n\nexport function useFullScreen(target: MaybeRef<MaybeInstance> = ref(null)): UseFullScreenResult {\n const targetRef = computed({\n get: () => unrefElement(target),\n set: el => {\n if (isRef(target)) {\n target.value = el\n }\n },\n })\n\n if (!isClient || !supported) {\n return { ...notSupportedResult, target: targetRef }\n }\n\n const [REQUEST, EXIT, ELEMENT] = map\n const full = ref(false)\n\n watch(\n () => unrefElement(target),\n (el, old) => {\n old && subscriptions.delete(old)\n el && subscriptions.set(el, full)\n },\n { immediate: true, flush: 'post' },\n )\n\n states.add(full)\n\n if (getCurrentScope()) {\n onScopeDispose(exit)\n }\n\n async function enter(force = false) {\n await exit()\n\n const el = unrefElement(target)\n\n if (el) {\n if (force || !document[ELEMENT]) {\n await el[REQUEST]()\n full.value = true\n\n return document[ELEMENT] === el\n }\n }\n\n return false\n }\n\n async function exit(force = false) {\n const el = unrefElement(target)\n\n if (force || (document[ELEMENT] && document[ELEMENT] === el)) {\n await document[EXIT]()\n full.value = false\n\n return document[ELEMENT] !== el\n }\n\n return false\n }\n\n async function toggle(force = false) {\n return full.value ? await exit(force) : await enter(force)\n }\n\n return {\n supported,\n target: targetRef,\n full: computed(() => full.value),\n enter,\n exit,\n toggle,\n }\n}\n","import { ref } from 'vue'\n\nimport { useListener } from './listener'\n\nimport type { Ref } from 'vue'\n\nexport function useHover(wrapper: Ref<HTMLElement | null | undefined> = ref(null)) {\n const isHover = ref(false)\n\n useListener(wrapper, 'mouseenter', enterWrapper)\n useListener(wrapper, 'mouseleave', leaveWrapper)\n\n function enterWrapper() {\n isHover.value = true\n }\n\n function leaveWrapper() {\n isHover.value = false\n }\n\n return { wrapper, isHover }\n}\n","import { getCurrentScope, onScopeDispose, ref, unref, watch } from 'vue'\n\nimport { ensureArray, isClient, noop, toNumber } from '@vexip-ui/utils'\n\nimport type { Ref } from 'vue'\n\nexport type IntersectionHandler = (entry: IntersectionObserverEntry) => any\nexport type UseIntersectionOptions = IntersectionObserverInit & {\n /**\n * 元素交叉状态变化时的回调方法\n */\n handler: IntersectionHandler,\n /**\n * 作用的目标元素的 Ref\n */\n target?: Ref<HTMLElement | null | undefined>\n}\n\nconst observerCache = new WeakMap<\n Element | Document,\n Map<\n string,\n Map<\n string,\n { ob: IntersectionObserver, count: number, handlers: WeakMap<Element, IntersectionHandler> }\n >\n >\n>()\n\nconst spaceRE = /\\s+/g\nconst unitRE = /(px|%)$/\n\nexport function useIntersection(options: UseIntersectionOptions) {\n const target = options.target || ref(null)\n\n if (!isClient) {\n return { target, disconnect: noop }\n }\n\n const { handler } = options\n\n let root = options.root ?? document\n\n const threshold = ensureArray(options.threshold || 0).join() || '0'\n const margin = normalizeMargin(options.rootMargin)\n\n if (!observerCache.has(root)) {\n observerCache.set(root, new Map())\n }\n\n const thresholdCache = observerCache.get(root)!\n\n if (!thresholdCache.has(threshold)) {\n thresholdCache.set(threshold, new Map())\n }\n\n const marginCache = thresholdCache.get(threshold)!\n\n if (!marginCache.has(margin)) {\n marginCache.set(margin, {\n ob: new IntersectionObserver(handleIntersect, { ...options, rootMargin: margin }),\n count: 0,\n handlers: new WeakMap<Element, IntersectionHandler>(),\n })\n }\n\n let state = marginCache.get(margin)\n let { ob: observer, handlers } = state!\n\n let remove = noop\n\n const stopWatch = watch(\n () => unref(target),\n el => {\n remove()\n\n if (!el || !observer) {\n return\n }\n\n handlers.set(el, handler)\n observer.observe(el)\n state && state.count++\n\n remove = () => {\n observer.unobserve(el)\n handlers.delete(el)\n state && state.count--\n remove = noop\n }\n },\n { immediate: true, flush: 'post' },\n )\n\n getCurrentScope() && onScopeDispose(disconnect)\n\n function normalizeMargin(margin?: string) {\n if (!margin || !margin.trim()) return '_'\n\n const parts = margin.trim().split(spaceRE, 4)\n parts.length = 4\n\n for (let i = 0; i < 4; ++i) {\n const part = parts[i]\n\n parts[i] = unitRE.test(part) ? part : `${toNumber(part)}px`\n }\n\n return parts.join(' ')\n }\n\n function handleIntersect(entries: IntersectionObserverEntry[]) {\n for (let i = 0, len = entries.length; i < len; ++i) {\n const entry = entries[i]\n const handler = handlers.get(entry.target)\n\n if (typeof handler === 'function') {\n handler(entry)\n }\n }\n }\n\n function disconnect() {\n stopWatch()\n remove()\n\n if (!state) return\n\n if (state.count <= 0) {\n marginCache.delete(margin)\n\n if (!marginCache.size) {\n thresholdCache.delete(threshold)\n\n if (!thresholdCache.size) {\n observerCache.delete(root)\n }\n }\n }\n\n state = undefined\n observer = undefined!\n handlers = undefined!\n root = undefined!\n }\n\n return { target, disconnect }\n}\n","import { customRef } from 'vue'\n\nexport function useManualRef() {\n const updateSet = new Set<() => void>()\n\n function manualRef<T>(value: T) {\n return customRef<T>((track, trigger) => {\n let origin = value\n\n const update = () => {\n if (value !== origin) {\n origin = value\n trigger()\n }\n }\n\n return {\n get: () => (track(), value),\n set: newValue => {\n if (newValue === value) return\n\n value = newValue\n updateSet.add(update)\n },\n }\n })\n }\n\n function triggerUpdate() {\n for (const trigger of updateSet) {\n trigger()\n }\n\n updateSet.clear()\n }\n\n return { updateSet, manualRef, triggerUpdate }\n}\n","import { computed, isRef, reactive, ref, unref } from 'vue'\n\nimport { noop } from '@vexip-ui/utils'\nimport { useListener } from './listener'\n\nimport type { MaybeRef, Ref } from 'vue'\n\nexport type ModifierState = Readonly<\n Omit<Record<string, boolean>, 'activeKeys'> & {\n activeKeys: Set<string>,\n resetAll: () => void\n }\n>\n\nexport interface UseModifierOptions {\n /**\n * 作用的目标元素的 Ref\n */\n target?: Ref<HTMLElement | null | undefined>,\n /**\n * 是否禁用整个 hook 的事件处理\n */\n disabled?: MaybeRef<boolean>,\n /**\n * 配置键名的别名,会与默认别名动态合并\n */\n aliasMap?: Record<string, string>,\n /**\n * 是否在目标元素失去焦点时重置修饰符\n *\n * @default true\n */\n autoReset?: boolean,\n /**\n * 事件的 capture 选项\n *\n * @default false\n */\n capture?: boolean,\n /**\n * 事件的 passive 选项\n *\n * @default true\n */\n passive?: boolean,\n /**\n * 是否严格匹配目标元素\n */\n strictTarget?: boolean,\n /**\n * 键按下的事件回调函数\n */\n onKeyDown?: (event: KeyboardEvent, modifier: ModifierState) => void,\n /**\n * 键抬起的时间回调函数\n */\n onKeyUp?: (event: KeyboardEvent, modifier: ModifierState) => void\n}\n\nconst defaultAliasMap: Record<string, string> = {\n ctrl: 'control',\n command: 'meta',\n cmd: 'meta',\n option: 'alt',\n up: 'arrowup',\n down: 'arrowdown',\n left: 'arrowleft',\n right: 'arrowright',\n}\n\nconst separatorRE = /[+_-]/\nconst splitRE = /[+_-]/g\n\nconst internalProps = ['activeKeys', 'resetAll']\n\nexport function useModifier(options: UseModifierOptions = {}) {\n const {\n autoReset = true,\n capture = false,\n passive = true,\n strictTarget = false,\n onKeyDown = noop,\n onKeyUp = noop,\n } = options\n\n const target = options.target || ref(null)\n const disabled = isRef(options.disabled) ? options.disabled : ref(options.disabled || false)\n const aliasMap = { ...defaultAliasMap, ...(options.aliasMap || {}) }\n const activeKeys = reactive(new Set<string>())\n const metaDeps = new Set<string>()\n const modifier: Record<string, any> = reactive({ activeKeys, resetAll })\n\n function setModifier(key: string, value: boolean) {\n if (key in modifier) {\n modifier[key] = value\n }\n }\n\n function updateModifier(event: KeyboardEvent, value: boolean) {\n const key = event.key?.toLocaleLowerCase()\n const code = event.code?.toLocaleLowerCase()\n const keys = [code, key].filter(Boolean)\n\n for (const key of keys) {\n activeKeys[value ? 'add' : 'delete'](key)\n setModifier(key, value)\n }\n\n if (!value && key === 'meta') {\n for (const key of metaDeps) {\n activeKeys.delete(key)\n setModifier(key, false)\n }\n\n metaDeps.clear()\n } else if (\n value &&\n typeof event.getModifierState === 'function' &&\n event.getModifierState('Meta')\n ) {\n for (const key of [...activeKeys, ...keys]) {\n metaDeps.add(key)\n }\n }\n }\n\n function resetAll() {\n Object.keys(modifier).forEach(key => {\n modifier[key] = false\n })\n\n modifier.activeKeys = activeKeys\n modifier.resetAll = resetAll\n }\n\n const modifierProxy = new Proxy(modifier, {\n get(target, prop, receiver) {\n if (typeof prop !== 'string' || internalProps.includes(prop)) {\n return Reflect.get(target, prop, receiver)\n }\n\n prop = prop.toLocaleLowerCase()\n\n if (prop in aliasMap) {\n prop = aliasMap[prop]\n }\n\n if (!(prop in modifier)) {\n if (separatorRE.test(prop)) {\n const keys = prop.split(splitRE).map(key => key.trim())\n\n modifier[prop] = computed(() => keys.every(key => unref(modifierProxy[key])))\n } else {\n modifier[prop] = ref(activeKeys.has(prop))\n }\n }\n\n return unref(Reflect.get(target, prop, receiver))\n },\n })\n\n useListener(\n target,\n 'keydown',\n (event: KeyboardEvent) => {\n if (strictTarget && event.target !== unref(target)) {\n return\n }\n\n updateModifier(event, true)\n onKeyDown(event, modifierProxy)\n },\n { capture, passive, disabled },\n )\n useListener(\n target,\n 'keyup',\n (event: KeyboardEvent) => {\n if (strictTarget && event.target !== unref(target)) {\n return\n }\n\n updateModifier(event, false)\n onKeyUp(event, modifierProxy)\n },\n { capture, passive, disabled },\n )\n\n if (autoReset) {\n useListener(target, 'blur', resetAll, { capture, passive, disabled })\n }\n\n return { target, modifier: modifierProxy as ModifierState }\n}\n","import { nextTick, onBeforeUnmount, onMounted, readonly, ref } from 'vue'\n\nexport function useMounted(wait?: 'tick' | 'frame') {\n const isMounted = ref(false)\n\n const mount = () => (isMounted.value = true)\n\n onMounted(() => {\n if (wait === 'tick') {\n nextTick(mount)\n } else if (wait === 'frame') {\n requestAnimationFrame(mount)\n } else {\n mount()\n }\n })\n\n onBeforeUnmount(() => {\n isMounted.value = false\n })\n\n return { isMounted: readonly(isMounted) }\n}\n","import { computed, isRef, ref } from 'vue'\n\nimport { throttle } from '@vexip-ui/utils'\nimport { useListener } from './listener'\n\nimport type { MaybeRef, Ref } from 'vue'\n\nexport interface MovingState {\n xStart: number,\n yStart: number,\n xEnd: number,\n yEnd: number,\n clientX: number,\n clientY: number,\n deltaX: number,\n deltaY: number,\n lazy: boolean,\n [custom: string]: unknown\n}\n\nexport interface UseMovingOptions {\n /**\n * 作用的目标元素的 Ref\n */\n target?: Ref<HTMLElement | null | undefined>,\n /**\n * 横向位置的初始值\n */\n x?: MaybeRef<number>,\n /**\n * 纵向位置的初始值\n */\n y?: MaybeRef<number>,\n /**\n * 为否为懒加载,开启后会在 End 事件再更新位置状态\n */\n lazy?: MaybeRef<boolean>,\n /**\n * 是否禁用整个 hook 的事件处理\n */\n disabled?: MaybeRef<boolean>,\n /**\n * 事件的 capture 选项\n *\n * @default true\n */\n capture?: boolean,\n /**\n * 是否阻止 MouseDown 事件冒泡和默认行为\n *\n * @default true\n */\n stopMouse?: boolean,\n /**\n * 是否阻止 TouchStart 事件冒泡和默认行为\n *\n * @default true\n */\n stopTouch?: boolean,\n /**\n * 移动开始时的回调函数,返回 false 可以阻止本次移动\n */\n onStart?: (state: MovingState, event: PointerEvent) => any,\n /**\n * 移动中的回调函数\n */\n onMove?: (state: MovingState, event: PointerEvent) => void,\n /**\n * 移动结束时的回调函数\n */\n onEnd?: (state: MovingState, event: PointerEvent) => void\n}\n\nfunction disableEvent<E extends Event>(event: E) {\n if (event.cancelable) {\n event.stopPropagation()\n event.preventDefault()\n }\n}\n\nexport function useMoving(options: UseMovingOptions) {\n const target = options.target || ref(null)\n const x = isRef(options.x) ? options.x : ref(0)\n const y = isRef(options.y) ? options.y : ref(0)\n const lazy = isRef(options.lazy) ? options.lazy : ref(options.lazy || false)\n const disabled = isRef(options.disabled) ? options.disabled : ref(options.disabled || false)\n\n const { capture = true, stopMouse = true, stopTouch = true } = options\n\n const moving = ref(false)\n const internalState: MovingState = {\n xStart: 0,\n yStart: 0,\n xEnd: 0,\n yEnd: 0,\n clientX: 0,\n clientY: 0,\n deltaX: 0,\n deltaY: 0,\n lazy: false,\n }\n\n let current = 0\n let record = 0\n\n const throttleMove = throttle((event: PointerEvent) => {\n if (record < current) return\n\n updateState(event)\n\n if (!internalState.lazy) {\n x.value = internalState.xEnd\n y.value = internalState.yEnd\n }\n\n options.onMove?.(internalState, event)\n })\n\n function start(event: PointerEvent) {\n if (disabled.value) return\n\n Object.assign(internalState, {\n xStart: x.value,\n yStart: y.value,\n xEnd: x.value,\n yEnd: y.value,\n clientX: event.clientX,\n clientY: event.clientY,\n lazy: lazy.value,\n })\n\n if (options.onStart?.(internalState, event) === false) {\n return\n }\n\n document.addEventListener('pointermove', move, { capture })\n document.addEventListener('pointerup', end, { capture })\n\n record = current\n moving.value = true\n }\n\n function move(event: PointerEvent) {\n if (disabled.value) return\n\n disableEvent(event)\n throttleMove(event)\n }\n\n function end(event: PointerEvent) {\n document.removeEventListener('pointermove', move, { capture })\n document.removeEventListener('pointerup', end, { capture })\n\n if (disabled.value) return\n\n updateState(event)\n\n if (internalState.lazy) {\n x.value = internalState.xEnd\n y.value = internalState.yEnd\n }\n\n moving.value = false\n ++current\n\n options.onEnd?.(internalState, event)\n }\n\n function updateState(event: PointerEvent) {\n const { clientX, clientY } = event\n const { xStart, yStart, clientX: clientXStart, clientY: clientYStart } = internalState\n const deltaX = clientX - clientXStart\n const deltaY = clientY - clientYStart\n\n internalState.deltaX = deltaX\n internalState.deltaY = deltaY\n internalState.xEnd = xStart + deltaX\n internalState.yEnd = yStart + deltaY\n }\n\n useListener(target, 'pointerdown', start, { capture })\n\n stopMouse && useListener(target, 'mousedown', disableEvent, { capture })\n stopTouch && useListener(target, 'touchstart', disableEvent, { capture })\n\n return {\n target,\n moving: computed(() => moving.value),\n x,\n y,\n lazy,\n disabled,\n }\n}\n","import { onBeforeUnmount, ref } from 'vue'\n\nimport { throttle } from '@vexip-ui/utils'\n\nimport type { Ref } from 'vue'\n\nexport interface UsePointerOption {\n /**\n * 横向位置的初始值\n */\n x?: number,\n /**\n * 纵向位置的初始值\n */\n y?: number,\n /**\n * 是否手动停止,默认情况下会在组件的 BeforeUnmount 生命周期注销\n *\n * @default false\n */\n manualStop?: boolean\n}\n\ninterface PointerState {\n x: Ref<number>,\n y: Ref<number>\n}\n\nconst registered = new Set<PointerState>()\nconst record = new Map<'x' | 'y', number>()\n\nrecord.set('x', 0)\nrecord.set('y', 0)\n\nfunction handler(event: PointerEvent) {\n const { pageX, pageY } = event\n\n record.set('x', pageX)\n record.set('y', pageY)\n\n registered.forEach(state => {\n state.x.value = pageX\n state.y.value = pageY\n })\n}\n\nconst throttleHandler = throttle(handler)\n\nfunction register(state: PointerState) {\n if (!registered.size && window) {\n record.set('x', 0)\n record.set('y', 0)\n window.addEventListener('pointermove', throttleHandler, { passive: true })\n }\n\n registered.add(state)\n}\n\nfunction unregister(state: PointerState) {\n registered.delete(state)\n\n if (!registered.size && window) {\n window.removeEventListener('pointermove', throttleHandler)\n }\n}\n\nexport function usePointer(options: UsePointerOption = {}) {\n const x = ref(options.x ?? record.get('x')!)\n const y = ref(options.y ?? record.get('y')!)\n\n const state = { x, y }\n\n register(state)\n\n if (!options.manualStop) {\n onBeforeUnmount(() => {\n unregister(state)\n })\n }\n\n return { ...state, unregister: () => unregister(state) }\n}\n","/**\n * Custom positioning reference element.\n * @see https://floating-ui.com/docs/virtual-elements\n */\n\nconst sides = ['top', 'right', 'bottom', 'left'];\nconst alignments = ['start', 'end'];\nconst placements = /*#__PURE__*/sides.reduce((acc, side) => acc.concat(side, side + \"-\" + alignments[0], side + \"-\" + alignments[1]), []);\nconst min = Math.min;\nconst max = Math.max;\nconst round = Math.round;\nconst floor = Math.floor;\nconst createCoords = v => ({\n x: v,\n y: v\n});\nconst oppositeSideMap = {\n left: 'right',\n right: 'left',\n bottom: 'top',\n top: 'bottom'\n};\nconst oppositeAlignmentMap = {\n start: 'end',\n end: 'start'\n};\nfunction clamp(start, value, end) {\n return max(start, min(value, end));\n}\nfunction evaluate(value, param) {\n return typeof value === 'function' ? value(param) : value;\n}\nfunction getSide(placement) {\n return placement.split('-')[0];\n}\nfunction getAlignment(placement) {\n return placement.split('-')[1];\n}\nfunction getOppositeAxis(axis) {\n return axis === 'x' ? 'y' : 'x';\n}\nfunction getAxisLength(axis) {\n return axis === 'y' ? 'height' : 'width';\n}\nfunction getSideAxis(placement) {\n return ['top', 'bottom'].includes(getSide(placement)) ? 'y' : 'x';\n}\nfunction getAlignmentAxis(placement) {\n return getOppositeAxis(getSideAxis(placement));\n}\nfunction getAlignmentSides(placement, rects, rtl) {\n if (rtl === void 0) {\n rtl = false;\n }\n const alignment = getAlignment(placement);\n const alignmentAxis = getAlignmentAxis(placement);\n const length = getAxisLength(alignmentAxis);\n let mainAlignmentSide = alignmentAxis === 'x' ? alignment === (rtl ? 'end' : 'start') ? 'right' : 'left' : alignment === 'start' ? 'bottom' : 'top';\n if (rects.reference[length] > rects.floating[length]) {\n mainAlignmentSide = getOppositePlacement(mainAlignmentSide);\n }\n return [mainAlignmentSide, getOppositePlacement(mainAlignmentSide)];\n}\nfunction getExpandedPlacements(placement) {\n const oppositePlacement = getOppositePlacement(placement);\n return [getOppositeAlignmentPlacement(placement), oppositePlacement, getOppositeAlignmentPlacement(oppositePlacement)];\n}\nfunction getOppositeAlignmentPlacement(placement) {\n return placement.replace(/start|end/g, alignment => oppositeAlignmentMap[alignment]);\n}\nfunction getSideList(side, isStart, rtl) {\n const lr = ['left', 'right'];\n const rl = ['right', 'left'];\n const tb = ['top', 'bottom'];\n const bt = ['bottom', 'top'];\n switch (side) {\n case 'top':\n case 'bottom':\n if (rtl) return isStart ? rl : lr;\n return isStart ? lr : rl;\n case 'left':\n case 'right':\n return isStart ? tb : bt;\n default:\n return [];\n }\n}\nfunction getOppositeAxisPlacements(placement, flipAlignment, direction, rtl) {\n const alignment = getAlignment(placement);\n let list = getSideList(getSide(placement), direction === 'start', rtl);\n if (alignment) {\n list = list.map(side => side + \"-\" + alignment);\n if (flipAlignment) {\n list = list.concat(list.map(getOppositeAlignmentPlacement));\n }\n }\n return list;\n}\nfunction getOppositePlacement(placement) {\n return placement.replace(/left|right|bottom|top/g, side => oppositeSideMap[side]);\n}\nfunction expandPaddingObject(padding) {\n return {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0,\n ...padding\n };\n}\nfunction getPaddingObject(padding) {\n return typeof padding !== 'number' ? expandPaddingObject(padding) : {\n top: padding,\n right: padding,\n bottom: padding,\n left: padding\n };\n}\nfunction rectToClientRect(rect) {\n const {\n x,\n y,\n width,\n height\n } = rect;\n return {\n width,\n height,\n top: y,\n left: x,\n right: x + width,\n bottom: y + height,\n x,\n y\n };\n}\n\nexport { alignments, clamp, createCoords, evaluate, expandPaddingObject, floor, getAlignment, getAlignmentAxis, getAlignmentSides, getAxisLength, getExpandedPlacements, getOppositeAlignmentPlacement, getOppositeAxis, getOppositeAxisPlacements, getOppositePlacement, getPaddingObject, getSide, getSideAxis, max, min, placements, rectToClientRect, round, sides };\n","import { getSideAxis, getAlignmentAxis, getAxisLength, getSide, getAlignment, evaluate, getPaddingObject, rectToClientRect, min, clamp, placements, getAlignmentSides, getOppositeAlignmentPlacement, getOppositePlacement, getExpandedPlacements, getOppositeAxisPlacements, sides, max, getOppositeAxis } from '@floating-ui/utils';\nexport { rectToClientRect } from '@floating-ui/utils';\n\nfunction computeCoordsFromPlacement(_ref, placement, rtl) {\n let {\n reference,\n floating\n } = _ref;\n const sideAxis = getSideAxis(placement);\n const alignmentAxis = getAlignmentAxis(placement);\n const alignLength = getAxisLength(alignmentAxis);\n const side = getSide(placement);\n const isVertical = sideAxis === 'y';\n const commonX = reference.x + reference.width / 2 - floating.width / 2;\n const commonY = reference.y + reference.height / 2 - floating.height / 2;\n const commonAlign = reference[alignLength] / 2 - floating[alignLength] / 2;\n let coords;\n switch (side) {\n case 'top':\n coords = {\n x: commonX,\n y: reference.y - floating.height\n };\n break;\n case 'bottom':\n coords = {\n x: commonX,\n y: reference.y + reference.height\n };\n break;\n case 'right':\n coords = {\n x: reference.x + reference.width,\n y: commonY\n };\n break;\n case 'left':\n coords = {\n x: reference.x - floating.width,\n y: commonY\n };\n break;\n default:\n coords = {\n x: reference.x,\n y: reference.y\n };\n }\n switch (getAlignment(placement)) {\n case 'start':\n coords[alignmentAxis] -= commonAlign * (rtl && isVertical ? -1 : 1);\n break;\n case 'end':\n coords[alignmentAxis] += commonAlign * (rtl && isVertical ? -1 : 1);\n break;\n }\n return coords;\n}\n\n/**\n * Computes the `x` and `y` coordinates that will place the floating element\n * next to a given reference element.\n *\n * This export does not have any `platform` interface logic. You will need to\n * write one for the platform you are using Floating UI with.\n */\nconst computePosition = async (reference, floating, config) => {\n const {\n placement = 'bottom',\n strategy = 'absolute',\n middleware = [],\n platform\n } = config;\n const validMiddleware = middleware.filter(Boolean);\n const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(floating));\n let rects = await platform.getElementRects({\n reference,\n floating,\n strategy\n });\n let {\n x,\n y\n } = computeCoordsFromPlacement(rects, placement, rtl);\n let statefulPlacement = placement;\n let middlewareData = {};\n let resetCount = 0;\n for (let i = 0; i < validMiddleware.length; i++) {\n const {\n name,\n fn\n } = validMiddleware[i];\n const {\n x: nextX,\n y: nextY,\n data,\n reset\n } = await fn({\n x,\n y,\n initialPlacement: placement,\n placement: statefulPlacement,\n strategy,\n middlewareData,\n rects,\n platform,\n elements: {\n reference,\n floating\n }\n });\n x = nextX != null ? nextX : x;\n y = nextY != null ? nextY : y;\n middlewareData = {\n ...middlewareData,\n [name]: {\n ...middlewareData[name],\n ...data\n }\n };\n if (reset && resetCount <= 50) {\n resetCount++;\n if (typeof reset === 'object') {\n if (reset.placement) {\n statefulPlacement = reset.placement;\n }\n if (reset.rects) {\n rects = reset.rects === true ? await platform.getElementRects({\n reference,\n floating,\n strategy\n }) : reset.rects;\n }\n ({\n x,\n y\n } = computeCoordsFromPlacement(rects, statefulPlacement, rtl));\n }\n i = -1;\n }\n }\n return {\n x,\n y,\n placement: statefulPlacement,\n strategy,\n middlewareData\n };\n};\n\n/**\n * Resolves with an object of overflow side offsets that determine how much the\n * element is overflowing a given clipping boundary on each side.\n * - positive = overflowing the boundary by that number of pixels\n * - negative = how many pixels left before it will overflow\n * - 0 = lies flush with the boundary\n * @see https://floating-ui.com/docs/detectOverflow\n */\nasync function detectOverflow(state, options) {\n var _await$platform$isEle;\n if (options === void 0) {\n options = {};\n }\n const {\n x,\n y,\n platform,\n rects,\n elements,\n strategy\n } = state;\n const {\n boundary = 'clippingAncestors',\n rootBoundary = 'viewport',\n elementContext = 'floating',\n altBoundary = false,\n padding = 0\n } = evaluate(options, state);\n const paddingObject = getPaddingObject(padding);\n const altContext = elementContext === 'floating' ? 'reference' : 'floating';\n const element = elements[altBoundary ? altContext : elementContext];\n const clippingClientRect = rectToClientRect(await platform.getClippingRect({\n element: ((_await$platform$isEle = await (platform.isElement == null ? void 0 : platform.isElement(element))) != null ? _await$platform$isEle : true) ? element : element.contextElement || (await (platform.getDocumentElement == null ? void 0 : platform.getDocumentElement(elements.floating))),\n boundary,\n rootBoundary,\n strategy\n }));\n const rect = elementContext === 'floating' ? {\n x,\n y,\n width: rects.floating.width,\n height: rects.floating.height\n } : rects.reference;\n const offsetParent = await (platform.getOffsetParent == null ? void 0 : platform.getOffsetParent(elements.floating));\n const offsetScale = (await (platform.isElement == null ? void 0 : platform.isElement(offsetParent))) ? (await (platform.getScale == null ? void 0 : platform.getScale(offsetParent))) || {\n x: 1,\n y: 1\n } : {\n x: 1,\n y: 1\n };\n const elementClientRect = rectToClientRect(platform.convertOffsetParentRelativeRectToViewportRelativeRect ? await platform.convertOffsetParentRelativeRectToViewportRelativeRect({\n elements,\n rect,\n offsetParent,\n strategy\n }) : rect);\n return {\n top: (clippingClientRect.top - elementClientRect.top + paddingObject.top) / offsetScale.y,\n bottom: (elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom) / offsetScale.y,\n left: (clippingClientRect.left - elementClientRect.left + paddingObject.left) / offsetScale.x,\n right: (elementClientRect.right - clippingClientRect.right + paddingObject.right) / offsetScale.x\n };\n}\n\n/**\n * Provides data to position an inner element of the floating element so that it\n * appears centered to the reference element.\n * @see https://floating-ui.com/docs/arrow\n */\nconst arrow = options => ({\n name: 'arrow',\n options,\n async fn(state) {\n const {\n x,\n y,\n placement,\n rects,\n platform,\n elements,\n middlewareData\n } = state;\n // Since `element` is required, we don't Partial<> the type.\n const {\n element,\n padding = 0\n } = evaluate(options, state) || {};\n if (element == null) {\n return {};\n }\n const paddingObject = getPaddingObject(padding);\n const coords = {\n x,\n y\n };\n const axis = getAlignmentAxis(placement);\n const length = getAxisLength(axis);\n const arrowDimensions = await platform.getDimensions(element);\n const isYAxis = axis === 'y';\n const minProp = isYAxis ? 'top' : 'left';\n const maxProp = isYAxis ? 'bottom' : 'right';\n const clientProp = isYAxis ? 'clientHeight' : 'clientWidth';\n const endDiff = rects.reference[length] + rects.reference[axis] - coords[axis] - rects.floating[length];\n const startDiff = coords[axis] - rects.reference[axis];\n const arrowOffsetParent = await (platform.getOffsetParent == null ? void 0 : platform.getOffsetParent(element));\n let clientSize = arrowOffsetParent ? arrowOffsetParent[clientProp] : 0;\n\n // DOM platform can return `window` as the `offsetParent`.\n if (!clientSize || !(await (platform.isElement == null ? void 0 : platform.isElement(arrowOffsetParent)))) {\n clientSize = elements.floating[clientProp] || rects.floating[length];\n }\n const centerToReference = endDiff / 2 - startDiff / 2;\n\n // If the padding is large enough that it causes the arrow to no longer be\n // centered, modify the padding so that it is centered.\n const largestPossiblePadding = clientSize / 2 - arrowDimensions[length] / 2 - 1;\n const minPadding = min(paddingObject[minProp], largestPossiblePadding);\n const maxPadding = min(paddingObject[maxProp], largestPossiblePadding);\n\n // Make sure the arrow doesn't overflow the floating element if the center\n // point is outside the floating element's bounds.\n const min$1 = minPadding;\n const max = clientSize - arrowDimensions[length] - maxPadding;\n const center = clientSize / 2 - arrowDimensions[length] / 2 + centerToReference;\n const offset = clamp(min$1, center, max);\n\n // If the reference is small enough that the arrow's padding causes it to\n // to point to nothing for an aligned placement, adjust the offset of the\n // floating element itself. To ensure `shift()` continues to take action,\n // a single reset is performed when this is true.\n const shouldAddOffset = !middlewareData.arrow && getAlignment(placement) != null && center !== offset && rects.reference[length] / 2 - (center < min$1 ? minPadding : maxPadding) - arrowDimensions[length] / 2 < 0;\n const alignmentOffset = shouldAddOffset ? center < min$1 ? center - min$1 : center - max : 0;\n return {\n [axis]: coords[axis] + alignmentOffset,\n data: {\n [axis]: offset,\n centerOffset: center - offset - alignmentOffset,\n ...(shouldAddOffset && {\n alignmentOffset\n })\n },\n reset: shouldAddOffset\n };\n }\n});\n\nfunction getPlacementList(alignment, autoAlignment, allowedPlacements) {\n const allowedPlacementsSortedByAlignment = alignment ? [...allowedPlacements.filter(placement => getAlignment(placement) === alignment), ...allowedPlacements.filter(placement => getAlignment(placement) !== alignment)] : allowedPlacements.filter(placement => getSide(placement) === placement);\n return allowedPlacementsSortedByAlignment.filter(placement => {\n if (alignment) {\n return getAlignment(placement) === alignment || (autoAlignment ? getOppositeAlignmentPlacement(placement) !== placement : false);\n }\n return true;\n });\n}\n/**\n * Optimizes the visibility of the floating element by choosing the placement\n * that has the most space available automatically, without needing to specify a\n * preferred placement. Alternative to `flip`.\n * @see https://floating-ui.com/docs/autoPlacement\n */\nconst autoPlacement = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'autoPlacement',\n options,\n async fn(state) {\n var _middlewareData$autoP, _middlewareData$autoP2, _placementsThatFitOnE;\n const {\n rects,\n middlewareData,\n placement,\n platform,\n elements\n } = state;\n const {\n crossAxis = false,\n alignment,\n allowedPlacements = placements,\n autoAlignment = true,\n ...detectOverflowOptions\n } = evaluate(options, state);\n const placements$1 = alignment !== undefined || allowedPlacements === placements ? getPlacementList(alignment || null, autoAlignment, allowedPlacements) : allowedPlacements;\n const overflow = await detectOverflow(state, detectOverflowOptions);\n const currentIndex = ((_middlewareData$autoP = middlewareData.autoPlacement) == null ? void 0 : _middlewareData$autoP.index) || 0;\n const currentPlacement = placements$1[currentIndex];\n if (currentPlacement == null) {\n return {};\n }\n const alignmentSides = getAlignmentSides(currentPlacement, rects, await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating)));\n\n // Make `computeCoords` start from the right place.\n if (placement !== currentPlacement) {\n return {\n reset: {\n placement: placements$1[0]\n }\n };\n }\n const currentOverflows = [overflow[getSide(currentPlacement)], overflow[alignmentSides[0]], overflow[alignmentSides[1]]];\n const allOverflows = [...(((_middlewareData$autoP2 = middlewareData.autoPlacement) == null ? void 0 : _middlewareData$autoP2.overflows) || []), {\n placement: currentPlacement,\n overflows: currentOverflows\n }];\n const nextPlacement = placements$1[currentIndex + 1];\n\n // There are more placements to check.\n if (nextPlacement) {\n return {\n data: {\n index: currentIndex + 1,\n overflows: allOverflows\n },\n reset: {\n placement: nextPlacement\n }\n };\n }\n const placementsSortedByMostSpace = allOverflows.map(d => {\n const alignment = getAlignment(d.placement);\n return [d.placement, alignment && crossAxis ?\n // Check along the mainAxis and main crossAxis side.\n d.overflows.slice(0, 2).reduce((acc, v) => acc + v, 0) :\n // Check only the mainAxis.\n d.overflows[0], d.overflows];\n }).sort((a, b) => a[1] - b[1]);\n const placementsThatFitOnEachSide = placementsSortedByMostSpace.filter(d => d[2].slice(0,\n // Aligned placements should not check their opposite crossAxis\n // side.\n getAlignment(d[0]) ? 2 : 3).every(v => v <= 0));\n const resetPlacement = ((_placementsThatFitOnE = placementsThatFitOnEachSide[0]) == null ? void 0 : _placementsThatFitOnE[0]) || placementsSortedByMostSpace[0][0];\n if (resetPlacement !== placement) {\n return {\n data: {\n index: currentIndex + 1,\n overflows: allOverflows\n },\n reset: {\n placement: resetPlacement\n }\n };\n }\n return {};\n }\n };\n};\n\n/**\n * Optimizes the visibility of the floating element by flipping the `placement`\n * in order to keep it in view when the preferred placement(s) will overflow the\n * clipping boundary. Alternative to `autoPlacement`.\n * @see https://floating-ui.com/docs/flip\n */\nconst flip = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'flip',\n options,\n async fn(state) {\n var _middlewareData$arrow, _middlewareData$flip;\n const {\n placement,\n middlewareData,\n rects,\n initialPlacement,\n platform,\n elements\n } = state;\n const {\n mainAxis: checkMainAxis = true,\n crossAxis: checkCrossAxis = true,\n fallbackPlacements: specifiedFallbackPlacements,\n fallbackStrategy = 'bestFit',\n fallbackAxisSideDirection = 'none',\n flipAlignment = true,\n ...detectOverflowOptions\n } = evaluate(options, state);\n\n // If a reset by the arrow was caused due to an alignment offset being\n // added, we should skip any logic now since `flip()` has already done its\n // work.\n // https://github.com/floating-ui/floating-ui/issues/2549#issuecomment-1719601643\n if ((_middlewareData$arrow = middlewareData.arrow) != null && _middlewareData$arrow.alignmentOffset) {\n return {};\n }\n const side = getSide(placement);\n const initialSideAxis = getSideAxis(initialPlacement);\n const isBasePlacement = getSide(initialPlacement) === initialPlacement;\n const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating));\n const fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipAlignment ? [getOppositePlacement(initialPlacement)] : getExpandedPlacements(initialPlacement));\n const hasFallbackAxisSideDirection = fallbackAxisSideDirection !== 'none';\n if (!specifiedFallbackPlacements && hasFallbackAxisSideDirection) {\n fallbackPlacements.push(...getOppositeAxisPlacements(initialPlacement, flipAlignment, fallbackAxisSideDirection, rtl));\n }\n const placements = [initialPlacement, ...fallbackPlacements];\n const overflow = await detectOverflow(state, detectOverflowOptions);\n const overflows = [];\n let overflowsData = ((_middlewareData$flip = middlewareData.flip) == null ? void 0 : _middlewareData$flip.overflows) || [];\n if (checkMainAxis) {\n overflows.push(overflow[side]);\n }\n if (checkCrossAxis) {\n const sides = getAlignmentSides(placement, rects, rtl);\n overflows.push(overflow[sides[0]], overflow[sides[1]]);\n }\n overflowsData = [...overflowsData, {\n placement,\n overflows\n }];\n\n // One or more sides is overflowing.\n if (!overflows.every(side => side <= 0)) {\n var _middlewareData$flip2, _overflowsData$filter;\n const nextIndex = (((_middlewareData$flip2 = middlewareData.flip) == null ? void 0 : _middlewareData$flip2.index) || 0) + 1;\n const nextPlacement = placements[nextIndex];\n if (nextPlacement) {\n var _overflowsData$;\n const ignoreCrossAxisOverflow = checkCrossAxis === 'alignment' ? initialSideAxis !== getSideAxis(nextPlacement) : false;\n const hasInitialMainAxisOverflow = ((_overflowsData$ = overflowsData[0]) == null ? void 0 : _overflowsData$.overflows[0]) > 0;\n if (!ignoreCrossAxisOverflow || hasInitialMainAxisOverflow) {\n // Try next placement and re-run the lifecycle.\n return {\n data: {\n index: nextIndex,\n overflows: overflowsData\n },\n reset: {\n placement: nextPlacement\n }\n };\n }\n }\n\n // First, find the candidates that fit on the mainAxis side of overflow,\n // then find the placement that fits the best on the main crossAxis side.\n let resetPlacement = (_overflowsData$filter = overflowsData.filter(d => d.overflows[0] <= 0).sort((a, b) => a.overflows[1] - b.overflows[1])[0]) == null ? void 0 : _overflowsData$filter.placement;\n\n // Otherwise fallback.\n if (!resetPlacement) {\n switch (fallbackStrategy) {\n case 'bestFit':\n {\n var _overflowsData$filter2;\n const placement = (_overflowsData$filter2 = overflowsData.filter(d => {\n if (hasFallbackAxisSideDirection) {\n const currentSideAxis = getSideAxis(d.placement);\n return currentSideAxis === initialSideAxis ||\n // Create a bias to the `y` side axis due to horizontal\n // reading directions favoring greater width.\n currentSideAxis === 'y';\n }\n return true;\n }).map(d => [d.placement, d.overflows.filter(overflow => overflow > 0).reduce((acc, overflow) => acc + overflow, 0)]).sort((a, b) => a[1] - b[1])[0]) == null ? void 0 : _overflowsData$filter2[0];\n if (placement) {\n resetPlacement = placement;\n }\n break;\n }\n case 'initialPlacement':\n resetPlacement = initialPlacement;\n break;\n }\n }\n if (placement !== resetPlacement) {\n return {\n reset: {\n placement: resetPlacement\n }\n };\n }\n }\n return {};\n }\n };\n};\n\nfunction getSideOffsets(overflow, rect) {\n return {\n top: overflow.top - rect.height,\n right: overflow.right - rect.width,\n bottom: overflow.bottom - rect.height,\n left: overflow.left - rect.width\n };\n}\nfunction isAnySideFullyClipped(overflow) {\n return sides.some(side => overflow[side] >= 0);\n}\n/**\n * Provides data to hide the floating element in applicable situations, such as\n * when it is not in the same clipping context as the reference element.\n * @see https://floating-ui.com/docs/hide\n */\nconst hide = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'hide',\n options,\n async fn(state) {\n const {\n rects\n } = state;\n const {\n strategy = 'referenceHidden',\n ...detectOverflowOptions\n } = evaluate(options, state);\n switch (strategy) {\n case 'referenceHidden':\n {\n const overflow = await detectOverflow(state, {\n ...detectOverflowOptions,\n elementContext: 'reference'\n });\n const offsets = getSideOffsets(overflow, rects.reference);\n return {\n data: {\n referenceHiddenOffsets: offsets,\n referenceHidden: isAnySideFullyClipped(offsets)\n }\n };\n }\n case 'escaped':\n {\n const overflow = await detectOverflow(state, {\n ...detectOverflowOptions,\n altBoundary: true\n });\n const offsets = getSideOffsets(overflow, rects.floating);\n return {\n data: {\n escapedOffsets: offsets,\n escaped: isAnySideFullyClipped(offsets)\n }\n };\n }\n default:\n {\n return {};\n }\n }\n }\n };\n};\n\nfunction getBoundingRect(rects) {\n const minX = min(...rects.map(rect => rect.left));\n const minY = min(...rects.map(rect => rect.top));\n const maxX = max(...rects.map(rect => rect.right));\n const maxY = max(...rects.map(rect => rect.bottom));\n return {\n x: minX,\n y: minY,\n width: maxX - minX,\n height: maxY - minY\n };\n}\nfunction getRectsByLine(rects) {\n const sortedRects = rects.slice().sort((a, b) => a.y - b.y);\n const groups = [];\n let prevRect = null;\n for (let i = 0; i < sortedRects.length; i++) {\n const rect = sortedRects[i];\n if (!prevRect || rect.y - prevRect.y > prevRect.height / 2) {\n groups.push([rect]);\n } else {\n groups[groups.length - 1].push(rect);\n }\n prevRect = rect;\n }\n return groups.map(rect => rectToClientRect(getBoundingRect(rect)));\n}\n/**\n * Provides improved positioning for inline reference elements that can span\n * over multiple lines, such as hyperlinks or range selections.\n * @see https://floating-ui.com/docs/inline\n */\nconst inline = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'inline',\n options,\n async fn(state) {\n const {\n placement,\n elements,\n rects,\n platform,\n strategy\n } = state;\n // A MouseEvent's client{X,Y} coords can be up to 2 pixels off a\n // ClientRect's bounds, despite the event listener being triggered. A\n // padding of 2 seems to handle this issue.\n const {\n padding = 2,\n x,\n y\n } = evaluate(options, state);\n const nativeClientRects = Array.from((await (platform.getClientRects == null ? void 0 : platform.getClientRects(elements.reference))) || []);\n const clientRects = getRectsByLine(nativeClientRects);\n const fallback = rectToClientRect(getBoundingRect(nativeClientRects));\n const paddingObject = getPaddingObject(padding);\n function getBoundingClientRect() {\n // There are two rects and they are disjoined.\n if (clientRects.length === 2 && clientRects[0].left > clientRects[1].right && x != null && y != null) {\n // Find the first rect in which the point is fully inside.\n return clientRects.find(rect => x > rect.left - paddingObject.left && x < rect.right + paddingObject.right && y > rect.top - paddingObject.top && y < rect.bottom + paddingObject.bottom) || fallback;\n }\n\n // There are 2 or more connected rects.\n if (clientRects.length >= 2) {\n if (getSideAxis(placement) === 'y') {\n const firstRect = clientRects[0];\n const lastRect = clientRects[clientRects.length - 1];\n const isTop = getSide(placement) === 'top';\n const top = firstRect.top;\n const bottom = lastRect.bottom;\n const left = isTop ? firstRect.left : lastRect.left;\n const right = isTop ? firstRect.right : lastRect.right;\n const width = right - left;\n const height = bottom - top;\n return {\n top,\n bottom,\n left,\n right,\n width,\n height,\n x: left,\n y: top\n };\n }\n const isLeftSide = getSide(placement) === 'left';\n const maxRight = max(...clientRects.map(rect => rect.right));\n const minLeft = min(...clientRects.map(rect => rect.left));\n const measureRects = clientRects.filter(rect => isLeftSide ? rect.left === minLeft : rect.right === maxRight);\n const top = measureRects[0].top;\n const bottom = measureRects[measureRects.length - 1].bottom;\n const left = minLeft;\n const right = maxRight;\n const width = right - left;\n const height = bottom - top;\n return {\n top,\n bottom,\n left,\n right,\n width,\n height,\n x: left,\n y: top\n };\n }\n return fallback;\n }\n const resetRects = await platform.getElementRects({\n reference: {\n getBoundingClientRect\n },\n floating: elements.floating,\n strategy\n });\n if (rects.reference.x !== resetRects.reference.x || rects.reference.y !== resetRects.reference.y || rects.reference.width !== resetRects.reference.width || rects.reference.height !== resetRects.reference.height) {\n return {\n reset: {\n rects: resetRects\n }\n };\n }\n return {};\n }\n };\n};\n\n// For type backwards-compatibility, the `OffsetOptions` type was also\n// Derivable.\n\nasync function convertValueToCoords(state, options) {\n const {\n placement,\n platform,\n elements\n } = state;\n const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating));\n const side = getSide(placement);\n const alignment = getAlignment(placement);\n const isVertical = getSideAxis(placement) === 'y';\n const mainAxisMulti = ['left', 'top'].includes(side) ? -1 : 1;\n const crossAxisMulti = rtl && isVertical ? -1 : 1;\n const rawValue = evaluate(options, state);\n\n // eslint-disable-next-line prefer-const\n let {\n mainAxis,\n crossAxis,\n alignmentAxis\n } = typeof rawValue === 'number' ? {\n mainAxis: rawValue,\n crossAxis: 0,\n alignmentAxis: null\n } : {\n mainAxis: rawValue.mainAxis || 0,\n crossAxis: rawValue.crossAxis || 0,\n alignmentAxis: rawValue.alignmentAxis\n };\n if (alignment && typeof alignmentAxis === 'number') {\n crossAxis = alignment === 'end' ? alignmentAxis * -1 : alignmentAxis;\n }\n return isVertical ? {\n x: crossAxis * crossAxisMulti,\n y: mainAxis * mainAxisMulti\n } : {\n x: mainAxis * mainAxisMulti,\n y: crossAxis * crossAxisMulti\n };\n}\n\n/**\n * Modifies the placement by translating the floating element along the\n * specified axes.\n * A number (shorthand for `mainAxis` or distance), or an axes configuration\n * object may be passed.\n * @see https://floating-ui.com/docs/offset\n */\nconst offset = function (options) {\n if (options === void 0) {\n options = 0;\n }\n return {\n name: 'offset',\n options,\n async fn(state) {\n var _middlewareData$offse, _middlewareData$arrow;\n const {\n x,\n y,\n placement,\n middlewareData\n } = state;\n const diffCoords = await convertValueToCoords(state, options);\n\n // If the placement is the same and the arrow caused an alignment offset\n // then we don't need to change the positioning coordinates.\n if (placement === ((_middlewareData$offse = middlewareData.offset) == null ? void 0 : _middlewareData$offse.placement) && (_middlewareData$arrow = middlewareData.arrow) != null && _middlewareData$arrow.alignmentOffset) {\n return {};\n }\n return {\n x: x + diffCoords.x,\n y: y + diffCoords.y,\n data: {\n ...diffCoords,\n placement\n }\n };\n }\n };\n};\n\n/**\n * Optimizes the visibility of the floating element by shifting it in order to\n * keep it in view when it will overflow the clipping boundary.\n * @see https://floating-ui.com/docs/shift\n */\nconst shift = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'shift',\n options,\n async fn(state) {\n const {\n x,\n y,\n placement\n } = state;\n const {\n mainAxis: checkMainAxis = true,\n crossAxis: checkCrossAxis = false,\n limiter = {\n fn: _ref => {\n let {\n x,\n y\n } = _ref;\n return {\n x,\n y\n };\n }\n },\n ...detectOverflowOptions\n } = evaluate(options, state);\n const coords = {\n x,\n y\n };\n const overflow = await detectOverflow(state, detectOverflowOptions);\n const crossAxis = getSideAxis(getSide(placement));\n const mainAxis = getOppositeAxis(crossAxis);\n let mainAxisCoord = coords[mainAxis];\n let crossAxisCoord = coords[crossAxis];\n if (checkMainAxis) {\n const minSide = mainAxis === 'y' ? 'top' : 'left';\n const maxSide = mainAxis === 'y' ? 'bottom' : 'right';\n const min = mainAxisCoord + overflow[minSide];\n const max = mainAxisCoord - overflow[maxSide];\n mainAxisCoord = clamp(min, mainAxisCoord, max);\n }\n if (checkCrossAxis) {\n const minSide = crossAxis === 'y' ? 'top' : 'left';\n const maxSide = crossAxis === 'y' ? 'bottom' : 'right';\n const min = crossAxisCoord + overflow[minSide];\n const max = crossAxisCoord - overflow[maxSide];\n crossAxisCoord = clamp(min, crossAxisCoord, max);\n }\n const limitedCoords = limiter.fn({\n ...state,\n [mainAxis]: mainAxisCoord,\n [crossAxis]: crossAxisCoord\n });\n return {\n ...limitedCoords,\n data: {\n x: limitedCoords.x - x,\n y: limitedCoords.y - y,\n enabled: {\n [mainAxis]: checkMainAxis,\n [crossAxis]: checkCrossAxis\n }\n }\n };\n }\n };\n};\n/**\n * Built-in `limiter` that will stop `shift()` at a certain point.\n */\nconst limitShift = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n options,\n fn(state) {\n const {\n x,\n y,\n placement,\n rects,\n middlewareData\n } = state;\n const {\n offset = 0,\n mainAxis: checkMainAxis = true,\n crossAxis: checkCrossAxis = true\n } = evaluate(options, state);\n const coords = {\n x,\n y\n };\n const crossAxis = getSideAxis(placement);\n const mainAxis = getOppositeAxis(crossAxis);\n let mainAxisCoord = coords[mainAxis];\n let crossAxisCoord = coords[crossAxis];\n const rawOffset = evaluate(offset, state);\n const computedOffset = typeof rawOffset === 'number' ? {\n mainAxis: rawOffset,\n crossAxis: 0\n } : {\n mainAxis: 0,\n crossAxis: 0,\n ...rawOffset\n };\n if (checkMainAxis) {\n const len = mainAxis === 'y' ? 'height' : 'width';\n const limitMin = rects.reference[mainAxis] - rects.floating[len] + computedOffset.mainAxis;\n const limitMax = rects.reference[mainAxis] + rects.reference[len] - computedOffset.mainAxis;\n if (mainAxisCoord < limitMin) {\n mainAxisCoord = limitMin;\n } else if (mainAxisCoord > limitMax) {\n mainAxisCoord = limitMax;\n }\n }\n if (checkCrossAxis) {\n var _middlewareData$offse, _middlewareData$offse2;\n const len = mainAxis === 'y' ? 'width' : 'height';\n const isOriginSide = ['top', 'left'].includes(getSide(placement));\n const limitMin = rects.reference[crossAxis] - rects.floating[len] + (isOriginSide ? ((_middlewareData$offse = middlewareData.offset) == null ? void 0 : _middlewareData$offse[crossAxis]) || 0 : 0) + (isOriginSide ? 0 : computedOffset.crossAxis);\n const limitMax = rects.reference[crossAxis] + rects.reference[len] + (isOriginSide ? 0 : ((_middlewareData$offse2 = middlewareData.offset) == null ? void 0 : _middlewareData$offse2[crossAxis]) || 0) - (isOriginSide ? computedOffset.crossAxis : 0);\n if (crossAxisCoord < limitMin) {\n crossAxisCoord = limitMin;\n } else if (crossAxisCoord > limitMax) {\n crossAxisCoord = limitMax;\n }\n }\n return {\n [mainAxis]: mainAxisCoord,\n [crossAxis]: crossAxisCoord\n };\n }\n };\n};\n\n/**\n * Provides data that allows you to change the size of the floating element —\n * for instance, prevent it from overflowing the clipping boundary or match the\n * width of the reference element.\n * @see https://floating-ui.com/docs/size\n */\nconst size = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'size',\n options,\n async fn(state) {\n var _state$middlewareData, _state$middlewareData2;\n const {\n placement,\n rects,\n platform,\n elements\n } = state;\n const {\n apply = () => {},\n ...detectOverflowOptions\n } = evaluate(options, state);\n const overflow = await detectOverflow(state, detectOverflowOptions);\n const side = getSide(placement);\n const alignment = getAlignment(placement);\n const isYAxis = getSideAxis(placement) === 'y';\n const {\n width,\n height\n } = rects.floating;\n let heightSide;\n let widthSide;\n if (side === 'top' || side === 'bottom') {\n heightSide = side;\n widthSide = alignment === ((await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating))) ? 'start' : 'end') ? 'left' : 'right';\n } else {\n widthSide = side;\n heightSide = alignment === 'end' ? 'top' : 'bottom';\n }\n const maximumClippingHeight = height - overflow.top - overflow.bottom;\n const maximumClippingWidth = width - overflow.left - overflow.right;\n const overflowAvailableHeight = min(height - overflow[heightSide], maximumClippingHeight);\n const overflowAvailableWidth = min(width - overflow[widthSide], maximumClippingWidth);\n const noShift = !state.middlewareData.shift;\n let availableHeight = overflowAvailableHeight;\n let availableWidth = overflowAvailableWidth;\n if ((_state$middlewareData = state.middlewareData.shift) != null && _state$middlewareData.enabled.x) {\n availableWidth = maximumClippingWidth;\n }\n if ((_state$middlewareData2 = state.middlewareData.shift) != null && _state$middlewareData2.enabled.y) {\n availableHeight = maximumClippingHeight;\n }\n if (noShift && !alignment) {\n const xMin = max(overflow.left, 0);\n const xMax = max(overflow.right, 0);\n const yMin = max(overflow.top, 0);\n const yMax = max(overflow.bottom, 0);\n if (isYAxis) {\n availableWidth = width - 2 * (xMin !== 0 || xMax !== 0 ? xMin + xMax : max(overflow.left, overflow.right));\n } else {\n availableHeight = height - 2 * (yMin !== 0 || yMax !== 0 ? yMin + yMax : max(overflow.top, overflow.bottom));\n }\n }\n await apply({\n ...state,\n availableWidth,\n availableHeight\n });\n const nextDimensions = await platform.getDimensions(elements.floating);\n if (width !== nextDimensions.width || height !== nextDimensions.height) {\n return {\n reset: {\n rects: true\n }\n };\n }\n return {};\n }\n };\n};\n\nexport { arrow, autoPlacement, computePosition, detectOverflow, flip, hide, inline, limitShift, offset, shift, size };\n","function hasWindow() {\n return typeof window !== 'undefined';\n}\nfunction getNodeName(node) {\n if (isNode(node)) {\n return (node.nodeName || '').toLowerCase();\n }\n // Mocked nodes in testing environments may not be instances of Node. By\n // returning `#document` an infinite loop won't occur.\n // https://github.com/floating-ui/floating-ui/issues/2317\n return '#document';\n}\nfunction getWindow(node) {\n var _node$ownerDocument;\n return (node == null || (_node$ownerDocument = node.ownerDocument) == null ? void 0 : _node$ownerDocument.defaultView) || window;\n}\nfunction getDocumentElement(node) {\n var _ref;\n return (_ref = (isNode(node) ? node.ownerDocument : node.document) || window.document) == null ? void 0 : _ref.documentElement;\n}\nfunction isNode(value) {\n if (!hasWindow()) {\n return false;\n }\n return value instanceof Node || value instanceof getWindow(value).Node;\n}\nfunction isElement(value) {\n if (!hasWindow()) {\n return false;\n }\n return value instanceof Element || value instanceof getWindow(value).Element;\n}\nfunction isHTMLElement(value) {\n if (!hasWindow()) {\n return false;\n }\n return value instanceof HTMLElement || value instanceof getWindow(value).HTMLElement;\n}\nfunction isShadowRoot(value) {\n if (!hasWindow() || typeof ShadowRoot === 'undefined') {\n return false;\n }\n return value instanceof ShadowRoot || value instanceof getWindow(value).ShadowRoot;\n}\nfunction isOverflowElement(element) {\n const {\n overflow,\n overflowX,\n overflowY,\n display\n } = getComputedStyle(element);\n return /auto|scroll|overlay|hidden|clip/.test(overflow + overflowY + overflowX) && !['inline', 'contents'].includes(display);\n}\nfunction isTableElement(element) {\n return ['table', 'td', 'th'].includes(getNodeName(element));\n}\nfunction isTopLayer(element) {\n return [':popover-open', ':modal'].some(selector => {\n try {\n return element.matches(selector);\n } catch (e) {\n return false;\n }\n });\n}\nfunction isContainingBlock(elementOrCss) {\n const webkit = isWebKit();\n const css = isElement(elementOrCss) ? getComputedStyle(elementOrCss) : elementOrCss;\n\n // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n // https://drafts.csswg.org/css-transforms-2/#individual-transforms\n return ['transform', 'translate', 'scale', 'rotate', 'perspective'].some(value => css[value] ? css[value] !== 'none' : false) || (css.containerType ? css.containerType !== 'normal' : false) || !webkit && (css.backdropFilter ? css.backdropFilter !== 'none' : false) || !webkit && (css.filter ? css.filter !== 'none' : false) || ['transform', 'translate', 'scale', 'rotate', 'perspective', 'filter'].some(value => (css.willChange || '').includes(value)) || ['paint', 'layout', 'strict', 'content'].some(value => (css.contain || '').includes(value));\n}\nfunction getContainingBlock(element) {\n let currentNode = getParentNode(element);\n while (isHTMLElement(currentNode) && !isLastTraversableNode(currentNode)) {\n if (isContainingBlock(currentNode)) {\n return currentNode;\n } else if (isTopLayer(currentNode)) {\n return null;\n }\n currentNode = getParentNode(currentNode);\n }\n return null;\n}\nfunction isWebKit() {\n if (typeof CSS === 'undefined' || !CSS.supports) return false;\n return CSS.supports('-webkit-backdrop-filter', 'none');\n}\nfunction isLastTraversableNode(node) {\n return ['html', 'body', '#document'].includes(getNodeName(node));\n}\nfunction getComputedStyle(element) {\n return getWindow(element).getComputedStyle(element);\n}\nfunction getNodeScroll(element) {\n if (isElement(element)) {\n return {\n scrollLeft: element.scrollLeft,\n scrollTop: element.scrollTop\n };\n }\n return {\n scrollLeft: element.scrollX,\n scrollTop: element.scrollY\n };\n}\nfunction getParentNode(node) {\n if (getNodeName(node) === 'html') {\n return node;\n }\n const result =\n // Step into the shadow DOM of the parent of a slotted node.\n node.assignedSlot ||\n // DOM Element detected.\n node.parentNode ||\n // ShadowRoot detected.\n isShadowRoot(node) && node.host ||\n // Fallback.\n getDocumentElement(node);\n return isShadowRoot(result) ? result.host : result;\n}\nfunction getNearestOverflowAncestor(node) {\n const parentNode = getParentNode(node);\n if (isLastTraversableNode(parentNode)) {\n return node.ownerDocument ? node.ownerDocument.body : node.body;\n }\n if (isHTMLElement(parentNode) && isOverflowElement(parentNode)) {\n return parentNode;\n }\n return getNearestOverflowAncestor(parentNode);\n}\nfunction getOverflowAncestors(node, list, traverseIframes) {\n var _node$ownerDocument2;\n if (list === void 0) {\n list = [];\n }\n if (traverseIframes === void 0) {\n traverseIframes = true;\n }\n const scrollableAncestor = getNearestOverflowAncestor(node);\n const isBody = scrollableAncestor === ((_node$ownerDocument2 = node.ownerDocument) == null ? void 0 : _node$ownerDocument2.body);\n const win = getWindow(scrollableAncestor);\n if (isBody) {\n const frameElement = getFrameElement(win);\n return list.concat(win, win.visualViewport || [], isOverflowElement(scrollableAncestor) ? scrollableAncestor : [], frameElement && traverseIframes ? getOverflowAncestors(frameElement) : []);\n }\n return list.concat(scrollableAncestor, getOverflowAncestors(scrollableAncestor, [], traverseIframes));\n}\nfunction getFrameElement(win) {\n return win.parent && Object.getPrototypeOf(win.parent) ? win.frameElement : null;\n}\n\nexport { getComputedStyle, getContainingBlock, getDocumentElement, getFrameElement, getNearestOverflowAncestor, getNodeName, getNodeScroll, getOverflowAncestors, getParentNode, getWindow, isContainingBlock, isElement, isHTMLElement, isLastTraversableNode, isNode, isOverflowElement, isShadowRoot, isTableElement, isTopLayer, isWebKit };\n","import { rectToClientRect, arrow as arrow$1, autoPlacement as autoPlacement$1, detectOverflow as detectOverflow$1, flip as flip$1, hide as hide$1, inline as inline$1, limitShift as limitShift$1, offset as offset$1, shift as shift$1, size as size$1, computePosition as computePosition$1 } from '@floating-ui/core';\nimport { round, createCoords, max, min, floor } from '@floating-ui/utils';\nimport { getComputedStyle, isHTMLElement, isElement, getWindow, isWebKit, getFrameElement, getNodeScroll, getDocumentElement, isTopLayer, getNodeName, isOverflowElement, getOverflowAncestors, getParentNode, isLastTraversableNode, isContainingBlock, isTableElement, getContainingBlock } from '@floating-ui/utils/dom';\nexport { getOverflowAncestors } from '@floating-ui/utils/dom';\n\nfunction getCssDimensions(element) {\n const css = getComputedStyle(element);\n // In testing environments, the `width` and `height` properties are empty\n // strings for SVG elements, returning NaN. Fallback to `0` in this case.\n let width = parseFloat(css.width) || 0;\n let height = parseFloat(css.height) || 0;\n const hasOffset = isHTMLElement(element);\n const offsetWidth = hasOffset ? element.offsetWidth : width;\n const offsetHeight = hasOffset ? element.offsetHeight : height;\n const shouldFallback = round(width) !== offsetWidth || round(height) !== offsetHeight;\n if (shouldFallback) {\n width = offsetWidth;\n height = offsetHeight;\n }\n return {\n width,\n height,\n $: shouldFallback\n };\n}\n\nfunction unwrapElement(element) {\n return !isElement(element) ? element.contextElement : element;\n}\n\nfunction getScale(element) {\n const domElement = unwrapElement(element);\n if (!isHTMLElement(domElement)) {\n return createCoords(1);\n }\n const rect = domElement.getBoundingClientRect();\n const {\n width,\n height,\n $\n } = getCssDimensions(domElement);\n let x = ($ ? round(rect.width) : rect.width) / width;\n let y = ($ ? round(rect.height) : rect.height) / height;\n\n // 0, NaN, or Infinity should always fallback to 1.\n\n if (!x || !Number.isFinite(x)) {\n x = 1;\n }\n if (!y || !Number.isFinite(y)) {\n y = 1;\n }\n return {\n x,\n y\n };\n}\n\nconst noOffsets = /*#__PURE__*/createCoords(0);\nfunction getVisualOffsets(element) {\n const win = getWindow(element);\n if (!isWebKit() || !win.visualViewport) {\n return noOffsets;\n }\n return {\n x: win.visualViewport.offsetLeft,\n y: win.visualViewport.offsetTop\n };\n}\nfunction shouldAddVisualOffsets(element, isFixed, floatingOffsetParent) {\n if (isFixed === void 0) {\n isFixed = false;\n }\n if (!floatingOffsetParent || isFixed && floatingOffsetParent !== getWindow(element)) {\n return false;\n }\n return isFixed;\n}\n\nfunction getBoundingClientRect(element, includeScale, isFixedStrategy, offsetParent) {\n if (includeScale === void 0) {\n includeScale = false;\n }\n if (isFixedStrategy === void 0) {\n isFixedStrategy = false;\n }\n const clientRect = element.getBoundingClientRect();\n const domElement = unwrapElement(element);\n let scale = createCoords(1);\n if (includeScale) {\n if (offsetParent) {\n if (isElement(offsetParent)) {\n scale = getScale(offsetParent);\n }\n } else {\n scale = getScale(element);\n }\n }\n const visualOffsets = shouldAddVisualOffsets(domElement, isFixedStrategy, offsetParent) ? getVisualOffsets(domElement) : createCoords(0);\n let x = (clientRect.left + visualOffsets.x) / scale.x;\n let y = (clientRect.top + visualOffsets.y) / scale.y;\n let width = clientRect.width / scale.x;\n let height = clientRect.height / scale.y;\n if (domElement) {\n const win = getWindow(domElement);\n const offsetWin = offsetParent && isElement(offsetParent) ? getWindow(offsetParent) : offsetParent;\n let currentWin = win;\n let currentIFrame = getFrameElement(currentWin);\n while (currentIFrame && offsetParent && offsetWin !== currentWin) {\n const iframeScale = getScale(currentIFrame);\n const iframeRect = currentIFrame.getBoundingClientRect();\n const css = getComputedStyle(currentIFrame);\n const left = iframeRect.left + (currentIFrame.clientLeft + parseFloat(css.paddingLeft)) * iframeScale.x;\n const top = iframeRect.top + (currentIFrame.clientTop + parseFloat(css.paddingTop)) * iframeScale.y;\n x *= iframeScale.x;\n y *= iframeScale.y;\n width *= iframeScale.x;\n height *= iframeScale.y;\n x += left;\n y += top;\n currentWin = getWindow(currentIFrame);\n currentIFrame = getFrameElement(currentWin);\n }\n }\n return rectToClientRect({\n width,\n height,\n x,\n y\n });\n}\n\n// If <html> has a CSS width greater than the viewport, then this will be\n// incorrect for RTL.\nfunction getWindowScrollBarX(element, rect) {\n const leftScroll = getNodeScroll(element).scrollLeft;\n if (!rect) {\n return getBoundingClientRect(getDocumentElement(element)).left + leftScroll;\n }\n return rect.left + leftScroll;\n}\n\nfunction getHTMLOffset(documentElement, scroll, ignoreScrollbarX) {\n if (ignoreScrollbarX === void 0) {\n ignoreScrollbarX = false;\n }\n const htmlRect = documentElement.getBoundingClientRect();\n const x = htmlRect.left + scroll.scrollLeft - (ignoreScrollbarX ? 0 :\n // RTL <body> scrollbar.\n getWindowScrollBarX(documentElement, htmlRect));\n const y = htmlRect.top + scroll.scrollTop;\n return {\n x,\n y\n };\n}\n\nfunction convertOffsetParentRelativeRectToViewportRelativeRect(_ref) {\n let {\n elements,\n rect,\n offsetParent,\n strategy\n } = _ref;\n const isFixed = strategy === 'fixed';\n const documentElement = getDocumentElement(offsetParent);\n const topLayer = elements ? isTopLayer(elements.floating) : false;\n if (offsetParent === documentElement || topLayer && isFixed) {\n return rect;\n }\n let scroll = {\n scrollLeft: 0,\n scrollTop: 0\n };\n let scale = createCoords(1);\n const offsets = createCoords(0);\n const isOffsetParentAnElement = isHTMLElement(offsetParent);\n if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n if (getNodeName(offsetParent) !== 'body' || isOverflowElement(documentElement)) {\n scroll = getNodeScroll(offsetParent);\n }\n if (isHTMLElement(offsetParent)) {\n const offsetRect = getBoundingClientRect(offsetParent);\n scale = getScale(offsetParent);\n offsets.x = offsetRect.x + offsetParent.clientLeft;\n offsets.y = offsetRect.y + offsetParent.clientTop;\n }\n }\n const htmlOffset = documentElement && !isOffsetParentAnElement && !isFixed ? getHTMLOffset(documentElement, scroll, true) : createCoords(0);\n return {\n width: rect.width * scale.x,\n height: rect.height * scale.y,\n x: rect.x * scale.x - scroll.scrollLeft * scale.x + offsets.x + htmlOffset.x,\n y: rect.y * scale.y - scroll.scrollTop * scale.y + offsets.y + htmlOffset.y\n };\n}\n\nfunction getClientRects(element) {\n return Array.from(element.getClientRects());\n}\n\n// Gets the entire size of the scrollable document area, even extending outside\n// of the `<html>` and `<body>` rect bounds if horizontally scrollable.\nfunction getDocumentRect(element) {\n const html = getDocumentElement(element);\n const scroll = getNodeScroll(element);\n const body = element.ownerDocument.body;\n const width = max(html.scrollWidth, html.clientWidth, body.scrollWidth, body.clientWidth);\n const height = max(html.scrollHeight, html.clientHeight, body.scrollHeight, body.clientHeight);\n let x = -scroll.scrollLeft + getWindowScrollBarX(element);\n const y = -scroll.scrollTop;\n if (getComputedStyle(body).direction === 'rtl') {\n x += max(html.clientWidth, body.clientWidth) - width;\n }\n return {\n width,\n height,\n x,\n y\n };\n}\n\nfunction getViewportRect(element, strategy) {\n const win = getWindow(element);\n const html = getDocumentElement(element);\n const visualViewport = win.visualViewport;\n let width = html.clientWidth;\n let height = html.clientHeight;\n let x = 0;\n let y = 0;\n if (visualViewport) {\n width = visualViewport.width;\n height = visualViewport.height;\n const visualViewportBased = isWebKit();\n if (!visualViewportBased || visualViewportBased && strategy === 'fixed') {\n x = visualViewport.offsetLeft;\n y = visualViewport.offsetTop;\n }\n }\n return {\n width,\n height,\n x,\n y\n };\n}\n\n// Returns the inner client rect, subtracting scrollbars if present.\nfunction getInnerBoundingClientRect(element, strategy) {\n const clientRect = getBoundingClientRect(element, true, strategy === 'fixed');\n const top = clientRect.top + element.clientTop;\n const left = clientRect.left + element.clientLeft;\n const scale = isHTMLElement(element) ? getScale(element) : createCoords(1);\n const width = element.clientWidth * scale.x;\n const height = element.clientHeight * scale.y;\n const x = left * scale.x;\n const y = top * scale.y;\n return {\n width,\n height,\n x,\n y\n };\n}\nfunction getClientRectFromClippingAncestor(element, clippingAncestor, strategy) {\n let rect;\n if (clippingAncestor === 'viewport') {\n rect = getViewportRect(element, strategy);\n } else if (clippingAncestor === 'document') {\n rect = getDocumentRect(getDocumentElement(element));\n } else if (isElement(clippingAncestor)) {\n rect = getInnerBoundingClientRect(clippingAncestor, strategy);\n } else {\n const visualOffsets = getVisualOffsets(element);\n rect = {\n x: clippingAncestor.x - visualOffsets.x,\n y: clippingAncestor.y - visualOffsets.y,\n width: clippingAncestor.width,\n height: clippingAncestor.height\n };\n }\n return rectToClientRect(rect);\n}\nfunction hasFixedPositionAncestor(element, stopNode) {\n const parentNode = getParentNode(element);\n if (parentNode === stopNode || !isElement(parentNode) || isLastTraversableNode(parentNode)) {\n return false;\n }\n return getComputedStyle(parentNode).position === 'fixed' || hasFixedPositionAncestor(parentNode, stopNode);\n}\n\n// A \"clipping ancestor\" is an `overflow` element with the characteristic of\n// clipping (or hiding) child elements. This returns all clipping ancestors\n// of the given element up the tree.\nfunction getClippingElementAncestors(element, cache) {\n const cachedResult = cache.get(element);\n if (cachedResult) {\n return cachedResult;\n }\n let result = getOverflowAncestors(element, [], false).filter(el => isElement(el) && getNodeName(el) !== 'body');\n let currentContainingBlockComputedStyle = null;\n const elementIsFixed = getComputedStyle(element).position === 'fixed';\n let currentNode = elementIsFixed ? getParentNode(element) : element;\n\n // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n while (isElement(currentNode) && !isLastTraversableNode(currentNode)) {\n const computedStyle = getComputedStyle(currentNode);\n const currentNodeIsContaining = isContainingBlock(currentNode);\n if (!currentNodeIsContaining && computedStyle.position === 'fixed') {\n currentContainingBlockComputedStyle = null;\n }\n const shouldDropCurrentNode = elementIsFixed ? !currentNodeIsContaining && !currentContainingBlockComputedStyle : !currentNodeIsContaining && computedStyle.position === 'static' && !!currentContainingBlockComputedStyle && ['absolute', 'fixed'].includes(currentContainingBlockComputedStyle.position) || isOverflowElement(currentNode) && !currentNodeIsContaining && hasFixedPositionAncestor(element, currentNode);\n if (shouldDropCurrentNode) {\n // Drop non-containing blocks.\n result = result.filter(ancestor => ancestor !== currentNode);\n } else {\n // Record last containing block for next iteration.\n currentContainingBlockComputedStyle = computedStyle;\n }\n currentNode = getParentNode(currentNode);\n }\n cache.set(element, result);\n return result;\n}\n\n// Gets the maximum area that the element is visible in due to any number of\n// clipping ancestors.\nfunction getClippingRect(_ref) {\n let {\n element,\n boundary,\n rootBoundary,\n strategy\n } = _ref;\n const elementClippingAncestors = boundary === 'clippingAncestors' ? isTopLayer(element) ? [] : getClippingElementAncestors(element, this._c) : [].concat(boundary);\n const clippingAncestors = [...elementClippingAncestors, rootBoundary];\n const firstClippingAncestor = clippingAncestors[0];\n const clippingRect = clippingAncestors.reduce((accRect, clippingAncestor) => {\n const rect = getClientRectFromClippingAncestor(element, clippingAncestor, strategy);\n accRect.top = max(rect.top, accRect.top);\n accRect.right = min(rect.right, accRect.right);\n accRect.bottom = min(rect.bottom, accRect.bottom);\n accRect.left = max(rect.left, accRect.left);\n return accRect;\n }, getClientRectFromClippingAncestor(element, firstClippingAncestor, strategy));\n return {\n width: clippingRect.right - clippingRect.left,\n height: clippingRect.bottom - clippingRect.top,\n x: clippingRect.left,\n y: clippingRect.top\n };\n}\n\nfunction getDimensions(element) {\n const {\n width,\n height\n } = getCssDimensions(element);\n return {\n width,\n height\n };\n}\n\nfunction getRectRelativeToOffsetParent(element, offsetParent, strategy) {\n const isOffsetParentAnElement = isHTMLElement(offsetParent);\n const documentElement = getDocumentElement(offsetParent);\n const isFixed = strategy === 'fixed';\n const rect = getBoundingClientRect(element, true, isFixed, offsetParent);\n let scroll = {\n scrollLeft: 0,\n scrollTop: 0\n };\n const offsets = createCoords(0);\n\n // If the <body> scrollbar appears on the left (e.g. RTL systems). Use\n // Firefox with layout.scrollbar.side = 3 in about:config to test this.\n function setLeftRTLScrollbarOffset() {\n offsets.x = getWindowScrollBarX(documentElement);\n }\n if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n if (getNodeName(offsetParent) !== 'body' || isOverflowElement(documentElement)) {\n scroll = getNodeScroll(offsetParent);\n }\n if (isOffsetParentAnElement) {\n const offsetRect = getBoundingClientRect(offsetParent, true, isFixed, offsetParent);\n offsets.x = offsetRect.x + offsetParent.clientLeft;\n offsets.y = offsetRect.y + offsetParent.clientTop;\n } else if (documentElement) {\n setLeftRTLScrollbarOffset();\n }\n }\n if (isFixed && !isOffsetParentAnElement && documentElement) {\n setLeftRTLScrollbarOffset();\n }\n const htmlOffset = documentElement && !isOffsetParentAnElement && !isFixed ? getHTMLOffset(documentElement, scroll) : createCoords(0);\n const x = rect.left + scroll.scrollLeft - offsets.x - htmlOffset.x;\n const y = rect.top + scroll.scrollTop - offsets.y - htmlOffset.y;\n return {\n x,\n y,\n width: rect.width,\n height: rect.height\n };\n}\n\nfunction isStaticPositioned(element) {\n return getComputedStyle(element).position === 'static';\n}\n\nfunction getTrueOffsetParent(element, polyfill) {\n if (!isHTMLElement(element) || getComputedStyle(element).position === 'fixed') {\n return null;\n }\n if (polyfill) {\n return polyfill(element);\n }\n let rawOffsetParent = element.offsetParent;\n\n // Firefox returns the <html> element as the offsetParent if it's non-static,\n // while Chrome and Safari return the <body> element. The <body> element must\n // be used to perform the correct calculations even if the <html> element is\n // non-static.\n if (getDocumentElement(element) === rawOffsetParent) {\n rawOffsetParent = rawOffsetParent.ownerDocument.body;\n }\n return rawOffsetParent;\n}\n\n// Gets the closest ancestor positioned element. Handles some edge cases,\n// such as table ancestors and cross browser bugs.\nfunction getOffsetParent(element, polyfill) {\n const win = getWindow(element);\n if (isTopLayer(element)) {\n return win;\n }\n if (!isHTMLElement(element)) {\n let svgOffsetParent = getParentNode(element);\n while (svgOffsetParent && !isLastTraversableNode(svgOffsetParent)) {\n if (isElement(svgOffsetParent) && !isStaticPositioned(svgOffsetParent)) {\n return svgOffsetParent;\n }\n svgOffsetParent = getParentNode(svgOffsetParent);\n }\n return win;\n }\n let offsetParent = getTrueOffsetParent(element, polyfill);\n while (offsetParent && isTableElement(offsetParent) && isStaticPositioned(offsetParent)) {\n offsetParent = getTrueOffsetParent(offsetParent, polyfill);\n }\n if (offsetParent && isLastTraversableNode(offsetParent) && isStaticPositioned(offsetParent) && !isContainingBlock(offsetParent)) {\n return win;\n }\n return offsetParent || getContainingBlock(element) || win;\n}\n\nconst getElementRects = async function (data) {\n const getOffsetParentFn = this.getOffsetParent || getOffsetParent;\n const getDimensionsFn = this.getDimensions;\n const floatingDimensions = await getDimensionsFn(data.floating);\n return {\n reference: getRectRelativeToOffsetParent(data.reference, await getOffsetParentFn(data.floating), data.strategy),\n floating: {\n x: 0,\n y: 0,\n width: floatingDimensions.width,\n height: floatingDimensions.height\n }\n };\n};\n\nfunction isRTL(element) {\n return getComputedStyle(element).direction === 'rtl';\n}\n\nconst platform = {\n convertOffsetParentRelativeRectToViewportRelativeRect,\n getDocumentElement,\n getClippingRect,\n getOffsetParent,\n getElementRects,\n getClientRects,\n getDimensions,\n getScale,\n isElement,\n isRTL\n};\n\nfunction rectsAreEqual(a, b) {\n return a.x === b.x && a.y === b.y && a.width === b.width && a.height === b.height;\n}\n\n// https://samthor.au/2021/observing-dom/\nfunction observeMove(element, onMove) {\n let io = null;\n let timeoutId;\n const root = getDocumentElement(element);\n function cleanup() {\n var _io;\n clearTimeout(timeoutId);\n (_io = io) == null || _io.disconnect();\n io = null;\n }\n function refresh(skip, threshold) {\n if (skip === void 0) {\n skip = false;\n }\n if (threshold === void 0) {\n threshold = 1;\n }\n cleanup();\n const elementRectForRootMargin = element.getBoundingClientRect();\n const {\n left,\n top,\n width,\n height\n } = elementRectForRootMargin;\n if (!skip) {\n onMove();\n }\n if (!width || !height) {\n return;\n }\n const insetTop = floor(top);\n const insetRight = floor(root.clientWidth - (left + width));\n const insetBottom = floor(root.clientHeight - (top + height));\n const insetLeft = floor(left);\n const rootMargin = -insetTop + \"px \" + -insetRight + \"px \" + -insetBottom + \"px \" + -insetLeft + \"px\";\n const options = {\n rootMargin,\n threshold: max(0, min(1, threshold)) || 1\n };\n let isFirstUpdate = true;\n function handleObserve(entries) {\n const ratio = entries[0].intersectionRatio;\n if (ratio !== threshold) {\n if (!isFirstUpdate) {\n return refresh();\n }\n if (!ratio) {\n // If the reference is clipped, the ratio is 0. Throttle the refresh\n // to prevent an infinite loop of updates.\n timeoutId = setTimeout(() => {\n refresh(false, 1e-7);\n }, 1000);\n } else {\n refresh(false, ratio);\n }\n }\n if (ratio === 1 && !rectsAreEqual(elementRectForRootMargin, element.getBoundingClientRect())) {\n // It's possible that even though the ratio is reported as 1, the\n // element is not actually fully within the IntersectionObserver's root\n // area anymore. This can happen under performance constraints. This may\n // be a bug in the browser's IntersectionObserver implementation. To\n // work around this, we compare the element's bounding rect now with\n // what it was at the time we created the IntersectionObserver. If they\n // are not equal then the element moved, so we refresh.\n refresh();\n }\n isFirstUpdate = false;\n }\n\n // Older browsers don't support a `document` as the root and will throw an\n // error.\n try {\n io = new IntersectionObserver(handleObserve, {\n ...options,\n // Handle <iframe>s\n root: root.ownerDocument\n });\n } catch (_e) {\n io = new IntersectionObserver(handleObserve, options);\n }\n io.observe(element);\n }\n refresh(true);\n return cleanup;\n}\n\n/**\n * Automatically updates the position of the floating element when necessary.\n * Should only be called when the floating element is mounted on the DOM or\n * visible on the screen.\n * @returns cleanup function that should be invoked when the floating element is\n * removed from the DOM or hidden from the screen.\n * @see https://floating-ui.com/docs/autoUpdate\n */\nfunction autoUpdate(reference, floating, update, options) {\n if (options === void 0) {\n options = {};\n }\n const {\n ancestorScroll = true,\n ancestorResize = true,\n elementResize = typeof ResizeObserver === 'function',\n layoutShift = typeof IntersectionObserver === 'function',\n animationFrame = false\n } = options;\n const referenceEl = unwrapElement(reference);\n const ancestors = ancestorScroll || ancestorResize ? [...(referenceEl ? getOverflowAncestors(referenceEl) : []), ...getOverflowAncestors(floating)] : [];\n ancestors.forEach(ancestor => {\n ancestorScroll && ancestor.addEventListener('scroll', update, {\n passive: true\n });\n ancestorResize && ancestor.addEventListener('resize', update);\n });\n const cleanupIo = referenceEl && layoutShift ? observeMove(referenceEl, update) : null;\n let reobserveFrame = -1;\n let resizeObserver = null;\n if (elementResize) {\n resizeObserver = new ResizeObserver(_ref => {\n let [firstEntry] = _ref;\n if (firstEntry && firstEntry.target === referenceEl && resizeObserver) {\n // Prevent update loops when using the `size` middleware.\n // https://github.com/floating-ui/floating-ui/issues/1740\n resizeObserver.unobserve(floating);\n cancelAnimationFrame(reobserveFrame);\n reobserveFrame = requestAnimationFrame(() => {\n var _resizeObserver;\n (_resizeObserver = resizeObserver) == null || _resizeObserver.observe(floating);\n });\n }\n update();\n });\n if (referenceEl && !animationFrame) {\n resizeObserver.observe(referenceEl);\n }\n resizeObserver.observe(floating);\n }\n let frameId;\n let prevRefRect = animationFrame ? getBoundingClientRect(reference) : null;\n if (animationFrame) {\n frameLoop();\n }\n function frameLoop() {\n const nextRefRect = getBoundingClientRect(reference);\n if (prevRefRect && !rectsAreEqual(prevRefRect, nextRefRect)) {\n update();\n }\n prevRefRect = nextRefRect;\n frameId = requestAnimationFrame(frameLoop);\n }\n update();\n return () => {\n var _resizeObserver2;\n ancestors.forEach(ancestor => {\n ancestorScroll && ancestor.removeEventListener('scroll', update);\n ancestorResize && ancestor.removeEventListener('resize', update);\n });\n cleanupIo == null || cleanupIo();\n (_resizeObserver2 = resizeObserver) == null || _resizeObserver2.disconnect();\n resizeObserver = null;\n if (animationFrame) {\n cancelAnimationFrame(frameId);\n }\n };\n}\n\n/**\n * Resolves with an object of overflow side offsets that determine how much the\n * element is overflowing a given clipping boundary on each side.\n * - positive = overflowing the boundary by that number of pixels\n * - negative = how many pixels left before it will overflow\n * - 0 = lies flush with the boundary\n * @see https://floating-ui.com/docs/detectOverflow\n */\nconst detectOverflow = detectOverflow$1;\n\n/**\n * Modifies the placement by translating the floating element along the\n * specified axes.\n * A number (shorthand for `mainAxis` or distance), or an axes configuration\n * object may be passed.\n * @see https://floating-ui.com/docs/offset\n */\nconst offset = offset$1;\n\n/**\n * Optimizes the visibility of the floating element by choosing the placement\n * that has the most space available automatically, without needing to specify a\n * preferred placement. Alternative to `flip`.\n * @see https://floating-ui.com/docs/autoPlacement\n */\nconst autoPlacement = autoPlacement$1;\n\n/**\n * Optimizes the visibility of the floating element by shifting it in order to\n * keep it in view when it will overflow the clipping boundary.\n * @see https://floating-ui.com/docs/shift\n */\nconst shift = shift$1;\n\n/**\n * Optimizes the visibility of the floating element by flipping the `placement`\n * in order to keep it in view when the preferred placement(s) will overflow the\n * clipping boundary. Alternative to `autoPlacement`.\n * @see https://floating-ui.com/docs/flip\n */\nconst flip = flip$1;\n\n/**\n * Provides data that allows you to change the size of the floating element —\n * for instance, prevent it from overflowing the clipping boundary or match the\n * width of the reference element.\n * @see https://floating-ui.com/docs/size\n */\nconst size = size$1;\n\n/**\n * Provides data to hide the floating element in applicable situations, such as\n * when it is not in the same clipping context as the reference element.\n * @see https://floating-ui.com/docs/hide\n */\nconst hide = hide$1;\n\n/**\n * Provides data to position an inner element of the floating element so that it\n * appears centered to the reference element.\n * @see https://floating-ui.com/docs/arrow\n */\nconst arrow = arrow$1;\n\n/**\n * Provides improved positioning for inline reference elements that can span\n * over multiple lines, such as hyperlinks or range selections.\n * @see https://floating-ui.com/docs/inline\n */\nconst inline = inline$1;\n\n/**\n * Built-in `limiter` that will stop `shift()` at a certain point.\n */\nconst limitShift = limitShift$1;\n\n/**\n * Computes the `x` and `y` coordinates that will place the floating element\n * next to a given reference element.\n */\nconst computePosition = (reference, floating, options) => {\n // This caches the expensive `getClippingElementAncestors` function so that\n // multiple lifecycle resets re-use the same result. It only lives for a\n // single call. If other functions become expensive, we can add them as well.\n const cache = new Map();\n const mergedOptions = {\n platform,\n ...options\n };\n const platformWithCache = {\n ...mergedOptions.platform,\n _c: cache\n };\n return computePosition$1(reference, floating, {\n ...mergedOptions,\n platform: platformWithCache\n });\n};\n\nexport { arrow, autoPlacement, autoUpdate, computePosition, detectOverflow, flip, hide, inline, limitShift, offset, platform, shift, size };\n","var resizeObservers = [];\nexport { resizeObservers };\n","import { resizeObservers } from '../utils/resizeObservers';\nvar hasActiveObservations = function () {\n return resizeObservers.some(function (ro) { return ro.activeTargets.length > 0; });\n};\nexport { hasActiveObservations };\n","import { resizeObservers } from '../utils/resizeObservers';\nvar hasSkippedObservations = function () {\n return resizeObservers.some(function (ro) { return ro.skippedTargets.length > 0; });\n};\nexport { hasSkippedObservations };\n","var msg = 'ResizeObserver loop completed with undelivered notifications.';\nvar deliverResizeLoopError = function () {\n var event;\n if (typeof ErrorEvent === 'function') {\n event = new ErrorEvent('error', {\n message: msg\n });\n }\n else {\n event = document.createEvent('Event');\n event.initEvent('error', false, false);\n event.message = msg;\n }\n window.dispatchEvent(event);\n};\nexport { deliverResizeLoopError };\n","var ResizeObserverBoxOptions;\n(function (ResizeObserverBoxOptions) {\n ResizeObserverBoxOptions[\"BORDER_BOX\"] = \"border-box\";\n ResizeObserverBoxOptions[\"CONTENT_BOX\"] = \"content-box\";\n ResizeObserverBoxOptions[\"DEVICE_PIXEL_CONTENT_BOX\"] = \"device-pixel-content-box\";\n})(ResizeObserverBoxOptions || (ResizeObserverBoxOptions = {}));\nexport { ResizeObserverBoxOptions };\n","export var freeze = function (obj) { return Object.freeze(obj); };\n","import { freeze } from './utils/freeze';\nvar ResizeObserverSize = (function () {\n function ResizeObserverSize(inlineSize, blockSize) {\n this.inlineSize = inlineSize;\n this.blockSize = blockSize;\n freeze(this);\n }\n return ResizeObserverSize;\n}());\nexport { ResizeObserverSize };\n","import { freeze } from './utils/freeze';\nvar DOMRectReadOnly = (function () {\n function DOMRectReadOnly(x, y, width, height) {\n this.x = x;\n this.y = y;\n this.width = width;\n this.height = height;\n this.top = this.y;\n this.left = this.x;\n this.bottom = this.top + this.height;\n this.right = this.left + this.width;\n return freeze(this);\n }\n DOMRectReadOnly.prototype.toJSON = function () {\n var _a = this, x = _a.x, y = _a.y, top = _a.top, right = _a.right, bottom = _a.bottom, left = _a.left, width = _a.width, height = _a.height;\n return { x: x, y: y, top: top, right: right, bottom: bottom, left: left, width: width, height: height };\n };\n DOMRectReadOnly.fromRect = function (rectangle) {\n return new DOMRectReadOnly(rectangle.x, rectangle.y, rectangle.width, rectangle.height);\n };\n return DOMRectReadOnly;\n}());\nexport { DOMRectReadOnly };\n","var isSVG = function (target) { return target instanceof SVGElement && 'getBBox' in target; };\nvar isHidden = function (target) {\n if (isSVG(target)) {\n var _a = target.getBBox(), width = _a.width, height = _a.height;\n return !width && !height;\n }\n var _b = target, offsetWidth = _b.offsetWidth, offsetHeight = _b.offsetHeight;\n return !(offsetWidth || offsetHeight || target.getClientRects().length);\n};\nvar isElement = function (obj) {\n var _a;\n if (obj instanceof Element) {\n return true;\n }\n var scope = (_a = obj === null || obj === void 0 ? void 0 : obj.ownerDocument) === null || _a === void 0 ? void 0 : _a.defaultView;\n return !!(scope && obj instanceof scope.Element);\n};\nvar isReplacedElement = function (target) {\n switch (target.tagName) {\n case 'INPUT':\n if (target.type !== 'image') {\n break;\n }\n case 'VIDEO':\n case 'AUDIO':\n case 'EMBED':\n case 'OBJECT':\n case 'CANVAS':\n case 'IFRAME':\n case 'IMG':\n return true;\n }\n return false;\n};\nexport { isSVG, isHidden, isElement, isReplacedElement };\n","export var global = typeof window !== 'undefined' ? window : {};\n","import { ResizeObserverBoxOptions } from '../ResizeObserverBoxOptions';\nimport { ResizeObserverSize } from '../ResizeObserverSize';\nimport { DOMRectReadOnly } from '../DOMRectReadOnly';\nimport { isSVG, isHidden } from '../utils/element';\nimport { freeze } from '../utils/freeze';\nimport { global } from '../utils/global';\nvar cache = new WeakMap();\nvar scrollRegexp = /auto|scroll/;\nvar verticalRegexp = /^tb|vertical/;\nvar IE = (/msie|trident/i).test(global.navigator && global.navigator.userAgent);\nvar parseDimension = function (pixel) { return parseFloat(pixel || '0'); };\nvar size = function (inlineSize, blockSize, switchSizes) {\n if (inlineSize === void 0) { inlineSize = 0; }\n if (blockSize === void 0) { blockSize = 0; }\n if (switchSizes === void 0) { switchSizes = false; }\n return new ResizeObserverSize((switchSizes ? blockSize : inlineSize) || 0, (switchSizes ? inlineSize : blockSize) || 0);\n};\nvar zeroBoxes = freeze({\n devicePixelContentBoxSize: size(),\n borderBoxSize: size(),\n contentBoxSize: size(),\n contentRect: new DOMRectReadOnly(0, 0, 0, 0)\n});\nvar calculateBoxSizes = function (target, forceRecalculation) {\n if (forceRecalculation === void 0) { forceRecalculation = false; }\n if (cache.has(target) && !forceRecalculation) {\n return cache.get(target);\n }\n if (isHidden(target)) {\n cache.set(target, zeroBoxes);\n return zeroBoxes;\n }\n var cs = getComputedStyle(target);\n var svg = isSVG(target) && target.ownerSVGElement && target.getBBox();\n var removePadding = !IE && cs.boxSizing === 'border-box';\n var switchSizes = verticalRegexp.test(cs.writingMode || '');\n var canScrollVertically = !svg && scrollRegexp.test(cs.overflowY || '');\n var canScrollHorizontally = !svg && scrollRegexp.test(cs.overflowX || '');\n var paddingTop = svg ? 0 : parseDimension(cs.paddingTop);\n var paddingRight = svg ? 0 : parseDimension(cs.paddingRight);\n var paddingBottom = svg ? 0 : parseDimension(cs.paddingBottom);\n var paddingLeft = svg ? 0 : parseDimension(cs.paddingLeft);\n var borderTop = svg ? 0 : parseDimension(cs.borderTopWidth);\n var borderRight = svg ? 0 : parseDimension(cs.borderRightWidth);\n var borderBottom = svg ? 0 : parseDimension(cs.borderBottomWidth);\n var borderLeft = svg ? 0 : parseDimension(cs.borderLeftWidth);\n var horizontalPadding = paddingLeft + paddingRight;\n var verticalPadding = paddingTop + paddingBottom;\n var horizontalBorderArea = borderLeft + borderRight;\n var verticalBorderArea = borderTop + borderBottom;\n var horizontalScrollbarThickness = !canScrollHorizontally ? 0 : target.offsetHeight - verticalBorderArea - target.clientHeight;\n var verticalScrollbarThickness = !canScrollVertically ? 0 : target.offsetWidth - horizontalBorderArea - target.clientWidth;\n var widthReduction = removePadding ? horizontalPadding + horizontalBorderArea : 0;\n var heightReduction = removePadding ? verticalPadding + verticalBorderArea : 0;\n var contentWidth = svg ? svg.width : parseDimension(cs.width) - widthReduction - verticalScrollbarThickness;\n var contentHeight = svg ? svg.height : parseDimension(cs.height) - heightReduction - horizontalScrollbarThickness;\n var borderBoxWidth = contentWidth + horizontalPadding + verticalScrollbarThickness + horizontalBorderArea;\n var borderBoxHeight = contentHeight + verticalPadding + horizontalScrollbarThickness + verticalBorderArea;\n var boxes = freeze({\n devicePixelContentBoxSize: size(Math.round(contentWidth * devicePixelRatio), Math.round(contentHeight * devicePixelRatio), switchSizes),\n borderBoxSize: size(borderBoxWidth, borderBoxHeight, switchSizes),\n contentBoxSize: size(contentWidth, contentHeight, switchSizes),\n contentRect: new DOMRectReadOnly(paddingLeft, paddingTop, contentWidth, contentHeight)\n });\n cache.set(target, boxes);\n return boxes;\n};\nvar calculateBoxSize = function (target, observedBox, forceRecalculation) {\n var _a = calculateBoxSizes(target, forceRecalculation), borderBoxSize = _a.borderBoxSize, contentBoxSize = _a.contentBoxSize, devicePixelContentBoxSize = _a.devicePixelContentBoxSize;\n switch (observedBox) {\n case ResizeObserverBoxOptions.DEVICE_PIXEL_CONTENT_BOX:\n return devicePixelContentBoxSize;\n case ResizeObserverBoxOptions.BORDER_BOX:\n return borderBoxSize;\n default:\n return contentBoxSize;\n }\n};\nexport { calculateBoxSize, calculateBoxSizes };\n","import { calculateBoxSizes } from './algorithms/calculateBoxSize';\nimport { freeze } from './utils/freeze';\nvar ResizeObserverEntry = (function () {\n function ResizeObserverEntry(target) {\n var boxes = calculateBoxSizes(target);\n this.target = target;\n this.contentRect = boxes.contentRect;\n this.borderBoxSize = freeze([boxes.borderBoxSize]);\n this.contentBoxSize = freeze([boxes.contentBoxSize]);\n this.devicePixelContentBoxSize = freeze([boxes.devicePixelContentBoxSize]);\n }\n return ResizeObserverEntry;\n}());\nexport { ResizeObserverEntry };\n","import { isHidden } from '../utils/element';\nvar calculateDepthForNode = function (node) {\n if (isHidden(node)) {\n return Infinity;\n }\n var depth = 0;\n var parent = node.parentNode;\n while (parent) {\n depth += 1;\n parent = parent.parentNode;\n }\n return depth;\n};\nexport { calculateDepthForNode };\n","import { resizeObservers } from '../utils/resizeObservers';\nimport { ResizeObserverEntry } from '../ResizeObserverEntry';\nimport { calculateDepthForNode } from './calculateDepthForNode';\nimport { calculateBoxSize } from './calculateBoxSize';\nvar broadcastActiveObservations = function () {\n var shallowestDepth = Infinity;\n var callbacks = [];\n resizeObservers.forEach(function processObserver(ro) {\n if (ro.activeTargets.length === 0) {\n return;\n }\n var entries = [];\n ro.activeTargets.forEach(function processTarget(ot) {\n var entry = new ResizeObserverEntry(ot.target);\n var targetDepth = calculateDepthForNode(ot.target);\n entries.push(entry);\n ot.lastReportedSize = calculateBoxSize(ot.target, ot.observedBox);\n if (targetDepth < shallowestDepth) {\n shallowestDepth = targetDepth;\n }\n });\n callbacks.push(function resizeObserverCallback() {\n ro.callback.call(ro.observer, entries, ro.observer);\n });\n ro.activeTargets.splice(0, ro.activeTargets.length);\n });\n for (var _i = 0, callbacks_1 = callbacks; _i < callbacks_1.length; _i++) {\n var callback = callbacks_1[_i];\n callback();\n }\n return shallowestDepth;\n};\nexport { broadcastActiveObservations };\n","import { resizeObservers } from '../utils/resizeObservers';\nimport { calculateDepthForNode } from './calculateDepthForNode';\nvar gatherActiveObservationsAtDepth = function (depth) {\n resizeObservers.forEach(function processObserver(ro) {\n ro.activeTargets.splice(0, ro.activeTargets.length);\n ro.skippedTargets.splice(0, ro.skippedTargets.length);\n ro.observationTargets.forEach(function processTarget(ot) {\n if (ot.isActive()) {\n if (calculateDepthForNode(ot.target) > depth) {\n ro.activeTargets.push(ot);\n }\n else {\n ro.skippedTargets.push(ot);\n }\n }\n });\n });\n};\nexport { gatherActiveObservationsAtDepth };\n","import { hasActiveObservations } from '../algorithms/hasActiveObservations';\nimport { hasSkippedObservations } from '../algorithms/hasSkippedObservations';\nimport { deliverResizeLoopError } from '../algorithms/deliverResizeLoopError';\nimport { broadcastActiveObservations } from '../algorithms/broadcastActiveObservations';\nimport { gatherActiveObservationsAtDepth } from '../algorithms/gatherActiveObservationsAtDepth';\nvar process = function () {\n var depth = 0;\n gatherActiveObservationsAtDepth(depth);\n while (hasActiveObservations()) {\n depth = broadcastActiveObservations();\n gatherActiveObservationsAtDepth(depth);\n }\n if (hasSkippedObservations()) {\n deliverResizeLoopError();\n }\n return depth > 0;\n};\nexport { process };\n","var trigger;\nvar callbacks = [];\nvar notify = function () { return callbacks.splice(0).forEach(function (cb) { return cb(); }); };\nvar queueMicroTask = function (callback) {\n if (!trigger) {\n var toggle_1 = 0;\n var el_1 = document.createTextNode('');\n var config = { characterData: true };\n new MutationObserver(function () { return notify(); }).observe(el_1, config);\n trigger = function () { el_1.textContent = \"\".concat(toggle_1 ? toggle_1-- : toggle_1++); };\n }\n callbacks.push(callback);\n trigger();\n};\nexport { queueMicroTask };\n","import { queueMicroTask } from './queueMicroTask';\nvar queueResizeObserver = function (cb) {\n queueMicroTask(function ResizeObserver() {\n requestAnimationFrame(cb);\n });\n};\nexport { queueResizeObserver };\n","import { process } from './process';\nimport { global } from './global';\nimport { queueResizeObserver } from './queueResizeObserver';\nvar watching = 0;\nvar isWatching = function () { return !!watching; };\nvar CATCH_PERIOD = 250;\nvar observerConfig = { attributes: true, characterData: true, childList: true, subtree: true };\nvar events = [\n 'resize',\n 'load',\n 'transitionend',\n 'animationend',\n 'animationstart',\n 'animationiteration',\n 'keyup',\n 'keydown',\n 'mouseup',\n 'mousedown',\n 'mouseover',\n 'mouseout',\n 'blur',\n 'focus'\n];\nvar time = function (timeout) {\n if (timeout === void 0) { timeout = 0; }\n return Date.now() + timeout;\n};\nvar scheduled = false;\nvar Scheduler = (function () {\n function Scheduler() {\n var _this = this;\n this.stopped = true;\n this.listener = function () { return _this.schedule(); };\n }\n Scheduler.prototype.run = function (timeout) {\n var _this = this;\n if (timeout === void 0) { timeout = CATCH_PERIOD; }\n if (scheduled) {\n return;\n }\n scheduled = true;\n var until = time(timeout);\n queueResizeObserver(function () {\n var elementsHaveResized = false;\n try {\n elementsHaveResized = process();\n }\n finally {\n scheduled = false;\n timeout = until - time();\n if (!isWatching()) {\n return;\n }\n if (elementsHaveResized) {\n _this.run(1000);\n }\n else if (timeout > 0) {\n _this.run(timeout);\n }\n else {\n _this.start();\n }\n }\n });\n };\n Scheduler.prototype.schedule = function () {\n this.stop();\n this.run();\n };\n Scheduler.prototype.observe = function () {\n var _this = this;\n var cb = function () { return _this.observer && _this.observer.observe(document.body, observerConfig); };\n document.body ? cb() : global.addEventListener('DOMContentLoaded', cb);\n };\n Scheduler.prototype.start = function () {\n var _this = this;\n if (this.stopped) {\n this.stopped = false;\n this.observer = new MutationObserver(this.listener);\n this.observe();\n events.forEach(function (name) { return global.addEventListener(name, _this.listener, true); });\n }\n };\n Scheduler.prototype.stop = function () {\n var _this = this;\n if (!this.stopped) {\n this.observer && this.observer.disconnect();\n events.forEach(function (name) { return global.removeEventListener(name, _this.listener, true); });\n this.stopped = true;\n }\n };\n return Scheduler;\n}());\nvar scheduler = new Scheduler();\nvar updateCount = function (n) {\n !watching && n > 0 && scheduler.start();\n watching += n;\n !watching && scheduler.stop();\n};\nexport { scheduler, updateCount };\n","import { ResizeObserverBoxOptions } from './ResizeObserverBoxOptions';\nimport { calculateBoxSize } from './algorithms/calculateBoxSize';\nimport { isSVG, isReplacedElement } from './utils/element';\nvar skipNotifyOnElement = function (target) {\n return !isSVG(target)\n && !isReplacedElement(target)\n && getComputedStyle(target).display === 'inline';\n};\nvar ResizeObservation = (function () {\n function ResizeObservation(target, observedBox) {\n this.target = target;\n this.observedBox = observedBox || ResizeObserverBoxOptions.CONTENT_BOX;\n this.lastReportedSize = {\n inlineSize: 0,\n blockSize: 0\n };\n }\n ResizeObservation.prototype.isActive = function () {\n var size = calculateBoxSize(this.target, this.observedBox, true);\n if (skipNotifyOnElement(this.target)) {\n this.lastReportedSize = size;\n }\n if (this.lastReportedSize.inlineSize !== size.inlineSize\n || this.lastReportedSize.blockSize !== size.blockSize) {\n return true;\n }\n return false;\n };\n return ResizeObservation;\n}());\nexport { ResizeObservation };\n","var ResizeObserverDetail = (function () {\n function ResizeObserverDetail(resizeObserver, callback) {\n this.activeTargets = [];\n this.skippedTargets = [];\n this.observationTargets = [];\n this.observer = resizeObserver;\n this.callback = callback;\n }\n return ResizeObserverDetail;\n}());\nexport { ResizeObserverDetail };\n","import { scheduler, updateCount } from './utils/scheduler';\nimport { ResizeObservation } from './ResizeObservation';\nimport { ResizeObserverDetail } from './ResizeObserverDetail';\nimport { resizeObservers } from './utils/resizeObservers';\nvar observerMap = new WeakMap();\nvar getObservationIndex = function (observationTargets, target) {\n for (var i = 0; i < observationTargets.length; i += 1) {\n if (observationTargets[i].target === target) {\n return i;\n }\n }\n return -1;\n};\nvar ResizeObserverController = (function () {\n function ResizeObserverController() {\n }\n ResizeObserverController.connect = function (resizeObserver, callback) {\n var detail = new ResizeObserverDetail(resizeObserver, callback);\n observerMap.set(resizeObserver, detail);\n };\n ResizeObserverController.observe = function (resizeObserver, target, options) {\n var detail = observerMap.get(resizeObserver);\n var firstObservation = detail.observationTargets.length === 0;\n if (getObservationIndex(detail.observationTargets, target) < 0) {\n firstObservation && resizeObservers.push(detail);\n detail.observationTargets.push(new ResizeObservation(target, options && options.box));\n updateCount(1);\n scheduler.schedule();\n }\n };\n ResizeObserverController.unobserve = function (resizeObserver, target) {\n var detail = observerMap.get(resizeObserver);\n var index = getObservationIndex(detail.observationTargets, target);\n var lastObservation = detail.observationTargets.length === 1;\n if (index >= 0) {\n lastObservation && resizeObservers.splice(resizeObservers.indexOf(detail), 1);\n detail.observationTargets.splice(index, 1);\n updateCount(-1);\n }\n };\n ResizeObserverController.disconnect = function (resizeObserver) {\n var _this = this;\n var detail = observerMap.get(resizeObserver);\n detail.observationTargets.slice().forEach(function (ot) { return _this.unobserve(resizeObserver, ot.target); });\n detail.activeTargets.splice(0, detail.activeTargets.length);\n };\n return ResizeObserverController;\n}());\nexport { ResizeObserverController };\n","import { ResizeObserverController } from './ResizeObserverController';\nimport { isElement } from './utils/element';\nvar ResizeObserver = (function () {\n function ResizeObserver(callback) {\n if (arguments.length === 0) {\n throw new TypeError(\"Failed to construct 'ResizeObserver': 1 argument required, but only 0 present.\");\n }\n if (typeof callback !== 'function') {\n throw new TypeError(\"Failed to construct 'ResizeObserver': The callback provided as parameter 1 is not a function.\");\n }\n ResizeObserverController.connect(this, callback);\n }\n ResizeObserver.prototype.observe = function (target, options) {\n if (arguments.length === 0) {\n throw new TypeError(\"Failed to execute 'observe' on 'ResizeObserver': 1 argument required, but only 0 present.\");\n }\n if (!isElement(target)) {\n throw new TypeError(\"Failed to execute 'observe' on 'ResizeObserver': parameter 1 is not of type 'Element\");\n }\n ResizeObserverController.observe(this, target, options);\n };\n ResizeObserver.prototype.unobserve = function (target) {\n if (arguments.length === 0) {\n throw new TypeError(\"Failed to execute 'unobserve' on 'ResizeObserver': 1 argument required, but only 0 present.\");\n }\n if (!isElement(target)) {\n throw new TypeError(\"Failed to execute 'unobserve' on 'ResizeObserver': parameter 1 is not of type 'Element\");\n }\n ResizeObserverController.unobserve(this, target);\n };\n ResizeObserver.prototype.disconnect = function () {\n ResizeObserverController.disconnect(this);\n };\n ResizeObserver.toString = function () {\n return 'function ResizeObserver () { [polyfill code] }';\n };\n return ResizeObserver;\n}());\nexport { ResizeObserver };\n","import { type MaybeRef, getCurrentScope, onScopeDispose, unref, watch } from 'vue'\n\nimport { isClient, noop } from '@vexip-ui/utils'\nimport { ResizeObserver } from '@juggle/resize-observer'\n\nexport interface ResizeInfo extends ResizeObserverEntry {\n offsetWidth: number,\n offsetHeight: number,\n width: number,\n height: number\n}\n\nexport type ResizeHandler = (entry: ResizeInfo) => any\n\nexport interface UseResizeOptions {\n /**\n * 作用的目标元素的 Ref\n */\n target?: MaybeRef<HTMLElement | null | undefined>,\n onResize?: ResizeHandler\n}\n\nconst handlerMap = new WeakMap<Element, ResizeHandler>()\n\nfunction handleResize(entries: ResizeObserverEntry[]) {\n for (let i = 0, len = entries.length; i < len; ++i) {\n const entry = entries[i]\n const handler = handlerMap.get(entry.target)\n\n if (typeof handler === 'function') {\n const { inlineSize, blockSize } = entry.borderBoxSize?.[0] ?? {}\n const { offsetWidth, offsetHeight } = entry.target as HTMLElement\n\n handler(\n Object.assign(entry, {\n offsetWidth,\n offsetHeight,\n width: inlineSize ?? offsetWidth,\n height: blockSize ?? offsetHeight,\n }),\n )\n }\n }\n}\n\nconst resizeObserver = new (isClient ? window.ResizeObserver || ResizeObserver : ResizeObserver)(\n handleResize,\n)\n\nexport function observeResize(el: Element, handler: ResizeHandler) {\n handlerMap.set(el, handler)\n resizeObserver.observe(el)\n}\n\nexport function unobserveResize(el: Element) {\n if (handlerMap.has(el)) {\n resizeObserver.unobserve(el)\n handlerMap.delete(el)\n }\n}\n\nexport function useResize(options: UseResizeOptions = {}) {\n let remove = noop\n\n const stopWatch = watch(\n () => unref(options.target),\n el => {\n remove()\n\n if (!el || typeof options.onResize !== 'function') {\n return\n }\n\n observeResize(el, options.onResize)\n\n remove = () => {\n unobserveResize(el)\n remove = noop\n }\n },\n { immediate: true },\n )\n\n const unobserve = () => {\n stopWatch()\n remove()\n }\n\n getCurrentScope() && onScopeDispose(unobserve)\n\n return {\n /**\n * @deprecated Will be removed in next major version, please directly use `observeResize` from imports.\n */\n observeResize,\n /**\n * @deprecated Will be removed in next major version, please directly use `unobserveResize` from imports.\n */\n unobserveResize,\n unobserve,\n }\n}\n","import { computed, ref } from 'vue'\n\nimport { isClient } from '@vexip-ui/utils'\nimport { observeResize } from './resize'\n\nimport type { Ref } from 'vue'\n\nconst rtl = ref(false)\nconst computedRtl: Ref<boolean> = computed(() => rtl.value)\n\nconst elId = '__rtl_observer__'\n\nexport function useRtl() {\n if (isClient && !document.querySelector(`#${elId}`)) {\n initObserver()\n }\n\n return { isRtl: computedRtl }\n}\n\nfunction initObserver() {\n if (!isClient) return\n\n const style = document.createElement('style')\n const content = `#${elId} { width: 1px } html.rtl #${elId}, html[dir='rtl'] #${elId} { width: 2px }`\n\n style.textContent = content\n document.head.appendChild(style)\n\n const observer = document.createElement('div')\n\n observer.id = elId\n observer.role = 'none'\n observer.style.cssText =\n 'position: fixed; top -10px; left: -10px; height: 1px; visibility: hidden;'\n\n observeResize(observer, () => {\n if (!isClient) return\n\n rtl.value =\n document.documentElement.classList.contains('rtl') ||\n document.documentElement.getAttribute('dir') === 'rtl'\n })\n\n document.body.appendChild(observer)\n}\n","import { onMounted, ref, shallowRef, unref, watch, watchEffect } from 'vue'\n\nimport {\n arrow,\n autoUpdate,\n computePosition,\n flip,\n hide,\n offset,\n platform,\n shift,\n} from '@floating-ui/dom'\nimport { useRtl } from './rtl'\nimport { isClient } from '@vexip-ui/utils'\n\nimport type { MaybeRef, Ref } from 'vue'\nimport type {\n ComputePositionConfig,\n Middleware,\n OffsetOptions,\n Placement,\n ShiftOptions,\n VirtualElement,\n} from '@floating-ui/dom'\nimport type { TransferNode } from '@vexip-ui/utils'\n\nexport interface UsePopperOptions {\n /**\n * popper 元素出现的位置\n */\n placement: MaybeRef<Placement>,\n /**\n * popper 元素需要迁移至的目标选择器,为 true 时会迁移至 body\n */\n transfer?: MaybeRef<boolean | string>,\n /**\n * 设置是否为从右向左的阅读方向\n */\n isRtl?: MaybeRef<boolean>,\n /**\n * 包围元素,用于判断 clickoutside 事件\n *\n * 即使 popper 元素迁移至 wrapper 元素外部,点击 popper 元素时仍认为处于 wrapper 元素内部\n */\n wrapper?: Ref<HTMLElement | null | undefined>,\n /**\n * 设置 popper 元素为否需要 drop,此时 transform-origin 会自动调整\n */\n isDrop?: MaybeRef<boolean>,\n /**\n * 参考元素,popper 元素的位置计算依据\n */\n reference?: Ref<HTMLElement | VirtualElement | null | undefined>,\n /**\n * popper 元素\n */\n popper?: Ref<HTMLElement | null | undefined>,\n /**\n * arrow 元素\n */\n arrow?: Ref<HTMLElement | null | undefined>,\n /**\n * popper 元素的偏移量,可传入一个回调函数\n */\n offset?: MaybeRef<number[] | OffsetOptions>,\n /**\n * popper 元素是否限制在窗口内\n */\n shift?: MaybeRef<boolean | ShiftOptions>,\n /**\n * 设置是否自动更新 popper 元素\n *\n * @default false\n */\n autoUpdate?: boolean\n}\n\nexport type { Placement, VirtualElement }\n\nexport const placementWhileList = Object.freeze<Placement[]>([\n 'top',\n 'top-start',\n 'top-end',\n 'bottom',\n 'bottom-start',\n 'bottom-end',\n 'left',\n 'left-start',\n 'left-end',\n 'right',\n 'right-start',\n 'right-end',\n])\n\nexport function usePopper(initOptions: UsePopperOptions) {\n const { transfer, wrapper, isDrop = false } = initOptions\n\n const reference: Ref<HTMLElement | null | undefined> =\n (initOptions.reference as any) ?? shallowRef(null)\n const popper: Ref<HTMLElement | null | undefined> = initOptions.popper ?? shallowRef(null)\n const arrowRef: Ref<HTMLElement | null | undefined> = initOptions.arrow ?? shallowRef(null)\n\n const placement = ref(unref(initOptions.placement))\n const transferTo = ref('')\n const isRtl = initOptions.isRtl ?? useRtl().isRtl\n\n if (wrapper) {\n watchEffect(() => {\n const wrapperEl = unref(wrapper)\n const popperEl = unref(popper)\n\n if (wrapperEl) {\n ;(wrapperEl as TransferNode).__transferElement = popperEl\n }\n })\n }\n\n if (transfer != null) {\n watch(\n () => unref(transfer),\n value => {\n setTransferTo(value)\n updatePopper()\n },\n )\n\n setTransferTo(unref(transfer))\n }\n\n onMounted(() => {\n requestAnimationFrame(() => {\n watchEffect(updatePopperInternal)\n })\n })\n\n let cleanup: (() => void) | undefined\n\n async function updatePopperInternal() {\n if (!isClient) return\n\n cleanup?.()\n\n const referenceEl = unref(reference)\n const popperEl = unref(popper)\n\n if (!referenceEl || !popperEl) return\n\n const arrowEl = unref(arrowRef)\n\n const middleware: Middleware[] = [flip()]\n\n if (isDrop) {\n middleware.push({\n name: 'origin',\n fn({ placement, elements }) {\n const origin = setPopperDropOrigin(placement)\n\n if (origin) {\n elements.floating.style.transformOrigin = origin\n }\n\n return {}\n },\n })\n }\n\n if (initOptions.offset) {\n let offsetOptions = unref(initOptions.offset)\n\n if (Array.isArray(offsetOptions)) {\n offsetOptions = {\n mainAxis: offsetOptions[1],\n crossAxis: offsetOptions[0],\n }\n }\n\n middleware.push(offset(offsetOptions))\n }\n\n if (initOptions.shift) {\n let shiftOptions = unref(initOptions.shift)\n\n if (typeof shiftOptions === 'boolean') {\n shiftOptions = {}\n }\n\n middleware.push(shift(shiftOptions))\n }\n\n if (arrowEl) {\n middleware.push(arrow({ element: arrowEl }))\n }\n\n middleware.push(hide({ strategy: 'escaped' }))\n\n const rtl = unref(isRtl) || false\n const options: ComputePositionConfig = {\n middleware,\n placement: unref(initOptions.placement),\n platform: {\n ...platform,\n isRTL: async () => rtl,\n },\n }\n\n const update = async () => {\n const {\n x,\n y,\n placement: activePlacement,\n strategy,\n middlewareData,\n } = await computePosition(referenceEl, popperEl, options)\n\n if (unref(reference) !== referenceEl) {\n if (unref(popper) === popperEl) {\n Object.assign(popperEl.style, {\n position: '',\n top: '',\n left: '',\n })\n }\n\n return\n }\n\n const style: Partial<CSSStyleDeclaration> = {\n position: strategy,\n top: `${y}px`,\n left: `${x}px`,\n }\n\n // if (middlewareData.hide?.escaped) {\n // style.visibility = 'hidden'\n // } else {\n // style.visibility = ''\n // }\n\n if (arrowEl) {\n if (middlewareData.arrow) {\n const { x, y } = middlewareData.arrow\n\n Object.assign(arrowEl.style, {\n top: y != null ? `${y}px` : '',\n left: x != null ? `${x}px` : '',\n })\n } else {\n Object.assign(arrowEl.style, { top: '', left: '' })\n }\n }\n\n Object.assign(popperEl.style, style)\n popperEl.dataset.popperPlacement = activePlacement\n placement.value = activePlacement\n }\n\n if (initOptions.autoUpdate) {\n cleanup = autoUpdate(referenceEl, popperEl, update)\n }\n\n await update()\n }\n\n const updatePopper = () => {\n return new Promise<void>(resolve => {\n requestAnimationFrame(() => {\n updatePopperInternal().then(resolve)\n })\n })\n }\n\n function setTransferTo(value: boolean | string) {\n transferTo.value = typeof value === 'boolean' ? (value ? 'body' : '') : value\n }\n\n // function normalizePlacement(placement: Placement, rtl: boolean) {\n // if (!rtl) return placement\n\n // let [start, end] = placement.split('-')\n\n // if (start === 'left' || start === 'right') {\n // start = start === 'left' ? 'right' : 'left'\n // } else {\n // if (!end) return placement\n\n // end = end === 'start' ? 'end' : 'start'\n // }\n\n // return `${start}-${end}` as Placement\n // }\n\n function setPopperDropOrigin(placement: Placement) {\n if (placement !== 'left' && placement !== 'right') {\n const [start, end] = placement.split('-')\n\n return start === 'bottom' || (start !== 'top' && end === 'start')\n ? 'center top'\n : 'center bottom'\n }\n }\n\n return {\n wrapper,\n reference,\n popper,\n placement,\n transferTo,\n updatePopper,\n }\n}\n","import { reactive, ref, watch } from 'vue'\n\nimport { isClient } from '@vexip-ui/utils'\nimport { observeResize } from './resize'\n\nimport type { Ref } from 'vue'\nimport type { MaybeElement } from './shared/types'\n\nexport interface InitThemeOptions {\n name: string,\n rootClass?: string,\n varsClass?: string\n}\n\nconst styleId = '__theme_style__'\nconst elClass = '__theme_observer__'\n\nconst elCache = new WeakMap<Element, Element>()\n\nexport function useTheme(wrapper?: MaybeElement) {\n const theme = ref<string>()\n\n if (isClient) {\n wrapper = wrapper || document.body\n\n let observer = elCache.get(wrapper)\n\n if (!observer) {\n observer = createObserver(theme)!\n wrapper.appendChild(observer)\n elCache.set(wrapper, observer)\n }\n }\n\n return { theme }\n}\n\nconst activeThemes = reactive(new Map<string, string[]>())\nconst themeWidths = new Map<number, string>()\n\nwatch(activeThemes, () => {\n if (!isClient) return\n\n themeWidths.clear()\n\n const prevStyle = document.head.querySelector(`#${styleId}`)\n\n if (prevStyle) {\n document.head.removeChild(prevStyle)\n }\n\n const style = document.createElement('style')\n\n let content = `.${elClass} { width: 1px }`\n let width = 1\n\n for (const [name, [rootClass, varsClass]] of activeThemes.entries()) {\n content += ` html.${rootClass} .${elClass}, .${varsClass} .${elClass} { width: ${++width}px }`\n themeWidths.set(width, name)\n }\n\n style.textContent = content\n style.id = styleId\n document.head.appendChild(style)\n})\n\nexport function addActiveThemes(themes: (string | InitThemeOptions)[]) {\n for (const theme of themes) {\n const {\n name,\n rootClass = name,\n varsClass = `vxp-theme-vars-${rootClass}`,\n } = typeof theme === 'string' ? ({ name: theme } as InitThemeOptions) : theme\n\n activeThemes.set(name, [rootClass, varsClass])\n }\n}\n\nexport function setActiveThemes(themes: (string | InitThemeOptions)[]) {\n activeThemes.clear()\n addActiveThemes(themes)\n}\n\nlet idCount = 0\n\nfunction getElId() {\n return `__theme_observer_${idCount++}__`\n}\n\nfunction createObserver(theme: Ref<string | undefined>) {\n if (!isClient) return\n\n const observer = document.createElement('div')\n\n observer.id = getElId()\n observer.className = elClass\n observer.role = 'none'\n observer.style.cssText =\n 'position: fixed; top -10px; left: -10px; height: 1px; visibility: hidden;'\n\n observeResize(observer, entry => {\n if (!isClient) return\n\n const width = entry.borderBoxSize?.[0].inlineSize ?? entry.contentRect.width\n\n theme.value = themeWidths.get(width)\n })\n\n return observer\n}\n","import { onScopeDispose } from 'vue'\n\n/**\n * 获取用于记录 `setTimeout` 返回值的对象,记录的定时器会在作用域消除时自动清理\n */\nexport function useSetTimeout() {\n const timer: Record<string, any> = {}\n\n onScopeDispose(() => {\n Object.keys(timer).forEach(key => {\n clearTimeout(timer[key])\n })\n })\n\n return { timer }\n}\n\n/**\n * 获取用于记录 `setInterval` 返回值的对象,记录的定时器会在作用域消除时自动清理\n */\nexport function useSetInterval() {\n const timer: Record<string, any> = {}\n\n onScopeDispose(() => {\n Object.keys(timer).forEach(key => {\n clearInterval(timer[key])\n })\n })\n\n return { timer }\n}\n\n/**\n * 获取用于记录 `requestAnimationFrame` 返回值的对象,记录的定时器会在作用域消除时自动清理\n */\nexport function useRaf() {\n const timer: Record<string, any> = {}\n\n onScopeDispose(() => {\n Object.keys(timer).forEach(key => {\n cancelAnimationFrame(timer[key])\n })\n })\n\n return { timer }\n}\n\n/**\n * 获取三个分别用于记录 `setTimeout`、`setInterval` 和 `requestAnimationFrame` 返回值的对象\n *\n * 记录在这些对象上的定时器将会在作用域消除时自动清理\n */\nexport function useTimerRecord() {\n const { timer: timeout } = useSetTimeout()\n const { timer: interval } = useSetInterval()\n const { timer: raf } = useRaf()\n\n return { timeout, interval, raf }\n}\n","import type { Ref } from 'vue'\n\nexport function useTriggerHandler(trigger: Ref<string>, currentVisible: Ref<boolean>, delay = 100) {\n let timer: ReturnType<typeof setTimeout>\n\n function handleTriggerEnter() {\n if (trigger.value === 'hover') {\n clearTimeout(timer)\n\n timer = setTimeout(() => {\n currentVisible.value = true\n }, delay)\n }\n }\n\n function handleTriggerLeave() {\n if (trigger.value === 'hover') {\n clearTimeout(timer)\n\n timer = setTimeout(() => {\n currentVisible.value = false\n }, delay)\n }\n }\n\n function handleTriggerClick() {\n if (trigger.value === 'click') {\n currentVisible.value = !currentVisible.value\n }\n }\n\n return {\n handleTriggerEnter,\n handleTriggerLeave,\n handleTriggerClick,\n }\n}\n","import { computed, onScopeDispose, ref, unref, watch } from 'vue'\n\nimport { createBITree, isDefined, nextFrameOnce, noop } from '@vexip-ui/utils'\nimport { isHiddenElement } from './display'\nimport { observeResize, unobserveResize } from './resize'\n\nimport type { MaybeRef } from 'vue'\n\ntype Key = number | string | symbol\ntype Data = Record<string, any>\ntype Behavior = ScrollToOptions['behavior']\n\nexport interface VirtualOptions<T extends Data> {\n /**\n * 虚拟滚动的元素\n */\n items: MaybeRef<T[]>,\n /**\n * 设置元素的最小高度\n */\n itemSize: MaybeRef<number>,\n /**\n * 设置元素是否为固定高度,固定高度时不处理 resize\n */\n itemFixed: MaybeRef<boolean>,\n /**\n * 元素的主键\n */\n idKey: MaybeRef<keyof T>,\n /**\n * 默认停留在的元素的主键,未实现\n */\n defaultKeyAt?: Key,\n /**\n * 设置前后的缓冲元素的个数\n */\n bufferSize?: MaybeRef<number>,\n /**\n * 虚拟滚动的包围元素\n */\n wrapper?: MaybeRef<HTMLElement | null | undefined>,\n /**\n * 是否自动观察 wrapper 缩放\n *\n * @default true\n */\n autoResize?: boolean\n}\n\nexport function useVirtual<T extends Data = Data>(options: VirtualOptions<T>) {\n const {\n items,\n itemSize,\n itemFixed,\n idKey,\n defaultKeyAt,\n bufferSize = ref(5),\n wrapper = ref(null),\n autoResize = true,\n } = options\n\n const indexMap = computed(() => {\n const itemList = unref(items)\n const length = itemList.length\n const keyField = unref(idKey)\n const map = new Map<Key, number>()\n\n for (let i = 0; i < length; ++i) {\n map.set(itemList[i][keyField], i)\n }\n\n return map\n })\n const visibleHeight = ref(0)\n const heightDiffMap = new Map<Key, number>()\n const heightTree = computed(() => {\n const itemList = unref(items)\n const length = itemList.length\n const keyField = unref(idKey)\n const tree = createBITree(length, unref(itemSize))\n\n for (let i = 0; i < length; ++i) {\n const key = itemList[i][keyField]\n const heightDiff = heightDiffMap.get(key)\n\n if (heightDiff) {\n tree.add(i, heightDiff)\n }\n }\n\n return tree\n })\n const treeUpdateDep = ref(0)\n const scrollOffset = ref(0)\n const startIndex = computed(() => {\n return Math.max(\n heightTree.value.boundIndex(scrollOffset.value) - Math.max(unref(bufferSize), 0),\n 0,\n )\n })\n const visibleItems = computed(() => {\n if (!visibleHeight.value || visibleHeight.value < 0) return []\n\n const unrefItems = unref(items)\n const endIndex = Math.min(\n heightTree.value.boundIndex(scrollOffset.value + visibleHeight.value) +\n 1 +\n Math.max(unref(bufferSize), 0),\n unrefItems.length,\n )\n\n return unrefItems.slice(startIndex.value, endIndex)\n })\n const listStyle = computed(() => {\n // eslint-disable-next-line @typescript-eslint/no-unused-expressions\n treeUpdateDep.value\n\n const height = heightTree.value.sum()\n const fixed = unref(itemFixed)\n\n return {\n height: fixed ? `${height}px` : undefined,\n minHeight: fixed ? undefined : `${height}px`,\n boxSizing: 'content-box',\n } as const\n })\n const itemsStyle = computed(() => {\n // eslint-disable-next-line @typescript-eslint/no-unused-expressions\n treeUpdateDep.value\n\n return {\n transform: `translate3d(0, ${heightTree.value.sum(startIndex.value)}px, 0)`,\n }\n })\n\n watch(\n () => unref(wrapper),\n el => {\n if (el && isDefined(defaultKeyAt)) {\n requestAnimationFrame(() => {\n requestAnimationFrame(() => {\n scrollToKey(defaultKeyAt)\n })\n })\n }\n },\n { immediate: true, flush: 'post' },\n )\n\n if (autoResize) {\n let unobserve = noop\n\n const stopWatch = watch(\n () => [unref(wrapper), autoResize] as const,\n ([el]) => {\n unobserve()\n\n if (!el) return\n\n observeResize(el, handleResize)\n\n unobserve = () => {\n unobserveResize(el)\n unobserve = noop\n }\n\n if (isDefined(defaultKeyAt)) {\n scrollToKey(defaultKeyAt)\n }\n },\n { immediate: true, flush: 'post' },\n )\n\n onScopeDispose(() => {\n stopWatch()\n unobserve()\n })\n }\n\n function syncScrollOffset() {\n const wrapperEl = unref(wrapper)\n\n if (wrapperEl) {\n scrollOffset.value = wrapperEl.scrollTop\n }\n }\n\n function handleScroll() {\n nextFrameOnce(syncScrollOffset)\n }\n\n function handleResize(entry: ResizeObserverEntry) {\n if (\n isHiddenElement(entry.target as HTMLElement) ||\n entry.contentRect.height === visibleHeight.value\n ) {\n return\n }\n\n visibleHeight.value = entry.contentRect.height\n }\n\n function handleItemResize(key: Key, entry: ResizeObserverEntry) {\n if (unref(itemFixed)) return\n\n const index = indexMap.value.get(key)!\n const tree = heightTree.value\n const prevHeight = tree.get(index)\n const height = entry.borderBoxSize?.[0]?.blockSize ?? entry.contentRect.height\n\n if (height === prevHeight) return\n\n if (isHiddenElement(entry.target as HTMLElement)) {\n if (prevHeight) {\n tree.add(index, -prevHeight)\n treeUpdateDep.value++\n }\n\n return\n }\n\n const diff = height - unref(itemSize)\n const delta = height - prevHeight\n\n if (diff) {\n heightDiffMap.set(key, diff)\n } else {\n heightDiffMap.delete(key)\n }\n\n if (!delta) return\n\n tree.add(index, delta)\n treeUpdateDep.value++\n\n const wrapperEl = unref(wrapper)\n\n if (wrapperEl) {\n const prevTop = tree.sum(index)\n\n if (wrapperEl.scrollTop > prevTop) {\n wrapperEl.scrollBy(0, delta)\n }\n\n scrollOffset.value = wrapperEl.scrollTop\n }\n }\n\n function scrollTo(top: number, behavior?: Behavior) {\n const wrapperEl = unref(wrapper)\n\n if (wrapperEl) {\n wrapperEl.scrollTo({\n behavior,\n top,\n left: 0,\n })\n }\n }\n\n function scrollBy(delta: number, behavior?: Behavior) {\n const wrapperEl = unref(wrapper)\n\n if (wrapperEl) {\n wrapperEl.scrollBy({\n behavior,\n top: delta,\n left: 0,\n })\n }\n }\n\n function scrollToKey(key: Key, behavior?: Behavior) {\n const index = indexMap.value.get(key)\n\n if (index != null) {\n scrollToIndex(index, behavior)\n }\n }\n\n function scrollToIndex(index: number, behavior?: Behavior) {\n const wrapperEl = unref(wrapper)\n\n if (wrapperEl) {\n wrapperEl.scrollTo({\n behavior,\n top: heightTree.value.sum(index),\n left: 0,\n })\n }\n }\n\n function ensureIndexInView(index: number, behavior?: Behavior) {\n const wrapperEl = unref(wrapper)\n\n if (!wrapperEl) return\n\n const tree = heightTree.value\n const viewTop = wrapperEl.scrollTop\n const top = tree.sum(index)\n\n if (top < viewTop) {\n scrollToIndex(index, behavior)\n return\n }\n\n const viewHeight = wrapperEl.offsetHeight\n const viewBottom = viewTop + viewHeight\n const bottom = tree.sum(index + 1)\n\n if (bottom > viewBottom) {\n scrollTo(bottom - viewHeight, behavior)\n }\n }\n\n function ensureKeyInView(key: Key, behavior?: Behavior) {\n const index = indexMap.value.get(key)\n\n if (index != null) {\n ensureIndexInView(index, behavior)\n }\n }\n\n return {\n wrapper,\n indexMap,\n heightTree,\n startIndex,\n scrollOffset,\n visibleItems,\n listStyle,\n itemsStyle,\n handleScroll,\n handleResize,\n handleItemResize,\n scrollTo,\n scrollBy,\n scrollToKey,\n scrollToIndex,\n ensureIndexInView,\n ensureKeyInView,\n }\n}\n"],"names":["y","Ot","M","t","it","W","bt","Jn","e","f","u","Me","ve","tn","Pr","Br","ht","eo","Jt","D","te","gn","io","fo","useListener","target","event","listener","options","noop","normalizedOptions","computed","remove","stopWatch","watch","unref","el","disabled","opts","handler","stop","getCurrentScope","onScopeDispose","CLICK_OUTSIDE","elements","isClient","CLICK_TYPE","path","dispatchEvent","useClickOutside","ref","useDisplay","displayInit","element","observer","onMounted","nextTick","hiddenParentNode","queryOutsideHiddenElement","onBeforeUnmount","parentElement","isHiddenElement","createSlotRender","slots","names","fallback","name","params","renderSlot","vnodes","ensureArray","flatVNodes","children","result","loop","vnode","isVNode","Comment","createTextVNode","Fragment","unrefElement","plain","proxyExposed","_","key","_a","_b","_c","watchPauseable","args","active","handle","pause","resume","callbackArgs","resolve","reject","readonly","pickToRefs","reactive","keys","toRef","functionsMap","map","m","supported","notSupportedResult","states","subscriptions","ELEMENT","EVENT","state","full","useFullScreen","targetRef","isRef","REQUEST","EXIT","old","exit","enter","force","toggle","useHover","wrapper","isHover","enterWrapper","leaveWrapper","observerCache","spaceRE","unitRE","useIntersection","root","threshold","margin","normalizeMargin","thresholdCache","marginCache","handleIntersect","handlers","disconnect","parts","i","part","toNumber","entries","len","entry","useManualRef","updateSet","manualRef","value","customRef","track","trigger","origin","update","newValue","triggerUpdate","defaultAliasMap","separatorRE","splitRE","internalProps","useModifier","autoReset","capture","passive","strictTarget","onKeyDown","onKeyUp","aliasMap","activeKeys","metaDeps","modifier","resetAll","setModifier","updateModifier","modifierProxy","prop","receiver","useMounted","wait","isMounted","mount","disableEvent","useMoving","x","lazy","stopMouse","stopTouch","moving","internalState","current","record","throttleMove","throttle","updateState","start","move","end","clientX","clientY","xStart","yStart","clientXStart","clientYStart","deltaX","deltaY","registered","pageX","pageY","throttleHandler","register","unregister","usePointer","sides","min","max","round","floor","createCoords","v","oppositeSideMap","oppositeAlignmentMap","clamp","evaluate","param","getSide","placement","getAlignment","getOppositeAxis","axis","getAxisLength","getSideAxis","getAlignmentAxis","getAlignmentSides","rects","rtl","alignment","alignmentAxis","length","mainAlignmentSide","getOppositePlacement","getExpandedPlacements","oppositePlacement","getOppositeAlignmentPlacement","getSideList","side","isStart","lr","rl","tb","getOppositeAxisPlacements","flipAlignment","direction","list","expandPaddingObject","padding","getPaddingObject","rectToClientRect","rect","width","height","computeCoordsFromPlacement","_ref","reference","floating","sideAxis","alignLength","isVertical","commonX","commonY","commonAlign","coords","computePosition","config","strategy","middleware","platform","validMiddleware","statefulPlacement","middlewareData","resetCount","fn","nextX","nextY","data","reset","detectOverflow","_await$platform$isEle","boundary","rootBoundary","elementContext","altBoundary","paddingObject","clippingClientRect","offsetParent","offsetScale","elementClientRect","arrow","arrowDimensions","isYAxis","minProp","maxProp","clientProp","endDiff","startDiff","arrowOffsetParent","clientSize","centerToReference","largestPossiblePadding","minPadding","maxPadding","min$1","center","offset","shouldAddOffset","alignmentOffset","flip","_middlewareData$arrow","_middlewareData$flip","initialPlacement","checkMainAxis","checkCrossAxis","specifiedFallbackPlacements","fallbackStrategy","fallbackAxisSideDirection","detectOverflowOptions","initialSideAxis","isBasePlacement","fallbackPlacements","hasFallbackAxisSideDirection","placements","overflow","overflows","overflowsData","_middlewareData$flip2","_overflowsData$filter","nextIndex","nextPlacement","_overflowsData$","ignoreCrossAxisOverflow","hasInitialMainAxisOverflow","resetPlacement","d","a","b","_overflowsData$filter2","currentSideAxis","acc","getSideOffsets","isAnySideFullyClipped","hide","offsets","convertValueToCoords","mainAxisMulti","crossAxisMulti","rawValue","mainAxis","crossAxis","_middlewareData$offse","diffCoords","shift","limiter","mainAxisCoord","crossAxisCoord","minSide","maxSide","limitedCoords","hasWindow","getNodeName","node","isNode","getWindow","_node$ownerDocument","getDocumentElement","isElement","isHTMLElement","isShadowRoot","isOverflowElement","overflowX","overflowY","display","getComputedStyle","isTableElement","isTopLayer","selector","isContainingBlock","elementOrCss","webkit","isWebKit","css","getContainingBlock","currentNode","getParentNode","isLastTraversableNode","getNodeScroll","getNearestOverflowAncestor","parentNode","getOverflowAncestors","traverseIframes","_node$ownerDocument2","scrollableAncestor","isBody","win","frameElement","getFrameElement","getCssDimensions","hasOffset","offsetWidth","offsetHeight","shouldFallback","unwrapElement","getScale","domElement","$","noOffsets","getVisualOffsets","shouldAddVisualOffsets","isFixed","floatingOffsetParent","getBoundingClientRect","includeScale","isFixedStrategy","clientRect","scale","visualOffsets","offsetWin","currentWin","currentIFrame","iframeScale","iframeRect","left","top","getWindowScrollBarX","leftScroll","getHTMLOffset","documentElement","scroll","ignoreScrollbarX","htmlRect","convertOffsetParentRelativeRectToViewportRelativeRect","topLayer","isOffsetParentAnElement","offsetRect","htmlOffset","getClientRects","getDocumentRect","html","body","getViewportRect","visualViewport","visualViewportBased","getInnerBoundingClientRect","getClientRectFromClippingAncestor","clippingAncestor","hasFixedPositionAncestor","stopNode","getClippingElementAncestors","cache","cachedResult","currentContainingBlockComputedStyle","elementIsFixed","computedStyle","currentNodeIsContaining","ancestor","getClippingRect","clippingAncestors","firstClippingAncestor","clippingRect","accRect","getDimensions","getRectRelativeToOffsetParent","setLeftRTLScrollbarOffset","isStaticPositioned","getTrueOffsetParent","polyfill","rawOffsetParent","getOffsetParent","svgOffsetParent","getElementRects","getOffsetParentFn","getDimensionsFn","floatingDimensions","isRTL","rectsAreEqual","observeMove","onMove","timeoutId","cleanup","_io","refresh","skip","elementRectForRootMargin","insetTop","insetRight","insetBottom","insetLeft","isFirstUpdate","handleObserve","ratio","autoUpdate","ancestorScroll","ancestorResize","elementResize","layoutShift","animationFrame","referenceEl","ancestors","cleanupIo","reobserveFrame","resizeObserver","firstEntry","_resizeObserver","frameId","prevRefRect","frameLoop","nextRefRect","_resizeObserver2","offset$1","shift$1","flip$1","hide$1","arrow$1","mergedOptions","platformWithCache","computePosition$1","resizeObservers","hasActiveObservations","ro","hasSkippedObservations","msg","deliverResizeLoopError","ResizeObserverBoxOptions","freeze","obj","ResizeObserverSize","inlineSize","blockSize","DOMRectReadOnly","right","bottom","rectangle","isSVG","isHidden","scope","isReplacedElement","global","scrollRegexp","verticalRegexp","IE","parseDimension","pixel","size","switchSizes","zeroBoxes","calculateBoxSizes","forceRecalculation","cs","svg","removePadding","canScrollVertically","canScrollHorizontally","paddingTop","paddingRight","paddingBottom","paddingLeft","borderTop","borderRight","borderBottom","borderLeft","horizontalPadding","verticalPadding","horizontalBorderArea","verticalBorderArea","horizontalScrollbarThickness","verticalScrollbarThickness","widthReduction","heightReduction","contentWidth","contentHeight","borderBoxWidth","borderBoxHeight","boxes","calculateBoxSize","observedBox","borderBoxSize","contentBoxSize","devicePixelContentBoxSize","ResizeObserverEntry","calculateDepthForNode","depth","parent","broadcastActiveObservations","shallowestDepth","callbacks","ot","targetDepth","_i","callbacks_1","callback","gatherActiveObservationsAtDepth","process","notify","cb","queueMicroTask","toggle_1","el_1","queueResizeObserver","watching","isWatching","CATCH_PERIOD","observerConfig","events","time","timeout","scheduled","Scheduler","_this","until","elementsHaveResized","scheduler","updateCount","n","skipNotifyOnElement","ResizeObservation","ResizeObserverDetail","observerMap","getObservationIndex","observationTargets","ResizeObserverController","detail","firstObservation","index","lastObservation","ResizeObserver","handlerMap","handleResize","observeResize","unobserveResize","useResize","unobserve","computedRtl","elId","useRtl","initObserver","style","content","placementWhileList","usePopper","initOptions","transfer","isDrop","shallowRef","popper","arrowRef","transferTo","isRtl","watchEffect","wrapperEl","popperEl","setTransferTo","updatePopper","updatePopperInternal","arrowEl","setPopperDropOrigin","offsetOptions","shiftOptions","activePlacement","styleId","elClass","elCache","useTheme","theme","createObserver","activeThemes","themeWidths","prevStyle","rootClass","varsClass","addActiveThemes","themes","setActiveThemes","idCount","getElId","useSetTimeout","timer","useSetInterval","useRaf","useTimerRecord","interval","raf","useTriggerHandler","currentVisible","delay","handleTriggerEnter","handleTriggerLeave","handleTriggerClick","useVirtual","items","itemSize","itemFixed","idKey","defaultKeyAt","bufferSize","autoResize","indexMap","itemList","keyField","visibleHeight","heightDiffMap","heightTree","tree","createBITree","heightDiff","treeUpdateDep","scrollOffset","startIndex","visibleItems","unrefItems","endIndex","listStyle","fixed","itemsStyle","isDefined","scrollToKey","syncScrollOffset","handleScroll","nextFrameOnce","handleItemResize","prevHeight","diff","delta","prevTop","scrollTo","behavior","scrollBy","scrollToIndex","ensureIndexInView","viewTop","viewHeight","viewBottom","ensureKeyInView"],"mappings":"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","x_google_ignoreList":[13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39]} |