morghulis 4.3.2 → 4.3.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -291,7 +291,7 @@ function jn(e, t) {
291
291
  var Mn = /*#__PURE__*/ wn(An, [["render", jn]]), Nn = /* @__PURE__ */ M({
292
292
  __name: "AccountManage",
293
293
  setup(e) {
294
- let t = I(), { copy: n } = qt(), { post: r } = X(), { $confirm: i, $message: a } = J(), { username_label: o } = Fa();
294
+ let t = I(), { copy: n } = qt(), { post: r } = Y(), { $confirm: i, $message: a } = J(), { username_label: o } = Q();
295
295
  async function s(e) {
296
296
  let t = e.$$fields.find((e) => e.prop === "username");
297
297
  return t && (o.value ? t.label = `* ${o.value}` : (t.label = "* 邮箱", e.$$fields = e.$$fields.filter((e) => e.prop !== "email"))), e;
@@ -308,7 +308,7 @@ var Mn = /*#__PURE__*/ wn(An, [["render", jn]]), Nn = /* @__PURE__ */ M({
308
308
  function u(e) {
309
309
  i.info(`是否重置账户 “${e.username}” 的密码`).then(() => r("valar/retrieve_password", { account_id: e.id })).then(() => a.warning("账户密码已重制")).finally(() => t.value?.manager.reload());
310
310
  }
311
- return (e, n) => (F(), O(w, null, [j(V(da), {
311
+ return (e, n) => (F(), O(w, null, [j(V(pa), {
312
312
  ref_key: "tableRef",
313
313
  ref: t,
314
314
  entity: "valar.Account",
@@ -393,10 +393,10 @@ function J() {
393
393
  }
394
394
  //#endregion
395
395
  //#region morghulis/library/store-user/index.ts
396
- var Y = Kt(() => {
396
+ var Fn = Kt(() => {
397
397
  let e = rn(), t = I("account"), n = Zt("TOKEN", ""), r = Zt("CLIENT", "");
398
398
  r.value ||= an().replace(/-/g, "_");
399
- let i = I(""), a = T(() => !!n.value), o = T(() => Fn(n.value)), s = T(() => Fn(i.value));
399
+ let i = I(""), a = T(() => !!n.value), o = T(() => In(n.value)), s = T(() => In(i.value));
400
400
  function c(e) {
401
401
  i.value = "", n.value = e;
402
402
  }
@@ -418,7 +418,7 @@ var Y = Kt(() => {
418
418
  sign_out: l
419
419
  };
420
420
  });
421
- function Fn(e) {
421
+ function In(e) {
422
422
  if (!e) return {};
423
423
  let t = e.split(".")[1];
424
424
  if (!t) return {};
@@ -427,8 +427,8 @@ function Fn(e) {
427
427
  }
428
428
  //#endregion
429
429
  //#region morghulis/library/use-request/index.ts
430
- function X(e) {
431
- let t = zt(e), { $$message: n } = J(), { base_url: r } = Fa(), { client: i, token: a, sign_out: o, account: s } = Y();
430
+ function Y(e) {
431
+ let t = zt(e), { $$message: n } = J(), { base_url: r } = Q(), { client: i, token: a, sign_out: o, account: s } = Fn();
432
432
  rn();
433
433
  let c = I(!1);
434
434
  console.log(r.value);
@@ -452,7 +452,7 @@ function X(e) {
452
452
  }
453
453
  //#endregion
454
454
  //#region morghulis/library/use-socket/url.ts
455
- function In(e, t, n) {
455
+ function Ln(e, t, n) {
456
456
  let r = new URL(e, n);
457
457
  if (r.protocol === "http:") r.protocol = "ws:";
458
458
  else if (r.protocol === "https:") r.protocol = "wss:";
@@ -461,8 +461,8 @@ function In(e, t, n) {
461
461
  }
462
462
  //#endregion
463
463
  //#region morghulis/library/use-socket/index.ts
464
- var Ln = Kt(() => {
465
- let { client: e } = Y(), { base_url: t } = Fa(), n = T(() => In(t.value, e.value, window.location.href)), r = Ft({
464
+ var Rn = Kt(() => {
465
+ let { client: e } = Fn(), { base_url: t } = Q(), n = T(() => Ln(t.value, e.value, window.location.href)), r = Ft({
466
466
  code: 0,
467
467
  count: 0,
468
468
  retries: 10
@@ -491,8 +491,8 @@ var Ln = Kt(() => {
491
491
  });
492
492
  //#endregion
493
493
  //#region morghulis/library/use-socket-callback/index.ts
494
- function Rn(e, t) {
495
- let { data: n } = Ln();
494
+ function zn(e, t) {
495
+ let { data: n } = Rn();
496
496
  H(() => n, () => {
497
497
  let r = on(n.value || {}), i = r.__tag__;
498
498
  delete r.__tag__, delete r.__timestamp__, i === e && t(r);
@@ -500,17 +500,17 @@ function Rn(e, t) {
500
500
  }
501
501
  //#endregion
502
502
  //#region morghulis/library/use-channel/index.ts
503
- function zn(e) {
503
+ function Bn(e) {
504
504
  let t = zt(e), { mount: n, unmount: r } = Pn();
505
505
  P(() => n(t.value)), Pt(() => r(t.value));
506
- let { post: i, loading: a } = X(T(() => t.value.auth || !1)), { $message: o } = J(), s = I(null), c = I(!1), l = t.value.onError ?? ((e) => console.error(e));
506
+ let { post: i, loading: a } = Y(T(() => t.value.auth || !1)), { $message: o } = J(), s = I(null), c = I(!1), l = t.value.onError ?? ((e) => console.error(e));
507
507
  function u(e) {
508
508
  let { handler: n, token: r } = t.value, a = `valar/channel/${n}/${r}`;
509
509
  c.value = !0, s.value = null, i(a, e).then().catch((e) => {
510
510
  l(`Channel Error: ${e.code}`), c.value = !1, s.value = null;
511
511
  });
512
512
  }
513
- return Rn("channel", (e) => {
513
+ return zn("channel", (e) => {
514
514
  let n = ["handler", "token"];
515
515
  if (!un(pn(e, n), pn(t.value, n))) return;
516
516
  let r = e.callback;
@@ -529,7 +529,7 @@ function zn(e) {
529
529
  }
530
530
  //#endregion
531
531
  //#region morghulis/library/use-dao/consts.ts
532
- var Z = {
532
+ var X = {
533
533
  insert_one: "insert_one",
534
534
  save_one: "save_one",
535
535
  sync_save_many: "sync_save_many",
@@ -548,7 +548,7 @@ var Z = {
548
548
  };
549
549
  //#endregion
550
550
  //#region morghulis/library/use-dao/methods.ts
551
- function Bn(e, t = 0) {
551
+ function Vn(e, t = 0) {
552
552
  let n = Object.fromEntries(e.map((e) => (e.children = [], [e.id, e]))), r = t || 0, i = n[r] ?? {
553
553
  id: r,
554
554
  children: []
@@ -565,8 +565,8 @@ function Bn(e, t = 0) {
565
565
  }
566
566
  //#endregion
567
567
  //#region morghulis/library/use-meta-query/methods.ts
568
- function Vn(e) {
569
- let t = Gn.find((t) => e.endsWith(`__${t}`));
568
+ function Hn(e) {
569
+ let t = Kn.find((t) => e.endsWith(`__${t}`));
570
570
  return t ? {
571
571
  prop: e.replace(`__${t}`, ""),
572
572
  collation: t
@@ -575,7 +575,7 @@ function Vn(e) {
575
575
  collation: null
576
576
  };
577
577
  }
578
- function Hn(e = {}, t) {
578
+ function Un(e = {}, t) {
579
579
  let n = /\${(.*?)}/, r = Object.entries(e).map(([e, r]) => {
580
580
  if (typeof r == "string") {
581
581
  let e = r.match(n);
@@ -585,21 +585,21 @@ function Hn(e = {}, t) {
585
585
  });
586
586
  return Object.fromEntries(r);
587
587
  }
588
- function Un(e, t) {
588
+ function Wn(e, t) {
589
589
  return Object.keys(e || {}).filter((e) => {
590
- let { prop: n } = Vn(e);
590
+ let { prop: n } = Hn(e);
591
591
  return n === t;
592
592
  });
593
593
  }
594
- function Wn(e) {
594
+ function Gn(e) {
595
595
  if (!e) return {};
596
596
  let t = Object.entries(e).map(([e, t]) => {
597
- let { prop: n, collation: r } = Vn(e);
597
+ let { prop: n, collation: r } = Hn(e);
598
598
  return r ? [e, t] : [`${n}__exact`, t];
599
599
  });
600
600
  return Object.fromEntries(t);
601
601
  }
602
- var Gn = [
602
+ var Kn = [
603
603
  "contains",
604
604
  "exact",
605
605
  "startswith",
@@ -616,8 +616,8 @@ var Gn = [
616
616
  "in",
617
617
  "range"
618
618
  ];
619
- function Kn(e, t) {
620
- let { code: n, $entity: r, $name: i, name: a, id: o, $tree: s, $$modes: c } = e, l = qn(e, t);
619
+ function qn(e, t) {
620
+ let { code: n, $entity: r, $name: i, name: a, id: o, $tree: s, $$modes: c } = e, l = Jn(e, t);
621
621
  return {
622
622
  entity: r,
623
623
  code: n,
@@ -627,10 +627,10 @@ function Kn(e, t) {
627
627
  tree: s,
628
628
  model: c,
629
629
  control: l,
630
- fields: Jn(e.$$fields, l, t)
630
+ fields: Yn(e.$$fields, l, t)
631
631
  };
632
632
  }
633
- function qn(e, t) {
633
+ function Jn(e, t) {
634
634
  let n = t?.disabled || e.disabled, r = !n && !!e.allow_edit;
635
635
  return {
636
636
  disabled: n,
@@ -646,7 +646,7 @@ function qn(e, t) {
646
646
  allow_edit_on_sort: r && !!e.allow_edit_on_sort
647
647
  };
648
648
  }
649
- function Jn(e, t, n) {
649
+ function Yn(e, t, n) {
650
650
  return e.map((e) => {
651
651
  let r = { ...e }, i = !r.disabled && !t.disabled, a = !n?.restricted.uneditable.includes(r.prop), o = !n?.restricted.unsearchable.includes(r.prop), s = !n?.restricted.unorderable;
652
652
  return r.disabled = !i, r.allow_edit &&= i && !!t.allow_edit && a, r.allow_search &&= i && !!t.allow_search && o, r.allow_order &&= i && !!t.allow_order && s, r.allow_download &&= i && !!t.allow_download, r.allow_upload &&= i && !!t.allow_upload, r.edit_on_table &&= r.allow_edit, r;
@@ -654,8 +654,8 @@ function Jn(e, t, n) {
654
654
  }
655
655
  //#endregion
656
656
  //#region morghulis/library/use-dao/index.ts
657
- function Q(e, t) {
658
- let n = zt(e), r = zt(t || {}), i = an(), { execute: a, payload: o, loading: s, post: c } = zn(T(() => {
657
+ function Z(e, t) {
658
+ let n = zt(e), r = zt(t || {}), i = an(), { execute: a, payload: o, loading: s, post: c } = Bn(T(() => {
659
659
  let { onStart: e, onError: t, onProceed: a, onResponse: o, onStop: s, auth: c } = r.value;
660
660
  return {
661
661
  handler: `batch/${n.value}`,
@@ -683,31 +683,31 @@ function Q(e, t) {
683
683
  entity: n,
684
684
  manager: {
685
685
  insert_one(e) {
686
- return l(Z.insert_one, e);
686
+ return l(X.insert_one, e);
687
687
  },
688
688
  save_one(e) {
689
- return l(Z.save_one, e);
689
+ return l(X.save_one, e);
690
690
  },
691
691
  sync_save_many(e) {
692
- return l(Z.sync_save_many, e);
692
+ return l(X.sync_save_many, e);
693
693
  },
694
694
  delete_one(e) {
695
- return l(Z.delete_one, e);
695
+ return l(X.delete_one, e);
696
696
  },
697
697
  sync_delete_many(e) {
698
- return l(Z.sync_delete_many, e);
698
+ return l(X.sync_delete_many, e);
699
699
  },
700
700
  fetch(e) {
701
- return e ? l(Z.fetch, e) : new Promise((e) => e(null));
701
+ return e ? l(X.fetch, e) : new Promise((e) => e(null));
702
702
  },
703
703
  find_one(e) {
704
- return l(Z.find_one, e);
704
+ return l(X.find_one, e);
705
705
  },
706
706
  find(e) {
707
- return l(Z.find, e);
707
+ return l(X.find, e);
708
708
  },
709
709
  values(e, t) {
710
- return l(Z.values, {
710
+ return l(X.values, {
711
711
  props: e,
712
712
  ...t
713
713
  });
@@ -718,7 +718,7 @@ function Q(e, t) {
718
718
  mapping: {},
719
719
  total: 0
720
720
  };
721
- let o = await l(`${Z.search}/${a}`, {
721
+ let o = await l(`${X.search}/${a}`, {
722
722
  ...e,
723
723
  size: t,
724
724
  page: i,
@@ -728,32 +728,32 @@ function Q(e, t) {
728
728
  },
729
729
  tree: (e, t = 0, n = "default") => {
730
730
  e ||= {};
731
- let i = `${Z.search}/${n}`;
731
+ let i = `${X.search}/${n}`;
732
732
  return new Promise((n, a) => {
733
733
  l(i, {
734
734
  ...e,
735
735
  root: t,
736
736
  type: "tree"
737
737
  }).then((e) => {
738
- let i = Bn(e.results, t), a = r.value.convertor;
738
+ let i = Vn(e.results, t), a = r.value.convertor;
739
739
  a && Object.values(i.mapping).forEach((e) => a(e)), n(i);
740
740
  }).catch((e) => a(e));
741
741
  });
742
742
  },
743
743
  sync_update_many(e, t) {
744
- return l(Z.sync_update_many, {
744
+ return l(X.sync_update_many, {
745
745
  template: e,
746
746
  ...t
747
747
  });
748
748
  },
749
749
  save_many: (e) => {
750
- u(Z.save_many, e);
750
+ u(X.save_many, e);
751
751
  },
752
752
  delete_many: (e) => {
753
- u(Z.delete_many, e);
753
+ u(X.delete_many, e);
754
754
  },
755
755
  update_many: (e, t) => {
756
- u(Z.update_many, {
756
+ u(X.update_many, {
757
757
  template: e,
758
758
  ...t
759
759
  });
@@ -763,11 +763,11 @@ function Q(e, t) {
763
763
  currentId: t,
764
764
  items: e
765
765
  };
766
- u(Z.sorting, n);
766
+ u(X.sorting, n);
767
767
  },
768
768
  async meta(e) {
769
769
  if (!n.value) throw Error("未指定实体,无法读取元数据");
770
- return Kn(await c(`valar/${n.value}/${e || "default"}/meta_view`));
770
+ return qn(await c(`valar/${n.value}/${e || "default"}/meta_view`));
771
771
  }
772
772
  },
773
773
  payload: o,
@@ -776,7 +776,7 @@ function Q(e, t) {
776
776
  }
777
777
  //#endregion
778
778
  //#region morghulis/library/use-meta-query/consts.ts
779
- var Yn = [
779
+ var Xn = [
780
780
  ".xls",
781
781
  ".xlsx",
782
782
  ".doc",
@@ -796,7 +796,7 @@ var Yn = [
796
796
  ".zip",
797
797
  ".rar",
798
798
  ".exe"
799
- ], Xn = {
799
+ ], Zn = {
800
800
  year: {
801
801
  label: "年度",
802
802
  value: "YYYY"
@@ -845,7 +845,7 @@ var Yn = [
845
845
  label: "时间",
846
846
  value: "HH:mm:ss"
847
847
  }
848
- }, Zn = {
848
+ }, Qn = {
849
849
  multiple: [
850
850
  "ManyToManyField",
851
851
  "ManyToManyRel",
@@ -892,11 +892,11 @@ var Yn = [
892
892
  };
893
893
  //#endregion
894
894
  //#region morghulis/library/use-meta-query/index.ts
895
- function Qn(e) {
895
+ function $n(e) {
896
896
  let t = I({}), n = I(e.value.orders ?? { sort: -1 }), r = T(() => {
897
897
  let t = Object.entries(e.value.includes || {}).filter((e) => !e[0].includes("__"));
898
898
  return Object.fromEntries(t);
899
- }), { post: i } = X(), a = I(), o = 0, s = !1;
899
+ }), { post: i } = Y(), a = I(), o = 0, s = !1;
900
900
  Nt(() => {
901
901
  s = !0, o++;
902
902
  });
@@ -916,12 +916,12 @@ function Qn(e) {
916
916
  let i = {
917
917
  disabled: !!e.value.disabled,
918
918
  restricted: {
919
- unsearchable: Object.keys(e.value.includes || {}).map((e) => Vn(e).prop),
919
+ unsearchable: Object.keys(e.value.includes || {}).map((e) => Hn(e).prop),
920
920
  uneditable: Object.keys(r.value),
921
921
  unorderable: un(n, { sort: -1 })
922
922
  }
923
923
  };
924
- return Kn(t.data, i);
924
+ return qn(t.data, i);
925
925
  });
926
926
  async function l() {
927
927
  if (s) return;
@@ -952,14 +952,14 @@ function Qn(e) {
952
952
  init: l,
953
953
  conditions: T(() => {
954
954
  let { includes: n, excludes: r } = e.value;
955
- return n = Wn(n), r = Wn(r), [fn({
955
+ return n = Gn(n), r = Gn(r), [fn({
956
956
  includes: n,
957
957
  excludes: r
958
- }, $n(t.value, c.value?.fields)), ...e.value.conditions || []];
958
+ }, er(t.value, c.value?.fields)), ...e.value.conditions || []];
959
959
  })
960
960
  };
961
961
  }
962
- function $n(e, t = []) {
962
+ function er(e, t = []) {
963
963
  let n = {
964
964
  includes: {},
965
965
  excludes: {}
@@ -970,10 +970,10 @@ function $n(e, t = []) {
970
970
  let s = n[i], c = t.find((t) => t.prop === e);
971
971
  if (!c) return;
972
972
  let { domain: l, refer: { label: u } } = c;
973
- if (Zn.linkage.includes(l)) {
973
+ if (Qn.linkage.includes(l)) {
974
974
  let t = `${`${e.replace("_id", "")}__${u}`}__${a}`;
975
975
  s[t] = o;
976
- } else if (Zn.multiple.includes(l)) {
976
+ } else if (Qn.multiple.includes(l)) {
977
977
  let t = `${`${e}__${u}`}__${a}`;
978
978
  s[t] = o;
979
979
  } else {
@@ -984,7 +984,7 @@ function $n(e, t = []) {
984
984
  }
985
985
  //#endregion
986
986
  //#region morghulis/library/use-valar/index.ts
987
- function er(e, t) {
987
+ function tr(e, t) {
988
988
  let n = I(), r = I(), i = I({
989
989
  results: [],
990
990
  total: 0,
@@ -997,7 +997,7 @@ function er(e, t) {
997
997
  Nt(() => {
998
998
  c = !0, s++;
999
999
  });
1000
- let { finder: l, orders: u, core: d, meta: f, init: p, conditions: m } = Qn(e), { loading: h, manager: g } = Q(T(() => f.value.entity), {
1000
+ let { finder: l, orders: u, core: d, meta: f, init: p, conditions: m } = $n(e), { loading: h, manager: g } = Z(T(() => f.value.entity), {
1001
1001
  convertor: e.value.convertor,
1002
1002
  onStart: () => {
1003
1003
  n.value = void 0, r.value = null;
@@ -1144,10 +1144,10 @@ function er(e, t) {
1144
1144
  }
1145
1145
  //#endregion
1146
1146
  //#region morghulis/components/tree/tools/DTreeNode.vue?vue&type=script&setup=true&lang.ts
1147
- var tr = {
1147
+ var nr = {
1148
1148
  key: 0,
1149
1149
  class: "danger"
1150
- }, nr = /* @__PURE__ */ M({
1150
+ }, rr = /* @__PURE__ */ M({
1151
1151
  __name: "DTreeNode",
1152
1152
  props: {
1153
1153
  node: {},
@@ -1187,9 +1187,9 @@ var tr = {
1187
1187
  "icon",
1188
1188
  "type",
1189
1189
  "shake"
1190
- ])), k("span", null, [(F(!0), O(w, null, L(i.value, (t, n) => (F(), O(w, { key: n }, [n > 0 ? (F(), O("u", tr, B(e.queryString), 1)) : D("", !0), A(B(t), 1)], 64))), 128))])], 64));
1190
+ ])), k("span", null, [(F(!0), O(w, null, L(i.value, (t, n) => (F(), O(w, { key: n }, [n > 0 ? (F(), O("u", nr, B(e.queryString), 1)) : D("", !0), A(B(t), 1)], 64))), 128))])], 64));
1191
1191
  }
1192
- }), rr = /* @__PURE__ */ M({
1192
+ }), ir = /* @__PURE__ */ M({
1193
1193
  __name: "MPopover",
1194
1194
  props: {
1195
1195
  title: {},
@@ -1264,7 +1264,7 @@ var tr = {
1264
1264
  ])], 64);
1265
1265
  };
1266
1266
  }
1267
- }), ir = /* @__PURE__ */ M({
1267
+ }), ar = /* @__PURE__ */ M({
1268
1268
  __name: "CharCell",
1269
1269
  props: {
1270
1270
  modelValue: {},
@@ -1301,7 +1301,7 @@ var tr = {
1301
1301
  ]);
1302
1302
  };
1303
1303
  }
1304
- }), ar = { class: "full" }, or = /*#__PURE__*/ wn(/* @__PURE__ */ M({
1304
+ }), or = { class: "full" }, sr = /*#__PURE__*/ wn(/* @__PURE__ */ M({
1305
1305
  __name: "ColorCell",
1306
1306
  props: {
1307
1307
  modelValue: {},
@@ -1339,7 +1339,7 @@ var tr = {
1339
1339
  span: 9,
1340
1340
  align: "center"
1341
1341
  }, {
1342
- default: U(() => [k("div", ar, [k("b", {
1342
+ default: U(() => [k("div", or, [k("b", {
1343
1343
  class: "color-pick-label",
1344
1344
  style: jt({ color: V(n) || "#dddddd" }),
1345
1345
  onClick: a
@@ -1350,7 +1350,7 @@ var tr = {
1350
1350
  });
1351
1351
  };
1352
1352
  }
1353
- }), [["__scopeId", "data-v-b4e1f98e"]]), sr = /* @__PURE__ */ "0.1.2.3.4.5.6.7.8.9.a.ad.add.address-book.address-card.adjust.air-freshener.align-center.align-justify.align-left.align-right.allergies.ambulance.american-sign-language-interpreting.anchor.anchor-circle-check.anchor-circle-exclamation.anchor-circle-xmark.anchor-lock.angle-double-down.angle-double-left.angle-double-right.angle-double-up.angle-down.angle-left.angle-right.angle-up.angles-down.angles-left.angles-right.angles-up.angry.ankh.apple-alt.apple-whole.archive.archway.area-chart.arrow-alt-circle-down.arrow-alt-circle-left.arrow-alt-circle-right.arrow-alt-circle-up.arrow-circle-down.arrow-circle-left.arrow-circle-right.arrow-circle-up.arrow-down.arrow-down-1-9.arrow-down-9-1.arrow-down-a-z.arrow-down-long.arrow-down-short-wide.arrow-down-up-across-line.arrow-down-up-lock.arrow-down-wide-short.arrow-down-z-a.arrow-left.arrow-left-long.arrow-left-rotate.arrow-pointer.arrow-right.arrow-right-arrow-left.arrow-right-from-bracket.arrow-right-from-file.arrow-right-long.arrow-right-rotate.arrow-right-to-bracket.arrow-right-to-city.arrow-right-to-file.arrow-rotate-back.arrow-rotate-backward.arrow-rotate-forward.arrow-rotate-left.arrow-rotate-right.arrow-trend-down.arrow-trend-up.arrow-turn-down.arrow-turn-up.arrow-up.arrow-up-1-9.arrow-up-9-1.arrow-up-a-z.arrow-up-from-bracket.arrow-up-from-ground-water.arrow-up-from-water-pump.arrow-up-long.arrow-up-right-dots.arrow-up-right-from-square.arrow-up-short-wide.arrow-up-wide-short.arrow-up-z-a.arrows.arrows-alt.arrows-alt-h.arrows-alt-v.arrows-down-to-line.arrows-down-to-people.arrows-h.arrows-left-right.arrows-left-right-to-line.arrows-rotate.arrows-spin.arrows-split-up-and-left.arrows-to-circle.arrows-to-dot.arrows-to-eye.arrows-turn-right.arrows-turn-to-dots.arrows-up-down.arrows-up-down-left-right.arrows-up-to-line.arrows-v.asl-interpreting.assistive-listening-systems.asterisk.at.atlas.atom.audio-description.austral-sign.automobile.award.b.baby.baby-carriage.backspace.backward.backward-fast.backward-step.bacon.bacteria.bacterium.bag-shopping.bahai.baht-sign.balance-scale.balance-scale-left.balance-scale-right.ban.ban-smoking.band-aid.bandage.bangladeshi-taka-sign.bank.bar-chart.barcode.bars.bars-progress.bars-staggered.baseball.baseball-ball.baseball-bat-ball.basket-shopping.basketball.basketball-ball.bath.bathtub.battery.battery-0.battery-2.battery-3.battery-4.battery-5.battery-car.battery-empty.battery-full.battery-half.battery-quarter.battery-three-quarters.bed.bed-pulse.beer.beer-mug-empty.bell.bell-concierge.bell-slash.bezier-curve.bible.bicycle.biking.binoculars.biohazard.birthday-cake.bitcoin-sign.blackboard.blender.blender-phone.blind.blog.bold.bolt.bolt-lightning.bomb.bone.bong.book.book-atlas.book-bible.book-bookmark.book-dead.book-journal-whills.book-medical.book-open.book-open-reader.book-quran.book-reader.book-skull.book-tanakh.bookmark.border-all.border-none.border-style.border-top-left.bore-hole.bottle-droplet.bottle-water.bowl-food.bowl-rice.bowling-ball.box.box-archive.box-open.box-tissue.boxes.boxes-alt.boxes-packing.boxes-stacked.braille.brain.brazilian-real-sign.bread-slice.bridge.bridge-circle-check.bridge-circle-exclamation.bridge-circle-xmark.bridge-lock.bridge-water.briefcase.briefcase-clock.briefcase-medical.broadcast-tower.broom.broom-ball.brush.bucket.bug.bug-slash.bugs.building.building-circle-arrow-right.building-circle-check.building-circle-exclamation.building-circle-xmark.building-columns.building-flag.building-lock.building-ngo.building-shield.building-un.building-user.building-wheat.bullhorn.bullseye.burger.burn.burst.bus.bus-alt.bus-simple.business-time.c.cab.cable-car.cake.cake-candles.calculator.calendar.calendar-alt.calendar-check.calendar-day.calendar-days.calendar-minus.calendar-plus.calendar-times.calendar-week.calendar-xmark.camera.camera-alt.camera-retro.camera-rotate.campground.cancel.candy-cane.cannabis.capsules.car.car-alt.car-battery.car-burst.car-crash.car-on.car-rear.car-side.car-tunnel.caravan.caret-down.caret-left.caret-right.caret-square-down.caret-square-left.caret-square-right.caret-square-up.caret-up.carriage-baby.carrot.cart-arrow-down.cart-flatbed.cart-flatbed-suitcase.cart-plus.cart-shopping.cash-register.cat.cedi-sign.cent-sign.certificate.chain.chain-broken.chain-slash.chair.chalkboard.chalkboard-teacher.chalkboard-user.champagne-glasses.charging-station.chart-area.chart-bar.chart-column.chart-diagram.chart-gantt.chart-line.chart-pie.chart-simple.check.check-circle.check-double.check-square.check-to-slot.cheese.chess.chess-bishop.chess-board.chess-king.chess-knight.chess-pawn.chess-queen.chess-rook.chevron-circle-down.chevron-circle-left.chevron-circle-right.chevron-circle-up.chevron-down.chevron-left.chevron-right.chevron-up.child.child-combatant.child-dress.child-reaching.child-rifle.children.church.circle.circle-arrow-down.circle-arrow-left.circle-arrow-right.circle-arrow-up.circle-check.circle-chevron-down.circle-chevron-left.circle-chevron-right.circle-chevron-up.circle-dollar-to-slot.circle-dot.circle-down.circle-exclamation.circle-h.circle-half-stroke.circle-info.circle-left.circle-minus.circle-nodes.circle-notch.circle-pause.circle-play.circle-plus.circle-question.circle-radiation.circle-right.circle-stop.circle-up.circle-user.circle-xmark.city.clapperboard.clinic-medical.clipboard.clipboard-check.clipboard-list.clipboard-question.clipboard-user.clock.clock-four.clock-rotate-left.clone.close.closed-captioning.cloud.cloud-arrow-down.cloud-arrow-up.cloud-bolt.cloud-download.cloud-download-alt.cloud-meatball.cloud-moon.cloud-moon-rain.cloud-rain.cloud-showers-heavy.cloud-showers-water.cloud-sun.cloud-sun-rain.cloud-upload.cloud-upload-alt.clover.cny.cocktail.code.code-branch.code-commit.code-compare.code-fork.code-merge.code-pull-request.coffee.cog.cogs.coins.colon-sign.columns.comment.comment-alt.comment-dollar.comment-dots.comment-medical.comment-nodes.comment-slash.comment-sms.commenting.comments.comments-dollar.compact-disc.compass.compass-drafting.compress.compress-alt.compress-arrows-alt.computer.computer-mouse.concierge-bell.contact-book.contact-card.cookie.cookie-bite.copy.copyright.couch.cow.credit-card.credit-card-alt.crop.crop-alt.crop-simple.cross.crosshairs.crow.crown.crutch.cruzeiro-sign.cube.cubes.cubes-stacked.cut.cutlery.d.dashboard.database.deaf.deafness.dedent.delete-left.democrat.desktop.desktop-alt.dharmachakra.diagnoses.diagram-next.diagram-predecessor.diagram-project.diagram-successor.diamond.diamond-turn-right.dice.dice-d20.dice-d6.dice-five.dice-four.dice-one.dice-six.dice-three.dice-two.digging.digital-tachograph.directions.disease.display.divide.dizzy.dna.dog.dollar.dollar-sign.dolly.dolly-box.dolly-flatbed.donate.dong-sign.door-closed.door-open.dot-circle.dove.down-left-and-up-right-to-center.down-long.download.drafting-compass.dragon.draw-polygon.drivers-license.droplet.droplet-slash.drum.drum-steelpan.drumstick-bite.dumbbell.dumpster.dumpster-fire.dungeon.e.ear-deaf.ear-listen.earth.earth-africa.earth-america.earth-americas.earth-asia.earth-europe.earth-oceania.edit.egg.eject.elevator.ellipsis.ellipsis-h.ellipsis-v.ellipsis-vertical.envelope.envelope-circle-check.envelope-open.envelope-open-text.envelope-square.envelopes-bulk.equals.eraser.ethernet.eur.euro.euro-sign.exchange.exchange-alt.exclamation.exclamation-circle.exclamation-triangle.expand.expand-alt.expand-arrows-alt.explosion.external-link.external-link-alt.external-link-square.external-link-square-alt.eye.eye-dropper.eye-dropper-empty.eye-low-vision.eye-slash.eyedropper.f.face-angry.face-dizzy.face-flushed.face-frown.face-frown-open.face-grimace.face-grin.face-grin-beam.face-grin-beam-sweat.face-grin-hearts.face-grin-squint.face-grin-squint-tears.face-grin-stars.face-grin-tears.face-grin-tongue.face-grin-tongue-squint.face-grin-tongue-wink.face-grin-wide.face-grin-wink.face-kiss.face-kiss-beam.face-kiss-wink-heart.face-laugh.face-laugh-beam.face-laugh-squint.face-laugh-wink.face-meh.face-meh-blank.face-rolling-eyes.face-sad-cry.face-sad-tear.face-smile.face-smile-beam.face-smile-wink.face-surprise.face-tired.fan.faucet.faucet-drip.fax.feather.feather-alt.feather-pointed.feed.female.ferry.fighter-jet.file.file-alt.file-archive.file-arrow-down.file-arrow-up.file-audio.file-circle-check.file-circle-exclamation.file-circle-minus.file-circle-plus.file-circle-question.file-circle-xmark.file-clipboard.file-code.file-contract.file-csv.file-download.file-edit.file-excel.file-export.file-fragment.file-half-dashed.file-image.file-import.file-invoice.file-invoice-dollar.file-lines.file-medical.file-medical-alt.file-pdf.file-pen.file-powerpoint.file-prescription.file-shield.file-signature.file-text.file-upload.file-video.file-waveform.file-word.file-zipper.fill.fill-drip.film.filter.filter-circle-dollar.filter-circle-xmark.fingerprint.fire.fire-alt.fire-burner.fire-extinguisher.fire-flame-curved.fire-flame-simple.first-aid.fish.fish-fins.fist-raised.flag.flag-checkered.flag-usa.flask.flask-vial.floppy-disk.florin-sign.flushed.folder.folder-blank.folder-closed.folder-minus.folder-open.folder-plus.folder-tree.font.font-awesome.font-awesome-flag.font-awesome-logo-full.football.football-ball.forward.forward-fast.forward-step.franc-sign.frog.frown.frown-open.funnel-dollar.futbol.futbol-ball.g.gamepad.gas-pump.gauge.gauge-high.gauge-med.gauge-simple.gauge-simple-high.gauge-simple-med.gavel.gbp.gear.gears.gem.genderless.ghost.gift.gifts.glass-cheers.glass-martini.glass-martini-alt.glass-water.glass-water-droplet.glass-whiskey.glasses.globe.globe-africa.globe-americas.globe-asia.globe-europe.globe-oceania.golf-ball.golf-ball-tee.gopuram.graduation-cap.greater-than.greater-than-equal.grimace.grin.grin-alt.grin-beam.grin-beam-sweat.grin-hearts.grin-squint.grin-squint-tears.grin-stars.grin-tears.grin-tongue.grin-tongue-squint.grin-tongue-wink.grin-wink.grip.grip-horizontal.grip-lines.grip-lines-vertical.grip-vertical.group-arrows-rotate.guarani-sign.guitar.gun.h.h-square.hamburger.hammer.hamsa.hand.hand-back-fist.hand-dots.hand-fist.hand-holding.hand-holding-dollar.hand-holding-droplet.hand-holding-hand.hand-holding-heart.hand-holding-medical.hand-holding-usd.hand-holding-water.hand-lizard.hand-middle-finger.hand-paper.hand-peace.hand-point-down.hand-point-left.hand-point-right.hand-point-up.hand-pointer.hand-rock.hand-scissors.hand-sparkles.hand-spock.handcuffs.hands.hands-american-sign-language-interpreting.hands-asl-interpreting.hands-bound.hands-bubbles.hands-clapping.hands-helping.hands-holding.hands-holding-child.hands-holding-circle.hands-praying.hands-wash.handshake.handshake-alt.handshake-alt-slash.handshake-angle.handshake-simple.handshake-simple-slash.handshake-slash.hanukiah.hard-drive.hard-hat.hard-of-hearing.hashtag.hat-cowboy.hat-cowboy-side.hat-hard.hat-wizard.haykal.hdd.head-side-cough.head-side-cough-slash.head-side-mask.head-side-virus.header.heading.headphones.headphones-alt.headphones-simple.headset.heart.heart-broken.heart-circle-bolt.heart-circle-check.heart-circle-exclamation.heart-circle-minus.heart-circle-plus.heart-circle-xmark.heart-crack.heart-music-camera-bolt.heart-pulse.heartbeat.helicopter.helicopter-symbol.helmet-safety.helmet-un.hexagon-nodes.hexagon-nodes-bolt.highlighter.hiking.hill-avalanche.hill-rockslide.hippo.history.hockey-puck.holly-berry.home.home-alt.home-lg.home-lg-alt.home-user.horse.horse-head.hospital.hospital-alt.hospital-symbol.hospital-user.hospital-wide.hot-tub.hot-tub-person.hotdog.hotel.hourglass.hourglass-1.hourglass-2.hourglass-3.hourglass-empty.hourglass-end.hourglass-half.hourglass-start.house.house-chimney.house-chimney-crack.house-chimney-medical.house-chimney-user.house-chimney-window.house-circle-check.house-circle-exclamation.house-circle-xmark.house-crack.house-damage.house-fire.house-flag.house-flood-water.house-flood-water-circle-arrow-right.house-laptop.house-lock.house-medical.house-medical-circle-check.house-medical-circle-exclamation.house-medical-circle-xmark.house-medical-flag.house-signal.house-tsunami.house-user.hryvnia.hryvnia-sign.hurricane.i.i-cursor.ice-cream.icicles.icons.id-badge.id-card.id-card-alt.id-card-clip.igloo.ils.image.image-portrait.images.inbox.indent.indian-rupee.indian-rupee-sign.industry.infinity.info.info-circle.inr.institution.italic.j.jar.jar-wheat.jedi.jet-fighter.jet-fighter-up.joint.journal-whills.jpy.jug-detergent.k.kaaba.key.keyboard.khanda.kip-sign.kiss.kiss-beam.kiss-wink-heart.kit-medical.kitchen-set.kiwi-bird.krw.l.ladder-water.land-mine-on.landmark.landmark-alt.landmark-dome.landmark-flag.language.laptop.laptop-code.laptop-file.laptop-house.laptop-medical.lari-sign.laugh.laugh-beam.laugh-squint.laugh-wink.layer-group.leaf.left-long.left-right.legal.lemon.less-than.less-than-equal.level-down.level-down-alt.level-up.level-up-alt.life-ring.lightbulb.line-chart.lines-leaning.link.link-slash.lira-sign.list.list-1-2.list-alt.list-check.list-dots.list-numeric.list-ol.list-squares.list-ul.litecoin-sign.location.location-arrow.location-crosshairs.location-dot.location-pin.location-pin-lock.lock.lock-open.locust.long-arrow-alt-down.long-arrow-alt-left.long-arrow-alt-right.long-arrow-alt-up.long-arrow-down.long-arrow-left.long-arrow-right.long-arrow-up.low-vision.luggage-cart.lungs.lungs-virus.m.magic.magic-wand-sparkles.magnet.magnifying-glass.magnifying-glass-arrow-right.magnifying-glass-chart.magnifying-glass-dollar.magnifying-glass-location.magnifying-glass-minus.magnifying-glass-plus.mail-bulk.mail-forward.mail-reply.mail-reply-all.male.manat-sign.map.map-location.map-location-dot.map-marked.map-marked-alt.map-marker.map-marker-alt.map-pin.map-signs.marker.mars.mars-and-venus.mars-and-venus-burst.mars-double.mars-stroke.mars-stroke-h.mars-stroke-right.mars-stroke-up.mars-stroke-v.martini-glass.martini-glass-citrus.martini-glass-empty.mask.mask-face.mask-ventilator.masks-theater.mattress-pillow.maximize.medal.medkit.meh.meh-blank.meh-rolling-eyes.memory.menorah.mercury.message.meteor.microchip.microphone.microphone-alt.microphone-alt-slash.microphone-lines.microphone-lines-slash.microphone-slash.microscope.mill-sign.minimize.minus.minus-circle.minus-square.mitten.mobile.mobile-alt.mobile-android.mobile-android-alt.mobile-button.mobile-phone.mobile-retro.mobile-screen.mobile-screen-button.money-bill.money-bill-1.money-bill-1-wave.money-bill-alt.money-bill-transfer.money-bill-trend-up.money-bill-wave.money-bill-wave-alt.money-bill-wheat.money-bills.money-check.money-check-alt.money-check-dollar.monument.moon.mortar-board.mortar-pestle.mosque.mosquito.mosquito-net.motorcycle.mound.mountain.mountain-city.mountain-sun.mouse.mouse-pointer.mug-hot.mug-saucer.multiply.museum.music.n.naira-sign.navicon.network-wired.neuter.newspaper.not-equal.notdef.note-sticky.notes-medical.o.object-group.object-ungroup.oil-can.oil-well.om.otter.outdent.p.pager.paint-brush.paint-roller.paintbrush.palette.pallet.panorama.paper-plane.paperclip.parachute-box.paragraph.parking.passport.pastafarianism.paste.pause.pause-circle.paw.peace.pen.pen-alt.pen-clip.pen-fancy.pen-nib.pen-ruler.pen-square.pen-to-square.pencil.pencil-alt.pencil-ruler.pencil-square.people-arrows.people-arrows-left-right.people-carry.people-carry-box.people-group.people-line.people-pulling.people-robbery.people-roof.pepper-hot.percent.percentage.person.person-arrow-down-to-line.person-arrow-up-from-line.person-biking.person-booth.person-breastfeeding.person-burst.person-cane.person-chalkboard.person-circle-check.person-circle-exclamation.person-circle-minus.person-circle-plus.person-circle-question.person-circle-xmark.person-digging.person-dots-from-line.person-dress.person-dress-burst.person-drowning.person-falling.person-falling-burst.person-half-dress.person-harassing.person-hiking.person-military-pointing.person-military-rifle.person-military-to-person.person-praying.person-pregnant.person-rays.person-rifle.person-running.person-shelter.person-skating.person-skiing.person-skiing-nordic.person-snowboarding.person-swimming.person-through-window.person-walking.person-walking-arrow-loop-left.person-walking-arrow-right.person-walking-dashed-line-arrow-right.person-walking-luggage.person-walking-with-cane.peseta-sign.peso-sign.phone.phone-alt.phone-flip.phone-slash.phone-square.phone-square-alt.phone-volume.photo-film.photo-video.pie-chart.piggy-bank.pills.ping-pong-paddle-ball.pizza-slice.place-of-worship.plane.plane-arrival.plane-circle-check.plane-circle-exclamation.plane-circle-xmark.plane-departure.plane-lock.plane-slash.plane-up.plant-wilt.plate-wheat.play.play-circle.plug.plug-circle-bolt.plug-circle-check.plug-circle-exclamation.plug-circle-minus.plug-circle-plus.plug-circle-xmark.plus.plus-circle.plus-minus.plus-square.podcast.poll.poll-h.poo.poo-bolt.poo-storm.poop.portrait.pound-sign.power-off.pray.praying-hands.prescription.prescription-bottle.prescription-bottle-alt.prescription-bottle-medical.print.procedures.project-diagram.pump-medical.pump-soap.puzzle-piece.q.qrcode.question.question-circle.quidditch.quidditch-broom-ball.quote-left.quote-left-alt.quote-right.quote-right-alt.quran.r.radiation.radiation-alt.radio.rainbow.random.ranking-star.receipt.record-vinyl.rectangle-ad.rectangle-list.rectangle-times.rectangle-xmark.recycle.redo.redo-alt.refresh.registered.remove.remove-format.reorder.repeat.reply.reply-all.republican.restroom.retweet.ribbon.right-from-bracket.right-left.right-long.right-to-bracket.ring.rmb.road.road-barrier.road-bridge.road-circle-check.road-circle-exclamation.road-circle-xmark.road-lock.road-spikes.robot.rocket.rod-asclepius.rod-snake.rotate.rotate-back.rotate-backward.rotate-forward.rotate-left.rotate-right.rouble.route.rss.rss-square.rub.ruble.ruble-sign.rug.ruler.ruler-combined.ruler-horizontal.ruler-vertical.running.rupee.rupee-sign.rupiah-sign.s.sack-dollar.sack-xmark.sad-cry.sad-tear.sailboat.satellite.satellite-dish.save.scale-balanced.scale-unbalanced.scale-unbalanced-flip.school.school-circle-check.school-circle-exclamation.school-circle-xmark.school-flag.school-lock.scissors.screwdriver.screwdriver-wrench.scroll.scroll-torah.sd-card.search.search-dollar.search-location.search-minus.search-plus.section.seedling.server.shapes.share.share-alt.share-alt-square.share-from-square.share-nodes.share-square.sheet-plastic.shekel.shekel-sign.sheqel.sheqel-sign.shield.shield-alt.shield-blank.shield-cat.shield-dog.shield-halved.shield-heart.shield-virus.ship.shipping-fast.shirt.shoe-prints.shop.shop-lock.shop-slash.shopping-bag.shopping-basket.shopping-cart.shower.shrimp.shuffle.shuttle-space.shuttle-van.sign.sign-hanging.sign-in.sign-in-alt.sign-language.sign-out.sign-out-alt.signal.signal-5.signal-perfect.signature.signing.signs-post.sim-card.sink.sitemap.skating.skiing.skiing-nordic.skull.skull-crossbones.slash.sleigh.sliders.sliders-h.smile.smile-beam.smile-wink.smog.smoking.smoking-ban.sms.snowboarding.snowflake.snowman.snowplow.soap.soccer-ball.socks.solar-panel.sort.sort-alpha-asc.sort-alpha-desc.sort-alpha-down.sort-alpha-down-alt.sort-alpha-up.sort-alpha-up-alt.sort-amount-asc.sort-amount-desc.sort-amount-down.sort-amount-down-alt.sort-amount-up.sort-amount-up-alt.sort-asc.sort-desc.sort-down.sort-numeric-asc.sort-numeric-desc.sort-numeric-down.sort-numeric-down-alt.sort-numeric-up.sort-numeric-up-alt.sort-up.spa.space-shuttle.spaghetti-monster-flying.spell-check.spider.spinner.splotch.spoon.spray-can.spray-can-sparkles.sprout.square.square-arrow-up-right.square-binary.square-caret-down.square-caret-left.square-caret-right.square-caret-up.square-check.square-envelope.square-full.square-h.square-minus.square-nfi.square-parking.square-pen.square-person-confined.square-phone.square-phone-flip.square-plus.square-poll-horizontal.square-poll-vertical.square-root-alt.square-root-variable.square-rss.square-share-nodes.square-up-right.square-virus.square-xmark.staff-aesculapius.staff-snake.stairs.stamp.stapler.star.star-and-crescent.star-half.star-half-alt.star-half-stroke.star-of-david.star-of-life.step-backward.step-forward.sterling-sign.stethoscope.sticky-note.stop.stop-circle.stopwatch.stopwatch-20.store.store-alt.store-alt-slash.store-slash.stream.street-view.strikethrough.stroopwafel.subscript.subtract.subway.suitcase.suitcase-medical.suitcase-rolling.sun.sun-plant-wilt.superscript.surprise.swatchbook.swimmer.swimming-pool.synagogue.sync.sync-alt.syringe.t.t-shirt.table.table-cells.table-cells-column-lock.table-cells-large.table-cells-row-lock.table-cells-row-unlock.table-columns.table-list.table-tennis.table-tennis-paddle-ball.tablet.tablet-alt.tablet-android.tablet-button.tablet-screen-button.tablets.tachograph-digital.tachometer.tachometer-alt.tachometer-alt-average.tachometer-alt-fast.tachometer-average.tachometer-fast.tag.tags.tanakh.tape.tarp.tarp-droplet.tasks.tasks-alt.taxi.teeth.teeth-open.teletype.television.temperature-0.temperature-1.temperature-2.temperature-3.temperature-4.temperature-arrow-down.temperature-arrow-up.temperature-down.temperature-empty.temperature-full.temperature-half.temperature-high.temperature-low.temperature-quarter.temperature-three-quarters.temperature-up.tenge.tenge-sign.tent.tent-arrow-down-to-line.tent-arrow-left-right.tent-arrow-turn-left.tent-arrows-down.tents.terminal.text-height.text-slash.text-width.th.th-large.th-list.theater-masks.thermometer.thermometer-0.thermometer-1.thermometer-2.thermometer-3.thermometer-4.thermometer-empty.thermometer-full.thermometer-half.thermometer-quarter.thermometer-three-quarters.thumb-tack.thumb-tack-slash.thumbs-down.thumbs-up.thumbtack.thumbtack-slash.thunderstorm.ticket.ticket-alt.ticket-simple.timeline.times.times-circle.times-rectangle.times-square.tint.tint-slash.tired.toggle-off.toggle-on.toilet.toilet-paper.toilet-paper-slash.toilet-portable.toilets-portable.toolbox.tools.tooth.torah.torii-gate.tornado.tower-broadcast.tower-cell.tower-observation.tractor.trademark.traffic-light.trailer.train.train-subway.train-tram.tram.transgender.transgender-alt.trash.trash-alt.trash-arrow-up.trash-can.trash-can-arrow-up.trash-restore.trash-restore-alt.tree.tree-city.triangle-circle-square.triangle-exclamation.trophy.trowel.trowel-bricks.truck.truck-arrow-right.truck-droplet.truck-fast.truck-field.truck-field-un.truck-front.truck-loading.truck-medical.truck-monster.truck-moving.truck-pickup.truck-plane.truck-ramp-box.try.tshirt.tty.turkish-lira.turkish-lira-sign.turn-down.turn-up.tv.tv-alt.u.umbrella.umbrella-beach.underline.undo.undo-alt.universal-access.university.unlink.unlock.unlock-alt.unlock-keyhole.unsorted.up-down.up-down-left-right.up-long.up-right-and-down-left-from-center.up-right-from-square.upload.usd.user.user-alt.user-alt-slash.user-astronaut.user-check.user-circle.user-clock.user-cog.user-doctor.user-edit.user-friends.user-gear.user-graduate.user-group.user-injured.user-large.user-large-slash.user-lock.user-md.user-minus.user-ninja.user-nurse.user-pen.user-plus.user-secret.user-shield.user-slash.user-tag.user-tie.user-times.user-xmark.users.users-between-lines.users-cog.users-gear.users-line.users-rays.users-rectangle.users-slash.users-viewfinder.utensil-spoon.utensils.v.van-shuttle.vault.vcard.vector-square.venus.venus-double.venus-mars.vest.vest-patches.vial.vial-circle-check.vial-virus.vials.video.video-camera.video-slash.vihara.virus.virus-covid.virus-covid-slash.virus-slash.viruses.voicemail.volcano.volleyball.volleyball-ball.volume-control-phone.volume-down.volume-high.volume-low.volume-mute.volume-off.volume-times.volume-up.volume-xmark.vote-yea.vr-cardboard.w.walkie-talkie.walking.wallet.wand-magic.wand-magic-sparkles.wand-sparkles.warehouse.warning.water.water-ladder.wave-square.web-awesome.weight.weight-hanging.weight-scale.wheat-alt.wheat-awn.wheat-awn-circle-exclamation.wheelchair.wheelchair-alt.wheelchair-move.whiskey-glass.wifi.wifi-3.wifi-strong.wind.window-close.window-maximize.window-minimize.window-restore.wine-bottle.wine-glass.wine-glass-alt.wine-glass-empty.won.won-sign.worm.wrench.x.x-ray.xmark.xmark-circle.xmark-square.xmarks-lines.y.yen.yen-sign.yin-yang.z.zap".split("."), cr = { class: "justified" }, lr = /* @__PURE__ */ M({
1353
+ }), [["__scopeId", "data-v-b4e1f98e"]]), cr = /* @__PURE__ */ "0.1.2.3.4.5.6.7.8.9.a.ad.add.address-book.address-card.adjust.air-freshener.align-center.align-justify.align-left.align-right.allergies.ambulance.american-sign-language-interpreting.anchor.anchor-circle-check.anchor-circle-exclamation.anchor-circle-xmark.anchor-lock.angle-double-down.angle-double-left.angle-double-right.angle-double-up.angle-down.angle-left.angle-right.angle-up.angles-down.angles-left.angles-right.angles-up.angry.ankh.apple-alt.apple-whole.archive.archway.area-chart.arrow-alt-circle-down.arrow-alt-circle-left.arrow-alt-circle-right.arrow-alt-circle-up.arrow-circle-down.arrow-circle-left.arrow-circle-right.arrow-circle-up.arrow-down.arrow-down-1-9.arrow-down-9-1.arrow-down-a-z.arrow-down-long.arrow-down-short-wide.arrow-down-up-across-line.arrow-down-up-lock.arrow-down-wide-short.arrow-down-z-a.arrow-left.arrow-left-long.arrow-left-rotate.arrow-pointer.arrow-right.arrow-right-arrow-left.arrow-right-from-bracket.arrow-right-from-file.arrow-right-long.arrow-right-rotate.arrow-right-to-bracket.arrow-right-to-city.arrow-right-to-file.arrow-rotate-back.arrow-rotate-backward.arrow-rotate-forward.arrow-rotate-left.arrow-rotate-right.arrow-trend-down.arrow-trend-up.arrow-turn-down.arrow-turn-up.arrow-up.arrow-up-1-9.arrow-up-9-1.arrow-up-a-z.arrow-up-from-bracket.arrow-up-from-ground-water.arrow-up-from-water-pump.arrow-up-long.arrow-up-right-dots.arrow-up-right-from-square.arrow-up-short-wide.arrow-up-wide-short.arrow-up-z-a.arrows.arrows-alt.arrows-alt-h.arrows-alt-v.arrows-down-to-line.arrows-down-to-people.arrows-h.arrows-left-right.arrows-left-right-to-line.arrows-rotate.arrows-spin.arrows-split-up-and-left.arrows-to-circle.arrows-to-dot.arrows-to-eye.arrows-turn-right.arrows-turn-to-dots.arrows-up-down.arrows-up-down-left-right.arrows-up-to-line.arrows-v.asl-interpreting.assistive-listening-systems.asterisk.at.atlas.atom.audio-description.austral-sign.automobile.award.b.baby.baby-carriage.backspace.backward.backward-fast.backward-step.bacon.bacteria.bacterium.bag-shopping.bahai.baht-sign.balance-scale.balance-scale-left.balance-scale-right.ban.ban-smoking.band-aid.bandage.bangladeshi-taka-sign.bank.bar-chart.barcode.bars.bars-progress.bars-staggered.baseball.baseball-ball.baseball-bat-ball.basket-shopping.basketball.basketball-ball.bath.bathtub.battery.battery-0.battery-2.battery-3.battery-4.battery-5.battery-car.battery-empty.battery-full.battery-half.battery-quarter.battery-three-quarters.bed.bed-pulse.beer.beer-mug-empty.bell.bell-concierge.bell-slash.bezier-curve.bible.bicycle.biking.binoculars.biohazard.birthday-cake.bitcoin-sign.blackboard.blender.blender-phone.blind.blog.bold.bolt.bolt-lightning.bomb.bone.bong.book.book-atlas.book-bible.book-bookmark.book-dead.book-journal-whills.book-medical.book-open.book-open-reader.book-quran.book-reader.book-skull.book-tanakh.bookmark.border-all.border-none.border-style.border-top-left.bore-hole.bottle-droplet.bottle-water.bowl-food.bowl-rice.bowling-ball.box.box-archive.box-open.box-tissue.boxes.boxes-alt.boxes-packing.boxes-stacked.braille.brain.brazilian-real-sign.bread-slice.bridge.bridge-circle-check.bridge-circle-exclamation.bridge-circle-xmark.bridge-lock.bridge-water.briefcase.briefcase-clock.briefcase-medical.broadcast-tower.broom.broom-ball.brush.bucket.bug.bug-slash.bugs.building.building-circle-arrow-right.building-circle-check.building-circle-exclamation.building-circle-xmark.building-columns.building-flag.building-lock.building-ngo.building-shield.building-un.building-user.building-wheat.bullhorn.bullseye.burger.burn.burst.bus.bus-alt.bus-simple.business-time.c.cab.cable-car.cake.cake-candles.calculator.calendar.calendar-alt.calendar-check.calendar-day.calendar-days.calendar-minus.calendar-plus.calendar-times.calendar-week.calendar-xmark.camera.camera-alt.camera-retro.camera-rotate.campground.cancel.candy-cane.cannabis.capsules.car.car-alt.car-battery.car-burst.car-crash.car-on.car-rear.car-side.car-tunnel.caravan.caret-down.caret-left.caret-right.caret-square-down.caret-square-left.caret-square-right.caret-square-up.caret-up.carriage-baby.carrot.cart-arrow-down.cart-flatbed.cart-flatbed-suitcase.cart-plus.cart-shopping.cash-register.cat.cedi-sign.cent-sign.certificate.chain.chain-broken.chain-slash.chair.chalkboard.chalkboard-teacher.chalkboard-user.champagne-glasses.charging-station.chart-area.chart-bar.chart-column.chart-diagram.chart-gantt.chart-line.chart-pie.chart-simple.check.check-circle.check-double.check-square.check-to-slot.cheese.chess.chess-bishop.chess-board.chess-king.chess-knight.chess-pawn.chess-queen.chess-rook.chevron-circle-down.chevron-circle-left.chevron-circle-right.chevron-circle-up.chevron-down.chevron-left.chevron-right.chevron-up.child.child-combatant.child-dress.child-reaching.child-rifle.children.church.circle.circle-arrow-down.circle-arrow-left.circle-arrow-right.circle-arrow-up.circle-check.circle-chevron-down.circle-chevron-left.circle-chevron-right.circle-chevron-up.circle-dollar-to-slot.circle-dot.circle-down.circle-exclamation.circle-h.circle-half-stroke.circle-info.circle-left.circle-minus.circle-nodes.circle-notch.circle-pause.circle-play.circle-plus.circle-question.circle-radiation.circle-right.circle-stop.circle-up.circle-user.circle-xmark.city.clapperboard.clinic-medical.clipboard.clipboard-check.clipboard-list.clipboard-question.clipboard-user.clock.clock-four.clock-rotate-left.clone.close.closed-captioning.cloud.cloud-arrow-down.cloud-arrow-up.cloud-bolt.cloud-download.cloud-download-alt.cloud-meatball.cloud-moon.cloud-moon-rain.cloud-rain.cloud-showers-heavy.cloud-showers-water.cloud-sun.cloud-sun-rain.cloud-upload.cloud-upload-alt.clover.cny.cocktail.code.code-branch.code-commit.code-compare.code-fork.code-merge.code-pull-request.coffee.cog.cogs.coins.colon-sign.columns.comment.comment-alt.comment-dollar.comment-dots.comment-medical.comment-nodes.comment-slash.comment-sms.commenting.comments.comments-dollar.compact-disc.compass.compass-drafting.compress.compress-alt.compress-arrows-alt.computer.computer-mouse.concierge-bell.contact-book.contact-card.cookie.cookie-bite.copy.copyright.couch.cow.credit-card.credit-card-alt.crop.crop-alt.crop-simple.cross.crosshairs.crow.crown.crutch.cruzeiro-sign.cube.cubes.cubes-stacked.cut.cutlery.d.dashboard.database.deaf.deafness.dedent.delete-left.democrat.desktop.desktop-alt.dharmachakra.diagnoses.diagram-next.diagram-predecessor.diagram-project.diagram-successor.diamond.diamond-turn-right.dice.dice-d20.dice-d6.dice-five.dice-four.dice-one.dice-six.dice-three.dice-two.digging.digital-tachograph.directions.disease.display.divide.dizzy.dna.dog.dollar.dollar-sign.dolly.dolly-box.dolly-flatbed.donate.dong-sign.door-closed.door-open.dot-circle.dove.down-left-and-up-right-to-center.down-long.download.drafting-compass.dragon.draw-polygon.drivers-license.droplet.droplet-slash.drum.drum-steelpan.drumstick-bite.dumbbell.dumpster.dumpster-fire.dungeon.e.ear-deaf.ear-listen.earth.earth-africa.earth-america.earth-americas.earth-asia.earth-europe.earth-oceania.edit.egg.eject.elevator.ellipsis.ellipsis-h.ellipsis-v.ellipsis-vertical.envelope.envelope-circle-check.envelope-open.envelope-open-text.envelope-square.envelopes-bulk.equals.eraser.ethernet.eur.euro.euro-sign.exchange.exchange-alt.exclamation.exclamation-circle.exclamation-triangle.expand.expand-alt.expand-arrows-alt.explosion.external-link.external-link-alt.external-link-square.external-link-square-alt.eye.eye-dropper.eye-dropper-empty.eye-low-vision.eye-slash.eyedropper.f.face-angry.face-dizzy.face-flushed.face-frown.face-frown-open.face-grimace.face-grin.face-grin-beam.face-grin-beam-sweat.face-grin-hearts.face-grin-squint.face-grin-squint-tears.face-grin-stars.face-grin-tears.face-grin-tongue.face-grin-tongue-squint.face-grin-tongue-wink.face-grin-wide.face-grin-wink.face-kiss.face-kiss-beam.face-kiss-wink-heart.face-laugh.face-laugh-beam.face-laugh-squint.face-laugh-wink.face-meh.face-meh-blank.face-rolling-eyes.face-sad-cry.face-sad-tear.face-smile.face-smile-beam.face-smile-wink.face-surprise.face-tired.fan.faucet.faucet-drip.fax.feather.feather-alt.feather-pointed.feed.female.ferry.fighter-jet.file.file-alt.file-archive.file-arrow-down.file-arrow-up.file-audio.file-circle-check.file-circle-exclamation.file-circle-minus.file-circle-plus.file-circle-question.file-circle-xmark.file-clipboard.file-code.file-contract.file-csv.file-download.file-edit.file-excel.file-export.file-fragment.file-half-dashed.file-image.file-import.file-invoice.file-invoice-dollar.file-lines.file-medical.file-medical-alt.file-pdf.file-pen.file-powerpoint.file-prescription.file-shield.file-signature.file-text.file-upload.file-video.file-waveform.file-word.file-zipper.fill.fill-drip.film.filter.filter-circle-dollar.filter-circle-xmark.fingerprint.fire.fire-alt.fire-burner.fire-extinguisher.fire-flame-curved.fire-flame-simple.first-aid.fish.fish-fins.fist-raised.flag.flag-checkered.flag-usa.flask.flask-vial.floppy-disk.florin-sign.flushed.folder.folder-blank.folder-closed.folder-minus.folder-open.folder-plus.folder-tree.font.font-awesome.font-awesome-flag.font-awesome-logo-full.football.football-ball.forward.forward-fast.forward-step.franc-sign.frog.frown.frown-open.funnel-dollar.futbol.futbol-ball.g.gamepad.gas-pump.gauge.gauge-high.gauge-med.gauge-simple.gauge-simple-high.gauge-simple-med.gavel.gbp.gear.gears.gem.genderless.ghost.gift.gifts.glass-cheers.glass-martini.glass-martini-alt.glass-water.glass-water-droplet.glass-whiskey.glasses.globe.globe-africa.globe-americas.globe-asia.globe-europe.globe-oceania.golf-ball.golf-ball-tee.gopuram.graduation-cap.greater-than.greater-than-equal.grimace.grin.grin-alt.grin-beam.grin-beam-sweat.grin-hearts.grin-squint.grin-squint-tears.grin-stars.grin-tears.grin-tongue.grin-tongue-squint.grin-tongue-wink.grin-wink.grip.grip-horizontal.grip-lines.grip-lines-vertical.grip-vertical.group-arrows-rotate.guarani-sign.guitar.gun.h.h-square.hamburger.hammer.hamsa.hand.hand-back-fist.hand-dots.hand-fist.hand-holding.hand-holding-dollar.hand-holding-droplet.hand-holding-hand.hand-holding-heart.hand-holding-medical.hand-holding-usd.hand-holding-water.hand-lizard.hand-middle-finger.hand-paper.hand-peace.hand-point-down.hand-point-left.hand-point-right.hand-point-up.hand-pointer.hand-rock.hand-scissors.hand-sparkles.hand-spock.handcuffs.hands.hands-american-sign-language-interpreting.hands-asl-interpreting.hands-bound.hands-bubbles.hands-clapping.hands-helping.hands-holding.hands-holding-child.hands-holding-circle.hands-praying.hands-wash.handshake.handshake-alt.handshake-alt-slash.handshake-angle.handshake-simple.handshake-simple-slash.handshake-slash.hanukiah.hard-drive.hard-hat.hard-of-hearing.hashtag.hat-cowboy.hat-cowboy-side.hat-hard.hat-wizard.haykal.hdd.head-side-cough.head-side-cough-slash.head-side-mask.head-side-virus.header.heading.headphones.headphones-alt.headphones-simple.headset.heart.heart-broken.heart-circle-bolt.heart-circle-check.heart-circle-exclamation.heart-circle-minus.heart-circle-plus.heart-circle-xmark.heart-crack.heart-music-camera-bolt.heart-pulse.heartbeat.helicopter.helicopter-symbol.helmet-safety.helmet-un.hexagon-nodes.hexagon-nodes-bolt.highlighter.hiking.hill-avalanche.hill-rockslide.hippo.history.hockey-puck.holly-berry.home.home-alt.home-lg.home-lg-alt.home-user.horse.horse-head.hospital.hospital-alt.hospital-symbol.hospital-user.hospital-wide.hot-tub.hot-tub-person.hotdog.hotel.hourglass.hourglass-1.hourglass-2.hourglass-3.hourglass-empty.hourglass-end.hourglass-half.hourglass-start.house.house-chimney.house-chimney-crack.house-chimney-medical.house-chimney-user.house-chimney-window.house-circle-check.house-circle-exclamation.house-circle-xmark.house-crack.house-damage.house-fire.house-flag.house-flood-water.house-flood-water-circle-arrow-right.house-laptop.house-lock.house-medical.house-medical-circle-check.house-medical-circle-exclamation.house-medical-circle-xmark.house-medical-flag.house-signal.house-tsunami.house-user.hryvnia.hryvnia-sign.hurricane.i.i-cursor.ice-cream.icicles.icons.id-badge.id-card.id-card-alt.id-card-clip.igloo.ils.image.image-portrait.images.inbox.indent.indian-rupee.indian-rupee-sign.industry.infinity.info.info-circle.inr.institution.italic.j.jar.jar-wheat.jedi.jet-fighter.jet-fighter-up.joint.journal-whills.jpy.jug-detergent.k.kaaba.key.keyboard.khanda.kip-sign.kiss.kiss-beam.kiss-wink-heart.kit-medical.kitchen-set.kiwi-bird.krw.l.ladder-water.land-mine-on.landmark.landmark-alt.landmark-dome.landmark-flag.language.laptop.laptop-code.laptop-file.laptop-house.laptop-medical.lari-sign.laugh.laugh-beam.laugh-squint.laugh-wink.layer-group.leaf.left-long.left-right.legal.lemon.less-than.less-than-equal.level-down.level-down-alt.level-up.level-up-alt.life-ring.lightbulb.line-chart.lines-leaning.link.link-slash.lira-sign.list.list-1-2.list-alt.list-check.list-dots.list-numeric.list-ol.list-squares.list-ul.litecoin-sign.location.location-arrow.location-crosshairs.location-dot.location-pin.location-pin-lock.lock.lock-open.locust.long-arrow-alt-down.long-arrow-alt-left.long-arrow-alt-right.long-arrow-alt-up.long-arrow-down.long-arrow-left.long-arrow-right.long-arrow-up.low-vision.luggage-cart.lungs.lungs-virus.m.magic.magic-wand-sparkles.magnet.magnifying-glass.magnifying-glass-arrow-right.magnifying-glass-chart.magnifying-glass-dollar.magnifying-glass-location.magnifying-glass-minus.magnifying-glass-plus.mail-bulk.mail-forward.mail-reply.mail-reply-all.male.manat-sign.map.map-location.map-location-dot.map-marked.map-marked-alt.map-marker.map-marker-alt.map-pin.map-signs.marker.mars.mars-and-venus.mars-and-venus-burst.mars-double.mars-stroke.mars-stroke-h.mars-stroke-right.mars-stroke-up.mars-stroke-v.martini-glass.martini-glass-citrus.martini-glass-empty.mask.mask-face.mask-ventilator.masks-theater.mattress-pillow.maximize.medal.medkit.meh.meh-blank.meh-rolling-eyes.memory.menorah.mercury.message.meteor.microchip.microphone.microphone-alt.microphone-alt-slash.microphone-lines.microphone-lines-slash.microphone-slash.microscope.mill-sign.minimize.minus.minus-circle.minus-square.mitten.mobile.mobile-alt.mobile-android.mobile-android-alt.mobile-button.mobile-phone.mobile-retro.mobile-screen.mobile-screen-button.money-bill.money-bill-1.money-bill-1-wave.money-bill-alt.money-bill-transfer.money-bill-trend-up.money-bill-wave.money-bill-wave-alt.money-bill-wheat.money-bills.money-check.money-check-alt.money-check-dollar.monument.moon.mortar-board.mortar-pestle.mosque.mosquito.mosquito-net.motorcycle.mound.mountain.mountain-city.mountain-sun.mouse.mouse-pointer.mug-hot.mug-saucer.multiply.museum.music.n.naira-sign.navicon.network-wired.neuter.newspaper.not-equal.notdef.note-sticky.notes-medical.o.object-group.object-ungroup.oil-can.oil-well.om.otter.outdent.p.pager.paint-brush.paint-roller.paintbrush.palette.pallet.panorama.paper-plane.paperclip.parachute-box.paragraph.parking.passport.pastafarianism.paste.pause.pause-circle.paw.peace.pen.pen-alt.pen-clip.pen-fancy.pen-nib.pen-ruler.pen-square.pen-to-square.pencil.pencil-alt.pencil-ruler.pencil-square.people-arrows.people-arrows-left-right.people-carry.people-carry-box.people-group.people-line.people-pulling.people-robbery.people-roof.pepper-hot.percent.percentage.person.person-arrow-down-to-line.person-arrow-up-from-line.person-biking.person-booth.person-breastfeeding.person-burst.person-cane.person-chalkboard.person-circle-check.person-circle-exclamation.person-circle-minus.person-circle-plus.person-circle-question.person-circle-xmark.person-digging.person-dots-from-line.person-dress.person-dress-burst.person-drowning.person-falling.person-falling-burst.person-half-dress.person-harassing.person-hiking.person-military-pointing.person-military-rifle.person-military-to-person.person-praying.person-pregnant.person-rays.person-rifle.person-running.person-shelter.person-skating.person-skiing.person-skiing-nordic.person-snowboarding.person-swimming.person-through-window.person-walking.person-walking-arrow-loop-left.person-walking-arrow-right.person-walking-dashed-line-arrow-right.person-walking-luggage.person-walking-with-cane.peseta-sign.peso-sign.phone.phone-alt.phone-flip.phone-slash.phone-square.phone-square-alt.phone-volume.photo-film.photo-video.pie-chart.piggy-bank.pills.ping-pong-paddle-ball.pizza-slice.place-of-worship.plane.plane-arrival.plane-circle-check.plane-circle-exclamation.plane-circle-xmark.plane-departure.plane-lock.plane-slash.plane-up.plant-wilt.plate-wheat.play.play-circle.plug.plug-circle-bolt.plug-circle-check.plug-circle-exclamation.plug-circle-minus.plug-circle-plus.plug-circle-xmark.plus.plus-circle.plus-minus.plus-square.podcast.poll.poll-h.poo.poo-bolt.poo-storm.poop.portrait.pound-sign.power-off.pray.praying-hands.prescription.prescription-bottle.prescription-bottle-alt.prescription-bottle-medical.print.procedures.project-diagram.pump-medical.pump-soap.puzzle-piece.q.qrcode.question.question-circle.quidditch.quidditch-broom-ball.quote-left.quote-left-alt.quote-right.quote-right-alt.quran.r.radiation.radiation-alt.radio.rainbow.random.ranking-star.receipt.record-vinyl.rectangle-ad.rectangle-list.rectangle-times.rectangle-xmark.recycle.redo.redo-alt.refresh.registered.remove.remove-format.reorder.repeat.reply.reply-all.republican.restroom.retweet.ribbon.right-from-bracket.right-left.right-long.right-to-bracket.ring.rmb.road.road-barrier.road-bridge.road-circle-check.road-circle-exclamation.road-circle-xmark.road-lock.road-spikes.robot.rocket.rod-asclepius.rod-snake.rotate.rotate-back.rotate-backward.rotate-forward.rotate-left.rotate-right.rouble.route.rss.rss-square.rub.ruble.ruble-sign.rug.ruler.ruler-combined.ruler-horizontal.ruler-vertical.running.rupee.rupee-sign.rupiah-sign.s.sack-dollar.sack-xmark.sad-cry.sad-tear.sailboat.satellite.satellite-dish.save.scale-balanced.scale-unbalanced.scale-unbalanced-flip.school.school-circle-check.school-circle-exclamation.school-circle-xmark.school-flag.school-lock.scissors.screwdriver.screwdriver-wrench.scroll.scroll-torah.sd-card.search.search-dollar.search-location.search-minus.search-plus.section.seedling.server.shapes.share.share-alt.share-alt-square.share-from-square.share-nodes.share-square.sheet-plastic.shekel.shekel-sign.sheqel.sheqel-sign.shield.shield-alt.shield-blank.shield-cat.shield-dog.shield-halved.shield-heart.shield-virus.ship.shipping-fast.shirt.shoe-prints.shop.shop-lock.shop-slash.shopping-bag.shopping-basket.shopping-cart.shower.shrimp.shuffle.shuttle-space.shuttle-van.sign.sign-hanging.sign-in.sign-in-alt.sign-language.sign-out.sign-out-alt.signal.signal-5.signal-perfect.signature.signing.signs-post.sim-card.sink.sitemap.skating.skiing.skiing-nordic.skull.skull-crossbones.slash.sleigh.sliders.sliders-h.smile.smile-beam.smile-wink.smog.smoking.smoking-ban.sms.snowboarding.snowflake.snowman.snowplow.soap.soccer-ball.socks.solar-panel.sort.sort-alpha-asc.sort-alpha-desc.sort-alpha-down.sort-alpha-down-alt.sort-alpha-up.sort-alpha-up-alt.sort-amount-asc.sort-amount-desc.sort-amount-down.sort-amount-down-alt.sort-amount-up.sort-amount-up-alt.sort-asc.sort-desc.sort-down.sort-numeric-asc.sort-numeric-desc.sort-numeric-down.sort-numeric-down-alt.sort-numeric-up.sort-numeric-up-alt.sort-up.spa.space-shuttle.spaghetti-monster-flying.spell-check.spider.spinner.splotch.spoon.spray-can.spray-can-sparkles.sprout.square.square-arrow-up-right.square-binary.square-caret-down.square-caret-left.square-caret-right.square-caret-up.square-check.square-envelope.square-full.square-h.square-minus.square-nfi.square-parking.square-pen.square-person-confined.square-phone.square-phone-flip.square-plus.square-poll-horizontal.square-poll-vertical.square-root-alt.square-root-variable.square-rss.square-share-nodes.square-up-right.square-virus.square-xmark.staff-aesculapius.staff-snake.stairs.stamp.stapler.star.star-and-crescent.star-half.star-half-alt.star-half-stroke.star-of-david.star-of-life.step-backward.step-forward.sterling-sign.stethoscope.sticky-note.stop.stop-circle.stopwatch.stopwatch-20.store.store-alt.store-alt-slash.store-slash.stream.street-view.strikethrough.stroopwafel.subscript.subtract.subway.suitcase.suitcase-medical.suitcase-rolling.sun.sun-plant-wilt.superscript.surprise.swatchbook.swimmer.swimming-pool.synagogue.sync.sync-alt.syringe.t.t-shirt.table.table-cells.table-cells-column-lock.table-cells-large.table-cells-row-lock.table-cells-row-unlock.table-columns.table-list.table-tennis.table-tennis-paddle-ball.tablet.tablet-alt.tablet-android.tablet-button.tablet-screen-button.tablets.tachograph-digital.tachometer.tachometer-alt.tachometer-alt-average.tachometer-alt-fast.tachometer-average.tachometer-fast.tag.tags.tanakh.tape.tarp.tarp-droplet.tasks.tasks-alt.taxi.teeth.teeth-open.teletype.television.temperature-0.temperature-1.temperature-2.temperature-3.temperature-4.temperature-arrow-down.temperature-arrow-up.temperature-down.temperature-empty.temperature-full.temperature-half.temperature-high.temperature-low.temperature-quarter.temperature-three-quarters.temperature-up.tenge.tenge-sign.tent.tent-arrow-down-to-line.tent-arrow-left-right.tent-arrow-turn-left.tent-arrows-down.tents.terminal.text-height.text-slash.text-width.th.th-large.th-list.theater-masks.thermometer.thermometer-0.thermometer-1.thermometer-2.thermometer-3.thermometer-4.thermometer-empty.thermometer-full.thermometer-half.thermometer-quarter.thermometer-three-quarters.thumb-tack.thumb-tack-slash.thumbs-down.thumbs-up.thumbtack.thumbtack-slash.thunderstorm.ticket.ticket-alt.ticket-simple.timeline.times.times-circle.times-rectangle.times-square.tint.tint-slash.tired.toggle-off.toggle-on.toilet.toilet-paper.toilet-paper-slash.toilet-portable.toilets-portable.toolbox.tools.tooth.torah.torii-gate.tornado.tower-broadcast.tower-cell.tower-observation.tractor.trademark.traffic-light.trailer.train.train-subway.train-tram.tram.transgender.transgender-alt.trash.trash-alt.trash-arrow-up.trash-can.trash-can-arrow-up.trash-restore.trash-restore-alt.tree.tree-city.triangle-circle-square.triangle-exclamation.trophy.trowel.trowel-bricks.truck.truck-arrow-right.truck-droplet.truck-fast.truck-field.truck-field-un.truck-front.truck-loading.truck-medical.truck-monster.truck-moving.truck-pickup.truck-plane.truck-ramp-box.try.tshirt.tty.turkish-lira.turkish-lira-sign.turn-down.turn-up.tv.tv-alt.u.umbrella.umbrella-beach.underline.undo.undo-alt.universal-access.university.unlink.unlock.unlock-alt.unlock-keyhole.unsorted.up-down.up-down-left-right.up-long.up-right-and-down-left-from-center.up-right-from-square.upload.usd.user.user-alt.user-alt-slash.user-astronaut.user-check.user-circle.user-clock.user-cog.user-doctor.user-edit.user-friends.user-gear.user-graduate.user-group.user-injured.user-large.user-large-slash.user-lock.user-md.user-minus.user-ninja.user-nurse.user-pen.user-plus.user-secret.user-shield.user-slash.user-tag.user-tie.user-times.user-xmark.users.users-between-lines.users-cog.users-gear.users-line.users-rays.users-rectangle.users-slash.users-viewfinder.utensil-spoon.utensils.v.van-shuttle.vault.vcard.vector-square.venus.venus-double.venus-mars.vest.vest-patches.vial.vial-circle-check.vial-virus.vials.video.video-camera.video-slash.vihara.virus.virus-covid.virus-covid-slash.virus-slash.viruses.voicemail.volcano.volleyball.volleyball-ball.volume-control-phone.volume-down.volume-high.volume-low.volume-mute.volume-off.volume-times.volume-up.volume-xmark.vote-yea.vr-cardboard.w.walkie-talkie.walking.wallet.wand-magic.wand-magic-sparkles.wand-sparkles.warehouse.warning.water.water-ladder.wave-square.web-awesome.weight.weight-hanging.weight-scale.wheat-alt.wheat-awn.wheat-awn-circle-exclamation.wheelchair.wheelchair-alt.wheelchair-move.whiskey-glass.wifi.wifi-3.wifi-strong.wind.window-close.window-maximize.window-minimize.window-restore.wine-bottle.wine-glass.wine-glass-alt.wine-glass-empty.won.won-sign.worm.wrench.x.x-ray.xmark.xmark-circle.xmark-square.xmarks-lines.y.yen.yen-sign.yin-yang.z.zap".split("."), lr = { class: "justified" }, ur = /* @__PURE__ */ M({
1354
1354
  __name: "IconCell",
1355
1355
  props: {
1356
1356
  modelValue: {},
@@ -1364,7 +1364,7 @@ var tr = {
1364
1364
  "reload"
1365
1365
  ],
1366
1366
  setup(e, { emit: t }) {
1367
- let n = W(e, "modelValue", t), r = I(sr.map((e) => ({ value: e }))), i = (e, t) => {
1367
+ let n = W(e, "modelValue", t), r = I(cr.map((e) => ({ value: e }))), i = (e, t) => {
1368
1368
  t(e ? r.value.filter(a(e)) : r.value.slice(0, 100));
1369
1369
  }, a = (e) => (t) => t.value.toLowerCase().indexOf(e.toLowerCase()) === 0;
1370
1370
  return (t, r) => {
@@ -1377,7 +1377,7 @@ var tr = {
1377
1377
  "fetch-suggestions": i,
1378
1378
  onChange: r[1] ||= (e) => V(n).value = e.value
1379
1379
  }, Tt({
1380
- default: U(({ item: e }) => [k("div", cr, [k("span", null, B(e.value), 1), j(G, { icon: e.value }, null, 8, ["icon"])])]),
1380
+ default: U(({ item: e }) => [k("div", lr, [k("span", null, B(e.value), 1), j(G, { icon: e.value }, null, 8, ["icon"])])]),
1381
1381
  _: 2
1382
1382
  }, [V(n) ? {
1383
1383
  name: "prefix",
@@ -1386,7 +1386,7 @@ var tr = {
1386
1386
  } : void 0]), 1032, ["modelValue", "disabled"]);
1387
1387
  };
1388
1388
  }
1389
- }), ur = /* @__PURE__ */ M({
1389
+ }), dr = /* @__PURE__ */ M({
1390
1390
  __name: "MultiSetCell",
1391
1391
  props: {
1392
1392
  modelValue: {},
@@ -1426,7 +1426,7 @@ var tr = {
1426
1426
  }, 8, ["disabled", "modelValue"]);
1427
1427
  };
1428
1428
  }
1429
- }), dr = /* @__PURE__ */ M({
1429
+ }), fr = /* @__PURE__ */ M({
1430
1430
  __name: "SetCell",
1431
1431
  props: {
1432
1432
  modelValue: {},
@@ -1464,7 +1464,7 @@ var tr = {
1464
1464
  }, 8, ["disabled", "modelValue"]);
1465
1465
  };
1466
1466
  }
1467
- }), fr = ",", pr = /* @__PURE__ */ M({
1467
+ }), pr = ",", mr = /* @__PURE__ */ M({
1468
1468
  __name: "DateArrayCell",
1469
1469
  props: {
1470
1470
  modelValue: {},
@@ -1481,11 +1481,11 @@ var tr = {
1481
1481
  let n = e, r = W(n, "modelValue", t), i = I([]);
1482
1482
  P(() => {
1483
1483
  let e = String(r.value);
1484
- i.value = e.split(fr);
1484
+ i.value = e.split(pr);
1485
1485
  });
1486
1486
  function a(e) {
1487
1487
  let t = new Set(Object.values(e));
1488
- r.value = [...t].sort().join(fr);
1488
+ r.value = [...t].sort().join(pr);
1489
1489
  }
1490
1490
  let o = [
1491
1491
  "years",
@@ -1494,7 +1494,7 @@ var tr = {
1494
1494
  ], s = T(() => {
1495
1495
  let e = n.field.format?.frequency || "dates";
1496
1496
  return o.includes(e) ? e : "dates";
1497
- }), c = T(() => Xn[s.value].value || "YYYY-MM-DD");
1497
+ }), c = T(() => Zn[s.value].value || "YYYY-MM-DD");
1498
1498
  return (t, n) => {
1499
1499
  let r = z("el-date-picker");
1500
1500
  return F(), E(r, {
@@ -1517,7 +1517,7 @@ var tr = {
1517
1517
  ]);
1518
1518
  };
1519
1519
  }
1520
- }), mr = /* @__PURE__ */ M({
1520
+ }), hr = /* @__PURE__ */ M({
1521
1521
  __name: "DateCell",
1522
1522
  props: {
1523
1523
  modelValue: {},
@@ -1546,7 +1546,7 @@ var tr = {
1546
1546
  default: return "date";
1547
1547
  }
1548
1548
  }), o = T(() => {
1549
- let { value: e } = Xn[a.value] || {};
1549
+ let { value: e } = Zn[a.value] || {};
1550
1550
  return e || "YYYY-MM-DD";
1551
1551
  });
1552
1552
  return (t, n) => {
@@ -1569,7 +1569,7 @@ var tr = {
1569
1569
  ]);
1570
1570
  };
1571
1571
  }
1572
- }), hr = " ~ ", gr = /* @__PURE__ */ M({
1572
+ }), gr = " ~ ", _r = /* @__PURE__ */ M({
1573
1573
  __name: "DateRangeCell",
1574
1574
  props: {
1575
1575
  modelValue: {},
@@ -1585,11 +1585,11 @@ var tr = {
1585
1585
  setup(e, { emit: t }) {
1586
1586
  let n = e, r = W(n, "modelValue", t), i = I([]);
1587
1587
  function a(e) {
1588
- r.value = i.value.join(hr);
1588
+ r.value = i.value.join(gr);
1589
1589
  }
1590
1590
  P(() => {
1591
1591
  let e = String(r.value);
1592
- i.value = e.split(hr);
1592
+ i.value = e.split(gr);
1593
1593
  });
1594
1594
  let o = [
1595
1595
  "monthrange",
@@ -1598,7 +1598,7 @@ var tr = {
1598
1598
  ], s = T(() => {
1599
1599
  let e = n.field.format?.frequency || "daterange";
1600
1600
  return o.includes(e) ? e : "daterange";
1601
- }), c = T(() => Xn[s.value].value || "YYYY-MM-DD");
1601
+ }), c = T(() => Zn[s.value].value || "YYYY-MM-DD");
1602
1602
  return (t, n) => {
1603
1603
  let r = z("el-date-picker"), o = z("el-space");
1604
1604
  return F(), E(o, null, {
@@ -1628,12 +1628,12 @@ var tr = {
1628
1628
  });
1629
1629
  //#endregion
1630
1630
  //#region morghulis/components/cell/instances/date/methods.ts
1631
- function _r(e) {
1631
+ function vr(e) {
1632
1632
  return /^([0-9]|1\d|2[0-3]):[0-5]\d:[0-5]\d$/.test(e);
1633
1633
  }
1634
1634
  //#endregion
1635
1635
  //#region morghulis/components/cell/instances/date/TimeCell.vue
1636
- var vr = /* @__PURE__ */ M({
1636
+ var yr = /* @__PURE__ */ M({
1637
1637
  __name: "TimeCell",
1638
1638
  props: {
1639
1639
  modelValue: {},
@@ -1649,7 +1649,7 @@ var vr = /* @__PURE__ */ M({
1649
1649
  setup(e, { emit: t }) {
1650
1650
  let n = W(e, "modelValue", t), r = I();
1651
1651
  P(() => {
1652
- _r(String(n.value)) && (r.value = n.value);
1652
+ vr(String(n.value)) && (r.value = n.value);
1653
1653
  });
1654
1654
  function i(e) {
1655
1655
  n.value = r.value;
@@ -1672,7 +1672,7 @@ var vr = /* @__PURE__ */ M({
1672
1672
  ]);
1673
1673
  };
1674
1674
  }
1675
- }), yr = /* @__PURE__ */ M({
1675
+ }), br = /* @__PURE__ */ M({
1676
1676
  __name: "TimeRangeCell",
1677
1677
  props: {
1678
1678
  modelValue: {},
@@ -1689,7 +1689,7 @@ var vr = /* @__PURE__ */ M({
1689
1689
  let n = W(e, "modelValue", t), r = I([]);
1690
1690
  P(() => {
1691
1691
  let e = String(n.value).split(" - ");
1692
- e.length === 2 && _r(e[0]) && _r(e[1]) && (r.value = e);
1692
+ e.length === 2 && vr(e[0]) && vr(e[1]) && (r.value = e);
1693
1693
  });
1694
1694
  function i(e) {
1695
1695
  n.value = r.value.join(" - ");
@@ -1720,7 +1720,7 @@ var vr = /* @__PURE__ */ M({
1720
1720
  });
1721
1721
  //#endregion
1722
1722
  //#region morghulis/components/cell/instances/refer/hooks.ts
1723
- function br(e, t) {
1723
+ function xr(e, t) {
1724
1724
  let n = e.refer, r = {
1725
1725
  entity: n.entity || "",
1726
1726
  clearable: !e.not_null,
@@ -1733,7 +1733,7 @@ function br(e, t) {
1733
1733
  display: n.display || "id"
1734
1734
  };
1735
1735
  function a(e) {
1736
- let { label: r } = n, i = e ? Object.fromEntries([[r, 1]]) : { sort: -1 }, a = Hn(n.includes, t), o = Hn(n.excludes, t);
1736
+ let { label: r } = n, i = e ? Object.fromEntries([[r, 1]]) : { sort: -1 }, a = Un(n.includes, t), o = Un(n.excludes, t);
1737
1737
  return e && (a[`${r}__icontains`] = e), {
1738
1738
  includes: a,
1739
1739
  excludes: o,
@@ -1754,7 +1754,7 @@ function br(e, t) {
1754
1754
  };
1755
1755
  Object.assign(e, s);
1756
1756
  }
1757
- let { loading: s, manager: c } = Q(n.entity || "", { convertor: o }), l = T(() => ({
1757
+ let { loading: s, manager: c } = Z(n.entity || "", { convertor: o }), l = T(() => ({
1758
1758
  type: ["tree", "cascade"].includes(e.tool) && n.is_tree ? "tree" : "table",
1759
1759
  size: ["auto"].includes(e.tool) ? 10 : 0,
1760
1760
  root: n.root,
@@ -1782,10 +1782,10 @@ function br(e, t) {
1782
1782
  }
1783
1783
  //#endregion
1784
1784
  //#region morghulis/components/cell/instances/refer/AutoCell.vue?vue&type=script&setup=true&lang.ts
1785
- var xr = {
1785
+ var Sr = {
1786
1786
  key: 0,
1787
1787
  style: { "margin-bottom": "10px" }
1788
- }, Sr = { class: "justified" }, Cr = /* @__PURE__ */ M({
1788
+ }, Cr = { class: "justified" }, wr = /* @__PURE__ */ M({
1789
1789
  __name: "AutoCell",
1790
1790
  props: {
1791
1791
  modelValue: {},
@@ -1799,7 +1799,7 @@ var xr = {
1799
1799
  "reload"
1800
1800
  ],
1801
1801
  setup(e, { emit: t }) {
1802
- let n = e, r = W(n, "modelValue", t), { param: i, list: a, conditional: o } = br(n.field, n.row), s = (e, t) => {
1802
+ let n = e, r = W(n, "modelValue", t), { param: i, list: a, conditional: o } = xr(n.field, n.row), s = (e, t) => {
1803
1803
  a(e).then((e) => t(e.map(({ label: e }) => ({
1804
1804
  value: e,
1805
1805
  label: e
@@ -1807,7 +1807,7 @@ var xr = {
1807
1807
  };
1808
1808
  return (t, n) => {
1809
1809
  let a = z("el-tooltip"), c = z("el-text"), l = z("el-autocomplete");
1810
- return F(), O(w, null, [e.field.refer.entity ? D("", !0) : (F(), O("div", xr, [j(G, {
1810
+ return F(), O(w, null, [e.field.refer.entity ? D("", !0) : (F(), O("div", Sr, [j(G, {
1811
1811
  icon: "unlink",
1812
1812
  type: "danger"
1813
1813
  }, {
@@ -1822,7 +1822,7 @@ var xr = {
1822
1822
  "hide-loading": "",
1823
1823
  "popper-append-to-body": ""
1824
1824
  }, Tt({
1825
- default: U(({ item: e }) => [k("div", Sr, [j(c, { size: "small" }, {
1825
+ default: U(({ item: e }) => [k("div", Cr, [j(c, { size: "small" }, {
1826
1826
  default: U(() => [A(B(e.label), 1)]),
1827
1827
  _: 2
1828
1828
  }, 1024), j(c, {
@@ -1844,7 +1844,7 @@ var xr = {
1844
1844
  } : void 0]), 1032, ["modelValue", "disabled"])], 64);
1845
1845
  };
1846
1846
  }
1847
- }), wr = /* @__PURE__ */ M({
1847
+ }), Tr = /* @__PURE__ */ M({
1848
1848
  __name: "CascadeCell",
1849
1849
  props: {
1850
1850
  modelValue: {},
@@ -1858,7 +1858,7 @@ var xr = {
1858
1858
  "reload"
1859
1859
  ],
1860
1860
  setup(e, { emit: t }) {
1861
- let n = e, r = W(n, "modelValue", t), { loading: i, param: a, tree: o, conditional: s } = br(n.field, n.row), c = {
1861
+ let n = e, r = W(n, "modelValue", t), { loading: i, param: a, tree: o, conditional: s } = xr(n.field, n.row), c = {
1862
1862
  emitPath: !1,
1863
1863
  checkStrictly: a.strict,
1864
1864
  multiple: a.multiple
@@ -1913,7 +1913,7 @@ var xr = {
1913
1913
  ])])), [[u]]);
1914
1914
  };
1915
1915
  }
1916
- }), Tr = /* @__PURE__ */ M({
1916
+ }), Er = /* @__PURE__ */ M({
1917
1917
  __name: "SelectCell",
1918
1918
  props: {
1919
1919
  modelValue: {},
@@ -1927,7 +1927,7 @@ var xr = {
1927
1927
  "reload"
1928
1928
  ],
1929
1929
  setup(e, { emit: t }) {
1930
- let n = e, r = W(n, "modelValue", t), { loading: i, param: a, list: o, conditional: s } = br(n.field, n.row), c = I([]);
1930
+ let n = e, r = W(n, "modelValue", t), { loading: i, param: a, list: o, conditional: s } = xr(n.field, n.row), c = I([]);
1931
1931
  return P(async () => c.value = await o()), (t, n) => {
1932
1932
  let o = z("el-tooltip"), l = z("el-select"), u = It("loading");
1933
1933
  return Ut((F(), E(l, {
@@ -1967,7 +1967,7 @@ var xr = {
1967
1967
  ])), [[u, V(i)]]);
1968
1968
  };
1969
1969
  }
1970
- }), Er = { class: "full center" }, Dr = /* @__PURE__ */ M({
1970
+ }), Dr = { class: "full center" }, Or = /* @__PURE__ */ M({
1971
1971
  __name: "MTransferEditor",
1972
1972
  props: {
1973
1973
  modelValue: {},
@@ -1986,7 +1986,7 @@ var xr = {
1986
1986
  })));
1987
1987
  return P(() => {
1988
1988
  if (n.refer?.entity) {
1989
- let { entity: e, label: t, includes: r, excludes: a } = n.refer, { manager: o } = Q(e);
1989
+ let { entity: e, label: t, includes: r, excludes: a } = n.refer, { manager: o } = Z(e);
1990
1990
  o.values([t], {
1991
1991
  includes: r,
1992
1992
  excludes: a
@@ -1999,7 +1999,7 @@ var xr = {
1999
1999
  }
2000
2000
  }), (e, t) => {
2001
2001
  let n = z("el-transfer");
2002
- return F(), O("div", Er, [j(n, {
2002
+ return F(), O("div", Dr, [j(n, {
2003
2003
  modelValue: V(r),
2004
2004
  "onUpdate:modelValue": t[0] ||= (e) => N(r) ? r.value = e : null,
2005
2005
  data: a.value,
@@ -2012,7 +2012,7 @@ var xr = {
2012
2012
  }, 8, ["modelValue", "data"])]);
2013
2013
  };
2014
2014
  }
2015
- }), Or = /* @__PURE__ */ M({
2015
+ }), kr = /* @__PURE__ */ M({
2016
2016
  __name: "TransferCell",
2017
2017
  props: {
2018
2018
  modelValue: {},
@@ -2026,7 +2026,7 @@ var xr = {
2026
2026
  "reload"
2027
2027
  ],
2028
2028
  setup(e, { emit: t }) {
2029
- let n = I(), r = e, i = t, a = W(r, "modelValue", i), { param: o, list: s, conditional: c } = br(r.field, r.row), l = I([]);
2029
+ let n = I(), r = e, i = t, a = W(r, "modelValue", i), { param: o, list: s, conditional: c } = xr(r.field, r.row), l = I([]);
2030
2030
  return P(async () => l.value = await s()), (t, r) => {
2031
2031
  let o = z("el-button");
2032
2032
  return F(), O(w, null, [j(o, {
@@ -2047,7 +2047,7 @@ var xr = {
2047
2047
  width: 600,
2048
2048
  confirm: () => i("confirm")
2049
2049
  }, Tt({
2050
- default: U(() => [j(Dr, {
2050
+ default: U(() => [j(Or, {
2051
2051
  modelValue: V(a),
2052
2052
  "onUpdate:modelValue": r[1] ||= (e) => N(a) ? a.value = e : null,
2053
2053
  disabled: e.disabled,
@@ -2068,7 +2068,7 @@ var xr = {
2068
2068
  } : void 0]), 1032, ["confirm"])], 64);
2069
2069
  };
2070
2070
  }
2071
- }), kr = /* @__PURE__ */ M({
2071
+ }), Ar = /* @__PURE__ */ M({
2072
2072
  __name: "TreeCell",
2073
2073
  props: {
2074
2074
  modelValue: {},
@@ -2082,7 +2082,7 @@ var xr = {
2082
2082
  "reload"
2083
2083
  ],
2084
2084
  setup(e, { emit: t }) {
2085
- let n = e, r = W(n, "modelValue", t), { loading: i, param: a, tree: o, conditional: s } = br(n.field, n.row), c = I([]);
2085
+ let n = e, r = W(n, "modelValue", t), { loading: i, param: a, tree: o, conditional: s } = xr(n.field, n.row), c = I([]);
2086
2086
  return P(async () => c.value = await o()), (t, n) => {
2087
2087
  let o = z("el-tooltip"), l = z("el-tree-select"), u = It("loading");
2088
2088
  return Ut((F(), E(l, {
@@ -2137,7 +2137,7 @@ var xr = {
2137
2137
  ])), [[u, V(i)]]);
2138
2138
  };
2139
2139
  }
2140
- }), Ar = /* @__PURE__ */ M({
2140
+ }), jr = /* @__PURE__ */ M({
2141
2141
  __name: "BooleanCell",
2142
2142
  props: {
2143
2143
  modelValue: {},
@@ -2189,7 +2189,7 @@ var xr = {
2189
2189
  }, 8, ["modelValue", "disabled"]));
2190
2190
  };
2191
2191
  }
2192
- }), jr = /*#__PURE__*/ wn(/* @__PURE__ */ M({
2192
+ }), Mr = /*#__PURE__*/ wn(/* @__PURE__ */ M({
2193
2193
  __name: "DefaultCell",
2194
2194
  props: {
2195
2195
  modelValue: {},
@@ -2217,7 +2217,7 @@ var xr = {
2217
2217
  _: 1
2218
2218
  }));
2219
2219
  }
2220
- }), [["__scopeId", "data-v-ed36133d"]]), Mr = /* @__PURE__ */ M({
2220
+ }), [["__scopeId", "data-v-ed36133d"]]), Nr = /* @__PURE__ */ M({
2221
2221
  __name: "NumberCell",
2222
2222
  props: {
2223
2223
  modelValue: {},
@@ -2270,7 +2270,15 @@ var xr = {
2270
2270
  ]);
2271
2271
  };
2272
2272
  }
2273
- }), Nr = /* @__PURE__ */ M({
2273
+ });
2274
+ //#endregion
2275
+ //#region morghulis/library/file-url.ts
2276
+ function Pr(e, t) {
2277
+ return t ? `${e.replace(/\/+$/, "")}/${t.replace(/^\/+/, "")}` : "";
2278
+ }
2279
+ //#endregion
2280
+ //#region morghulis/components/cell/instances/special/FileCell.vue
2281
+ var Fr = /* @__PURE__ */ M({
2274
2282
  __name: "FileCell",
2275
2283
  props: {
2276
2284
  modelValue: {},
@@ -2284,14 +2292,14 @@ var xr = {
2284
2292
  "reload"
2285
2293
  ],
2286
2294
  setup(e, { emit: t }) {
2287
- let n = e, r = t, i = W(n, "modelValue", r), { $confirm: a, $message: o } = J(), s = T(() => i.value), { post: c } = X(), { minio_url: l } = Fa();
2295
+ let n = e, r = t, i = W(n, "modelValue", r), { $confirm: a, $message: o } = J(), s = T(() => i.value), { post: c } = Y(), { minio_url: l } = Q();
2288
2296
  function u() {
2289
2297
  let { format: { locked: e } } = n.field;
2290
2298
  if (e) o.warning("抱歉,该文件不支持下载!请在线预览。");
2291
2299
  else if (!i.value) o.warning("无文件");
2292
2300
  else {
2293
- let e = `${l.value}${i.value}`;
2294
- console.log(e), window.open(e, "_blank");
2301
+ let e = Pr(l.value, i.value);
2302
+ window.open(e, "_blank");
2295
2303
  }
2296
2304
  }
2297
2305
  let d = I(), f = n.field.format || {}, p = {
@@ -2375,7 +2383,7 @@ var xr = {
2375
2383
  })], 64);
2376
2384
  };
2377
2385
  }
2378
- }), Pr = /* @__PURE__ */ M({
2386
+ }), Ir = /* @__PURE__ */ M({
2379
2387
  __name: "MObjectEditor",
2380
2388
  props: {
2381
2389
  modelValue: {},
@@ -2403,7 +2411,7 @@ var xr = {
2403
2411
  });
2404
2412
  };
2405
2413
  }
2406
- }), Fr = /* @__PURE__ */ M({
2414
+ }), Lr = /* @__PURE__ */ M({
2407
2415
  __name: "ObjectCell",
2408
2416
  props: {
2409
2417
  modelValue: {},
@@ -2440,7 +2448,7 @@ var xr = {
2440
2448
  title: "对象编辑器",
2441
2449
  confirm: () => r("confirm")
2442
2450
  }, {
2443
- default: U(() => [j(Pr, {
2451
+ default: U(() => [j(Ir, {
2444
2452
  modelValue: V(i),
2445
2453
  "onUpdate:modelValue": n[0] ||= (e) => N(i) ? i.value = e : null,
2446
2454
  disabled: e.disabled
@@ -2449,7 +2457,7 @@ var xr = {
2449
2457
  }, 8, ["confirm"])], 64);
2450
2458
  };
2451
2459
  }
2452
- }), Ir = /* @__PURE__ */ M({
2460
+ }), Rr = /* @__PURE__ */ M({
2453
2461
  __name: "MRichEditor",
2454
2462
  props: {
2455
2463
  modelValue: {},
@@ -2476,7 +2484,7 @@ var xr = {
2476
2484
  "read-only"
2477
2485
  ]));
2478
2486
  }
2479
- }), Lr = /* @__PURE__ */ M({
2487
+ }), zr = /* @__PURE__ */ M({
2480
2488
  __name: "RichCell",
2481
2489
  props: {
2482
2490
  modelValue: {},
@@ -2514,7 +2522,7 @@ var xr = {
2514
2522
  width: "800",
2515
2523
  confirm: () => r("confirm")
2516
2524
  }, {
2517
- default: U(() => [j(Ir, {
2525
+ default: U(() => [j(Rr, {
2518
2526
  modelValue: V(i),
2519
2527
  "onUpdate:modelValue": n[0] ||= (e) => N(i) ? i.value = e : null,
2520
2528
  disabled: e.disabled
@@ -2523,7 +2531,7 @@ var xr = {
2523
2531
  }, 8, ["confirm"])], 64);
2524
2532
  };
2525
2533
  }
2526
- }), Rr = /* @__PURE__ */ M({
2534
+ }), Br = /* @__PURE__ */ M({
2527
2535
  __name: "MCell",
2528
2536
  props: {
2529
2537
  modelValue: {},
@@ -2543,27 +2551,27 @@ var xr = {
2543
2551
  let { tool: e, format: t } = i.field;
2544
2552
  switch (e) {
2545
2553
  case "boolean":
2546
- case "switch": return Ar;
2547
- case "number": return Mr;
2554
+ case "switch": return jr;
2555
+ case "number": return Nr;
2548
2556
  case "text":
2549
- case "textarea": return ir;
2550
- case "select": return Tr;
2551
- case "tree": return kr;
2552
- case "cascade": return wr;
2553
- case "transfer": return Or;
2554
- case "rich": return Lr;
2555
- case "object": return Fr;
2556
- case "time": return vr;
2557
- case "date": return mr;
2558
- case "timerange": return yr;
2559
- case "daterange": return gr;
2560
- case "dates": return pr;
2561
- case "file": return Nr;
2562
- case "set": return t.multiple ? ur : dr;
2563
- case "color": return or;
2564
- case "icon": return lr;
2565
- case "auto": return Cr;
2566
- default: return jr;
2557
+ case "textarea": return ar;
2558
+ case "select": return Er;
2559
+ case "tree": return Ar;
2560
+ case "cascade": return Tr;
2561
+ case "transfer": return kr;
2562
+ case "rich": return zr;
2563
+ case "object": return Lr;
2564
+ case "time": return yr;
2565
+ case "date": return hr;
2566
+ case "timerange": return br;
2567
+ case "daterange": return _r;
2568
+ case "dates": return mr;
2569
+ case "file": return Fr;
2570
+ case "set": return t.multiple ? dr : fr;
2571
+ case "color": return sr;
2572
+ case "icon": return ur;
2573
+ case "auto": return wr;
2574
+ default: return Mr;
2567
2575
  }
2568
2576
  });
2569
2577
  return (t, n) => s.value ? (F(), E(Lt(s.value), {
@@ -2582,7 +2590,7 @@ var xr = {
2582
2590
  "disabled"
2583
2591
  ])) : D("", !0);
2584
2592
  }
2585
- }), zr = { class: "justified" }, Br = /* @__PURE__ */ M({
2593
+ }), Vr = { class: "justified" }, Hr = /* @__PURE__ */ M({
2586
2594
  __name: "DTreeNodeEdit",
2587
2595
  props: {
2588
2596
  disable_table: { type: Boolean },
@@ -2618,7 +2626,7 @@ var xr = {
2618
2626
  let s = z("el-space"), c = z("el-col"), l = z("el-row");
2619
2627
  return F(), E(l, null, {
2620
2628
  default: U(() => [j(c, { class: "right" }, {
2621
- default: U(() => [k("div", zr, [j(s, { size: 0 }, {
2629
+ default: U(() => [k("div", Vr, [j(s, { size: 0 }, {
2622
2630
  default: U(() => [
2623
2631
  (e.control.allow_edit || e.control.allow_insert) && e.collector.size ? (F(), E(K, {
2624
2632
  key: 0,
@@ -2669,7 +2677,7 @@ var xr = {
2669
2677
  key: 0,
2670
2678
  style: { "margin-top": "10px" }
2671
2679
  }, {
2672
- default: U(() => [j(Rr, {
2680
+ default: U(() => [j(Br, {
2673
2681
  field: e.field,
2674
2682
  row: a.value,
2675
2683
  modelValue: a.value[e.field.prop],
@@ -2688,7 +2696,7 @@ var xr = {
2688
2696
  });
2689
2697
  };
2690
2698
  }
2691
- }), Vr = /* @__PURE__ */ M({
2699
+ }), Ur = /* @__PURE__ */ M({
2692
2700
  __name: "DataWrapper",
2693
2701
  props: {
2694
2702
  loading: { type: Boolean },
@@ -2729,7 +2737,7 @@ var xr = {
2729
2737
  } : void 0]), 1536);
2730
2738
  };
2731
2739
  }
2732
- }), Hr = /* @__PURE__ */ M({
2740
+ }), Wr = /* @__PURE__ */ M({
2733
2741
  __name: "DTreeController",
2734
2742
  props: {
2735
2743
  unrestricted: { type: Boolean },
@@ -2791,7 +2799,7 @@ var xr = {
2791
2799
  });
2792
2800
  };
2793
2801
  }
2794
- }), Ur = /* @__PURE__ */ M({
2802
+ }), Gr = /* @__PURE__ */ M({
2795
2803
  __name: "PluginColumnContent",
2796
2804
  props: {
2797
2805
  data: {},
@@ -2811,7 +2819,7 @@ var xr = {
2811
2819
  invoke: n
2812
2820
  }, null, 8, ["data", "param"]));
2813
2821
  }
2814
- }), Wr = /*#__PURE__*/ wn(/* @__PURE__ */ M({
2822
+ }), Kr = /*#__PURE__*/ wn(/* @__PURE__ */ M({
2815
2823
  __name: "PluginButtonContent",
2816
2824
  props: {
2817
2825
  buttons: {},
@@ -2823,7 +2831,7 @@ var xr = {
2823
2831
  setup(e, { emit: t }) {
2824
2832
  let n = e, r = t, i = Vt("actionsRef"), { width: a } = Jt(i);
2825
2833
  H(a, () => r("width", a.value + 15));
2826
- let { buttons: o } = Ya(T(() => n.buttons || []), T(() => n.code), T(() => n.data));
2834
+ let { buttons: o } = Xa(T(() => n.buttons || []), T(() => n.code), T(() => n.data));
2827
2835
  function s(e, t) {
2828
2836
  e.preventDefault(), e.stopPropagation();
2829
2837
  let { data: r, collector: i } = n;
@@ -2867,7 +2875,7 @@ var xr = {
2867
2875
  }), [["__scopeId", "data-v-08150db9"]]);
2868
2876
  //#endregion
2869
2877
  //#region morghulis/components/table/hooks/table-sort.ts
2870
- function Gr(e, t) {
2878
+ function qr(e, t) {
2871
2879
  let n = null;
2872
2880
  function r() {
2873
2881
  (e.value?.$el.querySelectorAll("tr.el-table__row")).forEach((e) => {
@@ -2902,7 +2910,7 @@ function Gr(e, t) {
2902
2910
  }
2903
2911
  //#endregion
2904
2912
  //#region morghulis/components/table/tools/DTController.vue
2905
- var Kr = /* @__PURE__ */ M({
2913
+ var Jr = /* @__PURE__ */ M({
2906
2914
  __name: "DTController",
2907
2915
  props: {
2908
2916
  meta: {},
@@ -2993,7 +3001,7 @@ var Kr = /* @__PURE__ */ M({
2993
3001
  });
2994
3002
  };
2995
3003
  }
2996
- }), qr = {
3004
+ }), Yr = {
2997
3005
  placement: "bottom-end",
2998
3006
  popperClass: "m-table-tooltip",
2999
3007
  enterable: !1,
@@ -3006,7 +3014,7 @@ var Kr = /* @__PURE__ */ M({
3006
3014
  },
3007
3015
  showAfter: 0,
3008
3016
  showArrow: !0
3009
- }, Jr = /* @__PURE__ */ M({
3017
+ }, Xr = /* @__PURE__ */ M({
3010
3018
  __name: "DTIndex",
3011
3019
  props: {
3012
3020
  collector: {},
@@ -3054,7 +3062,7 @@ var Kr = /* @__PURE__ */ M({
3054
3062
  });
3055
3063
  };
3056
3064
  }
3057
- }), Yr = { class: "justified" }, Xr = /* @__PURE__ */ M({
3065
+ }), Zr = { class: "justified" }, Qr = /* @__PURE__ */ M({
3058
3066
  __name: "DTHeader",
3059
3067
  props: {
3060
3068
  field: {},
@@ -3071,7 +3079,7 @@ var Kr = /* @__PURE__ */ M({
3071
3079
  setup(e, { emit: t }) {
3072
3080
  let n = t, r = e, i = T(() => {
3073
3081
  let e = r.field.prop;
3074
- return r.finder[e] ? "primary" : Un(r.includes, e).length ? "warning" : "";
3082
+ return r.finder[e] ? "primary" : Wn(r.includes, e).length ? "warning" : "";
3075
3083
  }), a = T(() => (r.orders || {})[r.field.prop]), o = T(() => a.value === 1 ? "sort-up" : a.value === -1 ? "sort-down" : "sort");
3076
3084
  return (t, r) => {
3077
3085
  let s = z("el-space"), c = z("el-divider");
@@ -3087,7 +3095,7 @@ var Kr = /* @__PURE__ */ M({
3087
3095
  _: 1
3088
3096
  }),
3089
3097
  j(c),
3090
- k("div", Yr, [k("div", null, [["object"].includes(e.field.tool) ? D("", !0) : (F(), E(K, {
3098
+ k("div", Zr, [k("div", null, [["object"].includes(e.field.tool) ? D("", !0) : (F(), E(K, {
3091
3099
  key: 0,
3092
3100
  size: "small",
3093
3101
  icon: "search",
@@ -3110,7 +3118,7 @@ var Kr = /* @__PURE__ */ M({
3110
3118
  ], 64);
3111
3119
  };
3112
3120
  }
3113
- }), Zr = { class: "justified" }, Qr = /* @__PURE__ */ M({
3121
+ }), $r = { class: "justified" }, ei = /* @__PURE__ */ M({
3114
3122
  __name: "DTFooter",
3115
3123
  props: {
3116
3124
  size: {},
@@ -3132,7 +3140,7 @@ var Kr = /* @__PURE__ */ M({
3132
3140
  }));
3133
3141
  return (t, n) => {
3134
3142
  let r = z("el-pagination"), s = z("el-text"), c = z("el-input-number"), l = z("el-space"), u = z("el-select");
3135
- return F(), O("div", Zr, [e.size && e.total && e.width > 300 ? (F(), E(l, { key: 0 }, {
3143
+ return F(), O("div", $r, [e.size && e.total && e.width > 300 ? (F(), E(l, { key: 0 }, {
3136
3144
  default: U(() => [e.width > 600 ? (F(), E(r, {
3137
3145
  key: 0,
3138
3146
  size: "small",
@@ -3201,13 +3209,13 @@ var Kr = /* @__PURE__ */ M({
3201
3209
  })]);
3202
3210
  };
3203
3211
  }
3204
- }), $r = {
3212
+ }), ti = {
3205
3213
  key: 0,
3206
3214
  class: "search-value"
3207
- }, ei = {
3215
+ }, ni = {
3208
3216
  key: 1,
3209
3217
  class: "search-value"
3210
- }, ti = { class: "search-confirm justified" }, ni = /*#__PURE__*/ wn(/* @__PURE__ */ M({
3218
+ }, ri = { class: "search-confirm justified" }, ii = /*#__PURE__*/ wn(/* @__PURE__ */ M({
3211
3219
  __name: "DTSearch",
3212
3220
  props: {
3213
3221
  field: {},
@@ -3246,13 +3254,13 @@ var Kr = /* @__PURE__ */ M({
3246
3254
  if (t) {
3247
3255
  let e = r.includes?.[t];
3248
3256
  c.value = !0, f.value = !1;
3249
- let { collation: n } = Vn(t);
3257
+ let { collation: n } = Hn(t);
3250
3258
  p.value = n ?? "exact", o.value.value = e;
3251
3259
  }
3252
3260
  }
3253
3261
  }
3254
3262
  P(l);
3255
- let u = T(() => Zn.multiple.includes(r.field.domain)), d = T(() => r.field.domain === "BooleanField"), f = I(!1), p = I(d.value ? "exact" : "contains"), m = T(() => [
3263
+ let u = T(() => Qn.multiple.includes(r.field.domain)), d = T(() => r.field.domain === "BooleanField"), f = I(!1), p = I(d.value ? "exact" : "contains"), m = T(() => [
3256
3264
  {
3257
3265
  label: "基础检索",
3258
3266
  value: "basic",
@@ -3411,7 +3419,7 @@ var Kr = /* @__PURE__ */ M({
3411
3419
  }, 8, ["title"])]),
3412
3420
  _: 1
3413
3421
  }),
3414
- d.value ? (F(), O("div", $r, [j(b, {
3422
+ d.value ? (F(), O("div", ti, [j(b, {
3415
3423
  modelValue: o.value.value,
3416
3424
  "onUpdate:modelValue": r[2] ||= (e) => o.value.value = e
3417
3425
  }, {
@@ -3423,7 +3431,7 @@ var Kr = /* @__PURE__ */ M({
3423
3431
  label: "否"
3424
3432
  })]),
3425
3433
  _: 1
3426
- }, 8, ["modelValue"])])) : (F(), O("div", ei, [p.value === "isnull" ? (F(), E(b, {
3434
+ }, 8, ["modelValue"])])) : (F(), O("div", ni, [p.value === "isnull" ? (F(), E(b, {
3427
3435
  key: 0,
3428
3436
  disabled: c.value,
3429
3437
  placement: "right-start",
@@ -3464,7 +3472,7 @@ var Kr = /* @__PURE__ */ M({
3464
3472
  onFocus: r[8] ||= () => {},
3465
3473
  placeholder: "检索值"
3466
3474
  }, null, 8, ["modelValue", "disabled"]))])),
3467
- k("div", ti, [k("div", null, [c.value ? (F(), E(G, {
3475
+ k("div", ri, [k("div", null, [c.value ? (F(), E(G, {
3468
3476
  key: 0,
3469
3477
  icon: "lock",
3470
3478
  class: "medium",
@@ -3503,7 +3511,7 @@ var Kr = /* @__PURE__ */ M({
3503
3511
  ], 64);
3504
3512
  };
3505
3513
  }
3506
- }), [["__scopeId", "data-v-0618949d"]]), ri = /* @__PURE__ */ M({
3514
+ }), [["__scopeId", "data-v-0618949d"]]), ai = /* @__PURE__ */ M({
3507
3515
  __name: "DTSaveHeader",
3508
3516
  props: { data: {} },
3509
3517
  setup(e) {
@@ -3533,7 +3541,7 @@ var Kr = /* @__PURE__ */ M({
3533
3541
  });
3534
3542
  };
3535
3543
  }
3536
- }), ii = /*#__PURE__*/ wn(/* @__PURE__ */ M({
3544
+ }), oi = /*#__PURE__*/ wn(/* @__PURE__ */ M({
3537
3545
  __name: "MForm",
3538
3546
  props: {
3539
3547
  original: { default: {} },
@@ -3620,7 +3628,7 @@ var Kr = /* @__PURE__ */ M({
3620
3628
  icon: "refresh"
3621
3629
  }, null, 8, ["onClick"])) : D("", !0)
3622
3630
  ]),
3623
- default: U(() => [j(Rr, {
3631
+ default: U(() => [j(Br, {
3624
3632
  modelValue: a.value[t.prop],
3625
3633
  "onUpdate:modelValue": (e) => a.value[t.prop] = e,
3626
3634
  field: t,
@@ -3644,7 +3652,7 @@ var Kr = /* @__PURE__ */ M({
3644
3652
  }, 8, ["model", "rules"]);
3645
3653
  };
3646
3654
  }
3647
- }), [["__scopeId", "data-v-25b72fd8"]]), ai = /* @__PURE__ */ M({
3655
+ }), [["__scopeId", "data-v-25b72fd8"]]), si = /* @__PURE__ */ M({
3648
3656
  __name: "DTSave",
3649
3657
  props: {
3650
3658
  is_insert: { type: Boolean },
@@ -3685,7 +3693,7 @@ var Kr = /* @__PURE__ */ M({
3685
3693
  }
3686
3694
  return t({ saveData: c }), (t, n) => {
3687
3695
  let s = z("el-text"), c = z("el-result");
3688
- return a.value.length ? (F(), E(ii, {
3696
+ return a.value.length ? (F(), E(oi, {
3689
3697
  key: 0,
3690
3698
  ref_key: "formRef",
3691
3699
  ref: r,
@@ -3713,7 +3721,7 @@ var Kr = /* @__PURE__ */ M({
3713
3721
  });
3714
3722
  //#endregion
3715
3723
  //#region morghulis/library/use-pagination/index.ts
3716
- function oi(e, t = 10) {
3724
+ function ci(e, t = 10) {
3717
3725
  let n = I({
3718
3726
  size: t,
3719
3727
  page: 1
@@ -3736,7 +3744,7 @@ function oi(e, t = 10) {
3736
3744
  }
3737
3745
  //#endregion
3738
3746
  //#region morghulis/components/viewer/instances/MDataViewer.vue?vue&type=script&setup=true&lang.ts
3739
- var si = { class: "justified full" }, ci = /* @__PURE__ */ M({
3747
+ var li = { class: "justified full" }, ui = /* @__PURE__ */ M({
3740
3748
  __name: "MDataViewer",
3741
3749
  props: { url: {} },
3742
3750
  setup(e) {
@@ -3744,11 +3752,11 @@ var si = { class: "justified full" }, ci = /* @__PURE__ */ M({
3744
3752
  if (!t.url) return "";
3745
3753
  let e = t.url.lastIndexOf("/");
3746
3754
  return t.url.substring(e + 1);
3747
- }), { readBookFromURL: r, zip: i } = Ga(), a = I({}), o = I(), s = I(!0), c = T(() => a.value[o.value]), l = T(() => {
3755
+ }), { readBookFromURL: r, zip: i } = Ka(), a = I({}), o = I(), s = I(!0), c = T(() => a.value[o.value]), l = T(() => {
3748
3756
  if (!c.value) return [];
3749
3757
  let e = c.value.columns || [], t = c.value.headers || [];
3750
3758
  return s.value ? i(e, t) : i(e, e);
3751
- }), { total: u, results: d, pager: f } = oi(T(() => {
3759
+ }), { total: u, results: d, pager: f } = ci(T(() => {
3752
3760
  if (!c.value) return [];
3753
3761
  let e = [...c.value.data], t = c.value.columns || [], n = c.value.headers || [];
3754
3762
  return s.value || e.unshift(n), e.map((e) => i(t, e));
@@ -3761,8 +3769,8 @@ var si = { class: "justified full" }, ci = /* @__PURE__ */ M({
3761
3769
  immediate: !0
3762
3770
  }), (e, t) => {
3763
3771
  let r = z("el-text"), i = z("el-option"), c = z("el-select"), p = z("el-divider"), m = z("el-checkbox"), h = z("el-space"), g = z("el-table-column"), _ = z("el-table"), v = z("el-pagination");
3764
- return F(), E(Vr, null, {
3765
- header: U(() => [k("div", si, [j(r, {
3772
+ return F(), E(Ur, null, {
3773
+ header: U(() => [k("div", li, [j(r, {
3766
3774
  size: "small",
3767
3775
  truncated: "",
3768
3776
  tag: "b"
@@ -3829,7 +3837,7 @@ var si = { class: "justified full" }, ci = /* @__PURE__ */ M({
3829
3837
  });
3830
3838
  };
3831
3839
  }
3832
- }), li = /* @__PURE__ */ M({
3840
+ }), di = /* @__PURE__ */ M({
3833
3841
  __name: "MImageViewer",
3834
3842
  props: { url: {} },
3835
3843
  setup(e) {
@@ -3847,7 +3855,7 @@ var si = { class: "justified full" }, ci = /* @__PURE__ */ M({
3847
3855
  }, null, 8, ["src", "preview-src-list"]);
3848
3856
  };
3849
3857
  }
3850
- }), ui = { class: "pager" }, di = /*#__PURE__*/ wn(/* @__PURE__ */ M({
3858
+ }), fi = { class: "pager" }, pi = /*#__PURE__*/ wn(/* @__PURE__ */ M({
3851
3859
  __name: "MPdfViewer",
3852
3860
  props: {
3853
3861
  url: {},
@@ -3869,7 +3877,7 @@ var si = { class: "justified full" }, ci = /* @__PURE__ */ M({
3869
3877
  offset: 0,
3870
3878
  teleported: !1
3871
3879
  }, {
3872
- default: U(() => [k("div", ui, [j(f, { size: "small" }, {
3880
+ default: U(() => [k("div", fi, [j(f, { size: "small" }, {
3873
3881
  default: U(() => [j(u, {
3874
3882
  type: "info",
3875
3883
  tag: "b",
@@ -3908,7 +3916,7 @@ var si = { class: "justified full" }, ci = /* @__PURE__ */ M({
3908
3916
  }, 8, ["content"])), [[h, n.value]])], 64);
3909
3917
  };
3910
3918
  }
3911
- }), [["__scopeId", "data-v-0df3a547"]]), fi = /* @__PURE__ */ M({
3919
+ }), [["__scopeId", "data-v-0df3a547"]]), mi = /* @__PURE__ */ M({
3912
3920
  __name: "MTxtView",
3913
3921
  props: { url: {} },
3914
3922
  setup(e) {
@@ -3932,15 +3940,15 @@ var si = { class: "justified full" }, ci = /* @__PURE__ */ M({
3932
3940
  }, null, 8, ["modelValue"]);
3933
3941
  };
3934
3942
  }
3935
- }), pi = {};
3936
- function mi(e, t) {
3943
+ }), hi = {};
3944
+ function gi(e, t) {
3937
3945
  return " 不支持的文件格式 ";
3938
3946
  }
3939
- var hi = /*#__PURE__*/ wn(pi, [["render", mi]]);
3947
+ var _i = /*#__PURE__*/ wn(hi, [["render", gi]]);
3940
3948
  //#endregion
3941
3949
  //#region morghulis/components/viewer/use-file.ts
3942
- function gi(e) {
3943
- let { minio_url: t } = Fa(), n = T(() => e.value ? `${t.value}${e.value}` : ""), r = [
3950
+ function vi(e) {
3951
+ let { minio_url: t } = Q(), n = T(() => Pr(t.value, e.value)), r = [
3944
3952
  ".pdf",
3945
3953
  ".jpg",
3946
3954
  ".gif",
@@ -3967,7 +3975,7 @@ function gi(e) {
3967
3975
  }
3968
3976
  //#endregion
3969
3977
  //#region morghulis/components/viewer/MFileView.vue
3970
- var _i = /* @__PURE__ */ M({
3978
+ var yi = /* @__PURE__ */ M({
3971
3979
  __name: "MFileView",
3972
3980
  props: {
3973
3981
  path: {},
@@ -3975,18 +3983,18 @@ var _i = /* @__PURE__ */ M({
3975
3983
  locked: { type: Boolean }
3976
3984
  },
3977
3985
  setup(e) {
3978
- let t = e, { ext: n, name: r, url: i } = gi(T(() => t.path)), a = T(() => {
3986
+ let t = e, { ext: n, name: r, url: i } = vi(T(() => t.path)), a = T(() => {
3979
3987
  switch (n.value) {
3980
3988
  case ".xlsx":
3981
3989
  case ".xls":
3982
- case ".csv": return ci;
3990
+ case ".csv": return ui;
3983
3991
  case ".jpg":
3984
3992
  case ".gif":
3985
3993
  case ".png":
3986
- case ".jpeg": return li;
3987
- case ".pdf": return di;
3988
- case ".txt": return fi;
3989
- default: return hi;
3994
+ case ".jpeg": return di;
3995
+ case ".pdf": return pi;
3996
+ case ".txt": return mi;
3997
+ default: return _i;
3990
3998
  }
3991
3999
  });
3992
4000
  return (e, t) => {
@@ -4009,16 +4017,16 @@ var _i = /* @__PURE__ */ M({
4009
4017
  }));
4010
4018
  };
4011
4019
  }
4012
- }), vi = {
4020
+ }), bi = {
4013
4021
  class: "justified",
4014
4022
  style: {
4015
4023
  padding: "5px",
4016
4024
  "text-align": "right"
4017
4025
  }
4018
- }, yi = { style: {
4026
+ }, xi = { style: {
4019
4027
  "text-align": "center",
4020
4028
  padding: "10px 0 5px 0"
4021
- } }, bi = /* @__PURE__ */ M({
4029
+ } }, Si = /* @__PURE__ */ M({
4022
4030
  __name: "DTCellEditor",
4023
4031
  props: { manager: {} },
4024
4032
  emits: ["reload"],
@@ -4071,7 +4079,7 @@ var _i = /* @__PURE__ */ M({
4071
4079
  ref_key: "dialogRef",
4072
4080
  ref: a
4073
4081
  }, {
4074
- tool: U(({ data: { field: t, row: r } }) => [t.tool === "file" ? (F(), E(V(Nr), {
4082
+ tool: U(({ data: { field: t, row: r } }) => [t.tool === "file" ? (F(), E(V(Fr), {
4075
4083
  key: 0,
4076
4084
  disabled: !t?.allow_edit,
4077
4085
  field: t,
@@ -4095,7 +4103,7 @@ var _i = /* @__PURE__ */ M({
4095
4103
  default: U(() => [...n[2] ||= [A("保存 ", -1)]]),
4096
4104
  _: 1
4097
4105
  }, 8, ["onClick"]))]),
4098
- default: U(({ data: { field: { prop: e, tool: t, refer: n, allow_edit: r, format: { locked: i } }, row: a } }) => [t === "rich" ? (F(), E(Ir, {
4106
+ default: U(({ data: { field: { prop: e, tool: t, refer: n, allow_edit: r, format: { locked: i } }, row: a } }) => [t === "rich" ? (F(), E(Rr, {
4099
4107
  key: 0,
4100
4108
  disabled: !r,
4101
4109
  modelValue: o.value[e],
@@ -4104,7 +4112,7 @@ var _i = /* @__PURE__ */ M({
4104
4112
  "disabled",
4105
4113
  "modelValue",
4106
4114
  "onUpdate:modelValue"
4107
- ])) : t === "object" ? (F(), E(Pr, {
4115
+ ])) : t === "object" ? (F(), E(Ir, {
4108
4116
  key: 1,
4109
4117
  disabled: !r,
4110
4118
  modelValue: o.value[e],
@@ -4113,7 +4121,7 @@ var _i = /* @__PURE__ */ M({
4113
4121
  "disabled",
4114
4122
  "modelValue",
4115
4123
  "onUpdate:modelValue"
4116
- ])) : t === "transfer" ? (F(), E(Dr, {
4124
+ ])) : t === "transfer" ? (F(), E(Or, {
4117
4125
  key: 2,
4118
4126
  modelValue: o.value[e],
4119
4127
  "onUpdate:modelValue": (t) => o.value[e] = t,
@@ -4124,18 +4132,18 @@ var _i = /* @__PURE__ */ M({
4124
4132
  "onUpdate:modelValue",
4125
4133
  "disabled",
4126
4134
  "refer"
4127
- ])) : t === "file" ? (F(), E(_i, {
4135
+ ])) : t === "file" ? (F(), E(yi, {
4128
4136
  key: 3,
4129
4137
  path: o.value[e],
4130
4138
  locked: i
4131
4139
  }, null, 8, ["path", "locked"])) : D("", !0)]),
4132
4140
  _: 1
4133
- }, 512), j(rr, {
4141
+ }, 512), j(ir, {
4134
4142
  ref_key: "popoverRef",
4135
4143
  ref: i,
4136
4144
  width: "300px"
4137
4145
  }, {
4138
- default: U(({ data: { field: t, row: r } }) => [k("div", vi, [j(K, {
4146
+ default: U(({ data: { field: t, row: r } }) => [k("div", bi, [j(K, {
4139
4147
  icon: "cancel",
4140
4148
  onClick: c
4141
4149
  }, {
@@ -4152,7 +4160,7 @@ var _i = /* @__PURE__ */ M({
4152
4160
  }, {
4153
4161
  default: U(() => [...n[4] ||= [A("保存 ", -1)]]),
4154
4162
  _: 1
4155
- }, 8, ["onClick"]))]), k("div", yi, [j(Rr, {
4163
+ }, 8, ["onClick"]))]), k("div", xi, [j(Br, {
4156
4164
  modelValue: o.value[t.prop],
4157
4165
  "onUpdate:modelValue": (e) => o.value[t.prop] = e,
4158
4166
  field: t,
@@ -4169,7 +4177,7 @@ var _i = /* @__PURE__ */ M({
4169
4177
  _: 1
4170
4178
  }, 512)], 64));
4171
4179
  }
4172
- }), xi = /* @__PURE__ */ M({
4180
+ }), Ci = /* @__PURE__ */ M({
4173
4181
  __name: "DTViews",
4174
4182
  props: {
4175
4183
  entity: {},
@@ -4178,7 +4186,7 @@ var _i = /* @__PURE__ */ M({
4178
4186
  },
4179
4187
  emits: ["update:code"],
4180
4188
  setup(e, { emit: t }) {
4181
- let n = e, r = t, { manager: i, loading: a } = Q("valar.MetaView"), o = W(n, "code", r), s = I([]);
4189
+ let n = e, r = t, { manager: i, loading: a } = Z("valar.MetaView"), o = W(n, "code", r), s = I([]);
4182
4190
  return P(() => {
4183
4191
  i.values(["code", "name"], { includes: { meta__entity: n.entity } }).then((e) => {
4184
4192
  let t = Object.fromEntries(n.codes.map((e) => [e, e.toUpperCase()]));
@@ -4198,10 +4206,10 @@ var _i = /* @__PURE__ */ M({
4198
4206
  }, null, 8, ["options", "modelValue"]);
4199
4207
  };
4200
4208
  }
4201
- }), Si = {
4209
+ }), wi = {
4202
4210
  key: 2,
4203
4211
  class: "small info"
4204
- }, Ci = /* @__PURE__ */ M({
4212
+ }, Ti = /* @__PURE__ */ M({
4205
4213
  __name: "DTCell",
4206
4214
  props: {
4207
4215
  field: {},
@@ -4279,11 +4287,11 @@ var _i = /* @__PURE__ */ M({
4279
4287
  onClick: n[2] ||= (e) => a(e)
4280
4288
  }, null, 8, ["icon", "type"]),
4281
4289
  c.value ? D("", !0) : (F(), O(w, { key: 1 }, [A(B(u.value), 1)], 64)),
4282
- e.field.unit ? (F(), O("span", Si, B(e.field.unit), 1)) : D("", !0)
4290
+ e.field.unit ? (F(), O("span", wi, B(e.field.unit), 1)) : D("", !0)
4283
4291
  ], 64);
4284
4292
  };
4285
4293
  }
4286
- }), wi = /* @__PURE__ */ M({
4294
+ }), Ei = /* @__PURE__ */ M({
4287
4295
  __name: "ViewCodePlugin",
4288
4296
  props: {
4289
4297
  data: {},
@@ -4306,7 +4314,7 @@ var _i = /* @__PURE__ */ M({
4306
4314
  onClick: t[0] ||= (e) => n(e)
4307
4315
  }, null, 8, ["icon", "type"]));
4308
4316
  }
4309
- }), Ti = /* @__PURE__ */ M({
4317
+ }), Di = /* @__PURE__ */ M({
4310
4318
  __name: "MetaSelect",
4311
4319
  props: {
4312
4320
  modelValue: {},
@@ -4325,7 +4333,7 @@ var _i = /* @__PURE__ */ M({
4325
4333
  },
4326
4334
  emits: ["update:modelValue", "change"],
4327
4335
  setup(e, { emit: t }) {
4328
- let { post: n } = X(), r = I(), i = e, a = t;
4336
+ let { post: n } = Y(), r = I(), i = e, a = t;
4329
4337
  function o(e) {
4330
4338
  let t = r.value?.getCheckedNodes(!0)?.[0];
4331
4339
  s.value.is_tree = !!t?.data.is_tree;
@@ -4374,11 +4382,11 @@ var _i = /* @__PURE__ */ M({
4374
4382
  ]);
4375
4383
  };
4376
4384
  }
4377
- }), Ei = /* @__PURE__ */ M({
4385
+ }), Oi = /* @__PURE__ */ M({
4378
4386
  __name: "MetaNameInput",
4379
4387
  props: { entity: {} },
4380
4388
  setup(e) {
4381
- let t = e, { manager: n } = Q("valar.Meta"), r = I(), i = I(), a = T(() => r.value?.name === i.value);
4389
+ let t = e, { manager: n } = Z("valar.Meta"), r = I(), i = I(), a = T(() => r.value?.name === i.value);
4382
4390
  H(() => t.entity, o, { immediate: !0 });
4383
4391
  function o() {
4384
4392
  let e = t.entity;
@@ -4416,7 +4424,7 @@ var _i = /* @__PURE__ */ M({
4416
4424
  }, 8, ["modelValue"])) : D("", !0);
4417
4425
  };
4418
4426
  }
4419
- }), Di = /* @__PURE__ */ M({
4427
+ }), ki = /* @__PURE__ */ M({
4420
4428
  __name: "MetaViewList",
4421
4429
  props: {
4422
4430
  entity: {},
@@ -4454,7 +4462,7 @@ var _i = /* @__PURE__ */ M({
4454
4462
  label: "当前",
4455
4463
  width: 50,
4456
4464
  fixed: "left",
4457
- component: wi,
4465
+ component: Ei,
4458
4466
  param: i,
4459
4467
  callback(e) {
4460
4468
  i.value.code = e;
@@ -4490,7 +4498,7 @@ var _i = /* @__PURE__ */ M({
4490
4498
  ];
4491
4499
  return (t, n) => {
4492
4500
  let l = z("el-switch");
4493
- return F(), O(w, null, [j(da, {
4501
+ return F(), O(w, null, [j(pa, {
4494
4502
  ref_key: "tableRef",
4495
4503
  ref: u,
4496
4504
  entity: "valar.MetaView",
@@ -4500,12 +4508,12 @@ var _i = /* @__PURE__ */ M({
4500
4508
  buttons: p
4501
4509
  }, {
4502
4510
  default: U(() => [
4503
- j(Ti, {
4511
+ j(Di, {
4504
4512
  modelValue: i.value,
4505
4513
  "onUpdate:modelValue": n[0] ||= (e) => i.value = e,
4506
4514
  onChange: a
4507
4515
  }, null, 8, ["modelValue"]),
4508
- j(Ei, { entity: i.value.entity }, null, 8, ["entity"]),
4516
+ j(Oi, { entity: i.value.entity }, null, 8, ["entity"]),
4509
4517
  e.locked ? D("", !0) : (F(), E(K, {
4510
4518
  key: 0,
4511
4519
  onClick: c,
@@ -4540,11 +4548,11 @@ var _i = /* @__PURE__ */ M({
4540
4548
  "active-text": "树形",
4541
4549
  "inactive-text": "表格"
4542
4550
  }, null, 8, ["modelValue", "onUpdate:modelValue"])) : D("", !0)]),
4543
- default: U(({ data: { is_tree: e, code: t, entity: n } }) => [e ? (F(), E(ga, {
4551
+ default: U(({ data: { is_tree: e, code: t, entity: n } }) => [e ? (F(), E(va, {
4544
4552
  key: 0,
4545
4553
  entity: n,
4546
4554
  code: t
4547
- }, null, 8, ["entity", "code"])) : (F(), E(da, {
4555
+ }, null, 8, ["entity", "code"])) : (F(), E(pa, {
4548
4556
  key: 1,
4549
4557
  entity: n,
4550
4558
  code: t
@@ -4553,7 +4561,7 @@ var _i = /* @__PURE__ */ M({
4553
4561
  }, 512)], 64);
4554
4562
  };
4555
4563
  }
4556
- }), Oi = /* @__PURE__ */ M({
4564
+ }), Ai = /* @__PURE__ */ M({
4557
4565
  __name: "CustomFields",
4558
4566
  props: {
4559
4567
  options: {},
@@ -4561,7 +4569,7 @@ var _i = /* @__PURE__ */ M({
4561
4569
  view_id: {}
4562
4570
  },
4563
4571
  setup(e, { expose: t }) {
4564
- let n = I(), r = e, i = I([]), { post: a } = X(), o = {
4572
+ let n = I(), r = e, i = I([]), { post: a } = Y(), o = {
4565
4573
  lazy: !0,
4566
4574
  leaf: "isLeaf",
4567
4575
  multiple: !0,
@@ -4614,7 +4622,7 @@ var _i = /* @__PURE__ */ M({
4614
4622
  }, 8, ["modelValue"]);
4615
4623
  };
4616
4624
  }
4617
- }), ki = /* @__PURE__ */ M({
4625
+ }), ji = /* @__PURE__ */ M({
4618
4626
  __name: "ReferPlugin",
4619
4627
  props: {
4620
4628
  data: {},
@@ -4625,7 +4633,7 @@ var _i = /* @__PURE__ */ M({
4625
4633
  let t = e, n = T(() => t.data?.refer.entity), r = T(() => {
4626
4634
  if (!t.data) return !0;
4627
4635
  let { tool: e, domain: n } = t.data;
4628
- return !e || !n ? !0 : Zn.referred.includes(n) ? !1 : n !== "CharField" || ![
4636
+ return !e || !n ? !0 : Qn.referred.includes(n) ? !1 : n !== "CharField" || ![
4629
4637
  "select",
4630
4638
  "cascade",
4631
4639
  "tree",
@@ -4650,7 +4658,7 @@ var _i = /* @__PURE__ */ M({
4650
4658
  "type"
4651
4659
  ]));
4652
4660
  }
4653
- }), Ai = /* @__PURE__ */ M({
4661
+ }), Mi = /* @__PURE__ */ M({
4654
4662
  __name: "ReferOption",
4655
4663
  props: {
4656
4664
  refer: {},
@@ -4660,13 +4668,13 @@ var _i = /* @__PURE__ */ M({
4660
4668
  setup(e, { emit: t }) {
4661
4669
  let n = e, r = W(n, "refer", t);
4662
4670
  function i(e) {
4663
- return !r.value.entity || Zn.referred.includes(n.domain) && e === "value";
4671
+ return !r.value.entity || Qn.referred.includes(n.domain) && e === "value";
4664
4672
  }
4665
4673
  let a = {
4666
4674
  value: "取值字段",
4667
4675
  label: "标签字段",
4668
4676
  display: "展示字段"
4669
- }, o = T(() => r.value.entity || ""), { manager: s } = Q(o), { $message: c } = J(), l = I();
4677
+ }, o = T(() => r.value.entity || ""), { manager: s } = Z(o), { $message: c } = J(), l = I();
4670
4678
  H(o, async (e, t, n) => {
4671
4679
  let r = !0;
4672
4680
  if (n(() => {
@@ -4678,7 +4686,7 @@ var _i = /* @__PURE__ */ M({
4678
4686
  r && (console.error("加载字段选项失败", e), c.error("字段选项加载失败,请重新选择元数据"));
4679
4687
  }
4680
4688
  }, { immediate: !0 });
4681
- let u = T(() => l.value ? Object.values(l.value.model).filter(({ domain: e }) => !Zn.referred.includes(e || "")).map(({ prop: e, label: t }) => ({
4689
+ let u = T(() => l.value ? Object.values(l.value.model).filter(({ domain: e }) => !Qn.referred.includes(e || "")).map(({ prop: e, label: t }) => ({
4682
4690
  value: e,
4683
4691
  label: t,
4684
4692
  display: e
@@ -4712,7 +4720,7 @@ var _i = /* @__PURE__ */ M({
4712
4720
  }, 1024)), 64);
4713
4721
  };
4714
4722
  }
4715
- }), ji = /* @__PURE__ */ M({
4723
+ }), Ni = /* @__PURE__ */ M({
4716
4724
  __name: "TreeRootSelection",
4717
4725
  props: {
4718
4726
  modelValue: {},
@@ -4721,7 +4729,7 @@ var _i = /* @__PURE__ */ M({
4721
4729
  },
4722
4730
  emits: ["update:modelValue"],
4723
4731
  setup(e, { emit: t }) {
4724
- let n = e, r = W(n, "modelValue", t), { manager: i } = Q(T(() => n.entity)), a = I();
4732
+ let n = e, r = W(n, "modelValue", t), { manager: i } = Z(T(() => n.entity)), a = I();
4725
4733
  function o() {
4726
4734
  i.tree({ includes: { isLeaf: !1 } }).then((e) => a.value = e.options);
4727
4735
  }
@@ -4769,7 +4777,7 @@ var _i = /* @__PURE__ */ M({
4769
4777
  ]);
4770
4778
  };
4771
4779
  }
4772
- }), Mi = /* @__PURE__ */ M({
4780
+ }), Pi = /* @__PURE__ */ M({
4773
4781
  __name: "ReferEditor",
4774
4782
  props: {
4775
4783
  refer: {},
@@ -4791,7 +4799,7 @@ var _i = /* @__PURE__ */ M({
4791
4799
  label: "元数据",
4792
4800
  "label-position": "top"
4793
4801
  }, {
4794
- default: U(() => [j(Ti, {
4802
+ default: U(() => [j(Di, {
4795
4803
  modelValue: V(r),
4796
4804
  "onUpdate:modelValue": n[0] ||= (e) => N(r) ? r.value = e : null,
4797
4805
  disabled: e.domain !== "CharField"
@@ -4819,7 +4827,7 @@ var _i = /* @__PURE__ */ M({
4819
4827
  })]),
4820
4828
  _: 1
4821
4829
  }),
4822
- j(Ai, {
4830
+ j(Mi, {
4823
4831
  refer: V(r),
4824
4832
  "onUpdate:refer": n[2] ||= (e) => N(r) ? r.value = e : null,
4825
4833
  domain: e.domain
@@ -4829,7 +4837,7 @@ var _i = /* @__PURE__ */ M({
4829
4837
  label: "检索条件(包含)",
4830
4838
  "label-position": "top"
4831
4839
  }, {
4832
- default: U(() => [j(Pr, {
4840
+ default: U(() => [j(Ir, {
4833
4841
  modelValue: V(r).includes,
4834
4842
  "onUpdate:modelValue": n[3] ||= (e) => V(r).includes = e,
4835
4843
  disabled: !V(r).entity
@@ -4843,7 +4851,7 @@ var _i = /* @__PURE__ */ M({
4843
4851
  label: "检索条件(排除)",
4844
4852
  "label-position": "top"
4845
4853
  }, {
4846
- default: U(() => [j(Pr, {
4854
+ default: U(() => [j(Ir, {
4847
4855
  modelValue: V(r).excludes,
4848
4856
  "onUpdate:modelValue": n[4] ||= (e) => V(r).excludes = e,
4849
4857
  disabled: !V(r).entity
@@ -4860,7 +4868,7 @@ var _i = /* @__PURE__ */ M({
4860
4868
  label: "跟节点",
4861
4869
  "label-position": "top"
4862
4870
  }, {
4863
- default: U(() => [j(ji, {
4871
+ default: U(() => [j(Ni, {
4864
4872
  modelValue: V(r).root,
4865
4873
  "onUpdate:modelValue": n[5] ||= (e) => V(r).root = e,
4866
4874
  entity: V(r).entity,
@@ -4901,7 +4909,7 @@ var _i = /* @__PURE__ */ M({
4901
4909
  });
4902
4910
  };
4903
4911
  }
4904
- }), Ni = /* @__PURE__ */ M({
4912
+ }), Fi = /* @__PURE__ */ M({
4905
4913
  __name: "ReferDialog",
4906
4914
  props: { save: { type: Function } },
4907
4915
  setup(e, { expose: t }) {
@@ -4923,7 +4931,7 @@ var _i = /* @__PURE__ */ M({
4923
4931
  confirm: a,
4924
4932
  width: "600"
4925
4933
  }, {
4926
- default: U(({ data: e }) => [j(Mi, {
4934
+ default: U(({ data: e }) => [j(Pi, {
4927
4935
  refer: e.refer,
4928
4936
  "onUpdate:refer": (t) => e.refer = t,
4929
4937
  domain: e.domain,
@@ -4937,7 +4945,7 @@ var _i = /* @__PURE__ */ M({
4937
4945
  _: 1
4938
4946
  }, 512));
4939
4947
  }
4940
- }), Pi = /* @__PURE__ */ M({
4948
+ }), Ii = /* @__PURE__ */ M({
4941
4949
  __name: "DateFormats",
4942
4950
  props: {
4943
4951
  modelValue: {},
@@ -4968,7 +4976,7 @@ var _i = /* @__PURE__ */ M({
4968
4976
  ];
4969
4977
  default: return ["date"];
4970
4978
  }
4971
- }), a = T(() => Object.entries(Xn).filter(([e, t]) => i.value.includes(e)).map(([e, t]) => ({
4979
+ }), a = T(() => Object.entries(Zn).filter(([e, t]) => i.value.includes(e)).map(([e, t]) => ({
4972
4980
  label: t.label,
4973
4981
  value: e
4974
4982
  })));
@@ -4992,7 +5000,7 @@ var _i = /* @__PURE__ */ M({
4992
5000
  });
4993
5001
  };
4994
5002
  }
4995
- }), Fi = /* @__PURE__ */ M({
5003
+ }), Li = /* @__PURE__ */ M({
4996
5004
  __name: "FileFormats",
4997
5005
  props: {
4998
5006
  modelValue: {},
@@ -5006,7 +5014,7 @@ var _i = /* @__PURE__ */ M({
5006
5014
  ".gif",
5007
5015
  ".png",
5008
5016
  ".jpeg"
5009
- ] : Yn);
5017
+ ] : Xn);
5010
5018
  return (t, n) => {
5011
5019
  let a = z("el-input-number"), o = z("el-form-item"), s = z("el-col"), c = z("el-checkbox"), l = z("el-option"), u = z("el-select"), d = z("el-row"), f = z("el-form");
5012
5020
  return F(), E(f, { "label-position": "top" }, {
@@ -5117,7 +5125,7 @@ var _i = /* @__PURE__ */ M({
5117
5125
  });
5118
5126
  };
5119
5127
  }
5120
- }), Ii = /* @__PURE__ */ M({
5128
+ }), Ri = /* @__PURE__ */ M({
5121
5129
  __name: "NumberFormats",
5122
5130
  props: {
5123
5131
  modelValue: {},
@@ -5231,7 +5239,7 @@ var _i = /* @__PURE__ */ M({
5231
5239
  });
5232
5240
  };
5233
5241
  }
5234
- }), Li = /* @__PURE__ */ M({
5242
+ }), zi = /* @__PURE__ */ M({
5235
5243
  __name: "MappingEditor",
5236
5244
  props: { modelValue: {} },
5237
5245
  emits: ["update:modelValue"],
@@ -5312,7 +5320,7 @@ var _i = /* @__PURE__ */ M({
5312
5320
  }, 8, ["data"]);
5313
5321
  };
5314
5322
  }
5315
- }), Ri = /* @__PURE__ */ M({
5323
+ }), Bi = /* @__PURE__ */ M({
5316
5324
  __name: "SetFormats",
5317
5325
  props: {
5318
5326
  modelValue: {},
@@ -5322,12 +5330,12 @@ var _i = /* @__PURE__ */ M({
5322
5330
  emits: ["update:modelValue"],
5323
5331
  setup(e, { emit: t }) {
5324
5332
  let n = W(e, "modelValue", t);
5325
- return (e, t) => (F(), E(Li, {
5333
+ return (e, t) => (F(), E(zi, {
5326
5334
  modelValue: V(n).set,
5327
5335
  "onUpdate:modelValue": t[0] ||= (e) => V(n).set = e
5328
5336
  }, null, 8, ["modelValue"]));
5329
5337
  }
5330
- }), zi = /* @__PURE__ */ M({
5338
+ }), Vi = /* @__PURE__ */ M({
5331
5339
  __name: "TextFormats",
5332
5340
  props: {
5333
5341
  modelValue: {},
@@ -5380,7 +5388,7 @@ var _i = /* @__PURE__ */ M({
5380
5388
  });
5381
5389
  };
5382
5390
  }
5383
- }), Bi = /* @__PURE__ */ M({
5391
+ }), Hi = /* @__PURE__ */ M({
5384
5392
  __name: "FormatEditor",
5385
5393
  props: {
5386
5394
  format: {},
@@ -5392,15 +5400,15 @@ var _i = /* @__PURE__ */ M({
5392
5400
  let n = e, r = W(n, "format", t), i = T(() => {
5393
5401
  switch (n.tool) {
5394
5402
  case "text":
5395
- case "textarea": return zi;
5396
- case "set": return Ri;
5397
- case "number": return Ii;
5403
+ case "textarea": return Vi;
5404
+ case "set": return Bi;
5405
+ case "number": return Ri;
5398
5406
  case "date":
5399
5407
  case "daterange":
5400
- case "dates": return Pi;
5408
+ case "dates": return Ii;
5401
5409
  case "rich":
5402
5410
  case "image":
5403
- case "file": return Fi;
5411
+ case "file": return Li;
5404
5412
  }
5405
5413
  });
5406
5414
  return (t, n) => i.value ? (F(), E(Lt(i.value), {
@@ -5416,7 +5424,7 @@ var _i = /* @__PURE__ */ M({
5416
5424
  "modelValue"
5417
5425
  ])) : D("", !0);
5418
5426
  }
5419
- }), Vi = /* @__PURE__ */ M({
5427
+ }), Ui = /* @__PURE__ */ M({
5420
5428
  __name: "FormatDialog",
5421
5429
  props: { save: { type: Function } },
5422
5430
  setup(e, { expose: t }) {
@@ -5437,7 +5445,7 @@ var _i = /* @__PURE__ */ M({
5437
5445
  title: "格式设置",
5438
5446
  confirm: a
5439
5447
  }, {
5440
- default: U(({ data: e }) => [j(Bi, {
5448
+ default: U(({ data: e }) => [j(Hi, {
5441
5449
  format: e.format,
5442
5450
  "onUpdate:format": (t) => e.format = t,
5443
5451
  tool: e.tool,
@@ -5451,7 +5459,7 @@ var _i = /* @__PURE__ */ M({
5451
5459
  _: 1
5452
5460
  }, 512));
5453
5461
  }
5454
- }), Hi = /* @__PURE__ */ M({
5462
+ }), Wi = /* @__PURE__ */ M({
5455
5463
  __name: "FormatPlugin",
5456
5464
  props: {
5457
5465
  data: {},
@@ -5494,35 +5502,35 @@ var _i = /* @__PURE__ */ M({
5494
5502
  "type"
5495
5503
  ]));
5496
5504
  }
5497
- }), Ui = /* @__PURE__ */ M({
5505
+ }), Gi = /* @__PURE__ */ M({
5498
5506
  __name: "MetaFieldList",
5499
5507
  props: {
5500
5508
  entity: {},
5501
5509
  code: {}
5502
5510
  },
5503
5511
  setup(e) {
5504
- let t = e, n = I(), r = I(), i = I(), a = I(), o = I(), s = I(), { manager: c } = Q(t.entity), l = I();
5512
+ let t = e, n = I(), r = I(), i = I(), a = I(), o = I(), s = I(), { manager: c } = Z(t.entity), l = I();
5505
5513
  function u() {
5506
5514
  c.meta(t.code).then((e) => l.value = e);
5507
5515
  }
5508
5516
  P(u);
5509
5517
  let d = T(() => ({ view_id: l.value?.view_id || 0 })), f = [{
5510
5518
  label: "索引设置",
5511
- component: ki,
5519
+ component: ji,
5512
5520
  callback: (e) => {
5513
5521
  s.value?.open(e);
5514
5522
  },
5515
5523
  width: 100
5516
5524
  }, {
5517
5525
  label: "格式设置",
5518
- component: Hi,
5526
+ component: Wi,
5519
5527
  callback: (e) => o.value?.open(e),
5520
5528
  width: 100
5521
5529
  }];
5522
5530
  function p(e) {
5523
5531
  i.value?.manager.save_one(e);
5524
5532
  }
5525
- let { post: m } = X();
5533
+ let { post: m } = Y();
5526
5534
  async function h(e) {
5527
5535
  if (!l.value) return;
5528
5536
  let { values: t } = e, { entity: n, code: r, view_id: a } = l.value, o = await m("/valar/add_fields", {
@@ -5569,7 +5577,7 @@ var _i = /* @__PURE__ */ M({
5569
5577
  return (e, t) => {
5570
5578
  let c = z("el-select");
5571
5579
  return F(), O(w, null, [
5572
- j(da, {
5580
+ j(pa, {
5573
5581
  ref_key: "tableRef",
5574
5582
  ref: i,
5575
5583
  unrestricted: "",
@@ -5630,7 +5638,7 @@ var _i = /* @__PURE__ */ M({
5630
5638
  title: "自定义字段",
5631
5639
  confirm: _
5632
5640
  }, {
5633
- default: U(({ data: { options: e, entity: t, view_id: n } }) => [j(Oi, {
5641
+ default: U(({ data: { options: e, entity: t, view_id: n } }) => [j(Ai, {
5634
5642
  ref_key: "customSelectRef",
5635
5643
  ref: a,
5636
5644
  options: e,
@@ -5643,12 +5651,12 @@ var _i = /* @__PURE__ */ M({
5643
5651
  ])]),
5644
5652
  _: 1
5645
5653
  }, 512),
5646
- j(Ni, {
5654
+ j(Fi, {
5647
5655
  ref_key: "referDialog",
5648
5656
  ref: s,
5649
5657
  save: p
5650
5658
  }, null, 512),
5651
- j(Vi, {
5659
+ j(Ui, {
5652
5660
  ref_key: "formatDialog",
5653
5661
  ref: o,
5654
5662
  save: p
@@ -5656,14 +5664,14 @@ var _i = /* @__PURE__ */ M({
5656
5664
  ], 64);
5657
5665
  };
5658
5666
  }
5659
- }), Wi = /* @__PURE__ */ M({
5667
+ }), Ki = /* @__PURE__ */ M({
5660
5668
  __name: "MetaViewForm",
5661
5669
  props: {
5662
5670
  entity: {},
5663
5671
  code: {}
5664
5672
  },
5665
5673
  setup(e, { expose: t }) {
5666
- let n = e, r = I(), { manager: i, loading: a } = Q("valar.MetaView"), o = I([]), s = I({}), c = I();
5674
+ let n = e, r = I(), { manager: i, loading: a } = Z("valar.MetaView"), o = I([]), s = I({}), c = I();
5667
5675
  P(() => {
5668
5676
  i.meta("edit").then((e) => {
5669
5677
  o.value = e.fields || [];
@@ -5688,7 +5696,7 @@ var _i = /* @__PURE__ */ M({
5688
5696
  }
5689
5697
  return t({ save: l }), (e, t) => {
5690
5698
  let n = It("loading");
5691
- return Ut((F(), E(ii, {
5699
+ return Ut((F(), E(oi, {
5692
5700
  ref_key: "formRef",
5693
5701
  ref: r,
5694
5702
  original: s.value,
@@ -5702,7 +5710,7 @@ var _i = /* @__PURE__ */ M({
5702
5710
  ])), [[n, V(a)]]);
5703
5711
  };
5704
5712
  }
5705
- }), Gi = /*#__PURE__*/ wn(/* @__PURE__ */ M({
5713
+ }), qi = /*#__PURE__*/ wn(/* @__PURE__ */ M({
5706
5714
  __name: "MetaPanel",
5707
5715
  props: {
5708
5716
  entity: {},
@@ -5780,7 +5788,7 @@ var _i = /* @__PURE__ */ M({
5780
5788
  title: "权限管理",
5781
5789
  confirm: p
5782
5790
  }, {
5783
- default: U(({ data: { entity: e, code: t } }) => [j(Wi, {
5791
+ default: U(({ data: { entity: e, code: t } }) => [j(Ki, {
5784
5792
  ref_key: "viewRef",
5785
5793
  ref: s,
5786
5794
  entity: e,
@@ -5794,7 +5802,7 @@ var _i = /* @__PURE__ */ M({
5794
5802
  width: "1050",
5795
5803
  title: "字段管理"
5796
5804
  }, {
5797
- default: U(({ data: { entity: e, code: t } }) => [j(Ui, {
5805
+ default: U(({ data: { entity: e, code: t } }) => [j(Gi, {
5798
5806
  entity: e,
5799
5807
  code: t
5800
5808
  }, null, 8, ["entity", "code"])]),
@@ -5806,7 +5814,7 @@ var _i = /* @__PURE__ */ M({
5806
5814
  width: "1000",
5807
5815
  title: "视图管理"
5808
5816
  }, {
5809
- default: U(() => [j(Di, {
5817
+ default: U(() => [j(ki, {
5810
5818
  entity: V(l),
5811
5819
  code: V(u),
5812
5820
  onForm: d,
@@ -5818,11 +5826,11 @@ var _i = /* @__PURE__ */ M({
5818
5826
  ], 64);
5819
5827
  };
5820
5828
  }
5821
- }), [["__scopeId", "data-v-60f998c8"]]), Ki = { class: "justified" }, qi = /* @__PURE__ */ M({
5829
+ }), [["__scopeId", "data-v-60f998c8"]]), Ji = { class: "justified" }, Yi = /* @__PURE__ */ M({
5822
5830
  __name: "MetaFieldForm",
5823
5831
  props: { field_id: {} },
5824
5832
  setup(e) {
5825
- let t = e, { manager: n } = Q("valar.MetaField"), r = I(), i = I(), a = I(), o = I();
5833
+ let t = e, { manager: n } = Z("valar.MetaField"), r = I(), i = I(), a = I(), o = I();
5826
5834
  function s(e, t) {
5827
5835
  a.value?.open(e);
5828
5836
  }
@@ -5859,7 +5867,7 @@ var _i = /* @__PURE__ */ M({
5859
5867
  let n = z("el-segmented"), p = z("el-col"), h = z("el-row"), g = z("el-card");
5860
5868
  return F(), O(w, null, [
5861
5869
  j(g, { shadow: "never" }, Tt({
5862
- header: U(() => [k("div", Ki, [j(n, {
5870
+ header: U(() => [k("div", Ji, [j(n, {
5863
5871
  disabled: f.value,
5864
5872
  options: l,
5865
5873
  modelValue: u.value,
@@ -5876,7 +5884,7 @@ var _i = /* @__PURE__ */ M({
5876
5884
  default: U(() => [...t[3] ||= [A("保存 ", -1)]]),
5877
5885
  _: 1
5878
5886
  }, 8, ["disabled", "bounce"])])]),
5879
- default: U(() => [j(ii, {
5887
+ default: U(() => [j(oi, {
5880
5888
  original: r.value,
5881
5889
  fields: d.value,
5882
5890
  modelValue: i.value,
@@ -5891,13 +5899,13 @@ var _i = /* @__PURE__ */ M({
5891
5899
  name: "footer",
5892
5900
  fn: U(() => [j(h, { gutter: 20 }, {
5893
5901
  default: U(() => [j(p, { span: 12 }, {
5894
- default: U(() => [j(ki, {
5902
+ default: U(() => [j(ji, {
5895
5903
  data: r.value,
5896
5904
  invoke: c
5897
5905
  }, null, 8, ["data"])]),
5898
5906
  _: 1
5899
5907
  }), j(p, { span: 12 }, {
5900
- default: U(() => [j(Hi, {
5908
+ default: U(() => [j(Wi, {
5901
5909
  data: r.value,
5902
5910
  invoke: s
5903
5911
  }, null, 8, ["data"])]),
@@ -5907,12 +5915,12 @@ var _i = /* @__PURE__ */ M({
5907
5915
  })]),
5908
5916
  key: "0"
5909
5917
  } : void 0]), 1024),
5910
- j(Vi, {
5918
+ j(Ui, {
5911
5919
  ref_key: "formatDialog",
5912
5920
  ref: a,
5913
5921
  save: m
5914
5922
  }, null, 512),
5915
- j(Ni, {
5923
+ j(Fi, {
5916
5924
  ref_key: "referDialog",
5917
5925
  ref: o,
5918
5926
  save: m
@@ -5923,7 +5931,7 @@ var _i = /* @__PURE__ */ M({
5923
5931
  });
5924
5932
  //#endregion
5925
5933
  //#region morghulis/library/use-paster/index.ts
5926
- function Ji() {
5934
+ function Xi() {
5927
5935
  let e = I(!1);
5928
5936
  function t() {
5929
5937
  return e.value = !0, new Promise((t) => {
@@ -5950,7 +5958,7 @@ function Ji() {
5950
5958
  }
5951
5959
  //#endregion
5952
5960
  //#region morghulis/components/uploader/tools/ClipUploader.vue
5953
- var Yi = /* @__PURE__ */ M({
5961
+ var Zi = /* @__PURE__ */ M({
5954
5962
  __name: "ClipUploader",
5955
5963
  props: {
5956
5964
  fields: {},
@@ -5958,7 +5966,7 @@ var Yi = /* @__PURE__ */ M({
5958
5966
  },
5959
5967
  emits: ["success"],
5960
5968
  setup(e, { emit: t }) {
5961
- let n = e, { inactive: r, pending: i, getClipboardData: a, openPaster: o } = Ji(), s = t, { $message: c } = J();
5969
+ let n = e, { inactive: r, pending: i, getClipboardData: a, openPaster: o } = Xi(), s = t, { $message: c } = J();
5962
5970
  function l() {
5963
5971
  c.info("剪切板已打开"), o().then(p);
5964
5972
  }
@@ -5971,7 +5979,7 @@ var Yi = /* @__PURE__ */ M({
5971
5979
  console.error("读取剪贴板失败", e), c.error("读取剪贴板失败,请检查浏览器权限");
5972
5980
  }
5973
5981
  }
5974
- let { textToJson: d } = Wa();
5982
+ let { textToJson: d } = Ga();
5975
5983
  function f(e) {
5976
5984
  return n.fields.length > 0 && n.fields.every((t) => e[t.prop] === t.label);
5977
5985
  }
@@ -6075,7 +6083,7 @@ var Yi = /* @__PURE__ */ M({
6075
6083
  }));
6076
6084
  };
6077
6085
  }
6078
- }), Xi = /* @__PURE__ */ M({
6086
+ }), Qi = /* @__PURE__ */ M({
6079
6087
  __name: "FileUploader",
6080
6088
  props: {
6081
6089
  fields: {},
@@ -6084,7 +6092,7 @@ var Yi = /* @__PURE__ */ M({
6084
6092
  },
6085
6093
  emits: ["success"],
6086
6094
  setup(e, { emit: t }) {
6087
- let n = e, r = t, i = I(), { readBookFromFile: a, zip: o } = Ga(), { $message: s } = J();
6095
+ let n = e, r = t, i = I(), { readBookFromFile: a, zip: o } = Ka(), { $message: s } = J();
6088
6096
  async function c(e) {
6089
6097
  i.value?.clearFiles();
6090
6098
  let t = e?.raw;
@@ -6146,10 +6154,10 @@ var Yi = /* @__PURE__ */ M({
6146
6154
  }, 512);
6147
6155
  };
6148
6156
  }
6149
- }), Zi = {
6157
+ }), $i = {
6150
6158
  class: "justified",
6151
6159
  style: { "margin-bottom": "10px" }
6152
- }, Qi = /* @__PURE__ */ M({
6160
+ }, ea = /* @__PURE__ */ M({
6153
6161
  __name: "UploadControl",
6154
6162
  props: {
6155
6163
  raw: {},
@@ -6168,13 +6176,13 @@ var Yi = /* @__PURE__ */ M({
6168
6176
  setup(e, { emit: t }) {
6169
6177
  let n = e, r = t, i = I(), a = W(n, "raw", r), o = W(n, "valid", r), s = W(n, "referred", r);
6170
6178
  H(a, () => o.value = null);
6171
- let c = T(() => !!n.fields.filter((e) => Zn.referred.includes(e.domain)).length), { $confirm: l, $message: u } = J();
6179
+ let c = T(() => !!n.fields.filter((e) => Qn.referred.includes(e.domain)).length), { $confirm: l, $message: u } = J();
6172
6180
  function d() {
6173
6181
  l.info("是否清空已上传的数据?").then(() => {
6174
6182
  a.value = [];
6175
6183
  });
6176
6184
  }
6177
- let { copy: f } = qt(), { writeSheets: p } = Ga();
6185
+ let { copy: f } = qt(), { writeSheets: p } = Ka();
6178
6186
  function m(e) {
6179
6187
  let t = n.fields.filter((e) => e).map((e) => e.label);
6180
6188
  if (e === "clip") f(t.join(" ")).then(() => u.success("表头已复制到剪切板,请粘贴到Excel文件"));
@@ -6192,7 +6200,7 @@ var Yi = /* @__PURE__ */ M({
6192
6200
  }
6193
6201
  return (t, n) => {
6194
6202
  let r = z("el-space"), l = z("el-popover"), u = z("el-checkbox"), f = z("el-select");
6195
- return F(), O(w, null, [k("div", Zi, [j(r, {
6203
+ return F(), O(w, null, [k("div", $i, [j(r, {
6196
6204
  spacer: "|",
6197
6205
  size: 3
6198
6206
  }, {
@@ -6303,7 +6311,7 @@ var Yi = /* @__PURE__ */ M({
6303
6311
  title: "数据上传",
6304
6312
  width: "350"
6305
6313
  }, {
6306
- default: U(({ data: t }) => [t === "file" ? (F(), E(Xi, {
6314
+ default: U(({ data: t }) => [t === "file" ? (F(), E(Qi, {
6307
6315
  key: 0,
6308
6316
  fields: e.fields,
6309
6317
  sheet_name: e.sheet_name,
@@ -6313,7 +6321,7 @@ var Yi = /* @__PURE__ */ M({
6313
6321
  "fields",
6314
6322
  "sheet_name",
6315
6323
  "referred"
6316
- ])) : D("", !0), t === "clip" ? (F(), E(Yi, {
6324
+ ])) : D("", !0), t === "clip" ? (F(), E(Zi, {
6317
6325
  key: 1,
6318
6326
  fields: e.fields,
6319
6327
  referred: V(s),
@@ -6323,11 +6331,11 @@ var Yi = /* @__PURE__ */ M({
6323
6331
  }, 512)], 64);
6324
6332
  };
6325
6333
  }
6326
- }), $i = /* @__PURE__ */ M({
6334
+ }), ta = /* @__PURE__ */ M({
6327
6335
  __name: "UploadDictionary",
6328
6336
  props: { field: {} },
6329
6337
  setup(e) {
6330
- let t = e, { results: n, total: r, pager: i } = oi(T(() => t.field.values));
6338
+ let t = e, { results: n, total: r, pager: i } = ci(T(() => t.field.values));
6331
6339
  return (e, t) => {
6332
6340
  let a = z("el-table-column"), o = z("el-pagination"), s = z("el-table");
6333
6341
  return F(), E(s, {
@@ -6385,7 +6393,7 @@ var Yi = /* @__PURE__ */ M({
6385
6393
  }, 8, ["data"]);
6386
6394
  };
6387
6395
  }
6388
- }), ea = /* @__PURE__ */ M({
6396
+ }), na = /* @__PURE__ */ M({
6389
6397
  __name: "DictDialog",
6390
6398
  setup(e, { expose: t }) {
6391
6399
  let { copy: n } = qt(), { $message: r } = J(), i = I();
@@ -6438,7 +6446,7 @@ var Yi = /* @__PURE__ */ M({
6438
6446
  ]),
6439
6447
  _: 2
6440
6448
  }, 1024)]),
6441
- default: U(({ data: e }) => [j($i, { field: e }, null, 8, ["field"])]),
6449
+ default: U(({ data: e }) => [j(ta, { field: e }, null, 8, ["field"])]),
6442
6450
  _: 1
6443
6451
  }, 512);
6444
6452
  };
@@ -6446,21 +6454,21 @@ var Yi = /* @__PURE__ */ M({
6446
6454
  });
6447
6455
  //#endregion
6448
6456
  //#region morghulis/library/use-data/methods.ts
6449
- function ta(e) {
6457
+ function ra(e) {
6450
6458
  if (!/^\d{4}-\d{2}-\d{2}$/.test(e)) return !1;
6451
6459
  let t = /* @__PURE__ */ new Date(e + "T00:00:00.000Z");
6452
6460
  return Number.isFinite(t.getTime()) && t.toISOString().slice(0, 10) === e;
6453
6461
  }
6454
- function na(e) {
6462
+ function ia(e) {
6455
6463
  return /^(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d$/.test(e);
6456
6464
  }
6457
- function ra(e) {
6465
+ function aa(e) {
6458
6466
  let [t, n, ...r] = e.split(" ");
6459
- return !!t && !!n && !r.length && ta(t) && na(n);
6467
+ return !!t && !!n && !r.length && ra(t) && ia(n);
6460
6468
  }
6461
6469
  //#endregion
6462
6470
  //#region morghulis/components/uploader/hooks.ts
6463
- function ia(e, t) {
6471
+ function oa(e, t) {
6464
6472
  let n = T(() => {
6465
6473
  let n = e.value.map((e) => {
6466
6474
  let n = e.values, r = n.length ? Object.fromEntries(n.map((e) => t.value ? [String(e.value), String(e.label)] : [String(e.label), String(e.value)]).reverse()) : {};
@@ -6480,8 +6488,8 @@ function ia(e, t) {
6480
6488
  value: null,
6481
6489
  label: ""
6482
6490
  };
6483
- if (Zn.referred.includes(a)) {
6484
- let e = Zn.multiple.includes(a), { mapping: n } = i;
6491
+ if (Qn.referred.includes(a)) {
6492
+ let e = Qn.multiple.includes(a), { mapping: n } = i;
6485
6493
  if (e) {
6486
6494
  if (t.value) {
6487
6495
  let e = r.split(";"), t = e.filter((e) => !n[e]), i = t.length ? `索引 ${t} 不在字典中` : void 0, a = e.filter((e) => !t.includes(e));
@@ -6584,11 +6592,11 @@ function ia(e, t) {
6584
6592
  "DateTimeField"
6585
6593
  ].includes(a)) {
6586
6594
  let e = r.trim();
6587
- if (ra(e)) {
6595
+ if (aa(e)) {
6588
6596
  let [t = "", n = ""] = e.split(" ");
6589
6597
  a === "DateField" && (e = t), a === "TimeField" && (e = n);
6590
6598
  }
6591
- return (a === "DateField" ? ta(e) : a === "TimeField" ? na(e) : ra(e)) ? {
6599
+ return (a === "DateField" ? ra(e) : a === "TimeField" ? ia(e) : aa(e)) ? {
6592
6600
  value: e,
6593
6601
  label: e
6594
6602
  } : {
@@ -6606,10 +6614,10 @@ function ia(e, t) {
6606
6614
  }
6607
6615
  //#endregion
6608
6616
  //#region morghulis/components/uploader/UploadTable.vue?vue&type=script&setup=true&lang.ts
6609
- var aa = {
6617
+ var sa = {
6610
6618
  style: { height: "200px" },
6611
6619
  class: "h-center center"
6612
- }, oa = { key: 0 }, sa = { key: 1 }, ca = /* @__PURE__ */ M({
6620
+ }, ca = { key: 0 }, la = { key: 1 }, ua = /* @__PURE__ */ M({
6613
6621
  __name: "UploadTable",
6614
6622
  props: {
6615
6623
  dict: {},
@@ -6650,10 +6658,10 @@ var aa = {
6650
6658
  type: "danger",
6651
6659
  icon: "remove"
6652
6660
  }];
6653
- }), { results: f, pager: p, total: m } = oi(T(() => a.value == null ? u.value : u.value.filter((e) => a.value === (e.$valid == null)))), h = T(() => {
6661
+ }), { results: f, pager: p, total: m } = ci(T(() => a.value == null ? u.value : u.value.filter((e) => a.value === (e.$valid == null)))), h = T(() => {
6654
6662
  let e = n.dict.fields.filter((e) => n.keys.includes(e.prop)), { id: t, sort: r } = n;
6655
6663
  return t && e.unshift(_), r && e.unshift(v), e;
6656
- }), { parser: g } = ia(h, o), _ = {
6664
+ }), { parser: g } = oa(h, o), _ = {
6657
6665
  label: "ID",
6658
6666
  prop: "id",
6659
6667
  domain: "BigAutoField",
@@ -6683,7 +6691,7 @@ var aa = {
6683
6691
  return t({ getData: x }), (t, n) => {
6684
6692
  let u = z("el-table-column"), g = z("el-tooltip"), _ = z("el-text"), v = z("el-pagination"), y = z("el-table"), b = z("el-result");
6685
6693
  return F(), O(w, null, [
6686
- j(Qi, {
6694
+ j(ea, {
6687
6695
  fields: h.value,
6688
6696
  file_name: e.dict.meta_name,
6689
6697
  sheet_name: e.dict.view_name,
@@ -6711,7 +6719,7 @@ var aa = {
6711
6719
  "cell-class-name": c,
6712
6720
  onCellClick: l
6713
6721
  }, {
6714
- empty: U(() => [k("div", aa, [j(G, {
6722
+ empty: U(() => [k("div", sa, [j(G, {
6715
6723
  icon: "info-circle",
6716
6724
  size: "large",
6717
6725
  "icon-size": "lg"
@@ -6754,7 +6762,7 @@ var aa = {
6754
6762
  key: 0,
6755
6763
  disabled: !e.hasEmpty && !e.isDuplicate
6756
6764
  }, {
6757
- content: U(() => [e.hasEmpty ? (F(), O("div", oa, "索引存在空值")) : D("", !0), e.isDuplicate ? D("", !0) : (F(), O("div", sa, "索引存在重复值"))]),
6765
+ content: U(() => [e.hasEmpty ? (F(), O("div", ca, "索引存在空值")) : D("", !0), e.isDuplicate ? D("", !0) : (F(), O("div", la, "索引存在重复值"))]),
6758
6766
  default: U(() => [j(K, {
6759
6767
  icon: "book",
6760
6768
  type: o.value ? "warning" : "info",
@@ -6780,11 +6788,11 @@ var aa = {
6780
6788
  title: "请至少选择一个字段",
6781
6789
  icon: "warning"
6782
6790
  })),
6783
- j(ea, {
6791
+ j(na, {
6784
6792
  ref_key: "dictRef",
6785
6793
  ref: r
6786
6794
  }, null, 512),
6787
- j(rr, {
6795
+ j(ir, {
6788
6796
  ref_key: "invalidRef",
6789
6797
  ref: i,
6790
6798
  width: "80",
@@ -6799,7 +6807,7 @@ var aa = {
6799
6807
  ], 64);
6800
6808
  };
6801
6809
  }
6802
- }), la = /* @__PURE__ */ M({
6810
+ }), da = /* @__PURE__ */ M({
6803
6811
  __name: "UploadSwitcher",
6804
6812
  props: {
6805
6813
  id: { type: Boolean },
@@ -6855,11 +6863,11 @@ var aa = {
6855
6863
  });
6856
6864
  };
6857
6865
  }
6858
- }), ua = /* @__PURE__ */ M({
6866
+ }), fa = /* @__PURE__ */ M({
6859
6867
  __name: "MUploader",
6860
6868
  emits: ["confirm"],
6861
6869
  setup(e, { expose: t, emit: n }) {
6862
- let r = I(), i = I(), a = n, { post: o } = X();
6870
+ let r = I(), i = I(), a = n, { post: o } = Y();
6863
6871
  function s(e) {
6864
6872
  let t = i.value?.getData();
6865
6873
  return t && a("confirm", t), t;
@@ -6911,7 +6919,7 @@ var aa = {
6911
6919
  default: U(() => [j(kn, { items: e.options }, null, 8, ["items"])]),
6912
6920
  _: 2
6913
6921
  }, 1032, ["modelValue", "onUpdate:modelValue"])]),
6914
- tool: U(({ data: e }) => [j(la, {
6922
+ tool: U(({ data: e }) => [j(da, {
6915
6923
  id: e.id,
6916
6924
  "onUpdate:id": (t) => e.id = t,
6917
6925
  sort: e.sort,
@@ -6926,7 +6934,7 @@ var aa = {
6926
6934
  "is_update",
6927
6935
  "onUpdate:is_update"
6928
6936
  ])]),
6929
- default: U(({ data: e }) => [j(ca, {
6937
+ default: U(({ data: e }) => [j(ua, {
6930
6938
  ref_key: "tableRef",
6931
6939
  ref: i,
6932
6940
  dict: e.dict,
@@ -6945,7 +6953,7 @@ var aa = {
6945
6953
  }, 512);
6946
6954
  };
6947
6955
  }
6948
- }), da = /* @__PURE__ */ M({
6956
+ }), pa = /* @__PURE__ */ M({
6949
6957
  __name: "DataTable",
6950
6958
  props: {
6951
6959
  disable_tree: { type: Boolean },
@@ -6996,11 +7004,11 @@ var aa = {
6996
7004
  ...n,
6997
7005
  code: r.value,
6998
7006
  entity: i.value
6999
- })), u = I(), d = I(), f = I(), p = I(), m = I(), h = I(), g = I(), _ = I(), v = I(), { account: y } = Y(), { meta: b, response: x, orders: ee, conditions: te, manager: S, api: ne, ticking: re, loading: ie, error: ae, finder: oe, collector: C } = er(l, c), se = I(0);
7007
+ })), u = I(), d = I(), f = I(), p = I(), m = I(), h = I(), g = I(), _ = I(), v = I(), { account: y } = Fn(), { meta: b, response: x, orders: ee, conditions: te, manager: S, api: ne, ticking: re, loading: ie, error: ae, finder: oe, collector: C } = tr(l, c), se = I(0);
7000
7008
  function ce(e) {
7001
7009
  se.value = e;
7002
7010
  }
7003
- let { columns: le } = Ja(T(() => n.columns || []), r), ue = T(() => y.value?.is_admin || n.unrestricted);
7011
+ let { columns: le } = Ya(T(() => n.columns || []), r), ue = T(() => y.value?.is_admin || n.unrestricted);
7004
7012
  async function de(e = !1) {
7005
7013
  try {
7006
7014
  if (e) {
@@ -7029,7 +7037,7 @@ var aa = {
7029
7037
  async function pe(e) {
7030
7038
  return m.value?.saveData();
7031
7039
  }
7032
- let { writeSheets: me } = Ga(), { copy: he } = qt(), { $message: ge } = J();
7040
+ let { writeSheets: me } = Ka(), { copy: he } = qt(), { $message: ge } = J();
7033
7041
  function _e(e) {
7034
7042
  S.find().then((t) => {
7035
7043
  let n = Object.fromEntries(b.value.fields.filter((e) => e.allow_download).map((e) => [e.prop, e.label])), r = Object.keys(n), i = Object.values(n), a = t.map((e) => r.map((t) => e[t])), o = {
@@ -7114,7 +7122,7 @@ var aa = {
7114
7122
  let o = e.id;
7115
7123
  n.single ? (C.value.clear(), C.value.add(o)) : C.value.has(o) ? C.value.delete(o) : C.value.add(o);
7116
7124
  }
7117
- let { createSortable: Ne } = Gr(u, S.sorting);
7125
+ let { createSortable: Ne } = qr(u, S.sorting);
7118
7126
  return H(() => x.value.results, (e, t) => {
7119
7127
  let n = !!b.value.control.allow_edit_on_sort && un(ee.value, { sort: -1 });
7120
7128
  Ne(x.value.results, n);
@@ -7127,13 +7135,13 @@ var aa = {
7127
7135
  }), (t, n) => {
7128
7136
  let l = z("el-space"), y = z("el-table-column"), te = z("el-text"), ne = z("el-table");
7129
7137
  return F(), O(w, null, [
7130
- j(Vr, {
7138
+ j(Ur, {
7131
7139
  ref: "wrapperRef",
7132
7140
  loading: V(ie),
7133
7141
  ticking: V(re)
7134
7142
  }, {
7135
7143
  header: U(() => [j(l, null, {
7136
- default: U(() => [e.codes ? (F(), E(xi, {
7144
+ default: U(() => [e.codes ? (F(), E(Ci, {
7137
7145
  key: 0,
7138
7146
  entity: e.entity,
7139
7147
  code: r.value,
@@ -7159,7 +7167,7 @@ var aa = {
7159
7167
  default: U(() => [R(t.$slots, "tool", {
7160
7168
  entity: i.value,
7161
7169
  code: r.value
7162
- }), j(Kr, {
7170
+ }), j(Jr, {
7163
7171
  disable_tree: e.disable_tree,
7164
7172
  unrestricted: ue.value,
7165
7173
  collector: V(C),
@@ -7179,7 +7187,7 @@ var aa = {
7179
7187
  ])]),
7180
7188
  _: 3
7181
7189
  })]),
7182
- footer: U(({ width: e }) => [j(Qr, {
7190
+ footer: U(({ width: e }) => [j(ei, {
7183
7191
  size: c.value.size,
7184
7192
  "onUpdate:size": n[1] ||= (e) => c.value.size = e,
7185
7193
  page: c.value.page,
@@ -7205,7 +7213,7 @@ var aa = {
7205
7213
  height: e.table_height || "auto",
7206
7214
  size: e.table_size || "small",
7207
7215
  data: V(x).results,
7208
- "tooltip-options": V(qr),
7216
+ "tooltip-options": V(Yr),
7209
7217
  onCellClick: Me,
7210
7218
  onCellDblclick: Ae,
7211
7219
  onCellContextmenu: ke,
@@ -7224,7 +7232,7 @@ var aa = {
7224
7232
  _: 1
7225
7233
  })]),
7226
7234
  default: U(() => [
7227
- j(Jr, {
7235
+ j(Xr, {
7228
7236
  unrestricted: ue.value,
7229
7237
  collector: V(C),
7230
7238
  size: V(x).results.length,
@@ -7245,7 +7253,7 @@ var aa = {
7245
7253
  "header-align": "left",
7246
7254
  "min-width": 120
7247
7255
  }, {
7248
- header: U(() => [j(Xr, {
7256
+ header: U(() => [j(Qr, {
7249
7257
  field: t,
7250
7258
  finder: V(oe),
7251
7259
  orders: V(ee),
@@ -7261,7 +7269,7 @@ var aa = {
7261
7269
  "unrestricted",
7262
7270
  "includes"
7263
7271
  ])]),
7264
- default: U(({ row: e }) => [j(Ci, {
7272
+ default: U(({ row: e }) => [j(Ti, {
7265
7273
  row: e,
7266
7274
  field: t,
7267
7275
  meta: V(b),
@@ -7287,7 +7295,7 @@ var aa = {
7287
7295
  fixed: e.fixed || "right",
7288
7296
  width: e.width || "auto"
7289
7297
  }, {
7290
- default: U(({ row: t }) => [j(Ur, {
7298
+ default: U(({ row: t }) => [j(Gr, {
7291
7299
  data: t,
7292
7300
  column: e,
7293
7301
  collector: V(C)
@@ -7311,7 +7319,7 @@ var aa = {
7311
7319
  "show-overflow-tooltip": !1
7312
7320
  }, {
7313
7321
  header: U(() => [j(G, { icon: "screwdriver-wrench" })]),
7314
- default: U(({ row: t }) => [j(Wr, {
7322
+ default: U(({ row: t }) => [j(Kr, {
7315
7323
  buttons: e.buttons,
7316
7324
  data: t,
7317
7325
  collector: V(C),
@@ -7342,15 +7350,15 @@ var aa = {
7342
7350
  width: "500",
7343
7351
  onClosed: n[3] ||= (e) => V(S).init()
7344
7352
  }, {
7345
- default: U(({ data: e }) => [j(qi, { field_id: e.id }, null, 8, ["field_id"])]),
7353
+ default: U(({ data: e }) => [j(Yi, { field_id: e.id }, null, 8, ["field_id"])]),
7346
7354
  _: 1
7347
7355
  }, 512),
7348
- j(rr, {
7356
+ j(ir, {
7349
7357
  ref_key: "metaRef",
7350
7358
  ref: h,
7351
7359
  onHide: V(S).init
7352
7360
  }, {
7353
- default: U(() => [j(Gi, {
7361
+ default: U(() => [j(qi, {
7354
7362
  entity: i.value,
7355
7363
  "onUpdate:entity": n[4] ||= (e) => i.value = e,
7356
7364
  code: r.value,
@@ -7358,17 +7366,17 @@ var aa = {
7358
7366
  }, null, 8, ["entity", "code"])]),
7359
7367
  _: 1
7360
7368
  }, 8, ["onHide"]),
7361
- j(ua, {
7369
+ j(fa, {
7362
7370
  ref_key: "uploadRef",
7363
7371
  ref: f,
7364
7372
  onConfirm: o
7365
7373
  }, null, 512),
7366
- j(rr, {
7374
+ j(ir, {
7367
7375
  ref_key: "searchRef",
7368
7376
  ref: g,
7369
7377
  width: "250px"
7370
7378
  }, {
7371
- default: U(({ data: t }) => [j(ni, {
7379
+ default: U(({ data: t }) => [j(ii, {
7372
7380
  field: t,
7373
7381
  finder: V(oe),
7374
7382
  includes: e.includes,
@@ -7388,8 +7396,8 @@ var aa = {
7388
7396
  cancel: fe,
7389
7397
  width: "550"
7390
7398
  }, {
7391
- header: U(({ data: e }) => [j(ri, { data: e }, null, 8, ["data"])]),
7392
- default: U(({ data: { items: e, is_insert: t, count: n } }) => [j(ai, {
7399
+ header: U(({ data: e }) => [j(ai, { data: e }, null, 8, ["data"])]),
7400
+ default: U(({ data: { items: e, is_insert: t, count: n } }) => [j(si, {
7393
7401
  ref_key: "saveFormRef",
7394
7402
  ref: m,
7395
7403
  items: e,
@@ -7406,7 +7414,7 @@ var aa = {
7406
7414
  ])]),
7407
7415
  _: 1
7408
7416
  }, 512),
7409
- j(bi, {
7417
+ j(Si, {
7410
7418
  ref_key: "cellRef",
7411
7419
  ref: _,
7412
7420
  manager: V(S)
@@ -7416,7 +7424,7 @@ var aa = {
7416
7424
  ref_key: "treeDialogRef",
7417
7425
  ref: v
7418
7426
  }, {
7419
- default: U(({ data: e }) => [j(ga, {
7427
+ default: U(({ data: e }) => [j(va, {
7420
7428
  entity: i.value,
7421
7429
  code: r.value,
7422
7430
  disable_table: "",
@@ -7427,7 +7435,7 @@ var aa = {
7427
7435
  ], 64);
7428
7436
  };
7429
7437
  }
7430
- }), fa = /* @__PURE__ */ M({
7438
+ }), ma = /* @__PURE__ */ M({
7431
7439
  __name: "DTreeTablePlugin",
7432
7440
  props: {
7433
7441
  data: {},
@@ -7447,7 +7455,7 @@ var aa = {
7447
7455
  onClick: n[0] ||= (t) => e.invoke(e.data, t)
7448
7456
  }));
7449
7457
  }
7450
- }), pa = /* @__PURE__ */ M({
7458
+ }), ha = /* @__PURE__ */ M({
7451
7459
  __name: "DTreeTable",
7452
7460
  props: {
7453
7461
  entity: {},
@@ -7464,14 +7472,14 @@ var aa = {
7464
7472
  label: "节点",
7465
7473
  fixed: "left",
7466
7474
  width: 50,
7467
- component: fa,
7475
+ component: ma,
7468
7476
  callback(e) {
7469
7477
  n.value = e.id || 0;
7470
7478
  }
7471
7479
  }];
7472
7480
  return (t, a) => {
7473
7481
  let o = z("el-text"), s = z("el-space");
7474
- return F(), E(da, {
7482
+ return F(), E(pa, {
7475
7483
  ref: "tableRef",
7476
7484
  entity: e.entity,
7477
7485
  code: e.code,
@@ -7508,10 +7516,10 @@ var aa = {
7508
7516
  ]);
7509
7517
  };
7510
7518
  }
7511
- }), ma = { style: { padding: "10px" } }, ha = {
7519
+ }), ga = { style: { padding: "10px" } }, _a = {
7512
7520
  class: "justified full",
7513
7521
  style: { "padding-right": "10px" }
7514
- }, ga = /* @__PURE__ */ M({
7522
+ }, va = /* @__PURE__ */ M({
7515
7523
  __name: "DataTree",
7516
7524
  props: {
7517
7525
  disable_table: { type: Boolean },
@@ -7543,11 +7551,11 @@ var aa = {
7543
7551
  let r = e, i = n, a = I(r.code || "default"), o = I(r.entity), s = I({
7544
7552
  type: "tree",
7545
7553
  root: r.root
7546
- }), { meta: c, response: l, manager: u, api: d, loading: f, ticking: p, error: m, finder: h, collector: g, model: _ } = er(T(() => ({
7554
+ }), { meta: c, response: l, manager: u, api: d, loading: f, ticking: p, error: m, finder: h, collector: g, model: _ } = tr(T(() => ({
7547
7555
  ...r,
7548
7556
  code: a.value,
7549
7557
  entity: o.value
7550
- })), s), { columns: v } = Ja(T(() => r.columns || []), a), y = I(), b = I(), x = I(), ee = I(), te = T(() => c.value.fields.find((e) => e.prop === r.label)), { $confirm: S } = J(), ne = I(""), re = T(() => ie.value.length ? "square-caret-down" : "square-caret-right"), ie = T(() => {
7558
+ })), s), { columns: v } = Ya(T(() => r.columns || []), a), y = I(), b = I(), x = I(), ee = I(), te = T(() => c.value.fields.find((e) => e.prop === r.label)), { $confirm: S } = J(), ne = I(""), re = T(() => ie.value.length ? "square-caret-down" : "square-caret-right"), ie = T(() => {
7551
7559
  let e = [];
7552
7560
  return Object.values(_.value.mapping).forEach((t) => {
7553
7561
  let { id: n, children: r } = t;
@@ -7689,13 +7697,13 @@ var aa = {
7689
7697
  }), (t, n) => {
7690
7698
  let r = z("el-divider"), i = z("el-space"), s = z("el-input"), l = z("el-tree"), d = z("el-text"), m = z("el-input-tag");
7691
7699
  return F(), O(w, null, [
7692
- j(rr, {
7700
+ j(ir, {
7693
7701
  ref_key: "nodePopoverRef",
7694
7702
  ref: b,
7695
7703
  placement: "right",
7696
7704
  width: "250px"
7697
7705
  }, {
7698
- default: U(({ data: t }) => [j(Br, {
7706
+ default: U(({ data: t }) => [j(Hr, {
7699
7707
  control: V(c).control,
7700
7708
  data: t,
7701
7709
  field: te.value,
@@ -7717,7 +7725,7 @@ var aa = {
7717
7725
  ])]),
7718
7726
  _: 1
7719
7727
  }, 512),
7720
- j(Vr, {
7728
+ j(Ur, {
7721
7729
  ref: "wrapperRef",
7722
7730
  loading: V(f),
7723
7731
  ticking: V(p)
@@ -7739,7 +7747,7 @@ var aa = {
7739
7747
  })])
7740
7748
  ]),
7741
7749
  _: 3
7742
- }), j(Hr, {
7750
+ }), j(Wr, {
7743
7751
  unrestricted: e.unrestricted,
7744
7752
  collector: V(g),
7745
7753
  control: V(c).control,
@@ -7756,7 +7764,7 @@ var aa = {
7756
7764
  "mapping",
7757
7765
  "disable_table"
7758
7766
  ])]),
7759
- default: U(() => [k("div", ma, [j(s, {
7767
+ default: U(() => [k("div", ga, [j(s, {
7760
7768
  modelValue: ne.value,
7761
7769
  "onUpdate:modelValue": n[1] ||= (e) => ne.value = e,
7762
7770
  placeholder: "搜索...",
@@ -7788,8 +7796,8 @@ var aa = {
7788
7796
  onNodeDrop: be,
7789
7797
  "filter-node-method": se
7790
7798
  }, {
7791
- default: U(({ data: n, node: r }) => [k("div", ha, [j(i, null, {
7792
- default: U(() => [j(nr, {
7799
+ default: U(({ data: n, node: r }) => [k("div", _a, [j(i, null, {
7800
+ default: U(() => [j(rr, {
7793
7801
  collector: V(g),
7794
7802
  data: n,
7795
7803
  node: r,
@@ -7826,7 +7834,7 @@ var aa = {
7826
7834
  node: r,
7827
7835
  data: n
7828
7836
  }, void 0, void 0, 1)]),
7829
- (F(!0), O(w, null, L(V(v), (e) => (F(), E(Ur, {
7837
+ (F(!0), O(w, null, L(V(v), (e) => (F(), E(Gr, {
7830
7838
  data: n,
7831
7839
  column: e,
7832
7840
  collector: V(g)
@@ -7835,7 +7843,7 @@ var aa = {
7835
7843
  "column",
7836
7844
  "collector"
7837
7845
  ]))), 256)),
7838
- j(Wr, {
7846
+ j(Kr, {
7839
7847
  buttons: e.buttons,
7840
7848
  data: n,
7841
7849
  collector: V(g),
@@ -7879,7 +7887,7 @@ var aa = {
7879
7887
  ref: ee,
7880
7888
  width: "1000"
7881
7889
  }, {
7882
- default: U(({ data: e }) => [j(pa, {
7890
+ default: U(({ data: e }) => [j(ha, {
7883
7891
  mapping: V(_).mapping,
7884
7892
  entity: o.value,
7885
7893
  code: a.value,
@@ -7895,10 +7903,10 @@ var aa = {
7895
7903
  ], 64);
7896
7904
  };
7897
7905
  }
7898
- }), _a = { class: "justified full" }, va = {
7906
+ }), ya = { class: "justified full" }, ba = {
7899
7907
  key: 0,
7900
7908
  style: { "padding-right": "5px" }
7901
- }, ya = /* @__PURE__ */ M({
7909
+ }, xa = /* @__PURE__ */ M({
7902
7910
  __name: "MenuTreeNode",
7903
7911
  props: {
7904
7912
  item: {},
@@ -7910,7 +7918,7 @@ var aa = {
7910
7918
  let { is_admin: e, roles: n, is_free: r } = t.item;
7911
7919
  return e ? "lock" : r ? "unlock" : n?.length ? "user-lock" : "user";
7912
7920
  }), a = T(() => t.item.isLeaf && n.value ? "#000000" : "#c5c8d5");
7913
- return (t, o) => (F(), O("div", _a, [k("div", null, [j(V(G), {
7921
+ return (t, o) => (F(), O("div", ya, [k("div", null, [j(V(G), {
7914
7922
  style: jt({
7915
7923
  color: a.value,
7916
7924
  marginRight: "7px"
@@ -7929,13 +7937,13 @@ var aa = {
7929
7937
  }, {
7930
7938
  default: U(() => [A(B(e.item.name), 1)]),
7931
7939
  _: 1
7932
- }, 8, ["size", "tag"])]), e.item.isLeaf ? (F(), O("div", va, [j(V(G), {
7940
+ }, 8, ["size", "tag"])]), e.item.isLeaf ? (F(), O("div", ba, [j(V(G), {
7933
7941
  icon: i.value,
7934
7942
  "icon-size": "xs",
7935
7943
  type: "info"
7936
7944
  }, null, 8, ["icon"])])) : D("", !0)]));
7937
7945
  }
7938
- }), ba = /* @__PURE__ */ M({
7946
+ }), Sa = /* @__PURE__ */ M({
7939
7947
  __name: "MMenu",
7940
7948
  props: {
7941
7949
  current: {},
@@ -7970,7 +7978,7 @@ var aa = {
7970
7978
  default: U(() => [...n[0] ||= [A("无菜单", -1)]]),
7971
7979
  _: 1
7972
7980
  })]),
7973
- default: U(({ data: t, node: n }) => [j(ya, {
7981
+ default: U(({ data: t, node: n }) => [j(xa, {
7974
7982
  item: t,
7975
7983
  path: e.current,
7976
7984
  node: n
@@ -7983,34 +7991,34 @@ var aa = {
7983
7991
  }, 8, ["data"]);
7984
7992
  };
7985
7993
  }
7986
- }), xa = /* @__PURE__ */ M({
7994
+ }), Ca = /* @__PURE__ */ M({
7987
7995
  __name: "RoleMenuView",
7988
7996
  props: {
7989
7997
  roles_set: {},
7990
7998
  is_free: { type: Boolean }
7991
7999
  },
7992
8000
  setup(e) {
7993
- let t = e, n = I([]), { post: r } = X();
8001
+ let t = e, n = I([]), { post: r } = Y();
7994
8002
  return H(() => t, () => {
7995
8003
  let { roles_set: e, is_free: i } = t, a = {
7996
8004
  is_free: i,
7997
8005
  roles: e.map((e) => e.id)
7998
8006
  };
7999
8007
  r("valar/view_menu", a).then((e) => {
8000
- let t = Bn(e);
8008
+ let t = Vn(e);
8001
8009
  n.value = t.rootNode.children || [];
8002
8010
  });
8003
8011
  }, {
8004
8012
  deep: !0,
8005
8013
  immediate: !0
8006
- }), (e, t) => (F(), E(ba, { options: n.value }, null, 8, ["options"]));
8014
+ }), (e, t) => (F(), E(Sa, { options: n.value }, null, 8, ["options"]));
8007
8015
  }
8008
- }), Sa = { style: { "text-align": "center" } }, Ca = /* @__PURE__ */ M({
8016
+ }), wa = { style: { "text-align": "center" } }, Ta = /* @__PURE__ */ M({
8009
8017
  __name: "AccountSetting",
8010
8018
  props: { account: {} },
8011
8019
  emits: ["update:account"],
8012
8020
  setup(e, { emit: t }) {
8013
- let n = W(e, "account", t), { user: r } = Y(), i = I([]), a = T(() => r.value?.user_entity ? "user__name" : "username"), { manager: o } = Q("valar.Account");
8021
+ let n = W(e, "account", t), { user: r } = Fn(), i = I([]), a = T(() => r.value?.user_entity ? "user__name" : "username"), { manager: o } = Z("valar.Account");
8014
8022
  return P(() => {
8015
8023
  let e = [
8016
8024
  "username",
@@ -8026,13 +8034,13 @@ var aa = {
8026
8034
  return a.value === "user__name" && (t.display = e.username), t;
8027
8035
  });
8028
8036
  });
8029
- }), (e, t) => (F(), O("div", Sa, [j(V(Dr), {
8037
+ }), (e, t) => (F(), O("div", wa, [j(V(Or), {
8030
8038
  modelValue: V(n),
8031
8039
  "onUpdate:modelValue": t[0] ||= (e) => N(n) ? n.value = e : null,
8032
8040
  options: i.value
8033
8041
  }, null, 8, ["modelValue", "options"])]));
8034
8042
  }
8035
- }), wa = /* @__PURE__ */ M({
8043
+ }), Ea = /* @__PURE__ */ M({
8036
8044
  __name: "RoleManage",
8037
8045
  setup(e) {
8038
8046
  let t = I(), n = I(), r = I(), i = [{
@@ -8051,7 +8059,7 @@ var aa = {
8051
8059
  return (e, s) => {
8052
8060
  let c = z("el-tag"), l = z("el-checkbox"), u = z("el-space");
8053
8061
  return F(), O(w, null, [
8054
- j(ga, {
8062
+ j(va, {
8055
8063
  ref_key: "treeRef",
8056
8064
  ref: t,
8057
8065
  code: "auth",
@@ -8085,7 +8093,7 @@ var aa = {
8085
8093
  width: "600",
8086
8094
  confirm: o
8087
8095
  }, {
8088
- default: U(({ data: e }) => [j(Ca, {
8096
+ default: U(({ data: e }) => [j(Ta, {
8089
8097
  account: e.account,
8090
8098
  "onUpdate:account": (t) => e.account = t
8091
8099
  }, null, 8, ["account", "onUpdate:account"])]),
@@ -8126,7 +8134,7 @@ var aa = {
8126
8134
  }, 8, ["modelValue", "onUpdate:modelValue"]))]),
8127
8135
  _: 2
8128
8136
  }, 1024)]),
8129
- default: U(({ data: e }) => [j(xa, {
8137
+ default: U(({ data: e }) => [j(Ca, {
8130
8138
  roles_set: a.value,
8131
8139
  is_free: e.is_free
8132
8140
  }, null, 8, ["roles_set", "is_free"])]),
@@ -8135,7 +8143,7 @@ var aa = {
8135
8143
  ], 64);
8136
8144
  };
8137
8145
  }
8138
- }), Ta = /* @__PURE__ */ M({
8146
+ }), Da = /* @__PURE__ */ M({
8139
8147
  __name: "MenuAuthPlugin",
8140
8148
  props: {
8141
8149
  data: {},
@@ -8214,7 +8222,7 @@ var aa = {
8214
8222
  })) : D("", !0);
8215
8223
  };
8216
8224
  }
8217
- }), Ea = { style: { "margin-bottom": "8px" } }, Da = /* @__PURE__ */ M({
8225
+ }), Oa = { style: { "margin-bottom": "8px" } }, ka = /* @__PURE__ */ M({
8218
8226
  __name: "RouteSetting",
8219
8227
  props: {
8220
8228
  routes: {},
@@ -8232,7 +8240,7 @@ var aa = {
8232
8240
  }
8233
8241
  return (t, n) => {
8234
8242
  let r = z("el-select");
8235
- return F(), O(w, null, [k("div", Ea, [j(V(K), {
8243
+ return F(), O(w, null, [k("div", Oa, [j(V(K), {
8236
8244
  icon: "save",
8237
8245
  disabled: i.value === e.menu.path,
8238
8246
  onClick: a
@@ -8255,10 +8263,10 @@ var aa = {
8255
8263
  }, 8, ["modelValue"])], 64);
8256
8264
  };
8257
8265
  }
8258
- }), Oa = {
8266
+ }), Aa = {
8259
8267
  style: { "margin-bottom": "8px" },
8260
8268
  class: "justified"
8261
- }, ka = /* @__PURE__ */ M({
8269
+ }, ja = /* @__PURE__ */ M({
8262
8270
  __name: "AuthSetting",
8263
8271
  props: { menu: {} },
8264
8272
  emits: ["save"],
@@ -8266,7 +8274,7 @@ var aa = {
8266
8274
  let n = e, r = {
8267
8275
  value: "id",
8268
8276
  label: "name"
8269
- }, i = t, { manager: a, loading: o } = Q("valar.Role"), s = I();
8277
+ }, i = t, { manager: a, loading: o } = Z("valar.Role"), s = I();
8270
8278
  P(() => {
8271
8279
  a.tree().then((e) => s.value = e);
8272
8280
  });
@@ -8281,7 +8289,7 @@ var aa = {
8281
8289
  }
8282
8290
  return (t, n) => {
8283
8291
  let i = z("el-checkbox"), a = z("el-space"), o = z("el-tree-select");
8284
- return F(), O(w, null, [k("div", Oa, [j(a, null, {
8292
+ return F(), O(w, null, [k("div", Aa, [j(a, null, {
8285
8293
  default: U(() => [j(i, {
8286
8294
  size: "small",
8287
8295
  modelValue: e.menu.is_admin,
@@ -8340,12 +8348,12 @@ var aa = {
8340
8348
  ])], 64);
8341
8349
  };
8342
8350
  }
8343
- }), Aa = /* @__PURE__ */ M({
8351
+ }), Ma = /* @__PURE__ */ M({
8344
8352
  __name: "MenuManage",
8345
8353
  setup(e) {
8346
8354
  let t = I(), n = I(), r = I(), i = I();
8347
8355
  I();
8348
- let { routes: a } = Fa(), { $message: o, $confirm: s } = J(), c = [
8356
+ let { routes: a } = Q(), { $message: o, $confirm: s } = J(), c = [
8349
8357
  {
8350
8358
  label: "路由设置",
8351
8359
  popover: r,
@@ -8378,7 +8386,7 @@ var aa = {
8378
8386
  icon: "lock",
8379
8387
  leaf_only: !0
8380
8388
  }
8381
- ], l = [{ component: Ta }], u = T(() => {
8389
+ ], l = [{ component: Da }], u = T(() => {
8382
8390
  let e = t.value?.model.mapping || {}, n = Object.values(e).map((e) => e.path);
8383
8391
  return a.value.filter((e) => !n.includes(e.path)).map(({ path: e, name: t }) => ({
8384
8392
  label: t,
@@ -8395,7 +8403,7 @@ var aa = {
8395
8403
  return (e, o) => {
8396
8404
  let s = z("el-tag"), p = z("el-select");
8397
8405
  return F(), O(w, null, [
8398
- j(ga, {
8406
+ j(va, {
8399
8407
  ref_key: "treeRef",
8400
8408
  ref: t,
8401
8409
  entity: "valar.Menu",
@@ -8450,22 +8458,22 @@ var aa = {
8450
8458
  }, 8, ["modelValue", "onUpdate:modelValue"])]),
8451
8459
  _: 1
8452
8460
  }, 512),
8453
- j(V(rr), {
8461
+ j(V(ir), {
8454
8462
  ref_key: "routePopoverRef",
8455
8463
  ref: r
8456
8464
  }, {
8457
- default: U(({ data: e }) => [j(Da, {
8465
+ default: U(({ data: e }) => [j(ka, {
8458
8466
  routes: u.value,
8459
8467
  menu: e,
8460
8468
  onSave: f
8461
8469
  }, null, 8, ["routes", "menu"])]),
8462
8470
  _: 1
8463
8471
  }, 512),
8464
- j(V(rr), {
8472
+ j(V(ir), {
8465
8473
  ref_key: "rolePopoverRef",
8466
8474
  ref: i
8467
8475
  }, {
8468
- default: U(({ data: e }) => [j(ka, {
8476
+ default: U(({ data: e }) => [j(ja, {
8469
8477
  menu: e,
8470
8478
  onSave: f
8471
8479
  }, null, 8, ["menu"])]),
@@ -8474,10 +8482,10 @@ var aa = {
8474
8482
  ], 64);
8475
8483
  };
8476
8484
  }
8477
- }), ja = /* @__PURE__ */ M({
8485
+ }), Na = /* @__PURE__ */ M({
8478
8486
  __name: "UserManage",
8479
8487
  setup(e) {
8480
- let { user: t } = Y(), n = I(), r = I(), i = T(() => t.value?.user_entity), a = I("auth"), { post: o } = X();
8488
+ let { user: t } = Fn(), n = I(), r = I(), i = T(() => t.value?.user_entity), a = I("auth"), { post: o } = Y();
8481
8489
  function s(e) {
8482
8490
  o("valar/create_user_account", e).then((e) => {
8483
8491
  r.value?.manager.reload();
@@ -8486,7 +8494,7 @@ var aa = {
8486
8494
  function c() {
8487
8495
  r.value?.getMeta() && n.value?.open(i.value, a.value);
8488
8496
  }
8489
- return (e, t) => (F(), O(w, null, [i.value ? (F(), E(V(da), {
8497
+ return (e, t) => (F(), O(w, null, [i.value ? (F(), E(V(pa), {
8490
8498
  key: 0,
8491
8499
  ref_key: "tableRef",
8492
8500
  ref: r,
@@ -8504,16 +8512,16 @@ var aa = {
8504
8512
  _: 1
8505
8513
  })]),
8506
8514
  _: 1
8507
- }, 8, ["entity", "code"])) : D("", !0), j(ua, {
8515
+ }, 8, ["entity", "code"])) : D("", !0), j(fa, {
8508
8516
  ref_key: "uploadRef",
8509
8517
  ref: n,
8510
8518
  onConfirm: s
8511
8519
  }, null, 512)], 64));
8512
8520
  }
8513
- }), Ma = /* @__PURE__ */ M({
8521
+ }), Pa = /* @__PURE__ */ M({
8514
8522
  __name: "MSystem",
8515
8523
  setup(e) {
8516
- let t = I(), { account: n, user: r, system: i } = Y();
8524
+ let t = I(), { account: n, user: r, system: i } = Fn();
8517
8525
  return (e, a) => {
8518
8526
  let o = z("el-tab-pane"), s = z("el-tabs");
8519
8527
  return V(n).is_admin ? (F(), E(s, {
@@ -8532,7 +8540,7 @@ var aa = {
8532
8540
  default: U(() => [...a[1] ||= [A("用户管理", -1)]]),
8533
8541
  _: 1
8534
8542
  })]),
8535
- default: U(() => [V(i) === "user" ? (F(), E(ja, { key: 0 })) : D("", !0)]),
8543
+ default: U(() => [V(i) === "user" ? (F(), E(Na, { key: 0 })) : D("", !0)]),
8536
8544
  _: 1
8537
8545
  })) : D("", !0),
8538
8546
  j(o, {
@@ -8554,7 +8562,7 @@ var aa = {
8554
8562
  default: U(() => [...a[3] ||= [A("角色管理", -1)]]),
8555
8563
  _: 1
8556
8564
  })]),
8557
- default: U(() => [V(i) === "role" ? (F(), E(wa, { key: 0 })) : D("", !0)]),
8565
+ default: U(() => [V(i) === "role" ? (F(), E(Ea, { key: 0 })) : D("", !0)]),
8558
8566
  _: 1
8559
8567
  }),
8560
8568
  j(o, {
@@ -8565,7 +8573,7 @@ var aa = {
8565
8573
  default: U(() => [...a[4] ||= [A("菜单管理", -1)]]),
8566
8574
  _: 1
8567
8575
  })]),
8568
- default: U(() => [V(i) === "menu" ? (F(), E(Aa, { key: 0 })) : D("", !0)]),
8576
+ default: U(() => [V(i) === "menu" ? (F(), E(Ma, { key: 0 })) : D("", !0)]),
8569
8577
  _: 1
8570
8578
  }),
8571
8579
  j(o, {
@@ -8576,14 +8584,14 @@ var aa = {
8576
8584
  default: U(() => [...a[5] ||= [A("数据管理", -1)]]),
8577
8585
  _: 1
8578
8586
  })]),
8579
- default: U(() => [V(i) === "meta" ? (F(), E(Di, {
8587
+ default: U(() => [V(i) === "meta" ? (F(), E(ki, {
8580
8588
  key: 0,
8581
8589
  entity: "valar.Valar",
8582
8590
  code: "default",
8583
8591
  locked: "",
8584
8592
  onList: t.value?.openFieldList,
8585
8593
  onForm: t.value?.openViewForm
8586
- }, null, 8, ["onList", "onForm"])) : D("", !0), j(Gi, {
8594
+ }, null, 8, ["onList", "onForm"])) : D("", !0), j(qi, {
8587
8595
  ref_key: "metaRef",
8588
8596
  ref: t,
8589
8597
  lock: "",
@@ -8597,7 +8605,7 @@ var aa = {
8597
8605
  }, 8, ["modelValue"])) : D("", !0);
8598
8606
  };
8599
8607
  }
8600
- }), Na = /* @__PURE__ */ M({
8608
+ }), Fa = /* @__PURE__ */ M({
8601
8609
  __name: "NotFound",
8602
8610
  setup(e) {
8603
8611
  let t = rn(), { counter: n, pause: r, resume: i, isActive: a } = Yt(1e3, {
@@ -8648,7 +8656,7 @@ var aa = {
8648
8656
  });
8649
8657
  };
8650
8658
  }
8651
- }), Pa = /* @__PURE__ */ M({
8659
+ }), Ia = /* @__PURE__ */ M({
8652
8660
  __name: "NoPermission",
8653
8661
  setup(e) {
8654
8662
  let t = rn(), { counter: n, pause: r, resume: i, isActive: a } = Yt(1e3, {
@@ -8699,21 +8707,21 @@ var aa = {
8699
8707
  });
8700
8708
  };
8701
8709
  }
8702
- }), Fa = Kt(() => {
8710
+ }), Q = Kt(() => {
8703
8711
  let t = I({}), n = T(() => t.value?.base_url || "/api/"), r = T(() => t.value?.minio_url || "/minio/"), i = T(() => t.value?.title || "Morghulis System"), a = T(() => (t.value?.routes || []).filter((e) => e.path !== "/").map(({ path: e, name: t }) => ({
8704
8712
  path: e,
8705
8713
  name: t
8706
8714
  }))), o = T(() => t.value?.sign_in_only || !1), s = T(() => t.value?.username_label || "");
8707
8715
  function c(n, r) {
8708
- t.value = r || {}, e.add(...za, ...r?.icons || []);
8709
- let a = [...r?.routes || [], ...La];
8710
- a.find((e) => e.path === "/") || a.unshift(Ia);
8716
+ t.value = r || {}, e.add(...Ba, ...r?.icons || []);
8717
+ let a = [...r?.routes || [], ...Ra];
8718
+ a.find((e) => e.path === "/") || a.unshift(La);
8711
8719
  let o = en({
8712
8720
  history: tn(),
8713
8721
  routes: a
8714
8722
  });
8715
8723
  o.beforeEach((e) => {
8716
- document.title = `${String(e.name)} - ${i.value}`, Ra.includes(e.path);
8724
+ document.title = `${String(e.name)} - ${i.value}`, za.includes(e.path);
8717
8725
  }), n.use(o);
8718
8726
  }
8719
8727
  return {
@@ -8726,11 +8734,11 @@ var aa = {
8726
8734
  username_label: s,
8727
8735
  install: c
8728
8736
  };
8729
- }), Ia = {
8737
+ }), La = {
8730
8738
  path: "/",
8731
8739
  name: "Welcome",
8732
8740
  component: Mn
8733
- }, La = [
8741
+ }, Ra = [
8734
8742
  {
8735
8743
  path: "/:pathMatch(.*)*",
8736
8744
  redirect: "/404"
@@ -8738,23 +8746,23 @@ var aa = {
8738
8746
  {
8739
8747
  path: "/morghulis_system",
8740
8748
  name: "系统管理",
8741
- component: Ma
8749
+ component: Pa
8742
8750
  },
8743
8751
  {
8744
8752
  path: "/404",
8745
8753
  name: "页面没找到",
8746
- component: Na
8754
+ component: Fa
8747
8755
  },
8748
8756
  {
8749
8757
  path: "/403",
8750
8758
  name: "没有权限",
8751
- component: Pa
8759
+ component: Ia
8752
8760
  }
8753
- ], Ra = [
8761
+ ], za = [
8754
8762
  "/",
8755
8763
  "/404",
8756
8764
  "/403"
8757
- ], za = [
8765
+ ], Ba = [
8758
8766
  pt,
8759
8767
  Re,
8760
8768
  We,
@@ -8856,11 +8864,11 @@ var aa = {
8856
8864
  mt,
8857
8865
  r,
8858
8866
  _t
8859
- ], Ba = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
8867
+ ], Va = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
8860
8868
  //#endregion
8861
8869
  //#region morghulis/library/use-auth/index.ts
8862
- function Va() {
8863
- let { post: e } = X(), { $confirm: t, $message: n } = J(), { sign_in: r, sign_out: i, token: a, register: o } = Y(), { options: s } = Fa();
8870
+ function Ha() {
8871
+ let { post: e } = Y(), { $confirm: t, $message: n } = J(), { sign_in: r, sign_out: i, token: a, register: o } = Fn(), { options: s } = Q();
8864
8872
  async function c(t) {
8865
8873
  try {
8866
8874
  let n = await e("/valar/sign", t);
@@ -8890,7 +8898,7 @@ function Va() {
8890
8898
  flush: "sync"
8891
8899
  });
8892
8900
  function u(e) {
8893
- let t = Ua(e, s.value) || Ha(e);
8901
+ let t = Wa(e, s.value) || Ua(e);
8894
8902
  return t && n.error(t), !t;
8895
8903
  }
8896
8904
  return {
@@ -8899,17 +8907,17 @@ function Va() {
8899
8907
  validate: u
8900
8908
  };
8901
8909
  }
8902
- function Ha(e) {
8910
+ function Ua(e) {
8903
8911
  return e.password.length < 8 ? "密码长度不小于8位" : e.is_sign_in || e.password === e.$password ? null : "两次输入的密码不一致";
8904
8912
  }
8905
- function Ua(e, t) {
8913
+ function Wa(e, t) {
8906
8914
  if (e.username === "admin") return null;
8907
8915
  let { username_label: n, username_exp: r } = t;
8908
- return ((n ? r || /.+/ : Ba).test(e.username) ? null : `${n || "邮箱"}格式错误`) || (n && !e.is_sign_in ? Ba.test(e.email) ? null : "邮箱格式错误" : null);
8916
+ return ((n ? r || /.+/ : Va).test(e.username) ? null : `${n || "邮箱"}格式错误`) || (n && !e.is_sign_in ? Va.test(e.email) ? null : "邮箱格式错误" : null);
8909
8917
  }
8910
8918
  //#endregion
8911
8919
  //#region morghulis/library/use-data/index.ts
8912
- function Wa(e) {
8920
+ function Ga(e) {
8913
8921
  let t = {
8914
8922
  line: e?.line ?? "\r\n",
8915
8923
  cell: e?.cell ?? " "
@@ -8930,13 +8938,13 @@ function Wa(e) {
8930
8938
  }
8931
8939
  //#endregion
8932
8940
  //#region morghulis/library/use-excel/index.ts
8933
- function Ga() {
8941
+ function Ka() {
8934
8942
  async function e(e, t = !0) {
8935
8943
  let n = await (await fetch(e)).arrayBuffer();
8936
- return e.endsWith(".csv") ? Ka(new TextDecoder("utf-8").decode(n), t) : Ka(n, t);
8944
+ return e.endsWith(".csv") ? qa(new TextDecoder("utf-8").decode(n), t) : qa(n, t);
8937
8945
  }
8938
8946
  async function t(e, t = !0) {
8939
- return Ka(await e.arrayBuffer(), t);
8947
+ return qa(await e.arrayBuffer(), t);
8940
8948
  }
8941
8949
  async function n(e, ...t) {
8942
8950
  let { utils: n, writeFile: r } = await import("xlsx"), i = n.book_new();
@@ -8958,7 +8966,7 @@ function Ga() {
8958
8966
  zip: r
8959
8967
  };
8960
8968
  }
8961
- async function Ka(e, t) {
8969
+ async function qa(e, t) {
8962
8970
  let { utils: n, read: r, SSF: i } = await import("xlsx"), a = r(e, {
8963
8971
  type: "binary",
8964
8972
  cellDates: !0
@@ -8986,15 +8994,15 @@ async function Ka(e, t) {
8986
8994
  }
8987
8995
  //#endregion
8988
8996
  //#region morghulis/library/use-menu/index.ts
8989
- var qa = Kt(() => {
8997
+ var Ja = Kt(() => {
8990
8998
  let e = I({
8991
8999
  mapping: {},
8992
9000
  options: [],
8993
9001
  rootNode: { children: [] }
8994
- }), { post: t, loading: n } = X();
9002
+ }), { post: t, loading: n } = Y();
8995
9003
  function r() {
8996
9004
  t("valar/load_menu").then((t) => {
8997
- e.value = Bn(t);
9005
+ e.value = Vn(t);
8998
9006
  });
8999
9007
  }
9000
9008
  return {
@@ -9005,10 +9013,10 @@ var qa = Kt(() => {
9005
9013
  });
9006
9014
  //#endregion
9007
9015
  //#region morghulis/library/use-plugin/index.ts
9008
- function Ja(e, t) {
9016
+ function Ya(e, t) {
9009
9017
  return { columns: T(() => (e.value || []).filter((e) => !e.codes?.length || e.codes.includes(t.value))) };
9010
9018
  }
9011
- function Ya(e, t, n) {
9019
+ function Xa(e, t, n) {
9012
9020
  return { buttons: T(() => (e.value || []).filter((e) => !e.codes?.length || e.codes.includes(t.value)).filter((e) => {
9013
9021
  let t = e.hide == null ? !1 : e.hide instanceof Function ? e.hide(n.value) : e.hide, r = e.leaf_only ? n.value.isLeaf ?? !0 : !0, i = !e.folder_only || n.value.isLeaf == null || !n.value.isLeaf;
9014
9022
  return !t && i && r;
@@ -9029,7 +9037,7 @@ function Ya(e, t, n) {
9029
9037
  }
9030
9038
  //#endregion
9031
9039
  //#region morghulis/library/use-size/index.ts
9032
- function Xa() {
9040
+ function Za() {
9033
9041
  let { height: e } = $t();
9034
9042
  return { frame: T(() => {
9035
9043
  let t = {
@@ -9043,12 +9051,12 @@ function Xa() {
9043
9051
  }
9044
9052
  //#endregion
9045
9053
  //#region morghulis/components/feedback/MDialog.vue?vue&type=script&setup=true&lang.ts
9046
- var Za = { class: "justified" }, Qa = {
9054
+ var Qa = { class: "justified" }, $a = {
9047
9055
  class: "m-dialog-content",
9048
9056
  "element-loading-custom-class": "m-dialog-loading",
9049
9057
  "element-loading-background": "rgba(255,255,255,0.6)",
9050
9058
  "element-loading-text": "加载中..."
9051
- }, $a = {
9059
+ }, eo = {
9052
9060
  key: 0,
9053
9061
  class: "right"
9054
9062
  }, $ = /* @__PURE__ */ M({
@@ -9135,7 +9143,7 @@ var Za = { class: "justified" }, Qa = {
9135
9143
  onClosed: t[1] ||= (e) => i("closed"),
9136
9144
  onKeydown: Wt(v, ["esc"])
9137
9145
  }, {
9138
- header: U(() => [k("div", Za, [j(r, null, {
9146
+ header: U(() => [k("div", Qa, [j(r, null, {
9139
9147
  default: U(() => [R(e.$slots, "header", { data: l.value }, () => [j(n, { tag: "b" }, {
9140
9148
  default: U(() => [A(B(u.value.title), 1)]),
9141
9149
  _: 1
@@ -9165,7 +9173,7 @@ var Za = { class: "justified" }, Qa = {
9165
9173
  ]),
9166
9174
  _: 3
9167
9175
  })])]),
9168
- footer: U(() => [m.value ? (F(), O("div", $a, [j(a, {
9176
+ footer: U(() => [m.value ? (F(), O("div", eo, [j(a, {
9169
9177
  type: "success",
9170
9178
  plain: "",
9171
9179
  loading: c.value,
@@ -9182,7 +9190,7 @@ var Za = { class: "justified" }, Qa = {
9182
9190
  default: U(() => [j(G, { icon: "xmark-circle" }), t[3] ||= A(" 取消 ", -1)]),
9183
9191
  _: 1
9184
9192
  }, 8, ["disabled"])])) : D("", !0)]),
9185
- default: U(() => [Ut((F(), O("div", Qa, [R(e.$slots, "default", { data: l.value })])), [[p, c.value]])]),
9193
+ default: U(() => [Ut((F(), O("div", $a, [R(e.$slots, "default", { data: l.value })])), [[p, c.value]])]),
9186
9194
  _: 3
9187
9195
  }, 8, [
9188
9196
  "modelValue",
@@ -9192,7 +9200,7 @@ var Za = { class: "justified" }, Qa = {
9192
9200
  ]);
9193
9201
  };
9194
9202
  }
9195
- }), eo = /* @__PURE__ */ M({
9203
+ }), to = /* @__PURE__ */ M({
9196
9204
  __name: "MCharts",
9197
9205
  props: {
9198
9206
  options: { default: {
@@ -9242,30 +9250,30 @@ var Za = { class: "justified" }, Qa = {
9242
9250
  })
9243
9251
  }, null, 4));
9244
9252
  }
9245
- }), to = /* @__PURE__ */ Sn({
9246
- DataTable: () => da,
9247
- DataTree: () => ga,
9248
- DataWrapper: () => Vr,
9253
+ }), no = /* @__PURE__ */ Sn({
9254
+ DataTable: () => pa,
9255
+ DataTree: () => va,
9256
+ DataWrapper: () => Ur,
9249
9257
  MButton: () => K,
9250
- MCell: () => Rr,
9251
- MCharts: () => eo,
9258
+ MCell: () => Br,
9259
+ MCharts: () => to,
9252
9260
  MDialog: () => $,
9253
- MForm: () => ii,
9261
+ MForm: () => oi,
9254
9262
  MIcon: () => G,
9255
- MObjectEditor: () => Pr,
9263
+ MObjectEditor: () => Ir,
9256
9264
  MOptionContent: () => Dn,
9257
9265
  MOptionItem: () => On,
9258
9266
  MOptionList: () => kn,
9259
- MPopover: () => rr,
9260
- MRichEditor: () => Ir,
9267
+ MPopover: () => ir,
9268
+ MRichEditor: () => Rr,
9261
9269
  MText: () => q,
9262
- MTransferEditor: () => Dr,
9263
- MUploader: () => ua
9264
- }), no = /* @__PURE__ */ M({
9270
+ MTransferEditor: () => Or,
9271
+ MUploader: () => fa
9272
+ }), ro = /* @__PURE__ */ M({
9265
9273
  __name: "FrameMenu",
9266
9274
  emits: ["click"],
9267
9275
  setup(e, { expose: t, emit: n }) {
9268
- let { model: r, loading: i, load: a } = qa(), o = T(() => l.path), s = I(), c = rn(), l = nn(), u = I(!1), { height: d } = $t();
9276
+ let { model: r, loading: i, load: a } = Ja(), o = T(() => l.path), s = I(), c = rn(), l = nn(), u = I(!1), { height: d } = $t();
9269
9277
  H(o, () => {
9270
9278
  kt().then(() => s.value?.setCurrentKey(o.value));
9271
9279
  }, { immediate: !0 });
@@ -9317,7 +9325,7 @@ var Za = { class: "justified" }, Qa = {
9317
9325
  }, 8, ["disabled"]), k("div", {
9318
9326
  style: jt({ height: `${V(d) - 90}px` }),
9319
9327
  class: "menu-tree-wrapper"
9320
- }, [j(ba, {
9328
+ }, [j(Sa, {
9321
9329
  options: V(r).rootNode?.children || [],
9322
9330
  current: o.value,
9323
9331
  onGoto: f
@@ -9326,14 +9334,14 @@ var Za = { class: "justified" }, Qa = {
9326
9334
  }, 8, ["modelValue", "onOpen"])], 64);
9327
9335
  };
9328
9336
  }
9329
- }), ro = {
9337
+ }), io = {
9330
9338
  key: 1,
9331
9339
  class: "right"
9332
- }, io = /* @__PURE__ */ M({
9340
+ }, ao = /* @__PURE__ */ M({
9333
9341
  __name: "LoginForm",
9334
9342
  emits: ["retrieve"],
9335
9343
  setup(e, { expose: t, emit: n }) {
9336
- let r = n, { username_label: i, sign_in_only: a } = Fa(), { validate: o } = Va(), s = I({
9344
+ let r = n, { username_label: i, sign_in_only: a } = Q(), { validate: o } = Ha(), s = I({
9337
9345
  is_sign_in: !0,
9338
9346
  username: "",
9339
9347
  email: "",
@@ -9381,7 +9389,7 @@ var Za = { class: "justified" }, Qa = {
9381
9389
  }, null, 8, ["modelValue"])]),
9382
9390
  _: 1
9383
9391
  }),
9384
- s.value.is_sign_in ? (F(), O("div", ro, [j(V(K), {
9392
+ s.value.is_sign_in ? (F(), O("div", io, [j(V(K), {
9385
9393
  type: "info",
9386
9394
  onClick: c
9387
9395
  }, {
@@ -9415,17 +9423,17 @@ var Za = { class: "justified" }, Qa = {
9415
9423
  }]), 1024);
9416
9424
  };
9417
9425
  }
9418
- }), ao = /* @__PURE__ */ M({
9426
+ }), oo = /* @__PURE__ */ M({
9419
9427
  __name: "ProfileManage",
9420
9428
  setup(e, { expose: t }) {
9421
- let { account: n, user: r } = Y(), { $message: i } = J(), { manager: a } = Q(r.value.user_entity || "valar.Valar"), { post: o } = X(), s = I(), c = I({}), l = I([]);
9429
+ let { account: n, user: r } = Fn(), { $message: i } = J(), { manager: a } = Z(r.value.user_entity || "valar.Valar"), { post: o } = Y(), s = I(), c = I({}), l = I([]);
9422
9430
  P(() => {
9423
9431
  o("valar/load_user").then((e) => s.value = e).then(() => a.meta("edit")).then((e) => l.value = e.fields);
9424
9432
  });
9425
9433
  async function u() {
9426
9434
  return ln(c.value) || await a.save_one(c.value), !0;
9427
9435
  }
9428
- return t({ save: u }), (e, t) => s.value ? (F(), E(V(ii), {
9436
+ return t({ save: u }), (e, t) => s.value ? (F(), E(V(oi), {
9429
9437
  key: 0,
9430
9438
  original: s.value,
9431
9439
  modelValue: c.value,
@@ -9437,10 +9445,10 @@ var Za = { class: "justified" }, Qa = {
9437
9445
  "fields"
9438
9446
  ])) : D("", !0);
9439
9447
  }
9440
- }), oo = { key: 0 }, so = /* @__PURE__ */ M({
9448
+ }), so = { key: 0 }, co = /* @__PURE__ */ M({
9441
9449
  __name: "PasswordManage",
9442
9450
  setup(e, { expose: t }) {
9443
- let n = I(), { user: r, account: i } = Y(), a = I({
9451
+ let n = I(), { user: r, account: i } = Fn(), a = I({
9444
9452
  old_password: "12345678",
9445
9453
  new_password: "19870120",
9446
9454
  $new_password: "19870120"
@@ -9457,7 +9465,7 @@ var Za = { class: "justified" }, Qa = {
9457
9465
  old_password: o,
9458
9466
  new_password: o,
9459
9467
  $new_password: o
9460
- }, { $message: c } = J(), { post: l } = X();
9468
+ }, { $message: c } = J(), { post: l } = Y();
9461
9469
  async function u() {
9462
9470
  let { old_password: e, new_password: t, $new_password: r } = a.value;
9463
9471
  if (t !== r) return c.warning("两次输入的密码不一致"), !1;
@@ -9495,7 +9503,7 @@ var Za = { class: "justified" }, Qa = {
9495
9503
  }, {
9496
9504
  default: U(() => [
9497
9505
  j(c, { prop: "old_password" }, {
9498
- label: U(() => [t[4] ||= A(" 旧密码", -1), V(i).isTemporal ? (F(), O("span", oo, " (或临时密码)")) : D("", !0)]),
9506
+ label: U(() => [t[4] ||= A(" 旧密码", -1), V(i).isTemporal ? (F(), O("span", so, " (或临时密码)")) : D("", !0)]),
9499
9507
  default: U(() => [j(o, {
9500
9508
  type: "password",
9501
9509
  "show-password": "",
@@ -9533,17 +9541,17 @@ var Za = { class: "justified" }, Qa = {
9533
9541
  }, 8, ["model"])], 64);
9534
9542
  };
9535
9543
  }
9536
- }), co = /* @__PURE__ */ M({
9544
+ }), lo = /* @__PURE__ */ M({
9537
9545
  __name: "AccountManage",
9538
9546
  setup(e, { expose: t }) {
9539
- let { user: n, account: r } = Y(), { username_label: i } = Fa(), { $message: a } = J(), { manager: o } = Q("valar.Account"), s = I(), c = I({}), l = I([]);
9547
+ let { user: n, account: r } = Fn(), { username_label: i } = Q(), { $message: a } = J(), { manager: o } = Z("valar.Account"), s = I(), c = I({}), l = I([]);
9540
9548
  P(async () => {
9541
9549
  s.value = await o.fetch(r.value.id);
9542
9550
  let e = await o.meta("edit");
9543
9551
  l.value = e.fields.map((e) => (e.prop === "username" && i.value && (e.label = i.value), e));
9544
9552
  });
9545
9553
  async function u() {
9546
- return ln(c.value) ? (a.warning("还未补充邮箱信息"), !1) : Ba.test(c.value.email) ? (await o.save_one(c.value), !0) : (a.warning("邮箱格式错误"), !1);
9554
+ return ln(c.value) ? (a.warning("还未补充邮箱信息"), !1) : Va.test(c.value.email) ? (await o.save_one(c.value), !0) : (a.warning("邮箱格式错误"), !1);
9547
9555
  }
9548
9556
  return t({ save: u }), (e, t) => {
9549
9557
  let n = z("el-alert");
@@ -9562,7 +9570,7 @@ var Za = { class: "justified" }, Qa = {
9562
9570
  _: 1
9563
9571
  })]),
9564
9572
  _: 1
9565
- })), s.value ? (F(), E(V(ii), {
9573
+ })), s.value ? (F(), E(V(oi), {
9566
9574
  key: 1,
9567
9575
  original: s.value,
9568
9576
  modelValue: c.value,
@@ -9575,10 +9583,10 @@ var Za = { class: "justified" }, Qa = {
9575
9583
  ])) : D("", !0)], 64);
9576
9584
  };
9577
9585
  }
9578
- }), lo = /* @__PURE__ */ M({
9586
+ }), uo = /* @__PURE__ */ M({
9579
9587
  __name: "AuthDropdown",
9580
9588
  setup(e) {
9581
- let { user: t, account: n, sign_in: r } = Y(), i = I(), a = I(), o = Rt();
9589
+ let { user: t, account: n, sign_in: r } = Fn(), i = I(), a = I(), o = Rt();
9582
9590
  function s(e) {
9583
9591
  let { component: t, title: n, width: r } = d[e] || {};
9584
9592
  t && (o.value = t, i.value?.open({ key: e }, {
@@ -9586,7 +9594,7 @@ var Za = { class: "justified" }, Qa = {
9586
9594
  title: n
9587
9595
  }));
9588
9596
  }
9589
- let { post: c } = X();
9597
+ let { post: c } = Y();
9590
9598
  async function l(e) {
9591
9599
  let t = await a.value?.save();
9592
9600
  if (t) {
@@ -9600,17 +9608,17 @@ var Za = { class: "justified" }, Qa = {
9600
9608
  return !e || !t || r;
9601
9609
  }), d = {
9602
9610
  profile: {
9603
- component: ao,
9611
+ component: oo,
9604
9612
  title: "个人信息管理",
9605
9613
  width: 600
9606
9614
  },
9607
9615
  account: {
9608
- component: co,
9616
+ component: lo,
9609
9617
  title: "账户信息管理",
9610
9618
  width: 600
9611
9619
  },
9612
9620
  password: {
9613
- component: so,
9621
+ component: co,
9614
9622
  title: "密码管理",
9615
9623
  width: 350
9616
9624
  }
@@ -9690,10 +9698,10 @@ var Za = { class: "justified" }, Qa = {
9690
9698
  }, 512)], 64);
9691
9699
  };
9692
9700
  }
9693
- }), uo = /* @__PURE__ */ M({
9701
+ }), fo = /* @__PURE__ */ M({
9694
9702
  __name: "FrameAuth",
9695
9703
  setup(e) {
9696
- let t = I(), n = I(), r = I(), { account: i, is_login: a } = Y(), { sign: o, exit: s } = Va();
9704
+ let t = I(), n = I(), r = I(), { account: i, is_login: a } = Fn(), { sign: o, exit: s } = Ha();
9697
9705
  function c() {
9698
9706
  t.value?.open();
9699
9707
  }
@@ -9703,10 +9711,10 @@ var Za = { class: "justified" }, Qa = {
9703
9711
  }
9704
9712
  let u = { email: [{
9705
9713
  validator: (e, t, n) => {
9706
- t === "" ? n(/* @__PURE__ */ Error("请输入邮箱")) : Ba.test(t) ? n() : n(/* @__PURE__ */ Error("邮箱格式错误"));
9714
+ t === "" ? n(/* @__PURE__ */ Error("请输入邮箱")) : Va.test(t) ? n() : n(/* @__PURE__ */ Error("邮箱格式错误"));
9707
9715
  },
9708
9716
  trigger: "blur"
9709
- }] }, d = I(), { post: f } = X();
9717
+ }] }, d = I(), { post: f } = Y();
9710
9718
  async function p(e) {
9711
9719
  let t = !1;
9712
9720
  return await d.value?.validate((e) => {
@@ -9718,7 +9726,7 @@ var Za = { class: "justified" }, Qa = {
9718
9726
  return F(), O(w, null, [
9719
9727
  V(a) ? (F(), E(f, { key: 0 }, {
9720
9728
  default: U(() => [
9721
- j(lo),
9729
+ j(uo),
9722
9730
  V(i)?.is_admin ? (F(), E(V(K), {
9723
9731
  key: 0,
9724
9732
  icon: e.$route.path === "/morghulis_system" ? "rotate-backward" : "gear",
@@ -9754,7 +9762,7 @@ var Za = { class: "justified" }, Qa = {
9754
9762
  width: "400",
9755
9763
  confirm: l
9756
9764
  }, {
9757
- default: U(() => [j(io, {
9765
+ default: U(() => [j(ao, {
9758
9766
  ref_key: "form",
9759
9767
  ref: r,
9760
9768
  onRetrieve: o[1] ||= (e) => n.value?.open({ email: "" })
@@ -9793,11 +9801,11 @@ var Za = { class: "justified" }, Qa = {
9793
9801
  ], 64);
9794
9802
  };
9795
9803
  }
9796
- }), fo = /* @__PURE__ */ M({
9804
+ }), po = /* @__PURE__ */ M({
9797
9805
  __name: "FrameNavigate",
9798
9806
  emits: ["open"],
9799
9807
  setup(e, { emit: t }) {
9800
- let { model: n } = qa();
9808
+ let { model: n } = Ja();
9801
9809
  rn();
9802
9810
  let r = nn(), i = t, a = T(() => r.path), o = T(() => {
9803
9811
  let e = Object.values(n.value.mapping), t = e.find((e) => e.path === a.value), r = [];
@@ -9850,16 +9858,16 @@ var Za = { class: "justified" }, Qa = {
9850
9858
  });
9851
9859
  };
9852
9860
  }
9853
- }), po = {
9861
+ }), mo = {
9854
9862
  class: "justified",
9855
9863
  style: { height: "100%" }
9856
- }, mo = {
9864
+ }, ho = {
9857
9865
  class: "justified",
9858
9866
  style: { height: "100%" }
9859
- }, ho = /*#__PURE__*/ wn(/* @__PURE__ */ M({
9867
+ }, go = /*#__PURE__*/ wn(/* @__PURE__ */ M({
9860
9868
  __name: "MFrame",
9861
9869
  setup(e) {
9862
- let { frame: t } = Xa(), n = T(() => `${t.value.body}px`), r = rn(), { title: i } = Fa(), a = I();
9870
+ let { frame: t } = Za(), n = T(() => `${t.value.body}px`), r = rn(), { title: i } = Q(), a = I();
9863
9871
  return (e, o) => {
9864
9872
  let s = z("el-divider"), c = z("el-text"), l = z("el-space"), u = z("el-header"), d = z("router-view"), f = z("el-main"), p = z("el-link"), m = z("el-footer"), h = z("el-container");
9865
9873
  return F(), E(h, { class: "container" }, {
@@ -9868,9 +9876,9 @@ var Za = { class: "justified" }, Qa = {
9868
9876
  class: "header",
9869
9877
  height: `${V(t).header}px`
9870
9878
  }, {
9871
- default: U(() => [k("div", po, [j(l, null, {
9879
+ default: U(() => [k("div", mo, [j(l, null, {
9872
9880
  default: U(() => [
9873
- j(no, {
9881
+ j(ro, {
9874
9882
  ref_key: "menuRef",
9875
9883
  ref: a
9876
9884
  }, null, 512),
@@ -9890,7 +9898,7 @@ var Za = { class: "justified" }, Qa = {
9890
9898
  ]),
9891
9899
  _: 1
9892
9900
  }), j(l, null, {
9893
- default: U(() => [R(e.$slots, "tool", {}, void 0, !0), j(uo)]),
9901
+ default: U(() => [R(e.$slots, "tool", {}, void 0, !0), j(fo)]),
9894
9902
  _: 3
9895
9903
  })])]),
9896
9904
  _: 3
@@ -9899,7 +9907,7 @@ var Za = { class: "justified" }, Qa = {
9899
9907
  class: "neck",
9900
9908
  height: `${V(t).neck}px`
9901
9909
  }, {
9902
- default: U(() => [k("div", mo, [j(fo, { onOpen: o[1] ||= (e) => a.value?.open() }), j(l, null, {
9910
+ default: U(() => [k("div", ho, [j(po, { onOpen: o[1] ||= (e) => a.value?.open() }), j(l, null, {
9903
9911
  default: U(() => [R(e.$slots, "tag", {}, void 0, !0)]),
9904
9912
  _: 3
9905
9913
  })])]),
@@ -9950,13 +9958,13 @@ var Za = { class: "justified" }, Qa = {
9950
9958
  });
9951
9959
  };
9952
9960
  }
9953
- }), [["__scopeId", "data-v-1b59bf74"]]), go = /* @__PURE__ */ M({
9961
+ }), [["__scopeId", "data-v-1b59bf74"]]), _o = /* @__PURE__ */ M({
9954
9962
  __name: "MApp",
9955
9963
  setup(e) {
9956
- let { title: t } = Fa(), { open: n, status: r } = Ln();
9964
+ let { title: t } = Q(), { open: n, status: r } = Rn();
9957
9965
  return (e, i) => {
9958
9966
  let a = z("el-text"), o = z("el-result"), s = z("el-button");
9959
- return V(r).code === 200 ? (F(), E(ho, { key: 0 }, {
9967
+ return V(r).code === 200 ? (F(), E(go, { key: 0 }, {
9960
9968
  tool: U(() => [R(e.$slots, "tool")]),
9961
9969
  footer: U(() => [R(e.$slots, "footer")]),
9962
9970
  _: 3
@@ -10011,11 +10019,11 @@ var Za = { class: "justified" }, Qa = {
10011
10019
  })) : D("", !0);
10012
10020
  };
10013
10021
  }
10014
- }), _o = to, vo = (t) => (e.add(wt), { install(e) {
10015
- let { install: n } = Fa();
10016
- n(e, t), Object.entries(_o).forEach(([t, n]) => {
10022
+ }), vo = no, yo = (t) => (e.add(wt), { install(e) {
10023
+ let { install: n } = Q();
10024
+ n(e, t), Object.entries(vo).forEach(([t, n]) => {
10017
10025
  e.component(t, n);
10018
10026
  });
10019
10027
  } });
10020
10028
  //#endregion
10021
- export { da as DataTable, ga as DataTree, Vr as DataWrapper, go as MApp, K as MButton, Rr as MCell, eo as MCharts, $ as MDialog, ii as MForm, G as MIcon, Pr as MObjectEditor, Dn as MOptionContent, On as MOptionItem, kn as MOptionList, rr as MPopover, Ir as MRichEditor, q as MText, Dr as MTransferEditor, ua as MUploader, vo as createMorghulis, vo as default, Va as useAuth, zn as useChannel, Pn as useChannelContainer, Q as useDao, Wa as useData, Ga as useExcel, J as useFeedback, Xa as useFrameSize, qa as useMenu, Qn as useMetaQuery, Fa as useOptionState, oi as usePagination, Ji as usePaster, Ya as usePluginButton, Ja as usePluginColumn, X as useRequest, Ln as useSocket, Rn as useSocketCallback, Y as useUserState, er as useValar };
10029
+ export { pa as DataTable, va as DataTree, Ur as DataWrapper, _o as MApp, K as MButton, Br as MCell, to as MCharts, $ as MDialog, oi as MForm, G as MIcon, Ir as MObjectEditor, Dn as MOptionContent, On as MOptionItem, kn as MOptionList, ir as MPopover, Rr as MRichEditor, q as MText, Or as MTransferEditor, fa as MUploader, yo as createMorghulis, yo as default, Ha as useAuth, Bn as useChannel, Pn as useChannelContainer, Z as useDao, Ga as useData, Ka as useExcel, J as useFeedback, Za as useFrameSize, Ja as useMenu, $n as useMetaQuery, Q as useOptionState, ci as usePagination, Xi as usePaster, Xa as usePluginButton, Ya as usePluginColumn, Y as useRequest, Rn as useSocket, zn as useSocketCallback, Fn as useUserState, tr as useValar };