@webx-ui/module-blog 0.2.1 → 0.3.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,16 +1,16 @@
1
- import { provide as ct, inject as vt, defineComponent as ee, computed as v, openBlock as p, createElementBlock as G, createVNode as n, unref as e, withCtx as l, createBlock as z, createTextVNode as w, toDisplayString as b, createCommentVNode as H, useModel as qe, mergeModels as Me, ref as C, watch as ue, onMounted as Ne, onBeforeUnmount as Je, Fragment as ve, createElementVNode as j, renderList as Be, normalizeClass as Pe, useTemplateRef as De, nextTick as Ze, isRef as Ie, withKeys as ze, resolveDynamicComponent as tt, mergeProps as pt, useId as ft, withModifiers as at } from "vue";
2
- import { useAdmin as ne, useTranslate as Q, useDates as mt, useErrorText as ge, WxScreenHead as bt, WxScreen as gt, WxDate as je, rowMenuWidth as st, WxListScreen as Qe, WxRowMenu as Re, WxFilterChips as ht } from "@webx-ui/module-admin";
3
- import { useLocales as Xe, WxFormItem as ie, WxText as J, WxAlert as We, WxSelect as _e, localizedValue as yt, confirm as be, WxSkeleton as Ue, WxBadge as oe, WxBreadcrumb as wt, WxBreadcrumbItem as lt, WxButton as Z, WxActionBar as rt, toast as L, WxEmpty as Ge, WxSortableList as Ye, WxAction as Oe, useModal as Ee, WxDialog as Fe, WxInput as Ae, WxSpace as Le, useElementWidth as _t, createModal as Ce, WxTable as ot, WxEntityCard as xt, WxIcon as we, WxTooltip as et, WxHeading as kt, WxTextarea as $t, WxSwitch as Tt, WxCard as Vt, WxListDetail as At, WxCheckbox as St } from "@webx-ui/core";
4
- import { useRoute as He, useRouter as Ke, onBeforeRouteLeave as Wt } from "vue-router";
5
- import { provideBlocksPreview as Ct } from "@webx-ui/module-blocks";
1
+ import { provide as ct, inject as vt, defineComponent as ee, computed as v, openBlock as p, createElementBlock as G, createVNode as n, unref as e, withCtx as l, createBlock as z, createTextVNode as _, toDisplayString as g, createCommentVNode as K, useModel as qe, mergeModels as Me, ref as C, watch as ue, onMounted as Ne, onBeforeUnmount as Je, Fragment as be, createElementVNode as j, renderList as Be, normalizeClass as Pe, useTemplateRef as De, nextTick as Ze, isRef as Ie, withKeys as ze, resolveDynamicComponent as tt, mergeProps as pt, useId as ft, withModifiers as at } from "vue";
2
+ import { useAdmin as se, useTranslate as Q, useDates as mt, useErrorText as ge, WxScreenHead as bt, WxScreen as gt, WxSaveState as ht, WxDate as je, rowMenuWidth as st, WxListScreen as Qe, WxRowMenu as Re, WxFilterChips as yt } from "@webx-ui/module-admin";
3
+ import { useLocales as Xe, WxFormItem as ne, WxText as J, WxAlert as We, WxSelect as _e, localizedValue as wt, confirm as me, WxSkeleton as Ue, WxBadge as ie, WxBreadcrumb as _t, WxBreadcrumbItem as lt, WxButton as Z, WxActionBar as rt, toast as L, WxEmpty as Ge, WxSortableList as Ye, WxAction as Oe, useModal as Ee, WxDialog as Fe, WxInput as Ve, WxSpace as Le, useElementWidth as xt, createModal as Ce, WxTable as ot, WxEntityCard as kt, WxIcon as we, WxTooltip as et, WxHeading as $t, WxTextarea as Tt, WxSwitch as Vt, WxCard as At, WxListDetail as St, WxCheckbox as Wt } from "@webx-ui/core";
4
+ import { useRoute as He, useRouter as Ke, onBeforeRouteLeave as Ct } from "vue-router";
5
+ import { provideBlocksPreview as zt } from "@webx-ui/module-blocks";
6
6
  const ut = /* @__PURE__ */ Symbol("wx-article-editor");
7
- function zt(f) {
7
+ function Rt(f) {
8
8
  ct(ut, f);
9
9
  }
10
- function Se() {
10
+ function Ae() {
11
11
  return vt(ut, null);
12
12
  }
13
- const Rt = {
13
+ const Ut = {
14
14
  module: {
15
15
  group: "Blog",
16
16
  articles: "Articles",
@@ -76,10 +76,7 @@ const Rt = {
76
76
  article: {
77
77
  trail: "Where this article sits",
78
78
  untitled: "Untitled",
79
- "state-saved": "Saved",
80
- "state-saving": "Saving…",
81
- "state-unsaved": "Not saved yet",
82
- save: "Save draft",
79
+ save: "Save",
83
80
  "save-failed": "The article was not saved.",
84
81
  schedule: "Schedule",
85
82
  scheduled: "The article is scheduled.",
@@ -102,11 +99,8 @@ const Rt = {
102
99
  leave: "Leave",
103
100
  "leave-title": "Leave without saving?",
104
101
  "leave-text": "The article could not be saved, and what you wrote is not on the server.",
105
- "live-never": "Never published",
106
102
  "live-scheduled": "Goes out :date",
107
103
  "live-since": "On the site since :date",
108
- "live-edited": "edits waiting",
109
- "live-off": "Off the site",
110
104
  address: "Address",
111
105
  "no-address": "No address in this language",
112
106
  "address-moving": "The address is changing. The old one keeps working and leads to the new one.",
@@ -231,26 +225,26 @@ const Rt = {
231
225
  }, it = /* @__PURE__ */ new WeakSet();
232
226
  function te() {
233
227
  try {
234
- const { i18n: f } = ne();
235
- it.has(f) || (f.defaults("webx-blog", Rt), it.add(f));
228
+ const { i18n: f } = se();
229
+ it.has(f) || (f.defaults("webx-blog", Ut), it.add(f));
236
230
  } catch {
237
231
  }
238
232
  }
239
- const Ut = { class: "wx-article-address" }, qt = /* @__PURE__ */ ee({
233
+ const qt = { class: "wx-article-address" }, Mt = /* @__PURE__ */ ee({
240
234
  name: "WxArticleAddress",
241
235
  __name: "ArticleAddress",
242
236
  setup(f) {
243
- const m = Se(), r = Xe();
237
+ const m = Ae(), o = Xe();
244
238
  te();
245
239
  const y = Q("webx-blog"), u = v(() => {
246
240
  const s = m?.values.value.slug;
247
- return typeof s == "string" ? s : s?.[r.active.value] ?? "";
241
+ return typeof s == "string" ? s : s?.[o.active.value] ?? "";
248
242
  }), a = v(() => u.value === "" ? null : `/${[m?.prefix.value ?? "", u.value].filter(Boolean).join("/")}`), t = v(() => {
249
243
  const s = m?.article.value?.path;
250
244
  return typeof s == "string" && a.value !== null && a.value !== `/${s}`;
251
245
  });
252
- return (s, i) => (p(), G("div", Ut, [
253
- n(e(ie), {
246
+ return (s, i) => (p(), G("div", qt, [
247
+ n(e(ne), {
254
248
  label: e(y)("article.address")
255
249
  }, {
256
250
  default: l(() => [
@@ -260,7 +254,7 @@ const Ut = { class: "wx-article-address" }, qt = /* @__PURE__ */ ee({
260
254
  class: "wx-article-address__value"
261
255
  }, {
262
256
  default: l(() => [
263
- w(b(a.value), 1)
257
+ _(g(a.value), 1)
264
258
  ]),
265
259
  _: 1
266
260
  })) : (p(), z(e(J), {
@@ -269,7 +263,7 @@ const Ut = { class: "wx-article-address" }, qt = /* @__PURE__ */ ee({
269
263
  tone: "muted"
270
264
  }, {
271
265
  default: l(() => [
272
- w(b(e(y)("article.no-address")), 1)
266
+ _(g(e(y)("article.no-address")), 1)
273
267
  ]),
274
268
  _: 1
275
269
  }))
@@ -281,15 +275,15 @@ const Ut = { class: "wx-article-address" }, qt = /* @__PURE__ */ ee({
281
275
  type: "info",
282
276
  variant: "soft",
283
277
  description: e(y)("article.address-moving")
284
- }, null, 8, ["description"])) : H("", !0)
278
+ }, null, 8, ["description"])) : K("", !0)
285
279
  ]));
286
280
  }
287
- }), pe = (f, m) => {
288
- const r = f.__vccOpts || f;
281
+ }), ve = (f, m) => {
282
+ const o = f.__vccOpts || f;
289
283
  for (const [y, u] of m)
290
- r[y] = u;
291
- return r;
292
- }, Mt = /* @__PURE__ */ pe(qt, [["__scopeId", "data-v-2ee0dcfe"]]), Nt = /* @__PURE__ */ ee({
284
+ o[y] = u;
285
+ return o;
286
+ }, Nt = /* @__PURE__ */ ve(Mt, [["__scopeId", "data-v-2ee0dcfe"]]), Bt = /* @__PURE__ */ ee({
293
287
  name: "WxArticleAuthor",
294
288
  __name: "ArticleAuthor",
295
289
  props: /* @__PURE__ */ Me({
@@ -300,7 +294,7 @@ const Ut = { class: "wx-article-address" }, qt = /* @__PURE__ */ ee({
300
294
  }),
301
295
  emits: ["update:modelValue"],
302
296
  setup(f) {
303
- const m = f, r = qe(f, "modelValue"), y = Se();
297
+ const m = f, o = qe(f, "modelValue"), y = Ae();
304
298
  te();
305
299
  const u = Q("webx-blog"), a = v(() => m.disabled || y?.disabled.value === !0), t = v(
306
300
  () => (y?.options.value.authors ?? []).map((i) => ({
@@ -308,9 +302,9 @@ const Ut = { class: "wx-article-address" }, qt = /* @__PURE__ */ ee({
308
302
  value: i.id
309
303
  }))
310
304
  ), s = v({
311
- get: () => r.value,
305
+ get: () => o.value,
312
306
  set: (i) => {
313
- r.value = typeof i == "number" ? i : null;
307
+ o.value = typeof i == "number" ? i : null;
314
308
  }
315
309
  });
316
310
  return (i, x) => (p(), z(e(_e), {
@@ -327,7 +321,7 @@ const Ut = { class: "wx-article-address" }, qt = /* @__PURE__ */ ee({
327
321
  }
328
322
  });
329
323
  function de(f) {
330
- const m = `${f.apiPath}/blog/articles`, r = `${f.apiPath}/blog/rubrics`, y = `${f.apiPath}/blog/tags`, u = (a) => a.data;
324
+ const m = `${f.apiPath}/blog/articles`, o = `${f.apiPath}/blog/rubrics`, y = `${f.apiPath}/blog/tags`, u = (a) => a.data;
331
325
  return {
332
326
  articles: (a = {}) => {
333
327
  const t = new URLSearchParams();
@@ -351,12 +345,12 @@ function de(f) {
351
345
  remove: (a) => f.http.delete(`${m}/${a}`).then(() => {
352
346
  }),
353
347
  restore: (a) => f.http.post(`${m}/${a}/restore`, {}).then(u),
354
- rubrics: () => f.http.get(r),
355
- createRubric: (a) => f.http.post(r, a).then(u),
356
- saveRubric: (a, t) => f.http.put(`${r}/${a}`, t).then(u),
357
- removeRubric: (a) => f.http.delete(`${r}/${a}`).then(() => {
348
+ rubrics: () => f.http.get(o),
349
+ createRubric: (a) => f.http.post(o, a).then(u),
350
+ saveRubric: (a, t) => f.http.put(`${o}/${a}`, t).then(u),
351
+ removeRubric: (a) => f.http.delete(`${o}/${a}`).then(() => {
358
352
  }),
359
- sortRubrics: (a) => f.http.post(`${r}/reorder`, { ids: a }).then(() => {
353
+ sortRubrics: (a) => f.http.post(`${o}/reorder`, { ids: a }).then(() => {
360
354
  }),
361
355
  tagsPage: (a = {}) => {
362
356
  const t = new URLSearchParams();
@@ -371,52 +365,50 @@ function de(f) {
371
365
  mergeTags: (a, t, s) => f.http.post(`${y}/merge`, { ids: a, keep: t, redirect: s }).then(u)
372
366
  };
373
367
  }
374
- const Bt = { class: "wx-article-editor__screen" }, Pt = 1200, Dt = /* @__PURE__ */ ee({
368
+ const Pt = { class: "wx-article-editor__screen" }, Dt = 1200, It = /* @__PURE__ */ ee({
375
369
  __name: "ArticleEditorPage",
376
370
  props: {
377
371
  base: { default: "/blog" }
378
372
  },
379
373
  setup(f) {
380
- const m = f, r = ne(), y = de(r), u = He(), a = Ke(), t = Xe(), s = mt();
374
+ const m = f, o = se(), y = de(o), u = He(), a = Ke(), t = Xe(), s = mt();
381
375
  te();
382
- const i = Q("webx-blog"), x = ge(), T = v(() => Number(u.params.id)), c = v(() => `${m.base}/articles`), o = C(null), _ = C({}), W = C(""), S = C(""), E = C(null), F = C({ rubrics: [], authors: [] }), $ = C([]), U = C(!0), R = C(!1), M = C(!1), A = C({}), I = C(null), K = C(""), P = C(0), q = v(() => r.can("blog.articles.manage")), k = v(() => !q.value || M.value), le = v(() => JSON.stringify(_.value)), O = v(() => K.value !== "" && le.value !== K.value), se = v(() => R.value ? "saving" : O.value ? "unsaved" : "saved"), xe = v(() => {
383
- const V = _.value.title;
384
- return yt(V, t.active.value, o.value?.title ?? "");
376
+ const i = Q("webx-blog"), x = ge(), T = v(() => Number(u.params.id)), c = v(() => `${m.base}/articles`), r = C(null), w = C({}), W = C(""), S = C(""), E = C(null), F = C({ rubrics: [], authors: [] }), $ = C([]), U = C(!0), R = C(!1), N = C(!1), A = C({}), I = C(null), H = C(""), P = C(0), q = v(() => o.can("blog.articles.manage")), k = v(() => !q.value || N.value), le = v(() => JSON.stringify(w.value)), O = v(() => H.value !== "" && le.value !== H.value), re = v(() => R.value ? "saving" : O.value ? "unsaved" : "saved"), xe = v(() => {
377
+ const V = w.value.title;
378
+ return wt(V, t.active.value, r.value?.title ?? "");
385
379
  }), ce = v(() => {
386
- const V = _.value.published_at;
380
+ const V = w.value.published_at;
387
381
  return typeof V == "string" && V !== "" ? V : null;
388
382
  }), he = v(() => {
389
383
  if (ce.value === null) return !1;
390
384
  const V = new Date(ce.value.replace(" ", "T"));
391
385
  return !Number.isNaN(V.valueOf()) && V.valueOf() > Date.now();
392
- }), Te = v(() => {
393
- const V = o.value;
386
+ }), Se = v(() => {
387
+ const V = r.value;
394
388
  if (!V) return "";
395
389
  const Y = s.short(V.published_at);
396
390
  return {
397
- draft: i("article.live-never"),
398
391
  scheduled: i("article.live-scheduled", { date: Y }),
399
392
  published: i("article.live-since", { date: Y }),
400
- modified: `${i("article.live-since", { date: Y })} · ${i("article.live-edited")}`,
401
- unpublished: i("article.live-off")
393
+ modified: i("article.live-since", { date: Y })
402
394
  }[V.status] ?? "";
403
395
  });
404
- Ct({ url: v(() => E.value), reload: P }), zt({
405
- article: o,
406
- values: _,
396
+ zt({ url: v(() => E.value), reload: P }), Rt({
397
+ article: r,
398
+ values: w,
407
399
  options: F,
408
400
  related: $,
409
401
  prefix: S,
410
402
  base: m.base,
411
403
  canManage: q.value,
412
404
  disabled: k,
413
- reload: () => fe(!0),
414
- save: () => N()
405
+ reload: () => pe(!0),
406
+ save: () => M()
415
407
  });
416
408
  function ke(V) {
417
- o.value = V.article, _.value = V.values, W.value = V.revision, S.value = V.prefix, E.value = V.preview_url, F.value = V.options, $.value = V.related, K.value = JSON.stringify(V.values), I.value = null;
409
+ r.value = V.article, w.value = V.values, W.value = V.revision, S.value = V.prefix, E.value = V.preview_url, F.value = V.options, $.value = V.related, H.value = JSON.stringify(V.values), I.value = null;
418
410
  }
419
- async function fe(V = !1) {
411
+ async function pe(V = !1) {
420
412
  V || (U.value = !0);
421
413
  try {
422
414
  ke(await y.get(T.value));
@@ -426,95 +418,95 @@ const Bt = { class: "wx-article-editor__screen" }, Pt = 1200, Dt = /* @__PURE__
426
418
  U.value = !1;
427
419
  }
428
420
  }
429
- let re;
430
- function me() {
431
- !q.value || I.value || !O.value || (clearTimeout(re), re = setTimeout(() => {
432
- N();
433
- }, Pt));
421
+ let oe;
422
+ function fe() {
423
+ !q.value || I.value || !O.value || (clearTimeout(oe), oe = setTimeout(() => {
424
+ M();
425
+ }, Dt));
434
426
  }
435
- function g() {
436
- !q.value || I.value || !O.value || R.value || (clearTimeout(re), N());
427
+ function b() {
428
+ !q.value || I.value || !O.value || R.value || (clearTimeout(oe), M());
437
429
  }
438
- async function N() {
439
- if (!o.value || R.value || !q.value) return;
440
- clearTimeout(re);
441
- const V = le.value, Y = _.value;
430
+ async function M() {
431
+ if (!r.value || R.value || !q.value) return;
432
+ clearTimeout(oe);
433
+ const V = le.value, Y = w.value;
442
434
  R.value = !0, A.value = {};
443
435
  try {
444
- const ae = await y.save(o.value.id, { values: Y, revision: W.value });
445
- o.value = ae.article, W.value = ae.revision, S.value = ae.prefix, E.value = ae.preview_url, F.value = ae.options, $.value = ae.related, I.value = null, le.value === V && (K.value = V), P.value += 1;
436
+ const ae = await y.save(r.value.id, { values: Y, revision: W.value });
437
+ r.value = ae.article, W.value = ae.revision, S.value = ae.prefix, E.value = ae.preview_url, F.value = ae.options, $.value = ae.related, I.value = null, le.value === V && (H.value = V), P.value += 1;
446
438
  } catch (ae) {
447
- const Ve = ae;
448
- Ve.status === 409 && Ve.body?.data ? I.value = Ve.body : Ve.body?.errors ? (A.value = Ve.body.errors, L.danger(i("article.save-failed"))) : L.danger(x(ae));
439
+ const Te = ae;
440
+ Te.status === 409 && Te.body?.data ? I.value = Te.body : Te.body?.errors ? (A.value = Te.body.errors, L.danger(i("article.save-failed"))) : L.danger(x(ae));
449
441
  } finally {
450
442
  R.value = !1;
451
443
  }
452
444
  }
453
445
  async function B() {
454
- await be({
446
+ await me({
455
447
  title: i("article.conflict-theirs-title"),
456
448
  message: i("article.conflict-theirs-text"),
457
449
  confirmText: i("article.conflict-theirs"),
458
450
  cancelText: i("panel.cancel"),
459
451
  tone: "danger"
460
- }) && await fe(!0);
452
+ }) && await pe(!0);
461
453
  }
462
454
  async function X() {
463
455
  const V = I.value;
464
- V && (W.value = V.data.revision, I.value = null, await N());
456
+ V && (W.value = V.data.revision, I.value = null, await M());
465
457
  }
466
458
  async function ye() {
467
- if (!(!o.value || !await be({
459
+ if (!(!r.value || !await me({
468
460
  title: i("article.discard-title"),
469
461
  message: i("article.discard-text"),
470
462
  confirmText: i("article.discard"),
471
463
  cancelText: i("panel.cancel"),
472
464
  tone: "danger"
473
465
  }))) {
474
- M.value = !0;
466
+ N.value = !0;
475
467
  try {
476
- ke(await y.discard(o.value.id)), L.success(i("article.discarded"));
468
+ ke(await y.discard(r.value.id)), L.success(i("article.discarded"));
477
469
  } catch (Y) {
478
470
  L.danger(x(Y));
479
471
  } finally {
480
- M.value = !1;
472
+ N.value = !1;
481
473
  }
482
474
  }
483
475
  }
484
476
  async function d() {
485
- const V = o.value;
477
+ const V = r.value;
486
478
  if (!V) return;
487
479
  const Y = V.path === null ? null : `/${V.path}`, ae = ce.value === null ? i("article.publish-now") : s.short(ce.value);
488
- if (await be({
480
+ if (await me({
489
481
  title: i("article.publish-title", { title: V.title }),
490
482
  message: he.value ? i("article.publish-later", { date: ae }) : Y === null ? i("article.publish-nowhere") : i("article.publish-text", { address: Y }),
491
483
  confirmText: he.value ? i("article.schedule") : i("panel.publish"),
492
484
  cancelText: i("panel.cancel")
493
- }) && (O.value && await N(), !I.value)) {
494
- M.value = !0;
485
+ }) && (O.value && await M(), !I.value)) {
486
+ N.value = !0;
495
487
  try {
496
- await y.publish(V.id, ce.value), await fe(!0), L.success(he.value ? i("article.scheduled") : i("panel.published"));
488
+ await y.publish(V.id, ce.value), await pe(!0), L.success(he.value ? i("article.scheduled") : i("panel.published"));
497
489
  } catch (dt) {
498
490
  L.danger(x(dt));
499
491
  } finally {
500
- M.value = !1;
492
+ N.value = !1;
501
493
  }
502
494
  }
503
495
  }
504
496
  function D() {
505
- const V = o.value?.status;
497
+ const V = r.value?.status;
506
498
  return V === "published" ? "success" : V === "modified" ? "warning" : V === "scheduled" ? "primary" : "default";
507
499
  }
508
500
  function h(V) {
509
501
  O.value && V.preventDefault();
510
502
  }
511
- ue(le, me), ue(T, () => {
512
- fe();
503
+ ue(le, fe), ue(T, () => {
504
+ pe();
513
505
  }), Ne(() => {
514
- fe(), window.addEventListener("beforeunload", h);
506
+ pe(), window.addEventListener("beforeunload", h);
515
507
  }), Je(() => {
516
- clearTimeout(re), window.removeEventListener("beforeunload", h);
517
- }), Wt(async () => !O.value || !q.value || (await N(), !O.value) ? !0 : await be({
508
+ clearTimeout(oe), window.removeEventListener("beforeunload", h);
509
+ }), Ct(async () => !O.value || !q.value || (await M(), !O.value) ? !0 : await me({
518
510
  title: i("article.leave-title"),
519
511
  message: i("article.leave-text"),
520
512
  confirmText: i("article.leave"),
@@ -523,34 +515,44 @@ const Bt = { class: "wx-article-editor__screen" }, Pt = 1200, Dt = /* @__PURE__
523
515
  }));
524
516
  const $e = v(() => {
525
517
  const V = [];
526
- return E.value && V.push({ key: "preview", label: i("article.preview"), icon: "eye", href: E.value }), o.value?.url && o.value.status !== "draft" && V.push({
518
+ return E.value && V.push({ key: "preview", label: i("article.preview"), icon: "eye", href: E.value }), r.value?.url && r.value.status !== "draft" && V.push({
527
519
  key: "site",
528
520
  label: i("panel.open-on-site"),
529
521
  icon: "link",
530
- href: o.value.url
522
+ href: r.value.url
523
+ }), r.value?.status === "modified" && V.push({
524
+ key: "discard",
525
+ label: i("article.discard"),
526
+ icon: "refresh",
527
+ danger: !0,
528
+ menu: !0,
529
+ run: () => {
530
+ ye();
531
+ }
531
532
  }), V;
532
533
  });
533
534
  return (V, Y) => (p(), G("div", {
534
535
  class: "wx-article-editor",
535
- onFocusout: g
536
+ onFocusout: b
536
537
  }, [
537
- U.value || !o.value ? (p(), G(ve, { key: 0 }, [
538
+ U.value || !r.value ? (p(), G(be, { key: 0 }, [
538
539
  n(e(Ue), {
539
540
  class: "wx-article-editor__ghost",
540
541
  title: "",
541
542
  rows: 1
542
543
  }),
543
544
  n(e(Ue), { rows: 8 })
544
- ], 64)) : (p(), G(ve, { key: 1 }, [
545
+ ], 64)) : (p(), G(be, { key: 1 }, [
545
546
  n(e(bt), {
546
547
  divider: "",
547
548
  back: c.value,
548
549
  "back-label": e(i)("module.articles"),
549
550
  title: xe.value || e(i)("article.untitled"),
551
+ subtitle: Se.value,
550
552
  actions: $e.value
551
553
  }, {
552
554
  trail: l(() => [
553
- n(e(wt), {
555
+ n(e(_t), {
554
556
  size: "sm",
555
557
  label: e(i)("article.trail")
556
558
  }, {
@@ -560,13 +562,13 @@ const Bt = { class: "wx-article-editor__screen" }, Pt = 1200, Dt = /* @__PURE__
560
562
  to: c.value
561
563
  }, {
562
564
  default: l(() => [
563
- w(b(e(i)("module.articles")), 1)
565
+ _(g(e(i)("module.articles")), 1)
564
566
  ]),
565
567
  _: 1
566
568
  }, 8, ["to"]),
567
569
  n(e(lt), { current: "" }, {
568
570
  default: l(() => [
569
- w(b(xe.value || e(i)("article.untitled")), 1)
571
+ _(g(xe.value || e(i)("article.untitled")), 1)
570
572
  ]),
571
573
  _: 1
572
574
  })
@@ -575,18 +577,28 @@ const Bt = { class: "wx-article-editor__screen" }, Pt = 1200, Dt = /* @__PURE__
575
577
  }, 8, ["label"])
576
578
  ]),
577
579
  "title-after": l(() => [
578
- n(e(oe), {
580
+ n(e(ie), {
579
581
  type: D(),
580
582
  dot: ""
581
583
  }, {
582
584
  default: l(() => [
583
- w(b(e(i)(`panel.status-${o.value.status}`)), 1)
585
+ _(g(e(i)(`panel.status-${r.value.status}`)), 1)
584
586
  ]),
585
587
  _: 1
586
- }, 8, ["type"])
588
+ }, 8, ["type"]),
589
+ r.value.status === "modified" ? (p(), z(e(ie), {
590
+ key: 0,
591
+ type: "primary",
592
+ round: ""
593
+ }, {
594
+ default: l(() => [
595
+ _(g(e(i)("panel.edits")), 1)
596
+ ]),
597
+ _: 1
598
+ })) : K("", !0)
587
599
  ]),
588
600
  _: 1
589
- }, 8, ["back", "back-label", "title", "actions"]),
601
+ }, 8, ["back", "back-label", "title", "subtitle", "actions"]),
590
602
  I.value ? (p(), z(e(We), {
591
603
  key: 0,
592
604
  type: "warning",
@@ -600,7 +612,7 @@ const Bt = { class: "wx-article-editor__screen" }, Pt = 1200, Dt = /* @__PURE__
600
612
  onClick: B
601
613
  }, {
602
614
  default: l(() => [
603
- w(b(e(i)("article.conflict-theirs")), 1)
615
+ _(g(e(i)("article.conflict-theirs")), 1)
604
616
  ]),
605
617
  _: 1
606
618
  }),
@@ -610,17 +622,17 @@ const Bt = { class: "wx-article-editor__screen" }, Pt = 1200, Dt = /* @__PURE__
610
622
  onClick: X
611
623
  }, {
612
624
  default: l(() => [
613
- w(b(e(i)("article.conflict-mine")), 1)
625
+ _(g(e(i)("article.conflict-mine")), 1)
614
626
  ]),
615
627
  _: 1
616
628
  })
617
629
  ]),
618
630
  _: 1
619
- }, 8, ["title", "description"])) : H("", !0),
620
- j("div", Bt, [
631
+ }, 8, ["title", "description"])) : K("", !0),
632
+ j("div", Pt, [
621
633
  n(e(gt), {
622
- modelValue: _.value,
623
- "onUpdate:modelValue": Y[0] || (Y[0] = (ae) => _.value = ae),
634
+ modelValue: w.value,
635
+ "onUpdate:modelValue": Y[0] || (Y[0] = (ae) => w.value = ae),
624
636
  name: "blog.article-form",
625
637
  errors: A.value,
626
638
  disabled: k.value
@@ -628,88 +640,66 @@ const Bt = { class: "wx-article-editor__screen" }, Pt = 1200, Dt = /* @__PURE__
628
640
  ]),
629
641
  q.value ? (p(), z(e(rt), { key: 1 }, {
630
642
  state: l(() => [
631
- n(e(J), {
632
- size: "sm",
633
- tone: "muted"
634
- }, {
635
- default: l(() => [
636
- w(b(e(i)(`article.state-${se.value}`)), 1),
637
- Te.value ? (p(), G(ve, { key: 0 }, [
638
- w(" · " + b(Te.value), 1)
639
- ], 64)) : H("", !0)
640
- ]),
641
- _: 1
642
- })
643
+ n(e(ht), { state: re.value }, null, 8, ["state"])
643
644
  ]),
644
645
  default: l(() => [
645
- o.value.status === "modified" ? (p(), z(e(Z), {
646
- key: 0,
647
- variant: "text",
648
- loading: M.value,
649
- onClick: ye
650
- }, {
651
- default: l(() => [
652
- w(b(e(i)("article.discard")), 1)
653
- ]),
654
- _: 1
655
- }, 8, ["loading"])) : H("", !0),
656
646
  n(e(Z), {
657
647
  variant: "outline",
658
648
  loading: R.value,
659
649
  disabled: !O.value,
660
- onClick: N
650
+ onClick: M
661
651
  }, {
662
652
  default: l(() => [
663
- w(b(e(i)("article.save")), 1)
653
+ _(g(e(i)("article.save")), 1)
664
654
  ]),
665
655
  _: 1
666
656
  }, 8, ["loading", "disabled"]),
667
657
  n(e(Z), {
668
658
  type: "primary",
669
- loading: M.value,
670
- disabled: o.value.status === "published" && !O.value,
659
+ loading: N.value,
660
+ disabled: r.value.status === "published" && !O.value,
671
661
  onClick: d
672
662
  }, {
673
663
  default: l(() => [
674
- w(b(he.value ? e(i)("article.schedule") : e(i)("panel.publish")), 1)
664
+ _(g(he.value ? e(i)("article.schedule") : e(i)("panel.publish")), 1)
675
665
  ]),
676
666
  _: 1
677
667
  }, 8, ["loading", "disabled"])
678
668
  ]),
679
669
  _: 1
680
- })) : H("", !0)
670
+ })) : K("", !0)
681
671
  ], 64))
682
672
  ], 32));
683
673
  }
684
- }), It = /* @__PURE__ */ pe(Dt, [["__scopeId", "data-v-41431c5d"]]), Ot = { class: "wx-article-history" }, Et = { class: "wx-article-history__number" }, Ft = { class: "wx-article-history__who" }, Lt = /* @__PURE__ */ ee({
674
+ }), Ot = /* @__PURE__ */ ve(It, [["__scopeId", "data-v-5d027fd4"]]), Et = { class: "wx-article-history" }, Ft = { class: "wx-article-history__number" }, Lt = { class: "wx-article-history__who" }, Ht = /* @__PURE__ */ ee({
685
675
  name: "WxArticleHistory",
686
676
  __name: "ArticleHistory",
687
677
  setup(f) {
688
- const m = ne(), r = de(m), y = Se();
678
+ const m = se(), o = de(m), y = Ae();
689
679
  te();
690
680
  const u = Q("webx-blog"), a = ge(), t = C(null), s = C(!1), i = v(() => y?.article.value ?? null), x = v(() => m.can("blog.articles.manage")), T = v(
691
681
  () => i.value?.status === "published" || i.value?.status === "modified" ? t.value?.[0]?.number ?? null : null
692
682
  );
693
683
  async function c() {
694
- const _ = i.value;
695
- if (_)
684
+ const w = i.value;
685
+ if (w)
696
686
  try {
697
- t.value = await r.versions(_.id);
687
+ t.value = await o.versions(w.id);
698
688
  } catch (W) {
699
689
  t.value = [], L.danger(a(W));
700
690
  }
701
691
  }
702
- async function o(_) {
692
+ async function r(w) {
703
693
  const W = i.value;
704
- if (!(!W || !await be({
705
- title: u("article.restore-title", { number: _.number }),
694
+ if (!(!W || !await me({
695
+ title: u("article.restore-title", { number: w.number }),
706
696
  message: u("article.restore-text"),
707
697
  confirmText: u("article.restore-version"),
708
698
  cancelText: u("panel.cancel")
709
699
  }))) {
710
700
  s.value = !0;
711
701
  try {
712
- await r.restoreVersion(W.id, _.number), await y?.reload(), L.success(u("article.restored-version", { number: _.number }));
702
+ await o.restoreVersion(W.id, w.number), await y?.reload(), L.success(u("article.restored-version", { number: w.number }));
713
703
  } catch (E) {
714
704
  L.danger(a(E));
715
705
  } finally {
@@ -723,7 +713,7 @@ const Bt = { class: "wx-article-editor__screen" }, Pt = 1200, Dt = /* @__PURE__
723
713
  c();
724
714
  },
725
715
  { immediate: !0 }
726
- ), (_, W) => (p(), G("div", Ot, [
716
+ ), (w, W) => (p(), G("div", Et, [
727
717
  t.value === null ? (p(), z(e(Ue), {
728
718
  key: 0,
729
719
  class: "wx-article-history__ghost",
@@ -731,57 +721,57 @@ const Bt = { class: "wx-article-editor__screen" }, Pt = 1200, Dt = /* @__PURE__
731
721
  })) : t.value.length === 0 ? (p(), z(e(Ge), {
732
722
  key: 1,
733
723
  description: e(u)("article.history-empty")
734
- }, null, 8, ["description"])) : (p(!0), G(ve, { key: 2 }, Be(t.value, (S) => (p(), G("div", {
724
+ }, null, 8, ["description"])) : (p(!0), G(be, { key: 2 }, Be(t.value, (S) => (p(), G("div", {
735
725
  key: S.number,
736
726
  class: Pe(["wx-article-history__row", { "is-live": S.number === T.value }])
737
727
  }, [
738
- j("code", Et, b(e(u)("article.version", { number: S.number })), 1),
739
- j("div", Ft, [
728
+ j("code", Ft, g(e(u)("article.version", { number: S.number })), 1),
729
+ j("div", Lt, [
740
730
  S.created_at ? (p(), z(e(je), {
741
731
  key: 0,
742
732
  value: S.created_at,
743
733
  size: "md",
744
734
  tone: "default"
745
- }, null, 8, ["value"])) : H("", !0),
735
+ }, null, 8, ["value"])) : K("", !0),
746
736
  n(e(J), {
747
737
  size: "sm",
748
738
  tone: "muted"
749
739
  }, {
750
740
  default: l(() => [
751
- w(b(S.author ?? e(u)(`article.source-${S.source}`)) + " ", 1),
752
- S.comment ? (p(), G(ve, { key: 0 }, [
753
- w(" · " + b(S.comment), 1)
754
- ], 64)) : H("", !0)
741
+ _(g(S.author ?? e(u)(`article.source-${S.source}`)) + " ", 1),
742
+ S.comment ? (p(), G(be, { key: 0 }, [
743
+ _(" · " + g(S.comment), 1)
744
+ ], 64)) : K("", !0)
755
745
  ]),
756
746
  _: 2
757
747
  }, 1024)
758
748
  ]),
759
- S.number === T.value ? (p(), z(e(oe), {
749
+ S.number === T.value ? (p(), z(e(ie), {
760
750
  key: 0,
761
751
  type: "success",
762
752
  dot: ""
763
753
  }, {
764
754
  default: l(() => [
765
- w(b(e(u)("article.version-live")), 1)
755
+ _(g(e(u)("article.version-live")), 1)
766
756
  ]),
767
757
  _: 1
768
- })) : H("", !0),
758
+ })) : K("", !0),
769
759
  x.value && S.number !== T.value ? (p(), z(e(Z), {
770
760
  key: 1,
771
761
  size: "sm",
772
762
  variant: "outline",
773
763
  loading: s.value,
774
- onClick: (E) => o(S)
764
+ onClick: (E) => r(S)
775
765
  }, {
776
766
  default: l(() => [
777
- w(b(e(u)("article.restore-version")), 1)
767
+ _(g(e(u)("article.restore-version")), 1)
778
768
  ]),
779
769
  _: 1
780
- }, 8, ["loading", "onClick"])) : H("", !0)
770
+ }, 8, ["loading", "onClick"])) : K("", !0)
781
771
  ], 2))), 128))
782
772
  ]));
783
773
  }
784
- }), Ht = /* @__PURE__ */ pe(Lt, [["__scopeId", "data-v-0a997938"]]), Kt = { class: "wx-article-related" }, jt = { class: "wx-article-related__name" }, Gt = 250, Jt = 10, Zt = /* @__PURE__ */ ee({
774
+ }), Kt = /* @__PURE__ */ ve(Ht, [["__scopeId", "data-v-0a997938"]]), jt = { class: "wx-article-related" }, Gt = { class: "wx-article-related__name" }, Jt = 250, Zt = 10, Qt = /* @__PURE__ */ ee({
785
775
  name: "WxArticleRelated",
786
776
  __name: "ArticleRelated",
787
777
  props: /* @__PURE__ */ Me({
@@ -792,7 +782,7 @@ const Bt = { class: "wx-article-editor__screen" }, Pt = 1200, Dt = /* @__PURE__
792
782
  }),
793
783
  emits: ["update:modelValue"],
794
784
  setup(f) {
795
- const m = f, r = qe(f, "modelValue"), y = ne(), u = de(y), a = Se();
785
+ const m = f, o = qe(f, "modelValue"), y = se(), u = de(y), a = Ae();
796
786
  te();
797
787
  const t = Q("webx-blog"), s = ge(), i = v(() => m.disabled || a?.disabled.value === !0), x = C(/* @__PURE__ */ new Map()), T = C([]);
798
788
  let c;
@@ -805,22 +795,22 @@ const Bt = { class: "wx-article-editor__screen" }, Pt = 1200, Dt = /* @__PURE__
805
795
  },
806
796
  { immediate: !0, deep: !0 }
807
797
  );
808
- const o = v({
809
- get: () => r.value.map(($) => ({ id: $, title: x.value.get($) ?? `#${$}` })),
798
+ const r = v({
799
+ get: () => o.value.map(($) => ({ id: $, title: x.value.get($) ?? `#${$}` })),
810
800
  set: ($) => {
811
- r.value = $.map((U) => U.id);
801
+ o.value = $.map((U) => U.id);
812
802
  }
813
- }), _ = v(
814
- () => T.value.filter(($) => !r.value.includes($.id)).map(($) => ({ label: $.title, value: $.id }))
803
+ }), w = v(
804
+ () => T.value.filter(($) => !o.value.includes($.id)).map(($) => ({ label: $.title, value: $.id }))
815
805
  );
816
806
  async function W($) {
817
807
  const U = a?.article.value?.id;
818
808
  try {
819
- const R = await u.articles({ q: $, per_page: Jt });
809
+ const R = await u.articles({ q: $, per_page: Zt });
820
810
  T.value = R.data.filter((A) => A.id !== U).map((A) => ({ id: A.id, title: A.title }));
821
- const M = new Map(x.value);
822
- for (const A of T.value) M.set(A.id, A.title);
823
- x.value = M;
811
+ const N = new Map(x.value);
812
+ for (const A of T.value) N.set(A.id, A.title);
813
+ x.value = N;
824
814
  } catch (R) {
825
815
  L.danger(s(R));
826
816
  }
@@ -828,13 +818,13 @@ const Bt = { class: "wx-article-editor__screen" }, Pt = 1200, Dt = /* @__PURE__
828
818
  function S($) {
829
819
  clearTimeout(c), c = setTimeout(() => {
830
820
  W($);
831
- }, Gt);
821
+ }, Jt);
832
822
  }
833
823
  function E($) {
834
- typeof $ != "number" || r.value.includes($) || (r.value = [...r.value, $]);
824
+ typeof $ != "number" || o.value.includes($) || (o.value = [...o.value, $]);
835
825
  }
836
826
  function F($) {
837
- r.value = r.value.filter((U) => U !== $);
827
+ o.value = o.value.filter((U) => U !== $);
838
828
  }
839
829
  return ue(
840
830
  () => a?.article.value?.id,
@@ -842,10 +832,10 @@ const Bt = { class: "wx-article-editor__screen" }, Pt = 1200, Dt = /* @__PURE__
842
832
  W("");
843
833
  },
844
834
  { immediate: !0 }
845
- ), Je(() => clearTimeout(c)), ($, U) => (p(), G("div", Kt, [
835
+ ), Je(() => clearTimeout(c)), ($, U) => (p(), G("div", jt, [
846
836
  n(e(Ye), {
847
- modelValue: o.value,
848
- "onUpdate:modelValue": U[0] || (U[0] = (R) => o.value = R),
837
+ modelValue: r.value,
838
+ "onUpdate:modelValue": U[0] || (U[0] = (R) => r.value = R),
849
839
  plain: "",
850
840
  size: "sm",
851
841
  "item-key": "id",
@@ -855,7 +845,7 @@ const Bt = { class: "wx-article-editor__screen" }, Pt = 1200, Dt = /* @__PURE__
855
845
  "aria-label": e(t)("article.related")
856
846
  }, {
857
847
  default: l(({ item: R }) => [
858
- j("span", jt, b(R.title), 1)
848
+ j("span", Gt, g(R.title), 1)
859
849
  ]),
860
850
  actions: l(({ item: R }) => [
861
851
  n(e(Oe), {
@@ -863,14 +853,14 @@ const Bt = { class: "wx-article-editor__screen" }, Pt = 1200, Dt = /* @__PURE__
863
853
  size: "sm",
864
854
  disabled: i.value,
865
855
  title: e(t)("article.related-remove"),
866
- onClick: (M) => F(R.id)
856
+ onClick: (N) => F(R.id)
867
857
  }, null, 8, ["disabled", "title", "onClick"])
868
858
  ]),
869
859
  _: 1
870
860
  }, 8, ["modelValue", "disabled", "empty-text", "aria-label"]),
871
861
  n(e(_e), {
872
862
  "model-value": null,
873
- options: _.value,
863
+ options: w.value,
874
864
  placeholder: e(t)("article.related-add"),
875
865
  "empty-text": e(t)("article.related-nothing"),
876
866
  disabled: i.value,
@@ -882,7 +872,7 @@ const Bt = { class: "wx-article-editor__screen" }, Pt = 1200, Dt = /* @__PURE__
882
872
  }, null, 8, ["options", "placeholder", "empty-text", "disabled", "aria-label"])
883
873
  ]));
884
874
  }
885
- }), Qt = /* @__PURE__ */ pe(Zt, [["__scopeId", "data-v-164e86fe"]]), Xt = { class: "wx-article-rubrics" }, Yt = { class: "wx-article-rubrics__name" }, ea = /* @__PURE__ */ ee({
875
+ }), Xt = /* @__PURE__ */ ve(Qt, [["__scopeId", "data-v-164e86fe"]]), Yt = { class: "wx-article-rubrics" }, ea = { class: "wx-article-rubrics__name" }, ta = /* @__PURE__ */ ee({
886
876
  name: "WxArticleRubrics",
887
877
  __name: "ArticleRubrics",
888
878
  props: /* @__PURE__ */ Me({
@@ -893,30 +883,30 @@ const Bt = { class: "wx-article-editor__screen" }, Pt = 1200, Dt = /* @__PURE__
893
883
  }),
894
884
  emits: ["update:modelValue"],
895
885
  setup(f) {
896
- const m = f, r = qe(f, "modelValue"), y = Se();
886
+ const m = f, o = qe(f, "modelValue"), y = Ae();
897
887
  te();
898
888
  const u = Q("webx-blog"), a = v(() => m.disabled || y?.disabled.value === !0), t = v(() => {
899
889
  const c = /* @__PURE__ */ new Map();
900
- for (const o of y?.options.value.rubrics ?? []) c.set(o.id, o.title);
890
+ for (const r of y?.options.value.rubrics ?? []) c.set(r.id, r.title);
901
891
  return c;
902
892
  }), s = v({
903
- get: () => r.value.map((c) => ({ id: c, title: t.value.get(c) ?? `#${c}` })),
893
+ get: () => o.value.map((c) => ({ id: c, title: t.value.get(c) ?? `#${c}` })),
904
894
  set: (c) => {
905
- r.value = c.map((o) => o.id);
895
+ o.value = c.map((r) => r.id);
906
896
  }
907
897
  }), i = v(
908
- () => (y?.options.value.rubrics ?? []).filter((c) => !r.value.includes(c.id)).map((c) => ({ label: c.title, value: c.id }))
898
+ () => (y?.options.value.rubrics ?? []).filter((c) => !o.value.includes(c.id)).map((c) => ({ label: c.title, value: c.id }))
909
899
  );
910
900
  function x(c) {
911
- typeof c != "number" || r.value.includes(c) || (r.value = [...r.value, c]);
901
+ typeof c != "number" || o.value.includes(c) || (o.value = [...o.value, c]);
912
902
  }
913
903
  function T(c) {
914
- r.value = r.value.filter((o) => o !== c);
904
+ o.value = o.value.filter((r) => r !== c);
915
905
  }
916
- return (c, o) => (p(), G("div", Xt, [
906
+ return (c, r) => (p(), G("div", Yt, [
917
907
  n(e(Ye), {
918
908
  modelValue: s.value,
919
- "onUpdate:modelValue": o[0] || (o[0] = (_) => s.value = _),
909
+ "onUpdate:modelValue": r[0] || (r[0] = (w) => s.value = w),
920
910
  plain: "",
921
911
  size: "sm",
922
912
  "item-key": "id",
@@ -925,25 +915,25 @@ const Bt = { class: "wx-article-editor__screen" }, Pt = 1200, Dt = /* @__PURE__
925
915
  "empty-text": e(u)("article.rubrics-empty"),
926
916
  "aria-label": e(u)("article.rubrics")
927
917
  }, {
928
- default: l(({ item: _, index: W }) => [
929
- j("span", Yt, b(_.title), 1),
930
- W === 0 ? (p(), z(e(oe), {
918
+ default: l(({ item: w, index: W }) => [
919
+ j("span", ea, g(w.title), 1),
920
+ W === 0 ? (p(), z(e(ie), {
931
921
  key: 0,
932
922
  type: "primary"
933
923
  }, {
934
924
  default: l(() => [
935
- w(b(e(u)("article.rubric-main")), 1)
925
+ _(g(e(u)("article.rubric-main")), 1)
936
926
  ]),
937
927
  _: 1
938
- })) : H("", !0)
928
+ })) : K("", !0)
939
929
  ]),
940
- actions: l(({ item: _ }) => [
930
+ actions: l(({ item: w }) => [
941
931
  n(e(Oe), {
942
932
  type: "remove",
943
933
  size: "sm",
944
934
  disabled: a.value,
945
935
  title: e(u)("article.rubric-remove"),
946
- onClick: (W) => T(_.id)
936
+ onClick: (W) => T(w.id)
947
937
  }, null, 8, ["disabled", "title", "onClick"])
948
938
  ]),
949
939
  _: 1
@@ -961,10 +951,10 @@ const Bt = { class: "wx-article-editor__screen" }, Pt = 1200, Dt = /* @__PURE__
961
951
  }, null, 8, ["options", "placeholder", "disabled", "empty-text", "aria-label"])
962
952
  ]));
963
953
  }
964
- }), ta = /* @__PURE__ */ pe(ea, [["__scopeId", "data-v-db8c5bc8"]]), aa = { class: "wx-article-tags" }, la = {
954
+ }), aa = /* @__PURE__ */ ve(ta, [["__scopeId", "data-v-db8c5bc8"]]), la = { class: "wx-article-tags" }, ia = {
965
955
  key: 0,
966
956
  class: "wx-article-tags__chips"
967
- }, ia = { class: "wx-article-tags__pick" }, na = 250, sa = /* @__PURE__ */ ee({
957
+ }, na = { class: "wx-article-tags__pick" }, sa = 250, ra = /* @__PURE__ */ ee({
968
958
  name: "WxArticleTags",
969
959
  __name: "ArticleTags",
970
960
  props: /* @__PURE__ */ Me({
@@ -975,23 +965,23 @@ const Bt = { class: "wx-article-editor__screen" }, Pt = 1200, Dt = /* @__PURE__
975
965
  }),
976
966
  emits: ["update:modelValue"],
977
967
  setup(f) {
978
- const m = f, r = qe(f, "modelValue"), y = ne(), u = de(y), a = Se();
968
+ const m = f, o = qe(f, "modelValue"), y = se(), u = de(y), a = Ae();
979
969
  te();
980
- const t = Q("webx-blog"), s = ge(), i = v(() => m.disabled || a?.disabled.value === !0), x = C(/* @__PURE__ */ new Map()), T = C([]), c = C(""), o = C(!1);
981
- let _;
970
+ const t = Q("webx-blog"), s = ge(), i = v(() => m.disabled || a?.disabled.value === !0), x = C(/* @__PURE__ */ new Map()), T = C([]), c = C(""), r = C(!1);
971
+ let w;
982
972
  ue(
983
973
  () => a?.article.value?.tags,
984
974
  (A) => {
985
975
  const I = new Map(x.value);
986
- for (const K of A ?? []) I.set(K.id, K.title);
976
+ for (const H of A ?? []) I.set(H.id, H.title);
987
977
  x.value = I;
988
978
  },
989
979
  { immediate: !0, deep: !0 }
990
980
  );
991
981
  const W = v(
992
- () => r.value.map((A) => ({ id: A, title: x.value.get(A) ?? `#${A}` }))
982
+ () => o.value.map((A) => ({ id: A, title: x.value.get(A) ?? `#${A}` }))
993
983
  ), S = v(
994
- () => T.value.filter((A) => !r.value.includes(A.id)).map((A) => ({
984
+ () => T.value.filter((A) => !o.value.includes(A.id)).map((A) => ({
995
985
  // The count is part of the label rather than a column: a select draws a line of text, and
996
986
  // the number is what the reader is choosing between two near-identical words on.
997
987
  label: t("article.tag-option", { title: A.title, count: A.articles_count }),
@@ -1000,8 +990,8 @@ const Bt = { class: "wx-article-editor__screen" }, Pt = 1200, Dt = /* @__PURE__
1000
990
  ), E = v(() => {
1001
991
  const A = c.value.trim();
1002
992
  if (A === "") return null;
1003
- const I = (K) => K.toLowerCase() === A.toLowerCase();
1004
- return T.value.some((K) => I(K.title)) ? null : A;
993
+ const I = (H) => H.toLowerCase() === A.toLowerCase();
994
+ return T.value.some((H) => I(H.title)) ? null : A;
1005
995
  });
1006
996
  async function F() {
1007
997
  try {
@@ -1014,27 +1004,27 @@ const Bt = { class: "wx-article-editor__screen" }, Pt = 1200, Dt = /* @__PURE__
1014
1004
  }
1015
1005
  }
1016
1006
  function $(A) {
1017
- c.value = A, clearTimeout(_), _ = setTimeout(() => {
1007
+ c.value = A, clearTimeout(w), w = setTimeout(() => {
1018
1008
  F();
1019
- }, na);
1009
+ }, sa);
1020
1010
  }
1021
1011
  function U(A) {
1022
- typeof A != "number" || r.value.includes(A) || (r.value = [...r.value, A], c.value = "");
1012
+ typeof A != "number" || o.value.includes(A) || (o.value = [...o.value, A], c.value = "");
1023
1013
  }
1024
1014
  function R(A) {
1025
- r.value = r.value.filter((I) => I !== A);
1015
+ o.value = o.value.filter((I) => I !== A);
1026
1016
  }
1027
- async function M() {
1017
+ async function N() {
1028
1018
  const A = E.value;
1029
- if (!(A === null || o.value)) {
1030
- o.value = !0;
1019
+ if (!(A === null || r.value)) {
1020
+ r.value = !0;
1031
1021
  try {
1032
1022
  const I = await u.createTag({ title: A });
1033
1023
  x.value = new Map(x.value).set(I.id, I.title), T.value = [I, ...T.value], U(I.id);
1034
1024
  } catch (I) {
1035
1025
  L.danger(s(I));
1036
1026
  } finally {
1037
- o.value = !1;
1027
+ r.value = !1;
1038
1028
  }
1039
1029
  }
1040
1030
  }
@@ -1044,22 +1034,22 @@ const Bt = { class: "wx-article-editor__screen" }, Pt = 1200, Dt = /* @__PURE__
1044
1034
  F();
1045
1035
  },
1046
1036
  { immediate: !0 }
1047
- ), Je(() => clearTimeout(_)), (A, I) => (p(), G("div", aa, [
1048
- W.value.length > 0 ? (p(), G("div", la, [
1049
- (p(!0), G(ve, null, Be(W.value, (K) => (p(), z(e(oe), {
1050
- key: K.id,
1037
+ ), Je(() => clearTimeout(w)), (A, I) => (p(), G("div", la, [
1038
+ W.value.length > 0 ? (p(), G("div", ia, [
1039
+ (p(!0), G(be, null, Be(W.value, (H) => (p(), z(e(ie), {
1040
+ key: H.id,
1051
1041
  type: "default",
1052
1042
  class: "wx-article-tags__chip"
1053
1043
  }, {
1054
1044
  default: l(() => [
1055
- w(b(K.title) + " ", 1),
1045
+ _(g(H.title) + " ", 1),
1056
1046
  n(e(Oe), {
1057
1047
  icon: "close",
1058
1048
  tone: "neutral",
1059
1049
  size: "sm",
1060
1050
  disabled: i.value,
1061
1051
  title: e(t)("article.tag-remove"),
1062
- onClick: (P) => R(K.id)
1052
+ onClick: (P) => R(H.id)
1063
1053
  }, null, 8, ["disabled", "title", "onClick"])
1064
1054
  ]),
1065
1055
  _: 2
@@ -1070,11 +1060,11 @@ const Bt = { class: "wx-article-editor__screen" }, Pt = 1200, Dt = /* @__PURE__
1070
1060
  tone: "muted"
1071
1061
  }, {
1072
1062
  default: l(() => [
1073
- w(b(e(t)("article.tags-empty")), 1)
1063
+ _(g(e(t)("article.tags-empty")), 1)
1074
1064
  ]),
1075
1065
  _: 1
1076
1066
  })),
1077
- j("div", ia, [
1067
+ j("div", na, [
1078
1068
  n(e(_e), {
1079
1069
  "model-value": null,
1080
1070
  options: S.value,
@@ -1091,22 +1081,22 @@ const Bt = { class: "wx-article-editor__screen" }, Pt = 1200, Dt = /* @__PURE__
1091
1081
  key: 0,
1092
1082
  variant: "outline",
1093
1083
  icon: "plus",
1094
- loading: o.value,
1084
+ loading: r.value,
1095
1085
  disabled: i.value,
1096
- onClick: M
1086
+ onClick: N
1097
1087
  }, {
1098
1088
  default: l(() => [
1099
- w(b(e(t)("article.tag-create", { title: E.value })), 1)
1089
+ _(g(e(t)("article.tag-create", { title: E.value })), 1)
1100
1090
  ]),
1101
1091
  _: 1
1102
- }, 8, ["loading", "disabled"])) : H("", !0)
1092
+ }, 8, ["loading", "disabled"])) : K("", !0)
1103
1093
  ])
1104
1094
  ]));
1105
1095
  }
1106
- }), ra = /* @__PURE__ */ pe(sa, [["__scopeId", "data-v-ce095e37"]]), oa = /* @__PURE__ */ ee({
1096
+ }), oa = /* @__PURE__ */ ve(ra, [["__scopeId", "data-v-ce095e37"]]), ua = /* @__PURE__ */ ee({
1107
1097
  __name: "ArticleCreateDialog",
1108
1098
  setup(f) {
1109
- const { open: m, resolve: r, dismiss: y } = Ee(), u = ne(), a = de(u);
1099
+ const { open: m, resolve: o, dismiss: y } = Ee(), u = se(), a = de(u);
1110
1100
  te();
1111
1101
  const t = Q("webx-blog"), s = C(""), i = C(!1), x = C({}), T = De("field");
1112
1102
  Ne(async () => {
@@ -1116,17 +1106,17 @@ const Bt = { class: "wx-article-editor__screen" }, Pt = 1200, Dt = /* @__PURE__
1116
1106
  if (!(s.value.trim() === "" || i.value)) {
1117
1107
  i.value = !0, x.value = {};
1118
1108
  try {
1119
- r(await a.create({ title: s.value.trim() }));
1120
- } catch (o) {
1121
- x.value = o.body?.errors ?? {};
1109
+ o(await a.create({ title: s.value.trim() }));
1110
+ } catch (r) {
1111
+ x.value = r.body?.errors ?? {};
1122
1112
  } finally {
1123
1113
  i.value = !1;
1124
1114
  }
1125
1115
  }
1126
1116
  }
1127
- return (o, _) => (p(), z(e(Fe), {
1117
+ return (r, w) => (p(), z(e(Fe), {
1128
1118
  open: e(m),
1129
- "onUpdate:open": _[2] || (_[2] = (W) => Ie(m) ? m.value = W : null),
1119
+ "onUpdate:open": w[2] || (w[2] = (W) => Ie(m) ? m.value = W : null),
1130
1120
  title: e(t)("panel.new-title"),
1131
1121
  width: 440
1132
1122
  }, {
@@ -1135,10 +1125,10 @@ const Bt = { class: "wx-article-editor__screen" }, Pt = 1200, Dt = /* @__PURE__
1135
1125
  default: l(() => [
1136
1126
  n(e(Z), {
1137
1127
  variant: "outline",
1138
- onClick: _[1] || (_[1] = (W) => e(y)())
1128
+ onClick: w[1] || (w[1] = (W) => e(y)())
1139
1129
  }, {
1140
1130
  default: l(() => [
1141
- w(b(e(t)("panel.cancel")), 1)
1131
+ _(g(e(t)("panel.cancel")), 1)
1142
1132
  ]),
1143
1133
  _: 1
1144
1134
  }),
@@ -1149,7 +1139,7 @@ const Bt = { class: "wx-article-editor__screen" }, Pt = 1200, Dt = /* @__PURE__
1149
1139
  onClick: c
1150
1140
  }, {
1151
1141
  default: l(() => [
1152
- w(b(e(t)("panel.create")), 1)
1142
+ _(g(e(t)("panel.create")), 1)
1153
1143
  ]),
1154
1144
  _: 1
1155
1145
  }, 8, ["loading", "disabled"])
@@ -1158,7 +1148,7 @@ const Bt = { class: "wx-article-editor__screen" }, Pt = 1200, Dt = /* @__PURE__
1158
1148
  })
1159
1149
  ]),
1160
1150
  default: l(() => [
1161
- n(e(ie), {
1151
+ n(e(ne), {
1162
1152
  label: e(t)("panel.field-title"),
1163
1153
  error: x.value.title?.[0] ?? x.value.slug?.[0],
1164
1154
  required: ""
@@ -1168,9 +1158,9 @@ const Bt = { class: "wx-article-editor__screen" }, Pt = 1200, Dt = /* @__PURE__
1168
1158
  ref_key: "field",
1169
1159
  ref: T
1170
1160
  }, [
1171
- n(e(Ae), {
1161
+ n(e(Ve), {
1172
1162
  modelValue: s.value,
1173
- "onUpdate:modelValue": _[0] || (_[0] = (W) => s.value = W),
1163
+ "onUpdate:modelValue": w[0] || (w[0] = (W) => s.value = W),
1174
1164
  "aria-label": e(t)("panel.field-title"),
1175
1165
  onKeyup: ze(c, ["enter"])
1176
1166
  }, null, 8, ["modelValue", "aria-label"])
@@ -1182,16 +1172,16 @@ const Bt = { class: "wx-article-editor__screen" }, Pt = 1200, Dt = /* @__PURE__
1182
1172
  _: 1
1183
1173
  }, 8, ["open", "title"]));
1184
1174
  }
1185
- }), ua = ["src"], da = { class: "wx-articles__name" }, ca = { class: "wx-articles__name-text" }, va = { class: "wx-articles__title" }, pa = { class: "wx-articles__address" }, fa = { class: "wx-articles__chips" }, ma = { class: "wx-articles__state" }, nt = 640, ba = /* @__PURE__ */ ee({
1175
+ }), da = ["src"], ca = { class: "wx-articles__name" }, va = { class: "wx-articles__name-text" }, pa = { class: "wx-articles__title" }, fa = { class: "wx-articles__address" }, ma = { class: "wx-articles__chips" }, ba = { class: "wx-articles__state" }, nt = 640, ga = /* @__PURE__ */ ee({
1186
1176
  __name: "ArticlesPage",
1187
1177
  props: {
1188
1178
  base: { default: "/blog" }
1189
1179
  },
1190
1180
  setup(f) {
1191
- const m = f, r = ne(), y = de(r), u = He(), a = Ke();
1181
+ const m = f, o = se(), y = de(o), u = He(), a = Ke();
1192
1182
  te();
1193
- const t = Q("webx-blog"), s = Q("webx-admin"), i = ge(), x = De("root"), T = _t(x), c = C(null), o = C(!0), _ = Ce(oa), W = v(() => r.can("blog.articles.manage")), S = v(
1194
- () => r.state.manifest?.modules.find((d) => d.id === "articles")?.title ?? t("module.articles")
1183
+ const t = Q("webx-blog"), s = Q("webx-admin"), i = ge(), x = De("root"), T = xt(x), c = C(null), r = C(!0), w = Ce(ua), W = v(() => o.can("blog.articles.manage")), S = v(
1184
+ () => o.state.manifest?.modules.find((d) => d.id === "articles")?.title ?? t("module.articles")
1195
1185
  ), E = v({
1196
1186
  get: () => typeof u.query.view == "string" ? u.query.view : "",
1197
1187
  set: (d) => {
@@ -1217,7 +1207,7 @@ const Bt = { class: "wx-article-editor__screen" }, Pt = 1200, Dt = /* @__PURE__
1217
1207
  { value: "draft", label: t("panel.view-draft") },
1218
1208
  { value: "unpublished", label: t("panel.view-unpublished") },
1219
1209
  { value: "trashed", label: t("panel.bin"), icon: "trash" }
1220
- ]), M = v(() => c.value?.filters ?? { rubrics: [], tags: [], authors: [] }), A = v(() => T.value > 0 && T.value < nt), I = v(() => A.value ? [{ key: "card", label: "" }] : [
1210
+ ]), N = v(() => c.value?.filters ?? { rubrics: [], tags: [], authors: [] }), A = v(() => T.value > 0 && T.value < nt), I = v(() => A.value ? [{ key: "card", label: "" }] : [
1221
1211
  { key: "cover", label: "", width: 68 },
1222
1212
  /* The one that takes what the others leave, and the only one without a number. */
1223
1213
  { key: "title", label: t("panel.column-title"), minWidth: 220 },
@@ -1234,20 +1224,20 @@ const Bt = { class: "wx-article-editor__screen" }, Pt = 1200, Dt = /* @__PURE__
1234
1224
  },
1235
1225
  { key: "status", label: t("panel.column-status"), width: 170 },
1236
1226
  { key: "actions", label: "", width: st, align: "right" }
1237
- ]), K = v(() => $.value.q !== "" ? t("panel.empty-search") : F.value ? t("panel.empty-bin") : t("panel.empty")), P = v(() => {
1238
- const d = [], D = M.value.rubrics.find((V) => V.id === $.value.rubric);
1227
+ ]), H = v(() => $.value.q !== "" ? t("panel.empty-search") : F.value ? t("panel.empty-bin") : t("panel.empty")), P = v(() => {
1228
+ const d = [], D = N.value.rubrics.find((V) => V.id === $.value.rubric);
1239
1229
  D && d.push({
1240
1230
  key: "rubric",
1241
1231
  label: `${t("panel.filter-rubric")}: ${D.title}`,
1242
1232
  clear: () => O("rubric", void 0)
1243
1233
  });
1244
- const h = M.value.tags.find((V) => V.id === $.value.tag);
1234
+ const h = N.value.tags.find((V) => V.id === $.value.tag);
1245
1235
  h && d.push({
1246
1236
  key: "tag",
1247
1237
  label: `${t("panel.filter-tag")}: ${h.title}`,
1248
1238
  clear: () => O("tag", void 0)
1249
1239
  });
1250
- const $e = M.value.authors.find((V) => V.id === $.value.author);
1240
+ const $e = N.value.authors.find((V) => V.id === $.value.author);
1251
1241
  return $e && d.push({
1252
1242
  key: "author",
1253
1243
  label: `${t("panel.filter-author")}: ${$e.title}`,
@@ -1266,7 +1256,7 @@ const Bt = { class: "wx-article-editor__screen" }, Pt = 1200, Dt = /* @__PURE__
1266
1256
  });
1267
1257
  }
1268
1258
  async function k(d) {
1269
- o.value = !0;
1259
+ r.value = !0;
1270
1260
  try {
1271
1261
  c.value = await y.articles({
1272
1262
  q: d?.search ?? $.value.q,
@@ -1282,7 +1272,7 @@ const Bt = { class: "wx-article-editor__screen" }, Pt = 1200, Dt = /* @__PURE__
1282
1272
  } catch (D) {
1283
1273
  L.danger(i(D));
1284
1274
  } finally {
1285
- o.value = !1;
1275
+ r.value = !1;
1286
1276
  }
1287
1277
  }
1288
1278
  function le(d) {
@@ -1309,13 +1299,13 @@ const Bt = { class: "wx-article-editor__screen" }, Pt = 1200, Dt = /* @__PURE__
1309
1299
  k();
1310
1300
  }
1311
1301
  ), k();
1312
- function se(d) {
1302
+ function re(d) {
1313
1303
  const D = `${m.base}/articles/${d.id}`;
1314
1304
  a.resolve(D).matched.length > 0 && a.push({ path: D, query: { ...u.query } });
1315
1305
  }
1316
1306
  async function xe() {
1317
- const d = await _({});
1318
- d && (await k(), se(d));
1307
+ const d = await w({});
1308
+ d && (await k(), re(d));
1319
1309
  }
1320
1310
  function ce(d) {
1321
1311
  if (!W.value) return [];
@@ -1326,12 +1316,12 @@ const Bt = { class: "wx-article-editor__screen" }, Pt = 1200, Dt = /* @__PURE__
1326
1316
  icon: "refresh",
1327
1317
  label: t("panel.restore"),
1328
1318
  run: () => {
1329
- re(d);
1319
+ oe(d);
1330
1320
  }
1331
1321
  }
1332
1322
  ];
1333
1323
  const D = [
1334
- { key: "open", icon: "edit", label: t("panel.open"), run: () => se(d) }
1324
+ { key: "open", icon: "edit", label: t("panel.open"), run: () => re(d) }
1335
1325
  ];
1336
1326
  return d.url && d.status !== "draft" && D.push({
1337
1327
  key: "site",
@@ -1343,7 +1333,7 @@ const Bt = { class: "wx-article-editor__screen" }, Pt = 1200, Dt = /* @__PURE__
1343
1333
  icon: "copy",
1344
1334
  label: t("panel.copy-address"),
1345
1335
  run: () => {
1346
- g(d);
1336
+ b(d);
1347
1337
  }
1348
1338
  }), D.push({
1349
1339
  key: "pin",
@@ -1358,7 +1348,7 @@ const Bt = { class: "wx-article-editor__screen" }, Pt = 1200, Dt = /* @__PURE__
1358
1348
  icon: "eye-off",
1359
1349
  label: t("panel.unpublish"),
1360
1350
  run: () => {
1361
- Te(d);
1351
+ Se(d);
1362
1352
  }
1363
1353
  } : {
1364
1354
  key: "publish",
@@ -1374,35 +1364,35 @@ const Bt = { class: "wx-article-editor__screen" }, Pt = 1200, Dt = /* @__PURE__
1374
1364
  label: t("panel.delete"),
1375
1365
  danger: !0,
1376
1366
  run: () => {
1377
- fe(d);
1367
+ pe(d);
1378
1368
  }
1379
1369
  }), D;
1380
1370
  }
1381
1371
  async function he(d) {
1382
- await me(() => y.publish(d.id), t("panel.published"));
1372
+ await fe(() => y.publish(d.id), t("panel.published"));
1383
1373
  }
1384
- async function Te(d) {
1385
- await me(() => y.unpublish(d.id), t("panel.unpublished-done"));
1374
+ async function Se(d) {
1375
+ await fe(() => y.unpublish(d.id), t("panel.unpublished-done"));
1386
1376
  }
1387
1377
  async function ke(d, D) {
1388
- await me(
1378
+ await fe(
1389
1379
  () => y.save(d.id, { values: { pinned: D }, revision: d.revision }),
1390
1380
  t(D ? "panel.pinned-done" : "panel.unpinned")
1391
1381
  );
1392
1382
  }
1393
- async function fe(d) {
1394
- await be({
1383
+ async function pe(d) {
1384
+ await me({
1395
1385
  title: t("panel.delete-title", { title: d.title }),
1396
1386
  message: t("panel.delete-text"),
1397
1387
  confirmText: t("panel.delete"),
1398
1388
  cancelText: t("panel.cancel"),
1399
1389
  tone: "danger"
1400
- }) && await me(() => y.remove(d.id), t("panel.deleted"));
1390
+ }) && await fe(() => y.remove(d.id), t("panel.deleted"));
1401
1391
  }
1402
- async function re(d) {
1403
- await me(() => y.restore(d.id), t("panel.restored"));
1392
+ async function oe(d) {
1393
+ await fe(() => y.restore(d.id), t("panel.restored"));
1404
1394
  }
1405
- async function me(d, D) {
1395
+ async function fe(d, D) {
1406
1396
  try {
1407
1397
  await d(), L.success(D);
1408
1398
  } catch (h) {
@@ -1411,14 +1401,14 @@ const Bt = { class: "wx-article-editor__screen" }, Pt = 1200, Dt = /* @__PURE__
1411
1401
  await k();
1412
1402
  }
1413
1403
  }
1414
- async function g(d) {
1404
+ async function b(d) {
1415
1405
  if (d.url)
1416
1406
  try {
1417
1407
  await navigator.clipboard.writeText(d.url), L.success(t("panel.address-copied"));
1418
1408
  } catch {
1419
1409
  }
1420
1410
  }
1421
- function N(d) {
1411
+ function M(d) {
1422
1412
  return d === "published" || d === "modified" ? "success" : d === "scheduled" ? "warning" : "default";
1423
1413
  }
1424
1414
  function B(d) {
@@ -1453,25 +1443,25 @@ const Bt = { class: "wx-article-editor__screen" }, Pt = 1200, Dt = /* @__PURE__
1453
1443
  clickable: !F.value,
1454
1444
  hover: !F.value,
1455
1445
  flush: "",
1456
- loading: o.value,
1446
+ loading: r.value,
1457
1447
  layout: "fixed",
1458
1448
  "cards-below": nt,
1459
1449
  "filters-count": P.value.length,
1460
1450
  "filters-label": e(s)("filters.title"),
1461
1451
  "search-placeholder": e(t)("panel.search"),
1462
- "empty-text": K.value,
1452
+ "empty-text": H.value,
1463
1453
  "aria-label": S.value,
1464
- onRowClick: se,
1454
+ onRowClick: re,
1465
1455
  onStateChange: le
1466
1456
  }, {
1467
1457
  filters: l(() => [
1468
- n(e(ie), {
1458
+ n(e(ne), {
1469
1459
  label: e(t)("panel.filter-rubric")
1470
1460
  }, {
1471
1461
  default: l(() => [
1472
1462
  n(e(_e), {
1473
1463
  "model-value": $.value.rubric,
1474
- options: M.value.rubrics.map((h) => ({ value: h.id, label: h.title })),
1464
+ options: N.value.rubrics.map((h) => ({ value: h.id, label: h.title })),
1475
1465
  placeholder: e(t)("panel.any-rubric"),
1476
1466
  clearable: "",
1477
1467
  size: "sm",
@@ -1480,13 +1470,13 @@ const Bt = { class: "wx-article-editor__screen" }, Pt = 1200, Dt = /* @__PURE__
1480
1470
  ]),
1481
1471
  _: 1
1482
1472
  }, 8, ["label"]),
1483
- n(e(ie), {
1473
+ n(e(ne), {
1484
1474
  label: e(t)("panel.filter-tag")
1485
1475
  }, {
1486
1476
  default: l(() => [
1487
1477
  n(e(_e), {
1488
1478
  "model-value": $.value.tag,
1489
- options: M.value.tags.map((h) => ({ value: h.id, label: h.title })),
1479
+ options: N.value.tags.map((h) => ({ value: h.id, label: h.title })),
1490
1480
  placeholder: e(t)("panel.any-tag"),
1491
1481
  clearable: "",
1492
1482
  filterable: "",
@@ -1496,13 +1486,13 @@ const Bt = { class: "wx-article-editor__screen" }, Pt = 1200, Dt = /* @__PURE__
1496
1486
  ]),
1497
1487
  _: 1
1498
1488
  }, 8, ["label"]),
1499
- n(e(ie), {
1489
+ n(e(ne), {
1500
1490
  label: e(t)("panel.filter-author")
1501
1491
  }, {
1502
1492
  default: l(() => [
1503
1493
  n(e(_e), {
1504
1494
  "model-value": $.value.author,
1505
- options: M.value.authors.map((h) => ({ value: h.id, label: h.title })),
1495
+ options: N.value.authors.map((h) => ({ value: h.id, label: h.title })),
1506
1496
  placeholder: e(t)("panel.any-author"),
1507
1497
  clearable: "",
1508
1498
  size: "sm",
@@ -1522,13 +1512,13 @@ const Bt = { class: "wx-article-editor__screen" }, Pt = 1200, Dt = /* @__PURE__
1522
1512
  n(e(we), { name: "close" })
1523
1513
  ]),
1524
1514
  default: l(() => [
1525
- w(" " + b(e(s)("filters.reset")), 1)
1515
+ _(" " + g(e(s)("filters.reset")), 1)
1526
1516
  ]),
1527
1517
  _: 1
1528
- })) : H("", !0)
1518
+ })) : K("", !0)
1529
1519
  ]),
1530
1520
  applied: l(() => [
1531
- n(e(ht), { filters: P.value }, null, 8, ["filters"])
1521
+ n(e(yt), { filters: P.value }, null, 8, ["filters"])
1532
1522
  ]),
1533
1523
  "cell-cover": l(({ row: h }) => [
1534
1524
  j("span", {
@@ -1539,7 +1529,7 @@ const Bt = { class: "wx-article-editor__screen" }, Pt = 1200, Dt = /* @__PURE__
1539
1529
  src: h.cover.thumb,
1540
1530
  alt: "",
1541
1531
  loading: "lazy"
1542
- }, null, 8, ua)) : (p(), z(e(we), {
1532
+ }, null, 8, da)) : (p(), z(e(we), {
1543
1533
  key: 1,
1544
1534
  name: "image",
1545
1535
  size: "sm"
@@ -1547,7 +1537,7 @@ const Bt = { class: "wx-article-editor__screen" }, Pt = 1200, Dt = /* @__PURE__
1547
1537
  ], 2)
1548
1538
  ]),
1549
1539
  "cell-title": l(({ row: h }) => [
1550
- j("div", da, [
1540
+ j("div", ca, [
1551
1541
  h.pinned ? (p(), z(e(et), {
1552
1542
  key: 0,
1553
1543
  content: e(t)("panel.pinned")
@@ -1560,22 +1550,22 @@ const Bt = { class: "wx-article-editor__screen" }, Pt = 1200, Dt = /* @__PURE__
1560
1550
  })
1561
1551
  ]),
1562
1552
  _: 1
1563
- }, 8, ["content"])) : H("", !0),
1564
- j("div", ca, [
1565
- j("span", va, b(h.title), 1),
1566
- j("span", pa, b(B(h)), 1)
1553
+ }, 8, ["content"])) : K("", !0),
1554
+ j("div", va, [
1555
+ j("span", pa, g(h.title), 1),
1556
+ j("span", fa, g(B(h)), 1)
1567
1557
  ])
1568
1558
  ])
1569
1559
  ]),
1570
1560
  "cell-rubrics": l(({ row: h }) => [
1571
- j("span", fa, [
1572
- (p(!0), G(ve, null, Be(h.rubrics, ($e) => (p(), z(e(oe), {
1561
+ j("span", ma, [
1562
+ (p(!0), G(be, null, Be(h.rubrics, ($e) => (p(), z(e(ie), {
1573
1563
  key: $e.id,
1574
1564
  size: "sm",
1575
1565
  round: ""
1576
1566
  }, {
1577
1567
  default: l(() => [
1578
- w(b($e.title), 1)
1568
+ _(g($e.title), 1)
1579
1569
  ]),
1580
1570
  _: 2
1581
1571
  }, 1024))), 128))
@@ -1588,7 +1578,7 @@ const Bt = { class: "wx-article-editor__screen" }, Pt = 1200, Dt = /* @__PURE__
1588
1578
  truncate: ""
1589
1579
  }, {
1590
1580
  default: l(() => [
1591
- w(b(h.author ? h.author.name : "—"), 1)
1581
+ _(g(h.author ? h.author.name : "—"), 1)
1592
1582
  ]),
1593
1583
  _: 2
1594
1584
  }, 1024)
@@ -1604,38 +1594,38 @@ const Bt = { class: "wx-article-editor__screen" }, Pt = 1200, Dt = /* @__PURE__
1604
1594
  tone: "muted"
1605
1595
  }, {
1606
1596
  default: l(() => [...D[4] || (D[4] = [
1607
- w("—", -1)
1597
+ _("—", -1)
1608
1598
  ])]),
1609
1599
  _: 1
1610
1600
  }))
1611
1601
  ]),
1612
1602
  "cell-status": l(({ row: h }) => [
1613
- j("span", ma, [
1614
- n(e(oe), {
1615
- type: N(h.status),
1603
+ j("span", ba, [
1604
+ n(e(ie), {
1605
+ type: M(h.status),
1616
1606
  dot: "",
1617
1607
  size: "sm"
1618
1608
  }, {
1619
1609
  default: l(() => [
1620
- w(b(e(t)(`panel.status-${h.status}`)), 1)
1610
+ _(g(e(t)(`panel.status-${h.status}`)), 1)
1621
1611
  ]),
1622
1612
  _: 2
1623
1613
  }, 1032, ["type"]),
1624
- h.status === "modified" ? (p(), z(e(oe), {
1614
+ h.status === "modified" ? (p(), z(e(ie), {
1625
1615
  key: 0,
1626
1616
  type: "primary",
1627
1617
  size: "sm",
1628
1618
  round: ""
1629
1619
  }, {
1630
1620
  default: l(() => [
1631
- w(b(e(t)("panel.edits")), 1)
1621
+ _(g(e(t)("panel.edits")), 1)
1632
1622
  ]),
1633
1623
  _: 1
1634
- })) : H("", !0)
1624
+ })) : K("", !0)
1635
1625
  ])
1636
1626
  ]),
1637
1627
  "cell-card": l(({ row: h }) => [
1638
- n(e(xt), {
1628
+ n(e(kt), {
1639
1629
  class: "wx-articles__entity",
1640
1630
  variant: "plain",
1641
1631
  title: h.title,
@@ -1650,34 +1640,34 @@ const Bt = { class: "wx-article-editor__screen" }, Pt = 1200, Dt = /* @__PURE__
1650
1640
  class: "wx-articles__pin",
1651
1641
  name: "star",
1652
1642
  size: "sm"
1653
- })) : H("", !0),
1654
- w(" " + b(h.title), 1)
1643
+ })) : K("", !0),
1644
+ _(" " + g(h.title), 1)
1655
1645
  ]),
1656
1646
  meta: l(() => [
1657
- h.rubrics[0] ? (p(), z(e(oe), {
1647
+ h.rubrics[0] ? (p(), z(e(ie), {
1658
1648
  key: 0,
1659
1649
  size: "sm",
1660
1650
  round: ""
1661
1651
  }, {
1662
1652
  default: l(() => [
1663
- w(b(h.rubrics[0].title), 1)
1653
+ _(g(h.rubrics[0].title), 1)
1664
1654
  ]),
1665
1655
  _: 2
1666
- }, 1024)) : H("", !0),
1667
- n(e(oe), {
1668
- type: N(h.status),
1656
+ }, 1024)) : K("", !0),
1657
+ n(e(ie), {
1658
+ type: M(h.status),
1669
1659
  dot: "",
1670
1660
  size: "sm"
1671
1661
  }, {
1672
1662
  default: l(() => [
1673
- w(b(e(t)(`panel.status-${h.status}`)), 1)
1663
+ _(g(e(t)(`panel.status-${h.status}`)), 1)
1674
1664
  ]),
1675
1665
  _: 2
1676
1666
  }, 1032, ["type"]),
1677
1667
  X(h) ? (p(), z(e(je), {
1678
1668
  key: 1,
1679
1669
  value: X(h)
1680
- }, null, 8, ["value"])) : H("", !0)
1670
+ }, null, 8, ["value"])) : K("", !0)
1681
1671
  ]),
1682
1672
  _: 2
1683
1673
  }, 1032, ["title", "image", "subtitle"])
@@ -1701,10 +1691,10 @@ const Bt = { class: "wx-article-editor__screen" }, Pt = 1200, Dt = /* @__PURE__
1701
1691
  }, 8, ["view", "title", "views", "actions"])
1702
1692
  ], 512));
1703
1693
  }
1704
- }), ga = /* @__PURE__ */ pe(ba, [["__scopeId", "data-v-2d93df26"]]), ha = { class: "wx-rubric-form__head" }, ya = { class: "wx-rubric-form__body" }, wa = { class: "wx-rubric-form__row" }, _a = { class: "wx-rubric-form__row" }, xa = { class: "wx-rubric-form__side" }, ka = {
1694
+ }), ha = /* @__PURE__ */ ve(ga, [["__scopeId", "data-v-2d93df26"]]), ya = { class: "wx-rubric-form__head" }, wa = { class: "wx-rubric-form__body" }, _a = { class: "wx-rubric-form__row" }, xa = { class: "wx-rubric-form__row" }, ka = { class: "wx-rubric-form__side" }, $a = {
1705
1695
  key: 1,
1706
1696
  class: "wx-rubric-form__seo"
1707
- }, $a = { class: "wx-rubric-form__foot" }, Ta = /* @__PURE__ */ ee({
1697
+ }, Ta = { class: "wx-rubric-form__foot" }, Va = /* @__PURE__ */ ee({
1708
1698
  __name: "RubricForm",
1709
1699
  props: {
1710
1700
  rubric: {},
@@ -1714,11 +1704,11 @@ const Bt = { class: "wx-article-editor__screen" }, Pt = 1200, Dt = /* @__PURE__
1714
1704
  },
1715
1705
  emits: ["back", "saved", "deleted", "articles"],
1716
1706
  setup(f, { emit: m }) {
1717
- const r = f, y = m, u = ne(), a = de(u), t = Xe();
1707
+ const o = f, y = m, u = se(), a = de(u), t = Xe();
1718
1708
  te();
1719
1709
  const s = Q("webx-blog"), i = ge(), x = v(() => u.types["wx-media"]?.component), T = v(() => u.types["wx-seo"]?.component), c = v(
1720
1710
  () => u.types["wx-seo"]?.bind?.({ id: "seo", type: "wx-seo" }) ?? {}
1721
- ), o = C(E()), _ = C({}), W = C(!1), S = C(!1);
1711
+ ), r = C(E()), w = C({}), W = C(!1), S = C(!1);
1722
1712
  function E() {
1723
1713
  return {
1724
1714
  title: {},
@@ -1730,13 +1720,13 @@ const Bt = { class: "wx-article-editor__screen" }, Pt = 1200, Dt = /* @__PURE__
1730
1720
  };
1731
1721
  }
1732
1722
  ue(
1733
- () => r.rubric,
1723
+ () => o.rubric,
1734
1724
  (P) => {
1735
- if (_.value = {}, S.value = !1, P === null) {
1736
- o.value = E();
1725
+ if (w.value = {}, S.value = !1, P === null) {
1726
+ r.value = E();
1737
1727
  return;
1738
1728
  }
1739
- o.value = {
1729
+ r.value = {
1740
1730
  title: { ...P.title },
1741
1731
  slug: { ...P.slug },
1742
1732
  lead: { ...P.lead },
@@ -1748,130 +1738,130 @@ const Bt = { class: "wx-article-editor__screen" }, Pt = 1200, Dt = /* @__PURE__
1748
1738
  { immediate: !0 }
1749
1739
  );
1750
1740
  const F = v(
1751
- () => o.value.title[t.active.value] || r.rubric?.name || s("rubric.new")
1741
+ () => r.value.title[t.active.value] || o.rubric?.name || s("rubric.new")
1752
1742
  ), $ = v(() => {
1753
- const P = o.value.slug[t.active.value] ?? "";
1754
- return P === "" ? null : `/${[r.prefix, P].filter(Boolean).join("/")}`;
1743
+ const P = r.value.slug[t.active.value] ?? "";
1744
+ return P === "" ? null : `/${[o.prefix, P].filter(Boolean).join("/")}`;
1755
1745
  }), U = v(() => {
1756
- const P = r.rubric?.path;
1746
+ const P = o.rubric?.path;
1757
1747
  return typeof P == "string" && $.value !== null && $.value !== `/${P}`;
1758
- }), R = v(() => r.rubric?.articles_count ?? 0);
1759
- function M(P) {
1760
- const q = Object.keys(_.value).find(
1748
+ }), R = v(() => o.rubric?.articles_count ?? 0);
1749
+ function N(P) {
1750
+ const q = Object.keys(w.value).find(
1761
1751
  (k) => k === P || k.startsWith(`${P}.`)
1762
1752
  );
1763
- return q === void 0 ? void 0 : _.value[q]?.[0];
1753
+ return q === void 0 ? void 0 : w.value[q]?.[0];
1764
1754
  }
1765
1755
  function A() {
1766
1756
  return {
1767
- title: o.value.title,
1768
- slug: o.value.slug,
1769
- lead: o.value.lead,
1770
- cover: o.value.cover === null ? null : { path: o.value.cover.path },
1771
- is_visible: o.value.is_visible,
1757
+ title: r.value.title,
1758
+ slug: r.value.slug,
1759
+ lead: r.value.lead,
1760
+ cover: r.value.cover === null ? null : { path: r.value.cover.path },
1761
+ is_visible: r.value.is_visible,
1772
1762
  // Only when it was opened: a save of the rest of the form must not empty a card nobody
1773
1763
  // looked at, and an untouched card is the rules being left in charge (§12).
1774
- ...S.value ? { seo: o.value.seo } : {}
1764
+ ...S.value ? { seo: r.value.seo } : {}
1775
1765
  };
1776
1766
  }
1777
1767
  async function I() {
1778
- W.value = !0, _.value = {};
1768
+ W.value = !0, w.value = {};
1779
1769
  try {
1780
- const P = r.rubric === null ? await a.createRubric(A()) : await a.saveRubric(r.rubric.id, A());
1781
- L.success(r.rubric === null ? s("rubric.created") : s("rubric.saved")), y("saved", P);
1770
+ const P = o.rubric === null ? await a.createRubric(A()) : await a.saveRubric(o.rubric.id, A());
1771
+ L.success(o.rubric === null ? s("rubric.created") : s("rubric.saved")), y("saved", P);
1782
1772
  } catch (P) {
1783
1773
  const q = P.body;
1784
- q?.errors && (_.value = q.errors), L.danger(i(P));
1774
+ q?.errors && (w.value = q.errors), L.danger(i(P));
1785
1775
  } finally {
1786
1776
  W.value = !1;
1787
1777
  }
1788
1778
  }
1789
- async function K() {
1790
- if (!(r.rubric === null || !await be({
1791
- title: s("rubric.delete-title", { name: r.rubric.name }),
1779
+ async function H() {
1780
+ if (!(o.rubric === null || !await me({
1781
+ title: s("rubric.delete-title", { name: o.rubric.name }),
1792
1782
  message: s("rubric.delete-text"),
1793
1783
  confirmText: s("rubric.delete"),
1794
1784
  cancelText: s("rubric.cancel"),
1795
1785
  tone: "danger"
1796
1786
  })))
1797
1787
  try {
1798
- await a.removeRubric(r.rubric.id), L.success(s("rubric.deleted")), y("deleted");
1788
+ await a.removeRubric(o.rubric.id), L.success(s("rubric.deleted")), y("deleted");
1799
1789
  } catch (q) {
1800
1790
  L.danger(i(q));
1801
1791
  }
1802
1792
  }
1803
1793
  return (P, q) => (p(), G("div", {
1804
- class: Pe(["wx-rubric-form", { "is-pane": r.inline }])
1794
+ class: Pe(["wx-rubric-form", { "is-pane": o.inline }])
1805
1795
  }, [
1806
- j("div", ha, [
1807
- r.inline ? H("", !0) : (p(), z(e(Oe), {
1796
+ j("div", ya, [
1797
+ o.inline ? K("", !0) : (p(), z(e(Oe), {
1808
1798
  key: 0,
1809
1799
  icon: "arrow-left",
1810
1800
  title: e(s)("rubric.back"),
1811
1801
  onClick: q[0] || (q[0] = (k) => y("back"))
1812
1802
  }, null, 8, ["title"])),
1813
- n(e(kt), {
1803
+ n(e($t), {
1814
1804
  level: 3,
1815
1805
  truncate: ""
1816
1806
  }, {
1817
1807
  default: l(() => [
1818
- w(b(F.value), 1)
1808
+ _(g(F.value), 1)
1819
1809
  ]),
1820
1810
  _: 1
1821
1811
  }),
1822
- r.rubric ? (p(), z(e(J), {
1812
+ o.rubric ? (p(), z(e(J), {
1823
1813
  key: 1,
1824
1814
  size: "sm",
1825
1815
  tone: "muted"
1826
1816
  }, {
1827
1817
  default: l(() => [
1828
- w(b(e(s)("rubric.articles", { count: R.value })), 1)
1818
+ _(g(e(s)("rubric.articles", { count: R.value })), 1)
1829
1819
  ]),
1830
1820
  _: 1
1831
- })) : H("", !0),
1821
+ })) : K("", !0),
1832
1822
  q[10] || (q[10] = j("span", { class: "wx-rubric-form__spacer" }, null, -1)),
1833
- r.rubric && R.value > 0 ? (p(), z(e(Z), {
1823
+ o.rubric && R.value > 0 ? (p(), z(e(Z), {
1834
1824
  key: 2,
1835
1825
  variant: "text",
1836
1826
  size: "sm",
1837
- onClick: q[1] || (q[1] = (k) => y("articles", r.rubric))
1827
+ onClick: q[1] || (q[1] = (k) => y("articles", o.rubric))
1838
1828
  }, {
1839
1829
  default: l(() => [
1840
- w(b(e(s)("rubric.show-articles")), 1)
1830
+ _(g(e(s)("rubric.show-articles")), 1)
1841
1831
  ]),
1842
1832
  _: 1
1843
- })) : H("", !0)
1833
+ })) : K("", !0)
1844
1834
  ]),
1845
- j("div", ya, [
1846
- j("div", wa, [
1847
- n(e(ie), {
1835
+ j("div", wa, [
1836
+ j("div", _a, [
1837
+ n(e(ne), {
1848
1838
  class: "wx-rubric-form__title",
1849
1839
  label: e(s)("rubric.field-title"),
1850
- error: M("title"),
1840
+ error: N("title"),
1851
1841
  required: ""
1852
1842
  }, {
1853
1843
  default: l(() => [
1854
- n(e(Ae), {
1855
- modelValue: o.value.title,
1856
- "onUpdate:modelValue": q[2] || (q[2] = (k) => o.value.title = k),
1844
+ n(e(Ve), {
1845
+ modelValue: r.value.title,
1846
+ "onUpdate:modelValue": q[2] || (q[2] = (k) => r.value.title = k),
1857
1847
  localized: "",
1858
- disabled: r.disabled
1848
+ disabled: o.disabled
1859
1849
  }, null, 8, ["modelValue", "disabled"])
1860
1850
  ]),
1861
1851
  _: 1
1862
1852
  }, 8, ["label", "error"]),
1863
- n(e(ie), {
1853
+ n(e(ne), {
1864
1854
  class: "wx-rubric-form__slug",
1865
1855
  label: e(s)("rubric.field-slug"),
1866
- error: M("slug"),
1856
+ error: N("slug"),
1867
1857
  help: $.value ?? e(s)("rubric.no-address")
1868
1858
  }, {
1869
1859
  default: l(() => [
1870
- n(e(Ae), {
1871
- modelValue: o.value.slug,
1872
- "onUpdate:modelValue": q[3] || (q[3] = (k) => o.value.slug = k),
1860
+ n(e(Ve), {
1861
+ modelValue: r.value.slug,
1862
+ "onUpdate:modelValue": q[3] || (q[3] = (k) => r.value.slug = k),
1873
1863
  localized: "",
1874
- disabled: r.disabled
1864
+ disabled: o.disabled
1875
1865
  }, null, 8, ["modelValue", "disabled"])
1876
1866
  ]),
1877
1867
  _: 1
@@ -1882,68 +1872,68 @@ const Bt = { class: "wx-article-editor__screen" }, Pt = 1200, Dt = /* @__PURE__
1882
1872
  type: "info",
1883
1873
  variant: "soft",
1884
1874
  description: e(s)("rubric.address-moving")
1885
- }, null, 8, ["description"])) : H("", !0),
1886
- n(e(ie), {
1875
+ }, null, 8, ["description"])) : K("", !0),
1876
+ n(e(ne), {
1887
1877
  label: e(s)("rubric.field-lead"),
1888
1878
  help: e(s)("rubric.lead-help"),
1889
1879
  wide: ""
1890
1880
  }, {
1891
1881
  default: l(() => [
1892
- n(e($t), {
1893
- modelValue: o.value.lead,
1894
- "onUpdate:modelValue": q[4] || (q[4] = (k) => o.value.lead = k),
1882
+ n(e(Tt), {
1883
+ modelValue: r.value.lead,
1884
+ "onUpdate:modelValue": q[4] || (q[4] = (k) => r.value.lead = k),
1895
1885
  localized: "",
1896
1886
  rows: 3,
1897
- disabled: r.disabled
1887
+ disabled: o.disabled
1898
1888
  }, null, 8, ["modelValue", "disabled"])
1899
1889
  ]),
1900
1890
  _: 1
1901
1891
  }, 8, ["label", "help"]),
1902
- j("div", _a, [
1892
+ j("div", xa, [
1903
1893
  x.value ? (p(), z(tt(x.value), {
1904
1894
  key: 0,
1905
- modelValue: o.value.cover,
1906
- "onUpdate:modelValue": q[5] || (q[5] = (k) => o.value.cover = k),
1895
+ modelValue: r.value.cover,
1896
+ "onUpdate:modelValue": q[5] || (q[5] = (k) => r.value.cover = k),
1907
1897
  class: "wx-rubric-form__cover",
1908
1898
  label: e(s)("rubric.field-cover"),
1909
1899
  accept: "image",
1910
1900
  captions: !1,
1911
1901
  aspect: "16/9",
1912
- disabled: r.disabled
1913
- }, null, 8, ["modelValue", "label", "disabled"])) : H("", !0),
1914
- j("div", xa, [
1915
- n(e(Tt), {
1916
- modelValue: o.value.is_visible,
1917
- "onUpdate:modelValue": q[6] || (q[6] = (k) => o.value.is_visible = k),
1902
+ disabled: o.disabled
1903
+ }, null, 8, ["modelValue", "label", "disabled"])) : K("", !0),
1904
+ j("div", ka, [
1905
+ n(e(Vt), {
1906
+ modelValue: r.value.is_visible,
1907
+ "onUpdate:modelValue": q[6] || (q[6] = (k) => r.value.is_visible = k),
1918
1908
  label: e(s)("rubric.visible"),
1919
- disabled: r.disabled
1909
+ disabled: o.disabled
1920
1910
  }, null, 8, ["modelValue", "label", "disabled"]),
1921
1911
  n(e(J), {
1922
1912
  size: "sm",
1923
1913
  tone: "muted"
1924
1914
  }, {
1925
1915
  default: l(() => [
1926
- w(b(e(s)("rubric.visible-help")), 1)
1916
+ _(g(e(s)("rubric.visible-help")), 1)
1927
1917
  ]),
1928
1918
  _: 1
1929
1919
  })
1930
1920
  ])
1931
1921
  ]),
1932
- T.value ? (p(), G("div", ka, [
1922
+ T.value ? (p(), G("div", $a, [
1933
1923
  S.value ? (p(), z(tt(T.value), pt({
1934
1924
  key: 1,
1935
- modelValue: o.value.seo,
1936
- "onUpdate:modelValue": q[8] || (q[8] = (k) => o.value.seo = k)
1925
+ modelValue: r.value.seo,
1926
+ "onUpdate:modelValue": q[8] || (q[8] = (k) => r.value.seo = k)
1937
1927
  }, c.value, {
1938
1928
  "structured-data": !1,
1939
- disabled: r.disabled
1940
- }), null, 16, ["modelValue", "disabled"])) : (p(), G(ve, { key: 0 }, [
1929
+ disabled: o.disabled
1930
+ }), null, 16, ["modelValue", "disabled"])) : (p(), G(be, { key: 0 }, [
1941
1931
  n(e(J), {
1942
1932
  size: "sm",
1943
1933
  weight: "medium"
1944
1934
  }, {
1945
1935
  default: l(() => [
1946
- w(b(e(s)("rubric.seo")), 1)
1936
+ _(g(e(s)("rubric.seo")), 1)
1947
1937
  ]),
1948
1938
  _: 1
1949
1939
  }),
@@ -1952,37 +1942,37 @@ const Bt = { class: "wx-article-editor__screen" }, Pt = 1200, Dt = /* @__PURE__
1952
1942
  tone: "muted"
1953
1943
  }, {
1954
1944
  default: l(() => [
1955
- w(b(e(s)("rubric.seo-help")), 1)
1945
+ _(g(e(s)("rubric.seo-help")), 1)
1956
1946
  ]),
1957
1947
  _: 1
1958
1948
  }),
1959
1949
  n(e(Z), {
1960
1950
  variant: "text",
1961
1951
  size: "sm",
1962
- disabled: r.disabled,
1952
+ disabled: o.disabled,
1963
1953
  onClick: q[7] || (q[7] = (k) => S.value = !0)
1964
1954
  }, {
1965
1955
  default: l(() => [
1966
- w(b(e(s)("rubric.seo-override", { name: F.value })), 1)
1956
+ _(g(e(s)("rubric.seo-override", { name: F.value })), 1)
1967
1957
  ]),
1968
1958
  _: 1
1969
1959
  }, 8, ["disabled"])
1970
1960
  ], 64))
1971
- ])) : H("", !0)
1961
+ ])) : K("", !0)
1972
1962
  ]),
1973
- j("div", $a, [
1974
- r.rubric ? (p(), G(ve, { key: 0 }, [
1963
+ j("div", Ta, [
1964
+ o.rubric ? (p(), G(be, { key: 0 }, [
1975
1965
  n(e(Z), {
1976
1966
  variant: "outline",
1977
1967
  type: "danger",
1978
- disabled: r.disabled || R.value > 0,
1979
- onClick: K
1968
+ disabled: o.disabled || R.value > 0,
1969
+ onClick: H
1980
1970
  }, {
1981
1971
  icon: l(() => [
1982
1972
  n(e(we), { name: "trash" })
1983
1973
  ]),
1984
1974
  default: l(() => [
1985
- w(" " + b(e(s)("rubric.delete")), 1)
1975
+ _(" " + g(e(s)("rubric.delete")), 1)
1986
1976
  ]),
1987
1977
  _: 1
1988
1978
  }, 8, ["disabled"]),
@@ -1992,45 +1982,45 @@ const Bt = { class: "wx-article-editor__screen" }, Pt = 1200, Dt = /* @__PURE__
1992
1982
  tone: "muted"
1993
1983
  }, {
1994
1984
  default: l(() => [
1995
- w(b(e(s)("rubric.delete-blocked")), 1)
1985
+ _(g(e(s)("rubric.delete-blocked")), 1)
1996
1986
  ]),
1997
1987
  _: 1
1998
- })) : H("", !0)
1999
- ], 64)) : H("", !0),
1988
+ })) : K("", !0)
1989
+ ], 64)) : K("", !0),
2000
1990
  q[11] || (q[11] = j("span", { class: "wx-rubric-form__spacer" }, null, -1)),
2001
1991
  n(e(Z), {
2002
1992
  variant: "outline",
2003
1993
  onClick: q[9] || (q[9] = (k) => y("back"))
2004
1994
  }, {
2005
1995
  default: l(() => [
2006
- w(b(e(s)("rubric.cancel")), 1)
1996
+ _(g(e(s)("rubric.cancel")), 1)
2007
1997
  ]),
2008
1998
  _: 1
2009
1999
  }),
2010
2000
  n(e(Z), {
2011
2001
  type: "primary",
2012
2002
  loading: W.value,
2013
- disabled: r.disabled,
2003
+ disabled: o.disabled,
2014
2004
  onClick: I
2015
2005
  }, {
2016
2006
  default: l(() => [
2017
- w(b(e(s)("rubric.save")), 1)
2007
+ _(g(e(s)("rubric.save")), 1)
2018
2008
  ]),
2019
2009
  _: 1
2020
2010
  }, 8, ["loading", "disabled"])
2021
2011
  ])
2022
2012
  ], 2));
2023
2013
  }
2024
- }), Va = /* @__PURE__ */ pe(Ta, [["__scopeId", "data-v-ace40cf4"]]), Aa = ["onClick"], Sa = { class: "wx-rubric-row__name" }, Wa = /* @__PURE__ */ ee({
2014
+ }), Aa = /* @__PURE__ */ ve(Va, [["__scopeId", "data-v-ace40cf4"]]), Sa = ["onClick"], Wa = { class: "wx-rubric-row__name" }, Ca = /* @__PURE__ */ ee({
2025
2015
  __name: "RubricsPage",
2026
2016
  props: {
2027
2017
  base: { default: "/blog" }
2028
2018
  },
2029
2019
  setup(f) {
2030
- const m = f, r = ne(), y = de(r), u = He(), a = Ke();
2020
+ const m = f, o = se(), y = de(o), u = He(), a = Ke();
2031
2021
  te();
2032
- const t = Q("webx-blog"), s = ge(), i = C([]), x = C(""), T = C(!0), c = C(!1), o = C(!1), _ = v(() => r.can("blog.taxonomy.manage")), W = v(
2033
- () => r.state.manifest?.modules.find((k) => k.id === "rubrics")?.title ?? t("module.rubrics")
2022
+ const t = Q("webx-blog"), s = ge(), i = C([]), x = C(""), T = C(!0), c = C(!1), r = C(!1), w = v(() => o.can("blog.taxonomy.manage")), W = v(
2023
+ () => o.state.manifest?.modules.find((k) => k.id === "rubrics")?.title ?? t("module.rubrics")
2034
2024
  ), S = v(() => {
2035
2025
  const k = u.query.rubric;
2036
2026
  return typeof k == "string" && k !== "" ? Number(k) : null;
@@ -2050,29 +2040,29 @@ const Bt = { class: "wx-article-editor__screen" }, Pt = 1200, Dt = /* @__PURE__
2050
2040
  k !== null && (c.value = !0);
2051
2041
  });
2052
2042
  function $(k) {
2053
- o.value = !1, a.replace({ query: { ...u.query, rubric: String(k.id) } }), c.value = !0;
2043
+ r.value = !1, a.replace({ query: { ...u.query, rubric: String(k.id) } }), c.value = !0;
2054
2044
  }
2055
2045
  function U() {
2056
- o.value = !0, R(), c.value = !0;
2046
+ r.value = !0, R(), c.value = !0;
2057
2047
  }
2058
2048
  function R() {
2059
2049
  const k = { ...u.query };
2060
2050
  delete k.rubric, a.replace({ query: k });
2061
2051
  }
2062
- async function M(k) {
2063
- o.value = !1, await F(), a.replace({ query: { ...u.query, rubric: String(k.id) } });
2052
+ async function N(k) {
2053
+ r.value = !1, await F(), a.replace({ query: { ...u.query, rubric: String(k.id) } });
2064
2054
  }
2065
2055
  async function A() {
2066
- o.value = !1, R(), c.value = !1, await F();
2056
+ r.value = !1, R(), c.value = !1, await F();
2067
2057
  }
2068
2058
  function I() {
2069
- o.value = !1, R(), c.value = !1;
2059
+ r.value = !1, R(), c.value = !1;
2070
2060
  }
2071
- function K(k) {
2061
+ function H(k) {
2072
2062
  a.push({ path: `${m.base}/articles`, query: { rubric: String(k.id) } });
2073
2063
  }
2074
2064
  const P = v(
2075
- () => _.value ? [{ key: "new", label: t("rubric.new"), icon: "plus", primary: !0, run: () => {
2065
+ () => w.value ? [{ key: "new", label: t("rubric.new"), icon: "plus", primary: !0, run: () => {
2076
2066
  U();
2077
2067
  } }] : []
2078
2068
  );
@@ -2090,12 +2080,12 @@ const Bt = { class: "wx-article-editor__screen" }, Pt = 1200, Dt = /* @__PURE__
2090
2080
  fill: ""
2091
2081
  }, {
2092
2082
  default: l(() => [
2093
- n(e(Vt), {
2083
+ n(e(At), {
2094
2084
  class: "wx-rubrics",
2095
2085
  padding: "none"
2096
2086
  }, {
2097
2087
  default: l(() => [
2098
- n(e(At), {
2088
+ n(e(St), {
2099
2089
  open: c.value,
2100
2090
  "onUpdate:open": le[1] || (le[1] = (O) => c.value = O),
2101
2091
  class: "wx-rubrics__panes",
@@ -2121,7 +2111,7 @@ const Bt = { class: "wx-article-editor__screen" }, Pt = 1200, Dt = /* @__PURE__
2121
2111
  size: "sm",
2122
2112
  "item-key": "id",
2123
2113
  "item-label": (O) => O.name,
2124
- disabled: !_.value,
2114
+ disabled: !w.value,
2125
2115
  title: e(t)("rubric.order"),
2126
2116
  onMove: q
2127
2117
  }, {
@@ -2129,19 +2119,19 @@ const Bt = { class: "wx-article-editor__screen" }, Pt = 1200, Dt = /* @__PURE__
2129
2119
  j("button", {
2130
2120
  type: "button",
2131
2121
  class: Pe(["wx-rubric-row", { "is-current": O.id === S.value, "is-hidden": !O.is_visible }]),
2132
- onClick: (se) => $(O)
2122
+ onClick: (re) => $(O)
2133
2123
  }, [
2134
- j("span", Sa, [
2124
+ j("span", Wa, [
2135
2125
  n(e(J), {
2136
2126
  truncate: "",
2137
2127
  weight: "medium"
2138
2128
  }, {
2139
2129
  default: l(() => [
2140
- w(b(O.name), 1)
2130
+ _(g(O.name), 1)
2141
2131
  ]),
2142
2132
  _: 2
2143
2133
  }, 1024),
2144
- O.is_visible ? H("", !0) : (p(), z(e(et), {
2134
+ O.is_visible ? K("", !0) : (p(), z(e(et), {
2145
2135
  key: 0,
2146
2136
  content: e(t)("rubric.hidden")
2147
2137
  }, {
@@ -2160,11 +2150,11 @@ const Bt = { class: "wx-article-editor__screen" }, Pt = 1200, Dt = /* @__PURE__
2160
2150
  truncate: ""
2161
2151
  }, {
2162
2152
  default: l(() => [
2163
- w(b(O.path === null ? e(t)("rubric.no-address") : `/${O.path}`), 1)
2153
+ _(g(O.path === null ? e(t)("rubric.no-address") : `/${O.path}`), 1)
2164
2154
  ]),
2165
2155
  _: 2
2166
2156
  }, 1024)
2167
- ], 10, Aa)
2157
+ ], 10, Sa)
2168
2158
  ]),
2169
2159
  actions: l(({ item: O }) => [
2170
2160
  n(e(J), {
@@ -2173,7 +2163,7 @@ const Bt = { class: "wx-article-editor__screen" }, Pt = 1200, Dt = /* @__PURE__
2173
2163
  tone: "muted"
2174
2164
  }, {
2175
2165
  default: l(() => [
2176
- w(b(O.articles_count), 1)
2166
+ _(g(O.articles_count), 1)
2177
2167
  ]),
2178
2168
  _: 2
2179
2169
  }, 1024)
@@ -2186,20 +2176,20 @@ const Bt = { class: "wx-article-editor__screen" }, Pt = 1200, Dt = /* @__PURE__
2186
2176
  description: e(t)("rubric.choose")
2187
2177
  }, null, 8, ["description"])
2188
2178
  ]),
2189
- detail: l(({ inline: O, back: se }) => [
2190
- o.value || E.value ? (p(), z(Va, {
2191
- key: o.value ? "new" : String(E.value?.id),
2192
- rubric: o.value ? null : E.value,
2179
+ detail: l(({ inline: O, back: re }) => [
2180
+ r.value || E.value ? (p(), z(Aa, {
2181
+ key: r.value ? "new" : String(E.value?.id),
2182
+ rubric: r.value ? null : E.value,
2193
2183
  prefix: x.value,
2194
2184
  inline: O,
2195
- disabled: !_.value,
2185
+ disabled: !w.value,
2196
2186
  onBack: () => {
2197
- se(), I();
2187
+ re(), I();
2198
2188
  },
2199
- onArticles: K,
2200
- onSaved: M,
2189
+ onArticles: H,
2190
+ onSaved: N,
2201
2191
  onDeleted: A
2202
- }, null, 8, ["rubric", "prefix", "inline", "disabled", "onBack"])) : H("", !0)
2192
+ }, null, 8, ["rubric", "prefix", "inline", "disabled", "onBack"])) : K("", !0)
2203
2193
  ]),
2204
2194
  _: 1
2205
2195
  }, 8, ["open", "detail-label"])
@@ -2210,33 +2200,33 @@ const Bt = { class: "wx-article-editor__screen" }, Pt = 1200, Dt = /* @__PURE__
2210
2200
  _: 1
2211
2201
  }, 8, ["title", "actions"]));
2212
2202
  }
2213
- }), Ca = /* @__PURE__ */ ee({
2203
+ }), za = /* @__PURE__ */ ee({
2214
2204
  __name: "TagCreateDialog",
2215
2205
  setup(f) {
2216
- const { open: m, resolve: r, dismiss: y } = Ee(), u = ne(), a = de(u);
2206
+ const { open: m, resolve: o, dismiss: y } = Ee(), u = se(), a = de(u);
2217
2207
  te();
2218
2208
  const t = Q("webx-blog"), s = C(""), i = C(""), x = C(!1), T = C({}), c = De("field");
2219
2209
  Ne(async () => {
2220
2210
  await Ze(), c.value?.querySelector("input")?.focus();
2221
2211
  });
2222
- async function o() {
2212
+ async function r() {
2223
2213
  if (!(s.value.trim() === "" || x.value)) {
2224
2214
  x.value = !0, T.value = {};
2225
2215
  try {
2226
- r(
2216
+ o(
2227
2217
  await a.createTag({
2228
2218
  title: s.value.trim(),
2229
2219
  ...i.value.trim() === "" ? {} : { slug: i.value.trim() }
2230
2220
  })
2231
2221
  );
2232
- } catch (_) {
2233
- T.value = _.body?.errors ?? {};
2222
+ } catch (w) {
2223
+ T.value = w.body?.errors ?? {};
2234
2224
  } finally {
2235
2225
  x.value = !1;
2236
2226
  }
2237
2227
  }
2238
2228
  }
2239
- return (_, W) => (p(), z(e(Fe), {
2229
+ return (w, W) => (p(), z(e(Fe), {
2240
2230
  open: e(m),
2241
2231
  "onUpdate:open": W[3] || (W[3] = (S) => Ie(m) ? m.value = S : null),
2242
2232
  title: e(t)("tag.new-title"),
@@ -2250,7 +2240,7 @@ const Bt = { class: "wx-article-editor__screen" }, Pt = 1200, Dt = /* @__PURE__
2250
2240
  onClick: W[2] || (W[2] = (S) => e(y)())
2251
2241
  }, {
2252
2242
  default: l(() => [
2253
- w(b(e(t)("tag.cancel")), 1)
2243
+ _(g(e(t)("tag.cancel")), 1)
2254
2244
  ]),
2255
2245
  _: 1
2256
2246
  }),
@@ -2258,10 +2248,10 @@ const Bt = { class: "wx-article-editor__screen" }, Pt = 1200, Dt = /* @__PURE__
2258
2248
  type: "primary",
2259
2249
  loading: x.value,
2260
2250
  disabled: s.value.trim() === "",
2261
- onClick: o
2251
+ onClick: r
2262
2252
  }, {
2263
2253
  default: l(() => [
2264
- w(b(e(t)("tag.create")), 1)
2254
+ _(g(e(t)("tag.create")), 1)
2265
2255
  ]),
2266
2256
  _: 1
2267
2257
  }, 8, ["loading", "disabled"])
@@ -2270,7 +2260,7 @@ const Bt = { class: "wx-article-editor__screen" }, Pt = 1200, Dt = /* @__PURE__
2270
2260
  })
2271
2261
  ]),
2272
2262
  default: l(() => [
2273
- n(e(ie), {
2263
+ n(e(ne), {
2274
2264
  label: e(t)("tag.field-title"),
2275
2265
  error: T.value.title?.[0],
2276
2266
  required: ""
@@ -2280,27 +2270,27 @@ const Bt = { class: "wx-article-editor__screen" }, Pt = 1200, Dt = /* @__PURE__
2280
2270
  ref_key: "field",
2281
2271
  ref: c
2282
2272
  }, [
2283
- n(e(Ae), {
2273
+ n(e(Ve), {
2284
2274
  modelValue: s.value,
2285
2275
  "onUpdate:modelValue": W[0] || (W[0] = (S) => s.value = S),
2286
2276
  "aria-label": e(t)("tag.field-title"),
2287
- onKeyup: ze(o, ["enter"])
2277
+ onKeyup: ze(r, ["enter"])
2288
2278
  }, null, 8, ["modelValue", "aria-label"])
2289
2279
  ], 512)
2290
2280
  ]),
2291
2281
  _: 1
2292
2282
  }, 8, ["label", "error"]),
2293
- n(e(ie), {
2283
+ n(e(ne), {
2294
2284
  label: e(t)("tag.field-slug"),
2295
2285
  error: T.value.slug?.[0],
2296
2286
  help: e(t)("tag.field-slug-help")
2297
2287
  }, {
2298
2288
  default: l(() => [
2299
- n(e(Ae), {
2289
+ n(e(Ve), {
2300
2290
  modelValue: i.value,
2301
2291
  "onUpdate:modelValue": W[1] || (W[1] = (S) => i.value = S),
2302
2292
  "aria-label": e(t)("tag.field-slug"),
2303
- onKeyup: ze(o, ["enter"])
2293
+ onKeyup: ze(r, ["enter"])
2304
2294
  }, null, 8, ["modelValue", "aria-label"])
2305
2295
  ]),
2306
2296
  _: 1
@@ -2309,13 +2299,13 @@ const Bt = { class: "wx-article-editor__screen" }, Pt = 1200, Dt = /* @__PURE__
2309
2299
  _: 1
2310
2300
  }, 8, ["open", "title"]));
2311
2301
  }
2312
- }), za = ["id"], Ra = /* @__PURE__ */ ee({
2302
+ }), Ra = ["id"], Ua = /* @__PURE__ */ ee({
2313
2303
  __name: "TagRenameDialog",
2314
2304
  props: {
2315
2305
  name: {}
2316
2306
  },
2317
2307
  setup(f) {
2318
- const m = f, { open: r, resolve: y, dismiss: u } = Ee();
2308
+ const m = f, { open: o, resolve: y, dismiss: u } = Ee();
2319
2309
  te();
2320
2310
  const a = Q("webx-blog"), t = Q("webx-admin"), s = ft(), i = C(m.name), x = De("field");
2321
2311
  Ne(async () => {
@@ -2331,9 +2321,9 @@ const Bt = { class: "wx-article-editor__screen" }, Pt = 1200, Dt = /* @__PURE__
2331
2321
  }
2332
2322
  y(c);
2333
2323
  }
2334
- return (c, o) => (p(), z(e(Fe), {
2335
- open: e(r),
2336
- "onUpdate:open": o[2] || (o[2] = (_) => Ie(r) ? r.value = _ : null),
2324
+ return (c, r) => (p(), z(e(Fe), {
2325
+ open: e(o),
2326
+ "onUpdate:open": r[2] || (r[2] = (w) => Ie(o) ? o.value = w : null),
2337
2327
  title: e(a)("tag.rename"),
2338
2328
  width: 420
2339
2329
  }, {
@@ -2342,10 +2332,10 @@ const Bt = { class: "wx-article-editor__screen" }, Pt = 1200, Dt = /* @__PURE__
2342
2332
  default: l(() => [
2343
2333
  n(e(Z), {
2344
2334
  variant: "outline",
2345
- onClick: o[1] || (o[1] = (_) => e(u)())
2335
+ onClick: r[1] || (r[1] = (w) => e(u)())
2346
2336
  }, {
2347
2337
  default: l(() => [
2348
- w(b(e(a)("tag.cancel")), 1)
2338
+ _(g(e(a)("tag.cancel")), 1)
2349
2339
  ]),
2350
2340
  _: 1
2351
2341
  }),
@@ -2356,7 +2346,7 @@ const Bt = { class: "wx-article-editor__screen" }, Pt = 1200, Dt = /* @__PURE__
2356
2346
  disabled: i.value.trim() === ""
2357
2347
  }, {
2358
2348
  default: l(() => [
2359
- w(b(e(t)("editor.save")), 1)
2349
+ _(g(e(t)("editor.save")), 1)
2360
2350
  ]),
2361
2351
  _: 1
2362
2352
  }, 8, ["form", "disabled"])
@@ -2371,41 +2361,41 @@ const Bt = { class: "wx-article-editor__screen" }, Pt = 1200, Dt = /* @__PURE__
2371
2361
  ref: x,
2372
2362
  onSubmit: at(T, ["prevent"])
2373
2363
  }, [
2374
- n(e(ie), {
2364
+ n(e(ne), {
2375
2365
  label: e(a)("tag.field-title"),
2376
2366
  required: ""
2377
2367
  }, {
2378
2368
  default: l(() => [
2379
- n(e(Ae), {
2369
+ n(e(Ve), {
2380
2370
  modelValue: i.value,
2381
- "onUpdate:modelValue": o[0] || (o[0] = (_) => i.value = _),
2371
+ "onUpdate:modelValue": r[0] || (r[0] = (w) => i.value = w),
2382
2372
  "aria-label": e(a)("tag.field-title"),
2383
2373
  onKeydown: ze(at(T, ["prevent"]), ["enter"])
2384
2374
  }, null, 8, ["modelValue", "aria-label", "onKeydown"])
2385
2375
  ]),
2386
2376
  _: 1
2387
2377
  }, 8, ["label"])
2388
- ], 40, za)
2378
+ ], 40, Ra)
2389
2379
  ]),
2390
2380
  _: 1
2391
2381
  }, 8, ["open", "title"]));
2392
2382
  }
2393
- }), Ua = { class: "wx-tag-merge" }, qa = { class: "wx-tag-merge__chips" }, Ma = { class: "wx-tag-merge__redirect" }, Na = /* @__PURE__ */ ee({
2383
+ }), qa = { class: "wx-tag-merge" }, Ma = { class: "wx-tag-merge__chips" }, Na = { class: "wx-tag-merge__redirect" }, Ba = /* @__PURE__ */ ee({
2394
2384
  __name: "TagMergeDialog",
2395
2385
  props: {
2396
2386
  tags: {}
2397
2387
  },
2398
2388
  setup(f) {
2399
- const m = f, { open: r, resolve: y, dismiss: u } = Ee(), a = ne(), t = de(a);
2389
+ const m = f, { open: o, resolve: y, dismiss: u } = Ee(), a = se(), t = de(a);
2400
2390
  te();
2401
2391
  const s = Q("webx-blog"), i = ge(), x = C(
2402
2392
  [...m.tags].sort((U, R) => R.articles_count - U.articles_count)[0]?.id ?? 0
2403
- ), T = C(!1), c = C(!0), o = C(null), _ = v(
2393
+ ), T = C(!1), c = C(!0), r = C(null), w = v(
2404
2394
  () => m.tags.map((U) => ({ value: U.id, label: `${U.title} · ${U.articles_count}` }))
2405
2395
  ), W = v(() => m.tags.find((U) => U.id === x.value) ?? null), S = v(() => m.tags.filter((U) => U.id !== x.value)), E = v(() => S.value.reduce((U, R) => U + R.articles_count, 0)), F = v(() => S.value.map((U) => U.path).filter(Boolean));
2406
2396
  async function $() {
2407
2397
  if (!(W.value === null || S.value.length === 0 || T.value)) {
2408
- T.value = !0, o.value = null;
2398
+ T.value = !0, r.value = null;
2409
2399
  try {
2410
2400
  y(
2411
2401
  await t.mergeTags(
@@ -2415,15 +2405,15 @@ const Bt = { class: "wx-article-editor__screen" }, Pt = 1200, Dt = /* @__PURE__
2415
2405
  )
2416
2406
  );
2417
2407
  } catch (U) {
2418
- o.value = i(U);
2408
+ r.value = i(U);
2419
2409
  } finally {
2420
2410
  T.value = !1;
2421
2411
  }
2422
2412
  }
2423
2413
  }
2424
2414
  return (U, R) => (p(), z(e(Fe), {
2425
- open: e(r),
2426
- "onUpdate:open": R[3] || (R[3] = (M) => Ie(r) ? r.value = M : null),
2415
+ open: e(o),
2416
+ "onUpdate:open": R[3] || (R[3] = (N) => Ie(o) ? o.value = N : null),
2427
2417
  title: e(s)("tag.merge-title"),
2428
2418
  width: 520
2429
2419
  }, {
@@ -2432,10 +2422,10 @@ const Bt = { class: "wx-article-editor__screen" }, Pt = 1200, Dt = /* @__PURE__
2432
2422
  default: l(() => [
2433
2423
  n(e(Z), {
2434
2424
  variant: "outline",
2435
- onClick: R[2] || (R[2] = (M) => e(u)())
2425
+ onClick: R[2] || (R[2] = (N) => e(u)())
2436
2426
  }, {
2437
2427
  default: l(() => [
2438
- w(b(e(s)("tag.cancel")), 1)
2428
+ _(g(e(s)("tag.cancel")), 1)
2439
2429
  ]),
2440
2430
  _: 1
2441
2431
  }),
@@ -2446,7 +2436,7 @@ const Bt = { class: "wx-article-editor__screen" }, Pt = 1200, Dt = /* @__PURE__
2446
2436
  onClick: $
2447
2437
  }, {
2448
2438
  default: l(() => [
2449
- w(b(e(s)("tag.merge-confirm")), 1)
2439
+ _(g(e(s)("tag.merge-confirm")), 1)
2450
2440
  ]),
2451
2441
  _: 1
2452
2442
  }, 8, ["loading", "disabled"])
@@ -2455,15 +2445,15 @@ const Bt = { class: "wx-article-editor__screen" }, Pt = 1200, Dt = /* @__PURE__
2455
2445
  })
2456
2446
  ]),
2457
2447
  default: l(() => [
2458
- j("div", Ua, [
2459
- j("div", qa, [
2460
- (p(!0), G(ve, null, Be(S.value, (M) => (p(), z(e(oe), {
2461
- key: M.id,
2448
+ j("div", qa, [
2449
+ j("div", Ma, [
2450
+ (p(!0), G(be, null, Be(S.value, (N) => (p(), z(e(ie), {
2451
+ key: N.id,
2462
2452
  size: "sm",
2463
2453
  round: ""
2464
2454
  }, {
2465
2455
  default: l(() => [
2466
- w(b(M.title) + " · " + b(M.articles_count), 1)
2456
+ _(g(N.title) + " · " + g(N.articles_count), 1)
2467
2457
  ]),
2468
2458
  _: 2
2469
2459
  }, 1024))), 128)),
@@ -2471,35 +2461,35 @@ const Bt = { class: "wx-article-editor__screen" }, Pt = 1200, Dt = /* @__PURE__
2471
2461
  name: "arrow-right",
2472
2462
  size: "sm"
2473
2463
  }),
2474
- W.value ? (p(), z(e(oe), {
2464
+ W.value ? (p(), z(e(ie), {
2475
2465
  key: 0,
2476
2466
  type: "primary",
2477
2467
  size: "sm",
2478
2468
  round: ""
2479
2469
  }, {
2480
2470
  default: l(() => [
2481
- w(b(W.value.title) + " · " + b(W.value.articles_count), 1)
2471
+ _(g(W.value.title) + " · " + g(W.value.articles_count), 1)
2482
2472
  ]),
2483
2473
  _: 1
2484
- })) : H("", !0)
2474
+ })) : K("", !0)
2485
2475
  ]),
2486
- n(e(ie), {
2476
+ n(e(ne), {
2487
2477
  label: e(s)("tag.merge-keep")
2488
2478
  }, {
2489
2479
  default: l(() => [
2490
2480
  n(e(_e), {
2491
2481
  modelValue: x.value,
2492
- "onUpdate:modelValue": R[0] || (R[0] = (M) => x.value = M),
2493
- options: _.value,
2482
+ "onUpdate:modelValue": R[0] || (R[0] = (N) => x.value = N),
2483
+ options: w.value,
2494
2484
  "aria-label": e(s)("tag.merge-keep")
2495
2485
  }, null, 8, ["modelValue", "options", "aria-label"])
2496
2486
  ]),
2497
2487
  _: 1
2498
2488
  }, 8, ["label"]),
2499
- j("div", Ma, [
2500
- n(e(St), {
2489
+ j("div", Na, [
2490
+ n(e(Wt), {
2501
2491
  modelValue: c.value,
2502
- "onUpdate:modelValue": R[1] || (R[1] = (M) => c.value = M),
2492
+ "onUpdate:modelValue": R[1] || (R[1] = (N) => c.value = N),
2503
2493
  label: e(s)("tag.merge-redirect")
2504
2494
  }, null, 8, ["modelValue", "label"]),
2505
2495
  n(e(J), {
@@ -2507,7 +2497,7 @@ const Bt = { class: "wx-article-editor__screen" }, Pt = 1200, Dt = /* @__PURE__
2507
2497
  tone: "muted"
2508
2498
  }, {
2509
2499
  default: l(() => [
2510
- w(b(F.value.length === 0 ? e(s)("tag.merge-redirect-none") : e(s)("tag.merge-redirect-help", { addresses: F.value.join(", ") })), 1)
2500
+ _(g(F.value.length === 0 ? e(s)("tag.merge-redirect-none") : e(s)("tag.merge-redirect-help", { addresses: F.value.join(", ") })), 1)
2511
2501
  ]),
2512
2502
  _: 1
2513
2503
  })
@@ -2521,39 +2511,39 @@ const Bt = { class: "wx-article-editor__screen" }, Pt = 1200, Dt = /* @__PURE__
2521
2511
  merged: S.value.length
2522
2512
  })
2523
2513
  }, null, 8, ["description"]),
2524
- o.value ? (p(), z(e(We), {
2514
+ r.value ? (p(), z(e(We), {
2525
2515
  key: 0,
2526
2516
  type: "danger",
2527
2517
  variant: "soft",
2528
- description: o.value
2529
- }, null, 8, ["description"])) : H("", !0)
2518
+ description: r.value
2519
+ }, null, 8, ["description"])) : K("", !0)
2530
2520
  ])
2531
2521
  ]),
2532
2522
  _: 1
2533
2523
  }, 8, ["open", "title"]));
2534
2524
  }
2535
- }), Ba = /* @__PURE__ */ pe(Na, [["__scopeId", "data-v-aa68b3a8"]]), Pa = { class: "wx-tags" }, Da = /* @__PURE__ */ ee({
2525
+ }), Pa = /* @__PURE__ */ ve(Ba, [["__scopeId", "data-v-aa68b3a8"]]), Da = { class: "wx-tags" }, Ia = /* @__PURE__ */ ee({
2536
2526
  __name: "TagsPage",
2537
2527
  props: {
2538
2528
  base: { default: "/blog" }
2539
2529
  },
2540
2530
  setup(f) {
2541
- const m = f, r = ne(), y = de(r), u = He(), a = Ke();
2531
+ const m = f, o = se(), y = de(o), u = He(), a = Ke();
2542
2532
  te();
2543
- const t = Q("webx-blog"), s = ge(), i = C(null), x = C(!0), T = C([]), c = C(!1), o = Ce(Ra), _ = Ce(Ca), W = Ce(Ba), S = v(() => r.can("blog.taxonomy.manage")), E = v(
2544
- () => r.state.manifest?.modules.find((g) => g.id === "tags")?.title ?? t("module.tags")
2533
+ const t = Q("webx-blog"), s = ge(), i = C(null), x = C(!0), T = C([]), c = C(!1), r = Ce(Ua), w = Ce(za), W = Ce(Pa), S = v(() => o.can("blog.taxonomy.manage")), E = v(
2534
+ () => o.state.manifest?.modules.find((b) => b.id === "tags")?.title ?? t("module.tags")
2545
2535
  ), F = v({
2546
2536
  get: () => typeof u.query.view == "string" ? u.query.view : "",
2547
- set: (g) => {
2537
+ set: (b) => {
2548
2538
  a.replace({
2549
- query: { ...u.query, view: g === "" ? void 0 : String(g), page: void 0 }
2539
+ query: { ...u.query, view: b === "" ? void 0 : String(b), page: void 0 }
2550
2540
  });
2551
2541
  }
2552
2542
  }), $ = v(() => i.value?.filters ?? { total: 0, empty: 0, noindex: 0 }), U = v(() => [
2553
2543
  { value: "", label: t("tag.view-all"), badge: $.value.total },
2554
2544
  { value: "empty", label: t("tag.view-empty"), badge: $.value.empty },
2555
2545
  { value: "noindex", label: t("tag.view-noindex"), badge: $.value.noindex }
2556
- ]), R = v(() => i.value?.data ?? []), M = v(() => R.value.filter((g) => T.value.includes(g.id))), A = v(() => [
2546
+ ]), R = v(() => i.value?.data ?? []), N = v(() => R.value.filter((b) => T.value.includes(b.id))), A = v(() => [
2557
2547
  { key: "title", label: t("tag.column-title"), minWidth: 150, sortable: !0 },
2558
2548
  // The number is what the other columns and the narrowest the title may be add up to without
2559
2549
  // this one: below it the address is what does not fit, and a fixed table does not shrink —
@@ -2573,65 +2563,65 @@ const Bt = { class: "wx-article-editor__screen" }, Pt = 1200, Dt = /* @__PURE__
2573
2563
  { key: "indexing", label: t("tag.column-indexing"), width: 230, hideBelow: 560 },
2574
2564
  { key: "actions", label: "", width: st, align: "right" }
2575
2565
  ]);
2576
- function I(g) {
2566
+ function I(b) {
2577
2567
  return {
2578
- q: g?.search ?? (typeof u.query.q == "string" ? u.query.q : ""),
2568
+ q: b?.search ?? (typeof u.query.q == "string" ? u.query.q : ""),
2579
2569
  empty: F.value === "empty",
2580
2570
  noindex: F.value === "noindex",
2581
2571
  // Only when it is not the default: most used first is what the list is, and a query
2582
2572
  // string that repeats the default is a link that outlives a change of mind about it.
2583
- sort: P(g),
2584
- page: g?.page ?? (Number(u.query.page ?? 1) || 1),
2585
- per_page: g?.perPage
2573
+ sort: P(b),
2574
+ page: b?.page ?? (Number(u.query.page ?? 1) || 1),
2575
+ per_page: b?.perPage
2586
2576
  };
2587
2577
  }
2588
- async function K(g) {
2578
+ async function H(b) {
2589
2579
  x.value = !0;
2590
2580
  try {
2591
- i.value = await y.tagsPage(I(g));
2592
- } catch (N) {
2593
- L.danger(s(N));
2581
+ i.value = await y.tagsPage(I(b));
2582
+ } catch (M) {
2583
+ L.danger(s(M));
2594
2584
  } finally {
2595
2585
  x.value = !1;
2596
2586
  }
2597
2587
  }
2598
- function P(g) {
2599
- const N = g?.sort ?? q();
2600
- if (!N) return;
2601
- const B = N.key === "title" ? "name" : "articles", X = `${N.order === "desc" ? "-" : ""}${B}`;
2588
+ function P(b) {
2589
+ const M = b?.sort ?? q();
2590
+ if (!M) return;
2591
+ const B = M.key === "title" ? "name" : "articles", X = `${M.order === "desc" ? "-" : ""}${B}`;
2602
2592
  return X === "articles" ? void 0 : X;
2603
2593
  }
2604
2594
  function q() {
2605
- const g = typeof u.query.sort == "string" ? u.query.sort : "";
2606
- if (g === "") return null;
2607
- const N = g.startsWith("-");
2608
- return { key: (N ? g.slice(1) : g) === "name" ? "title" : "articles_count", order: N ? "desc" : "asc" };
2595
+ const b = typeof u.query.sort == "string" ? u.query.sort : "";
2596
+ if (b === "") return null;
2597
+ const M = b.startsWith("-");
2598
+ return { key: (M ? b.slice(1) : b) === "name" ? "title" : "articles_count", order: M ? "desc" : "asc" };
2609
2599
  }
2610
- function k(g) {
2611
- const N = {
2600
+ function k(b) {
2601
+ const M = {
2612
2602
  ...u.query,
2613
- q: g.search === "" ? void 0 : g.search,
2614
- sort: P(g),
2615
- page: g.page === 1 ? void 0 : String(g.page)
2603
+ q: b.search === "" ? void 0 : b.search,
2604
+ sort: P(b),
2605
+ page: b.page === 1 ? void 0 : String(b.page)
2616
2606
  };
2617
- a.replace({ query: N }), K(g);
2607
+ a.replace({ query: M }), H(b);
2618
2608
  }
2619
2609
  ue(F, () => {
2620
- T.value = [], K();
2621
- }), K();
2610
+ T.value = [], H();
2611
+ }), H();
2622
2612
  async function le() {
2623
- await _({}) && await K();
2613
+ await w({}) && await H();
2624
2614
  }
2625
- async function O(g) {
2626
- const N = await o({ name: g.title });
2627
- N && await xe(g, { title: N }, t("tag.renamed"));
2615
+ async function O(b) {
2616
+ const M = await r({ name: b.title });
2617
+ M && await xe(b, { title: M }, t("tag.renamed"));
2628
2618
  }
2629
- async function se(g, N) {
2630
- await xe(g, { noindex: N }, t(N ? "tag.kept-out" : "tag.indexed"));
2619
+ async function re(b, M) {
2620
+ await xe(b, { noindex: M }, t(M ? "tag.kept-out" : "tag.indexed"));
2631
2621
  }
2632
- async function xe(g, N, B) {
2622
+ async function xe(b, M, B) {
2633
2623
  try {
2634
- const X = await y.saveTag(g.id, N);
2624
+ const X = await y.saveTag(b.id, M);
2635
2625
  i.value && (i.value = {
2636
2626
  ...i.value,
2637
2627
  data: i.value.data.map((ye) => ye.id === X.id ? X : ye)
@@ -2640,16 +2630,16 @@ const Bt = { class: "wx-article-editor__screen" }, Pt = 1200, Dt = /* @__PURE__
2640
2630
  L.danger(s(X));
2641
2631
  }
2642
2632
  }
2643
- async function ce(g) {
2644
- if (await be({
2645
- title: t("tag.delete-title", { title: g.title }),
2646
- message: g.articles_count > 0 ? t("tag.delete-text-used", { count: g.articles_count }) : t("tag.delete-text"),
2633
+ async function ce(b) {
2634
+ if (await me({
2635
+ title: t("tag.delete-title", { title: b.title }),
2636
+ message: b.articles_count > 0 ? t("tag.delete-text-used", { count: b.articles_count }) : t("tag.delete-text"),
2647
2637
  confirmText: t("tag.delete"),
2648
2638
  cancelText: t("tag.cancel"),
2649
2639
  tone: "danger"
2650
2640
  }))
2651
2641
  try {
2652
- await y.removeTag(g.id), L.success(t("tag.deleted")), T.value = T.value.filter((B) => B !== g.id), await K();
2642
+ await y.removeTag(b.id), L.success(t("tag.deleted")), T.value = T.value.filter((B) => B !== b.id), await H();
2653
2643
  } catch (B) {
2654
2644
  L.danger(s(B));
2655
2645
  }
@@ -2661,7 +2651,7 @@ const Bt = { class: "wx-article-editor__screen" }, Pt = 1200, Dt = /* @__PURE__
2661
2651
  label: t("tag.index"),
2662
2652
  disabled: c.value,
2663
2653
  run: () => {
2664
- re("index");
2654
+ oe("index");
2665
2655
  }
2666
2656
  },
2667
2657
  {
@@ -2670,7 +2660,7 @@ const Bt = { class: "wx-article-editor__screen" }, Pt = 1200, Dt = /* @__PURE__
2670
2660
  label: t("tag.noindex"),
2671
2661
  disabled: c.value,
2672
2662
  run: () => {
2673
- re("noindex");
2663
+ oe("noindex");
2674
2664
  }
2675
2665
  },
2676
2666
  {
@@ -2680,70 +2670,70 @@ const Bt = { class: "wx-article-editor__screen" }, Pt = 1200, Dt = /* @__PURE__
2680
2670
  danger: !0,
2681
2671
  disabled: c.value,
2682
2672
  run: () => {
2683
- re("delete");
2673
+ oe("delete");
2684
2674
  }
2685
2675
  }
2686
2676
  ]);
2687
- function Te(g) {
2677
+ function Se(b) {
2688
2678
  if (!S.value) return [];
2689
- const N = [
2679
+ const M = [
2690
2680
  { key: "rename", icon: "edit", label: t("tag.rename"), run: () => {
2691
- O(g);
2681
+ O(b);
2692
2682
  } }
2693
2683
  ];
2694
- return g.url && N.push({
2684
+ return b.url && M.push({
2695
2685
  key: "site",
2696
2686
  icon: "external-link",
2697
2687
  label: t("tag.open-on-site"),
2698
- href: g.url
2699
- }), N.push({
2688
+ href: b.url
2689
+ }), M.push({
2700
2690
  key: "articles",
2701
2691
  icon: "list",
2702
2692
  label: t("tag.show-articles"),
2703
2693
  run: () => {
2704
- a.push({ path: `${m.base}/articles`, query: { tag: String(g.id) } });
2694
+ a.push({ path: `${m.base}/articles`, query: { tag: String(b.id) } });
2705
2695
  }
2706
- }), N.push(
2707
- g.noindex ? {
2696
+ }), M.push(
2697
+ b.noindex ? {
2708
2698
  key: "index",
2709
2699
  icon: "eye",
2710
2700
  label: t("tag.index"),
2711
2701
  run: () => {
2712
- se(g, !1);
2702
+ re(b, !1);
2713
2703
  }
2714
2704
  } : {
2715
2705
  key: "noindex",
2716
2706
  icon: "eye-off",
2717
2707
  label: t("tag.noindex"),
2718
2708
  run: () => {
2719
- se(g, !0);
2709
+ re(b, !0);
2720
2710
  }
2721
2711
  }
2722
- ), N.push({
2712
+ ), M.push({
2723
2713
  key: "delete",
2724
2714
  icon: "trash",
2725
2715
  label: t("tag.delete"),
2726
2716
  danger: !0,
2727
2717
  run: () => {
2728
- ce(g);
2718
+ ce(b);
2729
2719
  }
2730
- }), N;
2731
- }
2732
- function ke(g) {
2733
- return g === "noindex" ? "muted" : "success";
2734
- }
2735
- async function fe() {
2736
- if (M.value.length < 2) return;
2737
- const g = await W({ tags: M.value });
2738
- g && (L.success(t("tag.merged", { tag: g.tag.title, count: g.articles_count })), T.value = [], await K());
2739
- }
2740
- async function re(g) {
2741
- const N = M.value.map((B) => B.id);
2742
- if (!(N.length === 0 || c.value)) {
2743
- if (g === "delete") {
2744
- const B = M.value.reduce((ye, d) => ye + d.articles_count, 0);
2745
- if (!await be({
2746
- title: t("tag.delete-many-title", { count: N.length }),
2720
+ }), M;
2721
+ }
2722
+ function ke(b) {
2723
+ return b === "noindex" ? "muted" : "success";
2724
+ }
2725
+ async function pe() {
2726
+ if (N.value.length < 2) return;
2727
+ const b = await W({ tags: N.value });
2728
+ b && (L.success(t("tag.merged", { tag: b.tag.title, count: b.articles_count })), T.value = [], await H());
2729
+ }
2730
+ async function oe(b) {
2731
+ const M = N.value.map((B) => B.id);
2732
+ if (!(M.length === 0 || c.value)) {
2733
+ if (b === "delete") {
2734
+ const B = N.value.reduce((ye, d) => ye + d.articles_count, 0);
2735
+ if (!await me({
2736
+ title: t("tag.delete-many-title", { count: M.length }),
2747
2737
  message: B > 0 ? t("tag.delete-many-text-used", { count: B }) : t("tag.delete-many-text"),
2748
2738
  confirmText: t("tag.delete"),
2749
2739
  cancelText: t("tag.cancel"),
@@ -2752,10 +2742,10 @@ const Bt = { class: "wx-article-editor__screen" }, Pt = 1200, Dt = /* @__PURE__
2752
2742
  }
2753
2743
  c.value = !0;
2754
2744
  try {
2755
- const B = await y.massTags(N, g);
2745
+ const B = await y.massTags(M, b);
2756
2746
  L.success(
2757
- g === "delete" ? t("tag.deleted-many", { count: B }) : g === "index" ? t("tag.indexed-many", { count: B }) : t("tag.kept-out-many", { count: B })
2758
- ), T.value = [], await K();
2747
+ b === "delete" ? t("tag.deleted-many", { count: B }) : b === "index" ? t("tag.indexed-many", { count: B }) : t("tag.kept-out-many", { count: B })
2748
+ ), T.value = [], await H();
2759
2749
  } catch (B) {
2760
2750
  L.danger(s(B));
2761
2751
  } finally {
@@ -2763,23 +2753,23 @@ const Bt = { class: "wx-article-editor__screen" }, Pt = 1200, Dt = /* @__PURE__
2763
2753
  }
2764
2754
  }
2765
2755
  }
2766
- const me = v(
2756
+ const fe = v(
2767
2757
  () => S.value ? [{ key: "new", label: t("tag.new"), icon: "plus", primary: !0, run: () => {
2768
2758
  le();
2769
2759
  } }] : []
2770
2760
  );
2771
- return (g, N) => (p(), G("div", Pa, [
2761
+ return (b, M) => (p(), G("div", Da, [
2772
2762
  n(e(Qe), {
2773
2763
  view: F.value,
2774
- "onUpdate:view": N[1] || (N[1] = (B) => F.value = B),
2764
+ "onUpdate:view": M[1] || (M[1] = (B) => F.value = B),
2775
2765
  title: E.value,
2776
2766
  views: U.value,
2777
- actions: me.value
2767
+ actions: fe.value
2778
2768
  }, {
2779
2769
  default: l(() => [
2780
2770
  n(e(ot), {
2781
2771
  selected: T.value,
2782
- "onUpdate:selected": N[0] || (N[0] = (B) => T.value = B),
2772
+ "onUpdate:selected": M[0] || (M[0] = (B) => T.value = B),
2783
2773
  data: i.value,
2784
2774
  columns: A.value,
2785
2775
  "row-key": "id",
@@ -2798,7 +2788,7 @@ const Bt = { class: "wx-article-editor__screen" }, Pt = 1200, Dt = /* @__PURE__
2798
2788
  "cell-title": l(({ row: B }) => [
2799
2789
  n(e(J), { truncate: "" }, {
2800
2790
  default: l(() => [
2801
- w(b(B.title), 1)
2791
+ _(g(B.title), 1)
2802
2792
  ]),
2803
2793
  _: 2
2804
2794
  }, 1024)
@@ -2811,7 +2801,7 @@ const Bt = { class: "wx-article-editor__screen" }, Pt = 1200, Dt = /* @__PURE__
2811
2801
  truncate: ""
2812
2802
  }, {
2813
2803
  default: l(() => [
2814
- w(b(B.path ?? e(t)("tag.no-address")), 1)
2804
+ _(g(B.path ?? e(t)("tag.no-address")), 1)
2815
2805
  ]),
2816
2806
  _: 2
2817
2807
  }, 1024)
@@ -2821,7 +2811,7 @@ const Bt = { class: "wx-article-editor__screen" }, Pt = 1200, Dt = /* @__PURE__
2821
2811
  tone: B.articles_count === 0 ? "muted" : "default"
2822
2812
  }, {
2823
2813
  default: l(() => [
2824
- w(b(B.articles_count), 1)
2814
+ _(g(B.articles_count), 1)
2825
2815
  ]),
2826
2816
  _: 2
2827
2817
  }, 1032, ["tone"])
@@ -2837,7 +2827,7 @@ const Bt = { class: "wx-article-editor__screen" }, Pt = 1200, Dt = /* @__PURE__
2837
2827
  tone: ke(B.indexing)
2838
2828
  }, {
2839
2829
  default: l(() => [
2840
- w(b(e(t)("tag.indexing-rule")), 1)
2830
+ _(g(e(t)("tag.indexing-rule")), 1)
2841
2831
  ]),
2842
2832
  _: 1
2843
2833
  }, 8, ["tone"])
@@ -2849,14 +2839,14 @@ const Bt = { class: "wx-article-editor__screen" }, Pt = 1200, Dt = /* @__PURE__
2849
2839
  tone: ke(B.indexing)
2850
2840
  }, {
2851
2841
  default: l(() => [
2852
- w(b(e(t)(`tag.indexing-${B.indexing}`)), 1)
2842
+ _(g(e(t)(`tag.indexing-${B.indexing}`)), 1)
2853
2843
  ]),
2854
2844
  _: 2
2855
2845
  }, 1032, ["tone"]))
2856
2846
  ]),
2857
2847
  "cell-actions": l(({ row: B }) => [
2858
2848
  n(e(Re), {
2859
- actions: Te(B),
2849
+ actions: Se(B),
2860
2850
  label: B.title
2861
2851
  }, null, 8, ["actions", "label"])
2862
2852
  ]),
@@ -2865,7 +2855,7 @@ const Bt = { class: "wx-article-editor__screen" }, Pt = 1200, Dt = /* @__PURE__
2865
2855
  ]),
2866
2856
  _: 1
2867
2857
  }, 8, ["view", "title", "views", "actions"]),
2868
- M.value.length > 0 ? (p(), z(e(rt), {
2858
+ N.value.length > 0 ? (p(), z(e(rt), {
2869
2859
  key: 0,
2870
2860
  class: "wx-tags__bar",
2871
2861
  sticky: ""
@@ -2873,7 +2863,7 @@ const Bt = { class: "wx-article-editor__screen" }, Pt = 1200, Dt = /* @__PURE__
2873
2863
  state: l(() => [
2874
2864
  n(e(J), { weight: "medium" }, {
2875
2865
  default: l(() => [
2876
- w(b(e(t)("tag.selected", { count: M.value.length })), 1)
2866
+ _(g(e(t)("tag.selected", { count: N.value.length })), 1)
2877
2867
  ]),
2878
2868
  _: 1
2879
2869
  })
@@ -2881,29 +2871,29 @@ const Bt = { class: "wx-article-editor__screen" }, Pt = 1200, Dt = /* @__PURE__
2881
2871
  default: l(() => [
2882
2872
  n(e(Z), {
2883
2873
  type: "primary",
2884
- disabled: M.value.length < 2 || c.value,
2885
- onClick: fe
2874
+ disabled: N.value.length < 2 || c.value,
2875
+ onClick: pe
2886
2876
  }, {
2887
2877
  icon: l(() => [
2888
2878
  n(e(we), { name: "link" })
2889
2879
  ]),
2890
2880
  default: l(() => [
2891
- w(" " + b(e(t)("tag.merge")), 1)
2881
+ _(" " + g(e(t)("tag.merge")), 1)
2892
2882
  ]),
2893
2883
  _: 1
2894
2884
  }, 8, ["disabled"]),
2895
2885
  n(e(Re), {
2896
2886
  size: "lg",
2897
2887
  actions: he.value,
2898
- label: e(t)("tag.selected", { count: M.value.length })
2888
+ label: e(t)("tag.selected", { count: N.value.length })
2899
2889
  }, null, 8, ["actions", "label"])
2900
2890
  ]),
2901
2891
  _: 1
2902
- })) : H("", !0)
2892
+ })) : K("", !0)
2903
2893
  ]));
2904
2894
  }
2905
- }), Ia = /* @__PURE__ */ pe(Da, [["__scopeId", "data-v-beb86d88"]]);
2906
- function Ka(f = {}) {
2895
+ }), Oa = /* @__PURE__ */ ve(Ia, [["__scopeId", "data-v-beb86d88"]]);
2896
+ function ja(f = {}) {
2907
2897
  const m = f.path ?? "/blog";
2908
2898
  return [
2909
2899
  {
@@ -2915,13 +2905,13 @@ function Ka(f = {}) {
2915
2905
  {
2916
2906
  path: `${m}/articles`,
2917
2907
  name: "webx.blog.articles",
2918
- component: ga,
2908
+ component: ha,
2919
2909
  props: { base: m }
2920
2910
  },
2921
2911
  {
2922
2912
  path: `${m}/articles/:id(\\d+)`,
2923
2913
  name: "webx.blog.articles.edit",
2924
- component: It,
2914
+ component: Ot,
2925
2915
  props: { base: m }
2926
2916
  }
2927
2917
  ],
@@ -2936,12 +2926,12 @@ function Ka(f = {}) {
2936
2926
  * binding.
2937
2927
  */
2938
2928
  types: {
2939
- "wx-article-address": { component: Mt, kind: "display" },
2940
- "wx-article-author": { component: Nt, kind: "field" },
2941
- "wx-article-rubrics": { component: ta, kind: "field" },
2942
- "wx-article-tags": { component: ra, kind: "field" },
2943
- "wx-article-related": { component: Qt, kind: "field" },
2944
- "wx-article-history": { component: Ht, kind: "display" }
2929
+ "wx-article-address": { component: Nt, kind: "display" },
2930
+ "wx-article-author": { component: Bt, kind: "field" },
2931
+ "wx-article-rubrics": { component: aa, kind: "field" },
2932
+ "wx-article-tags": { component: oa, kind: "field" },
2933
+ "wx-article-related": { component: Xt, kind: "field" },
2934
+ "wx-article-history": { component: Kt, kind: "display" }
2945
2935
  }
2946
2936
  },
2947
2937
  {
@@ -2951,7 +2941,7 @@ function Ka(f = {}) {
2951
2941
  {
2952
2942
  path: `${m}/rubrics`,
2953
2943
  name: "webx.blog.rubrics",
2954
- component: Wa,
2944
+ component: Ca,
2955
2945
  props: { base: m }
2956
2946
  }
2957
2947
  ]
@@ -2963,7 +2953,7 @@ function Ka(f = {}) {
2963
2953
  {
2964
2954
  path: `${m}/tags`,
2965
2955
  name: "webx.blog.tags",
2966
- component: Ia,
2956
+ component: Oa,
2967
2957
  props: { base: m }
2968
2958
  }
2969
2959
  ]
@@ -2971,25 +2961,25 @@ function Ka(f = {}) {
2971
2961
  ];
2972
2962
  }
2973
2963
  export {
2974
- Mt as WxArticleAddress,
2975
- Nt as WxArticleAuthorField,
2976
- oa as WxArticleCreateDialog,
2977
- It as WxArticleEditorPage,
2978
- Ht as WxArticleHistory,
2979
- Qt as WxArticleRelated,
2980
- ta as WxArticleRubrics,
2981
- ra as WxArticleTags,
2982
- ga as WxArticlesPage,
2983
- Va as WxRubricForm,
2984
- Wa as WxRubricsPage,
2985
- Ca as WxTagCreateDialog,
2986
- Ba as WxTagMergeDialog,
2987
- Ia as WxTagsPage,
2964
+ Nt as WxArticleAddress,
2965
+ Bt as WxArticleAuthorField,
2966
+ ua as WxArticleCreateDialog,
2967
+ Ot as WxArticleEditorPage,
2968
+ Kt as WxArticleHistory,
2969
+ Xt as WxArticleRelated,
2970
+ aa as WxArticleRubrics,
2971
+ oa as WxArticleTags,
2972
+ ha as WxArticlesPage,
2973
+ Aa as WxRubricForm,
2974
+ Ca as WxRubricsPage,
2975
+ za as WxTagCreateDialog,
2976
+ Pa as WxTagMergeDialog,
2977
+ Oa as WxTagsPage,
2988
2978
  ut as articleEditorKey,
2989
- Ka as blog,
2990
- Rt as blogMessages,
2979
+ ja as blog,
2980
+ Ut as blogMessages,
2991
2981
  de as createBlogApi,
2992
- zt as provideArticleEditor,
2993
- Se as useArticleEditor
2982
+ Rt as provideArticleEditor,
2983
+ Ae as useArticleEditor
2994
2984
  };
2995
2985
  //# sourceMappingURL=index.js.map