UNPKG

@vue-ui-kit/ant

Version:

Vue3 UI Kit based on Ant Design

12,518 lines 486 kB
import { Fragment as e, computed as t, createBlock as n, createCommentVNode as r, createElementBlock as i, createElementVNode as a, createSlots as o, createTextVNode as s, createVNode as c, defineComponent as l, guardReactiveProps as u, h as d, mergeModels as f, mergeProps as p, nextTick as m, normalizeClass as h, normalizeProps as g, normalizeStyle as _, onActivated as v, onBeforeUnmount as y, onDeactivated as b, onMounted as x, onUnmounted as S, openBlock as C, reactive as w, ref as T, renderList as E, renderSlot as D, resolveComponent as O, resolveDynamicComponent as k, toDisplayString as A, toRefs as ee, toValue as j, unref as M, useAttrs as te, useModel as ne, useSlots as N, useTemplateRef as P, watch as F, watchEffect as re, withCtx as I } from "vue";
import { AutoComplete as ie, Button as L, Cascader as R, Checkbox as ae, CheckboxGroup as oe, DatePicker as z, Dropdown as se, Form as ce, Input as le, InputNumber as B, Mentions as V, Menu as ue, MenuItem as de, Modal as fe, Pagination as pe, RadioGroup as me, RangePicker as he, Rate as ge, Row as H, Select as _e, Slider as ve, Spin as ye, Switch as be, TabPane as xe, Table as Se, Tabs as Ce, Textarea as we, TimePicker as Te, Tooltip as Ee, TreeSelect as De, TypographyParagraph as Oe, message as ke } from "ant-design-vue";
import * as Ae from "@ant-design/icons-vue";
import { DownOutlined as je, InfoCircleOutlined as Me, MoreOutlined as Ne } from "@ant-design/icons-vue";
//#region \0rolldown/runtime.js
var Pe = Object.create, Fe = Object.defineProperty, Ie = Object.getOwnPropertyDescriptor, Le = Object.getOwnPropertyNames, Re = Object.getPrototypeOf, ze = Object.prototype.hasOwnProperty, U = (e, t) => () => (t || (e((t = { exports: {} }).exports, t), e = null), t.exports), Be = (e, t, n, r) => {
	if (t && typeof t == "object" || typeof t == "function") for (var i = Le(t), a = 0, o = i.length, s; a < o; a++) s = i[a], !ze.call(e, s) && s !== n && Fe(e, s, {
		get: ((e) => t[e]).bind(null, s),
		enumerable: !(r = Ie(t, s)) || r.enumerable
	});
	return e;
}, Ve = (e, t, n) => (n = e == null ? {} : Pe(Re(e)), Be(t || !e || !e.__esModule || !ze.call(e, "default") ? Fe(n, "default", {
	value: e,
	enumerable: !0
}) : n, e)), W = /* @__PURE__ */ U(((e, t) => {
	t.exports = {
		keyId: 1,
		cookies: { path: "/" },
		treeOptions: {
			parentKey: "parentId",
			key: "id",
			children: "children"
		},
		parseDateFormat: "yyyy-MM-dd HH:mm:ss",
		firstDayOfWeek: 1
	};
})), G = /* @__PURE__ */ U(((e, t) => {
	function n(e, t, n) {
		if (e) {
			if (e.forEach) e.forEach(t, n);
			else for (var r = 0, i = e.length; r < i; r++) t.call(n, e[r], r, e);
		}
	}
	t.exports = n;
})), He = /* @__PURE__ */ U(((e, t) => {
	t.exports = Object.prototype.toString;
})), Ue = /* @__PURE__ */ U(((e, t) => {
	var n = He();
	function r(e) {
		return function(t) {
			return "[object " + e + "]" === n.call(t);
		};
	}
	t.exports = r;
})), K = /* @__PURE__ */ U(((e, t) => {
	var n = Ue();
	t.exports = Array.isArray || n("Array");
})), We = /* @__PURE__ */ U(((e, t) => {
	function n(e, t) {
		return e && e.hasOwnProperty ? e.hasOwnProperty(t) : !1;
	}
	t.exports = n;
})), Ge = /* @__PURE__ */ U(((e, t) => {
	var n = We();
	function r(e, t, r) {
		if (e) for (var i in e) n(e, i) && t.call(r, e[i], i, e);
	}
	t.exports = r;
})), q = /* @__PURE__ */ U(((e, t) => {
	var n = K(), r = G(), i = Ge();
	function a(e, t, a) {
		return e && (n(e) ? r : i)(e, t, a);
	}
	t.exports = a;
})), Ke = /* @__PURE__ */ U(((e, t) => {
	function n(e) {
		return function(t) {
			return typeof t === e;
		};
	}
	t.exports = n;
})), J = /* @__PURE__ */ U(((e, t) => {
	t.exports = Ke()("function");
})), qe = /* @__PURE__ */ U(((e, t) => {
	var n = q();
	function r(e, t) {
		var r = Object[e];
		return function(e) {
			var i = [];
			if (e) {
				if (r) return r(e);
				n(e, t > 1 ? function(t) {
					i.push(["" + t, e[t]]);
				} : function() {
					i.push(arguments[t]);
				});
			}
			return i;
		};
	}
	t.exports = r;
})), Je = /* @__PURE__ */ U(((e, t) => {
	t.exports = qe()("keys", 1);
})), Ye = /* @__PURE__ */ U(((e, t) => {
	var n = He(), r = Ge(), i = G();
	function a(e, t) {
		var n = e.__proto__.constructor;
		return t ? new n(t) : new n();
	}
	function o(e, t) {
		return t ? s(e, t) : e;
	}
	function s(e, t) {
		if (e) switch (n.call(e)) {
			case "[object Object]":
				var s = Object.create(Object.getPrototypeOf(e));
				return r(e, function(e, n) {
					s[n] = o(e, t);
				}), s;
			case "[object Date]":
			case "[object RegExp]": return a(e, e.valueOf());
			case "[object Array]":
			case "[object Arguments]":
				var c = [];
				return i(e, function(e) {
					c.push(o(e, t));
				}), c;
			case "[object Set]":
				var l = a(e);
				return l.forEach(function(e) {
					l.add(o(e, t));
				}), l;
			case "[object Map]":
				var u = a(e);
				return u.forEach(function(e, n) {
					u.set(n, o(e, t));
				}), u;
		}
		return e;
	}
	function c(e, t) {
		return e && s(e, t);
	}
	t.exports = c;
})), Xe = /* @__PURE__ */ U(((e, t) => {
	var n = G(), r = Je(), i = K(), a = Ye(), o = Object.assign;
	function s(e, t, i) {
		for (var o = t.length, s, c = 1; c < o; c++) s = t[c], n(r(t[c]), i ? function(t) {
			e[t] = a(s[t], i);
		} : function(t) {
			e[t] = s[t];
		});
		return e;
	}
	t.exports = function(e) {
		if (e) {
			var t = arguments;
			if (e === !0) {
				if (t.length > 1) return e = i(e[1]) ? [] : {}, s(e, t, !0);
			} else return o ? o.apply(Object, t) : s(e, t);
		}
		return e;
	};
})), Y = /* @__PURE__ */ U(((e, t) => {
	var n = W(), r = G(), i = q(), a = J(), o = Xe(), s = function() {};
	function c() {
		r(arguments, function(e) {
			i(e, function(e, t) {
				s[t] = a(e) ? function() {
					var t = e.apply(s.$context, arguments);
					return s.$context = null, t;
				} : e;
			});
		});
	}
	function l(e) {
		return o(n, e);
	}
	function u() {
		return n;
	}
	var d = "3.9.1";
	s.VERSION = d, s.version = d, s.mixin = c, s.setup = l, s.setConfig = l, s.getConfig = u, t.exports = s;
})), Ze = /* @__PURE__ */ U(((e, t) => {
	function n(e, t, n) {
		for (var r = e.length - 1; r >= 0; r--) t.call(n, e[r], r, e);
	}
	t.exports = n;
})), X = /* @__PURE__ */ U(((e, t) => {
	var n = Ze(), r = Je();
	function i(e, t, i) {
		n(r(e), function(n) {
			t.call(i, e[n], n, e);
		});
	}
	t.exports = i;
})), Qe = /* @__PURE__ */ U(((e, t) => {
	function n(e) {
		return e === null;
	}
	t.exports = n;
})), $e = /* @__PURE__ */ U(((e, t) => {
	var n = Qe();
	function r(e, t) {
		return function(r) {
			return n(r) ? t : r[e];
		};
	}
	t.exports = r;
})), et = /* @__PURE__ */ U(((e, t) => {
	var n = q(), r = J(), i = $e();
	function a(e, t, a) {
		var o = {};
		if (e) {
			if (t) r(t) || (t = i(t)), n(e, function(n, r) {
				o[r] = t.call(a, n, r, e);
			});
			else return e;
		}
		return o;
	}
	t.exports = a;
})), tt = /* @__PURE__ */ U(((e, t) => {
	function n(e) {
		return e ? e.constructor === Object : !1;
	}
	t.exports = n;
})), nt = /* @__PURE__ */ U(((e, t) => {
	function n(e) {
		return e !== "__proto__" && e !== "constructor";
	}
	t.exports = n;
})), rt = /* @__PURE__ */ U(((e, t) => {
	var n = K(), r = tt(), i = J(), a = q(), o = nt();
	function s(e, t) {
		return r(e) && r(t) || n(e) && n(t) ? (a(t, function(n, r) {
			o(r) && (e[r] = i(t) ? n : s(e[r], n));
		}), e) : t;
	}
	t.exports = function(e) {
		e ||= {};
		for (var t = arguments, n = t.length, r, i = 1; i < n; i++) r = t[i], r && s(e, r);
		return e;
	};
})), Z = /* @__PURE__ */ U(((e, t) => {
	var n = q();
	function r(e, t, r) {
		var i = [];
		if (e && arguments.length > 1) {
			if (e.map) return e.map(t, r);
			n(e, function() {
				i.push(t.apply(r, arguments));
			});
		}
		return i;
	}
	t.exports = r;
})), it = /* @__PURE__ */ U(((e, t) => {
	var n = We(), r = K();
	function i(e, t, i, a, o) {
		return function(s, c, l) {
			if (s && c) {
				if (e && s[e]) return s[e](c, l);
				if (t && r(s)) {
					for (var u = 0, d = s.length; u < d; u++) if (!!c.call(l, s[u], u, s) === a) return [
						!0,
						!1,
						u,
						s[u]
					][i];
				} else for (var f in s) if (n(s, f) && !!c.call(l, s[f], f, s) === a) return [
					!0,
					!1,
					f,
					s[f]
				][i];
			}
			return o;
		};
	}
	t.exports = i;
})), at = /* @__PURE__ */ U(((e, t) => {
	t.exports = it()("some", 1, 0, !0, !1);
})), ot = /* @__PURE__ */ U(((e, t) => {
	t.exports = it()("every", 1, 1, !1, !0);
})), st = /* @__PURE__ */ U(((e, t) => {
	var n = We();
	function r(e, t) {
		if (e) {
			if (e.includes) return e.includes(t);
			for (var r in e) if (n(e, r) && t === e[r]) return !0;
		}
		return !1;
	}
	t.exports = r;
})), ct = /* @__PURE__ */ U(((e, t) => {
	var n = K(), r = st();
	function i(e, t) {
		var i, a = 0;
		if (n(e) && n(t)) {
			for (i = t.length; a < i; a++) if (!r(e, t[a])) return !1;
			return !0;
		}
		return r(e, t);
	}
	t.exports = i;
})), lt = /* @__PURE__ */ U(((e, t) => {
	var n = q(), r = st(), i = J(), a = $e();
	function o(e, t, o) {
		var s = [];
		if (t) {
			i(t) || (t = a(t));
			var c, l = {};
			n(e, function(n, r) {
				c = t.call(o, n, r, e), l[c] || (l[c] = 1, s.push(n));
			});
		} else n(e, function(e) {
			r(s, e) || s.push(e);
		});
		return s;
	}
	t.exports = o;
})), ut = /* @__PURE__ */ U(((e, t) => {
	var n = Z();
	function r(e) {
		return n(e, function(e) {
			return e;
		});
	}
	t.exports = r;
})), dt = /* @__PURE__ */ U(((e, t) => {
	var n = lt(), r = ut();
	function i() {
		for (var e = arguments, t = [], i = 0, a = e.length; i < a; i++) t = t.concat(r(e[i]));
		return n(t);
	}
	t.exports = i;
})), ft = /* @__PURE__ */ U(((e, t) => {
	t.exports = "undefined";
})), pt = /* @__PURE__ */ U(((e, t) => {
	var n = ft();
	t.exports = Ke()(n);
})), mt = /* @__PURE__ */ U(((e, t) => {
	var n = Qe(), r = pt();
	function i(e) {
		return n(e) || r(e);
	}
	t.exports = i;
})), ht = /* @__PURE__ */ U(((e, t) => {
	t.exports = /(.+)?\[(\d+)\]$/;
})), gt = /* @__PURE__ */ U(((e, t) => {
	function n(e) {
		return e ? e.splice && e.join ? e : ("" + e).replace(/(\[\d+\])\.?/g, "$1.").replace(/\.$/, "").split(".") : [];
	}
	t.exports = n;
})), _t = /* @__PURE__ */ U(((e, t) => {
	var n = ht(), r = gt(), i = We(), a = pt(), o = mt();
	function s(e, t, n) {
		if (o(e)) return n;
		var r = l(e, t);
		return a(r) ? n : r;
	}
	function c(e, t) {
		var r = t ? t.match(n) : "";
		return r ? r[1] ? e[r[1]] ? e[r[1]][r[2]] : void 0 : e[r[2]] : e[t];
	}
	function l(e, t) {
		if (e) {
			var n, a, s, l = 0;
			if (e[t] || i(e, t)) return e[t];
			if (a = r(t), s = a.length, s) {
				for (n = e; l < s; l++) if (n = c(n, a[l]), o(n)) return l === s - 1 ? n : void 0;
			}
			return n;
		}
	}
	t.exports = s;
})), vt = /* @__PURE__ */ U(((e, t) => {
	var n = G(), r = ut(), i = Z(), a = K(), o = J(), s = tt(), c = pt(), l = Qe(), u = mt(), d = _t(), f = $e(), p = "asc", m = "desc";
	function h(e, t) {
		return c(e) ? 1 : l(e) ? c(t) ? -1 : 1 : e && e.localeCompare ? e.localeCompare(t) : e > t ? 1 : -1;
	}
	function g(e, t, n) {
		return function(r, i) {
			var a = r[e], o = i[e];
			return a === o ? n ? n(r, i) : 0 : t.order === m ? h(o, a) : h(a, o);
		};
	}
	function _(e, t, r, i) {
		var c = [];
		return r = a(r) ? r : [r], n(r, function(r, l) {
			if (r) {
				var u = r, f;
				a(r) ? (u = r[0], f = r[1]) : s(r) && (u = r.field, f = r.order), c.push({
					field: u,
					order: f || p
				}), n(t, o(u) ? function(t, n) {
					t[l] = u.call(i, t.data, n, e);
				} : function(e) {
					e[l] = u ? d(e.data, u) : e.data;
				});
			}
		}), c;
	}
	function v(e, t, n) {
		if (e) {
			if (u(t)) return r(e).sort(h);
			for (var a, o = i(e, function(e) {
				return { data: e };
			}), s = _(e, o, t, n), c = s.length - 1; c >= 0;) a = g(c, s[c], a), c--;
			return a && (o = o.sort(a)), i(o, f("data"));
		}
		return [];
	}
	t.exports = v;
})), yt = /* @__PURE__ */ U(((e, t) => {
	t.exports = vt();
})), bt = /* @__PURE__ */ U(((e, t) => {
	function n(e, t) {
		return e >= t ? e : (e >>= 0) + Math.round(Math.random() * ((t || 9) - e));
	}
	t.exports = n;
})), xt = /* @__PURE__ */ U(((e, t) => {
	t.exports = qe()("values", 0);
})), St = /* @__PURE__ */ U(((e, t) => {
	var n = bt(), r = xt();
	function i(e) {
		for (var t, i = [], a = r(e), o = a.length - 1; o >= 0; o--) t = o > 0 ? n(0, o) : 0, i.push(a[t]), a.splice(t, 1);
		return i;
	}
	t.exports = i;
})), Ct = /* @__PURE__ */ U(((e, t) => {
	var n = St();
	function r(e, t) {
		var r = n(e);
		return arguments.length <= 1 ? r[0] : (t < r.length && (r.length = t || 0), r);
	}
	t.exports = r;
})), wt = /* @__PURE__ */ U(((e, t) => {
	function n(e) {
		return function(t) {
			if (t) {
				var n = e(t && t.replace ? t.replace(/,/g, "") : t);
				if (!isNaN(n)) return n;
			}
			return 0;
		};
	}
	t.exports = n;
})), Tt = /* @__PURE__ */ U(((e, t) => {
	t.exports = wt()(parseFloat);
})), Et = /* @__PURE__ */ U(((e, t) => {
	var n = Tt();
	function r(e, t, r) {
		var i = [], a = arguments.length;
		if (e) {
			if (t = a >= 2 ? n(t) : 0, r = a >= 3 ? n(r) : e.length, e.slice) return e.slice(t, r);
			for (; t < r; t++) i.push(e[t]);
		}
		return i;
	}
	t.exports = r;
})), Dt = /* @__PURE__ */ U(((e, t) => {
	var n = q();
	function r(e, t, r) {
		var i = [];
		if (e && t) {
			if (e.filter) return e.filter(t, r);
			n(e, function(n, a) {
				t.call(r, n, a, e) && i.push(n);
			});
		}
		return i;
	}
	t.exports = r;
})), Ot = /* @__PURE__ */ U(((e, t) => {
	t.exports = it()("", 0, 2, !0);
})), kt = /* @__PURE__ */ U(((e, t) => {
	t.exports = it()("find", 1, 3, !0);
})), At = /* @__PURE__ */ U(((e, t) => {
	var n = K(), r = xt();
	function i(e, t, i) {
		if (e) {
			n(e) || (e = r(e));
			for (var a = e.length - 1; a >= 0; a--) if (t.call(i, e[a], a, e)) return e[a];
		}
	}
	t.exports = i;
})), jt = /* @__PURE__ */ U(((e, t) => {
	var n = Je();
	function r(e, t, r) {
		if (e) {
			var i, a, o = 0, s = null, c = r, l = arguments.length > 2, u = n(e);
			if (e.length && e.reduce) return a = function() {
				return t.apply(s, arguments);
			}, l ? e.reduce(a, c) : e.reduce(a);
			for (l && (o = 1, c = e[u[0]]), i = u.length; o < i; o++) c = t.call(s, c, e[u[o]], o, e);
			return c;
		}
	}
	t.exports = r;
})), Mt = /* @__PURE__ */ U(((e, t) => {
	var n = K();
	function r(e, t, r, i) {
		if (n(e) && e.copyWithin) return e.copyWithin(t, r, i);
		var a, o, s = t >> 0, c = r >> 0, l = e.length, u = arguments.length > 3 ? i >> 0 : l;
		if (s < l && (s = s >= 0 ? s : l + s, s >= 0 && (c = c >= 0 ? c : l + c, u = u >= 0 ? u : l + u, c < u))) for (a = 0, o = e.slice(c, u); s < l && !(o.length <= a); s++) e[s] = o[a++];
		return e;
	}
	t.exports = r;
})), Nt = /* @__PURE__ */ U(((e, t) => {
	var n = K();
	function r(e, t) {
		var r, i = [], a = t >> 0 || 1;
		if (n(e)) {
			if (a >= 0 && e.length > a) for (r = 0; r < e.length;) i.push(e.slice(r, r + a)), r += a;
			else i = e.length ? [e] : e;
		}
		return i;
	}
	t.exports = r;
})), Pt = /* @__PURE__ */ U(((e, t) => {
	var n = Z(), r = $e();
	function i(e, t) {
		return n(e, r(t));
	}
	t.exports = i;
})), Ft = /* @__PURE__ */ U(((e, t) => {
	var n = J(), r = mt(), i = _t(), a = G();
	function o(e) {
		return function(t, o) {
			if (t && t.length) {
				var s, c;
				return a(t, function(a, l) {
					o && (a = n(o) ? o(a, l, t) : i(a, o)), !r(a) && (r(s) || e(s, a)) && (c = l, s = a);
				}), t[c];
			}
			return s;
		};
	}
	t.exports = o;
})), It = /* @__PURE__ */ U(((e, t) => {
	t.exports = Ft()(function(e, t) {
		return e < t;
	});
})), Lt = /* @__PURE__ */ U(((e, t) => {
	var n = Pt(), r = It();
	function i(e) {
		var t, i, a, o = [];
		if (e && e.length) for (t = 0, i = r(e, function(e) {
			return e ? e.length : 0;
		}), a = i ? i.length : 0; t < a; t++) o.push(n(e, t));
		return o;
	}
	t.exports = i;
})), Rt = /* @__PURE__ */ U(((e, t) => {
	var n = Lt();
	function r() {
		return n(arguments);
	}
	t.exports = r;
})), zt = /* @__PURE__ */ U(((e, t) => {
	var n = xt(), r = q();
	function i(e, t) {
		var i = {};
		return t ||= [], r(n(e), function(e, n) {
			i[e] = t[n];
		}), i;
	}
	t.exports = i;
})), Bt = /* @__PURE__ */ U(((e, t) => {
	var n = K(), r = G();
	function i(e, t) {
		var a = [];
		return r(e, function(e) {
			a = a.concat(n(e) ? t ? i(e, t) : e : [e]);
		}), a;
	}
	function a(e, t) {
		return n(e) ? i(e, t) : [];
	}
	t.exports = a;
})), Vt = /* @__PURE__ */ U(((e, t) => {
	var n = Z(), r = K();
	function i(e, t) {
		for (var n = 0, r = t.length; e && n < r;) e = e[t[n++]];
		return r && e ? e : 0;
	}
	function a(e, t) {
		for (var a, o = arguments, s = [], c = [], l = 2, u = o.length; l < u; l++) s.push(o[l]);
		if (r(t)) {
			for (u = t.length - 1, l = 0; l < u; l++) c.push(t[l]);
			t = t[u];
		}
		return n(e, function(e) {
			if (c.length && (e = i(e, c)), a = e[t] || t, a && a.apply) return a.apply(e, s);
		});
	}
	t.exports = a;
})), Ht = /* @__PURE__ */ U(((e, t) => {
	function n(e, t) {
		return (console[e] || console.log)(t);
	}
	t.exports = n;
})), Ut = /* @__PURE__ */ U(((e, t) => {
	function n(e, t) {
		try {
			delete e[t];
		} catch {
			e[t] = void 0;
		}
	}
	t.exports = n;
})), Wt = /* @__PURE__ */ U(((e, t) => {
	var n = K(), r = Ze(), i = X();
	function a(e, t, a) {
		return e && (n(e) ? r : i)(e, t, a);
	}
	t.exports = a;
})), Gt = /* @__PURE__ */ U(((e, t) => {
	t.exports = Ke()("object");
})), Kt = /* @__PURE__ */ U(((e, t) => {
	var n = Ut(), r = tt(), i = Gt(), a = K(), o = Qe(), s = Xe(), c = Ge();
	function l(e, t, l) {
		if (e) {
			var u, d = arguments.length > 1 && (o(t) || !i(t)), f = d ? l : t;
			if (r(e)) c(e, d ? function(n, r) {
				e[r] = t;
			} : function(t, r) {
				n(e, r);
			}), f && s(e, f);
			else if (a(e)) {
				if (d) for (u = e.length; u > 0;) u--, e[u] = t;
				else e.length = 0;
				f && e.push.apply(e, f);
			}
		}
		return e;
	}
	t.exports = l;
})), qt = /* @__PURE__ */ U(((e, t) => {
	var n = Ut(), r = J(), i = K(), a = q(), o = G(), s = Wt(), c = Kt(), l = mt();
	function u(e) {
		return function(t, n) {
			return n === e;
		};
	}
	function d(e, t, d) {
		if (e) {
			if (!l(t)) {
				var f = [], p = [];
				return r(t) || (t = u(t)), a(e, function(e, n, r) {
					t.call(d, e, n, r) && f.push(n);
				}), i(e) ? s(f, function(t, n) {
					p.push(e[t]), e.splice(t, 1);
				}) : (p = {}, o(f, function(t) {
					p[t] = e[t], n(e, t);
				})), p;
			}
			return c(e);
		}
		return e;
	}
	t.exports = d;
})), Jt = /* @__PURE__ */ U(((e, t) => {
	var n = W(), r = Ht(), i = vt(), a = Ye(), o = mt(), s = q(), c = qt(), l = Xe();
	function u(e, t) {
		s(e, function(e) {
			e[t] && !e[t].length && c(e, t);
		});
	}
	function d(e, t) {
		var c = l({}, n.treeOptions, t), d = c.strict, f = c.key, p = c.parentKey, m = c.children, h = c.mapChildren, g = c.sortKey, _ = c.reverse, v = c.data, y = [], b = {}, x = {}, S, C, w;
		return g && (e = i(a(e), g), _ && (e = e.reverse())), s(e, function(e) {
			S = e[f], x[S] && r("warn", "Duplicate primary key=" + S), x[S] = !0;
		}), s(e, function(e) {
			S = e[f], v ? (C = {}, C[v] = e) : C = e, w = e[p], b[S] = b[S] || [], C[f] = S, C[p] = w, S === w && (w = null, r("warn", "Error infinite Loop. key=" + S + " parentKey=" + S)), b[w] = b[w] || [], b[w].push(C), C[m] = b[S], h && (C[h] = b[S]), (!d || d && o(w)) && (x[w] || y.push(C));
		}), d && u(e, m), y;
	}
	t.exports = d;
})), Yt = /* @__PURE__ */ U(((e, t) => {
	var n = W(), r = G(), i = Xe();
	function a(e, t, n, i) {
		var o = i.key, s = i.parentKey, c = i.children, l = i.data, u = i.updated, d = i.clear;
		return r(n, function(n) {
			var r = n[c];
			l && (n = n[l]), u !== !1 && (n[s] = t ? t[o] : null), e.push(n), r && r.length && a(e, n, r, i), d && delete n[c];
		}), e;
	}
	function o(e, t) {
		return a([], null, e, i({}, n.treeOptions, t));
	}
	t.exports = o;
})), Xt = /* @__PURE__ */ U(((e, t) => {
	function n(e) {
		return function(t, n, r, i) {
			var a = r || {};
			return e(null, t, n, i, [], [], a.children || "children", a);
		};
	}
	t.exports = n;
})), Zt = /* @__PURE__ */ U(((e, t) => {
	var n = Xt();
	function r(e, t, n, i, a, o, s, c) {
		if (t) {
			var l, u, d, f, p, m;
			for (u = 0, d = t.length; u < d; u++) {
				if (l = t[u], f = a.concat(["" + u]), p = o.concat([l]), n.call(i, l, u, t, f, e, p)) return {
					index: u,
					item: l,
					path: f,
					items: t,
					parent: e,
					nodes: p
				};
				if (s && l && (m = r(l, l[s], n, i, f.concat([s]), p, s, c), m)) return m;
			}
		}
	}
	t.exports = n(r);
})), Qt = /* @__PURE__ */ U(((e, t) => {
	var n = Xt(), r = q();
	function i(e, t, n, a, o, s, c, l) {
		var u, d;
		r(t, function(r, f) {
			u = o.concat(["" + f]), d = s.concat([r]), n.call(a, r, f, t, u, e, d), r && c && (u.push(c), i(r, r[c], n, a, u, d, c, l));
		});
	}
	t.exports = n(i);
})), $t = /* @__PURE__ */ U(((e, t) => {
	var n = Xt(), r = Z();
	function i(e, t, n, a, o, s, c, l) {
		var u, d, f, p = l.mapChildren || c;
		return r(t, function(r, m) {
			return u = o.concat(["" + m]), d = s.concat([r]), f = n.call(a, r, m, t, u, e, d), f && r && c && r[c] && (f[p] = i(r, r[c], n, a, u, d, c, l)), f;
		});
	}
	t.exports = n(i);
})), en = /* @__PURE__ */ U(((e, t) => {
	var n = Qt();
	function r(e, t, r, i) {
		var a = [];
		return e && t && n(e, function(e, n, r, o, s, c) {
			t.call(i, e, n, r, o, s, c) && a.push(e);
		}, r), a;
	}
	t.exports = r;
})), tn = /* @__PURE__ */ U(((e, t) => {
	var n = Xt(), r = G(), i = Xe();
	function a(e, t, n, o, s, c, l, u, d) {
		var f, p, m, h, g, _ = [], v = d.original, y = d.data, b = d.mapChildren || u, x = d.isEvery;
		return r(n, function(r, S) {
			f = c.concat(["" + S]), p = l.concat([r]), h = e && !x || o.call(s, r, S, n, f, t, p), g = u && r[u], h || g ? (v ? m = r : (m = i({}, r), y && (m[y] = r)), m[b] = a(h, r, r[u], o, s, f, p, u, d), (h || m[b].length) && _.push(m)) : h && _.push(m);
		}), _;
	}
	t.exports = n(function(e, t, n, r, i, o, s, c) {
		return a(0, e, t, n, r, i, o, s, c);
	});
})), nn = /* @__PURE__ */ U(((e, t) => {
	function n(e, t) {
		if (e.indexOf) return e.indexOf(t);
		for (var n = 0, r = e.length; n < r; n++) if (t === e[n]) return n;
	}
	t.exports = n;
})), rn = /* @__PURE__ */ U(((e, t) => {
	function n(e, t) {
		if (e.lastIndexOf) return e.lastIndexOf(t);
		for (var n = e.length - 1; n >= 0; n--) if (t === e[n]) return n;
		return -1;
	}
	t.exports = n;
})), an = /* @__PURE__ */ U(((e, t) => {
	t.exports = Ke()("number");
})), on = /* @__PURE__ */ U(((e, t) => {
	var n = an();
	function r(e) {
		return n(e) && isNaN(e);
	}
	t.exports = r;
})), sn = /* @__PURE__ */ U(((e, t) => {
	t.exports = Ke()("string");
})), cn = /* @__PURE__ */ U(((e, t) => {
	t.exports = Ue()("Date");
})), ln = /* @__PURE__ */ U(((e, t) => {
	t.exports = parseInt;
})), un = /* @__PURE__ */ U(((e, t) => {
	function n(e) {
		return Date.UTC(e.y, e.M || 0, e.d || 1, e.H || 0, e.m || 0, e.s || 0, e.S || 0);
	}
	t.exports = n;
})), dn = /* @__PURE__ */ U(((e, t) => {
	function n(e) {
		return e.getTime();
	}
	t.exports = n;
})), fn = /* @__PURE__ */ U(((e, t) => {
	var n = ln(), r = un(), i = dn(), a = sn(), o = cn();
	function s(e) {
		return "(\\d{" + e + "})";
	}
	function c(e) {
		return e < 10 ? e * 100 : e < 100 ? e * 10 : e;
	}
	function l(e) {
		return isNaN(e) ? e : n(e);
	}
	for (var u = s(2), d = s("1,2"), f = s("1,7"), p = s("3,4"), m = ".{1}", h = m + d, g = "(([zZ])|([-+]\\d{2}:?\\d{2}))", _ = [
		p,
		h,
		h,
		h,
		h,
		h,
		m + f,
		g
	], v = [], y = _.length - 1; y >= 0; y--) {
		for (var b = "", x = 0; x < y + 1; x++) b += _[x];
		v.push(RegExp("^" + b + "$"));
	}
	function S(e) {
		for (var t, n = {}, r = 0, i = v.length; r < i; r++) if (t = e.match(v[r]), t) {
			n.y = t[1], n.M = t[2], n.d = t[3], n.H = t[4], n.m = t[5], n.s = t[6], n.S = t[7], n.Z = t[8];
			break;
		}
		return n;
	}
	for (var C = [
		["yyyy", p],
		["yy", u],
		["MM", u],
		["M", d],
		["dd", u],
		["d", d],
		["HH", u],
		["H", d],
		["mm", u],
		["m", d],
		["ss", u],
		["s", d],
		["SSS", s(3)],
		["S", f],
		["Z", g]
	], w = {}, T = ["\\[([^\\]]+)\\]"], x = 0; x < C.length; x++) {
		var E = C[x];
		w[E[0]] = E[1] + "?", T.push(E[0]);
	}
	var D = new RegExp(T.join("|"), "g"), O = {};
	function k(e, t) {
		var n = O[t];
		if (!n) {
			var r = [], i = t.replace(/([$(){}*+.?\\^|])/g, "\\$1").replace(D, function(e, t) {
				var n = e.charAt(0);
				return n === "[" ? t : (r.push(n), w[e]);
			});
			n = O[t] = {
				_i: r,
				_r: new RegExp(i)
			};
		}
		var a = {}, o = e.match(n._r);
		if (o) {
			for (var s = n._i, c = 1, l = o.length; c < l; c++) a[s[c - 1]] = o[c];
			return a;
		}
		return a;
	}
	function A(e) {
		if (/^[zZ]/.test(e.Z)) return new Date(r(e));
		var t = e.Z.match(/([-+])(\d{2}):?(\d{2})/);
		return t ? /* @__PURE__ */ new Date(r(e) - (t[1] === "-" ? -1 : 1) * n(t[2]) * 36e5 + n(t[3]) * 6e4) : /* @__PURE__ */ new Date("");
	}
	function ee(e, t) {
		if (e) {
			var r = o(e);
			if (r || !t && /^[0-9]{11,15}$/.test(e)) return new Date(r ? i(e) : n(e));
			if (a(e)) {
				var s = t ? k(e, t) : S(e);
				if (s.y) return s.M &&= l(s.M) - 1, s.S &&= c(l(s.S.substring(0, 3))), s.Z ? A(s) : new Date(s.y, s.M || 0, s.d || 1, s.H || 0, s.m || 0, s.s || 0, s.S || 0);
			}
		}
		return /* @__PURE__ */ new Date("");
	}
	t.exports = ee;
})), pn = /* @__PURE__ */ U(((e, t) => {
	function n() {
		return /* @__PURE__ */ new Date();
	}
	t.exports = n;
})), mn = /* @__PURE__ */ U(((e, t) => {
	var n = cn(), r = fn(), i = pn();
	function a(e) {
		var t, a = e ? r(e) : i();
		return n(a) ? (t = a.getFullYear(), t % 4 == 0 && (t % 100 != 0 || t % 400 == 0)) : !1;
	}
	t.exports = a;
})), hn = /* @__PURE__ */ U(((e, t) => {
	var n = K(), r = We();
	function i(e, t, i) {
		if (e) {
			if (n(e)) for (var a = 0, o = e.length; a < o && t.call(i, e[a], a, e) !== !1; a++);
			else for (var s in e) if (r(e, s) && t.call(i, e[s], s, e) === !1) break;
		}
	}
	t.exports = i;
})), gn = /* @__PURE__ */ U(((e, t) => {
	var n = K(), r = We();
	function i(e, t, i) {
		if (e) {
			var a, o;
			if (n(e)) for (a = e.length - 1; a >= 0 && t.call(i, e[a], a, e) !== !1; a--);
			else for (o = r(e), a = o.length - 1; a >= 0 && t.call(i, e[o[a]], o[a], e) !== !1; a--);
		}
	}
	t.exports = i;
})), _n = /* @__PURE__ */ U(((e, t) => {
	var n = K(), r = sn(), i = We();
	function a(e, t) {
		return function(a, o) {
			if (a) {
				if (a[e]) return a[e](o);
				if (r(a) || n(a)) return t(a, o);
				for (var s in a) if (i(a, s) && o === a[s]) return s;
			}
			return -1;
		};
	}
	t.exports = a;
})), vn = /* @__PURE__ */ U(((e, t) => {
	t.exports = _n()("indexOf", nn());
})), yn = /* @__PURE__ */ U(((e, t) => {
	t.exports = _n()("lastIndexOf", rn());
})), bn = /* @__PURE__ */ U(((e, t) => {
	var n = K(), r = sn(), i = q();
	function a(e) {
		var t = 0;
		return r(e) || n(e) ? e.length : (i(e, function() {
			t++;
		}), t);
	}
	t.exports = a;
})), xn = /* @__PURE__ */ U(((e, t) => {
	var n = an();
	function r(e) {
		return n(e) && isFinite(e);
	}
	t.exports = r;
})), Sn = /* @__PURE__ */ U(((e, t) => {
	var n = K(), r = Qe();
	t.exports = function(e) {
		return !r(e) && !isNaN(e) && !n(e) && e % 1 == 0;
	};
})), Cn = /* @__PURE__ */ U(((e, t) => {
	var n = K(), r = Sn(), i = Qe();
	function a(e) {
		return !i(e) && !isNaN(e) && !n(e) && !r(e);
	}
	t.exports = a;
})), wn = /* @__PURE__ */ U(((e, t) => {
	t.exports = Ke()("boolean");
})), Tn = /* @__PURE__ */ U(((e, t) => {
	t.exports = Ue()("RegExp");
})), En = /* @__PURE__ */ U(((e, t) => {
	t.exports = Ue()("Error");
})), Dn = /* @__PURE__ */ U(((e, t) => {
	function n(e) {
		return e ? e.constructor === TypeError : !1;
	}
	t.exports = n;
})), On = /* @__PURE__ */ U(((e, t) => {
	function n(e) {
		for (var t in e) return !1;
		return !0;
	}
	t.exports = n;
})), kn = /* @__PURE__ */ U(((e, t) => {
	var n = ft(), r = typeof Symbol !== n;
	function i(e) {
		return r && Symbol.isSymbol ? Symbol.isSymbol(e) : typeof e == "symbol";
	}
	t.exports = i;
})), An = /* @__PURE__ */ U(((e, t) => {
	t.exports = Ue()("Arguments");
})), jn = /* @__PURE__ */ U(((e, t) => {
	var n = sn(), r = an();
	function i(e) {
		return !!(e && n(e.nodeName) && r(e.nodeType));
	}
	t.exports = i;
})), Mn = /* @__PURE__ */ U(((e, t) => {
	var n = ft();
	t.exports = typeof document === n ? 0 : document;
})), Nn = /* @__PURE__ */ U(((e, t) => {
	var n = Mn();
	function r(e) {
		return !!(e && n && e.nodeType === 9);
	}
	t.exports = r;
})), Pn = /* @__PURE__ */ U(((e, t) => {
	var n = ft();
	t.exports = typeof window === n ? 0 : window;
})), Fn = /* @__PURE__ */ U(((e, t) => {
	var n = Pn();
	function r(e) {
		return !!(n && e && e === e.window);
	}
	t.exports = r;
})), In = /* @__PURE__ */ U(((e, t) => {
	var n = ft(), r = typeof FormData !== n;
	function i(e) {
		return r && e instanceof FormData;
	}
	t.exports = i;
})), Ln = /* @__PURE__ */ U(((e, t) => {
	var n = ft(), r = typeof Map !== n;
	function i(e) {
		return r && e instanceof Map;
	}
	t.exports = i;
})), Rn = /* @__PURE__ */ U(((e, t) => {
	var n = ft(), r = typeof WeakMap !== n;
	function i(e) {
		return r && e instanceof WeakMap;
	}
	t.exports = i;
})), zn = /* @__PURE__ */ U(((e, t) => {
	var n = ft(), r = typeof Set !== n;
	function i(e) {
		return r && e instanceof Set;
	}
	t.exports = i;
})), Bn = /* @__PURE__ */ U(((e, t) => {
	var n = ft(), r = typeof WeakSet !== n;
	function i(e) {
		return r && e instanceof WeakSet;
	}
	t.exports = i;
})), Vn = /* @__PURE__ */ U(((e, t) => {
	var n = J(), r = sn(), i = K(), a = We();
	function o(e) {
		return function(t, o, s) {
			if (t && n(o)) {
				if (i(t) || r(t)) return e(t, o, s);
				for (var c in t) if (a(t, c) && o.call(s, t[c], c, t)) return c;
			}
			return -1;
		};
	}
	t.exports = o;
})), Hn = /* @__PURE__ */ U(((e, t) => {
	t.exports = Vn()(function(e, t, n) {
		for (var r = 0, i = e.length; r < i; r++) if (t.call(n, e[r], r, e)) return r;
		return -1;
	});
})), Un = /* @__PURE__ */ U(((e, t) => {
	var n = an(), r = K(), i = sn(), a = Tn(), o = cn(), s = wn(), c = pt(), l = Je(), u = ot();
	function d(e, t, f, p, m, h, g) {
		if (e === t) return !0;
		if (e && t && !n(e) && !n(t) && !i(e) && !i(t)) {
			if (a(e)) return f("" + e, "" + t, m, h, g);
			if (o(e) || s(e)) return f(+e, +t, m, h, g);
			var _, v, y, b = r(e), x = r(t);
			if (b || x ? b && x : e.constructor === t.constructor) return v = l(e), y = l(t), p && (_ = p(e, t, m)), v.length === y.length ? c(_) ? u(v, function(n, r) {
				return n === y[r] && d(e[n], t[y[r]], f, p, b || x ? r : n, e, t);
			}) : !!_ : !1;
		}
		return f(e, t, m, h, g);
	}
	t.exports = d;
})), Wn = /* @__PURE__ */ U(((e, t) => {
	function n(e, t) {
		return e === t;
	}
	t.exports = n;
})), Gn = /* @__PURE__ */ U(((e, t) => {
	var n = Un(), r = Wn();
	function i(e, t) {
		return n(e, t, r);
	}
	t.exports = i;
})), Kn = /* @__PURE__ */ U(((e, t) => {
	var n = Je(), r = Hn(), i = Gn(), a = at(), o = ct();
	function s(e, t) {
		var s = n(e), c = n(t);
		if (c.length) {
			if (o(s, c)) return a(c, function(n) {
				return r(s, function(r) {
					return r === n && i(e[r], t[n]);
				}) > -1;
			});
		} else return !0;
		return i(e, t);
	}
	t.exports = s;
})), qn = /* @__PURE__ */ U(((e, t) => {
	var n = Un(), r = Wn(), i = J(), a = pt();
	function o(e, t, o) {
		return i(o) ? n(e, t, function(e, t, n, i, s) {
			var c = o(e, t, n, i, s);
			return a(c) ? r(e, t) : !!c;
		}, o) : n(e, t, r);
	}
	t.exports = o;
})), Jn = /* @__PURE__ */ U(((e, t) => {
	var n = kn(), r = cn(), i = K(), a = Tn(), o = En(), s = Qe();
	function c(e) {
		return s(e) ? "null" : n(e) ? "symbol" : r(e) ? "date" : i(e) ? "array" : a(e) ? "regexp" : o(e) ? "error" : typeof e;
	}
	t.exports = c;
})), Yn = /* @__PURE__ */ U(((e, t) => {
	var n = W(), r = mt();
	function i(e) {
		return "" + (r(e) ? "" : e) + n.keyId++;
	}
	t.exports = i;
})), Xn = /* @__PURE__ */ U(((e, t) => {
	t.exports = Vn()(function(e, t, n) {
		for (var r = e.length - 1; r >= 0; r--) if (t.call(n, e[r], r, e)) return r;
		return -1;
	});
})), Zn = /* @__PURE__ */ U(((e, t) => {
	var n = tt(), r = sn();
	function i(e) {
		if (n(e)) return e;
		if (r(e)) try {
			return JSON.parse(e);
		} catch {}
		return {};
	}
	t.exports = i;
})), Qn = /* @__PURE__ */ U(((e, t) => {
	var n = mt();
	function r(e) {
		return n(e) ? "" : JSON.stringify(e);
	}
	t.exports = r;
})), $n = /* @__PURE__ */ U(((e, t) => {
	t.exports = qe()("entries", 2);
})), er = /* @__PURE__ */ U(((e, t) => {
	var n = J(), r = K(), i = q(), a = Hn();
	function o(e, t) {
		return function(o, s) {
			var c, l, u = {}, d = [], f = this, p = arguments, m = p.length;
			if (!n(s)) {
				for (l = 1; l < m; l++) c = p[l], d.push.apply(d, r(c) ? c : [c]);
				s = 0;
			}
			return i(o, function(n, r) {
				((s ? s.call(f, n, r, o) : a(d, function(e) {
					return e === r;
				}) > -1) ? e : t) && (u[r] = n);
			}), u;
		};
	}
	t.exports = o;
})), tr = /* @__PURE__ */ U(((e, t) => {
	t.exports = er()(1, 0);
})), nr = /* @__PURE__ */ U(((e, t) => {
	t.exports = er()(0, 1);
})), rr = /* @__PURE__ */ U(((e, t) => {
	var n = xt();
	function r(e) {
		return n(e)[0];
	}
	t.exports = r;
})), ir = /* @__PURE__ */ U(((e, t) => {
	var n = xt();
	function r(e) {
		var t = n(e);
		return t[t.length - 1];
	}
	t.exports = r;
})), ar = /* @__PURE__ */ U(((e, t) => {
	var n = ht(), r = gt(), i = We();
	function a(e, t) {
		if (e) {
			if (i(e, t)) return !0;
			var a, o, s, c, l, u, d = r(t), f = 0, p = d.length;
			for (l = e; f < p && (u = !1, a = d[f], c = a ? a.match(n) : "", c ? (o = c[1], s = c[2], o ? l[o] && i(l[o], s) && (u = !0, l = l[o][s]) : i(l, s) && (u = !0, l = l[s])) : i(l, a) && (u = !0, l = l[a]), u); f++) if (f === p - 1) return !0;
		}
		return !1;
	}
	t.exports = a;
})), or = /* @__PURE__ */ U(((e, t) => {
	var n = ln(), r = gt(), i = nt(), a = We(), o = /(.+)?\[(\d+)\]$/;
	function s(e, t, r, i, a) {
		if (e[t]) r && (e[t] = a);
		else {
			var s, c, l = t ? t.match(o) : null;
			if (r) c = a;
			else {
				var u = i ? i.match(o) : null;
				c = u && !u[1] ? Array(n(u[2]) + 1) : {};
			}
			return l ? l[1] ? (s = n(l[2]), e[l[1]] ? r ? e[l[1]][s] = c : e[l[1]][s] ? c = e[l[1]][s] : e[l[1]][s] = c : (e[l[1]] = Array(s + 1), e[l[1]][s] = c)) : e[l[2]] = c : e[t] = c, c;
		}
		return e[t];
	}
	function c(e, t, n) {
		if (e && i(t)) {
			if ((e[t] || a(e, t)) && !l(t)) e[t] = n;
			else for (var o = e, c = r(t), u = c.length, d = 0; d < u; d++) if (!l(c[d])) {
				var f = d === u - 1;
				o = s(o, c[d], f, f ? null : c[d + 1], n);
			}
		}
		return e;
	}
	function l(e) {
		return e === "__proto__" || e === "constructor" || e === "prototype";
	}
	t.exports = c;
})), sr = /* @__PURE__ */ U(((e, t) => {
	var n = On(), r = Gt(), i = J(), a = $e(), o = q();
	function s(e) {
		return function() {
			return n(e);
		};
	}
	function c(e, t, n) {
		var c, l = {};
		return e && (t && r(t) ? t = s(t) : i(t) || (t = a(t)), o(e, function(r, i) {
			c = t ? t.call(n, r, i, e) : r, l[c] ? l[c].push(r) : l[c] = [r];
		})), l;
	}
	t.exports = c;
})), cr = /* @__PURE__ */ U(((e, t) => {
	var n = sr(), r = Ge();
	function i(e, t, i) {
		var a = n(e, t, i || this);
		return r(a, function(e, t) {
			a[t] = e.length;
		}), a;
	}
	t.exports = i;
})), lr = /* @__PURE__ */ U(((e, t) => {
	function n(e, t, n) {
		var r, i, a = [], o = arguments;
		if (o.length < 2 && (t = o[0], e = 0), r = e >> 0, i = t >> 0, r < t) for (n = n >> 0 || 1; r < i; r += n) a.push(r);
		return a;
	}
	t.exports = n;
})), ur = /* @__PURE__ */ U(((e, t) => {
	var n = Je(), r = Et(), i = st(), a = G(), o = Xe();
	function s(e, t) {
		if (e && t) {
			var s = o.apply(this, [{}].concat(r(arguments, 1))), c = n(s);
			a(n(e), function(t) {
				i(c, t) && (e[t] = s[t]);
			});
		}
		return e;
	}
	t.exports = s;
})), dr = /* @__PURE__ */ U(((e, t) => {
	t.exports = Ft()(function(e, t) {
		return e > t;
	});
})), fr = /* @__PURE__ */ U(((e, t) => {
	function n(e) {
		return (e.split(".")[1] || "").length;
	}
	t.exports = n;
})), pr = /* @__PURE__ */ U(((e, t) => {
	var n = ln();
	function r(e, t) {
		if (e.repeat) return e.repeat(t);
		var r = isNaN(t) ? [] : Array(n(t));
		return r.join(e) + (r.length > 0 ? e : "");
	}
	t.exports = r;
})), mr = /* @__PURE__ */ U(((e, t) => {
	function n(e, t) {
		return e.substring(0, t) + "." + e.substring(t, e.length);
	}
	t.exports = n;
})), hr = /* @__PURE__ */ U(((e, t) => {
	var n = pr(), r = mr();
	function i(e) {
		var t = "" + e, i = t.match(/^([-+]?)((\d+)|((\d+)?[.](\d+)?))e([-+]{1})([0-9]+)$/);
		if (i) {
			var a = e < 0 ? "-" : "", o = i[3] || "", s = i[5] || "", c = i[6] || "", l = i[7], u = i[8], d = u - c.length, f = u - o.length, p = u - s.length;
			return l === "+" ? o ? a + o + n("0", u) : d > 0 ? a + s + c + n("0", d) : a + s + r(c, u) : o ? f > 0 ? a + "0." + n("0", Math.abs(f)) + o : a + r(o, f) : p > 0 ? a + "0." + n("0", Math.abs(p)) + s + c : a + r(s, p) + c;
		}
		return t;
	}
	t.exports = i;
})), gr = /* @__PURE__ */ U(((e, t) => {
	var n = fr(), r = hr();
	function i(e, t) {
		var i = r(e), a = r(t);
		return parseInt(i.replace(".", "")) * parseInt(a.replace(".", "")) / 10 ** (n(i) + n(a));
	}
	t.exports = i;
})), _r = /* @__PURE__ */ U(((e, t) => {
	var n = gr(), r = Tt(), i = hr();
	function a(e) {
		return function(t, a) {
			var o = r(t), s = o;
			if (o) {
				a >>= 0;
				var c = i(o).split("."), l = c[0], u = c[1] || "", d = u.substring(0, a + 1), f = l + (d ? "." + d : "");
				if (a >= u.length) return r(f);
				if (f = o, a > 0) {
					var p = 10 ** a;
					s = Math[e](n(f, p)) / p;
				} else s = Math[e](f);
			}
			return s;
		};
	}
	t.exports = a;
})), vr = /* @__PURE__ */ U(((e, t) => {
	t.exports = _r()("round");
})), yr = /* @__PURE__ */ U(((e, t) => {
	t.exports = _r()("ceil");
})), br = /* @__PURE__ */ U(((e, t) => {
	t.exports = _r()("floor");
})), xr = /* @__PURE__ */ U(((e, t) => {
	var n = mt(), r = an(), i = hr();
	function a(e) {
		return r(e) ? i(e) : "" + (n(e) ? "" : e);
	}
	t.exports = a;
})), Sr = /* @__PURE__ */ U(((e, t) => {
	var n = vr(), r = xr(), i = pr(), a = mr();
	function o(e, t) {
		t >>= 0;
		var o = r(n(e, t)).split("."), s = o[0], c = o[1] || "", l = t - c.length;
		return t ? l > 0 ? s + "." + c + i("0", l) : s + a(c, Math.abs(l)) : s;
	}
	t.exports = o;
})), Cr = /* @__PURE__ */ U(((e, t) => {
	var n = W(), r = vr(), i = yr(), a = br(), o = an(), s = xr(), c = Sr(), l = hr(), u = Xe();
	function d(e, t) {
		var d = u({}, n.commafyOptions, t), f = d.digits, p = o(e), m, h, g, _, v;
		return p ? (m = (d.ceil ? i : d.floor ? a : r)(e, f), h = l(f ? c(m, f) : m).split("."), _ = h[0], v = h[1], g = _ && m < 0, g && (_ = _.substring(1, _.length))) : (m = s(e).replace(/,/g, ""), h = m ? [m] : [], _ = h[0]), h.length ? (g ? "-" : "") + _.replace(RegExp("(?=(?!(\\b))(.{" + (d.spaceNumber || 3) + "})+$)", "g"), d.separator || ",") + (v ? "." + v : "") : m;
	}
	t.exports = d;
})), wr = /* @__PURE__ */ U(((e, t) => {
	var n = ln();
	t.exports = wt()(n);
})), Tr = /* @__PURE__ */ U(((e, t) => {
	var n = gr(), r = Tt();
	function i(e, t) {
		return n(r(e), r(t));
	}
	t.exports = i;
})), Er = /* @__PURE__ */ U(((e, t) => {
	var n = fr(), r = hr(), i = Tr();
	function a(e, t) {
		var a = r(e), o = r(t), s = 10 ** Math.max(n(a), n(o));
		return (i(e, s) + i(t, s)) / s;
	}
	t.exports = a;
})), Dr = /* @__PURE__ */ U(((e, t) => {
	var n = Er(), r = Tt();
	function i(e, t) {
		return n(r(e), r(t));
	}
	t.exports = i;
})), Or = /* @__PURE__ */ U(((e, t) => {
	var n = fr(), r = hr(), i = Tt(), a = Sr();
	function o(e, t) {
		var o = i(e), s = i(t), c = r(o), l = r(s), u = n(c), d = n(l), f = 10 ** Math.max(u, d), p = u >= d ? u : d;
		return parseFloat(a((o * f - s * f) / f, p));
	}
	t.exports = o;
})), kr = /* @__PURE__ */ U(((e, t) => {
	var n = fr(), r = hr(), i = Tr();
	function a(e, t) {
		var a = r(e), o = r(t), s = n(a), c = n(o) - s, l = c < 0, u = 10 ** (l ? Math.abs(c) : c);
		return i(a.replace(".", "") / o.replace(".", ""), l ? 1 / u : u);
	}
	t.exports = a;
})), Ar = /* @__PURE__ */ U(((e, t) => {
	var n = kr(), r = Tt();
	function i(e, t) {
		return n(r(e), r(t));
	}
	t.exports = i;
})), jr = /* @__PURE__ */ U(((e, t) => {
	var n = Er(), r = J(), i = K(), a = q(), o = _t();
	function s(e, t, s) {
		var c = 0;
		return a(e && e.length > 2 && i(e) ? e.sort() : e, t ? r(t) ? function() {
			c = n(c, t.apply(s, arguments));
		} : function(e) {
			c = n(c, o(e, t));
		} : function(e) {
			c = n(c, e);
		}), c;
	}
	t.exports = s;
})), Mr = /* @__PURE__ */ U(((e, t) => {
	var n = kr(), r = bn(), i = jr();
	function a(e, t, a) {
		return n(i(e, t, a), r(e));
	}
	t.exports = a;
})), Nr = /* @__PURE__ */ U(((e, t) => {
	t.exports = "first";
})), Pr = /* @__PURE__ */ U(((e, t) => {
	t.exports = "last";
})), Fr = /* @__PURE__ */ U(((e, t) => {
	function n(e) {
		return e.getFullYear();
	}
	t.exports = n;
})), Ir = /* @__PURE__ */ U(((e, t) => {
	t.exports = 864e5;
})), Lr = /* @__PURE__ */ U(((e, t) => {
	function n(e) {
		return e.getMonth();
	}
	t.exports = n;
})), Rr = /* @__PURE__ */ U(((e, t) => {
	var n = cn(), r = dn();
	function i(e) {
		return n(e) && !isNaN(r(e));
	}
	t.exports = i;
})), zr = /* @__PURE__ */ U(((e, t) => {
	var n = Nr(), r = Pr(), i = Ir(), a = Fr(), o = dn(), s = Lr(), c = fn(), l = Rr(), u = an();
	function d(e, t, f) {
		var p = t && !isNaN(t) ? t : 0;
		if (e = c(e), l(e)) {
			if (f === n) return new Date(a(e), s(e) + p, 1);
			if (f === r) return /* @__PURE__ */ new Date(o(d(e, p + 1, n)) - 1);
			if (u(f) && e.setDate(f), p) {
				var m = e.getDate();
				if (e.setMonth(s(e) + p), m !== e.getDate()) return e.setDate(1), new Date(o(e) - i);
			}
		}
		return e;
	}
	t.exports = d;
})), Br = /* @__PURE__ */ U(((e, t) => {
	var n = Nr(), r = Pr(), i = Fr(), a = zr(), o = fn(), s = Rr();
	function c(e, t, c) {
		var l;
		if (e = o(e), s(e) && (t && (l = t && !isNaN(t) ? t : 0, e.setFullYear(i(e) + l)), c || !isNaN(c))) {
			if (c === n) return new Date(i(e), 0, 1);
			if (c === r) return e.setMonth(11), a(e, 0, r);
			e.setMonth(c);
		}
		return e;
	}
	t.exports = c;
})), Vr = /* @__PURE__ */ U(((e, t) => {
	var n = zr(), r = fn(), i = Rr();
	function a(e) {
		var t = e.getMonth();
		return t < 3 ? 1 : t < 6 ? 2 : t < 9 ? 3 : 4;
	}
	function o(e, t, o) {
		var s, c = t && !isNaN(t) ? t * 3 : 0;
		return e = r(e), i(e) ? (s = (a(e) - 1) * 3, e.setMonth(s), n(e, c, o)) : e;
	}
	t.exports = o;
})), Hr = /* @__PURE__ */ U(((e, t) => {
	t.exports = Ir() * 7;
})), Ur = /* @__PURE__ */ U(((e, t) => {
	var n = W(), r = Ir(), i = Hr(), a = dn(), o = fn(), s = Rr(), c = an();
	function l(e, t, l, u) {
		if (e = o(e), s(e)) {
			var d = c(l), f = c(u), p = a(e);
			if (d || f) {
				var m = f ? u : n.firstDayOfWeek, h = e.getDay(), g = d ? l : h;
				if (h !== g) {
					var _ = 0;
					m > h ? _ = -(7 - m + h) : m < h && (_ = m - h), p += g > m ? ((g === 0 ? 7 : g) - m + _) * r : g < m ? (7 - m + g + _) * r : _ * r;
				}
			}
			return t && !isNaN(t) && (p += t * i), new Date(p);
		}
		return e;
	}
	t.exports = l;
})), Wr = /* @__PURE__ */ U(((e, t) => {
	var n = Nr(), r = Pr(), i = ln(), a = Fr(), o = Lr(), s = dn(), c = fn(), l = Rr();
	function u(e, t, d) {
		if (e = c(e), l(e) && !isNaN(t)) {
			if (e.setDate(e.getDate() + i(t)), d === n) return new Date(a(e), o(e), e.getDate());
			if (d === r) return /* @__PURE__ */ new Date(s(u(e, 1, n)) - 1);
		}
		return e;
	}
	t.exports = u;
})), Gr = /* @__PURE__ */ U(((e, t) => {
	var n = Nr(), r = Pr(), i = ln(), a = Fr(), o = Lr(), s = dn(), c = fn(), l = Rr();
	function u(e, t, d) {
		if (e = c(e), l(e) && !isNaN(t)) {
			if (e.setHours(e.getHours() + i(t)), d === n) return new Date(a(e), o(e), e.getDate(), e.getHours());
			if (d === r) return /* @__PURE__ */ new Date(s(u(e, 1, n)) - 1);
		}
		return e;
	}
	t.exports = u;
})), Kr = /* @__PURE__ */ U(((e, t) => {
	var n = Nr(), r = Pr(), i = ln(), a = Fr(), o = Lr(), s = dn(), c = fn(), l = Rr();
	function u(e, t, d) {
		if (e = c(e), l(e) && !isNaN(t)) {
			if (e.setMinutes(e.getMinutes() + i(t)), d === n) return new Date(a(e), o(e), e.getDate(), e.getHours(), e.getMinutes());
			if (d === r) return /* @__PURE__ */ new Date(s(u(e, 1, n)) - 1);
		}
		return e;
	}
	t.exports = u;
})), qr = /* @__PURE__ */ U(((e, t) => {
	var n = Nr(), r = Pr(), i = ln(), a = Fr(), o = Lr(), s = dn(), c = fn(), l = Rr();
	function u(e, t, d) {
		if (e = c(e), l(e) && !isNaN(t)) {
			if (e.setSeconds(e.getSeconds() + i(t)), d === n) return new Date(a(e), o(e), e.getDate(), e.getHours(), e.getMinutes(), e.getSeconds());
			if (d === r) return /* @__PURE__ */ new Date(s(u(e, 1, n)) - 1);
		}
		return e;
	}
	t.exports = u;
})), Jr = /* @__PURE__ */ U(((e, t) => {
	function n(e) {
		return e.toUpperCase();
	}
	t.exports = n;
})), Yr = /* @__PURE__ */ U(((e, t) => {
	var n = W(), r = Ir(), i = Hr(), a = an(), o = st(), s = fn(), c = Rr(), l = Ur(), u = lr(), d = Z(), f = dn(), p = d(u(0, 7), function(e) {
		return [
			(e + 1) % 7,
			(e + 2) % 7,
			(e + 3) % 7
		];
	});
	function m(e, t) {
		var n = new Date(e).getDay();
		return o(p[t], n);
	}
	function h(e, t) {
		return function(o, u) {
			var d = a(u) ? u : n.firstDayOfWeek, p = s(o);
			if (c(p)) {
				var h = l(p, 0, d, d), g = e(h), _ = f(g), v = f(h), y = v + r * 6, b = new Date(y), x = l(g, 0, d, d), S = f(x), C;
				if (v === S) return 1;
				if (t(h, b)) {
					for (C = f(e(b)); C < y; C += r) if (m(C, d)) return 1;
				}
				var w = S + r * 6, T = new Date(y), E = 1;
				if (t(x, T)) {
					for (E = 0, C = _; C < w; C += r) if (m(C, d)) {
						E++;
						break;
					}
				}
				return Math.floor((v - S) / i) + E;
			}
			return NaN;
		};
	}
	t.exports = h;
})), Xr = /* @__PURE__ */ U(((e, t) => {
	t.exports = Yr()(function(e) {
		return new Date(e.getFullYear(), 0, 1);
	}, function(e, t) {
		return e.getFullYear() !== t.getFullYear();
	});
})), Zr = /* @__PURE__ */ U(((e, t) => {
	var n = Fr(), r = Lr();
	function i(e) {
		return new Date(n(e), r(e), e.getDate());
	}
	t.exports = i;
})), Qr = /* @__PURE__ */ U(((e, t) => {
	var n = dn(), r = Zr();
	function i(e) {
		return n(r(e));
	}
	t.exports = i;
})), $r = /* @__PURE__ */ U(((e, t) => {
	var n = Ir(), r = Nr(), i = Qr(), a = Br(), o = fn(), s = Rr();
	function c(e) {
		return e = o(e), s(e) ? Math.floor((i(e) - i(a(e, 0, r))) / n) + 1 : NaN;
	}
	t.exports = c;
})), ei = /* @__PURE__ */ U(((e, t) => {
	var n = xr(), r = pt(), i = pr();
	function a(e, t, a) {
		var o = n(e);
		return t >>= 0, a = r(a) ? " " : "" + a, o.padStart ? o.padStart(t, a) : t > o.length ? (t -= o.length, t > a.length && (a += i(a, t / a.length)), a.slice(0, t) + o) : o;
	}
	t.exports = a;
})), ti = /* @__PURE__ */ U(((e, t) => {
	var n = W(), r = Jr(), i = Fr(), a = Lr(), o = fn(), s = Xr(), c = $r(), l = Xe(), u = Rr(), d = J(), f = mt(), p = ei();
	function m(e, t, n, r) {
		var i = t[n];
		return i ? d(i) ? i(r, n, e) : i[r] : r;
	}
	var h = /\[([^\]]+)]|y{2,4}|M{1,2}|d{1,2}|H{1,2}|h{1,2}|m{1,2}|s{1,2}|S{1,3}|Z{1,2}|W{1,2}|D{1,3}|[aAeEq]/g;
	function g(e, t, d) {
		if (e) {
			if (e = o(e), u(e)) {
				var g = d || {}, _ = t || n.parseDateFormat || n.formatString, v = e.getHours(), y = v < 12 ? "am" : "pm", b = l({}, n.parseDateRules || n.formatStringMatchs, g.formats), x = function(t, n) {
					return ("" + i(e)).substring(4 - n);
				}, S = function(t, n) {
					return p(a(e) + 1, n, "0");
				}, C = function(t, n) {
					return p(e.getDate(), n, "0");
				}, w = function(e, t) {
					return p(v, t, "0");
				}, T = function(e, t) {
					return p(v <= 12 ? v : v - 12, t, "0");
				}, E = function(t, n) {
					return p(e.getMinutes(), n, "0");
				}, D = function(t, n) {
					return p(e.getSeconds(), n, "0");
				}, O = function(t, n) {
					return p(e.getMilliseconds(), n, "0");
				}, k = function(t, n) {
					var r = e.getTimezoneOffset() / 60 * -1;
					return m(e, b, t, (r >= 0 ? "+" : "-") + p(r, 2, "0") + (n === 1 ? ":" : "") + "00");
				}, A = function(t, r) {
					return p(m(e, b, t, s(e, f(g.firstDay) ? n.firstDayOfWeek : g.firstDay)), r, "0");
				}, ee = function(t, n) {
					return p(m(e, b, t, c(e)), n, "0");
				}, j = {
					yyyy: x,
					yy: x,
					MM: S,
					M: S,
					dd: C,
					d: C,
					HH: w,
					H: w,
					hh: T,
					h: T,
					mm: E,
					m: E,
					ss: D,
					s: D,
					SSS: O,
					S: O,
					ZZ: k,
					Z: k,
					WW: A,
					W: A,
					DDD: ee,
					D: ee,
					a: function(t) {
						return m(e, b, t, y);
					},
					A: function(t) {
						return m(e, b, t, r(y));
					},
					e: function(t) {
						return m(e, b, t, e.getDay());
					},
					E: function(t) {
						return m(e, b, t, e.getDay());
					},
					q: function(t) {
						return m(e, b, t, Math.floor((a(e) + 3) / 3));
					}
				};
				return _.replace(h, function(e, t) {
					return t || (j[e] ? j[e](e, e.length) : e);
				});
			}
			return "Invalid Date";
		}
		return "";
	}
	t.exports = g;
})), ni = /* @__PURE__ */ U(((e, t) => {
	var n = dn(), r = pn();
	t.exports = Date.now || function() {
		return n(r());
	};
})), ri = /* @__PURE__ */ U(((e, t) => {
	var n = dn(), r = ni(), i = fn(), a = cn();
	t.exports = function(e, t) {
		if (e) {
			var o = i(e, t);
			return a(o) ? n(o) : o;
		}
		return r();
	};
})), ii = /* @__PURE__ */ U(((e, t) => {
	var n = ti();
	function r(e, t, r) {
		return e && t ? (e = n(e, r), e !== "Invalid Date" && e === n(t, r)) : !1;
	}
	t.exports = r;
})), ai = /* @__PURE__ */ U(((e, t) => {
	t.exports = Yr()(function(e) {
		return new Date(e.getFullYear(), e.getMonth(), 1);
	}, function(e, t) {
		return e.getMonth() !== t.getMonth();
	});
})), oi = /* @__PURE__ */ U(((e, t) => {
	var n = Br(), r = fn(), i = Rr(), a = mn();
	function o(e, t) {
		return e = r(e), i(e) ? a(n(e, t)) ? 366 : 365 : NaN;
	}
	t.exports = o;
})), si = /* @__PURE__ */ U(((e, t) => {
	var n = Ir(), r = Nr(), i = Pr(), a = dn(), o = zr(), s = fn(), c = Rr();
	function l(e, t) {
		return e = s(e), c(e) ? Math.floor((a(o(e, t, i)) - a(o(e, t, r))) / n) + 1 : NaN;
	}
	t.exports = l;
})), ci = /* @__PURE__ */ U(((e, t) => {
	var n = dn(), r = pn(), i = fn(), a = Rr(), o = [
		["yyyy", 31536e6],
		["MM", 2592e6],
		["dd", 864e5],
		["HH", 36e5],
		["mm", 6e4],
		["ss", 1e3],
		["S", 0]
	];
	function s(e, t) {
		var s, c, l, u, d, f, p = {
			done: !1,
			status: !1,
			time: 0
		};
		if (e = i(e), t = t ? i(t) : r(), a(e) && a(t) && (s = n(e), c = n(t), s < c)) for (u = p.time = c - s, p.done = !0, p.status = !0, f = 0, d = o.length; f < d; f++) l = o[f], u >= l[1] ? f === d - 1 ? p[l[0]] = u || 0 : (p[l[0]] = Math.floor(u / l[1]), u -= p[l[0]] * l[1]) : p[l[0]] = 0;
		return p;
	}
	t.exports = s;
})), li = /* @__PURE__ */ U(((e, t) => {
	var n = xr(), r = pt(), i = pr();
	function a(e, t, a) {
		var o = n(e);
		return t >>= 0, a = r(a) ? " " : "" + a, o.padEnd ? o.padEnd(t, a) : t > o.length ? (t -= o.length, t > a.length && (a += i(a, t / a.length)), o + a.slice(0, t)) : o;
	}
	t.exports = a;
})), ui = /* @__PURE__ */ U(((e, t) => {
	var n = xr(), r = pr();
	function i(e, t) {
		return r(n(e), t);
	}
	t.exports = i;
})), di = /* @__PURE__ */ U(((e, t) => {
	var n = xr();
	function r(e) {
		return e && e.trimRight ? e.trimRight() : n(e).replace(/[\s\uFEFF\xA0]+$/g, "");
	}
	t.exports = r;
})), fi = /* @__PURE__ */ U(((e, t) => {
	var n = xr();
	function r(e) {
		return e && e.trimLeft ? e.trimLeft() : n(e).replace(/^[\s\uFEFF\xA0]+/g, "");
	}
	t.exports = r;
})), pi = /* @__PURE__ */ U(((e, t) => {
	var n = di(), r = fi();
	function i(e) {
		return e && e.trim ? e.trim() : n(r(e));
	}
	t.exports = i;
})), mi = /* @__PURE__ */ U(((e, t) => {
	t.exports = {
		"&": "&amp;",
		"<": "&lt;",
		">": "&gt;",
		"\"": "&quot;",
		"'": "&#x27;",
		"`": "&#x60;"
	};
})), hi = /* @__PURE__ */ U(((e, t) => {
	var n = xr(), r = Je();
	function i(e) {
		var t = RegExp("(?:" + r(e).join("|") + ")", "g");
		return function(r) {
			return n(r).replace(t, function(t) {
				return e[t];
			});
		};
	}
	t.exports = i;
})), gi = /* @__PURE__ */ U(((e, t) => {
	var n = mi();
	t.exports = hi()(n);
})), _i = /* @__PURE__ */ U(((e, t) => {
	var n = mi(), r = hi(), i = q(), a = {};
	i(n, function(e, t) {
		a[n[t]] = t;
	}), t.exports = r(a);
})), vi = /* @__PURE__ */ U(((e, t) => {
	function n(e, t, n) {
		return e.substring(t, n);
	}
	t.exports = n;
})), yi = /* @__PURE__ */ U(((e, t) => {
	function n(e) {
		return e.toLowerCase();
	}
	t.exports = n;
})), bi = /* @__PURE__ */ U(((e, t) => {
	var n = xr(), r = vi(), i = Jr(), a = yi(), o = {};
	function s(e) {
		if (e = n(e), o[e]) return o[e];
		var t = e.length, s = e.replace(/([-]+)/g, function(e, n, r) {
			return r && r + n.length < t ? "-" : "";
		});
		return t = s.length, s = s.replace(/([A-Z]+)/g, function(e, n, o) {
			var s = n.length;
			return n = a(n), o ? s > 2 && o + s < t ? i(r(n, 0, 1)) + r(n, 1, s - 1) + i(r(n, s - 1, s)) : i(r(n, 0, 1)) + r(n, 1, s) : s > 1 && o + s < t ? r(n, 0, s - 1) + i(r(n, s - 1, s)) : n;
		}).replace(/(-[a-zA-Z])/g, function(e, t) {
			return i(r(t, 1, t.length));
		}), o[e] = s, s;
	}
	t.exports = s;
})), xi = /* @__PURE__ */ U(((e, t) => {
	var n = xr(), r = vi(), i = yi(), a = {};
	function o(e) {
		if (e = n(e), a[e]) return a[e];
		if (/^[A-Z]+$/.test(e)) return i(e);
		var t = e.replace(/^([a-z])([A-Z]+)([a-z]+)$/, function(e, t, n, a) {
			var o = n.length;
			return o > 1 ? t + "-" + i(r(n, 0, o - 1)) + "-" + i(r(n, o - 1, o)) + a : i(t + "-" + n + a);
		}).replace(/^([A-Z]+)([a-z]+)?$/, function(e, t, n) {
			var a = t.length;
			return i(r(t, 0, a - 1) + "-" + r(t, a - 1, a) + (n || ""));
		}).replace(/([a-z]?)([A-Z]+)([a-z]?)/g, function(e, t, n, a, o) {
			var s = n.length;
			return s > 1 && (t && (t += "-"), a) ? (t || "") + i(r(n, 0, s - 1)) + "-" + i(r(n, s - 1, s)) + a : (t || "") + (o ? "-" : "") + i(n) + (a || "");
		});
		return t = t.replace(/([-]+)/g, function(e, n, r) {
			return r && r + n.length < t.length ? "-" : "";
		}), a[e] = t, t;
	}
	t.exports = o;
})), Si = /* @__PURE__ */ U(((e, t) => {
	var n = xr();
	function r(e, t, r) {
		var i = n(e);
		return (arguments.length === 1 ? i : i.substring(r)).indexOf(t) === 0;
	}
	t.exports = r;
})), Ci = /* @__PURE__ */ U(((e, t) => {
	var n = xr();
	function r(e, t, r) {
		var i = n(e), a = arguments.length;
		return a > 1 && (a > 2 ? i.substring(0, r).indexOf(t) === r - 1 : i.indexOf(t) === i.length - 1);
	}
	t.exports = r;
})), wi = /* @__PURE__ */ U(((e, t) => {
	var n = W(), r = xr(), i = pi(), a = _t();
	function o(e, t, o) {
		return r(e).replace((o || n).tmplRE || /\{{2}([.\w[\]\s]+)\}{2}/g, function(e, n) {
			return a(t, i(n));
		});
	}
	t.exports = o;
})), Ti = /* @__PURE__ */ U(((e, t) => {
	var n = wi();
	function r(e, t) {
		return n(e, t, { tmplRE: /\{([.\w[\]\s]+)\}/g });
	}
	t.exports = r;
})), Ei = /* @__PURE__ */ U(((e, t) => {
	function n() {}
	t.exports = n;
})), Di = /* @__PURE__ */ U(((e, t) => {
	var n = Et();
	function r(e, t) {
		var r = n(arguments, 2);
		return function() {
			return e.apply(t, n(arguments).concat(r));
		};
	}
	t.exports = r;
})), Oi = /* @__PURE__ */ U(((e, t) => {
	var n = Et();
	function r(e, t) {
		var r = !1, i = null, a = n(arguments, 2);
		return function() {
			return r ? i : (i = e.apply(t, n(arguments).concat(a)), r = !0, i);
		};
	}
	t.exports = r;
})), ki = /* @__PURE__ */ U(((e, t) => {
	var n = Et();
	function r(e, t, r) {
		var i = 0, a = [];
		return function() {
			var o = arguments;
			i++, i <= e && a.push(o[0]), i >= e && t.apply(r, [a].concat(n(o)));
		};
	}
	t.exports = r;
})), Ai = /* @__PURE__ */ U(((e, t) => {
	var n = Et();
	function r(e, t, r) {
		var i = 0, a = [];
		return r ||= this, function() {
			var o = arguments;
			i++, i < e && (a.push(o[0]), t.apply(r, [a].concat(n(o))));
		};
	}
	t.exports = r;
})), ji = /* @__PURE__ */ U(((e, t) => {
	var n = Xe();
	function r(e, t, r) {
		var i = null, a = null, o = !1, s = null, c = n({
			leading: !0,
			trailing: !0
		}, r), l = c.leading, u = c.trailing, d = function() {
			i = null, a = null;
		}, f = function() {
			o = !0, e.apply(a, i), s = setTimeout(p, t), d();
		}, p = function() {
			if (s = null, o) {
				d();
				return;
			}
			if (u === !0) {
				f();
				return;
			}
			d();
		}, m = function() {
			var e = s !== null;
			return e && clearTimeout(s), d(), s = null, o = !1, e;
		}, h = function() {
			if (i = arguments, a = this, o = !1, s === null && l === !0) {
				f();
				return;
			}
			u === !0 && (s = setTimeout(p, t));
		};
		return h.cancel = m, h;
	}
	t.exports = r;
})), Mi = /* @__PURE__ */ U(((e, t) => {
	var n = Xe();
	function r(e, t, r) {
		var i = null, a = null, o = typeof r == "boolean" ? {
			leading: r,
			trailing: !r
		} : n({
			leading: !1,
			trailing: !0
		}, r), s = !1, c = null, l = o.leading, u = o.trailing, d = function() {
			i = null, a = null;
		}, f = function() {
			s = !0, e.apply(a, i), d();
		}, p = function() {
			if (l === !0 && (c = null), s) {
				d();
				return;
			}
			if (u === !0) {
				f();
				return;
			}
			d();
		}, m = function() {
			var e = c !== null;
			return e && clearTimeout(c), d(), c = null, s = !1, e;
		}, h = function() {
			s = !1, i = arguments, a = this, c === null ? l === !0 && f() : clearTimeout(c), c = setTimeout(p, t);
		};
		return h.cancel = m, h;
	}
	t.exports = r;
})), Ni = /* @__PURE__ */ U(((e, t) => {
	var n = Et();
	function r(e, t) {
		var r = n(arguments, 2), i = this;
		return setTimeout(function() {
			e.apply(i, r);
		}, t);
	}
	t.exports = r;
})), Pi = /* @__PURE__ */ U(((e, t) => {
	t.exports = decodeURIComponent;
})), Fi = /* @__PURE__ */ U(((e, t) => {
	var n = Pi(), r = G(), i = sn();
	function a(e) {
		var t, a = {};
		return e && i(e) && r(e.split("&"), function(e) {
			t = e.split("="), a[n(t[0])] = n(t[1] || "");
		}), a;
	}
	t.exports = a;
})), Ii = /* @__PURE__ */ U(((e, t) => {
	t.exports = encodeURIComponent;
})), Li = /* @__PURE__ */ U(((e, t) => {
	var n = Ii(), r = q(), i = K(), a = Qe(), o = pt(), s = tt();
	function c(e, t, o) {
		var l, u = [];
		return r(e, function(e, r) {
			l = i(e), s(e) || l ? u = u.concat(c(e, t + "[" + r + "]", l)) : u.push(n(t + "[" + (o ? "" : r) + "]") + "=" + n(a(e) ? "" : e));
		}), u;
	}
	function l(e) {
		var t, l = [];
		return r(e, function(e, r) {
			o(e) || (t = i(e), s(e) || t ? l = l.concat(c(e, r, t)) : l.push(n(r) + "=" + n(a(e) ? "" : e)));
		}), l.join("&").replace(/%20/g, "+");
	}
	t.exports = l;
})), Ri = /* @__PURE__ */ U(((e, t) => {
	var n = ft();
	t.exports = typeof location === n ? 0 : location;
})), zi = /* @__PURE__ */ U(((e, t) => {
	var n = Ri();
	function r() {
		return n ? n.origin || n.protocol + "//" + n.host : "";
	}
	t.exports = r;
})), Bi = /* @__PURE__ */ U(((e, t) => {
	var n = Ri(), r = Fi(), i = zi();
	function a(e) {
		return r(e.split("?")[1] || "");
	}
	function o(e) {
		var t, r, o, s, c = "" + e;
		return c.indexOf("//") === 0 ? c = (n ? n.protocol : "") + c : c.indexOf("/") === 0 && (c = i() + c), o = c.replace(/#.*/, "").match(/(\?.*)/), s = {
			href: c,
			hash: "",
			host: "",
			hostname: "",
			protocol: "",
			port: "",
			search: o && o[1] && o[1].length > 1 ? o[1] : ""
		}, s.path = c.replace(/^([a-z0-9.+-]*:)\/\//, function(e, t) {
			return s.protocol = t, "";
		}).replace(/^([a-z0-9.+-]*)(:\d+)?\/?/, function(e, t, n) {
			return r = n || "", s.port = r.replace(":", ""), s.hostname = t, s.host = t + r, "/";
		}).replace(/(#.*)/, function(e, t) {
			return s.hash = t.length > 1 ? t : "", "";
		}), t = s.hash.match(/#((.*)\?|(.*))/), s.pathname = s.path.replace(/(\?|#.*).*/, ""), s.origin = s.protocol + "//" + s.host, s.hashKey = t && (t[2] || t[1]) || "", s.hashQuery = a(s.hash), s.searchQuery = a(s.search), s;
	}
	t.exports = o;
})), Vi = /* @__PURE__ */ U(((e, t) => {
	var n = Ri(), r = zi(), i = yn();
	function a() {
		if (n) {
			var e = n.pathname, t = i(e, "/") + 1;
			return r() + (t === e.length ? e : e.substring(0, t));
		}
		return "";
	}
	t.exports = a;
})), Hi = /* @__PURE__ */ U(((e, t) => {
	var n = Ri(), r = Bi();
	function i() {
		return n ? r(n.href) : {};
	}
	t.exports = i;
})), Ui = /* @__PURE__ */ U(((e, t) => {
	var n = W(), r = Mn(), i = Pi(), a = Ii(), o = K(), s = Gt(), c = cn(), l = pt(), u = st(), d = Je(), f = Xe(), p = G(), m = pn(), h = dn(), g = Br(), _ = zr(), v = Wr();
	function y(e, t) {
		var n = parseFloat(t), r = m(), i = h(r);
		switch (e) {
			case "y": return h(g(r, n));
			case "M": return h(_(r, n));
			case "d": return h(v(r, n));
			case "h":
			case "H": return i + n * 60 * 60 * 1e3;
			case "m": return i + n * 60 * 1e3;
			case "s": return i + n * 1e3;
		}
		return i;
	}
	function b(e) {
		return (c(e) ? e : new Date(e)).toUTCString();
	}
	function x(e, t, u) {
		if (r) {
			var d, m, h, g, _, v, x = [], S = arguments;
			return o(e) ? x = e : S.length > 1 ? x = [f({
				name: e,
				value: t
			}, u)] : s(e) && (x = [e]), x.length > 0 ? (p(x, function(e) {
				d = f({}, n.cookies, e), h = [], d.name && (m = d.expires, h.push(a(d.name) + "=" + a(s(d.value) ? JSON.stringify(d.value) : d.value)), m && (m = isNaN(m) ? m.replace(/^([0-9]+)(y|M|d|H|h|m|s)$/, function(e, t, n) {
					return b(y(n, t));
				}) : /^[0-9]{11,13}$/.test(m) || c(m) ? b(m) : b(y("d", m)), d.expires = m), p([
					"expires",
					"path",
					"domain",
					"secure"
				], function(e) {
					l(d[e]) || h.push(d[e] && e === "secure" ? e : e + "=" + d[e]);
				})), r.cookie = h.join("; ");
			}), !0) : (g = {}, _ = r.cookie, _ && p(_.split("; "), function(e) {
				v = e.indexOf("="), g[i(e.substring(0, v))] = i(e.substring(v + 1) || "");
			}), S.length === 1 ? g[e] : g);
		}
		return !1;
	}
	function S(e) {
		return u(E(), e);
	}
	function C(e) {
		return x(e);
	}
	function w(e, t, n) {
		return x(e, t, n), x;
	}
	function T(e, t) {
		x(e, "", f({ expires: -1 }, n.cookies, t));
	}
	function E() {
		return d(x());
	}
	function D() {
		return x();
	}
	f(x, {
		has: S,
		set: w,
		setItem: w,
		get: C,
		getItem: C,
		remove: T,
		removeItem: T,
		keys: E,
		getJSON: D
	}), t.exports = x;
})), Wi = /* @__PURE__ */ U(((e, t) => {
	var n = ft(), r = Mn(), i = Pn(), a = Xe(), o = G();
	function s(e) {
		try {
			var t = "__xe_t";
			return e.setItem(t, 1), e.removeItem(t), !0;
		} catch {
			return !1;
		}
	}
	function c(e) {
		return navigator.userAgent.indexOf(e) > -1;
	}
	function l() {
		var e, t, l, u = !1, d = !1, f = !1, p = {
			isNode: !1,
			isMobile: u,
			isPC: !1,
			isDoc: !!r
		};
		if (!i && typeof process !== n) p.isNode = !0;
		else {
			l = c("Edge"), t = c("Chrome"), u = /(Android|webOS|iPhone|iPad|iPod|SymbianOS|BlackBerry|Windows Phone)/.test(navigator.userAgent), p.isDoc && (e = r.body || r.documentElement, o([
				"webkit",
				"khtml",
				"moz",
				"ms",
				"o"
			], function(t) {
				p["-" + t] = !!e[t + "MatchesSelector"];
			}));
			try {
				d = s(i.localStorage);
			} catch {}
			try {
				f = s(i.sessionStorage);
			} catch {}
			a(p, {
				edge: l,
				firefox: c("Firefox"),
				msie: !l && p["-ms"],
				safari: !t && !l && c("Safari"),
				isMobile: u,
				isPC: !u,
				isLocalStorage: d,
				isSessionStorage: f
			});
		}
		return p;
	}
	t.exports = l;
})), Gi = /* @__PURE__ */ U(((e, t) => {
	var n = Y(), r = Xe(), i = Ge(), a = X(), o = et(), s = rt(), c = Z(), l = at(), u = ot(), d = ct(), f = G(), p = Ze(), m = lt(), h = dt(), g = ut(), _ = yt(), v = vt(), y = St(), b = Ct(), x = Et(), S = Dt(), C = Ot(), w = st(), T = kt(), E = At(), D = jt(), O = Mt(), k = Nt(), A = Rt(), ee = Lt(), j = zt(), M = Bt(), te = Pt(), ne = Vt(), N = Jt(), P = Yt(), F = Zt(), re = Qt(), I = $t(), ie = en(), L = tn(), R = nn(), ae = rn(), oe = We(), z = K(), se = Qe(), ce = on(), le = pt(), B = J(), V = Gt(), ue = sn(), de = tt(), fe = mn(), pe = cn(), me = mt(), he = q(), ge = hn(), H = gn(), _e = vn(), ve = yn(), ye = Je(), be = xt(), xe = Ye(), Se = bn(), Ce = Wt(), we = qt(), Te = Kt(), Ee = xn(), De = Cn(), Oe = Sn(), ke = wn(), Ae = an(), je = Tn(), Me = En(), Ne = Dn(), Pe = On(), Fe = kn(), Ie = An(), Le = jn(), Re = Nn(), ze = Fn(), U = In(), Be = Ln(), Ve = Rn(), W = zn(), He = Bn(), Ue = Kn(), Ke = Gn(), qe = qn(), nt = Jn(), it = Yn(), ft = Hn(), ht = Xn(), gt = Zn(), wt = Qn(), Ft = $n(), Ht = tr(), Ut = nr(), Xt = rr(), ln = ir(), un = ar(), dn = _t(), pn = or(), _n = sr(), Mn = cr(), Pn = lr(), Vn = ur(), Un = bt(), Wn = It(), er = dr(), fr = Cr(), pr = vr(), mr = yr(), gr = br(), _r = Sr(), Er = wr(), kr = Tt(), Nr = hr(), Pr = Dr(), Fr = Or(), Ir = Tr(), Lr = Ar(), Hr = jr(), Jr = Mr(), Yr = Br(), Zr = Vr(), Qr = zr(), mi = Ur(), hi = Wr(), vi = Gr(), yi = Kr(), Pi = qr(), Ii = fn(), Ri = ti(), zi = ni(), Gi = ri(), Ki = Rr(), qi = ii(), Ji = $r(), Yi = Xr(), Xi = ai(), Zi = oi(), Qi = si(), Q = ci(), $i = li(), $ = ei(), ea = ui(), ta = pi(), na = di(), ra = fi(), ia = gi(), aa = _i(), oa = bi(), sa = xi(), ca = Si(), la = Ci(), ua = wi(), da = Ti(), fa = xr(), pa = Ei(), ma = $e(), ha = Di(), ga = Oi(), _a = ki(), va = Ai(), ya = ji(), ba = Mi(), xa = Ni(), Sa = Fi(), Ca = Li(), wa = Bi(), Ta = Vi(), Ea = Hi(), Da = Ui();
	r(n, {
		assign: r,
		objectEach: i,
		lastObjectEach: a,
		objectMap: o,
		merge: s,
		uniq: m,
		union: h,
		sortBy: _,
		orderBy: v,
		shuffle: y,
		sample: b,
		some: l,
		every: u,
		slice: x,
		filter: S,
		find: T,
		findLast: E,
		findKey: C,
		includes: w,
		arrayIndexOf: R,
		arrayLastIndexOf: ae,
		map: c,
		reduce: D,
		copyWithin: O,
		chunk: k,
		zip: A,
		unzip: ee,
		zipObject: j,
		flatten: M,
		toArray: g,
		includeArrays: d,
		pluck: te,
		invoke: ne,
		arrayEach: f,
		lastArrayEach: p,
		toArrayTree: N,
		toTreeArray: P,
		findTree: F,
		eachTree: re,
		mapTree: I,
		filterTree: ie,
		searchTree: L,
		hasOwnProp: oe,
		eqNull: me,
		isNaN: ce,
		isFinite: Ee,
		isUndefined: le,
		isArray: z,
		isFloat: De,
		isInteger: Oe,
		isFunction: B,
		isBoolean: ke,
		isString: ue,
		isNumber: Ae,
		isRegExp: je,
		isObject: V,
		isPlainObject: de,
		isDate: pe,
		isError: Me,
		isTypeError: Ne,
		isEmpty: Pe,
		isNull: se,
		isSymbol: Fe,
		isArguments: Ie,
		isElement: Le,
		isDocument: Re,
		isWindow: ze,
		isFormData: U,
		isMap: Be,
		isWeakMap: Ve,
		isSet: W,
		isWeakSet: He,
		isLeapYear: fe,
		isMatch: Ue,
		isEqual: Ke,
		isEqualWith: qe,
		getType: nt,
		uniqueId: it,
		getSize: Se,
		indexOf: _e,
		lastIndexOf: ve,
		findIndexOf: ft,
		findLastIndexOf: ht,
		toStringJSON: gt,
		toJSONString: wt,
		keys: ye,
		values: be,
		entries: Ft,
		pick: Ht,
		omit: Ut,
		first: Xt,
		last: ln,
		each: he,
		forOf: ge,
		lastForOf: H,
		lastEach: Ce,
		has: un,
		get: dn,
		set: pn,
		groupBy: _n,
		countBy: Mn,
		clone: xe,
		clear: Te,
		remove: we,
		range: Pn,
		destructuring: Vn,
		random: Un,
		min: er,
		max: Wn,
		commafy: fr,
		round: pr,
		ceil: mr,
		floor: gr,
		toFixed: _r,
		toNumber: kr,
		toNumberString: Nr,
		toInteger: Er,
		add: Pr,
		subtract: Fr,
		multiply: Ir,
		divide: Lr,
		sum: Hr,
		mean: Jr,
		now: zi,
		timestamp: Gi,
		isValidDate: Ki,
		isDateSame: qi,
		toStringDate: Ii,
		toDateString: Ri,
		getWhatYear: Yr,
		getWhatQuarter: Zr,
		getWhatMonth: Qr,
		getWhatWeek: mi,
		getWhatDay: hi,
		getWhatHours: vi,
		getWhatMinutes: yi,
		getWhatSeconds: Pi,
		getYearDay: Ji,
		getYearWeek: Yi,
		getMonthWeek: Xi,
		getDayOfYear: Zi,
		getDayOfMonth: Qi,
		getDateDiff: Q,
		trim: ta,
		trimLeft: ra,
		trimRight: na,
		escape: ia,
		unescape: aa,
		camelCase: oa,
		kebabCase: sa,
		repeat: ea,
		padStart: $,
		padEnd: $i,
		startsWith: ca,
		endsWith: la,
		template: ua,
		toFormatString: da,
		toString: fa,
		toValueString: fa,
		noop: pa,
		property: ma,
		bind: ha,
		once: ga,
		after: _a,
		before: va,
		throttle: ya,
		debounce: ba,
		delay: xa,
		unserialize: Sa,
		serialize: Ca,
		parseUrl: wa,
		getBaseURL: Ta,
		locat: Ea,
		browse: Wi(),
		cookie: Da
	}), t.exports = n;
})), Ki = [];
for (let e = 0; e < 256; ++e) Ki.push((e + 256).toString(16).slice(1));
function qi(e, t = 0) {
	return (Ki[e[t + 0]] + Ki[e[t + 1]] + Ki[e[t + 2]] + Ki[e[t + 3]] + "-" + Ki[e[t + 4]] + Ki[e[t + 5]] + "-" + Ki[e[t + 6]] + Ki[e[t + 7]] + "-" + Ki[e[t + 8]] + Ki[e[t + 9]] + "-" + Ki[e[t + 10]] + Ki[e[t + 11]] + Ki[e[t + 12]] + Ki[e[t + 13]] + Ki[e[t + 14]] + Ki[e[t + 15]]).toLowerCase();
}
//#endregion
//#region ../../node_modules/.pnpm/uuid@11.1.1/node_modules/uuid/dist/esm-browser/rng.js
var Ji, Yi = /* @__PURE__ */ new Uint8Array(16);
function Xi() {
	if (!Ji) {
		if (typeof crypto > "u" || !crypto.getRandomValues) throw Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");
		Ji = crypto.getRandomValues.bind(crypto);
	}
	return Ji(Yi);
}
var Zi = { randomUUID: typeof crypto < "u" && crypto.randomUUID && crypto.randomUUID.bind(crypto) };
//#endregion
//#region ../../node_modules/.pnpm/uuid@11.1.1/node_modules/uuid/dist/esm-browser/v4.js
function Qi(e, t, n) {
	if (Zi.randomUUID && !t && !e) return Zi.randomUUID();
	e ||= {};
	let r = e.random ?? e.rng?.() ?? Xi();
	if (r.length < 16) throw Error("Random bytes length must be >= 16");
	if (r[6] = r[6] & 15 | 64, r[8] = r[8] & 63 | 128, t) {
		if (n ||= 0, n < 0 || n + 16 > t.length) throw RangeError(`UUID byte range ${n}:${n + 15} is out of buffer bounds`);
		for (let e = 0; e < 16; ++e) t[n + e] = r[e];
		return t;
	}
	return qi(r);
}
//#endregion
//#region src/packages/utils/is.ts
var Q = Gi(), $i = (e) => e == null || e === "", $ = (e) => !$i(e), ea = (e) => e == null, ta = (e) => !ea(e), na = (e) => function(t, n, r, i) {
	let a = r || {};
	return e(null, t, n, i, [], [], a.children || "children", a);
}, ra = (e, t, n, r, i, a, o) => {
	let s, c;
	t.forEach((l, u) => {
		s = i.concat(["" + u]), c = a.concat([l]), n.call(r, l, u, t, s, e, c), l && o && (s.push(o), ra(l, l[o] || [], n, r, s, c, o));
	});
}, ia = na(ra), aa = {
	form: {
		labelCol: { span: 6 },
		wrapperCol: { span: 16 }
	},
	grid: {
		align: "left",
		lazyReset: !1,
		fitHeight: 30,
		striped: !1,
		showQuickJumper: !0
	},
	canvasTable: {
		DISABLED: !0,
		ENABLE_FINDER: !0,
		AUTO_ROW_HEIGHT: !0,
		BORDER_RADIUS: 4
	},
	icon: {}
}, oa = (0, Q.clone)(aa, !0);
function sa(e) {
	oa = {
		form: {
			...oa.form,
			...e.form
		},
		grid: {
			...oa.grid,
			...e.grid
		},
		canvasTable: {
			...oa.canvasTable,
			...e.canvasTable
		},
		renderTooltip: e.renderTooltip ?? oa.renderTooltip,
		icon: {
			...oa.icon,
			...e.icon
		}
	};
}
function ca() {
	return oa.renderTooltip;
}
function la() {
	return oa;
}
function ua() {
	return {
		labelCol: oa.form?.labelCol,
		wrapperCol: oa.form?.wrapperCol
	};
}
function da() {
	return {
		align: oa.grid?.align,
		lazyReset: oa.grid?.lazyReset,
		fitHeight: oa.grid?.fitHeight,
		striped: oa.grid?.striped,
		autoBoxSizeOffset: oa.grid?.autoBoxSizeOffset
	};
}
function fa(e) {
	return e?.showQuickJumper === void 0 ? oa.grid?.showQuickJumper ?? !0 : e.showQuickJumper;
}
function pa() {
	return oa.canvasTable || {};
}
function ma() {
	oa = JSON.parse(JSON.stringify(aa));
}
//#endregion
//#region src/packages/utils/core.ts
var ha = (e) => ({
	dataIndex: e.field,
	key: e.field,
	title: e.title,
	...(0, Q.omit)(e, [
		"children",
		"slots",
		"cellRender",
		"formatter"
	]),
	children: e.children?.map((e) => ha(e))
}), ga = {
	xs: 24,
	sm: 24,
	md: 12,
	lg: 8,
	xl: 8,
	xxl: 6
}, _a = {
	xs: 12,
	sm: 5,
	md: 6,
	lg: 6,
	xl: 5,
	xxl: 4
}, va = {
	1: {
		xs: 12,
		sm: 5,
		md: 6,
		lg: 6,
		xl: 5,
		xxl: 4
	},
	2: {
		xs: 12,
		sm: 5,
		md: 6,
		lg: 6,
		xl: 5,
		xxl: 4
	},
	3: {
		xs: 12,
		sm: 5,
		md: 6,
		lg: 6,
		xl: 5,
		xxl: 5
	},
	4: {
		xs: 12,
		sm: 4,
		md: 6,
		lg: 9,
		xl: 7,
		xxl: 6
	},
	5: {
		xs: 12,
		sm: 4,
		md: 6,
		lg: 9,
		xl: 7,
		xxl: 6
	},
	6: {
		xs: 12,
		sm: 6,
		md: 8,
		lg: 10,
		xl: 7,
		xxl: 8
	},
	7: {
		xs: 12,
		sm: 6,
		md: 8,
		lg: 10,
		xl: 9,
		xxl: 9
	},
	8: {
		xs: 12,
		sm: 6,
		md: 8,
		lg: 10,
		xl: 7,
		xxl: 9
	},
	9: {
		xs: 12,
		sm: 6,
		md: 8,
		lg: 10,
		xl: 9,
		xxl: 10
	}
}, ya = (e) => {
	let t = (24 - e.reduce((e, t) => e + t, 0)) % 24, n = t === 0 ? 24 : t < 0 ? 24 + t : t;
	return n > 1 ? n : 24;
}, ba = [
	"xxs",
	"xs",
	"sm",
	"md",
	"lg",
	"xl",
	"xxl"
], xa = (e) => {
	let t = (0, Q.isArray)(e) ? e : (0, Q.isNumber)(e) ? Array.from({ length: e }, () => ga) : [];
	return (0, Q.zipObject)(ba, ba.map((e) => t.every((t) => $(t[e])) ? ya(t.map((t) => t[e])) : 24));
};
function Sa(e, t, n) {
	let r = j(e);
	if (typeof r != "object" || !r) return F(e, t, n);
	let i = (0, Q.clone)(r, !0);
	return F(e, (e, n, r) => {
		t(e, i, r), i = (0, Q.clone)(e, !0);
	}, n);
}
//#endregion
//#region src/packages/utils/AFormatters.ts
var Ca = "-", wa = {
	toString: ({ cellValue: e }) => e ? e.toString?.() ?? Ca : Ca,
	formatByOptions: ({ cellValue: e }, t, n = ",") => {
		if (e == null) return Ca;
		if ((0, Q.isArray)(e)) {
			if (e.length > 0) {
				let r = t.filter((t) => e.includes(t.value));
				return r.length ? r.map((e) => e.label).join(n) : Ca;
			}
			return Ca;
		}
		let r = t.find((t) => t.value === e);
		return r ? r.label : Ca;
	},
	formatSex: ({ cellValue: e }) => $(e) ? (0, Q.toNumber)(e) === 1 ? "男" : "女" : Ca
}, Ta = (e, { record: t, index: n, column: r, field: i }) => {
	if ((0, Q.isString)(e) && wa[e]) {
		let r = wa[e];
		return r({
			row: t,
			rowIndex: n,
			cellValue: i ? t[i] : null
		});
	}
	if ((0, Q.isArray)(e) && wa[e[0]] && e.length > 1) {
		let r = wa[e[0]];
		return r({
			row: t,
			rowIndex: n,
			cellValue: i ? t[i] : null
		}, ...e.slice(1));
	}
	return (0, Q.isFunction)(e) ? e({
		row: t,
		rowIndex: n,
		cellValue: i ? t[i] : null,
		column: r
	}) : i ? t[i] : null;
}, Ea = (e) => {
	Object.assign(wa, e);
}, Da = /* @__PURE__ */ l((e) => {
	let { cellRender: t, renderTableParams: n } = e, { data: r, row: i, field: a, rowIndex: o } = n;
	return () => za.renders[t.name]?.renderDefault?.(t, {
		data: r,
		row: i,
		field: a,
		rowIndex: o
	}, e.defaultHandler ?? {}) ?? null;
}, {
	name: "RenderAntCell",
	props: [
		"cellRender",
		"renderTableParams",
		"defaultHandler"
	]
}), Oa = /* @__PURE__ */ l((e) => {
	let { tableData: t, row: n, column: r, rowIndex: i } = e, a = r.field ? n[r.field] : null;
	return () => r.slots?.default?.({
		row: n,
		column: r,
		rowIndex: i,
		cellValue: a
	}) ?? (r.cellRender ? c(Da, {
		cellRender: r.cellRender,
		defaultHandler: e.defaultHandler,
		renderTableParams: {
			data: t,
			row: n,
			field: r.field,
			rowIndex: i
		}
	}, null) : r.formatter ? Ta(r.formatter, {
		record: n,
		index: i,
		field: r.field,
		column: r
	}) : a);
}, {
	name: "RenderAntDefaultCell",
	props: [
		"tableData",
		"row",
		"column",
		"rowIndex",
		"defaultHandler"
	]
}), ka = { class: "text-right mt-4px" }, Aa = /* @__PURE__ */ l({
	__name: "TableInput",
	props: {
		modelValue: {
			type: Array,
			default: () => []
		},
		tableConfig: {
			type: Object,
			default: () => ({})
		},
		editColumns: {
			type: Array,
			default: () => []
		}
	},
	emits: ["update:modelValue", "trigger"],
	setup(e, { emit: l }) {
		let u = e, d = {
			size: "small",
			pagination: !1
		};
		F(() => u.modelValue, () => {
			m("trigger");
		}, { deep: !0 });
		let f = t(() => (0, Q.merge)({}, d, u.tableConfig)), m = l, h = t({
			get: () => u.modelValue ?? [],
			set: (e) => {
				m("update:modelValue", e);
			}
		}), g = t(() => [...u.editColumns, {
			title: "操作",
			fixed: "right",
			width: 100,
			cellRender: {
				name: "ButtonTree",
				children: [{
					content: "删除",
					type: "link",
					danger: !0,
					clickEvt: ({ rowIndex: e }) => v(e)
				}]
			}
		}]), _ = () => {
			h.value = [...h.value, {}];
		}, v = (e) => {
			h.value = h.value.filter((t, n) => n !== e);
		}, y = t(() => {
			let e = 0;
			return g.value.filter((t) => t.slots && t.slots.default || t.formatter || t.cellRender ? (t.field || (t.field = "__holder__" + e, e++), !0) : !1);
		});
		return (e, t) => {
			let l = O("a-form-item-rest"), u = O("a-table"), d = O("a-button");
			return C(), i("div", null, [c(u, p({ "data-source": h.value }, f.value, { columns: g.value.map((e) => M(ha)(e)) }), o({ _: 2 }, [y.value.length > 0 ? {
				name: "bodyCell",
				fn: I(({ column: e, record: t, index: i }) => [c(l, null, {
					default: I(() => [y.value.some((t) => e.key && t.field === e.key) ? (C(), n(M(Oa), {
						key: i,
						"row-index": i,
						"default-handler": {},
						column: y.value.find((t) => e.key && t.field === e.key),
						row: t,
						"table-data": h.value
					}, null, 8, [
						"row-index",
						"column",
						"row",
						"table-data"
					])) : r("", !0)]),
					_: 2
				}, 1024)]),
				key: "0"
			} : void 0]), 1040, ["data-source", "columns"]), a("div", ka, [c(d, {
				type: "primary",
				onClick: _
			}, {
				default: I(() => [...t[0] ||= [s("+添加", -1)]]),
				_: 1
			})])]);
		};
	}
}), ja = (e) => {
	let { icon: t } = e, n = la().icon?.render;
	if (n) {
		let e = n(t);
		if (e) return e;
	}
	let r = Ae;
	return r[t] ? c(r[t]) : null;
}, Ma = {
	AInput: { autocomplete: "off" },
	$input: {
		autocomplete: "off",
		allowClear: !0
	},
	AInputNumber: {
		min: 0,
		controls: !1,
		precision: 0
	},
	$number: {
		min: 0,
		controls: !1,
		precision: 0
	},
	$date: {
		format: "YYYY-MM-DD",
		valueFormat: "YYYY-MM-DD"
	},
	ADatePicker: {
		format: "YYYY-MM-DD",
		valueFormat: "YYYY-MM-DD"
	},
	$range: {
		format: "YYYY-MM-DD",
		valueFormat: "YYYY-MM-DD"
	},
	ARangePicker: {
		format: "YYYY-MM-DD",
		valueFormat: "YYYY-MM-DD"
	},
	$select: {
		getPopupContainer: (e) => e.parentNode,
		allowClear: !0,
		showSearch: !0,
		filterOption: (e, t) => t.label && t.label.toLowerCase().includes(e.toLowerCase())
	},
	ASelect: {
		getPopupContainer: (e) => e.parentNode,
		allowClear: !0,
		showSearch: !0,
		filterOption: (e, t) => t.label && t.label.toLowerCase().includes(e.toLowerCase())
	}
}, Na = {
	PercentInput: {
		controls: !1,
		min: 0,
		max: 100,
		addonAfter: "%"
	},
	autoComplete: { inputProps: {} }
}, Pa = {
	$input: le,
	AInput: le,
	$textarea: we,
	Textarea: we,
	$number: B,
	AInputNumber: B,
	$select: _e,
	ASelect: _e,
	$date: z,
	ADatePicker: z,
	$range: he,
	ARangePicker: he,
	AAutoComplete: ie,
	$Cascader: R,
	ACascader: R,
	ACheckbox: ae,
	AMentions: V,
	ARate: ge,
	ASlider: ve,
	$time: Te,
	ATimePicker: Te,
	ATreeSelect: De
}, Fa = (e) => {
	let t = Pa[e];
	return {
		renderItemContent({ props: n = {}, attrs: r = {}, events: i = {}, defaultValue: a }, { data: o, field: s }) {
			return ta(a) && $(s) && ea(o[s]) && (o[s] = a), s ? c(t, p({
				is: e,
				value: o[s],
				"onUpdate:value": (e) => o[s] = e
			}, r, (0, Q.merge)({}, Ma[e], n), { onChange: (...e) => {
				i.change?.({
					data: o,
					field: s
				}, ...e);
			} }), null) : c(t, p({ is: e }, n), null);
		},
		renderDefault({ props: n = Ma[e] ?? {}, attrs: r = {}, events: i = {}, defaultValue: a }, { data: o, row: s, field: l }) {
			return ta(a) && $(l) && ea(s[l]) && (s[l] = a), l ? c(t, p({
				is: e,
				value: s[l],
				"onUpdate:value": (e) => s[l] = e
			}, r, (0, Q.merge)({}, Ma[e], n), { onChange: (...e) => {
				i.change?.({
					data: o,
					row: s,
					field: l
				}, ...e);
			} }), null) : c(t, p({ is: e }, n), null);
		},
		renderReadonly({ props: n = {}, attrs: r = {} }, { data: i, field: a }) {
			return a ? c(t, p({
				is: e,
				value: i[a],
				"onUpdate:value": (e) => i[a] = e
			}, r, (0, Q.merge)({}, Ma[e], { disabled: !0 }, n)), null) : c(t, p({ is: e }, (0, Q.merge)({}, { disabled: !0 }, n)), null);
		},
		renderEdit(n, { props: r = Ma[e] ?? {}, attrs: i = {}, events: a = {} }, o, s) {
			return c(t, p({
				is: e,
				value: n.value,
				"onUpdate:value": (e) => n.value = e
			}, i, (0, Q.merge)({}, Ma[e], r), { onBlur: (...e) => {
				s?.("blur", n.value), a.blur?.(o, ...e);
			} }), null);
		}
	};
}, Ia = (e, t, n) => e.dropdowns && e.dropdowns.length > 0 && e.dropdowns.filter((e) => !e.hiddenIf?.(t)).length > 0 ? c(se, { getPopupContainer: n ?? (() => document.querySelector(".p-wrapper")) }, {
	default: () => c(L, p((0, Q.omit)(e, [
		"dynamicClassName",
		"content",
		"getContent",
		"icon",
		"clickEvt",
		"dropdowns",
		"getProps"
	]), { icon: e.icon ? c(ja, { icon: e.icon }, null) : c(ja, { icon: "DownOutlined" }, null) }, e.getProps?.(t) ?? {}), { default: () => [e.content || (e?.getContent?.(t) ?? "")] }),
	overlay: () => c("div", { class: `dropdown-wrapper ${e?.dynamicClassName?.(t) ?? ""}` }, [e.dropdowns.filter((e) => !e.hiddenIf?.(t)).map((e) => Ia(e, t, n))])
}) : c(L, p({ class: e?.dynamicClassName?.(t) || "" }, (0, Q.omit)(e, [
	"dynamicClassName",
	"content",
	"getContent",
	"icon",
	"clickEvt",
	"dropdowns",
	"getProps"
]), {
	disabled: !!e.dropdowns && e.dropdowns.length > 0 || e.disabled,
	icon: e.icon ? c(ja, { icon: e.icon }, null) : null
}, e.getProps?.(t) ?? {}, { onClick: () => {
	e?.clickEvt && e.clickEvt(t);
} }), { default: () => [e.content || (e?.getContent?.(t) ?? "")] }), La = {
	...Object.fromEntries(Object.keys(Pa).map((e) => [e, Fa(e)])),
	$button: {
		renderItemContent({ props: e = {}, events: t = {} }, { data: n, field: r }, i) {
			return c(L, p((0, Q.omit)(e, ["content"]), {
				icon: e.icon ? c(ja, { icon: e.icon }, null) : null,
				onClick: () => {
					t.click?.({
						data: n,
						field: r
					}), e.htmlType === "reset" && i?.reset && (e.beforeClick && (0, Q.isFunction)(e.beforeClick) ? e.beforeClick({
						data: n,
						field: r
					}).then((e) => {
						i.reset(e ? {
							data: e,
							field: r
						} : {
							data: n,
							field: r
						});
					}) : i.reset({
						data: n,
						field: r
					}));
				}
			}), { default: () => [e.content, e.suffix?.({
				data: n,
				field: r
			}) ?? null] });
		},
		renderDefault({ props: e = {}, events: t = {} }, { row: n, field: r }, i) {
			return c(L, p((0, Q.omit)(e, ["content"]), {
				icon: e.icon ? c(ja, { icon: e.icon }, null) : null,
				onClick: () => {
					t.click?.({
						row: n,
						field: r
					}), e.htmlType === "reset" && i?.reset && (e.beforeClick && (0, Q.isFunction)(e.beforeClick) ? (i?.setLoadings?.(!0), e.beforeClick({
						row: n,
						field: r
					}).then((e) => {
						i.reset(e ? {
							row: e,
							field: r
						} : {
							row: n,
							field: r
						});
					}).finally(() => {
						i?.setLoadings?.(!1);
					})) : i.reset({
						row: n,
						field: r
					})), e.htmlType === "pick" && i?.pick && (e.beforeClick && (0, Q.isFunction)(e.beforeClick) ? (i?.setLoadings?.(!0), e.beforeClick({
						row: n,
						field: r
					}).then((e) => {
						i.pick(e ? {
							row: e,
							field: r
						} : {
							row: n,
							field: r
						});
					}).finally(() => {
						i?.setLoadings?.(!1);
					})) : i.pick({
						row: n,
						field: r
					}));
				}
			}), { default: () => [e.content] });
		}
	},
	$buttons: {
		renderItemContent({ props: e = {}, children: t = [] }, { data: n, field: r }, i) {
			return c("span", { class: "align-gap-box w-fit" }, [t.map((t) => c(L, p((0, Q.omit)(Object.assign({}, e, t.props), ["content"]), {
				icon: t.props.icon ? c(ja, { icon: t.props.icon }, null) : null,
				onClick: () => {
					t.events?.click?.({
						data: n,
						field: r
					}), t.props.htmlType === "reset" && i?.reset && (e.beforeClick && (0, Q.isFunction)(e.beforeClick) ? e.beforeClick({
						data: n,
						field: r
					}).then((e) => {
						i.reset(e ? {
							data: e,
							field: r
						} : {
							data: n,
							field: r
						});
					}) : i.reset({
						data: n,
						field: r
					})), t.props.htmlType === "pick" && i?.pick && (e.beforeClick && (0, Q.isFunction)(e.beforeClick) ? e.beforeClick({
						data: n,
						field: r
					}).then((e) => {
						i.pick(e ? {
							data: e,
							field: r
						} : {
							data: n,
							field: r
						});
					}) : i.pick({
						data: n,
						field: r
					}));
				}
			}), { default: () => [t.props.content] }))]);
		},
		renderDefault({ props: e = {}, children: t = [] }, { data: n, row: r, field: i }, a) {
			return c("span", { class: "align-gap-box w-fit" }, [t.filter((e) => !e?.props?.hiddenIf?.({
				data: n,
				row: r,
				field: i
			})).map((t) => c(L, p((0, Q.omit)(Object.assign({}, e, t.props), ["content", "hiddenIf"]), {
				icon: t.props.icon ? c(ja, { icon: t.props.icon }, null) : null,
				onClick: () => {
					t.events?.click?.({
						data: n,
						row: r,
						field: i
					}), t.props.htmlType === "reset" && a?.reset && (e.beforeClick && (0, Q.isFunction)(e.beforeClick) ? (a?.setLoadings?.(!0), e.beforeClick({
						row: r,
						field: i
					}).then((e) => {
						a.reset(e ? {
							row: e,
							field: i
						} : {
							row: r,
							field: i
						});
					}).finally(() => {
						a?.setLoadings?.(!1);
					})) : a.reset({
						row: r,
						field: i
					})), t.props.htmlType === "pick" && a?.pick && (e.beforeClick && (0, Q.isFunction)(e.beforeClick) ? (a?.setLoadings?.(!0), e.beforeClick({
						row: r,
						field: i
					}).then((e) => {
						a.pick(e ? {
							row: e,
							field: i
						} : {
							row: r,
							field: i
						});
					}).finally(() => {
						a?.setLoadings?.(!1);
					})) : a.pick({
						row: r,
						field: i
					}));
				}
			}), { default: () => [t.props.content] }))]);
		}
	},
	ButtonTree: { renderDefault({ children: e = [], props: t = {} }, n) {
		let r = T(null);
		return c("span", {
			ref: r,
			class: t.noGap ? "align-no-gap-box" : "align-gap-box"
		}, [e.filter((e) => !e.hiddenIf?.(n)).map((e) => Ia(e, n, () => r.value?.parentElement?.parentElement?.parentElement?.parentElement || document.body)) ?? []]);
	} },
	$radio: {
		renderItemContent({ props: e = {}, events: t = {}, options: n, defaultValue: r }, { data: i, field: a }) {
			return ta(r) && $(a) && ea(i[a]) && (i[a] = r), $(a) ? c(me, p({
				value: i[a],
				"onUpdate:value": (e) => i[a] = e
			}, e, {
				options: e.options ?? n ?? [],
				disabled: !!e.disabled,
				onChange: (...e) => {
					t.change?.({
						data: i,
						field: a
					}, ...e);
				}
			}), null) : null;
		},
		renderDefault({ props: e = {}, options: t }, { row: n, field: r }) {
			return $(r) ? c(me, p({
				value: n[r],
				"onUpdate:value": (e) => n[r] = e
			}, e, { options: e.options ?? t ?? [] }), null) : null;
		},
		renderReadonly({ props: e = {}, options: t }, { data: n, field: r }) {
			return $(r) ? c(me, p({
				value: n[r],
				"onUpdate:value": (e) => n[r] = e
			}, (0, Q.merge)({}, { disabled: !0 }, e), { options: e.options ?? t ?? [] }), null) : null;
		}
	},
	$autoComplete: { renderItemContent({ props: e = {}, events: t = {} }, { data: n, field: r }) {
		return $(r) ? c(ie, p({
			value: n[r],
			"onUpdate:value": (e) => n[r] = e
		}, Object.assign({}, { filterOption: Na.autoComplete.filterOption }, e), { onChange: (...e) => {
			t.change?.({
				data: n,
				field: r
			}, ...e);
		} }), { default: () => c(O("a-input"), Object.assign({}, Na.autoComplete.inputProps, e.inputProps ?? {}), null) }) : null;
	} },
	$switch: {
		renderItemContent({ props: e = {}, events: t = {}, defaultValue: n }, { data: r, field: i }) {
			return ta(n) && $(i) && ea(r[i]) && (r[i] = n), $(i) ? c(be, p({
				checked: r[i],
				"onUpdate:checked": (e) => r[i] = e
			}, e, { onChange: (...e) => {
				t.change?.({
					data: r,
					field: i
				}, ...e);
			} }), null) : null;
		},
		renderReadonly({ props: e = {} }, { data: t, field: n }) {
			return $(n) ? c(be, p({
				checked: t[n],
				"onUpdate:checked": (e) => t[n] = e
			}, (0, Q.merge)({}, { disabled: !0 }, e)), null) : null;
		}
	},
	$checkbox: {
		renderItemContent({ props: e = {}, options: t, events: n = {}, defaultValue: r }, { data: i, field: a }) {
			return ta(r) && $(a) && ea(i[a]) && (i[a] = r), $(a) ? c(oe, p({
				value: i[a],
				"onUpdate:value": (e) => i[a] = e
			}, e, {
				options: e.options ?? t ?? [],
				onChange: (...e) => {
					n.change?.({
						data: i,
						field: a
					}, ...e);
				}
			}), null) : null;
		},
		renderDefault({ props: e = {}, options: t }, { row: n, field: r }) {
			return $(r) ? c(oe, p({
				value: n[r],
				"onUpdate:value": (e) => n[r] = e
			}, e, { options: e.options ?? t ?? [] }), null) : null;
		},
		renderReadonly({ props: e = {}, options: t }, { data: n, field: r }) {
			return $(r) ? c(oe, p({
				value: n[r],
				"onUpdate:value": (e) => n[r] = e
			}, (0, Q.merge)({}, { disabled: !0 }, e), { options: e.options ?? t ?? [] }), null) : null;
		}
	},
	$paragraph: { renderDefault({ props: e = {} }, { row: t, field: n }) {
		let r = { ellipsis: {
			expandable: !0,
			rows: 3
		} }, i = e.getContent?.({
			row: t,
			field: n
		}) ?? ($(n) ? t[n] : "");
		return $(n) ? c(Oe, p((0, Q.merge)({}, r, (0, Q.omit)(e, ["content", "getContent"])), { content: i }), null) : null;
	} },
	$tableInput: { renderItemContent({ props: e = {}, handleTrigger: t }, { data: n, field: r }) {
		return $(r) ? c(Aa, {
			modelValue: n[r],
			"onUpdate:modelValue": (e) => n[r] = e,
			onTrigger: () => {
				t && (0, Q.isFunction)(t) && t(e.cusFields ?? r);
			},
			editColumns: e.editColumns ?? [],
			tableConfig: e.tableConfig ?? {}
		}, null) : null;
	} },
	PercentInput: {
		renderItemContent({ props: e = {}, attrs: n = {}, defaultValue: r }, { data: i, field: a }) {
			let o = e.parse ? 100 : 1;
			if ($(a)) {
				ta(r) && ea(i[a]) && (i[a] = r);
				let s = t({
					get: () => (i[a] ?? 0) * o,
					set: (e) => {
						i[a] = (e ?? 0) / o;
					}
				});
				return c("div", { class: "flex items-center" }, [e.info ? c("span", { class: "pr-4" }, [e.info]) : null, c(O("a-input-number"), p({ class: "w-60px!" }, n, {
					value: s.value,
					"onUpdate:value": (e) => s.value = e
				}, (0, Q.merge)({}, Na.PercentInput, (0, Q.omit)(e, ["info"]))), null)]);
			}
			return null;
		},
		renderDefault({ props: e = {}, attrs: n = {} }, { row: r, field: i }) {
			let a = e.parse ? 100 : 1;
			if ($(i)) {
				let o = t({
					get: () => (r[i] ?? 0) * a,
					set: (e) => {
						(0, Q.set)(r, i, (e ?? 0) / a);
					}
				});
				return [e.info ? c("span", { class: "pr-4" }, [e.info]) : null, c(O("a-input-number"), p({ class: "w-60px!" }, n, {
					value: o.value,
					"onUpdate:value": (e) => o.value = e
				}, (0, Q.merge)({}, Na.PercentInput, (0, Q.omit)(e, ["info"]))), null)];
			}
			return null;
		}
	},
	TreeSelect: {
		renderItemContent({ props: e = {} }, { data: t, field: n }) {
			return $(n) ? c(De, p({
				value: t[n],
				"onUpdate:value": (e) => t[n] = e
			}, e), null) : null;
		},
		renderDefault({ props: e = {} }, { row: t, field: n }) {
			return $(n) ? c(De, p({
				value: t[n],
				"onUpdate:value": (e) => t[n] = e
			}, e), null) : null;
		}
	}
}, Ra = (e, { renderItemContent: t, renderDefault: n, renderReadonly: r, renderEdit: i }) => {
	La.hasOwnProperty(e) && console.warn(`render ${e} already exists, you are trying to override it`), La[e] = {
		renderItemContent: t,
		renderDefault: n,
		renderReadonly: r,
		renderEdit: i
	};
}, za = {
	renders: La,
	addRender: Ra
}, Ba = /* @__PURE__ */ l((e, { emit: t }) => {
	let { itemRender: n, defaultHandler: r } = e, { renderFormParams: i } = ee(e), a = (e) => {
		t("trigger", e);
	}, o = (e, n) => {
		t("delayTrigger", e, n);
	};
	return () => za.renders[n.name]?.renderItemContent?.({
		...n,
		handleTrigger: a,
		handleDelayTrigger: o
	}, i.value, r) ?? null;
}, {
	name: "RenderAntItem",
	props: {
		itemRender: {
			type: Object,
			required: !0
		},
		renderFormParams: {
			type: Object,
			required: !0
		},
		defaultHandler: {
			type: Object,
			required: !1
		}
	},
	emits: ["trigger", "delayTrigger"]
}), Va = /* @__PURE__ */ l((e) => {
	let { formData: t } = ee(e);
	return () => e.item.slots?.default?.({
		data: t.value,
		field: e.item.field
	}, e.passTrigger, e.passDelayTrigger) ?? null;
}, {
	name: "RenderItemSlots",
	props: [
		"formData",
		"item",
		"passTrigger",
		"passDelayTrigger"
	]
}), Ha = { key: 2 }, Ua = /* @__PURE__ */ l({
	__name: "PFormCol",
	props: {
		item: {},
		formData: {}
	},
	emits: ["trigger", "reset"],
	setup(e, { emit: r }) {
		let a = e, s = r, c = T(!1), l = T(Qi()), u = (e, t) => {
			let n = t ?? 222;
			c.value = !0, setTimeout(() => {
				c.value = !1, s("trigger", e);
			}, n);
		}, f = (e) => {
			s("trigger", e);
		}, m = () => {
			s("reset");
		}, h = (0, Q.debounce)(() => {
			l.value = Qi();
		}, 100), g = t(() => {
			if (!a.item.tooltipConfig) return null;
			let e = a.item.tooltipConfig, t = ca(), n = () => d(Me, { class: "cursor-pointer py-4 px-2" }), r = (0, Q.isFunction)(e.title) ? e.title : String(e.title ?? "");
			return t ? () => t(n, r) : () => (0, Q.isFunction)(e.title) ? d(Ee, (0, Q.omit)(e, ["title"]), {
				default: n,
				title: () => d("div", { innerHTML: e.title() })
			}) : d(Ee, e, { default: n });
		});
		return Sa(() => a.item, (e, t) => {
			(0, Q.isEqual)(e, t) || h();
		}, { deep: !0 }), (t, r) => {
			let a = O("a-form-item"), s = O("a-col");
			return C(), n(s, p({ key: `_col_${l.value}` }, e.item.col ?? (e.item.span ? { span: e.item.span } : M(ga))), {
				default: I(() => [(C(), n(a, p({
					key: `_item_${l.value}`,
					class: [`p-content-align-${e.item.align ?? "left"} ${e.item.forceRequired ? "p-required" : ""}`, { "p-error-hang-out": c.value }],
					colon: "",
					label: e.item.title,
					name: e.item.field,
					"wrapper-col": e.item.wrapperCol ?? (e.item.title ? void 0 : { span: 24 })
				}, M(Q.omit)(e.item, [
					"field",
					"title",
					"span",
					"col",
					"wrapperCol",
					"itemRender",
					"forceRequired",
					"tooltip"
				])), o({
					default: I(() => [e.item.slots?.default ? (C(), n(M(Va), {
						key: `_sl_${e.item.field ?? "_"}_${l.value}`,
						"form-data": e.formData,
						item: e.item,
						"pass-delay-trigger": u,
						"pass-trigger": f
					}, null, 8, ["form-data", "item"])) : e.item.itemRender?.name ? (C(), n(M(Ba), {
						key: `_re_${e.item.field ?? "_"}_${l.value}`,
						"default-handler": { reset: m },
						"item-render": e.item.itemRender,
						"render-form-params": {
							data: e.formData,
							field: e.item.field
						},
						onDelayTrigger: u,
						onTrigger: f
					}, null, 8, [
						"default-handler",
						"item-render",
						"render-form-params"
					])) : (C(), i("span", Ha))]),
					_: 2
				}, [e.item.slots?.title ? {
					name: "label",
					fn: I(() => [(C(), n(k(e.item.slots.title)))]),
					key: "0"
				} : void 0, g.value ? {
					name: "tooltip",
					fn: I(() => [(C(), n(k(g.value)))]),
					key: "1"
				} : void 0]), 1040, [
					"class",
					"label",
					"name",
					"wrapper-col"
				]))]),
				_: 1
			}, 16);
		};
	}
}), Wa = {
	key: 0,
	class: "p-pane p-wrapper"
}, Ga = /* @__PURE__ */ l({
	__name: "PForm",
	props: {
		name: {},
		items: {},
		customReset: {},
		layout: {},
		labelCol: { default: () => ua().labelCol ?? { span: 6 } },
		wrapperCol: { default: () => ua().wrapperCol ?? { span: 16 } },
		colon: { type: Boolean },
		labelAlign: {},
		labelWrap: { type: Boolean },
		prefixCls: {},
		requiredMark: {},
		hideRequiredMark: { type: Boolean },
		model: {},
		rules: {},
		validateMessages: {},
		validateOnRuleChange: { type: Boolean },
		scrollToFirstError: {},
		onSubmit: {},
		validateTrigger: {},
		size: {},
		disabled: { type: Boolean },
		onValuesChange: {},
		onFieldsChange: {},
		onFinish: {},
		onFinishFailed: {},
		onValidate: {},
		data: {}
	},
	emits: ["apply", "reset"],
	setup(a, { expose: o, emit: s }) {
		let l = a, u = s, { items: d, data: f } = ee(l);
		function m() {
			u("apply", f.value);
		}
		let h = T(), g = T(Qi()), _ = () => {
			g.value = Qi();
		}, v = () => {
			if (l.customReset) l.customReset();
			else {
				let e = {};
				ia(d.value, (t) => {
					t.field && t.itemRender ? ta(t.itemRender.defaultValue) ? e[t.field] = t.itemRender.defaultValue : e[t.field] = void 0 : t.field && t.slots && (ta(t.slots.defaultValue) ? e[t.field] = t.slots.defaultValue : e[t.field] = void 0);
				}), Object.assign(f.value, e);
			}
			u("reset");
		}, y = t(() => ({
			...(0, Q.omit)(l, [
				"items",
				"data",
				"model",
				"labelCol",
				"wrapperCol"
			]),
			labelCol: l.labelCol,
			wrapperCol: l.wrapperCol
		})), b = (e) => {
			e && h.value?.validateFields(e);
		}, x = (e) => {
			b(e);
		};
		return o({
			reset: _,
			$form: t(() => h.value)
		}), (t, o) => M(d).some((e) => e.field && e.itemRender || e.slots?.default) ? (C(), i("div", Wa, [(C(), n(M(ce), p({
			name: a.name,
			key: g.value,
			ref_key: "formEl",
			ref: h,
			model: M(f)
		}, y.value, { onSubmit: m }), {
			default: I(() => [c(M(H), { gutter: [6, 12] }, {
				default: I(() => [(C(!0), i(e, null, E(M(d), (e, t) => (C(), n(Ua, {
					key: `_col_${e.field || t}`,
					"form-data": M(f),
					item: e,
					onReset: v,
					onTrigger: x
				}, null, 8, ["form-data", "item"]))), 128))]),
				_: 1
			})]),
			_: 1
		}, 16, ["name", "model"]))])) : r("", !0);
	}
}), Ka = [
	"xxl",
	"xl",
	"lg",
	"md",
	"sm",
	"xs"
], qa = {
	xxl: 1600,
	xl: 1200,
	lg: 992,
	md: 768,
	sm: 576,
	xs: 0
};
function Ja(e) {
	return Ka.find((t) => e >= qa[t]) ?? "xs";
}
function Ya(e, t) {
	if (!e.col) return e.span ? { span: e.span } : { span: ga[t] ?? 24 };
	let n = (0, Q.omit)(e.col, [...Ka]), r = Ka.indexOf(t);
	for (let t of Ka.slice(r)) {
		let r = e.col[t];
		if (typeof r == "number") return {
			...n,
			span: r
		};
		if (r && typeof r == "object") return {
			...n,
			...r
		};
	}
	return n;
}
function Xa(e, t) {
	let n = Ka.indexOf(t);
	for (let t of Ka.slice(n)) {
		let n = e.col?.[t];
		if (typeof n == "number") return n;
		if (n && typeof n == "object" && typeof n.span == "number") return n.span;
	}
	return typeof e.col?.span == "number" ? e.col.span : typeof e.span == "number" ? e.span : ga[t] ?? 24;
}
function Za(e) {
	if (e.length === 0) return 0;
	let t = 1, n = 0;
	for (let r of e) n + r > 24 ? (t += 1, n = r) : n += r;
	return t;
}
function Qa(e, n) {
	let r = T(0), i = null, a = () => {
		i?.disconnect(), i = null;
	};
	F(n, (e) => {
		if (a(), !e) {
			r.value = 0;
			return;
		}
		let t = () => {
			r.value = e.getBoundingClientRect().width;
		};
		t(), typeof ResizeObserver < "u" && (i = new ResizeObserver(t), i.observe(e));
	}, { flush: "post" }), y(a);
	let o = t(() => Ja(r.value)), s = t(() => r.value <= 0 ? e.value : e.value.map((e) => ({
		...e,
		col: Ya(e, o.value)
	}))), c = t(() => Za(s.value.filter((e) => e.itemRender || e.slots?.default).map((e) => Xa(e, o.value))));
	return {
		resolvedItems: s,
		isSingleRow: t(() => s.value.length > 0 && c.value === 1)
	};
}
//#endregion
//#region src/packages/components/PSearchForm.vue
var $a = /* @__PURE__ */ l({
	__name: "PSearchForm",
	props: {
		data: {},
		items: {},
		loading: { type: Boolean },
		autoReset: {
			type: Boolean,
			default: !0
		},
		showActions: {
			type: Boolean,
			default: !0
		},
		name: {},
		customReset: {},
		layout: {},
		labelCol: { default: () => ({ flex: "none" }) },
		wrapperCol: { default: () => ({ flex: "1 1 0" }) },
		colon: { type: Boolean },
		labelAlign: {},
		labelWrap: { type: Boolean },
		prefixCls: {},
		requiredMark: {},
		hideRequiredMark: { type: Boolean },
		model: {},
		rules: {},
		validateMessages: {},
		validateOnRuleChange: { type: Boolean },
		scrollToFirstError: {},
		onSubmit: {},
		validateTrigger: {},
		size: {},
		disabled: { type: Boolean },
		onValuesChange: {},
		onFieldsChange: {},
		onFinish: {},
		onFinishFailed: {},
		onValidate: {}
	},
	emits: ["search", "reset"],
	setup(e, { expose: r, emit: i }) {
		let o = e, s = i, l = P("formRef"), u = P("containerRef"), d = t(() => (0, Q.omit)(o, [
			"autoReset",
			"data",
			"items",
			"loading",
			"showActions"
		])), f = (e) => {
			let t = { width: "100%" };
			return e ? Array.isArray(e) ? [t, ...e] : typeof e == "object" ? {
				...t,
				...e
			} : [t, e] : t;
		}, { isSingleRow: m, resolvedItems: h } = Qa(t(() => o.items.map((e) => e.itemRender ? {
			...e,
			itemRender: {
				...e.itemRender,
				attrs: {
					...e.itemRender.attrs,
					style: f(e.itemRender.attrs?.style)
				}
			}
		} : e)), u), g = t(() => o.showActions && m.value), _ = t(() => ["p-search-form", g.value && "p-search-form--single-row"].filter(Boolean).join(" ")), v = t(() => ({
			col: { flex: "auto" },
			align: "right",
			itemRender: {
				name: "$buttons",
				children: [{ props: {
					content: "查询",
					htmlType: "submit",
					type: "primary",
					loading: o.loading
				} }, {
					props: {
						content: "重置",
						htmlType: o.autoReset ? "reset" : "button"
					},
					events: o.autoReset ? void 0 : { click: () => s("reset") }
				}]
			}
		})), y = t(() => o.showActions ? [...h.value, v.value] : h.value);
		return r({
			reset: () => l.value?.reset(),
			$form: t(() => l.value?.$form)
		}), (t, r) => (C(), n(M(ye), {
			spinning: e.loading,
			"wrapper-class-name": _.value
		}, {
			default: I(() => [a("div", {
				ref_key: "containerRef",
				ref: u
			}, [c(Ga, p({
				ref_key: "formRef",
				ref: l
			}, d.value, {
				data: e.data,
				items: y.value,
				onApply: r[0] ||= (e) => s("search", e),
				onReset: r[1] ||= (e) => s("reset")
			}), null, 16, ["data", "items"])], 512)]),
			_: 1
		}, 8, ["spinning", "wrapper-class-name"]));
	}
}), eo = /* @__PURE__ */ l((e) => {
	let { column: t } = e;
	return () => t.slots?.title?.({ column: t }) ?? t.title;
}, {
	name: "RenderAntTitle",
	props: ["column"]
}), to = ({ title: e, content: t }) => new Promise((n, r) => {
	fe.confirm({
		title: e,
		content: t,
		onOk: () => {
			n();
		},
		onCancel: () => {
			r();
		}
	});
}), no = ke.success, ro = ke.error;
ke.info;
var io = ke.warning;
//#endregion
//#region src/packages/utils/autoViewportBox.ts
function ao(e) {
	if (typeof e == "number" && !Number.isNaN(e)) return e;
	if (typeof e == "string") {
		let t = e.match(/^(-?\d+(?:\.\d+)?)(px)?$/i);
		if (t) return Number.parseFloat(t[1]);
	}
	return 0;
}
function oo(e) {
	if (e == null || e === "") return {
		right: 0,
		bottom: 0
	};
	if (typeof e == "object" && !Array.isArray(e)) {
		let t = e;
		return {
			right: typeof t.right == "number" ? t.right : 0,
			bottom: typeof t.bottom == "number" ? t.bottom : 0
		};
	}
	let t = ao(e);
	return {
		right: t,
		bottom: t
	};
}
function so(e) {
	let t = e?.parentElement ?? null;
	for (; t && t !== document.body;) {
		let e = window.getComputedStyle(t).overflow;
		if (e === "auto" || e === "scroll" || e === "hidden") return t;
		t = t.parentElement;
	}
	return document.body;
}
function co(e, t) {
	let n = e.getBoundingClientRect(), r = window.innerWidth, i = window.innerHeight, a = Math.max(0, r - n.left - t.right), o = Math.max(0, i - n.top - t.bottom), s = e.parentElement;
	if (s) {
		let e = s.getBoundingClientRect();
		e.width > 0 && (a = Math.min(a, e.width));
	}
	e.style.width = `${a}px`, e.style.height = `${o}px`;
}
function lo(e) {
	e.style.width = "", e.style.height = "";
}
function uo(e, t, n) {
	let r = null, i = null, a = () => {
		r &&= (r.disconnect(), null), i &&= (window.removeEventListener("resize", i), null);
	}, o = () => {
		let r = e();
		r && (co(r, t()), n?.onLayout?.());
	};
	return {
		attach: () => {
			a();
			let t = e();
			if (!t) return;
			i = () => o(), window.addEventListener("resize", i);
			let n = so(t);
			r = new ResizeObserver(() => o()), r.observe(n), t.parentElement && r.observe(t.parentElement), o();
		},
		detach: a,
		update: o,
		destroy: () => {
			a();
			let t = e();
			t && lo(t);
		}
	};
}
//#endregion
//#region src/packages/components/PGrid.vue?vue&type=script&name=PGrid&setup=true&lang.ts
var fo = { key: 0 }, po = {
	key: 1,
	class: "p-toolbar-wrapper flex items-center w-full justify-between p-theme-bg pt-8px px-16px"
}, mo = { class: "flex items-center flex-1 gap-4px" }, ho = { class: "inline-flex items-center gap-4px" }, go = { key: 2 }, _o = { class: "flex items-center gap-4px" }, vo = {
	key: 0,
	class: "p-grid-footer text-slate-5"
}, yo = {
	key: 1,
	class: "p-grid-footer"
}, bo = { class: "flex-1 min-w-0 text-slate-5 flex items-center" }, xo = 100, So = /* @__PURE__ */ l({
	__name: "PGrid",
	props: {
		selectConfig: {},
		rowKey: { default: "id" },
		striped: {
			type: Boolean,
			default: () => da().striped ?? !1
		},
		manualFetch: { type: Boolean },
		align: { default: () => da().align ?? "left" },
		formConfig: {},
		columns: {},
		toolbarConfig: {},
		pageConfig: {},
		proxyConfig: {},
		tableConfig: {},
		scrollMode: { default: "inner" },
		autoBoxSize: {
			type: Boolean,
			default: !1
		},
		autoBoxSizeOffset: {},
		lazyReset: {
			type: Boolean,
			default: () => da().lazyReset ?? !1
		},
		fitHeight: { default: () => da().fitHeight ?? 30 },
		fitCanvasHeight: {},
		renderY: {},
		fitContent: {
			type: Boolean,
			default: !1
		}
	},
	emits: [
		"toolbarButtonClick",
		"toolbarToolClick",
		"pick",
		"resetQuery"
	],
	setup(l, { expose: u, emit: d }) {
		let f = l, { formConfig: g, pageConfig: _, columns: S, toolbarConfig: D, proxyConfig: j, tableConfig: ne, selectConfig: N, scrollMode: P } = ee(f), re = t(() => g.value?.searchItems ?? g.value?.items ?? []), ie = t(() => f.autoBoxSizeOffset ?? da().autoBoxSizeOffset), R = w({
			table: !1,
			toolbar: !1,
			form: !1
		}), ae = (e) => {
			(0, Q.isObject)(e) ? Object.keys(e).forEach((t) => {
				R[t] = e[t];
			}) : (0, Q.isBoolean)(e) && (R.form = e, R.table = e, R.toolbar = e);
		}, oe = T(), z = T(), se = T(), ce = T(), le = T(500), B = T([]), V = T([]), ue = (e) => {
			let { ajax: t } = j.value;
			e === "multiDelete" && t.multiDelete && (B.value.length > 0 ? to({
				title: "警告",
				content: "确认删除选中的数据吗?"
			}).then(() => {
				R.table = !0, R.toolbar = !0, t.multiDelete(B.value).then(() => {
					ke.success("删除成功"), Be();
				}).catch(() => {
					ke.error("删除失败");
				}).finally(() => {
					R.table = !1, R.toolbar = !1, H.multiDelete = !1;
				});
			}) : ke.warn("请选择要删除的数据"));
		}, de = t(() => {
			let e = 0, t = (n) => n.map((n) => {
				let r = { ...n }, i = !!r.slots?.title || !!r.slots?.default || !!r.formatter || !!r.cellRender;
				return !r.field && i && (r.field = `__holder__${e++}`), r.children?.length && (r.children = t(r.children)), r;
			});
			return t(S.value ?? []);
		}), fe = t(() => {
			let e = [];
			return ia(de.value, (t) => {
				t.slots && t.slots.title && e.push(t);
			}), e;
		}), pe = T(), me = T(), he = T(Qi()), ge = T(Qi()), H = w([...(f.toolbarConfig?.buttons?.map((e) => e.code) ?? []).filter((e) => e), ...(f.toolbarConfig?.tools?.map((e) => e.code) ?? []).filter((e) => e)].reduce((e, t) => (e[t] = !1, e), {})), _e = (e, t) => {
			H[e] = t;
		}, ve = (0, Q.debounce)(() => {
			ge.value = Qi();
		}, 100), ye = t(() => {
			let e = [];
			return ia(de.value, (t) => {
				(t.slots && t.slots.default || t.formatter || t.cellRender) && e.push(t);
			}), e;
		}), be = w({
			page: 1,
			size: _.value?.pageSize ?? 10
		}), xe = T(0), Ce = T(0), we = T([]), Te = t(() => j.value && j.value.ajax ? _.value ? "pagination" : "list" : "bad"), Ee = t(() => fa(_.value)), De = t(() => !!N.value?.showCount), Oe = te(), Ae = d, Me = t(() => V.value.filter((e) => B.value.includes(e[f.rowKey ?? "id"]))), Ne = (0, Q.debounce)((e) => {
			Ae("toolbarButtonClick", {
				data: we.value,
				code: e,
				selectedKeys: B.value,
				records: Me.value
			}), ue(e);
		}, 100), Pe = ({ key: e }) => Ne(e), Fe = (0, Q.debounce)((e) => {
			Ae("toolbarToolClick", {
				data: we.value,
				code: e,
				selectedKeys: B.value,
				records: Me.value
			}), ue(e);
		}, 100), Ie = T({}), Le = ({ row: e, field: t }) => {
			Ae("pick", {
				row: e,
				field: t
			});
		}, Re = (e) => {
			if (re.value.length > 0) {
				if (g.value?.customReset) g.value.customReset();
				else {
					let e = {};
					ia(re.value, (t) => {
						t.field && t.itemRender ? ta(t.itemRender.defaultValue) ? e[t.field] = t.itemRender.defaultValue : e[t.field] = void 0 : t.field && t.slots && (ta(t.slots.defaultValue) ? e[t.field] = t.slots.defaultValue : e[t.field] = void 0);
					}), Ie.value = e;
				}
				Ae("resetQuery");
			}
			be.page = 1, e || G();
		}, ze = (e, t) => t ? {
			list: (0, Q.isString)(t.list) ? (0, Q.get)(e, t.list) : (0, Q.isFunction)(t.list) ? t.list(e) : void 0,
			total: (0, Q.isString)(t.total) ? (0, Q.get)(e, t.total) : (0, Q.isFunction)(t.total) ? t.total(e) : void 0,
			result: (0, Q.isString)(t.result) ? (0, Q.get)(e, t.result) : (0, Q.isFunction)(t.result) ? t.result(e) : void 0,
			message: (0, Q.isString)(t.message) ? (0, Q.get)(e, t.message) : (0, Q.isFunction)(t.message) ? t.message(e) : void 0
		} : { list: e }, U = () => (V.value = [], B.value = [], Re()), Be = () => (be.page = 1, V.value = [], B.value = [], W()), Ve = (e, t) => (be.page = e, be.size = t, W()), W = () => new Promise((e) => {
			if (Te.value !== "bad") {
				R.form = !0, R.table = !0;
				let { ajax: t } = j.value;
				t.query({
					form: Ie.value,
					page: be
				}).then((t) => {
					let { list: n, total: r, result: i, message: a } = ze(t, j.value.response);
					n ? (we.value = n, xe.value++) : i ? (we.value = i, Ce.value = r ?? i.length, xe.value++) : (we.value = [], xe.value++, a && ke.warn(a)), e(we.value);
				}).catch((t) => {
					console.error("fetchData error", t), e([]);
				}).finally(() => {
					R.form = !1, R.table = !1;
				});
			}
		}), G = (0, Q.debounce)(W, 160), He = (e, t) => (Object.assign(Ie.value, e), be.page = 1, t ? Promise.resolve() : G()), Ue = (e, t) => (Ie.value = e, be.page = 1, t ? Promise.resolve() : G()), K = {
			size: "small",
			sticky: !0,
			transformCellText: ({ text: e }) => (0, Q.isArray)(e) && e.length === 0 ? "-" : e
		}, We = t(() => (0, Q.merge)({}, K, ne?.value ?? {}, N.value ? { rowSelection: {
			type: N.value.multiple ? "checkbox" : "radio",
			preserveSelectedRowKeys: !0,
			selectedRowKeys: B.value,
			onChange: (e) => {
				B.value = e;
				let t = f.rowKey ?? "id", n = V.value.map((e) => e[t]), r = e.filter((e) => !n.includes(e)).map((e) => we.value.find((n) => n[t] === e)).filter((e) => !!e);
				V.value = [...V.value, ...r];
			},
			getCheckboxProps: N.value.getCheckboxProps
		} } : {})), Ge = t(() => (0, Q.omit)({
			...g.value?.searchItems === void 0 ? { labelCol: _a } : {},
			...g.value
		}, ["items", "searchItems"])), q = () => {
			Be();
		};
		F(() => [
			S.value,
			j.value,
			D.value
		], () => {
			ve();
		}, { deep: !0 }), F(() => [
			ge.value,
			xe.value,
			Te.value,
			De.value
		], () => m(() => Y()), { flush: "post" });
		let Ke = !1, J = null, qe = () => {
			J?.destroy(), J = null;
		}, Je = () => {
			qe(), !(!f.autoBoxSize || !oe.value) && (J = uo(() => oe.value ?? void 0, () => oo(ie.value), { onLayout: () => {
				m(() => Y());
			} }), J.attach());
		};
		F(() => f.autoBoxSize, (e) => {
			e ? Ke && m(() => Je()) : qe();
		}), F(ie, () => {
			f.autoBoxSize && Ke && J?.update();
		}, { deep: !0 });
		let Ye = null, Xe = (e) => {
			let t = e.querySelector(".ant-table-wrapper");
			return t ? t.querySelector(".ant-table-header") || t.querySelector(".ant-table-thead") : null;
		}, Y = () => {
			Ke && (Ye && cancelAnimationFrame(Ye), Ye = requestAnimationFrame(() => {
				if (Ye = null, !se.value) return;
				if (ta(f.renderY)) {
					le.value = f.renderY;
					return;
				}
				if (f.fitContent) {
					let e = typeof window < "u" ? window.innerHeight : 800, t = f.fitHeight ?? 30;
					le.value = Math.max(Math.floor(e * .6) - t, 160);
					return;
				}
				let e = se.value.clientHeight;
				if (e <= 0) return;
				let t = ce.value?.offsetHeight ?? 0, n = Xe(se.value)?.getBoundingClientRect().height ?? 0, r = f.fitHeight ?? 30, i = Math.max(e - t - n - r, 100);
				le.value = i;
			}));
		}, Ze = null, X = null, Qe = null, $e = null, et = null, tt = () => {
			X?.disconnect(), X = null, !(!Ke || !z.value) && (X = new ResizeObserver(() => Y()), X.observe(z.value));
		};
		F(z, () => tt(), { flush: "post" });
		let nt = () => {
			Ke = !1, Ye &&= (cancelAnimationFrame(Ye), null), window.removeEventListener("resize", Y), Ze?.disconnect(), Ze = null, X?.disconnect(), X = null, Qe?.disconnect(), Qe = null, $e?.disconnect(), $e = null, et?.disconnect(), et = null, J?.detach();
		}, rt = () => {
			if (!Ke) {
				if (Ke = !0, window.addEventListener("resize", Y), Ze = new MutationObserver((e) => {
					e.forEach((e) => {
						if (e.type === "attributes" && e.attributeName === "style") {
							let t = e.target;
							window.getComputedStyle(t).display !== "none" && Y();
						}
					});
				}), oe.value) {
					Ze.observe(oe.value, {
						attributes: !0,
						attributeFilter: ["style"]
					}), Qe = new ResizeObserver(() => Y());
					let e = oe.value.parentElement;
					for (let t = 0; t < 5 && e && e !== document.body; t++) Qe.observe(e), e = e.parentElement;
				}
				$e = new ResizeObserver(() => Y()), se.value && $e.observe(se.value), et = new ResizeObserver(() => Y()), ce.value && et.observe(ce.value), tt(), f.autoBoxSize && (J ? J.attach() : Je()), Y();
			}
		};
		u({
			commitProxy: {
				query: G,
				reload: U,
				reloadPage: Be,
				passQuery: He,
				forcePassQuery: Ue
			},
			$table: t(() => me.value),
			selectedRowKeys: t(() => B.value),
			setBtnLoading: _e,
			selectedRecords: Me,
			$form: t(() => pe.value?.$form),
			getFormData: () => Ie.value,
			setLoadings: ae,
			resizeTable: Y
		}), x(() => {
			rt(), Re(f.manualFetch), m(() => {
				Y();
			});
		}), v(() => {
			rt(), m(() => {
				requestAnimationFrame(() => Y());
			});
		}), b(nt);
		let Z = (e) => (0, Q.isFunction)(e) ? e() : e, it = (e) => (0, Q.isString)(e), at = ["align"], ot = (e) => e.map((e) => ({
			...at.reduce((e, t) => ({ [t]: f[t] }), {}),
			...e
		})), st = (e) => e.map((e) => e.children?.length ? {
			...e,
			children: st(e.children)
		} : {
			...e,
			width: e.width ?? xo
		}), ct = (e) => e.reduce((e, t) => {
			if (t.children?.length) return e + ct(t.children);
			let n = typeof t.width == "number" ? t.width : Number.parseInt(t.width, 10);
			return e + (Number.isFinite(n) ? n : xo);
		}, 0), lt = t(() => st(ot(de.value)).map((e) => ha(e))), ut = t(() => ct(st(de.value)));
		return y(() => {
			nt(), qe();
		}), (t, u) => {
			let d = O("a-menu-item"), m = O("a-menu"), _ = O("a-dropdown"), v = O("a-pagination");
			return C(), i("div", p({
				ref_key: "boxEl",
				ref: oe,
				class: ["p-wrapper flex flex-col gap-8px", l.fitContent ? "w-full h-auto" : l.autoBoxSize ? "overflow-y-auto min-h-0 min-w-0 flex-1 w-full" : "overflow-y-auto h-full"]
			}, M(Oe)), [Te.value === "bad" ? (C(), i("div", fo, "请检查配置")) : (C(), i(e, { key: 1 }, [
				re.value.some((e) => e.field && e.itemRender) ? (C(), i("div", {
					key: 0,
					ref_key: "pFormWrapper",
					ref: z,
					class: "p-form-wrapper"
				}, [(C(), n($a, p({
					name: M(g)?.name,
					key: he.value,
					ref_key: "formEl",
					ref: pe
				}, Ge.value, {
					"auto-reset": !1,
					data: Ie.value,
					items: re.value,
					loading: R.form,
					"show-actions": M(g)?.searchItems !== void 0,
					onReset: u[0] ||= (e) => Re(f.lazyReset),
					onSearch: q
				}), null, 16, [
					"name",
					"data",
					"items",
					"loading",
					"show-actions"
				]))], 512)) : r("", !0),
				M(D) ? (C(), i("div", po, [a("div", mo, [M(D).buttons && M(D).buttons.length > 0 ? (C(!0), i(e, { key: 0 }, E(M(D).buttons, (t, l) => (C(), i(e, { key: l }, [t.dropdowns && t.dropdowns.length ? (C(), n(_, { key: 0 }, {
					overlay: I(() => [c(m, { onClick: Pe }, {
						default: I(() => [(C(!0), i(e, null, E(t.dropdowns, (t) => (C(), n(d, { key: t.code }, {
							default: I(() => [t.content && it(Z(t.content)) ? (C(), i(e, { key: 0 }, [s(A(Z(t.content)), 1)], 64)) : t.content ? (C(), n(k(Z(t.content)), { key: 1 })) : r("", !0)]),
							_: 2
						}, 1024))), 128))]),
						_: 2
					}, 1024)]),
					default: I(() => [c(M(L), {
						type: t.type,
						size: t.size ?? "middle",
						disabled: M(D).disabled || t.disabled,
						loading: R.toolbar || !!t.code && H[t.code],
						danger: t.danger,
						shape: t.shape,
						ghost: t.ghost,
						block: t.block
					}, o({
						default: I(() => [a("span", ho, [t.content && it(Z(t.content)) ? (C(), i(e, { key: 0 }, [s(A(Z(t.content)), 1)], 64)) : t.content ? (C(), n(k(Z(t.content)), { key: 1 })) : r("", !0), c(M(je))])]),
						_: 2
					}, [t.icon ? {
						name: "icon",
						fn: I(() => [c(M(ja), { icon: t.icon }, null, 8, ["icon"])]),
						key: "0"
					} : void 0]), 1032, [
						"type",
						"size",
						"disabled",
						"loading",
						"danger",
						"shape",
						"ghost",
						"block"
					])]),
					_: 2
				}, 1024)) : t.code ? (C(), n(M(L), {
					key: 1,
					type: t.type,
					size: t.size ?? "middle",
					disabled: M(D).disabled || t.disabled,
					loading: R.toolbar || !!t.code && H[t.code],
					danger: t.danger,
					shape: t.shape,
					ghost: t.ghost,
					block: t.block,
					onClick: (e) => M(Ne)(t.code)
				}, o({
					default: I(() => [t.content && it(Z(t.content)) ? (C(), i(e, { key: 0 }, [s(A(Z(t.content)), 1)], 64)) : t.content ? (C(), n(k(Z(t.content)), { key: 1 })) : r("", !0)]),
					_: 2
				}, [t.icon ? {
					name: "icon",
					fn: I(() => [c(M(ja), { icon: t.icon }, null, 8, ["icon"])]),
					key: "0"
				} : void 0]), 1032, [
					"type",
					"size",
					"disabled",
					"loading",
					"danger",
					"shape",
					"ghost",
					"block",
					"onClick"
				])) : (C(), i("div", go))], 64))), 128)) : r("", !0)]), a("span", _o, [M(D).tools && M(D).tools.length > 0 ? (C(!0), i(e, { key: 0 }, E(M(D).tools, (t, a) => (C(), n(M(L), {
					key: a,
					type: t.type,
					size: t.size ?? "middle",
					disabled: M(D).disabled || t.disabled,
					danger: t.danger,
					shape: t.shape,
					ghost: t.ghost,
					block: t.block,
					onClick: (e) => M(Fe)(t.code),
					loading: R.toolbar || !!t.code && H[t.code]
				}, o({
					default: I(() => [t.content && it(Z(t.content)) ? (C(), i(e, { key: 0 }, [s(A(Z(t.content)), 1)], 64)) : t.content ? (C(), n(k(Z(t.content)), { key: 1 })) : r("", !0)]),
					_: 2
				}, [t.icon ? {
					name: "icon",
					fn: I(() => [c(M(ja), { icon: t.icon }, null, 8, ["icon"])]),
					key: "0"
				} : void 0]), 1032, [
					"type",
					"size",
					"disabled",
					"danger",
					"shape",
					"ghost",
					"block",
					"onClick",
					"loading"
				]))), 128)) : r("", !0)])])) : r("", !0),
				a("div", {
					ref_key: "tableWrapperEl",
					ref: se,
					class: h(l.fitContent ? "p-pane" : `p-pane flex-1 h-0 min-h-0 flex flex-col p-${M(P) ?? "inner"}-scroll`)
				}, [a("div", { class: h(l.fitContent ? "p-grid-table-body" : "p-grid-table-body flex-1 min-h-0 overflow-hidden") }, [(C(), n(M(Se), p({
					key: ge.value + "_table",
					"row-key": l.rowKey ?? "id",
					ref_key: "tableEl",
					ref: me,
					"row-class-name": l.striped ? (e, t) => t % 2 == 1 ? "p-grid-row-striped" : "" : "",
					columns: lt.value,
					"data-source": we.value,
					loading: R.table,
					pagination: !1
				}, We.value, { scroll: {
					x: ut.value,
					y: le.value
				} }), o({ _: 2 }, [fe.value.length > 0 ? {
					name: "headerCell",
					fn: I(({ column: e }) => [fe.value.some((t) => e.key && t.field === e.key) ? (C(), n(M(eo), {
						key: ge.value + "_title_" + xe.value + "_slot_" + e.key,
						column: fe.value.find((t) => e.key && t.field === e.key)
					}, null, 8, ["column"])) : r("", !0)]),
					key: "0"
				} : void 0, ye.value.length > 0 ? {
					name: "bodyCell",
					fn: I(({ column: e, record: t, index: i }) => [ye.value.some((t) => e.key && t.field === e.key) ? (C(), n(M(Oa), {
						key: ge.value + "_cell_" + xe.value + "_slot_" + e.key,
						column: ye.value.find((t) => e.key && t.field === e.key),
						"default-handler": {
							pick: Le,
							setLoadings: ae
						},
						row: t,
						"row-index": i,
						"table-data": we.value
					}, null, 8, [
						"column",
						"default-handler",
						"row",
						"row-index",
						"table-data"
					])) : r("", !0)]),
					key: "1"
				} : void 0]), 1040, [
					"row-key",
					"row-class-name",
					"columns",
					"data-source",
					"loading",
					"scroll"
				]))], 2), a("div", {
					ref_key: "tableFooterEl",
					ref: ce,
					class: "flex-shrink-0"
				}, [Te.value !== "pagination" && De.value ? (C(), i("div", vo, " 已选:" + A(B.value.length), 1)) : Te.value === "pagination" ? (C(), i("div", yo, [a("div", bo, [De.value ? (C(), i(e, { key: 0 }, [s(" 已选:" + A(B.value.length), 1)], 64)) : r("", !0)]), c(v, {
					size: "small",
					responsive: !1,
					"show-size-changer": !0,
					"show-quick-jumper": Ee.value,
					"show-total": (e) => `共${e}条数据`,
					current: be.page,
					"page-size": be.size,
					total: Ce.value,
					onChange: Ve
				}, null, 8, [
					"show-quick-jumper",
					"show-total",
					"current",
					"page-size",
					"total"
				])])) : r("", !0)], 512)], 2)
			], 64))], 16);
		};
	}
}), Co = /* @__PURE__ */ Ve((/* @__PURE__ */ U(((e, t) => {
	(function() {
		try {
			if (typeof document < "u") {
				var e = document.createElement("style");
				e.appendChild(document.createTextNode(":root{--evt-header-font: 12px normal Arial;--evt-body-font: 12px normal Arial;--evt-color-white: #fff;--evt-color-black: #000000;--evt-color-primary: rgb(82, 146, 247);--evt-text-color-primary: #333;--evt-text-color-regular: #666;--evt-text-color-secondary: #999;--evt-box-shadow: 0 2px 12px 0 #0000001a;--evt-editor-bg-color: #fff;--evt-editor-text-color: #333;--evt-border-color: #e1e6eb;--evt-fixed-column-shadow-color: rgba(0, 0, 0, .1);--evt-fixed-column-shadow-fade-color: rgba(0, 0, 0, 0);--evt-body-bg-color: #fff;--evt-stripe-color: #fafafa;--evt-placeholder-color: #cdd0dc;--evt-header-bg-color: #f8faff;--evt-header-text-color: #1d2129;--evt-body-text-color: #4e5969;--evt-footer-text-color: #4e5969;--evt-loading-icon-color: #4e5969;--evt-expand-icon-color: #4e5969;--evt-shrink-icon-color: #4e5969;--evt-error-tip-icon-color: red;--evt-required-color: #f56c6c;--evt-cell-hover-icon-bg-color: #fff;--evt-cell-hover-icon-border-color: #dde0ea;--evt-scroller-color: #dee0e3;--evt-scroller-track-color: #fff;--evt-scroller-focus-color: #bbbec4;--evt-select-border-color: var(--evt-color-primary);--evt-select-area-color: rgba(82, 146, 247, .1);--evt-select-row-col-bg-color: rgba(82, 146, 247, .1);--evt-autofill-point-border-color: #fff;--evt-edit-bg-color: #fcf6ed;--evt-checkbox-color: var(--evt-color-primary);--evt-checkbox-uncheck-color: #dde0ea;--evt-checkbox-disabled-color: #f1f2f4;--evt-checkbox-check-disabled-color: #dde0ea;--evt-icon-edit-color: #4e5969;--evt-icon-select-color: #4e5969;--evt-readonly-color: #fff;--evt-readonly-text-color: var(--evt-body-text-color);--evt-error-tip-color: #ed3f14;--evt-footer-bg-color: #fafafa;--evt-highlight-hover-row-color: rgba(186, 203, 231, .1);--evt-highlight-selected-row-color: rgba(82, 146, 247, .1);--evt-tooltip-bg-color: #303133;--evt-tooltip-text-color: #fff;--evt-resize-row-line-color: #e1e6eb;--evt-resize-column-text-color: #fff;--evt-resize-column-text-bg-color: var(--evt-color-primary);--evt-resize-column-line-color: #e1e6eb;--evt-tree-line-color: #e1e6eb;--evt-sort-icon-color: var(--evt-color-primary);--evt-drag-tip-bg-color: rgba(82, 146, 247, .1);--evt-drag-tip-line-color: var(--evt-color-primary);--evt-context-menu-min-width: 150px;--evt-context-menu-max-width: 220px;--evt-context-menu-item-padding: 8px 12px;--evt-context-menu-bg-color: #fff;--evt-context-menu-text-color: #333;--evt-context-menu-item-hover-text-color: var(--evt-color-primary);--evt-context-menu-item-hover-bg-color: #f5f5f5;--evt-context-menu-text-size: 13px}.dark{--evt-border-color: #363637;--evt-header-bg-color: #141414;--evt-body-bg-color: #141414;--evt-header-text-color: #a3a6ad;--evt-body-text-color: #cfd3dc;--evt-readonly-text-color: #cfd3dc;--evt-footer-text-color: #cfd3dc;--evt-scroller-color: #414243;--evt-scroller-track-color: #141414;--evt-scroller-focus-color: #a3a6ad;--evt-edit-bg-color: #141414;--evt-footer-bg-color: #262727;--evt-autofill-point-border-color: #fff;--evt-editor-bg-color: #434343;--evt-editor-text-color: #cfd3dc;--evt-context-menu-bg-color: #141414;--evt-context-menu-text-color: #cfd3dc;--evt-context-menu-item-hover-text-color: var(--evt-color-primary);--evt-context-menu-item-hover-bg-color: #414243}.e-virt-table-container{position:relative;outline:none}.e-virt-table-stage{position:relative;overflow:hidden;outline:none;box-sizing:border-box;z-index:10;border-radius:8px;border:1px solid var(--evt-border-color)}.e-virt-table-canvas{position:absolute;left:0;top:0;box-sizing:border-box;background-color:var(--evt-body-bg-color);border:none;outline:none;z-index:10}.e-virt-table-editor{position:absolute;top:-10000px;left:-10000px;text-align:left;height:auto;line-height:0;z-index:100;overflow:hidden;background-color:var(--evt-editor-bg-color);border:2px solid var(--evt-color-primary);box-sizing:border-box;box-shadow:var(--evt-box-shadow);display:flex;align-items:center}.e-virt-table-overlayer{position:absolute;left:0;top:0;overflow:hidden;z-index:100;pointer-events:none}.e-virt-table-editor-textarea{width:100%;box-sizing:border-box;outline:none;font-weight:400;padding:8px;font-size:12px;color:inherit;white-space:pre-wrap;word-wrap:break-word;word-break:break-all;line-height:1.5;margin:0;border:none;vertical-align:middle;background:var(--evt-editor-bg-color);color:var(--evt-editor-text-color);overflow-y:auto;resize:none}.e-virt-table-context-menu{position:absolute;font-size:14px;color:var(--evt-text-color-regular);background-color:var(--evt-color-white);border-radius:4px;border:1px solid #e4e7ed;box-shadow:var(--evt-box-shadow);width:fit-content;padding:6px 0;z-index:9999;left:-99999px;top:-99999px}.e-virt-table-context-menu-item{cursor:pointer;padding:6px 24px;color:var(--evt-text-color-regular)}.e-virt-table-context-menu-item:hover{color:var(--evt-color-primary);background-color:#f5f7fa}.e-virt-table-loading{display:none;position:absolute;left:0;top:0;right:0;bottom:0;width:100%;height:100%;z-index:2000;background-color:#fff6;display:flex;align-items:center;justify-content:center}.e-virt-table-loading-spinner{opacity:1;display:flex;flex-direction:column;align-items:center;justify-content:center}.e-virt-table-loading-spinner svg{color:var(--evt-text-color-regular);animation:rotate 1s linear infinite}@keyframes rotate{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.e-virt-table-loading-text{margin:0;font-size:12px;color:var(--evt-text-color-regular)}.e-virt-table-main-menu,.e-virt-table-submenu{position:absolute;background:var(--evt-context-menu-bg-color);border-radius:4px;box-shadow:0 2px 8px #0000001a;min-width:var(--evt-context-menu-min-width);max-width:var(--evt-context-menu-max-width);color:var(--evt-text-color-primary)}.e-virt-table-main-menu{border:1px solid var(--evt-border-color);z-index:3000;left:-99999px;top:-99999px;display:none;position:fixed;background-color:var(--evt-body-bg-color)}.e-virt-table-submenu{border:1px solid var(--evt-border-color);z-index:1000;max-height:350px;overflow-y:auto;opacity:0;visibility:hidden;transform:translate(-10px);transition:opacity .2s,visibility .2s,transform .2s;-ms-overflow-style:none;scrollbar-width:none}.e-virt-table-submenu::-webkit-scrollbar{display:none}.e-virt-table-submenu.show{opacity:1;visibility:visible;transform:translate(0)}.e-virt-table-submenu:not(.show){transition:none}.e-virt-table-menu-item,.e-virt-table-submenu-item{position:relative;-webkit-user-select:none;user-select:none;padding:var(--evt-context-menu-item-padding);cursor:pointer;display:flex;justify-content:space-between;align-items:center;transition:background .2s,color .2s;color:var(--evt-context-menu-text-color);font-size:var(--evt-context-menu-text-size)}.e-virt-table-menu-item:last-child,.e-virt-table-submenu-item:last-child{border-bottom:none}.e-virt-table-menu-item:has(.e-virt-table-menu-item-icon){padding-left:8px}.e-virt-table-menu-item-content{display:flex;align-items:center;flex:1;min-width:0}.e-virt-table-menu-item-icon{display:inline-flex;align-items:center;justify-content:center;width:16px;height:16px;margin-right:8px;flex-shrink:0}.e-virt-table-menu-item-icon svg{width:100%;height:100%;fill:currentColor}.e-virt-table-menu-item-text{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.e-virt-table-menu-arrow{display:inline-flex;align-items:center;justify-content:center;color:var(--evt-text-color-regular);transition:color .2s}.e-virt-table-menu-arrow svg{width:20px;height:20px;fill:currentColor}.e-virt-table-submenu-item:hover,.e-virt-table-menu-item:hover,.e-virt-table-menu-item.active{background:var(--evt-context-menu-item-hover-bg-color);color:var(--evt-context-menu-item-hover-text-color)}.e-virt-table-menu-item.disabled,.e-virt-table-submenu-item.disabled{cursor:not-allowed}.e-virt-table-finder-bar{position:absolute;top:8px;right:16px;display:none;z-index:10000;background:#fff;border:1px solid #dadce0;border-radius:12px;box-shadow:0 2px 6px #0003;padding:0 8px;height:48px;min-width:250px;align-items:center;font-size:12px}.e-virt-table-finder-bar.show{display:flex}.e-virt-table-finder-bar-input-wrapper{display:flex;align-items:center;flex:1;padding:0 8px;position:relative}.e-virt-table-finder-bar-input{border:none;outline:none;flex:1;font-size:12px;background:transparent;color:#333;min-width:150px;padding-left:0;position:relative}.e-virt-table-finder-bar-nav{display:flex;flex-direction:row;gap:8px;margin:0 8px;align-items:center}.e-virt-table-finder-bar-nav-btn{border:none;background:transparent;cursor:pointer;padding:0;color:#666;border-radius:50%;display:flex;align-items:center;justify-content:center}.e-virt-table-finder-bar-nav-btn svg{width:24px;height:24px}.e-virt-table-finder-bar-nav-btn.prev-btn{transform:rotate(-90deg)}.e-virt-table-finder-bar-nav-btn.next-btn{transform:rotate(90deg)}.e-virt-table-finder-bar-nav-btn.close-btn{font-size:24px;color:#666;line-height:1;width:24px;height:24px}.e-virt-table-finder-bar-nav-btn:hover{color:#666;background-color:#f0f0f0}.e-virt-table-finder-bar-count{color:#666;font-size:12px;margin:0 8px;white-space:nowrap;flex-shrink:0}.e-virt-table-finder-bar-count.no-results{color:#999}.e-virt-table-finder-bar-loading{display:none;position:absolute;left:8px;top:0;width:16px;height:16px;flex-shrink:0;pointer-events:none;z-index:0}.e-virt-table-finder-bar-loading.show{display:block}.e-virt-table-finder-bar-loading svg{width:100%;height:100%;color:#666;animation:rotate 1s linear infinite}.e-virt-table-empty{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);font-size:14px;color:#666;z-index:15}")), document.head.appendChild(e);
			}
		} catch (e) {
			console.error("vite-plugin-css-injected-by-js", e);
		}
	})(), (function(n, r) {
		typeof e == "object" && typeof t < "u" ? t.exports = r() : typeof define == "function" && define.amd ? define(r) : (n = typeof globalThis < "u" ? globalThis : n || self, n.EVirtTable = r());
	})(e, (function() {
		var e = Object.defineProperty, t = (t, n, r) => n in t ? e(t, n, {
			enumerable: !0,
			configurable: !0,
			writable: !0,
			value: r
		}) : t[n] = r, n = (e, n, r) => t(e, typeof n == "symbol" ? n : n + "", r);
		class r {
			constructor(e) {
				n(this, "rules"), this.rules = e;
			}
			validate(e) {
				let t = [], { column: n, row: r, key: i, rowKey: a, colIndex: o, rowIndex: s, value: c, field: l, fieldValue: u } = e;
				Array.isArray(this.rules) || (this.rules = [this.rules]);
				for (let e of this.rules) {
					if (e.validator) {
						let d = {
							field: l,
							fieldValue: u,
							value: c,
							column: n,
							colIndex: o,
							rowIndex: s,
							row: r,
							key: i,
							rowKey: a,
							...e
						};
						e.validator(d, c, (e) => {
							e && t.push({
								...d,
								message: e
							});
						});
					}
					if (!e.required && (c == null || c === "")) return t;
					e.pattern && !e.pattern.test(c) && t.push({
						value: c,
						column: n,
						row: r,
						key: i,
						rowKey: a,
						colIndex: o,
						rowIndex: s,
						field: l,
						fieldValue: u,
						message: e.message || `${i} is pattern validation error`
					}), e.required && (c == null || c === "") && t.push({
						value: c,
						column: n,
						row: r,
						key: i,
						rowKey: a,
						colIndex: o,
						rowIndex: s,
						field: l,
						fieldValue: u,
						message: e.message || `${i} is required`
					});
				}
				return t;
			}
		}
		function i() {
			return "xxxxxxxxxxxxxxxxxx".replace(/[x]/g, function(e) {
				let t = Math.random() * 16 | 0;
				return (e === "x" ? t : t & 3 | 8).toString(16);
			});
		}
		function a(e, t) {
			let n = 0, r;
			return function(...i) {
				let a = (/* @__PURE__ */ new Date()).getTime(), o = a - n, s = typeof t == "function" ? t() : t;
				!n || o >= s ? (e.apply(this, i), n = a) : r ||= setTimeout(() => {
					e.apply(this, i), n = (/* @__PURE__ */ new Date()).getTime(), r = void 0;
				}, s - o);
			};
		}
		function o(e = []) {
			return e.length ? e.map((e) => o(e.children) + 1).sort((e, t) => t - e)[0] : 0;
		}
		function s(e = []) {
			let t = [], n = [], r = [];
			return e.forEach((e) => {
				e.fixed === "left" ? t.push(e) : e.fixed === "right" ? r.push(e) : n.push(e);
			}), [
				...t.sort((e, t) => (e.sort ?? 0) - (t.sort ?? 0)),
				...n.sort((e, t) => (e.sort ?? 0) - (t.sort ?? 0)),
				...r.sort((e, t) => (e.sort ?? 0) - (t.sort ?? 0))
			];
		}
		function c(e = [], t = 1, n = 0, r = "") {
			return e.sort((e, t) => (e.sort ?? 0) - (t.sort ?? 0)).map((e) => {
				if (e.children) {
					let i = 0, a = e.fixed;
					e.children.forEach((e) => {
						e.fixed = a;
					});
					let o = c(e.children, t - 1, n + 1, e.key);
					return o && o.forEach((e) => {
						i += e.colspan ?? 0;
					}), {
						...e,
						width: e.width,
						level: n,
						rowspan: 1,
						colspan: i,
						parentKey: r,
						children: o.sort((e, t) => (e.sort ?? 0) - (t.sort ?? 0))
					};
				}
				return {
					...e,
					level: n,
					rowspan: t,
					colspan: 1,
					parentKey: r
				};
			});
		}
		function l(e = []) {
			let t = [];
			return e.forEach((e) => {
				e.children ? t = t.concat(l(e.children)) : t.push(e);
			}), t;
		}
		function u(e) {
			return e.filter((e) => !e.hide).map((e) => Array.isArray(e.children) && e.children.length > 0 ? {
				...e,
				children: u(e.children)
			} : { ...e });
		}
		let d = /^(\r\n|\n\r|\r|\n)/, f = /^[^\t\r\n]+/, p = /^\t/;
		function m(e) {
			let t = [[""]];
			if (e.length === 0) return t;
			let n = 0, r = 0, i;
			for (; e.length > 0 && i !== e.length;) if (i = e.length, e.match(p)) e = e.replace(p, ""), n += 1, t[r][n] = "";
			else if (e.match(d)) e = e.replace(d, ""), n = 0, r += 1, t[r] = [""];
			else {
				let i = "";
				if (e.startsWith("\"")) {
					let t = 0, n = !0;
					for (; n;) {
						let r = e.slice(0, 1);
						r === "\"" && (t += 1), i += r, e = e.slice(1), (e.length === 0 || e.match(/^[\t\r\n]/) && t % 2 == 0) && (n = !1);
					}
					i = i.replace(/^"/, "").replace(/"$/, "").replace(/["]*/g, (e) => Array(Math.floor(e.length / 2)).fill("\"").join(""));
				} else {
					let t = e.match(f);
					i = t ? t[0] : "", e = e.slice(i.length);
				}
				t[r][n] = i;
			}
			return Array.isArray(t) && t.length > 1 && t[t.length - 1].length === 1 && t[t.length - 1][0] === "" && (t = t.slice(0, t.length - 1)), t;
		}
		function h(e) {
			let t, n, r, i, a = "", o;
			for (t = 0, n = e.length; t < n; t += 1) {
				for (i = e[t].length, r = 0; r < i; r += 1) r > 0 && (a += "	"), o = e[t][r], typeof o == "string" ? o.indexOf("\n") > -1 ? a += `"${o.replace(/"/g, "\"\"")}"` : a += o : a += o ?? "";
				t !== n - 1 && (a += "\n");
			}
			return a;
		}
		function g(e, t, n = []) {
			let r = 0, i = [];
			return e.forEach((a, o) => {
				o === 0 ? i.push(1) : (n.reduce((e, t) => `${e}${a[t] ?? ""}`, "") || a[t]) === (n.reduce((t, n) => `${t}${e[o - 1][n] ?? ""}`, "") || e[o - 1][t]) ? (i[r] += 1, i.push(0)) : (i.push(1), r = o);
			}), i;
		}
		function _(e, t) {
			let n = "", r = "", i = {};
			return t.forEach((t, a) => {
				a === 0 ? (n = t.key, r = t.key, i[t.key] = 1) : e[t.key] === e[n] ? (i[t.key] = 0, i[r] += 1) : (i[t.key] = 1, n = t.key, r = t.key);
			}), i;
		}
		function v(e, t, n = []) {
			let { visibleRows: r, rowIndex: i, headIndex: a } = e, o = g(r, t, n);
			return o[i - a] === 0 ? {
				rowspan: 0,
				colspan: 0,
				relationRowKeys: n,
				mergeRow: !0
			} : {
				rowspan: o[i - a],
				colspan: 1,
				relationRowKeys: n,
				mergeRow: !0
			};
		}
		function y(e, t = []) {
			let { column: n, row: r, visibleLeafColumns: i } = e, a = i.filter((e) => t.includes(e.key));
			if (t.includes(n.key)) {
				let e = _(r, a);
				return e[n.key] === 0 ? {
					rowspan: 0,
					colspan: 0,
					relationColKeys: t,
					mergeCol: !0
				} : {
					rowspan: 1,
					colspan: e[n.key],
					relationColKeys: t,
					mergeCol: !0
				};
			}
		}
		function b(e, t = document.documentElement) {
			let n = e.startsWith("--") ? e : `--${e}`;
			return getComputedStyle(t).getPropertyValue(n).trim();
		}
		function x(e) {
			if (!e) return /* @__PURE__ */ new Date(0);
			if (typeof e == "number") return new Date(e);
			let t = String(e).trim(), n = new Date(t);
			if (!isNaN(n.getTime())) return n;
			for (let e of [
				/^(\d{4})-(\d{1,2})-(\d{1,2})$/,
				/^(\d{4})\/(\d{1,2})\/(\d{1,2})$/,
				/^(\d{4})\.(\d{1,2})\.(\d{1,2})$/,
				/^(\d{1,2})-(\d{1,2})-(\d{4})$/,
				/^(\d{1,2})\/(\d{1,2})\/(\d{4})$/,
				/^(\d{1,2})\.(\d{1,2})\.(\d{4})$/,
				/^(\d{1,2})-(\d{1,2})-(\d{4})$/,
				/^(\d{1,2})\/(\d{1,2})\/(\d{4})$/,
				/^(\d{1,2})\.(\d{1,2})\.(\d{4})$/,
				/^(\d{4})(\d{2})(\d{2})$/,
				/^(\d{4})-(\d{1,2})-(\d{1,2})\s+(\d{1,2}):(\d{1,2})(?::(\d{1,2}))?$/,
				/^(\d{4})\/(\d{1,2})\/(\d{1,2})\s+(\d{1,2}):(\d{1,2})(?::(\d{1,2}))?$/
			]) {
				let n = t.match(e);
				if (n) {
					let t = n.slice(1).map(Number);
					if (e.source.includes("YYYY-MM-DD") || e.source.includes("YYYY/MM/DD") || e.source.includes("YYYY.MM.DD")) {
						let [e, n, r, i = 0, a = 0, o = 0] = t;
						return new Date(e, n - 1, r, i, a, o);
					}
					if (e.source.includes("DD-MM-YYYY") || e.source.includes("DD/MM/YYYY") || e.source.includes("DD.MM.YYYY")) {
						let [e, n, r, i = 0, a = 0, o = 0] = t;
						return new Date(r, n - 1, e, i, a, o);
					}
					if (e.source.includes("MM-DD-YYYY") || e.source.includes("MM/DD/YYYY") || e.source.includes("MM.DD.YYYY")) {
						let [e, n, r, i = 0, a = 0, o = 0] = t;
						return new Date(r, e - 1, n, i, a, o);
					}
					if (e.source.includes("YYYYMMDD")) {
						let [e, n, r] = t;
						return new Date(e, n - 1, r);
					}
				}
			}
			return /* @__PURE__ */ new Date(NaN);
		}
		function S(e, t) {
			let n = x(e), r = x(t);
			return isNaN(n.getTime()) && isNaN(r.getTime()) ? 0 : isNaN(n.getTime()) ? -1 : isNaN(r.getTime()) ? 1 : n.getTime() - r.getTime();
		}
		function C(e) {
			return String(e).match(/\.(\d+)/)?.[1].length ?? 0;
		}
		function w(e) {
			return (e.scrollbarMode ?? e.SCROLLBAR_MODE) === "inner" ? "inner" : "outer";
		}
		function T(e) {
			return w(e) === "inner";
		}
		function E(e) {
			return T(e) ? 0 : e.SCROLLER_TRACK_SIZE || 0;
		}
		function D(e) {
			return e.SCROLLER_TRACK_SIZE || 0;
		}
		function O(e, t) {
			return !T(e) || !t ? 0 : D(e);
		}
		function k(e) {
			return +!!T(e);
		}
		function A(e) {
			return !T(e);
		}
		function ee(e) {
			return !T(e);
		}
		function j(e, t) {
			return T(e) && t;
		}
		function M(e, t) {
			return !T(e) || t.innerVisible || t.isFocus || t.isDragging;
		}
		class te {
			constructor(e, t, r, i, a, o, s) {
				n(this, "ctx"), n(this, "x", 0), n(this, "y", 0), n(this, "width", 0), n(this, "height", 0), n(this, "visibleWidth", 0), n(this, "visibleHeight", 0), n(this, "fixed"), n(this, "cellType"), n(this, "drawX", 0), n(this, "drawY", 0), n(this, "cellImages", /* @__PURE__ */ new Map()), this.ctx = e, this.x = t, this.y = r, this.width = i, this.height = a, this.fixed = s, this.cellType = o;
			}
			isHorizontalVisible() {
				if (this.fixed) return !0;
				let { stageWidth: e, fixedLeftWidth: t, scrollX: n, fixedRightWidth: r } = this.ctx, i = e;
				return !(this.x + this.width - t - n <= 0 || this.x - n >= i - r);
			}
			isVerticalVisible() {
				let { stageHeight: e, scrollY: t } = this.ctx, n = e;
				return !(this.y + this.height - t <= 0 || this.y - t >= n);
			}
			getDrawX() {
				if (this.fixed === "left") return this.x;
				if (this.fixed === "right") {
					let { stageWidth: e } = this.ctx;
					return e - (this.ctx.header.width - this.x) - E(this.ctx.config);
				}
				return this.x - this.ctx.scrollX;
			}
			getDrawY() {
				return this.cellType === "header" || this.cellType === "footer" && this.ctx.config.FOOTER_FIXED ? this.y : this.y - this.ctx.scrollY;
			}
			getLeftFixedX() {
				return this.x - this.ctx.scrollX;
			}
			isInside(e, t) {
				return e >= this.drawX && e <= this.drawX + this.width && t >= this.drawY && t <= this.drawY + this.height;
			}
			isInsideVisible(e, t) {
				return e >= this.drawX && e <= this.drawX + this.visibleWidth && t >= this.drawY && t <= this.drawY + this.visibleHeight && this.isInside(e, t);
			}
			setImage(e, t) {
				this.cellImages.set(e, t);
			}
			getImages() {
				return this.cellImages;
			}
			getImage(e) {
				return this.cellImages.get(e);
			}
			isImageInside(e, t) {
				let { offsetX: n, offsetY: r } = this.ctx.getOffset(t), i = this.getImage(e);
				return i ? i.isInside(n, r) : !1;
			}
			getImageClickDirection(e, t) {
				let { offsetX: n, offsetY: r } = this.ctx.getOffset(t), i = this.getImage(e);
				if (!i) return null;
				let a = n - i.x, o = r - i.y, s = i.width / 2;
				return o < i.height / 2 ? a < s ? "up-left" : "up-right" : a < s ? "down-left" : "down-right";
			}
		}
		class ne {
			constructor(e, t, r, i, a, o) {
				n(this, "source"), n(this, "name"), n(this, "x"), n(this, "y"), n(this, "width"), n(this, "height"), n(this, "visible", !0), this.source = o, this.name = e, this.x = t, this.y = r, this.width = i, this.height = a;
			}
			drawWrapper(e, t) {
				e.paint.drawRect(this.x - 2, this.y - 2, this.width + 4, this.height + 4, {
					radius: 4,
					borderWidth: 1,
					...t
				});
			}
			setVisible(e) {
				this.visible = e;
			}
			isInside(e, t) {
				return this.visible ? !!(this.source && e > this.x && e < this.x + this.width && t > this.y && t < this.y + this.height) : !1;
			}
		}
		function N(e) {
			return e.ENABLE_RESIZE_COLUMN ? e.RESIZE_COLUMN_DIVIDER_COLOR : void 0;
		}
		function P(e) {
			return e === !0 ? "default" : e === !1 ? "inner" : e;
		}
		function F(e) {
			return P(e) === "default";
		}
		function re(e) {
			let t = P(e);
			return t === "default" || t === "inner";
		}
		function I(e, t, n, r, i = {}) {
			let { fixedLeftEnd: a = r, fixedRightStart: o = 0 } = i;
			return e === "right" ? t > o + .01 ? "left" : null : e === "left" ? t + n < a - .01 ? "right" : null : t + n < r - .01 ? "right" : null;
		}
		function ie(e) {
			let t = P(e);
			return t === "default" || t === "outer";
		}
		function L(e) {
			return P(e) === "default";
		}
		function R(e, t) {
			return L(e) || t;
		}
		class ae extends te {
			constructor(e, t, r, i, a, o, s, c, l, u = "body", d = !0) {
				super(e, i, a, o, s, u, c.fixed), n(this, "parentRowKey", ""), n(this, "parentRowKeys", []), n(this, "formatter"), n(this, "formatterFinderValue"), n(this, "formatterFinderFooterValue"), n(this, "formatterFooter"), n(this, "hoverIconName", ""), n(this, "operation", !1), n(this, "align"), n(this, "verticalAlign"), n(this, "fixed"), n(this, "type"), n(this, "editorType"), n(this, "editorProps"), n(this, "cellType"), n(this, "level"), n(this, "colspan", 1), n(this, "rowspan", 1), n(this, "mergeRow", !1), n(this, "mergeCol", !1), n(this, "relationRowKeys", []), n(this, "relationColKeys", []), n(this, "key"), n(this, "column"), n(this, "rowIndex"), n(this, "colIndex"), n(this, "rowKey"), n(this, "row"), n(this, "value"), n(this, "render"), n(this, "renderFooter"), n(this, "style", {}), n(this, "domDataset", {}), n(this, "rules", []), n(this, "message", ""), n(this, "text", ""), n(this, "displayText", ""), n(this, "visibleWidth", 0), n(this, "visibleHeight", 0), n(this, "isHasChanged", !1), n(this, "drawX", 0), n(this, "drawY", 0), n(this, "drawCellBgColor", ""), n(this, "drawCellSkyBgColor", ""), n(this, "drawTextColor", ""), n(this, "drawTextFont", ""), n(this, "drawTextX", 0), n(this, "drawTextY", 0), n(this, "drawTextWidth", 0), n(this, "drawTextHeight", 0), n(this, "autoRowHeight", !1), n(this, "calculatedHeight", 0), n(this, "ellipsis", !1), n(this, "rowExpand", !1), n(this, "rowHasChildren", !1), n(this, "overflowTooltipShow", !0), n(this, "selectorCellValueType", "value"), n(this, "overflowTooltipMaxWidth", 500), n(this, "overflowTooltipPlacement", "top"), n(this, "maxLineClamp", "auto"), n(this, "precision"), n(this, "min"), n(this, "max"), n(this, "maxlength"), n(this, "mixedRender", !1), n(this, "renderType", "default"), n(this, "renderFooterType", "default"), this.visibleWidth = this.width, this.visibleHeight = this.height, this.colIndex = r, this.rowIndex = t, this.key = c.key, this.type = c.type || "", this.editorType = c.editorType || "text", this.selectorCellValueType = c.selectorCellValueType || this.ctx.config.SELECTOR_CELL_VALUE_TYPE || "value", this.editorProps = c.editorProps || {}, this.cellType = u, this.align = c.align || this.ctx.config.COLUMNS_ALIGN, this.verticalAlign = c.verticalAlign || this.ctx.config.COLUMNS_VERTICAL_ALIGN, this.fixed = c.fixed || "", this.level = c.level || 0, this.operation = c.operation || !1, this.column = c, this.rules = c.rules || [], this.row = l, this.rowKey = this.cellType === "body" ? this.ctx.database.getRowKeyForRowIndex(t) : `${this.cellType}_${this.rowIndex}`, this.value = this.getValue(), this.render = c.render, this.overflowTooltipShow = c.overflowTooltipShow !== !1, this.autoRowHeight = c.autoRowHeight === void 0 ? this.ctx.config.AUTO_ROW_HEIGHT : c.autoRowHeight, this.overflowTooltipMaxWidth = c.overflowTooltipMaxWidth || 500, this.overflowTooltipPlacement = c.overflowTooltipPlacement || "top", this.renderFooter = c.renderFooter, this.hoverIconName = c.hoverIconName, this.formatter = c.formatter, this.formatterFinderValue = c.formatterFinderValue, this.formatterFinderFooterValue = c.formatterFinderFooterValue, this.formatterFooter = c.formatterFooter, this.maxLineClamp = c.maxLineClamp || "auto", this.precision = c.precision, this.min = c.min, this.max = c.max, this.maxlength = c.maxlength, this.mixedRender = c.mixedRender || !1, this.renderType = c.renderType || "default", this.renderFooterType = c.renderFooterType || "default";
				let f = this.ctx.database.getRowForRowKey(this.rowKey);
				this.cellType === "body" && f && (this.parentRowKey = f.parentRowKey, this.parentRowKeys = f.parentRowKeys), d && this.update();
			}
			setWidthHeight(e, t) {
				this.width = e, this.height = t;
			}
			getValidationMessage() {
				let e = this.ctx.database.getValidationError(this.rowKey, this.key);
				if (Array.isArray(e) && e.length) {
					let [t] = e;
					this.message = t.message || "";
				}
				return this.message;
			}
			update() {
				this.drawX = this.getDrawX(), this.drawY = this.getDrawY(), this.updateSpan(), this.updateDragImage();
				let e = this.getImage("drag"), t = e ? e.width : 0;
				this.drawTextX = this.drawX + t, this.drawTextY = this.drawY, this.isHasChanged = this.ctx.database.isHasChangedData(this.rowKey, this.key), this.drawTextWidth = this.visibleWidth - t, this.drawTextHeight = this.visibleHeight, this.updateStyle(), this.updateType(), this.updateHoverIcon(), this.updateSelection(), this.updateTree(), this.updateEditor(), this.updateRender(), this.getValidationMessage(), this.updateContainer(), this.text = this.getText(), this.displayText = this.getDisplayText();
			}
			updateSpan() {
				if (this.cellType === "footer") return;
				let { SPAN_METHOD: e } = this.ctx.config;
				if (typeof e == "function") {
					let { colspan: t = 1, rowspan: n = 1, relationRowKeys: r, relationColKeys: i, mergeRow: a = !1, mergeCol: o = !1 } = e({
						row: this.row,
						rowIndex: this.rowIndex,
						colIndex: this.colIndex,
						column: this.column,
						value: this.getValue(),
						headIndex: this.ctx.body.headIndex,
						headPosition: this.ctx.database.getPositionForRowIndex(this.ctx.body.headIndex),
						visibleRows: this.ctx.body.visibleRows,
						visibleLeafColumns: this.ctx.header.visibleLeafColumns,
						rows: this.ctx.body.data
					}) || {};
					this.relationRowKeys = Array.isArray(r) && r.length > 0 ? r : [this.key], this.relationColKeys = Array.isArray(i) && i.length > 0 ? i : [this.key], this.mergeCol = o, this.mergeRow = a, this.colspan = t, this.rowspan = n, this.visibleWidth = this.getWidthByColIndexColSpan(this.colIndex, this.colspan), this.visibleHeight = this.ctx.database.getHeightByRowIndexRowSpan(this.rowIndex, this.rowspan);
				}
			}
			updateSpanInfo() {
				if (this.mergeRow || this.mergeCol) {
					let e = this.getSpanInfo();
					this.height = e.height, this.width = e.width, this.drawX = this.getDrawX(), this.drawY = this.getDrawY(), this.drawY -= e.offsetTop, this.drawX -= e.offsetLeft;
				}
			}
			updateType() {
				let { BODY_CELL_TYPE_METHOD: e } = this.ctx.config;
				if (typeof e == "function") {
					let t = e({
						row: this.row,
						rowIndex: this.rowIndex,
						colIndex: this.colIndex,
						column: this.column,
						value: this.getValue()
					});
					t !== void 0 && (this.type = t);
				}
			}
			updateEditor() {
				let { BODY_CELL_EDITOR_METHOD: e } = this.ctx.config;
				if (typeof e == "function") {
					let t = e({
						row: this.row,
						rowIndex: this.rowIndex,
						colIndex: this.colIndex,
						column: this.column,
						value: this.getValue()
					});
					if (t !== void 0) {
						let { type: e, props: n = {} } = t;
						this.editorType = e, this.editorProps = n;
					}
				}
			}
			updateRender() {
				let { BODY_CELL_RENDER_METHOD: e } = this.ctx.config;
				if (typeof e == "function") {
					let t = e({
						row: this.row,
						rowIndex: this.rowIndex,
						colIndex: this.colIndex,
						column: this.column,
						value: this.getValue()
					});
					t !== void 0 && (this.render = t);
				}
			}
			validate() {
				this.ctx.database.getValidator(this.rowKey, this.key).then((e) => {
					if (Array.isArray(e) && e.length) {
						let [t] = e;
						this.message = t.message;
					} else this.message = "";
				}).finally(() => {
					this.ctx.emit("draw");
				});
			}
			updateStyle() {
				this.autoRowHeight && (this.domDataset = {
					"data-auto-height": !0,
					"data-row-index": this.rowIndex,
					"data-col-index": this.colIndex
				}), this.style = this.getOverlayerViewsStyle();
			}
			isInsideVisible(e, t) {
				return e >= this.drawX && e <= this.drawX + this.visibleWidth && t >= this.drawY && t <= this.drawY + this.visibleHeight;
			}
			updateTree() {
				let { CELL_PADDING: e = 0 } = this.ctx.config, { rowKey: t, cellType: n } = this, r, i = 0, a = "";
				if (!([
					"tree",
					"selection-tree",
					"tree-selection"
				].includes(this.type) && n === "body")) return;
				let { expand: o = !1, hasChildren: s = !1, expandLoading: c = !1, level: l = 0 } = this.ctx.database.getRowForRowKey(t) || {};
				this.rowExpand = o, this.rowHasChildren = s;
				let { TREE_INDENT: u = 16, CHECKBOX_SIZE: d, TREE_ICON_SIZE: f } = this.ctx.config;
				if (i = l * u, c) {
					let e = this.ctx.icons.get("loading");
					a = "loading", r = e;
				} else if (s) {
					let e = this.ctx.icons.get("expand"), t = this.ctx.icons.get("shrink");
					r = o ? t : e, a = o ? "shrink" : "expand";
				}
				let p = f, m = f, h = this.drawX;
				(this.align === "center" || this.align === "right") && (h = this.drawX + (this.visibleWidth - p - 2 * e) / 2, this.align = "left");
				let g = h + i + e, _ = this.drawY + (this.visibleHeight - m) / 2, v = i + this.drawX + p - .5, y = this.getImage("selection"), b = this.getImage("drag"), x = b ? b.width : 0;
				if (this.type === "selection-tree" && y) {
					let t = y.x, n = y.width;
					g = i + t + n, v = g + p - e / 2;
				} else this.type === "tree-selection" ? (g += x, v = g + d + p - e / 2) : (g += x, v = g + p - e / 2);
				this.drawTextX = v, this.drawTextWidth = this.drawX + this.visibleWidth - v, !(g + p + e > this.drawX + this.visibleWidth) && (_ + m + e > this.drawY + this.visibleHeight || this.setImage("tree", new ne(a, g, _, p, m, r)));
			}
			updateDragImage() {
				if (this.cellType === "body" && this.column.dragRow) {
					let { DRAG_ROW_ICON_SIZE: e, CELL_PADDING: t } = this.ctx.config, n = this.drawX + t / 2, r = this.drawY + (this.visibleHeight - e) / 2, i = new ne("drag", n, r, e, e, this.ctx.icons.get("drag"));
					this.rowspan === 0 && i.setVisible(!1), this.setImage("drag", i);
				}
			}
			drawTreeLine() {
				let { TREE_LINE: e, TREE_INDENT: t = 16, TREE_ICON_SIZE: n = 16, TREE_LINE_COLOR: r = "#e1e6eb" } = this.ctx.config;
				if (!e || this.cellType !== "body" || ![
					"tree",
					"selection-tree",
					"tree-selection"
				].includes(this.type) || this.rowspan === 0 || this.colspan === 0) return;
				let i = this.ctx.database.getRowForRowKey(this.rowKey) || {}, a = i.level ?? 0, o = this.getImage("tree");
				if (!o) return;
				let s = o.x, c = o.y, l = o.width, u = o.height, d = s + l / 2, f = c + u / 2, p = s - a * t, m = Array.isArray(i.parentRowKeys) ? i.parentRowKeys : [];
				if (a > 0) {
					for (let e = 0; e < a - 1; e += 1) {
						let i = m[e + 1];
						if ((i && this.ctx.database.getRowForRowKey(i) || {}).isLastChild) continue;
						let o = Math.round(s - (a - e) * t + n / 2);
						this.ctx.paint.drawLine([
							o,
							this.drawY,
							o,
							this.drawY + this.visibleHeight
						], {
							borderColor: r,
							borderWidth: 1,
							lineDash: [4, 4],
							lineDashOffset: 0
						});
					}
					let e = Math.round(s - t + n / 2), o = i.isLastChild ? f : this.drawY + this.visibleHeight;
					this.ctx.paint.drawLine([
						e,
						this.drawY,
						e,
						o
					], {
						borderColor: r,
						borderWidth: 1,
						lineDash: [4, 4],
						lineDashOffset: 0
					});
					let c = Math.round(p + (a - 1) * t + n / 2);
					this.ctx.paint.drawLine([
						c,
						f,
						d,
						f
					], {
						borderColor: r,
						borderWidth: 1,
						lineDash: [4, 4],
						lineDashOffset: 0
					});
				}
				if (i.hasChildren && i.expand) {
					let e = c + u, t = this.drawY + this.visibleHeight;
					this.ctx.paint.drawLine([
						d,
						e,
						d,
						t
					], {
						borderColor: r,
						borderWidth: 1,
						lineDash: [4, 4],
						lineDashOffset: 0
					});
				}
			}
			updateContainer() {
				let { BODY_BG_COLOR: e, EDIT_BG_COLOR: t, BODY_CELL_STYLE_METHOD: n, FOOTER_CELL_STYLE_METHOD: r, READONLY_TEXT_COLOR: i, BODY_TEXT_COLOR: a, FOOTER_TEXT_COLOR: o, FOOTER_BG_COLOR: s, HIGHLIGHT_SELECTED_ROW: c, HIGHLIGHT_SELECTED_ROW_COLOR: l, HIGHLIGHT_HOVER_ROW: u, HIGHLIGHT_HOVER_ROW_COLOR: d, STRIPE: f, STRIPE_COLOR: p, FINDER_CELL_BG_COLOR: m } = this.ctx.config;
				if (this.cellType === "footer") {
					let e = s, t = o;
					if (typeof r == "function") {
						let { backgroundColor: n, color: i, font: a } = r({
							row: this.row,
							rowIndex: this.rowIndex,
							colIndex: this.colIndex,
							column: this.column,
							value: this.getValue()
						}) || {};
						n && (e = n), i && (t = i), a && (this.drawTextFont = a);
					}
					let { rowIndex: n, colIndex: i, type: a } = this.ctx.finderBar;
					n === this.rowIndex && i === this.colIndex && a === "footer" && (e = m), this.drawCellSkyBgColor = "transparent", this.drawCellBgColor = e, this.drawTextColor = t;
					return;
				}
				let h = "transparent", g = this.ctx.hoverCell, _ = this.ctx.currentCell, v = this.rowIndex, y = this.rowIndex;
				if (this.rowspan !== 1 && (u || c)) {
					let { yArr: e } = this.getSpanInfo();
					v = e[0], y = e[1];
				}
				u && g && !this.ctx.dragRowIng && (g.rowKey === this.rowKey && (h = d), g.rowIndex >= v && g.rowIndex <= y && (h = d)), c && _ && !this.ctx.dragRowIng && (_.rowKey === this.rowKey && (h = l), _.rowIndex >= v && _.rowIndex <= y && (h = l)), this.drawCellSkyBgColor = h;
				let b = e, x = a;
				if (!this.ctx.database.getReadonly(this.rowKey, this.key) && !["index", "index-selection"].includes(this.type) && (b = t, x = i), f && (b = this.rowIndex % 2 ? p : e), typeof n == "function") {
					let { backgroundColor: e, color: t, font: r } = n({
						row: this.row,
						rowIndex: this.rowIndex,
						colIndex: this.colIndex,
						column: this.column,
						isHasChanged: this.isHasChanged,
						value: this.getValue()
					}) || {};
					e && (b = e), t && (x = t), r && (this.drawTextFont = r);
				}
				let { rowIndex: S, colIndex: C, type: w } = this.ctx.finderBar;
				S === this.rowIndex && C === this.colIndex && w === "body" && (b = m), this.drawCellBgColor = b, this.drawTextColor = x;
			}
			updateSelection() {
				let { visibleWidth: e, visibleHeight: t, rowspan: n, colspan: r, cellType: i, type: a, rowIndex: o, rowKey: s } = this;
				if (n === 0 || r === 0 || i === "footer" || ![
					"index-selection",
					"selection",
					"selection-tree",
					"tree-selection"
				].includes(a)) return;
				let c = this.ctx.database.getRowSelectable(s), { CHECKBOX_SIZE: l = 0, CELL_PADDING: u } = this.ctx.config, d = this.drawX + u;
				(this.align === "center" || this.align === "right") && (d = this.drawX + (e - l) / 2);
				let f = d, p = this.drawY + (t - l) / 2;
				if (a !== "selection-tree" && a === "tree-selection") {
					let { TREE_INDENT: e = 16, TREE_ICON_SIZE: t } = this.ctx.config, { level: n = 0 } = this.ctx.database.getRowForRowKey(s) || {}, r = n * e;
					f = d + t + r;
				}
				let m = this.ctx.icons.get("checkbox-uncheck"), h = "checkbox-uncheck";
				if (a === "selection-tree" || a === "tree-selection") {
					let e = this.ctx.database.getTreeSelectionState(s);
					e.indeterminate && c ? (m = this.ctx.icons.get("checkbox-indeterminate"), h = "checkbox-indeterminate") : e.checked && c ? (m = this.ctx.icons.get("checkbox-check"), h = "checkbox-check") : !e.checked && c ? (m = this.ctx.icons.get("checkbox-uncheck"), h = "checkbox-uncheck") : (m = this.ctx.icons.get("checkbox-disabled"), h = "checkbox-disabled");
				} else {
					let e = this.ctx.database.getRowSelection(s);
					e && c ? (m = this.ctx.icons.get("checkbox-check"), h = "checkbox-check") : e && !c ? (m = this.ctx.icons.get("checkbox-check-disabled"), h = "checkbox-check-disabled") : !e && c ? (m = this.ctx.icons.get("checkbox-uncheck"), h = "checkbox-uncheck") : (m = this.ctx.icons.get("checkbox-disabled"), h = "checkbox-disabled");
				}
				let g = this.getImage("drag"), _ = g ? g.width : 0;
				if (f += _, f + l + u > this.drawX + this.visibleWidth || p + l + u > this.drawY + this.visibleHeight) return;
				let v = new ne(h, f, p, l, l, m);
				if (a === "index-selection") {
					v.setVisible(!1), (this.ctx.hoverCell && this.ctx.hoverCell.rowIndex === o || ["checkbox-disabled", "checkbox-check"].includes(h)) && v.setVisible(!0);
					let e = this.rowIndex, t = this.rowIndex, n = this.ctx.hoverCell, { yArr: r } = this.getSpanInfo();
					e = r[0], t = r[1], n && n.rowIndex >= e && n.rowIndex <= t && v.setVisible(!0);
				}
				this.setImage("selection", v);
			}
			updateHoverIcon() {
				if (this.ctx.database.getReadonly(this.rowKey, this.key)) return;
				let { BODY_CELL_HOVER_ICON_METHOD: e, CELL_HOVER_ICON_SIZE: t, CELL_PADDING: n, ENABLE_MERGE_CELL_LINK: r } = this.ctx.config;
				if (typeof e == "function") {
					let t = e({
						row: this.row,
						rowIndex: this.rowIndex,
						colIndex: this.colIndex,
						column: this.column,
						value: this.getValue()
					});
					t !== void 0 && (this.hoverIconName = t);
				}
				let { hoverCell: i } = this.ctx;
				if (this.hoverIconName && !this.ctx.editing && !this.ctx.dragRowIng && i) {
					let e = 0, a = 0;
					if (i.rowKey === this.rowKey && (e = this.drawX + this.width - t - n, a = this.drawY + (this.height - t) / 2), this.rowspan !== 1 && r) {
						let r = this.getSpanInfo(), { yArr: o } = r, s = o[0], c = o[1];
						if (i.rowIndex >= s && i.rowIndex <= c) {
							let { width: i, height: o, offsetTop: s, offsetLeft: c } = r;
							e = this.drawX - c + i - t - n, a = this.drawY - s + (o - t) / 2;
						}
					}
					let o = this.ctx.icons.get(this.hoverIconName), s = new ne(this.hoverIconName, e, a, t, t, o);
					(this.rowspan === 0 || this.colspan === 0) && s.setVisible(!1), this.setImage("hover", s);
				}
			}
			getAutoHeight() {
				if (this.cellType !== "body" || !this.autoRowHeight || this.rowspan === 0) return 0;
				if (this.render) {
					let e = this.ctx.database.getOverlayerAutoHeight(this.rowIndex, this.colIndex);
					return this.rowspan > 1 ? e < this.visibleHeight ? 0 : Math.round(e - (this.visibleHeight - this.height)) : Math.round(e);
				}
				if (!(this.displayText && typeof this.displayText == "string")) return 0;
				let { BODY_FONT: e, CELL_PADDING: t, CELL_LINE_HEIGHT: n } = this.ctx.config, r = `${this.displayText}_${this.drawTextWidth}_${this.drawTextFont}`, i = this.ctx.paint.calculateTextHeight(this.displayText, this.drawTextWidth, {
					font: this.drawTextFont || e,
					padding: t,
					align: this.align,
					verticalAlign: this.verticalAlign,
					color: this.drawTextColor,
					autoRowHeight: this.autoRowHeight,
					lineHeight: n,
					maxLineClamp: this.maxLineClamp,
					cacheTextKey: r
				});
				return this.rowspan > 1 ? i < this.visibleHeight ? 0 : Math.round(i - (this.visibleHeight - this.height)) : Math.round(i);
			}
			getSpanInfo() {
				return this.ctx.database.getSpanInfo(this);
			}
			getDisplayText(e = this.text) {
				if (this.cellType === "footer") return this.renderFooter && this.renderFooterType === "default" || e == null ? "" : `${e}`;
				{
					if (this.rowspan === 0 || this.colspan === 0 || this.render && this.renderType === "default" && !this.mixedRender) return "";
					let t = this.getImage("selection");
					return this.type === "index-selection" && t && t.visible || e == null ? "" : `${e}`;
				}
			}
			getText() {
				if (this.cellType === "footer") return typeof this.formatterFooter == "function" ? this.formatterFooter({
					row: this.row,
					rowIndex: this.rowIndex,
					colIndex: this.colIndex,
					column: this.column,
					value: this.row[this.key]
				}) : this.row[this.key];
				if (typeof this.formatter == "function") return this.formatter({
					row: this.row,
					rowIndex: this.rowIndex,
					colIndex: this.colIndex,
					column: this.column,
					value: this.getValue()
				});
				let { BODY_CELL_FORMATTER_METHOD: e } = this.ctx.config;
				return typeof e == "function" ? e({
					row: this.row,
					rowIndex: this.rowIndex,
					colIndex: this.colIndex,
					column: this.column,
					value: this.getValue()
				}) : ["index-selection", "index"].includes(this.type) ? `${this.rowIndex + 1}` : (this.value = this.ctx.database.getItemValue(this.rowKey, this.key), this.value);
			}
			getFinderText() {
				let e = this.getDisplayText(this.getText()), t = this.cellType === "footer" ? this.formatterFinderFooterValue : this.formatterFinderValue;
				if (typeof t != "function") return e;
				let n = t({
					row: this.row,
					rowIndex: this.rowIndex,
					colIndex: this.colIndex,
					column: this.column,
					value: this.cellType === "footer" ? this.row[this.key] : this.getValue(),
					displayText: e
				});
				return n == null ? e : `${n}`;
			}
			getValue() {
				return this.ctx.database.getItemValue(this.rowKey, this.key);
			}
			setValue(e) {
				this.ctx.setItemValueByEditor(this.rowKey, this.key, e);
			}
			getOverlayerViewsStyle() {
				let e = this.drawX - this.ctx.fixedLeftWidth, t = this.drawY - this.ctx.body.y;
				if (this.fixed === "left" ? e = this.drawX : this.fixed === "right" && (e = this.drawX - (this.ctx.stageWidth - this.ctx.fixedRightWidth)), this.cellType === "footer" && this.ctx.config.FOOTER_FIXED && (t = this.drawY - this.ctx.footer.y), this.autoRowHeight && this.render && this.verticalAlign === "middle") {
					let e = this.ctx.database.getOverlayerAutoHeight(this.rowIndex, this.colIndex);
					if (e < this.visibleHeight && e > 0) {
						let n = (this.visibleHeight - e) / 2;
						t += n;
					}
				}
				this.autoRowHeight && this.ctx.database.getOverlayerAutoHeight(this.rowIndex, this.colIndex) === 0 && (e = -99999, t = -99999);
				let n = {};
				return this.rowspan === 0 && (n = { display: "none" }), {
					position: "absolute",
					overflow: "hidden",
					left: `${Math.round(e - 1)}px`,
					top: `${Math.round(t - 1)}px`,
					width: `${this.visibleWidth}px`,
					height: this.autoRowHeight && this.renderType === "default" ? "auto" : `${this.visibleHeight}px`,
					pointerEvents: "initial",
					userSelect: "none",
					...n
				};
			}
			drawContainer() {
				let { paint: e, config: t } = this.ctx, { BORDER: n } = t, { drawX: r, drawY: i } = this, a = F(n) ? t.BORDER_COLOR : void 0;
				e.drawRect(r, i, this.visibleWidth, this.visibleHeight, {
					borderColor: a,
					fillColor: this.drawCellBgColor
				}), e.drawRect(r, i, this.width, this.height, { fillColor: this.drawCellSkyBgColor });
			}
			drawHorizontalBorder() {
				let { config: e } = this.ctx, { BORDER: t } = e;
				if (!re(t) || this.cellType !== "footer" && F(t)) return;
				let { drawX: n, drawY: r } = this, i = e.BORDER_COLOR;
				this.ctx.paint.drawLine([
					n,
					r + this.visibleHeight,
					n + this.visibleWidth,
					r + this.visibleHeight
				], {
					borderColor: i,
					fillColor: i,
					borderWidth: 1,
					lineCap: "round",
					lineJoin: "round"
				});
			}
			drawAutofillPiont() {
				if (this.cellType === "footer") return;
				let { SELECT_BORDER_COLOR: e, ENABLE_AUTOFILL: t, ENABLE_SELECTOR: n, AUTOFILL_POINT_BORDER_COLOR: r } = this.ctx.config;
				if (!n || !t || this.ctx.editing) return;
				let { xArr: i, yArr: a } = this.ctx.selector, o = i[1], s = a[1], { colIndex: c, rowIndex: l, drawX: u, drawY: d } = this;
				if (c === o && l === s) {
					let t = c === this.ctx.maxColIndex || l === this.ctx.maxRowIndex || c === this.ctx.lastCenterColIndex ? 6 : 4;
					this.ctx.paint.drawRect(u + this.width - t, d + this.height - t, 6, 6, {
						borderColor: r,
						fillColor: e
					});
				}
			}
			draw() {
				this.drawTreeLine(), this.drawText(), this.drawImage(), this.drawSelector(), this.drawAutofillPiont(), this.drawErrorTip();
			}
			getWidthByColIndexColSpan(e, t) {
				if (t === 0) return 0;
				let n = 0;
				for (let r = e; r < e + t; r++) {
					let e = this.ctx.header.leafCellHeaders[r];
					n += e.width;
				}
				return n;
			}
			drawText() {
				let { CELL_PADDING: e, BODY_FONT: t, PLACEHOLDER_COLOR: n, CELL_LINE_HEIGHT: r } = this.ctx.config, { placeholder: i } = this.column, a = this.displayText, o = this.drawTextColor;
				if (!this.ctx.database.getReadonly(this.rowKey, this.key) && i && [
					"",
					null,
					void 0
				].includes(this.text) && this.cellType === "body" && this.rowspan !== 0 && this.colspan !== 0 && (a = i, o = n), [
					"",
					null,
					void 0
				].includes(a)) return !1;
				typeof a != "string" && (a = `${a}`);
				let s = `${a}_${this.drawTextWidth}_${this.drawTextFont}`;
				return this.ellipsis = this.ctx.paint.drawText(a, this.drawTextX, this.drawTextY, this.drawTextWidth, this.drawTextHeight, {
					font: this.drawTextFont || t,
					padding: e,
					align: this.align,
					verticalAlign: this.verticalAlign,
					color: o,
					autoRowHeight: this.autoRowHeight,
					lineHeight: r,
					maxLineClamp: this.maxLineClamp,
					cacheTextKey: s,
					layoutCallback: (e) => {
						this.ctx.emit("registerTextLayout", `${this.cellType}-${this.rowIndex}-${this.colIndex}`, e);
					}
				}), this.ellipsis;
			}
			drawImage() {
				this.getImages().forEach((e, t) => {
					if (e.visible && e.source) {
						if (t === "hover") {
							let { CELL_HOVER_ICON_BG_COLOR: t, CELL_HOVER_ICON_BORDER_COLOR: n } = this.ctx.config;
							e.drawWrapper(this.ctx, {
								borderColor: n,
								fillColor: t
							});
						}
						this.ctx.paint.drawImage(e.source, e.x, e.y, e.width, e.height);
					}
				});
			}
			drawSelector() {
				if (this.cellType === "footer") return;
				let { ENABLE_SELECTOR: e } = this.ctx.config;
				if (!e) return;
				let { xArr: t, yArr: n, xArrCopy: r, yArrCopy: i } = this.ctx.selector;
				this.drawBorder({
					xArr: r,
					yArr: i,
					borderColor: this.ctx.config.SELECT_BORDER_COLOR || "rgb(82,146,247)",
					fillColor: "transparent",
					borderWidth: 1,
					lineDash: [4, 4]
				}), this.drawBorder({
					xArr: this.ctx.autofill.xArr,
					yArr: this.ctx.autofill.yArr,
					borderColor: this.ctx.config.SELECT_BORDER_COLOR || "rgb(82,146,247)",
					fillColor: "transparent",
					borderWidth: 1,
					lineDash: [4, 4]
				}), this.drawBorder({
					xArr: t,
					yArr: n,
					borderColor: this.ctx.config.SELECT_BORDER_COLOR || "rgb(82,146,247)",
					fillColor: "transparent",
					borderWidth: 1
				});
				let [a, o] = t, [s, c] = n;
				(a !== o || s !== c) && this.colIndex >= a && this.colIndex <= o && this.rowIndex >= s && this.rowIndex <= c && this.ctx.paint.drawRect(this.drawX, this.drawY, this.width, this.height, {
					borderColor: "transparent",
					fillColor: this.ctx.config.SELECT_AREA_COLOR || "rgba(82,146,247,0.1)"
				}), this.operation && this.rowIndex >= s && this.rowIndex <= c && this.ctx.paint.drawRect(this.drawX, this.drawY, this.visibleWidth, this.visibleHeight, {
					borderColor: "transparent",
					fillColor: this.ctx.config.SELECT_ROW_COL_BG_COLOR || "transparent"
				});
			}
			drawErrorTip() {
				if (this.cellType === "footer" || !this.message || this.rowspan === 0 || this.colspan === 0) return;
				let { ERROR_TIP_ICON_SIZE: e, ERROR_TIP_COLOR: t } = this.ctx.config, { width: n } = this, r = this.drawX, i = this.drawY, a = [
					r + n - e - .5,
					i,
					r + n - .5,
					i,
					r + n - .5,
					i + e
				];
				this.ctx.paint.drawLine(a, {
					borderColor: t,
					fillColor: t,
					borderWidth: 1,
					lineCap: "round",
					lineJoin: "round"
				});
			}
			drawBorder(e) {
				let { drawX: t, drawY: n, rowIndex: r, colIndex: i, height: a, width: o } = this, s = t, c = n, { xArr: l, yArr: u, lineDash: d = [], borderWidth: f = 1, borderColor: p, fillColor: m } = e, h = l[0], g = l[1], _ = u[0], v = u[1];
				if (i >= h && i <= g && r === _) {
					let e = +(i === g), t = +(i === h);
					this.ctx.paint.drawLine([
						s + t,
						c + 1,
						s + o - e,
						c + 1
					], {
						borderColor: p,
						fillColor: m,
						borderWidth: f,
						lineCap: "round",
						lineJoin: "round",
						lineDash: d
					});
				}
				if (i === g && r >= _ && r <= v) {
					let e = +(r === _), t = +(r === v);
					this.ctx.paint.drawLine([
						s + o - 1,
						c + e,
						s + o - 1,
						c + a - t
					], {
						borderColor: p,
						fillColor: m,
						borderWidth: f,
						lineCap: "round",
						lineJoin: "round",
						lineDash: d
					});
				}
				if (i >= h && i <= g && r === v) {
					let e = +(i === g), t = +(i === h);
					this.ctx.paint.drawLine([
						s + t,
						c + a - 1,
						s + o - e,
						c + a - 1
					], {
						borderColor: p,
						fillColor: m,
						borderWidth: f,
						lineCap: "round",
						lineJoin: "round",
						lineDash: d
					});
				}
				if (i === h && r >= _ && r <= v) {
					let e = +(r === v), t = +(r === _);
					this.ctx.paint.drawLine([
						s + 1,
						c + t,
						s + 1,
						c + a - e
					], {
						borderColor: p,
						fillColor: m,
						borderWidth: f,
						lineCap: "round",
						lineJoin: "round",
						lineDash: d
					});
				}
			}
		}
		class oe {
			constructor(e, t) {
				n(this, "ctx"), n(this, "data"), n(this, "columns"), n(this, "footerData", []), n(this, "rowKeyMap", /* @__PURE__ */ new Map()), n(this, "colIndexKeyMap", /* @__PURE__ */ new Map()), n(this, "headerMap", /* @__PURE__ */ new Map()), n(this, "rowIndexRowKeyMap", /* @__PURE__ */ new Map()), n(this, "rowKeyRowIndexMap", /* @__PURE__ */ new Map()), n(this, "checkboxKeyMap", /* @__PURE__ */ new Map()), n(this, "selectionMap", /* @__PURE__ */ new Map()), n(this, "expandMap", /* @__PURE__ */ new Map()), n(this, "originalDataMap", /* @__PURE__ */ new Map()), n(this, "changedDataMap", /* @__PURE__ */ new Map()), n(this, "validationErrorMap", /* @__PURE__ */ new Map()), n(this, "itemRowKeyMap", /* @__PURE__ */ new WeakMap()), n(this, "bufferData", []), n(this, "customHeader", {
					fixedData: {},
					sortData: {},
					hideData: {},
					resizableData: {}
				}), n(this, "overlayerAutoHeightMap", /* @__PURE__ */ new Map()), n(this, "maxRowHeightCellMap", /* @__PURE__ */ new Map()), n(this, "bufferCheckState", {
					buffer: !1,
					check: !1,
					indeterminate: !1,
					selectable: !0
				}), n(this, "sumHeight", 0), n(this, "filterMethod"), n(this, "positions", []), n(this, "sortState", /* @__PURE__ */ new Map()), this.ctx = e;
				let { data: r = [], columns: i = [], footerData: a = [] } = t;
				this.data = r, this.footerData = a, this.columns = i, this.init();
			}
			init(e = !0) {
				this.ctx.paint.clearTextCache(), this.clearBufferData(), this.rowKeyMap.clear(), this.checkboxKeyMap.clear(), this.colIndexKeyMap.clear(), this.rowIndexRowKeyMap.clear(), this.rowKeyRowIndexMap.clear(), this.maxRowHeightCellMap.clear();
				let t = l(this.getColumns());
				if (this.ctx.hasSelection = t.some((e) => e.type === "selection"), this.ctx.hasTree = t.some((e) => e.type?.includes("tree")), e) {
					this.originalDataMap.clear(), this.changedDataMap.clear(), this.validationErrorMap.clear();
					let { ROW_KEY: e } = this.ctx.config;
					e ? (this.ctx.hasSelection || this.selectionMap.clear(), this.ctx.hasTree || this.expandMap.clear()) : (this.selectionMap.clear(), this.expandMap.clear());
				}
				this.itemRowKeyMap = /* @__PURE__ */ new WeakMap(), this.initData(this.data), this.getData(), this.bufferCheckState.buffer = !1;
			}
			clearBufferData() {
				this.bufferData = [];
			}
			resolveRowKey(e, t = "") {
				let n;
				return typeof t == "function" ? n = t(e) : t && (n = e[t]), n == null ? i() : String(n);
			}
			initData(e, t = 0, n = []) {
				let r = e.length, { ROW_KEY: i = "", DEFAULT_EXPAND_ALL: a, CELL_HEIGHT: o, SELECTABLE_METHOD: s, CHECKBOX_KEY: c, TREE_CHILDREN_KEY: l } = this.ctx.config;
				e.forEach((e, u) => {
					l !== "children" && (e.children = e[l]);
					let d = this.resolveRowKey(e, i);
					this.itemRowKeyMap.set(e, d);
					let f = e._height || o, p = e._readonly, m = !0;
					if (typeof s == "function" && (m = s), c) {
						let t = e[c];
						if (this.checkboxKeyMap.has(t)) {
							let e = this.checkboxKeyMap.get(t) || [];
							e.push(d), this.checkboxKeyMap.set(t, e);
						} else this.checkboxKeyMap.set(t, [d]);
					}
					this.selectionMap.set(d, {
						key: c ? e[c] : d,
						row: e,
						check: this.selectionMap.get(d)?.check || !1
					});
					let h = a || this.expandMap.get(d) || e._expand || !1;
					this.expandMap.set(d, h), this.rowKeyMap.set(d, {
						readonly: p,
						index: u,
						rowIndex: u,
						level: t,
						height: f,
						calculatedHeight: -1,
						check: !1,
						selectable: m,
						expand: h,
						expandLazy: !1,
						hasChildren: e._hasChildren || (Array.isArray(e.children) ? e.children.length > 0 : !1),
						expandLoading: !1,
						item: e,
						parentRowKeys: n,
						parentRowKey: n[n.length - 1] || "",
						isLastChild: u === r - 1
					}), Array.isArray(e.children) && e.children.length && this.initData(e.children, t + 1, [...n, d]);
				});
			}
			setRowHeight(e, t) {
				let n = this.rowIndexRowKeyMap.get(e);
				if (n === void 0) return;
				let r = this.rowKeyMap.get(n);
				r.height = t, r.item._height = t, this.clearBufferData();
			}
			setBatchRowHeight(e) {
				e.forEach(({ rowIndex: e, height: t }) => {
					let n = this.rowIndexRowKeyMap.get(e);
					if (n) {
						let e = this.rowKeyMap.get(n);
						e.height = t, e.item._height = t;
					}
				}), this.clearBufferData();
			}
			setBatchCalculatedRowHeight(e) {
				return !e.every(({ height: e, rowIndex: t }) => this.getPositionForRowIndex(t).calculatedHeight === e) && (e.forEach(({ rowIndex: e, height: t }) => {
					let n = this.rowIndexRowKeyMap.get(e);
					if (n) {
						let e = this.rowKeyMap.get(n), { height: r = -1 } = this.getMaxRowHeightItem(n) || {};
						e.calculatedHeight = Math.max(t, r);
					}
				}), this.clearBufferData(), this.getData(), !0);
			}
			getAllRowsData() {
				let e = [], t = (n) => {
					n.forEach((n) => {
						e.push(n), Array.isArray(n.children) && t(n.children);
					});
				};
				return t(this.data), e;
			}
			generateColumns(e) {
				let t = (e) => e.map((e) => {
					let n = e.children && Array.isArray(e.children) ? t(e.children) : void 0, r = {
						hide: this.customHeader?.hideData?.[e.key],
						fixed: this.customHeader?.fixedData?.[e.key],
						sort: this.customHeader?.sortData?.[e.key],
						width: this.customHeader?.resizableData?.[e.key]
					}, i = {};
					for (let [e, t] of Object.entries(r)) t !== void 0 && (i[e] = t);
					let a = n && n.every((e) => e.hide);
					return {
						...e,
						children: n,
						hide: a || (typeof e.hide == "function" ? e.hide(e) : e.hide),
						...i
					};
				});
				return t(e);
			}
			getColumns() {
				return this.generateColumns(this.columns);
			}
			setColumns(e) {
				this.columns = e, this.clearBufferData();
			}
			setData(e) {
				this.data = e, this.init();
			}
			getOriginalData() {
				return this.data;
			}
			getData() {
				if (this.bufferData.length > 0) return {
					data: this.bufferData,
					sumHeight: this.sumHeight,
					positions: this.positions
				};
				let e = [], t = 0;
				this.sumHeight = 0, this.positions = [];
				let n = (r) => {
					r?.forEach((r) => {
						e.push(r);
						let i = this.itemRowKeyMap.get(r), { expand: a, hasChildren: o, height: s, calculatedHeight: c } = this.rowKeyMap.get(i), l = this.sumHeight, u = Math.max(c, s);
						this.sumHeight += u, this.rowIndexRowKeyMap.set(t, i), this.rowKeyRowIndexMap.set(i, t), this.positions.push({
							top: l,
							height: u,
							bottom: this.sumHeight,
							calculatedHeight: c
						}), t += 1, a && o && n(r.children);
					});
				};
				this.rowIndexRowKeyMap.clear(), this.rowKeyRowIndexMap.clear();
				let r = this.data;
				if (typeof this.filterMethod == "function" && (r = this.filterMethod(r)), this.sortState.size) {
					let e = Array.from(this.sortState.entries()).sort((e, t) => e[1].timestamp - t[1].timestamp);
					r = this.sortDataRecursive(r, e);
				}
				return n(r), this.bufferData = e, {
					data: e,
					sumHeight: this.sumHeight,
					positions: this.positions
				};
			}
			setFooterData(e) {
				this.footerData = e;
			}
			getFooterData() {
				return this.footerData;
			}
			setFilterMethod(e) {
				this.filterMethod = e;
			}
			clearFilterMethod() {
				this.filterMethod = void 0;
			}
			getSortState(e) {
				return this.sortState.get(e) || {
					direction: "none",
					timestamp: 0
				};
			}
			setSortState(e, t) {
				let n = Date.now();
				this.ctx.config.SORT_STRICTLY && this.sortState.clear(), t === "none" ? this.sortState.delete(e) : this.sortState.set(e, {
					direction: t,
					timestamp: n
				}), this.ctx.emit("sortChange", this.sortState), this.clearBufferData(), this.ctx.emit("draw");
			}
			clearSort() {
				this.sortState.clear(), this.ctx.emit("sortChange", this.sortState), this.clearBufferData(), this.ctx.emit("draw");
			}
			sortDataRecursive(e, t) {
				let n = [...e];
				for (let [e, { direction: r }] of t) {
					if (r === "none") continue;
					let t = this.getColumnByKey(e);
					!t || !t.column.sortBy || (n = this.applySingleColumnSort(n, e, r, t.column.sortBy));
				}
				return n.map((e) => (e.children && Array.isArray(e.children) && (e.children = this.sortDataRecursive(e.children, t)), e));
			}
			applySingleColumnSort(e, t, n, r) {
				return e.sort((e, i) => {
					let a = e[t], o = i[t], s = 0;
					if (typeof r == "function") s = r(e, i);
					else if (r === "number") s = (Number(a) || 0) - (Number(o) || 0);
					else if (r === "string") {
						let e = String(a || ""), t = String(o || "");
						s = e.localeCompare(t);
					} else r === "date" && (s = S(a, o));
					return n === "asc" ? s : -s;
				});
			}
			expandItem(e, t = !1) {
				let n = this.rowKeyMap.get(e);
				n.expand = t, this.expandMap.set(e, t), this.clearBufferData(), this.ctx.emit("draw");
			}
			setExpandRowKeys(e, t = !0) {
				this.expandMap.clear(), e.forEach((e) => {
					let n = this.rowKeyMap.get(e);
					this.expandMap.set(e, t), n.expand = t;
				}), this.clearBufferData(), this.ctx.emit("draw");
			}
			getExpandRowKeys() {
				let e = [];
				return this.rowKeyMap.forEach((t, n) => {
					t.expand && e.push(n);
				}), e;
			}
			expandAll(e) {
				this.expandMap.clear(), this.rowKeyMap.forEach((t, n) => {
					t.expand = e, this.expandMap.set(n, e);
				}), this.clearBufferData(), this.ctx.emit("draw");
			}
			expandLoading(e, t = !1) {
				let n = this.rowKeyMap.get(e);
				n.expandLoading = t, this.clearBufferData(), this.ctx.emit("draw");
			}
			setExpandChildren(e, t) {
				let n = this.rowKeyMap.get(e);
				n.expand = !0, this.expandMap.set(e, !0), n.expandLazy = !0, n.item.children = t, this.initData(n.item.children, n.level + 1), this.clearBufferData();
			}
			getIsExpandLoading(e) {
				return this.rowKeyMap.get(e).expandLoading;
			}
			getIsExpandLazy(e) {
				return this.rowKeyMap.get(e).expandLazy;
			}
			getIsExpand(e) {
				return this.rowKeyMap.get(e).expand;
			}
			getRowForRowKey(e) {
				return this.rowKeyMap.get(e);
			}
			getRowForRowIndex(e) {
				let t = this.getRowKeyForRowIndex(e);
				return this.rowKeyMap.get(t);
			}
			getRowKeyForRowIndex(e) {
				return this.rowIndexRowKeyMap.get(e) || "";
			}
			getRowKeyByItem(e) {
				return this.itemRowKeyMap.get(e);
			}
			getRowIndexForRowKey(e) {
				return this.rowKeyRowIndexMap.get(e);
			}
			getItemValueForRowIndexAndColIndex(e, t) {
				if (!(this.rowIndexRowKeyMap.has(e) && this.colIndexKeyMap.get(t))) return null;
				let n = this.rowIndexRowKeyMap.get(e), r = this.colIndexKeyMap.get(t);
				return n === void 0 || r === void 0 ? null : {
					rowKey: n,
					key: r,
					value: this.getItemValue(n, r)
				};
			}
			getItemValue(e, t) {
				let n = this.rowKeyMap.get(e);
				return n && n.item ? n.item[t] === void 0 ? null : n.item[t] : null;
			}
			async batchSetItemValue(e, t = !1, n = !0, r = "none") {
				let i = [], a = n, o = /* @__PURE__ */ new Map(), s = [], c = [];
				for (let t of e) {
					let { rowKey: e, key: n } = t, r = t.value, i = this.getRowDataItemForRowKey(e), a = this.getItemValue(e, n), o = this.getVirtualBodyCellByKey(e, n), l = {
						...t,
						oldValue: a,
						row: i
					};
					if (o?.type === "number") {
						if ([
							"",
							void 0,
							null
						].includes(r)) r = null;
						else if (/^-?\d+(\.\d+)?$/.test(String(r))) {
							let e = C(r);
							if (typeof o.precision == "number" && o.precision >= 0 && e > o.precision) {
								let e = 10 ** o.precision;
								r = Math.round(Number(r) * e) / e;
								let t = this.ctx.locale.getText("numberTruncated", { precision: o.precision });
								s.push({
									...l,
									column: o?.column,
									code: "ERR_NUMBER_PRECISION",
									message: t
								});
							} else if (typeof o.min == "number" && Number(r) < o.min) {
								let e = this.ctx.locale.getText("numberMin", { min: o.min });
								r = o.min, s.push({
									...l,
									column: o?.column,
									code: "ERR_NUMBER_MIN",
									message: e
								});
							} else if (typeof o.max == "number" && Number(r) > o.max) {
								let e = this.ctx.locale.getText("numberMax", { max: o.max });
								r = o.max, s.push({
									...l,
									column: o?.column,
									code: "ERR_NUMBER_MAX",
									message: e
								});
							} else r = Number(r);
						} else r = a, s.push({
							...l,
							column: o?.column,
							code: "ERR_INVALID_NUMBER",
							message: this.ctx.locale.getText("invalidNumber")
						});
					} else if (o?.editorType === "text" && typeof o.maxlength == "number" && String(r).length > o.maxlength) {
						r = String(r).slice(0, o.maxlength);
						let e = this.ctx.locale.getText("stringMaxlength", { maxlength: o.maxlength });
						s.push({
							...l,
							column: o?.column,
							code: "ERR_STRING_MAXLENGTH",
							message: e
						});
					}
					typeof o?.column?.canValueChange == "function" && (await o.column.canValueChange({
						...l,
						value: r
					}) || (r = a)), r !== a && c.push({
						...t,
						value: r,
						oldValue: a,
						row: i
					});
				}
				if (s.length) {
					let e = {
						code: "ERR_BATCH_SET_ITEM_VALUE",
						message: this.ctx.locale.getText("batchSetItemValueError"),
						data: s
					};
					this.ctx.emit("error", e);
				}
				if (!c.length) return;
				let { BEFORE_VALUE_CHANGE_METHOD: l } = this.ctx.config;
				r === "none" && typeof l == "function" && (c = await l(c), a = !1);
				let u = [];
				c.forEach((e) => {
					let { value: t, rowKey: n, key: r, row: s } = e, c = this.getItemValue(n, r);
					o.set(n, s), this.setItemValue(n, r, t, !1, !1, !1, a), u.push(this.getValidator(e.rowKey, e.key)), i.push({
						rowKey: n,
						key: r,
						oldValue: c,
						newValue: t
					});
				});
				let d = Array.from(o.values());
				await Promise.all(u), this.validationErrorMap.size === 0 && this.changedDataMap.size > 0 && this.ctx.emit("validateChangedData", this.getChangedData());
				let f = c.map((e) => {
					let t = !!this.getValidationError(e.rowKey, e.key).length, { rowKey: n, key: r } = e, i = this.getVirtualBodyCellByKey(n, r);
					return typeof i?.column?.valueChange == "function" && i.column.valueChange({
						...e,
						errorTip: t
					}), {
						...e,
						errorTip: t
					};
				});
				this.ctx.emit("change", f, d), t && this.ctx.history.pushState({
					changeList: i,
					scrollX: this.ctx.scrollX,
					scrollY: this.ctx.scrollY,
					type: "multiple"
				}), this.ctx.emit("draw");
			}
			async setItemValue(e, t, n, r = !1, i = !1, a = !1, o = !0) {
				if (!this.rowKeyMap.has(e)) return {};
				let { item: s } = this.rowKeyMap.get(e), c = s[t], l = n;
				if (o && this.ctx.database.getReadonly(e, t)) return {
					oldValue: c,
					newValue: c
				};
				s[t] !== null && typeof s[t] == "object" && (c = JSON.parse(JSON.stringify(s[t])));
				let u = `${e}​_${t}`;
				this.originalDataMap.has(u) || this.originalDataMap.set(u, c);
				let d = this.originalDataMap.get(u), f = this.getRowDataItemForRowKey(e), p = {
					rowKey: e,
					key: t,
					value: l,
					oldValue: c,
					row: f
				};
				if (a) {
					if (l === c) return {
						oldValue: c,
						newValue: c
					};
					this.batchSetItemValue([p], r, !1), this.ctx.emit("editChange", {
						...p,
						originalValue: d
					});
				} else this.changedDataMap.set(u, l), s[t] = l;
				return this.ctx.hasEvent("iterationChange") && this.ctx.emit("iterationChange", {
					...p,
					originalValue: d
				}), i && this.ctx.emit("draw"), {
					oldValue: c,
					newValue: l
				};
			}
			getRowDataItemForRowKey(e) {
				if (!this.rowKeyMap.has(e)) return {};
				let { item: t } = this.rowKeyMap.get(e);
				return t;
			}
			setRowSelectionByCheckboxKey(e, t) {
				let { CHECKBOX_KEY: n } = this.ctx.config;
				if (n) {
					if (!this.rowKeyMap.has(e)) return !1;
					let { item: r } = this.rowKeyMap.get(e), i = r[n];
					this.checkboxKeyMap.has(i) && (this.checkboxKeyMap.get(i) || []).forEach((e) => {
						let n = this.selectionMap.get(e);
						n && (n.check = t);
					});
				}
			}
			toggleRowSelection(e, t) {
				let n = this.rowKeyMap.get(e), r = this.selectionMap.get(e);
				if (!r) return;
				t === "selection-tree" || t === "tree-selection" ? this.toggleTreeSelection(e) : (r.check = !r.check, this.setRowSelectionByCheckboxKey(e, r.check)), this.ctx.emit("toggleRowSelection", n);
				let i = this.getSelectionRows();
				this.ctx.emit("selectionChange", i), this.bufferCheckState.buffer = !1, this.ctx.emit("draw");
			}
			toggleTreeSelection(e) {
				let t = this.getTreeSelectionState(e), n = this.ctx.config.TREE_SELECT_MODE;
				if (n === "auto") t.checked && !t.indeterminate ? (this.clearTreeSelectionRecursive(e), this.setRowSelection(e, !1, !1)) : (this.selectTreeSelectionRecursive(e), this.setRowSelection(e, !0, !1));
				else if (n === "cautious") t.checked && !t.indeterminate ? (this.clearTreeSelectionRecursive(e), this.setRowSelection(e, !1, !1)) : (this.selectTreeSelectionRecursive(e), this.setRowSelection(e, !0, !1));
				else if (n === "strictly") {
					let t = this.selectionMap.get(e);
					t && (t.check = !t.check, this.setRowSelectionByCheckboxKey(e, t.check));
				}
				this.ctx.emit("selectionChange", this.getSelectionRows()), this.ctx.emit("draw");
			}
			selectTreeSelectionRecursive(e) {
				this.getTreeChildren(e).forEach((e) => {
					this.setRowSelectionByParent(e, !0), this.selectTreeSelectionRecursive(e);
				});
			}
			clearTreeSelectionRecursive(e) {
				this.getTreeChildren(e).forEach((e) => {
					this.setRowSelectionByParent(e, !1), this.clearTreeSelectionRecursive(e);
				});
			}
			updateParentTreeSelection(e) {
				let t = this.getTreeParent(e);
				if (!t) return;
				let n = this.getTreeChildren(t).map((e) => this.selectionMap.get(e)), r = n.filter((e) => e?.check).length, i = n.length, a = !1;
				i > 0 && (r === 0 ? a = !1 : r === i || this.ctx.config.TREE_SELECT_MODE === "auto" ? a = !0 : this.ctx.config.TREE_SELECT_MODE === "cautious" && (a = !1));
				let o = this.selectionMap.get(t);
				o && o.check !== a && (o.check = a, this.setRowSelectionByCheckboxKey(t, a), this.updateParentTreeSelection(t));
			}
			setRowSelection(e, t, n = !0) {
				let r = this.selectionMap.get(e);
				r && (r.check = t, this.setRowSelectionByCheckboxKey(e, r.check), this.ctx.emit("setRowSelection", t, r.row), (this.ctx.config.TREE_SELECT_MODE === "auto" || this.ctx.config.TREE_SELECT_MODE === "cautious") && this.updateParentTreeSelection(e), n && (this.bufferCheckState.buffer = !1, this.ctx.emit("draw")));
			}
			setRowSelectionByParent(e, t) {
				let n = this.selectionMap.get(e);
				n && (n.check = t, this.setRowSelectionByCheckboxKey(e, n.check));
			}
			getSelectionRows() {
				let e = [];
				return this.selectionMap.forEach((t) => {
					t.check && e.push(t.row);
				}), e;
			}
			getRowSelection(e) {
				let t = this.selectionMap.get(e);
				return t ? t.check : !1;
			}
			getTreeSelectionState(e) {
				if (!this.getRowForRowKey(e)) return {
					checked: !1,
					indeterminate: !1
				};
				let t = this.selectionMap.get(e)?.check || !1;
				if (this.getTreeChildren(e).length === 0) return {
					checked: t,
					indeterminate: !1
				};
				let n = !1, r = t;
				if (this.ctx.config.TREE_SELECT_MODE === "auto") {
					let i = (e) => {
						let t = this.getTreeChildren(e), n = [];
						for (let e of t) n.push(e), n.push(...i(e));
						return n;
					}, a = i(e).map((e) => this.selectionMap.get(e)), o = a.filter((e) => e?.check).length, s = a.length, c = o > 0;
					n = c && o !== s, r = t || c, t && s > 0 && o === 0 && (r = !1, n = !1);
				} else if (this.ctx.config.TREE_SELECT_MODE === "cautious") {
					let i = (e) => {
						let t = this.getTreeChildren(e), n = [];
						for (let e of t) n.push(e), n.push(...i(e));
						return n;
					}, a = i(e).map((e) => this.selectionMap.get(e)), o = a.filter((e) => e?.check).length, s = a.length, c = o > 0, l = o === s;
					n = c && !l, r = t || l, t && s > 0 && o === 0 && (r = !1, n = !1);
				} else this.ctx.config.TREE_SELECT_MODE === "strictly" && (n = !1, r = t);
				return {
					checked: r,
					indeterminate: n
				};
			}
			getTreeChildren(e) {
				let t = this.getRowForRowKey(e);
				if (!t || !t.item || !t.item.children) return [];
				let n = [], r = (e) => {
					for (let t of e) {
						let e = this.getRowKeyByItem(t);
						e && n.push(e), t.children && t.children.length > 0 && r(t.children);
					}
				};
				return r(t.item.children), n;
			}
			getTreeParent(e) {
				let t = (e, n) => {
					for (let r of e) {
						let e = this.getRowKeyByItem(r);
						if (r.children) for (let i of r.children) {
							if (this.getRowKeyByItem(i) === n) return e;
							let a = t(r.children, n);
							if (a) return a;
						}
					}
					return null;
				};
				return t(this.data, e);
			}
			getRowSelectable(e) {
				let { selectable: t, item: n, rowIndex: r } = this.rowKeyMap.get(e);
				return typeof t == "function" ? t({
					row: n,
					rowIndex: r
				}) : t;
			}
			toggleAllSelection() {
				this.ctx.config.TREE_SELECT_MODE === "auto" || this.ctx.config.TREE_SELECT_MODE === "cautious" ? this.rowKeyMap.forEach((e, t) => {
					let n = e.selectable;
					if (typeof n == "function" && (n = n({
						row: e.item,
						rowIndex: e.rowIndex
					})), n) {
						let e = this.selectionMap.get(t);
						e && (e.check = !0, this.setRowSelectionByCheckboxKey(t, !0));
					}
				}) : this.rowKeyMap.forEach((e, t) => {
					let n = e.selectable;
					typeof n == "function" && (n = n({
						row: e.item,
						rowIndex: e.rowIndex
					})), n && this.setRowSelection(t, !0, !1);
				});
				let e = this.getSelectionRows();
				this.ctx.emit("toggleAllSelection", e), this.ctx.emit("selectionChange", e), this.bufferCheckState.buffer = !1, this.ctx.emit("draw");
			}
			clearSelection(e = !1) {
				let t = this.ctx.config.TREE_SELECT_MODE === "auto" || this.ctx.config.TREE_SELECT_MODE === "cautious";
				e ? t ? this.rowKeyMap.forEach((e, t) => {
					let n = this.selectionMap.get(t);
					n && (n.check = !1, this.setRowSelectionByCheckboxKey(t, !1));
				}) : this.rowKeyMap.forEach((e, t) => {
					this.setRowSelection(t, !1, !1);
				}) : (this.selectionMap.clear(), this.rowKeyMap.forEach((e, t) => {
					this.selectionMap.set(t, {
						check: !1,
						row: e.item,
						key: t
					});
				}));
				let n = this.getSelectionRows();
				this.ctx.emit("clearSelection"), this.ctx.emit("selectionChange", n), this.bufferCheckState.buffer = !1, this.ctx.emit("draw");
			}
			getCheckedState() {
				let { buffer: e, ...t } = this.bufferCheckState;
				if (e) return t;
				let n = this.rowKeyMap.size, r = 0, i = 0, a = this.selectionMap.size, o = Array.from(this.selectionMap.values()).some((e) => e.check);
				this.rowKeyMap.forEach((e, t) => {
					var n;
					(n = this.selectionMap.get(t)) != null && n.check && (r += 1);
					let a = e.selectable;
					typeof a == "function" && (a = a({
						row: e.item,
						rowIndex: e.rowIndex
					})), a && (i += 1);
				});
				let s = i && i > r && r > 0 || a > n && r === 0 && o, c = i !== 0, l = !!i && i === r;
				return this.bufferCheckState = {
					buffer: !0,
					check: l,
					indeterminate: s,
					selectable: c
				}, {
					check: l,
					indeterminate: s,
					selectable: c
				};
			}
			updateColIndexKeyMap(e = []) {
				this.colIndexKeyMap.clear(), e.forEach((e) => {
					this.colIndexKeyMap.set(e.colIndex, e.key);
				});
			}
			getColumnByColIndex(e) {
				let t = this.colIndexKeyMap.get(e);
				if (t && this.headerMap.has(t)) return this.headerMap.get(t)?.column;
			}
			getColumnByKey(e) {
				let t = this.headerMap.get(e);
				if (t) return t;
			}
			getColIndexForKey(e) {
				if (e && this.headerMap.has(e)) return this.headerMap.get(e)?.colIndex;
			}
			getColHeaderByIndex(e) {
				let t = this.colIndexKeyMap.get(e);
				if (t && this.headerMap.has(t)) return this.headerMap.get(t);
			}
			getChangedData() {
				let e = [];
				return this.changedDataMap.forEach((t, n) => {
					let r = this.originalDataMap.get(n), i = n.split("​_")[0], a = n.split("​_")[1];
					r !== t && e.push({
						rowKey: i,
						colKey: a,
						originalValue: r,
						row: this.ctx.database.getRowDataItemForRowKey(i),
						value: t
					});
				}), e;
			}
			getChangedRows() {
				let e = /* @__PURE__ */ new Set();
				this.changedDataMap.forEach((t, n) => {
					let r = this.originalDataMap.get(n), i = n.split("​_")[0];
					r !== t && e.add(i);
				});
				let t = [];
				return e.forEach((e) => {
					t.push(this.ctx.database.getRowDataItemForRowKey(e));
				}), t;
			}
			isHasChangedData(e, t) {
				let n = `${e}​_${t}`;
				return this.changedDataMap.has(n) ? this.originalDataMap.get(n) !== this.changedDataMap.get(n) : !1;
			}
			getPositionForRowIndex(e) {
				return e < this.positions.length ? this.positions[e] : {
					height: 0,
					top: 0,
					bottom: 0,
					calculatedHeight: 0
				};
			}
			setHeader(e, t) {
				return e ? (this.headerMap.set(e, t), !0) : !1;
			}
			getReadonly(e, t) {
				let { DISABLED: n } = this.ctx.config;
				if (n) return !0;
				let r = this.rowKeyMap.get(e), i = this.headerMap.get(t);
				if (!r || !i) return !0;
				let a = r.readonly, o = i.readonly, { BODY_CELL_READONLY_METHOD: s } = this.ctx.config;
				if (typeof s == "function" && i) {
					let n = s({
						row: r.item,
						rowIndex: r.rowIndex,
						colIndex: i.colIndex,
						column: i.column,
						value: this.getItemValue(e, t)
					});
					if (n !== void 0) return n;
				}
				if (typeof i.column?.readonly == "function") {
					let n = i.column.readonly({
						row: r.item,
						rowIndex: r.rowIndex,
						colIndex: i.colIndex,
						column: i.column,
						value: this.getItemValue(e, t)
					});
					if (n !== void 0) return n;
				}
				return o || a;
			}
			clearValidate() {
				this.validationErrorMap.clear();
			}
			hasValidationError() {
				return this.validationErrorMap.size !== 0;
			}
			getValidator(e, t) {
				let n = this.ctx.database.getReadonly(e, t), { ENABLE_READONLY_VALIDATE: i } = this.ctx.config;
				return !i && n ? new Promise((e) => {
					e([]);
				}) : new Promise((n) => {
					let i = this.rowKeyMap.get(e), a = this.headerMap.get(t), { BODY_CELL_RULES_METHOD: o } = this.ctx.config;
					if (i === void 0 || a === void 0) return n([]);
					let s = a.column, c = s.rules;
					if (typeof o == "function") {
						let n = o({
							row: i.item,
							rowIndex: i.rowIndex,
							colIndex: a.colIndex,
							column: s,
							value: this.getItemValue(e, t)
						});
						n && (c = n);
					}
					if (c) {
						let o = {
							row: i.item,
							rowIndex: i.rowIndex,
							colIndex: a.colIndex,
							column: s,
							key: t,
							rowKey: e,
							value: this.getItemValue(e, t),
							field: t,
							fieldValue: this.getItemValue(e, t)
						}, l = new r(c).validate(o);
						l.length ? this.setValidationError(e, t, l) : this.clearValidationError(e, t), n(l);
					} else this.clearValidationError(e, t), n([]);
				});
			}
			getHeightByRowIndexRowSpan(e, t) {
				let n = 0;
				for (let r = 0; r < t; r++) {
					let t = this.positions[e + r];
					t && (n += t.height);
				}
				return n;
			}
			getSpanInfo(e) {
				let { rowIndex: t, key: n, rowKey: r, row: i, value: a, colIndex: o, relationRowKeys: s, relationColKeys: c, rowspan: l, height: u, width: d, colspan: f, mergeRow: p, mergeCol: m } = e;
				if (l === 1 && f === 1) return {
					xArr: [o, o],
					yArr: [t, t],
					rowspan: l,
					colspan: f,
					height: u,
					width: d,
					offsetTop: 0,
					offsetLeft: 0,
					dataList: [{
						rowKey: r,
						key: n,
						row: i,
						value: a
					}]
				};
				let h = t, g = t, _ = o, v = o, y = [], b = 0, x = 0, S = 0, C = 0;
				if (l !== 1 && p) {
					C = d;
					let e = s.reduce((e, t) => `${e}${this.getItemValue(r, t) ?? ""}`, "");
					for (let n = t - 1; n >= 0; n--) {
						let t = this.rowIndexRowKeyMap.get(n) || "";
						if (e === s.reduce((e, n) => `${e}${this.getItemValue(t, n) ?? ""}`, "")) h = n;
						else break;
					}
					for (let n = t; n <= this.ctx.maxRowIndex; n++) {
						let t = this.rowIndexRowKeyMap.get(n) || "";
						if (e === s.reduce((e, n) => `${e}${this.getItemValue(t, n) ?? ""}`, "")) g = n;
						else break;
					}
					for (let e = h; e < t; e++) {
						let { height: t } = this.positions[e];
						b += t;
					}
					for (let e = h; e <= g; e++) {
						let { height: t } = this.positions[e];
						S += t;
						let r = this.rowIndexRowKeyMap.get(e) || "", { item: i } = this.rowKeyMap.get(r), a = this.getItemValue(r, n);
						y.push({
							rowKey: r,
							key: n,
							value: a,
							row: i
						});
					}
				}
				if (f !== 1 && m) {
					S = u;
					for (let e = o - 1; e >= 0; e--) {
						let t = this.getColumnByColIndex(e);
						if (!t) break;
						if (this.getItemValue(r, n) === this.getItemValue(r, t.key) && c.includes(t.key)) _ = e;
						else break;
					}
					for (let e = o; e <= this.ctx.maxColIndex; e++) {
						let t = this.getColumnByColIndex(e);
						if (!t) break;
						if (this.getItemValue(r, n) === this.getItemValue(r, t.key) && c.includes(t.key)) v = e;
						else break;
					}
					for (let e = _; e < o; e++) {
						let t = this.getColumnByColIndex(e);
						if (!t) break;
						x += t.width || 100;
					}
					for (let e = _; e <= v; e++) {
						let t = this.getColumnByColIndex(e);
						if (!t) break;
						C += t.width || 100, y.push({
							rowKey: r,
							key: t.key,
							value: this.getItemValue(r, t.key),
							row: i
						});
					}
				}
				return {
					xArr: [_, v],
					yArr: [h, g],
					rowspan: l,
					colspan: f,
					height: S,
					width: C,
					offsetTop: b,
					offsetLeft: x,
					dataList: y
				};
			}
			setValidationErrorByRowKey(e, t, n) {
				let r = `${e}​_${t}`, i = this.getRowForRowKey(e), a = i?.rowIndex, o = this.getColumnByKey(t);
				if (!e || !o || !i) return;
				let s = this.getItemValue(e, t), c = [{
					key: t,
					rowKey: e,
					rowIndex: a,
					colIndex: o.colIndex,
					column: o.column,
					row: i,
					value: s,
					message: n,
					field: t,
					fieldValue: s
				}];
				this.validationErrorMap.set(r, c);
			}
			setValidationError(e, t, n) {
				let r = `${e}​_${t}`;
				this.validationErrorMap.set(r, n);
			}
			clearValidationError(e, t) {
				let n = `${e}​_${t}`;
				this.validationErrorMap.has(n) && this.validationErrorMap.delete(n);
			}
			getValidationError(e, t) {
				let n = `${e}​_${t}`;
				return this.validationErrorMap.get(n) || [];
			}
			getVirtualBodyCell(e, t, n = !0) {
				let r = this.getColumnByColIndex(t), i = this.getRowForRowIndex(e);
				return !r || !i ? void 0 : new ae(this.ctx, e, t, 0, 0, 0, 0, r, i.item, "body", n);
			}
			getVirtualBodyCellByKey(e, t) {
				let n = this.getRowIndexForRowKey(e), r = this.getColIndexForKey(t);
				if (n !== void 0 && r !== void 0) return this.getVirtualBodyCell(n, r);
			}
			hasMergeCell(e, t) {
				let n = !1;
				for (let r = t[0]; r <= t[1]; r++) for (let t = e[0]; t <= e[1]; t++) {
					let e = this.getVirtualBodyCell(r, t);
					if (e && (e.rowspan !== 1 || e.colspan !== 1)) {
						n = !0;
						break;
					}
				}
				return n;
			}
			calculateMaxTreeDepth(e, t = 0) {
				let n = t;
				return e.forEach((e) => {
					if (Array.isArray(e.children) && e.children.length > 0) {
						let r = this.calculateMaxTreeDepth(e.children, t + 1);
						n = Math.max(n, r);
					}
				}), n;
			}
			setOverlayerAutoHeightMap(e) {
				this.overlayerAutoHeightMap = e;
			}
			getOverlayerAutoHeightMap() {
				return this.overlayerAutoHeightMap;
			}
			getOverlayerAutoHeight(e, t) {
				let n = `${e}​_${t}`;
				return this.overlayerAutoHeightMap.get(n) || 0;
			}
			setCustomHeader(e, t = !1) {
				if ([
					"fixedData",
					"sortData",
					"hideData",
					"resizableData"
				].forEach((t) => {
					let n = e[t];
					n !== void 0 && (this.customHeader[t] = n);
				}), !t) {
					let e = this.clearCustomHeaderInvalidValues(this.columns);
					this.ctx.emit("customHeaderChange", e);
				}
			}
			resetCustomHeader() {
				this.customHeader = {}, this.ctx.emit("resetHeader"), this.ctx.emit("customHeaderChange", this.customHeader);
			}
			getCustomHeader() {
				return this.customHeader;
			}
			setCustomHeaderResizableData(e, t) {
				let { resizableData: n = {} } = this.customHeader;
				n[e] = t, this.setCustomHeader({ resizableData: n });
			}
			setCustomHeaderHideData(e, t) {
				let { hideData: n = {} } = this.customHeader;
				e.forEach((e) => {
					n[e] = t;
				}), this.setCustomHeader({ hideData: n }), this.ctx.emit("resetHeader");
			}
			setCustomHeaderFixedData(e, t) {
				let { fixedData: n = {} } = this.customHeader;
				e.forEach((e) => {
					n[e] = t;
				}), this.setCustomHeader({ fixedData: n }), this.ctx.emit("resetHeader");
			}
			clearCustomHeaderInvalidValues(e) {
				let t = (e, n = {}) => {
					e.forEach((e) => {
						e.children && e.children.length > 0 && t(e.children, n);
						let r = (t, r) => {
							var i;
							let a = this.customHeader[t]?.[e.key];
							a !== void 0 && a !== r && (n[t] || (n[t] = {}), n[t][e.key] = a, t === "fixedData" && !a && !r && ((i = n[t]) == null || delete i[e.key]));
						};
						r("fixedData", e.fixed), r("sortData", e.sort), r("hideData", e.hide), r("resizableData", e.width);
					});
				}, n = {};
				return t(e, n), n;
			}
			setMaxRowHeightItem(e, t, n) {
				this.maxRowHeightCellMap.set(e, {
					key: t,
					height: n
				});
			}
			getMaxRowHeightItem(e) {
				return this.maxRowHeightCellMap.get(e);
			}
			clearChangeData() {
				this.changedDataMap.clear();
			}
		}
		class z {
			constructor(e) {
				n(this, "ctx"), n(this, "history", []), n(this, "historyIndex", -1), this.ctx = e, this.init();
			}
			init() {
				this.ctx.on("keydown", (e) => {
					if (!this.ctx.editing) {
						if (e.ctrlKey && !e.shiftKey && e.code === "KeyZ" || e.metaKey && !e.shiftKey && e.code === "KeyZ") {
							e.preventDefault(), this.ctx.clearSelector(), this.ctx.clearAutofill(), this.backState();
							return;
						}
						if (e.ctrlKey && e.code === "KeyY" || e.ctrlKey && e.shiftKey && e.code === "KeyZ" || e.metaKey && e.shiftKey && e.code === "KeyZ") {
							e.preventDefault(), this.ctx.clearSelector(), this.ctx.clearAutofill(), this.forwardState();
							return;
						}
					}
				});
			}
			pushState(e) {
				let { HISTORY_NUM: t = 0, ENABLE_HISTORY: n } = this.ctx.config;
				n && (this.history.push(e), this.history.length > t && this.history.splice(0, 1), this.historyIndex = this.history.length - 1);
			}
			backState() {
				if (this.historyIndex >= 0) {
					let { changeList: e, scrollX: t, scrollY: n } = this.history[this.historyIndex], r = e.map((e) => ({
						rowKey: e.rowKey,
						key: e.key,
						value: e.oldValue,
						row: {}
					}));
					this.ctx.setScroll(t, n), this.ctx.database.batchSetItemValue(r, !1, !1, "back"), --this.historyIndex;
				}
			}
			forwardState() {
				if (this.historyIndex < this.history.length - 1) {
					this.historyIndex += 1;
					let { changeList: e } = this.history[this.historyIndex], t = e.map((e) => ({
						rowKey: e.rowKey,
						key: e.key,
						value: e.newValue,
						row: {}
					}));
					this.ctx.database.batchSetItemValue(t, !1, !1, "forward");
				}
			}
			clear() {
				this.history = [], this.historyIndex = -1;
			}
		}
		class se {
			constructor(e) {
				n(this, "eventTasks", /* @__PURE__ */ new Set()), n(this, "ctx"), this.ctx = e, this.init();
			}
			init() {
				this.bind(window, "resize", this.handleResize.bind(this)), this.bind(window, "mouseup", this.handleMouseUp.bind(this)), this.bind(window, "mousemove", this.handleMousemove.bind(this)), this.bind(window, "blur", this.handleOutsideMousedown.bind(this)), this.bind(window, "mousedown", this.handleOutsideMousedown.bind(this)), this.bind(this.ctx.stageElement, "click", this.handleClick.bind(this)), this.bind(window, "keydown", this.handleKeydown.bind(this)), this.bind(this.ctx.stageElement, "wheel", this.handleWheel.bind(this), { passive: !1 }), this.bind(this.ctx.stageElement, "touchstart", this.handleTouchstart.bind(this), { passive: !1 }), this.bind(this.ctx.stageElement, "touchend", this.handleTouchend.bind(this)), this.bind(this.ctx.stageElement, "touchmove", this.handleTouchmove.bind(this), { passive: !1 }), this.bind(this.ctx.stageElement, "contextmenu", this.handleContextMenu.bind(this)), this.bind(this.ctx.stageElement, "mousedown", this.handleMouseDown.bind(this)), this.bind(this.ctx.stageElement, "dblclick", this.handleDblclick.bind(this)), this.bind(this.ctx.stageElement, "mouseover", this.handleMouseover.bind(this)), this.bind(this.ctx.stageElement, "mouseout", this.handleMouseout.bind(this)), this.bind(document, "selectionchange", this.selectionchange.bind(this));
			}
			selectionchange() {
				this.ctx.domSelectionStr = "";
				let e = window.getSelection();
				e && e.toString() && (this.ctx.domSelectionStr = e.toString());
			}
			clearDomSelection() {
				let e = window.getSelection();
				e && !e.isCollapsed && e.removeAllRanges();
			}
			destroy() {
				Array.from(this.eventTasks).forEach(({ target: e, name: t, fn: n, options: r }) => {
					this.unbind(e, t, n, r);
				}), this.eventTasks.clear();
			}
			handleResize(e) {
				this.ctx.emit("resetHeader", e), this.ctx.emit("resize", e);
			}
			handleMouseDown(e) {
				this.clearDomSelection(), e.button === 0 && (this.ctx.mousedown = !0), this.ctx.emit("mousedown", e);
			}
			handleMousemove(e) {
				let t = e, n = this.ctx.containerElement.getBoundingClientRect(), r = t.clientX - n.left, i = t.clientY - n.top;
				this.ctx.mouseX = r, this.ctx.mouseY = i, this.ctx.emit("mousemove", e);
			}
			handleMouseUp(e) {
				e.button === 0 && (this.ctx.mousedown = !1), this.ctx.emit("mouseup", e);
			}
			handleClick(e) {
				this.ctx.emit("click", e);
			}
			handleKeydown(e) {
				let { ENABLE_KEYBOARD: t } = this.ctx.config;
				t && this.ctx.isTarget(e) && (this.ctx.dragHeaderIng || this.ctx.emit("keydown", e));
			}
			handleWheel(e) {
				this.ctx.emit("wheel", e);
			}
			handleTouchstart(e) {
				this.ctx.emit("touchstart", e);
			}
			handleTouchend(e) {
				this.ctx.emit("touchend", e);
			}
			handleTouchmove(e) {
				this.ctx.emit("touchmove", e);
			}
			handleContextMenu(e) {
				e.preventDefault(), this.ctx.emit("contextMenu", e);
			}
			handleMouseover(e) {
				this.ctx.isMouseoverTargetContainer = !0, this.ctx.emit("mouseover", e);
			}
			handleMouseout(e) {
				this.ctx.isMouseoverTargetContainer = !1, this.ctx.emit("mouseout", e);
			}
			handleDblclick(e) {
				this.ctx.emit("dblclick", e);
			}
			handleOutsideMousedown(e) {
				this.ctx.selector.enable && (e.target instanceof Window || e.target instanceof Node && !this.ctx.containerElement.contains(e.target)) && this.ctx.emit("outsideMousedown", e);
			}
			bind(e, t, n, r) {
				e.addEventListener(t, n, r), this.eventTasks.add({
					target: e,
					name: t,
					fn: n,
					options: r
				});
			}
			unbind(e, t, n, r) {
				e.removeEventListener(t, n, r);
				for (let r of this.eventTasks) if (r.target === e && r.name === t && r.fn === n) {
					this.eventTasks.delete(r);
					break;
				}
			}
		}
		class ce {
			constructor() {
				n(this, "events", /* @__PURE__ */ new Map());
			}
			has(e) {
				return this.events.has(e);
			}
			on(e, t) {
				let n = this.events.get(e) || [];
				n.push(t), this.events.set(e, n);
			}
			once(e, t) {
				let n = (...r) => {
					t(...r), this.off(e, n);
				};
				return this.on(e, n), this;
			}
			off(e, t) {
				let n = this.events.get(e);
				if (n) {
					let r = n.indexOf(t);
					r >= 0 && (n.splice(r, 1), n.length === 0 ? this.events.delete(e) : this.events.set(e, n));
				}
			}
			emit(e, ...t) {
				let n = this.events.get(e);
				n && n.forEach((e) => {
					e(...t);
				});
			}
			destroy() {
				this.events.clear();
			}
		}
		class le {
			constructor(e) {
				n(this, "ctx"), n(this, "textCacheMap", /* @__PURE__ */ new Map());
				let t = e.getContext("2d");
				if (!t) throw Error("canvas context not found");
				this.ctx = t;
			}
			getCtx() {
				return this.ctx;
			}
			clearTextCache() {
				this.textCacheMap.clear();
			}
			scale(e) {
				this.ctx.setTransform(1, 0, 0, 1, 0, 0), this.ctx.scale(e, e);
			}
			save() {
				this.ctx.save();
			}
			restore() {
				this.ctx.restore();
			}
			translate(e, t) {
				this.ctx.translate(e, t);
			}
			setCursor(e = "default") {
				this.ctx.canvas.style.cursor = e;
			}
			clear(e = 0, t = 0, n, r) {
				this.ctx.clearRect(e, t, n || this.ctx.canvas.width, r || this.ctx.canvas.height);
			}
			drawShadow(e, t, n, r, i) {
				let { fillColor: a, side: o, shadowWidth: s, colorStart: c, colorEnd: l } = i;
				if (this.ctx.save(), a && (this.ctx.fillStyle = a, this.ctx.fillRect(e, t, n, r)), !Number.isFinite(s) || s <= 0) {
					this.ctx.restore();
					return;
				}
				let u;
				switch (o) {
					case "left":
						u = this.ctx.createLinearGradient(e - s, t, e, t), u.addColorStop(0, c), u.addColorStop(1, l), this.ctx.fillStyle = u, this.ctx.fillRect(e - s, t, s, r);
						break;
					case "right":
						u = this.ctx.createLinearGradient(e + n, t, e + n + s, t), u.addColorStop(0, c), u.addColorStop(1, l), this.ctx.fillStyle = u, this.ctx.fillRect(e + n, t, s, r);
						break;
					case "top":
						u = this.ctx.createLinearGradient(e, t - s, e, t), u.addColorStop(0, c), u.addColorStop(1, l), this.ctx.fillStyle = u, this.ctx.fillRect(e, t - s, n, s);
						break;
					case "bottom":
						u = this.ctx.createLinearGradient(e, t + r, e, t + r + s), u.addColorStop(0, c), u.addColorStop(1, l), this.ctx.fillStyle = u, this.ctx.fillRect(e, t + r, n, s);
						break;
					default: console.error("Invalid side specified for shadow");
				}
				this.ctx.restore();
			}
			drawLine(e, t) {
				if (e.length < 4 || e.length % 2 != 0) throw Error("A valid array of points is required to draw a line");
				this.ctx.save();
				let { borderColor: n = "black", borderWidth: r = 1 } = t;
				this.ctx.beginPath(), this.ctx.moveTo(e[0] - .5, e[1] - .5);
				for (let t = 2; t < e.length; t += 2) this.ctx.lineTo(e[t] - .5, e[t + 1] - .5);
				this.ctx.strokeStyle = n, this.ctx.lineWidth = r, t.lineDash && (this.ctx.lineDashOffset = t.lineDashOffset ?? 0, this.ctx.setLineDash(t.lineDash)), t.fillColor && (this.ctx.fillStyle = t.fillColor, this.ctx.fill()), t.borderColor && (this.ctx.strokeStyle = t.borderColor), this.ctx.stroke(), this.ctx.closePath(), this.ctx.restore();
			}
			drawImage(e, t, n, r, i) {
				this.ctx.save(), this.ctx.drawImage(e, t, n, r, i), this.ctx.restore();
			}
			drawRect(e, t, n, r, { borderWidth: i = 1, borderColor: a, fillColor: o, radius: s = 0 } = {}) {
				if (this.ctx.save(), o !== void 0 && (this.ctx.fillStyle = o), a !== void 0 && (this.ctx.lineWidth = i, this.ctx.strokeStyle = a), this.ctx.beginPath(), s === 0) o !== void 0 && this.ctx.fillRect(e, t, n, r), this.ctx.rect(e - .5, t - .5, n, r);
				else {
					let [i, a, o, c] = typeof s == "number" ? [
						s,
						s,
						s,
						s
					] : s;
					this.ctx.moveTo(e + i, t), this.ctx.arcTo(e + n, t, e + n, t + a, a), this.ctx.arcTo(e + n, t + r, e + n - o, t + r, o), this.ctx.arcTo(e, t + r, e, t + r - c, c), this.ctx.arcTo(e, t, e + i, t, i);
				}
				o !== void 0 && s !== 0 && this.ctx.fill(), a !== void 0 && this.ctx.stroke(), this.ctx.restore();
			}
			drawText(e = "", t, n, r, i, a = {}) {
				this.ctx.save();
				let { font: o = "12px Arial", align: s = "center", color: c = "#495060", padding: l = 0, verticalAlign: u = "middle", maxLineClamp: d = 1, autoRowHeight: f = !1, offsetLeft: p = 0, offsetRight: m = 0 } = a;
				if (this.ctx.font = o, this.ctx.fillStyle = c, [
					"",
					null,
					void 0
				].includes(e)) return this.ctx.restore(), !1;
				let h = parseInt(o.match(/\d+/)?.[0] || "12") * (a.lineHeight || 1.2), g = this.buildTextLayout(e, t, n, r, i, {
					font: o,
					color: c,
					align: s,
					padding: l,
					verticalAlign: u,
					maxLineClamp: d,
					autoRowHeight: f,
					lineHeight: h,
					offsetLeft: p,
					offsetRight: m
				});
				if (this.ctx.textBaseline = "middle", this.ctx.textAlign = "left", g.lines.forEach((e) => {
					this.ctx.fillText(e.text, e.drawX, e.drawY + g.lineHeight / 2);
				}), a.textCallback && g.lines.length) {
					let e = g.lines.reduce((e, t) => Math.max(e, t.width), 0), n = Math.round(e), i = g.lines[0]?.drawX ?? t + l + p, o = i + n;
					s === "center" ? (i = t + r / 2 - n / 2, o = t + r / 2 + n / 2) : s === "right" && (i = t + r - l - m - n, o = t + r - l - m);
					let c = {
						x: g.lines[0]?.drawX ?? i,
						y: g.contentY,
						width: n,
						height: g.lines.length * h,
						left: i,
						right: o,
						top: g.contentY,
						bottom: g.contentY + g.lines.length * h
					};
					a.textCallback(c);
				}
				return a.layoutCallback && a.layoutCallback(g), this.ctx.restore(), g.ellipsis;
			}
			buildTextLayout(e, t, n, r, i, a) {
				let { font: o, color: s, align: c, padding: l, verticalAlign: u, maxLineClamp: d, autoRowHeight: f, lineHeight: p, offsetLeft: m, offsetRight: h } = a;
				this.ctx.save(), this.ctx.font = o;
				let g = r - l * 2 - m - h, _ = g, v = i - l * 2, y = Array.from(e), b = this.wrapTextToLines(e, g), x = Math.round(v / p), S = Math.min(b.length, Math.max(x, 1));
				d === "auto" && f ? S = b.length : typeof d == "number" && d < S && d !== 1 ? S = d : (d === 1 && (b = [{
					items: y.map((e, t) => ({
						char: e,
						sourceIndex: t
					})),
					text: e,
					caretIndex: 0,
					lineIndex: 0,
					drawX: 0,
					drawY: 0,
					width: 0,
					segments: []
				}], S = 1), d === "auto" && x === 1 && (b = [{
					items: y.map((e, t) => ({
						char: e,
						sourceIndex: t
					})),
					text: e,
					caretIndex: 0,
					lineIndex: 0,
					drawX: 0,
					drawY: 0,
					width: 0,
					segments: []
				}], S = 1));
				let C = !1, w = b.slice(0, S);
				if (b.length > S) {
					C = !0;
					let e = b.slice(S - 1), t = this.buildEllipsisLine(e, r, l);
					t.lineIndex = S - 1, w[S - 1] = t;
				} else if (S > 0) {
					let e = S - 1, t = b.slice(e), n = t.map((e) => e.text).join(""), { ellipsis: i } = this.handleEllipsis(n, r, l, o);
					if (i) {
						C = !0;
						let n = this.buildEllipsisLine(t, r, l);
						n.lineIndex = e, w[e] = n;
					}
				}
				let T = w.length * p, E = n + l;
				u === "middle" ? E = n + (i - T) / 2 : u === "bottom" && (E = n + i - T - l);
				let D = [];
				return w.forEach((e, n) => {
					e.lineIndex = n;
					let i = this.buildLineSegments(e), a = i.reduce((e, t) => e + t.width, 0), o = t + l + m;
					c === "center" ? o = t + (r - a) / 2 : c === "right" && (o = t + r - l - h - a);
					let s = E + n * p;
					e.drawX = o, e.drawY = s, e.width = a, e.segments = i, i.forEach((e) => {
						e.sourceIndex < 0 || D.push({
							char: e.char,
							index: e.sourceIndex,
							line: n,
							x: o + e.x,
							y: s,
							width: e.width,
							height: p
						});
					});
				}), this.ctx.restore(), {
					text: e,
					chars: y,
					glyphs: D,
					lines: w,
					box: {
						x: t,
						y: n,
						width: r,
						height: i
					},
					contentBox: {
						x: t + l + m,
						y: n + l,
						width: _,
						height: v
					},
					contentY: E,
					lineHeight: p,
					font: o,
					color: s,
					align: c,
					ellipsis: C
				};
			}
			wrapTextToLines(e, t) {
				if (!e) return [{
					items: [],
					text: "",
					caretIndex: 0,
					lineIndex: 0,
					drawX: 0,
					drawY: 0,
					width: 0,
					segments: []
				}];
				let n = Array.from(e), r = [], i = [], a = 0, o = 0, s = (e) => {
					let t = i.map((e) => e.char).join("");
					r.push({
						items: i,
						text: t,
						caretIndex: o,
						lineIndex: r.length,
						drawX: 0,
						drawY: 0,
						width: 0,
						segments: []
					}), i = [], a = 0, o = e;
				};
				for (let e = 0; e < n.length; e++) {
					let r = n[e];
					if (r === "\n") {
						s(e + 1);
						continue;
					}
					let o = this.ctx.measureText(r).width;
					if (a + o > t && i.length > 0) {
						s(i[i.length - 1].sourceIndex + 1), i.push({
							char: r,
							sourceIndex: e
						}), a = o;
						continue;
					}
					i.push({
						char: r,
						sourceIndex: e
					}), a += o;
				}
				return (i.length > 0 || r.length === 0) && s(n.length), r;
			}
			buildEllipsisLine(e, t, n) {
				let r = e.flatMap((e) => e.items), i = r.map((e) => e.char).join(""), { _text: a, ellipsis: o } = this.handleEllipsis(i, t, n, this.ctx.font), s = o ? a.slice(0, -3) : a, c = [];
				for (let e = 0; e < s.length; e++) {
					let t = r[e];
					if (!t) break;
					c.push({
						char: t.char,
						sourceIndex: t.sourceIndex
					});
				}
				return o && c.push({
					char: ".",
					sourceIndex: -1,
					ellipsis: !0
				}, {
					char: ".",
					sourceIndex: -1,
					ellipsis: !0
				}, {
					char: ".",
					sourceIndex: -1,
					ellipsis: !0
				}), {
					items: c,
					text: a,
					caretIndex: e[0]?.caretIndex ?? 0,
					lineIndex: 0,
					drawX: 0,
					drawY: 0,
					width: 0,
					segments: []
				};
			}
			buildLineSegments(e) {
				let t = [], n = 0;
				return e.items.forEach((e, r) => {
					let i = this.ctx.measureText(e.char).width;
					t.push({
						char: e.char,
						itemIndex: r,
						sourceIndex: e.sourceIndex,
						x: n,
						width: i
					}), n += i;
				}), t;
			}
			wrapText(e, t, n = "") {
				if (!e) return [""];
				if (n && this.textCacheMap.has(n)) return this.textCacheMap.get(n) || [""];
				let r = [], i = e.split("\n");
				for (let e of i) {
					if (e === "") {
						r.push("");
						continue;
					}
					let n = e.split(""), i = "";
					for (let e of n) {
						let n = i + e;
						this.ctx.measureText(n).width <= t ? i = n : i ? (r.push(i), i = e) : (r.push(e), i = "");
					}
					i && r.push(i);
				}
				let a = r.length > 0 ? r : [""];
				return n && this.textCacheMap.set(n, a), a;
			}
			calculateTextHeight(e = "", t, n = {}) {
				let { font: r = "12px Arial", padding: i = 0, align: a = "center", color: o = "#495060", maxLineClamp: s = 1, cacheTextKey: c = "" } = n;
				this.ctx.save(), this.ctx.font = r, this.ctx.fillStyle = o, this.ctx.textAlign = a;
				let l = parseInt(r.match(/\d+/)?.[0] || "12"), u = l * (n.lineHeight || 1.2), d = t - i * 2, f = this.wrapText(e, d, c), p = 1;
				return p = s === "auto" ? f.length : f.length > s ? s : f.length, this.ctx.restore(), Math.max(Math.floor(p * u + i * 2), Math.floor(l + i * 2));
			}
			handleEllipsis(e, t, n = 0, r = "12px Arial") {
				this.ctx.save();
				let i = !1, a = e;
				if (this.ctx.font = r, e == null || e === "") return this.ctx.restore(), {
					_text: "",
					ellipsis: i
				};
				let o = this.ctx.measureText("...").width;
				if (t <= o + n * 2) return this.ctx.restore(), {
					_text: "",
					ellipsis: !0
				};
				let s = this.ctx.measureText(e).width, c = t - n * 2;
				if (s && s >= c) {
					i = !0;
					let t = 0;
					for (let n = 0; n < e.length; n++) if (t += this.ctx.measureText(e[n]).width, t >= c - o) {
						a = e.slice(0, n) + "...", i = !0;
						break;
					}
				}
				return this.ctx.restore(), {
					_text: a,
					ellipsis: i
				};
			}
		}
		class B {
			constructor(e) {
				n(this, "_config", {}), n(this, "CSS_PREFIX", "e-virt-table"), n(this, "ICONS", []), n(this, "ROW_KEY", ""), n(this, "DISABLED", !1), n(this, "HEADER_FONT", "12px normal Arial"), n(this, "BODY_FONT", "12px normal Arial"), n(this, "BORDER", !0), n(this, "STRIPE", !1), n(this, "STRIPE_COLOR", "#fafafa"), n(this, "BORDER_COLOR", "#e1e6eb"), n(this, "FIXED_COLUMN_SHADOW_COLOR", "rgba(0,0,0,0.1)"), n(this, "FIXED_COLUMN_SHADOW_FADE_COLOR", "rgba(0,0,0,0)"), n(this, "FIXED_COLUMN_SHADOW_WIDTH", 4), n(this, "HEIGHT", 0), n(this, "PLACEHOLDER_COLOR", "#CDD0DC"), n(this, "EMPTY_BODY_HEIGHT", 120), n(this, "EMPTY_CUSTOM_STYLE", {}), n(this, "EMPTY_TEXT", ""), n(this, "LOADING_TEXT", ""), n(this, "MAX_HEIGHT", 1e3), n(this, "BORDER_RADIUS", 8), n(this, "ENABLE_OFFSET_HEIGHT", !1), n(this, "OFFSET_HEIGHT", 0), n(this, "HEADER_HEIGHT", 36), n(this, "ENABLE_HEADER_STICKY", !1), n(this, "HEADER_BG_COLOR", "#F8FAFF"), n(this, "BODY_BG_COLOR", "#FFF"), n(this, "HEADER_TEXT_COLOR", "#1D2129"), n(this, "REQUIRED_COLOR", "#F56C6C"), n(this, "BODY_TEXT_COLOR", "#4E5969"), n(this, "FOOTER_TEXT_COLOR", "#4E5969"), n(this, "LOADING_ICON_SVG", ""), n(this, "LOADING_ICON_COLOR", "#4E5969"), n(this, "EXPAND_ICON_SVG", ""), n(this, "SHRINK_ICON_SVG", ""), n(this, "EXPAND_ICON_COLOR", "#4E5969"), n(this, "SHRINK_ICON_COLOR", "#4E5969"), n(this, "ERROR_TIP_ICON_COLOR", "red"), n(this, "ERROR_TIP_ICON_SIZE", 6), n(this, "COLUMNS_ALIGN", "left"), n(this, "COLUMNS_VERTICAL_ALIGN", "middle"), n(this, "EXPAND_LAZY", !0), n(this, "DEFAULT_EXPAND_ALL", !1), n(this, "CELL_WIDTH", 100), n(this, "CELL_HEIGHT", 36), n(this, "CELL_PADDING", 8), n(this, "CELL_HOVER_ICON_SIZE", 14), n(this, "CELL_HOVER_ICON_BG_COLOR", "#fff"), n(this, "CELL_HOVER_ICON_BORDER_COLOR", "#DDE0EA"), n(this, "SCROLLER_TRACK_SIZE", 14), n(this, "scrollbarMode", "outer"), n(this, "SCROLLBAR_SHOW_DELAY", 300), n(this, "SCROLLER_SIZE", 8), n(this, "SCROLLER_COLOR", "#dee0e3"), n(this, "SCROLLER_TRACK_COLOR", "#fff"), n(this, "SCROLLER_FOCUS_COLOR", "#bbbec4"), n(this, "SELECT_BORDER_COLOR", "rgb(82,146,247)"), n(this, "SELECT_AREA_COLOR", "rgba(82,146,247,0.1)"), n(this, "SELECT_ROW_COL_BG_COLOR", "transparent"), n(this, "AUTOFILL_POINT_BORDER_COLOR", "#fff"), n(this, "EDIT_BG_COLOR", "#fcf6ed"), n(this, "CHECKBOX_KEY", ""), n(this, "CHECKBOX_COLOR", "rgb(82,146,247)"), n(this, "FINDER_CELL_BG_COLOR", "rgb(255,229,144)"), n(this, "ENABLE_FINDER", !0), n(this, "CHECKBOX_SIZE", 20), n(this, "CHECKBOX_DISABLED_SVG", ""), n(this, "CHECKBOX_DISABLED_COLOR", "#F1F2F4"), n(this, "CHECKBOX_CHECK_SVG", ""), n(this, "CHECKBOX_UNCHECK_SVG", ""), n(this, "CHECKBOX_UNCHECK_COLOR", "#DDE0EA"), n(this, "CHECKBOX_INDETERMINATE_SVG", ""), n(this, "CHECKBOX_CHECK_DISABLED_SVG", ""), n(this, "CHECKBOX_CHECK_DISABLED_COLOR", "#DDE0EA"), n(this, "ICON_EDIT_SVG", ""), n(this, "ICON_EDIT_COLOR", "#4E5969"), n(this, "ICON_SELECT_SVG", ""), n(this, "ICON_SELECT_COLOR", "#4E5969"), n(this, "SORT_STRICTLY", !0), n(this, "SORT_ASC_ICON_SVG", ""), n(this, "SORT_DESC_ICON_SVG", ""), n(this, "SORTABLE_ICON_SVG", ""), n(this, "SORT_ICON_COLOR", "rgb(82,146,247)"), n(this, "READONLY_COLOR", "#fff"), n(this, "READONLY_TEXT_COLOR", "#4E5969"), n(this, "ENABLE_READONLY_VALIDATE", !1), n(this, "ERROR_TIP_COLOR", "#ED3F14"), n(this, "FOOTER_BG_COLOR", "#fafafa"), n(this, "FOOTER_FIXED", !0), n(this, "FOOTER_POSITION", "bottom"), n(this, "CELL_FOOTER_HEIGHT", 36), n(this, "ENABLE_SELECTOR", !0), n(this, "TREE_SELECT_MODE", "auto"), n(this, "TREE_CHILDREN_KEY", "children"), n(this, "TREE_INDENT", 20), n(this, "TREE_ICON_SIZE", 20), n(this, "TREE_LINE", !1), n(this, "TREE_LINE_COLOR", "#e1e6eb"), n(this, "ENABLE_EDIT_SINGLE_CLICK", !1), n(this, "ENABLE_EDIT_CLICK_SELECTOR", !0), n(this, "SELECTOR_AREA_MIN_X", 0), n(this, "SELECTOR_AREA_MAX_X_OFFSET", 0), n(this, "SELECTOR_AREA_MAX_X", 0), n(this, "SELECTOR_AREA_MIN_Y", 0), n(this, "SELECTOR_AREA_MAX_Y", 0), n(this, "SELECTOR_AREA_MAX_Y_OFFSET", 0), n(this, "SELECTOR_CELL_VALUE_TYPE", "value"), n(this, "ENABLE_AUTO_THEME", !0), n(this, "ENABLE_SELECTOR_SINGLE", !1), n(this, "ENABLE_SELECTOR_SPAN_COL", !0), n(this, "ENABLE_SELECTOR_SPAN_ROW", !0), n(this, "ENABLE_SELECTOR_ALL_ROWS", !0), n(this, "ENABLE_SELECTOR_ALL_COLS", !0), n(this, "ENABLE_MERGE_CELL_LINK", !1), n(this, "ENABLE_AUTOFILL", !1), n(this, "ENABLE_AUTOFILL_SPAN_COL", !0), n(this, "ENABLE_AUTOFILL_SPAN_ROW", !0), n(this, "ENABLE_CONTEXT_MENU", !1), n(this, "ENABLE_HEADER_CONTEXT_MENU", !1), n(this, "ENABLE_TEXT_SELECTION", !0), n(this, "ENABLE_COPY", !0), n(this, "ENABLE_PASTER", !0), n(this, "ENABLE_RESIZE_ROW", !0), n(this, "ENABLE_RESIZE_COLUMN", !0), n(this, "RESIZE_COLUMN_DIVIDER_COLOR"), n(this, "RESIZE_ROW_LINE_COLOR", "#e1e6eb"), n(this, "RESIZE_COLUMN_LINE_COLOR", "#e1e6eb"), n(this, "ENABLE_RESIZE_COLUMN_TEXT", !0), n(this, "RESIZE_COLUMN_TEXT_COLOR", "#fff"), n(this, "RESIZE_COLUMN_TEXT_BG_COLOR", "rgb(82,146,247)"), n(this, "RESIZE_ROW_MIN_HEIGHT", 36), n(this, "RESIZE_COLUMN_MIN_WIDTH", 40), n(this, "DRAG_TIP_BG_COLOR", "rgba(82,146,247,0.1)"), n(this, "DRAG_TIP_LINE_COLOR", "rgb(82,146,247)"), n(this, "ENABLE_KEYBOARD", !0), n(this, "ENABLE_HISTORY", !1), n(this, "ENABLE_VALIDATOR_IMMEDIATE", !0), n(this, "HISTORY_NUM", 50), n(this, "HIGHLIGHT_HOVER_ROW", !1), n(this, "HIGHLIGHT_HOVER_ROW_COLOR", "rgba(186,203,231,0.1)"), n(this, "HIGHLIGHT_SELECTED_ROW", !1), n(this, "HIGHLIGHT_SELECTED_ROW_COLOR", "rgba(82,146,247,0.1)"), n(this, "TOOLTIP_BG_COLOR", "#303133"), n(this, "TOOLTIP_TEXT_COLOR", "#fff"), n(this, "TOOLTIP_ZINDEX", 3e3), n(this, "TOOLTIP_CUSTOM_STYLE", {}), n(this, "CONTEXT_MENU", [
					{ value: "copy" },
					{ value: "cut" },
					{ value: "paste" },
					{ value: "clearSelected" }
				]), n(this, "CUSTOM_BODY_CONTEXT_MENU", []), n(this, "HEADER_CONTEXT_MENU", [
					{ value: "fixedLeft" },
					{ value: "fixedRight" },
					{ value: "fixedNone" },
					{ value: "hide" },
					{ value: "visible" },
					{ value: "resetHeader" }
				]), n(this, "CUSTOM_HEADER_CONTEXT_MENU", []), n(this, "CELL_LINE_HEIGHT", 1.2), n(this, "AUTO_ROW_HEIGHT", !1), n(this, "ENABLE_DRAG_COLUMN", !1), n(this, "ENABLE_DRAG_ROW", !1), n(this, "ENABLE_DRAG_ROW_CROSS_LEVEL", !1), n(this, "ENABLE_DRAG_ROW_CUSTOM", !1), n(this, "DRAG_ROW_TIP_LINE_COLOR", "rgb(82,146,247)"), n(this, "DRAG_ROW_ICON_SVG", ""), n(this, "DRAG_ROW_ICON_SIZE", 18), n(this, "DRAG_ROW_ICON_COLOR", "#bec4c7"), n(this, "HEADER_CELL_STYLE_METHOD"), n(this, "BODY_CELL_STYLE_METHOD"), n(this, "FOOTER_CELL_STYLE_METHOD"), n(this, "BODY_CELL_READONLY_METHOD"), n(this, "BODY_CELL_FORMATTER_METHOD"), n(this, "BODY_CELL_RULES_METHOD"), n(this, "BODY_CELL_TYPE_METHOD"), n(this, "BODY_CELL_EDITOR_METHOD"), n(this, "BODY_CELL_RENDER_METHOD"), n(this, "BODY_CELL_HOVER_ICON_METHOD"), n(this, "SPAN_METHOD"), n(this, "SELECTABLE_METHOD"), n(this, "EXPAND_LAZY_METHOD"), n(this, "BEFORE_VALUE_CHANGE_METHOD"), n(this, "BEFORE_PASTE_DATA_METHOD"), n(this, "BEFORE_AUTOFILL_DATA_METHOD"), n(this, "BEFORE_SET_SELECTOR_METHOD"), n(this, "BEFORE_SET_AUTOFILL_METHOD"), n(this, "BEFORE_HEADER_CONTEXT_MENU_METHOD"), n(this, "BEFORE_BODY_CONTEXT_MENU_METHOD"), n(this, "BEFORE_COPY_METHOD"), n(this, "BEFORE_DRAG_ROW_METHOD"), this._config = e, this.updateCssVar();
			}
			init(e) {
				this._config = e, this.updateCssVar();
			}
			updateCssVar() {
				let e = {};
				Object.keys(this).forEach((t) => {
					if (t.endsWith("_COLOR") || t.endsWith("_FONT")) {
						let n = b(`--evt-${t.toLocaleLowerCase().replace(/_/g, "-")}`);
						n && (e[t] = n);
					}
				}), Object.assign(this, e, this._config);
			}
		}
		let V = "<svg t=\"1724122015492\" class=\"icon\" viewBox=\"0 0 1024 1024\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" p-id=\"4237\" width=\"32\" height=\"32\"><path d=\"M401.472 316.992l159.04 217.664L591.488 512l-30.976-22.656-159.04 217.728q-2.24 3.008-3.84 6.464-1.6 3.456-2.496 7.104-0.896 3.648-1.024 7.424-0.192 3.84 0.384 7.552 0.64 3.712 1.92 7.296 1.28 3.52 3.2 6.784 1.984 3.2 4.544 6.016 2.56 2.752 5.632 4.992 3.072 2.24 6.464 3.84 3.456 1.6 7.168 2.496 3.648 0.896 7.424 1.024 3.776 0.192 7.488-0.448 3.776-0.576 7.296-1.856 3.584-1.28 6.784-3.264 3.2-1.92 6.016-4.48 2.816-2.56 5.056-5.632l159.04-217.728q3.584-4.928 5.504-10.752 1.92-5.76 1.92-11.904 0-6.08-1.92-11.904-1.92-5.76-5.504-10.752L463.488 271.68q-2.24-3.072-5.056-5.632-2.752-2.56-6.016-4.48-3.2-1.984-6.784-3.328-3.52-1.28-7.296-1.856-3.712-0.576-7.488-0.448-3.84 0.192-7.424 1.088-3.712 0.896-7.168 2.496-3.392 1.6-6.4 3.84-3.136 2.176-5.696 4.992-2.56 2.752-4.48 6.016-1.984 3.2-3.264 6.784-1.28 3.52-1.92 7.296-0.576 3.712-0.384 7.488 0.128 3.84 1.024 7.488 0.896 3.648 2.496 7.04 1.6 3.456 3.84 6.528z m30.976-61.056q-3.776 0-7.488 0.704-3.712 0.768-7.168 2.24-3.52 1.408-6.656 3.52-3.2 2.112-5.824 4.8-2.688 2.624-4.8 5.76-2.112 3.2-3.52 6.656-1.472 3.52-2.176 7.232-0.768 3.712-0.768 7.488 0 3.776 0.768 7.488 0.704 3.712 2.176 7.232 1.408 3.456 3.52 6.592 2.112 3.2 4.8 5.824 2.688 2.688 5.76 4.8 3.2 2.112 6.72 3.52 3.456 1.472 7.168 2.176 3.712 0.768 7.488 0.768 3.84 0 7.488-0.768 3.712-0.704 7.232-2.176 3.456-1.408 6.592-3.52 3.2-2.112 5.824-4.8 2.688-2.688 4.8-5.76 2.112-3.2 3.52-6.656 1.472-3.52 2.24-7.232 0.704-3.712 0.704-7.488 0-3.84-0.704-7.488-0.768-3.712-2.24-7.232-1.408-3.456-3.52-6.592-2.112-3.2-4.8-5.824-2.624-2.688-5.76-4.8-3.2-2.112-6.656-3.52-3.52-1.472-7.232-2.24Q436.224 256 432.448 256z m0 435.392q-3.776 0-7.488 0.704-3.712 0.768-7.168 2.176-3.52 1.472-6.656 3.584-3.2 2.112-5.824 4.736-2.688 2.688-4.8 5.824-2.112 3.2-3.52 6.656-1.472 3.52-2.176 7.232-0.768 3.712-0.768 7.488 0 3.776 0.768 7.488 0.704 3.712 2.176 7.168 1.408 3.52 3.52 6.656 2.112 3.2 4.8 5.76 2.688 2.752 5.76 4.8 3.2 2.112 6.72 3.584 3.456 1.472 7.168 2.176 3.712 0.768 7.488 0.768 3.84 0 7.488-0.768 3.712-0.704 7.232-2.176 3.456-1.472 6.592-3.584 3.2-2.048 5.824-4.736 2.688-2.688 4.8-5.824 2.112-3.2 3.52-6.656 1.472-3.456 2.24-7.168 0.704-3.712 0.704-7.488 0-3.84-0.704-7.488-0.768-3.712-2.24-7.232-1.408-3.52-3.52-6.656-2.112-3.136-4.8-5.76-2.624-2.688-5.76-4.8-3.2-2.112-6.656-3.584-3.52-1.408-7.232-2.176-3.712-0.704-7.488-0.704z\" p-id=\"4238\"></path></svg>\r\n", ue = "<svg t=\"1722595535853\" class=\"icon\" viewBox=\"0 0 1024 1024\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" p-id=\"4551\" width=\"32\" height=\"32\"><path d=\"M640 128H384c-170.496 0-256 85.504-256 256v256c0 170.496 85.504 256 256 256h256c170.496 0 256-85.504 256-256V384c0-170.496-85.504-256-256-256z m67.584 302.592c-2.048 4.608-4.608 8.704-8.192 12.288L506.88 634.88c-3.584 3.584-7.68 6.144-12.288 8.192-4.608 2.048-9.728 3.072-14.848 3.072s-10.24-1.024-14.848-3.072c-4.608-2.048-8.704-4.608-12.288-8.192l-96.256-96.256c-3.584-3.584-6.144-7.68-8.192-12.288-2.048-4.608-3.072-9.728-3.072-14.848 0-2.56 0-5.12 1.024-7.68 0.512-2.56 1.024-5.12 2.048-7.168 1.024-2.56 2.048-4.608 3.584-6.656 1.536-2.048 3.072-4.096 4.608-5.632 1.536-2.048 3.584-3.584 5.632-4.608 2.048-1.536 4.096-2.56 6.656-3.584 2.56-1.024 4.608-1.536 7.168-2.048 2.56-0.512 5.12-0.512 7.68-0.512 5.12 0 10.24 1.024 14.848 3.072 4.608 2.048 8.704 4.608 12.288 8.192l69.12 68.608L645.12 389.12c3.584-3.584 7.68-6.144 12.288-8.192 4.608-2.048 9.728-3.072 14.848-3.072 2.56 0 5.12 0 7.68 0.512s5.12 1.024 7.168 2.048c2.56 1.024 4.608 2.048 6.656 3.584 2.048 1.536 4.096 3.072 5.632 4.608 1.536 1.536 3.584 3.584 4.608 5.632 1.536 2.048 2.56 4.096 3.584 6.656 1.024 2.56 1.536 4.608 2.048 7.168 0.512 2.56 1.024 5.12 1.024 7.68 0 5.12-1.024 10.24-3.072 14.848z\" p-id=\"4552\"></path></svg>\n", de = "<svg t=\"1724122044148\" class=\"icon\" viewBox=\"0 0 1024 1024\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" p-id=\"4551\" width=\"32\" height=\"32\"><path d=\"M707.648 401.28L489.28 560.704l22.656 30.976 22.656-30.976L316.16 401.216q-3.072-2.24-6.464-3.84-3.456-1.536-7.104-2.432-3.712-0.896-7.488-1.088-3.776-0.128-7.488 0.448-3.776 0.64-7.296 1.92-3.584 1.28-6.784 3.2-3.2 1.984-6.016 4.544-2.816 2.56-5.056 5.632-2.176 3.072-3.84 6.464-1.536 3.456-2.432 7.104-0.896 3.712-1.088 7.488-0.128 3.776 0.448 7.488 0.64 3.776 1.92 7.296 1.28 3.584 3.2 6.784 1.984 3.2 4.544 6.016 2.56 2.752 5.632 4.992l218.368 159.552q4.928 3.584 10.752 5.504 5.76 1.92 11.904 1.92 6.08 0 11.904-1.92 5.76-1.92 10.752-5.504l218.368-159.552q3.008-2.24 5.568-4.992 2.56-2.816 4.544-6.016 1.92-3.2 3.264-6.784 1.28-3.52 1.92-7.296 0.576-3.712 0.384-7.488-0.128-3.84-1.024-7.488-0.896-3.648-2.496-7.04-1.6-3.456-3.84-6.528-2.24-3.072-4.992-5.632-2.816-2.56-6.016-4.48-3.2-1.984-6.784-3.328-3.584-1.28-7.296-1.856-3.712-0.64-7.488-0.448-3.84 0.192-7.488 1.088-3.648 0.896-7.04 2.496-3.456 1.536-6.528 3.84z m61.056 30.976q0-3.84-0.768-7.488-0.704-3.712-2.176-7.232-1.472-3.456-3.52-6.656-2.112-3.136-4.8-5.76-2.688-2.688-5.76-4.8-3.2-2.112-6.72-3.584-3.456-1.408-7.168-2.176-3.712-0.704-7.488-0.704-3.84 0-7.488 0.704-3.712 0.768-7.232 2.176-3.456 1.472-6.656 3.584-3.136 2.112-5.76 4.8-2.688 2.624-4.8 5.76-2.112 3.2-3.584 6.656-1.408 3.52-2.176 7.232-0.704 3.712-0.704 7.488 0 3.776 0.704 7.488 0.768 3.712 2.176 7.168 1.472 3.52 3.584 6.656 2.112 3.2 4.8 5.824 2.624 2.688 5.76 4.8 3.2 2.112 6.656 3.52 3.52 1.472 7.232 2.176 3.712 0.768 7.488 0.768 3.776 0 7.488-0.768 3.712-0.704 7.168-2.176 3.52-1.408 6.656-3.52 3.2-2.112 5.824-4.8 2.688-2.688 4.8-5.76 2.048-3.2 3.52-6.72 1.472-3.456 2.176-7.168 0.768-3.712 0.768-7.488z m-436.736 0q0-3.84-0.768-7.488-0.704-3.712-2.176-7.232-1.408-3.456-3.52-6.656-2.112-3.136-4.8-5.76-2.688-2.688-5.76-4.8-3.2-2.112-6.656-3.584-3.52-1.408-7.232-2.176-3.712-0.704-7.488-0.704-3.84 0-7.488 0.704-3.712 0.768-7.232 2.176-3.456 1.472-6.592 3.584-3.2 2.112-5.824 4.8-2.688 2.624-4.8 5.76-2.112 3.2-3.52 6.656-1.472 3.52-2.24 7.232-0.704 3.712-0.704 7.488 0 3.776 0.704 7.488 0.768 3.712 2.24 7.168 1.408 3.52 3.52 6.656 2.112 3.2 4.8 5.824 2.624 2.688 5.76 4.8 3.2 2.112 6.656 3.52 3.52 1.472 7.232 2.176 3.712 0.768 7.488 0.768 3.776 0 7.488-0.768 3.712-0.704 7.232-2.176 3.456-1.408 6.592-3.52 3.2-2.112 5.824-4.8 2.688-2.688 4.8-5.76 2.112-3.2 3.52-6.72 1.472-3.456 2.176-7.168 0.768-3.712 0.768-7.488z\" p-id=\"4552\"></path></svg>\n", fe = "<svg t=\"1755138507987\" class=\"icon\" viewBox=\"0 0 1024 1024\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" p-id=\"5079\" width=\"200\" height=\"200\"><path d=\"M512 938.688a42.688 42.688 0 0 1-35.072-18.432l-192-277.312A42.56 42.56 0 0 1 320 576h384a42.752 42.752 0 0 1 35.072 66.944l-192 277.312a42.688 42.688 0 0 1-35.072 18.432\" fill=\"currentColor\" p-id=\"2016\"></path><path d=\"M704 448H320a42.752 42.752 0 0 1-35.072-66.944l192-277.312c16-23.04 54.208-23.04 70.144 0l192 277.312A42.56 42.56 0 0 1 704 448\" fill=\"currentColor\" p-id=\"2015\"></path></svg>\n", pe = fe.replace("fill=\"currentColor\" p-id=\"2016\"", "fill=\"#bec4c7\" p-id=\"2016\""), me = fe.replace("fill=\"currentColor\" p-id=\"2015\"", "fill=\"#bec4c7\" p-id=\"2015\"");
		class he {
			constructor(e) {
				n(this, "ctx"), n(this, "list", [
					{
						name: "loading",
						configName: "LOADING_ICON_SVG",
						configColorName: "LOADING_ICON_COLOR",
						svg: "<svg t=\"1724133395728\" class=\"icon\" viewBox=\"0 0 1024 1024\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" p-id=\"2893\" width=\"32\" height=\"32\"><path d=\"M512 226.8476541a19.82487759 19.82487759 0 0 1 14.66497778 5.70304692c3.80203107 3.82918865 5.70304692 8.71751457 5.70304693 14.66497779v122.20814825a19.82487759 19.82487759 0 0 1-5.70304693 14.66497778 19.82487759 19.82487759 0 0 1-14.66497778 5.70304691 19.82487759 19.82487759 0 0 1-14.66497778-5.70304691 19.82487759 19.82487759 0 0 1-5.70304693-14.66497778v-122.20814825a19.82487759 19.82487759 0 0 1 5.70304693-14.66497779 19.82487759 19.82487759 0 0 1 14.66497778-5.70304692z m0 407.36049415a19.82487759 19.82487759 0 0 1 14.66497778 5.70304691c3.80203107 3.82918865 5.70304692 8.71751457 5.70304693 14.66497778v122.20814827a19.82487759 19.82487759 0 0 1-5.70304693 14.66497776 19.82487759 19.82487759 0 0 1-14.66497778 5.70304693 19.82487759 19.82487759 0 0 1-14.66497778-5.70304693 19.82487759 19.82487759 0 0 1-5.70304693-14.66497776v-122.20814827a19.82487759 19.82487759 0 0 1 5.70304693-14.66497778 19.82487759 19.82487759 0 0 1 14.66497778-5.70304691zM797.1523459 512a19.82487759 19.82487759 0 0 1-5.70304692 14.66497778 19.82487759 19.82487759 0 0 1-14.66497779 5.70304693h-122.20814825a19.82487759 19.82487759 0 0 1-14.66497778-5.70304693 19.82487759 19.82487759 0 0 1-5.70304691-14.66497778 19.82487759 19.82487759 0 0 1 5.70304691-14.66497778 19.82487759 19.82487759 0 0 1 14.66497778-5.70304693h122.20814825a19.82487759 19.82487759 0 0 1 14.66497779 5.70304693c3.80203107 3.82918865 5.70304692 8.71751457 5.70304692 14.66497778z m-407.36049415 0a19.82487759 19.82487759 0 0 1-5.70304691 14.66497778 19.82487759 19.82487759 0 0 1-14.66497778 5.70304693h-122.20814827a19.82487759 19.82487759 0 0 1-14.66497776-5.70304693 19.82487759 19.82487759 0 0 1-5.70304693-14.66497778 19.82487759 19.82487759 0 0 1 5.70304693-14.66497778 19.82487759 19.82487759 0 0 1 14.66497776-5.70304693h122.20814827a19.82487759 19.82487759 0 0 1 14.66497778 5.70304693c3.80203107 3.82918865 5.70304692 8.71751457 5.70304691 14.66497778zM310.22076878 310.22076878a21.29137537 21.29137537 0 0 1 14.66497779-5.70304693c5.51294514 0 10.18401235 1.90101585 14.01320099 5.70304693l86.55052591 86.57768347a20.91117183 20.91117183 0 0 1 5.73020449 14.31193182 19.28172983 19.28172983 0 0 1-6.05609289 14.013201 19.11878565 19.11878565 0 0 1-14.013201 6.05609289 20.96548698 20.96548698 0 0 1-14.31193182-5.70304692L310.22076878 338.87178998a19.06447114 19.06447114 0 0 1-5.70304693-14.01320099c0-5.54010272 1.90101585-10.42842865 5.70304693-14.66497778z m288.32975775 288.32975775a19.79772001 19.79772001 0 0 1 14.3390894-6.35482371c5.29568642 0 10.04822572 2.11827457 14.31193182 6.38198066l86.57768347 86.55052651c3.80203107 3.80203107 5.70304692 8.47309828 5.70304691 14.01320102a19.55330372 19.55330372 0 0 1-6.05609225 14.31193182 19.66193339 19.66193339 0 0 1-14.31193245 6.05609288 19.01015661 19.01015661 0 0 1-14.01320099-5.70304692l-86.55052591-86.57768347a19.79772001 19.79772001 0 0 1-6.38198129-14.31193245c0-5.29568642 2.11827457-10.07538268 6.38198129-14.33908939zM713.77923122 310.22076878c3.80203107 4.26370672 5.70304692 9.15203265 5.70304693 14.66497779s-1.90101585 10.18401235-5.70304693 14.01320099l-86.57768347 86.55052591a20.91117183 20.91117183 0 0 1-14.31193182 5.73020449 19.28172983 19.28172983 0 0 1-14.013201-6.05609289 19.11878565 19.11878565 0 0 1-6.05609289-14.013201c0-5.29568642 1.90101585-10.07538268 5.70304692-14.31193182l86.57768348-86.57768347c3.80203107-3.80203107 8.50025585-5.70304692 14.01320099-5.70304693 5.54010272 0 10.40127108 1.90101585 14.66497779 5.70304693zM425.44947347 598.57768347a19.79772001 19.79772001 0 0 1 6.35482371 14.33908939c0 5.29568642-2.11827457 10.04822572-6.38198066 14.31193245L338.89894756 713.77923122a19.06447114 19.06447114 0 0 1-14.01320099 5.70304693 19.55330372 19.55330372 0 0 1-14.31193245-6.05609227 19.68909035 19.68909035 0 0 1-6.05609227-14.31193245 19.01015661 19.01015661 0 0 1 5.70304693-14.01320099l86.57768347-86.55052591a19.79772001 19.79772001 0 0 1 14.31193182-6.38198129c5.29568642 0 10.07538268 2.11827457 14.3390894 6.38198129z\" fill=\"#000000\" fill-opacity=\".65\" p-id=\"2894\"></path></svg>\n",
						color: "#4E5969"
					},
					{
						name: "expand",
						configName: "EXPAND_ICON_SVG",
						configColorName: "EXPAND_ICON_COLOR",
						svg: V,
						color: "#4E5969"
					},
					{
						name: "shrink",
						configName: "SHRINK_ICON_SVG",
						configColorName: "SHRINK_ICON_COLOR",
						svg: de,
						color: "#4E5969"
					},
					{
						name: "checkbox-uncheck",
						configName: "CHECKBOX_UNCHECK_SVG",
						configColorName: "CHECKBOX_UNCHECK_COLOR",
						svg: "<svg t=\"1722595639920\" class=\"icon\" viewBox=\"0 0 1024 1024\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" p-id=\"4708\" width=\"32\" height=\"32\"><path d=\"M128 640V384a256 256 0 0 1 256-256h256a256 256 0 0 1 256 256v256a256 256 0 0 1-256 256H384a256 256 0 0 1-256-256z m64 0q0 79.552 56.256 135.744Q304.448 832 384 832h256q79.552 0 135.744-56.256Q832 719.552 832 640V384q0-79.552-56.256-135.744Q719.552 192 640 192H384q-79.552 0-135.744 56.256Q192 304.448 192 384v256z\" p-id=\"4709\"></path></svg>\n",
						color: ""
					},
					{
						name: "checkbox-check",
						configName: "CHECKBOX_CHECK_SVG",
						configColorName: "CHECKBOX_COLOR",
						svg: ue,
						color: "rgb(82,146,247)"
					},
					{
						name: "checkbox-indeterminate",
						configName: "CHECKBOX_INDETERMINATE_SVG",
						configColorName: "CHECKBOX_COLOR",
						svg: "<svg t=\"1722595280953\" class=\"icon\" viewBox=\"0 0 1024 1024\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" p-id=\"4394\" width=\"32\" height=\"32\"><path d=\"M128 384v256q0 12.608 1.28 25.088 1.216 12.544 3.648 24.832 2.432 12.352 6.08 24.384t8.448 23.68q4.864 11.584 10.752 22.72 5.952 11.072 12.928 21.504 7.04 10.496 14.976 20.224 8 9.728 16.896 18.56 8.896 8.96 18.56 16.896 9.728 8 20.224 14.976 10.432 7.04 21.504 12.928 11.136 5.888 22.72 10.688 11.648 4.864 23.68 8.512 12.032 3.648 24.32 6.08 12.352 2.432 24.896 3.712Q371.392 896 384 896h256q12.608 0 25.088-1.28 12.544-1.216 24.832-3.648 12.352-2.432 24.384-6.08t23.68-8.512q11.584-4.8 22.72-10.688 11.072-5.952 21.504-12.928 10.496-7.04 20.224-14.976 9.728-8 18.56-16.896 8.96-8.832 16.896-18.56 8-9.728 14.976-20.224 7.04-10.432 12.928-21.504 5.888-11.136 10.688-22.72 4.864-11.648 8.512-23.68 3.648-12.032 6.08-24.32 2.432-12.352 3.712-24.896Q896 652.608 896 640V384q0-12.608-1.28-25.088-1.216-12.544-3.648-24.832-2.432-12.352-6.08-24.384t-8.512-23.68q-4.8-11.584-10.688-22.72-5.952-11.072-12.928-21.504-7.04-10.496-14.976-20.224-8-9.664-16.896-18.56-8.832-8.96-18.56-16.896-9.728-8-20.224-14.976-10.432-7.04-21.504-12.928-11.136-5.888-22.72-10.752-11.648-4.8-23.68-8.448-12.032-3.648-24.32-6.08-12.352-2.432-24.896-3.712Q652.608 128 640 128H384q-12.608 0-25.088 1.28-12.544 1.216-24.832 3.648-12.352 2.432-24.384 6.08t-23.68 8.448q-11.584 4.864-22.72 10.752-11.072 5.952-21.504 12.928-10.496 7.04-20.224 14.976-9.664 8-18.56 16.896-8.96 8.896-16.896 18.56-8 9.728-14.976 20.224-7.04 10.432-12.928 21.504-5.888 11.136-10.752 22.72-4.8 11.648-8.448 23.68-3.648 12.032-6.08 24.32-2.432 12.352-3.712 24.896Q128 371.392 128 384z m566.016 166.336H330.112a38.4 38.4 0 0 1 0-76.8h363.904a38.4 38.4 0 0 1 0 76.8z\" p-id=\"4395\"></path></svg>\n",
						color: "rgb(82,146,247)"
					},
					{
						name: "checkbox-check-disabled",
						configName: "CHECKBOX_CHECK_DISABLED_SVG",
						svg: ue,
						color: "#DDE0EA"
					},
					{
						name: "checkbox-disabled",
						configName: "CHECKBOX_DISABLED_SVG",
						configColorName: "CHECKBOX_DISABLED_COLOR",
						svg: "<svg t=\"1722595946663\" class=\"icon\" viewBox=\"0 0 1024 1024\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" p-id=\"4865\" width=\"32\" height=\"32\"><path d=\"M128 640V384a256 256 0 0 1 256-256h256a256 256 0 0 1 256 256v256a256 256 0 0 1-256 256H384a256 256 0 0 1-256-256z\" p-id=\"4866\"></path><path d=\"M128 640V384a256 256 0 0 1 256-256h256a256 256 0 0 1 256 256v256a256 256 0 0 1-256 256H384a256 256 0 0 1-256-256z m64 0q0 79.552 56.256 135.744Q304.448 832 384 832h256q79.552 0 135.744-56.256Q832 719.552 832 640V384q0-79.552-56.256-135.744Q719.552 192 640 192H384q-79.552 0-135.744 56.256Q192 304.448 192 384v256z\" fill=\"#DDE0EA\" p-id=\"4867\"></path></svg>\n",
						color: "#F1F2F4"
					},
					{
						name: "icon-edit",
						configName: "ICON_EDIT_SVG",
						configColorName: "ICON_EDIT_COLOR",
						svg: "<svg t=\"1744798692576\" class=\"icon\" viewBox=\"0 0 1024 1024\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" p-id=\"6606\" width=\"200\" height=\"200\"><path d=\"M855.296 894.528H168.768v-76.8h686.528v76.8z m38.4-38.4q0 3.84-0.768 7.488-0.704 3.712-2.176 7.232-1.472 3.52-3.52 6.656-2.112 3.136-4.8 5.76-2.688 2.688-5.824 4.8-3.2 2.112-6.656 3.584-3.456 1.408-7.168 2.176-3.712 0.704-7.488 0.704-3.84 0-7.488-0.704-3.712-0.768-7.232-2.176-3.52-1.472-6.656-3.584-3.136-2.112-5.76-4.736-2.688-2.688-4.8-5.824-2.112-3.2-3.584-6.656-1.408-3.52-2.176-7.232-0.704-3.648-0.704-7.488 0-3.776 0.704-7.488 0.768-3.712 2.176-7.168 1.472-3.52 3.584-6.656 2.112-3.136 4.736-5.76 2.688-2.752 5.824-4.8 3.2-2.112 6.656-3.584 3.52-1.472 7.232-2.176 3.712-0.768 7.488-0.768 3.776 0 7.488 0.768 3.712 0.704 7.168 2.176 3.52 1.472 6.656 3.584 3.2 2.048 5.76 4.736 2.752 2.688 4.864 5.824 2.048 3.2 3.52 6.656 1.472 3.456 2.176 7.168 0.768 3.712 0.768 7.488z m-686.528 0q0 3.84-0.768 7.488-0.704 3.712-2.176 7.232-1.472 3.52-3.52 6.656-2.112 3.136-4.8 5.76-2.688 2.688-5.76 4.8-3.2 2.112-6.72 3.584-3.456 1.408-7.168 2.176-3.712 0.704-7.488 0.704-3.84 0-7.488-0.704-3.712-0.768-7.232-2.176-3.456-1.472-6.656-3.584-3.136-2.112-5.76-4.736-2.688-2.688-4.8-5.824-2.112-3.2-3.584-6.656-1.408-3.52-2.176-7.232-0.704-3.648-0.704-7.488 0-3.776 0.704-7.488 0.768-3.712 2.176-7.168 1.472-3.52 3.584-6.656 2.112-3.136 4.736-5.76 2.688-2.752 5.824-4.8 3.2-2.112 6.656-3.584 3.52-1.472 7.232-2.176 3.712-0.768 7.488-0.768 3.776 0 7.488 0.768 3.712 0.704 7.168 2.176 3.52 1.472 6.656 3.584 3.2 2.048 5.824 4.736 2.688 2.688 4.8 5.824 2.048 3.2 3.52 6.656 1.472 3.456 2.176 7.168 0.768 3.712 0.768 7.488zM652.032 211.2l-369.92 370.368v89.344h90.048l369.664-369.856L652.032 211.2z m-54.4-54.272q22.528-22.528 54.4-22.528 31.808 0 54.336 22.528l89.792 89.856q22.464 22.464 22.464 54.272t-22.464 54.272l-369.664 369.856q-22.464 22.528-54.336 22.528H282.24q-31.808 0-54.336-22.528-22.464-22.464-22.464-54.272V581.568q0-31.808 22.4-54.272l369.92-370.368z\" p-id=\"6607\"></path></svg>\n",
						color: "#4E5969"
					},
					{
						name: "icon-select",
						configName: "ICON_SELECT_SVG",
						configColorName: "ICON_SELECT_COLOR",
						svg: de,
						color: "#4E5969"
					},
					{
						name: "sort-asc",
						configName: "SORT_ASC_ICON_SVG",
						configColorName: "SORT_ICON_COLOR",
						svg: pe,
						color: "rgb(82,146,247)"
					},
					{
						name: "sort-desc",
						configName: "SORT_DESC_ICON_SVG",
						configColorName: "SORT_ICON_COLOR",
						svg: me,
						color: "rgb(82,146,247)"
					},
					{
						name: "sort-default",
						configName: "SORTABLE_ICON_SVG",
						svg: fe,
						color: "#bec4c7"
					},
					{
						name: "drag",
						configName: "DRAG_ROW_ICON_SVG",
						svg: "<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 24 24\"><path d=\"M11 18c0 1.1-.9 2-2 2s-2-.9-2-2s.9-2 2-2s2 .9 2 2zm-2-8c-1.1 0-2 .9-2 2s.9 2 2 2s2-.9 2-2s-.9-2-2-2zm0-6c-1.1 0-2 .9-2 2s.9 2 2 2s2-.9 2-2s-.9-2-2-2zm6 4c1.1 0 2-.9 2-2s-.9-2-2-2s-2 .9-2 2s.9 2 2 2zm0 2c-1.1 0-2 .9-2 2s.9 2 2 2s2-.9 2-2s-.9-2-2-2zm0 6c-1.1 0-2 .9-2 2s.9 2 2 2s2-.9 2-2s-.9-2-2-2z\" fill=\"currentColor\"></path></svg>\n",
						color: "#4E5969"
					}
				]), n(this, "icons", /* @__PURE__ */ new Map()), this.ctx = e, this.init();
			}
			async init() {
				let e = [];
				for (let t = 0; t < this.list.length; t++) {
					let n = this.list[t], r = n.color, i = n.svg;
					if (n.configColorName) {
						let e = this.ctx.config[n.configColorName];
						e && (r = e);
					}
					if (n.configName) {
						let e = this.ctx.config[n.configName];
						e && (i = e);
					}
					let a = this.createImageFromSVG(i, r).then((e) => {
						this.icons.set(n.name, e);
					});
					e.push(a);
				}
				for (let t = 0; t < this.ctx.config.ICONS.length; t++) {
					let n = this.ctx.config.ICONS[t], r = n.color, i = this.createImageFromSVG(n.svg, r, n.isBlob).then((e) => {
						this.icons.set(n.name, e);
					});
					e.push(i);
				}
				await Promise.all(e), this.ctx.emit("draw");
			}
			async createImageFromSVG(e, t, n = !1) {
				let r = new DOMParser().parseFromString(e, "image/svg+xml").documentElement;
				t && r.querySelectorAll("*").forEach((e) => {
					let n = e.getAttribute("fill");
					(n === "currentColor" || n === null) && e.setAttribute("fill", t);
				});
				let i = new Image(), a = "";
				if (n) {
					let e = new Blob([new XMLSerializer().serializeToString(r)], { type: "image/svg+xml" });
					a = URL.createObjectURL(e);
				} else a = "data:image/svg+xml;charset=utf-8," + encodeURIComponent(new XMLSerializer().serializeToString(r));
				return i.src = a, new Promise((t, n) => {
					i.onerror = () => n(/* @__PURE__ */ Error("Failed to load image:" + e)), i.onload = () => {
						t(i);
					};
				});
			}
			get(e) {
				return this.icons.get(e);
			}
			getSvg(e) {
				return this.list.find((t) => t.name === e);
			}
		}
		class ge {
			constructor(e) {
				n(this, "ctx"), n(this, "visibleHoverCell"), n(this, "resizeObserver"), n(this, "mutationObserver"), this.ctx = e, this.init();
			}
			init() {
				this.resizeObserver = new ResizeObserver((e) => {
					this.ctx.emit("resetHeader"), this.ctx.emit("resizeObserver", e), this.ctx.emit("containerResize", this.ctx.containerElement);
				}), this.resizeObserver.observe(this.ctx.containerElement), this.mutationObserver = new MutationObserver((e) => {
					for (let t of e) t.type === "attributes" && t.attributeName === "class" && (this.ctx.config.updateCssVar(), this.ctx.emit("draw"));
				}), this.ctx.config.ENABLE_AUTO_THEME && this.mutationObserver.observe(document.documentElement, {
					attributes: !0,
					attributeFilter: ["class"]
				}), this.ctx.on("mousedown", (e) => {
					if (this.isBusy(e)) return;
					let { offsetY: t, offsetX: n } = this.ctx.getOffset(e), r = t, i = n;
					this.isInsideBody(i, r) || this.ctx.emit("mousedownBodyOutside", e), e.button === 0 && (this.handleHeaderEvent(i, r, this.ctx.header.renderCellHeaders, (t) => {
						this.ctx.focusCellHeader = t, this.ctx.focusCell = void 0, this.ctx.emit("cellHeaderMousedown", t, e);
					}), this.handleBodyEvent(i, r, this.ctx.body.renderRows, (t) => {
						this.ctx.setFocusCell(t), this.ctx.focusCellHeader = void 0, this.ctx.emit("cellMousedown", t, e);
					}, !0));
				}), this.ctx.on("mouseup", (e) => {
					if (e.button !== 0 || this.isBusy(e)) return;
					let { offsetY: t, offsetX: n } = this.ctx.getOffset(e), r = t, i = n;
					this.handleHeaderEvent(i, r, this.ctx.header.renderCellHeaders, (t) => {
						this.ctx.emit("cellHeaderMouseup", t, e);
					}), this.handleBodyEvent(i, r, this.ctx.body.renderRows, (t) => {
						this.ctx.emit("cellMouseup", t, e);
					});
				}), this.ctx.on("click", (e) => {
					if (e.button !== 0 || this.isBusy(e)) return;
					let t = this.ctx.getOffset(e).offsetY, n = this.ctx.getOffset(e).offsetX;
					this.handleHeaderEvent(n, t, this.ctx.header.renderCellHeaders, (t) => {
						this.ctx.clickCellHeader = t, this.ctx.emit("cellHeaderClick", t, e);
					}), this.handleBodyEvent(n, t, this.ctx.body.renderRows, (r) => {
						this.ctx.clickCell = r, this.ctx.emit("cellClick", r, e);
						let i = r.getImage("hover");
						!this.ctx.disableHoverIconClick && i && i.isInside(n, t) && this.ctx.emit("hoverIconClick", r);
					}, !0);
				}), this.ctx.on("dblclick", (e) => {
					if (e.button !== 0 || this.isBusy(e)) return;
					let t = this.ctx.getOffset(e).offsetY, n = this.ctx.getOffset(e).offsetX;
					this.handleHeaderEvent(n, t, this.ctx.header.renderCellHeaders, (t) => {
						this.ctx.emit("cellHeaderDblclick", t, e);
					}), this.handleBodyEvent(n, t, this.ctx.body.renderRows, (t) => {
						this.ctx.clickCell = t, this.ctx.emit("cellDblclick", t, e);
					});
				}), this.ctx.on("contextMenu", (e) => {
					if (this.isBusy(e)) return;
					let { offsetY: t, offsetX: n } = this.ctx.getOffset(e), r = t, i = n;
					this.handleHeaderEvent(i, r, this.ctx.header.renderCellHeaders, (t) => {
						this.ctx.emit("cellHeaderContextMenuClick", t, e);
					}), this.handleBodyEvent(i, r, this.ctx.body.renderRows, (t) => {
						this.ctx.emit("cellContextMenuClick", t, e);
					});
				}), this.ctx.on("mouseout", (e) => {
					!this.ctx.containerElement.contains(e.relatedTarget) && this.ctx.hoverCell !== void 0 && (this.ctx.hoverRow = void 0, this.ctx.hoverCell = void 0, this.ctx.emit("draw"));
				}), this.ctx.on("mousemove", (e) => {
					if (this.isBusy(e)) return;
					!this.ctx.mousedown && this.ctx.stageElement.style.cursor !== "default" && (this.ctx.stageElement.style.cursor = "default");
					let t = this.ctx.getOffset(e).offsetY, n = this.ctx.getOffset(e).offsetX;
					this.handleHeaderEvent(n, t, this.ctx.header.renderCellHeaders, (t) => {
						this.imageEnterAndLeave(t, e), this.ctx.emit("cellHeaderMouseenter", t, e), this.ctx.hoverCellHeader && this.ctx.hoverCellHeader !== t && this.ctx.emit("cellHeaderMouseleave", this.ctx.hoverCellHeader, e), this.ctx.hoverCellHeader !== t && (this.ctx.hoverCellHeader = t, this.visibleHoverCell = void 0, this.ctx.emit("cellHeaderHoverChange", t, e));
					}), this.handleBodyEvent(n, t, this.ctx.body.renderRows, (t) => {
						this.imageEnterAndLeave(t, e), this.visibleHoverCell !== t && (this.ctx.emit("visibleCellMouseleave", t, e), this.visibleHoverCell = t, this.ctx.hoverCellHeader = void 0, this.ctx.emit("visibleCellHoverChange", t, e));
					}, !0), this.handleBodyEvent(n, t, this.ctx.body.renderRows, (t) => {
						this.ctx.emit("cellMouseenter", t, e), this.ctx.hoverCell && this.ctx.hoverCell !== t && this.ctx.emit("cellMouseleave", t, e), this.ctx.hoverCell !== t && (this.ctx.hoverCell?.rowKey !== t.rowKey && (this.ctx.hoverCell = t, this.ctx.hoverRow = this.ctx.body.renderRows.find((e) => e.rowKey === t.rowKey), this.ctx.emit("rowHoverChange", this.ctx.hoverRow, t, e), this.ctx.emit("draw")), this.ctx.hoverCell = t, this.ctx.emit("cellHoverChange", t, e));
					}), this.handleFooterEvent(n, t, this.ctx.footer.renderRows, (t) => {
						this.ctx.emit("cellFooterMouseenter", t, e), this.ctx.hoverCell && this.ctx.hoverCell !== t && this.ctx.emit("cellFooterMouseleave", t, e), this.ctx.emit("cellFooterHoverChange", t, e);
					});
				});
			}
			imageEnterAndLeave(e, t) {
				if (this.ctx.dragRowIng || this.ctx.dragHeaderIng || this.ctx.selectorMove || this.ctx.autofillMove) return;
				let { offsetY: n, offsetX: r } = this.ctx.getOffset(t), i = n, a = r;
				e.cellImages.forEach((e, t) => {
					e.isInside(a, i) && (t === "drag" ? this.ctx.stageElement.style.cursor = "grab" : this.ctx.stageElement.style.cursor = "pointer");
				});
			}
			isBusy(e) {
				let { offsetY: t, offsetX: n } = this.ctx.getOffset(e), r = t, i = n;
				if (this.ctx.loading || !this.ctx.isTarget(e) || this.ctx.stageElement.style.cursor === "row-resize" || this.ctx.stageElement.style.cursor === "col-resize" || this.ctx.columnResizing || this.ctx.rowResizing) return !0;
				let { SCROLLER_TRACK_SIZE: a } = this.ctx.config, o = T(this.ctx.config);
				return !!(this.ctx.scrollerMove || this.ctx.scrollerFocus || !o && r > this.ctx.stageHeight - a || !o && i > this.ctx.stageWidth - a);
			}
			handleBodyEvent(e, t, n, r, i = !1) {
				if (this.isInsideBody(e, t)) for (let a of n) {
					let n = a.fixedCells.concat(a.noFixedCells);
					for (let a of n) if (i ? a.isInsideVisible(e, t) : a.isInside(e, t)) {
						r(a);
						return;
					}
				}
			}
			handleHeaderEvent(e, t, n, r) {
				for (let i of n) if (i.isInside(e, t)) {
					r(i);
					return;
				}
			}
			handleFooterEvent(e, t, n, r) {
				for (let i of n) {
					let n = i.fixedCells.concat(i.noFixedCells);
					for (let i of n) if (i.isInside(e, t)) {
						r(i);
						return;
					}
				}
			}
			isInsideBody(e, t) {
				let { body: { y: n, visibleHeight: r, height: i, visibleWidth: a } } = this.ctx;
				return e > 0 && e < a && t > n && t < n + Math.min(i, r);
			}
			destroy() {
				this.resizeObserver.unobserve(this.ctx.stageElement), this.mutationObserver.disconnect();
			}
		}
		let H = {
			numberErrorTip: "只允许输入数字",
			emptyText: "暂无数据",
			loadingText: "加载中...",
			copy: "复制",
			cut: "剪切",
			paste: "粘贴",
			clearSelected: "清空选中内容",
			fixedLeft: "左固定",
			fixedRight: "右固定",
			fixedNone: "取消固定",
			hide: "隐藏",
			visible: "显示",
			resetHeader: "恢复默认",
			invalidNumber: "请输入数字类型",
			mergeCellNoFill: "合并单元格不能填充",
			mergeCellNoCopy: "合并单元格不能复制",
			mergeCellNoPaste: "合并单元格不能粘贴",
			numberTruncated: "输入的数字已截取至小数点后{precision}位",
			batchSetItemValueError: "批量赋值错误",
			numberMin: "输入值小于{min},已自动调整为{min}",
			numberMax: "输入值大于{max},已自动调整为{max}",
			stringMaxlength: "输入值超过{maxlength}个字符,已自动截取"
		};
		class _e {
			constructor() {
				n(this, "langConfig");
			}
			use(e) {
				this.langConfig = e;
			}
			getText(e, t) {
				let n = { ...H };
				Object.assign(n, xn.locale, this.langConfig);
				let r = n[e];
				return r ? r.replace(/{(\w+)}/g, (e, n) => t?.[n] || e) : "";
			}
		}
		class ve {
			constructor(e, t) {
				n(this, "eventBus"), n(this, "eventBrowser"), n(this, "eventTable"), n(this, "locale", new _e()), n(this, "containerElement"), n(this, "stageElement"), n(this, "canvasElement"), n(this, "overlayerElement"), n(this, "editorElement"), n(this, "emptyElement"), n(this, "contextMenuElement"), n(this, "loadingElement"), n(this, "stageWidth", 0), n(this, "stageHeight", 0), n(this, "paint"), n(this, "icons"), n(this, "domSelectionStr", ""), n(this, "textSelectionStr", ""), n(this, "textSelecting", !1), n(this, "isMouseoverTargetContainer", !1), n(this, "mousedown", !1), n(this, "isEmpty", !1), n(this, "rowResizing", !1), n(this, "columnResizing", !1), n(this, "scrollerMove", !1), n(this, "scrollerFocus", !1), n(this, "autofillMove", !1), n(this, "selectorMove", !1), n(this, "disableHoverIconClick", !1), n(this, "selectColsIng", !1), n(this, "selectRowsIng", !1), n(this, "dragHeaderIng", !1), n(this, "dragRowIng", !1), n(this, "finding", !1), n(this, "contextMenuIng", !1), n(this, "editing", !1), n(this, "loading", !1), n(this, "onlyMergeCell", !1), n(this, "selectOnlyOne", !1), n(this, "hasSelection", !1), n(this, "hasTree", !1), n(this, "scrollY", 0), n(this, "scrollX", 0), n(this, "fixedLeftWidth", 0), n(this, "fixedRightWidth", 0), n(this, "lastCenterColIndex", 0), n(this, "maxColIndex", 0), n(this, "maxRowIndex", 0), n(this, "hoverRow"), n(this, "clickCell"), n(this, "focusCell"), n(this, "currentCell"), n(this, "hoverCell"), n(this, "clickCellHeader"), n(this, "focusCellHeader"), n(this, "hoverCellHeader"), n(this, "mouseX", 0), n(this, "mouseY", 0), n(this, "body", {
					x: 0,
					y: 0,
					width: 0,
					height: 0,
					visibleHeight: 0,
					visibleWidth: 0,
					headIndex: 0,
					tailIndex: 0,
					visibleRows: [],
					renderRows: [],
					data: []
				}), n(this, "footer", {
					x: 0,
					y: 0,
					width: 0,
					height: 0,
					visibleHeight: 0,
					visibleWidth: 0,
					renderRows: []
				}), n(this, "header", {
					x: 0,
					y: 0,
					width: 0,
					height: 0,
					visibleHeight: 0,
					visibleWidth: 0,
					visibleLeafColumns: [],
					leafCellHeaders: [],
					allCellHeaders: [],
					renderLeafCellHeaders: [],
					renderCellHeaders: [],
					fixedLeftCellHeaders: [],
					fixedRightCellHeaders: [],
					renderCenterCellHeaders: []
				}), n(this, "selector", {
					enable: !1,
					xArr: [-1, -1],
					yArr: [-1, -1],
					xArrCopy: [-1, -1],
					yArrCopy: [-1, -1]
				}), n(this, "autofill", {
					enable: !1,
					xArr: [-1, -1],
					yArr: [-1, -1]
				}), n(this, "finderBar", {
					text: "",
					rowIndex: -1,
					colIndex: -1,
					type: "body"
				}), n(this, "database"), n(this, "history"), n(this, "config");
				let { containerElement: r, stageElement: i, canvasElement: a, overlayerElement: o, editorElement: s, emptyElement: c, loadingElement: l, contextMenuElement: u } = e;
				this.containerElement = r, i.tabIndex = 0, this.stageElement = i, this.canvasElement = a, this.overlayerElement = o, this.editorElement = s, this.emptyElement = c, this.loadingElement = l, this.contextMenuElement = u, this.config = new B(t.config || {}), this.eventBus = new ce(), this.eventBrowser = new se(this), this.eventTable = new ge(this), this.paint = new le(this.canvasElement), this.database = new oe(this, t), this.history = new z(this), this.icons = new he(this);
			}
			setConfig(e) {
				this.config = new B(e);
			}
			setItemValueByEditor(e, t, n, r = !0, i = !0, a = !0) {
				if (this.config.ENABLE_MERGE_CELL_LINK) {
					let i = this.database.getVirtualBodyCellByKey(e, t);
					if (i && (i.mergeRow || i.mergeCol)) {
						let { dataList: e } = i.getSpanInfo(), t = e.map((e) => ({
							...e,
							value: n
						}));
						this.database.batchSetItemValue(t, r, a);
						return;
					}
				}
				this.database.setItemValue(e, t, n, r, i, !0, a);
			}
			batchSetItemValueByEditor(e, t = !0, n = !0) {
				if (this.config.ENABLE_MERGE_CELL_LINK) {
					let r = [];
					e.forEach((e) => {
						let t = this.database.getRowIndexForRowKey(e.rowKey), n = this.database.getColIndexForKey(e.key);
						if (t === void 0 || n === void 0) return;
						let i = this.database.getVirtualBodyCell(t, n);
						if (i) {
							let { dataList: t } = i.getSpanInfo(), n = t.map((t) => ({
								...t,
								value: e.value
							}));
							r.push(...n);
						}
					}), this.database.batchSetItemValue(r, t, n);
				} else this.database.batchSetItemValue(e, t, n);
			}
			setFocusCell(e) {
				if (this.focusCell !== e) {
					if (this.focusCell?.rowKey !== e.rowKey) {
						this.currentCell = e, this.emit("rowFocusChange", e);
						let t = {
							rowIndex: e.rowIndex,
							rowKey: e.rowKey,
							row: e.row
						};
						this.emit("currentRowChange", t);
					}
					this.focusCell = e, this.emit("cellFocusChange", e);
				}
			}
			clearSelector() {
				this.selector.enable = !1, this.selector.xArr = [-1, -1], this.selector.yArr = [-1, -1], this.emit("clearSelector");
			}
			clearSelectorCopy() {
				this.selector.xArrCopy = [-1, -1], this.selector.yArrCopy = [-1, -1];
			}
			clearAutofill() {
				this.autofill = {
					enable: !1,
					xArr: [-1, -1],
					yArr: [-1, -1]
				};
			}
			getSelectedData() {
				var e;
				let t = [], n = this.selector.yArr, r = this.selector.xArr, i = "";
				for (let a = 0; a <= n[1] - n[0]; a++) {
					let o = [];
					for (let t = 0; t <= r[1] - r[0]; t++) {
						let i = a + n[0], s = t + r[0], c = this.database.getVirtualBodyCell(i, s);
						if (c) {
							if ((e = c?.column) != null && e.formatterSelectorValue) {
								let { row: e, rowIndex: t, colIndex: n, column: r } = c, i = c.column.formatterSelectorValue({
									row: e,
									rowIndex: t,
									colIndex: n,
									column: r,
									value: c.getValue()
								});
								o.push(i);
							} else c.selectorCellValueType === "displayText" ? o.push(c.displayText) : o.push(c.getValue());
						}
					}
					i += `${o.join("	")}\r`, t.push(o);
				}
				return i = i ? i.replace(/\r$/, "") : " ", {
					xArr: r,
					yArr: n,
					text: i,
					value: t
				};
			}
			setScroll(e, t) {
				let n = Math.floor(e), r = this.body.width - this.body.visibleWidth;
				n < 0 ? n = 0 : n > r && (n = r);
				let i = Math.floor(t), a = this.body.height - this.body.visibleHeight;
				this.config.FOOTER_FIXED || (a = this.body.height + this.footer.height - this.body.visibleHeight), i < 0 ? i = 0 : i > a && (i = a), this.emit("setScroll", n, i);
			}
			setScrollX(e) {
				let t = Math.floor(e), n = this.body.width - this.body.visibleWidth;
				t < 0 ? t = 0 : t > n && (t = n), this.emit("setScrollX", t);
			}
			setScrollY(e) {
				let t = Math.floor(e), n = 0;
				this.config.FOOTER_FIXED || (n = this.footer.height);
				let r = this.body.height - this.body.visibleHeight + n;
				t < 0 ? t = 0 : t > r && (t = r), this.emit("setScrollY", t);
			}
			startAdjustPosition(e) {
				this.emit("startAdjustPosition", e);
			}
			stopAdjustPosition() {
				this.emit("stopAdjustPosition");
			}
			isTarget(e) {
				return !!this.containerElement.contains(e.target);
			}
			getOffset(e) {
				let { left: t, top: n } = this.containerElement.getBoundingClientRect();
				return {
					offsetX: e.clientX - t,
					offsetY: e.clientY - n
				};
			}
			hasEvent(e) {
				return this.eventBus.has(e);
			}
			on(e, t) {
				this.eventBus.on(e, t);
			}
			once(e, t) {
				this.eventBus.once(e, t);
			}
			off(e, t) {
				this.eventBus.off(e, t);
			}
			emit(e, ...t) {
				this.eventBus.emit(e, ...t);
			}
			destroy() {
				this.eventTable.destroy(), this.eventBrowser.destroy(), this.eventBus.destroy();
			}
		}
		function ye(e, t, n, r = t, i = 30) {
			if (e <= 0 || t <= 0 || n <= 0 || r <= 0) return 0;
			let a = Math.floor(t / n * r);
			return a < i ? Math.min(i, r) : a > r ? 0 : a;
		}
		function be(e) {
			return e.shiftKey ? Math.abs(e.deltaX) > Math.abs(e.deltaY) ? e.deltaX : e.deltaY : e.deltaX;
		}
		class xe {
			constructor(e, t) {
				n(this, "ctx"), n(this, "type"), n(this, "isFocus", !1), n(this, "trackX", 0), n(this, "trackY", 0), n(this, "trackWidth", 0), n(this, "trackHeight", 0), n(this, "splitPoints", []), n(this, "barX", 0), n(this, "barY", 0), n(this, "barWidth", 0), n(this, "barHeight", 0), n(this, "distance", 0), n(this, "visibleDistance", 0), n(this, "thumbTrackDistance", 0), n(this, "thumbTravelDistance", 0), n(this, "clientX", 0), n(this, "clientY", 0), n(this, "dragStart", 0), n(this, "innerVisible", !1), n(this, "innerShowTimer", 0), n(this, "isDragging", !1), n(this, "scroll", 0), this.ctx = e, this.type = t, this.scroll = this.type === "vertical" ? this.ctx.scrollY : this.ctx.scrollX;
			}
			onWheel(e) {
				this.updateScroll(e);
			}
			onTouchmove(e) {
				let { clientY: t, clientX: n } = e.touches[0], r = t - this.clientY, i = n - this.clientX, a = 0;
				this.type === "vertical" ? (a = Math.max(0, Math.min(this.dragStart - r, this.distance)), this.hasScrollbar() && !(a === 0 && r > 0 || a === this.distance && r < 0) && e.preventDefault()) : this.type === "horizontal" && (a = Math.max(0, Math.min(this.dragStart - i, this.distance))), this.scroll = a;
			}
			onTouchstart(e) {
				let { clientY: t, clientX: n } = e.touches[0];
				this.clientX = n, this.clientY = t, this.dragStart = this.scroll;
			}
			onMouseDown(e) {
				if (!(e.target instanceof Element) || !this.ctx.isTarget(e)) return;
				if (this.ctx.stageElement.style.cursor === "row-resize" || this.ctx.stageElement.style.cursor === "col-resize") return !0;
				let { clientX: t, clientY: n } = e, { offsetX: r, offsetY: i } = this.ctx.getOffset(e);
				if ((t != this.clientX || n != this.clientY) && !(this.isInnerMode() && !this.canInteractWithScrollbar())) {
					if (this.isOnScrollbar(r, i)) this.clientX = t, this.clientY = n, this.isDragging = !0, this.ctx.scrollerMove = !0, this.isFocus = !0, this.dragStart = this.scroll, e.preventDefault();
					else if (this.isOnTrack(r, i)) {
						let e = 0;
						e = this.type === "vertical" ? (i - this.ctx.header.height - this.barHeight / 2) / this.thumbTravelDistance * this.distance : (r - this.barWidth / 2) / this.thumbTravelDistance * this.distance, this.scroll = Math.max(0, Math.min(e, this.distance));
					}
				}
			}
			onMouseUp() {
				this.isDragging = !1, this.isFocus = !1, this.clientX = 0, this.clientY = 0;
			}
			onMouseMove(e, t) {
				let { clientX: n, clientY: r, buttons: i } = e, { offsetX: a, offsetY: o } = this.ctx.getOffset(e), s = !1;
				if (j(this.ctx.config, t) ? this.startInnerShowTimer() : s = this.hideInnerScrollbar(), this.canInteractWithScrollbar() && (this.isOnScrollbar(a, o) || this.isOnTrack(a, o)) && t ? (this.isFocus = !0, this.ctx.stageElement.style.cursor = "pointer") : this.isFocus = !1, i === 0 || n == this.clientX && r == this.clientY) return s;
				let c = 0;
				if (c = this.type === "horizontal" ? n - this.clientX : r - this.clientY, this.isDragging && c !== 0) {
					let e = 0;
					e = (this.type, this.dragStart + c / this.thumbTravelDistance * this.distance), this.scroll = Math.max(0, Math.min(e, this.distance));
				}
				return s;
			}
			isPointInElement(e, t, n, r, i, a) {
				return e >= n && e <= n + i && t >= r && t <= r + a;
			}
			hasScrollbar() {
				return this.type === "vertical" ? this.barHeight > 0 : this.type === "horizontal" && this.barWidth > 0;
			}
			isOnScrollbar(e, t) {
				return this.isPointInElement(e, t, this.barX, this.barY, this.barWidth, this.barHeight);
			}
			isOnTrack(e, t) {
				return this.isPointInElement(e, t, this.trackX, this.trackY, this.trackWidth, this.trackHeight);
			}
			isInnerMode() {
				return T(this.ctx.config);
			}
			shouldDrawInnerScrollbar() {
				return M(this.ctx.config, {
					innerVisible: this.innerVisible,
					isFocus: this.isFocus,
					isDragging: this.isDragging
				});
			}
			canInteractWithScrollbar() {
				return !this.isInnerMode() || this.shouldDrawInnerScrollbar();
			}
			startInnerShowTimer() {
				if (!this.isInnerMode() || this.innerVisible || this.innerShowTimer) return;
				let e = Math.max(0, this.ctx.config.SCROLLBAR_SHOW_DELAY || 0);
				this.innerShowTimer = window.setTimeout(() => {
					this.innerVisible = !0, this.innerShowTimer = 0, this.ctx.emit("draw");
				}, e);
			}
			cancelInnerShowTimer() {
				this.innerShowTimer &&= (clearTimeout(this.innerShowTimer), 0);
			}
			hideInnerScrollbar() {
				if (!this.isInnerMode() || this.isDragging) return !1;
				let e = this.innerVisible || this.isFocus;
				return this.cancelInnerShowTimer(), this.innerVisible = !1, this.isFocus = !1, e;
			}
			updateScroll(e) {
				let t = e.deltaY;
				if (this.type === "vertical" && e.shiftKey === !1) this.hasScrollbar() && !(this.scroll === 0 && t < 0 || this.scroll === this.distance && t > 0) && e.preventDefault(), this.scroll = Math.max(0, Math.min(this.scroll + t, this.distance));
				else if (this.type === "horizontal") {
					let t = be(e), n = this.hasScrollbar();
					t !== 0 && n && !(this.scroll === 0 && t < 0 || this.scroll === this.distance && t > 0) && e.preventDefault(), this.scroll = Math.max(0, Math.min(this.scroll + t, this.distance));
				}
			}
			updatedSize() {
				let { body: e, header: t, stageHeight: n, stageWidth: r, config: { SCROLLER_SIZE: i = 0, BORDER: a } } = this.ctx, o = E(this.ctx.config), s = D(this.ctx.config), c = r, l = n, u = t.height, d = t.width, f = e.height, p = this.ctx.footer.height, m = l - o - u, h = c - o, g = Math.max(0, f - m + p), _ = Math.max(0, d - h), v = k(this.ctx.config);
				if (this.type === "vertical") {
					this.visibleDistance = m, this.distance = g;
					let e = O(this.ctx.config, _ > 0);
					this.thumbTrackDistance = Math.max(0, this.visibleDistance - e), this.trackX = c - s, this.trackY = 0, this.splitPoints = [
						this.trackX,
						u,
						this.trackX + s,
						u
					], this.trackWidth = s, this.trackHeight = Math.max(0, l - e), this.barX = this.trackX - 1 + (s - i) / 2, this.barWidth = i, this.barHeight = ye(this.distance, this.visibleDistance, f + p, this.thumbTrackDistance), this.thumbTravelDistance = Math.max(0, this.thumbTrackDistance - this.barHeight - v);
					let t = this.distance ? this.scroll / this.distance : 0;
					this.barY = u + t * this.thumbTravelDistance, this.scroll = Math.max(0, Math.min(this.scroll, this.distance));
				} else {
					this.visibleDistance = h, this.distance = _;
					let e = O(this.ctx.config, g > 0);
					this.thumbTrackDistance = Math.max(0, this.visibleDistance - e), this.splitPoints = [
						c - s,
						l - s,
						c - s,
						l
					];
					let t = L(a) ? 0 : .5;
					this.trackX = 0, this.trackY = l - s + t, this.trackWidth = Math.max(0, c - e), this.trackHeight = s, this.barWidth = ye(this.distance, this.visibleDistance, d, this.thumbTrackDistance), this.thumbTravelDistance = Math.max(0, this.thumbTrackDistance - this.barWidth - v), this.barY = this.trackY - 1 + (s - i) / 2, this.barHeight = i;
					let n = this.distance ? this.scroll / this.distance : 0;
					this.barX = n * this.thumbTravelDistance, this.scroll = Math.max(0, Math.min(this.scroll, this.distance));
				}
			}
			draw() {
				let { config: { SCROLLER_FOCUS_COLOR: e, SCROLLER_COLOR: t, BORDER_COLOR: n, BORDER: r, SCROLLER_TRACK_COLOR: i } } = this.ctx;
				if (this.updatedSize(), this.isInnerMode() && !this.shouldDrawInnerScrollbar()) return this.isFocus || this.isDragging;
				let a = A(this.ctx.config), o = ee(this.ctx.config), s = a && L(r) ? n : "transparent", c = this.hasScrollbar(), l = R(r, c);
				return o && l ? (this.ctx.paint.drawRect(this.trackX, this.trackY, this.trackWidth, this.trackHeight, { fillColor: i }), this.drawTrackHeaderBackground(), a && (this.ctx.paint.drawRect(this.trackX, this.trackY, this.trackWidth, this.trackHeight, { borderColor: s }), this.drawRightBoundaryBorder())) : o && this.drawInactiveTrackBackground(), c && this.ctx.paint.drawRect(this.barX, this.barY, this.barWidth, this.barHeight, {
					fillColor: this.isFocus || this.isDragging ? e : t,
					radius: 4
				}), a && l && this.splitPoints.length > 0 && this.ctx.paint.drawLine(this.splitPoints, {
					borderColor: s,
					borderWidth: 1
				}), this.isFocus || this.isDragging;
			}
			drawTrackHeaderBackground() {
				if (this.type !== "vertical" || this.trackWidth <= 0) return;
				let { header: e, config: { HEADER_BG_COLOR: t } } = this.ctx, n = Math.max(0, Math.min(e.height, this.trackHeight));
				n <= 0 || this.ctx.paint.drawRect(this.trackX, this.trackY, this.trackWidth, n, { fillColor: t });
			}
			drawInactiveTrackBackground() {
				if (this.type !== "vertical") return;
				let { footer: e, header: t, scrollY: n, stageHeight: r, config: { BODY_BG_COLOR: i, FOOTER_BG_COLOR: a, FOOTER_FIXED: o, FOOTER_POSITION: s, HEADER_BG_COLOR: c, SCROLLER_TRACK_SIZE: l = 0 } } = this.ctx, u = Math.max(0, r - l);
				if (u <= 0 || this.trackWidth <= 0 || (this.ctx.paint.drawRect(this.trackX, 0, this.trackWidth, u, { fillColor: i }), this.ctx.paint.drawRect(this.trackX, 0, this.trackWidth, t.height, { fillColor: c }), !e.height)) return;
				let d = o ? s === "top" ? t.height : u - e.height : e.y - n, f = Math.max(t.height, Math.min(d, u)), p = Math.max(0, Math.min(e.height, u - f));
				p > 0 && this.ctx.paint.drawRect(this.trackX, f, this.trackWidth, p, { fillColor: a });
			}
			drawRightBoundaryBorder() {
				let { stageHeight: e, config: { BORDER: t, BORDER_COLOR: n, SCROLLER_TRACK_SIZE: r = 0 } } = this.ctx;
				this.type;
			}
		}
		class Se {
			constructor(e) {
				n(this, "ctx"), n(this, "verticalScrollbar"), n(this, "horizontalScrollbar"), n(this, "mousedownHeader", !1), n(this, "adjustPositionX", ""), n(this, "adjustPositionY", ""), n(this, "timerX", 0), n(this, "timerY", 0), this.ctx = e, this.verticalScrollbar = new xe(e, "vertical"), this.horizontalScrollbar = new xe(e, "horizontal"), this.ctx.on("wheel", (e) => this.onWheel(e)), this.ctx.on("mousedown", (e) => this.onMouseDown(e)), this.ctx.on("mousemove", (e) => this.onMouseMove(e)), this.ctx.on("mouseup", () => this.onMouseUp()), this.ctx.on("mouseout", (e) => this.onMouseOut(e)), this.ctx.on("touchmove", (e) => this.onTouchmove(e)), this.ctx.on("touchstart", (e) => {
					this.onTouchstart(e);
				}), this.ctx.on("setScroll", (e, t) => {
					this.setScroll(e, t);
				}), this.ctx.on("setScrollX", (e) => {
					this.setScrollX(e);
				}), this.ctx.on("setScrollY", (e) => {
					this.setScrollY(e);
				}), this.ctx.on("scrollToIndex", (e, t, n = "body") => {
					this.scrollToIndex(e, t, n);
				}), this.ctx.on("cellHeaderMousedown", () => {
					this.mousedownHeader = !0;
				}), this.ctx.on("startAdjustPosition", (e) => {
					this.startAdjustPosition(e);
				}), this.ctx.on("stopAdjustPosition", () => {
					this.stopAdjustPosition();
				});
			}
			onWheel(e) {
				this.verticalScrollbar.onWheel(e), this.horizontalScrollbar.onWheel(e), this.draw();
			}
			onTouchmove(e) {
				this.verticalScrollbar.onTouchmove(e), this.horizontalScrollbar.onTouchmove(e), this.draw();
			}
			onTouchstart(e) {
				this.verticalScrollbar.onTouchstart(e), this.horizontalScrollbar.onTouchstart(e), this.draw();
			}
			onMouseDown(e) {
				this.verticalScrollbar.onMouseDown(e), this.horizontalScrollbar.onMouseDown(e), this.draw();
			}
			onMouseMove(e) {
				let t = this.ctx.containerElement.getBoundingClientRect(), n = e.clientX >= t.left && e.clientX <= t.right && e.clientY >= t.top && e.clientY <= t.bottom, r = this.verticalScrollbar.onMouseMove(e, n), i = this.horizontalScrollbar.onMouseMove(e, n);
				r || i ? this.ctx.emit("draw") : this.draw();
			}
			onMouseUp() {
				this.mousedownHeader = !1, this.verticalScrollbar.onMouseUp(), this.horizontalScrollbar.onMouseUp(), this.ctx.scrollerMove = !1;
			}
			onMouseOut(e) {
				this.ctx.containerElement.contains(e.relatedTarget) || (this.verticalScrollbar.hideInnerScrollbar(), this.horizontalScrollbar.hideInnerScrollbar(), this.ctx.emit("draw"));
			}
			draw() {
				let e = this.verticalScrollbar.draw(), t = this.horizontalScrollbar.draw();
				this.ctx.scrollerFocus = e || t;
				let n = Math.floor(this.horizontalScrollbar.scroll), r = Math.floor(this.verticalScrollbar.scroll);
				(n !== this.ctx.scrollX || r !== this.ctx.scrollY) && (this.ctx.emit("onScroll", n, r), n !== this.ctx.scrollX && this.ctx.emit("onScrollX", n), r !== this.ctx.scrollY && this.ctx.emit("onScrollY", r), this.ctx.scrollX = n, this.ctx.scrollY = r, this.ctx.emit("draw"));
			}
			setScroll(e, t) {
				this.horizontalScrollbar.scroll = e, this.verticalScrollbar.scroll = t, this.ctx.emit("draw"), this.ctx.emit("onScroll", e, t);
			}
			setScrollX(e) {
				this.horizontalScrollbar.scroll = e, this.ctx.emit("draw");
			}
			setScrollY(e) {
				this.verticalScrollbar.scroll = e, this.ctx.emit("draw");
			}
			scrollToColkey(e) {
				let { header: t } = this.ctx, n = t.leafCellHeaders.find((t) => t.key === e);
				n && this.setScrollX(n.x - t.visibleWidth / 2);
			}
			scrollToColIndex(e) {
				let { header: t } = this.ctx, n = t.leafCellHeaders.find((t) => t.colIndex === e);
				n && this.setScrollX(n.x - t.visibleWidth / 2);
			}
			scrollToRowIndex(e) {
				let { body: t, database: n } = this.ctx, { top: r } = n.getPositionForRowIndex(e);
				this.setScrollY(r - t.visibleHeight / 2);
			}
			scrollToFooterRowIndex(e) {
				let { body: t, config: n, footer: r } = this.ctx;
				if (n.FOOTER_FIXED) return;
				let i = r.renderRows.find((t) => t.rowIndex === e);
				i && this.setScrollY(i.y - t.y - (t.visibleHeight - i.height) / 2);
			}
			scrollToIndex(e, t, n = "body") {
				n === "body" ? this.scrollToRowIndex(e) : n === "footer" && this.scrollToFooterRowIndex(e), this.scrollToColIndex(t);
			}
			scrollToRowKey(e) {
				let { body: t, database: n } = this.ctx, r = n.getRowIndexForRowKey(e);
				if (r === void 0) return;
				let { top: i } = n.getPositionForRowIndex(r);
				this.setScrollY(i - t.visibleHeight / 2);
			}
			startAdjustPosition(e) {
				let { offsetX: t, offsetY: n } = this.ctx.getOffset(e), r = "", i = "";
				if (this.ctx.focusCell?.fixed !== "left" && t < this.ctx.fixedLeftWidth ? r = "left" : this.ctx.focusCell?.fixed !== "right" && t > this.ctx.body.visibleWidth - this.ctx.fixedRightWidth ? r = "right" : (r = "", this.stopAdjustPosition(!0, !1)), !this.mousedownHeader && n < this.ctx.header.visibleHeight ? i = "top" : n > this.ctx.header.visibleHeight + this.ctx.body.visibleHeight ? i = "bottom" : (i = "", this.stopAdjustPosition(!1, !0)), r && this.adjustPositionX !== r) {
					this.adjustPositionX = r;
					let e = 10 * (r === "left" ? -1 : 1);
					this.timerX &&= (clearInterval(this.timerX), 0), this.timerX = setInterval(() => {
						e *= 1.5;
						let { scrollX: t } = this.ctx, n = t + e;
						(n < 0 || n > this.ctx.body.width) && (clearInterval(this.timerX), this.timerX = 0), this.ctx.setScrollX(n);
					}, 100);
				}
				if (i && this.adjustPositionY !== i) {
					this.adjustPositionY = i;
					let e = 10 * (i === "top" ? -1 : 1);
					this.timerY &&= (clearInterval(this.timerY), 0), this.timerY = setInterval(() => {
						e *= 1.5;
						let { scrollY: t } = this.ctx, n = t + e;
						(n < 0 || n > this.ctx.body.height) && (clearInterval(this.timerY), this.timerY = 0), this.ctx.setScrollY(n);
					}, 100);
				}
			}
			stopAdjustPosition(e = !0, t = !0) {
				e && (this.adjustPositionX = "", this.timerX &&= (clearInterval(this.timerX), 0)), t && (this.adjustPositionY = "", this.timerY &&= (clearInterval(this.timerY), 0));
			}
		}
		class Ce extends te {
			constructor(e, t, r, a, o, s, c) {
				super(e, r, a, o, s, "header", c.fixed), n(this, "align"), n(this, "hideHeaderSelection", !1), n(this, "verticalAlign", "middle"), n(this, "fixed"), n(this, "minWidth"), n(this, "maxWidth"), n(this, "formatterFinderHeaderValue"), n(this, "widthFillDisable"), n(this, "type"), n(this, "operation", !1), n(this, "editorType"), n(this, "level"), n(this, "text"), n(this, "hide", !1), n(this, "displayText", ""), n(this, "colspan"), n(this, "rowspan"), n(this, "row"), n(this, "key"), n(this, "required", !1), n(this, "readonly", !1), n(this, "ellipsis", !1), n(this, "overflowTooltipShow", !0), n(this, "children", []), n(this, "column"), n(this, "colIndex"), n(this, "rowKey"), n(this, "rules"), n(this, "hasChildren"), n(this, "render"), n(this, "style", {}), n(this, "drawX", 0), n(this, "drawY", 0), n(this, "sortIconName", "sort-default"), n(this, "sortAscIconName", "sort-asc"), n(this, "sortDescIconName", "sort-desc"), n(this, "visibleWidth", 0), n(this, "visibleHeight", 0), n(this, "maxLineClampHeader", "auto"), n(this, "domDataset", {}), n(this, "textOffsetRight", 0), n(this, "textOffsetLeft", 0), n(this, "textInfo"), n(this, "drawTextX", 0), n(this, "drawTextY", 0), n(this, "drawTextWidth", 0), n(this, "drawTextHeight", 0), n(this, "drawCellBgColor", ""), n(this, "drawTextColor", ""), n(this, "drawTextFont", ""), n(this, "drawSelectionImageX", 0), n(this, "drawSelectionImageY", 0), n(this, "drawSelectionImageWidth", 0), n(this, "drawSelectionImageHeight", 0), n(this, "drawSelectionImageName", ""), n(this, "drawSelectionImageSource"), n(this, "drawSortImageX", 0), n(this, "drawSortImageY", 0), n(this, "drawSortImageWidth", 0), n(this, "drawSortImageHeight", 0), n(this, "drawSortImageName", ""), n(this, "drawSortImageSource"), n(this, "renderHeaderType", "default"), this.ctx = e, this.x = r, this.y = a, this.width = o, this.height = s, this.visibleWidth = o, this.visibleHeight = s, this.colIndex = t, this.key = c.key, this.minWidth = c.minWidth, this.maxWidth = c.maxWidth, this.formatterFinderHeaderValue = c.formatterFinderHeaderValue, this.hide = (typeof c.hide == "function" ? c.hide(c) : c.hide) || !1, this.type = c.type || "", this.editorType = c.editorType || "text", this.hideHeaderSelection = c.hideHeaderSelection || !1, this.align = c.headerAlign || c.align || this.ctx.config.COLUMNS_ALIGN, this.verticalAlign = c.headerVerticalAlign || c.verticalAlign || this.ctx.config.COLUMNS_VERTICAL_ALIGN, this.fixed = c.fixed || "", this.level = c.level || 0, this.operation = c.operation || !1, this.text = c.title, this.column = c, this.colspan = c.colspan || 1, this.widthFillDisable = c.widthFillDisable || !1, this.rowspan = c.rowspan || 1, this.rules = c.rules, this.readonly = typeof c.readonly == "boolean" && c.readonly, this.required = c.required || !1, this.sortIconName = c.sortIconName || "sort-default", this.sortAscIconName = c.sortAscIconName || "sort-asc", this.sortDescIconName = c.sortDescIconName || "sort-desc", this.rowKey = i(), this.overflowTooltipShow = c.overflowTooltipHeaderShow !== !1, this.hasChildren = c.children && c.children.length > 0 || !1, this.render = c.renderHeader, this.maxLineClampHeader = c.maxLineClampHeader || "auto", this.renderHeaderType = c.renderHeaderType || "default";
			}
			isVerticalVisible() {
				let { stageHeight: e } = this.ctx, t = e;
				return !(this.y + this.height <= 0 || this.y >= t);
			}
			updateStyle() {
				this.style = this.getOverlayerViewsStyle();
			}
			updateContainer() {
				let { HEADER_CELL_STYLE_METHOD: e, HEADER_BG_COLOR: t, HEADER_TEXT_COLOR: n } = this.ctx.config, r = t, i = n;
				if (typeof e == "function") {
					let { backgroundColor: t, color: n, font: a } = e({
						colIndex: this.colIndex,
						column: this.column
					}) || {};
					t && (r = t), n && (i = n), a && (this.drawTextFont = a);
				}
				let { colKey: a, type: o } = this.ctx.finderBar;
				o === "header" && a === this.key && (r = this.ctx.config.FINDER_CELL_BG_COLOR), this.drawCellBgColor = r, this.drawTextColor = i;
			}
			updateOffset() {
				this.column.sortBy && (this.textOffsetRight = 16), this.required && (this.textOffsetLeft = 12);
			}
			update() {
				this.updateContainer(), this.updateOffset(), this.displayText = this.getText(), this.drawX = this.getDrawX(), this.drawY = this.getDrawY(), this.drawTextX = this.drawX, this.drawTextY = this.drawY, this.drawTextWidth = this.width, this.drawTextHeight = this.height, this.updateSelection(), this.updateStyle();
			}
			draw() {
				this.drawEdge(), this.drawText(), this.drawBg(), this.updateSortIcon(), this.drawImages(), this.drawRequired();
			}
			drawImages() {
				this.getImages().forEach((e) => {
					e.visible && e.source && this.ctx.paint.drawImage(e.source, e.x, e.y, e.width, e.height);
				});
			}
			getFinderText() {
				let e = this.displayText;
				if (typeof this.formatterFinderHeaderValue != "function") return e;
				let t = this.formatterFinderHeaderValue({
					rowIndex: this.level,
					colIndex: this.colIndex,
					column: this.column,
					value: this.text,
					displayText: e
				});
				return t == null ? e : `${t}`;
			}
			drawEdge() {
				let { paint: e, config: t } = this.ctx, n = N(t), r = F(t.BORDER) && n === void 0;
				e.drawRect(this.drawX, this.drawY, this.width, this.height, {
					borderColor: r ? t.BORDER_COLOR : void 0,
					fillColor: this.drawCellBgColor
				}), r || (this.drawColumnDivider(n), this.drawHorizontalDivider());
			}
			drawColumnDivider(e) {
				let { paint: t, header: n, config: r, fixedLeftWidth: i, fixedRightWidth: a, scrollX: o, stageWidth: s } = this.ctx;
				if (e === void 0) return;
				let c = o > 0 ? i : void 0, l = o < Math.floor(n.width - s - 1) ? n.width - a + E(r) : void 0, u = I(this.fixed, this.x, this.width, n.width, {
					fixedLeftEnd: c,
					fixedRightStart: l
				});
				if (!u) return;
				let d = u === "left" ? this.drawX : this.drawX + this.visibleWidth;
				t.drawLine([
					d,
					this.drawY,
					d,
					this.drawY + this.visibleHeight
				], {
					borderColor: e,
					borderWidth: 1
				});
			}
			drawHorizontalDivider() {
				let { paint: e, config: t, header: n } = this.ctx;
				if (!F(t.BORDER) || this.y + this.height >= n.height) return;
				let r = this.drawY + this.visibleHeight;
				e.drawLine([
					this.drawX,
					r,
					this.drawX + this.visibleWidth,
					r
				], {
					borderColor: t.BORDER_COLOR,
					borderWidth: 1
				});
			}
			drawText() {
				let { paint: e, config: { HEADER_FONT: t, CELL_PADDING: n } } = this.ctx, r = `${this.displayText}_${this.drawTextWidth}_${this.drawTextFont}`;
				this.ellipsis = e.drawText(this.displayText, this.drawTextX, this.drawTextY, this.drawTextWidth, this.drawTextHeight, {
					font: this.drawTextFont || t,
					padding: n,
					color: this.drawTextColor,
					align: this.align,
					verticalAlign: this.verticalAlign,
					maxLineClamp: this.maxLineClampHeader,
					offsetRight: this.textOffsetRight,
					offsetLeft: this.textOffsetLeft,
					cacheTextKey: r,
					textCallback: (e) => {
						this.textInfo = e;
					},
					layoutCallback: (e) => {
						this.ctx.emit("registerTextLayout", `${this.cellType}-${this.colIndex}-${this.level}`, e);
					}
				});
			}
			drawRequired() {
				if (!this.required || !this.textInfo) return;
				let { left: e, top: t, height: n } = this.textInfo, { paint: r, config: { REQUIRED_COLOR: i } } = this.ctx;
				r.drawText("*", e - 18, t + (n - 12) / 2, 24, 24, {
					color: i,
					font: "18px Arial",
					align: "center",
					verticalAlign: "middle",
					padding: 0
				});
			}
			drawBg() {
				if (this.ctx.dragHeaderIng) return;
				let { ENABLE_SELECTOR: e, ENABLE_SELECTOR_SINGLE: t } = this.ctx.config, n = -1, r = -1;
				if (this.ctx.focusCellHeader && (n = this.ctx.focusCellHeader.colIndex, r = this.ctx.focusCellHeader.colIndex + this.ctx.focusCellHeader.colspan - 1), e && !t) {
					let { xArr: e } = this.ctx.selector;
					n = e[0], r = e[1];
				}
				let i = this.colspan + this.colIndex - 1;
				this.colIndex >= n && this.colIndex <= r && i <= r && this.ctx.paint.drawRect(this.drawX, this.drawY, this.width, this.height, {
					borderColor: "transparent",
					fillColor: this.ctx.config.SELECT_ROW_COL_BG_COLOR || "transparent"
				});
			}
			updateSelection() {
				if ([
					"index-selection",
					"selection",
					"selection-tree",
					"tree-selection"
				].includes(this.type)) {
					let { indeterminate: e, check: t, selectable: n } = this.ctx.database.getCheckedState(), { CHECKBOX_SIZE: r = 0, CELL_PADDING: i } = this.ctx.config, a = this.drawX + (this.width - r) / 2, o = this.drawY + (this.height - r) / 2;
					this.drawTextX = a + r - i / 2, this.drawTextWidth = this.drawX + this.visibleWidth - this.drawTextX, (this.align === "left" || this.align === "right") && (a = this.drawX + i, this.drawTextX = a + r - i / 2, this.drawTextWidth = this.drawX + this.visibleWidth - this.drawTextX), this.verticalAlign === "top" ? o = this.drawY + i / 2 : this.verticalAlign === "bottom" && (o = this.drawY + this.height - r - i / 2), this.column.dragRow && (a += this.ctx.config.DRAG_ROW_ICON_SIZE, this.drawTextX += this.ctx.config.DRAG_ROW_ICON_SIZE, this.drawTextWidth -= this.ctx.config.DRAG_ROW_ICON_SIZE);
					let s = this.ctx.icons.get("checkbox-uncheck"), c = "checkbox-uncheck";
					e ? (s = this.ctx.icons.get("checkbox-indeterminate"), c = "checkbox-indeterminate") : t && n ? (s = this.ctx.icons.get("checkbox-check"), c = "checkbox-check") : t && !n ? (s = this.ctx.icons.get("checkbox-check-disabled"), c = "checkbox-check-disabled") : !t && n ? (s = this.ctx.icons.get("checkbox-uncheck"), c = "checkbox-uncheck") : (s = this.ctx.icons.get("checkbox-disabled"), c = "checkbox-disabled");
					let l = new ne(c, a, o, r, r, s);
					l.setVisible(!this.hideHeaderSelection), this.setImage("selection", l);
				}
			}
			updateSortIcon() {
				if (!this.column.sortBy || !this.textInfo) return;
				let { right: e, top: t, height: n } = this.textInfo, r = e + 4, i = t + (n - 16) / 2, a = this.sortIconName, o = this.ctx.database.getSortState(this.key);
				o.direction === "asc" ? a = this.sortAscIconName : o.direction === "desc" && (a = this.sortDescIconName);
				let s = this.ctx.icons.get(a), c = new ne(a, r, i, 16, 16, s);
				this.setImage("sort", c);
			}
			getText() {
				return this.render && this.renderHeaderType === "default" || [
					"",
					null,
					void 0
				].includes(this.text) ? "" : `${this.text}`;
			}
			getOverlayerViewsStyle() {
				let e = "";
				return e = this.fixed === "left" ? `${this.drawX}px` : this.fixed === "right" ? `${this.drawX - (this.ctx.stageWidth - this.ctx.fixedRightWidth)}px` : `${this.drawX - this.ctx.fixedLeftWidth}px`, {
					position: "absolute",
					overflow: "hidden",
					left: e,
					top: `${this.drawY + 1}px`,
					width: `${this.width}px`,
					height: `${this.height - 2}px`,
					pointerEvents: "initial",
					userSelect: "none"
				};
			}
		}
		class we {
			constructor(e, t) {
				n(this, "root"), n(this, "key"), n(this, "childrenKey"), this.root = e, this.key = t?.key || "key", this.childrenKey = t?.childrenKey || "children";
			}
			getTree() {
				return this.root;
			}
			treeMove(e, t, n) {
				if (n === "none" || String(e) === String(t)) return;
				let r = this.findNodeWithParent(this.root, e);
				if (!r) return;
				let i = this.findNodeWithParent(this.root, t);
				if (!i) return;
				let { parent: a, index: o, node: s } = r, { parent: c, index: l, node: u } = i;
				if (this.isDescendant(s, t)) return;
				let d = a ? a[this.childrenKey] : this.root;
				if (d.splice(o, 1), a && d.length === 0 && delete a[this.childrenKey], n === "inside") {
					Array.isArray(u[this.childrenKey]) || (u[this.childrenKey] = []), u[this.childrenKey].push(s);
					return;
				}
				let f = c ? c[this.childrenKey] : this.root, p = l;
				a === c && o < l && p--, n === "after" && p++, f.splice(p, 0, s);
			}
			getNodeKey(e) {
				return typeof this.key == "function" ? this.key(e) : e[this.key];
			}
			isSameKey(e, t) {
				return e == null || t == null ? !1 : String(e) === String(t);
			}
			findNodeWithParent(e, t, n = null) {
				for (let r = 0; r < e.length; r++) {
					let i = e[r];
					if (this.isSameKey(this.getNodeKey(i), t)) return {
						parent: n,
						index: r,
						node: i
					};
					let a = i[this.childrenKey];
					if (Array.isArray(a)) {
						let e = this.findNodeWithParent(a, t, i);
						if (e) return e;
					}
				}
				return null;
			}
			isDescendant(e, t) {
				let n = e[this.childrenKey];
				if (!Array.isArray(n)) return !1;
				for (let e of n) if (this.isSameKey(this.getNodeKey(e), t) || this.isDescendant(e, t)) return !0;
				return !1;
			}
		}
		class Te {
			constructor(e) {
				n(this, "ctx"), n(this, "x", 0), n(this, "y", 0), n(this, "width", 0), n(this, "height", 0), n(this, "resizeTarget", null), n(this, "dragTarget", null), n(this, "dragingCell"), n(this, "dragCellDiff", 0), n(this, "resizeNum", 0), n(this, "isResizing", !1), n(this, "clientX", 0), n(this, "resizeDiff", 0), n(this, "columnIndex", 0), n(this, "isMouseDown", !1), n(this, "columns"), n(this, "visibleColumns"), n(this, "visibleLeafColumns", []), n(this, "visibleHeight", 0), n(this, "visibleWidth", 0), n(this, "allCellHeaders", []), n(this, "leafCellHeaders", []), n(this, "renderLeafCellHeaders", []), n(this, "fixedLeftCellHeaders", []), n(this, "centerCellHeaders", []), n(this, "fixedRightCellHeaders", []), n(this, "renderCenterCellHeaders", []), n(this, "renderFixedCellHeaders", []), this.ctx = e, this.ctx.on("resetHeader", a(() => {
					this.init(), this.ctx.clearSelector(), this.ctx.emit("draw");
				}, 100)), this.init(), this.initSelection(), this.initSort(), this.initResizeColumn(), this.initDragColumn();
			}
			init(e = !1) {
				let { config: { HEADER_HEIGHT: t } } = this.ctx, n = E(this.ctx.config);
				if (!e) {
					let e = this.ctx.database.getColumns();
					this.columns = e;
				}
				this.allCellHeaders = [], this.leafCellHeaders = [], this.fixedLeftCellHeaders = [], this.fixedRightCellHeaders = [], this.centerCellHeaders = [], this.visibleColumns = u(this.columns);
				let r = o(this.visibleColumns), i = l(this.visibleColumns);
				this.height = t * r, this.visibleHeight = this.height, this.width = i.reduce((e, t) => {
					let n = t.width || 100, { maxWidth: r, minWidth: i } = t;
					return r && n > r ? e + r : i && n < i ? e + i : e + n;
				}, 0), this.columnIndex = 0, this.resizeNum = 0;
				let a = s(c(this.visibleColumns, r));
				this.render(a, 0), this.ctx.database.updateColIndexKeyMap(this.leafCellHeaders);
				let d = this.ctx.containerElement.getBoundingClientRect();
				this.resizeNum > 0 ? this.ctx.stageWidth = Math.floor(d.width) : this.ctx.stageWidth = Math.min(Math.floor(this.width + n), Math.floor(d.width)), this.ctx.stageElement.style.width = `${this.ctx.stageWidth}px`, this.visibleWidth = this.ctx.stageWidth - n;
				let f = this.visibleWidth - this.width;
				if (this.resizeNum && f > 0) {
					let e = Math.floor(f / this.resizeNum * 100) / 100;
					this.resizeAllColumn(e);
				}
				let p = this.fixedLeftCellHeaders.filter((e) => !e.hasChildren);
				this.ctx.fixedLeftWidth = p.reduce((e, t) => e + t.width, 0);
				let m = this.fixedRightCellHeaders.filter((e) => !e.hasChildren);
				this.ctx.fixedRightWidth = m.reduce((e, t) => e + t.width, n), this.ctx.maxColIndex = this.leafCellHeaders.length - 1, this.ctx.header.x = this.x, this.ctx.header.y = this.y, this.ctx.header.width = this.width, this.ctx.header.height = this.height, this.ctx.header.allCellHeaders = this.allCellHeaders, this.ctx.header.visibleWidth = this.visibleWidth, this.ctx.header.visibleHeight = this.visibleHeight;
			}
			initSort() {
				this.ctx.on("cellHeaderClick", (e, t) => {
					if (!e.isImageInside("sort", t)) return;
					let { sortIconType: n = "up-down" } = e.column, r = e.getImageClickDirection("sort", t), i = "none", a = this.ctx.database.getSortState(e.key);
					function o(e, t) {
						return e === "none" ? t : e === t ? "none" : t;
					}
					n === "loop" ? i = a.direction === "none" ? "asc" : a.direction === "asc" ? "desc" : "none" : r && n === "up-down" ? r.includes("up") ? i = o(a.direction, "asc") : r.includes("down") && (i = o(a.direction, "desc")) : r && n === "left-right" && (r.includes("left") ? i = o(a.direction, "asc") : r.includes("right") && (i = o(a.direction, "desc"))), this.ctx.database.setSortState(e.key, i);
				});
			}
			initSelection() {
				this.ctx.on("cellHeaderClick", (e, t) => {
					if (this.ctx.stageElement.style.cursor !== "pointer" || !e.isImageInside("selection", t)) return;
					let n = e.getImage("selection");
					["checkbox-uncheck", "checkbox-indeterminate"].includes(n.name) ? this.ctx.database.toggleAllSelection() : n.name === "checkbox-check" && this.ctx.database.clearSelection(!0);
				});
			}
			initResizeColumn() {
				this.ctx.on("mousedown", (e) => {
					this.ctx.config.ENABLE_RESIZE_COLUMN && this.ctx.isTarget(e) && (this.clientX = e.clientX, this.resizeTarget ? (this.isResizing = !0, this.ctx.columnResizing = !0) : this.isResizing = !1, this.isMouseDown = !0);
				}), this.ctx.on("mouseup", () => {
					this.ctx.config.ENABLE_RESIZE_COLUMN && (this.isMouseDown = !1, this.resizeDiff !== 0 && this.resizeTarget && this.resizeColumn(this.resizeTarget, this.resizeDiff), this.resizeTarget = null, this.isResizing = !1, this.isMouseDown = !1, this.ctx.columnResizing = !1, this.clientX = 0, this.resizeDiff = 0);
				}), this.ctx.on("mousemove", (e) => {
					if (!this.ctx.config.ENABLE_RESIZE_COLUMN || this.ctx.editing) return;
					let { stageWidth: t, config: { RESIZE_COLUMN_MIN_WIDTH: n } } = this.ctx;
					if (this.isResizing && this.resizeTarget) {
						let t = this.resizeTarget.width, r = this.resizeTarget.minWidth, i = this.resizeTarget.maxWidth, a = e.clientX - this.clientX;
						a + t < n && (a = -(t - n)), r && a + t < r && (a = -(t - r)), i && a + t > i && (a = i - t), this.resizeDiff = a, this.ctx.emit("draw");
					} else {
						if (this.resizeTarget = null, this.isMouseDown) return;
						let { offsetX: n } = this.ctx.getOffset(e);
						if (n < 0 || n > this.visibleWidth) {
							this.ctx.stageElement.style.cursor === "col-resize" && (this.ctx.stageElement.style.cursor = "default");
							return;
						}
						this.ctx.stageElement.style.cursor === "col-resize" && (this.ctx.stageElement.style.cursor = "default");
						let r = [...this.renderFixedCellHeaders, ...this.renderCenterCellHeaders];
						for (let n of r) {
							let { offsetX: r, offsetY: i } = this.ctx.getOffset(e), a = r, o = i, s = n.getDrawX(), c = n.getDrawY();
							if (a > s + n.width - 5 && a < s + n.width + 4 && a < t - 4 && o > c) {
								let t = n.colIndex + n.colspan - 1, r = this.leafCellHeaders.find((e) => e.colIndex === t);
								if (!r || !r.fixed && this.ctx.stageWidth - this.ctx.fixedRightWidth < s + n.width) return;
								this.ctx.isTarget(e) && i <= this.height && (this.ctx.stageElement.style.cursor = "col-resize", this.resizeTarget = r);
							}
						}
					}
				});
			}
			initDragColumn() {
				this.ctx.on("cellHeaderMousedown", (e) => {
					this.ctx.stageElement.style.cursor === "default" && this.ctx.config.ENABLE_DRAG_COLUMN && (e.column.dragDisabled || (this.dragTarget === e ? (this.ctx.dragHeaderIng = !0, this.dragCellDiff = this.ctx.mouseX - e.drawX, this.ctx.stageElement.style.cursor = "grabbing") : (this.dragTarget = e, this.ctx.dragHeaderIng = !1)));
				}), this.ctx.on("cellMousedown", () => {
					this.ctx.config.ENABLE_DRAG_COLUMN && (this.dragTarget = null, this.ctx.dragHeaderIng = !1);
				}), this.ctx.on("mouseup", () => {
					if (this.ctx.config.ENABLE_DRAG_COLUMN) {
						if (this.dragingCell && this.dragTarget) {
							let e = (t, n = {}) => (t.forEach((t, r) => {
								t.children && e(t.children, n), n[t.key] = r;
							}), n), t = this.ctx.database.getColumns(), n = c(t, o(t)), r = new we(n, {
								key: "key",
								childrenKey: "children"
							}), i = this.dragTarget.colIndex > this.dragingCell.colIndex ? "before" : "after";
							r.treeMove(this.dragTarget.column.key, this.dragingCell.column.key, i);
							let a = e(r.getTree());
							this.ctx.database.setCustomHeader({ sortData: a }), this.init();
							let s = {
								source: this.dragTarget,
								target: this.dragingCell,
								columns: n
							};
							this.ctx.emit("columnDragChange", s);
						}
						this.ctx.dragHeaderIng && this.dragTarget && (this.ctx.stageElement.style.cursor === "grabbing" && (this.ctx.stageElement.style.cursor = "default"), this.ctx.dragHeaderIng = !1, this.dragTarget = null, this.dragingCell = void 0, this.dragCellDiff = 0, this.ctx.clearSelector(), this.ctx.focusCellHeader = void 0, this.ctx.emit("draw"));
					}
				}), this.ctx.on("mousemove", (e) => {
					this.ctx.config.ENABLE_DRAG_COLUMN && (!this.ctx.dragHeaderIng || !this.dragTarget || (this.dragTarget.fixed || this.ctx.startAdjustPosition(e), this.ctx.emit("draw")));
				}), this.ctx.on("cellHoverChange", (e) => {
					this.ctx.config.ENABLE_DRAG_COLUMN && (e.column.dragDisabled || (this.dragingCell = this.getDragCellHeader(e.colIndex)));
				}), this.ctx.on("cellHeaderHoverChange", (e) => {
					this.ctx.config.ENABLE_DRAG_COLUMN && (e.column.dragDisabled || (this.dragingCell = this.getDragCellHeader(e.colIndex)));
				});
			}
			getDragCellHeader(e) {
				if (!this.dragTarget || !this.ctx.dragHeaderIng) return;
				let { column: { parentKey: t }, key: n, level: r, fixed: i } = this.dragTarget, a = this.allCellHeaders.find((a) => a.key !== n && a.fixed === i && a.column.level === r && a.column.parentKey === t && a.colIndex <= e && a.colIndex + a.colspan - 1 >= e);
				if (this.ctx.dragHeaderIng) {
					let e = a ? "grabbing" : "not-allowed";
					this.ctx.stageElement.style.cursor = e;
				}
				return a;
			}
			resizeColumn(e, t) {
				let n = (r) => {
					r.forEach((r) => {
						r.children && r.children.length > 0 && n(r.children), r.key === e.key && (r.width = (r.width || 100) + t);
					});
				};
				n(this.columns);
				let r = 0;
				if (this.width < this.visibleWidth) {
					let e = this.visibleWidth - this.width;
					r = Math.floor(e / this.resizeNum * 100) / 100, this.resizeAllColumn(r);
				}
				let i = e.width + t + r;
				this.ctx.emit("resizeColumnChange", {
					colIndex: e.colIndex,
					key: e.key,
					oldWidth: e.width,
					width: i,
					column: e.column,
					columns: this.columns
				}), this.ctx.database.setCustomHeaderResizableData(e.key, i), this.init(!0), this.ctx.emit("draw");
			}
			resizeAllColumn(e) {
				if (e === 0) return;
				let t = /* @__PURE__ */ new Map(), n = !0;
				for (let r of this.allCellHeaders) if (r.widthFillDisable) t.set(r.key, r.width);
				else {
					let i = r.width + e * r.colspan;
					t.set(r.key, i), i < this.ctx.config.RESIZE_COLUMN_MIN_WIDTH && (n = !1);
				}
				if (!n) return;
				let r = (e) => {
					e.forEach((e) => {
						t.has(e.key) && (e.width = t.get(e.key)), e.children && e.children.length > 0 && r(e.children);
					});
				};
				r(this.columns), this.init(!0), this.ctx.emit("draw");
			}
			getCustomHeader() {
				let e = this.ctx.database.getColumns(), t = this.ctx.database.getCustomHeader(), { sortData: n = {} } = t;
				return Object.keys(n).length === 0 ? {
					columns: e,
					customHeader: t
				} : {
					columns: c(e, o(e)),
					customHeader: t
				};
			}
			render(e, t) {
				let n = e.length, r = t, { HEADER_HEIGHT: i = 0 } = this.ctx.config;
				for (let t = 0; t < n; t++) {
					let n = e[t], a = i * (n.rowspan || 0), o = i * (n.level || 0), { minWidth: s, maxWidth: c } = n, u = n.width || 100;
					s && u < s && (u = s), c && u > c && (u = c), n.children && (u = l(n.children).reduce((e, t) => e + (t?.width || 100), 0));
					let d = new Ce(this.ctx, this.columnIndex, r, o, u, a, n);
					this.ctx.database.setHeader(n.key, d), this.allCellHeaders.push(d), n.children || (this.leafCellHeaders.push(d), d.column.widthFillDisable || this.resizeNum++), n.fixed === "left" ? this.fixedLeftCellHeaders.push(d) : n.fixed === "right" ? this.fixedRightCellHeaders.push(d) : this.centerCellHeaders.push(d), !n.children && this.columnIndex++, n.children && this.render(n.children, r), r += u;
				}
			}
			drawTipLine() {
				if (this.isResizing && this.resizeTarget) {
					let { stageHeight: e, config: { RESIZE_COLUMN_LINE_COLOR: t, RESIZE_COLUMN_TEXT_COLOR: n, RESIZE_COLUMN_TEXT_BG_COLOR: r, ENABLE_RESIZE_COLUMN_TEXT: i } } = this.ctx, a = this.resizeTarget.getDrawX(), o = this.resizeTarget.width, s = a + o + this.resizeDiff - .5, c = [
						s - .5,
						0,
						s - .5,
						e
					];
					if (this.ctx.paint.drawLine(c, { borderColor: t }), i) {
						let e = `${Math.floor(o + this.resizeDiff)}px`;
						this.ctx.paint.drawRect(s + 45 / 2, this.ctx.mouseY - 12, 45, 24, {
							fillColor: r,
							borderWidth: 0,
							borderColor: "transparent"
						}), this.ctx.paint.drawText(e, s + 45 / 2, this.ctx.mouseY - 12, 45, 26, {
							padding: 0,
							color: n,
							align: "center",
							verticalAlign: "middle"
						});
					}
				}
			}
			drawDragTip() {
				if (this.dragTarget && this.ctx.dragHeaderIng) {
					let { DRAG_TIP_BG_COLOR: e, DRAG_TIP_LINE_COLOR: t } = this.ctx.config, n = this.dragTarget.width;
					if (this.ctx.paint.drawRect(this.ctx.mouseX - this.dragCellDiff, this.visibleHeight, n, this.ctx.body.visibleHeight, {
						fillColor: e,
						borderWidth: 0,
						borderColor: "transparent"
					}), this.dragingCell) {
						let { drawX: e, drawY: n, visibleWidth: r, colIndex: i } = this.dragingCell, a = e, o = n;
						i > this.dragTarget.colIndex && (a = e + r), i === 0 && (a += 1), i === this.ctx.maxColIndex && --a;
						let s = [
							a,
							o,
							a,
							this.ctx.stageHeight
						], c = [
							a - 4,
							o,
							a + 4,
							o,
							a,
							o + 6,
							a - 4,
							o
						];
						this.ctx.paint.drawLine(c, {
							borderColor: t,
							borderWidth: 1.2,
							fillColor: t
						}), this.ctx.paint.drawLine(s, {
							borderColor: t,
							borderWidth: 1.2
						});
					}
				}
			}
			drawFixedShadow() {
				let { fixedLeftWidth: e, fixedRightWidth: t, scrollX: n, header: r, stageWidth: i, config: { HEADER_BG_COLOR: a, FIXED_COLUMN_SHADOW_COLOR: o, FIXED_COLUMN_SHADOW_FADE_COLOR: s, FIXED_COLUMN_SHADOW_WIDTH: c } } = this.ctx, l = E(this.ctx.config);
				if (n > 0 && e !== 0 && this.ctx.paint.drawShadow(this.x, this.y, e, this.height, {
					fillColor: a,
					side: "right",
					shadowWidth: c,
					colorStart: o,
					colorEnd: s
				}), n < Math.floor(r.width - i - 1) && t !== l) {
					let e = r.width - (this.x + this.width) + i - t;
					this.ctx.paint.drawShadow(e, this.y, t, this.height, {
						fillColor: a,
						side: "left",
						shadowWidth: c,
						colorStart: s,
						colorEnd: o
					});
				}
			}
			update() {
				let e = [], t = [], n = [];
				if (this.centerCellHeaders.length) {
					let e = this.centerCellHeaders[this.centerCellHeaders.length - 1];
					this.ctx.lastCenterColIndex = e.colIndex;
				}
				this.centerCellHeaders.forEach((n) => {
					n.isHorizontalVisible() && n.isVerticalVisible() && (t.push(n), n.hasChildren || e.push(n));
				}), this.fixedLeftCellHeaders.forEach((t) => {
					n.push(t), t.hasChildren || e.push(t);
				}), this.fixedRightCellHeaders.forEach((t) => {
					n.push(t), t.hasChildren || e.push(t);
				}), this.renderCenterCellHeaders = t, this.renderFixedCellHeaders = n, this.renderLeafCellHeaders = e.sort((e, t) => e.x - t.x), this.visibleLeafColumns = this.renderLeafCellHeaders.map((e) => e.column), this.ctx.header.visibleLeafColumns = this.visibleLeafColumns, this.ctx.header.leafCellHeaders = this.leafCellHeaders, this.ctx.header.renderLeafCellHeaders = this.renderLeafCellHeaders, this.ctx.header.renderCellHeaders = this.renderFixedCellHeaders.concat(this.renderCenterCellHeaders);
			}
			drawBottomLine() {
				let { stageWidth: e, config: t } = this.ctx, { BORDER: n } = t;
				if (!re(n)) return;
				let r = [
					0,
					this.height,
					e,
					this.height
				];
				this.ctx.paint.drawLine(r, {
					borderColor: t.BORDER_COLOR,
					borderWidth: 1
				});
			}
			draw() {
				this.renderCenterCellHeaders.forEach((e) => {
					e.update(), e.draw();
				}), this.drawFixedShadow(), this.renderFixedCellHeaders.forEach((e) => {
					e.update(), e.draw();
				}), this.drawBottomLine(), this.drawTipLine(), this.drawDragTip();
			}
		}
		class Ee {
			constructor(e, t, r = 0, i = 0, a = 0, o = 0, s, c = "body") {
				n(this, "ctx"), n(this, "x", 0), n(this, "y", 0), n(this, "width", 0), n(this, "height"), n(this, "cells", []), n(this, "fixedCells", []), n(this, "noFixedCells", []), n(this, "calculatedHeightCells", []), n(this, "rowIndex", 0), n(this, "rowKey", ""), n(this, "rowType", "body"), n(this, "data"), n(this, "calculatedHeight", -1), this.ctx = e, this.x = r, this.y = i, this.width = a, this.height = o, this.rowIndex = t, this.rowKey = e.database.getRowKeyForRowIndex(t) || "", this.rowType = c, this.data = s, this.update();
			}
			update() {
				let { header: e } = this.ctx, t = [], n = [], r = [], i = [];
				e.renderLeafCellHeaders.forEach((e) => {
					let a = new ae(this.ctx, this.rowIndex, e.colIndex, e.x, this.y, e.width, this.height, e.column, this.data, this.rowType);
					a.fixed ? n.push(a) : r.push(a), t.push(a), a.autoRowHeight && i.push(a);
				}), this.cells = t, this.calculatedHeightCells = i, this.fixedCells = n, this.noFixedCells = r;
			}
			updateCalculatedHeight() {
				let e = this.calculatedHeightCells.map((e) => {
					let t = e.getAutoHeight(), { key: n, height: r = -1 } = this.ctx.database.getMaxRowHeightItem(this.rowKey) || {};
					return (t > r || e.key === n && t < r) && this.ctx.database.setMaxRowHeightItem(this.rowKey, e.key, t), t;
				});
				return this.calculatedHeight = e.length ? Math.max(...e) : -1, this.calculatedHeight;
			}
			drawCenter() {
				this.noFixedCells.forEach((e) => {
					e.draw();
				});
			}
			drawFixed() {
				this.fixedCells.forEach((e) => {
					e.draw();
				});
			}
			drawContainer() {
				this.noFixedCells.forEach((e) => {
					e.drawContainer();
				});
			}
			drawFixedContainer() {
				this.fixedCells.forEach((e) => {
					e.drawContainer();
				});
			}
			drawHorizontalBorder() {
				this.noFixedCells.forEach((e) => {
					e.drawHorizontalBorder();
				});
			}
			drawFixedHorizontalBorder() {
				this.fixedCells.forEach((e) => {
					e.drawHorizontalBorder();
				});
			}
		}
		class De {
			constructor(e) {
				n(this, "resizeTarget", null), n(this, "dragSource", null), n(this, "dragTarget", null), n(this, "dragRowDiff", 0), n(this, "dragPosition", "none"), n(this, "isMouseDown", !1), n(this, "resizeDiff", 0), n(this, "clientY", 0), n(this, "ctx"), n(this, "x", 0), n(this, "y", 0), n(this, "width", 0), n(this, "height", 0), n(this, "headIndex", 0), n(this, "tailIndex", 0), n(this, "isResizing", !1), n(this, "renderRows", []), n(this, "visibleRows", []), n(this, "visibleHeight", 0), n(this, "visibleWidth", 0), n(this, "containerRect"), n(this, "data", []), this.ctx = e, this.init(), this.initTree(), this.initSelection(), this.initResizeRow(), this.initDragRow();
			}
			init() {
				let { canvasElement: e, header: t, footer: n, database: r, config: { FOOTER_FIXED: i, HEIGHT: a, EMPTY_BODY_HEIGHT: o = 0, MAX_HEIGHT: s = 0, ENABLE_OFFSET_HEIGHT: c = 0, OFFSET_HEIGHT: l = 0, FOOTER_POSITION: u } } = this.ctx, d = E(this.ctx.config);
				if (!t.width) return;
				this.x = 0, this.y = u === "top" && i ? t.height + n.height : t.height;
				let { data: f, sumHeight: p } = r.getData();
				this.height = p, this.data = f, this.width = t.width, this.visibleWidth = this.ctx.stageWidth - d;
				let m = this.ctx.footer.height;
				this.ctx.isEmpty = !this.data.length, !this.data.length && !a ? this.height = o : !this.data.length && a && (this.height = a - t.height - m - d);
				let h = this.height + t.height + d;
				h += m;
				let g = h, _ = window.innerHeight, { top: v } = this.containerRect || this.ctx.containerElement.getBoundingClientRect();
				if (_ > v && c && !a) {
					let e = _ - v - l;
					e > t.height + d ? g = e : h > s && (g = s);
				} else this.data.length && a ? g = a : this.data.length && s && h > s && (g = s);
				g > 0 && (this.ctx.stageHeight = Math.floor(g), this.ctx.stageElement.style.height = `${this.ctx.stageHeight}px`);
				let y = this.ctx.stageHeight - t.height - d;
				this.visibleHeight = i ? y - m : y, this.data.length || (this.height = this.visibleHeight), this.ctx.body.x = this.x, this.ctx.body.y = this.y, this.ctx.body.width = this.width, this.ctx.body.height = this.height, this.ctx.body.visibleWidth = this.visibleWidth, this.ctx.body.visibleHeight = this.visibleHeight, this.ctx.body.data = f;
				let b = window.devicePixelRatio || 1, x = this.ctx.stageWidth * b, S = this.ctx.stageHeight * b;
				e.width = Math.round(x), e.height = Math.round(S);
				let C = this.data.length ? "not-empty" : "empty";
				this.ctx.emit("emptyChange", {
					isEmpty: C,
					type: C,
					headerHeight: t.height,
					bodyHeight: this.height,
					footerHeight: m,
					width: this.width,
					height: this.data.length ? 0 : o + m
				});
				let w = Math.round(e.width / b * 1e4) / 1e4, T = Math.round(e.height / b * 1e4) / 1e4;
				this.ctx.canvasElement.setAttribute("style", `height:${T}px;width:${w}px;`), this.ctx.paint.scale(b);
			}
			initTree() {
				this.ctx.on("cellClick", (e, t) => {
					if (this.ctx.stageElement.style.cursor !== "pointer" || !e.isImageInside("tree", t)) return;
					let { expand: n = !1, expandLazy: r = !1 } = this.ctx.database.getRowForRowKey(e.rowKey) || {}, { EXPAND_LAZY: i, EXPAND_LAZY_METHOD: a } = this.ctx.config;
					if (i && a && !n && !r) typeof a == "function" && (this.ctx.database.expandLoading(e.rowKey, !0), a({
						row: e.row,
						rowIndex: e.rowIndex,
						colIndex: e.colIndex,
						column: e.column,
						value: e.getValue()
					}).then((t) => {
						this.ctx.database.setExpandChildren(e.rowKey, t), this.ctx.database.expandLoading(e.rowKey, !1), this.ctx.emit("expandChange", this.ctx.database.getExpandRowKeys());
					}).catch((t) => {
						this.ctx.database.expandLoading(e.rowKey, !1), console.error(t);
					}));
					else {
						let t = this.ctx.database.getIsExpand(e.rowKey);
						this.ctx.database.expandItem(e.rowKey, !t), this.ctx.emit("expandChange", this.ctx.database.getExpandRowKeys());
					}
				});
			}
			initSelection() {
				this.ctx.on("cellClick", (e, t) => {
					this.ctx.stageElement.style.cursor !== "pointer" || !e.isImageInside("selection", t) || !this.ctx.database.getRowSelectable(e.rowKey) || this.ctx.database.toggleRowSelection(e.rowKey, e.type);
				});
			}
			initResizeRow() {
				this.ctx.on("resize", () => {
					this.ctx.config.ENABLE_RESIZE_ROW && (this.containerRect = this.ctx.containerElement.getBoundingClientRect());
				}), this.ctx.on("resizeObserver", () => {
					this.ctx.config.ENABLE_RESIZE_ROW && (this.containerRect = this.ctx.containerElement.getBoundingClientRect());
				}), this.ctx.on("mouseup", () => {
					this.ctx.config.ENABLE_RESIZE_ROW && (this.isMouseDown = !1, this.resizeDiff !== 0 && this.resizeTarget && this.resizeRow(this.resizeTarget, this.resizeDiff), this.resizeTarget = null, this.resizeDiff = 0, this.isResizing = !1, setTimeout(() => {
						this.ctx.rowResizing = !1;
					}, 0), this.clientY = 0);
				}), this.ctx.on("mousedown", (e) => {
					this.ctx.config.ENABLE_RESIZE_ROW && this.ctx.isTarget(e) && (this.clientY = e.clientY, this.resizeTarget ? (this.isResizing = !0, this.ctx.rowResizing = !0) : (this.isResizing = !1, this.ctx.rowResizing = !1), this.isMouseDown = !0);
				}), this.ctx.on("mousemove", (e) => {
					if (!this.ctx.config.ENABLE_RESIZE_ROW || this.ctx.editing) return;
					let { offsetY: t, offsetX: n } = this.ctx.getOffset(e), r = t, i = n, a = e.clientY, { stageHeight: o, scrollY: s, config: { RESIZE_ROW_MIN_HEIGHT: c = 0 } } = this.ctx;
					if (this.isResizing && this.resizeTarget) {
						let e = this.resizeTarget.height, t = a - this.clientY, { calculatedHeight: n } = this.resizeTarget, r = n === -1 ? c : n;
						t + e < r && (t = -(e - r)), this.resizeDiff = t, this.ctx.emit("draw");
					} else {
						if (this.resizeTarget = null, this.isMouseDown) return;
						if (i < 0 || i > this.ctx.body.visibleWidth || r < 0 || r > this.ctx.header.visibleHeight + this.ctx.body.visibleHeight) {
							this.ctx.stageElement.style.cursor === "row-resize" && (this.ctx.stageElement.style.cursor = "default");
							return;
						}
						if (this.ctx.stageElement.style.cursor === "crosshair") return;
						this.ctx.stageElement.style.cursor === "row-resize" && (this.ctx.stageElement.style.cursor = "default");
						for (let e = 0; e < this.renderRows.length; e++) {
							let t = this.renderRows[e];
							if (r > t.y - s + t.height - 1.5 && r < t.y - s + t.height + 1.5 && r < o - 4) for (let e = 0; e < t.cells.length; e++) {
								let n = t.cells[e];
								i > n.drawX + 10 && i < n.drawX + n.width - 10 && n.rowspan === 1 && (this.ctx.stageElement.style.cursor = "row-resize", this.resizeTarget = t);
							}
						}
					}
				});
			}
			initDragRow() {
				this.ctx.on("cellMousedown", (e, t) => {
					this.ctx.config.ENABLE_DRAG_ROW && e.isImageInside("drag", t) && (this.dragSource = e, this.ctx.database.expandItem(e.rowKey, !1), this.ctx.dragRowIng = !0, this.dragRowDiff = this.ctx.mouseY - e.drawY, this.ctx.stageElement.style.cursor = "grabbing", this.ctx.clearSelector(), this.ctx.emit("dragRowMouseDown", e), this.ctx.emit("draw"));
				}), this.ctx.on("mouseup", async () => {
					if (this.ctx.dragRowIng) {
						if (this.dragSource && this.dragTarget && this.ctx.stageElement.style.cursor !== "not-allowed") {
							let e = this.dragSource, t = this.dragTarget, n = {
								source: e,
								target: t,
								position: this.dragPosition
							};
							this.ctx.emit("dragRowChange", n);
							let r = !0, { BEFORE_DRAG_ROW_METHOD: i } = this.ctx.config;
							if (typeof i == "function" && (r = await i(n)), r && !this.ctx.config.ENABLE_DRAG_ROW_CUSTOM) {
								let n = this.ctx.database.getOriginalData(), { TREE_CHILDREN_KEY: r, ROW_KEY: i } = this.ctx.config, a = new we(n, {
									key: i,
									childrenKey: r
								});
								a.treeMove(e.rowKey, t.rowKey, this.dragPosition), this.ctx.emit("loadData", a.getTree());
							}
						}
						this.dragTarget || (this.ctx.stageElement.style.cursor = "grab"), this.ctx.dragRowIng = !1, this.dragSource = null, this.dragTarget = null, this.dragPosition = "after", this.dragRowDiff = 0, this.ctx.emit("draw");
					}
				}), this.ctx.on("mousemove", (e) => {
					if (!this.ctx.dragRowIng) return;
					let { offsetY: t } = this.ctx.getOffset(e), { drawY: n } = this.dragTarget;
					n < t || n > t ? this.ctx.startAdjustPosition(e) : this.ctx.stopAdjustPosition();
				}), this.ctx.on("cellMouseenter", (e) => {
					if (!this.ctx.dragRowIng) return;
					this.dragTarget = e;
					let { ENABLE_DRAG_ROW_CROSS_LEVEL: t } = this.ctx.config, n = this.dragSource, r = this.dragTarget;
					if (!t && n && r && n.parentRowKey !== r.parentRowKey) {
						this.ctx.stageElement.style.cursor = "not-allowed";
						return;
					}
					this.ctx.stageElement.style.cursor = "grabbing", this.dragTarget = e;
					let { drawY: i, visibleHeight: a } = e, o = t ? a / 3 : a / 2;
					this.dragPosition = this.ctx.mouseY <= i + o ? "before" : this.ctx.mouseY > i + a - o ? "after" : "inside";
					let s = {
						dragSource: this.dragSource,
						dragTarget: this.dragTarget,
						dragPosition: this.dragPosition
					};
					this.ctx.emit("dragRowMove", s), this.ctx.emit("draw");
				});
			}
			resizeRow(e, t) {
				let { rowIndex: n, height: r, rowKey: i, data: a } = e;
				this.ctx.database.setRowHeight(n, r + t), this.init(), this.ctx.emit("draw"), this.ctx.emit("resizeRowChange", {
					rowIndex: n,
					oldHeight: r,
					height: r + t,
					rowKey: i,
					row: a,
					data: this.data
				});
			}
			drawTipLine() {
				if (this.isResizing && this.resizeTarget) {
					let { stageWidth: e, scrollY: t, config: { RESIZE_ROW_LINE_COLOR: n } } = this.ctx, r = this.resizeTarget.y - t + this.resizeTarget.height + this.resizeDiff - .5, i = [
						0,
						r - .5,
						e,
						r - .5
					];
					this.ctx.paint.drawLine(i, {
						borderColor: n,
						borderWidth: 1
					});
				}
			}
			drawDragRowTip() {
				if (this.ctx.dragRowIng && this.dragTarget && this.dragSource) {
					let { stageWidth: e, config: { DRAG_ROW_TIP_LINE_COLOR: t, DRAG_TIP_BG_COLOR: n } } = this.ctx, r = this.dragSource.visibleHeight;
					this.ctx.paint.drawRect(0, this.ctx.mouseY - this.dragRowDiff, this.visibleWidth, r, {
						fillColor: n,
						borderWidth: 0,
						borderColor: "transparent"
					});
					let i = this.dragTarget.drawY, a = this.dragTarget.height, o = i;
					if (["before", "after"].includes(this.dragPosition)) {
						this.dragPosition === "after" && (o = i + a);
						let n = [
							0,
							o - .5,
							e,
							o - .5
						];
						this.ctx.paint.drawLine(n, {
							borderColor: t,
							borderWidth: 1.2
						});
					}
					["inside"].includes(this.dragPosition) && (o = i + a / 2);
					let s = [
						0,
						o - 4,
						6,
						o,
						0,
						o + 4,
						0,
						o - 4
					];
					this.ctx.paint.drawLine(s, {
						borderColor: t,
						borderWidth: 1.2,
						fillColor: t
					});
				}
			}
			drawFixedShadow() {
				let { fixedLeftWidth: e, fixedRightWidth: t, scrollX: n, header: r, stageWidth: i, config: { HEADER_BG_COLOR: a, FIXED_COLUMN_SHADOW_COLOR: o, FIXED_COLUMN_SHADOW_FADE_COLOR: s, FIXED_COLUMN_SHADOW_WIDTH: c } } = this.ctx, l = E(this.ctx.config);
				if (n > 0 && e !== 0 && !this.ctx.isEmpty && this.ctx.paint.drawShadow(this.x, this.y, e, this.height, {
					fillColor: a,
					side: "right",
					shadowWidth: c,
					colorStart: o,
					colorEnd: s
				}), n < Math.floor(r.width - i - 1) && t !== l && !this.ctx.isEmpty) {
					let e = r.width - (this.x + this.width) + i - t;
					this.ctx.paint.drawShadow(e, this.y, t, this.height, {
						fillColor: a,
						side: "left",
						shadowWidth: c,
						colorStart: s,
						colorEnd: o
					});
				}
			}
			binarySearch(e, t) {
				let n = 0, r = e.length - 1, i = -1;
				for (; n <= r;) {
					let a = Math.floor((n + r) / 2), o = e[a].bottom;
					if (o === t) return a;
					o < t ? n = a + 1 : (i = a, r = a - 1);
				}
				return i;
			}
			update() {
				this.init();
				let { header: e, database: t, scrollY: n, config: { CELL_HEIGHT: r } } = this.ctx, i = n, { data: a, positions: o } = t.getData();
				this.ctx.maxRowIndex = a.length - 1;
				let s = this.binarySearch(o, i), c = this.binarySearch(o, i + this.visibleHeight);
				if (c === -1 && (c = this.ctx.maxRowIndex), s === -1 && c === this.ctx.maxRowIndex) {
					let e = Math.floor(this.visibleHeight / r);
					s = this.ctx.maxRowIndex - e;
				}
				this.headIndex = Math.max(0, s), this.tailIndex = Math.min(this.ctx.maxRowIndex, c + 1), this.visibleRows = a.slice(this.headIndex, this.tailIndex + 1), this.ctx.body.headIndex = this.headIndex, this.ctx.body.tailIndex = this.tailIndex, this.ctx.body.visibleRows = this.visibleRows;
				let l = [];
				for (let t = 0; t < this.visibleRows.length; t++) {
					let n = this.headIndex + t, r = this.visibleRows[t], { height: i, top: a } = this.ctx.database.getPositionForRowIndex(n), o = new Ee(this.ctx, n, 0, a + this.y, e.width, i, r);
					l.push(o);
				}
				this.renderRows = l, this.ctx.body.renderRows = l;
			}
			updateAutoHeight() {
				let e = this.ctx.body.renderRows;
				if (!e.some((e) => e.calculatedHeightCells.length > 0)) return !1;
				e.forEach((e) => {
					e.updateCalculatedHeight();
				});
				let t = e.map((e) => ({
					height: e.calculatedHeight,
					rowIndex: e.rowIndex
				}));
				return this.ctx.database.setBatchCalculatedRowHeight(t);
			}
			draw() {
				this.renderRows.forEach((e) => {
					e.drawContainer();
				}), this.renderRows.forEach((e) => {
					e.drawHorizontalBorder();
				}), this.renderRows.forEach((e) => {
					e.drawCenter();
				}), this.drawFixedShadow(), this.renderRows.forEach((e) => {
					e.drawFixedContainer();
				}), this.renderRows.forEach((e) => {
					e.drawFixedHorizontalBorder();
				}), this.renderRows.forEach((e) => {
					e.drawFixed();
				}), this.drawTipLine();
			}
		}
		class Oe {
			constructor(e) {
				n(this, "ctx"), n(this, "renderRows", []), n(this, "data", []), n(this, "x", 0), n(this, "y", 0), n(this, "width", 0), n(this, "height", 0), n(this, "visibleWidth", 0), n(this, "visibleHeight", 0), this.ctx = e, this.init();
			}
			init() {
				this.data = this.ctx.database.getFooterData();
				let { header: e, body: t, config: { CELL_FOOTER_HEIGHT: n, FOOTER_FIXED: r, FOOTER_POSITION: i } } = this.ctx, a = E(this.ctx.config);
				this.width = e.width, this.visibleWidth = e.visibleWidth, this.height = this.data.reduce((e) => e + n, 0), this.visibleHeight = this.height, this.y = r ? i === "top" ? this.ctx.header.height : this.ctx.stageHeight - this.height - a : t.y + t.height, this.ctx.footer.x = this.x, this.ctx.footer.y = this.y, this.ctx.footer.height = this.height, this.ctx.footer.width = this.width, this.ctx.footer.visibleWidth = this.visibleWidth, this.ctx.footer.visibleHeight = this.visibleHeight;
			}
			drawFixedShadow() {
				let { fixedLeftWidth: e, fixedRightWidth: t, scrollX: n, header: r, stageWidth: i, config: { HEADER_BG_COLOR: a, FIXED_COLUMN_SHADOW_COLOR: o, FIXED_COLUMN_SHADOW_FADE_COLOR: s, FIXED_COLUMN_SHADOW_WIDTH: c } } = this.ctx, l = E(this.ctx.config), u = this.y;
				if (this.ctx.config.FOOTER_FIXED || (u = this.y - this.ctx.scrollY), n > 0 && e !== 0 && this.ctx.paint.drawShadow(this.x, u, e, this.height, {
					fillColor: a,
					side: "right",
					shadowWidth: c,
					colorStart: o,
					colorEnd: s
				}), n < Math.floor(r.width - i - 1) && t !== l) {
					let e = r.width - (this.x + this.width) + i - t;
					this.ctx.paint.drawShadow(e, u, t, this.height, {
						fillColor: a,
						side: "left",
						shadowWidth: c,
						colorStart: s,
						colorEnd: o
					});
				}
			}
			update() {
				this.init();
				let { CELL_FOOTER_HEIGHT: e } = this.ctx.config, t = this.y, n = [];
				this.data.forEach((r, i) => {
					let a = new Ee(this.ctx, i, 0, t, this.width, e, r, "footer");
					t += e, n.push(a);
				}), this.renderRows = n, this.ctx.footer.renderRows = this.renderRows;
			}
			drawTopLine() {
				let { stageWidth: e, config: t } = this.ctx, { BORDER: n } = t;
				if (!re(n)) return;
				let r = [
					0,
					this.y,
					e,
					this.y
				];
				this.ctx.paint.drawLine(r, {
					borderColor: t.BORDER_COLOR,
					borderWidth: 1
				});
			}
			draw() {
				this.renderRows.forEach((e) => {
					e.drawContainer();
				}), this.renderRows.forEach((e) => {
					e.drawHorizontalBorder();
				}), this.renderRows.forEach((e) => {
					e.drawCenter();
				}), this.drawFixedShadow(), this.renderRows.forEach((e) => {
					e.drawFixedContainer();
				}), this.renderRows.forEach((e) => {
					e.drawFixedHorizontalBorder();
				}), this.renderRows.forEach((e) => {
					e.drawFixed();
				}), this.drawTopLine();
			}
		}
		class ke {
			constructor(e) {
				n(this, "isCut", !1), n(this, "isMultipleRow", !1), n(this, "ctx"), this.ctx = e, this.init();
			}
			init() {
				this.ctx.on("setMoveFocus", (e) => {
					this.moveFocus(e);
				}), this.ctx.on("mousemove", a((e) => {
					var t;
					(t = this.ctx.focusCellHeader) != null && t.fixed || !this.ctx.dragHeaderIng && this.ctx.selectorMove && this.ctx.startAdjustPosition(e);
				}, 100)), this.ctx.on("cellHoverChange", (e) => {
					if (!this.ctx.autofillMove) {
						if (e.operation) {
							this.selectRows(e, !1);
							return;
						}
						this.isMultipleRow || this.mouseenter();
					}
				}), this.ctx.on("cellClick", () => {
					this.adjustBoundaryPosition();
				}), this.ctx.on("cellMousedown", (e, t) => {
					if (!(!this.ctx.isTarget(t) || this.ctx.stageElement.style.cursor === "pointer" || this.ctx.stageElement.style.cursor === "crosshair")) {
						if (e.operation) {
							this.isMultipleRow = !0, this.selectRows(e);
							return;
						}
						window.getComputedStyle(t.target).userSelect !== "text" && t.preventDefault(), this.isMultipleRow = !1, this.click(t.shiftKey), this.ctx.emit("selectorClick", e);
					}
				}), this.ctx.on("mouseup", () => {
					this.ctx.selectorMove = !1, this.ctx.stopAdjustPosition(), setTimeout(() => {
						this.ctx.disableHoverIconClick = !1;
					}, 0);
				}), this.ctx.on("cellHeaderHoverChange", (e) => {
					this.ctx.textSelecting || this.ctx.mousedown && this.selectCols(e);
				}), this.ctx.on("cellHoverChange", (e) => {
					this.ctx.textSelecting || this.ctx.mousedown && this.selectCols(e);
				}), this.ctx.on("cellHeaderMousedown", (e, t) => {
					this.ctx.stageElement.style.cursor !== "pointer" && (window.getComputedStyle(t.target).userSelect !== "text" && t.preventDefault(), this.ctx.clearSelector(), e.operation ? this.selectAll() : this.selectCols(e));
				}), this.ctx.on("keydown", (e) => {
					if (!this.ctx.editing && !this.ctx.finding) {
						if (e.ctrlKey && e.code === "KeyV" || e.metaKey && e.code === "KeyV") {
							this.paste();
							return;
						}
						if (e.ctrlKey && e.code === "KeyC" || e.metaKey && e.code === "KeyC") {
							this.copy(), this.isCut = !1;
							return;
						}
						if (e.ctrlKey && e.code === "KeyX" || e.metaKey && e.code === "KeyX") {
							this.isCut = !0, this.copy();
							return;
						}
						if ((e.ctrlKey && e.code === "KeyA" || e.metaKey && e.code === "KeyA") && (e.preventDefault(), this.selectAll()), e.code === "ArrowLeft" || e.shiftKey && e.code === "Tab") {
							e.preventDefault(), this.moveFocus("LEFT");
							return;
						}
						if (e.code === "ArrowUp") {
							e.preventDefault(), this.moveFocus("TOP");
							return;
						}
						if (e.code === "ArrowRight" || e.code === "Tab") {
							e.preventDefault(), this.moveFocus("RIGHT");
							return;
						}
						if (e.code === "ArrowDown") {
							e.preventDefault(), this.moveFocus("BOTTOM");
							return;
						}
						if (e.code === "Delete" || e.code === "Backspace") {
							e.preventDefault();
							let { xArr: t, yArr: n } = this.ctx.selector;
							this.clearSelectedData(t, n);
							return;
						}
					}
				}), this.ctx.on("contextMenuClearSelected", () => {
					let { xArr: e, yArr: t } = this.ctx.selector;
					this.clearSelectedData(e, t);
				}), this.ctx.on("contextMenuCopy", () => {
					this.copy();
				}), this.ctx.on("contextMenuPaste", () => {
					this.paste();
				}), this.ctx.on("contextMenuCut", () => {
					this.isCut = !0, this.copy();
				}), this.ctx.on("setSelectorCell", (e) => {
					this.ctx.setFocusCell(e), this.click(), this.adjustBoundaryPosition();
				}), this.ctx.on("selectCols", (e) => {
					this.selectCols(e);
				});
			}
			setSelector(e, t) {
				if (this.ctx.dragHeaderIng || this.ctx.dragRowIng) return;
				let { ENABLE_SELECTOR_SPAN_COL: n, ENABLE_SELECTOR_SPAN_ROW: r } = this.ctx.config, i = e, a = t;
				if (!r) {
					let [e] = a;
					a = [e, e];
				}
				if (!n) {
					let [e] = i;
					i = [e, e];
				}
				if (JSON.stringify(this.ctx.selector.xArr) !== JSON.stringify(i) || JSON.stringify(this.ctx.selector.yArr) !== JSON.stringify(a)) {
					this.ctx.mousedown && (this.ctx.selectorMove = !0, this.ctx.disableHoverIconClick = !0), this.ctx.selector.enable = !0;
					let { SELECTOR_AREA_MIN_X: e, SELECTOR_AREA_MAX_X: t, SELECTOR_AREA_MIN_Y: n, SELECTOR_AREA_MAX_Y: r, SELECTOR_AREA_MAX_X_OFFSET: o, SELECTOR_AREA_MAX_Y_OFFSET: s } = this.ctx.config, c = e, l = t || this.ctx.maxColIndex - o, u = n, d = r || this.ctx.maxRowIndex - s, [f, p] = i, [m, h] = a;
					if (f < c || p > l || m < u || h > d) return;
					if (this.ctx.config.ENABLE_MERGE_CELL_LINK) {
						let e = this.adjustMergeCells(i, a);
						m = e.yArr[0], h = e.yArr[1], f = e.xArr[0], p = e.xArr[1], this.ctx.onlyMergeCell = e.onlyMergeCell;
					}
					f === p && m === h ? this.ctx.selectOnlyOne = !0 : this.ctx.selectOnlyOne = !1, i = [Math.max(c, f), Math.min(l, p)], a = [Math.max(u, m), Math.min(d, h)];
					let { BEFORE_SET_SELECTOR_METHOD: g } = this.ctx.config;
					if (typeof g == "function") {
						let e = g({
							focusCell: this.ctx.focusCell,
							xArr: i,
							yArr: a
						});
						if (!e) return;
						i = e.xArr, a = e.yArr;
					}
					this.ctx.selector.xArr = i, this.ctx.selector.yArr = a, h === this.ctx.maxRowIndex && m === 0 ? this.ctx.selectColsIng = !0 : this.ctx.selectColsIng = !1, p === this.ctx.maxColIndex && f === 0 ? this.ctx.selectRowsIng = !0 : this.ctx.selectRowsIng = !1, this.ctx.emit("setSelector", this.ctx.selector), this.ctx.emit("drawView");
				}
			}
			adjustMergeCells(e, t) {
				let [n, r] = t, [i, a] = e;
				if (r === this.ctx.maxRowIndex && n === 0 || a === this.ctx.maxColIndex && i === 0) return {
					xArr: e,
					yArr: t,
					onlyMergeCell: !1
				};
				let o = [], s = [];
				for (let c = 0; c <= t[1] - t[0]; c++) for (let l = 0; l <= e[1] - e[0]; l++) {
					let u = c + t[0], d = l + e[0], f = this.ctx.database.getVirtualBodyCell(u, d);
					f && ((u === n || u === r) && o.push(f), (d === i || d === a) && s.push(f));
				}
				let c = o.reduce((e, t) => {
					let { yArr: n } = t.getSpanInfo(), [r, i] = n;
					return e.minY = Math.min(e.minY, r), e.maxY = Math.max(e.maxY, i), e;
				}, {
					minY: n,
					maxY: r
				}), l = s.reduce((e, t) => {
					let { xArr: n } = t.getSpanInfo(), [r, i] = n;
					return e.minX = Math.min(e.minX, r), e.maxX = Math.max(e.maxX, i), e;
				}, {
					minX: i,
					maxX: a
				}), u = [l.minX, l.maxX], d = [c.minY, c.maxY], f = !1;
				if (l.minX !== l.maxX || c.minY !== c.maxY) {
					let e = JSON.stringify(u) + JSON.stringify(d), t = this.ctx.focusCell?.getSpanInfo();
					f = (t && JSON.stringify(t.xArr) + JSON.stringify(t.yArr)) === e;
				}
				return {
					xArr: u,
					yArr: d,
					onlyMergeCell: f
				};
			}
			selectCols(e) {
				if (this.ctx.config.ENABLE_SELECTOR_SINGLE || !this.ctx.config.ENABLE_SELECTOR_ALL_ROWS || this.ctx.autofillMove || this.ctx.columnResizing || this.ctx.editing) return;
				let { SELECTOR_AREA_MIN_Y: t, SELECTOR_AREA_MAX_Y: n, SELECTOR_AREA_MAX_Y_OFFSET: r } = this.ctx.config, i = t, a = n || this.ctx.maxRowIndex - r;
				if (this.ctx.focusCellHeader) {
					let { colIndex: t } = this.ctx.focusCellHeader;
					if (this.ctx.clearSelector(), this.ctx.mousedown && e.colIndex >= t) {
						let n = [t, e.colIndex + e.colspan - 1], r = [i, a];
						this.setSelector(n, r);
					} else {
						let n = [e.colIndex, t + e.colspan - 1], r = [i, a];
						this.setSelector(n, r);
					}
				}
			}
			selectAll() {
				if (this.ctx.autofillMove || this.ctx.editing) return;
				let { ENABLE_SELECTOR_ALL_ROWS: e, ENABLE_SELECTOR_ALL_COLS: t } = this.ctx.config;
				if (e && t) {
					let { SELECTOR_AREA_MIN_X: e, SELECTOR_AREA_MAX_X: t, SELECTOR_AREA_MIN_Y: n, SELECTOR_AREA_MAX_Y: r, SELECTOR_AREA_MAX_X_OFFSET: i, SELECTOR_AREA_MAX_Y_OFFSET: a } = this.ctx.config, o = e, s = t || this.ctx.maxColIndex - i, c = n, l = r || this.ctx.maxRowIndex - a, u = [o, s], d = [c, l];
					this.setSelector(u, d);
				}
			}
			selectRows(e, t = !0) {
				if (this.ctx.config.ENABLE_SELECTOR_SINGLE || !this.ctx.config.ENABLE_SELECTOR_ALL_COLS || this.ctx.autofillMove || this.ctx.editing) return;
				let { SELECTOR_AREA_MIN_X: n, SELECTOR_AREA_MAX_X: r, SELECTOR_AREA_MAX_X_OFFSET: i } = this.ctx.config, a = r || this.ctx.maxColIndex - i, o = n;
				if (t) {
					this.ctx.setFocusCell(e);
					let t = [o, a], n = [e.rowIndex, e.rowIndex];
					this.setSelector(t, n);
				}
				if (this.ctx.focusCell && this.ctx.mousedown) {
					let { rowIndex: t } = this.ctx.focusCell;
					if (e.rowIndex >= t) {
						let n = [o, a], r = [t, e.rowIndex];
						this.setSelector(n, r);
					} else {
						let n = [o, a], r = [e.rowIndex, t];
						this.setSelector(n, r);
					}
				}
			}
			mouseenter() {
				if (this.ctx.config.ENABLE_SELECTOR_SINGLE || this.ctx.editing) return;
				let { mousedown: e, focusCell: t, hoverCell: n } = this.ctx;
				if (e && t && n) {
					let { rowIndex: e, colIndex: r } = t, i = Math.min(n.colIndex, r), a = Math.max(n.colIndex, r), o = Math.min(n.rowIndex, e), s = Math.max(n.rowIndex, e), c = [i, a], l = [o, s];
					this.setSelector(c, l);
				}
			}
			click(e = !1) {
				let { focusCell: t, clickCell: n } = this.ctx;
				if (t && this.isInSettingRange(t.rowIndex, t.colIndex)) {
					if (this.ctx.selector.enable = !0, n && e) {
						if (this.ctx.config.ENABLE_SELECTOR_SINGLE) return;
						let { colIndex: e, rowIndex: r } = n, { colIndex: i, rowIndex: a } = t, o = Math.min(i, e), s = Math.max(i, e), c = Math.min(a, r), l = Math.max(a, r), u = [o, s], d = [c, l];
						this.setSelector(u, d);
					} else {
						this.ctx.emit("cellSelectedClick", t);
						let e = [t.colIndex, t.colIndex], n = [t.rowIndex, t.rowIndex];
						this.setSelector(e, n);
					}
				}
			}
			clearCopyLine() {
				this.ctx.selector.xArrCopy = [-1, -1], this.ctx.selector.yArrCopy = [-1, -1];
			}
			getCell(e, t) {
				return this.ctx.body.renderRows.find((t) => t.rowIndex === e)?.cells.find((e) => e.colIndex === t);
			}
			copy() {
				if (!this.ctx.config.ENABLE_COPY || this.ctx.domSelectionStr || this.ctx.textSelectionStr) return;
				let { value: e, xArr: t, yArr: n } = this.ctx.getSelectedData();
				if (this.ctx.config.ENABLE_MERGE_CELL_LINK && this.ctx.database.hasMergeCell(t, n)) {
					if (this.ctx.onlyMergeCell && this.ctx.focusCell) {
						let r = this.ctx.focusCell;
						e = [[r.getValue()]], t = [r.colIndex, r.colIndex], n = [r.rowIndex, r.rowIndex];
					} else {
						let e = {
							code: "ERR_MERGED_CELLS_COPY",
							message: this.ctx.locale.getText("mergeCellNoCopy")
						};
						this.ctx.hasEvent("error") ? this.ctx.emit("error", e) : console.error(e.message);
						return;
					}
				}
				let { BEFORE_COPY_METHOD: r } = this.ctx.config;
				if (typeof r == "function") {
					let i = r({
						focusCell: this.ctx.focusCell,
						data: e,
						xArr: t,
						yArr: n
					});
					if (!i) return;
					e = i.data;
				}
				let i = h(e);
				navigator.clipboard ? navigator.clipboard.writeText(i).then(() => {
					this.ctx.selector.xArrCopy = this.ctx.selector.xArr.slice(), this.ctx.selector.yArrCopy = this.ctx.selector.yArr.slice(), this.ctx.emit("copyChange", {
						xArr: this.ctx.selector.xArrCopy,
						yArr: this.ctx.selector.yArrCopy,
						data: e
					}), this.ctx.emit("draw");
				}).catch((e) => console.error("Copy Failure:", e)) : console.error("current browser does not support the Clipboard API");
			}
			clearSelectedData(e, t, n = !1, r = null) {
				let i = [], a = /* @__PURE__ */ new Set();
				for (let n = 0; n <= t[1] - t[0]; n++) for (let o = 0; o <= e[1] - e[0]; o++) {
					let s = n + t[0], c = o + e[0], l = this.ctx.database.getItemValueForRowIndexAndColIndex(s, c);
					if (l) {
						let { rowKey: e, key: t } = l;
						this.ctx.database.getReadonly(e, t) || (a.add(e), i.push({
							rowKey: e,
							key: t,
							value: r,
							row: {}
						}));
					}
				}
				if (!i.length) return [];
				if (n) return i;
				this.ctx.database.batchSetItemValue(i, !0);
				let o = [];
				return a.forEach((e) => {
					o.push(this.ctx.database.getRowDataItemForRowKey(e));
				}), this.ctx.emit("clearSelectedDataChange", i, o), i;
			}
			paste() {
				if (!navigator.clipboard) {
					console.error("current browser does not support the Clipboard API");
					return;
				}
				let { ENABLE_PASTER: e } = this.ctx.config;
				if (this.ctx.selector.enable && e) {
					let e = this.ctx.selector.yArr[0], t = this.ctx.selector.xArr[0], n = /* @__PURE__ */ new Set();
					navigator.clipboard.readText().then(async (r) => {
						let i = m(r), a = [t, t + i[0].length - 1], o = [e, e + i.length - 1], [s, c] = o, [l, u] = a, d = c - this.ctx.maxRowIndex, f = u - this.ctx.maxColIndex;
						(d > 0 || f > 0) && this.ctx.emit("onPastedDataOverflow", {
							maxY: c,
							maxX: u,
							minY: s,
							minX: l,
							overflowRowCount: d,
							overflowColCount: f,
							textArr: i
						});
						let p = i.length === 1 && i[0].length === 1;
						if (this.ctx.config.ENABLE_MERGE_CELL_LINK && this.ctx.database.hasMergeCell(a, o) && !p) {
							let e = {
								code: "ERR_MERGED_CELLS_PASTE",
								message: this.ctx.locale.getText("mergeCellNoPaste"),
								data: []
							};
							this.ctx.hasEvent("error") ? this.ctx.emit("error", e) : console.error(e.message);
							return;
						}
						let h = [];
						for (let r = 0; r <= i.length - 1; r++) {
							let a = i[r].length;
							for (let o = 0; o <= a - 1; o++) {
								let a = r + e, s = o + t, c = i[r][o], l = this.ctx.database.getItemValueForRowIndexAndColIndex(a, s);
								if (l) {
									let { rowKey: e, key: t } = l;
									this.ctx.database.getReadonly(e, t) || (n.add(e), h.push({
										rowKey: e,
										key: t,
										value: c,
										row: {}
									}));
								}
							}
						}
						if (this.isCut) {
							let e = this.clearSelectedData(this.ctx.selector.xArrCopy, this.ctx.selector.yArrCopy, !0), t = h.map((e) => `${e.rowKey}-${e.key}`);
							e.forEach((e) => {
								t.includes(`${e.rowKey}-${e.key}`) || h.unshift(e);
							}), this.isCut = !1;
						}
						if (!h.length) return;
						let { BEFORE_PASTE_DATA_METHOD: g } = this.ctx.config;
						if (typeof g == "function" && (h = await g(h.map((e) => ({
							rowKey: e.rowKey,
							key: e.key,
							value: e.value,
							oldValue: this.ctx.database.getItemValue(e.rowKey, e.key),
							row: this.ctx.database.getRowDataItemForRowKey(e.rowKey)
						})), a, o, i), h && !h.length)) return;
						this.clearCopyLine(), this.ctx.batchSetItemValueByEditor(h, !0);
						let _ = [];
						n.forEach((e) => {
							_.push(this.ctx.database.getRowDataItemForRowKey(e));
						}), this.ctx.emit("pasteChange", h, _), this.ctx.emit("draw");
					}).catch((e) => {
						console.error("Failed to get the clipboard content:", e);
					});
				}
			}
			moveFocus(e) {
				if (this.ctx.editing) return;
				let { focusCell: t } = this.ctx;
				if (!t) return;
				let { colIndex: n = 0, rowIndex: r = 0 } = t, i = this.ctx.maxColIndex, a = this.ctx.maxRowIndex;
				switch (e) {
					case "LEFT":
						n > 0 && n--;
						break;
					case "TOP":
						r > 0 && r--;
						break;
					case "RIGHT":
						n < i && n++;
						break;
					case "BOTTOM": r < a && r++;
				}
				let o = [n, n], s = [r, r], c = this.getCell(r, n);
				c && (c.operation || this.isInSettingRange(c.rowIndex, c.colIndex) && (this.ctx.setFocusCell(c), this.setSelector(o, s), this.adjustBoundaryPosition(), this.ctx.emit("moveFocus", c), this.ctx.emit("draw")));
			}
			isInSettingRange(e, t) {
				let { SELECTOR_AREA_MIN_X: n, SELECTOR_AREA_MAX_X: r, SELECTOR_AREA_MIN_Y: i, SELECTOR_AREA_MAX_Y: a, SELECTOR_AREA_MAX_X_OFFSET: o, SELECTOR_AREA_MAX_Y_OFFSET: s } = this.ctx.config, c = n, l = r || this.ctx.maxColIndex - o, u = i, d = a || this.ctx.maxRowIndex - s;
				return !(t < c || t > l || e < u || e > d);
			}
			adjustBoundaryPosition() {
				let { stageHeight: e, stageWidth: t, focusCell: n, fixedRightWidth: r, fixedLeftWidth: i, header: a, footer: o, body: s, scrollX: c, scrollY: l, config: { FOOTER_FIXED: u, FOOTER_POSITION: d, ENABLE_MERGE_CELL_LINK: f } } = this.ctx, p = E(this.ctx.config);
				if (!n) return;
				f && this.ctx.onlyMergeCell && n.updateSpanInfo();
				let { drawX: m, drawY: h, width: g, height: _, fixed: v } = n, y = i - m + 1, b = n.drawX + g - (t - r) + 1, x = a.height - h, S = _;
				S > s.visibleHeight && (S = s.visibleHeight);
				let C = 0;
				u && (d === "top" ? x = a.height + o.height - h : C = o.visibleHeight);
				let w = h + S - (e - C - p), T = c, D = l;
				b > 0 && !v ? T = Math.floor(c + b) : y > 0 && !v && (T = Math.floor(c - y)), x > 0 ? D = Math.floor(l - x) : w > 0 && (D = Math.floor(l + w)), (Math.abs(c - T) > 2.5 || Math.abs(l - D) > 2.5) && this.ctx.setScroll(T, D);
			}
			destroy() {}
		}
		class Ae {
			constructor(e) {
				n(this, "ctx"), n(this, "maxColRowCell"), this.ctx = e, this.init();
			}
			init() {
				this.ctx.on("mousemove", (e) => {
					if (this.ctx.stageElement.style.cursor === "crosshair" && (this.ctx.stageElement.style.cursor = "default"), this.ctx.editing || !this.ctx.focusCell || !this.maxColRowCell) return;
					let { offsetX: t, offsetY: n } = this.ctx.getOffset(e), { colIndex: r, rowIndex: i, drawX: a, drawY: o, width: s, height: c } = this.maxColRowCell, l = r === this.ctx.maxColIndex || i === this.ctx.maxRowIndex ? 0 : 2, u = a + s - 6 + l, d = o + c - 6 + l;
					t > u && n > d && t < u + 6 && n < d + 6 && (this.ctx.stageElement.style.cursor = "crosshair"), this.ctx.autofillMove && this.ctx.startAdjustPosition(e);
				}), this.ctx.on("cellMouseenter", (e) => {
					let { xArr: t, yArr: n } = this.ctx.selector, r = t[1], i = n[1], { colIndex: a, rowIndex: o } = e;
					this.ctx.config.ENABLE_AUTOFILL && a === r && o === i && (this.maxColRowCell = e), this.mouseenter(e);
				}), this.ctx.on("mousedown", () => {
					this.ctx.stageElement.style.cursor === "crosshair" && this.setMousedown();
				}), this.ctx.on("mouseup", () => {
					this.setMouseUp(), this.ctx.stopAdjustPosition();
				});
			}
			isAutofillIng() {
				let { xArr: e, yArr: t } = this.ctx.selector;
				return JSON.stringify(this.ctx.autofill.xArr) !== JSON.stringify(e) || JSON.stringify(this.ctx.autofill.yArr) !== JSON.stringify(t);
			}
			setMousedown() {
				this.ctx.autofill.enable = !0, this.ctx.autofillMove = !0, this.ctx.disableHoverIconClick = !0;
			}
			setMouseUp() {
				this.ctx.autofill.enable && (this.isAutofillIng() && this.autofillData(), this.ctx.autofill.enable = !1, this.ctx.autofillMove = !1, this.ctx.autofill.xArr = [-1, -1], this.ctx.autofill.yArr = [-1, -1], setTimeout(() => {
					this.ctx.disableHoverIconClick = !1;
				}, 0));
			}
			setAutofill(e, t) {
				let { ENABLE_AUTOFILL: n, ENABLE_AUTOFILL_SPAN_COL: r, ENABLE_AUTOFILL_SPAN_ROW: i } = this.ctx.config;
				if (!n) return;
				let a = e, o = t, s = this.ctx.selector.xArr, c = this.ctx.selector.yArr;
				if (!(!i && JSON.stringify(c) !== JSON.stringify(o)) && !(!r && JSON.stringify(s) !== JSON.stringify(a)) && (JSON.stringify(this.ctx.autofill.xArr) !== JSON.stringify(a) || JSON.stringify(this.ctx.autofill.yArr) !== JSON.stringify(o))) {
					let { SELECTOR_AREA_MIN_X: e, SELECTOR_AREA_MAX_X: t, SELECTOR_AREA_MIN_Y: n, SELECTOR_AREA_MAX_Y: r, SELECTOR_AREA_MAX_X_OFFSET: i, SELECTOR_AREA_MAX_Y_OFFSET: s } = this.ctx.config, c = e, l = t || this.ctx.maxColIndex - i, u = n, d = r || this.ctx.maxRowIndex - s, [f, p] = a, [m, h] = o;
					if (f < c || m < u) return;
					a = [Math.max(c, f), Math.min(l, p)], o = [Math.max(u, m), Math.min(d, h)];
					let { BEFORE_SET_AUTOFILL_METHOD: g } = this.ctx.config;
					if (typeof g == "function") {
						let e = g({
							focusCell: this.ctx.focusCell,
							xArr: a,
							yArr: o
						});
						if (!e) return;
						a = e.xArr, o = e.yArr;
					}
					this.ctx.autofill.xArr = a, this.ctx.autofill.yArr = o, this.ctx.emit("setAutofill", this.ctx.autofill), this.ctx.emit("draw");
				}
			}
			async autofillData() {
				let e = /* @__PURE__ */ new Set(), t = this.ctx.getSelectedData(), n = /* @__PURE__ */ new Map();
				for (let e = 0; e <= t.yArr[1] - t.yArr[0]; e++) for (let r = 0; r <= t.xArr[1] - t.xArr[0]; r++) {
					let i = e + t.yArr[0], a = r + t.xArr[0];
					n.set(`${i}-${a}`, !0);
				}
				let { value: r } = t, i = r[0].length, a = r.length, o = this.ctx.autofill.xArr, s = this.ctx.autofill.yArr, c = i === 1 && a === 1;
				if (this.ctx.config.ENABLE_MERGE_CELL_LINK && this.ctx.database.hasMergeCell(o, s) && !c) {
					let e = {
						code: "ERR_MERGED_CELLS_AUTOFILL",
						message: this.ctx.locale.getText("mergeCellNoFill"),
						data: []
					};
					this.ctx.hasEvent("error") ? this.ctx.emit("error", e) : console.error(e.message);
					return;
				}
				let l = [];
				for (let t = 0; t <= s[1] - s[0]; t++) for (let c = 0; c <= o[1] - o[0]; c++) {
					let u = c + o[0], d = t + s[0], f = r[t % a][c % i], p = this.ctx.database.getItemValueForRowIndexAndColIndex(d, u), m = `${d}-${u}`;
					if (p && !n.has(m)) {
						let { rowKey: t, key: n } = p;
						this.ctx.database.getReadonly(t, n) || (e.add(t), l.push({
							rowKey: t,
							key: n,
							value: f,
							row: {}
						}));
					}
				}
				if (!l.length) return;
				this.ctx.selector.xArr = this.ctx.autofill.xArr, this.ctx.selector.yArr = this.ctx.autofill.yArr;
				let { BEFORE_AUTOFILL_DATA_METHOD: u } = this.ctx.config;
				if (typeof u == "function" && (l = await u(l.map((e) => ({
					rowKey: e.rowKey,
					key: e.key,
					value: e.value,
					oldValue: this.ctx.database.getItemValue(e.rowKey, e.key),
					row: this.ctx.database.getRowDataItemForRowKey(e.rowKey)
				})), o, s), l && !l.length)) return;
				this.ctx.batchSetItemValueByEditor(l, !0);
				let d = [];
				e.forEach((e) => {
					d.push(this.ctx.database.getRowDataItemForRowKey(e));
				}), this.ctx.emit("autofillChange", l, d), this.ctx.emit("draw");
			}
			mouseenter(e) {
				if ([
					"index",
					"selection",
					"index-selection"
				].includes(e.type)) return;
				let { selector: t, autofill: n } = this.ctx;
				if (this.ctx.mousedown && t.enable && n.enable) {
					let { rowIndex: n, colIndex: r } = e, i = t.xArr.slice(), a = t.yArr.slice();
					n >= t.yArr[0] && n <= t.yArr[1] ? r > t.xArr[1] ? i.splice(1, 1, r) : r < t.xArr[0] && i.splice(0, 1, r) : n > t.yArr[1] ? a.splice(1, 1, n) : n < t.yArr[0] && a.splice(0, 1, n), this.setAutofill(i, a);
				}
			}
			destroy() {}
		}
		let je = Math.min, Me = Math.max, Ne = Math.round, Pe = Math.floor, Fe = (e) => ({
			x: e,
			y: e
		}), Ie = {
			left: "right",
			right: "left",
			bottom: "top",
			top: "bottom"
		};
		function Le(e, t, n) {
			return Me(e, je(t, n));
		}
		function Re(e, t) {
			return typeof e == "function" ? e(t) : e;
		}
		function ze(e) {
			return e.split("-")[0];
		}
		function U(e) {
			return e.split("-")[1];
		}
		function Be(e) {
			return e === "x" ? "y" : "x";
		}
		function Ve(e) {
			return e === "y" ? "height" : "width";
		}
		function W(e) {
			let t = e[0];
			return t === "t" || t === "b" ? "y" : "x";
		}
		function G(e) {
			return Be(W(e));
		}
		function He(e, t, n) {
			n === void 0 && (n = !1);
			let r = U(e), i = G(e), a = Ve(i), o = i === "x" ? r === (n ? "end" : "start") ? "right" : "left" : r === "start" ? "bottom" : "top";
			return t.reference[a] > t.floating[a] && (o = Je(o)), [o, Je(o)];
		}
		function Ue(e) {
			let t = Je(e);
			return [
				K(e),
				t,
				K(t)
			];
		}
		function K(e) {
			return e.includes("start") ? e.replace("start", "end") : e.replace("end", "start");
		}
		let We = ["left", "right"], Ge = ["right", "left"], q = ["top", "bottom"], Ke = ["bottom", "top"];
		function J(e, t, n) {
			switch (e) {
				case "top":
				case "bottom": return n ? t ? Ge : We : t ? We : Ge;
				case "left":
				case "right": return t ? q : Ke;
				default: return [];
			}
		}
		function qe(e, t, n, r) {
			let i = U(e), a = J(ze(e), n === "start", r);
			return i && (a = a.map((e) => e + "-" + i), t && (a = a.concat(a.map(K)))), a;
		}
		function Je(e) {
			let t = ze(e);
			return Ie[t] + e.slice(t.length);
		}
		function Ye(e) {
			return {
				top: 0,
				right: 0,
				bottom: 0,
				left: 0,
				...e
			};
		}
		function Xe(e) {
			return typeof e == "number" ? {
				top: e,
				right: e,
				bottom: e,
				left: e
			} : Ye(e);
		}
		function Y(e) {
			let { x: t, y: n, width: r, height: i } = e;
			return {
				width: r,
				height: i,
				top: n,
				left: t,
				right: t + r,
				bottom: n + i,
				x: t,
				y: n
			};
		}
		function Ze(e, t, n) {
			let { reference: r, floating: i } = e, a = W(t), o = G(t), s = Ve(o), c = ze(t), l = a === "y", u = r.x + r.width / 2 - i.width / 2, d = r.y + r.height / 2 - i.height / 2, f = r[s] / 2 - i[s] / 2, p;
			switch (c) {
				case "top":
					p = {
						x: u,
						y: r.y - i.height
					};
					break;
				case "bottom":
					p = {
						x: u,
						y: r.y + r.height
					};
					break;
				case "right":
					p = {
						x: r.x + r.width,
						y: d
					};
					break;
				case "left":
					p = {
						x: r.x - i.width,
						y: d
					};
					break;
				default: p = {
					x: r.x,
					y: r.y
				};
			}
			switch (U(t)) {
				case "start":
					p[o] -= f * (n && l ? -1 : 1);
					break;
				case "end": p[o] += f * (n && l ? -1 : 1);
			}
			return p;
		}
		async function X(e, t) {
			var n;
			t === void 0 && (t = {});
			let { x: r, y: i, platform: a, rects: o, elements: s, strategy: c } = e, { boundary: l = "clippingAncestors", rootBoundary: u = "viewport", elementContext: d = "floating", altBoundary: f = !1, padding: p = 0 } = Re(t, e), m = Xe(p), h = s[f ? d === "floating" ? "reference" : "floating" : d], g = Y(await a.getClippingRect({
				element: (n = await (a.isElement == null ? void 0 : a.isElement(h))) == null || n ? h : h.contextElement || await (a.getDocumentElement == null ? void 0 : a.getDocumentElement(s.floating)),
				boundary: l,
				rootBoundary: u,
				strategy: c
			})), _ = d === "floating" ? {
				x: r,
				y: i,
				width: o.floating.width,
				height: o.floating.height
			} : o.reference, v = await (a.getOffsetParent == null ? void 0 : a.getOffsetParent(s.floating)), y = await (a.isElement == null ? void 0 : a.isElement(v)) && await (a.getScale == null ? void 0 : a.getScale(v)) || {
				x: 1,
				y: 1
			}, b = Y(a.convertOffsetParentRelativeRectToViewportRelativeRect ? await a.convertOffsetParentRelativeRectToViewportRelativeRect({
				elements: s,
				rect: _,
				offsetParent: v,
				strategy: c
			}) : _);
			return {
				top: (g.top - b.top + m.top) / y.y,
				bottom: (b.bottom - g.bottom + m.bottom) / y.y,
				left: (g.left - b.left + m.left) / y.x,
				right: (b.right - g.right + m.right) / y.x
			};
		}
		let Qe = async (e, t, n) => {
			let { placement: r = "bottom", strategy: i = "absolute", middleware: a = [], platform: o } = n, s = o.detectOverflow ? o : {
				...o,
				detectOverflow: X
			}, c = await (o.isRTL == null ? void 0 : o.isRTL(t)), l = await o.getElementRects({
				reference: e,
				floating: t,
				strategy: i
			}), { x: u, y: d } = Ze(l, r, c), f = r, p = 0, m = {};
			for (let n = 0; n < a.length; n++) {
				let h = a[n];
				if (!h) continue;
				let { name: g, fn: _ } = h, { x: v, y, data: b, reset: x } = await _({
					x: u,
					y: d,
					initialPlacement: r,
					placement: f,
					strategy: i,
					middlewareData: m,
					rects: l,
					platform: s,
					elements: {
						reference: e,
						floating: t
					}
				});
				u = v ?? u, d = y ?? d, m[g] = {
					...m[g],
					...b
				}, x && p < 50 && (p++, typeof x == "object" && (x.placement && (f = x.placement), x.rects && (l = x.rects === !0 ? await o.getElementRects({
					reference: e,
					floating: t,
					strategy: i
				}) : x.rects), {x: u, y: d} = Ze(l, f, c)), n = -1);
			}
			return {
				x: u,
				y: d,
				placement: f,
				strategy: i,
				middlewareData: m
			};
		}, $e = (e) => ({
			name: "arrow",
			options: e,
			async fn(t) {
				let { x: n, y: r, placement: i, rects: a, platform: o, elements: s, middlewareData: c } = t, { element: l, padding: u = 0 } = Re(e, t) || {};
				if (l == null) return {};
				let d = Xe(u), f = {
					x: n,
					y: r
				}, p = G(i), m = Ve(p), h = await o.getDimensions(l), g = p === "y", _ = g ? "top" : "left", v = g ? "bottom" : "right", y = g ? "clientHeight" : "clientWidth", b = a.reference[m] + a.reference[p] - f[p] - a.floating[m], x = f[p] - a.reference[p], S = await (o.getOffsetParent == null ? void 0 : o.getOffsetParent(l)), C = S ? S[y] : 0;
				(!C || !await (o.isElement == null ? void 0 : o.isElement(S))) && (C = s.floating[y] || a.floating[m]);
				let w = b / 2 - x / 2, T = C / 2 - h[m] / 2 - 1, E = je(d[_], T), D = je(d[v], T), O = E, k = C - h[m] - D, A = C / 2 - h[m] / 2 + w, ee = Le(O, A, k), j = !c.arrow && U(i) != null && A !== ee && a.reference[m] / 2 - (A < O ? E : D) - h[m] / 2 < 0, M = j ? A < O ? A - O : A - k : 0;
				return {
					[p]: f[p] + M,
					data: {
						[p]: ee,
						centerOffset: A - ee - M,
						...j && { alignmentOffset: M }
					},
					reset: j
				};
			}
		}), et = function(e) {
			return e === void 0 && (e = {}), {
				name: "flip",
				options: e,
				async fn(t) {
					var n;
					let { placement: r, middlewareData: i, rects: a, initialPlacement: o, platform: s, elements: c } = t, { mainAxis: l = !0, crossAxis: u = !0, fallbackPlacements: d, fallbackStrategy: f = "bestFit", fallbackAxisSideDirection: p = "none", flipAlignment: m = !0, ...h } = Re(e, t);
					if ((n = i.arrow) != null && n.alignmentOffset) return {};
					let g = ze(r), _ = W(o), v = ze(o) === o, y = await (s.isRTL == null ? void 0 : s.isRTL(c.floating)), b = d || (v || !m ? [Je(o)] : Ue(o)), x = p !== "none";
					!d && x && b.push(...qe(o, m, p, y));
					let S = [o, ...b], C = await s.detectOverflow(t, h), w = [], T = i.flip?.overflows || [];
					if (l && w.push(C[g]), u) {
						let e = He(r, a, y);
						w.push(C[e[0]], C[e[1]]);
					}
					if (T = [...T, {
						placement: r,
						overflows: w
					}], !w.every((e) => e <= 0)) {
						let e = (i.flip?.index || 0) + 1, t = S[e];
						if (t && (u !== "alignment" || _ === W(t) || T.every((e) => W(e.placement) !== _ || e.overflows[0] > 0))) return {
							data: {
								index: e,
								overflows: T
							},
							reset: { placement: t }
						};
						let n = T.filter((e) => e.overflows[0] <= 0).sort((e, t) => e.overflows[1] - t.overflows[1])[0]?.placement;
						if (!n) switch (f) {
							case "bestFit": {
								let e = T.filter((e) => {
									if (x) {
										let t = W(e.placement);
										return t === _ || t === "y";
									}
									return !0;
								}).map((e) => [e.placement, e.overflows.filter((e) => e > 0).reduce((e, t) => e + t, 0)]).sort((e, t) => e[1] - t[1])[0]?.[0];
								e && (n = e);
								break;
							}
							case "initialPlacement":
								n = o;
								break;
						}
						if (r !== n) return { reset: { placement: n } };
					}
					return {};
				}
			};
		}, tt = /* @__PURE__ */ new Set(["left", "top"]);
		async function nt(e, t) {
			let { placement: n, platform: r, elements: i } = e, a = await (r.isRTL == null ? void 0 : r.isRTL(i.floating)), o = ze(n), s = U(n), c = W(n) === "y", l = tt.has(o) ? -1 : 1, u = a && c ? -1 : 1, d = Re(t, e), { mainAxis: f, crossAxis: p, alignmentAxis: m } = typeof d == "number" ? {
				mainAxis: d,
				crossAxis: 0,
				alignmentAxis: null
			} : {
				mainAxis: d.mainAxis || 0,
				crossAxis: d.crossAxis || 0,
				alignmentAxis: d.alignmentAxis
			};
			return s && typeof m == "number" && (p = s === "end" ? m * -1 : m), c ? {
				x: p * u,
				y: f * l
			} : {
				x: f * l,
				y: p * u
			};
		}
		let rt = function(e) {
			return e === void 0 && (e = 0), {
				name: "offset",
				options: e,
				async fn(t) {
					var n;
					let { x: r, y: i, placement: a, middlewareData: o } = t, s = await nt(t, e);
					return a === o.offset?.placement && (n = o.arrow) != null && n.alignmentOffset ? {} : {
						x: r + s.x,
						y: i + s.y,
						data: {
							...s,
							placement: a
						}
					};
				}
			};
		}, Z = function(e) {
			return e === void 0 && (e = {}), {
				name: "shift",
				options: e,
				async fn(t) {
					let { x: n, y: r, placement: i, platform: a } = t, { mainAxis: o = !0, crossAxis: s = !1, limiter: c = { fn: (e) => {
						let { x: t, y: n } = e;
						return {
							x: t,
							y: n
						};
					} }, ...l } = Re(e, t), u = {
						x: n,
						y: r
					}, d = await a.detectOverflow(t, l), f = W(ze(i)), p = Be(f), m = u[p], h = u[f];
					if (o) {
						let e = p === "y" ? "top" : "left", t = p === "y" ? "bottom" : "right", n = m + d[e], r = m - d[t];
						m = Le(n, m, r);
					}
					if (s) {
						let e = f === "y" ? "top" : "left", t = f === "y" ? "bottom" : "right", n = h + d[e], r = h - d[t];
						h = Le(n, h, r);
					}
					let g = c.fn({
						...t,
						[p]: m,
						[f]: h
					});
					return {
						...g,
						data: {
							x: g.x - n,
							y: g.y - r,
							enabled: {
								[p]: o,
								[f]: s
							}
						}
					};
				}
			};
		};
		function it() {
			return typeof window < "u";
		}
		function at(e) {
			return ct(e) ? (e.nodeName || "").toLowerCase() : "#document";
		}
		function ot(e) {
			var t;
			return (e == null || (t = e.ownerDocument) == null ? void 0 : t.defaultView) || window;
		}
		function st(e) {
			return ((ct(e) ? e.ownerDocument : e.document) || window.document)?.documentElement;
		}
		function ct(e) {
			return it() ? e instanceof Node || e instanceof ot(e).Node : !1;
		}
		function lt(e) {
			return it() ? e instanceof Element || e instanceof ot(e).Element : !1;
		}
		function ut(e) {
			return it() ? e instanceof HTMLElement || e instanceof ot(e).HTMLElement : !1;
		}
		function dt(e) {
			return !it() || typeof ShadowRoot > "u" ? !1 : e instanceof ShadowRoot || e instanceof ot(e).ShadowRoot;
		}
		function ft(e) {
			let { overflow: t, overflowX: n, overflowY: r, display: i } = Ct(e);
			return /auto|scroll|overlay|hidden|clip/.test(t + r + n) && i !== "inline" && i !== "contents";
		}
		function pt(e) {
			return /^(table|td|th)$/.test(at(e));
		}
		function mt(e) {
			try {
				if (e.matches(":popover-open")) return !0;
			} catch {}
			try {
				return e.matches(":modal");
			} catch {
				return !1;
			}
		}
		let ht = /transform|translate|scale|rotate|perspective|filter/, gt = /paint|layout|strict|content/, _t = (e) => !!e && e !== "none", vt;
		function yt(e) {
			let t = lt(e) ? Ct(e) : e;
			return _t(t.transform) || _t(t.translate) || _t(t.scale) || _t(t.rotate) || _t(t.perspective) || !xt() && (_t(t.backdropFilter) || _t(t.filter)) || ht.test(t.willChange || "") || gt.test(t.contain || "");
		}
		function bt(e) {
			let t = Tt(e);
			for (; ut(t) && !St(t);) {
				if (yt(t)) return t;
				if (mt(t)) return null;
				t = Tt(t);
			}
			return null;
		}
		function xt() {
			return vt ??= typeof CSS < "u" && CSS.supports && CSS.supports("-webkit-backdrop-filter", "none"), vt;
		}
		function St(e) {
			return /^(html|body|#document)$/.test(at(e));
		}
		function Ct(e) {
			return ot(e).getComputedStyle(e);
		}
		function wt(e) {
			return lt(e) ? {
				scrollLeft: e.scrollLeft,
				scrollTop: e.scrollTop
			} : {
				scrollLeft: e.scrollX,
				scrollTop: e.scrollY
			};
		}
		function Tt(e) {
			if (at(e) === "html") return e;
			let t = e.assignedSlot || e.parentNode || dt(e) && e.host || st(e);
			return dt(t) ? t.host : t;
		}
		function Et(e) {
			let t = Tt(e);
			return St(t) ? e.ownerDocument ? e.ownerDocument.body : e.body : ut(t) && ft(t) ? t : Et(t);
		}
		function Dt(e, t, n) {
			t === void 0 && (t = []), n === void 0 && (n = !0);
			let r = Et(e), i = r === e.ownerDocument?.body, a = ot(r);
			if (i) {
				let e = Ot(a);
				return t.concat(a, a.visualViewport || [], ft(r) ? r : [], e && n ? Dt(e) : []);
			}
			return t.concat(r, Dt(r, [], n));
		}
		function Ot(e) {
			return e.parent && Object.getPrototypeOf(e.parent) ? e.frameElement : null;
		}
		function kt(e) {
			let t = Ct(e), n = parseFloat(t.width) || 0, r = parseFloat(t.height) || 0, i = ut(e), a = i ? e.offsetWidth : n, o = i ? e.offsetHeight : r, s = Ne(n) !== a || Ne(r) !== o;
			return s && (n = a, r = o), {
				width: n,
				height: r,
				$: s
			};
		}
		function At(e) {
			return lt(e) ? e : e.contextElement;
		}
		function jt(e) {
			let t = At(e);
			if (!ut(t)) return Fe(1);
			let n = t.getBoundingClientRect(), { width: r, height: i, $: a } = kt(t), o = (a ? Ne(n.width) : n.width) / r, s = (a ? Ne(n.height) : n.height) / i;
			return (!o || !Number.isFinite(o)) && (o = 1), (!s || !Number.isFinite(s)) && (s = 1), {
				x: o,
				y: s
			};
		}
		let Mt = Fe(0);
		function Nt(e) {
			let t = ot(e);
			return !xt() || !t.visualViewport ? Mt : {
				x: t.visualViewport.offsetLeft,
				y: t.visualViewport.offsetTop
			};
		}
		function Pt(e, t, n) {
			return t === void 0 && (t = !1), !n || t && n !== ot(e) ? !1 : t;
		}
		function Ft(e, t, n, r) {
			t === void 0 && (t = !1), n === void 0 && (n = !1);
			let i = e.getBoundingClientRect(), a = At(e), o = Fe(1);
			t && (r ? lt(r) && (o = jt(r)) : o = jt(e));
			let s = Pt(a, n, r) ? Nt(a) : Fe(0), c = (i.left + s.x) / o.x, l = (i.top + s.y) / o.y, u = i.width / o.x, d = i.height / o.y;
			if (a) {
				let e = ot(a), t = r && lt(r) ? ot(r) : r, n = e, i = Ot(n);
				for (; i && r && t !== n;) {
					let e = jt(i), t = i.getBoundingClientRect(), r = Ct(i), a = t.left + (i.clientLeft + parseFloat(r.paddingLeft)) * e.x, o = t.top + (i.clientTop + parseFloat(r.paddingTop)) * e.y;
					c *= e.x, l *= e.y, u *= e.x, d *= e.y, c += a, l += o, n = ot(i), i = Ot(n);
				}
			}
			return Y({
				width: u,
				height: d,
				x: c,
				y: l
			});
		}
		function It(e, t) {
			let n = wt(e).scrollLeft;
			return t ? t.left + n : Ft(st(e)).left + n;
		}
		function Lt(e, t) {
			let n = e.getBoundingClientRect();
			return {
				x: n.left + t.scrollLeft - It(e, n),
				y: n.top + t.scrollTop
			};
		}
		function Rt(e) {
			let { elements: t, rect: n, offsetParent: r, strategy: i } = e, a = i === "fixed", o = st(r), s = t ? mt(t.floating) : !1;
			if (r === o || s && a) return n;
			let c = {
				scrollLeft: 0,
				scrollTop: 0
			}, l = Fe(1), u = Fe(0), d = ut(r);
			if ((d || !d && !a) && ((at(r) !== "body" || ft(o)) && (c = wt(r)), d)) {
				let e = Ft(r);
				l = jt(r), u.x = e.x + r.clientLeft, u.y = e.y + r.clientTop;
			}
			let f = o && !d && !a ? Lt(o, c) : Fe(0);
			return {
				width: n.width * l.x,
				height: n.height * l.y,
				x: n.x * l.x - c.scrollLeft * l.x + u.x + f.x,
				y: n.y * l.y - c.scrollTop * l.y + u.y + f.y
			};
		}
		function zt(e) {
			return Array.from(e.getClientRects());
		}
		function Bt(e) {
			let t = st(e), n = wt(e), r = e.ownerDocument.body, i = Me(t.scrollWidth, t.clientWidth, r.scrollWidth, r.clientWidth), a = Me(t.scrollHeight, t.clientHeight, r.scrollHeight, r.clientHeight), o = -n.scrollLeft + It(e), s = -n.scrollTop;
			return Ct(r).direction === "rtl" && (o += Me(t.clientWidth, r.clientWidth) - i), {
				width: i,
				height: a,
				x: o,
				y: s
			};
		}
		function Vt(e, t) {
			let n = ot(e), r = st(e), i = n.visualViewport, a = r.clientWidth, o = r.clientHeight, s = 0, c = 0;
			if (i) {
				a = i.width, o = i.height;
				let e = xt();
				(!e || e && t === "fixed") && (s = i.offsetLeft, c = i.offsetTop);
			}
			let l = It(r);
			if (l <= 0) {
				let e = r.ownerDocument, t = e.body, n = getComputedStyle(t), i = e.compatMode === "CSS1Compat" && parseFloat(n.marginLeft) + parseFloat(n.marginRight) || 0, o = Math.abs(r.clientWidth - t.clientWidth - i);
				o <= 25 && (a -= o);
			} else l <= 25 && (a += l);
			return {
				width: a,
				height: o,
				x: s,
				y: c
			};
		}
		function Ht(e, t) {
			let n = Ft(e, !0, t === "fixed"), r = n.top + e.clientTop, i = n.left + e.clientLeft, a = ut(e) ? jt(e) : Fe(1);
			return {
				width: e.clientWidth * a.x,
				height: e.clientHeight * a.y,
				x: i * a.x,
				y: r * a.y
			};
		}
		function Ut(e, t, n) {
			let r;
			if (t === "viewport") r = Vt(e, n);
			else if (t === "document") r = Bt(st(e));
			else if (lt(t)) r = Ht(t, n);
			else {
				let n = Nt(e);
				r = {
					x: t.x - n.x,
					y: t.y - n.y,
					width: t.width,
					height: t.height
				};
			}
			return Y(r);
		}
		function Wt(e, t) {
			let n = Tt(e);
			return n === t || !lt(n) || St(n) ? !1 : Ct(n).position === "fixed" || Wt(n, t);
		}
		function Gt(e, t) {
			let n = t.get(e);
			if (n) return n;
			let r = Dt(e, [], !1).filter((e) => lt(e) && at(e) !== "body"), i = null, a = Ct(e).position === "fixed", o = a ? Tt(e) : e;
			for (; lt(o) && !St(o);) {
				let t = Ct(o), n = yt(o);
				!n && t.position === "fixed" && (i = null), (a ? !n && !i : !n && t.position === "static" && i && (i.position === "absolute" || i.position === "fixed") || ft(o) && !n && Wt(e, o)) ? r = r.filter((e) => e !== o) : i = t, o = Tt(o);
			}
			return t.set(e, r), r;
		}
		function Kt(e) {
			let { element: t, boundary: n, rootBoundary: r, strategy: i } = e, a = [...n === "clippingAncestors" ? mt(t) ? [] : Gt(t, this._c) : [].concat(n), r], o = Ut(t, a[0], i), s = o.top, c = o.right, l = o.bottom, u = o.left;
			for (let e = 1; e < a.length; e++) {
				let n = Ut(t, a[e], i);
				s = Me(n.top, s), c = je(n.right, c), l = je(n.bottom, l), u = Me(n.left, u);
			}
			return {
				width: c - u,
				height: l - s,
				x: u,
				y: s
			};
		}
		function qt(e) {
			let { width: t, height: n } = kt(e);
			return {
				width: t,
				height: n
			};
		}
		function Jt(e, t, n) {
			let r = ut(t), i = st(t), a = n === "fixed", o = Ft(e, !0, a, t), s = {
				scrollLeft: 0,
				scrollTop: 0
			}, c = Fe(0);
			function l() {
				c.x = It(i);
			}
			if (r || !r && !a) {
				if ((at(t) !== "body" || ft(i)) && (s = wt(t)), r) {
					let e = Ft(t, !0, a, t);
					c.x = e.x + t.clientLeft, c.y = e.y + t.clientTop;
				} else i && l();
			}
			a && !r && i && l();
			let u = i && !r && !a ? Lt(i, s) : Fe(0);
			return {
				x: o.left + s.scrollLeft - c.x - u.x,
				y: o.top + s.scrollTop - c.y - u.y,
				width: o.width,
				height: o.height
			};
		}
		function Yt(e) {
			return Ct(e).position === "static";
		}
		function Xt(e, t) {
			if (!ut(e) || Ct(e).position === "fixed") return null;
			if (t) return t(e);
			let n = e.offsetParent;
			return st(e) === n && (n = n.ownerDocument.body), n;
		}
		function Zt(e, t) {
			let n = ot(e);
			if (mt(e)) return n;
			if (!ut(e)) {
				let t = Tt(e);
				for (; t && !St(t);) {
					if (lt(t) && !Yt(t)) return t;
					t = Tt(t);
				}
				return n;
			}
			let r = Xt(e, t);
			for (; r && pt(r) && Yt(r);) r = Xt(r, t);
			return r && St(r) && Yt(r) && !yt(r) ? n : r || bt(e) || n;
		}
		let Qt = async function(e) {
			let t = this.getOffsetParent || Zt, n = this.getDimensions, r = await n(e.floating);
			return {
				reference: Jt(e.reference, await t(e.floating), e.strategy),
				floating: {
					x: 0,
					y: 0,
					width: r.width,
					height: r.height
				}
			};
		};
		function $t(e) {
			return Ct(e).direction === "rtl";
		}
		let en = {
			convertOffsetParentRelativeRectToViewportRelativeRect: Rt,
			getDocumentElement: st,
			getClippingRect: Kt,
			getOffsetParent: Zt,
			getElementRects: Qt,
			getClientRects: zt,
			getDimensions: qt,
			getScale: jt,
			isElement: lt,
			isRTL: $t
		};
		function tn(e, t) {
			return e.x === t.x && e.y === t.y && e.width === t.width && e.height === t.height;
		}
		function nn(e, t) {
			let n = null, r, i = st(e);
			function a() {
				var e;
				clearTimeout(r), (e = n) == null || e.disconnect(), n = null;
			}
			function o(s, c) {
				s === void 0 && (s = !1), c === void 0 && (c = 1), a();
				let l = e.getBoundingClientRect(), { left: u, top: d, width: f, height: p } = l;
				if (s || t(), !f || !p) return;
				let m = Pe(d), h = Pe(i.clientWidth - (u + f)), g = Pe(i.clientHeight - (d + p)), _ = Pe(u), v = {
					rootMargin: -m + "px " + -h + "px " + -g + "px " + -_ + "px",
					threshold: Me(0, je(1, c)) || 1
				}, y = !0;
				function b(t) {
					let n = t[0].intersectionRatio;
					if (n !== c) {
						if (!y) return o();
						n ? o(!1, n) : r = setTimeout(() => {
							o(!1, 1e-7);
						}, 1e3);
					}
					n === 1 && !tn(l, e.getBoundingClientRect()) && o(), y = !1;
				}
				try {
					n = new IntersectionObserver(b, {
						...v,
						root: i.ownerDocument
					});
				} catch {
					n = new IntersectionObserver(b, v);
				}
				n.observe(e);
			}
			return o(!0), a;
		}
		function rn(e, t, n, r) {
			r === void 0 && (r = {});
			let { ancestorScroll: i = !0, ancestorResize: a = !0, elementResize: o = typeof ResizeObserver == "function", layoutShift: s = typeof IntersectionObserver == "function", animationFrame: c = !1 } = r, l = At(e), u = i || a ? [...l ? Dt(l) : [], ...t ? Dt(t) : []] : [];
			u.forEach((e) => {
				i && e.addEventListener("scroll", n, { passive: !0 }), a && e.addEventListener("resize", n);
			});
			let d = l && s ? nn(l, n) : null, f = -1, p = null;
			o && (p = new ResizeObserver((e) => {
				let [r] = e;
				r && r.target === l && p && t && (p.unobserve(t), cancelAnimationFrame(f), f = requestAnimationFrame(() => {
					var e;
					(e = p) == null || e.observe(t);
				})), n();
			}), l && !c && p.observe(l), t && p.observe(t));
			let m, h = c ? Ft(e) : null;
			c && g();
			function g() {
				let t = Ft(e);
				h && !tn(h, t) && n(), h = t, m = requestAnimationFrame(g);
			}
			return n(), () => {
				var e;
				u.forEach((e) => {
					i && e.removeEventListener("scroll", n), a && e.removeEventListener("resize", n);
				}), d?.(), (e = p) == null || e.disconnect(), p = null, c && cancelAnimationFrame(m);
			};
		}
		let an = rt, on = Z, sn = et, cn = $e, ln = (e, t, n) => {
			let r = /* @__PURE__ */ new Map(), i = {
				platform: en,
				...n
			}, a = {
				...i.platform,
				_c: r
			};
			return Qe(e, t, {
				...i,
				platform: a
			});
		}, un = class {
			constructor(e) {
				n(this, "ctx"), n(this, "enable", !1), n(this, "contentEl"), n(this, "floatingEl"), n(this, "arrowEl"), this.ctx = e;
				let { TOOLTIP_BG_COLOR: t, TOOLTIP_TEXT_COLOR: r, TOOLTIP_ZINDEX: i, TOOLTIP_CUSTOM_STYLE: a, CSS_PREFIX: o } = this.ctx.config;
				this.contentEl = document.createElement("div"), this.arrowEl = document.createElement("div"), this.floatingEl = document.createElement("div"), this.floatingEl.className = `${o}-tooltip`, this.contentEl.className = `${o}-tooltip-content`, this.arrowEl.className = `${o}-tooltip-arrow`;
				let s = {
					display: "none",
					position: "absolute",
					background: t,
					color: r,
					boxSizing: "border-box",
					zIndex: i,
					padding: "8px",
					borderRadius: "4px",
					fontSize: "12px",
					...a
				}, c = {
					position: "absolute",
					width: "10px",
					height: "10px",
					background: s.background,
					backgroundColor: s.backgroundColor,
					transform: "rotate(45deg)",
					zIndex: s.zIndex
				};
				Object.assign(this.arrowEl.style, c), Object.assign(this.floatingEl.style, s), this.floatingEl.appendChild(this.contentEl), this.floatingEl.appendChild(this.arrowEl), this.ctx.containerElement.appendChild(this.floatingEl), this.init();
			}
			init() {
				this.floatingEl.addEventListener("mouseleave", () => {
					this.hide();
				}), this.ctx.on("mouseout", (e) => {
					this.floatingEl.contains(e.relatedTarget) || this.hide();
				}), this.ctx.on("onScroll", () => {
					this.hide();
				}), this.ctx.on("startEdit", () => {
					this.hide();
				}), this.ctx.on("visibleCellHoverChange", (e, t) => {
					this.floatingEl.contains(t.target) || (e.ellipsis || e.message) && this.show(e);
				}), this.ctx.on("visibleCellMouseleave", (e, t) => {
					this.floatingEl.contains(t.target) || this.hide();
				}), this.ctx.on("cellHeaderMouseleave", (e, t) => {
					this.floatingEl.contains(t.target) || this.hide();
				}), this.ctx.on("cellHeaderHoverChange", (e, t) => {
					this.floatingEl.contains(t.target) || e.ellipsis && this.show(e);
				}), this.ctx.on("cellFooterMouseleave", (e, t) => {
					this.floatingEl.contains(t.target) || this.hide();
				}), this.ctx.on("cellFooterHoverChange", (e, t) => {
					this.floatingEl.contains(t.target) || e.ellipsis && this.show(e);
				}), this.ctx.on("cellShowTooltip", (e, t) => {
					this.show(e, t);
				}), this.ctx.on("cellHideTooltip", () => {
					this.hide();
				});
			}
			show(e, t) {
				if (this.ctx.contextMenuIng || !e.overflowTooltipShow || this.ctx.mousedown) return;
				this.floatingEl.style.display = "block";
				let n = e.getText();
				e.message && (n = e.message), t && (n = t);
				let r = this.ctx.containerElement.getBoundingClientRect();
				if (!r) return;
				this.enable = !0, this.contentEl.style.maxWidth = `${e.overflowTooltipMaxWidth || 500}px`, this.contentEl.style.minWidth = "100px", this.contentEl.style.width = "100%", this.contentEl.style.display = "inline-block", this.contentEl.style.wordBreak = "break-all", this.contentEl.style.lineHeight = "1.5", this.contentEl.innerText = n;
				let i = e.drawX + r.x, a = e.drawY + r.y;
				ln({ getBoundingClientRect() {
					return {
						width: e.visibleWidth,
						height: e.visibleHeight,
						x: i,
						y: a,
						left: i,
						right: i + e.visibleWidth,
						top: a,
						bottom: a + e.visibleHeight
					};
				} }, this.floatingEl, {
					placement: e.overflowTooltipPlacement,
					middleware: [
						on(),
						sn(),
						an(6),
						cn({ element: this.arrowEl })
					]
				}).then((e) => {
					let { x: t, y: n, placement: r, middlewareData: i } = e;
					if (Object.assign(this.floatingEl.style, {
						top: `${n}px`,
						left: `${t}px`
					}), i.arrow) {
						let e = i.arrow;
						[
							"left",
							"left-start",
							"left-end"
						].includes(r) ? Object.assign(this.arrowEl.style, {
							top: `${e.y}px`,
							bottom: "",
							left: "",
							right: "-5px"
						}) : [
							"right",
							"right-start",
							"right-end"
						].includes(r) ? Object.assign(this.arrowEl.style, {
							top: `${e.y}px`,
							bottom: "",
							left: "-5px",
							right: ""
						}) : [
							"bottom",
							"bottom-start",
							"bottom-end"
						].includes(r) ? Object.assign(this.arrowEl.style, {
							top: "-5px",
							bottom: "",
							left: `${e.x}px`,
							right: ""
						}) : [
							"top",
							"top-start",
							"top-end"
						].includes(r) && Object.assign(this.arrowEl.style, {
							top: "",
							bottom: "-5px",
							left: `${e.x}px`,
							right: ""
						});
					}
				});
			}
			hide() {
				this.enable && (this.enable = !1, this.floatingEl.style.display = "none");
			}
			destroy() {
				this.contentEl.remove(), this.arrowEl.remove(), this.floatingEl.remove();
			}
		};
		class dn {
			constructor(e) {
				n(this, "editorEl"), n(this, "inputEl"), n(this, "enable", !1), n(this, "cellTarget", null), n(this, "selectorArrStr", ""), n(this, "ctx"), n(this, "drawY", 0), n(this, "drawX", 0), n(this, "cancel", !1), this.ctx = e, this.initTextEditor(), this.init();
			}
			init() {
				this.ctx.on("outsideMousedown", () => {
					this.cellTarget && this.cellTarget.editorType === "text" && this.clearEditor();
				}), this.ctx.on("moveFocus", (e) => {
					this.cellTarget = e, this.resetEditorStyle();
					let { xArr: t, yArr: n } = this.ctx.selector;
					this.selectorArrStr = JSON.stringify(t) + JSON.stringify(n), this.focusInput();
				}), this.ctx.on("onScroll", () => {
					this.enable && this.doneEdit();
				}), this.ctx.on("hoverIconClick", (e) => {
					this.editCell(e.rowIndex, e.colIndex);
				}), this.ctx.on("keydown", (e) => {
					if (!this.ctx.isTarget(e) || !this.ctx.focusCell || this.ctx.finding) return;
					let { focusCell: t } = this.ctx;
					if (e.code === "Escape" && this.ctx.editing) {
						this.cancel = !0;
						let { focusCell: e } = this.ctx;
						e && (this.ctx.emit("setSelectorCell", e), this.cellTarget = e), this.doneEdit();
						return;
					}
					if ((e.altKey || e.metaKey) && e.key === "Enter" && this.ctx.editing && this.inputEl) {
						e.preventDefault();
						let t = this.inputEl.selectionStart, n = this.inputEl.value.substring(0, t), r = this.inputEl.value.substring(t);
						this.inputEl.value = n + "\n" + r, this.inputEl.selectionStart = this.inputEl.selectionEnd = t + 1, this.autoSize();
						return;
					}
					if (e.code === "Tab" && this.ctx.editing) {
						if (e.preventDefault(), this.doneEdit(), e.shiftKey) {
							this.ctx.emit("setMoveFocus", "LEFT");
							return;
						}
						this.ctx.emit("setMoveFocus", "RIGHT");
						return;
					}
					if (e.key === "Enter" && this.ctx.editing) {
						if (e.preventDefault(), this.doneEdit(), e.shiftKey) {
							this.ctx.emit("setMoveFocus", "TOP");
							return;
						}
						this.ctx.emit("setMoveFocus", "BOTTOM");
						return;
					}
					if (e.key === "Enter" && !this.ctx.editing) {
						e.preventDefault(), this.startEdit();
						return;
					}
					let n = e.key, r = e.ctrlKey, i = e.altKey, a = e.shiftKey, o = e.metaKey;
					if (!(r || i || a || o || (/* @__PURE__ */ "Enter.CapsLock.Escape.Tab.Backspace.Delete.ArrowUp.ArrowDown.ArrowLeft.ArrowRight.Home.End.PageUp.PageDown.Insert.F1.F2.F3.F4.F5.F6.F7.F8.F9.F10.F11.F12".split(".")).includes(n))) {
						if (document.activeElement !== this.inputEl && t.editorType === "text") {
							e.preventDefault();
							return;
						}
						this.startEdit(!0);
					}
				}), this.ctx.on("cellClick", (e) => {
					if (this.ctx.stageElement.style.cursor === "pointer" || !this.isInSelectorRange(e.rowIndex, e.colIndex)) return;
					let { xArr: t, yArr: n } = this.ctx.selector, r = JSON.stringify(t) + JSON.stringify(n);
					if (this.focusInput(), this.selectorArrStr === r && this.cellTarget) {
						if (this.ctx.config.ENABLE_MERGE_CELL_LINK && this.ctx.onlyMergeCell) {
							this.startEdit();
							return;
						}
						if (this.ctx.selectOnlyOne && e.rowKey === this.cellTarget.rowKey && e.key === this.cellTarget.key) {
							this.startEdit();
							return;
						}
					}
					if (this.selectorArrStr = r, this.doneEdit(), this.cellTarget = e, this.resetEditorStyle(), this.ctx.config.ENABLE_EDIT_SINGLE_CLICK) {
						if (this.ctx.config.ENABLE_MERGE_CELL_LINK && this.ctx.onlyMergeCell) {
							this.startEdit();
							return;
						}
						this.ctx.selectOnlyOne && this.startEdit();
					}
				});
			}
			isTextSelectionActive() {
				return this.ctx.config.ENABLE_TEXT_SELECTION && (this.ctx.textSelecting || !!this.ctx.textSelectionStr);
			}
			isInSelectorRange(e, t) {
				let { xArr: n, yArr: r } = this.ctx.selector, [i, a] = n, [o, s] = r;
				return !(t < i || t > a || e < o || e > s);
			}
			initTextEditor() {
				this.inputEl = document.createElement("textarea"), this.inputEl.id = "e-virt-table-editor-textarea", this.inputEl.setAttribute("rows", "1"), this.inputEl.setAttribute("tabindex", "-1"), this.inputEl.addEventListener("input", this.autoSize.bind(this)), this.editorEl = this.ctx.editorElement, this.inputEl.className = "e-virt-table-editor-textarea", this.editorEl.appendChild(this.inputEl), this.ctx.containerElement.appendChild(this.editorEl);
			}
			autoSize() {
				if (!this.ctx.editing) return;
				let e = this.inputEl.value;
				if (this.cellTarget && this.cellTarget.type === "number" && e !== "" && (this.ctx.emit("cellHideTooltip"), !/^-?\d+(\.\d+)?$/.test(e))) {
					let e = this.ctx.locale.getText("numberErrorTip");
					this.ctx.emit("cellShowTooltip", this.cellTarget, e);
				}
				this.inputEl.style.height = "auto";
				let t = this.inputEl.scrollHeight, n = this.ctx.body.visibleHeight;
				t > n && (t = n);
				let { stageHeight: r, footer: i, header: a } = this.ctx, o = r - i.height - E(this.ctx.config);
				this.editorEl.style.bottom = "auto", this.drawY < a.height && (this.editorEl.style.top = `${a.height - 1}px`), this.drawY + t > o && (this.editorEl.style.left = `${this.drawX - 1}px`, this.editorEl.style.top = "auto", this.editorEl.style.bottom = `${r - o}px`), this.inputEl.style.height = `${t}px`;
			}
			startEditByInput(e, t = !1) {
				let n = t ? null : e.getValue(), { editorType: r } = e;
				if (r === "none") return;
				e.update(), this.ctx.config.ENABLE_MERGE_CELL_LINK && e.updateSpanInfo();
				let { height: i, width: a, drawY: o, drawX: s } = e;
				this.drawX = s, this.drawY = o;
				let { config: { CELL_PADDING: c }, header: l } = this.ctx, u = this.ctx.body.visibleHeight;
				i > u && (i = u), this.editorEl.style.zIndex = "100", this.editorEl.style.left = `${this.drawX - 1}px`, this.editorEl.style.top = `${this.drawY}px`, this.editorEl.style.bottom = "auto", this.editorEl.style.maxWidth = "none", this.editorEl.style.border = "", this.editorEl.style.maxHeight = `${u}px`, ["text"].includes(r) ? (this.inputEl.style.opacity = "1", this.inputEl.style.position = "relative", this.inputEl.style.minWidth = `${a - 1}px`, this.inputEl.style.minHeight = `${i - 1}px`, this.inputEl.style.maxHeight = `${u}px`, this.inputEl.style.width = `${a}px`, this.inputEl.style.height = "auto", this.inputEl.style.padding = `${c}px`, this.inputEl.value = "", n !== null && (this.inputEl.value = n), (this.inputEl.scrollHeight > i || this.drawY < l.height) && this.autoSize()) : (this.inputEl.style.opacity = "0", this.inputEl.style.zIndex = "-1", this.inputEl.style.width = "1px", this.inputEl.style.height = "1px", this.inputEl.style.position = "absolute", this.inputEl.style.left = "0px", this.inputEl.style.top = "0px");
			}
			doneEditByInput() {
				if (this.cellTarget && this.cellTarget.editorType === "text") {
					let { rowKey: e, key: t } = this.cellTarget, n = this.cellTarget.getValue(), r = this.inputEl.value;
					r !== n && (r !== "" || n !== null) && !this.cancel && this.ctx.setItemValueByEditor(e, t, r, !0);
				}
			}
			focusInput() {
				document.activeElement !== this.inputEl && this.inputEl.focus({ preventScroll: !0 });
			}
			startEdit(e = !1) {
				if (this.isTextSelectionActive()) return;
				this.cancel = !1;
				let { ENABLE_EDIT_CLICK_SELECTOR: t } = this.ctx.config;
				if (!t) return;
				let n = this.ctx.focusCell;
				n && (n.isVerticalVisible() && n.isHorizontalVisible() || this.ctx.emit("scrollToIndex", n.rowIndex, n.colIndex), this.editCell(n.rowIndex, n.colIndex, e));
			}
			editCell(e, t, n = !1) {
				let r = this.ctx.body.renderRows.find((t) => t.rowIndex === e);
				if (!r) return;
				let i = r.cells.find((e) => e.colIndex === t);
				if (!i || !(i.isVerticalVisible() && i.isHorizontalVisible())) return;
				this.ctx.emit("setSelectorCell", i);
				let a = this.ctx.focusCell;
				if (!a || [
					"index",
					"index-selection",
					"selection"
				].includes(a.type) || this.enable) return;
				let { rowKey: o, key: s } = a, c = this.ctx.database.getReadonly(o, s);
				a && !c && (this.enable = !0, this.ctx.editing = !0, this.cellTarget = a, this.startEditByInput(this.cellTarget, n), this.ctx.emit("startEdit", this.cellTarget), this.ctx.emit("draw"));
			}
			doneEdit() {
				this.enable && (this.doneEditByInput(), this.ctx.emit("cellHideTooltip"), this.ctx.emit("doneEdit", this.cellTarget), this.enable = !1, this.ctx.editing = !1, this.resetEditorStyle(), setTimeout(() => {
					this.focusInput();
				}, 0), this.ctx.emit("draw"));
			}
			resetEditorStyle() {
				let e = this.cellTarget;
				e && (this.editorEl.style.left = `${e.drawX}px`, this.editorEl.style.top = `${e.drawY}px`, this.editorEl.style.maxWidth = "1px", this.editorEl.style.maxHeight = "1px", this.editorEl.style.zIndex = "-1", this.editorEl.style.border = "none");
			}
			clearEditor() {
				this.doneEdit(), this.cellTarget = null, this.selectorArrStr = "", this.ctx.clearSelector(), this.ctx.focusCell = void 0, this.inputEl.blur(), this.ctx.emit("draw");
			}
			destroy() {
				var e;
				(e = this.editorEl) == null || e.remove();
			}
		}
		let fn = class {
			constructor(e) {
				n(this, "ctx"), n(this, "emptyEl"), this.ctx = e;
				let { EMPTY_CUSTOM_STYLE: t } = this.ctx.config;
				this.ctx.emptyElement ? this.emptyEl = this.ctx.emptyElement : (this.emptyEl = document.createElement("div"), this.emptyEl.innerText = this.getText()), this.emptyEl.className = "e-virt-table-empty", this.emptyEl.style.display = "none", this.ctx.containerElement.appendChild(this.emptyEl), this.ctx.on("emptyChange", ({ type: e, headerHeight: n, bodyHeight: r, footerHeight: i }) => {
					let a = n + (r + i) / 2, o = {
						display: e === "empty" ? "block" : "none",
						top: `${a}px`,
						...t
					};
					Object.assign(this.emptyEl.style, o);
				});
			}
			getText() {
				return this.ctx.config.EMPTY_TEXT || this.ctx.locale.getText("emptyText");
			}
			draw() {
				this.ctx.emptyElement || (this.emptyEl.innerText = this.getText());
			}
			destroy() {
				this.emptyEl.remove();
			}
		};
		class pn {
			constructor(e) {
				n(this, "ctx"), n(this, "observer"), this.ctx = e, this.init();
			}
			arerMapsEqual(e, t) {
				if (e.size !== t.size) return !1;
				for (let [n, r] of e) if (!t.has(n) || t.get(n) !== r) return !1;
				return !0;
			}
			init() {
				this.observer = new MutationObserver(a(() => {
					let e = this.ctx.overlayerElement.querySelectorAll("[data-auto-height=\"true\"]"), t = /* @__PURE__ */ new Map();
					e.forEach((e) => {
						let n = Number(e.getAttribute("data-row-index")), r = Number(e.getAttribute("data-col-index"));
						if (isNaN(n) || isNaN(r)) return;
						let i = e.getBoundingClientRect(), a = `${n}​_${r}`;
						t.set(a, Math.round(i.height));
					});
					let n = this.ctx.database.getOverlayerAutoHeightMap();
					if (!this.arerMapsEqual(n, t)) {
						if (this.ctx.database.setOverlayerAutoHeightMap(t), n.size === 0 && t.size === 0) return;
						this.ctx.emit("draw");
					}
				}, 16.67)), this.observer.observe(this.ctx.overlayerElement, {
					childList: !0,
					subtree: !0,
					attributes: !0,
					characterData: !0
				}), this.ctx.overlayerElement.getAttribute("data-overlayer") === "default" && this.ctx.on("overlayerChange", (e) => {
					let t = this.ctx.overlayerElement;
					t.replaceChildren(), Object.assign(t.style, e.style), e.views.forEach((e) => {
						let n = document.createElement("div");
						n.className = e.class, Object.assign(n.style, e.style), e.views.forEach((e) => {
							let t = document.createElement("div");
							Object.assign(t.style, e.style), e.cells.forEach((e) => {
								let n = document.createElement("div");
								Object.assign(n.style, e.style), Object.keys(e.domDataset || {}).forEach((t) => {
									n.setAttribute(t, e.domDataset[t]);
								}), typeof e.render == "function" && e.render(n, e), t.appendChild(n);
							}), n.appendChild(t);
						}), t.appendChild(n);
					});
				});
			}
			draw() {
				let e = this.getContainer();
				this.ctx.emit("overlayerChange", e);
			}
			destroy() {
				this.observer && this.observer.disconnect(), this.ctx.emit("overlayerChange", {
					style: {},
					views: []
				});
			}
			getContainer() {
				let e = this.getHeader(), t = this.getBody(), n = this.getFooter(), r = [], { FOOTER_FIXED: i, FOOTER_POSITION: a } = this.ctx.config;
				return r = i ? a === "top" ? [
					e,
					n,
					t
				] : [
					e,
					t,
					n
				] : [e, t], { views: r };
			}
			getHeader() {
				let { fixedLeftWidth: e, fixedRightWidth: t, config: { CSS_PREFIX: n } } = this.ctx, r = E(this.ctx.config), { visibleWidth: i, visibleHeight: a, renderCellHeaders: o } = this.ctx.header, s = [], c = [], l = [];
				o.forEach((e) => {
					e.render && (e.fixed === "left" ? c.push(e) : e.fixed === "right" ? l.push(e) : s.push(e));
				});
				let u = t - r, d = {
					key: "left",
					style: {
						position: "absolute",
						top: "0px",
						left: "0px",
						overflow: "hidden",
						width: `${e}px`,
						height: `${a}px`
					},
					cells: c
				}, f = {
					key: "center",
					style: {
						position: "absolute",
						top: "0px",
						left: `${e}px`,
						overflow: "hidden",
						width: `${i - e - u + 1}px`,
						height: `${a}px`
					},
					cells: s
				}, p = {
					key: "right",
					style: {
						position: "absolute",
						top: "0px",
						right: "0px",
						overflow: "hidden",
						width: `${u + 1}px`,
						height: `${a}px`
					},
					cells: l
				};
				return {
					type: "header",
					class: `${n}-overlayer-header`,
					style: {
						position: "relative",
						overflow: "hidden",
						width: `${i}px`,
						height: `${a}px`
					},
					views: [
						d,
						f,
						p
					]
				};
			}
			getBody() {
				let e = [], t = [], n = [], r = this.ctx.body.renderRows;
				this.ctx.config.FOOTER_FIXED || (r = r.concat(this.ctx.footer.renderRows)), r.forEach((r) => {
					r.cells.forEach((r) => {
						r.cellType === "footer" && (r.render = r.renderFooter), r.render && (r.fixed === "left" ? t.push(r) : r.fixed === "right" ? n.push(r) : e.push(r));
					});
				});
				let { fixedLeftWidth: i, fixedRightWidth: a, config: { CSS_PREFIX: o } } = this.ctx, s = E(this.ctx.config), { visibleWidth: c, visibleHeight: l } = this.ctx.body, u = a - s, d = {
					key: "left",
					style: {
						position: "absolute",
						top: "0.5px",
						left: "0.5px",
						overflow: "hidden",
						width: `${i}px`,
						height: `${l}px`
					},
					cells: t
				}, f = {
					key: "center",
					style: {
						position: "absolute",
						top: "0.5px",
						left: `${i - .5}px`,
						overflow: "hidden",
						width: `${c - i - u}px`,
						height: `${l}px`
					},
					cells: e
				}, p = {
					key: "right",
					style: {
						position: "absolute",
						top: "0px",
						right: "0px",
						overflow: "hidden",
						width: `${u}px`,
						height: `${l}px`
					},
					cells: n
				};
				return {
					type: "body",
					class: `${o}-overlayer-body`,
					style: {
						position: "relative",
						overflow: "hidden",
						width: `${c}px`,
						height: `${l}px`
					},
					views: [
						d,
						f,
						p
					]
				};
			}
			getFooter() {
				let e = [], t = [], n = [];
				this.ctx.footer.renderRows.forEach((r) => {
					r.cells.forEach((r) => {
						r.cellType === "footer" && r.renderFooter && (r.render = r.renderFooter, r.fixed === "left" ? t.push(r) : r.fixed === "right" ? n.push(r) : e.push(r));
					});
				});
				let { fixedLeftWidth: r, fixedRightWidth: i, config: { CSS_PREFIX: a } } = this.ctx, o = E(this.ctx.config), { visibleWidth: s, visibleHeight: c } = this.ctx.footer, l = i - o, u = {
					key: "left",
					style: {
						position: "absolute",
						top: "0.5px",
						left: "0.5px",
						overflow: "hidden",
						width: `${r}px`,
						height: `${c}px`
					},
					cells: t
				}, d = {
					key: "center",
					style: {
						position: "absolute",
						top: "0.5px",
						left: `${r - .5}px`,
						overflow: "hidden",
						width: `${s - r - l}px`,
						height: `${c}px`
					},
					cells: e
				}, f = {
					key: "right",
					style: {
						position: "absolute",
						top: "0.5px",
						right: "0.5px",
						overflow: "hidden",
						width: `${l}px`,
						height: `${c}px`
					},
					cells: n
				};
				return {
					type: "footer",
					class: `${a}-overlayer-footer`,
					style: {
						position: "relative",
						overflow: "hidden",
						width: `${s}px`,
						height: `${c}px`
					},
					views: [
						u,
						d,
						f
					]
				};
			}
		}
		class mn {
			constructor(e, t = [], r = {}) {
				n(this, "container"), n(this, "menuData"), n(this, "onClick"), n(this, "activeSubmenus", /* @__PURE__ */ new Set()), n(this, "boundMouseEnterHandler"), n(this, "boundMouseLeaveHandler"), n(this, "boundClickHandler"), this.container = e, this.menuData = t, this.onClick = r.onClick, this.boundMouseEnterHandler = (e) => this.handleMouseEvent(e, "enter"), this.boundMouseLeaveHandler = (e) => this.handleMouseEvent(e, "leave"), this.boundClickHandler = (e) => this.handleClick(e), this.createMenu(), this.bindEvents();
			}
			createMenu() {
				this.container.className = "e-virt-table-main-menu", this.container.style.display = "block";
				let e = document.createDocumentFragment();
				this.menuData.forEach((t) => {
					e.appendChild(this.createMenuItem(t));
				}), this.container.appendChild(e);
			}
			createMenuItem(e, t = !1) {
				var n;
				let r = this.createElement("div", t ? "e-virt-table-submenu-item" : "e-virt-table-menu-item");
				r.setAttribute(t ? "data-submenu" : "data-menu", e.value), e.disabled && r.classList.add("disabled");
				let i = this.createElement("div", "e-virt-table-menu-item-content");
				if (e.icon) {
					let t = this.createElement("span", "e-virt-table-menu-item-icon");
					t.innerHTML = e.icon, i.appendChild(t);
				} else i.classList.add("menu-item-no-icon");
				let a = this.createElement("span", "e-virt-table-menu-item-text");
				if (a.textContent = e.label || "", i.appendChild(a), r.appendChild(i), (n = e.children) != null && n.length) {
					let t = this.createElement("span", "e-virt-table-menu-arrow");
					t.innerHTML = V, r.appendChild(t);
					let n = this.createSubmenu(e.children);
					r._submenu = n, this.container.appendChild(n);
				}
				return r;
			}
			createSubmenu(e) {
				let t = this.createElement("div", "e-virt-table-submenu");
				return e.forEach((e) => {
					t.appendChild(this.createMenuItem(e, !0));
				}), t;
			}
			createElement(e, t = "") {
				let n = document.createElement(e);
				return t && (n.className = t), n;
			}
			bindEvents() {
				this.container.addEventListener("mouseenter", this.boundMouseEnterHandler, !0), this.container.addEventListener("mouseleave", this.boundMouseLeaveHandler, !0), this.container.addEventListener("click", this.boundClickHandler);
			}
			handleMouseEvent(e, t) {
				e.stopPropagation();
				let n = e.target.closest(".e-virt-table-menu-item, .e-virt-table-submenu-item");
				n && (this.container.contains(n) || n.classList.contains("e-virt-table-submenu-item")) && (t === "enter" ? this.handleHover(n) : this.handleLeave(n));
			}
			handleHover(e) {
				e.classList.contains("e-virt-table-menu-item") && (this.container.querySelectorAll(".e-virt-table-menu-item").forEach((e) => e.classList.remove("active")), e.classList.contains("disabled") || e.classList.add("active"));
				let t = e._submenu || e.querySelector(".e-virt-table-submenu");
				t && (this.hideSiblingSubmenus(e), this.showSubmenu(e, t));
			}
			handleLeave(e) {
				let t = e._submenu || e.querySelector(".e-virt-table-submenu");
				setTimeout(() => {
					let n = t;
					n && !n.matches(":hover") && !e.matches(":hover") && (this.hideSubmenu(n), e.classList.contains("e-virt-table-menu-item") && e.classList.remove("active"));
				}, 150);
			}
			hideSiblingSubmenus(e) {
				let t;
				if (e.classList.contains("e-virt-table-menu-item")) t = this.container.querySelectorAll(".e-virt-table-menu-item");
				else {
					let n = e.closest(".e-virt-table-submenu");
					if (n) t = n.querySelectorAll(".e-virt-table-submenu-item");
					else return;
				}
				t.forEach((t) => {
					t !== e && t._submenu && this.hideSubmenu(t._submenu);
				});
			}
			async showSubmenu(e, t) {
				this.activeSubmenus.has(t) || (this.activeSubmenus.add(t), t.classList.add("show"), t._cleanup = rn(e, t, async () => {
					let n = this.container.getBoundingClientRect(), r = window.innerWidth, i = t.offsetWidth || 200, a = r - n.right, o = n.left, { x: s, y: c } = await ln(e, t, {
						placement: a >= i || a >= o ? "right-start" : "left-start",
						middleware: [an(8), on({ padding: 8 })]
					});
					Object.assign(t.style, {
						left: `${s}px`,
						top: `${c}px`
					});
				}));
			}
			hideSubmenu(e) {
				if (!this.activeSubmenus.has(e)) return;
				this.activeSubmenus.delete(e), e.classList.remove("show"), this.hideAllChildSubmenus(e);
				let t = e;
				t._cleanup && (t._cleanup(), delete t._cleanup);
			}
			hideAllChildSubmenus(e) {
				e.querySelectorAll(".e-virt-table-submenu-item").forEach((e) => {
					if (e._submenu) {
						let t = e._submenu;
						if (this.activeSubmenus.has(t)) {
							this.activeSubmenus.delete(t), t.classList.remove("show");
							let e = t;
							e._cleanup && (e._cleanup(), delete e._cleanup), this.hideAllChildSubmenus(t);
						}
					}
				});
			}
			handleClick(e) {
				e.stopPropagation();
				let t = e.target.closest(".e-virt-table-menu-item, .e-virt-table-submenu-item");
				if (!t || t.classList.contains("disabled")) return;
				if (t.classList.contains("e-virt-table-menu-item")) {
					let e = t._submenu || t.querySelector(".e-virt-table-submenu");
					if (e) {
						this.showSubmenu(t, e);
						return;
					}
				}
				let n = t.getAttribute("data-menu") || t?.getAttribute("data-submenu"), r = this.findMenuItem(n || "");
				r && this.onClick && this.onClick(r, n || "");
			}
			findMenuItem(e, t = this.menuData) {
				for (let n of t) {
					if (n.value === e) return n;
					if (n.children) {
						let t = this.findMenuItem(e, n.children);
						if (t) return t;
					}
				}
				return null;
			}
			positionMenu(e) {
				let t = {
					getBoundingClientRect: () => ({
						width: 0,
						height: 0,
						top: e.clientY,
						left: e.clientX,
						right: e.clientX,
						bottom: e.clientY,
						x: e.clientX,
						y: e.clientY
					}),
					contextElement: document.body
				};
				rn(t, this.container, () => {
					ln(t, this.container, {
						placement: "right-start",
						middleware: [
							an(),
							on(),
							sn()
						]
					}).then(({ x: e, y: t }) => {
						this.container && Object.assign(this.container.style, {
							left: `${e}px`,
							top: `${t}px`
						});
					});
				});
			}
			destroy() {
				this.container.removeEventListener("mouseenter", this.boundMouseEnterHandler, !0), this.container.removeEventListener("mouseleave", this.boundMouseLeaveHandler, !0), this.container.removeEventListener("click", this.boundClickHandler), this.cleanupAllSubmenus(this.container), this.container.style.display = "none", this.container.replaceChildren();
			}
			removeMenuItem(e) {
				let t = this.container.querySelector(`[data-menu="${e}"]`);
				if (!t) return !1;
				let n = t.querySelector(".e-virt-table-submenu");
				return n && this.cleanupSubmenuRecursively(n), t.remove(), !0;
			}
			removeSubMenuItem(e) {
				let t = this.container.querySelector(`[data-submenu="${e}"]`);
				if (!t) return !1;
				let n = t.closest(".e-virt-table-submenu"), r = t._submenu;
				if (r && this.cleanupSubmenuRecursively(r), t.remove(), n && n.querySelectorAll(".e-virt-table-submenu-item").length === 0) {
					let e = this.container.querySelector("[data-menu]");
					if (e && e._submenu === n) this.removeMenuItem(e.getAttribute("data-menu") || "");
					else {
						let e = this.container.querySelectorAll("[data-menu], [data-submenu]");
						for (let t of e) if (t._submenu === n) {
							let e = t.getAttribute("data-menu") || t.getAttribute("data-submenu");
							e && (t.hasAttribute("data-menu") ? this.removeMenuItem(e) : this.removeSubMenuItem(e));
							break;
						}
					}
				}
				return !0;
			}
			cleanupAllSubmenus(e) {
				e.querySelectorAll(".e-virt-table-menu-item").forEach((e) => {
					e._submenu &&= (this.cleanupSubmenuRecursively(e._submenu), void 0);
				});
			}
			cleanupSubmenuRecursively(e) {
				let t = e;
				t._cleanup && (t._cleanup(), delete t._cleanup), e.querySelectorAll(".e-virt-table-submenu-item").forEach((e) => {
					e._submenu && this.cleanupSubmenuRecursively(e._submenu);
				}), e.remove();
			}
		}
		class hn {
			constructor(e) {
				n(this, "ctx"), n(this, "contextMenuEl"), n(this, "currentDOMTreeMenu"), n(this, "isCustom", !1), this.ctx = e, this.ctx.contextMenuElement ? (this.contextMenuEl = this.ctx.contextMenuElement, this.contextMenuEl.className = "e-virt-table-main-menu", this.isCustom = !0) : (this.contextMenuEl = document.createElement("div"), this.isCustom = !1), this.ctx.containerElement.appendChild(this.contextMenuEl), this.init();
			}
			init() {
				this.ctx.on("outsideMousedown", () => {
					this.hide();
				}), this.ctx.on("cellContextMenuClick", async (e, t) => {
					if (this.isCustom) {
						this.contextMenuEl.style.display = "block", this.positionMenu(t);
						return;
					}
					let { ENABLE_CONTEXT_MENU: n, CUSTOM_BODY_CONTEXT_MENU: r, CONTEXT_MENU: i, BEFORE_BODY_CONTEXT_MENU_METHOD: a } = this.ctx.config, o = i.map((e) => ({
						...e,
						label: e.label || this.ctx.locale.getText(e.value)
					}));
					if (o = [...o, ...r], a && (o = await a({
						list: o,
						cell: e,
						hide: this.hide.bind(this)
					})), !n || o.length === 0) return;
					t.preventDefault();
					let { xArr: s, yArr: c } = this.ctx.selector, [l, u] = s, [d, f] = c, { rowIndex: p, colIndex: m } = e;
					p >= d && p <= f && m >= l && m <= u || this.ctx.emit("setSelectorCell", e, t), this.currentDOMTreeMenu && this.currentDOMTreeMenu.destroy(), this.ctx.contextMenuIng = !0, this.currentDOMTreeMenu = new mn(this.contextMenuEl, o, { onClick: (n, r) => {
						r === "copy" ? (this.ctx.emit("contextMenuCopy"), this.hide()) : r === "paste" ? (this.ctx.emit("contextMenuPaste"), this.hide()) : r === "cut" ? (this.ctx.emit("contextMenuCut"), this.hide()) : r === "clearSelected" ? (this.ctx.emit("contextMenuClearSelected"), this.hide()) : n.event && n.event(t, {
							hide: this.hide.bind(this),
							cell: e
						});
					} }), this.currentDOMTreeMenu.positionMenu(t);
				}), this.ctx.on("cellHeaderContextMenuClick", async (e, t) => {
					if (this.isCustom) {
						this.contextMenuEl.style.display = "block", this.positionMenu(t);
						return;
					}
					let { SELECTOR_AREA_MIN_X: n, SELECTOR_AREA_MAX_X: r, SELECTOR_AREA_MAX_X_OFFSET: i, BEFORE_HEADER_CONTEXT_MENU_METHOD: a } = this.ctx.config, o = n, s = r || this.ctx.maxColIndex - i;
					if (e.colIndex < o || e.colIndex > s) return;
					let { HEADER_CONTEXT_MENU: c, CUSTOM_HEADER_CONTEXT_MENU: u, ENABLE_HEADER_CONTEXT_MENU: d } = this.ctx.config, f = c.map((e) => ({
						...e,
						label: e.label || this.ctx.locale.getText(e.value)
					}));
					if (f = [...f, ...u], a && (f = await a({
						list: f,
						cell: e,
						hide: this.hide.bind(this)
					})), !d || f.length === 0) return;
					t.preventDefault();
					let { xArr: p } = this.ctx.selector, [m, h] = p, { colIndex: g } = e;
					g >= m && g <= h || (this.ctx.focusCellHeader = e, this.ctx.emit("selectCols", e)), this.currentDOMTreeMenu && this.currentDOMTreeMenu.destroy();
					let _ = this.ctx.database.getColumns(), v = f.map((e) => e.value === "visible" ? {
						...e,
						children: this.filterColumns(_)
					} : e);
					this.ctx.contextMenuIng = !0, this.currentDOMTreeMenu = new mn(this.contextMenuEl, v, { onClick: (n, r) => {
						let { xArr: i } = this.ctx.selector, [a, o] = i;
						if (r === "fixedLeft" || r === "fixedRight" || r === "fixedNone") {
							let e = this.ctx.header.allCellHeaders.filter((e) => e.colIndex >= a && e.colIndex <= o).filter((e) => e.level === 0).filter((e) => !e.column.fixedDisabled).map((e) => e.key);
							this.ctx.database.setCustomHeaderFixedData(e, r === "fixedLeft" ? "left" : r === "fixedRight" ? "right" : ""), this.hide();
						} else if (r === "hide") {
							let e = this.ctx.header.leafCellHeaders.filter((e) => e.colIndex >= a && e.colIndex <= o).filter((e) => !e.children.length).filter((e) => !e.column.hideDisabled).map((e) => e.key);
							e.length > 0 && this.ctx.database.setCustomHeaderHideData(e, !0), this.hide();
						} else if (r !== "visible") {
							if (r.startsWith("visible_")) {
								if (!n.key) return;
								if (n.children) {
									let e = this.getLeafKeys(n.children);
									this.ctx.database.setCustomHeaderHideData(e, !1);
								} else this.ctx.database.setCustomHeaderHideData([n.key], !1);
								this.currentDOMTreeMenu && this.currentDOMTreeMenu.removeSubMenuItem(r), l(this.ctx.database.getColumns()).filter((e) => e.hide).length === 0 && this.hide();
							} else r === "resetHeader" ? (this.ctx.database.resetCustomHeader(), this.hide()) : n.event && n.event(t, {
								hide: this.hide.bind(this),
								cell: e
							});
						}
					} }), this.positionMenu(t);
				}), this.ctx.on("click", () => {
					this.hide();
				}), this.ctx.on("onScroll", this.hide.bind(this)), this.ctx.on("resize", this.hide.bind(this));
			}
			positionMenu(e) {
				let t = {
					getBoundingClientRect: () => ({
						width: 0,
						height: 0,
						top: e.clientY,
						left: e.clientX,
						right: e.clientX,
						bottom: e.clientY,
						x: e.clientX,
						y: e.clientY
					}),
					contextElement: document.body
				};
				rn(t, this.contextMenuEl, () => {
					ln(t, this.contextMenuEl, {
						placement: "right-start",
						middleware: [
							an(),
							on(),
							sn()
						]
					}).then(({ x: e, y: t }) => {
						this.contextMenuEl && Object.assign(this.contextMenuEl.style, {
							left: `${e}px`,
							top: `${t}px`
						});
					});
				});
			}
			filterColumns(e) {
				let t = [];
				for (let n of e) if (n.children && n.children.length > 0) {
					let e = this.filterColumns(n.children);
					e.length > 0 && t.push({
						label: n.title,
						key: n.key,
						value: `visible_${n.key}`,
						children: e
					});
				} else n.hide && t.push({
					label: n.title,
					value: `visible_${n.key}`,
					key: n.key
				});
				return t;
			}
			getLeafKeys(e) {
				return e.reduce((e, t) => (!t.children || t.children.length === 0 ? e.push(String(t.key)) : e.push(...this.getLeafKeys(t.children)), e), []);
			}
			hide() {
				this.currentDOMTreeMenu &&= (this.currentDOMTreeMenu.destroy(), void 0), this.contextMenuEl.style.display = "none", this.ctx.contextMenuIng = !1;
			}
			destroy() {
				var e;
				this.hide(), (e = this.contextMenuEl) == null || e.remove();
			}
		}
		class gn {
			constructor(e) {
				if (n(this, "ctx"), n(this, "loadingEl"), n(this, "textEl", document.createElement("p")), this.ctx = e, this.ctx.loadingElement) this.loadingEl = this.ctx.loadingElement;
				else {
					this.loadingEl = document.createElement("div");
					let e = document.createElement("div");
					e.className = "e-virt-table-loading-spinner";
					let t = this.ctx.icons.getSvg("loading");
					if (t) {
						let n = new DOMParser().parseFromString(t.svg, "image/svg+xml").documentElement;
						e.appendChild(n);
					}
					this.textEl.className = "e-virt-table-loading-text", this.textEl.innerText = this.getText(), e.appendChild(this.textEl), this.loadingEl.appendChild(e);
				}
				this.loadingEl.className = "e-virt-table-loading", this.loadingEl.style.display = "none", this.ctx.containerElement.appendChild(this.loadingEl);
			}
			getText() {
				return this.ctx.config.LOADING_TEXT || this.ctx.locale.getText("loadingText");
			}
			show() {
				this.loadingEl.style.display = "flex";
			}
			hide() {
				this.loadingEl.style.display = "none";
			}
			draw() {
				this.ctx.loadingElement || (this.textEl.innerText = this.getText());
			}
			destroy() {
				this.loadingEl.remove();
			}
		}
		class _n {
			constructor(e) {
				n(this, "ctx"), n(this, "container"), n(this, "input"), n(this, "prevBtn"), n(this, "nextBtn"), n(this, "closeBtn"), n(this, "countEl"), n(this, "loadingEl"), n(this, "isVisible", !1), n(this, "searchResults", []), n(this, "currentIndex", -1), n(this, "searchData", []), n(this, "isComposing", !1), this.ctx = e, this.container = this.createContainer(), this.ctx.containerElement.appendChild(this.container), this.bindEvents(), this.ctx.on("keydown", (e) => {
					if (this.ctx.config.ENABLE_FINDER && !this.ctx.editing) {
						if ((e.ctrlKey || e.metaKey) && e.code === "KeyF") {
							e.preventDefault(), this.show();
							return;
						}
						if (this.ctx.finding) {
							if (e.code === "Escape") {
								e.preventDefault(), this.hide();
								return;
							}
							if (e.code === "ArrowUp" || e.shiftKey && e.key === "Enter") {
								e.preventDefault(), this.navigatePrevious();
								return;
							}
							if (e.code === "ArrowDown" || e.key === "Enter") {
								e.preventDefault(), this.navigateNext();
								return;
							}
						}
					}
				}), this.ctx.on("setSelector", () => {
					this.hide();
				}), this.ctx.on("outsideMousedown", () => {
					this.hide();
				});
			}
			async initSearchData() {
				this.showLoading(), this.searchData = [], setTimeout(() => {
					let { allCellHeaders: e } = this.ctx.header;
					for (let t = 0; t < e.length; t++) {
						let n = e[t];
						if (!n) continue;
						let r = n.getFinderText();
						r && this.searchData.push({
							rowIndex: n.level,
							colIndex: n.colIndex,
							text: r,
							type: "header",
							colKey: n.key
						});
					}
					let { maxColIndex: t, maxRowIndex: n } = this.ctx;
					for (let e = 0; e <= n; e++) for (let n = 0; n <= t; n++) {
						let t = this.ctx.database.getVirtualBodyCell(e, n, !1)?.getFinderText();
						t && this.searchData.push({
							rowIndex: e,
							colIndex: n,
							text: t,
							type: "body"
						});
					}
					for (let e of this.ctx.footer.renderRows) for (let t of e.cells) {
						let e = t.getFinderText();
						e && this.searchData.push({
							rowIndex: t.rowIndex,
							colIndex: t.colIndex,
							text: e,
							type: "footer"
						});
					}
					this.hideLoading();
				}, 0);
			}
			createContainer() {
				let e = document.createElement("div");
				e.className = "e-virt-table-finder-bar";
				let t = document.createElement("div");
				t.className = "e-virt-table-finder-bar-input-wrapper", this.input = document.createElement("input"), this.input.type = "text", this.input.className = "e-virt-table-finder-bar-input", this.input.placeholder = "", t.appendChild(this.input), this.loadingEl = document.createElement("div"), this.loadingEl.className = "e-virt-table-finder-bar-loading", this.loadingEl.innerHTML = "<svg t=\"1724133395728\" class=\"icon\" viewBox=\"0 0 1024 1024\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" p-id=\"2893\" width=\"32\" height=\"32\"><path d=\"M512 226.8476541a19.82487759 19.82487759 0 0 1 14.66497778 5.70304692c3.80203107 3.82918865 5.70304692 8.71751457 5.70304693 14.66497779v122.20814825a19.82487759 19.82487759 0 0 1-5.70304693 14.66497778 19.82487759 19.82487759 0 0 1-14.66497778 5.70304691 19.82487759 19.82487759 0 0 1-14.66497778-5.70304691 19.82487759 19.82487759 0 0 1-5.70304693-14.66497778v-122.20814825a19.82487759 19.82487759 0 0 1 5.70304693-14.66497779 19.82487759 19.82487759 0 0 1 14.66497778-5.70304692z m0 407.36049415a19.82487759 19.82487759 0 0 1 14.66497778 5.70304691c3.80203107 3.82918865 5.70304692 8.71751457 5.70304693 14.66497778v122.20814827a19.82487759 19.82487759 0 0 1-5.70304693 14.66497776 19.82487759 19.82487759 0 0 1-14.66497778 5.70304693 19.82487759 19.82487759 0 0 1-14.66497778-5.70304693 19.82487759 19.82487759 0 0 1-5.70304693-14.66497776v-122.20814827a19.82487759 19.82487759 0 0 1 5.70304693-14.66497778 19.82487759 19.82487759 0 0 1 14.66497778-5.70304691zM797.1523459 512a19.82487759 19.82487759 0 0 1-5.70304692 14.66497778 19.82487759 19.82487759 0 0 1-14.66497779 5.70304693h-122.20814825a19.82487759 19.82487759 0 0 1-14.66497778-5.70304693 19.82487759 19.82487759 0 0 1-5.70304691-14.66497778 19.82487759 19.82487759 0 0 1 5.70304691-14.66497778 19.82487759 19.82487759 0 0 1 14.66497778-5.70304693h122.20814825a19.82487759 19.82487759 0 0 1 14.66497779 5.70304693c3.80203107 3.82918865 5.70304692 8.71751457 5.70304692 14.66497778z m-407.36049415 0a19.82487759 19.82487759 0 0 1-5.70304691 14.66497778 19.82487759 19.82487759 0 0 1-14.66497778 5.70304693h-122.20814827a19.82487759 19.82487759 0 0 1-14.66497776-5.70304693 19.82487759 19.82487759 0 0 1-5.70304693-14.66497778 19.82487759 19.82487759 0 0 1 5.70304693-14.66497778 19.82487759 19.82487759 0 0 1 14.66497776-5.70304693h122.20814827a19.82487759 19.82487759 0 0 1 14.66497778 5.70304693c3.80203107 3.82918865 5.70304692 8.71751457 5.70304691 14.66497778zM310.22076878 310.22076878a21.29137537 21.29137537 0 0 1 14.66497779-5.70304693c5.51294514 0 10.18401235 1.90101585 14.01320099 5.70304693l86.55052591 86.57768347a20.91117183 20.91117183 0 0 1 5.73020449 14.31193182 19.28172983 19.28172983 0 0 1-6.05609289 14.013201 19.11878565 19.11878565 0 0 1-14.013201 6.05609289 20.96548698 20.96548698 0 0 1-14.31193182-5.70304692L310.22076878 338.87178998a19.06447114 19.06447114 0 0 1-5.70304693-14.01320099c0-5.54010272 1.90101585-10.42842865 5.70304693-14.66497778z m288.32975775 288.32975775a19.79772001 19.79772001 0 0 1 14.3390894-6.35482371c5.29568642 0 10.04822572 2.11827457 14.31193182 6.38198066l86.57768347 86.55052651c3.80203107 3.80203107 5.70304692 8.47309828 5.70304691 14.01320102a19.55330372 19.55330372 0 0 1-6.05609225 14.31193182 19.66193339 19.66193339 0 0 1-14.31193245 6.05609288 19.01015661 19.01015661 0 0 1-14.01320099-5.70304692l-86.55052591-86.57768347a19.79772001 19.79772001 0 0 1-6.38198129-14.31193245c0-5.29568642 2.11827457-10.07538268 6.38198129-14.33908939zM713.77923122 310.22076878c3.80203107 4.26370672 5.70304692 9.15203265 5.70304693 14.66497779s-1.90101585 10.18401235-5.70304693 14.01320099l-86.57768347 86.55052591a20.91117183 20.91117183 0 0 1-14.31193182 5.73020449 19.28172983 19.28172983 0 0 1-14.013201-6.05609289 19.11878565 19.11878565 0 0 1-6.05609289-14.013201c0-5.29568642 1.90101585-10.07538268 5.70304692-14.31193182l86.57768348-86.57768347c3.80203107-3.80203107 8.50025585-5.70304692 14.01320099-5.70304693 5.54010272 0 10.40127108 1.90101585 14.66497779 5.70304693zM425.44947347 598.57768347a19.79772001 19.79772001 0 0 1 6.35482371 14.33908939c0 5.29568642-2.11827457 10.04822572-6.38198066 14.31193245L338.89894756 713.77923122a19.06447114 19.06447114 0 0 1-14.01320099 5.70304693 19.55330372 19.55330372 0 0 1-14.31193245-6.05609227 19.68909035 19.68909035 0 0 1-6.05609227-14.31193245 19.01015661 19.01015661 0 0 1 5.70304693-14.01320099l86.57768347-86.55052591a19.79772001 19.79772001 0 0 1 14.31193182-6.38198129c5.29568642 0 10.07538268 2.11827457 14.3390894 6.38198129z\" fill=\"#000000\" fill-opacity=\".65\" p-id=\"2894\"></path></svg>\n", t.appendChild(this.loadingEl), this.countEl = document.createElement("span"), this.countEl.className = "e-virt-table-finder-bar-count";
				let n = document.createElement("div");
				return n.className = "e-virt-table-finder-bar-nav", this.prevBtn = document.createElement("button"), this.prevBtn.className = "e-virt-table-finder-bar-nav-btn prev-btn", this.prevBtn.innerHTML = V, this.nextBtn = document.createElement("button"), this.nextBtn.className = "e-virt-table-finder-bar-nav-btn next-btn", this.nextBtn.innerHTML = V, n.appendChild(this.prevBtn), n.appendChild(this.nextBtn), this.closeBtn = document.createElement("button"), this.closeBtn.className = "e-virt-table-finder-bar-nav-btn close-btn", this.closeBtn.innerHTML = "×", e.appendChild(t), e.appendChild(this.countEl), e.appendChild(n), e.appendChild(this.closeBtn), e;
			}
			bindEvents() {
				this.input.addEventListener("input", () => {
					this.isComposing || this.performSearch();
				}), this.input.addEventListener("compositionstart", () => {
					this.isComposing = !0;
				}), this.input.addEventListener("compositionend", () => {
					this.isComposing = !1, this.performSearch();
				}), this.prevBtn.addEventListener("click", () => {
					this.navigatePrevious();
				}), this.nextBtn.addEventListener("click", () => {
					this.navigateNext();
				}), this.closeBtn.addEventListener("click", () => {
					this.hide();
				});
			}
			performSearch() {
				let e = this.input.value.trim();
				if (this.searchResults = [], this.currentIndex = -1, !e) {
					this.cearFinderBar(), this.updateCount();
					return;
				}
				this.showLoading(), setTimeout(() => {
					this.searchResults = this.searchData.filter((t) => t.text.toLowerCase().includes(e.toLowerCase())), this.searchResults.length > 0 ? (this.currentIndex = 0, this.scrollToCurrentResult()) : this.cearFinderBar(), this.updateCount(), this.hideLoading();
				}, 0);
			}
			scrollToCurrentResult() {
				if (this.currentIndex < 0 || this.currentIndex >= this.searchResults.length) return;
				let e = this.searchResults[this.currentIndex];
				this.ctx.finderBar = e;
				let { rowIndex: t, colIndex: n } = e;
				this.ctx.emit("scrollToIndex", t, n, e.type);
			}
			navigateNext() {
				this.searchResults.length !== 0 && (this.currentIndex = (this.currentIndex + 1) % this.searchResults.length, this.scrollToCurrentResult(), this.updateCount());
			}
			navigatePrevious() {
				this.searchResults.length !== 0 && (this.currentIndex = this.currentIndex <= 0 ? this.searchResults.length - 1 : this.currentIndex - 1, this.scrollToCurrentResult(), this.updateCount());
			}
			updateCount() {
				if (this.searchResults.length === 0) this.input.value.trim() ? (this.countEl.textContent = "0/0", this.countEl.classList.add("no-results")) : (this.countEl.textContent = "", this.countEl.classList.remove("no-results"));
				else {
					let e = this.currentIndex + 1, t = this.searchResults.length;
					this.countEl.textContent = `${e}/${t}`, this.countEl.classList.remove("no-results");
				}
			}
			show() {
				this.isVisible || (this.isVisible = !0, this.ctx.finding = !0, this.container.classList.add("show"), this.input.focus(), this.initSearchData());
			}
			showLoading() {
				var e;
				this.loadingEl.classList.add("show"), (e = this.loadingEl.parentElement) == null || e.classList.add("loading"), this.input.readOnly = !0;
			}
			hideLoading() {
				var e;
				this.loadingEl.classList.remove("show"), (e = this.loadingEl.parentElement) == null || e.classList.remove("loading"), this.input.readOnly = !1;
			}
			cearFinderBar() {
				this.ctx.finderBar = {
					rowIndex: -1,
					colIndex: -1,
					text: "",
					type: "header"
				}, this.ctx.emit("draw");
			}
			hide() {
				this.isVisible && (this.isVisible = !1, this.container.classList.remove("show"), this.ctx.finding = !1, this.input.value = "", this.searchResults = [], this.searchData = [], this.currentIndex = -1, this.hideLoading(), this.ctx.finderBar = {
					rowIndex: -1,
					colIndex: -1,
					text: "",
					type: "header"
				}, this.updateCount(), this.ctx.emit("draw"));
			}
			destroy() {
				this.hide(), this.container.remove();
			}
		}
		let vn = class e {
			constructor(e) {
				n(this, "ctx"), n(this, "layouts", /* @__PURE__ */ new Map()), n(this, "activeCellKey", ""), n(this, "selectionStart", null), n(this, "selectionEnd", null), n(this, "pending", null), this.ctx = e, this.ctx.on("registerTextLayout", (e, t) => this.layouts.set(e, t)), this.ctx.on("mousedown", (e) => this.onMouseDown(e)), this.ctx.on("mousemove", (e) => this.onMouseMove(e)), this.ctx.on("mouseup", () => this.onMouseUp()), this.ctx.on("cellHeaderHoverChange", (e) => this.yieldToColumnDrag(e)), this.ctx.on("cellHoverChange", () => this.yieldToColumnDrag()), this.ctx.on("keydown", (e) => this.onCopyKeydown(e)), this.ctx.on("outsideMousedown", () => this.resetSelection());
			}
			get canSelect() {
				return this.ctx.config.ENABLE_TEXT_SELECTION && !this.ctx.editing && !this.ctx.finding;
			}
			yieldToColumnDrag(e) {
				let t = this.ctx.focusCellHeader;
				if (!(!this.ctx.textSelecting || !t)) {
					if (e) {
						let n = t.colIndex, r = t.colIndex + t.colspan - 1, i = e.colIndex, a = e.colIndex + e.colspan - 1;
						if (i >= n && a <= r) return;
					}
					this.resetSelection();
				}
			}
			onMouseDown(e) {
				if (!this.canSelect || !this.ctx.isTarget(e)) return;
				this.ctx.containerElement.contains(document.activeElement) || this.ctx.containerElement.focus({ preventScroll: !0 });
				let t = this.hitTest(e);
				if (!t) {
					this.resetSelection();
					return;
				}
				let { offsetX: n, offsetY: r } = this.ctx.getOffset(e);
				this.pending = {
					cellKey: t.cellKey,
					index: t.index,
					startX: n,
					startY: r
				};
			}
			onMouseMove(e) {
				if (!this.canSelect || (this.ctx.textSelecting || this.tryStartDrag(e), !this.ctx.textSelecting)) return;
				let t = this.layouts.get(this.activeCellKey);
				if (!t) return;
				let { offsetX: n, offsetY: r } = this.ctx.getOffset(e), i = this.hitTestText(t, n, r);
				i !== null && (this.selectionEnd = i, this.updateSelection());
			}
			tryStartDrag(t) {
				if (!this.pending || !this.ctx.mousedown) return;
				let { offsetX: n, offsetY: r } = this.ctx.getOffset(t), i = Math.abs(n - this.pending.startX), a = Math.abs(r - this.pending.startY);
				if (i < e.DRAG_THRESHOLD && a < e.DRAG_THRESHOLD) return;
				let o = this.hitTest(t);
				if (!o || o.cellKey !== this.pending.cellKey) {
					this.pending = null;
					return;
				}
				this.activeCellKey = this.pending.cellKey, this.selectionStart = this.pending.index, this.selectionEnd = o.index, this.pending = null, this.ctx.textSelecting = !0, this.updateSelection();
			}
			onMouseUp() {
				this.pending = null, this.ctx.textSelecting = !1, this.ctx.textSelectionStr = this.getSelectedText(), this.ctx.textSelectionStr && this.ctx.emit("drawView");
			}
			onCopyKeydown(e) {
				var t;
				if (!this.canSelect || !((e.ctrlKey || e.metaKey) && e.code === "KeyC")) return;
				let n = this.getSelectedText();
				n && (e.preventDefault(), (t = navigator.clipboard) == null || t.writeText(n).catch((e) => console.error("Copy Failure:", e)));
			}
			hitTest(e) {
				let { offsetX: t, offsetY: n } = this.ctx.getOffset(e), r = null;
				for (let [e, i] of this.layouts) {
					let a = this.hitTestText(i, t, n);
					a !== null && (r = {
						cellKey: e,
						index: a
					});
				}
				return r;
			}
			updateSelection() {
				this.ctx.textSelectionStr = this.getSelectedText(), this.ctx.emit("drawView");
			}
			hitTestText(e, t, n) {
				let { glyphs: r, contentY: i, lineHeight: a, lines: o } = e;
				if (!r.length) return null;
				let s = Math.floor((n - i) / a);
				if (s < 0 || s >= o.length) return null;
				let c = r.filter((e) => e.line === s);
				if (!c.length) return null;
				let l = i + s * a;
				if (n < l - 2 || n >= l + a + 2) return null;
				let u = c[0], d = c[c.length - 1];
				if (t < u.x - 2 || t > d.x + d.width + 2) return null;
				if (t <= u.x) return u.index;
				for (let e of c) if (t < e.x + e.width / 2) return e.index;
				return d.index + 1;
			}
			clearLayouts() {
				this.layouts.clear();
			}
			draw() {
				if (!this.ctx.config.ENABLE_TEXT_SELECTION) return;
				let e = this.getSelectionRange(), t = e && this.layouts.get(this.activeCellKey);
				t && this.drawTextSelection(t, e);
			}
			drawTextSelection(e, t, n = "#fff", r = "#3b82f6") {
				if (t.start >= t.end) return;
				let i = /* @__PURE__ */ new Map();
				for (let n of e.glyphs) {
					if (n.index < t.start || n.index >= t.end) continue;
					let e = i.get(n.line) ?? [];
					e.push(n), i.set(n.line, e);
				}
				if (!i.size) return;
				let a = this.ctx.paint.getCtx();
				a.save(), a.font = e.font, a.textBaseline = "middle", a.textAlign = "left", i.forEach((t) => {
					let i = t[0], o = t[t.length - 1];
					a.fillStyle = r, a.fillRect(i.x, i.y - 1, o.x + o.width - i.x, i.height), a.fillStyle = n;
					for (let n of t) a.fillText(n.char, n.x, n.y + e.lineHeight / 2);
				}), a.restore();
			}
			getSelectionRange() {
				return this.selectionStart === null || this.selectionEnd === null ? null : {
					start: Math.min(this.selectionStart, this.selectionEnd),
					end: Math.max(this.selectionStart, this.selectionEnd)
				};
			}
			getSelectedText() {
				let e = this.getSelectionRange(), t = e && this.layouts.get(this.activeCellKey);
				return !t || e.start >= e.end ? "" : t.chars.slice(e.start, e.end).join("");
			}
			resetSelection() {
				this.activeCellKey = "", this.selectionStart = null, this.selectionEnd = null, this.pending = null, this.ctx.textSelecting = !1, this.ctx.textSelectionStr = "", this.ctx.emit("drawView");
			}
			destroy() {
				this.layouts.clear(), this.resetSelection();
			}
		};
		n(vn, "DRAG_THRESHOLD", 4);
		let yn = vn, bn = class e {
			constructor(e, t) {
				n(this, "options"), n(this, "scroller"), n(this, "header"), n(this, "body"), n(this, "footer"), n(this, "selector"), n(this, "autofill"), n(this, "tooltip"), n(this, "editor"), n(this, "empty"), n(this, "overlayer"), n(this, "contextMenu"), n(this, "loading"), n(this, "finderBar"), n(this, "textSelector"), n(this, "animationFrameId"), n(this, "ctx"), this.options = t;
				let { overlayerElement: r, editorElement: i, emptyElement: a, contextMenuElement: o } = this.options, s = this.createContainer(e, r, i, a, o);
				this.ctx = new ve(s, this.options), this.textSelector = new yn(this.ctx), this.header = new Te(this.ctx), this.footer = new Oe(this.ctx), this.body = new De(this.ctx), this.scroller = new Se(this.ctx), this.selector = new ke(this.ctx), this.autofill = new Ae(this.ctx), this.tooltip = new un(this.ctx), this.empty = new fn(this.ctx), this.editor = new dn(this.ctx), this.overlayer = new pn(this.ctx), this.contextMenu = new hn(this.ctx), this.loading = new gn(this.ctx), this.finderBar = new _n(this.ctx), this.ctx.on("loadData", (e) => {
					this.loadData(e);
				}), this.ctx.on("draw", () => {
					this.draw();
				}), this.ctx.on("drawView", () => {
					this.draw(!0);
				}), this.draw();
			}
			static useLocale(t) {
				e.locale = t;
			}
			createContainer(e, t, n, r, i) {
				e.className = "e-virt-table-container";
				let a = document.createElement("div"), o = document.createElement("canvas"), s = t || document.createElement("div");
				a.className = "e-virt-table-stage", e.tabIndex = 0, o.className = "e-virt-table-canvas", s.className = "e-virt-table-overlayer", s.setAttribute("data-overlayer", t ? "custom" : "default");
				let c = n || document.createElement("div");
				c.className = "e-virt-table-editor";
				let l = r, u = i;
				return a.appendChild(o), a.appendChild(s), e.appendChild(a), {
					containerElement: e,
					stageElement: a,
					canvasElement: o,
					overlayerElement: s,
					editorElement: c,
					emptyElement: l,
					contextMenuElement: u
				};
			}
			doDraw(e = !1) {
				this.updateStageBorder(), this.header.update(), this.body.update(), this.footer.update(), this.ctx.paint.clear(), this.textSelector.clearLayouts(), this.body.draw(), this.footer.draw(), this.header.draw(), this.textSelector.draw(), this.body.drawDragRowTip(), this.scroller.draw(), this.empty.draw(), this.loading.draw(), e || this.overlayer.draw();
			}
			updateStageBorder() {
				let { BORDER: e, BORDER_COLOR: t, BORDER_RADIUS: n } = this.ctx.config;
				this.ctx.stageElement.dataset.borderStyle = P(e), this.ctx.stageElement.style.borderColor = ie(e) ? t : "transparent", this.ctx.stageElement.style.borderRadius = `${n}px`;
			}
			draw(e = !1) {
				this.animationFrameId && cancelAnimationFrame(this.animationFrameId), this.animationFrameId = requestAnimationFrame(() => {
					this.doDraw(e), this.body.updateAutoHeight() && this.doDraw(e);
				});
			}
			loadConfig(e) {
				this.ctx.config.init(e), this.ctx.database.init(!1), this.header.init(), this.ctx.emit("draw");
			}
			loadColumns(e) {
				this.editor.doneEdit(), this.ctx.database.setColumns(e), this.header.init(), this.ctx.emit("draw");
			}
			loadData(e) {
				this.editor.doneEdit(), this.ctx.database.setData(e), this.header.init(), this.tooltip.hide(), this.ctx.emit("draw");
			}
			loadFooterData(e) {
				this.ctx.database.setFooterData(e), this.ctx.emit("draw");
			}
			setCustomHeader(e, t = !0) {
				this.ctx.database.setCustomHeader(e, t), this.header.init(), this.ctx.emit("draw");
			}
			getCustomHeader() {
				return this.header.getCustomHeader();
			}
			showColumns(e, t = !0) {
				this.ctx.database.setCustomHeaderHideData(e, !t), this.header.init(), this.ctx.emit("draw");
			}
			fixedColumns(e, t) {
				this.ctx.database.setCustomHeaderFixedData(e, t), this.header.init(), this.ctx.emit("draw");
			}
			setLoading(e) {
				this.ctx.loading = e, e ? this.loading.show() : this.loading.hide();
			}
			on(e, t) {
				this.ctx.on(e, t);
			}
			emit(e, ...t) {
				this.ctx.emit(e, ...t);
			}
			off(e, t) {
				this.ctx.off(e, t);
			}
			filterMethod(e) {
				this.ctx.database.setFilterMethod(e), this.ctx.database.init(!1), this.header.init(), this.ctx.emit("draw");
			}
			editCell(e, t) {
				this.editor.editCell(e, t);
			}
			setItemValue(e, t, n, r = !0, i = !0, a = !1, o = !0) {
				this.ctx.database.setItemValue(e, t, n, r, i, a, o);
			}
			batchSetItemValue(e, t = !0, n = !0) {
				this.ctx.database.batchSetItemValue(e, t, n);
			}
			setItemValueByEditor(e, t, n, r = !0, i = !0, a = !0) {
				this.ctx.setItemValueByEditor(e, t, n, r, i, a), this.editor.doneEdit();
			}
			clearEditableData(e = null) {
				let t = [0, this.ctx.maxColIndex], n = [0, this.ctx.maxRowIndex];
				return this.selector.clearSelectedData(t, n, !1, e);
			}
			clearEditor() {
				this.editor.clearEditor();
			}
			doLayout() {
				this.ctx.emit("draw");
			}
			getChangedData() {
				return this.ctx.database.getChangedData();
			}
			getChangedRows() {
				return this.ctx.database.getChangedRows();
			}
			setCurrentRowByRowIndex(e) {
				this.ctx.currentCell = this.ctx.database.getVirtualBodyCell(e, 0), this.ctx.emit("draw");
			}
			setCurrentRow(e) {
				let t = this.ctx.database.getColumnByColIndex(0);
				t && (this.ctx.currentCell = this.ctx.database.getVirtualBodyCellByKey(e, t.key), this.ctx.emit("draw"));
			}
			getCurrentRow() {
				let e = this.ctx.currentCell;
				return e ? {
					row: e.row,
					rowIndex: e.rowIndex,
					rowKey: e.rowKey
				} : void 0;
			}
			clearValidate() {
				this.ctx.database.clearValidate(), this.ctx.emit("draw");
			}
			validateFields(e, t = !0) {
				return new Promise(async (n, r) => {
					let i = [];
					for (let t = 0; t < e.length; t++) {
						let { rowKey: n, key: r } = e[t], a = await this.ctx.database.getValidator(n, r);
						Array.isArray(a) && a.length && i.push(a);
					}
					if (i.length) {
						if (r(i), t) {
							let [e] = i;
							if (Array.isArray(e) && e.length) {
								let [t] = e, { rowKey: n, key: r } = t;
								this.scrollToRowkey(n), this.scrollToColkey(r);
							}
						}
						this.ctx.emit("draw");
					} else n([]), this.ctx.emit("draw");
				});
			}
			async validate(e = !0) {
				return new Promise(async (t, n) => {
					try {
						t(await this.getValidations());
					} catch (t) {
						if (e && Array.isArray(t) && t.length) {
							let [e] = t;
							if (Array.isArray(e) && e.length) {
								let [t] = e, { rowKey: n, key: r } = t, i = this.ctx.database.getRowForRowKey(n);
								if (i) {
									let { parentRowKeys: e = [] } = i;
									e && e.length && this.setExpandRowKeys(e, !0);
								}
								this.scrollToRowkey(n), this.scrollToColkey(r);
							}
						}
						n(t);
					}
				});
			}
			setValidations(e) {
				if (e.forEach((e) => {
					let { rowIndex: t, key: n, message: r, rowKey: i } = e;
					if (t !== void 0 && i === void 0) {
						let e = this.ctx.database.getRowKeyForRowIndex(t);
						this.ctx.database.setValidationErrorByRowKey(e, n, r);
					}
					i && this.ctx.database.setValidationErrorByRowKey(i, n, r);
				}), e && Array.isArray(e) && e.length) {
					let [t] = e;
					if (t && t.rowKey) this.scrollToRowkey(t.rowKey), this.scrollToColkey(t.key);
					else if (t && t.rowIndex !== void 0 && t.rowIndex >= 0 && t.key) {
						let { rowIndex: e, key: n } = t;
						this.scrollToRowIndex(e), this.scrollToColkey(n);
					}
				}
			}
			getValidations() {
				return this.ctx.config.DISABLED ? new Promise((e) => {
					e([]);
				}) : new Promise(async (e, t) => {
					let n = this.ctx.database.getAllRowsData(), r = this.ctx.header.leafCellHeaders, i = [];
					for (let e = 0; e < n.length; e++) for (let t = 0; t < r.length; t++) {
						let a = this.ctx.database.getRowKeyByItem(n[e]), o = r[t].key, s = await this.ctx.database.getValidator(a, o);
						Array.isArray(s) && s.length && i.push(s);
					}
					i.length ? (t(i), this.ctx.emit("draw")) : (e([]), this.ctx.emit("draw"));
				});
			}
			hasValidationError() {
				return this.ctx.database.hasValidationError();
			}
			scrollTo(e, t) {
				this.scroller.setScroll(e, t);
			}
			scrollXTo(e) {
				this.scroller.setScrollX(e);
			}
			scrollToColkey(e) {
				this.scroller.scrollToColkey(e);
			}
			scrollToRowkey(e) {
				this.scroller.scrollToRowKey(e);
			}
			scrollToColIndex(e) {
				this.scroller.scrollToColIndex(e);
			}
			scrollToRowIndex(e) {
				this.scroller.scrollToRowIndex(e);
			}
			scrollYTo(e) {
				this.scroller.setScrollY(e);
			}
			setExpandRowKeys(e, t = !0) {
				this.ctx.database.setExpandRowKeys(e, t);
			}
			getExpandRowKeys() {
				return this.ctx.database.getExpandRowKeys();
			}
			clearSelection() {
				this.ctx.database.clearSelection(), this.ctx.emit("draw");
			}
			toggleRowSelection(e) {
				let t = this.ctx.database.getRowKeyByItem(e);
				this.ctx.database.toggleRowSelection(t), this.ctx.emit("draw");
			}
			setSelectionByRows(e, t = !0) {
				e.forEach((e) => {
					let n = this.ctx.database.getRowKeyByItem(e);
					this.ctx.database.setRowSelection(n, t, !1);
				}), this.ctx.emit("selectionChange", this.getSelectionRows()), this.ctx.emit("draw");
			}
			setSelectionByRowKeys(e, t = !0) {
				e.forEach((e) => {
					this.ctx.database.setRowSelection(e, t, !1);
				}), this.ctx.emit("selectionChange", this.getSelectionRows()), this.ctx.emit("draw");
			}
			toggleAllSelection() {
				this.ctx.database.toggleAllSelection(), this.ctx.emit("draw");
			}
			toggleRowExpand(e, t) {
				this.ctx.database.expandItem(e, t), this.ctx.emit("draw");
			}
			toggleExpandAll(e) {
				this.ctx.database.expandAll(e), this.ctx.emit("draw");
			}
			getSelectionRows() {
				return this.ctx.database.getSelectionRows();
			}
			getPositionForRowIndex(e) {
				return this.ctx.database.getPositionForRowIndex(e);
			}
			getCellValue(e, t) {
				return this.ctx.database.getItemValue(e, t);
			}
			getCellValueByIndex(e, t) {
				return this.ctx.database.getItemValueForRowIndexAndColIndex(e, t);
			}
			clearSort() {
				this.ctx.database.clearSort();
			}
			contextMenuHide() {
				this.contextMenu.hide();
			}
			getUtils() {
				return {
					mergeColCell: y,
					mergeRowCell: v,
					getSpanArrByRow: g,
					getSpanObjByColumn: _
				};
			}
			getColumnByKey(e) {
				return this.ctx.database.getColumnByKey(e)?.column;
			}
			clearChangeData() {
				this.ctx.database.clearChangeData(), this.ctx.emit("draw");
			}
			getReadonly(e, t) {
				return this.ctx.database.getReadonly(e, t);
			}
			useLocale(e) {
				this.ctx.locale.use(e);
			}
			destroy() {
				this.overlayer.destroy(), this.empty.destroy(), this.editor.destroy(), this.tooltip.destroy(), this.selector.destroy(), this.autofill.destroy(), this.contextMenu.destroy(), this.loading.destroy(), this.finderBar.destroy(), this.textSelector.destroy(), this.ctx.destroy(), this.ctx.containerElement.remove();
			}
		};
		n(bn, "locale");
		let xn = bn;
		return xn;
	}));
})))(), 1), wo = /* @__PURE__ */ l((e, { emit: t }) => {
	let { cellRender: n, renderTableParams: r } = e, { row: i, field: a } = r;
	if (a) {
		let e = T(i[a]);
		return () => za.renders[n.name]?.renderEdit?.(e, n, r, t) ?? null;
	}
	return () => null;
}, {
	name: "RenderEditCell",
	props: ["cellRender", "renderTableParams"],
	emits: ["blur"]
}), To = "evt-select-area-overlay-filter", Eo = "evt-select-area-overlay-svg", Do = "evt-select-area-flood", Oo = "evt-select-area-arith";
function ko(e) {
	let t = (e || "").trim();
	if (!t) return null;
	let n = t.match(/^rgba?\(\s*([\d.]+)\s*,\s*([\d.]+)\s*,\s*([\d.]+)(?:\s*,\s*([\d.]+%?))?\s*\)$/i);
	if (n) return {
		r: Number(n[1]),
		g: Number(n[2]),
		b: Number(n[3]),
		a: n[4] === void 0 ? 1 : Ao(n[4])
	};
	let r = t.match(/^rgba?\(\s*([\d.]+)\s+([\d.]+)\s+([\d.]+)(?:\s*\/\s*([\d.]+%?))?\s*\)$/i);
	if (r) return {
		r: Number(r[1]),
		g: Number(r[2]),
		b: Number(r[3]),
		a: r[4] === void 0 ? 1 : Ao(r[4])
	};
	let i = t.match(/^#([0-9a-f]{3}|[0-9a-f]{6}|[0-9a-f]{8})$/i);
	if (i) {
		let e = i[1];
		e.length === 3 && (e = e.split("").map((e) => e + e).join(""));
		let t = e.length === 8, n = parseInt(t ? e.slice(0, 6) : e, 16);
		return {
			r: n >> 16 & 255,
			g: n >> 8 & 255,
			b: n & 255,
			a: t ? parseInt(e.slice(6, 8), 16) / 255 : 1
		};
	}
	return null;
}
function Ao(e) {
	return e.endsWith("%") ? Math.min(1, Math.max(0, Number(e.slice(0, -1)) / 100)) : Math.min(1, Math.max(0, Number(e)));
}
function jo(e) {
	for (; e.firstChild;) e.removeChild(e.firstChild);
	let t = document.createElementNS("http://www.w3.org/2000/svg", "feFlood");
	t.setAttribute("id", Do), t.setAttribute("flood-color", "rgb(82, 146, 247)"), t.setAttribute("flood-opacity", "1"), t.setAttribute("result", "flood");
	let n = document.createElementNS("http://www.w3.org/2000/svg", "feComposite");
	n.setAttribute("in", "flood"), n.setAttribute("in2", "SourceGraphic"), n.setAttribute("operator", "in"), n.setAttribute("result", "floodInContent");
	let r = document.createElementNS("http://www.w3.org/2000/svg", "feComposite");
	r.setAttribute("id", Oo), r.setAttribute("in", "floodInContent"), r.setAttribute("in2", "SourceGraphic"), r.setAttribute("operator", "arithmetic"), r.setAttribute("k1", "0"), r.setAttribute("k2", "0.1"), r.setAttribute("k3", "0.9"), r.setAttribute("k4", "0"), e.appendChild(t), e.appendChild(n), e.appendChild(r);
}
function Mo() {
	let e = document.getElementById(Eo);
	if (!e) {
		e = document.createElementNS("http://www.w3.org/2000/svg", "svg"), e.setAttribute("id", Eo), e.setAttribute("width", "0"), e.setAttribute("height", "0"), e.setAttribute("aria-hidden", "true"), e.setAttribute("data-evt-select-filter", "content-tint-v1"), Object.assign(e.style, {
			position: "absolute",
			width: "0",
			height: "0",
			overflow: "hidden",
			pointerEvents: "none"
		});
		let t = document.createElementNS("http://www.w3.org/2000/svg", "defs"), n = document.createElementNS("http://www.w3.org/2000/svg", "filter");
		return n.setAttribute("id", To), n.setAttribute("x", "0"), n.setAttribute("y", "0"), n.setAttribute("width", "100%"), n.setAttribute("height", "100%"), n.setAttribute("color-interpolation-filters", "sRGB"), jo(n), t.appendChild(n), e.appendChild(t), document.body.appendChild(e), e;
	}
	if (e.getAttribute("data-evt-select-filter") !== "content-tint-v1") {
		let t = document.getElementById(To);
		t && (jo(t), e.setAttribute("data-evt-select-filter", "content-tint-v1"));
	}
	return e;
}
function No(e = document.documentElement) {
	Mo();
	let t = ko(getComputedStyle(e).getPropertyValue("--evt-select-area-color").trim() || "rgba(82, 146, 247, 0.1)");
	if (!t) return null;
	let n = document.getElementById(Do), r = document.getElementById(Oo);
	if (!n || !r) return t;
	let i = t.a;
	return n.setAttribute("flood-color", `rgb(${t.r}, ${t.g}, ${t.b})`), n.setAttribute("flood-opacity", "1"), r.setAttribute("k2", String(i)), r.setAttribute("k3", String(1 - i)), t;
}
//#endregion
//#region src/packages/utils/canvasTableTheme.ts
function Po(e = document.documentElement) {
	getComputedStyle(e).getPropertyValue("--evt-border-color"), No(e);
}
function Fo(e) {
	let t = () => {
		Po(e.getEl?.() || document.documentElement);
		let t = e.getTable();
		t && t.loadConfig(e.getConfig());
	}, n = new MutationObserver(t);
	return n.observe(document.documentElement, {
		attributes: !0,
		attributeFilter: [
			"theme-mode",
			"class",
			"data-theme",
			"style"
		]
	}), t(), {
		sync: t,
		disconnect: () => n.disconnect()
	};
}
//#endregion
//#region src/packages/utils/canvasTablePaint.ts
var Io = /* @__PURE__ */ new WeakSet();
function Lo(e) {
	let t = e.ctx.paint;
	if (Io.has(t)) return;
	let n = t.drawRect.bind(t);
	t.drawRect = (e, r, i, a, o = {}) => {
		let { borderColor: s, fillColor: c, radius: l = 0 } = o;
		if (s === "transparent" && c !== void 0 && l === 0) {
			let n = t.getCtx();
			n.save(), n.fillStyle = c, n.fillRect(e, r, i, a), n.restore();
			return;
		}
		n(e, r, i, a, o);
	}, Io.add(t);
}
//#endregion
//#region src/packages/components/PCanvasTable.vue
var Ro = /* @__PURE__ */ l({
	__name: "PCanvasTable",
	props: {
		columns: {},
		data: {},
		config: { default: () => ({}) },
		footerData: {},
		loading: { type: Boolean }
	},
	emits: [
		"change",
		"selectionChange",
		"sortChange",
		"ready"
	],
	setup(o, { expose: s, emit: l }) {
		let u = l, d = T([]), f = T({
			enable: !1,
			xArr: [-1, -1],
			yArr: [-1, -1]
		}), m = o, g = pa(), v = t(() => ({
			...m,
			config: {
				AUTO_ROW_HEIGHT: !0,
				DISABLED: !0,
				BORDER_RADIUS: 4,
				...g,
				...m.config
			}
		})), y = null, b = null, w = te(), A = T(null), ee = T(null), j = T(null), ne = T(null), N = T(), P = T("text"), re = T(), ie = {}, L = {}, R = (e) => {
			let { enable: t, xArr: n, yArr: r } = f.value;
			if (!t) return !1;
			let [i, a] = n, [o, s] = r;
			if (i < 0 || o < 0 || i === a && o === s || e.cellType === "footer" || e.cellType === "header") return !1;
			let { rowIndex: c, colIndex: l } = e;
			return c == null || l == null ? !1 : l >= i && l <= a && c >= o && c <= s;
		}, ae = () => {
			f.value = {
				enable: !1,
				xArr: [-1, -1],
				yArr: [-1, -1]
			};
		}, oe = (e) => {
			if (!e) {
				ae();
				return;
			}
			f.value = {
				enable: !!e.enable,
				xArr: [e.xArr?.[0] ?? -1, e.xArr?.[1] ?? -1],
				yArr: [e.yArr?.[0] ?? -1, e.yArr?.[1] ?? -1]
			};
		}, z = (e = v.value.config) => {
			let t = e?.BORDER_RADIUS ?? 4, n = A.value?.querySelector?.(".e-virt-table-stage");
			n && (n.style.borderRadius = `${t}px`);
		}, se = t(() => {
			let e = N.value;
			return e ? {
				width: `${e.width}px`,
				height: `${e.height}px`
			} : {};
		}), ce = (e) => wa[e] || (({ cellValue: e }) => e), le = (e) => za.renders[e]?.renderDefault, B = (e, ...t) => ({ row: n, rowIndex: r, value: i }) => e({
			row: n,
			rowIndex: r,
			cellValue: i
		}, ...t), V = (e) => {
			if (e.slots?.default && (0, Q.isFunction)(e.slots?.default)) return (t) => e.slots?.default?.({
				row: t.row,
				column: e,
				rowIndex: t.rowIndex
			});
			if (e.slots?.default && (0, Q.isString)(e.slots?.default)) return `slot:${e.slots?.default}`;
			if (e.cellRender && e.cellRender.name) return (t) => le(e.cellRender.name)?.(e.cellRender, {
				data: m.data,
				row: t.row,
				rowIndex: t.rowIndex,
				field: e.field || t.column.key,
				title: t.column?.title ?? ""
			}, {});
		}, ue = (e) => {
			if (e.slots?.title && (0, Q.isFunction)(e.slots?.title)) return (t) => e.slots?.title?.({ column: e });
		}, de = (e) => (e.slots?.edit && (e.field || e.key) && (0, Q.isFunction)(e.slots?.edit) ? ie[`__slot:${e.field || e.key}`] = e : e.editRender?.name && (e.field || e.key) && (L[e.field || e.key] = e.editRender), {
			...(0, Q.omit)(e, [
				"formatter",
				"formatterSelectorValue",
				"formatterFinderValue"
			]),
			key: e.key || e.field || Qi(),
			formatter: (0, Q.isString)(e.formatter) ? B(ce(e.formatter)) : (0, Q.isArray)(e.formatter) && (0, Q.isString)(e.formatter[0]) ? B(ce(e.formatter[0]), ...e.formatter.slice(1)) : (0, Q.isFunction)(e.formatter) ? B(e.formatter) : void 0,
			formatterSelectorValue: (0, Q.isFunction)(e.formatterSelectorValue) ? e.formatterSelectorValue : void 0,
			formatterFinderValue: (0, Q.isFunction)(e.formatterFinderValue) ? e.formatterFinderValue : void 0,
			editorType: e.editorType ?? (e.slots?.edit && (e.field || e.key) && (0, Q.isFunction)(e.slots?.edit) ? `__slot:${e.field || e.key}` : e.editRender?.name ? e.editRender.name : void 0),
			render: V(e),
			renderHeader: ue(e),
			children: e.children?.map((e) => de(e))
		});
		x(() => {
			A.value && (Po(A.value), y = new Co.default(A.value, {
				config: v.value.config,
				columns: m.columns.map((e) => de(e)),
				data: m.data,
				footerData: m.footerData,
				emptyElement: j.value || void 0,
				overlayerElement: ne.value || void 0,
				editorElement: ee.value || void 0
			}), Lo(y), Object.keys(w).forEach((e) => {
				let t = w[e];
				if (typeof t == "function" && e.startsWith("on")) {
					let n = e.charAt(2).toLowerCase() + e.slice(3);
					y?.on(n, t);
				}
			}), y.on("change", (e) => {
				u("change", e);
			}), y.on("overlayerChange", (e) => {
				re.value = e;
			}), y.on("setSelector", (e) => {
				oe(e);
			}), y.on("clearSelector", () => {
				ae();
			}), y.on("startEdit", (e) => {
				N.value = e, P.value = e.editorType, P.value;
			}), y.on("doneEdit", () => {
				P.value = "text";
			}), y.on("selectionChange", (e) => {
				d.value = e, u("selectionChange", e);
			}), y.on("sortChange", (e) => {
				u("sortChange", e);
			}), u("ready", y), z(), b = Fo({
				getTable: () => y,
				getConfig: () => v.value.config,
				getEl: () => A.value
			}));
		}), S(() => {
			b?.disconnect();
		});
		function fe(e) {
			if (!y || !N.value) return;
			let { rowKey: t, key: n } = N.value;
			y?.setItemValueByEditor(t, n, e);
		}
		let pe = () => document.body;
		return F(() => m.data, (e) => {
			y?.loadData(e);
		}, { deep: !0 }), Sa(() => m.columns, (e, t) => {
			(0, Q.isEqual)(e, t) || y?.loadColumns(e.map((e) => de(e)));
		}, { deep: !0 }), F(() => v.value.config, (e) => {
			y?.loadConfig(e), z(e);
		}, { deep: !0 }), F(() => m.footerData, (e) => {
			y?.loadFooterData(e || []);
		}, { deep: !0 }), F(() => m.loading, (e, t) => {
			e !== t && y?.setLoading(e);
		}, { immediate: !0 }), s({
			get $table() {
				return y;
			},
			selectedRecords: t(() => d.value),
			clearSelection: () => {
				y?.clearSelection(), d.value = [];
			},
			reloadData: () => {
				y?.loadData(m.data);
			}
		}), (t, s) => {
			let l = O("a-empty"), u = O("a-spin");
			return C(), n(u, { spinning: o.loading }, {
				default: I(() => [a("div", {
					ref_key: "eVirtTableRef",
					ref: A
				}, [
					a("div", {
						ref_key: "eVirtTableEditorRef",
						ref: ee
					}, [P.value.startsWith("__slot:") ? (C(), n(k(ie[P.value].slots.edit({
						row: N.value.row,
						column: ie[P.value],
						rowIndex: N.value.rowIndex
					})), {
						key: 0,
						bordered: !1,
						style: _(se.value),
						class: "ev-editor-wrapper",
						"get-popup-container": pe,
						value: N.value.value,
						"onUpdate:value": s[0] ||= (e) => N.value.value = e,
						cell: N.value,
						onBlur: fe
					}, null, 40, [
						"style",
						"value",
						"cell"
					])) : M(za).renders[P.value]?.renderEdit ? (C(), n(M(wo), {
						key: 1,
						"cell-render": L[N.value.key],
						class: "ev-editor-wrapper",
						style: _(se.value),
						"render-table-params": {
							data: m.data,
							row: N.value?.row,
							rowIndex: N.value?.rowIndex ?? -1,
							field: N.value?.key ?? "",
							title: N.value?.column?.title ?? ""
						},
						bordered: !1,
						"get-popup-container": pe,
						onBlur: fe
					}, null, 8, [
						"cell-render",
						"style",
						"render-table-params"
					])) : r("", !0)], 512),
					a("div", {
						ref_key: "eVirtTableEmptyRef",
						ref: j
					}, [D(t.$slots, "empty", {}, () => [c(l, { description: "空数据" })])], 512),
					a("div", {
						ref_key: "eVirtTableOverlayerRef",
						ref: ne
					}, [(C(!0), i(e, null, E(re.value?.views || [], (a) => (C(), i("div", {
						class: h(a.class),
						style: _(a.style),
						key: a.type
					}, [(C(!0), i(e, null, E(a.views, (a) => (C(), i("div", {
						style: _(a.style),
						key: a.key
					}, [(C(!0), i(e, null, E(a.cells, (e) => (C(), i("div", p({
						class: ["canvas-cell", { "evt-selected-cell-layer": R(e) }],
						key: `${e.rowKey}_${e.key}`,
						style: { ...e.style }
					}, { ref_for: !0 }, e.domDataset), [typeof e.render == "function" ? (C(), n(k(e.render(e)), {
						key: 0,
						bordered: !1
					})) : typeof e.render == "string" && e.render.startsWith("slot:") ? D(t.$slots, e.render.replace("slot:", ""), p({ ref_for: !0 }, e, { cell: e }), void 0, void 0, 1) : r("", !0)], 16))), 128))], 4))), 128))], 6))), 128))], 512)
				], 512)]),
				_: 3
			}, 8, ["spinning"]);
		};
	}
}), zo = { key: 0 }, Bo = {
	key: 1,
	class: "p-canvas-toolbar-wrapper flex items-center w-full justify-between p-theme-bg pt-8px px-16px"
}, Vo = { class: "flex items-center flex-1 gap-4px" }, Ho = { class: "inline-flex items-center gap-4px" }, Uo = { key: 2 }, Wo = { class: "flex items-center gap-4px" }, Go = {
	key: 0,
	class: "p-grid-footer text-slate-5"
}, Ko = {
	key: 1,
	class: "p-grid-footer"
}, qo = { class: "flex-1 min-w-0 flex items-center text-slate-5" }, Jo = /* @__PURE__ */ l({
	__name: "PCanvasGrid",
	props: {
		staticConfig: {},
		manualFetch: { type: Boolean },
		formConfig: {},
		columns: {},
		toolbarConfig: {},
		pageConfig: {},
		proxyConfig: {},
		config: {},
		border: { type: [Boolean, String] },
		scrollbarMode: {},
		scrollbarShowDelay: {},
		lazyReset: {
			type: Boolean,
			default: () => da().lazyReset ?? !1
		},
		fitHeight: { default: () => da().fitCanvasHeight ?? 0 },
		autoBoxSize: {
			type: Boolean,
			default: !1
		},
		autoBoxSizeOffset: {}
	},
	emits: [
		"toolbarButtonClick",
		"toolbarToolClick",
		"pick",
		"resetQuery",
		"sortChange"
	],
	setup(l, { expose: d, emit: f }) {
		let h = l, _ = te(), b = N(), S = t(() => Object.keys(b).filter((e) => !e.startsWith("__"))), j = f, ne = (e) => {
			j("sortChange", e);
		}, { formConfig: P, pageConfig: re, columns: ie, toolbarConfig: R, proxyConfig: ae, config: oe, staticConfig: z } = ee(h), se = t(() => P.value?.searchItems ?? P.value?.items ?? []), ce = pa(), le = t(() => h.autoBoxSizeOffset ?? da().autoBoxSizeOffset), B = T(Qi()), V = T({}), ue = t(() => ({
			...h,
			config: {
				...ce,
				...h.config,
				...h.border === void 0 ? {} : { BORDER: h.border },
				...h.scrollbarMode === void 0 ? {} : { scrollbarMode: h.scrollbarMode },
				...h.scrollbarShowDelay === void 0 ? {} : { SCROLLBAR_SHOW_DELAY: h.scrollbarShowDelay }
			}
		})), de = t(() => ae.value && ae.value.ajax ? re.value ? "pagination" : "list" : "bad"), fe = t(() => fa(re.value));
		t(() => de.value === "pagination" && {
			current: H.page,
			total: ve.value,
			pageSize: H.size,
			responsive: !1,
			showSizeChanger: !0,
			showTotal: (e) => `共${e}条数据`
		});
		let me = t(() => (re.value?.pageSizes ?? [
			10,
			20,
			50,
			100,
			200
		]).map(String)), he = t(() => (0, Q.omit)({
			...P.value?.searchItems === void 0 ? { labelCol: _a } : {},
			...P.value
		}, ["items", "searchItems"])), ge = w({
			toolbar: !1,
			form: !1,
			table: !1
		}), H = w({
			page: 1,
			size: re.value?.pageSize ?? 10
		}), _e = T(0), ve = T(0), ye = T([]), be = T(), xe = T(), Se = T(), Ce = T(), we = T(), Te = T(), Ee = T(), De = T(500), Oe = T({}), ke = (e) => {
			Oe.value[H.page] = e;
		}, Ae = w([...(h.toolbarConfig?.buttons?.map((e) => e.code) ?? []).filter((e) => e), ...(h.toolbarConfig?.tools?.map((e) => e.code) ?? []).filter((e) => e)].reduce((e, t) => (e[t] = !1, e), {})), Me = (e, t) => {
			Ae[e] = t;
		}, Ne = (e) => {
			(0, Q.isObject)(e) ? (Object.prototype.hasOwnProperty.call(e, "toolbar") && (ge.toolbar = e.toolbar), Object.prototype.hasOwnProperty.call(e, "form") && (ge.form = e.form), Object.prototype.hasOwnProperty.call(e, "table") && (ge.table = e.table)) : (0, Q.isBoolean)(e) && (ge.form = e, ge.toolbar = e, ge.table = e);
		}, Pe = (e) => {
			let t = ue.value.config?.ROW_KEY ?? "id";
			return typeof t == "function" ? t(e) : e[t];
		}, Fe = t(() => (0, Q.uniq)(Object.values(Oe.value).flat(), Pe)), Ie = () => {
			He();
		}, Le = t(() => Fe.value.map(Pe)), Re = (e, t) => t ? {
			list: (0, Q.isString)(t.list) ? (0, Q.get)(e, t.list) : (0, Q.isFunction)(t.list) ? t.list(e) : void 0,
			total: (0, Q.isString)(t.total) ? (0, Q.get)(e, t.total) : (0, Q.isFunction)(t.total) ? t.total(e) : void 0,
			result: (0, Q.isString)(t.result) ? (0, Q.get)(e, t.result) : (0, Q.isFunction)(t.result) ? t.result(e) : void 0,
			message: (0, Q.isString)(t.message) ? (0, Q.get)(e, t.message) : (0, Q.isFunction)(t.message) ? t.message(e) : void 0
		} : { list: e }, ze = (0, Q.debounce)((e) => {
			j("toolbarButtonClick", {
				data: ye.value,
				code: e,
				selectedKeys: Le.value,
				records: Fe.value
			}), Ge(e);
		}, 100), U = ({ key: e }) => ze(e), Be = (0, Q.debounce)((e) => {
			j("toolbarToolClick", {
				data: ye.value,
				code: e,
				selectedKeys: Le.value,
				records: Fe.value
			}), Ge(e);
		}, 100), Ve = () => new Promise((e) => {
			if (de.value !== "bad") {
				Ne({
					table: !0,
					form: !0
				});
				let { ajax: t } = ae.value;
				t.query({
					form: V.value,
					page: H
				}).then((t) => {
					let { list: n, total: r, result: i, message: a } = Re(t, ae.value.response);
					n ? (ye.value = n, _e.value++) : i ? (ye.value = i, ve.value = r ?? i.length, _e.value++) : (ye.value = [], _e.value++, a && io(a)), e(ye.value);
				}).catch((t) => {
					console.error("fetchData error", t), e([]);
				}).finally(() => {
					Ne({
						table: !1,
						form: !1
					});
				});
			}
		}), W = (e, t) => (H.page = e, H.size = t, Ve()), G = () => {
			Oe.value = {}, xe.value?.clearSelection?.();
		}, He = () => (H.page = 1, G(), Ve().then((e) => (G(), e))), Ue = (0, Q.debounce)(Ve, 160), K = (e, t) => (Object.assign(V.value, e), H.page = 1, t ? Promise.resolve() : Ue()), We = (e, t) => (V.value = e, H.page = 1, t ? Promise.resolve() : Ue()), Ge = (e) => {
			let { ajax: t } = ae.value;
			e === "multiDelete" && t.multiDelete && (Le.value.length > 0 ? to({
				title: "警告",
				content: "确认删除选中的数据吗?"
			}).then(() => {
				Ne({
					table: !0,
					toolbar: !0
				}), t.multiDelete(Le.value).then(() => {
					no("删除成功"), He();
				}).catch(() => {
					ro("删除失败");
				}).finally(() => {
					Ne({
						table: !1,
						toolbar: !1
					}), Ae.multiDelete = !1;
				});
			}) : io("请选择要删除的数据"));
		}, q = t(() => !z.value || !z.value.selectable && !z.value.tree ? ie.value : [z.value.selectable && z.value.tree ? {
			type: "selection-tree",
			width: 40,
			widthFillDisable: !0,
			title: ""
		} : z.value.selectable ? {
			type: "selection",
			width: 40,
			widthFillDisable: !0,
			title: ""
		} : z.value.tree ? {
			type: "tree",
			width: 40,
			widthFillDisable: !0,
			title: ""
		} : {
			type: "index",
			width: 40,
			widthFillDisable: !0,
			title: ""
		}, ...ie.value]), Ke = (e) => {
			if (se.value.length > 0) {
				if (P.value?.customReset) P.value.customReset();
				else {
					let e = {};
					ia(se.value, (t) => {
						t.field && t.itemRender ? ta(t.itemRender.defaultValue) ? e[t.field] = t.itemRender.defaultValue : e[t.field] = void 0 : t.field && t.slots && (ta(t.slots.defaultValue) ? e[t.field] = t.slots.defaultValue : e[t.field] = void 0);
					}), V.value = e;
				}
				j("resetQuery");
			}
			H.page = 1, e || Ue();
		}, J = () => (G(), Ke()), qe = (e) => (0, Q.isFunction)(e) ? e() : e, Je = (e) => (0, Q.isString)(e), Ye = null, Xe = () => {
			Ye?.destroy(), Ye = null;
		}, Y = () => {
			Xe(), !(!h.autoBoxSize || !Se.value) && (Ye = uo(() => Se.value ?? void 0, () => oo(le.value), { onLayout: () => {
				m(() => X());
			} }), Ye.attach());
		};
		F(() => h.autoBoxSize, (e) => {
			e ? m(() => Y()) : Xe();
		}), F(le, () => {
			h.autoBoxSize && Ye?.update();
		}, { deep: !0 });
		let Ze = null, X = () => {
			Ze && cancelAnimationFrame(Ze), Ze = requestAnimationFrame(() => {
				if (Ze = null, !Te.value) return;
				let e = Te.value.clientHeight;
				if (e <= 0) return;
				let t = h.fitHeight ?? 0;
				De.value = Math.max(e - t, 100);
			});
		}, Qe = null;
		F(Ce, (e) => {
			Qe?.disconnect(), Qe = null, e && (Qe = new ResizeObserver(() => X()), Qe.observe(e));
		}, { immediate: !0 }), F(de, () => m(() => X()));
		let $e, et = null, tt = null;
		return x(() => {
			if (X(), window.addEventListener("resize", X), $e = new MutationObserver((e) => {
				e.forEach((e) => {
					if (e.type === "attributes" && e.attributeName === "style") {
						let t = e.target;
						window.getComputedStyle(t).display !== "none" && X();
					}
				});
			}), Se.value) {
				$e.observe(Se.value, {
					attributes: !0,
					attributeFilter: ["style"]
				}), et = new ResizeObserver(() => X());
				let e = Se.value.parentElement;
				for (let t = 0; t < 5 && e && e !== document.body; t++) et.observe(e), e = e.parentElement;
			}
			tt = new ResizeObserver(() => X()), Te.value && tt.observe(Te.value), Ke(h.manualFetch), m(() => {
				h.autoBoxSize && Y(), X();
			});
		}), v(() => {
			m(() => {
				h.autoBoxSize && Ye?.update(), requestAnimationFrame(() => X());
			});
		}), y(() => {
			Ze && cancelAnimationFrame(Ze), window.removeEventListener("resize", X), $e.disconnect(), Qe?.disconnect(), et?.disconnect(), tt?.disconnect(), Xe();
		}), d({
			commitProxy: {
				query: Ue,
				reload: J,
				reloadPage: He,
				passQuery: K,
				forcePassQuery: We
			},
			$canvasTable: t(() => xe.value),
			selectedRowKeys: Le,
			setBtnLoading: Me,
			selectedRecords: Fe,
			clearSelection: G,
			$form: t(() => be.value?.$form),
			getFormData: () => V.value,
			setLoadings: Ne,
			resizeTable: X
		}), (t, d) => {
			let f = O("a-menu-item"), m = O("a-menu"), v = O("a-dropdown");
			return C(), i("div", p({
				ref_key: "boxEl",
				ref: Se,
				class: ["p-wrapper flex flex-col gap-8px overflow-y-auto", l.autoBoxSize ? "min-h-0 min-w-0 flex-1 w-full" : "h-full"]
			}, M(_)), [de.value === "bad" ? (C(), i("div", zo, "请检查配置")) : (C(), i(e, { key: 1 }, [
				se.value.some((e) => e.field && e.itemRender) ? (C(), i("div", {
					key: 0,
					ref_key: "pFormWrapper",
					ref: Ce,
					class: "p-form-wrapper"
				}, [(C(), n($a, p({
					key: B.value,
					ref_key: "formEl",
					ref: be
				}, he.value, {
					"auto-reset": !1,
					data: V.value,
					items: se.value,
					loading: ge.form,
					"show-actions": M(P)?.searchItems !== void 0,
					onReset: d[0] ||= (e) => Ke(h.lazyReset),
					onSearch: Ie
				}), null, 16, [
					"data",
					"items",
					"loading",
					"show-actions"
				]))], 512)) : r("", !0),
				M(R) ? (C(), i("div", Bo, [a("div", Vo, [M(R).buttons && M(R).buttons.length > 0 ? (C(!0), i(e, { key: 0 }, E(M(R).buttons, (t, l) => (C(), i(e, { key: l }, [t.dropdowns && t.dropdowns.length ? (C(), n(v, { key: 0 }, {
					overlay: I(() => [c(m, { onClick: U }, {
						default: I(() => [(C(!0), i(e, null, E(t.dropdowns, (e) => (C(), n(f, { key: e.code }, {
							default: I(() => [s(A(e.content), 1)]),
							_: 2
						}, 1024))), 128))]),
						_: 2
					}, 1024)]),
					default: I(() => [c(M(L), {
						type: t.type,
						size: t.size ?? "middle",
						disabled: M(R).disabled || t.disabled,
						loading: ge.toolbar || !!t.code && Ae[t.code],
						danger: t.danger,
						shape: t.shape,
						ghost: t.ghost,
						block: t.block
					}, o({
						default: I(() => [a("span", Ho, [t.content && Je(qe(t.content)) ? (C(), i(e, { key: 0 }, [s(A(qe(t.content)), 1)], 64)) : t.content ? (C(), n(k(qe(t.content)), { key: 1 })) : r("", !0), c(M(je))])]),
						_: 2
					}, [t.icon ? {
						name: "icon",
						fn: I(() => [c(M(ja), { icon: t.icon }, null, 8, ["icon"])]),
						key: "0"
					} : void 0]), 1032, [
						"type",
						"size",
						"disabled",
						"loading",
						"danger",
						"shape",
						"ghost",
						"block"
					])]),
					_: 2
				}, 1024)) : t.code ? (C(), n(M(L), {
					key: 1,
					type: t.type,
					size: t.size ?? "middle",
					disabled: M(R).disabled || t.disabled,
					loading: ge.toolbar || !!t.code && Ae[t.code],
					danger: t.danger,
					shape: t.shape,
					ghost: t.ghost,
					block: t.block,
					onClick: (e) => M(ze)(t.code)
				}, o({
					default: I(() => [t.content && Je(qe(t.content)) ? (C(), i(e, { key: 0 }, [s(A(qe(t.content)), 1)], 64)) : t.content ? (C(), n(k(qe(t.content)), { key: 1 })) : r("", !0)]),
					_: 2
				}, [t.icon ? {
					name: "icon",
					fn: I(() => [c(M(ja), { icon: t.icon }, null, 8, ["icon"])]),
					key: "0"
				} : void 0]), 1032, [
					"type",
					"size",
					"disabled",
					"loading",
					"danger",
					"shape",
					"ghost",
					"block",
					"onClick"
				])) : (C(), i("div", Uo))], 64))), 128)) : r("", !0)]), a("span", Wo, [M(R).tools && M(R).tools.length > 0 ? (C(!0), i(e, { key: 0 }, E(M(R).tools, (t, a) => (C(), n(M(L), {
					key: a,
					type: t.type,
					size: t.size ?? "middle",
					disabled: M(R).disabled || t.disabled,
					danger: t.danger,
					shape: t.shape,
					ghost: t.ghost,
					block: t.block,
					onClick: (e) => M(Be)(t.code),
					loading: ge.toolbar || !!t.code && Ae[t.code]
				}, o({
					default: I(() => [t.content && Je(qe(t.content)) ? (C(), i(e, { key: 0 }, [s(A(qe(t.content)), 1)], 64)) : t.content ? (C(), n(k(qe(t.content)), { key: 1 })) : r("", !0)]),
					_: 2
				}, [t.icon ? {
					name: "icon",
					fn: I(() => [c(M(ja), { icon: t.icon }, null, 8, ["icon"])]),
					key: "0"
				} : void 0]), 1032, [
					"type",
					"size",
					"disabled",
					"danger",
					"shape",
					"ghost",
					"block",
					"onClick",
					"loading"
				]))), 128)) : r("", !0)])])) : r("", !0),
				a("div", {
					ref_key: "tableWrapperEl",
					ref: we,
					class: "flex-1 h-0 min-h-0 flex flex-col p-inner-scroll"
				}, [a("div", {
					ref_key: "tableBodyEl",
					ref: Te,
					class: "flex-1 min-h-0 overflow-hidden"
				}, [c(Ro, {
					ref_key: "canvasTableRef",
					ref: xe,
					columns: q.value,
					config: {
						...ue.value.config,
						HEIGHT: De.value
					},
					data: ye.value,
					loading: ge.table,
					onSelectionChange: ke,
					onSortChange: ne
				}, o({ _: 2 }, [E(S.value, (e) => ({
					name: e,
					fn: I((n) => [D(t.$slots, e, g(u(n || {})))])
				}))]), 1032, [
					"columns",
					"config",
					"data",
					"loading"
				])], 512), a("div", {
					ref_key: "tableFooterEl",
					ref: Ee,
					class: "flex-shrink-0"
				}, [de.value !== "pagination" && M(z)?.selectable && M(z).showCount ? (C(), i("div", Go, " 已选:" + A(Le.value.length), 1)) : de.value === "pagination" ? (C(), i("div", Ko, [a("div", qo, [D(t.$slots, "__pagerLeft", {}, () => [M(z)?.selectable && M(z).showCount ? (C(), i(e, { key: 0 }, [s(" 已选:" + A(Le.value.length), 1)], 64)) : r("", !0)])]), c(M(pe), {
					class: "p-canvas-pagination",
					size: "small",
					current: H.page,
					"page-size": H.size,
					"page-size-options": me.value,
					"show-size-changer": M(re)?.showSizeChanger ?? !0,
					"show-quick-jumper": fe.value,
					"show-total": (e) => `共${e}条数据`,
					total: ve.value,
					onChange: W
				}, null, 8, [
					"current",
					"page-size",
					"page-size-options",
					"show-size-changer",
					"show-quick-jumper",
					"show-total",
					"total"
				])])) : r("", !0)], 512)], 512)
			], 64))], 16);
		};
	}
}), Yo = /* @__PURE__ */ l({
	__name: "PGroupBlock",
	props: {
		name: {},
		getFormSetting: { type: Function },
		source: {}
	},
	setup(e, { expose: r }) {
		let i = e, a = T(), { source: o } = ee(i), s = t(() => a.value?.$form), c = t(() => i.getFormSetting(o.value));
		return r({ $form: s }), (t, r) => (C(), n(Ga, p({
			name: e.name,
			ref_key: "formEl",
			ref: a
		}, c.value, { data: M(o) }), null, 16, ["name", "data"]));
	}
}), Xo = 0, Zo = -90, Qo = /* @__PURE__ */ l({
	__name: "CollapseCard",
	props: {
		defaultCollapsed: {
			type: Boolean,
			default: !1
		},
		title: { default: void 0 },
		collapsible: {
			type: Boolean,
			default: !1
		}
	},
	setup(e, { expose: r }) {
		let i = T(e.defaultCollapsed ? [] : ["content"]), a = t(() => la().icon?.collapseExpandIcon), s = ({ isActive: e }) => {
			let t = a.value;
			if (!t) return null;
			let n = typeof t == "string" ? t : e ? t[1] : t[0];
			return d("span", {
				class: "collapsible-card__expand-icon",
				style: {
					fontSize: "18px",
					display: "inline-flex",
					transform: `rotate(${typeof t == "string" ? e ? Zo : Xo : 0}deg)`
				}
			}, [d(ja, { icon: n })]);
		};
		return r({
			collapse: () => {
				i.value = [];
			},
			expand: () => {
				i.value = ["content"];
			}
		}), (t, r) => {
			let l = O("a-collapse-panel"), u = O("a-collapse"), d = O("a-card");
			return e.collapsible ? (C(), n(u, {
				key: 0,
				"active-key": i.value,
				"onUpdate:activeKey": r[0] ||= (e) => i.value = e,
				class: "collapsible-card",
				"expand-icon": a.value ? s : void 0
			}, {
				default: I(() => [c(l, {
					key: "content",
					"force-render": "",
					header: e.title
				}, o({ _: 2 }, [E(t.$slots, (e, n) => ({
					name: n,
					fn: I(() => [D(t.$slots, n)])
				}))]), 1032, ["header"])]),
				_: 3
			}, 8, ["active-key", "expand-icon"])) : (C(), n(d, {
				key: 1,
				size: "small",
				title: e.title
			}, o({ _: 2 }, [E(t.$slots, (e, n) => ({
				name: n,
				fn: I(() => [D(t.$slots, n)])
			}))]), 1032, ["title"]));
		};
	}
}), $o = /* @__PURE__ */ l({
	__name: "PFormGroup",
	props: /*@__PURE__*/ f({
		name: {},
		getFormSetting: { type: Function },
		title: {},
		tabLabel: {},
		getTabLabel: { type: Function },
		editAble: { type: Boolean },
		showAdd: { type: Boolean },
		collapsible: { type: Boolean },
		defaultCollapsed: { type: Boolean },
		lazyErrorMark: { type: Boolean },
		forceRender: { type: Boolean },
		keepSerial: { type: Boolean },
		loading: { type: Boolean },
		itemMenus: {},
		createItem: { type: Function },
		max: {},
		menuHandler: { type: Function }
	}, {
		modelValue: {
			type: Array,
			default: () => []
		},
		modelModifiers: {}
	}),
	emits: ["update:modelValue"],
	setup(l, { expose: u }) {
		let d = ce.useForm, f = T(), p = l, h = T(), g = ne(l, "modelValue"), _ = T(0), v = T([]), y = T([]), b = (e, t) => $(e.__index) ? e.__index : t, x = () => ((0, Q.max)(g.value, (e) => e.__index ?? -1)?.__index ?? -1) + 1, S = () => {
			g.value.forEach((e) => {
				$(e.__index) || (e.__index = x());
			});
		}, w = () => {
			y.value = y.value.filter((e) => !!e);
		}, k = (e) => {
			v.value = v.value.filter((t) => e.includes(t));
		}, ee = (e) => {
			let t = g.value[e];
			if (!t) return;
			let n = t.__index;
			g.value = g.value.filter((t, n) => n !== e), $(n) && (v.value = v.value.filter((e) => e !== n)), m(() => {
				if (w(), g.value.length === 0) {
					_.value = 0;
					return;
				}
				_.value >= g.value.length ? _.value = g.value.length - 1 : e < _.value ? _.value = Math.max(0, _.value - 1) : e === _.value && (_.value = Math.min(e, g.value.length - 1));
			});
		}, j = (e) => {
			_.value = e;
		}, te = t(() => p.max ?? Infinity), P = (e) => {
			(p.createItem ?? (() => Promise.resolve({})))({ list: g.value }).then((t) => {
				g.value = [...g.value, {
					...t,
					__index: x()
				}], _.value = e;
			});
		}, ie = p.itemMenus ?? [{
			content: "复制",
			code: "copy"
		}, {
			content: "删除",
			code: "delete"
		}], R = (e) => e?.parentElement?.parentElement?.parentElement?.parentElement?.parentElement?.parentElement ?? h.value?.$el ?? document.body, ae = t(() => p.forceRender || g.value.length <= 5), oe = (e) => {
			let t = g.value.find((t, n) => n === e)?.__index;
			$(t) && (v.value = v.value.filter((e) => e !== t));
		}, z = () => {
			m().then(() => {
				oe(_.value), y.value[_.value]?.$form?.validate();
			});
		}, le = (e, t) => p.getTabLabel?.(e, t) ?? `${p.tabLabel} ${p.keepSerial ? t + 1 : (e.__index ?? 0) + 1}`;
		F(() => g.value, () => {
			S();
		}, { immediate: !0 }), F(() => g.value.map((e) => e.__index), (e, t) => {
			if (!t) return;
			let n = e.filter((e) => typeof e == "number");
			k(n), m(w);
		});
		let B = (0, Q.debounce)(({ key: e }, t, n) => {
			if (p.menuHandler && (0, Q.isFunction)(p.menuHandler)) p.menuHandler({
				code: (0, Q.toString)(e),
				data: t,
				index: n
			}), (0, Q.toString)(e) === "delete" && m(() => {
				let e = g.value.map((e) => e.__index).filter((e) => typeof e == "number");
				k(e), w(), _.value >= g.value.length && (_.value = Math.max(0, g.value.length - 1));
			});
			else switch (e) {
				case "delete":
					ee(n);
					break;
				case "copy":
					if (g.value.length >= te.value) {
						io("已达到最大数量");
						return;
					}
					g.value = [...g.value, (0, Q.clone)({
						...(0, Q.omit)(t, ["id", "__index"]),
						__index: x()
					})];
			}
		}, 100);
		re(() => {
			g.value.length === 0 ? _.value = 0 : _.value >= g.value.length && (_.value = g.value.length - 1);
		});
		let V = (0, Q.debounce)(oe, 50);
		re(() => {
			let e = g.value.map((e, t) => v.value.includes(e.__index) ? t : void 0).filter($), t = f.value?.$el;
			t && t.querySelectorAll(":scope >.ant-tabs-nav>.ant-tabs-nav-wrap>.ant-tabs-nav-list>.ant-tabs-tab>.ant-tabs-tab-btn").forEach((t, n) => {
				e.includes(n) ? t.classList.add("p-error-group-tab") : t.classList.remove("p-error-group-tab");
			});
		}), u({
			collapse: () => {
				h.value?.collapse?.();
			},
			expand: () => {
				h.value?.expand?.();
			},
			activeKey: t(() => _.value),
			setActiveKey: j,
			removeItem: ee,
			validateAll: () => {
				let e = ae.value ? y.value.map((e) => e.$form?.validate()) : g.value.map((e) => d(e, p.getFormSetting(e).rules)?.validate() ?? Promise.resolve());
				return Promise.allSettled(e).then((e) => {
					if (v.value = e.map((e, t) => e.status === "rejected" && typeof g.value[t]?.__index == "number" ? g.value[t].__index : void 0).filter((e) => typeof e == "number"), !p.lazyErrorMark && v.value.length) {
						let e = v.value[0], t = g.value.findIndex((t) => t.__index === e);
						t !== -1 && (_.value = t);
					}
					return v.value.length ? Promise.reject({
						error_indexes: v.value,
						results: e
					}) : Promise.resolve(e);
				});
			},
			validate: async (e, t) => {
				let n = g.value.findIndex((t) => t.__index === e);
				try {
					return await (ae.value ? y.value[n]?.$form?.validate() ?? Promise.resolve() : d(g.value[n], p.getFormSetting(g.value[n]).rules)?.validate() ?? Promise.resolve()), v.value = v.value.filter((t) => t !== e), Promise.resolve();
				} catch (n) {
					return !v.value.includes(e) && !t && (v.value = [...v.value, e]), Promise.reject(n);
				}
			},
			validateFields: async (e, t, n) => {
				let r = g.value.findIndex((t) => t.__index === e), i = p.getFormSetting(g.value[r]).rules, a = d(g.value[r], i);
				try {
					return await (ae.value ? y.value[r]?.$form?.validateFields(t) ?? Promise.resolve() : Promise.allSettled(t.map((e) => a.validateField(e, g.value[r][e], i[e] ?? [])))), Promise.resolve();
				} catch (t) {
					return !v.value.includes(e) && !n && (v.value = [...v.value, e]), Promise.reject(t);
				}
			}
		});
		let fe = N(), pe = t(() => Object.keys(fe).filter((e) => e.startsWith("group-")).map((e) => ({
			original: e,
			target: e.replace("group-", "")
		})));
		return (t, u) => {
			let d = O("a-spin");
			return C(), n(Qo, {
				ref_key: "rootRef",
				ref: h,
				title: l.title,
				size: "small",
				collapsible: l.collapsible,
				"default-collapsed": l.defaultCollapsed
			}, o({
				default: I(() => [l.loading ? (C(), n(d, {
					key: 0,
					class: "w-full"
				})) : (C(), n(M(Ce), {
					key: 1,
					ref_key: "tabsRef",
					ref: f,
					type: "editable-card",
					activeKey: _.value,
					"onUpdate:activeKey": u[1] ||= (e) => _.value = e,
					"hide-add": "",
					onChange: z
				}, {
					rightExtra: I(() => [D(t.$slots, "rightExtra", {}, () => [l.showAdd && g.value.length < te.value ? (C(), n(M(L), {
						key: 0,
						type: "link",
						onClick: u[0] ||= (e) => P(g.value.length)
					}, {
						default: I(() => [...u[2] ||= [s(" + 新增 ", -1)]]),
						_: 1
					})) : r("", !0)])]),
					default: I(() => [(C(!0), i(e, null, E(g.value, (t, o) => (C(), n(M(xe), {
						key: o,
						tab: le(t, o),
						"force-render": ae.value
					}, {
						closeIcon: I(() => [l.editAble && M(ie)?.length ? (C(), n(M(se), {
							key: 0,
							"get-popup-container": R
						}, {
							overlay: I(() => [c(M(ue), { onClick: (e) => M(B)(e, t, o) }, {
								default: I(() => [(C(!0), i(e, null, E(M(ie).filter((e) => e.visibleMethod?.({
									data: t,
									index: o
								}) ?? !0), (e) => (C(), n(M(de), { key: e.code }, {
									default: I(() => [a("div", null, A(e.content), 1)]),
									_: 2
								}, 1024))), 128))]),
								_: 2
							}, 1032, ["onClick"])]),
							default: I(() => [c(M(Ne))]),
							_: 2
						}, 1024)) : r("", !0)]),
						default: I(() => [(C(), n(Yo, {
							ref_for: !0,
							ref_key: "blockInstance",
							ref: y,
							key: b(t, o),
							source: t,
							name: l.name ? `${l.name}_${b(t, o)}` : void 0,
							"get-form-setting": l.getFormSetting,
							onFocusCapture: (e) => M(V)(o),
							onClickCapture: (e) => M(V)(o)
						}, null, 8, [
							"source",
							"name",
							"get-form-setting",
							"onFocusCapture",
							"onClickCapture"
						]))]),
						_: 2
					}, 1032, ["tab", "force-render"]))), 128))]),
					_: 3
				}, 8, ["activeKey"]))]),
				_: 2
			}, [E(pe.value, (e) => ({
				name: e.target,
				fn: I(() => [D(t.$slots, e.original)])
			}))]), 1032, [
				"title",
				"collapsible",
				"default-collapsed"
			]);
		};
	}
}), es = { class: "w-full text-right p-2" }, ts = /* @__PURE__ */ l({
	__name: "PromisePicker",
	props: {
		gridSetting: {},
		title: { default: "数据选择" },
		width: { default: "70%" },
		multipleAllowEmpty: {
			type: Boolean,
			default: !1
		},
		bodyStyle: { default: () => ({}) },
		beforePick: {
			type: Function,
			default: () => Promise.resolve()
		}
	},
	setup(e, { expose: r }) {
		let i = T(), l = e, u = t(() => l.gridSetting.selectConfig?.multiple), d = t(() => ({
			fitContent: !0,
			...l.gridSetting
		})), f = {
			display: "flex",
			flexDirection: "column",
			minHeight: 0,
			maxHeight: "min(80dvh, calc(100dvh - 200px))",
			overflow: "hidden"
		}, m, h, g, _ = w({ modal: !1 }), v = () => {
			g && g();
		}, y = () => {
			_.modal = !1, g && g();
		}, b = ({ row: e, field: t }) => {
			m && !u.value && l.beforePick(e).then(() => {
				_.modal = !1, m({
					row: e,
					field: t
				});
			});
		}, x = () => {
			let e = i.value?.selectedRecords ?? [];
			e.length === 0 && !l.multipleAllowEmpty ? io("请选择数据") : l.beforePick(e).then(() => {
				_.modal = !1, h(e);
			});
		};
		return r({
			pick: () => new Promise((e, t) => {
				m = e, g = t, _.modal = !0;
			}),
			pickMultiple: () => new Promise((e, t) => {
				h = e, g = t, _.modal = !0;
			}),
			grid: i,
			hide: () => {
				_.modal = !1;
			}
		}), (t, r) => (C(), n(M(fe), {
			open: _.modal,
			"onUpdate:open": r[0] ||= (e) => _.modal = e,
			"destroy-on-close": "",
			title: e.title,
			width: e.width,
			footer: u.value ? void 0 : null,
			onCancel: v,
			"body-style": e.bodyStyle
		}, o({
			default: I(() => [a("div", { style: f }, [c(So, p(d.value, {
				ref_key: "gridEl",
				ref: i,
				onPick: b
			}), null, 16)])]),
			_: 2
		}, [u.value ? {
			name: "footer",
			fn: I(() => [a("div", es, [a("span", null, [c(M(L), {
				class: "mr-4",
				onClick: y
			}, {
				default: I(() => [...r[1] ||= [s(" 取消 ", -1)]]),
				_: 1
			}), c(M(L), {
				type: "primary",
				onClick: x
			}, {
				default: I(() => [...r[2] ||= [s(" 确定 ", -1)]]),
				_: 1
			})])])]),
			key: "0"
		} : void 0]), 1032, [
			"open",
			"title",
			"width",
			"footer",
			"body-style"
		]));
	}
}), ns = /* @__PURE__ */ l((e) => () => {
	let { item: t, data: n, emptyText: r } = e;
	if (t.slots?.default) return t.slots.default({
		data: n,
		field: t.field
	});
	if (t.readonlyRender?.name) {
		let e = t.readonlyRender, r = za.renders[e.name]?.renderReadonly?.(e, {
			data: n,
			field: t.field,
			title: t.label
		}, {}) ?? null;
		if (r !== null) return r;
	}
	if (!t.field) return r;
	let i = n?.[t.field];
	return ta(i) ? i : r;
}, {
	name: "PDescriptionContent",
	props: [
		"item",
		"data",
		"emptyText"
	]
}), rs = /* @__PURE__ */ l({
	__name: "PDescription",
	props: {
		data: {},
		items: {},
		title: {},
		extra: {},
		bordered: {
			type: Boolean,
			default: !1
		},
		size: { default: "default" },
		column: { default: 3 },
		layout: { default: "horizontal" },
		colon: {
			type: Boolean,
			default: !0
		},
		labelStyle: {},
		contentStyle: {},
		emptyText: { default: "-" }
	},
	setup(r) {
		let a = r, l = t(() => ({
			title: a.title,
			extra: a.extra,
			bordered: a.bordered,
			size: a.size,
			column: a.column,
			layout: a.layout,
			colon: a.colon,
			labelStyle: a.labelStyle,
			contentStyle: a.contentStyle
		}));
		return (t, a) => {
			let u = O("a-descriptions-item"), d = O("a-descriptions");
			return C(), n(d, p(l.value, { class: "p-description" }), o({
				default: I(() => [(C(!0), i(e, null, E(r.items, (e, t) => (C(), n(u, {
					key: `_desc_${e.field ?? t}`,
					label: e.label,
					span: e.span,
					"label-style": e.labelStyle,
					"content-style": e.contentStyle
				}, o({
					default: I(() => [c(M(ns), {
						item: e,
						data: r.data,
						"empty-text": r.emptyText || "-"
					}, null, 8, [
						"item",
						"data",
						"empty-text"
					])]),
					_: 2
				}, [e.slots?.label ? {
					name: "label",
					fn: I(() => [(C(), n(k(e.slots.label)))]),
					key: "0"
				} : void 0]), 1032, [
					"label",
					"span",
					"label-style",
					"content-style"
				]))), 128))]),
				_: 2
			}, [t.$slots.title || r.title ? {
				name: "title",
				fn: I(() => [D(t.$slots, "title", {}, () => [s(A(r.title), 1)])]),
				key: "0"
			} : void 0, t.$slots.extra || r.extra ? {
				name: "extra",
				fn: I(() => [D(t.$slots, "extra", {}, () => [s(A(r.extra), 1)])]),
				key: "1"
			} : void 0]), 1040);
		};
	}
});
//#endregion
//#region src/index.ts
function is(e) {
	e && sa(e);
}
var as = {
	install(e) {
		e.component("PForm", Ga), e.component("PSearchForm", $a), e.component("PGrid", So), e.component("PCanvasTable", Ro), e.component("PCanvasGrid", Jo), e.component("PFormGroup", $o), e.component("PGroupBlock", Yo), e.component("PromisePicker", ts), e.component("PDescription", rs);
	},
	addFormatter: Ea,
	addRender: Ra,
	setup: is
};
//#endregion
export { Jo as PCanvasGrid, Ro as PCanvasTable, rs as PDescription, Ga as PForm, $o as PFormGroup, So as PGrid, Yo as PGroupBlock, $a as PSearchForm, ts as PromisePicker, Ea as addFormatter, Ra as addRender, co as applyViewportRestSize, ha as cleanCol, uo as createAutoViewportBoxController, as as default, ga as defaultItemResponsive, _a as defaultLabelCol, ya as get24rest, xa as getButtonResponsive, ca as getTooltipRenderer, la as getUIKitConfig, va as labelColDict, oo as parseAutoViewportBoxOffset, ma as resetUIKitConfig, sa as setUIKitConfig, is as setup, Sa as watchPreviousDeep };