@webx-ui/module-admin 0.18.0 → 0.18.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
@@ -1,23 +1,23 @@
1
- import { inject as se, reactive as be, defineComponent as M, useModel as re, ref as L, watch as te, computed as g, openBlock as m, createElementBlock as $, createVNode as w, unref as a, withCtx as y, createElementVNode as B, toDisplayString as A, createBlock as S, createTextVNode as z, createCommentVNode as N, mergeModels as ne, provide as ze, normalizeClass as oe, createSlots as ke, nextTick as Ie, useId as Tt, Fragment as j, onMounted as Ee, renderList as ae, mergeProps as et, withModifiers as tt, useSlots as St, useTemplateRef as lt, renderSlot as Y, normalizeProps as Ct, guardReactiveProps as Wt, resolveComponent as X, watchEffect as At, onUnmounted as Vt, isRef as at, createApp as Lt, h as ce, withKeys as nt, onBeforeUnmount as ot } from "vue";
2
- import { RouterLink as Nt, useRouter as _e, useRoute as st, createRouter as Rt, createWebHistory as Ut, onBeforeRouteLeave as zt } from "vue-router";
3
- import { WxSortableList as Be, WxAction as ue, WxBadge as $e, WxSelect as we, WxAutocomplete as Ne, WxSwitch as Ae, WxInputNumber as It, WxButton as le, WxSegmented as Et, WxText as ee, WxInput as Te, WxCheckbox as He, WxActions as Bt, WxDropdownItem as Mt, useElementWidth as Pt, WxHeading as Ft, WxIcon as Me, WxTabs as Dt, WxCard as Re, WxRichText as Ot, useLocales as it, WxAlert as Se, WxResult as Ht, useResponsiveShell as jt, shellLayoutFor as Kt, WxToaster as qt, WebxUI as Yt, dateLocaleKey as Xt, localesKey as Gt, useModal as Jt, WxDialog as rt, WxFormItem as Qt, WxSpace as Zt, createModal as el, WxSkeleton as me, WxEmpty as ut, WxTooltip as dt, toast as K, confirm as xe, localizedValue as tl, WxBreadcrumb as ll, WxBreadcrumbItem as je, WxActionBar as al, WxPopover as nl, WxAvatar as ol, WxTextarea as Ke } from "@webx-ui/core";
1
+ import { inject as se, reactive as be, defineComponent as M, useModel as ue, ref as L, watch as te, computed as g, openBlock as m, createElementBlock as $, createVNode as w, unref as a, withCtx as y, createElementVNode as B, toDisplayString as A, createBlock as S, createTextVNode as z, createCommentVNode as N, mergeModels as ne, provide as Ee, normalizeClass as oe, createSlots as ke, nextTick as Ie, useId as Tt, Fragment as j, onMounted as _e, renderList as ae, mergeProps as tt, withModifiers as lt, useSlots as St, useTemplateRef as at, renderSlot as Y, normalizeProps as Ct, guardReactiveProps as Wt, resolveComponent as X, watchEffect as At, onUnmounted as Vt, isRef as nt, createApp as Lt, h as ce, onBeforeUnmount as Be, withKeys as ot } from "vue";
2
+ import { RouterLink as Nt, useRouter as $e, useRoute as st, createRouter as Rt, createWebHistory as Ut, onBeforeRouteLeave as zt } from "vue-router";
3
+ import { WxSortableList as Me, WxAction as de, WxBadge as Te, WxSelect as we, WxAutocomplete as Re, WxSwitch as Ve, WxInputNumber as Et, WxButton as le, WxSegmented as It, WxText as ee, WxInput as Se, WxCheckbox as je, WxActions as Bt, WxDropdownItem as Mt, useElementWidth as Pt, WxHeading as Ft, WxIcon as Pe, WxTabs as Ot, WxCard as Ue, WxRichText as Dt, useLocales as it, WxAlert as Ce, WxResult as Ht, useResponsiveShell as jt, shellLayoutFor as Kt, WxToaster as qt, WebxUI as Yt, dateLocaleKey as Xt, localesKey as Gt, useModal as Jt, WxDialog as rt, WxFormItem as Qt, WxSpace as Zt, createModal as el, WxSkeleton as me, WxEmpty as ut, WxTooltip as dt, toast as K, confirm as xe, localizedValue as tl, WxBreadcrumb as ll, WxBreadcrumbItem as Ke, WxActionBar as al, WxPopover as nl, WxAvatar as ol, WxTextarea as qe } from "@webx-ui/core";
4
4
  import { watchSystemTheme as sl, applyTheme as il, systemTheme as rl } from "@webx-ui/tokens";
5
5
  import { WxScreenRenderer as ul } from "@webx-ui/schema";
6
- const Ce = /* @__PURE__ */ Symbol("webx-i18n");
6
+ const We = /* @__PURE__ */ Symbol("webx-i18n");
7
7
  function dl() {
8
- const e = se(Ce, null);
8
+ const e = se(We, null);
9
9
  if (e === null)
10
10
  throw new Error("useI18n() was called outside a panel created by createAdmin().");
11
11
  return e;
12
12
  }
13
- function D(e) {
14
- const t = se(Ce, null);
15
- return t === null ? Pe().scope(e) : t.scope(e);
13
+ function O(e) {
14
+ const t = se(We, null);
15
+ return t === null ? Fe().scope(e) : t.scope(e);
16
16
  }
17
17
  function cl(e, t) {
18
- e.provide(Ce, t);
18
+ e.provide(We, t);
19
19
  }
20
- function Pe(e = {}) {
20
+ function Fe(e = {}) {
21
21
  const t = e.fallback ?? "en", l = be({
22
22
  locale: e.locale ?? t,
23
23
  fallback: t,
@@ -99,7 +99,7 @@ const vl = { class: "wx-categories-field" }, pl = { class: "wx-categories-field_
99
99
  }),
100
100
  emits: ["update:modelValue"],
101
101
  setup(e) {
102
- const t = e, l = re(e, "modelValue"), n = J(), o = D("webx-admin"), i = L([]);
102
+ const t = e, l = ue(e, "modelValue"), n = J(), o = O("webx-admin"), i = L([]);
103
103
  te(
104
104
  () => t.source,
105
105
  async (v) => {
@@ -127,7 +127,7 @@ const vl = { class: "wx-categories-field" }, pl = { class: "wx-categories-field_
127
127
  l.value = s.value.filter((c) => c !== v);
128
128
  }
129
129
  return (v, c) => (m(), $("div", vl, [
130
- w(a(Be), {
130
+ w(a(Me), {
131
131
  modelValue: u.value,
132
132
  "onUpdate:modelValue": c[0] || (c[0] = (x) => u.value = x),
133
133
  plain: "",
@@ -139,7 +139,7 @@ const vl = { class: "wx-categories-field" }, pl = { class: "wx-categories-field_
139
139
  }, {
140
140
  default: y(({ item: x, index: p }) => [
141
141
  B("span", pl, A(x.name), 1),
142
- t.main && p === 0 ? (m(), S(a($e), {
142
+ t.main && p === 0 ? (m(), S(a(Te), {
143
143
  key: 0,
144
144
  type: "primary"
145
145
  }, {
@@ -150,7 +150,7 @@ const vl = { class: "wx-categories-field" }, pl = { class: "wx-categories-field_
150
150
  })) : N("", !0)
151
151
  ]),
152
152
  actions: y(({ item: x }) => [
153
- w(a(ue), {
153
+ w(a(de), {
154
154
  type: "remove",
155
155
  size: "sm",
156
156
  disabled: t.disabled,
@@ -203,7 +203,7 @@ function bl(e = {}) {
203
203
  const t = (e.baseUrl ?? "").replace(/\/$/, ""), l = e.csrfUrl ?? "/api/cms/auth/csrf-cookie", n = e.fetch ?? globalThis.fetch.bind(globalThis), o = e.onUnauthenticated, i = e.headers;
204
204
  let s = !1;
205
205
  async function r(d = !1) {
206
- s && !d && qe("XSRF-TOKEN") !== null || (await n(l, { credentials: "same-origin" }), s = !0);
206
+ s && !d && Ye("XSRF-TOKEN") !== null || (await n(l, { credentials: "same-origin" }), s = !0);
207
207
  }
208
208
  async function u(d, h, f, v = {}, c = !1) {
209
209
  const x = yl.has(d);
@@ -216,7 +216,7 @@ function bl(e = {}) {
216
216
  ...v.headers
217
217
  };
218
218
  if (x) {
219
- const T = qe("XSRF-TOKEN");
219
+ const T = Ye("XSRF-TOKEN");
220
220
  T !== null && (p["X-XSRF-TOKEN"] = T);
221
221
  }
222
222
  f !== void 0 && (p["Content-Type"] = "application/json");
@@ -267,7 +267,7 @@ function xl(e, t, l) {
267
267
  const s = i.toString();
268
268
  return s === "" ? o : `${o}${o.includes("?") ? "&" : "?"}${s}`;
269
269
  }
270
- function qe(e) {
270
+ function Ye(e) {
271
271
  if (typeof document > "u")
272
272
  return null;
273
273
  for (const t of document.cookie.split(";")) {
@@ -288,8 +288,8 @@ function _l(e) {
288
288
  return Array.isArray(e) ? [...new Set(e.map(Number).filter((t) => Number.isInteger(t) && t > 0))] : [];
289
289
  }
290
290
  const ct = /* @__PURE__ */ Symbol("wx-relation-owner");
291
- function zn(e) {
292
- ze(ct, e);
291
+ function En(e) {
292
+ Ee(ct, e);
293
293
  }
294
294
  function $l() {
295
295
  return se(ct, null);
@@ -319,22 +319,22 @@ const Tl = ["src"], Sl = { class: "wx-relations-field__text" }, Cl = { class: "w
319
319
  }),
320
320
  emits: ["update:modelValue"],
321
321
  setup(e) {
322
- const t = e, l = re(e, "modelValue"), n = J(), o = $l(), i = D("webx-admin"), s = g(() => kl(n, t.target)), r = L(/* @__PURE__ */ new Map()), u = L(/* @__PURE__ */ new Set()), d = L(!1), h = L([]), f = L(!1), v = L(""), c = g(() => _l(l.value));
322
+ const t = e, l = ue(e, "modelValue"), n = J(), o = $l(), i = O("webx-admin"), s = g(() => kl(n, t.target)), r = L(/* @__PURE__ */ new Map()), u = L(/* @__PURE__ */ new Set()), d = L(!1), h = L([]), f = L(!1), v = L(""), c = g(() => _l(l.value));
323
323
  function x(R) {
324
324
  const U = new Map(r.value);
325
- for (const I of R) U.set(I.id, I);
325
+ for (const E of R) U.set(E.id, E);
326
326
  r.value = U;
327
327
  }
328
328
  async function p(R) {
329
- const U = R.filter((I) => !r.value.has(I) && !u.value.has(I));
329
+ const U = R.filter((E) => !r.value.has(E) && !u.value.has(E));
330
330
  if (!(U.length === 0 || d.value))
331
331
  try {
332
- const I = await s.value.named(U);
333
- x(I);
334
- const de = new Set(I.map((ie) => ie.id));
335
- u.value = /* @__PURE__ */ new Set([...u.value, ...U.filter((ie) => !de.has(ie))]);
336
- } catch (I) {
337
- I instanceof fe && I.status === 403 && (d.value = !0);
332
+ const E = await s.value.named(U);
333
+ x(E);
334
+ const ie = new Set(E.map((re) => re.id));
335
+ u.value = /* @__PURE__ */ new Set([...u.value, ...U.filter((re) => !ie.has(re))]);
336
+ } catch (E) {
337
+ E instanceof fe && E.status === 403 && (d.value = !0);
338
338
  }
339
339
  }
340
340
  te(
@@ -389,9 +389,9 @@ const Tl = ["src"], Sl = { class: "wx-relations-field__text" }, Cl = { class: "w
389
389
  return (R, U) => (m(), $("div", {
390
390
  class: oe(["wx-relations-field", { "is-unordered": !t.sortable }])
391
391
  }, [
392
- w(a(Be), {
392
+ w(a(Me), {
393
393
  modelValue: b.value,
394
- "onUpdate:modelValue": U[0] || (U[0] = (I) => b.value = I),
394
+ "onUpdate:modelValue": U[0] || (U[0] = (E) => b.value = E),
395
395
  plain: "",
396
396
  size: "sm",
397
397
  "item-key": "id",
@@ -400,23 +400,23 @@ const Tl = ["src"], Sl = { class: "wx-relations-field__text" }, Cl = { class: "w
400
400
  "empty-text": t.emptyText ?? a(i)("relations.field-empty"),
401
401
  "drag-label": a(i)("relations.field-drag")
402
402
  }, ke({
403
- default: y(({ item: I }) => [
404
- I.candidate?.thumb ? (m(), $("img", {
403
+ default: y(({ item: E }) => [
404
+ E.candidate?.thumb ? (m(), $("img", {
405
405
  key: 0,
406
406
  class: "wx-relations-field__thumb",
407
- src: I.candidate.thumb,
407
+ src: E.candidate.thumb,
408
408
  alt: ""
409
409
  }, null, 8, Tl)) : N("", !0),
410
410
  B("span", Sl, [
411
- B("span", Cl, A(I.title), 1),
412
- I.candidate?.subtitle ? (m(), $("span", Wl, A(I.candidate.subtitle), 1)) : N("", !0)
411
+ B("span", Cl, A(E.title), 1),
412
+ E.candidate?.subtitle ? (m(), $("span", Wl, A(E.candidate.subtitle), 1)) : N("", !0)
413
413
  ]),
414
- q(I) ? (m(), S(a($e), {
414
+ q(E) ? (m(), S(a(Te), {
415
415
  key: 1,
416
416
  type: "warning"
417
417
  }, {
418
418
  default: y(() => [
419
- z(A(q(I)), 1)
419
+ z(A(q(E)), 1)
420
420
  ]),
421
421
  _: 2
422
422
  }, 1024)) : N("", !0)
@@ -425,21 +425,21 @@ const Tl = ["src"], Sl = { class: "wx-relations-field__text" }, Cl = { class: "w
425
425
  }, [
426
426
  C.value ? void 0 : {
427
427
  name: "actions",
428
- fn: y(({ item: I }) => [
429
- w(a(ue), {
428
+ fn: y(({ item: E }) => [
429
+ w(a(de), {
430
430
  type: "remove",
431
431
  size: "sm",
432
432
  title: a(i)("relations.field-remove"),
433
- onClick: (de) => k(I.id)
433
+ onClick: (ie) => k(E.id)
434
434
  }, null, 8, ["title", "onClick"])
435
435
  ]),
436
436
  key: "0"
437
437
  }
438
438
  ]), 1032, ["modelValue", "disabled", "empty-text", "drag-label"]),
439
439
  d.value ? (m(), $("p", Al, A(a(i)("relations.field-forbidden")), 1)) : (m(), $("div", Vl, [
440
- w(a(Ne), {
440
+ w(a(Re), {
441
441
  modelValue: v.value,
442
- "onUpdate:modelValue": U[1] || (U[1] = (I) => v.value = I),
442
+ "onUpdate:modelValue": U[1] || (U[1] = (E) => v.value = E),
443
443
  options: Q.value,
444
444
  remote: "",
445
445
  teleport: "",
@@ -455,10 +455,10 @@ const Tl = ["src"], Sl = { class: "wx-relations-field__text" }, Cl = { class: "w
455
455
  ]))
456
456
  ], 2));
457
457
  }
458
- }), mt = /* @__PURE__ */ G(Ll, [["__scopeId", "data-v-5ecf0e47"]]), ft = 100, Ve = /* @__PURE__ */ new WeakMap();
458
+ }), mt = /* @__PURE__ */ G(Ll, [["__scopeId", "data-v-5ecf0e47"]]), ft = 100, Le = /* @__PURE__ */ new WeakMap();
459
459
  function Nl(e) {
460
- let t = Ve.get(e);
461
- return t === void 0 && (t = e.http.get(`${e.apiPath}/collections`).then((l) => l.data.map((n) => ({ ...n, relations: Rl(n) }))), t.catch(() => Ve.delete(e)), Ve.set(e, t)), t;
460
+ let t = Le.get(e);
461
+ return t === void 0 && (t = e.http.get(`${e.apiPath}/collections`).then((l) => l.data.map((n) => ({ ...n, relations: Rl(n) }))), t.catch(() => Le.delete(e)), Le.set(e, t)), t;
462
462
  }
463
463
  function Rl(e) {
464
464
  return Array.isArray(e.relations) ? e.relations.flatMap((t) => {
@@ -487,7 +487,7 @@ function Ul(e) {
487
487
  const o = vt(l);
488
488
  return typeof t == "string" && t !== "" && o.length > 0 ? { type: t, ids: o } : null;
489
489
  }
490
- function Ye(e) {
490
+ function Xe(e) {
491
491
  const t = typeof e == "object" && e !== null && !Array.isArray(e) ? e : {}, l = typeof t.limit == "number" && Number.isInteger(t.limit) ? t.limit : null;
492
492
  return {
493
493
  categories: vt(t.categories),
@@ -497,19 +497,19 @@ function Ye(e) {
497
497
  markup: typeof t.markup == "boolean" ? t.markup : null
498
498
  };
499
499
  }
500
- function Xe(e) {
500
+ function Ge(e) {
501
501
  return e.categories.length === 0 && e.related === null;
502
502
  }
503
- const zl = ["aria-busy"], Il = {
503
+ const zl = ["aria-busy"], El = {
504
504
  key: 0,
505
505
  class: "wx-collection-field__note"
506
- }, El = { class: "wx-collection-field__note" }, Bl = {
506
+ }, Il = { class: "wx-collection-field__note" }, Bl = {
507
507
  key: 0,
508
508
  class: "wx-collection-field__row"
509
509
  }, Ml = ["for"], Pl = {
510
510
  key: 1,
511
511
  class: "wx-collection-field__row"
512
- }, Fl = { class: "wx-collection-field__label" }, Dl = { class: "wx-collection-field__hint" }, Ol = { class: "wx-collection-field__row" }, Hl = ["for"], jl = { class: "wx-collection-field__limit" }, Kl = {
512
+ }, Fl = { class: "wx-collection-field__label" }, Ol = { class: "wx-collection-field__hint" }, Dl = { class: "wx-collection-field__row" }, Hl = ["for"], jl = { class: "wx-collection-field__limit" }, Kl = {
513
513
  key: 3,
514
514
  class: "wx-collection-field__markup"
515
515
  }, ql = { class: "wx-collection-field__hint" }, Yl = /* @__PURE__ */ M({
@@ -524,7 +524,7 @@ const zl = ["aria-busy"], Il = {
524
524
  }),
525
525
  emits: ["update:modelValue"],
526
526
  setup(e) {
527
- const t = e, l = re(e, "modelValue"), n = J(), o = D("webx-admin"), i = Tt(), s = L(void 0), r = L([]);
527
+ const t = e, l = ue(e, "modelValue"), n = J(), o = O("webx-admin"), i = Tt(), s = L(void 0), r = L([]);
528
528
  te(
529
529
  () => t.source,
530
530
  async (k) => {
@@ -544,9 +544,9 @@ const zl = ["aria-busy"], Il = {
544
544
  },
545
545
  { immediate: !0 }
546
546
  );
547
- const u = g(() => Ye(l.value));
547
+ const u = g(() => Xe(l.value));
548
548
  function d(k) {
549
- l.value = Ye({ ...u.value, ...k });
549
+ l.value = Xe({ ...u.value, ...k });
550
550
  }
551
551
  const h = g(() => {
552
552
  const k = new Set(r.value.map((_) => _.value)), C = u.value.categories.filter((_) => !k.has(_)).map((_) => ({ label: `#${_}`, value: _ }));
@@ -577,21 +577,21 @@ const zl = ["aria-busy"], Il = {
577
577
  const C = p.value?.key;
578
578
  d({ related: k && C ? { type: C, ids: [], current: !0 } : null });
579
579
  }
580
- const Q = g(() => u.value.markup ?? Xe(u.value));
580
+ const Q = g(() => u.value.markup ?? Ge(u.value));
581
581
  function H(k) {
582
582
  d({ markup: k === !0 });
583
583
  }
584
584
  const V = g(
585
585
  () => o(
586
- Xe(u.value) ? "collections.field-markup-auto-on" : "collections.field-markup-auto-off"
586
+ Ge(u.value) ? "collections.field-markup-auto-on" : "collections.field-markup-auto-off"
587
587
  )
588
588
  );
589
589
  return (k, C) => (m(), $("div", {
590
590
  class: "wx-collection-field",
591
591
  "aria-busy": s.value === void 0
592
592
  }, [
593
- s.value === null ? (m(), $("p", Il, A(a(o)("collections.field-unavailable", { source: t.source })), 1)) : s.value ? (m(), $(j, { key: 1 }, [
594
- B("p", El, A(a(o)("collections.field-source", { source: s.value.title })), 1),
593
+ s.value === null ? (m(), $("p", El, A(a(o)("collections.field-unavailable", { source: t.source })), 1)) : s.value ? (m(), $(j, { key: 1 }, [
594
+ B("p", Il, A(a(o)("collections.field-source", { source: s.value.title })), 1),
595
595
  s.value.categories ? (m(), $("div", Bl, [
596
596
  B("label", {
597
597
  class: "wx-collection-field__label",
@@ -625,13 +625,13 @@ const zl = ["aria-busy"], Il = {
625
625
  "onUpdate:modelValue": b
626
626
  }, null, 8, ["model-value", "options", "placeholder", "aria-label", "disabled"])) : N("", !0),
627
627
  p.value ? (m(), $(j, { key: 1 }, [
628
- w(a(Ae), {
628
+ w(a(Ve), {
629
629
  "model-value": u.value.related?.current === !0,
630
630
  label: a(o)("relations.collection-related-current"),
631
631
  disabled: t.disabled,
632
632
  "onUpdate:modelValue": C[0] || (C[0] = (_) => F(_ === !0))
633
633
  }, null, 8, ["model-value", "label", "disabled"]),
634
- B("p", Dl, A(a(o)("relations.collection-related-current-hint", { target: p.value.title })), 1)
634
+ B("p", Ol, A(a(o)("relations.collection-related-current-hint", { target: p.value.title })), 1)
635
635
  ], 64)) : N("", !0),
636
636
  p.value && u.value.related?.current !== !0 ? (m(), S(mt, {
637
637
  key: 2,
@@ -643,13 +643,13 @@ const zl = ["aria-busy"], Il = {
643
643
  "onUpdate:modelValue": T
644
644
  }, null, 8, ["model-value", "target", "empty-text", "disabled"])) : N("", !0)
645
645
  ])) : N("", !0),
646
- B("div", Ol, [
646
+ B("div", Dl, [
647
647
  B("label", {
648
648
  class: "wx-collection-field__label",
649
649
  for: `${a(i)}-limit`
650
650
  }, A(a(o)("collections.field-limit")), 9, Hl),
651
651
  B("div", jl, [
652
- w(a(It), {
652
+ w(a(Et), {
653
653
  id: `${a(i)}-limit`,
654
654
  "model-value": u.value.limit,
655
655
  min: 1,
@@ -662,7 +662,7 @@ const zl = ["aria-busy"], Il = {
662
662
  }, null, 8, ["id", "model-value", "max", "placeholder", "disabled"])
663
663
  ])
664
664
  ]),
665
- s.value.categories ? (m(), S(a(Ae), {
665
+ s.value.categories ? (m(), S(a(Ve), {
666
666
  key: 2,
667
667
  "model-value": u.value.filter,
668
668
  label: a(o)("collections.field-filter"),
@@ -670,7 +670,7 @@ const zl = ["aria-busy"], Il = {
670
670
  "onUpdate:modelValue": C[1] || (C[1] = (_) => d({ filter: _ === !0 }))
671
671
  }, null, 8, ["model-value", "label", "disabled"])) : N("", !0),
672
672
  s.value.markup ? (m(), $("div", Kl, [
673
- w(a(Ae), {
673
+ w(a(Ve), {
674
674
  "model-value": Q.value,
675
675
  label: a(o)("collections.field-markup"),
676
676
  disabled: t.disabled,
@@ -740,7 +740,7 @@ const Ql = { class: "wx-link-picker" }, Zl = {
740
740
  }),
741
741
  emits: ["update:modelValue"],
742
742
  setup(e) {
743
- const t = e, l = re(e, "modelValue"), n = J(), o = dl(), i = Jl(n), s = D("webx-admin"), r = L([]), u = L([]), d = L([]), h = L(!1), f = L(null), v = L(""), c = L(null);
743
+ const t = e, l = ue(e, "modelValue"), n = J(), o = dl(), i = Jl(n), s = O("webx-admin"), r = L([]), u = L([]), d = L([]), h = L(!1), f = L(null), v = L(""), c = L(null);
744
744
  let x = null;
745
745
  const p = g(() => l.value ?? Gl()), b = g(() => {
746
746
  const W = [
@@ -753,13 +753,13 @@ const Ql = { class: "wx-link-picker" }, Zl = {
753
753
  ), F = g(
754
754
  () => u.value.map((W) => ({
755
755
  value: W.title,
756
- description: E(W),
756
+ description: I(W),
757
757
  id: W.id
758
758
  }))
759
759
  ), Q = g(
760
760
  () => d.value.map((W) => ({ value: W.path, description: W.name }))
761
761
  );
762
- Ee(async () => {
762
+ _e(async () => {
763
763
  r.value = await i.sources(), f.value = p.value.entity_type ?? r.value[0]?.type ?? null, await Promise.all([H(), V()]);
764
764
  }), te(
765
765
  () => [p.value.entity_type, p.value.entity_id].join(":"),
@@ -775,8 +775,8 @@ const Ql = { class: "wx-link-picker" }, Zl = {
775
775
  }
776
776
  if (c.value?.id === P)
777
777
  return;
778
- const [O] = await i.resolve([{ type: W, id: P }], o.state.locale);
779
- c.value = O ?? null, v.value = O?.title ?? s("links.missing"), x = v.value;
778
+ const [D] = await i.resolve([{ type: W, id: P }], o.state.locale);
779
+ c.value = D ?? null, v.value = D?.title ?? s("links.missing"), x = v.value;
780
780
  }
781
781
  async function V() {
782
782
  d.value = await i.routes();
@@ -802,7 +802,7 @@ const Ql = { class: "wx-link-picker" }, Zl = {
802
802
  f.value = W == null ? null : String(W), u.value = [], k("");
803
803
  }
804
804
  function q(W) {
805
- const P = u.value.find((O) => O.id === W.id);
805
+ const P = u.value.find((D) => D.id === W.id);
806
806
  P === void 0 || f.value === null || (c.value = P, v.value = P.title, l.value = { ...p.value, entity_type: f.value, entity_id: P.id });
807
807
  }
808
808
  function R() {
@@ -811,26 +811,26 @@ const Ql = { class: "wx-link-picker" }, Zl = {
811
811
  function U(W) {
812
812
  l.value = { ...p.value, url: W === "" ? null : W };
813
813
  }
814
- function I(W) {
814
+ function E(W) {
815
815
  const P = (typeof W == "string" || typeof W == "number" ? String(W) : "").replace(/^#+/, "").trim();
816
816
  l.value = { ...p.value, hash: P === "" ? null : P };
817
817
  }
818
- function de(W) {
818
+ function ie(W) {
819
819
  l.value = { ...p.value, new_tab: W };
820
820
  }
821
- function ie(W, P) {
822
- const O = p.value.rel.filter((We) => We !== W);
823
- l.value = { ...p.value, rel: P ? [...O, W] : O };
821
+ function re(W, P) {
822
+ const D = p.value.rel.filter((Ae) => Ae !== W);
823
+ l.value = { ...p.value, rel: P ? [...D, W] : D };
824
824
  }
825
- function E(W) {
825
+ function I(W) {
826
826
  const P = [W.hint, W.url ?? void 0].filter(
827
- (O) => typeof O == "string" && O !== ""
827
+ (D) => typeof D == "string" && D !== ""
828
828
  );
829
829
  return W.available || P.push(s("links.unavailable")), P.join(" · ");
830
830
  }
831
831
  const Z = ["nofollow", "sponsored", "ugc"];
832
832
  return (W, P) => (m(), $("div", Ql, [
833
- w(a(Et), {
833
+ w(a(It), {
834
834
  options: b.value,
835
835
  "model-value": p.value.target,
836
836
  disabled: t.disabled,
@@ -847,7 +847,7 @@ const Ql = { class: "wx-link-picker" }, Zl = {
847
847
  "aria-label": a(s)("links.section"),
848
848
  "onUpdate:modelValue": _
849
849
  }, null, 8, ["options", "model-value", "disabled", "aria-label"])) : N("", !0),
850
- w(a(Ne), {
850
+ w(a(Re), {
851
851
  class: "wx-link-picker__search",
852
852
  "model-value": v.value,
853
853
  options: F.value,
@@ -859,13 +859,13 @@ const Ql = { class: "wx-link-picker" }, Zl = {
859
859
  placeholder: a(s)("links.search"),
860
860
  "aria-label": a(s)("links.search"),
861
861
  disabled: t.disabled,
862
- "onUpdate:modelValue": P[0] || (P[0] = (O) => v.value = O),
862
+ "onUpdate:modelValue": P[0] || (P[0] = (D) => v.value = D),
863
863
  onSearch: k,
864
864
  onSelect: q,
865
865
  onClear: R
866
866
  }, null, 8, ["model-value", "options", "loading", "loading-text", "empty-text", "placeholder", "aria-label", "disabled"])
867
867
  ])) : p.value.target === "url" ? (m(), $("div", ea, [
868
- w(a(Ne), {
868
+ w(a(Re), {
869
869
  "model-value": p.value.url ?? "",
870
870
  options: Q.value,
871
871
  clearable: "",
@@ -891,20 +891,20 @@ const Ql = { class: "wx-link-picker" }, Zl = {
891
891
  class: "wx-link-picker__sign",
892
892
  "aria-hidden": "true"
893
893
  }, "#", -1)),
894
- w(a(Te), {
894
+ w(a(Se), {
895
895
  "model-value": p.value.hash ?? "",
896
896
  placeholder: a(s)("links.hash-placeholder"),
897
897
  "aria-label": a(s)("links.hash"),
898
898
  disabled: t.disabled,
899
899
  clearable: "",
900
- "onUpdate:modelValue": I
900
+ "onUpdate:modelValue": E
901
901
  }, null, 8, ["model-value", "placeholder", "aria-label", "disabled"])
902
902
  ])) : N("", !0),
903
903
  t.attributes && p.value.target !== "none" ? (m(), $("div", la, [
904
- w(a(He), {
904
+ w(a(je), {
905
905
  "model-value": p.value.new_tab,
906
906
  disabled: t.disabled,
907
- "onUpdate:modelValue": P[1] || (P[1] = (O) => de(O))
907
+ "onUpdate:modelValue": P[1] || (P[1] = (D) => ie(D))
908
908
  }, {
909
909
  default: y(() => [
910
910
  z(A(a(s)("links.new-tab")), 1)
@@ -921,14 +921,14 @@ const Ql = { class: "wx-link-picker" }, Zl = {
921
921
  ]),
922
922
  _: 1
923
923
  }),
924
- (m(), $(j, null, ae(Z, (O) => w(a(He), {
925
- key: O,
926
- "model-value": p.value.rel.includes(O),
924
+ (m(), $(j, null, ae(Z, (D) => w(a(je), {
925
+ key: D,
926
+ "model-value": p.value.rel.includes(D),
927
927
  disabled: t.disabled,
928
- "onUpdate:modelValue": (We) => ie(O, We)
928
+ "onUpdate:modelValue": (Ae) => re(D, Ae)
929
929
  }, {
930
930
  default: y(() => [
931
- z(A(a(s)(`links.rel-${O}`)), 1)
931
+ z(A(a(s)(`links.rel-${D}`)), 1)
932
932
  ]),
933
933
  _: 2
934
934
  }, 1032, ["model-value", "disabled", "onUpdate:modelValue"])), 64))
@@ -950,8 +950,8 @@ const Ql = { class: "wx-link-picker" }, Zl = {
950
950
  }),
951
951
  emits: ["update:modelValue"],
952
952
  setup(e) {
953
- const t = e, l = re(e, "modelValue");
954
- return (n, o) => (m(), S(oa, et({
953
+ const t = e, l = ue(e, "modelValue");
954
+ return (n, o) => (m(), S(oa, tt({
955
955
  modelValue: l.value,
956
956
  "onUpdate:modelValue": o[0] || (o[0] = (i) => l.value = i)
957
957
  }, n.$attrs, {
@@ -968,8 +968,8 @@ const Ql = { class: "wx-link-picker" }, Zl = {
968
968
  size: { default: "sm" }
969
969
  },
970
970
  setup(e) {
971
- const t = e, l = D("webx-admin"), n = g(() => t.label ?? l("editor.back"));
972
- return (o, i) => (m(), S(a(ue), {
971
+ const t = e, l = O("webx-admin"), n = g(() => t.label ?? l("editor.back"));
972
+ return (o, i) => (m(), S(a(de), {
973
973
  icon: "arrow-left",
974
974
  class: "wx-back-button",
975
975
  as: a(Nt),
@@ -990,7 +990,7 @@ const Ql = { class: "wx-link-picker" }, Zl = {
990
990
  size: { default: "sm" }
991
991
  },
992
992
  setup(e) {
993
- const t = D("webx-admin"), l = e, n = g(() => [
993
+ const t = O("webx-admin"), l = e, n = g(() => [
994
994
  ...l.actions.filter((i) => !i.danger),
995
995
  ...l.actions.filter((i) => i.danger)
996
996
  ]), o = g(() => {
@@ -1004,11 +1004,11 @@ const Ql = { class: "wx-link-picker" }, Zl = {
1004
1004
  align: "end",
1005
1005
  size: e.size,
1006
1006
  "aria-label": e.label,
1007
- onClick: s[0] || (s[0] = tt(() => {
1007
+ onClick: s[0] || (s[0] = lt(() => {
1008
1008
  }, ["stop"]))
1009
1009
  }, {
1010
1010
  trigger: y(() => [
1011
- w(a(ue), {
1011
+ w(a(de), {
1012
1012
  type: "more",
1013
1013
  size: e.size,
1014
1014
  title: a(t)("editor.more")
@@ -1037,7 +1037,7 @@ const Ql = { class: "wx-link-picker" }, Zl = {
1037
1037
  _: 1
1038
1038
  }, 8, ["size", "aria-label"])) : N("", !0);
1039
1039
  }
1040
- }), Fe = /* @__PURE__ */ G(ua, [["__scopeId", "data-v-cab01f7f"]]), da = ["data-level"], ca = {
1040
+ }), Oe = /* @__PURE__ */ G(ua, [["__scopeId", "data-v-cab01f7f"]]), da = ["data-level"], ca = {
1041
1041
  key: 0,
1042
1042
  class: "wx-screen-head__trail"
1043
1043
  }, ma = { class: "wx-screen-head__name" }, fa = {
@@ -1048,7 +1048,7 @@ const Ql = { class: "wx-link-picker" }, Zl = {
1048
1048
  props: {
1049
1049
  title: { default: void 0 },
1050
1050
  subtitle: { default: void 0 },
1051
- back: { type: Boolean, default: void 0 },
1051
+ back: { type: [String, Object, Boolean], default: void 0 },
1052
1052
  backLabel: { default: void 0 },
1053
1053
  level: { default: 2 },
1054
1054
  actions: { default: void 0 },
@@ -1057,7 +1057,7 @@ const Ql = { class: "wx-link-picker" }, Zl = {
1057
1057
  },
1058
1058
  emits: ["back"],
1059
1059
  setup(e, { emit: t }) {
1060
- const l = e, n = t, o = D("webx-admin"), i = St(), s = lt("root"), r = Pt(s), u = g(() => r.value > 0 && r.value < l.collapseBelow), d = g(() => l.actions ?? []), h = g(
1060
+ const l = e, n = t, o = O("webx-admin"), i = St(), s = at("root"), r = Pt(s), u = g(() => r.value > 0 && r.value < l.collapseBelow), d = g(() => l.actions ?? []), h = g(
1061
1061
  () => d.value.find((p) => p.primary) ?? null
1062
1062
  ), f = g(() => u.value ? h.value ? [h.value] : [] : d.value.filter((p) => !p.menu && !p.danger)), v = g(() => u.value ? d.value.filter((p) => p !== h.value) : d.value.filter((p) => p.menu || p.danger)), c = g(
1063
1063
  () => l.back && l.back !== !0 ? l.back : null
@@ -1084,7 +1084,7 @@ const Ql = { class: "wx-link-picker" }, Zl = {
1084
1084
  to: c.value,
1085
1085
  label: e.backLabel,
1086
1086
  "tooltip-side": "bottom"
1087
- }, null, 8, ["to", "label"])) : e.back ? (m(), S(a(ue), {
1087
+ }, null, 8, ["to", "label"])) : e.back ? (m(), S(a(de), {
1088
1088
  key: 2,
1089
1089
  class: "wx-screen-head__back",
1090
1090
  icon: "arrow-left",
@@ -1143,14 +1143,14 @@ const Ql = { class: "wx-link-picker" }, Zl = {
1143
1143
  T.icon ? {
1144
1144
  name: "icon",
1145
1145
  fn: y(() => [
1146
- w(a(Me), {
1146
+ w(a(Pe), {
1147
1147
  name: T.icon
1148
1148
  }, null, 8, ["name"])
1149
1149
  ]),
1150
1150
  key: "0"
1151
1151
  } : void 0
1152
1152
  ]), 1032, ["class", "type", "variant", "loading", "disabled", "href", "target", "rel", "onClick"]))), 128)),
1153
- v.value.length > 0 ? (m(), S(Fe, {
1153
+ v.value.length > 0 ? (m(), S(Oe, {
1154
1154
  key: 0,
1155
1155
  actions: v.value,
1156
1156
  size: "lg",
@@ -1159,7 +1159,7 @@ const Ql = { class: "wx-link-picker" }, Zl = {
1159
1159
  ])) : N("", !0)
1160
1160
  ], 10, da));
1161
1161
  }
1162
- }), pt = /* @__PURE__ */ G(va, [["__scopeId", "data-v-e27d184e"]]), pa = ["data-wx-fill"], ha = /* @__PURE__ */ M({
1162
+ }), pt = /* @__PURE__ */ G(va, [["__scopeId", "data-v-9ebd5372"]]), pa = ["data-wx-fill"], ha = /* @__PURE__ */ M({
1163
1163
  __name: "ListScreen",
1164
1164
  props: /* @__PURE__ */ ne({
1165
1165
  title: { default: void 0 },
@@ -1178,7 +1178,7 @@ const Ql = { class: "wx-link-picker" }, Zl = {
1178
1178
  }),
1179
1179
  emits: ["update:view"],
1180
1180
  setup(e) {
1181
- const t = re(e, "view");
1181
+ const t = ue(e, "view");
1182
1182
  return (l, n) => (m(), $("div", {
1183
1183
  class: oe(["wx-list-screen", { "is-fill": e.fill }]),
1184
1184
  "data-wx-fill": e.fill ? "" : void 0
@@ -1201,7 +1201,7 @@ const Ql = { class: "wx-link-picker" }, Zl = {
1201
1201
  key: "0"
1202
1202
  } : void 0
1203
1203
  ]), 1032, ["title", "subtitle", "back", "back-label", "actions"])) : N("", !0),
1204
- e.views && e.views.length > 0 ? (m(), S(a(Dt), {
1204
+ e.views && e.views.length > 0 ? (m(), S(a(Ot), {
1205
1205
  key: 1,
1206
1206
  modelValue: t.value,
1207
1207
  "onUpdate:modelValue": n[0] || (n[0] = (o) => t.value = o),
@@ -1211,7 +1211,7 @@ const Ql = { class: "wx-link-picker" }, Zl = {
1211
1211
  "aria-label": e.title
1212
1212
  }, {
1213
1213
  default: y(() => [
1214
- e.card ? (m(), S(a(Re), {
1214
+ e.card ? (m(), S(a(Ue), {
1215
1215
  key: 0,
1216
1216
  class: "wx-list-screen__card",
1217
1217
  padding: e.padding
@@ -1224,7 +1224,7 @@ const Ql = { class: "wx-link-picker" }, Zl = {
1224
1224
  ]),
1225
1225
  _: 3
1226
1226
  }, 8, ["modelValue", "items", "collapse-below", "aria-label"])) : (m(), $(j, { key: 2 }, [
1227
- e.card ? (m(), S(a(Re), {
1227
+ e.card ? (m(), S(a(Ue), {
1228
1228
  key: 0,
1229
1229
  class: "wx-list-screen__card",
1230
1230
  padding: e.padding
@@ -1242,7 +1242,7 @@ const Ql = { class: "wx-link-picker" }, Zl = {
1242
1242
  inheritAttrs: !1,
1243
1243
  __name: "RichTextField",
1244
1244
  setup(e) {
1245
- const t = J(), l = D("webx-admin"), n = g(() => t.pickImage ?? void 0), o = g(() => ({
1245
+ const t = J(), l = O("webx-admin"), n = g(() => t.pickImage ?? void 0), o = g(() => ({
1246
1246
  bold: l("rich-text.bold"),
1247
1247
  italic: l("rich-text.italic"),
1248
1248
  strike: l("rich-text.strike"),
@@ -1275,14 +1275,14 @@ const Ql = { class: "wx-link-picker" }, Zl = {
1275
1275
  cancel: l("rich-text.cancel"),
1276
1276
  uploading: l("rich-text.uploading")
1277
1277
  }));
1278
- return (i, s) => (m(), S(a(Ot), et(i.$attrs, {
1278
+ return (i, s) => (m(), S(a(Dt), tt(i.$attrs, {
1279
1279
  labels: o.value,
1280
1280
  "pick-image": n.value
1281
1281
  }), null, 16, ["labels", "pick-image"]));
1282
1282
  }
1283
1283
  }), gt = /* @__PURE__ */ Symbol("wx-record-address");
1284
1284
  function ya(e) {
1285
- ze(gt, e);
1285
+ Ee(gt, e);
1286
1286
  }
1287
1287
  function ba() {
1288
1288
  return se(gt, null);
@@ -1303,13 +1303,13 @@ const wa = { class: "wx-slug" }, xa = { class: "wx-slug__prefix" }, ka = /* @__P
1303
1303
  return typeof s == "string" && o.value !== "" && `${n.value}${o.value}` != `/${s}`;
1304
1304
  });
1305
1305
  return (s, r) => (m(), $("div", wa, [
1306
- w(a(Te), Ct(Wt(s.$attrs)), {
1306
+ w(a(Se), Ct(Wt(s.$attrs)), {
1307
1307
  prefix: y(() => [
1308
1308
  B("span", xa, A(n.value), 1)
1309
1309
  ]),
1310
1310
  _: 1
1311
1311
  }, 16),
1312
- i.value && a(t) ? (m(), S(a(Se), {
1312
+ i.value && a(t) ? (m(), S(a(Ce), {
1313
1313
  key: 0,
1314
1314
  type: "info",
1315
1315
  variant: "soft",
@@ -1317,7 +1317,7 @@ const wa = { class: "wx-slug" }, xa = { class: "wx-slug__prefix" }, ka = /* @__P
1317
1317
  }, null, 8, ["description"])) : N("", !0)
1318
1318
  ]));
1319
1319
  }
1320
- }), Ge = /* @__PURE__ */ G(ka, [["__scopeId", "data-v-5921c0dd"]]), _a = {
1320
+ }), Je = /* @__PURE__ */ G(ka, [["__scopeId", "data-v-5921c0dd"]]), _a = {
1321
1321
  "wx-list": { component: ht, kind: "layout", labelProp: "title" },
1322
1322
  // Full width: an editor shares a row with nothing, and a form of two columns would give it
1323
1323
  // half a line to write a page of text in.
@@ -1331,8 +1331,8 @@ const wa = { class: "wx-slug" }, xa = { class: "wx-slug__prefix" }, ka = /* @__P
1331
1331
  // Wide: a row carries a picture, a name with a line under it and a mark, and the search box
1332
1332
  // under the list reads titles.
1333
1333
  "wx-relations": { component: mt, kind: "field", wide: !0 },
1334
- "wx-slug": { component: Ge, kind: "field" },
1335
- "wx-category-slug": { component: Ge, kind: "field" }
1334
+ "wx-slug": { component: Je, kind: "field" },
1335
+ "wx-category-slug": { component: Je, kind: "field" }
1336
1336
  }, yt = /* @__PURE__ */ Symbol("webx-admin");
1337
1337
  function J() {
1338
1338
  const e = se(yt, null);
@@ -1471,7 +1471,7 @@ const Ca = /* @__PURE__ */ M({
1471
1471
  landing: { default: null }
1472
1472
  },
1473
1473
  setup(e) {
1474
- const t = e, l = J(), n = _e(), o = D("webx-admin"), i = g(() => {
1474
+ const t = e, l = J(), n = $e(), o = O("webx-admin"), i = g(() => {
1475
1475
  const s = l.nav.value;
1476
1476
  return s.length === 0 ? null : ((t.landing === null ? void 0 : s.find((u) => u.path === t.landing)) ?? s[0])?.path ?? null;
1477
1477
  });
@@ -1495,7 +1495,7 @@ const Ca = /* @__PURE__ */ M({
1495
1495
  },
1496
1496
  emits: ["select"],
1497
1497
  setup(e, { emit: t }) {
1498
- const l = t, n = J(), o = D("webx-admin"), i = _e(), s = st(), r = g({
1498
+ const l = t, n = J(), o = O("webx-admin"), i = $e(), s = st(), r = g({
1499
1499
  /*
1500
1500
  * The longest path that contains this one, on a segment boundary: a section may live inside
1501
1501
  * another's path (`/services/categories` under `/services`), and the first match in the order
@@ -1553,10 +1553,10 @@ const Ca = /* @__PURE__ */ M({
1553
1553
  }, La = {
1554
1554
  key: 2,
1555
1555
  class: "wx-root wx-admin-plain"
1556
- }, Na = ["src", "alt", "width", "height"], Ra = ["src", "alt", "width", "height"], Ua = ["src", "alt"], za = { class: "wx-admin__user" }, Ia = { class: "wx-admin__user wx-admin__user--drawer" }, Ea = /* @__PURE__ */ M({
1556
+ }, Na = ["src", "alt", "width", "height"], Ra = ["src", "alt", "width", "height"], Ua = ["src", "alt"], za = { class: "wx-admin__user" }, Ea = { class: "wx-admin__user wx-admin__user--drawer" }, Ia = /* @__PURE__ */ M({
1557
1557
  __name: "AdminShell",
1558
1558
  setup(e) {
1559
- const t = J(), l = D("webx-admin"), n = L(null), { width: o, layout: i, collapsed: s, showAside: r, drawerOpen: u, toggle: d, close: h } = jt(
1559
+ const t = J(), l = O("webx-admin"), n = L(null), { width: o, layout: i, collapsed: s, showAside: r, drawerOpen: u, toggle: d, close: h } = jt(
1560
1560
  n,
1561
1561
  { persist: "webx-admin-shell" }
1562
1562
  ), f = g(() => t.state.manifest?.title ?? ""), v = g(() => t.state.manifest?.branding?.logo ?? null), c = g(() => t.state.manifest?.branding?.mark ?? null), x = g(() => Kt(o.value, null));
@@ -1583,7 +1583,7 @@ const Ca = /* @__PURE__ */ M({
1583
1583
  default: y(() => [
1584
1584
  w(Q, {
1585
1585
  type: "primary",
1586
- onClick: b[0] || (b[0] = (I) => a(t).reload())
1586
+ onClick: b[0] || (b[0] = (E) => a(t).reload())
1587
1587
  }, {
1588
1588
  default: y(() => [
1589
1589
  z(A(a(l)("shell.retry")), 1)
@@ -1718,7 +1718,7 @@ const Ca = /* @__PURE__ */ M({
1718
1718
  }, 8, ["direction"]),
1719
1719
  w(U, {
1720
1720
  open: a(u),
1721
- "onUpdate:open": b[1] || (b[1] = (I) => at(u) ? u.value = I : null),
1721
+ "onUpdate:open": b[1] || (b[1] = (E) => nt(u) ? u.value = E : null),
1722
1722
  class: "wx-admin__drawer",
1723
1723
  title: f.value === "" ? a(l)("nav.menu") : f.value,
1724
1724
  side: "left",
@@ -1727,7 +1727,7 @@ const Ca = /* @__PURE__ */ M({
1727
1727
  closable: ""
1728
1728
  }, {
1729
1729
  footer: y(() => [
1730
- B("div", Ia, [
1730
+ B("div", Ea, [
1731
1731
  Y(p.$slots, "user", { expanded: !0 }, void 0, !0)
1732
1732
  ])
1733
1733
  ]),
@@ -1743,7 +1743,7 @@ const Ca = /* @__PURE__ */ M({
1743
1743
  ], 64);
1744
1744
  };
1745
1745
  }
1746
- }), Ba = /* @__PURE__ */ G(Ea, [["__scopeId", "data-v-819885ab"]]), Ma = "webx.theme", bt = /* @__PURE__ */ Symbol("webx-theme");
1746
+ }), Ba = /* @__PURE__ */ G(Ia, [["__scopeId", "data-v-819885ab"]]), Ma = "webx.theme", bt = /* @__PURE__ */ Symbol("webx-theme");
1747
1747
  function In() {
1748
1748
  const e = se(bt, null);
1749
1749
  if (e === null)
@@ -1755,7 +1755,7 @@ function Pa(e, t) {
1755
1755
  }
1756
1756
  function Fa(e = {}) {
1757
1757
  const t = e.storageKey === void 0 ? Ma : e.storageKey, l = be({
1758
- preference: Da(t) ?? "system",
1758
+ preference: Oa(t) ?? "system",
1759
1759
  resolved: "light"
1760
1760
  });
1761
1761
  function n() {
@@ -1766,24 +1766,24 @@ function Fa(e = {}) {
1766
1766
  }), {
1767
1767
  state: l,
1768
1768
  set(o) {
1769
- l.preference = o, n(), Je(t, o);
1769
+ l.preference = o, n(), Qe(t, o);
1770
1770
  },
1771
1771
  adopt(o) {
1772
1772
  if (o === void 0)
1773
1773
  return;
1774
1774
  const i = o ?? "system";
1775
- i !== l.preference && (l.preference = i, n(), Je(t, i));
1775
+ i !== l.preference && (l.preference = i, n(), Qe(t, i));
1776
1776
  }
1777
1777
  };
1778
1778
  }
1779
- function Je(e, t) {
1779
+ function Qe(e, t) {
1780
1780
  if (e !== null)
1781
1781
  try {
1782
1782
  localStorage.setItem(e, t);
1783
1783
  } catch {
1784
1784
  }
1785
1785
  }
1786
- function Da(e) {
1786
+ function Oa(e) {
1787
1787
  if (e === null)
1788
1788
  return null;
1789
1789
  try {
@@ -2053,7 +2053,7 @@ const wt = {
2053
2053
  "collection-related-current-hint": "On the page of a record of “:target” the block shows what is related to it; on any other page it shows nothing."
2054
2054
  }
2055
2055
  }, xt = "webx.locale";
2056
- function En(e = {}) {
2056
+ function Bn(e = {}) {
2057
2057
  const t = e.manifestUrl ?? Ya() ?? "/api/cms/manifest", l = e.apiPath ?? t.replace(/\/manifest\/?$/, ""), n = e.basePath ?? "/cms", o = e.modules ?? [], i = [...e.routes ?? []];
2058
2058
  for (const b of o)
2059
2059
  i.push(...b.routes ?? []);
@@ -2069,7 +2069,7 @@ function En(e = {}) {
2069
2069
  const s = Rt({
2070
2070
  history: Ut(n),
2071
2071
  routes: i
2072
- }), r = Pe({ locale: e.locale ?? Ha() }), u = Fa(), d = e.http ?? bl({
2072
+ }), r = Fe({ locale: e.locale ?? Ha() }), u = Fa(), d = e.http ?? bl({
2073
2073
  baseUrl: "",
2074
2074
  csrfUrl: `${l}/auth/csrf-cookie`,
2075
2075
  onUnauthenticated: () => {
@@ -2097,7 +2097,7 @@ function En(e = {}) {
2097
2097
  types: e.types,
2098
2098
  screens: e.screens,
2099
2099
  loadManifest: async () => (await d.get(t)).data
2100
- }), v = Lt(Oa(e));
2100
+ }), v = Lt(Da(e));
2101
2101
  v.use(Yt), Ta(v, f), cl(v, r), Pa(v, u);
2102
2102
  const c = L("");
2103
2103
  v.provide(
@@ -2136,7 +2136,7 @@ function En(e = {}) {
2136
2136
  b.install(x);
2137
2137
  return v.use(s), x;
2138
2138
  }
2139
- function Oa(e) {
2139
+ function Da(e) {
2140
2140
  const t = {
2141
2141
  // The menu is the panel's own: it is the manifest, drawn.
2142
2142
  // The shell hands in what a choice means where it drew the menu — in the drawer it is what
@@ -2184,14 +2184,14 @@ function Xa(e) {
2184
2184
  const u = [];
2185
2185
  for (n += 1; n < t.length && !/^```\s*$/.test(t[n] ?? ""); )
2186
2186
  u.push(t[n] ?? ""), n += 1;
2187
- n += 1, l.push(`<pre><code>${Ue(u.join(`
2187
+ n += 1, l.push(`<pre><code>${ze(u.join(`
2188
2188
  `))}</code></pre>`);
2189
2189
  continue;
2190
2190
  }
2191
2191
  const s = /^(#{1,4})\s+(.*)$/.exec(o);
2192
2192
  if (s) {
2193
2193
  const u = Math.min(s[1].length + 1, 5);
2194
- l.push(`<h${u}>${Le(s[2] ?? "")}</h${u}>`), n += 1;
2194
+ l.push(`<h${u}>${Ne(s[2] ?? "")}</h${u}>`), n += 1;
2195
2195
  continue;
2196
2196
  }
2197
2197
  if (he(o)) {
@@ -2204,7 +2204,7 @@ function Xa(e) {
2204
2204
  d[d.length - 1] += ` ${f.trim()}`, n += 1;
2205
2205
  }
2206
2206
  const h = u ? "ol" : "ul";
2207
- l.push(`<${h}>${d.map((f) => `<li>${Le(f)}</li>`).join("")}</${h}>`);
2207
+ l.push(`<${h}>${d.map((f) => `<li>${Ne(f)}</li>`).join("")}</${h}>`);
2208
2208
  continue;
2209
2209
  }
2210
2210
  const r = [];
@@ -2213,7 +2213,7 @@ function Xa(e) {
2213
2213
  if (u.trim() === "" || he(u) || /^(#{1,4})\s/.test(u) || /^```/.test(u)) break;
2214
2214
  r.push(u.trim()), n += 1;
2215
2215
  }
2216
- l.push(`<p>${Le(r.join(" "))}</p>`);
2216
+ l.push(`<p>${Ne(r.join(" "))}</p>`);
2217
2217
  }
2218
2218
  return l.join("");
2219
2219
  }
@@ -2221,9 +2221,9 @@ const pe = "\0";
2221
2221
  function he(e) {
2222
2222
  return /^\s*(?:[-*+]|\d+[.)])\s+/.test(e);
2223
2223
  }
2224
- function Le(e) {
2225
- const t = [], l = e.replace(/`([^`]+)`/g, (o, i) => (t.push(`<code>${Ue(i)}</code>`), `${pe}${t.length - 1}${pe}`));
2226
- return Ue(l).replace(
2224
+ function Ne(e) {
2225
+ const t = [], l = e.replace(/`([^`]+)`/g, (o, i) => (t.push(`<code>${ze(i)}</code>`), `${pe}${t.length - 1}${pe}`));
2226
+ return ze(l).replace(
2227
2227
  /\[([^\]]+)\]\((https?:\/\/[^\s)]+)\)/g,
2228
2228
  '<a href="$2" target="_blank" rel="noopener">$1</a>'
2229
2229
  ).replace(/\*\*([^*]+)\*\*/g, "<strong>$1</strong>").replace(
@@ -2231,7 +2231,7 @@ function Le(e) {
2231
2231
  (o, i) => t[Number(i)] ?? ""
2232
2232
  );
2233
2233
  }
2234
- function Ue(e) {
2234
+ function ze(e) {
2235
2235
  return e.replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;").replace(/"/g, "&quot;");
2236
2236
  }
2237
2237
  function Ga(e) {
@@ -2247,7 +2247,7 @@ function Ga(e) {
2247
2247
  const s = ye(i);
2248
2248
  if (s === null)
2249
2249
  return t("dates.never");
2250
- const r = /* @__PURE__ */ new Date(), u = Qe(s, r);
2250
+ const r = /* @__PURE__ */ new Date(), u = Ze(s, r);
2251
2251
  return u === 0 ? t("dates.today", { time: o(s) }) : u === -1 ? t("dates.yesterday", { time: o(s) }) : s.getFullYear() === r.getFullYear() ? n(
2252
2252
  "this-year",
2253
2253
  {
@@ -2265,7 +2265,7 @@ function Ga(e) {
2265
2265
  if (s === null)
2266
2266
  return t("dates.never");
2267
2267
  const r = /* @__PURE__ */ new Date();
2268
- return Qe(s, r) === 0 ? o(s) : s.getFullYear() === r.getFullYear() ? n("compact", { day: "numeric", month: "short" }, s) : n("compact-earlier", { dateStyle: "short" }, s);
2268
+ return Ze(s, r) === 0 ? o(s) : s.getFullYear() === r.getFullYear() ? n("compact", { day: "numeric", month: "short" }, s) : n("compact-earlier", { dateStyle: "short" }, s);
2269
2269
  },
2270
2270
  exact(i) {
2271
2271
  const s = ye(i);
@@ -2278,12 +2278,12 @@ function Ga(e) {
2278
2278
  };
2279
2279
  }
2280
2280
  function kt() {
2281
- const e = se(Ce, null);
2281
+ const e = se(We, null);
2282
2282
  return Ga(e ?? Ja());
2283
2283
  }
2284
2284
  let ge = null;
2285
2285
  function Ja() {
2286
- return ge === null && (ge = Pe(), ge.defaults("webx-admin", wt)), ge;
2286
+ return ge === null && (ge = Fe(), ge.defaults("webx-admin", wt)), ge;
2287
2287
  }
2288
2288
  function ye(e) {
2289
2289
  if (e == null || e === "")
@@ -2291,7 +2291,7 @@ function ye(e) {
2291
2291
  const t = e instanceof Date ? e : new Date(e);
2292
2292
  return Number.isNaN(t.getTime()) ? null : t;
2293
2293
  }
2294
- function Qe(e, t) {
2294
+ function Ze(e, t) {
2295
2295
  const l = (n) => Date.UTC(n.getFullYear(), n.getMonth(), n.getDate());
2296
2296
  return Math.round((l(e) - l(t)) / 864e5);
2297
2297
  }
@@ -2310,7 +2310,7 @@ function Qa(e, t, l) {
2310
2310
  return n !== null && n >= 500 ? t("errors.server") : n === null ? t("errors.offline") : l ?? t("errors.unknown");
2311
2311
  }
2312
2312
  function De() {
2313
- const e = D("webx-admin");
2313
+ const e = O("webx-admin");
2314
2314
  return (t, l) => Qa(t, e, l);
2315
2315
  }
2316
2316
  function Za(e) {
@@ -2321,7 +2321,13 @@ function en(e) {
2321
2321
  const l = e?.body?.message;
2322
2322
  return typeof l == "string" && l !== "" ? l : null;
2323
2323
  }
2324
- function tn(e, t, l) {
2324
+ function tn(e) {
2325
+ function t(l) {
2326
+ (l.target === document.body || l.target === document.documentElement) && e(l);
2327
+ }
2328
+ _e(() => window.addEventListener("keydown", t)), Be(() => window.removeEventListener("keydown", t));
2329
+ }
2330
+ function ln(e, t, l) {
2325
2331
  const n = `${e.apiPath}/entities/${t}/${l}/notes`, o = (s) => `${e.apiPath}/notes/${s}`, i = (s) => s.data;
2326
2332
  return {
2327
2333
  list: () => e.http.get(n).then(i),
@@ -2332,17 +2338,17 @@ function tn(e, t, l) {
2332
2338
  };
2333
2339
  }
2334
2340
  const _t = /* @__PURE__ */ Symbol("wx-category-editor");
2335
- function ln(e) {
2336
- ze(_t, e);
2341
+ function an(e) {
2342
+ Ee(_t, e);
2337
2343
  }
2338
- function Bn() {
2344
+ function Mn() {
2339
2345
  return se(_t, null);
2340
2346
  }
2341
- function an(e) {
2347
+ function nn(e) {
2342
2348
  return (e.q ?? "").trim() !== "" || e.filtered ? "locked" : e.category == null ? "all" : "category";
2343
2349
  }
2344
- function Mn(e, t) {
2345
- const l = J(), n = D("webx-admin"), o = g(() => an(t()));
2350
+ function Pn(e, t) {
2351
+ const l = J(), n = O("webx-admin"), o = g(() => nn(t()));
2346
2352
  return {
2347
2353
  mode: o,
2348
2354
  sortable: g(() => o.value !== "locked"),
@@ -2350,19 +2356,19 @@ function Mn(e, t) {
2350
2356
  move: (i) => fl(l, e, i, o.value === "category" ? t().category ?? null : null)
2351
2357
  };
2352
2358
  }
2353
- function Oe(e = {}) {
2354
- const t = D("webx-admin");
2359
+ function He(e = {}) {
2360
+ const t = O("webx-admin");
2355
2361
  return (l, n) => t(e[l] ?? `webx-admin::categories.${l}`, n);
2356
2362
  }
2357
- const nn = /* @__PURE__ */ M({
2363
+ const on = /* @__PURE__ */ M({
2358
2364
  name: "WxCategoryCreateDialog",
2359
2365
  __name: "CategoryCreateDialog",
2360
2366
  props: {
2361
2367
  options: {}
2362
2368
  },
2363
2369
  setup(e) {
2364
- const t = e, { open: l, resolve: n, dismiss: o } = Jt(), i = ve(J(), t.options.api), s = Oe(t.options.words), r = L(""), u = L(!1), d = L({}), h = lt("field");
2365
- Ee(async () => {
2370
+ const t = e, { open: l, resolve: n, dismiss: o } = Jt(), i = ve(J(), t.options.api), s = He(t.options.words), r = L(""), u = L(!1), d = L({}), h = at("field");
2371
+ _e(async () => {
2366
2372
  await Ie(), h.value?.querySelector("input")?.focus();
2367
2373
  });
2368
2374
  function f(c) {
@@ -2383,7 +2389,7 @@ const nn = /* @__PURE__ */ M({
2383
2389
  }
2384
2390
  return (c, x) => (m(), S(a(rt), {
2385
2391
  open: a(l),
2386
- "onUpdate:open": x[2] || (x[2] = (p) => at(l) ? l.value = p : null),
2392
+ "onUpdate:open": x[2] || (x[2] = (p) => nt(l) ? l.value = p : null),
2387
2393
  title: a(s)("new"),
2388
2394
  width: 440
2389
2395
  }, {
@@ -2425,11 +2431,11 @@ const nn = /* @__PURE__ */ M({
2425
2431
  ref_key: "field",
2426
2432
  ref: h
2427
2433
  }, [
2428
- w(a(Te), {
2434
+ w(a(Se), {
2429
2435
  modelValue: r.value,
2430
2436
  "onUpdate:modelValue": x[0] || (x[0] = (p) => r.value = p),
2431
2437
  "aria-label": a(s)("field-title"),
2432
- onKeyup: nt(v, ["enter"])
2438
+ onKeyup: ot(v, ["enter"])
2433
2439
  }, null, 8, ["modelValue", "aria-label"])
2434
2440
  ], 512)
2435
2441
  ]),
@@ -2439,16 +2445,16 @@ const nn = /* @__PURE__ */ M({
2439
2445
  _: 1
2440
2446
  }, 8, ["open", "title"]));
2441
2447
  }
2442
- }), on = { class: "wx-category-row__name" }, sn = /* @__PURE__ */ M({
2448
+ }), sn = { class: "wx-category-row__name" }, rn = /* @__PURE__ */ M({
2443
2449
  name: "WxCategoriesPage",
2444
2450
  __name: "CategoriesPage",
2445
2451
  props: {
2446
2452
  options: {}
2447
2453
  },
2448
2454
  setup(e) {
2449
- const t = e, l = J(), n = ve(l, t.options.api), o = _e(), i = Oe(t.options.words), s = De(), r = L([]), u = L(!0), d = L(!0), h = g(() => l.can(t.options.manage)), f = g(
2455
+ const t = e, l = J(), n = ve(l, t.options.api), o = $e(), i = He(t.options.words), s = De(), r = L([]), u = L(!0), d = L(!0), h = g(() => l.can(t.options.manage)), f = g(
2450
2456
  () => l.state.manifest?.modules.find((V) => V.id === t.options.module)?.title ?? ""
2451
- ), v = el(nn), c = g(
2457
+ ), v = el(on), c = g(
2452
2458
  () => h.value ? [{ key: "new", label: i("new"), icon: "plus", primary: !0, run: () => {
2453
2459
  T();
2454
2460
  } }] : []
@@ -2537,7 +2543,7 @@ const nn = /* @__PURE__ */ M({
2537
2543
  title: a(i)("empty"),
2538
2544
  description: a(i)("empty-help")
2539
2545
  }, null, 8, ["title", "description"])) : (m(), $(j, { key: 2 }, [
2540
- w(a(Be), {
2546
+ w(a(Me), {
2541
2547
  modelValue: r.value,
2542
2548
  "onUpdate:modelValue": k[0] || (k[0] = (_) => r.value = _),
2543
2549
  class: "wx-categories__list",
@@ -2553,7 +2559,7 @@ const nn = /* @__PURE__ */ M({
2553
2559
  to: `${t.options.path}/${_.id}`
2554
2560
  }, {
2555
2561
  default: y(() => [
2556
- B("span", on, [
2562
+ B("span", sn, [
2557
2563
  w(a(ee), {
2558
2564
  truncate: "",
2559
2565
  weight: "medium"
@@ -2568,7 +2574,7 @@ const nn = /* @__PURE__ */ M({
2568
2574
  content: a(i)("hidden")
2569
2575
  }, {
2570
2576
  default: y(() => [
2571
- w(a(Me), {
2577
+ w(a(Pe), {
2572
2578
  name: "eye-off",
2573
2579
  size: "sm"
2574
2580
  })
@@ -2602,14 +2608,14 @@ const nn = /* @__PURE__ */ M({
2602
2608
  ]),
2603
2609
  _: 2
2604
2610
  }, 1024),
2605
- w(Fe, {
2611
+ w(Oe, {
2606
2612
  actions: Q(_),
2607
2613
  label: _.name
2608
2614
  }, null, 8, ["actions", "label"])
2609
2615
  ]),
2610
2616
  _: 1
2611
2617
  }, 8, ["modelValue", "item-label", "disabled"]),
2612
- w(a(Se), {
2618
+ w(a(Ce), {
2613
2619
  class: "wx-categories__note",
2614
2620
  type: "info",
2615
2621
  description: a(i)("order")
@@ -2620,18 +2626,18 @@ const nn = /* @__PURE__ */ M({
2620
2626
  }, 8, ["title", "actions"]);
2621
2627
  };
2622
2628
  }
2623
- }), rn = {
2629
+ }), un = {
2624
2630
  class: "wx-save-state",
2625
2631
  role: "status",
2626
2632
  "aria-live": "polite"
2627
- }, un = /* @__PURE__ */ M({
2633
+ }, dn = /* @__PURE__ */ M({
2628
2634
  __name: "SaveState",
2629
2635
  props: {
2630
2636
  state: {},
2631
2637
  linger: { default: 2e3 }
2632
2638
  },
2633
2639
  setup(e) {
2634
- const t = e, l = D("webx-admin"), n = L(!1);
2640
+ const t = e, l = O("webx-admin"), n = L(!1);
2635
2641
  let o = null;
2636
2642
  te(
2637
2643
  () => t.state,
@@ -2644,10 +2650,10 @@ const nn = /* @__PURE__ */ M({
2644
2650
  const i = g(
2645
2651
  () => t.state === "saving" ? "saving" : n.value ? "saved" : null
2646
2652
  );
2647
- return ot(() => {
2653
+ return Be(() => {
2648
2654
  o !== null && clearTimeout(o);
2649
- }), (s, r) => (m(), $("span", rn, [
2650
- i.value ? (m(), S(a(Me), {
2655
+ }), (s, r) => (m(), $("span", un, [
2656
+ i.value ? (m(), S(a(Pe), {
2651
2657
  key: 0,
2652
2658
  class: oe(["wx-save-state__mark", { "is-saved": i.value === "saved" }]),
2653
2659
  name: i.value === "saving" ? "loader" : "check",
@@ -2656,7 +2662,7 @@ const nn = /* @__PURE__ */ M({
2656
2662
  }, null, 8, ["class", "name", "spin", "label"])) : N("", !0)
2657
2663
  ]));
2658
2664
  }
2659
- }), dn = /* @__PURE__ */ G(un, [["__scopeId", "data-v-216e5e44"]]), cn = { class: "wx-screen-host" }, mn = /* @__PURE__ */ M({
2665
+ }), cn = /* @__PURE__ */ G(dn, [["__scopeId", "data-v-216e5e44"]]), mn = { class: "wx-screen-host" }, fn = /* @__PURE__ */ M({
2660
2666
  __name: "Screen",
2661
2667
  props: /* @__PURE__ */ ne({
2662
2668
  name: {},
@@ -2671,7 +2677,7 @@ const nn = /* @__PURE__ */ M({
2671
2677
  }),
2672
2678
  emits: /* @__PURE__ */ ne(["loaded"], ["update:modelValue"]),
2673
2679
  setup(e, { expose: t, emit: l }) {
2674
- const n = e, o = l, i = re(e, "modelValue"), s = J(), r = D("webx-admin"), u = L(null), d = L(null);
2680
+ const n = e, o = l, i = ue(e, "modelValue"), s = J(), r = O("webx-admin"), u = L(null), d = L(null);
2675
2681
  async function h() {
2676
2682
  u.value = null, d.value = null;
2677
2683
  try {
@@ -2683,8 +2689,8 @@ const nn = /* @__PURE__ */ M({
2683
2689
  }
2684
2690
  return te([() => n.name, () => s.i18n.state.locale], () => {
2685
2691
  h();
2686
- }, { immediate: !0 }), t({ reload: h }), (f, v) => (m(), $("div", cn, [
2687
- d.value ? (m(), S(a(Se), {
2692
+ }, { immediate: !0 }), t({ reload: h }), (f, v) => (m(), $("div", mn, [
2693
+ d.value ? (m(), S(a(Ce), {
2688
2694
  key: 0,
2689
2695
  type: "danger",
2690
2696
  title: a(r)("shell.error-title"),
@@ -2709,34 +2715,34 @@ const nn = /* @__PURE__ */ M({
2709
2715
  }, null, 8, ["modelValue", "root", "patch", "types", "errors", "translate", "can", "disabled", "label-position", "label-width", "size"]))
2710
2716
  ]));
2711
2717
  }
2712
- }), fn = /* @__PURE__ */ M({
2718
+ }), vn = /* @__PURE__ */ M({
2713
2719
  name: "WxCategoryEditorPage",
2714
2720
  __name: "CategoryEditorPage",
2715
2721
  props: {
2716
2722
  options: {}
2717
2723
  },
2718
2724
  setup(e) {
2719
- const t = e, l = J(), n = ve(l, t.options.api), o = st(), i = _e(), s = it(), r = Oe(t.options.words), u = De(), d = g(() => Number(o.params.id)), h = g(() => t.options.path), f = L(null), v = L({}), c = L(null), x = L(""), p = L(!0), b = L(!1), T = L({}), F = g(() => l.can(t.options.manage)), Q = g(() => JSON.stringify(v.value)), H = g(() => x.value !== "" && Q.value !== x.value), V = g(() => b.value ? "saving" : H.value ? "unsaved" : "saved"), k = g(
2720
- () => l.state.manifest?.modules.find((E) => E.id === t.options.module)?.title ?? ""
2725
+ const t = e, l = J(), n = ve(l, t.options.api), o = st(), i = $e(), s = it(), r = He(t.options.words), u = De(), d = g(() => Number(o.params.id)), h = g(() => t.options.path), f = L(null), v = L({}), c = L(null), x = L(""), p = L(!0), b = L(!1), T = L({}), F = g(() => l.can(t.options.manage)), Q = g(() => JSON.stringify(v.value)), H = g(() => x.value !== "" && Q.value !== x.value), V = g(() => b.value ? "saving" : H.value ? "unsaved" : "saved"), k = g(
2726
+ () => l.state.manifest?.modules.find((I) => I.id === t.options.module)?.title ?? ""
2721
2727
  ), C = g(() => {
2722
- const E = v.value.title;
2723
- return tl(E, s.active.value, f.value?.name ?? "") || r("untitled");
2728
+ const I = v.value.title;
2729
+ return tl(I, s.active.value, f.value?.name ?? "") || r("untitled");
2724
2730
  });
2725
- ln({ category: f, values: v, prefix: c, moving: () => r("address-moving") }), ya({
2731
+ an({ category: f, values: v, prefix: c, moving: () => r("address-moving") }), ya({
2726
2732
  values: v,
2727
2733
  prefix: c,
2728
2734
  path: g(() => f.value?.path),
2729
2735
  moving: () => r("address-moving")
2730
2736
  });
2731
- function _(E) {
2732
- f.value = E.category, v.value = E.values, c.value = E.prefix, x.value = JSON.stringify(E.values);
2737
+ function _(I) {
2738
+ f.value = I.category, v.value = I.values, c.value = I.prefix, x.value = JSON.stringify(I.values);
2733
2739
  }
2734
2740
  async function q() {
2735
2741
  p.value = !0;
2736
2742
  try {
2737
2743
  _(await n.get(d.value));
2738
- } catch (E) {
2739
- K.danger(u(E)), i.push(h.value);
2744
+ } catch (I) {
2745
+ K.danger(u(I)), i.push(h.value);
2740
2746
  } finally {
2741
2747
  p.value = !1;
2742
2748
  }
@@ -2746,41 +2752,41 @@ const nn = /* @__PURE__ */ M({
2746
2752
  b.value = !0, T.value = {};
2747
2753
  try {
2748
2754
  _(await n.save(f.value.id, v.value)), K.success(r("saved"));
2749
- } catch (E) {
2750
- const Z = E.body;
2751
- Z?.errors ? (T.value = Z.errors, K.danger(r("save-failed"))) : K.danger(u(E));
2755
+ } catch (I) {
2756
+ const Z = I.body;
2757
+ Z?.errors ? (T.value = Z.errors, K.danger(r("save-failed"))) : K.danger(u(I));
2752
2758
  } finally {
2753
2759
  b.value = !1;
2754
2760
  }
2755
2761
  }
2756
2762
  }
2757
2763
  async function U() {
2758
- const E = f.value;
2759
- if (!(!E || !await xe({
2760
- title: r("delete-title", { name: E.name }),
2764
+ const I = f.value;
2765
+ if (!(!I || !await xe({
2766
+ title: r("delete-title", { name: I.name }),
2761
2767
  message: r("delete-text"),
2762
2768
  confirmText: r("delete"),
2763
2769
  cancelText: r("cancel"),
2764
2770
  tone: "danger"
2765
2771
  })))
2766
2772
  try {
2767
- await n.remove(E.id), K.success(r("deleted")), x.value = Q.value, i.push(h.value);
2773
+ await n.remove(I.id), K.success(r("deleted")), x.value = Q.value, i.push(h.value);
2768
2774
  } catch (W) {
2769
2775
  K.danger(u(W));
2770
2776
  }
2771
2777
  }
2772
- function I(E) {
2773
- H.value && E.preventDefault();
2778
+ function E(I) {
2779
+ H.value && I.preventDefault();
2774
2780
  }
2775
- function de(E) {
2776
- (E.ctrlKey || E.metaKey) && E.key.toLowerCase() === "s" && (E.preventDefault(), H.value && R());
2781
+ function ie(I) {
2782
+ (I.ctrlKey || I.metaKey) && I.key.toLowerCase() === "s" && (I.preventDefault(), H.value && R());
2777
2783
  }
2778
- te(d, () => {
2784
+ tn(ie), te(d, () => {
2779
2785
  q();
2780
- }), Ee(() => {
2781
- q(), window.addEventListener("beforeunload", I);
2782
- }), ot(() => {
2783
- window.removeEventListener("beforeunload", I);
2786
+ }), _e(() => {
2787
+ q(), window.addEventListener("beforeunload", E);
2788
+ }), Be(() => {
2789
+ window.removeEventListener("beforeunload", E);
2784
2790
  }), zt(async () => !H.value || !F.value ? !0 : await xe({
2785
2791
  title: r("leave-title"),
2786
2792
  message: r("leave-text"),
@@ -2788,9 +2794,9 @@ const nn = /* @__PURE__ */ M({
2788
2794
  cancelText: r("cancel"),
2789
2795
  tone: "danger"
2790
2796
  }));
2791
- const ie = g(() => {
2792
- const E = f.value, Z = [];
2793
- return E && (E.url && E.is_visible && Z.push({ key: "site", label: r("open-on-site"), icon: "link", href: E.url }), F.value && Z.push({
2797
+ const re = g(() => {
2798
+ const I = f.value, Z = [];
2799
+ return I && (I.url && I.is_visible && Z.push({ key: "site", label: r("open-on-site"), icon: "link", href: I.url }), F.value && Z.push({
2794
2800
  key: "delete",
2795
2801
  label: r("delete"),
2796
2802
  icon: "trash",
@@ -2801,9 +2807,9 @@ const nn = /* @__PURE__ */ M({
2801
2807
  }
2802
2808
  })), Z;
2803
2809
  });
2804
- return (E, Z) => (m(), $("div", {
2810
+ return (I, Z) => (m(), $("div", {
2805
2811
  class: "wx-category-editor",
2806
- onKeydown: de
2812
+ onKeydown: ie
2807
2813
  }, [
2808
2814
  p.value || !f.value ? (m(), $(j, { key: 0 }, [
2809
2815
  w(a(me), {
@@ -2811,7 +2817,7 @@ const nn = /* @__PURE__ */ M({
2811
2817
  title: "",
2812
2818
  rows: 1
2813
2819
  }),
2814
- w(a(Re), null, {
2820
+ w(a(Ue), null, {
2815
2821
  default: y(() => [
2816
2822
  w(a(me), { rows: 6 })
2817
2823
  ]),
@@ -2824,7 +2830,7 @@ const nn = /* @__PURE__ */ M({
2824
2830
  "back-label": k.value,
2825
2831
  title: C.value,
2826
2832
  subtitle: f.value.path === null ? void 0 : `/${f.value.path}`,
2827
- actions: ie.value
2833
+ actions: re.value
2828
2834
  }, ke({
2829
2835
  trail: y(() => [
2830
2836
  w(a(ll), {
@@ -2832,7 +2838,7 @@ const nn = /* @__PURE__ */ M({
2832
2838
  label: a(r)("trail")
2833
2839
  }, {
2834
2840
  default: y(() => [
2835
- w(a(je), {
2841
+ w(a(Ke), {
2836
2842
  as: "router-link",
2837
2843
  to: h.value
2838
2844
  }, {
@@ -2841,7 +2847,7 @@ const nn = /* @__PURE__ */ M({
2841
2847
  ]),
2842
2848
  _: 1
2843
2849
  }, 8, ["to"]),
2844
- w(a(je), { current: "" }, {
2850
+ w(a(Ke), { current: "" }, {
2845
2851
  default: y(() => [
2846
2852
  z(A(C.value), 1)
2847
2853
  ]),
@@ -2856,7 +2862,7 @@ const nn = /* @__PURE__ */ M({
2856
2862
  f.value.is_visible ? void 0 : {
2857
2863
  name: "title-after",
2858
2864
  fn: y(() => [
2859
- w(a($e), { dot: "" }, {
2865
+ w(a(Te), { dot: "" }, {
2860
2866
  default: y(() => [
2861
2867
  z(A(a(r)("hidden")), 1)
2862
2868
  ]),
@@ -2866,7 +2872,7 @@ const nn = /* @__PURE__ */ M({
2866
2872
  key: "0"
2867
2873
  }
2868
2874
  ]), 1032, ["back", "back-label", "title", "subtitle", "actions"]),
2869
- w(mn, {
2875
+ w(fn, {
2870
2876
  modelValue: v.value,
2871
2877
  "onUpdate:modelValue": Z[0] || (Z[0] = (W) => v.value = W),
2872
2878
  name: t.options.screen,
@@ -2875,7 +2881,7 @@ const nn = /* @__PURE__ */ M({
2875
2881
  }, null, 8, ["modelValue", "name", "errors", "disabled"]),
2876
2882
  F.value ? (m(), S(a(al), { key: 0 }, {
2877
2883
  state: y(() => [
2878
- w(dn, { state: V.value }, null, 8, ["state"])
2884
+ w(cn, { state: V.value }, null, 8, ["state"])
2879
2885
  ]),
2880
2886
  default: y(() => [
2881
2887
  w(a(le), {
@@ -2895,30 +2901,30 @@ const nn = /* @__PURE__ */ M({
2895
2901
  ], 64))
2896
2902
  ], 32));
2897
2903
  }
2898
- }), vn = /* @__PURE__ */ G(fn, [["__scopeId", "data-v-86d85f8c"]]);
2899
- function Ze(e, t) {
2904
+ }), pn = /* @__PURE__ */ G(vn, [["__scopeId", "data-v-b9c461a6"]]);
2905
+ function et(e, t) {
2900
2906
  return M({
2901
2907
  name: "WxCategoriesView",
2902
2908
  setup: () => () => ce(e, { options: t })
2903
2909
  });
2904
2910
  }
2905
- function Pn(e) {
2911
+ function Fn(e) {
2906
2912
  return [
2907
- { path: e.path, name: e.name, component: Ze(sn, e) },
2913
+ { path: e.path, name: e.name, component: et(rn, e) },
2908
2914
  {
2909
2915
  path: `${e.path}/:id(\\d+)`,
2910
2916
  name: `${e.name}.edit`,
2911
- component: Ze(vn, e)
2917
+ component: et(pn, e)
2912
2918
  }
2913
2919
  ];
2914
2920
  }
2915
- const Fn = 76, Dn = /* @__PURE__ */ M({
2921
+ const On = 76, Dn = /* @__PURE__ */ M({
2916
2922
  __name: "FilterChips",
2917
2923
  props: {
2918
2924
  filters: {}
2919
2925
  },
2920
2926
  setup(e) {
2921
- return (t, l) => (m(!0), $(j, null, ae(e.filters, (n) => (m(), S(a($e), {
2927
+ return (t, l) => (m(!0), $(j, null, ae(e.filters, (n) => (m(), S(a(Te), {
2922
2928
  key: n.key,
2923
2929
  class: "wx-filter-chip",
2924
2930
  size: "sm",
@@ -2932,7 +2938,7 @@ const Fn = 76, Dn = /* @__PURE__ */ M({
2932
2938
  _: 2
2933
2939
  }, 1032, ["onClose"]))), 128));
2934
2940
  }
2935
- }), pn = { class: "wx-rename__footer" }, hn = /* @__PURE__ */ M({
2941
+ }), hn = { class: "wx-rename__footer" }, gn = /* @__PURE__ */ M({
2936
2942
  __name: "RenameButton",
2937
2943
  props: {
2938
2944
  name: { default: "" },
@@ -2943,7 +2949,7 @@ const Fn = 76, Dn = /* @__PURE__ */ M({
2943
2949
  },
2944
2950
  emits: ["rename"],
2945
2951
  setup(e, { emit: t }) {
2946
- const l = e, n = t, o = D("webx-admin"), i = L(!1), s = L(l.name), r = L(null), u = g(() => l.label ?? o("editor.rename"));
2952
+ const l = e, n = t, o = O("webx-admin"), i = L(!1), s = L(l.name), r = L(null), u = g(() => l.label ?? o("editor.rename"));
2947
2953
  te(i, async (h) => {
2948
2954
  h && (s.value = l.name, await Ie(), r.value?.focus(), r.value?.select());
2949
2955
  });
@@ -2965,7 +2971,7 @@ const Fn = 76, Dn = /* @__PURE__ */ M({
2965
2971
  teleport: ""
2966
2972
  }, {
2967
2973
  trigger: y(() => [
2968
- w(a(ue), {
2974
+ w(a(de), {
2969
2975
  type: "edit",
2970
2976
  title: u.value,
2971
2977
  size: e.size,
@@ -2975,18 +2981,18 @@ const Fn = 76, Dn = /* @__PURE__ */ M({
2975
2981
  default: y(() => [
2976
2982
  B("form", {
2977
2983
  class: "wx-rename",
2978
- onSubmit: tt(d, ["prevent"])
2984
+ onSubmit: lt(d, ["prevent"])
2979
2985
  }, [
2980
- w(a(Te), {
2986
+ w(a(Se), {
2981
2987
  ref_key: "field",
2982
2988
  ref: r,
2983
2989
  modelValue: s.value,
2984
2990
  "onUpdate:modelValue": f[0] || (f[0] = (v) => s.value = v),
2985
2991
  "aria-label": u.value,
2986
2992
  placeholder: e.placeholder,
2987
- onKeydown: f[1] || (f[1] = nt((v) => i.value = !1, ["esc"]))
2993
+ onKeydown: f[1] || (f[1] = ot((v) => i.value = !1, ["esc"]))
2988
2994
  }, null, 8, ["modelValue", "aria-label", "placeholder"]),
2989
- B("div", pn, [
2995
+ B("div", hn, [
2990
2996
  w(a(le), {
2991
2997
  type: "primary",
2992
2998
  size: "sm",
@@ -3003,7 +3009,7 @@ const Fn = 76, Dn = /* @__PURE__ */ M({
3003
3009
  _: 1
3004
3010
  }, 8, ["open", "title"]));
3005
3011
  }
3006
- }), On = /* @__PURE__ */ G(hn, [["__scopeId", "data-v-d879e8d3"]]), gn = ["innerHTML"], yn = /* @__PURE__ */ M({
3012
+ }), Hn = /* @__PURE__ */ G(gn, [["__scopeId", "data-v-d879e8d3"]]), yn = ["innerHTML"], bn = /* @__PURE__ */ M({
3007
3013
  __name: "HelpButton",
3008
3014
  props: {
3009
3015
  body: {},
@@ -3013,9 +3019,9 @@ const Fn = 76, Dn = /* @__PURE__ */ M({
3013
3019
  width: { default: 720 }
3014
3020
  },
3015
3021
  setup(e) {
3016
- const t = e, l = D("webx-admin"), n = L(!1), o = g(() => t.title ?? l("help.title")), i = g(() => Xa(t.body));
3022
+ const t = e, l = O("webx-admin"), n = L(!1), o = g(() => t.title ?? l("help.title")), i = g(() => Xa(t.body));
3017
3023
  return (s, r) => (m(), $(j, null, [
3018
- w(a(ue), {
3024
+ w(a(de), {
3019
3025
  type: "details",
3020
3026
  icon: "question",
3021
3027
  tone: "neutral",
@@ -3033,13 +3039,13 @@ const Fn = 76, Dn = /* @__PURE__ */ M({
3033
3039
  B("div", {
3034
3040
  class: "wx-help",
3035
3041
  innerHTML: i.value
3036
- }, null, 8, gn)
3042
+ }, null, 8, yn)
3037
3043
  ]),
3038
3044
  _: 1
3039
3045
  }, 8, ["open", "title", "width"])
3040
3046
  ], 64));
3041
3047
  }
3042
- }), Hn = /* @__PURE__ */ G(yn, [["__scopeId", "data-v-6c280d42"]]), $t = /* @__PURE__ */ M({
3048
+ }), jn = /* @__PURE__ */ G(bn, [["__scopeId", "data-v-6c280d42"]]), $t = /* @__PURE__ */ M({
3043
3049
  name: "WxDate",
3044
3050
  __name: "DateText",
3045
3051
  props: {
@@ -3079,16 +3085,16 @@ const Fn = 76, Dn = /* @__PURE__ */ M({
3079
3085
  _: 1
3080
3086
  }, 8, ["size", "tone"]));
3081
3087
  }
3082
- }), bn = { class: "wx-notes" }, wn = {
3088
+ }), wn = { class: "wx-notes" }, xn = {
3083
3089
  key: 3,
3084
3090
  class: "wx-notes__list"
3085
- }, xn = { class: "wx-note__body" }, kn = { class: "wx-note__head" }, _n = { class: "wx-note__buttons" }, $n = {
3091
+ }, kn = { class: "wx-note__body" }, _n = { class: "wx-note__head" }, $n = { class: "wx-note__buttons" }, Tn = {
3086
3092
  key: 1,
3087
3093
  class: "wx-note__text"
3088
- }, Tn = {
3094
+ }, Sn = {
3089
3095
  key: 4,
3090
3096
  class: "wx-notes__new"
3091
- }, Sn = /* @__PURE__ */ M({
3097
+ }, Cn = /* @__PURE__ */ M({
3092
3098
  name: "WxNotes",
3093
3099
  __name: "NotesFeed",
3094
3100
  props: {
@@ -3099,7 +3105,7 @@ const Fn = 76, Dn = /* @__PURE__ */ M({
3099
3105
  },
3100
3106
  emits: ["change"],
3101
3107
  setup(e, { emit: t }) {
3102
- const l = e, n = t, o = J(), i = D("webx-admin"), s = De(), r = L([]), u = L(!0), d = L(""), h = L(!1), f = L(null), v = L(""), c = g(() => tn(o, l.type, l.id)), x = g(() => l.title ?? i("notes.title"));
3108
+ const l = e, n = t, o = J(), i = O("webx-admin"), s = De(), r = L([]), u = L(!0), d = L(""), h = L(!1), f = L(null), v = L(""), c = g(() => ln(o, l.type, l.id)), x = g(() => l.title ?? i("notes.title"));
3103
3109
  async function p() {
3104
3110
  u.value = !0;
3105
3111
  try {
@@ -3174,7 +3180,7 @@ const Fn = 76, Dn = /* @__PURE__ */ M({
3174
3180
  function V(k) {
3175
3181
  return k.author?.name ?? i("notes.unknown-author");
3176
3182
  }
3177
- return (k, C) => (m(), $("section", bn, [
3183
+ return (k, C) => (m(), $("section", wn, [
3178
3184
  x.value ? (m(), S(a(ee), {
3179
3185
  key: 0,
3180
3186
  weight: "medium",
@@ -3192,7 +3198,7 @@ const Fn = 76, Dn = /* @__PURE__ */ M({
3192
3198
  key: 2,
3193
3199
  size: "sm",
3194
3200
  description: a(i)("notes.empty")
3195
- }, null, 8, ["description"])) : (m(), $("ul", wn, [
3201
+ }, null, 8, ["description"])) : (m(), $("ul", xn, [
3196
3202
  (m(!0), $(j, null, ae(r.value, (_) => (m(), $("li", {
3197
3203
  key: _.id,
3198
3204
  class: "wx-note"
@@ -3202,8 +3208,8 @@ const Fn = 76, Dn = /* @__PURE__ */ M({
3202
3208
  size: "sm",
3203
3209
  tone: "auto"
3204
3210
  }, null, 8, ["name"]),
3205
- B("div", xn, [
3206
- B("div", kn, [
3211
+ B("div", kn, [
3212
+ B("div", _n, [
3207
3213
  w(a(ee), {
3208
3214
  size: "sm",
3209
3215
  weight: "medium",
@@ -3217,18 +3223,18 @@ const Fn = 76, Dn = /* @__PURE__ */ M({
3217
3223
  w($t, {
3218
3224
  value: _.created_at
3219
3225
  }, null, 8, ["value"]),
3220
- w(Fe, {
3226
+ w(Oe, {
3221
3227
  actions: H(_),
3222
3228
  label: V(_)
3223
3229
  }, null, 8, ["actions", "label"])
3224
3230
  ]),
3225
3231
  f.value === _.id ? (m(), $(j, { key: 0 }, [
3226
- w(a(Ke), {
3232
+ w(a(qe), {
3227
3233
  modelValue: v.value,
3228
3234
  "onUpdate:modelValue": C[0] || (C[0] = (q) => v.value = q),
3229
3235
  autosize: { minRows: 2, maxRows: 10 }
3230
3236
  }, null, 8, ["modelValue"]),
3231
- B("div", _n, [
3237
+ B("div", $n, [
3232
3238
  w(a(le), {
3233
3239
  size: "sm",
3234
3240
  type: "primary",
@@ -3250,12 +3256,12 @@ const Fn = 76, Dn = /* @__PURE__ */ M({
3250
3256
  _: 1
3251
3257
  })
3252
3258
  ])
3253
- ], 64)) : (m(), $("p", $n, A(_.body), 1))
3259
+ ], 64)) : (m(), $("p", Tn, A(_.body), 1))
3254
3260
  ])
3255
3261
  ]))), 128))
3256
3262
  ])),
3257
- e.can ? (m(), $("div", Tn, [
3258
- w(a(Ke), {
3263
+ e.can ? (m(), $("div", Sn, [
3264
+ w(a(qe), {
3259
3265
  modelValue: d.value,
3260
3266
  "onUpdate:modelValue": C[2] || (C[2] = (_) => d.value = _),
3261
3267
  placeholder: a(i)("notes.placeholder"),
@@ -3276,18 +3282,18 @@ const Fn = 76, Dn = /* @__PURE__ */ M({
3276
3282
  ])) : N("", !0)
3277
3283
  ]));
3278
3284
  }
3279
- }), jn = /* @__PURE__ */ G(Sn, [["__scopeId", "data-v-71004c1a"]]), Cn = {
3285
+ }), Kn = /* @__PURE__ */ G(Cn, [["__scopeId", "data-v-71004c1a"]]), Wn = {
3280
3286
  key: 1,
3281
3287
  class: "wx-backup-note"
3282
- }, Wn = 48, An = /* @__PURE__ */ M({
3288
+ }, An = 48, Vn = /* @__PURE__ */ M({
3283
3289
  name: "WxBackupNote",
3284
3290
  __name: "BackupNote",
3285
3291
  setup(e) {
3286
- const t = J(), l = kt(), n = D("webx-admin"), o = g(() => t.state.manifest?.backup ?? null), i = g(() => o.value !== null && t.can("settings.view")), s = g(() => {
3292
+ const t = J(), l = kt(), n = O("webx-admin"), o = g(() => t.state.manifest?.backup ?? null), i = g(() => o.value !== null && t.can("settings.view")), s = g(() => {
3287
3293
  const d = o.value?.at;
3288
3294
  if (d == null) return !0;
3289
3295
  const h = new Date(d).getTime();
3290
- return Number.isNaN(h) || Date.now() - h > Wn * 36e5;
3296
+ return Number.isNaN(h) || Date.now() - h > An * 36e5;
3291
3297
  }), r = g(() => {
3292
3298
  const d = o.value?.bytes;
3293
3299
  if (d == null) return "";
@@ -3304,12 +3310,12 @@ const Fn = 76, Dn = /* @__PURE__ */ M({
3304
3310
  }), u = g(
3305
3311
  () => o.value?.at == null ? n("backup.never") : n("backup.stale", { date: l.short(o.value.at) })
3306
3312
  );
3307
- return (d, h) => i.value && s.value ? (m(), S(a(Se), {
3313
+ return (d, h) => i.value && s.value ? (m(), S(a(Ce), {
3308
3314
  key: 0,
3309
3315
  type: "warning",
3310
3316
  variant: "soft",
3311
3317
  description: u.value
3312
- }, null, 8, ["description"])) : i.value ? (m(), $("p", Cn, [
3318
+ }, null, 8, ["description"])) : i.value ? (m(), $("p", Wn, [
3313
3319
  w(a(ee), {
3314
3320
  size: "sm",
3315
3321
  tone: "muted"
@@ -3334,7 +3340,7 @@ const Fn = 76, Dn = /* @__PURE__ */ M({
3334
3340
  })) : N("", !0)
3335
3341
  ])) : N("", !0);
3336
3342
  }
3337
- }), Kn = /* @__PURE__ */ G(An, [["__scopeId", "data-v-beeee67e"]]);
3343
+ }), qn = /* @__PURE__ */ G(Vn, [["__scopeId", "data-v-beeee67e"]]);
3338
3344
  export {
3339
3345
  Ca as AdminLanding,
3340
3346
  Wa as AdminNav,
@@ -3342,72 +3348,73 @@ export {
3342
3348
  ft as COLLECTION_MAX_LIMIT,
3343
3349
  fe as HttpError,
3344
3350
  ia as WxBackButton,
3345
- Kn as WxBackupNote,
3351
+ qn as WxBackupNote,
3346
3352
  gl as WxCategoriesField,
3347
- sn as WxCategoriesPage,
3348
- nn as WxCategoryCreateDialog,
3349
- vn as WxCategoryEditorPage,
3350
- Ge as WxCategorySlug,
3353
+ rn as WxCategoriesPage,
3354
+ on as WxCategoryCreateDialog,
3355
+ pn as WxCategoryEditorPage,
3356
+ Je as WxCategorySlug,
3351
3357
  Xl as WxCollectionField,
3352
3358
  $t as WxDate,
3353
3359
  Dn as WxFilterChips,
3354
- Hn as WxHelpButton,
3360
+ jn as WxHelpButton,
3355
3361
  sa as WxLinkField,
3356
3362
  oa as WxLinkPicker,
3357
3363
  ht as WxListScreen,
3358
- jn as WxNotes,
3364
+ Kn as WxNotes,
3359
3365
  mt as WxRelationsField,
3360
- On as WxRenameButton,
3366
+ Hn as WxRenameButton,
3361
3367
  ga as WxRichTextField,
3362
- Fe as WxRowMenu,
3363
- dn as WxSaveState,
3364
- mn as WxScreen,
3368
+ Oe as WxRowMenu,
3369
+ cn as WxSaveState,
3370
+ fn as WxScreen,
3365
3371
  pt as WxScreenHead,
3366
- Ge as WxSlugField,
3372
+ Je as WxSlugField,
3367
3373
  yt as adminKey,
3368
3374
  wt as adminMessages,
3369
3375
  _a as adminTypes,
3370
- Pn as categoryRoutes,
3376
+ Fn as categoryRoutes,
3371
3377
  Nl as collectionSources,
3372
- En as createAdmin,
3378
+ Bn as createAdmin,
3373
3379
  $a as createAdminContext,
3374
3380
  ve as createCategoriesApi,
3375
3381
  Ga as createDates,
3376
3382
  bl as createHttp,
3377
- Pe as createI18n,
3383
+ Fe as createI18n,
3378
3384
  Jl as createLinksApi,
3379
- tn as createNotesApi,
3385
+ ln as createNotesApi,
3380
3386
  kl as createRelationsApi,
3381
3387
  Fa as createTheme,
3382
- Xe as defaultMarkup,
3388
+ Ge as defaultMarkup,
3383
3389
  Gl as emptyLink,
3384
3390
  Qa as errorText,
3385
- Ce as i18nKey,
3386
- an as itemOrderMode,
3387
- Ye as normaliseCollection,
3391
+ We as i18nKey,
3392
+ nn as itemOrderMode,
3393
+ Xe as normaliseCollection,
3388
3394
  _l as normaliseRelations,
3389
3395
  Ta as provideAdmin,
3390
3396
  cl as provideI18n,
3391
3397
  ya as provideRecordAddress,
3392
- zn as provideRelationOwner,
3398
+ En as provideRelationOwner,
3393
3399
  Pa as provideTheme,
3394
- qe as readCookie,
3400
+ Ye as readCookie,
3395
3401
  gt as recordAddressKey,
3396
3402
  ct as relationOwnerKey,
3397
3403
  Xa as renderMarkdown,
3398
3404
  fl as reorderItems,
3399
- Fn as rowMenuWidth,
3405
+ On as rowMenuWidth,
3400
3406
  bt as themeKey,
3401
3407
  J as useAdmin,
3402
- Bn as useCategoryEditor,
3403
- Oe as useCategoryWords,
3408
+ tn as useBodyKeys,
3409
+ Mn as useCategoryEditor,
3410
+ He as useCategoryWords,
3404
3411
  kt as useDates,
3405
3412
  De as useErrorText,
3406
3413
  dl as useI18n,
3407
- Mn as useItemOrder,
3414
+ Pn as useItemOrder,
3408
3415
  ba as useRecordAddress,
3409
3416
  $l as useRelationOwner,
3410
3417
  In as useTheme,
3411
- D as useTranslate
3418
+ O as useTranslate
3412
3419
  };
3413
3420
  //# sourceMappingURL=index.js.map