@templatical/editor 0.26.0 → 0.26.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (82) hide show
  1. package/dist/{AiChatSidebar-c-3yyjN1.js → AiChatSidebar-B_fwa6zc.js} +1 -1
  2. package/dist/{AiFeatureMenu-B-COyG7k.js → AiFeatureMenu-BBBKsYD4.js} +1 -1
  3. package/dist/{BlockPreviewCanvas-CJPHGI93.js → BlockPreviewCanvas-zyyq2de0.js} +1 -1
  4. package/dist/{CloudEditor-BdSQ8hfv.js → CloudEditor-DM3RRCVn.js} +8 -8
  5. package/dist/{CollaboratorBar-mGoi6yye.js → CollaboratorBar-Coj8Ebwf.js} +1 -1
  6. package/dist/{DesignReferenceSidebar-CgYkySre.js → DesignReferenceSidebar-hDXOvGoV.js} +1 -1
  7. package/dist/{MergeTagModeToggle-hAJgIKhw.js → MergeTagModeToggle-D0t5NHBZ.js} +1 -1
  8. package/dist/{ParagraphEditor-DBG63S70.js → ParagraphEditor-B-CYrQMY.js} +2 -2
  9. package/dist/{SaveBlockDialog-Dq9UVihi.js → SaveBlockDialog-CoVPZfUv.js} +3 -3
  10. package/dist/{SavedBlocksBrowserModal-CtFG4zeV.js → SavedBlocksBrowserModal-DX13xw0O.js} +4 -4
  11. package/dist/{SavedBlocksPanels-DNVdso_W.js → SavedBlocksPanels-B7pBiZcc.js} +1 -1
  12. package/dist/{SavedBlocksPickBar-Cv4dIpP-.js → SavedBlocksPickBar-ZfqXByph.js} +1 -1
  13. package/dist/{SnapshotHistory-DsOtMHOV.js → SnapshotHistory-BxABntv5.js} +1 -1
  14. package/dist/{TestEmailModal-CIwqtGfr.js → TestEmailModal-Db4qheuy.js} +5 -5
  15. package/dist/{TestEmailPanel-l6LDmBGM.js → TestEmailPanel-B-SXSnRg.js} +1 -1
  16. package/dist/{TitleEditor-imoBUynh.js → TitleEditor-DmoaKooA.js} +2 -2
  17. package/dist/{TplModal-DDDHcoir.js → TplModal-Bym-Kf_i.js} +1 -1
  18. package/dist/{blockTypeIcons-CfLN4A6t.js → blockTypeIcons-BnCXsB2I.js} +1 -1
  19. package/dist/bundle-stats.json +5 -5
  20. package/dist/cdn/chunks/{AiChatSidebar-BHqNxNcX.js → AiChatSidebar-CFvS4-EZ.js} +2 -2
  21. package/dist/cdn/chunks/{AiChatSidebar-BHqNxNcX.js.map → AiChatSidebar-CFvS4-EZ.js.map} +1 -1
  22. package/dist/cdn/chunks/{AiFeatureMenu-D2AIDwEG.js → AiFeatureMenu-a0gBZiJ9.js} +2 -2
  23. package/dist/cdn/chunks/{AiFeatureMenu-D2AIDwEG.js.map → AiFeatureMenu-a0gBZiJ9.js.map} +1 -1
  24. package/dist/cdn/chunks/{BlockPreviewCanvas-DH5ULGkw.js → BlockPreviewCanvas-C27XK2q0.js} +2 -2
  25. package/dist/cdn/chunks/{BlockPreviewCanvas-DH5ULGkw.js.map → BlockPreviewCanvas-C27XK2q0.js.map} +1 -1
  26. package/dist/cdn/chunks/{CloudEditor-C0nB1JfD.js → CloudEditor-Ddnatfuw.js} +11 -11
  27. package/dist/cdn/chunks/{CloudEditor-C0nB1JfD.js.map → CloudEditor-Ddnatfuw.js.map} +1 -1
  28. package/dist/cdn/chunks/{CollaboratorBar-f6Ni7KNH.js → CollaboratorBar-C5Xf6Mz9.js} +2 -2
  29. package/dist/cdn/chunks/{CollaboratorBar-f6Ni7KNH.js.map → CollaboratorBar-C5Xf6Mz9.js.map} +1 -1
  30. package/dist/cdn/chunks/{DesignReferenceSidebar-DBoEBKxQ.js → DesignReferenceSidebar-CZiP00JN.js} +2 -2
  31. package/dist/cdn/chunks/{DesignReferenceSidebar-DBoEBKxQ.js.map → DesignReferenceSidebar-CZiP00JN.js.map} +1 -1
  32. package/dist/cdn/chunks/{MergeTagModeToggle-D8iKvz7v.js → MergeTagModeToggle-ClGdRNpZ.js} +2 -2
  33. package/dist/cdn/chunks/{MergeTagModeToggle-D8iKvz7v.js.map → MergeTagModeToggle-ClGdRNpZ.js.map} +1 -1
  34. package/dist/cdn/chunks/{ParagraphEditor-Cuc83Blj.js → ParagraphEditor-BNc146Pp.js} +3 -3
  35. package/dist/cdn/chunks/{ParagraphEditor-Cuc83Blj.js.map → ParagraphEditor-BNc146Pp.js.map} +1 -1
  36. package/dist/cdn/chunks/{SaveBlockDialog-B8KHhVkI.js → SaveBlockDialog-ogieDQp7.js} +4 -4
  37. package/dist/cdn/chunks/{SaveBlockDialog-B8KHhVkI.js.map → SaveBlockDialog-ogieDQp7.js.map} +1 -1
  38. package/dist/cdn/chunks/{SavedBlocksBrowserModal-B-sjsIJv.js → SavedBlocksBrowserModal-DSpZcT_T.js} +4 -4
  39. package/dist/cdn/chunks/{SavedBlocksBrowserModal-B-sjsIJv.js.map → SavedBlocksBrowserModal-DSpZcT_T.js.map} +1 -1
  40. package/dist/cdn/chunks/{SavedBlocksPanels-Bb-eDMAh.js → SavedBlocksPanels-WYrSyf-l.js} +2 -2
  41. package/dist/cdn/chunks/{SavedBlocksPanels-Bb-eDMAh.js.map → SavedBlocksPanels-WYrSyf-l.js.map} +1 -1
  42. package/dist/cdn/chunks/{SavedBlocksPickBar-GudFfXa4.js → SavedBlocksPickBar-DGbLBG5P.js} +2 -2
  43. package/dist/cdn/chunks/{SavedBlocksPickBar-GudFfXa4.js.map → SavedBlocksPickBar-DGbLBG5P.js.map} +1 -1
  44. package/dist/cdn/chunks/{SnapshotHistory-Srpzt2na.js → SnapshotHistory-VyL4tJwn.js} +2 -2
  45. package/dist/cdn/chunks/{SnapshotHistory-Srpzt2na.js.map → SnapshotHistory-VyL4tJwn.js.map} +1 -1
  46. package/dist/cdn/chunks/{TestEmailModal-DLeoJqaJ.js → TestEmailModal-DRte11oT.js} +6 -6
  47. package/dist/cdn/chunks/{TestEmailModal-DLeoJqaJ.js.map → TestEmailModal-DRte11oT.js.map} +1 -1
  48. package/dist/cdn/chunks/{TestEmailPanel-Dr7Dkq2P.js → TestEmailPanel-CpK5t4E3.js} +2 -2
  49. package/dist/cdn/chunks/{TestEmailPanel-Dr7Dkq2P.js.map → TestEmailPanel-CpK5t4E3.js.map} +1 -1
  50. package/dist/cdn/chunks/{TitleEditor-DzYRr18C.js → TitleEditor-EkDchueW.js} +3 -3
  51. package/dist/cdn/chunks/{TitleEditor-DzYRr18C.js.map → TitleEditor-EkDchueW.js.map} +1 -1
  52. package/dist/cdn/chunks/{TplModal-byw7-3wg.js → TplModal-BGLstO3F.js} +2 -2
  53. package/dist/cdn/chunks/{TplModal-byw7-3wg.js.map → TplModal-BGLstO3F.js.map} +1 -1
  54. package/dist/cdn/chunks/{cloud-CuItCnN_.js → cloud-CNpvDuv7.js} +2 -2
  55. package/dist/cdn/chunks/{cloud-CuItCnN_.js.map → cloud-CNpvDuv7.js.map} +1 -1
  56. package/dist/cdn/chunks/{extensions-B7laxHjs.js → extensions-CZAB08kD.js} +3 -3
  57. package/dist/cdn/chunks/{extensions-B7laxHjs.js.map → extensions-CZAB08kD.js.map} +1 -1
  58. package/dist/cdn/chunks/{src-C0N74uvF.js → src-BRRRFqXr.js} +2 -2
  59. package/dist/cdn/chunks/{src-C0N74uvF.js.map → src-BRRRFqXr.js.map} +1 -1
  60. package/dist/cdn/chunks/{src-BYKYmEOD.js → src-COnW7gMq.js} +120 -121
  61. package/dist/cdn/chunks/src-COnW7gMq.js.map +1 -0
  62. package/dist/cdn/chunks/{src-EKTTBQ0y.js → src-DsvVSm7Z.js} +219 -165
  63. package/dist/cdn/chunks/src-DsvVSm7Z.js.map +1 -0
  64. package/dist/cdn/chunks/{src-Bi-Qhtfs.js → src-DzH5U9Vm.js} +79 -79
  65. package/dist/cdn/chunks/{src-Bi-Qhtfs.js.map → src-DzH5U9Vm.js.map} +1 -1
  66. package/dist/cdn/chunks/{styles-C7s-VtJi.js → styles-DEU_sn3k.js} +452 -452
  67. package/dist/cdn/chunks/{styles-C7s-VtJi.js.map → styles-DEU_sn3k.js.map} +1 -1
  68. package/dist/cdn/chunks/{useEditorCore-C_nUXiph.js → useEditorCore-fyFmWS3D.js} +36 -36
  69. package/dist/cdn/chunks/{useEditorCore-C_nUXiph.js.map → useEditorCore-fyFmWS3D.js.map} +1 -1
  70. package/dist/cdn/chunks/{useMergeTag-CPa_9VOq.js → useMergeTag-DjQoCGEz.js} +2 -2
  71. package/dist/cdn/chunks/{useMergeTag-CPa_9VOq.js.map → useMergeTag-DjQoCGEz.js.map} +1 -1
  72. package/dist/cdn/editor.js +7 -7
  73. package/dist/{cloud-C7-FhzMc.js → cloud-4SuOLNTK.js} +1 -1
  74. package/dist/{dist-D5zCZFdU.js → dist-BvYvG5SQ.js} +108 -56
  75. package/dist/{extensions-CxwhoG8v.js → extensions-Dz5jj0wf.js} +2 -2
  76. package/dist/{styles-C_slTGwp.js → styles-DbP2S8Z1.js} +6 -6
  77. package/dist/templatical-editor.js +7 -7
  78. package/dist/{useEditorCore-r4gWzCBA.js → useEditorCore-CbcmGpwp.js} +4 -4
  79. package/dist/{useMergeTag-C-_WxrgL.js → useMergeTag-B9xG9EJ7.js} +1 -1
  80. package/package.json +8 -8
  81. package/dist/cdn/chunks/src-BYKYmEOD.js.map +0 -1
  82. package/dist/cdn/chunks/src-EKTTBQ0y.js.map +0 -1
@@ -1,5 +1,5 @@
1
1
  import { T as e, Z as t } from "./draggable-DCs9qL-b.js";
2
- import { f as n, o as r, r as i } from "./src-EKTTBQ0y.js";
2
+ import { f as n, o as r, r as i } from "./src-DsvVSm7Z.js";
3
3
  import { A as a, D as o, E as s, N as c, O as l } from "./keys-Cmc2Yl3D.js";
4
4
  //#region src/composables/useMergeTag.ts
5
5
  function u() {
@@ -43,4 +43,4 @@ function u() {
43
43
  //#endregion
44
44
  export { u as t };
45
45
 
46
- //# sourceMappingURL=useMergeTag-CPa_9VOq.js.map
46
+ //# sourceMappingURL=useMergeTag-DjQoCGEz.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"useMergeTag-CPa_9VOq.js","names":[],"sources":["../../../src/composables/useMergeTag.ts"],"sourcesContent":["import type { MergeTag, SyntaxPreset } from \"@templatical/types\";\nimport {\n isMergeTagValue as checkIsMergeTagValue,\n getMergeTagLabel as resolveMergeTagLabel,\n SYNTAX_PRESETS,\n} from \"@templatical/types\";\nimport { inject, ref, type Ref } from \"vue\";\nimport {\n MERGE_TAGS_KEY,\n MERGE_TAG_SYNTAX_KEY,\n MERGE_TAG_AUTOCOMPLETE_KEY,\n MERGE_TAG_PICKER_KEY,\n ON_REQUEST_MERGE_TAG_KEY,\n} from \"../keys\";\n\nexport interface UseMergeTagReturn {\n /** Available merge tags from config */\n mergeTags: MergeTag[];\n /** Whether a merge tag request is in progress */\n isRequesting: Ref<boolean>;\n /**\n * Whether the \"Insert merge tag\" button should be shown. True when\n * either `onRequestMergeTag` is provided or `mergeTags.tags` is\n * non-empty (the built-in picker then handles the click).\n */\n canRequestMergeTag: boolean;\n /** Whether typing-based autocomplete is enabled by configuration */\n autocomplete: boolean;\n /** The resolved syntax preset for merge tags */\n syntax: SyntaxPreset;\n /** Check if a value matches the configured merge tag syntax */\n isMergeTagValue: (value: string) => boolean;\n /** Get the human-readable label for a merge tag value */\n getMergeTagLabel: (value: string) => string;\n /**\n * Request a merge tag from the user. Precedence: when\n * `onRequestMergeTag` is set it owns the UX; otherwise the built-in\n * picker opens with the configured `mergeTags.tags`; otherwise null.\n */\n requestMergeTag: () => Promise<MergeTag | null>;\n}\n\n/**\n * Composable for merge tag functionality.\n * Provides utilities for detecting, displaying, and requesting merge tags.\n */\nexport function useMergeTag(): UseMergeTagReturn {\n const mergeTags = inject(MERGE_TAGS_KEY, []);\n const syntax = inject(MERGE_TAG_SYNTAX_KEY, SYNTAX_PRESETS.liquid);\n const onRequestMergeTag = inject(ON_REQUEST_MERGE_TAG_KEY, null);\n const autocomplete = inject(MERGE_TAG_AUTOCOMPLETE_KEY, true);\n // Picker may be null in headless contexts (tests, non-editor consumers).\n // requestMergeTag() returns null in that case rather than throwing.\n const picker = inject(MERGE_TAG_PICKER_KEY, null);\n\n const isRequesting = ref(false);\n\n function isMergeTagValue(value: string): boolean {\n return checkIsMergeTagValue(value, syntax);\n }\n\n function getMergeTagLabel(value: string): string {\n return resolveMergeTagLabel(value, mergeTags);\n }\n\n /**\n * Request a merge tag from the user. Precedence:\n * 1. `onRequestMergeTag` callback (consumer-owned UX)\n * 2. Built-in picker over `mergeTags.tags`\n * 3. null (nothing configured)\n */\n async function requestMergeTag(): Promise<MergeTag | null> {\n if (onRequestMergeTag) {\n isRequesting.value = true;\n try {\n return await onRequestMergeTag();\n } finally {\n isRequesting.value = false;\n }\n }\n if (mergeTags.length > 0 && picker) {\n isRequesting.value = true;\n try {\n return await picker.open(mergeTags);\n } finally {\n isRequesting.value = false;\n }\n }\n return null;\n }\n\n const canRequestMergeTag = !!onRequestMergeTag || mergeTags.length > 0;\n\n return {\n mergeTags,\n isRequesting,\n canRequestMergeTag,\n autocomplete,\n syntax,\n isMergeTagValue,\n getMergeTagLabel,\n requestMergeTag,\n };\n}\n"],"mappings":";;;;AA8CA,SAAgB,IAAiC;CAC/C,IAAM,IAAY,EAAO,GAAgB,CAAC,CAAC,GACrC,IAAS,EAAO,GAAsB,EAAe,MAAM,GAC3D,IAAoB,EAAO,GAA0B,IAAI,GACzD,IAAe,EAAO,GAA4B,EAAI,GAGtD,IAAS,EAAO,GAAsB,IAAI,GAE1C,IAAe,EAAI,EAAK;CAE9B,SAAS,EAAgB,GAAwB;EAC/C,OAAO,EAAqB,GAAO,CAAM;CAC3C;CAEA,SAAS,EAAiB,GAAuB;EAC/C,OAAO,EAAqB,GAAO,CAAS;CAC9C;CAQA,eAAe,IAA4C;EACzD,IAAI,GAAmB;GACrB,EAAa,QAAQ;GACrB,IAAI;IACF,OAAO,MAAM,EAAkB;GACjC,UAAU;IACR,EAAa,QAAQ;GACvB;EACF;EACA,IAAI,EAAU,SAAS,KAAK,GAAQ;GAClC,EAAa,QAAQ;GACrB,IAAI;IACF,OAAO,MAAM,EAAO,KAAK,CAAS;GACpC,UAAU;IACR,EAAa,QAAQ;GACvB;EACF;EACA,OAAO;CACT;CAIA,OAAO;EACL;EACA;EACA,oBALyB,CAAC,CAAC,KAAqB,EAAU,SAAS;EAMnE;EACA;EACA,iBAAA;EACA,kBAAA;EACA;CACF;AACF"}
1
+ {"version":3,"file":"useMergeTag-DjQoCGEz.js","names":[],"sources":["../../../src/composables/useMergeTag.ts"],"sourcesContent":["import type { MergeTag, SyntaxPreset } from \"@templatical/types\";\nimport {\n isMergeTagValue as checkIsMergeTagValue,\n getMergeTagLabel as resolveMergeTagLabel,\n SYNTAX_PRESETS,\n} from \"@templatical/types\";\nimport { inject, ref, type Ref } from \"vue\";\nimport {\n MERGE_TAGS_KEY,\n MERGE_TAG_SYNTAX_KEY,\n MERGE_TAG_AUTOCOMPLETE_KEY,\n MERGE_TAG_PICKER_KEY,\n ON_REQUEST_MERGE_TAG_KEY,\n} from \"../keys\";\n\nexport interface UseMergeTagReturn {\n /** Available merge tags from config */\n mergeTags: MergeTag[];\n /** Whether a merge tag request is in progress */\n isRequesting: Ref<boolean>;\n /**\n * Whether the \"Insert merge tag\" button should be shown. True when\n * either `onRequestMergeTag` is provided or `mergeTags.tags` is\n * non-empty (the built-in picker then handles the click).\n */\n canRequestMergeTag: boolean;\n /** Whether typing-based autocomplete is enabled by configuration */\n autocomplete: boolean;\n /** The resolved syntax preset for merge tags */\n syntax: SyntaxPreset;\n /** Check if a value matches the configured merge tag syntax */\n isMergeTagValue: (value: string) => boolean;\n /** Get the human-readable label for a merge tag value */\n getMergeTagLabel: (value: string) => string;\n /**\n * Request a merge tag from the user. Precedence: when\n * `onRequestMergeTag` is set it owns the UX; otherwise the built-in\n * picker opens with the configured `mergeTags.tags`; otherwise null.\n */\n requestMergeTag: () => Promise<MergeTag | null>;\n}\n\n/**\n * Composable for merge tag functionality.\n * Provides utilities for detecting, displaying, and requesting merge tags.\n */\nexport function useMergeTag(): UseMergeTagReturn {\n const mergeTags = inject(MERGE_TAGS_KEY, []);\n const syntax = inject(MERGE_TAG_SYNTAX_KEY, SYNTAX_PRESETS.liquid);\n const onRequestMergeTag = inject(ON_REQUEST_MERGE_TAG_KEY, null);\n const autocomplete = inject(MERGE_TAG_AUTOCOMPLETE_KEY, true);\n // Picker may be null in headless contexts (tests, non-editor consumers).\n // requestMergeTag() returns null in that case rather than throwing.\n const picker = inject(MERGE_TAG_PICKER_KEY, null);\n\n const isRequesting = ref(false);\n\n function isMergeTagValue(value: string): boolean {\n return checkIsMergeTagValue(value, syntax);\n }\n\n function getMergeTagLabel(value: string): string {\n return resolveMergeTagLabel(value, mergeTags);\n }\n\n /**\n * Request a merge tag from the user. Precedence:\n * 1. `onRequestMergeTag` callback (consumer-owned UX)\n * 2. Built-in picker over `mergeTags.tags`\n * 3. null (nothing configured)\n */\n async function requestMergeTag(): Promise<MergeTag | null> {\n if (onRequestMergeTag) {\n isRequesting.value = true;\n try {\n return await onRequestMergeTag();\n } finally {\n isRequesting.value = false;\n }\n }\n if (mergeTags.length > 0 && picker) {\n isRequesting.value = true;\n try {\n return await picker.open(mergeTags);\n } finally {\n isRequesting.value = false;\n }\n }\n return null;\n }\n\n const canRequestMergeTag = !!onRequestMergeTag || mergeTags.length > 0;\n\n return {\n mergeTags,\n isRequesting,\n canRequestMergeTag,\n autocomplete,\n syntax,\n isMergeTagValue,\n getMergeTagLabel,\n requestMergeTag,\n };\n}\n"],"mappings":";;;;AA8CA,SAAgB,IAAiC;CAC/C,IAAM,IAAY,EAAO,GAAgB,CAAC,CAAC,GACrC,IAAS,EAAO,GAAsB,EAAe,MAAM,GAC3D,IAAoB,EAAO,GAA0B,IAAI,GACzD,IAAe,EAAO,GAA4B,EAAI,GAGtD,IAAS,EAAO,GAAsB,IAAI,GAE1C,IAAe,EAAI,EAAK;CAE9B,SAAS,EAAgB,GAAwB;EAC/C,OAAO,EAAqB,GAAO,CAAM;CAC3C;CAEA,SAAS,EAAiB,GAAuB;EAC/C,OAAO,EAAqB,GAAO,CAAS;CAC9C;CAQA,eAAe,IAA4C;EACzD,IAAI,GAAmB;GACrB,EAAa,QAAQ;GACrB,IAAI;IACF,OAAO,MAAM,EAAkB;GACjC,UAAU;IACR,EAAa,QAAQ;GACvB;EACF;EACA,IAAI,EAAU,SAAS,KAAK,GAAQ;GAClC,EAAa,QAAQ;GACrB,IAAI;IACF,OAAO,MAAM,EAAO,KAAK,CAAS;GACpC,UAAU;IACR,EAAa,QAAQ;GACvB;EACF;EACA,OAAO;CACT;CAIA,OAAO;EACL;EACA;EACA,oBALyB,CAAC,CAAC,KAAqB,EAAU,SAAS;EAMnE;EACA;EACA,iBAAA;EACA,kBAAA;EACA;CACF;AACF"}
@@ -1,11 +1,11 @@
1
1
  import { A as e, C as t, H as n, M as r, V as i, Z as a, b as o, ct as s, g as c, h as l, it as u, j as d, l as f, lt as p, m, n as ee, p as h, r as g, s as _, st as v, v as y, x as b, y as x } from "./chunks/draggable-DCs9qL-b.js";
2
2
  import { r as S } from "./chunks/timeouts-SsLMC4a3.js";
3
- import { I as C, v as w } from "./chunks/src-EKTTBQ0y.js";
4
- import { F as T, R as E, b as te, t as ne, w as D } from "./chunks/useEditorCore-C_nUXiph.js";
3
+ import { R as C, b as w } from "./chunks/src-DsvVSm7Z.js";
4
+ import { F as T, R as E, b as te, t as ne, w as D } from "./chunks/useEditorCore-fyFmWS3D.js";
5
5
  import { I as re, M as ie } from "./chunks/icons-CvYN6zrM.js";
6
6
  import { t as O } from "./chunks/_plugin-vue_export-helper-B3ysoDQm.js";
7
- import { a as ae, c as oe, d as se, f as ce, i as le, l as ue, m as de, n as fe, o as pe, p as k, r as me, s as he, t as ge, u as _e } from "./chunks/styles-C7s-VtJi.js";
8
- import { n as ve, t as ye } from "./chunks/MergeTagModeToggle-D8iKvz7v.js";
7
+ import { a as ae, c as oe, d as se, f as ce, i as le, l as ue, m as de, n as fe, o as pe, p as k, r as me, s as he, t as ge, u as _e } from "./chunks/styles-DEU_sn3k.js";
8
+ import { n as ve, t as ye } from "./chunks/MergeTagModeToggle-ClGdRNpZ.js";
9
9
  //#region src/Editor.vue?vue&type=script&setup=true&lang.ts
10
10
  var be = ["data-tpl-theme"], A = {
11
11
  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 tpl:shadow-[var(--tpl-shadow-md)] tpl:border-b tpl:border-[var(--tpl-border)]",
@@ -30,12 +30,12 @@ var be = ["data-tpl-theme"], A = {
30
30
  provider: b.config.savedBlocks,
31
31
  editor: S,
32
32
  onError: b.config.onError
33
- }) : null, T = o(() => import("./chunks/SavedBlocksPanels-Bb-eDMAh.js")), D = b.config.testEmail ? ce({
33
+ }) : null, T = o(() => import("./chunks/SavedBlocksPanels-WYrSyf-l.js")), D = b.config.testEmail ? ce({
34
34
  provider: b.config.testEmail,
35
35
  getContent: () => S.content.value,
36
36
  renderMjml: F,
37
37
  onError: b.config.onError
38
- }) : null, O = o(() => import("./chunks/TestEmailPanel-Dr7Dkq2P.js")), P = ne({
38
+ }) : null, O = o(() => import("./chunks/TestEmailPanel-CpK5t4E3.js")), P = ne({
39
39
  editor: S,
40
40
  containerEl: C,
41
41
  config: {
@@ -332,7 +332,7 @@ function $(e) {
332
332
  async function Ne(e) {
333
333
  let n = typeof e.container == "string" ? document.querySelector(e.container) : e.container;
334
334
  if (!n) throw Error(`[Templatical] Container element not found: ${e.container}`);
335
- let { default: r } = await import("./chunks/CloudEditor-C0nB1JfD.js"), [i, o] = await Promise.all([G(e.locale ?? "en"), we(e.locale ?? "en")]), s = D(e.fonts);
335
+ let { default: r } = await import("./chunks/CloudEditor-Ddnatfuw.js"), [i, o] = await Promise.all([G(e.locale ?? "en"), we(e.locale ?? "en")]), s = D(e.fonts);
336
336
  $(n);
337
337
  let c = q(n, e.shadowDom ?? !0), l = a(null);
338
338
  return await new Promise((a, u) => {
@@ -1,5 +1,5 @@
1
1
  import { I as e, J as t, K as n, Y as r, q as i, s as a } from "./vue.runtime.esm-bundler-D1diBMsm.js";
2
- import { o, p as s } from "./dist-D5zCZFdU.js";
2
+ import { o, p as s } from "./dist-BvYvG5SQ.js";
3
3
  //#region ../core/dist/cloud/index.js
4
4
  var c = class e {
5
5
  static DEFAULT_BASE_URL = "https://templatical.com";
@@ -300,7 +300,7 @@ function P(e = {}) {
300
300
  styles: C()
301
301
  }, e);
302
302
  }
303
- function F(e, t) {
303
+ function te(e, t) {
304
304
  return Array.from({ length: t }, () => ({
305
305
  id: S(),
306
306
  cells: Array.from({ length: e }, () => ({
@@ -309,16 +309,16 @@ function F(e, t) {
309
309
  }))
310
310
  }));
311
311
  }
312
- function I(e = {}) {
312
+ function F(e = {}) {
313
313
  return x({
314
314
  id: S(),
315
315
  type: "table",
316
- rows: F(3, 3),
316
+ rows: te(3, 3),
317
317
  ...m,
318
318
  styles: C()
319
319
  }, e);
320
320
  }
321
- function L(e = {}) {
321
+ function I(e = {}) {
322
322
  return x({
323
323
  id: S(),
324
324
  type: "countdown",
@@ -326,12 +326,12 @@ function L(e = {}) {
326
326
  styles: C()
327
327
  }, e);
328
328
  }
329
- function te(e) {
329
+ function ne(e) {
330
330
  return e.type === "repeatable" ? e.default ?? [] : e.type === "boolean" ? e.default ?? !1 : e.type === "number" ? e.default ?? 0 : e.default ?? "";
331
331
  }
332
- function ne(e) {
332
+ function re(e) {
333
333
  let t = {};
334
- for (let n of e.fields) t[n.key] = te(n);
334
+ for (let n of e.fields) t[n.key] = ne(n);
335
335
  let n = x(C(), e.defaultStyles);
336
336
  return {
337
337
  id: S(),
@@ -342,7 +342,7 @@ function ne(e) {
342
342
  ...e.dataSource ? { dataSourceFetched: !1 } : {}
343
343
  };
344
344
  }
345
- function re(e, t) {
345
+ function ie(e, t) {
346
346
  switch (e) {
347
347
  case "section": return k(t?.section);
348
348
  case "title": return w(t?.title);
@@ -355,16 +355,16 @@ function re(e, t) {
355
355
  case "spacer": return M(t?.spacer);
356
356
  case "html": return N(t?.html);
357
357
  case "menu": return P(t?.menu);
358
- case "table": return I(t?.table);
359
- case "countdown": return L(t?.countdown);
358
+ case "table": return F(t?.table);
359
+ case "countdown": return I(t?.countdown);
360
360
  default: throw Error(`Unknown block type: ${e}`);
361
361
  }
362
362
  }
363
- function R(e) {
363
+ function L(e) {
364
364
  let t = JSON.parse(JSON.stringify(e));
365
- return t.id = S(), t.type === "section" && (t.children = t.children.map((e) => e.map((e) => R(e)))), t;
365
+ return t.id = S(), t.type === "section" && (t.children = t.children.map((e) => e.map((e) => L(e)))), t;
366
366
  }
367
- function z(e) {
367
+ function ae(e) {
368
368
  let t = /* @__PURE__ */ new WeakSet();
369
369
  return JSON.parse(JSON.stringify(e, (e, n) => {
370
370
  if (typeof n == "object" && n) {
@@ -374,7 +374,59 @@ function z(e) {
374
374
  return n;
375
375
  }));
376
376
  }
377
- var B = {
377
+ var R = /* @__PURE__ */ new Set(["\"", "'"]);
378
+ function z(e, t) {
379
+ let n = null;
380
+ for (let r = t; r < e.length; r++) {
381
+ let t = e[r];
382
+ if (n !== null) {
383
+ t === n && (n = null);
384
+ continue;
385
+ }
386
+ if (R.has(t)) {
387
+ n = t;
388
+ continue;
389
+ }
390
+ if (t === ">") return r;
391
+ }
392
+ return -1;
393
+ }
394
+ function B(e) {
395
+ return e !== " " && e !== " " && e !== "\n" && e !== "\r" && e !== "\f" && e !== "=" && e !== ">" && e !== "/";
396
+ }
397
+ function V(e) {
398
+ return e === " " || e === " " || e === "\n" || e === "\r" || e === "\f";
399
+ }
400
+ function H(e, t) {
401
+ let n = t.toLowerCase(), r = 0;
402
+ for (; r < e.length;) {
403
+ for (; r < e.length && (V(e[r]) || e[r] === "/");) r++;
404
+ if (r >= e.length) break;
405
+ let t = r;
406
+ for (; r < e.length && B(e[r]);) r++;
407
+ let i = e.substring(t, r).toLowerCase();
408
+ if (i === "") {
409
+ r++;
410
+ continue;
411
+ }
412
+ for (; r < e.length && V(e[r]);) r++;
413
+ if (e[r] !== "=") continue;
414
+ for (r++; r < e.length && V(e[r]);) r++;
415
+ let a = e[r];
416
+ if (R.has(a)) {
417
+ let t = r + 1, o = e.indexOf(a, t);
418
+ if (o === -1) return null;
419
+ if (i === n) return e.substring(t, o);
420
+ r = o + 1;
421
+ continue;
422
+ }
423
+ let o = r;
424
+ for (; r < e.length && !V(e[r]) && e[r] !== ">";) r++;
425
+ if (i === n) return e.substring(o, r);
426
+ }
427
+ return null;
428
+ }
429
+ var U = {
378
430
  liquid: {
379
431
  value: /\{\{.+?\}\}/g,
380
432
  logic: /\{%-?\s*(\w+).*?-?%\}/g
@@ -391,115 +443,115 @@ var B = {
391
443
  value: /%%=.+?=%%/g,
392
444
  logic: /%%\[\s*(\w+).*?\]%%/g
393
445
  }
394
- }, V = {
446
+ }, W = {
395
447
  liquid: "{{",
396
448
  handlebars: "{{",
397
449
  mailchimp: "*|",
398
450
  ampscript: "%%="
399
- }, H = {
451
+ }, G = {
400
452
  liquid: "}}",
401
453
  handlebars: "}}",
402
454
  mailchimp: "|*",
403
455
  ampscript: "=%%"
404
456
  };
405
- function U(e) {
406
- for (let t of Object.keys(B)) if (B[t].value.source === e.value.source) return V[t];
457
+ function K(e) {
458
+ for (let t of Object.keys(U)) if (U[t].value.source === e.value.source) return W[t];
407
459
  return null;
408
460
  }
409
- function W(e) {
410
- for (let t of Object.keys(B)) if (B[t].value.source === e.value.source) return H[t];
461
+ function q(e) {
462
+ for (let t of Object.keys(U)) if (U[t].value.source === e.value.source) return G[t];
411
463
  return null;
412
464
  }
413
- function G(e) {
414
- return e ? typeof e == "string" ? B[e] ?? B.liquid : e : B.liquid;
465
+ function oe(e) {
466
+ return e ? typeof e == "string" ? U[e] ?? U.liquid : e : U.liquid;
415
467
  }
416
- function K(e) {
468
+ function J(e) {
417
469
  let t = e.source, n = e.flags.replace("g", "");
418
470
  return RegExp(`^${t}$`, n);
419
471
  }
420
- function q(e, t) {
472
+ function se(e, t) {
421
473
  let n = e?.trim() || "";
422
- return !K(t.logic).test(n) && K(t.value).test(n);
474
+ return !J(t.logic).test(n) && J(t.value).test(n);
423
475
  }
424
- function J(e, t) {
476
+ function Y(e, t) {
425
477
  let n = t.find((t) => t.value === e);
426
478
  return n ? n.label : e;
427
479
  }
428
- function Y(e, t) {
429
- return $(e, "data-merge-tag", (e) => J(e, t));
480
+ function ce(e, t) {
481
+ return $(e, "data-merge-tag", (e) => Y(e, t));
430
482
  }
431
483
  function X(e, t) {
432
484
  return t.find((t) => t.value === e)?.sample;
433
485
  }
434
- function ie(e, t) {
435
- return $(e, "data-merge-tag", (e) => se(X(e, t) ?? J(e, t)), { unwrap: (e) => X(e, t) !== void 0 });
486
+ function Z(e, t) {
487
+ return $(e, "data-merge-tag", (e) => de(X(e, t) ?? Y(e, t)), { unwrap: (e) => X(e, t) !== void 0 });
436
488
  }
437
- function ae(e) {
489
+ function le(e) {
438
490
  return e.some((e) => e.sample !== void 0);
439
491
  }
440
- function oe(e, t) {
492
+ function ue(e, t) {
441
493
  if (!e) return e;
442
494
  let n = e;
443
495
  for (let e of t) e.sample !== void 0 && (n = n.split(e.value).join(e.sample));
444
496
  return n;
445
497
  }
446
- function se(e) {
498
+ function de(e) {
447
499
  return e.replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;").replace(/"/g, "&quot;");
448
500
  }
449
- function ce(e, t) {
501
+ function fe(e, t) {
450
502
  if (!e) return !1;
451
503
  let n = new RegExp(t.value.source, t.value.flags), r = new RegExp(t.logic.source, t.logic.flags);
452
504
  return n.test(e) || r.test(e);
453
505
  }
454
- function Z(e, t) {
455
- return K(t.logic).test(e?.trim() || "");
506
+ function pe(e, t) {
507
+ return J(t.logic).test(e?.trim() || "");
456
508
  }
457
509
  function Q(e, t) {
458
510
  let n = new RegExp(t.logic.source, t.logic.flags.replace("g", "")), r = e.match(n);
459
511
  return r && r[1] ? r[1].toUpperCase() : e;
460
512
  }
461
- function le(e, t) {
513
+ function me(e, t) {
462
514
  return $(e, "data-logic-merge-tag", (e) => Q(e, t));
463
515
  }
464
516
  function $(e, t, n, r) {
465
- let i = RegExp(`(?:^|\\s)${t}="([^"<>]*)"`), a = "", o = 0;
466
- for (; o < e.length;) {
467
- let t = e.indexOf("<span", o);
468
- if (t === -1) {
469
- a += e.substring(o);
517
+ let i = "", a = 0;
518
+ for (; a < e.length;) {
519
+ let o = e.indexOf("<span", a);
520
+ if (o === -1) {
521
+ i += e.substring(a);
470
522
  break;
471
523
  }
472
- let s = e[t + 5];
524
+ let s = e[o + 5];
473
525
  if (s !== ">" && s !== " " && s !== " " && s !== "\n" && s !== "\r" && s !== "/") {
474
- a += e.substring(o, t + 5), o = t + 5;
526
+ i += e.substring(a, o + 5), a = o + 5;
475
527
  continue;
476
528
  }
477
- let c = e.indexOf(">", t + 5);
529
+ let c = z(e, o + 5);
478
530
  if (c === -1) {
479
- a += e.substring(o);
531
+ i += e.substring(a);
480
532
  break;
481
533
  }
482
534
  let l = e.indexOf("</span>", c + 1);
483
535
  if (l === -1) {
484
- a += e.substring(o);
536
+ i += e.substring(a);
485
537
  break;
486
538
  }
487
- let u = e.substring(t + 5, c), d = i.exec(u);
488
- if (!d) {
489
- a += e.substring(o, t + 5), o = t + 5;
539
+ let u = H(e.substring(o + 5, c), t);
540
+ if (u === null) {
541
+ i += e.substring(a, o + 5), a = o + 5;
490
542
  continue;
491
543
  }
492
- let f = d[1], p = n(f);
493
- r?.unwrap?.(f) ? (a += e.substring(o, t), a += p) : (a += e.substring(o, c + 1), a += p, a += "</span>"), o = l + 7;
544
+ let d = n(u);
545
+ r?.unwrap?.(u) ? (i += e.substring(a, o), i += d) : (i += e.substring(a, c + 1), i += d, i += "</span>"), a = l + 7;
494
546
  }
495
- return a;
547
+ return i;
496
548
  }
497
- function ue(e) {
549
+ function he(e) {
498
550
  if (typeof e != "object" || !e) return !1;
499
551
  let t = e;
500
552
  return Array.isArray(t.blocks);
501
553
  }
502
- var de = class extends Error {
554
+ var ge = class extends Error {
503
555
  statusCode;
504
556
  constructor(e, t) {
505
557
  super(e), this.statusCode = t, this.name = "SdkError";
@@ -515,4 +567,4 @@ var de = class extends Error {
515
567
  }
516
568
  };
517
569
  //#endregion
518
- export { U as A, ie as B, w as C, J as D, Q as E, ue as F, le as I, Y as L, n as M, Z as N, X as O, q as P, G as R, I as S, S as T, oe as V, P as _, B as a, j as b, ce as c, L as d, ne as f, E as g, N as h, t as i, ae as j, W as k, re as l, O as m, _ as n, de as o, b as p, e as r, R as s, g as t, D as u, T as v, A as w, M as x, k as y, z };
570
+ export { K as A, Z as B, w as C, Y as D, Q as E, he as F, me as I, ce as L, n as M, pe as N, X as O, se as P, oe as R, F as S, S as T, ue as V, P as _, U as a, j as b, fe as c, I as d, re as f, E as g, N as h, t as i, le as j, q as k, ie as l, O as m, _ as n, ge as o, b as p, e as r, L as s, g as t, D as u, T as v, A as w, M as x, k as y, ae as z };
@@ -1,8 +1,8 @@
1
1
  import { Dt as e, Et as t, O as n, Ot as r, R as i, Y as a, _ as o, c as s, d as c, l, nt as u, s as d, u as f, w as p, z as m } from "./vue.runtime.esm-bundler-D1diBMsm.js";
2
2
  import { a as h, c as g, s as _ } from "./runtime-dom.esm-bundler-CepEmvwF.js";
3
- import { D as v, E as y, N as b, a as x } from "./dist-D5zCZFdU.js";
3
+ import { D as v, E as y, N as b, a as x } from "./dist-BvYvG5SQ.js";
4
4
  import { t as S } from "./useI18n-DoVKdCTH.js";
5
- import { t as C } from "./useMergeTag-C-_WxrgL.js";
5
+ import { t as C } from "./useMergeTag-B9xG9EJ7.js";
6
6
  import { gn as w, m as T, s as E, u as D, v as O } from "./dist-ChYLhoJ4.js";
7
7
  import { i as k, r as A, t as j } from "./MergeTagSuggestion-BJ43ihWR.js";
8
8
  import { n as M, t as N } from "./dist-Cl8J0IES.js";
@@ -1,8 +1,8 @@
1
1
  import { A as e, Dt as t, Et as n, H as r, I as i, K as a, N as o, O as s, Ot as c, R as l, W as u, Y as d, _ as f, c as p, d as m, g as h, h as g, j as _, k as v, l as y, m as b, nt as x, q as S, r as C, s as w, u as T, w as E, x as D, y as O, z as k } from "./vue.runtime.esm-bundler-D1diBMsm.js";
2
2
  import { a as A, c as j, o as M, s as N, t as P } from "./runtime-dom.esm-bundler-CepEmvwF.js";
3
3
  import { t as F } from "./upload-sVqqppuv.js";
4
- import { A as ee, E as I, M as L, N as R, T as z, a as B, c as V, f as te, k as ne, l as re, s as ie } from "./dist-D5zCZFdU.js";
5
- import { B as ae, F as oe, I as H, J as se, K as ce, L as le, N as ue, U as de, V as fe, _ as pe, a as me, b as he, c as ge, f as _e, g as ve, h as ye, i as be, k as xe, l as Se, m as Ce, n as we, o as Te, p as Ee, r as De, s as Oe, u as ke, v as Ae, w as je, y as Me, z as Ne } from "./useEditorCore-r4gWzCBA.js";
4
+ import { A as ee, E as I, M as L, N as R, T as z, a as B, c as V, f as te, k as ne, l as re, s as ie } from "./dist-BvYvG5SQ.js";
5
+ import { B as ae, F as oe, I as H, J as se, K as ce, L as le, N as ue, U as de, V as fe, _ as pe, a as me, b as he, c as ge, f as _e, g as ve, h as ye, i as be, k as xe, l as Se, m as Ce, n as we, o as Te, p as Ee, r as De, s as Oe, u as ke, v as Ae, w as je, y as Me, z as Ne } from "./useEditorCore-CbcmGpwp.js";
6
6
  import { c as Pe, m as Fe } from "./dist-BpKxrUi2.js";
7
7
  import { a as Ie, n as Le } from "./usePopoverPosition-C0dPEF4X.js";
8
8
  import { A as Re, B as ze, G as Be, H as Ve, I as He, M as Ue, O as We, P as Ge, R as Ke, T as qe, U as Je, V as Ye, W as Xe, c as Ze, f as Qe, g as $e, h as et, k as tt, m as nt, n as rt, o as it, p as at, r as ot, s as st, u as ct, v as lt } from "./keys-fwF3qZax.js";
@@ -11,27 +11,27 @@ import { t as W } from "./createLucideIcon-C8WzBYCv.js";
11
11
  import { n as ut, t as dt } from "./scan-line-DwSVj25O.js";
12
12
  import { t as ft } from "./chevron-down-69EiBGoB.js";
13
13
  import { t as pt } from "./circle-alert-cilwzafX.js";
14
- import { i as mt, n as ht, r as gt, t as _t } from "./blockTypeIcons-CfLN4A6t.js";
14
+ import { i as mt, n as ht, r as gt, t as _t } from "./blockTypeIcons-BnCXsB2I.js";
15
15
  import { n as vt, t as yt } from "./refresh-cw-CkOYVzK5.js";
16
16
  import { t as bt } from "./image-up-Ceggh_R3.js";
17
17
  import { t as xt } from "./info-DO5odBcZ.js";
18
18
  import { t as St } from "./list-checks-BSkPKbuI.js";
19
19
  import { t as Ct } from "./loader-circle-bO7o7_HD.js";
20
- import { i as wt, r as Tt } from "./MergeTagModeToggle-hAJgIKhw.js";
20
+ import { i as wt, r as Tt } from "./MergeTagModeToggle-D0t5NHBZ.js";
21
21
  import { t as Et } from "./sparkles-DumaWRW-.js";
22
22
  import { n as Dt, r as Ot, t as kt } from "./text-align-start-Ir8Ah4mT.js";
23
23
  import { t as At } from "./trash-2-CklAFCmO.js";
24
24
  import { t as jt } from "./x-Mby7KlhS.js";
25
25
  import { t as Mt } from "./_plugin-vue_export-helper-B3ysoDQm.js";
26
26
  import { t as Nt } from "./useCloudI18n-DKVm6PCa.js";
27
- import { t as Pt } from "./useMergeTag-C-_WxrgL.js";
27
+ import { t as Pt } from "./useMergeTag-B9xG9EJ7.js";
28
28
  import { t as Ft } from "./useAliveFlag-cvyBxHp7.js";
29
29
  import { n as It, t as Lt } from "./emailFrameWidth-BmFCN2dp.js";
30
30
  import { t as Rt } from "./readableTextColor-f8Kykfnh.js";
31
31
  import { _ as zt, f as G, g as Bt, h as K, i as Vt, l as Ht, m as q, n as Ut, p as J, t as Y, u as Wt } from "./ColorPicker-ClETsjA3.js";
32
32
  import { n as Gt, r as Kt } from "./MergeTagSuggestion-BJ43ihWR.js";
33
33
  import { i as X, n as Z, r as Q, t as qt } from "./NumberWithSuffix-D37ZWiZh.js";
34
- import { t as Jt } from "./TplModal-DDDHcoir.js";
34
+ import { t as Jt } from "./TplModal-Bym-Kf_i.js";
35
35
  var Yt = W("circle", [["circle", {
36
36
  cx: "12",
37
37
  cy: "12",
@@ -1,10 +1,10 @@
1
1
  import { D as e, Dt as t, E as n, Et as r, O as i, Ot as a, R as o, Y as s, _ as c, c as l, d as u, g as d, h as f, l as p, m, nt as h, u as g, y as _, z as v } from "./vue.runtime.esm-bundler-D1diBMsm.js";
2
2
  import { c as y, n as b, o as x, t as ee } from "./runtime-dom.esm-bundler-CepEmvwF.js";
3
3
  import { i as S } from "./upload-sVqqppuv.js";
4
- import { p as C, z as w } from "./dist-D5zCZFdU.js";
5
- import { G as T, T as E, q as te, t as ne, x as re } from "./useEditorCore-r4gWzCBA.js";
6
- import { a as ie, c as ae, d as oe, f as se, h as ce, i as le, l as ue, m as de, n as fe, o as pe, p as D, r as me, s as he, t as ge, u as _e } from "./styles-C_slTGwp.js";
7
- import { n as ve, t as ye } from "./MergeTagModeToggle-hAJgIKhw.js";
4
+ import { p as C, z as w } from "./dist-BvYvG5SQ.js";
5
+ import { G as T, T as E, q as te, t as ne, x as re } from "./useEditorCore-CbcmGpwp.js";
6
+ import { a as ie, c as ae, d as oe, f as se, h as ce, i as le, l as ue, m as de, n as fe, o as pe, p as D, r as me, s as he, t as ge, u as _e } from "./styles-DbP2S8Z1.js";
7
+ import { n as ve, t as ye } from "./MergeTagModeToggle-D0t5NHBZ.js";
8
8
  import { t as be } from "./send-CWsWN8PQ.js";
9
9
  import { t as O } from "./_plugin-vue_export-helper-B3ysoDQm.js";
10
10
  //#region src/Editor.vue?vue&type=script&setup=true&lang.ts
@@ -31,12 +31,12 @@ var xe = ["data-tpl-theme"], k = {
31
31
  provider: b.config.savedBlocks,
32
32
  editor: S,
33
33
  onError: b.config.onError
34
- }) : null, T = d(() => import("./SavedBlocksPanels-DNVdso_W.js")), E = b.config.testEmail ? se({
34
+ }) : null, T = d(() => import("./SavedBlocksPanels-B7pBiZcc.js")), E = b.config.testEmail ? se({
35
35
  provider: b.config.testEmail,
36
36
  getContent: () => S.content.value,
37
37
  renderMjml: P,
38
38
  onError: b.config.onError
39
- }) : null, O = d(() => import("./TestEmailPanel-l6LDmBGM.js")), N = ne({
39
+ }) : null, O = d(() => import("./TestEmailPanel-B-SXSnRg.js")), N = ne({
40
40
  editor: S,
41
41
  containerEl: C,
42
42
  config: {
@@ -333,7 +333,7 @@ function $(e) {
333
333
  async function Ne(e) {
334
334
  let t = typeof e.container == "string" ? document.querySelector(e.container) : e.container;
335
335
  if (!t) throw Error(`[Templatical] Container element not found: ${e.container}`);
336
- let { default: n } = await import("./CloudEditor-BdSQ8hfv.js"), [r, i] = await Promise.all([W(e.locale ?? "en"), Te(e.locale ?? "en")]), a = E(e.fonts);
336
+ let { default: n } = await import("./CloudEditor-DM3RRCVn.js"), [r, i] = await Promise.all([W(e.locale ?? "en"), Te(e.locale ?? "en")]), a = E(e.fonts);
337
337
  $(t);
338
338
  let o = q(t, e.shadowDom ?? !0), c = s(null);
339
339
  return await new Promise((s, l) => {
@@ -1,7 +1,7 @@
1
1
  import { $ as e, A as t, B as n, D as r, Dt as i, E as a, Et as o, H as s, I as c, J as l, K as u, N as d, O as f, Ot as p, R as m, T as h, W as g, Y as _, Z as v, _ as y, c as b, d as x, et as S, g as C, h as w, j as T, k as E, l as D, m as O, nt as k, q as A, r as j, rt as ee, s as M, tt as N, u as P, v as te, w as ne, x as F, y as re, z as ie } from "./vue.runtime.esm-bundler-D1diBMsm.js";
2
2
  import { c as I, o as ae, s as oe } from "./runtime-dom.esm-bundler-CepEmvwF.js";
3
3
  import { t as se } from "./upload-sVqqppuv.js";
4
- import { A as ce, B as le, C as ue, D as de, E as fe, F as pe, I as me, L as he, M as ge, N as _e, O as ve, P as ye, R as be, S as xe, T as Se, V as Ce, _ as we, a as Te, b as Ee, c as De, d as Oe, f as ke, g as Ae, h as je, i as Me, j as Ne, l as Pe, m as Fe, n as Ie, o as Le, p as Re, r as ze, t as Be, u as Ve, v as He, w as Ue, x as We, y as Ge, z as Ke } from "./dist-D5zCZFdU.js";
4
+ import { A as ce, B as le, C as ue, D as de, E as fe, F as pe, I as me, L as he, M as ge, N as _e, O as ve, P as ye, R as be, S as xe, T as Se, V as Ce, _ as we, a as Te, b as Ee, c as De, d as Oe, f as ke, g as Ae, h as je, i as Me, j as Ne, l as Pe, m as Fe, n as Ie, o as Le, p as Re, r as ze, t as Be, u as Ve, v as He, w as Ue, x as We, y as Ge, z as Ke } from "./dist-BvYvG5SQ.js";
5
5
  import { f as qe, g as Je, h as Ye, m as Xe } from "./dist-BpKxrUi2.js";
6
6
  import { a as Ze, c as Qe, d as $e, i as et, l as tt, o as nt, r as rt, t as it, u as at } from "./usePopoverPosition-C0dPEF4X.js";
7
7
  import { A as ot, B as st, C as ct, D as lt, E as ut, F as dt, G as ft, H as pt, I as mt, L as ht, M as gt, N as _t, O as vt, P as yt, S as bt, T as xt, U as St, V as Ct, W as wt, _ as Tt, a as Et, b as Dt, c as Ot, f as kt, g as At, h as jt, j as Mt, k as Nt, m as Pt, n as Ft, o as It, p as Lt, r as Rt, s as zt, u as Bt, v as Vt, w as Ht, x as Ut, y as Wt } from "./keys-fwF3qZax.js";
@@ -14,7 +14,7 @@ import { t as Yt } from "./triangle-alert-BBi4n93g.js";
14
14
  import { t as Xt } from "./LoadingTrack-BexpNuTV.js";
15
15
  import { t as Zt } from "./_plugin-vue_export-helper-B3ysoDQm.js";
16
16
  import "./useCloudI18n-DKVm6PCa.js";
17
- import { t as Qt } from "./useMergeTag-C-_WxrgL.js";
17
+ import { t as Qt } from "./useMergeTag-B9xG9EJ7.js";
18
18
  import { t as $t } from "./useAliveFlag-cvyBxHp7.js";
19
19
  //#region ../core/dist/index.js
20
20
  function en(e) {
@@ -2411,7 +2411,7 @@ var wi = ["innerHTML"], Ti = /* @__PURE__ */ y({
2411
2411
  viewport: {}
2412
2412
  },
2413
2413
  setup(e) {
2414
- let t = e, n = C(() => import("./ParagraphEditor-DBG63S70.js")), { isEditing: r, blockRef: i, toolbarPosition: a, resolvedContent: o, handleDoubleClick: s, handleEditorDone: c } = Ci(() => t.block.content);
2414
+ let t = e, n = C(() => import("./ParagraphEditor-B-CYrQMY.js")), { isEditing: r, blockRef: i, toolbarPosition: a, resolvedContent: o, handleDoubleClick: s, handleEditorDone: c } = Ci(() => t.block.content);
2415
2415
  return (t, l) => (f(), x("div", {
2416
2416
  ref_key: "blockRef",
2417
2417
  ref: i,
@@ -2651,7 +2651,7 @@ var Wi = /* @__PURE__ */ y({
2651
2651
  viewport: {}
2652
2652
  },
2653
2653
  setup(e) {
2654
- let t = e, n = C(() => import("./TitleEditor-imoBUynh.js")), { isEditing: r, blockRef: a, toolbarPosition: o, resolvedContent: s, handleDoubleClick: c, handleEditorDone: l } = Ci(() => t.block.content), u = M(() => {
2654
+ let t = e, n = C(() => import("./TitleEditor-DmoaKooA.js")), { isEditing: r, blockRef: a, toolbarPosition: o, resolvedContent: s, handleDoubleClick: c, handleEditorDone: l } = Ci(() => t.block.content), u = M(() => {
2655
2655
  let e = {
2656
2656
  fontSize: `${ze[t.block.level]}px`,
2657
2657
  textAlign: t.block.textAlign
@@ -1,5 +1,5 @@
1
1
  import { Y as e, x as t } from "./vue.runtime.esm-bundler-D1diBMsm.js";
2
- import { D as n, P as r, a as i } from "./dist-D5zCZFdU.js";
2
+ import { D as n, P as r, a as i } from "./dist-BvYvG5SQ.js";
3
3
  import { A as a, D as o, E as s, N as c, O as l } from "./keys-fwF3qZax.js";
4
4
  //#region src/composables/useMergeTag.ts
5
5
  function u() {
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@templatical/editor",
3
3
  "description": "Vue 3 visual drag-and-drop email editor powered by Templatical",
4
- "version": "0.26.0",
4
+ "version": "0.26.1",
5
5
  "bugs": "https://github.com/templatical/sdk/issues",
6
6
  "devDependencies": {
7
7
  "@lucide/vue": "^1.31.0",
@@ -31,10 +31,10 @@
31
31
  "vitest": "^4.1.10",
32
32
  "vue": "^3.5.41",
33
33
  "vue-draggable-plus": "^0.6.1",
34
- "vue-tsc": "^3.3.9",
35
- "@templatical/core": "0.26.0",
36
- "@templatical/quality": "0.26.0",
37
- "@templatical/types": "0.26.0"
34
+ "vue-tsc": "^3.3.10",
35
+ "@templatical/core": "0.26.1",
36
+ "@templatical/types": "0.26.1",
37
+ "@templatical/quality": "0.26.1"
38
38
  },
39
39
  "exports": {
40
40
  ".": {
@@ -62,9 +62,9 @@
62
62
  "license": "SEE LICENSE IN LICENSE",
63
63
  "module": "./dist/templatical-editor.js",
64
64
  "peerDependencies": {
65
- "@templatical/media-library": "0.26.0",
66
- "@templatical/quality": "0.26.0",
67
- "@templatical/renderer": "0.26.0"
65
+ "@templatical/media-library": "0.26.1",
66
+ "@templatical/renderer": "0.26.1",
67
+ "@templatical/quality": "0.26.1"
68
68
  },
69
69
  "peerDependenciesMeta": {
70
70
  "@templatical/renderer": {