@templatical/editor 0.22.0 → 0.24.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (201) hide show
  1. package/dist/{AiChatSidebar-K_AehWc-.js → AiChatSidebar-Nq-jrGaf.js} +2 -2
  2. package/dist/{AiFeatureMenu-CcqjRMFW.js → AiFeatureMenu-tg_zMKMK.js} +3 -3
  3. package/dist/{BlockIssueBadge-Dmj9rVra.js → BlockIssueBadge-Bd94kIiw.js} +2 -2
  4. package/dist/BlockPreviewCanvas-B34aMhHe.js +117 -0
  5. package/dist/{CloudEditor-BVH7D1Ka.js → CloudEditor-DjN_9Yso.js} +285 -284
  6. package/dist/{CollaboratorBar-C_1SF7Xf.js → CollaboratorBar-Bhazzcg-.js} +2 -2
  7. package/dist/{ColorPicker-s9GHXjZs.js → ColorPicker-DXGrcJxJ.js} +5 -5
  8. package/dist/{CommentsSidebar-DvNEdugN.js → CommentsSidebar-ku1kt10u.js} +3 -3
  9. package/dist/{CountdownBlock-J_Q9JRQM.js → CountdownBlock-CN9Lc23W.js} +1 -1
  10. package/dist/{CountdownToolbar-DPRcv3Fu.js → CountdownToolbar-VEsIyKV6.js} +3 -3
  11. package/dist/{DesignReferenceSidebar-DNmK3dxp.js → DesignReferenceSidebar-C4pTMzQE.js} +3 -3
  12. package/dist/{IssuesPanel-CEnEGFtd.js → IssuesPanel-CEfzOpS_.js} +2 -2
  13. package/dist/MergeTagModeToggle-C3V2xGAg.js +180 -0
  14. package/dist/{MergeTagSuggestion-D9eCryMC.js → MergeTagSuggestion-Dn8ww9nV.js} +2 -2
  15. package/dist/{NumberWithSuffix-CCPN_oCh.js → NumberWithSuffix-BGocZkj9.js} +1 -1
  16. package/dist/{ParagraphEditor-MKJYyWN9.js → ParagraphEditor-D-fz0kUb.js} +19 -19
  17. package/dist/{RichTextEditorContent-FbnWsh46.js → RichTextEditorContent-DydrqFts.js} +5 -5
  18. package/dist/{SaveBlockDialog-B_5KBaXW.js → SaveBlockDialog-BDDFbAWF.js} +100 -99
  19. package/dist/{SavedBlocksBrowserModal-DoJBoYPk.js → SavedBlocksBrowserModal-Djik_fJh.js} +6 -6
  20. package/dist/{SavedBlocksPanels-3Af5dMaf.js → SavedBlocksPanels-CxemyPxL.js} +1 -1
  21. package/dist/{SavedBlocksPickBar-C1FTJP-I.js → SavedBlocksPickBar-Dlhipmob.js} +2 -2
  22. package/dist/{SnapshotHistory-DWlQ3Eh0.js → SnapshotHistory-DPbM4ons.js} +4 -4
  23. package/dist/{TemplateScoringPanel-ifGGGWs5.js → TemplateScoringPanel-BFYgweDX.js} +2 -2
  24. package/dist/TestEmailModal-IZfwgya-.js +174 -0
  25. package/dist/TestEmailPanel-QEEx_PkN.js +33 -0
  26. package/dist/{TitleEditor-DzsPxKv4.js → TitleEditor-BB4YlIBF.js} +10 -10
  27. package/dist/{TplModal-CykwWFhF.js → TplModal-DPH4vV8M.js} +3 -3
  28. package/dist/{blockTypeIcons-CpKkI47V.js → blockTypeIcons-Wzd7W_2x.js} +1 -1
  29. package/dist/bundle-stats.json +7 -7
  30. package/dist/{ca-BBgad6y5.js → ca-CO4nq6TX.js} +22 -1
  31. package/dist/cdn/chunks/{AiChatSidebar-A1CuWGY0.js → AiChatSidebar-CN-0DIuA.js} +11 -11
  32. package/dist/cdn/chunks/{AiChatSidebar-A1CuWGY0.js.map → AiChatSidebar-CN-0DIuA.js.map} +1 -1
  33. package/dist/cdn/chunks/{AiFeatureMenu-hWgWQg11.js → AiFeatureMenu-B5pV6Iux.js} +8 -8
  34. package/dist/cdn/chunks/{AiFeatureMenu-hWgWQg11.js.map → AiFeatureMenu-B5pV6Iux.js.map} +1 -1
  35. package/dist/cdn/chunks/{BlockIssueBadge-Da4yR-mh.js → BlockIssueBadge-aanOjeyi.js} +4 -4
  36. package/dist/cdn/chunks/{BlockIssueBadge-Da4yR-mh.js.map → BlockIssueBadge-aanOjeyi.js.map} +1 -1
  37. package/dist/cdn/chunks/BlockPreviewCanvas-Dc4F4HzY.js +119 -0
  38. package/dist/cdn/chunks/BlockPreviewCanvas-Dc4F4HzY.js.map +1 -0
  39. package/dist/cdn/chunks/{CloudEditor-FCS53UcZ.js → CloudEditor-CeKaWWO5.js} +264 -263
  40. package/dist/cdn/chunks/CloudEditor-CeKaWWO5.js.map +1 -0
  41. package/dist/cdn/chunks/{CollaboratorBar-mkJVAkSh.js → CollaboratorBar-CEdKr0A2.js} +4 -4
  42. package/dist/cdn/chunks/{CollaboratorBar-mkJVAkSh.js.map → CollaboratorBar-CEdKr0A2.js.map} +1 -1
  43. package/dist/cdn/chunks/{ColorPicker-DZSzZ5ZP.js → ColorPicker-BckwEfcN.js} +7 -7
  44. package/dist/cdn/chunks/{ColorPicker-DZSzZ5ZP.js.map → ColorPicker-BckwEfcN.js.map} +1 -1
  45. package/dist/cdn/chunks/{CommentsSidebar-DHdRiGPX.js → CommentsSidebar-6PfpJKh-.js} +18 -18
  46. package/dist/cdn/chunks/{CommentsSidebar-DHdRiGPX.js.map → CommentsSidebar-6PfpJKh-.js.map} +1 -1
  47. package/dist/cdn/chunks/{CountdownBlock-Bffpoppw.js → CountdownBlock-CoBmvQKv.js} +2 -2
  48. package/dist/cdn/chunks/{CountdownBlock-Bffpoppw.js.map → CountdownBlock-CoBmvQKv.js.map} +1 -1
  49. package/dist/cdn/chunks/{CountdownToolbar-DAnmIZjq.js → CountdownToolbar-CdV8RTQu.js} +4 -4
  50. package/dist/cdn/chunks/{CountdownToolbar-DAnmIZjq.js.map → CountdownToolbar-CdV8RTQu.js.map} +1 -1
  51. package/dist/cdn/chunks/{DesignReferenceSidebar-Dre99DTH.js → DesignReferenceSidebar-BjlaP69l.js} +90 -90
  52. package/dist/cdn/chunks/{DesignReferenceSidebar-Dre99DTH.js.map → DesignReferenceSidebar-BjlaP69l.js.map} +1 -1
  53. package/dist/cdn/chunks/{IssuesPanel-D80JedOj.js → IssuesPanel-CkkEnhxZ.js} +9 -9
  54. package/dist/cdn/chunks/{IssuesPanel-D80JedOj.js.map → IssuesPanel-CkkEnhxZ.js.map} +1 -1
  55. package/dist/cdn/chunks/MergeTagModeToggle-DmtR300G.js +127 -0
  56. package/dist/cdn/chunks/MergeTagModeToggle-DmtR300G.js.map +1 -0
  57. package/dist/cdn/chunks/{MergeTagSuggestion-BM349_QH.js → MergeTagSuggestion-Cvlkw_PM.js} +2 -2
  58. package/dist/cdn/chunks/{MergeTagSuggestion-BM349_QH.js.map → MergeTagSuggestion-Cvlkw_PM.js.map} +1 -1
  59. package/dist/cdn/chunks/{NumberWithSuffix-CjlVNIEe.js → NumberWithSuffix-BOcMN26z.js} +2 -2
  60. package/dist/cdn/chunks/{NumberWithSuffix-CjlVNIEe.js.map → NumberWithSuffix-BOcMN26z.js.map} +1 -1
  61. package/dist/cdn/chunks/{ParagraphEditor-J-1RLyi7.js → ParagraphEditor-CX1yks4N.js} +35 -35
  62. package/dist/cdn/chunks/{ParagraphEditor-J-1RLyi7.js.map → ParagraphEditor-CX1yks4N.js.map} +1 -1
  63. package/dist/cdn/chunks/{RichTextEditorContent-BbdgJqWM.js → RichTextEditorContent-z9s7qxs3.js} +7 -7
  64. package/dist/cdn/chunks/{RichTextEditorContent-BbdgJqWM.js.map → RichTextEditorContent-z9s7qxs3.js.map} +1 -1
  65. package/dist/cdn/chunks/{SaveBlockDialog-CSeD3gn9.js → SaveBlockDialog-D2CtW4lC.js} +100 -99
  66. package/dist/cdn/chunks/SaveBlockDialog-D2CtW4lC.js.map +1 -0
  67. package/dist/cdn/chunks/{SavedBlocksBrowserModal-B2x5WRPN.js → SavedBlocksBrowserModal-DdUKJzzF.js} +8 -8
  68. package/dist/cdn/chunks/SavedBlocksBrowserModal-DdUKJzzF.js.map +1 -0
  69. package/dist/cdn/chunks/{SavedBlocksPanels-BzMTZxf2.js → SavedBlocksPanels-1kVbqdpc.js} +2 -2
  70. package/dist/cdn/chunks/{SavedBlocksPanels-BzMTZxf2.js.map → SavedBlocksPanels-1kVbqdpc.js.map} +1 -1
  71. package/dist/cdn/chunks/{SavedBlocksPickBar-CduR1Cpb.js → SavedBlocksPickBar--noDJIyN.js} +6 -6
  72. package/dist/cdn/chunks/{SavedBlocksPickBar-CduR1Cpb.js.map → SavedBlocksPickBar--noDJIyN.js.map} +1 -1
  73. package/dist/cdn/chunks/{SnapshotHistory-DO-gzr3i.js → SnapshotHistory-DFuNJRc9.js} +8 -8
  74. package/dist/cdn/chunks/{SnapshotHistory-DO-gzr3i.js.map → SnapshotHistory-DFuNJRc9.js.map} +1 -1
  75. package/dist/cdn/chunks/{TemplateScoringPanel-CTk8WwxU.js → TemplateScoringPanel-DG1dAjQk.js} +52 -52
  76. package/dist/cdn/chunks/{TemplateScoringPanel-CTk8WwxU.js.map → TemplateScoringPanel-DG1dAjQk.js.map} +1 -1
  77. package/dist/cdn/chunks/TestEmailModal-CiPfOn2v.js +174 -0
  78. package/dist/cdn/chunks/TestEmailModal-CiPfOn2v.js.map +1 -0
  79. package/dist/cdn/chunks/TestEmailPanel-saOfnpjz.js +35 -0
  80. package/dist/cdn/chunks/TestEmailPanel-saOfnpjz.js.map +1 -0
  81. package/dist/cdn/chunks/{TitleEditor-J1vgU_J6.js → TitleEditor-08KM_VzZ.js} +18 -18
  82. package/dist/cdn/chunks/{TitleEditor-J1vgU_J6.js.map → TitleEditor-08KM_VzZ.js.map} +1 -1
  83. package/dist/cdn/chunks/{TplModal-BN53d9Se.js → TplModal-Cu4tBBnF.js} +4 -4
  84. package/dist/cdn/chunks/{TplModal-BN53d9Se.js.map → TplModal-Cu4tBBnF.js.map} +1 -1
  85. package/dist/cdn/chunks/blockTypeIcons-DvohkXqi.js +21 -0
  86. package/dist/cdn/chunks/{blockTypeIcons-etMMQoVv.js.map → blockTypeIcons-DvohkXqi.js.map} +1 -1
  87. package/dist/cdn/chunks/{ca-BBgad6y5.js → ca-CO4nq6TX.js} +23 -2
  88. package/dist/cdn/chunks/{ca-BBgad6y5.js.map → ca-CO4nq6TX.js.map} +1 -1
  89. package/dist/cdn/chunks/{cloud-BJlbXGTJ.js → cloud-C2I0P9qj.js} +46 -42
  90. package/dist/cdn/chunks/cloud-C2I0P9qj.js.map +1 -0
  91. package/dist/{de-D7WbpFBR.js → cdn/chunks/de-CUeaFJph.js} +24 -1
  92. package/dist/cdn/chunks/{de-D7WbpFBR.js.map → de-CUeaFJph.js.map} +1 -1
  93. package/dist/{de-Bw6fB5JU.js → cdn/chunks/de-uVoSP1xF.js} +2 -9
  94. package/dist/cdn/chunks/de-uVoSP1xF.js.map +1 -0
  95. package/dist/cdn/chunks/emailFrameWidth-BmFCN2dp.js +8 -0
  96. package/dist/cdn/chunks/emailFrameWidth-BmFCN2dp.js.map +1 -0
  97. package/dist/{en-DAdHJz7h.js → cdn/chunks/en-CjhsJxb-.js} +2 -9
  98. package/dist/cdn/chunks/en-CjhsJxb-.js.map +1 -0
  99. package/dist/{en-BrZ0uGK2.js → cdn/chunks/en-zCYIPAL5.js} +24 -1
  100. package/dist/cdn/chunks/{en-BrZ0uGK2.js.map → en-zCYIPAL5.js.map} +1 -1
  101. package/dist/{es-tLSLysPs.js → cdn/chunks/es-BSiH7YkP.js} +24 -1
  102. package/dist/cdn/chunks/{es-tLSLysPs.js.map → es-BSiH7YkP.js.map} +1 -1
  103. package/dist/cdn/chunks/{extensions-C49c51P1.js → extensions-DBWF_lxx.js} +16 -16
  104. package/dist/cdn/chunks/{extensions-C49c51P1.js.map → extensions-DBWF_lxx.js.map} +1 -1
  105. package/dist/{fr-BMWOPztQ.js → cdn/chunks/fr-DTVJ3det.js} +24 -1
  106. package/dist/cdn/chunks/fr-DTVJ3det.js.map +1 -0
  107. package/dist/cdn/chunks/{icons-CYWw8Xfp.js → icons-Cqxvwgz7.js} +35 -14
  108. package/dist/cdn/chunks/icons-Cqxvwgz7.js.map +1 -0
  109. package/dist/cdn/chunks/keys-B5uoP9P7.js +12 -0
  110. package/dist/cdn/chunks/keys-B5uoP9P7.js.map +1 -0
  111. package/dist/{nl-Dhctu7JL.js → cdn/chunks/nl-BqSquFS3.js} +24 -1
  112. package/dist/cdn/chunks/nl-BqSquFS3.js.map +1 -0
  113. package/dist/cdn/chunks/{pt-BR-BWFokdTU.js → pt-BR-CMljK37h.js} +23 -2
  114. package/dist/cdn/chunks/{pt-BR-BWFokdTU.js.map → pt-BR-CMljK37h.js.map} +1 -1
  115. package/dist/{pt-BR-w2sGzHNX.js → cdn/chunks/pt-BR-CTzHTqJD.js} +2 -9
  116. package/dist/cdn/chunks/pt-BR-CTzHTqJD.js.map +1 -0
  117. package/dist/cdn/chunks/{src-BKI1x1k7.js → src-BCJna-6p.js} +183 -165
  118. package/dist/cdn/chunks/{src-BKI1x1k7.js.map → src-BCJna-6p.js.map} +1 -1
  119. package/dist/cdn/chunks/{src-MA8DWI8O.js → src-C45kfA2t.js} +17 -17
  120. package/dist/cdn/chunks/{src-MA8DWI8O.js.map → src-C45kfA2t.js.map} +1 -1
  121. package/dist/cdn/chunks/{src-ByWL5K1f.js → src-XQmI_Xs1.js} +48 -48
  122. package/dist/cdn/chunks/{src-ByWL5K1f.js.map → src-XQmI_Xs1.js.map} +1 -1
  123. package/dist/cdn/chunks/{src-CM0gCvAS.js → src-YVsPFLNJ.js} +251 -251
  124. package/dist/cdn/chunks/{src-CM0gCvAS.js.map → src-YVsPFLNJ.js.map} +1 -1
  125. package/dist/cdn/chunks/{styles-BkXzQ4-n.js → styles-BohMfIBd.js} +785 -746
  126. package/dist/cdn/chunks/styles-BohMfIBd.js.map +1 -0
  127. package/dist/cdn/chunks/{tiptap-DUTbZTeR.js → tiptap-DRKu__AX.js} +5 -5
  128. package/dist/cdn/chunks/{tiptap-DUTbZTeR.js.map → tiptap-DRKu__AX.js.map} +1 -1
  129. package/dist/cdn/chunks/{useCloudI18n-BjNENqkM.js → useCloudI18n-Bem8DUjH.js} +2 -2
  130. package/dist/cdn/chunks/{useCloudI18n-BjNENqkM.js.map → useCloudI18n-Bem8DUjH.js.map} +1 -1
  131. package/dist/cdn/chunks/{useEditorCore-CzMhD6Gd.js → useEditorCore-B_vwuKdI.js} +434 -414
  132. package/dist/cdn/chunks/useEditorCore-B_vwuKdI.js.map +1 -0
  133. package/dist/cdn/chunks/{useI18n-8Wd7G-cq.js → useI18n-graz19nI.js} +2 -2
  134. package/dist/cdn/chunks/{useI18n-8Wd7G-cq.js.map → useI18n-graz19nI.js.map} +1 -1
  135. package/dist/cdn/chunks/{useMergeTag-C7G31KV-.js → useMergeTag-rTzAFMlr.js} +4 -4
  136. package/dist/cdn/chunks/{useMergeTag-C7G31KV-.js.map → useMergeTag-rTzAFMlr.js.map} +1 -1
  137. package/dist/cdn/chunks/{usePopoverPosition-Bx0QewTv.js → usePopoverPosition-BaFxLP3w.js} +2 -2
  138. package/dist/cdn/chunks/{usePopoverPosition-Bx0QewTv.js.map → usePopoverPosition-BaFxLP3w.js.map} +1 -1
  139. package/dist/cdn/editor.css +1 -1
  140. package/dist/cdn/editor.js +172 -150
  141. package/dist/cdn/editor.js.map +1 -1
  142. package/dist/{cloud-Du7mnkz2.js → cloud-DsUct4Zq.js} +42 -40
  143. package/dist/{cdn/chunks/de-D7WbpFBR.js → de-CUeaFJph.js} +22 -3
  144. package/dist/{cdn/chunks/de-Bw6fB5JU.js → de-uVoSP1xF.js} +0 -11
  145. package/dist/{dist-CL_CfQ3Q.js → dist-9uhI32Q4.js} +2 -2
  146. package/dist/{dist-3DHaYEiT.js → dist-BAkGuPYm.js} +2 -2
  147. package/dist/dist-BIYm-U9x.js +5 -0
  148. package/dist/{dist-3HenmYIg.js → dist-ByJVlKWy.js} +1 -1
  149. package/dist/{dist-DKWoZJAV.js → dist-C5tigvDF.js} +2 -2
  150. package/dist/{dist-bivrM-nS.js → dist-CQiAZlTt.js} +2 -2
  151. package/dist/{dist-Ih7ejWzn.js → dist-C_kAE1sC.js} +2 -2
  152. package/dist/{dist-CclnU_v0.js → dist-CkCVlKj_.js} +2 -2
  153. package/dist/{dist-B_etKYyh.js → dist-DFO896yT.js} +5 -5
  154. package/dist/{dist-BJbqgyPn.js → dist-DPHqs0Yh.js} +105 -87
  155. package/dist/{dist-DOtLGnLr.js → dist-DWu9QWFl.js} +2 -2
  156. package/dist/{dist-BCnJcAQc.js → dist-IGetXrbO.js} +2 -2
  157. package/dist/dist-JXOq1hib.js +5 -0
  158. package/dist/emailFrameWidth-BmFCN2dp.js +6 -0
  159. package/dist/{cdn/chunks/en-DAdHJz7h.js → en-CjhsJxb-.js} +0 -11
  160. package/dist/{cdn/chunks/en-BrZ0uGK2.js → en-zCYIPAL5.js} +22 -3
  161. package/dist/{cdn/chunks/es-tLSLysPs.js → es-BSiH7YkP.js} +22 -3
  162. package/dist/{extensions-3870a_3R.js → extensions-C0DXnYdA.js} +13 -13
  163. package/dist/{cdn/chunks/fr-BMWOPztQ.js → fr-DTVJ3det.js} +22 -3
  164. package/dist/index.d.ts +74 -0
  165. package/dist/keys-BVlG5Ozc.js +10 -0
  166. package/dist/{cdn/chunks/nl-Dhctu7JL.js → nl-BqSquFS3.js} +22 -3
  167. package/dist/{pt-BR-BWFokdTU.js → pt-BR-CMljK37h.js} +22 -1
  168. package/dist/{cdn/chunks/pt-BR-w2sGzHNX.js → pt-BR-CTzHTqJD.js} +0 -11
  169. package/dist/style.css +1 -1
  170. package/dist/{styles-AxBd7CgB.js → styles-BTTD0Je4.js} +941 -935
  171. package/dist/templatical-editor.js +112 -89
  172. package/dist/{useCloudI18n-BmiygEM4.js → useCloudI18n-DGr3b2SX.js} +1 -1
  173. package/dist/{useEditorCore-CuMMIfiS.js → useEditorCore-DOrGex_t.js} +917 -897
  174. package/dist/{useI18n-D2L9Mkik.js → useI18n-BhAejA-x.js} +1 -1
  175. package/dist/{useMergeTag-BTdDq5DC.js → useMergeTag-Ce95YIOO.js} +3 -3
  176. package/dist/{usePopoverPosition-BO2LNy5n.js → usePopoverPosition-vjKJaqJf.js} +1 -1
  177. package/package.json +20 -20
  178. package/dist/SavedBlockPreviewCanvas-DXkGDYph.js +0 -109
  179. package/dist/TestEmailModal-DComAFpR.js +0 -95
  180. package/dist/cdn/chunks/CloudEditor-FCS53UcZ.js.map +0 -1
  181. package/dist/cdn/chunks/SaveBlockDialog-CSeD3gn9.js.map +0 -1
  182. package/dist/cdn/chunks/SavedBlockPreviewCanvas-DgLOKtR_.js +0 -111
  183. package/dist/cdn/chunks/SavedBlockPreviewCanvas-DgLOKtR_.js.map +0 -1
  184. package/dist/cdn/chunks/SavedBlocksBrowserModal-B2x5WRPN.js.map +0 -1
  185. package/dist/cdn/chunks/TestEmailModal-DT37w7i_.js +0 -96
  186. package/dist/cdn/chunks/TestEmailModal-DT37w7i_.js.map +0 -1
  187. package/dist/cdn/chunks/blockTypeIcons-etMMQoVv.js +0 -21
  188. package/dist/cdn/chunks/cloud-BJlbXGTJ.js.map +0 -1
  189. package/dist/cdn/chunks/de-Bw6fB5JU.js.map +0 -1
  190. package/dist/cdn/chunks/en-DAdHJz7h.js.map +0 -1
  191. package/dist/cdn/chunks/fr-BMWOPztQ.js.map +0 -1
  192. package/dist/cdn/chunks/icons-CYWw8Xfp.js.map +0 -1
  193. package/dist/cdn/chunks/keys-D7kUmfpE.js +0 -12
  194. package/dist/cdn/chunks/keys-D7kUmfpE.js.map +0 -1
  195. package/dist/cdn/chunks/nl-Dhctu7JL.js.map +0 -1
  196. package/dist/cdn/chunks/pt-BR-w2sGzHNX.js.map +0 -1
  197. package/dist/cdn/chunks/styles-BkXzQ4-n.js.map +0 -1
  198. package/dist/cdn/chunks/useEditorCore-CzMhD6Gd.js.map +0 -1
  199. package/dist/dist-CcQLJeWV.js +0 -5
  200. package/dist/dist-DerdmERj.js +0 -5
  201. package/dist/keys-CHPcp-Nz.js +0 -10
@@ -1,24 +1,24 @@
1
1
  import { $ as e, A as t, C as n, F as r, G as i, H as a, J as o, K as s, L as c, M as l, N as u, O as d, P as f, T as p, U as m, V as h, X as g, Y as _, Z as v, at as y, b, c as x, ct as S, f as C, g as w, h as T, it as E, k as D, l as O, m as k, nt as A, ot as j, p as M, rt as N, s as P, st as F, t as ee, u as I, v as L, x as R, y as z, z as B } from "./draggable-D840DIZB.js";
2
2
  import "./timeouts-Bmi_yePw.js";
3
- import { A as V, C as te, D as ne, E as re, F as ie, J as ae, M as oe, N as se, O as ce, S as le, T as ue, _ as de, a as fe, b as pe, c as me, d as he, f as ge, g as _e, h as ve, i as ye, j as be, k as xe, l as Se, n as Ce, p as we, q as Te, r as H, s as Ee, t as De, u as Oe, v as ke, w as Ae, x as je, y as Me } from "./src-BKI1x1k7.js";
4
- import { _ as Ne, h as Pe, v as Fe, y as Ie } from "./dist-CiBEt0VR.js";
5
- import { a as U, c as Le, i as Re, r as ze } from "./dist-CxTt8FRE.js";
6
- import { A as Be, B as Ve, C as He, D as Ue, E as We, I as Ge, L as Ke, M as qe, N as Je, O as Ye, R as Xe, S as Ze, T as Qe, _ as $e, a as et, b as tt, d as nt, f as rt, g as it, h as W, i as at, j as ot, k as st, l as ct, m as lt, n as ut, o as dt, p as ft, s as pt, v as mt, w as ht, x as gt, y as _t, z as vt } from "./keys-D7kUmfpE.js";
7
- import { t as G } from "./useI18n-8Wd7G-cq.js";
8
- import { a as yt, i as bt, o as xt, r as K, t as St } from "./usePopoverPosition-Bx0QewTv.js";
9
- import { Ct, Et as wt, Lt as Tt, Rt as Et, V as Dt, Y as Ot, _t as kt, d as At, dt as jt, et as Mt, g as Nt, k as Pt, mt as Ft, o as It, rt as Lt, s as Rt, u as zt, wt as Bt } from "./icons-CYWw8Xfp.js";
10
- import { t as Vt } from "./LoadingTrack-D-CW2tUa.js";
11
- import { t as Ht } from "./_plugin-vue_export-helper-B3ysoDQm.js";
12
- import "./useCloudI18n-BjNENqkM.js";
13
- import { t as q } from "./useMergeTag-C7G31KV-.js";
14
- import { t as Ut } from "./useAliveFlag-aanU8uqB.js";
3
+ import { A as te, C as ne, D as re, E as ie, F as ae, I as oe, L as se, M as ce, N as le, O as ue, P as V, Q as de, S as fe, T as pe, Z as me, _ as he, a as ge, b as _e, c as ve, d as ye, f as be, g as xe, h as Se, i as Ce, j as we, k as Te, l as Ee, m as De, n as Oe, o as ke, p as Ae, r as je, t as Me, u as Ne, w as Pe, x as Fe, y as Ie, z as Le } from "./src-BCJna-6p.js";
4
+ import { _ as Re, h as ze, v as Be, y as Ve } from "./dist-CiBEt0VR.js";
5
+ import { a as He, c as Ue, i as We, r as Ge } from "./dist-CxTt8FRE.js";
6
+ import { A as Ke, B as qe, C as Je, D as Ye, E as Xe, H as Ze, L as Qe, M as $e, N as et, O as tt, P as nt, R as rt, S as it, T as H, V as U, _ as at, a as ot, b as st, d as ct, f as lt, g as ut, h as W, i as dt, j as ft, k as pt, l as mt, m as ht, n as gt, o as _t, p as vt, s as yt, v as bt, w as xt, x as St, y as Ct, z as wt } from "./keys-B5uoP9P7.js";
7
+ import { t as G } from "./useI18n-graz19nI.js";
8
+ import { a as Tt, i as Et, o as Dt, r as K, t as Ot } from "./usePopoverPosition-BaFxLP3w.js";
9
+ import { A as kt, Dt as At, H as jt, Rt as Mt, Tt as Nt, X as Pt, _ as Ft, d as It, ft as Lt, ht as Rt, it as zt, o as Bt, s as Vt, tt as Ht, u as Ut, vt as Wt, wt as Gt, zt as Kt } from "./icons-Cqxvwgz7.js";
10
+ import { t as qt } from "./LoadingTrack-D-CW2tUa.js";
11
+ import { t as Jt } from "./_plugin-vue_export-helper-B3ysoDQm.js";
12
+ import "./useCloudI18n-Bem8DUjH.js";
13
+ import { t as q } from "./useMergeTag-rTzAFMlr.js";
14
+ import { t as Yt } from "./useAliveFlag-aanU8uqB.js";
15
15
  //#region ../core/src/editor.ts
16
- function Wt(e) {
16
+ function Xt(e) {
17
17
  return e === "1" ? 1 : e === "3" ? 3 : 2;
18
18
  }
19
- function Gt(e) {
19
+ function Zt(e) {
20
20
  let t = _({
21
- content: e.content ?? be(e.defaultFontFamily, e.templateDefaults),
21
+ content: e.content ?? ae(e.defaultFontFamily, e.templateDefaults),
22
22
  selectedBlockId: null,
23
23
  viewport: "desktop",
24
24
  darkMode: !1,
@@ -107,7 +107,7 @@ function Gt(e) {
107
107
  if (s(n)) return;
108
108
  let o = i(t.content.blocks, n);
109
109
  if (o && o.type === "section") {
110
- if (r < 0 || r >= Wt(o.columns)) return;
110
+ if (r < 0 || r >= Xt(o.columns)) return;
111
111
  o.children[r] = o.children[r] || [];
112
112
  let t = o.children[r];
113
113
  a !== void 0 && a < t.length ? t.splice(a, 0, e) : t.push(e);
@@ -140,7 +140,7 @@ function Gt(e) {
140
140
  let u;
141
141
  if (r) {
142
142
  let e = i(t.content.blocks, r);
143
- if (!e || e.type !== "section" || a < 0 || a >= Wt(e.columns)) return;
143
+ if (!e || e.type !== "section" || a < 0 || a >= Xt(e.columns)) return;
144
144
  e.children[a] = e.children[a] || [], u = e.children[a];
145
145
  } else u = t.content.blocks;
146
146
  let [d] = c.blocks.splice(l, 1);
@@ -171,11 +171,11 @@ function Gt(e) {
171
171
  }
172
172
  //#endregion
173
173
  //#region ../core/src/history.ts
174
- var Kt = 50, qt = 300, Jt = 1500;
175
- function Yt(e) {
176
- let { content: t, setContent: n, isRemoteOperation: r, maxSize: i = Kt } = e, a = v([]), o = v([]), s = v(!1), c = null, l = null, u = m(() => a.value.length > 0), d = m(() => o.value.length > 0);
174
+ var Qt = 50, $t = 300, en = 1500;
175
+ function tn(e) {
176
+ let { content: t, setContent: n, isRemoteOperation: r, maxSize: i = Qt } = e, a = v([]), o = v([]), s = v(!1), c = null, l = null, u = m(() => a.value.length > 0), d = m(() => o.value.length > 0);
177
177
  function f() {
178
- return we(t.value);
178
+ return he(t.value);
179
179
  }
180
180
  function p(e) {
181
181
  a.value.push(e), a.value.length > i && a.value.splice(0, a.value.length - i);
@@ -191,21 +191,21 @@ function Yt(e) {
191
191
  if (l && l.blockId === e) {
192
192
  clearTimeout(l.timeoutId), l.timeoutId = setTimeout(() => {
193
193
  l = null;
194
- }, qt);
194
+ }, $t);
195
195
  return;
196
196
  }
197
197
  h(), p(f()), o.value = [], l = {
198
198
  blockId: e,
199
199
  timeoutId: setTimeout(() => {
200
200
  l = null;
201
- }, qt)
201
+ }, $t)
202
202
  };
203
203
  }
204
204
  }
205
205
  function y() {
206
206
  s.value = !0, c && clearTimeout(c), c = setTimeout(() => {
207
207
  s.value = !1, c = null;
208
- }, Jt);
208
+ }, en);
209
209
  }
210
210
  function b() {
211
211
  if (a.value.length === 0) return;
@@ -239,7 +239,7 @@ function Yt(e) {
239
239
  }
240
240
  //#endregion
241
241
  //#region ../core/src/block-actions.ts
242
- function Xt(e) {
242
+ function nn(e) {
243
243
  e.type === "table" ? e.rows = e.rows.map((e) => ({
244
244
  ...e,
245
245
  id: V(),
@@ -255,17 +255,17 @@ function Xt(e) {
255
255
  id: V()
256
256
  })));
257
257
  }
258
- function Zt(e) {
258
+ function rn(e) {
259
259
  let { addBlock: t, removeBlock: n, updateBlock: r, selectBlock: i, findBlockLocation: a } = e;
260
260
  function o(n, r, a) {
261
- let o = ve(n, e.blockDefaults);
261
+ let o = Ie(n, e.blockDefaults);
262
262
  return t(o, r, a), i(o.id), o;
263
263
  }
264
264
  function s(e, n, r) {
265
265
  let o = JSON.parse(JSON.stringify(e));
266
- if (o.id = V(), Xt(o), o.type === "section" && (o.children = o.children.map((e) => e.map((e) => {
266
+ if (o.id = V(), nn(o), o.type === "section" && (o.children = o.children.map((e) => e.map((e) => {
267
267
  let t = JSON.parse(JSON.stringify(e));
268
- return t.id = V(), Xt(t), t;
268
+ return t.id = V(), nn(t), t;
269
269
  }))), n !== void 0 || r !== void 0) t(o, n, r);
270
270
  else {
271
271
  let i = a?.(e.id) ?? null;
@@ -288,7 +288,7 @@ function Zt(e) {
288
288
  }
289
289
  //#endregion
290
290
  //#region ../core/src/auto-save.ts
291
- function Qt(e) {
291
+ function an(e) {
292
292
  let { content: t, isDirty: n, onChange: r, debounce: i = 1e3, enabled: a = !0 } = e, o = null, s = !1;
293
293
  function c() {
294
294
  return typeof a == "function" ? a() : a;
@@ -326,7 +326,7 @@ function Qt(e) {
326
326
  }
327
327
  //#endregion
328
328
  //#region ../core/src/condition-preview.ts
329
- function $t(e) {
329
+ function on(e) {
330
330
  let t = _(/* @__PURE__ */ new Set()), n = m(() => t.size > 0);
331
331
  function r(e) {
332
332
  return t.has(e);
@@ -346,7 +346,7 @@ function $t(e) {
346
346
  }
347
347
  //#endregion
348
348
  //#region ../core/src/data-source-fetch.ts
349
- function en(e) {
349
+ function sn(e) {
350
350
  let t = v(!1), n = v(!1), r = m(() => !!e.definition.value?.dataSource), i = m(() => r.value && !e.block.value.dataSourceFetched);
351
351
  async function a() {
352
352
  let r = e.definition.value;
@@ -378,7 +378,7 @@ function en(e) {
378
378
  }
379
379
  //#endregion
380
380
  //#region ../core/src/history-interceptor.ts
381
- function tn(e, t) {
381
+ function cn(e, t) {
382
382
  let n = e.addBlock, r = e.removeBlock, i = e.moveBlock, a = e.updateBlock, o = e.updateSettings;
383
383
  e.addBlock = (r, i, a, o) => {
384
384
  i && e.isBlockLocked(i) || (t.record(), n(r, i, a, o));
@@ -394,7 +394,7 @@ function tn(e, t) {
394
394
  }
395
395
  //#endregion
396
396
  //#region ../core/src/saved-blocks.ts
397
- function nn(e) {
397
+ function ln(e) {
398
398
  let { provider: t } = e, n = v([]), r = v(!1), i = C(() => {
399
399
  let e = /* @__PURE__ */ new Set();
400
400
  for (let t of n.value) {
@@ -410,7 +410,7 @@ function nn(e) {
410
410
  return s.value && e.canDelete !== !1;
411
411
  }
412
412
  function u(e, t) {
413
- throw new De(`[Templatical] Saved blocks: ${e} is ${t}. Check the capability before calling — the editor's own UI hides the action.`);
413
+ throw new Me(`[Templatical] Saved blocks: ${e} is ${t}. Check the capability before calling — the editor's own UI hides the action.`);
414
414
  }
415
415
  async function d(i) {
416
416
  r.value = !0;
@@ -479,9 +479,9 @@ function nn(e) {
479
479
  }
480
480
  //#endregion
481
481
  //#region ../core/src/saved-blocks-local.ts
482
- var rn = "templatical:saved-blocks";
483
- function an(e = {}) {
484
- let t = e.key ?? rn;
482
+ var un = "templatical:saved-blocks";
483
+ function dn(e = {}) {
484
+ let t = e.key ?? un;
485
485
  function n() {
486
486
  if (typeof localStorage > "u") throw Error("[Templatical] createLocalStorageSavedBlocksProvider requires a browser environment with localStorage. Supply your own SavedBlocksProvider for server-side or non-browser use.");
487
487
  return localStorage;
@@ -534,9 +534,9 @@ function an(e = {}) {
534
534
  }
535
535
  //#endregion
536
536
  //#region src/utils/activeEditorTracker.ts
537
- var J = /* @__PURE__ */ new Set(), Y = 0, on = 0;
538
- function sn() {
539
- let e = ++on;
537
+ var J = /* @__PURE__ */ new Set(), Y = 0, fn = 0;
538
+ function pn() {
539
+ let e = ++fn;
540
540
  return J.add(e), Y === 0 && (Y = e), {
541
541
  id: e,
542
542
  isActive: () => J.size <= 1 || Y === e,
@@ -553,7 +553,7 @@ function sn() {
553
553
  }
554
554
  //#endregion
555
555
  //#region src/composables/useImageUrlResolver.ts
556
- function cn(e) {
556
+ function mn(e) {
557
557
  let t = _(/* @__PURE__ */ new Map()), n = /* @__PURE__ */ new Set();
558
558
  function r(e) {
559
559
  return t.get(e);
@@ -587,7 +587,7 @@ function cn(e) {
587
587
  };
588
588
  }
589
589
  function X(e) {
590
- let t = p(tt, null), n = C(e);
590
+ let t = p(st, null), n = C(e);
591
591
  if (!t) return n;
592
592
  let r;
593
593
  function a() {
@@ -616,7 +616,7 @@ function X(e) {
616
616
  }
617
617
  //#endregion
618
618
  //#region src/composables/useMergeTagPicker.ts
619
- function ln() {
619
+ function hn() {
620
620
  let e = v(!1), t = v([]), n = null;
621
621
  function r(r) {
622
622
  if (n) {
@@ -646,7 +646,7 @@ function ln() {
646
646
  }
647
647
  //#endregion
648
648
  //#region src/composables/useLogicTagPicker.ts
649
- function un() {
649
+ function gn() {
650
650
  let e = v(!1), t = v([]), n = v([]), r = null;
651
651
  function a(i, a) {
652
652
  if (r) {
@@ -677,17 +677,17 @@ function un() {
677
677
  }
678
678
  //#endregion
679
679
  //#region src/composables/useTemplateLint.ts
680
- function dn(e) {
680
+ function _n(e) {
681
681
  return e ? e.disabled === !0 || e.accessibility === !1 && e.structure === !1 && e.links === !1 : !1;
682
682
  }
683
- function fn(t) {
684
- let n = v([]), r = v(!1), i = v(!1), a = e(null), o = dn(t.options), s = null, c = !1;
683
+ function vn(t) {
684
+ let n = v([]), r = v(!1), i = v(!1), a = e(null), o = _n(t.options), s = null, c = !1;
685
685
  o || l();
686
686
  async function l() {
687
687
  try {
688
- let e = await import("./src-CM0gCvAS.js");
688
+ let e = await import("./src-YVsPFLNJ.js");
689
689
  if (c) return;
690
- a.value = { lintTemplate: e.lintTemplate }, r.value = !0, u(), s = Ie(t.content, u, {
690
+ a.value = { lintTemplate: e.lintTemplate }, r.value = !0, u(), s = Ve(t.content, u, {
691
691
  debounce: t.debounce ?? 500,
692
692
  deep: !0
693
693
  });
@@ -722,17 +722,17 @@ function fn(t) {
722
722
  }
723
723
  //#endregion
724
724
  //#region src/utils/blockTypeLabels.ts
725
- function pn(e, t) {
725
+ function yn(e, t) {
726
726
  return t.blocks[e] ?? e;
727
727
  }
728
- function mn(e, t, n = []) {
729
- if (e.type !== "custom") return pn(e.type, t);
728
+ function bn(e, t, n = []) {
729
+ if (e.type !== "custom") return yn(e.type, t);
730
730
  let { customType: r } = e;
731
731
  return n.find((e) => e.type === r)?.name ?? r;
732
732
  }
733
733
  //#endregion
734
734
  //#region src/composables/useKeyboardReorder.ts
735
- function hn(e, t, n = []) {
735
+ function xn(e, t, n = []) {
736
736
  let r = v(null), i = v(""), a = null;
737
737
  function o(t) {
738
738
  let n = e.content.value.blocks, r = n.findIndex((e) => e.id === t);
@@ -759,7 +759,7 @@ function hn(e, t, n = []) {
759
759
  let i = o(r);
760
760
  if (!i) return "";
761
761
  let a = (i.sectionId ? c(i.sectionId, i.columnIndex ?? 0) : e.content.value.blocks)?.[i.index];
762
- return a ? mn(a, t.t, n) : "";
762
+ return a ? bn(a, t.t, n) : "";
763
763
  }
764
764
  function c(t, n) {
765
765
  return e.content.value.blocks.find((e) => e.id === t && e.type === "section")?.children[n] ?? null;
@@ -828,13 +828,13 @@ function hn(e, t, n = []) {
828
828
  }
829
829
  //#endregion
830
830
  //#region src/composables/useUiTheme.ts
831
- function gn(e) {
832
- let t = Le("(prefers-color-scheme: dark)");
831
+ function Sn(e) {
832
+ let t = Ue("(prefers-color-scheme: dark)");
833
833
  return { resolvedTheme: C(() => e.value === "auto" ? t.value ? "dark" : "light" : e.value) };
834
834
  }
835
835
  //#endregion
836
836
  //#region src/composables/useThemeStyles.ts
837
- var _n = {
837
+ var Cn = {
838
838
  bg: "--tpl-bg",
839
839
  bgElevated: "--tpl-bg-elevated",
840
840
  bgHover: "--tpl-bg-hover",
@@ -858,10 +858,10 @@ var _n = {
858
858
  dangerLight: "--tpl-danger-light",
859
859
  canvasBg: "--tpl-canvas-bg"
860
860
  };
861
- function vn({ themeOverrides: e, resolvedTheme: t, extraStyles: n }) {
861
+ function wn({ themeOverrides: e, resolvedTheme: t, extraStyles: n }) {
862
862
  return { themeStyles: C(() => {
863
863
  let r = {}, i = e.value, a = t.value === "dark" ? i.dark : i;
864
- if (a) for (let [e, t] of Object.entries(_n)) {
864
+ if (a) for (let [e, t] of Object.entries(Cn)) {
865
865
  let n = a[e];
866
866
  n && (r[t] = n);
867
867
  }
@@ -871,7 +871,7 @@ function vn({ themeOverrides: e, resolvedTheme: t, extraStyles: n }) {
871
871
  //#endregion
872
872
  //#region src/utils/logger.ts
873
873
  var Z = "[Templatical]";
874
- function yn() {
874
+ function Tn() {
875
875
  return typeof process < "u" && !0;
876
876
  }
877
877
  var Q = {
@@ -882,15 +882,15 @@ var Q = {
882
882
  console.error(Z, ...e);
883
883
  },
884
884
  debug(...e) {
885
- yn() || console.debug(Z, ...e);
885
+ Tn() || console.debug(Z, ...e);
886
886
  },
887
887
  info(...e) {
888
- yn() || console.info(Z, ...e);
888
+ Tn() || console.info(Z, ...e);
889
889
  }
890
890
  };
891
891
  //#endregion
892
892
  //#region src/composables/useBlockRegistry.ts
893
- function bn() {
893
+ function En() {
894
894
  let t = e(/* @__PURE__ */ new Map());
895
895
  function n(e, n) {
896
896
  t.value.set(e, n), N(t);
@@ -899,7 +899,7 @@ function bn() {
899
899
  let r = `custom:${e.type}`;
900
900
  t.value.set(r, {
901
901
  component: n,
902
- createBlock: () => ke(e),
902
+ createBlock: () => fe(e),
903
903
  definition: e
904
904
  }), N(t);
905
905
  }
@@ -948,9 +948,9 @@ function bn() {
948
948
  }
949
949
  //#endregion
950
950
  //#region src/composables/useCustomBlockStylesheets.ts
951
- function xn(e, t) {
951
+ function Dn(e, t) {
952
952
  return C(() => {
953
- let n = Sn(e.value.blocks);
953
+ let n = On(e.value.blocks);
954
954
  if (n.size === 0) return [];
955
955
  let r = /* @__PURE__ */ new Set(), i = [];
956
956
  for (let e of n) {
@@ -962,29 +962,29 @@ function xn(e, t) {
962
962
  return i;
963
963
  });
964
964
  }
965
- function Sn(e) {
965
+ function On(e) {
966
966
  let t = /* @__PURE__ */ new Set();
967
- return Cn(e, t), t;
967
+ return kn(e, t), t;
968
968
  }
969
- function Cn(e, t) {
969
+ function kn(e, t) {
970
970
  for (let n of e) {
971
- if (ie(n)) {
971
+ if (Le(n)) {
972
972
  t.add(n.customType);
973
973
  continue;
974
974
  }
975
975
  if (n.type === "section") {
976
976
  let e = n.children;
977
977
  if (!e) continue;
978
- for (let n of e) Cn(n, t);
978
+ for (let n of e) kn(n, t);
979
979
  }
980
980
  }
981
981
  }
982
982
  //#endregion
983
983
  //#region src/utils/registerBuiltInBlocks.ts
984
- var wn = [
984
+ var An = [
985
985
  {
986
986
  type: "section",
987
- createBlock: Ae
987
+ createBlock: ue
988
988
  },
989
989
  {
990
990
  type: "title",
@@ -992,11 +992,11 @@ var wn = [
992
992
  },
993
993
  {
994
994
  type: "paragraph",
995
- createBlock: te
995
+ createBlock: re
996
996
  },
997
997
  {
998
998
  type: "image",
999
- createBlock: je
999
+ createBlock: pe
1000
1000
  },
1001
1001
  {
1002
1002
  type: "button",
@@ -1004,39 +1004,39 @@ var wn = [
1004
1004
  },
1005
1005
  {
1006
1006
  type: "divider",
1007
- createBlock: Me
1007
+ createBlock: ne
1008
1008
  },
1009
1009
  {
1010
1010
  type: "video",
1011
- createBlock: xe
1011
+ createBlock: le
1012
1012
  },
1013
1013
  {
1014
1014
  type: "social",
1015
- createBlock: ue
1015
+ createBlock: Te
1016
1016
  },
1017
1017
  {
1018
1018
  type: "menu",
1019
- createBlock: le
1019
+ createBlock: ie
1020
1020
  },
1021
1021
  {
1022
1022
  type: "table",
1023
- createBlock: ne
1023
+ createBlock: we
1024
1024
  },
1025
1025
  {
1026
1026
  type: "spacer",
1027
- createBlock: re
1027
+ createBlock: te
1028
1028
  },
1029
1029
  {
1030
1030
  type: "html",
1031
- createBlock: pe
1031
+ createBlock: Pe
1032
1032
  },
1033
1033
  {
1034
1034
  type: "countdown",
1035
- createBlock: de
1035
+ createBlock: Fe
1036
1036
  }
1037
1037
  ];
1038
- function Tn(e, t) {
1039
- for (let n of wn) {
1038
+ function jn(e, t) {
1039
+ for (let n of An) {
1040
1040
  let r = t[n.type];
1041
1041
  r && e.registerBuiltIn(n.type, {
1042
1042
  component: r,
@@ -1046,23 +1046,23 @@ function Tn(e, t) {
1046
1046
  }
1047
1047
  //#endregion
1048
1048
  //#region src/utils/resolveHtmlBlockPreview.ts
1049
- function En(e) {
1049
+ function Mn(e) {
1050
1050
  return typeof e == "boolean" ? e : e?.enabled ?? !1;
1051
1051
  }
1052
1052
  //#endregion
1053
1053
  //#region src/utils/collectOffPaletteDefaults.ts
1054
- function Dn(e) {
1054
+ function Nn(e) {
1055
1055
  return typeof e == "object" && !!e && !Array.isArray(e);
1056
1056
  }
1057
- function On(e, t, n) {
1057
+ function Pn(e, t, n) {
1058
1058
  let r = new Set(e.map((e) => K(e))), i = [], a = (e, t) => {
1059
- for (let [n, o] of Object.entries(e)) typeof o == "string" ? o !== "" && /color$/i.test(n) && !r.has(K(o)) && i.push(`${t}.${n}: ${o}`) : Dn(o) && a(o, `${t}.${n}`);
1059
+ for (let [n, o] of Object.entries(e)) typeof o == "string" ? o !== "" && /color$/i.test(n) && !r.has(K(o)) && i.push(`${t}.${n}: ${o}`) : Nn(o) && a(o, `${t}.${n}`);
1060
1060
  }, o = t;
1061
1061
  for (let [e, t] of Object.entries(oe)) {
1062
1062
  let n = o?.[e];
1063
1063
  a({
1064
1064
  ...t,
1065
- ...Dn(n) ? n : {}
1065
+ ...Nn(n) ? n : {}
1066
1066
  }, e);
1067
1067
  }
1068
1068
  return a({
@@ -1072,8 +1072,8 @@ function On(e, t, n) {
1072
1072
  }
1073
1073
  //#endregion
1074
1074
  //#region src/utils/resolveFieldColors.ts
1075
- function kn(e, t) {
1076
- let n = xt({ presets: e.presets }, yt), r = n.presets.length === 0;
1075
+ function Fn(e, t) {
1076
+ let n = Dt({ presets: e.presets }, Tt), r = n.presets.length === 0;
1077
1077
  return {
1078
1078
  presets: r ? t.presets : n.presets,
1079
1079
  allowCustom: t.allowCustom === !1 ? !1 : e.allowCustom ?? t.allowCustom,
@@ -1085,9 +1085,9 @@ function kn(e, t) {
1085
1085
  }
1086
1086
  //#endregion
1087
1087
  //#region src/utils/collectColorFieldIssues.ts
1088
- function An(e, t) {
1088
+ function In(e, t) {
1089
1089
  let n = [], r = (r, i) => {
1090
- let a = kn(r, t), o = `custom block "${e.type}" field "${i}"`, s = (t) => `${e.type}:${i}:${t}`;
1090
+ let a = Fn(r, t), o = `custom block "${e.type}" field "${i}"`, s = (t) => `${e.type}:${i}:${t}`;
1091
1091
  if (a.invalidPresets.length > 0 && n.push({
1092
1092
  id: s("invalid-presets"),
1093
1093
  message: `${o}: presets skipped invalid entries: ${a.invalidPresets.join(", ")} — presets must be hex colors (#rgb or #rrggbb).` + (a.presetsInherited ? " No valid entries are left, so the field inherits colors.presets." : "")
@@ -1111,7 +1111,7 @@ function An(e, t) {
1111
1111
  }
1112
1112
  //#endregion
1113
1113
  //#region src/utils/keyboardShortcuts.ts
1114
- function jn(e) {
1114
+ function Ln(e) {
1115
1115
  for (let t of e.composedPath()) {
1116
1116
  if (!(t instanceof HTMLElement)) continue;
1117
1117
  if (t.isContentEditable) return !0;
@@ -1120,18 +1120,18 @@ function jn(e) {
1120
1120
  }
1121
1121
  return !1;
1122
1122
  }
1123
- function Mn(e, t) {
1123
+ function Rn(e, t) {
1124
1124
  let n = e.metaKey || e.ctrlKey;
1125
1125
  if (n && e.key.toLowerCase() === "s") {
1126
1126
  e.preventDefault(), t.onSave?.();
1127
1127
  return;
1128
1128
  }
1129
1129
  if (n && e.key.toLowerCase() === "z") {
1130
- if (jn(e)) return;
1130
+ if (Ln(e)) return;
1131
1131
  e.preventDefault(), e.shiftKey ? t.history.redo() : (t.onBeforeUndo?.(), t.history.undo());
1132
1132
  return;
1133
1133
  }
1134
- if (t.isPicking?.() && !jn(e)) {
1134
+ if (t.isPicking?.() && !Ln(e)) {
1135
1135
  if (e.key === "Escape") {
1136
1136
  e.preventDefault(), t.onCancelPick?.();
1137
1137
  return;
@@ -1149,51 +1149,58 @@ function Mn(e, t) {
1149
1149
  t.selectBlock(null);
1150
1150
  return;
1151
1151
  }
1152
- (e.key === "Delete" || e.key === "Backspace") && t.getSelectedBlockId() && !jn(e) && (e.preventDefault(), t.history.record(), t.removeBlock(t.getSelectedBlockId()));
1152
+ (e.key === "Delete" || e.key === "Backspace") && t.getSelectedBlockId() && !Ln(e) && (e.preventDefault(), t.history.record(), t.removeBlock(t.getSelectedBlockId()));
1153
1153
  }
1154
1154
  //#endregion
1155
1155
  //#region src/utils/mergeTagLabelSegments.ts
1156
- function Nn(e, t, n) {
1156
+ function zn(e, t, n, r = !1) {
1157
1157
  if (!e) return [];
1158
- let r = RegExp(`(${n.value.source}|${n.logic.source})`, "g"), i = [], a = 0, o;
1159
- for (; (o = r.exec(e)) !== null;) {
1160
- o.index > a && i.push({
1158
+ let i = RegExp(`(${n.value.source}|${n.logic.source})`, "g"), a = [], o = 0, s;
1159
+ for (; (s = i.exec(e)) !== null;) {
1160
+ s.index > o && a.push({
1161
1161
  type: "text",
1162
- value: e.slice(a, o.index)
1162
+ value: e.slice(o, s.index)
1163
1163
  });
1164
- let r = o[0];
1165
- Se(r, n) ? i.push({
1166
- type: "tag",
1167
- value: fe(r, t)
1168
- }) : me(r, n) ? i.push({
1164
+ let i = s[0];
1165
+ if (ye(i, n)) {
1166
+ let e = r ? ke(i, t) : void 0;
1167
+ a.push(e === void 0 ? {
1168
+ type: "tag",
1169
+ value: ge(i, t)
1170
+ } : {
1171
+ type: "text",
1172
+ value: e
1173
+ });
1174
+ } else Ne(i, n) ? a.push({
1169
1175
  type: "tag",
1170
- value: ye(r, n)
1171
- }) : i.push({
1176
+ value: Ce(i, n)
1177
+ }) : a.push({
1172
1178
  type: "text",
1173
- value: r
1174
- }), a = o.index + r.length;
1179
+ value: i
1180
+ });
1181
+ o = s.index + i.length;
1175
1182
  }
1176
- return a < e.length && i.push({
1183
+ return o < e.length && a.push({
1177
1184
  type: "text",
1178
- value: e.slice(a)
1179
- }), i;
1185
+ value: e.slice(o)
1186
+ }), a;
1180
1187
  }
1181
1188
  //#endregion
1182
1189
  //#region src/components/MergeTagPreviewText.vue
1183
- var Pn = R({
1190
+ var $ = R({
1184
1191
  name: "MergeTagPreviewText",
1185
1192
  props: { text: {
1186
1193
  type: String,
1187
1194
  required: !0
1188
1195
  } },
1189
1196
  setup(e) {
1190
- let t = p(Qe, []), r = p(Ye, Ce.liquid), i = C(() => Nn(e.text, t, r));
1191
- return () => i.value.map((e, t) => e.type === "tag" ? n("span", {
1197
+ let t = p(H, []), r = p(pt, Oe.liquid), i = p(U, null), a = C(() => zn(e.text, t, r, i?.value ?? !1));
1198
+ return () => a.value.map((e, t) => e.type === "tag" ? n("span", {
1192
1199
  key: t,
1193
1200
  class: "tpl-merge-tag-label"
1194
1201
  }, e.value) : e.value);
1195
1202
  }
1196
- }), Fn = { class: "tpl:text-center" }, In = ["href"], Ln = /* @__PURE__ */ R({
1203
+ }), Bn = { class: "tpl:text-center" }, Vn = ["href"], Hn = /* @__PURE__ */ R({
1197
1204
  __name: "ButtonBlock",
1198
1205
  props: {
1199
1206
  block: {},
@@ -1214,18 +1221,18 @@ var Pn = R({
1214
1221
  };
1215
1222
  return t.block.fontFamily && (e.fontFamily = t.block.fontFamily), t.block.width === "full" ? (e.display = "block", e.width = "100%", e.boxSizing = "border-box") : typeof t.block.width == "number" && (e.width = `${t.block.width}px`, e.boxSizing = "border-box"), e;
1216
1223
  });
1217
- return (t, r) => (l(), w("div", Fn, [M("a", {
1224
+ return (t, r) => (l(), w("div", Bn, [M("a", {
1218
1225
  href: e.block.url || "#",
1219
1226
  style: F(n.value),
1220
1227
  class: "tpl:cursor-default",
1221
1228
  onClick: r[0] ||= O(() => {}, ["prevent"])
1222
- }, [z(Pn, { text: e.block.text }, null, 8, ["text"])], 12, In)]));
1229
+ }, [z($, { text: e.block.text }, null, 8, ["text"])], 12, Vn)]));
1223
1230
  }
1224
- }), Rn = ["innerHTML"], zn = [
1231
+ }), Un = ["innerHTML"], Wn = [
1225
1232
  "src",
1226
1233
  "width",
1227
1234
  "height"
1228
- ], Bn = /* @__PURE__ */ R({
1235
+ ], Gn = /* @__PURE__ */ R({
1229
1236
  __name: "CustomBlockIcon",
1230
1237
  props: {
1231
1238
  icon: {},
@@ -1241,14 +1248,14 @@ var Pn = R({
1241
1248
  height: `${n.value}px`
1242
1249
  }),
1243
1250
  innerHTML: e.icon
1244
- }, null, 12, Rn)) : i.value ? (l(), w("img", {
1251
+ }, null, 12, Un)) : i.value ? (l(), w("img", {
1245
1252
  key: 1,
1246
1253
  src: e.icon,
1247
1254
  width: n.value,
1248
1255
  height: n.value,
1249
1256
  class: "tpl:inline-block",
1250
1257
  alt: ""
1251
- }, null, 8, zn)) : (l(), k(E(Tt), {
1258
+ }, null, 8, Wn)) : (l(), k(E(Mt), {
1252
1259
  key: 2,
1253
1260
  size: n.value,
1254
1261
  "stroke-width": 1.5
@@ -1257,16 +1264,16 @@ var Pn = R({
1257
1264
  });
1258
1265
  //#endregion
1259
1266
  //#region src/composables/useEditorRoot.ts
1260
- function Vn() {
1261
- return p(it, document) ?? document;
1267
+ function Kn() {
1268
+ return p(ut, document) ?? document;
1262
1269
  }
1263
1270
  //#endregion
1264
1271
  //#region src/composables/useFocusTrap.ts
1265
- var Hn = "a[href], button:not([disabled]), input:not([disabled]), select:not([disabled]), textarea:not([disabled]), [tabindex]:not([tabindex=\"-1\"])";
1266
- function Un(e, t) {
1267
- let n = Vn(), r = null, i = null, a = null;
1272
+ var qn = "a[href], button:not([disabled]), input:not([disabled]), select:not([disabled]), textarea:not([disabled]), [tabindex]:not([tabindex=\"-1\"])";
1273
+ function Jn(e, t) {
1274
+ let n = Kn(), r = null, i = null, a = null;
1268
1275
  function s() {
1269
- return e.value ? Array.from(e.value.querySelectorAll(Hn)).filter((e) => e.offsetParent !== null) : [];
1276
+ return e.value ? Array.from(e.value.querySelectorAll(qn)).filter((e) => e.offsetParent !== null) : [];
1270
1277
  }
1271
1278
  function c(e) {
1272
1279
  if (e.key !== "Tab") return;
@@ -1281,7 +1288,7 @@ function Un(e, t) {
1281
1288
  a = null;
1282
1289
  let t = s();
1283
1290
  t.length > 0 && (e.value?.querySelector("[autofocus], input:not([disabled])") ?? t[0]).focus();
1284
- }), i = U(e, "keydown", c);
1291
+ }), i = He(e, "keydown", c);
1285
1292
  }
1286
1293
  function u(e = {}) {
1287
1294
  let t = e.restoreFocus !== !1;
@@ -1296,8 +1303,8 @@ function Un(e, t) {
1296
1303
  }
1297
1304
  //#endregion
1298
1305
  //#region src/composables/useEmoji.ts
1299
- function Wn() {
1300
- let [t, n] = Fe(!1), r = e([]), i = !1;
1306
+ function Yn() {
1307
+ let [t, n] = Be(!1), r = e([]), i = !1;
1301
1308
  o(() => {
1302
1309
  i = !0;
1303
1310
  }), B(t, async (e) => {
@@ -1322,7 +1329,7 @@ function Wn() {
1322
1329
  }
1323
1330
  //#endregion
1324
1331
  //#region src/composables/useDragDrop.ts
1325
- function Gn(e) {
1332
+ function Xn(e) {
1326
1333
  let { onBlockMove: t, onBlockAdd: n } = e, r = v(!1), i = v(null), a = v(null);
1327
1334
  function o(e) {
1328
1335
  r.value = !0, i.value = e;
@@ -1372,7 +1379,7 @@ function Gn(e) {
1372
1379
  }
1373
1380
  //#endregion
1374
1381
  //#region src/composables/useFonts.ts
1375
- var Kn = [
1382
+ var Zn = [
1376
1383
  {
1377
1384
  value: "Arial",
1378
1385
  label: "Arial"
@@ -1401,7 +1408,7 @@ var Kn = [
1401
1408
  value: "Courier New",
1402
1409
  label: "Courier New"
1403
1410
  }
1404
- ], qn = {
1411
+ ], Qn = {
1405
1412
  arial: "Arial, sans-serif",
1406
1413
  helvetica: "Helvetica, sans-serif",
1407
1414
  georgia: "Georgia, serif",
@@ -1409,23 +1416,23 @@ var Kn = [
1409
1416
  verdana: "Verdana, sans-serif",
1410
1417
  "trebuchet ms": "'Trebuchet MS', sans-serif",
1411
1418
  "courier new": "'Courier New', monospace"
1412
- }, $ = "Arial, sans-serif";
1413
- function Jn(e) {
1414
- if (e === void 0 || e === !0) return [...Kn];
1419
+ }, $n = "Arial, sans-serif";
1420
+ function er(e) {
1421
+ if (e === void 0 || e === !0) return [...Zn];
1415
1422
  if (e === !1) return [];
1416
1423
  let t = [], n = /* @__PURE__ */ new Set(), r = /* @__PURE__ */ new Set();
1417
1424
  for (let i of e) {
1418
- let e = i.toLowerCase(), a = Kn.find((t) => t.value.toLowerCase() === e);
1425
+ let e = i.toLowerCase(), a = Zn.find((t) => t.value.toLowerCase() === e);
1419
1426
  if (!a) {
1420
- r.has(e) || (r.add(e), Q.warn(`config.fonts.builtIns: "${i}" is not a built-in font — skipping it. Built-in fonts are: ${Kn.map((e) => e.value).join(", ")}.`));
1427
+ r.has(e) || (r.add(e), Q.warn(`config.fonts.builtIns: "${i}" is not a built-in font — skipping it. Built-in fonts are: ${Zn.map((e) => e.value).join(", ")}.`));
1421
1428
  continue;
1422
1429
  }
1423
1430
  n.has(a.value) || (n.add(a.value), t.push(a));
1424
1431
  }
1425
1432
  return t;
1426
1433
  }
1427
- function Yn(e) {
1428
- let t = v(e?.customFonts ?? []), n = v(!0), r = v(!1), a = Jn(e?.builtIns), s = C(() => e?.defaultFallback ?? $);
1434
+ function tr(e) {
1435
+ let t = v(e?.customFonts ?? []), n = v(!0), r = v(!1), a = er(e?.builtIns), s = C(() => e?.defaultFallback ?? $n);
1429
1436
  function c(e) {
1430
1437
  n.value = e;
1431
1438
  }
@@ -1442,26 +1449,26 @@ function Yn(e) {
1442
1449
  function u(e) {
1443
1450
  return l.value.some((t) => t.label.toLowerCase() === e.toLowerCase() || t.value.toLowerCase().startsWith(e.toLowerCase()));
1444
1451
  }
1445
- let d = e?.defaultFont ?? $.split(",")[0].trim();
1452
+ let d = e?.defaultFont ?? $n.split(",")[0].trim();
1446
1453
  u(d) || Q.warn(`config.fonts: new templates seed "${d}", which the font picker doesn't offer — authors can't reselect it. Either add it to fonts.builtIns, or set fonts.defaultFont to an offered font.`);
1447
1454
  function f(e) {
1448
- return Kn.some((t) => t.label.toLowerCase() === e.toLowerCase() || t.value.toLowerCase().startsWith(e.toLowerCase()));
1455
+ return Zn.some((t) => t.label.toLowerCase() === e.toLowerCase() || t.value.toLowerCase().startsWith(e.toLowerCase()));
1449
1456
  }
1450
1457
  function p() {
1451
1458
  if (e?.defaultFont) {
1452
- if (!n.value && !f(e.defaultFont)) return $;
1459
+ if (!n.value && !f(e.defaultFont)) return $n;
1453
1460
  if (u(e.defaultFont)) {
1454
1461
  let t = l.value.find((t) => t.label.toLowerCase() === e.defaultFont.toLowerCase() || t.value.toLowerCase().startsWith(e.defaultFont.toLowerCase()));
1455
1462
  if (t) return t.value;
1456
1463
  }
1457
1464
  }
1458
- return $;
1465
+ return $n;
1459
1466
  }
1460
1467
  let m = C(() => p());
1461
1468
  function h(e) {
1462
1469
  if (!e) return s.value;
1463
1470
  let n = t.value.find((t) => t.name.toLowerCase() === e.toLowerCase());
1464
- return n ? `'${n.name}', ${n.fallback ?? s.value}` : qn[e.toLowerCase()] || (e.includes(",") ? e : `${e}, ${s.value}`);
1471
+ return n ? `'${n.name}', ${n.fallback ?? s.value}` : Qn[e.toLowerCase()] || (e.includes(",") ? e : `${e}, ${s.value}`);
1465
1472
  }
1466
1473
  let g = [], _ = !1;
1467
1474
  async function y() {
@@ -1504,8 +1511,8 @@ function Yn(e) {
1504
1511
  }
1505
1512
  //#endregion
1506
1513
  //#region src/composables/useLogicTag.ts
1507
- function Xn() {
1508
- let e = p(He, []), t = p(Ze, []), n = p(Ye, Ce.liquid), r = p(st, null), i = p(ht, null), a = v(!1), o = !!r || e.length > 0 || t.length > 0, s = e.length > 0 || t.length > 0;
1514
+ function nr() {
1515
+ let e = p(Je, []), t = p(it, []), n = p(pt, Oe.liquid), r = p(Ke, null), i = p(xt, null), a = v(!1), o = !!r || e.length > 0 || t.length > 0, s = e.length > 0 || t.length > 0;
1509
1516
  async function c() {
1510
1517
  if (r) {
1511
1518
  a.value = !0;
@@ -1536,12 +1543,12 @@ function Xn() {
1536
1543
  }
1537
1544
  //#endregion
1538
1545
  //#region src/utils/mergeTagNodeSpec.ts
1539
- function Zn(e, t, n) {
1540
- return me(e, n) ? {
1546
+ function rr(e, t, n) {
1547
+ return Ne(e, n) ? {
1541
1548
  type: "logicMergeTagNode",
1542
1549
  attrs: {
1543
1550
  value: e,
1544
- keyword: ye(e, n)
1551
+ keyword: Ce(e, n)
1545
1552
  }
1546
1553
  } : {
1547
1554
  type: "mergeTagNode",
@@ -1553,15 +1560,15 @@ function Zn(e, t, n) {
1553
1560
  }
1554
1561
  //#endregion
1555
1562
  //#region src/utils/insertLogicTag.ts
1556
- function Qn(e) {
1563
+ function ir(e) {
1557
1564
  return "before" in e && "after" in e;
1558
1565
  }
1559
- function $n(e, t, n) {
1560
- if (!Qn(t)) {
1561
- e.chain().focus().insertContent(Zn(t.value, t.label, n)).run();
1566
+ function ar(e, t, n) {
1567
+ if (!ir(t)) {
1568
+ e.chain().focus().insertContent(rr(t.value, t.label, n)).run();
1562
1569
  return;
1563
1570
  }
1564
- let r = Zn(t.before, t.label, n), i = Zn(t.after, t.label, n), { from: a, to: o } = e.state.selection;
1571
+ let r = rr(t.before, t.label, n), i = rr(t.after, t.label, n), { from: a, to: o } = e.state.selection;
1565
1572
  if (a !== o) {
1566
1573
  e.chain().focus().insertContentAt(o, i).insertContentAt(a, r).run();
1567
1574
  return;
@@ -1570,20 +1577,20 @@ function $n(e, t, n) {
1570
1577
  }
1571
1578
  //#endregion
1572
1579
  //#region src/utils/linkColorExtension.ts
1573
- function er(e) {
1580
+ function or(e) {
1574
1581
  if (!e) return null;
1575
1582
  let t = e.trim();
1576
1583
  return /^#[0-9a-f]{3,8}$/i.test(t) || /^(rgb|rgba|hsl|hsla)\(\s*[0-9.,%/\s]+\)$/i.test(t) || /^[a-z]+$/i.test(t) ? t : null;
1577
1584
  }
1578
- function tr(e) {
1585
+ function sr(e) {
1579
1586
  return e.extend({ addAttributes() {
1580
1587
  return {
1581
1588
  ...this.parent?.(),
1582
1589
  color: {
1583
1590
  default: null,
1584
- parseHTML: (e) => er(bt(e.style.color)),
1591
+ parseHTML: (e) => or(Et(e.style.color)),
1585
1592
  renderHTML: (e) => {
1586
- let t = er(e.color);
1593
+ let t = or(e.color);
1587
1594
  return t ? { style: `color: ${t}` } : {};
1588
1595
  }
1589
1596
  }
@@ -1592,9 +1599,9 @@ function tr(e) {
1592
1599
  }
1593
1600
  //#endregion
1594
1601
  //#region src/composables/useRichTextLinkDialog.ts
1595
- function nr(e) {
1602
+ function cr(e) {
1596
1603
  let t = v(!1), n = v(""), r = v(""), i = v(null);
1597
- Un(i, t);
1604
+ Jn(i, t);
1598
1605
  function a() {
1599
1606
  let i = e.value?.getAttributes("link") ?? {};
1600
1607
  n.value = i.href || "", r.value = i.color || "", t.value = !0;
@@ -1603,7 +1610,7 @@ function nr(e) {
1603
1610
  if (n.value) {
1604
1611
  let t = c(n.value);
1605
1612
  if (t !== null) {
1606
- let n = er(r.value), i = e.value?.chain().focus().extendMarkRange("link").setLink({ href: t }).updateAttributes("link", { color: n });
1613
+ let n = or(r.value), i = e.value?.chain().focus().extendMarkRange("link").setLink({ href: t }).updateAttributes("link", { color: n });
1607
1614
  n && typeof e.value?.commands.unsetColor == "function" && i?.unsetColor(), i?.run();
1608
1615
  }
1609
1616
  }
@@ -1650,8 +1657,8 @@ function nr(e) {
1650
1657
  }
1651
1658
  //#endregion
1652
1659
  //#region src/composables/useRichTextEditor.ts
1653
- function rr(t) {
1654
- let n = p(W, null), { mergeTags: r, canRequestMergeTag: i, isRequesting: a, requestMergeTag: o, syntax: c, autocomplete: l } = q(), { canInsertLogicTag: u, isRequesting: d, requestLogicTag: f } = Xn(), m = p(Xe, null), h = (s(m) ? m.value : m)?.mergeTag?.suggestionEmpty ?? "No matching merge tags", g = Ee(c), _ = e(null), { showLinkDialog: y, linkUrl: b, linkColor: x, linkDialogRef: S, openLinkDialog: C, insertLink: w, removeLink: T, closeLinkDialog: E, handleLinkKeydown: O } = nr(_), { start: k, stop: A } = Ne(() => _.value?.commands.focus("end"), 0, { immediate: !1 }), j = e(null), M = v(!0), N = v(null), P = !1;
1660
+ function lr(t) {
1661
+ let n = p(W, null), { mergeTags: r, canRequestMergeTag: i, isRequesting: a, requestMergeTag: o, syntax: c, autocomplete: l } = q(), { canInsertLogicTag: u, isRequesting: d, requestLogicTag: f } = nr(), m = p(wt, null), h = (s(m) ? m.value : m)?.mergeTag?.suggestionEmpty ?? "No matching merge tags", g = ve(c), _ = e(null), { showLinkDialog: y, linkUrl: b, linkColor: x, linkDialogRef: S, openLinkDialog: C, insertLink: w, removeLink: T, closeLinkDialog: E, handleLinkKeydown: O } = cr(_), { start: k, stop: A } = Re(() => _.value?.commands.focus("end"), 0, { immediate: !1 }), j = e(null), M = v(!0), N = v(null), P = !1;
1655
1662
  async function F() {
1656
1663
  N.value = null, M.value = !0;
1657
1664
  try {
@@ -1699,7 +1706,7 @@ function rr(t) {
1699
1706
  let i = n.some((e) => e instanceof HTMLElement && e.classList.contains("tpl-color-popover"));
1700
1707
  r.closest(".tpl-text-editor-wrapper") || r.closest(".tpl-text-toolbar") || r.closest(".tpl-link-dialog") || i || t.onDone();
1701
1708
  }
1702
- U(document, "mousedown", L), D(() => {
1709
+ He(document, "mousedown", L), D(() => {
1703
1710
  P = !0, I(), A(), _.value?.destroy();
1704
1711
  });
1705
1712
  async function R() {
@@ -1711,7 +1718,7 @@ function rr(t) {
1711
1718
  }
1712
1719
  async function z() {
1713
1720
  let e = await f();
1714
- P || (e && _.value ? $n(_.value, e, c) : _.value?.commands.focus());
1721
+ P || (e && _.value ? ar(_.value, e, c) : _.value?.commands.focus());
1715
1722
  }
1716
1723
  return {
1717
1724
  editor: _,
@@ -1740,9 +1747,9 @@ function rr(t) {
1740
1747
  }
1741
1748
  //#endregion
1742
1749
  //#region src/composables/useSmallScreenNotice.ts
1743
- var ir = "(max-width: 767px)";
1744
- function ar(e) {
1745
- let t = Le(ir);
1750
+ var ur = "(max-width: 767px)";
1751
+ function dr(e) {
1752
+ let t = Ue(ur);
1746
1753
  return {
1747
1754
  isSmallScreen: t,
1748
1755
  showNotice: C(() => (A(e) ?? !0) && t.value)
@@ -1750,20 +1757,20 @@ function ar(e) {
1750
1757
  }
1751
1758
  //#endregion
1752
1759
  //#region src/components/blocks/CustomBlock.vue?vue&type=script&setup=true&lang.ts
1753
- var or = { class: "tpl:w-full" }, sr = {
1760
+ var fr = { class: "tpl:w-full" }, pr = {
1754
1761
  key: 0,
1755
1762
  class: "tpl:flex tpl:min-h-[80px] tpl:flex-col tpl:items-center tpl:justify-center tpl:gap-2 tpl:rounded tpl:border tpl:border-dashed tpl:py-4 tpl:border-[var(--tpl-warning)] tpl:bg-[var(--tpl-warning-light)]"
1756
- }, cr = { class: "tpl:text-sm tpl:text-[var(--tpl-text-muted)]" }, lr = {
1763
+ }, mr = { class: "tpl:text-sm tpl:text-[var(--tpl-text-muted)]" }, hr = {
1757
1764
  key: 1,
1758
1765
  class: "tpl:flex tpl:min-h-[80px] tpl:flex-col tpl:items-center tpl:justify-center tpl:gap-2 tpl:rounded tpl:border tpl:border-dashed tpl:py-4 tpl:border-[var(--tpl-danger)] tpl:bg-[var(--tpl-danger-light)]"
1759
- }, ur = { class: "tpl:text-sm tpl:text-[var(--tpl-text-muted)]" }, dr = {
1766
+ }, gr = { class: "tpl:text-sm tpl:text-[var(--tpl-text-muted)]" }, _r = {
1760
1767
  key: 2,
1761
1768
  class: "tpl:relative"
1762
- }, fr = ["innerHTML"], pr = {
1769
+ }, vr = ["innerHTML"], yr = {
1763
1770
  key: 0,
1764
1771
  class: "tpl:absolute tpl:inset-0 tpl:flex tpl:flex-col tpl:items-center tpl:justify-center tpl:gap-3 tpl:rounded tpl:backdrop-blur-[2px]",
1765
1772
  style: { "background-color": "color-mix(in srgb, var(--tpl-bg) 80%, transparent)" }
1766
- }, mr = /* @__PURE__ */ R({
1773
+ }, br = /* @__PURE__ */ R({
1767
1774
  __name: "CustomBlock",
1768
1775
  props: {
1769
1776
  block: {},
@@ -1771,7 +1778,7 @@ var or = { class: "tpl:w-full" }, sr = {
1771
1778
  },
1772
1779
  emits: ["fetchData"],
1773
1780
  setup(e, { emit: n }) {
1774
- let r = e, i = n, { t: a } = G(), o = p(dt, null), s = v(""), c = v(!1), u = C(() => o?.getDefinition(r.block.customType)), d = C(() => !!u.value), { isFetching: f, fetch: m, needsFetch: h, hasDataSource: g } = en({
1781
+ let r = e, i = n, { t: a } = G(), o = p(_t, null), s = v(""), c = v(!1), u = C(() => o?.getDefinition(r.block.customType)), d = C(() => !!u.value), { isFetching: f, fetch: m, needsFetch: h, hasDataSource: g } = sn({
1775
1782
  definition: u,
1776
1783
  block: C(() => r.block),
1777
1784
  onUpdate: (e, t) => {
@@ -1780,27 +1787,37 @@ var or = { class: "tpl:w-full" }, sr = {
1780
1787
  dataSourceFetched: t
1781
1788
  });
1782
1789
  }
1790
+ }), _ = p(H, []), y = p(U, null), b = C(() => {
1791
+ if (!y?.value) return r.block;
1792
+ let e = {};
1793
+ for (let [t, n] of Object.entries(r.block.fieldValues)) e[t] = typeof n == "string" ? xe(n, _) : n;
1794
+ return {
1795
+ ...r.block,
1796
+ fieldValues: e
1797
+ };
1783
1798
  });
1784
- async function _() {
1799
+ async function x() {
1785
1800
  if (o) {
1786
1801
  c.value = !1;
1787
1802
  try {
1788
- let e = await o.renderCustomBlock(r.block);
1803
+ let e = await o.renderCustomBlock(b.value);
1789
1804
  e.includes("Template render error:") && (c.value = !0), s.value = e;
1790
1805
  } catch {
1791
1806
  c.value = !0, s.value = "";
1792
1807
  }
1793
1808
  }
1794
1809
  }
1795
- let y = Pe(_, 150);
1810
+ let D = ze(x, 150);
1796
1811
  return t(() => {
1797
- _();
1812
+ x();
1798
1813
  }), B(() => r.block.fieldValues, () => {
1799
- y();
1800
- }, { deep: !0 }), (e, t) => (l(), w("div", or, [d.value ? c.value ? (l(), w("div", lr, [z(E(zt), {
1814
+ D();
1815
+ }, { deep: !0 }), B(() => y?.value, () => {
1816
+ D();
1817
+ }), (e, t) => (l(), w("div", fr, [d.value ? c.value ? (l(), w("div", hr, [z(E(Ut), {
1801
1818
  size: 24,
1802
1819
  class: "tpl:text-[var(--tpl-danger)]"
1803
- }), M("span", ur, S(E(a).customBlocks.renderError), 1)])) : (l(), w("div", dr, [M("div", { innerHTML: s.value }, null, 8, fr), E(g) && E(h) ? (l(), w("div", pr, [E(f) ? (l(), k(Vt, {
1820
+ }), M("span", gr, S(E(a).customBlocks.renderError), 1)])) : (l(), w("div", _r, [M("div", { innerHTML: s.value }, null, 8, vr), E(g) && E(h) ? (l(), w("div", yr, [E(f) ? (l(), k(qt, {
1804
1821
  key: 1,
1805
1822
  class: "tpl:w-48"
1806
1823
  })) : (l(), w("button", {
@@ -1808,16 +1825,16 @@ var or = { class: "tpl:w-full" }, sr = {
1808
1825
  type: "button",
1809
1826
  class: "tpl:flex tpl:cursor-pointer tpl:items-center tpl:gap-2 tpl:rounded-[var(--tpl-radius-sm)] tpl:border tpl:border-[var(--tpl-border)] tpl:px-4 tpl:py-2 tpl:text-sm tpl:font-semibold tpl:shadow-sm tpl:transition-all tpl:duration-150 hover:tpl:border-[var(--tpl-primary)] hover:tpl:shadow-md tpl:bg-[var(--tpl-primary-light)] tpl:text-[var(--tpl-primary-hover)]",
1810
1827
  onClick: t[0] ||= O((...e) => E(m) && E(m)(...e), ["stop"])
1811
- }, [u.value?.icon ? (l(), k(Bn, {
1828
+ }, [u.value?.icon ? (l(), k(Gn, {
1812
1829
  key: 0,
1813
1830
  icon: u.value.icon,
1814
1831
  size: 16
1815
- }, null, 8, ["icon"])) : T("", !0), L(" " + S(u.value?.dataSource?.label || E(a).customBlocks.dataSource.fetchButton), 1)]))])) : T("", !0)])) : (l(), w("div", sr, [z(E(Dt), {
1832
+ }, null, 8, ["icon"])) : T("", !0), L(" " + S(u.value?.dataSource?.label || E(a).customBlocks.dataSource.fetchButton), 1)]))])) : T("", !0)])) : (l(), w("div", pr, [z(E(jt), {
1816
1833
  size: 24,
1817
1834
  class: "tpl:text-[var(--tpl-warning)]"
1818
- }), M("span", cr, S(E(a).customBlocks.definitionNotFound), 1)]))]));
1835
+ }), M("span", mr, S(E(a).customBlocks.definitionNotFound), 1)]))]));
1819
1836
  }
1820
- }), hr = { class: "tpl:w-full" }, gr = /* @__PURE__ */ R({
1837
+ }), xr = { class: "tpl:w-full" }, Sr = /* @__PURE__ */ R({
1821
1838
  __name: "DividerBlock",
1822
1839
  props: {
1823
1840
  block: {},
@@ -1829,63 +1846,63 @@ var or = { class: "tpl:w-full" }, sr = {
1829
1846
  width: t.block.width === "full" ? "100%" : `${t.block.width}px`,
1830
1847
  margin: t.block.width === "full" ? "0" : "0 auto"
1831
1848
  }));
1832
- return (e, t) => (l(), w("div", hr, [M("hr", {
1849
+ return (e, t) => (l(), w("div", xr, [M("hr", {
1833
1850
  class: "tpl:m-0 tpl:border-none",
1834
1851
  style: F(n.value)
1835
1852
  }, null, 4)]));
1836
1853
  }
1837
- }), _r = { class: "tpl:w-full" }, vr = ["srcdoc", "title"], yr = {
1854
+ }), Cr = { class: "tpl:w-full" }, wr = ["srcdoc", "title"], Tr = {
1838
1855
  key: 1,
1839
1856
  class: "tpl:flex tpl:min-h-[80px] tpl:flex-col tpl:items-center tpl:justify-center tpl:gap-2 tpl:rounded tpl:border tpl:border-dashed tpl:py-4 tpl:border-[var(--tpl-border)] tpl:bg-[var(--tpl-bg-hover)]"
1840
- }, br = {
1857
+ }, Er = {
1841
1858
  key: 0,
1842
1859
  class: "tpl:text-sm tpl:text-[var(--tpl-text-muted)]"
1843
- }, xr = {
1860
+ }, Dr = {
1844
1861
  key: 1,
1845
1862
  class: "tpl:text-sm tpl:text-[var(--tpl-text-dim)]"
1846
- }, Sr = /* @__PURE__ */ R({
1863
+ }, Or = /* @__PURE__ */ R({
1847
1864
  __name: "HtmlBlock",
1848
1865
  props: {
1849
1866
  block: {},
1850
1867
  viewport: {}
1851
1868
  },
1852
1869
  setup(e) {
1853
- let t = e, { t: n } = G(), r = p(_t, !1), i = C(() => t.block.content.trim().length > 0), a = C(() => r && i.value), o = v(null), s = v(60), c = null;
1854
- function u() {
1855
- let e = o.value?.contentDocument;
1856
- e && (s.value = Math.max(e.body?.scrollHeight ?? 0, e.documentElement?.scrollHeight ?? 0));
1870
+ let t = e, { t: n } = G(), r = p(Ct, !1), i = C(() => t.block.content.trim().length > 0), a = C(() => r && i.value), o = p(H, []), s = p(U, null), c = C(() => s?.value ? xe(t.block.content, o) : t.block.content), u = v(null), d = v(60), f = null;
1871
+ function m() {
1872
+ let e = u.value?.contentDocument;
1873
+ e && (d.value = Math.max(e.body?.scrollHeight ?? 0, e.documentElement?.scrollHeight ?? 0));
1857
1874
  }
1858
- function d() {
1859
- c?.disconnect(), c = null, u();
1860
- let e = o.value?.contentDocument?.documentElement;
1861
- e && typeof ResizeObserver < "u" && (c = new ResizeObserver(() => u()), c.observe(e));
1875
+ function h() {
1876
+ f?.disconnect(), f = null, m();
1877
+ let e = u.value?.contentDocument?.documentElement;
1878
+ e && typeof ResizeObserver < "u" && (f = new ResizeObserver(() => m()), f.observe(e));
1862
1879
  }
1863
1880
  return B(a, (e) => {
1864
- e || (c?.disconnect(), c = null);
1881
+ e || (f?.disconnect(), f = null);
1865
1882
  }), D(() => {
1866
- c?.disconnect(), c = null;
1867
- }), (t, r) => (l(), w("div", _r, [a.value ? (l(), w("iframe", {
1883
+ f?.disconnect(), f = null;
1884
+ }), (e, t) => (l(), w("div", Cr, [a.value ? (l(), w("iframe", {
1868
1885
  key: 0,
1869
1886
  ref_key: "iframeRef",
1870
- ref: o,
1871
- srcdoc: e.block.content,
1887
+ ref: u,
1888
+ srcdoc: c.value,
1872
1889
  sandbox: "allow-same-origin",
1873
1890
  title: E(n).html.preview,
1874
1891
  class: "tpl:block tpl:w-full tpl:border-0",
1875
- style: F({ height: `${s.value}px` }),
1876
- onLoad: d
1877
- }, null, 44, vr)) : (l(), w("div", yr, [z(E(wt), {
1892
+ style: F({ height: `${d.value}px` }),
1893
+ onLoad: h
1894
+ }, null, 44, wr)) : (l(), w("div", Tr, [z(E(At), {
1878
1895
  size: 24,
1879
1896
  class: "tpl:text-[var(--tpl-text-dim)]"
1880
- }), i.value ? (l(), w("span", br, S(E(n).html.preview), 1)) : (l(), w("span", xr, S(E(n).html.empty), 1))]))]));
1897
+ }), i.value ? (l(), w("span", Er, S(E(n).html.preview), 1)) : (l(), w("span", Dr, S(E(n).html.empty), 1))]))]));
1881
1898
  }
1882
- }), Cr = "image/";
1883
- function wr(e) {
1884
- let { target: t, onFiles: n, enabled: r } = e, i = () => r === void 0 || A(r), { isOverDropZone: a } = ze(t, {
1899
+ }), kr = "image/";
1900
+ function Ar(e) {
1901
+ let { target: t, onFiles: n, enabled: r } = e, i = () => r === void 0 || A(r), { isOverDropZone: a } = Ge(t, {
1885
1902
  preventDefaultForUnhandled: !0,
1886
1903
  onDrop: (e) => {
1887
1904
  if (!i()) return;
1888
- let t = (e ?? []).filter((e) => e.type.startsWith(Cr));
1905
+ let t = (e ?? []).filter((e) => e.type.startsWith(kr));
1889
1906
  t.length > 0 && n([t[0]]);
1890
1907
  }
1891
1908
  });
@@ -1893,17 +1910,17 @@ function wr(e) {
1893
1910
  }
1894
1911
  //#endregion
1895
1912
  //#region src/components/blocks/ImageBlock.vue?vue&type=script&setup=true&lang.ts
1896
- var Tr = {
1913
+ var jr = {
1897
1914
  key: 0,
1898
1915
  class: "tpl:pointer-events-none tpl:absolute tpl:inset-0 tpl:z-10 tpl:flex tpl:flex-col tpl:items-center tpl:justify-center tpl:gap-2 tpl:rounded tpl:border-2 tpl:border-dashed tpl:text-xs tpl:font-medium tpl:border-[var(--tpl-primary)] tpl:text-[var(--tpl-primary)]",
1899
1916
  style: { "background-color": "color-mix(in srgb, var(--tpl-bg) 85%, transparent)" }
1900
- }, Er = ["href"], Dr = ["src", "alt"], Or = ["src", "alt"], kr = {
1917
+ }, Mr = ["href"], Nr = ["src", "alt"], Pr = ["src", "alt"], Fr = {
1901
1918
  class: "tpl:max-w-full tpl:truncate tpl:px-3 tpl:text-xs tpl:font-medium tpl:text-[var(--tpl-primary)]",
1902
1919
  style: { opacity: "0.7" }
1903
- }, Ar = ["href"], jr = ["src", "alt"], Mr = ["src", "alt"], Nr = {
1920
+ }, Ir = ["href"], Lr = ["src", "alt"], Rr = ["src", "alt"], zr = {
1904
1921
  key: 4,
1905
1922
  class: "tpl:flex tpl:min-h-[100px] tpl:flex-col tpl:items-center tpl:justify-center tpl:gap-2 tpl:rounded tpl:border-2 tpl:border-dashed tpl:text-sm tpl:border-[var(--tpl-border-light)] tpl:bg-[var(--tpl-bg-hover)] tpl:text-[var(--tpl-text-dim)]"
1906
- }, Pr = ["aria-label"], Fr = { key: 1 }, Ir = /* @__PURE__ */ R({
1923
+ }, Br = ["aria-label"], Vr = { key: 1 }, Hr = /* @__PURE__ */ R({
1907
1924
  __name: "ImageBlock",
1908
1925
  props: {
1909
1926
  block: {},
@@ -1911,7 +1928,7 @@ var Tr = {
1911
1928
  },
1912
1929
  emits: ["update"],
1913
1930
  setup(e, { emit: t }) {
1914
- let n = e, r = t, { t: i } = G(), { syntax: a } = q(), o = p(Be, null), s = C(() => !!o), c = Ut();
1931
+ let n = e, r = t, { t: i } = G(), { syntax: a } = q(), o = p(ft, null), s = C(() => !!o), c = Yt();
1915
1932
  async function u() {
1916
1933
  let e = await o?.({ accept: ["images"] });
1917
1934
  if (c.alive && e) {
@@ -1938,7 +1955,7 @@ var Tr = {
1938
1955
  }
1939
1956
  }
1940
1957
  }
1941
- let { isOver: g } = wr({
1958
+ let { isOver: g } = Ar({
1942
1959
  target: d,
1943
1960
  enabled: m,
1944
1961
  onFiles: h
@@ -1951,18 +1968,18 @@ var Tr = {
1951
1968
  marginLeft: e === "center" || e === "right" ? "auto" : void 0,
1952
1969
  marginRight: e === "center" ? "auto" : void 0
1953
1970
  };
1954
- }), b = C(() => H(n.block.src, a)), x = X(() => b.value ? void 0 : n.block.src), D = X(() => b.value ? n.block.placeholderUrl : void 0);
1971
+ }), b = C(() => je(n.block.src, a)), x = X(() => b.value ? void 0 : n.block.src), D = X(() => b.value ? n.block.placeholderUrl : void 0);
1955
1972
  return (t, n) => (l(), w("div", {
1956
1973
  ref_key: "dropZoneRef",
1957
1974
  ref: d,
1958
1975
  "data-testid": "image-drop-zone",
1959
1976
  class: "tpl:relative tpl:w-full",
1960
1977
  style: F(_.value)
1961
- }, [m.value && (E(g) || f.value) ? (l(), w("div", Tr, [f.value ? (l(), w(I, { key: 0 }, [z(E(Lt), {
1978
+ }, [m.value && (E(g) || f.value) ? (l(), w("div", jr, [f.value ? (l(), w(I, { key: 0 }, [z(E(zt), {
1962
1979
  class: "tpl-spinner",
1963
1980
  size: 20,
1964
1981
  "stroke-width": 2
1965
- }), L(" " + S(E(i).image.uploading), 1)], 64)) : (l(), w(I, { key: 1 }, [z(E(Rt), {
1982
+ }), L(" " + S(E(i).image.uploading), 1)], 64)) : (l(), w(I, { key: 1 }, [z(E(Vt), {
1966
1983
  size: 20,
1967
1984
  "stroke-width": 1.5
1968
1985
  }), L(" " + S(E(i).image.dropToUpload), 1)], 64))])) : T("", !0), e.block.src && b.value && e.block.placeholderUrl ? (l(), w(I, { key: 1 }, [e.block.linkUrl ? (l(), w("a", {
@@ -1977,22 +1994,22 @@ var Tr = {
1977
1994
  src: E(D),
1978
1995
  alt: e.block.alt || E(i).image.altTextPlaceholder,
1979
1996
  style: F(y.value)
1980
- }, null, 12, Dr)], 8, Er)) : (l(), w("img", {
1997
+ }, null, 12, Nr)], 8, Mr)) : (l(), w("img", {
1981
1998
  key: 1,
1982
1999
  class: "tpl:border-0",
1983
2000
  src: E(D),
1984
2001
  alt: e.block.alt,
1985
2002
  style: F(y.value)
1986
- }, null, 12, Or))], 64)) : e.block.src && b.value ? (l(), w("div", {
2003
+ }, null, 12, Pr))], 64)) : e.block.src && b.value ? (l(), w("div", {
1987
2004
  key: 2,
1988
2005
  class: "tpl:!flex tpl:min-h-[120px] tpl:flex-col tpl:items-center tpl:justify-center tpl:gap-2 tpl:rounded tpl:border-2 tpl:border-dashed tpl:text-center tpl:bg-[var(--tpl-bg-elevated)]",
1989
2006
  style: F([{ "border-color": "color-mix(in srgb, var(--tpl-primary) 40%, transparent)" }, y.value])
1990
- }, [z(E(jt), {
2007
+ }, [z(E(Lt), {
1991
2008
  size: 32,
1992
2009
  "stroke-width": 1.5,
1993
2010
  class: "tpl:text-[var(--tpl-primary)]",
1994
2011
  style: { opacity: "0.5" }
1995
- }), M("span", kr, [z(Pn, { text: e.block.src }, null, 8, ["text"])])], 4)) : e.block.src ? (l(), w(I, { key: 3 }, [e.block.linkUrl ? (l(), w("a", {
2012
+ }), M("span", Fr, [z($, { text: e.block.src }, null, 8, ["text"])])], 4)) : e.block.src ? (l(), w(I, { key: 3 }, [e.block.linkUrl ? (l(), w("a", {
1996
2013
  key: 0,
1997
2014
  href: e.block.linkUrl,
1998
2015
  target: "_blank",
@@ -2004,26 +2021,26 @@ var Tr = {
2004
2021
  src: E(x),
2005
2022
  alt: e.block.alt || E(i).image.altTextPlaceholder,
2006
2023
  style: F(y.value)
2007
- }, null, 12, jr)], 8, Ar)) : (l(), w("img", {
2024
+ }, null, 12, Lr)], 8, Ir)) : (l(), w("img", {
2008
2025
  key: 1,
2009
2026
  class: "tpl:border-0",
2010
2027
  src: E(x),
2011
2028
  alt: e.block.alt,
2012
2029
  style: F(y.value)
2013
- }, null, 12, Mr))], 64)) : (l(), w("div", Nr, [s.value ? (l(), w("button", {
2030
+ }, null, 12, Rr))], 64)) : (l(), w("div", zr, [s.value ? (l(), w("button", {
2014
2031
  key: 0,
2015
2032
  "aria-label": E(i).image.browseMedia,
2016
2033
  class: "tpl:flex tpl:items-center tpl:gap-1.5 tpl:rounded-md tpl:border tpl:px-3 tpl:py-2 tpl:text-xs tpl:font-medium tpl:transition-all tpl:duration-150 tpl:cursor-pointer tpl:border-[var(--tpl-border)] tpl:text-[var(--tpl-primary)] tpl:bg-[var(--tpl-bg)]",
2017
2034
  onClick: O(u, ["stop"])
2018
- }, [z(E(jt), {
2035
+ }, [z(E(Lt), {
2019
2036
  size: 14,
2020
2037
  "stroke-width": 1.5
2021
- }), L(" " + S(E(i).image.browseMedia), 1)], 8, Pr)) : (l(), w("span", Fr, S(E(i).image.clickToAdd), 1))]))], 4));
2038
+ }), L(" " + S(E(i).image.browseMedia), 1)], 8, Br)) : (l(), w("span", Vr, S(E(i).image.clickToAdd), 1))]))], 4));
2022
2039
  }
2023
- }), Lr = { class: "tpl:w-full" }, Rr = ["href"], zr = {
2040
+ }), Ur = { class: "tpl:w-full" }, Wr = ["href"], Gr = {
2024
2041
  key: 1,
2025
2042
  class: "tpl:flex tpl:items-center tpl:justify-center tpl:gap-2 tpl:rounded tpl:border tpl:border-dashed tpl:py-4 tpl:text-sm tpl:border-[var(--tpl-border)] tpl:text-[var(--tpl-text-dim)]"
2026
- }, Br = /* @__PURE__ */ R({
2043
+ }, Kr = /* @__PURE__ */ R({
2027
2044
  __name: "MenuBlock",
2028
2045
  props: {
2029
2046
  block: {},
@@ -2042,7 +2059,7 @@ var Tr = {
2042
2059
  function a(e) {
2043
2060
  return e || t.block.linkColor || t.block.color;
2044
2061
  }
2045
- return (t, o) => (l(), w("div", Lr, [i.value ? (l(), w("div", {
2062
+ return (t, o) => (l(), w("div", Ur, [i.value ? (l(), w("div", {
2046
2063
  key: 0,
2047
2064
  style: F(r.value)
2048
2065
  }, [(l(!0), w(I, null, f(e.block.items, (t, n) => (l(), w(I, { key: t.id }, [M("a", {
@@ -2054,15 +2071,15 @@ var Tr = {
2054
2071
  textDecoration: t.underline ? "underline" : "none"
2055
2072
  }),
2056
2073
  onClick: o[0] ||= O(() => {}, ["prevent"])
2057
- }, [z(Pn, { text: t.text || "..." }, null, 8, ["text"])], 12, Rr), n < e.block.items.length - 1 ? (l(), w("span", {
2074
+ }, [z($, { text: t.text || "..." }, null, 8, ["text"])], 12, Wr), n < e.block.items.length - 1 ? (l(), w("span", {
2058
2075
  key: 0,
2059
2076
  style: F({
2060
2077
  color: e.block.separatorColor,
2061
2078
  padding: `0 ${e.block.spacing}px`
2062
2079
  })
2063
- }, S(e.block.separator), 5)) : T("", !0)], 64))), 128))], 4)) : (l(), w("div", zr, [z(E(Ot), { size: 16 }), M("span", null, S(E(n).menu.addLinks), 1)]))]));
2080
+ }, S(e.block.separator), 5)) : T("", !0)], 64))), 128))], 4)) : (l(), w("div", Gr, [z(E(Pt), { size: 16 }), M("span", null, S(E(n).menu.addLinks), 1)]))]));
2064
2081
  }
2065
- }), Vr = /* @__PURE__ */ new Set([
2082
+ }), qr = /* @__PURE__ */ new Set([
2066
2083
  "http",
2067
2084
  "https",
2068
2085
  "mailto",
@@ -2072,7 +2089,7 @@ var Tr = {
2072
2089
  "sms",
2073
2090
  "xmpp",
2074
2091
  "cid"
2075
- ]), Hr = /* @__PURE__ */ new Set([
2092
+ ]), Jr = /* @__PURE__ */ new Set([
2076
2093
  "SCRIPT",
2077
2094
  "STYLE",
2078
2095
  "IFRAME",
@@ -2082,7 +2099,7 @@ var Tr = {
2082
2099
  "META",
2083
2100
  "BASE",
2084
2101
  "FORM"
2085
- ]), Ur = /* @__PURE__ */ new Set([
2102
+ ]), Yr = /* @__PURE__ */ new Set([
2086
2103
  "href",
2087
2104
  "xlink:href",
2088
2105
  "formaction",
@@ -2091,16 +2108,16 @@ var Tr = {
2091
2108
  "background",
2092
2109
  "poster"
2093
2110
  ]);
2094
- function Wr(e, t) {
2111
+ function Xr(e, t) {
2095
2112
  let n = e.replace(/[\t\n\r]/g, "").replace(/^[\u0000-\u0020]+/, "").trimEnd();
2096
2113
  if (!n || n.startsWith("#")) return !0;
2097
2114
  let r = /^([a-z][a-z0-9+.-]*):/i.exec(n);
2098
2115
  if (!r) return !0;
2099
2116
  let i = r[1].toLowerCase();
2100
- return Vr.has(i) ? !0 : t && i === "data" ? /^data:image\/(png|jpe?g|gif|webp|svg\+xml);/i.test(n) : !1;
2117
+ return qr.has(i) ? !0 : t && i === "data" ? /^data:image\/(png|jpe?g|gif|webp|svg\+xml);/i.test(n) : !1;
2101
2118
  }
2102
- function Gr(e) {
2103
- if (Hr.has(e.tagName)) {
2119
+ function Zr(e) {
2120
+ if (Jr.has(e.tagName)) {
2104
2121
  e.remove();
2105
2122
  return;
2106
2123
  }
@@ -2112,57 +2129,57 @@ function Gr(e) {
2112
2129
  e.removeAttribute(n);
2113
2130
  continue;
2114
2131
  }
2115
- if (Ur.has(t)) {
2116
- Wr(e.getAttribute(n) ?? "", !1) || e.removeAttribute(n);
2132
+ if (Yr.has(t)) {
2133
+ Xr(e.getAttribute(n) ?? "", !1) || e.removeAttribute(n);
2117
2134
  continue;
2118
2135
  }
2119
2136
  if (t === "src") {
2120
- Wr(e.getAttribute(n) ?? "", !0) || e.removeAttribute(n);
2137
+ Xr(e.getAttribute(n) ?? "", !0) || e.removeAttribute(n);
2121
2138
  continue;
2122
2139
  }
2123
2140
  t === "srcdoc" && e.removeAttribute(n);
2124
2141
  }
2125
2142
  let n = Array.from(e.children);
2126
- for (let e of n) Gr(e);
2143
+ for (let e of n) Zr(e);
2127
2144
  }
2128
- function Kr(e) {
2145
+ function Qr(e) {
2129
2146
  if (typeof DOMParser > "u") return e;
2130
2147
  let t = new DOMParser().parseFromString(`<!doctype html><body>${e}</body>`, "text/html").body, n = Array.from(t.children);
2131
- for (let e of n) Gr(e);
2148
+ for (let e of n) Zr(e);
2132
2149
  return t.innerHTML;
2133
2150
  }
2134
2151
  //#endregion
2135
2152
  //#region src/composables/useEditableTextBlock.ts
2136
- function qr(e) {
2137
- let t = p(Qe, []), { syntax: n } = q(), r = C(() => Kr(Oe(he(e(), t), n))), i = v(!1), a = v(null), { top: o, left: s } = Re(a), { toLocal: c } = St(), l = C(() => c({
2138
- top: o.value - 8,
2139
- left: s.value
2153
+ function $r(e) {
2154
+ let t = p(H, []), n = p(U, null), { syntax: r } = q(), i = C(() => n?.value ? Se(e(), t) : Ae(e(), t)), a = C(() => Qr(be(i.value, r))), o = v(!1), s = v(null), { top: c, left: l } = We(s), { toLocal: u } = Ot(), d = C(() => u({
2155
+ top: c.value - 8,
2156
+ left: l.value
2140
2157
  }));
2141
- function u() {
2142
- i.value = !0;
2158
+ function f() {
2159
+ o.value = !0;
2143
2160
  }
2144
- function d() {
2145
- i.value = !1;
2161
+ function m() {
2162
+ o.value = !1;
2146
2163
  }
2147
2164
  return {
2148
- isEditing: i,
2149
- blockRef: a,
2150
- toolbarPosition: l,
2151
- resolvedContent: r,
2152
- handleDoubleClick: u,
2153
- handleEditorDone: d
2165
+ isEditing: o,
2166
+ blockRef: s,
2167
+ toolbarPosition: d,
2168
+ resolvedContent: a,
2169
+ handleDoubleClick: f,
2170
+ handleEditorDone: m
2154
2171
  };
2155
2172
  }
2156
2173
  //#endregion
2157
2174
  //#region src/components/blocks/ParagraphBlock.vue?vue&type=script&setup=true&lang.ts
2158
- var Jr = ["innerHTML"], Yr = /* @__PURE__ */ R({
2175
+ var ei = ["innerHTML"], ti = /* @__PURE__ */ R({
2159
2176
  __name: "ParagraphBlock",
2160
2177
  props: {
2161
2178
  block: {},
2162
2179
  viewport: {}
2163
2180
  },
2164
2181
  setup(e) {
2165
- let t = e, n = b(() => import("./ParagraphEditor-J-1RLyi7.js")), { isEditing: r, blockRef: i, toolbarPosition: a, resolvedContent: o, handleDoubleClick: s, handleEditorDone: c } = qr(() => t.block.content);
2182
+ let t = e, n = b(() => import("./ParagraphEditor-CX1yks4N.js")), { isEditing: r, blockRef: i, toolbarPosition: a, resolvedContent: o, handleDoubleClick: s, handleEditorDone: c } = $r(() => t.block.content);
2166
2183
  return (t, u) => (l(), w("div", {
2167
2184
  ref_key: "blockRef",
2168
2185
  ref: i,
@@ -2181,54 +2198,54 @@ var Jr = ["innerHTML"], Yr = /* @__PURE__ */ R({
2181
2198
  key: 1,
2182
2199
  class: "tpl-text-content tpl:outline-none [&_a]:tpl:underline [&_li]:tpl:my-1 [&_ol]:tpl:my-2 [&_ol]:tpl:pl-6 [&_p]:tpl:m-0 [&_p]:tpl:mb-2 [&_p:last-child]:tpl:mb-0 [&_s]:tpl:line-through [&_sub]:tpl:align-sub [&_sub]:tpl:text-[0.75em] [&_sup]:tpl:align-super [&_sup]:tpl:text-[0.75em] [&_ul]:tpl:my-2 [&_ul]:tpl:pl-6",
2183
2200
  innerHTML: E(o)
2184
- }, null, 8, Jr))], 544));
2201
+ }, null, 8, ei))], 544));
2185
2202
  }
2186
2203
  });
2187
2204
  //#endregion
2188
2205
  //#region src/utils/blockComponentResolver.ts
2189
- function Xr(e) {
2206
+ function ni(e) {
2190
2207
  let t = { fontFamily: e.fontFamily };
2191
2208
  return e.textColor && (t.color = e.textColor), e.linkColor && (t["--tpl-doc-link-color"] = e.linkColor), e.linkUnderline && (t["--tpl-doc-link-underline"] = "underline"), t;
2192
2209
  }
2193
- function Zr(e, t, n) {
2210
+ function ri(e, t, n) {
2194
2211
  if (t) {
2195
2212
  let n = t.getComponent(e);
2196
2213
  if (n) return n;
2197
2214
  }
2198
2215
  return n[e.type] ?? null;
2199
2216
  }
2200
- function Qr(e) {
2217
+ function ii(e) {
2201
2218
  let { padding: t, backgroundColor: n } = e.styles, r = {
2202
2219
  padding: `${t.top}px ${t.right}px ${t.bottom}px ${t.left}px`,
2203
2220
  backgroundColor: n || "transparent"
2204
2221
  };
2205
2222
  return e.type === "section" && e.borderRadius && e.borderRadius > 0 && (r.borderRadius = `${e.borderRadius}px`), r;
2206
2223
  }
2207
- function $r(e) {
2224
+ function ai(e) {
2208
2225
  if (e.type !== "section" || !e.wrapper) return null;
2209
2226
  let t = e.wrapper, n = {};
2210
2227
  return t.backgroundColor && (n.backgroundColor = t.backgroundColor), t.padding && (n.padding = `${t.padding.top}px ${t.padding.right}px ${t.padding.bottom}px ${t.padding.left}px`), t.borderRadius && t.borderRadius > 0 && (n.borderRadius = `${t.borderRadius}px`), n;
2211
2228
  }
2212
2229
  //#endregion
2213
2230
  //#region src/components/blocks/BlockWrapper.vue?vue&type=script&setup=true&lang.ts
2214
- var ei = [
2231
+ var oi = [
2215
2232
  "data-block-id",
2216
2233
  "data-block-type",
2217
2234
  "data-tpl-picked"
2218
- ], ti = ["aria-label"], ni = [
2235
+ ], si = ["aria-label"], ci = [
2219
2236
  "aria-label",
2220
2237
  "aria-pressed",
2221
2238
  "title"
2222
- ], ri = ["aria-label", "title"], ii = ["aria-label", "title"], ai = ["aria-label", "title"], oi = {
2239
+ ], li = ["aria-label", "title"], ui = ["aria-label", "title"], di = ["aria-label", "title"], fi = {
2223
2240
  key: 1,
2224
2241
  class: "tpl-block-hidden-overlay tpl:pointer-events-none tpl:absolute tpl:inset-0 tpl:z-[5] tpl:flex tpl:items-center tpl:justify-center tpl:rounded-sm"
2225
- }, si = { class: "tpl:flex tpl:items-center tpl:gap-1 tpl:rounded tpl:px-2 tpl:py-1 tpl:text-[10px] tpl:font-medium tpl:bg-[var(--tpl-chrome-bg-elevated)] tpl:text-[var(--tpl-chrome-text-muted)] tpl:shadow-[var(--tpl-shadow-sm)]" }, ci = {
2242
+ }, pi = { class: "tpl:flex tpl:items-center tpl:gap-1 tpl:rounded tpl:px-2 tpl:py-1 tpl:text-[10px] tpl:font-medium tpl:bg-[var(--tpl-chrome-bg-elevated)] tpl:text-[var(--tpl-chrome-text-muted)] tpl:shadow-[var(--tpl-shadow-sm)]" }, mi = {
2226
2243
  key: 2,
2227
2244
  class: "tpl:absolute tpl:-left-1 tpl:top-1/2 tpl:z-[5] tpl:-translate-x-full tpl:-translate-y-1/2"
2228
- }, li = ["aria-label", "title"], ui = {
2245
+ }, hi = ["aria-label", "title"], gi = {
2229
2246
  key: 3,
2230
2247
  class: "tpl:absolute tpl:-right-1 tpl:-top-1 tpl:z-[5] tpl:translate-x-full"
2231
- }, di = ["aria-label"], fi = /*#__PURE__*/ Ht(/* @__PURE__ */ R({
2248
+ }, _i = ["aria-label"], vi = /*#__PURE__*/ Jt(/* @__PURE__ */ R({
2232
2249
  __name: "BlockWrapper",
2233
2250
  props: {
2234
2251
  block: {},
@@ -2240,7 +2257,7 @@ var ei = [
2240
2257
  },
2241
2258
  emits: ["select"],
2242
2259
  setup(e, { emit: t }) {
2243
- let n = b(() => import("./BlockIssueBadge-Da4yR-mh.js")), i = e, a = t, { t: o, format: s } = G(), c = p(gt, null), u = v(null), f = C(() => c?.liftedBlockId.value === i.block.id), m = C(() => f.value ? s(o.blockActions.dragLifted, { block: i.block.type }) : o.blockActions.drag);
2260
+ let n = b(() => import("./BlockIssueBadge-aanOjeyi.js")), i = e, a = t, { t: o, format: s } = G(), c = p(St, null), u = v(null), f = C(() => c?.liftedBlockId.value === i.block.id), m = C(() => f.value ? s(o.blockActions.dragLifted, { block: i.block.type }) : o.blockActions.drag);
2244
2261
  async function h() {
2245
2262
  await d(), u.value?.focus();
2246
2263
  }
@@ -2266,26 +2283,26 @@ var ei = [
2266
2283
  let _ = C(() => !i.viewport || !i.block.visibility ? !1 : i.block.visibility[i.viewport] === !1), y = C(() => i.previewMode === !0 && _.value), x = C(() => i.viewport ? {
2267
2284
  desktop: o.viewport.desktop,
2268
2285
  mobile: o.viewport.mobile
2269
- }[i.viewport] ?? i.viewport : ""), D = C(() => !!i.block.displayCondition), k = p(at, null), A = p(nt, null), N = p(pt, {}), P = C(() => N.savedBlocks?.isPicking.value === !0), ee = C(() => !i.nested && N.savedBlocks?.isAvailable.value === !0 && N.savedBlocks?.canCreate.value === !0), I = C(() => i.isSelected && !P.value), R = C(() => N.comments?.getBlockCount(i.block.id) ?? 0), B = C(() => {
2270
- let e = Qr(i.block), t = {
2286
+ }[i.viewport] ?? i.viewport : ""), D = C(() => !!i.block.displayCondition), k = p(dt, null), A = p(ct, null), N = p(yt, {}), P = C(() => N.savedBlocks?.isPicking.value === !0), ee = C(() => !i.nested && N.savedBlocks?.isAvailable.value === !0 && N.savedBlocks?.canCreate.value === !0), I = C(() => i.isSelected && !P.value), R = C(() => N.comments?.getBlockCount(i.block.id) ?? 0), B = C(() => {
2287
+ let e = ii(i.block), t = {
2271
2288
  padding: e.padding,
2272
2289
  backgroundColor: e.backgroundColor
2273
2290
  };
2274
2291
  return e.borderRadius && (t.borderRadius = e.borderRadius), t;
2275
- }), V = C(() => $r(i.block));
2276
- function te(e) {
2292
+ }), te = C(() => ai(i.block));
2293
+ function ne(e) {
2277
2294
  i.previewMode || (e.target?.closest("a") && e.preventDefault(), e.stopPropagation(), a("select"));
2278
2295
  }
2279
- function ne() {
2296
+ function re() {
2280
2297
  k?.deleteBlock(i.block.id);
2281
2298
  }
2282
- function re() {
2299
+ function ie() {
2283
2300
  k?.duplicateBlock(i.block);
2284
2301
  }
2285
- function ie() {
2302
+ function ae() {
2286
2303
  N.savedBlocks?.startPicking(i.block.id);
2287
2304
  }
2288
- function ae() {
2305
+ function oe() {
2289
2306
  A?.toggleBlock(i.block.id);
2290
2307
  }
2291
2308
  return (t, i) => y.value ? T("", !0) : (l(), w("div", {
@@ -2299,7 +2316,7 @@ var ei = [
2299
2316
  "data-block-id": e.block.id,
2300
2317
  "data-block-type": e.block.type,
2301
2318
  "data-tpl-picked": e.picked || void 0,
2302
- onClick: te
2319
+ onClick: ne
2303
2320
  }, [
2304
2321
  z(E(n), { "block-id": e.block.id }, null, 8, ["block-id"]),
2305
2322
  I.value ? (l(), w("div", {
@@ -2317,64 +2334,64 @@ var ei = [
2317
2334
  "aria-keyshortcuts": "Space Enter ArrowUp ArrowDown Escape",
2318
2335
  title: E(o).blockActions.drag,
2319
2336
  onKeydown: g
2320
- }, [z(E(Ft), {
2337
+ }, [z(E(Rt), {
2321
2338
  size: 14,
2322
2339
  "stroke-width": 1.5
2323
- })], 40, ni),
2340
+ })], 40, ci),
2324
2341
  M("button", {
2325
2342
  class: "tpl-block-action-btn tpl:flex tpl:size-7 tpl:cursor-pointer tpl:items-center tpl:justify-center tpl:rounded-sm tpl:border-none tpl:transition-colors tpl:duration-150",
2326
2343
  "aria-label": E(o).blockActions.duplicate,
2327
2344
  title: E(o).blockActions.duplicate,
2328
- onClick: O(re, ["stop"])
2329
- }, [z(E(Bt), {
2345
+ onClick: O(ie, ["stop"])
2346
+ }, [z(E(Nt), {
2330
2347
  size: 14,
2331
2348
  "stroke-width": 1.5
2332
- })], 8, ri),
2349
+ })], 8, li),
2333
2350
  ee.value ? (l(), w("button", {
2334
2351
  key: 0,
2335
2352
  class: "tpl-block-action-btn tpl:flex tpl:size-7 tpl:cursor-pointer tpl:items-center tpl:justify-center tpl:rounded-sm tpl:border-none tpl:transition-colors tpl:duration-150",
2336
2353
  "aria-label": E(o).blockActions.saveAsBlock,
2337
2354
  title: E(o).blockActions.saveAsBlock,
2338
- onClick: O(ie, ["stop"])
2339
- }, [z(E(Et), {
2355
+ onClick: O(ae, ["stop"])
2356
+ }, [z(E(Kt), {
2340
2357
  size: 14,
2341
2358
  "stroke-width": 1.5
2342
- })], 8, ii)) : T("", !0),
2359
+ })], 8, ui)) : T("", !0),
2343
2360
  M("button", {
2344
2361
  class: "tpl-block-action-btn tpl-block-delete-btn tpl:flex tpl:size-7 tpl:cursor-pointer tpl:items-center tpl:justify-center tpl:rounded-sm tpl:border-none tpl:transition-colors tpl:duration-150",
2345
2362
  "aria-label": E(o).blockActions.delete,
2346
2363
  title: E(o).blockActions.delete,
2347
- onClick: O(ne, ["stop"])
2348
- }, [z(E(At), {
2364
+ onClick: O(re, ["stop"])
2365
+ }, [z(E(It), {
2349
2366
  size: 14,
2350
2367
  "stroke-width": 1.5
2351
- })], 8, ai)
2352
- ], 8, ti)) : T("", !0),
2353
- _.value ? (l(), w("div", oi, [M("span", si, [z(E(Ct), {
2368
+ })], 8, di)
2369
+ ], 8, si)) : T("", !0),
2370
+ _.value ? (l(), w("div", fi, [M("span", pi, [z(E(Gt), {
2354
2371
  size: 12,
2355
2372
  "stroke-width": 1.5
2356
2373
  }), L(" " + S(E(s)(E(o).blockActions.hiddenOnViewport, { viewport: x.value })), 1)])])) : T("", !0),
2357
- D.value && !_.value ? (l(), w("div", ci, [M("button", {
2374
+ D.value && !_.value ? (l(), w("div", mi, [M("button", {
2358
2375
  class: "tpl-condition-toggle tpl:flex tpl:cursor-pointer tpl:items-center tpl:justify-center tpl:rounded-md tpl:p-1 tpl:transition-colors tpl:duration-150 tpl:bg-[var(--tpl-chrome-bg-elevated)] tpl:text-[var(--tpl-primary)] tpl:border tpl:border-[var(--tpl-border)]",
2359
2376
  "aria-label": E(o).blockActions.conditionToggle,
2360
2377
  title: e.block.displayCondition?.label,
2361
- onClick: O(ae, ["stop"])
2362
- }, [z(E(kt), {
2378
+ onClick: O(oe, ["stop"])
2379
+ }, [z(E(Wt), {
2363
2380
  size: 12,
2364
2381
  "stroke-width": 2
2365
- })], 8, li)])) : T("", !0),
2366
- R.value > 0 && !_.value ? (l(), w("div", ui, [M("button", {
2382
+ })], 8, hi)])) : T("", !0),
2383
+ R.value > 0 && !_.value ? (l(), w("div", gi, [M("button", {
2367
2384
  class: "tpl-comment-indicator tpl:flex tpl:min-h-6 tpl:min-w-6 tpl:cursor-pointer tpl:items-center tpl:justify-center tpl:gap-0.5 tpl:rounded-full tpl:border-none tpl:px-2 tpl:py-0.5 tpl:text-[10px] tpl:font-semibold tpl:transition-colors tpl:duration-150 tpl:bg-[var(--tpl-chrome-primary-light)] tpl:text-[var(--tpl-primary)]",
2368
2385
  "aria-label": E(s)(E(o).blockActions.comments, { count: String(R.value) }),
2369
2386
  onClick: i[0] ||= O((t) => E(N).comments?.openForBlock(e.block.id), ["stop"])
2370
- }, [z(E(Mt), {
2387
+ }, [z(E(Ht), {
2371
2388
  size: 12,
2372
2389
  "stroke-width": 2.5
2373
- }), L(" " + S(R.value), 1)], 8, di)])) : T("", !0),
2374
- V.value ? (l(), w("div", {
2390
+ }), L(" " + S(R.value), 1)], 8, _i)])) : T("", !0),
2391
+ te.value ? (l(), w("div", {
2375
2392
  key: 4,
2376
2393
  class: "tpl-section-wrapper",
2377
- style: F(V.value)
2394
+ style: F(te.value)
2378
2395
  }, [M("div", {
2379
2396
  class: "tpl-block-content",
2380
2397
  style: F(B.value)
@@ -2383,31 +2400,31 @@ var ei = [
2383
2400
  class: "tpl-block-content",
2384
2401
  style: F(B.value)
2385
2402
  }, [r(t.$slots, "default", {}, void 0, !0)], 4))
2386
- ], 10, ei));
2403
+ ], 10, oi));
2387
2404
  }
2388
2405
  }), [["__scopeId", "data-v-43c10a08"]]);
2389
2406
  //#endregion
2390
2407
  //#region src/utils/unwrapParagraph.ts
2391
- function pi(e) {
2408
+ function yi(e) {
2392
2409
  let t = e.match(/^\s*<p\b[^>]*>([\s\S]*)<\/p>\s*$/);
2393
2410
  return !t || /<\/p>\s*<p\b/i.test(t[1]) ? e : t[1];
2394
2411
  }
2395
2412
  //#endregion
2396
2413
  //#region src/components/blocks/TitleBlock.vue
2397
- var mi = /* @__PURE__ */ R({
2414
+ var bi = /* @__PURE__ */ R({
2398
2415
  __name: "TitleBlock",
2399
2416
  props: {
2400
2417
  block: {},
2401
2418
  viewport: {}
2402
2419
  },
2403
2420
  setup(e) {
2404
- let t = e, n = b(() => import("./TitleEditor-J1vgU_J6.js")), { isEditing: r, blockRef: i, toolbarPosition: a, resolvedContent: o, handleDoubleClick: s, handleEditorDone: u } = qr(() => t.block.content), d = C(() => {
2421
+ let t = e, n = b(() => import("./TitleEditor-08KM_VzZ.js")), { isEditing: r, blockRef: i, toolbarPosition: a, resolvedContent: o, handleDoubleClick: s, handleEditorDone: u } = $r(() => t.block.content), d = C(() => {
2405
2422
  let e = {
2406
- fontSize: `${ae[t.block.level]}px`,
2423
+ fontSize: `${de[t.block.level]}px`,
2407
2424
  textAlign: t.block.textAlign
2408
2425
  };
2409
2426
  return t.block.color && (e.color = t.block.color), t.block.fontFamily && (e.fontFamily = t.block.fontFamily), e;
2410
- }), f = C(() => `h${t.block.level}`), p = C(() => pi(o.value));
2427
+ }), f = C(() => `h${t.block.level}`), p = C(() => yi(o.value));
2411
2428
  return (t, o) => (l(), w("div", {
2412
2429
  ref_key: "blockRef",
2413
2430
  ref: i,
@@ -2433,16 +2450,16 @@ var mi = /* @__PURE__ */ R({
2433
2450
  });
2434
2451
  //#endregion
2435
2452
  //#region src/utils/sectionColumnDrop.ts
2436
- function hi(e) {
2453
+ function xi(e) {
2437
2454
  return e.dataset.blockType !== "section" && e.dataset.paletteType !== "section";
2438
2455
  }
2439
2456
  //#endregion
2440
2457
  //#region src/components/blocks/SectionBlock.vue?vue&type=script&setup=true&lang.ts
2441
- var gi = { class: "tpl:w-full" }, _i = {
2458
+ var Si = { class: "tpl:w-full" }, Ci = {
2442
2459
  key: 0,
2443
2460
  "data-testid": "section-drop-hint",
2444
2461
  class: "tpl:pointer-events-none tpl:absolute tpl:inset-0 tpl:flex tpl:items-center tpl:justify-center tpl:text-xs tpl:text-[var(--tpl-chrome-text-dim)]"
2445
- }, vi = /* @__PURE__ */ R({
2462
+ }, wi = /* @__PURE__ */ R({
2446
2463
  __name: "SectionBlock",
2447
2464
  props: {
2448
2465
  block: {},
@@ -2450,13 +2467,13 @@ var gi = { class: "tpl:w-full" }, _i = {
2450
2467
  },
2451
2468
  setup(e) {
2452
2469
  let t = {
2453
- title: mi,
2454
- paragraph: Yr,
2455
- image: Ir,
2456
- button: Ln,
2457
- divider: gr,
2458
- custom: mr
2459
- }, n = e, { t: r } = G(), i = Ve(W, "SectionBlock"), o = p(nt, null), s = p(dt, null), u = p(pt, {});
2470
+ title: bi,
2471
+ paragraph: ti,
2472
+ image: Hr,
2473
+ button: Hn,
2474
+ divider: Sr,
2475
+ custom: br
2476
+ }, n = e, { t: r } = G(), i = Ze(W, "SectionBlock"), o = p(ct, null), s = p(_t, null), u = p(yt, {});
2460
2477
  function d(e) {
2461
2478
  let t = u.savedBlocks;
2462
2479
  if (t?.isPicking.value) {
@@ -2491,7 +2508,7 @@ var gi = { class: "tpl:w-full" }, _i = {
2491
2508
  a[e] = r, i.updateBlock(n.block.id, { children: a });
2492
2509
  }
2493
2510
  function b(e) {
2494
- return Zr(e, s, t);
2511
+ return ri(e, s, t);
2495
2512
  }
2496
2513
  function x(e, t) {
2497
2514
  e.type === "custom" && i.updateBlock(e.id, {
@@ -2499,7 +2516,7 @@ var gi = { class: "tpl:w-full" }, _i = {
2499
2516
  dataSourceFetched: t.dataSourceFetched
2500
2517
  });
2501
2518
  }
2502
- return (t, n) => (l(), w("div", gi, [M("div", { class: j(["tpl:flex tpl:gap-0", { "tpl:flex-col": _.value }]) }, [(l(!0), w(I, null, f(g.value, (t, n) => (l(), w("div", {
2519
+ return (t, n) => (l(), w("div", Si, [M("div", { class: j(["tpl:flex tpl:gap-0", { "tpl:flex-col": _.value }]) }, [(l(!0), w(I, null, f(g.value, (t, n) => (l(), w("div", {
2503
2520
  key: n,
2504
2521
  class: j(["tpl:relative tpl:min-h-[60px] tpl:rounded", v(n).length === 0 ? "tpl:border tpl:border-dashed tpl:border-[var(--tpl-border)]" : ""]),
2505
2522
  style: F({ width: _.value ? "100%" : m.value[n] })
@@ -2508,7 +2525,7 @@ var gi = { class: "tpl:w-full" }, _i = {
2508
2525
  group: {
2509
2526
  name: "blocks",
2510
2527
  pull: !0,
2511
- put: (e, t, n) => E(hi)(n)
2528
+ put: (e, t, n) => E(xi)(n)
2512
2529
  },
2513
2530
  animation: 150,
2514
2531
  "ghost-class": "tpl-ghost",
@@ -2521,7 +2538,7 @@ var gi = { class: "tpl:w-full" }, _i = {
2521
2538
  class: "tpl:min-h-[60px]",
2522
2539
  "onUpdate:modelValue": (e) => y(n, e)
2523
2540
  }, {
2524
- default: h(() => [(l(!0), w(I, null, f(v(n), (t) => a((l(), w("div", { key: t.id }, [z(fi, {
2541
+ default: h(() => [(l(!0), w(I, null, f(v(n), (t) => a((l(), w("div", { key: t.id }, [z(vi, {
2525
2542
  block: t,
2526
2543
  "is-selected": E(i).state.selectedBlockId === t.id,
2527
2544
  viewport: e.viewport,
@@ -2553,13 +2570,13 @@ var gi = { class: "tpl:w-full" }, _i = {
2553
2570
  "model-value",
2554
2571
  "group",
2555
2572
  "onUpdate:modelValue"
2556
- ]), v(n).length === 0 ? (l(), w("div", _i, [M("span", null, S(E(r).section.dropHere), 1)])) : T("", !0)], 6))), 128))], 2)]));
2573
+ ]), v(n).length === 0 ? (l(), w("div", Ci, [M("span", null, S(E(r).section.dropHere), 1)])) : T("", !0)], 6))), 128))], 2)]));
2557
2574
  }
2558
- }), yi = Te, bi = {
2575
+ }), Ti = me, Ei = {
2559
2576
  small: 24,
2560
2577
  medium: 32,
2561
2578
  large: 48
2562
- }, xi = [
2579
+ }, Di = [
2563
2580
  "facebook",
2564
2581
  "twitter",
2565
2582
  "instagram",
@@ -2577,11 +2594,11 @@ var gi = { class: "tpl:w-full" }, _i = {
2577
2594
  "github",
2578
2595
  "dribbble",
2579
2596
  "behance"
2580
- ], Si = [
2597
+ ], Oi = [
2581
2598
  "width",
2582
2599
  "height",
2583
2600
  "fill"
2584
- ], Ci = ["d"], wi = /* @__PURE__ */ R({
2601
+ ], ki = ["d"], Ai = /* @__PURE__ */ R({
2585
2602
  __name: "SocialIconSvg",
2586
2603
  props: {
2587
2604
  platform: {},
@@ -2589,7 +2606,7 @@ var gi = { class: "tpl:w-full" }, _i = {
2589
2606
  iconSize: {}
2590
2607
  },
2591
2608
  setup(e) {
2592
- let t = e, n = C(() => yi[t.platform]), r = C(() => bi[t.iconSize]), i = C(() => {
2609
+ let t = e, n = C(() => Ti[t.platform]), r = C(() => Ei[t.iconSize]), i = C(() => {
2593
2610
  let e = {
2594
2611
  display: "inline-flex",
2595
2612
  alignItems: "center",
@@ -2633,12 +2650,12 @@ var gi = { class: "tpl:w-full" }, _i = {
2633
2650
  viewBox: "0 0 24 24",
2634
2651
  fill: o.value,
2635
2652
  xmlns: "http://www.w3.org/2000/svg"
2636
- }, [M("path", { d: n.value.path }, null, 8, Ci)], 8, Si))], 4));
2653
+ }, [M("path", { d: n.value.path }, null, 8, ki)], 8, Oi))], 4));
2637
2654
  }
2638
- }), Ti = { class: "tpl:w-full" }, Ei = ["href"], Di = {
2655
+ }), ji = { class: "tpl:w-full" }, Mi = ["href"], Ni = {
2639
2656
  key: 1,
2640
2657
  class: "tpl:flex tpl:items-center tpl:justify-center tpl:gap-2 tpl:rounded tpl:border tpl:border-dashed tpl:py-4 tpl:text-sm tpl:border-[var(--tpl-border)] tpl:text-[var(--tpl-text-dim)]"
2641
- }, Oi = /* @__PURE__ */ R({
2658
+ }, Pi = /* @__PURE__ */ R({
2642
2659
  __name: "SocialIconsBlock",
2643
2660
  props: {
2644
2661
  block: {},
@@ -2651,7 +2668,7 @@ var gi = { class: "tpl:w-full" }, _i = {
2651
2668
  gap: `${t.block.spacing}px`,
2652
2669
  justifyContent: t.block.align === "left" ? "flex-start" : t.block.align === "right" ? "flex-end" : "center"
2653
2670
  })), i = C(() => t.block.icons.length > 0);
2654
- return (t, a) => (l(), w("div", Ti, [i.value ? (l(), w("div", {
2671
+ return (t, a) => (l(), w("div", ji, [i.value ? (l(), w("div", {
2655
2672
  key: 0,
2656
2673
  style: F(r.value)
2657
2674
  }, [(l(!0), w(I, null, f(e.block.icons, (t) => (l(), w("a", {
@@ -2659,7 +2676,7 @@ var gi = { class: "tpl:w-full" }, _i = {
2659
2676
  href: t.url || "#",
2660
2677
  class: "tpl:cursor-default",
2661
2678
  onClick: a[0] ||= O(() => {}, ["prevent"])
2662
- }, [z(wi, {
2679
+ }, [z(Ai, {
2663
2680
  platform: t.platform,
2664
2681
  "icon-style": e.block.iconStyle,
2665
2682
  "icon-size": e.block.iconSize
@@ -2667,44 +2684,44 @@ var gi = { class: "tpl:w-full" }, _i = {
2667
2684
  "platform",
2668
2685
  "icon-style",
2669
2686
  "icon-size"
2670
- ])], 8, Ei))), 128))], 4)) : (l(), w("div", Di, [z(E(Pt), { size: 16 }), M("span", null, S(E(n).social.addIcons), 1)]))]));
2687
+ ])], 8, Mi))), 128))], 4)) : (l(), w("div", Ni, [z(E(kt), { size: 16 }), M("span", null, S(E(n).social.addIcons), 1)]))]));
2671
2688
  }
2672
- }), ki = { class: "tpl:w-full" }, Ai = {
2689
+ }), Fi = { class: "tpl:w-full" }, Ii = {
2673
2690
  key: 0,
2674
2691
  class: "tpl:absolute tpl:rounded tpl:px-2 tpl:py-0.5 tpl:text-[10px] tpl:font-medium",
2675
2692
  style: {
2676
2693
  "background-color": "var(--tpl-bg-hover)",
2677
2694
  color: "var(--tpl-text-dim)"
2678
2695
  }
2679
- }, ji = /* @__PURE__ */ R({
2696
+ }, Li = /* @__PURE__ */ R({
2680
2697
  __name: "SpacerBlock",
2681
2698
  props: {
2682
2699
  block: {},
2683
2700
  viewport: {}
2684
2701
  },
2685
2702
  setup(e) {
2686
- let t = e, n = Ve(W, "SpacerBlock"), r = C(() => ({
2703
+ let t = e, n = Ze(W, "SpacerBlock"), r = C(() => ({
2687
2704
  height: `${t.block.height}px`,
2688
2705
  minHeight: `${t.block.height}px`,
2689
2706
  ...n.state.previewMode ? {} : { borderColor: "var(--tpl-border)" }
2690
2707
  }));
2691
- return (t, i) => (l(), w("div", ki, [M("div", {
2708
+ return (t, i) => (l(), w("div", Fi, [M("div", {
2692
2709
  style: F(r.value),
2693
2710
  class: j(["tpl:relative tpl:flex tpl:items-center tpl:justify-center", { "tpl:border-y tpl:border-dashed": !E(n).state.previewMode }])
2694
- }, [E(n).state.previewMode ? T("", !0) : (l(), w("span", Ai, S(e.block.height) + "px ", 1))], 6)]));
2711
+ }, [E(n).state.previewMode ? T("", !0) : (l(), w("span", Ii, S(e.block.height) + "px ", 1))], 6)]));
2695
2712
  }
2696
- }), Mi = { class: "tpl:w-full" }, Ni = { key: 0 }, Pi = [
2713
+ }), Ri = { class: "tpl:w-full" }, zi = { key: 0 }, Bi = [
2697
2714
  "aria-label",
2698
2715
  "data-placeholder",
2699
2716
  "onBlur"
2700
- ], Fi = [
2717
+ ], Vi = [
2701
2718
  "aria-label",
2702
2719
  "data-placeholder",
2703
2720
  "onBlur"
2704
- ], Ii = {
2721
+ ], Hi = {
2705
2722
  key: 1,
2706
2723
  class: "tpl:flex tpl:items-center tpl:justify-center tpl:gap-2 tpl:rounded tpl:border tpl:border-dashed tpl:py-4 tpl:text-sm tpl:border-[var(--tpl-border)] tpl:text-[var(--tpl-text-dim)]"
2707
- }, Li = /*#__PURE__*/ Ht(/* @__PURE__ */ R({
2724
+ }, Ui = /*#__PURE__*/ Jt(/* @__PURE__ */ R({
2708
2725
  __name: "TableBlock",
2709
2726
  props: {
2710
2727
  block: {},
@@ -2718,7 +2735,7 @@ var gi = { class: "tpl:w-full" }, _i = {
2718
2735
  updated(e, t) {
2719
2736
  t.value !== t.oldValue && e.getRootNode().activeElement !== e && (e.textContent = t.value ?? "");
2720
2737
  }
2721
- }, n = e, { t: r } = G(), i = Ve(W, "TableBlock"), o = C(() => n.block.rows.length > 0), s = C(() => {
2738
+ }, n = e, { t: r } = G(), i = Ze(W, "TableBlock"), o = C(() => n.block.rows.length > 0), s = C(() => {
2722
2739
  let e = {
2723
2740
  width: "100%",
2724
2741
  borderCollapse: "collapse",
@@ -2749,11 +2766,11 @@ var gi = { class: "tpl:w-full" }, _i = {
2749
2766
  } : n);
2750
2767
  i.updateBlock(n.block.id, { rows: o });
2751
2768
  }
2752
- return (e, n) => (l(), w("div", Mi, [o.value ? (l(), w("table", {
2769
+ return (e, n) => (l(), w("div", Ri, [o.value ? (l(), w("table", {
2753
2770
  key: 0,
2754
2771
  style: F(s.value),
2755
2772
  class: "tpl-table-editable"
2756
- }, [d.value ? (l(), w("thead", Ni, [M("tr", null, [(l(!0), w(I, null, f(d.value.cells, (e) => a((l(), w("th", {
2773
+ }, [d.value ? (l(), w("thead", zi, [M("tr", null, [(l(!0), w(I, null, f(d.value.cells, (e) => a((l(), w("th", {
2757
2774
  key: e.id,
2758
2775
  style: F(u.value),
2759
2776
  "aria-label": E(r).table.cellPlaceholder,
@@ -2762,7 +2779,7 @@ var gi = { class: "tpl:w-full" }, _i = {
2762
2779
  onBlur: (t) => h(d.value.id, e.id, t),
2763
2780
  onKeydown: n[0] ||= x(O((e) => e.target.blur(), ["prevent"]), ["enter"]),
2764
2781
  onClick: O(m, ["stop"])
2765
- }, null, 44, Pi)), [[t, e.content]])), 128))])])) : T("", !0), M("tbody", null, [(l(!0), w(I, null, f(p.value, (e) => (l(), w("tr", { key: e.id }, [(l(!0), w(I, null, f(e.cells, (i) => a((l(), w("td", {
2782
+ }, null, 44, Bi)), [[t, e.content]])), 128))])])) : T("", !0), M("tbody", null, [(l(!0), w(I, null, f(p.value, (e) => (l(), w("tr", { key: e.id }, [(l(!0), w(I, null, f(e.cells, (i) => a((l(), w("td", {
2766
2783
  key: i.id,
2767
2784
  style: F(c.value),
2768
2785
  "aria-label": E(r).table.cellPlaceholder,
@@ -2771,9 +2788,9 @@ var gi = { class: "tpl:w-full" }, _i = {
2771
2788
  onBlur: (t) => h(e.id, i.id, t),
2772
2789
  onKeydown: n[1] ||= x(O((e) => e.target.blur(), ["prevent"]), ["enter"]),
2773
2790
  onClick: O(m, ["stop"])
2774
- }, null, 44, Fi)), [[t, i.content]])), 128))]))), 128))])], 4)) : (l(), w("div", Ii, [z(E(Nt), { size: 16 }), M("span", null, S(E(r).table.empty), 1)]))]));
2791
+ }, null, 44, Vi)), [[t, i.content]])), 128))]))), 128))])], 4)) : (l(), w("div", Hi, [z(E(Ft), { size: 16 }), M("span", null, S(E(r).table.empty), 1)]))]));
2775
2792
  }
2776
- }), [["__scopeId", "data-v-963ac422"]]), Ri = /* @__PURE__ */ R({
2793
+ }), [["__scopeId", "data-v-963ac422"]]), Wi = /* @__PURE__ */ R({
2777
2794
  __name: "VideoPlayButton",
2778
2795
  props: { hoverEffect: {
2779
2796
  type: Boolean,
@@ -2791,7 +2808,7 @@ var gi = { class: "tpl:w-full" }, _i = {
2791
2808
  });
2792
2809
  //#endregion
2793
2810
  //#region src/utils/videoThumbnail.ts
2794
- function zi(e) {
2811
+ function Gi(e) {
2795
2812
  if (!e) return {
2796
2813
  platform: "unknown",
2797
2814
  videoId: null,
@@ -2823,25 +2840,25 @@ function zi(e) {
2823
2840
  thumbnailUrl: null
2824
2841
  };
2825
2842
  }
2826
- function Bi(e, t) {
2827
- return t || zi(e).thumbnailUrl;
2843
+ function Ki(e, t) {
2844
+ return t || Gi(e).thumbnailUrl;
2828
2845
  }
2829
2846
  //#endregion
2830
2847
  //#region src/components/blocks/VideoBlock.vue?vue&type=script&setup=true&lang.ts
2831
- var Vi = ["src", "alt"], Hi = {
2848
+ var qi = ["src", "alt"], Ji = {
2832
2849
  class: "tpl:max-w-full tpl:truncate tpl:px-3 tpl:text-xs tpl:font-medium tpl:text-[var(--tpl-primary)]",
2833
2850
  style: { opacity: "0.7" }
2834
- }, Ui = ["href"], Wi = ["src", "alt"], Gi = ["src", "alt"], Ki = {
2851
+ }, Yi = ["href"], Xi = ["src", "alt"], Zi = ["src", "alt"], Qi = {
2835
2852
  key: 3,
2836
2853
  class: "tpl:flex tpl:min-h-[150px] tpl:flex-col tpl:items-center tpl:justify-center tpl:gap-2 tpl:rounded tpl:border-2 tpl:border-dashed tpl:text-sm tpl:border-[var(--tpl-border-light)] tpl:bg-[var(--tpl-bg-hover)] tpl:text-[var(--tpl-text-dim)]"
2837
- }, qi = /* @__PURE__ */ R({
2854
+ }, $i = /* @__PURE__ */ R({
2838
2855
  __name: "VideoBlock",
2839
2856
  props: {
2840
2857
  block: {},
2841
2858
  viewport: {}
2842
2859
  },
2843
2860
  setup(e) {
2844
- let t = e, { t: n } = G(), { syntax: r } = q(), i = C(() => H(t.block.url, r) || H(t.block.thumbnailUrl, r)), a = X(() => i.value ? void 0 : t.block.thumbnailUrl || void 0), o = X(() => i.value ? t.block.placeholderUrl : void 0), s = C(() => i.value ? null : t.block.thumbnailUrl ? a.value ?? null : Bi(t.block.url)), c = C(() => ({ textAlign: t.block.align })), u = C(() => {
2861
+ let t = e, { t: n } = G(), { syntax: r } = q(), i = C(() => je(t.block.url, r) || je(t.block.thumbnailUrl, r)), a = X(() => i.value ? void 0 : t.block.thumbnailUrl || void 0), o = X(() => i.value ? t.block.placeholderUrl : void 0), s = C(() => i.value ? null : t.block.thumbnailUrl ? a.value ?? null : Ki(t.block.url)), c = C(() => ({ textAlign: t.block.align })), u = C(() => {
2845
2862
  let e = t.block.align;
2846
2863
  return {
2847
2864
  maxWidth: "100%",
@@ -2850,7 +2867,7 @@ var Vi = ["src", "alt"], Hi = {
2850
2867
  marginLeft: e === "center" || e === "right" ? "auto" : void 0,
2851
2868
  marginRight: e === "center" ? "auto" : void 0
2852
2869
  };
2853
- }), d = C(() => H(t.block.url, r) ? t.block.url : t.block.thumbnailUrl);
2870
+ }), d = C(() => je(t.block.url, r) ? t.block.url : t.block.thumbnailUrl);
2854
2871
  return (t, r) => (l(), w("div", {
2855
2872
  class: "tpl:w-full",
2856
2873
  style: F(c.value)
@@ -2862,16 +2879,16 @@ var Vi = ["src", "alt"], Hi = {
2862
2879
  class: "tpl:w-full tpl:border-0",
2863
2880
  src: E(o),
2864
2881
  alt: e.block.alt
2865
- }, null, 8, Vi), z(Ri)], 4)) : i.value ? (l(), w("div", {
2882
+ }, null, 8, qi), z(Wi)], 4)) : i.value ? (l(), w("div", {
2866
2883
  key: 1,
2867
2884
  class: "tpl:relative tpl:!flex tpl:min-h-[150px] tpl:flex-col tpl:items-center tpl:justify-center tpl:gap-2 tpl:rounded tpl:border-2 tpl:border-dashed tpl:text-center tpl:bg-[var(--tpl-bg-elevated)]",
2868
2885
  style: F([{ "border-color": "color-mix(in srgb, var(--tpl-primary) 40%, transparent)" }, u.value])
2869
- }, [z(E(It), {
2886
+ }, [z(E(Bt), {
2870
2887
  size: 36,
2871
2888
  "stroke-width": 1.5,
2872
2889
  class: "tpl:text-[var(--tpl-primary)]",
2873
2890
  style: { opacity: "0.5" }
2874
- }), M("span", Hi, [z(Pn, { text: d.value }, null, 8, ["text"])])], 4)) : s.value ? (l(), w(I, { key: 2 }, [e.block.url ? (l(), w("a", {
2891
+ }), M("span", Ji, [z($, { text: d.value }, null, 8, ["text"])])], 4)) : s.value ? (l(), w(I, { key: 2 }, [e.block.url ? (l(), w("a", {
2875
2892
  key: 0,
2876
2893
  href: e.block.url,
2877
2894
  target: "_blank",
@@ -2883,7 +2900,7 @@ var Vi = ["src", "alt"], Hi = {
2883
2900
  class: "tpl:w-full tpl:border-0",
2884
2901
  src: s.value,
2885
2902
  alt: e.block.alt
2886
- }, null, 8, Wi), z(Ri, { "hover-effect": "" })], 12, Ui)) : (l(), w("div", {
2903
+ }, null, 8, Xi), z(Wi, { "hover-effect": "" })], 12, Yi)) : (l(), w("div", {
2887
2904
  key: 1,
2888
2905
  class: "tpl:relative tpl:inline-block",
2889
2906
  style: F(u.value)
@@ -2891,48 +2908,48 @@ var Vi = ["src", "alt"], Hi = {
2891
2908
  class: "tpl:w-full tpl:border-0",
2892
2909
  src: s.value,
2893
2910
  alt: e.block.alt
2894
- }, null, 8, Gi), z(Ri)], 4))], 64)) : (l(), w("div", Ki, [z(E(It), {
2911
+ }, null, 8, Zi), z(Wi)], 4))], 64)) : (l(), w("div", Qi, [z(E(Bt), {
2895
2912
  size: 40,
2896
2913
  "stroke-width": 1.5,
2897
2914
  class: "tpl:text-[var(--tpl-border-light)]"
2898
2915
  }), M("span", null, S(E(n).video.addVideo), 1)]))], 4));
2899
2916
  }
2900
- }), Ji = {
2901
- section: vi,
2902
- title: mi,
2903
- paragraph: Yr,
2904
- image: Ir,
2905
- button: Ln,
2906
- divider: gr,
2907
- video: qi,
2908
- social: Oi,
2909
- menu: Br,
2910
- table: Li,
2911
- spacer: ji,
2912
- html: Sr,
2913
- countdown: b(() => import("./CountdownBlock-Bffpoppw.js"))
2917
+ }), ea = {
2918
+ section: wi,
2919
+ title: bi,
2920
+ paragraph: ti,
2921
+ image: Hr,
2922
+ button: Hn,
2923
+ divider: Sr,
2924
+ video: $i,
2925
+ social: Pi,
2926
+ menu: Kr,
2927
+ table: Ui,
2928
+ spacer: Li,
2929
+ html: Or,
2930
+ countdown: b(() => import("./CountdownBlock-CoBmvQKv.js"))
2914
2931
  };
2915
- function Yi(e) {
2932
+ function ta(e) {
2916
2933
  let { editor: t, config: n, translations: r, fontsManager: a } = e, { t: s, format: c } = G(r);
2917
2934
  t.setUiTheme(n.uiTheme ?? "auto");
2918
- let { resolvedTheme: l } = gn(C(() => t.state.uiTheme)), d = v(n.theme ?? {}), { themeStyles: f } = vn({
2935
+ let { resolvedTheme: l } = Sn(C(() => t.state.uiTheme)), d = v(n.theme ?? {}), { themeStyles: f } = wn({
2919
2936
  themeOverrides: d,
2920
2937
  resolvedTheme: l,
2921
2938
  extraStyles: e.themeExtraStyles
2922
- }), p = Yt({
2939
+ }), p = tn({
2923
2940
  content: t.content,
2924
2941
  setContent: (e, n) => t.setContent(e, n),
2925
2942
  ...e.historyOptions
2926
2943
  });
2927
- tn(t, p);
2928
- let m = Zt({
2944
+ cn(t, p);
2945
+ let m = rn({
2929
2946
  addBlock: t.addBlock,
2930
2947
  removeBlock: t.removeBlock,
2931
2948
  updateBlock: t.updateBlock,
2932
2949
  selectBlock: t.selectBlock,
2933
2950
  findBlockLocation: t.findBlockLocation,
2934
2951
  blockDefaults: n.blockDefaults
2935
- }), h = $t(t), g = e.autoSaveOptions !== null && e.autoSaveOptions !== void 0 ? Qt({
2952
+ }), h = on(t), g = e.autoSaveOptions !== null && e.autoSaveOptions !== void 0 ? an({
2936
2953
  content: t.content,
2937
2954
  isDirty: () => t.state.isDirty,
2938
2955
  ...e.autoSaveOptions
@@ -2940,34 +2957,34 @@ function Yi(e) {
2940
2957
  g && (_ = B(p.isNavigating, (e) => {
2941
2958
  e ? g.pause() : g.resume();
2942
2959
  }));
2943
- let y = hn(t, {
2960
+ let y = xn(t, {
2944
2961
  t: s,
2945
2962
  format: c
2946
- }, n.customBlocks ?? []), b = xt(n.colors);
2963
+ }, n.customBlocks ?? []), b = Dt(n.colors);
2947
2964
  if (b.allowCustomIgnored && Q.warn("config.colors.allowCustom: false is ignored without presets — keeping the color wheel and hex input so a color can still be chosen."), b.invalidPresets.length > 0 && Q.warn(`config.colors.presets skipped invalid entries: ${b.invalidPresets.join(", ")} — presets must be hex colors (#rgb or #rrggbb).`), b.allowCustom === !1) {
2948
- let e = On(b.presets, n.blockDefaults, n.templateDefaults);
2965
+ let e = Pn(b.presets, n.blockDefaults, n.templateDefaults);
2949
2966
  e.length > 0 && Q.warn(`config.colors locks custom colours, but these block/template default colours fall outside colors.presets: ${e.join(", ")}. New blocks start on a colour the palette can't reselect — set blockDefaults / templateDefaults from the same palette.`);
2950
2967
  }
2951
- let x = bn();
2952
- Tn(x, Ji);
2968
+ let x = En();
2969
+ jn(x, ea);
2953
2970
  let S = /* @__PURE__ */ new Set();
2954
2971
  function w(e) {
2955
2972
  for (let t of e) {
2956
- x.registerCustom(t, mr);
2957
- for (let e of An(t, b)) S.has(e.id) || (S.add(e.id), Q.warn(e.message));
2973
+ x.registerCustom(t, br);
2974
+ for (let e of In(t, b)) S.has(e.id) || (S.add(e.id), Q.warn(e.message));
2958
2975
  }
2959
2976
  }
2960
2977
  n.customBlocks?.length && w(n.customBlocks);
2961
- let T = sn();
2978
+ let T = pn();
2962
2979
  if (i() && o(T.dispose), e.containerEl) {
2963
2980
  let t = e.containerEl;
2964
- U(document, "pointerdown", (e) => {
2981
+ He(document, "pointerdown", (e) => {
2965
2982
  let n = t.value;
2966
2983
  n && (e.composedPath?.() ?? []).includes(n) && T.claim();
2967
2984
  }, { capture: !0 });
2968
2985
  }
2969
2986
  function E(r) {
2970
- T.isActive() && Mn(r, {
2987
+ T.isActive() && Rn(r, {
2971
2988
  history: p,
2972
2989
  selectBlock: (e) => t.selectBlock(e),
2973
2990
  getSelectedBlockId: () => t.state.selectedBlockId,
@@ -2979,21 +2996,23 @@ function Yi(e) {
2979
2996
  onCancelPick: () => e.capabilities?.savedBlocks?.cancelPicking()
2980
2997
  });
2981
2998
  }
2982
- U(document, "keydown", E);
2999
+ He(document, "keydown", E);
2983
3000
  let D = v(null);
2984
- u(it, e.editorRoot ?? document), u(Je, D), u(Xe, r), u(W, t), u(mt, p), u(at, m), u(nt, h), u($e, a), u(Ke, f), u(vt, l), u(et, n.blockDefaults), u(dt, x), u(rt, n.customBlocks ?? []), u(qe, n.paletteBlocks), u(_t, En(n.htmlBlockPreview)), u(ct, b), u(ft, xn(t.content, x));
2985
- let O = ge(n.mergeTags?.syntax);
2986
- u(Qe, n.mergeTags?.tags ?? []), u(Ye, O), u(ot, n.mergeTags?.onRequest ?? null), u(We, n.mergeTags?.autocomplete !== !1), u(Ue, ln()), u(He, n.logicTags?.tags ?? []), u(Ze, n.logicTags?.pairs ?? []), u(st, n.logicTags?.onRequest ?? null), u(ht, un()), u(Be, n.onRequestMedia ?? null), u(tt, n.resolveImageUrl ? cn(n.resolveImageUrl) : null), u(lt, n.displayConditions?.conditions ?? []), u(ut, n.displayConditions?.allowCustom ?? !1), u(pt, e.capabilities ?? {}), u(gt, y);
2987
- let k = dn(n.lint) ? null : fn({
3001
+ u(ut, e.editorRoot ?? document), u(nt, D), u(wt, r), u(W, t), u(bt, p), u(dt, m), u(ct, h), u(at, a), u(rt, f), u(qe, l), u(ot, n.blockDefaults), u(_t, x), u(lt, n.customBlocks ?? []), u(et, n.paletteBlocks), u(Ct, Mn(n.htmlBlockPreview)), u(mt, b), u(vt, Dn(t.content, x));
3002
+ let O = De(n.mergeTags?.syntax);
3003
+ u(H, n.mergeTags?.tags ?? []), u(pt, O), u($e, n.mergeTags?.onRequest ?? null), u(Xe, n.mergeTags?.autocomplete !== !1);
3004
+ let k = v(Ee(n.mergeTags?.tags ?? []));
3005
+ u(tt, k), u(Ye, hn()), u(Je, n.logicTags?.tags ?? []), u(it, n.logicTags?.pairs ?? []), u(Ke, n.logicTags?.onRequest ?? null), u(xt, gn()), u(ft, n.onRequestMedia ?? null), u(st, n.resolveImageUrl ? mn(n.resolveImageUrl) : null), u(ht, n.displayConditions?.conditions ?? []), u(gt, n.displayConditions?.allowCustom ?? !1), u(yt, e.capabilities ?? {}), u(St, y);
3006
+ let A = _n(n.lint) ? null : vn({
2988
3007
  content: t.content,
2989
3008
  options: n.lint ?? {},
2990
3009
  updateBlock: t.updateBlock,
2991
3010
  updateSettings: t.updateSettings,
2992
3011
  removeBlock: t.removeBlock
2993
3012
  });
2994
- u(Ge, k);
2995
- function A() {
2996
- _?.(), k?.destroy(), g?.destroy(), p.destroy();
3013
+ u(Qe, A);
3014
+ function j() {
3015
+ _?.(), A?.destroy(), g?.destroy(), p.destroy();
2997
3016
  }
2998
3017
  return {
2999
3018
  t: s,
@@ -3007,13 +3026,14 @@ function Yi(e) {
3007
3026
  themeOverrides: d,
3008
3027
  registry: x,
3009
3028
  keyboardReorder: y,
3010
- templateLint: k,
3029
+ templateLint: A,
3011
3030
  popoverRoot: D,
3031
+ mergeTagSampleMode: k,
3012
3032
  registerCustomBlocks: w,
3013
- destroy: A
3033
+ destroy: j
3014
3034
  };
3015
3035
  }
3016
3036
  //#endregion
3017
- export { kn as A, Xn as C, Un as D, Wn as E, nn as F, en as I, Gt as L, mn as M, pn as N, Bn as O, an as P, tr as S, Gn as T, Sr as _, Oi as a, ar as b, mi as c, Xr as d, Zr as f, wr as g, Ir as h, ji as i, Q as j, Ln as k, fi as l, Br as m, qi as n, xi as o, Yr as p, Li as r, vi as s, Yi as t, Qr as u, gr as v, Yn as w, rr as x, mr as y };
3037
+ export { Fn as A, nr as C, Jn as D, Yn as E, ln as F, sn as I, Zt as L, bn as M, yn as N, Gn as O, dn as P, sr as S, Xn as T, Or as _, Pi as a, dr as b, bi as c, ni as d, ri as f, Ar as g, Hr as h, Li as i, Q as j, Hn as k, vi as l, Kr as m, $i as n, Di as o, ti as p, Ui as r, wi as s, ta as t, ii as u, Sr as v, tr as w, lr as x, br as y };
3018
3038
 
3019
- //# sourceMappingURL=useEditorCore-CzMhD6Gd.js.map
3039
+ //# sourceMappingURL=useEditorCore-B_vwuKdI.js.map