@templatical/editor 0.13.0 → 0.14.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (153) hide show
  1. package/dist/{AiChatSidebar-B0-U5-sb.js → AiChatSidebar-J8iO_sX7.js} +14 -14
  2. package/dist/{AiFeatureMenu-DxDwLS8B.js → AiFeatureMenu-F2diEDgV.js} +10 -10
  3. package/dist/{BlockIssueBadge-C-EPqWsh.js → BlockIssueBadge-a-qlByxF.js} +5 -5
  4. package/dist/{CloudEditor-DaEfipBn.js → CloudEditor-CDjtwb4i.js} +236 -234
  5. package/dist/{CollaboratorBar-DgwjisX2.js → CollaboratorBar-B_EnJLtW.js} +4 -4
  6. package/dist/{CommentsSidebar-CpRLN40c.js → CommentsSidebar-DaP9BA_r.js} +18 -18
  7. package/dist/{CountdownBlock-DO9fziwf.js → CountdownBlock-DtAokAVw.js} +3 -3
  8. package/dist/{CountdownToolbar-BeII06yJ.js → CountdownToolbar-Dtqgwy0g.js} +3 -3
  9. package/dist/{DesignReferenceSidebar-BgPDbOsl.js → DesignReferenceSidebar-BHRlTqlT.js} +10 -10
  10. package/dist/{IssuesPanel-I0z6k6-H.js → IssuesPanel-u7ee3Wrl.js} +11 -11
  11. package/dist/{LoadingTrack-C7mGWPHS.js → LoadingTrack-CV3ID80N.js} +1 -1
  12. package/dist/ModuleBrowserModal-DOsdaS6s.js +201 -0
  13. package/dist/{ModulePreviewCanvas-Dni9kK4j.js → ModulePreviewCanvas-Cx4MOJ0X.js} +3 -3
  14. package/dist/{NumberWithSuffix-D3fdj0iO.js → NumberWithSuffix-D2mW_DhT.js} +4 -4
  15. package/dist/{ParagraphEditor-CZ-cmhX3.js → ParagraphEditor-DMzkVnST.js} +153 -133
  16. package/dist/{RichTextEditorContent-Q5altsx1.js → RichTextEditorContent-CRCxCwKf.js} +7 -7
  17. package/dist/{SaveModuleDialog-C38VqN2T.js → SaveModuleDialog-DuEKgumL.js} +8 -8
  18. package/dist/{SnapshotHistory-ByloTpwh.js → SnapshotHistory-CVgiNJtE.js} +12 -12
  19. package/dist/{TemplateScoringPanel-CUxiPtEf.js → TemplateScoringPanel-lm0_9nYi.js} +25 -25
  20. package/dist/{TestEmailModal-BvZBMBad.js → TestEmailModal-WBMdiW5S.js} +5 -5
  21. package/dist/{TitleEditor-DbNOcvhR.js → TitleEditor-eyT0h-Sa.js} +71 -55
  22. package/dist/{TplModal-BYb-X5Bj.js → TplModal-tjQ7OB0g.js} +4 -4
  23. package/dist/{blockTypeIcons-CyAom3iI.js → blockTypeIcons-DdB3uTKD.js} +5 -5
  24. package/dist/bundle-stats.json +6 -6
  25. package/dist/cdn/chunks/{AiFeatureMenu-BSoy-SoF.js → AiFeatureMenu-D7rB2SBs.js} +8 -8
  26. package/dist/cdn/chunks/{AiFeatureMenu-BSoy-SoF.js.map → AiFeatureMenu-D7rB2SBs.js.map} +1 -1
  27. package/dist/cdn/chunks/{BlockIssueBadge-BQDUuJxy.js → BlockIssueBadge-DHOe0pgx.js} +5 -5
  28. package/dist/cdn/chunks/{BlockIssueBadge-BQDUuJxy.js.map → BlockIssueBadge-DHOe0pgx.js.map} +1 -1
  29. package/dist/cdn/chunks/{CloudEditor-BZuzsQOZ.js → CloudEditor-DNed_Ym0.js} +208 -206
  30. package/dist/cdn/chunks/CloudEditor-DNed_Ym0.js.map +1 -0
  31. package/dist/cdn/chunks/{CollaboratorBar-DUpSrtDr.js → CollaboratorBar-sj_9Lee3.js} +4 -4
  32. package/dist/cdn/chunks/{CollaboratorBar-DUpSrtDr.js.map → CollaboratorBar-sj_9Lee3.js.map} +1 -1
  33. package/dist/cdn/chunks/{CountdownBlock-DChGTAsH.js → CountdownBlock-C1Ikjpn4.js} +3 -3
  34. package/dist/cdn/chunks/{CountdownBlock-DChGTAsH.js.map → CountdownBlock-C1Ikjpn4.js.map} +1 -1
  35. package/dist/cdn/chunks/{CountdownToolbar-C6gX2SJr.js → CountdownToolbar-j1G_X8rB.js} +4 -4
  36. package/dist/cdn/chunks/{CountdownToolbar-C6gX2SJr.js.map → CountdownToolbar-j1G_X8rB.js.map} +1 -1
  37. package/dist/cdn/chunks/{IssuesPanel-Bo1uhdSe.js → IssuesPanel-CTOf3PsH.js} +11 -11
  38. package/dist/cdn/chunks/{IssuesPanel-Bo1uhdSe.js.map → IssuesPanel-CTOf3PsH.js.map} +1 -1
  39. package/dist/cdn/chunks/{ModuleBrowserModal-a-tZRCcD.js → ModuleBrowserModal-DCh88-rr.js} +11 -8
  40. package/dist/cdn/chunks/{ModuleBrowserModal-a-tZRCcD.js.map → ModuleBrowserModal-DCh88-rr.js.map} +1 -1
  41. package/dist/cdn/chunks/{ModulePreviewCanvas-Bm6k0Op0.js → ModulePreviewCanvas-DJqvTKmg.js} +21 -21
  42. package/dist/cdn/chunks/{ModulePreviewCanvas-Bm6k0Op0.js.map → ModulePreviewCanvas-DJqvTKmg.js.map} +1 -1
  43. package/dist/cdn/chunks/{NumberWithSuffix-HTbuD3VJ.js → NumberWithSuffix-Bu45XWSl.js} +5 -5
  44. package/dist/cdn/chunks/{NumberWithSuffix-HTbuD3VJ.js.map → NumberWithSuffix-Bu45XWSl.js.map} +1 -1
  45. package/dist/cdn/chunks/{ParagraphEditor-pGrfSccu.js → ParagraphEditor-DwZqLJp2.js} +130 -110
  46. package/dist/cdn/chunks/ParagraphEditor-DwZqLJp2.js.map +1 -0
  47. package/dist/cdn/chunks/{RichTextEditorContent-D7XZix_1.js → RichTextEditorContent-CIuZ-2DV.js} +4 -4
  48. package/dist/cdn/chunks/{RichTextEditorContent-D7XZix_1.js.map → RichTextEditorContent-CIuZ-2DV.js.map} +1 -1
  49. package/dist/cdn/chunks/{SaveModuleDialog-C9PQ9x6j.js → SaveModuleDialog-Bep0X2s_.js} +6 -6
  50. package/dist/cdn/chunks/{SaveModuleDialog-C9PQ9x6j.js.map → SaveModuleDialog-Bep0X2s_.js.map} +1 -1
  51. package/dist/cdn/chunks/{TitleEditor-BvFbL16O.js → TitleEditor-DO1-h3RY.js} +62 -46
  52. package/dist/cdn/chunks/TitleEditor-DO1-h3RY.js.map +1 -0
  53. package/dist/cdn/chunks/blockTypeIcons-8o24HVJu.js +22 -0
  54. package/dist/cdn/chunks/{blockTypeIcons-Kd1MT0u8.js.map → blockTypeIcons-8o24HVJu.js.map} +1 -1
  55. package/dist/{de-C2wOXoxs.js → cdn/chunks/de-LsV0u1tP.js} +19 -1
  56. package/dist/cdn/chunks/de-LsV0u1tP.js.map +1 -0
  57. package/dist/cdn/chunks/{draggable-Bci-fq8y.js → draggable-kPCz_3zM.js} +14 -5
  58. package/dist/cdn/chunks/{draggable-Bci-fq8y.js.map → draggable-kPCz_3zM.js.map} +1 -1
  59. package/dist/cdn/chunks/{en-dR7zfNC3.js → en-Bb8X1bOs.js} +18 -2
  60. package/dist/cdn/chunks/en-Bb8X1bOs.js.map +1 -0
  61. package/dist/cdn/chunks/{extensions-CuUjSmuA.js → extensions-iwBXnEwq.js} +16 -16
  62. package/dist/cdn/chunks/{extensions-CuUjSmuA.js.map → extensions-iwBXnEwq.js.map} +1 -1
  63. package/dist/cdn/chunks/{features-DU6lA8l1.js → features-CkTMVylx.js} +940 -812
  64. package/dist/cdn/chunks/features-CkTMVylx.js.map +1 -0
  65. package/dist/cdn/chunks/{icons-BjHUZZyJ.js → icons-9zjCuoJx.js} +158 -152
  66. package/dist/cdn/chunks/icons-9zjCuoJx.js.map +1 -0
  67. package/dist/cdn/chunks/liquid.browser-DKKBzRQu.js.map +1 -1
  68. package/dist/cdn/chunks/{media-library-Byelliig.js → media-library-DMRIPx4g.js} +552 -550
  69. package/dist/cdn/chunks/{media-library-Byelliig.js.map → media-library-DMRIPx4g.js.map} +1 -1
  70. package/dist/cdn/chunks/{pt-BR-BZ86xqK6.js → pt-BR-BwJY_cvb.js} +18 -2
  71. package/dist/cdn/chunks/pt-BR-BwJY_cvb.js.map +1 -0
  72. package/dist/cdn/chunks/{pusher-BICWUP2j.js → pusher-CdEqyLwF.js} +6 -3
  73. package/dist/cdn/chunks/{pusher-BICWUP2j.js.map → pusher-CdEqyLwF.js.map} +1 -1
  74. package/dist/cdn/chunks/quality-CyeUgs_c.js +2176 -0
  75. package/dist/cdn/chunks/{quality-DNnYAntR.js.map → quality-CyeUgs_c.js.map} +1 -1
  76. package/dist/cdn/chunks/{renderer-CZKO-Tav.js → renderer-BIKUEKDD.js} +39 -30
  77. package/dist/cdn/chunks/{renderer-CZKO-Tav.js.map → renderer-BIKUEKDD.js.map} +1 -1
  78. package/dist/cdn/chunks/{src-DsqSXXjk.js → src-pDy_imWG.js} +11 -11
  79. package/dist/cdn/chunks/{src-DsqSXXjk.js.map → src-pDy_imWG.js.map} +1 -1
  80. package/dist/cdn/chunks/{styles-DiAdtiz9.js → styles-D4Bd3SCx.js} +1197 -822
  81. package/dist/cdn/chunks/styles-D4Bd3SCx.js.map +1 -0
  82. package/dist/cdn/chunks/{tiptap-CwScfbsM.js → tiptap-BlLFFU3M.js} +2233 -2213
  83. package/dist/cdn/chunks/tiptap-BlLFFU3M.js.map +1 -0
  84. package/dist/cdn/editor.css +1 -1
  85. package/dist/cdn/editor.js +117 -115
  86. package/dist/cdn/editor.js.map +1 -1
  87. package/dist/{check-BRzXxFHr.js → check-CYJwFmjy.js} +1 -1
  88. package/dist/{chevron-down-DmEgzmYT.js → chevron-down-C5l-DzAA.js} +1 -1
  89. package/dist/{circle-alert-BStvZr3O.js → circle-alert-wf5HUFZY.js} +1 -1
  90. package/dist/{clock-Blwp_1R6.js → clock-Bj0bQw-K.js} +1 -1
  91. package/dist/{cloud-_olro76D.js → cloud-CoFDm9YA.js} +1 -1
  92. package/dist/{createLucideIcon-CmPAC-gt.js → createLucideIcon-Bad2kKE0.js} +4 -4
  93. package/dist/{cdn/chunks/de-C2wOXoxs.js → de-LsV0u1tP.js} +17 -3
  94. package/dist/{dist-BwgjpLfr.js → dist-34OcyoK1.js} +1 -1
  95. package/dist/{dist-Cz79qrLL.js → dist-B7w6xTU6.js} +1 -1
  96. package/dist/{dist-DULfKmTh.js → dist-BX3gGwL8.js} +5 -5
  97. package/dist/{dist-412xXefB.js → dist-Bn703mnA.js} +1 -1
  98. package/dist/{dist-u0iIJH3V.js → dist-CADDCv0o.js} +1 -1
  99. package/dist/{dist-BNEdeWub.js → dist-CGvz7vkq.js} +1 -1
  100. package/dist/{dist-BlG7k25W.js → dist-CLpPNKy9.js} +1 -1
  101. package/dist/{dist-BCQZZUE9.js → dist-ChMninLH.js} +1 -1
  102. package/dist/{dist-b7Ak-CuM.js → dist-CrQZ_af9.js} +1 -1
  103. package/dist/{dist-DhKTdU52.js → dist-CyjyYg52.js} +1426 -1406
  104. package/dist/{dist-D6x1cQeh.js → dist-Dd3ibRZm.js} +2 -2
  105. package/dist/{dist-Cgry6fNv.js → dist-DuCzdgDA.js} +1 -1
  106. package/dist/{dist-o73iaGqy.js → dist-U5vfDdYI.js} +1 -1
  107. package/dist/{en-dR7zfNC3.js → en-Bb8X1bOs.js} +17 -1
  108. package/dist/{extensions-XPlNAKIL.js → extensions-J439b7y7.js} +5 -5
  109. package/dist/{image-up-BFPbw_Zq.js → image-up-x8-WXfsx.js} +1 -1
  110. package/dist/index.d.ts +17 -0
  111. package/dist/{info-B_qLEBN2.js → info-RS_fGcGi.js} +1 -1
  112. package/dist/keys-DgYXDafq.js +10 -0
  113. package/dist/{list-checks-CGg7JxPm.js → list-checks-Bf7XdDyv.js} +1 -1
  114. package/dist/{loader-circle-CDF8eR_Q.js → loader-circle-CLZ0_FvW.js} +1 -1
  115. package/dist/{message-circle-C3cHsCJl.js → message-circle-B-1bN9ab.js} +1 -1
  116. package/dist/{pt-BR-BZ86xqK6.js → pt-BR-BwJY_cvb.js} +17 -1
  117. package/dist/{refresh-cw-Butml7Q4.js → refresh-cw-CWKWqJYG.js} +1 -1
  118. package/dist/scan-line-BtK5dEai.js +31 -0
  119. package/dist/{send-k7npFJNO.js → send-Cn1IUdzh.js} +1 -1
  120. package/dist/{shield-check-CV6GbmCu.js → shield-check-CrvMk4Ea.js} +1 -1
  121. package/dist/{sparkles-C965Xop4.js → sparkles-CgfjwvnG.js} +1 -1
  122. package/dist/style.css +1 -1
  123. package/dist/{styles-D0RCAWhB.js → styles-BUwDOWd3.js} +1221 -846
  124. package/dist/templatical-editor.js +95 -93
  125. package/dist/{text-align-start-Bxnps8fH.js → text-align-start-C3r_Rnvy.js} +1 -1
  126. package/dist/{trash-2-DpGb7fIt.js → trash-2-CjERg4x9.js} +1 -1
  127. package/dist/{triangle-alert-BKYElAwz.js → triangle-alert-Chkny574.js} +1 -1
  128. package/dist/{upload-BF7sxd1_.js → upload-e5kDRkPb.js} +1 -1
  129. package/dist/{useAliveFlag-BinvbqQR.js → useAliveFlag-cUQj9rmB.js} +1 -1
  130. package/dist/{useCloudI18n-L3H2XvdW.js → useCloudI18n-CYJKqXtI.js} +2 -2
  131. package/dist/{useEditorCore-DKYZ7aKk.js → useEditorCore-8JxXDOA4.js} +1031 -903
  132. package/dist/{useI18n-CTs_bP9d.js → useI18n-BWqM8i78.js} +2 -2
  133. package/dist/{useMergeTag-e3RSY-s3.js → useMergeTag-NHC4ylza.js} +3 -3
  134. package/dist/usePopoverRoot-B1sdY4es.js +8 -0
  135. package/dist/{vue.runtime.esm-bundler-B2k01iQh.js → vue.runtime.esm-bundler-BPa483TZ.js} +13 -4
  136. package/dist/{x-CGjkjdKK.js → x-DiPIbccg.js} +1 -1
  137. package/package.json +12 -12
  138. package/dist/ModuleBrowserModal-DsZRr87F.js +0 -198
  139. package/dist/cdn/chunks/CloudEditor-BZuzsQOZ.js.map +0 -1
  140. package/dist/cdn/chunks/ParagraphEditor-pGrfSccu.js.map +0 -1
  141. package/dist/cdn/chunks/TitleEditor-BvFbL16O.js.map +0 -1
  142. package/dist/cdn/chunks/blockTypeIcons-Kd1MT0u8.js +0 -22
  143. package/dist/cdn/chunks/de-C2wOXoxs.js.map +0 -1
  144. package/dist/cdn/chunks/en-dR7zfNC3.js.map +0 -1
  145. package/dist/cdn/chunks/features-DU6lA8l1.js.map +0 -1
  146. package/dist/cdn/chunks/icons-BjHUZZyJ.js.map +0 -1
  147. package/dist/cdn/chunks/pt-BR-BZ86xqK6.js.map +0 -1
  148. package/dist/cdn/chunks/quality-DNnYAntR.js +0 -2176
  149. package/dist/cdn/chunks/styles-DiAdtiz9.js.map +0 -1
  150. package/dist/cdn/chunks/tiptap-CwScfbsM.js.map +0 -1
  151. package/dist/keys-mFiJ5N0_.js +0 -10
  152. package/dist/scan-line-XYEqim_E.js +0 -25
  153. package/dist/usePopoverRoot-DVh7NY1q.js +0 -8
@@ -1,17 +1,17 @@
1
- import { $ as e, A as t, H as n, J as r, M as i, N as a, P as o, V as s, Z as c, _ as l, b as u, ct as d, f, g as p, h as m, it as h, j as g, l as _, m as v, n as y, ot as b, p as x, s as S, st as C, u as w, v as T, x as E, y as D, z as O } from "./draggable-Bci-fq8y.js";
2
- import { $t as ee, A as k, At as A, Dt as j, E as M, Ht as te, It as N, Lt as P, Ot as F, Pt as ne, Q as re, S as I, Tn as L, Ut as R, Wn as z, Wt as ie, Y as B, _ as V, b as H, c as ae, d as U, f as W, ft as G, g as oe, gn as K, gt as q, h as se, it as J, jn as Y, jt as X, kt as Z, l as Q, m as ce, nn as le, nt as $, p as ue, s as de, sn as fe, tn as pe, u as me, v as he, wt as ge, x as _e, y as ve, zt as ye } from "./features-DU6lA8l1.js";
3
- import { _ as be, v as xe } from "./icons-BjHUZZyJ.js";
4
- import { a as Se, c as Ce, d as we, i as Te, l as Ee, n as De, o as Oe, r as ke, s as Ae, t as je, u as Me } from "./styles-DiAdtiz9.js";
5
- import { d as Ne } from "./styleConstants-lGobwiLH.js";
1
+ import { $ as e, A as t, H as n, J as r, M as i, N as a, P as o, V as s, Z as c, _ as l, b as u, ct as d, f, g as p, h as m, it as h, j as g, l as _, m as v, n as y, ot as b, p as x, s as S, st as C, u as w, v as T, x as E, y as D, z as O } from "./draggable-kPCz_3zM.js";
2
+ import { $ as ee, A as k, Bt as A, Dn as te, E as j, Ft as ne, Gt as re, Kn as M, Lt as N, Mt as P, Nn as F, Ot as I, Rt as L, S as R, Ut as ie, Wt as z, Y as B, _ as V, at as H, b as ae, bt as U, c as W, d as G, f as K, ft as q, g as oe, h as se, ht as J, in as ce, kt as Y, l as X, ln as Z, lt as le, m as ue, p as de, rn as fe, rt as Q, s as pe, tn as me, u as he, v as ge, vn as _e, x as ve, y as ye, yt as be } from "./features-CkTMVylx.js";
3
+ import { S as xe, x as Se } from "./icons-9zjCuoJx.js";
4
+ import { a as Ce, c as we, d as Te, f as Ee, i as De, l as Oe, n as ke, o as Ae, r as je, s as Me, t as Ne, u as Pe } from "./styles-D4Bd3SCx.js";
5
+ import { d as $ } from "./styleConstants-lGobwiLH.js";
6
6
  //#region src/cloud/composables/useSnapshotPreview.ts
7
- function Pe(t) {
7
+ function Fe(t) {
8
8
  let { authManager: n, editor: i, history: a, conditionPreview: o, autoSave: s, onError: l } = t, u = e(null), d = c(null), p = c(null), m = !1;
9
9
  r(() => {
10
10
  m = !0;
11
11
  });
12
12
  let h = f(() => d.value !== null), g = f(() => u.value?.snapshots.value ?? []), _ = f(() => u.value?.isLoading.value ?? !1), v = f(() => u.value?.isRestoring.value ?? !1);
13
13
  function y() {
14
- i.state.template?.id && !u.value && (u.value = W({
14
+ i.state.template?.id && !u.value && (u.value = K({
15
15
  authManager: n,
16
16
  templateId: i.state.template.id,
17
17
  onRestore: b,
@@ -63,7 +63,7 @@ function Pe(t) {
63
63
  }
64
64
  //#endregion
65
65
  //#region src/cloud/composables/useCloudPanelState.ts
66
- function Fe() {
66
+ function Ie() {
67
67
  let e = c(null), t = f({
68
68
  get: () => e.value === "ai-chat",
69
69
  set: (t) => e.value = t ? "ai-chat" : null
@@ -86,7 +86,7 @@ function Fe() {
86
86
  function g(t) {
87
87
  l.value = !1, e.value = e.value === t ? null : t;
88
88
  }
89
- return fe(u, () => {
89
+ return Z(u, () => {
90
90
  l.value = !1;
91
91
  }), {
92
92
  activePanel: e,
@@ -108,10 +108,10 @@ function Fe() {
108
108
  }
109
109
  //#endregion
110
110
  //#region src/cloud/composables/useCollabUndoWarning.ts
111
- function Ie(e) {
112
- let { isCollaborationEnabled: t, getCollaboratorCount: n, canUndo: r } = e, i = c(!1), a = c(!1), { start: o } = K(() => {
111
+ function Le(e) {
112
+ let { isCollaborationEnabled: t, getCollaboratorCount: n, canUndo: r } = e, i = c(!1), a = c(!1), { start: o } = _e(() => {
113
113
  a.value = !1;
114
- }, z, { immediate: !1 });
114
+ }, M, { immediate: !1 });
115
115
  function s() {
116
116
  i.value || !t.value || n() === 0 || !r.value || (i.value = !0, a.value = !0, o());
117
117
  }
@@ -122,8 +122,8 @@ function Ie(e) {
122
122
  }
123
123
  //#endregion
124
124
  //#region src/cloud/composables/useCloudFeatureFlags.ts
125
- function Le(e) {
126
- let { planConfigInstance: t, aiConfig: n, editor: r } = e, i = f(() => t.hasFeature("ai_generation") && n.hasAnyMenuFeature.value), a = f(() => t.hasFeature("test_email")), o = f(() => !!r.state.template?.id), s = f(() => t.hasFeature("white_label")), l = f(() => t.config.value?.limits.max_templates ?? null), u = f(() => t.config.value?.template_count ?? 0), d = c(!1), p = c("idle"), m = c(""), { start: h } = K(() => {
125
+ function Re(e) {
126
+ let { planConfigInstance: t, aiConfig: n, editor: r } = e, i = f(() => t.hasFeature("ai_generation") && n.hasAnyMenuFeature.value), a = f(() => t.hasFeature("test_email")), o = f(() => !!r.state.template?.id), s = f(() => t.hasFeature("white_label")), l = f(() => t.config.value?.limits.max_templates ?? null), u = f(() => t.config.value?.template_count ?? 0), d = c(!1), p = c("idle"), m = c(""), { start: h } = _e(() => {
127
127
  p.value = "idle";
128
128
  }, 3e3, { immediate: !1 });
129
129
  return {
@@ -141,7 +141,7 @@ function Le(e) {
141
141
  }
142
142
  //#endregion
143
143
  //#region src/cloud/composables/useCloudMediaLibrary.ts
144
- function Re(e) {
144
+ function ze(e) {
145
145
  let { onRequestMedia: t, mediaLibraryOpen: n, mediaLibraryAccept: i, authManager: a, getMediaConfig: o, onError: s } = e, c = null;
146
146
  function l(e) {
147
147
  return {
@@ -175,7 +175,7 @@ function Re(e) {
175
175
  let t = f(e);
176
176
  if (t) return s?.(t), null;
177
177
  try {
178
- let { MediaApiClient: t } = await import("./src-DsqSXXjk.js");
178
+ let { MediaApiClient: t } = await import("./src-pDy_imWG.js");
179
179
  return l(await new t(a).uploadMedia(e));
180
180
  } catch (e) {
181
181
  return s?.(e), null;
@@ -203,24 +203,24 @@ function Re(e) {
203
203
  }
204
204
  //#endregion
205
205
  //#region src/cloud/composables/useCloudInitialization.ts
206
- function ze(e) {
207
- let { config: t, translations: n, fontsManager: r, emit: i, getCommentsSidebar: o } = e, s = c(!0), l = c(!1), u = c(null), d = !1, p = { value: null }, m = null, h = null, g = new M({
206
+ function Be(e) {
207
+ let { config: t, translations: n, fontsManager: r, emit: i, getCommentsSidebar: o } = e, s = c(!0), l = c(!1), u = c(null), d = !1, p = { value: null }, m = null, h = null, g = new j({
208
208
  ...t.auth,
209
209
  onError: t.onError
210
- }), _ = Q({
210
+ }), _ = X({
211
211
  authManager: g,
212
212
  onError: t.onError
213
- }), v = c(/* @__PURE__ */ new Map()), y = _e({
213
+ }), v = c(/* @__PURE__ */ new Map()), y = ve({
214
214
  authManager: g,
215
215
  defaultFontFamily: t.fonts?.defaultFont,
216
216
  templateDefaults: t.templateDefaults,
217
217
  onError: t.onError,
218
218
  lockedBlocks: v
219
- }), b = ce({
219
+ }), b = ue({
220
220
  authManager: g,
221
221
  onError: t.onError
222
222
  });
223
- t.mcp?.enabled && de({
223
+ t.mcp?.enabled && pe({
224
224
  editor: y,
225
225
  channel: b.channel,
226
226
  onOperation: t.mcp.onOperation
@@ -247,9 +247,10 @@ function ze(e) {
247
247
  customBlocks: [],
248
248
  paletteBlocks: t.paletteBlocks,
249
249
  mergeTags: t.mergeTags,
250
+ logicTags: t.logicTags,
250
251
  displayConditions: t.displayConditions,
251
252
  onRequestMedia: null,
252
- lint: we(t),
253
+ lint: Ee(t),
253
254
  onSave: () => {
254
255
  p.value?.().catch((e) => {
255
256
  t.onError?.(e);
@@ -270,13 +271,13 @@ function ze(e) {
270
271
  keyboardOptions: { onBeforeUndo: () => h?.showCollabUndoWarning() },
271
272
  editorRoot: e.editorRoot,
272
273
  containerEl: e.containerEl
273
- }), w = Ie({
274
+ }), w = Le({
274
275
  isCollaborationEnabled: S,
275
276
  getCollaboratorCount: () => x?.collaborators.value.length ?? 0,
276
277
  canUndo: C.history.canUndo
277
278
  });
278
279
  h = w;
279
- let T = Pe({
280
+ let T = Fe({
280
281
  authManager: g,
281
282
  editor: y,
282
283
  history: C.history,
@@ -285,11 +286,11 @@ function ze(e) {
285
286
  onError: t.onError
286
287
  });
287
288
  m = T;
288
- let E = Fe(), D = H(t.ai), A = Le({
289
+ let E = Ie(), D = ae(t.ai), te = Re({
289
290
  planConfigInstance: _,
290
291
  aiConfig: D,
291
292
  editor: y
292
- }), j = Re({
293
+ }), M = ze({
293
294
  onRequestMedia: t.onRequestMedia,
294
295
  mediaLibraryOpen: E.mediaLibraryOpen,
295
296
  mediaLibraryAccept: E.mediaLibraryAccept,
@@ -297,15 +298,15 @@ function ze(e) {
297
298
  getMediaConfig: () => _.config.value?.media ?? null,
298
299
  onError: t.onError
299
300
  });
300
- re({
301
+ ee({
301
302
  onBlockMove: y.moveBlock,
302
303
  onBlockAdd: y.addBlock
303
304
  });
304
- let N = me({
305
+ let N = he({
305
306
  authManager: g,
306
307
  getFontsConfig: () => t.fonts,
307
308
  canUseCustomFonts: () => _.hasFeature("custom_fonts")
308
- }), F = U({
309
+ }), P = G({
309
310
  authManager: g,
310
311
  getTemplateId: () => y.state.template?.id ?? null,
311
312
  save: () => y.save(),
@@ -313,7 +314,7 @@ function ze(e) {
313
314
  onError: t.onError,
314
315
  isAuthReady: l,
315
316
  onBeforeTestEmail: t.onBeforeTestEmail
316
- }), I = he({
317
+ }), F = ge({
317
318
  authManager: g,
318
319
  getTemplateId: () => y.state.template?.id ?? null,
319
320
  getSocketId: () => b.getSocketId(),
@@ -323,27 +324,27 @@ function ze(e) {
323
324
  hasCommentingFeature: () => t.commenting !== !1 && _.hasFeature("commenting")
324
325
  });
325
326
  V({
326
- comments: I,
327
+ comments: F,
327
328
  channel: b.channel
328
329
  });
329
- let L = ue({
330
+ let I = de({
330
331
  authManager: g,
331
332
  onError: t.onError
332
- }), R = c(!1), z = c(null), B = c(!1), W = ve({
333
+ }), R = c(!1), z = c(null), B = c(!1), H = ye({
333
334
  authManager: g,
334
335
  getTemplateId: () => y.state.template?.id ?? null
335
336
  });
336
- function G(e) {
337
+ function U(e) {
337
338
  E.commentsOpen.value = !0, queueMicrotask(() => {
338
339
  o()?.filterByBlock(e);
339
340
  });
340
341
  }
341
- a(ee, j.handleRequestMedia), a(ye, g), a(P, D), a(ie, I), a(pe, L), a(le, W), a(te, {
342
+ a(me, M.handleRequestMedia), a(A, g), a(L, D), a(re, F), a(fe, I), a(ce, H), a(ie, {
342
343
  plan: _,
343
344
  ai: D,
344
345
  comments: {
345
- getBlockCount: (e) => I.commentCountByBlock.value.get(e) ?? 0,
346
- openForBlock: G
346
+ getBlockCount: (e) => F.commentCountByBlock.value.get(e) ?? 0,
347
+ openForBlock: U
347
348
  },
348
349
  savedModules: {
349
350
  openSaveDialog: (e) => {
@@ -352,7 +353,7 @@ function ze(e) {
352
353
  openBrowser: () => {
353
354
  B.value = !0;
354
355
  },
355
- moduleCount: f(() => L.modules.value.length)
356
+ moduleCount: f(() => I.modules.value.length)
356
357
  }
357
358
  });
358
359
  function K(e) {
@@ -366,12 +367,12 @@ function ze(e) {
366
367
  try {
367
368
  if (await g.initialize(), d) return;
368
369
  l.value = !0;
369
- let e = await ae({ authManager: g });
370
+ let e = await W({ authManager: g });
370
371
  if (d) return;
371
372
  if (!e.api.ok) throw Error("Health check failed: API is not reachable");
372
373
  if (!e.auth.ok) throw Error(`Health check failed: authentication error${e.auth.error ? ` - ${e.auth.error}` : ""}`);
373
374
  if (e.websocket.ok || ne.warn("WebSocket health check failed:", e.websocket.error ?? "unknown error", "-- real-time features will be disabled."), await _.fetchConfig(), d) return;
374
- r.setCustomFontsEnabled(_.hasFeature("custom_fonts")), t.customBlocks?.length && _.hasFeature("custom_blocks") && C.registerCustomBlocks(t.customBlocks), t.theme && _.hasFeature("theme_customization") && (C.themeOverrides.value = t.theme), t.modules !== !1 && _.hasFeature("saved_modules") && L.loadModules(), i("ready");
375
+ r.setCustomFontsEnabled(_.hasFeature("custom_fonts")), t.customBlocks?.length && _.hasFeature("custom_blocks") && C.registerCustomBlocks(t.customBlocks), t.theme && _.hasFeature("theme_customization") && (C.themeOverrides.value = t.theme), t.modules !== !1 && _.hasFeature("saved_modules") && I.loadModules(), i("ready");
375
376
  } catch (e) {
376
377
  if (d) return;
377
378
  let n = e instanceof Error ? e : Error("Initialization failed", { cause: e });
@@ -396,13 +397,13 @@ function ze(e) {
396
397
  editor: y,
397
398
  core: C,
398
399
  aiConfig: D,
399
- featureFlags: A,
400
- mediaLib: j,
400
+ featureFlags: te,
401
+ mediaLib: M,
401
402
  exporter: N,
402
- testEmail: F,
403
- commentsInstance: I,
404
- savedModulesHeadless: L,
405
- scoringInstance: W,
403
+ testEmail: P,
404
+ commentsInstance: F,
405
+ savedModulesHeadless: I,
406
+ scoringInstance: H,
406
407
  panelState: E,
407
408
  snapshotPreview: T,
408
409
  collabWarning: w,
@@ -414,14 +415,14 @@ function ze(e) {
414
415
  destroy: Y,
415
416
  setThemeOverrides: K,
416
417
  setUiTheme: q,
417
- openCommentsForBlock: G
418
+ openCommentsForBlock: U
418
419
  };
419
420
  }
420
421
  //#endregion
421
422
  //#region src/utils/preRenderCustomBlocks.ts
422
- async function Be(e, t) {
423
+ async function Ve(e, t) {
423
424
  let n = async (e) => {
424
- if (Y(e)) {
425
+ if (F(e)) {
425
426
  let n = e;
426
427
  try {
427
428
  n.renderedHtml = await t.renderCustomBlock(n);
@@ -438,10 +439,10 @@ async function Be(e, t) {
438
439
  }
439
440
  //#endregion
440
441
  //#region src/cloud/composables/useCloudLifecycle.ts
441
- function Ve(e) {
442
+ function He(e) {
442
443
  let { config: t, editor: n, websocket: r, planConfigInstance: i, snapshotPreview: a, core: o, exporter: s, featureFlags: c, isDestroyed: l } = e;
443
444
  function u() {
444
- return I(i.config.value.websocket);
445
+ return R(i.config.value.websocket);
445
446
  }
446
447
  async function d(e) {
447
448
  let i = await n.create(e);
@@ -454,7 +455,7 @@ function Ve(e) {
454
455
  async function p() {
455
456
  c.isSaveExporting.value = !0, c.saveStatus.value = "idle";
456
457
  try {
457
- if (await Be(n.content.value, o.registry), l()) throw Error("Component unmounted during save");
458
+ if (await Ve(n.content.value, o.registry), l()) throw Error("Component unmounted during save");
458
459
  let e = await n.save();
459
460
  if (l()) throw Error("Component unmounted during save");
460
461
  a.initSnapshotHistory(), a.snapshotHistoryInstance.value?.loadSnapshots();
@@ -481,7 +482,7 @@ function Ve(e) {
481
482
  }
482
483
  //#endregion
483
484
  //#region src/cloud/composables/useCloudSaveGate.ts
484
- function He(e) {
485
+ function Ue(e) {
485
486
  let t = c(!1), n = null, r = f(() => e.planConfig.value?.accessibility?.blockOnError === !0), i = f(() => r.value ? e.issues.value.filter((e) => e.severity === "error") : []), a = f(() => i.value.length > 0);
486
487
  async function o(e) {
487
488
  return a.value ? (n = e, t.value = !0, !1) : (await e(), !0);
@@ -504,7 +505,7 @@ function He(e) {
504
505
  }
505
506
  //#endregion
506
507
  //#region src/cloud/components/CloudSaveGateModal.vue?vue&type=script&setup=true&lang.ts
507
- var Ue = ["aria-label"], We = { 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)]" }, Ge = { class: "tpl:flex tpl:items-center tpl:gap-2" }, Ke = { class: "tpl:m-0 tpl:text-base tpl:font-semibold tpl:text-[var(--tpl-text)]" }, qe = { class: "tpl:m-0 tpl:text-sm tpl:text-[var(--tpl-text-muted)]" }, Je = { 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" }, Ye = { class: "tpl:text-xs tpl:text-[var(--tpl-text)]" }, Xe = { class: "tpl:font-mono tpl:text-[10px] tpl:text-[var(--tpl-text-dim)]" }, Ze = { class: "tpl:flex tpl:justify-end tpl:gap-2" }, Qe = /* @__PURE__ */ E({
508
+ var We = ["aria-label"], Ge = { 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)]" }, Ke = { class: "tpl:flex tpl:items-center tpl:gap-2" }, qe = { class: "tpl:m-0 tpl:text-base tpl:font-semibold tpl:text-[var(--tpl-text)]" }, Je = { class: "tpl:m-0 tpl:text-sm tpl:text-[var(--tpl-text-muted)]" }, Ye = { 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" }, Xe = { class: "tpl:text-xs tpl:text-[var(--tpl-text)]" }, Ze = { class: "tpl:font-mono tpl:text-[10px] tpl:text-[var(--tpl-text-dim)]" }, Qe = { class: "tpl:flex tpl:justify-end tpl:gap-2" }, $e = /* @__PURE__ */ E({
508
509
  __name: "CloudSaveGateModal",
509
510
  props: {
510
511
  open: { type: Boolean },
@@ -512,7 +513,7 @@ var Ue = ["aria-label"], We = { class: "tpl:flex tpl:max-h-[80vh] tpl:w-full tpl
512
513
  },
513
514
  emits: ["cancel", "confirm"],
514
515
  setup(e, { emit: t }) {
515
- let n = t, { t: r } = $();
516
+ let n = t, { t: r } = Q();
516
517
  return (t, a) => (i(), v(y, {
517
518
  "enter-active-class": "tpl:transition-opacity tpl:duration-150",
518
519
  "leave-active-class": "tpl:transition-opacity tpl:duration-150",
@@ -526,18 +527,18 @@ var Ue = ["aria-label"], We = { class: "tpl:flex tpl:max-h-[80vh] tpl:w-full tpl
526
527
  "aria-label": h(r).saveGate.title,
527
528
  class: "tpl:fixed tpl:inset-0 tpl:z-50 tpl:flex tpl:items-center tpl:justify-center tpl:bg-black/40 tpl:p-6",
528
529
  onClick: a[2] ||= _((e) => n("cancel"), ["self"])
529
- }, [x("div", We, [
530
- x("header", Ge, [D(h(F), {
530
+ }, [x("div", Ge, [
531
+ x("header", Ke, [D(h(le), {
531
532
  size: 18,
532
533
  "stroke-width": 2,
533
534
  class: "tpl:text-[var(--tpl-warning)]"
534
- }), x("h2", Ke, d(h(r).saveGate.title), 1)]),
535
- x("p", qe, d(h(r).saveGate.body), 1),
536
- x("ul", Je, [(i(!0), p(w, null, o(e.issues, (e) => (i(), p("li", {
535
+ }), x("h2", qe, d(h(r).saveGate.title), 1)]),
536
+ x("p", Je, d(h(r).saveGate.body), 1),
537
+ x("ul", Ye, [(i(!0), p(w, null, o(e.issues, (e) => (i(), p("li", {
537
538
  key: `${e.ruleId}-${e.blockId ?? "template"}`,
538
539
  class: "tpl:flex tpl:flex-col tpl:gap-0.5 tpl:rounded tpl:px-2 tpl:py-1.5"
539
- }, [x("span", Ye, d(e.message), 1), x("span", Xe, d(e.ruleId), 1)]))), 128))]),
540
- x("footer", Ze, [x("button", {
540
+ }, [x("span", Xe, d(e.message), 1), x("span", Ze, d(e.ruleId), 1)]))), 128))]),
541
+ x("footer", Qe, [x("button", {
541
542
  type: "button",
542
543
  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)]",
543
544
  onClick: a[0] ||= (e) => n("cancel")
@@ -546,11 +547,11 @@ var Ue = ["aria-label"], We = { class: "tpl:flex tpl:max-h-[80vh] tpl:w-full tpl
546
547
  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",
547
548
  onClick: a[1] ||= (e) => n("confirm")
548
549
  }, d(h(r).saveGate.confirm), 1)])
549
- ])], 8, Ue)) : m("", !0)]),
550
+ ])], 8, We)) : m("", !0)]),
550
551
  _: 1
551
552
  }));
552
553
  }
553
- }), $e = {
554
+ }), et = {
554
555
  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",
555
556
  style: {
556
557
  "background-color": "color-mix(in srgb, var(--tpl-bg) 80%, transparent)",
@@ -559,24 +560,24 @@ var Ue = ["aria-label"], We = { class: "tpl:flex tpl:max-h-[80vh] tpl:w-full tpl
559
560
  "box-shadow": "var(--tpl-shadow-md)",
560
561
  "border-bottom": "1px solid var(--tpl-border)"
561
562
  }
562
- }, et = { class: "tpl-header-left tpl:flex tpl:min-w-[200px] tpl:items-center tpl:gap-3" }, tt = {
563
+ }, tt = { class: "tpl-header-left tpl:flex tpl:min-w-[200px] tpl:items-center tpl:gap-3" }, nt = {
563
564
  key: 0,
564
565
  class: "tpl:text-xs tpl:opacity-60 tpl:text-[var(--tpl-text-muted)]"
565
- }, nt = { class: "tpl-header-center tpl:flex tpl:items-center tpl:justify-center tpl:gap-10" }, rt = { class: "tpl-header-right tpl:flex tpl:min-w-[200px] tpl:items-center tpl:justify-end tpl:gap-3" }, it = ["data-tooltip"], at = {
566
+ }, rt = { class: "tpl-header-center tpl:flex tpl:items-center tpl:justify-center tpl:gap-10" }, it = { class: "tpl-header-right tpl:flex tpl:min-w-[200px] tpl:items-center tpl:justify-end tpl:gap-3" }, at = ["data-tooltip"], ot = {
566
567
  key: 1,
567
568
  "aria-live": "polite",
568
569
  class: "tpl-status tpl:flex tpl:items-center tpl:gap-1.5 tpl:text-xs tpl:text-[var(--tpl-success)]"
569
- }, ot = {
570
+ }, st = {
570
571
  key: 2,
571
572
  "aria-live": "polite",
572
573
  class: "tpl-status tpl:flex tpl:items-center tpl:gap-1.5 tpl:text-xs tpl:text-[var(--tpl-text-muted)]"
573
- }, st = ["aria-label", "aria-expanded"], ct = {
574
+ }, ct = ["aria-label", "aria-expanded"], lt = {
574
575
  key: 0,
575
576
  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)]"
576
- }, lt = ["aria-expanded"], ut = {
577
+ }, ut = ["aria-expanded"], dt = {
577
578
  key: 0,
578
579
  class: "tpl:absolute tpl:right-0 tpl:top-full tpl:z-50 tpl:mt-1 tpl:origin-top-right"
579
- }, dt = ["disabled"], ft = ["disabled"], pt = /* @__PURE__ */ E({
580
+ }, ft = ["disabled"], pt = ["disabled"], mt = /* @__PURE__ */ E({
580
581
  __name: "CloudHeader",
581
582
  props: {
582
583
  editor: {},
@@ -594,22 +595,22 @@ var Ue = ["aria-label"], We = { class: "tpl:flex tpl:max-h-[80vh] tpl:w-full tpl
594
595
  },
595
596
  emits: ["save"],
596
597
  setup(e) {
597
- let t = u(() => import("./CollaboratorBar-DUpSrtDr.js")), n = u(() => import("./features-DU6lA8l1.js").then((e) => e.r)), r = u(() => import("./AiFeatureMenu-BSoy-SoF.js")), { t: a, format: o } = $();
598
- return (c, l) => (i(), p("header", $e, [
599
- x("div", et, [e.featureFlags.templateLimit.value === null ? m("", !0) : (i(), p("span", tt, d(h(o)(h(a).header.templatesUsed, {
598
+ let t = u(() => import("./CollaboratorBar-sj_9Lee3.js")), n = u(() => import("./features-CkTMVylx.js").then((e) => e.r)), r = u(() => import("./AiFeatureMenu-D7rB2SBs.js")), { t: a, format: o } = Q();
599
+ return (c, l) => (i(), p("header", et, [
600
+ x("div", tt, [e.featureFlags.templateLimit.value === null ? m("", !0) : (i(), p("span", nt, d(h(o)(h(a).header.templatesUsed, {
600
601
  used: e.featureFlags.templateCount.value,
601
602
  max: e.featureFlags.templateLimit.value
602
603
  })), 1))]),
603
- x("div", nt, [
604
- D(Se, {
604
+ x("div", rt, [
605
+ D(Ae, {
605
606
  viewport: e.editor.state.viewport,
606
607
  onChange: e.editor.setViewport
607
608
  }, null, 8, ["viewport", "onChange"]),
608
- D(ke, {
609
+ D(De, {
609
610
  "dark-mode": e.editor.state.darkMode,
610
611
  onChange: e.editor.setDarkMode
611
612
  }, null, 8, ["dark-mode", "onChange"]),
612
- D(Te, {
613
+ D(Ce, {
613
614
  "preview-mode": e.editor.state.previewMode,
614
615
  onChange: e.editor.setPreviewMode
615
616
  }, null, 8, ["preview-mode", "onChange"]),
@@ -633,24 +634,24 @@ var Ue = ["aria-label"], We = { class: "tpl:flex tpl:max-h-[80vh] tpl:w-full tpl
633
634
  "onNavigate"
634
635
  ])) : m("", !0)
635
636
  ]),
636
- x("div", rt, [
637
+ x("div", it, [
637
638
  e.featureFlags.saveStatus.value === "error" ? (i(), p("div", {
638
639
  key: 0,
639
640
  "aria-live": "assertive",
640
641
  class: "tpl-tooltip tpl-status tpl:flex tpl:items-center tpl:gap-1.5 tpl:text-xs tpl:text-[var(--tpl-danger)]",
641
642
  "data-tooltip": e.featureFlags.saveErrorMessage.value
642
- }, [D(h(X), {
643
+ }, [D(h(Y), {
643
644
  size: 12,
644
645
  "stroke-width": 2.5
645
- }), T(" " + d(h(a).header.saveFailed), 1)], 8, it)) : e.featureFlags.saveStatus.value === "saved" ? (i(), p("div", at, [D(h(j), {
646
+ }), T(" " + d(h(a).header.saveFailed), 1)], 8, at)) : e.featureFlags.saveStatus.value === "saved" ? (i(), p("div", ot, [D(h(P), {
646
647
  size: 12,
647
648
  "stroke-width": 2.5
648
- }), T(" " + d(h(a).header.saved), 1)])) : e.editor.state.isDirty ? (i(), p("div", ot, [l[4] ||= x("span", { class: "tpl-pulse tpl:size-1.5 tpl:rounded-full tpl:bg-[var(--tpl-primary)]" }, null, -1), T(" " + d(h(a).header.unsaved), 1)])) : m("", !0),
649
+ }), T(" " + d(h(a).header.saved), 1)])) : e.editor.state.isDirty ? (i(), p("div", st, [l[4] ||= x("span", { class: "tpl-pulse tpl:size-1.5 tpl:rounded-full tpl:bg-[var(--tpl-primary)]" }, null, -1), T(" " + d(h(a).header.unsaved), 1)])) : m("", !0),
649
650
  e.commentsInstance.isEnabled.value && e.featureFlags.hasTemplateSaved.value ? (i(), p("button", {
650
651
  key: 3,
651
652
  "aria-label": e.commentsInstance.unresolvedCount.value > 0 ? `${h(a).comments.button} (${e.commentsInstance.unresolvedCount.value})` : h(a).comments.button,
652
653
  "aria-expanded": e.panelState.commentsOpen.value,
653
- class: b(h(Ne)),
654
+ class: b(h($)),
654
655
  style: C({
655
656
  backgroundColor: e.panelState.commentsOpen.value ? "var(--tpl-primary)" : "transparent",
656
657
  color: e.panelState.commentsOpen.value ? "var(--tpl-bg)" : "var(--tpl-primary)",
@@ -658,13 +659,13 @@ var Ue = ["aria-label"], We = { class: "tpl:flex tpl:max-h-[80vh] tpl:w-full tpl
658
659
  }),
659
660
  onClick: l[0] ||= (t) => e.panelState.commentsOpen.value = !e.panelState.commentsOpen.value
660
661
  }, [
661
- D(h(q), {
662
+ D(h(be), {
662
663
  size: 16,
663
664
  "stroke-width": 2
664
665
  }),
665
666
  T(" " + d(h(a).comments.button) + " ", 1),
666
- e.commentsInstance.unresolvedCount.value > 0 && !e.panelState.commentsOpen.value ? (i(), p("span", ct, d(e.commentsInstance.unresolvedCount.value), 1)) : m("", !0)
667
- ], 14, st)) : m("", !0),
667
+ e.commentsInstance.unresolvedCount.value > 0 && !e.panelState.commentsOpen.value ? (i(), p("span", lt, d(e.commentsInstance.unresolvedCount.value), 1)) : m("", !0)
668
+ ], 14, ct)) : m("", !0),
668
669
  e.featureFlags.canUseAiGeneration.value && e.featureFlags.hasTemplateSaved.value ? (i(), p("div", {
669
670
  key: 4,
670
671
  ref: (t) => e.panelState.aiMenuRef.value = t,
@@ -673,11 +674,11 @@ var Ue = ["aria-label"], We = { class: "tpl:flex tpl:max-h-[80vh] tpl:w-full tpl
673
674
  "aria-expanded": e.panelState.aiMenuOpen.value,
674
675
  class: b(["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", e.panelState.aiButtonActive.value ? "tpl-ai-btn--active" : "tpl-ai-btn--idle"]),
675
676
  onClick: l[1] ||= _((...t) => e.panelState.toggleAiMenu && e.panelState.toggleAiMenu(...t), ["stop"])
676
- }, [D(h(Z), {
677
+ }, [D(h(q), {
677
678
  size: 16,
678
679
  "stroke-width": 2,
679
680
  class: "tpl-ai-btn-icon"
680
- }), T(" " + d(h(a).aiChat.button), 1)], 10, lt), D(y, {
681
+ }), T(" " + d(h(a).aiChat.button), 1)], 10, ut), D(y, {
681
682
  "enter-active-class": "tpl:transition-all tpl:duration-150 tpl:ease-out",
682
683
  "enter-from-class": "tpl:scale-95 tpl:opacity-0",
683
684
  "enter-to-class": "tpl:scale-100 tpl:opacity-100",
@@ -685,7 +686,7 @@ var Ue = ["aria-label"], We = { class: "tpl:flex tpl:max-h-[80vh] tpl:w-full tpl
685
686
  "leave-from-class": "tpl:scale-100 tpl:opacity-100",
686
687
  "leave-to-class": "tpl:scale-95 tpl:opacity-0"
687
688
  }, {
688
- default: s(() => [e.panelState.aiMenuOpen.value ? (i(), p("div", ut, [D(h(r), {
689
+ default: s(() => [e.panelState.aiMenuOpen.value ? (i(), p("div", dt, [D(h(r), {
689
690
  "active-feature": e.panelState.activeAiFeature.value,
690
691
  onSelect: e.panelState.handleAiFeatureSelect
691
692
  }, null, 8, ["active-feature", "onSelect"])])) : m("", !0)]),
@@ -693,7 +694,7 @@ var Ue = ["aria-label"], We = { class: "tpl:flex tpl:max-h-[80vh] tpl:w-full tpl
693
694
  })], 512)) : m("", !0),
694
695
  e.testEmail.isEnabled.value && e.featureFlags.canSendTestEmail.value ? (i(), p("button", {
695
696
  key: 5,
696
- class: b(h(Ne)),
697
+ class: b(h($)),
697
698
  style: {
698
699
  "background-color": "transparent",
699
700
  color: "var(--tpl-primary)",
@@ -701,18 +702,18 @@ var Ue = ["aria-label"], We = { class: "tpl:flex tpl:max-h-[80vh] tpl:w-full tpl
701
702
  },
702
703
  disabled: e.testEmail.isSending.value || !e.featureFlags.hasTemplateSaved.value,
703
704
  onClick: l[2] ||= (t) => e.panelState.testEmailModalOpen.value = !0
704
- }, [e.testEmail.isSending.value ? (i(), v(h(A), {
705
+ }, [e.testEmail.isSending.value ? (i(), v(h(U), {
705
706
  key: 1,
706
707
  class: "tpl-spinner",
707
708
  size: 16,
708
709
  "stroke-width": 2
709
- })) : (i(), v(h(G), {
710
+ })) : (i(), v(h(J), {
710
711
  key: 0,
711
712
  size: 16,
712
713
  "stroke-width": 2
713
- })), T(" " + d(h(a).testEmail.button), 1)], 10, dt)) : m("", !0),
714
+ })), T(" " + d(h(a).testEmail.button), 1)], 10, ft)) : m("", !0),
714
715
  x("button", {
715
- class: b(h(Ne)),
716
+ class: b(h($)),
716
717
  style: {
717
718
  "background-color": "transparent",
718
719
  color: "var(--tpl-primary)",
@@ -720,20 +721,20 @@ var Ue = ["aria-label"], We = { class: "tpl:flex tpl:max-h-[80vh] tpl:w-full tpl
720
721
  },
721
722
  disabled: e.isSaveDisabled,
722
723
  onClick: l[3] ||= (e) => c.$emit("save")
723
- }, [e.isSaving ? (i(), v(h(A), {
724
+ }, [e.isSaving ? (i(), v(h(U), {
724
725
  key: 1,
725
726
  class: "tpl-spinner",
726
727
  size: 16,
727
728
  "stroke-width": 2
728
- })) : (i(), v(h(be), {
729
+ })) : (i(), v(h(Se), {
729
730
  key: 0,
730
731
  size: 16,
731
732
  "stroke-width": 2
732
- })), T(" " + d(e.isSaving ? h(a).header.saving : h(a).header.save), 1)], 10, ft)
733
+ })), T(" " + d(e.isSaving ? h(a).header.saving : h(a).header.save), 1)], 10, pt)
733
734
  ])
734
735
  ]));
735
736
  }
736
- }), mt = /* @__PURE__ */ E({
737
+ }), ht = /* @__PURE__ */ E({
737
738
  __name: "CloudPanels",
738
739
  props: {
739
740
  config: {},
@@ -756,9 +757,9 @@ var Ue = ["aria-label"], We = { class: "tpl:flex tpl:max-h-[80vh] tpl:w-full tpl
756
757
  "module-insert"
757
758
  ],
758
759
  setup(e, { expose: t, emit: n }) {
759
- let r = u(() => import("./features-DU6lA8l1.js").then((e) => e.o)), a = u(() => import("./features-DU6lA8l1.js").then((e) => e.a)), o = u(() => import("./features-DU6lA8l1.js").then((e) => e.i)), s = u(() => import("./features-DU6lA8l1.js").then((e) => e.n)), l = u(() => import("./features-DU6lA8l1.js").then((e) => e.t)), d = u(() => import("./SaveModuleDialog-C9PQ9x6j.js")), f = u(() => import("./ModuleBrowserModal-a-tZRCcD.js")), g = u(async () => {
760
+ let r = u(() => import("./features-CkTMVylx.js").then((e) => e.o)), a = u(() => import("./features-CkTMVylx.js").then((e) => e.a)), o = u(() => import("./features-CkTMVylx.js").then((e) => e.i)), s = u(() => import("./features-CkTMVylx.js").then((e) => e.n)), l = u(() => import("./features-CkTMVylx.js").then((e) => e.t)), d = u(() => import("./SaveModuleDialog-Bep0X2s_.js")), f = u(() => import("./ModuleBrowserModal-DCh88-rr.js")), g = u(async () => {
760
761
  try {
761
- return (await import("./src-DsqSXXjk.js")).MediaLibraryModal;
762
+ return (await import("./src-pDy_imWG.js")).MediaLibraryModal;
762
763
  } catch {
763
764
  throw Error("[Templatical] Cloud media library requires the optional peer dependency '@templatical/media-library'. Please install it.");
764
765
  }
@@ -838,23 +839,23 @@ var Ue = ["aria-label"], We = { class: "tpl:flex tpl:max-h-[80vh] tpl:w-full tpl
838
839
  ])
839
840
  ], 64));
840
841
  }
841
- }), ht = {
842
+ }), gt = {
842
843
  key: 0,
843
844
  class: "tpl-loading tpl:absolute tpl:inset-0 tpl:z-overlay tpl:flex tpl:flex-col tpl:bg-[var(--tpl-bg)]"
844
- }, gt = { class: "tpl:flex tpl:flex-1 tpl:overflow-hidden" }, _t = { 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)]" }, vt = /* @__PURE__ */ E({
845
+ }, _t = { class: "tpl:flex tpl:flex-1 tpl:overflow-hidden" }, vt = { 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)]" }, yt = /* @__PURE__ */ E({
845
846
  __name: "CloudLoadingOverlay",
846
847
  props: { visible: { type: Boolean } },
847
848
  setup(e) {
848
- return (t, n) => e.visible ? (i(), p("div", ht, [n[1] ||= l("<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), x("div", gt, [x("div", _t, [(i(), p(w, null, o(5, (e) => x("div", {
849
+ return (t, n) => e.visible ? (i(), p("div", gt, [n[1] ||= l("<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), x("div", _t, [x("div", vt, [(i(), p(w, null, o(5, (e) => x("div", {
849
850
  key: e,
850
851
  class: "tpl-shimmer tpl:size-7 tpl:rounded-[var(--tpl-radius-sm)]"
851
852
  })), 64))]), n[0] ||= l("<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)])])) : m("", !0);
852
853
  }
853
- }), yt = {
854
+ }), bt = {
854
855
  key: 0,
855
856
  role: "alert",
856
857
  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)]"
857
- }, bt = { class: "tpl:flex tpl:size-16 tpl:items-center tpl:justify-center tpl:rounded-full tpl:bg-[var(--tpl-danger-light)]" }, xt = { class: "tpl:flex tpl:flex-col tpl:items-center tpl:gap-2 tpl:text-center" }, St = { class: "tpl:text-lg tpl:font-semibold tpl:text-[var(--tpl-text)]" }, Ct = { class: "tpl:max-w-md tpl:text-sm tpl:text-[var(--tpl-text-muted)]" }, wt = /* @__PURE__ */ E({
858
+ }, xt = { class: "tpl:flex tpl:size-16 tpl:items-center tpl:justify-center tpl:rounded-full tpl:bg-[var(--tpl-danger-light)]" }, St = { class: "tpl:flex tpl:flex-col tpl:items-center tpl:gap-2 tpl:text-center" }, Ct = { class: "tpl:text-lg tpl:font-semibold tpl:text-[var(--tpl-text)]" }, wt = { class: "tpl:max-w-md tpl:text-sm tpl:text-[var(--tpl-text-muted)]" }, Tt = /* @__PURE__ */ E({
858
859
  __name: "CloudErrorOverlay",
859
860
  props: {
860
861
  error: {},
@@ -862,20 +863,20 @@ var Ue = ["aria-label"], We = { class: "tpl:flex tpl:max-h-[80vh] tpl:w-full tpl
862
863
  },
863
864
  emits: ["retry"],
864
865
  setup(e, { emit: t }) {
865
- let n = t, { t: r } = $();
866
+ let n = t, { t: r } = Q();
866
867
  function a(e) {
867
868
  return "isUnauthorized" in e && e.isUnauthorized ? r.error.authFailed : "isNotFound" in e && e.isNotFound ? r.error.templateNotFound : r.error.defaultMessage;
868
869
  }
869
870
  function o(e) {
870
871
  return "isNotFound" in e && !!e.isNotFound;
871
872
  }
872
- return (t, s) => e.visible && e.error ? (i(), p("div", yt, [
873
- x("div", bt, [D(h(X), {
873
+ return (t, s) => e.visible && e.error ? (i(), p("div", bt, [
874
+ x("div", xt, [D(h(Y), {
874
875
  size: 32,
875
876
  "stroke-width": 1.5,
876
877
  class: "tpl:text-[var(--tpl-danger)]"
877
878
  })]),
878
- x("div", xt, [x("h2", St, d(h(r).error.title), 1), x("p", Ct, d(a(e.error)), 1)]),
879
+ x("div", St, [x("h2", Ct, d(h(r).error.title), 1), x("p", wt, d(a(e.error)), 1)]),
879
880
  o(e.error) ? m("", !0) : (i(), p("button", {
880
881
  key: 0,
881
882
  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)]",
@@ -883,20 +884,20 @@ var Ue = ["aria-label"], We = { class: "tpl:flex tpl:max-h-[80vh] tpl:w-full tpl
883
884
  }, d(h(r).error.retry), 1))
884
885
  ])) : m("", !0);
885
886
  }
886
- }), Tt = {
887
+ }), Et = {
887
888
  key: 0,
888
889
  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)]"
889
- }, Et = { class: "tpl:flex tpl:items-center tpl:gap-2 tpl:text-sm tpl:text-[var(--tpl-text)]" }, Dt = { class: "tpl:flex tpl:items-center tpl:gap-2" }, Ot = /* @__PURE__ */ E({
890
+ }, Dt = { class: "tpl:flex tpl:items-center tpl:gap-2 tpl:text-sm tpl:text-[var(--tpl-text)]" }, Ot = { class: "tpl:flex tpl:items-center tpl:gap-2" }, kt = /* @__PURE__ */ E({
890
891
  __name: "SnapshotPreviewBanner",
891
892
  props: { visible: { type: Boolean } },
892
893
  emits: ["cancel", "confirm"],
893
894
  setup(e, { emit: t }) {
894
- let n = t, { t: r } = $();
895
- return (t, a) => e.visible ? (i(), p("div", Tt, [x("div", Et, [D(h(ge), {
895
+ let n = t, { t: r } = Q();
896
+ return (t, a) => e.visible ? (i(), p("div", Et, [x("div", Dt, [D(h(I), {
896
897
  size: 18,
897
898
  "stroke-width": 2,
898
899
  class: "tpl:text-[var(--tpl-primary)]"
899
- }), x("span", null, d(h(r).snapshotPreview.message), 1)]), x("div", Dt, [x("button", {
900
+ }), x("span", null, d(h(r).snapshotPreview.message), 1)]), x("div", Ot, [x("button", {
900
901
  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)]",
901
902
  style: { "background-color": "transparent" },
902
903
  onClick: a[0] ||= (e) => n("cancel")
@@ -905,7 +906,7 @@ var Ue = ["aria-label"], We = { class: "tpl:flex tpl:max-h-[80vh] tpl:w-full tpl
905
906
  onClick: a[1] ||= (e) => n("confirm")
906
907
  }, d(h(r).snapshotPreview.restore), 1)])])) : m("", !0);
907
908
  }
908
- }), kt = {
909
+ }), At = {
909
910
  key: 0,
910
911
  role: "status",
911
912
  "aria-live": "polite",
@@ -915,14 +916,14 @@ var Ue = ["aria-label"], We = { class: "tpl:flex tpl:max-h-[80vh] tpl:w-full tpl
915
916
  color: "var(--tpl-text)",
916
917
  border: "1px solid var(--tpl-warning)"
917
918
  }
918
- }, At = /* @__PURE__ */ E({
919
+ }, jt = /* @__PURE__ */ E({
919
920
  __name: "CollabUndoToast",
920
921
  props: { visible: { type: Boolean } },
921
922
  setup(e) {
922
923
  let { t } = N();
923
- return (n, r) => e.visible ? (i(), p("div", kt, d(h(t).history.collabWarning), 1)) : m("", !0);
924
+ return (n, r) => e.visible ? (i(), p("div", At, d(h(t).history.collabWarning), 1)) : m("", !0);
924
925
  }
925
- }), jt = ["data-tpl-theme"], Mt = { class: "tpl:sticky tpl:top-0 tpl:z-40 tpl:h-0" }, Nt = { class: "tpl-main tpl:flex tpl:justify-center tpl:p-8" }, Pt = ["aria-label"], Ft = /*#__PURE__*/ J(/* @__PURE__ */ E({
926
+ }), Mt = ["data-tpl-theme"], Nt = { class: "tpl:sticky tpl:top-0 tpl:z-40 tpl:h-0" }, Pt = { class: "tpl-main tpl:flex tpl:justify-center tpl:p-8" }, Ft = ["aria-label"], It = /*#__PURE__*/ H(/* @__PURE__ */ E({
926
927
  __name: "CloudEditor",
927
928
  props: {
928
929
  config: {},
@@ -934,8 +935,8 @@ var Ue = ["aria-label"], We = { class: "tpl:flex tpl:max-h-[80vh] tpl:w-full tpl
934
935
  emits: ["ready"],
935
936
  setup(e, { expose: r, emit: o }) {
936
937
  let l = e;
937
- a(R, l.cloudTranslations);
938
- let u = o, f = c(null), w = c(null), E = ze({
938
+ a(z, l.cloudTranslations);
939
+ let u = o, f = c(null), w = c(null), E = Be({
939
940
  config: l.config,
940
941
  translations: l.translations,
941
942
  fontsManager: l.fontsManager,
@@ -943,10 +944,10 @@ var Ue = ["aria-label"], We = { class: "tpl:flex tpl:max-h-[80vh] tpl:w-full tpl
943
944
  getCommentsSidebar: () => f.value ? { filterByBlock: f.value.filterCommentsByBlock } : null,
944
945
  editorRoot: l.shadowRoot,
945
946
  containerEl: w
946
- }), { isInitializing: O, isAuthReady: ee, initError: k, planConfigInstance: A, websocket: j, collaboration: M, isCollaborationEnabled: te, editor: N, core: P, featureFlags: F, mediaLib: ne, exporter: re, testEmail: I, commentsInstance: z, savedModulesHeadless: ie, panelState: V, snapshotPreview: H, collabWarning: ae, showSaveModuleDialog: U, showModuleBrowserModal: W, saveModulePreSelectedBlockId: G, setThemeOverrides: oe, setUiTheme: K } = E, { showNotice: q } = B(() => l.config.smallScreenNotice);
947
+ }), { isInitializing: O, isAuthReady: ee, initError: k, planConfigInstance: A, websocket: j, collaboration: ne, isCollaborationEnabled: re, editor: M, core: N, featureFlags: P, mediaLib: F, exporter: I, testEmail: L, commentsInstance: R, savedModulesHeadless: ie, panelState: V, snapshotPreview: H, collabWarning: ae, showSaveModuleDialog: U, showModuleBrowserModal: W, saveModulePreSelectedBlockId: G, setThemeOverrides: K, setUiTheme: q } = E, { showNotice: oe } = B(() => l.config.smallScreenNotice);
947
948
  async function se(e) {
948
949
  try {
949
- await I.sendTestEmail(e), V.testEmailModalOpen.value = !1;
950
+ await L.sendTestEmail(e), V.testEmailModalOpen.value = !1;
950
951
  } catch {}
951
952
  }
952
953
  async function J() {
@@ -954,53 +955,53 @@ var Ue = ["aria-label"], We = { class: "tpl:flex tpl:max-h-[80vh] tpl:w-full tpl
954
955
  await H.confirmRestoreSnapshot();
955
956
  } catch {}
956
957
  }
957
- function Y(e, t) {
958
+ function ce(e, t) {
958
959
  for (let n = 0; n < e.content.length; n++) {
959
- let r = L(e.content[n]), i = t === void 0 ? void 0 : t + n;
960
- N.addBlock(r, void 0, void 0, i);
960
+ let r = te(e.content[n]), i = t === void 0 ? void 0 : t + n;
961
+ M.addBlock(r, void 0, void 0, i);
961
962
  }
962
963
  W.value = !1;
963
964
  }
964
- let X = Ve({
965
+ let Y = He({
965
966
  config: l.config,
966
- editor: N,
967
+ editor: M,
967
968
  websocket: j,
968
969
  planConfigInstance: A,
969
970
  snapshotPreview: H,
970
- core: P,
971
- exporter: re,
972
- featureFlags: F,
971
+ core: N,
972
+ exporter: I,
973
+ featureFlags: P,
973
974
  isDestroyed: E.isDestroyed
974
- }), Z = He({
975
- issues: P.templateLint ? P.templateLint.issues : c([]),
975
+ }), X = Ue({
976
+ issues: N.templateLint ? N.templateLint.issues : c([]),
976
977
  planConfig: A.config
977
978
  });
978
- async function Q() {
979
- await Z.tryRunSave(() => X.saveTemplate().catch((e) => l.config.onError?.(e)));
979
+ async function Z() {
980
+ await X.tryRunSave(() => Y.saveTemplate().catch((e) => l.config.onError?.(e)));
980
981
  }
981
- return E.onSaveHook.value = Q, t(() => {
982
+ return E.onSaveHook.value = Z, t(() => {
982
983
  E.initialize();
983
984
  }), g(() => {
984
985
  E.destroy();
985
986
  }), r({
986
- getContent: () => N.content.value,
987
- setContent: (e) => N.setContent(e),
988
- setTheme: K,
989
- setThemeOverrides: oe,
990
- create: X.createTemplate,
991
- load: X.loadTemplate,
992
- save: X.saveTemplate,
993
- sendTestEmail: I.sendTestEmail
987
+ getContent: () => M.content.value,
988
+ setContent: (e) => M.setContent(e),
989
+ setTheme: q,
990
+ setThemeOverrides: K,
991
+ create: Y.createTemplate,
992
+ load: Y.loadTemplate,
993
+ save: Y.saveTemplate,
994
+ sendTestEmail: L.sendTestEmail
994
995
  }), (t, r) => (i(), p("div", {
995
996
  ref_key: "rootEl",
996
997
  ref: w,
997
- class: b(["tpl tpl:relative tpl:h-full tpl:overflow-hidden", { "tpl:dark": h(N).state.darkMode }]),
998
- "data-tpl-theme": h(P).resolvedTheme.value,
999
- style: C(h(P).themeStyles.value),
998
+ class: b(["tpl tpl:relative tpl:h-full tpl:overflow-hidden", { "tpl:dark": h(M).state.darkMode }]),
999
+ "data-tpl-theme": h(N).resolvedTheme.value,
1000
+ style: C(h(N).themeStyles.value),
1000
1001
  onDragover: r[9] ||= _(() => {}, ["prevent"]),
1001
1002
  onDrop: r[10] ||= _(() => {}, ["prevent"])
1002
1003
  }, [
1003
- D(Ee),
1004
+ D(Pe),
1004
1005
  D(y, {
1005
1006
  "enter-active-class": "tpl:transition-opacity tpl:duration-200",
1006
1007
  "enter-from-class": "tpl:opacity-100",
@@ -1009,7 +1010,7 @@ var Ue = ["aria-label"], We = { class: "tpl:flex tpl:max-h-[80vh] tpl:w-full tpl
1009
1010
  "leave-from-class": "tpl:opacity-100",
1010
1011
  "leave-to-class": "tpl:opacity-0"
1011
1012
  }, {
1012
- default: s(() => [D(vt, { visible: h(O) || h(N).state.isLoading }, null, 8, ["visible"])]),
1013
+ default: s(() => [D(yt, { visible: h(O) || h(M).state.isLoading }, null, 8, ["visible"])]),
1013
1014
  _: 1
1014
1015
  }),
1015
1016
  D(y, {
@@ -1020,7 +1021,7 @@ var Ue = ["aria-label"], We = { class: "tpl:flex tpl:max-h-[80vh] tpl:w-full tpl
1020
1021
  "leave-from-class": "tpl:opacity-100",
1021
1022
  "leave-to-class": "tpl:opacity-0"
1022
1023
  }, {
1023
- default: s(() => [D(wt, {
1024
+ default: s(() => [D(Tt, {
1024
1025
  error: h(k),
1025
1026
  visible: !!h(k) && !h(O),
1026
1027
  onRetry: h(E).initialize
@@ -1031,20 +1032,20 @@ var Ue = ["aria-label"], We = { class: "tpl:flex tpl:max-h-[80vh] tpl:w-full tpl
1031
1032
  ])]),
1032
1033
  _: 1
1033
1034
  }),
1034
- D(pt, {
1035
- editor: h(N),
1036
- core: h(P),
1037
- "feature-flags": h(F),
1035
+ D(mt, {
1036
+ editor: h(M),
1037
+ core: h(N),
1038
+ "feature-flags": h(P),
1038
1039
  "panel-state": h(V),
1039
1040
  "snapshot-preview": h(H),
1040
- "comments-instance": h(z),
1041
- "test-email": h(I),
1041
+ "comments-instance": h(R),
1042
+ "test-email": h(L),
1042
1043
  websocket: h(j),
1043
- collaboration: h(M),
1044
- "is-collaboration-enabled": h(te),
1045
- "is-saving": h(N).state.isSaving || h(F).isSaveExporting.value,
1046
- "is-save-disabled": h(N).state.isSaving || h(F).isSaveExporting.value || !h(N).state.isDirty,
1047
- onSave: Q
1044
+ collaboration: h(ne),
1045
+ "is-collaboration-enabled": h(re),
1046
+ "is-saving": h(M).state.isSaving || h(P).isSaveExporting.value,
1047
+ "is-save-disabled": h(M).state.isSaving || h(P).isSaveExporting.value || !h(M).state.isDirty,
1048
+ onSave: Z
1048
1049
  }, null, 8, [
1049
1050
  "editor",
1050
1051
  "core",
@@ -1059,18 +1060,18 @@ var Ue = ["aria-label"], We = { class: "tpl:flex tpl:max-h-[80vh] tpl:w-full tpl
1059
1060
  "is-saving",
1060
1061
  "is-save-disabled"
1061
1062
  ]),
1062
- D(Qe, {
1063
- open: h(Z).modalOpen.value,
1064
- issues: h(Z).blockingIssues.value,
1065
- onCancel: h(Z).cancel,
1066
- onConfirm: h(Z).confirmAndSave
1063
+ D($e, {
1064
+ open: h(X).modalOpen.value,
1065
+ issues: h(X).blockingIssues.value,
1066
+ onCancel: h(X).cancel,
1067
+ onConfirm: h(X).confirmAndSave
1067
1068
  }, null, 8, [
1068
1069
  "open",
1069
1070
  "issues",
1070
1071
  "onCancel",
1071
1072
  "onConfirm"
1072
1073
  ]),
1073
- D(Ot, {
1074
+ D(kt, {
1074
1075
  visible: h(H).isPreviewingSnapshot.value,
1075
1076
  onCancel: h(H).cancelPreview,
1076
1077
  onConfirm: J
@@ -1083,18 +1084,18 @@ var Ue = ["aria-label"], We = { class: "tpl:flex tpl:max-h-[80vh] tpl:w-full tpl
1083
1084
  "leave-from-class": "tpl:translate-y-0 tpl:opacity-100",
1084
1085
  "leave-to-class": "tpl:translate-y-[-8px] tpl:opacity-0"
1085
1086
  }, {
1086
- default: s(() => [D(At, { visible: h(ae).collabUndoWarningVisible.value }, null, 8, ["visible"])]),
1087
+ default: s(() => [D(jt, { visible: h(ae).collabUndoWarningVisible.value }, null, 8, ["visible"])]),
1087
1088
  _: 1
1088
1089
  }),
1089
- n(D(Ce, null, null, 512), [[S, !h(N).state.previewMode]]),
1090
+ n(D(Oe, null, null, 512), [[S, !h(M).state.previewMode]]),
1090
1091
  x("div", {
1091
- class: b(["tpl-body tpl:absolute tpl:bottom-0 tpl:overflow-auto", [h(N).state.previewMode ? "tpl:left-0 tpl:right-0" : h(V).rightPanelOpen.value ? "tpl:left-12 tpl:right-[680px]" : "tpl:left-12 tpl:right-[320px]", h(H).isPreviewingSnapshot.value ? "tpl:top-[104px]" : "tpl:top-14"]]),
1092
+ class: b(["tpl-body tpl:absolute tpl:bottom-0 tpl:overflow-auto", [h(M).state.previewMode ? "tpl:left-0 tpl:right-0" : h(V).rightPanelOpen.value ? "tpl:left-12 tpl:right-[680px]" : "tpl:left-12 tpl:right-[320px]", h(H).isPreviewingSnapshot.value ? "tpl:top-[104px]" : "tpl:top-14"]]),
1092
1093
  style: {
1093
1094
  transition: "all 300ms cubic-bezier(0.34, 1.56, 0.64, 1)",
1094
1095
  "background-color": "var(--tpl-canvas-bg)"
1095
1096
  }
1096
- }, [x("div", Mt, [D(y, { name: "tpl-restore-btn" }, {
1097
- default: s(() => [h(P).conditionPreview.hasHiddenBlocks.value ? (i(), p("button", {
1097
+ }, [x("div", Nt, [D(y, { name: "tpl-restore-btn" }, {
1098
+ default: s(() => [h(N).conditionPreview.hasHiddenBlocks.value ? (i(), p("button", {
1098
1099
  key: 0,
1099
1100
  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",
1100
1101
  style: {
@@ -1103,20 +1104,20 @@ var Ue = ["aria-label"], We = { class: "tpl:flex tpl:max-h-[80vh] tpl:w-full tpl
1103
1104
  "border-color": "var(--tpl-warning)",
1104
1105
  "backdrop-filter": "blur(8px)"
1105
1106
  },
1106
- onClick: r[0] ||= (e) => h(P).conditionPreview.reset()
1107
+ onClick: r[0] ||= (e) => h(N).conditionPreview.reset()
1107
1108
  }, [D(h(xe), {
1108
1109
  size: 13,
1109
1110
  "stroke-width": 2
1110
- }), T(" " + d(h(P).t.blockSettings.restoreHiddenBlocks), 1)])) : m("", !0)]),
1111
+ }), T(" " + d(h(N).t.blockSettings.restoreHiddenBlocks), 1)])) : m("", !0)]),
1111
1112
  _: 1
1112
- })]), x("main", Nt, [D(Me, {
1113
- viewport: h(N).state.viewport,
1114
- content: h(N).content.value,
1115
- "selected-block-id": h(N).state.selectedBlockId,
1116
- "dark-mode": h(N).state.darkMode,
1117
- "preview-mode": h(N).state.previewMode,
1118
- "locked-blocks": h(M)?.lockedBlocks.value ?? void 0,
1119
- onSelectBlock: h(N).selectBlock,
1113
+ })]), x("main", Pt, [D(Te, {
1114
+ viewport: h(M).state.viewport,
1115
+ content: h(M).content.value,
1116
+ "selected-block-id": h(M).state.selectedBlockId,
1117
+ "dark-mode": h(M).state.darkMode,
1118
+ "preview-mode": h(M).state.previewMode,
1119
+ "locked-blocks": h(ne)?.lockedBlocks.value ?? void 0,
1120
+ onSelectBlock: h(M).selectBlock,
1120
1121
  onOpenAiChat: r[1] ||= (e) => h(V).aiChatOpen.value = !0,
1121
1122
  onOpenDesignReference: r[2] ||= (e) => h(V).designReferenceOpen.value = !0
1122
1123
  }, null, 8, [
@@ -1128,42 +1129,42 @@ var Ue = ["aria-label"], We = { class: "tpl:flex tpl:max-h-[80vh] tpl:w-full tpl
1128
1129
  "locked-blocks",
1129
1130
  "onSelectBlock"
1130
1131
  ])])], 2),
1131
- e.config.branding !== !1 && !h(F).isWhiteLabeled.value ? (i(), v(De, {
1132
+ e.config.branding !== !1 && !h(P).isWhiteLabeled.value ? (i(), v(je, {
1132
1133
  key: 0,
1133
- "position-class": [h(N).state.previewMode ? "tpl:left-0 tpl:right-0" : h(V).rightPanelOpen.value ? "tpl:left-12 tpl:right-[680px]" : "tpl:left-12 tpl:right-[320px]"]
1134
+ "position-class": [h(M).state.previewMode ? "tpl:left-0 tpl:right-0" : h(V).rightPanelOpen.value ? "tpl:left-12 tpl:right-[680px]" : "tpl:left-12 tpl:right-[320px]"]
1134
1135
  }, null, 8, ["position-class"])) : m("", !0),
1135
1136
  x("div", {
1136
1137
  class: "tpl-sr-only",
1137
1138
  role: "status",
1138
1139
  "aria-live": "polite",
1139
1140
  "aria-atomic": "true",
1140
- "aria-label": h(P).t.landmarks.reorderAnnouncements
1141
- }, d(h(P).keyboardReorder.announcement.value), 9, Pt),
1142
- n(D(Ae, {
1143
- "selected-block": h(N).selectedBlock.value,
1144
- settings: h(N).content.value.settings,
1141
+ "aria-label": h(N).t.landmarks.reorderAnnouncements
1142
+ }, d(h(N).keyboardReorder.announcement.value), 9, Ft),
1143
+ n(D(we, {
1144
+ "selected-block": h(M).selectedBlock.value,
1145
+ settings: h(M).content.value.settings,
1145
1146
  "shifted-left": h(V).rightPanelOpen.value,
1146
- onUpdateBlock: r[3] ||= (e) => h(N).updateBlock(h(N).selectedBlock.value.id, e),
1147
- onDeleteBlock: r[4] ||= (e) => h(P).blockActions.deleteBlock(h(N).selectedBlock.value.id),
1148
- onDuplicateBlock: r[5] ||= (e) => h(P).blockActions.duplicateBlock(h(N).selectedBlock.value),
1149
- onUpdateSettings: h(N).updateSettings
1147
+ onUpdateBlock: r[3] ||= (e) => h(M).updateBlock(h(M).selectedBlock.value.id, e),
1148
+ onDeleteBlock: r[4] ||= (e) => h(N).blockActions.deleteBlock(h(M).selectedBlock.value.id),
1149
+ onDuplicateBlock: r[5] ||= (e) => h(N).blockActions.duplicateBlock(h(M).selectedBlock.value),
1150
+ onUpdateSettings: h(M).updateSettings
1150
1151
  }, null, 8, [
1151
1152
  "selected-block",
1152
1153
  "settings",
1153
1154
  "shifted-left",
1154
1155
  "onUpdateSettings"
1155
- ]), [[S, !h(N).state.previewMode]]),
1156
- !h(O) && h(ee) ? (i(), v(mt, {
1156
+ ]), [[S, !h(M).state.previewMode]]),
1157
+ !h(O) && h(ee) ? (i(), v(ht, {
1157
1158
  key: 1,
1158
1159
  ref_key: "cloudPanelsRef",
1159
1160
  ref: f,
1160
1161
  config: l.config,
1161
- editor: h(N),
1162
- core: h(P),
1162
+ editor: h(M),
1163
+ core: h(N),
1163
1164
  "panel-state": h(V),
1164
1165
  "plan-config-instance": h(A),
1165
- "test-email": h(I),
1166
- "media-lib": h(ne),
1166
+ "test-email": h(L),
1167
+ "media-lib": h(F),
1167
1168
  "saved-modules-headless": h(ie),
1168
1169
  "show-save-module-dialog": h(U),
1169
1170
  "save-module-pre-selected-block-id": h(G),
@@ -1172,7 +1173,7 @@ var Ue = ["aria-label"], We = { class: "tpl:flex tpl:max-h-[80vh] tpl:w-full tpl
1172
1173
  "onUpdate:saveModulePreSelectedBlockId": r[7] ||= (e) => G.value = e,
1173
1174
  "onUpdate:showModuleBrowserModal": r[8] ||= (e) => W.value = e,
1174
1175
  onSendTestEmail: se,
1175
- onModuleInsert: Y
1176
+ onModuleInsert: ce
1176
1177
  }, null, 8, [
1177
1178
  "config",
1178
1179
  "editor",
@@ -1187,15 +1188,16 @@ var Ue = ["aria-label"], We = { class: "tpl:flex tpl:max-h-[80vh] tpl:w-full tpl
1187
1188
  "show-module-browser-modal"
1188
1189
  ])) : m("", !0),
1189
1190
  x("div", {
1190
- ref: (e) => h(P).popoverRoot.value = e,
1191
+ ref: (e) => h(N).popoverRoot.value = e,
1191
1192
  class: "tpl-popover-root"
1192
1193
  }, null, 512),
1193
- D(je),
1194
- h(q) ? (i(), v(Oe, { key: 2 })) : m("", !0)
1195
- ], 46, jt));
1194
+ D(ke),
1195
+ D(Ne),
1196
+ h(oe) ? (i(), v(Me, { key: 2 })) : m("", !0)
1197
+ ], 46, Mt));
1196
1198
  }
1197
- }), [["__scopeId", "data-v-8c4fa160"]]);
1199
+ }), [["__scopeId", "data-v-3fc6c906"]]);
1198
1200
  //#endregion
1199
- export { Ft as default };
1201
+ export { It as default };
1200
1202
 
1201
- //# sourceMappingURL=CloudEditor-BZuzsQOZ.js.map
1203
+ //# sourceMappingURL=CloudEditor-DNed_Ym0.js.map