@vue-ui-kit/ant
Version:
Vue3 UI Kit based on Ant Design
12,518 lines • 486 kB
JavaScript
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 = {
"&": "&",
"<": "<",
">": ">",
"\"": """,
"'": "'",
"`": "`"
};
})), 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 };