@aswin.dev/editor 0.8.5 → 0.8.7

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 (89) hide show
  1. package/dist/{AccessibilityPanel-COL6Wm7p.js → AccessibilityPanel-B39ct5ON.js} +2 -2
  2. package/dist/{AiChatSidebar-DAJOuHPG.js → AiChatSidebar-CYh7SPHW.js} +2 -2
  3. package/dist/{AiFeatureMenu-CKnEDzme.js → AiFeatureMenu-D9UhqJAa.js} +3 -3
  4. package/dist/{BlockA11yBadge-Qs6HtXid.js → BlockA11yBadge-Dr854uEe.js} +2 -2
  5. package/dist/{CloudEditor-BUlmUuhO.js → CloudEditor-BNEIze18.js} +281 -274
  6. package/dist/{CollaboratorBar-C6TfqpyV.js → CollaboratorBar-DZXuPSfU.js} +2 -2
  7. package/dist/{CommentsSidebar-DE6ZsM4D.js → CommentsSidebar-BVKFtxml.js} +4 -4
  8. package/dist/{CountdownBlock-Ba3T-i2X.js → CountdownBlock-CrpaDWze.js} +1 -1
  9. package/dist/{CountdownToolbar-B9IAZzeV.js → CountdownToolbar-D1tb2T_b.js} +2 -2
  10. package/dist/{DesignReferenceSidebar-C6yDJlD8.js → DesignReferenceSidebar-_QsmFpE_.js} +44 -44
  11. package/dist/{ModuleBrowserModal-DUKuDjS-.js → ModuleBrowserModal-Bth1crh_.js} +7 -7
  12. package/dist/{ModulePreviewCanvas-C9HTjfkN.js → ModulePreviewCanvas-96pndrb9.js} +3 -3
  13. package/dist/{ParagraphEditor-CFuaZKGk.js → ParagraphEditor-C2d9O2P4.js} +123 -123
  14. package/dist/{RichTextEditorContent-CrqPQdnk.js → RichTextEditorContent-Cn0ZU41b.js} +3 -3
  15. package/dist/{SaveModuleDialog-QjgPFEDg.js → SaveModuleDialog-B1EJtMGq.js} +17 -17
  16. package/dist/{SlidingPillSelect-DfcBdJqN.js → SlidingPillSelect-Dt34f5VF.js} +1 -1
  17. package/dist/{SnapshotHistory-Dblt21_W.js → SnapshotHistory-Cd-a_xGv.js} +3 -3
  18. package/dist/{TemplateScoringPanel-CS7o62zS.js → TemplateScoringPanel-C8WixDsv.js} +77 -77
  19. package/dist/{TestEmailModal-D_y3ZksG.js → TestEmailModal-CEj_81cQ.js} +3 -3
  20. package/dist/TitleEditor-C8Qyr_U3.js +172 -0
  21. package/dist/{TplModal-DinL7DhQ.js → TplModal-B_HcUS4S.js} +2 -2
  22. package/dist/{blockTypeIcons-JjmIZ_Vx.js → blockTypeIcons-CeaSm2Xd.js} +1 -1
  23. package/dist/bundle-stats.json +6 -6
  24. package/dist/cdn/chunks/{AccessibilityPanel-BTADkTp2.js → AccessibilityPanel-C8vY7QIF.js} +3 -3
  25. package/dist/cdn/chunks/{AccessibilityPanel-BTADkTp2.js.map → AccessibilityPanel-C8vY7QIF.js.map} +1 -1
  26. package/dist/cdn/chunks/{AiFeatureMenu-D99Pw32q.js → AiFeatureMenu-BaUpnF6T.js} +2 -2
  27. package/dist/cdn/chunks/{AiFeatureMenu-D99Pw32q.js.map → AiFeatureMenu-BaUpnF6T.js.map} +1 -1
  28. package/dist/cdn/chunks/{BlockA11yBadge-dtyeSSvY.js → BlockA11yBadge-BHkh4Otq.js} +2 -2
  29. package/dist/cdn/chunks/{BlockA11yBadge-dtyeSSvY.js.map → BlockA11yBadge-BHkh4Otq.js.map} +1 -1
  30. package/dist/cdn/chunks/{CloudEditor-BBBkTBfW.js → CloudEditor-DUIjZDAS.js} +264 -257
  31. package/dist/cdn/chunks/{CloudEditor-BBBkTBfW.js.map → CloudEditor-DUIjZDAS.js.map} +1 -1
  32. package/dist/cdn/chunks/{CollaboratorBar-Cuy1BusU.js → CollaboratorBar-pyuEO5Bm.js} +3 -3
  33. package/dist/cdn/chunks/{CollaboratorBar-Cuy1BusU.js.map → CollaboratorBar-pyuEO5Bm.js.map} +1 -1
  34. package/dist/cdn/chunks/{CountdownToolbar-CqFM85Xv.js → CountdownToolbar-CCGHm6Gg.js} +3 -3
  35. package/dist/cdn/chunks/{CountdownToolbar-CqFM85Xv.js.map → CountdownToolbar-CCGHm6Gg.js.map} +1 -1
  36. package/dist/cdn/chunks/{ModuleBrowserModal-Dcxtq_dC.js → ModuleBrowserModal-DKsMddYS.js} +6 -6
  37. package/dist/cdn/chunks/{ModuleBrowserModal-Dcxtq_dC.js.map → ModuleBrowserModal-DKsMddYS.js.map} +1 -1
  38. package/dist/cdn/chunks/{ModulePreviewCanvas-Didb4ZCU.js → ModulePreviewCanvas-E0mfCUJi.js} +2 -2
  39. package/dist/cdn/chunks/{ModulePreviewCanvas-Didb4ZCU.js.map → ModulePreviewCanvas-E0mfCUJi.js.map} +1 -1
  40. package/dist/cdn/chunks/{ParagraphEditor-BX2L35YF.js → ParagraphEditor-DwmzHg6F.js} +116 -116
  41. package/dist/cdn/chunks/ParagraphEditor-DwmzHg6F.js.map +1 -0
  42. package/dist/cdn/chunks/{RichTextEditorContent-ywrdsvHY.js → RichTextEditorContent-4-cNqB4H.js} +3 -3
  43. package/dist/cdn/chunks/{RichTextEditorContent-ywrdsvHY.js.map → RichTextEditorContent-4-cNqB4H.js.map} +1 -1
  44. package/dist/cdn/chunks/{SaveModuleDialog-Ddp-HCFB.js → SaveModuleDialog-COm3ptOF.js} +3 -3
  45. package/dist/cdn/chunks/{SaveModuleDialog-Ddp-HCFB.js.map → SaveModuleDialog-COm3ptOF.js.map} +1 -1
  46. package/dist/cdn/chunks/{SlidingPillSelect-CS6N3vGq.js → SlidingPillSelect-DlgRynQN.js} +2 -2
  47. package/dist/cdn/chunks/{SlidingPillSelect-CS6N3vGq.js.map → SlidingPillSelect-DlgRynQN.js.map} +1 -1
  48. package/dist/cdn/chunks/TitleEditor-CE8r8txX.js +171 -0
  49. package/dist/cdn/chunks/TitleEditor-CE8r8txX.js.map +1 -0
  50. package/dist/cdn/chunks/{blockTypeIcons-B2x3gJsz.js → blockTypeIcons-BOf7hTFU.js} +3 -3
  51. package/dist/cdn/chunks/{blockTypeIcons-B2x3gJsz.js.map → blockTypeIcons-BOf7hTFU.js.map} +1 -1
  52. package/dist/cdn/chunks/{extensions-CdYSoz4B.js → extensions-B5e8Ov02.js} +17 -17
  53. package/dist/cdn/chunks/{extensions-CdYSoz4B.js.map → extensions-B5e8Ov02.js.map} +1 -1
  54. package/dist/cdn/chunks/{features-BZeMkHMs.js → features-BHTP4oRU.js} +734 -734
  55. package/dist/cdn/chunks/features-BHTP4oRU.js.map +1 -0
  56. package/dist/cdn/chunks/{icons-nP0Wj6Eq.js → icons-DS4IYWzG.js} +2 -2
  57. package/dist/cdn/chunks/{icons-nP0Wj6Eq.js.map → icons-DS4IYWzG.js.map} +1 -1
  58. package/dist/cdn/chunks/{media-library-54Ezt5wL.js → media-library-BLLJsLwk.js} +508 -508
  59. package/dist/cdn/chunks/{media-library-54Ezt5wL.js.map → media-library-BLLJsLwk.js.map} +1 -1
  60. package/dist/cdn/chunks/{quality-Di1pUcCW.js → quality-DfKLOn8j.js} +290 -290
  61. package/dist/cdn/chunks/{quality-Di1pUcCW.js.map → quality-DfKLOn8j.js.map} +1 -1
  62. package/dist/cdn/chunks/{renderer-C4OuJhDG.js → renderer-fG9yLafB.js} +14 -14
  63. package/dist/cdn/chunks/{renderer-C4OuJhDG.js.map → renderer-fG9yLafB.js.map} +1 -1
  64. package/dist/cdn/chunks/{src-DF5NNH7S.js → src-DsfVhQaK.js} +4 -4
  65. package/dist/cdn/chunks/{src-DF5NNH7S.js.map → src-DsfVhQaK.js.map} +1 -1
  66. package/dist/cdn/chunks/{styles-C9P3yzMF.js → styles-CPUuKOlD.js} +210 -210
  67. package/dist/cdn/chunks/{styles-C9P3yzMF.js.map → styles-CPUuKOlD.js.map} +1 -1
  68. package/dist/cdn/chunks/{tiptap-CZ52Pj8k.js → tiptap-q69oUYhb.js} +2 -2
  69. package/dist/cdn/chunks/{tiptap-CZ52Pj8k.js.map → tiptap-q69oUYhb.js.map} +1 -1
  70. package/dist/cdn/editor.css +1 -1
  71. package/dist/cdn/editor.js +130 -123
  72. package/dist/cdn/editor.js.map +1 -1
  73. package/dist/{extensions-CNPdJw_8.js → extensions-mwqd2u9M.js} +2 -2
  74. package/dist/index.d.ts +6 -6
  75. package/dist/keys-CqdzeWhT.js +10 -0
  76. package/dist/style.css +1 -1
  77. package/dist/{styles-ZIYLQwFf.js → styles-BRNubGRJ.js} +287 -287
  78. package/dist/templatical-editor.js +134 -127
  79. package/dist/{useCloudI18n-DOKSZql1.js → useCloudI18n-CDhjmAgB.js} +1 -1
  80. package/dist/{useEditorCore-BHSyoxSK.js → useEditorCore-DB4A_cje.js} +22 -22
  81. package/dist/{useI18n-C2xQZ6K9.js → useI18n-DLZJ6wNn.js} +1 -1
  82. package/dist/{useMergeTag-BfVcyNSv.js → useMergeTag-D-kqWENN.js} +2 -2
  83. package/package.json +7 -7
  84. package/dist/TitleEditor-CHmL3FFR.js +0 -172
  85. package/dist/cdn/chunks/ParagraphEditor-BX2L35YF.js.map +0 -1
  86. package/dist/cdn/chunks/TitleEditor-BTtgZzci.js +0 -171
  87. package/dist/cdn/chunks/TitleEditor-BTtgZzci.js.map +0 -1
  88. package/dist/cdn/chunks/features-BZeMkHMs.js.map +0 -1
  89. package/dist/keys-CvX8D-8C.js +0 -10
@@ -1,25 +1,25 @@
1
1
  import { At as e, C as t, F as n, Ft as r, M as i, N as a, P as o, S as s, U as c, V as l, W as u, Z as d, _ as f, b as p, d as m, et as h, f as g, g as _, h as v, j as y, jt as b, l as x, m as S, nt as C, st as w, t as T, v as E, x as D, y as O } from "./vue.runtime.esm-bundler-CjauPXjj.js";
2
2
  import { t as k } from "./timeouts-BSGxjuUF.js";
3
- import { N as A, f as ee, o as te, r as j } from "./dist-Bcqepqv3.js";
4
- import { L as M, T as ne, t as re, z as N } from "./useEditorCore-BHSyoxSK.js";
5
- import { t as P, u as F } from "./dist-Djgi0A6k.js";
6
- import { E as I, S as ie, T as L, c as R, i as z, l as ae, n as oe, u as se, w as ce } from "./keys-CvX8D-8C.js";
7
- import { t as B } from "./useI18n-C2xQZ6K9.js";
8
- import { t as V } from "./createLucideIcon-ClREiSx3.js";
9
- import { _ as le, a as ue, c as H, d as U, f as de, g as W, h as fe, i as pe, l as G, m as me, n as he, p as ge, r as _e, s as ve, t as ye, u as be } from "./styles-ZIYLQwFf.js";
10
- import { n as K } from "./pencil-Bpimrzzw.js";
11
- import { t as q } from "./circle-alert-ZQQc98HC.js";
12
- import { t as xe } from "./clock-Ba4p3rJM.js";
13
- import { t as Se } from "./loader-circle-Balo8p3d.js";
14
- import { t as J } from "./message-circle-B39qAHxs.js";
15
- import { t as Y } from "./send-D2eSo4GH.js";
16
- import { t as Ce } from "./sparkles-Chm5CZfb.js";
17
- import { t as we } from "./triangle-alert-KpDVNbpn.js";
18
- import { t as Te } from "./_plugin-vue_export-helper-BVAJ4lgT.js";
19
- import { n as X } from "./useCloudI18n-DOKSZql1.js";
3
+ import { N as A, f as j, o as ee, r as M } from "./dist-Bcqepqv3.js";
4
+ import { L as N, T as te, t as ne, z as P } from "./useEditorCore-DB4A_cje.js";
5
+ import { t as F, u as I } from "./dist-Djgi0A6k.js";
6
+ import { C as L, D as re, E as R, T as ie, c as z, i as B, l as ae, m as oe, n as se, u as ce } from "./keys-CqdzeWhT.js";
7
+ import { t as V } from "./useI18n-DLZJ6wNn.js";
8
+ import { t as le } from "./createLucideIcon-ClREiSx3.js";
9
+ import { _ as ue, a as de, c as fe, d as H, f as pe, g as U, h as me, i as he, l as W, m as ge, n as _e, p as ve, r as ye, s as be, t as xe, u as Se } from "./styles-BRNubGRJ.js";
10
+ import { n as G } from "./pencil-Bpimrzzw.js";
11
+ import { t as K } from "./circle-alert-ZQQc98HC.js";
12
+ import { t as Ce } from "./clock-Ba4p3rJM.js";
13
+ import { t as we } from "./loader-circle-Balo8p3d.js";
14
+ import { t as q } from "./message-circle-B39qAHxs.js";
15
+ import { t as Te } from "./send-D2eSo4GH.js";
16
+ import { t as J } from "./sparkles-Chm5CZfb.js";
17
+ import { t as Ee } from "./triangle-alert-KpDVNbpn.js";
18
+ import { t as Y } from "./_plugin-vue_export-helper-BVAJ4lgT.js";
19
+ import { n as X } from "./useCloudI18n-CDhjmAgB.js";
20
20
  import { d as Z } from "./styleConstants-34eUKPOZ.js";
21
- import { _ as Ee, a as De, c as Q, d as Oe, f as $, g as ke, h as Ae, l as je, m as Me, n as Ne, o as Pe, p as Fe, r as Ie, s as Le, t as Re, v as ze, y as Be } from "./cloud-9i5Nj7rp.js";
22
- var Ve = V("save", [
21
+ import { _ as De, a as Oe, c as ke, d as Q, f as Ae, g as $, h as je, l as Me, m as Ne, n as Pe, o as Fe, p as Ie, r as Le, s as Re, t as ze, v as Be, y as Ve } from "./cloud-9i5Nj7rp.js";
22
+ var He = le("save", [
23
23
  ["path", {
24
24
  d: "M15.2 3a2 2 0 0 1 1.4.6l3.8 3.8a2 2 0 0 1 .6 1.4V19a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2z",
25
25
  key: "1c8476"
@@ -35,14 +35,14 @@ var Ve = V("save", [
35
35
  ]);
36
36
  //#endregion
37
37
  //#region src/cloud/composables/useSnapshotPreview.ts
38
- function He(e) {
38
+ function Ue(e) {
39
39
  let { authManager: t, editor: n, history: r, conditionPreview: i, autoSave: a, onError: o } = e, s = C(null), c = h(null), l = h(null), u = !1;
40
40
  d(() => {
41
41
  u = !0;
42
42
  });
43
43
  let f = S(() => c.value !== null), p = S(() => s.value?.snapshots.value ?? []), m = S(() => s.value?.isLoading.value ?? !1), g = S(() => s.value?.isRestoring.value ?? !1);
44
44
  function _() {
45
- n.state.template?.id && !s.value && (s.value = ke({
45
+ n.state.template?.id && !s.value && (s.value = $({
46
46
  authManager: t,
47
47
  templateId: n.state.template.id,
48
48
  onRestore: v,
@@ -92,7 +92,7 @@ function He(e) {
92
92
  }
93
93
  //#endregion
94
94
  //#region src/cloud/composables/useCloudPanelState.ts
95
- function Ue() {
95
+ function We() {
96
96
  let e = h(null), t = S({
97
97
  get: () => e.value === "ai-chat",
98
98
  set: (t) => e.value = t ? "ai-chat" : null
@@ -115,7 +115,7 @@ function Ue() {
115
115
  function m(t) {
116
116
  c.value = !1, e.value = e.value === t ? null : t;
117
117
  }
118
- return P(l, () => {
118
+ return F(l, () => {
119
119
  c.value = !1;
120
120
  }), {
121
121
  activePanel: e,
@@ -137,8 +137,8 @@ function Ue() {
137
137
  }
138
138
  //#endregion
139
139
  //#region src/cloud/composables/useCollabUndoWarning.ts
140
- function We(e) {
141
- let { isCollaborationEnabled: t, getCollaboratorCount: n, canUndo: r } = e, i = h(!1), a = h(!1), { start: o } = F(() => {
140
+ function Ge(e) {
141
+ let { isCollaborationEnabled: t, getCollaboratorCount: n, canUndo: r } = e, i = h(!1), a = h(!1), { start: o } = I(() => {
142
142
  a.value = !1;
143
143
  }, k, { immediate: !1 });
144
144
  function s() {
@@ -151,8 +151,8 @@ function We(e) {
151
151
  }
152
152
  //#endregion
153
153
  //#region src/cloud/composables/useCloudFeatureFlags.ts
154
- function Ge(e) {
155
- 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")), c = S(() => t.config.value?.limits.max_templates ?? null), l = S(() => t.config.value?.template_count ?? 0), u = h(!1), d = h("idle"), f = h(""), { start: p } = F(() => {
154
+ function Ke(e) {
155
+ 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")), c = S(() => t.config.value?.limits.max_templates ?? null), l = S(() => t.config.value?.template_count ?? 0), u = h(!1), d = h("idle"), f = h(""), { start: p } = I(() => {
156
156
  d.value = "idle";
157
157
  }, 3e3, { immediate: !1 });
158
158
  return {
@@ -170,7 +170,7 @@ function Ge(e) {
170
170
  }
171
171
  //#endregion
172
172
  //#region src/cloud/composables/useCloudMediaLibrary.ts
173
- function Ke(e) {
173
+ function qe(e) {
174
174
  let { onRequestMedia: t, mediaLibraryOpen: n, mediaLibraryAccept: r, onTemplateWidthPreview: i } = e, a = null;
175
175
  async function o() {
176
176
  if (t) {
@@ -210,30 +210,30 @@ function Ke(e) {
210
210
  }
211
211
  //#endregion
212
212
  //#region src/cloud/composables/useCloudInitialization.ts
213
- function qe(e) {
214
- let { config: t, translations: n, fontsManager: r, emit: i, getCommentsSidebar: a } = e, s = h(!0), c = h(!1), u = h(null), d = !1, f = { value: null }, p = null, m = null, g = new Re({
213
+ function Je(e) {
214
+ let { config: t, translations: n, fontsManager: r, emit: i, getCommentsSidebar: a } = e, s = h(!0), c = h(!1), u = h(null), d = !1, f = { value: null }, p = null, m = null, g = new ze({
215
215
  ...t.auth,
216
216
  onError: t.onError
217
- }), _ = Me({
217
+ }), _ = Ne({
218
218
  authManager: g,
219
219
  onError: t.onError
220
- }), v = h(/* @__PURE__ */ new Map()), y = Oe({
220
+ }), v = h(/* @__PURE__ */ new Map()), y = Q({
221
221
  authManager: g,
222
222
  defaultFontFamily: t.fonts?.defaultFont,
223
223
  templateDefaults: t.templateDefaults,
224
224
  onError: t.onError,
225
225
  lockedBlocks: v
226
- }), b = Be({
226
+ }), b = Ve({
227
227
  authManager: g,
228
228
  onError: t.onError
229
229
  });
230
- t.mcp?.enabled && Fe({
230
+ t.mcp?.enabled && Ie({
231
231
  editor: y,
232
232
  channel: b.channel,
233
233
  onOperation: t.mcp.onOperation
234
234
  });
235
235
  let x = null;
236
- t.collaboration?.enabled && (x = Pe({
236
+ t.collaboration?.enabled && (x = Fe({
237
237
  authManager: g,
238
238
  editor: y,
239
239
  channel: b.channel,
@@ -244,8 +244,8 @@ function qe(e) {
244
244
  onBlockUnlocked: t.collaboration.onBlockUnlocked
245
245
  }), l(() => x.lockedBlocks.value, (e) => {
246
246
  v.value = e;
247
- }, { immediate: !0 }), Le(y, x));
248
- let C = S(() => !!t.collaboration?.enabled && _.hasFeature("collaboration")), w = re({
247
+ }, { immediate: !0 }), Re(y, x));
248
+ let C = S(() => !!t.collaboration?.enabled && _.hasFeature("collaboration")), w = ne({
249
249
  editor: y,
250
250
  config: {
251
251
  uiTheme: t.uiTheme,
@@ -256,7 +256,7 @@ function qe(e) {
256
256
  displayConditions: t.displayConditions,
257
257
  onRequestMedia: null,
258
258
  editorType: t.editorType,
259
- accessibility: W(t),
259
+ accessibility: U(t),
260
260
  onSave: () => {
261
261
  f.value?.().catch((e) => {
262
262
  t.onError?.(e);
@@ -275,13 +275,13 @@ function qe(e) {
275
275
  },
276
276
  themeExtraStyles: () => ({ "--tpl-drop-text": `"${n.canvas.dropHere}"` }),
277
277
  keyboardOptions: { onBeforeUndo: () => m?.showCollabUndoWarning() }
278
- }), T = We({
278
+ }), T = Ge({
279
279
  isCollaborationEnabled: C,
280
280
  getCollaboratorCount: () => x?.collaborators.value.length ?? 0,
281
281
  canUndo: w.history.canUndo
282
282
  });
283
283
  m = T;
284
- let E = He({
284
+ let E = Ue({
285
285
  authManager: g,
286
286
  editor: y,
287
287
  history: w.history,
@@ -290,32 +290,32 @@ function qe(e) {
290
290
  onError: t.onError
291
291
  });
292
292
  p = E;
293
- let D = Ue(), O = De(t.ai), k = Ge({
293
+ let D = We(), O = Oe(t.ai), k = Ke({
294
294
  planConfigInstance: _,
295
295
  aiConfig: O,
296
296
  editor: y
297
- }), A = Ke({
297
+ }), A = qe({
298
298
  onRequestMedia: t.onRequestMedia,
299
299
  mediaLibraryOpen: D.mediaLibraryOpen,
300
300
  mediaLibraryAccept: D.mediaLibraryAccept
301
301
  });
302
- ne({
302
+ te({
303
303
  onBlockMove: y.moveBlock,
304
304
  onBlockAdd: y.addBlock
305
305
  });
306
- let ee = $({
306
+ let j = Ae({
307
307
  authManager: g,
308
308
  getFontsConfig: () => t.fonts,
309
309
  canUseCustomFonts: () => _.hasFeature("custom_fonts")
310
- }), te = ze({
310
+ }), ee = Be({
311
311
  authManager: g,
312
312
  getTemplateId: () => y.state.template?.id ?? null,
313
313
  save: () => y.save(),
314
- exportHtml: (e) => ee.exportHtml(e),
314
+ exportHtml: (e) => j.exportHtml(e),
315
315
  onError: t.onError,
316
316
  isAuthReady: c,
317
317
  onBeforeTestEmail: t.onBeforeTestEmail
318
- }), j = je({
318
+ }), M = Me({
319
319
  authManager: g,
320
320
  getTemplateId: () => y.state.template?.id ?? null,
321
321
  getSocketId: () => b.getSocketId(),
@@ -324,37 +324,37 @@ function qe(e) {
324
324
  isAuthReady: c,
325
325
  hasCommentingFeature: () => t.commenting !== !1 && _.hasFeature("commenting")
326
326
  });
327
- Q({
328
- comments: j,
327
+ ke({
328
+ comments: M,
329
329
  channel: b.channel
330
330
  });
331
- let N = Ae({
331
+ let P = je({
332
332
  authManager: g,
333
333
  onError: t.onError
334
- }), P = h(!1), F = h(null), ae = h(!1), ce = Ee({
334
+ }), F = h(!1), I = h(null), ie = h(!1), ae = De({
335
335
  authManager: g,
336
336
  getTemplateId: () => y.state.template?.id ?? null
337
337
  });
338
- function B(e) {
338
+ function oe(e) {
339
339
  D.commentsOpen.value = !0, queueMicrotask(() => {
340
340
  a()?.filterByBlock(e);
341
341
  });
342
342
  }
343
- o(ie, A.handleRequestMedia), o(z, g), o(oe, O), o(se, j), o(L, N), o(I, ce), o(R, {
343
+ o(L, A.handleRequestMedia), o(B, g), o(se, O), o(ce, M), o(R, P), o(re, ae), o(z, {
344
344
  plan: _,
345
345
  ai: O,
346
346
  comments: {
347
- getBlockCount: (e) => j.commentCountByBlock.value.get(e) ?? 0,
348
- openForBlock: B
347
+ getBlockCount: (e) => M.commentCountByBlock.value.get(e) ?? 0,
348
+ openForBlock: oe
349
349
  },
350
350
  savedModules: {
351
351
  openSaveDialog: (e) => {
352
- F.value = e ?? null, P.value = !0;
352
+ I.value = e ?? null, F.value = !0;
353
353
  },
354
354
  openBrowser: () => {
355
- ae.value = !0;
355
+ ie.value = !0;
356
356
  },
357
- moduleCount: S(() => N.modules.value.length)
357
+ moduleCount: S(() => P.modules.value.length)
358
358
  }
359
359
  });
360
360
  function V(e) {
@@ -368,12 +368,12 @@ function qe(e) {
368
368
  try {
369
369
  if (await g.initialize(), d) return;
370
370
  c.value = !0;
371
- let e = await Ne({ authManager: g });
371
+ let e = await Pe({ authManager: g });
372
372
  if (d) return;
373
373
  if (!e.api.ok) throw Error("Health check failed: API is not reachable");
374
374
  if (!e.auth.ok) throw Error(`Health check failed: authentication error${e.auth.error ? ` - ${e.auth.error}` : ""}`);
375
- if (e.websocket.ok || M.warn("WebSocket health check failed:", e.websocket.error ?? "unknown error", "-- real-time features will be disabled."), await _.fetchConfig(), d) return;
376
- r.setCustomFontsEnabled(_.hasFeature("custom_fonts")), t.customBlocks?.length && _.hasFeature("custom_blocks") && w.registerCustomBlocks(t.customBlocks), t.theme && _.hasFeature("theme_customization") && (w.themeOverrides.value = t.theme), t.modules !== !1 && _.hasFeature("saved_modules") && N.loadModules(), i("ready");
375
+ if (e.websocket.ok || N.warn("WebSocket health check failed:", e.websocket.error ?? "unknown error", "-- real-time features will be disabled."), await _.fetchConfig(), d) return;
376
+ r.setCustomFontsEnabled(_.hasFeature("custom_fonts")), t.customBlocks?.length && _.hasFeature("custom_blocks") && w.registerCustomBlocks(t.customBlocks), t.theme && _.hasFeature("theme_customization") && (w.themeOverrides.value = t.theme), t.modules !== !1 && _.hasFeature("saved_modules") && P.loadModules(), i("ready");
377
377
  } catch (e) {
378
378
  if (d) return;
379
379
  let n = e instanceof Error ? e : Error("Initialization failed", { cause: e });
@@ -382,7 +382,7 @@ function qe(e) {
382
382
  d || (s.value = !1);
383
383
  }
384
384
  }
385
- function H() {
385
+ function de() {
386
386
  d = !0, r.cleanupFontLinks(), b.disconnect(), w.destroy(), t.onUnmount?.();
387
387
  }
388
388
  return {
@@ -400,28 +400,28 @@ function qe(e) {
400
400
  aiConfig: O,
401
401
  featureFlags: k,
402
402
  mediaLib: A,
403
- exporter: ee,
404
- testEmail: te,
405
- commentsInstance: j,
406
- savedModulesHeadless: N,
407
- scoringInstance: ce,
403
+ exporter: j,
404
+ testEmail: ee,
405
+ commentsInstance: M,
406
+ savedModulesHeadless: P,
407
+ scoringInstance: ae,
408
408
  panelState: D,
409
409
  snapshotPreview: E,
410
410
  collabWarning: T,
411
- showSaveModuleDialog: P,
412
- showModuleBrowserModal: ae,
413
- saveModulePreSelectedBlockId: F,
411
+ showSaveModuleDialog: F,
412
+ showModuleBrowserModal: ie,
413
+ saveModulePreSelectedBlockId: I,
414
414
  onSaveHook: f,
415
415
  initialize: ue,
416
- destroy: H,
416
+ destroy: de,
417
417
  setThemeOverrides: V,
418
418
  setUiTheme: le,
419
- openCommentsForBlock: B
419
+ openCommentsForBlock: oe
420
420
  };
421
421
  }
422
422
  //#endregion
423
423
  //#region src/utils/preRenderCustomBlocks.ts
424
- async function Je(e, t) {
424
+ async function Ye(e, t) {
425
425
  let n = async (e) => {
426
426
  if (A(e)) {
427
427
  let n = e;
@@ -440,10 +440,10 @@ async function Je(e, t) {
440
440
  }
441
441
  //#endregion
442
442
  //#region src/cloud/composables/useCloudLifecycle.ts
443
- function Ye(e) {
443
+ function Xe(e) {
444
444
  let { config: t, editor: n, websocket: r, planConfigInstance: i, snapshotPreview: a, core: o, exporter: s, featureFlags: c, isDestroyed: l } = e;
445
445
  function u() {
446
- return Ie(i.config.value.websocket);
446
+ return Le(i.config.value.websocket);
447
447
  }
448
448
  async function d(e) {
449
449
  let i = await n.create(e);
@@ -456,7 +456,7 @@ function Ye(e) {
456
456
  async function p() {
457
457
  c.isSaveExporting.value = !0, c.saveStatus.value = "idle";
458
458
  try {
459
- if (await Je(n.content.value, o.registry), l()) throw Error("Component unmounted during save");
459
+ if (await Ye(n.content.value, o.registry), l()) throw Error("Component unmounted during save");
460
460
  let e = await n.save();
461
461
  if (l()) throw Error("Component unmounted during save");
462
462
  a.initSnapshotHistory(), a.snapshotHistoryInstance.value?.loadSnapshots();
@@ -483,7 +483,7 @@ function Ye(e) {
483
483
  }
484
484
  //#endregion
485
485
  //#region src/cloud/composables/useCloudSaveGate.ts
486
- function Xe(e) {
486
+ function Ze(e) {
487
487
  let t = h(!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);
488
488
  async function o(e) {
489
489
  return a.value ? (n = e, t.value = !0, !1) : (await e(), !0);
@@ -506,7 +506,7 @@ function Xe(e) {
506
506
  }
507
507
  //#endregion
508
508
  //#region src/cloud/components/CloudSaveGateModal.vue?vue&type=script&setup=true&lang.ts
509
- var Ze = ["aria-label"], Qe = { 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)]" }, $e = { class: "tpl:flex tpl:items-center tpl:gap-2" }, et = { class: "tpl:m-0 tpl:text-base tpl:font-semibold tpl:text-[var(--tpl-text)]" }, tt = { class: "tpl:m-0 tpl:text-sm tpl:text-[var(--tpl-text-muted)]" }, nt = { 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" }, rt = { class: "tpl:text-xs tpl:text-[var(--tpl-text)]" }, it = { class: "tpl:font-mono tpl:text-[10px] tpl:text-[var(--tpl-text-dim)]" }, at = { class: "tpl:flex tpl:justify-end tpl:gap-2" }, ot = /* @__PURE__ */ t({
509
+ var Qe = ["aria-label"], $e = { 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)]" }, et = { class: "tpl:flex tpl:items-center tpl:gap-2" }, tt = { class: "tpl:m-0 tpl:text-base tpl:font-semibold tpl:text-[var(--tpl-text)]" }, nt = { class: "tpl:m-0 tpl:text-sm tpl:text-[var(--tpl-text-muted)]" }, rt = { 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" }, it = { class: "tpl:text-xs tpl:text-[var(--tpl-text)]" }, at = { class: "tpl:font-mono tpl:text-[10px] tpl:text-[var(--tpl-text-dim)]" }, ot = { class: "tpl:flex tpl:justify-end tpl:gap-2" }, st = /* @__PURE__ */ t({
510
510
  __name: "CloudSaveGateModal",
511
511
  props: {
512
512
  open: { type: Boolean },
@@ -528,18 +528,18 @@ var Ze = ["aria-label"], Qe = { class: "tpl:flex tpl:max-h-[80vh] tpl:w-full tpl
528
528
  "aria-label": w(o).saveGate.title,
529
529
  class: "tpl:fixed tpl:inset-0 tpl:z-50 tpl:flex tpl:items-center tpl:justify-center tpl:bg-black/40 tpl:p-6",
530
530
  onClick: s[2] ||= m((e) => i("cancel"), ["self"])
531
- }, [v("div", Qe, [
532
- v("header", $e, [D(w(we), {
531
+ }, [v("div", $e, [
532
+ v("header", et, [D(w(Ee), {
533
533
  size: 18,
534
534
  "stroke-width": 2,
535
535
  class: "tpl:text-[var(--tpl-warning)]"
536
- }), v("h2", et, r(w(o).saveGate.title), 1)]),
537
- v("p", tt, r(w(o).saveGate.body), 1),
538
- v("ul", nt, [(a(!0), E(g, null, n(e.issues, (e) => (a(), E("li", {
536
+ }), v("h2", tt, r(w(o).saveGate.title), 1)]),
537
+ v("p", nt, r(w(o).saveGate.body), 1),
538
+ v("ul", rt, [(a(!0), E(g, null, n(e.issues, (e) => (a(), E("li", {
539
539
  key: `${e.ruleId}-${e.blockId ?? "template"}`,
540
540
  class: "tpl:flex tpl:flex-col tpl:gap-0.5 tpl:rounded tpl:px-2 tpl:py-1.5"
541
- }, [v("span", rt, r(e.message), 1), v("span", it, r(e.ruleId), 1)]))), 128))]),
542
- v("footer", at, [v("button", {
541
+ }, [v("span", it, r(e.message), 1), v("span", at, r(e.ruleId), 1)]))), 128))]),
542
+ v("footer", ot, [v("button", {
543
543
  type: "button",
544
544
  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)]",
545
545
  onClick: s[0] ||= (e) => i("cancel")
@@ -548,11 +548,11 @@ var Ze = ["aria-label"], Qe = { class: "tpl:flex tpl:max-h-[80vh] tpl:w-full tpl
548
548
  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",
549
549
  onClick: s[1] ||= (e) => i("confirm")
550
550
  }, r(w(o).saveGate.confirm), 1)])
551
- ])], 8, Ze)) : f("", !0)]),
551
+ ])], 8, Qe)) : f("", !0)]),
552
552
  _: 1
553
553
  }));
554
554
  }
555
- }), st = {
555
+ }), ct = {
556
556
  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",
557
557
  style: {
558
558
  "background-color": "color-mix(in srgb, var(--tpl-bg) 80%, transparent)",
@@ -561,24 +561,24 @@ var Ze = ["aria-label"], Qe = { class: "tpl:flex tpl:max-h-[80vh] tpl:w-full tpl
561
561
  "box-shadow": "var(--tpl-shadow-md)",
562
562
  "border-bottom": "1px solid var(--tpl-border)"
563
563
  }
564
- }, ct = { class: "tpl-header-left tpl:flex tpl:min-w-[200px] tpl:items-center tpl:gap-3" }, lt = {
564
+ }, lt = { class: "tpl-header-left tpl:flex tpl:min-w-[200px] tpl:items-center tpl:gap-3" }, ut = {
565
565
  key: 0,
566
566
  class: "tpl:text-xs tpl:opacity-60 tpl:text-[var(--tpl-text-muted)]"
567
- }, ut = { class: "tpl-header-center tpl:flex tpl:items-center tpl:justify-center tpl:gap-10" }, dt = { class: "tpl-header-right tpl:flex tpl:min-w-[200px] tpl:items-center tpl:justify-end tpl:gap-3" }, ft = ["data-tooltip"], pt = {
567
+ }, dt = { class: "tpl-header-center tpl:flex tpl:items-center tpl:justify-center tpl:gap-10" }, ft = { class: "tpl-header-right tpl:flex tpl:min-w-[200px] tpl:items-center tpl:justify-end tpl:gap-3" }, pt = ["data-tooltip"], mt = {
568
568
  key: 1,
569
569
  "aria-live": "polite",
570
570
  class: "tpl-status tpl:flex tpl:items-center tpl:gap-1.5 tpl:text-xs tpl:text-[var(--tpl-success)]"
571
- }, mt = {
571
+ }, ht = {
572
572
  key: 2,
573
573
  "aria-live": "polite",
574
574
  class: "tpl-status tpl:flex tpl:items-center tpl:gap-1.5 tpl:text-xs tpl:text-[var(--tpl-text-muted)]"
575
- }, ht = ["aria-label", "aria-expanded"], gt = {
575
+ }, gt = ["aria-label", "aria-expanded"], _t = {
576
576
  key: 0,
577
577
  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)]"
578
- }, _t = ["aria-expanded"], vt = {
578
+ }, vt = ["aria-expanded"], yt = {
579
579
  key: 0,
580
580
  class: "tpl:absolute tpl:right-0 tpl:top-full tpl:z-50 tpl:mt-1 tpl:origin-top-right"
581
- }, yt = ["disabled"], bt = ["disabled"], xt = /* @__PURE__ */ t({
581
+ }, bt = ["disabled"], xt = ["disabled"], St = /* @__PURE__ */ t({
582
582
  __name: "CloudHeader",
583
583
  props: {
584
584
  editor: {},
@@ -596,23 +596,23 @@ var Ze = ["aria-label"], Qe = { class: "tpl:flex tpl:max-h-[80vh] tpl:w-full tpl
596
596
  },
597
597
  emits: ["save"],
598
598
  setup(t) {
599
- let n = s(() => import("./CollaboratorBar-C6TfqpyV.js")), i = s(() => import("./SnapshotHistory-Dblt21_W.js")), o = s(() => import("./AiFeatureMenu-CKnEDzme.js")), { t: l, format: u } = X();
600
- return (s, d) => (a(), E("header", st, [
601
- v("div", ct, [t.featureFlags.templateLimit.value === null ? f("", !0) : (a(), E("span", lt, r(w(u)(w(l).header.templatesUsed, {
599
+ let n = s(() => import("./CollaboratorBar-DZXuPSfU.js")), i = s(() => import("./SnapshotHistory-Cd-a_xGv.js")), o = s(() => import("./AiFeatureMenu-D9UhqJAa.js")), { t: l, format: u } = X();
600
+ return (s, d) => (a(), E("header", ct, [
601
+ v("div", lt, [t.featureFlags.templateLimit.value === null ? f("", !0) : (a(), E("span", ut, r(w(u)(w(l).header.templatesUsed, {
602
602
  used: t.featureFlags.templateCount.value,
603
603
  max: t.featureFlags.templateLimit.value
604
604
  })), 1))]),
605
- v("div", ut, [
606
- D(U, { "on-before-undo": t.onBeforeHistoryUndo }, null, 8, ["on-before-undo"]),
607
- D(be, {
605
+ v("div", dt, [
606
+ D(H, { "on-before-undo": t.onBeforeHistoryUndo }, null, 8, ["on-before-undo"]),
607
+ D(Se, {
608
608
  viewport: t.editor.state.viewport,
609
609
  onChange: t.editor.setViewport
610
610
  }, null, 8, ["viewport", "onChange"]),
611
- D(H, {
611
+ D(fe, {
612
612
  "dark-mode": t.editor.state.darkMode,
613
613
  onChange: t.editor.setDarkMode
614
614
  }, null, 8, ["dark-mode", "onChange"]),
615
- D(G, {
615
+ D(W, {
616
616
  "preview-mode": t.editor.state.previewMode,
617
617
  onChange: t.editor.setPreviewMode
618
618
  }, null, 8, ["preview-mode", "onChange"]),
@@ -636,19 +636,19 @@ var Ze = ["aria-label"], Qe = { class: "tpl:flex tpl:max-h-[80vh] tpl:w-full tpl
636
636
  "onNavigate"
637
637
  ])) : f("", !0)
638
638
  ]),
639
- v("div", dt, [
639
+ v("div", ft, [
640
640
  t.featureFlags.saveStatus.value === "error" ? (a(), E("div", {
641
641
  key: 0,
642
642
  "aria-live": "assertive",
643
643
  class: "tpl-tooltip tpl-status tpl:flex tpl:items-center tpl:gap-1.5 tpl:text-xs tpl:text-[var(--tpl-danger)]",
644
644
  "data-tooltip": t.featureFlags.saveErrorMessage.value
645
- }, [D(w(q), {
645
+ }, [D(w(K), {
646
646
  size: 12,
647
647
  "stroke-width": 2.5
648
- }), p(" " + r(w(l).header.saveFailed), 1)], 8, ft)) : t.featureFlags.saveStatus.value === "saved" ? (a(), E("div", pt, [D(w(K), {
648
+ }), p(" " + r(w(l).header.saveFailed), 1)], 8, pt)) : t.featureFlags.saveStatus.value === "saved" ? (a(), E("div", mt, [D(w(G), {
649
649
  size: 12,
650
650
  "stroke-width": 2.5
651
- }), p(" " + r(w(l).header.saved), 1)])) : t.editor.state.isDirty ? (a(), E("div", mt, [d[4] ||= v("span", { class: "tpl-pulse tpl:size-1.5 tpl:rounded-full tpl:bg-[var(--tpl-primary)]" }, null, -1), p(" " + r(w(l).header.unsaved), 1)])) : f("", !0),
651
+ }), p(" " + r(w(l).header.saved), 1)])) : t.editor.state.isDirty ? (a(), E("div", ht, [d[4] ||= v("span", { class: "tpl-pulse tpl:size-1.5 tpl:rounded-full tpl:bg-[var(--tpl-primary)]" }, null, -1), p(" " + r(w(l).header.unsaved), 1)])) : f("", !0),
652
652
  t.commentsInstance.isEnabled.value && t.featureFlags.hasTemplateSaved.value ? (a(), E("button", {
653
653
  key: 3,
654
654
  "aria-label": t.commentsInstance.unresolvedCount.value > 0 ? `${w(l).comments.button} (${t.commentsInstance.unresolvedCount.value})` : w(l).comments.button,
@@ -661,13 +661,13 @@ var Ze = ["aria-label"], Qe = { class: "tpl:flex tpl:max-h-[80vh] tpl:w-full tpl
661
661
  }),
662
662
  onClick: d[0] ||= (e) => t.panelState.commentsOpen.value = !t.panelState.commentsOpen.value
663
663
  }, [
664
- D(w(J), {
664
+ D(w(q), {
665
665
  size: 16,
666
666
  "stroke-width": 2
667
667
  }),
668
668
  p(" " + r(w(l).comments.button) + " ", 1),
669
- t.commentsInstance.unresolvedCount.value > 0 && !t.panelState.commentsOpen.value ? (a(), E("span", gt, r(t.commentsInstance.unresolvedCount.value), 1)) : f("", !0)
670
- ], 14, ht)) : f("", !0),
669
+ t.commentsInstance.unresolvedCount.value > 0 && !t.panelState.commentsOpen.value ? (a(), E("span", _t, r(t.commentsInstance.unresolvedCount.value), 1)) : f("", !0)
670
+ ], 14, gt)) : f("", !0),
671
671
  t.featureFlags.canUseAiGeneration.value && t.featureFlags.hasTemplateSaved.value ? (a(), E("div", {
672
672
  key: 4,
673
673
  ref: (e) => t.panelState.aiMenuRef.value = e,
@@ -676,11 +676,11 @@ var Ze = ["aria-label"], Qe = { class: "tpl:flex tpl:max-h-[80vh] tpl:w-full tpl
676
676
  "aria-expanded": t.panelState.aiMenuOpen.value,
677
677
  class: e(["tpl-ai-btn tpl:inline-flex tpl:items-center tpl:gap-1.5 tpl:rounded-[var(--tpl-radius-sm)] tpl:border-none tpl:px-4 tpl:py-2 tpl:text-sm tpl:font-semibold tpl:whitespace-nowrap tpl:transition-all tpl:duration-200", t.panelState.aiButtonActive.value ? "tpl-ai-btn--active" : "tpl-ai-btn--idle"]),
678
678
  onClick: d[1] ||= m((...e) => t.panelState.toggleAiMenu && t.panelState.toggleAiMenu(...e), ["stop"])
679
- }, [D(w(Ce), {
679
+ }, [D(w(J), {
680
680
  size: 16,
681
681
  "stroke-width": 2,
682
682
  class: "tpl-ai-btn-icon"
683
- }), p(" " + r(w(l).aiChat.button), 1)], 10, _t), D(T, {
683
+ }), p(" " + r(w(l).aiChat.button), 1)], 10, vt), D(T, {
684
684
  "enter-active-class": "tpl:transition-all tpl:duration-150 tpl:ease-out",
685
685
  "enter-from-class": "tpl:scale-95 tpl:opacity-0",
686
686
  "enter-to-class": "tpl:scale-100 tpl:opacity-100",
@@ -688,7 +688,7 @@ var Ze = ["aria-label"], Qe = { class: "tpl:flex tpl:max-h-[80vh] tpl:w-full tpl
688
688
  "leave-from-class": "tpl:scale-100 tpl:opacity-100",
689
689
  "leave-to-class": "tpl:scale-95 tpl:opacity-0"
690
690
  }, {
691
- default: c(() => [t.panelState.aiMenuOpen.value ? (a(), E("div", vt, [D(w(o), {
691
+ default: c(() => [t.panelState.aiMenuOpen.value ? (a(), E("div", yt, [D(w(o), {
692
692
  "active-feature": t.panelState.activeAiFeature.value,
693
693
  onSelect: t.panelState.handleAiFeatureSelect
694
694
  }, null, 8, ["active-feature", "onSelect"])])) : f("", !0)]),
@@ -704,16 +704,16 @@ var Ze = ["aria-label"], Qe = { class: "tpl:flex tpl:max-h-[80vh] tpl:w-full tpl
704
704
  },
705
705
  disabled: t.testEmail.isSending.value || !t.featureFlags.hasTemplateSaved.value,
706
706
  onClick: d[2] ||= (e) => t.panelState.testEmailModalOpen.value = !0
707
- }, [t.testEmail.isSending.value ? (a(), _(w(Se), {
707
+ }, [t.testEmail.isSending.value ? (a(), _(w(we), {
708
708
  key: 1,
709
709
  class: "tpl-spinner",
710
710
  size: 16,
711
711
  "stroke-width": 2
712
- })) : (a(), _(w(Y), {
712
+ })) : (a(), _(w(Te), {
713
713
  key: 0,
714
714
  size: 16,
715
715
  "stroke-width": 2
716
- })), p(" " + r(w(l).testEmail.button), 1)], 10, yt)) : f("", !0),
716
+ })), p(" " + r(w(l).testEmail.button), 1)], 10, bt)) : f("", !0),
717
717
  v("button", {
718
718
  class: e(w(Z)),
719
719
  style: {
@@ -723,20 +723,20 @@ var Ze = ["aria-label"], Qe = { class: "tpl:flex tpl:max-h-[80vh] tpl:w-full tpl
723
723
  },
724
724
  disabled: t.isSaveDisabled,
725
725
  onClick: d[3] ||= (e) => s.$emit("save")
726
- }, [t.isSaving ? (a(), _(w(Se), {
726
+ }, [t.isSaving ? (a(), _(w(we), {
727
727
  key: 1,
728
728
  class: "tpl-spinner",
729
729
  size: 16,
730
730
  "stroke-width": 2
731
- })) : (a(), _(w(Ve), {
731
+ })) : (a(), _(w(He), {
732
732
  key: 0,
733
733
  size: 16,
734
734
  "stroke-width": 2
735
- })), p(" " + r(t.isSaving ? w(l).header.saving : w(l).header.save), 1)], 10, bt)
735
+ })), p(" " + r(t.isSaving ? w(l).header.saving : w(l).header.save), 1)], 10, xt)
736
736
  ])
737
737
  ]));
738
738
  }
739
- }), St = /* @__PURE__ */ t({
739
+ }), Ct = /* @__PURE__ */ t({
740
740
  __name: "CloudPanels",
741
741
  props: {
742
742
  config: {},
@@ -759,7 +759,7 @@ var Ze = ["aria-label"], Qe = { class: "tpl:flex tpl:max-h-[80vh] tpl:w-full tpl
759
759
  "module-insert"
760
760
  ],
761
761
  setup(e, { expose: t, emit: n }) {
762
- let r = s(() => import("./AiChatSidebar-DAJOuHPG.js")), i = s(() => import("./CommentsSidebar-DE6ZsM4D.js")), o = s(() => import("./DesignReferenceSidebar-C6yDJlD8.js")), c = s(() => import("./TemplateScoringPanel-CS7o62zS.js")), l = s(() => import("./TestEmailModal-D_y3ZksG.js")), u = s(() => import("./SaveModuleDialog-QjgPFEDg.js")), d = s(() => import("./ModuleBrowserModal-DUKuDjS-.js")), p = s(async () => (await import("@aswin.dev/media-library")).MediaLibraryModal), m = e;
762
+ let r = s(() => import("./AiChatSidebar-CYh7SPHW.js")), i = s(() => import("./CommentsSidebar-BVKFtxml.js")), o = s(() => import("./DesignReferenceSidebar-_QsmFpE_.js")), c = s(() => import("./TemplateScoringPanel-C8WixDsv.js")), l = s(() => import("./TestEmailModal-CEj_81cQ.js")), u = s(() => import("./SaveModuleDialog-B1EJtMGq.js")), d = s(() => import("./ModuleBrowserModal-Bth1crh_.js")), p = s(async () => (await import("@aswin.dev/media-library")).MediaLibraryModal), m = e;
763
763
  function v(e) {
764
764
  e === void 0 || !m.editor.content.value.settings.popup || m.editor.updateSettings({ width: e });
765
765
  }
@@ -838,23 +838,23 @@ var Ze = ["aria-label"], Qe = { class: "tpl:flex tpl:max-h-[80vh] tpl:w-full tpl
838
838
  ])
839
839
  ], 64));
840
840
  }
841
- }), Ct = {
841
+ }), wt = {
842
842
  key: 0,
843
843
  class: "tpl-loading tpl:absolute tpl:inset-0 tpl:z-overlay tpl:flex tpl:flex-col tpl:bg-[var(--tpl-bg)]"
844
- }, wt = { 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)]" }, Et = /* @__PURE__ */ t({
844
+ }, Tt = { class: "tpl:flex tpl:flex-1 tpl:overflow-hidden" }, Et = { 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)]" }, Dt = /* @__PURE__ */ t({
845
845
  __name: "CloudLoadingOverlay",
846
846
  props: { visible: { type: Boolean } },
847
847
  setup(e) {
848
- return (t, r) => e.visible ? (a(), E("div", Ct, [r[1] ||= O("<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), v("div", wt, [v("div", Tt, [(a(), E(g, null, n(5, (e) => v("div", {
848
+ return (t, r) => e.visible ? (a(), E("div", wt, [r[1] ||= O("<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), v("div", Tt, [v("div", Et, [(a(), E(g, null, n(5, (e) => v("div", {
849
849
  key: e,
850
850
  class: "tpl-shimmer tpl:size-7 tpl:rounded-[var(--tpl-radius-sm)]"
851
851
  })), 64))]), r[0] ||= O("<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)])])) : f("", !0);
852
852
  }
853
- }), Dt = {
853
+ }), Ot = {
854
854
  key: 0,
855
855
  role: "alert",
856
856
  class: "tpl-error tpl:absolute tpl:inset-0 tpl:z-overlay tpl:flex tpl:flex-col tpl:items-center tpl:justify-center tpl:gap-6 tpl:px-8 tpl:bg-[var(--tpl-bg)]"
857
- }, Ot = { class: "tpl:flex tpl:size-16 tpl:items-center tpl:justify-center tpl:rounded-full tpl:bg-[var(--tpl-danger-light)]" }, kt = { class: "tpl:flex tpl:flex-col tpl:items-center tpl:gap-2 tpl:text-center" }, At = { class: "tpl:text-lg tpl:font-semibold tpl:text-[var(--tpl-text)]" }, jt = { class: "tpl:max-w-md tpl:text-sm tpl:text-[var(--tpl-text-muted)]" }, Mt = /* @__PURE__ */ t({
857
+ }, kt = { 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" }, jt = { class: "tpl:text-lg tpl:font-semibold tpl:text-[var(--tpl-text)]" }, Mt = { class: "tpl:max-w-md tpl:text-sm tpl:text-[var(--tpl-text-muted)]" }, Nt = /* @__PURE__ */ t({
858
858
  __name: "CloudErrorOverlay",
859
859
  props: {
860
860
  error: {},
@@ -869,13 +869,13 @@ var Ze = ["aria-label"], Qe = { class: "tpl:flex tpl:max-h-[80vh] tpl:w-full tpl
869
869
  function s(e) {
870
870
  return "isNotFound" in e && !!e.isNotFound;
871
871
  }
872
- return (t, c) => e.visible && e.error ? (a(), E("div", Dt, [
873
- v("div", Ot, [D(w(q), {
872
+ return (t, c) => e.visible && e.error ? (a(), E("div", Ot, [
873
+ v("div", kt, [D(w(K), {
874
874
  size: 32,
875
875
  "stroke-width": 1.5,
876
876
  class: "tpl:text-[var(--tpl-danger)]"
877
877
  })]),
878
- v("div", kt, [v("h2", At, r(w(i).error.title), 1), v("p", jt, r(o(e.error)), 1)]),
878
+ v("div", At, [v("h2", jt, r(w(i).error.title), 1), v("p", Mt, r(o(e.error)), 1)]),
879
879
  s(e.error) ? f("", !0) : (a(), E("button", {
880
880
  key: 0,
881
881
  class: "tpl-btn tpl-btn-primary tpl:inline-flex tpl:items-center tpl:gap-2 tpl:rounded-md tpl:px-4 tpl:py-2.5 tpl:text-sm tpl:font-medium tpl:shadow-xs tpl:transition-all tpl:duration-150 tpl:hover:opacity-90 tpl:bg-[var(--tpl-primary)] tpl:text-[var(--tpl-bg)]",
@@ -883,20 +883,20 @@ var Ze = ["aria-label"], Qe = { class: "tpl:flex tpl:max-h-[80vh] tpl:w-full tpl
883
883
  }, r(w(i).error.retry), 1))
884
884
  ])) : f("", !0);
885
885
  }
886
- }), Nt = {
886
+ }), Pt = {
887
887
  key: 0,
888
888
  class: "tpl-preview-banner tpl:absolute tpl:top-14 tpl:right-0 tpl:left-0 tpl:z-40 tpl:flex tpl:items-center tpl:justify-center tpl:gap-4 tpl:px-4 tpl:py-3 tpl:bg-[var(--tpl-primary-light)] tpl:border-b tpl:border-[var(--tpl-primary)]"
889
- }, Pt = { class: "tpl:flex tpl:items-center tpl:gap-2 tpl:text-sm tpl:text-[var(--tpl-text)]" }, Ft = { class: "tpl:flex tpl:items-center tpl:gap-2" }, It = /* @__PURE__ */ t({
889
+ }, Ft = { class: "tpl:flex tpl:items-center tpl:gap-2 tpl:text-sm tpl:text-[var(--tpl-text)]" }, It = { class: "tpl:flex tpl:items-center tpl:gap-2" }, Lt = /* @__PURE__ */ t({
890
890
  __name: "SnapshotPreviewBanner",
891
891
  props: { visible: { type: Boolean } },
892
892
  emits: ["cancel", "confirm"],
893
893
  setup(e, { emit: t }) {
894
894
  let n = t, { t: i } = X();
895
- return (t, o) => e.visible ? (a(), E("div", Nt, [v("div", Pt, [D(w(xe), {
895
+ return (t, o) => e.visible ? (a(), E("div", Pt, [v("div", Ft, [D(w(Ce), {
896
896
  size: 18,
897
897
  "stroke-width": 2,
898
898
  class: "tpl:text-[var(--tpl-primary)]"
899
- }), v("span", null, r(w(i).snapshotPreview.message), 1)]), v("div", Ft, [v("button", {
899
+ }), v("span", null, r(w(i).snapshotPreview.message), 1)]), v("div", It, [v("button", {
900
900
  class: "tpl:rounded-md tpl:px-3 tpl:py-1.5 tpl:text-sm tpl:font-medium tpl:transition-all tpl:duration-150 tpl:text-[var(--tpl-text-muted)] tpl:border tpl:border-[var(--tpl-border)]",
901
901
  style: { "background-color": "transparent" },
902
902
  onClick: o[0] ||= (e) => n("cancel")
@@ -905,7 +905,7 @@ var Ze = ["aria-label"], Qe = { class: "tpl:flex tpl:max-h-[80vh] tpl:w-full tpl
905
905
  onClick: o[1] ||= (e) => n("confirm")
906
906
  }, r(w(i).snapshotPreview.restore), 1)])])) : f("", !0);
907
907
  }
908
- }), Lt = {
908
+ }), Rt = {
909
909
  key: 0,
910
910
  role: "status",
911
911
  "aria-live": "polite",
@@ -915,17 +915,17 @@ var Ze = ["aria-label"], Qe = { class: "tpl:flex tpl:max-h-[80vh] tpl:w-full tpl
915
915
  color: "var(--tpl-text)",
916
916
  border: "1px solid var(--tpl-warning)"
917
917
  }
918
- }, Rt = /* @__PURE__ */ t({
918
+ }, zt = /* @__PURE__ */ t({
919
919
  __name: "CollabUndoToast",
920
920
  props: { visible: { type: Boolean } },
921
921
  setup(e) {
922
- let { t } = B();
923
- return (n, i) => e.visible ? (a(), E("div", Lt, r(w(t).history.collabWarning), 1)) : f("", !0);
922
+ let { t } = V();
923
+ return (n, i) => e.visible ? (a(), E("div", Rt, r(w(t).history.collabWarning), 1)) : f("", !0);
924
924
  }
925
- }), zt = ["data-tpl-theme"], Bt = { class: "tpl:sticky tpl:top-0 tpl:z-40 tpl:h-0" }, Vt = {
925
+ }), Bt = ["data-tpl-theme"], Vt = { class: "tpl:sticky tpl:top-0 tpl:z-40 tpl:h-0" }, Ht = {
926
926
  key: 0,
927
927
  class: "tpl-popup-browser-frame tpl:flex tpl:w-full tpl:flex-col tpl:overflow-hidden tpl:rounded-xl tpl:border tpl:border-[var(--tpl-border)] tpl:bg-[var(--tpl-bg)] tpl:shadow-[var(--tpl-shadow-xl)]"
928
- }, Ht = ["aria-label"], Ut = /* @__PURE__ */ Te(/* @__PURE__ */ t({
928
+ }, Ut = ["aria-label"], Wt = /* @__PURE__ */ Y(/* @__PURE__ */ t({
929
929
  __name: "CloudEditor",
930
930
  props: {
931
931
  config: {},
@@ -937,87 +937,89 @@ var Ze = ["aria-label"], Qe = { class: "tpl:flex tpl:max-h-[80vh] tpl:w-full tpl
937
937
  setup(t, { expose: n, emit: s }) {
938
938
  let d = t;
939
939
  o(ae, d.cloudTranslations);
940
- let m = s, C = h(null), k = h(null), A = qe({
940
+ let m = s, C = h(null), k = h(null), A = Je({
941
941
  config: d.config,
942
942
  translations: d.translations,
943
943
  fontsManager: d.fontsManager,
944
944
  emit: m,
945
945
  getCommentsSidebar: () => C.value ? { filterByBlock: C.value.filterCommentsByBlock } : null
946
- }), { isInitializing: M, isAuthReady: ne, initError: re, planConfigInstance: P, websocket: F, collaboration: I, isCollaborationEnabled: ie, editor: L, core: R, featureFlags: z, mediaLib: oe, exporter: se, testEmail: B, commentsInstance: V, savedModulesHeadless: H, panelState: U, snapshotPreview: W, collabWarning: G, showSaveModuleDialog: be, showModuleBrowserModal: K, saveModulePreSelectedBlockId: q, setThemeOverrides: xe, setUiTheme: Se } = A, J = h("blocks");
947
- o(ce, J);
948
- let Y = S(() => N(d.config.editorType) === "popup"), Ce = S(() => Y.value && J.value === "displayRules"), we = S(() => Y.value && J.value === "schedule"), Te = S(() => J.value === "design"), X = S(() => Y.value && (Ce.value || we.value || Te.value)), Z = S(() => Ce.value || we.value);
949
- l(() => [ne.value, L.content.value.settings.popup], ([e]) => {
950
- if (!e || !Y.value || L.content.value.settings.popup) return;
951
- let t = ee();
952
- L.updateSettings({
946
+ }), { isInitializing: N, isAuthReady: te, initError: ne, planConfigInstance: F, websocket: I, collaboration: L, isCollaborationEnabled: re, editor: R, core: z, featureFlags: B, mediaLib: se, exporter: ce, testEmail: V, commentsInstance: le, savedModulesHeadless: fe, panelState: H, snapshotPreview: U, collabWarning: W, showSaveModuleDialog: Se, showModuleBrowserModal: G, saveModulePreSelectedBlockId: K, setThemeOverrides: Ce, setUiTheme: we } = A, q = h("blocks");
947
+ o(ie, q);
948
+ let Te = h(null);
949
+ o(oe, Te);
950
+ let J = S(() => P(d.config.editorType) === "popup"), Ee = S(() => J.value && q.value === "displayRules"), Y = S(() => J.value && q.value === "schedule"), X = S(() => q.value === "design"), Z = S(() => J.value && (Ee.value || Y.value || X.value)), De = S(() => Ee.value || Y.value);
951
+ l(() => [te.value, R.content.value.settings.popup], ([e]) => {
952
+ if (!e || !J.value || R.content.value.settings.popup) return;
953
+ let t = j();
954
+ R.updateSettings({
953
955
  popup: t,
954
- width: j[t.design.sizePreset]
956
+ width: M[t.design.sizePreset]
955
957
  });
956
958
  }, { immediate: !0 });
957
- async function Ee(e) {
959
+ async function Oe(e) {
958
960
  try {
959
- await B.sendTestEmail(e), U.testEmailModalOpen.value = !1;
961
+ await V.sendTestEmail(e), H.testEmailModalOpen.value = !1;
960
962
  } catch {}
961
963
  }
962
- function De(e, t) {
964
+ function ke(e, t) {
963
965
  for (let n = 0; n < e.content.length; n++) {
964
- let r = te(e.content[n]), i = t === void 0 ? void 0 : t + n;
965
- L.addBlock(r, void 0, void 0, i);
966
+ let r = ee(e.content[n]), i = t === void 0 ? void 0 : t + n;
967
+ R.addBlock(r, void 0, void 0, i);
966
968
  }
967
- K.value = !1;
969
+ G.value = !1;
968
970
  }
969
- let Q = Ye({
971
+ let Q = Xe({
970
972
  config: d.config,
971
- editor: L,
972
- websocket: F,
973
- planConfigInstance: P,
974
- snapshotPreview: W,
975
- core: R,
976
- exporter: se,
977
- featureFlags: z,
973
+ editor: R,
974
+ websocket: I,
975
+ planConfigInstance: F,
976
+ snapshotPreview: U,
977
+ core: z,
978
+ exporter: ce,
979
+ featureFlags: B,
978
980
  isDestroyed: A.isDestroyed
979
- }), Oe = S(() => {
980
- if (L.state.previewMode) return ["tpl:left-0", "tpl:right-0"];
981
- let e = U.rightPanelOpen.value ? "tpl:right-[680px]" : "tpl:right-[320px]";
982
- if (!Y.value) return ["tpl:left-12", e];
981
+ }), Ae = S(() => {
982
+ if (R.state.previewMode) return ["tpl:left-0", "tpl:right-0"];
983
+ let e = H.rightPanelOpen.value ? "tpl:right-[680px]" : "tpl:right-[320px]";
984
+ if (!J.value) return ["tpl:left-12", e];
983
985
  let t;
984
- t = J.value === "blocks" ? "tpl:left-[272px]" : Te.value ? "tpl:left-[392px]" : "tpl:left-[72px]";
985
- let n = X.value ? "tpl:right-0" : e;
986
+ t = q.value === "blocks" ? "tpl:left-[272px]" : X.value ? "tpl:left-[392px]" : "tpl:left-[72px]";
987
+ let n = Z.value ? "tpl:right-0" : e;
986
988
  return [t, n];
987
- }), $ = Xe({
988
- issues: R.accessibilityLint ? R.accessibilityLint.issues : h([]),
989
- planConfig: P.config
989
+ }), $ = Ze({
990
+ issues: z.accessibilityLint ? z.accessibilityLint.issues : h([]),
991
+ planConfig: F.config
990
992
  });
991
- async function ke() {
993
+ async function je() {
992
994
  await $.tryRunSave(() => Q.saveTemplate().catch((e) => d.config.onError?.(e)));
993
995
  }
994
- return A.onSaveHook.value = ke, y(() => {
996
+ return A.onSaveHook.value = je, y(() => {
995
997
  A.initialize();
996
998
  }), i(() => {
997
999
  A.destroy();
998
1000
  }), n({
999
- getContent: () => L.content.value,
1000
- setContent: (e) => L.setContent(e),
1001
- setTheme: Se,
1002
- setThemeOverrides: xe,
1001
+ getContent: () => R.content.value,
1002
+ setContent: (e) => R.setContent(e),
1003
+ setTheme: we,
1004
+ setThemeOverrides: Ce,
1003
1005
  undo: () => {
1004
- G.showCollabUndoWarning(), R.history.undo();
1006
+ W.showCollabUndoWarning(), z.history.undo();
1005
1007
  },
1006
- redo: () => R.history.redo(),
1007
- canUndo: () => R.history.canUndo.value,
1008
- canRedo: () => R.history.canRedo.value,
1008
+ redo: () => z.history.redo(),
1009
+ canUndo: () => z.history.canUndo.value,
1010
+ canRedo: () => z.history.canRedo.value,
1009
1011
  create: Q.createTemplate,
1010
1012
  load: Q.loadTemplate,
1011
1013
  save: Q.saveTemplate,
1012
- sendTestEmail: B.sendTestEmail,
1014
+ sendTestEmail: V.sendTestEmail,
1013
1015
  startTour: (e) => k.value?.start(e),
1014
1016
  dismissTour: () => k.value?.dismiss(),
1015
- resetTourDismissed: () => pe(d.config.tour),
1016
- isTourDismissed: () => d.config.tour ? ue(d.config.tour) : !0
1017
+ resetTourDismissed: () => he(d.config.tour),
1018
+ isTourDismissed: () => d.config.tour ? de(d.config.tour) : !0
1017
1019
  }), (n, i) => (a(), E("div", {
1018
- class: e(["tpl tpl:relative tpl:h-full tpl:overflow-hidden", { "tpl:dark": w(L).state.darkMode }]),
1019
- "data-tpl-theme": w(R).resolvedTheme.value,
1020
- style: b(w(R).themeStyles.value)
1020
+ class: e(["tpl tpl:relative tpl:h-full tpl:overflow-hidden", { "tpl:dark": w(R).state.darkMode }]),
1021
+ "data-tpl-theme": w(z).resolvedTheme.value,
1022
+ style: b(w(z).themeStyles.value)
1021
1023
  }, [
1022
1024
  D(T, {
1023
1025
  "enter-active-class": "tpl:transition-opacity tpl:duration-200",
@@ -1027,7 +1029,7 @@ var Ze = ["aria-label"], Qe = { class: "tpl:flex tpl:max-h-[80vh] tpl:w-full tpl
1027
1029
  "leave-from-class": "tpl:opacity-100",
1028
1030
  "leave-to-class": "tpl:opacity-0"
1029
1031
  }, {
1030
- default: c(() => [D(Et, { visible: w(M) || w(L).state.isLoading }, null, 8, ["visible"])]),
1032
+ default: c(() => [D(Dt, { visible: w(N) || w(R).state.isLoading }, null, 8, ["visible"])]),
1031
1033
  _: 1
1032
1034
  }),
1033
1035
  D(T, {
@@ -1038,9 +1040,9 @@ var Ze = ["aria-label"], Qe = { class: "tpl:flex tpl:max-h-[80vh] tpl:w-full tpl
1038
1040
  "leave-from-class": "tpl:opacity-100",
1039
1041
  "leave-to-class": "tpl:opacity-0"
1040
1042
  }, {
1041
- default: c(() => [D(Mt, {
1042
- error: w(re),
1043
- visible: !!w(re) && !w(M),
1043
+ default: c(() => [D(Nt, {
1044
+ error: w(ne),
1045
+ visible: !!w(ne) && !w(N),
1044
1046
  onRetry: w(A).initialize
1045
1047
  }, null, 8, [
1046
1048
  "error",
@@ -1049,20 +1051,20 @@ var Ze = ["aria-label"], Qe = { class: "tpl:flex tpl:max-h-[80vh] tpl:w-full tpl
1049
1051
  ])]),
1050
1052
  _: 1
1051
1053
  }),
1052
- D(xt, {
1053
- editor: w(L),
1054
- "on-before-history-undo": w(G).showCollabUndoWarning,
1055
- "feature-flags": w(z),
1056
- "panel-state": w(U),
1057
- "snapshot-preview": w(W),
1058
- "comments-instance": w(V),
1059
- "test-email": w(B),
1060
- websocket: w(F),
1061
- collaboration: w(I),
1062
- "is-collaboration-enabled": w(ie),
1063
- "is-saving": w(L).state.isSaving || w(z).isSaveExporting.value,
1064
- "is-save-disabled": w(L).state.isSaving || w(z).isSaveExporting.value || !w(L).state.isDirty,
1065
- onSave: ke
1054
+ D(St, {
1055
+ editor: w(R),
1056
+ "on-before-history-undo": w(W).showCollabUndoWarning,
1057
+ "feature-flags": w(B),
1058
+ "panel-state": w(H),
1059
+ "snapshot-preview": w(U),
1060
+ "comments-instance": w(le),
1061
+ "test-email": w(V),
1062
+ websocket: w(I),
1063
+ collaboration: w(L),
1064
+ "is-collaboration-enabled": w(re),
1065
+ "is-saving": w(R).state.isSaving || w(B).isSaveExporting.value,
1066
+ "is-save-disabled": w(R).state.isSaving || w(B).isSaveExporting.value || !w(R).state.isDirty,
1067
+ onSave: je
1066
1068
  }, null, 8, [
1067
1069
  "editor",
1068
1070
  "on-before-history-undo",
@@ -1077,7 +1079,7 @@ var Ze = ["aria-label"], Qe = { class: "tpl:flex tpl:max-h-[80vh] tpl:w-full tpl
1077
1079
  "is-saving",
1078
1080
  "is-save-disabled"
1079
1081
  ]),
1080
- D(ot, {
1082
+ D(st, {
1081
1083
  open: w($).modalOpen.value,
1082
1084
  issues: w($).blockingIssues.value,
1083
1085
  onCancel: w($).cancel,
@@ -1088,10 +1090,10 @@ var Ze = ["aria-label"], Qe = { class: "tpl:flex tpl:max-h-[80vh] tpl:w-full tpl
1088
1090
  "onCancel",
1089
1091
  "onConfirm"
1090
1092
  ]),
1091
- D(It, {
1092
- visible: w(W).isPreviewingSnapshot.value,
1093
- onCancel: w(W).cancelPreview,
1094
- onConfirm: w(W).confirmRestoreSnapshot
1093
+ D(Lt, {
1094
+ visible: w(U).isPreviewingSnapshot.value,
1095
+ onCancel: w(U).cancelPreview,
1096
+ onConfirm: w(U).confirmRestoreSnapshot
1095
1097
  }, null, 8, [
1096
1098
  "visible",
1097
1099
  "onCancel",
@@ -1105,21 +1107,21 @@ var Ze = ["aria-label"], Qe = { class: "tpl:flex tpl:max-h-[80vh] tpl:w-full tpl
1105
1107
  "leave-from-class": "tpl:translate-y-0 tpl:opacity-100",
1106
1108
  "leave-to-class": "tpl:translate-y-[-8px] tpl:opacity-0"
1107
1109
  }, {
1108
- default: c(() => [D(Rt, { visible: w(G).collabUndoWarningVisible.value }, null, 8, ["visible"])]),
1110
+ default: c(() => [D(zt, { visible: w(W).collabUndoWarningVisible.value }, null, 8, ["visible"])]),
1109
1111
  _: 1
1110
1112
  }),
1111
- u(D(ge, null, null, 512), [[x, !w(L).state.previewMode]]),
1113
+ u(D(ve, null, null, 512), [[x, !w(R).state.previewMode]]),
1112
1114
  v("div", {
1113
- class: e(["tpl-body tpl:absolute tpl:bottom-0 tpl:overflow-auto", [...Oe.value, w(W).isPreviewingSnapshot.value ? "tpl:top-[104px]" : "tpl:top-14"]]),
1115
+ class: e(["tpl-body tpl:absolute tpl:bottom-0 tpl:overflow-auto", [...Ae.value, w(U).isPreviewingSnapshot.value ? "tpl:top-[104px]" : "tpl:top-14"]]),
1114
1116
  style: b({
1115
1117
  transition: "all 300ms cubic-bezier(0.34, 1.56, 0.64, 1)",
1116
- backgroundColor: Z.value ? "var(--tpl-bg)" : "var(--tpl-canvas-bg)"
1118
+ backgroundColor: De.value ? "var(--tpl-bg)" : "var(--tpl-canvas-bg)"
1117
1119
  })
1118
- }, [Y.value && J.value === "displayRules" ? (a(), _(he, { key: 0 })) : Y.value && J.value === "schedule" ? (a(), _(ye, {
1120
+ }, [J.value && q.value === "displayRules" ? (a(), _(_e, { key: 0 })) : J.value && q.value === "schedule" ? (a(), _(xe, {
1119
1121
  key: 1,
1120
1122
  layout: "standalone"
1121
- })) : (a(), E(g, { key: 2 }, [v("div", Bt, [D(T, { name: "tpl-restore-btn" }, {
1122
- default: c(() => [w(R).conditionPreview.hasHiddenBlocks.value ? (a(), E("button", {
1123
+ })) : (a(), E(g, { key: 2 }, [v("div", Vt, [D(T, { name: "tpl-restore-btn" }, {
1124
+ default: c(() => [w(z).conditionPreview.hasHiddenBlocks.value ? (a(), E("button", {
1123
1125
  key: 0,
1124
1126
  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",
1125
1127
  style: {
@@ -1128,26 +1130,26 @@ var Ze = ["aria-label"], Qe = { class: "tpl:flex tpl:max-h-[80vh] tpl:w-full tpl
1128
1130
  "border-color": "var(--tpl-warning)",
1129
1131
  "backdrop-filter": "blur(8px)"
1130
1132
  },
1131
- onClick: i[0] ||= (e) => w(R).conditionPreview.reset()
1132
- }, [D(w(le), {
1133
+ onClick: i[0] ||= (e) => w(z).conditionPreview.reset()
1134
+ }, [D(w(ue), {
1133
1135
  size: 13,
1134
1136
  "stroke-width": 2
1135
- }), p(" " + r(w(R).t.blockSettings.restoreHiddenBlocks), 1)])) : f("", !0)]),
1137
+ }), p(" " + r(w(z).t.blockSettings.restoreHiddenBlocks), 1)])) : f("", !0)]),
1136
1138
  _: 1
1137
- })]), v("main", { class: e(["tpl-main tpl:flex tpl:w-full tpl:flex-col", Y.value ? "tpl:gap-3 tpl:px-4 tpl:pt-4 tpl:pb-6" : "tpl:items-center tpl:gap-3 tpl:p-8"]) }, [D(me, {
1138
- "preview-mode": w(L).state.previewMode,
1139
+ })]), v("main", { class: e(["tpl-main tpl:flex tpl:w-full tpl:flex-col", J.value ? "tpl:gap-3 tpl:px-4 tpl:pt-4 tpl:pb-6" : "tpl:items-center tpl:gap-3 tpl:p-8"]) }, [D(ge, {
1140
+ "preview-mode": w(R).state.previewMode,
1139
1141
  "multi-page-canvas": t.config.multiPageCanvas ?? !1
1140
- }, null, 8, ["preview-mode", "multi-page-canvas"]), Y.value ? (a(), E("div", Vt, [i[11] ||= O("<div class=\"tpl-popup-browser-bar tpl:relative tpl:flex tpl:h-9 tpl:items-center tpl:gap-1.5 tpl:border-b tpl:border-[var(--tpl-border)] tpl:bg-[var(--tpl-bg-elevated)] tpl:px-3\" aria-hidden=\"true\" data-v-1d3e3f2d><span class=\"tpl:block tpl:size-3 tpl:rounded-full\" style=\"background-color:#ff5f57;\" data-v-1d3e3f2d></span><span class=\"tpl:block tpl:size-3 tpl:rounded-full\" style=\"background-color:#febc2e;\" data-v-1d3e3f2d></span><span class=\"tpl:block tpl:size-3 tpl:rounded-full\" style=\"background-color:#28c840;\" data-v-1d3e3f2d></span><div class=\"tpl:pointer-events-none tpl:absolute tpl:left-1/2 tpl:top-1/2 tpl:-translate-x-1/2 tpl:-translate-y-1/2 tpl:rounded-md tpl:bg-[var(--tpl-bg)] tpl:px-3 tpl:py-0.5 tpl:text-[11px] tpl:font-medium tpl:text-[var(--tpl-text-muted)] tpl:tracking-tight\" data-v-1d3e3f2d> yourstore.com </div></div>", 1), D(fe, {
1141
- viewport: w(L).state.viewport,
1142
- content: w(L).content.value,
1143
- "selected-block-id": w(L).state.selectedBlockId,
1144
- "dark-mode": w(L).state.darkMode,
1145
- "preview-mode": w(L).state.previewMode,
1142
+ }, null, 8, ["preview-mode", "multi-page-canvas"]), J.value ? (a(), E("div", Ht, [i[11] ||= O("<div class=\"tpl-popup-browser-bar tpl:relative tpl:flex tpl:h-9 tpl:items-center tpl:gap-1.5 tpl:border-b tpl:border-[var(--tpl-border)] tpl:bg-[var(--tpl-bg-elevated)] tpl:px-3\" aria-hidden=\"true\" data-v-2d71aee7><span class=\"tpl:block tpl:size-3 tpl:rounded-full\" style=\"background-color:#ff5f57;\" data-v-2d71aee7></span><span class=\"tpl:block tpl:size-3 tpl:rounded-full\" style=\"background-color:#febc2e;\" data-v-2d71aee7></span><span class=\"tpl:block tpl:size-3 tpl:rounded-full\" style=\"background-color:#28c840;\" data-v-2d71aee7></span><div class=\"tpl:pointer-events-none tpl:absolute tpl:left-1/2 tpl:top-1/2 tpl:-translate-x-1/2 tpl:-translate-y-1/2 tpl:rounded-md tpl:bg-[var(--tpl-bg)] tpl:px-3 tpl:py-0.5 tpl:text-[11px] tpl:font-medium tpl:text-[var(--tpl-text-muted)] tpl:tracking-tight\" data-v-2d71aee7> yourstore.com </div></div>", 1), D(me, {
1143
+ viewport: w(R).state.viewport,
1144
+ content: w(R).content.value,
1145
+ "selected-block-id": w(R).state.selectedBlockId,
1146
+ "dark-mode": w(R).state.darkMode,
1147
+ "preview-mode": w(R).state.previewMode,
1146
1148
  "multi-page-canvas": t.config.multiPageCanvas ?? !1,
1147
- "locked-blocks": w(I)?.lockedBlocks.value ?? void 0,
1148
- onSelectBlock: w(L).selectBlock,
1149
- onOpenAiChat: i[1] ||= (e) => w(U).aiChatOpen.value = !0,
1150
- onOpenDesignReference: i[2] ||= (e) => w(U).designReferenceOpen.value = !0
1149
+ "locked-blocks": w(L)?.lockedBlocks.value ?? void 0,
1150
+ onSelectBlock: w(R).selectBlock,
1151
+ onOpenAiChat: i[1] ||= (e) => w(H).aiChatOpen.value = !0,
1152
+ onOpenDesignReference: i[2] ||= (e) => w(H).designReferenceOpen.value = !0
1151
1153
  }, null, 8, [
1152
1154
  "viewport",
1153
1155
  "content",
@@ -1157,18 +1159,18 @@ var Ze = ["aria-label"], Qe = { class: "tpl:flex tpl:max-h-[80vh] tpl:w-full tpl
1157
1159
  "multi-page-canvas",
1158
1160
  "locked-blocks",
1159
1161
  "onSelectBlock"
1160
- ])])) : (a(), _(fe, {
1162
+ ])])) : (a(), _(me, {
1161
1163
  key: 1,
1162
- viewport: w(L).state.viewport,
1163
- content: w(L).content.value,
1164
- "selected-block-id": w(L).state.selectedBlockId,
1165
- "dark-mode": w(L).state.darkMode,
1166
- "preview-mode": w(L).state.previewMode,
1164
+ viewport: w(R).state.viewport,
1165
+ content: w(R).content.value,
1166
+ "selected-block-id": w(R).state.selectedBlockId,
1167
+ "dark-mode": w(R).state.darkMode,
1168
+ "preview-mode": w(R).state.previewMode,
1167
1169
  "multi-page-canvas": t.config.multiPageCanvas ?? !1,
1168
- "locked-blocks": w(I)?.lockedBlocks.value ?? void 0,
1169
- onSelectBlock: w(L).selectBlock,
1170
- onOpenAiChat: i[3] ||= (e) => w(U).aiChatOpen.value = !0,
1171
- onOpenDesignReference: i[4] ||= (e) => w(U).designReferenceOpen.value = !0
1170
+ "locked-blocks": w(L)?.lockedBlocks.value ?? void 0,
1171
+ onSelectBlock: w(R).selectBlock,
1172
+ onOpenAiChat: i[3] ||= (e) => w(H).aiChatOpen.value = !0,
1173
+ onOpenDesignReference: i[4] ||= (e) => w(H).designReferenceOpen.value = !0
1172
1174
  }, null, 8, [
1173
1175
  "viewport",
1174
1176
  "content",
@@ -1179,51 +1181,51 @@ var Ze = ["aria-label"], Qe = { class: "tpl:flex tpl:max-h-[80vh] tpl:w-full tpl
1179
1181
  "locked-blocks",
1180
1182
  "onSelectBlock"
1181
1183
  ]))], 2)], 64))], 6),
1182
- t.config.branding !== !1 && !w(z).isWhiteLabeled.value ? (a(), _(ve, {
1184
+ t.config.branding !== !1 && !w(B).isWhiteLabeled.value ? (a(), _(be, {
1183
1185
  key: 0,
1184
- "position-class": Oe.value
1186
+ "position-class": Ae.value
1185
1187
  }, null, 8, ["position-class"])) : f("", !0),
1186
1188
  v("div", {
1187
1189
  class: "tpl-sr-only",
1188
1190
  role: "status",
1189
1191
  "aria-live": "polite",
1190
1192
  "aria-atomic": "true",
1191
- "aria-label": w(R).t.landmarks.reorderAnnouncements
1192
- }, r(w(R).keyboardReorder.announcement.value), 9, Ht),
1193
- u(D(de, {
1194
- "selected-block": w(L).selectedBlock.value,
1195
- settings: w(L).content.value.settings,
1196
- "shifted-left": w(U).rightPanelOpen.value,
1197
- onUpdateBlock: i[5] ||= (e) => w(L).updateBlock(w(L).selectedBlock.value.id, e),
1198
- onDeleteBlock: i[6] ||= (e) => w(R).blockActions.deleteBlock(w(L).selectedBlock.value.id),
1199
- onDuplicateBlock: i[7] ||= (e) => w(R).blockActions.duplicateBlock(w(L).selectedBlock.value),
1200
- onUpdateSettings: w(L).updateSettings
1193
+ "aria-label": w(z).t.landmarks.reorderAnnouncements
1194
+ }, r(w(z).keyboardReorder.announcement.value), 9, Ut),
1195
+ u(D(pe, {
1196
+ "selected-block": w(R).selectedBlock.value,
1197
+ settings: w(R).content.value.settings,
1198
+ "shifted-left": w(H).rightPanelOpen.value,
1199
+ onUpdateBlock: i[5] ||= (e) => w(R).updateBlock(w(R).selectedBlock.value.id, e),
1200
+ onDeleteBlock: i[6] ||= (e) => w(z).blockActions.deleteBlock(w(R).selectedBlock.value.id),
1201
+ onDuplicateBlock: i[7] ||= (e) => w(z).blockActions.duplicateBlock(w(R).selectedBlock.value),
1202
+ onUpdateSettings: w(R).updateSettings
1201
1203
  }, null, 8, [
1202
1204
  "selected-block",
1203
1205
  "settings",
1204
1206
  "shifted-left",
1205
1207
  "onUpdateSettings"
1206
- ]), [[x, !w(L).state.previewMode && !X.value]]),
1207
- !w(M) && w(ne) ? (a(), _(St, {
1208
+ ]), [[x, !w(R).state.previewMode && !Z.value]]),
1209
+ !w(N) && w(te) ? (a(), _(Ct, {
1208
1210
  key: 1,
1209
1211
  ref_key: "cloudPanelsRef",
1210
1212
  ref: C,
1211
1213
  config: d.config,
1212
- editor: w(L),
1213
- core: w(R),
1214
- "panel-state": w(U),
1215
- "plan-config-instance": w(P),
1216
- "test-email": w(B),
1217
- "media-lib": w(oe),
1218
- "saved-modules-headless": w(H),
1219
- "show-save-module-dialog": w(be),
1220
- "save-module-pre-selected-block-id": w(q),
1221
- "show-module-browser-modal": w(K),
1222
- "onUpdate:showSaveModuleDialog": i[8] ||= (e) => be.value = e,
1223
- "onUpdate:saveModulePreSelectedBlockId": i[9] ||= (e) => q.value = e,
1224
- "onUpdate:showModuleBrowserModal": i[10] ||= (e) => K.value = e,
1225
- onSendTestEmail: Ee,
1226
- onModuleInsert: De
1214
+ editor: w(R),
1215
+ core: w(z),
1216
+ "panel-state": w(H),
1217
+ "plan-config-instance": w(F),
1218
+ "test-email": w(V),
1219
+ "media-lib": w(se),
1220
+ "saved-modules-headless": w(fe),
1221
+ "show-save-module-dialog": w(Se),
1222
+ "save-module-pre-selected-block-id": w(K),
1223
+ "show-module-browser-modal": w(G),
1224
+ "onUpdate:showSaveModuleDialog": i[8] ||= (e) => Se.value = e,
1225
+ "onUpdate:saveModulePreSelectedBlockId": i[9] ||= (e) => K.value = e,
1226
+ "onUpdate:showModuleBrowserModal": i[10] ||= (e) => G.value = e,
1227
+ onSendTestEmail: Oe,
1228
+ onModuleInsert: ke
1227
1229
  }, null, 8, [
1228
1230
  "config",
1229
1231
  "editor",
@@ -1237,15 +1239,20 @@ var Ze = ["aria-label"], Qe = { class: "tpl:flex tpl:max-h-[80vh] tpl:w-full tpl
1237
1239
  "save-module-pre-selected-block-id",
1238
1240
  "show-module-browser-modal"
1239
1241
  ])) : f("", !0),
1240
- t.config.tour ? (a(), _(_e, {
1242
+ v("div", {
1243
+ ref_key: "floatingUiTeleportEl",
1244
+ ref: Te,
1245
+ class: "tpl-editor-floating-ui tpl:pointer-events-none tpl:fixed tpl:inset-0 tpl:z-[9999] tpl:overflow-visible"
1246
+ }, null, 512),
1247
+ t.config.tour ? (a(), _(ye, {
1241
1248
  key: 2,
1242
1249
  ref_key: "editorTourRef",
1243
1250
  ref: k,
1244
1251
  "tour-config": t.config.tour,
1245
- "dark-mode": w(L).state.darkMode
1252
+ "dark-mode": w(R).state.darkMode
1246
1253
  }, null, 8, ["tour-config", "dark-mode"])) : f("", !0)
1247
- ], 14, zt));
1254
+ ], 14, Bt));
1248
1255
  }
1249
- }), [["__scopeId", "data-v-1d3e3f2d"]]);
1256
+ }), [["__scopeId", "data-v-2d71aee7"]]);
1250
1257
  //#endregion
1251
- export { Ut as default };
1258
+ export { Wt as default };