@templatical/editor 0.7.3 → 0.8.1

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.
Files changed (109) hide show
  1. package/dist/{AiChatSidebar-H7SIsxeC.js → AiChatSidebar-B74X6tIx.js} +3 -3
  2. package/dist/{AiFeatureMenu-CJGX-fP5.js → AiFeatureMenu-BPOVM_Ou.js} +4 -4
  3. package/dist/{BlockA11yBadge-BhyoMZJ9.js → BlockIssueBadge-DJTiT1eF.js} +6 -6
  4. package/dist/{CloudEditor-BBs3p-mW.js → CloudEditor-wAkx8TH_.js} +24 -24
  5. package/dist/{CollaboratorBar-CiEo25lb.js → CollaboratorBar-DIr5ZUv9.js} +2 -2
  6. package/dist/{CommentsSidebar-DikjSLtH.js → CommentsSidebar-Qvppl-DR.js} +6 -6
  7. package/dist/{CountdownBlock-ByJ0_8Pk.js → CountdownBlock-D0IiMliC.js} +1 -1
  8. package/dist/{CountdownToolbar-Bn4RwJVN.js → CountdownToolbar-BVVT8U5C.js} +2 -2
  9. package/dist/{DesignReferenceSidebar-D08CLZPA.js → DesignReferenceSidebar-ucgtoDll.js} +6 -6
  10. package/dist/{AccessibilityPanel-BeUibrUb.js → IssuesPanel-XVdvrgmq.js} +18 -18
  11. package/dist/{ModuleBrowserModal-D6637s8j.js → ModuleBrowserModal-VqGNisDp.js} +7 -7
  12. package/dist/{ModulePreviewCanvas-DBFmwq-y.js → ModulePreviewCanvas-DmzW6I_9.js} +2 -2
  13. package/dist/{NumberWithSuffix-CyFX9w1e.js → NumberWithSuffix-n-cr7lpU.js} +1 -1
  14. package/dist/{ParagraphEditor-DC2jOjNh.js → ParagraphEditor-BQTPI8j8.js} +6 -6
  15. package/dist/{RichTextEditorContent-8NkjTIua.js → RichTextEditorContent-Cu9NEkKd.js} +3 -3
  16. package/dist/{SaveModuleDialog-NKT7bWWs.js → SaveModuleDialog-DhgHOGgX.js} +6 -6
  17. package/dist/{SnapshotHistory-XNqYxPBj.js → SnapshotHistory-DJOsWv4i.js} +5 -5
  18. package/dist/{TemplateScoringPanel-kYOGtac3.js → TemplateScoringPanel-BzDVdfOx.js} +6 -6
  19. package/dist/{TestEmailModal-B_-Qo5Us.js → TestEmailModal-Dqj50aHe.js} +3 -3
  20. package/dist/{TitleEditor-DnH3yyTr.js → TitleEditor-PQYXfY6W.js} +6 -6
  21. package/dist/{TplModal-BoEZFe3U.js → TplModal-Dy6RXBV_.js} +3 -3
  22. package/dist/{blockTypeIcons-CUcYuWAO.js → blockTypeIcons-qnUeTls5.js} +1 -1
  23. package/dist/bundle-stats.json +6 -6
  24. package/dist/cdn/chunks/{AiFeatureMenu-SxIqfqA0.js → AiFeatureMenu-Cr6_Q9Zv.js} +2 -2
  25. package/dist/cdn/chunks/{AiFeatureMenu-SxIqfqA0.js.map → AiFeatureMenu-Cr6_Q9Zv.js.map} +1 -1
  26. package/dist/cdn/chunks/{BlockA11yBadge-QqW6nomn.js → BlockIssueBadge-D0_mYpkl.js} +6 -6
  27. package/dist/cdn/chunks/BlockIssueBadge-D0_mYpkl.js.map +1 -0
  28. package/dist/cdn/chunks/{CloudEditor-ChWUIMw7.js → CloudEditor-BtAkuQB4.js} +101 -101
  29. package/dist/cdn/chunks/CloudEditor-BtAkuQB4.js.map +1 -0
  30. package/dist/cdn/chunks/{CollaboratorBar-73LfbzqF.js → CollaboratorBar-C-P00I9l.js} +3 -3
  31. package/dist/cdn/chunks/{CollaboratorBar-73LfbzqF.js.map → CollaboratorBar-C-P00I9l.js.map} +1 -1
  32. package/dist/cdn/chunks/{CountdownBlock-WYz9b9Ex.js → CountdownBlock-BEWsiqgw.js} +2 -2
  33. package/dist/cdn/chunks/{CountdownBlock-WYz9b9Ex.js.map → CountdownBlock-BEWsiqgw.js.map} +1 -1
  34. package/dist/cdn/chunks/{CountdownToolbar-B9fPfFqp.js → CountdownToolbar-CdjFGEI7.js} +3 -3
  35. package/dist/cdn/chunks/{CountdownToolbar-B9fPfFqp.js.map → CountdownToolbar-CdjFGEI7.js.map} +1 -1
  36. package/dist/cdn/chunks/{AccessibilityPanel-CQt87OMk.js → IssuesPanel-DJOLYNAJ.js} +15 -15
  37. package/dist/cdn/chunks/IssuesPanel-DJOLYNAJ.js.map +1 -0
  38. package/dist/cdn/chunks/{ModuleBrowserModal-DfnJQBkM.js → ModuleBrowserModal-hnbUUl8w.js} +8 -8
  39. package/dist/cdn/chunks/{ModuleBrowserModal-DfnJQBkM.js.map → ModuleBrowserModal-hnbUUl8w.js.map} +1 -1
  40. package/dist/cdn/chunks/{ModulePreviewCanvas-DE4_oHA_.js → ModulePreviewCanvas-_DoUZGQh.js} +24 -24
  41. package/dist/cdn/chunks/{ModulePreviewCanvas-DE4_oHA_.js.map → ModulePreviewCanvas-_DoUZGQh.js.map} +1 -1
  42. package/dist/cdn/chunks/{NumberWithSuffix-BST0yRor.js → NumberWithSuffix-ryhWFnCJ.js} +2 -2
  43. package/dist/cdn/chunks/{NumberWithSuffix-BST0yRor.js.map → NumberWithSuffix-ryhWFnCJ.js.map} +1 -1
  44. package/dist/cdn/chunks/{ParagraphEditor-CQfijF3i.js → ParagraphEditor-BtzinrI_.js} +15 -15
  45. package/dist/cdn/chunks/{ParagraphEditor-CQfijF3i.js.map → ParagraphEditor-BtzinrI_.js.map} +1 -1
  46. package/dist/cdn/chunks/{RichTextEditorContent-CBds8dnm.js → RichTextEditorContent-CRlcjuMH.js} +2 -2
  47. package/dist/cdn/chunks/{RichTextEditorContent-CBds8dnm.js.map → RichTextEditorContent-CRlcjuMH.js.map} +1 -1
  48. package/dist/cdn/chunks/{SaveModuleDialog-DXhuZgZ4.js → SaveModuleDialog-D-g-nYuL.js} +4 -4
  49. package/dist/cdn/chunks/{SaveModuleDialog-DXhuZgZ4.js.map → SaveModuleDialog-D-g-nYuL.js.map} +1 -1
  50. package/dist/cdn/chunks/{TitleEditor-BdQvH7eK.js → TitleEditor-Bzsbpajt.js} +7 -7
  51. package/dist/cdn/chunks/{TitleEditor-BdQvH7eK.js.map → TitleEditor-Bzsbpajt.js.map} +1 -1
  52. package/dist/cdn/chunks/{blockTypeIcons-D3CGFW5P.js → blockTypeIcons-B_klsmQ1.js} +8 -8
  53. package/dist/cdn/chunks/{blockTypeIcons-D3CGFW5P.js.map → blockTypeIcons-B_klsmQ1.js.map} +1 -1
  54. package/dist/{de-C9hp3n_a.js → cdn/chunks/de-BBEGQDsd.js} +9 -7
  55. package/dist/cdn/chunks/{de-B_6zGPbx.js.map → de-BBEGQDsd.js.map} +1 -1
  56. package/dist/{en-Dv776AqL.js → cdn/chunks/en-CHha-_ta.js} +9 -7
  57. package/dist/cdn/chunks/{en-pYt1-lm4.js.map → en-CHha-_ta.js.map} +1 -1
  58. package/dist/cdn/chunks/{extensions-BE81zpqP.js → extensions-DIHxPVrP.js} +2 -2
  59. package/dist/cdn/chunks/{extensions-BE81zpqP.js.map → extensions-DIHxPVrP.js.map} +1 -1
  60. package/dist/cdn/chunks/{features-CXF_YKlL.js → features-BsW4aFcn.js} +642 -627
  61. package/dist/cdn/chunks/features-BsW4aFcn.js.map +1 -0
  62. package/dist/cdn/chunks/{icons-KbmhF7rg.js → icons-BgPk6tUq.js} +36 -38
  63. package/dist/cdn/chunks/icons-BgPk6tUq.js.map +1 -0
  64. package/dist/cdn/chunks/{media-library-BERe10wA.js → media-library-C1Ue4At9.js} +13 -13
  65. package/dist/cdn/chunks/{media-library-BERe10wA.js.map → media-library-C1Ue4At9.js.map} +1 -1
  66. package/dist/{pt-BR-6n58Fl_q.js → cdn/chunks/pt-BR-CFomv2R8.js} +9 -7
  67. package/dist/cdn/chunks/{pt-BR-CtDwVsN-.js.map → pt-BR-CFomv2R8.js.map} +1 -1
  68. package/dist/cdn/chunks/{quality-CmkY1kMU.js → quality-BDr54nMA.js} +858 -436
  69. package/dist/cdn/chunks/quality-BDr54nMA.js.map +1 -0
  70. package/dist/cdn/chunks/{renderer-OttGEYkY.js → renderer-BdjvKDwC.js} +3 -3
  71. package/dist/cdn/chunks/{renderer-OttGEYkY.js.map → renderer-BdjvKDwC.js.map} +1 -1
  72. package/dist/cdn/chunks/{src-C21GI0p6.js → src-BI22RLP6.js} +6 -6
  73. package/dist/cdn/chunks/{src-C21GI0p6.js.map → src-BI22RLP6.js.map} +1 -1
  74. package/dist/cdn/chunks/{styles-Cy-My9zK.js → styles-BkubbXy8.js} +310 -285
  75. package/dist/cdn/chunks/styles-BkubbXy8.js.map +1 -0
  76. package/dist/cdn/editor.css +1 -1
  77. package/dist/cdn/editor.js +11 -11
  78. package/dist/cdn/editor.js.map +1 -1
  79. package/dist/{cdn/chunks/de-B_6zGPbx.js → de-KFqjrxG3.js} +7 -9
  80. package/dist/{cdn/chunks/en-pYt1-lm4.js → en-CNm94YYD.js} +7 -9
  81. package/dist/{extensions-p6UBqXfg.js → extensions-C-FpnfJn.js} +2 -2
  82. package/dist/index.d.ts +16 -14
  83. package/dist/{keys-B5SJtPWf.js → keys-CY3tkCsv.js} +2 -2
  84. package/dist/list-checks-CMtEXe9l.js +25 -0
  85. package/dist/{cdn/chunks/pt-BR-CtDwVsN-.js → pt-BR-gxZZAUWp.js} +7 -9
  86. package/dist/style.css +1 -1
  87. package/dist/{styles-BP15QmP3.js → styles-BEhOSxt5.js} +204 -179
  88. package/dist/templatical-editor.js +9 -9
  89. package/dist/{useCloudI18n-ByEMykjO.js → useCloudI18n-BPUHj2CZ.js} +1 -1
  90. package/dist/{useEditorCore-_rbu6iMu.js → useEditorCore-DnCOsekL.js} +737 -722
  91. package/dist/{useI18n-PEB8ioi_.js → useI18n-CWX9ZTCW.js} +1 -1
  92. package/dist/{useMergeTag-C47xwU7X.js → useMergeTag-B3F9VR04.js} +2 -2
  93. package/dist/{usePopoverRoot-BwzFSPLy.js → usePopoverRoot-BKJcxsst.js} +1 -1
  94. package/package.json +7 -7
  95. package/dist/accessibility-BgUEA-Ai.js +0 -27
  96. package/dist/cdn/chunks/AccessibilityPanel-CQt87OMk.js.map +0 -1
  97. package/dist/cdn/chunks/BlockA11yBadge-QqW6nomn.js.map +0 -1
  98. package/dist/cdn/chunks/CloudEditor-ChWUIMw7.js.map +0 -1
  99. package/dist/cdn/chunks/features-CXF_YKlL.js.map +0 -1
  100. package/dist/cdn/chunks/icons-KbmhF7rg.js.map +0 -1
  101. package/dist/cdn/chunks/quality-CmkY1kMU.js.map +0 -1
  102. package/dist/cdn/chunks/styles-Cy-My9zK.js.map +0 -1
  103. /package/dist/{check-Bg5yrRmX.js → check-BF4bEbCU.js} +0 -0
  104. /package/dist/{chevron-down-tee-ghFi.js → chevron-down-4NzWtv6Y.js} +0 -0
  105. /package/dist/{circle-alert-C0L9pUQ4.js → circle-alert-CPIth9bC.js} +0 -0
  106. /package/dist/{clock-CDlEdqiP.js → clock-B9-ct9r_.js} +0 -0
  107. /package/dist/{image-up-1D_3XDdO.js → image-up-CubAveUO.js} +0 -0
  108. /package/dist/{info-DTGrc0Bx.js → info-DiINxXfZ.js} +0 -0
  109. /package/dist/{refresh-cw-BNAhAmtL.js → refresh-cw-C9_M6yB3.js} +0 -0
@@ -1352,22 +1352,29 @@ function jn() {
1352
1352
  }
1353
1353
  //#endregion
1354
1354
  //#region src/keys.ts
1355
- var Mn = Symbol("translations"), Nn = Symbol("editor"), Pn = Symbol("history"), Fn = Symbol("blockActions"), In = Symbol("conditionPreview"), Ln = Symbol("fontsManager"), Rn = Symbol("themeStyles"), zn = Symbol("tplUiTheme"), Bn = Symbol("blockDefaults"), Vn = Symbol("blockRegistry"), Hn = Symbol("customBlockDefinitions"), Un = Symbol("mergeTags"), Wn = Symbol("mergeTagSyntax"), Gn = Symbol("onRequestMergeTag"), Kn = Symbol("mergeTagAutocomplete"), qn = Symbol("onRequestMedia"), Jn = Symbol("displayConditions"), Yn = Symbol("allowCustomConditions"), Xn = Symbol("capabilities"), Zn = Symbol("keyboardReorder"), Qn = Symbol("accessibilityLint"), $n = Symbol("editorRoot"), er = Symbol("popoverRoot"), tr = Symbol("authManager"), nr = Symbol("aiConfig"), rr = Symbol("comments"), ir = Symbol("savedModulesHeadless"), ar = Symbol("scoring"), or = Symbol("cloudTranslations");
1355
+ var Mn = Symbol("translations"), Nn = Symbol("editor"), Pn = Symbol("history"), Fn = Symbol("blockActions"), In = Symbol("conditionPreview"), Ln = Symbol("fontsManager"), Rn = Symbol("themeStyles"), zn = Symbol("tplUiTheme"), Bn = Symbol("blockDefaults"), Vn = Symbol("blockRegistry"), Hn = Symbol("customBlockDefinitions"), Un = Symbol("mergeTags"), Wn = Symbol("mergeTagSyntax"), Gn = Symbol("onRequestMergeTag"), Kn = Symbol("mergeTagAutocomplete"), qn = Symbol("onRequestMedia"), Jn = Symbol("displayConditions"), Yn = Symbol("allowCustomConditions"), Xn = Symbol("capabilities"), Zn = Symbol("keyboardReorder"), Qn = Symbol("templateLint"), $n = Symbol("editorRoot"), er = Symbol("popoverRoot"), tr = Symbol("authManager"), nr = Symbol("aiConfig"), rr = Symbol("comments"), ir = Symbol("savedModulesHeadless"), ar = Symbol("scoring"), or = Symbol("cloudTranslations");
1356
1356
  function J(e, t) {
1357
1357
  let n = v(e, null);
1358
1358
  if (n == null) throw Error(`${t} requires a provider for ${e.description ?? "unknown key"}. Ensure it is a descendant of Editor or CloudEditor.`);
1359
1359
  return n;
1360
1360
  }
1361
1361
  //#endregion
1362
- //#region src/composables/useAccessibilityLint.ts
1362
+ //#region src/composables/useTemplateLint.ts
1363
1363
  function sr(e) {
1364
- let t = C([]), r = C(!1), i = C(!1), a = n(null), o = e.options.disabled === !0, s = null, c = !1;
1364
+ return e ? e.disabled === !0 ? !0 : e.accessibility === !1 && e.structure === !1 && e.links === !1 : !1;
1365
+ }
1366
+ function cr(e) {
1367
+ let t = C([]), r = C(!1), i = C(!1), a = n(null), o = sr(e.options), s = null, c = !1;
1365
1368
  o || l();
1366
1369
  async function l() {
1367
1370
  try {
1368
- let t = await import("./quality-CmkY1kMU.js").then((e) => e.t);
1371
+ let t = await import("./quality-BDr54nMA.js").then((e) => e.t);
1369
1372
  if (c) return;
1370
- a.value = t.lintAccessibility, r.value = !0, u(), s = on(e.content, u, {
1373
+ a.value = {
1374
+ lintAccessibility: t.lintAccessibility,
1375
+ lintStructure: t.lintStructure,
1376
+ lintLinks: t.lintLinks
1377
+ }, r.value = !0, u(), s = on(e.content, u, {
1371
1378
  debounce: e.debounce ?? 500,
1372
1379
  deep: !0
1373
1380
  });
@@ -1377,7 +1384,13 @@ function sr(e) {
1377
1384
  }
1378
1385
  }
1379
1386
  function u() {
1380
- a.value && (t.value = a.value(e.content.value, e.options));
1387
+ if (!a.value) return;
1388
+ let n = a.value.lintAccessibility(e.content.value, e.options), r = a.value.lintStructure(e.content.value, e.options), i = a.value.lintLinks(e.content.value, e.options);
1389
+ t.value = [
1390
+ ...n,
1391
+ ...r,
1392
+ ...i
1393
+ ];
1381
1394
  }
1382
1395
  let d = H(() => e.options, () => {
1383
1396
  a.value && u();
@@ -1385,7 +1398,8 @@ function sr(e) {
1385
1398
  function f(t) {
1386
1399
  t.fix && t.fix.apply({
1387
1400
  updateBlock: e.updateBlock,
1388
- updateSettings: e.updateSettings
1401
+ updateSettings: e.updateSettings,
1402
+ removeBlock: e.removeBlock
1389
1403
  });
1390
1404
  }
1391
1405
  function p() {
@@ -1415,12 +1429,12 @@ function Y(e) {
1415
1429
  }
1416
1430
  //#endregion
1417
1431
  //#region src/utils/blockTypeLabels.ts
1418
- function cr(e, t) {
1432
+ function lr(e, t) {
1419
1433
  return t.blocks[e] ?? e;
1420
1434
  }
1421
1435
  //#endregion
1422
1436
  //#region src/composables/useKeyboardReorder.ts
1423
- function lr(e, t) {
1437
+ function ur(e, t) {
1424
1438
  let n = C(null), r = C(""), i = null;
1425
1439
  function a(t) {
1426
1440
  let n = e.content.value.blocks, r = n.findIndex((e) => e.id === t);
@@ -1447,7 +1461,7 @@ function lr(e, t) {
1447
1461
  let r = a(n);
1448
1462
  if (!r) return "";
1449
1463
  let i = (r.sectionId ? s(r.sectionId, r.columnIndex ?? 0) : e.content.value.blocks)?.[r.index];
1450
- return i ? cr(i.type, t.t) : "";
1464
+ return i ? lr(i.type, t.t) : "";
1451
1465
  }
1452
1466
  function s(t, n) {
1453
1467
  return e.content.value.blocks.find((e) => e.id === t && e.type === "section")?.children[n] ?? null;
@@ -1516,13 +1530,13 @@ function lr(e, t) {
1516
1530
  }
1517
1531
  //#endregion
1518
1532
  //#region src/composables/useUiTheme.ts
1519
- function ur(e) {
1533
+ function dr(e) {
1520
1534
  let t = vn("(prefers-color-scheme: dark)");
1521
1535
  return { resolvedTheme: k(() => e.value === "auto" ? t.value ? "dark" : "light" : e.value) };
1522
1536
  }
1523
1537
  //#endregion
1524
1538
  //#region src/composables/useThemeStyles.ts
1525
- var dr = {
1539
+ var fr = {
1526
1540
  bg: "--tpl-bg",
1527
1541
  bgElevated: "--tpl-bg-elevated",
1528
1542
  bgHover: "--tpl-bg-hover",
@@ -1546,10 +1560,10 @@ var dr = {
1546
1560
  dangerLight: "--tpl-danger-light",
1547
1561
  canvasBg: "--tpl-canvas-bg"
1548
1562
  };
1549
- function fr({ themeOverrides: e, resolvedTheme: t, extraStyles: n }) {
1563
+ function pr({ themeOverrides: e, resolvedTheme: t, extraStyles: n }) {
1550
1564
  return { themeStyles: k(() => {
1551
1565
  let r = {}, i = e.value, a = t.value === "dark" ? i.dark : i;
1552
- if (a) for (let [e, t] of Object.entries(dr)) {
1566
+ if (a) for (let [e, t] of Object.entries(fr)) {
1553
1567
  let n = a[e];
1554
1568
  n && (r[t] = n);
1555
1569
  }
@@ -1558,27 +1572,27 @@ function fr({ themeOverrides: e, resolvedTheme: t, extraStyles: n }) {
1558
1572
  }
1559
1573
  //#endregion
1560
1574
  //#region src/utils/logger.ts
1561
- var pr = "[Templatical]";
1562
- function mr() {
1575
+ var mr = "[Templatical]";
1576
+ function hr() {
1563
1577
  return typeof process < "u" && !0;
1564
1578
  }
1565
- var hr = {
1579
+ var gr = {
1566
1580
  warn(...e) {
1567
- console.warn(pr, ...e);
1581
+ console.warn(mr, ...e);
1568
1582
  },
1569
1583
  error(...e) {
1570
- console.error(pr, ...e);
1584
+ console.error(mr, ...e);
1571
1585
  },
1572
1586
  debug(...e) {
1573
- mr() || console.debug(pr, ...e);
1587
+ hr() || console.debug(mr, ...e);
1574
1588
  },
1575
1589
  info(...e) {
1576
- mr() || console.info(pr, ...e);
1590
+ hr() || console.info(mr, ...e);
1577
1591
  }
1578
1592
  };
1579
1593
  //#endregion
1580
1594
  //#region src/composables/useBlockRegistry.ts
1581
- function gr() {
1595
+ function _r() {
1582
1596
  let e = n(/* @__PURE__ */ new Map());
1583
1597
  function t(t, n) {
1584
1598
  e.value.set(t, n), oe(e);
@@ -1630,7 +1644,7 @@ function gr() {
1630
1644
  strictFilters: !1
1631
1645
  }).parseAndRender(t.template, e.fieldValues);
1632
1646
  } catch (t) {
1633
- return hr.error(`Failed to render custom block "${e.customType}":`, t), c(`Render error: ${e.customType}`);
1647
+ return gr.error(`Failed to render custom block "${e.customType}":`, t), c(`Render error: ${e.customType}`);
1634
1648
  }
1635
1649
  }
1636
1650
  function u(t) {
@@ -1649,7 +1663,7 @@ function gr() {
1649
1663
  }
1650
1664
  //#endregion
1651
1665
  //#region src/utils/registerBuiltInBlocks.ts
1652
- var _r = [
1666
+ var vr = [
1653
1667
  {
1654
1668
  type: "section",
1655
1669
  label: "Section",
@@ -1716,8 +1730,8 @@ var _r = [
1716
1730
  createBlock: it
1717
1731
  }
1718
1732
  ];
1719
- function vr(e, t) {
1720
- for (let n of _r) {
1733
+ function yr(e, t) {
1734
+ for (let n of vr) {
1721
1735
  let r = t[n.type];
1722
1736
  r && e.registerBuiltIn(n.type, {
1723
1737
  component: r,
@@ -1732,7 +1746,7 @@ function vr(e, t) {
1732
1746
  }
1733
1747
  //#endregion
1734
1748
  //#region src/utils/keyboardShortcuts.ts
1735
- function yr(e) {
1749
+ function br(e) {
1736
1750
  for (let t of e.composedPath()) {
1737
1751
  if (!(t instanceof HTMLElement)) continue;
1738
1752
  if (t.isContentEditable) return !0;
@@ -1741,14 +1755,14 @@ function yr(e) {
1741
1755
  }
1742
1756
  return !1;
1743
1757
  }
1744
- function br(e, t) {
1758
+ function xr(e, t) {
1745
1759
  let n = e.metaKey || e.ctrlKey;
1746
1760
  if (n && e.key.toLowerCase() === "s") {
1747
1761
  e.preventDefault(), t.onSave?.();
1748
1762
  return;
1749
1763
  }
1750
1764
  if (n && e.key.toLowerCase() === "z") {
1751
- if (yr(e)) return;
1765
+ if (br(e)) return;
1752
1766
  e.preventDefault(), e.shiftKey ? t.history.redo() : (t.onBeforeUndo?.(), t.history.undo());
1753
1767
  return;
1754
1768
  }
@@ -1756,11 +1770,11 @@ function br(e, t) {
1756
1770
  t.selectBlock(null);
1757
1771
  return;
1758
1772
  }
1759
- (e.key === "Delete" || e.key === "Backspace") && t.getSelectedBlockId() && !yr(e) && (e.preventDefault(), t.history.record(), t.removeBlock(t.getSelectedBlockId()));
1773
+ (e.key === "Delete" || e.key === "Backspace") && t.getSelectedBlockId() && !br(e) && (e.preventDefault(), t.history.record(), t.removeBlock(t.getSelectedBlockId()));
1760
1774
  }
1761
1775
  //#endregion
1762
1776
  //#region src/components/blocks/ButtonBlock.vue?vue&type=script&setup=true&lang.ts
1763
- var xr = { class: "tpl:text-center" }, Sr = ["href"], Cr = /* @__PURE__ */ B({
1777
+ var Sr = { class: "tpl:text-center" }, Cr = ["href"], wr = /* @__PURE__ */ B({
1764
1778
  __name: "ButtonBlock",
1765
1779
  props: {
1766
1780
  block: {},
@@ -1781,17 +1795,17 @@ var xr = { class: "tpl:text-center" }, Sr = ["href"], Cr = /* @__PURE__ */ B({
1781
1795
  };
1782
1796
  return t.block.fontFamily && (e.fontFamily = t.block.fontFamily), e;
1783
1797
  });
1784
- return (t, r) => (f(), A("div", xr, [I("a", {
1798
+ return (t, r) => (f(), A("div", Sr, [I("a", {
1785
1799
  href: e.block.url || "#",
1786
1800
  style: L(n.value),
1787
1801
  class: "tpl:cursor-default",
1788
1802
  onClick: r[0] ||= N(() => {}, ["prevent"])
1789
- }, O(e.block.text), 13, Sr)]));
1803
+ }, O(e.block.text), 13, Cr)]));
1790
1804
  }
1791
- }), wr = (e) => e === "", Tr = (...e) => e.filter((e, t, n) => !!e && e.trim() !== "" && n.indexOf(e) === t).join(" ").trim(), Er = (e) => e.replace(/([a-z0-9])([A-Z])/g, "$1-$2").toLowerCase(), Dr = (e) => e.replace(/^([A-Z])|[\s-_]+(\w)/g, (e, t, n) => n ? n.toUpperCase() : t.toLowerCase()), Or = (e) => {
1792
- let t = Dr(e);
1805
+ }), Tr = (e) => e === "", Er = (...e) => e.filter((e, t, n) => !!e && e.trim() !== "" && n.indexOf(e) === t).join(" ").trim(), Dr = (e) => e.replace(/([a-z0-9])([A-Z])/g, "$1-$2").toLowerCase(), Or = (e) => e.replace(/^([A-Z])|[\s-_]+(\w)/g, (e, t, n) => n ? n.toUpperCase() : t.toLowerCase()), kr = (e) => {
1806
+ let t = Or(e);
1793
1807
  return t.charAt(0).toUpperCase() + t.slice(1);
1794
- }, kr = {
1808
+ }, Ar = {
1795
1809
  xmlns: "http://www.w3.org/2000/svg",
1796
1810
  width: 24,
1797
1811
  height: 24,
@@ -1801,35 +1815,35 @@ var xr = { class: "tpl:text-center" }, Sr = ["href"], Cr = /* @__PURE__ */ B({
1801
1815
  "stroke-width": 2,
1802
1816
  "stroke-linecap": "round",
1803
1817
  "stroke-linejoin": "round"
1804
- }, Ar = Symbol("lucide-icons");
1805
- function jr() {
1806
- return v(Ar, {});
1818
+ }, jr = Symbol("lucide-icons");
1819
+ function Mr() {
1820
+ return v(jr, {});
1807
1821
  }
1808
1822
  //#endregion
1809
1823
  //#region ../../node_modules/.pnpm/@lucide+vue@1.14.0_vue@3.5.33_typescript@6.0.3_/node_modules/@lucide/vue/dist/esm/Icon.mjs
1810
- var Mr = ({ name: e, iconNode: t, absoluteStrokeWidth: n, "absolute-stroke-width": r, strokeWidth: i, "stroke-width": o, size: s, color: c, ...l }, { slots: u }) => {
1811
- let { size: d, color: f, strokeWidth: p = 2, absoluteStrokeWidth: m = !1, class: h = "" } = jr(), g = k(() => {
1812
- let e = wr(n) || wr(r) || n === !0 || r === !0 || m === !0, t = i || o || p || kr["stroke-width"];
1813
- return e ? Number(t) * 24 / Number(s ?? d ?? kr.width) : t;
1824
+ var Nr = ({ name: e, iconNode: t, absoluteStrokeWidth: n, "absolute-stroke-width": r, strokeWidth: i, "stroke-width": o, size: s, color: c, ...l }, { slots: u }) => {
1825
+ let { size: d, color: f, strokeWidth: p = 2, absoluteStrokeWidth: m = !1, class: h = "" } = Mr(), g = k(() => {
1826
+ let e = Tr(n) || Tr(r) || n === !0 || r === !0 || m === !0, t = i || o || p || Ar["stroke-width"];
1827
+ return e ? Number(t) * 24 / Number(s ?? d ?? Ar.width) : t;
1814
1828
  });
1815
1829
  return a("svg", {
1816
- ...kr,
1830
+ ...Ar,
1817
1831
  ...l,
1818
- width: s ?? d ?? kr.width,
1819
- height: s ?? d ?? kr.height,
1820
- stroke: c ?? f ?? kr.stroke,
1832
+ width: s ?? d ?? Ar.width,
1833
+ height: s ?? d ?? Ar.height,
1834
+ stroke: c ?? f ?? Ar.stroke,
1821
1835
  "stroke-width": g.value,
1822
- class: Tr("lucide", h, ...e ? [`lucide-${Er(Or(e))}-icon`, `lucide-${Er(e)}`] : ["lucide-icon"])
1836
+ class: Er("lucide", h, ...e ? [`lucide-${Dr(kr(e))}-icon`, `lucide-${Dr(e)}`] : ["lucide-icon"])
1823
1837
  }, [...t.map((e) => a(...e)), ...u.default ? [u.default()] : []]);
1824
- }, X = (e, t) => (n, { slots: r, attrs: i }) => a(Mr, {
1838
+ }, X = (e, t) => (n, { slots: r, attrs: i }) => a(Nr, {
1825
1839
  ...i,
1826
1840
  ...n,
1827
1841
  iconNode: t,
1828
1842
  name: e
1829
- }, r), Nr = X("bookmark", [["path", {
1843
+ }, r), Pr = X("bookmark", [["path", {
1830
1844
  d: "M17 3a2 2 0 0 1 2 2v15a1 1 0 0 1-1.496.868l-4.512-2.578a2 2 0 0 0-1.984 0l-4.512 2.578A1 1 0 0 1 5 20V5a2 2 0 0 1 2-2z",
1831
1845
  key: "oz39mx"
1832
- }]]), Pr = X("box", [
1846
+ }]]), Fr = X("box", [
1833
1847
  ["path", {
1834
1848
  d: "M21 8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73l7 4a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16Z",
1835
1849
  key: "hh9hay"
@@ -1842,22 +1856,22 @@ var Mr = ({ name: e, iconNode: t, absoluteStrokeWidth: n, "absolute-stroke-width
1842
1856
  d: "M12 22V12",
1843
1857
  key: "d0xqtd"
1844
1858
  }]
1845
- ]), Fr = X("check", [["path", {
1859
+ ]), Ir = X("check", [["path", {
1846
1860
  d: "M20 6 9 17l-5-5",
1847
1861
  key: "1gmf2c"
1848
- }]]), Ir = X("chevron-down", [["path", {
1862
+ }]]), Lr = X("chevron-down", [["path", {
1849
1863
  d: "m6 9 6 6 6-6",
1850
1864
  key: "qrunsl"
1851
- }]]), Lr = X("chevron-left", [["path", {
1865
+ }]]), Rr = X("chevron-left", [["path", {
1852
1866
  d: "m15 18-6-6 6-6",
1853
1867
  key: "1wnfg3"
1854
- }]]), Rr = X("chevron-right", [["path", {
1868
+ }]]), zr = X("chevron-right", [["path", {
1855
1869
  d: "m9 18 6-6-6-6",
1856
1870
  key: "mthhwq"
1857
- }]]), zr = X("chevron-up", [["path", {
1871
+ }]]), Br = X("chevron-up", [["path", {
1858
1872
  d: "m18 15-6-6-6 6",
1859
1873
  key: "153udz"
1860
- }]]), Br = X("circle-alert", [
1874
+ }]]), Vr = X("circle-alert", [
1861
1875
  ["circle", {
1862
1876
  cx: "12",
1863
1877
  cy: "12",
@@ -1878,7 +1892,7 @@ var Mr = ({ name: e, iconNode: t, absoluteStrokeWidth: n, "absolute-stroke-width
1878
1892
  y2: "16",
1879
1893
  key: "4dfq90"
1880
1894
  }]
1881
- ]), Vr = X("circle-check", [["circle", {
1895
+ ]), Hr = X("circle-check", [["circle", {
1882
1896
  cx: "12",
1883
1897
  cy: "12",
1884
1898
  r: "10",
@@ -1886,7 +1900,7 @@ var Mr = ({ name: e, iconNode: t, absoluteStrokeWidth: n, "absolute-stroke-width
1886
1900
  }], ["path", {
1887
1901
  d: "m9 12 2 2 4-4",
1888
1902
  key: "dzmm74"
1889
- }]]), Hr = X("clock", [["circle", {
1903
+ }]]), Ur = X("clock", [["circle", {
1890
1904
  cx: "12",
1891
1905
  cy: "12",
1892
1906
  r: "10",
@@ -1894,13 +1908,13 @@ var Mr = ({ name: e, iconNode: t, absoluteStrokeWidth: n, "absolute-stroke-width
1894
1908
  }], ["path", {
1895
1909
  d: "M12 6v6l4 2",
1896
1910
  key: "mmk7yg"
1897
- }]]), Ur = X("code", [["path", {
1911
+ }]]), Wr = X("code", [["path", {
1898
1912
  d: "m16 18 6-6-6-6",
1899
1913
  key: "eg8j8"
1900
1914
  }], ["path", {
1901
1915
  d: "m8 6-6 6 6 6",
1902
1916
  key: "ppft3o"
1903
- }]]), Wr = X("copy", [["rect", {
1917
+ }]]), Gr = X("copy", [["rect", {
1904
1918
  width: "14",
1905
1919
  height: "14",
1906
1920
  x: "8",
@@ -1911,7 +1925,7 @@ var Mr = ({ name: e, iconNode: t, absoluteStrokeWidth: n, "absolute-stroke-width
1911
1925
  }], ["path", {
1912
1926
  d: "M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2",
1913
1927
  key: "zix9uf"
1914
- }]]), Gr = X("eye-off", [
1928
+ }]]), Kr = X("eye-off", [
1915
1929
  ["path", {
1916
1930
  d: "M10.733 5.076a10.744 10.744 0 0 1 11.205 6.575 1 1 0 0 1 0 .696 10.747 10.747 0 0 1-1.444 2.49",
1917
1931
  key: "ct8e1f"
@@ -1928,7 +1942,7 @@ var Mr = ({ name: e, iconNode: t, absoluteStrokeWidth: n, "absolute-stroke-width
1928
1942
  d: "m2 2 20 20",
1929
1943
  key: "1ooewy"
1930
1944
  }]
1931
- ]), Kr = X("eye", [["path", {
1945
+ ]), qr = X("eye", [["path", {
1932
1946
  d: "M2.062 12.348a1 1 0 0 1 0-.696 10.75 10.75 0 0 1 19.876 0 1 1 0 0 1 0 .696 10.75 10.75 0 0 1-19.876 0",
1933
1947
  key: "1nclc0"
1934
1948
  }], ["circle", {
@@ -1936,7 +1950,7 @@ var Mr = ({ name: e, iconNode: t, absoluteStrokeWidth: n, "absolute-stroke-width
1936
1950
  cy: "12",
1937
1951
  r: "3",
1938
1952
  key: "1v7zrd"
1939
- }]]), qr = X("file-image", [
1953
+ }]]), Jr = X("file-image", [
1940
1954
  ["path", {
1941
1955
  d: "M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z",
1942
1956
  key: "1oefj6"
@@ -1955,7 +1969,7 @@ var Mr = ({ name: e, iconNode: t, absoluteStrokeWidth: n, "absolute-stroke-width
1955
1969
  d: "m20 17-1.296-1.296a2.41 2.41 0 0 0-3.408 0L9 22",
1956
1970
  key: "wt3hpn"
1957
1971
  }]
1958
- ]), Jr = X("file-text", [
1972
+ ]), Yr = X("file-text", [
1959
1973
  ["path", {
1960
1974
  d: "M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z",
1961
1975
  key: "1oefj6"
@@ -1976,10 +1990,10 @@ var Mr = ({ name: e, iconNode: t, absoluteStrokeWidth: n, "absolute-stroke-width
1976
1990
  d: "M16 17H8",
1977
1991
  key: "z1uh3a"
1978
1992
  }]
1979
- ]), Yr = X("funnel", [["path", {
1993
+ ]), Xr = X("funnel", [["path", {
1980
1994
  d: "M10 20a1 1 0 0 0 .553.895l2 1A1 1 0 0 0 14 21v-7a2 2 0 0 1 .517-1.341L21.74 4.67A1 1 0 0 0 21 3H3a1 1 0 0 0-.742 1.67l7.225 7.989A2 2 0 0 1 10 14z",
1981
1995
  key: "sc7q7i"
1982
- }]]), Xr = X("grip-vertical", [
1996
+ }]]), Zr = X("grip-vertical", [
1983
1997
  ["circle", {
1984
1998
  cx: "9",
1985
1999
  cy: "12",
@@ -2016,7 +2030,7 @@ var Mr = ({ name: e, iconNode: t, absoluteStrokeWidth: n, "absolute-stroke-width
2016
2030
  r: "1",
2017
2031
  key: "f4zoj3"
2018
2032
  }]
2019
- ]), Zr = X("image-up", [
2033
+ ]), Qr = X("image-up", [
2020
2034
  ["path", {
2021
2035
  d: "M10.3 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2v10l-3.1-3.1a2 2 0 0 0-2.814.014L6 21",
2022
2036
  key: "9csbqa"
@@ -2035,7 +2049,7 @@ var Mr = ({ name: e, iconNode: t, absoluteStrokeWidth: n, "absolute-stroke-width
2035
2049
  r: "2",
2036
2050
  key: "af1f0g"
2037
2051
  }]
2038
- ]), Qr = X("image", [
2052
+ ]), $r = X("image", [
2039
2053
  ["rect", {
2040
2054
  width: "18",
2041
2055
  height: "18",
@@ -2055,7 +2069,7 @@ var Mr = ({ name: e, iconNode: t, absoluteStrokeWidth: n, "absolute-stroke-width
2055
2069
  d: "m21 15-3.086-3.086a2 2 0 0 0-2.828 0L6 21",
2056
2070
  key: "1xmnt7"
2057
2071
  }]
2058
- ]), $r = X("info", [
2072
+ ]), ei = X("info", [
2059
2073
  ["circle", {
2060
2074
  cx: "12",
2061
2075
  cy: "12",
@@ -2070,31 +2084,31 @@ var Mr = ({ name: e, iconNode: t, absoluteStrokeWidth: n, "absolute-stroke-width
2070
2084
  d: "M12 8h.01",
2071
2085
  key: "e9boi3"
2072
2086
  }]
2073
- ]), ei = X("loader-circle", [["path", {
2087
+ ]), ti = X("loader-circle", [["path", {
2074
2088
  d: "M21 12a9 9 0 1 1-6.219-8.56",
2075
2089
  key: "13zald"
2076
- }]]), ti = X("message-circle", [["path", {
2090
+ }]]), ni = X("message-circle", [["path", {
2077
2091
  d: "M2.992 16.342a2 2 0 0 1 .094 1.167l-1.065 3.29a1 1 0 0 0 1.236 1.168l3.413-.998a2 2 0 0 1 1.099.092 10 10 0 1 0-4.777-4.719",
2078
2092
  key: "1sd12s"
2079
- }]]), ni = X("navigation", [["polygon", {
2093
+ }]]), ri = X("navigation", [["polygon", {
2080
2094
  points: "3 11 22 2 13 21 11 13 3 11",
2081
2095
  key: "1ltx0t"
2082
- }]]), ri = X("pencil", [["path", {
2096
+ }]]), ii = X("pencil", [["path", {
2083
2097
  d: "M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z",
2084
2098
  key: "1a8usu"
2085
2099
  }], ["path", {
2086
2100
  d: "m15 5 4 4",
2087
2101
  key: "1mk7zo"
2088
- }]]), ii = X("puzzle", [["path", {
2102
+ }]]), ai = X("puzzle", [["path", {
2089
2103
  d: "M15.39 4.39a1 1 0 0 0 1.68-.474 2.5 2.5 0 1 1 3.014 3.015 1 1 0 0 0-.474 1.68l1.683 1.682a2.414 2.414 0 0 1 0 3.414L19.61 15.39a1 1 0 0 1-1.68-.474 2.5 2.5 0 1 0-3.014 3.015 1 1 0 0 1 .474 1.68l-1.683 1.682a2.414 2.414 0 0 1-3.414 0L8.61 19.61a1 1 0 0 0-1.68.474 2.5 2.5 0 1 1-3.014-3.015 1 1 0 0 0 .474-1.68l-1.683-1.682a2.414 2.414 0 0 1 0-3.414L4.39 8.61a1 1 0 0 1 1.68.474 2.5 2.5 0 1 0 3.014-3.015 1 1 0 0 1-.474-1.68l1.683-1.682a2.414 2.414 0 0 1 3.414 0z",
2090
2104
  key: "w46dr5"
2091
- }]]), ai = X("redo-2", [["path", {
2105
+ }]]), oi = X("redo-2", [["path", {
2092
2106
  d: "m15 14 5-5-5-5",
2093
2107
  key: "12vg1m"
2094
2108
  }], ["path", {
2095
2109
  d: "M20 9H9.5A5.5 5.5 0 0 0 4 14.5A5.5 5.5 0 0 0 9.5 20H13",
2096
2110
  key: "6uklza"
2097
- }]]), oi = X("refresh-cw", [
2111
+ }]]), si = X("refresh-cw", [
2098
2112
  ["path", {
2099
2113
  d: "M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8",
2100
2114
  key: "v9h5vc"
@@ -2111,19 +2125,19 @@ var Mr = ({ name: e, iconNode: t, absoluteStrokeWidth: n, "absolute-stroke-width
2111
2125
  d: "M8 16H3v5",
2112
2126
  key: "1cv678"
2113
2127
  }]
2114
- ]), si = X("reply", [["path", {
2128
+ ]), ci = X("reply", [["path", {
2115
2129
  d: "M20 18v-2a4 4 0 0 0-4-4H4",
2116
2130
  key: "5vmcpk"
2117
2131
  }], ["path", {
2118
2132
  d: "m9 17-5-5 5-5",
2119
2133
  key: "nvlc11"
2120
- }]]), ci = X("send", [["path", {
2134
+ }]]), li = X("send", [["path", {
2121
2135
  d: "M14.536 21.686a.5.5 0 0 0 .937-.024l6.5-19a.496.496 0 0 0-.635-.635l-19 6.5a.5.5 0 0 0-.024.937l7.93 3.18a2 2 0 0 1 1.112 1.11z",
2122
2136
  key: "1ffxy3"
2123
2137
  }], ["path", {
2124
2138
  d: "m21.854 2.147-10.94 10.939",
2125
2139
  key: "12cjpa"
2126
- }]]), li = X("share-2", [
2140
+ }]]), ui = X("share-2", [
2127
2141
  ["circle", {
2128
2142
  cx: "18",
2129
2143
  cy: "5",
@@ -2156,13 +2170,13 @@ var Mr = ({ name: e, iconNode: t, absoluteStrokeWidth: n, "absolute-stroke-width
2156
2170
  y2: "10.49",
2157
2171
  key: "1n3mei"
2158
2172
  }]
2159
- ]), ui = X("shield-check", [["path", {
2173
+ ]), di = X("shield-check", [["path", {
2160
2174
  d: "M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z",
2161
2175
  key: "oel41y"
2162
2176
  }], ["path", {
2163
2177
  d: "m9 12 2 2 4-4",
2164
2178
  key: "dzmm74"
2165
- }]]), di = X("shield-x", [
2179
+ }]]), fi = X("shield-x", [
2166
2180
  ["path", {
2167
2181
  d: "M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z",
2168
2182
  key: "oel41y"
@@ -2175,7 +2189,7 @@ var Mr = ({ name: e, iconNode: t, absoluteStrokeWidth: n, "absolute-stroke-width
2175
2189
  d: "m9.5 9.5 5 5",
2176
2190
  key: "18nt4w"
2177
2191
  }]
2178
- ]), fi = X("sparkles", [
2192
+ ]), pi = X("sparkles", [
2179
2193
  ["path", {
2180
2194
  d: "M11.017 2.814a1 1 0 0 1 1.966 0l1.051 5.558a2 2 0 0 0 1.594 1.594l5.558 1.051a1 1 0 0 1 0 1.966l-5.558 1.051a2 2 0 0 0-1.594 1.594l-1.051 5.558a1 1 0 0 1-1.966 0l-1.051-5.558a2 2 0 0 0-1.594-1.594l-5.558-1.051a1 1 0 0 1 0-1.966l5.558-1.051a2 2 0 0 0 1.594-1.594z",
2181
2195
  key: "1s2grr"
@@ -2194,7 +2208,7 @@ var Mr = ({ name: e, iconNode: t, absoluteStrokeWidth: n, "absolute-stroke-width
2194
2208
  r: "2",
2195
2209
  key: "6kqj1y"
2196
2210
  }]
2197
- ]), pi = X("table", [
2211
+ ]), mi = X("table", [
2198
2212
  ["path", {
2199
2213
  d: "M12 3v18",
2200
2214
  key: "108xh3"
@@ -2215,7 +2229,7 @@ var Mr = ({ name: e, iconNode: t, absoluteStrokeWidth: n, "absolute-stroke-width
2215
2229
  d: "M3 15h18",
2216
2230
  key: "5xshup"
2217
2231
  }]
2218
- ]), mi = X("trash-2", [
2232
+ ]), hi = X("trash-2", [
2219
2233
  ["path", {
2220
2234
  d: "M10 11v6",
2221
2235
  key: "nco0om"
@@ -2236,7 +2250,7 @@ var Mr = ({ name: e, iconNode: t, absoluteStrokeWidth: n, "absolute-stroke-width
2236
2250
  d: "M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2",
2237
2251
  key: "e791ji"
2238
2252
  }]
2239
- ]), hi = X("triangle-alert", [
2253
+ ]), gi = X("triangle-alert", [
2240
2254
  ["path", {
2241
2255
  d: "m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3",
2242
2256
  key: "wmoenq"
@@ -2249,13 +2263,13 @@ var Mr = ({ name: e, iconNode: t, absoluteStrokeWidth: n, "absolute-stroke-width
2249
2263
  d: "M12 17h.01",
2250
2264
  key: "p32p05"
2251
2265
  }]
2252
- ]), gi = X("undo-2", [["path", {
2266
+ ]), _i = X("undo-2", [["path", {
2253
2267
  d: "M9 14 4 9l5-5",
2254
2268
  key: "102s5s"
2255
2269
  }], ["path", {
2256
2270
  d: "M4 9h10.5a5.5 5.5 0 0 1 5.5 5.5a5.5 5.5 0 0 1-5.5 5.5H11",
2257
2271
  key: "f3b9sd"
2258
- }]]), _i = X("upload", [
2272
+ }]]), vi = X("upload", [
2259
2273
  ["path", {
2260
2274
  d: "M12 3v12",
2261
2275
  key: "1x0j5s"
@@ -2268,7 +2282,7 @@ var Mr = ({ name: e, iconNode: t, absoluteStrokeWidth: n, "absolute-stroke-width
2268
2282
  d: "M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4",
2269
2283
  key: "ih7n3h"
2270
2284
  }]
2271
- ]), vi = X("video", [["path", {
2285
+ ]), yi = X("video", [["path", {
2272
2286
  d: "m16 13 5.223 3.482a.5.5 0 0 0 .777-.416V7.87a.5.5 0 0 0-.752-.432L16 10.5",
2273
2287
  key: "ftymec"
2274
2288
  }], ["rect", {
@@ -2278,20 +2292,20 @@ var Mr = ({ name: e, iconNode: t, absoluteStrokeWidth: n, "absolute-stroke-width
2278
2292
  height: "12",
2279
2293
  rx: "2",
2280
2294
  key: "158x01"
2281
- }]]), yi = X("x", [["path", {
2295
+ }]]), bi = X("x", [["path", {
2282
2296
  d: "M18 6 6 18",
2283
2297
  key: "1bl5f8"
2284
2298
  }], ["path", {
2285
2299
  d: "m6 6 12 12",
2286
2300
  key: "d8bk6v"
2287
- }]]), bi = X("zap", [["path", {
2301
+ }]]), xi = X("zap", [["path", {
2288
2302
  d: "M4 14a1 1 0 0 1-.78-1.63l9.9-10.2a.5.5 0 0 1 .86.46l-1.92 6.02A1 1 0 0 0 13 10h7a1 1 0 0 1 .78 1.63l-9.9 10.2a.5.5 0 0 1-.86-.46l1.92-6.02A1 1 0 0 0 11 14z",
2289
2303
  key: "1xq2db"
2290
- }]]), xi = ["innerHTML"], Si = [
2304
+ }]]), Si = ["innerHTML"], Ci = [
2291
2305
  "src",
2292
2306
  "width",
2293
2307
  "height"
2294
- ], Ci = /* @__PURE__ */ B({
2308
+ ], wi = /* @__PURE__ */ B({
2295
2309
  __name: "CustomBlockIcon",
2296
2310
  props: {
2297
2311
  icon: {},
@@ -2307,40 +2321,40 @@ var Mr = ({ name: e, iconNode: t, absoluteStrokeWidth: n, "absolute-stroke-width
2307
2321
  height: `${n.value}px`
2308
2322
  }),
2309
2323
  innerHTML: e.icon
2310
- }, null, 12, xi)) : i.value ? (f(), A("img", {
2324
+ }, null, 12, Si)) : i.value ? (f(), A("img", {
2311
2325
  key: 1,
2312
2326
  src: e.icon,
2313
2327
  width: n.value,
2314
2328
  height: n.value,
2315
2329
  class: "tpl:inline-block",
2316
2330
  alt: ""
2317
- }, null, 8, Si)) : (f(), P(M(Pr), {
2331
+ }, null, 8, Ci)) : (f(), P(M(Fr), {
2318
2332
  key: 2,
2319
2333
  size: n.value,
2320
2334
  "stroke-width": 1.5
2321
2335
  }, null, 8, ["size"]));
2322
2336
  }
2323
- }), wi = (e, t) => {
2337
+ }), Ti = (e, t) => {
2324
2338
  let n = e.__vccOpts || e;
2325
2339
  for (let [e, r] of t) n[e] = r;
2326
2340
  return n;
2327
- }, Ti = {}, Ei = { class: "tpl-loading-track" };
2328
- function Di(e, t) {
2329
- return f(), A("div", Ei);
2341
+ }, Ei = {}, Di = { class: "tpl-loading-track" };
2342
+ function Oi(e, t) {
2343
+ return f(), A("div", Di);
2330
2344
  }
2331
- var Oi = /* @__PURE__ */ wi(Ti, [["render", Di], ["__scopeId", "data-v-1ed538ec"]]);
2345
+ var ki = /* @__PURE__ */ Ti(Ei, [["render", Oi], ["__scopeId", "data-v-1ed538ec"]]);
2332
2346
  //#endregion
2333
2347
  //#region src/composables/useEditorRoot.ts
2334
- function ki() {
2348
+ function Ai() {
2335
2349
  return v($n, document) ?? document;
2336
2350
  }
2337
2351
  //#endregion
2338
2352
  //#region src/composables/useFocusTrap.ts
2339
- var Ai = "a[href], button:not([disabled]), input:not([disabled]), select:not([disabled]), textarea:not([disabled]), [tabindex]:not([tabindex=\"-1\"])";
2340
- function ji(e, t) {
2341
- let n = ki(), r = null, i = null, a = null;
2353
+ var ji = "a[href], button:not([disabled]), input:not([disabled]), select:not([disabled]), textarea:not([disabled]), [tabindex]:not([tabindex=\"-1\"])";
2354
+ function Mi(e, t) {
2355
+ let n = Ai(), r = null, i = null, a = null;
2342
2356
  function o() {
2343
- return e.value ? Array.from(e.value.querySelectorAll(Ai)).filter((e) => e.offsetParent !== null) : [];
2357
+ return e.value ? Array.from(e.value.querySelectorAll(ji)).filter((e) => e.offsetParent !== null) : [];
2344
2358
  }
2345
2359
  function s(e) {
2346
2360
  if (e.key !== "Tab") return;
@@ -2370,18 +2384,18 @@ function ji(e, t) {
2370
2384
  }
2371
2385
  //#endregion
2372
2386
  //#region src/composables/useCloudI18n.ts
2373
- function Mi(e, t) {
2387
+ function Ni(e, t) {
2374
2388
  return e.replace(/\{(\w+)\}/g, (e, n) => n in t ? String(t[n]) : `{${n}}`);
2375
2389
  }
2376
- function Ni(e) {
2390
+ function Pi(e) {
2377
2391
  let t = e ?? v(or, null);
2378
2392
  return {
2379
2393
  t: t ? u(t) ? t.value : t : null,
2380
- format: Mi
2394
+ format: Ni
2381
2395
  };
2382
2396
  }
2383
- function Pi(e) {
2384
- let { t, format: n } = Ni(e);
2397
+ function Fi(e) {
2398
+ let { t, format: n } = Pi(e);
2385
2399
  if (!t) throw Error("useCloudI18nStrict() requires a cloud translations provider. Ensure the component is a descendant of CloudEditor.");
2386
2400
  return {
2387
2401
  t,
@@ -2390,7 +2404,7 @@ function Pi(e) {
2390
2404
  }
2391
2405
  //#endregion
2392
2406
  //#region src/composables/useMergeTag.ts
2393
- function Fi() {
2407
+ function Ii() {
2394
2408
  let e = v(Un, []), t = v(Wn, lt.liquid), n = v(Gn, null), r = v(Kn, !0), i = C(!1);
2395
2409
  function a(e) {
2396
2410
  return mt(e, t);
@@ -2420,7 +2434,7 @@ function Fi() {
2420
2434
  }
2421
2435
  //#endregion
2422
2436
  //#region src/composables/useEmoji.ts
2423
- function Ii() {
2437
+ function Li() {
2424
2438
  let [e, t] = an(!1), r = n([]), i = !1;
2425
2439
  l(() => {
2426
2440
  i = !0;
@@ -2446,7 +2460,7 @@ function Ii() {
2446
2460
  }
2447
2461
  //#endregion
2448
2462
  //#region src/composables/useDragDrop.ts
2449
- function Li(e) {
2463
+ function Ri(e) {
2450
2464
  let { onBlockMove: t, onBlockAdd: n } = e, r = C(!1), i = C(null), a = C(null);
2451
2465
  function o(e) {
2452
2466
  r.value = !0, i.value = e;
@@ -2496,7 +2510,7 @@ function Li(e) {
2496
2510
  }
2497
2511
  //#endregion
2498
2512
  //#region src/composables/useFonts.ts
2499
- var Ri = [
2513
+ var zi = [
2500
2514
  {
2501
2515
  value: "Arial",
2502
2516
  label: "Arial"
@@ -2525,7 +2539,7 @@ var Ri = [
2525
2539
  value: "Courier New",
2526
2540
  label: "Courier New"
2527
2541
  }
2528
- ], zi = {
2542
+ ], Bi = {
2529
2543
  arial: "Arial, sans-serif",
2530
2544
  helvetica: "Helvetica, sans-serif",
2531
2545
  georgia: "Georgia, serif",
@@ -2533,14 +2547,14 @@ var Ri = [
2533
2547
  verdana: "Verdana, sans-serif",
2534
2548
  "trebuchet ms": "'Trebuchet MS', sans-serif",
2535
2549
  "courier new": "'Courier New', monospace"
2536
- }, Bi = "Arial, sans-serif";
2537
- function Vi(e) {
2538
- let t = C(e?.customFonts ?? []), n = C(!0), r = C(!1), i = k(() => e?.defaultFallback ?? Bi);
2550
+ }, Vi = "Arial, sans-serif";
2551
+ function Hi(e) {
2552
+ let t = C(e?.customFonts ?? []), n = C(!0), r = C(!1), i = k(() => e?.defaultFallback ?? Vi);
2539
2553
  function a(e) {
2540
2554
  n.value = e;
2541
2555
  }
2542
2556
  let o = k(() => {
2543
- let e = [...Ri];
2557
+ let e = [...zi];
2544
2558
  if (!n.value) return e.sort((e, t) => e.label.localeCompare(t.label));
2545
2559
  let r = t.value.map((e) => ({
2546
2560
  value: e.name,
@@ -2553,23 +2567,23 @@ function Vi(e) {
2553
2567
  return o.value.some((t) => t.label.toLowerCase() === e.toLowerCase() || t.value.toLowerCase().startsWith(e.toLowerCase()));
2554
2568
  }
2555
2569
  function u(e) {
2556
- return Ri.some((t) => t.label.toLowerCase() === e.toLowerCase() || t.value.toLowerCase().startsWith(e.toLowerCase()));
2570
+ return zi.some((t) => t.label.toLowerCase() === e.toLowerCase() || t.value.toLowerCase().startsWith(e.toLowerCase()));
2557
2571
  }
2558
2572
  function d() {
2559
2573
  if (e?.defaultFont) {
2560
- if (!n.value && !u(e.defaultFont)) return Bi;
2574
+ if (!n.value && !u(e.defaultFont)) return Vi;
2561
2575
  if (c(e.defaultFont)) {
2562
2576
  let t = o.value.find((t) => t.label.toLowerCase() === e.defaultFont.toLowerCase() || t.value.toLowerCase().startsWith(e.defaultFont.toLowerCase()));
2563
2577
  if (t) return t.value;
2564
2578
  }
2565
2579
  }
2566
- return Bi;
2580
+ return Vi;
2567
2581
  }
2568
2582
  let f = k(() => d());
2569
2583
  function p(e) {
2570
2584
  if (!e) return i.value;
2571
2585
  let n = t.value.find((t) => t.name.toLowerCase() === e.toLowerCase());
2572
- return n ? `'${n.name}', ${n.fallback ?? i.value}` : zi[e.toLowerCase()] || (e.includes(",") ? e : `${e}, ${i.value}`);
2586
+ return n ? `'${n.name}', ${n.fallback ?? i.value}` : Bi[e.toLowerCase()] || (e.includes(",") ? e : `${e}, ${i.value}`);
2573
2587
  }
2574
2588
  let m = [], h = !1;
2575
2589
  async function g() {
@@ -2585,7 +2599,7 @@ function Vi(e) {
2585
2599
  t.onload = () => n(), t.onerror = () => r(/* @__PURE__ */ Error(`Failed to load font: ${e.name}`)), document.head.appendChild(t);
2586
2600
  });
2587
2601
  } catch (t) {
2588
- hr.warn(`Failed to load custom font "${e.name}":`, t);
2602
+ gr.warn(`Failed to load custom font "${e.name}":`, t);
2589
2603
  }
2590
2604
  });
2591
2605
  await Promise.allSettled(e), !h && (r.value = !0);
@@ -2612,9 +2626,9 @@ function Vi(e) {
2612
2626
  }
2613
2627
  //#endregion
2614
2628
  //#region src/composables/useRichTextLinkDialog.ts
2615
- function Hi(e) {
2629
+ function Ui(e) {
2616
2630
  let t = C(!1), n = C(""), r = C(null);
2617
- ji(r, t);
2631
+ Mi(r, t);
2618
2632
  function i() {
2619
2633
  n.value = e.value?.getAttributes("link").href || "", t.value = !0;
2620
2634
  }
@@ -2665,8 +2679,8 @@ function Hi(e) {
2665
2679
  }
2666
2680
  //#endregion
2667
2681
  //#region src/composables/useRichTextEditor.ts
2668
- function Ui(e) {
2669
- let t = v(Nn, null), { mergeTags: r, canRequestMergeTag: i, isRequesting: a, requestMergeTag: o, syntax: s, autocomplete: c } = Fi(), l = v(Mn, null), d = (u(l) ? l.value : l)?.mergeTag?.suggestionEmpty ?? "No matching merge tags", f = dt(s), p = n(null), { showLinkDialog: m, linkUrl: h, linkDialogRef: g, openLinkDialog: _, insertLink: y, removeLink: b, closeLinkDialog: x, handleLinkKeydown: S } = Hi(p), { start: w, stop: T } = rn(() => p.value?.commands.focus("end"), 0, { immediate: !1 }), E = n(null), D = C(!0), O = C(null), ee = !1;
2682
+ function Wi(e) {
2683
+ let t = v(Nn, null), { mergeTags: r, canRequestMergeTag: i, isRequesting: a, requestMergeTag: o, syntax: s, autocomplete: c } = Ii(), l = v(Mn, null), d = (u(l) ? l.value : l)?.mergeTag?.suggestionEmpty ?? "No matching merge tags", f = dt(s), p = n(null), { showLinkDialog: m, linkUrl: h, linkDialogRef: g, openLinkDialog: _, insertLink: y, removeLink: b, closeLinkDialog: x, handleLinkKeydown: S } = Ui(p), { start: w, stop: T } = rn(() => p.value?.commands.focus("end"), 0, { immediate: !1 }), E = n(null), D = C(!0), O = C(null), ee = !1;
2670
2684
  async function te() {
2671
2685
  O.value = null, D.value = !0;
2672
2686
  try {
@@ -2696,7 +2710,7 @@ function Ui(e) {
2696
2710
  p.value = l, D.value = !1, w();
2697
2711
  } catch (t) {
2698
2712
  if (ee) return;
2699
- hr.error(`[${e.editorName ?? "RichTextEditor"}] Failed to initialize TipTap editor:`, t), O.value = t instanceof Error ? t.message : "Failed to load editor", D.value = !1;
2713
+ gr.error(`[${e.editorName ?? "RichTextEditor"}] Failed to initialize TipTap editor:`, t), O.value = t instanceof Error ? t.message : "Failed to load editor", D.value = !1;
2700
2714
  }
2701
2715
  }
2702
2716
  function k() {
@@ -2744,20 +2758,20 @@ function Ui(e) {
2744
2758
  }
2745
2759
  //#endregion
2746
2760
  //#region src/components/blocks/CustomBlock.vue?vue&type=script&setup=true&lang.ts
2747
- var Wi = { class: "tpl:w-full" }, Gi = {
2761
+ var Gi = { class: "tpl:w-full" }, Ki = {
2748
2762
  key: 0,
2749
2763
  class: "tpl:flex tpl:min-h-[80px] tpl:flex-col tpl:items-center tpl:justify-center tpl:gap-2 tpl:rounded tpl:border tpl:border-dashed tpl:py-4 tpl:border-[var(--tpl-warning)] tpl:bg-[var(--tpl-warning-light)]"
2750
- }, Ki = { class: "tpl:text-sm tpl:text-[var(--tpl-text-muted)]" }, qi = {
2764
+ }, qi = { class: "tpl:text-sm tpl:text-[var(--tpl-text-muted)]" }, Ji = {
2751
2765
  key: 1,
2752
2766
  class: "tpl:flex tpl:min-h-[80px] tpl:flex-col tpl:items-center tpl:justify-center tpl:gap-2 tpl:rounded tpl:border tpl:border-dashed tpl:py-4 tpl:border-[var(--tpl-danger)] tpl:bg-[var(--tpl-danger-light)]"
2753
- }, Ji = { class: "tpl:text-sm tpl:text-[var(--tpl-text-muted)]" }, Yi = {
2767
+ }, Yi = { class: "tpl:text-sm tpl:text-[var(--tpl-text-muted)]" }, Xi = {
2754
2768
  key: 2,
2755
2769
  class: "tpl:relative"
2756
- }, Xi = ["innerHTML"], Zi = {
2770
+ }, Zi = ["innerHTML"], Qi = {
2757
2771
  key: 0,
2758
2772
  class: "tpl:absolute tpl:inset-0 tpl:flex tpl:flex-col tpl:items-center tpl:justify-center tpl:gap-3 tpl:rounded tpl:backdrop-blur-[2px]",
2759
2773
  style: { "background-color": "color-mix(in srgb, var(--tpl-bg) 80%, transparent)" }
2760
- }, Qi = /* @__PURE__ */ B({
2774
+ }, $i = /* @__PURE__ */ B({
2761
2775
  __name: "CustomBlock",
2762
2776
  props: {
2763
2777
  block: {},
@@ -2791,10 +2805,10 @@ var Wi = { class: "tpl:w-full" }, Gi = {
2791
2805
  g();
2792
2806
  }), H(() => n.block.fieldValues, () => {
2793
2807
  _();
2794
- }, { deep: !0 }), (e, t) => (f(), A("div", Wi, [u.value ? c.value ? (f(), A("div", qi, [V(M(hi), {
2808
+ }, { deep: !0 }), (e, t) => (f(), A("div", Gi, [u.value ? c.value ? (f(), A("div", Ji, [V(M(gi), {
2795
2809
  size: 24,
2796
2810
  class: "tpl:text-[var(--tpl-danger)]"
2797
- }), I("span", Ji, O(M(a).customBlocks.renderError), 1)])) : (f(), A("div", Yi, [I("div", { innerHTML: s.value }, null, 8, Xi), M(h) && M(m) ? (f(), A("div", Zi, [M(d) ? (f(), P(Oi, {
2811
+ }), I("span", Yi, O(M(a).customBlocks.renderError), 1)])) : (f(), A("div", Xi, [I("div", { innerHTML: s.value }, null, 8, Zi), M(h) && M(m) ? (f(), A("div", Qi, [M(d) ? (f(), P(ki, {
2798
2812
  key: 1,
2799
2813
  class: "tpl:w-48"
2800
2814
  })) : (f(), A("button", {
@@ -2802,16 +2816,16 @@ var Wi = { class: "tpl:w-full" }, Gi = {
2802
2816
  type: "button",
2803
2817
  class: "tpl:flex tpl:cursor-pointer tpl:items-center tpl:gap-2 tpl:rounded-[var(--tpl-radius-sm)] tpl:border tpl:border-[var(--tpl-border)] tpl:px-4 tpl:py-2 tpl:text-sm tpl:font-semibold tpl:shadow-sm tpl:transition-all tpl:duration-150 hover:tpl:border-[var(--tpl-primary)] hover:tpl:shadow-md tpl:bg-[var(--tpl-primary-light)] tpl:text-[var(--tpl-primary-hover)]",
2804
2818
  onClick: t[0] ||= N((...e) => M(p) && M(p)(...e), ["stop"])
2805
- }, [l.value?.icon ? (f(), P(Ci, {
2819
+ }, [l.value?.icon ? (f(), P(wi, {
2806
2820
  key: 0,
2807
2821
  icon: l.value.icon,
2808
2822
  size: 16
2809
- }, null, 8, ["icon"])) : j("", !0), z(" " + O(l.value?.dataSource?.label || M(a).customBlocks.dataSource.fetchButton), 1)]))])) : j("", !0)])) : (f(), A("div", Gi, [V(M(ii), {
2823
+ }, null, 8, ["icon"])) : j("", !0), z(" " + O(l.value?.dataSource?.label || M(a).customBlocks.dataSource.fetchButton), 1)]))])) : j("", !0)])) : (f(), A("div", Ki, [V(M(ai), {
2810
2824
  size: 24,
2811
2825
  class: "tpl:text-[var(--tpl-warning)]"
2812
- }), I("span", Ki, O(M(a).customBlocks.definitionNotFound), 1)]))]));
2826
+ }), I("span", qi, O(M(a).customBlocks.definitionNotFound), 1)]))]));
2813
2827
  }
2814
- }), $i = { class: "tpl:w-full" }, ea = /* @__PURE__ */ B({
2828
+ }), ea = { class: "tpl:w-full" }, ta = /* @__PURE__ */ B({
2815
2829
  __name: "DividerBlock",
2816
2830
  props: {
2817
2831
  block: {},
@@ -2823,18 +2837,18 @@ var Wi = { class: "tpl:w-full" }, Gi = {
2823
2837
  width: t.block.width === "full" ? "100%" : `${t.block.width}px`,
2824
2838
  margin: t.block.width === "full" ? "0" : "0 auto"
2825
2839
  }));
2826
- return (e, t) => (f(), A("div", $i, [I("hr", {
2840
+ return (e, t) => (f(), A("div", ea, [I("hr", {
2827
2841
  class: "tpl:m-0 tpl:border-none",
2828
2842
  style: L(n.value)
2829
2843
  }, null, 4)]));
2830
2844
  }
2831
- }), ta = { class: "tpl:w-full" }, na = { class: "tpl:flex tpl:min-h-[80px] tpl:flex-col tpl:items-center tpl:justify-center tpl:gap-2 tpl:rounded tpl:border tpl:border-dashed tpl:py-4 tpl:border-[var(--tpl-border)] tpl:bg-[var(--tpl-bg-hover)]" }, ra = {
2845
+ }), na = { class: "tpl:w-full" }, ra = { class: "tpl:flex tpl:min-h-[80px] tpl:flex-col tpl:items-center tpl:justify-center tpl:gap-2 tpl:rounded tpl:border tpl:border-dashed tpl:py-4 tpl:border-[var(--tpl-border)] tpl:bg-[var(--tpl-bg-hover)]" }, ia = {
2832
2846
  key: 0,
2833
2847
  class: "tpl:text-sm tpl:text-[var(--tpl-text-muted)]"
2834
- }, ia = {
2848
+ }, aa = {
2835
2849
  key: 1,
2836
2850
  class: "tpl:text-sm tpl:text-[var(--tpl-text-dim)]"
2837
- }, aa = /* @__PURE__ */ B({
2851
+ }, oa = /* @__PURE__ */ B({
2838
2852
  __name: "HtmlBlock",
2839
2853
  props: {
2840
2854
  block: {},
@@ -2842,15 +2856,15 @@ var Wi = { class: "tpl:w-full" }, Gi = {
2842
2856
  },
2843
2857
  setup(e) {
2844
2858
  let t = e, { t: n } = Y(), r = k(() => t.block.content.trim().length > 0);
2845
- return (e, t) => (f(), A("div", ta, [I("div", na, [V(M(Ur), {
2859
+ return (e, t) => (f(), A("div", na, [I("div", ra, [V(M(Wr), {
2846
2860
  size: 24,
2847
2861
  class: "tpl:text-[var(--tpl-text-dim)]"
2848
- }), r.value ? (f(), A("span", ra, O(M(n).html.preview), 1)) : (f(), A("span", ia, O(M(n).html.empty), 1))])]));
2862
+ }), r.value ? (f(), A("span", ia, O(M(n).html.preview), 1)) : (f(), A("span", aa, O(M(n).html.empty), 1))])]));
2849
2863
  }
2850
2864
  });
2851
2865
  //#endregion
2852
2866
  //#region src/composables/useAliveFlag.ts
2853
- function oa() {
2867
+ function sa() {
2854
2868
  let e = { alive: !0 };
2855
2869
  return ne(() => {
2856
2870
  e.alive = !1;
@@ -2858,13 +2872,13 @@ function oa() {
2858
2872
  }
2859
2873
  //#endregion
2860
2874
  //#region src/components/blocks/ImageBlock.vue?vue&type=script&setup=true&lang.ts
2861
- var sa = ["href"], ca = ["src", "alt"], la = ["src", "alt"], ua = {
2875
+ var ca = ["href"], la = ["src", "alt"], ua = ["src", "alt"], da = {
2862
2876
  class: "tpl:max-w-full tpl:truncate tpl:px-3 tpl:text-xs tpl:font-medium tpl:text-[var(--tpl-primary)]",
2863
2877
  style: { opacity: "0.7" }
2864
- }, da = ["href"], fa = ["src", "alt"], pa = ["src", "alt"], ma = {
2878
+ }, fa = ["href"], pa = ["src", "alt"], ma = ["src", "alt"], ha = {
2865
2879
  key: 3,
2866
2880
  class: "tpl:flex tpl:min-h-[100px] tpl:flex-col tpl:items-center tpl:justify-center tpl:gap-2 tpl:rounded tpl:border-2 tpl:border-dashed tpl:text-sm tpl:border-[var(--tpl-border-light)] tpl:bg-[var(--tpl-bg-hover)] tpl:text-[var(--tpl-text-dim)]"
2867
- }, ha = ["aria-label"], ga = { key: 1 }, _a = /* @__PURE__ */ B({
2881
+ }, ga = ["aria-label"], _a = { key: 1 }, va = /* @__PURE__ */ B({
2868
2882
  __name: "ImageBlock",
2869
2883
  props: {
2870
2884
  block: {},
@@ -2872,7 +2886,7 @@ var sa = ["href"], ca = ["src", "alt"], la = ["src", "alt"], ua = {
2872
2886
  },
2873
2887
  emits: ["update"],
2874
2888
  setup(e, { emit: t }) {
2875
- let n = e, r = t, { t: i } = Y(), { syntax: a } = Fi(), o = v(qn, null), s = k(() => !!o), c = oa();
2889
+ let n = e, r = t, { t: i } = Y(), { syntax: a } = Ii(), o = v(qn, null), s = k(() => !!o), c = sa();
2876
2890
  async function l() {
2877
2891
  let e = await o?.({ accept: ["images"] });
2878
2892
  if (c.alive && e) {
@@ -2902,22 +2916,22 @@ var sa = ["href"], ca = ["src", "alt"], la = ["src", "alt"], ua = {
2902
2916
  src: e.block.placeholderUrl,
2903
2917
  alt: e.block.alt || M(i).image.altTextPlaceholder,
2904
2918
  style: L(d.value)
2905
- }, null, 12, ca)], 8, sa)) : (f(), A("img", {
2919
+ }, null, 12, la)], 8, ca)) : (f(), A("img", {
2906
2920
  key: 1,
2907
2921
  class: "tpl:border-0",
2908
2922
  src: e.block.placeholderUrl,
2909
2923
  alt: e.block.alt,
2910
2924
  style: L(d.value)
2911
- }, null, 12, la))], 64)) : e.block.src && p.value ? (f(), A("div", {
2925
+ }, null, 12, ua))], 64)) : e.block.src && p.value ? (f(), A("div", {
2912
2926
  key: 1,
2913
2927
  class: "tpl:!flex tpl:min-h-[120px] tpl:flex-col tpl:items-center tpl:justify-center tpl:gap-2 tpl:rounded tpl:border-2 tpl:border-dashed tpl:text-center tpl:bg-[var(--tpl-bg-elevated)]",
2914
2928
  style: L([{ "border-color": "color-mix(in srgb, var(--tpl-primary) 40%, transparent)" }, d.value])
2915
- }, [V(M(Qr), {
2929
+ }, [V(M($r), {
2916
2930
  size: 32,
2917
2931
  "stroke-width": 1.5,
2918
2932
  class: "tpl:text-[var(--tpl-primary)]",
2919
2933
  style: { opacity: "0.5" }
2920
- }), I("span", ua, O(e.block.src), 1)], 4)) : e.block.src ? (f(), A(R, { key: 2 }, [e.block.linkUrl ? (f(), A("a", {
2934
+ }), I("span", da, O(e.block.src), 1)], 4)) : e.block.src ? (f(), A(R, { key: 2 }, [e.block.linkUrl ? (f(), A("a", {
2921
2935
  key: 0,
2922
2936
  href: e.block.linkUrl,
2923
2937
  target: "_blank",
@@ -2929,26 +2943,26 @@ var sa = ["href"], ca = ["src", "alt"], la = ["src", "alt"], ua = {
2929
2943
  src: e.block.src,
2930
2944
  alt: e.block.alt || M(i).image.altTextPlaceholder,
2931
2945
  style: L(d.value)
2932
- }, null, 12, fa)], 8, da)) : (f(), A("img", {
2946
+ }, null, 12, pa)], 8, fa)) : (f(), A("img", {
2933
2947
  key: 1,
2934
2948
  class: "tpl:border-0",
2935
2949
  src: e.block.src,
2936
2950
  alt: e.block.alt,
2937
2951
  style: L(d.value)
2938
- }, null, 12, pa))], 64)) : (f(), A("div", ma, [s.value ? (f(), A("button", {
2952
+ }, null, 12, ma))], 64)) : (f(), A("div", ha, [s.value ? (f(), A("button", {
2939
2953
  key: 0,
2940
2954
  "aria-label": M(i).image.browseMedia,
2941
2955
  class: "tpl:flex tpl:items-center tpl:gap-1.5 tpl:rounded-md tpl:border tpl:px-3 tpl:py-2 tpl:text-xs tpl:font-medium tpl:transition-all tpl:duration-150 tpl:cursor-pointer tpl:border-[var(--tpl-border)] tpl:text-[var(--tpl-primary)] tpl:bg-[var(--tpl-bg)]",
2942
2956
  onClick: N(l, ["stop"])
2943
- }, [V(M(Qr), {
2957
+ }, [V(M($r), {
2944
2958
  size: 14,
2945
2959
  "stroke-width": 1.5
2946
- }), z(" " + O(M(i).image.browseMedia), 1)], 8, ha)) : (f(), A("span", ga, O(M(i).image.clickToAdd), 1))]))], 4));
2960
+ }), z(" " + O(M(i).image.browseMedia), 1)], 8, ga)) : (f(), A("span", _a, O(M(i).image.clickToAdd), 1))]))], 4));
2947
2961
  }
2948
- }), va = { class: "tpl:w-full" }, ya = ["href"], ba = {
2962
+ }), ya = { class: "tpl:w-full" }, ba = ["href"], xa = {
2949
2963
  key: 1,
2950
2964
  class: "tpl:flex tpl:items-center tpl:justify-center tpl:gap-2 tpl:rounded tpl:border tpl:border-dashed tpl:py-4 tpl:text-sm tpl:border-[var(--tpl-border)] tpl:text-[var(--tpl-text-dim)]"
2951
- }, xa = /* @__PURE__ */ B({
2965
+ }, Sa = /* @__PURE__ */ B({
2952
2966
  __name: "MenuBlock",
2953
2967
  props: {
2954
2968
  block: {},
@@ -2967,7 +2981,7 @@ var sa = ["href"], ca = ["src", "alt"], la = ["src", "alt"], ua = {
2967
2981
  function a(e) {
2968
2982
  return e || t.block.linkColor || t.block.color;
2969
2983
  }
2970
- return (t, o) => (f(), A("div", va, [i.value ? (f(), A("div", {
2984
+ return (t, o) => (f(), A("div", ya, [i.value ? (f(), A("div", {
2971
2985
  key: 0,
2972
2986
  style: L(r.value)
2973
2987
  }, [(f(!0), A(R, null, h(e.block.items, (t, n) => (f(), A(R, { key: t.id }, [I("a", {
@@ -2979,15 +2993,15 @@ var sa = ["href"], ca = ["src", "alt"], la = ["src", "alt"], ua = {
2979
2993
  textDecoration: t.underline ? "underline" : "none"
2980
2994
  }),
2981
2995
  onClick: o[0] ||= N(() => {}, ["prevent"])
2982
- }, O(t.text || "..."), 13, ya), n < e.block.items.length - 1 ? (f(), A("span", {
2996
+ }, O(t.text || "..."), 13, ba), n < e.block.items.length - 1 ? (f(), A("span", {
2983
2997
  key: 0,
2984
2998
  style: L({
2985
2999
  color: e.block.separatorColor,
2986
3000
  padding: `0 ${e.block.spacing}px`
2987
3001
  })
2988
- }, O(e.block.separator), 5)) : j("", !0)], 64))), 128))], 4)) : (f(), A("div", ba, [V(M(ni), { size: 16 }), I("span", null, O(M(n).menu.addLinks), 1)]))]));
3002
+ }, O(e.block.separator), 5)) : j("", !0)], 64))), 128))], 4)) : (f(), A("div", xa, [V(M(ri), { size: 16 }), I("span", null, O(M(n).menu.addLinks), 1)]))]));
2989
3003
  }
2990
- }), Sa = new Set([
3004
+ }), Ca = new Set([
2991
3005
  "http",
2992
3006
  "https",
2993
3007
  "mailto",
@@ -2997,7 +3011,7 @@ var sa = ["href"], ca = ["src", "alt"], la = ["src", "alt"], ua = {
2997
3011
  "sms",
2998
3012
  "xmpp",
2999
3013
  "cid"
3000
- ]), Ca = new Set([
3014
+ ]), wa = new Set([
3001
3015
  "SCRIPT",
3002
3016
  "STYLE",
3003
3017
  "IFRAME",
@@ -3007,7 +3021,7 @@ var sa = ["href"], ca = ["src", "alt"], la = ["src", "alt"], ua = {
3007
3021
  "META",
3008
3022
  "BASE",
3009
3023
  "FORM"
3010
- ]), wa = new Set([
3024
+ ]), Ta = new Set([
3011
3025
  "href",
3012
3026
  "xlink:href",
3013
3027
  "formaction",
@@ -3016,16 +3030,16 @@ var sa = ["href"], ca = ["src", "alt"], la = ["src", "alt"], ua = {
3016
3030
  "background",
3017
3031
  "poster"
3018
3032
  ]);
3019
- function Ta(e, t) {
3033
+ function Ea(e, t) {
3020
3034
  let n = e.trim();
3021
3035
  if (!n || n.startsWith("#")) return !0;
3022
3036
  let r = /^([a-z][a-z0-9+.-]*):/i.exec(n);
3023
3037
  if (!r) return !0;
3024
3038
  let i = r[1].toLowerCase();
3025
- return Sa.has(i) ? !0 : t && i === "data" ? /^data:image\/(png|jpe?g|gif|webp|svg\+xml);/i.test(n) : !1;
3039
+ return Ca.has(i) ? !0 : t && i === "data" ? /^data:image\/(png|jpe?g|gif|webp|svg\+xml);/i.test(n) : !1;
3026
3040
  }
3027
- function Ea(e) {
3028
- if (Ca.has(e.tagName)) {
3041
+ function Da(e) {
3042
+ if (wa.has(e.tagName)) {
3029
3043
  e.remove();
3030
3044
  return;
3031
3045
  }
@@ -3037,29 +3051,29 @@ function Ea(e) {
3037
3051
  e.removeAttribute(n);
3038
3052
  continue;
3039
3053
  }
3040
- if (wa.has(t)) {
3041
- Ta(e.getAttribute(n) ?? "", !1) || e.removeAttribute(n);
3054
+ if (Ta.has(t)) {
3055
+ Ea(e.getAttribute(n) ?? "", !1) || e.removeAttribute(n);
3042
3056
  continue;
3043
3057
  }
3044
3058
  if (t === "src") {
3045
- Ta(e.getAttribute(n) ?? "", !0) || e.removeAttribute(n);
3059
+ Ea(e.getAttribute(n) ?? "", !0) || e.removeAttribute(n);
3046
3060
  continue;
3047
3061
  }
3048
3062
  t === "srcdoc" && e.removeAttribute(n);
3049
3063
  }
3050
3064
  let n = Array.from(e.children);
3051
- for (let e of n) Ea(e);
3065
+ for (let e of n) Da(e);
3052
3066
  }
3053
- function Da(e) {
3067
+ function Oa(e) {
3054
3068
  if (typeof DOMParser > "u") return e;
3055
3069
  let t = new DOMParser().parseFromString(`<!doctype html><body>${e}</body>`, "text/html").body, n = Array.from(t.children);
3056
- for (let e of n) Ea(e);
3070
+ for (let e of n) Da(e);
3057
3071
  return t.innerHTML;
3058
3072
  }
3059
3073
  //#endregion
3060
3074
  //#region src/composables/useEditableTextBlock.ts
3061
- function Oa(e) {
3062
- let t = v(Un, []), { syntax: n } = Fi(), r = k(() => Da(bt(gt(e(), t), n))), i = C(!1), a = C(null), { top: o, left: s } = Cn(a), c = k(() => ({
3075
+ function ka(e) {
3076
+ let t = v(Un, []), { syntax: n } = Ii(), r = k(() => Oa(bt(gt(e(), t), n))), i = C(!1), a = C(null), { top: o, left: s } = Cn(a), c = k(() => ({
3063
3077
  top: o.value - 8,
3064
3078
  left: s.value
3065
3079
  }));
@@ -3080,14 +3094,14 @@ function Oa(e) {
3080
3094
  }
3081
3095
  //#endregion
3082
3096
  //#region src/components/blocks/ParagraphBlock.vue?vue&type=script&setup=true&lang.ts
3083
- var ka = ["innerHTML"], Aa = /* @__PURE__ */ B({
3097
+ var Aa = ["innerHTML"], ja = /* @__PURE__ */ B({
3084
3098
  __name: "ParagraphBlock",
3085
3099
  props: {
3086
3100
  block: {},
3087
3101
  viewport: {}
3088
3102
  },
3089
3103
  setup(e) {
3090
- let t = e, n = E(() => import("./ParagraphEditor-CQfijF3i.js")), { isEditing: r, blockRef: i, toolbarPosition: a, resolvedContent: o, handleDoubleClick: s, handleEditorDone: c } = Oa(() => t.block.content);
3104
+ let t = e, n = E(() => import("./ParagraphEditor-BtzinrI_.js")), { isEditing: r, blockRef: i, toolbarPosition: a, resolvedContent: o, handleDoubleClick: s, handleEditorDone: c } = ka(() => t.block.content);
3091
3105
  return (t, l) => (f(), A("div", {
3092
3106
  ref_key: "blockRef",
3093
3107
  ref: i,
@@ -3106,19 +3120,19 @@ var ka = ["innerHTML"], Aa = /* @__PURE__ */ B({
3106
3120
  key: 1,
3107
3121
  class: "tpl-text-content tpl:outline-none [&_a]:tpl:underline [&_li]:tpl:my-1 [&_ol]:tpl:my-2 [&_ol]:tpl:pl-6 [&_p]:tpl:m-0 [&_p]:tpl:mb-2 [&_p:last-child]:tpl:mb-0 [&_s]:tpl:line-through [&_sub]:tpl:align-sub [&_sub]:tpl:text-[0.75em] [&_sup]:tpl:align-super [&_sup]:tpl:text-[0.75em] [&_ul]:tpl:my-2 [&_ul]:tpl:pl-6",
3108
3122
  innerHTML: M(o)
3109
- }, null, 8, ka))], 544));
3123
+ }, null, 8, Aa))], 544));
3110
3124
  }
3111
3125
  });
3112
3126
  //#endregion
3113
3127
  //#region src/utils/blockComponentResolver.ts
3114
- function ja(e, t, n) {
3128
+ function Ma(e, t, n) {
3115
3129
  if (t) {
3116
3130
  let n = t.getComponent(e);
3117
3131
  if (n) return n;
3118
3132
  }
3119
3133
  return n[e.type] ?? null;
3120
3134
  }
3121
- function Ma(e) {
3135
+ function Na(e) {
3122
3136
  let { padding: t, margin: n, backgroundColor: r } = e.styles;
3123
3137
  return {
3124
3138
  padding: `${t.top}px ${t.right}px ${t.bottom}px ${t.left}px`,
@@ -3128,20 +3142,20 @@ function Ma(e) {
3128
3142
  }
3129
3143
  //#endregion
3130
3144
  //#region src/components/blocks/BlockWrapper.vue?vue&type=script&setup=true&lang.ts
3131
- var Na = ["data-block-id", "data-block-type"], Pa = ["aria-label"], Fa = [
3145
+ var Pa = ["data-block-id", "data-block-type"], Fa = ["aria-label"], Ia = [
3132
3146
  "aria-label",
3133
3147
  "aria-pressed",
3134
3148
  "title"
3135
- ], Ia = ["aria-label", "title"], La = ["aria-label", "title"], Ra = ["aria-label", "title"], za = {
3149
+ ], La = ["aria-label", "title"], Ra = ["aria-label", "title"], za = ["aria-label", "title"], Ba = {
3136
3150
  key: 1,
3137
3151
  class: "tpl-block-hidden-overlay tpl:pointer-events-none tpl:absolute tpl:inset-0 tpl:z-[5] tpl:flex tpl:items-center tpl:justify-center tpl:rounded-sm"
3138
- }, Ba = { class: "tpl:flex tpl:items-center tpl:gap-1 tpl:rounded tpl:px-2 tpl:py-1 tpl:text-[10px] tpl:font-medium tpl:bg-[var(--tpl-bg-elevated)] tpl:text-[var(--tpl-text-muted)] tpl:shadow-[var(--tpl-shadow-sm)]" }, Va = {
3152
+ }, Va = { class: "tpl:flex tpl:items-center tpl:gap-1 tpl:rounded tpl:px-2 tpl:py-1 tpl:text-[10px] tpl:font-medium tpl:bg-[var(--tpl-bg-elevated)] tpl:text-[var(--tpl-text-muted)] tpl:shadow-[var(--tpl-shadow-sm)]" }, Ha = {
3139
3153
  key: 2,
3140
3154
  class: "tpl:absolute tpl:-left-1 tpl:top-1/2 tpl:z-[5] tpl:-translate-x-full tpl:-translate-y-1/2"
3141
- }, Ha = ["aria-label", "title"], Ua = {
3155
+ }, Ua = ["aria-label", "title"], Wa = {
3142
3156
  key: 3,
3143
3157
  class: "tpl:absolute tpl:-right-1 tpl:-top-1 tpl:z-[5] tpl:translate-x-full"
3144
- }, Wa = ["aria-label"], Ga = /* @__PURE__ */ wi(/* @__PURE__ */ B({
3158
+ }, Ga = ["aria-label"], Ka = /* @__PURE__ */ Ti(/* @__PURE__ */ B({
3145
3159
  __name: "BlockWrapper",
3146
3160
  props: {
3147
3161
  block: {},
@@ -3151,7 +3165,7 @@ var Na = ["data-block-id", "data-block-type"], Pa = ["aria-label"], Fa = [
3151
3165
  },
3152
3166
  emits: ["select"],
3153
3167
  setup(e, { emit: t }) {
3154
- let n = E(() => import("./BlockA11yBadge-QqW6nomn.js")), r = e, i = t, { t: a, format: s } = Y(), c = v(Zn, null), l = C(null), u = k(() => c?.liftedBlockId.value === r.block.id), d = k(() => u.value ? s(a.blockActions.dragLifted, { block: r.block.type }) : a.blockActions.drag);
3168
+ let n = E(() => import("./BlockIssueBadge-D0_mYpkl.js")), r = e, i = t, { t: a, format: s } = Y(), c = v(Zn, null), l = C(null), u = k(() => c?.liftedBlockId.value === r.block.id), d = k(() => u.value ? s(a.blockActions.dragLifted, { block: r.block.type }) : a.blockActions.drag);
3155
3169
  async function p() {
3156
3170
  await m(), l.value?.focus();
3157
3171
  }
@@ -3178,8 +3192,8 @@ var Na = ["data-block-id", "data-block-type"], Pa = ["aria-label"], Fa = [
3178
3192
  desktop: a.viewport.desktop,
3179
3193
  tablet: a.viewport.tablet,
3180
3194
  mobile: a.viewport.mobile
3181
- }[r.viewport] ?? r.viewport : ""), y = k(() => !!r.block.displayCondition), b = v(Fn, null), x = v(In, null), S = v(Xn, {}), w = k(() => !!S.savedModules), T = k(() => S.comments?.getBlockCount(r.block.id) ?? 0), D = k(() => ({ margin: Ma(r.block).margin })), ee = k(() => {
3182
- let e = Ma(r.block);
3195
+ }[r.viewport] ?? r.viewport : ""), y = k(() => !!r.block.displayCondition), b = v(Fn, null), x = v(In, null), S = v(Xn, {}), w = k(() => !!S.savedModules), T = k(() => S.comments?.getBlockCount(r.block.id) ?? 0), D = k(() => ({ margin: Na(r.block).margin })), ee = k(() => {
3196
+ let e = Na(r.block);
3183
3197
  return {
3184
3198
  padding: e.padding,
3185
3199
  backgroundColor: e.backgroundColor
@@ -3227,90 +3241,90 @@ var Na = ["data-block-id", "data-block-type"], Pa = ["aria-label"], Fa = [
3227
3241
  "aria-keyshortcuts": "Space Enter ArrowUp ArrowDown Escape",
3228
3242
  title: M(a).blockActions.drag,
3229
3243
  onKeydown: h
3230
- }, [V(M(Xr), {
3244
+ }, [V(M(Zr), {
3231
3245
  size: 14,
3232
3246
  "stroke-width": 1.5
3233
- })], 40, Fa),
3247
+ })], 40, Ia),
3234
3248
  I("button", {
3235
3249
  class: "tpl-block-action-btn tpl:flex tpl:size-7 tpl:cursor-pointer tpl:items-center tpl:justify-center tpl:rounded-sm tpl:border-none tpl:transition-colors tpl:duration-150",
3236
3250
  "aria-label": M(a).blockActions.duplicate,
3237
3251
  title: M(a).blockActions.duplicate,
3238
3252
  onClick: N(P, ["stop"])
3239
- }, [V(M(Wr), {
3253
+ }, [V(M(Gr), {
3240
3254
  size: 14,
3241
3255
  "stroke-width": 1.5
3242
- })], 8, Ia),
3256
+ })], 8, La),
3243
3257
  w.value ? (f(), A("button", {
3244
3258
  key: 0,
3245
3259
  class: "tpl-block-action-btn tpl:flex tpl:size-7 tpl:cursor-pointer tpl:items-center tpl:justify-center tpl:rounded-sm tpl:border-none tpl:transition-colors tpl:duration-150",
3246
3260
  "aria-label": M(a).blockActions.saveAsModule,
3247
3261
  title: M(a).blockActions.saveAsModule,
3248
3262
  onClick: N(re, ["stop"])
3249
- }, [V(M(Nr), {
3263
+ }, [V(M(Pr), {
3250
3264
  size: 14,
3251
3265
  "stroke-width": 1.5
3252
- })], 8, La)) : j("", !0),
3266
+ })], 8, Ra)) : j("", !0),
3253
3267
  I("button", {
3254
3268
  class: "tpl-block-action-btn tpl-block-delete-btn tpl:flex tpl:size-7 tpl:cursor-pointer tpl:items-center tpl:justify-center tpl:rounded-sm tpl:border-none tpl:transition-colors tpl:duration-150",
3255
3269
  "aria-label": M(a).blockActions.delete,
3256
3270
  title: M(a).blockActions.delete,
3257
3271
  onClick: N(ne, ["stop"])
3258
- }, [V(M(mi), {
3272
+ }, [V(M(hi), {
3259
3273
  size: 14,
3260
3274
  "stroke-width": 1.5
3261
- })], 8, Ra)
3262
- ], 8, Pa)) : j("", !0),
3263
- g.value ? (f(), A("div", za, [I("span", Ba, [V(M(Gr), {
3275
+ })], 8, za)
3276
+ ], 8, Fa)) : j("", !0),
3277
+ g.value ? (f(), A("div", Ba, [I("span", Va, [V(M(Kr), {
3264
3278
  size: 12,
3265
3279
  "stroke-width": 1.5
3266
3280
  }), z(" " + O(M(s)(M(a).blockActions.hiddenOnViewport, { viewport: _.value })), 1)])])) : j("", !0),
3267
- y.value && !g.value ? (f(), A("div", Va, [I("button", {
3281
+ y.value && !g.value ? (f(), A("div", Ha, [I("button", {
3268
3282
  class: "tpl-condition-toggle tpl:flex tpl:cursor-pointer tpl:items-center tpl:justify-center tpl:rounded-md tpl:p-1 tpl:transition-colors tpl:duration-150 tpl:bg-[var(--tpl-bg-elevated)] tpl:text-[var(--tpl-primary)] tpl:border tpl:border-[var(--tpl-border)]",
3269
3283
  "aria-label": M(a).blockActions.conditionToggle,
3270
3284
  title: e.block.displayCondition?.label,
3271
3285
  onClick: N(F, ["stop"])
3272
- }, [V(M(Yr), {
3286
+ }, [V(M(Xr), {
3273
3287
  size: 12,
3274
3288
  "stroke-width": 2
3275
- })], 8, Ha)])) : j("", !0),
3276
- T.value > 0 && !g.value ? (f(), A("div", Ua, [I("button", {
3289
+ })], 8, Ua)])) : j("", !0),
3290
+ T.value > 0 && !g.value ? (f(), A("div", Wa, [I("button", {
3277
3291
  class: "tpl-comment-indicator tpl:flex tpl:min-h-6 tpl:min-w-6 tpl:cursor-pointer tpl:items-center tpl:justify-center tpl:gap-0.5 tpl:rounded-full tpl:border-none tpl:px-2 tpl:py-0.5 tpl:text-[10px] tpl:font-semibold tpl:transition-colors tpl:duration-150 tpl:bg-[var(--tpl-primary-light)] tpl:text-[var(--tpl-primary)]",
3278
3292
  "aria-label": M(s)(M(a).blockActions.comments, { count: String(T.value) }),
3279
3293
  onClick: r[0] ||= N((t) => M(S).comments?.openForBlock(e.block.id), ["stop"])
3280
- }, [V(M(ti), {
3294
+ }, [V(M(ni), {
3281
3295
  size: 12,
3282
3296
  "stroke-width": 2.5
3283
- }), z(" " + O(T.value), 1)], 8, Wa)])) : j("", !0),
3297
+ }), z(" " + O(T.value), 1)], 8, Ga)])) : j("", !0),
3284
3298
  I("div", {
3285
3299
  class: "tpl-block-content",
3286
3300
  style: L(ee.value)
3287
3301
  }, [o(t.$slots, "default", {}, void 0, !0)], 4)
3288
- ], 14, Na));
3302
+ ], 14, Pa));
3289
3303
  }
3290
- }), [["__scopeId", "data-v-7333e8d7"]]);
3304
+ }), [["__scopeId", "data-v-e77eb94e"]]);
3291
3305
  //#endregion
3292
3306
  //#region src/utils/unwrapParagraph.ts
3293
- function Ka(e) {
3307
+ function qa(e) {
3294
3308
  let t = e.match(/^\s*<p\b[^>]*>([\s\S]*)<\/p>\s*$/);
3295
3309
  return !t || /<\/p>\s*<p\b/i.test(t[1]) ? e : t[1];
3296
3310
  }
3297
3311
  //#endregion
3298
3312
  //#region src/components/blocks/TitleBlock.vue
3299
- var qa = /* @__PURE__ */ B({
3313
+ var Ja = /* @__PURE__ */ B({
3300
3314
  __name: "TitleBlock",
3301
3315
  props: {
3302
3316
  block: {},
3303
3317
  viewport: {}
3304
3318
  },
3305
3319
  setup(e) {
3306
- let t = e, n = E(() => import("./TitleEditor-BdQvH7eK.js")), { isEditing: r, blockRef: i, toolbarPosition: a, resolvedContent: o, handleDoubleClick: s, handleEditorDone: c } = Oa(() => t.block.content), l = k(() => {
3320
+ let t = e, n = E(() => import("./TitleEditor-Bzsbpajt.js")), { isEditing: r, blockRef: i, toolbarPosition: a, resolvedContent: o, handleDoubleClick: s, handleEditorDone: c } = ka(() => t.block.content), l = k(() => {
3307
3321
  let e = {
3308
3322
  fontSize: `${pe[t.block.level]}px`,
3309
3323
  color: t.block.color,
3310
3324
  textAlign: t.block.textAlign
3311
3325
  };
3312
3326
  return t.block.fontFamily && (e.fontFamily = t.block.fontFamily), e;
3313
- }), u = k(() => `h${t.block.level}`), p = k(() => Ka(o.value));
3327
+ }), u = k(() => `h${t.block.level}`), p = k(() => qa(o.value));
3314
3328
  return (t, o) => (f(), A("div", {
3315
3329
  ref_key: "blockRef",
3316
3330
  ref: i,
@@ -3333,11 +3347,11 @@ var qa = /* @__PURE__ */ B({
3333
3347
  innerHTML: p.value
3334
3348
  }, null, 8, ["innerHTML"]))], 36));
3335
3349
  }
3336
- }), Ja = { class: "tpl:w-full" }, Ya = { class: "tpl:flex tpl:gap-0" }, Xa = {
3350
+ }), Ya = { class: "tpl:w-full" }, Xa = { class: "tpl:flex tpl:gap-0" }, Za = {
3337
3351
  key: 0,
3338
3352
  "data-testid": "section-drop-hint",
3339
3353
  class: "tpl:pointer-events-none tpl:absolute tpl:inset-0 tpl:flex tpl:items-center tpl:justify-center tpl:text-xs tpl:text-[var(--tpl-text-dim)]"
3340
- }, Za = /* @__PURE__ */ B({
3354
+ }, Qa = /* @__PURE__ */ B({
3341
3355
  __name: "SectionBlock",
3342
3356
  props: {
3343
3357
  block: {},
@@ -3345,12 +3359,12 @@ var qa = /* @__PURE__ */ B({
3345
3359
  },
3346
3360
  setup(e) {
3347
3361
  let t = {
3348
- title: qa,
3349
- paragraph: Aa,
3350
- image: _a,
3351
- button: Cr,
3352
- divider: ea,
3353
- custom: Qi
3362
+ title: Ja,
3363
+ paragraph: ja,
3364
+ image: va,
3365
+ button: wr,
3366
+ divider: ta,
3367
+ custom: $i
3354
3368
  }, n = e, { t: r } = Y(), i = J(Nn, "SectionBlock"), a = v(In, null), o = v(Vn, null), s = k(() => {
3355
3369
  switch (n.block.columns) {
3356
3370
  case "2": return ["50%", "50%"];
@@ -3377,7 +3391,7 @@ var qa = /* @__PURE__ */ B({
3377
3391
  a[e] = r, i.updateBlock(n.block.id, { children: a });
3378
3392
  }
3379
3393
  function m(e) {
3380
- return ja(e, o, t);
3394
+ return Ma(e, o, t);
3381
3395
  }
3382
3396
  function g(e, t) {
3383
3397
  e.type === "custom" && i.updateBlock(e.id, {
@@ -3385,7 +3399,7 @@ var qa = /* @__PURE__ */ B({
3385
3399
  dataSourceFetched: t.dataSourceFetched
3386
3400
  });
3387
3401
  }
3388
- return (t, n) => (f(), A("div", Ja, [I("div", Ya, [(f(!0), A(R, null, h(l.value, (t, n) => (f(), A("div", {
3402
+ return (t, n) => (f(), A("div", Ya, [I("div", Xa, [(f(!0), A(R, null, h(l.value, (t, n) => (f(), A("div", {
3389
3403
  key: n,
3390
3404
  class: ae(["tpl:relative tpl:min-h-[60px] tpl:rounded", u(n).length === 0 ? "tpl:border tpl:border-dashed tpl:border-[var(--tpl-border)]" : ""]),
3391
3405
  style: L({ width: s.value[n] })
@@ -3407,7 +3421,7 @@ var qa = /* @__PURE__ */ B({
3407
3421
  class: "tpl:min-h-[60px]",
3408
3422
  "onUpdate:modelValue": (e) => p(n, e)
3409
3423
  }, {
3410
- default: b(() => [(f(!0), A(R, null, h(u(n), (t) => c((f(), A("div", { key: t.id }, [V(Ga, {
3424
+ default: b(() => [(f(!0), A(R, null, h(u(n), (t) => c((f(), A("div", { key: t.id }, [V(Ka, {
3411
3425
  block: t,
3412
3426
  "is-selected": M(i).state.selectedBlockId === t.id,
3413
3427
  viewport: e.viewport,
@@ -3434,9 +3448,9 @@ var qa = /* @__PURE__ */ B({
3434
3448
  "model-value",
3435
3449
  "group",
3436
3450
  "onUpdate:modelValue"
3437
- ]), u(n).length === 0 ? (f(), A("div", Xa, [I("span", null, O(M(r).section.dropHere), 1)])) : j("", !0)], 6))), 128))])]));
3451
+ ]), u(n).length === 0 ? (f(), A("div", Za, [I("span", null, O(M(r).section.dropHere), 1)])) : j("", !0)], 6))), 128))])]));
3438
3452
  }
3439
- }), Qa = {
3453
+ }), $a = {
3440
3454
  facebook: {
3441
3455
  name: "Facebook",
3442
3456
  color: "#1877F2",
@@ -3517,11 +3531,11 @@ var qa = /* @__PURE__ */ B({
3517
3531
  color: "#1769FF",
3518
3532
  path: "M22 7h-7V5h7v2zm1.726 10c-.442 1.297-2.029 3-5.101 3-3.074 0-5.564-1.729-5.564-5.675 0-3.91 2.325-5.92 5.466-5.92 3.082 0 4.964 1.782 5.375 4.426.078.506.109 1.188.095 2.14H15.97c.13 3.211 3.483 3.312 4.588 2.029h3.168zm-7.686-4h4.965c-.105-1.547-1.136-2.219-2.477-2.219-1.466 0-2.277.768-2.488 2.219zm-9.574 6.988H0V5.021h6.953c5.476.081 5.58 5.444 2.72 6.906 3.461 1.26 3.577 8.061-3.207 8.061zM3 11h3.584c2.508 0 2.906-3-.312-3H3v3zm3.391 3H3v3.016h3.341c3.055 0 2.868-3.016.05-3.016z"
3519
3533
  }
3520
- }, $a = {
3534
+ }, eo = {
3521
3535
  small: 24,
3522
3536
  medium: 32,
3523
3537
  large: 48
3524
- }, eo = [
3538
+ }, to = [
3525
3539
  "facebook",
3526
3540
  "twitter",
3527
3541
  "instagram",
@@ -3538,11 +3552,11 @@ var qa = /* @__PURE__ */ B({
3538
3552
  "github",
3539
3553
  "dribbble",
3540
3554
  "behance"
3541
- ], to = [
3555
+ ], no = [
3542
3556
  "width",
3543
3557
  "height",
3544
3558
  "fill"
3545
- ], no = ["d"], ro = /* @__PURE__ */ B({
3559
+ ], ro = ["d"], io = /* @__PURE__ */ B({
3546
3560
  __name: "SocialIconSvg",
3547
3561
  props: {
3548
3562
  platform: {},
@@ -3550,7 +3564,7 @@ var qa = /* @__PURE__ */ B({
3550
3564
  iconSize: {}
3551
3565
  },
3552
3566
  setup(e) {
3553
- let t = e, n = k(() => Qa[t.platform]), r = k(() => $a[t.iconSize]), i = k(() => {
3567
+ let t = e, n = k(() => $a[t.platform]), r = k(() => eo[t.iconSize]), i = k(() => {
3554
3568
  let e = {
3555
3569
  display: "inline-flex",
3556
3570
  alignItems: "center",
@@ -3594,12 +3608,12 @@ var qa = /* @__PURE__ */ B({
3594
3608
  viewBox: "0 0 24 24",
3595
3609
  fill: o.value,
3596
3610
  xmlns: "http://www.w3.org/2000/svg"
3597
- }, [I("path", { d: n.value.path }, null, 8, no)], 8, to))], 4));
3611
+ }, [I("path", { d: n.value.path }, null, 8, ro)], 8, no))], 4));
3598
3612
  }
3599
- }), io = { class: "tpl:w-full" }, ao = ["href"], oo = {
3613
+ }), ao = { class: "tpl:w-full" }, oo = ["href"], so = {
3600
3614
  key: 1,
3601
3615
  class: "tpl:flex tpl:items-center tpl:justify-center tpl:gap-2 tpl:rounded tpl:border tpl:border-dashed tpl:py-4 tpl:text-sm tpl:border-[var(--tpl-border)] tpl:text-[var(--tpl-text-dim)]"
3602
- }, so = /* @__PURE__ */ B({
3616
+ }, co = /* @__PURE__ */ B({
3603
3617
  __name: "SocialIconsBlock",
3604
3618
  props: {
3605
3619
  block: {},
@@ -3612,7 +3626,7 @@ var qa = /* @__PURE__ */ B({
3612
3626
  gap: `${t.block.spacing}px`,
3613
3627
  justifyContent: t.block.align === "left" ? "flex-start" : t.block.align === "right" ? "flex-end" : "center"
3614
3628
  })), i = k(() => t.block.icons.length > 0);
3615
- return (t, a) => (f(), A("div", io, [i.value ? (f(), A("div", {
3629
+ return (t, a) => (f(), A("div", ao, [i.value ? (f(), A("div", {
3616
3630
  key: 0,
3617
3631
  style: L(r.value)
3618
3632
  }, [(f(!0), A(R, null, h(e.block.icons, (t) => (f(), A("a", {
@@ -3620,7 +3634,7 @@ var qa = /* @__PURE__ */ B({
3620
3634
  href: t.url || "#",
3621
3635
  class: "tpl:cursor-default",
3622
3636
  onClick: a[0] ||= N(() => {}, ["prevent"])
3623
- }, [V(ro, {
3637
+ }, [V(io, {
3624
3638
  platform: t.platform,
3625
3639
  "icon-style": e.block.iconStyle,
3626
3640
  "icon-size": e.block.iconSize
@@ -3628,16 +3642,16 @@ var qa = /* @__PURE__ */ B({
3628
3642
  "platform",
3629
3643
  "icon-style",
3630
3644
  "icon-size"
3631
- ])], 8, ao))), 128))], 4)) : (f(), A("div", oo, [V(M(li), { size: 16 }), I("span", null, O(M(n).social.addIcons), 1)]))]));
3645
+ ])], 8, oo))), 128))], 4)) : (f(), A("div", so, [V(M(ui), { size: 16 }), I("span", null, O(M(n).social.addIcons), 1)]))]));
3632
3646
  }
3633
- }), co = { class: "tpl:w-full" }, lo = {
3647
+ }), lo = { class: "tpl:w-full" }, uo = {
3634
3648
  key: 0,
3635
3649
  class: "tpl:absolute tpl:rounded tpl:px-2 tpl:py-0.5 tpl:text-[10px] tpl:font-medium",
3636
3650
  style: {
3637
3651
  "background-color": "var(--tpl-bg-hover)",
3638
3652
  color: "var(--tpl-text-dim)"
3639
3653
  }
3640
- }, uo = /* @__PURE__ */ B({
3654
+ }, fo = /* @__PURE__ */ B({
3641
3655
  __name: "SpacerBlock",
3642
3656
  props: {
3643
3657
  block: {},
@@ -3649,23 +3663,23 @@ var qa = /* @__PURE__ */ B({
3649
3663
  minHeight: `${t.block.height}px`,
3650
3664
  ...n.state.previewMode ? {} : { borderColor: "var(--tpl-border)" }
3651
3665
  }));
3652
- return (t, i) => (f(), A("div", co, [I("div", {
3666
+ return (t, i) => (f(), A("div", lo, [I("div", {
3653
3667
  style: L(r.value),
3654
3668
  class: ae(["tpl:relative tpl:flex tpl:items-center tpl:justify-center", { "tpl:border-y tpl:border-dashed": !M(n).state.previewMode }])
3655
- }, [M(n).state.previewMode ? j("", !0) : (f(), A("span", lo, O(e.block.height) + "px ", 1))], 6)]));
3669
+ }, [M(n).state.previewMode ? j("", !0) : (f(), A("span", uo, O(e.block.height) + "px ", 1))], 6)]));
3656
3670
  }
3657
- }), fo = { class: "tpl:w-full" }, po = { key: 0 }, mo = [
3671
+ }), po = { class: "tpl:w-full" }, mo = { key: 0 }, ho = [
3658
3672
  "aria-label",
3659
3673
  "data-placeholder",
3660
3674
  "onBlur"
3661
- ], ho = [
3675
+ ], go = [
3662
3676
  "aria-label",
3663
3677
  "data-placeholder",
3664
3678
  "onBlur"
3665
- ], go = {
3679
+ ], _o = {
3666
3680
  key: 1,
3667
3681
  class: "tpl:flex tpl:items-center tpl:justify-center tpl:gap-2 tpl:rounded tpl:border tpl:border-dashed tpl:py-4 tpl:text-sm tpl:border-[var(--tpl-border)] tpl:text-[var(--tpl-text-dim)]"
3668
- }, _o = /* @__PURE__ */ wi(/* @__PURE__ */ B({
3682
+ }, vo = /* @__PURE__ */ Ti(/* @__PURE__ */ B({
3669
3683
  __name: "TableBlock",
3670
3684
  props: {
3671
3685
  block: {},
@@ -3708,11 +3722,11 @@ var qa = /* @__PURE__ */ B({
3708
3722
  } : n);
3709
3723
  i.updateBlock(n.block.id, { rows: o });
3710
3724
  }
3711
- return (e, n) => (f(), A("div", fo, [a.value ? (f(), A("table", {
3725
+ return (e, n) => (f(), A("div", po, [a.value ? (f(), A("table", {
3712
3726
  key: 0,
3713
3727
  style: L(o.value),
3714
3728
  class: "tpl-table-editable"
3715
- }, [u.value ? (f(), A("thead", po, [I("tr", null, [(f(!0), A(R, null, h(u.value.cells, (e) => c((f(), A("th", {
3729
+ }, [u.value ? (f(), A("thead", mo, [I("tr", null, [(f(!0), A(R, null, h(u.value.cells, (e) => c((f(), A("th", {
3716
3730
  key: e.id,
3717
3731
  style: L(l.value),
3718
3732
  "aria-label": M(r).table.cellPlaceholder,
@@ -3721,7 +3735,7 @@ var qa = /* @__PURE__ */ B({
3721
3735
  onBlur: (t) => m(u.value.id, e.id, t),
3722
3736
  onKeydown: n[0] ||= D(N((e) => e.target.blur(), ["prevent"]), ["enter"]),
3723
3737
  onClick: N(p, ["stop"])
3724
- }, null, 44, mo)), [[t, e.content]])), 128))])])) : j("", !0), I("tbody", null, [(f(!0), A(R, null, h(d.value, (e) => (f(), A("tr", { key: e.id }, [(f(!0), A(R, null, h(e.cells, (i) => c((f(), A("td", {
3738
+ }, null, 44, ho)), [[t, e.content]])), 128))])])) : j("", !0), I("tbody", null, [(f(!0), A(R, null, h(d.value, (e) => (f(), A("tr", { key: e.id }, [(f(!0), A(R, null, h(e.cells, (i) => c((f(), A("td", {
3725
3739
  key: i.id,
3726
3740
  style: L(s.value),
3727
3741
  "aria-label": M(r).table.cellPlaceholder,
@@ -3730,9 +3744,9 @@ var qa = /* @__PURE__ */ B({
3730
3744
  onBlur: (t) => m(e.id, i.id, t),
3731
3745
  onKeydown: n[1] ||= D(N((e) => e.target.blur(), ["prevent"]), ["enter"]),
3732
3746
  onClick: N(p, ["stop"])
3733
- }, null, 44, ho)), [[t, i.content]])), 128))]))), 128))])], 4)) : (f(), A("div", go, [V(M(pi), { size: 16 }), I("span", null, O(M(r).table.empty), 1)]))]));
3747
+ }, null, 44, go)), [[t, i.content]])), 128))]))), 128))])], 4)) : (f(), A("div", _o, [V(M(mi), { size: 16 }), I("span", null, O(M(r).table.empty), 1)]))]));
3734
3748
  }
3735
- }), [["__scopeId", "data-v-4f49860b"]]), vo = /* @__PURE__ */ B({
3749
+ }), [["__scopeId", "data-v-4f49860b"]]), yo = /* @__PURE__ */ B({
3736
3750
  __name: "VideoPlayButton",
3737
3751
  props: { hoverEffect: {
3738
3752
  type: Boolean,
@@ -3750,7 +3764,7 @@ var qa = /* @__PURE__ */ B({
3750
3764
  });
3751
3765
  //#endregion
3752
3766
  //#region src/utils/videoThumbnail.ts
3753
- function yo(e) {
3767
+ function bo(e) {
3754
3768
  if (!e) return {
3755
3769
  platform: "unknown",
3756
3770
  videoId: null,
@@ -3782,25 +3796,25 @@ function yo(e) {
3782
3796
  thumbnailUrl: null
3783
3797
  };
3784
3798
  }
3785
- function bo(e, t) {
3786
- return t || yo(e).thumbnailUrl;
3799
+ function xo(e, t) {
3800
+ return t || bo(e).thumbnailUrl;
3787
3801
  }
3788
3802
  //#endregion
3789
3803
  //#region src/components/blocks/VideoBlock.vue?vue&type=script&setup=true&lang.ts
3790
- var xo = ["src", "alt"], So = {
3804
+ var So = ["src", "alt"], Co = {
3791
3805
  class: "tpl:max-w-full tpl:truncate tpl:px-3 tpl:text-xs tpl:font-medium tpl:text-[var(--tpl-primary)]",
3792
3806
  style: { opacity: "0.7" }
3793
- }, Co = ["href"], wo = ["src", "alt"], To = ["src", "alt"], Eo = {
3807
+ }, wo = ["href"], To = ["src", "alt"], Eo = ["src", "alt"], Do = {
3794
3808
  key: 3,
3795
3809
  class: "tpl:flex tpl:min-h-[150px] tpl:flex-col tpl:items-center tpl:justify-center tpl:gap-2 tpl:rounded tpl:border-2 tpl:border-dashed tpl:text-sm tpl:border-[var(--tpl-border-light)] tpl:bg-[var(--tpl-bg-hover)] tpl:text-[var(--tpl-text-dim)]"
3796
- }, Do = /* @__PURE__ */ B({
3810
+ }, Oo = /* @__PURE__ */ B({
3797
3811
  __name: "VideoBlock",
3798
3812
  props: {
3799
3813
  block: {},
3800
3814
  viewport: {}
3801
3815
  },
3802
3816
  setup(e) {
3803
- let t = e, { t: n } = Y(), { syntax: r } = Fi(), i = k(() => _t(t.block.url, r) || _t(t.block.thumbnailUrl, r)), a = k(() => i.value ? null : bo(t.block.url, t.block.thumbnailUrl)), o = k(() => ({ textAlign: t.block.align })), s = k(() => ({
3817
+ let t = e, { t: n } = Y(), { syntax: r } = Ii(), i = k(() => _t(t.block.url, r) || _t(t.block.thumbnailUrl, r)), a = k(() => i.value ? null : xo(t.block.url, t.block.thumbnailUrl)), o = k(() => ({ textAlign: t.block.align })), s = k(() => ({
3804
3818
  maxWidth: "100%",
3805
3819
  width: t.block.width === "full" ? "100%" : `${t.block.width}px`,
3806
3820
  display: "block",
@@ -3818,16 +3832,16 @@ var xo = ["src", "alt"], So = {
3818
3832
  class: "tpl:w-full tpl:border-0",
3819
3833
  src: e.block.placeholderUrl,
3820
3834
  alt: e.block.alt
3821
- }, null, 8, xo), V(vo)], 4)) : i.value ? (f(), A("div", {
3835
+ }, null, 8, So), V(yo)], 4)) : i.value ? (f(), A("div", {
3822
3836
  key: 1,
3823
3837
  class: "tpl:relative tpl:!flex tpl:min-h-[150px] tpl:flex-col tpl:items-center tpl:justify-center tpl:gap-2 tpl:rounded tpl:border-2 tpl:border-dashed tpl:text-center tpl:bg-[var(--tpl-bg-elevated)]",
3824
3838
  style: L([{ "border-color": "color-mix(in srgb, var(--tpl-primary) 40%, transparent)" }, s.value])
3825
- }, [V(M(vi), {
3839
+ }, [V(M(yi), {
3826
3840
  size: 36,
3827
3841
  "stroke-width": 1.5,
3828
3842
  class: "tpl:text-[var(--tpl-primary)]",
3829
3843
  style: { opacity: "0.5" }
3830
- }), I("span", So, O(c.value), 1)], 4)) : a.value ? (f(), A(R, { key: 2 }, [e.block.url ? (f(), A("a", {
3844
+ }), I("span", Co, O(c.value), 1)], 4)) : a.value ? (f(), A(R, { key: 2 }, [e.block.url ? (f(), A("a", {
3831
3845
  key: 0,
3832
3846
  href: e.block.url,
3833
3847
  target: "_blank",
@@ -3839,7 +3853,7 @@ var xo = ["src", "alt"], So = {
3839
3853
  class: "tpl:w-full tpl:border-0",
3840
3854
  src: a.value,
3841
3855
  alt: e.block.alt
3842
- }, null, 8, wo), V(vo, { "hover-effect": "" })], 12, Co)) : (f(), A("div", {
3856
+ }, null, 8, To), V(yo, { "hover-effect": "" })], 12, wo)) : (f(), A("div", {
3843
3857
  key: 1,
3844
3858
  class: "tpl:relative tpl:inline-block",
3845
3859
  style: L(s.value)
@@ -3847,31 +3861,31 @@ var xo = ["src", "alt"], So = {
3847
3861
  class: "tpl:w-full tpl:border-0",
3848
3862
  src: a.value,
3849
3863
  alt: e.block.alt
3850
- }, null, 8, To), V(vo)], 4))], 64)) : (f(), A("div", Eo, [V(M(vi), {
3864
+ }, null, 8, Eo), V(yo)], 4))], 64)) : (f(), A("div", Do, [V(M(yi), {
3851
3865
  size: 40,
3852
3866
  "stroke-width": 1.5,
3853
3867
  class: "tpl:text-[var(--tpl-border-light)]"
3854
3868
  }), I("span", null, O(M(n).video.addVideo), 1)]))], 4));
3855
3869
  }
3856
- }), Oo = {
3857
- section: Za,
3858
- title: qa,
3859
- paragraph: Aa,
3860
- image: _a,
3861
- button: Cr,
3862
- divider: ea,
3863
- video: Do,
3864
- social: so,
3865
- menu: xa,
3866
- table: _o,
3867
- spacer: uo,
3868
- html: aa,
3869
- countdown: E(() => import("./CountdownBlock-WYz9b9Ex.js").then((e) => e.n))
3870
+ }), ko = {
3871
+ section: Qa,
3872
+ title: Ja,
3873
+ paragraph: ja,
3874
+ image: va,
3875
+ button: wr,
3876
+ divider: ta,
3877
+ video: Oo,
3878
+ social: co,
3879
+ menu: Sa,
3880
+ table: vo,
3881
+ spacer: fo,
3882
+ html: oa,
3883
+ countdown: E(() => import("./CountdownBlock-BEWsiqgw.js").then((e) => e.n))
3870
3884
  };
3871
- function ko(e) {
3885
+ function Ao(e) {
3872
3886
  let { editor: t, config: n, translations: r, fontsManager: i } = e, { t: a, format: o } = Y(r);
3873
3887
  t.setUiTheme(n.uiTheme ?? "auto");
3874
- let { resolvedTheme: c } = ur(k(() => t.state.uiTheme)), u = C(n.theme ?? {}), { themeStyles: d } = fr({
3888
+ let { resolvedTheme: c } = dr(k(() => t.state.uiTheme)), u = C(n.theme ?? {}), { themeStyles: d } = pr({
3875
3889
  themeOverrides: u,
3876
3890
  resolvedTheme: c,
3877
3891
  extraStyles: e.themeExtraStyles
@@ -3896,13 +3910,13 @@ function ko(e) {
3896
3910
  g && (_ = H(f.isNavigating, (e) => {
3897
3911
  e ? g.pause() : g.resume();
3898
3912
  }));
3899
- let v = lr(t, {
3913
+ let v = ur(t, {
3900
3914
  t: a,
3901
3915
  format: o
3902
- }), y = gr();
3903
- if (vr(y, Oo), n.customBlocks?.length) for (let e of n.customBlocks) y.registerCustom(e, Qi);
3916
+ }), y = _r();
3917
+ if (yr(y, ko), n.customBlocks?.length) for (let e of n.customBlocks) y.registerCustom(e, $i);
3904
3918
  function b(e) {
3905
- for (let t of e) y.registerCustom(t, Qi);
3919
+ for (let t of e) y.registerCustom(t, $i);
3906
3920
  }
3907
3921
  let x = jn();
3908
3922
  if (s() && l(x.dispose), e.containerEl) {
@@ -3913,7 +3927,7 @@ function ko(e) {
3913
3927
  }, { capture: !0 });
3914
3928
  }
3915
3929
  function S(r) {
3916
- x.isActive() && br(r, {
3930
+ x.isActive() && xr(r, {
3917
3931
  history: f,
3918
3932
  selectBlock: (e) => t.selectBlock(e),
3919
3933
  getSelectedBlockId: () => t.state.selectedBlockId,
@@ -3927,11 +3941,12 @@ function ko(e) {
3927
3941
  p($n, e.editorRoot ?? document), p(er, w), p(Mn, r), p(Nn, t), p(Pn, f), p(Fn, m), p(In, h), p(Ln, i), p(Rn, d), p(zn, c), p(Bn, n.blockDefaults), p(Vn, y), p(Hn, n.customBlocks ?? []);
3928
3942
  let T = ft(n.mergeTags?.syntax);
3929
3943
  p(Un, n.mergeTags?.tags ?? []), p(Wn, T), p(Gn, n.mergeTags?.onRequest ?? null), p(Kn, n.mergeTags?.autocomplete !== !1), p(qn, n.onRequestMedia ?? null), p(Jn, n.displayConditions?.conditions ?? []), p(Yn, n.displayConditions?.allowCustom ?? !1), p(Xn, e.capabilities ?? {}), p(Zn, v);
3930
- let E = n.accessibility?.disabled === !0 ? null : sr({
3944
+ let E = sr(n.lint) ? null : cr({
3931
3945
  content: t.content,
3932
- options: n.accessibility ?? {},
3946
+ options: n.lint ?? {},
3933
3947
  updateBlock: t.updateBlock,
3934
- updateSettings: t.updateSettings
3948
+ updateSettings: t.updateSettings,
3949
+ removeBlock: t.removeBlock
3935
3950
  });
3936
3951
  p(Qn, E);
3937
3952
  function D() {
@@ -3949,7 +3964,7 @@ function ko(e) {
3949
3964
  themeOverrides: u,
3950
3965
  registry: y,
3951
3966
  keyboardReorder: v,
3952
- accessibilityLint: E,
3967
+ templateLint: E,
3953
3968
  popoverRoot: w,
3954
3969
  registerCustomBlocks: b,
3955
3970
  destroy: D
@@ -3957,7 +3972,7 @@ function ko(e) {
3957
3972
  }
3958
3973
  //#endregion
3959
3974
  //#region ../core/src/cloud/auth.ts
3960
- var Ao = class e {
3975
+ var jo = class e {
3961
3976
  static DEFAULT_BASE_URL = "https://templatical.com";
3962
3977
  accessToken = null;
3963
3978
  expiresAt = null;
@@ -4058,8 +4073,8 @@ var Ao = class e {
4058
4073
  return a.status === 401 && (a = await i(await this.refreshToken())), a;
4059
4074
  }
4060
4075
  };
4061
- function jo(e, t) {
4062
- return e.mode === "direct" ? new Ao({
4076
+ function Mo(e, t) {
4077
+ return e.mode === "direct" ? new jo({
4063
4078
  url: `${(e.baseUrl ?? "https://templatical.com").replace(/\/$/, "")}/api/v1/auth/token`,
4064
4079
  baseUrl: e.baseUrl,
4065
4080
  requestOptions: {
@@ -4073,7 +4088,7 @@ function jo(e, t) {
4073
4088
  }
4074
4089
  },
4075
4090
  onError: t
4076
- }) : new Ao({
4091
+ }) : new jo({
4077
4092
  url: e.url,
4078
4093
  baseUrl: e.baseUrl,
4079
4094
  requestOptions: e.requestOptions,
@@ -4085,16 +4100,16 @@ function jo(e, t) {
4085
4100
  function Z(e, t) {
4086
4101
  return e.replace(/\{(\w+)\}/g, (e, n) => encodeURIComponent(t[n] ?? ""));
4087
4102
  }
4088
- var Mo = "/api/v1/projects/{project}/tenants/{tenant}", Q = `${Mo}/templates/{template}`, No = `${Q}/ai`, Po = `${Mo}/media`, Fo = `${Po}/folders`, Io = `${Mo}/saved-modules`, $ = {
4103
+ var No = "/api/v1/projects/{project}/tenants/{tenant}", Q = `${No}/templates/{template}`, Po = `${Q}/ai`, Fo = `${No}/media`, Io = `${Fo}/folders`, Lo = `${No}/saved-modules`, $ = {
4089
4104
  health: "/api/v1/health",
4090
- "projects.config": `${Mo}/config`,
4091
- "broadcasting.auth": `${Mo}/broadcasting/auth`,
4092
- "templates.store": `${Mo}/templates`,
4105
+ "projects.config": `${No}/config`,
4106
+ "broadcasting.auth": `${No}/broadcasting/auth`,
4107
+ "templates.store": `${No}/templates`,
4093
4108
  "templates.show": `${Q}`,
4094
4109
  "templates.update": `${Q}`,
4095
4110
  "templates.destroy": `${Q}`,
4096
4111
  "templates.export": `${Q}/export`,
4097
- "templates.importFromBeefree": `${Mo}/templates/import/from-beefree`,
4112
+ "templates.importFromBeefree": `${No}/templates/import/from-beefree`,
4098
4113
  "templates.sendTestEmail": `${Q}/send-test-email`,
4099
4114
  "snapshots.index": `${Q}/snapshots`,
4100
4115
  "snapshots.store": `${Q}/snapshots`,
@@ -4105,31 +4120,31 @@ var Mo = "/api/v1/projects/{project}/tenants/{tenant}", Q = `${Mo}/templates/{te
4105
4120
  "comments.update": `${Q}/comments/{comment}`,
4106
4121
  "comments.destroy": `${Q}/comments/{comment}`,
4107
4122
  "comments.resolve": `${Q}/comments/{comment}/resolve`,
4108
- "ai.generate": `${No}/generate`,
4109
- "ai.conversationMessages": `${No}/conversation-messages`,
4110
- "ai.suggestions": `${No}/suggestions`,
4111
- "ai.rewriteText": `${No}/rewrite-text`,
4112
- "ai.score": `${No}/score`,
4113
- "ai.fixFinding": `${No}/fix-finding`,
4114
- "ai.generateFromDesign": `${No}/generate-from-design`,
4115
- "media.upload": `${Po}/upload`,
4116
- "media.browse": `${Po}/browse`,
4117
- "media.delete": `${Po}/delete`,
4118
- "media.move": `${Po}/move`,
4119
- "media.update": `${Po}/{media}`,
4120
- "media.replace": `${Po}/{media}/replace`,
4121
- "media.checkUsage": `${Po}/check-usage`,
4122
- "media.frequentlyUsed": `${Po}/frequently-used`,
4123
- "media.importFromUrl": `${Po}/import-from-url`,
4124
- "folders.index": `${Fo}`,
4125
- "folders.store": `${Fo}`,
4126
- "folders.update": `${Fo}/{mediaFolder}`,
4127
- "folders.destroy": `${Fo}/{mediaFolder}`,
4128
- "savedModules.index": `${Io}`,
4129
- "savedModules.store": `${Io}`,
4130
- "savedModules.update": `${Io}/{savedModule}`,
4131
- "savedModules.destroy": `${Io}/{savedModule}`
4132
- }, Lo = class {
4123
+ "ai.generate": `${Po}/generate`,
4124
+ "ai.conversationMessages": `${Po}/conversation-messages`,
4125
+ "ai.suggestions": `${Po}/suggestions`,
4126
+ "ai.rewriteText": `${Po}/rewrite-text`,
4127
+ "ai.score": `${Po}/score`,
4128
+ "ai.fixFinding": `${Po}/fix-finding`,
4129
+ "ai.generateFromDesign": `${Po}/generate-from-design`,
4130
+ "media.upload": `${Fo}/upload`,
4131
+ "media.browse": `${Fo}/browse`,
4132
+ "media.delete": `${Fo}/delete`,
4133
+ "media.move": `${Fo}/move`,
4134
+ "media.update": `${Fo}/{media}`,
4135
+ "media.replace": `${Fo}/{media}/replace`,
4136
+ "media.checkUsage": `${Fo}/check-usage`,
4137
+ "media.frequentlyUsed": `${Fo}/frequently-used`,
4138
+ "media.importFromUrl": `${Fo}/import-from-url`,
4139
+ "folders.index": `${Io}`,
4140
+ "folders.store": `${Io}`,
4141
+ "folders.update": `${Io}/{mediaFolder}`,
4142
+ "folders.destroy": `${Io}/{mediaFolder}`,
4143
+ "savedModules.index": `${Lo}`,
4144
+ "savedModules.store": `${Lo}`,
4145
+ "savedModules.update": `${Lo}/{savedModule}`,
4146
+ "savedModules.destroy": `${Lo}/{savedModule}`
4147
+ }, Ro = class {
4133
4148
  constructor(e) {
4134
4149
  this.authManager = e;
4135
4150
  }
@@ -4314,14 +4329,14 @@ var Mo = "/api/v1/projects/{project}/tenants/{tenant}", Q = `${Mo}/templates/{te
4314
4329
  };
4315
4330
  //#endregion
4316
4331
  //#region ../core/src/cloud/websocket-client.ts
4317
- function Ro(e) {
4332
+ function zo(e) {
4318
4333
  return {
4319
4334
  host: e.host,
4320
4335
  port: e.port,
4321
4336
  appKey: e.app_key
4322
4337
  };
4323
4338
  }
4324
- var zo = class {
4339
+ var Bo = class {
4325
4340
  pusher = null;
4326
4341
  authManager;
4327
4342
  config;
@@ -4388,7 +4403,7 @@ var zo = class {
4388
4403
  };
4389
4404
  //#endregion
4390
4405
  //#region ../core/src/cloud/mcp-operation-handler.ts
4391
- function Bo(e, t) {
4406
+ function Vo(e, t) {
4392
4407
  let { operation: n, data: r } = t;
4393
4408
  switch (n) {
4394
4409
  case "add_block":
@@ -4416,8 +4431,8 @@ function Bo(e, t) {
4416
4431
  }
4417
4432
  //#endregion
4418
4433
  //#region ../core/src/cloud/editor.ts
4419
- function Vo(e) {
4420
- let t = new Lo(e.authManager), n = S({
4434
+ function Ho(e) {
4435
+ let t = new Ro(e.authManager), n = S({
4421
4436
  template: null,
4422
4437
  content: Ue(e.defaultFontFamily, e.templateDefaults),
4423
4438
  selectedBlockId: null,
@@ -4613,11 +4628,11 @@ function Vo(e) {
4613
4628
  }
4614
4629
  //#endregion
4615
4630
  //#region ../core/src/cloud/ai-chat.ts
4616
- var Ho = 0;
4617
- function Uo() {
4618
- return `msg_${Date.now()}_${++Ho}`;
4631
+ var Uo = 0;
4632
+ function Wo() {
4633
+ return `msg_${Date.now()}_${++Uo}`;
4619
4634
  }
4620
- function Wo(e) {
4635
+ function Go(e) {
4621
4636
  let { authManager: t, getTemplateId: n, onApply: r, onError: i } = e, a = C([]), o = C(!1), s = C(!1), c = C(null), l = C(null), u = C(null), d = C(null), f = C(null), p = C(null), m = C(!1), h = C([]), g = C(!1);
4622
4637
  function _(e, t) {
4623
4638
  let n = a.value.findIndex((t) => t.id === e);
@@ -4711,14 +4726,14 @@ function Wo(e) {
4711
4726
  let v = n();
4712
4727
  if (!v) throw Error("Template must be saved before using AI generation");
4713
4728
  o.value = !0, c.value = null, l.value = null, h.value = [];
4714
- let y = Uo();
4729
+ let y = Wo();
4715
4730
  a.value = [...a.value, {
4716
4731
  id: y,
4717
4732
  role: "user",
4718
4733
  content: e,
4719
4734
  timestamp: Date.now()
4720
4735
  }];
4721
- let b = Uo();
4736
+ let b = Wo();
4722
4737
  a.value = [...a.value, {
4723
4738
  id: b,
4724
4739
  role: "assistant",
@@ -4809,7 +4824,7 @@ function Wo(e) {
4809
4824
  }
4810
4825
  //#endregion
4811
4826
  //#region ../core/src/cloud/ai-config.ts
4812
- function Go(e) {
4827
+ function Ko(e) {
4813
4828
  function t(t) {
4814
4829
  return e === !1 ? !1 : e?.[t] !== !1;
4815
4830
  }
@@ -4820,7 +4835,7 @@ function Go(e) {
4820
4835
  }
4821
4836
  //#endregion
4822
4837
  //#region ../core/src/cloud/template-scoring.ts
4823
- function Ko(e) {
4838
+ function qo(e) {
4824
4839
  let { authManager: t, getTemplateId: n } = e, r = C(!1), i = C(null), a = C(null), o = C(null), s = C(""), c = C(null);
4825
4840
  async function l(e, o) {
4826
4841
  let s = n();
@@ -4965,7 +4980,7 @@ function Ko(e) {
4965
4980
  }
4966
4981
  //#endregion
4967
4982
  //#region ../core/src/cloud/design-reference.ts
4968
- function qo(e) {
4983
+ function Jo(e) {
4969
4984
  let { authManager: t, getTemplateId: n, onApply: r, onError: i } = e, a = C(!1), o = C(null);
4970
4985
  async function s(e) {
4971
4986
  let s = n();
@@ -5028,8 +5043,8 @@ function qo(e) {
5028
5043
  }
5029
5044
  //#endregion
5030
5045
  //#region ../core/src/cloud/comments.ts
5031
- function Jo(e) {
5032
- let { authManager: t, getTemplateId: n, getSocketId: r, onComment: i, onError: a, hasCommentingFeature: o } = e, s = new Lo(t), c = C([]), l = C(!1), u = C(!1), d = k(() => (o?.() ?? !1) && t.userConfig !== null), f = k(() => {
5046
+ function Yo(e) {
5047
+ let { authManager: t, getTemplateId: n, getSocketId: r, onComment: i, onError: a, hasCommentingFeature: o } = e, s = new Ro(t), c = C([]), l = C(!1), u = C(!1), d = k(() => (o?.() ?? !1) && t.userConfig !== null), f = k(() => {
5033
5048
  let e = 0;
5034
5049
  for (let t of c.value) e += 1 + (t.replies?.length ?? 0);
5035
5050
  return e;
@@ -5228,17 +5243,17 @@ function Jo(e) {
5228
5243
  }
5229
5244
  //#endregion
5230
5245
  //#region ../core/src/cloud/comment-listener.ts
5231
- function Yo(e) {
5246
+ function Xo(e) {
5232
5247
  let { comments: t, channel: n } = e;
5233
5248
  H(n, (e, n) => {
5234
5249
  n && n.unbind("comment-broadcast"), e && e.bind("comment-broadcast", (e) => {
5235
- Xo(t, e);
5250
+ Zo(t, e);
5236
5251
  });
5237
5252
  }), l(() => {
5238
5253
  n.value?.unbind("comment-broadcast");
5239
5254
  });
5240
5255
  }
5241
- function Xo(e, t) {
5256
+ function Zo(e, t) {
5242
5257
  switch (t.action) {
5243
5258
  case "comment_created":
5244
5259
  e.applyRemoteCreate(t.comment);
@@ -5257,7 +5272,7 @@ function Xo(e, t) {
5257
5272
  }
5258
5273
  //#endregion
5259
5274
  //#region ../core/src/cloud/collaboration.ts
5260
- var Zo = [
5275
+ var Qo = [
5261
5276
  "pusher:member_added",
5262
5277
  "pusher:member_removed",
5263
5278
  "client-block_locked",
@@ -5265,10 +5280,10 @@ var Zo = [
5265
5280
  "client-operation",
5266
5281
  "mcp-operation"
5267
5282
  ];
5268
- function Qo(e) {
5269
- for (let t of Zo) e.unbind(t);
5283
+ function $o(e) {
5284
+ for (let t of Qo) e.unbind(t);
5270
5285
  }
5271
- var $o = [
5286
+ var es = [
5272
5287
  "#3b82f6",
5273
5288
  "#ef4444",
5274
5289
  "#10b981",
@@ -5280,10 +5295,10 @@ var $o = [
5280
5295
  "#6366f1",
5281
5296
  "#14b8a6"
5282
5297
  ];
5283
- function es(e) {
5298
+ function ts(e) {
5284
5299
  let { authManager: t, editor: n, channel: r } = e, i = C([]), a = C(/* @__PURE__ */ new Map()), o = 0, s = !1, c = k(() => t.userConfig?.id ?? "");
5285
5300
  function u() {
5286
- let e = $o[o % $o.length];
5301
+ let e = es[o % es.length];
5287
5302
  return o++, e;
5288
5303
  }
5289
5304
  function d(e) {
@@ -5325,7 +5340,7 @@ function es(e) {
5325
5340
  function h(e) {
5326
5341
  s = !0;
5327
5342
  try {
5328
- Bo(n, e);
5343
+ Vo(n, e);
5329
5344
  } finally {
5330
5345
  s = !1;
5331
5346
  }
@@ -5345,7 +5360,7 @@ function es(e) {
5345
5360
  return H(() => n.state.selectedBlockId, (e, t) => {
5346
5361
  s || (t && v(t), e && _(e));
5347
5362
  }), H(r, (t, n) => {
5348
- if (n && Qo(n), !t) {
5363
+ if (n && $o(n), !t) {
5349
5364
  i.value = [], a.value = /* @__PURE__ */ new Map(), o = 0;
5350
5365
  return;
5351
5366
  }
@@ -5377,7 +5392,7 @@ function es(e) {
5377
5392
  h(e);
5378
5393
  });
5379
5394
  }), l(() => {
5380
- r.value && Qo(r.value);
5395
+ r.value && $o(r.value);
5381
5396
  }), {
5382
5397
  collaborators: i,
5383
5398
  lockedBlocks: a,
@@ -5387,7 +5402,7 @@ function es(e) {
5387
5402
  }
5388
5403
  //#endregion
5389
5404
  //#region ../core/src/cloud/collaboration-broadcast.ts
5390
- function ts(e, t) {
5405
+ function ns(e, t) {
5391
5406
  let n = e.addBlock, r = e.updateBlock, i = e.removeBlock, a = e.moveBlock, o = e.updateSettings, s = e.setContent;
5392
5407
  e.addBlock = (e, r, i) => {
5393
5408
  n(e, r, i), t._broadcastOperation({
@@ -5441,11 +5456,11 @@ function ts(e, t) {
5441
5456
  }
5442
5457
  //#endregion
5443
5458
  //#region ../core/src/cloud/web-socket.ts
5444
- function ns(e) {
5459
+ function rs(e) {
5445
5460
  let { authManager: t, onError: n } = e, r = C(null), i = C(!1), a = null, o = null;
5446
5461
  async function s(e, s) {
5447
5462
  if (a) return;
5448
- a = new zo({
5463
+ a = new Bo({
5449
5464
  authManager: t,
5450
5465
  config: s,
5451
5466
  onError: n
@@ -5473,8 +5488,8 @@ function ns(e) {
5473
5488
  }
5474
5489
  //#endregion
5475
5490
  //#region ../core/src/cloud/saved-modules.ts
5476
- function rs(e) {
5477
- let t = new Lo(e.authManager), n = C([]), r = C(!1);
5491
+ function is(e) {
5492
+ let t = new Ro(e.authManager), n = C([]), r = C(!1);
5478
5493
  async function i(i) {
5479
5494
  r.value = !0;
5480
5495
  try {
@@ -5522,8 +5537,8 @@ function rs(e) {
5522
5537
  }
5523
5538
  //#endregion
5524
5539
  //#region ../core/src/cloud/snapshots.ts
5525
- function is(e) {
5526
- let t = new Lo(e.authManager), n = C([]), r = C(!1), i = C(!1);
5540
+ function as(e) {
5541
+ let t = new Ro(e.authManager), n = C([]), r = C(!1), i = C(!1);
5527
5542
  async function a() {
5528
5543
  r.value = !0;
5529
5544
  try {
@@ -5555,8 +5570,8 @@ function is(e) {
5555
5570
  }
5556
5571
  //#endregion
5557
5572
  //#region ../core/src/cloud/test-email.ts
5558
- function as(e) {
5559
- let { authManager: t, getTemplateId: n, save: r, exportHtml: i, onError: a, isAuthReady: o, onBeforeTestEmail: s } = e, c = new Lo(t), l = C(!1), u = C(null), d = C(null);
5573
+ function os(e) {
5574
+ let { authManager: t, getTemplateId: n, save: r, exportHtml: i, onError: a, isAuthReady: o, onBeforeTestEmail: s } = e, c = new Ro(t), l = C(!1), u = C(null), d = C(null);
5560
5575
  o && H(o, (e) => {
5561
5576
  e && (d.value = t.testEmailConfig);
5562
5577
  }, { immediate: !0 });
@@ -5592,8 +5607,8 @@ function as(e) {
5592
5607
  }
5593
5608
  //#endregion
5594
5609
  //#region ../core/src/cloud/export.ts
5595
- function os(e) {
5596
- let { authManager: t, getFontsConfig: n, canUseCustomFonts: r } = e, i = new Lo(t);
5610
+ function ss(e) {
5611
+ let { authManager: t, getFontsConfig: n, canUseCustomFonts: r } = e, i = new Ro(t);
5597
5612
  function a() {
5598
5613
  let e = n?.();
5599
5614
  return {
@@ -5619,8 +5634,8 @@ function os(e) {
5619
5634
  }
5620
5635
  //#endregion
5621
5636
  //#region ../core/src/cloud/plan-config.ts
5622
- function ss(e) {
5623
- let { authManager: t, onError: n } = e, r = C(null), i = C(!1), a = new Lo(t), o = k(() => r.value?.features ?? null);
5637
+ function cs(e) {
5638
+ let { authManager: t, onError: n } = e, r = C(null), i = C(!1), a = new Ro(t), o = k(() => r.value?.features ?? null);
5624
5639
  function s(e) {
5625
5640
  return r.value?.features[e] ?? !1;
5626
5641
  }
@@ -5646,11 +5661,11 @@ function ss(e) {
5646
5661
  }
5647
5662
  //#endregion
5648
5663
  //#region ../core/src/cloud/health-check.ts
5649
- var cs = 5e3;
5650
- function ls(e) {
5664
+ var ls = 5e3;
5665
+ function us(e) {
5651
5666
  return e.authManager ? e.authManager.resolveUrl($.health) : `${(e.baseUrl ?? "https://templatical.com").replace(/\/$/, "")}${$.health}`;
5652
5667
  }
5653
- async function us(e, t) {
5668
+ async function ds(e, t) {
5654
5669
  let n = performance.now();
5655
5670
  try {
5656
5671
  let r = t ? await t.authenticatedFetch($.health, {
@@ -5702,7 +5717,7 @@ async function us(e, t) {
5702
5717
  };
5703
5718
  }
5704
5719
  }
5705
- async function ds(e) {
5720
+ async function fs(e) {
5706
5721
  if (!e?.host || !e?.app_key) return {
5707
5722
  ok: !1,
5708
5723
  error: "WebSocket configuration not available"
@@ -5718,7 +5733,7 @@ async function ds(e) {
5718
5733
  ok: !1,
5719
5734
  error: "WebSocket connection timed out"
5720
5735
  });
5721
- }, cs);
5736
+ }, ls);
5722
5737
  try {
5723
5738
  n = new WebSocket(t);
5724
5739
  } catch (t) {
@@ -5738,8 +5753,8 @@ async function ds(e) {
5738
5753
  };
5739
5754
  });
5740
5755
  }
5741
- async function fs(e = {}) {
5742
- let t = await us(ls(e), e.authManager), n = await ds(t.wsConfig);
5756
+ async function ps(e = {}) {
5757
+ let t = await ds(us(e), e.authManager), n = await fs(t.wsConfig);
5743
5758
  return {
5744
5759
  api: t.api,
5745
5760
  websocket: n,
@@ -5749,29 +5764,29 @@ async function fs(e = {}) {
5749
5764
  }
5750
5765
  //#endregion
5751
5766
  //#region ../core/src/cloud/mcp-listener.ts
5752
- function ps(e) {
5767
+ function ms(e) {
5753
5768
  let { editor: t, channel: n, onOperation: r } = e;
5754
5769
  H(n, (e, n) => {
5755
5770
  n && n.unbind("mcp-operation"), e && e.bind("mcp-operation", (e) => {
5756
- Bo(t, e), r?.(e);
5771
+ Vo(t, e), r?.(e);
5757
5772
  });
5758
5773
  });
5759
5774
  }
5760
5775
  //#endregion
5761
5776
  //#region src/cloud/components/AiChatSidebar.vue?vue&type=script&setup=true&lang.ts
5762
- var ms = {
5777
+ var hs = {
5763
5778
  key: 0,
5764
5779
  class: "tpl-ai-sidebar tpl:absolute tpl:top-14 tpl:right-0 tpl:bottom-0 tpl:z-panel tpl:flex tpl:w-[360px] tpl:flex-col tpl:border-l tpl:border-[var(--tpl-border)] tpl:bg-[var(--tpl-bg-elevated)]"
5765
- }, hs = { class: "tpl:flex tpl:items-center tpl:justify-between tpl:border-b tpl:border-[var(--tpl-border)] tpl:px-4 tpl:py-3" }, gs = { class: "tpl:flex tpl:items-center tpl:gap-1.5 tpl:text-sm tpl:font-medium tpl:text-[var(--tpl-primary)]" }, _s = { class: "tpl:flex tpl:items-center tpl:gap-1" }, vs = ["title"], ys = { class: "tpl:relative tpl:flex tpl:min-h-0 tpl:flex-1 tpl:flex-col" }, bs = {
5780
+ }, gs = { class: "tpl:flex tpl:items-center tpl:justify-between tpl:border-b tpl:border-[var(--tpl-border)] tpl:px-4 tpl:py-3" }, _s = { class: "tpl:flex tpl:items-center tpl:gap-1.5 tpl:text-sm tpl:font-medium tpl:text-[var(--tpl-primary)]" }, vs = { class: "tpl:flex tpl:items-center tpl:gap-1" }, ys = ["title"], bs = { class: "tpl:relative tpl:flex tpl:min-h-0 tpl:flex-1 tpl:flex-col" }, xs = {
5766
5781
  key: 0,
5767
5782
  class: "tpl:flex tpl:h-full tpl:flex-col tpl:items-center tpl:justify-center tpl:gap-3 tpl:text-center"
5768
- }, xs = { class: "tpl:text-sm tpl:text-[var(--tpl-text-muted)]" }, Ss = {
5783
+ }, Ss = { class: "tpl:text-sm tpl:text-[var(--tpl-text-muted)]" }, Cs = {
5769
5784
  key: 1,
5770
5785
  class: "tpl:flex tpl:h-full tpl:flex-col tpl:items-center tpl:justify-center tpl:gap-3 tpl:text-center"
5771
- }, Cs = { class: "tpl:max-w-[240px] tpl:text-sm tpl:text-[var(--tpl-text-muted)]" }, ws = {
5786
+ }, ws = { class: "tpl:max-w-[240px] tpl:text-sm tpl:text-[var(--tpl-text-muted)]" }, Ts = {
5772
5787
  key: 2,
5773
5788
  class: "tpl:flex tpl:flex-col tpl:gap-4"
5774
- }, Ts = {
5789
+ }, Es = {
5775
5790
  key: 0,
5776
5791
  class: "tpl:self-end tpl:rounded-[var(--tpl-radius-sm)] tpl:px-3.5 tpl:py-2.5 tpl:text-sm",
5777
5792
  style: {
@@ -5780,10 +5795,10 @@ var ms = {
5780
5795
  "max-width": "85%",
5781
5796
  "box-shadow": "var(--tpl-shadow)"
5782
5797
  }
5783
- }, Es = {
5798
+ }, Ds = {
5784
5799
  key: 1,
5785
5800
  class: "tpl:flex tpl:flex-col tpl:gap-2"
5786
- }, Ds = {
5801
+ }, Os = {
5787
5802
  key: 1,
5788
5803
  class: "tpl:rounded-[var(--tpl-radius-sm)] tpl:px-3.5 tpl:py-2.5 tpl:text-sm tpl:whitespace-pre-wrap",
5789
5804
  style: {
@@ -5792,21 +5807,21 @@ var ms = {
5792
5807
  color: "var(--tpl-text)",
5793
5808
  "box-shadow": "var(--tpl-shadow)"
5794
5809
  }
5795
- }, Os = {
5810
+ }, ks = {
5796
5811
  key: 0,
5797
5812
  class: "tpl:mx-3 tpl:mb-2 tpl:flex tpl:items-start tpl:gap-2 tpl:rounded-lg tpl:px-3 tpl:py-2 tpl:text-xs",
5798
5813
  style: {
5799
5814
  "background-color": "var(--tpl-danger-light)",
5800
5815
  color: "var(--tpl-danger)"
5801
5816
  }
5802
- }, ks = {
5817
+ }, As = {
5803
5818
  key: 1,
5804
5819
  class: "tpl:absolute tpl:right-0 tpl:bottom-0 tpl:left-0 tpl:z-10 tpl:px-3 tpl:pb-3",
5805
5820
  style: {
5806
5821
  "background-color": "color-mix(\n in srgb,\n var(--tpl-bg) 50%,\n transparent\n )",
5807
5822
  "backdrop-filter": "blur(2px)"
5808
5823
  }
5809
- }, As = { class: "tpl:flex tpl:flex-col tpl:gap-1.5" }, js = ["onClick"], Ms = { class: "tpl:border-t tpl:p-3 tpl:border-[var(--tpl-border)]" }, Ns = { class: "tpl-ai-input-wrapper tpl:flex tpl:items-end tpl:gap-2 tpl:rounded-[var(--tpl-radius)] tpl:border tpl:px-3 tpl:py-2 tpl:border-[var(--tpl-border)] tpl:bg-[var(--tpl-bg)]" }, Ps = ["placeholder", "disabled"], Fs = ["disabled"], Is = { class: "tpl:m-0 tpl:px-1 tpl:pt-2 tpl:text-center tpl:text-[11px] tpl:text-[var(--tpl-text-dim)]" }, Ls = /* @__PURE__ */ B({
5824
+ }, js = { class: "tpl:flex tpl:flex-col tpl:gap-1.5" }, Ms = ["onClick"], Ns = { class: "tpl:border-t tpl:p-3 tpl:border-[var(--tpl-border)]" }, Ps = { class: "tpl-ai-input-wrapper tpl:flex tpl:items-end tpl:gap-2 tpl:rounded-[var(--tpl-radius)] tpl:border tpl:px-3 tpl:py-2 tpl:border-[var(--tpl-border)] tpl:bg-[var(--tpl-bg)]" }, Fs = ["placeholder", "disabled"], Is = ["disabled"], Ls = { class: "tpl:m-0 tpl:px-1 tpl:pt-2 tpl:text-center tpl:text-[11px] tpl:text-[var(--tpl-text-dim)]" }, Rs = /* @__PURE__ */ B({
5810
5825
  __name: "AiChatSidebar",
5811
5826
  props: {
5812
5827
  visible: { type: Boolean },
@@ -5814,7 +5829,7 @@ var ms = {
5814
5829
  },
5815
5830
  emits: ["close"],
5816
5831
  setup(e, { emit: t }) {
5817
- let n = e, r = t, i = J(or, "AiChatSidebar"), a = J(Nn, "AiChatSidebar"), o = J(tr, "AiChatSidebar"), s = v(Un, []), l = oa(), u = Wo({
5832
+ let n = e, r = t, i = J(or, "AiChatSidebar"), a = J(Nn, "AiChatSidebar"), o = J(tr, "AiChatSidebar"), s = v(Un, []), l = sa(), u = Go({
5818
5833
  authManager: o,
5819
5834
  getTemplateId: () => a.state.template?.id ?? null,
5820
5835
  onApply: n.onApply,
@@ -5861,42 +5876,42 @@ var ms = {
5861
5876
  "leave-from-class": "tpl:translate-x-0",
5862
5877
  "leave-to-class": "tpl:translate-x-full"
5863
5878
  }, {
5864
- default: b(() => [e.visible ? (f(), A("div", ms, [
5865
- I("div", hs, [I("div", gs, [V(M(fi), {
5879
+ default: b(() => [e.visible ? (f(), A("div", hs, [
5880
+ I("div", gs, [I("div", _s, [V(M(pi), {
5866
5881
  size: 13,
5867
5882
  "stroke-width": 2
5868
- }), I("span", null, O(M(i).aiChat.title), 1)]), I("div", _s, [(M(u).messages.value?.length ?? 0) > 0 ? (f(), A("button", {
5883
+ }), I("span", null, O(M(i).aiChat.title), 1)]), I("div", vs, [(M(u).messages.value?.length ?? 0) > 0 ? (f(), A("button", {
5869
5884
  key: 0,
5870
5885
  class: "tpl:rounded-md tpl:p-0.5 tpl:transition-colors tpl:duration-150 tpl:text-[var(--tpl-text-muted)]",
5871
5886
  title: M(i).aiChat.clear,
5872
5887
  onClick: n[0] ||= (e) => M(u).clearChat()
5873
- }, [V(M(mi), {
5888
+ }, [V(M(hi), {
5874
5889
  size: 14,
5875
5890
  "stroke-width": 2
5876
- })], 8, vs)) : j("", !0), I("button", {
5891
+ })], 8, ys)) : j("", !0), I("button", {
5877
5892
  class: "tpl:rounded-md tpl:p-0.5 tpl:transition-colors tpl:duration-150 tpl:text-[var(--tpl-text-muted)]",
5878
5893
  onClick: n[1] ||= (e) => r("close")
5879
- }, [V(M(yi), {
5894
+ }, [V(M(bi), {
5880
5895
  size: 14,
5881
5896
  "stroke-width": 2
5882
5897
  })])])]),
5883
- I("div", ys, [
5898
+ I("div", bs, [
5884
5899
  I("div", {
5885
5900
  ref_key: "messagesContainer",
5886
5901
  ref: p,
5887
5902
  class: "tpl:flex-1 tpl:overflow-y-auto tpl:p-4"
5888
- }, [M(u).isLoadingHistory.value ? (f(), A("div", bs, [V(M(ei), {
5903
+ }, [M(u).isLoadingHistory.value ? (f(), A("div", xs, [V(M(ti), {
5889
5904
  class: "tpl-spinner tpl:text-[var(--tpl-text-muted)]",
5890
5905
  size: 24,
5891
5906
  "stroke-width": 2
5892
- }), I("p", xs, O(M(i).aiChat.loadingHistory), 1)])) : (M(u).messages.value?.length ?? 0) === 0 ? (f(), A("div", Ss, [V(M(fi), {
5907
+ }), I("p", Ss, O(M(i).aiChat.loadingHistory), 1)])) : (M(u).messages.value?.length ?? 0) === 0 ? (f(), A("div", Cs, [V(M(pi), {
5893
5908
  size: 32,
5894
5909
  "stroke-width": 1.5,
5895
5910
  class: "tpl:text-[var(--tpl-text-dim)]"
5896
- }), I("p", Cs, O(M(i).aiChat.placeholder), 1)])) : (f(), A("div", ws, [(f(!0), A(R, null, h(M(u).messages.value, (e, t) => (f(), A("div", {
5911
+ }), I("p", ws, O(M(i).aiChat.placeholder), 1)])) : (f(), A("div", Ts, [(f(!0), A(R, null, h(M(u).messages.value, (e, t) => (f(), A("div", {
5897
5912
  key: e.id,
5898
5913
  class: "tpl:flex tpl:flex-col tpl:gap-2"
5899
- }, [e.role === "user" ? (f(), A("div", Ts, O(e.content), 1)) : (f(), A("div", Es, [!E(e.content) && M(u).isGenerating.value && t === (M(u).messages.value?.length ?? 0) - 1 ? (f(), P(Oi, { key: 0 })) : (f(), A("div", Ds, O(E(e.content) || M(i).aiChat.applied), 1)), e.id === M(u).lastApplyMessageId.value && !M(u).isGenerating.value ? (f(), A("button", {
5914
+ }, [e.role === "user" ? (f(), A("div", Es, O(e.content), 1)) : (f(), A("div", Ds, [!E(e.content) && M(u).isGenerating.value && t === (M(u).messages.value?.length ?? 0) - 1 ? (f(), P(ki, { key: 0 })) : (f(), A("div", Os, O(E(e.content) || M(i).aiChat.applied), 1)), e.id === M(u).lastApplyMessageId.value && !M(u).isGenerating.value ? (f(), A("button", {
5900
5915
  key: 2,
5901
5916
  class: "tpl:inline-flex tpl:items-center tpl:gap-1.5 tpl:self-start tpl:rounded-md tpl:border tpl:px-2.5 tpl:py-1.5 tpl:text-xs tpl:font-medium tpl:transition-all tpl:duration-150",
5902
5917
  style: {
@@ -5905,19 +5920,19 @@ var ms = {
5905
5920
  "background-color": "transparent"
5906
5921
  },
5907
5922
  onClick: n[2] ||= (e) => M(u).toggleLastRevert()
5908
- }, [M(u).isLastChangeReverted.value ? (f(), A(R, { key: 0 }, [V(M(ai), {
5923
+ }, [M(u).isLastChangeReverted.value ? (f(), A(R, { key: 0 }, [V(M(oi), {
5909
5924
  size: 12,
5910
5925
  "stroke-width": 2
5911
- }), z(" " + O(M(i).aiChat.reapply), 1)], 64)) : (f(), A(R, { key: 1 }, [V(M(gi), {
5926
+ }), z(" " + O(M(i).aiChat.reapply), 1)], 64)) : (f(), A(R, { key: 1 }, [V(M(_i), {
5912
5927
  size: 12,
5913
5928
  "stroke-width": 2
5914
5929
  }), z(" " + O(M(i).aiChat.revert), 1)], 64))])) : j("", !0)]))]))), 128))]))], 512),
5915
- M(u).error.value ? (f(), A("div", Os, [V(M(Br), {
5930
+ M(u).error.value ? (f(), A("div", ks, [V(M(Vr), {
5916
5931
  size: 14,
5917
5932
  "stroke-width": 2,
5918
5933
  class: "tpl:mt-0.5 tpl:shrink-0"
5919
5934
  }), I("span", null, O(M(u).error.value === "ai_apply_failed" ? M(i).aiChat.applyFailed : M(i).aiChat.error), 1)])) : j("", !0),
5920
- (M(u).suggestions.value?.length ?? 0) > 0 ? (f(), A("div", ks, [I("div", As, [(f(!0), A(R, null, h(M(u).suggestions.value ?? [], (e, t) => (f(), A("button", {
5935
+ (M(u).suggestions.value?.length ?? 0) > 0 ? (f(), A("div", As, [I("div", js, [(f(!0), A(R, null, h(M(u).suggestions.value ?? [], (e, t) => (f(), A("button", {
5921
5936
  key: t,
5922
5937
  class: ae(["tpl-suggestion-btn tpl:cursor-pointer tpl:rounded-[var(--tpl-radius-sm)] tpl:border tpl:px-3 tpl:py-2 tpl:text-left tpl:text-xs tpl:leading-snug tpl:transition-all tpl:duration-300 tpl:ease-out", (M(u).suggestions.value?.length ?? 0) - 1 - t < _.value ? "tpl:translate-y-0 tpl:opacity-100" : "tpl:pointer-events-none tpl:-translate-y-2 tpl:opacity-0"]),
5923
5938
  style: {
@@ -5927,104 +5942,104 @@ var ms = {
5927
5942
  "box-shadow": "var(--tpl-shadow)"
5928
5943
  },
5929
5944
  onClick: (t) => D(e)
5930
- }, O(e), 11, js))), 128))])])) : j("", !0)
5945
+ }, O(e), 11, Ms))), 128))])])) : j("", !0)
5931
5946
  ]),
5932
- I("div", Ms, [I("div", Ns, [c(I("textarea", {
5947
+ I("div", Ns, [I("div", Ps, [c(I("textarea", {
5933
5948
  "onUpdate:modelValue": n[3] ||= (e) => d.value = e,
5934
5949
  class: "tpl:max-h-32 tpl:min-h-[64px] tpl:flex-1 tpl:resize-none tpl:border-none tpl:bg-transparent tpl:font-sans tpl:text-sm tpl:outline-none tpl:text-[var(--tpl-text)]",
5935
5950
  placeholder: M(i).aiChat.inputPlaceholder,
5936
5951
  disabled: M(u).isGenerating.value,
5937
5952
  rows: "3",
5938
5953
  onKeydown: ee
5939
- }, null, 40, Ps), [[ie, d.value]]), I("button", {
5954
+ }, null, 40, Fs), [[ie, d.value]]), I("button", {
5940
5955
  class: "tpl-ai-send-btn tpl:flex tpl:shrink-0 tpl:items-center tpl:justify-center tpl:rounded-md tpl:p-1.5 tpl:transition-all tpl:duration-150 tpl:disabled:opacity-40 tpl:text-[var(--tpl-primary)]",
5941
5956
  disabled: !d.value.trim() || M(u).isGenerating.value,
5942
5957
  onClick: T
5943
- }, [V(M(ci), {
5958
+ }, [V(M(li), {
5944
5959
  size: 16,
5945
5960
  "stroke-width": 2
5946
- })], 8, Fs)]), I("p", Is, O(M(i).aiMenu.disclaimer), 1)])
5961
+ })], 8, Is)]), I("p", Ls, O(M(i).aiMenu.disclaimer), 1)])
5947
5962
  ])) : j("", !0)]),
5948
5963
  _: 1
5949
5964
  }));
5950
5965
  }
5951
- }), Rs = /* @__PURE__ */ e({ default: () => zs }), zs = /* @__PURE__ */ wi(Ls, [["__scopeId", "data-v-a55e4bff"]]), Bs = 6e4, Vs = 36e5, Hs = 864e5;
5952
- function Us(e, t, n, r) {
5966
+ }), zs = /* @__PURE__ */ e({ default: () => Bs }), Bs = /* @__PURE__ */ Ti(Rs, [["__scopeId", "data-v-a55e4bff"]]), Vs = 6e4, Hs = 36e5, Us = 864e5;
5967
+ function Ws(e, t, n, r) {
5953
5968
  let i = new Date(e).getTime();
5954
5969
  if (Number.isNaN(i)) return null;
5955
5970
  let a = Date.now() - i;
5956
- if (a < -Bs) return null;
5957
- let o = Math.floor(a / Bs), s = Math.floor(a / Vs), c = Math.floor(a / Hs);
5971
+ if (a < -Vs) return null;
5972
+ let o = Math.floor(a / Vs), s = Math.floor(a / Hs), c = Math.floor(a / Us);
5958
5973
  return o < 1 ? t.justNow : o < 60 ? n ? n(t.minutesAgo, { minutes: o }) : t.minutesAgo.replace("{minutes}", String(o)) : s < 24 ? n ? n(t.hoursAgo, { hours: s }) : t.hoursAgo.replace("{hours}", String(s)) : r !== void 0 && c >= r ? null : n ? n(t.daysAgo, { days: c }) : t.daysAgo.replace("{days}", String(c));
5959
5974
  }
5960
5975
  //#endregion
5961
5976
  //#region src/cloud/components/CommentsSidebar.vue?vue&type=script&setup=true&lang.ts
5962
- var Ws = {
5977
+ var Gs = {
5963
5978
  key: 0,
5964
5979
  class: "tpl-comments-sidebar tpl:absolute tpl:top-14 tpl:right-0 tpl:bottom-0 tpl:z-panel tpl:flex tpl:w-[360px] tpl:flex-col tpl:border-l tpl:border-[var(--tpl-border)] tpl:bg-[var(--tpl-bg-elevated)]"
5965
- }, Gs = { class: "tpl:flex tpl:items-center tpl:justify-between tpl:border-b tpl:border-[var(--tpl-border)] tpl:px-4 tpl:py-3" }, Ks = { class: "tpl:flex tpl:items-center tpl:gap-1.5 tpl:text-sm tpl:font-medium tpl:text-[var(--tpl-text)]" }, qs = {
5980
+ }, Ks = { class: "tpl:flex tpl:items-center tpl:justify-between tpl:border-b tpl:border-[var(--tpl-border)] tpl:px-4 tpl:py-3" }, qs = { class: "tpl:flex tpl:items-center tpl:gap-1.5 tpl:text-sm tpl:font-medium tpl:text-[var(--tpl-text)]" }, Js = {
5966
5981
  key: 0,
5967
5982
  class: "tpl:ml-1 tpl:inline-flex tpl:size-5 tpl:items-center tpl:justify-center tpl:rounded-full tpl:text-[10px] tpl:font-semibold tpl:bg-[var(--tpl-primary)] tpl:text-[var(--tpl-bg)]"
5968
- }, Js = { class: "tpl:flex tpl:gap-1 tpl:border-b tpl:border-[var(--tpl-border)] tpl:px-4 tpl:py-2" }, Ys = { class: "tpl:flex-1 tpl:overflow-y-auto" }, Xs = {
5983
+ }, Ys = { class: "tpl:flex tpl:gap-1 tpl:border-b tpl:border-[var(--tpl-border)] tpl:px-4 tpl:py-2" }, Xs = { class: "tpl:flex-1 tpl:overflow-y-auto" }, Zs = {
5969
5984
  key: 0,
5970
5985
  class: "tpl:flex tpl:h-full tpl:items-center tpl:justify-center"
5971
- }, Zs = {
5986
+ }, Qs = {
5972
5987
  key: 1,
5973
5988
  class: "tpl:flex tpl:h-full tpl:flex-col tpl:items-center tpl:justify-center tpl:gap-3 tpl:px-6 tpl:text-center"
5974
- }, Qs = { class: "tpl:max-w-[240px] tpl:text-sm tpl:text-[var(--tpl-text-muted)]" }, $s = {
5989
+ }, $s = { class: "tpl:max-w-[240px] tpl:text-sm tpl:text-[var(--tpl-text-muted)]" }, ec = {
5975
5990
  key: 2,
5976
5991
  class: "tpl:flex tpl:flex-col tpl:gap-3 tpl:p-3"
5977
- }, ec = { class: "tpl-comment-card tpl:rounded-lg tpl:border tpl:px-3.5 tpl:py-3" }, tc = { class: "tpl:flex tpl:items-start tpl:justify-between tpl:gap-2" }, nc = { class: "tpl:flex tpl:items-center tpl:gap-1.5" }, rc = { class: "tpl:text-xs tpl:font-semibold tpl:text-[var(--tpl-text)]" }, ic = { class: "tpl:text-[10px] tpl:text-[var(--tpl-text-dim)]" }, ac = {
5992
+ }, tc = { class: "tpl-comment-card tpl:rounded-lg tpl:border tpl:px-3.5 tpl:py-3" }, nc = { class: "tpl:flex tpl:items-start tpl:justify-between tpl:gap-2" }, rc = { class: "tpl:flex tpl:items-center tpl:gap-1.5" }, ic = { class: "tpl:text-xs tpl:font-semibold tpl:text-[var(--tpl-text)]" }, ac = { class: "tpl:text-[10px] tpl:text-[var(--tpl-text-dim)]" }, oc = {
5978
5993
  key: 0,
5979
5994
  class: "tpl:text-[10px] tpl:italic tpl:text-[var(--tpl-text-dim)]"
5980
- }, oc = { class: "tpl:flex tpl:items-center tpl:gap-0.5" }, sc = ["title", "onClick"], cc = ["title", "onClick"], lc = ["title", "onClick"], uc = {
5995
+ }, sc = { class: "tpl:flex tpl:items-center tpl:gap-0.5" }, cc = ["title", "onClick"], lc = ["title", "onClick"], uc = ["title", "onClick"], dc = {
5981
5996
  key: 0,
5982
5997
  class: "tpl:mt-1 tpl:flex tpl:items-center tpl:gap-1 tpl:text-[10px] tpl:text-[var(--tpl-primary)]"
5983
- }, dc = {
5998
+ }, fc = {
5984
5999
  key: 0,
5985
6000
  class: "tpl:mt-1 tpl:inline-flex tpl:items-center tpl:gap-1 tpl:rounded tpl:px-1.5 tpl:py-0.5 tpl:text-[10px] tpl:font-medium tpl:bg-[var(--tpl-warning-light)] tpl:text-[var(--tpl-warning)]"
5986
- }, fc = ["onClick"], pc = {
6001
+ }, pc = ["onClick"], mc = {
5987
6002
  key: 2,
5988
6003
  class: "tpl:mt-2"
5989
- }, mc = ["onKeydown"], hc = { class: "tpl:mt-1.5 tpl:flex tpl:gap-1.5" }, gc = ["disabled", "onClick"], _c = {
6004
+ }, hc = ["onKeydown"], gc = { class: "tpl:mt-1.5 tpl:flex tpl:gap-1.5" }, _c = ["disabled", "onClick"], vc = {
5990
6005
  key: 3,
5991
6006
  class: "tpl:mt-1.5 tpl:text-xs tpl:leading-relaxed tpl:whitespace-pre-wrap tpl:text-[var(--tpl-text)]"
5992
- }, vc = {
6007
+ }, yc = {
5993
6008
  key: 4,
5994
6009
  class: "tpl:mt-2 tpl:flex tpl:items-center tpl:gap-2 tpl:rounded-md tpl:px-2.5 tpl:py-2 tpl:text-xs tpl:bg-[var(--tpl-danger-light)] tpl:text-[var(--tpl-danger)]"
5995
- }, yc = { class: "tpl:flex-1" }, bc = ["onClick"], xc = {
6010
+ }, bc = { class: "tpl:flex-1" }, xc = ["onClick"], Sc = {
5996
6011
  key: 5,
5997
6012
  class: "tpl:mt-2 tpl:flex tpl:items-center tpl:gap-2"
5998
- }, Sc = ["title", "onClick"], Cc = ["onClick"], wc = {
6013
+ }, Cc = ["title", "onClick"], wc = ["onClick"], Tc = {
5999
6014
  key: 0,
6000
6015
  class: "tpl-comment-replies tpl:ml-5 tpl:pl-3 tpl:pt-2"
6001
- }, Tc = { class: "tpl:flex tpl:items-start tpl:justify-between tpl:gap-2" }, Ec = { class: "tpl:flex tpl:items-center tpl:gap-1.5" }, Dc = { class: "tpl:text-xs tpl:font-semibold tpl:text-[var(--tpl-text)]" }, Oc = { class: "tpl:text-[10px] tpl:text-[var(--tpl-text-dim)]" }, kc = {
6016
+ }, Ec = { class: "tpl:flex tpl:items-start tpl:justify-between tpl:gap-2" }, Dc = { class: "tpl:flex tpl:items-center tpl:gap-1.5" }, Oc = { class: "tpl:text-xs tpl:font-semibold tpl:text-[var(--tpl-text)]" }, kc = { class: "tpl:text-[10px] tpl:text-[var(--tpl-text-dim)]" }, Ac = {
6002
6017
  key: 0,
6003
6018
  class: "tpl:text-[10px] tpl:italic tpl:text-[var(--tpl-text-dim)]"
6004
- }, Ac = { class: "tpl:flex tpl:items-center tpl:gap-0.5" }, jc = ["title", "onClick"], Mc = ["title", "onClick"], Nc = {
6019
+ }, jc = { class: "tpl:flex tpl:items-center tpl:gap-0.5" }, Mc = ["title", "onClick"], Nc = ["title", "onClick"], Pc = {
6005
6020
  key: 0,
6006
6021
  class: "tpl:mt-1.5"
6007
- }, Pc = ["onKeydown"], Fc = { class: "tpl:mt-1.5 tpl:flex tpl:gap-1.5" }, Ic = ["disabled", "onClick"], Lc = {
6022
+ }, Fc = ["onKeydown"], Ic = { class: "tpl:mt-1.5 tpl:flex tpl:gap-1.5" }, Lc = ["disabled", "onClick"], Rc = {
6008
6023
  key: 1,
6009
6024
  class: "tpl:mt-1 tpl:text-xs tpl:leading-relaxed tpl:whitespace-pre-wrap tpl:text-[var(--tpl-text)]"
6010
- }, Rc = {
6025
+ }, zc = {
6011
6026
  key: 2,
6012
6027
  class: "tpl:mt-2 tpl:flex tpl:items-center tpl:gap-2 tpl:rounded-md tpl:px-2.5 tpl:py-2 tpl:text-xs tpl:bg-[var(--tpl-danger-light)] tpl:text-[var(--tpl-danger)]"
6013
- }, zc = { class: "tpl:flex-1" }, Bc = ["onClick"], Vc = {
6028
+ }, Bc = { class: "tpl:flex-1" }, Vc = ["onClick"], Hc = {
6014
6029
  key: 0,
6015
6030
  class: "tpl-comment-replies tpl:ml-5 tpl:pl-3 tpl:pt-2"
6016
- }, Hc = { class: "tpl:flex tpl:items-end tpl:gap-2" }, Uc = ["placeholder", "onKeydown"], Wc = { class: "tpl:flex tpl:shrink-0 tpl:flex-col tpl:gap-1" }, Gc = ["disabled", "onClick"], Kc = { class: "tpl:border-t tpl:p-3 tpl:border-[var(--tpl-border)]" }, qc = {
6031
+ }, Uc = { class: "tpl:flex tpl:items-end tpl:gap-2" }, Wc = ["placeholder", "onKeydown"], Gc = { class: "tpl:flex tpl:shrink-0 tpl:flex-col tpl:gap-1" }, Kc = ["disabled", "onClick"], qc = { class: "tpl:border-t tpl:p-3 tpl:border-[var(--tpl-border)]" }, Jc = {
6017
6032
  key: 0,
6018
6033
  class: "tpl:flex tpl:min-h-[68px] tpl:items-center tpl:rounded-md tpl:px-3 tpl:py-2 tpl:text-xs tpl:bg-[var(--tpl-warning-light)] tpl:text-[var(--tpl-warning)]"
6019
- }, Jc = {
6034
+ }, Yc = {
6020
6035
  key: 1,
6021
6036
  class: "tpl-comments-input-wrapper tpl:flex tpl:min-h-[68px] tpl:items-end tpl:gap-2 tpl:rounded-[var(--tpl-radius)] tpl:border tpl:px-3 tpl:py-2 tpl:border-[var(--tpl-border)] tpl:bg-[var(--tpl-bg)]"
6022
- }, Yc = ["placeholder", "disabled"], Xc = ["disabled"], Zc = /* @__PURE__ */ B({
6037
+ }, Xc = ["placeholder", "disabled"], Zc = ["disabled"], Qc = /* @__PURE__ */ B({
6023
6038
  __name: "CommentsSidebar",
6024
6039
  props: { visible: { type: Boolean } },
6025
6040
  emits: ["close", "filterBlock"],
6026
6041
  setup(e, { expose: t, emit: n }) {
6027
- let r = e, i = n, { format: a } = Y(), { t: o } = Pi(), s = J(Nn, "CommentsSidebar"), l = J(tr, "CommentsSidebar"), u = J(rr, "CommentsSidebar"), d = C("unresolved"), p = C(null), g = C(""), _ = C(null), v = C(""), y = C(null), x = C(""), S = C(/* @__PURE__ */ new Set()), w = C(null), T = C(null), E = k(() => l.userConfig?.id ?? null), D = k(() => {
6042
+ let r = e, i = n, { format: a } = Y(), { t: o } = Fi(), s = J(Nn, "CommentsSidebar"), l = J(tr, "CommentsSidebar"), u = J(rr, "CommentsSidebar"), d = C("unresolved"), p = C(null), g = C(""), _ = C(null), v = C(""), y = C(null), x = C(""), S = C(/* @__PURE__ */ new Set()), w = C(null), T = C(null), E = k(() => l.userConfig?.id ?? null), D = k(() => {
6028
6043
  let e = /* @__PURE__ */ new Set();
6029
6044
  for (let t of s.content.value.blocks) if (e.add(t.id), t.type === "section") for (let n of t.children) for (let t of n) e.add(t.id);
6030
6045
  return e;
@@ -6092,7 +6107,7 @@ var Ws = {
6092
6107
  return e.author_identifier === E.value;
6093
6108
  }
6094
6109
  function ve(e) {
6095
- return Us(e, o.snapshotHistory) ?? e;
6110
+ return Ws(e, o.snapshotHistory) ?? e;
6096
6111
  }
6097
6112
  function ye(e) {
6098
6113
  e.key === "Enter" && !e.shiftKey && (e.preventDefault(), fe());
@@ -6119,22 +6134,22 @@ var Ws = {
6119
6134
  "leave-from-class": "tpl:translate-x-0",
6120
6135
  "leave-to-class": "tpl:translate-x-full"
6121
6136
  }, {
6122
- default: b(() => [e.visible ? (f(), A("div", Ws, [
6123
- I("div", Gs, [I("div", Ks, [
6124
- V(M(ti), {
6137
+ default: b(() => [e.visible ? (f(), A("div", Gs, [
6138
+ I("div", Ks, [I("div", qs, [
6139
+ V(M(ni), {
6125
6140
  size: 13,
6126
6141
  "stroke-width": 2
6127
6142
  }),
6128
6143
  I("span", null, O(M(o).comments.title), 1),
6129
- M(u).unresolvedCount.value > 0 ? (f(), A("span", qs, O(M(u).unresolvedCount.value), 1)) : j("", !0)
6144
+ M(u).unresolvedCount.value > 0 ? (f(), A("span", Js, O(M(u).unresolvedCount.value), 1)) : j("", !0)
6130
6145
  ]), I("button", {
6131
6146
  class: "tpl:rounded-md tpl:p-0.5 tpl:transition-colors tpl:duration-150 tpl:text-[var(--tpl-text-muted)]",
6132
6147
  onClick: n[0] ||= (e) => i("close")
6133
- }, [V(M(yi), {
6148
+ }, [V(M(bi), {
6134
6149
  size: 14,
6135
6150
  "stroke-width": 2
6136
6151
  })])]),
6137
- I("div", Js, [
6152
+ I("div", Ys, [
6138
6153
  I("button", {
6139
6154
  class: ae(["tpl-comment-filter tpl:rounded-md tpl:px-2.5 tpl:py-1 tpl:text-xs tpl:font-medium tpl:transition-colors tpl:duration-150", d.value === "unresolved" ? "tpl-comment-filter--active" : ""]),
6140
6155
  onClick: n[1] ||= (e) => N("unresolved")
@@ -6149,156 +6164,156 @@ var Ws = {
6149
6164
  onClick: n[3] ||= (e) => N("block", M(s).state.selectedBlockId ?? void 0)
6150
6165
  }, O(M(o).comments.filterBlock), 3)) : j("", !0)
6151
6166
  ]),
6152
- I("div", Ys, [M(u).isLoading.value ? (f(), A("div", Xs, [V(M(ei), {
6167
+ I("div", Xs, [M(u).isLoading.value ? (f(), A("div", Zs, [V(M(ti), {
6153
6168
  class: "tpl-spinner tpl:text-[var(--tpl-text-muted)]",
6154
6169
  size: 24,
6155
6170
  "stroke-width": 2
6156
- })])) : ne.value.length === 0 ? (f(), A("div", Zs, [V(M(ti), {
6171
+ })])) : ne.value.length === 0 ? (f(), A("div", Qs, [V(M(ni), {
6157
6172
  size: 32,
6158
6173
  "stroke-width": 1.5,
6159
6174
  class: "tpl:text-[var(--tpl-text-dim)]"
6160
- }), I("p", Qs, O(d.value === "all" ? M(o).comments.noCommentsHint : M(o).comments.noComments), 1)])) : (f(), A("div", $s, [(f(!0), A(R, null, h(ne.value, (e) => (f(), A("div", {
6175
+ }), I("p", $s, O(d.value === "all" ? M(o).comments.noCommentsHint : M(o).comments.noComments), 1)])) : (f(), A("div", ec, [(f(!0), A(R, null, h(ne.value, (e) => (f(), A("div", {
6161
6176
  key: e.id,
6162
6177
  class: "tpl-comment-thread"
6163
6178
  }, [
6164
- I("div", ec, [
6165
- I("div", tc, [I("div", nc, [
6166
- I("span", rc, O(_e(e) ? M(o).comments.ownedByYou : e.author_name), 1),
6167
- I("span", ic, O(ve(e.created_at)), 1),
6168
- e.updated_at === e.created_at ? j("", !0) : (f(), A("span", ac, " (" + O(M(o).comments.edited) + ") ", 1))
6169
- ]), I("div", oc, [
6179
+ I("div", tc, [
6180
+ I("div", nc, [I("div", rc, [
6181
+ I("span", ic, O(_e(e) ? M(o).comments.ownedByYou : e.author_name), 1),
6182
+ I("span", ac, O(ve(e.created_at)), 1),
6183
+ e.updated_at === e.created_at ? j("", !0) : (f(), A("span", oc, " (" + O(M(o).comments.edited) + ") ", 1))
6184
+ ]), I("div", sc, [
6170
6185
  I("button", {
6171
6186
  class: "tpl-comment-action tpl:rounded tpl:p-1 tpl:transition-colors tpl:duration-150",
6172
6187
  title: e.resolved_at ? M(o).comments.unresolve : M(o).comments.resolve,
6173
6188
  onClick: (t) => ge(e.id)
6174
- }, [V(M(Vr), {
6189
+ }, [V(M(Hr), {
6175
6190
  size: 13,
6176
6191
  "stroke-width": 2,
6177
6192
  class: "tpl-resolve-icon",
6178
6193
  style: L({ color: e.resolved_at ? "var(--tpl-primary)" : void 0 })
6179
- }, null, 8, ["style"])], 8, sc),
6194
+ }, null, 8, ["style"])], 8, cc),
6180
6195
  _e(e) ? (f(), A("button", {
6181
6196
  key: 0,
6182
6197
  class: "tpl-comment-action tpl:rounded tpl:p-1 tpl:transition-colors tpl:duration-150",
6183
6198
  title: M(o).comments.edit,
6184
6199
  onClick: (t) => le(e)
6185
- }, [V(M(ri), {
6200
+ }, [V(M(ii), {
6186
6201
  size: 12,
6187
6202
  "stroke-width": 2
6188
- })], 8, cc)) : j("", !0),
6203
+ })], 8, lc)) : j("", !0),
6189
6204
  _e(e) ? (f(), A("button", {
6190
6205
  key: 1,
6191
6206
  class: "tpl-comment-action tpl-comment-delete tpl:rounded tpl:p-1 tpl:transition-colors tpl:duration-150",
6192
6207
  title: M(o).comments.delete,
6193
6208
  onClick: (t) => ue(e.id)
6194
- }, [V(M(mi), {
6209
+ }, [V(M(hi), {
6195
6210
  size: 12,
6196
6211
  "stroke-width": 2
6197
- })], 8, lc)) : j("", !0)
6212
+ })], 8, uc)) : j("", !0)
6198
6213
  ])]),
6199
6214
  V(re, { name: "tpl-resolve" }, {
6200
- default: b(() => [e.resolved_at ? (f(), A("div", uc, [V(M(Fr), {
6215
+ default: b(() => [e.resolved_at ? (f(), A("div", dc, [V(M(Ir), {
6201
6216
  size: 10,
6202
6217
  "stroke-width": 2.5
6203
6218
  }), I("span", null, O(M(a)(M(o).comments.resolvedBy, { name: e.resolved_by_name ?? "" })), 1)])) : j("", !0)]),
6204
6219
  _: 2
6205
6220
  }, 1024),
6206
- e.block_id && ee(e.block_id) ? (f(), A("span", dc, O(M(o).comments.missingBlock), 1)) : e.block_id ? (f(), A("button", {
6221
+ e.block_id && ee(e.block_id) ? (f(), A("span", fc, O(M(o).comments.missingBlock), 1)) : e.block_id ? (f(), A("button", {
6207
6222
  key: 1,
6208
6223
  class: "tpl:mt-1 tpl:inline-flex tpl:items-center tpl:gap-1 tpl:rounded tpl:px-1.5 tpl:py-0.5 tpl:text-[10px] tpl:font-medium tpl:transition-colors tpl:duration-150 tpl:bg-[var(--tpl-bg-hover)] tpl:text-[var(--tpl-text-muted)]",
6209
6224
  onClick: (t) => M(s).selectBlock(e.block_id ?? "")
6210
- }, " Block ", 8, fc)) : j("", !0),
6211
- y.value === e.id ? (f(), A("div", pc, [c(I("textarea", {
6225
+ }, " Block ", 8, pc)) : j("", !0),
6226
+ y.value === e.id ? (f(), A("div", mc, [c(I("textarea", {
6212
6227
  "onUpdate:modelValue": n[4] ||= (e) => x.value = e,
6213
6228
  class: "tpl:w-full tpl:resize-none tpl:rounded-md tpl:border tpl:px-2.5 tpl:py-2 tpl:font-sans tpl:text-xs tpl:outline-none tpl:border-[var(--tpl-border)] tpl:bg-[var(--tpl-bg)] tpl:text-[var(--tpl-text)]",
6214
6229
  rows: "3",
6215
6230
  onKeydown: (t) => xe(t, e.id)
6216
- }, null, 40, mc), [[ie, x.value]]), I("div", hc, [I("button", {
6231
+ }, null, 40, hc), [[ie, x.value]]), I("div", gc, [I("button", {
6217
6232
  class: "tpl:rounded-md tpl:px-2.5 tpl:py-1 tpl:text-xs tpl:font-medium tpl:transition-colors tpl:duration-150 tpl:bg-[var(--tpl-primary)] tpl:text-[var(--tpl-bg)]",
6218
6233
  disabled: !x.value.trim() || M(u).isSubmitting.value,
6219
6234
  onClick: (t) => me(e.id)
6220
- }, O(M(o).comments.save), 9, gc), I("button", {
6235
+ }, O(M(o).comments.save), 9, _c), I("button", {
6221
6236
  class: "tpl:rounded-md tpl:px-2.5 tpl:py-1 tpl:text-xs tpl:font-medium tpl:transition-colors tpl:duration-150 tpl:text-[var(--tpl-text-muted)]",
6222
6237
  onClick: n[5] ||= (e) => B()
6223
- }, O(M(o).comments.cancel), 1)])])) : (f(), A("p", _c, O(e.body), 1)),
6224
- w.value === e.id ? (f(), A("div", vc, [
6225
- I("span", yc, O(M(o).comments.deleteConfirm), 1),
6238
+ }, O(M(o).comments.cancel), 1)])])) : (f(), A("p", vc, O(e.body), 1)),
6239
+ w.value === e.id ? (f(), A("div", yc, [
6240
+ I("span", bc, O(M(o).comments.deleteConfirm), 1),
6226
6241
  I("button", {
6227
6242
  class: "tpl:rounded tpl:px-2 tpl:py-0.5 tpl:text-xs tpl:font-medium tpl:bg-[var(--tpl-danger)] tpl:text-[var(--tpl-bg)]",
6228
6243
  onClick: (t) => he(e.id)
6229
- }, O(M(o).comments.delete), 9, bc),
6244
+ }, O(M(o).comments.delete), 9, xc),
6230
6245
  I("button", {
6231
6246
  class: "tpl:text-xs tpl:font-medium tpl:text-[var(--tpl-text-muted)]",
6232
6247
  onClick: n[6] ||= (e) => de()
6233
6248
  }, O(M(o).comments.cancel), 1)
6234
6249
  ])) : j("", !0),
6235
- y.value !== e.id && w.value !== e.id ? (f(), A("div", xc, [I("button", {
6250
+ y.value !== e.id && w.value !== e.id ? (f(), A("div", Sc, [I("button", {
6236
6251
  class: "tpl-comment-action tpl:rounded tpl:p-1 tpl:transition-colors tpl:duration-150",
6237
6252
  title: M(o).comments.reply,
6238
6253
  onClick: (t) => se(e.id)
6239
- }, [V(M(si), {
6254
+ }, [V(M(ci), {
6240
6255
  size: 13,
6241
6256
  "stroke-width": 2,
6242
6257
  class: "tpl:text-[var(--tpl-primary)]"
6243
- })], 8, Sc), (e.replies?.length ?? 0) > 0 ? (f(), A("button", {
6258
+ })], 8, Cc), (e.replies?.length ?? 0) > 0 ? (f(), A("button", {
6244
6259
  key: 0,
6245
6260
  class: "tpl:flex tpl:items-center tpl:gap-0.5 tpl:text-[11px] tpl:font-medium tpl:transition-colors tpl:duration-150 tpl:text-[var(--tpl-text-muted)]",
6246
6261
  onClick: (t) => oe(e.id)
6247
- }, [S.value.has(e.id) ? (f(), P(M(zr), {
6262
+ }, [S.value.has(e.id) ? (f(), P(M(Br), {
6248
6263
  key: 0,
6249
6264
  size: 11,
6250
6265
  "stroke-width": 2
6251
- })) : (f(), P(M(Ir), {
6266
+ })) : (f(), P(M(Lr), {
6252
6267
  key: 1,
6253
6268
  size: 11,
6254
6269
  "stroke-width": 2
6255
- })), z(" " + O((e.replies?.length ?? 0) === 1 ? M(a)(M(o).comments.replyOne, { count: String(e.replies?.length ?? 0) }) : M(a)(M(o).comments.replyMany, { count: String(e.replies?.length ?? 0) })), 1)], 8, Cc)) : j("", !0)])) : j("", !0)
6270
+ })), z(" " + O((e.replies?.length ?? 0) === 1 ? M(a)(M(o).comments.replyOne, { count: String(e.replies?.length ?? 0) }) : M(a)(M(o).comments.replyMany, { count: String(e.replies?.length ?? 0) })), 1)], 8, wc)) : j("", !0)])) : j("", !0)
6256
6271
  ]),
6257
6272
  V(re, { name: "tpl-replies" }, {
6258
- default: b(() => [S.value.has(e.id) && (e.replies?.length ?? 0) > 0 ? (f(), A("div", wc, [(f(!0), A(R, null, h(e.replies, (t, r) => (f(), A("div", {
6273
+ default: b(() => [S.value.has(e.id) && (e.replies?.length ?? 0) > 0 ? (f(), A("div", Tc, [(f(!0), A(R, null, h(e.replies, (t, r) => (f(), A("div", {
6259
6274
  key: t.id,
6260
6275
  class: ae(["tpl-comment-reply-card tpl:relative tpl:rounded-lg tpl:border tpl:px-3.5 tpl:py-2.5", r < (e.replies?.length ?? 0) - 1 ? "tpl:mb-2" : ""])
6261
6276
  }, [
6262
- I("div", Tc, [I("div", Ec, [
6263
- I("span", Dc, O(_e(t) ? M(o).comments.ownedByYou : t.author_name), 1),
6264
- I("span", Oc, O(ve(t.created_at)), 1),
6265
- t.updated_at === t.created_at ? j("", !0) : (f(), A("span", kc, " (" + O(M(o).comments.edited) + ") ", 1))
6266
- ]), I("div", Ac, [_e(t) ? (f(), A("button", {
6277
+ I("div", Ec, [I("div", Dc, [
6278
+ I("span", Oc, O(_e(t) ? M(o).comments.ownedByYou : t.author_name), 1),
6279
+ I("span", kc, O(ve(t.created_at)), 1),
6280
+ t.updated_at === t.created_at ? j("", !0) : (f(), A("span", Ac, " (" + O(M(o).comments.edited) + ") ", 1))
6281
+ ]), I("div", jc, [_e(t) ? (f(), A("button", {
6267
6282
  key: 0,
6268
6283
  class: "tpl-comment-action tpl:rounded tpl:p-1 tpl:transition-colors tpl:duration-150",
6269
6284
  title: M(o).comments.edit,
6270
6285
  onClick: (e) => le(t)
6271
- }, [V(M(ri), {
6286
+ }, [V(M(ii), {
6272
6287
  size: 11,
6273
6288
  "stroke-width": 2
6274
- })], 8, jc)) : j("", !0), _e(t) ? (f(), A("button", {
6289
+ })], 8, Mc)) : j("", !0), _e(t) ? (f(), A("button", {
6275
6290
  key: 1,
6276
6291
  class: "tpl-comment-action tpl-comment-delete tpl:rounded tpl:p-1 tpl:transition-colors tpl:duration-150",
6277
6292
  title: M(o).comments.delete,
6278
6293
  onClick: (e) => ue(t.id)
6279
- }, [V(M(mi), {
6294
+ }, [V(M(hi), {
6280
6295
  size: 11,
6281
6296
  "stroke-width": 2
6282
- })], 8, Mc)) : j("", !0)])]),
6283
- y.value === t.id ? (f(), A("div", Nc, [c(I("textarea", {
6297
+ })], 8, Nc)) : j("", !0)])]),
6298
+ y.value === t.id ? (f(), A("div", Pc, [c(I("textarea", {
6284
6299
  "onUpdate:modelValue": n[7] ||= (e) => x.value = e,
6285
6300
  class: "tpl:w-full tpl:resize-none tpl:rounded-md tpl:border tpl:px-2.5 tpl:py-2 tpl:font-sans tpl:text-xs tpl:outline-none tpl:border-[var(--tpl-border)] tpl:bg-[var(--tpl-bg)] tpl:text-[var(--tpl-text)]",
6286
6301
  rows: "2",
6287
6302
  onKeydown: (e) => xe(e, t.id)
6288
- }, null, 40, Pc), [[ie, x.value]]), I("div", Fc, [I("button", {
6303
+ }, null, 40, Fc), [[ie, x.value]]), I("div", Ic, [I("button", {
6289
6304
  class: "tpl:rounded-md tpl:px-2.5 tpl:py-1 tpl:text-xs tpl:font-medium tpl:bg-[var(--tpl-primary)] tpl:text-[var(--tpl-bg)]",
6290
6305
  disabled: !x.value.trim() || M(u).isSubmitting.value,
6291
6306
  onClick: (e) => me(t.id)
6292
- }, O(M(o).comments.save), 9, Ic), I("button", {
6307
+ }, O(M(o).comments.save), 9, Lc), I("button", {
6293
6308
  class: "tpl:rounded-md tpl:px-2.5 tpl:py-1 tpl:text-xs tpl:font-medium tpl:text-[var(--tpl-text-muted)]",
6294
6309
  onClick: n[8] ||= (e) => B()
6295
- }, O(M(o).comments.cancel), 1)])])) : (f(), A("p", Lc, O(t.body), 1)),
6296
- w.value === t.id ? (f(), A("div", Rc, [
6297
- I("span", zc, O(M(o).comments.deleteConfirm), 1),
6310
+ }, O(M(o).comments.cancel), 1)])])) : (f(), A("p", Rc, O(t.body), 1)),
6311
+ w.value === t.id ? (f(), A("div", zc, [
6312
+ I("span", Bc, O(M(o).comments.deleteConfirm), 1),
6298
6313
  I("button", {
6299
6314
  class: "tpl:rounded tpl:px-2 tpl:py-0.5 tpl:text-xs tpl:font-medium tpl:bg-[var(--tpl-danger)] tpl:text-[var(--tpl-bg)]",
6300
6315
  onClick: (e) => he(t.id)
6301
- }, O(M(o).comments.delete), 9, Bc),
6316
+ }, O(M(o).comments.delete), 9, Vc),
6302
6317
  I("button", {
6303
6318
  class: "tpl:text-xs tpl:font-medium tpl:text-[var(--tpl-text-muted)]",
6304
6319
  onClick: n[9] ||= (e) => de()
@@ -6308,30 +6323,30 @@ var Ws = {
6308
6323
  _: 2
6309
6324
  }, 1024),
6310
6325
  V(re, { name: "tpl-replies" }, {
6311
- default: b(() => [_.value === e.id ? (f(), A("div", Vc, [I("div", Hc, [c(I("textarea", {
6326
+ default: b(() => [_.value === e.id ? (f(), A("div", Hc, [I("div", Uc, [c(I("textarea", {
6312
6327
  "onUpdate:modelValue": n[10] ||= (e) => v.value = e,
6313
6328
  class: "tpl:flex-1 tpl:resize-none tpl:rounded-md tpl:border tpl:px-2.5 tpl:py-2 tpl:font-sans tpl:text-xs tpl:outline-none tpl:border-[var(--tpl-border)] tpl:bg-[var(--tpl-bg)] tpl:text-[var(--tpl-text)]",
6314
6329
  placeholder: M(o).comments.replyPlaceholder,
6315
6330
  rows: "2",
6316
6331
  onKeydown: (t) => be(t, e.id)
6317
- }, null, 40, Uc), [[ie, v.value]]), I("div", Wc, [I("button", {
6332
+ }, null, 40, Wc), [[ie, v.value]]), I("div", Gc, [I("button", {
6318
6333
  class: "tpl:flex tpl:items-center tpl:justify-center tpl:rounded-md tpl:p-1.5 tpl:transition-colors tpl:duration-150 tpl:disabled:opacity-40 tpl:text-[var(--tpl-primary)]",
6319
6334
  disabled: !v.value.trim() || M(u).isSubmitting.value,
6320
6335
  onClick: (t) => pe(e.id)
6321
- }, [V(M(ci), {
6336
+ }, [V(M(li), {
6322
6337
  size: 14,
6323
6338
  "stroke-width": 2
6324
- })], 8, Gc), I("button", {
6339
+ })], 8, Kc), I("button", {
6325
6340
  class: "tpl:flex tpl:items-center tpl:justify-center tpl:rounded-md tpl:p-1.5 tpl:transition-colors tpl:duration-150 tpl:text-[var(--tpl-text-muted)]",
6326
6341
  onClick: n[11] ||= (e) => ce()
6327
- }, [V(M(yi), {
6342
+ }, [V(M(bi), {
6328
6343
  size: 14,
6329
6344
  "stroke-width": 2
6330
6345
  })])])])])) : j("", !0)]),
6331
6346
  _: 2
6332
6347
  }, 1024)
6333
6348
  ]))), 128))]))]),
6334
- I("div", Kc, [te.value ? (f(), A("div", qc, O(M(o).comments.saveTemplateFirst), 1)) : (f(), A("div", Jc, [c(I("textarea", {
6349
+ I("div", qc, [te.value ? (f(), A("div", Jc, O(M(o).comments.saveTemplateFirst), 1)) : (f(), A("div", Yc, [c(I("textarea", {
6335
6350
  ref_key: "newCommentInput",
6336
6351
  ref: T,
6337
6352
  "onUpdate:modelValue": n[12] ||= (e) => g.value = e,
@@ -6340,46 +6355,46 @@ var Ws = {
6340
6355
  disabled: M(u).isSubmitting.value,
6341
6356
  rows: "2",
6342
6357
  onKeydown: ye
6343
- }, null, 40, Yc), [[ie, g.value]]), I("button", {
6358
+ }, null, 40, Xc), [[ie, g.value]]), I("button", {
6344
6359
  class: "tpl-comments-send-btn tpl:flex tpl:shrink-0 tpl:items-center tpl:justify-center tpl:rounded-md tpl:p-1.5 tpl:transition-all tpl:duration-150 tpl:disabled:opacity-40 tpl:text-[var(--tpl-primary)]",
6345
6360
  disabled: !g.value.trim() || M(u).isSubmitting.value,
6346
6361
  onClick: fe
6347
- }, [M(u).isSubmitting.value ? (f(), P(M(ei), {
6362
+ }, [M(u).isSubmitting.value ? (f(), P(M(ti), {
6348
6363
  key: 0,
6349
6364
  class: "tpl-spinner",
6350
6365
  size: 16,
6351
6366
  "stroke-width": 2
6352
- })) : (f(), P(M(ci), {
6367
+ })) : (f(), P(M(li), {
6353
6368
  key: 1,
6354
6369
  size: 16,
6355
6370
  "stroke-width": 2
6356
- }))], 8, Xc)]))])
6371
+ }))], 8, Zc)]))])
6357
6372
  ])) : j("", !0)]),
6358
6373
  _: 1
6359
6374
  }));
6360
6375
  }
6361
- }), Qc = /* @__PURE__ */ e({ default: () => $c }), $c = /* @__PURE__ */ wi(Zc, [["__scopeId", "data-v-d204f573"]]), el = {
6376
+ }), $c = /* @__PURE__ */ e({ default: () => el }), el = /* @__PURE__ */ Ti(Qc, [["__scopeId", "data-v-d204f573"]]), tl = {
6362
6377
  key: 0,
6363
6378
  class: "tpl-design-sidebar tpl:absolute tpl:top-14 tpl:right-0 tpl:bottom-0 tpl:z-panel tpl:flex tpl:w-[360px] tpl:flex-col tpl:border-l tpl:border-[var(--tpl-border)] tpl:bg-[var(--tpl-bg-elevated)]"
6364
- }, tl = { class: "tpl:flex tpl:items-center tpl:justify-between tpl:border-b tpl:border-[var(--tpl-border)] tpl:px-4 tpl:py-3" }, nl = { class: "tpl:flex tpl:items-center tpl:gap-1.5 tpl:text-sm tpl:font-medium tpl:text-[var(--tpl-primary)]" }, rl = { class: "tpl:flex-1 tpl:overflow-y-auto tpl:p-4" }, il = {
6379
+ }, nl = { class: "tpl:flex tpl:items-center tpl:justify-between tpl:border-b tpl:border-[var(--tpl-border)] tpl:px-4 tpl:py-3" }, rl = { class: "tpl:flex tpl:items-center tpl:gap-1.5 tpl:text-sm tpl:font-medium tpl:text-[var(--tpl-primary)]" }, il = { class: "tpl:flex-1 tpl:overflow-y-auto tpl:p-4" }, al = {
6365
6380
  key: 0,
6366
6381
  class: "tpl:flex tpl:h-full tpl:flex-col tpl:items-center tpl:justify-center tpl:gap-3 tpl:text-center"
6367
- }, al = { class: "tpl:flex tpl:w-full tpl:flex-col tpl:items-center tpl:gap-3" }, ol = { class: "tpl:text-sm tpl:text-[var(--tpl-text-muted)]" }, sl = {
6382
+ }, ol = { class: "tpl:flex tpl:w-full tpl:flex-col tpl:items-center tpl:gap-3" }, sl = { class: "tpl:text-sm tpl:text-[var(--tpl-text-muted)]" }, cl = {
6368
6383
  key: 1,
6369
6384
  class: "tpl:flex tpl:flex-col tpl:gap-4"
6370
- }, cl = { class: "tpl:flex tpl:gap-1 tpl:rounded-[var(--tpl-radius-sm)] tpl:p-1 tpl:bg-[var(--tpl-bg-hover)]" }, ll = {
6385
+ }, ll = { class: "tpl:flex tpl:gap-1 tpl:rounded-[var(--tpl-radius-sm)] tpl:p-1 tpl:bg-[var(--tpl-bg-hover)]" }, ul = {
6371
6386
  key: 0,
6372
6387
  class: "tpl:flex tpl:flex-col tpl:gap-2"
6373
- }, ul = { class: "tpl:relative tpl:overflow-hidden tpl:rounded-[var(--tpl-radius)] tpl:border tpl:border-[var(--tpl-border)] tpl:bg-[var(--tpl-bg)]" }, dl = ["src", "alt"], fl = {
6388
+ }, dl = { class: "tpl:relative tpl:overflow-hidden tpl:rounded-[var(--tpl-radius)] tpl:border tpl:border-[var(--tpl-border)] tpl:bg-[var(--tpl-bg)]" }, fl = ["src", "alt"], pl = {
6374
6389
  key: 1,
6375
6390
  class: "tpl:flex tpl:h-32 tpl:flex-col tpl:items-center tpl:justify-center tpl:gap-2"
6376
- }, pl = { class: "tpl:text-xs tpl:text-[var(--tpl-text-muted)]" }, ml = { class: "tpl:text-center tpl:text-xs tpl:text-[var(--tpl-text-muted)]" }, hl = { class: "tpl:text-center tpl:text-[11px] tpl:text-[var(--tpl-text-dim)]" }, gl = ["accept"], _l = { class: "tpl:flex tpl:flex-col tpl:gap-1.5" }, vl = { class: "tpl:text-xs tpl:font-medium tpl:text-[var(--tpl-text-muted)]" }, yl = ["placeholder"], bl = {
6391
+ }, ml = { class: "tpl:text-xs tpl:text-[var(--tpl-text-muted)]" }, hl = { class: "tpl:text-center tpl:text-xs tpl:text-[var(--tpl-text-muted)]" }, gl = { class: "tpl:text-center tpl:text-[11px] tpl:text-[var(--tpl-text-dim)]" }, _l = ["accept"], vl = { class: "tpl:flex tpl:flex-col tpl:gap-1.5" }, yl = { class: "tpl:text-xs tpl:font-medium tpl:text-[var(--tpl-text-muted)]" }, bl = ["placeholder"], xl = {
6377
6392
  key: 0,
6378
6393
  class: "tpl:flex tpl:flex-col tpl:gap-2 tpl:rounded-[var(--tpl-radius)] tpl:px-3 tpl:py-3 tpl:bg-[var(--tpl-warning-light)] tpl:border tpl:border-[var(--tpl-warning)]"
6379
- }, xl = { class: "tpl:text-xs tpl:leading-snug tpl:text-[var(--tpl-text)]" }, Sl = { class: "tpl:flex tpl:gap-2" }, Cl = {
6394
+ }, Sl = { class: "tpl:text-xs tpl:leading-snug tpl:text-[var(--tpl-text)]" }, Cl = { class: "tpl:flex tpl:gap-2" }, wl = {
6380
6395
  key: 1,
6381
6396
  class: "tpl:flex tpl:items-start tpl:gap-2 tpl:rounded-lg tpl:px-3 tpl:py-2 tpl:text-xs tpl:bg-[var(--tpl-danger-light)] tpl:text-[var(--tpl-danger)]"
6382
- }, wl = ["disabled"], Tl = { class: "tpl:m-0 tpl:pt-1 tpl:text-center tpl:text-[11px] tpl:text-[var(--tpl-text-dim)]" }, El = /* @__PURE__ */ B({
6397
+ }, Tl = ["disabled"], El = { class: "tpl:m-0 tpl:pt-1 tpl:text-center tpl:text-[11px] tpl:text-[var(--tpl-text-dim)]" }, Dl = /* @__PURE__ */ B({
6383
6398
  __name: "DesignReferenceSidebar",
6384
6399
  props: {
6385
6400
  visible: { type: Boolean },
@@ -6387,7 +6402,7 @@ var Ws = {
6387
6402
  },
6388
6403
  emits: ["close", "apply"],
6389
6404
  setup(e, { emit: t }) {
6390
- let n = e, r = t, { t: i } = Pi(), a = J(Nn, "DesignReferenceSidebar"), o = qo({
6405
+ let n = e, r = t, { t: i } = Fi(), a = J(Nn, "DesignReferenceSidebar"), o = Jo({
6391
6406
  authManager: J(tr, "DesignReferenceSidebar"),
6392
6407
  getTemplateId: () => a.state.template?.id ?? null,
6393
6408
  onApply: (e) => r("apply", e)
@@ -6459,17 +6474,17 @@ var Ws = {
6459
6474
  "leave-from-class": "tpl:translate-x-0",
6460
6475
  "leave-to-class": "tpl:translate-x-full"
6461
6476
  }, {
6462
- default: b(() => [e.visible ? (f(), A("div", el, [I("div", tl, [I("div", nl, [V(M(Zr), {
6477
+ default: b(() => [e.visible ? (f(), A("div", tl, [I("div", nl, [I("div", rl, [V(M(Qr), {
6463
6478
  size: 13,
6464
6479
  "stroke-width": 2
6465
6480
  }), I("span", null, O(M(i).designReference.title), 1)]), I("button", {
6466
6481
  class: "tpl:rounded-md tpl:p-0.5 tpl:transition-colors tpl:duration-150 tpl:text-[var(--tpl-text-muted)]",
6467
6482
  onClick: n[0] ||= (e) => r("close")
6468
- }, [V(M(yi), {
6483
+ }, [V(M(bi), {
6469
6484
  size: 14,
6470
6485
  "stroke-width": 2
6471
- })])]), I("div", rl, [M(o).isGenerating.value ? (f(), A("div", il, [I("div", al, [V(Oi), I("p", ol, O(M(i).designReference.generating), 1)])])) : (f(), A("div", sl, [
6472
- I("div", cl, [I("button", {
6486
+ })])]), I("div", il, [M(o).isGenerating.value ? (f(), A("div", al, [I("div", ol, [V(ki), I("p", sl, O(M(i).designReference.generating), 1)])])) : (f(), A("div", cl, [
6487
+ I("div", ll, [I("button", {
6473
6488
  class: "tpl:flex tpl:flex-1 tpl:items-center tpl:justify-center tpl:gap-1.5 tpl:rounded-[var(--tpl-radius-sm)] tpl:px-2 tpl:py-1.5 tpl:text-xs tpl:font-medium tpl:transition-all tpl:duration-150",
6474
6489
  style: L({
6475
6490
  backgroundColor: l.value === "image" ? "var(--tpl-bg)" : "transparent",
@@ -6477,7 +6492,7 @@ var Ws = {
6477
6492
  boxShadow: l.value === "image" ? "var(--tpl-shadow)" : "none"
6478
6493
  }),
6479
6494
  onClick: n[1] ||= (e) => _("image")
6480
- }, [V(M(qr), {
6495
+ }, [V(M(Jr), {
6481
6496
  size: 12,
6482
6497
  "stroke-width": 2
6483
6498
  }), z(" " + O(M(i).designReference.uploadImage), 1)], 4), I("button", {
@@ -6488,23 +6503,23 @@ var Ws = {
6488
6503
  boxShadow: l.value === "pdf" ? "var(--tpl-shadow)" : "none"
6489
6504
  }),
6490
6505
  onClick: n[2] ||= (e) => _("pdf")
6491
- }, [V(M(Jr), {
6506
+ }, [V(M(Yr), {
6492
6507
  size: 12,
6493
6508
  "stroke-width": 2
6494
6509
  }), z(" " + O(M(i).designReference.uploadPdf), 1)], 4)]),
6495
- I("div", null, [u.value ? (f(), A("div", ll, [I("div", ul, [p.value ? (f(), A("img", {
6510
+ I("div", null, [u.value ? (f(), A("div", ul, [I("div", dl, [p.value ? (f(), A("img", {
6496
6511
  key: 0,
6497
6512
  src: p.value,
6498
6513
  alt: u.value.name,
6499
6514
  class: "tpl:h-auto tpl:max-h-48 tpl:w-full tpl:object-contain"
6500
- }, null, 8, dl)) : (f(), A("div", fl, [V(M(Jr), {
6515
+ }, null, 8, fl)) : (f(), A("div", pl, [V(M(Yr), {
6501
6516
  size: 32,
6502
6517
  "stroke-width": 1.5,
6503
6518
  class: "tpl:text-[var(--tpl-text-dim)]"
6504
- }), I("span", pl, O(u.value.name), 1)])), I("button", {
6519
+ }), I("span", ml, O(u.value.name), 1)])), I("button", {
6505
6520
  class: "tpl:absolute tpl:top-2 tpl:right-2 tpl:rounded-full tpl:p-1 tpl:transition-colors tpl:duration-150 tpl:bg-[var(--tpl-bg)] tpl:text-[var(--tpl-text-muted)] tpl:shadow-[var(--tpl-shadow)]",
6506
6521
  onClick: x
6507
- }, [V(M(yi), {
6522
+ }, [V(M(bi), {
6508
6523
  size: 12,
6509
6524
  "stroke-width": 2
6510
6525
  })])])])) : (f(), A("div", {
@@ -6519,13 +6534,13 @@ var Ws = {
6519
6534
  onDragleave: w,
6520
6535
  onDrop: T
6521
6536
  }, [
6522
- V(M(_i), {
6537
+ V(M(vi), {
6523
6538
  size: 24,
6524
6539
  "stroke-width": 1.5,
6525
6540
  class: "tpl:text-[var(--tpl-text-dim)]"
6526
6541
  }),
6527
- I("span", ml, O(M(i).designReference.dropHint), 1),
6528
- I("span", hl, O(l.value === "image" ? M(i).designReference.acceptedImages : M(i).designReference.acceptedPdf), 1)
6542
+ I("span", hl, O(M(i).designReference.dropHint), 1),
6543
+ I("span", gl, O(l.value === "image" ? M(i).designReference.acceptedImages : M(i).designReference.acceptedPdf), 1)
6529
6544
  ], 36)), I("input", {
6530
6545
  ref_key: "fileInput",
6531
6546
  ref: s,
@@ -6533,14 +6548,14 @@ var Ws = {
6533
6548
  class: "tpl:hidden",
6534
6549
  accept: l.value === "image" ? "image/png,image/jpeg,image/webp" : "application/pdf",
6535
6550
  onChange: v
6536
- }, null, 40, gl)]),
6537
- I("div", _l, [I("label", vl, O(M(i).designReference.promptLabel), 1), c(I("textarea", {
6551
+ }, null, 40, _l)]),
6552
+ I("div", vl, [I("label", yl, O(M(i).designReference.promptLabel), 1), c(I("textarea", {
6538
6553
  "onUpdate:modelValue": n[4] ||= (e) => d.value = e,
6539
6554
  class: ae(["tpl:min-h-[72px] tpl:w-full tpl:resize-none tpl:rounded-[var(--tpl-radius-sm)] tpl:border tpl:px-3 tpl:py-2 tpl:font-sans tpl:text-sm tpl:outline-none tpl:transition-colors tpl:duration-150 tpl:border-[var(--tpl-border)] tpl:text-[var(--tpl-text)] tpl:bg-[var(--tpl-bg)]", ["tpl-design-prompt-input"]]),
6540
6555
  placeholder: M(i).designReference.promptPlaceholder,
6541
6556
  rows: "3"
6542
- }, null, 8, yl), [[ie, d.value]])]),
6543
- m.value ? (f(), A("div", bl, [I("p", xl, O(M(i).designReference.replaceWarning), 1), I("div", Sl, [I("button", {
6557
+ }, null, 8, bl), [[ie, d.value]])]),
6558
+ m.value ? (f(), A("div", xl, [I("p", Sl, O(M(i).designReference.replaceWarning), 1), I("div", Cl, [I("button", {
6544
6559
  class: "tpl:flex-1 tpl:rounded-[var(--tpl-radius-sm)] tpl:px-3 tpl:py-1.5 tpl:text-xs tpl:font-medium tpl:transition-all tpl:duration-150 tpl:text-[var(--tpl-text-muted)] tpl:border tpl:border-[var(--tpl-border)]",
6545
6560
  style: { "background-color": "transparent" },
6546
6561
  onClick: D
@@ -6548,7 +6563,7 @@ var Ws = {
6548
6563
  class: "tpl:flex-1 tpl:rounded-[var(--tpl-radius-sm)] tpl:px-3 tpl:py-1.5 tpl:text-xs tpl:font-medium tpl:transition-all tpl:duration-150 tpl:hover:opacity-90 tpl:bg-[var(--tpl-primary)] tpl:text-[var(--tpl-bg)]",
6549
6564
  onClick: E
6550
6565
  }, O(M(i).designReference.replaceConfirm), 1)])])) : j("", !0),
6551
- M(o).error.value ? (f(), A("div", Cl, [V(M(Br), {
6566
+ M(o).error.value ? (f(), A("div", wl, [V(M(Vr), {
6552
6567
  size: 14,
6553
6568
  "stroke-width": 2,
6554
6569
  class: "tpl:mt-0.5 tpl:shrink-0"
@@ -6558,31 +6573,31 @@ var Ws = {
6558
6573
  class: "tpl:flex tpl:w-full tpl:items-center tpl:justify-center tpl:gap-2 tpl:rounded-[var(--tpl-radius-sm)] tpl:px-4 tpl:py-2.5 tpl:text-sm tpl:font-medium tpl:transition-all tpl:duration-150 tpl:hover:opacity-90 tpl:disabled:cursor-not-allowed tpl:disabled:opacity-50 tpl:bg-[var(--tpl-primary)] tpl:text-[var(--tpl-bg)]",
6559
6574
  disabled: !g.value,
6560
6575
  onClick: E
6561
- }, [V(M(Zr), {
6576
+ }, [V(M(Qr), {
6562
6577
  size: 16,
6563
6578
  "stroke-width": 2
6564
- }), z(" " + O(M(i).designReference.generate), 1)], 8, wl)),
6565
- I("p", Tl, O(M(i).aiMenu.disclaimer), 1)
6579
+ }), z(" " + O(M(i).designReference.generate), 1)], 8, Tl)),
6580
+ I("p", El, O(M(i).aiMenu.disclaimer), 1)
6566
6581
  ]))])])) : j("", !0)]),
6567
6582
  _: 1
6568
6583
  }));
6569
6584
  }
6570
- }), Dl = /* @__PURE__ */ e({ default: () => Ol }), Ol = /* @__PURE__ */ wi(El, [["__scopeId", "data-v-bdbf8d0d"]]);
6585
+ }), Ol = /* @__PURE__ */ e({ default: () => kl }), kl = /* @__PURE__ */ Ti(Dl, [["__scopeId", "data-v-bdbf8d0d"]]);
6571
6586
  //#endregion
6572
6587
  //#region src/composables/usePopoverRoot.ts
6573
- function kl() {
6588
+ function Al() {
6574
6589
  return v(er, C(null));
6575
6590
  }
6576
6591
  //#endregion
6577
6592
  //#region src/cloud/components/TplModal.vue?vue&type=script&setup=true&lang.ts
6578
- var Al = ["data-tpl-theme"], jl = /* @__PURE__ */ B({
6593
+ var jl = ["data-tpl-theme"], Ml = /* @__PURE__ */ B({
6579
6594
  __name: "TplModal",
6580
6595
  props: { visible: { type: Boolean } },
6581
6596
  emits: ["close", "keydown"],
6582
6597
  setup(e, { emit: t }) {
6583
6598
  let n = e, r = t, i = C(null);
6584
- ji(i, k(() => n.visible));
6585
- let a = v(zn), s = kl();
6599
+ Mi(i, k(() => n.visible));
6600
+ let a = v(zn), s = Al();
6586
6601
  function c(e) {
6587
6602
  e.key === "Escape" && r("close"), r("keydown", e);
6588
6603
  }
@@ -6611,30 +6626,30 @@ var Al = ["data-tpl-theme"], jl = /* @__PURE__ */ B({
6611
6626
  }, [I("div", {
6612
6627
  ref_key: "dialogRef",
6613
6628
  ref: i
6614
- }, [o(t.$slots, "default")], 512)], 40, Al)) : j("", !0)]),
6629
+ }, [o(t.$slots, "default")], 512)], 40, jl)) : j("", !0)]),
6615
6630
  _: 3
6616
6631
  })], 8, ["to"])) : j("", !0);
6617
6632
  }
6618
- }), Ml = ["disabled", "title"], Nl = ["title"], Pl = {
6633
+ }), Nl = ["disabled", "title"], Pl = ["title"], Fl = {
6619
6634
  key: 0,
6620
6635
  class: "tpl-scale-in tpl:absolute tpl:top-full tpl:left-1/2 tpl:z-50 tpl:mt-2 tpl:w-72 tpl:-translate-x-1/2 tpl:overflow-hidden tpl:rounded-[var(--tpl-radius)] tpl:bg-[var(--tpl-bg-elevated)] tpl:border tpl:border-[var(--tpl-border)] tpl:shadow-[var(--tpl-shadow-lg)]",
6621
6636
  style: {
6622
6637
  "backdrop-filter": "blur(8px)",
6623
6638
  "-webkit-backdrop-filter": "blur(8px)"
6624
6639
  }
6625
- }, Fl = { class: "tpl:border-b tpl:px-3 tpl:py-2 tpl:text-xs tpl:font-semibold tpl:text-[var(--tpl-text)] tpl:border-[var(--tpl-border)]" }, Il = {
6640
+ }, Il = { class: "tpl:border-b tpl:px-3 tpl:py-2 tpl:text-xs tpl:font-semibold tpl:text-[var(--tpl-text)] tpl:border-[var(--tpl-border)]" }, Ll = {
6626
6641
  key: 0,
6627
6642
  class: "tpl:flex tpl:items-center tpl:justify-center tpl:py-8"
6628
- }, Ll = {
6643
+ }, Rl = {
6629
6644
  key: 1,
6630
6645
  class: "tpl:px-3 tpl:py-6 tpl:text-center tpl:text-xs tpl:text-[var(--tpl-text-muted)]"
6631
- }, Rl = {
6646
+ }, zl = {
6632
6647
  key: 2,
6633
6648
  class: "tpl:max-h-64 tpl:overflow-y-auto"
6634
- }, zl = ["disabled", "onClick"], Bl = { class: "tpl:flex tpl:flex-col tpl:gap-0.5" }, Vl = { class: "tpl:flex tpl:items-center tpl:gap-1.5 tpl:text-xs tpl:font-medium tpl:text-[var(--tpl-text)]" }, Hl = {
6649
+ }, Bl = ["disabled", "onClick"], Vl = { class: "tpl:flex tpl:flex-col tpl:gap-0.5" }, Hl = { class: "tpl:flex tpl:items-center tpl:gap-1.5 tpl:text-xs tpl:font-medium tpl:text-[var(--tpl-text)]" }, Ul = {
6635
6650
  key: 0,
6636
6651
  class: "tpl:rounded tpl:px-1 tpl:py-0.5 tpl:text-[10px] tpl:font-normal tpl:bg-[var(--tpl-bg-active)] tpl:text-[var(--tpl-text-muted)]"
6637
- }, Ul = ["disabled", "title"], Wl = /* @__PURE__ */ B({
6652
+ }, Wl = ["disabled", "title"], Gl = /* @__PURE__ */ B({
6638
6653
  __name: "SnapshotHistory",
6639
6654
  props: {
6640
6655
  snapshots: {},
@@ -6643,7 +6658,7 @@ var Al = ["data-tpl-theme"], jl = /* @__PURE__ */ B({
6643
6658
  },
6644
6659
  emits: ["load", "navigate"],
6645
6660
  setup(e, { emit: t }) {
6646
- let n = e, r = t, { format: i } = Y(), { t: a } = Pi(), o = C(!1), s = C(null), c = C(-1);
6661
+ let n = e, r = t, { format: i } = Y(), { t: a } = Fi(), o = C(!1), s = C(null), c = C(-1);
6647
6662
  H(() => n.snapshots.length, () => {
6648
6663
  c.value = -1;
6649
6664
  });
@@ -6662,7 +6677,7 @@ var Al = ["data-tpl-theme"], jl = /* @__PURE__ */ B({
6662
6677
  t !== -1 && (c.value = t, r("navigate", n.snapshots[t])), o.value = !1;
6663
6678
  }
6664
6679
  function _(e) {
6665
- let t = Us(e, a.snapshotHistory, i, 7);
6680
+ let t = Ws(e, a.snapshotHistory, i, 7);
6666
6681
  return t === null ? new Date(e).toLocaleDateString(void 0, {
6667
6682
  month: "short",
6668
6683
  day: "numeric",
@@ -6682,34 +6697,34 @@ var Al = ["data-tpl-theme"], jl = /* @__PURE__ */ B({
6682
6697
  disabled: !u.value,
6683
6698
  title: M(a).snapshotHistory.olderSnapshot,
6684
6699
  onClick: N(p, ["stop"])
6685
- }, [V(M(Lr), {
6700
+ }, [V(M(Rr), {
6686
6701
  size: 14,
6687
6702
  "stroke-width": 2
6688
- })], 8, Ml),
6703
+ })], 8, Nl),
6689
6704
  I("button", {
6690
6705
  class: "tpl:flex tpl:h-7 tpl:shrink-0 tpl:cursor-pointer tpl:items-center tpl:gap-0.5 tpl:rounded-[var(--tpl-radius-sm)] tpl:border-none tpl:bg-transparent tpl:px-1.5 tpl:transition-colors tpl:duration-150 hover:tpl:bg-[var(--tpl-bg-hover)] tpl:text-[var(--tpl-text-muted)]",
6691
6706
  title: M(a).snapshotHistory.tooltip,
6692
6707
  onClick: N(m, ["stop"])
6693
- }, [V(M(Hr), {
6708
+ }, [V(M(Ur), {
6694
6709
  size: 16,
6695
6710
  "stroke-width": 1.5
6696
- }), V(M(Ir), {
6711
+ }), V(M(Lr), {
6697
6712
  class: ae(["tpl:transition-transform tpl:duration-150", { "tpl:rotate-180": o.value }]),
6698
6713
  size: 10,
6699
6714
  "stroke-width": 2
6700
- }, null, 8, ["class"])], 8, Nl),
6715
+ }, null, 8, ["class"])], 8, Pl),
6701
6716
  V(re, { name: "tpl-dropdown" }, {
6702
- default: b(() => [o.value ? (f(), A("div", Pl, [I("div", Fl, O(M(a).snapshotHistory.dropdownTitle), 1), e.isLoading ? (f(), A("div", Il, [V(M(ei), {
6717
+ default: b(() => [o.value ? (f(), A("div", Fl, [I("div", Il, O(M(a).snapshotHistory.dropdownTitle), 1), e.isLoading ? (f(), A("div", Ll, [V(M(ti), {
6703
6718
  class: "tpl:animate-spin tpl:text-[var(--tpl-primary)]",
6704
6719
  size: 20,
6705
6720
  "stroke-width": 2
6706
- })])) : e.snapshots.length === 0 ? (f(), A("div", Ll, O(M(a).snapshotHistory.noSnapshots), 1)) : (f(), A("div", Rl, [(f(!0), A(R, null, h(e.snapshots, (t) => (f(), A("button", {
6721
+ })])) : e.snapshots.length === 0 ? (f(), A("div", Rl, O(M(a).snapshotHistory.noSnapshots), 1)) : (f(), A("div", zl, [(f(!0), A(R, null, h(e.snapshots, (t) => (f(), A("button", {
6707
6722
  key: t.id,
6708
6723
  class: "tpl:flex tpl:w-full tpl:cursor-pointer tpl:items-center tpl:border-b tpl:border-b-[var(--tpl-border-light)] tpl:border-l-2 tpl:border-l-transparent tpl:px-3 tpl:py-2.5 tpl:text-left tpl:transition-all tpl:duration-150 last:tpl:border-b-0 hover:tpl:border-l-[var(--tpl-primary)] hover:tpl:bg-[var(--tpl-bg-hover)]",
6709
6724
  style: { "background-color": "transparent" },
6710
6725
  disabled: e.isRestoring,
6711
6726
  onClick: (e) => g(t.id)
6712
- }, [I("div", Bl, [I("div", Vl, [I("span", null, O(_(t.created_at)), 1), t.is_autosave ? (f(), A("span", Hl, O(M(a).snapshotHistory.auto), 1)) : j("", !0)])])], 8, zl))), 128))]))])) : j("", !0)]),
6727
+ }, [I("div", Vl, [I("div", Hl, [I("span", null, O(_(t.created_at)), 1), t.is_autosave ? (f(), A("span", Ul, O(M(a).snapshotHistory.auto), 1)) : j("", !0)])])], 8, Bl))), 128))]))])) : j("", !0)]),
6713
6728
  _: 1
6714
6729
  }),
6715
6730
  I("button", {
@@ -6717,74 +6732,74 @@ var Al = ["data-tpl-theme"], jl = /* @__PURE__ */ B({
6717
6732
  disabled: !l.value,
6718
6733
  title: M(a).snapshotHistory.newerSnapshot,
6719
6734
  onClick: N(d, ["stop"])
6720
- }, [V(M(Rr), {
6735
+ }, [V(M(zr), {
6721
6736
  size: 14,
6722
6737
  "stroke-width": 2
6723
- })], 8, Ul)
6738
+ })], 8, Wl)
6724
6739
  ], 512));
6725
6740
  }
6726
- }), Gl = /* @__PURE__ */ e({ default: () => Kl }), Kl = Wl;
6741
+ }), Kl = /* @__PURE__ */ e({ default: () => ql }), ql = Gl;
6727
6742
  //#endregion
6728
6743
  //#region src/cloud/utils/scoringStyles.ts
6729
- function ql(e) {
6744
+ function Jl(e) {
6730
6745
  return e >= 80 ? "var(--tpl-success)" : e >= 60 ? "var(--tpl-warning)" : "var(--tpl-danger)";
6731
6746
  }
6732
- function Jl(e) {
6747
+ function Yl(e) {
6733
6748
  return e >= 80 ? "var(--tpl-success-light)" : e >= 60 ? "var(--tpl-warning-light)" : "var(--tpl-danger-light)";
6734
6749
  }
6735
- function Yl(e) {
6750
+ function Xl(e) {
6736
6751
  return e === "high" ? "var(--tpl-danger)" : e === "medium" ? "var(--tpl-warning)" : "var(--tpl-text-muted)";
6737
6752
  }
6738
- function Xl(e) {
6753
+ function Zl(e) {
6739
6754
  return e === "high" ? "var(--tpl-danger-light)" : e === "medium" ? "var(--tpl-warning-light)" : "var(--tpl-bg-hover)";
6740
6755
  }
6741
6756
  //#endregion
6742
6757
  //#region src/cloud/components/TemplateScoringPanel.vue?vue&type=script&setup=true&lang.ts
6743
- var Zl = {
6758
+ var Ql = {
6744
6759
  key: 0,
6745
6760
  class: "tpl-scoring-panel tpl:absolute tpl:top-14 tpl:right-0 tpl:bottom-0 tpl:z-panel tpl:flex tpl:w-[360px] tpl:flex-col tpl:border-l tpl:border-[var(--tpl-border)] tpl:bg-[var(--tpl-bg-elevated)]"
6746
- }, Ql = { class: "tpl:flex tpl:items-center tpl:justify-between tpl:border-b tpl:border-[var(--tpl-border)] tpl:px-4 tpl:py-3" }, $l = { class: "tpl:flex tpl:items-center tpl:gap-1.5 tpl:text-sm tpl:font-medium tpl:text-[var(--tpl-primary)]" }, eu = { class: "tpl:flex tpl:items-center tpl:gap-1" }, tu = ["title"], nu = { class: "tpl:flex-1 tpl:overflow-y-auto tpl:p-4" }, ru = {
6761
+ }, $l = { class: "tpl:flex tpl:items-center tpl:justify-between tpl:border-b tpl:border-[var(--tpl-border)] tpl:px-4 tpl:py-3" }, eu = { class: "tpl:flex tpl:items-center tpl:gap-1.5 tpl:text-sm tpl:font-medium tpl:text-[var(--tpl-primary)]" }, tu = { class: "tpl:flex tpl:items-center tpl:gap-1" }, nu = ["title"], ru = { class: "tpl:flex-1 tpl:overflow-y-auto tpl:p-4" }, iu = {
6747
6762
  key: 0,
6748
6763
  class: "tpl:flex tpl:h-full tpl:flex-col tpl:items-center tpl:justify-center tpl:gap-3 tpl:text-center"
6749
- }, iu = { class: "tpl:text-sm tpl:text-[var(--tpl-text-muted)]" }, au = {
6764
+ }, au = { class: "tpl:text-sm tpl:text-[var(--tpl-text-muted)]" }, ou = {
6750
6765
  key: 1,
6751
6766
  class: "tpl:flex tpl:h-full tpl:flex-col tpl:items-center tpl:justify-center tpl:gap-3 tpl:text-center"
6752
- }, ou = { class: "tpl:max-w-[240px] tpl:text-sm tpl:text-[var(--tpl-text-muted)]" }, su = {
6767
+ }, su = { class: "tpl:max-w-[240px] tpl:text-sm tpl:text-[var(--tpl-text-muted)]" }, cu = {
6753
6768
  key: 2,
6754
6769
  class: "tpl:flex tpl:flex-col tpl:gap-4"
6755
- }, cu = { class: "tpl:text-xs tpl:font-medium tpl:uppercase tpl:tracking-wider tpl:text-[var(--tpl-text-muted)]" }, lu = {
6770
+ }, lu = { class: "tpl:text-xs tpl:font-medium tpl:uppercase tpl:tracking-wider tpl:text-[var(--tpl-text-muted)]" }, uu = {
6756
6771
  key: 0,
6757
6772
  class: "tpl:text-xs tpl:text-[var(--tpl-text-dim)]"
6758
- }, uu = {
6773
+ }, du = {
6759
6774
  key: 0,
6760
6775
  class: "tpl:flex tpl:items-start tpl:gap-2 tpl:rounded-lg tpl:px-3 tpl:py-2 tpl:text-xs tpl:bg-[var(--tpl-danger-light)] tpl:text-[var(--tpl-danger)]"
6761
- }, du = ["onClick"], fu = { class: "tpl:flex-1 tpl:text-xs tpl:font-medium tpl:text-[var(--tpl-text)]" }, pu = {
6776
+ }, fu = ["onClick"], pu = { class: "tpl:flex-1 tpl:text-xs tpl:font-medium tpl:text-[var(--tpl-text)]" }, mu = {
6762
6777
  key: 0,
6763
6778
  class: "tpl:text-[10px] tpl:text-[var(--tpl-text-dim)]"
6764
- }, mu = {
6779
+ }, hu = {
6765
6780
  key: 0,
6766
6781
  class: "tpl:border-t tpl:border-[var(--tpl-border)]"
6767
- }, hu = {
6782
+ }, gu = {
6768
6783
  key: 0,
6769
6784
  class: "tpl:px-3 tpl:py-3 tpl:text-center tpl:text-xs tpl:text-[var(--tpl-text-dim)]"
6770
- }, gu = { class: "tpl:flex tpl:items-start tpl:gap-2" }, _u = { class: "tpl:flex-1 tpl:min-w-0" }, vu = { class: "tpl:flex tpl:items-start tpl:gap-1.5" }, yu = { class: "tpl:text-xs tpl:leading-snug tpl:text-[var(--tpl-text)]" }, bu = {
6785
+ }, _u = { class: "tpl:flex tpl:items-start tpl:gap-2" }, vu = { class: "tpl:flex-1 tpl:min-w-0" }, yu = { class: "tpl:flex tpl:items-start tpl:gap-1.5" }, bu = { class: "tpl:text-xs tpl:leading-snug tpl:text-[var(--tpl-text)]" }, xu = {
6771
6786
  key: 0,
6772
6787
  class: "tpl:mt-1 tpl:text-[11px] tpl:leading-snug tpl:text-[var(--tpl-text-dim)]"
6773
- }, xu = {
6788
+ }, Su = {
6774
6789
  key: 1,
6775
6790
  class: "tpl:mt-2 tpl:flex tpl:justify-center"
6776
- }, Su = ["disabled", "onClick"], Cu = {
6791
+ }, Cu = ["disabled", "onClick"], wu = {
6777
6792
  key: 0,
6778
6793
  class: "tpl:mt-1.5 tpl:text-[11px] tpl:text-[var(--tpl-danger)]"
6779
- }, wu = {
6794
+ }, Tu = {
6780
6795
  key: 3,
6781
6796
  class: "tpl:flex tpl:h-full tpl:flex-col tpl:items-center tpl:justify-center tpl:gap-3 tpl:text-center"
6782
- }, Tu = { class: "tpl:max-w-[240px] tpl:text-sm tpl:text-[var(--tpl-text-muted)]" }, Eu = { class: "tpl:m-0 tpl:px-4 tpl:pb-2 tpl:pt-2 tpl:text-center tpl:text-[11px] tpl:text-[var(--tpl-text-dim)]" }, Du = /* @__PURE__ */ B({
6797
+ }, Eu = { class: "tpl:max-w-[240px] tpl:text-sm tpl:text-[var(--tpl-text-muted)]" }, Du = { class: "tpl:m-0 tpl:px-4 tpl:pb-2 tpl:pt-2 tpl:text-center tpl:text-[11px] tpl:text-[var(--tpl-text-dim)]" }, Ou = /* @__PURE__ */ B({
6783
6798
  __name: "TemplateScoringPanel",
6784
6799
  props: { visible: { type: Boolean } },
6785
6800
  emits: ["close"],
6786
6801
  setup(e, { emit: t }) {
6787
- let n = e, r = t, { t: i } = Pi(), a = J(Nn, "TemplateScoringPanel"), o = J(ar, "TemplateScoringPanel"), s = v(Un, []), c = C({
6802
+ let n = e, r = t, { t: i } = Fi(), a = J(Nn, "TemplateScoringPanel"), o = J(ar, "TemplateScoringPanel"), s = v(Un, []), c = C({
6788
6803
  spam: !0,
6789
6804
  readability: !0,
6790
6805
  accessibility: !0,
@@ -6799,10 +6814,10 @@ var Zl = {
6799
6814
  "accessibility",
6800
6815
  "bestPractices"
6801
6816
  ], p = {
6802
- spam: di,
6803
- readability: Kr,
6804
- accessibility: fi,
6805
- bestPractices: bi
6817
+ spam: fi,
6818
+ readability: qr,
6819
+ accessibility: pi,
6820
+ bestPractices: xi
6806
6821
  };
6807
6822
  function m() {
6808
6823
  o.score(a.content.value, s);
@@ -6830,50 +6845,50 @@ var Zl = {
6830
6845
  "leave-from-class": "tpl:translate-x-0",
6831
6846
  "leave-to-class": "tpl:translate-x-full"
6832
6847
  }, {
6833
- default: b(() => [e.visible ? (f(), A("div", Zl, [I("div", Ql, [I("div", $l, [V(M(ui), {
6848
+ default: b(() => [e.visible ? (f(), A("div", Ql, [I("div", $l, [I("div", eu, [V(M(di), {
6834
6849
  size: 13,
6835
6850
  "stroke-width": 2
6836
- }), I("span", null, O(M(i).scoring.title), 1)]), I("div", eu, [M(o).scoringResult.value && !M(o).isScoring.value ? (f(), A("button", {
6851
+ }), I("span", null, O(M(i).scoring.title), 1)]), I("div", tu, [M(o).scoringResult.value && !M(o).isScoring.value ? (f(), A("button", {
6837
6852
  key: 0,
6838
6853
  class: "tpl:rounded-md tpl:p-0.5 tpl:transition-colors tpl:duration-150 tpl:text-[var(--tpl-text-muted)]",
6839
6854
  title: M(i).scoring.rescore,
6840
6855
  onClick: n[0] ||= (e) => m()
6841
- }, [V(M(oi), {
6856
+ }, [V(M(si), {
6842
6857
  size: 14,
6843
6858
  "stroke-width": 2
6844
- })], 8, tu)) : j("", !0), I("button", {
6859
+ })], 8, nu)) : j("", !0), I("button", {
6845
6860
  class: "tpl:rounded-md tpl:p-0.5 tpl:transition-colors tpl:duration-150 tpl:text-[var(--tpl-text-muted)]",
6846
6861
  onClick: n[1] ||= (e) => r("close")
6847
- }, [V(M(yi), {
6862
+ }, [V(M(bi), {
6848
6863
  size: 14,
6849
6864
  "stroke-width": 2
6850
- })])])]), I("div", nu, [M(o).isScoring.value ? (f(), A("div", ru, [I("p", iu, O(M(i).scoring.scoring), 1), V(Oi, { class: "tpl:w-3/4" })])) : M(o).error.value && !M(o).scoringResult.value ? (f(), A("div", au, [
6851
- V(M(Br), {
6865
+ })])])]), I("div", ru, [M(o).isScoring.value ? (f(), A("div", iu, [I("p", au, O(M(i).scoring.scoring), 1), V(ki, { class: "tpl:w-3/4" })])) : M(o).error.value && !M(o).scoringResult.value ? (f(), A("div", ou, [
6866
+ V(M(Vr), {
6852
6867
  size: 32,
6853
6868
  "stroke-width": 1.5,
6854
6869
  class: "tpl:text-[var(--tpl-danger)]"
6855
6870
  }),
6856
- I("p", ou, O(M(i).scoring.error), 1),
6871
+ I("p", su, O(M(i).scoring.error), 1),
6857
6872
  I("button", {
6858
6873
  class: "tpl:mt-2 tpl:inline-flex tpl:items-center tpl:gap-1.5 tpl:rounded-md tpl:border tpl:px-3 tpl:py-1.5 tpl:text-xs tpl:font-medium tpl:transition-all tpl:duration-150 tpl:border-[var(--tpl-border)] tpl:text-[var(--tpl-text-muted)]",
6859
6874
  onClick: n[2] ||= (e) => m()
6860
- }, [V(M(oi), {
6875
+ }, [V(M(si), {
6861
6876
  size: 12,
6862
6877
  "stroke-width": 2
6863
6878
  }), z(" " + O(M(i).scoring.rescore), 1)])
6864
- ])) : M(o).scoringResult.value ? (f(), A("div", su, [
6879
+ ])) : M(o).scoringResult.value ? (f(), A("div", cu, [
6865
6880
  I("div", {
6866
6881
  class: "tpl:flex tpl:flex-col tpl:items-center tpl:gap-2 tpl:rounded-[var(--tpl-radius)] tpl:p-5",
6867
- style: L({ backgroundColor: M(Jl)(M(o).scoringResult.value.score) })
6882
+ style: L({ backgroundColor: M(Yl)(M(o).scoringResult.value.score) })
6868
6883
  }, [
6869
6884
  I("span", {
6870
6885
  class: "tpl:text-4xl tpl:font-bold tpl:tabular-nums",
6871
- style: L({ color: M(ql)(M(o).scoringResult.value.score) })
6886
+ style: L({ color: M(Jl)(M(o).scoringResult.value.score) })
6872
6887
  }, O(M(o).scoringResult.value.score), 5),
6873
- I("span", cu, O(M(i).scoring.overallScore), 1),
6874
- _() > 0 ? (f(), A("span", lu, O(_()) + " " + O(M(i).scoring.findings), 1)) : j("", !0)
6888
+ I("span", lu, O(M(i).scoring.overallScore), 1),
6889
+ _() > 0 ? (f(), A("span", uu, O(_()) + " " + O(M(i).scoring.findings), 1)) : j("", !0)
6875
6890
  ], 4),
6876
- M(o).fixError.value ? (f(), A("div", uu, [V(M(Br), {
6891
+ M(o).fixError.value ? (f(), A("div", du, [V(M(Vr), {
6877
6892
  size: 14,
6878
6893
  "stroke-width": 2,
6879
6894
  class: "tpl:mt-0.5 tpl:shrink-0"
@@ -6888,74 +6903,74 @@ var Zl = {
6888
6903
  (f(), P(d(p[e]), {
6889
6904
  size: 14,
6890
6905
  "stroke-width": 2,
6891
- style: L({ color: M(ql)(M(o).scoringResult.value.categories[e].score) })
6906
+ style: L({ color: M(Jl)(M(o).scoringResult.value.categories[e].score) })
6892
6907
  }, null, 8, ["style"])),
6893
- I("span", fu, O(M(i).scoring.categories[e]), 1),
6908
+ I("span", pu, O(M(i).scoring.categories[e]), 1),
6894
6909
  I("span", {
6895
6910
  class: "tpl:rounded-full tpl:px-2 tpl:py-0.5 tpl:text-xs tpl:font-semibold tpl:tabular-nums",
6896
6911
  style: L({
6897
- color: M(ql)(M(o).scoringResult.value.categories[e].score),
6898
- backgroundColor: M(Jl)(M(o).scoringResult.value.categories[e].score)
6912
+ color: M(Jl)(M(o).scoringResult.value.categories[e].score),
6913
+ backgroundColor: M(Yl)(M(o).scoringResult.value.categories[e].score)
6899
6914
  })
6900
6915
  }, O(M(o).scoringResult.value.categories[e].score), 5),
6901
- M(o).scoringResult.value.categories[e].findings.length > 0 ? (f(), A("span", pu, O(M(o).scoringResult.value.categories[e].findings.length), 1)) : j("", !0),
6902
- V(M(Ir), {
6916
+ M(o).scoringResult.value.categories[e].findings.length > 0 ? (f(), A("span", mu, O(M(o).scoringResult.value.categories[e].findings.length), 1)) : j("", !0),
6917
+ V(M(Lr), {
6903
6918
  size: 12,
6904
6919
  "stroke-width": 2,
6905
6920
  class: ae(["tpl:transition-transform tpl:duration-200 tpl:text-[var(--tpl-text-dim)]", c.value[e] ? "tpl:rotate-0" : "tpl:-rotate-90"])
6906
6921
  }, null, 8, ["class"])
6907
- ], 8, du), c.value[e] ? (f(), A("div", mu, [M(o).scoringResult.value.categories[e].findings.length === 0 ? (f(), A("div", hu, O(M(i).scoring.noFindings), 1)) : j("", !0), (f(!0), A(R, null, h(M(o).scoringResult.value.categories[e].findings, (e) => (f(), A("div", {
6922
+ ], 8, fu), c.value[e] ? (f(), A("div", hu, [M(o).scoringResult.value.categories[e].findings.length === 0 ? (f(), A("div", gu, O(M(i).scoring.noFindings), 1)) : j("", !0), (f(!0), A(R, null, h(M(o).scoringResult.value.categories[e].findings, (e) => (f(), A("div", {
6908
6923
  key: e.id,
6909
6924
  class: "tpl:border-t tpl:px-3 tpl:py-2.5 first:tpl:border-t-0 tpl:border-[var(--tpl-border-light)]"
6910
- }, [I("div", gu, [(f(), P(d(M(e.severity === "high" ? Br : e.severity === "medium" ? hi : $r)), {
6925
+ }, [I("div", _u, [(f(), P(d(M(e.severity === "high" ? Vr : e.severity === "medium" ? gi : ei)), {
6911
6926
  size: 13,
6912
6927
  "stroke-width": 2,
6913
6928
  class: "tpl:mt-0.5 tpl:shrink-0",
6914
- style: L({ color: M(Yl)(e.severity) })
6915
- }, null, 8, ["style"])), I("div", _u, [
6916
- I("div", vu, [I("span", {
6929
+ style: L({ color: M(Xl)(e.severity) })
6930
+ }, null, 8, ["style"])), I("div", vu, [
6931
+ I("div", yu, [I("span", {
6917
6932
  class: "tpl:mt-0.5 tpl:shrink-0 tpl:rounded tpl:px-1 tpl:py-px tpl:text-[10px] tpl:font-medium tpl:leading-tight",
6918
6933
  style: L({
6919
- color: M(Yl)(e.severity),
6920
- backgroundColor: M(Xl)(e.severity)
6934
+ color: M(Xl)(e.severity),
6935
+ backgroundColor: M(Zl)(e.severity)
6921
6936
  })
6922
- }, O(M(i).scoring.severity[e.severity]), 5), I("span", yu, O(e.message), 1)]),
6923
- e.suggestion ? (f(), A("p", bu, O(e.suggestion), 1)) : j("", !0),
6924
- e.blockId ? (f(), A("div", xu, [I("button", {
6937
+ }, O(M(i).scoring.severity[e.severity]), 5), I("span", bu, O(e.message), 1)]),
6938
+ e.suggestion ? (f(), A("p", xu, O(e.suggestion), 1)) : j("", !0),
6939
+ e.blockId ? (f(), A("div", Su, [I("button", {
6925
6940
  class: "tpl-scoring-fix-btn tpl:inline-flex tpl:items-center tpl:gap-1.5 tpl:rounded tpl:border tpl:px-3 tpl:py-1.5 tpl:text-[11px] tpl:font-medium tpl:transition-all tpl:duration-150 tpl:disabled:opacity-50 tpl:border-[var(--tpl-border)] tpl:text-[var(--tpl-primary)]",
6926
6941
  style: { "background-color": "transparent" },
6927
6942
  disabled: M(o).fixingFindingId.value !== null,
6928
6943
  onClick: (t) => g(e)
6929
- }, [M(o).fixingFindingId.value === e.id ? (f(), P(M(ei), {
6944
+ }, [M(o).fixingFindingId.value === e.id ? (f(), P(M(ti), {
6930
6945
  key: 0,
6931
6946
  class: "tpl-spinner",
6932
6947
  size: 11,
6933
6948
  "stroke-width": 2
6934
- })) : (f(), P(M(fi), {
6949
+ })) : (f(), P(M(pi), {
6935
6950
  key: 1,
6936
6951
  size: 11,
6937
6952
  "stroke-width": 2
6938
- })), z(" " + O(M(o).fixingFindingId.value === e.id ? M(i).scoring.fixing : M(i).scoring.fix), 1)], 8, Su), M(o).fixError.value ? (f(), A("p", Cu, O(M(o).fixError.value), 1)) : j("", !0)])) : j("", !0)
6953
+ })), z(" " + O(M(o).fixingFindingId.value === e.id ? M(i).scoring.fixing : M(i).scoring.fix), 1)], 8, Cu), M(o).fixError.value ? (f(), A("p", wu, O(M(o).fixError.value), 1)) : j("", !0)])) : j("", !0)
6939
6954
  ])])]))), 128))])) : j("", !0)])), 64))
6940
- ])) : (f(), A("div", wu, [V(M(ui), {
6955
+ ])) : (f(), A("div", Tu, [V(M(di), {
6941
6956
  size: 32,
6942
6957
  "stroke-width": 1.5,
6943
6958
  class: "tpl:text-[var(--tpl-text-dim)]"
6944
- }), I("p", Tu, O(M(i).scoring.emptyState), 1)])), I("p", Eu, O(M(i).aiMenu.disclaimer), 1)])])) : j("", !0)]),
6959
+ }), I("p", Eu, O(M(i).scoring.emptyState), 1)])), I("p", Du, O(M(i).aiMenu.disclaimer), 1)])])) : j("", !0)]),
6945
6960
  _: 1
6946
6961
  }));
6947
6962
  }
6948
- }), Ou = /* @__PURE__ */ e({ default: () => ku }), ku = /* @__PURE__ */ wi(Du, [["__scopeId", "data-v-3a059e8d"]]), Au = ["aria-busy"], ju = {
6963
+ }), ku = /* @__PURE__ */ e({ default: () => Au }), Au = /* @__PURE__ */ Ti(Ou, [["__scopeId", "data-v-3a059e8d"]]), ju = ["aria-busy"], Mu = {
6949
6964
  id: "tpl-test-email-title",
6950
6965
  class: "tpl:mb-4 tpl:text-sm tpl:font-semibold tpl:text-[var(--tpl-text)]"
6951
- }, Mu = { class: "tpl:mb-3" }, Nu = { class: "tpl:mb-1.5 tpl:block tpl:text-sm tpl:font-medium tpl:text-[var(--tpl-text-muted)]" }, Pu = ["value"], Fu = ["disabled"], Iu = ["value"], Lu = {
6966
+ }, Nu = { class: "tpl:mb-3" }, Pu = { class: "tpl:mb-1.5 tpl:block tpl:text-sm tpl:font-medium tpl:text-[var(--tpl-text-muted)]" }, Fu = ["value"], Iu = ["disabled"], Lu = ["value"], Ru = {
6952
6967
  key: 0,
6953
6968
  role: "alert",
6954
6969
  class: "tpl:mb-3 tpl:text-xs tpl:text-[var(--tpl-danger)]"
6955
- }, Ru = { class: "tpl:flex tpl:justify-end tpl:gap-2" }, zu = ["disabled"], Bu = ["disabled"], Vu = {
6970
+ }, zu = { class: "tpl:flex tpl:justify-end tpl:gap-2" }, Bu = ["disabled"], Vu = ["disabled"], Hu = {
6956
6971
  key: 0,
6957
6972
  class: "tpl:flex tpl:items-center tpl:gap-1.5"
6958
- }, Hu = { key: 1 }, Uu = /* @__PURE__ */ B({
6973
+ }, Uu = { key: 1 }, Wu = /* @__PURE__ */ B({
6959
6974
  __name: "TestEmailModal",
6960
6975
  props: {
6961
6976
  visible: { type: Boolean },
@@ -6965,7 +6980,7 @@ var Zl = {
6965
6980
  },
6966
6981
  emits: ["send", "close"],
6967
6982
  setup(e, { emit: t }) {
6968
- let n = e, r = t, { t: i } = Pi(), a = C("");
6983
+ let n = e, r = t, { t: i } = Fi(), a = C("");
6969
6984
  H(() => n.visible, (e) => {
6970
6985
  e && (a.value = n.allowedEmails[0] ?? "");
6971
6986
  });
@@ -6978,7 +6993,7 @@ var Zl = {
6978
6993
  function l(e) {
6979
6994
  e.key === "Enter" && !e.shiftKey && (e.preventDefault(), o()), e.key === "Escape" && s();
6980
6995
  }
6981
- return (t, n) => (f(), P(jl, {
6996
+ return (t, n) => (f(), P(Ml, {
6982
6997
  visible: e.visible,
6983
6998
  onClose: s,
6984
6999
  onKeydown: l
@@ -6994,14 +7009,14 @@ var Zl = {
6994
7009
  "box-shadow": "var(--tpl-shadow-xl)"
6995
7010
  }
6996
7011
  }, [
6997
- I("h3", ju, O(M(i).testEmail.title), 1),
6998
- I("div", Mu, [I("label", Nu, O(M(i).testEmail.recipientLabel), 1), e.allowedEmails.length === 1 ? (f(), A("input", {
7012
+ I("h3", Mu, O(M(i).testEmail.title), 1),
7013
+ I("div", Nu, [I("label", Pu, O(M(i).testEmail.recipientLabel), 1), e.allowedEmails.length === 1 ? (f(), A("input", {
6999
7014
  key: 0,
7000
7015
  type: "text",
7001
7016
  value: a.value,
7002
7017
  disabled: "",
7003
7018
  class: "tpl:h-9 tpl:w-full tpl:rounded-md tpl:border tpl:px-3 tpl:py-1 tpl:text-sm tpl:opacity-70 tpl:shadow-xs tpl:outline-none tpl:border-[var(--tpl-border)] tpl:bg-[var(--tpl-bg)] tpl:text-[var(--tpl-text)]"
7004
- }, null, 8, Pu)) : c((f(), A("select", {
7019
+ }, null, 8, Fu)) : c((f(), A("select", {
7005
7020
  key: 1,
7006
7021
  "onUpdate:modelValue": n[0] ||= (e) => a.value = e,
7007
7022
  class: "tpl:h-9 tpl:w-full tpl:rounded-md tpl:border tpl:px-3 tpl:py-1 tpl:text-sm tpl:shadow-xs tpl:outline-none tpl:border-[var(--tpl-border)] tpl:bg-[var(--tpl-bg)] tpl:text-[var(--tpl-text)]",
@@ -7009,29 +7024,29 @@ var Zl = {
7009
7024
  }, [(f(!0), A(R, null, h(e.allowedEmails, (e) => (f(), A("option", {
7010
7025
  key: e,
7011
7026
  value: e
7012
- }, O(e), 9, Iu))), 128))], 8, Fu)), [[w, a.value]])]),
7013
- e.error ? (f(), A("p", Lu, O(e.error), 1)) : j("", !0),
7014
- I("div", Ru, [I("button", {
7027
+ }, O(e), 9, Lu))), 128))], 8, Iu)), [[w, a.value]])]),
7028
+ e.error ? (f(), A("p", Ru, O(e.error), 1)) : j("", !0),
7029
+ I("div", zu, [I("button", {
7015
7030
  type: "button",
7016
7031
  class: ae(["tpl:cursor-pointer tpl:rounded-md tpl:border tpl:px-3 tpl:py-1.5 tpl:text-sm tpl:font-medium tpl:shadow-xs tpl:transition-all tpl:duration-150 tpl:border-[var(--tpl-border)] tpl:text-[var(--tpl-text)] tpl:bg-[var(--tpl-bg)]", { "tpl:cursor-not-allowed tpl:opacity-50": e.isSending }]),
7017
7032
  disabled: e.isSending,
7018
7033
  onClick: s
7019
- }, O(M(i).testEmail.cancel), 11, zu), I("button", {
7034
+ }, O(M(i).testEmail.cancel), 11, Bu), I("button", {
7020
7035
  type: "button",
7021
7036
  class: "tpl:cursor-pointer tpl:rounded-md tpl:px-3 tpl:py-1.5 tpl:text-sm tpl:font-medium tpl:shadow-xs tpl:transition-all tpl:duration-150 tpl:hover:opacity-90 tpl:disabled:cursor-not-allowed tpl:disabled:opacity-50 tpl:bg-[var(--tpl-primary)] tpl:text-[var(--tpl-bg)]",
7022
7037
  disabled: !a.value || e.isSending,
7023
7038
  onClick: o
7024
- }, [e.isSending ? (f(), A("span", Vu, [V(M(ei), {
7039
+ }, [e.isSending ? (f(), A("span", Hu, [V(M(ti), {
7025
7040
  class: "tpl:animate-spin",
7026
7041
  size: 12,
7027
7042
  "stroke-width": 2
7028
- }), z(" " + O(M(i).testEmail.sending), 1)])) : (f(), A("span", Hu, O(M(i).testEmail.send), 1))], 8, Bu)])
7029
- ], 8, Au)]),
7043
+ }), z(" " + O(M(i).testEmail.sending), 1)])) : (f(), A("span", Uu, O(M(i).testEmail.send), 1))], 8, Vu)])
7044
+ ], 8, ju)]),
7030
7045
  _: 1
7031
7046
  }, 8, ["visible"]));
7032
7047
  }
7033
- }), Wu = /* @__PURE__ */ e({ default: () => Gu }), Gu = Uu;
7048
+ }), Gu = /* @__PURE__ */ e({ default: () => Ku }), Ku = Wu;
7034
7049
  //#endregion
7035
- export { Fi as $, ar as $t, ko as A, me as An, Fr as At, Ma as B, Bn as Bt, Vo as C, ve as Cn, Gr as Ct, Z as D, _e as Dn, Br as Dt, $ as E, Ce as En, Hr as Et, Qa as F, be as Fn, Y as Ft, oa as G, In as Gt, Aa as H, Xn as Ht, eo as I, pe as In, Qn as It, Qi as J, Nn as Jt, aa as K, Hn as Kt, Za as L, de as Ln, nr as Lt, _o as M, Se as Mn, Cr as Mt, uo as N, Te as Nn, hr as Nt, Ao as O, we as On, Rr as Ot, so as P, he as Pn, cr as Pt, Ii as Q, ir as Qt, qa as R, fe as Rn, Yn as Rt, Go as S, W as Sn, Kr as St, Lo as T, ye as Tn, Ur as Tt, xa as U, or as Ut, ja as V, Vn as Vt, _a as W, rr as Wt, Vi as X, Wn as Xt, Ui as Y, Ln as Yt, Li as Z, qn as Zt, ts as _, ht as _n, ti as _t, kl as a, xn as an, yi as at, Jo as b, st as bn, Qr as bt, Rs as c, wn as cn, mi as ct, ss as d, rn as dn, ui as dt, Rn as en, Ni as et, os as f, Mt as fn, li as ft, ns as g, yt as gn, ni as gt, rs as h, _t as hn, ri as ht, jl as i, bn as in, Ci as it, Do as j, xe as jn, X as jt, jo as k, ge as kn, Ir as kt, ps as l, $t as ln, pi as lt, is as m, lt as mn, oi as mt, Ou as n, J as nn, ji as nt, Dl as o, q as on, _i as ot, as as p, Ct as pn, ci as pt, ea as q, Jn as qt, Gl as r, fn as rn, wi as rt, Qc as s, Dn as sn, hi as st, Wu as t, zn as tn, Pi as tt, fs as u, nn as un, fi as ut, es as v, vt as vn, ei as vt, Ro as w, Ee as wn, Wr as wt, Ko as x, ot as xn, Zr as xt, Yo as y, ct as yn, $r as yt, Ga as z, ue as zn, tr as zt };
7050
+ export { Ii as $, Qn as $t, Ao as A, me as An, Ir as At, Na as B, Vn as Bt, Ho as C, ve as Cn, Kr as Ct, Z as D, _e as Dn, Vr as Dt, $ as E, Ce as En, Ur as Et, $a as F, be as Fn, Y as Ft, sa as G, Hn as Gt, ja as H, or as Ht, to as I, pe as In, nr as It, $i as J, Ln as Jt, oa as K, Jn as Kt, Qa as L, de as Ln, Yn as Lt, vo as M, Se as Mn, wr as Mt, fo as N, Te as Nn, gr as Nt, jo as O, we as On, zr as Ot, co as P, he as Pn, lr as Pt, Li as Q, ar as Qt, Ja as R, fe as Rn, tr as Rt, Ko as S, W as Sn, qr as St, Ro as T, ye as Tn, Wr as Tt, Sa as U, rr as Ut, Ma as V, Xn as Vt, va as W, In as Wt, Hi as X, qn as Xt, Wi as Y, Wn as Yt, Ri as Z, ir as Zt, ns as _, ht as _n, ni as _t, Al as a, xn as an, bi as at, Yo as b, st as bn, $r as bt, zs as c, wn as cn, hi as ct, cs as d, rn as dn, di as dt, Rn as en, Pi as et, ss as f, Mt as fn, ui as ft, rs as g, yt as gn, ri as gt, is as h, _t as hn, ii as ht, Ml as i, bn as in, wi as it, Oo as j, xe as jn, X as jt, Mo as k, ge as kn, Lr as kt, ms as l, $t as ln, mi as lt, as as m, lt as mn, si as mt, ku as n, J as nn, Mi as nt, Ol as o, q as on, vi as ot, os as p, Ct as pn, li as pt, ta as q, Nn as qt, Kl as r, fn as rn, Ti as rt, $c as s, Dn as sn, gi as st, Gu as t, zn as tn, Fi as tt, ps as u, nn as un, pi as ut, ts as v, vt as vn, ti as vt, zo as w, Ee as wn, Gr as wt, qo as x, ot as xn, Qr as xt, Xo as y, ct as yn, ei as yt, Ka as z, ue as zn, Bn as zt };
7036
7051
 
7037
- //# sourceMappingURL=features-CXF_YKlL.js.map
7052
+ //# sourceMappingURL=features-BsW4aFcn.js.map