@templatical/editor 0.26.1 → 0.26.3

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-B_fwa6zc.js → AiChatSidebar-CMBz6Wix.js} +1 -1
  2. package/dist/{AiFeatureMenu-BBBKsYD4.js → AiFeatureMenu-Cy-PVrNT.js} +1 -1
  3. package/dist/{BlockPreviewCanvas-zyyq2de0.js → BlockPreviewCanvas-BZKslwGI.js} +1 -1
  4. package/dist/{CloudEditor-DM3RRCVn.js → CloudEditor-CPRkQCRa.js} +8 -8
  5. package/dist/{CollaboratorBar-Coj8Ebwf.js → CollaboratorBar-BGwbg9aN.js} +1 -1
  6. package/dist/{DesignReferenceSidebar-hDXOvGoV.js → DesignReferenceSidebar-Bx96XFmK.js} +1 -1
  7. package/dist/{MergeTagModeToggle-D0t5NHBZ.js → MergeTagModeToggle-P-UguQHc.js} +1 -1
  8. package/dist/{ParagraphEditor-B-CYrQMY.js → ParagraphEditor-6WN5jmXr.js} +4 -3
  9. package/dist/{SaveBlockDialog-CoVPZfUv.js → SaveBlockDialog-21vDlEBS.js} +3 -3
  10. package/dist/{SavedBlocksBrowserModal-DX13xw0O.js → SavedBlocksBrowserModal-GMrajvfV.js} +4 -4
  11. package/dist/{SavedBlocksPanels-B7pBiZcc.js → SavedBlocksPanels-DEPmNhi6.js} +1 -1
  12. package/dist/{SavedBlocksPickBar-ZfqXByph.js → SavedBlocksPickBar-Dk_IaMO9.js} +1 -1
  13. package/dist/{SnapshotHistory-BxABntv5.js → SnapshotHistory-Cb4WW2gf.js} +1 -1
  14. package/dist/{TestEmailModal-Db4qheuy.js → TestEmailModal-BHDKmd6B.js} +5 -5
  15. package/dist/{TestEmailPanel-B-SXSnRg.js → TestEmailPanel-DubocPxf.js} +1 -1
  16. package/dist/{TitleEditor-DmoaKooA.js → TitleEditor-Cy4B3UNe.js} +4 -3
  17. package/dist/{TplModal-Bym-Kf_i.js → TplModal-Dv9zgSWI.js} +1 -1
  18. package/dist/{blockTypeIcons-BnCXsB2I.js → blockTypeIcons-C7wRSaT3.js} +1 -1
  19. package/dist/bundle-stats.json +6 -6
  20. package/dist/cdn/chunks/{AiChatSidebar-CFvS4-EZ.js → AiChatSidebar-CQ8KUmNB.js} +2 -2
  21. package/dist/cdn/chunks/{AiChatSidebar-CFvS4-EZ.js.map → AiChatSidebar-CQ8KUmNB.js.map} +1 -1
  22. package/dist/cdn/chunks/{AiFeatureMenu-a0gBZiJ9.js → AiFeatureMenu-Cb9gaRBn.js} +2 -2
  23. package/dist/cdn/chunks/{AiFeatureMenu-a0gBZiJ9.js.map → AiFeatureMenu-Cb9gaRBn.js.map} +1 -1
  24. package/dist/cdn/chunks/{BlockPreviewCanvas-C27XK2q0.js → BlockPreviewCanvas-msj619wT.js} +2 -2
  25. package/dist/cdn/chunks/{BlockPreviewCanvas-C27XK2q0.js.map → BlockPreviewCanvas-msj619wT.js.map} +1 -1
  26. package/dist/cdn/chunks/{CloudEditor-Ddnatfuw.js → CloudEditor-DbyEsIxu.js} +11 -11
  27. package/dist/cdn/chunks/{CloudEditor-Ddnatfuw.js.map → CloudEditor-DbyEsIxu.js.map} +1 -1
  28. package/dist/cdn/chunks/{CollaboratorBar-C5Xf6Mz9.js → CollaboratorBar-G_sZDZXw.js} +2 -2
  29. package/dist/cdn/chunks/{CollaboratorBar-C5Xf6Mz9.js.map → CollaboratorBar-G_sZDZXw.js.map} +1 -1
  30. package/dist/cdn/chunks/{DesignReferenceSidebar-CZiP00JN.js → DesignReferenceSidebar-B-HFXV0W.js} +2 -2
  31. package/dist/cdn/chunks/{DesignReferenceSidebar-CZiP00JN.js.map → DesignReferenceSidebar-B-HFXV0W.js.map} +1 -1
  32. package/dist/cdn/chunks/{MergeTagModeToggle-ClGdRNpZ.js → MergeTagModeToggle-DQ79SqQc.js} +2 -2
  33. package/dist/cdn/chunks/{MergeTagModeToggle-ClGdRNpZ.js.map → MergeTagModeToggle-DQ79SqQc.js.map} +1 -1
  34. package/dist/cdn/chunks/{ParagraphEditor-BNc146Pp.js → ParagraphEditor-CZ5Z6AgG.js} +5 -4
  35. package/dist/cdn/chunks/{ParagraphEditor-BNc146Pp.js.map → ParagraphEditor-CZ5Z6AgG.js.map} +1 -1
  36. package/dist/cdn/chunks/{SaveBlockDialog-ogieDQp7.js → SaveBlockDialog-CVIVZEuy.js} +4 -4
  37. package/dist/cdn/chunks/{SaveBlockDialog-ogieDQp7.js.map → SaveBlockDialog-CVIVZEuy.js.map} +1 -1
  38. package/dist/cdn/chunks/{SavedBlocksBrowserModal-DSpZcT_T.js → SavedBlocksBrowserModal-BkQXEUE2.js} +4 -4
  39. package/dist/cdn/chunks/{SavedBlocksBrowserModal-DSpZcT_T.js.map → SavedBlocksBrowserModal-BkQXEUE2.js.map} +1 -1
  40. package/dist/cdn/chunks/{SavedBlocksPanels-WYrSyf-l.js → SavedBlocksPanels-CUtYoi5Z.js} +2 -2
  41. package/dist/cdn/chunks/{SavedBlocksPanels-WYrSyf-l.js.map → SavedBlocksPanels-CUtYoi5Z.js.map} +1 -1
  42. package/dist/cdn/chunks/{SavedBlocksPickBar-DGbLBG5P.js → SavedBlocksPickBar-C80qJykl.js} +2 -2
  43. package/dist/cdn/chunks/{SavedBlocksPickBar-DGbLBG5P.js.map → SavedBlocksPickBar-C80qJykl.js.map} +1 -1
  44. package/dist/cdn/chunks/{SnapshotHistory-VyL4tJwn.js → SnapshotHistory-DFinMrg_.js} +2 -2
  45. package/dist/cdn/chunks/{SnapshotHistory-VyL4tJwn.js.map → SnapshotHistory-DFinMrg_.js.map} +1 -1
  46. package/dist/cdn/chunks/{TestEmailModal-DRte11oT.js → TestEmailModal-IxS-QjeH.js} +6 -6
  47. package/dist/cdn/chunks/{TestEmailModal-DRte11oT.js.map → TestEmailModal-IxS-QjeH.js.map} +1 -1
  48. package/dist/cdn/chunks/{TestEmailPanel-CpK5t4E3.js → TestEmailPanel-B8y7JabA.js} +2 -2
  49. package/dist/cdn/chunks/{TestEmailPanel-CpK5t4E3.js.map → TestEmailPanel-B8y7JabA.js.map} +1 -1
  50. package/dist/cdn/chunks/{TitleEditor-EkDchueW.js → TitleEditor-C8WDXf4P.js} +5 -4
  51. package/dist/cdn/chunks/TitleEditor-C8WDXf4P.js.map +1 -0
  52. package/dist/cdn/chunks/{TplModal-BGLstO3F.js → TplModal-Ce0QuHyo.js} +2 -2
  53. package/dist/cdn/chunks/{TplModal-BGLstO3F.js.map → TplModal-Ce0QuHyo.js.map} +1 -1
  54. package/dist/cdn/chunks/{cloud-CNpvDuv7.js → cloud-DcC8bPwn.js} +2 -2
  55. package/dist/cdn/chunks/{cloud-CNpvDuv7.js.map → cloud-DcC8bPwn.js.map} +1 -1
  56. package/dist/cdn/chunks/{extensions-CZAB08kD.js → extensions-qhcN3RMT.js} +41 -23
  57. package/dist/cdn/chunks/extensions-qhcN3RMT.js.map +1 -0
  58. package/dist/cdn/chunks/{src-DsvVSm7Z.js → src-B_QJduQD.js} +162 -145
  59. package/dist/cdn/chunks/{src-DsvVSm7Z.js.map → src-B_QJduQD.js.map} +1 -1
  60. package/dist/cdn/chunks/{src-COnW7gMq.js → src-BwbnXShT.js} +3 -3
  61. package/dist/cdn/chunks/{src-COnW7gMq.js.map → src-BwbnXShT.js.map} +1 -1
  62. package/dist/cdn/chunks/{src-DzH5U9Vm.js → src-Cx70q30o.js} +2 -2
  63. package/dist/cdn/chunks/{src-DzH5U9Vm.js.map → src-Cx70q30o.js.map} +1 -1
  64. package/dist/cdn/chunks/{src-BRRRFqXr.js → src-xkGep9eN.js} +2 -2
  65. package/dist/cdn/chunks/{src-BRRRFqXr.js.map → src-xkGep9eN.js.map} +1 -1
  66. package/dist/cdn/chunks/{styles-DEU_sn3k.js → styles-DLAfU4Uf.js} +6 -6
  67. package/dist/cdn/chunks/{styles-DEU_sn3k.js.map → styles-DLAfU4Uf.js.map} +1 -1
  68. package/dist/cdn/chunks/{useEditorCore-fyFmWS3D.js → useEditorCore-CcgxY-Gy.js} +6 -6
  69. package/dist/cdn/chunks/{useEditorCore-fyFmWS3D.js.map → useEditorCore-CcgxY-Gy.js.map} +1 -1
  70. package/dist/cdn/chunks/{useMergeTag-DjQoCGEz.js → useMergeTag-JmXOtpln.js} +2 -2
  71. package/dist/cdn/chunks/{useMergeTag-DjQoCGEz.js.map → useMergeTag-JmXOtpln.js.map} +1 -1
  72. package/dist/cdn/editor.js +7 -7
  73. package/dist/{cloud-4SuOLNTK.js → cloud-qINCmQbn.js} +1 -1
  74. package/dist/{dist-BvYvG5SQ.js → dist-B1kLn1rs.js} +55 -38
  75. package/dist/{extensions-Dz5jj0wf.js → extensions-Cwg9S-0f.js} +40 -22
  76. package/dist/{styles-DbP2S8Z1.js → styles-Dx__pP9O.js} +6 -6
  77. package/dist/templatical-editor.js +7 -7
  78. package/dist/{useEditorCore-CbcmGpwp.js → useEditorCore-P4UkhcyS.js} +4 -4
  79. package/dist/{useMergeTag-B9xG9EJ7.js → useMergeTag-CYZk7dZD.js} +1 -1
  80. package/package.json +7 -7
  81. package/dist/cdn/chunks/TitleEditor-EkDchueW.js.map +0 -1
  82. package/dist/cdn/chunks/extensions-CZAB08kD.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-DsvVSm7Z.js";
2
+ import { f as n, o as r, r as i } from "./src-B_QJduQD.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-DjQoCGEz.js.map
46
+ //# sourceMappingURL=useMergeTag-JmXOtpln.js.map
@@ -1 +1 @@
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
+ {"version":3,"file":"useMergeTag-JmXOtpln.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 { 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";
3
+ import { R as C, b as w } from "./chunks/src-B_QJduQD.js";
4
+ import { F as T, R as E, b as te, t as ne, w as D } from "./chunks/useEditorCore-CcgxY-Gy.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-DEU_sn3k.js";
8
- import { n as ve, t as ye } from "./chunks/MergeTagModeToggle-ClGdRNpZ.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-DLAfU4Uf.js";
8
+ import { n as ve, t as ye } from "./chunks/MergeTagModeToggle-DQ79SqQc.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-WYrSyf-l.js")), D = b.config.testEmail ? ce({
33
+ }) : null, T = o(() => import("./chunks/SavedBlocksPanels-CUtYoi5Z.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-CpK5t4E3.js")), P = ne({
38
+ }) : null, O = o(() => import("./chunks/TestEmailPanel-B8y7JabA.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-Ddnatfuw.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-DbyEsIxu.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-BvYvG5SQ.js";
2
+ import { o, p as s } from "./dist-B1kLn1rs.js";
3
3
  //#region ../core/dist/cloud/index.js
4
4
  var c = class e {
5
5
  static DEFAULT_BASE_URL = "https://templatical.com";
@@ -326,12 +326,12 @@ function I(e = {}) {
326
326
  styles: C()
327
327
  }, e);
328
328
  }
329
- function ne(e) {
329
+ function L(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 re(e) {
332
+ function ne(e) {
333
333
  let t = {};
334
- for (let n of e.fields) t[n.key] = ne(n);
334
+ for (let n of e.fields) t[n.key] = L(n);
335
335
  let n = x(C(), e.defaultStyles);
336
336
  return {
337
337
  id: S(),
@@ -342,7 +342,7 @@ function re(e) {
342
342
  ...e.dataSource ? { dataSourceFetched: !1 } : {}
343
343
  };
344
344
  }
345
- function ie(e, t) {
345
+ function re(e, t) {
346
346
  switch (e) {
347
347
  case "section": return k(t?.section);
348
348
  case "title": return w(t?.title);
@@ -360,11 +360,11 @@ function ie(e, t) {
360
360
  default: throw Error(`Unknown block type: ${e}`);
361
361
  }
362
362
  }
363
- function L(e) {
363
+ function R(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) => L(e)))), t;
365
+ return t.id = S(), t.type === "section" && (t.children = t.children.map((e) => e.map((e) => R(e)))), t;
366
366
  }
367
- function ae(e) {
367
+ function ie(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,8 +374,8 @@ function ae(e) {
374
374
  return n;
375
375
  }));
376
376
  }
377
- var R = /* @__PURE__ */ new Set(["\"", "'"]);
378
- function z(e, t) {
377
+ var z = /* @__PURE__ */ new Set(["\"", "'"]);
378
+ function ae(e, t) {
379
379
  let n = null;
380
380
  for (let r = t; r < e.length; r++) {
381
381
  let t = e[r];
@@ -383,7 +383,7 @@ function z(e, t) {
383
383
  t === n && (n = null);
384
384
  continue;
385
385
  }
386
- if (R.has(t)) {
386
+ if (z.has(t)) {
387
387
  n = t;
388
388
  continue;
389
389
  }
@@ -397,7 +397,24 @@ function B(e) {
397
397
  function V(e) {
398
398
  return e === " " || e === " " || e === "\n" || e === "\r" || e === "\f";
399
399
  }
400
- function H(e, t) {
400
+ var H = {
401
+ amp: "&",
402
+ lt: "<",
403
+ gt: ">",
404
+ quot: "\"",
405
+ apos: "'",
406
+ nbsp: "\xA0"
407
+ };
408
+ function U(e) {
409
+ return e.includes("&") ? e.replace(/&(#[0-9]+|#[xX][0-9a-fA-F]+|[a-zA-Z][a-zA-Z0-9]*);/g, (e, t) => {
410
+ if (t[0] === "#") {
411
+ let n = t[1] === "x" || t[1] === "X" ? Number.parseInt(t.slice(2), 16) : Number.parseInt(t.slice(1), 10);
412
+ return !Number.isFinite(n) || n < 1 || n > 1114111 || n >= 55296 && n <= 57343 ? e : String.fromCodePoint(n);
413
+ }
414
+ return H[t.toLowerCase()] ?? e;
415
+ }) : e;
416
+ }
417
+ function W(e, t) {
401
418
  let n = t.toLowerCase(), r = 0;
402
419
  for (; r < e.length;) {
403
420
  for (; r < e.length && (V(e[r]) || e[r] === "/");) r++;
@@ -413,20 +430,20 @@ function H(e, t) {
413
430
  if (e[r] !== "=") continue;
414
431
  for (r++; r < e.length && V(e[r]);) r++;
415
432
  let a = e[r];
416
- if (R.has(a)) {
433
+ if (z.has(a)) {
417
434
  let t = r + 1, o = e.indexOf(a, t);
418
435
  if (o === -1) return null;
419
- if (i === n) return e.substring(t, o);
436
+ if (i === n) return U(e.substring(t, o));
420
437
  r = o + 1;
421
438
  continue;
422
439
  }
423
440
  let o = r;
424
441
  for (; r < e.length && !V(e[r]) && e[r] !== ">";) r++;
425
- if (i === n) return e.substring(o, r);
442
+ if (i === n) return U(e.substring(o, r));
426
443
  }
427
444
  return null;
428
445
  }
429
- var U = {
446
+ var G = {
430
447
  liquid: {
431
448
  value: /\{\{.+?\}\}/g,
432
449
  logic: /\{%-?\s*(\w+).*?-?%\}/g
@@ -443,33 +460,33 @@ var U = {
443
460
  value: /%%=.+?=%%/g,
444
461
  logic: /%%\[\s*(\w+).*?\]%%/g
445
462
  }
446
- }, W = {
463
+ }, K = {
447
464
  liquid: "{{",
448
465
  handlebars: "{{",
449
466
  mailchimp: "*|",
450
467
  ampscript: "%%="
451
- }, G = {
468
+ }, q = {
452
469
  liquid: "}}",
453
470
  handlebars: "}}",
454
471
  mailchimp: "|*",
455
472
  ampscript: "=%%"
456
473
  };
457
- function K(e) {
458
- for (let t of Object.keys(U)) if (U[t].value.source === e.value.source) return W[t];
474
+ function oe(e) {
475
+ for (let t of Object.keys(G)) if (G[t].value.source === e.value.source) return K[t];
459
476
  return null;
460
477
  }
461
- function q(e) {
462
- for (let t of Object.keys(U)) if (U[t].value.source === e.value.source) return G[t];
478
+ function se(e) {
479
+ for (let t of Object.keys(G)) if (G[t].value.source === e.value.source) return q[t];
463
480
  return null;
464
481
  }
465
- function oe(e) {
466
- return e ? typeof e == "string" ? U[e] ?? U.liquid : e : U.liquid;
482
+ function ce(e) {
483
+ return e ? typeof e == "string" ? G[e] ?? G.liquid : e : G.liquid;
467
484
  }
468
485
  function J(e) {
469
486
  let t = e.source, n = e.flags.replace("g", "");
470
487
  return RegExp(`^${t}$`, n);
471
488
  }
472
- function se(e, t) {
489
+ function le(e, t) {
473
490
  let n = e?.trim() || "";
474
491
  return !J(t.logic).test(n) && J(t.value).test(n);
475
492
  }
@@ -477,40 +494,40 @@ function Y(e, t) {
477
494
  let n = t.find((t) => t.value === e);
478
495
  return n ? n.label : e;
479
496
  }
480
- function ce(e, t) {
497
+ function ue(e, t) {
481
498
  return $(e, "data-merge-tag", (e) => Y(e, t));
482
499
  }
483
500
  function X(e, t) {
484
501
  return t.find((t) => t.value === e)?.sample;
485
502
  }
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 });
503
+ function de(e, t) {
504
+ return $(e, "data-merge-tag", (e) => me(X(e, t) ?? Y(e, t)), { unwrap: (e) => X(e, t) !== void 0 });
488
505
  }
489
- function le(e) {
506
+ function fe(e) {
490
507
  return e.some((e) => e.sample !== void 0);
491
508
  }
492
- function ue(e, t) {
509
+ function pe(e, t) {
493
510
  if (!e) return e;
494
511
  let n = e;
495
512
  for (let e of t) e.sample !== void 0 && (n = n.split(e.value).join(e.sample));
496
513
  return n;
497
514
  }
498
- function de(e) {
515
+ function me(e) {
499
516
  return e.replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;").replace(/"/g, "&quot;");
500
517
  }
501
- function fe(e, t) {
518
+ function he(e, t) {
502
519
  if (!e) return !1;
503
520
  let n = new RegExp(t.value.source, t.value.flags), r = new RegExp(t.logic.source, t.logic.flags);
504
521
  return n.test(e) || r.test(e);
505
522
  }
506
- function pe(e, t) {
523
+ function Z(e, t) {
507
524
  return J(t.logic).test(e?.trim() || "");
508
525
  }
509
526
  function Q(e, t) {
510
527
  let n = new RegExp(t.logic.source, t.logic.flags.replace("g", "")), r = e.match(n);
511
528
  return r && r[1] ? r[1].toUpperCase() : e;
512
529
  }
513
- function me(e, t) {
530
+ function ge(e, t) {
514
531
  return $(e, "data-logic-merge-tag", (e) => Q(e, t));
515
532
  }
516
533
  function $(e, t, n, r) {
@@ -526,7 +543,7 @@ function $(e, t, n, r) {
526
543
  i += e.substring(a, o + 5), a = o + 5;
527
544
  continue;
528
545
  }
529
- let c = z(e, o + 5);
546
+ let c = ae(e, o + 5);
530
547
  if (c === -1) {
531
548
  i += e.substring(a);
532
549
  break;
@@ -536,7 +553,7 @@ function $(e, t, n, r) {
536
553
  i += e.substring(a);
537
554
  break;
538
555
  }
539
- let u = H(e.substring(o + 5, c), t);
556
+ let u = W(e.substring(o + 5, c), t);
540
557
  if (u === null) {
541
558
  i += e.substring(a, o + 5), a = o + 5;
542
559
  continue;
@@ -546,12 +563,12 @@ function $(e, t, n, r) {
546
563
  }
547
564
  return i;
548
565
  }
549
- function he(e) {
566
+ function _e(e) {
550
567
  if (typeof e != "object" || !e) return !1;
551
568
  let t = e;
552
569
  return Array.isArray(t.blocks);
553
570
  }
554
- var ge = class extends Error {
571
+ var ve = class extends Error {
555
572
  statusCode;
556
573
  constructor(e, t) {
557
574
  super(e), this.statusCode = t, this.name = "SdkError";
@@ -567,4 +584,4 @@ var ge = class extends Error {
567
584
  }
568
585
  };
569
586
  //#endregion
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 };
587
+ export { oe as A, de as B, w as C, Y as D, Q as E, _e as F, ge as I, ue as L, n as M, Z as N, X as O, le as P, ce as R, F as S, S as T, pe as V, P as _, G as a, j as b, he as c, I as d, ne as f, E as g, N as h, t as i, fe as j, se as k, re as l, O as m, _ as n, ve 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, ie 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-BvYvG5SQ.js";
3
+ import { D as v, E as y, N as b, a as x } from "./dist-B1kLn1rs.js";
4
4
  import { t as S } from "./useI18n-DoVKdCTH.js";
5
- import { t as C } from "./useMergeTag-B9xG9EJ7.js";
5
+ import { t as C } from "./useMergeTag-CYZk7dZD.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";
@@ -50,6 +50,20 @@ var P = E.create({
50
50
  };
51
51
  }
52
52
  }), I = E.create({
53
+ name: "lineBoundaryKeys",
54
+ addKeyboardShortcuts() {
55
+ let e = (e) => ({ editor: t }) => {
56
+ let n = t.view;
57
+ if (!n || n.composing) return !1;
58
+ let r = typeof n.root?.getSelection == "function" ? n.root.getSelection() : n.dom?.ownerDocument?.getSelection?.() ?? null;
59
+ return !r || typeof r.modify != "function" || !r.anchorNode || !n.dom.contains(r.anchorNode) ? !1 : (r.modify("move", e, "lineboundary"), !0);
60
+ };
61
+ return {
62
+ End: e("forward"),
63
+ Home: e("backward")
64
+ };
65
+ }
66
+ }), L = E.create({
53
67
  name: "lineHeight",
54
68
  addOptions() {
55
69
  return {
@@ -73,11 +87,11 @@ var P = E.create({
73
87
  unsetLineHeight: () => ({ commands: e }) => this.options.types.every((t) => e.resetAttributes(t, "lineHeight"))
74
88
  };
75
89
  }
76
- }), L = [
90
+ }), R = [
77
91
  "aria-label",
78
92
  "data-tooltip",
79
93
  "onKeydown"
80
- ], R = ["aria-label", "onKeydown"], z = ["aria-label"], B = /* @__PURE__ */ o({
94
+ ], z = ["aria-label", "onKeydown"], B = ["aria-label"], V = /* @__PURE__ */ o({
81
95
  __name: "LogicMergeTagNodeView",
82
96
  props: {
83
97
  node: {},
@@ -133,14 +147,14 @@ var P = E.create({
133
147
  "data-tooltip": o.node.attrs.value,
134
148
  onClick: g(j, ["stop"]),
135
149
  onKeydown: [_(g(j, ["stop"]), ["enter"]), _(g(j, ["prevent", "stop"]), ["space"])]
136
- }, r(E.value), 41, L)) : (n(), c("span", {
150
+ }, r(E.value), 41, R)) : (n(), c("span", {
137
151
  key: 2,
138
152
  role: "button",
139
153
  tabindex: "0",
140
154
  "aria-label": u(w).mergeTag.editValue,
141
155
  onClick: g(j, ["stop"]),
142
156
  onKeydown: [_(g(j, ["stop"]), ["enter"]), _(g(j, ["prevent", "stop"]), ["space"])]
143
- }, r(o.node.attrs.value), 41, R)), T.value ? (n(), c("button", {
157
+ }, r(o.node.attrs.value), 41, z)), T.value ? (n(), c("button", {
144
158
  key: 3,
145
159
  type: "button",
146
160
  "aria-label": u(w).mergeTag.deleteMergeTag,
@@ -165,25 +179,25 @@ var P = E.create({
165
179
  y1: "6",
166
180
  x2: "18",
167
181
  y2: "18"
168
- })], -1)]], 8, z)) : f("", !0)]),
182
+ })], -1)]], 8, B)) : f("", !0)]),
169
183
  _: 1
170
184
  }, 8, ["class", "style"]));
171
185
  }
172
186
  });
173
187
  //#endregion
174
188
  //#region src/extensions/isNodeSelected.ts
175
- function V(e, t) {
189
+ function H(e, t) {
176
190
  let { $from: n, $to: r } = e.state.selection;
177
191
  return n.pos === r.pos ? n.pos > 0 && n.nodeBefore?.type.name === t || n.nodeAfter?.type.name === t : !1;
178
192
  }
179
193
  //#endregion
180
194
  //#region src/extensions/renderVueNodeView.ts
181
- function H(e) {
195
+ function U(e) {
182
196
  return M(e);
183
197
  }
184
198
  //#endregion
185
199
  //#region src/extensions/LogicMergeTagNode.ts
186
- var U = T.create({
200
+ var W = T.create({
187
201
  name: "logicMergeTagNode",
188
202
  group: "inline",
189
203
  inline: !0,
@@ -195,10 +209,12 @@ var U = T.create({
195
209
  return {
196
210
  value: {
197
211
  default: "",
212
+ rendered: !1,
198
213
  parseHTML: (e) => e.getAttribute("data-logic-merge-tag") || ""
199
214
  },
200
215
  keyword: {
201
216
  default: "",
217
+ rendered: !1,
202
218
  parseHTML: (e) => e.getAttribute("data-keyword") || e.textContent || ""
203
219
  }
204
220
  };
@@ -223,12 +239,12 @@ var U = T.create({
223
239
  ];
224
240
  },
225
241
  addNodeView() {
226
- return H(B);
242
+ return U(V);
227
243
  },
228
244
  addKeyboardShortcuts() {
229
245
  return {
230
- Backspace: () => V(this.editor, this.name),
231
- Delete: () => V(this.editor, this.name)
246
+ Backspace: () => H(this.editor, this.name),
247
+ Delete: () => H(this.editor, this.name)
232
248
  };
233
249
  },
234
250
  addInputRules() {
@@ -261,11 +277,11 @@ var U = T.create({
261
277
  }
262
278
  })];
263
279
  }
264
- }), W = [
280
+ }), G = [
265
281
  "aria-label",
266
282
  "data-tooltip",
267
283
  "onKeydown"
268
- ], G = ["aria-label"], K = /* @__PURE__ */ o({
284
+ ], K = ["aria-label"], q = /* @__PURE__ */ o({
269
285
  __name: "MergeTagNodeView",
270
286
  props: {
271
287
  node: {},
@@ -313,7 +329,7 @@ var U = T.create({
313
329
  "data-tooltip": e.node.attrs.value,
314
330
  onClick: g(w, ["stop"]),
315
331
  onKeydown: [_(g(w, ["stop"]), ["enter"]), _(g(w, ["prevent", "stop"]), ["space"])]
316
- }, r(v.value), 41, W)), s("button", {
332
+ }, r(v.value), 41, G)), s("button", {
317
333
  type: "button",
318
334
  "aria-label": u(f).mergeTag.deleteMergeTag,
319
335
  class: "tpl-merge-tag-delete tpl:flex tpl:size-5 tpl:cursor-pointer tpl:items-center tpl:justify-center tpl:rounded-full tpl:border-none tpl:bg-transparent tpl:p-0 tpl:opacity-60 tpl:transition-all hover:tpl:opacity-100 tpl:text-[var(--tpl-primary)]",
@@ -337,11 +353,11 @@ var U = T.create({
337
353
  y1: "6",
338
354
  x2: "18",
339
355
  y2: "18"
340
- })], -1)]], 8, G)]),
356
+ })], -1)]], 8, K)]),
341
357
  _: 1
342
358
  }));
343
359
  }
344
- }), q = T.create({
360
+ }), J = T.create({
345
361
  name: "mergeTagNode",
346
362
  group: "inline",
347
363
  inline: !0,
@@ -356,10 +372,12 @@ var U = T.create({
356
372
  return {
357
373
  label: {
358
374
  default: "",
375
+ rendered: !1,
359
376
  parseHTML: (e) => e.getAttribute("data-label") || e.textContent || ""
360
377
  },
361
378
  value: {
362
379
  default: "",
380
+ rendered: !1,
363
381
  parseHTML: (e) => e.getAttribute("data-merge-tag") || ""
364
382
  }
365
383
  };
@@ -379,7 +397,7 @@ var U = T.create({
379
397
  ];
380
398
  },
381
399
  addNodeView() {
382
- return H(K);
400
+ return U(q);
383
401
  },
384
402
  addCommands() {
385
403
  return { insertMergeTag: (e) => ({ commands: t }) => t.insertContent({
@@ -392,8 +410,8 @@ var U = T.create({
392
410
  },
393
411
  addKeyboardShortcuts() {
394
412
  return {
395
- Backspace: () => V(this.editor, this.name),
396
- Delete: () => V(this.editor, this.name)
413
+ Backspace: () => H(this.editor, this.name),
414
+ Delete: () => H(this.editor, this.name)
397
415
  };
398
416
  },
399
417
  addInputRules() {
@@ -424,4 +442,4 @@ var U = T.create({
424
442
  }
425
443
  });
426
444
  //#endregion
427
- export { P as FontSize, F as LetterSpacing, I as LineHeight, U as LogicMergeTagNode, q as MergeTagNode, j as MergeTagSuggestion, A as filterMergeTags, k as handleSuggestionKeyDown };
445
+ export { P as FontSize, F as LetterSpacing, I as LineBoundaryKeys, L as LineHeight, W as LogicMergeTagNode, J as MergeTagNode, j as MergeTagSuggestion, A as filterMergeTags, k as handleSuggestionKeyDown };
@@ -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-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";
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-B1kLn1rs.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-P4UkhcyS.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-BnCXsB2I.js";
14
+ import { i as mt, n as ht, r as gt, t as _t } from "./blockTypeIcons-C7wRSaT3.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-D0t5NHBZ.js";
20
+ import { i as wt, r as Tt } from "./MergeTagModeToggle-P-UguQHc.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-B9xG9EJ7.js";
27
+ import { t as Pt } from "./useMergeTag-CYZk7dZD.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-Bym-Kf_i.js";
34
+ import { t as Jt } from "./TplModal-Dv9zgSWI.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-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";
4
+ import { p as C, z as w } from "./dist-B1kLn1rs.js";
5
+ import { G as T, T as E, q as te, t as ne, x as re } from "./useEditorCore-P4UkhcyS.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-Dx__pP9O.js";
7
+ import { n as ve, t as ye } from "./MergeTagModeToggle-P-UguQHc.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-B7pBiZcc.js")), E = b.config.testEmail ? se({
34
+ }) : null, T = d(() => import("./SavedBlocksPanels-DEPmNhi6.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-B-SXSnRg.js")), N = ne({
39
+ }) : null, O = d(() => import("./TestEmailPanel-DubocPxf.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-DM3RRCVn.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-CPRkQCRa.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-BvYvG5SQ.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-B1kLn1rs.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-B9xG9EJ7.js";
17
+ import { t as Qt } from "./useMergeTag-CYZk7dZD.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-B-CYrQMY.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-6WN5jmXr.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-DmoaKooA.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-Cy4B3UNe.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-BvYvG5SQ.js";
2
+ import { D as n, P as r, a as i } from "./dist-B1kLn1rs.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() {