@templatical/editor 0.5.0 → 0.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (156) hide show
  1. package/dist/AccessibilityPanel-CvQGLdu6.js +108 -0
  2. package/dist/{AiChatSidebar-Cg206ewI.js → AiChatSidebar-Br9dhkIB.js} +17 -16
  3. package/dist/{AiFeatureMenu-vatvCD-m.js → AiFeatureMenu-Ceewb3uB.js} +13 -13
  4. package/dist/BlockA11yBadge-CXDLqkcJ.js +34 -0
  5. package/dist/{CloudEditor-Bxe8Jt9u.js → CloudEditor-D_flODpm.js} +306 -217
  6. package/dist/{CollaboratorBar-Dv7VT09N.js → CollaboratorBar-BcSxXVY-.js} +4 -4
  7. package/dist/{CommentsSidebar-BAma2apG.js → CommentsSidebar-DceMRyIS.js} +26 -25
  8. package/dist/{CountdownBlock-Ce3RFNpM.js → CountdownBlock-BNSj1jvJ.js} +2 -2
  9. package/dist/{CountdownToolbar-Bo3Jaiky.js → CountdownToolbar-ClJr2GzL.js} +3 -3
  10. package/dist/{DesignReferenceSidebar-B8DDnLHQ.js → DesignReferenceSidebar-50qFipmW.js} +30 -29
  11. package/dist/{LoadingTrack-DhxulLPM.js → LoadingTrack-B0CWFHXQ.js} +1 -1
  12. package/dist/{ModuleBrowserModal-DAnqdlyq.js → ModuleBrowserModal-BnSdG4DE.js} +10 -10
  13. package/dist/{ModulePreviewCanvas-CXApEVEG.js → ModulePreviewCanvas-B78PuZdk.js} +2 -2
  14. package/dist/{NumberWithSuffix-BysfchFp.js → NumberWithSuffix-DkXUez9t.js} +3 -3
  15. package/dist/{ParagraphEditor-Bjdakcoz.js → ParagraphEditor-CPBYk2m3.js} +44 -43
  16. package/dist/{RichTextEditorContent-jxPxfbfZ.js → RichTextEditorContent-DYkIauIk.js} +4 -4
  17. package/dist/{SaveModuleDialog-CZXltahx.js → SaveModuleDialog-Df__VToK.js} +7 -7
  18. package/dist/{SnapshotHistory-OqEkaA0W.js → SnapshotHistory-QBTbVrEK.js} +9 -9
  19. package/dist/{TemplateScoringPanel-BmAHdgLF.js → TemplateScoringPanel-4GTNHej5.js} +29 -27
  20. package/dist/{TestEmailModal-CvEK6MTy.js → TestEmailModal-DaDMACHY.js} +4 -4
  21. package/dist/{TitleEditor-CxCD70Bs.js → TitleEditor-PHShl4tS.js} +11 -11
  22. package/dist/{TplModal-C2Hoz1it.js → TplModal-DzlNkBYQ.js} +2 -2
  23. package/dist/_plugin-vue_export-helper-B0hnzhyu.js +8 -0
  24. package/dist/accessibility-e8JYu_zd.js +27 -0
  25. package/dist/{blockTypeIcons-DpJa9awv.js → blockTypeIcons-D0wkSpP9.js} +2 -2
  26. package/dist/bundle-stats.json +8 -8
  27. package/dist/cdn/chunks/AccessibilityPanel-DmQIqpp1.js +97 -0
  28. package/dist/cdn/chunks/AccessibilityPanel-DmQIqpp1.js.map +1 -0
  29. package/dist/cdn/chunks/{AiFeatureMenu-BggCm6wN.js → AiFeatureMenu-D0kJ0FMv.js} +5 -5
  30. package/dist/cdn/chunks/{AiFeatureMenu-BggCm6wN.js.map → AiFeatureMenu-D0kJ0FMv.js.map} +1 -1
  31. package/dist/cdn/chunks/BlockA11yBadge-DWi7e6UQ.js +33 -0
  32. package/dist/cdn/chunks/BlockA11yBadge-DWi7e6UQ.js.map +1 -0
  33. package/dist/cdn/chunks/{CloudEditor-CTNhzoZ1.js → CloudEditor-ulKjC0Ag.js} +253 -166
  34. package/dist/cdn/chunks/CloudEditor-ulKjC0Ag.js.map +1 -0
  35. package/dist/cdn/chunks/{CollaboratorBar-De-3lvDy.js → CollaboratorBar-Bp9LwcWB.js} +6 -6
  36. package/dist/cdn/chunks/{CollaboratorBar-De-3lvDy.js.map → CollaboratorBar-Bp9LwcWB.js.map} +1 -1
  37. package/dist/cdn/chunks/{CountdownBlock-CUAl8R-c.js → CountdownBlock-XFPbUKXw.js} +2 -2
  38. package/dist/cdn/chunks/{CountdownBlock-CUAl8R-c.js.map → CountdownBlock-XFPbUKXw.js.map} +1 -1
  39. package/dist/cdn/chunks/{CountdownToolbar-3zLcGAcb.js → CountdownToolbar-DndLWUgz.js} +3 -3
  40. package/dist/cdn/chunks/{CountdownToolbar-3zLcGAcb.js.map → CountdownToolbar-DndLWUgz.js.map} +1 -1
  41. package/dist/cdn/chunks/{ModuleBrowserModal-CxICY31A.js → ModuleBrowserModal-ClY6A8bi.js} +7 -7
  42. package/dist/cdn/chunks/{ModuleBrowserModal-CxICY31A.js.map → ModuleBrowserModal-ClY6A8bi.js.map} +1 -1
  43. package/dist/cdn/chunks/{ModulePreviewCanvas-Cv0zciNS.js → ModulePreviewCanvas-eQExlHRD.js} +18 -18
  44. package/dist/cdn/chunks/{ModulePreviewCanvas-Cv0zciNS.js.map → ModulePreviewCanvas-eQExlHRD.js.map} +1 -1
  45. package/dist/cdn/chunks/{NumberWithSuffix-BaVxnNI4.js → NumberWithSuffix-Cf5C9rpj.js} +4 -4
  46. package/dist/cdn/chunks/{NumberWithSuffix-BaVxnNI4.js.map → NumberWithSuffix-Cf5C9rpj.js.map} +1 -1
  47. package/dist/cdn/chunks/{ParagraphEditor-BrzlI8vp.js → ParagraphEditor-B5AvuetS.js} +57 -57
  48. package/dist/cdn/chunks/ParagraphEditor-B5AvuetS.js.map +1 -0
  49. package/dist/cdn/chunks/{RichTextEditorContent-9vq4MRDp.js → RichTextEditorContent-hCk4SA8U.js} +4 -4
  50. package/dist/cdn/chunks/{RichTextEditorContent-9vq4MRDp.js.map → RichTextEditorContent-hCk4SA8U.js.map} +1 -1
  51. package/dist/cdn/chunks/{SaveModuleDialog-Lco3k1xX.js → SaveModuleDialog-Borv00Kh.js} +3 -3
  52. package/dist/cdn/chunks/{SaveModuleDialog-Lco3k1xX.js.map → SaveModuleDialog-Borv00Kh.js.map} +1 -1
  53. package/dist/cdn/chunks/{TitleEditor-BiiEtH7x.js → TitleEditor-BkzRNsEg.js} +12 -12
  54. package/dist/cdn/chunks/TitleEditor-BkzRNsEg.js.map +1 -0
  55. package/dist/cdn/chunks/blockTypeIcons-Dlw0LR_y.js +22 -0
  56. package/dist/cdn/chunks/{blockTypeIcons-DWhn7E7O.js.map → blockTypeIcons-Dlw0LR_y.js.map} +1 -1
  57. package/dist/cdn/chunks/{de-CGu9U1iv.js → de-Ce-LbJ2J.js} +1 -1
  58. package/dist/cdn/chunks/{de-CGu9U1iv.js.map → de-Ce-LbJ2J.js.map} +1 -1
  59. package/dist/{de-tDioEErp.js → cdn/chunks/de-D8CnZxV9.js} +24 -4
  60. package/dist/cdn/chunks/de-D8CnZxV9.js.map +1 -0
  61. package/dist/{de-CbSb23fl.js → cdn/chunks/de-RQrZR56a.js} +8 -0
  62. package/dist/cdn/chunks/{de-Db6I9YdS.js.map → de-RQrZR56a.js.map} +1 -1
  63. package/dist/cdn/chunks/{emojiData-Vv_m5TSB.js → emojiData-EMFlj6FJ.js} +1 -1
  64. package/dist/cdn/chunks/{emojiData-Vv_m5TSB.js.map → emojiData-EMFlj6FJ.js.map} +1 -1
  65. package/dist/{en-W2p7oPaa.js → cdn/chunks/en-8FHaQv4V.js} +24 -4
  66. package/dist/cdn/chunks/en-8FHaQv4V.js.map +1 -0
  67. package/dist/{en-2fvenFu0.js → cdn/chunks/en-Bl1ecfRF.js} +8 -0
  68. package/dist/cdn/chunks/{en-BbqBJ2Q3.js.map → en-Bl1ecfRF.js.map} +1 -1
  69. package/dist/cdn/chunks/{en-C3WMCISl.js → en-DiCWK5fG.js} +1 -1
  70. package/dist/cdn/chunks/{en-C3WMCISl.js.map → en-DiCWK5fG.js.map} +1 -1
  71. package/dist/cdn/chunks/{extensions-C6oPJqKD.js → extensions-Bseybosy.js} +48 -36
  72. package/dist/cdn/chunks/{extensions-C6oPJqKD.js.map → extensions-Bseybosy.js.map} +1 -1
  73. package/dist/cdn/chunks/{features-DV4PhoBs.js → features-C256qERn.js} +828 -765
  74. package/dist/cdn/chunks/features-C256qERn.js.map +1 -0
  75. package/dist/cdn/chunks/{icons-LJ8U8lWI.js → icons-BfGy6HC_.js} +99 -52
  76. package/dist/cdn/chunks/icons-BfGy6HC_.js.map +1 -0
  77. package/dist/cdn/chunks/{media-library-CWQAvfov.js → media-library-hjXJlR6s.js} +217 -217
  78. package/dist/cdn/chunks/{media-library-CWQAvfov.js.map → media-library-hjXJlR6s.js.map} +1 -1
  79. package/dist/cdn/chunks/quality-CqLOOUnE.js +1404 -0
  80. package/dist/cdn/chunks/quality-CqLOOUnE.js.map +1 -0
  81. package/dist/cdn/chunks/{readableTextColor-Cd_cgWO_.js → readableTextColor-DhoK4XiZ.js} +1 -1
  82. package/dist/cdn/chunks/{readableTextColor-Cd_cgWO_.js.map → readableTextColor-DhoK4XiZ.js.map} +1 -1
  83. package/dist/cdn/chunks/{dist-DFfcnJJB.js → renderer-Dbtez0lY.js} +178 -126
  84. package/dist/cdn/chunks/renderer-Dbtez0lY.js.map +1 -0
  85. package/dist/cdn/chunks/{src-CVBDXDBH.js → src-MOXq0pRK.js} +11 -11
  86. package/dist/cdn/chunks/{src-CVBDXDBH.js.map → src-MOXq0pRK.js.map} +1 -1
  87. package/dist/cdn/chunks/{styles-CFnn-xE6.js → styles-COCYlkQY.js} +577 -485
  88. package/dist/cdn/chunks/styles-COCYlkQY.js.map +1 -0
  89. package/dist/cdn/chunks/{tiptap-kGWe8qnA.js → tiptap-CX3vCeHQ.js} +2 -2
  90. package/dist/cdn/chunks/{tiptap-kGWe8qnA.js.map → tiptap-CX3vCeHQ.js.map} +1 -1
  91. package/dist/cdn/editor.css +1 -1
  92. package/dist/cdn/editor.js +87 -86
  93. package/dist/cdn/editor.js.map +1 -1
  94. package/dist/{check-Om8IxvJb.js → check-Da05j8yl.js} +1 -1
  95. package/dist/{chevron-down-SG7QNtDl.js → chevron-down-R2uY34iD.js} +1 -1
  96. package/dist/{circle-alert-De74azaX.js → circle-alert-DZuGWPX-.js} +1 -1
  97. package/dist/{clock-Dr7rX_PG.js → clock-CRp2sIub.js} +1 -1
  98. package/dist/{cloud-B1NAFg44.js → cloud-WfWdqZVK.js} +1 -1
  99. package/dist/{_plugin-vue_export-helper-GRmvIR5A.js → createLucideIcon-C3pa2siy.js} +2 -6
  100. package/dist/{cdn/chunks/de-DEg-6TsA.js → de-Brqvgr43.js} +22 -6
  101. package/dist/{cdn/chunks/de-Db6I9YdS.js → de-DCaaCE5s.js} +6 -2
  102. package/dist/{dist-CuyhAnuE.js → dist-B1IR0bpH.js} +65 -53
  103. package/dist/{dist-QoJxR1uP.js → dist-BFawx6IS.js} +1 -1
  104. package/dist/{dist-H7npgW0s.js → dist-BaQIYPsn.js} +1 -1
  105. package/dist/{dist-C4m7p7Wb.js → dist-Cp0zXPAD.js} +1 -1
  106. package/dist/{dist--8ZUsIQD.js → dist-D6uC2xhi.js} +1 -1
  107. package/dist/{dist-BMMiVjHs.js → dist-D90y8dvT.js} +3 -3
  108. package/dist/{dist--e2w6FN-.js → dist-DDJIWTRY.js} +1 -1
  109. package/dist/{dist-e0ylhlSV.js → dist-DJmnUmW9.js} +2 -1
  110. package/dist/{dist-BOSn1353.js → dist-DjviJBCi.js} +1 -1
  111. package/dist/{dist-BsiDC2rP.js → dist-KoBJjK1G.js} +1 -1
  112. package/dist/{dist-BNZS_qhu.js → dist-aRzjfSRN.js} +1 -1
  113. package/dist/{dist-3AzSJz2x.js → dist-us-RpCWN.js} +1 -1
  114. package/dist/{dist-DPsMHsAW.js → dist-wzMIGj-D.js} +1 -1
  115. package/dist/{cdn/chunks/en-BbqBJ2Q3.js → en-DXCyK4-X.js} +6 -2
  116. package/dist/{cdn/chunks/en-DpHxxBnH.js → en-WDVp87TE.js} +22 -6
  117. package/dist/{extensions-BQjnrlGT.js → extensions-CUcl9Ok4.js} +37 -25
  118. package/dist/{image-up-10kxuulB.js → image-up-MBZKKg9p.js} +1 -1
  119. package/dist/index.d.ts +25 -8
  120. package/dist/info-CJEC7piy.js +19 -0
  121. package/dist/{keys-BeW4IrXP.js → keys-ciNfSSGj.js} +3 -3
  122. package/dist/{loader-circle-IS16T05j.js → loader-circle-DsY5Yg33.js} +1 -1
  123. package/dist/{message-circle-3R472hDc.js → message-circle-yElBbR2C.js} +1 -1
  124. package/dist/{refresh-cw-CpmOfpPK.js → refresh-cw-CE_AGtn8.js} +3 -18
  125. package/dist/{scan-line-J_fzG2Wo.js → scan-line-D0vcUekt.js} +1 -1
  126. package/dist/{send-DRkFf4hP.js → send-DH4oDQqC.js} +1 -1
  127. package/dist/{shield-check-DtXk7JKN.js → shield-check-CfJgs2Hd.js} +1 -1
  128. package/dist/{sparkles-CD7TiNiC.js → sparkles-CvRXGqFs.js} +1 -1
  129. package/dist/style.css +1 -1
  130. package/dist/{styles-CdrFC7-K.js → styles-B58wYIn4.js} +590 -477
  131. package/dist/templatical-editor.js +90 -89
  132. package/dist/{text-align-start-B8M9hruh.js → text-align-start-BT9VUDxK.js} +1 -1
  133. package/dist/{trash-2-cEVwp-r_.js → trash-2-DbP2Y6t2.js} +1 -1
  134. package/dist/{triangle-alert-8CkexIzx.js → triangle-alert-aOXceTSe.js} +1 -1
  135. package/dist/{useCloudI18n-D0Fi0hBU.js → useCloudI18n-BuIwR6OE.js} +1 -1
  136. package/dist/{useEditorCore-JdLcaPeJ.js → useEditorCore-Dz-qbVXX.js} +2100 -2049
  137. package/dist/{useI18n-Jp3X6Q0t.js → useI18n-lb2DHDiu.js} +1 -1
  138. package/dist/{useMergeTag-BfFykpYl.js → useMergeTag-CBwKnnNB.js} +4 -4
  139. package/dist/{x-BNc1bVzp.js → x-u2oVmjN_.js} +1 -1
  140. package/package.json +10 -5
  141. package/dist/cdn/chunks/CloudEditor-CTNhzoZ1.js.map +0 -1
  142. package/dist/cdn/chunks/ParagraphEditor-BrzlI8vp.js.map +0 -1
  143. package/dist/cdn/chunks/TitleEditor-BiiEtH7x.js.map +0 -1
  144. package/dist/cdn/chunks/blockTypeIcons-DWhn7E7O.js +0 -22
  145. package/dist/cdn/chunks/de-DEg-6TsA.js.map +0 -1
  146. package/dist/cdn/chunks/dist-DFfcnJJB.js.map +0 -1
  147. package/dist/cdn/chunks/en-DpHxxBnH.js.map +0 -1
  148. package/dist/cdn/chunks/features-DV4PhoBs.js.map +0 -1
  149. package/dist/cdn/chunks/icons-LJ8U8lWI.js.map +0 -1
  150. package/dist/cdn/chunks/styles-CFnn-xE6.js.map +0 -1
  151. /package/dist/{dist-CmrXHeJS.js → dist-iLBdeBDR.js} +0 -0
  152. /package/dist/{emojiData-DcYt1YZ3.js → emojiData-PQyVa4bU.js} +0 -0
  153. /package/dist/{formatRelativeTime-MungD2xr.js → formatRelativeTime-WvH3Au71.js} +0 -0
  154. /package/dist/{liquid.browser-BohVA1YU.js → liquid.browser-CdMv1BTn.js} +0 -0
  155. /package/dist/{readableTextColor-Uc7ntzXo.js → readableTextColor-CY3SiRnt.js} +0 -0
  156. /package/dist/{styleConstants-Beu6EmBc.js → styleConstants-fWzlIIwN.js} +0 -0
@@ -1,23 +1,25 @@
1
1
  import { A as e, Dt as t, H as n, M as r, Mt as i, N as a, Ot as o, P as s, Q as c, S as l, V as u, Y as d, _ as f, b as p, c as m, d as h, et as g, g as _, h as v, it as y, j as b, m as x, p as S, t as C, u as w, v as T, x as E, y as D, z as O } from "./vue.runtime.esm-bundler-DpvJL-nX.js";
2
2
  import { t as k } from "./timeouts-BSGxjuUF.js";
3
- import { E as A, i as j } from "./dist-e0ylhlSV.js";
4
- import { P as M, S as N, t as P } from "./useEditorCore-JdLcaPeJ.js";
5
- import { s as F, t as I } from "./dist-CuyhAnuE.js";
6
- import { C as L, S as R, b as z, c as B, l as ee, r as te, s as V, t as H } from "./keys-BeW4IrXP.js";
7
- import { t as U } from "./useI18n-Jp3X6Q0t.js";
8
- import { n as W, t as G } from "./_plugin-vue_export-helper-GRmvIR5A.js";
9
- import { t as K } from "./check-Om8IxvJb.js";
10
- import { t as q } from "./circle-alert-De74azaX.js";
11
- import { a as J, c as ne, i as Y, n as X, o as re, r as ie, s as ae, t as oe } from "./styles-CdrFC7-K.js";
12
- import { t as Z } from "./clock-Dr7rX_PG.js";
13
- import { t as se } from "./loader-circle-IS16T05j.js";
14
- import { t as ce } from "./message-circle-3R472hDc.js";
15
- import { t as le } from "./send-DRkFf4hP.js";
16
- import { t as ue } from "./sparkles-CD7TiNiC.js";
17
- import { n as Q } from "./useCloudI18n-D0Fi0hBU.js";
18
- import { d as $ } from "./styleConstants-Beu6EmBc.js";
19
- import { _ as de, a as fe, c as pe, d as me, f as he, g as ge, h as _e, l as ve, m as ye, n as be, o as xe, p as Se, r as Ce, s as we, t as Te, v as Ee, y as De } from "./cloud-B1NAFg44.js";
20
- var Oe = W("save", [
3
+ import { E as A, i as j } from "./dist-DJmnUmW9.js";
4
+ import { P as M, S as ee, t as N } from "./useEditorCore-Dz-qbVXX.js";
5
+ import { s as P, t as F } from "./dist-B1IR0bpH.js";
6
+ import { C as te, c as I, i as L, l as R, n as z, u as ne, w as B, x as V } from "./keys-ciNfSSGj.js";
7
+ import { t as H } from "./useI18n-lb2DHDiu.js";
8
+ import { t as U } from "./createLucideIcon-C3pa2siy.js";
9
+ import { t as W } from "./check-Da05j8yl.js";
10
+ import { t as G } from "./circle-alert-DZuGWPX-.js";
11
+ import { a as K, c as re, i as q, l as ie, n as J, o as ae, r as oe, s as se, t as ce } from "./styles-B58wYIn4.js";
12
+ import { t as Y } from "./clock-CRp2sIub.js";
13
+ import { t as X } from "./loader-circle-DsY5Yg33.js";
14
+ import { t as Z } from "./message-circle-yElBbR2C.js";
15
+ import { t as le } from "./send-DH4oDQqC.js";
16
+ import { t as ue } from "./sparkles-CvRXGqFs.js";
17
+ import { t as de } from "./triangle-alert-aOXceTSe.js";
18
+ import { t as fe } from "./_plugin-vue_export-helper-B0hnzhyu.js";
19
+ import { n as Q } from "./useCloudI18n-BuIwR6OE.js";
20
+ import { d as $ } from "./styleConstants-fWzlIIwN.js";
21
+ import { _ as pe, a as me, c as he, d as ge, f as _e, g as ve, h as ye, l as be, m as xe, n as Se, o as Ce, p as we, r as Te, s as Ee, t as De, v as Oe, y as ke } from "./cloud-WfWdqZVK.js";
22
+ var Ae = U("save", [
21
23
  ["path", {
22
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",
23
25
  key: "1c8476"
@@ -33,10 +35,10 @@ var Oe = W("save", [
33
35
  ]);
34
36
  //#endregion
35
37
  //#region src/cloud/composables/useSnapshotPreview.ts
36
- function ke(e) {
38
+ function je(e) {
37
39
  let { authManager: t, editor: n, history: r, conditionPreview: i, autoSave: a, onError: o } = e, s = g(null), l = c(null), u = c(null), d = S(() => l.value !== null), f = S(() => s.value?.snapshots.value ?? []), p = S(() => s.value?.isLoading.value ?? !1), m = S(() => s.value?.isRestoring.value ?? !1);
38
40
  function h() {
39
- n.state.template?.id && !s.value && (s.value = ge({
41
+ n.state.template?.id && !s.value && (s.value = ve({
40
42
  authManager: t,
41
43
  templateId: n.state.template.id,
42
44
  onRestore: _,
@@ -84,7 +86,7 @@ function ke(e) {
84
86
  }
85
87
  //#endregion
86
88
  //#region src/cloud/composables/useCloudPanelState.ts
87
- function Ae() {
89
+ function Me() {
88
90
  let e = c(null), t = S({
89
91
  get: () => e.value === "ai-chat",
90
92
  set: (t) => e.value = t ? "ai-chat" : null
@@ -107,7 +109,7 @@ function Ae() {
107
109
  function h(t) {
108
110
  l.value = !1, e.value = e.value === t ? null : t;
109
111
  }
110
- return I(u, () => {
112
+ return F(u, () => {
111
113
  l.value = !1;
112
114
  }), {
113
115
  activePanel: e,
@@ -129,8 +131,8 @@ function Ae() {
129
131
  }
130
132
  //#endregion
131
133
  //#region src/cloud/composables/useCollabUndoWarning.ts
132
- function je(e) {
133
- let { isCollaborationEnabled: t, getCollaboratorCount: n, canUndo: r } = e, i = c(!1), a = c(!1), { start: o } = F(() => {
134
+ function Ne(e) {
135
+ let { isCollaborationEnabled: t, getCollaboratorCount: n, canUndo: r } = e, i = c(!1), a = c(!1), { start: o } = P(() => {
134
136
  a.value = !1;
135
137
  }, k, { immediate: !1 });
136
138
  function s() {
@@ -143,8 +145,8 @@ function je(e) {
143
145
  }
144
146
  //#endregion
145
147
  //#region src/cloud/composables/useCloudFeatureFlags.ts
146
- function Me(e) {
147
- let { planConfigInstance: t, aiConfig: n, editor: r } = e, i = S(() => t.hasFeature("ai_generation") && n.hasAnyMenuFeature.value), a = S(() => t.hasFeature("test_email")), o = S(() => !!r.state.template?.id), s = S(() => t.hasFeature("white_label")), l = S(() => t.config.value?.limits.max_templates ?? null), u = S(() => t.config.value?.template_count ?? 0), d = c(!1), f = c("idle"), p = c(""), { start: m } = F(() => {
148
+ function Pe(e) {
149
+ let { planConfigInstance: t, aiConfig: n, editor: r } = e, i = S(() => t.hasFeature("ai_generation") && n.hasAnyMenuFeature.value), a = S(() => t.hasFeature("test_email")), o = S(() => !!r.state.template?.id), s = S(() => t.hasFeature("white_label")), l = S(() => t.config.value?.limits.max_templates ?? null), u = S(() => t.config.value?.template_count ?? 0), d = c(!1), f = c("idle"), p = c(""), { start: m } = P(() => {
148
150
  f.value = "idle";
149
151
  }, 3e3, { immediate: !1 });
150
152
  return {
@@ -162,7 +164,7 @@ function Me(e) {
162
164
  }
163
165
  //#endregion
164
166
  //#region src/cloud/composables/useCloudMediaLibrary.ts
165
- function Ne(e) {
167
+ function Fe(e) {
166
168
  let { onRequestMedia: t, mediaLibraryOpen: n, mediaLibraryAccept: r } = e, i = null;
167
169
  async function a() {
168
170
  if (t) {
@@ -197,30 +199,30 @@ function Ne(e) {
197
199
  }
198
200
  //#endregion
199
201
  //#region src/cloud/composables/useCloudInitialization.ts
200
- function Pe(e) {
201
- let { config: t, translations: n, fontsManager: r, emit: i, getCommentsSidebar: o } = e, s = c(!0), l = c(!1), u = c(null), d = !1, f = { value: null }, p = null, m = null, h = new Te({
202
+ function Ie(e) {
203
+ let { config: t, translations: n, fontsManager: r, emit: i, getCommentsSidebar: o } = e, s = c(!0), l = c(!1), u = c(null), d = !1, f = { value: null }, p = null, m = null, h = new De({
202
204
  ...t.auth,
203
205
  onError: t.onError
204
- }), g = ye({
206
+ }), g = xe({
205
207
  authManager: h,
206
208
  onError: t.onError
207
- }), _ = c(/* @__PURE__ */ new Map()), v = me({
209
+ }), _ = c(/* @__PURE__ */ new Map()), v = ge({
208
210
  authManager: h,
209
211
  defaultFontFamily: t.fonts?.defaultFont,
210
212
  templateDefaults: t.templateDefaults,
211
213
  onError: t.onError,
212
214
  lockedBlocks: _
213
- }), y = De({
215
+ }), y = ke({
214
216
  authManager: h,
215
217
  onError: t.onError
216
218
  });
217
- t.mcp?.enabled && Se({
219
+ t.mcp?.enabled && we({
218
220
  editor: v,
219
221
  channel: y.channel,
220
222
  onOperation: t.mcp.onOperation
221
223
  });
222
224
  let b = null;
223
- t.collaboration?.enabled && (b = xe({
225
+ t.collaboration?.enabled && (b = Ce({
224
226
  authManager: h,
225
227
  editor: v,
226
228
  channel: y.channel,
@@ -231,8 +233,8 @@ function Pe(e) {
231
233
  onBlockUnlocked: t.collaboration.onBlockUnlocked
232
234
  }), O(() => b.lockedBlocks.value, (e) => {
233
235
  _.value = e;
234
- }, { immediate: !0 }), we(v, b));
235
- let x = S(() => !!t.collaboration?.enabled && g.hasFeature("collaboration")), C = P({
236
+ }, { immediate: !0 }), Ee(v, b));
237
+ let x = S(() => !!t.collaboration?.enabled && g.hasFeature("collaboration")), C = N({
236
238
  editor: v,
237
239
  config: {
238
240
  uiTheme: t.uiTheme,
@@ -242,6 +244,7 @@ function Pe(e) {
242
244
  mergeTags: t.mergeTags,
243
245
  displayConditions: t.displayConditions,
244
246
  onRequestMedia: null,
247
+ accessibility: re(t),
245
248
  onSave: () => {
246
249
  f.value?.().catch((e) => {
247
250
  t.onError?.(e);
@@ -260,13 +263,13 @@ function Pe(e) {
260
263
  },
261
264
  themeExtraStyles: () => ({ "--tpl-drop-text": `"${n.canvas.dropHere}"` }),
262
265
  keyboardOptions: { onBeforeUndo: () => m?.showCollabUndoWarning() }
263
- }), w = je({
266
+ }), w = Ne({
264
267
  isCollaborationEnabled: x,
265
268
  getCollaboratorCount: () => b?.collaborators.value.length ?? 0,
266
269
  canUndo: C.history.canUndo
267
270
  });
268
271
  m = w;
269
- let T = ke({
272
+ let T = je({
270
273
  authManager: h,
271
274
  editor: v,
272
275
  history: C.history,
@@ -275,24 +278,24 @@ function Pe(e) {
275
278
  onError: t.onError
276
279
  });
277
280
  p = T;
278
- let E = Ae(), D = fe(t.ai), k = Me({
281
+ let E = Me(), D = me(t.ai), k = Pe({
279
282
  planConfigInstance: g,
280
283
  aiConfig: D,
281
284
  editor: v
282
- }), A = Ne({
285
+ }), A = Fe({
283
286
  onRequestMedia: t.onRequestMedia,
284
287
  mediaLibraryOpen: E.mediaLibraryOpen,
285
288
  mediaLibraryAccept: E.mediaLibraryAccept
286
289
  });
287
- N({
290
+ ee({
288
291
  onBlockMove: v.moveBlock,
289
292
  onBlockAdd: v.addBlock
290
293
  });
291
- let j = he({
294
+ let j = _e({
292
295
  authManager: h,
293
296
  getFontsConfig: () => t.fonts,
294
297
  canUseCustomFonts: () => g.hasFeature("custom_fonts")
295
- }), F = Ee({
298
+ }), P = Oe({
296
299
  authManager: h,
297
300
  getTemplateId: () => v.state.template?.id ?? null,
298
301
  save: () => v.save(),
@@ -300,7 +303,7 @@ function Pe(e) {
300
303
  onError: t.onError,
301
304
  isAuthReady: l,
302
305
  onBeforeTestEmail: t.onBeforeTestEmail
303
- }), I = ve({
306
+ }), F = be({
304
307
  authManager: h,
305
308
  getTemplateId: () => v.state.template?.id ?? null,
306
309
  getSocketId: () => y.getSocketId(),
@@ -309,56 +312,56 @@ function Pe(e) {
309
312
  isAuthReady: l,
310
313
  hasCommentingFeature: () => t.commenting !== !1 && g.hasFeature("commenting")
311
314
  });
312
- pe({
313
- comments: I,
315
+ he({
316
+ comments: F,
314
317
  channel: y.channel
315
318
  });
316
- let B = _e({
319
+ let R = ye({
317
320
  authManager: h,
318
321
  onError: t.onError
319
- }), U = c(!1), W = c(null), G = c(!1), K = de({
322
+ }), H = c(!1), U = c(null), W = c(!1), G = pe({
320
323
  authManager: h,
321
324
  getTemplateId: () => v.state.template?.id ?? null
322
325
  });
323
- function q(e) {
326
+ function K(e) {
324
327
  E.commentsOpen.value = !0, queueMicrotask(() => {
325
328
  o()?.filterByBlock(e);
326
329
  });
327
330
  }
328
- a(z, A.handleRequestMedia), a(te, h), a(H, D), a(ee, I), a(R, B), a(L, K), a(V, {
331
+ a(V, A.handleRequestMedia), a(L, h), a(z, D), a(ne, F), a(te, R), a(B, G), a(I, {
329
332
  plan: g,
330
333
  ai: D,
331
334
  comments: {
332
- getBlockCount: (e) => I.commentCountByBlock.value.get(e) ?? 0,
333
- openForBlock: q
335
+ getBlockCount: (e) => F.commentCountByBlock.value.get(e) ?? 0,
336
+ openForBlock: K
334
337
  },
335
338
  savedModules: {
336
339
  openSaveDialog: (e) => {
337
- W.value = e ?? null, U.value = !0;
340
+ U.value = e ?? null, H.value = !0;
338
341
  },
339
342
  openBrowser: () => {
340
- G.value = !0;
343
+ W.value = !0;
341
344
  },
342
- moduleCount: S(() => B.modules.value.length)
345
+ moduleCount: S(() => R.modules.value.length)
343
346
  }
344
347
  });
345
- function J(e) {
348
+ function q(e) {
346
349
  g.hasFeature("theme_customization") && (C.themeOverrides.value = e);
347
350
  }
348
- function ne(e) {
351
+ function ie(e) {
349
352
  v.setUiTheme(e);
350
353
  }
351
- async function Y() {
354
+ async function J() {
352
355
  s.value = !0, u.value = null;
353
356
  try {
354
357
  if (await h.initialize(), d) return;
355
358
  l.value = !0;
356
- let e = await be({ authManager: h });
359
+ let e = await Se({ authManager: h });
357
360
  if (d) return;
358
361
  if (!e.api.ok) throw Error("Health check failed: API is not reachable");
359
362
  if (!e.auth.ok) throw Error(`Health check failed: authentication error${e.auth.error ? ` - ${e.auth.error}` : ""}`);
360
363
  if (e.websocket.ok || M.warn("WebSocket health check failed:", e.websocket.error ?? "unknown error", "-- real-time features will be disabled."), await g.fetchConfig(), d) return;
361
- r.setCustomFontsEnabled(g.hasFeature("custom_fonts")), t.customBlocks?.length && g.hasFeature("custom_blocks") && C.registerCustomBlocks(t.customBlocks), t.theme && g.hasFeature("theme_customization") && (C.themeOverrides.value = t.theme), t.modules !== !1 && g.hasFeature("saved_modules") && B.loadModules(), i("ready");
364
+ r.setCustomFontsEnabled(g.hasFeature("custom_fonts")), t.customBlocks?.length && g.hasFeature("custom_blocks") && C.registerCustomBlocks(t.customBlocks), t.theme && g.hasFeature("theme_customization") && (C.themeOverrides.value = t.theme), t.modules !== !1 && g.hasFeature("saved_modules") && R.loadModules(), i("ready");
362
365
  } catch (e) {
363
366
  if (d) return;
364
367
  let n = e instanceof Error ? e : Error("Initialization failed", { cause: e });
@@ -367,7 +370,7 @@ function Pe(e) {
367
370
  d || (s.value = !1);
368
371
  }
369
372
  }
370
- function X() {
373
+ function ae() {
371
374
  d = !0, r.cleanupFontLinks(), y.disconnect(), C.destroy(), t.onUnmount?.();
372
375
  }
373
376
  return {
@@ -386,27 +389,27 @@ function Pe(e) {
386
389
  featureFlags: k,
387
390
  mediaLib: A,
388
391
  exporter: j,
389
- testEmail: F,
390
- commentsInstance: I,
391
- savedModulesHeadless: B,
392
- scoringInstance: K,
392
+ testEmail: P,
393
+ commentsInstance: F,
394
+ savedModulesHeadless: R,
395
+ scoringInstance: G,
393
396
  panelState: E,
394
397
  snapshotPreview: T,
395
398
  collabWarning: w,
396
- showSaveModuleDialog: U,
397
- showModuleBrowserModal: G,
398
- saveModulePreSelectedBlockId: W,
399
+ showSaveModuleDialog: H,
400
+ showModuleBrowserModal: W,
401
+ saveModulePreSelectedBlockId: U,
399
402
  onSaveHook: f,
400
- initialize: Y,
401
- destroy: X,
402
- setThemeOverrides: J,
403
- setUiTheme: ne,
404
- openCommentsForBlock: q
403
+ initialize: J,
404
+ destroy: ae,
405
+ setThemeOverrides: q,
406
+ setUiTheme: ie,
407
+ openCommentsForBlock: K
405
408
  };
406
409
  }
407
410
  //#endregion
408
411
  //#region src/utils/preRenderCustomBlocks.ts
409
- async function Fe(e, t) {
412
+ async function Le(e, t) {
410
413
  let n = async (e) => {
411
414
  if (A(e)) {
412
415
  let n = e;
@@ -425,10 +428,10 @@ async function Fe(e, t) {
425
428
  }
426
429
  //#endregion
427
430
  //#region src/cloud/composables/useCloudLifecycle.ts
428
- function Ie(e) {
431
+ function Re(e) {
429
432
  let { config: t, editor: n, websocket: r, planConfigInstance: i, snapshotPreview: a, core: o, exporter: s, featureFlags: c, isDestroyed: l } = e;
430
433
  function u() {
431
- return Ce(i.config.value.websocket);
434
+ return Te(i.config.value.websocket);
432
435
  }
433
436
  async function d(e) {
434
437
  let i = await n.create(e);
@@ -441,7 +444,7 @@ function Ie(e) {
441
444
  async function p() {
442
445
  c.isSaveExporting.value = !0, c.saveStatus.value = "idle";
443
446
  try {
444
- if (await Fe(n.content.value, o.registry), l()) throw Error("Component unmounted during save");
447
+ if (await Le(n.content.value, o.registry), l()) throw Error("Component unmounted during save");
445
448
  let e = await n.save();
446
449
  if (l()) throw Error("Component unmounted during save");
447
450
  a.initSnapshotHistory(), a.snapshotHistoryInstance.value?.loadSnapshots();
@@ -467,8 +470,77 @@ function Ie(e) {
467
470
  };
468
471
  }
469
472
  //#endregion
470
- //#region src/cloud/components/CloudHeader.vue?vue&type=script&setup=true&lang.ts
471
- var Le = {
473
+ //#region src/cloud/composables/useCloudSaveGate.ts
474
+ function ze(e) {
475
+ let t = c(!1), n = null, r = S(() => e.planConfig.value?.accessibility?.blockOnError === !0), i = S(() => r.value ? e.issues.value.filter((e) => e.severity === "error") : []), a = S(() => i.value.length > 0);
476
+ async function o(e) {
477
+ return a.value ? (n = e, t.value = !0, !1) : (await e(), !0);
478
+ }
479
+ async function s() {
480
+ let e = n;
481
+ n = null, t.value = !1, e && await e();
482
+ }
483
+ function l() {
484
+ n = null, t.value = !1;
485
+ }
486
+ return {
487
+ shouldBlock: a,
488
+ blockingIssues: i,
489
+ modalOpen: t,
490
+ tryRunSave: o,
491
+ confirmAndSave: s,
492
+ cancel: l
493
+ };
494
+ }
495
+ //#endregion
496
+ //#region src/cloud/components/CloudSaveGateModal.vue?vue&type=script&setup=true&lang.ts
497
+ var Be = ["aria-label"], Ve = { 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)]" }, He = { class: "tpl:flex tpl:items-center tpl:gap-2" }, Ue = { class: "tpl:m-0 tpl:text-base tpl:font-semibold tpl:text-[var(--tpl-text)]" }, We = { class: "tpl:m-0 tpl:text-sm tpl:text-[var(--tpl-text-muted)]" }, Ge = { 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" }, Ke = { class: "tpl:text-xs tpl:text-[var(--tpl-text)]" }, qe = { class: "tpl:font-mono tpl:text-[10px] tpl:text-[var(--tpl-text-dim)]" }, Je = { class: "tpl:flex tpl:justify-end tpl:gap-2" }, Ye = /* @__PURE__ */ l({
498
+ __name: "CloudSaveGateModal",
499
+ props: {
500
+ open: { type: Boolean },
501
+ issues: {}
502
+ },
503
+ emits: ["cancel", "confirm"],
504
+ setup(e, { emit: t }) {
505
+ let n = t, { t: a } = Q();
506
+ return (t, o) => (r(), v(C, {
507
+ "enter-active-class": "tpl:transition-opacity tpl:duration-150",
508
+ "leave-active-class": "tpl:transition-opacity tpl:duration-150",
509
+ "enter-from-class": "tpl:opacity-0",
510
+ "leave-to-class": "tpl:opacity-0"
511
+ }, {
512
+ default: u(() => [e.open ? (r(), f("div", {
513
+ key: 0,
514
+ role: "dialog",
515
+ "aria-modal": "true",
516
+ "aria-label": y(a).saveGate.title,
517
+ class: "tpl:fixed tpl:inset-0 tpl:z-50 tpl:flex tpl:items-center tpl:justify-center tpl:bg-black/40 tpl:p-6",
518
+ onClick: o[2] ||= w((e) => n("cancel"), ["self"])
519
+ }, [x("div", Ve, [
520
+ x("header", He, [p(y(de), {
521
+ size: 18,
522
+ "stroke-width": 2,
523
+ class: "tpl:text-[var(--tpl-warning)]"
524
+ }), x("h2", Ue, i(y(a).saveGate.title), 1)]),
525
+ x("p", We, i(y(a).saveGate.body), 1),
526
+ x("ul", Ge, [(r(!0), f(h, null, s(e.issues, (e) => (r(), f("li", {
527
+ key: `${e.ruleId}-${e.blockId ?? "template"}`,
528
+ class: "tpl:flex tpl:flex-col tpl:gap-0.5 tpl:rounded tpl:px-2 tpl:py-1.5"
529
+ }, [x("span", Ke, i(e.message), 1), x("span", qe, i(e.ruleId), 1)]))), 128))]),
530
+ x("footer", Je, [x("button", {
531
+ type: "button",
532
+ 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)]",
533
+ onClick: o[0] ||= (e) => n("cancel")
534
+ }, i(y(a).saveGate.cancel), 1), x("button", {
535
+ type: "button",
536
+ 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",
537
+ onClick: o[1] ||= (e) => n("confirm")
538
+ }, i(y(a).saveGate.confirm), 1)])
539
+ ])], 8, Be)) : _("", !0)]),
540
+ _: 1
541
+ }));
542
+ }
543
+ }), Xe = {
472
544
  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",
473
545
  style: {
474
546
  "background-color": "color-mix(in srgb, var(--tpl-bg) 80%, transparent)",
@@ -477,24 +549,24 @@ var Le = {
477
549
  "box-shadow": "var(--tpl-shadow-md)",
478
550
  "border-bottom": "1px solid var(--tpl-border)"
479
551
  }
480
- }, Re = { class: "tpl-header-left tpl:flex tpl:min-w-[200px] tpl:items-center tpl:gap-3" }, ze = {
552
+ }, Ze = { class: "tpl-header-left tpl:flex tpl:min-w-[200px] tpl:items-center tpl:gap-3" }, Qe = {
481
553
  key: 0,
482
554
  class: "tpl:text-xs tpl:opacity-60 tpl:text-[var(--tpl-text-muted)]"
483
- }, Be = { class: "tpl-header-center tpl:flex tpl:items-center tpl:justify-center tpl:gap-10" }, Ve = { class: "tpl-header-right tpl:flex tpl:min-w-[200px] tpl:items-center tpl:justify-end tpl:gap-3" }, He = ["data-tooltip"], Ue = {
555
+ }, $e = { class: "tpl-header-center tpl:flex tpl:items-center tpl:justify-center tpl:gap-10" }, et = { class: "tpl-header-right tpl:flex tpl:min-w-[200px] tpl:items-center tpl:justify-end tpl:gap-3" }, tt = ["data-tooltip"], nt = {
484
556
  key: 1,
485
557
  "aria-live": "polite",
486
558
  class: "tpl-status tpl:flex tpl:items-center tpl:gap-1.5 tpl:text-xs tpl:text-[var(--tpl-success)]"
487
- }, We = {
559
+ }, rt = {
488
560
  key: 2,
489
561
  "aria-live": "polite",
490
562
  class: "tpl-status tpl:flex tpl:items-center tpl:gap-1.5 tpl:text-xs tpl:text-[var(--tpl-text-muted)]"
491
- }, Ge = ["aria-label", "aria-expanded"], Ke = {
563
+ }, it = ["aria-label", "aria-expanded"], at = {
492
564
  key: 0,
493
565
  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)]"
494
- }, qe = ["aria-expanded"], Je = {
566
+ }, ot = ["aria-expanded"], st = {
495
567
  key: 0,
496
568
  class: "tpl:absolute tpl:right-0 tpl:top-full tpl:z-50 tpl:mt-1 tpl:origin-top-right"
497
- }, Ye = ["disabled"], Xe = ["disabled"], Ze = /* @__PURE__ */ l({
569
+ }, ct = ["disabled"], lt = ["disabled"], ut = /* @__PURE__ */ l({
498
570
  __name: "CloudHeader",
499
571
  props: {
500
572
  editor: {},
@@ -512,22 +584,22 @@ var Le = {
512
584
  },
513
585
  emits: ["save"],
514
586
  setup(e) {
515
- let n = E(() => import("./CollaboratorBar-Dv7VT09N.js")), a = E(() => import("./SnapshotHistory-OqEkaA0W.js")), s = E(() => import("./AiFeatureMenu-vatvCD-m.js")), { t: c, format: l } = Q();
516
- return (d, m) => (r(), f("header", Le, [
517
- x("div", Re, [e.featureFlags.templateLimit.value === null ? _("", !0) : (r(), f("span", ze, i(y(l)(y(c).header.templatesUsed, {
587
+ let n = E(() => import("./CollaboratorBar-BcSxXVY-.js")), a = E(() => import("./SnapshotHistory-QBTbVrEK.js")), s = E(() => import("./AiFeatureMenu-Ceewb3uB.js")), { t: c, format: l } = Q();
588
+ return (d, m) => (r(), f("header", Xe, [
589
+ x("div", Ze, [e.featureFlags.templateLimit.value === null ? _("", !0) : (r(), f("span", Qe, i(y(l)(y(c).header.templatesUsed, {
518
590
  used: e.featureFlags.templateCount.value,
519
591
  max: e.featureFlags.templateLimit.value
520
592
  })), 1))]),
521
- x("div", Be, [
522
- p(Y, {
593
+ x("div", $e, [
594
+ p(q, {
523
595
  viewport: e.editor.state.viewport,
524
596
  onChange: e.editor.setViewport
525
597
  }, null, 8, ["viewport", "onChange"]),
526
- p(X, {
598
+ p(J, {
527
599
  "dark-mode": e.editor.state.darkMode,
528
600
  onChange: e.editor.setDarkMode
529
601
  }, null, 8, ["dark-mode", "onChange"]),
530
- p(ie, {
602
+ p(oe, {
531
603
  "preview-mode": e.editor.state.previewMode,
532
604
  onChange: e.editor.setPreviewMode
533
605
  }, null, 8, ["preview-mode", "onChange"]),
@@ -551,19 +623,19 @@ var Le = {
551
623
  "onNavigate"
552
624
  ])) : _("", !0)
553
625
  ]),
554
- x("div", Ve, [
626
+ x("div", et, [
555
627
  e.featureFlags.saveStatus.value === "error" ? (r(), f("div", {
556
628
  key: 0,
557
629
  "aria-live": "assertive",
558
630
  class: "tpl-tooltip tpl-status tpl:flex tpl:items-center tpl:gap-1.5 tpl:text-xs tpl:text-[var(--tpl-danger)]",
559
631
  "data-tooltip": e.featureFlags.saveErrorMessage.value
560
- }, [p(y(q), {
632
+ }, [p(y(G), {
561
633
  size: 12,
562
634
  "stroke-width": 2.5
563
- }), D(" " + i(y(c).header.saveFailed), 1)], 8, He)) : e.featureFlags.saveStatus.value === "saved" ? (r(), f("div", Ue, [p(y(K), {
635
+ }), D(" " + i(y(c).header.saveFailed), 1)], 8, tt)) : e.featureFlags.saveStatus.value === "saved" ? (r(), f("div", nt, [p(y(W), {
564
636
  size: 12,
565
637
  "stroke-width": 2.5
566
- }), D(" " + i(y(c).header.saved), 1)])) : e.editor.state.isDirty ? (r(), f("div", We, [m[4] ||= x("span", { class: "tpl-pulse tpl:size-1.5 tpl:rounded-full tpl:bg-[var(--tpl-primary)]" }, null, -1), D(" " + i(y(c).header.unsaved), 1)])) : _("", !0),
638
+ }), D(" " + i(y(c).header.saved), 1)])) : e.editor.state.isDirty ? (r(), f("div", rt, [m[4] ||= x("span", { class: "tpl-pulse tpl:size-1.5 tpl:rounded-full tpl:bg-[var(--tpl-primary)]" }, null, -1), D(" " + i(y(c).header.unsaved), 1)])) : _("", !0),
567
639
  e.commentsInstance.isEnabled.value && e.featureFlags.hasTemplateSaved.value ? (r(), f("button", {
568
640
  key: 3,
569
641
  "aria-label": e.commentsInstance.unresolvedCount.value > 0 ? `${y(c).comments.button} (${e.commentsInstance.unresolvedCount.value})` : y(c).comments.button,
@@ -576,13 +648,13 @@ var Le = {
576
648
  }),
577
649
  onClick: m[0] ||= (t) => e.panelState.commentsOpen.value = !e.panelState.commentsOpen.value
578
650
  }, [
579
- p(y(ce), {
651
+ p(y(Z), {
580
652
  size: 16,
581
653
  "stroke-width": 2
582
654
  }),
583
655
  D(" " + i(y(c).comments.button) + " ", 1),
584
- e.commentsInstance.unresolvedCount.value > 0 && !e.panelState.commentsOpen.value ? (r(), f("span", Ke, i(e.commentsInstance.unresolvedCount.value), 1)) : _("", !0)
585
- ], 14, Ge)) : _("", !0),
656
+ e.commentsInstance.unresolvedCount.value > 0 && !e.panelState.commentsOpen.value ? (r(), f("span", at, i(e.commentsInstance.unresolvedCount.value), 1)) : _("", !0)
657
+ ], 14, it)) : _("", !0),
586
658
  e.featureFlags.canUseAiGeneration.value && e.featureFlags.hasTemplateSaved.value ? (r(), f("div", {
587
659
  key: 4,
588
660
  ref: (t) => e.panelState.aiMenuRef.value = t,
@@ -595,7 +667,7 @@ var Le = {
595
667
  size: 16,
596
668
  "stroke-width": 2,
597
669
  class: "tpl-ai-btn-icon"
598
- }), D(" " + i(y(c).aiChat.button), 1)], 10, qe), p(C, {
670
+ }), D(" " + i(y(c).aiChat.button), 1)], 10, ot), p(C, {
599
671
  "enter-active-class": "tpl:transition-all tpl:duration-150 tpl:ease-out",
600
672
  "enter-from-class": "tpl:scale-95 tpl:opacity-0",
601
673
  "enter-to-class": "tpl:scale-100 tpl:opacity-100",
@@ -603,7 +675,7 @@ var Le = {
603
675
  "leave-from-class": "tpl:scale-100 tpl:opacity-100",
604
676
  "leave-to-class": "tpl:scale-95 tpl:opacity-0"
605
677
  }, {
606
- default: u(() => [e.panelState.aiMenuOpen.value ? (r(), f("div", Je, [p(y(s), {
678
+ default: u(() => [e.panelState.aiMenuOpen.value ? (r(), f("div", st, [p(y(s), {
607
679
  "active-feature": e.panelState.activeAiFeature.value,
608
680
  onSelect: e.panelState.handleAiFeatureSelect
609
681
  }, null, 8, ["active-feature", "onSelect"])])) : _("", !0)]),
@@ -619,7 +691,7 @@ var Le = {
619
691
  },
620
692
  disabled: e.testEmail.isSending.value || !e.featureFlags.hasTemplateSaved.value,
621
693
  onClick: m[2] ||= (t) => e.panelState.testEmailModalOpen.value = !0
622
- }, [e.testEmail.isSending.value ? (r(), v(y(se), {
694
+ }, [e.testEmail.isSending.value ? (r(), v(y(X), {
623
695
  key: 1,
624
696
  class: "tpl-spinner",
625
697
  size: 16,
@@ -628,7 +700,7 @@ var Le = {
628
700
  key: 0,
629
701
  size: 16,
630
702
  "stroke-width": 2
631
- })), D(" " + i(y(c).testEmail.button), 1)], 10, Ye)) : _("", !0),
703
+ })), D(" " + i(y(c).testEmail.button), 1)], 10, ct)) : _("", !0),
632
704
  x("button", {
633
705
  class: t(y($)),
634
706
  style: {
@@ -638,20 +710,20 @@ var Le = {
638
710
  },
639
711
  disabled: e.isSaveDisabled,
640
712
  onClick: m[3] ||= (e) => d.$emit("save")
641
- }, [e.isSaving ? (r(), v(y(se), {
713
+ }, [e.isSaving ? (r(), v(y(X), {
642
714
  key: 1,
643
715
  class: "tpl-spinner",
644
716
  size: 16,
645
717
  "stroke-width": 2
646
- })) : (r(), v(y(Oe), {
718
+ })) : (r(), v(y(Ae), {
647
719
  key: 0,
648
720
  size: 16,
649
721
  "stroke-width": 2
650
- })), D(" " + i(e.isSaving ? y(c).header.saving : y(c).header.save), 1)], 10, Xe)
722
+ })), D(" " + i(e.isSaving ? y(c).header.saving : y(c).header.save), 1)], 10, lt)
651
723
  ])
652
724
  ]));
653
725
  }
654
- }), Qe = /* @__PURE__ */ l({
726
+ }), dt = /* @__PURE__ */ l({
655
727
  __name: "CloudPanels",
656
728
  props: {
657
729
  config: {},
@@ -674,7 +746,7 @@ var Le = {
674
746
  "module-insert"
675
747
  ],
676
748
  setup(e, { expose: t, emit: n }) {
677
- let i = E(() => import("./AiChatSidebar-Cg206ewI.js")), a = E(() => import("./CommentsSidebar-BAma2apG.js")), o = E(() => import("./DesignReferenceSidebar-B8DDnLHQ.js")), s = E(() => import("./TemplateScoringPanel-BmAHdgLF.js")), l = E(() => import("./TestEmailModal-CvEK6MTy.js")), u = E(() => import("./SaveModuleDialog-CZXltahx.js")), d = E(() => import("./ModuleBrowserModal-DAnqdlyq.js")), m = E(async () => (await import("@templatical/media-library")).MediaLibraryModal), g = n;
749
+ let i = E(() => import("./AiChatSidebar-Br9dhkIB.js")), a = E(() => import("./CommentsSidebar-DceMRyIS.js")), o = E(() => import("./DesignReferenceSidebar-50qFipmW.js")), s = E(() => import("./TemplateScoringPanel-4GTNHej5.js")), l = E(() => import("./TestEmailModal-DaDMACHY.js")), u = E(() => import("./SaveModuleDialog-Df__VToK.js")), d = E(() => import("./ModuleBrowserModal-BnSdG4DE.js")), m = E(async () => (await import("@templatical/media-library")).MediaLibraryModal), g = n;
678
750
  function b(e, t, n) {
679
751
  t.history.record(), n.setContent(e), t.conditionPreview.reset();
680
752
  }
@@ -748,23 +820,23 @@ var Le = {
748
820
  ])
749
821
  ], 64));
750
822
  }
751
- }), $e = {
823
+ }), ft = {
752
824
  key: 0,
753
825
  class: "tpl-loading tpl:absolute tpl:inset-0 tpl:z-overlay tpl:flex tpl:flex-col tpl:bg-[var(--tpl-bg)]"
754
- }, et = { class: "tpl:flex tpl:flex-1 tpl:overflow-hidden" }, tt = { 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)]" }, nt = /* @__PURE__ */ l({
826
+ }, pt = { class: "tpl:flex tpl:flex-1 tpl:overflow-hidden" }, mt = { 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)]" }, ht = /* @__PURE__ */ l({
755
827
  __name: "CloudLoadingOverlay",
756
828
  props: { visible: { type: Boolean } },
757
829
  setup(e) {
758
- return (t, n) => e.visible ? (r(), f("div", $e, [n[1] ||= T("<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", et, [x("div", tt, [(r(), f(h, null, s(5, (e) => x("div", {
830
+ return (t, n) => e.visible ? (r(), f("div", ft, [n[1] ||= T("<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", pt, [x("div", mt, [(r(), f(h, null, s(5, (e) => x("div", {
759
831
  key: e,
760
832
  class: "tpl-shimmer tpl:size-7 tpl:rounded-[var(--tpl-radius-sm)]"
761
833
  })), 64))]), n[0] ||= T("<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)])])) : _("", !0);
762
834
  }
763
- }), rt = {
835
+ }), gt = {
764
836
  key: 0,
765
837
  role: "alert",
766
838
  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)]"
767
- }, it = { class: "tpl:flex tpl:size-16 tpl:items-center tpl:justify-center tpl:rounded-full tpl:bg-[var(--tpl-danger-light)]" }, at = { class: "tpl:flex tpl:flex-col tpl:items-center tpl:gap-2 tpl:text-center" }, ot = { 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({
839
+ }, _t = { class: "tpl:flex tpl:size-16 tpl:items-center tpl:justify-center tpl:rounded-full tpl:bg-[var(--tpl-danger-light)]" }, vt = { class: "tpl:flex tpl:flex-col tpl:items-center tpl:gap-2 tpl:text-center" }, yt = { class: "tpl:text-lg tpl:font-semibold tpl:text-[var(--tpl-text)]" }, bt = { class: "tpl:max-w-md tpl:text-sm tpl:text-[var(--tpl-text-muted)]" }, xt = /* @__PURE__ */ l({
768
840
  __name: "CloudErrorOverlay",
769
841
  props: {
770
842
  error: {},
@@ -779,13 +851,13 @@ var Le = {
779
851
  function s(e) {
780
852
  return "isNotFound" in e && !!e.isNotFound;
781
853
  }
782
- return (t, c) => e.visible && e.error ? (r(), f("div", rt, [
783
- x("div", it, [p(y(q), {
854
+ return (t, c) => e.visible && e.error ? (r(), f("div", gt, [
855
+ x("div", _t, [p(y(G), {
784
856
  size: 32,
785
857
  "stroke-width": 1.5,
786
858
  class: "tpl:text-[var(--tpl-danger)]"
787
859
  })]),
788
- x("div", at, [x("h2", ot, i(y(a).error.title), 1), x("p", st, i(o(e.error)), 1)]),
860
+ x("div", vt, [x("h2", yt, i(y(a).error.title), 1), x("p", bt, i(o(e.error)), 1)]),
789
861
  s(e.error) ? _("", !0) : (r(), f("button", {
790
862
  key: 0,
791
863
  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)]",
@@ -793,20 +865,20 @@ var Le = {
793
865
  }, i(y(a).error.retry), 1))
794
866
  ])) : _("", !0);
795
867
  }
796
- }), lt = {
868
+ }), St = {
797
869
  key: 0,
798
870
  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)]"
799
- }, ut = { 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" }, ft = /* @__PURE__ */ l({
871
+ }, Ct = { class: "tpl:flex tpl:items-center tpl:gap-2 tpl:text-sm tpl:text-[var(--tpl-text)]" }, wt = { class: "tpl:flex tpl:items-center tpl:gap-2" }, Tt = /* @__PURE__ */ l({
800
872
  __name: "SnapshotPreviewBanner",
801
873
  props: { visible: { type: Boolean } },
802
874
  emits: ["cancel", "confirm"],
803
875
  setup(e, { emit: t }) {
804
876
  let n = t, { t: a } = Q();
805
- return (t, o) => e.visible ? (r(), f("div", lt, [x("div", ut, [p(y(Z), {
877
+ return (t, o) => e.visible ? (r(), f("div", St, [x("div", Ct, [p(y(Y), {
806
878
  size: 18,
807
879
  "stroke-width": 2,
808
880
  class: "tpl:text-[var(--tpl-primary)]"
809
- }), x("span", null, i(y(a).snapshotPreview.message), 1)]), x("div", dt, [x("button", {
881
+ }), x("span", null, i(y(a).snapshotPreview.message), 1)]), x("div", wt, [x("button", {
810
882
  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)]",
811
883
  style: { "background-color": "transparent" },
812
884
  onClick: o[0] ||= (e) => n("cancel")
@@ -815,7 +887,7 @@ var Le = {
815
887
  onClick: o[1] ||= (e) => n("confirm")
816
888
  }, i(y(a).snapshotPreview.restore), 1)])])) : _("", !0);
817
889
  }
818
- }), pt = {
890
+ }), Et = {
819
891
  key: 0,
820
892
  role: "status",
821
893
  "aria-live": "polite",
@@ -825,14 +897,14 @@ var Le = {
825
897
  color: "var(--tpl-text)",
826
898
  border: "1px solid var(--tpl-warning)"
827
899
  }
828
- }, mt = /* @__PURE__ */ l({
900
+ }, Dt = /* @__PURE__ */ l({
829
901
  __name: "CollabUndoToast",
830
902
  props: { visible: { type: Boolean } },
831
903
  setup(e) {
832
- let { t } = U();
833
- return (n, a) => e.visible ? (r(), f("div", pt, i(y(t).history.collabWarning), 1)) : _("", !0);
904
+ let { t } = H();
905
+ return (n, a) => e.visible ? (r(), f("div", Et, i(y(t).history.collabWarning), 1)) : _("", !0);
834
906
  }
835
- }), ht = ["data-tpl-theme"], gt = { class: "tpl:sticky tpl:top-0 tpl:z-40 tpl:h-0" }, _t = { class: "tpl-main tpl:flex tpl:justify-center tpl:p-8" }, vt = ["aria-label"], yt = /* @__PURE__ */ G(/* @__PURE__ */ l({
907
+ }), Ot = ["data-tpl-theme"], kt = { class: "tpl:sticky tpl:top-0 tpl:z-40 tpl:h-0" }, At = { class: "tpl-main tpl:flex tpl:justify-center tpl:p-8" }, jt = ["aria-label"], Mt = /* @__PURE__ */ fe(/* @__PURE__ */ l({
836
908
  __name: "CloudEditor",
837
909
  props: {
838
910
  config: {},
@@ -843,54 +915,60 @@ var Le = {
843
915
  emits: ["ready"],
844
916
  setup(s, { expose: l, emit: d }) {
845
917
  let h = s;
846
- a(B, h.cloudTranslations);
847
- let g = d, S = c(null), w = Pe({
918
+ a(R, h.cloudTranslations);
919
+ let g = d, S = c(null), w = Ie({
848
920
  config: h.config,
849
921
  translations: h.translations,
850
922
  fontsManager: h.fontsManager,
851
923
  emit: g,
852
924
  getCommentsSidebar: () => S.value ? { filterByBlock: S.value.filterCommentsByBlock } : null
853
- }), { isInitializing: T, isAuthReady: E, initError: O, planConfigInstance: k, websocket: A, collaboration: M, isCollaborationEnabled: N, editor: P, core: F, featureFlags: I, mediaLib: L, exporter: R, testEmail: z, commentsInstance: ee, savedModulesHeadless: te, panelState: V, snapshotPreview: H, collabWarning: U, showSaveModuleDialog: W, showModuleBrowserModal: G, saveModulePreSelectedBlockId: K, setThemeOverrides: q, setUiTheme: Y } = w;
854
- async function X(e) {
925
+ }), { isInitializing: T, isAuthReady: E, initError: O, planConfigInstance: k, websocket: A, collaboration: M, isCollaborationEnabled: ee, editor: N, core: P, featureFlags: F, mediaLib: te, exporter: I, testEmail: L, commentsInstance: z, savedModulesHeadless: ne, panelState: B, snapshotPreview: V, collabWarning: H, showSaveModuleDialog: U, showModuleBrowserModal: W, saveModulePreSelectedBlockId: G, setThemeOverrides: re, setUiTheme: q } = w;
926
+ async function J(e) {
855
927
  try {
856
- await z.sendTestEmail(e), V.testEmailModalOpen.value = !1;
928
+ await L.sendTestEmail(e), B.testEmailModalOpen.value = !1;
857
929
  } catch {}
858
930
  }
859
- function ie(e, t) {
931
+ function oe(e, t) {
860
932
  for (let n = 0; n < e.content.length; n++) {
861
933
  let r = j(e.content[n]), i = t === void 0 ? void 0 : t + n;
862
- P.addBlock(r, void 0, void 0, i);
934
+ N.addBlock(r, void 0, void 0, i);
863
935
  }
864
- G.value = !1;
936
+ W.value = !1;
865
937
  }
866
- let Z = Ie({
938
+ let Y = Re({
867
939
  config: h.config,
868
- editor: P,
940
+ editor: N,
869
941
  websocket: A,
870
942
  planConfigInstance: k,
871
- snapshotPreview: H,
872
- core: F,
873
- exporter: R,
874
- featureFlags: I,
943
+ snapshotPreview: V,
944
+ core: P,
945
+ exporter: I,
946
+ featureFlags: F,
875
947
  isDestroyed: w.isDestroyed
948
+ }), X = ze({
949
+ issues: P.accessibilityLint ? P.accessibilityLint.issues : c([]),
950
+ planConfig: k.config
876
951
  });
877
- return w.onSaveHook.value = Z.saveTemplate, e(() => {
952
+ async function Z() {
953
+ await X.tryRunSave(() => Y.saveTemplate().catch((e) => h.config.onError?.(e)));
954
+ }
955
+ return w.onSaveHook.value = Z, e(() => {
878
956
  w.initialize();
879
957
  }), b(() => {
880
958
  w.destroy();
881
959
  }), l({
882
- getContent: () => P.content.value,
883
- setContent: (e) => P.setContent(e),
884
- setTheme: Y,
885
- setThemeOverrides: q,
886
- create: Z.createTemplate,
887
- load: Z.loadTemplate,
888
- save: Z.saveTemplate,
889
- sendTestEmail: z.sendTestEmail
960
+ getContent: () => N.content.value,
961
+ setContent: (e) => N.setContent(e),
962
+ setTheme: q,
963
+ setThemeOverrides: re,
964
+ create: Y.createTemplate,
965
+ load: Y.loadTemplate,
966
+ save: Y.saveTemplate,
967
+ sendTestEmail: L.sendTestEmail
890
968
  }), (e, a) => (r(), f("div", {
891
- class: t(["tpl tpl:relative tpl:h-full tpl:overflow-hidden", { "tpl:dark": y(P).state.darkMode }]),
892
- "data-tpl-theme": y(F).resolvedTheme.value,
893
- style: o(y(F).themeStyles.value)
969
+ class: t(["tpl tpl:relative tpl:h-full tpl:overflow-hidden", { "tpl:dark": y(N).state.darkMode }]),
970
+ "data-tpl-theme": y(P).resolvedTheme.value,
971
+ style: o(y(P).themeStyles.value)
894
972
  }, [
895
973
  p(C, {
896
974
  "enter-active-class": "tpl:transition-opacity tpl:duration-200",
@@ -900,7 +978,7 @@ var Le = {
900
978
  "leave-from-class": "tpl:opacity-100",
901
979
  "leave-to-class": "tpl:opacity-0"
902
980
  }, {
903
- default: u(() => [p(nt, { visible: y(T) || y(P).state.isLoading }, null, 8, ["visible"])]),
981
+ default: u(() => [p(ht, { visible: y(T) || y(N).state.isLoading }, null, 8, ["visible"])]),
904
982
  _: 1
905
983
  }),
906
984
  p(C, {
@@ -911,7 +989,7 @@ var Le = {
911
989
  "leave-from-class": "tpl:opacity-100",
912
990
  "leave-to-class": "tpl:opacity-0"
913
991
  }, {
914
- default: u(() => [p(ct, {
992
+ default: u(() => [p(xt, {
915
993
  error: y(O),
916
994
  visible: !!y(O) && !y(T),
917
995
  onRetry: y(w).initialize
@@ -922,20 +1000,20 @@ var Le = {
922
1000
  ])]),
923
1001
  _: 1
924
1002
  }),
925
- p(Ze, {
926
- editor: y(P),
927
- core: y(F),
928
- "feature-flags": y(I),
929
- "panel-state": y(V),
930
- "snapshot-preview": y(H),
931
- "comments-instance": y(ee),
932
- "test-email": y(z),
1003
+ p(ut, {
1004
+ editor: y(N),
1005
+ core: y(P),
1006
+ "feature-flags": y(F),
1007
+ "panel-state": y(B),
1008
+ "snapshot-preview": y(V),
1009
+ "comments-instance": y(z),
1010
+ "test-email": y(L),
933
1011
  websocket: y(A),
934
1012
  collaboration: y(M),
935
- "is-collaboration-enabled": y(N),
936
- "is-saving": y(P).state.isSaving || y(I).isSaveExporting.value,
937
- "is-save-disabled": y(P).state.isSaving || y(I).isSaveExporting.value || !y(P).state.isDirty,
938
- onSave: a[0] ||= (e) => y(Z).saveTemplate().catch((e) => h.config.onError?.(e))
1013
+ "is-collaboration-enabled": y(ee),
1014
+ "is-saving": y(N).state.isSaving || y(F).isSaveExporting.value,
1015
+ "is-save-disabled": y(N).state.isSaving || y(F).isSaveExporting.value || !y(N).state.isDirty,
1016
+ onSave: Z
939
1017
  }, null, 8, [
940
1018
  "editor",
941
1019
  "core",
@@ -950,10 +1028,21 @@ var Le = {
950
1028
  "is-saving",
951
1029
  "is-save-disabled"
952
1030
  ]),
953
- p(ft, {
954
- visible: y(H).isPreviewingSnapshot.value,
955
- onCancel: y(H).cancelPreview,
956
- onConfirm: y(H).confirmRestoreSnapshot
1031
+ p(Ye, {
1032
+ open: y(X).modalOpen.value,
1033
+ issues: y(X).blockingIssues.value,
1034
+ onCancel: y(X).cancel,
1035
+ onConfirm: y(X).confirmAndSave
1036
+ }, null, 8, [
1037
+ "open",
1038
+ "issues",
1039
+ "onCancel",
1040
+ "onConfirm"
1041
+ ]),
1042
+ p(Tt, {
1043
+ visible: y(V).isPreviewingSnapshot.value,
1044
+ onCancel: y(V).cancelPreview,
1045
+ onConfirm: y(V).confirmRestoreSnapshot
957
1046
  }, null, 8, [
958
1047
  "visible",
959
1048
  "onCancel",
@@ -967,18 +1056,18 @@ var Le = {
967
1056
  "leave-from-class": "tpl:translate-y-0 tpl:opacity-100",
968
1057
  "leave-to-class": "tpl:translate-y-[-8px] tpl:opacity-0"
969
1058
  }, {
970
- default: u(() => [p(mt, { visible: y(U).collabUndoWarningVisible.value }, null, 8, ["visible"])]),
1059
+ default: u(() => [p(Dt, { visible: y(H).collabUndoWarningVisible.value }, null, 8, ["visible"])]),
971
1060
  _: 1
972
1061
  }),
973
- n(p(re, null, null, 512), [[m, !y(P).state.previewMode]]),
1062
+ n(p(ae, null, null, 512), [[m, !y(N).state.previewMode]]),
974
1063
  x("div", {
975
- class: t(["tpl-body tpl:absolute tpl:bottom-0 tpl:overflow-auto", [y(P).state.previewMode ? "tpl:left-0 tpl:right-0" : y(V).rightPanelOpen.value ? "tpl:left-12 tpl:right-[680px]" : "tpl:left-12 tpl:right-[320px]", y(H).isPreviewingSnapshot.value ? "tpl:top-[104px]" : "tpl:top-14"]]),
1064
+ class: t(["tpl-body tpl:absolute tpl:bottom-0 tpl:overflow-auto", [y(N).state.previewMode ? "tpl:left-0 tpl:right-0" : y(B).rightPanelOpen.value ? "tpl:left-12 tpl:right-[680px]" : "tpl:left-12 tpl:right-[320px]", y(V).isPreviewingSnapshot.value ? "tpl:top-[104px]" : "tpl:top-14"]]),
976
1065
  style: {
977
1066
  transition: "all 300ms cubic-bezier(0.34, 1.56, 0.64, 1)",
978
1067
  "background-color": "var(--tpl-canvas-bg)"
979
1068
  }
980
- }, [x("div", gt, [p(C, { name: "tpl-restore-btn" }, {
981
- default: u(() => [y(F).conditionPreview.hasHiddenBlocks.value ? (r(), f("button", {
1069
+ }, [x("div", kt, [p(C, { name: "tpl-restore-btn" }, {
1070
+ default: u(() => [y(P).conditionPreview.hasHiddenBlocks.value ? (r(), f("button", {
982
1071
  key: 0,
983
1072
  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",
984
1073
  style: {
@@ -987,22 +1076,22 @@ var Le = {
987
1076
  "border-color": "var(--tpl-warning)",
988
1077
  "backdrop-filter": "blur(8px)"
989
1078
  },
990
- onClick: a[1] ||= (e) => y(F).conditionPreview.reset()
991
- }, [p(y(ne), {
1079
+ onClick: a[0] ||= (e) => y(P).conditionPreview.reset()
1080
+ }, [p(y(ie), {
992
1081
  size: 13,
993
1082
  "stroke-width": 2
994
- }), D(" " + i(y(F).t.blockSettings.restoreHiddenBlocks), 1)])) : _("", !0)]),
1083
+ }), D(" " + i(y(P).t.blockSettings.restoreHiddenBlocks), 1)])) : _("", !0)]),
995
1084
  _: 1
996
- })]), x("main", _t, [p(ae, {
997
- viewport: y(P).state.viewport,
998
- content: y(P).content.value,
999
- "selected-block-id": y(P).state.selectedBlockId,
1000
- "dark-mode": y(P).state.darkMode,
1001
- "preview-mode": y(P).state.previewMode,
1085
+ })]), x("main", At, [p(se, {
1086
+ viewport: y(N).state.viewport,
1087
+ content: y(N).content.value,
1088
+ "selected-block-id": y(N).state.selectedBlockId,
1089
+ "dark-mode": y(N).state.darkMode,
1090
+ "preview-mode": y(N).state.previewMode,
1002
1091
  "locked-blocks": y(M)?.lockedBlocks.value ?? void 0,
1003
- onSelectBlock: y(P).selectBlock,
1004
- onOpenAiChat: a[2] ||= (e) => y(V).aiChatOpen.value = !0,
1005
- onOpenDesignReference: a[3] ||= (e) => y(V).designReferenceOpen.value = !0
1092
+ onSelectBlock: y(N).selectBlock,
1093
+ onOpenAiChat: a[1] ||= (e) => y(B).aiChatOpen.value = !0,
1094
+ onOpenDesignReference: a[2] ||= (e) => y(B).designReferenceOpen.value = !0
1006
1095
  }, null, 8, [
1007
1096
  "viewport",
1008
1097
  "content",
@@ -1012,51 +1101,51 @@ var Le = {
1012
1101
  "locked-blocks",
1013
1102
  "onSelectBlock"
1014
1103
  ])])], 2),
1015
- s.config.branding !== !1 && !y(I).isWhiteLabeled.value ? (r(), v(oe, {
1104
+ s.config.branding !== !1 && !y(F).isWhiteLabeled.value ? (r(), v(ce, {
1016
1105
  key: 0,
1017
- "position-class": [y(P).state.previewMode ? "tpl:left-0 tpl:right-0" : y(V).rightPanelOpen.value ? "tpl:left-12 tpl:right-[680px]" : "tpl:left-12 tpl:right-[320px]"]
1106
+ "position-class": [y(N).state.previewMode ? "tpl:left-0 tpl:right-0" : y(B).rightPanelOpen.value ? "tpl:left-12 tpl:right-[680px]" : "tpl:left-12 tpl:right-[320px]"]
1018
1107
  }, null, 8, ["position-class"])) : _("", !0),
1019
1108
  x("div", {
1020
1109
  class: "tpl-sr-only",
1021
1110
  role: "status",
1022
1111
  "aria-live": "polite",
1023
1112
  "aria-atomic": "true",
1024
- "aria-label": y(F).t.landmarks.reorderAnnouncements
1025
- }, i(y(F).keyboardReorder.announcement.value), 9, vt),
1026
- n(p(J, {
1027
- "selected-block": y(P).selectedBlock.value,
1028
- settings: y(P).content.value.settings,
1029
- "shifted-left": y(V).rightPanelOpen.value,
1030
- onUpdateBlock: a[4] ||= (e) => y(P).updateBlock(y(P).selectedBlock.value.id, e),
1031
- onDeleteBlock: a[5] ||= (e) => y(F).blockActions.deleteBlock(y(P).selectedBlock.value.id),
1032
- onDuplicateBlock: a[6] ||= (e) => y(F).blockActions.duplicateBlock(y(P).selectedBlock.value),
1033
- onUpdateSettings: y(P).updateSettings
1113
+ "aria-label": y(P).t.landmarks.reorderAnnouncements
1114
+ }, i(y(P).keyboardReorder.announcement.value), 9, jt),
1115
+ n(p(K, {
1116
+ "selected-block": y(N).selectedBlock.value,
1117
+ settings: y(N).content.value.settings,
1118
+ "shifted-left": y(B).rightPanelOpen.value,
1119
+ onUpdateBlock: a[3] ||= (e) => y(N).updateBlock(y(N).selectedBlock.value.id, e),
1120
+ onDeleteBlock: a[4] ||= (e) => y(P).blockActions.deleteBlock(y(N).selectedBlock.value.id),
1121
+ onDuplicateBlock: a[5] ||= (e) => y(P).blockActions.duplicateBlock(y(N).selectedBlock.value),
1122
+ onUpdateSettings: y(N).updateSettings
1034
1123
  }, null, 8, [
1035
1124
  "selected-block",
1036
1125
  "settings",
1037
1126
  "shifted-left",
1038
1127
  "onUpdateSettings"
1039
- ]), [[m, !y(P).state.previewMode]]),
1040
- !y(T) && y(E) ? (r(), v(Qe, {
1128
+ ]), [[m, !y(N).state.previewMode]]),
1129
+ !y(T) && y(E) ? (r(), v(dt, {
1041
1130
  key: 1,
1042
1131
  ref_key: "cloudPanelsRef",
1043
1132
  ref: S,
1044
1133
  config: h.config,
1045
- editor: y(P),
1046
- core: y(F),
1047
- "panel-state": y(V),
1134
+ editor: y(N),
1135
+ core: y(P),
1136
+ "panel-state": y(B),
1048
1137
  "plan-config-instance": y(k),
1049
- "test-email": y(z),
1050
- "media-lib": y(L),
1051
- "saved-modules-headless": y(te),
1052
- "show-save-module-dialog": y(W),
1053
- "save-module-pre-selected-block-id": y(K),
1054
- "show-module-browser-modal": y(G),
1055
- "onUpdate:showSaveModuleDialog": a[7] ||= (e) => W.value = e,
1056
- "onUpdate:saveModulePreSelectedBlockId": a[8] ||= (e) => K.value = e,
1057
- "onUpdate:showModuleBrowserModal": a[9] ||= (e) => G.value = e,
1058
- onSendTestEmail: X,
1059
- onModuleInsert: ie
1138
+ "test-email": y(L),
1139
+ "media-lib": y(te),
1140
+ "saved-modules-headless": y(ne),
1141
+ "show-save-module-dialog": y(U),
1142
+ "save-module-pre-selected-block-id": y(G),
1143
+ "show-module-browser-modal": y(W),
1144
+ "onUpdate:showSaveModuleDialog": a[6] ||= (e) => U.value = e,
1145
+ "onUpdate:saveModulePreSelectedBlockId": a[7] ||= (e) => G.value = e,
1146
+ "onUpdate:showModuleBrowserModal": a[8] ||= (e) => W.value = e,
1147
+ onSendTestEmail: J,
1148
+ onModuleInsert: oe
1060
1149
  }, null, 8, [
1061
1150
  "config",
1062
1151
  "editor",
@@ -1070,8 +1159,8 @@ var Le = {
1070
1159
  "save-module-pre-selected-block-id",
1071
1160
  "show-module-browser-modal"
1072
1161
  ])) : _("", !0)
1073
- ], 14, ht));
1162
+ ], 14, Ot));
1074
1163
  }
1075
- }), [["__scopeId", "data-v-4a2ee70b"]]);
1164
+ }), [["__scopeId", "data-v-b332971f"]]);
1076
1165
  //#endregion
1077
- export { yt as default };
1166
+ export { Mt as default };