@templatical/editor 0.9.1 → 0.10.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 (148) hide show
  1. package/dist/{AiChatSidebar-BUKj9n02.js → AiChatSidebar-Dz5bH1z3.js} +13 -13
  2. package/dist/{AiFeatureMenu-Co14YVJt.js → AiFeatureMenu-D2Xn0jFx.js} +7 -7
  3. package/dist/{BlockIssueBadge-DThKKeub.js → BlockIssueBadge-CnqD1cGo.js} +5 -5
  4. package/dist/{CloudEditor-DHB1FoQD.js → CloudEditor-BizZwsfD.js} +237 -233
  5. package/dist/{CollaboratorBar-Bc6q0gB9.js → CollaboratorBar-Bn2JDu6l.js} +4 -4
  6. package/dist/{CommentsSidebar-DiH4R4F0.js → CommentsSidebar-BAG6rdVC.js} +12 -12
  7. package/dist/{CountdownBlock-BTPefclD.js → CountdownBlock-B_Hr9Bm9.js} +3 -3
  8. package/dist/{CountdownToolbar-Dvr2icg-.js → CountdownToolbar-DaqDLKLk.js} +3 -3
  9. package/dist/{DesignReferenceSidebar-BP32MgpS.js → DesignReferenceSidebar-I9LWjvrj.js} +9 -9
  10. package/dist/{IssuesPanel-B1LT91IX.js → IssuesPanel-B32Ifp4x.js} +8 -8
  11. package/dist/{LoadingTrack-xCOLUR3o.js → LoadingTrack-UTqOUN4O.js} +1 -1
  12. package/dist/{ModuleBrowserModal-CWegFoOA.js → ModuleBrowserModal-DodRped1.js} +10 -10
  13. package/dist/{ModulePreviewCanvas-D9WUSSRT.js → ModulePreviewCanvas-DhcnddJF.js} +3 -3
  14. package/dist/{NumberWithSuffix-CxUBW_V2.js → NumberWithSuffix-DB7GyyCI.js} +3 -3
  15. package/dist/{ParagraphEditor-DrAz2yot.js → ParagraphEditor-pJA9BHAL.js} +26 -26
  16. package/dist/{RichTextEditorContent-gR169m1-.js → RichTextEditorContent-dTGSUff_.js} +6 -6
  17. package/dist/{SaveModuleDialog-DWidA0c9.js → SaveModuleDialog-D634e99d.js} +7 -7
  18. package/dist/{SnapshotHistory-CIo2Jaw-.js → SnapshotHistory-m_nGAHlb.js} +9 -9
  19. package/dist/{TemplateScoringPanel-seBvvn8O.js → TemplateScoringPanel-BOQh9neV.js} +14 -14
  20. package/dist/{TestEmailModal-BuCuWp3N.js → TestEmailModal-DOcwoKkc.js} +5 -5
  21. package/dist/{TitleEditor-BmW0uMl7.js → TitleEditor-t6JMWamY.js} +12 -12
  22. package/dist/{TplModal-YFpBaiLj.js → TplModal-BAtbfDB0.js} +4 -4
  23. package/dist/{blockTypeIcons-DCkHXPhx.js → blockTypeIcons-C4lXx3Au.js} +2 -2
  24. package/dist/bundle-stats.json +6 -6
  25. package/dist/cdn/chunks/{AiFeatureMenu-Dayzk2H7.js → AiFeatureMenu-BeOyHAoZ.js} +3 -3
  26. package/dist/cdn/chunks/{AiFeatureMenu-Dayzk2H7.js.map → AiFeatureMenu-BeOyHAoZ.js.map} +1 -1
  27. package/dist/cdn/chunks/{BlockIssueBadge-D_US2wqo.js → BlockIssueBadge-C6YilQdl.js} +5 -5
  28. package/dist/cdn/chunks/{BlockIssueBadge-D_US2wqo.js.map → BlockIssueBadge-C6YilQdl.js.map} +1 -1
  29. package/dist/cdn/chunks/{CloudEditor-CrZk-OwQ.js → CloudEditor-DEA37rdW.js} +178 -174
  30. package/dist/cdn/chunks/CloudEditor-DEA37rdW.js.map +1 -0
  31. package/dist/cdn/chunks/{CollaboratorBar-C4CFs5EJ.js → CollaboratorBar-CKW7jOW4.js} +4 -4
  32. package/dist/cdn/chunks/{CollaboratorBar-C4CFs5EJ.js.map → CollaboratorBar-CKW7jOW4.js.map} +1 -1
  33. package/dist/cdn/chunks/{CountdownBlock-D6lCXhZA.js → CountdownBlock-DU9ga9Ki.js} +3 -3
  34. package/dist/cdn/chunks/{CountdownBlock-D6lCXhZA.js.map → CountdownBlock-DU9ga9Ki.js.map} +1 -1
  35. package/dist/cdn/chunks/{CountdownToolbar-BsGUxoRv.js → CountdownToolbar-BHWsxth7.js} +4 -4
  36. package/dist/cdn/chunks/{CountdownToolbar-BsGUxoRv.js.map → CountdownToolbar-BHWsxth7.js.map} +1 -1
  37. package/dist/cdn/chunks/{IssuesPanel-DeHTmRDz.js → IssuesPanel-BkYhij39.js} +9 -9
  38. package/dist/cdn/chunks/{IssuesPanel-DeHTmRDz.js.map → IssuesPanel-BkYhij39.js.map} +1 -1
  39. package/dist/cdn/chunks/{ModuleBrowserModal-Cgjz4xAz.js → ModuleBrowserModal-D51w942J.js} +9 -9
  40. package/dist/cdn/chunks/{ModuleBrowserModal-Cgjz4xAz.js.map → ModuleBrowserModal-D51w942J.js.map} +1 -1
  41. package/dist/cdn/chunks/{ModulePreviewCanvas-CeS9PsAA.js → ModulePreviewCanvas-BqTqcKHS.js} +3 -3
  42. package/dist/cdn/chunks/{ModulePreviewCanvas-CeS9PsAA.js.map → ModulePreviewCanvas-BqTqcKHS.js.map} +1 -1
  43. package/dist/cdn/chunks/{NumberWithSuffix-Bp-idLCc.js → NumberWithSuffix-DuUcF2zG.js} +3 -3
  44. package/dist/cdn/chunks/{NumberWithSuffix-Bp-idLCc.js.map → NumberWithSuffix-DuUcF2zG.js.map} +1 -1
  45. package/dist/cdn/chunks/{ParagraphEditor-fM9aFu8T.js → ParagraphEditor-Bqjn3ZNm.js} +45 -45
  46. package/dist/cdn/chunks/{ParagraphEditor-fM9aFu8T.js.map → ParagraphEditor-Bqjn3ZNm.js.map} +1 -1
  47. package/dist/cdn/chunks/{RichTextEditorContent-DwNPE5H5.js → RichTextEditorContent-mIkkb5EK.js} +4 -4
  48. package/dist/cdn/chunks/{RichTextEditorContent-DwNPE5H5.js.map → RichTextEditorContent-mIkkb5EK.js.map} +1 -1
  49. package/dist/cdn/chunks/{SaveModuleDialog-BrtDXzIz.js → SaveModuleDialog-Felfmkcj.js} +5 -5
  50. package/dist/cdn/chunks/{SaveModuleDialog-BrtDXzIz.js.map → SaveModuleDialog-Felfmkcj.js.map} +1 -1
  51. package/dist/cdn/chunks/{TitleEditor-D0rSnye0.js → TitleEditor-Dcldr8D6.js} +12 -12
  52. package/dist/cdn/chunks/{TitleEditor-D0rSnye0.js.map → TitleEditor-Dcldr8D6.js.map} +1 -1
  53. package/dist/cdn/chunks/blockTypeIcons-D05Wqf5u.js +22 -0
  54. package/dist/cdn/chunks/{blockTypeIcons-YOEe5mDE.js.map → blockTypeIcons-D05Wqf5u.js.map} +1 -1
  55. package/dist/{de-CATfXDKV.js → cdn/chunks/de-DIAGP7yH.js} +2 -6
  56. package/dist/cdn/chunks/de-DIAGP7yH.js.map +1 -0
  57. package/dist/cdn/chunks/{draggable-BwWMFq33.js → draggable-J_1CPXYc.js} +1254 -1253
  58. package/dist/cdn/chunks/draggable-J_1CPXYc.js.map +1 -0
  59. package/dist/{en-CwCAgYL5.js → cdn/chunks/en-nqIW8Q9W.js} +2 -6
  60. package/dist/cdn/chunks/en-nqIW8Q9W.js.map +1 -0
  61. package/dist/cdn/chunks/{extensions-GYsbQFPr.js → extensions-CNmpC18A.js} +127 -124
  62. package/dist/cdn/chunks/{extensions-GYsbQFPr.js.map → extensions-CNmpC18A.js.map} +1 -1
  63. package/dist/cdn/chunks/{features-D-2kVhHY.js → features-_ar9QbVv.js} +1006 -979
  64. package/dist/cdn/chunks/features-_ar9QbVv.js.map +1 -0
  65. package/dist/cdn/chunks/{icons-fZoyKV_s.js → icons-CnwCLJX-.js} +19 -33
  66. package/dist/cdn/chunks/icons-CnwCLJX-.js.map +1 -0
  67. package/dist/cdn/chunks/{media-library-CO2WOETY.js → media-library-9jyt7Bf9.js} +83 -79
  68. package/dist/cdn/chunks/media-library-9jyt7Bf9.js.map +1 -0
  69. package/dist/{pt-BR-D3Mg7AKe.js → cdn/chunks/pt-BR-DCNnLLx9.js} +2 -6
  70. package/dist/cdn/chunks/pt-BR-DCNnLLx9.js.map +1 -0
  71. package/dist/cdn/chunks/{quality-BxPiS-wv.js → quality-CO9mj_RH.js} +494 -484
  72. package/dist/cdn/chunks/quality-CO9mj_RH.js.map +1 -0
  73. package/dist/cdn/chunks/{renderer-CfHPFI5v.js → renderer-m6XTCWCL.js} +135 -117
  74. package/dist/cdn/chunks/renderer-m6XTCWCL.js.map +1 -0
  75. package/dist/cdn/chunks/{src-ftxPuuQh.js → src-DfMSYqvE.js} +9 -9
  76. package/dist/cdn/chunks/{src-ftxPuuQh.js.map → src-DfMSYqvE.js.map} +1 -1
  77. package/dist/cdn/chunks/{styles-CVUvPdKD.js → styles-1uFWdD5T.js} +1045 -1074
  78. package/dist/cdn/chunks/styles-1uFWdD5T.js.map +1 -0
  79. package/dist/cdn/chunks/{tiptap-BBbH3IT9.js → tiptap-CJbIm_hE.js} +5 -5
  80. package/dist/cdn/chunks/{tiptap-BBbH3IT9.js.map → tiptap-CJbIm_hE.js.map} +1 -1
  81. package/dist/cdn/editor.css +1 -1
  82. package/dist/cdn/editor.js +109 -100
  83. package/dist/cdn/editor.js.map +1 -1
  84. package/dist/{check-ChQyfxJ3.js → check-Bs6_uQpm.js} +1 -1
  85. package/dist/{chevron-down-DJjo0jSV.js → chevron-down-so1rnGwF.js} +1 -1
  86. package/dist/{circle-alert-CPH6l3Lc.js → circle-alert-CrKv0AuW.js} +1 -1
  87. package/dist/{clock-DHl_BIkU.js → clock-Cpx6GYpa.js} +1 -1
  88. package/dist/{cloud-VxYMtfXC.js → cloud-bHhCNRZa.js} +80 -74
  89. package/dist/{createLucideIcon-XgXOJ05E.js → createLucideIcon-DFBxEm5K.js} +3 -3
  90. package/dist/{cdn/chunks/de-CATfXDKV.js → de-DIAGP7yH.js} +0 -8
  91. package/dist/{dist-C0jo8wtG.js → dist-0RguD1vS.js} +1 -1
  92. package/dist/{dist-CNLAS2v2.js → dist-2-A7SaKm.js} +3 -3
  93. package/dist/{dist-UK-lbEBc.js → dist-74n2Mqc6.js} +1 -1
  94. package/dist/{dist-BzuC8o3y.js → dist-B3CcePtK.js} +3 -3
  95. package/dist/{dist-D8C6jIXM.js → dist-BejBMbBX.js} +3 -3
  96. package/dist/{dist-CIV3Brg-.js → dist-BufRk8ZY.js} +4 -6
  97. package/dist/{dist-DILjuzSv.js → dist-Bvje_Tqb.js} +1 -1
  98. package/dist/{dist-BDgf2G-V.js → dist-BxHa6kIT.js} +3 -3
  99. package/dist/{dist-CUpJmrjt.js → dist-CIK3BYgh.js} +1 -1
  100. package/dist/{dist-C8wMh_gi.js → dist-CMkZaqX1.js} +1 -1
  101. package/dist/{dist-BxP6TB0l.js → dist-CoaWXQ7N.js} +1 -1
  102. package/dist/{dist-D5lmdi1F.js → dist-D1YvgM6p.js} +1 -1
  103. package/dist/{dist-DYO-w_Jf.js → dist-DJ5YJLXn.js} +1 -1
  104. package/dist/{dist-DXaxGLsw.js → dist-DwEpKyry.js} +1 -1
  105. package/dist/{cdn/chunks/en-CwCAgYL5.js → en-nqIW8Q9W.js} +0 -8
  106. package/dist/{extensions-Mj2-D8uK.js → extensions-C810eSzv.js} +107 -104
  107. package/dist/{image-up-CPBCOMit.js → image-up-kMLE5GsI.js} +1 -1
  108. package/dist/index.d.ts +8 -0
  109. package/dist/{info-DIY9mguM.js → info-xqRxLfNz.js} +1 -1
  110. package/dist/keys-BoYBr3PU.js +10 -0
  111. package/dist/{list-checks-CSCyu3fH.js → list-checks-C81htkBJ.js} +1 -1
  112. package/dist/{loader-circle-Rz_4vJLH.js → loader-circle-C6cZPIum.js} +1 -1
  113. package/dist/{message-circle-D-umK_MU.js → message-circle-dqOBRe07.js} +1 -1
  114. package/dist/{cdn/chunks/pt-BR-D3Mg7AKe.js → pt-BR-DCNnLLx9.js} +0 -8
  115. package/dist/{refresh-cw-CvWF4jfR.js → refresh-cw-DCjNd6o0.js} +1 -1
  116. package/dist/{scan-line-wanvAFDr.js → scan-line-DXz0nZVJ.js} +1 -1
  117. package/dist/{send-BhbhbIFT.js → send-C4uH_WaI.js} +1 -1
  118. package/dist/{shield-check-CXPPMWth.js → shield-check-B3U68ssA.js} +1 -1
  119. package/dist/{sparkles-CrUN0KWY.js → sparkles-CsDweGUy.js} +1 -1
  120. package/dist/style.css +1 -1
  121. package/dist/{styles-CxwIlb7Y.js → styles-CBlNpqL9.js} +1031 -1074
  122. package/dist/templatical-editor.js +116 -107
  123. package/dist/{text-align-end-Bkq8oBrD.js → text-align-start-BkKQePFp.js} +11 -11
  124. package/dist/{trash-2-BpY5BCLT.js → trash-2-BIOkaEz1.js} +1 -1
  125. package/dist/{triangle-alert-MwJBKR2e.js → triangle-alert-Bbgu6uUG.js} +1 -1
  126. package/dist/{useAliveFlag-BLyG8L4d.js → useAliveFlag-Bc99FWyR.js} +1 -1
  127. package/dist/{useCloudI18n-DKWJg6rJ.js → useCloudI18n-DiwsLi6z.js} +2 -2
  128. package/dist/{useEditorCore-CEkf_VWX.js → useEditorCore-7c1QpPlw.js} +717 -694
  129. package/dist/{useI18n-Besvmtxy.js → useI18n-DskZMfRJ.js} +2 -2
  130. package/dist/{useMergeTag-WNzaCpXR.js → useMergeTag-Co4xYwG6.js} +4 -4
  131. package/dist/usePopoverRoot-DYH_gX8o.js +8 -0
  132. package/dist/{vue.runtime.esm-bundler-BDSGA5hA.js → vue.runtime.esm-bundler-D0Hg03Ub.js} +1289 -1288
  133. package/dist/{x-rcnxRG8Y.js → x-DWU6NCuE.js} +1 -1
  134. package/package.json +10 -10
  135. package/dist/cdn/chunks/CloudEditor-CrZk-OwQ.js.map +0 -1
  136. package/dist/cdn/chunks/blockTypeIcons-YOEe5mDE.js +0 -22
  137. package/dist/cdn/chunks/de-CATfXDKV.js.map +0 -1
  138. package/dist/cdn/chunks/draggable-BwWMFq33.js.map +0 -1
  139. package/dist/cdn/chunks/en-CwCAgYL5.js.map +0 -1
  140. package/dist/cdn/chunks/features-D-2kVhHY.js.map +0 -1
  141. package/dist/cdn/chunks/icons-fZoyKV_s.js.map +0 -1
  142. package/dist/cdn/chunks/media-library-CO2WOETY.js.map +0 -1
  143. package/dist/cdn/chunks/pt-BR-D3Mg7AKe.js.map +0 -1
  144. package/dist/cdn/chunks/quality-BxPiS-wv.js.map +0 -1
  145. package/dist/cdn/chunks/renderer-CfHPFI5v.js.map +0 -1
  146. package/dist/cdn/chunks/styles-CVUvPdKD.js.map +0 -1
  147. package/dist/keys-BiQlvx51.js +0 -10
  148. package/dist/usePopoverRoot-CKt956u-.js +0 -8
@@ -1,25 +1,25 @@
1
- import { A as e, B as t, L as n, M as r, O as i, Q as a, X as o, _ as s, at as c, b as l, c as u, d, f, g as p, h as m, j as h, k as g, l as _, m as v, o as y, ot as b, p as x, q as S, rt as C, st as w, t as T, v as E, y as D, z as O } from "./vue.runtime.esm-bundler-BDSGA5hA.js";
1
+ import { A as e, B as t, L as n, M as r, O as i, Q as a, X as o, _ as s, at as c, b as l, c as u, d, f, g as p, h as m, j as h, k as g, l as _, m as v, o as y, ot as b, p as x, q as S, rt as C, st as w, t as T, v as E, y as D, z as O } from "./vue.runtime.esm-bundler-D0Hg03Ub.js";
2
2
  import { t as k } from "./timeouts-Bmi_yePw.js";
3
- import { E as A, i as j } from "./dist-CIV3Brg-.js";
4
- import { P as M, S as N, t as P } from "./useEditorCore-CEkf_VWX.js";
5
- import { c as F, t as I } from "./dist-CNLAS2v2.js";
6
- import { E as L, S as R, T as z, c as B, l as V, r as ee, s as te, t as H } from "./keys-BiQlvx51.js";
7
- import { t as U } from "./useI18n-Besvmtxy.js";
8
- import { t as W } from "./createLucideIcon-XgXOJ05E.js";
9
- import { t as G } from "./check-ChQyfxJ3.js";
10
- import { t as K } from "./circle-alert-CPH6l3Lc.js";
11
- import { a as q, c as ne, i as J, l as re, n as ie, o as ae, r as oe, s as se, t as ce, u as le } from "./styles-CxwIlb7Y.js";
12
- import { t as ue } from "./clock-DHl_BIkU.js";
13
- import { t as Y } from "./loader-circle-Rz_4vJLH.js";
14
- import { t as X } from "./message-circle-D-umK_MU.js";
15
- import { t as Z } from "./send-BhbhbIFT.js";
16
- import { t as de } from "./sparkles-CrUN0KWY.js";
17
- import { t as fe } from "./triangle-alert-MwJBKR2e.js";
18
- import { t as pe } from "./_plugin-vue_export-helper-B3ysoDQm.js";
19
- import { n as Q } from "./useCloudI18n-DKWJg6rJ.js";
3
+ import { E as A, i as j } from "./dist-BufRk8ZY.js";
4
+ import { P as M, S as N, t as ee } from "./useEditorCore-7c1QpPlw.js";
5
+ import { c as P, t as F } from "./dist-2-A7SaKm.js";
6
+ import { C as I, D as L, E as R, c as z, l as B, r as te, s as ne, t as V } from "./keys-BoYBr3PU.js";
7
+ import { t as H } from "./useI18n-DskZMfRJ.js";
8
+ import { t as U } from "./createLucideIcon-DFBxEm5K.js";
9
+ import { t as W } from "./check-Bs6_uQpm.js";
10
+ import { t as G } from "./circle-alert-CrKv0AuW.js";
11
+ import { a as K, c as re, d as ie, i as q, l as ae, n as oe, o as se, r as ce, s as le, t as ue, u as de } from "./styles-CBlNpqL9.js";
12
+ import { t as fe } from "./clock-Cpx6GYpa.js";
13
+ import { t as J } from "./loader-circle-C6cZPIum.js";
14
+ import { t as Y } from "./message-circle-dqOBRe07.js";
15
+ import { t as X } from "./send-C4uH_WaI.js";
16
+ import { t as Z } from "./sparkles-CsDweGUy.js";
17
+ import { t as pe } from "./triangle-alert-Bbgu6uUG.js";
18
+ import { t as me } from "./_plugin-vue_export-helper-B3ysoDQm.js";
19
+ import { n as Q } from "./useCloudI18n-DiwsLi6z.js";
20
20
  import { d as $ } from "./styleConstants-lGobwiLH.js";
21
- import { _ as me, a as he, c as ge, d as _e, f as ve, g as ye, h as be, l as xe, m as Se, n as Ce, o as we, p as Te, r as Ee, s as De, t as Oe, v as ke, y as Ae } from "./cloud-VxYMtfXC.js";
22
- var je = W("save", [
21
+ import { _ as he, a as ge, c as _e, d as ve, f as ye, g as be, h as xe, l as Se, m as Ce, n as we, o as Te, p as Ee, r as De, s as Oe, t as ke, v as Ae, y as je } from "./cloud-bHhCNRZa.js";
22
+ var Me = U("save", [
23
23
  ["path", {
24
24
  d: "M15.2 3a2 2 0 0 1 1.4.6l3.8 3.8a2 2 0 0 1 .6 1.4V19a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2z",
25
25
  key: "1c8476"
@@ -35,14 +35,14 @@ var je = W("save", [
35
35
  ]);
36
36
  //#endregion
37
37
  //#region src/cloud/composables/useSnapshotPreview.ts
38
- function Me(e) {
38
+ function Ne(e) {
39
39
  let { authManager: t, editor: n, history: r, conditionPreview: i, autoSave: s, onError: c } = e, l = a(null), u = o(null), f = o(null), p = !1;
40
40
  S(() => {
41
41
  p = !0;
42
42
  });
43
43
  let m = d(() => u.value !== null), h = d(() => l.value?.snapshots.value ?? []), g = d(() => l.value?.isLoading.value ?? !1), _ = d(() => l.value?.isRestoring.value ?? !1);
44
44
  function v() {
45
- n.state.template?.id && !l.value && (l.value = ye({
45
+ n.state.template?.id && !l.value && (l.value = be({
46
46
  authManager: t,
47
47
  templateId: n.state.template.id,
48
48
  onRestore: y,
@@ -64,6 +64,8 @@ function Me(e) {
64
64
  async function x() {
65
65
  if (!(!u.value || !l.value)) try {
66
66
  if (await l.value.restoreSnapshot(u.value.id), p || (await l.value.loadSnapshots(), p)) return;
67
+ } catch (e) {
68
+ throw !p && f.value && n.setContent(f.value, !1), e;
67
69
  } finally {
68
70
  p || (u.value = null, f.value = null, s?.resume());
69
71
  }
@@ -92,7 +94,7 @@ function Me(e) {
92
94
  }
93
95
  //#endregion
94
96
  //#region src/cloud/composables/useCloudPanelState.ts
95
- function Ne() {
97
+ function Pe() {
96
98
  let e = o(null), t = d({
97
99
  get: () => e.value === "ai-chat",
98
100
  set: (t) => e.value = t ? "ai-chat" : null
@@ -115,7 +117,7 @@ function Ne() {
115
117
  function g(t) {
116
118
  l.value = !1, e.value = e.value === t ? null : t;
117
119
  }
118
- return I(u, () => {
120
+ return F(u, () => {
119
121
  l.value = !1;
120
122
  }), {
121
123
  activePanel: e,
@@ -137,8 +139,8 @@ function Ne() {
137
139
  }
138
140
  //#endregion
139
141
  //#region src/cloud/composables/useCollabUndoWarning.ts
140
- function Pe(e) {
141
- let { isCollaborationEnabled: t, getCollaboratorCount: n, canUndo: r } = e, i = o(!1), a = o(!1), { start: s } = F(() => {
142
+ function Fe(e) {
143
+ let { isCollaborationEnabled: t, getCollaboratorCount: n, canUndo: r } = e, i = o(!1), a = o(!1), { start: s } = P(() => {
142
144
  a.value = !1;
143
145
  }, k, { immediate: !1 });
144
146
  function c() {
@@ -151,8 +153,8 @@ function Pe(e) {
151
153
  }
152
154
  //#endregion
153
155
  //#region src/cloud/composables/useCloudFeatureFlags.ts
154
- function Fe(e) {
155
- let { planConfigInstance: t, aiConfig: n, editor: r } = e, i = d(() => t.hasFeature("ai_generation") && n.hasAnyMenuFeature.value), a = d(() => t.hasFeature("test_email")), s = d(() => !!r.state.template?.id), c = d(() => t.hasFeature("white_label")), l = d(() => t.config.value?.limits.max_templates ?? null), u = d(() => t.config.value?.template_count ?? 0), f = o(!1), p = o("idle"), m = o(""), { start: h } = F(() => {
156
+ function Ie(e) {
157
+ let { planConfigInstance: t, aiConfig: n, editor: r } = e, i = d(() => t.hasFeature("ai_generation") && n.hasAnyMenuFeature.value), a = d(() => t.hasFeature("test_email")), s = d(() => !!r.state.template?.id), c = d(() => t.hasFeature("white_label")), l = d(() => t.config.value?.limits.max_templates ?? null), u = d(() => t.config.value?.template_count ?? 0), f = o(!1), p = o("idle"), m = o(""), { start: h } = P(() => {
156
158
  p.value = "idle";
157
159
  }, 3e3, { immediate: !1 });
158
160
  return {
@@ -170,7 +172,7 @@ function Fe(e) {
170
172
  }
171
173
  //#endregion
172
174
  //#region src/cloud/composables/useCloudMediaLibrary.ts
173
- function Ie(e) {
175
+ function Le(e) {
174
176
  let { onRequestMedia: t, mediaLibraryOpen: n, mediaLibraryAccept: r } = e, i = null;
175
177
  async function a() {
176
178
  if (t) {
@@ -205,30 +207,30 @@ function Ie(e) {
205
207
  }
206
208
  //#endregion
207
209
  //#region src/cloud/composables/useCloudInitialization.ts
208
- function Le(e) {
209
- let { config: t, translations: r, fontsManager: i, emit: a, getCommentsSidebar: s } = e, c = o(!0), l = o(!1), u = o(null), f = !1, p = { value: null }, m = null, g = null, _ = new Oe({
210
+ function Re(e) {
211
+ let { config: t, translations: r, fontsManager: i, emit: a, getCommentsSidebar: s } = e, c = o(!0), l = o(!1), u = o(null), f = !1, p = { value: null }, m = null, g = null, _ = new ke({
210
212
  ...t.auth,
211
213
  onError: t.onError
212
- }), v = Se({
214
+ }), v = Ce({
213
215
  authManager: _,
214
216
  onError: t.onError
215
- }), y = o(/* @__PURE__ */ new Map()), b = _e({
217
+ }), y = o(/* @__PURE__ */ new Map()), b = ve({
216
218
  authManager: _,
217
219
  defaultFontFamily: t.fonts?.defaultFont,
218
220
  templateDefaults: t.templateDefaults,
219
221
  onError: t.onError,
220
222
  lockedBlocks: y
221
- }), x = Ae({
223
+ }), x = je({
222
224
  authManager: _,
223
225
  onError: t.onError
224
226
  });
225
- t.mcp?.enabled && Te({
227
+ t.mcp?.enabled && Ee({
226
228
  editor: b,
227
229
  channel: x.channel,
228
230
  onOperation: t.mcp.onOperation
229
231
  });
230
232
  let S = null;
231
- t.collaboration?.enabled && (S = we({
233
+ t.collaboration?.enabled && (S = Te({
232
234
  authManager: _,
233
235
  editor: b,
234
236
  channel: x.channel,
@@ -239,8 +241,8 @@ function Le(e) {
239
241
  onBlockUnlocked: t.collaboration.onBlockUnlocked
240
242
  }), n(() => S.lockedBlocks.value, (e) => {
241
243
  y.value = e;
242
- }, { immediate: !0 }), De(b, S));
243
- let C = d(() => !!t.collaboration?.enabled && v.hasFeature("collaboration")), w = P({
244
+ }, { immediate: !0 }), Oe(b, S));
245
+ let C = d(() => !!t.collaboration?.enabled && v.hasFeature("collaboration")), w = ee({
244
246
  editor: b,
245
247
  config: {
246
248
  uiTheme: t.uiTheme,
@@ -250,7 +252,7 @@ function Le(e) {
250
252
  mergeTags: t.mergeTags,
251
253
  displayConditions: t.displayConditions,
252
254
  onRequestMedia: null,
253
- lint: re(t),
255
+ lint: de(t),
254
256
  onSave: () => {
255
257
  p.value?.().catch((e) => {
256
258
  t.onError?.(e);
@@ -271,13 +273,13 @@ function Le(e) {
271
273
  keyboardOptions: { onBeforeUndo: () => g?.showCollabUndoWarning() },
272
274
  editorRoot: e.editorRoot,
273
275
  containerEl: e.containerEl
274
- }), T = Pe({
276
+ }), T = Fe({
275
277
  isCollaborationEnabled: C,
276
278
  getCollaboratorCount: () => S?.collaborators.value.length ?? 0,
277
279
  canUndo: w.history.canUndo
278
280
  });
279
281
  g = T;
280
- let E = Me({
282
+ let E = Ne({
281
283
  authManager: _,
282
284
  editor: b,
283
285
  history: w.history,
@@ -286,11 +288,11 @@ function Le(e) {
286
288
  onError: t.onError
287
289
  });
288
290
  m = E;
289
- let D = Ne(), O = he(t.ai), k = Fe({
291
+ let D = Pe(), O = ge(t.ai), k = Ie({
290
292
  planConfigInstance: v,
291
293
  aiConfig: O,
292
294
  editor: b
293
- }), A = Ie({
295
+ }), A = Le({
294
296
  onRequestMedia: t.onRequestMedia,
295
297
  mediaLibraryOpen: D.mediaLibraryOpen,
296
298
  mediaLibraryAccept: D.mediaLibraryAccept
@@ -299,11 +301,11 @@ function Le(e) {
299
301
  onBlockMove: b.moveBlock,
300
302
  onBlockAdd: b.addBlock
301
303
  });
302
- let j = ve({
304
+ let j = ye({
303
305
  authManager: _,
304
306
  getFontsConfig: () => t.fonts,
305
307
  canUseCustomFonts: () => v.hasFeature("custom_fonts")
306
- }), F = ke({
308
+ }), P = Ae({
307
309
  authManager: _,
308
310
  getTemplateId: () => b.state.template?.id ?? null,
309
311
  save: () => b.save(),
@@ -311,7 +313,7 @@ function Le(e) {
311
313
  onError: t.onError,
312
314
  isAuthReady: l,
313
315
  onBeforeTestEmail: t.onBeforeTestEmail
314
- }), I = xe({
316
+ }), F = Se({
315
317
  authManager: _,
316
318
  getTemplateId: () => b.state.template?.id ?? null,
317
319
  getSocketId: () => x.getSocketId(),
@@ -320,56 +322,56 @@ function Le(e) {
320
322
  isAuthReady: l,
321
323
  hasCommentingFeature: () => t.commenting !== !1 && v.hasFeature("commenting")
322
324
  });
323
- ge({
324
- comments: I,
325
+ _e({
326
+ comments: F,
325
327
  channel: x.channel
326
328
  });
327
- let B = be({
329
+ let z = xe({
328
330
  authManager: _,
329
331
  onError: t.onError
330
- }), U = o(!1), W = o(null), G = o(!1), K = me({
332
+ }), H = o(!1), U = o(null), W = o(!1), G = he({
331
333
  authManager: _,
332
334
  getTemplateId: () => b.state.template?.id ?? null
333
335
  });
334
- function q(e) {
336
+ function K(e) {
335
337
  D.commentsOpen.value = !0, queueMicrotask(() => {
336
338
  s()?.filterByBlock(e);
337
339
  });
338
340
  }
339
- h(R, A.handleRequestMedia), h(ee, _), h(H, O), h(V, I), h(z, B), h(L, K), h(te, {
341
+ h(I, A.handleRequestMedia), h(te, _), h(V, O), h(B, F), h(R, z), h(L, G), h(ne, {
340
342
  plan: v,
341
343
  ai: O,
342
344
  comments: {
343
- getBlockCount: (e) => I.commentCountByBlock.value.get(e) ?? 0,
344
- openForBlock: q
345
+ getBlockCount: (e) => F.commentCountByBlock.value.get(e) ?? 0,
346
+ openForBlock: K
345
347
  },
346
348
  savedModules: {
347
349
  openSaveDialog: (e) => {
348
- W.value = e ?? null, U.value = !0;
350
+ U.value = e ?? null, H.value = !0;
349
351
  },
350
352
  openBrowser: () => {
351
- G.value = !0;
353
+ W.value = !0;
352
354
  },
353
- moduleCount: d(() => B.modules.value.length)
355
+ moduleCount: d(() => z.modules.value.length)
354
356
  }
355
357
  });
356
- function ne(e) {
358
+ function re(e) {
357
359
  v.hasFeature("theme_customization") && (w.themeOverrides.value = e);
358
360
  }
359
- function J(e) {
361
+ function ie(e) {
360
362
  b.setUiTheme(e);
361
363
  }
362
- async function ie() {
364
+ async function q() {
363
365
  c.value = !0, u.value = null;
364
366
  try {
365
367
  if (await _.initialize(), f) return;
366
368
  l.value = !0;
367
- let e = await Ce({ authManager: _ });
369
+ let e = await we({ authManager: _ });
368
370
  if (f) return;
369
371
  if (!e.api.ok) throw Error("Health check failed: API is not reachable");
370
372
  if (!e.auth.ok) throw Error(`Health check failed: authentication error${e.auth.error ? ` - ${e.auth.error}` : ""}`);
371
373
  if (e.websocket.ok || M.warn("WebSocket health check failed:", e.websocket.error ?? "unknown error", "-- real-time features will be disabled."), await v.fetchConfig(), f) return;
372
- i.setCustomFontsEnabled(v.hasFeature("custom_fonts")), t.customBlocks?.length && v.hasFeature("custom_blocks") && w.registerCustomBlocks(t.customBlocks), t.theme && v.hasFeature("theme_customization") && (w.themeOverrides.value = t.theme), t.modules !== !1 && v.hasFeature("saved_modules") && B.loadModules(), a("ready");
374
+ i.setCustomFontsEnabled(v.hasFeature("custom_fonts")), t.customBlocks?.length && v.hasFeature("custom_blocks") && w.registerCustomBlocks(t.customBlocks), t.theme && v.hasFeature("theme_customization") && (w.themeOverrides.value = t.theme), t.modules !== !1 && v.hasFeature("saved_modules") && z.loadModules(), a("ready");
373
375
  } catch (e) {
374
376
  if (f) return;
375
377
  let n = e instanceof Error ? e : Error("Initialization failed", { cause: e });
@@ -397,27 +399,27 @@ function Le(e) {
397
399
  featureFlags: k,
398
400
  mediaLib: A,
399
401
  exporter: j,
400
- testEmail: F,
401
- commentsInstance: I,
402
- savedModulesHeadless: B,
403
- scoringInstance: K,
402
+ testEmail: P,
403
+ commentsInstance: F,
404
+ savedModulesHeadless: z,
405
+ scoringInstance: G,
404
406
  panelState: D,
405
407
  snapshotPreview: E,
406
408
  collabWarning: T,
407
- showSaveModuleDialog: U,
408
- showModuleBrowserModal: G,
409
- saveModulePreSelectedBlockId: W,
409
+ showSaveModuleDialog: H,
410
+ showModuleBrowserModal: W,
411
+ saveModulePreSelectedBlockId: U,
410
412
  onSaveHook: p,
411
- initialize: ie,
413
+ initialize: q,
412
414
  destroy: ae,
413
- setThemeOverrides: ne,
414
- setUiTheme: J,
415
- openCommentsForBlock: q
415
+ setThemeOverrides: re,
416
+ setUiTheme: ie,
417
+ openCommentsForBlock: K
416
418
  };
417
419
  }
418
420
  //#endregion
419
421
  //#region src/utils/preRenderCustomBlocks.ts
420
- async function Re(e, t) {
422
+ async function ze(e, t) {
421
423
  let n = async (e) => {
422
424
  if (A(e)) {
423
425
  let n = e;
@@ -436,10 +438,10 @@ async function Re(e, t) {
436
438
  }
437
439
  //#endregion
438
440
  //#region src/cloud/composables/useCloudLifecycle.ts
439
- function ze(e) {
441
+ function Be(e) {
440
442
  let { config: t, editor: n, websocket: r, planConfigInstance: i, snapshotPreview: a, core: o, exporter: s, featureFlags: c, isDestroyed: l } = e;
441
443
  function u() {
442
- return Ee(i.config.value.websocket);
444
+ return De(i.config.value.websocket);
443
445
  }
444
446
  async function d(e) {
445
447
  let i = await n.create(e);
@@ -452,7 +454,7 @@ function ze(e) {
452
454
  async function p() {
453
455
  c.isSaveExporting.value = !0, c.saveStatus.value = "idle";
454
456
  try {
455
- if (await Re(n.content.value, o.registry), l()) throw Error("Component unmounted during save");
457
+ if (await ze(n.content.value, o.registry), l()) throw Error("Component unmounted during save");
456
458
  let e = await n.save();
457
459
  if (l()) throw Error("Component unmounted during save");
458
460
  a.initSnapshotHistory(), a.snapshotHistoryInstance.value?.loadSnapshots();
@@ -479,7 +481,7 @@ function ze(e) {
479
481
  }
480
482
  //#endregion
481
483
  //#region src/cloud/composables/useCloudSaveGate.ts
482
- function Be(e) {
484
+ function Ve(e) {
483
485
  let t = o(!1), n = null, r = d(() => e.planConfig.value?.accessibility?.blockOnError === !0), i = d(() => r.value ? e.issues.value.filter((e) => e.severity === "error") : []), a = d(() => i.value.length > 0);
484
486
  async function s(e) {
485
487
  return a.value ? (n = e, t.value = !0, !1) : (await e(), !0);
@@ -502,7 +504,7 @@ function Be(e) {
502
504
  }
503
505
  //#endregion
504
506
  //#region src/cloud/components/CloudSaveGateModal.vue?vue&type=script&setup=true&lang.ts
505
- var Ve = ["aria-label"], He = { class: "tpl:flex tpl:max-h-[80vh] tpl:w-full tpl:max-w-md tpl:flex-col tpl:gap-4 tpl:rounded-lg tpl:border tpl:border-[var(--tpl-border)] tpl:bg-[var(--tpl-bg-elevated)] tpl:p-5 tpl:shadow-[var(--tpl-shadow-md)]" }, Ue = { class: "tpl:flex tpl:items-center tpl:gap-2" }, We = { class: "tpl:m-0 tpl:text-base tpl:font-semibold tpl:text-[var(--tpl-text)]" }, Ge = { class: "tpl:m-0 tpl:text-sm tpl:text-[var(--tpl-text-muted)]" }, Ke = { class: "tpl:m-0 tpl:flex tpl:max-h-64 tpl:list-none tpl:flex-col tpl:gap-1.5 tpl:overflow-y-auto tpl:rounded-md tpl:border tpl:border-[var(--tpl-border)] tpl:bg-[var(--tpl-bg)] tpl:p-2" }, qe = { class: "tpl:text-xs tpl:text-[var(--tpl-text)]" }, Je = { class: "tpl:font-mono tpl:text-[10px] tpl:text-[var(--tpl-text-dim)]" }, Ye = { class: "tpl:flex tpl:justify-end tpl:gap-2" }, Xe = /* @__PURE__ */ l({
507
+ var He = ["aria-label"], Ue = { class: "tpl:flex tpl:max-h-[80vh] tpl:w-full tpl:max-w-md tpl:flex-col tpl:gap-4 tpl:rounded-lg tpl:border tpl:border-[var(--tpl-border)] tpl:bg-[var(--tpl-bg-elevated)] tpl:p-5 tpl:shadow-[var(--tpl-shadow-md)]" }, We = { class: "tpl:flex tpl:items-center tpl:gap-2" }, Ge = { class: "tpl:m-0 tpl:text-base tpl:font-semibold tpl:text-[var(--tpl-text)]" }, Ke = { class: "tpl:m-0 tpl:text-sm tpl:text-[var(--tpl-text-muted)]" }, qe = { class: "tpl:m-0 tpl:flex tpl:max-h-64 tpl:list-none tpl:flex-col tpl:gap-1.5 tpl:overflow-y-auto tpl:rounded-md tpl:border tpl:border-[var(--tpl-border)] tpl:bg-[var(--tpl-bg)] tpl:p-2" }, Je = { class: "tpl:text-xs tpl:text-[var(--tpl-text)]" }, Ye = { class: "tpl:font-mono tpl:text-[10px] tpl:text-[var(--tpl-text-dim)]" }, Xe = { class: "tpl:flex tpl:justify-end tpl:gap-2" }, Ze = /* @__PURE__ */ l({
506
508
  __name: "CloudSaveGateModal",
507
509
  props: {
508
510
  open: { type: Boolean },
@@ -524,18 +526,18 @@ var Ve = ["aria-label"], He = { class: "tpl:flex tpl:max-h-[80vh] tpl:w-full tpl
524
526
  "aria-label": C(a).saveGate.title,
525
527
  class: "tpl:fixed tpl:inset-0 tpl:z-50 tpl:flex tpl:items-center tpl:justify-center tpl:bg-black/40 tpl:p-6",
526
528
  onClick: o[2] ||= u((e) => i("cancel"), ["self"])
527
- }, [f("div", He, [
528
- f("header", Ue, [E(C(fe), {
529
+ }, [f("div", Ue, [
530
+ f("header", We, [E(C(pe), {
529
531
  size: 18,
530
532
  "stroke-width": 2,
531
533
  class: "tpl:text-[var(--tpl-warning)]"
532
- }), f("h2", We, w(C(a).saveGate.title), 1)]),
533
- f("p", Ge, w(C(a).saveGate.body), 1),
534
- f("ul", Ke, [(e(!0), m(_, null, r(t.issues, (t) => (e(), m("li", {
534
+ }), f("h2", Ge, w(C(a).saveGate.title), 1)]),
535
+ f("p", Ke, w(C(a).saveGate.body), 1),
536
+ f("ul", qe, [(e(!0), m(_, null, r(t.issues, (t) => (e(), m("li", {
535
537
  key: `${t.ruleId}-${t.blockId ?? "template"}`,
536
538
  class: "tpl:flex tpl:flex-col tpl:gap-0.5 tpl:rounded tpl:px-2 tpl:py-1.5"
537
- }, [f("span", qe, w(t.message), 1), f("span", Je, w(t.ruleId), 1)]))), 128))]),
538
- f("footer", Ye, [f("button", {
539
+ }, [f("span", Je, w(t.message), 1), f("span", Ye, w(t.ruleId), 1)]))), 128))]),
540
+ f("footer", Xe, [f("button", {
539
541
  type: "button",
540
542
  class: "tpl:rounded-md tpl:border tpl:border-[var(--tpl-border)] tpl:bg-[var(--tpl-bg)] tpl:px-3 tpl:py-1.5 tpl:text-xs tpl:font-medium tpl:text-[var(--tpl-text)]",
541
543
  onClick: o[0] ||= (e) => i("cancel")
@@ -544,11 +546,11 @@ var Ve = ["aria-label"], He = { class: "tpl:flex tpl:max-h-[80vh] tpl:w-full tpl
544
546
  class: "tpl:rounded-md tpl:bg-[var(--tpl-danger)] tpl:px-3 tpl:py-1.5 tpl:text-xs tpl:font-medium tpl:text-white",
545
547
  onClick: o[1] ||= (e) => i("confirm")
546
548
  }, w(C(a).saveGate.confirm), 1)])
547
- ])], 8, Ve)) : v("", !0)]),
549
+ ])], 8, He)) : v("", !0)]),
548
550
  _: 1
549
551
  }));
550
552
  }
551
- }), Ze = {
553
+ }), Qe = {
552
554
  class: "tpl-header tpl:absolute tpl:top-0 tpl:right-0 tpl:left-0 tpl:z-50 tpl:grid tpl:h-14 tpl:grid-cols-[1fr_auto_1fr] tpl:items-center tpl:px-4",
553
555
  style: {
554
556
  "background-color": "color-mix(in srgb, var(--tpl-bg) 80%, transparent)",
@@ -557,24 +559,24 @@ var Ve = ["aria-label"], He = { class: "tpl:flex tpl:max-h-[80vh] tpl:w-full tpl
557
559
  "box-shadow": "var(--tpl-shadow-md)",
558
560
  "border-bottom": "1px solid var(--tpl-border)"
559
561
  }
560
- }, Qe = { class: "tpl-header-left tpl:flex tpl:min-w-[200px] tpl:items-center tpl:gap-3" }, $e = {
562
+ }, $e = { class: "tpl-header-left tpl:flex tpl:min-w-[200px] tpl:items-center tpl:gap-3" }, et = {
561
563
  key: 0,
562
564
  class: "tpl:text-xs tpl:opacity-60 tpl:text-[var(--tpl-text-muted)]"
563
- }, et = { class: "tpl-header-center tpl:flex tpl:items-center tpl:justify-center tpl:gap-10" }, tt = { class: "tpl-header-right tpl:flex tpl:min-w-[200px] tpl:items-center tpl:justify-end tpl:gap-3" }, nt = ["data-tooltip"], rt = {
565
+ }, tt = { class: "tpl-header-center tpl:flex tpl:items-center tpl:justify-center tpl:gap-10" }, nt = { class: "tpl-header-right tpl:flex tpl:min-w-[200px] tpl:items-center tpl:justify-end tpl:gap-3" }, rt = ["data-tooltip"], it = {
564
566
  key: 1,
565
567
  "aria-live": "polite",
566
568
  class: "tpl-status tpl:flex tpl:items-center tpl:gap-1.5 tpl:text-xs tpl:text-[var(--tpl-success)]"
567
- }, it = {
569
+ }, at = {
568
570
  key: 2,
569
571
  "aria-live": "polite",
570
572
  class: "tpl-status tpl:flex tpl:items-center tpl:gap-1.5 tpl:text-xs tpl:text-[var(--tpl-text-muted)]"
571
- }, at = ["aria-label", "aria-expanded"], ot = {
573
+ }, ot = ["aria-label", "aria-expanded"], st = {
572
574
  key: 0,
573
575
  class: "tpl:inline-flex tpl:size-4.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)]"
574
- }, st = ["aria-expanded"], ct = {
576
+ }, ct = ["aria-expanded"], lt = {
575
577
  key: 0,
576
578
  class: "tpl:absolute tpl:right-0 tpl:top-full tpl:z-50 tpl:mt-1 tpl:origin-top-right"
577
- }, lt = ["disabled"], ut = ["disabled"], dt = /* @__PURE__ */ l({
579
+ }, ut = ["disabled"], dt = ["disabled"], ft = /* @__PURE__ */ l({
578
580
  __name: "CloudHeader",
579
581
  props: {
580
582
  editor: {},
@@ -592,22 +594,22 @@ var Ve = ["aria-label"], He = { class: "tpl:flex tpl:max-h-[80vh] tpl:w-full tpl
592
594
  },
593
595
  emits: ["save"],
594
596
  setup(t) {
595
- let n = D(() => import("./CollaboratorBar-Bc6q0gB9.js")), r = D(() => import("./SnapshotHistory-CIo2Jaw-.js")), i = D(() => import("./AiFeatureMenu-Co14YVJt.js")), { t: a, format: o } = Q();
596
- return (l, d) => (e(), m("header", Ze, [
597
- f("div", Qe, [t.featureFlags.templateLimit.value === null ? v("", !0) : (e(), m("span", $e, w(C(o)(C(a).header.templatesUsed, {
597
+ let n = D(() => import("./CollaboratorBar-Bn2JDu6l.js")), r = D(() => import("./SnapshotHistory-m_nGAHlb.js")), i = D(() => import("./AiFeatureMenu-D2Xn0jFx.js")), { t: a, format: o } = Q();
598
+ return (l, d) => (e(), m("header", Qe, [
599
+ f("div", $e, [t.featureFlags.templateLimit.value === null ? v("", !0) : (e(), m("span", et, w(C(o)(C(a).header.templatesUsed, {
598
600
  used: t.featureFlags.templateCount.value,
599
601
  max: t.featureFlags.templateLimit.value
600
602
  })), 1))]),
601
- f("div", et, [
602
- E(q, {
603
+ f("div", tt, [
604
+ E(K, {
603
605
  viewport: t.editor.state.viewport,
604
606
  onChange: t.editor.setViewport
605
607
  }, null, 8, ["viewport", "onChange"]),
606
- E(oe, {
608
+ E(ce, {
607
609
  "dark-mode": t.editor.state.darkMode,
608
610
  onChange: t.editor.setDarkMode
609
611
  }, null, 8, ["dark-mode", "onChange"]),
610
- E(J, {
612
+ E(q, {
611
613
  "preview-mode": t.editor.state.previewMode,
612
614
  onChange: t.editor.setPreviewMode
613
615
  }, null, 8, ["preview-mode", "onChange"]),
@@ -631,19 +633,19 @@ var Ve = ["aria-label"], He = { class: "tpl:flex tpl:max-h-[80vh] tpl:w-full tpl
631
633
  "onNavigate"
632
634
  ])) : v("", !0)
633
635
  ]),
634
- f("div", tt, [
636
+ f("div", nt, [
635
637
  t.featureFlags.saveStatus.value === "error" ? (e(), m("div", {
636
638
  key: 0,
637
639
  "aria-live": "assertive",
638
640
  class: "tpl-tooltip tpl-status tpl:flex tpl:items-center tpl:gap-1.5 tpl:text-xs tpl:text-[var(--tpl-danger)]",
639
641
  "data-tooltip": t.featureFlags.saveErrorMessage.value
640
- }, [E(C(K), {
642
+ }, [E(C(G), {
641
643
  size: 12,
642
644
  "stroke-width": 2.5
643
- }), s(" " + w(C(a).header.saveFailed), 1)], 8, nt)) : t.featureFlags.saveStatus.value === "saved" ? (e(), m("div", rt, [E(C(G), {
645
+ }), s(" " + w(C(a).header.saveFailed), 1)], 8, rt)) : t.featureFlags.saveStatus.value === "saved" ? (e(), m("div", it, [E(C(W), {
644
646
  size: 12,
645
647
  "stroke-width": 2.5
646
- }), s(" " + w(C(a).header.saved), 1)])) : t.editor.state.isDirty ? (e(), m("div", it, [d[4] ||= f("span", { class: "tpl-pulse tpl:size-1.5 tpl:rounded-full tpl:bg-[var(--tpl-primary)]" }, null, -1), s(" " + w(C(a).header.unsaved), 1)])) : v("", !0),
648
+ }), s(" " + w(C(a).header.saved), 1)])) : t.editor.state.isDirty ? (e(), m("div", at, [d[4] ||= f("span", { class: "tpl-pulse tpl:size-1.5 tpl:rounded-full tpl:bg-[var(--tpl-primary)]" }, null, -1), s(" " + w(C(a).header.unsaved), 1)])) : v("", !0),
647
649
  t.commentsInstance.isEnabled.value && t.featureFlags.hasTemplateSaved.value ? (e(), m("button", {
648
650
  key: 3,
649
651
  "aria-label": t.commentsInstance.unresolvedCount.value > 0 ? `${C(a).comments.button} (${t.commentsInstance.unresolvedCount.value})` : C(a).comments.button,
@@ -656,13 +658,13 @@ var Ve = ["aria-label"], He = { class: "tpl:flex tpl:max-h-[80vh] tpl:w-full tpl
656
658
  }),
657
659
  onClick: d[0] ||= (e) => t.panelState.commentsOpen.value = !t.panelState.commentsOpen.value
658
660
  }, [
659
- E(C(X), {
661
+ E(C(Y), {
660
662
  size: 16,
661
663
  "stroke-width": 2
662
664
  }),
663
665
  s(" " + w(C(a).comments.button) + " ", 1),
664
- t.commentsInstance.unresolvedCount.value > 0 && !t.panelState.commentsOpen.value ? (e(), m("span", ot, w(t.commentsInstance.unresolvedCount.value), 1)) : v("", !0)
665
- ], 14, at)) : v("", !0),
666
+ t.commentsInstance.unresolvedCount.value > 0 && !t.panelState.commentsOpen.value ? (e(), m("span", st, w(t.commentsInstance.unresolvedCount.value), 1)) : v("", !0)
667
+ ], 14, ot)) : v("", !0),
666
668
  t.featureFlags.canUseAiGeneration.value && t.featureFlags.hasTemplateSaved.value ? (e(), m("div", {
667
669
  key: 4,
668
670
  ref: (e) => t.panelState.aiMenuRef.value = e,
@@ -671,11 +673,11 @@ var Ve = ["aria-label"], He = { class: "tpl:flex tpl:max-h-[80vh] tpl:w-full tpl
671
673
  "aria-expanded": t.panelState.aiMenuOpen.value,
672
674
  class: c(["tpl-ai-btn tpl:inline-flex tpl:items-center tpl:gap-1.5 tpl:rounded-[var(--tpl-radius-sm)] tpl:border-none tpl:px-4 tpl:py-2 tpl:text-sm tpl:font-semibold tpl:whitespace-nowrap tpl:transition-all tpl:duration-200", t.panelState.aiButtonActive.value ? "tpl-ai-btn--active" : "tpl-ai-btn--idle"]),
673
675
  onClick: d[1] ||= u((...e) => t.panelState.toggleAiMenu && t.panelState.toggleAiMenu(...e), ["stop"])
674
- }, [E(C(de), {
676
+ }, [E(C(Z), {
675
677
  size: 16,
676
678
  "stroke-width": 2,
677
679
  class: "tpl-ai-btn-icon"
678
- }), s(" " + w(C(a).aiChat.button), 1)], 10, st), E(T, {
680
+ }), s(" " + w(C(a).aiChat.button), 1)], 10, ct), E(T, {
679
681
  "enter-active-class": "tpl:transition-all tpl:duration-150 tpl:ease-out",
680
682
  "enter-from-class": "tpl:scale-95 tpl:opacity-0",
681
683
  "enter-to-class": "tpl:scale-100 tpl:opacity-100",
@@ -683,7 +685,7 @@ var Ve = ["aria-label"], He = { class: "tpl:flex tpl:max-h-[80vh] tpl:w-full tpl
683
685
  "leave-from-class": "tpl:scale-100 tpl:opacity-100",
684
686
  "leave-to-class": "tpl:scale-95 tpl:opacity-0"
685
687
  }, {
686
- default: O(() => [t.panelState.aiMenuOpen.value ? (e(), m("div", ct, [E(C(i), {
688
+ default: O(() => [t.panelState.aiMenuOpen.value ? (e(), m("div", lt, [E(C(i), {
687
689
  "active-feature": t.panelState.activeAiFeature.value,
688
690
  onSelect: t.panelState.handleAiFeatureSelect
689
691
  }, null, 8, ["active-feature", "onSelect"])])) : v("", !0)]),
@@ -699,16 +701,16 @@ var Ve = ["aria-label"], He = { class: "tpl:flex tpl:max-h-[80vh] tpl:w-full tpl
699
701
  },
700
702
  disabled: t.testEmail.isSending.value || !t.featureFlags.hasTemplateSaved.value,
701
703
  onClick: d[2] ||= (e) => t.panelState.testEmailModalOpen.value = !0
702
- }, [t.testEmail.isSending.value ? (e(), x(C(Y), {
704
+ }, [t.testEmail.isSending.value ? (e(), x(C(J), {
703
705
  key: 1,
704
706
  class: "tpl-spinner",
705
707
  size: 16,
706
708
  "stroke-width": 2
707
- })) : (e(), x(C(Z), {
709
+ })) : (e(), x(C(X), {
708
710
  key: 0,
709
711
  size: 16,
710
712
  "stroke-width": 2
711
- })), s(" " + w(C(a).testEmail.button), 1)], 10, lt)) : v("", !0),
713
+ })), s(" " + w(C(a).testEmail.button), 1)], 10, ut)) : v("", !0),
712
714
  f("button", {
713
715
  class: c(C($)),
714
716
  style: {
@@ -718,20 +720,20 @@ var Ve = ["aria-label"], He = { class: "tpl:flex tpl:max-h-[80vh] tpl:w-full tpl
718
720
  },
719
721
  disabled: t.isSaveDisabled,
720
722
  onClick: d[3] ||= (e) => l.$emit("save")
721
- }, [t.isSaving ? (e(), x(C(Y), {
723
+ }, [t.isSaving ? (e(), x(C(J), {
722
724
  key: 1,
723
725
  class: "tpl-spinner",
724
726
  size: 16,
725
727
  "stroke-width": 2
726
- })) : (e(), x(C(je), {
728
+ })) : (e(), x(C(Me), {
727
729
  key: 0,
728
730
  size: 16,
729
731
  "stroke-width": 2
730
- })), s(" " + w(t.isSaving ? C(a).header.saving : C(a).header.save), 1)], 10, ut)
732
+ })), s(" " + w(t.isSaving ? C(a).header.saving : C(a).header.save), 1)], 10, dt)
731
733
  ])
732
734
  ]));
733
735
  }
734
- }), ft = /* @__PURE__ */ l({
736
+ }), pt = /* @__PURE__ */ l({
735
737
  __name: "CloudPanels",
736
738
  props: {
737
739
  config: {},
@@ -754,7 +756,7 @@ var Ve = ["aria-label"], He = { class: "tpl:flex tpl:max-h-[80vh] tpl:w-full tpl
754
756
  "module-insert"
755
757
  ],
756
758
  setup(t, { expose: n, emit: r }) {
757
- let i = D(() => import("./AiChatSidebar-BUKj9n02.js")), a = D(() => import("./CommentsSidebar-DiH4R4F0.js")), s = D(() => import("./DesignReferenceSidebar-BP32MgpS.js")), c = D(() => import("./TemplateScoringPanel-seBvvn8O.js")), l = D(() => import("./TestEmailModal-BuCuWp3N.js")), u = D(() => import("./SaveModuleDialog-DWidA0c9.js")), d = D(() => import("./ModuleBrowserModal-CWegFoOA.js")), f = D(async () => {
759
+ let i = D(() => import("./AiChatSidebar-Dz5bH1z3.js")), a = D(() => import("./CommentsSidebar-BAG6rdVC.js")), s = D(() => import("./DesignReferenceSidebar-I9LWjvrj.js")), c = D(() => import("./TemplateScoringPanel-BOQh9neV.js")), l = D(() => import("./TestEmailModal-DOcwoKkc.js")), u = D(() => import("./SaveModuleDialog-D634e99d.js")), d = D(() => import("./ModuleBrowserModal-DodRped1.js")), f = D(async () => {
758
760
  try {
759
761
  return (await import("@templatical/media-library")).MediaLibraryModal;
760
762
  } catch {
@@ -836,23 +838,23 @@ var Ve = ["aria-label"], He = { class: "tpl:flex tpl:max-h-[80vh] tpl:w-full tpl
836
838
  ])
837
839
  ], 64));
838
840
  }
839
- }), pt = {
841
+ }), mt = {
840
842
  key: 0,
841
843
  class: "tpl-loading tpl:absolute tpl:inset-0 tpl:z-overlay tpl:flex tpl:flex-col tpl:bg-[var(--tpl-bg)]"
842
- }, mt = { class: "tpl:flex tpl:flex-1 tpl:overflow-hidden" }, ht = { class: "tpl:flex tpl:w-12 tpl:shrink-0 tpl:flex-col tpl:items-center tpl:gap-4 tpl:py-5 tpl:border-r tpl:border-[var(--tpl-border)]" }, gt = /* @__PURE__ */ l({
844
+ }, ht = { class: "tpl:flex tpl:flex-1 tpl:overflow-hidden" }, gt = { class: "tpl:flex tpl:w-12 tpl:shrink-0 tpl:flex-col tpl:items-center tpl:gap-4 tpl:py-5 tpl:border-r tpl:border-[var(--tpl-border)]" }, _t = /* @__PURE__ */ l({
843
845
  __name: "CloudLoadingOverlay",
844
846
  props: { visible: { type: Boolean } },
845
847
  setup(t) {
846
- return (n, i) => t.visible ? (e(), m("div", pt, [i[1] ||= p("<div class=\"tpl:flex tpl:h-14 tpl:shrink-0 tpl:items-center tpl:justify-between tpl:px-4 tpl:border-b tpl:border-[var(--tpl-border)]\"><div class=\"tpl-shimmer tpl:h-5 tpl:w-28 tpl:rounded-[var(--tpl-radius-sm)]\"></div><div class=\"tpl:flex tpl:gap-3\"><div class=\"tpl-shimmer tpl:h-8 tpl:w-20 tpl:rounded-[var(--tpl-radius-sm)]\"></div><div class=\"tpl-shimmer tpl:h-8 tpl:w-20 tpl:rounded-[var(--tpl-radius-sm)]\"></div></div></div>", 1), f("div", mt, [f("div", ht, [(e(), m(_, null, r(5, (e) => f("div", {
848
+ return (n, i) => t.visible ? (e(), m("div", mt, [i[1] ||= p("<div class=\"tpl:flex tpl:h-14 tpl:shrink-0 tpl:items-center tpl:justify-between tpl:px-4 tpl:border-b tpl:border-[var(--tpl-border)]\"><div class=\"tpl-shimmer tpl:h-5 tpl:w-28 tpl:rounded-[var(--tpl-radius-sm)]\"></div><div class=\"tpl:flex tpl:gap-3\"><div class=\"tpl-shimmer tpl:h-8 tpl:w-20 tpl:rounded-[var(--tpl-radius-sm)]\"></div><div class=\"tpl-shimmer tpl:h-8 tpl:w-20 tpl:rounded-[var(--tpl-radius-sm)]\"></div></div></div>", 1), f("div", ht, [f("div", gt, [(e(), m(_, null, r(5, (e) => f("div", {
847
849
  key: e,
848
850
  class: "tpl-shimmer tpl:size-7 tpl:rounded-[var(--tpl-radius-sm)]"
849
851
  })), 64))]), i[0] ||= p("<div class=\"tpl:flex tpl:flex-1 tpl:items-start tpl:justify-center tpl:overflow-auto tpl:p-8 tpl:bg-[var(--tpl-canvas-bg)]\"><div class=\"tpl:w-full tpl:max-w-[600px] tpl:rounded-[var(--tpl-radius)] tpl:p-6 tpl:bg-[var(--tpl-bg)] tpl:shadow-[var(--tpl-shadow-sm)]\"><div class=\"tpl:space-y-2 tpl:py-4\"><div class=\"tpl-shimmer tpl:h-3 tpl:w-3/4 tpl:rounded\"></div><div class=\"tpl-shimmer tpl:h-3 tpl:w-full tpl:rounded\"></div><div class=\"tpl-shimmer tpl:h-3 tpl:w-5/6 tpl:rounded\"></div></div><div class=\"tpl:py-4\"><div class=\"tpl-shimmer tpl:h-44 tpl:w-full tpl:rounded-[var(--tpl-radius-sm)]\"></div></div><div class=\"tpl:space-y-2 tpl:py-4\"><div class=\"tpl-shimmer tpl:h-3 tpl:w-full tpl:rounded\"></div><div class=\"tpl-shimmer tpl:h-3 tpl:w-2/3 tpl:rounded\"></div></div><div class=\"tpl:flex tpl:justify-center tpl:py-4\"><div class=\"tpl-shimmer tpl:h-10 tpl:w-36 tpl:rounded-[var(--tpl-radius-sm)]\"></div></div><div class=\"tpl:space-y-2 tpl:py-4\"><div class=\"tpl-shimmer tpl:mx-auto tpl:h-2.5 tpl:w-1/2 tpl:rounded\"></div><div class=\"tpl-shimmer tpl:mx-auto tpl:h-2.5 tpl:w-1/3 tpl:rounded\"></div></div></div></div><div class=\"tpl:flex tpl:w-[320px] tpl:shrink-0 tpl:flex-col tpl:gap-4 tpl:p-4 tpl:border-l tpl:border-[var(--tpl-border)]\"><div class=\"tpl-shimmer tpl:h-8 tpl:rounded-[var(--tpl-radius-sm)]\"></div><div class=\"tpl-shimmer tpl:h-32 tpl:rounded-[var(--tpl-radius)]\"></div><div class=\"tpl-shimmer tpl:h-32 tpl:rounded-[var(--tpl-radius)]\"></div></div>", 2)])])) : v("", !0);
850
852
  }
851
- }), _t = {
853
+ }), vt = {
852
854
  key: 0,
853
855
  role: "alert",
854
856
  class: "tpl-error tpl:absolute tpl:inset-0 tpl:z-overlay tpl:flex tpl:flex-col tpl:items-center tpl:justify-center tpl:gap-6 tpl:px-8 tpl:bg-[var(--tpl-bg)]"
855
- }, vt = { class: "tpl:flex tpl:size-16 tpl:items-center tpl:justify-center tpl:rounded-full tpl:bg-[var(--tpl-danger-light)]" }, yt = { class: "tpl:flex tpl:flex-col tpl:items-center tpl:gap-2 tpl:text-center" }, bt = { class: "tpl:text-lg tpl:font-semibold tpl:text-[var(--tpl-text)]" }, xt = { class: "tpl:max-w-md tpl:text-sm tpl:text-[var(--tpl-text-muted)]" }, St = /* @__PURE__ */ l({
857
+ }, yt = { class: "tpl:flex tpl:size-16 tpl:items-center tpl:justify-center tpl:rounded-full tpl:bg-[var(--tpl-danger-light)]" }, bt = { class: "tpl:flex tpl:flex-col tpl:items-center tpl:gap-2 tpl:text-center" }, xt = { class: "tpl:text-lg tpl:font-semibold tpl:text-[var(--tpl-text)]" }, St = { class: "tpl:max-w-md tpl:text-sm tpl:text-[var(--tpl-text-muted)]" }, Ct = /* @__PURE__ */ l({
856
858
  __name: "CloudErrorOverlay",
857
859
  props: {
858
860
  error: {},
@@ -867,13 +869,13 @@ var Ve = ["aria-label"], He = { class: "tpl:flex tpl:max-h-[80vh] tpl:w-full tpl
867
869
  function o(e) {
868
870
  return "isNotFound" in e && !!e.isNotFound;
869
871
  }
870
- return (n, s) => t.visible && t.error ? (e(), m("div", _t, [
871
- f("div", vt, [E(C(K), {
872
+ return (n, s) => t.visible && t.error ? (e(), m("div", vt, [
873
+ f("div", yt, [E(C(G), {
872
874
  size: 32,
873
875
  "stroke-width": 1.5,
874
876
  class: "tpl:text-[var(--tpl-danger)]"
875
877
  })]),
876
- f("div", yt, [f("h2", bt, w(C(i).error.title), 1), f("p", xt, w(a(t.error)), 1)]),
878
+ f("div", bt, [f("h2", xt, w(C(i).error.title), 1), f("p", St, w(a(t.error)), 1)]),
877
879
  o(t.error) ? v("", !0) : (e(), m("button", {
878
880
  key: 0,
879
881
  class: "tpl-btn tpl-btn-primary tpl:inline-flex tpl:items-center tpl:gap-2 tpl:rounded-md tpl:px-4 tpl:py-2.5 tpl:text-sm tpl:font-medium tpl:shadow-xs tpl:transition-all tpl:duration-150 tpl:hover:opacity-90 tpl:bg-[var(--tpl-primary)] tpl:text-[var(--tpl-bg)]",
@@ -881,20 +883,20 @@ var Ve = ["aria-label"], He = { class: "tpl:flex tpl:max-h-[80vh] tpl:w-full tpl
881
883
  }, w(C(i).error.retry), 1))
882
884
  ])) : v("", !0);
883
885
  }
884
- }), Ct = {
886
+ }), wt = {
885
887
  key: 0,
886
888
  class: "tpl-preview-banner tpl:absolute tpl:top-14 tpl:right-0 tpl:left-0 tpl:z-40 tpl:flex tpl:items-center tpl:justify-center tpl:gap-4 tpl:px-4 tpl:py-3 tpl:bg-[var(--tpl-primary-light)] tpl:border-b tpl:border-[var(--tpl-primary)]"
887
- }, wt = { class: "tpl:flex tpl:items-center tpl:gap-2 tpl:text-sm tpl:text-[var(--tpl-text)]" }, Tt = { class: "tpl:flex tpl:items-center tpl:gap-2" }, Et = /* @__PURE__ */ l({
889
+ }, Tt = { class: "tpl:flex tpl:items-center tpl:gap-2 tpl:text-sm tpl:text-[var(--tpl-text)]" }, Et = { class: "tpl:flex tpl:items-center tpl:gap-2" }, Dt = /* @__PURE__ */ l({
888
890
  __name: "SnapshotPreviewBanner",
889
891
  props: { visible: { type: Boolean } },
890
892
  emits: ["cancel", "confirm"],
891
893
  setup(t, { emit: n }) {
892
894
  let r = n, { t: i } = Q();
893
- return (n, a) => t.visible ? (e(), m("div", Ct, [f("div", wt, [E(C(ue), {
895
+ return (n, a) => t.visible ? (e(), m("div", wt, [f("div", Tt, [E(C(fe), {
894
896
  size: 18,
895
897
  "stroke-width": 2,
896
898
  class: "tpl:text-[var(--tpl-primary)]"
897
- }), f("span", null, w(C(i).snapshotPreview.message), 1)]), f("div", Tt, [f("button", {
899
+ }), f("span", null, w(C(i).snapshotPreview.message), 1)]), f("div", Et, [f("button", {
898
900
  class: "tpl:rounded-md tpl:px-3 tpl:py-1.5 tpl:text-sm tpl:font-medium tpl:transition-all tpl:duration-150 tpl:text-[var(--tpl-text-muted)] tpl:border tpl:border-[var(--tpl-border)]",
899
901
  style: { "background-color": "transparent" },
900
902
  onClick: a[0] ||= (e) => r("cancel")
@@ -903,7 +905,7 @@ var Ve = ["aria-label"], He = { class: "tpl:flex tpl:max-h-[80vh] tpl:w-full tpl
903
905
  onClick: a[1] ||= (e) => r("confirm")
904
906
  }, w(C(i).snapshotPreview.restore), 1)])])) : v("", !0);
905
907
  }
906
- }), Dt = {
908
+ }), Ot = {
907
909
  key: 0,
908
910
  role: "status",
909
911
  "aria-live": "polite",
@@ -913,14 +915,14 @@ var Ve = ["aria-label"], He = { class: "tpl:flex tpl:max-h-[80vh] tpl:w-full tpl
913
915
  color: "var(--tpl-text)",
914
916
  border: "1px solid var(--tpl-warning)"
915
917
  }
916
- }, Ot = /* @__PURE__ */ l({
918
+ }, kt = /* @__PURE__ */ l({
917
919
  __name: "CollabUndoToast",
918
920
  props: { visible: { type: Boolean } },
919
921
  setup(t) {
920
- let { t: n } = U();
921
- return (r, i) => t.visible ? (e(), m("div", Dt, w(C(n).history.collabWarning), 1)) : v("", !0);
922
+ let { t: n } = H();
923
+ return (r, i) => t.visible ? (e(), m("div", Ot, w(C(n).history.collabWarning), 1)) : v("", !0);
922
924
  }
923
- }), kt = ["data-tpl-theme"], At = { class: "tpl:sticky tpl:top-0 tpl:z-40 tpl:h-0" }, jt = { class: "tpl-main tpl:flex tpl:justify-center tpl:p-8" }, Mt = ["aria-label"], Nt = /* @__PURE__ */ pe(/* @__PURE__ */ l({
925
+ }), At = ["data-tpl-theme"], jt = { class: "tpl:sticky tpl:top-0 tpl:z-40 tpl:h-0" }, Mt = { class: "tpl-main tpl:flex tpl:justify-center tpl:p-8" }, Nt = ["aria-label"], Pt = /* @__PURE__ */ me(/* @__PURE__ */ l({
924
926
  __name: "CloudEditor",
925
927
  props: {
926
928
  config: {},
@@ -932,8 +934,8 @@ var Ve = ["aria-label"], He = { class: "tpl:flex tpl:max-h-[80vh] tpl:w-full tpl
932
934
  emits: ["ready"],
933
935
  setup(n, { expose: r, emit: a }) {
934
936
  let l = n;
935
- h(B, l.cloudTranslations);
936
- let u = a, d = o(null), p = o(null), _ = Le({
937
+ h(z, l.cloudTranslations);
938
+ let u = a, d = o(null), p = o(null), _ = Re({
937
939
  config: l.config,
938
940
  translations: l.translations,
939
941
  fontsManager: l.fontsManager,
@@ -941,31 +943,36 @@ var Ve = ["aria-label"], He = { class: "tpl:flex tpl:max-h-[80vh] tpl:w-full tpl
941
943
  getCommentsSidebar: () => d.value ? { filterByBlock: d.value.filterCommentsByBlock } : null,
942
944
  editorRoot: l.shadowRoot,
943
945
  containerEl: p
944
- }), { isInitializing: S, isAuthReady: D, initError: k, planConfigInstance: A, websocket: M, collaboration: N, isCollaborationEnabled: P, editor: F, core: I, featureFlags: L, mediaLib: R, exporter: z, testEmail: V, commentsInstance: ee, savedModulesHeadless: te, panelState: H, snapshotPreview: U, collabWarning: W, showSaveModuleDialog: G, showModuleBrowserModal: K, saveModulePreSelectedBlockId: q, setThemeOverrides: J, setUiTheme: re } = _;
945
- async function oe(e) {
946
+ }), { isInitializing: S, isAuthReady: D, initError: k, planConfigInstance: A, websocket: M, collaboration: N, isCollaborationEnabled: ee, editor: P, core: F, featureFlags: I, mediaLib: L, exporter: R, testEmail: B, commentsInstance: te, savedModulesHeadless: ne, panelState: V, snapshotPreview: H, collabWarning: U, showSaveModuleDialog: W, showModuleBrowserModal: G, saveModulePreSelectedBlockId: K, setThemeOverrides: q, setUiTheme: ce } = _;
947
+ async function de(e) {
948
+ try {
949
+ await B.sendTestEmail(e), V.testEmailModalOpen.value = !1;
950
+ } catch {}
951
+ }
952
+ async function fe() {
946
953
  try {
947
- await V.sendTestEmail(e), H.testEmailModalOpen.value = !1;
954
+ await H.confirmRestoreSnapshot();
948
955
  } catch {}
949
956
  }
950
- function ue(e, t) {
957
+ function J(e, t) {
951
958
  for (let n = 0; n < e.content.length; n++) {
952
959
  let r = j(e.content[n]), i = t === void 0 ? void 0 : t + n;
953
- F.addBlock(r, void 0, void 0, i);
960
+ P.addBlock(r, void 0, void 0, i);
954
961
  }
955
- K.value = !1;
962
+ G.value = !1;
956
963
  }
957
- let Y = ze({
964
+ let Y = Be({
958
965
  config: l.config,
959
- editor: F,
966
+ editor: P,
960
967
  websocket: M,
961
968
  planConfigInstance: A,
962
- snapshotPreview: U,
963
- core: I,
964
- exporter: z,
965
- featureFlags: L,
969
+ snapshotPreview: H,
970
+ core: F,
971
+ exporter: R,
972
+ featureFlags: I,
966
973
  isDestroyed: _.isDestroyed
967
- }), X = Be({
968
- issues: I.templateLint ? I.templateLint.issues : o([]),
974
+ }), X = Ve({
975
+ issues: F.templateLint ? F.templateLint.issues : o([]),
969
976
  planConfig: A.config
970
977
  });
971
978
  async function Z() {
@@ -976,21 +983,22 @@ var Ve = ["aria-label"], He = { class: "tpl:flex tpl:max-h-[80vh] tpl:w-full tpl
976
983
  }), g(() => {
977
984
  _.destroy();
978
985
  }), r({
979
- getContent: () => F.content.value,
980
- setContent: (e) => F.setContent(e),
981
- setTheme: re,
982
- setThemeOverrides: J,
986
+ getContent: () => P.content.value,
987
+ setContent: (e) => P.setContent(e),
988
+ setTheme: ce,
989
+ setThemeOverrides: q,
983
990
  create: Y.createTemplate,
984
991
  load: Y.loadTemplate,
985
992
  save: Y.saveTemplate,
986
- sendTestEmail: V.sendTestEmail
993
+ sendTestEmail: B.sendTestEmail
987
994
  }), (r, i) => (e(), m("div", {
988
995
  ref_key: "rootEl",
989
996
  ref: p,
990
- class: c(["tpl tpl:relative tpl:h-full tpl:overflow-hidden", { "tpl:dark": C(F).state.darkMode }]),
991
- "data-tpl-theme": C(I).resolvedTheme.value,
992
- style: b(C(I).themeStyles.value)
997
+ class: c(["tpl tpl:relative tpl:h-full tpl:overflow-hidden", { "tpl:dark": C(P).state.darkMode }]),
998
+ "data-tpl-theme": C(F).resolvedTheme.value,
999
+ style: b(C(F).themeStyles.value)
993
1000
  }, [
1001
+ E(re),
994
1002
  E(T, {
995
1003
  "enter-active-class": "tpl:transition-opacity tpl:duration-200",
996
1004
  "enter-from-class": "tpl:opacity-100",
@@ -999,7 +1007,7 @@ var Ve = ["aria-label"], He = { class: "tpl:flex tpl:max-h-[80vh] tpl:w-full tpl
999
1007
  "leave-from-class": "tpl:opacity-100",
1000
1008
  "leave-to-class": "tpl:opacity-0"
1001
1009
  }, {
1002
- default: O(() => [E(gt, { visible: C(S) || C(F).state.isLoading }, null, 8, ["visible"])]),
1010
+ default: O(() => [E(_t, { visible: C(S) || C(P).state.isLoading }, null, 8, ["visible"])]),
1003
1011
  _: 1
1004
1012
  }),
1005
1013
  E(T, {
@@ -1010,7 +1018,7 @@ var Ve = ["aria-label"], He = { class: "tpl:flex tpl:max-h-[80vh] tpl:w-full tpl
1010
1018
  "leave-from-class": "tpl:opacity-100",
1011
1019
  "leave-to-class": "tpl:opacity-0"
1012
1020
  }, {
1013
- default: O(() => [E(St, {
1021
+ default: O(() => [E(Ct, {
1014
1022
  error: C(k),
1015
1023
  visible: !!C(k) && !C(S),
1016
1024
  onRetry: C(_).initialize
@@ -1021,19 +1029,19 @@ var Ve = ["aria-label"], He = { class: "tpl:flex tpl:max-h-[80vh] tpl:w-full tpl
1021
1029
  ])]),
1022
1030
  _: 1
1023
1031
  }),
1024
- E(dt, {
1025
- editor: C(F),
1026
- core: C(I),
1027
- "feature-flags": C(L),
1028
- "panel-state": C(H),
1029
- "snapshot-preview": C(U),
1030
- "comments-instance": C(ee),
1031
- "test-email": C(V),
1032
+ E(ft, {
1033
+ editor: C(P),
1034
+ core: C(F),
1035
+ "feature-flags": C(I),
1036
+ "panel-state": C(V),
1037
+ "snapshot-preview": C(H),
1038
+ "comments-instance": C(te),
1039
+ "test-email": C(B),
1032
1040
  websocket: C(M),
1033
1041
  collaboration: C(N),
1034
- "is-collaboration-enabled": C(P),
1035
- "is-saving": C(F).state.isSaving || C(L).isSaveExporting.value,
1036
- "is-save-disabled": C(F).state.isSaving || C(L).isSaveExporting.value || !C(F).state.isDirty,
1042
+ "is-collaboration-enabled": C(ee),
1043
+ "is-saving": C(P).state.isSaving || C(I).isSaveExporting.value,
1044
+ "is-save-disabled": C(P).state.isSaving || C(I).isSaveExporting.value || !C(P).state.isDirty,
1037
1045
  onSave: Z
1038
1046
  }, null, 8, [
1039
1047
  "editor",
@@ -1049,7 +1057,7 @@ var Ve = ["aria-label"], He = { class: "tpl:flex tpl:max-h-[80vh] tpl:w-full tpl
1049
1057
  "is-saving",
1050
1058
  "is-save-disabled"
1051
1059
  ]),
1052
- E(Xe, {
1060
+ E(Ze, {
1053
1061
  open: C(X).modalOpen.value,
1054
1062
  issues: C(X).blockingIssues.value,
1055
1063
  onCancel: C(X).cancel,
@@ -1060,15 +1068,11 @@ var Ve = ["aria-label"], He = { class: "tpl:flex tpl:max-h-[80vh] tpl:w-full tpl
1060
1068
  "onCancel",
1061
1069
  "onConfirm"
1062
1070
  ]),
1063
- E(Et, {
1064
- visible: C(U).isPreviewingSnapshot.value,
1065
- onCancel: C(U).cancelPreview,
1066
- onConfirm: C(U).confirmRestoreSnapshot
1067
- }, null, 8, [
1068
- "visible",
1069
- "onCancel",
1070
- "onConfirm"
1071
- ]),
1071
+ E(Dt, {
1072
+ visible: C(H).isPreviewingSnapshot.value,
1073
+ onCancel: C(H).cancelPreview,
1074
+ onConfirm: fe
1075
+ }, null, 8, ["visible", "onCancel"]),
1072
1076
  E(T, {
1073
1077
  "enter-active-class": "tpl:transition-all tpl:duration-200 tpl:ease-out",
1074
1078
  "enter-from-class": "tpl:translate-y-[-8px] tpl:opacity-0",
@@ -1077,18 +1081,18 @@ var Ve = ["aria-label"], He = { class: "tpl:flex tpl:max-h-[80vh] tpl:w-full tpl
1077
1081
  "leave-from-class": "tpl:translate-y-0 tpl:opacity-100",
1078
1082
  "leave-to-class": "tpl:translate-y-[-8px] tpl:opacity-0"
1079
1083
  }, {
1080
- default: O(() => [E(Ot, { visible: C(W).collabUndoWarningVisible.value }, null, 8, ["visible"])]),
1084
+ default: O(() => [E(kt, { visible: C(U).collabUndoWarningVisible.value }, null, 8, ["visible"])]),
1081
1085
  _: 1
1082
1086
  }),
1083
- t(E(se, null, null, 512), [[y, !C(F).state.previewMode]]),
1087
+ t(E(le, null, null, 512), [[y, !C(P).state.previewMode]]),
1084
1088
  f("div", {
1085
- class: c(["tpl-body tpl:absolute tpl:bottom-0 tpl:overflow-auto", [C(F).state.previewMode ? "tpl:left-0 tpl:right-0" : C(H).rightPanelOpen.value ? "tpl:left-12 tpl:right-[680px]" : "tpl:left-12 tpl:right-[320px]", C(U).isPreviewingSnapshot.value ? "tpl:top-[104px]" : "tpl:top-14"]]),
1089
+ class: c(["tpl-body tpl:absolute tpl:bottom-0 tpl:overflow-auto", [C(P).state.previewMode ? "tpl:left-0 tpl:right-0" : C(V).rightPanelOpen.value ? "tpl:left-12 tpl:right-[680px]" : "tpl:left-12 tpl:right-[320px]", C(H).isPreviewingSnapshot.value ? "tpl:top-[104px]" : "tpl:top-14"]]),
1086
1090
  style: {
1087
1091
  transition: "all 300ms cubic-bezier(0.34, 1.56, 0.64, 1)",
1088
1092
  "background-color": "var(--tpl-canvas-bg)"
1089
1093
  }
1090
- }, [f("div", At, [E(T, { name: "tpl-restore-btn" }, {
1091
- default: O(() => [C(I).conditionPreview.hasHiddenBlocks.value ? (e(), m("button", {
1094
+ }, [f("div", jt, [E(T, { name: "tpl-restore-btn" }, {
1095
+ default: O(() => [C(F).conditionPreview.hasHiddenBlocks.value ? (e(), m("button", {
1092
1096
  key: 0,
1093
1097
  class: "tpl:absolute tpl:left-1/2 tpl:top-2 tpl:-translate-x-1/2 tpl:inline-flex tpl:items-center tpl:gap-1.5 tpl:rounded-full tpl:border tpl:px-3.5 tpl:py-1.5 tpl:text-xs tpl:font-medium tpl:whitespace-nowrap tpl:shadow-md tpl:hover:opacity-80",
1094
1098
  style: {
@@ -1097,22 +1101,22 @@ var Ve = ["aria-label"], He = { class: "tpl:flex tpl:max-h-[80vh] tpl:w-full tpl
1097
1101
  "border-color": "var(--tpl-warning)",
1098
1102
  "backdrop-filter": "blur(8px)"
1099
1103
  },
1100
- onClick: i[0] ||= (e) => C(I).conditionPreview.reset()
1101
- }, [E(C(le), {
1104
+ onClick: i[0] ||= (e) => C(F).conditionPreview.reset()
1105
+ }, [E(C(ie), {
1102
1106
  size: 13,
1103
1107
  "stroke-width": 2
1104
- }), s(" " + w(C(I).t.blockSettings.restoreHiddenBlocks), 1)])) : v("", !0)]),
1108
+ }), s(" " + w(C(F).t.blockSettings.restoreHiddenBlocks), 1)])) : v("", !0)]),
1105
1109
  _: 1
1106
- })]), f("main", jt, [E(ne, {
1107
- viewport: C(F).state.viewport,
1108
- content: C(F).content.value,
1109
- "selected-block-id": C(F).state.selectedBlockId,
1110
- "dark-mode": C(F).state.darkMode,
1111
- "preview-mode": C(F).state.previewMode,
1110
+ })]), f("main", Mt, [E(ae, {
1111
+ viewport: C(P).state.viewport,
1112
+ content: C(P).content.value,
1113
+ "selected-block-id": C(P).state.selectedBlockId,
1114
+ "dark-mode": C(P).state.darkMode,
1115
+ "preview-mode": C(P).state.previewMode,
1112
1116
  "locked-blocks": C(N)?.lockedBlocks.value ?? void 0,
1113
- onSelectBlock: C(F).selectBlock,
1114
- onOpenAiChat: i[1] ||= (e) => C(H).aiChatOpen.value = !0,
1115
- onOpenDesignReference: i[2] ||= (e) => C(H).designReferenceOpen.value = !0
1117
+ onSelectBlock: C(P).selectBlock,
1118
+ onOpenAiChat: i[1] ||= (e) => C(V).aiChatOpen.value = !0,
1119
+ onOpenDesignReference: i[2] ||= (e) => C(V).designReferenceOpen.value = !0
1116
1120
  }, null, 8, [
1117
1121
  "viewport",
1118
1122
  "content",
@@ -1122,51 +1126,51 @@ var Ve = ["aria-label"], He = { class: "tpl:flex tpl:max-h-[80vh] tpl:w-full tpl
1122
1126
  "locked-blocks",
1123
1127
  "onSelectBlock"
1124
1128
  ])])], 2),
1125
- n.config.branding !== !1 && !C(L).isWhiteLabeled.value ? (e(), x(ie, {
1129
+ n.config.branding !== !1 && !C(I).isWhiteLabeled.value ? (e(), x(oe, {
1126
1130
  key: 0,
1127
- "position-class": [C(F).state.previewMode ? "tpl:left-0 tpl:right-0" : C(H).rightPanelOpen.value ? "tpl:left-12 tpl:right-[680px]" : "tpl:left-12 tpl:right-[320px]"]
1131
+ "position-class": [C(P).state.previewMode ? "tpl:left-0 tpl:right-0" : C(V).rightPanelOpen.value ? "tpl:left-12 tpl:right-[680px]" : "tpl:left-12 tpl:right-[320px]"]
1128
1132
  }, null, 8, ["position-class"])) : v("", !0),
1129
1133
  f("div", {
1130
1134
  class: "tpl-sr-only",
1131
1135
  role: "status",
1132
1136
  "aria-live": "polite",
1133
1137
  "aria-atomic": "true",
1134
- "aria-label": C(I).t.landmarks.reorderAnnouncements
1135
- }, w(C(I).keyboardReorder.announcement.value), 9, Mt),
1136
- t(E(ae, {
1137
- "selected-block": C(F).selectedBlock.value,
1138
- settings: C(F).content.value.settings,
1139
- "shifted-left": C(H).rightPanelOpen.value,
1140
- onUpdateBlock: i[3] ||= (e) => C(F).updateBlock(C(F).selectedBlock.value.id, e),
1141
- onDeleteBlock: i[4] ||= (e) => C(I).blockActions.deleteBlock(C(F).selectedBlock.value.id),
1142
- onDuplicateBlock: i[5] ||= (e) => C(I).blockActions.duplicateBlock(C(F).selectedBlock.value),
1143
- onUpdateSettings: C(F).updateSettings
1138
+ "aria-label": C(F).t.landmarks.reorderAnnouncements
1139
+ }, w(C(F).keyboardReorder.announcement.value), 9, Nt),
1140
+ t(E(se, {
1141
+ "selected-block": C(P).selectedBlock.value,
1142
+ settings: C(P).content.value.settings,
1143
+ "shifted-left": C(V).rightPanelOpen.value,
1144
+ onUpdateBlock: i[3] ||= (e) => C(P).updateBlock(C(P).selectedBlock.value.id, e),
1145
+ onDeleteBlock: i[4] ||= (e) => C(F).blockActions.deleteBlock(C(P).selectedBlock.value.id),
1146
+ onDuplicateBlock: i[5] ||= (e) => C(F).blockActions.duplicateBlock(C(P).selectedBlock.value),
1147
+ onUpdateSettings: C(P).updateSettings
1144
1148
  }, null, 8, [
1145
1149
  "selected-block",
1146
1150
  "settings",
1147
1151
  "shifted-left",
1148
1152
  "onUpdateSettings"
1149
- ]), [[y, !C(F).state.previewMode]]),
1150
- !C(S) && C(D) ? (e(), x(ft, {
1153
+ ]), [[y, !C(P).state.previewMode]]),
1154
+ !C(S) && C(D) ? (e(), x(pt, {
1151
1155
  key: 1,
1152
1156
  ref_key: "cloudPanelsRef",
1153
1157
  ref: d,
1154
1158
  config: l.config,
1155
- editor: C(F),
1156
- core: C(I),
1157
- "panel-state": C(H),
1159
+ editor: C(P),
1160
+ core: C(F),
1161
+ "panel-state": C(V),
1158
1162
  "plan-config-instance": C(A),
1159
- "test-email": C(V),
1160
- "media-lib": C(R),
1161
- "saved-modules-headless": C(te),
1162
- "show-save-module-dialog": C(G),
1163
- "save-module-pre-selected-block-id": C(q),
1164
- "show-module-browser-modal": C(K),
1165
- "onUpdate:showSaveModuleDialog": i[6] ||= (e) => G.value = e,
1166
- "onUpdate:saveModulePreSelectedBlockId": i[7] ||= (e) => q.value = e,
1167
- "onUpdate:showModuleBrowserModal": i[8] ||= (e) => K.value = e,
1168
- onSendTestEmail: oe,
1169
- onModuleInsert: ue
1163
+ "test-email": C(B),
1164
+ "media-lib": C(L),
1165
+ "saved-modules-headless": C(ne),
1166
+ "show-save-module-dialog": C(W),
1167
+ "save-module-pre-selected-block-id": C(K),
1168
+ "show-module-browser-modal": C(G),
1169
+ "onUpdate:showSaveModuleDialog": i[6] ||= (e) => W.value = e,
1170
+ "onUpdate:saveModulePreSelectedBlockId": i[7] ||= (e) => K.value = e,
1171
+ "onUpdate:showModuleBrowserModal": i[8] ||= (e) => G.value = e,
1172
+ onSendTestEmail: de,
1173
+ onModuleInsert: J
1170
1174
  }, null, 8, [
1171
1175
  "config",
1172
1176
  "editor",
@@ -1181,12 +1185,12 @@ var Ve = ["aria-label"], He = { class: "tpl:flex tpl:max-h-[80vh] tpl:w-full tpl
1181
1185
  "show-module-browser-modal"
1182
1186
  ])) : v("", !0),
1183
1187
  f("div", {
1184
- ref: (e) => C(I).popoverRoot.value = e,
1188
+ ref: (e) => C(F).popoverRoot.value = e,
1185
1189
  class: "tpl-popover-root"
1186
1190
  }, null, 512),
1187
- E(ce)
1188
- ], 14, kt));
1191
+ E(ue)
1192
+ ], 14, At));
1189
1193
  }
1190
- }), [["__scopeId", "data-v-3f0f5cfa"]]);
1194
+ }), [["__scopeId", "data-v-3a8bb0e8"]]);
1191
1195
  //#endregion
1192
- export { Nt as default };
1196
+ export { Pt as default };