@templatical/editor 0.27.4 → 0.27.5

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 (100) hide show
  1. package/dist/{AiFeatureMenu-DVQrznsN.js → AiFeatureMenu-YE9qqElA.js} +1 -1
  2. package/dist/{BlockPreviewCanvas-D9eC04OA.js → BlockPreviewCanvas-CF7r-mw4.js} +1 -1
  3. package/dist/{CloudHeaderExtras-DX0j3CJ3.js → CloudHeaderExtras-msYo6uhq.js} +4 -4
  4. package/dist/{CollaboratorBar-BZ-JCjdM.js → CollaboratorBar-D1Tx8cds.js} +1 -1
  5. package/dist/{ColorPicker-j0TQu5lE.js → ColorPicker-BNfy9BdG.js} +1 -1
  6. package/dist/{CountdownToolbar-UPdwNvVI.js → CountdownToolbar-D-o_hwsO.js} +3 -3
  7. package/dist/{MergeTagSuggestion-DGha0WRp.js → MergeTagSuggestion-DflUPfkT.js} +2 -2
  8. package/dist/{NumberWithSuffix-D9mPtMJB.js → NumberWithSuffix-DZAktKby.js} +1 -1
  9. package/dist/{ParagraphEditor-C9-jQ5zP.js → ParagraphEditor-CoN76ofC.js} +16 -16
  10. package/dist/{RestoreVersionDialog-Ds6gEF5u.js → RestoreVersionDialog-DUXGp-Nw.js} +2 -2
  11. package/dist/{RichTextEditorContent-CO1se6ln.js → RichTextEditorContent-DxicfnPf.js} +1 -1
  12. package/dist/{SaveBlockDialog-DJIcncsU.js → SaveBlockDialog-D0B9SKf9.js} +13 -13
  13. package/dist/{SavedBlocksBrowserModal-BUhhkGEb.js → SavedBlocksBrowserModal-vdci8i18.js} +5 -5
  14. package/dist/{SavedBlocksPanels-DBfPz4iB.js → SavedBlocksPanels-CTmlYwIT.js} +1 -1
  15. package/dist/{SavedBlocksPickBar-D9NsfzCB.js → SavedBlocksPickBar-DMtV1UKQ.js} +1 -1
  16. package/dist/{TestEmailModal-DARwBqpV.js → TestEmailModal-4pHgNCmg.js} +4 -4
  17. package/dist/{TestEmailPanel-BkgAew1S.js → TestEmailPanel-kp84Z0hs.js} +1 -1
  18. package/dist/{TitleEditor-BWLwZh84.js → TitleEditor-BdRlIm67.js} +6 -6
  19. package/dist/{TplModal-CJLs8as_.js → TplModal-CUV1Sd-2.js} +1 -1
  20. package/dist/{VersionHistoryPanels-s45U7XY-.js → VersionHistoryPanels-dyV9JP5G.js} +1 -1
  21. package/dist/{VersionPreviewBanner-BIy95B34.js → VersionPreviewBanner-Bb1cnMZ3.js} +1 -1
  22. package/dist/{blockTypeIcons-BjUkQsAe.js → blockTypeIcons-B13kXe55.js} +1 -1
  23. package/dist/bundle-stats.json +6 -6
  24. package/dist/cdn/chunks/{AiFeatureMenu-BhtNkpIq.js → AiFeatureMenu-CS62uVuh.js} +2 -2
  25. package/dist/cdn/chunks/{AiFeatureMenu-BhtNkpIq.js.map → AiFeatureMenu-CS62uVuh.js.map} +1 -1
  26. package/dist/cdn/chunks/{BlockPreviewCanvas-Bt7fFzIQ.js → BlockPreviewCanvas-DcCqg909.js} +2 -2
  27. package/dist/cdn/chunks/{BlockPreviewCanvas-Bt7fFzIQ.js.map → BlockPreviewCanvas-DcCqg909.js.map} +1 -1
  28. package/dist/cdn/chunks/{CloudHeaderExtras-CScGpeLl.js → CloudHeaderExtras-d_8bZemh.js} +5 -5
  29. package/dist/cdn/chunks/CloudHeaderExtras-d_8bZemh.js.map +1 -0
  30. package/dist/cdn/chunks/{CollaboratorBar-BH1lM_Ta.js → CollaboratorBar-CpHDWa9D.js} +2 -2
  31. package/dist/cdn/chunks/{CollaboratorBar-BH1lM_Ta.js.map → CollaboratorBar-CpHDWa9D.js.map} +1 -1
  32. package/dist/cdn/chunks/{ColorPicker-d4kY7WWd.js → ColorPicker-QPBbkWAs.js} +2 -2
  33. package/dist/cdn/chunks/{ColorPicker-d4kY7WWd.js.map → ColorPicker-QPBbkWAs.js.map} +1 -1
  34. package/dist/cdn/chunks/{CountdownToolbar-BRDbI1mM.js → CountdownToolbar-CMJVzd97.js} +4 -4
  35. package/dist/cdn/chunks/{CountdownToolbar-BRDbI1mM.js.map → CountdownToolbar-CMJVzd97.js.map} +1 -1
  36. package/dist/cdn/chunks/{MergeTagSuggestion-DhllqTA3.js → MergeTagSuggestion-Df7jcLpS.js} +2 -2
  37. package/dist/cdn/chunks/{MergeTagSuggestion-DhllqTA3.js.map → MergeTagSuggestion-Df7jcLpS.js.map} +1 -1
  38. package/dist/cdn/chunks/{NumberWithSuffix-mm6AfIv4.js → NumberWithSuffix-DNBrbl4H.js} +2 -2
  39. package/dist/cdn/chunks/{NumberWithSuffix-mm6AfIv4.js.map → NumberWithSuffix-DNBrbl4H.js.map} +1 -1
  40. package/dist/cdn/chunks/{ParagraphEditor-BgeeE0Gj.js → ParagraphEditor-CbP_rcqb.js} +17 -17
  41. package/dist/cdn/chunks/{ParagraphEditor-BgeeE0Gj.js.map → ParagraphEditor-CbP_rcqb.js.map} +1 -1
  42. package/dist/cdn/chunks/{RestoreVersionDialog-tfoAQAeP.js → RestoreVersionDialog-DYI-M27i.js} +3 -3
  43. package/dist/cdn/chunks/{RestoreVersionDialog-tfoAQAeP.js.map → RestoreVersionDialog-DYI-M27i.js.map} +1 -1
  44. package/dist/cdn/chunks/{RichTextEditorContent-DvLBtUcW.js → RichTextEditorContent-C-kbbKaq.js} +2 -2
  45. package/dist/cdn/chunks/{RichTextEditorContent-DvLBtUcW.js.map → RichTextEditorContent-C-kbbKaq.js.map} +1 -1
  46. package/dist/cdn/chunks/{SaveBlockDialog-D67K2lHn.js → SaveBlockDialog-BBwDyRpC.js} +14 -14
  47. package/dist/cdn/chunks/{SaveBlockDialog-D67K2lHn.js.map → SaveBlockDialog-BBwDyRpC.js.map} +1 -1
  48. package/dist/cdn/chunks/{SavedBlocksBrowserModal-BxVR-yDt.js → SavedBlocksBrowserModal-B_zqSoWl.js} +5 -5
  49. package/dist/cdn/chunks/{SavedBlocksBrowserModal-BxVR-yDt.js.map → SavedBlocksBrowserModal-B_zqSoWl.js.map} +1 -1
  50. package/dist/cdn/chunks/{SavedBlocksPanels-VkKCO0uY.js → SavedBlocksPanels-B_XNxwzs.js} +2 -2
  51. package/dist/cdn/chunks/{SavedBlocksPanels-VkKCO0uY.js.map → SavedBlocksPanels-B_XNxwzs.js.map} +1 -1
  52. package/dist/cdn/chunks/{SavedBlocksPickBar-BJHQDgUT.js → SavedBlocksPickBar-C3BP5941.js} +2 -2
  53. package/dist/cdn/chunks/{SavedBlocksPickBar-BJHQDgUT.js.map → SavedBlocksPickBar-C3BP5941.js.map} +1 -1
  54. package/dist/cdn/chunks/{TestEmailModal-CEBFCevy.js → TestEmailModal-CnoOTm5c.js} +5 -5
  55. package/dist/cdn/chunks/{TestEmailModal-CEBFCevy.js.map → TestEmailModal-CnoOTm5c.js.map} +1 -1
  56. package/dist/cdn/chunks/{TestEmailPanel-C35nqIIl.js → TestEmailPanel-BcvY4bL7.js} +2 -2
  57. package/dist/cdn/chunks/{TestEmailPanel-C35nqIIl.js.map → TestEmailPanel-BcvY4bL7.js.map} +1 -1
  58. package/dist/cdn/chunks/{TitleEditor-c2aQCyds.js → TitleEditor-5Ytpa9n2.js} +7 -7
  59. package/dist/cdn/chunks/{TitleEditor-c2aQCyds.js.map → TitleEditor-5Ytpa9n2.js.map} +1 -1
  60. package/dist/cdn/chunks/{TplModal-DSTVZKuI.js → TplModal-pGADKFOL.js} +2 -2
  61. package/dist/cdn/chunks/{TplModal-DSTVZKuI.js.map → TplModal-pGADKFOL.js.map} +1 -1
  62. package/dist/cdn/chunks/{VersionHistoryPanels-CvWySHUE.js → VersionHistoryPanels-CSryv5rE.js} +2 -2
  63. package/dist/cdn/chunks/{VersionHistoryPanels-CvWySHUE.js.map → VersionHistoryPanels-CSryv5rE.js.map} +1 -1
  64. package/dist/cdn/chunks/{VersionPreviewBanner-CBVDWnhq.js → VersionPreviewBanner-C4mr6y2u.js} +2 -2
  65. package/dist/cdn/chunks/{VersionPreviewBanner-CBVDWnhq.js.map → VersionPreviewBanner-C4mr6y2u.js.map} +1 -1
  66. package/dist/cdn/chunks/{extensions-Byo2sA1r.js → extensions-P0lpi6k8.js} +3 -3
  67. package/dist/cdn/chunks/{extensions-Byo2sA1r.js.map → extensions-P0lpi6k8.js.map} +1 -1
  68. package/dist/cdn/chunks/{src-BAWlZu4B.js → src-DNhD7a2v.js} +2 -2
  69. package/dist/cdn/chunks/{src-BAWlZu4B.js.map → src-DNhD7a2v.js.map} +1 -1
  70. package/dist/cdn/chunks/{styleConstants-9oK5kn21.js → styleConstants-C_YAPdQS.js} +8 -8
  71. package/dist/cdn/chunks/{styleConstants-9oK5kn21.js.map → styleConstants-C_YAPdQS.js.map} +1 -1
  72. package/dist/cdn/chunks/{tiptap-DmpGap5g.js → tiptap-DWeSx_P8.js} +1012 -987
  73. package/dist/cdn/chunks/tiptap-DWeSx_P8.js.map +1 -0
  74. package/dist/cdn/chunks/{useEditorCore-D84laTMj.js → useEditorCore-DTpSiO4S.js} +3 -3
  75. package/dist/cdn/chunks/{useEditorCore-D84laTMj.js.map → useEditorCore-DTpSiO4S.js.map} +1 -1
  76. package/dist/cdn/editor.css +1 -1
  77. package/dist/cdn/editor.js +776 -780
  78. package/dist/cdn/editor.js.map +1 -1
  79. package/dist/{dist-Ck9roB6K.js → dist-BLVvhIFj.js} +2 -2
  80. package/dist/{dist-DMJRSouD.js → dist-C145btxT.js} +255 -250
  81. package/dist/{dist-C27SeFL5.js → dist-CLc1cpN2.js} +2 -2
  82. package/dist/{dist-M7m1lYRe.js → dist-CQQNoHxz.js} +2 -2
  83. package/dist/{dist-g6cbzhZW.js → dist-CclsUQ7r.js} +2 -2
  84. package/dist/{dist-CYx-E82k.js → dist-CgXIMxZc.js} +2 -2
  85. package/dist/dist-D-ulkdvF.js +5 -0
  86. package/dist/{dist-BImfm-46.js → dist-D4Jb08yv.js} +2 -2
  87. package/dist/{dist-ChYLhoJ4.js → dist-DUn6jY0n.js} +35 -18
  88. package/dist/{dist-DfpeSdmE.js → dist-Dx-KOuOj.js} +2 -2
  89. package/dist/{dist-C08jiemd.js → dist-Dz7KUOSg.js} +2 -2
  90. package/dist/dist-Kf9u4ULN.js +5 -0
  91. package/dist/{extensions-BV9qfsYr.js → extensions-DWp4eXoE.js} +3 -3
  92. package/dist/style.css +1 -1
  93. package/dist/{styleConstants-9oK5kn21.js → styleConstants-C_YAPdQS.js} +7 -7
  94. package/dist/templatical-editor.js +939 -943
  95. package/dist/{useEditorCore-D7Gz7_CW.js → useEditorCore--_kmTxxX.js} +2 -2
  96. package/package.json +20 -20
  97. package/dist/cdn/chunks/CloudHeaderExtras-CScGpeLl.js.map +0 -1
  98. package/dist/cdn/chunks/tiptap-DmpGap5g.js.map +0 -1
  99. package/dist/dist-6YJAWMuf.js +0 -5
  100. package/dist/dist-8vlm9kfO.js +0 -5
@@ -1,5 +1,5 @@
1
1
  import { Ot as e, P as t, c as n, d as r, j as i, k as a, kt as o, l as s, r as c, s as l, v as u } from "./vue.runtime.esm-bundler-DzEsDRtY.js";
2
- import "./useEditorCore-D7Gz7_CW.js";
2
+ import "./useEditorCore--_kmTxxX.js";
3
3
  import { W as d, t as f } from "./keys-CVpi8xCT.js";
4
4
  import { t as p } from "./image-up-CIGT4cSb.js";
5
5
  import { t as m } from "./shield-check-CLGywlg0.js";
@@ -1,6 +1,6 @@
1
1
  import { t as e } from "./rolldown-runtime-Dy4uBu1J.js";
2
2
  import { A as t, N as n, Ot as r, P as i, S as a, c as o, d as s, j as c, k as l, l as u, r as d, rt as f, s as p, v as m } from "./vue.runtime.esm-bundler-DzEsDRtY.js";
3
- import { R as h, a as g, b as _, d as v, f as y, g as b, h as x, i as S, l as C, m as w, n as T, p as E, r as D, v as O, y as k } from "./useEditorCore-D7Gz7_CW.js";
3
+ import { R as h, a as g, b as _, d as v, f as y, g as b, h as x, i as S, l as C, m as w, n as T, p as E, r as D, v as O, y as k } from "./useEditorCore--_kmTxxX.js";
4
4
  import { O as A, U as j, d as M, h as N, s as P } from "./keys-CVpi8xCT.js";
5
5
  import { n as F, t as I } from "./emailFrameWidth-BmFCN2dp.js";
6
6
  //#region src/components/blocks/PreviewSectionBlock.vue?vue&type=script&setup=true&lang.ts
@@ -17,15 +17,15 @@ var v = {
17
17
  cloud: {}
18
18
  },
19
19
  setup(f) {
20
- let x = t(() => import("./CollaboratorBar-BZ-JCjdM.js")), S = t(() => import("./AiFeatureMenu-DVQrznsN.js")), { t: C, format: w } = _();
21
- return (t, _) => f.part === "left" && f.cloud.featureFlags.templateLimit.value !== null ? (o(), r("span", v, s(u(w)(u(C).header.templatesUsed, {
20
+ let x = t(() => import("./CollaboratorBar-D1Tx8cds.js")), S = t(() => import("./AiFeatureMenu-YE9qqElA.js")), { t: C, format: w } = _();
21
+ return (t, _) => f.part === "left" ? (o(), r(l, { key: 0 }, [f.cloud.featureFlags.templateLimit.value === null ? d("", !0) : (o(), r("span", v, s(u(w)(u(C).header.templatesUsed, {
22
22
  used: f.cloud.featureFlags.templateCount.value,
23
23
  max: f.cloud.featureFlags.templateLimit.value
24
- })), 1)) : f.part === "center" && f.cloud.collaboration && f.cloud.isCollaborationEnabled.value ? (o(), c(u(x), {
24
+ })), 1)), f.cloud.collaboration && f.cloud.isCollaborationEnabled.value ? (o(), c(u(x), {
25
25
  key: 1,
26
26
  collaborators: f.cloud.collaboration.collaborators.value,
27
27
  "is-connected": f.cloud.websocket.isConnected.value
28
- }, null, 8, ["collaborators", "is-connected"])) : f.part === "right" ? (o(), r(l, { key: 2 }, [f.cloud.featureFlags.canUseAiGeneration.value && f.cloud.featureFlags.hasTemplateSaved.value ? (o(), r("div", {
28
+ }, null, 8, ["collaborators", "is-connected"])) : d("", !0)], 64)) : f.part === "right" ? (o(), r(l, { key: 1 }, [f.cloud.featureFlags.canUseAiGeneration.value && f.cloud.featureFlags.hasTemplateSaved.value ? (o(), r("div", {
29
29
  key: 0,
30
30
  ref: (e) => f.cloud.panelState.aiMenuRef.value = e,
31
31
  class: "tpl:relative"
@@ -1,5 +1,5 @@
1
1
  import { Ot as e, c as t, d as n, j as r, k as i, kt as a, l as o, r as s, rt as c, s as l, u, v as d } from "./vue.runtime.esm-bundler-DzEsDRtY.js";
2
- import "./useEditorCore-D7Gz7_CW.js";
2
+ import "./useEditorCore--_kmTxxX.js";
3
3
  import { t as f } from "./createLucideIcon-CAmDKr5Z.js";
4
4
  import { n as p } from "./useCloudI18n-DmWo4nzs.js";
5
5
  import { t as m } from "./readableTextColor-f8Kykfnh.js";
@@ -5,7 +5,7 @@ import { B as oe, H as se, u as ce } from "./keys-CVpi8xCT.js";
5
5
  import { t as le } from "./useI18n-CvYvat9_.js";
6
6
  import { a as ue, i as h, n as de, r as g, t as fe } from "./usePopoverPosition-WslxM_PU.js";
7
7
  import { t as _ } from "./x-DTUPbuwx.js";
8
- import { u as v } from "./styleConstants-9oK5kn21.js";
8
+ import { u as v } from "./styleConstants-C_YAPdQS.js";
9
9
  //#region ../../node_modules/.pnpm/vanilla-colorful@0.7.2/node_modules/vanilla-colorful/lib/utils/math.js
10
10
  var y = (e, t = 0, n = 1) => e > n ? n : e < t ? t : e, b = (e, t = 0, n = 10 ** t) => Math.round(n * e) / n;
11
11
  360 / (Math.PI * 2);
@@ -1,8 +1,8 @@
1
1
  import { Dt as e, c as t, d as n, g as r, j as i, k as a, kt as o, l as s, r as c, rt as l, s as u, v as d, z as f } from "./vue.runtime.esm-bundler-DzEsDRtY.js";
2
2
  import { t as p } from "./useI18n-CvYvat9_.js";
3
- import { p as m } from "./styleConstants-9oK5kn21.js";
4
- import { t as h } from "./ColorPicker-j0TQu5lE.js";
5
- import { i as g, n as _, r as v, t as y } from "./NumberWithSuffix-D9mPtMJB.js";
3
+ import { p as m } from "./styleConstants-C_YAPdQS.js";
4
+ import { t as h } from "./ColorPicker-BNfy9BdG.js";
5
+ import { i as g, n as _, r as v, t as y } from "./NumberWithSuffix-DZAktKby.js";
6
6
  //#region src/components/toolbar/CountdownToolbar.vue?vue&type=script&setup=true&lang.ts
7
7
  var b = ["value"], x = ["value"], S = ["value"], C = { class: "tpl:grid tpl:grid-cols-2 tpl:gap-2" }, w = ["value"], T = { value: "" }, E = ["value"], D = { class: "tpl:grid tpl:grid-cols-2 tpl:gap-3" }, O = { class: "tpl:grid tpl:grid-cols-2 tpl:gap-3" }, k = { class: "tpl:grid tpl:grid-cols-2 tpl:gap-2" }, A = [
8
8
  "value",
@@ -1,6 +1,6 @@
1
1
  import { Dt as e, X as t, b as n, c as r, d as i, j as a, k as o, kt as s, r as c, u as l, v as u } from "./vue.runtime.esm-bundler-DzEsDRtY.js";
2
2
  import { c as d, n as f } from "./runtime-dom.esm-bundler-BgKXIPLV.js";
3
- import { Gn as p, H as m, Hn as h, Vn as g, Wn as _, s as v } from "./dist-ChYLhoJ4.js";
3
+ import { Gn as p, H as m, Hn as h, Vn as g, Wn as _, s as v } from "./dist-DUn6jY0n.js";
4
4
  //#region ../../node_modules/.pnpm/@floating-ui+utils@0.2.12/node_modules/@floating-ui/utils/dist/floating-ui.utils.mjs
5
5
  var y = Math.min, b = Math.max, x = Math.round, S = Math.floor, C = (e) => ({
6
6
  x: e,
@@ -703,7 +703,7 @@ var $e = _e, et = me, tt = (e, t, n) => {
703
703
  });
704
704
  };
705
705
  //#endregion
706
- //#region ../../node_modules/.pnpm/@tiptap+suggestion@3.30.1_@floating-ui+dom@1.8.0_@tiptap+core@3.30.1_@tiptap+pm@3.30.1__@tiptap+pm@3.30.1/node_modules/@tiptap/suggestion/dist/index.js
706
+ //#region ../../node_modules/.pnpm/@tiptap+suggestion@3.30.2_@floating-ui+dom@1.8.0_@tiptap+core@3.30.2_@tiptap+pm@3.30.2__@tiptap+pm@3.30.2/node_modules/@tiptap/suggestion/dist/index.js
707
707
  function nt(e) {
708
708
  let { char: t, allowSpaces: n, allowToIncludeChar: r, allowedPrefixes: i, startOfLine: a, $position: o } = e, s = n && !r, c = m(t), l = RegExp(`\\s${c}$`), u = a ? "^" : "", d = r ? "" : c, f = RegExp(s ? `${u}${c}.*?(?=\\s${d}|$)` : `${u}(?:^)?${c}[^\\s${d}]*`, "gm"), p = o.nodeBefore?.isText && o.nodeBefore.text;
709
709
  if (!p) return null;
@@ -1,5 +1,5 @@
1
1
  import { Dt as e, M as t, Ot as n, P as r, c as i, d as a, h as o, j as s, k as c, kt as l, l as u, r as d, rt as f, s as p, u as m, v as h } from "./vue.runtime.esm-bundler-DzEsDRtY.js";
2
- import { g, h as _, m as v } from "./styleConstants-9oK5kn21.js";
2
+ import { g, h as _, m as v } from "./styleConstants-C_YAPdQS.js";
3
3
  //#region src/components/ToggleSwitch.vue?vue&type=script&setup=true&lang.ts
4
4
  var y = { key: 0 }, b = {
5
5
  key: 0,
@@ -1,18 +1,18 @@
1
1
  import { Dt as e, G as t, Ot as n, P as r, S as i, X as a, c as o, d as s, g as c, h as l, i as u, j as d, k as f, kt as p, l as m, r as h, rt as g, s as _, u as v, v as y } from "./vue.runtime.esm-bundler-DzEsDRtY.js";
2
2
  import { c as b, s as x } from "./runtime-dom.esm-bundler-BgKXIPLV.js";
3
- import { C as S, D as C, E as w, S as T } from "./useEditorCore-D7Gz7_CW.js";
3
+ import { C as S, D as C, E as w, S as T } from "./useEditorCore--_kmTxxX.js";
4
4
  import { t as E } from "./dist-B5iReTtK.js";
5
5
  import { B as D, D as O, H as k, W as ee, _ as te, h as ne, w as re } from "./keys-CVpi8xCT.js";
6
6
  import { t as A } from "./useI18n-CvYvat9_.js";
7
7
  import { n as j } from "./usePopoverPosition-WslxM_PU.js";
8
8
  import { t as M } from "./createLucideIcon-CAmDKr5Z.js";
9
- import { a as N, i as ie, n as P, r as ae, t as F } from "./RichTextEditorContent-CO1se6ln.js";
9
+ import { a as N, i as ie, n as P, r as ae, t as F } from "./RichTextEditorContent-DxicfnPf.js";
10
10
  import { n as oe, t as se } from "./scan-line-B5EvAPSG.js";
11
11
  import { t as ce } from "./loader-circle-QyURl47g.js";
12
12
  import { n as le, r as ue, t as de } from "./text-align-start-C6FXOoEj.js";
13
13
  import { t as I } from "./_plugin-vue_export-helper-B3ysoDQm.js";
14
- import { a as fe, n as pe, o as me, s as he } from "./styleConstants-9oK5kn21.js";
15
- import { t as L } from "./ColorPicker-j0TQu5lE.js";
14
+ import { a as fe, n as pe, o as me, s as he } from "./styleConstants-C_YAPdQS.js";
15
+ import { t as L } from "./ColorPicker-BNfy9BdG.js";
16
16
  var R = M("face-slightly-smiling", [
17
17
  ["path", {
18
18
  d: "M15 10V9",
@@ -644,18 +644,18 @@ var De = ["data-tpl-theme", "aria-label"], $ = { class: "tpl:flex tpl:items-cent
644
644
  editorName: "ParagraphEditor",
645
645
  async loadExtensions({ mergeTags: e, syntax: t, triggerChar: n, autocompleteEnabled: r, suggestionEmptyText: i }) {
646
646
  let [{ Editor: o, EditorContent: s }, { default: c }, { default: l }, { default: u }, { default: d }, { default: f }, { default: p }, { TextStyle: m }, { default: h }, { default: g }, { default: _ }, { MergeTagNode: v, MergeTagSuggestion: y, LogicMergeTagNode: b, FontSize: x, LineHeight: C, LetterSpacing: w, LineBoundaryKeys: T }] = await Promise.all([
647
- import("./dist-Ck9roB6K.js").then((e) => e.r),
648
- import("./dist-DMJRSouD.js"),
649
- import("./dist-M7m1lYRe.js"),
650
- import("./dist-DfpeSdmE.js"),
651
- import("./dist-BImfm-46.js"),
652
- import("./dist-CYx-E82k.js"),
653
- import("./dist-g6cbzhZW.js"),
654
- import("./dist-C27SeFL5.js"),
655
- import("./dist-8vlm9kfO.js"),
656
- import("./dist-6YJAWMuf.js"),
657
- import("./dist-C08jiemd.js"),
658
- import("./extensions-BV9qfsYr.js")
647
+ import("./dist-BLVvhIFj.js").then((e) => e.r),
648
+ import("./dist-C145btxT.js"),
649
+ import("./dist-CQQNoHxz.js"),
650
+ import("./dist-Dx-KOuOj.js"),
651
+ import("./dist-D4Jb08yv.js"),
652
+ import("./dist-CgXIMxZc.js"),
653
+ import("./dist-CclsUQ7r.js"),
654
+ import("./dist-CLc1cpN2.js"),
655
+ import("./dist-D-ulkdvF.js"),
656
+ import("./dist-Kf9u4ULN.js"),
657
+ import("./dist-Dz7KUOSg.js"),
658
+ import("./extensions-DWp4eXoE.js")
659
659
  ]);
660
660
  return {
661
661
  TiptapEditor: o,
@@ -2,8 +2,8 @@ import { Dt as e, c as t, d as n, g as r, h as i, k as a, kt as o, l as s, rt as
2
2
  import { t as f } from "./useI18n-CvYvat9_.js";
3
3
  import { t as p } from "./loader-circle-QyURl47g.js";
4
4
  import { t as m } from "./triangle-alert-D2JBEr6k.js";
5
- import { d as h, v as g, x as _ } from "./styleConstants-9oK5kn21.js";
6
- import { t as v } from "./TplModal-CJLs8as_.js";
5
+ import { d as h, v as g, x as _ } from "./styleConstants-C_YAPdQS.js";
6
+ import { t as v } from "./TplModal-CUV1Sd-2.js";
7
7
  //#region src/components/RestoreVersionDialog.vue?vue&type=script&setup=true&lang.ts
8
8
  var y = ["aria-busy"], b = { class: "tpl:flex tpl:items-center tpl:gap-2" }, x = {
9
9
  id: "tpl-restore-version-title",
@@ -5,7 +5,7 @@ import { t as C } from "./useI18n-CvYvat9_.js";
5
5
  import { n as w } from "./usePopoverPosition-WslxM_PU.js";
6
6
  import { t as T } from "./createLucideIcon-CAmDKr5Z.js";
7
7
  import { t as E } from "./x-DTUPbuwx.js";
8
- import { t as D } from "./ColorPicker-j0TQu5lE.js";
8
+ import { t as D } from "./ColorPicker-BNfy9BdG.js";
9
9
  var O = T("bold", [["path", {
10
10
  d: "M6 12h9a4 4 0 0 1 0 8H7a1 1 0 0 1-1-1V5a1 1 0 0 1 1-1h7a4 4 0 0 1 0 8",
11
11
  key: "mg9rjx"
@@ -1,15 +1,15 @@
1
1
  import { B as e, D as t, Dt as n, E as r, L as i, Ot as a, P as o, S as s, X as c, c as l, d as u, g as d, h as f, j as p, k as m, kt as h, l as g, r as _, rt as v, s as y, u as b, v as x, z as S } from "./vue.runtime.esm-bundler-DzEsDRtY.js";
2
2
  import { a as C, c as w, s as T } from "./runtime-dom.esm-bundler-BgKXIPLV.js";
3
- import { B as E, N as D, c as O } from "./useEditorCore-D7Gz7_CW.js";
3
+ import { B as E, N as D, c as O } from "./useEditorCore--_kmTxxX.js";
4
4
  import { L as k, W as A, f as j, h as ee } from "./keys-CVpi8xCT.js";
5
5
  import { t as te } from "./useI18n-CvYvat9_.js";
6
6
  import { t as M } from "./chevron-down-NUIAa2Qf.js";
7
7
  import { t as N } from "./chevron-up-Bjf2BQtL.js";
8
8
  import { t as P } from "./loader-circle-QyURl47g.js";
9
- import { n as F } from "./emailFrameWidth-BmFCN2dp.js";
10
- import { v as I } from "./styleConstants-9oK5kn21.js";
11
- import { t as L } from "./TplModal-CJLs8as_.js";
12
- import { t as R } from "./BlockPreviewCanvas-D9eC04OA.js";
9
+ import { v as F } from "./styleConstants-C_YAPdQS.js";
10
+ import { n as I } from "./emailFrameWidth-BmFCN2dp.js";
11
+ import { t as L } from "./TplModal-CUV1Sd-2.js";
12
+ import { t as R } from "./BlockPreviewCanvas-CF7r-mw4.js";
13
13
  //#region src/components/SavedBlockPreviewRow.vue?vue&type=script&setup=true&lang.ts
14
14
  var z = ["data-block-id"], B = ["aria-label", "title"], V = { class: "tpl:relative tpl:min-w-0 tpl:flex-1" }, H = {
15
15
  key: 0,
@@ -26,14 +26,14 @@ var z = ["data-block-id"], B = ["aria-label", "title"], V = { class: "tpl:relati
26
26
  },
27
27
  emits: ["move"],
28
28
  setup(e, { emit: n }) {
29
- let i = e, p = n, { t: _, format: x } = te(), S = s(j, []), C = s(ee, null), O = y(() => F(C?.content.value.settings)), k = c(null), A = c(null), P = c(1), I = c(null), L = c(!1), G = null, K = y(() => I.value !== null && I.value > W), q = y(() => I.value === null ? null : L.value || !K.value ? I.value : W);
29
+ let i = e, p = n, { t: _, format: x } = te(), S = s(j, []), C = s(ee, null), O = y(() => I(C?.content.value.settings)), k = c(null), A = c(null), P = c(1), F = c(null), L = c(!1), G = null, K = y(() => F.value !== null && F.value > W), q = y(() => F.value === null ? null : L.value || !K.value ? F.value : W);
30
30
  function J() {
31
31
  let e = k.value, t = A.value;
32
32
  if (!e || !t) return;
33
33
  let n = e.clientWidth;
34
34
  if (n <= 0) return;
35
35
  let r = Math.min(1, n / O.value);
36
- P.value = r, I.value = t.offsetHeight * r;
36
+ P.value = r, F.value = t.offsetHeight * r;
37
37
  }
38
38
  t(() => {
39
39
  J(), !(typeof ResizeObserver > "u") && (G = new ResizeObserver(() => J()), k.value && G.observe(k.value), A.value && G.observe(A.value));
@@ -122,7 +122,7 @@ var z = ["data-block-id"], B = ["aria-label", "title"], V = { class: "tpl:relati
122
122
  },
123
123
  emits: ["close", "saved"],
124
124
  setup(t, { emit: r }) {
125
- let a = t, o = r, { t: x, format: w } = te(), T = A(ee, "SaveBlockDialog"), D = A(k, "SaveBlockDialog"), M = s(j, []), N = c(""), F = c(""), R = c(!1), z = c(null), B = c(""), V = c([]), H = y(() => {
125
+ let a = t, o = r, { t: x, format: w } = te(), T = A(ee, "SaveBlockDialog"), D = A(k, "SaveBlockDialog"), M = s(j, []), N = c(""), I = c(""), R = c(!1), z = c(null), B = c(""), V = c([]), H = y(() => {
126
126
  let e = new Map(T.content.value.blocks.map((e) => [e.id, e]));
127
127
  return V.value.map((t) => e.get(t)).filter((e) => e !== void 0);
128
128
  }), U = y({
@@ -147,7 +147,7 @@ var z = ["data-block-id"], B = ["aria-label", "title"], V = { class: "tpl:relati
147
147
  }
148
148
  let ge = y(() => H.value.map(Q).join(", "));
149
149
  i(() => a.visible, (e) => {
150
- e && (N.value = "", F.value = "", z.value = null, B.value = "", V.value = [...a.pickedIds]);
150
+ e && (N.value = "", I.value = "", z.value = null, B.value = "", V.value = [...a.pickedIds]);
151
151
  }, { immediate: !0 });
152
152
  let _e = y(() => N.value.trim().length > 0 && H.value.length > 0 && !R.value);
153
153
  async function ve() {
@@ -156,7 +156,7 @@ var z = ["data-block-id"], B = ["aria-label", "title"], V = { class: "tpl:relati
156
156
  if (e.length !== 0) {
157
157
  R.value = !0, z.value = null;
158
158
  try {
159
- await D.create(N.value.trim(), e, F.value.trim() || void 0), o("saved"), o("close");
159
+ await D.create(N.value.trim(), e, I.value.trim() || void 0), o("saved"), o("close");
160
160
  } catch (e) {
161
161
  z.value = e.message;
162
162
  } finally {
@@ -200,14 +200,14 @@ var z = ["data-block-id"], B = ["aria-label", "title"], V = { class: "tpl:relati
200
200
  l("label", ne, h(v(x).savedBlocks.category), 1),
201
201
  e(l("input", {
202
202
  id: "tpl-save-block-category",
203
- "onUpdate:modelValue": i[1] ||= (e) => F.value = e,
203
+ "onUpdate:modelValue": i[1] ||= (e) => I.value = e,
204
204
  type: "text",
205
205
  "data-testid": "saved-blocks-category-input",
206
206
  list: "tpl-saved-block-categories",
207
207
  placeholder: v(x).savedBlocks.categoryPlaceholder,
208
208
  class: "tpl:h-9 tpl:w-full tpl:rounded-md tpl:border tpl:px-3 tpl:py-1 tpl:text-sm tpl:shadow-[var(--tpl-shadow-sm)] tpl:outline-none tpl:border-[var(--tpl-border)] tpl:bg-[var(--tpl-bg)] tpl:text-[var(--tpl-text)]",
209
209
  disabled: R.value
210
- }, null, 8, re), [[C, F.value]]),
210
+ }, null, 8, re), [[C, I.value]]),
211
211
  l("datalist", ie, [(m(!0), u(_, null, p(v(D).categories.value, (e) => (m(), u("option", {
212
212
  key: e,
213
213
  value: e
@@ -249,7 +249,7 @@ var z = ["data-block-id"], B = ["aria-label", "title"], V = { class: "tpl:relati
249
249
  onClick: $
250
250
  }, h(v(x).savedBlocks.cancel), 11, fe), l("button", {
251
251
  type: "button",
252
- class: n(v(I)),
252
+ class: n(v(F)),
253
253
  disabled: !_e.value,
254
254
  onClick: ve
255
255
  }, [R.value ? (m(), u("span", me, [d(v(P), {
@@ -1,15 +1,15 @@
1
1
  import { B as e, Dt as t, L as n, Ot as r, P as i, T as a, X as o, _ as ee, c as s, d as c, g as l, j as u, k as d, kt as f, l as p, r as m, rt as h, s as g, u as _, v, z as te } from "./vue.runtime.esm-bundler-DzEsDRtY.js";
2
2
  import { a as y, c as b, i as x, s as S } from "./runtime-dom.esm-bundler-BgKXIPLV.js";
3
- import "./useEditorCore-D7Gz7_CW.js";
3
+ import "./useEditorCore--_kmTxxX.js";
4
4
  import { L as ne, W as C, h as re } from "./keys-CVpi8xCT.js";
5
5
  import { t as ie } from "./useI18n-CvYvat9_.js";
6
- import { n as ae, r as w, t as T } from "./blockTypeIcons-BjUkQsAe.js";
6
+ import { n as ae, r as w, t as T } from "./blockTypeIcons-B13kXe55.js";
7
7
  import { t as oe } from "./pencil-BvW86jVn.js";
8
8
  import { t as se } from "./trash-2-balHkQP4.js";
9
9
  import { t as ce } from "./x-DTUPbuwx.js";
10
- import { v as le } from "./styleConstants-9oK5kn21.js";
10
+ import { v as le } from "./styleConstants-C_YAPdQS.js";
11
11
  import { t as ue } from "./formatRelativeTime-CtUU-QZ8.js";
12
- import { t as de } from "./TplModal-CJLs8as_.js";
12
+ import { t as de } from "./TplModal-CUV1Sd-2.js";
13
13
  //#region src/components/SavedBlocksBrowserModal.vue?vue&type=script&setup=true&lang.ts
14
14
  var fe = {
15
15
  role: "dialog",
@@ -66,7 +66,7 @@ var fe = {
66
66
  props: { visible: { type: Boolean } },
67
67
  emits: ["close", "insert"],
68
68
  setup(v, { emit: A }) {
69
- let tt = v, j = A, nt = ee(() => import("./BlockPreviewCanvas-D9eC04OA.js").then((e) => e.n)), { t: M, format: N } = ie(), P = C(ne, "SavedBlocksBrowserModal"), F = C(re, "SavedBlocksBrowserModal"), I = o(""), L = o(""), R = o(null), z = o(null), B = o(null), V = o(""), H = o(""), U = o(null), W = o("end"), G = g(() => {
69
+ let tt = v, j = A, nt = ee(() => import("./BlockPreviewCanvas-CF7r-mw4.js").then((e) => e.n)), { t: M, format: N } = ie(), P = C(ne, "SavedBlocksBrowserModal"), F = C(re, "SavedBlocksBrowserModal"), I = o(""), L = o(""), R = o(null), z = o(null), B = o(null), V = o(""), H = o(""), U = o(null), W = o("end"), G = g(() => {
70
70
  let e = I.value.trim().toLowerCase(), t = L.value;
71
71
  return P.savedBlocks.value.filter((n) => !(e && !n.name.toLowerCase().includes(e) || t && n.category !== t));
72
72
  }), K = g(() => P.isLoading.value && P.savedBlocks.value.length === 0), rt = g(() => I.value.trim().length > 0 || L.value !== ""), q = g(() => R.value ? P.savedBlocks.value.find((e) => e.id === R.value) ?? null : null), it = g(() => {
@@ -5,7 +5,7 @@ var c = /* @__PURE__ */ s({
5
5
  __name: "SavedBlocksPanels",
6
6
  props: { feature: {} },
7
7
  setup(s) {
8
- let c = s, l = e(() => import("./SavedBlocksPickBar-D9NsfzCB.js")), u = e(() => import("./SaveBlockDialog-DJIcncsU.js")), d = e(() => import("./SavedBlocksBrowserModal-BUhhkGEb.js"));
8
+ let c = s, l = e(() => import("./SavedBlocksPickBar-DMtV1UKQ.js")), u = e(() => import("./SaveBlockDialog-D0B9SKf9.js")), d = e(() => import("./SavedBlocksBrowserModal-vdci8i18.js"));
9
9
  function f(e, t) {
10
10
  c.feature.insert(e, t);
11
11
  }
@@ -1,5 +1,5 @@
1
1
  import { c as e, d as t, g as n, h as r, k as i, kt as a, rt as o, v as s } from "./vue.runtime.esm-bundler-DzEsDRtY.js";
2
- import { L as c } from "./useEditorCore-D7Gz7_CW.js";
2
+ import { L as c } from "./useEditorCore--_kmTxxX.js";
3
3
  import { t as l } from "./useI18n-CvYvat9_.js";
4
4
  import { t as u } from "./x-DTUPbuwx.js";
5
5
  //#region src/components/SavedBlocksPickBar.vue?vue&type=script&setup=true&lang.ts
@@ -1,15 +1,15 @@
1
1
  import { B as e, Dt as t, L as n, S as r, X as i, c as a, d as o, g as s, h as c, j as l, k as u, kt as d, l as f, r as p, rt as m, s as h, u as g, v as _, z as ee } from "./vue.runtime.esm-bundler-DzEsDRtY.js";
2
2
  import { a as te, i as v } from "./runtime-dom.esm-bundler-BgKXIPLV.js";
3
3
  import { j as ne } from "./dist-B1kLn1rs.js";
4
- import { H as re } from "./useEditorCore-D7Gz7_CW.js";
4
+ import { H as re } from "./useEditorCore--_kmTxxX.js";
5
5
  import { I as ie, O as ae, T as oe, h as se } from "./keys-CVpi8xCT.js";
6
6
  import { t as ce } from "./useI18n-CvYvat9_.js";
7
7
  import { t as le } from "./check-GRcTaHlZ.js";
8
8
  import { t as ue } from "./loader-circle-QyURl47g.js";
9
9
  import { n as de, t as fe } from "./MergeTagModeToggle-CVzJY9b2.js";
10
- import { v as pe } from "./styleConstants-9oK5kn21.js";
11
- import { t as me } from "./TplModal-CJLs8as_.js";
12
- import { t as he } from "./BlockPreviewCanvas-D9eC04OA.js";
10
+ import { v as pe } from "./styleConstants-C_YAPdQS.js";
11
+ import { t as me } from "./TplModal-CUV1Sd-2.js";
12
+ import { t as he } from "./BlockPreviewCanvas-CF7r-mw4.js";
13
13
  //#region src/utils/validateEmailShape.ts
14
14
  var y = /[,;<>()[\]\\"'`|/?#@!$%^&*+=~{}]/;
15
15
  function b(e) {
@@ -5,7 +5,7 @@ var o = /* @__PURE__ */ a({
5
5
  __name: "TestEmailPanel",
6
6
  props: { feature: {} },
7
7
  setup(a) {
8
- let o = a, s = e(() => import("./TestEmailModal-DARwBqpV.js"));
8
+ let o = a, s = e(() => import("./TestEmailModal-4pHgNCmg.js"));
9
9
  function c(e) {
10
10
  o.feature.send(e);
11
11
  }
@@ -1,9 +1,9 @@
1
1
  import { Dt as e, G as t, Ot as n, S as r, c as i, d as a, g as o, h as s, i as c, k as l, kt as u, l as d, r as f, rt as p, s as m, u as h, v as g } from "./vue.runtime.esm-bundler-DzEsDRtY.js";
2
- import { C as ee, S as te } from "./useEditorCore-D7Gz7_CW.js";
2
+ import { C as ee, S as te } from "./useEditorCore--_kmTxxX.js";
3
3
  import { B as ne, D as re, H as _, w as v } from "./keys-CVpi8xCT.js";
4
4
  import { t as y } from "./useI18n-CvYvat9_.js";
5
5
  import { n as b } from "./usePopoverPosition-WslxM_PU.js";
6
- import { a as ie, i as x, n as S, r as ae, t as oe } from "./RichTextEditorContent-CO1se6ln.js";
6
+ import { a as ie, i as x, n as S, r as ae, t as oe } from "./RichTextEditorContent-DxicfnPf.js";
7
7
  import { n as se, t as ce } from "./scan-line-B5EvAPSG.js";
8
8
  import { t as le } from "./loader-circle-QyURl47g.js";
9
9
  //#region src/components/blocks/TitleEditor.vue?vue&type=script&setup=true&lang.ts
@@ -31,10 +31,10 @@ var C = { class: "tpl-text-editor-wrapper tpl:relative" }, w = ["data-tpl-theme"
31
31
  editorName: "TitleEditor",
32
32
  async loadExtensions({ mergeTags: e, syntax: t, triggerChar: n, autocompleteEnabled: r, suggestionEmptyText: i }) {
33
33
  let [{ Editor: a, EditorContent: o }, { default: s }, { default: c }, { MergeTagNode: l, MergeTagSuggestion: u, LogicMergeTagNode: d, LineBoundaryKeys: f }] = await Promise.all([
34
- import("./dist-Ck9roB6K.js").then((e) => e.r),
35
- import("./dist-DMJRSouD.js"),
36
- import("./dist-M7m1lYRe.js"),
37
- import("./extensions-BV9qfsYr.js")
34
+ import("./dist-BLVvhIFj.js").then((e) => e.r),
35
+ import("./dist-C145btxT.js"),
36
+ import("./dist-CQQNoHxz.js"),
37
+ import("./extensions-DWp4eXoE.js")
38
38
  ]);
39
39
  return {
40
40
  TiptapEditor: a,
@@ -1,6 +1,6 @@
1
1
  import { M as e, Ot as t, S as n, X as r, c as i, d as a, g as o, i as s, k as c, l, rt as u, s as d, u as f, v as p, z as m } from "./vue.runtime.esm-bundler-DzEsDRtY.js";
2
2
  import { c as h, t as g } from "./runtime-dom.esm-bundler-BgKXIPLV.js";
3
- import { D as _ } from "./useEditorCore-D7Gz7_CW.js";
3
+ import { D as _ } from "./useEditorCore--_kmTxxX.js";
4
4
  import { B as v, H as y } from "./keys-CVpi8xCT.js";
5
5
  import { n as b } from "./usePopoverPosition-WslxM_PU.js";
6
6
  //#region src/components/TplModal.vue?vue&type=script&setup=true&lang.ts
@@ -5,7 +5,7 @@ var c = /* @__PURE__ */ s({
5
5
  __name: "VersionHistoryPanels",
6
6
  props: { feature: {} },
7
7
  setup(s) {
8
- let c = s, l = e(() => import("./VersionPreviewBanner-BIy95B34.js")), u = e(() => import("./RestoreVersionDialog-Ds6gEF5u.js"));
8
+ let c = s, l = e(() => import("./VersionPreviewBanner-Bb1cnMZ3.js")), u = e(() => import("./RestoreVersionDialog-DUXGp-Nw.js"));
9
9
  async function d() {
10
10
  try {
11
11
  await c.feature.requestRestore();
@@ -1,7 +1,7 @@
1
1
  import { Dt as e, c as t, d as n, g as r, k as i, kt as a, rt as o, u as s, v as c } from "./vue.runtime.esm-bundler-DzEsDRtY.js";
2
2
  import { t as l } from "./useI18n-CvYvat9_.js";
3
3
  import { t as u } from "./clock-CaOM1DC-.js";
4
- import { f as d, v as f } from "./styleConstants-9oK5kn21.js";
4
+ import { f as d, v as f } from "./styleConstants-C_YAPdQS.js";
5
5
  //#region src/components/VersionPreviewBanner.vue?vue&type=script&setup=true&lang.ts
6
6
  var p = {
7
7
  key: 0,
@@ -1,4 +1,4 @@
1
- import { A as e, I as t, M as n, j as r, k as i } from "./useEditorCore-D7Gz7_CW.js";
1
+ import { A as e, I as t, M as n, j as r, k as i } from "./useEditorCore--_kmTxxX.js";
2
2
  import { t as a } from "./createLucideIcon-CAmDKr5Z.js";
3
3
  var o = a("columns-3", [
4
4
  ["rect", {
@@ -1,10 +1,10 @@
1
1
  {
2
- "version": "0.27.4",
3
- "initialGzipBytes": 306870,
4
- "initialRawBytes": 1105216,
2
+ "version": "0.27.5",
3
+ "initialGzipBytes": 307062,
4
+ "initialRawBytes": 1105929,
5
5
  "initialFileCount": 47,
6
- "lazyGzipBytes": 202079,
7
- "lazyRawBytes": 649703,
6
+ "lazyGzipBytes": 202117,
7
+ "lazyRawBytes": 649815,
8
8
  "lazyFileCount": 59,
9
- "generatedAt": "2026-08-21T16:38:36.753Z"
9
+ "generatedAt": "2026-08-22T09:46:31.866Z"
10
10
  }
@@ -1,5 +1,5 @@
1
1
  import { F as e, N as t, R as n, S as r, f as i, g as a, lt as o, m as s, p as c, u as l, ut as u } from "./draggable-BfpsXFg7.js";
2
- import "./useEditorCore-D84laTMj.js";
2
+ import "./useEditorCore-DTpSiO4S.js";
3
3
  import { W as d, t as f } from "./keys-oJdkdtPn.js";
4
4
  import { E as p, k as m, pt as h } from "./icons-Dl5bcXmT.js";
5
5
  import { t as g } from "./_plugin-vue_export-helper-B3ysoDQm.js";
@@ -54,4 +54,4 @@ var v = { class: "tpl-ai-feature-menu tpl:w-[280px] tpl:overflow-hidden tpl:roun
54
54
  //#endregion
55
55
  export { C as default };
56
56
 
57
- //# sourceMappingURL=AiFeatureMenu-BhtNkpIq.js.map
57
+ //# sourceMappingURL=AiFeatureMenu-CS62uVuh.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"AiFeatureMenu-BhtNkpIq.js","names":[],"sources":["../../../src/cloud/components/AiFeatureMenu.vue","../../../src/cloud/components/AiFeatureMenu.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { useCloudI18nStrict } from \"../../composables\";\nimport { AI_CONFIG_KEY, requireInject } from \"../../keys\";\nimport type { AiConfig } from \"@templatical/types\";\nimport { ImageUp, ShieldCheck, Sparkles } from \"@lucide/vue\";\nimport { computed } from \"vue\";\n\nexport type AiFeature = \"ai-chat\" | \"design-reference\" | \"scoring\";\n\ndefineProps<{\n activeFeature: AiFeature | null;\n}>();\n\nconst emit = defineEmits<{\n (e: \"select\", feature: AiFeature): void;\n}>();\n\nconst { t: cloudT } = useCloudI18nStrict();\n\nconst aiConfig = requireInject(AI_CONFIG_KEY, \"AiFeatureMenu\");\n\nconst configKeyMap: Record<AiFeature, keyof AiConfig> = {\n \"ai-chat\": \"chat\",\n \"design-reference\": \"designToTemplate\",\n scoring: \"scoring\",\n};\n\nconst allFeatures: { key: AiFeature; icon: typeof Sparkles }[] = [\n { key: \"ai-chat\", icon: Sparkles },\n { key: \"design-reference\", icon: ImageUp },\n { key: \"scoring\", icon: ShieldCheck },\n];\n\nconst features = computed(() =>\n allFeatures.filter((f) => aiConfig.isFeatureEnabled(configKeyMap[f.key])),\n);\n\nfunction getTitle(key: AiFeature): string {\n if (key === \"ai-chat\") return cloudT.aiMenu.aiAssistant;\n if (key === \"design-reference\") return cloudT.aiMenu.designToTemplate;\n return cloudT.aiMenu.templateScore;\n}\n\nfunction getDescription(key: AiFeature): string {\n if (key === \"ai-chat\") return cloudT.aiMenu.aiAssistantDesc;\n if (key === \"design-reference\") return cloudT.aiMenu.designToTemplateDesc;\n return cloudT.aiMenu.templateScoreDesc;\n}\n</script>\n\n<template>\n <div\n class=\"tpl-ai-feature-menu tpl:w-[280px] tpl:overflow-hidden tpl:rounded-[var(--tpl-radius)] tpl:py-1 tpl:bg-[var(--tpl-bg)] tpl:border tpl:border-[var(--tpl-border)] tpl:shadow-[var(--tpl-shadow-lg)]\"\n >\n <button\n v-for=\"feature in features\"\n :key=\"feature.key\"\n class=\"tpl-ai-feature-menu-item tpl:flex tpl:w-full tpl:cursor-pointer tpl:items-start tpl:gap-3 tpl:border-none tpl:px-3 tpl:py-2.5 tpl:text-left tpl:transition-colors\"\n :style=\"{\n backgroundColor:\n activeFeature === feature.key\n ? 'var(--tpl-primary-light)'\n : 'transparent',\n }\"\n @click=\"emit('select', feature.key)\"\n >\n <div\n class=\"tpl:mt-0.5 tpl:flex tpl:size-7 tpl:shrink-0 tpl:items-center tpl:justify-center tpl:rounded-[var(--tpl-radius-sm)]\"\n :style=\"{\n backgroundColor:\n activeFeature === feature.key\n ? 'var(--tpl-primary)'\n : 'var(--tpl-bg-active)',\n color:\n activeFeature === feature.key\n ? 'var(--tpl-bg)'\n : 'var(--tpl-text-muted)',\n }\"\n >\n <component :is=\"feature.icon\" :size=\"15\" :stroke-width=\"2\" />\n </div>\n <div class=\"tpl:flex tpl:min-w-0 tpl:flex-col tpl:gap-0.5\">\n <span class=\"tpl:text-sm tpl:font-medium tpl:text-[var(--tpl-text)]\">\n {{ getTitle(feature.key) }}\n </span>\n <span\n class=\"tpl:text-xs tpl:leading-snug tpl:text-[var(--tpl-text-muted)]\"\n >\n {{ getDescription(feature.key) }}\n </span>\n </div>\n </button>\n </div>\n</template>\n\n<style scoped>\n.tpl-ai-feature-menu-item:hover {\n background-color: var(--tpl-bg-hover) !important;\n}\n</style>\n","<script setup lang=\"ts\">\nimport { useCloudI18nStrict } from \"../../composables\";\nimport { AI_CONFIG_KEY, requireInject } from \"../../keys\";\nimport type { AiConfig } from \"@templatical/types\";\nimport { ImageUp, ShieldCheck, Sparkles } from \"@lucide/vue\";\nimport { computed } from \"vue\";\n\nexport type AiFeature = \"ai-chat\" | \"design-reference\" | \"scoring\";\n\ndefineProps<{\n activeFeature: AiFeature | null;\n}>();\n\nconst emit = defineEmits<{\n (e: \"select\", feature: AiFeature): void;\n}>();\n\nconst { t: cloudT } = useCloudI18nStrict();\n\nconst aiConfig = requireInject(AI_CONFIG_KEY, \"AiFeatureMenu\");\n\nconst configKeyMap: Record<AiFeature, keyof AiConfig> = {\n \"ai-chat\": \"chat\",\n \"design-reference\": \"designToTemplate\",\n scoring: \"scoring\",\n};\n\nconst allFeatures: { key: AiFeature; icon: typeof Sparkles }[] = [\n { key: \"ai-chat\", icon: Sparkles },\n { key: \"design-reference\", icon: ImageUp },\n { key: \"scoring\", icon: ShieldCheck },\n];\n\nconst features = computed(() =>\n allFeatures.filter((f) => aiConfig.isFeatureEnabled(configKeyMap[f.key])),\n);\n\nfunction getTitle(key: AiFeature): string {\n if (key === \"ai-chat\") return cloudT.aiMenu.aiAssistant;\n if (key === \"design-reference\") return cloudT.aiMenu.designToTemplate;\n return cloudT.aiMenu.templateScore;\n}\n\nfunction getDescription(key: AiFeature): string {\n if (key === \"ai-chat\") return cloudT.aiMenu.aiAssistantDesc;\n if (key === \"design-reference\") return cloudT.aiMenu.designToTemplateDesc;\n return cloudT.aiMenu.templateScoreDesc;\n}\n</script>\n\n<template>\n <div\n class=\"tpl-ai-feature-menu tpl:w-[280px] tpl:overflow-hidden tpl:rounded-[var(--tpl-radius)] tpl:py-1 tpl:bg-[var(--tpl-bg)] tpl:border tpl:border-[var(--tpl-border)] tpl:shadow-[var(--tpl-shadow-lg)]\"\n >\n <button\n v-for=\"feature in features\"\n :key=\"feature.key\"\n class=\"tpl-ai-feature-menu-item tpl:flex tpl:w-full tpl:cursor-pointer tpl:items-start tpl:gap-3 tpl:border-none tpl:px-3 tpl:py-2.5 tpl:text-left tpl:transition-colors\"\n :style=\"{\n backgroundColor:\n activeFeature === feature.key\n ? 'var(--tpl-primary-light)'\n : 'transparent',\n }\"\n @click=\"emit('select', feature.key)\"\n >\n <div\n class=\"tpl:mt-0.5 tpl:flex tpl:size-7 tpl:shrink-0 tpl:items-center tpl:justify-center tpl:rounded-[var(--tpl-radius-sm)]\"\n :style=\"{\n backgroundColor:\n activeFeature === feature.key\n ? 'var(--tpl-primary)'\n : 'var(--tpl-bg-active)',\n color:\n activeFeature === feature.key\n ? 'var(--tpl-bg)'\n : 'var(--tpl-text-muted)',\n }\"\n >\n <component :is=\"feature.icon\" :size=\"15\" :stroke-width=\"2\" />\n </div>\n <div class=\"tpl:flex tpl:min-w-0 tpl:flex-col tpl:gap-0.5\">\n <span class=\"tpl:text-sm tpl:font-medium tpl:text-[var(--tpl-text)]\">\n {{ getTitle(feature.key) }}\n </span>\n <span\n class=\"tpl:text-xs tpl:leading-snug tpl:text-[var(--tpl-text-muted)]\"\n >\n {{ getDescription(feature.key) }}\n </span>\n </div>\n </button>\n </div>\n</template>\n\n<style scoped>\n.tpl-ai-feature-menu-item:hover {\n background-color: var(--tpl-bg-hover) !important;\n}\n</style>\n"],"mappings":";;;;;;;;;;;;EAaA,IAAM,IAAO,GAIP,EAAE,GAAG,MAAW,EAAmB,GAEnC,IAAW,EAAc,GAAe,eAAe,GAEvD,IAAkD;GACtD,WAAW;GACX,oBAAoB;GACpB,SAAS;EACX,GAEM,IAA2D;GAC/D;IAAE,KAAK;IAAW,MAAM;GAAS;GACjC;IAAE,KAAK;IAAoB,MAAM;GAAQ;GACzC;IAAE,KAAK;IAAW,MAAM;GAAY;EACtC,GAEM,IAAW,QACf,EAAY,QAAQ,MAAM,EAAS,iBAAiB,EAAa,EAAE,IAAI,CAAC,CAC1E;EAEA,SAAS,EAAS,GAAwB;GAGxC,OAFI,MAAQ,YAAkB,EAAO,OAAO,cACxC,MAAQ,qBAA2B,EAAO,OAAO,mBAC9C,EAAO,OAAO;EACvB;EAEA,SAAS,EAAe,GAAwB;GAG9C,OAFI,MAAQ,YAAkB,EAAO,OAAO,kBACxC,MAAQ,qBAA2B,EAAO,OAAO,uBAC9C,EAAO,OAAO;EACvB;oBAIE,EAAA,GAAA,EAyCM,OAzCN,GAyCM,EAtCJ,EAAA,EAAA,GAAA,EAqCS,GAAA,MAAA,EApCW,EAAA,QAAX,OADT,EAAA,GAAA,EAqCS,UAAA;GAnCN,KAAK,EAAQ;GACd,OAAM;GACL,OAAK,EAAA,EAAA,iBAAuC,EAAA,kBAAkB,EAAQ,MAAA,6BAAA,cAAA,CAAA;GAMtE,UAAK,MAAE,EAAI,UAAW,EAAQ,GAAG;EAElC,GAAA,CAAA,EAcM,OAAA;GAbJ,OAAM;GACL,OAAK,EAAA;IAA2C,iBAAA,EAAA,kBAAkB,EAAQ,MAAA,uBAAA;IAA8G,OAAA,EAAA,kBAAkB,EAAQ,MAAA,kBAAA;;EAWnN,GAAA,EAAA,EAAA,GAAA,EAA6D,EAA7C,EAAQ,IAAI,GAAA;GAAG,MAAM;GAAK,gBAAc;EAE1D,CAAA,EAAA,GAAA,CAAA,GAAA,EASM,OATN,GASM,CARJ,EAEO,QAFP,GAEO,EADF,EAAS,EAAQ,GAAG,CAAA,GAAA,CAAA,GAEzB,EAIO,QAJP,GAIO,EADF,EAAe,EAAQ,GAAG,CAAA,GAAA,CAAA,CAAA,CAAA,CAAA,GAAA,IAAA,CAAA"}
1
+ {"version":3,"file":"AiFeatureMenu-CS62uVuh.js","names":[],"sources":["../../../src/cloud/components/AiFeatureMenu.vue","../../../src/cloud/components/AiFeatureMenu.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { useCloudI18nStrict } from \"../../composables\";\nimport { AI_CONFIG_KEY, requireInject } from \"../../keys\";\nimport type { AiConfig } from \"@templatical/types\";\nimport { ImageUp, ShieldCheck, Sparkles } from \"@lucide/vue\";\nimport { computed } from \"vue\";\n\nexport type AiFeature = \"ai-chat\" | \"design-reference\" | \"scoring\";\n\ndefineProps<{\n activeFeature: AiFeature | null;\n}>();\n\nconst emit = defineEmits<{\n (e: \"select\", feature: AiFeature): void;\n}>();\n\nconst { t: cloudT } = useCloudI18nStrict();\n\nconst aiConfig = requireInject(AI_CONFIG_KEY, \"AiFeatureMenu\");\n\nconst configKeyMap: Record<AiFeature, keyof AiConfig> = {\n \"ai-chat\": \"chat\",\n \"design-reference\": \"designToTemplate\",\n scoring: \"scoring\",\n};\n\nconst allFeatures: { key: AiFeature; icon: typeof Sparkles }[] = [\n { key: \"ai-chat\", icon: Sparkles },\n { key: \"design-reference\", icon: ImageUp },\n { key: \"scoring\", icon: ShieldCheck },\n];\n\nconst features = computed(() =>\n allFeatures.filter((f) => aiConfig.isFeatureEnabled(configKeyMap[f.key])),\n);\n\nfunction getTitle(key: AiFeature): string {\n if (key === \"ai-chat\") return cloudT.aiMenu.aiAssistant;\n if (key === \"design-reference\") return cloudT.aiMenu.designToTemplate;\n return cloudT.aiMenu.templateScore;\n}\n\nfunction getDescription(key: AiFeature): string {\n if (key === \"ai-chat\") return cloudT.aiMenu.aiAssistantDesc;\n if (key === \"design-reference\") return cloudT.aiMenu.designToTemplateDesc;\n return cloudT.aiMenu.templateScoreDesc;\n}\n</script>\n\n<template>\n <div\n class=\"tpl-ai-feature-menu tpl:w-[280px] tpl:overflow-hidden tpl:rounded-[var(--tpl-radius)] tpl:py-1 tpl:bg-[var(--tpl-bg)] tpl:border tpl:border-[var(--tpl-border)] tpl:shadow-[var(--tpl-shadow-lg)]\"\n >\n <button\n v-for=\"feature in features\"\n :key=\"feature.key\"\n class=\"tpl-ai-feature-menu-item tpl:flex tpl:w-full tpl:cursor-pointer tpl:items-start tpl:gap-3 tpl:border-none tpl:px-3 tpl:py-2.5 tpl:text-left tpl:transition-colors\"\n :style=\"{\n backgroundColor:\n activeFeature === feature.key\n ? 'var(--tpl-primary-light)'\n : 'transparent',\n }\"\n @click=\"emit('select', feature.key)\"\n >\n <div\n class=\"tpl:mt-0.5 tpl:flex tpl:size-7 tpl:shrink-0 tpl:items-center tpl:justify-center tpl:rounded-[var(--tpl-radius-sm)]\"\n :style=\"{\n backgroundColor:\n activeFeature === feature.key\n ? 'var(--tpl-primary)'\n : 'var(--tpl-bg-active)',\n color:\n activeFeature === feature.key\n ? 'var(--tpl-bg)'\n : 'var(--tpl-text-muted)',\n }\"\n >\n <component :is=\"feature.icon\" :size=\"15\" :stroke-width=\"2\" />\n </div>\n <div class=\"tpl:flex tpl:min-w-0 tpl:flex-col tpl:gap-0.5\">\n <span class=\"tpl:text-sm tpl:font-medium tpl:text-[var(--tpl-text)]\">\n {{ getTitle(feature.key) }}\n </span>\n <span\n class=\"tpl:text-xs tpl:leading-snug tpl:text-[var(--tpl-text-muted)]\"\n >\n {{ getDescription(feature.key) }}\n </span>\n </div>\n </button>\n </div>\n</template>\n\n<style scoped>\n.tpl-ai-feature-menu-item:hover {\n background-color: var(--tpl-bg-hover) !important;\n}\n</style>\n","<script setup lang=\"ts\">\nimport { useCloudI18nStrict } from \"../../composables\";\nimport { AI_CONFIG_KEY, requireInject } from \"../../keys\";\nimport type { AiConfig } from \"@templatical/types\";\nimport { ImageUp, ShieldCheck, Sparkles } from \"@lucide/vue\";\nimport { computed } from \"vue\";\n\nexport type AiFeature = \"ai-chat\" | \"design-reference\" | \"scoring\";\n\ndefineProps<{\n activeFeature: AiFeature | null;\n}>();\n\nconst emit = defineEmits<{\n (e: \"select\", feature: AiFeature): void;\n}>();\n\nconst { t: cloudT } = useCloudI18nStrict();\n\nconst aiConfig = requireInject(AI_CONFIG_KEY, \"AiFeatureMenu\");\n\nconst configKeyMap: Record<AiFeature, keyof AiConfig> = {\n \"ai-chat\": \"chat\",\n \"design-reference\": \"designToTemplate\",\n scoring: \"scoring\",\n};\n\nconst allFeatures: { key: AiFeature; icon: typeof Sparkles }[] = [\n { key: \"ai-chat\", icon: Sparkles },\n { key: \"design-reference\", icon: ImageUp },\n { key: \"scoring\", icon: ShieldCheck },\n];\n\nconst features = computed(() =>\n allFeatures.filter((f) => aiConfig.isFeatureEnabled(configKeyMap[f.key])),\n);\n\nfunction getTitle(key: AiFeature): string {\n if (key === \"ai-chat\") return cloudT.aiMenu.aiAssistant;\n if (key === \"design-reference\") return cloudT.aiMenu.designToTemplate;\n return cloudT.aiMenu.templateScore;\n}\n\nfunction getDescription(key: AiFeature): string {\n if (key === \"ai-chat\") return cloudT.aiMenu.aiAssistantDesc;\n if (key === \"design-reference\") return cloudT.aiMenu.designToTemplateDesc;\n return cloudT.aiMenu.templateScoreDesc;\n}\n</script>\n\n<template>\n <div\n class=\"tpl-ai-feature-menu tpl:w-[280px] tpl:overflow-hidden tpl:rounded-[var(--tpl-radius)] tpl:py-1 tpl:bg-[var(--tpl-bg)] tpl:border tpl:border-[var(--tpl-border)] tpl:shadow-[var(--tpl-shadow-lg)]\"\n >\n <button\n v-for=\"feature in features\"\n :key=\"feature.key\"\n class=\"tpl-ai-feature-menu-item tpl:flex tpl:w-full tpl:cursor-pointer tpl:items-start tpl:gap-3 tpl:border-none tpl:px-3 tpl:py-2.5 tpl:text-left tpl:transition-colors\"\n :style=\"{\n backgroundColor:\n activeFeature === feature.key\n ? 'var(--tpl-primary-light)'\n : 'transparent',\n }\"\n @click=\"emit('select', feature.key)\"\n >\n <div\n class=\"tpl:mt-0.5 tpl:flex tpl:size-7 tpl:shrink-0 tpl:items-center tpl:justify-center tpl:rounded-[var(--tpl-radius-sm)]\"\n :style=\"{\n backgroundColor:\n activeFeature === feature.key\n ? 'var(--tpl-primary)'\n : 'var(--tpl-bg-active)',\n color:\n activeFeature === feature.key\n ? 'var(--tpl-bg)'\n : 'var(--tpl-text-muted)',\n }\"\n >\n <component :is=\"feature.icon\" :size=\"15\" :stroke-width=\"2\" />\n </div>\n <div class=\"tpl:flex tpl:min-w-0 tpl:flex-col tpl:gap-0.5\">\n <span class=\"tpl:text-sm tpl:font-medium tpl:text-[var(--tpl-text)]\">\n {{ getTitle(feature.key) }}\n </span>\n <span\n class=\"tpl:text-xs tpl:leading-snug tpl:text-[var(--tpl-text-muted)]\"\n >\n {{ getDescription(feature.key) }}\n </span>\n </div>\n </button>\n </div>\n</template>\n\n<style scoped>\n.tpl-ai-feature-menu-item:hover {\n background-color: var(--tpl-bg-hover) !important;\n}\n</style>\n"],"mappings":";;;;;;;;;;;;EAaA,IAAM,IAAO,GAIP,EAAE,GAAG,MAAW,EAAmB,GAEnC,IAAW,EAAc,GAAe,eAAe,GAEvD,IAAkD;GACtD,WAAW;GACX,oBAAoB;GACpB,SAAS;EACX,GAEM,IAA2D;GAC/D;IAAE,KAAK;IAAW,MAAM;GAAS;GACjC;IAAE,KAAK;IAAoB,MAAM;GAAQ;GACzC;IAAE,KAAK;IAAW,MAAM;GAAY;EACtC,GAEM,IAAW,QACf,EAAY,QAAQ,MAAM,EAAS,iBAAiB,EAAa,EAAE,IAAI,CAAC,CAC1E;EAEA,SAAS,EAAS,GAAwB;GAGxC,OAFI,MAAQ,YAAkB,EAAO,OAAO,cACxC,MAAQ,qBAA2B,EAAO,OAAO,mBAC9C,EAAO,OAAO;EACvB;EAEA,SAAS,EAAe,GAAwB;GAG9C,OAFI,MAAQ,YAAkB,EAAO,OAAO,kBACxC,MAAQ,qBAA2B,EAAO,OAAO,uBAC9C,EAAO,OAAO;EACvB;oBAIE,EAAA,GAAA,EAyCM,OAzCN,GAyCM,EAtCJ,EAAA,EAAA,GAAA,EAqCS,GAAA,MAAA,EApCW,EAAA,QAAX,OADT,EAAA,GAAA,EAqCS,UAAA;GAnCN,KAAK,EAAQ;GACd,OAAM;GACL,OAAK,EAAA,EAAA,iBAAuC,EAAA,kBAAkB,EAAQ,MAAA,6BAAA,cAAA,CAAA;GAMtE,UAAK,MAAE,EAAI,UAAW,EAAQ,GAAG;EAElC,GAAA,CAAA,EAcM,OAAA;GAbJ,OAAM;GACL,OAAK,EAAA;IAA2C,iBAAA,EAAA,kBAAkB,EAAQ,MAAA,uBAAA;IAA8G,OAAA,EAAA,kBAAkB,EAAQ,MAAA,kBAAA;;EAWnN,GAAA,EAAA,EAAA,GAAA,EAA6D,EAA7C,EAAQ,IAAI,GAAA;GAAG,MAAM;GAAK,gBAAc;EAE1D,CAAA,EAAA,GAAA,CAAA,GAAA,EASM,OATN,GASM,CARJ,EAEO,QAFP,GAEO,EADF,EAAS,EAAQ,GAAG,CAAA,GAAA,CAAA,GAEzB,EAIO,QAJP,GAIO,EADF,EAAe,EAAQ,GAAG,CAAA,GAAA,CAAA,CAAA,CAAA,CAAA,GAAA,IAAA,CAAA"}
@@ -1,6 +1,6 @@
1
1
  import { n as e } from "./rolldown-runtime-B0aSnxlc.js";
2
2
  import { E as t, F as n, L as r, N as i, P as a, R as o, S as s, at as c, f as l, g as u, lt as d, m as f, p, u as m } from "./draggable-BfpsXFg7.js";
3
- import { O as h, _ as g, a as _, c as v, d as y, f as b, h as x, i as S, m as C, n as w, p as T, r as E, u as D, v as O, y as k } from "./useEditorCore-D84laTMj.js";
3
+ import { O as h, _ as g, a as _, c as v, d as y, f as b, h as x, i as S, m as C, n as w, p as T, r as E, u as D, v as O, y as k } from "./useEditorCore-DTpSiO4S.js";
4
4
  import { O as A, U as j, d as M, h as N, s as P } from "./keys-oJdkdtPn.js";
5
5
  import { n as F, t as I } from "./emailFrameWidth-BmFCN2dp.js";
6
6
  //#region src/components/blocks/PreviewSectionBlock.vue?vue&type=script&setup=true&lang.ts
@@ -120,4 +120,4 @@ var L = { class: "tpl:w-full" }, R = { class: "tpl:flex tpl:gap-0" }, z = /* @__
120
120
  //#endregion
121
121
  export { V as n, H as t };
122
122
 
123
- //# sourceMappingURL=BlockPreviewCanvas-Bt7fFzIQ.js.map
123
+ //# sourceMappingURL=BlockPreviewCanvas-DcCqg909.js.map