diry3943542 1 jaar geleden
commit
8b4bf802f8

+ 1 - 0
lib/config.json

@@ -0,0 +1 @@
+{"_hash":1724997613295,"VITE_APP_API_BASE_URL":"http://192.168.200.14:2002","VITE_APP_API_FILE_URL":"/","VITE_APP_SOCKET_URL":"/","VITE_USER_NODE_ENV":"production"}

File diff suppressed because it is too large
+ 0 - 0
lib/css/style.css


BIN
lib/favicon.ico


+ 18 - 0
lib/js/403.js

@@ -0,0 +1,18 @@
+import { openBlock as t, createElementBlock as e } from "vue";
+import { r as o } from "./index2.js";
+const r = {
+  name: "AUth403",
+  data() {
+    return {};
+  },
+  methods: {},
+  mounted() {
+  }
+}, n = { class: "auth-403" };
+function s(c, a, _, d, m, p) {
+  return t(), e("div", n, "403");
+}
+const u = /* @__PURE__ */ o(r, [["render", s]]);
+export {
+  u as default
+};

+ 18 - 0
lib/js/404.js

@@ -0,0 +1,18 @@
+import { openBlock as t, createElementBlock as e } from "vue";
+import { r as o } from "./index2.js";
+const r = {
+  name: "AUth404",
+  data() {
+    return {};
+  },
+  methods: {},
+  mounted() {
+  }
+}, n = { class: "auth-404" };
+function s(c, a, _, d, m, p) {
+  return t(), e("div", n, "404");
+}
+const u = /* @__PURE__ */ o(r, [["render", s]]);
+export {
+  u as default
+};

+ 18 - 0
lib/js/500.js

@@ -0,0 +1,18 @@
+import { openBlock as t, createElementBlock as e } from "vue";
+import { r as o } from "./index2.js";
+const r = {
+  name: "AUth500",
+  data() {
+    return {};
+  },
+  methods: {},
+  mounted() {
+  }
+}, n = { class: "auth-500" };
+function s(c, a, _, d, m, p) {
+  return t(), e("div", n, "500");
+}
+const u = /* @__PURE__ */ o(r, [["render", s]]);
+export {
+  u as default
+};

+ 339 - 0
lib/js/Col.js

@@ -0,0 +1,339 @@
+import { g as E, I as T, _ as g, j as F, aK as D, aL as w, m as k, a as C, F as N } from "./index2.js";
+import { shallowRef as K, onMounted as L, inject as V, computed as $, provide as X, defineComponent as W, ref as R, onBeforeUnmount as H, createVNode as B } from "vue";
+import { d as P } from "./styleChecker.js";
+const J = () => {
+  const e = K(!1);
+  return L(() => {
+    e.value = P();
+  }), e;
+}, _ = Symbol("rowContextKey"), U = (e) => {
+  X(_, e);
+}, q = () => V(_, {
+  gutter: $(() => {
+  }),
+  wrap: $(() => {
+  }),
+  supportFlexGap: $(() => {
+  })
+}), Q = (e) => {
+  const {
+    componentCls: t
+  } = e;
+  return {
+    // Grid system
+    [t]: {
+      display: "flex",
+      flexFlow: "row wrap",
+      minWidth: 0,
+      "&::before, &::after": {
+        display: "flex"
+      },
+      "&-no-wrap": {
+        flexWrap: "nowrap"
+      },
+      // The origin of the X-axis
+      "&-start": {
+        justifyContent: "flex-start"
+      },
+      // The center of the X-axis
+      "&-center": {
+        justifyContent: "center"
+      },
+      // The opposite of the X-axis
+      "&-end": {
+        justifyContent: "flex-end"
+      },
+      "&-space-between": {
+        justifyContent: "space-between"
+      },
+      "&-space-around ": {
+        justifyContent: "space-around"
+      },
+      "&-space-evenly ": {
+        justifyContent: "space-evenly"
+      },
+      // Align at the top
+      "&-top": {
+        alignItems: "flex-start"
+      },
+      // Align at the center
+      "&-middle": {
+        alignItems: "center"
+      },
+      "&-bottom": {
+        alignItems: "flex-end"
+      }
+    }
+  };
+}, Y = (e) => {
+  const {
+    componentCls: t
+  } = e;
+  return {
+    // Grid system
+    [t]: {
+      position: "relative",
+      maxWidth: "100%",
+      // Prevent columns from collapsing when empty
+      minHeight: 1
+    }
+  };
+}, Z = (e, t) => {
+  const {
+    componentCls: a,
+    gridColumns: u
+  } = e, o = {};
+  for (let s = u; s >= 0; s--)
+    s === 0 ? (o[`${a}${t}-${s}`] = {
+      display: "none"
+    }, o[`${a}-push-${s}`] = {
+      insetInlineStart: "auto"
+    }, o[`${a}-pull-${s}`] = {
+      insetInlineEnd: "auto"
+    }, o[`${a}${t}-push-${s}`] = {
+      insetInlineStart: "auto"
+    }, o[`${a}${t}-pull-${s}`] = {
+      insetInlineEnd: "auto"
+    }, o[`${a}${t}-offset-${s}`] = {
+      marginInlineEnd: 0
+    }, o[`${a}${t}-order-${s}`] = {
+      order: 0
+    }) : (o[`${a}${t}-${s}`] = {
+      display: "block",
+      flex: `0 0 ${s / u * 100}%`,
+      maxWidth: `${s / u * 100}%`
+    }, o[`${a}${t}-push-${s}`] = {
+      insetInlineStart: `${s / u * 100}%`
+    }, o[`${a}${t}-pull-${s}`] = {
+      insetInlineEnd: `${s / u * 100}%`
+    }, o[`${a}${t}-offset-${s}`] = {
+      marginInlineStart: `${s / u * 100}%`
+    }, o[`${a}${t}-order-${s}`] = {
+      order: s
+    });
+  return o;
+}, O = (e, t) => Z(e, t), z = (e, t, a) => ({
+  [`@media (min-width: ${t}px)`]: g({}, O(e, a))
+}), ee = E("Grid", (e) => [Q(e)]), te = E("Grid", (e) => {
+  const t = T(e, {
+    gridColumns: 24
+    // Row is divided into 24 parts in Grid
+  }), a = {
+    "-sm": t.screenSMMin,
+    "-md": t.screenMDMin,
+    "-lg": t.screenLGMin,
+    "-xl": t.screenXLMin,
+    "-xxl": t.screenXXLMin
+  };
+  return [Y(t), O(t, ""), O(t, "-xs"), Object.keys(a).map((u) => z(t, a[u], u)).reduce((u, o) => g(g({}, u), o), {})];
+}), ne = () => ({
+  align: N([String, Object]),
+  justify: N([String, Object]),
+  prefixCls: String,
+  gutter: N([Number, Array, Object], 0),
+  wrap: {
+    type: Boolean,
+    default: void 0
+  }
+}), ie = W({
+  compatConfig: {
+    MODE: 3
+  },
+  name: "ARow",
+  inheritAttrs: !1,
+  props: ne(),
+  setup(e, t) {
+    let {
+      slots: a,
+      attrs: u
+    } = t;
+    const {
+      prefixCls: o,
+      direction: s
+    } = F("row", e), [G, y] = ee(o);
+    let v;
+    const x = D(), b = R({
+      xs: !0,
+      sm: !0,
+      md: !0,
+      lg: !0,
+      xl: !0,
+      xxl: !0
+    }), S = R({
+      xs: !1,
+      sm: !1,
+      md: !1,
+      lg: !1,
+      xl: !1,
+      xxl: !1
+    }), h = (n) => $(() => {
+      if (typeof e[n] == "string")
+        return e[n];
+      if (typeof e[n] != "object")
+        return "";
+      for (let r = 0; r < w.length; r++) {
+        const l = w[r];
+        if (!S.value[l]) continue;
+        const i = e[n][l];
+        if (i !== void 0)
+          return i;
+      }
+      return "";
+    }), f = h("align"), p = h("justify"), d = J();
+    L(() => {
+      v = x.value.subscribe((n) => {
+        S.value = n;
+        const r = e.gutter || 0;
+        (!Array.isArray(r) && typeof r == "object" || Array.isArray(r) && (typeof r[0] == "object" || typeof r[1] == "object")) && (b.value = n);
+      });
+    }), H(() => {
+      x.value.unsubscribe(v);
+    });
+    const m = $(() => {
+      const n = [void 0, void 0], {
+        gutter: r = 0
+      } = e;
+      return (Array.isArray(r) ? r : [r, void 0]).forEach((i, M) => {
+        if (typeof i == "object")
+          for (let I = 0; I < w.length; I++) {
+            const A = w[I];
+            if (b.value[A] && i[A] !== void 0) {
+              n[M] = i[A];
+              break;
+            }
+          }
+        else
+          n[M] = i;
+      }), n;
+    });
+    U({
+      gutter: m,
+      supportFlexGap: d,
+      wrap: $(() => e.wrap)
+    });
+    const j = $(() => k(o.value, {
+      [`${o.value}-no-wrap`]: e.wrap === !1,
+      [`${o.value}-${p.value}`]: p.value,
+      [`${o.value}-${f.value}`]: f.value,
+      [`${o.value}-rtl`]: s.value === "rtl"
+    }, u.class, y.value)), c = $(() => {
+      const n = m.value, r = {}, l = n[0] != null && n[0] > 0 ? `${n[0] / -2}px` : void 0, i = n[1] != null && n[1] > 0 ? `${n[1] / -2}px` : void 0;
+      return l && (r.marginLeft = l, r.marginRight = l), d.value ? r.rowGap = `${n[1]}px` : i && (r.marginTop = i, r.marginBottom = i), r;
+    });
+    return () => {
+      var n;
+      return G(B("div", C(C({}, u), {}, {
+        class: j.value,
+        style: g(g({}, c.value), u.style)
+      }), [(n = a.default) === null || n === void 0 ? void 0 : n.call(a)]));
+    };
+  }
+});
+function re(e) {
+  return typeof e == "number" ? `${e} ${e} auto` : /^\d+(\.\d+)?(px|em|rem|%)$/.test(e) ? `0 0 ${e}` : e;
+}
+const se = () => ({
+  span: [String, Number],
+  order: [String, Number],
+  offset: [String, Number],
+  push: [String, Number],
+  pull: [String, Number],
+  xs: {
+    type: [String, Number, Object],
+    default: void 0
+  },
+  sm: {
+    type: [String, Number, Object],
+    default: void 0
+  },
+  md: {
+    type: [String, Number, Object],
+    default: void 0
+  },
+  lg: {
+    type: [String, Number, Object],
+    default: void 0
+  },
+  xl: {
+    type: [String, Number, Object],
+    default: void 0
+  },
+  xxl: {
+    type: [String, Number, Object],
+    default: void 0
+  },
+  prefixCls: String,
+  flex: [String, Number]
+}), oe = ["xs", "sm", "md", "lg", "xl", "xxl"], de = W({
+  compatConfig: {
+    MODE: 3
+  },
+  name: "ACol",
+  inheritAttrs: !1,
+  props: se(),
+  setup(e, t) {
+    let {
+      slots: a,
+      attrs: u
+    } = t;
+    const {
+      gutter: o,
+      supportFlexGap: s,
+      wrap: G
+    } = q(), {
+      prefixCls: y,
+      direction: v
+    } = F("col", e), [x, b] = te(y), S = $(() => {
+      const {
+        span: f,
+        order: p,
+        offset: d,
+        push: m,
+        pull: j
+      } = e, c = y.value;
+      let n = {};
+      return oe.forEach((r) => {
+        let l = {};
+        const i = e[r];
+        typeof i == "number" ? l.span = i : typeof i == "object" && (l = i || {}), n = g(g({}, n), {
+          [`${c}-${r}-${l.span}`]: l.span !== void 0,
+          [`${c}-${r}-order-${l.order}`]: l.order || l.order === 0,
+          [`${c}-${r}-offset-${l.offset}`]: l.offset || l.offset === 0,
+          [`${c}-${r}-push-${l.push}`]: l.push || l.push === 0,
+          [`${c}-${r}-pull-${l.pull}`]: l.pull || l.pull === 0,
+          [`${c}-rtl`]: v.value === "rtl"
+        });
+      }), k(c, {
+        [`${c}-${f}`]: f !== void 0,
+        [`${c}-order-${p}`]: p,
+        [`${c}-offset-${d}`]: d,
+        [`${c}-push-${m}`]: m,
+        [`${c}-pull-${j}`]: j
+      }, n, u.class, b.value);
+    }), h = $(() => {
+      const {
+        flex: f
+      } = e, p = o.value, d = {};
+      if (p && p[0] > 0) {
+        const m = `${p[0] / 2}px`;
+        d.paddingLeft = m, d.paddingRight = m;
+      }
+      if (p && p[1] > 0 && !s.value) {
+        const m = `${p[1] / 2}px`;
+        d.paddingTop = m, d.paddingBottom = m;
+      }
+      return f && (d.flex = re(f), G.value === !1 && !d.minWidth && (d.minWidth = 0)), d;
+    });
+    return () => {
+      var f;
+      return x(B("div", C(C({}, u), {}, {
+        class: S.value,
+        style: [h.value, u.style]
+      }), [(f = a.default) === null || f === void 0 ? void 0 : f.call(a)]));
+    };
+  }
+});
+export {
+  ie as A,
+  de as C
+};

File diff suppressed because it is too large
+ 447 - 0
lib/js/CropperModal.js


+ 73 - 0
lib/js/FormItemContext.js

@@ -0,0 +1,73 @@
+import { computed as c, inject as u, getCurrentInstance as F, onBeforeUnmount as I, provide as r, defineComponent as v, ref as C, watch as x } from "vue";
+import { bz as y, d as g } from "./index2.js";
+const l = Symbol("ContextProps"), m = Symbol("InternalContextProps"), N = function(a) {
+  let t = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : c(() => !0);
+  const e = C(/* @__PURE__ */ new Map()), o = (n, s) => {
+    e.value.set(n, s), e.value = new Map(e.value);
+  }, f = (n) => {
+    e.value.delete(n), e.value = new Map(e.value);
+  }, p = F();
+  x([t, e], () => {
+    if (process.env.NODE_ENV !== "production" && t.value && e.value.size > 1) {
+      g(!1, "Form.Item", `FormItem can only collect one field item, you haved set ${[...e.value.values()].map((s) => `\`${s.name}\``).join(", ")} ${e.value.size} field items.
+        You can set not need to be collected fields into \`a-form-item-rest\``);
+      let n = p;
+      for (; n.parent; )
+        console.warn("at", n.type), n = n.parent;
+    }
+  }), r(l, a), r(m, {
+    addFormItemField: o,
+    removeFormItemField: f
+  });
+}, i = {
+  id: c(() => {
+  }),
+  onFieldBlur: () => {
+  },
+  onFieldChange: () => {
+  },
+  clearValidate: () => {
+  }
+}, d = {
+  addFormItemField: () => {
+  },
+  removeFormItemField: () => {
+  }
+}, S = () => {
+  const a = u(m, d), t = Symbol("FormItemFieldKey"), e = F();
+  return a.addFormItemField(t, e.type), I(() => {
+    a.removeFormItemField(t);
+  }), r(m, d), r(l, i), u(l, i);
+}, _ = v({
+  compatConfig: {
+    MODE: 3
+  },
+  name: "AFormItemRest",
+  setup(a, t) {
+    let {
+      slots: e
+    } = t;
+    return r(m, d), r(l, i), () => {
+      var o;
+      return (o = e.default) === null || o === void 0 ? void 0 : o.call(e);
+    };
+  }
+}), b = y({}), K = v({
+  name: "NoFormStatus",
+  setup(a, t) {
+    let {
+      slots: e
+    } = t;
+    return b.useProvide({}), () => {
+      var o;
+      return (o = e.default) === null || o === void 0 ? void 0 : o.call(e);
+    };
+  }
+});
+export {
+  b as F,
+  K as N,
+  N as a,
+  _ as b,
+  S as u
+};

+ 1235 - 0
lib/js/SCascader.js

@@ -0,0 +1,1235 @@
+import { computed as y, shallowRef as Te, ref as X, watchEffect as ie, provide as We, inject as je, watch as be, createVNode as T, defineComponent as xe, onMounted as He, toRef as pe, toRefs as Be, openBlock as ze, createElementBlock as Xe, unref as Ue } from "vue";
+import { _ as k, w as qe, i as Ge, c as Se, u as Ye, K as Y, a as Z, b as De, d as oe, o as we, e as Je, P as ye, g as Qe, t as Ze, f as et, h as tt, j as nt, k as lt, l as at, m as ot, L as st, R as it, n as rt, p as Ve, q as ct } from "./index2.js";
+import { u as Ie, a as ut, B as dt, b as vt, c as pt, g as ht } from "./index3.js";
+import { u as ke } from "./useMergedState.js";
+import { c as ft, u as mt, a as Ce, g as gt } from "./index4.js";
+import "./index5.js";
+import { g as Ct, a as St } from "./statusUtils.js";
+import { u as yt, F as bt } from "./FormItemContext.js";
+const Pe = "__RC_CASCADER_SPLIT__", $e = "SHOW_PARENT", Ne = "SHOW_CHILD";
+function ee(e) {
+  return e.join(Pe);
+}
+function se(e) {
+  return e.map(ee);
+}
+function xt(e) {
+  return e.split(Pe);
+}
+function wt(e) {
+  const {
+    label: a,
+    value: t,
+    children: n
+  } = e || {}, l = t || "value";
+  return {
+    label: a || "label",
+    value: l,
+    key: l,
+    children: n || "children"
+  };
+}
+function ce(e, a) {
+  var t, n;
+  return (t = e.isLeaf) !== null && t !== void 0 ? t : !(!((n = e[a.children]) === null || n === void 0) && n.length);
+}
+function It(e) {
+  const a = e.parentElement;
+  if (!a)
+    return;
+  const t = e.offsetTop - a.offsetTop;
+  t - a.scrollTop < 0 ? a.scrollTo({
+    top: t
+  }) : t + e.offsetHeight - a.scrollTop > a.offsetHeight && a.scrollTo({
+    top: t + e.offsetHeight - a.offsetHeight
+  });
+}
+const Pt = (e, a) => y(() => ft(e.value, {
+  fieldNames: a.value,
+  initWrapper: (n) => k(k({}, n), {
+    pathKeyEntities: {}
+  }),
+  processEntity: (n, l) => {
+    const i = n.nodes.map((r) => r[a.value.value]).join(Pe);
+    l.pathKeyEntities[i] = n, n.key = i;
+  }
+}).pathKeyEntities);
+function Ot(e) {
+  const a = Te(!1), t = X({});
+  return ie(() => {
+    if (!e.value) {
+      a.value = !1, t.value = {};
+      return;
+    }
+    let n = {
+      matchInputWidth: !0,
+      limit: 50
+    };
+    e.value && typeof e.value == "object" && (n = k(k({}, n), e.value)), n.limit <= 0 && (delete n.limit, process.env.NODE_ENV !== "production" && qe(!1, "'limit' of showSearch should be positive number or false.")), a.value = !0, t.value = n;
+  }), {
+    showSearch: a,
+    searchConfig: t
+  };
+}
+const ue = "__rc_cascader_search_mark__", Vt = (e, a, t) => {
+  let {
+    label: n
+  } = t;
+  return a.some((l) => String(l[n]).toLowerCase().includes(e.toLowerCase()));
+}, kt = (e) => {
+  let {
+    path: a,
+    fieldNames: t
+  } = e;
+  return a.map((n) => n[t.label]).join(" / ");
+}, _t = (e, a, t, n, l, i) => y(() => {
+  const {
+    filter: r = Vt,
+    render: d = kt,
+    limit: v = 50,
+    sort: c
+  } = l.value, o = [];
+  if (!e.value)
+    return [];
+  function C(P, b) {
+    P.forEach((D) => {
+      if (!c && v > 0 && o.length >= v)
+        return;
+      const m = [...b, D], x = D[t.value.children];
+      // If is leaf option
+      (!x || x.length === 0 || // If is changeOnSelect
+      i.value) && r(e.value, m, {
+        label: t.value.label
+      }) && o.push(k(k({}, D), {
+        [t.value.label]: d({
+          inputValue: e.value,
+          path: m,
+          prefixCls: n.value,
+          fieldNames: t.value
+        }),
+        [ue]: m
+      })), x && C(D[t.value.children], m);
+    });
+  }
+  return C(a.value, []), c && o.sort((P, b) => c(P[ue], b[ue], e.value, t.value)), v > 0 ? o.slice(0, v) : o;
+});
+function _e(e, a, t) {
+  const n = new Set(e);
+  return e.filter((l) => {
+    const i = a[l], r = i ? i.parent : null, d = i ? i.children : null;
+    return t === Ne ? !(d && d.some((v) => v.key && n.has(v.key))) : !(r && !r.node.disabled && n.has(r.key));
+  });
+}
+function de(e, a, t) {
+  let n = arguments.length > 3 && arguments[3] !== void 0 ? arguments[3] : !1;
+  var l;
+  let i = a;
+  const r = [];
+  for (let d = 0; d < e.length; d += 1) {
+    const v = e[d], c = i == null ? void 0 : i.findIndex((C) => {
+      const P = C[t.value];
+      return n ? String(P) === String(v) : P === v;
+    }), o = c !== -1 ? i == null ? void 0 : i[c] : null;
+    r.push({
+      value: (l = o == null ? void 0 : o[t.value]) !== null && l !== void 0 ? l : v,
+      index: c,
+      option: o
+    }), i = o == null ? void 0 : o[t.children];
+  }
+  return r;
+}
+const At = (e, a, t) => y(() => {
+  const n = [], l = [];
+  return t.value.forEach((i) => {
+    de(i, e.value, a.value).every((d) => d.option) ? l.push(i) : n.push(i);
+  }), [l, n];
+}), Et = (e, a, t, n, l) => y(() => {
+  const i = l.value || // Default displayRender
+  ((r) => {
+    let {
+      labels: d
+    } = r;
+    const v = n.value ? d.slice(-1) : d, c = " / ";
+    return v.every((o) => ["string", "number"].includes(typeof o)) ? v.join(c) : v.reduce((o, C, P) => {
+      const b = Ge(C) ? Se(C, {
+        key: P
+      }) : C;
+      return P === 0 ? [b] : [...o, c, b];
+    }, []);
+  });
+  return e.value.map((r) => {
+    const d = de(r, a.value, t.value), v = i({
+      labels: d.map((o) => {
+        let {
+          option: C,
+          value: P
+        } = o;
+        var b;
+        return (b = C == null ? void 0 : C[t.value.label]) !== null && b !== void 0 ? b : P;
+      }),
+      selectedOptions: d.map((o) => {
+        let {
+          option: C
+        } = o;
+        return C;
+      })
+    }), c = ee(r);
+    return {
+      label: v,
+      value: c,
+      key: c,
+      valueCells: r
+    };
+  });
+}), Re = Symbol("CascaderContextKey"), Tt = (e) => {
+  We(Re, e);
+}, he = () => je(Re), Dt = () => {
+  const e = Ie(), {
+    values: a
+  } = he(), [t, n] = Ye([]);
+  return be(() => e.open, () => {
+    if (e.open && !e.multiple) {
+      const l = a.value[0];
+      n(l || []);
+    }
+  }, {
+    immediate: !0
+  }), [t, n];
+}, $t = (e, a, t, n, l, i) => {
+  const r = Ie(), d = y(() => r.direction === "rtl"), [v, c, o] = [X([]), X(), X([])];
+  ie(() => {
+    let m = -1, x = a.value;
+    const p = [], w = [], E = n.value.length;
+    for (let _ = 0; _ < E && x; _ += 1) {
+      const N = x.findIndex(($) => $[t.value.value] === n.value[_]);
+      if (N === -1)
+        break;
+      m = N, p.push(m), w.push(n.value[_]), x = x[m][t.value.children];
+    }
+    let O = a.value;
+    for (let _ = 0; _ < p.length - 1; _ += 1)
+      O = O[p[_]][t.value.children];
+    [v.value, c.value, o.value] = [w, m, O];
+  });
+  const C = (m) => {
+    l(m);
+  }, P = (m) => {
+    const x = o.value.length;
+    let p = c.value;
+    p === -1 && m < 0 && (p = x);
+    for (let w = 0; w < x; w += 1) {
+      p = (p + m + x) % x;
+      const E = o.value[p];
+      if (E && !E.disabled) {
+        const O = E[t.value.value], _ = v.value.slice(0, -1).concat(O);
+        C(_);
+        return;
+      }
+    }
+  }, b = () => {
+    if (v.value.length > 1) {
+      const m = v.value.slice(0, -1);
+      C(m);
+    } else
+      r.toggleOpen(!1);
+  }, D = () => {
+    var m;
+    const p = (((m = o.value[c.value]) === null || m === void 0 ? void 0 : m[t.value.children]) || []).find((w) => !w.disabled);
+    if (p) {
+      const w = [...v.value, p[t.value.value]];
+      C(w);
+    }
+  };
+  e.expose({
+    // scrollTo: treeRef.current?.scrollTo,
+    onKeydown: (m) => {
+      const {
+        which: x
+      } = m;
+      switch (x) {
+        case Y.UP:
+        case Y.DOWN: {
+          let p = 0;
+          x === Y.UP ? p = -1 : x === Y.DOWN && (p = 1), p !== 0 && P(p);
+          break;
+        }
+        case Y.LEFT: {
+          d.value ? D() : b();
+          break;
+        }
+        case Y.RIGHT: {
+          d.value ? b() : D();
+          break;
+        }
+        case Y.BACKSPACE: {
+          r.searchValue || b();
+          break;
+        }
+        case Y.ENTER: {
+          if (v.value.length) {
+            const p = o.value[c.value], w = (p == null ? void 0 : p[ue]) || [];
+            w.length ? i(w.map((E) => E[t.value.value]), w[w.length - 1]) : i(v.value, p);
+          }
+          break;
+        }
+        case Y.ESC:
+          r.toggleOpen(!1), open && m.stopPropagation();
+      }
+    },
+    onKeyup: () => {
+    }
+  });
+};
+function fe(e) {
+  let {
+    prefixCls: a,
+    checked: t,
+    halfChecked: n,
+    disabled: l,
+    onClick: i
+  } = e;
+  const {
+    customSlots: r,
+    checkable: d
+  } = he(), v = d.value !== !1 ? r.value.checkable : d.value, c = typeof v == "function" ? v() : typeof v == "boolean" ? null : v;
+  return T("span", {
+    class: {
+      [a]: !0,
+      [`${a}-checked`]: t,
+      [`${a}-indeterminate`]: !t && n,
+      [`${a}-disabled`]: l
+    },
+    onClick: i
+  }, [c]);
+}
+fe.props = ["prefixCls", "checked", "halfChecked", "disabled", "onClick"];
+fe.displayName = "Checkbox";
+fe.inheritAttrs = !1;
+const Le = "__cascader_fix_label__";
+function me(e) {
+  let {
+    prefixCls: a,
+    multiple: t,
+    options: n,
+    activeValue: l,
+    prevValuePath: i,
+    onToggleOpen: r,
+    onSelect: d,
+    onActive: v,
+    checkedSet: c,
+    halfCheckedSet: o,
+    loadingKeys: C,
+    isSelectable: P
+  } = e;
+  var b, D, m, x, p, w;
+  const E = `${a}-menu`, O = `${a}-menu-item`, {
+    fieldNames: _,
+    changeOnSelect: N,
+    expandTrigger: $,
+    expandIcon: U,
+    loadingIcon: J,
+    dropdownMenuColumnStyle: q,
+    customSlots: M
+  } = he(), F = (b = U.value) !== null && b !== void 0 ? b : (m = (D = M.value).expandIcon) === null || m === void 0 ? void 0 : m.call(D), W = (x = J.value) !== null && x !== void 0 ? x : (w = (p = M.value).loadingIcon) === null || w === void 0 ? void 0 : w.call(p), te = $.value === "hover";
+  return T("ul", {
+    class: E,
+    role: "menu"
+  }, [n.map((R) => {
+    var h;
+    const {
+      disabled: I
+    } = R, s = R[ue], S = (h = R[Le]) !== null && h !== void 0 ? h : R[_.value.label], g = R[_.value.value], V = ce(R, _.value), K = s ? s.map((u) => u[_.value.value]) : [...i, g], j = ee(K), H = C.includes(j), Q = c.has(j), ne = o.has(j), le = () => {
+      !I && (!te || !V) && v(K);
+    }, B = () => {
+      P(R) && d(K, V);
+    };
+    let G;
+    return typeof R.title == "string" ? G = R.title : typeof S == "string" && (G = S), T("li", {
+      key: j,
+      class: [O, {
+        [`${O}-expand`]: !V,
+        [`${O}-active`]: l === g,
+        [`${O}-disabled`]: I,
+        [`${O}-loading`]: H
+      }],
+      style: q.value,
+      role: "menuitemcheckbox",
+      title: G,
+      "aria-checked": Q,
+      "data-path-key": j,
+      onClick: () => {
+        le(), (!t || V) && B();
+      },
+      onDblclick: () => {
+        N.value && r(!1);
+      },
+      onMouseenter: () => {
+        te && le();
+      },
+      onMousedown: (u) => {
+        u.preventDefault();
+      }
+    }, [t && T(fe, {
+      prefixCls: `${a}-checkbox`,
+      checked: Q,
+      halfChecked: ne,
+      disabled: I,
+      onClick: (u) => {
+        u.stopPropagation(), B();
+      }
+    }, null), T("div", {
+      class: `${O}-content`
+    }, [S]), !H && F && !V && T("div", {
+      class: `${O}-expand-icon`
+    }, [Se(F)]), H && W && T("div", {
+      class: `${O}-loading-icon`
+    }, [Se(W)])]);
+  })]);
+}
+me.props = ["prefixCls", "multiple", "options", "activeValue", "prevValuePath", "onToggleOpen", "onSelect", "onActive", "checkedSet", "halfCheckedSet", "loadingKeys", "isSelectable"];
+me.displayName = "Column";
+me.inheritAttrs = !1;
+const Nt = xe({
+  compatConfig: {
+    MODE: 3
+  },
+  name: "OptionList",
+  inheritAttrs: !1,
+  setup(e, a) {
+    const {
+      attrs: t,
+      slots: n
+    } = a, l = Ie(), i = X(), r = y(() => l.direction === "rtl"), {
+      options: d,
+      values: v,
+      halfValues: c,
+      fieldNames: o,
+      changeOnSelect: C,
+      onSelect: P,
+      searchOptions: b,
+      dropdownPrefixCls: D,
+      loadData: m,
+      expandTrigger: x,
+      customSlots: p
+    } = he(), w = y(() => D.value || l.prefixCls), E = Te([]), O = (h) => {
+      if (!m.value || l.searchValue)
+        return;
+      const s = de(h, d.value, o.value).map((g) => {
+        let {
+          option: V
+        } = g;
+        return V;
+      }), S = s[s.length - 1];
+      if (S && !ce(S, o.value)) {
+        const g = ee(h);
+        E.value = [...E.value, g], m.value(s);
+      }
+    };
+    ie(() => {
+      E.value.length && E.value.forEach((h) => {
+        const I = xt(h), s = de(I, d.value, o.value, !0).map((g) => {
+          let {
+            option: V
+          } = g;
+          return V;
+        }), S = s[s.length - 1];
+        (!S || S[o.value.children] || ce(S, o.value)) && (E.value = E.value.filter((g) => g !== h));
+      });
+    });
+    const _ = y(() => new Set(se(v.value))), N = y(() => new Set(se(c.value))), [$, U] = Dt(), J = (h) => {
+      U(h), O(h);
+    }, q = (h) => {
+      const {
+        disabled: I
+      } = h, s = ce(h, o.value);
+      return !I && (s || C.value || l.multiple);
+    }, M = function(h, I) {
+      let s = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : !1;
+      P(h), !l.multiple && (I || C.value && (x.value === "hover" || s)) && l.toggleOpen(!1);
+    }, F = y(() => l.searchValue ? b.value : d.value), W = y(() => {
+      const h = [{
+        options: F.value
+      }];
+      let I = F.value;
+      for (let s = 0; s < $.value.length; s += 1) {
+        const S = $.value[s], g = I.find((K) => K[o.value.value] === S), V = g == null ? void 0 : g[o.value.children];
+        if (!(V != null && V.length))
+          break;
+        I = V, h.push({
+          options: V
+        });
+      }
+      return h;
+    });
+    $t(a, F, o, $, J, (h, I) => {
+      q(I) && M(h, ce(I, o.value), !0);
+    });
+    const R = (h) => {
+      h.preventDefault();
+    };
+    return He(() => {
+      be($, (h) => {
+        var I;
+        for (let s = 0; s < h.length; s += 1) {
+          const S = h.slice(0, s + 1), g = ee(S), V = (I = i.value) === null || I === void 0 ? void 0 : I.querySelector(`li[data-path-key="${g.replace(/\\{0,2}"/g, '\\"')}"]`);
+          V && It(V);
+        }
+      }, {
+        flush: "post",
+        immediate: !0
+      });
+    }), () => {
+      var h, I, s, S, g;
+      const {
+        notFoundContent: V = ((h = n.notFoundContent) === null || h === void 0 ? void 0 : h.call(n)) || ((s = (I = p.value).notFoundContent) === null || s === void 0 ? void 0 : s.call(I)),
+        multiple: K,
+        toggleOpen: j
+      } = l, H = !(!((g = (S = W.value[0]) === null || S === void 0 ? void 0 : S.options) === null || g === void 0) && g.length), Q = [{
+        [o.value.value]: "__EMPTY__",
+        [Le]: V,
+        disabled: !0
+      }], ne = k(k({}, t), {
+        multiple: !H && K,
+        onSelect: M,
+        onActive: J,
+        onToggleOpen: j,
+        checkedSet: _.value,
+        halfCheckedSet: N.value,
+        loadingKeys: E.value,
+        isSelectable: q
+      }), B = (H ? [{
+        options: Q
+      }] : W.value).map((G, u) => {
+        const f = $.value.slice(0, u), A = $.value[u];
+        return T(me, Z(Z({
+          key: u
+        }, ne), {}, {
+          prefixCls: w.value,
+          options: G.options,
+          prevValuePath: f,
+          activeValue: A
+        }), null);
+      });
+      return T("div", {
+        class: [`${w.value}-menus`, {
+          [`${w.value}-menu-empty`]: H,
+          [`${w.value}-rtl`]: r.value
+        }],
+        onMousedown: R,
+        ref: i
+      }, [B]);
+    };
+  }
+});
+function Rt() {
+  return k(k({}, we(vt(), ["tokenSeparators", "mode", "showSearch"])), {
+    // MISC
+    id: String,
+    prefixCls: String,
+    fieldNames: Je(),
+    children: Array,
+    // Value
+    value: {
+      type: [String, Number, Array]
+    },
+    defaultValue: {
+      type: [String, Number, Array]
+    },
+    changeOnSelect: {
+      type: Boolean,
+      default: void 0
+    },
+    displayRender: Function,
+    checkable: {
+      type: Boolean,
+      default: void 0
+    },
+    showCheckedStrategy: {
+      type: String,
+      default: $e
+    },
+    // Search
+    showSearch: {
+      type: [Boolean, Object],
+      default: void 0
+    },
+    searchValue: String,
+    onSearch: Function,
+    // Trigger
+    expandTrigger: String,
+    // Options
+    options: Array,
+    /** @private Internal usage. Do not use in your production. */
+    dropdownPrefixCls: String,
+    loadData: Function,
+    // Open
+    /** @deprecated Use `open` instead */
+    popupVisible: {
+      type: Boolean,
+      default: void 0
+    },
+    dropdownClassName: String,
+    dropdownMenuColumnStyle: {
+      type: Object,
+      default: void 0
+    },
+    /** @deprecated Use `dropdownStyle` instead */
+    popupStyle: {
+      type: Object,
+      default: void 0
+    },
+    dropdownStyle: {
+      type: Object,
+      default: void 0
+    },
+    /** @deprecated Use `placement` instead */
+    popupPlacement: String,
+    placement: String,
+    /** @deprecated Use `onDropdownVisibleChange` instead */
+    onPopupVisibleChange: Function,
+    onDropdownVisibleChange: Function,
+    // Icon
+    expandIcon: ye.any,
+    loadingIcon: ye.any
+  });
+}
+function Ke() {
+  return k(k({}, Rt()), {
+    onChange: Function,
+    customSlots: Object
+  });
+}
+function Lt(e) {
+  return Array.isArray(e) && Array.isArray(e[0]);
+}
+function Ae(e) {
+  return e ? Lt(e) ? e : (e.length === 0 ? [] : [e]).map((a) => Array.isArray(a) ? a : [a]) : [];
+}
+const Kt = xe({
+  compatConfig: {
+    MODE: 3
+  },
+  name: "Cascader",
+  inheritAttrs: !1,
+  props: De(Ke(), {}),
+  setup(e, a) {
+    let {
+      attrs: t,
+      expose: n,
+      slots: l
+    } = a;
+    const i = ut(pe(e, "id")), r = y(() => !!e.checkable), [d, v] = ke(e.defaultValue, {
+      value: y(() => e.value),
+      postState: Ae
+    }), c = y(() => wt(e.fieldNames)), o = y(() => e.options || []), C = Pt(o, c), P = (u) => {
+      const f = C.value;
+      return u.map((A) => {
+        const {
+          nodes: L
+        } = f[A];
+        return L.map((z) => z[c.value.value]);
+      });
+    }, [b, D] = ke("", {
+      value: y(() => e.searchValue),
+      postState: (u) => u || ""
+    }), m = (u, f) => {
+      D(u), f.source !== "blur" && e.onSearch && e.onSearch(u);
+    }, {
+      showSearch: x,
+      searchConfig: p
+    } = Ot(pe(e, "showSearch")), w = _t(b, o, c, y(() => e.dropdownPrefixCls || e.prefixCls), p, pe(e, "changeOnSelect")), E = At(o, c, d), [O, _, N] = [X([]), X([]), X([])], {
+      maxLevel: $,
+      levelEntities: U
+    } = mt(C);
+    ie(() => {
+      const [u, f] = E.value;
+      if (!r.value || !d.value.length) {
+        [O.value, _.value, N.value] = [u, [], f];
+        return;
+      }
+      const A = se(u), L = C.value, {
+        checkedKeys: z,
+        halfCheckedKeys: re
+      } = Ce(A, !0, L, $.value, U.value);
+      [O.value, _.value, N.value] = [P(z), P(re), f];
+    });
+    const J = y(() => {
+      const u = se(O.value), f = _e(u, C.value, e.showCheckedStrategy);
+      return [...N.value, ...P(f)];
+    }), q = Et(J, o, c, r, pe(e, "displayRender")), M = (u) => {
+      if (v(u), e.onChange) {
+        const f = Ae(u), A = f.map((re) => de(re, o.value, c.value).map((ve) => ve.option)), L = r.value ? f : f[0], z = r.value ? A : A[0];
+        e.onChange(L, z);
+      }
+    }, F = (u) => {
+      if (D(""), !r.value)
+        M(u);
+      else {
+        const f = ee(u), A = se(O.value), L = se(_.value), z = A.includes(f), re = N.value.some((ae) => ee(ae) === f);
+        let ve = O.value, Oe = N.value;
+        if (re && !z)
+          Oe = N.value.filter((ae) => ee(ae) !== f);
+        else {
+          const ae = z ? A.filter((Fe) => Fe !== f) : [...A, f];
+          let ge;
+          z ? {
+            checkedKeys: ge
+          } = Ce(ae, {
+            checked: !1,
+            halfCheckedKeys: L
+          }, C.value, $.value, U.value) : {
+            checkedKeys: ge
+          } = Ce(ae, !0, C.value, $.value, U.value);
+          const Me = _e(ge, C.value, e.showCheckedStrategy);
+          ve = P(Me);
+        }
+        M([...Oe, ...ve]);
+      }
+    }, W = (u, f) => {
+      if (f.type === "clear") {
+        M([]);
+        return;
+      }
+      const {
+        valueCells: A
+      } = f.values[0];
+      F(A);
+    };
+    process.env.NODE_ENV !== "production" && ie(() => {
+      oe(!e.onPopupVisibleChange, "Cascader", "`popupVisibleChange` is deprecated. Please use `dropdownVisibleChange` instead."), oe(e.popupVisible === void 0, "Cascader", "`popupVisible` is deprecated. Please use `open` instead."), oe(e.popupPlacement === void 0, "Cascader", "`popupPlacement` is deprecated. Please use `placement` instead."), oe(e.popupStyle === void 0, "Cascader", "`popupStyle` is deprecated. Please use `dropdownStyle` instead.");
+    });
+    const te = y(() => e.open !== void 0 ? e.open : e.popupVisible), R = y(() => e.dropdownStyle || e.popupStyle || {}), h = y(() => e.placement || e.popupPlacement), I = (u) => {
+      var f, A;
+      (f = e.onDropdownVisibleChange) === null || f === void 0 || f.call(e, u), (A = e.onPopupVisibleChange) === null || A === void 0 || A.call(e, u);
+    }, {
+      changeOnSelect: s,
+      checkable: S,
+      dropdownPrefixCls: g,
+      loadData: V,
+      expandTrigger: K,
+      expandIcon: j,
+      loadingIcon: H,
+      dropdownMenuColumnStyle: Q,
+      customSlots: ne,
+      dropdownClassName: le
+    } = Be(e);
+    Tt({
+      options: o,
+      fieldNames: c,
+      values: O,
+      halfValues: _,
+      changeOnSelect: s,
+      onSelect: F,
+      checkable: S,
+      searchOptions: w,
+      dropdownPrefixCls: g,
+      loadData: V,
+      expandTrigger: K,
+      expandIcon: j,
+      loadingIcon: H,
+      dropdownMenuColumnStyle: Q,
+      customSlots: ne
+    });
+    const B = X();
+    n({
+      focus() {
+        var u;
+        (u = B.value) === null || u === void 0 || u.focus();
+      },
+      blur() {
+        var u;
+        (u = B.value) === null || u === void 0 || u.blur();
+      },
+      scrollTo(u) {
+        var f;
+        (f = B.value) === null || f === void 0 || f.scrollTo(u);
+      }
+    });
+    const G = y(() => we(e, [
+      "id",
+      "prefixCls",
+      "fieldNames",
+      // Value
+      "defaultValue",
+      "value",
+      "changeOnSelect",
+      "onChange",
+      "displayRender",
+      "checkable",
+      // Search
+      "searchValue",
+      "onSearch",
+      "showSearch",
+      // Trigger
+      "expandTrigger",
+      // Options
+      "options",
+      "dropdownPrefixCls",
+      "loadData",
+      // Open
+      "popupVisible",
+      "open",
+      "dropdownClassName",
+      "dropdownMenuColumnStyle",
+      "popupPlacement",
+      "placement",
+      "onDropdownVisibleChange",
+      "onPopupVisibleChange",
+      // Icon
+      "expandIcon",
+      "loadingIcon",
+      "customSlots",
+      "showCheckedStrategy",
+      // Children
+      "children"
+    ]));
+    return () => {
+      const u = !(b.value ? w.value : o.value).length, {
+        dropdownMatchSelectWidth: f = !1
+      } = e, A = (
+        // Search to match width
+        b.value && p.value.matchInputWidth || // Empty keep the width
+        u ? {} : {
+          minWidth: "auto"
+        }
+      );
+      return T(dt, Z(Z(Z({}, G.value), t), {}, {
+        ref: B,
+        id: i,
+        prefixCls: e.prefixCls,
+        dropdownMatchSelectWidth: f,
+        dropdownStyle: k(k({}, R.value), A),
+        displayValues: q.value,
+        onDisplayValuesChange: W,
+        mode: r.value ? "multiple" : void 0,
+        searchValue: b.value,
+        onSearch: m,
+        showSearch: x.value,
+        OptionList: Nt,
+        emptyOptions: u,
+        open: te.value,
+        dropdownClassName: le.value,
+        placement: h.value,
+        onDropdownVisibleChange: I,
+        getRawInputElement: () => {
+          var L;
+          return (L = l.default) === null || L === void 0 ? void 0 : L.call(l);
+        }
+      }), l);
+    };
+  }
+}), Mt = (e) => {
+  const {
+    prefixCls: a,
+    componentCls: t,
+    antCls: n
+  } = e, l = `${t}-menu-item`, i = `
+    &${l}-expand ${l}-expand-icon,
+    ${l}-loading-icon
+  `, r = Math.round((e.controlHeight - e.fontSize * e.lineHeight) / 2);
+  return [
+    // =====================================================
+    // ==                     Control                     ==
+    // =====================================================
+    {
+      [t]: {
+        width: e.controlWidth
+      }
+    },
+    // =====================================================
+    // ==                      Popup                      ==
+    // =====================================================
+    {
+      [`${t}-dropdown`]: [
+        // ==================== Checkbox ====================
+        gt(`${a}-checkbox`, e),
+        {
+          [`&${n}-select-dropdown`]: {
+            padding: 0
+          }
+        },
+        {
+          [t]: {
+            // ================== Checkbox ==================
+            "&-checkbox": {
+              top: 0,
+              marginInlineEnd: e.paddingXS
+            },
+            // ==================== Menu ====================
+            // >>> Menus
+            "&-menus": {
+              display: "flex",
+              flexWrap: "nowrap",
+              alignItems: "flex-start",
+              [`&${t}-menu-empty`]: {
+                [`${t}-menu`]: {
+                  width: "100%",
+                  height: "auto",
+                  [l]: {
+                    color: e.colorTextDisabled
+                  }
+                }
+              }
+            },
+            // >>> Menu
+            "&-menu": {
+              flexGrow: 1,
+              minWidth: e.controlItemWidth,
+              height: e.dropdownHeight,
+              margin: 0,
+              padding: e.paddingXXS,
+              overflow: "auto",
+              verticalAlign: "top",
+              listStyle: "none",
+              "-ms-overflow-style": "-ms-autohiding-scrollbar",
+              "&:not(:last-child)": {
+                borderInlineEnd: `${e.lineWidth}px ${e.lineType} ${e.colorSplit}`
+              },
+              "&-item": k(k({}, Ze), {
+                display: "flex",
+                flexWrap: "nowrap",
+                alignItems: "center",
+                padding: `${r}px ${e.paddingSM}px`,
+                lineHeight: e.lineHeight,
+                cursor: "pointer",
+                transition: `all ${e.motionDurationMid}`,
+                borderRadius: e.borderRadiusSM,
+                "&:hover": {
+                  background: e.controlItemBgHover
+                },
+                "&-disabled": {
+                  color: e.colorTextDisabled,
+                  cursor: "not-allowed",
+                  "&:hover": {
+                    background: "transparent"
+                  },
+                  [i]: {
+                    color: e.colorTextDisabled
+                  }
+                },
+                [`&-active:not(${l}-disabled)`]: {
+                  "&, &:hover": {
+                    fontWeight: e.fontWeightStrong,
+                    backgroundColor: e.controlItemBgActive
+                  }
+                },
+                "&-content": {
+                  flex: "auto"
+                },
+                [i]: {
+                  marginInlineStart: e.paddingXXS,
+                  color: e.colorTextDescription,
+                  fontSize: e.fontSizeIcon
+                },
+                "&-keyword": {
+                  color: e.colorHighlight
+                }
+              })
+            }
+          }
+        }
+      ]
+    },
+    // =====================================================
+    // ==                       RTL                       ==
+    // =====================================================
+    {
+      [`${t}-dropdown-rtl`]: {
+        direction: "rtl"
+      }
+    },
+    // =====================================================
+    // ==             Space Compact                       ==
+    // =====================================================
+    et(e)
+  ];
+}, Ft = Qe("Cascader", (e) => [Mt(e)], {
+  controlWidth: 184,
+  controlItemWidth: 111,
+  dropdownHeight: 180
+});
+var Wt = function(e, a) {
+  var t = {};
+  for (var n in e) Object.prototype.hasOwnProperty.call(e, n) && a.indexOf(n) < 0 && (t[n] = e[n]);
+  if (e != null && typeof Object.getOwnPropertySymbols == "function") for (var l = 0, n = Object.getOwnPropertySymbols(e); l < n.length; l++)
+    a.indexOf(n[l]) < 0 && Object.prototype.propertyIsEnumerable.call(e, n[l]) && (t[n[l]] = e[n[l]]);
+  return t;
+};
+function jt(e, a, t) {
+  const n = e.toLowerCase().split(a).reduce((r, d, v) => v === 0 ? [d] : [...r, a, d], []), l = [];
+  let i = 0;
+  return n.forEach((r, d) => {
+    const v = i + r.length;
+    let c = e.slice(i, v);
+    i = v, d % 2 === 1 && (c = T("span", {
+      class: `${t}-menu-item-keyword`,
+      key: "seperator"
+    }, [c])), l.push(c);
+  }), l;
+}
+const Ht = (e) => {
+  let {
+    inputValue: a,
+    path: t,
+    prefixCls: n,
+    fieldNames: l
+  } = e;
+  const i = [], r = a.toLowerCase();
+  return t.forEach((d, v) => {
+    v !== 0 && i.push(" / ");
+    let c = d[l.label];
+    const o = typeof c;
+    (o === "string" || o === "number") && (c = jt(String(c), r, n)), i.push(c);
+  }), i;
+};
+function Bt() {
+  return k(k({}, we(Ke(), ["customSlots", "checkable", "options"])), {
+    multiple: {
+      type: Boolean,
+      default: void 0
+    },
+    size: String,
+    bordered: {
+      type: Boolean,
+      default: void 0
+    },
+    placement: {
+      type: String
+    },
+    suffixIcon: ye.any,
+    status: String,
+    options: Array,
+    popupClassName: String,
+    /** @deprecated Please use `popupClassName` instead */
+    dropdownClassName: String,
+    "onUpdate:value": Function
+  });
+}
+const zt = xe({
+  compatConfig: {
+    MODE: 3
+  },
+  name: "ACascader",
+  inheritAttrs: !1,
+  props: De(Bt(), {
+    bordered: !0,
+    choiceTransitionName: "",
+    allowClear: !0
+  }),
+  setup(e, a) {
+    let {
+      attrs: t,
+      expose: n,
+      slots: l,
+      emit: i
+    } = a;
+    process.env.NODE_ENV !== "production" && oe(!e.dropdownClassName, "Cascader", "`dropdownClassName` is deprecated. Please use `popupClassName` instead.");
+    const r = yt(), d = bt.useInject(), v = y(() => Ct(d.status, e.status)), {
+      prefixCls: c,
+      rootPrefixCls: o,
+      getPrefixCls: C,
+      direction: P,
+      getPopupContainer: b,
+      renderEmpty: D,
+      size: m,
+      disabled: x
+    } = nt("cascader", e), p = y(() => C("select", e.prefixCls)), {
+      compactSize: w,
+      compactItemClassnames: E
+    } = lt(p, P), O = y(() => w.value || m.value), _ = at(), N = y(() => {
+      var s;
+      return (s = x.value) !== null && s !== void 0 ? s : _.value;
+    }), [$, U] = pt(p), [J] = Ft(c), q = y(() => P.value === "rtl");
+    process.env.NODE_ENV !== "production" && ie(() => {
+      oe(!e.multiple || !e.displayRender || !l.displayRender, "Cascader", "`displayRender` not work on `multiple`. Please use `tagRender` instead.");
+    });
+    const M = y(() => {
+      if (!e.showSearch)
+        return e.showSearch;
+      let s = {
+        render: Ht
+      };
+      return typeof e.showSearch == "object" && (s = k(k({}, s), e.showSearch)), s;
+    }), F = y(() => ot(e.popupClassName || e.dropdownClassName, `${c.value}-dropdown`, {
+      [`${c.value}-dropdown-rtl`]: q.value
+    }, U.value)), W = X();
+    n({
+      focus() {
+        var s;
+        (s = W.value) === null || s === void 0 || s.focus();
+      },
+      blur() {
+        var s;
+        (s = W.value) === null || s === void 0 || s.blur();
+      }
+    });
+    const te = function() {
+      for (var s = arguments.length, S = new Array(s), g = 0; g < s; g++)
+        S[g] = arguments[g];
+      i("update:value", S[0]), i("change", ...S), r.onFieldChange();
+    }, R = function() {
+      for (var s = arguments.length, S = new Array(s), g = 0; g < s; g++)
+        S[g] = arguments[g];
+      i("blur", ...S), r.onFieldBlur();
+    }, h = y(() => e.showArrow !== void 0 ? e.showArrow : e.loading || !e.multiple), I = y(() => e.placement !== void 0 ? e.placement : P.value === "rtl" ? "bottomRight" : "bottomLeft");
+    return () => {
+      var s, S;
+      const {
+        notFoundContent: g = (s = l.notFoundContent) === null || s === void 0 ? void 0 : s.call(l),
+        expandIcon: V = (S = l.expandIcon) === null || S === void 0 ? void 0 : S.call(l),
+        multiple: K,
+        bordered: j,
+        allowClear: H,
+        choiceTransitionName: Q,
+        transitionName: ne,
+        id: le = r.id.value
+      } = e, B = Wt(e, ["notFoundContent", "expandIcon", "multiple", "bordered", "allowClear", "choiceTransitionName", "transitionName", "id"]), G = g || D("Cascader");
+      let u = V;
+      V || (u = q.value ? T(st, null, null) : T(it, null, null));
+      const f = T("span", {
+        class: `${p.value}-menu-item-loading-icon`
+      }, [T(rt, {
+        spin: !0
+      }, null)]), {
+        suffixIcon: A,
+        removeIcon: L,
+        clearIcon: z
+      } = ht(k(k({}, e), {
+        hasFeedback: d.hasFeedback,
+        feedbackIcon: d.feedbackIcon,
+        multiple: K,
+        prefixCls: p.value,
+        showArrow: h.value
+      }), l);
+      return J($(T(Kt, Z(Z(Z({}, B), t), {}, {
+        id: le,
+        prefixCls: p.value,
+        class: [c.value, {
+          [`${p.value}-lg`]: O.value === "large",
+          [`${p.value}-sm`]: O.value === "small",
+          [`${p.value}-rtl`]: q.value,
+          [`${p.value}-borderless`]: !j,
+          [`${p.value}-in-form-item`]: d.isFormItemInput
+        }, St(p.value, v.value, d.hasFeedback), E.value, t.class, U.value],
+        disabled: N.value,
+        direction: P.value,
+        placement: I.value,
+        notFoundContent: G,
+        allowClear: H,
+        showSearch: M.value,
+        expandIcon: u,
+        inputIcon: A,
+        removeIcon: L,
+        clearIcon: z,
+        loadingIcon: f,
+        checkable: !!K,
+        dropdownClassName: F.value,
+        dropdownPrefixCls: c.value,
+        choiceTransitionName: Ve(o.value, "", Q),
+        transitionName: Ve(o.value, ct(I.value), ne),
+        getPopupContainer: b == null ? void 0 : b.value,
+        customSlots: k(k({}, l), {
+          checkable: () => T("span", {
+            class: `${c.value}-checkbox-inner`
+          }, null)
+        }),
+        tagRender: e.tagRender || l.tagRender,
+        displayRender: e.displayRender || l.displayRender,
+        maxTagPlaceholder: e.maxTagPlaceholder || l.maxTagPlaceholder,
+        showArrow: d.hasFeedback || e.showArrow,
+        onChange: te,
+        onBlur: R,
+        ref: W
+      }), l)));
+    };
+  }
+}), Ee = tt(k(zt, {
+  SHOW_CHILD: Ne,
+  SHOW_PARENT: $e
+})), Xt = { class: "s-cascader-common" }, tn = {
+  __name: "SCascader",
+  props: {
+    // 支持清空
+    clear: {
+      type: Boolean,
+      default: !0
+    },
+    // 默认选中项,支持 v-model 双向绑定
+    modelValue: {
+      type: [String, Array],
+      default() {
+        return "";
+      }
+    },
+    // 占位符 - 文案提示
+    placeholder: {
+      type: String,
+      default: "请选择"
+    },
+    // 树节点数据
+    options: {
+      type: Array,
+      default() {
+        return [];
+      }
+    },
+    // 禁用
+    disabled: {
+      type: Boolean,
+      default: !1
+    },
+    // 菜单展开方式
+    expandTrigger: {
+      type: String,
+      default: "click"
+    },
+    // options 配字段置项
+    fieldNames: {
+      type: Object,
+      default() {
+        return {
+          label: "name",
+          value: "value",
+          children: "children"
+        };
+      }
+    },
+    // 显示数量
+    maxTagCount: {
+      type: Number,
+      default: 1
+    },
+    // 多选
+    multiple: {
+      type: Boolean,
+      default: !0
+    }
+  },
+  setup(e) {
+    const a = e, t = X("");
+    return be(() => a.modelValue, (n) => {
+      n != null && n.length && (t.value = n);
+    }, { immediate: !0 }), (n, l) => {
+      const i = Ee;
+      return ze(), Xe("div", Xt, [
+        T(i, {
+          options: e.options,
+          allowClear: e.clear,
+          disabled: e.disabled,
+          multiple: e.multiple,
+          fieldNames: e.fieldNames,
+          maxTagCount: e.maxTagCount,
+          placeholder: e.placeholder,
+          value: t.value,
+          "onUpdate:value": l[0] || (l[0] = (r) => t.value = r),
+          expandTrigger: e.expandTrigger,
+          showCheckedStrategy: Ue(Ee).SHOW_CHILD,
+          style: { width: "100%" }
+        }, null, 8, ["options", "allowClear", "disabled", "multiple", "fieldNames", "maxTagCount", "placeholder", "value", "expandTrigger", "showCheckedStrategy"])
+      ]);
+    };
+  }
+};
+export {
+  tn as default
+};

+ 235 - 0
lib/js/SCopperUpload.js

@@ -0,0 +1,235 @@
+var C = (l, r, t) => new Promise((m, c) => {
+  var f = (a) => {
+    try {
+      p(t.next(a));
+    } catch (u) {
+      c(u);
+    }
+  }, n = (a) => {
+    try {
+      p(t.throw(a));
+    } catch (u) {
+      c(u);
+    }
+  }, p = (a) => a.done ? m(a.value) : Promise.resolve(a.value).then(f, n);
+  p((t = t.apply(l, r)).next());
+});
+import { ref as i, reactive as z, watch as b, resolveComponent as g, openBlock as I, createElementBlock as x, createElementVNode as d, toDisplayString as D, createCommentVNode as E, createVNode as v, withCtx as k, pushScopeId as A, popScopeId as $ } from "vue";
+import { r as q, v as V } from "./index2.js";
+import { d as F, p as G } from "./upload.js";
+import H from "./CropperModal.js";
+import { _ as K } from "./index6.js";
+import { M as W } from "./index7.js";
+const J = (l) => (A("data-v-31ce420f"), l = l(), $(), l), Q = { class: "s-file-upload-common" }, X = { class: "head" }, Y = {
+  key: 0,
+  class: "label"
+}, Z = /* @__PURE__ */ J(() => /* @__PURE__ */ d("div", null, "图片上传", -1)), ee = { class: "preview-content" }, te = ["src"], oe = {
+  __name: "SCopperUpload",
+  props: {
+    /**
+     * 文件列表
+     * @list
+     */
+    list: {
+      type: Array,
+      default: () => []
+    },
+    /**
+     * 标题
+     * @label
+     */
+    label: {
+      type: String,
+      default: ""
+    },
+    /**
+     * 只读
+     * @readonly
+    */
+    readonly: {
+      type: Boolean,
+      default: !1
+    },
+    /**
+     * 是否显示删除
+     * @delete
+    */
+    showRemoveIcon: {
+      type: Boolean,
+      default: !1
+    },
+    /**
+     * 是否显示新增
+     * @add
+    */
+    add: {
+      type: Boolean,
+      default: !1
+    },
+    maxFileCount: {
+      type: Number,
+      default: 3
+    },
+    sizeLimit: {
+      type: Number,
+      default: 50
+    },
+    options: {
+      type: Object,
+      default: function() {
+        return {
+          autoCrop: !0,
+          // 是否默认生成截图框
+          autoCropWidth: 180,
+          // 默认生成截图框宽度
+          autoCropHeight: 180,
+          // 默认生成截图框高度
+          fixedBox: !1,
+          // 是否固定截图框大小 不允许改变
+          previewsCircle: !1,
+          // 预览图是否是原圆形
+          businessTableName: "sys_user",
+          title: "",
+          invariantId: ""
+        };
+      }
+    },
+    businessTableName: {
+      type: String,
+      default: void 0
+    },
+    businessKey: {
+      type: String,
+      default: void 0
+    }
+  },
+  setup(l) {
+    const r = l, t = i([
+      // {
+      //     uid: '-1',
+      //     name: 'xxx.png',
+      //     status: 'done',
+      //     url: 'https://www.sapit.com.cn/img/title-bg.cbbd159b.png',
+      //     thumbUrl: 'https://www.sapit.com.cn/img/title-bg.cbbd159b.png',
+      // },
+      // {
+      //     uid: '-2',
+      //     name: 'yyy.png',
+      //     status: 'done',
+      //     url: 'https://www.sapit.com.cn/img/title-bg.9b284669.png',
+      //     thumbUrl: 'https://www.sapit.com.cn/img/title-bg.9b284669.png',
+      // }
+    ]), m = i(!1), c = i(""), f = i(""), n = i(0), p = i(!1), a = z({}), u = i(""), w = i();
+    b(() => r.list, (e) => {
+      e && e.length && (t.value = e);
+    }, { immediate: !0 }), b(() => r.options, (e) => {
+      a.value = e;
+    }, { immediate: !0 });
+    const L = (e) => {
+      const o = e.size / 1024 / 1024 < r.sizeLimit;
+      return o || V.warn({
+        key: "only-you",
+        message: "提醒",
+        description: `文件不能大于${r.sizeLimit}MB!`
+      }), o;
+    }, S = (o) => C(this, [o], function* ({ file: e }) {
+      let s = setTimeout(() => {
+        a.value.invariantId = u.value;
+        const h = Object.assign({}, a.value, {
+          img: e.thumbUrl
+        });
+        h.img && w.value.edit(h), clearTimeout(s);
+      }, 500);
+    }), N = ({ file: e }) => {
+      u.value = e.uid;
+    }, O = (e) => {
+      const o = document.createElement("a");
+      o.href = F(e.uid), o.download = "test", o.click();
+    }, U = () => {
+      p.value = !1;
+      for (let e = t.value.length - 1; e >= 0; e--)
+        t.value[e].uid === u.value && t.value[e].status != "done" && t.value.splice(e, 1);
+    }, B = (e, o) => {
+      p.value = !1, t.value && t.value.length > 0 && t.value.forEach((s) => {
+        s.uid == e && (s.status = "done", s.thumbUrl = o, s.url = G(s.uid));
+      });
+    }, M = (e) => {
+      n.value = t.value.findIndex((o) => o.uid === e.uid), m.value = !0, f.value = e.name || "预览", c.value = e.url || e.thumbUrl;
+    }, P = () => {
+      m.value = !1;
+    }, y = (e) => {
+      n.value = n.value + e < 0 ? 0 : n.value + e > t.value.length - 1 ? t.value.length - 1 : n.value + e, f.value = t.value[n.value].name || "预览", c.value = t.value[n.value].url;
+    };
+    return (e, o) => {
+      const s = g("PlusOutlined"), h = K, R = g("LeftOutlined"), T = g("RightOutlined"), j = W;
+      return I(), x("div", Q, [
+        d("div", X, [
+          l.label ? (I(), x("div", Y, D(l.label), 1)) : E("", !0)
+        ]),
+        v(h, {
+          "list-type": "picture-card",
+          accept: ".jpg, .png, .jpeg, .PNG, .gif",
+          onPreview: M,
+          "before-upload": L,
+          "file-list": t.value,
+          "onUpdate:fileList": o[0] || (o[0] = (_) => t.value = _),
+          "custom-request": N,
+          onChange: S,
+          disabled: l.readonly,
+          onDownload: O,
+          showUploadList: {
+            showRemoveIcon: l.showRemoveIcon,
+            showDownloadIcon: !0
+          }
+        }, {
+          default: k(() => [
+            d("span", null, [
+              v(s),
+              Z
+            ])
+          ]),
+          _: 1
+        }, 8, ["file-list", "disabled", "showUploadList"]),
+        v(j, {
+          open: m.value,
+          title: f.value,
+          footer: null,
+          onCancel: P,
+          width: "800px"
+        }, {
+          default: k(() => [
+            d("div", ee, [
+              d("div", {
+                class: "prev",
+                onClick: o[1] || (o[1] = (_) => y(-1))
+              }, [
+                v(R)
+              ]),
+              d("img", {
+                alt: "example",
+                class: "view",
+                src: c.value
+              }, null, 8, te),
+              d("div", {
+                class: "next",
+                onClick: o[2] || (o[2] = (_) => y(1))
+              }, [
+                v(T)
+              ])
+            ])
+          ]),
+          _: 1
+        }, 8, ["open", "title"]),
+        v(H, {
+          ref_key: "cropperModal",
+          ref: w,
+          onCropperNo: U,
+          onCropperOk: B
+        }, null, 512)
+      ]);
+    };
+  }
+}, re = /* @__PURE__ */ q(oe, [["__scopeId", "data-v-31ce420f"]]);
+export {
+  re as default
+};

+ 209 - 0
lib/js/SDraggerUpload.js

@@ -0,0 +1,209 @@
+import { ref as u, watch as O, resolveComponent as v, openBlock as w, createElementBlock as g, createElementVNode as a, toDisplayString as T, createCommentVNode as j, createVNode as c, withCtx as y, pushScopeId as q, popScopeId as z } from "vue";
+import { r as A, v as E } from "./index2.js";
+import { a as F, d as M, b as $ } from "./upload.js";
+import { U as P } from "./index6.js";
+import { M as H } from "./index7.js";
+const b = (n) => (q("data-v-6353f81e"), n = n(), z(), n), V = { class: "s-file-upload-common" }, G = { class: "head" }, K = {
+  key: 0,
+  class: "label"
+}, X = { class: "ant-upload-drag-icon" }, J = /* @__PURE__ */ b(() => /* @__PURE__ */ a("p", { class: "ant-upload-text" }, "点击或拖入文件到此处", -1)), Q = /* @__PURE__ */ b(() => /* @__PURE__ */ a("p", { class: "ant-upload-hint" }, "支持单个或批量上传", -1)), W = { class: "preview-content" }, Y = ["src"], Z = /* @__PURE__ */ Object.assign({
+  inheritAttrs: !0
+}, {
+  __name: "SDraggerUpload",
+  props: {
+    /**
+     * 文件列表
+     * @list
+     */
+    list: {
+      type: Array,
+      default: () => []
+    },
+    /**
+     * 标题
+     * @label
+     */
+    label: {
+      type: String,
+      default: ""
+    },
+    /**
+     * 只读
+     * @readonly
+    */
+    readonly: {
+      type: Boolean,
+      default: !1
+    },
+    /**
+     * 是否显示删除
+     * @delete
+    */
+    showRemoveIcon: {
+      type: Boolean,
+      default: !1
+    },
+    /**
+     * 是否显示新增
+     * @isAdd
+    */
+    isAdd: {
+      type: Boolean,
+      default: !0
+    },
+    /**
+     * 文件类型
+     * @accept
+    */
+    accept: {
+      type: String,
+      default: ""
+    },
+    // 展示类型 picture | picture-card 注:规范内不设定text上传类型
+    listType: {
+      type: String,
+      default: "picture"
+    },
+    maxFileCount: {
+      type: Number,
+      default: 3
+    },
+    sizeLimit: {
+      type: Number,
+      default: 50
+    },
+    businessTableName: {
+      type: String,
+      default: "sapit-ui-plus-components-upload"
+    },
+    businessKey: {
+      type: String,
+      default: void 0
+    },
+    showUploadList: {
+      type: Boolean,
+      default: !0
+    }
+  },
+  setup(n) {
+    const s = n, o = u([]), d = u(!1), p = u(""), r = u(""), l = u(0);
+    O(() => s.list, (e) => {
+      e && e.length && (o.value = e);
+    }, { immediate: !0 });
+    const _ = (e) => {
+      console.log(s.sizeLimit);
+      const t = e.size / 1024 / 1024 < s.sizeLimit;
+      return t || E.warn({
+        key: "only-you",
+        message: "提醒",
+        description: `文件不能大于${s.sizeLimit}MB!`
+      }), t;
+    }, x = ({ onSuccess: e, onError: t, file: i }) => {
+      F(i, s.businessTableName, i.uid).then(() => {
+        e();
+      }).catch(() => {
+        o.value.splice(o.value.length - 1, 1), t();
+      });
+    }, L = (e) => {
+      o.value = e.fileList;
+    };
+    function C(e) {
+      console.log(e);
+    }
+    const U = (e) => {
+      l.value = o.value.findIndex((t) => t.uid === e.uid), d.value = !0, r.value = e.name || "预览", p.value = e.url || e.thumbUrl;
+    }, R = (e) => {
+      const t = document.createElement("a");
+      t.href = M(e.uid), t.download = "test", t.click();
+    }, S = () => {
+      d.value = !1;
+    }, h = (e) => {
+      var t;
+      l.value = l.value + e < 0 ? 0 : l.value + e > o.value.length - 1 ? o.value.length - 1 : l.value + e, (t = o.value[l.value]) != null && t.thumbUrl ? (r.value = o.value[l.value].name || "预览", p.value = o.value[l.value].thumbUrl) : D(o.value[l.value]);
+    }, D = (e) => {
+      if (e.type.includes("office")) {
+        const t = window.open("", "");
+        t.location = $(e.uid + "/" + e.name);
+      } else if (e.type.includes("text"))
+        k(e.url);
+      else if (e.type.includes("pdf") || e.type.includes("png") || e.type.includes("gif") || e.type.includes("jpeg") || e.type.includes("bmp") || e.type.includes("ico") || e.type.includes("webp")) {
+        const t = window.open("", "");
+        t.location = e.url;
+      } else
+        this.$notification.warning({
+          message: "不支持此文件类型"
+        });
+    }, k = (e) => {
+      const t = new XMLHttpRequest();
+      t.open("GET", e, !0), t.responseType = "blob", t.setRequestHeader("Content-Type", "application/json"), t.onload = function() {
+        const i = new Blob([t.response], { type: "application/json;charset=utf-8" }), m = window.URL.createObjectURL(i), f = window.open("", "");
+        f.location = m;
+      }, t.send();
+    };
+    return (e, t) => {
+      const i = v("inbox-outlined"), m = P, f = v("LeftOutlined"), B = v("RightOutlined"), I = H;
+      return w(), g("div", V, [
+        a("div", G, [
+          n.label ? (w(), g("div", K, T(n.label), 1)) : j("", !0)
+        ]),
+        c(m, {
+          accept: n.accept,
+          "list-type": "picture",
+          "file-list": o.value,
+          disabled: n.readonly,
+          maxCount: n.maxFileCount,
+          multiple: n.maxFileCount > 1,
+          "before-upload": _,
+          "custom-request": x,
+          onDrop: C,
+          onChange: L,
+          onPreview: U,
+          onDownload: R,
+          showUploadList: n.showUploadList
+        }, {
+          default: y(() => [
+            a("p", X, [
+              c(i)
+            ]),
+            J,
+            Q
+          ]),
+          _: 1
+        }, 8, ["accept", "file-list", "disabled", "maxCount", "multiple", "showUploadList"]),
+        c(I, {
+          open: d.value,
+          title: r.value,
+          footer: null,
+          onCancel: S,
+          width: "800px"
+        }, {
+          default: y(() => [
+            a("div", W, [
+              a("div", {
+                class: "prev",
+                onClick: t[0] || (t[0] = (N) => h(-1))
+              }, [
+                c(f)
+              ]),
+              a("img", {
+                alt: "example",
+                class: "view",
+                src: p.value
+              }, null, 8, Y),
+              a("div", {
+                class: "next",
+                onClick: t[1] || (t[1] = (N) => h(1))
+              }, [
+                c(B)
+              ])
+            ])
+          ]),
+          _: 1
+        }, 8, ["open", "title"])
+      ]);
+    };
+  }
+}), ae = /* @__PURE__ */ A(Z, [["__scopeId", "data-v-6353f81e"]]);
+export {
+  ae as default
+};

File diff suppressed because it is too large
+ 20 - 0
lib/js/SEditor.js


+ 72 - 0
lib/js/SEmpty.js

@@ -0,0 +1,72 @@
+import { getCurrentInstance as u, ref as l, onMounted as m, openBlock as s, createElementBlock as a, createVNode as _, withCtx as y, renderSlot as f, toDisplayString as E } from "vue";
+import { r as g, s as o } from "./index2.js";
+const S = { class: "s-empty-common" }, v = {
+  key: 0,
+  class: "description"
+}, I = {
+  key: 1,
+  class: "description"
+}, h = {
+  __name: "SEmpty",
+  props: {
+    /**
+     * icon类型
+     * @type
+    */
+    type: {
+      type: [String, Number],
+      default: 1
+    },
+    /**
+     * 提示信息
+     * @icon
+    */
+    icon: {
+      type: [String, Object],
+      default: ""
+    },
+    /**
+     * 描述信息
+     * @desc
+    */
+    desc: {
+      type: [String, Boolean],
+      default() {
+      }
+    },
+    /**
+     * 图片样式
+     * @desc
+    */
+    iconStyle: {
+      type: Object,
+      default() {
+        return {};
+      }
+    }
+  },
+  setup(c) {
+    const r = u(), { $l: i } = r.appContext.config.globalProperties, e = c, t = l(""), n = l("");
+    return m(() => {
+      e.icon ? t.value = e.icon : parseInt(e.type) === 1 ? t.value = o.PRESENTED_IMAGE_DEFAULT : parseInt(e.type) === 2 ? t.value = o.PRESENTED_IMAGE_SIMPLE : (t.value = o.PRESENTED_IMAGE_DEFAULT, console.warn('内置type类型为:1 或者 2,如需其他类型,请使用icon属性,例如:icon="https://xxx.png')), e.desc === void 0 ? n.value = i("暂无数据", "components.empty") : typeof e.desc == "string" ? n.value = e.desc.trim() : n.value = i("暂无数据", "components.empty");
+    }), (p, x) => {
+      const d = o;
+      return s(), a("div", S, [
+        _(d, {
+          image: t.value,
+          imageStyle: c.iconStyle
+        }, {
+          description: y(() => [
+            p.$slots.default ? (s(), a("span", v, [
+              f(p.$slots, "default", {}, void 0, !0)
+            ])) : (s(), a("span", I, E(n.value), 1))
+          ]),
+          _: 3
+        }, 8, ["image", "imageStyle"])
+      ]);
+    };
+  }
+}, M = /* @__PURE__ */ g(h, [["__scopeId", "data-v-a3108dac"]]);
+export {
+  M as default
+};

+ 224 - 0
lib/js/SFileUpload.js

@@ -0,0 +1,224 @@
+import { ref as d, watch as $, onMounted as q, resolveComponent as b, openBlock as s, createElementBlock as u, withModifiers as x, toDisplayString as f, createCommentVNode as c, createVNode as o, withCtx as g, createTextVNode as P, createElementVNode as p } from "vue";
+import { r as j, v as z, B as D } from "./index2.js";
+import { a as E, d as I, b as V } from "./upload.js";
+import { M as H } from "./index7.js";
+import { _ as G } from "./index6.js";
+const K = { class: "s-file-upload-common" }, X = {
+  key: 0,
+  class: "head"
+}, J = {
+  key: 0,
+  class: "head"
+}, Q = { key: 1 }, W = { class: "preview-content" }, Y = ["src"], Z = {
+  __name: "SFileUpload",
+  props: {
+    /**
+     * 文件列表
+     * @list
+     */
+    list: {
+      type: Array,
+      default: () => []
+    },
+    /**
+     * 标题
+     * @label
+     */
+    label: {
+      type: String,
+      default: ""
+    },
+    /**
+     * 只读
+     * @readonly
+    */
+    readonly: {
+      type: Boolean,
+      default: !1
+    },
+    /**
+     * 是否显示删除
+     * @delete
+    */
+    showRemoveIcon: {
+      type: Boolean,
+      default: !1
+    },
+    /**
+     * 是否显示新增
+     * @isAdd
+    */
+    isAdd: {
+      type: Boolean,
+      default: !0
+    },
+    /**
+     * 文件类型
+     * @accept
+    */
+    accept: {
+      type: String,
+      default: ""
+    },
+    // 展示类型 picture | picture-card 注:规范内不设定text上传类型
+    listType: {
+      type: String,
+      default: "picture"
+    },
+    maxFileCount: {
+      type: Number,
+      default: 3
+    },
+    sizeLimit: {
+      type: Number,
+      default: 50
+    },
+    businessTableName: {
+      type: String,
+      default: "sapit-ui-plus-components-upload"
+    },
+    businessKey: {
+      type: String,
+      default: void 0
+    },
+    showUploadList: {
+      type: Boolean,
+      default: !0
+    }
+  },
+  setup(l) {
+    const m = l, n = d([]), r = d(!1), y = d(""), w = d(""), a = d(0);
+    $(() => m.list, (e) => {
+      e && e.length && (n.value = e);
+    }, { immediate: !0 });
+    const L = (e) => {
+      const t = e.size / 1024 / 1024 < m.sizeLimit;
+      return t || z.warn({
+        key: "only-you",
+        message: "提醒",
+        description: `文件不能大于${m.sizeLimit}MB!`
+      }), t;
+    }, k = (e) => {
+      n.value = e.fileList;
+    }, U = ({ onSuccess: e, onError: t, file: i }) => {
+      E(i, m.businessTableName, i.uid).then((v) => {
+        e();
+      }).catch(() => {
+        n.value.splice(n.value.length - 1, 1), t();
+      });
+    }, T = (e) => {
+      const t = document.createElement("a");
+      t.href = I(e.uid), t.download = "test", t.click();
+    }, R = (e) => {
+      a.value = n.value.findIndex((t) => t.uid === e.uid), r.value = !0, w.value = e.name || "预览", y.value = e.url || e.thumbUrl;
+    }, B = () => {
+      r.value = !1;
+    }, C = (e) => {
+      var t;
+      a.value = a.value + e < 0 ? 0 : a.value + e > n.value.length - 1 ? n.value.length - 1 : a.value + e, (t = n.value[a.value]) != null && t.thumbUrl ? (w.value = n.value[a.value].name || "预览", y.value = n.value[a.value].thumbUrl) : F(n.value[a.value]);
+    }, F = (e) => {
+      if (e.type.includes("office")) {
+        const t = window.open("", "");
+        t.location = V(e.uid + "/" + e.name);
+      } else if (e.type.includes("text"))
+        N(e.url);
+      else if (e.type.includes("pdf") || e.type.includes("png") || e.type.includes("gif") || e.type.includes("jpeg") || e.type.includes("bmp") || e.type.includes("ico") || e.type.includes("webp")) {
+        const t = window.open("", "");
+        t.location = e.url;
+      } else
+        this.$notification.warning({
+          message: "不支持此文件类型"
+        });
+    }, N = (e) => {
+      const t = new XMLHttpRequest();
+      t.open("GET", e, !0), t.responseType = "blob", t.setRequestHeader("Content-Type", "application/json"), t.onload = function() {
+        const i = new Blob([t.response], { type: "application/json;charset=utf-8" }), v = window.URL.createObjectURL(i), h = window.open("", "");
+        h.location = v;
+      }, t.send();
+    };
+    return q(() => {
+    }), (e, t) => {
+      const i = b("PlusOutlined"), v = D, h = G, O = b("LeftOutlined"), S = b("RightOutlined"), A = H;
+      return s(), u("div", K, [
+        l.isAdd && l.listType === "picture-card" && n.value.length <= l.maxFileCount ? (s(), u("div", X, [
+          l.label ? (s(), u("div", {
+            key: 0,
+            class: "label",
+            onClick: t[0] || (t[0] = x(() => {
+            }, ["stop"]))
+          }, f(l.label), 1)) : c("", !0)
+        ])) : c("", !0),
+        o(h, {
+          accept: l.accept,
+          "list-type": l.listType,
+          "file-list": n.value,
+          disabled: l.readonly,
+          maxCount: l.maxFileCount,
+          multiple: l.maxFileCount > 1,
+          "before-upload": L,
+          "custom-request": U,
+          onChange: k,
+          onPreview: R,
+          onDownload: T,
+          showUploadList: l.showUploadList
+        }, {
+          default: g(() => [
+            l.isAdd && l.listType === "picture" && n.value.length <= l.maxFileCount ? (s(), u("div", J, [
+              l.label ? (s(), u("div", {
+                key: 0,
+                class: "label",
+                onClick: t[1] || (t[1] = x(() => {
+                }, ["stop"]))
+              }, f(l.label), 1)) : c("", !0),
+              o(v, null, {
+                default: g(() => [
+                  o(i),
+                  P(" " + f(e.$l("点击上传", "components.upload")), 1)
+                ]),
+                _: 1
+              })
+            ])) : c("", !0),
+            l.isAdd && l.listType === "picture-card" && n.value.length <= l.maxFileCount ? (s(), u("span", Q, [
+              o(i),
+              p("div", null, f(e.$l("点击上传", "components.upload")), 1)
+            ])) : c("", !0)
+          ]),
+          _: 1
+        }, 8, ["accept", "list-type", "file-list", "disabled", "maxCount", "multiple", "showUploadList"]),
+        o(A, {
+          open: r.value,
+          title: w.value,
+          footer: null,
+          onCancel: B,
+          width: "800px"
+        }, {
+          default: g(() => [
+            p("div", W, [
+              p("div", {
+                class: "prev",
+                onClick: t[2] || (t[2] = (M) => C(-1))
+              }, [
+                o(O)
+              ]),
+              p("img", {
+                alt: "example",
+                class: "view",
+                src: y.value
+              }, null, 8, Y),
+              p("div", {
+                class: "next",
+                onClick: t[3] || (t[3] = (M) => C(1))
+              }, [
+                o(S)
+              ])
+            ])
+          ]),
+          _: 1
+        }, 8, ["open", "title"])
+      ]);
+    };
+  }
+}, ae = /* @__PURE__ */ j(Z, [["__scopeId", "data-v-9a944142"]]);
+export {
+  ae as default
+};

+ 71 - 0
lib/js/SSideMenu.js

@@ -0,0 +1,71 @@
+import { ref as u, reactive as v, watch as k, onMounted as b, resolveComponent as i, openBlock as d, createElementBlock as M, createElementVNode as m, createVNode as S, normalizeStyle as O, createBlock as y } from "vue";
+import { c as g } from "./routeConvert.js";
+import { r as w, aM as E, aN as x } from "./index2.js";
+const C = { class: "s-menu-common" }, D = { class: "menu-wrap" }, N = {
+  __name: "SSideMenu",
+  emits: ["collapsed"],
+  setup(U, { emit: _ }) {
+    const f = _, r = u([]), l = u(""), e = v({
+      collapsed: !1,
+      selectedKeys: ["1"],
+      openKeys: ["sub1"],
+      preOpenKeys: ["sub1"]
+    });
+    k(
+      () => e.openKeys,
+      (t, s) => {
+        e.preOpenKeys = s;
+      }
+    );
+    const p = (t) => t.map((o) => {
+      const n = {
+        key: o.path,
+        // icon: item.icon ? () => h(item.icon) : null,
+        icon: null,
+        label: o.name || o.meta.title,
+        title: o.name || o,
+        path: o.path
+      };
+      return o.children && (n.children = p(o.children)), n;
+    }), h = () => {
+      e.collapsed = !e.collapsed, e.openKeys = e.collapsed ? [] : e.preOpenKeys, f("collapsed", e.collapsed);
+    }, K = (t) => {
+      window.$push(t.key);
+    };
+    return b(() => {
+      l.value = window.$utils.env.VITE_APP_MENU_THEME || "dark";
+      const s = E().dynamics, o = g(s.find((c) => c.path === "/")), n = o && o.children || [];
+      r.value = p(n.filter((c) => !c.meta.hidden));
+    }), (t, s) => {
+      const o = x, n = i("DoubleRightOutlined"), c = i("DoubleLeftOutlined");
+      return d(), M("div", C, [
+        m("div", D, [
+          S(o, {
+            openKeys: e.openKeys,
+            "onUpdate:openKeys": s[0] || (s[0] = (a) => e.openKeys = a),
+            selectedKeys: e.selectedKeys,
+            "onUpdate:selectedKeys": s[1] || (s[1] = (a) => e.selectedKeys = a),
+            mode: "inline",
+            theme: l.value,
+            items: r.value,
+            onSelect: K
+          }, null, 8, ["openKeys", "selectedKeys", "theme", "items"])
+        ]),
+        m("div", {
+          class: "right-border-btn",
+          style: O({
+            backgroundColor: l.value === "dark" ? "#001529" : "#fff",
+            color: l.value === "dark" ? "#fff" : "#000000A6",
+            border: `1px solid ${l.value === "dark" ? "#001529" : "#ececec"}`
+          }),
+          onClick: h
+        }, [
+          e.collapsed ? (d(), y(n, { key: 0 })) : (d(), y(c, { key: 1 }))
+        ], 4)
+      ]);
+    };
+  }
+}, T = /* @__PURE__ */ w(N, [["__scopeId", "data-v-c7d52ebe"]]);
+export {
+  T as default
+};

+ 58 - 0
lib/js/STopMenu.js

@@ -0,0 +1,58 @@
+import { ref as d, reactive as u, watch as m, onMounted as i, openBlock as _, createElementBlock as y, createElementVNode as h, createVNode as K } from "vue";
+import { c as f } from "./routeConvert.js";
+import { r as v, aM as M, aN as w } from "./index2.js";
+const E = { class: "s-menu-common" }, k = { class: "menu-wrap" }, S = {
+  __name: "STopMenu",
+  emits: ["collapsed"],
+  setup(T, { emit: b }) {
+    const c = d([]), l = d(""), n = u({
+      collapsed: !1,
+      selectedKeys: ["1"],
+      openKeys: ["sub1"],
+      preOpenKeys: ["sub1"]
+    });
+    m(
+      () => n.openKeys,
+      (o, s) => {
+        n.preOpenKeys = s;
+      }
+    );
+    const r = (o) => o.map((e) => {
+      const t = {
+        key: e.path,
+        // icon: item.icon ? () => h(item.icon) : null,
+        icon: null,
+        label: e.name || e.meta.title,
+        title: e.name || e,
+        path: e.path
+      };
+      return e.children && (t.children = r(e.children)), t;
+    }), p = (o) => {
+      window.$push(o.key);
+    };
+    return i(() => {
+      l.value = window.$utils.env.VITE_APP_MENU_THEME || "dark";
+      const s = M().dynamics, e = f(s.find((a) => a.path === "/")), t = e && e.children || [];
+      c.value = r(t.filter((a) => !a.meta.hidden));
+    }), (o, s) => {
+      const e = w;
+      return _(), y("div", E, [
+        h("div", k, [
+          K(e, {
+            openKeys: n.openKeys,
+            "onUpdate:openKeys": s[0] || (s[0] = (t) => n.openKeys = t),
+            selectedKeys: n.selectedKeys,
+            "onUpdate:selectedKeys": s[1] || (s[1] = (t) => n.selectedKeys = t),
+            mode: "horizontal",
+            theme: l.value,
+            items: c.value,
+            onSelect: p
+          }, null, 8, ["openKeys", "selectedKeys", "theme", "items"])
+        ])
+      ]);
+    };
+  }
+}, V = /* @__PURE__ */ v(S, [["__scopeId", "data-v-d34b8d4d"]]);
+export {
+  V as default
+};

+ 569 - 0
lib/js/STree.js

@@ -0,0 +1,569 @@
+var G = (e, f, d) => new Promise((a, l) => {
+  var i = (r) => {
+    try {
+      c(d.next(r));
+    } catch (y) {
+      l(y);
+    }
+  }, o = (r) => {
+    try {
+      c(d.throw(r));
+    } catch (y) {
+      l(y);
+    }
+  }, c = (r) => r.done ? a(r.value) : Promise.resolve(r.value).then(i, o);
+  c((d = d.apply(e, f)).next());
+});
+import { createVNode as S, defineComponent as oe, ref as E, computed as K, watchEffect as fe, watch as Q, onUpdated as ve, nextTick as ye, onMounted as he, openBlock as W, createElementBlock as ee, withCtx as F, createElementVNode as te, normalizeClass as pe, toDisplayString as j, createBlock as Ke, createTextVNode as xe } from "vue";
+import { b as de, w as me, j as ce, d as ke, _ as m, o as be, $ as X, a as P, m as se, F as Y, D as g, T as C, C as B, P as ne, e as _e, aQ as ge, aR as Ee, aS as we, r as Te, H as Ne } from "./index2.js";
+import { d as Se } from "./debounce.js";
+import { u as De, T as Ce, r as Oe, t as Ie, V as Pe } from "./index8.js";
+import { b as le, f as Ae, c as $e, d as Fe } from "./index4.js";
+const ae = 4;
+function je(e) {
+  const {
+    dropPosition: f,
+    dropLevelOffset: d,
+    prefixCls: a,
+    indent: l,
+    direction: i = "ltr"
+  } = e, o = i === "ltr" ? "left" : "right", c = i === "ltr" ? "right" : "left", r = {
+    [o]: `${-d * l + ae}px`,
+    [c]: 0
+  };
+  switch (f) {
+    case -1:
+      r.top = "-3px";
+      break;
+    case 1:
+      r.bottom = "-3px";
+      break;
+    default:
+      r.bottom = "-3px", r[o] = `${l + ae}px`;
+      break;
+  }
+  return S("div", {
+    style: r,
+    class: `${a}-drop-indicator`
+  }, null);
+}
+const ie = () => {
+  const e = Ie();
+  return m(m({}, e), {
+    showLine: Y([Boolean, Object]),
+    /** 是否支持多选 */
+    multiple: g(),
+    /** 是否自动展开父节点 */
+    autoExpandParent: g(),
+    /** checkable状态下节点选择完全受控(父子节点选中状态不再关联)*/
+    checkStrictly: g(),
+    /** 是否支持选中 */
+    checkable: g(),
+    /** 是否禁用树 */
+    disabled: g(),
+    /** 默认展开所有树节点 */
+    defaultExpandAll: g(),
+    /** 默认展开对应树节点 */
+    defaultExpandParent: g(),
+    /** 默认展开指定的树节点 */
+    defaultExpandedKeys: C(),
+    /** (受控)展开指定的树节点 */
+    expandedKeys: C(),
+    /** (受控)选中复选框的树节点 */
+    checkedKeys: Y([Array, Object]),
+    /** 默认选中复选框的树节点 */
+    defaultCheckedKeys: C(),
+    /** (受控)设置选中的树节点 */
+    selectedKeys: C(),
+    /** 默认选中的树节点 */
+    defaultSelectedKeys: C(),
+    selectable: g(),
+    loadedKeys: C(),
+    draggable: g(),
+    showIcon: g(),
+    icon: B(),
+    switcherIcon: ne.any,
+    prefixCls: String,
+    /**
+     * @default{title,key,children}
+     * deprecated, please use `fieldNames` instead
+     * 替换treeNode中 title,key,children字段为treeData中对应的字段
+     */
+    replaceFields: _e(),
+    blockNode: g(),
+    openAnimation: ne.any,
+    onDoubleclick: e.onDblclick,
+    "onUpdate:selectedKeys": B(),
+    "onUpdate:checkedKeys": B(),
+    "onUpdate:expandedKeys": B()
+  });
+}, U = oe({
+  compatConfig: {
+    MODE: 3
+  },
+  name: "ATree",
+  inheritAttrs: !1,
+  props: de(ie(), {
+    checkable: !1,
+    selectable: !0,
+    showIcon: !1,
+    blockNode: !1
+  }),
+  slots: Object,
+  setup(e, f) {
+    let {
+      attrs: d,
+      expose: a,
+      emit: l,
+      slots: i
+    } = f;
+    me(!(e.treeData === void 0 && i.default), "`children` of Tree is deprecated. Please use `treeData` instead.");
+    const {
+      prefixCls: o,
+      direction: c,
+      virtual: r
+    } = ce("tree", e), [y, w] = De(o), u = E();
+    a({
+      treeRef: u,
+      onNodeExpand: function() {
+        var n;
+        (n = u.value) === null || n === void 0 || n.onNodeExpand(...arguments);
+      },
+      scrollTo: (n) => {
+        var h;
+        (h = u.value) === null || h === void 0 || h.scrollTo(n);
+      },
+      selectedKeys: K(() => {
+        var n;
+        return (n = u.value) === null || n === void 0 ? void 0 : n.selectedKeys;
+      }),
+      checkedKeys: K(() => {
+        var n;
+        return (n = u.value) === null || n === void 0 ? void 0 : n.checkedKeys;
+      }),
+      halfCheckedKeys: K(() => {
+        var n;
+        return (n = u.value) === null || n === void 0 ? void 0 : n.halfCheckedKeys;
+      }),
+      loadedKeys: K(() => {
+        var n;
+        return (n = u.value) === null || n === void 0 ? void 0 : n.loadedKeys;
+      }),
+      loadingKeys: K(() => {
+        var n;
+        return (n = u.value) === null || n === void 0 ? void 0 : n.loadingKeys;
+      }),
+      expandedKeys: K(() => {
+        var n;
+        return (n = u.value) === null || n === void 0 ? void 0 : n.expandedKeys;
+      })
+    }), fe(() => {
+      ke(e.replaceFields === void 0, "Tree", "`replaceFields` is deprecated, please use fieldNames instead");
+    });
+    const v = (n, h) => {
+      l("update:checkedKeys", n), l("check", n, h);
+    }, T = (n, h) => {
+      l("update:expandedKeys", n), l("expand", n, h);
+    }, k = (n, h) => {
+      l("update:selectedKeys", n), l("select", n, h);
+    };
+    return () => {
+      const {
+        showIcon: n,
+        showLine: h,
+        switcherIcon: L = i.switcherIcon,
+        icon: R = i.icon,
+        blockNode: M,
+        checkable: H,
+        selectable: A,
+        fieldNames: O = e.replaceFields,
+        motion: z = e.openAnimation,
+        itemHeight: t = 28,
+        onDoubleclick: s,
+        onDblclick: p
+      } = e, I = m(m(m({}, d), be(e, ["onUpdate:checkedKeys", "onUpdate:expandedKeys", "onUpdate:selectedKeys", "onDoubleclick"])), {
+        showLine: !!h,
+        dropIndicatorRender: je,
+        fieldNames: O,
+        icon: R,
+        itemHeight: t
+      }), b = i.default ? X(i.default()) : void 0;
+      return y(S(Ce, P(P({}, I), {}, {
+        virtual: r.value,
+        motion: z,
+        ref: u,
+        prefixCls: o.value,
+        class: se({
+          [`${o.value}-icon-hide`]: !n,
+          [`${o.value}-block-node`]: M,
+          [`${o.value}-unselectable`]: !A,
+          [`${o.value}-rtl`]: c.value === "rtl"
+        }, d.class, w.value),
+        direction: c.value,
+        checkable: H,
+        selectable: A,
+        switcherIcon: (D) => Oe(o.value, L, D, i.leafIcon, h),
+        onCheck: v,
+        onExpand: T,
+        onSelect: k,
+        onDblclick: p || s,
+        children: b
+      }), m(m({}, i), {
+        checkable: () => S("span", {
+          class: `${o.value}-checkbox-inner`
+        }, null)
+      })));
+    };
+  }
+});
+var N;
+(function(e) {
+  e[e.None = 0] = "None", e[e.Start = 1] = "Start", e[e.End = 2] = "End";
+})(N || (N = {}));
+function Z(e, f, d) {
+  function a(l) {
+    const i = l[f.key], o = l[f.children];
+    d(i, l) !== !1 && Z(o || [], f, d);
+  }
+  e.forEach(a);
+}
+function Be(e) {
+  let {
+    treeData: f,
+    expandedKeys: d,
+    startKey: a,
+    endKey: l,
+    fieldNames: i = {
+      title: "title",
+      key: "key",
+      children: "children"
+    }
+  } = e;
+  const o = [];
+  let c = N.None;
+  if (a && a === l)
+    return [a];
+  if (!a || !l)
+    return [];
+  function r(y) {
+    return y === a || y === l;
+  }
+  return Z(f, i, (y) => {
+    if (c === N.End)
+      return !1;
+    if (r(y)) {
+      if (o.push(y), c === N.None)
+        c = N.Start;
+      else if (c === N.Start)
+        return c = N.End, !1;
+    } else c === N.Start && o.push(y);
+    return d.includes(y);
+  }), o;
+}
+function q(e, f, d) {
+  const a = [...f], l = [];
+  return Z(e, d, (i, o) => {
+    const c = a.indexOf(i);
+    return c !== -1 && (l.push(o), a.splice(c, 1)), !!a.length;
+  }), l;
+}
+var Ue = function(e, f) {
+  var d = {};
+  for (var a in e) Object.prototype.hasOwnProperty.call(e, a) && f.indexOf(a) < 0 && (d[a] = e[a]);
+  if (e != null && typeof Object.getOwnPropertySymbols == "function") for (var l = 0, a = Object.getOwnPropertySymbols(e); l < a.length; l++)
+    f.indexOf(a[l]) < 0 && Object.prototype.propertyIsEnumerable.call(e, a[l]) && (d[a[l]] = e[a[l]]);
+  return d;
+};
+const Ve = () => m(m({}, ie()), {
+  expandAction: Y([Boolean, String])
+});
+function Le(e) {
+  const {
+    isLeaf: f,
+    expanded: d
+  } = e;
+  return f ? S(ge, null, null) : d ? S(Ee, null, null) : S(we, null, null);
+}
+const V = oe({
+  compatConfig: {
+    MODE: 3
+  },
+  name: "ADirectoryTree",
+  inheritAttrs: !1,
+  props: de(Ve(), {
+    showIcon: !0,
+    expandAction: "click"
+  }),
+  slots: Object,
+  // emits: [
+  //   'update:selectedKeys',
+  //   'update:checkedKeys',
+  //   'update:expandedKeys',
+  //   'expand',
+  //   'select',
+  //   'check',
+  //   'doubleclick',
+  //   'dblclick',
+  //   'click',
+  // ],
+  setup(e, f) {
+    let {
+      attrs: d,
+      slots: a,
+      emit: l,
+      expose: i
+    } = f;
+    var o;
+    const c = E(e.treeData || le(X((o = a.default) === null || o === void 0 ? void 0 : o.call(a))));
+    Q(() => e.treeData, () => {
+      c.value = e.treeData;
+    }), ve(() => {
+      ye(() => {
+        var t;
+        e.treeData === void 0 && a.default && (c.value = le(X((t = a.default) === null || t === void 0 ? void 0 : t.call(a))));
+      });
+    });
+    const r = E(), y = E(), w = K(() => Ae(e.fieldNames)), u = E();
+    i({
+      scrollTo: (t) => {
+        var s;
+        (s = u.value) === null || s === void 0 || s.scrollTo(t);
+      },
+      selectedKeys: K(() => {
+        var t;
+        return (t = u.value) === null || t === void 0 ? void 0 : t.selectedKeys;
+      }),
+      checkedKeys: K(() => {
+        var t;
+        return (t = u.value) === null || t === void 0 ? void 0 : t.checkedKeys;
+      }),
+      halfCheckedKeys: K(() => {
+        var t;
+        return (t = u.value) === null || t === void 0 ? void 0 : t.halfCheckedKeys;
+      }),
+      loadedKeys: K(() => {
+        var t;
+        return (t = u.value) === null || t === void 0 ? void 0 : t.loadedKeys;
+      }),
+      loadingKeys: K(() => {
+        var t;
+        return (t = u.value) === null || t === void 0 ? void 0 : t.loadingKeys;
+      }),
+      expandedKeys: K(() => {
+        var t;
+        return (t = u.value) === null || t === void 0 ? void 0 : t.expandedKeys;
+      })
+    });
+    const v = () => {
+      const {
+        keyEntities: t
+      } = $e(c.value, {
+        fieldNames: w.value
+      });
+      let s;
+      return e.defaultExpandAll ? s = Object.keys(t) : e.defaultExpandParent ? s = Fe(e.expandedKeys || e.defaultExpandedKeys || [], t) : s = e.expandedKeys || e.defaultExpandedKeys, s;
+    }, T = E(e.selectedKeys || e.defaultSelectedKeys || []), k = E(v());
+    Q(() => e.selectedKeys, () => {
+      e.selectedKeys !== void 0 && (T.value = e.selectedKeys);
+    }, {
+      immediate: !0
+    }), Q(() => e.expandedKeys, () => {
+      e.expandedKeys !== void 0 && (k.value = e.expandedKeys);
+    }, {
+      immediate: !0
+    });
+    const h = Se((t, s) => {
+      const {
+        isLeaf: p
+      } = s;
+      p || t.shiftKey || t.metaKey || t.ctrlKey || u.value.onNodeExpand(t, s);
+    }, 200, {
+      leading: !0
+    }), L = (t, s) => {
+      e.expandedKeys === void 0 && (k.value = t), l("update:expandedKeys", t), l("expand", t, s);
+    }, R = (t, s) => {
+      const {
+        expandAction: p
+      } = e;
+      p === "click" && h(t, s), l("click", t, s);
+    }, M = (t, s) => {
+      const {
+        expandAction: p
+      } = e;
+      (p === "dblclick" || p === "doubleclick") && h(t, s), l("doubleclick", t, s), l("dblclick", t, s);
+    }, H = (t, s) => {
+      const {
+        multiple: p
+      } = e, {
+        node: I,
+        nativeEvent: b
+      } = s, D = I[w.value.key], $ = m(m({}, s), {
+        selected: !0
+      }), re = (b == null ? void 0 : b.ctrlKey) || (b == null ? void 0 : b.metaKey), ue = b == null ? void 0 : b.shiftKey;
+      let _;
+      p && re ? (_ = t, r.value = D, y.value = _, $.selectedNodes = q(c.value, _, w.value)) : p && ue ? (_ = Array.from(/* @__PURE__ */ new Set([...y.value || [], ...Be({
+        treeData: c.value,
+        expandedKeys: k.value,
+        startKey: D,
+        endKey: r.value,
+        fieldNames: w.value
+      })])), $.selectedNodes = q(c.value, _, w.value)) : (_ = [D], r.value = D, y.value = _, $.selectedNodes = q(c.value, _, w.value)), l("update:selectedKeys", _), l("select", _, $), e.selectedKeys === void 0 && (T.value = _);
+    }, A = (t, s) => {
+      l("update:checkedKeys", t), l("check", t, s);
+    }, {
+      prefixCls: O,
+      direction: z
+    } = ce("tree", e);
+    return () => {
+      const t = se(`${O.value}-directory`, {
+        [`${O.value}-directory-rtl`]: z.value === "rtl"
+      }, d.class), {
+        icon: s = a.icon,
+        blockNode: p = !0
+      } = e, I = Ue(e, ["icon", "blockNode"]);
+      return S(U, P(P(P({}, d), {}, {
+        icon: s || Le,
+        ref: u,
+        blockNode: p
+      }, I), {}, {
+        prefixCls: O.value,
+        class: t,
+        expandedKeys: k.value,
+        selectedKeys: T.value,
+        onSelect: H,
+        onClick: R,
+        onDblclick: M,
+        onExpand: L,
+        onCheck: A
+      }), a);
+    };
+  }
+}), J = Pe;
+m(U, {
+  DirectoryTree: V,
+  TreeNode: J,
+  install: (e) => (e.component(U.name, U), e.component(J.name, J), e.component(V.name, V), e)
+});
+const Re = { class: "s-tree-common" }, Me = { class: "node-title" }, He = {
+  key: 1,
+  class: "node-title"
+}, ze = {
+  __name: "STree",
+  props: {
+    // 是否展开所有节点
+    expandAll: {
+      type: Boolean,
+      default: !1
+    },
+    // 树节点属性
+    props: {
+      type: Object,
+      default: () => ({
+        children: "children",
+        label: "name",
+        value: "value"
+      })
+    },
+    // 是否添加复选框
+    checkable: {
+      type: Boolean,
+      default: !1
+    },
+    // 树高度
+    height: {
+      type: Number,
+      default: 300
+    },
+    // 获取一级节点数据
+    levelOneChildren: {
+      type: Function,
+      default: () => {
+      }
+    },
+    // 获取二级节点数据
+    levelTwoChildren: {
+      type: Function,
+      default: () => {
+      }
+    },
+    // 默认选中项,支持 v-model 双向绑定
+    modelValue: {
+      type: [String, Array],
+      default() {
+        return "";
+      }
+    },
+    // 默认选中第一个节点
+    selectFirstOne: {
+      type: Boolean,
+      default: !1
+    },
+    // 是否显示图标
+    showIcon: {
+      type: Boolean,
+      default: !1
+    },
+    // 显示字数长度 超过15字符显示省略号并且鼠标悬浮tooltip显示
+    showLength: {
+      type: [Number, String],
+      default: 15
+    }
+  },
+  emits: ["select:modelValue"],
+  setup(e, { emit: f }) {
+    const d = e, a = f, l = E([]), i = E([]), o = E([]), c = E([]), r = (x, v) => G(this, null, function* () {
+      v.expanded && (!v.node.dataRef.children || v.node.dataRef.children.length === 0) && (v.node.dataRef.children = yield d.levelOneChildren(v.node.dataRef.id)), x.value = x;
+    }), y = (x, v) => {
+      a("select:modelValue", x, v);
+    }, w = () => G(this, null, function* () {
+      var x, v, T, k;
+      o.value = [], l.value = yield d.levelTwoChildren(), (x = l.value) != null && x.length && ((T = (v = l.value[0]) == null ? void 0 : v.children[0]) != null && T.length) && (d.selectFirstOne && (l.value[0].selected = !0, i.value.push(((k = l.value[0]) == null ? void 0 : k.id) || ""), a("select:modelValue", l.value[0].id || "", l.value[0])), o.value = [l.value[0].id]);
+    }), u = (x) => ["D", "G", "C", "D"][x];
+    return he(() => {
+      w();
+    }), (x, v) => {
+      const T = Ne, k = V;
+      return W(), ee("div", Re, [
+        S(k, {
+          selectedKeys: i.value,
+          "onUpdate:selectedKeys": v[0] || (v[0] = (n) => i.value = n),
+          checkedKeys: o.value,
+          "onUpdate:checkedKeys": v[1] || (v[1] = (n) => o.value = n),
+          expandedKeys: c.value,
+          "onUpdate:expandedKeys": v[2] || (v[2] = (n) => c.value = n),
+          "default-expand-all": e.expandAll,
+          checkable: e.checkable,
+          "tree-data": l.value,
+          showIcon: e.showIcon,
+          height: e.height,
+          onExpand: r,
+          onSelect: y
+        }, {
+          icon: F((n) => [
+            te("div", {
+              class: pe(["node-icon", u(n.type)])
+            }, j(u(n.type)), 3)
+          ]),
+          title: F((n) => [
+            n.title.length > 15 ? (W(), Ke(T, {
+              key: 0,
+              placement: "topLeft"
+            }, {
+              title: F(() => [
+                xe(j(n.title), 1)
+              ]),
+              default: F(() => [
+                te("div", Me, j(n.title.slice(0, 15)) + "... ", 1)
+              ]),
+              _: 2
+            }, 1024)) : (W(), ee("div", He, j(n.title), 1))
+          ]),
+          _: 1
+        }, 8, ["selectedKeys", "checkedKeys", "expandedKeys", "default-expand-all", "checkable", "tree-data", "showIcon", "height"])
+      ]);
+    };
+  }
+}, Ye = /* @__PURE__ */ Te(ze, [["__scopeId", "data-v-aa1c998c"]]);
+export {
+  Ye as default
+};

File diff suppressed because it is too large
+ 519 - 0
lib/js/STreeSelect.js


File diff suppressed because it is too large
+ 16 - 0
lib/js/SUserSelect.js


+ 32 - 0
lib/js/common.js

@@ -0,0 +1,32 @@
+import { bA as i } from "./index2.js";
+function o(t = "", n = "") {
+  const e = window.$utils.env.VITE_APP_SYS_SERVER_NAME;
+  return window.$utils.http({
+    url: `${e}/office/recursionChildrenWithAuth?parentId=${t}&excludeIds=${n}`
+  });
+}
+function u(t = "") {
+  const n = window.$utils.env.VITE_APP_SYS_SERVER_NAME;
+  return window.$utils.http({
+    url: `${n}/office/levelTwoChildrenWithAuth?parentId=${t}`
+  });
+}
+function r(t = "") {
+  const n = window.$utils.env.VITE_APP_SYS_SERVER_NAME;
+  return window.$utils.http({
+    url: `${n}/office/levelOneChildrenWithAuth?parentId=${t}`
+  });
+}
+function s(t) {
+  const n = window.$utils.env.VITE_APP_SYS_SERVER_NAME;
+  return window.$utils.http({
+    method: "get",
+    url: `${n}/v1/units/jobs?${i.stringify(t)}`
+  });
+}
+export {
+  u as a,
+  o as b,
+  s as g,
+  r as l
+};

+ 86 - 0
lib/js/debounce.js

@@ -0,0 +1,86 @@
+import { an as C, aT as M, aa as I, ai as N } from "./index2.js";
+var j = "[object Symbol]";
+function B(e) {
+  return typeof e == "symbol" || C(e) && M(e) == j;
+}
+var R = /\s/;
+function $(e) {
+  for (var i = e.length; i-- && R.test(e.charAt(i)); )
+    ;
+  return i;
+}
+var F = /^\s+/;
+function _(e) {
+  return e && e.slice(0, $(e) + 1).replace(F, "");
+}
+var k = NaN, D = /^[-+]0x[0-9a-f]+$/i, G = /^0b[01]+$/i, H = /^0o[0-7]+$/i, P = parseInt;
+function S(e) {
+  if (typeof e == "number")
+    return e;
+  if (B(e))
+    return k;
+  if (I(e)) {
+    var i = typeof e.valueOf == "function" ? e.valueOf() : e;
+    e = I(i) ? i + "" : i;
+  }
+  if (typeof e != "string")
+    return e === 0 ? e : +e;
+  e = _(e);
+  var t = G.test(e);
+  return t || H.test(e) ? P(e.slice(2), t ? 2 : 8) : D.test(e) ? k : +e;
+}
+var y = function() {
+  return N.Date.now();
+}, U = "Expected a function", X = Math.max, q = Math.min;
+function J(e, i, t) {
+  var s, o, l, u, r, f, c = 0, h = !1, d = !1, T = !0;
+  if (typeof e != "function")
+    throw new TypeError(U);
+  i = S(i) || 0, I(t) && (h = !!t.leading, d = "maxWait" in t, l = d ? X(S(t.maxWait) || 0, i) : l, T = "trailing" in t ? !!t.trailing : T);
+  function b(n) {
+    var a = s, m = o;
+    return s = o = void 0, c = n, u = e.apply(m, a), u;
+  }
+  function O(n) {
+    return c = n, r = setTimeout(g, i), h ? b(n) : u;
+  }
+  function W(n) {
+    var a = n - f, m = n - c, E = i - a;
+    return d ? q(E, l - m) : E;
+  }
+  function p(n) {
+    var a = n - f, m = n - c;
+    return f === void 0 || a >= i || a < 0 || d && m >= l;
+  }
+  function g() {
+    var n = y();
+    if (p(n))
+      return v(n);
+    r = setTimeout(g, W(n));
+  }
+  function v(n) {
+    return r = void 0, T && s ? b(n) : (s = o = void 0, u);
+  }
+  function L() {
+    r !== void 0 && clearTimeout(r), c = 0, s = f = o = r = void 0;
+  }
+  function A() {
+    return r === void 0 ? u : v(y());
+  }
+  function x() {
+    var n = y(), a = p(n);
+    if (s = arguments, o = this, f = n, a) {
+      if (r === void 0)
+        return O(f);
+      if (d)
+        return clearTimeout(r), r = setTimeout(g, i), b(f);
+    }
+    return r === void 0 && (r = setTimeout(g, i)), u;
+  }
+  return x.cancel = L, x.flush = A, x;
+}
+export {
+  J as d,
+  B as i,
+  S as t
+};

File diff suppressed because it is too large
+ 0 - 0
lib/js/index.js


File diff suppressed because it is too large
+ 60 - 0
lib/js/index2.js


File diff suppressed because it is too large
+ 917 - 0
lib/js/index3.js


+ 781 - 0
lib/js/index4.js

@@ -0,0 +1,781 @@
+import { w as N, _ as v, $ as B, aU as F, o as M, bd as L, I as R, J as E, bc as G, M as W } from "./index2.js";
+import { ref as H, shallowRef as X, watchEffect as U } from "vue";
+function ae() {
+  const e = (t) => {
+    e.current = t;
+  };
+  return e;
+}
+function le(e, t) {
+  if (!e) return [];
+  const n = e.slice(), r = n.indexOf(t);
+  return r >= 0 && n.splice(r, 1), n;
+}
+function se(e, t) {
+  const n = (e || []).slice();
+  return n.indexOf(t) === -1 && n.push(t), n;
+}
+function I(e) {
+  return e.split("-");
+}
+function D(e, t) {
+  return `${e}-${t}`;
+}
+function q(e) {
+  return e && e.type && e.type.isTreeNode;
+}
+function ce(e, t) {
+  const n = [], r = t[e];
+  function o() {
+    (arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : []).forEach((f) => {
+      let {
+        key: d,
+        children: u
+      } = f;
+      n.push(d), o(u);
+    });
+  }
+  return o(r.children), n;
+}
+function J(e) {
+  if (e.parent) {
+    const t = I(e.pos);
+    return Number(t[t.length - 1]) === e.parent.children.length - 1;
+  }
+  return !1;
+}
+function V(e) {
+  const t = I(e.pos);
+  return Number(t[t.length - 1]) === 0;
+}
+function de(e, t, n, r, o, i, f, d, u, s) {
+  var l;
+  const {
+    clientX: a,
+    clientY: c
+  } = e, {
+    top: h,
+    height: p
+  } = e.target.getBoundingClientRect(), g = ((s === "rtl" ? -1 : 1) * (((o == null ? void 0 : o.x) || 0) - a) - 12) / r;
+  let y = d[n.eventKey];
+  if (c < h + p / 2) {
+    const k = f.findIndex((A) => A.key === y.key), O = k <= 0 ? 0 : k - 1, z = f[O].key;
+    y = d[z];
+  }
+  const S = y.key, C = y, m = y.key;
+  let $ = 0, P = 0;
+  if (!u.has(S))
+    for (let k = 0; k < g && J(y); k += 1)
+      y = y.parent, P += 1;
+  const x = t.eventData, w = y.node;
+  let K = !0;
+  return V(y) && y.level === 0 && c < h + p / 2 && i({
+    dragNode: x,
+    dropNode: w,
+    dropPosition: -1
+  }) && y.key === n.eventKey ? $ = -1 : (C.children || []).length && u.has(m) ? i({
+    dragNode: x,
+    dropNode: w,
+    dropPosition: 0
+  }) ? $ = 0 : K = !1 : P === 0 ? g > -1.5 ? i({
+    dragNode: x,
+    dropNode: w,
+    dropPosition: 1
+  }) ? $ = 1 : K = !1 : i({
+    dragNode: x,
+    dropNode: w,
+    dropPosition: 0
+  }) ? $ = 0 : i({
+    dragNode: x,
+    dropNode: w,
+    dropPosition: 1
+  }) ? $ = 1 : K = !1 : i({
+    dragNode: x,
+    dropNode: w,
+    dropPosition: 1
+  }) ? $ = 1 : K = !1, {
+    dropPosition: $,
+    dropLevelOffset: P,
+    dropTargetKey: y.key,
+    dropTargetPos: y.pos,
+    dragOverNodeKey: m,
+    dropContainerKey: $ === 0 ? null : ((l = y.parent) === null || l === void 0 ? void 0 : l.key) || null,
+    dropAllowed: K
+  };
+}
+function fe(e, t) {
+  if (!e) return;
+  const {
+    multiple: n
+  } = t;
+  return n ? e.slice() : e.length ? [e[0]] : e;
+}
+function ue(e) {
+  if (!e)
+    return null;
+  let t;
+  if (Array.isArray(e))
+    t = {
+      checkedKeys: e,
+      halfCheckedKeys: void 0
+    };
+  else if (typeof e == "object")
+    t = {
+      checkedKeys: e.checked || void 0,
+      halfCheckedKeys: e.halfChecked || void 0
+    };
+  else
+    return N(!1, "`checkedKeys` is not an array or an object"), null;
+  return t;
+}
+function pe(e, t) {
+  const n = /* @__PURE__ */ new Set();
+  function r(o) {
+    if (n.has(o)) return;
+    const i = t[o];
+    if (!i) return;
+    n.add(o);
+    const {
+      parent: f,
+      node: d
+    } = i;
+    d.disabled || f && r(f.key);
+  }
+  return (e || []).forEach((o) => {
+    r(o);
+  }), [...n];
+}
+var Y = function(e, t) {
+  var n = {};
+  for (var r in e) Object.prototype.hasOwnProperty.call(e, r) && t.indexOf(r) < 0 && (n[r] = e[r]);
+  if (e != null && typeof Object.getOwnPropertySymbols == "function") for (var o = 0, r = Object.getOwnPropertySymbols(e); o < r.length; o++)
+    t.indexOf(r[o]) < 0 && Object.prototype.propertyIsEnumerable.call(e, r[o]) && (n[r[o]] = e[r[o]]);
+  return n;
+};
+function T(e, t) {
+  return e != null ? e : t;
+}
+function j(e) {
+  const {
+    title: t,
+    _title: n,
+    key: r,
+    children: o
+  } = e || {}, i = t || "title";
+  return {
+    title: i,
+    _title: n || [i],
+    key: r || "key",
+    children: o || "children"
+  };
+}
+function he(e) {
+  function t() {
+    let n = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : [];
+    return B(n).map((o) => {
+      var i, f, d, u;
+      if (!q(o))
+        return N(!o, "Tree/TreeNode can only accept TreeNode as children."), null;
+      const s = o.children || {}, l = o.key, a = {};
+      for (const [k, O] of Object.entries(o.props))
+        a[F(k)] = O;
+      const {
+        isLeaf: c,
+        checkable: h,
+        selectable: p,
+        disabled: b,
+        disableCheckbox: g
+      } = a, y = {
+        isLeaf: c || c === "" || void 0,
+        checkable: h || h === "" || void 0,
+        selectable: p || p === "" || void 0,
+        disabled: b || b === "" || void 0,
+        disableCheckbox: g || g === "" || void 0
+      }, S = v(v({}, a), y), {
+        title: C = (i = s.title) === null || i === void 0 ? void 0 : i.call(s, S),
+        icon: m = (f = s.icon) === null || f === void 0 ? void 0 : f.call(s, S),
+        switcherIcon: $ = (d = s.switcherIcon) === null || d === void 0 ? void 0 : d.call(s, S)
+      } = a, P = Y(a, ["title", "icon", "switcherIcon"]), x = (u = s.default) === null || u === void 0 ? void 0 : u.call(s), w = v(v(v({}, P), {
+        title: C,
+        icon: m,
+        switcherIcon: $,
+        key: l,
+        isLeaf: c
+      }), y), K = t(x);
+      return K.length && (w.children = K), w;
+    });
+  }
+  return t(e);
+}
+function ye(e, t, n) {
+  const {
+    _title: r,
+    key: o,
+    children: i
+  } = j(n), f = new Set(t === !0 ? [] : t), d = [];
+  function u(s) {
+    let l = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : null;
+    return s.map((a, c) => {
+      const h = D(l ? l.pos : "0", c), p = T(a[o], h);
+      let b;
+      for (let y = 0; y < r.length; y += 1) {
+        const S = r[y];
+        if (a[S] !== void 0) {
+          b = a[S];
+          break;
+        }
+      }
+      const g = v(v({}, M(a, [...r, o, i])), {
+        title: b,
+        key: p,
+        parent: l,
+        pos: h,
+        children: null,
+        data: a,
+        isStart: [...l ? l.isStart : [], c === 0],
+        isEnd: [...l ? l.isEnd : [], c === s.length - 1]
+      });
+      return d.push(g), t === !0 || f.has(p) ? g.children = u(a[i] || [], g) : g.children = [], g;
+    });
+  }
+  return u(e), d;
+}
+function Q(e, t, n) {
+  let r = {};
+  typeof n == "object" ? r = n : r = {
+    externalGetKey: n
+  }, r = r || {};
+  const {
+    childrenPropName: o,
+    externalGetKey: i,
+    fieldNames: f
+  } = r, {
+    key: d,
+    children: u
+  } = j(f), s = o || u;
+  let l;
+  i ? typeof i == "string" ? l = (c) => c[i] : typeof i == "function" && (l = (c) => i(c)) : l = (c, h) => T(c[d], h);
+  function a(c, h, p, b) {
+    const g = c ? c[s] : e, y = c ? D(p.pos, h) : "0", S = c ? [...b, c] : [];
+    if (c) {
+      const C = l(c, y), m = {
+        node: c,
+        index: h,
+        pos: y,
+        key: C,
+        parentPos: p.node ? p.pos : null,
+        level: p.level + 1,
+        nodes: S
+      };
+      t(m);
+    }
+    g && g.forEach((C, m) => {
+      a(C, m, {
+        node: c,
+        pos: y,
+        level: p ? p.level + 1 : -1
+      }, S);
+    });
+  }
+  a(null);
+}
+function ge(e) {
+  let {
+    initWrapper: t,
+    processEntity: n,
+    onProcessFinished: r,
+    externalGetKey: o,
+    childrenPropName: i,
+    fieldNames: f
+  } = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {}, d = arguments.length > 2 ? arguments[2] : void 0;
+  const u = o || d, s = {}, l = {};
+  let a = {
+    posEntities: s,
+    keyEntities: l
+  };
+  return t && (a = t(a) || a), Q(e, (c) => {
+    const {
+      node: h,
+      index: p,
+      pos: b,
+      key: g,
+      parentPos: y,
+      level: S,
+      nodes: C
+    } = c, m = {
+      node: h,
+      nodes: C,
+      index: p,
+      key: g,
+      pos: b,
+      level: S
+    }, $ = T(g, b);
+    s[b] = m, l[$] = m, m.parent = s[y], m.parent && (m.parent.children = m.parent.children || [], m.parent.children.push(m)), n && n(m, a);
+  }, {
+    externalGetKey: u,
+    childrenPropName: i,
+    fieldNames: f
+  }), r && r(a), a;
+}
+function be(e, t) {
+  let {
+    expandedKeysSet: n,
+    selectedKeysSet: r,
+    loadedKeysSet: o,
+    loadingKeysSet: i,
+    checkedKeysSet: f,
+    halfCheckedKeysSet: d,
+    dragOverNodeKey: u,
+    dropPosition: s,
+    keyEntities: l
+  } = t;
+  const a = l[e];
+  return {
+    eventKey: e,
+    expanded: n.has(e),
+    selected: r.has(e),
+    loaded: o.has(e),
+    loading: i.has(e),
+    checked: f.has(e),
+    halfChecked: d.has(e),
+    pos: String(a ? a.pos : ""),
+    parent: a.parent,
+    // [Legacy] Drag props
+    // Since the interaction of drag is changed, the semantic of the props are
+    // not accuracy, I think it should be finally removed
+    dragOver: u === e && s === 0,
+    dragOverGapTop: u === e && s === -1,
+    dragOverGapBottom: u === e && s === 1
+  };
+}
+function me(e) {
+  const {
+    data: t,
+    expanded: n,
+    selected: r,
+    checked: o,
+    loaded: i,
+    loading: f,
+    halfChecked: d,
+    dragOver: u,
+    dragOverGapTop: s,
+    dragOverGapBottom: l,
+    pos: a,
+    active: c,
+    eventKey: h
+  } = e, p = v(v({
+    dataRef: t
+  }, t), {
+    expanded: n,
+    selected: r,
+    checked: o,
+    loaded: i,
+    loading: f,
+    halfChecked: d,
+    dragOver: u,
+    dragOverGapTop: s,
+    dragOverGapBottom: l,
+    pos: a,
+    active: c,
+    eventKey: h,
+    key: h
+  });
+  return "props" in p || Object.defineProperty(p, "props", {
+    get() {
+      return N(!1, "Second param return from event is node data instead of TreeNode instance. Please read value directly instead of reading from `props`."), e;
+    }
+  }), p;
+}
+function _(e, t) {
+  const n = /* @__PURE__ */ new Set();
+  return e.forEach((r) => {
+    t.has(r) || n.add(r);
+  }), n;
+}
+function Z(e) {
+  const {
+    disabled: t,
+    disableCheckbox: n,
+    checkable: r
+  } = e || {};
+  return !!(t || n) || r === !1;
+}
+function ee(e, t, n, r) {
+  const o = new Set(e), i = /* @__PURE__ */ new Set();
+  for (let d = 0; d <= n; d += 1)
+    (t.get(d) || /* @__PURE__ */ new Set()).forEach((s) => {
+      const {
+        key: l,
+        node: a,
+        children: c = []
+      } = s;
+      o.has(l) && !r(a) && c.filter((h) => !r(h.node)).forEach((h) => {
+        o.add(h.key);
+      });
+    });
+  const f = /* @__PURE__ */ new Set();
+  for (let d = n; d >= 0; d -= 1)
+    (t.get(d) || /* @__PURE__ */ new Set()).forEach((s) => {
+      const {
+        parent: l,
+        node: a
+      } = s;
+      if (r(a) || !s.parent || f.has(s.parent.key))
+        return;
+      if (r(s.parent.node)) {
+        f.add(l.key);
+        return;
+      }
+      let c = !0, h = !1;
+      (l.children || []).filter((p) => !r(p.node)).forEach((p) => {
+        let {
+          key: b
+        } = p;
+        const g = o.has(b);
+        c && !g && (c = !1), !h && (g || i.has(b)) && (h = !0);
+      }), c && o.add(l.key), h && i.add(l.key), f.add(l.key);
+    });
+  return {
+    checkedKeys: Array.from(o),
+    halfCheckedKeys: Array.from(_(i, o))
+  };
+}
+function te(e, t, n, r, o) {
+  const i = new Set(e);
+  let f = new Set(t);
+  for (let u = 0; u <= r; u += 1)
+    (n.get(u) || /* @__PURE__ */ new Set()).forEach((l) => {
+      const {
+        key: a,
+        node: c,
+        children: h = []
+      } = l;
+      !i.has(a) && !f.has(a) && !o(c) && h.filter((p) => !o(p.node)).forEach((p) => {
+        i.delete(p.key);
+      });
+    });
+  f = /* @__PURE__ */ new Set();
+  const d = /* @__PURE__ */ new Set();
+  for (let u = r; u >= 0; u -= 1)
+    (n.get(u) || /* @__PURE__ */ new Set()).forEach((l) => {
+      const {
+        parent: a,
+        node: c
+      } = l;
+      if (o(c) || !l.parent || d.has(l.parent.key))
+        return;
+      if (o(l.parent.node)) {
+        d.add(a.key);
+        return;
+      }
+      let h = !0, p = !1;
+      (a.children || []).filter((b) => !o(b.node)).forEach((b) => {
+        let {
+          key: g
+        } = b;
+        const y = i.has(g);
+        h && !y && (h = !1), !p && (y || f.has(g)) && (p = !0);
+      }), h || i.delete(a.key), p && f.add(a.key), d.add(a.key);
+    });
+  return {
+    checkedKeys: Array.from(i),
+    halfCheckedKeys: Array.from(_(f, i))
+  };
+}
+function ve(e, t, n, r, o, i) {
+  const f = [];
+  let d;
+  d = Z;
+  const u = new Set(e.filter((l) => {
+    const a = !!n[l];
+    return a || f.push(l), a;
+  }));
+  L(!f.length, `Tree missing follow keys: ${f.slice(0, 100).map((l) => `'${l}'`).join(", ")}`);
+  let s;
+  return t === !0 ? s = ee(u, o, r, d) : s = te(u, t.halfCheckedKeys, o, r, d), s;
+}
+function Se(e) {
+  const t = H(0), n = X();
+  return U(() => {
+    const r = /* @__PURE__ */ new Map();
+    let o = 0;
+    const i = e.value || {};
+    for (const f in i)
+      if (Object.prototype.hasOwnProperty.call(i, f)) {
+        const d = i[f], {
+          level: u
+        } = d;
+        let s = r.get(u);
+        s || (s = /* @__PURE__ */ new Set(), r.set(u, s)), s.add(d), o = Math.max(o, u);
+      }
+    t.value = o, n.value = r;
+  }), {
+    maxLevel: t,
+    levelEntities: n
+  };
+}
+const ne = new W("antCheckboxEffect", {
+  "0%": {
+    transform: "scale(1)",
+    opacity: 0.5
+  },
+  "100%": {
+    transform: "scale(1.6)",
+    opacity: 0
+  }
+}), re = (e) => {
+  const {
+    checkboxCls: t
+  } = e, n = `${t}-wrapper`;
+  return [
+    // ===================== Basic =====================
+    {
+      // Group
+      [`${t}-group`]: v(v({}, E(e)), {
+        display: "inline-flex",
+        flexWrap: "wrap",
+        columnGap: e.marginXS,
+        // Group > Grid
+        [`> ${e.antCls}-row`]: {
+          flex: 1
+        }
+      }),
+      // Wrapper
+      [n]: v(v({}, E(e)), {
+        display: "inline-flex",
+        alignItems: "baseline",
+        cursor: "pointer",
+        // Fix checkbox & radio in flex align #30260
+        "&:after": {
+          display: "inline-block",
+          width: 0,
+          overflow: "hidden",
+          content: "'\\a0'"
+        },
+        // Checkbox near checkbox
+        [`& + ${n}`]: {
+          marginInlineStart: 0
+        },
+        [`&${n}-in-form-item`]: {
+          'input[type="checkbox"]': {
+            width: 14,
+            height: 14
+            // FIXME: magic
+          }
+        }
+      }),
+      // Wrapper > Checkbox
+      [t]: v(v({}, E(e)), {
+        position: "relative",
+        whiteSpace: "nowrap",
+        lineHeight: 1,
+        cursor: "pointer",
+        // To make alignment right when `controlHeight` is changed
+        // Ref: https://github.com/ant-design/ant-design/issues/41564
+        alignSelf: "center",
+        // Wrapper > Checkbox > input
+        [`${t}-input`]: {
+          position: "absolute",
+          // Since baseline align will get additional space offset,
+          // we need to move input to top to make it align with text.
+          // Ref: https://github.com/ant-design/ant-design/issues/38926#issuecomment-1486137799
+          inset: 0,
+          zIndex: 1,
+          cursor: "pointer",
+          opacity: 0,
+          margin: 0,
+          [`&:focus-visible + ${t}-inner`]: v({}, G(e))
+        },
+        // Wrapper > Checkbox > inner
+        [`${t}-inner`]: {
+          boxSizing: "border-box",
+          position: "relative",
+          top: 0,
+          insetInlineStart: 0,
+          display: "block",
+          width: e.checkboxSize,
+          height: e.checkboxSize,
+          direction: "ltr",
+          backgroundColor: e.colorBgContainer,
+          border: `${e.lineWidth}px ${e.lineType} ${e.colorBorder}`,
+          borderRadius: e.borderRadiusSM,
+          borderCollapse: "separate",
+          transition: `all ${e.motionDurationSlow}`,
+          "&:after": {
+            boxSizing: "border-box",
+            position: "absolute",
+            top: "50%",
+            insetInlineStart: "21.5%",
+            display: "table",
+            width: e.checkboxSize / 14 * 5,
+            height: e.checkboxSize / 14 * 8,
+            border: `${e.lineWidthBold}px solid ${e.colorWhite}`,
+            borderTop: 0,
+            borderInlineStart: 0,
+            transform: "rotate(45deg) scale(0) translate(-50%,-50%)",
+            opacity: 0,
+            content: '""',
+            transition: `all ${e.motionDurationFast} ${e.motionEaseInBack}, opacity ${e.motionDurationFast}`
+          }
+        },
+        // Wrapper > Checkbox + Text
+        "& + span": {
+          paddingInlineStart: e.paddingXS,
+          paddingInlineEnd: e.paddingXS
+        }
+      })
+    },
+    // ================= Indeterminate =================
+    {
+      [t]: {
+        "&-indeterminate": {
+          // Wrapper > Checkbox > inner
+          [`${t}-inner`]: {
+            "&:after": {
+              top: "50%",
+              insetInlineStart: "50%",
+              width: e.fontSizeLG / 2,
+              height: e.fontSizeLG / 2,
+              backgroundColor: e.colorPrimary,
+              border: 0,
+              transform: "translate(-50%, -50%) scale(1)",
+              opacity: 1,
+              content: '""'
+            }
+          }
+        }
+      }
+    },
+    // ===================== Hover =====================
+    {
+      // Wrapper
+      [`${n}:hover ${t}:after`]: {
+        visibility: "visible"
+      },
+      // Wrapper & Wrapper > Checkbox
+      [`
+        ${n}:not(${n}-disabled),
+        ${t}:not(${t}-disabled)
+      `]: {
+        [`&:hover ${t}-inner`]: {
+          borderColor: e.colorPrimary
+        }
+      },
+      [`${n}:not(${n}-disabled)`]: {
+        [`&:hover ${t}-checked:not(${t}-disabled) ${t}-inner`]: {
+          backgroundColor: e.colorPrimaryHover,
+          borderColor: "transparent"
+        },
+        [`&:hover ${t}-checked:not(${t}-disabled):after`]: {
+          borderColor: e.colorPrimaryHover
+        }
+      }
+    },
+    // ==================== Checked ====================
+    {
+      // Wrapper > Checkbox
+      [`${t}-checked`]: {
+        [`${t}-inner`]: {
+          backgroundColor: e.colorPrimary,
+          borderColor: e.colorPrimary,
+          "&:after": {
+            opacity: 1,
+            transform: "rotate(45deg) scale(1) translate(-50%,-50%)",
+            transition: `all ${e.motionDurationMid} ${e.motionEaseOutBack} ${e.motionDurationFast}`
+          }
+        },
+        // Checked Effect
+        "&:after": {
+          position: "absolute",
+          top: 0,
+          insetInlineStart: 0,
+          width: "100%",
+          height: "100%",
+          borderRadius: e.borderRadiusSM,
+          visibility: "hidden",
+          border: `${e.lineWidthBold}px solid ${e.colorPrimary}`,
+          animationName: ne,
+          animationDuration: e.motionDurationSlow,
+          animationTimingFunction: "ease-in-out",
+          animationFillMode: "backwards",
+          content: '""',
+          transition: `all ${e.motionDurationSlow}`
+        }
+      },
+      [`
+        ${n}-checked:not(${n}-disabled),
+        ${t}-checked:not(${t}-disabled)
+      `]: {
+        [`&:hover ${t}-inner`]: {
+          backgroundColor: e.colorPrimaryHover,
+          borderColor: "transparent"
+        },
+        [`&:hover ${t}:after`]: {
+          borderColor: e.colorPrimaryHover
+        }
+      }
+    },
+    // ==================== Disable ====================
+    {
+      // Wrapper
+      [`${n}-disabled`]: {
+        cursor: "not-allowed"
+      },
+      // Wrapper > Checkbox
+      [`${t}-disabled`]: {
+        // Wrapper > Checkbox > input
+        [`&, ${t}-input`]: {
+          cursor: "not-allowed",
+          // Disabled for native input to enable Tooltip event handler
+          // ref: https://github.com/ant-design/ant-design/issues/39822#issuecomment-1365075901
+          pointerEvents: "none"
+        },
+        // Wrapper > Checkbox > inner
+        [`${t}-inner`]: {
+          background: e.colorBgContainerDisabled,
+          borderColor: e.colorBorder,
+          "&:after": {
+            borderColor: e.colorTextDisabled
+          }
+        },
+        "&:after": {
+          display: "none"
+        },
+        "& + span": {
+          color: e.colorTextDisabled
+        },
+        [`&${t}-indeterminate ${t}-inner::after`]: {
+          background: e.colorTextDisabled
+        }
+      }
+    }
+  ];
+};
+function $e(e, t) {
+  const n = R(t, {
+    checkboxCls: `.${e}`,
+    checkboxSize: t.controlInteractiveSize
+  });
+  return [re(n)];
+}
+export {
+  ve as a,
+  he as b,
+  ge as c,
+  pe as d,
+  ae as e,
+  j as f,
+  $e as g,
+  be as h,
+  me as i,
+  T as j,
+  ye as k,
+  fe as l,
+  le as m,
+  ce as n,
+  de as o,
+  ue as p,
+  se as q,
+  I as r,
+  Se as u
+};

File diff suppressed because it is too large
+ 0 - 0
lib/js/index5.js


File diff suppressed because it is too large
+ 126 - 0
lib/js/index6.js


File diff suppressed because it is too large
+ 1109 - 0
lib/js/index7.js


+ 2996 - 0
lib/js/index8.js

@@ -0,0 +1,2996 @@
+import { _ as w, b5 as en, m as ue, a8 as tn, b6 as be, b7 as Ce, P as Ee, a as re, w as Ue, b8 as he, Y as nn, o as on, b as ln, K as Oe, n as an, aQ as sn, b9 as rn, ba as cn, bb as dn, i as un, g as fn, a5 as vn, I as hn, J as gn, bc as dt, M as yn } from "./index2.js";
+import { createVNode as C, cloneVNode as Et, defineComponent as Ne, reactive as _e, ref as We, watch as ie, onUnmounted as Dt, onMounted as qe, onBeforeUnmount as rt, computed as E, shallowRef as L, toRaw as it, nextTick as Ae, onUpdated as Tt, watchEffect as Pe, provide as $t, inject as Nt, getCurrentInstance as pn, Transition as mn, withDirectives as bn, vShow as Sn, Fragment as xn } from "vue";
+import { e as ut, h as Ge, i as Xe, j as Mt, b as Kn, f as kn, c as wn, d as ft, k as Cn, l as vt, u as En, p as lt, a as at, m as me, n as Dn, o as ht, q as we, r as Tn, g as $n } from "./index4.js";
+import { p as Ot } from "./pickAttrs.js";
+const Je = (e, t) => {
+  let {
+    height: n,
+    offset: o,
+    prefixCls: l,
+    onInnerResize: c
+  } = e, {
+    slots: i
+  } = t;
+  var v;
+  let S = {}, f = {
+    display: "flex",
+    flexDirection: "column"
+  };
+  return o !== void 0 && (S = {
+    height: `${n}px`,
+    position: "relative",
+    overflow: "hidden"
+  }, f = w(w({}, f), {
+    transform: `translateY(${o}px)`,
+    position: "absolute",
+    left: 0,
+    right: 0,
+    top: 0
+  })), C("div", {
+    style: S
+  }, [C(en, {
+    onResize: (K) => {
+      let {
+        offsetHeight: x
+      } = K;
+      x && c && c();
+    }
+  }, {
+    default: () => [C("div", {
+      style: f,
+      class: ue({
+        [`${l}-holder-inner`]: l
+      })
+    }, [(v = i.default) === null || v === void 0 ? void 0 : v.call(i)])]
+  })]);
+};
+Je.displayName = "Filter";
+Je.inheritAttrs = !1;
+Je.props = {
+  prefixCls: String,
+  /** Virtual filler height. Should be `count * itemMinHeight` */
+  height: Number,
+  /** Set offset of visible items. Should be the top of start item position */
+  offset: Number,
+  onInnerResize: Function
+};
+const Pt = (e, t) => {
+  let {
+    setRef: n
+  } = e, {
+    slots: o
+  } = t;
+  var l;
+  const c = tn((l = o.default) === null || l === void 0 ? void 0 : l.call(o));
+  return c && c.length ? Et(c[0], {
+    ref: n
+  }) : c;
+};
+Pt.props = {
+  setRef: {
+    type: Function,
+    default: () => {
+    }
+  }
+};
+const Nn = 20;
+function gt(e) {
+  return "touches" in e ? e.touches[0].pageY : e.pageY;
+}
+const Mn = Ne({
+  compatConfig: {
+    MODE: 3
+  },
+  name: "ScrollBar",
+  inheritAttrs: !1,
+  props: {
+    prefixCls: String,
+    scrollTop: Number,
+    scrollHeight: Number,
+    height: Number,
+    count: Number,
+    onScroll: {
+      type: Function
+    },
+    onStartMove: {
+      type: Function
+    },
+    onStopMove: {
+      type: Function
+    }
+  },
+  setup() {
+    return {
+      moveRaf: null,
+      scrollbarRef: ut(),
+      thumbRef: ut(),
+      visibleTimeout: null,
+      state: _e({
+        dragging: !1,
+        pageY: null,
+        startTop: null,
+        visible: !1
+      })
+    };
+  },
+  watch: {
+    scrollTop: {
+      handler() {
+        this.delayHidden();
+      },
+      flush: "post"
+    }
+  },
+  mounted() {
+    var e, t;
+    (e = this.scrollbarRef.current) === null || e === void 0 || e.addEventListener("touchstart", this.onScrollbarTouchStart, Ce ? {
+      passive: !1
+    } : !1), (t = this.thumbRef.current) === null || t === void 0 || t.addEventListener("touchstart", this.onMouseDown, Ce ? {
+      passive: !1
+    } : !1);
+  },
+  beforeUnmount() {
+    this.removeEvents(), clearTimeout(this.visibleTimeout);
+  },
+  methods: {
+    delayHidden() {
+      clearTimeout(this.visibleTimeout), this.state.visible = !0, this.visibleTimeout = setTimeout(() => {
+        this.state.visible = !1;
+      }, 2e3);
+    },
+    onScrollbarTouchStart(e) {
+      e.preventDefault();
+    },
+    onContainerMouseDown(e) {
+      e.stopPropagation(), e.preventDefault();
+    },
+    // ======================= Clean =======================
+    patchEvents() {
+      window.addEventListener("mousemove", this.onMouseMove), window.addEventListener("mouseup", this.onMouseUp), this.thumbRef.current.addEventListener("touchmove", this.onMouseMove, Ce ? {
+        passive: !1
+      } : !1), this.thumbRef.current.addEventListener("touchend", this.onMouseUp);
+    },
+    removeEvents() {
+      window.removeEventListener("mousemove", this.onMouseMove), window.removeEventListener("mouseup", this.onMouseUp), this.scrollbarRef.current.removeEventListener("touchstart", this.onScrollbarTouchStart, Ce ? {
+        passive: !1
+      } : !1), this.thumbRef.current && (this.thumbRef.current.removeEventListener("touchstart", this.onMouseDown, Ce ? {
+        passive: !1
+      } : !1), this.thumbRef.current.removeEventListener("touchmove", this.onMouseMove, Ce ? {
+        passive: !1
+      } : !1), this.thumbRef.current.removeEventListener("touchend", this.onMouseUp)), be.cancel(this.moveRaf);
+    },
+    // ======================= Thumb =======================
+    onMouseDown(e) {
+      const {
+        onStartMove: t
+      } = this.$props;
+      w(this.state, {
+        dragging: !0,
+        pageY: gt(e),
+        startTop: this.getTop()
+      }), t(), this.patchEvents(), e.stopPropagation(), e.preventDefault();
+    },
+    onMouseMove(e) {
+      const {
+        dragging: t,
+        pageY: n,
+        startTop: o
+      } = this.state, {
+        onScroll: l
+      } = this.$props;
+      if (be.cancel(this.moveRaf), t) {
+        const c = gt(e) - n, i = o + c, v = this.getEnableScrollRange(), S = this.getEnableHeightRange(), f = S ? i / S : 0, K = Math.ceil(f * v);
+        this.moveRaf = be(() => {
+          l(K);
+        });
+      }
+    },
+    onMouseUp() {
+      const {
+        onStopMove: e
+      } = this.$props;
+      this.state.dragging = !1, e(), this.removeEvents();
+    },
+    // ===================== Calculate =====================
+    getSpinHeight() {
+      const {
+        height: e,
+        scrollHeight: t
+      } = this.$props;
+      let n = e / t * 100;
+      return n = Math.max(n, Nn), n = Math.min(n, e / 2), Math.floor(n);
+    },
+    getEnableScrollRange() {
+      const {
+        scrollHeight: e,
+        height: t
+      } = this.$props;
+      return e - t || 0;
+    },
+    getEnableHeightRange() {
+      const {
+        height: e
+      } = this.$props, t = this.getSpinHeight();
+      return e - t || 0;
+    },
+    getTop() {
+      const {
+        scrollTop: e
+      } = this.$props, t = this.getEnableScrollRange(), n = this.getEnableHeightRange();
+      return e === 0 || t === 0 ? 0 : e / t * n;
+    },
+    // Not show scrollbar when height is large than scrollHeight
+    showScroll() {
+      const {
+        height: e,
+        scrollHeight: t
+      } = this.$props;
+      return t > e;
+    }
+  },
+  render() {
+    const {
+      dragging: e,
+      visible: t
+    } = this.state, {
+      prefixCls: n
+    } = this.$props, o = this.getSpinHeight() + "px", l = this.getTop() + "px", c = this.showScroll(), i = c && t;
+    return C("div", {
+      ref: this.scrollbarRef,
+      class: ue(`${n}-scrollbar`, {
+        [`${n}-scrollbar-show`]: c
+      }),
+      style: {
+        width: "8px",
+        top: 0,
+        bottom: 0,
+        right: 0,
+        position: "absolute",
+        display: i ? void 0 : "none"
+      },
+      onMousedown: this.onContainerMouseDown,
+      onMousemove: this.delayHidden
+    }, [C("div", {
+      ref: this.thumbRef,
+      class: ue(`${n}-scrollbar-thumb`, {
+        [`${n}-scrollbar-thumb-moving`]: e
+      }),
+      style: {
+        width: "100%",
+        height: o,
+        top: l,
+        left: 0,
+        position: "absolute",
+        background: "rgba(0, 0, 0, 0.5)",
+        borderRadius: "99px",
+        cursor: "pointer",
+        userSelect: "none"
+      },
+      onMousedown: this.onMouseDown
+    }, null)]);
+  }
+});
+function On(e, t, n, o) {
+  const l = /* @__PURE__ */ new Map(), c = /* @__PURE__ */ new Map(), i = We(Symbol("update"));
+  ie(e, () => {
+    i.value = Symbol("update");
+  });
+  let v;
+  function S() {
+    be.cancel(v);
+  }
+  function f() {
+    S(), v = be(() => {
+      l.forEach((x, m) => {
+        if (x && x.offsetParent) {
+          const {
+            offsetHeight: D
+          } = x;
+          c.get(m) !== D && (i.value = Symbol("update"), c.set(m, x.offsetHeight));
+        }
+      });
+    });
+  }
+  function K(x, m) {
+    const D = t(x);
+    l.get(D), m ? (l.set(D, m.$el || m), f()) : l.delete(D);
+  }
+  return Dt(() => {
+    S();
+  }), [K, f, c, i];
+}
+function Pn(e, t, n, o, l, c, i, v) {
+  let S;
+  return (f) => {
+    if (f == null) {
+      v();
+      return;
+    }
+    be.cancel(S);
+    const K = t.value, x = o.itemHeight;
+    if (typeof f == "number")
+      i(f);
+    else if (f && typeof f == "object") {
+      let m;
+      const {
+        align: D
+      } = f;
+      "index" in f ? {
+        index: m
+      } = f : m = K.findIndex((N) => l(N) === f.key);
+      const {
+        offset: j = 0
+      } = f, y = (N, O) => {
+        if (N < 0 || !e.value) return;
+        const V = e.value.clientHeight;
+        let T = !1, Y = O;
+        if (V) {
+          const B = O || D;
+          let Q = 0, q = 0, A = 0;
+          const G = Math.min(K.length, m);
+          for (let U = 0; U <= G; U += 1) {
+            const ee = l(K[U]);
+            q = Q;
+            const le = n.get(ee);
+            A = q + (le === void 0 ? x : le), Q = A, U === m && le === void 0 && (T = !0);
+          }
+          const Z = e.value.scrollTop;
+          let z = null;
+          switch (B) {
+            case "top":
+              z = q - j;
+              break;
+            case "bottom":
+              z = A - V + j;
+              break;
+            default: {
+              const U = Z + V;
+              q < Z ? Y = "top" : A > U && (Y = "bottom");
+            }
+          }
+          z !== null && z !== Z && i(z);
+        }
+        S = be(() => {
+          T && c(), y(N - 1, Y);
+        }, 2);
+      };
+      y(5);
+    }
+  };
+}
+const In = typeof navigator == "object" && /Firefox/i.test(navigator.userAgent), It = (e, t) => {
+  let n = !1, o = null;
+  function l() {
+    clearTimeout(o), n = !0, o = setTimeout(() => {
+      n = !1;
+    }, 50);
+  }
+  return function(c) {
+    let i = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : !1;
+    const v = (
+      // Pass origin wheel when on the top
+      c < 0 && e.value || // Pass origin wheel when on the bottom
+      c > 0 && t.value
+    );
+    return i && v ? (clearTimeout(o), n = !1) : (!v || n) && l(), !n && v;
+  };
+};
+function Ln(e, t, n, o) {
+  let l = 0, c = null, i = null, v = !1;
+  const S = It(t, n);
+  function f(x) {
+    if (!e.value) return;
+    be.cancel(c);
+    const {
+      deltaY: m
+    } = x;
+    l += m, i = m, !S(m) && (In || x.preventDefault(), c = be(() => {
+      o(l * (v ? 10 : 1)), l = 0;
+    }));
+  }
+  function K(x) {
+    e.value && (v = x.detail === i);
+  }
+  return [f, K];
+}
+const Hn = 14 / 15;
+function Rn(e, t, n) {
+  let o = !1, l = 0, c = null, i = null;
+  const v = () => {
+    c && (c.removeEventListener("touchmove", S), c.removeEventListener("touchend", f));
+  }, S = (m) => {
+    if (o) {
+      const D = Math.ceil(m.touches[0].pageY);
+      let j = l - D;
+      l = D, n(j) && m.preventDefault(), clearInterval(i), i = setInterval(() => {
+        j *= Hn, (!n(j, !0) || Math.abs(j) <= 0.1) && clearInterval(i);
+      }, 16);
+    }
+  }, f = () => {
+    o = !1, v();
+  }, K = (m) => {
+    v(), m.touches.length === 1 && !o && (o = !0, l = Math.ceil(m.touches[0].pageY), c = m.target, c.addEventListener("touchmove", S, {
+      passive: !1
+    }), c.addEventListener("touchend", f));
+  }, x = () => {
+  };
+  qe(() => {
+    document.addEventListener("touchmove", x, {
+      passive: !1
+    }), ie(e, (m) => {
+      t.value.removeEventListener("touchstart", K), v(), clearInterval(i), m && t.value.addEventListener("touchstart", K, {
+        passive: !1
+      });
+    }, {
+      immediate: !0
+    });
+  }), rt(() => {
+    document.removeEventListener("touchmove", x);
+  });
+}
+var Fn = function(e, t) {
+  var n = {};
+  for (var o in e) Object.prototype.hasOwnProperty.call(e, o) && t.indexOf(o) < 0 && (n[o] = e[o]);
+  if (e != null && typeof Object.getOwnPropertySymbols == "function") for (var l = 0, o = Object.getOwnPropertySymbols(e); l < o.length; l++)
+    t.indexOf(o[l]) < 0 && Object.prototype.propertyIsEnumerable.call(e, o[l]) && (n[o[l]] = e[o[l]]);
+  return n;
+};
+const An = [], _n = {
+  overflowY: "auto",
+  overflowAnchor: "none"
+};
+function Bn(e, t, n, o, l, c) {
+  let {
+    getKey: i
+  } = c;
+  return e.slice(t, n + 1).map((v, S) => {
+    const f = t + S, K = l(v, f, {
+      // style: status === 'MEASURE_START' ? { visibility: 'hidden' } : {},
+    }), x = i(v);
+    return C(Pt, {
+      key: x,
+      setRef: (m) => o(v, m)
+    }, {
+      default: () => [K]
+    });
+  });
+}
+const jn = Ne({
+  compatConfig: {
+    MODE: 3
+  },
+  name: "List",
+  inheritAttrs: !1,
+  props: {
+    prefixCls: String,
+    data: Ee.array,
+    height: Number,
+    itemHeight: Number,
+    /** If not match virtual scroll condition, Set List still use height of container. */
+    fullHeight: {
+      type: Boolean,
+      default: void 0
+    },
+    itemKey: {
+      type: [String, Number, Function],
+      required: !0
+    },
+    component: {
+      type: [String, Object]
+    },
+    /** Set `false` will always use real scroll instead of virtual one */
+    virtual: {
+      type: Boolean,
+      default: void 0
+    },
+    children: Function,
+    onScroll: Function,
+    onMousedown: Function,
+    onMouseenter: Function,
+    onVisibleChange: Function
+  },
+  setup(e, t) {
+    let {
+      expose: n
+    } = t;
+    const o = E(() => {
+      const {
+        height: h,
+        itemHeight: b,
+        virtual: H
+      } = e;
+      return !!(H !== !1 && h && b);
+    }), l = E(() => {
+      const {
+        height: h,
+        itemHeight: b,
+        data: H
+      } = e;
+      return o.value && H && b * H.length > h;
+    }), c = _e({
+      scrollTop: 0,
+      scrollMoving: !1
+    }), i = E(() => e.data || An), v = L([]);
+    ie(i, () => {
+      v.value = it(i.value).slice();
+    }, {
+      immediate: !0
+    });
+    const S = L((h) => {
+    });
+    ie(() => e.itemKey, (h) => {
+      typeof h == "function" ? S.value = h : S.value = (b) => b == null ? void 0 : b[h];
+    }, {
+      immediate: !0
+    });
+    const f = L(), K = L(), x = L(), m = (h) => S.value(h), D = {
+      getKey: m
+    };
+    function j(h) {
+      let b;
+      typeof h == "function" ? b = h(c.scrollTop) : b = h;
+      const H = Q(b);
+      f.value && (f.value.scrollTop = H), c.scrollTop = H;
+    }
+    const [y, N, O, V] = On(v, m), T = _e({
+      scrollHeight: void 0,
+      start: 0,
+      end: 0,
+      offset: void 0
+    }), Y = L(0);
+    qe(() => {
+      Ae(() => {
+        var h;
+        Y.value = ((h = K.value) === null || h === void 0 ? void 0 : h.offsetHeight) || 0;
+      });
+    }), Tt(() => {
+      Ae(() => {
+        var h;
+        Y.value = ((h = K.value) === null || h === void 0 ? void 0 : h.offsetHeight) || 0;
+      });
+    }), ie([o, v], () => {
+      o.value || w(T, {
+        scrollHeight: void 0,
+        start: 0,
+        end: v.value.length - 1,
+        offset: void 0
+      });
+    }, {
+      immediate: !0
+    }), ie([o, v, Y, l], () => {
+      o.value && !l.value && w(T, {
+        scrollHeight: Y.value,
+        start: 0,
+        end: v.value.length - 1,
+        offset: void 0
+      }), f.value && (c.scrollTop = f.value.scrollTop);
+    }, {
+      immediate: !0
+    }), ie([l, o, () => c.scrollTop, v, V, () => e.height, Y], () => {
+      if (!o.value || !l.value)
+        return;
+      let h = 0, b, H, X;
+      const de = v.value.length, ge = v.value, ye = c.scrollTop, {
+        itemHeight: xe,
+        height: Me
+      } = e, Ie = ye + Me;
+      for (let pe = 0; pe < de; pe += 1) {
+        const Le = ge[pe], He = m(Le);
+        let Ke = O.get(He);
+        Ke === void 0 && (Ke = xe);
+        const De = h + Ke;
+        b === void 0 && De >= ye && (b = pe, H = h), X === void 0 && De > Ie && (X = pe), h = De;
+      }
+      b === void 0 && (b = 0, H = 0, X = Math.ceil(Me / xe)), X === void 0 && (X = de - 1), X = Math.min(X + 1, de), w(T, {
+        scrollHeight: h,
+        start: b,
+        end: X,
+        offset: H
+      });
+    }, {
+      immediate: !0
+    });
+    const B = E(() => T.scrollHeight - e.height);
+    function Q(h) {
+      let b = h;
+      return Number.isNaN(B.value) || (b = Math.min(b, B.value)), b = Math.max(b, 0), b;
+    }
+    const q = E(() => c.scrollTop <= 0), A = E(() => c.scrollTop >= B.value), G = It(q, A);
+    function Z(h) {
+      j(h);
+    }
+    function z(h) {
+      var b;
+      const {
+        scrollTop: H
+      } = h.currentTarget;
+      H !== c.scrollTop && j(H), (b = e.onScroll) === null || b === void 0 || b.call(e, h);
+    }
+    const [U, ee] = Ln(o, q, A, (h) => {
+      j((b) => b + h);
+    });
+    Rn(o, f, (h, b) => G(h, b) ? !1 : (U({
+      preventDefault() {
+      },
+      deltaY: h
+    }), !0));
+    function le(h) {
+      o.value && h.preventDefault();
+    }
+    const se = () => {
+      f.value && (f.value.removeEventListener("wheel", U, Ce ? {
+        passive: !1
+      } : !1), f.value.removeEventListener("DOMMouseScroll", ee), f.value.removeEventListener("MozMousePixelScroll", le));
+    };
+    Pe(() => {
+      Ae(() => {
+        f.value && (se(), f.value.addEventListener("wheel", U, Ce ? {
+          passive: !1
+        } : !1), f.value.addEventListener("DOMMouseScroll", ee), f.value.addEventListener("MozMousePixelScroll", le));
+      });
+    }), rt(() => {
+      se();
+    });
+    const Se = Pn(f, v, O, e, m, N, j, () => {
+      var h;
+      (h = x.value) === null || h === void 0 || h.delayHidden();
+    });
+    n({
+      scrollTo: Se
+    });
+    const ce = E(() => {
+      let h = null;
+      return e.height && (h = w({
+        [e.fullHeight ? "height" : "maxHeight"]: e.height + "px"
+      }, _n), o.value && (h.overflowY = "hidden", c.scrollMoving && (h.pointerEvents = "none"))), h;
+    });
+    return ie([() => T.start, () => T.end, v], () => {
+      if (e.onVisibleChange) {
+        const h = v.value.slice(T.start, T.end + 1);
+        e.onVisibleChange(h, v.value);
+      }
+    }, {
+      flush: "post"
+    }), {
+      state: c,
+      mergedData: v,
+      componentStyle: ce,
+      onFallbackScroll: z,
+      onScrollBar: Z,
+      componentRef: f,
+      useVirtual: o,
+      calRes: T,
+      collectHeight: N,
+      setInstance: y,
+      sharedConfig: D,
+      scrollBarRef: x,
+      fillerInnerRef: K,
+      delayHideScrollBar: () => {
+        var h;
+        (h = x.value) === null || h === void 0 || h.delayHidden();
+      }
+    };
+  },
+  render() {
+    const e = w(w({}, this.$props), this.$attrs), {
+      prefixCls: t = "rc-virtual-list",
+      height: n,
+      itemHeight: o,
+      // eslint-disable-next-line no-unused-vars
+      fullHeight: l,
+      data: c,
+      itemKey: i,
+      virtual: v,
+      component: S = "div",
+      onScroll: f,
+      children: K = this.$slots.default,
+      style: x,
+      class: m
+    } = e, D = Fn(e, ["prefixCls", "height", "itemHeight", "fullHeight", "data", "itemKey", "virtual", "component", "onScroll", "children", "style", "class"]), j = ue(t, m), {
+      scrollTop: y
+    } = this.state, {
+      scrollHeight: N,
+      offset: O,
+      start: V,
+      end: T
+    } = this.calRes, {
+      componentStyle: Y,
+      onFallbackScroll: B,
+      onScrollBar: Q,
+      useVirtual: q,
+      collectHeight: A,
+      sharedConfig: G,
+      setInstance: Z,
+      mergedData: z,
+      delayHideScrollBar: U
+    } = this;
+    return C("div", re({
+      style: w(w({}, x), {
+        position: "relative"
+      }),
+      class: j
+    }, D), [C(S, {
+      class: `${t}-holder`,
+      style: Y,
+      ref: "componentRef",
+      onScroll: B,
+      onMouseenter: U
+    }, {
+      default: () => [C(Je, {
+        prefixCls: t,
+        height: N,
+        offset: O,
+        onInnerResize: A,
+        ref: "fillerInnerRef"
+      }, {
+        default: () => Bn(z, V, T, Z, K, G)
+      })]
+    }), q && C(Mn, {
+      ref: "scrollBarRef",
+      prefixCls: t,
+      scrollTop: y,
+      height: n,
+      scrollHeight: N,
+      count: z.length,
+      onScroll: Q,
+      onStartMove: () => {
+        this.state.scrollMoving = !0;
+      },
+      onStopMove: () => {
+        this.state.scrollMoving = !1;
+      }
+    }, null)]);
+  }
+}), Lt = Symbol("TreeContextKey"), Yn = Ne({
+  compatConfig: {
+    MODE: 3
+  },
+  name: "TreeContext",
+  props: {
+    value: {
+      type: Object
+    }
+  },
+  setup(e, t) {
+    let {
+      slots: n
+    } = t;
+    return $t(Lt, E(() => e.value)), () => {
+      var o;
+      return (o = n.default) === null || o === void 0 ? void 0 : o.call(n);
+    };
+  }
+}), ct = () => Nt(Lt, E(() => ({}))), Ht = Symbol("KeysStateKey"), zn = (e) => {
+  $t(Ht, e);
+}, Rt = () => Nt(Ht, {
+  expandedKeys: L([]),
+  selectedKeys: L([]),
+  loadedKeys: L([]),
+  loadingKeys: L([]),
+  checkedKeys: L([]),
+  halfCheckedKeys: L([]),
+  expandedKeysSet: E(() => /* @__PURE__ */ new Set()),
+  selectedKeysSet: E(() => /* @__PURE__ */ new Set()),
+  loadedKeysSet: E(() => /* @__PURE__ */ new Set()),
+  loadingKeysSet: E(() => /* @__PURE__ */ new Set()),
+  checkedKeysSet: E(() => /* @__PURE__ */ new Set()),
+  halfCheckedKeysSet: E(() => /* @__PURE__ */ new Set()),
+  flattenNodes: L([])
+}), Vn = (e) => {
+  let {
+    prefixCls: t,
+    level: n,
+    isStart: o,
+    isEnd: l
+  } = e;
+  const c = `${t}-indent-unit`, i = [];
+  for (let v = 0; v < n; v += 1)
+    i.push(C("span", {
+      key: v,
+      class: {
+        [c]: !0,
+        [`${c}-start`]: o[v],
+        [`${c}-end`]: l[v]
+      }
+    }, null));
+  return C("span", {
+    "aria-hidden": "true",
+    class: `${t}-indent`
+  }, [i]);
+}, Ft = {
+  eventKey: [String, Number],
+  prefixCls: String,
+  // By parent
+  // expanded: { type: Boolean, default: undefined },
+  // selected: { type: Boolean, default: undefined },
+  // checked: { type: Boolean, default: undefined },
+  // loaded: { type: Boolean, default: undefined },
+  // loading: { type: Boolean, default: undefined },
+  // halfChecked: { type: Boolean, default: undefined },
+  // dragOver: { type: Boolean, default: undefined },
+  // dragOverGapTop: { type: Boolean, default: undefined },
+  // dragOverGapBottom: { type: Boolean, default: undefined },
+  // pos: String,
+  title: Ee.any,
+  /** New added in Tree for easy data access */
+  data: {
+    type: Object,
+    default: void 0
+  },
+  parent: {
+    type: Object,
+    default: void 0
+  },
+  isStart: {
+    type: Array
+  },
+  isEnd: {
+    type: Array
+  },
+  active: {
+    type: Boolean,
+    default: void 0
+  },
+  onMousemove: {
+    type: Function
+  },
+  // By user
+  isLeaf: {
+    type: Boolean,
+    default: void 0
+  },
+  checkable: {
+    type: Boolean,
+    default: void 0
+  },
+  selectable: {
+    type: Boolean,
+    default: void 0
+  },
+  disabled: {
+    type: Boolean,
+    default: void 0
+  },
+  disableCheckbox: {
+    type: Boolean,
+    default: void 0
+  },
+  icon: Ee.any,
+  switcherIcon: Ee.any,
+  domRef: {
+    type: Function
+  }
+}, Un = {
+  prefixCls: {
+    type: String
+  },
+  // data: { type: Array as PropType<FlattenNode[]> },
+  motion: {
+    type: Object
+  },
+  focusable: {
+    type: Boolean
+  },
+  activeItem: {
+    type: Object
+  },
+  focused: {
+    type: Boolean
+  },
+  tabindex: {
+    type: Number
+  },
+  checkable: {
+    type: Boolean
+  },
+  selectable: {
+    type: Boolean
+  },
+  disabled: {
+    type: Boolean
+  },
+  // expandedKeys: { type: Array as PropType<Key[]> },
+  // selectedKeys: { type: Array as PropType<Key[]> },
+  // checkedKeys: { type: Array as PropType<Key[]> },
+  // loadedKeys: { type: Array as PropType<Key[]> },
+  // loadingKeys: { type: Array as PropType<Key[]> },
+  // halfCheckedKeys: { type: Array as PropType<Key[]> },
+  // keyEntities: { type: Object as PropType<Record<Key, DataEntity<DataNode>>> },
+  // dragging: { type: Boolean as PropType<boolean> },
+  // dragOverNodeKey: { type: [String, Number] as PropType<Key> },
+  // dropPosition: { type: Number as PropType<number> },
+  // Virtual list
+  height: {
+    type: Number
+  },
+  itemHeight: {
+    type: Number
+  },
+  virtual: {
+    type: Boolean
+  },
+  onScroll: {
+    type: Function
+  },
+  onKeydown: {
+    type: Function
+  },
+  onFocus: {
+    type: Function
+  },
+  onBlur: {
+    type: Function
+  },
+  onActiveChange: {
+    type: Function
+  },
+  onContextmenu: {
+    type: Function
+  },
+  onListChangeStart: {
+    type: Function
+  },
+  onListChangeEnd: {
+    type: Function
+  }
+}, Wn = () => ({
+  prefixCls: String,
+  focusable: {
+    type: Boolean,
+    default: void 0
+  },
+  activeKey: [Number, String],
+  tabindex: Number,
+  children: Ee.any,
+  treeData: {
+    type: Array
+  },
+  fieldNames: {
+    type: Object
+  },
+  showLine: {
+    type: [Boolean, Object],
+    default: void 0
+  },
+  showIcon: {
+    type: Boolean,
+    default: void 0
+  },
+  icon: Ee.any,
+  selectable: {
+    type: Boolean,
+    default: void 0
+  },
+  expandAction: [String, Boolean],
+  disabled: {
+    type: Boolean,
+    default: void 0
+  },
+  multiple: {
+    type: Boolean,
+    default: void 0
+  },
+  checkable: {
+    type: Boolean,
+    default: void 0
+  },
+  checkStrictly: {
+    type: Boolean,
+    default: void 0
+  },
+  draggable: {
+    type: [Function, Boolean]
+  },
+  defaultExpandParent: {
+    type: Boolean,
+    default: void 0
+  },
+  autoExpandParent: {
+    type: Boolean,
+    default: void 0
+  },
+  defaultExpandAll: {
+    type: Boolean,
+    default: void 0
+  },
+  defaultExpandedKeys: {
+    type: Array
+  },
+  expandedKeys: {
+    type: Array
+  },
+  defaultCheckedKeys: {
+    type: Array
+  },
+  checkedKeys: {
+    type: [Object, Array]
+  },
+  defaultSelectedKeys: {
+    type: Array
+  },
+  selectedKeys: {
+    type: Array
+  },
+  allowDrop: {
+    type: Function
+  },
+  dropIndicatorRender: {
+    type: Function
+  },
+  onFocus: {
+    type: Function
+  },
+  onBlur: {
+    type: Function
+  },
+  onKeydown: {
+    type: Function
+  },
+  onContextmenu: {
+    type: Function
+  },
+  onClick: {
+    type: Function
+  },
+  onDblclick: {
+    type: Function
+  },
+  onScroll: {
+    type: Function
+  },
+  onExpand: {
+    type: Function
+  },
+  onCheck: {
+    type: Function
+  },
+  onSelect: {
+    type: Function
+  },
+  onLoad: {
+    type: Function
+  },
+  loadData: {
+    type: Function
+  },
+  loadedKeys: {
+    type: Array
+  },
+  onMouseenter: {
+    type: Function
+  },
+  onMouseleave: {
+    type: Function
+  },
+  onRightClick: {
+    type: Function
+  },
+  onDragstart: {
+    type: Function
+  },
+  onDragenter: {
+    type: Function
+  },
+  onDragover: {
+    type: Function
+  },
+  onDragleave: {
+    type: Function
+  },
+  onDragend: {
+    type: Function
+  },
+  onDrop: {
+    type: Function
+  },
+  /**
+   * Used for `rc-tree-select` only.
+   * Do not use in your production code directly since this will be refactor.
+   */
+  onActiveChange: {
+    type: Function
+  },
+  filterTreeNode: {
+    type: Function
+  },
+  motion: Ee.any,
+  switcherIcon: Ee.any,
+  // Virtual List
+  height: Number,
+  itemHeight: Number,
+  virtual: {
+    type: Boolean,
+    default: void 0
+  },
+  // direction for drag logic
+  direction: {
+    type: String
+  },
+  rootClassName: String,
+  rootStyle: Object
+});
+var Gn = function(e, t) {
+  var n = {};
+  for (var o in e) Object.prototype.hasOwnProperty.call(e, o) && t.indexOf(o) < 0 && (n[o] = e[o]);
+  if (e != null && typeof Object.getOwnPropertySymbols == "function") for (var l = 0, o = Object.getOwnPropertySymbols(e); l < o.length; l++)
+    t.indexOf(o[l]) < 0 && Object.prototype.propertyIsEnumerable.call(e, o[l]) && (n[o[l]] = e[o[l]]);
+  return n;
+};
+const yt = "open", pt = "close", Xn = "---", mt = Ne({
+  compatConfig: {
+    MODE: 3
+  },
+  name: "ATreeNode",
+  inheritAttrs: !1,
+  props: Ft,
+  isTreeNode: 1,
+  setup(e, t) {
+    let {
+      attrs: n,
+      slots: o,
+      expose: l
+    } = t;
+    Ue(!("slots" in e.data), `treeData slots is deprecated, please use ${Object.keys(e.data.slots || {}).map((a) => "`v-slot:" + a + "` ")}instead`);
+    const c = L(!1), i = ct(), {
+      expandedKeysSet: v,
+      selectedKeysSet: S,
+      loadedKeysSet: f,
+      loadingKeysSet: K,
+      checkedKeysSet: x,
+      halfCheckedKeysSet: m
+    } = Rt(), {
+      dragOverNodeKey: D,
+      dropPosition: j,
+      keyEntities: y
+    } = i.value, N = E(() => Ge(e.eventKey, {
+      expandedKeysSet: v.value,
+      selectedKeysSet: S.value,
+      loadedKeysSet: f.value,
+      loadingKeysSet: K.value,
+      checkedKeysSet: x.value,
+      halfCheckedKeysSet: m.value,
+      dragOverNodeKey: D,
+      dropPosition: j,
+      keyEntities: y
+    })), O = he(() => N.value.expanded), V = he(() => N.value.selected), T = he(() => N.value.checked), Y = he(() => N.value.loaded), B = he(() => N.value.loading), Q = he(() => N.value.halfChecked), q = he(() => N.value.dragOver), A = he(() => N.value.dragOverGapTop), G = he(() => N.value.dragOverGapBottom), Z = he(() => N.value.pos), z = L(), U = E(() => {
+      const {
+        eventKey: a
+      } = e, {
+        keyEntities: d
+      } = i.value, {
+        children: R
+      } = d[a] || {};
+      return !!(R || []).length;
+    }), ee = E(() => {
+      const {
+        isLeaf: a
+      } = e, {
+        loadData: d
+      } = i.value, R = U.value;
+      return a === !1 ? !1 : a || !d && !R || d && Y.value && !R;
+    }), le = E(() => ee.value ? null : O.value ? yt : pt), se = E(() => {
+      const {
+        disabled: a
+      } = e, {
+        disabled: d
+      } = i.value;
+      return !!(d || a);
+    }), Se = E(() => {
+      const {
+        checkable: a
+      } = e, {
+        checkable: d
+      } = i.value;
+      return !d || a === !1 ? !1 : d;
+    }), ce = E(() => {
+      const {
+        selectable: a
+      } = e, {
+        selectable: d
+      } = i.value;
+      return typeof a == "boolean" ? a : d;
+    }), W = E(() => {
+      const {
+        data: a,
+        active: d,
+        checkable: R,
+        disableCheckbox: J,
+        disabled: te,
+        selectable: ne
+      } = e;
+      return w(w({
+        active: d,
+        checkable: R,
+        disableCheckbox: J,
+        disabled: te,
+        selectable: ne
+      }, a), {
+        dataRef: a,
+        data: a,
+        isLeaf: ee.value,
+        checked: T.value,
+        expanded: O.value,
+        loading: B.value,
+        selected: V.value,
+        halfChecked: Q.value
+      });
+    }), h = pn(), b = E(() => {
+      const {
+        eventKey: a
+      } = e, {
+        keyEntities: d
+      } = i.value, {
+        parent: R
+      } = d[a] || {};
+      return w(w({}, Xe(w({}, e, N.value))), {
+        parent: R
+      });
+    }), H = _e({
+      eventData: b,
+      eventKey: E(() => e.eventKey),
+      selectHandle: z,
+      pos: Z,
+      key: h.vnode.key
+    });
+    l(H);
+    const X = (a) => {
+      const {
+        onNodeDoubleClick: d
+      } = i.value;
+      d(a, b.value);
+    }, de = (a) => {
+      if (se.value) return;
+      const {
+        onNodeSelect: d
+      } = i.value;
+      a.preventDefault(), d(a, b.value);
+    }, ge = (a) => {
+      if (se.value) return;
+      const {
+        disableCheckbox: d
+      } = e, {
+        onNodeCheck: R
+      } = i.value;
+      if (!Se.value || d) return;
+      a.preventDefault();
+      const J = !T.value;
+      R(a, b.value, J);
+    }, ye = (a) => {
+      const {
+        onNodeClick: d
+      } = i.value;
+      d(a, b.value), ce.value ? de(a) : ge(a);
+    }, xe = (a) => {
+      const {
+        onNodeMouseEnter: d
+      } = i.value;
+      d(a, b.value);
+    }, Me = (a) => {
+      const {
+        onNodeMouseLeave: d
+      } = i.value;
+      d(a, b.value);
+    }, Ie = (a) => {
+      const {
+        onNodeContextMenu: d
+      } = i.value;
+      d(a, b.value);
+    }, pe = (a) => {
+      const {
+        onNodeDragStart: d
+      } = i.value;
+      a.stopPropagation(), c.value = !0, d(a, H);
+      try {
+        a.dataTransfer.setData("text/plain", "");
+      } catch (R) {
+      }
+    }, Le = (a) => {
+      const {
+        onNodeDragEnter: d
+      } = i.value;
+      a.preventDefault(), a.stopPropagation(), d(a, H);
+    }, He = (a) => {
+      const {
+        onNodeDragOver: d
+      } = i.value;
+      a.preventDefault(), a.stopPropagation(), d(a, H);
+    }, Ke = (a) => {
+      const {
+        onNodeDragLeave: d
+      } = i.value;
+      a.stopPropagation(), d(a, H);
+    }, De = (a) => {
+      const {
+        onNodeDragEnd: d
+      } = i.value;
+      a.stopPropagation(), c.value = !1, d(a, H);
+    }, Qe = (a) => {
+      const {
+        onNodeDrop: d
+      } = i.value;
+      a.preventDefault(), a.stopPropagation(), c.value = !1, d(a, H);
+    }, Be = (a) => {
+      const {
+        onNodeExpand: d
+      } = i.value;
+      B.value || d(a, b.value);
+    }, je = () => {
+      const {
+        data: a
+      } = e, {
+        draggable: d
+      } = i.value;
+      return !!(d && (!d.nodeDraggable || d.nodeDraggable(a)));
+    }, Ye = () => {
+      const {
+        draggable: a,
+        prefixCls: d
+      } = i.value;
+      return a && (a != null && a.icon) ? C("span", {
+        class: `${d}-draggable-icon`
+      }, [a.icon]) : null;
+    }, Ze = () => {
+      var a, d, R;
+      const {
+        switcherIcon: J = o.switcherIcon || ((a = i.value.slots) === null || a === void 0 ? void 0 : a[(R = (d = e.data) === null || d === void 0 ? void 0 : d.slots) === null || R === void 0 ? void 0 : R.switcherIcon])
+      } = e, {
+        switcherIcon: te
+      } = i.value, ne = J || te;
+      return typeof ne == "function" ? ne(W.value) : ne;
+    }, ze = () => {
+      const {
+        loadData: a,
+        onNodeLoad: d
+      } = i.value;
+      B.value || a && O.value && !ee.value && !U.value && !Y.value && d(b.value);
+    };
+    qe(() => {
+      ze();
+    }), Tt(() => {
+      ze();
+    });
+    const et = () => {
+      const {
+        prefixCls: a
+      } = i.value, d = Ze();
+      if (ee.value)
+        return d !== !1 ? C("span", {
+          class: ue(`${a}-switcher`, `${a}-switcher-noop`)
+        }, [d]) : null;
+      const R = ue(`${a}-switcher`, `${a}-switcher_${O.value ? yt : pt}`);
+      return d !== !1 ? C("span", {
+        onClick: Be,
+        class: R
+      }, [d]) : null;
+    }, tt = () => {
+      var a, d;
+      const {
+        disableCheckbox: R
+      } = e, {
+        prefixCls: J
+      } = i.value, te = se.value;
+      return Se.value ? C("span", {
+        class: ue(`${J}-checkbox`, T.value && `${J}-checkbox-checked`, !T.value && Q.value && `${J}-checkbox-indeterminate`, (te || R) && `${J}-checkbox-disabled`),
+        onClick: ge
+      }, [(d = (a = i.value).customCheckable) === null || d === void 0 ? void 0 : d.call(a)]) : null;
+    }, Ve = () => {
+      const {
+        prefixCls: a
+      } = i.value;
+      return C("span", {
+        class: ue(`${a}-iconEle`, `${a}-icon__${le.value || "docu"}`, B.value && `${a}-icon_loading`)
+      }, null);
+    }, Te = () => {
+      const {
+        disabled: a,
+        eventKey: d
+      } = e, {
+        draggable: R,
+        dropLevelOffset: J,
+        dropPosition: te,
+        prefixCls: ne,
+        indent: s,
+        dropIndicatorRender: r,
+        dragOverNodeKey: u,
+        direction: p
+      } = i.value;
+      return !a && R !== !1 && u === d ? r({
+        dropPosition: te,
+        dropLevelOffset: J,
+        indent: s,
+        prefixCls: ne,
+        direction: p
+      }) : null;
+    }, nt = () => {
+      var a, d, R, J, te, ne;
+      const {
+        // title = slots.title ||
+        //   context.value.slots?.[props.data?.slots?.title] ||
+        //   context.value.slots?.title,
+        // selected,
+        icon: s = o.icon,
+        // loading,
+        data: r
+      } = e, u = o.title || ((a = i.value.slots) === null || a === void 0 ? void 0 : a[(R = (d = e.data) === null || d === void 0 ? void 0 : d.slots) === null || R === void 0 ? void 0 : R.title]) || ((J = i.value.slots) === null || J === void 0 ? void 0 : J.title) || e.title, {
+        prefixCls: p,
+        showIcon: $,
+        icon: k,
+        loadData: g
+        // slots: contextSlots,
+      } = i.value, I = se.value, _ = `${p}-node-content-wrapper`;
+      let M;
+      if ($) {
+        const oe = s || ((te = i.value.slots) === null || te === void 0 ? void 0 : te[(ne = r == null ? void 0 : r.slots) === null || ne === void 0 ? void 0 : ne.icon]) || k;
+        M = oe ? C("span", {
+          class: ue(`${p}-iconEle`, `${p}-icon__customize`)
+        }, [typeof oe == "function" ? oe(W.value) : oe]) : Ve();
+      } else g && B.value && (M = Ve());
+      let P;
+      typeof u == "function" ? P = u(W.value) : P = u, P = P === void 0 ? Xn : P;
+      const F = C("span", {
+        class: `${p}-title`
+      }, [P]);
+      return C("span", {
+        ref: z,
+        title: typeof u == "string" ? u : "",
+        class: ue(`${_}`, `${_}-${le.value || "normal"}`, !I && (V.value || c.value) && `${p}-node-selected`),
+        onMouseenter: xe,
+        onMouseleave: Me,
+        onContextmenu: Ie,
+        onClick: ye,
+        onDblclick: X
+      }, [M, F, Te()]);
+    };
+    return () => {
+      const a = w(w({}, e), n), {
+        eventKey: d,
+        isLeaf: R,
+        isStart: J,
+        isEnd: te,
+        domRef: ne,
+        active: s,
+        data: r,
+        onMousemove: u,
+        selectable: p
+      } = a, $ = Gn(a, ["eventKey", "isLeaf", "isStart", "isEnd", "domRef", "active", "data", "onMousemove", "selectable"]), {
+        prefixCls: k,
+        filterTreeNode: g,
+        keyEntities: I,
+        dropContainerKey: _,
+        dropTargetKey: M,
+        draggingNodeKey: P
+      } = i.value, F = se.value, oe = Ot($, {
+        aria: !0,
+        data: !0
+      }), {
+        level: fe
+      } = I[d] || {}, ve = te[te.length - 1], ae = je(), ke = !F && ae, Re = P === d, ot = p !== void 0 ? {
+        "aria-selected": !!p
+      } : void 0;
+      return C("div", re(re({
+        ref: ne,
+        class: ue(n.class, `${k}-treenode`, {
+          [`${k}-treenode-disabled`]: F,
+          [`${k}-treenode-switcher-${O.value ? "open" : "close"}`]: !R,
+          [`${k}-treenode-checkbox-checked`]: T.value,
+          [`${k}-treenode-checkbox-indeterminate`]: Q.value,
+          [`${k}-treenode-selected`]: V.value,
+          [`${k}-treenode-loading`]: B.value,
+          [`${k}-treenode-active`]: s,
+          [`${k}-treenode-leaf-last`]: ve,
+          [`${k}-treenode-draggable`]: ke,
+          dragging: Re,
+          "drop-target": M === d,
+          "drop-container": _ === d,
+          "drag-over": !F && q.value,
+          "drag-over-gap-top": !F && A.value,
+          "drag-over-gap-bottom": !F && G.value,
+          "filter-node": g && g(b.value)
+        }),
+        style: n.style,
+        draggable: ke,
+        "aria-grabbed": Re,
+        onDragstart: ke ? pe : void 0,
+        onDragenter: ae ? Le : void 0,
+        onDragover: ae ? He : void 0,
+        onDragleave: ae ? Ke : void 0,
+        onDrop: ae ? Qe : void 0,
+        onDragend: ae ? De : void 0,
+        onMousemove: u
+      }, ot), oe), [C(Vn, {
+        prefixCls: k,
+        level: fe,
+        isStart: J,
+        isEnd: te
+      }, null), Ye(), et(), tt(), nt()]);
+    };
+  }
+});
+var bt = function(e, t) {
+  var n = {};
+  for (var o in e) Object.prototype.hasOwnProperty.call(e, o) && t.indexOf(o) < 0 && (n[o] = e[o]);
+  if (e != null && typeof Object.getOwnPropertySymbols == "function") for (var l = 0, o = Object.getOwnPropertySymbols(e); l < o.length; l++)
+    t.indexOf(o[l]) < 0 && Object.prototype.propertyIsEnumerable.call(e, o[l]) && (n[o[l]] = e[o[l]]);
+  return n;
+};
+const qn = Ne({
+  compatConfig: {
+    MODE: 3
+  },
+  name: "MotionTreeNode",
+  inheritAttrs: !1,
+  props: w(w({}, Ft), {
+    active: Boolean,
+    motion: Object,
+    motionNodes: {
+      type: Array
+    },
+    onMotionStart: Function,
+    onMotionEnd: Function,
+    motionType: String
+  }),
+  setup(e, t) {
+    let {
+      attrs: n,
+      slots: o
+    } = t;
+    const l = L(!0), c = ct(), i = L(!1), v = E(() => e.motion ? e.motion : nn()), S = (f, K) => {
+      var x, m, D, j;
+      K === "appear" ? (m = (x = v.value) === null || x === void 0 ? void 0 : x.onAfterEnter) === null || m === void 0 || m.call(x, f) : K === "leave" && ((j = (D = v.value) === null || D === void 0 ? void 0 : D.onAfterLeave) === null || j === void 0 || j.call(D, f)), i.value || e.onMotionEnd(), i.value = !0;
+    };
+    return ie(() => e.motionNodes, () => {
+      e.motionNodes && e.motionType === "hide" && l.value && Ae(() => {
+        l.value = !1;
+      });
+    }, {
+      immediate: !0,
+      flush: "post"
+    }), qe(() => {
+      e.motionNodes && e.onMotionStart();
+    }), rt(() => {
+      e.motionNodes && S();
+    }), () => {
+      const {
+        motion: f,
+        motionNodes: K,
+        motionType: x,
+        active: m,
+        eventKey: D
+      } = e, j = bt(e, ["motion", "motionNodes", "motionType", "active", "eventKey"]);
+      return K ? C(mn, re(re({}, v.value), {}, {
+        appear: x === "show",
+        onAfterAppear: (y) => S(y, "appear"),
+        onAfterLeave: (y) => S(y, "leave")
+      }), {
+        default: () => [bn(C("div", {
+          class: `${c.value.prefixCls}-treenode-motion`
+        }, [K.map((y) => {
+          const N = bt(y.data, []), {
+            title: O,
+            key: V,
+            isStart: T,
+            isEnd: Y
+          } = y;
+          return delete N.children, C(mt, re(re({}, N), {}, {
+            title: O,
+            active: m,
+            data: y.data,
+            key: V,
+            eventKey: V,
+            isStart: T,
+            isEnd: Y
+          }), o);
+        })]), [[Sn, l.value]])]
+      }) : C(mt, re(re({
+        class: n.class,
+        style: n.style
+      }, j), {}, {
+        active: m,
+        eventKey: D
+      }), o);
+    };
+  }
+});
+function Jn() {
+  let e = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : [], t = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : [];
+  const n = e.length, o = t.length;
+  if (Math.abs(n - o) !== 1)
+    return {
+      add: !1,
+      key: null
+    };
+  function l(c, i) {
+    const v = /* @__PURE__ */ new Map();
+    c.forEach((f) => {
+      v.set(f, !0);
+    });
+    const S = i.filter((f) => !v.has(f));
+    return S.length === 1 ? S[0] : null;
+  }
+  return n < o ? {
+    add: !0,
+    key: l(e, t)
+  } : {
+    add: !1,
+    key: l(t, e)
+  };
+}
+function St(e, t, n) {
+  const o = e.findIndex((i) => i.key === n), l = e[o + 1], c = t.findIndex((i) => i.key === n);
+  if (l) {
+    const i = t.findIndex((v) => v.key === l.key);
+    return t.slice(c + 1, i);
+  }
+  return t.slice(c + 1);
+}
+var xt = function(e, t) {
+  var n = {};
+  for (var o in e) Object.prototype.hasOwnProperty.call(e, o) && t.indexOf(o) < 0 && (n[o] = e[o]);
+  if (e != null && typeof Object.getOwnPropertySymbols == "function") for (var l = 0, o = Object.getOwnPropertySymbols(e); l < o.length; l++)
+    t.indexOf(o[l]) < 0 && Object.prototype.propertyIsEnumerable.call(e, o[l]) && (n[o[l]] = e[o[l]]);
+  return n;
+};
+const Kt = {
+  width: 0,
+  height: 0,
+  display: "flex",
+  overflow: "hidden",
+  opacity: 0,
+  border: 0,
+  padding: 0,
+  margin: 0
+}, Qn = () => {
+}, $e = `RC_TREE_MOTION_${Math.random()}`, st = {
+  key: $e
+}, At = {
+  key: $e,
+  level: 0,
+  index: 0,
+  pos: "0",
+  node: st,
+  nodes: [st]
+}, kt = {
+  parent: null,
+  children: [],
+  pos: At.pos,
+  data: st,
+  title: null,
+  key: $e,
+  /** Hold empty list here since we do not use it */
+  isStart: [],
+  isEnd: []
+};
+function wt(e, t, n, o) {
+  return t === !1 || !n ? e : e.slice(0, Math.ceil(n / o) + 1);
+}
+function Ct(e) {
+  const {
+    key: t,
+    pos: n
+  } = e;
+  return Mt(t, n);
+}
+function Zn(e) {
+  let t = String(e.key), n = e;
+  for (; n.parent; )
+    n = n.parent, t = `${n.key} > ${t}`;
+  return t;
+}
+const eo = Ne({
+  compatConfig: {
+    MODE: 3
+  },
+  name: "NodeList",
+  inheritAttrs: !1,
+  props: Un,
+  setup(e, t) {
+    let {
+      expose: n,
+      attrs: o
+    } = t;
+    const l = We(), c = We(), {
+      expandedKeys: i,
+      flattenNodes: v
+    } = Rt();
+    n({
+      scrollTo: (y) => {
+        l.value.scrollTo(y);
+      },
+      getIndentWidth: () => c.value.offsetWidth
+    });
+    const S = L(v.value), f = L([]), K = We(null);
+    function x() {
+      S.value = v.value, f.value = [], K.value = null, e.onListChangeEnd();
+    }
+    const m = ct();
+    ie([() => i.value.slice(), v], (y, N) => {
+      let [O, V] = y, [T, Y] = N;
+      const B = Jn(T, O);
+      if (B.key !== null) {
+        const {
+          virtual: Q,
+          height: q,
+          itemHeight: A
+        } = e;
+        if (B.add) {
+          const G = Y.findIndex((U) => {
+            let {
+              key: ee
+            } = U;
+            return ee === B.key;
+          }), Z = wt(St(Y, V, B.key), Q, q, A), z = Y.slice();
+          z.splice(G + 1, 0, kt), S.value = z, f.value = Z, K.value = "show";
+        } else {
+          const G = V.findIndex((U) => {
+            let {
+              key: ee
+            } = U;
+            return ee === B.key;
+          }), Z = wt(St(V, Y, B.key), Q, q, A), z = V.slice();
+          z.splice(G + 1, 0, kt), S.value = z, f.value = Z, K.value = "hide";
+        }
+      } else Y !== V && (S.value = V);
+    }), ie(() => m.value.dragging, (y) => {
+      y || x();
+    });
+    const D = E(() => e.motion === void 0 ? S.value : v.value), j = () => {
+      e.onActiveChange(null);
+    };
+    return () => {
+      const y = w(w({}, e), o), {
+        prefixCls: N,
+        selectable: O,
+        checkable: V,
+        disabled: T,
+        motion: Y,
+        height: B,
+        itemHeight: Q,
+        virtual: q,
+        focusable: A,
+        activeItem: G,
+        focused: Z,
+        tabindex: z,
+        onKeydown: U,
+        onFocus: ee,
+        onBlur: le,
+        onListChangeStart: se,
+        onListChangeEnd: Se
+      } = y, ce = xt(y, ["prefixCls", "selectable", "checkable", "disabled", "motion", "height", "itemHeight", "virtual", "focusable", "activeItem", "focused", "tabindex", "onKeydown", "onFocus", "onBlur", "onListChangeStart", "onListChangeEnd"]);
+      return C(xn, null, [Z && G && C("span", {
+        style: Kt,
+        "aria-live": "assertive"
+      }, [Zn(G)]), C("div", null, [C("input", {
+        style: Kt,
+        disabled: A === !1 || T,
+        tabindex: A !== !1 ? z : null,
+        onKeydown: U,
+        onFocus: ee,
+        onBlur: le,
+        value: "",
+        onChange: Qn,
+        "aria-label": "for screen reader"
+      }, null)]), C("div", {
+        class: `${N}-treenode`,
+        "aria-hidden": !0,
+        style: {
+          position: "absolute",
+          pointerEvents: "none",
+          visibility: "hidden",
+          height: 0,
+          overflow: "hidden"
+        }
+      }, [C("div", {
+        class: `${N}-indent`
+      }, [C("div", {
+        ref: c,
+        class: `${N}-indent-unit`
+      }, null)])]), C(jn, re(re({}, on(ce, ["onActiveChange"])), {}, {
+        data: D.value,
+        itemKey: Ct,
+        height: B,
+        fullHeight: !1,
+        virtual: q,
+        itemHeight: Q,
+        prefixCls: `${N}-list`,
+        ref: l,
+        onVisibleChange: (W, h) => {
+          const b = new Set(W);
+          h.filter((X) => !b.has(X)).some((X) => Ct(X) === $e) && x();
+        }
+      }), {
+        default: (W) => {
+          const {
+            pos: h
+          } = W, b = xt(W.data, []), {
+            title: H,
+            key: X,
+            isStart: de,
+            isEnd: ge
+          } = W, ye = Mt(X, h);
+          return delete b.key, delete b.children, C(qn, re(re({}, b), {}, {
+            eventKey: ye,
+            title: H,
+            active: !!G && X === G.key,
+            data: W.data,
+            isStart: de,
+            isEnd: ge,
+            motion: Y,
+            motionNodes: X === $e ? f.value : null,
+            motionType: K.value,
+            onMotionStart: se,
+            onMotionEnd: x,
+            onMousemove: j
+          }), null);
+        }
+      })]);
+    };
+  }
+});
+function to(e) {
+  let {
+    dropPosition: t,
+    dropLevelOffset: n,
+    indent: o
+  } = e;
+  const l = {
+    pointerEvents: "none",
+    position: "absolute",
+    right: 0,
+    backgroundColor: "red",
+    height: "2px"
+  };
+  switch (t) {
+    case -1:
+      l.top = 0, l.left = `${-n * o}px`;
+      break;
+    case 1:
+      l.bottom = 0, l.left = `${-n * o}px`;
+      break;
+    case 0:
+      l.bottom = 0, l.left = `${o}`;
+      break;
+  }
+  return C("div", {
+    style: l
+  }, null);
+}
+const no = 10, ho = Ne({
+  compatConfig: {
+    MODE: 3
+  },
+  name: "Tree",
+  inheritAttrs: !1,
+  props: ln(Wn(), {
+    prefixCls: "vc-tree",
+    showLine: !1,
+    showIcon: !0,
+    selectable: !0,
+    multiple: !1,
+    checkable: !1,
+    disabled: !1,
+    checkStrictly: !1,
+    draggable: !1,
+    expandAction: !1,
+    defaultExpandParent: !0,
+    autoExpandParent: !1,
+    defaultExpandAll: !1,
+    defaultExpandedKeys: [],
+    defaultCheckedKeys: [],
+    defaultSelectedKeys: [],
+    dropIndicatorRender: to,
+    allowDrop: () => !0
+  }),
+  setup(e, t) {
+    let {
+      attrs: n,
+      slots: o,
+      expose: l
+    } = t;
+    const c = L(!1);
+    let i = {};
+    const v = L(), S = L([]), f = L([]), K = L([]), x = L([]), m = L([]), D = L([]), j = {}, y = _e({
+      draggingNodeKey: null,
+      dragChildrenKeys: [],
+      // dropTargetKey is the key of abstract-drop-node
+      // the abstract-drop-node is the real drop node when drag and drop
+      // not the DOM drag over node
+      dropTargetKey: null,
+      dropPosition: null,
+      dropContainerKey: null,
+      dropLevelOffset: null,
+      dropTargetPos: null,
+      dropAllowed: !0,
+      // the abstract-drag-over-node
+      // if mouse is on the bottom of top dom node or no the top of the bottom dom node
+      // abstract-drag-over-node is the top node
+      dragOverNodeKey: null
+    }), N = L([]);
+    ie([() => e.treeData, () => e.children], () => {
+      N.value = e.treeData !== void 0 ? e.treeData.slice() : Kn(it(e.children));
+    }, {
+      immediate: !0,
+      deep: !0
+    });
+    const O = L({}), V = L(!1), T = L(null), Y = L(!1), B = E(() => kn(e.fieldNames)), Q = L();
+    let q = null, A = null, G = null;
+    const Z = E(() => ({
+      expandedKeysSet: z.value,
+      selectedKeysSet: U.value,
+      loadedKeysSet: ee.value,
+      loadingKeysSet: le.value,
+      checkedKeysSet: se.value,
+      halfCheckedKeysSet: Se.value,
+      dragOverNodeKey: y.dragOverNodeKey,
+      dropPosition: y.dropPosition,
+      keyEntities: O.value
+    })), z = E(() => new Set(D.value)), U = E(() => new Set(S.value)), ee = E(() => new Set(x.value)), le = E(() => new Set(m.value)), se = E(() => new Set(f.value)), Se = E(() => new Set(K.value));
+    Pe(() => {
+      if (N.value) {
+        const s = wn(N.value, {
+          fieldNames: B.value
+        });
+        O.value = w({
+          [$e]: At
+        }, s.keyEntities);
+      }
+    });
+    let ce = !1;
+    ie(
+      [() => e.expandedKeys, () => e.autoExpandParent, O],
+      // eslint-disable-next-line @typescript-eslint/no-unused-vars
+      (s, r) => {
+        let [u, p] = s, [$, k] = r, g = D.value;
+        if (e.expandedKeys !== void 0 || ce && p !== k)
+          g = e.autoExpandParent || !ce && e.defaultExpandParent ? ft(e.expandedKeys, O.value) : e.expandedKeys;
+        else if (!ce && e.defaultExpandAll) {
+          const I = w({}, O.value);
+          delete I[$e], g = Object.keys(I).map((_) => I[_].key);
+        } else !ce && e.defaultExpandedKeys && (g = e.autoExpandParent || e.defaultExpandParent ? ft(e.defaultExpandedKeys, O.value) : e.defaultExpandedKeys);
+        g && (D.value = g), ce = !0;
+      },
+      {
+        immediate: !0
+      }
+    );
+    const W = L([]);
+    Pe(() => {
+      W.value = Cn(N.value, D.value, B.value);
+    }), Pe(() => {
+      e.selectable && (e.selectedKeys !== void 0 ? S.value = vt(e.selectedKeys, e) : !ce && e.defaultSelectedKeys && (S.value = vt(e.defaultSelectedKeys, e)));
+    });
+    const {
+      maxLevel: h,
+      levelEntities: b
+    } = En(O);
+    Pe(() => {
+      if (e.checkable) {
+        let s;
+        if (e.checkedKeys !== void 0 ? s = lt(e.checkedKeys) || {} : !ce && e.defaultCheckedKeys ? s = lt(e.defaultCheckedKeys) || {} : N.value && (s = lt(e.checkedKeys) || {
+          checkedKeys: f.value,
+          halfCheckedKeys: K.value
+        }), s) {
+          let {
+            checkedKeys: r = [],
+            halfCheckedKeys: u = []
+          } = s;
+          e.checkStrictly || ({
+            checkedKeys: r,
+            halfCheckedKeys: u
+          } = at(r, !0, O.value, h.value, b.value)), f.value = r, K.value = u;
+        }
+      }
+    }), Pe(() => {
+      e.loadedKeys && (x.value = e.loadedKeys);
+    });
+    const H = () => {
+      w(y, {
+        dragOverNodeKey: null,
+        dropPosition: null,
+        dropLevelOffset: null,
+        dropTargetKey: null,
+        dropContainerKey: null,
+        dropTargetPos: null,
+        dropAllowed: !1
+      });
+    }, X = (s) => {
+      Q.value.scrollTo(s);
+    };
+    ie(() => e.activeKey, () => {
+      e.activeKey !== void 0 && (T.value = e.activeKey);
+    }, {
+      immediate: !0
+    }), ie(T, (s) => {
+      Ae(() => {
+        s !== null && X({
+          key: s
+        });
+      });
+    }, {
+      immediate: !0,
+      flush: "post"
+    });
+    const de = (s) => {
+      e.expandedKeys === void 0 && (D.value = s);
+    }, ge = () => {
+      y.draggingNodeKey !== null && w(y, {
+        draggingNodeKey: null,
+        dropPosition: null,
+        dropContainerKey: null,
+        dropTargetKey: null,
+        dropLevelOffset: null,
+        dropAllowed: !0,
+        dragOverNodeKey: null
+      }), q = null, G = null;
+    }, ye = (s, r) => {
+      const {
+        onDragend: u
+      } = e;
+      y.dragOverNodeKey = null, ge(), u == null || u({
+        event: s,
+        node: r.eventData
+      }), A = null;
+    }, xe = (s) => {
+      ye(s, null), window.removeEventListener("dragend", xe);
+    }, Me = (s, r) => {
+      const {
+        onDragstart: u
+      } = e, {
+        eventKey: p,
+        eventData: $
+      } = r;
+      A = r, q = {
+        x: s.clientX,
+        y: s.clientY
+      };
+      const k = me(D.value, p);
+      y.draggingNodeKey = p, y.dragChildrenKeys = Dn(p, O.value), v.value = Q.value.getIndentWidth(), de(k), window.addEventListener("dragend", xe), u && u({
+        event: s,
+        node: $
+      });
+    }, Ie = (s, r) => {
+      const {
+        onDragenter: u,
+        onExpand: p,
+        allowDrop: $,
+        direction: k
+      } = e, {
+        pos: g,
+        eventKey: I
+      } = r;
+      if (G !== I && (G = I), !A) {
+        H();
+        return;
+      }
+      const {
+        dropPosition: _,
+        dropLevelOffset: M,
+        dropTargetKey: P,
+        dropContainerKey: F,
+        dropTargetPos: oe,
+        dropAllowed: fe,
+        dragOverNodeKey: ve
+      } = ht(s, A, r, v.value, q, $, W.value, O.value, z.value, k);
+      if (
+        // don't allow drop inside its children
+        y.dragChildrenKeys.indexOf(P) !== -1 || // don't allow drop when drop is not allowed caculated by calcDropPosition
+        !fe
+      ) {
+        H();
+        return;
+      }
+      if (i || (i = {}), Object.keys(i).forEach((ae) => {
+        clearTimeout(i[ae]);
+      }), A.eventKey !== r.eventKey && (i[g] = window.setTimeout(() => {
+        if (y.draggingNodeKey === null) return;
+        let ae = D.value.slice();
+        const ke = O.value[r.eventKey];
+        ke && (ke.children || []).length && (ae = we(D.value, r.eventKey)), de(ae), p && p(ae, {
+          node: r.eventData,
+          expanded: !0,
+          nativeEvent: s
+        });
+      }, 800)), A.eventKey === P && M === 0) {
+        H();
+        return;
+      }
+      w(y, {
+        dragOverNodeKey: ve,
+        dropPosition: _,
+        dropLevelOffset: M,
+        dropTargetKey: P,
+        dropContainerKey: F,
+        dropTargetPos: oe,
+        dropAllowed: fe
+      }), u && u({
+        event: s,
+        node: r.eventData,
+        expandedKeys: D.value
+      });
+    }, pe = (s, r) => {
+      const {
+        onDragover: u,
+        allowDrop: p,
+        direction: $
+      } = e;
+      if (!A)
+        return;
+      const {
+        dropPosition: k,
+        dropLevelOffset: g,
+        dropTargetKey: I,
+        dropContainerKey: _,
+        dropAllowed: M,
+        dropTargetPos: P,
+        dragOverNodeKey: F
+      } = ht(s, A, r, v.value, q, p, W.value, O.value, z.value, $);
+      y.dragChildrenKeys.indexOf(I) !== -1 || !M || (A.eventKey === I && g === 0 ? y.dropPosition === null && y.dropLevelOffset === null && y.dropTargetKey === null && y.dropContainerKey === null && y.dropTargetPos === null && y.dropAllowed === !1 && y.dragOverNodeKey === null || H() : k === y.dropPosition && g === y.dropLevelOffset && I === y.dropTargetKey && _ === y.dropContainerKey && P === y.dropTargetPos && M === y.dropAllowed && F === y.dragOverNodeKey || w(y, {
+        dropPosition: k,
+        dropLevelOffset: g,
+        dropTargetKey: I,
+        dropContainerKey: _,
+        dropTargetPos: P,
+        dropAllowed: M,
+        dragOverNodeKey: F
+      }), u && u({
+        event: s,
+        node: r.eventData
+      }));
+    }, Le = (s, r) => {
+      G === r.eventKey && !s.currentTarget.contains(s.relatedTarget) && (H(), G = null);
+      const {
+        onDragleave: u
+      } = e;
+      u && u({
+        event: s,
+        node: r.eventData
+      });
+    }, He = function(s, r) {
+      let u = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : !1;
+      var p;
+      const {
+        dragChildrenKeys: $,
+        dropPosition: k,
+        dropTargetKey: g,
+        dropTargetPos: I,
+        dropAllowed: _
+      } = y;
+      if (!_) return;
+      const {
+        onDrop: M
+      } = e;
+      if (y.dragOverNodeKey = null, ge(), g === null) return;
+      const P = w(w({}, Ge(g, it(Z.value))), {
+        active: ((p = R.value) === null || p === void 0 ? void 0 : p.key) === g,
+        data: O.value[g].node
+      }), F = $.indexOf(g) !== -1;
+      Ue(!F, "Can not drop to dragNode's children node. Maybe this is a bug of ant-design-vue. Please report an issue.");
+      const oe = Tn(I), fe = {
+        event: s,
+        node: Xe(P),
+        dragNode: A ? A.eventData : null,
+        dragNodesKeys: [A.eventKey].concat($),
+        dropToGap: k !== 0,
+        dropPosition: k + Number(oe[oe.length - 1])
+      };
+      u || M == null || M(fe), A = null;
+    }, Ke = (s, r) => {
+      const {
+        expanded: u,
+        key: p
+      } = r, $ = W.value.filter((g) => g.key === p)[0], k = Xe(w(w({}, Ge(p, Z.value)), {
+        data: $.data
+      }));
+      de(u ? me(D.value, p) : we(D.value, p)), Te(s, k);
+    }, De = (s, r) => {
+      const {
+        onClick: u,
+        expandAction: p
+      } = e;
+      p === "click" && Ke(s, r), u && u(s, r);
+    }, Qe = (s, r) => {
+      const {
+        onDblclick: u,
+        expandAction: p
+      } = e;
+      (p === "doubleclick" || p === "dblclick") && Ke(s, r), u && u(s, r);
+    }, Be = (s, r) => {
+      let u = S.value;
+      const {
+        onSelect: p,
+        multiple: $
+      } = e, {
+        selected: k
+      } = r, g = r[B.value.key], I = !k;
+      I ? $ ? u = we(u, g) : u = [g] : u = me(u, g);
+      const _ = O.value, M = u.map((P) => {
+        const F = _[P];
+        return F ? F.node : null;
+      }).filter((P) => P);
+      e.selectedKeys === void 0 && (S.value = u), p && p(u, {
+        event: "select",
+        selected: I,
+        node: r,
+        selectedNodes: M,
+        nativeEvent: s
+      });
+    }, je = (s, r, u) => {
+      const {
+        checkStrictly: p,
+        onCheck: $
+      } = e, k = r[B.value.key];
+      let g;
+      const I = {
+        event: "check",
+        node: r,
+        checked: u,
+        nativeEvent: s
+      }, _ = O.value;
+      if (p) {
+        const M = u ? we(f.value, k) : me(f.value, k), P = me(K.value, k);
+        g = {
+          checked: M,
+          halfChecked: P
+        }, I.checkedNodes = M.map((F) => _[F]).filter((F) => F).map((F) => F.node), e.checkedKeys === void 0 && (f.value = M);
+      } else {
+        let {
+          checkedKeys: M,
+          halfCheckedKeys: P
+        } = at([...f.value, k], !0, _, h.value, b.value);
+        if (!u) {
+          const F = new Set(M);
+          F.delete(k), {
+            checkedKeys: M,
+            halfCheckedKeys: P
+          } = at(Array.from(F), {
+            checked: !1,
+            halfCheckedKeys: P
+          }, _, h.value, b.value);
+        }
+        g = M, I.checkedNodes = [], I.checkedNodesPositions = [], I.halfCheckedKeys = P, M.forEach((F) => {
+          const oe = _[F];
+          if (!oe) return;
+          const {
+            node: fe,
+            pos: ve
+          } = oe;
+          I.checkedNodes.push(fe), I.checkedNodesPositions.push({
+            node: fe,
+            pos: ve
+          });
+        }), e.checkedKeys === void 0 && (f.value = M, K.value = P);
+      }
+      $ && $(g, I);
+    }, Ye = (s) => {
+      const r = s[B.value.key], u = new Promise((p, $) => {
+        const {
+          loadData: k,
+          onLoad: g
+        } = e;
+        if (!k || ee.value.has(r) || le.value.has(r))
+          return null;
+        k(s).then(() => {
+          const _ = we(x.value, r), M = me(m.value, r);
+          g && g(_, {
+            event: "load",
+            node: s
+          }), e.loadedKeys === void 0 && (x.value = _), m.value = M, p();
+        }).catch((_) => {
+          const M = me(m.value, r);
+          if (m.value = M, j[r] = (j[r] || 0) + 1, j[r] >= no) {
+            Ue(!1, "Retry for `loadData` many times but still failed. No more retry.");
+            const P = we(x.value, r);
+            e.loadedKeys === void 0 && (x.value = P), p();
+          }
+          $(_);
+        }), m.value = we(m.value, r);
+      });
+      return u.catch(() => {
+      }), u;
+    }, Ze = (s, r) => {
+      const {
+        onMouseenter: u
+      } = e;
+      u && u({
+        event: s,
+        node: r
+      });
+    }, ze = (s, r) => {
+      const {
+        onMouseleave: u
+      } = e;
+      u && u({
+        event: s,
+        node: r
+      });
+    }, et = (s, r) => {
+      const {
+        onRightClick: u
+      } = e;
+      u && (s.preventDefault(), u({
+        event: s,
+        node: r
+      }));
+    }, tt = (s) => {
+      const {
+        onFocus: r
+      } = e;
+      V.value = !0, r && r(s);
+    }, Ve = (s) => {
+      const {
+        onBlur: r
+      } = e;
+      V.value = !1, d(null), r && r(s);
+    }, Te = (s, r) => {
+      let u = D.value;
+      const {
+        onExpand: p,
+        loadData: $
+      } = e, {
+        expanded: k
+      } = r, g = r[B.value.key];
+      if (Y.value)
+        return;
+      const I = u.indexOf(g), _ = !k;
+      if (Ue(k && I !== -1 || !k && I === -1, "Expand state not sync with index check"), _ ? u = we(u, g) : u = me(u, g), de(u), p && p(u, {
+        node: r,
+        expanded: _,
+        nativeEvent: s
+      }), _ && $) {
+        const M = Ye(r);
+        M && M.then(() => {
+        }).catch((P) => {
+          const F = me(D.value, g);
+          de(F), Promise.reject(P);
+        });
+      }
+    }, nt = () => {
+      Y.value = !0;
+    }, a = () => {
+      setTimeout(() => {
+        Y.value = !1;
+      });
+    }, d = (s) => {
+      const {
+        onActiveChange: r
+      } = e;
+      T.value !== s && (e.activeKey !== void 0 && (T.value = s), s !== null && X({
+        key: s
+      }), r && r(s));
+    }, R = E(() => T.value === null ? null : W.value.find((s) => {
+      let {
+        key: r
+      } = s;
+      return r === T.value;
+    }) || null), J = (s) => {
+      let r = W.value.findIndex((p) => {
+        let {
+          key: $
+        } = p;
+        return $ === T.value;
+      });
+      r === -1 && s < 0 && (r = W.value.length), r = (r + s + W.value.length) % W.value.length;
+      const u = W.value[r];
+      if (u) {
+        const {
+          key: p
+        } = u;
+        d(p);
+      } else
+        d(null);
+    }, te = E(() => Xe(w(w({}, Ge(T.value, Z.value)), {
+      data: R.value.data,
+      active: !0
+    }))), ne = (s) => {
+      const {
+        onKeydown: r,
+        checkable: u,
+        selectable: p
+      } = e;
+      switch (s.which) {
+        case Oe.UP: {
+          J(-1), s.preventDefault();
+          break;
+        }
+        case Oe.DOWN: {
+          J(1), s.preventDefault();
+          break;
+        }
+      }
+      const $ = R.value;
+      if ($ && $.data) {
+        const k = $.data.isLeaf === !1 || !!($.data.children || []).length, g = te.value;
+        switch (s.which) {
+          case Oe.LEFT: {
+            k && z.value.has(T.value) ? Te({}, g) : $.parent && d($.parent.key), s.preventDefault();
+            break;
+          }
+          case Oe.RIGHT: {
+            k && !z.value.has(T.value) ? Te({}, g) : $.children && $.children.length && d($.children[0].key), s.preventDefault();
+            break;
+          }
+          case Oe.ENTER:
+          case Oe.SPACE: {
+            u && !g.disabled && g.checkable !== !1 && !g.disableCheckbox ? je({}, g, !se.value.has(T.value)) : !u && p && !g.disabled && g.selectable !== !1 && Be({}, g);
+            break;
+          }
+        }
+      }
+      r && r(s);
+    };
+    return l({
+      onNodeExpand: Te,
+      scrollTo: X,
+      onKeydown: ne,
+      selectedKeys: E(() => S.value),
+      checkedKeys: E(() => f.value),
+      halfCheckedKeys: E(() => K.value),
+      loadedKeys: E(() => x.value),
+      loadingKeys: E(() => m.value),
+      expandedKeys: E(() => D.value)
+    }), Dt(() => {
+      window.removeEventListener("dragend", xe), c.value = !0;
+    }), zn({
+      expandedKeys: D,
+      selectedKeys: S,
+      loadedKeys: x,
+      loadingKeys: m,
+      checkedKeys: f,
+      halfCheckedKeys: K,
+      expandedKeysSet: z,
+      selectedKeysSet: U,
+      loadedKeysSet: ee,
+      loadingKeysSet: le,
+      checkedKeysSet: se,
+      halfCheckedKeysSet: Se,
+      flattenNodes: W
+    }), () => {
+      const {
+        // focused,
+        // flattenNodes,
+        // keyEntities,
+        draggingNodeKey: s,
+        // activeKey,
+        dropLevelOffset: r,
+        dropContainerKey: u,
+        dropTargetKey: p,
+        dropPosition: $,
+        dragOverNodeKey: k
+        // indent,
+      } = y, {
+        prefixCls: g,
+        showLine: I,
+        focusable: _,
+        tabindex: M = 0,
+        selectable: P,
+        showIcon: F,
+        icon: oe = o.icon,
+        switcherIcon: fe,
+        draggable: ve,
+        checkable: ae,
+        checkStrictly: ke,
+        disabled: Re,
+        motion: ot,
+        loadData: _t,
+        filterTreeNode: Bt,
+        height: jt,
+        itemHeight: Yt,
+        virtual: zt,
+        dropIndicatorRender: Vt,
+        onContextmenu: Ut,
+        onScroll: Wt,
+        direction: Gt,
+        rootClassName: Xt,
+        rootStyle: qt
+      } = e, {
+        class: Jt,
+        style: Qt
+      } = n, Zt = Ot(w(w({}, e), n), {
+        aria: !0,
+        data: !0
+      });
+      let Fe;
+      return ve ? typeof ve == "object" ? Fe = ve : typeof ve == "function" ? Fe = {
+        nodeDraggable: ve
+      } : Fe = {} : Fe = !1, C(Yn, {
+        value: {
+          prefixCls: g,
+          selectable: P,
+          showIcon: F,
+          icon: oe,
+          switcherIcon: fe,
+          draggable: Fe,
+          draggingNodeKey: s,
+          checkable: ae,
+          customCheckable: o.checkable,
+          checkStrictly: ke,
+          disabled: Re,
+          keyEntities: O.value,
+          dropLevelOffset: r,
+          dropContainerKey: u,
+          dropTargetKey: p,
+          dropPosition: $,
+          dragOverNodeKey: k,
+          dragging: s !== null,
+          indent: v.value,
+          direction: Gt,
+          dropIndicatorRender: Vt,
+          loadData: _t,
+          filterTreeNode: Bt,
+          onNodeClick: De,
+          onNodeDoubleClick: Qe,
+          onNodeExpand: Te,
+          onNodeSelect: Be,
+          onNodeCheck: je,
+          onNodeLoad: Ye,
+          onNodeMouseEnter: Ze,
+          onNodeMouseLeave: ze,
+          onNodeContextMenu: et,
+          onNodeDragStart: Me,
+          onNodeDragEnter: Ie,
+          onNodeDragOver: pe,
+          onNodeDragLeave: Le,
+          onNodeDragEnd: ye,
+          onNodeDrop: He,
+          slots: o
+        }
+      }, {
+        default: () => [C("div", {
+          role: "tree",
+          class: ue(g, Jt, Xt, {
+            [`${g}-show-line`]: I,
+            [`${g}-focused`]: V.value,
+            [`${g}-active-focused`]: T.value !== null
+          }),
+          style: qt
+        }, [C(eo, re({
+          ref: Q,
+          prefixCls: g,
+          style: Qt,
+          disabled: Re,
+          selectable: P,
+          checkable: !!ae,
+          motion: ot,
+          height: jt,
+          itemHeight: Yt,
+          virtual: zt,
+          focusable: _,
+          focused: V.value,
+          tabindex: M,
+          activeItem: R.value,
+          onFocus: tt,
+          onBlur: Ve,
+          onKeydown: ne,
+          onActiveChange: d,
+          onListChangeStart: nt,
+          onListChangeEnd: a,
+          onContextmenu: Ut,
+          onScroll: Wt
+        }, Zt), null)])]
+      });
+    };
+  }
+});
+function go(e, t, n, o, l) {
+  const {
+    isLeaf: c,
+    expanded: i,
+    loading: v
+  } = n;
+  let S = t;
+  if (v)
+    return C(an, {
+      class: `${e}-switcher-loading-icon`
+    }, null);
+  let f;
+  l && typeof l == "object" && (f = l.showLeafIcon);
+  let K = null;
+  const x = `${e}-switcher-icon`;
+  return c ? l ? f && o ? o(n) : (typeof l == "object" && !f ? K = C("span", {
+    class: `${e}-switcher-leaf-line`
+  }, null) : K = C(sn, {
+    class: `${e}-switcher-line-icon`
+  }, null), K) : null : (K = C(rn, {
+    class: x
+  }, null), l && (K = i ? C(cn, {
+    class: `${e}-switcher-line-icon`
+  }, null) : C(dn, {
+    class: `${e}-switcher-line-icon`
+  }, null)), typeof t == "function" ? S = t(w(w({}, n), {
+    defaultIcon: K,
+    switcherCls: x
+  })) : un(S) && (S = Et(S, {
+    class: x
+  })), S || K);
+}
+const oo = new yn("ant-tree-node-fx-do-not-use", {
+  "0%": {
+    opacity: 0
+  },
+  "100%": {
+    opacity: 1
+  }
+}), lo = (e, t) => ({
+  [`.${e}-switcher-icon`]: {
+    display: "inline-block",
+    fontSize: 10,
+    verticalAlign: "baseline",
+    svg: {
+      transition: `transform ${t.motionDurationSlow}`
+    }
+  }
+}), ao = (e, t) => ({
+  [`.${e}-drop-indicator`]: {
+    position: "absolute",
+    // it should displayed over the following node
+    zIndex: 1,
+    height: 2,
+    backgroundColor: t.colorPrimary,
+    borderRadius: 1,
+    pointerEvents: "none",
+    "&:after": {
+      position: "absolute",
+      top: -3,
+      insetInlineStart: -6,
+      width: 8,
+      height: 8,
+      backgroundColor: "transparent",
+      border: `${t.lineWidthBold}px solid ${t.colorPrimary}`,
+      borderRadius: "50%",
+      content: '""'
+    }
+  }
+}), io = (e, t) => {
+  const {
+    treeCls: n,
+    treeNodeCls: o,
+    treeNodePadding: l,
+    treeTitleHeight: c
+  } = t, i = (c - t.fontSizeLG) / 2, v = t.paddingXS;
+  return {
+    [n]: w(w({}, gn(t)), {
+      background: t.colorBgContainer,
+      borderRadius: t.borderRadius,
+      transition: `background-color ${t.motionDurationSlow}`,
+      [`&${n}-rtl`]: {
+        // >>> Switcher
+        [`${n}-switcher`]: {
+          "&_close": {
+            [`${n}-switcher-icon`]: {
+              svg: {
+                transform: "rotate(90deg)"
+              }
+            }
+          }
+        }
+      },
+      [`&-focused:not(:hover):not(${n}-active-focused)`]: w({}, dt(t)),
+      // =================== Virtual List ===================
+      [`${n}-list-holder-inner`]: {
+        alignItems: "flex-start"
+      },
+      [`&${n}-block-node`]: {
+        [`${n}-list-holder-inner`]: {
+          alignItems: "stretch",
+          // >>> Title
+          [`${n}-node-content-wrapper`]: {
+            flex: "auto"
+          },
+          // >>> Drag
+          [`${o}.dragging`]: {
+            position: "relative",
+            "&:after": {
+              position: "absolute",
+              top: 0,
+              insetInlineEnd: 0,
+              bottom: l,
+              insetInlineStart: 0,
+              border: `1px solid ${t.colorPrimary}`,
+              opacity: 0,
+              animationName: oo,
+              animationDuration: t.motionDurationSlow,
+              animationPlayState: "running",
+              animationFillMode: "forwards",
+              content: '""',
+              pointerEvents: "none"
+            }
+          }
+        }
+      },
+      // ===================== TreeNode =====================
+      [`${o}`]: {
+        display: "flex",
+        alignItems: "flex-start",
+        padding: `0 0 ${l}px 0`,
+        outline: "none",
+        "&-rtl": {
+          direction: "rtl"
+        },
+        // Disabled
+        "&-disabled": {
+          // >>> Title
+          [`${n}-node-content-wrapper`]: {
+            color: t.colorTextDisabled,
+            cursor: "not-allowed",
+            "&:hover": {
+              background: "transparent"
+            }
+          }
+        },
+        [`&-active ${n}-node-content-wrapper`]: w({}, dt(t)),
+        [`&:not(${o}-disabled).filter-node ${n}-title`]: {
+          color: "inherit",
+          fontWeight: 500
+        },
+        "&-draggable": {
+          [`${n}-draggable-icon`]: {
+            width: c,
+            lineHeight: `${c}px`,
+            textAlign: "center",
+            visibility: "visible",
+            opacity: 0.2,
+            transition: `opacity ${t.motionDurationSlow}`,
+            [`${o}:hover &`]: {
+              opacity: 0.45
+            }
+          },
+          [`&${o}-disabled`]: {
+            [`${n}-draggable-icon`]: {
+              visibility: "hidden"
+            }
+          }
+        }
+      },
+      // >>> Indent
+      [`${n}-indent`]: {
+        alignSelf: "stretch",
+        whiteSpace: "nowrap",
+        userSelect: "none",
+        "&-unit": {
+          display: "inline-block",
+          width: c
+        }
+      },
+      // >>> Drag Handler
+      [`${n}-draggable-icon`]: {
+        visibility: "hidden"
+      },
+      // >>> Switcher
+      [`${n}-switcher`]: w(w({}, lo(e, t)), {
+        position: "relative",
+        flex: "none",
+        alignSelf: "stretch",
+        width: c,
+        margin: 0,
+        lineHeight: `${c}px`,
+        textAlign: "center",
+        cursor: "pointer",
+        userSelect: "none",
+        "&-noop": {
+          cursor: "default"
+        },
+        "&_close": {
+          [`${n}-switcher-icon`]: {
+            svg: {
+              transform: "rotate(-90deg)"
+            }
+          }
+        },
+        "&-loading-icon": {
+          color: t.colorPrimary
+        },
+        "&-leaf-line": {
+          position: "relative",
+          zIndex: 1,
+          display: "inline-block",
+          width: "100%",
+          height: "100%",
+          // https://github.com/ant-design/ant-design/issues/31884
+          "&:before": {
+            position: "absolute",
+            top: 0,
+            insetInlineEnd: c / 2,
+            bottom: -l,
+            marginInlineStart: -1,
+            borderInlineEnd: `1px solid ${t.colorBorder}`,
+            content: '""'
+          },
+          "&:after": {
+            position: "absolute",
+            width: c / 2 * 0.8,
+            height: c / 2,
+            borderBottom: `1px solid ${t.colorBorder}`,
+            content: '""'
+          }
+        }
+      }),
+      // >>> Checkbox
+      [`${n}-checkbox`]: {
+        top: "initial",
+        marginInlineEnd: v,
+        marginBlockStart: i
+      },
+      // >>> Title
+      // add `${treeCls}-checkbox + span` to cover checkbox `${checkboxCls} + span`
+      [`${n}-node-content-wrapper, ${n}-checkbox + span`]: {
+        position: "relative",
+        zIndex: "auto",
+        minHeight: c,
+        margin: 0,
+        padding: `0 ${t.paddingXS / 2}px`,
+        color: "inherit",
+        lineHeight: `${c}px`,
+        background: "transparent",
+        borderRadius: t.borderRadius,
+        cursor: "pointer",
+        transition: `all ${t.motionDurationMid}, border 0s, line-height 0s, box-shadow 0s`,
+        "&:hover": {
+          backgroundColor: t.controlItemBgHover
+        },
+        [`&${n}-node-selected`]: {
+          backgroundColor: t.controlItemBgActive
+        },
+        // Icon
+        [`${n}-iconEle`]: {
+          display: "inline-block",
+          width: c,
+          height: c,
+          lineHeight: `${c}px`,
+          textAlign: "center",
+          verticalAlign: "top",
+          "&:empty": {
+            display: "none"
+          }
+        }
+      },
+      // https://github.com/ant-design/ant-design/issues/28217
+      [`${n}-unselectable ${n}-node-content-wrapper:hover`]: {
+        backgroundColor: "transparent"
+      },
+      // ==================== Draggable =====================
+      [`${n}-node-content-wrapper`]: w({
+        lineHeight: `${c}px`,
+        userSelect: "none"
+      }, ao(e, t)),
+      [`${o}.drop-container`]: {
+        "> [draggable]": {
+          boxShadow: `0 0 0 2px ${t.colorPrimary}`
+        }
+      },
+      // ==================== Show Line =====================
+      "&-show-line": {
+        // ================ Indent lines ================
+        [`${n}-indent`]: {
+          "&-unit": {
+            position: "relative",
+            height: "100%",
+            "&:before": {
+              position: "absolute",
+              top: 0,
+              insetInlineEnd: c / 2,
+              bottom: -l,
+              borderInlineEnd: `1px solid ${t.colorBorder}`,
+              content: '""'
+            },
+            "&-end": {
+              "&:before": {
+                display: "none"
+              }
+            }
+          }
+        },
+        // ============== Cover Background ==============
+        [`${n}-switcher`]: {
+          background: "transparent",
+          "&-line-icon": {
+            // https://github.com/ant-design/ant-design/issues/32813
+            verticalAlign: "-0.15em"
+          }
+        }
+      },
+      [`${o}-leaf-last`]: {
+        [`${n}-switcher`]: {
+          "&-leaf-line": {
+            "&:before": {
+              top: "auto !important",
+              bottom: "auto !important",
+              height: `${c / 2}px !important`
+            }
+          }
+        }
+      }
+    })
+  };
+}, so = (e) => {
+  const {
+    treeCls: t,
+    treeNodeCls: n,
+    treeNodePadding: o
+  } = e;
+  return {
+    [`${t}${t}-directory`]: {
+      // ================== TreeNode ==================
+      [n]: {
+        position: "relative",
+        // Hover color
+        "&:before": {
+          position: "absolute",
+          top: 0,
+          insetInlineEnd: 0,
+          bottom: o,
+          insetInlineStart: 0,
+          transition: `background-color ${e.motionDurationMid}`,
+          content: '""',
+          pointerEvents: "none"
+        },
+        "&:hover": {
+          "&:before": {
+            background: e.controlItemBgHover
+          }
+        },
+        // Elements
+        "> *": {
+          zIndex: 1
+        },
+        // >>> Switcher
+        [`${t}-switcher`]: {
+          transition: `color ${e.motionDurationMid}`
+        },
+        // >>> Title
+        [`${t}-node-content-wrapper`]: {
+          borderRadius: 0,
+          userSelect: "none",
+          "&:hover": {
+            background: "transparent"
+          },
+          [`&${t}-node-selected`]: {
+            color: e.colorTextLightSolid,
+            background: "transparent"
+          }
+        },
+        // ============= Selected =============
+        "&-selected": {
+          "\n            &:hover::before,\n            &::before\n          ": {
+            background: e.colorPrimary
+          },
+          // >>> Switcher
+          [`${t}-switcher`]: {
+            color: e.colorTextLightSolid
+          },
+          // >>> Title
+          [`${t}-node-content-wrapper`]: {
+            color: e.colorTextLightSolid,
+            background: "transparent"
+          }
+        }
+      }
+    }
+  };
+}, ro = (e, t) => {
+  const n = `.${e}`, o = `${n}-treenode`, l = t.paddingXS / 2, c = t.controlHeightSM, i = hn(t, {
+    treeCls: n,
+    treeNodeCls: o,
+    treeNodePadding: l,
+    treeTitleHeight: c
+  });
+  return [
+    // Basic
+    io(e, i),
+    // Directory
+    so(i)
+  ];
+}, yo = fn("Tree", (e, t) => {
+  let {
+    prefixCls: n
+  } = t;
+  return [{
+    [e.componentCls]: $n(`${n}-checkbox`, e)
+  }, ro(n, e), vn(e)];
+});
+export {
+  ho as T,
+  mt as V,
+  ro as g,
+  go as r,
+  Wn as t,
+  yo as u
+};

+ 15 - 0
lib/js/isPlainObject.js

@@ -0,0 +1,15 @@
+import { bj as a, an as c, aT as n } from "./index2.js";
+var i = a(Object.getPrototypeOf, Object), s = "[object Object]", b = Function.prototype, j = Object.prototype, e = b.toString, p = j.hasOwnProperty, f = e.call(Object);
+function O(r) {
+  if (!c(r) || n(r) != s)
+    return !1;
+  var o = i(r);
+  if (o === null)
+    return !0;
+  var t = p.call(o, "constructor") && o.constructor;
+  return typeof t == "function" && t instanceof t && e.call(t) == f;
+}
+export {
+  i as g,
+  O as i
+};

+ 18 - 0
lib/js/login.js

@@ -0,0 +1,18 @@
+import { openBlock as o, createElementBlock as t } from "vue";
+import { r as e } from "./index2.js";
+const n = {
+  name: "LoginCommon",
+  data() {
+    return {};
+  },
+  methods: {},
+  mounted() {
+  }
+}, r = { class: "login-common" };
+function c(s, m, a, i, _, d) {
+  return o(), t("div", r, "登录页");
+}
+const l = /* @__PURE__ */ e(n, [["render", c]]);
+export {
+  l as default
+};

+ 42 - 0
lib/js/pickAttrs.js

@@ -0,0 +1,42 @@
+import { _ as i } from "./index2.js";
+const l = `accept acceptcharset accesskey action allowfullscreen allowtransparency
+alt async autocomplete autofocus autoplay capture cellpadding cellspacing challenge
+charset checked classid classname colspan cols content contenteditable contextmenu
+controls coords crossorigin data datetime default defer dir disabled download draggable
+enctype form formaction formenctype formmethod formnovalidate formtarget frameborder
+headers height hidden high href hreflang htmlfor for httpequiv icon id inputmode integrity
+is keyparams keytype kind label lang list loop low manifest marginheight marginwidth max maxlength media
+mediagroup method min minlength multiple muted name novalidate nonce open
+optimum pattern placeholder poster preload radiogroup readonly rel required
+reversed role rowspan rows sandbox scope scoped scrolling seamless selected
+shape size sizes span spellcheck src srcdoc srclang srcset start step style
+summary tabindex target title type usemap value width wmode wrap`, c = `onCopy onCut onPaste onCompositionend onCompositionstart onCompositionupdate onKeydown
+    onKeypress onKeyup onFocus onBlur onChange onInput onSubmit onClick onContextmenu onDoubleclick onDblclick
+    onDrag onDragend onDragenter onDragexit onDragleave onDragover onDragstart onDrop onMousedown
+    onMouseenter onMouseleave onMousemove onMouseout onMouseover onMouseup onSelect onTouchcancel
+    onTouchend onTouchmove onTouchstart onTouchstartPassive onTouchmovePassive onScroll onWheel onAbort onCanplay onCanplaythrough
+    onDurationchange onEmptied onEncrypted onEnded onError onLoadeddata onLoadedmetadata
+    onLoadstart onPause onPlay onPlaying onProgress onRatechange onSeeked onSeeking onStalled onSuspend onTimeupdate onVolumechange onWaiting onLoad onError`, r = `${l} ${c}`.split(/[\s\n]+/), d = "aria-", u = "data-";
+function s(a, n) {
+  return a.indexOf(n) === 0;
+}
+function m(a) {
+  let n = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : !1, o;
+  n === !1 ? o = {
+    aria: !0,
+    data: !0,
+    attr: !0
+  } : n === !0 ? o = {
+    aria: !0
+  } : o = i({}, n);
+  const t = {};
+  return Object.keys(a).forEach((e) => {
+    // Aria
+    (o.aria && (e === "role" || s(e, d)) || // Data
+    o.data && s(e, u) || // Attr
+    o.attr && (r.includes(e) || r.includes(e.toLowerCase()))) && (t[e] = a[e]);
+  }), t;
+}
+export {
+  m as p
+};

File diff suppressed because it is too large
+ 4 - 0
lib/js/routeConvert.js


+ 219 - 0
lib/js/statusUtils.js

@@ -0,0 +1,219 @@
+import { P as s, a as p, m as $ } from "./index2.js";
+import { defineComponent as S, shallowRef as O, createVNode as h, ref as m, watch as M, computed as b } from "vue";
+var K = function(t, a) {
+  var o = {};
+  for (var n in t) Object.prototype.hasOwnProperty.call(t, n) && a.indexOf(n) < 0 && (o[n] = t[n]);
+  if (t != null && typeof Object.getOwnPropertySymbols == "function") for (var l = 0, n = Object.getOwnPropertySymbols(t); l < n.length; l++)
+    a.indexOf(n[l]) < 0 && Object.prototype.propertyIsEnumerable.call(t, n[l]) && (o[n[l]] = t[n[l]]);
+  return o;
+};
+const z = S({
+  compatConfig: {
+    MODE: 3
+  },
+  // inheritAttrs: false,
+  props: {
+    disabled: s.looseBool,
+    type: s.string,
+    value: s.any,
+    tag: {
+      type: String,
+      default: "input"
+    },
+    size: s.string,
+    onChange: Function,
+    onInput: Function,
+    onBlur: Function,
+    onFocus: Function,
+    onKeydown: Function,
+    onCompositionstart: Function,
+    onCompositionend: Function,
+    onKeyup: Function,
+    onPaste: Function,
+    onMousedown: Function
+  },
+  emits: ["change", "input", "blur", "keydown", "focus", "compositionstart", "compositionend", "keyup", "paste", "mousedown"],
+  setup(t, a) {
+    let {
+      expose: o
+    } = a;
+    const n = O(null);
+    return o({
+      focus: () => {
+        n.value && n.value.focus();
+      },
+      blur: () => {
+        n.value && n.value.blur();
+      },
+      input: n,
+      setSelectionRange: (u, c, d) => {
+        var v;
+        (v = n.value) === null || v === void 0 || v.setSelectionRange(u, c, d);
+      },
+      select: () => {
+        var u;
+        (u = n.value) === null || u === void 0 || u.select();
+      },
+      getSelectionStart: () => {
+        var u;
+        return (u = n.value) === null || u === void 0 ? void 0 : u.selectionStart;
+      },
+      getSelectionEnd: () => {
+        var u;
+        return (u = n.value) === null || u === void 0 ? void 0 : u.selectionEnd;
+      },
+      getScrollTop: () => {
+        var u;
+        return (u = n.value) === null || u === void 0 ? void 0 : u.scrollTop;
+      }
+    }), () => {
+      const {
+        tag: u,
+        value: c
+      } = t, d = K(t, ["tag", "value"]);
+      return h(u, p(p({}, d), {}, {
+        ref: n,
+        value: c
+      }), null);
+    };
+  }
+});
+function x(t) {
+  return Object.keys(t).reduce((a, o) => {
+    const n = t[o];
+    return typeof n == "undefined" || n === null || (a += `${o}: ${t[o]};`), a;
+  }, "");
+}
+var D = function(t, a) {
+  var o = {};
+  for (var n in t) Object.prototype.hasOwnProperty.call(t, n) && a.indexOf(n) < 0 && (o[n] = t[n]);
+  if (t != null && typeof Object.getOwnPropertySymbols == "function") for (var l = 0, n = Object.getOwnPropertySymbols(t); l < n.length; l++)
+    a.indexOf(n[l]) < 0 && Object.prototype.propertyIsEnumerable.call(t, n[l]) && (o[n[l]] = t[n[l]]);
+  return o;
+};
+const A = S({
+  compatConfig: {
+    MODE: 3
+  },
+  inheritAttrs: !1,
+  props: {
+    disabled: s.looseBool,
+    type: s.string,
+    value: s.any,
+    lazy: s.bool.def(!0),
+    tag: {
+      type: String,
+      default: "input"
+    },
+    size: s.string,
+    style: s.oneOfType([String, Object]),
+    class: s.string
+  },
+  emits: ["change", "input", "blur", "keydown", "focus", "compositionstart", "compositionend", "keyup", "paste", "mousedown"],
+  setup(t, a) {
+    let {
+      emit: o,
+      attrs: n,
+      expose: l
+    } = a;
+    const r = O(null), f = m(), i = m(!1);
+    M([() => t.value, i], () => {
+      i.value || (f.value = t.value);
+    }, {
+      immediate: !0
+    });
+    const u = (e) => {
+      o("change", e);
+    }, c = (e) => {
+      i.value = !0, e.target.composing = !0, o("compositionstart", e);
+    }, d = (e) => {
+      i.value = !1, e.target.composing = !1, o("compositionend", e);
+      const g = document.createEvent("HTMLEvents");
+      g.initEvent("input", !0, !0), e.target.dispatchEvent(g), u(e);
+    }, v = (e) => {
+      if (i.value && t.lazy) {
+        f.value = e.target.value;
+        return;
+      }
+      o("input", e);
+    }, w = (e) => {
+      o("blur", e);
+    }, _ = (e) => {
+      o("focus", e);
+    }, F = () => {
+      r.value && r.value.focus();
+    }, P = () => {
+      r.value && r.value.blur();
+    }, j = (e) => {
+      o("keydown", e);
+    }, E = (e) => {
+      o("keyup", e);
+    }, C = (e, g, R) => {
+      var y;
+      (y = r.value) === null || y === void 0 || y.setSelectionRange(e, g, R);
+    }, T = () => {
+      var e;
+      (e = r.value) === null || e === void 0 || e.select();
+    };
+    l({
+      focus: F,
+      blur: P,
+      input: b(() => {
+        var e;
+        return (e = r.value) === null || e === void 0 ? void 0 : e.input;
+      }),
+      setSelectionRange: C,
+      select: T,
+      getSelectionStart: () => {
+        var e;
+        return (e = r.value) === null || e === void 0 ? void 0 : e.getSelectionStart();
+      },
+      getSelectionEnd: () => {
+        var e;
+        return (e = r.value) === null || e === void 0 ? void 0 : e.getSelectionEnd();
+      },
+      getScrollTop: () => {
+        var e;
+        return (e = r.value) === null || e === void 0 ? void 0 : e.getScrollTop();
+      }
+    });
+    const k = (e) => {
+      o("mousedown", e);
+    }, B = (e) => {
+      o("paste", e);
+    }, I = b(() => t.style && typeof t.style != "string" ? x(t.style) : t.style);
+    return () => {
+      const e = D(t, ["style", "lazy"]);
+      return h(z, p(p(p({}, e), n), {}, {
+        style: I.value,
+        onInput: v,
+        onChange: u,
+        onBlur: w,
+        onFocus: _,
+        ref: r,
+        value: f.value,
+        onCompositionstart: c,
+        onCompositionend: d,
+        onKeyup: E,
+        onKeydown: j,
+        onPaste: B,
+        onMousedown: k
+      }), null);
+    };
+  }
+});
+function H(t, a, o) {
+  return $({
+    [`${t}-status-success`]: a === "success",
+    [`${t}-status-warning`]: a === "warning",
+    [`${t}-status-error`]: a === "error",
+    [`${t}-status-validating`]: a === "validating",
+    [`${t}-has-feedback`]: o
+  });
+}
+const L = (t, a) => a || t;
+export {
+  A as B,
+  H as a,
+  L as g
+};

+ 15 - 0
lib/js/styleChecker.js

@@ -0,0 +1,15 @@
+import { aX as n } from "./index2.js";
+const d = () => n() && window.document.documentElement;
+let t;
+const l = () => {
+  if (!d())
+    return !1;
+  if (t !== void 0)
+    return t;
+  const e = document.createElement("div");
+  return e.style.display = "flex", e.style.flexDirection = "column", e.style.rowGap = "1px", e.appendChild(document.createElement("div")), e.appendChild(document.createElement("div")), document.body.appendChild(e), t = e.scrollHeight === 1, document.body.removeChild(e), t;
+};
+export {
+  d as c,
+  l as d
+};

File diff suppressed because it is too large
+ 28 - 0
lib/js/todo.js


+ 39 - 0
lib/js/upload.js

@@ -0,0 +1,39 @@
+function u(n) {
+  const i = window.$utils.env.VITE_APP_SYS_SERVER_NAME;
+  return window.$utils.http({
+    url: `${i}/file/preview?id=${n}`
+  });
+}
+function o(n) {
+  return `${window.$utils.env.VUE_APP_PREVIEW_ONLINE}${n}`;
+}
+function d(n) {
+  const i = window.$utils.env.VITE_APP_SYS_SERVER_NAME;
+  return window.$utils.http({
+    url: `${i}/file/download?id=${n}`
+  });
+}
+function l(n, i, t) {
+  const e = window.$utils.env.VITE_APP_SYS_SERVER_NAME, a = new FormData();
+  return a.append("file", n), window.$utils.http({
+    url: `${e}/file/upload?businessTableName=${i}&uid=${t}`,
+    data: a,
+    headers: {
+      "Content-Type": "multipart/form-data"
+    }
+  });
+}
+function s(n, i, t) {
+  const e = window.$utils.env.VITE_APP_SYS_SERVER_NAME;
+  return window.$utils.http({
+    url: `${e}/file/uploadWithBase64?businessTableName=${i}&invariantId=${t}`,
+    data: n
+  });
+}
+export {
+  l as a,
+  o as b,
+  d,
+  u as p,
+  s as u
+};

+ 24 - 0
lib/js/useMergedState.js

@@ -0,0 +1,24 @@
+import { ref as i, unref as o, watchEffect as s, watch as d, toRaw as g } from "vue";
+function m(l, u) {
+  const {
+    defaultValue: a,
+    value: n = i()
+  } = u || {};
+  let t = typeof l == "function" ? l() : l;
+  n.value !== void 0 && (t = o(n)), a !== void 0 && (t = typeof a == "function" ? a() : a);
+  const r = i(t), f = i(t);
+  s(() => {
+    let e = n.value !== void 0 ? n.value : r.value;
+    u.postState && (e = u.postState(e)), f.value = e;
+  });
+  function v(e) {
+    const c = f.value;
+    r.value = e, g(f.value) !== e && u.onChange && u.onChange(e, c);
+  }
+  return d(n, () => {
+    r.value = n.value;
+  }), [f, v];
+}
+export {
+  m as u
+};

+ 27 - 0
lib/js/workbench.js

@@ -0,0 +1,27 @@
+import { resolveComponent as o, openBlock as t, createElementBlock as n, createVNode as r, withCtx as c, createTextVNode as s, createElementVNode as a } from "vue";
+import { r as m } from "./index2.js";
+const _ = {
+  name: "WorkbenchCommon",
+  data() {
+    return {};
+  },
+  methods: {},
+  mounted() {
+  }
+}, d = { class: "workbench-common" }, i = /* @__PURE__ */ a("div", null, "工作台页", -1);
+function l(p, u, h, f, k, x) {
+  const e = o("router-link");
+  return t(), n("div", d, [
+    i,
+    r(e, { to: "/housing/listings" }, {
+      default: c(() => [
+        s("跳转到业务首页")
+      ]),
+      _: 1
+    })
+  ]);
+}
+const v = /* @__PURE__ */ m(_, [["render", l]]);
+export {
+  v as default
+};

+ 57 - 0
package.json

@@ -0,0 +1,57 @@
+{
+  "name": "sapit-ui-plus",
+  "version": "1.0.1",
+  "private": false,
+  "description": "赛普科技 - 底层框架 - 项目基座",
+  "type": "module",
+  "author": "diry",
+  "license": "ISC",
+  "main": "./lib/js/index.js",
+  "module": "./lib/js/index.js",
+  "files": [
+    "lib"
+  ],
+  "scripts": {
+    "dev": "vite",
+    "build": "vite build && @powershell copy './package.json' './dist/' && cd dist && git init && git add -A && git commit -m 'deploy' && git push -f http://59.46.229.138:6010/sapit/sapit-ui-plus.git master",
+    "preview": "vite preview",
+    "lint": "eslint . --ext .vue,.js,.jsx,.cjs,.mjs --fix --ignore-path .gitignore",
+    "format": "prettier --write src/"
+  },
+  "dependencies": {
+    "@ffmpeg/core": "^0.12.6",
+    "@ffmpeg/ffmpeg": "0.12.7",
+    "@ffmpeg/util": "^0.12.1",
+    "ant-design-vue": "4.x",
+    "axios": "^1.7.3",
+    "dayjs": "^1.11.12",
+    "html2canvas": "^1.4.1",
+    "jodit": "3.24.7",
+    "less": "^4.2.0",
+    "less-loader": "^12.2.0",
+    "lodash.clonedeep": "^4.5.0",
+    "lodash.get": "^4.4.2",
+    "moment": "^2.30.1",
+    "nprogress": "^0.2.0",
+    "pinia": "^2.1.7",
+    "pinia-plugin-persist": "^1.0.0",
+    "qs": "^6.13.0",
+    "vite-plugin-generate-file": "^0.2.0",
+    "vite-plugin-html": "^3.2.2",
+    "vue": "^3.4.29",
+    "vue-cropper": "^1.1.4",
+    "vue-i18n": "^9.14.0",
+    "vue-ls": "^4.2.0",
+    "vue-router": "^4.3.3"
+  },
+  "devDependencies": {
+    "@rushstack/eslint-patch": "^1.8.0",
+    "@vitejs/plugin-vue": "^5.0.5",
+    "@vue/eslint-config-prettier": "^9.0.0",
+    "eslint": "^8.57.0",
+    "eslint-plugin-vue": "^9.23.0",
+    "prettier": "^3.2.5",
+    "unplugin-vue-components": "^0.27.3",
+    "vite": "^5.3.1"
+  }
+}

Some files were not shown because too many files changed in this diff