@webx-ui/module-blocks 0.5.3 → 0.6.0

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,29 +1,29 @@
1
- import { defineComponent as Q, computed as B, openBlock as i, createElementBlock as V, createVNode as u, unref as e, createElementVNode as S, createTextVNode as $, toDisplayString as m, Fragment as j, createCommentVNode as I, renderList as te, ref as U, onMounted as Te, watch as ie, createBlock as W, withCtx as p, normalizeStyle as ce, reactive as je, onBeforeUnmount as Je, resolveComponent as ft, isRef as vt, normalizeClass as be, withKeys as et, withModifiers as tt, provide as mt, inject as Ne, useModel as Ut, getCurrentInstance as Nt, mergeModels as Pt } from "vue";
2
- import { useRoute as Mt, useRouter as ht } from "vue-router";
3
- import { useTranslate as le, useAdmin as Be, useErrorText as Ce, WxDate as Ot, WxScreenHead as Dt, WxRenameButton as Rt, WxHelpButton as jt, WxRowMenu as Ht, adminKey as Ft, WxListScreen as qt } from "@webx-ui/module-admin";
4
- import { WxIcon as oe, WxSkeleton as he, WxText as R, WxBadge as q, WxButton as Y, confirm as Me, toast as H, useElementWidth as Ke, WxSegmented as bt, WxCard as ve, WxAlert as gt, WxTabs as Jt, WxTab as me, WxCodeEditor as Ie, WxFormItem as G, WxInput as ge, WxSelect as kt, WxTextarea as Kt, WxInputNumber as lt, WxTagsInput as nt, WxSwitch as Zt, WxActionBar as Gt, useModal as yt, WxDialog as wt, WxEmpty as _t, WxSortableList as Yt, createModal as xt, WxSpace as Qt, WxSkeletonItem as Ue } from "@webx-ui/core";
5
- import { WxScreenRenderer as $t, coreTypes as He } from "@webx-ui/schema";
6
- function ke(t) {
7
- const l = `${t.apiPath}/blocks`, s = (n) => n.data;
1
+ import { defineComponent as te, computed as T, openBlock as i, createElementBlock as x, createVNode as u, unref as e, createElementVNode as W, createTextVNode as E, toDisplayString as y, Fragment as j, createCommentVNode as z, renderList as ee, ref as N, onMounted as Ue, watch as fe, createBlock as L, withCtx as c, normalizeStyle as we, reactive as Ze, onBeforeUnmount as Xe, resolveComponent as kt, isRef as yt, normalizeClass as Be, nextTick as Rt, withKeys as st, withModifiers as it, provide as wt, inject as He, useModel as Ht, getCurrentInstance as jt, resolveDynamicComponent as Ft, mergeProps as qt, mergeModels as Jt } from "vue";
2
+ import { useRoute as Kt, useRouter as _t } from "vue-router";
3
+ import { useTranslate as re, useAdmin as Ie, useErrorText as Ne, WxDate as Zt, WxScreenHead as Gt, WxRenameButton as Yt, WxHelpButton as Qt, WxRowMenu as Xt, adminKey as el, WxListScreen as tl } from "@webx-ui/module-admin";
4
+ import { WxIcon as ve, WxSkeleton as Ce, WxText as F, WxBadge as Y, WxButton as ie, confirm as Fe, toast as J, useElementWidth as qe, WxSegmented as xt, WxCard as Se, WxAlert as $t, WxTabs as ll, WxTab as Ve, WxCodeEditor as De, WxFormItem as X, WxInput as Ee, WxSelect as Tt, WxTextarea as nl, WxInputNumber as rt, WxTagsInput as ut, WxSwitch as al, WxActionBar as ol, useModal as St, WxDialog as Vt, WxEmpty as Ct, WxAction as Le, WxSortableList as sl, createModal as Bt, WxDrawer as il, WxSpace as rl, WxSkeletonItem as Re } from "@webx-ui/core";
5
+ import { WxScreenRenderer as Et, coreTypes as Ge } from "@webx-ui/schema";
6
+ function We(t) {
7
+ const l = `${t.apiPath}/blocks`, o = (n) => n.data;
8
8
  return {
9
- list: () => t.http.get(l).then(s),
10
- catalog: () => t.http.get(`${l}/catalog`).then(s),
11
- get: (n) => t.http.get(`${l}/${n}`).then(s),
12
- create: (n) => t.http.post(l, n).then(s),
13
- update: (n, o) => t.http.put(`${l}/${n}`, o).then(s),
9
+ list: () => t.http.get(l).then(o),
10
+ catalog: () => t.http.get(`${l}/catalog`).then(o),
11
+ get: (n) => t.http.get(`${l}/${n}`).then(o),
12
+ create: (n) => t.http.post(l, n).then(o),
13
+ update: (n, s) => t.http.put(`${l}/${n}`, s).then(o),
14
14
  remove: (n) => t.http.delete(`${l}/${n}`),
15
- publish: (n) => t.http.post(`${l}/${n}/publish`, {}).then(s),
16
- render: (n, o = {}) => t.http.post(`${l}/${n}/render`, o).then(s),
17
- usage: (n) => t.http.get(`${l}/${n}/usage`).then(s),
18
- versions: (n) => t.http.get(`${l}/${n}/versions`).then(s),
19
- version: (n, o) => t.http.get(`${l}/${n}/versions/${o}`).then(s),
20
- restore: (n, o) => t.http.post(`${l}/${n}/versions/${o}/restore`, {}).then(s)
15
+ publish: (n) => t.http.post(`${l}/${n}/publish`, {}).then(o),
16
+ render: (n, s = {}) => t.http.post(`${l}/${n}/render`, s).then(o),
17
+ usage: (n) => t.http.get(`${l}/${n}/usage`).then(o),
18
+ versions: (n) => t.http.get(`${l}/${n}/versions`).then(o),
19
+ version: (n, s) => t.http.get(`${l}/${n}/versions/${s}`).then(o),
20
+ restore: (n, s) => t.http.post(`${l}/${n}/versions/${s}/restore`, {}).then(o)
21
21
  };
22
22
  }
23
- const Xt = { class: "wx-block-checks" }, el = {
23
+ const ul = { class: "wx-block-checks" }, cl = {
24
24
  key: 0,
25
25
  class: "wx-block-checks__line is-error"
26
- }, tl = /* @__PURE__ */ Q({
26
+ }, dl = /* @__PURE__ */ te({
27
27
  __name: "BlockChecks",
28
28
  props: {
29
29
  file: {},
@@ -32,50 +32,50 @@ const Xt = { class: "wx-block-checks" }, el = {
32
32
  error: {}
33
33
  },
34
34
  setup(t) {
35
- const l = t, s = le("webx-blocks"), n = B(() => l.lints.filter((r) => r.file === l.file)), o = B(() => {
36
- const r = new Set(n.value.map((v) => v.code)), a = [];
37
- return l.file === "template" && (r.has("no-marker") || a.push(s("checks.ok-marker")), r.has("variables-missing") || a.push(s("checks.ok-variables"))), l.file === "styles" && (r.has("stray-selectors") || a.push(s("checks.ok-prefix", { slug: l.slug })), r.has("bare-selectors") || a.push(s("checks.ok-bare")), r.has("media-query") || a.push(s("checks.ok-container"))), a;
35
+ const l = t, o = re("webx-blocks"), n = T(() => l.lints.filter((r) => r.file === l.file)), s = T(() => {
36
+ const r = new Set(n.value.map((h) => h.code)), a = [];
37
+ return l.file === "template" && (r.has("no-marker") || a.push(o("checks.ok-marker")), r.has("variables-missing") || a.push(o("checks.ok-variables"))), l.file === "styles" && (r.has("stray-selectors") || a.push(o("checks.ok-prefix", { slug: l.slug })), r.has("bare-selectors") || a.push(o("checks.ok-bare")), r.has("media-query") || a.push(o("checks.ok-container"))), a;
38
38
  });
39
- return (r, a) => (i(), V("div", Xt, [
40
- t.error ? (i(), V("div", el, [
41
- u(e(oe), { name: "close-circle" }),
42
- S("span", null, [
43
- $(m(t.error.message) + " ", 1),
44
- t.error.line !== null ? (i(), V(j, { key: 0 }, [
45
- $(" · " + m(e(s)("page.line", { line: t.error.line })), 1)
46
- ], 64)) : I("", !0),
47
- t.error.where ? (i(), V(j, { key: 1 }, [
48
- $(" · " + m(t.error.where), 1)
49
- ], 64)) : I("", !0)
39
+ return (r, a) => (i(), x("div", ul, [
40
+ t.error ? (i(), x("div", cl, [
41
+ u(e(ve), { name: "close-circle" }),
42
+ W("span", null, [
43
+ E(y(t.error.message) + " ", 1),
44
+ t.error.line !== null ? (i(), x(j, { key: 0 }, [
45
+ E(" · " + y(e(o)("page.line", { line: t.error.line })), 1)
46
+ ], 64)) : z("", !0),
47
+ t.error.where ? (i(), x(j, { key: 1 }, [
48
+ E(" · " + y(t.error.where), 1)
49
+ ], 64)) : z("", !0)
50
50
  ])
51
- ])) : I("", !0),
52
- (i(!0), V(j, null, te(n.value, (v) => (i(), V("div", {
53
- key: v.code,
51
+ ])) : z("", !0),
52
+ (i(!0), x(j, null, ee(n.value, (h) => (i(), x("div", {
53
+ key: h.code,
54
54
  class: "wx-block-checks__line is-warning"
55
55
  }, [
56
- u(e(oe), { name: "warning" }),
57
- S("span", null, [
58
- $(m(v.message) + " ", 1),
59
- v.line !== null ? (i(), V(j, { key: 0 }, [
60
- $(" · " + m(e(s)("page.line", { line: v.line })), 1)
61
- ], 64)) : I("", !0)
56
+ u(e(ve), { name: "warning" }),
57
+ W("span", null, [
58
+ E(y(h.message) + " ", 1),
59
+ h.line !== null ? (i(), x(j, { key: 0 }, [
60
+ E(" · " + y(e(o)("page.line", { line: h.line })), 1)
61
+ ], 64)) : z("", !0)
62
62
  ])
63
63
  ]))), 128)),
64
- (i(!0), V(j, null, te(o.value, (v) => (i(), V("div", {
65
- key: v,
64
+ (i(!0), x(j, null, ee(s.value, (h) => (i(), x("div", {
65
+ key: h,
66
66
  class: "wx-block-checks__line is-ok"
67
67
  }, [
68
- u(e(oe), { name: "check" }),
69
- S("span", null, m(v), 1)
68
+ u(e(ve), { name: "check" }),
69
+ W("span", null, y(h), 1)
70
70
  ]))), 128))
71
71
  ]));
72
72
  }
73
- }), X = (t, l) => {
74
- const s = t.__vccOpts || t;
75
- for (const [n, o] of l)
76
- s[n] = o;
77
- return s;
78
- }, at = /* @__PURE__ */ X(tl, [["__scopeId", "data-v-e56947a8"]]), ll = { class: "wx-block-history" }, nl = { class: "wx-block-history__number" }, al = { class: "wx-block-history__who" }, sl = /* @__PURE__ */ Q({
73
+ }), le = (t, l) => {
74
+ const o = t.__vccOpts || t;
75
+ for (const [n, s] of l)
76
+ o[n] = s;
77
+ return o;
78
+ }, ct = /* @__PURE__ */ le(dl, [["__scopeId", "data-v-e56947a8"]]), pl = { class: "wx-block-history" }, vl = { class: "wx-block-history__number" }, fl = { class: "wx-block-history__who" }, ml = /* @__PURE__ */ te({
79
79
  __name: "BlockHistory",
80
80
  props: {
81
81
  block: {},
@@ -83,212 +83,212 @@ const Xt = { class: "wx-block-checks" }, el = {
83
83
  },
84
84
  emits: ["restored"],
85
85
  setup(t, { emit: l }) {
86
- const s = t, n = l, o = Be(), r = ke(o), a = le("webx-blocks"), v = Ce(), A = U(null);
86
+ const o = t, n = l, s = Ie(), r = We(s), a = re("webx-blocks"), h = Ne(), I = N(null);
87
87
  async function d() {
88
- A.value = await r.versions(s.block.id);
88
+ I.value = await r.versions(o.block.id);
89
89
  }
90
- function y(c) {
91
- return s.block.draft?.number === c.number ? "draft" : s.block.published?.number === c.number ? "live" : "replaced";
90
+ function p(f) {
91
+ return o.block.draft?.number === f.number ? "draft" : o.block.published?.number === f.number ? "live" : "replaced";
92
92
  }
93
- async function g(c) {
94
- if (await Me({
95
- title: a("page.restore-title", { number: c.number }),
93
+ async function b(f) {
94
+ if (await Fe({
95
+ title: a("page.restore-title", { number: f.number }),
96
96
  message: a("page.restore-text"),
97
97
  confirmText: a("page.restore"),
98
98
  cancelText: a("page.cancel")
99
99
  }))
100
100
  try {
101
- const f = await r.restore(s.block.id, c.number);
102
- H.success(a("page.restored", { number: f.draft?.number ?? c.number })), n("restored", f), await d();
103
- } catch (f) {
104
- H.danger(v(f));
101
+ const B = await r.restore(o.block.id, f.number);
102
+ J.success(a("page.restored", { number: B.draft?.number ?? f.number })), n("restored", B), await d();
103
+ } catch (B) {
104
+ J.danger(h(B));
105
105
  }
106
106
  }
107
- return Te(d), ie(
108
- () => [s.block.draft?.number, s.block.published?.number],
107
+ return Ue(d), fe(
108
+ () => [o.block.draft?.number, o.block.published?.number],
109
109
  () => {
110
110
  d();
111
111
  }
112
- ), (c, T) => (i(), V("div", ll, [
113
- A.value === null ? (i(), W(e(he), {
112
+ ), (f, k) => (i(), x("div", pl, [
113
+ I.value === null ? (i(), L(e(Ce), {
114
114
  key: 0,
115
115
  class: "wx-block-history__ghost",
116
116
  rows: 3
117
- })) : (i(!0), V(j, { key: 1 }, te(A.value, (f) => (i(), V("div", {
118
- key: f.number,
117
+ })) : (i(!0), x(j, { key: 1 }, ee(I.value, (B) => (i(), x("div", {
118
+ key: B.number,
119
119
  class: "wx-block-history__row"
120
120
  }, [
121
- S("code", nl, m(e(a)("page.version", { number: f.number })), 1),
122
- S("div", al, [
123
- u(e(R), null, {
124
- default: p(() => [
125
- $(m(e(a)(`page.version-${y(f)}`)), 1)
121
+ W("code", vl, y(e(a)("page.version", { number: B.number })), 1),
122
+ W("div", fl, [
123
+ u(e(F), null, {
124
+ default: c(() => [
125
+ E(y(e(a)(`page.version-${p(B)}`)), 1)
126
126
  ]),
127
127
  _: 2
128
128
  }, 1024),
129
- u(e(R), {
129
+ u(e(F), {
130
130
  size: "sm",
131
131
  tone: "muted"
132
132
  }, {
133
- default: p(() => [
134
- f.created_at ? (i(), W(e(Ot), {
133
+ default: c(() => [
134
+ B.created_at ? (i(), L(e(Zt), {
135
135
  key: 0,
136
- value: f.created_at
137
- }, null, 8, ["value"])) : I("", !0),
138
- $(" · " + m(f.author ?? e(a)(`page.source-${f.source}`)) + " ", 1),
139
- f.comment ? (i(), V(j, { key: 1 }, [
140
- $(" · " + m(f.comment), 1)
141
- ], 64)) : I("", !0)
136
+ value: B.created_at
137
+ }, null, 8, ["value"])) : z("", !0),
138
+ E(" · " + y(B.author ?? e(a)(`page.source-${B.source}`)) + " ", 1),
139
+ B.comment ? (i(), x(j, { key: 1 }, [
140
+ E(" · " + y(B.comment), 1)
141
+ ], 64)) : z("", !0)
142
142
  ]),
143
143
  _: 2
144
144
  }, 1024)
145
145
  ]),
146
- y(f) === "draft" ? (i(), W(e(q), {
146
+ p(B) === "draft" ? (i(), L(e(Y), {
147
147
  key: 0,
148
148
  type: "warning",
149
149
  dot: ""
150
150
  }, {
151
- default: p(() => [
152
- $(m(e(a)("page.version-draft")), 1)
151
+ default: c(() => [
152
+ E(y(e(a)("page.version-draft")), 1)
153
153
  ]),
154
154
  _: 1
155
- })) : y(f) === "live" ? (i(), W(e(q), {
155
+ })) : p(B) === "live" ? (i(), L(e(Y), {
156
156
  key: 1,
157
157
  type: "success",
158
158
  dot: ""
159
159
  }, {
160
- default: p(() => [
161
- $(m(e(a)("page.version-live")), 1)
160
+ default: c(() => [
161
+ E(y(e(a)("page.version-live")), 1)
162
162
  ]),
163
163
  _: 1
164
- })) : I("", !0),
165
- t.canManage && y(f) === "replaced" ? (i(), W(e(Y), {
164
+ })) : z("", !0),
165
+ t.canManage && p(B) === "replaced" ? (i(), L(e(ie), {
166
166
  key: 2,
167
167
  size: "sm",
168
168
  variant: "outline",
169
- onClick: (x) => g(f)
169
+ onClick: (V) => b(B)
170
170
  }, {
171
- default: p(() => [
172
- $(m(e(a)("page.restore")), 1)
171
+ default: c(() => [
172
+ E(y(e(a)("page.restore")), 1)
173
173
  ]),
174
174
  _: 1
175
- }, 8, ["onClick"])) : I("", !0)
175
+ }, 8, ["onClick"])) : z("", !0)
176
176
  ]))), 128))
177
177
  ]));
178
178
  }
179
- }), ol = /* @__PURE__ */ X(sl, [["__scopeId", "data-v-42c6b7ad"]]), Se = "wx-preview-selected", Pe = "wx-preview-hover", st = "wx-preview-style";
180
- function Vt(t, l) {
179
+ }), hl = /* @__PURE__ */ le(ml, [["__scopeId", "data-v-42c6b7ad"]]), ze = "wx-preview-selected", je = "wx-preview-hover", dt = "wx-preview-style";
180
+ function Wt(t, l) {
181
181
  const n = (t.ownerDocument ?? t).createTreeWalker(
182
182
  t,
183
183
  128
184
184
  /* NodeFilter.SHOW_COMMENT */
185
185
  );
186
- let o = null;
186
+ let s = null;
187
187
  for (let r = n.nextNode(); r; r = n.nextNode()) {
188
188
  const a = r.data.trim();
189
- if (o === null && a === `wx:${l}`)
190
- o = r;
191
- else if (o !== null && a === `/wx:${l}`)
192
- return { start: o, end: r };
189
+ if (s === null && a === `wx:${l}`)
190
+ s = r;
191
+ else if (s !== null && a === `/wx:${l}`)
192
+ return { start: s, end: r };
193
193
  }
194
194
  return null;
195
195
  }
196
- function il(t, l, s) {
197
- const n = Vt(t, l);
196
+ function bl(t, l, o) {
197
+ const n = Wt(t, l);
198
198
  if (!n) return !1;
199
- const o = n.start.parentNode;
200
- if (!o) return !1;
199
+ const s = n.start.parentNode;
200
+ if (!s) return !1;
201
201
  const r = t.createElement("template");
202
- r.innerHTML = s;
202
+ r.innerHTML = o;
203
203
  const a = n.end.nextSibling;
204
- let v = n.start;
205
- for (; v; ) {
206
- const g = v.nextSibling, c = v === n.end;
207
- if (o.removeChild(v), c) break;
208
- v = g;
204
+ let h = n.start;
205
+ for (; h; ) {
206
+ const b = h.nextSibling, f = h === n.end;
207
+ if (s.removeChild(h), f) break;
208
+ h = b;
209
209
  }
210
- const A = r.content, d = Array.from(A.childNodes);
211
- o.insertBefore(A, a);
212
- const y = t.defaultView?.webx;
213
- if (y?.mount)
214
- for (const g of d)
215
- g.nodeType === 1 && y.mount(g);
210
+ const I = r.content, d = Array.from(I.childNodes);
211
+ s.insertBefore(I, a);
212
+ const p = t.defaultView?.webx;
213
+ if (p?.mount)
214
+ for (const b of d)
215
+ b.nodeType === 1 && p.mount(b);
216
216
  return !0;
217
217
  }
218
- function Ze(t, l) {
219
- const s = Vt(t, l);
220
- if (!s) return null;
221
- for (let n = s.start.nextSibling; n && n !== s.end; n = n.nextSibling)
218
+ function et(t, l) {
219
+ const o = Wt(t, l);
220
+ if (!o) return null;
221
+ for (let n = o.start.nextSibling; n && n !== o.end; n = n.nextSibling)
222
222
  if (n.nodeType === 1) return n;
223
223
  return null;
224
224
  }
225
- function Fe(t, l) {
226
- Ge(t);
227
- for (const n of Array.from(t.querySelectorAll(`.${Se}`)))
228
- n.classList.remove(Se);
225
+ function Ye(t, l) {
226
+ tt(t);
227
+ for (const n of Array.from(t.querySelectorAll(`.${ze}`)))
228
+ n.classList.remove(ze);
229
229
  if (l === null) return null;
230
- const s = Ze(t, l);
231
- return s?.classList.add(Se), s;
230
+ const o = et(t, l);
231
+ return o?.classList.add(ze), o;
232
232
  }
233
- function ot(t, l) {
234
- Ge(t);
235
- for (const s of Array.from(t.querySelectorAll(`.${Pe}`)))
236
- s.classList.remove(Pe);
237
- l !== null && Ze(t, l)?.classList.add(Pe);
233
+ function pt(t, l) {
234
+ tt(t);
235
+ for (const o of Array.from(t.querySelectorAll(`.${je}`)))
236
+ o.classList.remove(je);
237
+ l !== null && et(t, l)?.classList.add(je);
238
238
  }
239
- function it(t) {
239
+ function vt(t) {
240
240
  let l = t?.nodeType === 1 ? t : t?.parentElement ?? null;
241
241
  for (; l; ) {
242
- let s = 0;
242
+ let o = 0;
243
243
  for (let n = l.previousSibling; n; n = n.previousSibling) {
244
244
  if (n.nodeType !== 8) continue;
245
- const o = n.data.trim();
246
- if (o.startsWith("/wx:"))
247
- s += 1;
248
- else if (o.startsWith("wx:")) {
249
- if (s === 0) return o.slice(3);
250
- s -= 1;
245
+ const s = n.data.trim();
246
+ if (s.startsWith("/wx:"))
247
+ o += 1;
248
+ else if (s.startsWith("wx:")) {
249
+ if (o === 0) return s.slice(3);
250
+ o -= 1;
251
251
  }
252
252
  }
253
253
  l = l.parentElement;
254
254
  }
255
255
  return null;
256
256
  }
257
- function rl(t, l) {
258
- Ge(t);
259
- let s = null;
260
- function n(v) {
261
- v.preventDefault(), v.stopPropagation();
257
+ function gl(t, l) {
258
+ tt(t);
259
+ let o = null;
260
+ function n(h) {
261
+ h.preventDefault(), h.stopPropagation();
262
262
  }
263
- function o(v) {
264
- n(v), l.select(it(v.target));
263
+ function s(h) {
264
+ n(h), l.select(vt(h.target));
265
265
  }
266
- function r(v) {
267
- const A = it(v.target);
268
- A !== s && (s = A, ot(t, A));
266
+ function r(h) {
267
+ const I = vt(h.target);
268
+ I !== o && (o = I, pt(t, I));
269
269
  }
270
270
  function a() {
271
- s = null, ot(t, null);
271
+ o = null, pt(t, null);
272
272
  }
273
- return t.addEventListener("click", o, !0), t.addEventListener("auxclick", n, !0), t.addEventListener("submit", n, !0), t.addEventListener("dragstart", n, !0), t.addEventListener("mousemove", r, !0), t.addEventListener("mouseleave", a), {
273
+ return t.addEventListener("click", s, !0), t.addEventListener("auxclick", n, !0), t.addEventListener("submit", n, !0), t.addEventListener("dragstart", n, !0), t.addEventListener("mousemove", r, !0), t.addEventListener("mouseleave", a), {
274
274
  release() {
275
- t.removeEventListener("click", o, !0), t.removeEventListener("auxclick", n, !0), t.removeEventListener("submit", n, !0), t.removeEventListener("dragstart", n, !0), t.removeEventListener("mousemove", r, !0), t.removeEventListener("mouseleave", a);
275
+ t.removeEventListener("click", s, !0), t.removeEventListener("auxclick", n, !0), t.removeEventListener("submit", n, !0), t.removeEventListener("dragstart", n, !0), t.removeEventListener("mousemove", r, !0), t.removeEventListener("mouseleave", a);
276
276
  }
277
277
  };
278
278
  }
279
- function Ge(t) {
280
- if (t.getElementById(st)) return;
279
+ function tt(t) {
280
+ if (t.getElementById(dt)) return;
281
281
  const l = t.createElement("style");
282
- l.id = st, l.textContent = `.${Se}{outline:2px solid #427edd;outline-offset:-2px;}.${Pe}:not(.${Se}){outline:1px solid #427edd;outline-offset:-1px;cursor:pointer;}`, (t.head ?? t.documentElement).appendChild(l);
282
+ l.id = dt, l.textContent = `.${ze}{outline:2px solid #427edd;outline-offset:-2px;}.${je}:not(.${ze}){outline:1px solid #427edd;outline-offset:-1px;cursor:pointer;}`, (t.head ?? t.documentElement).appendChild(l);
283
283
  }
284
- function St(t) {
285
- const l = t.base ? `<base href="${rt(t.base)}">` : "", s = t.frame ? `<style>${t.frame}</style>` : "", n = t.script && t.runtime ? `<script src="${rt(t.runtime)}"><\/script><script>${t.script}<\/script>` : "";
286
- return `<!doctype html><html><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1">${l}<style>html,body{margin:0}body{container-type:inline-size}</style>${s}<style>${t.styles}</style></head><body>${t.html}${n}</body></html>`;
284
+ function At(t) {
285
+ const l = t.base ? `<base href="${ft(t.base)}">` : "", o = t.frame ? `<style>${t.frame}</style>` : "", n = t.script && t.runtime ? `<script src="${ft(t.runtime)}"><\/script><script>${t.script}<\/script>` : "";
286
+ return `<!doctype html><html><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1">${l}<style>html,body{margin:0}body{container-type:inline-size}</style>${o}<style>${t.styles}</style></head><body>${t.html}${n}</body></html>`;
287
287
  }
288
- function rt(t) {
288
+ function ft(t) {
289
289
  return t.replace(/&/g, "&amp;").replace(/"/g, "&quot;").replace(/</g, "&lt;");
290
290
  }
291
- const ul = { class: "wx-block-stage" }, cl = { class: "wx-block-stage__bar" }, dl = ["srcdoc", "title"], pl = /* @__PURE__ */ Q({
291
+ const kl = { class: "wx-block-stage" }, yl = { class: "wx-block-stage__bar" }, wl = ["srcdoc", "title"], _l = /* @__PURE__ */ te({
292
292
  __name: "BlockStage",
293
293
  props: {
294
294
  html: {},
@@ -298,12 +298,12 @@ const ul = { class: "wx-block-stage" }, cl = { class: "wx-block-stage__bar" }, d
298
298
  loading: { type: Boolean, default: !1 }
299
299
  },
300
300
  setup(t) {
301
- const l = t, s = le("webx-blocks"), n = B(() => [
302
- { value: 1280, label: s("page.width-desktop") },
303
- { value: 834, label: s("page.width-tablet") },
304
- { value: 390, label: s("page.width-phone") }
305
- ]), o = U(1280), r = U(null), a = U(null), v = Ke(r), A = U(360), d = B(() => v.value === 0 ? 1 : Math.min(1, v.value / o.value)), y = B(
306
- () => St({
301
+ const l = t, o = re("webx-blocks"), n = T(() => [
302
+ { value: 1280, label: o("page.width-desktop") },
303
+ { value: 834, label: o("page.width-tablet") },
304
+ { value: 390, label: o("page.width-phone") }
305
+ ]), s = N(1280), r = N(null), a = N(null), h = qe(r), I = N(360), d = T(() => h.value === 0 ? 1 : Math.min(1, h.value / s.value)), p = T(
306
+ () => At({
307
307
  html: l.html,
308
308
  styles: l.styles,
309
309
  script: l.script,
@@ -311,156 +311,156 @@ const ul = { class: "wx-block-stage" }, cl = { class: "wx-block-stage__bar" }, d
311
311
  base: typeof location > "u" ? null : location.origin + "/"
312
312
  })
313
313
  );
314
- function g() {
315
- const x = a.value?.contentDocument;
316
- x?.documentElement && (A.value = Math.max(120, x.documentElement.scrollHeight));
314
+ function b() {
315
+ const V = a.value?.contentDocument;
316
+ V?.documentElement && (I.value = Math.max(120, V.documentElement.scrollHeight));
317
317
  }
318
- function c() {
319
- g(), setTimeout(g, 300);
318
+ function f() {
319
+ b(), setTimeout(b, 300);
320
320
  }
321
- ie(o, () => setTimeout(g, 50));
322
- const T = B(() => ({
323
- width: `${o.value}px`,
324
- height: `${A.value}px`,
321
+ fe(s, () => setTimeout(b, 50));
322
+ const k = T(() => ({
323
+ width: `${s.value}px`,
324
+ height: `${I.value}px`,
325
325
  transform: `scale(${d.value})`
326
- })), f = B(() => ({
327
- width: `${Math.round(o.value * d.value)}px`,
328
- height: `${Math.round(A.value * d.value)}px`
326
+ })), B = T(() => ({
327
+ width: `${Math.round(s.value * d.value)}px`,
328
+ height: `${Math.round(I.value * d.value)}px`
329
329
  }));
330
- return (x, k) => (i(), V("div", ul, [
331
- S("div", cl, [
332
- u(e(bt), {
333
- modelValue: o.value,
334
- "onUpdate:modelValue": k[0] || (k[0] = (h) => o.value = h),
330
+ return (V, _) => (i(), x("div", kl, [
331
+ W("div", yl, [
332
+ u(e(xt), {
333
+ modelValue: s.value,
334
+ "onUpdate:modelValue": _[0] || (_[0] = (g) => s.value = g),
335
335
  options: n.value,
336
336
  size: "sm"
337
337
  }, null, 8, ["modelValue", "options"])
338
338
  ]),
339
- S("div", {
339
+ W("div", {
340
340
  ref_key: "box",
341
341
  ref: r,
342
342
  class: "wx-block-stage__ground"
343
343
  }, [
344
- t.loading && !t.html ? (i(), W(e(he), {
344
+ t.loading && !t.html ? (i(), L(e(Ce), {
345
345
  key: 0,
346
346
  rows: 3
347
- })) : (i(), V("div", {
347
+ })) : (i(), x("div", {
348
348
  key: 1,
349
349
  class: "wx-block-stage__clip",
350
- style: ce(f.value)
350
+ style: we(B.value)
351
351
  }, [
352
- S("iframe", {
352
+ W("iframe", {
353
353
  ref_key: "frame",
354
354
  ref: a,
355
355
  class: "wx-block-stage__frame",
356
- srcdoc: y.value,
357
- style: ce(T.value),
356
+ srcdoc: p.value,
357
+ style: we(k.value),
358
358
  sandbox: "allow-same-origin allow-scripts",
359
- title: e(s)("page.preview"),
360
- onLoad: c
361
- }, null, 44, dl)
359
+ title: e(o)("page.preview"),
360
+ onLoad: f
361
+ }, null, 44, wl)
362
362
  ], 4))
363
363
  ], 512)
364
364
  ]));
365
365
  }
366
- }), fl = /* @__PURE__ */ X(pl, [["__scopeId", "data-v-9aa4b1df"]]);
367
- function Tt(t) {
366
+ }), xl = /* @__PURE__ */ le(_l, [["__scopeId", "data-v-9aa4b1df"]]);
367
+ function Lt(t) {
368
368
  return typeof t == "object" && t !== null && typeof t.type == "string" && t.type !== "";
369
369
  }
370
- function Oe(t) {
371
- return Array.isArray(t) && t.length > 0 && t.every(Tt);
370
+ function Je(t) {
371
+ return Array.isArray(t) && t.length > 0 && t.every(Lt);
372
372
  }
373
- function qe() {
373
+ function Qe() {
374
374
  return (typeof crypto < "u" && "randomUUID" in crypto ? crypto.randomUUID().replace(/-/g, "") : Math.random().toString(36).slice(2) + Math.random().toString(36).slice(2)).slice(0, 12);
375
375
  }
376
- function vl(t, l = {}) {
377
- return { key: qe(), type: t, values: l };
376
+ function $l(t, l = {}) {
377
+ return { key: Qe(), type: t, values: l };
378
378
  }
379
379
  function se(t, l) {
380
- return Bt(t, l, null, null);
380
+ return zt(t, l, null, null);
381
381
  }
382
- function Bt(t, l, s, n) {
383
- for (let o = 0; o < t.length; o++) {
384
- const r = t[o];
385
- if (r.key === l) return { node: r, parent: s, field: n, list: t, index: o };
386
- for (const [a, v] of Object.entries(r.values ?? {}))
387
- if (Oe(v)) {
388
- const A = Bt(v, l, r, a);
389
- if (A) return A;
382
+ function zt(t, l, o, n) {
383
+ for (let s = 0; s < t.length; s++) {
384
+ const r = t[s];
385
+ if (r.key === l) return { node: r, parent: o, field: n, list: t, index: s };
386
+ for (const [a, h] of Object.entries(r.values ?? {}))
387
+ if (Je(h)) {
388
+ const I = zt(h, l, r, a);
389
+ if (I) return I;
390
390
  }
391
391
  }
392
392
  return null;
393
393
  }
394
- function De(t, l, s = 0, n = null) {
395
- for (const o of t)
396
- if (Tt(o)) {
397
- l(o, s, n);
398
- for (const r of Object.values(o.values ?? {}))
399
- Oe(r) && De(r, l, s + 1, o);
394
+ function Pe(t, l, o = 0, n = null) {
395
+ for (const s of t)
396
+ if (Lt(s)) {
397
+ l(s, o, n);
398
+ for (const r of Object.values(s.values ?? {}))
399
+ Je(r) && Pe(r, l, o + 1, s);
400
400
  }
401
401
  }
402
- function ml(t, l) {
403
- let s = 0;
404
- return De(t, (n) => {
405
- n.type === l && s++;
406
- }), s;
402
+ function Tl(t, l) {
403
+ let o = 0;
404
+ return Pe(t, (n) => {
405
+ n.type === l && o++;
406
+ }), o;
407
407
  }
408
- function hl(t) {
408
+ function Sl(t) {
409
409
  let l = 0;
410
- for (const s of Object.values(t.values ?? {}))
411
- Oe(s) && De(s, () => l++);
410
+ for (const o of Object.values(t.values ?? {}))
411
+ Je(o) && Pe(o, () => l++);
412
412
  return l;
413
413
  }
414
- function ea(t) {
414
+ function da(t) {
415
415
  const l = [];
416
- return De(t, (s) => {
417
- l.includes(s.type) || l.push(s.type);
416
+ return Pe(t, (o) => {
417
+ l.includes(o.type) || l.push(o.type);
418
418
  }), l;
419
419
  }
420
- function Ct(t) {
420
+ function Ut(t) {
421
421
  const l = [];
422
- for (const s of t)
423
- s.type === "wx-blocks" && l.push(s), s.children && l.push(...Ct(s.children));
422
+ for (const o of t)
423
+ o.type === "wx-blocks" && l.push(o), o.children && l.push(...Ut(o.children));
424
424
  return l;
425
425
  }
426
- function Et(t) {
426
+ function It(t) {
427
427
  const l = {};
428
- for (const [s, n] of Object.entries(t.values ?? {}))
429
- l[s] = Oe(n) ? n.map(Et) : re(n);
430
- return t.hidden === !0 ? { key: qe(), type: t.type, hidden: !0, values: l } : { key: qe(), type: t.type, values: l };
428
+ for (const [o, n] of Object.entries(t.values ?? {}))
429
+ l[o] = Je(n) ? n.map(It) : me(n);
430
+ return t.hidden === !0 ? { key: Qe(), type: t.type, hidden: !0, values: l } : { key: Qe(), type: t.type, values: l };
431
431
  }
432
- function bl(t, l, s) {
433
- const n = re(t), o = se(n, l);
434
- return o ? (s ? o.node.hidden = !0 : delete o.node.hidden, n) : t;
432
+ function Vl(t, l, o) {
433
+ const n = me(t), s = se(n, l);
434
+ return s ? (o ? s.node.hidden = !0 : delete s.node.hidden, n) : t;
435
435
  }
436
- function gl(t, l, s) {
436
+ function Cl(t, l, o) {
437
437
  if (l === null) return t;
438
438
  const n = se(t, l);
439
- if (!n || s === null) return null;
440
- const o = n.node.values[s];
441
- return Array.isArray(o) || (n.node.values[s] = []), n.node.values[s];
439
+ if (!n || o === null) return null;
440
+ const s = n.node.values[o];
441
+ return Array.isArray(s) || (n.node.values[o] = []), n.node.values[o];
442
442
  }
443
- function ut(t, l, s, n, o) {
444
- const r = re(t), a = gl(r, l, s);
445
- return a ? (a.splice(Math.max(0, Math.min(n, a.length)), 0, o), r) : t;
443
+ function mt(t, l, o, n, s) {
444
+ const r = me(t), a = Cl(r, l, o);
445
+ return a ? (a.splice(Math.max(0, Math.min(n, a.length)), 0, s), r) : t;
446
446
  }
447
- function kl(t, l) {
448
- const s = re(t), n = se(s, l);
449
- return n ? (n.list.splice(n.index, 1), s) : t;
447
+ function Bl(t, l) {
448
+ const o = me(t), n = se(o, l);
449
+ return n ? (n.list.splice(n.index, 1), o) : t;
450
450
  }
451
- function yl(t, l, s) {
452
- const n = re(t), o = se(n, l);
453
- return o ? (o.node.values = s, n) : t;
451
+ function El(t, l, o) {
452
+ const n = me(t), s = se(n, l);
453
+ return s ? (s.node.values = o, n) : t;
454
454
  }
455
- function wl(t, l, s, n) {
456
- if (l === null) return re(n);
457
- const o = re(t), r = se(o, l);
458
- return !r || s === null ? t : (r.node.values[s] = re(n), o);
455
+ function Wl(t, l, o, n) {
456
+ if (l === null) return me(n);
457
+ const s = me(t), r = se(s, l);
458
+ return !r || o === null ? t : (r.node.values[o] = me(n), s);
459
459
  }
460
- function re(t) {
460
+ function me(t) {
461
461
  return t === void 0 ? t : JSON.parse(JSON.stringify(t));
462
462
  }
463
- const _l = {
463
+ const Al = {
464
464
  module: {
465
465
  title: "Blocks"
466
466
  },
@@ -579,10 +579,13 @@ const _l = {
579
579
  "pick-limited": 'Only these can go inside ":parent": :types',
580
580
  "pick-nothing-allowed": 'Nothing can be put inside ":parent".',
581
581
  "limit-reached": "Already :count on this page, the limit for this block",
582
+ previous: "Previous block",
583
+ next: "Next block",
582
584
  preview: "Preview",
583
585
  "open-site": "Open on the site",
584
586
  fullscreen: "Full screen",
585
587
  close: "Close",
588
+ width: "Width",
586
589
  "width-desktop": "Desktop",
587
590
  "width-tablet": "Tablet",
588
591
  "width-phone": "Phone"
@@ -604,127 +607,127 @@ const _l = {
604
607
  "ok-container": "Width is decided by container queries.",
605
608
  "ok-variables": "Every variable of the template is a field of the schema."
606
609
  }
607
- }, ct = /* @__PURE__ */ new WeakSet();
608
- function Ee() {
610
+ }, ht = /* @__PURE__ */ new WeakSet();
611
+ function Me() {
609
612
  try {
610
- const { i18n: t } = Be();
611
- ct.has(t) || (t.defaults("webx-blocks", _l), ct.add(t));
613
+ const { i18n: t } = Ie();
614
+ ht.has(t) || (t.defaults("webx-blocks", Al), ht.add(t));
612
615
  } catch {
613
616
  }
614
617
  }
615
- const xl = ["block", "entity", "loop", "__env", "errors", "app"];
616
- function $l(t, l, s) {
618
+ const Ll = ["block", "entity", "loop", "__env", "errors", "app"];
619
+ function zl(t, l, o) {
617
620
  const n = [];
618
- /data-wx-block\s*=/.test(l.template) || n.push({ file: "template", code: "no-marker", line: null, message: s("checks.no-marker") });
619
- const o = Vl(l.template, l.schema);
620
- o.length > 0 && n.push({
621
+ /data-wx-block\s*=/.test(l.template) || n.push({ file: "template", code: "no-marker", line: null, message: o("checks.no-marker") });
622
+ const s = Ul(l.template, l.schema);
623
+ s.length > 0 && n.push({
621
624
  file: "template",
622
625
  code: "variables-missing",
623
626
  line: null,
624
- message: s("checks.variables-missing", {
625
- variables: o.map((y) => `$${y}`).join(", ")
627
+ message: o("checks.variables-missing", {
628
+ variables: s.map((p) => `$${p}`).join(", ")
626
629
  })
627
630
  });
628
- const r = [], a = [], v = `.b-${t}`;
629
- for (const [y, g] of Sl(l.styles))
630
- y.startsWith(v) || y.startsWith("&") || (/^[a-z][a-z0-9-]*/i.test(y) ? a.push([y, g]) : r.push([y, g]));
631
+ const r = [], a = [], h = `.b-${t}`;
632
+ for (const [p, b] of Il(l.styles))
633
+ p.startsWith(h) || p.startsWith("&") || (/^[a-z][a-z0-9-]*/i.test(p) ? a.push([p, b]) : r.push([p, b]));
631
634
  r.length > 0 && n.push({
632
635
  file: "styles",
633
636
  code: "stray-selectors",
634
637
  line: r[0][1],
635
- message: s("checks.stray-selectors", { slug: t, selectors: dt(r) })
638
+ message: o("checks.stray-selectors", { slug: t, selectors: bt(r) })
636
639
  }), a.length > 0 && n.push({
637
640
  file: "styles",
638
641
  code: "bare-selectors",
639
642
  line: a[0][1],
640
- message: s("checks.bare-selectors", { selectors: dt(a) })
643
+ message: o("checks.bare-selectors", { selectors: bt(a) })
641
644
  });
642
- const A = At(l.styles), d = /@media\b/.exec(A);
645
+ const I = Pt(l.styles), d = /@media\b/.exec(I);
643
646
  return d && n.push({
644
647
  file: "styles",
645
648
  code: "media-query",
646
- line: Lt(A, d.index),
647
- message: s("checks.media-query")
649
+ line: Mt(I, d.index),
650
+ message: o("checks.media-query")
648
651
  }), n;
649
652
  }
650
- function Wt(t) {
653
+ function Nt(t) {
651
654
  const l = [];
652
- for (const s of t)
653
- s.id && l.push(s.id), s.children && l.push(...Wt(s.children));
655
+ for (const o of t)
656
+ o.id && l.push(o.id), o.children && l.push(...Nt(o.children));
654
657
  return l;
655
658
  }
656
- function Vl(t, l) {
657
- const s = /* @__PURE__ */ new Set([...Wt(l), ...xl]);
658
- for (const o of t.matchAll(/\bas\s+\$([a-zA-Z_]\w*)(?:\s*=>\s*\$([a-zA-Z_]\w*))?/g))
659
- s.add(o[1]), o[2] && s.add(o[2]);
660
- for (const o of t.matchAll(/\$([a-zA-Z_]\w*)\s*(?:=[^=]|\+\+|--|\.=|\+=|-=)/g))
661
- s.add(o[1]);
659
+ function Ul(t, l) {
660
+ const o = /* @__PURE__ */ new Set([...Nt(l), ...Ll]);
661
+ for (const s of t.matchAll(/\bas\s+\$([a-zA-Z_]\w*)(?:\s*=>\s*\$([a-zA-Z_]\w*))?/g))
662
+ o.add(s[1]), s[2] && o.add(s[2]);
663
+ for (const s of t.matchAll(/\$([a-zA-Z_]\w*)\s*(?:=[^=]|\+\+|--|\.=|\+=|-=)/g))
664
+ o.add(s[1]);
662
665
  const n = [];
663
- for (const o of t.matchAll(/\$([a-zA-Z_]\w*)/g)) {
664
- const r = o[1];
665
- !s.has(r) && !n.includes(r) && n.push(r);
666
+ for (const s of t.matchAll(/\$([a-zA-Z_]\w*)/g)) {
667
+ const r = s[1];
668
+ !o.has(r) && !n.includes(r) && n.push(r);
666
669
  }
667
670
  return n;
668
671
  }
669
- function Sl(t) {
670
- const l = At(t), s = [];
672
+ function Il(t) {
673
+ const l = Pt(t), o = [];
671
674
  for (const n of l.matchAll(/([^{};]+)\{/g)) {
672
- const o = n[1], r = o.trim();
675
+ const s = n[1], r = s.trim();
673
676
  if (!(r === "" || r.startsWith("@")))
674
- for (const a of o.split(",")) {
675
- const v = a.trim();
676
- v === "" || v === "from" || v === "to" || v.endsWith("%") || s.push([v, Lt(l, n.index + o.indexOf(v))]);
677
+ for (const a of s.split(",")) {
678
+ const h = a.trim();
679
+ h === "" || h === "from" || h === "to" || h.endsWith("%") || o.push([h, Mt(l, n.index + s.indexOf(h))]);
677
680
  }
678
681
  }
679
- return s;
682
+ return o;
680
683
  }
681
- function At(t) {
684
+ function Pt(t) {
682
685
  return t.replace(/\/\*[\s\S]*?\*\//g, (l) => l.replace(/[^\n]/g, " "));
683
686
  }
684
- function Lt(t, l) {
687
+ function Mt(t, l) {
685
688
  return t.slice(0, Math.max(0, l)).split(`
686
689
  `).length;
687
690
  }
688
- function dt(t) {
689
- const l = [...new Set(t.map(([s]) => s))];
691
+ function bt(t) {
692
+ const l = [...new Set(t.map(([o]) => o))];
690
693
  return l.slice(0, 3).join(", ") + (l.length > 3 ? ", …" : "");
691
694
  }
692
- function Ye(t) {
695
+ function lt(t) {
693
696
  return t.map((l) => ({
694
697
  ...l,
695
698
  name: l.name ?? l.id,
696
- children: l.children ? Ye(l.children) : l.children
699
+ children: l.children ? lt(l.children) : l.children
697
700
  }));
698
701
  }
699
- function ye(t, l) {
700
- const s = `groups.${t}`, n = l(s);
701
- return n === s || n === `webx-blocks::${s}` ? t.charAt(0).toUpperCase() + t.slice(1) : n;
702
+ function Ae(t, l) {
703
+ const o = `groups.${t}`, n = l(o);
704
+ return n === o || n === `webx-blocks::${o}` ? t.charAt(0).toUpperCase() + t.slice(1) : n;
702
705
  }
703
- const Tl = { class: "wx-block-editor" }, Bl = { class: "wx-block-editor__columns" }, Cl = { class: "wx-block-editor__columns" }, El = { class: "wx-block-editor__files" }, Wl = { class: "wx-block-editor__pane" }, Al = {
706
+ const Nl = { class: "wx-block-editor" }, Pl = { class: "wx-block-editor__columns" }, Ml = { class: "wx-block-editor__columns" }, Ol = { class: "wx-block-editor__files" }, Dl = { class: "wx-block-editor__pane" }, Rl = {
704
707
  key: 0,
705
708
  class: "wx-block-editor__pills"
706
- }, Ll = ["disabled", "onClick", "textContent"], zl = { class: "wx-block-editor__pane" }, Il = { class: "wx-block-editor__pane" }, Ul = { class: "wx-block-editor__note" }, Nl = { class: "wx-block-editor__pane" }, Pl = { class: "wx-block-editor__note" }, Ml = { class: "wx-block-editor__settings" }, Ol = {
709
+ }, Hl = ["disabled", "onClick", "textContent"], jl = { class: "wx-block-editor__pane" }, Fl = { class: "wx-block-editor__pane" }, ql = { class: "wx-block-editor__note" }, Jl = { class: "wx-block-editor__pane" }, Kl = { class: "wx-block-editor__note" }, Zl = { class: "wx-block-editor__settings" }, Gl = {
707
710
  key: 0,
708
711
  class: "is-wide wx-block-editor__danger"
709
- }, Dl = { class: "wx-block-editor__side" }, Rl = {
712
+ }, Yl = { class: "wx-block-editor__side" }, Ql = {
710
713
  key: 1,
711
714
  class: "wx-block-editor__usage"
712
- }, jl = /* @__PURE__ */ Q({
715
+ }, Xl = /* @__PURE__ */ te({
713
716
  __name: "BlockEditorPage",
714
717
  props: {
715
718
  base: { default: "/blocks" }
716
719
  },
717
720
  setup(t) {
718
- const l = t, s = Be(), n = ke(s), o = Mt(), r = ht();
719
- Ee();
720
- const a = le("webx-blocks"), v = Ce(), A = B(() => Number(o.params.id)), d = U(null), y = U([]), g = U(!0), c = U(!1), T = U(!1), f = U("template"), x = B(() => {
721
- const E = s.state.manifest?.modules.find((b) => b.id === "blocks")?.meta;
721
+ const l = t, o = Ie(), n = We(o), s = Kt(), r = _t();
722
+ Me();
723
+ const a = re("webx-blocks"), h = Ne(), I = T(() => Number(s.params.id)), d = N(null), p = N([]), b = N(!0), f = N(!1), k = N(!1), B = N("template"), V = T(() => {
724
+ const S = o.state.manifest?.modules.find((v) => v.id === "blocks")?.meta;
722
725
  return {
723
- groups: E?.groups ?? [],
724
- editing: E?.editing ?? !0,
725
- provides: E?.provides ?? []
726
+ groups: S?.groups ?? [],
727
+ editing: S?.editing ?? !0,
728
+ provides: S?.provides ?? []
726
729
  };
727
- }), k = B(() => s.can("blocks.manage") && x.value.editing), h = je({
730
+ }), _ = T(() => o.can("blocks.manage") && V.value.editing), g = Ze({
728
731
  slug: "",
729
732
  title: "",
730
733
  description: "",
@@ -735,163 +738,163 @@ const Tl = { class: "wx-block-editor" }, Bl = { class: "wx-block-editor__columns
735
738
  allowed_in: [],
736
739
  max_per_entity: null,
737
740
  is_enabled: !0
738
- }), w = je({
741
+ }), w = Ze({
739
742
  schema: [],
740
743
  template: "",
741
744
  styles: "",
742
745
  script: null,
743
746
  sample: {}
744
- }), O = U("[]"), J = U(null), ne = U(""), F = U({}), z = U(null), N = je({
747
+ }), H = N("[]"), K = N(null), Z = N(""), ne = N({}), C = N(null), P = Ze({
745
748
  html: "",
746
749
  styles: "",
747
750
  script: null,
748
751
  runtime: null,
749
752
  loading: !1
750
- }), L = B(() => JSON.stringify({ settings: h, content: w })), P = B(() => ne.value !== "" && L.value !== ne.value), ee = B(() => $l(h.slug, w, a)), de = B(() => {
751
- const E = [...x.value.groups];
752
- return E.includes(h.group) || E.push(h.group), E.map((b) => ({ value: b, label: ye(b, a) }));
753
- }), We = B({
753
+ }), O = T(() => JSON.stringify({ settings: g, content: w })), q = T(() => Z.value !== "" && O.value !== Z.value), _e = T(() => zl(g.slug, w, a)), ue = T(() => {
754
+ const S = [...V.value.groups];
755
+ return S.includes(g.group) || S.push(g.group), S.map((v) => ({ value: v, label: Ae(v, a) }));
756
+ }), ae = T({
754
757
  get: () => w.sample,
755
- set: (E) => {
756
- w.sample = E;
758
+ set: (S) => {
759
+ w.sample = S;
757
760
  }
758
- }), Ae = B(() => we(w.schema));
759
- function we(E) {
760
- const b = [];
761
- for (const _ of E)
762
- _.type !== "wx-blocks" && !(_.children?.length && !_.name) && b.push(_.id), _.children && b.push(...we(_.children));
763
- return b;
761
+ }), ke = T(() => xe(w.schema));
762
+ function xe(S) {
763
+ const v = [];
764
+ for (const $ of S)
765
+ $.type !== "wx-blocks" && !($.children?.length && !$.name) && v.push($.id), $.children && v.push(...xe($.children));
766
+ return v;
764
767
  }
765
- function pe(E) {
766
- d.value = E, Object.assign(h, {
767
- slug: E.slug,
768
- title: E.title,
769
- description: E.description,
770
- icon: E.icon,
771
- group: E.group,
772
- sort: E.sort,
773
- allow: E.allow ?? [],
774
- allowed_in: E.allowed_in ?? [],
775
- max_per_entity: E.max_per_entity,
776
- is_enabled: E.is_enabled
768
+ function he(S) {
769
+ d.value = S, Object.assign(g, {
770
+ slug: S.slug,
771
+ title: S.title,
772
+ description: S.description,
773
+ icon: S.icon,
774
+ group: S.group,
775
+ sort: S.sort,
776
+ allow: S.allow ?? [],
777
+ allowed_in: S.allowed_in ?? [],
778
+ max_per_entity: S.max_per_entity,
779
+ is_enabled: S.is_enabled
777
780
  });
778
- const b = E.content ?? {
781
+ const v = S.content ?? {
779
782
  schema: [],
780
783
  template: "",
781
784
  styles: "",
782
785
  script: null,
783
786
  sample: {}
784
787
  };
785
- Object.assign(w, re(b)), O.value = JSON.stringify(b.schema, null, 2), J.value = null, ne.value = L.value;
788
+ Object.assign(w, me(v)), H.value = JSON.stringify(v.schema, null, 2), K.value = null, Z.value = O.value;
786
789
  }
787
- async function fe() {
788
- g.value = !0;
790
+ async function Q() {
791
+ b.value = !0;
789
792
  try {
790
- pe(await n.get(A.value)), y.value = await n.usage(A.value);
791
- } catch (E) {
792
- H.danger(v(E));
793
+ he(await n.get(I.value)), p.value = await n.usage(I.value);
794
+ } catch (S) {
795
+ J.danger(h(S));
793
796
  } finally {
794
- g.value = !1;
797
+ b.value = !1;
795
798
  }
796
799
  }
797
- function Le(E) {
798
- O.value = E;
800
+ function $e(S) {
801
+ H.value = S;
799
802
  try {
800
- const b = JSON.parse(E);
801
- if (!Array.isArray(b)) throw new Error("not a list");
802
- w.schema = b, J.value = null;
803
- } catch (b) {
804
- J.value = a("page.schema-invalid", { error: b.message });
803
+ const v = JSON.parse(S);
804
+ if (!Array.isArray(v)) throw new Error("not a list");
805
+ w.schema = v, K.value = null;
806
+ } catch (v) {
807
+ K.value = a("page.schema-invalid", { error: v.message });
805
808
  }
806
809
  }
807
- let _e, C = 0;
808
- function M() {
809
- clearTimeout(_e), _e = setTimeout(() => {
810
- D();
810
+ let be, de = 0;
811
+ function U() {
812
+ clearTimeout(be), be = setTimeout(() => {
813
+ M();
811
814
  }, 250);
812
815
  }
813
- async function D() {
816
+ async function M() {
814
817
  if (!d.value) return;
815
- const E = ++C;
816
- N.loading = !0;
818
+ const S = ++de;
819
+ P.loading = !0;
817
820
  try {
818
- const b = await n.render(d.value.id, {
821
+ const v = await n.render(d.value.id, {
819
822
  values: w.sample,
820
- content: k.value ? {
823
+ content: _.value ? {
821
824
  template: w.template,
822
825
  styles: w.styles,
823
826
  script: w.script,
824
827
  schema: w.schema
825
828
  } : void 0
826
829
  });
827
- if (E !== C) return;
828
- N.html = b.html, N.styles = b.styles, N.script = b.script, N.runtime = b.runtime;
829
- } catch (b) {
830
- E === C && H.danger(v(b));
830
+ if (S !== de) return;
831
+ P.html = v.html, P.styles = v.styles, P.script = v.script, P.runtime = v.runtime;
832
+ } catch (v) {
833
+ S === de && J.danger(h(v));
831
834
  } finally {
832
- E === C && (N.loading = !1);
835
+ S === de && (P.loading = !1);
833
836
  }
834
837
  }
835
- ie(
838
+ fe(
836
839
  () => [w.template, w.styles, w.script, w.schema, w.sample],
837
- M,
840
+ U,
838
841
  { deep: !0 }
839
842
  );
840
- const K = U(null);
841
- function Z(E) {
842
- return `{{ $${E} }}`;
843
+ const R = N(null);
844
+ function G(S) {
845
+ return `{{ $${S} }}`;
843
846
  }
844
- function Re(E) {
845
- const _ = K.value?.view?.value;
846
- if (!_) {
847
- w.template += `{{ $${E} }}`;
847
+ function ce(S) {
848
+ const $ = R.value?.view?.value;
849
+ if (!$) {
850
+ w.template += `{{ $${S} }}`;
848
851
  return;
849
852
  }
850
- _.dispatch(_.state.replaceSelection(`{{ $${E} }}`)), _.focus();
853
+ $.dispatch($.state.replaceSelection(`{{ $${S} }}`)), $.focus();
851
854
  }
852
- async function ue() {
855
+ async function pe() {
853
856
  if (!d.value) return;
854
- c.value = !0, F.value = {}, z.value = null;
855
- const E = d.value.draft?.number ?? null;
857
+ f.value = !0, ne.value = {}, C.value = null;
858
+ const S = d.value.draft?.number ?? null;
856
859
  try {
857
- const b = await n.update(d.value.id, {
858
- ...h,
859
- allow: h.allow.length ? h.allow : null,
860
- allowed_in: h.allowed_in.length ? h.allowed_in : null,
861
- description: h.description || null,
862
- icon: h.icon || null,
863
- content: J.value ? { ...w, schema: void 0 } : w
860
+ const v = await n.update(d.value.id, {
861
+ ...g,
862
+ allow: g.allow.length ? g.allow : null,
863
+ allowed_in: g.allowed_in.length ? g.allowed_in : null,
864
+ description: g.description || null,
865
+ icon: g.icon || null,
866
+ content: K.value ? { ...w, schema: void 0 } : w
864
867
  });
865
- pe(b), H.success(
866
- b.draft && b.draft.number !== E ? a("page.saved", { number: b.draft.number }) : a("page.unchanged")
868
+ he(v), J.success(
869
+ v.draft && v.draft.number !== S ? a("page.saved", { number: v.draft.number }) : a("page.unchanged")
867
870
  );
868
- } catch (b) {
869
- const _ = b.body;
870
- _?.errors ? (F.value = _.errors, H.danger(a("page.failed"))) : H.danger(v(b, a("page.failed")));
871
+ } catch (v) {
872
+ const $ = v.body;
873
+ $?.errors ? (ne.value = $.errors, J.danger(a("page.failed"))) : J.danger(h(v, a("page.failed")));
871
874
  } finally {
872
- c.value = !1;
875
+ f.value = !1;
873
876
  }
874
877
  }
875
- async function xe() {
876
- if (!(!d.value?.draft || (P.value && await ue(), !d.value.draft) || !await Me({
878
+ async function oe() {
879
+ if (!(!d.value?.draft || (q.value && await pe(), !d.value.draft) || !await Fe({
877
880
  title: a("page.publish-title", { number: d.value.draft.number }),
878
881
  message: a("page.publish-text", { count: d.value.usage_count }),
879
882
  confirmText: a("page.publish"),
880
883
  cancelText: a("page.cancel")
881
884
  }))) {
882
- T.value = !0, z.value = null;
885
+ k.value = !0, C.value = null;
883
886
  try {
884
- pe(await n.publish(d.value.id)), H.success(a("page.published", { number: d.value.published?.number ?? 0 }));
885
- } catch (b) {
886
- const _ = b.body;
887
- _?.errors ? (z.value = _, f.value = "template", H.danger(a("page.publish-failed"))) : H.danger(v(b, a("page.publish-failed")));
887
+ he(await n.publish(d.value.id)), J.success(a("page.published", { number: d.value.published?.number ?? 0 }));
888
+ } catch (v) {
889
+ const $ = v.body;
890
+ $?.errors ? (C.value = $, B.value = "template", J.danger(a("page.publish-failed"))) : J.danger(h(v, a("page.publish-failed")));
888
891
  } finally {
889
- T.value = !1;
892
+ k.value = !1;
890
893
  }
891
894
  }
892
895
  }
893
- async function $e() {
894
- if (!(!d.value || !await Me({
896
+ async function ge() {
897
+ if (!(!d.value || !await Fe({
895
898
  title: a("page.delete-title", { title: d.value.title }),
896
899
  message: a("page.delete-text"),
897
900
  confirmText: a("page.delete"),
@@ -899,243 +902,243 @@ const Tl = { class: "wx-block-editor" }, Bl = { class: "wx-block-editor__columns
899
902
  tone: "danger"
900
903
  })))
901
904
  try {
902
- await n.remove(d.value.id), H.success(a("page.deleted")), r.push(l.base);
903
- } catch (b) {
904
- H.danger(v(b));
905
+ await n.remove(d.value.id), J.success(a("page.deleted")), r.push(l.base);
906
+ } catch (v) {
907
+ J.danger(h(v));
905
908
  }
906
909
  }
907
- const ze = B(
908
- () => z.value ? {
909
- message: z.value.errors.template?.[0] ?? z.value.message,
910
- line: z.value.line,
911
- where: z.value.entity ? a("page.failed-on", {
912
- title: z.value.entity.title ?? `#${z.value.entity.id}`
910
+ const Te = T(
911
+ () => C.value ? {
912
+ message: C.value.errors.template?.[0] ?? C.value.message,
913
+ line: C.value.line,
914
+ where: C.value.entity ? a("page.failed-on", {
915
+ title: C.value.entity.title ?? `#${C.value.entity.id}`
913
916
  }) : null
914
917
  } : null
915
- ), Ve = B(() => y.value.slice(0, 5));
916
- function ae(E) {
917
- return F.value[E]?.[0];
918
+ ), ye = T(() => p.value.slice(0, 5));
919
+ function m(S) {
920
+ return ne.value[S]?.[0];
918
921
  }
919
- function Xe(E) {
920
- P.value && E.preventDefault();
922
+ function A(S) {
923
+ q.value && S.preventDefault();
921
924
  }
922
- Te(() => {
923
- fe(), window.addEventListener("beforeunload", Xe);
924
- }), Je(() => {
925
- clearTimeout(_e), window.removeEventListener("beforeunload", Xe);
926
- }), ie(A, () => {
927
- fe();
925
+ Ue(() => {
926
+ Q(), window.addEventListener("beforeunload", A);
927
+ }), Xe(() => {
928
+ clearTimeout(be), window.removeEventListener("beforeunload", A);
929
+ }), fe(I, () => {
930
+ Q();
928
931
  });
929
- const It = B(
930
- () => k.value ? [
931
- { key: "save", label: a("page.save"), loading: c.value, run: () => {
932
- ue();
932
+ const D = T(
933
+ () => _.value ? [
934
+ { key: "save", label: a("page.save"), loading: f.value, run: () => {
935
+ pe();
933
936
  } },
934
937
  {
935
938
  key: "publish",
936
939
  label: a("page.publish"),
937
940
  primary: !0,
938
- loading: T.value,
939
- disabled: !d.value?.draft && !P.value,
941
+ loading: k.value,
942
+ disabled: !d.value?.draft && !q.value,
940
943
  run: () => {
941
- xe();
944
+ oe();
942
945
  }
943
946
  }
944
947
  ] : []
945
948
  );
946
- return (E, b) => (i(), V("div", Tl, [
947
- g.value || !d.value ? (i(), V(j, { key: 0 }, [
948
- u(e(he), {
949
+ return (S, v) => (i(), x("div", Nl, [
950
+ b.value || !d.value ? (i(), x(j, { key: 0 }, [
951
+ u(e(Ce), {
949
952
  class: "wx-block-editor__ghost-head",
950
953
  title: "",
951
954
  rows: 1
952
955
  }),
953
- S("div", Bl, [
954
- u(e(ve), null, {
955
- default: p(() => [
956
- u(e(he), { rows: 8 })
956
+ W("div", Pl, [
957
+ u(e(Se), null, {
958
+ default: c(() => [
959
+ u(e(Ce), { rows: 8 })
957
960
  ]),
958
961
  _: 1
959
962
  }),
960
- u(e(ve), null, {
961
- default: p(() => [
962
- u(e(he), { rows: 4 })
963
+ u(e(Se), null, {
964
+ default: c(() => [
965
+ u(e(Ce), { rows: 4 })
963
966
  ]),
964
967
  _: 1
965
968
  })
966
969
  ])
967
- ], 64)) : (i(), V(j, { key: 1 }, [
968
- u(e(Dt), {
969
- title: h.title,
970
+ ], 64)) : (i(), x(j, { key: 1 }, [
971
+ u(e(Gt), {
972
+ title: g.title,
970
973
  back: t.base,
971
974
  "back-label": e(a)("page.back"),
972
- actions: It.value
975
+ actions: D.value
973
976
  }, {
974
- "title-after": p(() => [
975
- k.value ? (i(), W(e(Rt), {
977
+ "title-after": c(() => [
978
+ _.value ? (i(), L(e(Yt), {
976
979
  key: 0,
977
- name: h.title,
980
+ name: g.title,
978
981
  placeholder: e(a)("page.title"),
979
- onRename: b[0] || (b[0] = (_) => h.title = _)
980
- }, null, 8, ["name", "placeholder"])) : I("", !0),
981
- P.value ? (i(), W(e(q), {
982
+ onRename: v[0] || (v[0] = ($) => g.title = $)
983
+ }, null, 8, ["name", "placeholder"])) : z("", !0),
984
+ q.value ? (i(), L(e(Y), {
982
985
  key: 1,
983
986
  type: "primary",
984
987
  dot: ""
985
988
  }, {
986
- default: p(() => [
987
- $(m(e(a)("page.unsaved")), 1)
989
+ default: c(() => [
990
+ E(y(e(a)("page.unsaved")), 1)
988
991
  ]),
989
992
  _: 1
990
- })) : I("", !0),
991
- d.value.draft ? (i(), W(e(q), {
993
+ })) : z("", !0),
994
+ d.value.draft ? (i(), L(e(Y), {
992
995
  key: 2,
993
996
  type: "warning",
994
997
  dot: ""
995
998
  }, {
996
- default: p(() => [
997
- $(m(e(a)("page.draft", { number: d.value.draft.number })), 1)
999
+ default: c(() => [
1000
+ E(y(e(a)("page.draft", { number: d.value.draft.number })), 1)
998
1001
  ]),
999
1002
  _: 1
1000
- })) : I("", !0),
1001
- d.value.published ? (i(), W(e(q), {
1003
+ })) : z("", !0),
1004
+ d.value.published ? (i(), L(e(Y), {
1002
1005
  key: 3,
1003
1006
  type: "success",
1004
1007
  dot: ""
1005
1008
  }, {
1006
- default: p(() => [
1007
- $(m(e(a)("page.live", { number: d.value.published.number })), 1)
1009
+ default: c(() => [
1010
+ E(y(e(a)("page.live", { number: d.value.published.number })), 1)
1008
1011
  ]),
1009
1012
  _: 1
1010
- })) : (i(), W(e(q), {
1013
+ })) : (i(), L(e(Y), {
1011
1014
  key: 4,
1012
1015
  type: "default"
1013
1016
  }, {
1014
- default: p(() => [
1015
- $(m(e(a)("page.never-published")), 1)
1017
+ default: c(() => [
1018
+ E(y(e(a)("page.never-published")), 1)
1016
1019
  ]),
1017
1020
  _: 1
1018
1021
  }))
1019
1022
  ]),
1020
- subtitle: p(() => [
1021
- S("code", null, m(h.slug), 1),
1022
- $(" · " + m(e(ye)(h.group, e(a))) + " · " + m(d.value.usage_count > 0 ? e(a)("page.on-pages", { count: d.value.usage_count }) : e(a)("page.not-used")), 1)
1023
+ subtitle: c(() => [
1024
+ W("code", null, y(g.slug), 1),
1025
+ E(" · " + y(e(Ae)(g.group, e(a))) + " · " + y(d.value.usage_count > 0 ? e(a)("page.on-pages", { count: d.value.usage_count }) : e(a)("page.not-used")), 1)
1023
1026
  ]),
1024
1027
  _: 1
1025
1028
  }, 8, ["title", "back", "back-label", "actions"]),
1026
- x.value.editing ? I("", !0) : (i(), W(e(gt), {
1029
+ V.value.editing ? z("", !0) : (i(), L(e($t), {
1027
1030
  key: 0,
1028
1031
  type: "info",
1029
1032
  variant: "soft",
1030
1033
  description: e(a)("page.editing-off")
1031
1034
  }, null, 8, ["description"])),
1032
- S("div", Cl, [
1033
- S("div", El, [
1034
- u(e(Jt), {
1035
- modelValue: f.value,
1036
- "onUpdate:modelValue": b[13] || (b[13] = (_) => f.value = _),
1035
+ W("div", Ml, [
1036
+ W("div", Ol, [
1037
+ u(e(ll), {
1038
+ modelValue: B.value,
1039
+ "onUpdate:modelValue": v[13] || (v[13] = ($) => B.value = $),
1037
1040
  "keep-alive": ""
1038
1041
  }, {
1039
- default: p(() => [
1040
- u(e(me), {
1042
+ default: c(() => [
1043
+ u(e(Ve), {
1041
1044
  value: "template",
1042
1045
  label: e(a)("page.tab-template")
1043
1046
  }, {
1044
- default: p(() => [
1045
- S("div", Wl, [
1046
- u(e(Ie), {
1047
+ default: c(() => [
1048
+ W("div", Dl, [
1049
+ u(e(De), {
1047
1050
  ref_key: "templateEditor",
1048
- ref: K,
1051
+ ref: R,
1049
1052
  modelValue: w.template,
1050
- "onUpdate:modelValue": b[1] || (b[1] = (_) => w.template = _),
1053
+ "onUpdate:modelValue": v[1] || (v[1] = ($) => w.template = $),
1051
1054
  language: "php",
1052
- readonly: !k.value,
1055
+ readonly: !_.value,
1053
1056
  "min-height": "340px",
1054
1057
  "max-height": "70vh",
1055
1058
  "line-wrapping": ""
1056
1059
  }, null, 8, ["modelValue", "readonly"]),
1057
- Ae.value.length ? (i(), V("div", Al, [
1058
- u(e(R), {
1060
+ ke.value.length ? (i(), x("div", Rl, [
1061
+ u(e(F), {
1059
1062
  size: "sm",
1060
1063
  tone: "muted"
1061
1064
  }, {
1062
- default: p(() => [
1063
- $(m(e(a)("page.insert-field")), 1)
1065
+ default: c(() => [
1066
+ E(y(e(a)("page.insert-field")), 1)
1064
1067
  ]),
1065
1068
  _: 1
1066
1069
  }),
1067
- (i(!0), V(j, null, te(Ae.value, (_) => (i(), V("button", {
1068
- key: _,
1070
+ (i(!0), x(j, null, ee(ke.value, ($) => (i(), x("button", {
1071
+ key: $,
1069
1072
  type: "button",
1070
1073
  class: "wx-block-editor__pill",
1071
- disabled: !k.value,
1072
- onClick: (Kn) => Re(_),
1073
- textContent: m(Z(_))
1074
- }, null, 8, Ll))), 128))
1075
- ])) : I("", !0),
1076
- u(at, {
1074
+ disabled: !_.value,
1075
+ onClick: (Oe) => ce($),
1076
+ textContent: y(G($))
1077
+ }, null, 8, Hl))), 128))
1078
+ ])) : z("", !0),
1079
+ u(ct, {
1077
1080
  file: "template",
1078
- lints: ee.value,
1079
- slug: h.slug,
1080
- error: ze.value
1081
+ lints: _e.value,
1082
+ slug: g.slug,
1083
+ error: Te.value
1081
1084
  }, null, 8, ["lints", "slug", "error"])
1082
1085
  ])
1083
1086
  ]),
1084
1087
  _: 1
1085
1088
  }, 8, ["label"]),
1086
- u(e(me), {
1089
+ u(e(Ve), {
1087
1090
  value: "styles",
1088
1091
  label: e(a)("page.tab-styles")
1089
1092
  }, {
1090
- default: p(() => [
1091
- S("div", zl, [
1092
- u(e(Ie), {
1093
+ default: c(() => [
1094
+ W("div", jl, [
1095
+ u(e(De), {
1093
1096
  modelValue: w.styles,
1094
- "onUpdate:modelValue": b[2] || (b[2] = (_) => w.styles = _),
1097
+ "onUpdate:modelValue": v[2] || (v[2] = ($) => w.styles = $),
1095
1098
  language: "css",
1096
- readonly: !k.value,
1099
+ readonly: !_.value,
1097
1100
  "min-height": "340px",
1098
1101
  "max-height": "70vh"
1099
1102
  }, null, 8, ["modelValue", "readonly"]),
1100
- u(at, {
1103
+ u(ct, {
1101
1104
  file: "styles",
1102
- lints: ee.value,
1103
- slug: h.slug
1105
+ lints: _e.value,
1106
+ slug: g.slug
1104
1107
  }, null, 8, ["lints", "slug"])
1105
1108
  ])
1106
1109
  ]),
1107
1110
  _: 1
1108
1111
  }, 8, ["label"]),
1109
- u(e(me), {
1112
+ u(e(Ve), {
1110
1113
  value: "script",
1111
1114
  label: e(a)("page.tab-script")
1112
1115
  }, {
1113
- default: p(() => [
1114
- S("div", Il, [
1115
- u(e(Ie), {
1116
+ default: c(() => [
1117
+ W("div", Fl, [
1118
+ u(e(De), {
1116
1119
  "model-value": w.script ?? "",
1117
1120
  language: "javascript",
1118
- readonly: !k.value,
1121
+ readonly: !_.value,
1119
1122
  "min-height": "340px",
1120
1123
  "max-height": "70vh",
1121
- "onUpdate:modelValue": b[3] || (b[3] = (_) => w.script = _ || null)
1124
+ "onUpdate:modelValue": v[3] || (v[3] = ($) => w.script = $ || null)
1122
1125
  }, null, 8, ["model-value", "readonly"]),
1123
- S("div", Ul, [
1124
- u(e(R), {
1126
+ W("div", ql, [
1127
+ u(e(F), {
1125
1128
  size: "sm",
1126
1129
  tone: "muted"
1127
1130
  }, {
1128
- default: p(() => [
1129
- $(m(e(a)("page.script-help")), 1)
1131
+ default: c(() => [
1132
+ E(y(e(a)("page.script-help")), 1)
1130
1133
  ]),
1131
1134
  _: 1
1132
1135
  }),
1133
- u(e(R), {
1136
+ u(e(F), {
1134
1137
  size: "sm",
1135
1138
  tone: "muted"
1136
1139
  }, {
1137
- default: p(() => [
1138
- $(m(x.value.provides.length ? e(a)("page.provides", { names: x.value.provides.join(", ") }) : e(a)("page.provides-none")), 1)
1140
+ default: c(() => [
1141
+ E(y(V.value.provides.length ? e(a)("page.provides", { names: V.value.provides.join(", ") }) : e(a)("page.provides-none")), 1)
1139
1142
  ]),
1140
1143
  _: 1
1141
1144
  })
@@ -1144,51 +1147,51 @@ const Tl = { class: "wx-block-editor" }, Bl = { class: "wx-block-editor__columns
1144
1147
  ]),
1145
1148
  _: 1
1146
1149
  }, 8, ["label"]),
1147
- u(e(me), {
1150
+ u(e(Ve), {
1148
1151
  value: "fields",
1149
1152
  label: e(a)("page.tab-fields")
1150
1153
  }, {
1151
- default: p(() => [
1152
- S("div", Nl, [
1153
- u(e(Ie), {
1154
- "model-value": O.value,
1154
+ default: c(() => [
1155
+ W("div", Jl, [
1156
+ u(e(De), {
1157
+ "model-value": H.value,
1155
1158
  language: "json",
1156
1159
  lint: "",
1157
- readonly: !k.value,
1160
+ readonly: !_.value,
1158
1161
  "min-height": "340px",
1159
1162
  "max-height": "70vh",
1160
- "onUpdate:modelValue": Le
1163
+ "onUpdate:modelValue": $e
1161
1164
  }, null, 8, ["model-value", "readonly"]),
1162
- S("div", Pl, [
1163
- J.value ? (i(), W(e(R), {
1165
+ W("div", Kl, [
1166
+ K.value ? (i(), L(e(F), {
1164
1167
  key: 0,
1165
1168
  size: "sm",
1166
1169
  tone: "danger"
1167
1170
  }, {
1168
- default: p(() => [
1169
- $(m(J.value), 1)
1171
+ default: c(() => [
1172
+ E(y(K.value), 1)
1170
1173
  ]),
1171
1174
  _: 1
1172
- })) : ae("content.schema") ? (i(), W(e(R), {
1175
+ })) : m("content.schema") ? (i(), L(e(F), {
1173
1176
  key: 1,
1174
1177
  size: "sm",
1175
1178
  tone: "danger"
1176
1179
  }, {
1177
- default: p(() => [
1178
- $(m(ae("content.schema")), 1)
1180
+ default: c(() => [
1181
+ E(y(m("content.schema")), 1)
1179
1182
  ]),
1180
1183
  _: 1
1181
- })) : (i(), W(e(R), {
1184
+ })) : (i(), L(e(F), {
1182
1185
  key: 2,
1183
1186
  size: "sm",
1184
1187
  tone: "muted"
1185
1188
  }, {
1186
- default: p(() => [
1187
- $(m(e(a)("page.fields-help")), 1)
1189
+ default: c(() => [
1190
+ E(y(e(a)("page.fields-help")), 1)
1188
1191
  ]),
1189
1192
  _: 1
1190
1193
  })),
1191
- u(e(jt), {
1194
+ u(e(Qt), {
1192
1195
  title: e(a)("help.schema-title"),
1193
1196
  body: e(a)("help.schema")
1194
1197
  }, null, 8, ["title", "body"])
@@ -1197,169 +1200,169 @@ const Tl = { class: "wx-block-editor" }, Bl = { class: "wx-block-editor__columns
1197
1200
  ]),
1198
1201
  _: 1
1199
1202
  }, 8, ["label"]),
1200
- u(e(me), {
1203
+ u(e(Ve), {
1201
1204
  value: "settings",
1202
1205
  label: e(a)("page.tab-settings")
1203
1206
  }, {
1204
- default: p(() => [
1205
- u(e(ve), { class: "wx-block-editor__sheet" }, {
1206
- default: p(() => [
1207
- S("div", Ml, [
1208
- u(e(G), {
1207
+ default: c(() => [
1208
+ u(e(Se), { class: "wx-block-editor__sheet" }, {
1209
+ default: c(() => [
1210
+ W("div", Zl, [
1211
+ u(e(X), {
1209
1212
  label: e(a)("page.identifier"),
1210
1213
  help: e(a)("page.identifier-help"),
1211
- error: ae("slug"),
1212
- disabled: !k.value
1214
+ error: m("slug"),
1215
+ disabled: !_.value
1213
1216
  }, {
1214
- default: p(() => [
1215
- u(e(ge), {
1216
- modelValue: h.slug,
1217
- "onUpdate:modelValue": b[4] || (b[4] = (_) => h.slug = _)
1217
+ default: c(() => [
1218
+ u(e(Ee), {
1219
+ modelValue: g.slug,
1220
+ "onUpdate:modelValue": v[4] || (v[4] = ($) => g.slug = $)
1218
1221
  }, null, 8, ["modelValue"])
1219
1222
  ]),
1220
1223
  _: 1
1221
1224
  }, 8, ["label", "help", "error", "disabled"]),
1222
- u(e(G), {
1225
+ u(e(X), {
1223
1226
  label: e(a)("page.group"),
1224
1227
  help: e(a)("page.group-help"),
1225
- error: ae("group"),
1226
- disabled: !k.value
1228
+ error: m("group"),
1229
+ disabled: !_.value
1227
1230
  }, {
1228
- default: p(() => [
1229
- u(e(kt), {
1230
- modelValue: h.group,
1231
- "onUpdate:modelValue": b[5] || (b[5] = (_) => h.group = _),
1232
- options: de.value
1231
+ default: c(() => [
1232
+ u(e(Tt), {
1233
+ modelValue: g.group,
1234
+ "onUpdate:modelValue": v[5] || (v[5] = ($) => g.group = $),
1235
+ options: ue.value
1233
1236
  }, null, 8, ["modelValue", "options"])
1234
1237
  ]),
1235
1238
  _: 1
1236
1239
  }, 8, ["label", "help", "error", "disabled"]),
1237
- u(e(G), {
1240
+ u(e(X), {
1238
1241
  class: "is-wide",
1239
1242
  label: e(a)("page.description"),
1240
1243
  help: e(a)("page.description-help"),
1241
- error: ae("description"),
1242
- disabled: !k.value
1244
+ error: m("description"),
1245
+ disabled: !_.value
1243
1246
  }, {
1244
- default: p(() => [
1245
- u(e(Kt), {
1246
- "model-value": h.description ?? "",
1247
+ default: c(() => [
1248
+ u(e(nl), {
1249
+ "model-value": g.description ?? "",
1247
1250
  rows: 2,
1248
- "onUpdate:modelValue": b[6] || (b[6] = (_) => h.description = String(_ ?? ""))
1251
+ "onUpdate:modelValue": v[6] || (v[6] = ($) => g.description = String($ ?? ""))
1249
1252
  }, null, 8, ["model-value"])
1250
1253
  ]),
1251
1254
  _: 1
1252
1255
  }, 8, ["label", "help", "error", "disabled"]),
1253
- u(e(G), {
1256
+ u(e(X), {
1254
1257
  label: e(a)("page.icon"),
1255
- error: ae("icon"),
1256
- disabled: !k.value
1258
+ error: m("icon"),
1259
+ disabled: !_.value
1257
1260
  }, {
1258
- default: p(() => [
1259
- u(e(ge), {
1260
- "model-value": h.icon ?? "",
1261
+ default: c(() => [
1262
+ u(e(Ee), {
1263
+ "model-value": g.icon ?? "",
1261
1264
  placeholder: "grid",
1262
- "onUpdate:modelValue": b[7] || (b[7] = (_) => h.icon = String(_ ?? ""))
1265
+ "onUpdate:modelValue": v[7] || (v[7] = ($) => g.icon = String($ ?? ""))
1263
1266
  }, null, 8, ["model-value"])
1264
1267
  ]),
1265
1268
  _: 1
1266
1269
  }, 8, ["label", "error", "disabled"]),
1267
- u(e(G), {
1270
+ u(e(X), {
1268
1271
  label: e(a)("page.sort"),
1269
1272
  help: e(a)("page.sort-help"),
1270
- error: ae("sort"),
1271
- disabled: !k.value
1273
+ error: m("sort"),
1274
+ disabled: !_.value
1272
1275
  }, {
1273
- default: p(() => [
1274
- u(e(lt), {
1275
- modelValue: h.sort,
1276
- "onUpdate:modelValue": b[8] || (b[8] = (_) => h.sort = _)
1276
+ default: c(() => [
1277
+ u(e(rt), {
1278
+ modelValue: g.sort,
1279
+ "onUpdate:modelValue": v[8] || (v[8] = ($) => g.sort = $)
1277
1280
  }, null, 8, ["modelValue"])
1278
1281
  ]),
1279
1282
  _: 1
1280
1283
  }, 8, ["label", "help", "error", "disabled"]),
1281
- u(e(G), {
1284
+ u(e(X), {
1282
1285
  label: e(a)("page.allow"),
1283
1286
  help: e(a)("page.allow-help"),
1284
- error: ae("allow"),
1285
- disabled: !k.value
1287
+ error: m("allow"),
1288
+ disabled: !_.value
1286
1289
  }, {
1287
- default: p(() => [
1288
- u(e(nt), {
1289
- modelValue: h.allow,
1290
- "onUpdate:modelValue": b[9] || (b[9] = (_) => h.allow = _),
1290
+ default: c(() => [
1291
+ u(e(ut), {
1292
+ modelValue: g.allow,
1293
+ "onUpdate:modelValue": v[9] || (v[9] = ($) => g.allow = $),
1291
1294
  "allow-create": ""
1292
1295
  }, null, 8, ["modelValue"])
1293
1296
  ]),
1294
1297
  _: 1
1295
1298
  }, 8, ["label", "help", "error", "disabled"]),
1296
- u(e(G), {
1299
+ u(e(X), {
1297
1300
  label: e(a)("page.allowed-in"),
1298
1301
  help: e(a)("page.allowed-in-help"),
1299
- error: ae("allowed_in"),
1300
- disabled: !k.value
1302
+ error: m("allowed_in"),
1303
+ disabled: !_.value
1301
1304
  }, {
1302
- default: p(() => [
1303
- u(e(nt), {
1304
- modelValue: h.allowed_in,
1305
- "onUpdate:modelValue": b[10] || (b[10] = (_) => h.allowed_in = _),
1305
+ default: c(() => [
1306
+ u(e(ut), {
1307
+ modelValue: g.allowed_in,
1308
+ "onUpdate:modelValue": v[10] || (v[10] = ($) => g.allowed_in = $),
1306
1309
  "allow-create": "",
1307
1310
  suggestions: ["root"]
1308
1311
  }, null, 8, ["modelValue"])
1309
1312
  ]),
1310
1313
  _: 1
1311
1314
  }, 8, ["label", "help", "error", "disabled"]),
1312
- u(e(G), {
1315
+ u(e(X), {
1313
1316
  label: e(a)("page.max-per-entity"),
1314
1317
  help: e(a)("page.max-per-entity-help"),
1315
- error: ae("max_per_entity"),
1316
- disabled: !k.value
1318
+ error: m("max_per_entity"),
1319
+ disabled: !_.value
1317
1320
  }, {
1318
- default: p(() => [
1319
- u(e(lt), {
1320
- "model-value": h.max_per_entity ?? void 0,
1321
+ default: c(() => [
1322
+ u(e(rt), {
1323
+ "model-value": g.max_per_entity ?? void 0,
1321
1324
  min: 1,
1322
- "onUpdate:modelValue": b[11] || (b[11] = (_) => h.max_per_entity = _ ?? null)
1325
+ "onUpdate:modelValue": v[11] || (v[11] = ($) => g.max_per_entity = $ ?? null)
1323
1326
  }, null, 8, ["model-value"])
1324
1327
  ]),
1325
1328
  _: 1
1326
1329
  }, 8, ["label", "help", "error", "disabled"]),
1327
- u(e(G), {
1330
+ u(e(X), {
1328
1331
  label: e(a)("page.enabled"),
1329
1332
  help: e(a)("page.enabled-help"),
1330
- disabled: !k.value
1333
+ disabled: !_.value
1331
1334
  }, {
1332
- default: p(() => [
1333
- u(e(Zt), {
1334
- modelValue: h.is_enabled,
1335
- "onUpdate:modelValue": b[12] || (b[12] = (_) => h.is_enabled = _)
1335
+ default: c(() => [
1336
+ u(e(al), {
1337
+ modelValue: g.is_enabled,
1338
+ "onUpdate:modelValue": v[12] || (v[12] = ($) => g.is_enabled = $)
1336
1339
  }, null, 8, ["modelValue"])
1337
1340
  ]),
1338
1341
  _: 1
1339
1342
  }, 8, ["label", "help", "disabled"]),
1340
- k.value ? (i(), V("div", Ol, [
1341
- u(e(Y), {
1343
+ _.value ? (i(), x("div", Gl, [
1344
+ u(e(ie), {
1342
1345
  type: "danger",
1343
1346
  variant: "outline",
1344
1347
  disabled: d.value.usage_count > 0,
1345
- onClick: $e
1348
+ onClick: ge
1346
1349
  }, {
1347
- default: p(() => [
1348
- $(m(e(a)("page.delete")), 1)
1350
+ default: c(() => [
1351
+ E(y(e(a)("page.delete")), 1)
1349
1352
  ]),
1350
1353
  _: 1
1351
1354
  }, 8, ["disabled"]),
1352
- d.value.usage_count > 0 ? (i(), W(e(R), {
1355
+ d.value.usage_count > 0 ? (i(), L(e(F), {
1353
1356
  key: 0,
1354
1357
  size: "sm",
1355
1358
  tone: "muted"
1356
1359
  }, {
1357
- default: p(() => [
1358
- $(m(e(a)("page.delete-used", { count: d.value.usage_count })), 1)
1360
+ default: c(() => [
1361
+ E(y(e(a)("page.delete-used", { count: d.value.usage_count })), 1)
1359
1362
  ]),
1360
1363
  _: 1
1361
- })) : I("", !0)
1362
- ])) : I("", !0)
1364
+ })) : z("", !0)
1365
+ ])) : z("", !0)
1363
1366
  ])
1364
1367
  ]),
1365
1368
  _: 1
@@ -1367,20 +1370,20 @@ const Tl = { class: "wx-block-editor" }, Bl = { class: "wx-block-editor__columns
1367
1370
  ]),
1368
1371
  _: 1
1369
1372
  }, 8, ["label"]),
1370
- u(e(me), {
1373
+ u(e(Ve), {
1371
1374
  value: "history",
1372
1375
  label: e(a)("page.tab-history")
1373
1376
  }, {
1374
- default: p(() => [
1375
- u(e(ve), {
1377
+ default: c(() => [
1378
+ u(e(Se), {
1376
1379
  class: "wx-block-editor__sheet",
1377
1380
  padding: "none"
1378
1381
  }, {
1379
- default: p(() => [
1380
- u(ol, {
1382
+ default: c(() => [
1383
+ u(hl, {
1381
1384
  block: d.value,
1382
- "can-manage": k.value,
1383
- onRestored: pe
1385
+ "can-manage": _.value,
1386
+ onRestored: he
1384
1387
  }, null, 8, ["block", "can-manage"])
1385
1388
  ]),
1386
1389
  _: 1
@@ -1392,152 +1395,152 @@ const Tl = { class: "wx-block-editor" }, Bl = { class: "wx-block-editor__columns
1392
1395
  _: 1
1393
1396
  }, 8, ["modelValue"])
1394
1397
  ]),
1395
- S("div", Dl, [
1396
- u(fl, {
1397
- html: N.html,
1398
- styles: N.styles,
1399
- script: N.script,
1400
- runtime: N.runtime,
1401
- loading: N.loading
1398
+ W("div", Yl, [
1399
+ u(xl, {
1400
+ html: P.html,
1401
+ styles: P.styles,
1402
+ script: P.script,
1403
+ runtime: P.runtime,
1404
+ loading: P.loading
1402
1405
  }, null, 8, ["html", "styles", "script", "runtime", "loading"]),
1403
- u(e(ve), {
1406
+ u(e(Se), {
1404
1407
  title: e(a)("page.sample")
1405
1408
  }, {
1406
- default: p(() => [
1407
- w.schema.length ? (i(), W(e($t), {
1409
+ default: c(() => [
1410
+ w.schema.length ? (i(), L(e(Et), {
1408
1411
  key: 0,
1409
- modelValue: We.value,
1410
- "onUpdate:modelValue": b[14] || (b[14] = (_) => We.value = _),
1411
- root: e(Ye)(w.schema),
1412
- types: e(s).types,
1413
- translate: e(s).i18n.t,
1414
- can: e(s).can,
1415
- disabled: !k.value,
1412
+ modelValue: ae.value,
1413
+ "onUpdate:modelValue": v[14] || (v[14] = ($) => ae.value = $),
1414
+ root: e(lt)(w.schema),
1415
+ types: e(o).types,
1416
+ translate: e(o).i18n.t,
1417
+ can: e(o).can,
1418
+ disabled: !_.value,
1416
1419
  size: "sm"
1417
- }, null, 8, ["modelValue", "root", "types", "translate", "can", "disabled"])) : I("", !0),
1418
- u(e(R), {
1420
+ }, null, 8, ["modelValue", "root", "types", "translate", "can", "disabled"])) : z("", !0),
1421
+ u(e(F), {
1419
1422
  size: "sm",
1420
1423
  tone: "muted"
1421
1424
  }, {
1422
- default: p(() => [
1423
- $(m(e(a)("page.sample-help")), 1)
1425
+ default: c(() => [
1426
+ E(y(e(a)("page.sample-help")), 1)
1424
1427
  ]),
1425
1428
  _: 1
1426
1429
  })
1427
1430
  ]),
1428
1431
  _: 1
1429
1432
  }, 8, ["title"]),
1430
- u(e(ve), {
1433
+ u(e(Se), {
1431
1434
  title: e(a)("page.usage")
1432
1435
  }, {
1433
- default: p(() => [
1434
- y.value.length === 0 ? (i(), W(e(R), {
1436
+ default: c(() => [
1437
+ p.value.length === 0 ? (i(), L(e(F), {
1435
1438
  key: 0,
1436
1439
  size: "sm",
1437
1440
  tone: "muted"
1438
1441
  }, {
1439
- default: p(() => [
1440
- $(m(e(a)("page.usage-empty")), 1)
1442
+ default: c(() => [
1443
+ E(y(e(a)("page.usage-empty")), 1)
1441
1444
  ]),
1442
1445
  _: 1
1443
- })) : (i(), V("div", Rl, [
1444
- (i(!0), V(j, null, te(Ve.value, (_) => (i(), V("div", {
1445
- key: `${_.model}:${_.id}`,
1446
+ })) : (i(), x("div", Ql, [
1447
+ (i(!0), x(j, null, ee(ye.value, ($) => (i(), x("div", {
1448
+ key: `${$.model}:${$.id}`,
1446
1449
  class: "wx-block-editor__use"
1447
1450
  }, [
1448
- S("span", null, m(_.title ?? `#${_.id}`), 1),
1449
- _.published ? I("", !0) : (i(), W(e(q), {
1451
+ W("span", null, y($.title ?? `#${$.id}`), 1),
1452
+ $.published ? z("", !0) : (i(), L(e(Y), {
1450
1453
  key: 0,
1451
1454
  type: "warning",
1452
1455
  size: "sm"
1453
1456
  }, {
1454
- default: p(() => [
1455
- $(m(e(a)("page.unpublished-page")), 1)
1457
+ default: c(() => [
1458
+ E(y(e(a)("page.unpublished-page")), 1)
1456
1459
  ]),
1457
1460
  _: 1
1458
1461
  }))
1459
1462
  ]))), 128)),
1460
- y.value.length > Ve.value.length ? (i(), W(e(R), {
1463
+ p.value.length > ye.value.length ? (i(), L(e(F), {
1461
1464
  key: 0,
1462
1465
  size: "sm",
1463
1466
  tone: "muted"
1464
1467
  }, {
1465
- default: p(() => [
1466
- $(m(e(a)("page.usage-more", { count: y.value.length - Ve.value.length })), 1)
1468
+ default: c(() => [
1469
+ E(y(e(a)("page.usage-more", { count: p.value.length - ye.value.length })), 1)
1467
1470
  ]),
1468
1471
  _: 1
1469
- })) : I("", !0)
1472
+ })) : z("", !0)
1470
1473
  ]))
1471
1474
  ]),
1472
1475
  _: 1
1473
1476
  }, 8, ["title"])
1474
1477
  ])
1475
1478
  ]),
1476
- k.value ? (i(), W(e(Gt), { key: 1 }, {
1477
- state: p(() => [
1478
- P.value ? (i(), W(e(q), {
1479
+ _.value ? (i(), L(e(ol), { key: 1 }, {
1480
+ state: c(() => [
1481
+ q.value ? (i(), L(e(Y), {
1479
1482
  key: 0,
1480
1483
  type: "primary",
1481
1484
  dot: ""
1482
1485
  }, {
1483
- default: p(() => [
1484
- $(m(e(a)("page.unsaved")), 1)
1486
+ default: c(() => [
1487
+ E(y(e(a)("page.unsaved")), 1)
1485
1488
  ]),
1486
1489
  _: 1
1487
- })) : I("", !0),
1488
- d.value.draft ? (i(), W(e(q), {
1490
+ })) : z("", !0),
1491
+ d.value.draft ? (i(), L(e(Y), {
1489
1492
  key: 1,
1490
1493
  type: "warning",
1491
1494
  dot: ""
1492
1495
  }, {
1493
- default: p(() => [
1494
- $(m(e(a)("page.draft", { number: d.value.draft.number })), 1)
1496
+ default: c(() => [
1497
+ E(y(e(a)("page.draft", { number: d.value.draft.number })), 1)
1495
1498
  ]),
1496
1499
  _: 1
1497
- })) : I("", !0),
1498
- d.value.published ? (i(), W(e(q), {
1500
+ })) : z("", !0),
1501
+ d.value.published ? (i(), L(e(Y), {
1499
1502
  key: 2,
1500
1503
  type: "success",
1501
1504
  dot: ""
1502
1505
  }, {
1503
- default: p(() => [
1504
- $(m(e(a)("page.live", { number: d.value.published.number })), 1)
1506
+ default: c(() => [
1507
+ E(y(e(a)("page.live", { number: d.value.published.number })), 1)
1505
1508
  ]),
1506
1509
  _: 1
1507
- })) : I("", !0)
1510
+ })) : z("", !0)
1508
1511
  ]),
1509
- default: p(() => [
1510
- u(e(Y), {
1512
+ default: c(() => [
1513
+ u(e(ie), {
1511
1514
  variant: "outline",
1512
- loading: c.value,
1513
- onClick: ue
1515
+ loading: f.value,
1516
+ onClick: pe
1514
1517
  }, {
1515
- default: p(() => [
1516
- $(m(e(a)("page.save")), 1)
1518
+ default: c(() => [
1519
+ E(y(e(a)("page.save")), 1)
1517
1520
  ]),
1518
1521
  _: 1
1519
1522
  }, 8, ["loading"]),
1520
- u(e(Y), {
1523
+ u(e(ie), {
1521
1524
  type: "primary",
1522
- loading: T.value,
1523
- disabled: !d.value.draft && !P.value,
1524
- onClick: xe
1525
+ loading: k.value,
1526
+ disabled: !d.value.draft && !q.value,
1527
+ onClick: oe
1525
1528
  }, {
1526
- default: p(() => [
1527
- $(m(e(a)("page.publish")), 1)
1529
+ default: c(() => [
1530
+ E(y(e(a)("page.publish")), 1)
1528
1531
  ]),
1529
1532
  _: 1
1530
1533
  }, 8, ["loading", "disabled"])
1531
1534
  ]),
1532
1535
  _: 1
1533
- })) : I("", !0)
1536
+ })) : z("", !0)
1534
1537
  ], 64))
1535
1538
  ]));
1536
1539
  }
1537
- }), Hl = /* @__PURE__ */ X(jl, [["__scopeId", "data-v-abef0165"]]), Fl = ["srcdoc"], ql = {
1540
+ }), en = /* @__PURE__ */ le(Xl, [["__scopeId", "data-v-abef0165"]]), tn = ["srcdoc"], ln = {
1538
1541
  key: 1,
1539
1542
  class: "wx-block-thumb__empty"
1540
- }, Jl = /* @__PURE__ */ Q({
1543
+ }, nn = /* @__PURE__ */ te({
1541
1544
  __name: "BlockThumb",
1542
1545
  props: {
1543
1546
  thumbnail: {},
@@ -1545,36 +1548,36 @@ const Tl = { class: "wx-block-editor" }, Bl = { class: "wx-block-editor__columns
1545
1548
  height: { default: 120 }
1546
1549
  },
1547
1550
  setup(t) {
1548
- const l = t, s = U(null), n = Ke(s), o = B(() => n.value > 0 ? n.value / l.width : 0.2), r = B(
1549
- () => l.thumbnail ? St({ html: l.thumbnail.html, styles: l.thumbnail.styles }) : ""
1550
- ), a = B(() => ({
1551
+ const l = t, o = N(null), n = qe(o), s = T(() => n.value > 0 ? n.value / l.width : 0.2), r = T(
1552
+ () => l.thumbnail ? At({ html: l.thumbnail.html, styles: l.thumbnail.styles }) : ""
1553
+ ), a = T(() => ({
1551
1554
  width: `${l.width}px`,
1552
- height: `${Math.round(l.height / o.value)}px`,
1553
- transform: `scale(${o.value})`
1555
+ height: `${Math.round(l.height / s.value)}px`,
1556
+ transform: `scale(${s.value})`
1554
1557
  }));
1555
- return (v, A) => (i(), V("div", {
1558
+ return (h, I) => (i(), x("div", {
1556
1559
  ref_key: "box",
1557
- ref: s,
1560
+ ref: o,
1558
1561
  class: "wx-block-thumb",
1559
- style: ce({ height: `${t.height}px` })
1562
+ style: we({ height: `${t.height}px` })
1560
1563
  }, [
1561
- t.thumbnail ? (i(), V("iframe", {
1564
+ t.thumbnail ? (i(), x("iframe", {
1562
1565
  key: 0,
1563
1566
  class: "wx-block-thumb__frame",
1564
1567
  srcdoc: r.value,
1565
- style: ce(a.value),
1568
+ style: we(a.value),
1566
1569
  sandbox: "allow-same-origin",
1567
1570
  tabindex: "-1",
1568
1571
  "aria-hidden": "true"
1569
- }, null, 12, Fl)) : (i(), V("div", ql, [
1570
- u(e(oe), { name: "grid" })
1572
+ }, null, 12, tn)) : (i(), x("div", ln, [
1573
+ u(e(ve), { name: "grid" })
1571
1574
  ]))
1572
1575
  ], 4));
1573
1576
  }
1574
- }), zt = /* @__PURE__ */ X(Jl, [["__scopeId", "data-v-615b818a"]]), Kl = { class: "wx-block-picker" }, Zl = {
1577
+ }), Ot = /* @__PURE__ */ le(nn, [["__scopeId", "data-v-615b818a"]]), an = { class: "wx-block-picker" }, on = {
1575
1578
  key: 0,
1576
1579
  class: "wx-block-picker__group-title"
1577
- }, Gl = { class: "wx-block-picker__cards" }, Yl = ["disabled", "title", "onClick"], Ql = { class: "wx-block-picker__body" }, Xl = { class: "wx-block-picker__title" }, en = /* @__PURE__ */ Q({
1580
+ }, sn = { class: "wx-block-picker__cards" }, rn = ["disabled", "title", "onClick"], un = { class: "wx-block-picker__body" }, cn = { class: "wx-block-picker__title" }, dn = /* @__PURE__ */ te({
1578
1581
  __name: "BlockPicker",
1579
1582
  props: {
1580
1583
  catalog: {},
@@ -1585,134 +1588,134 @@ const Tl = { class: "wx-block-editor" }, Bl = { class: "wx-block-editor__columns
1585
1588
  blocksPath: { default: null }
1586
1589
  },
1587
1590
  setup(t) {
1588
- const l = t, { resolve: s, dismiss: n, open: o } = yt();
1589
- Ee();
1590
- const r = le("webx-blocks"), a = U("");
1591
- function v(c) {
1591
+ const l = t, { resolve: o, dismiss: n, open: s } = St();
1592
+ Me();
1593
+ const r = re("webx-blocks"), a = N("");
1594
+ function h(f) {
1592
1595
  if (l.parent === null)
1593
- return c.allowed_in === null || c.allowed_in.includes("root");
1594
- const T = l.allow ? l.allow.includes(c.slug) : l.parent.allow?.includes(c.slug) === !0, f = c.allowed_in === null || c.allowed_in.includes(l.parent.slug);
1595
- return T && f;
1596
+ return f.allowed_in === null || f.allowed_in.includes("root");
1597
+ const k = l.allow ? l.allow.includes(f.slug) : l.parent.allow?.includes(f.slug) === !0, B = f.allowed_in === null || f.allowed_in.includes(l.parent.slug);
1598
+ return k && B;
1596
1599
  }
1597
- const A = B(
1598
- () => l.catalog.filter((c) => c.is_enabled && c.published !== null && v(c)).map((c) => {
1599
- const T = ml(l.tree, c.slug), f = c.max_per_entity !== null && T >= c.max_per_entity;
1600
- return { type: c, reason: f ? r("field.limit-reached", { count: T }) : null };
1600
+ const I = T(
1601
+ () => l.catalog.filter((f) => f.is_enabled && f.published !== null && h(f)).map((f) => {
1602
+ const k = Tl(l.tree, f.slug), B = f.max_per_entity !== null && k >= f.max_per_entity;
1603
+ return { type: f, reason: B ? r("field.limit-reached", { count: k }) : null };
1601
1604
  })
1602
- ), d = B(() => {
1603
- const c = a.value.trim().toLowerCase();
1604
- return c === "" ? A.value : A.value.filter(
1605
- ({ type: T }) => T.title.toLowerCase().includes(c) || T.slug.includes(c) || (T.description ?? "").toLowerCase().includes(c)
1605
+ ), d = T(() => {
1606
+ const f = a.value.trim().toLowerCase();
1607
+ return f === "" ? I.value : I.value.filter(
1608
+ ({ type: k }) => k.title.toLowerCase().includes(f) || k.slug.includes(f) || (k.description ?? "").toLowerCase().includes(f)
1606
1609
  );
1607
- }), y = B(() => {
1608
- const c = [...l.groups];
1609
- for (const { type: x } of d.value)
1610
- c.includes(x.group) || c.push(x.group);
1611
- const T = c.map((x) => ({
1612
- id: x,
1613
- label: ye(x, r),
1614
- options: d.value.filter((k) => k.type.group === x)
1615
- })).filter((x) => x.options.length > 0);
1616
- return d.value.length <= 5 || a.value.trim() !== "" || T.length < 2 ? [{ id: "", label: "", options: d.value }] : T;
1617
- }), g = B(() => {
1610
+ }), p = T(() => {
1611
+ const f = [...l.groups];
1612
+ for (const { type: V } of d.value)
1613
+ f.includes(V.group) || f.push(V.group);
1614
+ const k = f.map((V) => ({
1615
+ id: V,
1616
+ label: Ae(V, r),
1617
+ options: d.value.filter((_) => _.type.group === V)
1618
+ })).filter((V) => V.options.length > 0);
1619
+ return d.value.length <= 5 || a.value.trim() !== "" || k.length < 2 ? [{ id: "", label: "", options: d.value }] : k;
1620
+ }), b = T(() => {
1618
1621
  if (l.catalog.length === 0) return r("field.pick-none");
1619
- if (A.value.length === 0 && l.parent) {
1620
- const c = (l.allow ?? l.parent.allow ?? []).filter(
1621
- (T) => l.catalog.some((f) => f.slug === T)
1622
+ if (I.value.length === 0 && l.parent) {
1623
+ const f = (l.allow ?? l.parent.allow ?? []).filter(
1624
+ (k) => l.catalog.some((B) => B.slug === k)
1622
1625
  );
1623
- return c.length === 0 ? r("field.pick-nothing-allowed", { parent: l.parent.title }) : r("field.pick-limited", { parent: l.parent.title, types: c.join(", ") });
1626
+ return f.length === 0 ? r("field.pick-nothing-allowed", { parent: l.parent.title }) : r("field.pick-limited", { parent: l.parent.title, types: f.join(", ") });
1624
1627
  }
1625
1628
  return r("field.pick-empty");
1626
1629
  });
1627
- return (c, T) => {
1628
- const f = ft("router-link");
1629
- return i(), W(e(wt), {
1630
- open: e(o),
1631
- "onUpdate:open": T[2] || (T[2] = (x) => vt(o) ? o.value = x : null),
1630
+ return (f, k) => {
1631
+ const B = kt("router-link");
1632
+ return i(), L(e(Vt), {
1633
+ open: e(s),
1634
+ "onUpdate:open": k[2] || (k[2] = (V) => yt(s) ? s.value = V : null),
1632
1635
  title: e(r)("field.pick"),
1633
1636
  width: 860
1634
1637
  }, {
1635
- footer: p(() => [
1636
- u(e(Y), {
1638
+ footer: c(() => [
1639
+ u(e(ie), {
1637
1640
  variant: "outline",
1638
- onClick: T[1] || (T[1] = (x) => e(n)())
1641
+ onClick: k[1] || (k[1] = (V) => e(n)())
1639
1642
  }, {
1640
- default: p(() => [
1641
- $(m(e(r)("field.close")), 1)
1643
+ default: c(() => [
1644
+ E(y(e(r)("field.close")), 1)
1642
1645
  ]),
1643
1646
  _: 1
1644
1647
  })
1645
1648
  ]),
1646
- default: p(() => [
1647
- S("div", Kl, [
1648
- A.value.length > 0 ? (i(), W(e(ge), {
1649
+ default: c(() => [
1650
+ W("div", an, [
1651
+ I.value.length > 0 ? (i(), L(e(Ee), {
1649
1652
  key: 0,
1650
1653
  modelValue: a.value,
1651
- "onUpdate:modelValue": T[0] || (T[0] = (x) => a.value = x),
1654
+ "onUpdate:modelValue": k[0] || (k[0] = (V) => a.value = V),
1652
1655
  placeholder: e(r)("field.search"),
1653
1656
  clearable: "",
1654
1657
  autofocus: ""
1655
- }, null, 8, ["modelValue", "placeholder"])) : I("", !0),
1656
- d.value.length === 0 ? (i(), W(e(_t), {
1658
+ }, null, 8, ["modelValue", "placeholder"])) : z("", !0),
1659
+ d.value.length === 0 ? (i(), L(e(Ct), {
1657
1660
  key: 1,
1658
1661
  icon: "grid",
1659
- title: g.value,
1662
+ title: b.value,
1660
1663
  size: "sm"
1661
1664
  }, {
1662
- default: p(() => [
1663
- t.catalog.length === 0 && t.blocksPath ? (i(), W(f, {
1665
+ default: c(() => [
1666
+ t.catalog.length === 0 && t.blocksPath ? (i(), L(B, {
1664
1667
  key: 0,
1665
1668
  to: t.blocksPath
1666
1669
  }, {
1667
- default: p(() => [
1668
- $(m(e(r)("field.pick-none-link")), 1)
1670
+ default: c(() => [
1671
+ E(y(e(r)("field.pick-none-link")), 1)
1669
1672
  ]),
1670
1673
  _: 1
1671
- }, 8, ["to"])) : I("", !0)
1674
+ }, 8, ["to"])) : z("", !0)
1672
1675
  ]),
1673
1676
  _: 1
1674
- }, 8, ["title"])) : I("", !0),
1675
- (i(!0), V(j, null, te(y.value, (x) => (i(), V("section", {
1676
- key: x.id,
1677
+ }, 8, ["title"])) : z("", !0),
1678
+ (i(!0), x(j, null, ee(p.value, (V) => (i(), x("section", {
1679
+ key: V.id,
1677
1680
  class: "wx-block-picker__group"
1678
1681
  }, [
1679
- x.label ? (i(), V("div", Zl, m(x.label), 1)) : I("", !0),
1680
- S("div", Gl, [
1681
- (i(!0), V(j, null, te(x.options, (k) => (i(), V("button", {
1682
- key: k.type.id,
1682
+ V.label ? (i(), x("div", on, y(V.label), 1)) : z("", !0),
1683
+ W("div", sn, [
1684
+ (i(!0), x(j, null, ee(V.options, (_) => (i(), x("button", {
1685
+ key: _.type.id,
1683
1686
  type: "button",
1684
- class: be(["wx-block-picker__card", { "is-disabled": k.reason !== null }]),
1685
- disabled: k.reason !== null,
1686
- title: k.reason ?? void 0,
1687
- onClick: (h) => e(s)(k.type)
1687
+ class: Be(["wx-block-picker__card", { "is-disabled": _.reason !== null }]),
1688
+ disabled: _.reason !== null,
1689
+ title: _.reason ?? void 0,
1690
+ onClick: (g) => e(o)(_.type)
1688
1691
  }, [
1689
- u(zt, {
1690
- thumbnail: k.type.thumbnail,
1692
+ u(Ot, {
1693
+ thumbnail: _.type.thumbnail,
1691
1694
  height: 96
1692
1695
  }, null, 8, ["thumbnail"]),
1693
- S("div", Ql, [
1694
- S("div", Xl, m(k.type.title), 1),
1695
- k.reason ? (i(), W(e(R), {
1696
+ W("div", un, [
1697
+ W("div", cn, y(_.type.title), 1),
1698
+ _.reason ? (i(), L(e(F), {
1696
1699
  key: 0,
1697
1700
  size: "sm",
1698
1701
  tone: "warning"
1699
1702
  }, {
1700
- default: p(() => [
1701
- $(m(k.reason), 1)
1703
+ default: c(() => [
1704
+ E(y(_.reason), 1)
1702
1705
  ]),
1703
1706
  _: 2
1704
- }, 1024)) : k.type.description ? (i(), W(e(R), {
1707
+ }, 1024)) : _.type.description ? (i(), L(e(F), {
1705
1708
  key: 1,
1706
1709
  size: "sm",
1707
1710
  tone: "muted"
1708
1711
  }, {
1709
- default: p(() => [
1710
- $(m(k.type.description), 1)
1712
+ default: c(() => [
1713
+ E(y(_.type.description), 1)
1711
1714
  ]),
1712
1715
  _: 2
1713
- }, 1024)) : I("", !0)
1716
+ }, 1024)) : z("", !0)
1714
1717
  ])
1715
- ], 10, Yl))), 128))
1718
+ ], 10, rn))), 128))
1716
1719
  ])
1717
1720
  ]))), 128))
1718
1721
  ])
@@ -1721,153 +1724,208 @@ const Tl = { class: "wx-block-editor" }, Bl = { class: "wx-block-editor__columns
1721
1724
  }, 8, ["open", "title"]);
1722
1725
  };
1723
1726
  }
1724
- }), tn = /* @__PURE__ */ X(en, [["__scopeId", "data-v-99f4090e"]]), ln = { class: "wx-blocks-preview__bar" }, nn = { class: "wx-blocks-preview__tools" }, an = ["src", "title"], sn = /* @__PURE__ */ Q({
1727
+ }), pn = /* @__PURE__ */ le(dn, [["__scopeId", "data-v-99f4090e"]]), vn = { class: "wx-blocks-preview__tools" }, fn = ["src", "title"], mn = /* @__PURE__ */ te({
1725
1728
  __name: "BlocksPreview",
1726
1729
  props: {
1727
1730
  url: {},
1728
1731
  selected: { default: null },
1729
- mode: { default: "wide" },
1730
1732
  reload: { default: 0 },
1731
- fill: { type: Boolean, default: !1 }
1733
+ compact: { type: Boolean, default: !1 }
1732
1734
  },
1733
- emits: ["select"],
1734
- setup(t, { expose: l, emit: s }) {
1735
- const n = t, o = s, r = le("webx-blocks"), a = U(null), v = U(null), A = Ke(v), d = U(!1), y = U(1280), g = U(!1), c = B(() => [
1736
- { value: 1280, label: r("field.width-desktop") },
1737
- { value: 834, label: r("field.width-tablet") },
1738
- { value: 390, label: r("field.width-phone") }
1739
- ]), T = B(
1740
- () => d.value ? y.value : n.mode === "phone" ? 390 : 1280
1741
- ), f = B(() => d.value || n.mode === "phone" || A.value === 0 ? 1 : Math.min(1, A.value / T.value)), x = B(() => ({
1742
- width: `${T.value}px`,
1743
- transform: `scale(${f.value})`
1744
- })), k = B(() => {
1735
+ emits: ["select", "edit"],
1736
+ setup(t, { expose: l, emit: o }) {
1737
+ const n = t, s = o, r = re("webx-blocks"), a = N(null), h = N(null), I = N(null), d = qe(I), p = N(!1), b = N(!1), f = N(null), k = N(0), B = T(() => k.value > 0), V = T(() => [
1738
+ { value: 1280, icon: "monitor", ariaLabel: r("field.width-desktop") },
1739
+ { value: 834, icon: "tablet", ariaLabel: r("field.width-tablet") },
1740
+ { value: 390, icon: "smartphone", ariaLabel: r("field.width-phone") }
1741
+ ]), _ = T(() => f.value !== null ? f.value : n.compact ? d.value > 0 && d.value < 560 ? 390 : 834 : 1280), g = T(() => d.value === 0 ? 1 : Math.min(1, d.value / _.value)), w = T(() => ({
1742
+ width: `${_.value}px`,
1743
+ transform: `scale(${g.value})`,
1744
+ ...B.value ? { height: `${k.value}px` } : {}
1745
+ })), H = T(() => ({
1746
+ width: `${Math.round(_.value * g.value)}px`,
1747
+ ...B.value ? { height: `${Math.round(k.value * g.value)}px` } : {}
1748
+ })), K = T(() => {
1745
1749
  if (!n.url) return "";
1746
1750
  try {
1747
- return `${new URL(n.url, location.origin).pathname} · ${T.value} px`;
1751
+ return `${new URL(n.url, location.origin).pathname} · ${_.value} px`;
1748
1752
  } catch {
1749
1753
  return n.url;
1750
1754
  }
1751
1755
  });
1752
- function h() {
1756
+ function Z() {
1753
1757
  try {
1754
1758
  return a.value?.contentDocument ?? null;
1755
1759
  } catch {
1756
1760
  return null;
1757
1761
  }
1758
1762
  }
1759
- let w = null, O = !1;
1760
- function J() {
1761
- g.value = !0;
1762
- const L = h();
1763
- L && (w?.release(), w = rl(L, {
1764
- select: (P) => {
1765
- O = !0, o("select", P), O = !1;
1766
- }
1767
- }), Fe(L, n.selected ?? null), ne(L, n.selected ?? null));
1763
+ let ne = null, C = null;
1764
+ function P(U) {
1765
+ U.documentElement.scrollTop !== 0 && (U.documentElement.scrollTop = 0);
1766
+ }
1767
+ function O() {
1768
+ const U = Z(), M = U?.body;
1769
+ if (!M || !U?.defaultView) return;
1770
+ P(U);
1771
+ const R = U.defaultView.getComputedStyle(M), G = (parseFloat(R.marginTop) || 0) + (parseFloat(R.marginBottom) || 0), ce = Math.ceil(M.scrollHeight + G);
1772
+ ce !== k.value && (k.value = ce, ue !== null && Rt(() => requestAnimationFrame(Q)));
1773
+ }
1774
+ function q(U) {
1775
+ C?.disconnect();
1776
+ const M = U.defaultView;
1777
+ !M || !U.body || (C = new M.ResizeObserver(O), C.observe(U.body), O());
1778
+ }
1779
+ function _e() {
1780
+ b.value = !0;
1781
+ const U = Z();
1782
+ U && (q(U), ne?.release(), ne = gl(U, {
1783
+ /* No guard against answering a click with a scroll: `bring` moves nothing that is already
1784
+ readable, and a block clicked at the very bottom of the window, half under the action
1785
+ bar, is exactly the one worth moving. */
1786
+ select: (M) => s("select", M)
1787
+ }), Ye(U, n.selected ?? null), ke(n.selected ?? null));
1788
+ }
1789
+ let ue = null, ae = null;
1790
+ function ke(U) {
1791
+ U !== null && (ue = U, ae !== null && clearTimeout(ae), ae = window.setTimeout(() => {
1792
+ ue = null, ae = null;
1793
+ }, 400), Q());
1768
1794
  }
1769
- function ne(L, P) {
1770
- P === null || O || Ze(L, P)?.scrollIntoView({ behavior: "smooth", block: "center" });
1795
+ function xe(U) {
1796
+ const M = a.value?.getBoundingClientRect();
1797
+ if (!M) return null;
1798
+ const R = U.getBoundingClientRect();
1799
+ return { top: M.top + R.top * g.value, height: R.height * g.value };
1771
1800
  }
1772
- function F(L, P) {
1773
- const ee = h();
1774
- if (!ee || !g.value) return !1;
1775
- const de = il(ee, L, P);
1776
- return de && Fe(ee, n.selected ?? null), de;
1801
+ function he() {
1802
+ let U = a.value?.parentElement ?? null;
1803
+ for (; U; ) {
1804
+ const M = getComputedStyle(U).overflowY;
1805
+ if ((M === "auto" || M === "scroll") && U.scrollHeight > U.clientHeight)
1806
+ return U;
1807
+ U = U.parentElement;
1808
+ }
1809
+ return null;
1810
+ }
1811
+ function Q() {
1812
+ const U = Z();
1813
+ if (ue === null || !U) return;
1814
+ P(U);
1815
+ const M = et(U, ue), R = M ? xe(M) : null;
1816
+ if (!R) return;
1817
+ const G = he(), ce = G?.getBoundingClientRect(), pe = h.value?.getBoundingClientRect().height ?? 0, oe = {
1818
+ top: (ce?.top ?? 0) + pe,
1819
+ bottom: (ce ? ce.bottom : window.innerHeight) - pe
1820
+ }, ge = R.top + R.height, Te = R.top < oe.top, ye = R.height > oe.bottom - oe.top, m = Te || ye ? R.top - oe.top : ge > oe.bottom ? ge - oe.bottom : 0;
1821
+ m !== 0 && (G ?? window).scrollBy({ top: m, behavior: "smooth" });
1822
+ }
1823
+ function $e(U, M) {
1824
+ const R = Z();
1825
+ if (!R || !b.value) return !1;
1826
+ const G = bl(R, U, M);
1827
+ return G && Ye(R, n.selected ?? null), G;
1777
1828
  }
1778
- function z() {
1779
- g.value = !1, a.value && n.url && (a.value.src = n.url);
1829
+ function be() {
1830
+ b.value = !1, C?.disconnect(), C = null, a.value && n.url && (a.value.src = n.url);
1780
1831
  }
1781
- function N(L) {
1782
- L.key === "Escape" && d.value && (d.value = !1, L.stopPropagation());
1832
+ function de(U) {
1833
+ U.key === "Escape" && p.value && (p.value = !1, U.stopPropagation());
1783
1834
  }
1784
- return ie(
1835
+ return fe(
1785
1836
  () => n.selected,
1786
- (L) => {
1787
- const P = h();
1788
- !P || !g.value || (Fe(P, L ?? null), ne(P, L ?? null));
1837
+ (U) => {
1838
+ const M = Z();
1839
+ !M || !b.value || (Ye(M, U ?? null), ke(U ?? null));
1789
1840
  }
1790
- ), ie(() => n.reload, z), ie(
1841
+ ), fe(() => n.reload, be), fe(
1791
1842
  () => n.url,
1792
- () => g.value = !1
1793
- ), Te(() => window.addEventListener("keydown", N)), Je(() => {
1794
- window.removeEventListener("keydown", N), w?.release();
1795
- }), l({ replace: F, refresh: z, open: () => d.value = !0 }), (L, P) => (i(), V("div", {
1796
- class: be(["wx-blocks-preview", { "is-fullscreen": d.value, "is-phone": t.mode === "phone", "is-fill": t.fill }]),
1797
- style: ce({ "--wx-preview-scale": f.value })
1843
+ () => b.value = !1
1844
+ ), Ue(() => window.addEventListener("keydown", de)), Xe(() => {
1845
+ window.removeEventListener("keydown", de), ae !== null && clearTimeout(ae), C?.disconnect(), ne?.release();
1846
+ }), l({ replace: $e, refresh: be, open: () => p.value = !0 }), (U, M) => (i(), x("div", {
1847
+ class: Be(["wx-blocks-preview", { "is-fullscreen": p.value, "is-grown": B.value, "is-compact": t.compact }]),
1848
+ style: we({ "--wx-preview-scale": g.value })
1798
1849
  }, [
1799
- S("div", ln, [
1800
- u(e(R), {
1850
+ W("div", {
1851
+ ref_key: "bar",
1852
+ ref: h,
1853
+ class: "wx-blocks-preview__bar"
1854
+ }, [
1855
+ u(e(F), {
1801
1856
  size: "xs",
1802
1857
  tone: "muted",
1803
1858
  class: "wx-blocks-preview__label",
1804
1859
  truncate: ""
1805
1860
  }, {
1806
- default: p(() => [
1807
- $(m(k.value), 1)
1861
+ default: c(() => [
1862
+ E(y(K.value), 1)
1808
1863
  ]),
1809
1864
  _: 1
1810
1865
  }),
1811
- S("div", nn, [
1812
- d.value ? (i(), W(e(bt), {
1866
+ u(e(xt), {
1867
+ class: "wx-blocks-preview__widths",
1868
+ "model-value": _.value,
1869
+ options: V.value,
1870
+ size: "sm",
1871
+ "aria-label": e(r)("field.width"),
1872
+ "onUpdate:modelValue": M[0] || (M[0] = (R) => f.value = Number(R))
1873
+ }, null, 8, ["model-value", "options", "aria-label"]),
1874
+ W("div", vn, [
1875
+ t.compact ? (i(), L(e(Le), {
1813
1876
  key: 0,
1814
- modelValue: y.value,
1815
- "onUpdate:modelValue": P[0] || (P[0] = (ee) => y.value = ee),
1816
- options: c.value,
1817
- size: "sm"
1818
- }, null, 8, ["modelValue", "options"])) : I("", !0),
1819
- t.url ? (i(), W(e(Y), {
1877
+ size: "sm",
1878
+ tone: "primary",
1879
+ icon: "edit",
1880
+ title: e(r)("field.blocks"),
1881
+ onClick: M[1] || (M[1] = (R) => s("edit"))
1882
+ }, null, 8, ["title"])) : z("", !0),
1883
+ t.url ? (i(), L(e(Le), {
1820
1884
  key: 1,
1821
1885
  size: "sm",
1822
- variant: "outline",
1886
+ icon: "external-link",
1887
+ tone: "neutral",
1888
+ title: e(r)("field.open-site"),
1823
1889
  href: t.url,
1824
1890
  target: "_blank",
1825
1891
  rel: "noopener"
1826
- }, {
1827
- default: p(() => [
1828
- $(m(e(r)("field.open-site")), 1)
1829
- ]),
1830
- _: 1
1831
- }, 8, ["href"])) : I("", !0),
1832
- u(e(Y), {
1892
+ }, null, 8, ["title", "href"])) : z("", !0),
1893
+ u(e(Le), {
1833
1894
  size: "sm",
1834
- variant: "outline",
1835
- onClick: P[1] || (P[1] = (ee) => d.value = !d.value)
1836
- }, {
1837
- default: p(() => [
1838
- $(m(d.value ? e(r)("field.close") : e(r)("field.fullscreen")), 1)
1839
- ]),
1840
- _: 1
1841
- })
1895
+ icon: p.value ? "minimize" : "maximize",
1896
+ tone: "neutral",
1897
+ title: p.value ? e(r)("field.close") : e(r)("field.fullscreen"),
1898
+ onClick: M[2] || (M[2] = (R) => p.value = !p.value)
1899
+ }, null, 8, ["icon", "title"])
1842
1900
  ])
1843
- ]),
1844
- S("div", {
1901
+ ], 512),
1902
+ W("div", {
1845
1903
  ref_key: "box",
1846
- ref: v,
1904
+ ref: I,
1847
1905
  class: "wx-blocks-preview__ground"
1848
1906
  }, [
1849
- S("div", {
1907
+ W("div", {
1850
1908
  class: "wx-blocks-preview__clip",
1851
- style: ce({ width: `${Math.round(T.value * f.value)}px` })
1909
+ style: we(H.value)
1852
1910
  }, [
1853
- t.url ? (i(), V("iframe", {
1911
+ t.url ? (i(), x("iframe", {
1854
1912
  key: 0,
1855
1913
  ref_key: "frame",
1856
1914
  ref: a,
1857
1915
  class: "wx-blocks-preview__frame",
1858
1916
  src: t.url,
1859
- style: ce(x.value),
1917
+ style: we(w.value),
1860
1918
  title: e(r)("field.preview"),
1861
- onLoad: J
1862
- }, null, 44, an)) : I("", !0)
1919
+ onLoad: _e
1920
+ }, null, 44, fn)) : z("", !0)
1863
1921
  ], 4)
1864
1922
  ], 512)
1865
1923
  ], 6));
1866
1924
  }
1867
- }), on = /* @__PURE__ */ X(sn, [["__scopeId", "data-v-1668a23e"]]), rn = { class: "wx-blocks-tree__node" }, un = ["onClick", "onKeydown"], cn = { class: "wx-blocks-tree__icon" }, dn = { class: "wx-blocks-tree__name" }, pn = ["title"], fn = ["title"], vn = ["title"], mn = ["title"], hn = {
1925
+ }), hn = /* @__PURE__ */ le(mn, [["__scopeId", "data-v-398e4cef"]]), bn = { class: "wx-blocks-tree__node" }, gn = ["onClick", "onKeydown"], kn = { class: "wx-blocks-tree__name" }, yn = ["title"], wn = ["title"], _n = ["title"], xn = ["title"], $n = {
1868
1926
  key: 4,
1869
1927
  class: "wx-blocks-tree__actions"
1870
- }, bn = ["onClick"], gn = /* @__PURE__ */ Q({
1928
+ }, Tn = ["onClick"], Sn = /* @__PURE__ */ te({
1871
1929
  __name: "BlocksTree",
1872
1930
  props: {
1873
1931
  nodes: {},
@@ -1880,141 +1938,133 @@ const Tl = { class: "wx-block-editor" }, Bl = { class: "wx-block-editor__columns
1880
1938
  },
1881
1939
  emits: ["select", "add", "remove", "duplicate", "visibility", "reorder"],
1882
1940
  setup(t, { emit: l }) {
1883
- const s = t, n = l, o = le("webx-blocks");
1884
- function r(g) {
1885
- return s.catalog.find((c) => c.slug === g.type) ?? null;
1886
- }
1887
- function a(g) {
1888
- return r(g)?.title ?? g.type;
1941
+ const o = t, n = l, s = re("webx-blocks");
1942
+ function r(p) {
1943
+ return o.catalog.find((b) => b.slug === p.type) ?? null;
1889
1944
  }
1890
- function v(g) {
1891
- const c = r(g);
1892
- return c?.content ? Ct(c.content.schema) : [];
1945
+ function a(p) {
1946
+ return r(p)?.title ?? p.type;
1893
1947
  }
1894
- function A(g, c) {
1895
- const T = g.values[c.id];
1896
- return Array.isArray(T) ? T : [];
1948
+ function h(p) {
1949
+ const b = r(p);
1950
+ return b?.content ? Ut(b.content.schema) : [];
1897
1951
  }
1898
- function d(g) {
1899
- return r(g)?.icon ?? "grid";
1952
+ function I(p, b) {
1953
+ const f = p.values[b.id];
1954
+ return Array.isArray(f) ? f : [];
1900
1955
  }
1901
- function y(g) {
1956
+ function d(p) {
1902
1957
  return [
1903
1958
  {
1904
1959
  key: "visibility",
1905
- icon: g.hidden === !0 ? "eye" : "eye-off",
1906
- label: g.hidden === !0 ? o("field.show") : o("field.hide"),
1907
- run: () => n("visibility", g.key, g.hidden !== !0)
1960
+ icon: p.hidden === !0 ? "eye" : "eye-off",
1961
+ label: p.hidden === !0 ? s("field.show") : s("field.hide"),
1962
+ run: () => n("visibility", p.key, p.hidden !== !0)
1908
1963
  },
1909
1964
  {
1910
1965
  key: "duplicate",
1911
1966
  icon: "copy",
1912
- label: o("field.duplicate"),
1913
- run: () => n("duplicate", g.key)
1967
+ label: s("field.duplicate"),
1968
+ run: () => n("duplicate", p.key)
1914
1969
  },
1915
1970
  {
1916
1971
  key: "remove",
1917
1972
  icon: "trash",
1918
- label: o("field.remove"),
1973
+ label: s("field.remove"),
1919
1974
  danger: !0,
1920
- run: () => n("remove", g.key)
1975
+ run: () => n("remove", p.key)
1921
1976
  }
1922
1977
  ];
1923
1978
  }
1924
- return (g, c) => {
1925
- const T = ft("blocks-tree", !0);
1926
- return i(), W(e(Yt), {
1979
+ return (p, b) => {
1980
+ const f = kt("blocks-tree", !0);
1981
+ return i(), L(e(sl), {
1927
1982
  "model-value": t.nodes,
1928
1983
  "item-key": "key",
1929
- "item-label": (f) => a(f),
1984
+ "item-label": (k) => a(k),
1930
1985
  disabled: t.disabled,
1931
1986
  plain: "",
1932
1987
  size: "sm",
1933
- "empty-text": t.depth === 0 ? e(o)("field.empty") : "",
1934
- class: be(["wx-blocks-tree", { "is-nested": t.depth > 0 }]),
1935
- "onUpdate:modelValue": c[6] || (c[6] = (f) => n("reorder", t.parentKey, t.field, f))
1988
+ "empty-text": t.depth === 0 ? e(s)("field.empty") : "",
1989
+ class: Be(["wx-blocks-tree", { "is-nested": t.depth > 0 }]),
1990
+ "onUpdate:modelValue": b[6] || (b[6] = (k) => n("reorder", t.parentKey, t.field, k))
1936
1991
  }, {
1937
- default: p(({ item: f }) => [
1938
- S("div", rn, [
1939
- S("div", {
1940
- class: be(["wx-blocks-tree__row", { "is-selected": t.selected === f.key, "is-hidden": f.hidden === !0 }]),
1992
+ default: c(({ item: k }) => [
1993
+ W("div", bn, [
1994
+ W("div", {
1995
+ class: Be(["wx-blocks-tree__row", { "is-selected": t.selected === k.key, "is-hidden": k.hidden === !0 }]),
1941
1996
  role: "button",
1942
1997
  tabindex: "0",
1943
- onClick: (x) => n("select", f.key),
1998
+ onClick: (B) => n("select", k.key),
1944
1999
  onKeydown: [
1945
- et(tt((x) => n("select", f.key), ["prevent"]), ["enter"]),
1946
- et(tt((x) => n("select", f.key), ["prevent"]), ["space"])
2000
+ st(it((B) => n("select", k.key), ["prevent"]), ["enter"]),
2001
+ st(it((B) => n("select", k.key), ["prevent"]), ["space"])
1947
2002
  ]
1948
2003
  }, [
1949
- S("span", cn, [
1950
- u(e(oe), {
1951
- name: d(f)
1952
- }, null, 8, ["name"])
1953
- ]),
1954
- S("span", dn, m(a(f)), 1),
1955
- r(f) ? r(f)?.draft ? (i(), V("span", {
2004
+ W("span", kn, y(a(k)), 1),
2005
+ r(k) ? r(k)?.draft ? (i(), x("span", {
1956
2006
  key: 1,
1957
2007
  class: "wx-blocks-tree__flag is-warning",
1958
- title: e(o)("field.draft-type")
2008
+ title: e(s)("field.draft-type")
1959
2009
  }, [
1960
- u(e(oe), { name: "warning" })
1961
- ], 8, fn)) : r(f)?.is_enabled === !1 ? (i(), V("span", {
2010
+ u(e(ve), { name: "warning" })
2011
+ ], 8, wn)) : r(k)?.is_enabled === !1 ? (i(), x("span", {
1962
2012
  key: 2,
1963
2013
  class: "wx-blocks-tree__flag",
1964
- title: e(o)("field.disabled-type")
2014
+ title: e(s)("field.disabled-type")
1965
2015
  }, [
1966
- u(e(oe), { name: "lock" })
1967
- ], 8, vn)) : I("", !0) : (i(), V("span", {
2016
+ u(e(ve), { name: "lock" })
2017
+ ], 8, _n)) : z("", !0) : (i(), x("span", {
1968
2018
  key: 0,
1969
2019
  class: "wx-blocks-tree__flag is-danger",
1970
- title: e(o)("field.unknown-type", { type: f.type })
2020
+ title: e(s)("field.unknown-type", { type: k.type })
1971
2021
  }, [
1972
- u(e(oe), { name: "close-circle" })
1973
- ], 8, pn)),
1974
- f.hidden === !0 ? (i(), V("span", {
2022
+ u(e(ve), { name: "close-circle" })
2023
+ ], 8, yn)),
2024
+ k.hidden === !0 ? (i(), x("span", {
1975
2025
  key: 3,
1976
2026
  class: "wx-blocks-tree__flag",
1977
- title: e(o)("field.hidden-note")
2027
+ title: e(s)("field.hidden-note")
1978
2028
  }, [
1979
- u(e(oe), { name: "eye-off" })
1980
- ], 8, mn)) : I("", !0),
1981
- t.disabled ? I("", !0) : (i(), V("span", hn, [
1982
- u(e(Ht), {
1983
- actions: y(f),
1984
- label: a(f)
2029
+ u(e(ve), { name: "eye-off" })
2030
+ ], 8, xn)) : z("", !0),
2031
+ t.disabled ? z("", !0) : (i(), x("span", $n, [
2032
+ u(e(Xt), {
2033
+ actions: d(k),
2034
+ label: a(k)
1985
2035
  }, null, 8, ["actions", "label"])
1986
2036
  ]))
1987
- ], 42, un),
1988
- (i(!0), V(j, null, te(v(f), (x) => (i(), V("div", {
1989
- key: x.id,
2037
+ ], 42, gn),
2038
+ (i(!0), x(j, null, ee(h(k), (B) => (i(), x("div", {
2039
+ key: B.id,
1990
2040
  class: "wx-blocks-tree__kids"
1991
2041
  }, [
1992
- u(T, {
1993
- nodes: A(f, x),
2042
+ u(f, {
2043
+ nodes: I(k, B),
1994
2044
  catalog: t.catalog,
1995
- "parent-key": f.key,
1996
- field: x.id,
2045
+ "parent-key": k.key,
2046
+ field: B.id,
1997
2047
  selected: t.selected,
1998
2048
  disabled: t.disabled,
1999
2049
  depth: t.depth + 1,
2000
- onSelect: c[0] || (c[0] = (k) => n("select", k)),
2001
- onAdd: c[1] || (c[1] = (k, h, w) => n("add", k, h, w)),
2002
- onRemove: c[2] || (c[2] = (k) => n("remove", k)),
2003
- onDuplicate: c[3] || (c[3] = (k) => n("duplicate", k)),
2004
- onVisibility: c[4] || (c[4] = (k, h) => n("visibility", k, h)),
2005
- onReorder: c[5] || (c[5] = (k, h, w) => n("reorder", k, h, w))
2050
+ onSelect: b[0] || (b[0] = (V) => n("select", V)),
2051
+ onAdd: b[1] || (b[1] = (V, _, g) => n("add", V, _, g)),
2052
+ onRemove: b[2] || (b[2] = (V) => n("remove", V)),
2053
+ onDuplicate: b[3] || (b[3] = (V) => n("duplicate", V)),
2054
+ onVisibility: b[4] || (b[4] = (V, _) => n("visibility", V, _)),
2055
+ onReorder: b[5] || (b[5] = (V, _, g) => n("reorder", V, _, g))
2006
2056
  }, null, 8, ["nodes", "catalog", "parent-key", "field", "selected", "disabled", "depth"]),
2007
- t.disabled ? I("", !0) : (i(), V("button", {
2057
+ t.disabled ? z("", !0) : (i(), x("button", {
2008
2058
  key: 0,
2009
2059
  type: "button",
2010
2060
  class: "wx-blocks-tree__add is-inner",
2011
- onClick: (k) => n("add", f.key, x.id, x)
2061
+ onClick: (V) => n("add", k.key, B.id, B)
2012
2062
  }, [
2013
- $(" + " + m(e(o)("field.add-inside")), 1),
2014
- v(f).length > 1 ? (i(), V(j, { key: 0 }, [
2015
- $(" · " + m(x.label ?? x.id), 1)
2016
- ], 64)) : I("", !0)
2017
- ], 8, bn))
2063
+ E(" + " + y(e(s)("field.add-inside")), 1),
2064
+ h(k).length > 1 ? (i(), x(j, { key: 0 }, [
2065
+ E(" · " + y(B.label ?? B.id), 1)
2066
+ ], 64)) : z("", !0)
2067
+ ], 8, Tn))
2018
2068
  ]))), 128))
2019
2069
  ])
2020
2070
  ]),
@@ -2022,27 +2072,33 @@ const Tl = { class: "wx-block-editor" }, Bl = { class: "wx-block-editor__columns
2022
2072
  }, 8, ["model-value", "item-label", "disabled", "empty-text", "class"]);
2023
2073
  };
2024
2074
  }
2025
- }), kn = /* @__PURE__ */ X(gn, [["__scopeId", "data-v-4c1e79ce"]]), Qe = /* @__PURE__ */ Symbol("wx-blocks-preview");
2026
- function ta(t) {
2027
- mt(Qe, t);
2075
+ }), Vn = /* @__PURE__ */ le(Sn, [["__scopeId", "data-v-590fa1d6"]]), nt = /* @__PURE__ */ Symbol("wx-blocks-preview");
2076
+ function pa(t) {
2077
+ wt(nt, t);
2028
2078
  }
2029
- function la() {
2030
- return Ne(Qe, null);
2079
+ function va() {
2080
+ return He(nt, null);
2031
2081
  }
2032
- const pt = /* @__PURE__ */ Symbol("wx-blocks-root"), yn = {
2082
+ const gt = /* @__PURE__ */ Symbol("wx-blocks-root"), Cn = {
2033
2083
  key: 0,
2034
2084
  class: "wx-blocks-nested"
2035
- }, wn = { class: "wx-blocks__tree" }, _n = { class: "wx-blocks__panel-head" }, xn = { class: "wx-blocks__panel-title" }, $n = { class: "wx-blocks__tools" }, Vn = {
2085
+ }, Bn = {
2036
2086
  key: 0,
2037
- class: "wx-blocks__fields"
2038
- }, Sn = { class: "wx-blocks__panel-head" }, Tn = { class: "wx-blocks__panel-title" }, Bn = { class: "wx-blocks__panel-extra" }, Cn = { class: "wx-blocks__form" }, En = {
2087
+ class: "wx-blocks__tree"
2088
+ }, En = { class: "wx-blocks__panel-head" }, Wn = { class: "wx-blocks__panel-title" }, An = { class: "wx-blocks__tools" }, Ln = {
2039
2089
  key: 1,
2090
+ class: "wx-blocks__fields"
2091
+ }, zn = { class: "wx-blocks__panel-head" }, Un = { class: "wx-blocks__panel-title" }, In = {
2092
+ key: 0,
2093
+ class: "wx-blocks__trail"
2094
+ }, Nn = ["onClick"], Pn = { class: "wx-blocks__panel-name" }, Mn = { class: "wx-blocks__panel-extra" }, On = { key: 0 }, Dn = { class: "wx-blocks__form" }, Rn = {
2095
+ key: 0,
2040
2096
  class: "wx-blocks__preview"
2041
- }, Wn = /* @__PURE__ */ Q({
2097
+ }, Hn = /* @__PURE__ */ te({
2042
2098
  name: "WxBlocks",
2043
2099
  inheritAttrs: !1,
2044
2100
  __name: "BlocksField",
2045
- props: /* @__PURE__ */ Pt({
2101
+ props: /* @__PURE__ */ Jt({
2046
2102
  node: { default: void 0 },
2047
2103
  context: { default: void 0 },
2048
2104
  name: { default: void 0 },
@@ -2051,311 +2107,401 @@ const pt = /* @__PURE__ */ Symbol("wx-blocks-root"), yn = {
2051
2107
  max: { default: null },
2052
2108
  catalog: { default: null },
2053
2109
  disabled: { type: Boolean, default: !1 },
2054
- blocksPath: { default: "/blocks" },
2055
- fill: { type: Boolean, default: !1 }
2110
+ blocksPath: { default: "/blocks" }
2056
2111
  }, {
2057
2112
  modelValue: { default: () => [] },
2058
2113
  modelModifiers: {}
2059
2114
  }),
2060
2115
  emits: ["update:modelValue"],
2061
2116
  setup(t) {
2062
- const l = t, s = Ut(t, "modelValue"), n = Ne(pt, !1);
2063
- mt(pt, !0), Ee();
2064
- const o = le("webx-blocks"), r = Ce(), a = Ne(Ft, null);
2065
- let v = null;
2066
- const A = U([]), d = B(() => l.catalog ?? A.value), y = B(() => Array.isArray(s.value) ? s.value : []), g = U(null), c = B(() => g.value ? se(y.value, g.value) : null), T = B(
2067
- () => c.value ? d.value.find((C) => C.slug === c.value?.node.type) ?? null : null
2068
- ), f = Ne(Qe, null), x = U(null), k = B(
2069
- () => a?.state.manifest?.modules.find((C) => C.id === "blocks")?.meta?.groups ?? []
2070
- ), h = Nt()?.type, w = B(() => l.context?.types ? l.context.types : a?.types ? { ...He, ...a.types } : h ? { ...He, "wx-blocks": { component: h, kind: "field", nested: !0 } } : He), O = B(
2071
- () => l.context?.translate ?? a?.i18n.t ?? ((C) => C)
2072
- ), J = B(() => l.context?.can ?? a?.can ?? (() => !0)), ne = xt(tn);
2073
- function F(C) {
2074
- s.value = C;
2117
+ const l = t, o = Ht(t, "modelValue"), n = He(gt, !1);
2118
+ wt(gt, !0), Me();
2119
+ const s = re("webx-blocks"), r = Ne(), a = He(el, null);
2120
+ let h = null;
2121
+ const I = N([]), d = T(() => l.catalog ?? I.value), p = T(() => Array.isArray(o.value) ? o.value : []), b = N(null), f = T(() => b.value ? se(p.value, b.value) : null), k = T(
2122
+ () => f.value ? d.value.find((m) => m.slug === f.value?.node.type) ?? null : null
2123
+ );
2124
+ function B(m) {
2125
+ return d.value.find((A) => A.slug === m.type)?.title ?? m.type;
2126
+ }
2127
+ const V = T(() => {
2128
+ const m = [];
2129
+ return Pe(p.value, (A) => m.push(A.key)), m;
2130
+ }), _ = T(() => {
2131
+ const m = b.value ? V.value.indexOf(b.value) : -1;
2132
+ return {
2133
+ previous: m > 0 ? V.value[m - 1] : null,
2134
+ next: m >= 0 && m < V.value.length - 1 ? V.value[m + 1] : null
2135
+ };
2136
+ }), g = T(() => {
2137
+ const m = [];
2138
+ let A = f.value?.parent ?? null;
2139
+ for (; A; )
2140
+ m.unshift({ key: A.key, title: B(A) }), A = se(p.value, A.key)?.parent ?? null;
2141
+ return m;
2142
+ }), w = He(nt, null), H = N(null), K = N(null), Z = qe(K), ne = T(() => w !== null && w.url.value !== null), C = T(() => ne.value && Z.value > 0 && Z.value <= 900), P = N(!1), O = T(() => {
2143
+ if (!f.value) return;
2144
+ const m = k.value?.title ?? f.value.node.type;
2145
+ return [...g.value.map((A) => A.title), m].join(" / ");
2146
+ }), q = T(
2147
+ () => C.value ? {
2148
+ /* Up from the bottom, and not all the way: the strip of page left above it is what
2149
+ says the sheet is over the page rather than instead of it. No heading of its own —
2150
+ the panels inside carry theirs, and the × is the one thing the sheet has to add. */
2151
+ side: "bottom",
2152
+ size: "88%",
2153
+ /* Off, or the size above is ignored on exactly the screens this is for: a drawer
2154
+ takes a narrow screen whole unless it is told not to. */
2155
+ fullScreen: !1,
2156
+ closable: !0,
2157
+ closeLabel: s("field.close"),
2158
+ ariaLabel: s("field.blocks"),
2159
+ /* The open block's name goes in the sheet's own head, where there is a whole line for
2160
+ it: in the form's head it shared a row with four controls and wrapped onto two. With
2161
+ the blocks it is inside spelled out in front of it, because the trail that says so
2162
+ in the column is part of the heading this replaces. The tree keeps its own heading,
2163
+ which already says what it is and how many. */
2164
+ title: O.value,
2165
+ open: P.value,
2166
+ "onUpdate:open": (m) => P.value = m
2167
+ } : {}
2168
+ ), _e = T(
2169
+ () => a?.state.manifest?.modules.find((m) => m.id === "blocks")?.meta?.groups ?? []
2170
+ ), ue = jt()?.type, ae = T(() => l.context?.types ? l.context.types : a?.types ? { ...Ge, ...a.types } : ue ? { ...Ge, "wx-blocks": { component: ue, kind: "field", nested: !0 } } : Ge), ke = T(
2171
+ () => l.context?.translate ?? a?.i18n.t ?? ((m) => m)
2172
+ ), xe = T(() => l.context?.can ?? a?.can ?? (() => !0)), he = Bt(pn);
2173
+ function Q(m) {
2174
+ o.value = m;
2075
2175
  }
2076
- async function z(C, M, D) {
2077
- const K = C ? se(y.value, C) : null, Z = K ? d.value.find((Ve) => Ve.slug === K.node.type) ?? null : null, Re = C === null ? l.allow : D?.props?.allow ?? null, ue = C === null ? l.max : D?.props?.max ?? null, xe = C === null ? y.value : K && M ? K.node.values[M] ?? [] : [];
2078
- if (ue != null && xe.length >= ue) return;
2079
- const $e = await ne({
2176
+ async function $e(m, A, D) {
2177
+ const S = m ? se(p.value, m) : null, v = S ? d.value.find((Dt) => Dt.slug === S.node.type) ?? null : null, $ = m === null ? l.allow : D?.props?.allow ?? null, Oe = m === null ? l.max : D?.props?.max ?? null, at = m === null ? p.value : S && A ? S.node.values[A] ?? [] : [];
2178
+ if (Oe != null && at.length >= Oe) return;
2179
+ const Ke = await he({
2080
2180
  catalog: d.value,
2081
- parent: Z,
2082
- allow: Re,
2083
- tree: y.value,
2084
- groups: k.value,
2181
+ parent: v,
2182
+ allow: $,
2183
+ tree: p.value,
2184
+ groups: _e.value,
2085
2185
  blocksPath: l.blocksPath
2086
2186
  });
2087
- if (!$e) return;
2088
- const ze = vl($e.slug, N($e));
2089
- F(ut(y.value, C, M, xe.length, ze)), g.value = ze.key;
2187
+ if (!Ke) return;
2188
+ const ot = $l(Ke.slug, be(Ke));
2189
+ Q(mt(p.value, m, A, at.length, ot)), b.value = ot.key;
2090
2190
  }
2091
- function N(C) {
2092
- const M = C.content?.sample ?? {}, D = {};
2093
- for (const [K, Z] of Object.entries(M))
2094
- (!Array.isArray(Z) || Z.length === 0 || typeof Z[0] != "object") && (D[K] = Z);
2191
+ function be(m) {
2192
+ const A = m.content?.sample ?? {}, D = {};
2193
+ for (const [S, v] of Object.entries(A))
2194
+ (!Array.isArray(v) || v.length === 0 || typeof v[0] != "object") && (D[S] = v);
2095
2195
  return D;
2096
2196
  }
2097
- async function L(C) {
2098
- const M = se(y.value, C);
2099
- if (!M) return;
2100
- const D = hl(M.node);
2101
- await Me({
2102
- title: o("field.remove-title", {
2103
- title: d.value.find((Z) => Z.slug === M.node.type)?.title ?? M.node.type
2197
+ async function de(m) {
2198
+ const A = se(p.value, m);
2199
+ if (!A) return;
2200
+ const D = Sl(A.node);
2201
+ await Fe({
2202
+ title: s("field.remove-title", {
2203
+ title: d.value.find((v) => v.slug === A.node.type)?.title ?? A.node.type
2104
2204
  }),
2105
- message: D > 0 ? o("field.remove-text", { count: D }) : o("field.remove-alone"),
2106
- confirmText: o("field.remove"),
2107
- cancelText: o("page.cancel"),
2205
+ message: D > 0 ? s("field.remove-text", { count: D }) : s("field.remove-alone"),
2206
+ confirmText: s("field.remove"),
2207
+ cancelText: s("page.cancel"),
2108
2208
  tone: "danger"
2109
- }) && (g.value === C && (g.value = null), F(kl(y.value, C)));
2209
+ }) && (b.value === m && (b.value = null), Q(Bl(p.value, m)));
2110
2210
  }
2111
- function P(C) {
2112
- const M = se(y.value, C);
2113
- if (!M) return;
2114
- const D = Et(M.node);
2115
- F(ut(y.value, M.parent?.key ?? null, M.field, M.index + 1, D)), g.value = D.key;
2211
+ function U(m) {
2212
+ const A = se(p.value, m);
2213
+ if (!A) return;
2214
+ const D = It(A.node);
2215
+ Q(mt(p.value, A.parent?.key ?? null, A.field, A.index + 1, D)), b.value = D.key;
2116
2216
  }
2117
- function ee(C, M) {
2118
- F(bl(y.value, C, M));
2217
+ function M(m, A) {
2218
+ Q(Vl(p.value, m, A));
2119
2219
  }
2120
- function de(C, M, D) {
2121
- F(wl(y.value, C, M, D));
2220
+ function R(m, A, D) {
2221
+ Q(Wl(p.value, m, A, D));
2122
2222
  }
2123
- function We(C) {
2124
- g.value = g.value === C ? null : C;
2223
+ function G(m) {
2224
+ b.value = b.value === m ? null : m;
2125
2225
  }
2126
- function Ae(C) {
2127
- C === null || !se(y.value, C) || (g.value = C);
2226
+ function ce(m) {
2227
+ m === null || !se(p.value, m) || (b.value = m, C.value && (P.value = !0));
2128
2228
  }
2129
- function we() {
2130
- g.value = null;
2229
+ function pe() {
2230
+ b.value = null;
2131
2231
  }
2132
- function pe(C) {
2133
- g.value && F(yl(y.value, g.value, C));
2232
+ function oe(m) {
2233
+ b.value && Q(El(p.value, b.value, m));
2134
2234
  }
2135
- let fe;
2136
- ie(
2137
- () => c.value?.node.values,
2138
- (C, M) => {
2139
- if (!C || !M || !T.value || !v || !f) return;
2140
- const D = g.value, K = T.value.id;
2141
- clearTimeout(fe), fe = setTimeout(() => {
2142
- !D || !v || v.render(K, { values: C, key: D }).then((Z) => {
2143
- x.value?.replace(D, Z.html) || x.value?.refresh();
2235
+ let ge;
2236
+ fe(
2237
+ () => f.value?.node.values,
2238
+ (m, A) => {
2239
+ if (!m || !A || !k.value || !h || !w) return;
2240
+ const D = b.value, S = k.value.id;
2241
+ clearTimeout(ge), ge = setTimeout(() => {
2242
+ !D || !h || h.render(S, { values: m, key: D }).then((v) => {
2243
+ H.value?.replace(D, v.html) || H.value?.refresh();
2144
2244
  }).catch(() => {
2145
2245
  });
2146
2246
  }, 300);
2147
2247
  },
2148
2248
  { deep: !0 }
2149
2249
  );
2150
- function Le(C) {
2151
- C.key === "Escape" && g.value && we();
2250
+ function Te(m) {
2251
+ m.key === "Escape" && b.value && pe();
2152
2252
  }
2153
- Te(async () => {
2154
- if (window.addEventListener("keydown", Le), l.catalog === null && a) {
2155
- v = ke(a);
2253
+ Ue(async () => {
2254
+ if (window.addEventListener("keydown", Te), l.catalog === null && a) {
2255
+ h = We(a);
2156
2256
  try {
2157
- A.value = await v.catalog();
2158
- } catch (C) {
2159
- H.danger(r(C));
2257
+ I.value = await h.catalog();
2258
+ } catch (m) {
2259
+ J.danger(r(m));
2160
2260
  }
2161
- } else a && (v = ke(a));
2162
- }), Je(() => {
2163
- clearTimeout(fe), window.removeEventListener("keydown", Le);
2261
+ } else a && (h = We(a));
2262
+ }), Xe(() => {
2263
+ clearTimeout(ge), window.removeEventListener("keydown", Te);
2164
2264
  });
2165
- const _e = B(
2166
- () => T.value?.content ? Ye(T.value.content.schema) : []
2265
+ const ye = T(
2266
+ () => k.value?.content ? lt(k.value.content.schema) : []
2167
2267
  );
2168
- return (C, M) => e(n) ? (i(), V("div", yn, [
2169
- u(e(R), {
2268
+ return (m, A) => e(n) ? (i(), x("div", Cn, [
2269
+ u(e(F), {
2170
2270
  size: "sm",
2171
2271
  tone: "muted"
2172
2272
  }, {
2173
- default: p(() => [
2174
- $(m(e(o)("field.nested-note")), 1)
2273
+ default: c(() => [
2274
+ E(y(e(s)("field.nested-note")), 1)
2175
2275
  ]),
2176
2276
  _: 1
2177
2277
  })
2178
- ])) : (i(), V("div", {
2278
+ ])) : (i(), x("div", {
2179
2279
  key: 1,
2180
- class: be(["wx-blocks-host", { "is-fill": t.fill }])
2280
+ ref_key: "host",
2281
+ ref: K,
2282
+ class: Be(["wx-blocks-host", { "is-compact": C.value }])
2181
2283
  }, [
2182
- S("div", {
2183
- class: be(["wx-blocks", {
2184
- "is-editing": c.value !== null,
2185
- "has-preview": e(f) !== null && e(f).url.value !== null
2284
+ W("div", {
2285
+ class: Be(["wx-blocks", {
2286
+ "is-editing": f.value !== null,
2287
+ "has-preview": e(w) !== null && e(w).url.value !== null
2186
2288
  }])
2187
2289
  }, [
2188
- S("div", wn, [
2189
- S("div", _n, [
2190
- S("span", xn, m(e(o)("field.blocks")), 1),
2191
- u(e(R), {
2192
- size: "sm",
2193
- tone: "muted"
2194
- }, {
2195
- default: p(() => [
2196
- $(m(y.value.length), 1)
2197
- ]),
2198
- _: 1
2199
- })
2200
- ]),
2201
- u(kn, {
2202
- nodes: y.value,
2203
- catalog: d.value,
2204
- selected: g.value,
2205
- disabled: t.disabled,
2206
- onSelect: We,
2207
- onAdd: z,
2208
- onRemove: L,
2209
- onDuplicate: P,
2210
- onVisibility: ee,
2211
- onReorder: de
2212
- }, null, 8, ["nodes", "catalog", "selected", "disabled"]),
2213
- S("div", $n, [
2214
- !t.disabled && (t.max === null || y.value.length < t.max) ? (i(), W(e(Y), {
2215
- key: 0,
2216
- variant: "outline",
2217
- icon: "plus",
2218
- class: "wx-blocks__add",
2219
- onClick: M[0] || (M[0] = (D) => z(null, null, null))
2220
- }, {
2221
- default: p(() => [
2222
- $(m(e(o)("field.add")), 1)
2223
- ]),
2224
- _: 1
2225
- })) : I("", !0),
2226
- e(f) && e(f).url.value ? (i(), W(e(Y), {
2227
- key: 1,
2228
- variant: "outline",
2229
- icon: "eye",
2230
- class: "wx-blocks__preview-button",
2231
- onClick: M[1] || (M[1] = (D) => x.value?.open())
2232
- }, {
2233
- default: p(() => [
2234
- $(m(e(o)("field.preview")), 1)
2290
+ (i(), L(Ft(C.value ? e(il) : "div"), qt(q.value, { class: "wx-blocks__side" }), {
2291
+ default: c(() => [
2292
+ f.value ? z("", !0) : (i(), x("div", Bn, [
2293
+ W("div", En, [
2294
+ W("span", Wn, y(e(s)("field.blocks")), 1),
2295
+ u(e(F), {
2296
+ size: "sm",
2297
+ tone: "muted"
2298
+ }, {
2299
+ default: c(() => [
2300
+ E(y(p.value.length), 1)
2301
+ ]),
2302
+ _: 1
2303
+ })
2235
2304
  ]),
2236
- _: 1
2237
- })) : I("", !0)
2238
- ])
2239
- ]),
2240
- c.value ? (i(), V("div", Vn, [
2241
- S("div", Sn, [
2242
- S("span", Tn, m(T.value?.title ?? c.value.node.type), 1),
2243
- S("span", Bn, [
2244
- S("code", null, m(c.value.node.type), 1),
2245
- u(e(Y), {
2246
- size: "sm",
2247
- variant: "outline",
2248
- onClick: we
2249
- }, {
2250
- default: p(() => [
2251
- $(m(e(o)("field.done")) + " · Esc", 1)
2305
+ u(Vn, {
2306
+ nodes: p.value,
2307
+ catalog: d.value,
2308
+ selected: b.value,
2309
+ disabled: t.disabled,
2310
+ onSelect: G,
2311
+ onAdd: $e,
2312
+ onRemove: de,
2313
+ onDuplicate: U,
2314
+ onVisibility: M,
2315
+ onReorder: R
2316
+ }, null, 8, ["nodes", "catalog", "selected", "disabled"]),
2317
+ W("div", An, [
2318
+ !t.disabled && (t.max === null || p.value.length < t.max) ? (i(), L(e(ie), {
2319
+ key: 0,
2320
+ variant: "outline",
2321
+ icon: "plus",
2322
+ class: "wx-blocks__add",
2323
+ onClick: A[0] || (A[0] = (D) => $e(null, null, null))
2324
+ }, {
2325
+ default: c(() => [
2326
+ E(y(e(s)("field.add")), 1)
2327
+ ]),
2328
+ _: 1
2329
+ })) : z("", !0),
2330
+ !C.value && e(w) && e(w).url.value ? (i(), L(e(ie), {
2331
+ key: 1,
2332
+ variant: "outline",
2333
+ icon: "eye",
2334
+ class: "wx-blocks__preview-button",
2335
+ onClick: A[1] || (A[1] = (D) => H.value?.open())
2336
+ }, {
2337
+ default: c(() => [
2338
+ E(y(e(s)("field.preview")), 1)
2339
+ ]),
2340
+ _: 1
2341
+ })) : z("", !0)
2342
+ ])
2343
+ ])),
2344
+ f.value ? (i(), x("div", Ln, [
2345
+ W("div", zn, [
2346
+ W("span", Un, [
2347
+ g.value.length ? (i(), x("span", In, [
2348
+ (i(!0), x(j, null, ee(g.value, (D) => (i(), x(j, {
2349
+ key: D.key
2350
+ }, [
2351
+ W("button", {
2352
+ type: "button",
2353
+ class: "wx-blocks__trail-step",
2354
+ onClick: (S) => G(D.key)
2355
+ }, y(D.title), 9, Nn),
2356
+ u(e(ve), { name: "chevron-right" })
2357
+ ], 64))), 128))
2358
+ ])) : z("", !0),
2359
+ W("span", Pn, y(k.value?.title ?? f.value.node.type), 1)
2252
2360
  ]),
2253
- _: 1
2254
- })
2255
- ])
2256
- ]),
2257
- S("div", Cn, [
2258
- T.value?.content ? (i(), W(e($t), {
2259
- key: c.value.node.key,
2260
- "model-value": c.value.node.values,
2261
- root: _e.value,
2262
- types: w.value,
2263
- translate: O.value,
2264
- can: J.value,
2265
- disabled: t.disabled,
2266
- "onUpdate:modelValue": pe
2267
- }, null, 8, ["model-value", "root", "types", "translate", "can", "disabled"])) : (i(), W(e(R), {
2268
- key: 1,
2269
- size: "sm",
2270
- tone: "danger"
2271
- }, {
2272
- default: p(() => [
2273
- $(m(e(o)("field.unknown-type", { type: c.value.node.type })), 1)
2361
+ W("span", Mn, [
2362
+ C.value ? z("", !0) : (i(), x("code", On, y(f.value.node.type), 1)),
2363
+ u(e(Le), {
2364
+ size: "sm",
2365
+ tone: "neutral",
2366
+ icon: "chevron-up",
2367
+ title: e(s)("field.previous"),
2368
+ disabled: _.value.previous === null,
2369
+ onClick: A[2] || (A[2] = (D) => _.value.previous && G(_.value.previous))
2370
+ }, null, 8, ["title", "disabled"]),
2371
+ u(e(Le), {
2372
+ size: "sm",
2373
+ tone: "neutral",
2374
+ icon: "chevron-down",
2375
+ title: e(s)("field.next"),
2376
+ disabled: _.value.next === null,
2377
+ onClick: A[3] || (A[3] = (D) => _.value.next && G(_.value.next))
2378
+ }, null, 8, ["title", "disabled"]),
2379
+ !C.value && e(w) && e(w).url.value ? (i(), L(e(ie), {
2380
+ key: 1,
2381
+ size: "sm",
2382
+ variant: "outline",
2383
+ icon: "eye",
2384
+ class: "wx-blocks__preview-button",
2385
+ "aria-label": e(s)("field.preview"),
2386
+ onClick: A[4] || (A[4] = (D) => H.value?.open())
2387
+ }, null, 8, ["aria-label"])) : z("", !0),
2388
+ u(e(ie), {
2389
+ size: "sm",
2390
+ variant: "outline",
2391
+ onClick: pe
2392
+ }, {
2393
+ default: c(() => [
2394
+ E(y(C.value ? e(s)("field.done") : `${e(s)("field.done")} · Esc`), 1)
2395
+ ]),
2396
+ _: 1
2397
+ })
2398
+ ])
2274
2399
  ]),
2275
- _: 1
2276
- }))
2277
- ])
2278
- ])) : I("", !0),
2279
- e(f) && e(f).url.value ? (i(), V("div", En, [
2280
- u(on, {
2400
+ W("div", Dn, [
2401
+ k.value?.content ? (i(), L(e(Et), {
2402
+ key: f.value.node.key,
2403
+ "model-value": f.value.node.values,
2404
+ root: ye.value,
2405
+ types: ae.value,
2406
+ translate: ke.value,
2407
+ can: xe.value,
2408
+ disabled: t.disabled,
2409
+ "onUpdate:modelValue": oe
2410
+ }, null, 8, ["model-value", "root", "types", "translate", "can", "disabled"])) : (i(), L(e(F), {
2411
+ key: 1,
2412
+ size: "sm",
2413
+ tone: "danger"
2414
+ }, {
2415
+ default: c(() => [
2416
+ E(y(e(s)("field.unknown-type", { type: f.value.node.type })), 1)
2417
+ ]),
2418
+ _: 1
2419
+ }))
2420
+ ])
2421
+ ])) : z("", !0)
2422
+ ]),
2423
+ _: 1
2424
+ }, 16)),
2425
+ e(w) && e(w).url.value ? (i(), x("div", Rn, [
2426
+ u(hn, {
2281
2427
  ref_key: "previewEl",
2282
- ref: x,
2283
- url: e(f).url.value,
2284
- selected: g.value,
2285
- mode: c.value ? "phone" : "wide",
2286
- reload: e(f).reload?.value ?? 0,
2287
- fill: t.fill,
2288
- onSelect: Ae
2289
- }, null, 8, ["url", "selected", "mode", "reload", "fill"])
2290
- ])) : I("", !0)
2428
+ ref: H,
2429
+ url: e(w).url.value,
2430
+ selected: b.value,
2431
+ reload: e(w).reload?.value ?? 0,
2432
+ compact: C.value,
2433
+ onSelect: ce,
2434
+ onEdit: A[5] || (A[5] = (D) => P.value = !0)
2435
+ }, null, 8, ["url", "selected", "reload", "compact"])
2436
+ ])) : z("", !0)
2291
2437
  ], 2)
2292
2438
  ], 2));
2293
2439
  }
2294
- }), An = /* @__PURE__ */ X(Wn, [["__scopeId", "data-v-ed183a09"]]), Ln = { class: "wx-block-card__body" }, zn = { class: "wx-block-card__title" }, In = { class: "wx-block-card__chips" }, Un = /* @__PURE__ */ Q({
2440
+ }), jn = /* @__PURE__ */ le(Hn, [["__scopeId", "data-v-613ad857"]]), Fn = { class: "wx-block-card__body" }, qn = { class: "wx-block-card__title" }, Jn = { class: "wx-block-card__chips" }, Kn = /* @__PURE__ */ te({
2295
2441
  __name: "BlockCard",
2296
2442
  props: {
2297
2443
  block: {}
2298
2444
  },
2299
2445
  emits: ["open"],
2300
2446
  setup(t, { emit: l }) {
2301
- const s = l, n = le("webx-blocks");
2302
- return (o, r) => (i(), V("button", {
2447
+ const o = l, n = re("webx-blocks");
2448
+ return (s, r) => (i(), x("button", {
2303
2449
  type: "button",
2304
2450
  class: "wx-block-card",
2305
- onClick: r[0] || (r[0] = (a) => s("open", t.block))
2451
+ onClick: r[0] || (r[0] = (a) => o("open", t.block))
2306
2452
  }, [
2307
- u(zt, {
2453
+ u(Ot, {
2308
2454
  thumbnail: t.block.thumbnail,
2309
2455
  height: 120
2310
2456
  }, null, 8, ["thumbnail"]),
2311
- S("div", Ln, [
2312
- S("div", zn, m(t.block.title), 1),
2313
- u(e(R), {
2457
+ W("div", Fn, [
2458
+ W("div", qn, y(t.block.title), 1),
2459
+ u(e(F), {
2314
2460
  size: "sm",
2315
2461
  tone: "muted"
2316
2462
  }, {
2317
- default: p(() => [
2318
- S("code", null, m(t.block.slug), 1),
2319
- $(" · " + m(t.block.usage_count > 0 ? e(n)("page.on-pages", { count: t.block.usage_count }) : e(n)("page.not-used")), 1)
2463
+ default: c(() => [
2464
+ W("code", null, y(t.block.slug), 1),
2465
+ E(" · " + y(t.block.usage_count > 0 ? e(n)("page.on-pages", { count: t.block.usage_count }) : e(n)("page.not-used")), 1)
2320
2466
  ]),
2321
2467
  _: 1
2322
2468
  }),
2323
- S("div", In, [
2324
- t.block.draft ? (i(), W(e(q), {
2469
+ W("div", Jn, [
2470
+ t.block.draft ? (i(), L(e(Y), {
2325
2471
  key: 0,
2326
2472
  type: "warning",
2327
2473
  dot: ""
2328
2474
  }, {
2329
- default: p(() => [
2330
- $(m(e(n)("page.draft", { number: t.block.draft.number })), 1)
2475
+ default: c(() => [
2476
+ E(y(e(n)("page.draft", { number: t.block.draft.number })), 1)
2331
2477
  ]),
2332
2478
  _: 1
2333
- })) : I("", !0),
2334
- t.block.published ? (i(), W(e(q), {
2479
+ })) : z("", !0),
2480
+ t.block.published ? (i(), L(e(Y), {
2335
2481
  key: 1,
2336
2482
  type: "success",
2337
2483
  dot: ""
2338
2484
  }, {
2339
- default: p(() => [
2340
- $(m(e(n)("page.live", { number: t.block.published.number })), 1)
2485
+ default: c(() => [
2486
+ E(y(e(n)("page.live", { number: t.block.published.number })), 1)
2341
2487
  ]),
2342
2488
  _: 1
2343
- })) : (i(), W(e(q), {
2489
+ })) : (i(), L(e(Y), {
2344
2490
  key: 2,
2345
2491
  type: "default"
2346
2492
  }, {
2347
- default: p(() => [
2348
- $(m(e(n)("page.never-published")), 1)
2493
+ default: c(() => [
2494
+ E(y(e(n)("page.never-published")), 1)
2349
2495
  ]),
2350
2496
  _: 1
2351
2497
  })),
2352
- t.block.is_enabled ? I("", !0) : (i(), W(e(q), {
2498
+ t.block.is_enabled ? z("", !0) : (i(), L(e(Y), {
2353
2499
  key: 3,
2354
2500
  type: "default",
2355
2501
  variant: "outline"
2356
2502
  }, {
2357
- default: p(() => [
2358
- $(m(e(n)("page.hidden")), 1)
2503
+ default: c(() => [
2504
+ E(y(e(n)("page.hidden")), 1)
2359
2505
  ]),
2360
2506
  _: 1
2361
2507
  }))
@@ -2363,62 +2509,62 @@ const pt = /* @__PURE__ */ Symbol("wx-blocks-root"), yn = {
2363
2509
  ])
2364
2510
  ]));
2365
2511
  }
2366
- }), Nn = /* @__PURE__ */ X(Un, [["__scopeId", "data-v-daa12de4"]]), Pn = { class: "wx-block-create" }, Mn = /* @__PURE__ */ Q({
2512
+ }), Zn = /* @__PURE__ */ le(Kn, [["__scopeId", "data-v-daa12de4"]]), Gn = { class: "wx-block-create" }, Yn = /* @__PURE__ */ te({
2367
2513
  __name: "BlockCreateDialog",
2368
2514
  setup(t) {
2369
- const { resolve: l, dismiss: s, open: n } = yt(), o = Be(), r = ke(o);
2370
- Ee();
2371
- const a = le("webx-blocks"), v = Ce(), A = B(() => o.state.manifest?.modules.find((w) => w.id === "blocks")?.meta?.groups ?? ["content"]), d = U({ title: "", slug: "", group: A.value[0] ?? "content" }), y = U({}), g = U(!1), c = U(!1), T = B(
2372
- () => A.value.map((h) => ({ value: h, label: ye(h, a) }))
2515
+ const { resolve: l, dismiss: o, open: n } = St(), s = Ie(), r = We(s);
2516
+ Me();
2517
+ const a = re("webx-blocks"), h = Ne(), I = T(() => s.state.manifest?.modules.find((w) => w.id === "blocks")?.meta?.groups ?? ["content"]), d = N({ title: "", slug: "", group: I.value[0] ?? "content" }), p = N({}), b = N(!1), f = N(!1), k = T(
2518
+ () => I.value.map((g) => ({ value: g, label: Ae(g, a) }))
2373
2519
  );
2374
- function f(h) {
2375
- return h.toLowerCase().replace(/[^a-z0-9]+/g, "-").replace(/^-+|-+$/g, "").replace(/^[^a-z]+/, "").slice(0, 64);
2520
+ function B(g) {
2521
+ return g.toLowerCase().replace(/[^a-z0-9]+/g, "-").replace(/^-+|-+$/g, "").replace(/^[^a-z]+/, "").slice(0, 64);
2376
2522
  }
2377
- ie(
2523
+ fe(
2378
2524
  () => d.value.title,
2379
- (h) => {
2380
- c.value || (d.value.slug = f(h));
2525
+ (g) => {
2526
+ f.value || (d.value.slug = B(g));
2381
2527
  }
2382
2528
  );
2383
- function x(h) {
2384
- return y.value[h]?.[0];
2529
+ function V(g) {
2530
+ return p.value[g]?.[0];
2385
2531
  }
2386
- async function k() {
2387
- g.value = !0, y.value = {};
2532
+ async function _() {
2533
+ b.value = !0, p.value = {};
2388
2534
  try {
2389
2535
  l(await r.create(d.value));
2390
- } catch (h) {
2391
- const w = h.body;
2392
- w?.errors ? y.value = w.errors : H.danger(v(h, a("page.failed")));
2536
+ } catch (g) {
2537
+ const w = g.body;
2538
+ w?.errors ? p.value = w.errors : J.danger(h(g, a("page.failed")));
2393
2539
  } finally {
2394
- g.value = !1;
2540
+ b.value = !1;
2395
2541
  }
2396
2542
  }
2397
- return (h, w) => (i(), W(e(wt), {
2543
+ return (g, w) => (i(), L(e(Vt), {
2398
2544
  open: e(n),
2399
- "onUpdate:open": w[5] || (w[5] = (O) => vt(n) ? n.value = O : null),
2545
+ "onUpdate:open": w[5] || (w[5] = (H) => yt(n) ? n.value = H : null),
2400
2546
  title: e(a)("page.new"),
2401
2547
  width: 520
2402
2548
  }, {
2403
- footer: p(() => [
2404
- u(e(Qt), { size: "sm" }, {
2405
- default: p(() => [
2406
- u(e(Y), {
2549
+ footer: c(() => [
2550
+ u(e(rl), { size: "sm" }, {
2551
+ default: c(() => [
2552
+ u(e(ie), {
2407
2553
  variant: "outline",
2408
- onClick: w[4] || (w[4] = (O) => e(s)())
2554
+ onClick: w[4] || (w[4] = (H) => e(o)())
2409
2555
  }, {
2410
- default: p(() => [
2411
- $(m(e(a)("page.cancel")), 1)
2556
+ default: c(() => [
2557
+ E(y(e(a)("page.cancel")), 1)
2412
2558
  ]),
2413
2559
  _: 1
2414
2560
  }),
2415
- u(e(Y), {
2561
+ u(e(ie), {
2416
2562
  type: "primary",
2417
- loading: g.value,
2418
- onClick: k
2563
+ loading: b.value,
2564
+ onClick: _
2419
2565
  }, {
2420
- default: p(() => [
2421
- $(m(e(a)("page.create")), 1)
2566
+ default: c(() => [
2567
+ E(y(e(a)("page.create")), 1)
2422
2568
  ]),
2423
2569
  _: 1
2424
2570
  }, 8, ["loading"])
@@ -2426,46 +2572,46 @@ const pt = /* @__PURE__ */ Symbol("wx-blocks-root"), yn = {
2426
2572
  _: 1
2427
2573
  })
2428
2574
  ]),
2429
- default: p(() => [
2430
- S("div", Pn, [
2431
- u(e(G), {
2575
+ default: c(() => [
2576
+ W("div", Gn, [
2577
+ u(e(X), {
2432
2578
  label: e(a)("page.title"),
2433
- error: x("title")
2579
+ error: V("title")
2434
2580
  }, {
2435
- default: p(() => [
2436
- u(e(ge), {
2581
+ default: c(() => [
2582
+ u(e(Ee), {
2437
2583
  modelValue: d.value.title,
2438
- "onUpdate:modelValue": w[0] || (w[0] = (O) => d.value.title = O),
2584
+ "onUpdate:modelValue": w[0] || (w[0] = (H) => d.value.title = H),
2439
2585
  autofocus: ""
2440
2586
  }, null, 8, ["modelValue"])
2441
2587
  ]),
2442
2588
  _: 1
2443
2589
  }, 8, ["label", "error"]),
2444
- u(e(G), {
2590
+ u(e(X), {
2445
2591
  label: e(a)("page.identifier"),
2446
2592
  help: e(a)("page.identifier-help"),
2447
- error: x("slug")
2593
+ error: V("slug")
2448
2594
  }, {
2449
- default: p(() => [
2450
- u(e(ge), {
2595
+ default: c(() => [
2596
+ u(e(Ee), {
2451
2597
  modelValue: d.value.slug,
2452
- "onUpdate:modelValue": w[1] || (w[1] = (O) => d.value.slug = O),
2598
+ "onUpdate:modelValue": w[1] || (w[1] = (H) => d.value.slug = H),
2453
2599
  placeholder: "hero",
2454
- onInput: w[2] || (w[2] = (O) => c.value = !0)
2600
+ onInput: w[2] || (w[2] = (H) => f.value = !0)
2455
2601
  }, null, 8, ["modelValue"])
2456
2602
  ]),
2457
2603
  _: 1
2458
2604
  }, 8, ["label", "help", "error"]),
2459
- u(e(G), {
2605
+ u(e(X), {
2460
2606
  label: e(a)("page.group"),
2461
2607
  help: e(a)("page.group-help"),
2462
- error: x("group")
2608
+ error: V("group")
2463
2609
  }, {
2464
- default: p(() => [
2465
- u(e(kt), {
2610
+ default: c(() => [
2611
+ u(e(Tt), {
2466
2612
  modelValue: d.value.group,
2467
- "onUpdate:modelValue": w[3] || (w[3] = (O) => d.value.group = O),
2468
- options: T.value
2613
+ "onUpdate:modelValue": w[3] || (w[3] = (H) => d.value.group = H),
2614
+ options: k.value
2469
2615
  }, null, 8, ["modelValue", "options"])
2470
2616
  ]),
2471
2617
  _: 1
@@ -2475,121 +2621,121 @@ const pt = /* @__PURE__ */ Symbol("wx-blocks-root"), yn = {
2475
2621
  _: 1
2476
2622
  }, 8, ["open", "title"]));
2477
2623
  }
2478
- }), On = /* @__PURE__ */ X(Mn, [["__scopeId", "data-v-a4c0d44c"]]), Dn = {
2624
+ }), Qn = /* @__PURE__ */ le(Yn, [["__scopeId", "data-v-a4c0d44c"]]), Xn = {
2479
2625
  key: 1,
2480
2626
  class: "wx-blocks-page__toolbar"
2481
- }, Rn = { class: "wx-blocks-page__cards" }, jn = { class: "wx-blocks-page__ghost-body" }, Hn = {
2627
+ }, ea = { class: "wx-blocks-page__cards" }, ta = { class: "wx-blocks-page__ghost-body" }, la = {
2482
2628
  key: 0,
2483
2629
  class: "wx-blocks-page__group-title"
2484
- }, Fn = { class: "wx-blocks-page__cards" }, qn = /* @__PURE__ */ Q({
2630
+ }, na = { class: "wx-blocks-page__cards" }, aa = /* @__PURE__ */ te({
2485
2631
  __name: "BlocksPage",
2486
2632
  props: {
2487
2633
  base: { default: "/blocks" }
2488
2634
  },
2489
2635
  setup(t) {
2490
- const l = t, s = Be(), n = ke(s), o = ht();
2491
- Ee();
2492
- const r = le("webx-blocks"), a = Ce(), v = U([]), A = U(!0), d = U(""), y = U(""), g = xt(On), c = B(() => {
2493
- const z = s.state.manifest?.modules.find((N) => N.id === "blocks")?.meta;
2636
+ const l = t, o = Ie(), n = We(o), s = _t();
2637
+ Me();
2638
+ const r = re("webx-blocks"), a = Ne(), h = N([]), I = N(!0), d = N(""), p = N(""), b = Bt(Qn), f = T(() => {
2639
+ const C = o.state.manifest?.modules.find((P) => P.id === "blocks")?.meta;
2494
2640
  return {
2495
- groups: z?.groups ?? [],
2496
- editing: z?.editing ?? !0,
2497
- provides: z?.provides ?? []
2641
+ groups: C?.groups ?? [],
2642
+ editing: C?.editing ?? !0,
2643
+ provides: C?.provides ?? []
2498
2644
  };
2499
- }), T = B(() => s.can("blocks.manage") && c.value.editing), f = B(
2500
- () => s.state.manifest?.modules.find((z) => z.id === "blocks")?.title ?? r("module.title")
2501
- ), x = B(() => {
2502
- const z = d.value.trim().toLowerCase(), N = y.value === "" ? v.value : v.value.filter((L) => L.group === y.value);
2503
- return z === "" ? N : N.filter(
2504
- (L) => L.title.toLowerCase().includes(z) || L.slug.includes(z) || (L.description ?? "").toLowerCase().includes(z)
2645
+ }), k = T(() => o.can("blocks.manage") && f.value.editing), B = T(
2646
+ () => o.state.manifest?.modules.find((C) => C.id === "blocks")?.title ?? r("module.title")
2647
+ ), V = T(() => {
2648
+ const C = d.value.trim().toLowerCase(), P = p.value === "" ? h.value : h.value.filter((O) => O.group === p.value);
2649
+ return C === "" ? P : P.filter(
2650
+ (O) => O.title.toLowerCase().includes(C) || O.slug.includes(C) || (O.description ?? "").toLowerCase().includes(C)
2505
2651
  );
2506
- }), k = B(() => {
2507
- const z = [...c.value.groups];
2508
- for (const N of v.value)
2509
- z.includes(N.group) || z.push(N.group);
2510
- return z.filter((N) => v.value.some((L) => L.group === N));
2511
- }), h = B(
2512
- () => k.value.length < 2 ? [] : [
2652
+ }), _ = T(() => {
2653
+ const C = [...f.value.groups];
2654
+ for (const P of h.value)
2655
+ C.includes(P.group) || C.push(P.group);
2656
+ return C.filter((P) => h.value.some((O) => O.group === P));
2657
+ }), g = T(
2658
+ () => _.value.length < 2 ? [] : [
2513
2659
  { value: "", label: r("page.all-groups") },
2514
- ...k.value.map((z) => ({ value: z, label: ye(z, r) }))
2660
+ ..._.value.map((C) => ({ value: C, label: Ae(C, r) }))
2515
2661
  ]
2516
- ), w = B(() => {
2517
- const z = k.value.map((L) => ({
2518
- id: L,
2519
- label: ye(L, r),
2520
- blocks: x.value.filter((P) => P.group === L)
2521
- })).filter((L) => L.blocks.length > 0);
2522
- return y.value !== "" || x.value.length <= 5 || d.value.trim() !== "" || z.length < 2 ? [{ id: "", label: "", blocks: x.value }] : z;
2662
+ ), w = T(() => {
2663
+ const C = _.value.map((O) => ({
2664
+ id: O,
2665
+ label: Ae(O, r),
2666
+ blocks: V.value.filter((q) => q.group === O)
2667
+ })).filter((O) => O.blocks.length > 0);
2668
+ return p.value !== "" || V.value.length <= 5 || d.value.trim() !== "" || C.length < 2 ? [{ id: "", label: "", blocks: V.value }] : C;
2523
2669
  });
2524
- async function O() {
2525
- A.value = !0;
2670
+ async function H() {
2671
+ I.value = !0;
2526
2672
  try {
2527
- v.value = await n.list();
2528
- } catch (z) {
2529
- H.danger(a(z));
2673
+ h.value = await n.list();
2674
+ } catch (C) {
2675
+ J.danger(a(C));
2530
2676
  } finally {
2531
- A.value = !1;
2677
+ I.value = !1;
2532
2678
  }
2533
2679
  }
2534
- function J(z) {
2535
- o.push(`${l.base}/${z.id}`);
2680
+ function K(C) {
2681
+ s.push(`${l.base}/${C.id}`);
2536
2682
  }
2537
- async function ne() {
2538
- const z = await g({});
2539
- z && J(z);
2683
+ async function Z() {
2684
+ const C = await b({});
2685
+ C && K(C);
2540
2686
  }
2541
- Te(O);
2542
- const F = B(
2543
- () => T.value ? [{ key: "new", label: r("page.new"), icon: "plus", primary: !0, run: () => {
2544
- ne();
2687
+ Ue(H);
2688
+ const ne = T(
2689
+ () => k.value ? [{ key: "new", label: r("page.new"), icon: "plus", primary: !0, run: () => {
2690
+ Z();
2545
2691
  } }] : []
2546
2692
  );
2547
- return (z, N) => (i(), W(e(qt), {
2548
- view: y.value,
2549
- "onUpdate:view": N[1] || (N[1] = (L) => y.value = L),
2693
+ return (C, P) => (i(), L(e(tl), {
2694
+ view: p.value,
2695
+ "onUpdate:view": P[1] || (P[1] = (O) => p.value = O),
2550
2696
  class: "wx-blocks-page",
2551
- title: f.value,
2552
- views: h.value,
2553
- actions: F.value
2697
+ title: B.value,
2698
+ views: g.value,
2699
+ actions: ne.value
2554
2700
  }, {
2555
- default: p(() => [
2556
- c.value.editing ? I("", !0) : (i(), W(e(gt), {
2701
+ default: c(() => [
2702
+ f.value.editing ? z("", !0) : (i(), L(e($t), {
2557
2703
  key: 0,
2558
2704
  type: "info",
2559
2705
  variant: "soft",
2560
2706
  description: e(r)("page.editing-off")
2561
2707
  }, null, 8, ["description"])),
2562
- A.value || v.value.length > 0 ? (i(), V("div", Dn, [
2563
- u(e(ge), {
2708
+ I.value || h.value.length > 0 ? (i(), x("div", Xn, [
2709
+ u(e(Ee), {
2564
2710
  modelValue: d.value,
2565
- "onUpdate:modelValue": N[0] || (N[0] = (L) => d.value = L),
2711
+ "onUpdate:modelValue": P[0] || (P[0] = (O) => d.value = O),
2566
2712
  class: "wx-blocks-page__search",
2567
2713
  placeholder: e(r)("page.search"),
2568
2714
  clearable: ""
2569
2715
  }, null, 8, ["modelValue", "placeholder"])
2570
- ])) : I("", !0),
2571
- A.value ? (i(), W(e(he), { key: 2 }, {
2572
- template: p(() => [
2573
- S("div", Rn, [
2574
- (i(), V(j, null, te(4, (L) => S("div", {
2575
- key: L,
2716
+ ])) : z("", !0),
2717
+ I.value ? (i(), L(e(Ce), { key: 2 }, {
2718
+ template: c(() => [
2719
+ W("div", ea, [
2720
+ (i(), x(j, null, ee(4, (O) => W("div", {
2721
+ key: O,
2576
2722
  class: "wx-blocks-page__ghost"
2577
2723
  }, [
2578
- u(e(Ue), {
2724
+ u(e(Re), {
2579
2725
  variant: "image",
2580
2726
  height: 120,
2581
2727
  class: "wx-blocks-page__ghost-thumb"
2582
2728
  }),
2583
- S("div", jn, [
2584
- u(e(Ue), {
2729
+ W("div", ta, [
2730
+ u(e(Re), {
2585
2731
  variant: "title",
2586
2732
  width: "45%"
2587
2733
  }),
2588
- u(e(Ue), {
2734
+ u(e(Re), {
2589
2735
  variant: "text",
2590
2736
  width: "70%"
2591
2737
  }),
2592
- u(e(Ue), {
2738
+ u(e(Re), {
2593
2739
  variant: "button",
2594
2740
  width: "64px",
2595
2741
  height: "22px"
@@ -2599,21 +2745,21 @@ const pt = /* @__PURE__ */ Symbol("wx-blocks-root"), yn = {
2599
2745
  ])
2600
2746
  ]),
2601
2747
  _: 1
2602
- })) : v.value.length === 0 ? (i(), W(e(_t), {
2748
+ })) : h.value.length === 0 ? (i(), L(e(Ct), {
2603
2749
  key: 3,
2604
2750
  icon: "grid",
2605
2751
  title: e(r)("page.empty"),
2606
2752
  description: e(r)("page.empty-help")
2607
- }, null, 8, ["title", "description"])) : (i(!0), V(j, { key: 4 }, te(w.value, (L) => (i(), V("section", {
2608
- key: L.id,
2753
+ }, null, 8, ["title", "description"])) : (i(!0), x(j, { key: 4 }, ee(w.value, (O) => (i(), x("section", {
2754
+ key: O.id,
2609
2755
  class: "wx-blocks-page__group"
2610
2756
  }, [
2611
- L.label ? (i(), V("div", Hn, m(L.label), 1)) : I("", !0),
2612
- S("div", Fn, [
2613
- (i(!0), V(j, null, te(L.blocks, (P) => (i(), W(Nn, {
2614
- key: P.id,
2615
- block: P,
2616
- onOpen: J
2757
+ O.label ? (i(), x("div", la, y(O.label), 1)) : z("", !0),
2758
+ W("div", na, [
2759
+ (i(!0), x(j, null, ee(O.blocks, (q) => (i(), L(Zn, {
2760
+ key: q.id,
2761
+ block: q,
2762
+ onOpen: K
2617
2763
  }, null, 8, ["block"]))), 128))
2618
2764
  ])
2619
2765
  ]))), 128))
@@ -2621,18 +2767,18 @@ const pt = /* @__PURE__ */ Symbol("wx-blocks-root"), yn = {
2621
2767
  _: 1
2622
2768
  }, 8, ["view", "title", "views", "actions"]));
2623
2769
  }
2624
- }), Jn = /* @__PURE__ */ X(qn, [["__scopeId", "data-v-553b680f"]]);
2625
- function na(t = {}) {
2770
+ }), oa = /* @__PURE__ */ le(aa, [["__scopeId", "data-v-553b680f"]]);
2771
+ function fa(t = {}) {
2626
2772
  const l = t.path ?? "/blocks";
2627
2773
  return {
2628
2774
  id: "blocks",
2629
2775
  path: l,
2630
2776
  routes: [
2631
- { path: l, name: "webx.blocks", component: Jn, props: { base: l } },
2777
+ { path: l, name: "webx.blocks", component: oa, props: { base: l } },
2632
2778
  {
2633
2779
  path: `${l}/:id(\\d+)`,
2634
2780
  name: "webx.blocks.edit",
2635
- component: Hl,
2781
+ component: en,
2636
2782
  props: { base: l }
2637
2783
  }
2638
2784
  ],
@@ -2641,7 +2787,7 @@ function na(t = {}) {
2641
2787
  // draws its children through the renderer; it needs the node for `props.allow` alone.
2642
2788
  types: {
2643
2789
  "wx-blocks": {
2644
- component: An,
2790
+ component: jn,
2645
2791
  kind: "field",
2646
2792
  nested: !0,
2647
2793
  wide: !0,
@@ -2651,37 +2797,37 @@ function na(t = {}) {
2651
2797
  };
2652
2798
  }
2653
2799
  export {
2654
- Hl as WxBlockEditorPage,
2655
- tn as WxBlockPicker,
2656
- fl as WxBlockStage,
2657
- zt as WxBlockThumb,
2658
- An as WxBlocks,
2659
- Jn as WxBlocksPage,
2660
- na as blocks,
2661
- _l as blocksMessages,
2662
- Qe as blocksPreviewKey,
2663
- Et as cloneNode,
2664
- ml as countType,
2665
- ke as createBlocksApi,
2666
- Vt as findRange,
2667
- Ye as formSchema,
2668
- Fe as highlightBlock,
2669
- ut as insertNode,
2670
- Tt as isNode,
2671
- Oe as isNodeList,
2672
- $l as lintBlock,
2800
+ en as WxBlockEditorPage,
2801
+ pn as WxBlockPicker,
2802
+ xl as WxBlockStage,
2803
+ Ot as WxBlockThumb,
2804
+ jn as WxBlocks,
2805
+ oa as WxBlocksPage,
2806
+ fa as blocks,
2807
+ Al as blocksMessages,
2808
+ nt as blocksPreviewKey,
2809
+ It as cloneNode,
2810
+ Tl as countType,
2811
+ We as createBlocksApi,
2812
+ Wt as findRange,
2813
+ lt as formSchema,
2814
+ Ye as highlightBlock,
2815
+ mt as insertNode,
2816
+ Lt as isNode,
2817
+ Je as isNodeList,
2818
+ zl as lintBlock,
2673
2819
  se as locate,
2674
- vl as makeNode,
2675
- qe as newKey,
2676
- ta as provideBlocksPreview,
2677
- kl as removeNode,
2678
- il as replaceBlock,
2679
- wl as replaceList,
2680
- St as stageDocument,
2681
- ea as typesIn,
2682
- Vl as undeclared,
2683
- yl as updateValues,
2684
- la as useBlocksPreview,
2685
- De as walk
2820
+ $l as makeNode,
2821
+ Qe as newKey,
2822
+ pa as provideBlocksPreview,
2823
+ Bl as removeNode,
2824
+ bl as replaceBlock,
2825
+ Wl as replaceList,
2826
+ At as stageDocument,
2827
+ da as typesIn,
2828
+ Ul as undeclared,
2829
+ El as updateValues,
2830
+ va as useBlocksPreview,
2831
+ Pe as walk
2686
2832
  };
2687
2833
  //# sourceMappingURL=index.js.map