morghulis 4.3.0 → 4.3.2

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 } = X(), { $confirm: i, $message: a } = J(), { username_label: o } = Fa();
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(da), {
312
312
  ref_key: "tableRef",
313
313
  ref: t,
314
314
  entity: "valar.Account",
@@ -428,9 +428,11 @@ function Fn(e) {
428
428
  //#endregion
429
429
  //#region morghulis/library/use-request/index.ts
430
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();
431
+ let t = zt(e), { $$message: n } = J(), { base_url: r } = Fa(), { client: i, token: a, sign_out: o, account: s } = Y();
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 In(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 Ln = Kt(() => {
465
+ let { client: e } = Y(), { base_url: t } = Fa(), n = T(() => In(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 Rn(e, t) {
495
+ let { data: n } = Ln();
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,7 +500,7 @@ function Ln(e, t) {
489
500
  }
490
501
  //#endregion
491
502
  //#region morghulis/library/use-channel/index.ts
492
- function Rn(e) {
503
+ function zn(e) {
493
504
  let t = zt(e), { mount: n, unmount: r } = Pn();
494
505
  P(() => n(t.value)), Pt(() => r(t.value));
495
506
  let { post: i, loading: a } = X(T(() => t.value.auth || !1)), { $message: o } = J(), s = I(null), c = I(!1), l = t.value.onError ?? ((e) => console.error(e));
@@ -499,7 +510,7 @@ function Rn(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 Rn("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;
@@ -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 Bn(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 Vn(e) {
569
+ let t = Gn.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 Hn(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 Un(e, t) {
578
589
  return Object.keys(e || {}).filter((e) => {
579
- let { prop: n } = Bn(e);
590
+ let { prop: n } = Vn(e);
580
591
  return n === t;
581
592
  });
582
593
  }
583
- function Un(e) {
594
+ function Wn(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 } = Vn(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 Gn = [
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 Kn(e, t) {
620
+ let { code: n, $entity: r, $name: i, name: a, id: o, $tree: s, $$modes: c } = e, l = qn(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: Jn(e.$$fields, l, t)
620
631
  };
621
632
  }
622
- function Kn(e, t) {
633
+ function qn(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 Jn(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;
@@ -644,7 +655,7 @@ function qn(e, t, n) {
644
655
  //#endregion
645
656
  //#region morghulis/library/use-dao/index.ts
646
657
  function Q(e, t) {
647
- let n = zt(e), r = zt(t || {}), i = an(), { execute: a, payload: o, loading: s, post: c } = Rn(T(() => {
658
+ let n = zt(e), r = zt(t || {}), i = an(), { execute: a, payload: o, loading: s, post: c } = zn(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}`,
@@ -724,7 +735,7 @@ function Q(e, t) {
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 = Bn(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
  });
@@ -756,7 +767,7 @@ function Q(e, t) {
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 Kn(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 Yn = [
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
+ ], Xn = {
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
+ }, Zn = {
838
849
  multiple: [
839
850
  "ManyToManyField",
840
851
  "ManyToManyRel",
@@ -881,7 +892,7 @@ var Jn = [
881
892
  };
882
893
  //#endregion
883
894
  //#region morghulis/library/use-meta-query/index.ts
884
- function Zn(e) {
895
+ function Qn(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);
@@ -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) => Vn(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 Kn(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 = Wn(n), r = Wn(r), [fn({
945
956
  includes: n,
946
957
  excludes: r
947
- }, Qn(t.value, c.value?.fields)), ...e.value.conditions || []];
958
+ }, $n(t.value, c.value?.fields)), ...e.value.conditions || []];
948
959
  })
949
960
  };
950
961
  }
951
- function Qn(e, t = []) {
962
+ function $n(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 (Zn.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 (Zn.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 er(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 } = Qn(e), { loading: h, manager: g } = Q(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 tr = {
1137
1148
  key: 0,
1138
1149
  class: "danger"
1139
- }, tr = /* @__PURE__ */ M({
1150
+ }, nr = /* @__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", tr, B(e.queryString), 1)) : D("", !0), A(B(t), 1)], 64))), 128))])], 64));
1180
1191
  }
1181
- }), nr = /* @__PURE__ */ M({
1192
+ }), rr = /* @__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
+ }), ir = /* @__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
+ }), ar = { class: "full" }, or = /*#__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", ar, [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"]]), sr = /* @__PURE__ */ "0.1.2.3.4.5.6.7.8.9.a.ad.add.address-book.address-card.adjust.air-freshener.align-center.align-justify.align-left.align-right.allergies.ambulance.american-sign-language-interpreting.anchor.anchor-circle-check.anchor-circle-exclamation.anchor-circle-xmark.anchor-lock.angle-double-down.angle-double-left.angle-double-right.angle-double-up.angle-down.angle-left.angle-right.angle-up.angles-down.angles-left.angles-right.angles-up.angry.ankh.apple-alt.apple-whole.archive.archway.area-chart.arrow-alt-circle-down.arrow-alt-circle-left.arrow-alt-circle-right.arrow-alt-circle-up.arrow-circle-down.arrow-circle-left.arrow-circle-right.arrow-circle-up.arrow-down.arrow-down-1-9.arrow-down-9-1.arrow-down-a-z.arrow-down-long.arrow-down-short-wide.arrow-down-up-across-line.arrow-down-up-lock.arrow-down-wide-short.arrow-down-z-a.arrow-left.arrow-left-long.arrow-left-rotate.arrow-pointer.arrow-right.arrow-right-arrow-left.arrow-right-from-bracket.arrow-right-from-file.arrow-right-long.arrow-right-rotate.arrow-right-to-bracket.arrow-right-to-city.arrow-right-to-file.arrow-rotate-back.arrow-rotate-backward.arrow-rotate-forward.arrow-rotate-left.arrow-rotate-right.arrow-trend-down.arrow-trend-up.arrow-turn-down.arrow-turn-up.arrow-up.arrow-up-1-9.arrow-up-9-1.arrow-up-a-z.arrow-up-from-bracket.arrow-up-from-ground-water.arrow-up-from-water-pump.arrow-up-long.arrow-up-right-dots.arrow-up-right-from-square.arrow-up-short-wide.arrow-up-wide-short.arrow-up-z-a.arrows.arrows-alt.arrows-alt-h.arrows-alt-v.arrows-down-to-line.arrows-down-to-people.arrows-h.arrows-left-right.arrows-left-right-to-line.arrows-rotate.arrows-spin.arrows-split-up-and-left.arrows-to-circle.arrows-to-dot.arrows-to-eye.arrows-turn-right.arrows-turn-to-dots.arrows-up-down.arrows-up-down-left-right.arrows-up-to-line.arrows-v.asl-interpreting.assistive-listening-systems.asterisk.at.atlas.atom.audio-description.austral-sign.automobile.award.b.baby.baby-carriage.backspace.backward.backward-fast.backward-step.bacon.bacteria.bacterium.bag-shopping.bahai.baht-sign.balance-scale.balance-scale-left.balance-scale-right.ban.ban-smoking.band-aid.bandage.bangladeshi-taka-sign.bank.bar-chart.barcode.bars.bars-progress.bars-staggered.baseball.baseball-ball.baseball-bat-ball.basket-shopping.basketball.basketball-ball.bath.bathtub.battery.battery-0.battery-2.battery-3.battery-4.battery-5.battery-car.battery-empty.battery-full.battery-half.battery-quarter.battery-three-quarters.bed.bed-pulse.beer.beer-mug-empty.bell.bell-concierge.bell-slash.bezier-curve.bible.bicycle.biking.binoculars.biohazard.birthday-cake.bitcoin-sign.blackboard.blender.blender-phone.blind.blog.bold.bolt.bolt-lightning.bomb.bone.bong.book.book-atlas.book-bible.book-bookmark.book-dead.book-journal-whills.book-medical.book-open.book-open-reader.book-quran.book-reader.book-skull.book-tanakh.bookmark.border-all.border-none.border-style.border-top-left.bore-hole.bottle-droplet.bottle-water.bowl-food.bowl-rice.bowling-ball.box.box-archive.box-open.box-tissue.boxes.boxes-alt.boxes-packing.boxes-stacked.braille.brain.brazilian-real-sign.bread-slice.bridge.bridge-circle-check.bridge-circle-exclamation.bridge-circle-xmark.bridge-lock.bridge-water.briefcase.briefcase-clock.briefcase-medical.broadcast-tower.broom.broom-ball.brush.bucket.bug.bug-slash.bugs.building.building-circle-arrow-right.building-circle-check.building-circle-exclamation.building-circle-xmark.building-columns.building-flag.building-lock.building-ngo.building-shield.building-un.building-user.building-wheat.bullhorn.bullseye.burger.burn.burst.bus.bus-alt.bus-simple.business-time.c.cab.cable-car.cake.cake-candles.calculator.calendar.calendar-alt.calendar-check.calendar-day.calendar-days.calendar-minus.calendar-plus.calendar-times.calendar-week.calendar-xmark.camera.camera-alt.camera-retro.camera-rotate.campground.cancel.candy-cane.cannabis.capsules.car.car-alt.car-battery.car-burst.car-crash.car-on.car-rear.car-side.car-tunnel.caravan.caret-down.caret-left.caret-right.caret-square-down.caret-square-left.caret-square-right.caret-square-up.caret-up.carriage-baby.carrot.cart-arrow-down.cart-flatbed.cart-flatbed-suitcase.cart-plus.cart-shopping.cash-register.cat.cedi-sign.cent-sign.certificate.chain.chain-broken.chain-slash.chair.chalkboard.chalkboard-teacher.chalkboard-user.champagne-glasses.charging-station.chart-area.chart-bar.chart-column.chart-diagram.chart-gantt.chart-line.chart-pie.chart-simple.check.check-circle.check-double.check-square.check-to-slot.cheese.chess.chess-bishop.chess-board.chess-king.chess-knight.chess-pawn.chess-queen.chess-rook.chevron-circle-down.chevron-circle-left.chevron-circle-right.chevron-circle-up.chevron-down.chevron-left.chevron-right.chevron-up.child.child-combatant.child-dress.child-reaching.child-rifle.children.church.circle.circle-arrow-down.circle-arrow-left.circle-arrow-right.circle-arrow-up.circle-check.circle-chevron-down.circle-chevron-left.circle-chevron-right.circle-chevron-up.circle-dollar-to-slot.circle-dot.circle-down.circle-exclamation.circle-h.circle-half-stroke.circle-info.circle-left.circle-minus.circle-nodes.circle-notch.circle-pause.circle-play.circle-plus.circle-question.circle-radiation.circle-right.circle-stop.circle-up.circle-user.circle-xmark.city.clapperboard.clinic-medical.clipboard.clipboard-check.clipboard-list.clipboard-question.clipboard-user.clock.clock-four.clock-rotate-left.clone.close.closed-captioning.cloud.cloud-arrow-down.cloud-arrow-up.cloud-bolt.cloud-download.cloud-download-alt.cloud-meatball.cloud-moon.cloud-moon-rain.cloud-rain.cloud-showers-heavy.cloud-showers-water.cloud-sun.cloud-sun-rain.cloud-upload.cloud-upload-alt.clover.cny.cocktail.code.code-branch.code-commit.code-compare.code-fork.code-merge.code-pull-request.coffee.cog.cogs.coins.colon-sign.columns.comment.comment-alt.comment-dollar.comment-dots.comment-medical.comment-nodes.comment-slash.comment-sms.commenting.comments.comments-dollar.compact-disc.compass.compass-drafting.compress.compress-alt.compress-arrows-alt.computer.computer-mouse.concierge-bell.contact-book.contact-card.cookie.cookie-bite.copy.copyright.couch.cow.credit-card.credit-card-alt.crop.crop-alt.crop-simple.cross.crosshairs.crow.crown.crutch.cruzeiro-sign.cube.cubes.cubes-stacked.cut.cutlery.d.dashboard.database.deaf.deafness.dedent.delete-left.democrat.desktop.desktop-alt.dharmachakra.diagnoses.diagram-next.diagram-predecessor.diagram-project.diagram-successor.diamond.diamond-turn-right.dice.dice-d20.dice-d6.dice-five.dice-four.dice-one.dice-six.dice-three.dice-two.digging.digital-tachograph.directions.disease.display.divide.dizzy.dna.dog.dollar.dollar-sign.dolly.dolly-box.dolly-flatbed.donate.dong-sign.door-closed.door-open.dot-circle.dove.down-left-and-up-right-to-center.down-long.download.drafting-compass.dragon.draw-polygon.drivers-license.droplet.droplet-slash.drum.drum-steelpan.drumstick-bite.dumbbell.dumpster.dumpster-fire.dungeon.e.ear-deaf.ear-listen.earth.earth-africa.earth-america.earth-americas.earth-asia.earth-europe.earth-oceania.edit.egg.eject.elevator.ellipsis.ellipsis-h.ellipsis-v.ellipsis-vertical.envelope.envelope-circle-check.envelope-open.envelope-open-text.envelope-square.envelopes-bulk.equals.eraser.ethernet.eur.euro.euro-sign.exchange.exchange-alt.exclamation.exclamation-circle.exclamation-triangle.expand.expand-alt.expand-arrows-alt.explosion.external-link.external-link-alt.external-link-square.external-link-square-alt.eye.eye-dropper.eye-dropper-empty.eye-low-vision.eye-slash.eyedropper.f.face-angry.face-dizzy.face-flushed.face-frown.face-frown-open.face-grimace.face-grin.face-grin-beam.face-grin-beam-sweat.face-grin-hearts.face-grin-squint.face-grin-squint-tears.face-grin-stars.face-grin-tears.face-grin-tongue.face-grin-tongue-squint.face-grin-tongue-wink.face-grin-wide.face-grin-wink.face-kiss.face-kiss-beam.face-kiss-wink-heart.face-laugh.face-laugh-beam.face-laugh-squint.face-laugh-wink.face-meh.face-meh-blank.face-rolling-eyes.face-sad-cry.face-sad-tear.face-smile.face-smile-beam.face-smile-wink.face-surprise.face-tired.fan.faucet.faucet-drip.fax.feather.feather-alt.feather-pointed.feed.female.ferry.fighter-jet.file.file-alt.file-archive.file-arrow-down.file-arrow-up.file-audio.file-circle-check.file-circle-exclamation.file-circle-minus.file-circle-plus.file-circle-question.file-circle-xmark.file-clipboard.file-code.file-contract.file-csv.file-download.file-edit.file-excel.file-export.file-fragment.file-half-dashed.file-image.file-import.file-invoice.file-invoice-dollar.file-lines.file-medical.file-medical-alt.file-pdf.file-pen.file-powerpoint.file-prescription.file-shield.file-signature.file-text.file-upload.file-video.file-waveform.file-word.file-zipper.fill.fill-drip.film.filter.filter-circle-dollar.filter-circle-xmark.fingerprint.fire.fire-alt.fire-burner.fire-extinguisher.fire-flame-curved.fire-flame-simple.first-aid.fish.fish-fins.fist-raised.flag.flag-checkered.flag-usa.flask.flask-vial.floppy-disk.florin-sign.flushed.folder.folder-blank.folder-closed.folder-minus.folder-open.folder-plus.folder-tree.font.font-awesome.font-awesome-flag.font-awesome-logo-full.football.football-ball.forward.forward-fast.forward-step.franc-sign.frog.frown.frown-open.funnel-dollar.futbol.futbol-ball.g.gamepad.gas-pump.gauge.gauge-high.gauge-med.gauge-simple.gauge-simple-high.gauge-simple-med.gavel.gbp.gear.gears.gem.genderless.ghost.gift.gifts.glass-cheers.glass-martini.glass-martini-alt.glass-water.glass-water-droplet.glass-whiskey.glasses.globe.globe-africa.globe-americas.globe-asia.globe-europe.globe-oceania.golf-ball.golf-ball-tee.gopuram.graduation-cap.greater-than.greater-than-equal.grimace.grin.grin-alt.grin-beam.grin-beam-sweat.grin-hearts.grin-squint.grin-squint-tears.grin-stars.grin-tears.grin-tongue.grin-tongue-squint.grin-tongue-wink.grin-wink.grip.grip-horizontal.grip-lines.grip-lines-vertical.grip-vertical.group-arrows-rotate.guarani-sign.guitar.gun.h.h-square.hamburger.hammer.hamsa.hand.hand-back-fist.hand-dots.hand-fist.hand-holding.hand-holding-dollar.hand-holding-droplet.hand-holding-hand.hand-holding-heart.hand-holding-medical.hand-holding-usd.hand-holding-water.hand-lizard.hand-middle-finger.hand-paper.hand-peace.hand-point-down.hand-point-left.hand-point-right.hand-point-up.hand-pointer.hand-rock.hand-scissors.hand-sparkles.hand-spock.handcuffs.hands.hands-american-sign-language-interpreting.hands-asl-interpreting.hands-bound.hands-bubbles.hands-clapping.hands-helping.hands-holding.hands-holding-child.hands-holding-circle.hands-praying.hands-wash.handshake.handshake-alt.handshake-alt-slash.handshake-angle.handshake-simple.handshake-simple-slash.handshake-slash.hanukiah.hard-drive.hard-hat.hard-of-hearing.hashtag.hat-cowboy.hat-cowboy-side.hat-hard.hat-wizard.haykal.hdd.head-side-cough.head-side-cough-slash.head-side-mask.head-side-virus.header.heading.headphones.headphones-alt.headphones-simple.headset.heart.heart-broken.heart-circle-bolt.heart-circle-check.heart-circle-exclamation.heart-circle-minus.heart-circle-plus.heart-circle-xmark.heart-crack.heart-music-camera-bolt.heart-pulse.heartbeat.helicopter.helicopter-symbol.helmet-safety.helmet-un.hexagon-nodes.hexagon-nodes-bolt.highlighter.hiking.hill-avalanche.hill-rockslide.hippo.history.hockey-puck.holly-berry.home.home-alt.home-lg.home-lg-alt.home-user.horse.horse-head.hospital.hospital-alt.hospital-symbol.hospital-user.hospital-wide.hot-tub.hot-tub-person.hotdog.hotel.hourglass.hourglass-1.hourglass-2.hourglass-3.hourglass-empty.hourglass-end.hourglass-half.hourglass-start.house.house-chimney.house-chimney-crack.house-chimney-medical.house-chimney-user.house-chimney-window.house-circle-check.house-circle-exclamation.house-circle-xmark.house-crack.house-damage.house-fire.house-flag.house-flood-water.house-flood-water-circle-arrow-right.house-laptop.house-lock.house-medical.house-medical-circle-check.house-medical-circle-exclamation.house-medical-circle-xmark.house-medical-flag.house-signal.house-tsunami.house-user.hryvnia.hryvnia-sign.hurricane.i.i-cursor.ice-cream.icicles.icons.id-badge.id-card.id-card-alt.id-card-clip.igloo.ils.image.image-portrait.images.inbox.indent.indian-rupee.indian-rupee-sign.industry.infinity.info.info-circle.inr.institution.italic.j.jar.jar-wheat.jedi.jet-fighter.jet-fighter-up.joint.journal-whills.jpy.jug-detergent.k.kaaba.key.keyboard.khanda.kip-sign.kiss.kiss-beam.kiss-wink-heart.kit-medical.kitchen-set.kiwi-bird.krw.l.ladder-water.land-mine-on.landmark.landmark-alt.landmark-dome.landmark-flag.language.laptop.laptop-code.laptop-file.laptop-house.laptop-medical.lari-sign.laugh.laugh-beam.laugh-squint.laugh-wink.layer-group.leaf.left-long.left-right.legal.lemon.less-than.less-than-equal.level-down.level-down-alt.level-up.level-up-alt.life-ring.lightbulb.line-chart.lines-leaning.link.link-slash.lira-sign.list.list-1-2.list-alt.list-check.list-dots.list-numeric.list-ol.list-squares.list-ul.litecoin-sign.location.location-arrow.location-crosshairs.location-dot.location-pin.location-pin-lock.lock.lock-open.locust.long-arrow-alt-down.long-arrow-alt-left.long-arrow-alt-right.long-arrow-alt-up.long-arrow-down.long-arrow-left.long-arrow-right.long-arrow-up.low-vision.luggage-cart.lungs.lungs-virus.m.magic.magic-wand-sparkles.magnet.magnifying-glass.magnifying-glass-arrow-right.magnifying-glass-chart.magnifying-glass-dollar.magnifying-glass-location.magnifying-glass-minus.magnifying-glass-plus.mail-bulk.mail-forward.mail-reply.mail-reply-all.male.manat-sign.map.map-location.map-location-dot.map-marked.map-marked-alt.map-marker.map-marker-alt.map-pin.map-signs.marker.mars.mars-and-venus.mars-and-venus-burst.mars-double.mars-stroke.mars-stroke-h.mars-stroke-right.mars-stroke-up.mars-stroke-v.martini-glass.martini-glass-citrus.martini-glass-empty.mask.mask-face.mask-ventilator.masks-theater.mattress-pillow.maximize.medal.medkit.meh.meh-blank.meh-rolling-eyes.memory.menorah.mercury.message.meteor.microchip.microphone.microphone-alt.microphone-alt-slash.microphone-lines.microphone-lines-slash.microphone-slash.microscope.mill-sign.minimize.minus.minus-circle.minus-square.mitten.mobile.mobile-alt.mobile-android.mobile-android-alt.mobile-button.mobile-phone.mobile-retro.mobile-screen.mobile-screen-button.money-bill.money-bill-1.money-bill-1-wave.money-bill-alt.money-bill-transfer.money-bill-trend-up.money-bill-wave.money-bill-wave-alt.money-bill-wheat.money-bills.money-check.money-check-alt.money-check-dollar.monument.moon.mortar-board.mortar-pestle.mosque.mosquito.mosquito-net.motorcycle.mound.mountain.mountain-city.mountain-sun.mouse.mouse-pointer.mug-hot.mug-saucer.multiply.museum.music.n.naira-sign.navicon.network-wired.neuter.newspaper.not-equal.notdef.note-sticky.notes-medical.o.object-group.object-ungroup.oil-can.oil-well.om.otter.outdent.p.pager.paint-brush.paint-roller.paintbrush.palette.pallet.panorama.paper-plane.paperclip.parachute-box.paragraph.parking.passport.pastafarianism.paste.pause.pause-circle.paw.peace.pen.pen-alt.pen-clip.pen-fancy.pen-nib.pen-ruler.pen-square.pen-to-square.pencil.pencil-alt.pencil-ruler.pencil-square.people-arrows.people-arrows-left-right.people-carry.people-carry-box.people-group.people-line.people-pulling.people-robbery.people-roof.pepper-hot.percent.percentage.person.person-arrow-down-to-line.person-arrow-up-from-line.person-biking.person-booth.person-breastfeeding.person-burst.person-cane.person-chalkboard.person-circle-check.person-circle-exclamation.person-circle-minus.person-circle-plus.person-circle-question.person-circle-xmark.person-digging.person-dots-from-line.person-dress.person-dress-burst.person-drowning.person-falling.person-falling-burst.person-half-dress.person-harassing.person-hiking.person-military-pointing.person-military-rifle.person-military-to-person.person-praying.person-pregnant.person-rays.person-rifle.person-running.person-shelter.person-skating.person-skiing.person-skiing-nordic.person-snowboarding.person-swimming.person-through-window.person-walking.person-walking-arrow-loop-left.person-walking-arrow-right.person-walking-dashed-line-arrow-right.person-walking-luggage.person-walking-with-cane.peseta-sign.peso-sign.phone.phone-alt.phone-flip.phone-slash.phone-square.phone-square-alt.phone-volume.photo-film.photo-video.pie-chart.piggy-bank.pills.ping-pong-paddle-ball.pizza-slice.place-of-worship.plane.plane-arrival.plane-circle-check.plane-circle-exclamation.plane-circle-xmark.plane-departure.plane-lock.plane-slash.plane-up.plant-wilt.plate-wheat.play.play-circle.plug.plug-circle-bolt.plug-circle-check.plug-circle-exclamation.plug-circle-minus.plug-circle-plus.plug-circle-xmark.plus.plus-circle.plus-minus.plus-square.podcast.poll.poll-h.poo.poo-bolt.poo-storm.poop.portrait.pound-sign.power-off.pray.praying-hands.prescription.prescription-bottle.prescription-bottle-alt.prescription-bottle-medical.print.procedures.project-diagram.pump-medical.pump-soap.puzzle-piece.q.qrcode.question.question-circle.quidditch.quidditch-broom-ball.quote-left.quote-left-alt.quote-right.quote-right-alt.quran.r.radiation.radiation-alt.radio.rainbow.random.ranking-star.receipt.record-vinyl.rectangle-ad.rectangle-list.rectangle-times.rectangle-xmark.recycle.redo.redo-alt.refresh.registered.remove.remove-format.reorder.repeat.reply.reply-all.republican.restroom.retweet.ribbon.right-from-bracket.right-left.right-long.right-to-bracket.ring.rmb.road.road-barrier.road-bridge.road-circle-check.road-circle-exclamation.road-circle-xmark.road-lock.road-spikes.robot.rocket.rod-asclepius.rod-snake.rotate.rotate-back.rotate-backward.rotate-forward.rotate-left.rotate-right.rouble.route.rss.rss-square.rub.ruble.ruble-sign.rug.ruler.ruler-combined.ruler-horizontal.ruler-vertical.running.rupee.rupee-sign.rupiah-sign.s.sack-dollar.sack-xmark.sad-cry.sad-tear.sailboat.satellite.satellite-dish.save.scale-balanced.scale-unbalanced.scale-unbalanced-flip.school.school-circle-check.school-circle-exclamation.school-circle-xmark.school-flag.school-lock.scissors.screwdriver.screwdriver-wrench.scroll.scroll-torah.sd-card.search.search-dollar.search-location.search-minus.search-plus.section.seedling.server.shapes.share.share-alt.share-alt-square.share-from-square.share-nodes.share-square.sheet-plastic.shekel.shekel-sign.sheqel.sheqel-sign.shield.shield-alt.shield-blank.shield-cat.shield-dog.shield-halved.shield-heart.shield-virus.ship.shipping-fast.shirt.shoe-prints.shop.shop-lock.shop-slash.shopping-bag.shopping-basket.shopping-cart.shower.shrimp.shuffle.shuttle-space.shuttle-van.sign.sign-hanging.sign-in.sign-in-alt.sign-language.sign-out.sign-out-alt.signal.signal-5.signal-perfect.signature.signing.signs-post.sim-card.sink.sitemap.skating.skiing.skiing-nordic.skull.skull-crossbones.slash.sleigh.sliders.sliders-h.smile.smile-beam.smile-wink.smog.smoking.smoking-ban.sms.snowboarding.snowflake.snowman.snowplow.soap.soccer-ball.socks.solar-panel.sort.sort-alpha-asc.sort-alpha-desc.sort-alpha-down.sort-alpha-down-alt.sort-alpha-up.sort-alpha-up-alt.sort-amount-asc.sort-amount-desc.sort-amount-down.sort-amount-down-alt.sort-amount-up.sort-amount-up-alt.sort-asc.sort-desc.sort-down.sort-numeric-asc.sort-numeric-desc.sort-numeric-down.sort-numeric-down-alt.sort-numeric-up.sort-numeric-up-alt.sort-up.spa.space-shuttle.spaghetti-monster-flying.spell-check.spider.spinner.splotch.spoon.spray-can.spray-can-sparkles.sprout.square.square-arrow-up-right.square-binary.square-caret-down.square-caret-left.square-caret-right.square-caret-up.square-check.square-envelope.square-full.square-h.square-minus.square-nfi.square-parking.square-pen.square-person-confined.square-phone.square-phone-flip.square-plus.square-poll-horizontal.square-poll-vertical.square-root-alt.square-root-variable.square-rss.square-share-nodes.square-up-right.square-virus.square-xmark.staff-aesculapius.staff-snake.stairs.stamp.stapler.star.star-and-crescent.star-half.star-half-alt.star-half-stroke.star-of-david.star-of-life.step-backward.step-forward.sterling-sign.stethoscope.sticky-note.stop.stop-circle.stopwatch.stopwatch-20.store.store-alt.store-alt-slash.store-slash.stream.street-view.strikethrough.stroopwafel.subscript.subtract.subway.suitcase.suitcase-medical.suitcase-rolling.sun.sun-plant-wilt.superscript.surprise.swatchbook.swimmer.swimming-pool.synagogue.sync.sync-alt.syringe.t.t-shirt.table.table-cells.table-cells-column-lock.table-cells-large.table-cells-row-lock.table-cells-row-unlock.table-columns.table-list.table-tennis.table-tennis-paddle-ball.tablet.tablet-alt.tablet-android.tablet-button.tablet-screen-button.tablets.tachograph-digital.tachometer.tachometer-alt.tachometer-alt-average.tachometer-alt-fast.tachometer-average.tachometer-fast.tag.tags.tanakh.tape.tarp.tarp-droplet.tasks.tasks-alt.taxi.teeth.teeth-open.teletype.television.temperature-0.temperature-1.temperature-2.temperature-3.temperature-4.temperature-arrow-down.temperature-arrow-up.temperature-down.temperature-empty.temperature-full.temperature-half.temperature-high.temperature-low.temperature-quarter.temperature-three-quarters.temperature-up.tenge.tenge-sign.tent.tent-arrow-down-to-line.tent-arrow-left-right.tent-arrow-turn-left.tent-arrows-down.tents.terminal.text-height.text-slash.text-width.th.th-large.th-list.theater-masks.thermometer.thermometer-0.thermometer-1.thermometer-2.thermometer-3.thermometer-4.thermometer-empty.thermometer-full.thermometer-half.thermometer-quarter.thermometer-three-quarters.thumb-tack.thumb-tack-slash.thumbs-down.thumbs-up.thumbtack.thumbtack-slash.thunderstorm.ticket.ticket-alt.ticket-simple.timeline.times.times-circle.times-rectangle.times-square.tint.tint-slash.tired.toggle-off.toggle-on.toilet.toilet-paper.toilet-paper-slash.toilet-portable.toilets-portable.toolbox.tools.tooth.torah.torii-gate.tornado.tower-broadcast.tower-cell.tower-observation.tractor.trademark.traffic-light.trailer.train.train-subway.train-tram.tram.transgender.transgender-alt.trash.trash-alt.trash-arrow-up.trash-can.trash-can-arrow-up.trash-restore.trash-restore-alt.tree.tree-city.triangle-circle-square.triangle-exclamation.trophy.trowel.trowel-bricks.truck.truck-arrow-right.truck-droplet.truck-fast.truck-field.truck-field-un.truck-front.truck-loading.truck-medical.truck-monster.truck-moving.truck-pickup.truck-plane.truck-ramp-box.try.tshirt.tty.turkish-lira.turkish-lira-sign.turn-down.turn-up.tv.tv-alt.u.umbrella.umbrella-beach.underline.undo.undo-alt.universal-access.university.unlink.unlock.unlock-alt.unlock-keyhole.unsorted.up-down.up-down-left-right.up-long.up-right-and-down-left-from-center.up-right-from-square.upload.usd.user.user-alt.user-alt-slash.user-astronaut.user-check.user-circle.user-clock.user-cog.user-doctor.user-edit.user-friends.user-gear.user-graduate.user-group.user-injured.user-large.user-large-slash.user-lock.user-md.user-minus.user-ninja.user-nurse.user-pen.user-plus.user-secret.user-shield.user-slash.user-tag.user-tie.user-times.user-xmark.users.users-between-lines.users-cog.users-gear.users-line.users-rays.users-rectangle.users-slash.users-viewfinder.utensil-spoon.utensils.v.van-shuttle.vault.vcard.vector-square.venus.venus-double.venus-mars.vest.vest-patches.vial.vial-circle-check.vial-virus.vials.video.video-camera.video-slash.vihara.virus.virus-covid.virus-covid-slash.virus-slash.viruses.voicemail.volcano.volleyball.volleyball-ball.volume-control-phone.volume-down.volume-high.volume-low.volume-mute.volume-off.volume-times.volume-up.volume-xmark.vote-yea.vr-cardboard.w.walkie-talkie.walking.wallet.wand-magic.wand-magic-sparkles.wand-sparkles.warehouse.warning.water.water-ladder.wave-square.web-awesome.weight.weight-hanging.weight-scale.wheat-alt.wheat-awn.wheat-awn-circle-exclamation.wheelchair.wheelchair-alt.wheelchair-move.whiskey-glass.wifi.wifi-3.wifi-strong.wind.window-close.window-maximize.window-minimize.window-restore.wine-bottle.wine-glass.wine-glass-alt.wine-glass-empty.won.won-sign.worm.wrench.x.x-ray.xmark.xmark-circle.xmark-square.xmarks-lines.y.yen.yen-sign.yin-yang.z.zap".split("."), cr = { class: "justified" }, lr = /* @__PURE__ */ M({
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(sr.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", cr, [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
+ }), ur = /* @__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
+ }), dr = /* @__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
+ }), fr = ",", pr = /* @__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(fr);
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(fr);
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(() => Xn[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
+ }), mr = /* @__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 } = Xn[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
+ }), hr = " ~ ", gr = /* @__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(hr);
1578
1589
  }
1579
1590
  P(() => {
1580
1591
  let e = String(r.value);
1581
- i.value = e.split(mr);
1592
+ i.value = e.split(hr);
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(() => Xn[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 _r(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 vr = /* @__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
+ _r(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
+ }), yr = /* @__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 && _r(e[0]) && _r(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 br(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 = Hn(n.includes, t), o = Hn(n.excludes, t);
1726
1737
  return e && (a[`${r}__icontains`] = e), {
1727
1738
  includes: a,
1728
1739
  excludes: o,
@@ -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 xr = {
1775
1786
  key: 0,
1776
1787
  style: { "margin-bottom": "10px" }
1777
- }, xr = { class: "justified" }, Sr = /* @__PURE__ */ M({
1788
+ }, Sr = { class: "justified" }, Cr = /* @__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 } = br(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", xr, [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", Sr, [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
+ }), wr = /* @__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 } = br(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
+ }), Tr = /* @__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 } = br(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
+ }), Er = { class: "full center" }, Dr = /* @__PURE__ */ M({
1960
1971
  __name: "MTransferEditor",
1961
1972
  props: {
1962
1973
  modelValue: {},
@@ -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", Er, [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
+ }), Or = /* @__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 } = br(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(Dr, {
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
+ }), kr = /* @__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 } = br(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
+ }), Ar = /* @__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
+ }), jr = /*#__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"]]), Mr = /* @__PURE__ */ M({
2210
2221
  __name: "NumberCell",
2211
2222
  props: {
2212
2223
  modelValue: {},
@@ -2259,7 +2270,7 @@ var br = {
2259
2270
  ]);
2260
2271
  };
2261
2272
  }
2262
- }), Mr = /* @__PURE__ */ M({
2273
+ }), Nr = /* @__PURE__ */ M({
2263
2274
  __name: "FileCell",
2264
2275
  props: {
2265
2276
  modelValue: {},
@@ -2273,7 +2284,7 @@ var br = {
2273
2284
  "reload"
2274
2285
  ],
2275
2286
  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();
2287
+ let n = e, r = t, i = W(n, "modelValue", r), { $confirm: a, $message: o } = J(), s = T(() => i.value), { post: c } = X(), { minio_url: l } = Fa();
2277
2288
  function u() {
2278
2289
  let { format: { locked: e } } = n.field;
2279
2290
  if (e) o.warning("抱歉,该文件不支持下载!请在线预览。");
@@ -2364,7 +2375,7 @@ var br = {
2364
2375
  })], 64);
2365
2376
  };
2366
2377
  }
2367
- }), Nr = /* @__PURE__ */ M({
2378
+ }), Pr = /* @__PURE__ */ M({
2368
2379
  __name: "MObjectEditor",
2369
2380
  props: {
2370
2381
  modelValue: {},
@@ -2392,7 +2403,7 @@ var br = {
2392
2403
  });
2393
2404
  };
2394
2405
  }
2395
- }), Pr = /* @__PURE__ */ M({
2406
+ }), Fr = /* @__PURE__ */ M({
2396
2407
  __name: "ObjectCell",
2397
2408
  props: {
2398
2409
  modelValue: {},
@@ -2429,7 +2440,7 @@ var br = {
2429
2440
  title: "对象编辑器",
2430
2441
  confirm: () => r("confirm")
2431
2442
  }, {
2432
- default: U(() => [j(Nr, {
2443
+ default: U(() => [j(Pr, {
2433
2444
  modelValue: V(i),
2434
2445
  "onUpdate:modelValue": n[0] ||= (e) => N(i) ? i.value = e : null,
2435
2446
  disabled: e.disabled
@@ -2438,7 +2449,7 @@ var br = {
2438
2449
  }, 8, ["confirm"])], 64);
2439
2450
  };
2440
2451
  }
2441
- }), Fr = /* @__PURE__ */ M({
2452
+ }), Ir = /* @__PURE__ */ M({
2442
2453
  __name: "MRichEditor",
2443
2454
  props: {
2444
2455
  modelValue: {},
@@ -2465,7 +2476,7 @@ var br = {
2465
2476
  "read-only"
2466
2477
  ]));
2467
2478
  }
2468
- }), Ir = /* @__PURE__ */ M({
2479
+ }), Lr = /* @__PURE__ */ M({
2469
2480
  __name: "RichCell",
2470
2481
  props: {
2471
2482
  modelValue: {},
@@ -2503,7 +2514,7 @@ var br = {
2503
2514
  width: "800",
2504
2515
  confirm: () => r("confirm")
2505
2516
  }, {
2506
- default: U(() => [j(Fr, {
2517
+ default: U(() => [j(Ir, {
2507
2518
  modelValue: V(i),
2508
2519
  "onUpdate:modelValue": n[0] ||= (e) => N(i) ? i.value = e : null,
2509
2520
  disabled: e.disabled
@@ -2512,7 +2523,7 @@ var br = {
2512
2523
  }, 8, ["confirm"])], 64);
2513
2524
  };
2514
2525
  }
2515
- }), Lr = /* @__PURE__ */ M({
2526
+ }), Rr = /* @__PURE__ */ M({
2516
2527
  __name: "MCell",
2517
2528
  props: {
2518
2529
  modelValue: {},
@@ -2532,27 +2543,27 @@ var br = {
2532
2543
  let { tool: e, format: t } = i.field;
2533
2544
  switch (e) {
2534
2545
  case "boolean":
2535
- case "switch": return kr;
2536
- case "number": return jr;
2546
+ case "switch": return Ar;
2547
+ case "number": return Mr;
2537
2548
  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;
2549
+ case "textarea": return ir;
2550
+ case "select": return Tr;
2551
+ case "tree": return kr;
2552
+ case "cascade": return wr;
2553
+ case "transfer": return Or;
2554
+ case "rich": return Lr;
2555
+ case "object": return Fr;
2556
+ case "time": return vr;
2557
+ case "date": return mr;
2558
+ case "timerange": return yr;
2559
+ case "daterange": return gr;
2560
+ case "dates": return pr;
2561
+ case "file": return Nr;
2562
+ case "set": return t.multiple ? ur : dr;
2563
+ case "color": return or;
2564
+ case "icon": return lr;
2565
+ case "auto": return Cr;
2566
+ default: return jr;
2556
2567
  }
2557
2568
  });
2558
2569
  return (t, n) => s.value ? (F(), E(Lt(s.value), {
@@ -2571,7 +2582,7 @@ var br = {
2571
2582
  "disabled"
2572
2583
  ])) : D("", !0);
2573
2584
  }
2574
- }), Rr = { class: "justified" }, zr = /* @__PURE__ */ M({
2585
+ }), zr = { class: "justified" }, Br = /* @__PURE__ */ M({
2575
2586
  __name: "DTreeNodeEdit",
2576
2587
  props: {
2577
2588
  disable_table: { type: Boolean },
@@ -2607,7 +2618,7 @@ var br = {
2607
2618
  let s = z("el-space"), c = z("el-col"), l = z("el-row");
2608
2619
  return F(), E(l, null, {
2609
2620
  default: U(() => [j(c, { class: "right" }, {
2610
- default: U(() => [k("div", Rr, [j(s, { size: 0 }, {
2621
+ default: U(() => [k("div", zr, [j(s, { size: 0 }, {
2611
2622
  default: U(() => [
2612
2623
  (e.control.allow_edit || e.control.allow_insert) && e.collector.size ? (F(), E(K, {
2613
2624
  key: 0,
@@ -2658,7 +2669,7 @@ var br = {
2658
2669
  key: 0,
2659
2670
  style: { "margin-top": "10px" }
2660
2671
  }, {
2661
- default: U(() => [j(Lr, {
2672
+ default: U(() => [j(Rr, {
2662
2673
  field: e.field,
2663
2674
  row: a.value,
2664
2675
  modelValue: a.value[e.field.prop],
@@ -2677,7 +2688,7 @@ var br = {
2677
2688
  });
2678
2689
  };
2679
2690
  }
2680
- }), Br = /* @__PURE__ */ M({
2691
+ }), Vr = /* @__PURE__ */ M({
2681
2692
  __name: "DataWrapper",
2682
2693
  props: {
2683
2694
  loading: { type: Boolean },
@@ -2718,7 +2729,7 @@ var br = {
2718
2729
  } : void 0]), 1536);
2719
2730
  };
2720
2731
  }
2721
- }), Vr = /* @__PURE__ */ M({
2732
+ }), Hr = /* @__PURE__ */ M({
2722
2733
  __name: "DTreeController",
2723
2734
  props: {
2724
2735
  unrestricted: { type: Boolean },
@@ -2780,7 +2791,7 @@ var br = {
2780
2791
  });
2781
2792
  };
2782
2793
  }
2783
- }), Hr = /* @__PURE__ */ M({
2794
+ }), Ur = /* @__PURE__ */ M({
2784
2795
  __name: "PluginColumnContent",
2785
2796
  props: {
2786
2797
  data: {},
@@ -2800,7 +2811,7 @@ var br = {
2800
2811
  invoke: n
2801
2812
  }, null, 8, ["data", "param"]));
2802
2813
  }
2803
- }), Ur = /*#__PURE__*/ wn(/* @__PURE__ */ M({
2814
+ }), Wr = /*#__PURE__*/ wn(/* @__PURE__ */ M({
2804
2815
  __name: "PluginButtonContent",
2805
2816
  props: {
2806
2817
  buttons: {},
@@ -2812,7 +2823,7 @@ var br = {
2812
2823
  setup(e, { emit: t }) {
2813
2824
  let n = e, r = t, i = Vt("actionsRef"), { width: a } = Jt(i);
2814
2825
  H(a, () => r("width", a.value + 15));
2815
- let { buttons: o } = Ja(T(() => n.buttons || []), T(() => n.code), T(() => n.data));
2826
+ let { buttons: o } = Ya(T(() => n.buttons || []), T(() => n.code), T(() => n.data));
2816
2827
  function s(e, t) {
2817
2828
  e.preventDefault(), e.stopPropagation();
2818
2829
  let { data: r, collector: i } = n;
@@ -2856,7 +2867,7 @@ var br = {
2856
2867
  }), [["__scopeId", "data-v-08150db9"]]);
2857
2868
  //#endregion
2858
2869
  //#region morghulis/components/table/hooks/table-sort.ts
2859
- function Wr(e, t) {
2870
+ function Gr(e, t) {
2860
2871
  let n = null;
2861
2872
  function r() {
2862
2873
  (e.value?.$el.querySelectorAll("tr.el-table__row")).forEach((e) => {
@@ -2891,7 +2902,7 @@ function Wr(e, t) {
2891
2902
  }
2892
2903
  //#endregion
2893
2904
  //#region morghulis/components/table/tools/DTController.vue
2894
- var Gr = /* @__PURE__ */ M({
2905
+ var Kr = /* @__PURE__ */ M({
2895
2906
  __name: "DTController",
2896
2907
  props: {
2897
2908
  meta: {},
@@ -2982,7 +2993,7 @@ var Gr = /* @__PURE__ */ M({
2982
2993
  });
2983
2994
  };
2984
2995
  }
2985
- }), Kr = {
2996
+ }), qr = {
2986
2997
  placement: "bottom-end",
2987
2998
  popperClass: "m-table-tooltip",
2988
2999
  enterable: !1,
@@ -2995,7 +3006,7 @@ var Gr = /* @__PURE__ */ M({
2995
3006
  },
2996
3007
  showAfter: 0,
2997
3008
  showArrow: !0
2998
- }, qr = /* @__PURE__ */ M({
3009
+ }, Jr = /* @__PURE__ */ M({
2999
3010
  __name: "DTIndex",
3000
3011
  props: {
3001
3012
  collector: {},
@@ -3043,7 +3054,7 @@ var Gr = /* @__PURE__ */ M({
3043
3054
  });
3044
3055
  };
3045
3056
  }
3046
- }), Jr = { class: "justified" }, Yr = /* @__PURE__ */ M({
3057
+ }), Yr = { class: "justified" }, Xr = /* @__PURE__ */ M({
3047
3058
  __name: "DTHeader",
3048
3059
  props: {
3049
3060
  field: {},
@@ -3060,7 +3071,7 @@ var Gr = /* @__PURE__ */ M({
3060
3071
  setup(e, { emit: t }) {
3061
3072
  let n = t, r = e, i = T(() => {
3062
3073
  let e = r.field.prop;
3063
- return r.finder[e] ? "primary" : Hn(r.includes, e).length ? "warning" : "";
3074
+ return r.finder[e] ? "primary" : Un(r.includes, e).length ? "warning" : "";
3064
3075
  }), a = T(() => (r.orders || {})[r.field.prop]), o = T(() => a.value === 1 ? "sort-up" : a.value === -1 ? "sort-down" : "sort");
3065
3076
  return (t, r) => {
3066
3077
  let s = z("el-space"), c = z("el-divider");
@@ -3076,7 +3087,7 @@ var Gr = /* @__PURE__ */ M({
3076
3087
  _: 1
3077
3088
  }),
3078
3089
  j(c),
3079
- k("div", Jr, [k("div", null, [["object"].includes(e.field.tool) ? D("", !0) : (F(), E(K, {
3090
+ k("div", Yr, [k("div", null, [["object"].includes(e.field.tool) ? D("", !0) : (F(), E(K, {
3080
3091
  key: 0,
3081
3092
  size: "small",
3082
3093
  icon: "search",
@@ -3099,7 +3110,7 @@ var Gr = /* @__PURE__ */ M({
3099
3110
  ], 64);
3100
3111
  };
3101
3112
  }
3102
- }), Xr = { class: "justified" }, Zr = /* @__PURE__ */ M({
3113
+ }), Zr = { class: "justified" }, Qr = /* @__PURE__ */ M({
3103
3114
  __name: "DTFooter",
3104
3115
  props: {
3105
3116
  size: {},
@@ -3121,7 +3132,7 @@ var Gr = /* @__PURE__ */ M({
3121
3132
  }));
3122
3133
  return (t, n) => {
3123
3134
  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 }, {
3135
+ return F(), O("div", Zr, [e.size && e.total && e.width > 300 ? (F(), E(l, { key: 0 }, {
3125
3136
  default: U(() => [e.width > 600 ? (F(), E(r, {
3126
3137
  key: 0,
3127
3138
  size: "small",
@@ -3190,13 +3201,13 @@ var Gr = /* @__PURE__ */ M({
3190
3201
  })]);
3191
3202
  };
3192
3203
  }
3193
- }), Qr = {
3204
+ }), $r = {
3194
3205
  key: 0,
3195
3206
  class: "search-value"
3196
- }, $r = {
3207
+ }, ei = {
3197
3208
  key: 1,
3198
3209
  class: "search-value"
3199
- }, ei = { class: "search-confirm justified" }, ti = /*#__PURE__*/ wn(/* @__PURE__ */ M({
3210
+ }, ti = { class: "search-confirm justified" }, ni = /*#__PURE__*/ wn(/* @__PURE__ */ M({
3200
3211
  __name: "DTSearch",
3201
3212
  props: {
3202
3213
  field: {},
@@ -3235,13 +3246,13 @@ var Gr = /* @__PURE__ */ M({
3235
3246
  if (t) {
3236
3247
  let e = r.includes?.[t];
3237
3248
  c.value = !0, f.value = !1;
3238
- let { collation: n } = Bn(t);
3249
+ let { collation: n } = Vn(t);
3239
3250
  p.value = n ?? "exact", o.value.value = e;
3240
3251
  }
3241
3252
  }
3242
3253
  }
3243
3254
  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(() => [
3255
+ let u = T(() => Zn.multiple.includes(r.field.domain)), d = T(() => r.field.domain === "BooleanField"), f = I(!1), p = I(d.value ? "exact" : "contains"), m = T(() => [
3245
3256
  {
3246
3257
  label: "基础检索",
3247
3258
  value: "basic",
@@ -3400,7 +3411,7 @@ var Gr = /* @__PURE__ */ M({
3400
3411
  }, 8, ["title"])]),
3401
3412
  _: 1
3402
3413
  }),
3403
- d.value ? (F(), O("div", Qr, [j(b, {
3414
+ d.value ? (F(), O("div", $r, [j(b, {
3404
3415
  modelValue: o.value.value,
3405
3416
  "onUpdate:modelValue": r[2] ||= (e) => o.value.value = e
3406
3417
  }, {
@@ -3412,7 +3423,7 @@ var Gr = /* @__PURE__ */ M({
3412
3423
  label: "否"
3413
3424
  })]),
3414
3425
  _: 1
3415
- }, 8, ["modelValue"])])) : (F(), O("div", $r, [p.value === "isnull" ? (F(), E(b, {
3426
+ }, 8, ["modelValue"])])) : (F(), O("div", ei, [p.value === "isnull" ? (F(), E(b, {
3416
3427
  key: 0,
3417
3428
  disabled: c.value,
3418
3429
  placement: "right-start",
@@ -3453,7 +3464,7 @@ var Gr = /* @__PURE__ */ M({
3453
3464
  onFocus: r[8] ||= () => {},
3454
3465
  placeholder: "检索值"
3455
3466
  }, null, 8, ["modelValue", "disabled"]))])),
3456
- k("div", ei, [k("div", null, [c.value ? (F(), E(G, {
3467
+ k("div", ti, [k("div", null, [c.value ? (F(), E(G, {
3457
3468
  key: 0,
3458
3469
  icon: "lock",
3459
3470
  class: "medium",
@@ -3492,7 +3503,7 @@ var Gr = /* @__PURE__ */ M({
3492
3503
  ], 64);
3493
3504
  };
3494
3505
  }
3495
- }), [["__scopeId", "data-v-0618949d"]]), ni = /* @__PURE__ */ M({
3506
+ }), [["__scopeId", "data-v-0618949d"]]), ri = /* @__PURE__ */ M({
3496
3507
  __name: "DTSaveHeader",
3497
3508
  props: { data: {} },
3498
3509
  setup(e) {
@@ -3522,7 +3533,7 @@ var Gr = /* @__PURE__ */ M({
3522
3533
  });
3523
3534
  };
3524
3535
  }
3525
- }), ri = /*#__PURE__*/ wn(/* @__PURE__ */ M({
3536
+ }), ii = /*#__PURE__*/ wn(/* @__PURE__ */ M({
3526
3537
  __name: "MForm",
3527
3538
  props: {
3528
3539
  original: { default: {} },
@@ -3609,7 +3620,7 @@ var Gr = /* @__PURE__ */ M({
3609
3620
  icon: "refresh"
3610
3621
  }, null, 8, ["onClick"])) : D("", !0)
3611
3622
  ]),
3612
- default: U(() => [j(Lr, {
3623
+ default: U(() => [j(Rr, {
3613
3624
  modelValue: a.value[t.prop],
3614
3625
  "onUpdate:modelValue": (e) => a.value[t.prop] = e,
3615
3626
  field: t,
@@ -3633,7 +3644,7 @@ var Gr = /* @__PURE__ */ M({
3633
3644
  }, 8, ["model", "rules"]);
3634
3645
  };
3635
3646
  }
3636
- }), [["__scopeId", "data-v-25b72fd8"]]), ii = /* @__PURE__ */ M({
3647
+ }), [["__scopeId", "data-v-25b72fd8"]]), ai = /* @__PURE__ */ M({
3637
3648
  __name: "DTSave",
3638
3649
  props: {
3639
3650
  is_insert: { type: Boolean },
@@ -3674,7 +3685,7 @@ var Gr = /* @__PURE__ */ M({
3674
3685
  }
3675
3686
  return t({ saveData: c }), (t, n) => {
3676
3687
  let s = z("el-text"), c = z("el-result");
3677
- return a.value.length ? (F(), E(ri, {
3688
+ return a.value.length ? (F(), E(ii, {
3678
3689
  key: 0,
3679
3690
  ref_key: "formRef",
3680
3691
  ref: r,
@@ -3702,7 +3713,7 @@ var Gr = /* @__PURE__ */ M({
3702
3713
  });
3703
3714
  //#endregion
3704
3715
  //#region morghulis/library/use-pagination/index.ts
3705
- function ai(e, t = 10) {
3716
+ function oi(e, t = 10) {
3706
3717
  let n = I({
3707
3718
  size: t,
3708
3719
  page: 1
@@ -3725,7 +3736,7 @@ function ai(e, t = 10) {
3725
3736
  }
3726
3737
  //#endregion
3727
3738
  //#region morghulis/components/viewer/instances/MDataViewer.vue?vue&type=script&setup=true&lang.ts
3728
- var oi = { class: "justified full" }, si = /* @__PURE__ */ M({
3739
+ var si = { class: "justified full" }, ci = /* @__PURE__ */ M({
3729
3740
  __name: "MDataViewer",
3730
3741
  props: { url: {} },
3731
3742
  setup(e) {
@@ -3733,11 +3744,11 @@ var oi = { class: "justified full" }, si = /* @__PURE__ */ M({
3733
3744
  if (!t.url) return "";
3734
3745
  let e = t.url.lastIndexOf("/");
3735
3746
  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(() => {
3747
+ }), { readBookFromURL: r, zip: i } = Ga(), a = I({}), o = I(), s = I(!0), c = T(() => a.value[o.value]), l = T(() => {
3737
3748
  if (!c.value) return [];
3738
3749
  let e = c.value.columns || [], t = c.value.headers || [];
3739
3750
  return s.value ? i(e, t) : i(e, e);
3740
- }), { total: u, results: d, pager: f } = ai(T(() => {
3751
+ }), { total: u, results: d, pager: f } = oi(T(() => {
3741
3752
  if (!c.value) return [];
3742
3753
  let e = [...c.value.data], t = c.value.columns || [], n = c.value.headers || [];
3743
3754
  return s.value || e.unshift(n), e.map((e) => i(t, e));
@@ -3750,8 +3761,8 @@ var oi = { class: "justified full" }, si = /* @__PURE__ */ M({
3750
3761
  immediate: !0
3751
3762
  }), (e, t) => {
3752
3763
  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, {
3764
+ return F(), E(Vr, null, {
3765
+ header: U(() => [k("div", si, [j(r, {
3755
3766
  size: "small",
3756
3767
  truncated: "",
3757
3768
  tag: "b"
@@ -3818,7 +3829,7 @@ var oi = { class: "justified full" }, si = /* @__PURE__ */ M({
3818
3829
  });
3819
3830
  };
3820
3831
  }
3821
- }), ci = /* @__PURE__ */ M({
3832
+ }), li = /* @__PURE__ */ M({
3822
3833
  __name: "MImageViewer",
3823
3834
  props: { url: {} },
3824
3835
  setup(e) {
@@ -3836,7 +3847,7 @@ var oi = { class: "justified full" }, si = /* @__PURE__ */ M({
3836
3847
  }, null, 8, ["src", "preview-src-list"]);
3837
3848
  };
3838
3849
  }
3839
- }), li = { class: "pager" }, ui = /*#__PURE__*/ wn(/* @__PURE__ */ M({
3850
+ }), ui = { class: "pager" }, di = /*#__PURE__*/ wn(/* @__PURE__ */ M({
3840
3851
  __name: "MPdfViewer",
3841
3852
  props: {
3842
3853
  url: {},
@@ -3858,7 +3869,7 @@ var oi = { class: "justified full" }, si = /* @__PURE__ */ M({
3858
3869
  offset: 0,
3859
3870
  teleported: !1
3860
3871
  }, {
3861
- default: U(() => [k("div", li, [j(f, { size: "small" }, {
3872
+ default: U(() => [k("div", ui, [j(f, { size: "small" }, {
3862
3873
  default: U(() => [j(u, {
3863
3874
  type: "info",
3864
3875
  tag: "b",
@@ -3897,7 +3908,7 @@ var oi = { class: "justified full" }, si = /* @__PURE__ */ M({
3897
3908
  }, 8, ["content"])), [[h, n.value]])], 64);
3898
3909
  };
3899
3910
  }
3900
- }), [["__scopeId", "data-v-0df3a547"]]), di = /* @__PURE__ */ M({
3911
+ }), [["__scopeId", "data-v-0df3a547"]]), fi = /* @__PURE__ */ M({
3901
3912
  __name: "MTxtView",
3902
3913
  props: { url: {} },
3903
3914
  setup(e) {
@@ -3921,15 +3932,15 @@ var oi = { class: "justified full" }, si = /* @__PURE__ */ M({
3921
3932
  }, null, 8, ["modelValue"]);
3922
3933
  };
3923
3934
  }
3924
- }), fi = {};
3925
- function pi(e, t) {
3935
+ }), pi = {};
3936
+ function mi(e, t) {
3926
3937
  return " 不支持的文件格式 ";
3927
3938
  }
3928
- var mi = /*#__PURE__*/ wn(fi, [["render", pi]]);
3939
+ var hi = /*#__PURE__*/ wn(pi, [["render", mi]]);
3929
3940
  //#endregion
3930
3941
  //#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 = [
3942
+ function gi(e) {
3943
+ let { minio_url: t } = Fa(), n = T(() => e.value ? `${t.value}${e.value}` : ""), r = [
3933
3944
  ".pdf",
3934
3945
  ".jpg",
3935
3946
  ".gif",
@@ -3956,7 +3967,7 @@ function hi(e) {
3956
3967
  }
3957
3968
  //#endregion
3958
3969
  //#region morghulis/components/viewer/MFileView.vue
3959
- var gi = /* @__PURE__ */ M({
3970
+ var _i = /* @__PURE__ */ M({
3960
3971
  __name: "MFileView",
3961
3972
  props: {
3962
3973
  path: {},
@@ -3964,18 +3975,18 @@ var gi = /* @__PURE__ */ M({
3964
3975
  locked: { type: Boolean }
3965
3976
  },
3966
3977
  setup(e) {
3967
- let t = e, { ext: n, name: r, url: i } = hi(T(() => t.path)), a = T(() => {
3978
+ let t = e, { ext: n, name: r, url: i } = gi(T(() => t.path)), a = T(() => {
3968
3979
  switch (n.value) {
3969
3980
  case ".xlsx":
3970
3981
  case ".xls":
3971
- case ".csv": return si;
3982
+ case ".csv": return ci;
3972
3983
  case ".jpg":
3973
3984
  case ".gif":
3974
3985
  case ".png":
3975
- case ".jpeg": return ci;
3976
- case ".pdf": return ui;
3977
- case ".txt": return di;
3978
- default: return mi;
3986
+ case ".jpeg": return li;
3987
+ case ".pdf": return di;
3988
+ case ".txt": return fi;
3989
+ default: return hi;
3979
3990
  }
3980
3991
  });
3981
3992
  return (e, t) => {
@@ -3998,16 +4009,16 @@ var gi = /* @__PURE__ */ M({
3998
4009
  }));
3999
4010
  };
4000
4011
  }
4001
- }), _i = {
4012
+ }), vi = {
4002
4013
  class: "justified",
4003
4014
  style: {
4004
4015
  padding: "5px",
4005
4016
  "text-align": "right"
4006
4017
  }
4007
- }, vi = { style: {
4018
+ }, yi = { style: {
4008
4019
  "text-align": "center",
4009
4020
  padding: "10px 0 5px 0"
4010
- } }, yi = /* @__PURE__ */ M({
4021
+ } }, bi = /* @__PURE__ */ M({
4011
4022
  __name: "DTCellEditor",
4012
4023
  props: { manager: {} },
4013
4024
  emits: ["reload"],
@@ -4060,7 +4071,7 @@ var gi = /* @__PURE__ */ M({
4060
4071
  ref_key: "dialogRef",
4061
4072
  ref: a
4062
4073
  }, {
4063
- tool: U(({ data: { field: t, row: r } }) => [t.tool === "file" ? (F(), E(V(Mr), {
4074
+ tool: U(({ data: { field: t, row: r } }) => [t.tool === "file" ? (F(), E(V(Nr), {
4064
4075
  key: 0,
4065
4076
  disabled: !t?.allow_edit,
4066
4077
  field: t,
@@ -4084,7 +4095,7 @@ var gi = /* @__PURE__ */ M({
4084
4095
  default: U(() => [...n[2] ||= [A("保存 ", -1)]]),
4085
4096
  _: 1
4086
4097
  }, 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, {
4098
+ default: U(({ data: { field: { prop: e, tool: t, refer: n, allow_edit: r, format: { locked: i } }, row: a } }) => [t === "rich" ? (F(), E(Ir, {
4088
4099
  key: 0,
4089
4100
  disabled: !r,
4090
4101
  modelValue: o.value[e],
@@ -4093,7 +4104,7 @@ var gi = /* @__PURE__ */ M({
4093
4104
  "disabled",
4094
4105
  "modelValue",
4095
4106
  "onUpdate:modelValue"
4096
- ])) : t === "object" ? (F(), E(Nr, {
4107
+ ])) : t === "object" ? (F(), E(Pr, {
4097
4108
  key: 1,
4098
4109
  disabled: !r,
4099
4110
  modelValue: o.value[e],
@@ -4102,7 +4113,7 @@ var gi = /* @__PURE__ */ M({
4102
4113
  "disabled",
4103
4114
  "modelValue",
4104
4115
  "onUpdate:modelValue"
4105
- ])) : t === "transfer" ? (F(), E(Er, {
4116
+ ])) : t === "transfer" ? (F(), E(Dr, {
4106
4117
  key: 2,
4107
4118
  modelValue: o.value[e],
4108
4119
  "onUpdate:modelValue": (t) => o.value[e] = t,
@@ -4113,18 +4124,18 @@ var gi = /* @__PURE__ */ M({
4113
4124
  "onUpdate:modelValue",
4114
4125
  "disabled",
4115
4126
  "refer"
4116
- ])) : t === "file" ? (F(), E(gi, {
4127
+ ])) : t === "file" ? (F(), E(_i, {
4117
4128
  key: 3,
4118
4129
  path: o.value[e],
4119
4130
  locked: i
4120
4131
  }, null, 8, ["path", "locked"])) : D("", !0)]),
4121
4132
  _: 1
4122
- }, 512), j(nr, {
4133
+ }, 512), j(rr, {
4123
4134
  ref_key: "popoverRef",
4124
4135
  ref: i,
4125
4136
  width: "300px"
4126
4137
  }, {
4127
- default: U(({ data: { field: t, row: r } }) => [k("div", _i, [j(K, {
4138
+ default: U(({ data: { field: t, row: r } }) => [k("div", vi, [j(K, {
4128
4139
  icon: "cancel",
4129
4140
  onClick: c
4130
4141
  }, {
@@ -4141,7 +4152,7 @@ var gi = /* @__PURE__ */ M({
4141
4152
  }, {
4142
4153
  default: U(() => [...n[4] ||= [A("保存 ", -1)]]),
4143
4154
  _: 1
4144
- }, 8, ["onClick"]))]), k("div", vi, [j(Lr, {
4155
+ }, 8, ["onClick"]))]), k("div", yi, [j(Rr, {
4145
4156
  modelValue: o.value[t.prop],
4146
4157
  "onUpdate:modelValue": (e) => o.value[t.prop] = e,
4147
4158
  field: t,
@@ -4158,7 +4169,7 @@ var gi = /* @__PURE__ */ M({
4158
4169
  _: 1
4159
4170
  }, 512)], 64));
4160
4171
  }
4161
- }), bi = /* @__PURE__ */ M({
4172
+ }), xi = /* @__PURE__ */ M({
4162
4173
  __name: "DTViews",
4163
4174
  props: {
4164
4175
  entity: {},
@@ -4187,10 +4198,10 @@ var gi = /* @__PURE__ */ M({
4187
4198
  }, null, 8, ["options", "modelValue"]);
4188
4199
  };
4189
4200
  }
4190
- }), xi = {
4201
+ }), Si = {
4191
4202
  key: 2,
4192
4203
  class: "small info"
4193
- }, Si = /* @__PURE__ */ M({
4204
+ }, Ci = /* @__PURE__ */ M({
4194
4205
  __name: "DTCell",
4195
4206
  props: {
4196
4207
  field: {},
@@ -4268,11 +4279,11 @@ var gi = /* @__PURE__ */ M({
4268
4279
  onClick: n[2] ||= (e) => a(e)
4269
4280
  }, null, 8, ["icon", "type"]),
4270
4281
  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)
4282
+ e.field.unit ? (F(), O("span", Si, B(e.field.unit), 1)) : D("", !0)
4272
4283
  ], 64);
4273
4284
  };
4274
4285
  }
4275
- }), Ci = /* @__PURE__ */ M({
4286
+ }), wi = /* @__PURE__ */ M({
4276
4287
  __name: "ViewCodePlugin",
4277
4288
  props: {
4278
4289
  data: {},
@@ -4295,7 +4306,7 @@ var gi = /* @__PURE__ */ M({
4295
4306
  onClick: t[0] ||= (e) => n(e)
4296
4307
  }, null, 8, ["icon", "type"]));
4297
4308
  }
4298
- }), wi = /* @__PURE__ */ M({
4309
+ }), Ti = /* @__PURE__ */ M({
4299
4310
  __name: "MetaSelect",
4300
4311
  props: {
4301
4312
  modelValue: {},
@@ -4363,7 +4374,7 @@ var gi = /* @__PURE__ */ M({
4363
4374
  ]);
4364
4375
  };
4365
4376
  }
4366
- }), Ti = /* @__PURE__ */ M({
4377
+ }), Ei = /* @__PURE__ */ M({
4367
4378
  __name: "MetaNameInput",
4368
4379
  props: { entity: {} },
4369
4380
  setup(e) {
@@ -4405,7 +4416,7 @@ var gi = /* @__PURE__ */ M({
4405
4416
  }, 8, ["modelValue"])) : D("", !0);
4406
4417
  };
4407
4418
  }
4408
- }), Ei = /* @__PURE__ */ M({
4419
+ }), Di = /* @__PURE__ */ M({
4409
4420
  __name: "MetaViewList",
4410
4421
  props: {
4411
4422
  entity: {},
@@ -4443,7 +4454,7 @@ var gi = /* @__PURE__ */ M({
4443
4454
  label: "当前",
4444
4455
  width: 50,
4445
4456
  fixed: "left",
4446
- component: Ci,
4457
+ component: wi,
4447
4458
  param: i,
4448
4459
  callback(e) {
4449
4460
  i.value.code = e;
@@ -4479,7 +4490,7 @@ var gi = /* @__PURE__ */ M({
4479
4490
  ];
4480
4491
  return (t, n) => {
4481
4492
  let l = z("el-switch");
4482
- return F(), O(w, null, [j(ua, {
4493
+ return F(), O(w, null, [j(da, {
4483
4494
  ref_key: "tableRef",
4484
4495
  ref: u,
4485
4496
  entity: "valar.MetaView",
@@ -4489,12 +4500,12 @@ var gi = /* @__PURE__ */ M({
4489
4500
  buttons: p
4490
4501
  }, {
4491
4502
  default: U(() => [
4492
- j(wi, {
4503
+ j(Ti, {
4493
4504
  modelValue: i.value,
4494
4505
  "onUpdate:modelValue": n[0] ||= (e) => i.value = e,
4495
4506
  onChange: a
4496
4507
  }, null, 8, ["modelValue"]),
4497
- j(Ti, { entity: i.value.entity }, null, 8, ["entity"]),
4508
+ j(Ei, { entity: i.value.entity }, null, 8, ["entity"]),
4498
4509
  e.locked ? D("", !0) : (F(), E(K, {
4499
4510
  key: 0,
4500
4511
  onClick: c,
@@ -4529,11 +4540,11 @@ var gi = /* @__PURE__ */ M({
4529
4540
  "active-text": "树形",
4530
4541
  "inactive-text": "表格"
4531
4542
  }, null, 8, ["modelValue", "onUpdate:modelValue"])) : D("", !0)]),
4532
- default: U(({ data: { is_tree: e, code: t, entity: n } }) => [e ? (F(), E(ha, {
4543
+ default: U(({ data: { is_tree: e, code: t, entity: n } }) => [e ? (F(), E(ga, {
4533
4544
  key: 0,
4534
4545
  entity: n,
4535
4546
  code: t
4536
- }, null, 8, ["entity", "code"])) : (F(), E(ua, {
4547
+ }, null, 8, ["entity", "code"])) : (F(), E(da, {
4537
4548
  key: 1,
4538
4549
  entity: n,
4539
4550
  code: t
@@ -4542,7 +4553,7 @@ var gi = /* @__PURE__ */ M({
4542
4553
  }, 512)], 64);
4543
4554
  };
4544
4555
  }
4545
- }), Di = /* @__PURE__ */ M({
4556
+ }), Oi = /* @__PURE__ */ M({
4546
4557
  __name: "CustomFields",
4547
4558
  props: {
4548
4559
  options: {},
@@ -4603,7 +4614,7 @@ var gi = /* @__PURE__ */ M({
4603
4614
  }, 8, ["modelValue"]);
4604
4615
  };
4605
4616
  }
4606
- }), Oi = /* @__PURE__ */ M({
4617
+ }), ki = /* @__PURE__ */ M({
4607
4618
  __name: "ReferPlugin",
4608
4619
  props: {
4609
4620
  data: {},
@@ -4614,7 +4625,7 @@ var gi = /* @__PURE__ */ M({
4614
4625
  let t = e, n = T(() => t.data?.refer.entity), r = T(() => {
4615
4626
  if (!t.data) return !0;
4616
4627
  let { tool: e, domain: n } = t.data;
4617
- return !e || !n ? !0 : Xn.referred.includes(n) ? !1 : n !== "CharField" || ![
4628
+ return !e || !n ? !0 : Zn.referred.includes(n) ? !1 : n !== "CharField" || ![
4618
4629
  "select",
4619
4630
  "cascade",
4620
4631
  "tree",
@@ -4639,7 +4650,7 @@ var gi = /* @__PURE__ */ M({
4639
4650
  "type"
4640
4651
  ]));
4641
4652
  }
4642
- }), ki = /* @__PURE__ */ M({
4653
+ }), Ai = /* @__PURE__ */ M({
4643
4654
  __name: "ReferOption",
4644
4655
  props: {
4645
4656
  refer: {},
@@ -4649,7 +4660,7 @@ var gi = /* @__PURE__ */ M({
4649
4660
  setup(e, { emit: t }) {
4650
4661
  let n = e, r = W(n, "refer", t);
4651
4662
  function i(e) {
4652
- return !r.value.entity || Xn.referred.includes(n.domain) && e === "value";
4663
+ return !r.value.entity || Zn.referred.includes(n.domain) && e === "value";
4653
4664
  }
4654
4665
  let a = {
4655
4666
  value: "取值字段",
@@ -4667,7 +4678,7 @@ var gi = /* @__PURE__ */ M({
4667
4678
  r && (console.error("加载字段选项失败", e), c.error("字段选项加载失败,请重新选择元数据"));
4668
4679
  }
4669
4680
  }, { 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 }) => ({
4681
+ let u = T(() => l.value ? Object.values(l.value.model).filter(({ domain: e }) => !Zn.referred.includes(e || "")).map(({ prop: e, label: t }) => ({
4671
4682
  value: e,
4672
4683
  label: t,
4673
4684
  display: e
@@ -4701,7 +4712,7 @@ var gi = /* @__PURE__ */ M({
4701
4712
  }, 1024)), 64);
4702
4713
  };
4703
4714
  }
4704
- }), Ai = /* @__PURE__ */ M({
4715
+ }), ji = /* @__PURE__ */ M({
4705
4716
  __name: "TreeRootSelection",
4706
4717
  props: {
4707
4718
  modelValue: {},
@@ -4758,7 +4769,7 @@ var gi = /* @__PURE__ */ M({
4758
4769
  ]);
4759
4770
  };
4760
4771
  }
4761
- }), ji = /* @__PURE__ */ M({
4772
+ }), Mi = /* @__PURE__ */ M({
4762
4773
  __name: "ReferEditor",
4763
4774
  props: {
4764
4775
  refer: {},
@@ -4780,7 +4791,7 @@ var gi = /* @__PURE__ */ M({
4780
4791
  label: "元数据",
4781
4792
  "label-position": "top"
4782
4793
  }, {
4783
- default: U(() => [j(wi, {
4794
+ default: U(() => [j(Ti, {
4784
4795
  modelValue: V(r),
4785
4796
  "onUpdate:modelValue": n[0] ||= (e) => N(r) ? r.value = e : null,
4786
4797
  disabled: e.domain !== "CharField"
@@ -4808,7 +4819,7 @@ var gi = /* @__PURE__ */ M({
4808
4819
  })]),
4809
4820
  _: 1
4810
4821
  }),
4811
- j(ki, {
4822
+ j(Ai, {
4812
4823
  refer: V(r),
4813
4824
  "onUpdate:refer": n[2] ||= (e) => N(r) ? r.value = e : null,
4814
4825
  domain: e.domain
@@ -4818,7 +4829,7 @@ var gi = /* @__PURE__ */ M({
4818
4829
  label: "检索条件(包含)",
4819
4830
  "label-position": "top"
4820
4831
  }, {
4821
- default: U(() => [j(Nr, {
4832
+ default: U(() => [j(Pr, {
4822
4833
  modelValue: V(r).includes,
4823
4834
  "onUpdate:modelValue": n[3] ||= (e) => V(r).includes = e,
4824
4835
  disabled: !V(r).entity
@@ -4832,7 +4843,7 @@ var gi = /* @__PURE__ */ M({
4832
4843
  label: "检索条件(排除)",
4833
4844
  "label-position": "top"
4834
4845
  }, {
4835
- default: U(() => [j(Nr, {
4846
+ default: U(() => [j(Pr, {
4836
4847
  modelValue: V(r).excludes,
4837
4848
  "onUpdate:modelValue": n[4] ||= (e) => V(r).excludes = e,
4838
4849
  disabled: !V(r).entity
@@ -4849,7 +4860,7 @@ var gi = /* @__PURE__ */ M({
4849
4860
  label: "跟节点",
4850
4861
  "label-position": "top"
4851
4862
  }, {
4852
- default: U(() => [j(Ai, {
4863
+ default: U(() => [j(ji, {
4853
4864
  modelValue: V(r).root,
4854
4865
  "onUpdate:modelValue": n[5] ||= (e) => V(r).root = e,
4855
4866
  entity: V(r).entity,
@@ -4890,7 +4901,7 @@ var gi = /* @__PURE__ */ M({
4890
4901
  });
4891
4902
  };
4892
4903
  }
4893
- }), Mi = /* @__PURE__ */ M({
4904
+ }), Ni = /* @__PURE__ */ M({
4894
4905
  __name: "ReferDialog",
4895
4906
  props: { save: { type: Function } },
4896
4907
  setup(e, { expose: t }) {
@@ -4912,7 +4923,7 @@ var gi = /* @__PURE__ */ M({
4912
4923
  confirm: a,
4913
4924
  width: "600"
4914
4925
  }, {
4915
- default: U(({ data: e }) => [j(ji, {
4926
+ default: U(({ data: e }) => [j(Mi, {
4916
4927
  refer: e.refer,
4917
4928
  "onUpdate:refer": (t) => e.refer = t,
4918
4929
  domain: e.domain,
@@ -4926,7 +4937,7 @@ var gi = /* @__PURE__ */ M({
4926
4937
  _: 1
4927
4938
  }, 512));
4928
4939
  }
4929
- }), Ni = /* @__PURE__ */ M({
4940
+ }), Pi = /* @__PURE__ */ M({
4930
4941
  __name: "DateFormats",
4931
4942
  props: {
4932
4943
  modelValue: {},
@@ -4957,7 +4968,7 @@ var gi = /* @__PURE__ */ M({
4957
4968
  ];
4958
4969
  default: return ["date"];
4959
4970
  }
4960
- }), a = T(() => Object.entries(Yn).filter(([e, t]) => i.value.includes(e)).map(([e, t]) => ({
4971
+ }), a = T(() => Object.entries(Xn).filter(([e, t]) => i.value.includes(e)).map(([e, t]) => ({
4961
4972
  label: t.label,
4962
4973
  value: e
4963
4974
  })));
@@ -4981,7 +4992,7 @@ var gi = /* @__PURE__ */ M({
4981
4992
  });
4982
4993
  };
4983
4994
  }
4984
- }), Pi = /* @__PURE__ */ M({
4995
+ }), Fi = /* @__PURE__ */ M({
4985
4996
  __name: "FileFormats",
4986
4997
  props: {
4987
4998
  modelValue: {},
@@ -4995,7 +5006,7 @@ var gi = /* @__PURE__ */ M({
4995
5006
  ".gif",
4996
5007
  ".png",
4997
5008
  ".jpeg"
4998
- ] : Jn);
5009
+ ] : Yn);
4999
5010
  return (t, n) => {
5000
5011
  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
5012
  return F(), E(f, { "label-position": "top" }, {
@@ -5106,7 +5117,7 @@ var gi = /* @__PURE__ */ M({
5106
5117
  });
5107
5118
  };
5108
5119
  }
5109
- }), Fi = /* @__PURE__ */ M({
5120
+ }), Ii = /* @__PURE__ */ M({
5110
5121
  __name: "NumberFormats",
5111
5122
  props: {
5112
5123
  modelValue: {},
@@ -5220,7 +5231,7 @@ var gi = /* @__PURE__ */ M({
5220
5231
  });
5221
5232
  };
5222
5233
  }
5223
- }), Ii = /* @__PURE__ */ M({
5234
+ }), Li = /* @__PURE__ */ M({
5224
5235
  __name: "MappingEditor",
5225
5236
  props: { modelValue: {} },
5226
5237
  emits: ["update:modelValue"],
@@ -5301,7 +5312,7 @@ var gi = /* @__PURE__ */ M({
5301
5312
  }, 8, ["data"]);
5302
5313
  };
5303
5314
  }
5304
- }), Li = /* @__PURE__ */ M({
5315
+ }), Ri = /* @__PURE__ */ M({
5305
5316
  __name: "SetFormats",
5306
5317
  props: {
5307
5318
  modelValue: {},
@@ -5311,12 +5322,12 @@ var gi = /* @__PURE__ */ M({
5311
5322
  emits: ["update:modelValue"],
5312
5323
  setup(e, { emit: t }) {
5313
5324
  let n = W(e, "modelValue", t);
5314
- return (e, t) => (F(), E(Ii, {
5325
+ return (e, t) => (F(), E(Li, {
5315
5326
  modelValue: V(n).set,
5316
5327
  "onUpdate:modelValue": t[0] ||= (e) => V(n).set = e
5317
5328
  }, null, 8, ["modelValue"]));
5318
5329
  }
5319
- }), Ri = /* @__PURE__ */ M({
5330
+ }), zi = /* @__PURE__ */ M({
5320
5331
  __name: "TextFormats",
5321
5332
  props: {
5322
5333
  modelValue: {},
@@ -5369,7 +5380,7 @@ var gi = /* @__PURE__ */ M({
5369
5380
  });
5370
5381
  };
5371
5382
  }
5372
- }), zi = /* @__PURE__ */ M({
5383
+ }), Bi = /* @__PURE__ */ M({
5373
5384
  __name: "FormatEditor",
5374
5385
  props: {
5375
5386
  format: {},
@@ -5381,15 +5392,15 @@ var gi = /* @__PURE__ */ M({
5381
5392
  let n = e, r = W(n, "format", t), i = T(() => {
5382
5393
  switch (n.tool) {
5383
5394
  case "text":
5384
- case "textarea": return Ri;
5385
- case "set": return Li;
5386
- case "number": return Fi;
5395
+ case "textarea": return zi;
5396
+ case "set": return Ri;
5397
+ case "number": return Ii;
5387
5398
  case "date":
5388
5399
  case "daterange":
5389
- case "dates": return Ni;
5400
+ case "dates": return Pi;
5390
5401
  case "rich":
5391
5402
  case "image":
5392
- case "file": return Pi;
5403
+ case "file": return Fi;
5393
5404
  }
5394
5405
  });
5395
5406
  return (t, n) => i.value ? (F(), E(Lt(i.value), {
@@ -5405,7 +5416,7 @@ var gi = /* @__PURE__ */ M({
5405
5416
  "modelValue"
5406
5417
  ])) : D("", !0);
5407
5418
  }
5408
- }), Bi = /* @__PURE__ */ M({
5419
+ }), Vi = /* @__PURE__ */ M({
5409
5420
  __name: "FormatDialog",
5410
5421
  props: { save: { type: Function } },
5411
5422
  setup(e, { expose: t }) {
@@ -5426,7 +5437,7 @@ var gi = /* @__PURE__ */ M({
5426
5437
  title: "格式设置",
5427
5438
  confirm: a
5428
5439
  }, {
5429
- default: U(({ data: e }) => [j(zi, {
5440
+ default: U(({ data: e }) => [j(Bi, {
5430
5441
  format: e.format,
5431
5442
  "onUpdate:format": (t) => e.format = t,
5432
5443
  tool: e.tool,
@@ -5440,7 +5451,7 @@ var gi = /* @__PURE__ */ M({
5440
5451
  _: 1
5441
5452
  }, 512));
5442
5453
  }
5443
- }), Vi = /* @__PURE__ */ M({
5454
+ }), Hi = /* @__PURE__ */ M({
5444
5455
  __name: "FormatPlugin",
5445
5456
  props: {
5446
5457
  data: {},
@@ -5483,7 +5494,7 @@ var gi = /* @__PURE__ */ M({
5483
5494
  "type"
5484
5495
  ]));
5485
5496
  }
5486
- }), Hi = /* @__PURE__ */ M({
5497
+ }), Ui = /* @__PURE__ */ M({
5487
5498
  __name: "MetaFieldList",
5488
5499
  props: {
5489
5500
  entity: {},
@@ -5497,14 +5508,14 @@ var gi = /* @__PURE__ */ M({
5497
5508
  P(u);
5498
5509
  let d = T(() => ({ view_id: l.value?.view_id || 0 })), f = [{
5499
5510
  label: "索引设置",
5500
- component: Oi,
5511
+ component: ki,
5501
5512
  callback: (e) => {
5502
5513
  s.value?.open(e);
5503
5514
  },
5504
5515
  width: 100
5505
5516
  }, {
5506
5517
  label: "格式设置",
5507
- component: Vi,
5518
+ component: Hi,
5508
5519
  callback: (e) => o.value?.open(e),
5509
5520
  width: 100
5510
5521
  }];
@@ -5558,7 +5569,7 @@ var gi = /* @__PURE__ */ M({
5558
5569
  return (e, t) => {
5559
5570
  let c = z("el-select");
5560
5571
  return F(), O(w, null, [
5561
- j(ua, {
5572
+ j(da, {
5562
5573
  ref_key: "tableRef",
5563
5574
  ref: i,
5564
5575
  unrestricted: "",
@@ -5619,7 +5630,7 @@ var gi = /* @__PURE__ */ M({
5619
5630
  title: "自定义字段",
5620
5631
  confirm: _
5621
5632
  }, {
5622
- default: U(({ data: { options: e, entity: t, view_id: n } }) => [j(Di, {
5633
+ default: U(({ data: { options: e, entity: t, view_id: n } }) => [j(Oi, {
5623
5634
  ref_key: "customSelectRef",
5624
5635
  ref: a,
5625
5636
  options: e,
@@ -5632,12 +5643,12 @@ var gi = /* @__PURE__ */ M({
5632
5643
  ])]),
5633
5644
  _: 1
5634
5645
  }, 512),
5635
- j(Mi, {
5646
+ j(Ni, {
5636
5647
  ref_key: "referDialog",
5637
5648
  ref: s,
5638
5649
  save: p
5639
5650
  }, null, 512),
5640
- j(Bi, {
5651
+ j(Vi, {
5641
5652
  ref_key: "formatDialog",
5642
5653
  ref: o,
5643
5654
  save: p
@@ -5645,7 +5656,7 @@ var gi = /* @__PURE__ */ M({
5645
5656
  ], 64);
5646
5657
  };
5647
5658
  }
5648
- }), Ui = /* @__PURE__ */ M({
5659
+ }), Wi = /* @__PURE__ */ M({
5649
5660
  __name: "MetaViewForm",
5650
5661
  props: {
5651
5662
  entity: {},
@@ -5677,7 +5688,7 @@ var gi = /* @__PURE__ */ M({
5677
5688
  }
5678
5689
  return t({ save: l }), (e, t) => {
5679
5690
  let n = It("loading");
5680
- return Ut((F(), E(ri, {
5691
+ return Ut((F(), E(ii, {
5681
5692
  ref_key: "formRef",
5682
5693
  ref: r,
5683
5694
  original: s.value,
@@ -5691,7 +5702,7 @@ var gi = /* @__PURE__ */ M({
5691
5702
  ])), [[n, V(a)]]);
5692
5703
  };
5693
5704
  }
5694
- }), Wi = /*#__PURE__*/ wn(/* @__PURE__ */ M({
5705
+ }), Gi = /*#__PURE__*/ wn(/* @__PURE__ */ M({
5695
5706
  __name: "MetaPanel",
5696
5707
  props: {
5697
5708
  entity: {},
@@ -5769,7 +5780,7 @@ var gi = /* @__PURE__ */ M({
5769
5780
  title: "权限管理",
5770
5781
  confirm: p
5771
5782
  }, {
5772
- default: U(({ data: { entity: e, code: t } }) => [j(Ui, {
5783
+ default: U(({ data: { entity: e, code: t } }) => [j(Wi, {
5773
5784
  ref_key: "viewRef",
5774
5785
  ref: s,
5775
5786
  entity: e,
@@ -5783,7 +5794,7 @@ var gi = /* @__PURE__ */ M({
5783
5794
  width: "1050",
5784
5795
  title: "字段管理"
5785
5796
  }, {
5786
- default: U(({ data: { entity: e, code: t } }) => [j(Hi, {
5797
+ default: U(({ data: { entity: e, code: t } }) => [j(Ui, {
5787
5798
  entity: e,
5788
5799
  code: t
5789
5800
  }, null, 8, ["entity", "code"])]),
@@ -5795,7 +5806,7 @@ var gi = /* @__PURE__ */ M({
5795
5806
  width: "1000",
5796
5807
  title: "视图管理"
5797
5808
  }, {
5798
- default: U(() => [j(Ei, {
5809
+ default: U(() => [j(Di, {
5799
5810
  entity: V(l),
5800
5811
  code: V(u),
5801
5812
  onForm: d,
@@ -5807,7 +5818,7 @@ var gi = /* @__PURE__ */ M({
5807
5818
  ], 64);
5808
5819
  };
5809
5820
  }
5810
- }), [["__scopeId", "data-v-60f998c8"]]), Gi = { class: "justified" }, Ki = /* @__PURE__ */ M({
5821
+ }), [["__scopeId", "data-v-60f998c8"]]), Ki = { class: "justified" }, qi = /* @__PURE__ */ M({
5811
5822
  __name: "MetaFieldForm",
5812
5823
  props: { field_id: {} },
5813
5824
  setup(e) {
@@ -5848,7 +5859,7 @@ var gi = /* @__PURE__ */ M({
5848
5859
  let n = z("el-segmented"), p = z("el-col"), h = z("el-row"), g = z("el-card");
5849
5860
  return F(), O(w, null, [
5850
5861
  j(g, { shadow: "never" }, Tt({
5851
- header: U(() => [k("div", Gi, [j(n, {
5862
+ header: U(() => [k("div", Ki, [j(n, {
5852
5863
  disabled: f.value,
5853
5864
  options: l,
5854
5865
  modelValue: u.value,
@@ -5865,7 +5876,7 @@ var gi = /* @__PURE__ */ M({
5865
5876
  default: U(() => [...t[3] ||= [A("保存 ", -1)]]),
5866
5877
  _: 1
5867
5878
  }, 8, ["disabled", "bounce"])])]),
5868
- default: U(() => [j(ri, {
5879
+ default: U(() => [j(ii, {
5869
5880
  original: r.value,
5870
5881
  fields: d.value,
5871
5882
  modelValue: i.value,
@@ -5880,13 +5891,13 @@ var gi = /* @__PURE__ */ M({
5880
5891
  name: "footer",
5881
5892
  fn: U(() => [j(h, { gutter: 20 }, {
5882
5893
  default: U(() => [j(p, { span: 12 }, {
5883
- default: U(() => [j(Oi, {
5894
+ default: U(() => [j(ki, {
5884
5895
  data: r.value,
5885
5896
  invoke: c
5886
5897
  }, null, 8, ["data"])]),
5887
5898
  _: 1
5888
5899
  }), j(p, { span: 12 }, {
5889
- default: U(() => [j(Vi, {
5900
+ default: U(() => [j(Hi, {
5890
5901
  data: r.value,
5891
5902
  invoke: s
5892
5903
  }, null, 8, ["data"])]),
@@ -5896,12 +5907,12 @@ var gi = /* @__PURE__ */ M({
5896
5907
  })]),
5897
5908
  key: "0"
5898
5909
  } : void 0]), 1024),
5899
- j(Bi, {
5910
+ j(Vi, {
5900
5911
  ref_key: "formatDialog",
5901
5912
  ref: a,
5902
5913
  save: m
5903
5914
  }, null, 512),
5904
- j(Mi, {
5915
+ j(Ni, {
5905
5916
  ref_key: "referDialog",
5906
5917
  ref: o,
5907
5918
  save: m
@@ -5912,7 +5923,7 @@ var gi = /* @__PURE__ */ M({
5912
5923
  });
5913
5924
  //#endregion
5914
5925
  //#region morghulis/library/use-paster/index.ts
5915
- function qi() {
5926
+ function Ji() {
5916
5927
  let e = I(!1);
5917
5928
  function t() {
5918
5929
  return e.value = !0, new Promise((t) => {
@@ -5939,7 +5950,7 @@ function qi() {
5939
5950
  }
5940
5951
  //#endregion
5941
5952
  //#region morghulis/components/uploader/tools/ClipUploader.vue
5942
- var Ji = /* @__PURE__ */ M({
5953
+ var Yi = /* @__PURE__ */ M({
5943
5954
  __name: "ClipUploader",
5944
5955
  props: {
5945
5956
  fields: {},
@@ -5947,7 +5958,7 @@ var Ji = /* @__PURE__ */ M({
5947
5958
  },
5948
5959
  emits: ["success"],
5949
5960
  setup(e, { emit: t }) {
5950
- let n = e, { inactive: r, pending: i, getClipboardData: a, openPaster: o } = qi(), s = t, { $message: c } = J();
5961
+ let n = e, { inactive: r, pending: i, getClipboardData: a, openPaster: o } = Ji(), s = t, { $message: c } = J();
5951
5962
  function l() {
5952
5963
  c.info("剪切板已打开"), o().then(p);
5953
5964
  }
@@ -5960,7 +5971,7 @@ var Ji = /* @__PURE__ */ M({
5960
5971
  console.error("读取剪贴板失败", e), c.error("读取剪贴板失败,请检查浏览器权限");
5961
5972
  }
5962
5973
  }
5963
- let { textToJson: d } = Ua();
5974
+ let { textToJson: d } = Wa();
5964
5975
  function f(e) {
5965
5976
  return n.fields.length > 0 && n.fields.every((t) => e[t.prop] === t.label);
5966
5977
  }
@@ -6064,7 +6075,7 @@ var Ji = /* @__PURE__ */ M({
6064
6075
  }));
6065
6076
  };
6066
6077
  }
6067
- }), Yi = /* @__PURE__ */ M({
6078
+ }), Xi = /* @__PURE__ */ M({
6068
6079
  __name: "FileUploader",
6069
6080
  props: {
6070
6081
  fields: {},
@@ -6073,7 +6084,7 @@ var Ji = /* @__PURE__ */ M({
6073
6084
  },
6074
6085
  emits: ["success"],
6075
6086
  setup(e, { emit: t }) {
6076
- let n = e, r = t, i = I(), { readBookFromFile: a, zip: o } = Wa(), { $message: s } = J();
6087
+ let n = e, r = t, i = I(), { readBookFromFile: a, zip: o } = Ga(), { $message: s } = J();
6077
6088
  async function c(e) {
6078
6089
  i.value?.clearFiles();
6079
6090
  let t = e?.raw;
@@ -6135,10 +6146,10 @@ var Ji = /* @__PURE__ */ M({
6135
6146
  }, 512);
6136
6147
  };
6137
6148
  }
6138
- }), Xi = {
6149
+ }), Zi = {
6139
6150
  class: "justified",
6140
6151
  style: { "margin-bottom": "10px" }
6141
- }, Zi = /* @__PURE__ */ M({
6152
+ }, Qi = /* @__PURE__ */ M({
6142
6153
  __name: "UploadControl",
6143
6154
  props: {
6144
6155
  raw: {},
@@ -6157,13 +6168,13 @@ var Ji = /* @__PURE__ */ M({
6157
6168
  setup(e, { emit: t }) {
6158
6169
  let n = e, r = t, i = I(), a = W(n, "raw", r), o = W(n, "valid", r), s = W(n, "referred", r);
6159
6170
  H(a, () => o.value = null);
6160
- let c = T(() => !!n.fields.filter((e) => Xn.referred.includes(e.domain)).length), { $confirm: l, $message: u } = J();
6171
+ let c = T(() => !!n.fields.filter((e) => Zn.referred.includes(e.domain)).length), { $confirm: l, $message: u } = J();
6161
6172
  function d() {
6162
6173
  l.info("是否清空已上传的数据?").then(() => {
6163
6174
  a.value = [];
6164
6175
  });
6165
6176
  }
6166
- let { copy: f } = qt(), { writeSheets: p } = Wa();
6177
+ let { copy: f } = qt(), { writeSheets: p } = Ga();
6167
6178
  function m(e) {
6168
6179
  let t = n.fields.filter((e) => e).map((e) => e.label);
6169
6180
  if (e === "clip") f(t.join(" ")).then(() => u.success("表头已复制到剪切板,请粘贴到Excel文件"));
@@ -6181,7 +6192,7 @@ var Ji = /* @__PURE__ */ M({
6181
6192
  }
6182
6193
  return (t, n) => {
6183
6194
  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, {
6195
+ return F(), O(w, null, [k("div", Zi, [j(r, {
6185
6196
  spacer: "|",
6186
6197
  size: 3
6187
6198
  }, {
@@ -6292,7 +6303,7 @@ var Ji = /* @__PURE__ */ M({
6292
6303
  title: "数据上传",
6293
6304
  width: "350"
6294
6305
  }, {
6295
- default: U(({ data: t }) => [t === "file" ? (F(), E(Yi, {
6306
+ default: U(({ data: t }) => [t === "file" ? (F(), E(Xi, {
6296
6307
  key: 0,
6297
6308
  fields: e.fields,
6298
6309
  sheet_name: e.sheet_name,
@@ -6302,7 +6313,7 @@ var Ji = /* @__PURE__ */ M({
6302
6313
  "fields",
6303
6314
  "sheet_name",
6304
6315
  "referred"
6305
- ])) : D("", !0), t === "clip" ? (F(), E(Ji, {
6316
+ ])) : D("", !0), t === "clip" ? (F(), E(Yi, {
6306
6317
  key: 1,
6307
6318
  fields: e.fields,
6308
6319
  referred: V(s),
@@ -6312,11 +6323,11 @@ var Ji = /* @__PURE__ */ M({
6312
6323
  }, 512)], 64);
6313
6324
  };
6314
6325
  }
6315
- }), Qi = /* @__PURE__ */ M({
6326
+ }), $i = /* @__PURE__ */ M({
6316
6327
  __name: "UploadDictionary",
6317
6328
  props: { field: {} },
6318
6329
  setup(e) {
6319
- let t = e, { results: n, total: r, pager: i } = ai(T(() => t.field.values));
6330
+ let t = e, { results: n, total: r, pager: i } = oi(T(() => t.field.values));
6320
6331
  return (e, t) => {
6321
6332
  let a = z("el-table-column"), o = z("el-pagination"), s = z("el-table");
6322
6333
  return F(), E(s, {
@@ -6374,7 +6385,7 @@ var Ji = /* @__PURE__ */ M({
6374
6385
  }, 8, ["data"]);
6375
6386
  };
6376
6387
  }
6377
- }), $i = /* @__PURE__ */ M({
6388
+ }), ea = /* @__PURE__ */ M({
6378
6389
  __name: "DictDialog",
6379
6390
  setup(e, { expose: t }) {
6380
6391
  let { copy: n } = qt(), { $message: r } = J(), i = I();
@@ -6427,7 +6438,7 @@ var Ji = /* @__PURE__ */ M({
6427
6438
  ]),
6428
6439
  _: 2
6429
6440
  }, 1024)]),
6430
- default: U(({ data: e }) => [j(Qi, { field: e }, null, 8, ["field"])]),
6441
+ default: U(({ data: e }) => [j($i, { field: e }, null, 8, ["field"])]),
6431
6442
  _: 1
6432
6443
  }, 512);
6433
6444
  };
@@ -6435,21 +6446,21 @@ var Ji = /* @__PURE__ */ M({
6435
6446
  });
6436
6447
  //#endregion
6437
6448
  //#region morghulis/library/use-data/methods.ts
6438
- function ea(e) {
6449
+ function ta(e) {
6439
6450
  if (!/^\d{4}-\d{2}-\d{2}$/.test(e)) return !1;
6440
6451
  let t = /* @__PURE__ */ new Date(e + "T00:00:00.000Z");
6441
6452
  return Number.isFinite(t.getTime()) && t.toISOString().slice(0, 10) === e;
6442
6453
  }
6443
- function ta(e) {
6454
+ function na(e) {
6444
6455
  return /^(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d$/.test(e);
6445
6456
  }
6446
- function na(e) {
6457
+ function ra(e) {
6447
6458
  let [t, n, ...r] = e.split(" ");
6448
- return !!t && !!n && !r.length && ea(t) && ta(n);
6459
+ return !!t && !!n && !r.length && ta(t) && na(n);
6449
6460
  }
6450
6461
  //#endregion
6451
6462
  //#region morghulis/components/uploader/hooks.ts
6452
- function ra(e, t) {
6463
+ function ia(e, t) {
6453
6464
  let n = T(() => {
6454
6465
  let n = e.value.map((e) => {
6455
6466
  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 +6480,8 @@ function ra(e, t) {
6469
6480
  value: null,
6470
6481
  label: ""
6471
6482
  };
6472
- if (Xn.referred.includes(a)) {
6473
- let e = Xn.multiple.includes(a), { mapping: n } = i;
6483
+ if (Zn.referred.includes(a)) {
6484
+ let e = Zn.multiple.includes(a), { mapping: n } = i;
6474
6485
  if (e) {
6475
6486
  if (t.value) {
6476
6487
  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 +6584,11 @@ function ra(e, t) {
6573
6584
  "DateTimeField"
6574
6585
  ].includes(a)) {
6575
6586
  let e = r.trim();
6576
- if (na(e)) {
6587
+ if (ra(e)) {
6577
6588
  let [t = "", n = ""] = e.split(" ");
6578
6589
  a === "DateField" && (e = t), a === "TimeField" && (e = n);
6579
6590
  }
6580
- return (a === "DateField" ? ea(e) : a === "TimeField" ? ta(e) : na(e)) ? {
6591
+ return (a === "DateField" ? ta(e) : a === "TimeField" ? na(e) : ra(e)) ? {
6581
6592
  value: e,
6582
6593
  label: e
6583
6594
  } : {
@@ -6595,10 +6606,10 @@ function ra(e, t) {
6595
6606
  }
6596
6607
  //#endregion
6597
6608
  //#region morghulis/components/uploader/UploadTable.vue?vue&type=script&setup=true&lang.ts
6598
- var ia = {
6609
+ var aa = {
6599
6610
  style: { height: "200px" },
6600
6611
  class: "h-center center"
6601
- }, aa = { key: 0 }, oa = { key: 1 }, sa = /* @__PURE__ */ M({
6612
+ }, oa = { key: 0 }, sa = { key: 1 }, ca = /* @__PURE__ */ M({
6602
6613
  __name: "UploadTable",
6603
6614
  props: {
6604
6615
  dict: {},
@@ -6639,10 +6650,10 @@ var ia = {
6639
6650
  type: "danger",
6640
6651
  icon: "remove"
6641
6652
  }];
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(() => {
6653
+ }), { results: f, pager: p, total: m } = oi(T(() => a.value == null ? u.value : u.value.filter((e) => a.value === (e.$valid == null)))), h = T(() => {
6643
6654
  let e = n.dict.fields.filter((e) => n.keys.includes(e.prop)), { id: t, sort: r } = n;
6644
6655
  return t && e.unshift(_), r && e.unshift(v), e;
6645
- }), { parser: g } = ra(h, o), _ = {
6656
+ }), { parser: g } = ia(h, o), _ = {
6646
6657
  label: "ID",
6647
6658
  prop: "id",
6648
6659
  domain: "BigAutoField",
@@ -6672,7 +6683,7 @@ var ia = {
6672
6683
  return t({ getData: x }), (t, n) => {
6673
6684
  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
6685
  return F(), O(w, null, [
6675
- j(Zi, {
6686
+ j(Qi, {
6676
6687
  fields: h.value,
6677
6688
  file_name: e.dict.meta_name,
6678
6689
  sheet_name: e.dict.view_name,
@@ -6700,7 +6711,7 @@ var ia = {
6700
6711
  "cell-class-name": c,
6701
6712
  onCellClick: l
6702
6713
  }, {
6703
- empty: U(() => [k("div", ia, [j(G, {
6714
+ empty: U(() => [k("div", aa, [j(G, {
6704
6715
  icon: "info-circle",
6705
6716
  size: "large",
6706
6717
  "icon-size": "lg"
@@ -6743,7 +6754,7 @@ var ia = {
6743
6754
  key: 0,
6744
6755
  disabled: !e.hasEmpty && !e.isDuplicate
6745
6756
  }, {
6746
- content: U(() => [e.hasEmpty ? (F(), O("div", aa, "索引存在空值")) : D("", !0), e.isDuplicate ? D("", !0) : (F(), O("div", oa, "索引存在重复值"))]),
6757
+ content: U(() => [e.hasEmpty ? (F(), O("div", oa, "索引存在空值")) : D("", !0), e.isDuplicate ? D("", !0) : (F(), O("div", sa, "索引存在重复值"))]),
6747
6758
  default: U(() => [j(K, {
6748
6759
  icon: "book",
6749
6760
  type: o.value ? "warning" : "info",
@@ -6769,11 +6780,11 @@ var ia = {
6769
6780
  title: "请至少选择一个字段",
6770
6781
  icon: "warning"
6771
6782
  })),
6772
- j($i, {
6783
+ j(ea, {
6773
6784
  ref_key: "dictRef",
6774
6785
  ref: r
6775
6786
  }, null, 512),
6776
- j(nr, {
6787
+ j(rr, {
6777
6788
  ref_key: "invalidRef",
6778
6789
  ref: i,
6779
6790
  width: "80",
@@ -6788,7 +6799,7 @@ var ia = {
6788
6799
  ], 64);
6789
6800
  };
6790
6801
  }
6791
- }), ca = /* @__PURE__ */ M({
6802
+ }), la = /* @__PURE__ */ M({
6792
6803
  __name: "UploadSwitcher",
6793
6804
  props: {
6794
6805
  id: { type: Boolean },
@@ -6844,7 +6855,7 @@ var ia = {
6844
6855
  });
6845
6856
  };
6846
6857
  }
6847
- }), la = /* @__PURE__ */ M({
6858
+ }), ua = /* @__PURE__ */ M({
6848
6859
  __name: "MUploader",
6849
6860
  emits: ["confirm"],
6850
6861
  setup(e, { expose: t, emit: n }) {
@@ -6900,7 +6911,7 @@ var ia = {
6900
6911
  default: U(() => [j(kn, { items: e.options }, null, 8, ["items"])]),
6901
6912
  _: 2
6902
6913
  }, 1032, ["modelValue", "onUpdate:modelValue"])]),
6903
- tool: U(({ data: e }) => [j(ca, {
6914
+ tool: U(({ data: e }) => [j(la, {
6904
6915
  id: e.id,
6905
6916
  "onUpdate:id": (t) => e.id = t,
6906
6917
  sort: e.sort,
@@ -6915,7 +6926,7 @@ var ia = {
6915
6926
  "is_update",
6916
6927
  "onUpdate:is_update"
6917
6928
  ])]),
6918
- default: U(({ data: e }) => [j(sa, {
6929
+ default: U(({ data: e }) => [j(ca, {
6919
6930
  ref_key: "tableRef",
6920
6931
  ref: i,
6921
6932
  dict: e.dict,
@@ -6934,7 +6945,7 @@ var ia = {
6934
6945
  }, 512);
6935
6946
  };
6936
6947
  }
6937
- }), ua = /* @__PURE__ */ M({
6948
+ }), da = /* @__PURE__ */ M({
6938
6949
  __name: "DataTable",
6939
6950
  props: {
6940
6951
  disable_tree: { type: Boolean },
@@ -6985,11 +6996,11 @@ var ia = {
6985
6996
  ...n,
6986
6997
  code: r.value,
6987
6998
  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);
6999
+ })), u = I(), d = I(), f = I(), p = I(), m = I(), h = I(), g = I(), _ = I(), v = I(), { account: y } = Y(), { meta: b, response: x, orders: ee, conditions: te, manager: S, api: ne, ticking: re, loading: ie, error: ae, finder: oe, collector: C } = er(l, c), se = I(0);
6989
7000
  function ce(e) {
6990
7001
  se.value = e;
6991
7002
  }
6992
- let { columns: le } = qa(T(() => n.columns || []), r), ue = T(() => y.value?.is_admin || n.unrestricted);
7003
+ let { columns: le } = Ja(T(() => n.columns || []), r), ue = T(() => y.value?.is_admin || n.unrestricted);
6993
7004
  async function de(e = !1) {
6994
7005
  try {
6995
7006
  if (e) {
@@ -7018,7 +7029,7 @@ var ia = {
7018
7029
  async function pe(e) {
7019
7030
  return m.value?.saveData();
7020
7031
  }
7021
- let { writeSheets: me } = Wa(), { copy: he } = qt(), { $message: ge } = J();
7032
+ let { writeSheets: me } = Ga(), { copy: he } = qt(), { $message: ge } = J();
7022
7033
  function _e(e) {
7023
7034
  S.find().then((t) => {
7024
7035
  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 +7114,7 @@ var ia = {
7103
7114
  let o = e.id;
7104
7115
  n.single ? (C.value.clear(), C.value.add(o)) : C.value.has(o) ? C.value.delete(o) : C.value.add(o);
7105
7116
  }
7106
- let { createSortable: Ne } = Wr(u, S.sorting);
7117
+ let { createSortable: Ne } = Gr(u, S.sorting);
7107
7118
  return H(() => x.value.results, (e, t) => {
7108
7119
  let n = !!b.value.control.allow_edit_on_sort && un(ee.value, { sort: -1 });
7109
7120
  Ne(x.value.results, n);
@@ -7116,13 +7127,13 @@ var ia = {
7116
7127
  }), (t, n) => {
7117
7128
  let l = z("el-space"), y = z("el-table-column"), te = z("el-text"), ne = z("el-table");
7118
7129
  return F(), O(w, null, [
7119
- j(Br, {
7130
+ j(Vr, {
7120
7131
  ref: "wrapperRef",
7121
7132
  loading: V(ie),
7122
7133
  ticking: V(re)
7123
7134
  }, {
7124
7135
  header: U(() => [j(l, null, {
7125
- default: U(() => [e.codes ? (F(), E(bi, {
7136
+ default: U(() => [e.codes ? (F(), E(xi, {
7126
7137
  key: 0,
7127
7138
  entity: e.entity,
7128
7139
  code: r.value,
@@ -7148,7 +7159,7 @@ var ia = {
7148
7159
  default: U(() => [R(t.$slots, "tool", {
7149
7160
  entity: i.value,
7150
7161
  code: r.value
7151
- }), j(Gr, {
7162
+ }), j(Kr, {
7152
7163
  disable_tree: e.disable_tree,
7153
7164
  unrestricted: ue.value,
7154
7165
  collector: V(C),
@@ -7168,7 +7179,7 @@ var ia = {
7168
7179
  ])]),
7169
7180
  _: 3
7170
7181
  })]),
7171
- footer: U(({ width: e }) => [j(Zr, {
7182
+ footer: U(({ width: e }) => [j(Qr, {
7172
7183
  size: c.value.size,
7173
7184
  "onUpdate:size": n[1] ||= (e) => c.value.size = e,
7174
7185
  page: c.value.page,
@@ -7194,7 +7205,7 @@ var ia = {
7194
7205
  height: e.table_height || "auto",
7195
7206
  size: e.table_size || "small",
7196
7207
  data: V(x).results,
7197
- "tooltip-options": V(Kr),
7208
+ "tooltip-options": V(qr),
7198
7209
  onCellClick: Me,
7199
7210
  onCellDblclick: Ae,
7200
7211
  onCellContextmenu: ke,
@@ -7213,7 +7224,7 @@ var ia = {
7213
7224
  _: 1
7214
7225
  })]),
7215
7226
  default: U(() => [
7216
- j(qr, {
7227
+ j(Jr, {
7217
7228
  unrestricted: ue.value,
7218
7229
  collector: V(C),
7219
7230
  size: V(x).results.length,
@@ -7234,7 +7245,7 @@ var ia = {
7234
7245
  "header-align": "left",
7235
7246
  "min-width": 120
7236
7247
  }, {
7237
- header: U(() => [j(Yr, {
7248
+ header: U(() => [j(Xr, {
7238
7249
  field: t,
7239
7250
  finder: V(oe),
7240
7251
  orders: V(ee),
@@ -7250,7 +7261,7 @@ var ia = {
7250
7261
  "unrestricted",
7251
7262
  "includes"
7252
7263
  ])]),
7253
- default: U(({ row: e }) => [j(Si, {
7264
+ default: U(({ row: e }) => [j(Ci, {
7254
7265
  row: e,
7255
7266
  field: t,
7256
7267
  meta: V(b),
@@ -7276,7 +7287,7 @@ var ia = {
7276
7287
  fixed: e.fixed || "right",
7277
7288
  width: e.width || "auto"
7278
7289
  }, {
7279
- default: U(({ row: t }) => [j(Hr, {
7290
+ default: U(({ row: t }) => [j(Ur, {
7280
7291
  data: t,
7281
7292
  column: e,
7282
7293
  collector: V(C)
@@ -7300,7 +7311,7 @@ var ia = {
7300
7311
  "show-overflow-tooltip": !1
7301
7312
  }, {
7302
7313
  header: U(() => [j(G, { icon: "screwdriver-wrench" })]),
7303
- default: U(({ row: t }) => [j(Ur, {
7314
+ default: U(({ row: t }) => [j(Wr, {
7304
7315
  buttons: e.buttons,
7305
7316
  data: t,
7306
7317
  collector: V(C),
@@ -7331,15 +7342,15 @@ var ia = {
7331
7342
  width: "500",
7332
7343
  onClosed: n[3] ||= (e) => V(S).init()
7333
7344
  }, {
7334
- default: U(({ data: e }) => [j(Ki, { field_id: e.id }, null, 8, ["field_id"])]),
7345
+ default: U(({ data: e }) => [j(qi, { field_id: e.id }, null, 8, ["field_id"])]),
7335
7346
  _: 1
7336
7347
  }, 512),
7337
- j(nr, {
7348
+ j(rr, {
7338
7349
  ref_key: "metaRef",
7339
7350
  ref: h,
7340
7351
  onHide: V(S).init
7341
7352
  }, {
7342
- default: U(() => [j(Wi, {
7353
+ default: U(() => [j(Gi, {
7343
7354
  entity: i.value,
7344
7355
  "onUpdate:entity": n[4] ||= (e) => i.value = e,
7345
7356
  code: r.value,
@@ -7347,17 +7358,17 @@ var ia = {
7347
7358
  }, null, 8, ["entity", "code"])]),
7348
7359
  _: 1
7349
7360
  }, 8, ["onHide"]),
7350
- j(la, {
7361
+ j(ua, {
7351
7362
  ref_key: "uploadRef",
7352
7363
  ref: f,
7353
7364
  onConfirm: o
7354
7365
  }, null, 512),
7355
- j(nr, {
7366
+ j(rr, {
7356
7367
  ref_key: "searchRef",
7357
7368
  ref: g,
7358
7369
  width: "250px"
7359
7370
  }, {
7360
- default: U(({ data: t }) => [j(ti, {
7371
+ default: U(({ data: t }) => [j(ni, {
7361
7372
  field: t,
7362
7373
  finder: V(oe),
7363
7374
  includes: e.includes,
@@ -7377,8 +7388,8 @@ var ia = {
7377
7388
  cancel: fe,
7378
7389
  width: "550"
7379
7390
  }, {
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, {
7391
+ header: U(({ data: e }) => [j(ri, { data: e }, null, 8, ["data"])]),
7392
+ default: U(({ data: { items: e, is_insert: t, count: n } }) => [j(ai, {
7382
7393
  ref_key: "saveFormRef",
7383
7394
  ref: m,
7384
7395
  items: e,
@@ -7395,7 +7406,7 @@ var ia = {
7395
7406
  ])]),
7396
7407
  _: 1
7397
7408
  }, 512),
7398
- j(yi, {
7409
+ j(bi, {
7399
7410
  ref_key: "cellRef",
7400
7411
  ref: _,
7401
7412
  manager: V(S)
@@ -7405,7 +7416,7 @@ var ia = {
7405
7416
  ref_key: "treeDialogRef",
7406
7417
  ref: v
7407
7418
  }, {
7408
- default: U(({ data: e }) => [j(ha, {
7419
+ default: U(({ data: e }) => [j(ga, {
7409
7420
  entity: i.value,
7410
7421
  code: r.value,
7411
7422
  disable_table: "",
@@ -7416,7 +7427,7 @@ var ia = {
7416
7427
  ], 64);
7417
7428
  };
7418
7429
  }
7419
- }), da = /* @__PURE__ */ M({
7430
+ }), fa = /* @__PURE__ */ M({
7420
7431
  __name: "DTreeTablePlugin",
7421
7432
  props: {
7422
7433
  data: {},
@@ -7436,7 +7447,7 @@ var ia = {
7436
7447
  onClick: n[0] ||= (t) => e.invoke(e.data, t)
7437
7448
  }));
7438
7449
  }
7439
- }), fa = /* @__PURE__ */ M({
7450
+ }), pa = /* @__PURE__ */ M({
7440
7451
  __name: "DTreeTable",
7441
7452
  props: {
7442
7453
  entity: {},
@@ -7453,14 +7464,14 @@ var ia = {
7453
7464
  label: "节点",
7454
7465
  fixed: "left",
7455
7466
  width: 50,
7456
- component: da,
7467
+ component: fa,
7457
7468
  callback(e) {
7458
7469
  n.value = e.id || 0;
7459
7470
  }
7460
7471
  }];
7461
7472
  return (t, a) => {
7462
7473
  let o = z("el-text"), s = z("el-space");
7463
- return F(), E(ua, {
7474
+ return F(), E(da, {
7464
7475
  ref: "tableRef",
7465
7476
  entity: e.entity,
7466
7477
  code: e.code,
@@ -7497,10 +7508,10 @@ var ia = {
7497
7508
  ]);
7498
7509
  };
7499
7510
  }
7500
- }), pa = { style: { padding: "10px" } }, ma = {
7511
+ }), ma = { style: { padding: "10px" } }, ha = {
7501
7512
  class: "justified full",
7502
7513
  style: { "padding-right": "10px" }
7503
- }, ha = /* @__PURE__ */ M({
7514
+ }, ga = /* @__PURE__ */ M({
7504
7515
  __name: "DataTree",
7505
7516
  props: {
7506
7517
  disable_table: { type: Boolean },
@@ -7532,11 +7543,11 @@ var ia = {
7532
7543
  let r = e, i = n, a = I(r.code || "default"), o = I(r.entity), s = I({
7533
7544
  type: "tree",
7534
7545
  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(() => ({
7546
+ }), { meta: c, response: l, manager: u, api: d, loading: f, ticking: p, error: m, finder: h, collector: g, model: _ } = er(T(() => ({
7536
7547
  ...r,
7537
7548
  code: a.value,
7538
7549
  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(() => {
7550
+ })), s), { columns: v } = Ja(T(() => r.columns || []), a), y = I(), b = I(), x = I(), ee = I(), te = T(() => c.value.fields.find((e) => e.prop === r.label)), { $confirm: S } = J(), ne = I(""), re = T(() => ie.value.length ? "square-caret-down" : "square-caret-right"), ie = T(() => {
7540
7551
  let e = [];
7541
7552
  return Object.values(_.value.mapping).forEach((t) => {
7542
7553
  let { id: n, children: r } = t;
@@ -7678,13 +7689,13 @@ var ia = {
7678
7689
  }), (t, n) => {
7679
7690
  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
7691
  return F(), O(w, null, [
7681
- j(nr, {
7692
+ j(rr, {
7682
7693
  ref_key: "nodePopoverRef",
7683
7694
  ref: b,
7684
7695
  placement: "right",
7685
7696
  width: "250px"
7686
7697
  }, {
7687
- default: U(({ data: t }) => [j(zr, {
7698
+ default: U(({ data: t }) => [j(Br, {
7688
7699
  control: V(c).control,
7689
7700
  data: t,
7690
7701
  field: te.value,
@@ -7706,7 +7717,7 @@ var ia = {
7706
7717
  ])]),
7707
7718
  _: 1
7708
7719
  }, 512),
7709
- j(Br, {
7720
+ j(Vr, {
7710
7721
  ref: "wrapperRef",
7711
7722
  loading: V(f),
7712
7723
  ticking: V(p)
@@ -7728,7 +7739,7 @@ var ia = {
7728
7739
  })])
7729
7740
  ]),
7730
7741
  _: 3
7731
- }), j(Vr, {
7742
+ }), j(Hr, {
7732
7743
  unrestricted: e.unrestricted,
7733
7744
  collector: V(g),
7734
7745
  control: V(c).control,
@@ -7745,7 +7756,7 @@ var ia = {
7745
7756
  "mapping",
7746
7757
  "disable_table"
7747
7758
  ])]),
7748
- default: U(() => [k("div", pa, [j(s, {
7759
+ default: U(() => [k("div", ma, [j(s, {
7749
7760
  modelValue: ne.value,
7750
7761
  "onUpdate:modelValue": n[1] ||= (e) => ne.value = e,
7751
7762
  placeholder: "搜索...",
@@ -7777,8 +7788,8 @@ var ia = {
7777
7788
  onNodeDrop: be,
7778
7789
  "filter-node-method": se
7779
7790
  }, {
7780
- default: U(({ data: n, node: r }) => [k("div", ma, [j(i, null, {
7781
- default: U(() => [j(tr, {
7791
+ default: U(({ data: n, node: r }) => [k("div", ha, [j(i, null, {
7792
+ default: U(() => [j(nr, {
7782
7793
  collector: V(g),
7783
7794
  data: n,
7784
7795
  node: r,
@@ -7815,7 +7826,7 @@ var ia = {
7815
7826
  node: r,
7816
7827
  data: n
7817
7828
  }, void 0, void 0, 1)]),
7818
- (F(!0), O(w, null, L(V(v), (e) => (F(), E(Hr, {
7829
+ (F(!0), O(w, null, L(V(v), (e) => (F(), E(Ur, {
7819
7830
  data: n,
7820
7831
  column: e,
7821
7832
  collector: V(g)
@@ -7824,7 +7835,7 @@ var ia = {
7824
7835
  "column",
7825
7836
  "collector"
7826
7837
  ]))), 256)),
7827
- j(Ur, {
7838
+ j(Wr, {
7828
7839
  buttons: e.buttons,
7829
7840
  data: n,
7830
7841
  collector: V(g),
@@ -7868,7 +7879,7 @@ var ia = {
7868
7879
  ref: ee,
7869
7880
  width: "1000"
7870
7881
  }, {
7871
- default: U(({ data: e }) => [j(fa, {
7882
+ default: U(({ data: e }) => [j(pa, {
7872
7883
  mapping: V(_).mapping,
7873
7884
  entity: o.value,
7874
7885
  code: a.value,
@@ -7884,10 +7895,10 @@ var ia = {
7884
7895
  ], 64);
7885
7896
  };
7886
7897
  }
7887
- }), ga = { class: "justified full" }, _a = {
7898
+ }), _a = { class: "justified full" }, va = {
7888
7899
  key: 0,
7889
7900
  style: { "padding-right": "5px" }
7890
- }, va = /* @__PURE__ */ M({
7901
+ }, ya = /* @__PURE__ */ M({
7891
7902
  __name: "MenuTreeNode",
7892
7903
  props: {
7893
7904
  item: {},
@@ -7899,7 +7910,7 @@ var ia = {
7899
7910
  let { is_admin: e, roles: n, is_free: r } = t.item;
7900
7911
  return e ? "lock" : r ? "unlock" : n?.length ? "user-lock" : "user";
7901
7912
  }), a = T(() => t.item.isLeaf && n.value ? "#000000" : "#c5c8d5");
7902
- return (t, o) => (F(), O("div", ga, [k("div", null, [j(V(G), {
7913
+ return (t, o) => (F(), O("div", _a, [k("div", null, [j(V(G), {
7903
7914
  style: jt({
7904
7915
  color: a.value,
7905
7916
  marginRight: "7px"
@@ -7918,13 +7929,13 @@ var ia = {
7918
7929
  }, {
7919
7930
  default: U(() => [A(B(e.item.name), 1)]),
7920
7931
  _: 1
7921
- }, 8, ["size", "tag"])]), e.item.isLeaf ? (F(), O("div", _a, [j(V(G), {
7932
+ }, 8, ["size", "tag"])]), e.item.isLeaf ? (F(), O("div", va, [j(V(G), {
7922
7933
  icon: i.value,
7923
7934
  "icon-size": "xs",
7924
7935
  type: "info"
7925
7936
  }, null, 8, ["icon"])])) : D("", !0)]));
7926
7937
  }
7927
- }), ya = /* @__PURE__ */ M({
7938
+ }), ba = /* @__PURE__ */ M({
7928
7939
  __name: "MMenu",
7929
7940
  props: {
7930
7941
  current: {},
@@ -7959,7 +7970,7 @@ var ia = {
7959
7970
  default: U(() => [...n[0] ||= [A("无菜单", -1)]]),
7960
7971
  _: 1
7961
7972
  })]),
7962
- default: U(({ data: t, node: n }) => [j(va, {
7973
+ default: U(({ data: t, node: n }) => [j(ya, {
7963
7974
  item: t,
7964
7975
  path: e.current,
7965
7976
  node: n
@@ -7972,7 +7983,7 @@ var ia = {
7972
7983
  }, 8, ["data"]);
7973
7984
  };
7974
7985
  }
7975
- }), ba = /* @__PURE__ */ M({
7986
+ }), xa = /* @__PURE__ */ M({
7976
7987
  __name: "RoleMenuView",
7977
7988
  props: {
7978
7989
  roles_set: {},
@@ -7986,15 +7997,15 @@ var ia = {
7986
7997
  roles: e.map((e) => e.id)
7987
7998
  };
7988
7999
  r("valar/view_menu", a).then((e) => {
7989
- let t = zn(e);
8000
+ let t = Bn(e);
7990
8001
  n.value = t.rootNode.children || [];
7991
8002
  });
7992
8003
  }, {
7993
8004
  deep: !0,
7994
8005
  immediate: !0
7995
- }), (e, t) => (F(), E(ya, { options: n.value }, null, 8, ["options"]));
8006
+ }), (e, t) => (F(), E(ba, { options: n.value }, null, 8, ["options"]));
7996
8007
  }
7997
- }), xa = { style: { "text-align": "center" } }, Sa = /* @__PURE__ */ M({
8008
+ }), Sa = { style: { "text-align": "center" } }, Ca = /* @__PURE__ */ M({
7998
8009
  __name: "AccountSetting",
7999
8010
  props: { account: {} },
8000
8011
  emits: ["update:account"],
@@ -8015,13 +8026,13 @@ var ia = {
8015
8026
  return a.value === "user__name" && (t.display = e.username), t;
8016
8027
  });
8017
8028
  });
8018
- }), (e, t) => (F(), O("div", xa, [j(V(Er), {
8029
+ }), (e, t) => (F(), O("div", Sa, [j(V(Dr), {
8019
8030
  modelValue: V(n),
8020
8031
  "onUpdate:modelValue": t[0] ||= (e) => N(n) ? n.value = e : null,
8021
8032
  options: i.value
8022
8033
  }, null, 8, ["modelValue", "options"])]));
8023
8034
  }
8024
- }), Ca = /* @__PURE__ */ M({
8035
+ }), wa = /* @__PURE__ */ M({
8025
8036
  __name: "RoleManage",
8026
8037
  setup(e) {
8027
8038
  let t = I(), n = I(), r = I(), i = [{
@@ -8040,7 +8051,7 @@ var ia = {
8040
8051
  return (e, s) => {
8041
8052
  let c = z("el-tag"), l = z("el-checkbox"), u = z("el-space");
8042
8053
  return F(), O(w, null, [
8043
- j(ha, {
8054
+ j(ga, {
8044
8055
  ref_key: "treeRef",
8045
8056
  ref: t,
8046
8057
  code: "auth",
@@ -8074,7 +8085,7 @@ var ia = {
8074
8085
  width: "600",
8075
8086
  confirm: o
8076
8087
  }, {
8077
- default: U(({ data: e }) => [j(Sa, {
8088
+ default: U(({ data: e }) => [j(Ca, {
8078
8089
  account: e.account,
8079
8090
  "onUpdate:account": (t) => e.account = t
8080
8091
  }, null, 8, ["account", "onUpdate:account"])]),
@@ -8115,7 +8126,7 @@ var ia = {
8115
8126
  }, 8, ["modelValue", "onUpdate:modelValue"]))]),
8116
8127
  _: 2
8117
8128
  }, 1024)]),
8118
- default: U(({ data: e }) => [j(ba, {
8129
+ default: U(({ data: e }) => [j(xa, {
8119
8130
  roles_set: a.value,
8120
8131
  is_free: e.is_free
8121
8132
  }, null, 8, ["roles_set", "is_free"])]),
@@ -8124,7 +8135,7 @@ var ia = {
8124
8135
  ], 64);
8125
8136
  };
8126
8137
  }
8127
- }), wa = /* @__PURE__ */ M({
8138
+ }), Ta = /* @__PURE__ */ M({
8128
8139
  __name: "MenuAuthPlugin",
8129
8140
  props: {
8130
8141
  data: {},
@@ -8203,7 +8214,7 @@ var ia = {
8203
8214
  })) : D("", !0);
8204
8215
  };
8205
8216
  }
8206
- }), Ta = { style: { "margin-bottom": "8px" } }, Ea = /* @__PURE__ */ M({
8217
+ }), Ea = { style: { "margin-bottom": "8px" } }, Da = /* @__PURE__ */ M({
8207
8218
  __name: "RouteSetting",
8208
8219
  props: {
8209
8220
  routes: {},
@@ -8221,7 +8232,7 @@ var ia = {
8221
8232
  }
8222
8233
  return (t, n) => {
8223
8234
  let r = z("el-select");
8224
- return F(), O(w, null, [k("div", Ta, [j(V(K), {
8235
+ return F(), O(w, null, [k("div", Ea, [j(V(K), {
8225
8236
  icon: "save",
8226
8237
  disabled: i.value === e.menu.path,
8227
8238
  onClick: a
@@ -8244,10 +8255,10 @@ var ia = {
8244
8255
  }, 8, ["modelValue"])], 64);
8245
8256
  };
8246
8257
  }
8247
- }), Da = {
8258
+ }), Oa = {
8248
8259
  style: { "margin-bottom": "8px" },
8249
8260
  class: "justified"
8250
- }, Oa = /* @__PURE__ */ M({
8261
+ }, ka = /* @__PURE__ */ M({
8251
8262
  __name: "AuthSetting",
8252
8263
  props: { menu: {} },
8253
8264
  emits: ["save"],
@@ -8270,7 +8281,7 @@ var ia = {
8270
8281
  }
8271
8282
  return (t, n) => {
8272
8283
  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, {
8284
+ return F(), O(w, null, [k("div", Oa, [j(a, null, {
8274
8285
  default: U(() => [j(i, {
8275
8286
  size: "small",
8276
8287
  modelValue: e.menu.is_admin,
@@ -8329,12 +8340,12 @@ var ia = {
8329
8340
  ])], 64);
8330
8341
  };
8331
8342
  }
8332
- }), ka = /* @__PURE__ */ M({
8343
+ }), Aa = /* @__PURE__ */ M({
8333
8344
  __name: "MenuManage",
8334
8345
  setup(e) {
8335
8346
  let t = I(), n = I(), r = I(), i = I();
8336
8347
  I();
8337
- let { routes: a } = Pa(), { $message: o, $confirm: s } = J(), c = [
8348
+ let { routes: a } = Fa(), { $message: o, $confirm: s } = J(), c = [
8338
8349
  {
8339
8350
  label: "路由设置",
8340
8351
  popover: r,
@@ -8367,7 +8378,7 @@ var ia = {
8367
8378
  icon: "lock",
8368
8379
  leaf_only: !0
8369
8380
  }
8370
- ], l = [{ component: wa }], u = T(() => {
8381
+ ], l = [{ component: Ta }], u = T(() => {
8371
8382
  let e = t.value?.model.mapping || {}, n = Object.values(e).map((e) => e.path);
8372
8383
  return a.value.filter((e) => !n.includes(e.path)).map(({ path: e, name: t }) => ({
8373
8384
  label: t,
@@ -8384,7 +8395,7 @@ var ia = {
8384
8395
  return (e, o) => {
8385
8396
  let s = z("el-tag"), p = z("el-select");
8386
8397
  return F(), O(w, null, [
8387
- j(ha, {
8398
+ j(ga, {
8388
8399
  ref_key: "treeRef",
8389
8400
  ref: t,
8390
8401
  entity: "valar.Menu",
@@ -8439,22 +8450,22 @@ var ia = {
8439
8450
  }, 8, ["modelValue", "onUpdate:modelValue"])]),
8440
8451
  _: 1
8441
8452
  }, 512),
8442
- j(V(nr), {
8453
+ j(V(rr), {
8443
8454
  ref_key: "routePopoverRef",
8444
8455
  ref: r
8445
8456
  }, {
8446
- default: U(({ data: e }) => [j(Ea, {
8457
+ default: U(({ data: e }) => [j(Da, {
8447
8458
  routes: u.value,
8448
8459
  menu: e,
8449
8460
  onSave: f
8450
8461
  }, null, 8, ["routes", "menu"])]),
8451
8462
  _: 1
8452
8463
  }, 512),
8453
- j(V(nr), {
8464
+ j(V(rr), {
8454
8465
  ref_key: "rolePopoverRef",
8455
8466
  ref: i
8456
8467
  }, {
8457
- default: U(({ data: e }) => [j(Oa, {
8468
+ default: U(({ data: e }) => [j(ka, {
8458
8469
  menu: e,
8459
8470
  onSave: f
8460
8471
  }, null, 8, ["menu"])]),
@@ -8463,7 +8474,7 @@ var ia = {
8463
8474
  ], 64);
8464
8475
  };
8465
8476
  }
8466
- }), Aa = /* @__PURE__ */ M({
8477
+ }), ja = /* @__PURE__ */ M({
8467
8478
  __name: "UserManage",
8468
8479
  setup(e) {
8469
8480
  let { user: t } = Y(), n = I(), r = I(), i = T(() => t.value?.user_entity), a = I("auth"), { post: o } = X();
@@ -8475,7 +8486,7 @@ var ia = {
8475
8486
  function c() {
8476
8487
  r.value?.getMeta() && n.value?.open(i.value, a.value);
8477
8488
  }
8478
- return (e, t) => (F(), O(w, null, [i.value ? (F(), E(V(ua), {
8489
+ return (e, t) => (F(), O(w, null, [i.value ? (F(), E(V(da), {
8479
8490
  key: 0,
8480
8491
  ref_key: "tableRef",
8481
8492
  ref: r,
@@ -8493,13 +8504,13 @@ var ia = {
8493
8504
  _: 1
8494
8505
  })]),
8495
8506
  _: 1
8496
- }, 8, ["entity", "code"])) : D("", !0), j(la, {
8507
+ }, 8, ["entity", "code"])) : D("", !0), j(ua, {
8497
8508
  ref_key: "uploadRef",
8498
8509
  ref: n,
8499
8510
  onConfirm: s
8500
8511
  }, null, 512)], 64));
8501
8512
  }
8502
- }), ja = /* @__PURE__ */ M({
8513
+ }), Ma = /* @__PURE__ */ M({
8503
8514
  __name: "MSystem",
8504
8515
  setup(e) {
8505
8516
  let t = I(), { account: n, user: r, system: i } = Y();
@@ -8521,7 +8532,7 @@ var ia = {
8521
8532
  default: U(() => [...a[1] ||= [A("用户管理", -1)]]),
8522
8533
  _: 1
8523
8534
  })]),
8524
- default: U(() => [V(i) === "user" ? (F(), E(Aa, { key: 0 })) : D("", !0)]),
8535
+ default: U(() => [V(i) === "user" ? (F(), E(ja, { key: 0 })) : D("", !0)]),
8525
8536
  _: 1
8526
8537
  })) : D("", !0),
8527
8538
  j(o, {
@@ -8543,7 +8554,7 @@ var ia = {
8543
8554
  default: U(() => [...a[3] ||= [A("角色管理", -1)]]),
8544
8555
  _: 1
8545
8556
  })]),
8546
- default: U(() => [V(i) === "role" ? (F(), E(Ca, { key: 0 })) : D("", !0)]),
8557
+ default: U(() => [V(i) === "role" ? (F(), E(wa, { key: 0 })) : D("", !0)]),
8547
8558
  _: 1
8548
8559
  }),
8549
8560
  j(o, {
@@ -8554,7 +8565,7 @@ var ia = {
8554
8565
  default: U(() => [...a[4] ||= [A("菜单管理", -1)]]),
8555
8566
  _: 1
8556
8567
  })]),
8557
- default: U(() => [V(i) === "menu" ? (F(), E(ka, { key: 0 })) : D("", !0)]),
8568
+ default: U(() => [V(i) === "menu" ? (F(), E(Aa, { key: 0 })) : D("", !0)]),
8558
8569
  _: 1
8559
8570
  }),
8560
8571
  j(o, {
@@ -8565,14 +8576,14 @@ var ia = {
8565
8576
  default: U(() => [...a[5] ||= [A("数据管理", -1)]]),
8566
8577
  _: 1
8567
8578
  })]),
8568
- default: U(() => [V(i) === "meta" ? (F(), E(Ei, {
8579
+ default: U(() => [V(i) === "meta" ? (F(), E(Di, {
8569
8580
  key: 0,
8570
8581
  entity: "valar.Valar",
8571
8582
  code: "default",
8572
8583
  locked: "",
8573
8584
  onList: t.value?.openFieldList,
8574
8585
  onForm: t.value?.openViewForm
8575
- }, null, 8, ["onList", "onForm"])) : D("", !0), j(Wi, {
8586
+ }, null, 8, ["onList", "onForm"])) : D("", !0), j(Gi, {
8576
8587
  ref_key: "metaRef",
8577
8588
  ref: t,
8578
8589
  lock: "",
@@ -8586,7 +8597,7 @@ var ia = {
8586
8597
  }, 8, ["modelValue"])) : D("", !0);
8587
8598
  };
8588
8599
  }
8589
- }), Ma = /* @__PURE__ */ M({
8600
+ }), Na = /* @__PURE__ */ M({
8590
8601
  __name: "NotFound",
8591
8602
  setup(e) {
8592
8603
  let t = rn(), { counter: n, pause: r, resume: i, isActive: a } = Yt(1e3, {
@@ -8637,7 +8648,7 @@ var ia = {
8637
8648
  });
8638
8649
  };
8639
8650
  }
8640
- }), Na = /* @__PURE__ */ M({
8651
+ }), Pa = /* @__PURE__ */ M({
8641
8652
  __name: "NoPermission",
8642
8653
  setup(e) {
8643
8654
  let t = rn(), { counter: n, pause: r, resume: i, isActive: a } = Yt(1e3, {
@@ -8688,21 +8699,21 @@ var ia = {
8688
8699
  });
8689
8700
  };
8690
8701
  }
8691
- }), Pa = Kt(() => {
8702
+ }), Fa = Kt(() => {
8692
8703
  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
8704
  path: e,
8694
8705
  name: t
8695
8706
  }))), o = T(() => t.value?.sign_in_only || !1), s = T(() => t.value?.username_label || "");
8696
8707
  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);
8708
+ t.value = r || {}, e.add(...za, ...r?.icons || []);
8709
+ let a = [...r?.routes || [], ...La];
8710
+ a.find((e) => e.path === "/") || a.unshift(Ia);
8700
8711
  let o = en({
8701
8712
  history: tn(),
8702
8713
  routes: a
8703
8714
  });
8704
8715
  o.beforeEach((e) => {
8705
- document.title = `${String(e.name)} - ${i.value}`, La.includes(e.path);
8716
+ document.title = `${String(e.name)} - ${i.value}`, Ra.includes(e.path);
8706
8717
  }), n.use(o);
8707
8718
  }
8708
8719
  return {
@@ -8715,11 +8726,11 @@ var ia = {
8715
8726
  username_label: s,
8716
8727
  install: c
8717
8728
  };
8718
- }), Fa = {
8729
+ }), Ia = {
8719
8730
  path: "/",
8720
8731
  name: "Welcome",
8721
8732
  component: Mn
8722
- }, Ia = [
8733
+ }, La = [
8723
8734
  {
8724
8735
  path: "/:pathMatch(.*)*",
8725
8736
  redirect: "/404"
@@ -8727,23 +8738,23 @@ var ia = {
8727
8738
  {
8728
8739
  path: "/morghulis_system",
8729
8740
  name: "系统管理",
8730
- component: ja
8741
+ component: Ma
8731
8742
  },
8732
8743
  {
8733
8744
  path: "/404",
8734
8745
  name: "页面没找到",
8735
- component: Ma
8746
+ component: Na
8736
8747
  },
8737
8748
  {
8738
8749
  path: "/403",
8739
8750
  name: "没有权限",
8740
- component: Na
8751
+ component: Pa
8741
8752
  }
8742
- ], La = [
8753
+ ], Ra = [
8743
8754
  "/",
8744
8755
  "/404",
8745
8756
  "/403"
8746
- ], Ra = [
8757
+ ], za = [
8747
8758
  pt,
8748
8759
  Re,
8749
8760
  We,
@@ -8845,11 +8856,11 @@ var ia = {
8845
8856
  mt,
8846
8857
  r,
8847
8858
  _t
8848
- ], za = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
8859
+ ], Ba = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
8849
8860
  //#endregion
8850
8861
  //#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();
8862
+ function Va() {
8863
+ let { post: e } = X(), { $confirm: t, $message: n } = J(), { sign_in: r, sign_out: i, token: a, register: o } = Y(), { options: s } = Fa();
8853
8864
  async function c(t) {
8854
8865
  try {
8855
8866
  let n = await e("/valar/sign", t);
@@ -8879,7 +8890,7 @@ function Ba() {
8879
8890
  flush: "sync"
8880
8891
  });
8881
8892
  function u(e) {
8882
- let t = Ha(e, s.value) || Va(e);
8893
+ let t = Ua(e, s.value) || Ha(e);
8883
8894
  return t && n.error(t), !t;
8884
8895
  }
8885
8896
  return {
@@ -8888,17 +8899,17 @@ function Ba() {
8888
8899
  validate: u
8889
8900
  };
8890
8901
  }
8891
- function Va(e) {
8902
+ function Ha(e) {
8892
8903
  return e.password.length < 8 ? "密码长度不小于8位" : e.is_sign_in || e.password === e.$password ? null : "两次输入的密码不一致";
8893
8904
  }
8894
- function Ha(e, t) {
8905
+ function Ua(e, t) {
8895
8906
  if (e.username === "admin") return null;
8896
8907
  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);
8908
+ return ((n ? r || /.+/ : Ba).test(e.username) ? null : `${n || "邮箱"}格式错误`) || (n && !e.is_sign_in ? Ba.test(e.email) ? null : "邮箱格式错误" : null);
8898
8909
  }
8899
8910
  //#endregion
8900
8911
  //#region morghulis/library/use-data/index.ts
8901
- function Ua(e) {
8912
+ function Wa(e) {
8902
8913
  let t = {
8903
8914
  line: e?.line ?? "\r\n",
8904
8915
  cell: e?.cell ?? " "
@@ -8919,13 +8930,13 @@ function Ua(e) {
8919
8930
  }
8920
8931
  //#endregion
8921
8932
  //#region morghulis/library/use-excel/index.ts
8922
- function Wa() {
8933
+ function Ga() {
8923
8934
  async function e(e, t = !0) {
8924
8935
  let n = await (await fetch(e)).arrayBuffer();
8925
- return e.endsWith(".csv") ? Ga(new TextDecoder("utf-8").decode(n), t) : Ga(n, t);
8936
+ return e.endsWith(".csv") ? Ka(new TextDecoder("utf-8").decode(n), t) : Ka(n, t);
8926
8937
  }
8927
8938
  async function t(e, t = !0) {
8928
- return Ga(await e.arrayBuffer(), t);
8939
+ return Ka(await e.arrayBuffer(), t);
8929
8940
  }
8930
8941
  async function n(e, ...t) {
8931
8942
  let { utils: n, writeFile: r } = await import("xlsx"), i = n.book_new();
@@ -8947,7 +8958,7 @@ function Wa() {
8947
8958
  zip: r
8948
8959
  };
8949
8960
  }
8950
- async function Ga(e, t) {
8961
+ async function Ka(e, t) {
8951
8962
  let { utils: n, read: r, SSF: i } = await import("xlsx"), a = r(e, {
8952
8963
  type: "binary",
8953
8964
  cellDates: !0
@@ -8975,7 +8986,7 @@ async function Ga(e, t) {
8975
8986
  }
8976
8987
  //#endregion
8977
8988
  //#region morghulis/library/use-menu/index.ts
8978
- var Ka = Kt(() => {
8989
+ var qa = Kt(() => {
8979
8990
  let e = I({
8980
8991
  mapping: {},
8981
8992
  options: [],
@@ -8983,7 +8994,7 @@ var Ka = Kt(() => {
8983
8994
  }), { post: t, loading: n } = X();
8984
8995
  function r() {
8985
8996
  t("valar/load_menu").then((t) => {
8986
- e.value = zn(t);
8997
+ e.value = Bn(t);
8987
8998
  });
8988
8999
  }
8989
9000
  return {
@@ -8994,10 +9005,10 @@ var Ka = Kt(() => {
8994
9005
  });
8995
9006
  //#endregion
8996
9007
  //#region morghulis/library/use-plugin/index.ts
8997
- function qa(e, t) {
9008
+ function Ja(e, t) {
8998
9009
  return { columns: T(() => (e.value || []).filter((e) => !e.codes?.length || e.codes.includes(t.value))) };
8999
9010
  }
9000
- function Ja(e, t, n) {
9011
+ function Ya(e, t, n) {
9001
9012
  return { buttons: T(() => (e.value || []).filter((e) => !e.codes?.length || e.codes.includes(t.value)).filter((e) => {
9002
9013
  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
9014
  return !t && i && r;
@@ -9018,7 +9029,7 @@ function Ja(e, t, n) {
9018
9029
  }
9019
9030
  //#endregion
9020
9031
  //#region morghulis/library/use-size/index.ts
9021
- function Ya() {
9032
+ function Xa() {
9022
9033
  let { height: e } = $t();
9023
9034
  return { frame: T(() => {
9024
9035
  let t = {
@@ -9032,12 +9043,12 @@ function Ya() {
9032
9043
  }
9033
9044
  //#endregion
9034
9045
  //#region morghulis/components/feedback/MDialog.vue?vue&type=script&setup=true&lang.ts
9035
- var Xa = { class: "justified" }, Za = {
9046
+ var Za = { class: "justified" }, Qa = {
9036
9047
  class: "m-dialog-content",
9037
9048
  "element-loading-custom-class": "m-dialog-loading",
9038
9049
  "element-loading-background": "rgba(255,255,255,0.6)",
9039
9050
  "element-loading-text": "加载中..."
9040
- }, Qa = {
9051
+ }, $a = {
9041
9052
  key: 0,
9042
9053
  class: "right"
9043
9054
  }, $ = /* @__PURE__ */ M({
@@ -9124,7 +9135,7 @@ var Xa = { class: "justified" }, Za = {
9124
9135
  onClosed: t[1] ||= (e) => i("closed"),
9125
9136
  onKeydown: Wt(v, ["esc"])
9126
9137
  }, {
9127
- header: U(() => [k("div", Xa, [j(r, null, {
9138
+ header: U(() => [k("div", Za, [j(r, null, {
9128
9139
  default: U(() => [R(e.$slots, "header", { data: l.value }, () => [j(n, { tag: "b" }, {
9129
9140
  default: U(() => [A(B(u.value.title), 1)]),
9130
9141
  _: 1
@@ -9154,7 +9165,7 @@ var Xa = { class: "justified" }, Za = {
9154
9165
  ]),
9155
9166
  _: 3
9156
9167
  })])]),
9157
- footer: U(() => [m.value ? (F(), O("div", Qa, [j(a, {
9168
+ footer: U(() => [m.value ? (F(), O("div", $a, [j(a, {
9158
9169
  type: "success",
9159
9170
  plain: "",
9160
9171
  loading: c.value,
@@ -9171,7 +9182,7 @@ var Xa = { class: "justified" }, Za = {
9171
9182
  default: U(() => [j(G, { icon: "xmark-circle" }), t[3] ||= A(" 取消 ", -1)]),
9172
9183
  _: 1
9173
9184
  }, 8, ["disabled"])])) : D("", !0)]),
9174
- default: U(() => [Ut((F(), O("div", Za, [R(e.$slots, "default", { data: l.value })])), [[p, c.value]])]),
9185
+ default: U(() => [Ut((F(), O("div", Qa, [R(e.$slots, "default", { data: l.value })])), [[p, c.value]])]),
9175
9186
  _: 3
9176
9187
  }, 8, [
9177
9188
  "modelValue",
@@ -9181,7 +9192,7 @@ var Xa = { class: "justified" }, Za = {
9181
9192
  ]);
9182
9193
  };
9183
9194
  }
9184
- }), $a = /* @__PURE__ */ M({
9195
+ }), eo = /* @__PURE__ */ M({
9185
9196
  __name: "MCharts",
9186
9197
  props: {
9187
9198
  options: { default: {
@@ -9231,30 +9242,30 @@ var Xa = { class: "justified" }, Za = {
9231
9242
  })
9232
9243
  }, null, 4));
9233
9244
  }
9234
- }), eo = /* @__PURE__ */ Sn({
9235
- DataTable: () => ua,
9236
- DataTree: () => ha,
9237
- DataWrapper: () => Br,
9245
+ }), to = /* @__PURE__ */ Sn({
9246
+ DataTable: () => da,
9247
+ DataTree: () => ga,
9248
+ DataWrapper: () => Vr,
9238
9249
  MButton: () => K,
9239
- MCell: () => Lr,
9240
- MCharts: () => $a,
9250
+ MCell: () => Rr,
9251
+ MCharts: () => eo,
9241
9252
  MDialog: () => $,
9242
- MForm: () => ri,
9253
+ MForm: () => ii,
9243
9254
  MIcon: () => G,
9244
- MObjectEditor: () => Nr,
9255
+ MObjectEditor: () => Pr,
9245
9256
  MOptionContent: () => Dn,
9246
9257
  MOptionItem: () => On,
9247
9258
  MOptionList: () => kn,
9248
- MPopover: () => nr,
9249
- MRichEditor: () => Fr,
9259
+ MPopover: () => rr,
9260
+ MRichEditor: () => Ir,
9250
9261
  MText: () => q,
9251
- MTransferEditor: () => Er,
9252
- MUploader: () => la
9253
- }), to = /* @__PURE__ */ M({
9262
+ MTransferEditor: () => Dr,
9263
+ MUploader: () => ua
9264
+ }), no = /* @__PURE__ */ M({
9254
9265
  __name: "FrameMenu",
9255
9266
  emits: ["click"],
9256
9267
  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();
9268
+ let { model: r, loading: i, load: a } = qa(), o = T(() => l.path), s = I(), c = rn(), l = nn(), u = I(!1), { height: d } = $t();
9258
9269
  H(o, () => {
9259
9270
  kt().then(() => s.value?.setCurrentKey(o.value));
9260
9271
  }, { immediate: !0 });
@@ -9306,7 +9317,7 @@ var Xa = { class: "justified" }, Za = {
9306
9317
  }, 8, ["disabled"]), k("div", {
9307
9318
  style: jt({ height: `${V(d) - 90}px` }),
9308
9319
  class: "menu-tree-wrapper"
9309
- }, [j(ya, {
9320
+ }, [j(ba, {
9310
9321
  options: V(r).rootNode?.children || [],
9311
9322
  current: o.value,
9312
9323
  onGoto: f
@@ -9315,14 +9326,14 @@ var Xa = { class: "justified" }, Za = {
9315
9326
  }, 8, ["modelValue", "onOpen"])], 64);
9316
9327
  };
9317
9328
  }
9318
- }), no = {
9329
+ }), ro = {
9319
9330
  key: 1,
9320
9331
  class: "right"
9321
- }, ro = /* @__PURE__ */ M({
9332
+ }, io = /* @__PURE__ */ M({
9322
9333
  __name: "LoginForm",
9323
9334
  emits: ["retrieve"],
9324
9335
  setup(e, { expose: t, emit: n }) {
9325
- let r = n, { username_label: i, sign_in_only: a } = Pa(), { validate: o } = Ba(), s = I({
9336
+ let r = n, { username_label: i, sign_in_only: a } = Fa(), { validate: o } = Va(), s = I({
9326
9337
  is_sign_in: !0,
9327
9338
  username: "",
9328
9339
  email: "",
@@ -9370,7 +9381,7 @@ var Xa = { class: "justified" }, Za = {
9370
9381
  }, null, 8, ["modelValue"])]),
9371
9382
  _: 1
9372
9383
  }),
9373
- s.value.is_sign_in ? (F(), O("div", no, [j(V(K), {
9384
+ s.value.is_sign_in ? (F(), O("div", ro, [j(V(K), {
9374
9385
  type: "info",
9375
9386
  onClick: c
9376
9387
  }, {
@@ -9404,7 +9415,7 @@ var Xa = { class: "justified" }, Za = {
9404
9415
  }]), 1024);
9405
9416
  };
9406
9417
  }
9407
- }), io = /* @__PURE__ */ M({
9418
+ }), ao = /* @__PURE__ */ M({
9408
9419
  __name: "ProfileManage",
9409
9420
  setup(e, { expose: t }) {
9410
9421
  let { account: n, user: r } = Y(), { $message: i } = J(), { manager: a } = Q(r.value.user_entity || "valar.Valar"), { post: o } = X(), s = I(), c = I({}), l = I([]);
@@ -9414,7 +9425,7 @@ var Xa = { class: "justified" }, Za = {
9414
9425
  async function u() {
9415
9426
  return ln(c.value) || await a.save_one(c.value), !0;
9416
9427
  }
9417
- return t({ save: u }), (e, t) => s.value ? (F(), E(V(ri), {
9428
+ return t({ save: u }), (e, t) => s.value ? (F(), E(V(ii), {
9418
9429
  key: 0,
9419
9430
  original: s.value,
9420
9431
  modelValue: c.value,
@@ -9426,7 +9437,7 @@ var Xa = { class: "justified" }, Za = {
9426
9437
  "fields"
9427
9438
  ])) : D("", !0);
9428
9439
  }
9429
- }), ao = { key: 0 }, oo = /* @__PURE__ */ M({
9440
+ }), oo = { key: 0 }, so = /* @__PURE__ */ M({
9430
9441
  __name: "PasswordManage",
9431
9442
  setup(e, { expose: t }) {
9432
9443
  let n = I(), { user: r, account: i } = Y(), a = I({
@@ -9484,7 +9495,7 @@ var Xa = { class: "justified" }, Za = {
9484
9495
  }, {
9485
9496
  default: U(() => [
9486
9497
  j(c, { prop: "old_password" }, {
9487
- label: U(() => [t[4] ||= A(" 旧密码", -1), V(i).isTemporal ? (F(), O("span", ao, " (或临时密码)")) : D("", !0)]),
9498
+ label: U(() => [t[4] ||= A(" 旧密码", -1), V(i).isTemporal ? (F(), O("span", oo, " (或临时密码)")) : D("", !0)]),
9488
9499
  default: U(() => [j(o, {
9489
9500
  type: "password",
9490
9501
  "show-password": "",
@@ -9522,17 +9533,17 @@ var Xa = { class: "justified" }, Za = {
9522
9533
  }, 8, ["model"])], 64);
9523
9534
  };
9524
9535
  }
9525
- }), so = /* @__PURE__ */ M({
9536
+ }), co = /* @__PURE__ */ M({
9526
9537
  __name: "AccountManage",
9527
9538
  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([]);
9539
+ let { user: n, account: r } = Y(), { username_label: i } = Fa(), { $message: a } = J(), { manager: o } = Q("valar.Account"), s = I(), c = I({}), l = I([]);
9529
9540
  P(async () => {
9530
9541
  s.value = await o.fetch(r.value.id);
9531
9542
  let e = await o.meta("edit");
9532
9543
  l.value = e.fields.map((e) => (e.prop === "username" && i.value && (e.label = i.value), e));
9533
9544
  });
9534
9545
  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);
9546
+ return ln(c.value) ? (a.warning("还未补充邮箱信息"), !1) : Ba.test(c.value.email) ? (await o.save_one(c.value), !0) : (a.warning("邮箱格式错误"), !1);
9536
9547
  }
9537
9548
  return t({ save: u }), (e, t) => {
9538
9549
  let n = z("el-alert");
@@ -9551,7 +9562,7 @@ var Xa = { class: "justified" }, Za = {
9551
9562
  _: 1
9552
9563
  })]),
9553
9564
  _: 1
9554
- })), s.value ? (F(), E(V(ri), {
9565
+ })), s.value ? (F(), E(V(ii), {
9555
9566
  key: 1,
9556
9567
  original: s.value,
9557
9568
  modelValue: c.value,
@@ -9564,7 +9575,7 @@ var Xa = { class: "justified" }, Za = {
9564
9575
  ])) : D("", !0)], 64);
9565
9576
  };
9566
9577
  }
9567
- }), co = /* @__PURE__ */ M({
9578
+ }), lo = /* @__PURE__ */ M({
9568
9579
  __name: "AuthDropdown",
9569
9580
  setup(e) {
9570
9581
  let { user: t, account: n, sign_in: r } = Y(), i = I(), a = I(), o = Rt();
@@ -9589,17 +9600,17 @@ var Xa = { class: "justified" }, Za = {
9589
9600
  return !e || !t || r;
9590
9601
  }), d = {
9591
9602
  profile: {
9592
- component: io,
9603
+ component: ao,
9593
9604
  title: "个人信息管理",
9594
9605
  width: 600
9595
9606
  },
9596
9607
  account: {
9597
- component: so,
9608
+ component: co,
9598
9609
  title: "账户信息管理",
9599
9610
  width: 600
9600
9611
  },
9601
9612
  password: {
9602
- component: oo,
9613
+ component: so,
9603
9614
  title: "密码管理",
9604
9615
  width: 350
9605
9616
  }
@@ -9679,10 +9690,10 @@ var Xa = { class: "justified" }, Za = {
9679
9690
  }, 512)], 64);
9680
9691
  };
9681
9692
  }
9682
- }), lo = /* @__PURE__ */ M({
9693
+ }), uo = /* @__PURE__ */ M({
9683
9694
  __name: "FrameAuth",
9684
9695
  setup(e) {
9685
- let t = I(), n = I(), r = I(), { account: i, is_login: a } = Y(), { sign: o, exit: s } = Ba();
9696
+ let t = I(), n = I(), r = I(), { account: i, is_login: a } = Y(), { sign: o, exit: s } = Va();
9686
9697
  function c() {
9687
9698
  t.value?.open();
9688
9699
  }
@@ -9692,7 +9703,7 @@ var Xa = { class: "justified" }, Za = {
9692
9703
  }
9693
9704
  let u = { email: [{
9694
9705
  validator: (e, t, n) => {
9695
- t === "" ? n(/* @__PURE__ */ Error("请输入邮箱")) : za.test(t) ? n() : n(/* @__PURE__ */ Error("邮箱格式错误"));
9706
+ t === "" ? n(/* @__PURE__ */ Error("请输入邮箱")) : Ba.test(t) ? n() : n(/* @__PURE__ */ Error("邮箱格式错误"));
9696
9707
  },
9697
9708
  trigger: "blur"
9698
9709
  }] }, d = I(), { post: f } = X();
@@ -9707,7 +9718,7 @@ var Xa = { class: "justified" }, Za = {
9707
9718
  return F(), O(w, null, [
9708
9719
  V(a) ? (F(), E(f, { key: 0 }, {
9709
9720
  default: U(() => [
9710
- j(co),
9721
+ j(lo),
9711
9722
  V(i)?.is_admin ? (F(), E(V(K), {
9712
9723
  key: 0,
9713
9724
  icon: e.$route.path === "/morghulis_system" ? "rotate-backward" : "gear",
@@ -9743,7 +9754,7 @@ var Xa = { class: "justified" }, Za = {
9743
9754
  width: "400",
9744
9755
  confirm: l
9745
9756
  }, {
9746
- default: U(() => [j(ro, {
9757
+ default: U(() => [j(io, {
9747
9758
  ref_key: "form",
9748
9759
  ref: r,
9749
9760
  onRetrieve: o[1] ||= (e) => n.value?.open({ email: "" })
@@ -9782,11 +9793,11 @@ var Xa = { class: "justified" }, Za = {
9782
9793
  ], 64);
9783
9794
  };
9784
9795
  }
9785
- }), uo = /* @__PURE__ */ M({
9796
+ }), fo = /* @__PURE__ */ M({
9786
9797
  __name: "FrameNavigate",
9787
9798
  emits: ["open"],
9788
9799
  setup(e, { emit: t }) {
9789
- let { model: n } = Ka();
9800
+ let { model: n } = qa();
9790
9801
  rn();
9791
9802
  let r = nn(), i = t, a = T(() => r.path), o = T(() => {
9792
9803
  let e = Object.values(n.value.mapping), t = e.find((e) => e.path === a.value), r = [];
@@ -9839,16 +9850,16 @@ var Xa = { class: "justified" }, Za = {
9839
9850
  });
9840
9851
  };
9841
9852
  }
9842
- }), fo = {
9853
+ }), po = {
9843
9854
  class: "justified",
9844
9855
  style: { height: "100%" }
9845
- }, po = {
9856
+ }, mo = {
9846
9857
  class: "justified",
9847
9858
  style: { height: "100%" }
9848
- }, mo = /*#__PURE__*/ wn(/* @__PURE__ */ M({
9859
+ }, ho = /*#__PURE__*/ wn(/* @__PURE__ */ M({
9849
9860
  __name: "MFrame",
9850
9861
  setup(e) {
9851
- let { frame: t } = Ya(), n = T(() => `${t.value.body}px`), r = rn(), { title: i } = Pa(), a = I();
9862
+ let { frame: t } = Xa(), n = T(() => `${t.value.body}px`), r = rn(), { title: i } = Fa(), a = I();
9852
9863
  return (e, o) => {
9853
9864
  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
9865
  return F(), E(h, { class: "container" }, {
@@ -9857,9 +9868,9 @@ var Xa = { class: "justified" }, Za = {
9857
9868
  class: "header",
9858
9869
  height: `${V(t).header}px`
9859
9870
  }, {
9860
- default: U(() => [k("div", fo, [j(l, null, {
9871
+ default: U(() => [k("div", po, [j(l, null, {
9861
9872
  default: U(() => [
9862
- j(to, {
9873
+ j(no, {
9863
9874
  ref_key: "menuRef",
9864
9875
  ref: a
9865
9876
  }, null, 512),
@@ -9879,7 +9890,7 @@ var Xa = { class: "justified" }, Za = {
9879
9890
  ]),
9880
9891
  _: 1
9881
9892
  }), j(l, null, {
9882
- default: U(() => [R(e.$slots, "tool", {}, void 0, !0), j(lo)]),
9893
+ default: U(() => [R(e.$slots, "tool", {}, void 0, !0), j(uo)]),
9883
9894
  _: 3
9884
9895
  })])]),
9885
9896
  _: 3
@@ -9888,7 +9899,7 @@ var Xa = { class: "justified" }, Za = {
9888
9899
  class: "neck",
9889
9900
  height: `${V(t).neck}px`
9890
9901
  }, {
9891
- default: U(() => [k("div", po, [j(uo, { onOpen: o[1] ||= (e) => a.value?.open() }), j(l, null, {
9902
+ default: U(() => [k("div", mo, [j(fo, { onOpen: o[1] ||= (e) => a.value?.open() }), j(l, null, {
9892
9903
  default: U(() => [R(e.$slots, "tag", {}, void 0, !0)]),
9893
9904
  _: 3
9894
9905
  })])]),
@@ -9939,13 +9950,13 @@ var Xa = { class: "justified" }, Za = {
9939
9950
  });
9940
9951
  };
9941
9952
  }
9942
- }), [["__scopeId", "data-v-1b59bf74"]]), ho = /* @__PURE__ */ M({
9953
+ }), [["__scopeId", "data-v-1b59bf74"]]), go = /* @__PURE__ */ M({
9943
9954
  __name: "MApp",
9944
9955
  setup(e) {
9945
- let { title: t } = Pa(), { open: n, status: r } = In();
9956
+ let { title: t } = Fa(), { open: n, status: r } = Ln();
9946
9957
  return (e, i) => {
9947
9958
  let a = z("el-text"), o = z("el-result"), s = z("el-button");
9948
- return V(r).code === 200 ? (F(), E(mo, { key: 0 }, {
9959
+ return V(r).code === 200 ? (F(), E(ho, { key: 0 }, {
9949
9960
  tool: U(() => [R(e.$slots, "tool")]),
9950
9961
  footer: U(() => [R(e.$slots, "footer")]),
9951
9962
  _: 3
@@ -10000,11 +10011,11 @@ var Xa = { class: "justified" }, Za = {
10000
10011
  })) : D("", !0);
10001
10012
  };
10002
10013
  }
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]) => {
10014
+ }), _o = to, vo = (t) => (e.add(wt), { install(e) {
10015
+ let { install: n } = Fa();
10016
+ n(e, t), Object.entries(_o).forEach(([t, n]) => {
10006
10017
  e.component(t, n);
10007
10018
  });
10008
10019
  } });
10009
10020
  //#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 };
10021
+ export { da as DataTable, ga as DataTree, Vr as DataWrapper, go as MApp, K as MButton, Rr as MCell, eo as MCharts, $ as MDialog, ii as MForm, G as MIcon, Pr as MObjectEditor, Dn as MOptionContent, On as MOptionItem, kn as MOptionList, rr as MPopover, Ir as MRichEditor, q as MText, Dr as MTransferEditor, ua as MUploader, vo as createMorghulis, vo as default, Va as useAuth, zn as useChannel, Pn as useChannelContainer, Q as useDao, Wa as useData, Ga as useExcel, J as useFeedback, Xa as useFrameSize, qa as useMenu, Qn as useMetaQuery, Fa as useOptionState, oi as usePagination, Ji as usePaster, Ya as usePluginButton, Ja as usePluginColumn, X as useRequest, Ln as useSocket, Rn as useSocketCallback, Y as useUserState, er as useValar };