UNPKG

grid-layout-plus-no-pnpm

Version:

<p align="center"> <a href="https://grid-layout-plus.netlify.app/" target="_blank" rel="noopener noreferrer"> <img src="./docs/public/grid-layout-plus.svg" width="180" style="width: 120px;" /> </a> </p>

1 lines 529 kB
{"version":3,"file":"grid-layout-plus.mjs","sources":["../node_modules/.pnpm/@vexip-ui+utils@1.11.0/node_modules/@vexip-ui/utils/dist/index.mjs","../src/helpers/common.ts","../src/helpers/draggable.ts","../src/helpers/responsive.ts","../src/helpers/dom.ts","../node_modules/.pnpm/interactjs@1.10.17/node_modules/interactjs/dist/interact.min.js","../src/components/grid-item.vue","../node_modules/.pnpm/@vexip-ui+hooks@1.9.0_vue@3.2.47/node_modules/@vexip-ui/hooks/dist/index.mjs","../src/components/grid-layout.vue"],"sourcesContent":["import { isVNode as It, Comment as Lt, Fragment as Ut, createTextVNode as Bt } from \"vue\";\nconst C = typeof window < \"u\";\nvar gt;\nconst je = C && ((gt = window == null ? void 0 : window.navigator) == null ? void 0 : gt.userAgent) && /iP(ad|hone|od)/.test(window.navigator.userAgent), Yt = Object.prototype.toString, Pt = Object.prototype.hasOwnProperty;\nfunction H(t, e) {\n return Yt.call(t) === `[object ${e}]`;\n}\nfunction Ke(t, e) {\n return Pt.call(t, e);\n}\nfunction y(t) {\n return t != null;\n}\nfunction Qe(t) {\n return t == null;\n}\nfunction Ve(t) {\n return typeof t == \"number\";\n}\nfunction Xe(t) {\n return Number.isNaN(t);\n}\nfunction Ze(t) {\n return typeof t == \"string\";\n}\nfunction Je(t) {\n return typeof t == \"boolean\";\n}\nfunction tn(t) {\n return t === !0;\n}\nfunction en(t) {\n return t === !1;\n}\nfunction nn(t) {\n return typeof t == \"symbol\";\n}\nfunction rn(t) {\n return typeof t == \"bigint\";\n}\nfunction on(t) {\n return Array.isArray(t);\n}\nfunction U(t) {\n return H(t, \"Object\");\n}\nfunction sn(t) {\n return !!t && typeof t.then == \"function\" && typeof t.catch == \"function\";\n}\nfunction ht(t) {\n return typeof t == \"function\";\n}\nfunction cn(t) {\n return H(t, \"Set\");\n}\nfunction an(t) {\n return H(t, \"Map\");\n}\nfunction fn(t) {\n return H(t, \"Date\");\n}\nfunction un(t) {\n return H(t, \"RegExp\");\n}\nfunction ln(t) {\n return Array.isArray(t) || typeof t == \"string\" ? t.length === 0 : t instanceof Map || t instanceof Set ? t.size === 0 : U(t) ? Object.keys(t).length === 0 : !1;\n}\nfunction dn(t) {\n return C ? !!(t && \"nodeType\" in t) : !1;\n}\nfunction gn() {\n}\nfunction hn() {\n return !0;\n}\nfunction pn() {\n return !1;\n}\nfunction mn(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 bn(t) {\n return Object.prototype.toString.call(t).slice(8, -1);\n}\nfunction yn(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}\nconst Gt = \"[-\\\\+]?\\\\d+%?\", qt = \"[-\\\\+]?\\\\d*\\\\.\\\\d+%?\", w = `(?:${qt})|(?:${Gt})`, Wt = `[\\\\s|\\\\(]+(${w})[,|\\\\s]+(${w})[,|\\\\s]+(${w})\\\\s*\\\\)?`, I = `[\\\\s|\\\\(]+(${w})[,|\\\\s]+(${w})[,|\\\\s]+(${w})[,|\\\\s]+(${w})\\\\s*\\\\)?`, pt = new RegExp(`rgb${Wt}`), mt = new RegExp(`rgba${I}`), bt = new RegExp(`hsl${I}`), yt = new RegExp(`hsla${I}`), Mt = new RegExp(`hsv${I}`), St = new RegExp(`hsva${I}`), wt = /^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/, At = /^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/, Et = /^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/, Nt = /^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/, B = 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}), zt = Object.freeze(new Set(Object.keys(B)));\nfunction Mn(t) {\n return t = String(t).trim().toLowerCase(), t ? t === \"transparent\" || B[t] ? !0 : t === \"transparent\" || zt.has(t) || pt.test(t) || mt.test(t) || bt.test(t) || yt.test(t) || Mt.test(t) || St.test(t) || wt.test(t) || At.test(t) || Et.test(t) || Nt.test(t) : !1;\n}\nfunction vt(t) {\n if (t = t.toString().trim().toLowerCase(), t === \"transparent\")\n return { r: 0, g: 0, b: 0, a: 0, format: \"name\", toString: h };\n let e = !1;\n B[t] && (t = B[t], e = !0);\n let n;\n if (n = pt.exec(t)) {\n const { r, g: o, b: i } = T(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: h\n };\n }\n if (n = mt.exec(t)) {\n const { r, g: o, b: i } = T(n[1], n[2], n[3]);\n return {\n r: r * 255,\n g: o * 255,\n b: i * 255,\n a: F(n[4]),\n format: \"rgba\",\n toString: h\n };\n }\n if (n = bt.exec(t)) {\n const { h: r, s: o, l: i } = Y(n[0], n[1], n[3]);\n return { h: r * 360, s: o, l: i, format: \"hsl\", toString: G };\n }\n if (n = yt.exec(t)) {\n const { h: r, s: o, l: i } = Y(n[0], n[1], n[3]);\n return {\n h: r * 360,\n s: o,\n l: i,\n a: F(n[4]),\n format: \"hsla\",\n toString: G\n };\n }\n if (n = Mt.exec(t)) {\n const { h: r, s: o, v: i } = P(n[0], n[1], n[3]);\n return { h: r * 360, s: o, v: i, format: \"hsv\", toString: q };\n }\n if (n = St.exec(t)) {\n const { h: r, s: o, v: i } = P(n[0], n[1], n[3]);\n return {\n h: r * 360,\n s: o,\n v: i,\n a: F(n[4]),\n format: \"hsva\",\n toString: q\n };\n }\n return (n = wt.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: h\n } : (n = At.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: it(`${n[4]}${n[4]}`),\n format: e ? \"name\" : \"hex4\",\n toString: h\n } : (n = Et.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: h\n } : (n = Nt.exec(t)) ? {\n r: parseInt(n[1], 16),\n g: parseInt(n[2], 16),\n b: parseInt(n[3], 16),\n a: it(n[4]),\n format: e ? \"name\" : \"hex8\",\n toString: h\n } : null;\n}\nfunction Sn(t) {\n const { a: e, ...n } = N(t);\n delete n.format;\n const r = Ft(n.r, n.g, n.b), o = Tt(n.r, n.g, n.b), i = kt(n.r, n.g, n.b), s = $t(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 origin: t\n };\n}\nfunction N(t) {\n let e = { r: 0, g: 0, b: 0 }, n = 1, r;\n return typeof t == \"string\" ? r = vt(t) : r = t, r !== null && typeof r == \"object\" && (\"l\" in r ? e = jt(r.h, r.s, r.l) : \"v\" in r && (e = Kt(r.h, r.s, r.v)), r.a && (n = F(r.a), Number.isNaN(n) && (n = 1)), e = r), { ...e, a: n, format: \"rgba\", toString: h };\n}\nfunction Y(t, e, n) {\n return {\n h: p(t, 0, 360) / 360,\n s: p(k(e) ? $(e) : e, 0, 1),\n l: p(k(n) ? $(n) : n, 0, 1)\n };\n}\nfunction T(t, e, n) {\n return {\n r: p(t, 0, 255) / 255,\n g: p(e, 0, 255) / 255,\n b: p(n, 0, 255) / 255\n };\n}\nfunction P(t, e, n) {\n return {\n h: p(t, 0, 360) / 360,\n s: p(k(e) ? $(e) : e, 0, 1),\n v: p(k(n) ? $(n) : n, 0, 1)\n };\n}\nfunction F(t) {\n return p(k(t) ? $(t) : t, 0, 1);\n}\nfunction jt(t, e, n) {\n let r, o, i;\n if ({ h: t, s: e, l: n } = Y(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 = Q(c, s, t + 1 / 3), o = Q(c, s, t), i = Q(c, s, t - 1 / 3);\n }\n return r *= 255, o *= 255, i *= 255, { r, g: o, b: i, toString: h };\n}\nfunction Ft(t, e, n) {\n ({ r: t, g: e, b: n } = T(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: G };\n}\nfunction wn(t, e, n) {\n ({ h: t, s: e, l: n } = Y(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 An(t, e, n) {\n ({ h: t, s: e, v: n } = P(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: G };\n}\nfunction Kt(t, e, n) {\n ({ h: t, s: e, v: n } = P(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 u = [n, s, i, i, c, n][a], f = [c, n, n, s, i, i][a], d = [i, i, c, n, n, s][a];\n return u *= 255, f *= 255, d *= 255, { r: u, g: f, b: d, toString: h };\n}\nfunction Tt(t, e, n) {\n ({ r: t, g: e, b: n } = T(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 kt(t, e, n, r = !1) {\n ({ r: t, g: e, b: n } = T(t, e, n));\n const o = [\n A(Math.round(t * 255).toString(16)),\n A(Math.round(e * 255).toString(16)),\n A(Math.round(n * 255).toString(16))\n ];\n return r && E(o[0]) && E(o[1]) && E(o[2]) ? o[0].charAt(0) + o[1].charAt(0) + o[2].charAt(0) : \"#\" + o.join(\"\");\n}\nfunction $t(t, e, n, r, o = !1) {\n ({ r: t, g: e, b: n } = T(t, e, n));\n const i = [\n A(Math.round(t * 255).toString(16)),\n A(Math.round(e * 255).toString(16)),\n A(Math.round(n * 255).toString(16)),\n A(Qt(F(r)))\n ];\n return o && E(i[0]) && E(i[1]) && E(i[2]) && E(i[3]) ? i[0].charAt(0) + i[1].charAt(0) + i[2].charAt(0) + i[3].charAt(0) : \"#\" + i.join(\"\");\n}\nfunction En(t, e, n = 0.5) {\n if (!t && !e)\n return { r: 0, g: 0, b: 0, a: 1 };\n if (!t)\n return N(e);\n if (!e)\n return N(t);\n const r = N(t), o = N(e), i = p(n, 0, 1), s = i * 2 - 1, c = r.a - o.a, u = ((s * c === -1 ? s : (s + c) / (1 + s * c)) + 1) / 2, f = 1 - u;\n return {\n r: Math.round(r.r * u + o.r * f),\n g: Math.round(r.g * u + o.g * f),\n b: Math.round(r.b * u + o.b * f),\n a: Math.round(r.a * i + o.a * (1 - i)),\n format: \"rgba\",\n toString: h\n };\n}\nfunction Nn(t, e) {\n const n = N(t);\n return n.a = F(k(e) ? $(e) : e), n;\n}\nfunction Fn(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 ? $t(n, r, o, Math.random()) : kt(n, r, o);\n let i;\n return e === \"hsl\" ? i = Ft(n, r, o) : e === \"hsv\" ? i = Tt(n, r, o) : i = { r: n, g: r, b: o }, t && (i.a = Math.random()), i.toString();\n}\nfunction A(t) {\n return t.length === 1 ? `0${t}` : t.toString();\n}\nfunction E(t) {\n return t.charAt(0) === t.charAt(1);\n}\nfunction Qt(t) {\n return Math.round(parseFloat(t) * 255).toString(16);\n}\nfunction it(t) {\n return parseInt(t, 16) / 255;\n}\nfunction p(t, e, n) {\n return Math.max(e, Math.min(n, parseFloat(t)));\n}\nfunction Q(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 k(t) {\n return t.toString().trim().includes(\"%\");\n}\nfunction $(t) {\n const e = parseFloat(t) / 100;\n return Number.isNaN(e) ? 0 : e;\n}\nfunction h() {\n return y(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 G() {\n return y(this.a) && this.a >= 0 && this.a < 1 ? `hsla(${this.h}, ${this.s}, ${this.l}, ${this.a})` : `hsl(${this.h}, ${this.s}, ${this.l})`;\n}\nfunction q() {\n return y(this.a) && this.a >= 0 && this.a < 1 ? `hsva(${this.h}, ${this.s}, ${this.v}, ${this.a})` : `hsv(${this.h}, ${this.s}, ${this.v})`;\n}\nfunction st(t) {\n return t & -t;\n}\nfunction Tn(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 += st(c);\n }\n function o(c = t) {\n if (c <= 0)\n return 0;\n c > t && (c = t);\n let a = c * e;\n for (; c > 0; )\n a += n[c], c -= st(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, u = t;\n for (; u > a; ) {\n const f = Math.floor((a + u) / 2), d = o(f);\n if (d > c) {\n u = f;\n continue;\n } else if (d < c) {\n if (a === f)\n return o(a + 1) <= c ? a + 1 : a;\n a = f;\n } else\n return f;\n }\n return a;\n }\n return { add: r, sum: o, get: i, boundIndex: s };\n}\nfunction kn(t) {\n const e = parseFloat(t);\n return Number.isNaN(e) ? 0 : e;\n}\nfunction m(t) {\n return t < 10 ? `0${t}` : t.toString();\n}\nfunction $n(t, e = 3, n = \",\") {\n if (typeof t != \"number\" && (t = parseFloat(t)), Number.isNaN(t))\n 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 Vt(t, e) {\n if (e === 0)\n return Math.round(t);\n let n = String(t);\n const r = n.indexOf(\".\");\n if (r === -1)\n 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 _n(t, e, n) {\n return Vt(t * e, n);\n}\nfunction Rn(t, e) {\n if (e < 0 || e > 1)\n return Math.round(t);\n const n = Math.ceil(t);\n return t + e >= n ? n : Math.floor(t);\n}\nfunction On(t, e, n) {\n return Math.max(e, Math.min(n, parseFloat(t)));\n}\nconst Xt = Object.freeze([\n \"B\",\n \"KB\",\n \"MB\",\n \"GB\",\n \"TB\",\n \"AUTO\"\n]);\nfunction xn(t, e = \"AUTO\") {\n let n = e.toUpperCase();\n n = Xt.includes(n) ? n : \"AUTO\";\n let r;\n switch (n) {\n case \"AUTO\":\n r = 0;\n break;\n case \"KB\":\n r = 1;\n break;\n case \"MB\":\n r = 2;\n break;\n case \"GB\":\n r = 3;\n break;\n case \"TB\":\n r = 4;\n break;\n default:\n return t;\n }\n let o;\n if (r)\n o = t / 1024 ** r;\n else\n for (o = t; o > 1024 && !(r > 4); ++r)\n o = o / 1024;\n return o;\n}\nfunction M(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 _t(t, e = 15) {\n return +parseFloat(Number(t).toPrecision(e));\n}\nfunction W(t) {\n const e = String(t);\n if (!e.includes(\"e\"))\n return Number(e.replace(\".\", \"\"));\n const n = M(t);\n return n > 0 ? _t(Number(t) * 10 ** n) : Number(t);\n}\nfunction z(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 D = z((t, e) => {\n const n = W(t), r = W(e), o = M(t) + M(e);\n return n * r / 10 ** o;\n}), Dn = z((t, e) => {\n const n = 10 ** Math.max(M(t), M(e));\n return (D(t, n) + D(e, n)) / n;\n}), Cn = z((t, e) => {\n const n = 10 ** Math.max(M(t), M(e));\n return (D(t, n) - D(e, n)) / n;\n}), Hn = z((t, e) => {\n const n = W(t), r = W(e);\n return D(n / r, _t(10 ** (M(e) - M(t))));\n}), R = 1e3, L = 60, Zt = L * R, v = 60, Jt = v * L, te = Jt * R, Rt = 24, ee = Rt * v, ne = ee * L, re = ne * R, J = 7, oe = J * Rt, ie = oe * v, se = ie * L, ce = se * R, Ot = 3, ae = 4, fe = ae * Ot, ue = {\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 ? m(n) : n;\n },\n d(t, e) {\n const n = t.getDate();\n return e.length === 2 ? m(n) : n;\n },\n H(t, e) {\n const n = t.getHours();\n return e.length === 2 ? m(n) : n;\n },\n m(t, e) {\n const n = t.getMinutes();\n return e.length === 2 ? m(n) : n;\n },\n s(t, e) {\n const n = t.getSeconds();\n return e.length === 2 ? m(n) : n;\n },\n q(t, e) {\n const n = Math.ceil((t.getMonth() + 1) / 3);\n return e.length === 2 ? m(n) : n;\n }\n}, le = /[yMdHmsq](\\w)*|./g, de = /'(.+?)'/g;\nfunction l(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 In(t, e = \"yyyy-MM-dd HH:mm:ss\") {\n t = l(t);\n const n = e.match(le), 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 = ue[c];\n a ? i += a(t, s) : i += s, ++o;\n }\n return i.replace(de, \"$1\");\n}\nfunction Ln(t) {\n return t = l(t), `${m(t.getHours())}:${m(t.getMinutes())}:${m(\n t.getSeconds()\n )}`;\n}\nfunction Z(t) {\n return t = l(t), Math.floor(t.getMonth() / 3) + 1;\n}\nconst ge = [\"日\", \"一\", \"二\", \"三\", \"四\", \"五\", \"六\"];\nfunction Un(t) {\n return ge[t.getDay()];\n}\nfunction he(t, e) {\n return t = l(t), t.setTime(t.getTime() + e), t;\n}\nfunction pe(t, e) {\n return e *= R, he(t, e);\n}\nfunction me(t, e) {\n return e *= L, pe(t, e);\n}\nfunction be(t, e) {\n return e *= v, me(t, e);\n}\nfunction Bn(t, e) {\n return e *= 12, be(t, e);\n}\nfunction tt(t, e) {\n return t = l(t), e = ~~e, t.setDate(t.getDate() + e), t;\n}\nfunction Yn(t, e) {\n return e *= J, tt(t, e);\n}\nfunction et(t, e) {\n return t = l(t), e = ~~e, t.setMonth(t.getMonth() + e), t;\n}\nfunction Pn(t, e) {\n return e *= Ot, et(t, e);\n}\nfunction Gn(t, e) {\n return e *= fe, et(t, e);\n}\nfunction qn(t, e = 42, n = 1) {\n t = l(t);\n const r = [];\n for (let o = 0; o < e; ++o)\n r.push(tt(t, o * n));\n return r;\n}\nfunction Wn(t, e = 12, n = 1) {\n t = l(t);\n const r = [];\n for (let o = 0; o < e; ++o)\n r.push(et(t, o * n));\n return r;\n}\nfunction zn(t) {\n const e = t.getDay() ?? 7;\n return tt(t, -e);\n}\nfunction ct(t) {\n return t = l(t), t.setMilliseconds(0), t;\n}\nfunction at(t) {\n return t = l(t), t.setSeconds(0, 0), t;\n}\nfunction ft(t) {\n return t = l(t), t.setMinutes(0, 0, 0), t;\n}\nfunction ut(t) {\n return t = l(t), t.setHours(0, 0, 0, 0), t;\n}\nfunction vn(t) {\n return t = l(t), t.setHours(23, 59, 59, 999), t;\n}\nfunction lt(t, e = 0) {\n e = e % 7, e < 0 && (e += 7), t = l(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 jn(t) {\n return t % 4 === 0 && t % 100 !== 0 || t % 400 === 0;\n}\nfunction Kn(t, e = 1) {\n t = l(t);\n const n = t.getFullYear(), r = t.getMonth() + 1, o = t.getDate(), i = n % 4 === 0 && n % 100 !== 0 || n % 400 === 0;\n let s;\n return r < 7 ? r !== 2 ? s = 30 + r % 2 : i ? s = 29 : s = 28 : s = 31 - r % 2, e = e % s, e < 0 && (e += s), o < e && t.setMonth(r - 1), t.setDate(e), t.setHours(0, 0, 0, 0), t;\n}\nfunction Qn(t) {\n t = l(t);\n const e = Z(t);\n return t.setDate(1), t.setHours(0, 0, 0, 0), t.setMonth((e - 1) * 3), t;\n}\nfunction Vn(t, e = 0) {\n e = e % 11, e < 0 && (e += 11), t = l(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 nt(t, e) {\n return t = l(t), e = l(e), e.getTime() - t.getTime();\n}\nfunction ye(t, e) {\n const n = nt(t, e) / R;\n return n > 0 ? Math.floor(n) : Math.ceil(n);\n}\nfunction Me(t, e) {\n const n = nt(t, e) / Zt;\n return n > 0 ? Math.floor(n) : Math.ceil(n);\n}\nfunction Se(t, e) {\n const n = nt(t, e) / te;\n return n > 0 ? Math.floor(n) : Math.ceil(n);\n}\nfunction we(t, e) {\n return t = ut(t), e = ut(e), (e.getTime() - t.getTime()) / re;\n}\nfunction Xn(t, e, n = 0) {\n return t = lt(t, n), e = lt(e, n), (e.getTime() - t.getTime()) / ce;\n}\nfunction Ae(t, e) {\n t = l(t), e = l(e);\n const n = e.getFullYear() - t.getFullYear(), r = e.getMonth() - t.getMonth();\n return n * 12 + r;\n}\nfunction Zn(t, e) {\n t = l(t), e = l(e);\n const n = e.getFullYear() - t.getFullYear(), r = Z(e) - Z(t);\n return n * 4 + r;\n}\nfunction Ee(t, e) {\n return t = l(t), e = l(e), e.getFullYear() - t.getFullYear();\n}\nfunction Ne(t, e) {\n t = l(t), e = l(e);\n const n = t.getTime() - e.getTime();\n return n < 0 ? -1 : n > 0 ? 1 : n;\n}\nfunction _(t, e) {\n return -Ne(t, e);\n}\nfunction Jn(t, e) {\n return t = ct(t), e = ct(e), ye(t, e);\n}\nfunction tr(t, e) {\n return t = at(t), e = at(e), Me(t, e);\n}\nfunction er(t, e) {\n return t = ft(t), e = ft(e), Se(t, e);\n}\nfunction Fe(t, e) {\n const n = _(t, e), r = Math.abs(we(t, e));\n t = l(t), t.setDate(t.getDate() + n * r);\n const o = _(t, e) === -n;\n return n * (r - (o ? 1 : 0));\n}\nfunction nr(t, e) {\n const n = Fe(t, e) / J;\n return n > 0 ? Math.floor(n) : Math.ceil(n);\n}\nfunction Te(t, e) {\n const n = _(t, e), r = Math.abs(Ae(t, e));\n t = l(t), t.setMonth(t.getMonth() + n * r);\n const o = _(t, e) === -n;\n return n * (r - (o ? 1 : 0));\n}\nfunction rr(t, e) {\n const n = Te(t, e) / 3;\n return n > 0 ? Math.floor(n) : Math.ceil(n);\n}\nfunction or(t, e) {\n const n = _(t, e), r = Math.abs(Ee(t, e));\n t = l(t), t.setFullYear(t.getFullYear() + n * r);\n const o = _(t, e) === -n;\n return n * (r - (o ? 1 : 0));\n}\nfunction ke(t) {\n if (t === null || typeof t != \"object\")\n return t;\n const e = Array.isArray(t) ? [] : {}, n = [\n {\n parent: e,\n key: void 0,\n data: t\n }\n ];\n for (; n.length; ) {\n const r = n.pop(), { parent: o, key: i, data: s } = r, c = Array.isArray(s) ? \"array\" : \"object\";\n if (!o)\n continue;\n let a = o;\n typeof i < \"u\" && (a = o[i] = c === \"array\" ? [] : {}), Object.keys(s).forEach((u) => {\n const f = s[u];\n f === s ? a[u] = a : f !== null && typeof f == \"object\" ? n.push({\n parent: a,\n key: u,\n data: f\n }) : a[u] = f;\n });\n }\n return e;\n}\nconst $e = \"This object was destroyed, do not use it anywhere\", _e = () => !0;\nfunction ir(t, e = $e) {\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 = _e;\n}\nconst Re = C && (\"ontouchstart\" in window || Oe() > 0), sr = Re ? \"pointerdown\" : \"click\";\nfunction Oe() {\n return typeof navigator < \"u\" && (navigator.maxTouchPoints || navigator.msMaxTouchPoints) || 0;\n}\nconst b = /* @__PURE__ */ new Map();\nfunction cr(t) {\n b.has(t) || b.set(t, /* @__PURE__ */ new Set());\n}\nfunction ar(t) {\n return b.get(t) ?? b.set(t, /* @__PURE__ */ new Set()).get(t);\n}\nfunction fr(t, e) {\n if (typeof e == \"string\" && (e = [e]), Array.isArray(e))\n for (let n = 0, r = e.length; n < r; ++n) {\n const o = e[n];\n b.has(o) || b.set(o, /* @__PURE__ */ new Set()), b.get(o).add(t);\n }\n}\nfunction ur(t, e) {\n var n;\n if (typeof e == \"string\" && (e = [e]), Array.isArray(e))\n for (let r = 0, o = e.length; r < o; ++r) {\n const i = e[r];\n b.has(i) && ((n = b.get(i)) == null || n.delete(t));\n }\n}\nfunction lr(t, e, n = window.Event) {\n const { type: r, bubbles: o = !1, cancelable: i = !1, ...s } = e;\n if (!y(r) || r === \"\")\n return !1;\n let c;\n return y(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 xe = [\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 j(t) {\n return !!t && t.nodeType === Node.ELEMENT_NODE;\n}\nfunction De(t) {\n return j(t) ? t : document.body;\n}\nfunction Ce(t, e) {\n return t ? Array.from(De(e).querySelectorAll(t)) : [];\n}\nfunction dr(t) {\n const e = document.activeElement;\n return !j(t) || !e ? !1 : t === e || xt(e, t);\n}\nfunction xt(t, e) {\n if (!t || !e)\n return !1;\n const n = e.__transferElement;\n return e.contains(t) || !!n && (n === t || n.contains(t));\n}\nfunction He(t) {\n if (!j(t) || !t.parentNode || !xt(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 Ie(t) {\n return !He(t);\n}\nfunction Le(t) {\n return !j(t) || t.hasAttribute(\"disabled\") && t.getAttribute(\"disabled\") !== \"false\" || t.disabled;\n}\nfunction gr(t, e = !1) {\n const n = e ? () => !1 : Le;\n return Ce(xe, t).filter(\n (r) => Ie(r) && r.tabIndex > -1 && !n(r)\n );\n}\nfunction Ue(t) {\n if (!t)\n return 0;\n const e = getComputedStyle(t);\n return parseFloat(e.paddingLeft) + parseFloat(e.paddingRight) || 0;\n}\nfunction hr(t) {\n if (!t)\n return 0;\n const e = getComputedStyle(t);\n return parseFloat(e.paddingTop) + parseFloat(e.paddingBottom) || 0;\n}\nfunction pr(t) {\n if (!t)\n return 0;\n const e = getComputedStyle(t);\n return parseFloat(e.marginLeft) + parseFloat(e.marginRight) || 0;\n}\nfunction mr(t) {\n if (!t)\n return 0;\n const e = getComputedStyle(t);\n return parseFloat(e.marginTop) + parseFloat(e.marginBottom) || 0;\n}\nfunction br(t) {\n if (!t)\n 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 = Ue(t);\n return n + r;\n}\nconst Be = /[\"'&<>]/;\nfunction yr(t) {\n const e = \"\" + t, n = Be.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 = \"&quot;\";\n break;\n case 38:\n o = \"&amp;\";\n break;\n case 39:\n o = \"&#39;\";\n break;\n case 60:\n o = \"&lt;\";\n break;\n case 62:\n o = \"&gt;\";\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 Mr() {\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 rt(t, e, n) {\n t && !e.has(t) && (n(t), e.add(t));\n}\nconst Ye = /* @__PURE__ */ new Set();\nfunction Sr(t, e = console.info) {\n rt(t, Ye, e);\n}\nconst Pe = /* @__PURE__ */ new Set();\nfunction wr(t, e = console.warn) {\n rt(t, Pe, e);\n}\nconst Ge = /* @__PURE__ */ new Set();\nfunction Ar(t, e = console.warn) {\n rt(t, Ge, e);\n}\nfunction Er(t, e = 16) {\n if (typeof t != \"function\")\n return t;\n let n = Date.now(), r;\n return function(...o) {\n const i = Date.now(), s = n + e - i;\n clearTimeout(r), s <= 0 ? (t(...o), n = Date.now()) : r = setTimeout(() => {\n t(...o);\n }, e);\n };\n}\nfunction Nr(t, e = 100) {\n if (typeof t != \"function\")\n return t;\n let n;\n return function(...r) {\n clearTimeout(n), n = setTimeout(() => {\n t(...r);\n }, e);\n };\n}\nfunction Fr(t) {\n if (typeof t != \"function\")\n return t;\n let e = !1, n;\n return function(...r) {\n n = r, e || (e = !0, Promise.resolve().then(() => {\n t(...n), e = !1;\n }));\n };\n}\nfunction Tr(t) {\n if (typeof t != \"function\")\n return t;\n let e = !1, n;\n return function(...r) {\n n = r, e || (e = !0, requestAnimationFrame(() => {\n t(...n), e = !1;\n }));\n };\n}\nconst O = /* @__PURE__ */ new Set(), Dt = /* @__PURE__ */ new WeakMap();\nfunction qe() {\n O.forEach((t) => {\n t(...Dt.get(t));\n }), O.clear();\n}\nfunction kr(t, ...e) {\n if (typeof t != \"function\")\n return t;\n Dt.set(t, e), !O.has(t) && (O.add(t), O.size === 1 && Promise.resolve().then(qe));\n}\nconst x = /* @__PURE__ */ new Set(), Ct = /* @__PURE__ */ new WeakMap();\nfunction We() {\n x.forEach((t) => {\n t(...Ct.get(t));\n }), x.clear();\n}\nfunction $r(t, ...e) {\n if (typeof t != \"function\")\n return t;\n Ct.set(t, e), !x.has(t) && (x.add(t), x.size === 1 && requestAnimationFrame(We));\n}\nlet V = null;\nfunction _r() {\n if (!C)\n return !0;\n if (V === 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), V = t.scrollHeight === 1, document.body.removeChild(t);\n }\n return V;\n}\nlet X = null;\nfunction Rr() {\n return C ? (X === null && (X = \"loading\" in document.createElement(\"img\")), X) : !0;\n}\nfunction Or(t) {\n return Array.isArray(t) ? t : [t];\n}\nfunction xr(t) {\n return ht(t) ? t() : t;\n}\nfunction Dr(t) {\n return t.replace(/\\/+/g, \"/\");\n}\nfunction Cr(t, e, n = (r) => r) {\n const r = {};\n if (!y(e))\n return r;\n const o = ht(e) ? e : (i) => i[e];\n return t.forEach((i) => {\n const s = o(i);\n y(s) && (r[s] = n(i));\n }), r;\n}\nfunction Hr(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 Ir(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], u = typeof a == \"function\" ? a(o) : o[a];\n i ? (i[u] || (i[u] = c ? [] : {}), i = i[u]) : (r[u] || (r[u] = c ? [] : {}), i = r[u]);\n }\n i.push(o);\n }\n return r;\n}\nfunction Lr(t, e = {}) {\n const {\n keyField: n = \"id\",\n childField: r = \"children\",\n parentField: o = \"parent\",\n rootId: i = null\n } = e, s = y(i) && i !== \"\", c = [], a = /* @__PURE__ */ new Map();\n for (let u = 0, f = t.length; u < f; ++u) {\n const d = t[u], g = d[n];\n if (!(s ? g === i : !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 S = d[o];\n a.has(S) || a.set(S, []), a.get(S).push(d);\n } else\n c.push(d);\n }\n return c;\n}\nfunction Ur(t, e = {}) {\n const {\n keyField: n = \"id\",\n childField: r = \"children\",\n parentField: o = \"parent\",\n rootId: i = null\n } = e, s = y(i) && i !== \"\", c = [], a = [...t];\n let u = 1;\n for (; a.length; ) {\n const f = a.shift();\n let d = [];\n const g = f[r];\n Array.isArray(g) && g.length && (d = g), f[n] || (f[n] = u++);\n const S = f[n];\n (s ? f[o] === i : !f[o]) && (f[o] = i);\n for (let K = 0, Ht = d.length; K < Ht; ++K) {\n const ot = d[K];\n ot[o] = S, a.push(ot);\n }\n c.push(f);\n }\n return c;\n}\nconst dt = (t, e) => Number.isNaN(Number(t) - Number(e)) ? String(t).localeCompare(e) : t - e;\nfunction Br(t, e) {\n if (!t.sort || U(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: dt,\n type: \"asc\"\n } : o\n ).map((o) => (typeof o.accessor != \"function\" && (o.accessor = (i) => i[o.key]), typeof o.method != \"function\" && (o.method = dt), 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: u, accessor: f, params: d } = c, g = u === \"desc\", S = a(f(o, ...d), f(i, ...d));\n if (s = g ? -S : S, s)\n break;\n }\n return s;\n }), n;\n}\nfunction Yr(t, e, n = !0) {\n t = n ? ke(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 U(i[s]) ? (U(o[s]) || (o[s] = {}), 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 Pr(t) {\n const e = [], n = Array.isArray(t) ? [...t] : [];\n for (; n.length; ) {\n const r = n.shift();\n r !== null && (Array.isArray(r) && n.unshift(...r), !(!It(r) || r.type === Lt) && (r.type === Ut && Array.isArray(r.children) ? n.unshift(r.children) : typeof r == \"string\" || typeof r == \"number\" ? e.push(Bt(r)) : e.push(r)));\n }\n return e;\n}\nfunction Gr(t) {\n return t.charAt(0).toLowerCase() + t.slice(1).replace(/([A-Z])/g, \"-$1\").toLowerCase();\n}\nfunction ze(t) {\n return t.charAt(0).toUpperCase() + t.slice(1).replace(/-(\\w)/g, (e, n) => n ? n.toUpperCase() : \"\");\n}\nfunction qr(t) {\n const e = ze(t);\n return e.charAt(0).toLowerCase() + e.slice(1);\n}\nexport {\n sr as CLICK_TYPE,\n zt as COLOR_NAMES,\n Rt as DAY_ON_HOURS,\n re as DAY_ON_MILLIS,\n ee as DAY_ON_MINUTES,\n ne as DAY_ON_SECONDS,\n wt as HEX_REG_3,\n At as HEX_REG_4,\n Et as HEX_REG_6,\n Nt as HEX_REG_8,\n te as HOUR_ON_MILLS,\n v as HOUR_ON_MINUTES,\n Jt as HOUR_ON_SECONDS,\n yt as HSLA_REG,\n bt as HSL_REG,\n St as HSVA_REG,\n Mt as HSV_REG,\n Zt as MINUTE_ON_MILLS,\n L as MINUTE_ON_SECONDS,\n B as NAMED_COLORS,\n Ot as QUARTER_ON_MONTHS,\n mt as RGBA_REG,\n pt as RGB_REG,\n R as SECOND_ON_MILLS,\n Re as USE_TOUCH,\n J as WEEK_ON_DAYS,\n oe as WEEK_ON_HOURS,\n ce as WEEK_ON_MILLIS,\n ie as WEEK_ON_MINUTES,\n se as WEEK_ON_SECONDS,\n fe as YEAR_ON_MONTHS,\n ae as YEAR_ON_QUARTERS,\n tt as addDays,\n Bn as addHalfDays,\n be as addHours,\n he as addMilliseconds,\n me as addMinutes,\n et as addMonths,\n Pn as addQuarters,\n pe as addSeconds,\n Yn as addWeeks,\n Gn as addYears,\n Nn as adjustAlpha,\n On as boundRange,\n xr as callIfFunc,\n Ne as compareAsc,\n _ as compareDesc,\n xt as contains,\n Tn as createBITree,\n cr as createEvent,\n Mr as createEventEmitter,\n Nr as debounce,\n Tr as debounceFrame,\n Fr as debounceMinor,\n ke as deepClone,\n ir as destroyObject,\n we as differenceDays,\n Fe as differenceFullDays,\n er as differenceFullHours,\n tr as differenceFullMinutes,\n Te as differenceFullMonths,\n rr as differenceFullQuarters,\n Jn as differenceFullSeconds,\n nr as differenceFullWeeks,\n or as differenceFullYears,\n Se as differenceHours,\n nt as differenceMilliseconds,\n Me as differenceMinutes,\n Ae as differenceMonths,\n Zn as differenceQuarters,\n ye as differenceSeconds,\n Xn as differenceWeeks,\n Ee as differenceYears,\n M as digitLength,\n ur as disconnect,\n lr as dispatchEvent,\n Hn as divide,\n m as doubleDigits,\n vn as endOfDay,\n Or as ensureArray,\n Ar as errorOnce,\n yr as escapeHtml,\n Ur as flatTree,\n Pr as flatVNodes,\n In as format,\n xn as formatByteSize,\n Un as getChineseWeek,\n zn as getLastSunday,\n ar as getObservers,\n Z as getQuarter,\n br as getRangeWidth,\n Ln as getTime,\n bn as getType,\n pr as getXMargin,\n Ue as getXPadding,\n mr as getYMargin,\n hr as getYPadding,\n Ir as groupByProps,\n Ke as has,\n wn as hslToHsv,\n jt as hslToRgb,\n An as hsvToHsl,\n Kt as hsvToRgb,\n Sr as infoOnce,\n H as is,\n on as isArray,\n rn as isBigInt,\n Je as isBoolean,\n C as isClient,\n Mn as isColor,\n fn as isDate,\n y as isDefined,\n Le as isDisabled,\n dn as isElement,\n ln as isEmpty,\n en as isFalse,\n dr as isFocusIn,\n ht as isFunction,\n He as isHidden,\n je as isIOS,\n jn as isLeepYear,\n an as isMap,\n Xe as isNaN,\n Qe as isNull,\n Ve as isNumber,\n U as isObject,\n sn as isPromise,\n un as isRegExp,\n cn as isSet,\n Ze as isString,\n nn as isSymbol,\n tn as isTrue,\n Ie as isVisible,\n Yr as mergeObjects,\n Cn as minus,\n En as mixColor,\n _n as multipleFixed,\n $r as nextFrameOnce,\n kr as nextTickOnce,\n gn as noop,\n F as normalizeAlpha,\n Y as normalizeHsl,\n P as normalizeHsv,\n Dr as normalizePath,\n T as normalizeRgb,\n fr as observe,\n Sn as parseColor,\n N as parseColorToRgba,\n vt as parseStringColor,\n Dn as plus,\n Ce as queryAll,\n gr as queryTabables,\n Fn as randomColor,\n yn as randomString,\n mn as range,\n qn as rangeDate,\n Wn as rangeMonth,\n Hr as removeArrayItem,\n kt as rgbToHex,\n Ft as rgbToHsl,\n Tt as rgbToHsv,\n $t as rgbaToHex,\n Rn as round,\n $n as segmentNumber,\n Br as sortByProps,\n ut as startOfDay,\n ft as startOfHour,\n at as startOfMinute,\n Kn as startOfMonth,\n Qn as startOfQuarter,\n ct as startOfSecond,\n lt as startOfWeek,\n Vn as startOfYear,\n _r as supportFlexGap,\n Rr as supportImgLoading,\n Er as throttle,\n D as times,\n qr as toCamelCase,\n ze as toCapitalCase,\n l as toDate,\n pn as toFalse,\n Vt as toFixed,\n Gr as toKebabCase,\n kn as toNumber,\n _t as toPrecision,\n hn as toTrue,\n Cr as transformListToMap,\n Lr as transformTree,\n wr as warnOnce\n};\n//# sourceMappingURL=index.mjs.map\n","import type { InjectionKey } from 'vue'\r\nimport type { EventEmitter } from '@vexip-ui/utils'\r\nimport type { LayoutItem, Layout, LayoutInstance } from './types'\r\n\r\nexport const LAYOUT_KEY = Symbol('LAYOUT_KEY') as InjectionKey<LayoutInstance>\r\nexport const EMITTER_KEY = Symbol('EMITTER_KEY') as InjectionKey<EventEmitter>\r\n\r\n/**\r\n * Return the bottom coordinate of the layout.\r\n *\r\n * @param layout Layout array.\r\n * @return Bottom coordinate.\r\n */\r\nexport function bottom(layout: Layout): number {\r\n let max = 0\r\n let bottomY\r\n for (let i = 0, len = layout.length; i < len; i++) {\r\n bottomY = layout[i].y + layout[i].h\r\n if (bottomY > max) max = bottomY\r\n }\r\n return max\r\n}\r\n\r\nexport function cloneLayout(layout: Layout): Layout {\r\n const newLayout = Array(layout.length)\r\n for (let i = 0, len = layout.length; i < len; i++) {\r\n newLayout[i] = cloneLayoutItem(layout[i])\r\n }\r\n return newLayout\r\n}\r\n\r\n// Fast path to cloning, since this is monomorphic\r\nexport function cloneLayoutItem(layoutItem: LayoutItem): LayoutItem {\r\n // return JSON.parse(JSON.stringify(layoutItem))\r\n return { ...layoutItem }\r\n}\r\n\r\n/**\r\n * Given two layoutitems, check if they collide.\r\n *\r\n * @return True if colliding.\r\n */\r\nexport function collides(l1: LayoutItem, l2: LayoutItem): boolean {\r\n if (l1 === l2) return false // same element\r\n if (l1.x + l1.w <= l2.x) return false // l1 is left of l2\r\n if (l1.x >= l2.x + l2.w) return false // l1 is right of l2\r\n if (l1.y + l1.h <= l2.y) return false // l1 is above l2\r\n if (l1.y >= l2.y + l2.h) return false // l1 is below l2\r\n return true // boxes overlap\r\n}\r\n\r\n/**\r\n * Given a layout, compact it. This involves going down each y coordinate and removing gaps\r\n * between items.\r\n *\r\n * @param layout Layout.\r\n * @param verticalCompact Whether or not to compact the layout vertically.\r\n * @param minPositions\r\n * @return Compacted Layout.\r\n */\r\nexport function compact(layout: Layout, verticalCompact?: boolean, minPositions?: any): Layout {\r\n // Statics go in the compareWith array right away so items flow around them.\r\n const compareWith = getStatics(layout)\r\n // We go through the items by row and column.\r\n const sorted = sortLayoutItemsByRowCol(layout)\r\n // Holding for new items.\r\n const out: Layout = Array(layout.length)\r\n\r\n for (let i = 0, len = sorted.length; i < len; i++) {\r\n let l = sorted[i]\r\n\r\n // Don't move static elements\r\n if (!l.static) {\r\n l = compactItem(compareWith, l, verticalCompact, minPositions)\r\n\r\n // Add to comparison array. We only collide with items before this one.\r\n // Statics are already in this array.\r\n compareWith.push(l)\r\n }\r\n\r\n // Add to output array to make sure they still come out in the right order.\r\n out[layout.indexOf(l)] = l\r\n\r\n // Clear moved flag, if it exists.\r\n l.moved = false\r\n }\r\n\r\n return out\r\n}\r\n\r\n/**\r\n * Compact an item in the layout.\r\n */\r\nexport function compactItem(\r\n compareWith: Layout,\r\n l: LayoutItem,\r\n verticalCompact?: boolean,\r\n minPositions?: any\r\n): LayoutItem {\r\n if (verticalCompact) {\r\n // Move the element up as far as it can go without colliding.\r\n while (l.y > 0 && !getFirstCollision(compareWith, l)) {\r\n l.y--\r\n }\r\n } else if (minPositions) {\r\n const minY = minPositions[l.i].y\r\n while (l.y > minY && !getFirstCollision(compareWith, l)) {\r\n l.y--\r\n }\r\n }\r\n\r\n // Move it down, and keep moving it down if it's colliding.\r\n let collides\r\n while ((collides = getFirstCollision(compareWith, l))) {\r\n l.y = collides.y + collides.h\r\n }\r\n return l\r\n}\r\n\r\n/**\r\n * Given a layout, make sure all elements fit within its bounds.\r\n *\r\n * @param layout Layout array.\r\n * @param bounds Number of columns.\r\n */\r\nexport function correctBounds(layout: Layout, bounds: { cols: number }): Layout {\r\n const collidesWith = getStatics(layout)\r\n for (let i = 0, len = layout.length; i < len; i++) {\r\n const l = layout[i]\r\n // Overflows right\r\n if (l.x + l.w > bounds.cols) l.x = bounds.cols - l.w\r\n // Overflows left\r\n if (l.x < 0) {\r\n l.x = 0\r\n l.w = bounds.cols\r\n }\r\n if (!l.static) collidesWith.push(l)\r\n else {\r\n // If this is static and collides with other statics, we must move it down.\r\n // We have to do something nicer than just letting them overlap.\r\n while (getFirstCollision(collidesWith, l)) {\r\n l.y++\r\n }\r\n }\r\n }\r\n return layout\r\n}\r\n\r\n/**\r\n * Get a layout item by ID. Used so we can override later on if necessary.\r\n *\r\n * @param layout Layout array.\r\n * @param id ID\r\n * @return Item at ID.\r\n */\r\nexport function getLayoutItem(layout: Layout, id: number | string): LayoutItem | undefined {\r\n for (let i = 0, len = layout.length; i < len; i++) {\r\n if (layout[i].i === id) return layout[i]\r\n }\r\n}\r\n\r\n/**\r\n * Returns the first item this layout collides with.\r\n * It doesn't appear to matter which order we approach this from, although\r\n * perhaps that is the wrong thing to do.\r\n *\r\n * @param {Object} layoutItem Layout item.\r\n * @return {Object|undefined} A colliding layout item, or undefined.\r\n */\r\nexport function getFirstCollision(layout: Layout, layoutItem: LayoutItem): LayoutItem | undefined {\r\n for (let i = 0, len = layout.length; i < len; i++) {\r\n if (collides(layout[i], layoutItem)) return layout[i]\r\n }\r\n}\r\n\r\nexport function getAllCollisions(layout: Layout, layoutItem: LayoutItem): Array<LayoutItem> {\r\n return layout.filter(l => collides(l, layoutItem))\r\n}\r\n\r\n/**\r\n * Get all static elements.\r\n * @param layout Array of layout objects.\r\n * @return Array of static layout items..\r\n */\r\nexport function getStatics(layout: Layout): Array<LayoutItem> {\r\n return layout.filter(l => l.static)\r\n}\r\n\r\n/**\r\n * Move an element. Responsible for doing cascading movements of other elements.\r\n *\r\n * @param layout Full layout to modify.\r\n * @param layoutItem element to move.\r\n * @param x X position in grid units.\r\n * @param y Y position in grid units.\r\n * @param isUserAction If true, designates that the item we're moving is\r\n * being dragged/resized by th euser.\r\n */\r\nexport function moveElement(\r\n layout: Layout,\r\n layoutItem: LayoutItem,\r\n x?: number,\r\n y?: number,\r\n isUserAction = false,\r\n preventCollision = false\r\n): Layout {\r\n if (layoutItem.static) return layout\r\n\r\n const oldX = layoutItem.x\r\n const oldY = layoutItem.y\r\n\r\n const movingUp = y && layoutItem.y > y\r\n // This is quite a bit faster than extending the object\r\n if (typeof x === 'number') layoutItem.x = x\r\n if (typeof y === 'number') layoutItem.y = y\r\n layoutItem.moved = true\r\n\r\n // If this collides with anything, move it.\r\n // When doing this comparison, we have to sort the items we compare with\r\n // to ensure, in the case of multiple collisions, that we're getting the\r\n // nearest collision.\r\n let sorted = sortLayoutItemsByRowCol(layout)\r\n if (movingUp) sorted = sorted.reverse()\r\n const collisions = getAllCollisions(sorted, layoutItem)\r\n\r\n if (preventCollision && collisions.length) {\r\n layoutItem.x = oldX\r\n layoutItem.y = oldY\r\n layoutItem.moved = false\r\n return layout\r\n }\r\n\r\n // Move each item that collides away from this element.\r\n for (let i = 0, len = collisions.length; i < len; i++) {\r\n const collision = collisions[i]\r\n\r\n // Short circuit so we can't infinite loop\r\n if (collision.moved) continue\r