morghulis 4.3.0 → 4.3.3

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 } = Pa();
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(ua), {
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,10 +427,12 @@ 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 } = Pa(), { 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
- let c = I(!1), l = hn.create({ baseURL: r.value });
433
+ let c = I(!1);
434
+ console.log(r.value);
435
+ let l = hn.create({ baseURL: r.value });
434
436
  l.interceptors.request.use((e) => (s.value?.is_admin && console.log("URL: ", e.url), gn.start(), c.value = !0, e.headers.Client = i.value, e.headers.Auth = t.value ? "Require Login" : "", e.headers.Authorization = `Bearer ${a.value}`, e)), l.interceptors.response.use((e) => {
435
437
  gn.done(), c.value = !1;
436
438
  let { payload: t, message: r, code: i } = e.data;
@@ -449,9 +451,18 @@ function X(e) {
449
451
  };
450
452
  }
451
453
  //#endregion
454
+ //#region morghulis/library/use-socket/url.ts
455
+ function Ln(e, t, n) {
456
+ let r = new URL(e, n);
457
+ if (r.protocol === "http:") r.protocol = "ws:";
458
+ else if (r.protocol === "https:") r.protocol = "wss:";
459
+ else if (r.protocol !== "ws:" && r.protocol !== "wss:") throw Error(`Unsupported WebSocket protocol: ${r.protocol}`);
460
+ return r.pathname = `${r.pathname.replace(/\/+$/, "")}/${encodeURIComponent(t)}/`, r.href;
461
+ }
462
+ //#endregion
452
463
  //#region morghulis/library/use-socket/index.ts
453
- var In = Kt(() => {
454
- let { client: e } = Y(), { base_url: t } = Pa(), n = T(() => `${t.value}${e.value}/`), 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({
455
466
  code: 0,
456
467
  count: 0,
457
468
  retries: 10
@@ -480,8 +491,8 @@ var In = Kt(() => {
480
491
  });
481
492
  //#endregion
482
493
  //#region morghulis/library/use-socket-callback/index.ts
483
- function Ln(e, t) {
484
- let { data: n } = In();
494
+ function zn(e, t) {
495
+ let { data: n } = Rn();
485
496
  H(() => n, () => {
486
497
  let r = on(n.value || {}), i = r.__tag__;
487
498
  delete r.__tag__, delete r.__timestamp__, i === e && t(r);
@@ -489,17 +500,17 @@ function Ln(e, t) {
489
500
  }
490
501
  //#endregion
491
502
  //#region morghulis/library/use-channel/index.ts
492
- function Rn(e) {
503
+ function Bn(e) {
493
504
  let t = zt(e), { mount: n, unmount: r } = Pn();
494
505
  P(() => n(t.value)), Pt(() => r(t.value));
495
- 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));
496
507
  function u(e) {
497
508
  let { handler: n, token: r } = t.value, a = `valar/channel/${n}/${r}`;
498
509
  c.value = !0, s.value = null, i(a, e).then().catch((e) => {
499
510
  l(`Channel Error: ${e.code}`), c.value = !1, s.value = null;
500
511
  });
501
512
  }
502
- return Ln("channel", (e) => {
513
+ return zn("channel", (e) => {
503
514
  let n = ["handler", "token"];
504
515
  if (!un(pn(e, n), pn(t.value, n))) return;
505
516
  let r = e.callback;
@@ -518,7 +529,7 @@ function Rn(e) {
518
529
  }
519
530
  //#endregion
520
531
  //#region morghulis/library/use-dao/consts.ts
521
- var Z = {
532
+ var X = {
522
533
  insert_one: "insert_one",
523
534
  save_one: "save_one",
524
535
  sync_save_many: "sync_save_many",
@@ -537,7 +548,7 @@ var Z = {
537
548
  };
538
549
  //#endregion
539
550
  //#region morghulis/library/use-dao/methods.ts
540
- function zn(e, t = 0) {
551
+ function Vn(e, t = 0) {
541
552
  let n = Object.fromEntries(e.map((e) => (e.children = [], [e.id, e]))), r = t || 0, i = n[r] ?? {
542
553
  id: r,
543
554
  children: []
@@ -554,8 +565,8 @@ function zn(e, t = 0) {
554
565
  }
555
566
  //#endregion
556
567
  //#region morghulis/library/use-meta-query/methods.ts
557
- function Bn(e) {
558
- let t = Wn.find((t) => e.endsWith(`__${t}`));
568
+ function Hn(e) {
569
+ let t = Kn.find((t) => e.endsWith(`__${t}`));
559
570
  return t ? {
560
571
  prop: e.replace(`__${t}`, ""),
561
572
  collation: t
@@ -564,7 +575,7 @@ function Bn(e) {
564
575
  collation: null
565
576
  };
566
577
  }
567
- function Vn(e = {}, t) {
578
+ function Un(e = {}, t) {
568
579
  let n = /\${(.*?)}/, r = Object.entries(e).map(([e, r]) => {
569
580
  if (typeof r == "string") {
570
581
  let e = r.match(n);
@@ -574,21 +585,21 @@ function Vn(e = {}, t) {
574
585
  });
575
586
  return Object.fromEntries(r);
576
587
  }
577
- function Hn(e, t) {
588
+ function Wn(e, t) {
578
589
  return Object.keys(e || {}).filter((e) => {
579
- let { prop: n } = Bn(e);
590
+ let { prop: n } = Hn(e);
580
591
  return n === t;
581
592
  });
582
593
  }
583
- function Un(e) {
594
+ function Gn(e) {
584
595
  if (!e) return {};
585
596
  let t = Object.entries(e).map(([e, t]) => {
586
- let { prop: n, collation: r } = Bn(e);
597
+ let { prop: n, collation: r } = Hn(e);
587
598
  return r ? [e, t] : [`${n}__exact`, t];
588
599
  });
589
600
  return Object.fromEntries(t);
590
601
  }
591
- var Wn = [
602
+ var Kn = [
592
603
  "contains",
593
604
  "exact",
594
605
  "startswith",
@@ -605,8 +616,8 @@ var Wn = [
605
616
  "in",
606
617
  "range"
607
618
  ];
608
- function Gn(e, t) {
609
- let { code: n, $entity: r, $name: i, name: a, id: o, $tree: s, $$modes: c } = e, l = Kn(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);
610
621
  return {
611
622
  entity: r,
612
623
  code: n,
@@ -616,10 +627,10 @@ function Gn(e, t) {
616
627
  tree: s,
617
628
  model: c,
618
629
  control: l,
619
- fields: qn(e.$$fields, l, t)
630
+ fields: Yn(e.$$fields, l, t)
620
631
  };
621
632
  }
622
- function Kn(e, t) {
633
+ function Jn(e, t) {
623
634
  let n = t?.disabled || e.disabled, r = !n && !!e.allow_edit;
624
635
  return {
625
636
  disabled: n,
@@ -635,7 +646,7 @@ function Kn(e, t) {
635
646
  allow_edit_on_sort: r && !!e.allow_edit_on_sort
636
647
  };
637
648
  }
638
- function qn(e, t, n) {
649
+ function Yn(e, t, n) {
639
650
  return e.map((e) => {
640
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;
641
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;
@@ -643,8 +654,8 @@ function qn(e, t, n) {
643
654
  }
644
655
  //#endregion
645
656
  //#region morghulis/library/use-dao/index.ts
646
- function Q(e, t) {
647
- let n = zt(e), r = zt(t || {}), i = an(), { execute: a, payload: o, loading: s, post: c } = Rn(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(() => {
648
659
  let { onStart: e, onError: t, onProceed: a, onResponse: o, onStop: s, auth: c } = r.value;
649
660
  return {
650
661
  handler: `batch/${n.value}`,
@@ -672,31 +683,31 @@ function Q(e, t) {
672
683
  entity: n,
673
684
  manager: {
674
685
  insert_one(e) {
675
- return l(Z.insert_one, e);
686
+ return l(X.insert_one, e);
676
687
  },
677
688
  save_one(e) {
678
- return l(Z.save_one, e);
689
+ return l(X.save_one, e);
679
690
  },
680
691
  sync_save_many(e) {
681
- return l(Z.sync_save_many, e);
692
+ return l(X.sync_save_many, e);
682
693
  },
683
694
  delete_one(e) {
684
- return l(Z.delete_one, e);
695
+ return l(X.delete_one, e);
685
696
  },
686
697
  sync_delete_many(e) {
687
- return l(Z.sync_delete_many, e);
698
+ return l(X.sync_delete_many, e);
688
699
  },
689
700
  fetch(e) {
690
- return e ? l(Z.fetch, e) : new Promise((e) => e(null));
701
+ return e ? l(X.fetch, e) : new Promise((e) => e(null));
691
702
  },
692
703
  find_one(e) {
693
- return l(Z.find_one, e);
704
+ return l(X.find_one, e);
694
705
  },
695
706
  find(e) {
696
- return l(Z.find, e);
707
+ return l(X.find, e);
697
708
  },
698
709
  values(e, t) {
699
- return l(Z.values, {
710
+ return l(X.values, {
700
711
  props: e,
701
712
  ...t
702
713
  });
@@ -707,7 +718,7 @@ function Q(e, t) {
707
718
  mapping: {},
708
719
  total: 0
709
720
  };
710
- let o = await l(`${Z.search}/${a}`, {
721
+ let o = await l(`${X.search}/${a}`, {
711
722
  ...e,
712
723
  size: t,
713
724
  page: i,
@@ -717,32 +728,32 @@ function Q(e, t) {
717
728
  },
718
729
  tree: (e, t = 0, n = "default") => {
719
730
  e ||= {};
720
- let i = `${Z.search}/${n}`;
731
+ let i = `${X.search}/${n}`;
721
732
  return new Promise((n, a) => {
722
733
  l(i, {
723
734
  ...e,
724
735
  root: t,
725
736
  type: "tree"
726
737
  }).then((e) => {
727
- let i = zn(e.results, t), a = r.value.convertor;
738
+ let i = Vn(e.results, t), a = r.value.convertor;
728
739
  a && Object.values(i.mapping).forEach((e) => a(e)), n(i);
729
740
  }).catch((e) => a(e));
730
741
  });
731
742
  },
732
743
  sync_update_many(e, t) {
733
- return l(Z.sync_update_many, {
744
+ return l(X.sync_update_many, {
734
745
  template: e,
735
746
  ...t
736
747
  });
737
748
  },
738
749
  save_many: (e) => {
739
- u(Z.save_many, e);
750
+ u(X.save_many, e);
740
751
  },
741
752
  delete_many: (e) => {
742
- u(Z.delete_many, e);
753
+ u(X.delete_many, e);
743
754
  },
744
755
  update_many: (e, t) => {
745
- u(Z.update_many, {
756
+ u(X.update_many, {
746
757
  template: e,
747
758
  ...t
748
759
  });
@@ -752,11 +763,11 @@ function Q(e, t) {
752
763
  currentId: t,
753
764
  items: e
754
765
  };
755
- u(Z.sorting, n);
766
+ u(X.sorting, n);
756
767
  },
757
768
  async meta(e) {
758
769
  if (!n.value) throw Error("未指定实体,无法读取元数据");
759
- return Gn(await c(`valar/${n.value}/${e || "default"}/meta_view`));
770
+ return qn(await c(`valar/${n.value}/${e || "default"}/meta_view`));
760
771
  }
761
772
  },
762
773
  payload: o,
@@ -765,7 +776,7 @@ function Q(e, t) {
765
776
  }
766
777
  //#endregion
767
778
  //#region morghulis/library/use-meta-query/consts.ts
768
- var Jn = [
779
+ var Xn = [
769
780
  ".xls",
770
781
  ".xlsx",
771
782
  ".doc",
@@ -785,7 +796,7 @@ var Jn = [
785
796
  ".zip",
786
797
  ".rar",
787
798
  ".exe"
788
- ], Yn = {
799
+ ], Zn = {
789
800
  year: {
790
801
  label: "年度",
791
802
  value: "YYYY"
@@ -834,7 +845,7 @@ var Jn = [
834
845
  label: "时间",
835
846
  value: "HH:mm:ss"
836
847
  }
837
- }, Xn = {
848
+ }, Qn = {
838
849
  multiple: [
839
850
  "ManyToManyField",
840
851
  "ManyToManyRel",
@@ -881,11 +892,11 @@ var Jn = [
881
892
  };
882
893
  //#endregion
883
894
  //#region morghulis/library/use-meta-query/index.ts
884
- function Zn(e) {
895
+ function $n(e) {
885
896
  let t = I({}), n = I(e.value.orders ?? { sort: -1 }), r = T(() => {
886
897
  let t = Object.entries(e.value.includes || {}).filter((e) => !e[0].includes("__"));
887
898
  return Object.fromEntries(t);
888
- }), { post: i } = X(), a = I(), o = 0, s = !1;
899
+ }), { post: i } = Y(), a = I(), o = 0, s = !1;
889
900
  Nt(() => {
890
901
  s = !0, o++;
891
902
  });
@@ -905,12 +916,12 @@ function Zn(e) {
905
916
  let i = {
906
917
  disabled: !!e.value.disabled,
907
918
  restricted: {
908
- unsearchable: Object.keys(e.value.includes || {}).map((e) => Bn(e).prop),
919
+ unsearchable: Object.keys(e.value.includes || {}).map((e) => Hn(e).prop),
909
920
  uneditable: Object.keys(r.value),
910
921
  unorderable: un(n, { sort: -1 })
911
922
  }
912
923
  };
913
- return Gn(t.data, i);
924
+ return qn(t.data, i);
914
925
  });
915
926
  async function l() {
916
927
  if (s) return;
@@ -941,14 +952,14 @@ function Zn(e) {
941
952
  init: l,
942
953
  conditions: T(() => {
943
954
  let { includes: n, excludes: r } = e.value;
944
- return n = Un(n), r = Un(r), [fn({
955
+ return n = Gn(n), r = Gn(r), [fn({
945
956
  includes: n,
946
957
  excludes: r
947
- }, Qn(t.value, c.value?.fields)), ...e.value.conditions || []];
958
+ }, er(t.value, c.value?.fields)), ...e.value.conditions || []];
948
959
  })
949
960
  };
950
961
  }
951
- function Qn(e, t = []) {
962
+ function er(e, t = []) {
952
963
  let n = {
953
964
  includes: {},
954
965
  excludes: {}
@@ -959,10 +970,10 @@ function Qn(e, t = []) {
959
970
  let s = n[i], c = t.find((t) => t.prop === e);
960
971
  if (!c) return;
961
972
  let { domain: l, refer: { label: u } } = c;
962
- if (Xn.linkage.includes(l)) {
973
+ if (Qn.linkage.includes(l)) {
963
974
  let t = `${`${e.replace("_id", "")}__${u}`}__${a}`;
964
975
  s[t] = o;
965
- } else if (Xn.multiple.includes(l)) {
976
+ } else if (Qn.multiple.includes(l)) {
966
977
  let t = `${`${e}__${u}`}__${a}`;
967
978
  s[t] = o;
968
979
  } else {
@@ -973,7 +984,7 @@ function Qn(e, t = []) {
973
984
  }
974
985
  //#endregion
975
986
  //#region morghulis/library/use-valar/index.ts
976
- function $n(e, t) {
987
+ function tr(e, t) {
977
988
  let n = I(), r = I(), i = I({
978
989
  results: [],
979
990
  total: 0,
@@ -986,7 +997,7 @@ function $n(e, t) {
986
997
  Nt(() => {
987
998
  c = !0, s++;
988
999
  });
989
- let { finder: l, orders: u, core: d, meta: f, init: p, conditions: m } = Zn(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), {
990
1001
  convertor: e.value.convertor,
991
1002
  onStart: () => {
992
1003
  n.value = void 0, r.value = null;
@@ -1133,10 +1144,10 @@ function $n(e, t) {
1133
1144
  }
1134
1145
  //#endregion
1135
1146
  //#region morghulis/components/tree/tools/DTreeNode.vue?vue&type=script&setup=true&lang.ts
1136
- var er = {
1147
+ var nr = {
1137
1148
  key: 0,
1138
1149
  class: "danger"
1139
- }, tr = /* @__PURE__ */ M({
1150
+ }, rr = /* @__PURE__ */ M({
1140
1151
  __name: "DTreeNode",
1141
1152
  props: {
1142
1153
  node: {},
@@ -1176,9 +1187,9 @@ var er = {
1176
1187
  "icon",
1177
1188
  "type",
1178
1189
  "shake"
1179
- ])), k("span", null, [(F(!0), O(w, null, L(i.value, (t, n) => (F(), O(w, { key: n }, [n > 0 ? (F(), O("u", er, 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));
1180
1191
  }
1181
- }), nr = /* @__PURE__ */ M({
1192
+ }), ir = /* @__PURE__ */ M({
1182
1193
  __name: "MPopover",
1183
1194
  props: {
1184
1195
  title: {},
@@ -1253,7 +1264,7 @@ var er = {
1253
1264
  ])], 64);
1254
1265
  };
1255
1266
  }
1256
- }), rr = /* @__PURE__ */ M({
1267
+ }), ar = /* @__PURE__ */ M({
1257
1268
  __name: "CharCell",
1258
1269
  props: {
1259
1270
  modelValue: {},
@@ -1290,7 +1301,7 @@ var er = {
1290
1301
  ]);
1291
1302
  };
1292
1303
  }
1293
- }), ir = { class: "full" }, ar = /*#__PURE__*/ wn(/* @__PURE__ */ M({
1304
+ }), or = { class: "full" }, sr = /*#__PURE__*/ wn(/* @__PURE__ */ M({
1294
1305
  __name: "ColorCell",
1295
1306
  props: {
1296
1307
  modelValue: {},
@@ -1328,7 +1339,7 @@ var er = {
1328
1339
  span: 9,
1329
1340
  align: "center"
1330
1341
  }, {
1331
- default: U(() => [k("div", ir, [k("b", {
1342
+ default: U(() => [k("div", or, [k("b", {
1332
1343
  class: "color-pick-label",
1333
1344
  style: jt({ color: V(n) || "#dddddd" }),
1334
1345
  onClick: a
@@ -1339,7 +1350,7 @@ var er = {
1339
1350
  });
1340
1351
  };
1341
1352
  }
1342
- }), [["__scopeId", "data-v-b4e1f98e"]]), or = /* @__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("."), sr = { class: "justified" }, cr = /* @__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({
1343
1354
  __name: "IconCell",
1344
1355
  props: {
1345
1356
  modelValue: {},
@@ -1353,7 +1364,7 @@ var er = {
1353
1364
  "reload"
1354
1365
  ],
1355
1366
  setup(e, { emit: t }) {
1356
- let n = W(e, "modelValue", t), r = I(or.map((e) => ({ value: e }))), i = (e, t) => {
1367
+ let n = W(e, "modelValue", t), r = I(cr.map((e) => ({ value: e }))), i = (e, t) => {
1357
1368
  t(e ? r.value.filter(a(e)) : r.value.slice(0, 100));
1358
1369
  }, a = (e) => (t) => t.value.toLowerCase().indexOf(e.toLowerCase()) === 0;
1359
1370
  return (t, r) => {
@@ -1366,7 +1377,7 @@ var er = {
1366
1377
  "fetch-suggestions": i,
1367
1378
  onChange: r[1] ||= (e) => V(n).value = e.value
1368
1379
  }, Tt({
1369
- default: U(({ item: e }) => [k("div", sr, [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"])])]),
1370
1381
  _: 2
1371
1382
  }, [V(n) ? {
1372
1383
  name: "prefix",
@@ -1375,7 +1386,7 @@ var er = {
1375
1386
  } : void 0]), 1032, ["modelValue", "disabled"]);
1376
1387
  };
1377
1388
  }
1378
- }), lr = /* @__PURE__ */ M({
1389
+ }), dr = /* @__PURE__ */ M({
1379
1390
  __name: "MultiSetCell",
1380
1391
  props: {
1381
1392
  modelValue: {},
@@ -1415,7 +1426,7 @@ var er = {
1415
1426
  }, 8, ["disabled", "modelValue"]);
1416
1427
  };
1417
1428
  }
1418
- }), ur = /* @__PURE__ */ M({
1429
+ }), fr = /* @__PURE__ */ M({
1419
1430
  __name: "SetCell",
1420
1431
  props: {
1421
1432
  modelValue: {},
@@ -1453,7 +1464,7 @@ var er = {
1453
1464
  }, 8, ["disabled", "modelValue"]);
1454
1465
  };
1455
1466
  }
1456
- }), dr = ",", fr = /* @__PURE__ */ M({
1467
+ }), pr = ",", mr = /* @__PURE__ */ M({
1457
1468
  __name: "DateArrayCell",
1458
1469
  props: {
1459
1470
  modelValue: {},
@@ -1470,11 +1481,11 @@ var er = {
1470
1481
  let n = e, r = W(n, "modelValue", t), i = I([]);
1471
1482
  P(() => {
1472
1483
  let e = String(r.value);
1473
- i.value = e.split(dr);
1484
+ i.value = e.split(pr);
1474
1485
  });
1475
1486
  function a(e) {
1476
1487
  let t = new Set(Object.values(e));
1477
- r.value = [...t].sort().join(dr);
1488
+ r.value = [...t].sort().join(pr);
1478
1489
  }
1479
1490
  let o = [
1480
1491
  "years",
@@ -1483,7 +1494,7 @@ var er = {
1483
1494
  ], s = T(() => {
1484
1495
  let e = n.field.format?.frequency || "dates";
1485
1496
  return o.includes(e) ? e : "dates";
1486
- }), c = T(() => Yn[s.value].value || "YYYY-MM-DD");
1497
+ }), c = T(() => Zn[s.value].value || "YYYY-MM-DD");
1487
1498
  return (t, n) => {
1488
1499
  let r = z("el-date-picker");
1489
1500
  return F(), E(r, {
@@ -1506,7 +1517,7 @@ var er = {
1506
1517
  ]);
1507
1518
  };
1508
1519
  }
1509
- }), pr = /* @__PURE__ */ M({
1520
+ }), hr = /* @__PURE__ */ M({
1510
1521
  __name: "DateCell",
1511
1522
  props: {
1512
1523
  modelValue: {},
@@ -1535,7 +1546,7 @@ var er = {
1535
1546
  default: return "date";
1536
1547
  }
1537
1548
  }), o = T(() => {
1538
- let { value: e } = Yn[a.value] || {};
1549
+ let { value: e } = Zn[a.value] || {};
1539
1550
  return e || "YYYY-MM-DD";
1540
1551
  });
1541
1552
  return (t, n) => {
@@ -1558,7 +1569,7 @@ var er = {
1558
1569
  ]);
1559
1570
  };
1560
1571
  }
1561
- }), mr = " ~ ", hr = /* @__PURE__ */ M({
1572
+ }), gr = " ~ ", _r = /* @__PURE__ */ M({
1562
1573
  __name: "DateRangeCell",
1563
1574
  props: {
1564
1575
  modelValue: {},
@@ -1574,11 +1585,11 @@ var er = {
1574
1585
  setup(e, { emit: t }) {
1575
1586
  let n = e, r = W(n, "modelValue", t), i = I([]);
1576
1587
  function a(e) {
1577
- r.value = i.value.join(mr);
1588
+ r.value = i.value.join(gr);
1578
1589
  }
1579
1590
  P(() => {
1580
1591
  let e = String(r.value);
1581
- i.value = e.split(mr);
1592
+ i.value = e.split(gr);
1582
1593
  });
1583
1594
  let o = [
1584
1595
  "monthrange",
@@ -1587,7 +1598,7 @@ var er = {
1587
1598
  ], s = T(() => {
1588
1599
  let e = n.field.format?.frequency || "daterange";
1589
1600
  return o.includes(e) ? e : "daterange";
1590
- }), c = T(() => Yn[s.value].value || "YYYY-MM-DD");
1601
+ }), c = T(() => Zn[s.value].value || "YYYY-MM-DD");
1591
1602
  return (t, n) => {
1592
1603
  let r = z("el-date-picker"), o = z("el-space");
1593
1604
  return F(), E(o, null, {
@@ -1617,12 +1628,12 @@ var er = {
1617
1628
  });
1618
1629
  //#endregion
1619
1630
  //#region morghulis/components/cell/instances/date/methods.ts
1620
- function gr(e) {
1631
+ function vr(e) {
1621
1632
  return /^([0-9]|1\d|2[0-3]):[0-5]\d:[0-5]\d$/.test(e);
1622
1633
  }
1623
1634
  //#endregion
1624
1635
  //#region morghulis/components/cell/instances/date/TimeCell.vue
1625
- var _r = /* @__PURE__ */ M({
1636
+ var yr = /* @__PURE__ */ M({
1626
1637
  __name: "TimeCell",
1627
1638
  props: {
1628
1639
  modelValue: {},
@@ -1638,7 +1649,7 @@ var _r = /* @__PURE__ */ M({
1638
1649
  setup(e, { emit: t }) {
1639
1650
  let n = W(e, "modelValue", t), r = I();
1640
1651
  P(() => {
1641
- gr(String(n.value)) && (r.value = n.value);
1652
+ vr(String(n.value)) && (r.value = n.value);
1642
1653
  });
1643
1654
  function i(e) {
1644
1655
  n.value = r.value;
@@ -1661,7 +1672,7 @@ var _r = /* @__PURE__ */ M({
1661
1672
  ]);
1662
1673
  };
1663
1674
  }
1664
- }), vr = /* @__PURE__ */ M({
1675
+ }), br = /* @__PURE__ */ M({
1665
1676
  __name: "TimeRangeCell",
1666
1677
  props: {
1667
1678
  modelValue: {},
@@ -1678,7 +1689,7 @@ var _r = /* @__PURE__ */ M({
1678
1689
  let n = W(e, "modelValue", t), r = I([]);
1679
1690
  P(() => {
1680
1691
  let e = String(n.value).split(" - ");
1681
- e.length === 2 && gr(e[0]) && gr(e[1]) && (r.value = e);
1692
+ e.length === 2 && vr(e[0]) && vr(e[1]) && (r.value = e);
1682
1693
  });
1683
1694
  function i(e) {
1684
1695
  n.value = r.value.join(" - ");
@@ -1709,7 +1720,7 @@ var _r = /* @__PURE__ */ M({
1709
1720
  });
1710
1721
  //#endregion
1711
1722
  //#region morghulis/components/cell/instances/refer/hooks.ts
1712
- function yr(e, t) {
1723
+ function xr(e, t) {
1713
1724
  let n = e.refer, r = {
1714
1725
  entity: n.entity || "",
1715
1726
  clearable: !e.not_null,
@@ -1722,7 +1733,7 @@ function yr(e, t) {
1722
1733
  display: n.display || "id"
1723
1734
  };
1724
1735
  function a(e) {
1725
- let { label: r } = n, i = e ? Object.fromEntries([[r, 1]]) : { sort: -1 }, a = Vn(n.includes, t), o = Vn(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);
1726
1737
  return e && (a[`${r}__icontains`] = e), {
1727
1738
  includes: a,
1728
1739
  excludes: o,
@@ -1743,7 +1754,7 @@ function yr(e, t) {
1743
1754
  };
1744
1755
  Object.assign(e, s);
1745
1756
  }
1746
- 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(() => ({
1747
1758
  type: ["tree", "cascade"].includes(e.tool) && n.is_tree ? "tree" : "table",
1748
1759
  size: ["auto"].includes(e.tool) ? 10 : 0,
1749
1760
  root: n.root,
@@ -1771,10 +1782,10 @@ function yr(e, t) {
1771
1782
  }
1772
1783
  //#endregion
1773
1784
  //#region morghulis/components/cell/instances/refer/AutoCell.vue?vue&type=script&setup=true&lang.ts
1774
- var br = {
1785
+ var Sr = {
1775
1786
  key: 0,
1776
1787
  style: { "margin-bottom": "10px" }
1777
- }, xr = { class: "justified" }, Sr = /* @__PURE__ */ M({
1788
+ }, Cr = { class: "justified" }, wr = /* @__PURE__ */ M({
1778
1789
  __name: "AutoCell",
1779
1790
  props: {
1780
1791
  modelValue: {},
@@ -1788,7 +1799,7 @@ var br = {
1788
1799
  "reload"
1789
1800
  ],
1790
1801
  setup(e, { emit: t }) {
1791
- let n = e, r = W(n, "modelValue", t), { param: i, list: a, conditional: o } = yr(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) => {
1792
1803
  a(e).then((e) => t(e.map(({ label: e }) => ({
1793
1804
  value: e,
1794
1805
  label: e
@@ -1796,7 +1807,7 @@ var br = {
1796
1807
  };
1797
1808
  return (t, n) => {
1798
1809
  let a = z("el-tooltip"), c = z("el-text"), l = z("el-autocomplete");
1799
- return F(), O(w, null, [e.field.refer.entity ? D("", !0) : (F(), O("div", br, [j(G, {
1810
+ return F(), O(w, null, [e.field.refer.entity ? D("", !0) : (F(), O("div", Sr, [j(G, {
1800
1811
  icon: "unlink",
1801
1812
  type: "danger"
1802
1813
  }, {
@@ -1811,7 +1822,7 @@ var br = {
1811
1822
  "hide-loading": "",
1812
1823
  "popper-append-to-body": ""
1813
1824
  }, Tt({
1814
- default: U(({ item: e }) => [k("div", xr, [j(c, { size: "small" }, {
1825
+ default: U(({ item: e }) => [k("div", Cr, [j(c, { size: "small" }, {
1815
1826
  default: U(() => [A(B(e.label), 1)]),
1816
1827
  _: 2
1817
1828
  }, 1024), j(c, {
@@ -1833,7 +1844,7 @@ var br = {
1833
1844
  } : void 0]), 1032, ["modelValue", "disabled"])], 64);
1834
1845
  };
1835
1846
  }
1836
- }), Cr = /* @__PURE__ */ M({
1847
+ }), Tr = /* @__PURE__ */ M({
1837
1848
  __name: "CascadeCell",
1838
1849
  props: {
1839
1850
  modelValue: {},
@@ -1847,7 +1858,7 @@ var br = {
1847
1858
  "reload"
1848
1859
  ],
1849
1860
  setup(e, { emit: t }) {
1850
- let n = e, r = W(n, "modelValue", t), { loading: i, param: a, tree: o, conditional: s } = yr(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 = {
1851
1862
  emitPath: !1,
1852
1863
  checkStrictly: a.strict,
1853
1864
  multiple: a.multiple
@@ -1902,7 +1913,7 @@ var br = {
1902
1913
  ])])), [[u]]);
1903
1914
  };
1904
1915
  }
1905
- }), wr = /* @__PURE__ */ M({
1916
+ }), Er = /* @__PURE__ */ M({
1906
1917
  __name: "SelectCell",
1907
1918
  props: {
1908
1919
  modelValue: {},
@@ -1916,7 +1927,7 @@ var br = {
1916
1927
  "reload"
1917
1928
  ],
1918
1929
  setup(e, { emit: t }) {
1919
- let n = e, r = W(n, "modelValue", t), { loading: i, param: a, list: o, conditional: s } = yr(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([]);
1920
1931
  return P(async () => c.value = await o()), (t, n) => {
1921
1932
  let o = z("el-tooltip"), l = z("el-select"), u = It("loading");
1922
1933
  return Ut((F(), E(l, {
@@ -1956,7 +1967,7 @@ var br = {
1956
1967
  ])), [[u, V(i)]]);
1957
1968
  };
1958
1969
  }
1959
- }), Tr = { class: "full center" }, Er = /* @__PURE__ */ M({
1970
+ }), Dr = { class: "full center" }, Or = /* @__PURE__ */ M({
1960
1971
  __name: "MTransferEditor",
1961
1972
  props: {
1962
1973
  modelValue: {},
@@ -1975,7 +1986,7 @@ var br = {
1975
1986
  })));
1976
1987
  return P(() => {
1977
1988
  if (n.refer?.entity) {
1978
- 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);
1979
1990
  o.values([t], {
1980
1991
  includes: r,
1981
1992
  excludes: a
@@ -1988,7 +1999,7 @@ var br = {
1988
1999
  }
1989
2000
  }), (e, t) => {
1990
2001
  let n = z("el-transfer");
1991
- return F(), O("div", Tr, [j(n, {
2002
+ return F(), O("div", Dr, [j(n, {
1992
2003
  modelValue: V(r),
1993
2004
  "onUpdate:modelValue": t[0] ||= (e) => N(r) ? r.value = e : null,
1994
2005
  data: a.value,
@@ -2001,7 +2012,7 @@ var br = {
2001
2012
  }, 8, ["modelValue", "data"])]);
2002
2013
  };
2003
2014
  }
2004
- }), Dr = /* @__PURE__ */ M({
2015
+ }), kr = /* @__PURE__ */ M({
2005
2016
  __name: "TransferCell",
2006
2017
  props: {
2007
2018
  modelValue: {},
@@ -2015,7 +2026,7 @@ var br = {
2015
2026
  "reload"
2016
2027
  ],
2017
2028
  setup(e, { emit: t }) {
2018
- let n = I(), r = e, i = t, a = W(r, "modelValue", i), { param: o, list: s, conditional: c } = yr(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([]);
2019
2030
  return P(async () => l.value = await s()), (t, r) => {
2020
2031
  let o = z("el-button");
2021
2032
  return F(), O(w, null, [j(o, {
@@ -2036,7 +2047,7 @@ var br = {
2036
2047
  width: 600,
2037
2048
  confirm: () => i("confirm")
2038
2049
  }, Tt({
2039
- default: U(() => [j(Er, {
2050
+ default: U(() => [j(Or, {
2040
2051
  modelValue: V(a),
2041
2052
  "onUpdate:modelValue": r[1] ||= (e) => N(a) ? a.value = e : null,
2042
2053
  disabled: e.disabled,
@@ -2057,7 +2068,7 @@ var br = {
2057
2068
  } : void 0]), 1032, ["confirm"])], 64);
2058
2069
  };
2059
2070
  }
2060
- }), Or = /* @__PURE__ */ M({
2071
+ }), Ar = /* @__PURE__ */ M({
2061
2072
  __name: "TreeCell",
2062
2073
  props: {
2063
2074
  modelValue: {},
@@ -2071,7 +2082,7 @@ var br = {
2071
2082
  "reload"
2072
2083
  ],
2073
2084
  setup(e, { emit: t }) {
2074
- let n = e, r = W(n, "modelValue", t), { loading: i, param: a, tree: o, conditional: s } = yr(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([]);
2075
2086
  return P(async () => c.value = await o()), (t, n) => {
2076
2087
  let o = z("el-tooltip"), l = z("el-tree-select"), u = It("loading");
2077
2088
  return Ut((F(), E(l, {
@@ -2126,7 +2137,7 @@ var br = {
2126
2137
  ])), [[u, V(i)]]);
2127
2138
  };
2128
2139
  }
2129
- }), kr = /* @__PURE__ */ M({
2140
+ }), jr = /* @__PURE__ */ M({
2130
2141
  __name: "BooleanCell",
2131
2142
  props: {
2132
2143
  modelValue: {},
@@ -2178,7 +2189,7 @@ var br = {
2178
2189
  }, 8, ["modelValue", "disabled"]));
2179
2190
  };
2180
2191
  }
2181
- }), Ar = /*#__PURE__*/ wn(/* @__PURE__ */ M({
2192
+ }), Mr = /*#__PURE__*/ wn(/* @__PURE__ */ M({
2182
2193
  __name: "DefaultCell",
2183
2194
  props: {
2184
2195
  modelValue: {},
@@ -2206,7 +2217,7 @@ var br = {
2206
2217
  _: 1
2207
2218
  }));
2208
2219
  }
2209
- }), [["__scopeId", "data-v-ed36133d"]]), jr = /* @__PURE__ */ M({
2220
+ }), [["__scopeId", "data-v-ed36133d"]]), Nr = /* @__PURE__ */ M({
2210
2221
  __name: "NumberCell",
2211
2222
  props: {
2212
2223
  modelValue: {},
@@ -2259,7 +2270,15 @@ var br = {
2259
2270
  ]);
2260
2271
  };
2261
2272
  }
2262
- }), Mr = /* @__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({
2263
2282
  __name: "FileCell",
2264
2283
  props: {
2265
2284
  modelValue: {},
@@ -2273,14 +2292,14 @@ var br = {
2273
2292
  "reload"
2274
2293
  ],
2275
2294
  setup(e, { emit: t }) {
2276
- 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 } = Pa();
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();
2277
2296
  function u() {
2278
2297
  let { format: { locked: e } } = n.field;
2279
2298
  if (e) o.warning("抱歉,该文件不支持下载!请在线预览。");
2280
2299
  else if (!i.value) o.warning("无文件");
2281
2300
  else {
2282
- let e = `${l.value}${i.value}`;
2283
- console.log(e), window.open(e, "_blank");
2301
+ let e = Pr(l.value, i.value);
2302
+ window.open(e, "_blank");
2284
2303
  }
2285
2304
  }
2286
2305
  let d = I(), f = n.field.format || {}, p = {
@@ -2364,7 +2383,7 @@ var br = {
2364
2383
  })], 64);
2365
2384
  };
2366
2385
  }
2367
- }), Nr = /* @__PURE__ */ M({
2386
+ }), Ir = /* @__PURE__ */ M({
2368
2387
  __name: "MObjectEditor",
2369
2388
  props: {
2370
2389
  modelValue: {},
@@ -2392,7 +2411,7 @@ var br = {
2392
2411
  });
2393
2412
  };
2394
2413
  }
2395
- }), Pr = /* @__PURE__ */ M({
2414
+ }), Lr = /* @__PURE__ */ M({
2396
2415
  __name: "ObjectCell",
2397
2416
  props: {
2398
2417
  modelValue: {},
@@ -2429,7 +2448,7 @@ var br = {
2429
2448
  title: "对象编辑器",
2430
2449
  confirm: () => r("confirm")
2431
2450
  }, {
2432
- default: U(() => [j(Nr, {
2451
+ default: U(() => [j(Ir, {
2433
2452
  modelValue: V(i),
2434
2453
  "onUpdate:modelValue": n[0] ||= (e) => N(i) ? i.value = e : null,
2435
2454
  disabled: e.disabled
@@ -2438,7 +2457,7 @@ var br = {
2438
2457
  }, 8, ["confirm"])], 64);
2439
2458
  };
2440
2459
  }
2441
- }), Fr = /* @__PURE__ */ M({
2460
+ }), Rr = /* @__PURE__ */ M({
2442
2461
  __name: "MRichEditor",
2443
2462
  props: {
2444
2463
  modelValue: {},
@@ -2465,7 +2484,7 @@ var br = {
2465
2484
  "read-only"
2466
2485
  ]));
2467
2486
  }
2468
- }), Ir = /* @__PURE__ */ M({
2487
+ }), zr = /* @__PURE__ */ M({
2469
2488
  __name: "RichCell",
2470
2489
  props: {
2471
2490
  modelValue: {},
@@ -2503,7 +2522,7 @@ var br = {
2503
2522
  width: "800",
2504
2523
  confirm: () => r("confirm")
2505
2524
  }, {
2506
- default: U(() => [j(Fr, {
2525
+ default: U(() => [j(Rr, {
2507
2526
  modelValue: V(i),
2508
2527
  "onUpdate:modelValue": n[0] ||= (e) => N(i) ? i.value = e : null,
2509
2528
  disabled: e.disabled
@@ -2512,7 +2531,7 @@ var br = {
2512
2531
  }, 8, ["confirm"])], 64);
2513
2532
  };
2514
2533
  }
2515
- }), Lr = /* @__PURE__ */ M({
2534
+ }), Br = /* @__PURE__ */ M({
2516
2535
  __name: "MCell",
2517
2536
  props: {
2518
2537
  modelValue: {},
@@ -2532,27 +2551,27 @@ var br = {
2532
2551
  let { tool: e, format: t } = i.field;
2533
2552
  switch (e) {
2534
2553
  case "boolean":
2535
- case "switch": return kr;
2536
- case "number": return jr;
2554
+ case "switch": return jr;
2555
+ case "number": return Nr;
2537
2556
  case "text":
2538
- case "textarea": return rr;
2539
- case "select": return wr;
2540
- case "tree": return Or;
2541
- case "cascade": return Cr;
2542
- case "transfer": return Dr;
2543
- case "rich": return Ir;
2544
- case "object": return Pr;
2545
- case "time": return _r;
2546
- case "date": return pr;
2547
- case "timerange": return vr;
2548
- case "daterange": return hr;
2549
- case "dates": return fr;
2550
- case "file": return Mr;
2551
- case "set": return t.multiple ? lr : ur;
2552
- case "color": return ar;
2553
- case "icon": return cr;
2554
- case "auto": return Sr;
2555
- default: return Ar;
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;
2556
2575
  }
2557
2576
  });
2558
2577
  return (t, n) => s.value ? (F(), E(Lt(s.value), {
@@ -2571,7 +2590,7 @@ var br = {
2571
2590
  "disabled"
2572
2591
  ])) : D("", !0);
2573
2592
  }
2574
- }), Rr = { class: "justified" }, zr = /* @__PURE__ */ M({
2593
+ }), Vr = { class: "justified" }, Hr = /* @__PURE__ */ M({
2575
2594
  __name: "DTreeNodeEdit",
2576
2595
  props: {
2577
2596
  disable_table: { type: Boolean },
@@ -2607,7 +2626,7 @@ var br = {
2607
2626
  let s = z("el-space"), c = z("el-col"), l = z("el-row");
2608
2627
  return F(), E(l, null, {
2609
2628
  default: U(() => [j(c, { class: "right" }, {
2610
- default: U(() => [k("div", Rr, [j(s, { size: 0 }, {
2629
+ default: U(() => [k("div", Vr, [j(s, { size: 0 }, {
2611
2630
  default: U(() => [
2612
2631
  (e.control.allow_edit || e.control.allow_insert) && e.collector.size ? (F(), E(K, {
2613
2632
  key: 0,
@@ -2658,7 +2677,7 @@ var br = {
2658
2677
  key: 0,
2659
2678
  style: { "margin-top": "10px" }
2660
2679
  }, {
2661
- default: U(() => [j(Lr, {
2680
+ default: U(() => [j(Br, {
2662
2681
  field: e.field,
2663
2682
  row: a.value,
2664
2683
  modelValue: a.value[e.field.prop],
@@ -2677,7 +2696,7 @@ var br = {
2677
2696
  });
2678
2697
  };
2679
2698
  }
2680
- }), Br = /* @__PURE__ */ M({
2699
+ }), Ur = /* @__PURE__ */ M({
2681
2700
  __name: "DataWrapper",
2682
2701
  props: {
2683
2702
  loading: { type: Boolean },
@@ -2718,7 +2737,7 @@ var br = {
2718
2737
  } : void 0]), 1536);
2719
2738
  };
2720
2739
  }
2721
- }), Vr = /* @__PURE__ */ M({
2740
+ }), Wr = /* @__PURE__ */ M({
2722
2741
  __name: "DTreeController",
2723
2742
  props: {
2724
2743
  unrestricted: { type: Boolean },
@@ -2780,7 +2799,7 @@ var br = {
2780
2799
  });
2781
2800
  };
2782
2801
  }
2783
- }), Hr = /* @__PURE__ */ M({
2802
+ }), Gr = /* @__PURE__ */ M({
2784
2803
  __name: "PluginColumnContent",
2785
2804
  props: {
2786
2805
  data: {},
@@ -2800,7 +2819,7 @@ var br = {
2800
2819
  invoke: n
2801
2820
  }, null, 8, ["data", "param"]));
2802
2821
  }
2803
- }), Ur = /*#__PURE__*/ wn(/* @__PURE__ */ M({
2822
+ }), Kr = /*#__PURE__*/ wn(/* @__PURE__ */ M({
2804
2823
  __name: "PluginButtonContent",
2805
2824
  props: {
2806
2825
  buttons: {},
@@ -2812,7 +2831,7 @@ var br = {
2812
2831
  setup(e, { emit: t }) {
2813
2832
  let n = e, r = t, i = Vt("actionsRef"), { width: a } = Jt(i);
2814
2833
  H(a, () => r("width", a.value + 15));
2815
- let { buttons: o } = Ja(T(() => n.buttons || []), T(() => n.code), T(() => n.data));
2834
+ let { buttons: o } = Xa(T(() => n.buttons || []), T(() => n.code), T(() => n.data));
2816
2835
  function s(e, t) {
2817
2836
  e.preventDefault(), e.stopPropagation();
2818
2837
  let { data: r, collector: i } = n;
@@ -2856,7 +2875,7 @@ var br = {
2856
2875
  }), [["__scopeId", "data-v-08150db9"]]);
2857
2876
  //#endregion
2858
2877
  //#region morghulis/components/table/hooks/table-sort.ts
2859
- function Wr(e, t) {
2878
+ function qr(e, t) {
2860
2879
  let n = null;
2861
2880
  function r() {
2862
2881
  (e.value?.$el.querySelectorAll("tr.el-table__row")).forEach((e) => {
@@ -2891,7 +2910,7 @@ function Wr(e, t) {
2891
2910
  }
2892
2911
  //#endregion
2893
2912
  //#region morghulis/components/table/tools/DTController.vue
2894
- var Gr = /* @__PURE__ */ M({
2913
+ var Jr = /* @__PURE__ */ M({
2895
2914
  __name: "DTController",
2896
2915
  props: {
2897
2916
  meta: {},
@@ -2982,7 +3001,7 @@ var Gr = /* @__PURE__ */ M({
2982
3001
  });
2983
3002
  };
2984
3003
  }
2985
- }), Kr = {
3004
+ }), Yr = {
2986
3005
  placement: "bottom-end",
2987
3006
  popperClass: "m-table-tooltip",
2988
3007
  enterable: !1,
@@ -2995,7 +3014,7 @@ var Gr = /* @__PURE__ */ M({
2995
3014
  },
2996
3015
  showAfter: 0,
2997
3016
  showArrow: !0
2998
- }, qr = /* @__PURE__ */ M({
3017
+ }, Xr = /* @__PURE__ */ M({
2999
3018
  __name: "DTIndex",
3000
3019
  props: {
3001
3020
  collector: {},
@@ -3043,7 +3062,7 @@ var Gr = /* @__PURE__ */ M({
3043
3062
  });
3044
3063
  };
3045
3064
  }
3046
- }), Jr = { class: "justified" }, Yr = /* @__PURE__ */ M({
3065
+ }), Zr = { class: "justified" }, Qr = /* @__PURE__ */ M({
3047
3066
  __name: "DTHeader",
3048
3067
  props: {
3049
3068
  field: {},
@@ -3060,7 +3079,7 @@ var Gr = /* @__PURE__ */ M({
3060
3079
  setup(e, { emit: t }) {
3061
3080
  let n = t, r = e, i = T(() => {
3062
3081
  let e = r.field.prop;
3063
- return r.finder[e] ? "primary" : Hn(r.includes, e).length ? "warning" : "";
3082
+ return r.finder[e] ? "primary" : Wn(r.includes, e).length ? "warning" : "";
3064
3083
  }), a = T(() => (r.orders || {})[r.field.prop]), o = T(() => a.value === 1 ? "sort-up" : a.value === -1 ? "sort-down" : "sort");
3065
3084
  return (t, r) => {
3066
3085
  let s = z("el-space"), c = z("el-divider");
@@ -3076,7 +3095,7 @@ var Gr = /* @__PURE__ */ M({
3076
3095
  _: 1
3077
3096
  }),
3078
3097
  j(c),
3079
- k("div", Jr, [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, {
3080
3099
  key: 0,
3081
3100
  size: "small",
3082
3101
  icon: "search",
@@ -3099,7 +3118,7 @@ var Gr = /* @__PURE__ */ M({
3099
3118
  ], 64);
3100
3119
  };
3101
3120
  }
3102
- }), Xr = { class: "justified" }, Zr = /* @__PURE__ */ M({
3121
+ }), $r = { class: "justified" }, ei = /* @__PURE__ */ M({
3103
3122
  __name: "DTFooter",
3104
3123
  props: {
3105
3124
  size: {},
@@ -3121,7 +3140,7 @@ var Gr = /* @__PURE__ */ M({
3121
3140
  }));
3122
3141
  return (t, n) => {
3123
3142
  let r = z("el-pagination"), s = z("el-text"), c = z("el-input-number"), l = z("el-space"), u = z("el-select");
3124
- return F(), O("div", Xr, [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 }, {
3125
3144
  default: U(() => [e.width > 600 ? (F(), E(r, {
3126
3145
  key: 0,
3127
3146
  size: "small",
@@ -3190,13 +3209,13 @@ var Gr = /* @__PURE__ */ M({
3190
3209
  })]);
3191
3210
  };
3192
3211
  }
3193
- }), Qr = {
3212
+ }), ti = {
3194
3213
  key: 0,
3195
3214
  class: "search-value"
3196
- }, $r = {
3215
+ }, ni = {
3197
3216
  key: 1,
3198
3217
  class: "search-value"
3199
- }, ei = { class: "search-confirm justified" }, ti = /*#__PURE__*/ wn(/* @__PURE__ */ M({
3218
+ }, ri = { class: "search-confirm justified" }, ii = /*#__PURE__*/ wn(/* @__PURE__ */ M({
3200
3219
  __name: "DTSearch",
3201
3220
  props: {
3202
3221
  field: {},
@@ -3235,13 +3254,13 @@ var Gr = /* @__PURE__ */ M({
3235
3254
  if (t) {
3236
3255
  let e = r.includes?.[t];
3237
3256
  c.value = !0, f.value = !1;
3238
- let { collation: n } = Bn(t);
3257
+ let { collation: n } = Hn(t);
3239
3258
  p.value = n ?? "exact", o.value.value = e;
3240
3259
  }
3241
3260
  }
3242
3261
  }
3243
3262
  P(l);
3244
- let u = T(() => Xn.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(() => [
3245
3264
  {
3246
3265
  label: "基础检索",
3247
3266
  value: "basic",
@@ -3400,7 +3419,7 @@ var Gr = /* @__PURE__ */ M({
3400
3419
  }, 8, ["title"])]),
3401
3420
  _: 1
3402
3421
  }),
3403
- d.value ? (F(), O("div", Qr, [j(b, {
3422
+ d.value ? (F(), O("div", ti, [j(b, {
3404
3423
  modelValue: o.value.value,
3405
3424
  "onUpdate:modelValue": r[2] ||= (e) => o.value.value = e
3406
3425
  }, {
@@ -3412,7 +3431,7 @@ var Gr = /* @__PURE__ */ M({
3412
3431
  label: "否"
3413
3432
  })]),
3414
3433
  _: 1
3415
- }, 8, ["modelValue"])])) : (F(), O("div", $r, [p.value === "isnull" ? (F(), E(b, {
3434
+ }, 8, ["modelValue"])])) : (F(), O("div", ni, [p.value === "isnull" ? (F(), E(b, {
3416
3435
  key: 0,
3417
3436
  disabled: c.value,
3418
3437
  placement: "right-start",
@@ -3453,7 +3472,7 @@ var Gr = /* @__PURE__ */ M({
3453
3472
  onFocus: r[8] ||= () => {},
3454
3473
  placeholder: "检索值"
3455
3474
  }, null, 8, ["modelValue", "disabled"]))])),
3456
- k("div", ei, [k("div", null, [c.value ? (F(), E(G, {
3475
+ k("div", ri, [k("div", null, [c.value ? (F(), E(G, {
3457
3476
  key: 0,
3458
3477
  icon: "lock",
3459
3478
  class: "medium",
@@ -3492,7 +3511,7 @@ var Gr = /* @__PURE__ */ M({
3492
3511
  ], 64);
3493
3512
  };
3494
3513
  }
3495
- }), [["__scopeId", "data-v-0618949d"]]), ni = /* @__PURE__ */ M({
3514
+ }), [["__scopeId", "data-v-0618949d"]]), ai = /* @__PURE__ */ M({
3496
3515
  __name: "DTSaveHeader",
3497
3516
  props: { data: {} },
3498
3517
  setup(e) {
@@ -3522,7 +3541,7 @@ var Gr = /* @__PURE__ */ M({
3522
3541
  });
3523
3542
  };
3524
3543
  }
3525
- }), ri = /*#__PURE__*/ wn(/* @__PURE__ */ M({
3544
+ }), oi = /*#__PURE__*/ wn(/* @__PURE__ */ M({
3526
3545
  __name: "MForm",
3527
3546
  props: {
3528
3547
  original: { default: {} },
@@ -3609,7 +3628,7 @@ var Gr = /* @__PURE__ */ M({
3609
3628
  icon: "refresh"
3610
3629
  }, null, 8, ["onClick"])) : D("", !0)
3611
3630
  ]),
3612
- default: U(() => [j(Lr, {
3631
+ default: U(() => [j(Br, {
3613
3632
  modelValue: a.value[t.prop],
3614
3633
  "onUpdate:modelValue": (e) => a.value[t.prop] = e,
3615
3634
  field: t,
@@ -3633,7 +3652,7 @@ var Gr = /* @__PURE__ */ M({
3633
3652
  }, 8, ["model", "rules"]);
3634
3653
  };
3635
3654
  }
3636
- }), [["__scopeId", "data-v-25b72fd8"]]), ii = /* @__PURE__ */ M({
3655
+ }), [["__scopeId", "data-v-25b72fd8"]]), si = /* @__PURE__ */ M({
3637
3656
  __name: "DTSave",
3638
3657
  props: {
3639
3658
  is_insert: { type: Boolean },
@@ -3674,7 +3693,7 @@ var Gr = /* @__PURE__ */ M({
3674
3693
  }
3675
3694
  return t({ saveData: c }), (t, n) => {
3676
3695
  let s = z("el-text"), c = z("el-result");
3677
- return a.value.length ? (F(), E(ri, {
3696
+ return a.value.length ? (F(), E(oi, {
3678
3697
  key: 0,
3679
3698
  ref_key: "formRef",
3680
3699
  ref: r,
@@ -3702,7 +3721,7 @@ var Gr = /* @__PURE__ */ M({
3702
3721
  });
3703
3722
  //#endregion
3704
3723
  //#region morghulis/library/use-pagination/index.ts
3705
- function ai(e, t = 10) {
3724
+ function ci(e, t = 10) {
3706
3725
  let n = I({
3707
3726
  size: t,
3708
3727
  page: 1
@@ -3725,7 +3744,7 @@ function ai(e, t = 10) {
3725
3744
  }
3726
3745
  //#endregion
3727
3746
  //#region morghulis/components/viewer/instances/MDataViewer.vue?vue&type=script&setup=true&lang.ts
3728
- var oi = { class: "justified full" }, si = /* @__PURE__ */ M({
3747
+ var li = { class: "justified full" }, ui = /* @__PURE__ */ M({
3729
3748
  __name: "MDataViewer",
3730
3749
  props: { url: {} },
3731
3750
  setup(e) {
@@ -3733,11 +3752,11 @@ var oi = { class: "justified full" }, si = /* @__PURE__ */ M({
3733
3752
  if (!t.url) return "";
3734
3753
  let e = t.url.lastIndexOf("/");
3735
3754
  return t.url.substring(e + 1);
3736
- }), { readBookFromURL: r, zip: i } = Wa(), 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(() => {
3737
3756
  if (!c.value) return [];
3738
3757
  let e = c.value.columns || [], t = c.value.headers || [];
3739
3758
  return s.value ? i(e, t) : i(e, e);
3740
- }), { total: u, results: d, pager: f } = ai(T(() => {
3759
+ }), { total: u, results: d, pager: f } = ci(T(() => {
3741
3760
  if (!c.value) return [];
3742
3761
  let e = [...c.value.data], t = c.value.columns || [], n = c.value.headers || [];
3743
3762
  return s.value || e.unshift(n), e.map((e) => i(t, e));
@@ -3750,8 +3769,8 @@ var oi = { class: "justified full" }, si = /* @__PURE__ */ M({
3750
3769
  immediate: !0
3751
3770
  }), (e, t) => {
3752
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");
3753
- return F(), E(Br, null, {
3754
- header: U(() => [k("div", oi, [j(r, {
3772
+ return F(), E(Ur, null, {
3773
+ header: U(() => [k("div", li, [j(r, {
3755
3774
  size: "small",
3756
3775
  truncated: "",
3757
3776
  tag: "b"
@@ -3818,7 +3837,7 @@ var oi = { class: "justified full" }, si = /* @__PURE__ */ M({
3818
3837
  });
3819
3838
  };
3820
3839
  }
3821
- }), ci = /* @__PURE__ */ M({
3840
+ }), di = /* @__PURE__ */ M({
3822
3841
  __name: "MImageViewer",
3823
3842
  props: { url: {} },
3824
3843
  setup(e) {
@@ -3836,7 +3855,7 @@ var oi = { class: "justified full" }, si = /* @__PURE__ */ M({
3836
3855
  }, null, 8, ["src", "preview-src-list"]);
3837
3856
  };
3838
3857
  }
3839
- }), li = { class: "pager" }, ui = /*#__PURE__*/ wn(/* @__PURE__ */ M({
3858
+ }), fi = { class: "pager" }, pi = /*#__PURE__*/ wn(/* @__PURE__ */ M({
3840
3859
  __name: "MPdfViewer",
3841
3860
  props: {
3842
3861
  url: {},
@@ -3858,7 +3877,7 @@ var oi = { class: "justified full" }, si = /* @__PURE__ */ M({
3858
3877
  offset: 0,
3859
3878
  teleported: !1
3860
3879
  }, {
3861
- default: U(() => [k("div", li, [j(f, { size: "small" }, {
3880
+ default: U(() => [k("div", fi, [j(f, { size: "small" }, {
3862
3881
  default: U(() => [j(u, {
3863
3882
  type: "info",
3864
3883
  tag: "b",
@@ -3897,7 +3916,7 @@ var oi = { class: "justified full" }, si = /* @__PURE__ */ M({
3897
3916
  }, 8, ["content"])), [[h, n.value]])], 64);
3898
3917
  };
3899
3918
  }
3900
- }), [["__scopeId", "data-v-0df3a547"]]), di = /* @__PURE__ */ M({
3919
+ }), [["__scopeId", "data-v-0df3a547"]]), mi = /* @__PURE__ */ M({
3901
3920
  __name: "MTxtView",
3902
3921
  props: { url: {} },
3903
3922
  setup(e) {
@@ -3921,15 +3940,15 @@ var oi = { class: "justified full" }, si = /* @__PURE__ */ M({
3921
3940
  }, null, 8, ["modelValue"]);
3922
3941
  };
3923
3942
  }
3924
- }), fi = {};
3925
- function pi(e, t) {
3943
+ }), hi = {};
3944
+ function gi(e, t) {
3926
3945
  return " 不支持的文件格式 ";
3927
3946
  }
3928
- var mi = /*#__PURE__*/ wn(fi, [["render", pi]]);
3947
+ var _i = /*#__PURE__*/ wn(hi, [["render", gi]]);
3929
3948
  //#endregion
3930
3949
  //#region morghulis/components/viewer/use-file.ts
3931
- function hi(e) {
3932
- let { minio_url: t } = Pa(), 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 = [
3933
3952
  ".pdf",
3934
3953
  ".jpg",
3935
3954
  ".gif",
@@ -3956,7 +3975,7 @@ function hi(e) {
3956
3975
  }
3957
3976
  //#endregion
3958
3977
  //#region morghulis/components/viewer/MFileView.vue
3959
- var gi = /* @__PURE__ */ M({
3978
+ var yi = /* @__PURE__ */ M({
3960
3979
  __name: "MFileView",
3961
3980
  props: {
3962
3981
  path: {},
@@ -3964,18 +3983,18 @@ var gi = /* @__PURE__ */ M({
3964
3983
  locked: { type: Boolean }
3965
3984
  },
3966
3985
  setup(e) {
3967
- let t = e, { ext: n, name: r, url: i } = hi(T(() => t.path)), a = T(() => {
3986
+ let t = e, { ext: n, name: r, url: i } = vi(T(() => t.path)), a = T(() => {
3968
3987
  switch (n.value) {
3969
3988
  case ".xlsx":
3970
3989
  case ".xls":
3971
- case ".csv": return si;
3990
+ case ".csv": return ui;
3972
3991
  case ".jpg":
3973
3992
  case ".gif":
3974
3993
  case ".png":
3975
- case ".jpeg": return ci;
3976
- case ".pdf": return ui;
3977
- case ".txt": return di;
3978
- default: return mi;
3994
+ case ".jpeg": return di;
3995
+ case ".pdf": return pi;
3996
+ case ".txt": return mi;
3997
+ default: return _i;
3979
3998
  }
3980
3999
  });
3981
4000
  return (e, t) => {
@@ -3998,16 +4017,16 @@ var gi = /* @__PURE__ */ M({
3998
4017
  }));
3999
4018
  };
4000
4019
  }
4001
- }), _i = {
4020
+ }), bi = {
4002
4021
  class: "justified",
4003
4022
  style: {
4004
4023
  padding: "5px",
4005
4024
  "text-align": "right"
4006
4025
  }
4007
- }, vi = { style: {
4026
+ }, xi = { style: {
4008
4027
  "text-align": "center",
4009
4028
  padding: "10px 0 5px 0"
4010
- } }, yi = /* @__PURE__ */ M({
4029
+ } }, Si = /* @__PURE__ */ M({
4011
4030
  __name: "DTCellEditor",
4012
4031
  props: { manager: {} },
4013
4032
  emits: ["reload"],
@@ -4060,7 +4079,7 @@ var gi = /* @__PURE__ */ M({
4060
4079
  ref_key: "dialogRef",
4061
4080
  ref: a
4062
4081
  }, {
4063
- tool: U(({ data: { field: t, row: r } }) => [t.tool === "file" ? (F(), E(V(Mr), {
4082
+ tool: U(({ data: { field: t, row: r } }) => [t.tool === "file" ? (F(), E(V(Fr), {
4064
4083
  key: 0,
4065
4084
  disabled: !t?.allow_edit,
4066
4085
  field: t,
@@ -4084,7 +4103,7 @@ var gi = /* @__PURE__ */ M({
4084
4103
  default: U(() => [...n[2] ||= [A("保存 ", -1)]]),
4085
4104
  _: 1
4086
4105
  }, 8, ["onClick"]))]),
4087
- default: U(({ data: { field: { prop: e, tool: t, refer: n, allow_edit: r, format: { locked: i } }, row: a } }) => [t === "rich" ? (F(), E(Fr, {
4106
+ default: U(({ data: { field: { prop: e, tool: t, refer: n, allow_edit: r, format: { locked: i } }, row: a } }) => [t === "rich" ? (F(), E(Rr, {
4088
4107
  key: 0,
4089
4108
  disabled: !r,
4090
4109
  modelValue: o.value[e],
@@ -4093,7 +4112,7 @@ var gi = /* @__PURE__ */ M({
4093
4112
  "disabled",
4094
4113
  "modelValue",
4095
4114
  "onUpdate:modelValue"
4096
- ])) : t === "object" ? (F(), E(Nr, {
4115
+ ])) : t === "object" ? (F(), E(Ir, {
4097
4116
  key: 1,
4098
4117
  disabled: !r,
4099
4118
  modelValue: o.value[e],
@@ -4102,7 +4121,7 @@ var gi = /* @__PURE__ */ M({
4102
4121
  "disabled",
4103
4122
  "modelValue",
4104
4123
  "onUpdate:modelValue"
4105
- ])) : t === "transfer" ? (F(), E(Er, {
4124
+ ])) : t === "transfer" ? (F(), E(Or, {
4106
4125
  key: 2,
4107
4126
  modelValue: o.value[e],
4108
4127
  "onUpdate:modelValue": (t) => o.value[e] = t,
@@ -4113,18 +4132,18 @@ var gi = /* @__PURE__ */ M({
4113
4132
  "onUpdate:modelValue",
4114
4133
  "disabled",
4115
4134
  "refer"
4116
- ])) : t === "file" ? (F(), E(gi, {
4135
+ ])) : t === "file" ? (F(), E(yi, {
4117
4136
  key: 3,
4118
4137
  path: o.value[e],
4119
4138
  locked: i
4120
4139
  }, null, 8, ["path", "locked"])) : D("", !0)]),
4121
4140
  _: 1
4122
- }, 512), j(nr, {
4141
+ }, 512), j(ir, {
4123
4142
  ref_key: "popoverRef",
4124
4143
  ref: i,
4125
4144
  width: "300px"
4126
4145
  }, {
4127
- default: U(({ data: { field: t, row: r } }) => [k("div", _i, [j(K, {
4146
+ default: U(({ data: { field: t, row: r } }) => [k("div", bi, [j(K, {
4128
4147
  icon: "cancel",
4129
4148
  onClick: c
4130
4149
  }, {
@@ -4141,7 +4160,7 @@ var gi = /* @__PURE__ */ M({
4141
4160
  }, {
4142
4161
  default: U(() => [...n[4] ||= [A("保存 ", -1)]]),
4143
4162
  _: 1
4144
- }, 8, ["onClick"]))]), k("div", vi, [j(Lr, {
4163
+ }, 8, ["onClick"]))]), k("div", xi, [j(Br, {
4145
4164
  modelValue: o.value[t.prop],
4146
4165
  "onUpdate:modelValue": (e) => o.value[t.prop] = e,
4147
4166
  field: t,
@@ -4158,7 +4177,7 @@ var gi = /* @__PURE__ */ M({
4158
4177
  _: 1
4159
4178
  }, 512)], 64));
4160
4179
  }
4161
- }), bi = /* @__PURE__ */ M({
4180
+ }), Ci = /* @__PURE__ */ M({
4162
4181
  __name: "DTViews",
4163
4182
  props: {
4164
4183
  entity: {},
@@ -4167,7 +4186,7 @@ var gi = /* @__PURE__ */ M({
4167
4186
  },
4168
4187
  emits: ["update:code"],
4169
4188
  setup(e, { emit: t }) {
4170
- 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([]);
4171
4190
  return P(() => {
4172
4191
  i.values(["code", "name"], { includes: { meta__entity: n.entity } }).then((e) => {
4173
4192
  let t = Object.fromEntries(n.codes.map((e) => [e, e.toUpperCase()]));
@@ -4187,10 +4206,10 @@ var gi = /* @__PURE__ */ M({
4187
4206
  }, null, 8, ["options", "modelValue"]);
4188
4207
  };
4189
4208
  }
4190
- }), xi = {
4209
+ }), wi = {
4191
4210
  key: 2,
4192
4211
  class: "small info"
4193
- }, Si = /* @__PURE__ */ M({
4212
+ }, Ti = /* @__PURE__ */ M({
4194
4213
  __name: "DTCell",
4195
4214
  props: {
4196
4215
  field: {},
@@ -4268,11 +4287,11 @@ var gi = /* @__PURE__ */ M({
4268
4287
  onClick: n[2] ||= (e) => a(e)
4269
4288
  }, null, 8, ["icon", "type"]),
4270
4289
  c.value ? D("", !0) : (F(), O(w, { key: 1 }, [A(B(u.value), 1)], 64)),
4271
- e.field.unit ? (F(), O("span", xi, B(e.field.unit), 1)) : D("", !0)
4290
+ e.field.unit ? (F(), O("span", wi, B(e.field.unit), 1)) : D("", !0)
4272
4291
  ], 64);
4273
4292
  };
4274
4293
  }
4275
- }), Ci = /* @__PURE__ */ M({
4294
+ }), Ei = /* @__PURE__ */ M({
4276
4295
  __name: "ViewCodePlugin",
4277
4296
  props: {
4278
4297
  data: {},
@@ -4295,7 +4314,7 @@ var gi = /* @__PURE__ */ M({
4295
4314
  onClick: t[0] ||= (e) => n(e)
4296
4315
  }, null, 8, ["icon", "type"]));
4297
4316
  }
4298
- }), wi = /* @__PURE__ */ M({
4317
+ }), Di = /* @__PURE__ */ M({
4299
4318
  __name: "MetaSelect",
4300
4319
  props: {
4301
4320
  modelValue: {},
@@ -4314,7 +4333,7 @@ var gi = /* @__PURE__ */ M({
4314
4333
  },
4315
4334
  emits: ["update:modelValue", "change"],
4316
4335
  setup(e, { emit: t }) {
4317
- let { post: n } = X(), r = I(), i = e, a = t;
4336
+ let { post: n } = Y(), r = I(), i = e, a = t;
4318
4337
  function o(e) {
4319
4338
  let t = r.value?.getCheckedNodes(!0)?.[0];
4320
4339
  s.value.is_tree = !!t?.data.is_tree;
@@ -4363,11 +4382,11 @@ var gi = /* @__PURE__ */ M({
4363
4382
  ]);
4364
4383
  };
4365
4384
  }
4366
- }), Ti = /* @__PURE__ */ M({
4385
+ }), Oi = /* @__PURE__ */ M({
4367
4386
  __name: "MetaNameInput",
4368
4387
  props: { entity: {} },
4369
4388
  setup(e) {
4370
- 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);
4371
4390
  H(() => t.entity, o, { immediate: !0 });
4372
4391
  function o() {
4373
4392
  let e = t.entity;
@@ -4405,7 +4424,7 @@ var gi = /* @__PURE__ */ M({
4405
4424
  }, 8, ["modelValue"])) : D("", !0);
4406
4425
  };
4407
4426
  }
4408
- }), Ei = /* @__PURE__ */ M({
4427
+ }), ki = /* @__PURE__ */ M({
4409
4428
  __name: "MetaViewList",
4410
4429
  props: {
4411
4430
  entity: {},
@@ -4443,7 +4462,7 @@ var gi = /* @__PURE__ */ M({
4443
4462
  label: "当前",
4444
4463
  width: 50,
4445
4464
  fixed: "left",
4446
- component: Ci,
4465
+ component: Ei,
4447
4466
  param: i,
4448
4467
  callback(e) {
4449
4468
  i.value.code = e;
@@ -4479,7 +4498,7 @@ var gi = /* @__PURE__ */ M({
4479
4498
  ];
4480
4499
  return (t, n) => {
4481
4500
  let l = z("el-switch");
4482
- return F(), O(w, null, [j(ua, {
4501
+ return F(), O(w, null, [j(pa, {
4483
4502
  ref_key: "tableRef",
4484
4503
  ref: u,
4485
4504
  entity: "valar.MetaView",
@@ -4489,12 +4508,12 @@ var gi = /* @__PURE__ */ M({
4489
4508
  buttons: p
4490
4509
  }, {
4491
4510
  default: U(() => [
4492
- j(wi, {
4511
+ j(Di, {
4493
4512
  modelValue: i.value,
4494
4513
  "onUpdate:modelValue": n[0] ||= (e) => i.value = e,
4495
4514
  onChange: a
4496
4515
  }, null, 8, ["modelValue"]),
4497
- j(Ti, { entity: i.value.entity }, null, 8, ["entity"]),
4516
+ j(Oi, { entity: i.value.entity }, null, 8, ["entity"]),
4498
4517
  e.locked ? D("", !0) : (F(), E(K, {
4499
4518
  key: 0,
4500
4519
  onClick: c,
@@ -4529,11 +4548,11 @@ var gi = /* @__PURE__ */ M({
4529
4548
  "active-text": "树形",
4530
4549
  "inactive-text": "表格"
4531
4550
  }, null, 8, ["modelValue", "onUpdate:modelValue"])) : D("", !0)]),
4532
- default: U(({ data: { is_tree: e, code: t, entity: n } }) => [e ? (F(), E(ha, {
4551
+ default: U(({ data: { is_tree: e, code: t, entity: n } }) => [e ? (F(), E(va, {
4533
4552
  key: 0,
4534
4553
  entity: n,
4535
4554
  code: t
4536
- }, null, 8, ["entity", "code"])) : (F(), E(ua, {
4555
+ }, null, 8, ["entity", "code"])) : (F(), E(pa, {
4537
4556
  key: 1,
4538
4557
  entity: n,
4539
4558
  code: t
@@ -4542,7 +4561,7 @@ var gi = /* @__PURE__ */ M({
4542
4561
  }, 512)], 64);
4543
4562
  };
4544
4563
  }
4545
- }), Di = /* @__PURE__ */ M({
4564
+ }), Ai = /* @__PURE__ */ M({
4546
4565
  __name: "CustomFields",
4547
4566
  props: {
4548
4567
  options: {},
@@ -4550,7 +4569,7 @@ var gi = /* @__PURE__ */ M({
4550
4569
  view_id: {}
4551
4570
  },
4552
4571
  setup(e, { expose: t }) {
4553
- let n = I(), r = e, i = I([]), { post: a } = X(), o = {
4572
+ let n = I(), r = e, i = I([]), { post: a } = Y(), o = {
4554
4573
  lazy: !0,
4555
4574
  leaf: "isLeaf",
4556
4575
  multiple: !0,
@@ -4603,7 +4622,7 @@ var gi = /* @__PURE__ */ M({
4603
4622
  }, 8, ["modelValue"]);
4604
4623
  };
4605
4624
  }
4606
- }), Oi = /* @__PURE__ */ M({
4625
+ }), ji = /* @__PURE__ */ M({
4607
4626
  __name: "ReferPlugin",
4608
4627
  props: {
4609
4628
  data: {},
@@ -4614,7 +4633,7 @@ var gi = /* @__PURE__ */ M({
4614
4633
  let t = e, n = T(() => t.data?.refer.entity), r = T(() => {
4615
4634
  if (!t.data) return !0;
4616
4635
  let { tool: e, domain: n } = t.data;
4617
- return !e || !n ? !0 : Xn.referred.includes(n) ? !1 : n !== "CharField" || ![
4636
+ return !e || !n ? !0 : Qn.referred.includes(n) ? !1 : n !== "CharField" || ![
4618
4637
  "select",
4619
4638
  "cascade",
4620
4639
  "tree",
@@ -4639,7 +4658,7 @@ var gi = /* @__PURE__ */ M({
4639
4658
  "type"
4640
4659
  ]));
4641
4660
  }
4642
- }), ki = /* @__PURE__ */ M({
4661
+ }), Mi = /* @__PURE__ */ M({
4643
4662
  __name: "ReferOption",
4644
4663
  props: {
4645
4664
  refer: {},
@@ -4649,13 +4668,13 @@ var gi = /* @__PURE__ */ M({
4649
4668
  setup(e, { emit: t }) {
4650
4669
  let n = e, r = W(n, "refer", t);
4651
4670
  function i(e) {
4652
- return !r.value.entity || Xn.referred.includes(n.domain) && e === "value";
4671
+ return !r.value.entity || Qn.referred.includes(n.domain) && e === "value";
4653
4672
  }
4654
4673
  let a = {
4655
4674
  value: "取值字段",
4656
4675
  label: "标签字段",
4657
4676
  display: "展示字段"
4658
- }, 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();
4659
4678
  H(o, async (e, t, n) => {
4660
4679
  let r = !0;
4661
4680
  if (n(() => {
@@ -4667,7 +4686,7 @@ var gi = /* @__PURE__ */ M({
4667
4686
  r && (console.error("加载字段选项失败", e), c.error("字段选项加载失败,请重新选择元数据"));
4668
4687
  }
4669
4688
  }, { immediate: !0 });
4670
- let u = T(() => l.value ? Object.values(l.value.model).filter(({ domain: e }) => !Xn.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 }) => ({
4671
4690
  value: e,
4672
4691
  label: t,
4673
4692
  display: e
@@ -4701,7 +4720,7 @@ var gi = /* @__PURE__ */ M({
4701
4720
  }, 1024)), 64);
4702
4721
  };
4703
4722
  }
4704
- }), Ai = /* @__PURE__ */ M({
4723
+ }), Ni = /* @__PURE__ */ M({
4705
4724
  __name: "TreeRootSelection",
4706
4725
  props: {
4707
4726
  modelValue: {},
@@ -4710,7 +4729,7 @@ var gi = /* @__PURE__ */ M({
4710
4729
  },
4711
4730
  emits: ["update:modelValue"],
4712
4731
  setup(e, { emit: t }) {
4713
- 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();
4714
4733
  function o() {
4715
4734
  i.tree({ includes: { isLeaf: !1 } }).then((e) => a.value = e.options);
4716
4735
  }
@@ -4758,7 +4777,7 @@ var gi = /* @__PURE__ */ M({
4758
4777
  ]);
4759
4778
  };
4760
4779
  }
4761
- }), ji = /* @__PURE__ */ M({
4780
+ }), Pi = /* @__PURE__ */ M({
4762
4781
  __name: "ReferEditor",
4763
4782
  props: {
4764
4783
  refer: {},
@@ -4780,7 +4799,7 @@ var gi = /* @__PURE__ */ M({
4780
4799
  label: "元数据",
4781
4800
  "label-position": "top"
4782
4801
  }, {
4783
- default: U(() => [j(wi, {
4802
+ default: U(() => [j(Di, {
4784
4803
  modelValue: V(r),
4785
4804
  "onUpdate:modelValue": n[0] ||= (e) => N(r) ? r.value = e : null,
4786
4805
  disabled: e.domain !== "CharField"
@@ -4808,7 +4827,7 @@ var gi = /* @__PURE__ */ M({
4808
4827
  })]),
4809
4828
  _: 1
4810
4829
  }),
4811
- j(ki, {
4830
+ j(Mi, {
4812
4831
  refer: V(r),
4813
4832
  "onUpdate:refer": n[2] ||= (e) => N(r) ? r.value = e : null,
4814
4833
  domain: e.domain
@@ -4818,7 +4837,7 @@ var gi = /* @__PURE__ */ M({
4818
4837
  label: "检索条件(包含)",
4819
4838
  "label-position": "top"
4820
4839
  }, {
4821
- default: U(() => [j(Nr, {
4840
+ default: U(() => [j(Ir, {
4822
4841
  modelValue: V(r).includes,
4823
4842
  "onUpdate:modelValue": n[3] ||= (e) => V(r).includes = e,
4824
4843
  disabled: !V(r).entity
@@ -4832,7 +4851,7 @@ var gi = /* @__PURE__ */ M({
4832
4851
  label: "检索条件(排除)",
4833
4852
  "label-position": "top"
4834
4853
  }, {
4835
- default: U(() => [j(Nr, {
4854
+ default: U(() => [j(Ir, {
4836
4855
  modelValue: V(r).excludes,
4837
4856
  "onUpdate:modelValue": n[4] ||= (e) => V(r).excludes = e,
4838
4857
  disabled: !V(r).entity
@@ -4849,7 +4868,7 @@ var gi = /* @__PURE__ */ M({
4849
4868
  label: "跟节点",
4850
4869
  "label-position": "top"
4851
4870
  }, {
4852
- default: U(() => [j(Ai, {
4871
+ default: U(() => [j(Ni, {
4853
4872
  modelValue: V(r).root,
4854
4873
  "onUpdate:modelValue": n[5] ||= (e) => V(r).root = e,
4855
4874
  entity: V(r).entity,
@@ -4890,7 +4909,7 @@ var gi = /* @__PURE__ */ M({
4890
4909
  });
4891
4910
  };
4892
4911
  }
4893
- }), Mi = /* @__PURE__ */ M({
4912
+ }), Fi = /* @__PURE__ */ M({
4894
4913
  __name: "ReferDialog",
4895
4914
  props: { save: { type: Function } },
4896
4915
  setup(e, { expose: t }) {
@@ -4912,7 +4931,7 @@ var gi = /* @__PURE__ */ M({
4912
4931
  confirm: a,
4913
4932
  width: "600"
4914
4933
  }, {
4915
- default: U(({ data: e }) => [j(ji, {
4934
+ default: U(({ data: e }) => [j(Pi, {
4916
4935
  refer: e.refer,
4917
4936
  "onUpdate:refer": (t) => e.refer = t,
4918
4937
  domain: e.domain,
@@ -4926,7 +4945,7 @@ var gi = /* @__PURE__ */ M({
4926
4945
  _: 1
4927
4946
  }, 512));
4928
4947
  }
4929
- }), Ni = /* @__PURE__ */ M({
4948
+ }), Ii = /* @__PURE__ */ M({
4930
4949
  __name: "DateFormats",
4931
4950
  props: {
4932
4951
  modelValue: {},
@@ -4957,7 +4976,7 @@ var gi = /* @__PURE__ */ M({
4957
4976
  ];
4958
4977
  default: return ["date"];
4959
4978
  }
4960
- }), a = T(() => Object.entries(Yn).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]) => ({
4961
4980
  label: t.label,
4962
4981
  value: e
4963
4982
  })));
@@ -4981,7 +5000,7 @@ var gi = /* @__PURE__ */ M({
4981
5000
  });
4982
5001
  };
4983
5002
  }
4984
- }), Pi = /* @__PURE__ */ M({
5003
+ }), Li = /* @__PURE__ */ M({
4985
5004
  __name: "FileFormats",
4986
5005
  props: {
4987
5006
  modelValue: {},
@@ -4995,7 +5014,7 @@ var gi = /* @__PURE__ */ M({
4995
5014
  ".gif",
4996
5015
  ".png",
4997
5016
  ".jpeg"
4998
- ] : Jn);
5017
+ ] : Xn);
4999
5018
  return (t, n) => {
5000
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");
5001
5020
  return F(), E(f, { "label-position": "top" }, {
@@ -5106,7 +5125,7 @@ var gi = /* @__PURE__ */ M({
5106
5125
  });
5107
5126
  };
5108
5127
  }
5109
- }), Fi = /* @__PURE__ */ M({
5128
+ }), Ri = /* @__PURE__ */ M({
5110
5129
  __name: "NumberFormats",
5111
5130
  props: {
5112
5131
  modelValue: {},
@@ -5220,7 +5239,7 @@ var gi = /* @__PURE__ */ M({
5220
5239
  });
5221
5240
  };
5222
5241
  }
5223
- }), Ii = /* @__PURE__ */ M({
5242
+ }), zi = /* @__PURE__ */ M({
5224
5243
  __name: "MappingEditor",
5225
5244
  props: { modelValue: {} },
5226
5245
  emits: ["update:modelValue"],
@@ -5301,7 +5320,7 @@ var gi = /* @__PURE__ */ M({
5301
5320
  }, 8, ["data"]);
5302
5321
  };
5303
5322
  }
5304
- }), Li = /* @__PURE__ */ M({
5323
+ }), Bi = /* @__PURE__ */ M({
5305
5324
  __name: "SetFormats",
5306
5325
  props: {
5307
5326
  modelValue: {},
@@ -5311,12 +5330,12 @@ var gi = /* @__PURE__ */ M({
5311
5330
  emits: ["update:modelValue"],
5312
5331
  setup(e, { emit: t }) {
5313
5332
  let n = W(e, "modelValue", t);
5314
- return (e, t) => (F(), E(Ii, {
5333
+ return (e, t) => (F(), E(zi, {
5315
5334
  modelValue: V(n).set,
5316
5335
  "onUpdate:modelValue": t[0] ||= (e) => V(n).set = e
5317
5336
  }, null, 8, ["modelValue"]));
5318
5337
  }
5319
- }), Ri = /* @__PURE__ */ M({
5338
+ }), Vi = /* @__PURE__ */ M({
5320
5339
  __name: "TextFormats",
5321
5340
  props: {
5322
5341
  modelValue: {},
@@ -5369,7 +5388,7 @@ var gi = /* @__PURE__ */ M({
5369
5388
  });
5370
5389
  };
5371
5390
  }
5372
- }), zi = /* @__PURE__ */ M({
5391
+ }), Hi = /* @__PURE__ */ M({
5373
5392
  __name: "FormatEditor",
5374
5393
  props: {
5375
5394
  format: {},
@@ -5381,15 +5400,15 @@ var gi = /* @__PURE__ */ M({
5381
5400
  let n = e, r = W(n, "format", t), i = T(() => {
5382
5401
  switch (n.tool) {
5383
5402
  case "text":
5384
- case "textarea": return Ri;
5385
- case "set": return Li;
5386
- case "number": return Fi;
5403
+ case "textarea": return Vi;
5404
+ case "set": return Bi;
5405
+ case "number": return Ri;
5387
5406
  case "date":
5388
5407
  case "daterange":
5389
- case "dates": return Ni;
5408
+ case "dates": return Ii;
5390
5409
  case "rich":
5391
5410
  case "image":
5392
- case "file": return Pi;
5411
+ case "file": return Li;
5393
5412
  }
5394
5413
  });
5395
5414
  return (t, n) => i.value ? (F(), E(Lt(i.value), {
@@ -5405,7 +5424,7 @@ var gi = /* @__PURE__ */ M({
5405
5424
  "modelValue"
5406
5425
  ])) : D("", !0);
5407
5426
  }
5408
- }), Bi = /* @__PURE__ */ M({
5427
+ }), Ui = /* @__PURE__ */ M({
5409
5428
  __name: "FormatDialog",
5410
5429
  props: { save: { type: Function } },
5411
5430
  setup(e, { expose: t }) {
@@ -5426,7 +5445,7 @@ var gi = /* @__PURE__ */ M({
5426
5445
  title: "格式设置",
5427
5446
  confirm: a
5428
5447
  }, {
5429
- default: U(({ data: e }) => [j(zi, {
5448
+ default: U(({ data: e }) => [j(Hi, {
5430
5449
  format: e.format,
5431
5450
  "onUpdate:format": (t) => e.format = t,
5432
5451
  tool: e.tool,
@@ -5440,7 +5459,7 @@ var gi = /* @__PURE__ */ M({
5440
5459
  _: 1
5441
5460
  }, 512));
5442
5461
  }
5443
- }), Vi = /* @__PURE__ */ M({
5462
+ }), Wi = /* @__PURE__ */ M({
5444
5463
  __name: "FormatPlugin",
5445
5464
  props: {
5446
5465
  data: {},
@@ -5483,35 +5502,35 @@ var gi = /* @__PURE__ */ M({
5483
5502
  "type"
5484
5503
  ]));
5485
5504
  }
5486
- }), Hi = /* @__PURE__ */ M({
5505
+ }), Gi = /* @__PURE__ */ M({
5487
5506
  __name: "MetaFieldList",
5488
5507
  props: {
5489
5508
  entity: {},
5490
5509
  code: {}
5491
5510
  },
5492
5511
  setup(e) {
5493
- 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();
5494
5513
  function u() {
5495
5514
  c.meta(t.code).then((e) => l.value = e);
5496
5515
  }
5497
5516
  P(u);
5498
5517
  let d = T(() => ({ view_id: l.value?.view_id || 0 })), f = [{
5499
5518
  label: "索引设置",
5500
- component: Oi,
5519
+ component: ji,
5501
5520
  callback: (e) => {
5502
5521
  s.value?.open(e);
5503
5522
  },
5504
5523
  width: 100
5505
5524
  }, {
5506
5525
  label: "格式设置",
5507
- component: Vi,
5526
+ component: Wi,
5508
5527
  callback: (e) => o.value?.open(e),
5509
5528
  width: 100
5510
5529
  }];
5511
5530
  function p(e) {
5512
5531
  i.value?.manager.save_one(e);
5513
5532
  }
5514
- let { post: m } = X();
5533
+ let { post: m } = Y();
5515
5534
  async function h(e) {
5516
5535
  if (!l.value) return;
5517
5536
  let { values: t } = e, { entity: n, code: r, view_id: a } = l.value, o = await m("/valar/add_fields", {
@@ -5558,7 +5577,7 @@ var gi = /* @__PURE__ */ M({
5558
5577
  return (e, t) => {
5559
5578
  let c = z("el-select");
5560
5579
  return F(), O(w, null, [
5561
- j(ua, {
5580
+ j(pa, {
5562
5581
  ref_key: "tableRef",
5563
5582
  ref: i,
5564
5583
  unrestricted: "",
@@ -5619,7 +5638,7 @@ var gi = /* @__PURE__ */ M({
5619
5638
  title: "自定义字段",
5620
5639
  confirm: _
5621
5640
  }, {
5622
- default: U(({ data: { options: e, entity: t, view_id: n } }) => [j(Di, {
5641
+ default: U(({ data: { options: e, entity: t, view_id: n } }) => [j(Ai, {
5623
5642
  ref_key: "customSelectRef",
5624
5643
  ref: a,
5625
5644
  options: e,
@@ -5632,12 +5651,12 @@ var gi = /* @__PURE__ */ M({
5632
5651
  ])]),
5633
5652
  _: 1
5634
5653
  }, 512),
5635
- j(Mi, {
5654
+ j(Fi, {
5636
5655
  ref_key: "referDialog",
5637
5656
  ref: s,
5638
5657
  save: p
5639
5658
  }, null, 512),
5640
- j(Bi, {
5659
+ j(Ui, {
5641
5660
  ref_key: "formatDialog",
5642
5661
  ref: o,
5643
5662
  save: p
@@ -5645,14 +5664,14 @@ var gi = /* @__PURE__ */ M({
5645
5664
  ], 64);
5646
5665
  };
5647
5666
  }
5648
- }), Ui = /* @__PURE__ */ M({
5667
+ }), Ki = /* @__PURE__ */ M({
5649
5668
  __name: "MetaViewForm",
5650
5669
  props: {
5651
5670
  entity: {},
5652
5671
  code: {}
5653
5672
  },
5654
5673
  setup(e, { expose: t }) {
5655
- 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();
5656
5675
  P(() => {
5657
5676
  i.meta("edit").then((e) => {
5658
5677
  o.value = e.fields || [];
@@ -5677,7 +5696,7 @@ var gi = /* @__PURE__ */ M({
5677
5696
  }
5678
5697
  return t({ save: l }), (e, t) => {
5679
5698
  let n = It("loading");
5680
- return Ut((F(), E(ri, {
5699
+ return Ut((F(), E(oi, {
5681
5700
  ref_key: "formRef",
5682
5701
  ref: r,
5683
5702
  original: s.value,
@@ -5691,7 +5710,7 @@ var gi = /* @__PURE__ */ M({
5691
5710
  ])), [[n, V(a)]]);
5692
5711
  };
5693
5712
  }
5694
- }), Wi = /*#__PURE__*/ wn(/* @__PURE__ */ M({
5713
+ }), qi = /*#__PURE__*/ wn(/* @__PURE__ */ M({
5695
5714
  __name: "MetaPanel",
5696
5715
  props: {
5697
5716
  entity: {},
@@ -5769,7 +5788,7 @@ var gi = /* @__PURE__ */ M({
5769
5788
  title: "权限管理",
5770
5789
  confirm: p
5771
5790
  }, {
5772
- default: U(({ data: { entity: e, code: t } }) => [j(Ui, {
5791
+ default: U(({ data: { entity: e, code: t } }) => [j(Ki, {
5773
5792
  ref_key: "viewRef",
5774
5793
  ref: s,
5775
5794
  entity: e,
@@ -5783,7 +5802,7 @@ var gi = /* @__PURE__ */ M({
5783
5802
  width: "1050",
5784
5803
  title: "字段管理"
5785
5804
  }, {
5786
- default: U(({ data: { entity: e, code: t } }) => [j(Hi, {
5805
+ default: U(({ data: { entity: e, code: t } }) => [j(Gi, {
5787
5806
  entity: e,
5788
5807
  code: t
5789
5808
  }, null, 8, ["entity", "code"])]),
@@ -5795,7 +5814,7 @@ var gi = /* @__PURE__ */ M({
5795
5814
  width: "1000",
5796
5815
  title: "视图管理"
5797
5816
  }, {
5798
- default: U(() => [j(Ei, {
5817
+ default: U(() => [j(ki, {
5799
5818
  entity: V(l),
5800
5819
  code: V(u),
5801
5820
  onForm: d,
@@ -5807,11 +5826,11 @@ var gi = /* @__PURE__ */ M({
5807
5826
  ], 64);
5808
5827
  };
5809
5828
  }
5810
- }), [["__scopeId", "data-v-60f998c8"]]), Gi = { class: "justified" }, Ki = /* @__PURE__ */ M({
5829
+ }), [["__scopeId", "data-v-60f998c8"]]), Ji = { class: "justified" }, Yi = /* @__PURE__ */ M({
5811
5830
  __name: "MetaFieldForm",
5812
5831
  props: { field_id: {} },
5813
5832
  setup(e) {
5814
- 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();
5815
5834
  function s(e, t) {
5816
5835
  a.value?.open(e);
5817
5836
  }
@@ -5848,7 +5867,7 @@ var gi = /* @__PURE__ */ M({
5848
5867
  let n = z("el-segmented"), p = z("el-col"), h = z("el-row"), g = z("el-card");
5849
5868
  return F(), O(w, null, [
5850
5869
  j(g, { shadow: "never" }, Tt({
5851
- header: U(() => [k("div", Gi, [j(n, {
5870
+ header: U(() => [k("div", Ji, [j(n, {
5852
5871
  disabled: f.value,
5853
5872
  options: l,
5854
5873
  modelValue: u.value,
@@ -5865,7 +5884,7 @@ var gi = /* @__PURE__ */ M({
5865
5884
  default: U(() => [...t[3] ||= [A("保存 ", -1)]]),
5866
5885
  _: 1
5867
5886
  }, 8, ["disabled", "bounce"])])]),
5868
- default: U(() => [j(ri, {
5887
+ default: U(() => [j(oi, {
5869
5888
  original: r.value,
5870
5889
  fields: d.value,
5871
5890
  modelValue: i.value,
@@ -5880,13 +5899,13 @@ var gi = /* @__PURE__ */ M({
5880
5899
  name: "footer",
5881
5900
  fn: U(() => [j(h, { gutter: 20 }, {
5882
5901
  default: U(() => [j(p, { span: 12 }, {
5883
- default: U(() => [j(Oi, {
5902
+ default: U(() => [j(ji, {
5884
5903
  data: r.value,
5885
5904
  invoke: c
5886
5905
  }, null, 8, ["data"])]),
5887
5906
  _: 1
5888
5907
  }), j(p, { span: 12 }, {
5889
- default: U(() => [j(Vi, {
5908
+ default: U(() => [j(Wi, {
5890
5909
  data: r.value,
5891
5910
  invoke: s
5892
5911
  }, null, 8, ["data"])]),
@@ -5896,12 +5915,12 @@ var gi = /* @__PURE__ */ M({
5896
5915
  })]),
5897
5916
  key: "0"
5898
5917
  } : void 0]), 1024),
5899
- j(Bi, {
5918
+ j(Ui, {
5900
5919
  ref_key: "formatDialog",
5901
5920
  ref: a,
5902
5921
  save: m
5903
5922
  }, null, 512),
5904
- j(Mi, {
5923
+ j(Fi, {
5905
5924
  ref_key: "referDialog",
5906
5925
  ref: o,
5907
5926
  save: m
@@ -5912,7 +5931,7 @@ var gi = /* @__PURE__ */ M({
5912
5931
  });
5913
5932
  //#endregion
5914
5933
  //#region morghulis/library/use-paster/index.ts
5915
- function qi() {
5934
+ function Xi() {
5916
5935
  let e = I(!1);
5917
5936
  function t() {
5918
5937
  return e.value = !0, new Promise((t) => {
@@ -5939,7 +5958,7 @@ function qi() {
5939
5958
  }
5940
5959
  //#endregion
5941
5960
  //#region morghulis/components/uploader/tools/ClipUploader.vue
5942
- var Ji = /* @__PURE__ */ M({
5961
+ var Zi = /* @__PURE__ */ M({
5943
5962
  __name: "ClipUploader",
5944
5963
  props: {
5945
5964
  fields: {},
@@ -5947,7 +5966,7 @@ var Ji = /* @__PURE__ */ M({
5947
5966
  },
5948
5967
  emits: ["success"],
5949
5968
  setup(e, { emit: t }) {
5950
- let n = e, { inactive: r, pending: i, getClipboardData: a, openPaster: o } = qi(), s = t, { $message: c } = J();
5969
+ let n = e, { inactive: r, pending: i, getClipboardData: a, openPaster: o } = Xi(), s = t, { $message: c } = J();
5951
5970
  function l() {
5952
5971
  c.info("剪切板已打开"), o().then(p);
5953
5972
  }
@@ -5960,7 +5979,7 @@ var Ji = /* @__PURE__ */ M({
5960
5979
  console.error("读取剪贴板失败", e), c.error("读取剪贴板失败,请检查浏览器权限");
5961
5980
  }
5962
5981
  }
5963
- let { textToJson: d } = Ua();
5982
+ let { textToJson: d } = Ga();
5964
5983
  function f(e) {
5965
5984
  return n.fields.length > 0 && n.fields.every((t) => e[t.prop] === t.label);
5966
5985
  }
@@ -6064,7 +6083,7 @@ var Ji = /* @__PURE__ */ M({
6064
6083
  }));
6065
6084
  };
6066
6085
  }
6067
- }), Yi = /* @__PURE__ */ M({
6086
+ }), Qi = /* @__PURE__ */ M({
6068
6087
  __name: "FileUploader",
6069
6088
  props: {
6070
6089
  fields: {},
@@ -6073,7 +6092,7 @@ var Ji = /* @__PURE__ */ M({
6073
6092
  },
6074
6093
  emits: ["success"],
6075
6094
  setup(e, { emit: t }) {
6076
- let n = e, r = t, i = I(), { readBookFromFile: a, zip: o } = Wa(), { $message: s } = J();
6095
+ let n = e, r = t, i = I(), { readBookFromFile: a, zip: o } = Ka(), { $message: s } = J();
6077
6096
  async function c(e) {
6078
6097
  i.value?.clearFiles();
6079
6098
  let t = e?.raw;
@@ -6135,10 +6154,10 @@ var Ji = /* @__PURE__ */ M({
6135
6154
  }, 512);
6136
6155
  };
6137
6156
  }
6138
- }), Xi = {
6157
+ }), $i = {
6139
6158
  class: "justified",
6140
6159
  style: { "margin-bottom": "10px" }
6141
- }, Zi = /* @__PURE__ */ M({
6160
+ }, ea = /* @__PURE__ */ M({
6142
6161
  __name: "UploadControl",
6143
6162
  props: {
6144
6163
  raw: {},
@@ -6157,13 +6176,13 @@ var Ji = /* @__PURE__ */ M({
6157
6176
  setup(e, { emit: t }) {
6158
6177
  let n = e, r = t, i = I(), a = W(n, "raw", r), o = W(n, "valid", r), s = W(n, "referred", r);
6159
6178
  H(a, () => o.value = null);
6160
- let c = T(() => !!n.fields.filter((e) => Xn.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();
6161
6180
  function d() {
6162
6181
  l.info("是否清空已上传的数据?").then(() => {
6163
6182
  a.value = [];
6164
6183
  });
6165
6184
  }
6166
- let { copy: f } = qt(), { writeSheets: p } = Wa();
6185
+ let { copy: f } = qt(), { writeSheets: p } = Ka();
6167
6186
  function m(e) {
6168
6187
  let t = n.fields.filter((e) => e).map((e) => e.label);
6169
6188
  if (e === "clip") f(t.join(" ")).then(() => u.success("表头已复制到剪切板,请粘贴到Excel文件"));
@@ -6181,7 +6200,7 @@ var Ji = /* @__PURE__ */ M({
6181
6200
  }
6182
6201
  return (t, n) => {
6183
6202
  let r = z("el-space"), l = z("el-popover"), u = z("el-checkbox"), f = z("el-select");
6184
- return F(), O(w, null, [k("div", Xi, [j(r, {
6203
+ return F(), O(w, null, [k("div", $i, [j(r, {
6185
6204
  spacer: "|",
6186
6205
  size: 3
6187
6206
  }, {
@@ -6292,7 +6311,7 @@ var Ji = /* @__PURE__ */ M({
6292
6311
  title: "数据上传",
6293
6312
  width: "350"
6294
6313
  }, {
6295
- default: U(({ data: t }) => [t === "file" ? (F(), E(Yi, {
6314
+ default: U(({ data: t }) => [t === "file" ? (F(), E(Qi, {
6296
6315
  key: 0,
6297
6316
  fields: e.fields,
6298
6317
  sheet_name: e.sheet_name,
@@ -6302,7 +6321,7 @@ var Ji = /* @__PURE__ */ M({
6302
6321
  "fields",
6303
6322
  "sheet_name",
6304
6323
  "referred"
6305
- ])) : D("", !0), t === "clip" ? (F(), E(Ji, {
6324
+ ])) : D("", !0), t === "clip" ? (F(), E(Zi, {
6306
6325
  key: 1,
6307
6326
  fields: e.fields,
6308
6327
  referred: V(s),
@@ -6312,11 +6331,11 @@ var Ji = /* @__PURE__ */ M({
6312
6331
  }, 512)], 64);
6313
6332
  };
6314
6333
  }
6315
- }), Qi = /* @__PURE__ */ M({
6334
+ }), ta = /* @__PURE__ */ M({
6316
6335
  __name: "UploadDictionary",
6317
6336
  props: { field: {} },
6318
6337
  setup(e) {
6319
- let t = e, { results: n, total: r, pager: i } = ai(T(() => t.field.values));
6338
+ let t = e, { results: n, total: r, pager: i } = ci(T(() => t.field.values));
6320
6339
  return (e, t) => {
6321
6340
  let a = z("el-table-column"), o = z("el-pagination"), s = z("el-table");
6322
6341
  return F(), E(s, {
@@ -6374,7 +6393,7 @@ var Ji = /* @__PURE__ */ M({
6374
6393
  }, 8, ["data"]);
6375
6394
  };
6376
6395
  }
6377
- }), $i = /* @__PURE__ */ M({
6396
+ }), na = /* @__PURE__ */ M({
6378
6397
  __name: "DictDialog",
6379
6398
  setup(e, { expose: t }) {
6380
6399
  let { copy: n } = qt(), { $message: r } = J(), i = I();
@@ -6427,7 +6446,7 @@ var Ji = /* @__PURE__ */ M({
6427
6446
  ]),
6428
6447
  _: 2
6429
6448
  }, 1024)]),
6430
- default: U(({ data: e }) => [j(Qi, { field: e }, null, 8, ["field"])]),
6449
+ default: U(({ data: e }) => [j(ta, { field: e }, null, 8, ["field"])]),
6431
6450
  _: 1
6432
6451
  }, 512);
6433
6452
  };
@@ -6435,21 +6454,21 @@ var Ji = /* @__PURE__ */ M({
6435
6454
  });
6436
6455
  //#endregion
6437
6456
  //#region morghulis/library/use-data/methods.ts
6438
- function ea(e) {
6457
+ function ra(e) {
6439
6458
  if (!/^\d{4}-\d{2}-\d{2}$/.test(e)) return !1;
6440
6459
  let t = /* @__PURE__ */ new Date(e + "T00:00:00.000Z");
6441
6460
  return Number.isFinite(t.getTime()) && t.toISOString().slice(0, 10) === e;
6442
6461
  }
6443
- function ta(e) {
6462
+ function ia(e) {
6444
6463
  return /^(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d$/.test(e);
6445
6464
  }
6446
- function na(e) {
6465
+ function aa(e) {
6447
6466
  let [t, n, ...r] = e.split(" ");
6448
- return !!t && !!n && !r.length && ea(t) && ta(n);
6467
+ return !!t && !!n && !r.length && ra(t) && ia(n);
6449
6468
  }
6450
6469
  //#endregion
6451
6470
  //#region morghulis/components/uploader/hooks.ts
6452
- function ra(e, t) {
6471
+ function oa(e, t) {
6453
6472
  let n = T(() => {
6454
6473
  let n = e.value.map((e) => {
6455
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()) : {};
@@ -6469,8 +6488,8 @@ function ra(e, t) {
6469
6488
  value: null,
6470
6489
  label: ""
6471
6490
  };
6472
- if (Xn.referred.includes(a)) {
6473
- let e = Xn.multiple.includes(a), { mapping: n } = i;
6491
+ if (Qn.referred.includes(a)) {
6492
+ let e = Qn.multiple.includes(a), { mapping: n } = i;
6474
6493
  if (e) {
6475
6494
  if (t.value) {
6476
6495
  let e = r.split(";"), t = e.filter((e) => !n[e]), i = t.length ? `索引 ${t} 不在字典中` : void 0, a = e.filter((e) => !t.includes(e));
@@ -6573,11 +6592,11 @@ function ra(e, t) {
6573
6592
  "DateTimeField"
6574
6593
  ].includes(a)) {
6575
6594
  let e = r.trim();
6576
- if (na(e)) {
6595
+ if (aa(e)) {
6577
6596
  let [t = "", n = ""] = e.split(" ");
6578
6597
  a === "DateField" && (e = t), a === "TimeField" && (e = n);
6579
6598
  }
6580
- return (a === "DateField" ? ea(e) : a === "TimeField" ? ta(e) : na(e)) ? {
6599
+ return (a === "DateField" ? ra(e) : a === "TimeField" ? ia(e) : aa(e)) ? {
6581
6600
  value: e,
6582
6601
  label: e
6583
6602
  } : {
@@ -6595,10 +6614,10 @@ function ra(e, t) {
6595
6614
  }
6596
6615
  //#endregion
6597
6616
  //#region morghulis/components/uploader/UploadTable.vue?vue&type=script&setup=true&lang.ts
6598
- var ia = {
6617
+ var sa = {
6599
6618
  style: { height: "200px" },
6600
6619
  class: "h-center center"
6601
- }, aa = { key: 0 }, oa = { key: 1 }, sa = /* @__PURE__ */ M({
6620
+ }, ca = { key: 0 }, la = { key: 1 }, ua = /* @__PURE__ */ M({
6602
6621
  __name: "UploadTable",
6603
6622
  props: {
6604
6623
  dict: {},
@@ -6639,10 +6658,10 @@ var ia = {
6639
6658
  type: "danger",
6640
6659
  icon: "remove"
6641
6660
  }];
6642
- }), { results: f, pager: p, total: m } = ai(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(() => {
6643
6662
  let e = n.dict.fields.filter((e) => n.keys.includes(e.prop)), { id: t, sort: r } = n;
6644
6663
  return t && e.unshift(_), r && e.unshift(v), e;
6645
- }), { parser: g } = ra(h, o), _ = {
6664
+ }), { parser: g } = oa(h, o), _ = {
6646
6665
  label: "ID",
6647
6666
  prop: "id",
6648
6667
  domain: "BigAutoField",
@@ -6672,7 +6691,7 @@ var ia = {
6672
6691
  return t({ getData: x }), (t, n) => {
6673
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");
6674
6693
  return F(), O(w, null, [
6675
- j(Zi, {
6694
+ j(ea, {
6676
6695
  fields: h.value,
6677
6696
  file_name: e.dict.meta_name,
6678
6697
  sheet_name: e.dict.view_name,
@@ -6700,7 +6719,7 @@ var ia = {
6700
6719
  "cell-class-name": c,
6701
6720
  onCellClick: l
6702
6721
  }, {
6703
- empty: U(() => [k("div", ia, [j(G, {
6722
+ empty: U(() => [k("div", sa, [j(G, {
6704
6723
  icon: "info-circle",
6705
6724
  size: "large",
6706
6725
  "icon-size": "lg"
@@ -6743,7 +6762,7 @@ var ia = {
6743
6762
  key: 0,
6744
6763
  disabled: !e.hasEmpty && !e.isDuplicate
6745
6764
  }, {
6746
- content: U(() => [e.hasEmpty ? (F(), O("div", aa, "索引存在空值")) : D("", !0), e.isDuplicate ? D("", !0) : (F(), O("div", oa, "索引存在重复值"))]),
6765
+ content: U(() => [e.hasEmpty ? (F(), O("div", ca, "索引存在空值")) : D("", !0), e.isDuplicate ? D("", !0) : (F(), O("div", la, "索引存在重复值"))]),
6747
6766
  default: U(() => [j(K, {
6748
6767
  icon: "book",
6749
6768
  type: o.value ? "warning" : "info",
@@ -6769,11 +6788,11 @@ var ia = {
6769
6788
  title: "请至少选择一个字段",
6770
6789
  icon: "warning"
6771
6790
  })),
6772
- j($i, {
6791
+ j(na, {
6773
6792
  ref_key: "dictRef",
6774
6793
  ref: r
6775
6794
  }, null, 512),
6776
- j(nr, {
6795
+ j(ir, {
6777
6796
  ref_key: "invalidRef",
6778
6797
  ref: i,
6779
6798
  width: "80",
@@ -6788,7 +6807,7 @@ var ia = {
6788
6807
  ], 64);
6789
6808
  };
6790
6809
  }
6791
- }), ca = /* @__PURE__ */ M({
6810
+ }), da = /* @__PURE__ */ M({
6792
6811
  __name: "UploadSwitcher",
6793
6812
  props: {
6794
6813
  id: { type: Boolean },
@@ -6844,11 +6863,11 @@ var ia = {
6844
6863
  });
6845
6864
  };
6846
6865
  }
6847
- }), la = /* @__PURE__ */ M({
6866
+ }), fa = /* @__PURE__ */ M({
6848
6867
  __name: "MUploader",
6849
6868
  emits: ["confirm"],
6850
6869
  setup(e, { expose: t, emit: n }) {
6851
- let r = I(), i = I(), a = n, { post: o } = X();
6870
+ let r = I(), i = I(), a = n, { post: o } = Y();
6852
6871
  function s(e) {
6853
6872
  let t = i.value?.getData();
6854
6873
  return t && a("confirm", t), t;
@@ -6900,7 +6919,7 @@ var ia = {
6900
6919
  default: U(() => [j(kn, { items: e.options }, null, 8, ["items"])]),
6901
6920
  _: 2
6902
6921
  }, 1032, ["modelValue", "onUpdate:modelValue"])]),
6903
- tool: U(({ data: e }) => [j(ca, {
6922
+ tool: U(({ data: e }) => [j(da, {
6904
6923
  id: e.id,
6905
6924
  "onUpdate:id": (t) => e.id = t,
6906
6925
  sort: e.sort,
@@ -6915,7 +6934,7 @@ var ia = {
6915
6934
  "is_update",
6916
6935
  "onUpdate:is_update"
6917
6936
  ])]),
6918
- default: U(({ data: e }) => [j(sa, {
6937
+ default: U(({ data: e }) => [j(ua, {
6919
6938
  ref_key: "tableRef",
6920
6939
  ref: i,
6921
6940
  dict: e.dict,
@@ -6934,7 +6953,7 @@ var ia = {
6934
6953
  }, 512);
6935
6954
  };
6936
6955
  }
6937
- }), ua = /* @__PURE__ */ M({
6956
+ }), pa = /* @__PURE__ */ M({
6938
6957
  __name: "DataTable",
6939
6958
  props: {
6940
6959
  disable_tree: { type: Boolean },
@@ -6985,11 +7004,11 @@ var ia = {
6985
7004
  ...n,
6986
7005
  code: r.value,
6987
7006
  entity: i.value
6988
- })), 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 } = $n(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);
6989
7008
  function ce(e) {
6990
7009
  se.value = e;
6991
7010
  }
6992
- let { columns: le } = qa(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);
6993
7012
  async function de(e = !1) {
6994
7013
  try {
6995
7014
  if (e) {
@@ -7018,7 +7037,7 @@ var ia = {
7018
7037
  async function pe(e) {
7019
7038
  return m.value?.saveData();
7020
7039
  }
7021
- let { writeSheets: me } = Wa(), { copy: he } = qt(), { $message: ge } = J();
7040
+ let { writeSheets: me } = Ka(), { copy: he } = qt(), { $message: ge } = J();
7022
7041
  function _e(e) {
7023
7042
  S.find().then((t) => {
7024
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 = {
@@ -7103,7 +7122,7 @@ var ia = {
7103
7122
  let o = e.id;
7104
7123
  n.single ? (C.value.clear(), C.value.add(o)) : C.value.has(o) ? C.value.delete(o) : C.value.add(o);
7105
7124
  }
7106
- let { createSortable: Ne } = Wr(u, S.sorting);
7125
+ let { createSortable: Ne } = qr(u, S.sorting);
7107
7126
  return H(() => x.value.results, (e, t) => {
7108
7127
  let n = !!b.value.control.allow_edit_on_sort && un(ee.value, { sort: -1 });
7109
7128
  Ne(x.value.results, n);
@@ -7116,13 +7135,13 @@ var ia = {
7116
7135
  }), (t, n) => {
7117
7136
  let l = z("el-space"), y = z("el-table-column"), te = z("el-text"), ne = z("el-table");
7118
7137
  return F(), O(w, null, [
7119
- j(Br, {
7138
+ j(Ur, {
7120
7139
  ref: "wrapperRef",
7121
7140
  loading: V(ie),
7122
7141
  ticking: V(re)
7123
7142
  }, {
7124
7143
  header: U(() => [j(l, null, {
7125
- default: U(() => [e.codes ? (F(), E(bi, {
7144
+ default: U(() => [e.codes ? (F(), E(Ci, {
7126
7145
  key: 0,
7127
7146
  entity: e.entity,
7128
7147
  code: r.value,
@@ -7148,7 +7167,7 @@ var ia = {
7148
7167
  default: U(() => [R(t.$slots, "tool", {
7149
7168
  entity: i.value,
7150
7169
  code: r.value
7151
- }), j(Gr, {
7170
+ }), j(Jr, {
7152
7171
  disable_tree: e.disable_tree,
7153
7172
  unrestricted: ue.value,
7154
7173
  collector: V(C),
@@ -7168,7 +7187,7 @@ var ia = {
7168
7187
  ])]),
7169
7188
  _: 3
7170
7189
  })]),
7171
- footer: U(({ width: e }) => [j(Zr, {
7190
+ footer: U(({ width: e }) => [j(ei, {
7172
7191
  size: c.value.size,
7173
7192
  "onUpdate:size": n[1] ||= (e) => c.value.size = e,
7174
7193
  page: c.value.page,
@@ -7194,7 +7213,7 @@ var ia = {
7194
7213
  height: e.table_height || "auto",
7195
7214
  size: e.table_size || "small",
7196
7215
  data: V(x).results,
7197
- "tooltip-options": V(Kr),
7216
+ "tooltip-options": V(Yr),
7198
7217
  onCellClick: Me,
7199
7218
  onCellDblclick: Ae,
7200
7219
  onCellContextmenu: ke,
@@ -7213,7 +7232,7 @@ var ia = {
7213
7232
  _: 1
7214
7233
  })]),
7215
7234
  default: U(() => [
7216
- j(qr, {
7235
+ j(Xr, {
7217
7236
  unrestricted: ue.value,
7218
7237
  collector: V(C),
7219
7238
  size: V(x).results.length,
@@ -7234,7 +7253,7 @@ var ia = {
7234
7253
  "header-align": "left",
7235
7254
  "min-width": 120
7236
7255
  }, {
7237
- header: U(() => [j(Yr, {
7256
+ header: U(() => [j(Qr, {
7238
7257
  field: t,
7239
7258
  finder: V(oe),
7240
7259
  orders: V(ee),
@@ -7250,7 +7269,7 @@ var ia = {
7250
7269
  "unrestricted",
7251
7270
  "includes"
7252
7271
  ])]),
7253
- default: U(({ row: e }) => [j(Si, {
7272
+ default: U(({ row: e }) => [j(Ti, {
7254
7273
  row: e,
7255
7274
  field: t,
7256
7275
  meta: V(b),
@@ -7276,7 +7295,7 @@ var ia = {
7276
7295
  fixed: e.fixed || "right",
7277
7296
  width: e.width || "auto"
7278
7297
  }, {
7279
- default: U(({ row: t }) => [j(Hr, {
7298
+ default: U(({ row: t }) => [j(Gr, {
7280
7299
  data: t,
7281
7300
  column: e,
7282
7301
  collector: V(C)
@@ -7300,7 +7319,7 @@ var ia = {
7300
7319
  "show-overflow-tooltip": !1
7301
7320
  }, {
7302
7321
  header: U(() => [j(G, { icon: "screwdriver-wrench" })]),
7303
- default: U(({ row: t }) => [j(Ur, {
7322
+ default: U(({ row: t }) => [j(Kr, {
7304
7323
  buttons: e.buttons,
7305
7324
  data: t,
7306
7325
  collector: V(C),
@@ -7331,15 +7350,15 @@ var ia = {
7331
7350
  width: "500",
7332
7351
  onClosed: n[3] ||= (e) => V(S).init()
7333
7352
  }, {
7334
- default: U(({ data: e }) => [j(Ki, { field_id: e.id }, null, 8, ["field_id"])]),
7353
+ default: U(({ data: e }) => [j(Yi, { field_id: e.id }, null, 8, ["field_id"])]),
7335
7354
  _: 1
7336
7355
  }, 512),
7337
- j(nr, {
7356
+ j(ir, {
7338
7357
  ref_key: "metaRef",
7339
7358
  ref: h,
7340
7359
  onHide: V(S).init
7341
7360
  }, {
7342
- default: U(() => [j(Wi, {
7361
+ default: U(() => [j(qi, {
7343
7362
  entity: i.value,
7344
7363
  "onUpdate:entity": n[4] ||= (e) => i.value = e,
7345
7364
  code: r.value,
@@ -7347,17 +7366,17 @@ var ia = {
7347
7366
  }, null, 8, ["entity", "code"])]),
7348
7367
  _: 1
7349
7368
  }, 8, ["onHide"]),
7350
- j(la, {
7369
+ j(fa, {
7351
7370
  ref_key: "uploadRef",
7352
7371
  ref: f,
7353
7372
  onConfirm: o
7354
7373
  }, null, 512),
7355
- j(nr, {
7374
+ j(ir, {
7356
7375
  ref_key: "searchRef",
7357
7376
  ref: g,
7358
7377
  width: "250px"
7359
7378
  }, {
7360
- default: U(({ data: t }) => [j(ti, {
7379
+ default: U(({ data: t }) => [j(ii, {
7361
7380
  field: t,
7362
7381
  finder: V(oe),
7363
7382
  includes: e.includes,
@@ -7377,8 +7396,8 @@ var ia = {
7377
7396
  cancel: fe,
7378
7397
  width: "550"
7379
7398
  }, {
7380
- header: U(({ data: e }) => [j(ni, { data: e }, null, 8, ["data"])]),
7381
- default: U(({ data: { items: e, is_insert: t, count: n } }) => [j(ii, {
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, {
7382
7401
  ref_key: "saveFormRef",
7383
7402
  ref: m,
7384
7403
  items: e,
@@ -7395,7 +7414,7 @@ var ia = {
7395
7414
  ])]),
7396
7415
  _: 1
7397
7416
  }, 512),
7398
- j(yi, {
7417
+ j(Si, {
7399
7418
  ref_key: "cellRef",
7400
7419
  ref: _,
7401
7420
  manager: V(S)
@@ -7405,7 +7424,7 @@ var ia = {
7405
7424
  ref_key: "treeDialogRef",
7406
7425
  ref: v
7407
7426
  }, {
7408
- default: U(({ data: e }) => [j(ha, {
7427
+ default: U(({ data: e }) => [j(va, {
7409
7428
  entity: i.value,
7410
7429
  code: r.value,
7411
7430
  disable_table: "",
@@ -7416,7 +7435,7 @@ var ia = {
7416
7435
  ], 64);
7417
7436
  };
7418
7437
  }
7419
- }), da = /* @__PURE__ */ M({
7438
+ }), ma = /* @__PURE__ */ M({
7420
7439
  __name: "DTreeTablePlugin",
7421
7440
  props: {
7422
7441
  data: {},
@@ -7436,7 +7455,7 @@ var ia = {
7436
7455
  onClick: n[0] ||= (t) => e.invoke(e.data, t)
7437
7456
  }));
7438
7457
  }
7439
- }), fa = /* @__PURE__ */ M({
7458
+ }), ha = /* @__PURE__ */ M({
7440
7459
  __name: "DTreeTable",
7441
7460
  props: {
7442
7461
  entity: {},
@@ -7453,14 +7472,14 @@ var ia = {
7453
7472
  label: "节点",
7454
7473
  fixed: "left",
7455
7474
  width: 50,
7456
- component: da,
7475
+ component: ma,
7457
7476
  callback(e) {
7458
7477
  n.value = e.id || 0;
7459
7478
  }
7460
7479
  }];
7461
7480
  return (t, a) => {
7462
7481
  let o = z("el-text"), s = z("el-space");
7463
- return F(), E(ua, {
7482
+ return F(), E(pa, {
7464
7483
  ref: "tableRef",
7465
7484
  entity: e.entity,
7466
7485
  code: e.code,
@@ -7497,10 +7516,10 @@ var ia = {
7497
7516
  ]);
7498
7517
  };
7499
7518
  }
7500
- }), pa = { style: { padding: "10px" } }, ma = {
7519
+ }), ga = { style: { padding: "10px" } }, _a = {
7501
7520
  class: "justified full",
7502
7521
  style: { "padding-right": "10px" }
7503
- }, ha = /* @__PURE__ */ M({
7522
+ }, va = /* @__PURE__ */ M({
7504
7523
  __name: "DataTree",
7505
7524
  props: {
7506
7525
  disable_table: { type: Boolean },
@@ -7532,11 +7551,11 @@ var ia = {
7532
7551
  let r = e, i = n, a = I(r.code || "default"), o = I(r.entity), s = I({
7533
7552
  type: "tree",
7534
7553
  root: r.root
7535
- }), { meta: c, response: l, manager: u, api: d, loading: f, ticking: p, error: m, finder: h, collector: g, model: _ } = $n(T(() => ({
7554
+ }), { meta: c, response: l, manager: u, api: d, loading: f, ticking: p, error: m, finder: h, collector: g, model: _ } = tr(T(() => ({
7536
7555
  ...r,
7537
7556
  code: a.value,
7538
7557
  entity: o.value
7539
- })), s), { columns: v } = qa(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(() => {
7540
7559
  let e = [];
7541
7560
  return Object.values(_.value.mapping).forEach((t) => {
7542
7561
  let { id: n, children: r } = t;
@@ -7678,13 +7697,13 @@ var ia = {
7678
7697
  }), (t, n) => {
7679
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");
7680
7699
  return F(), O(w, null, [
7681
- j(nr, {
7700
+ j(ir, {
7682
7701
  ref_key: "nodePopoverRef",
7683
7702
  ref: b,
7684
7703
  placement: "right",
7685
7704
  width: "250px"
7686
7705
  }, {
7687
- default: U(({ data: t }) => [j(zr, {
7706
+ default: U(({ data: t }) => [j(Hr, {
7688
7707
  control: V(c).control,
7689
7708
  data: t,
7690
7709
  field: te.value,
@@ -7706,7 +7725,7 @@ var ia = {
7706
7725
  ])]),
7707
7726
  _: 1
7708
7727
  }, 512),
7709
- j(Br, {
7728
+ j(Ur, {
7710
7729
  ref: "wrapperRef",
7711
7730
  loading: V(f),
7712
7731
  ticking: V(p)
@@ -7728,7 +7747,7 @@ var ia = {
7728
7747
  })])
7729
7748
  ]),
7730
7749
  _: 3
7731
- }), j(Vr, {
7750
+ }), j(Wr, {
7732
7751
  unrestricted: e.unrestricted,
7733
7752
  collector: V(g),
7734
7753
  control: V(c).control,
@@ -7745,7 +7764,7 @@ var ia = {
7745
7764
  "mapping",
7746
7765
  "disable_table"
7747
7766
  ])]),
7748
- default: U(() => [k("div", pa, [j(s, {
7767
+ default: U(() => [k("div", ga, [j(s, {
7749
7768
  modelValue: ne.value,
7750
7769
  "onUpdate:modelValue": n[1] ||= (e) => ne.value = e,
7751
7770
  placeholder: "搜索...",
@@ -7777,8 +7796,8 @@ var ia = {
7777
7796
  onNodeDrop: be,
7778
7797
  "filter-node-method": se
7779
7798
  }, {
7780
- default: U(({ data: n, node: r }) => [k("div", ma, [j(i, null, {
7781
- default: U(() => [j(tr, {
7799
+ default: U(({ data: n, node: r }) => [k("div", _a, [j(i, null, {
7800
+ default: U(() => [j(rr, {
7782
7801
  collector: V(g),
7783
7802
  data: n,
7784
7803
  node: r,
@@ -7815,7 +7834,7 @@ var ia = {
7815
7834
  node: r,
7816
7835
  data: n
7817
7836
  }, void 0, void 0, 1)]),
7818
- (F(!0), O(w, null, L(V(v), (e) => (F(), E(Hr, {
7837
+ (F(!0), O(w, null, L(V(v), (e) => (F(), E(Gr, {
7819
7838
  data: n,
7820
7839
  column: e,
7821
7840
  collector: V(g)
@@ -7824,7 +7843,7 @@ var ia = {
7824
7843
  "column",
7825
7844
  "collector"
7826
7845
  ]))), 256)),
7827
- j(Ur, {
7846
+ j(Kr, {
7828
7847
  buttons: e.buttons,
7829
7848
  data: n,
7830
7849
  collector: V(g),
@@ -7868,7 +7887,7 @@ var ia = {
7868
7887
  ref: ee,
7869
7888
  width: "1000"
7870
7889
  }, {
7871
- default: U(({ data: e }) => [j(fa, {
7890
+ default: U(({ data: e }) => [j(ha, {
7872
7891
  mapping: V(_).mapping,
7873
7892
  entity: o.value,
7874
7893
  code: a.value,
@@ -7884,10 +7903,10 @@ var ia = {
7884
7903
  ], 64);
7885
7904
  };
7886
7905
  }
7887
- }), ga = { class: "justified full" }, _a = {
7906
+ }), ya = { class: "justified full" }, ba = {
7888
7907
  key: 0,
7889
7908
  style: { "padding-right": "5px" }
7890
- }, va = /* @__PURE__ */ M({
7909
+ }, xa = /* @__PURE__ */ M({
7891
7910
  __name: "MenuTreeNode",
7892
7911
  props: {
7893
7912
  item: {},
@@ -7899,7 +7918,7 @@ var ia = {
7899
7918
  let { is_admin: e, roles: n, is_free: r } = t.item;
7900
7919
  return e ? "lock" : r ? "unlock" : n?.length ? "user-lock" : "user";
7901
7920
  }), a = T(() => t.item.isLeaf && n.value ? "#000000" : "#c5c8d5");
7902
- return (t, o) => (F(), O("div", ga, [k("div", null, [j(V(G), {
7921
+ return (t, o) => (F(), O("div", ya, [k("div", null, [j(V(G), {
7903
7922
  style: jt({
7904
7923
  color: a.value,
7905
7924
  marginRight: "7px"
@@ -7918,13 +7937,13 @@ var ia = {
7918
7937
  }, {
7919
7938
  default: U(() => [A(B(e.item.name), 1)]),
7920
7939
  _: 1
7921
- }, 8, ["size", "tag"])]), e.item.isLeaf ? (F(), O("div", _a, [j(V(G), {
7940
+ }, 8, ["size", "tag"])]), e.item.isLeaf ? (F(), O("div", ba, [j(V(G), {
7922
7941
  icon: i.value,
7923
7942
  "icon-size": "xs",
7924
7943
  type: "info"
7925
7944
  }, null, 8, ["icon"])])) : D("", !0)]));
7926
7945
  }
7927
- }), ya = /* @__PURE__ */ M({
7946
+ }), Sa = /* @__PURE__ */ M({
7928
7947
  __name: "MMenu",
7929
7948
  props: {
7930
7949
  current: {},
@@ -7959,7 +7978,7 @@ var ia = {
7959
7978
  default: U(() => [...n[0] ||= [A("无菜单", -1)]]),
7960
7979
  _: 1
7961
7980
  })]),
7962
- default: U(({ data: t, node: n }) => [j(va, {
7981
+ default: U(({ data: t, node: n }) => [j(xa, {
7963
7982
  item: t,
7964
7983
  path: e.current,
7965
7984
  node: n
@@ -7972,34 +7991,34 @@ var ia = {
7972
7991
  }, 8, ["data"]);
7973
7992
  };
7974
7993
  }
7975
- }), ba = /* @__PURE__ */ M({
7994
+ }), Ca = /* @__PURE__ */ M({
7976
7995
  __name: "RoleMenuView",
7977
7996
  props: {
7978
7997
  roles_set: {},
7979
7998
  is_free: { type: Boolean }
7980
7999
  },
7981
8000
  setup(e) {
7982
- let t = e, n = I([]), { post: r } = X();
8001
+ let t = e, n = I([]), { post: r } = Y();
7983
8002
  return H(() => t, () => {
7984
8003
  let { roles_set: e, is_free: i } = t, a = {
7985
8004
  is_free: i,
7986
8005
  roles: e.map((e) => e.id)
7987
8006
  };
7988
8007
  r("valar/view_menu", a).then((e) => {
7989
- let t = zn(e);
8008
+ let t = Vn(e);
7990
8009
  n.value = t.rootNode.children || [];
7991
8010
  });
7992
8011
  }, {
7993
8012
  deep: !0,
7994
8013
  immediate: !0
7995
- }), (e, t) => (F(), E(ya, { options: n.value }, null, 8, ["options"]));
8014
+ }), (e, t) => (F(), E(Sa, { options: n.value }, null, 8, ["options"]));
7996
8015
  }
7997
- }), xa = { style: { "text-align": "center" } }, Sa = /* @__PURE__ */ M({
8016
+ }), wa = { style: { "text-align": "center" } }, Ta = /* @__PURE__ */ M({
7998
8017
  __name: "AccountSetting",
7999
8018
  props: { account: {} },
8000
8019
  emits: ["update:account"],
8001
8020
  setup(e, { emit: t }) {
8002
- 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");
8003
8022
  return P(() => {
8004
8023
  let e = [
8005
8024
  "username",
@@ -8015,13 +8034,13 @@ var ia = {
8015
8034
  return a.value === "user__name" && (t.display = e.username), t;
8016
8035
  });
8017
8036
  });
8018
- }), (e, t) => (F(), O("div", xa, [j(V(Er), {
8037
+ }), (e, t) => (F(), O("div", wa, [j(V(Or), {
8019
8038
  modelValue: V(n),
8020
8039
  "onUpdate:modelValue": t[0] ||= (e) => N(n) ? n.value = e : null,
8021
8040
  options: i.value
8022
8041
  }, null, 8, ["modelValue", "options"])]));
8023
8042
  }
8024
- }), Ca = /* @__PURE__ */ M({
8043
+ }), Ea = /* @__PURE__ */ M({
8025
8044
  __name: "RoleManage",
8026
8045
  setup(e) {
8027
8046
  let t = I(), n = I(), r = I(), i = [{
@@ -8040,7 +8059,7 @@ var ia = {
8040
8059
  return (e, s) => {
8041
8060
  let c = z("el-tag"), l = z("el-checkbox"), u = z("el-space");
8042
8061
  return F(), O(w, null, [
8043
- j(ha, {
8062
+ j(va, {
8044
8063
  ref_key: "treeRef",
8045
8064
  ref: t,
8046
8065
  code: "auth",
@@ -8074,7 +8093,7 @@ var ia = {
8074
8093
  width: "600",
8075
8094
  confirm: o
8076
8095
  }, {
8077
- default: U(({ data: e }) => [j(Sa, {
8096
+ default: U(({ data: e }) => [j(Ta, {
8078
8097
  account: e.account,
8079
8098
  "onUpdate:account": (t) => e.account = t
8080
8099
  }, null, 8, ["account", "onUpdate:account"])]),
@@ -8115,7 +8134,7 @@ var ia = {
8115
8134
  }, 8, ["modelValue", "onUpdate:modelValue"]))]),
8116
8135
  _: 2
8117
8136
  }, 1024)]),
8118
- default: U(({ data: e }) => [j(ba, {
8137
+ default: U(({ data: e }) => [j(Ca, {
8119
8138
  roles_set: a.value,
8120
8139
  is_free: e.is_free
8121
8140
  }, null, 8, ["roles_set", "is_free"])]),
@@ -8124,7 +8143,7 @@ var ia = {
8124
8143
  ], 64);
8125
8144
  };
8126
8145
  }
8127
- }), wa = /* @__PURE__ */ M({
8146
+ }), Da = /* @__PURE__ */ M({
8128
8147
  __name: "MenuAuthPlugin",
8129
8148
  props: {
8130
8149
  data: {},
@@ -8203,7 +8222,7 @@ var ia = {
8203
8222
  })) : D("", !0);
8204
8223
  };
8205
8224
  }
8206
- }), Ta = { style: { "margin-bottom": "8px" } }, Ea = /* @__PURE__ */ M({
8225
+ }), Oa = { style: { "margin-bottom": "8px" } }, ka = /* @__PURE__ */ M({
8207
8226
  __name: "RouteSetting",
8208
8227
  props: {
8209
8228
  routes: {},
@@ -8221,7 +8240,7 @@ var ia = {
8221
8240
  }
8222
8241
  return (t, n) => {
8223
8242
  let r = z("el-select");
8224
- return F(), O(w, null, [k("div", Ta, [j(V(K), {
8243
+ return F(), O(w, null, [k("div", Oa, [j(V(K), {
8225
8244
  icon: "save",
8226
8245
  disabled: i.value === e.menu.path,
8227
8246
  onClick: a
@@ -8244,10 +8263,10 @@ var ia = {
8244
8263
  }, 8, ["modelValue"])], 64);
8245
8264
  };
8246
8265
  }
8247
- }), Da = {
8266
+ }), Aa = {
8248
8267
  style: { "margin-bottom": "8px" },
8249
8268
  class: "justified"
8250
- }, Oa = /* @__PURE__ */ M({
8269
+ }, ja = /* @__PURE__ */ M({
8251
8270
  __name: "AuthSetting",
8252
8271
  props: { menu: {} },
8253
8272
  emits: ["save"],
@@ -8255,7 +8274,7 @@ var ia = {
8255
8274
  let n = e, r = {
8256
8275
  value: "id",
8257
8276
  label: "name"
8258
- }, i = t, { manager: a, loading: o } = Q("valar.Role"), s = I();
8277
+ }, i = t, { manager: a, loading: o } = Z("valar.Role"), s = I();
8259
8278
  P(() => {
8260
8279
  a.tree().then((e) => s.value = e);
8261
8280
  });
@@ -8270,7 +8289,7 @@ var ia = {
8270
8289
  }
8271
8290
  return (t, n) => {
8272
8291
  let i = z("el-checkbox"), a = z("el-space"), o = z("el-tree-select");
8273
- return F(), O(w, null, [k("div", Da, [j(a, null, {
8292
+ return F(), O(w, null, [k("div", Aa, [j(a, null, {
8274
8293
  default: U(() => [j(i, {
8275
8294
  size: "small",
8276
8295
  modelValue: e.menu.is_admin,
@@ -8329,12 +8348,12 @@ var ia = {
8329
8348
  ])], 64);
8330
8349
  };
8331
8350
  }
8332
- }), ka = /* @__PURE__ */ M({
8351
+ }), Ma = /* @__PURE__ */ M({
8333
8352
  __name: "MenuManage",
8334
8353
  setup(e) {
8335
8354
  let t = I(), n = I(), r = I(), i = I();
8336
8355
  I();
8337
- let { routes: a } = Pa(), { $message: o, $confirm: s } = J(), c = [
8356
+ let { routes: a } = Q(), { $message: o, $confirm: s } = J(), c = [
8338
8357
  {
8339
8358
  label: "路由设置",
8340
8359
  popover: r,
@@ -8367,7 +8386,7 @@ var ia = {
8367
8386
  icon: "lock",
8368
8387
  leaf_only: !0
8369
8388
  }
8370
- ], l = [{ component: wa }], u = T(() => {
8389
+ ], l = [{ component: Da }], u = T(() => {
8371
8390
  let e = t.value?.model.mapping || {}, n = Object.values(e).map((e) => e.path);
8372
8391
  return a.value.filter((e) => !n.includes(e.path)).map(({ path: e, name: t }) => ({
8373
8392
  label: t,
@@ -8384,7 +8403,7 @@ var ia = {
8384
8403
  return (e, o) => {
8385
8404
  let s = z("el-tag"), p = z("el-select");
8386
8405
  return F(), O(w, null, [
8387
- j(ha, {
8406
+ j(va, {
8388
8407
  ref_key: "treeRef",
8389
8408
  ref: t,
8390
8409
  entity: "valar.Menu",
@@ -8439,22 +8458,22 @@ var ia = {
8439
8458
  }, 8, ["modelValue", "onUpdate:modelValue"])]),
8440
8459
  _: 1
8441
8460
  }, 512),
8442
- j(V(nr), {
8461
+ j(V(ir), {
8443
8462
  ref_key: "routePopoverRef",
8444
8463
  ref: r
8445
8464
  }, {
8446
- default: U(({ data: e }) => [j(Ea, {
8465
+ default: U(({ data: e }) => [j(ka, {
8447
8466
  routes: u.value,
8448
8467
  menu: e,
8449
8468
  onSave: f
8450
8469
  }, null, 8, ["routes", "menu"])]),
8451
8470
  _: 1
8452
8471
  }, 512),
8453
- j(V(nr), {
8472
+ j(V(ir), {
8454
8473
  ref_key: "rolePopoverRef",
8455
8474
  ref: i
8456
8475
  }, {
8457
- default: U(({ data: e }) => [j(Oa, {
8476
+ default: U(({ data: e }) => [j(ja, {
8458
8477
  menu: e,
8459
8478
  onSave: f
8460
8479
  }, null, 8, ["menu"])]),
@@ -8463,10 +8482,10 @@ var ia = {
8463
8482
  ], 64);
8464
8483
  };
8465
8484
  }
8466
- }), Aa = /* @__PURE__ */ M({
8485
+ }), Na = /* @__PURE__ */ M({
8467
8486
  __name: "UserManage",
8468
8487
  setup(e) {
8469
- 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();
8470
8489
  function s(e) {
8471
8490
  o("valar/create_user_account", e).then((e) => {
8472
8491
  r.value?.manager.reload();
@@ -8475,7 +8494,7 @@ var ia = {
8475
8494
  function c() {
8476
8495
  r.value?.getMeta() && n.value?.open(i.value, a.value);
8477
8496
  }
8478
- return (e, t) => (F(), O(w, null, [i.value ? (F(), E(V(ua), {
8497
+ return (e, t) => (F(), O(w, null, [i.value ? (F(), E(V(pa), {
8479
8498
  key: 0,
8480
8499
  ref_key: "tableRef",
8481
8500
  ref: r,
@@ -8493,16 +8512,16 @@ var ia = {
8493
8512
  _: 1
8494
8513
  })]),
8495
8514
  _: 1
8496
- }, 8, ["entity", "code"])) : D("", !0), j(la, {
8515
+ }, 8, ["entity", "code"])) : D("", !0), j(fa, {
8497
8516
  ref_key: "uploadRef",
8498
8517
  ref: n,
8499
8518
  onConfirm: s
8500
8519
  }, null, 512)], 64));
8501
8520
  }
8502
- }), ja = /* @__PURE__ */ M({
8521
+ }), Pa = /* @__PURE__ */ M({
8503
8522
  __name: "MSystem",
8504
8523
  setup(e) {
8505
- let t = I(), { account: n, user: r, system: i } = Y();
8524
+ let t = I(), { account: n, user: r, system: i } = Fn();
8506
8525
  return (e, a) => {
8507
8526
  let o = z("el-tab-pane"), s = z("el-tabs");
8508
8527
  return V(n).is_admin ? (F(), E(s, {
@@ -8521,7 +8540,7 @@ var ia = {
8521
8540
  default: U(() => [...a[1] ||= [A("用户管理", -1)]]),
8522
8541
  _: 1
8523
8542
  })]),
8524
- default: U(() => [V(i) === "user" ? (F(), E(Aa, { key: 0 })) : D("", !0)]),
8543
+ default: U(() => [V(i) === "user" ? (F(), E(Na, { key: 0 })) : D("", !0)]),
8525
8544
  _: 1
8526
8545
  })) : D("", !0),
8527
8546
  j(o, {
@@ -8543,7 +8562,7 @@ var ia = {
8543
8562
  default: U(() => [...a[3] ||= [A("角色管理", -1)]]),
8544
8563
  _: 1
8545
8564
  })]),
8546
- default: U(() => [V(i) === "role" ? (F(), E(Ca, { key: 0 })) : D("", !0)]),
8565
+ default: U(() => [V(i) === "role" ? (F(), E(Ea, { key: 0 })) : D("", !0)]),
8547
8566
  _: 1
8548
8567
  }),
8549
8568
  j(o, {
@@ -8554,7 +8573,7 @@ var ia = {
8554
8573
  default: U(() => [...a[4] ||= [A("菜单管理", -1)]]),
8555
8574
  _: 1
8556
8575
  })]),
8557
- default: U(() => [V(i) === "menu" ? (F(), E(ka, { key: 0 })) : D("", !0)]),
8576
+ default: U(() => [V(i) === "menu" ? (F(), E(Ma, { key: 0 })) : D("", !0)]),
8558
8577
  _: 1
8559
8578
  }),
8560
8579
  j(o, {
@@ -8565,14 +8584,14 @@ var ia = {
8565
8584
  default: U(() => [...a[5] ||= [A("数据管理", -1)]]),
8566
8585
  _: 1
8567
8586
  })]),
8568
- default: U(() => [V(i) === "meta" ? (F(), E(Ei, {
8587
+ default: U(() => [V(i) === "meta" ? (F(), E(ki, {
8569
8588
  key: 0,
8570
8589
  entity: "valar.Valar",
8571
8590
  code: "default",
8572
8591
  locked: "",
8573
8592
  onList: t.value?.openFieldList,
8574
8593
  onForm: t.value?.openViewForm
8575
- }, null, 8, ["onList", "onForm"])) : D("", !0), j(Wi, {
8594
+ }, null, 8, ["onList", "onForm"])) : D("", !0), j(qi, {
8576
8595
  ref_key: "metaRef",
8577
8596
  ref: t,
8578
8597
  lock: "",
@@ -8586,7 +8605,7 @@ var ia = {
8586
8605
  }, 8, ["modelValue"])) : D("", !0);
8587
8606
  };
8588
8607
  }
8589
- }), Ma = /* @__PURE__ */ M({
8608
+ }), Fa = /* @__PURE__ */ M({
8590
8609
  __name: "NotFound",
8591
8610
  setup(e) {
8592
8611
  let t = rn(), { counter: n, pause: r, resume: i, isActive: a } = Yt(1e3, {
@@ -8637,7 +8656,7 @@ var ia = {
8637
8656
  });
8638
8657
  };
8639
8658
  }
8640
- }), Na = /* @__PURE__ */ M({
8659
+ }), Ia = /* @__PURE__ */ M({
8641
8660
  __name: "NoPermission",
8642
8661
  setup(e) {
8643
8662
  let t = rn(), { counter: n, pause: r, resume: i, isActive: a } = Yt(1e3, {
@@ -8688,21 +8707,21 @@ var ia = {
8688
8707
  });
8689
8708
  };
8690
8709
  }
8691
- }), Pa = Kt(() => {
8710
+ }), Q = Kt(() => {
8692
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 }) => ({
8693
8712
  path: e,
8694
8713
  name: t
8695
8714
  }))), o = T(() => t.value?.sign_in_only || !1), s = T(() => t.value?.username_label || "");
8696
8715
  function c(n, r) {
8697
- t.value = r || {}, e.add(...Ra, ...r?.icons || []);
8698
- let a = [...r?.routes || [], ...Ia];
8699
- a.find((e) => e.path === "/") || a.unshift(Fa);
8716
+ t.value = r || {}, e.add(...Ba, ...r?.icons || []);
8717
+ let a = [...r?.routes || [], ...Ra];
8718
+ a.find((e) => e.path === "/") || a.unshift(La);
8700
8719
  let o = en({
8701
8720
  history: tn(),
8702
8721
  routes: a
8703
8722
  });
8704
8723
  o.beforeEach((e) => {
8705
- document.title = `${String(e.name)} - ${i.value}`, La.includes(e.path);
8724
+ document.title = `${String(e.name)} - ${i.value}`, za.includes(e.path);
8706
8725
  }), n.use(o);
8707
8726
  }
8708
8727
  return {
@@ -8715,11 +8734,11 @@ var ia = {
8715
8734
  username_label: s,
8716
8735
  install: c
8717
8736
  };
8718
- }), Fa = {
8737
+ }), La = {
8719
8738
  path: "/",
8720
8739
  name: "Welcome",
8721
8740
  component: Mn
8722
- }, Ia = [
8741
+ }, Ra = [
8723
8742
  {
8724
8743
  path: "/:pathMatch(.*)*",
8725
8744
  redirect: "/404"
@@ -8727,23 +8746,23 @@ var ia = {
8727
8746
  {
8728
8747
  path: "/morghulis_system",
8729
8748
  name: "系统管理",
8730
- component: ja
8749
+ component: Pa
8731
8750
  },
8732
8751
  {
8733
8752
  path: "/404",
8734
8753
  name: "页面没找到",
8735
- component: Ma
8754
+ component: Fa
8736
8755
  },
8737
8756
  {
8738
8757
  path: "/403",
8739
8758
  name: "没有权限",
8740
- component: Na
8759
+ component: Ia
8741
8760
  }
8742
- ], La = [
8761
+ ], za = [
8743
8762
  "/",
8744
8763
  "/404",
8745
8764
  "/403"
8746
- ], Ra = [
8765
+ ], Ba = [
8747
8766
  pt,
8748
8767
  Re,
8749
8768
  We,
@@ -8845,11 +8864,11 @@ var ia = {
8845
8864
  mt,
8846
8865
  r,
8847
8866
  _t
8848
- ], za = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
8867
+ ], Va = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
8849
8868
  //#endregion
8850
8869
  //#region morghulis/library/use-auth/index.ts
8851
- function Ba() {
8852
- let { post: e } = X(), { $confirm: t, $message: n } = J(), { sign_in: r, sign_out: i, token: a, register: o } = Y(), { options: s } = Pa();
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();
8853
8872
  async function c(t) {
8854
8873
  try {
8855
8874
  let n = await e("/valar/sign", t);
@@ -8879,7 +8898,7 @@ function Ba() {
8879
8898
  flush: "sync"
8880
8899
  });
8881
8900
  function u(e) {
8882
- let t = Ha(e, s.value) || Va(e);
8901
+ let t = Wa(e, s.value) || Ua(e);
8883
8902
  return t && n.error(t), !t;
8884
8903
  }
8885
8904
  return {
@@ -8888,17 +8907,17 @@ function Ba() {
8888
8907
  validate: u
8889
8908
  };
8890
8909
  }
8891
- function Va(e) {
8910
+ function Ua(e) {
8892
8911
  return e.password.length < 8 ? "密码长度不小于8位" : e.is_sign_in || e.password === e.$password ? null : "两次输入的密码不一致";
8893
8912
  }
8894
- function Ha(e, t) {
8913
+ function Wa(e, t) {
8895
8914
  if (e.username === "admin") return null;
8896
8915
  let { username_label: n, username_exp: r } = t;
8897
- return ((n ? r || /.+/ : za).test(e.username) ? null : `${n || "邮箱"}格式错误`) || (n && !e.is_sign_in ? za.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);
8898
8917
  }
8899
8918
  //#endregion
8900
8919
  //#region morghulis/library/use-data/index.ts
8901
- function Ua(e) {
8920
+ function Ga(e) {
8902
8921
  let t = {
8903
8922
  line: e?.line ?? "\r\n",
8904
8923
  cell: e?.cell ?? " "
@@ -8919,13 +8938,13 @@ function Ua(e) {
8919
8938
  }
8920
8939
  //#endregion
8921
8940
  //#region morghulis/library/use-excel/index.ts
8922
- function Wa() {
8941
+ function Ka() {
8923
8942
  async function e(e, t = !0) {
8924
8943
  let n = await (await fetch(e)).arrayBuffer();
8925
- return e.endsWith(".csv") ? Ga(new TextDecoder("utf-8").decode(n), t) : Ga(n, t);
8944
+ return e.endsWith(".csv") ? qa(new TextDecoder("utf-8").decode(n), t) : qa(n, t);
8926
8945
  }
8927
8946
  async function t(e, t = !0) {
8928
- return Ga(await e.arrayBuffer(), t);
8947
+ return qa(await e.arrayBuffer(), t);
8929
8948
  }
8930
8949
  async function n(e, ...t) {
8931
8950
  let { utils: n, writeFile: r } = await import("xlsx"), i = n.book_new();
@@ -8947,7 +8966,7 @@ function Wa() {
8947
8966
  zip: r
8948
8967
  };
8949
8968
  }
8950
- async function Ga(e, t) {
8969
+ async function qa(e, t) {
8951
8970
  let { utils: n, read: r, SSF: i } = await import("xlsx"), a = r(e, {
8952
8971
  type: "binary",
8953
8972
  cellDates: !0
@@ -8975,15 +8994,15 @@ async function Ga(e, t) {
8975
8994
  }
8976
8995
  //#endregion
8977
8996
  //#region morghulis/library/use-menu/index.ts
8978
- var Ka = Kt(() => {
8997
+ var Ja = Kt(() => {
8979
8998
  let e = I({
8980
8999
  mapping: {},
8981
9000
  options: [],
8982
9001
  rootNode: { children: [] }
8983
- }), { post: t, loading: n } = X();
9002
+ }), { post: t, loading: n } = Y();
8984
9003
  function r() {
8985
9004
  t("valar/load_menu").then((t) => {
8986
- e.value = zn(t);
9005
+ e.value = Vn(t);
8987
9006
  });
8988
9007
  }
8989
9008
  return {
@@ -8994,10 +9013,10 @@ var Ka = Kt(() => {
8994
9013
  });
8995
9014
  //#endregion
8996
9015
  //#region morghulis/library/use-plugin/index.ts
8997
- function qa(e, t) {
9016
+ function Ya(e, t) {
8998
9017
  return { columns: T(() => (e.value || []).filter((e) => !e.codes?.length || e.codes.includes(t.value))) };
8999
9018
  }
9000
- function Ja(e, t, n) {
9019
+ function Xa(e, t, n) {
9001
9020
  return { buttons: T(() => (e.value || []).filter((e) => !e.codes?.length || e.codes.includes(t.value)).filter((e) => {
9002
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;
9003
9022
  return !t && i && r;
@@ -9018,7 +9037,7 @@ function Ja(e, t, n) {
9018
9037
  }
9019
9038
  //#endregion
9020
9039
  //#region morghulis/library/use-size/index.ts
9021
- function Ya() {
9040
+ function Za() {
9022
9041
  let { height: e } = $t();
9023
9042
  return { frame: T(() => {
9024
9043
  let t = {
@@ -9032,12 +9051,12 @@ function Ya() {
9032
9051
  }
9033
9052
  //#endregion
9034
9053
  //#region morghulis/components/feedback/MDialog.vue?vue&type=script&setup=true&lang.ts
9035
- var Xa = { class: "justified" }, Za = {
9054
+ var Qa = { class: "justified" }, $a = {
9036
9055
  class: "m-dialog-content",
9037
9056
  "element-loading-custom-class": "m-dialog-loading",
9038
9057
  "element-loading-background": "rgba(255,255,255,0.6)",
9039
9058
  "element-loading-text": "加载中..."
9040
- }, Qa = {
9059
+ }, eo = {
9041
9060
  key: 0,
9042
9061
  class: "right"
9043
9062
  }, $ = /* @__PURE__ */ M({
@@ -9124,7 +9143,7 @@ var Xa = { class: "justified" }, Za = {
9124
9143
  onClosed: t[1] ||= (e) => i("closed"),
9125
9144
  onKeydown: Wt(v, ["esc"])
9126
9145
  }, {
9127
- header: U(() => [k("div", Xa, [j(r, null, {
9146
+ header: U(() => [k("div", Qa, [j(r, null, {
9128
9147
  default: U(() => [R(e.$slots, "header", { data: l.value }, () => [j(n, { tag: "b" }, {
9129
9148
  default: U(() => [A(B(u.value.title), 1)]),
9130
9149
  _: 1
@@ -9154,7 +9173,7 @@ var Xa = { class: "justified" }, Za = {
9154
9173
  ]),
9155
9174
  _: 3
9156
9175
  })])]),
9157
- footer: U(() => [m.value ? (F(), O("div", Qa, [j(a, {
9176
+ footer: U(() => [m.value ? (F(), O("div", eo, [j(a, {
9158
9177
  type: "success",
9159
9178
  plain: "",
9160
9179
  loading: c.value,
@@ -9171,7 +9190,7 @@ var Xa = { class: "justified" }, Za = {
9171
9190
  default: U(() => [j(G, { icon: "xmark-circle" }), t[3] ||= A(" 取消 ", -1)]),
9172
9191
  _: 1
9173
9192
  }, 8, ["disabled"])])) : D("", !0)]),
9174
- default: U(() => [Ut((F(), O("div", Za, [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]])]),
9175
9194
  _: 3
9176
9195
  }, 8, [
9177
9196
  "modelValue",
@@ -9181,7 +9200,7 @@ var Xa = { class: "justified" }, Za = {
9181
9200
  ]);
9182
9201
  };
9183
9202
  }
9184
- }), $a = /* @__PURE__ */ M({
9203
+ }), to = /* @__PURE__ */ M({
9185
9204
  __name: "MCharts",
9186
9205
  props: {
9187
9206
  options: { default: {
@@ -9231,30 +9250,30 @@ var Xa = { class: "justified" }, Za = {
9231
9250
  })
9232
9251
  }, null, 4));
9233
9252
  }
9234
- }), eo = /* @__PURE__ */ Sn({
9235
- DataTable: () => ua,
9236
- DataTree: () => ha,
9237
- DataWrapper: () => Br,
9253
+ }), no = /* @__PURE__ */ Sn({
9254
+ DataTable: () => pa,
9255
+ DataTree: () => va,
9256
+ DataWrapper: () => Ur,
9238
9257
  MButton: () => K,
9239
- MCell: () => Lr,
9240
- MCharts: () => $a,
9258
+ MCell: () => Br,
9259
+ MCharts: () => to,
9241
9260
  MDialog: () => $,
9242
- MForm: () => ri,
9261
+ MForm: () => oi,
9243
9262
  MIcon: () => G,
9244
- MObjectEditor: () => Nr,
9263
+ MObjectEditor: () => Ir,
9245
9264
  MOptionContent: () => Dn,
9246
9265
  MOptionItem: () => On,
9247
9266
  MOptionList: () => kn,
9248
- MPopover: () => nr,
9249
- MRichEditor: () => Fr,
9267
+ MPopover: () => ir,
9268
+ MRichEditor: () => Rr,
9250
9269
  MText: () => q,
9251
- MTransferEditor: () => Er,
9252
- MUploader: () => la
9253
- }), to = /* @__PURE__ */ M({
9270
+ MTransferEditor: () => Or,
9271
+ MUploader: () => fa
9272
+ }), ro = /* @__PURE__ */ M({
9254
9273
  __name: "FrameMenu",
9255
9274
  emits: ["click"],
9256
9275
  setup(e, { expose: t, emit: n }) {
9257
- let { model: r, loading: i, load: a } = Ka(), 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();
9258
9277
  H(o, () => {
9259
9278
  kt().then(() => s.value?.setCurrentKey(o.value));
9260
9279
  }, { immediate: !0 });
@@ -9306,7 +9325,7 @@ var Xa = { class: "justified" }, Za = {
9306
9325
  }, 8, ["disabled"]), k("div", {
9307
9326
  style: jt({ height: `${V(d) - 90}px` }),
9308
9327
  class: "menu-tree-wrapper"
9309
- }, [j(ya, {
9328
+ }, [j(Sa, {
9310
9329
  options: V(r).rootNode?.children || [],
9311
9330
  current: o.value,
9312
9331
  onGoto: f
@@ -9315,14 +9334,14 @@ var Xa = { class: "justified" }, Za = {
9315
9334
  }, 8, ["modelValue", "onOpen"])], 64);
9316
9335
  };
9317
9336
  }
9318
- }), no = {
9337
+ }), io = {
9319
9338
  key: 1,
9320
9339
  class: "right"
9321
- }, ro = /* @__PURE__ */ M({
9340
+ }, ao = /* @__PURE__ */ M({
9322
9341
  __name: "LoginForm",
9323
9342
  emits: ["retrieve"],
9324
9343
  setup(e, { expose: t, emit: n }) {
9325
- let r = n, { username_label: i, sign_in_only: a } = Pa(), { validate: o } = Ba(), s = I({
9344
+ let r = n, { username_label: i, sign_in_only: a } = Q(), { validate: o } = Ha(), s = I({
9326
9345
  is_sign_in: !0,
9327
9346
  username: "",
9328
9347
  email: "",
@@ -9370,7 +9389,7 @@ var Xa = { class: "justified" }, Za = {
9370
9389
  }, null, 8, ["modelValue"])]),
9371
9390
  _: 1
9372
9391
  }),
9373
- s.value.is_sign_in ? (F(), O("div", no, [j(V(K), {
9392
+ s.value.is_sign_in ? (F(), O("div", io, [j(V(K), {
9374
9393
  type: "info",
9375
9394
  onClick: c
9376
9395
  }, {
@@ -9404,17 +9423,17 @@ var Xa = { class: "justified" }, Za = {
9404
9423
  }]), 1024);
9405
9424
  };
9406
9425
  }
9407
- }), io = /* @__PURE__ */ M({
9426
+ }), oo = /* @__PURE__ */ M({
9408
9427
  __name: "ProfileManage",
9409
9428
  setup(e, { expose: t }) {
9410
- 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([]);
9411
9430
  P(() => {
9412
9431
  o("valar/load_user").then((e) => s.value = e).then(() => a.meta("edit")).then((e) => l.value = e.fields);
9413
9432
  });
9414
9433
  async function u() {
9415
9434
  return ln(c.value) || await a.save_one(c.value), !0;
9416
9435
  }
9417
- return t({ save: u }), (e, t) => s.value ? (F(), E(V(ri), {
9436
+ return t({ save: u }), (e, t) => s.value ? (F(), E(V(oi), {
9418
9437
  key: 0,
9419
9438
  original: s.value,
9420
9439
  modelValue: c.value,
@@ -9426,10 +9445,10 @@ var Xa = { class: "justified" }, Za = {
9426
9445
  "fields"
9427
9446
  ])) : D("", !0);
9428
9447
  }
9429
- }), ao = { key: 0 }, oo = /* @__PURE__ */ M({
9448
+ }), so = { key: 0 }, co = /* @__PURE__ */ M({
9430
9449
  __name: "PasswordManage",
9431
9450
  setup(e, { expose: t }) {
9432
- let n = I(), { user: r, account: i } = Y(), a = I({
9451
+ let n = I(), { user: r, account: i } = Fn(), a = I({
9433
9452
  old_password: "12345678",
9434
9453
  new_password: "19870120",
9435
9454
  $new_password: "19870120"
@@ -9446,7 +9465,7 @@ var Xa = { class: "justified" }, Za = {
9446
9465
  old_password: o,
9447
9466
  new_password: o,
9448
9467
  $new_password: o
9449
- }, { $message: c } = J(), { post: l } = X();
9468
+ }, { $message: c } = J(), { post: l } = Y();
9450
9469
  async function u() {
9451
9470
  let { old_password: e, new_password: t, $new_password: r } = a.value;
9452
9471
  if (t !== r) return c.warning("两次输入的密码不一致"), !1;
@@ -9484,7 +9503,7 @@ var Xa = { class: "justified" }, Za = {
9484
9503
  }, {
9485
9504
  default: U(() => [
9486
9505
  j(c, { prop: "old_password" }, {
9487
- label: U(() => [t[4] ||= A(" 旧密码", -1), V(i).isTemporal ? (F(), O("span", ao, " (或临时密码)")) : D("", !0)]),
9506
+ label: U(() => [t[4] ||= A(" 旧密码", -1), V(i).isTemporal ? (F(), O("span", so, " (或临时密码)")) : D("", !0)]),
9488
9507
  default: U(() => [j(o, {
9489
9508
  type: "password",
9490
9509
  "show-password": "",
@@ -9522,17 +9541,17 @@ var Xa = { class: "justified" }, Za = {
9522
9541
  }, 8, ["model"])], 64);
9523
9542
  };
9524
9543
  }
9525
- }), so = /* @__PURE__ */ M({
9544
+ }), lo = /* @__PURE__ */ M({
9526
9545
  __name: "AccountManage",
9527
9546
  setup(e, { expose: t }) {
9528
- let { user: n, account: r } = Y(), { username_label: i } = Pa(), { $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([]);
9529
9548
  P(async () => {
9530
9549
  s.value = await o.fetch(r.value.id);
9531
9550
  let e = await o.meta("edit");
9532
9551
  l.value = e.fields.map((e) => (e.prop === "username" && i.value && (e.label = i.value), e));
9533
9552
  });
9534
9553
  async function u() {
9535
- return ln(c.value) ? (a.warning("还未补充邮箱信息"), !1) : za.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);
9536
9555
  }
9537
9556
  return t({ save: u }), (e, t) => {
9538
9557
  let n = z("el-alert");
@@ -9551,7 +9570,7 @@ var Xa = { class: "justified" }, Za = {
9551
9570
  _: 1
9552
9571
  })]),
9553
9572
  _: 1
9554
- })), s.value ? (F(), E(V(ri), {
9573
+ })), s.value ? (F(), E(V(oi), {
9555
9574
  key: 1,
9556
9575
  original: s.value,
9557
9576
  modelValue: c.value,
@@ -9564,10 +9583,10 @@ var Xa = { class: "justified" }, Za = {
9564
9583
  ])) : D("", !0)], 64);
9565
9584
  };
9566
9585
  }
9567
- }), co = /* @__PURE__ */ M({
9586
+ }), uo = /* @__PURE__ */ M({
9568
9587
  __name: "AuthDropdown",
9569
9588
  setup(e) {
9570
- 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();
9571
9590
  function s(e) {
9572
9591
  let { component: t, title: n, width: r } = d[e] || {};
9573
9592
  t && (o.value = t, i.value?.open({ key: e }, {
@@ -9575,7 +9594,7 @@ var Xa = { class: "justified" }, Za = {
9575
9594
  title: n
9576
9595
  }));
9577
9596
  }
9578
- let { post: c } = X();
9597
+ let { post: c } = Y();
9579
9598
  async function l(e) {
9580
9599
  let t = await a.value?.save();
9581
9600
  if (t) {
@@ -9589,17 +9608,17 @@ var Xa = { class: "justified" }, Za = {
9589
9608
  return !e || !t || r;
9590
9609
  }), d = {
9591
9610
  profile: {
9592
- component: io,
9611
+ component: oo,
9593
9612
  title: "个人信息管理",
9594
9613
  width: 600
9595
9614
  },
9596
9615
  account: {
9597
- component: so,
9616
+ component: lo,
9598
9617
  title: "账户信息管理",
9599
9618
  width: 600
9600
9619
  },
9601
9620
  password: {
9602
- component: oo,
9621
+ component: co,
9603
9622
  title: "密码管理",
9604
9623
  width: 350
9605
9624
  }
@@ -9679,10 +9698,10 @@ var Xa = { class: "justified" }, Za = {
9679
9698
  }, 512)], 64);
9680
9699
  };
9681
9700
  }
9682
- }), lo = /* @__PURE__ */ M({
9701
+ }), fo = /* @__PURE__ */ M({
9683
9702
  __name: "FrameAuth",
9684
9703
  setup(e) {
9685
- let t = I(), n = I(), r = I(), { account: i, is_login: a } = Y(), { sign: o, exit: s } = Ba();
9704
+ let t = I(), n = I(), r = I(), { account: i, is_login: a } = Fn(), { sign: o, exit: s } = Ha();
9686
9705
  function c() {
9687
9706
  t.value?.open();
9688
9707
  }
@@ -9692,10 +9711,10 @@ var Xa = { class: "justified" }, Za = {
9692
9711
  }
9693
9712
  let u = { email: [{
9694
9713
  validator: (e, t, n) => {
9695
- t === "" ? n(/* @__PURE__ */ Error("请输入邮箱")) : za.test(t) ? n() : n(/* @__PURE__ */ Error("邮箱格式错误"));
9714
+ t === "" ? n(/* @__PURE__ */ Error("请输入邮箱")) : Va.test(t) ? n() : n(/* @__PURE__ */ Error("邮箱格式错误"));
9696
9715
  },
9697
9716
  trigger: "blur"
9698
- }] }, d = I(), { post: f } = X();
9717
+ }] }, d = I(), { post: f } = Y();
9699
9718
  async function p(e) {
9700
9719
  let t = !1;
9701
9720
  return await d.value?.validate((e) => {
@@ -9707,7 +9726,7 @@ var Xa = { class: "justified" }, Za = {
9707
9726
  return F(), O(w, null, [
9708
9727
  V(a) ? (F(), E(f, { key: 0 }, {
9709
9728
  default: U(() => [
9710
- j(co),
9729
+ j(uo),
9711
9730
  V(i)?.is_admin ? (F(), E(V(K), {
9712
9731
  key: 0,
9713
9732
  icon: e.$route.path === "/morghulis_system" ? "rotate-backward" : "gear",
@@ -9743,7 +9762,7 @@ var Xa = { class: "justified" }, Za = {
9743
9762
  width: "400",
9744
9763
  confirm: l
9745
9764
  }, {
9746
- default: U(() => [j(ro, {
9765
+ default: U(() => [j(ao, {
9747
9766
  ref_key: "form",
9748
9767
  ref: r,
9749
9768
  onRetrieve: o[1] ||= (e) => n.value?.open({ email: "" })
@@ -9782,11 +9801,11 @@ var Xa = { class: "justified" }, Za = {
9782
9801
  ], 64);
9783
9802
  };
9784
9803
  }
9785
- }), uo = /* @__PURE__ */ M({
9804
+ }), po = /* @__PURE__ */ M({
9786
9805
  __name: "FrameNavigate",
9787
9806
  emits: ["open"],
9788
9807
  setup(e, { emit: t }) {
9789
- let { model: n } = Ka();
9808
+ let { model: n } = Ja();
9790
9809
  rn();
9791
9810
  let r = nn(), i = t, a = T(() => r.path), o = T(() => {
9792
9811
  let e = Object.values(n.value.mapping), t = e.find((e) => e.path === a.value), r = [];
@@ -9839,16 +9858,16 @@ var Xa = { class: "justified" }, Za = {
9839
9858
  });
9840
9859
  };
9841
9860
  }
9842
- }), fo = {
9861
+ }), mo = {
9843
9862
  class: "justified",
9844
9863
  style: { height: "100%" }
9845
- }, po = {
9864
+ }, ho = {
9846
9865
  class: "justified",
9847
9866
  style: { height: "100%" }
9848
- }, mo = /*#__PURE__*/ wn(/* @__PURE__ */ M({
9867
+ }, go = /*#__PURE__*/ wn(/* @__PURE__ */ M({
9849
9868
  __name: "MFrame",
9850
9869
  setup(e) {
9851
- let { frame: t } = Ya(), n = T(() => `${t.value.body}px`), r = rn(), { title: i } = Pa(), a = I();
9870
+ let { frame: t } = Za(), n = T(() => `${t.value.body}px`), r = rn(), { title: i } = Q(), a = I();
9852
9871
  return (e, o) => {
9853
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");
9854
9873
  return F(), E(h, { class: "container" }, {
@@ -9857,9 +9876,9 @@ var Xa = { class: "justified" }, Za = {
9857
9876
  class: "header",
9858
9877
  height: `${V(t).header}px`
9859
9878
  }, {
9860
- default: U(() => [k("div", fo, [j(l, null, {
9879
+ default: U(() => [k("div", mo, [j(l, null, {
9861
9880
  default: U(() => [
9862
- j(to, {
9881
+ j(ro, {
9863
9882
  ref_key: "menuRef",
9864
9883
  ref: a
9865
9884
  }, null, 512),
@@ -9879,7 +9898,7 @@ var Xa = { class: "justified" }, Za = {
9879
9898
  ]),
9880
9899
  _: 1
9881
9900
  }), j(l, null, {
9882
- default: U(() => [R(e.$slots, "tool", {}, void 0, !0), j(lo)]),
9901
+ default: U(() => [R(e.$slots, "tool", {}, void 0, !0), j(fo)]),
9883
9902
  _: 3
9884
9903
  })])]),
9885
9904
  _: 3
@@ -9888,7 +9907,7 @@ var Xa = { class: "justified" }, Za = {
9888
9907
  class: "neck",
9889
9908
  height: `${V(t).neck}px`
9890
9909
  }, {
9891
- default: U(() => [k("div", po, [j(uo, { 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, {
9892
9911
  default: U(() => [R(e.$slots, "tag", {}, void 0, !0)]),
9893
9912
  _: 3
9894
9913
  })])]),
@@ -9939,13 +9958,13 @@ var Xa = { class: "justified" }, Za = {
9939
9958
  });
9940
9959
  };
9941
9960
  }
9942
- }), [["__scopeId", "data-v-1b59bf74"]]), ho = /* @__PURE__ */ M({
9961
+ }), [["__scopeId", "data-v-1b59bf74"]]), _o = /* @__PURE__ */ M({
9943
9962
  __name: "MApp",
9944
9963
  setup(e) {
9945
- let { title: t } = Pa(), { open: n, status: r } = In();
9964
+ let { title: t } = Q(), { open: n, status: r } = Rn();
9946
9965
  return (e, i) => {
9947
9966
  let a = z("el-text"), o = z("el-result"), s = z("el-button");
9948
- return V(r).code === 200 ? (F(), E(mo, { key: 0 }, {
9967
+ return V(r).code === 200 ? (F(), E(go, { key: 0 }, {
9949
9968
  tool: U(() => [R(e.$slots, "tool")]),
9950
9969
  footer: U(() => [R(e.$slots, "footer")]),
9951
9970
  _: 3
@@ -10000,11 +10019,11 @@ var Xa = { class: "justified" }, Za = {
10000
10019
  })) : D("", !0);
10001
10020
  };
10002
10021
  }
10003
- }), go = eo, _o = (t) => (e.add(wt), { install(e) {
10004
- let { install: n } = Pa();
10005
- n(e, t), Object.entries(go).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]) => {
10006
10025
  e.component(t, n);
10007
10026
  });
10008
10027
  } });
10009
10028
  //#endregion
10010
- export { ua as DataTable, ha as DataTree, Br as DataWrapper, ho as MApp, K as MButton, Lr as MCell, $a as MCharts, $ as MDialog, ri as MForm, G as MIcon, Nr as MObjectEditor, Dn as MOptionContent, On as MOptionItem, kn as MOptionList, nr as MPopover, Fr as MRichEditor, q as MText, Er as MTransferEditor, la as MUploader, _o as createMorghulis, Ba as useAuth, Rn as useChannel, Pn as useChannelContainer, Q as useDao, Ua as useData, Wa as useExcel, J as useFeedback, Ya as useFrameSize, Ka as useMenu, Zn as useMetaQuery, Pa as useOptionState, ai as usePagination, qi as usePaster, Ja as usePluginButton, qa as usePluginColumn, X as useRequest, In as useSocket, Ln as useSocketCallback, Y as useUserState, $n 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 };