@templatical/editor 0.38.0 → 0.39.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (289) hide show
  1. package/README.md +2 -4
  2. package/dist/{AiChatSidebar-tu4eLcf_.js → AiChatSidebar-pOxCZWz9.js} +67 -67
  3. package/dist/{AiFeatureMenu-BF0i0vA4.js → AiFeatureMenu-Bljk6Qjv.js} +7 -7
  4. package/dist/{BlockIssueBadge-DT-FqKeC.js → BlockIssueBadge-D5oGxOQP.js} +5 -5
  5. package/dist/{BlockPreviewCanvas-DDCmMram.js → BlockPreviewCanvas-DXGjUECG.js} +27 -27
  6. package/dist/{CloudHeaderExtras-NPhudovT.js → CloudHeaderExtras-DaocwNmy.js} +5 -5
  7. package/dist/{CloudPanels-Iwnky0iA.js → CloudPanels-CyZAnSJY.js} +7 -7
  8. package/dist/{CollaboratorBar-DAITu0hz.js → CollaboratorBar-C7Zca3g1.js} +4 -4
  9. package/dist/{CommentsPanel-CDvgmWP1.js → CommentsPanel-CNOb7YCm.js} +2 -2
  10. package/dist/{CommentsSidebar-X_xqM3dR.js → CommentsSidebar-VmwjU9va.js} +14 -14
  11. package/dist/{CountdownBlock-ZFJIdbP6.js → CountdownBlock-DSvbf3qU.js} +3 -3
  12. package/dist/{CountdownToolbar-DBFoG3a6.js → CountdownToolbar-C2kfS6Oy.js} +31 -30
  13. package/dist/{DesignReferenceSidebar--QtXjLrw.js → DesignReferenceSidebar-QC4gEUWp.js} +11 -11
  14. package/dist/{IssuesPanel-BLbNFMSX.js → IssuesPanel-DL2Xr14_.js} +8 -8
  15. package/dist/{LoadingTrack-BlTL4zFv.js → LoadingTrack-C2jKCU2d.js} +1 -1
  16. package/dist/LogicTagInsertButton-D8IwH-9Z.js +1071 -0
  17. package/dist/{MediaPanels-CMTAhDXB.js → MediaPanels-Cc4UkfG1.js} +2 -2
  18. package/dist/MergeTagInput-QI-5KG2R.js +81 -0
  19. package/dist/{MergeTagModeToggle-DKN6ihI5.js → MergeTagModeToggle-D793Bj_E.js} +32 -73
  20. package/dist/{ParagraphEditor-1E9yzOfk.js → ParagraphEditor-DkkPSexG.js} +50 -51
  21. package/dist/{RestoreVersionDialog-BMGUkcd8.js → RestoreVersionDialog-BgueZnZr.js} +5 -5
  22. package/dist/{RichTextEditorContent-BnxbQUV9.js → RichTextEditorContent-BC5UTVnb.js} +12 -12
  23. package/dist/{SaveBlockDialog-WKASpCCT.js → SaveBlockDialog-BuTuVlLr.js} +12 -11
  24. package/dist/{SavedBlocksBrowserModal-AYEXTMtQ.js → SavedBlocksBrowserModal-Srhix8BB.js} +17 -16
  25. package/dist/{SavedBlocksPanels-D_CpacTl.js → SavedBlocksPanels-B2iScCS-.js} +2 -2
  26. package/dist/{SavedBlocksPickBar-BHMwg-1G.js → SavedBlocksPickBar-cI7bDQQi.js} +4 -4
  27. package/dist/{TemplateScoringPanel-CSin43YM.js → TemplateScoringPanel-C2Rdlyn6.js} +104 -104
  28. package/dist/TemplateSettings-C_5leDdF.js +245 -0
  29. package/dist/{TestEmailModal-BxizsRCd.js → TestEmailModal-DJ5q_u4N.js} +55 -55
  30. package/dist/{TestEmailPanel-vd2e5HzT.js → TestEmailPanel-CP24UGst.js} +2 -2
  31. package/dist/{TitleEditor-CLJ68Ty4.js → TitleEditor-QBBOXtxx.js} +18 -18
  32. package/dist/ToggleSwitch-JvQ_CmI1.js +102 -0
  33. package/dist/Toolbar-COD2TW20.js +2426 -0
  34. package/dist/{TplModal-Q9fDgS1M.js → TplModal-C8xGjC1l.js} +5 -5
  35. package/dist/{VersionHistoryMenu-eGYVhM4H.js → VersionHistoryMenu-BVQityes.js} +10 -10
  36. package/dist/{VersionHistoryPanels-C7Ntrrfq.js → VersionHistoryPanels-BrK6na4A.js} +2 -2
  37. package/dist/{VersionPreviewBanner-BbQXnR0M.js → VersionPreviewBanner-BaMSgA1O.js} +3 -3
  38. package/dist/{blockTypeIcons-5qD4bB76.js → blockTypeIcons-CdXugKyV.js} +16 -37
  39. package/dist/bundle-stats.json +8 -8
  40. package/dist/{cdn/chunks/ca-D9S-UCfZ.js → ca-YlPDhElv.js} +5 -3
  41. package/dist/cdn/chunks/{AiChatSidebar-dyqqHAcI.js → AiChatSidebar-CjSEoK4x.js} +54 -54
  42. package/dist/cdn/chunks/AiChatSidebar-CjSEoK4x.js.map +1 -0
  43. package/dist/cdn/chunks/{AiFeatureMenu-BjVMwhW8.js → AiFeatureMenu-l0K5TOSn.js} +6 -6
  44. package/dist/cdn/chunks/{AiFeatureMenu-BjVMwhW8.js.map → AiFeatureMenu-l0K5TOSn.js.map} +1 -1
  45. package/dist/cdn/chunks/{BlockIssueBadge-BJ__oEtm.js → BlockIssueBadge-9hHpaXb9.js} +5 -5
  46. package/dist/cdn/chunks/{BlockIssueBadge-BJ__oEtm.js.map → BlockIssueBadge-9hHpaXb9.js.map} +1 -1
  47. package/dist/cdn/chunks/{BlockPreviewCanvas-B5f26eLE.js → BlockPreviewCanvas-lQrAdgG3.js} +30 -30
  48. package/dist/cdn/chunks/{BlockPreviewCanvas-B5f26eLE.js.map → BlockPreviewCanvas-lQrAdgG3.js.map} +1 -1
  49. package/dist/cdn/chunks/{CloudHeaderExtras-D5P5IEKA.js → CloudHeaderExtras-CXNe7Q-4.js} +5 -5
  50. package/dist/cdn/chunks/{CloudHeaderExtras-D5P5IEKA.js.map → CloudHeaderExtras-CXNe7Q-4.js.map} +1 -1
  51. package/dist/cdn/chunks/{CloudPanels-DkmR05nB.js → CloudPanels-bHhh9AUA.js} +6 -6
  52. package/dist/cdn/chunks/{CloudPanels-DkmR05nB.js.map → CloudPanels-bHhh9AUA.js.map} +1 -1
  53. package/dist/cdn/chunks/{CollaboratorBar-Yn7KSpt4.js → CollaboratorBar-DgqcaGGI.js} +5 -5
  54. package/dist/cdn/chunks/{CollaboratorBar-Yn7KSpt4.js.map → CollaboratorBar-DgqcaGGI.js.map} +1 -1
  55. package/dist/cdn/chunks/{CommentsPanel-CntwwocI.js → CommentsPanel-Cy4TlTHC.js} +3 -3
  56. package/dist/cdn/chunks/{CommentsPanel-CntwwocI.js.map → CommentsPanel-Cy4TlTHC.js.map} +1 -1
  57. package/dist/cdn/chunks/{CommentsSidebar-BLDKnKy7.js → CommentsSidebar-C7oAP3Mx.js} +5 -5
  58. package/dist/cdn/chunks/{CommentsSidebar-BLDKnKy7.js.map → CommentsSidebar-C7oAP3Mx.js.map} +1 -1
  59. package/dist/cdn/chunks/{CountdownBlock-B4AfqJwb.js → CountdownBlock-DdC8Lg5F.js} +4 -4
  60. package/dist/cdn/chunks/{CountdownBlock-B4AfqJwb.js.map → CountdownBlock-DdC8Lg5F.js.map} +1 -1
  61. package/dist/cdn/chunks/{CountdownToolbar-CA1dpuOI.js → CountdownToolbar-CN9h4nlC.js} +22 -21
  62. package/dist/cdn/chunks/{CountdownToolbar-CA1dpuOI.js.map → CountdownToolbar-CN9h4nlC.js.map} +1 -1
  63. package/dist/cdn/chunks/{DesignReferenceSidebar-D1Y9Hswe.js → DesignReferenceSidebar-Bjo0M-AY.js} +7 -7
  64. package/dist/cdn/chunks/{DesignReferenceSidebar-D1Y9Hswe.js.map → DesignReferenceSidebar-Bjo0M-AY.js.map} +1 -1
  65. package/dist/cdn/chunks/{IssuesPanel-Q62LTqvd.js → IssuesPanel-DdFk-Blf.js} +6 -6
  66. package/dist/cdn/chunks/{IssuesPanel-Q62LTqvd.js.map → IssuesPanel-DdFk-Blf.js.map} +1 -1
  67. package/dist/cdn/chunks/{LoadingTrack-Cm3TDKb3.js → LoadingTrack-Ba5xh5HD.js} +2 -2
  68. package/dist/cdn/chunks/{LoadingTrack-Cm3TDKb3.js.map → LoadingTrack-Ba5xh5HD.js.map} +1 -1
  69. package/dist/cdn/chunks/LogicTagInsertButton-DpyPozop.js +1035 -0
  70. package/dist/cdn/chunks/LogicTagInsertButton-DpyPozop.js.map +1 -0
  71. package/dist/cdn/chunks/{MediaPanels-D21M6shx.js → MediaPanels-kX9AZQ7K.js} +3 -3
  72. package/dist/cdn/chunks/{MediaPanels-D21M6shx.js.map → MediaPanels-kX9AZQ7K.js.map} +1 -1
  73. package/dist/cdn/chunks/MergeTagInput-ERJr7bP_.js +83 -0
  74. package/dist/cdn/chunks/MergeTagInput-ERJr7bP_.js.map +1 -0
  75. package/dist/cdn/chunks/{MergeTagModeToggle-DYxkAGtA.js → MergeTagModeToggle-n3nvSNeQ.js} +33 -33
  76. package/dist/cdn/chunks/{MergeTagModeToggle-DYxkAGtA.js.map → MergeTagModeToggle-n3nvSNeQ.js.map} +1 -1
  77. package/dist/cdn/chunks/{ParagraphEditor-Bd-GQXee.js → ParagraphEditor-DO4RzP8l.js} +43 -43
  78. package/dist/cdn/chunks/{ParagraphEditor-Bd-GQXee.js.map → ParagraphEditor-DO4RzP8l.js.map} +1 -1
  79. package/dist/cdn/chunks/{RestoreVersionDialog-2X9RpM9A.js → RestoreVersionDialog-CzZ_sFnz.js} +5 -5
  80. package/dist/cdn/chunks/{RestoreVersionDialog-2X9RpM9A.js.map → RestoreVersionDialog-CzZ_sFnz.js.map} +1 -1
  81. package/dist/cdn/chunks/{RichTextEditorContent-D_rb0rmU.js → RichTextEditorContent-Ch5zeyZ7.js} +9 -9
  82. package/dist/cdn/chunks/{RichTextEditorContent-D_rb0rmU.js.map → RichTextEditorContent-Ch5zeyZ7.js.map} +1 -1
  83. package/dist/cdn/chunks/{SaveBlockDialog-CufdTomT.js → SaveBlockDialog-LgxYrXyx.js} +10 -9
  84. package/dist/cdn/chunks/{SaveBlockDialog-CufdTomT.js.map → SaveBlockDialog-LgxYrXyx.js.map} +1 -1
  85. package/dist/cdn/chunks/{SavedBlocksBrowserModal-CqpaNsk7.js → SavedBlocksBrowserModal-CdeSsTpb.js} +9 -9
  86. package/dist/cdn/chunks/{SavedBlocksBrowserModal-CqpaNsk7.js.map → SavedBlocksBrowserModal-CdeSsTpb.js.map} +1 -1
  87. package/dist/cdn/chunks/{SavedBlocksPanels-DpxYxddo.js → SavedBlocksPanels-B5hakNJj.js} +3 -3
  88. package/dist/cdn/chunks/{SavedBlocksPanels-DpxYxddo.js.map → SavedBlocksPanels-B5hakNJj.js.map} +1 -1
  89. package/dist/cdn/chunks/{SavedBlocksPickBar-Drpoav1B.js → SavedBlocksPickBar-Cl6PLwwV.js} +5 -5
  90. package/dist/cdn/chunks/{SavedBlocksPickBar-Drpoav1B.js.map → SavedBlocksPickBar-Cl6PLwwV.js.map} +1 -1
  91. package/dist/cdn/chunks/{TemplateScoringPanel-DBjUNULq.js → TemplateScoringPanel--JxR6CsQ.js} +86 -86
  92. package/dist/cdn/chunks/TemplateScoringPanel--JxR6CsQ.js.map +1 -0
  93. package/dist/cdn/chunks/TemplateSettings-DjXiiiNr.js +207 -0
  94. package/dist/cdn/chunks/TemplateSettings-DjXiiiNr.js.map +1 -0
  95. package/dist/cdn/chunks/{TestEmailModal-BTNlSW6f.js → TestEmailModal-BAuDxJtD.js} +53 -53
  96. package/dist/cdn/chunks/TestEmailModal-BAuDxJtD.js.map +1 -0
  97. package/dist/cdn/chunks/{TestEmailPanel-D0A9Zgxr.js → TestEmailPanel-GUGZisLp.js} +3 -3
  98. package/dist/cdn/chunks/{TestEmailPanel-D0A9Zgxr.js.map → TestEmailPanel-GUGZisLp.js.map} +1 -1
  99. package/dist/cdn/chunks/{TitleEditor-CrnuIq62.js → TitleEditor-uKu33Nwr.js} +16 -16
  100. package/dist/cdn/chunks/TitleEditor-uKu33Nwr.js.map +1 -0
  101. package/dist/cdn/chunks/ToggleSwitch-CDy8OfcB.js +104 -0
  102. package/dist/cdn/chunks/ToggleSwitch-CDy8OfcB.js.map +1 -0
  103. package/dist/cdn/chunks/Toolbar-dxDYwN5E.js +2385 -0
  104. package/dist/cdn/chunks/Toolbar-dxDYwN5E.js.map +1 -0
  105. package/dist/cdn/chunks/{TplModal-DYXrTz42.js → TplModal-DuwS2ifK.js} +5 -5
  106. package/dist/cdn/chunks/{TplModal-DYXrTz42.js.map → TplModal-DuwS2ifK.js.map} +1 -1
  107. package/dist/cdn/chunks/{VersionHistoryMenu-bDGnE4hb.js → VersionHistoryMenu-Dij1pTEb.js} +6 -6
  108. package/dist/cdn/chunks/{VersionHistoryMenu-bDGnE4hb.js.map → VersionHistoryMenu-Dij1pTEb.js.map} +1 -1
  109. package/dist/cdn/chunks/{VersionHistoryPanels-82P0Q0HM.js → VersionHistoryPanels-GeR6MStB.js} +3 -3
  110. package/dist/cdn/chunks/{VersionHistoryPanels-82P0Q0HM.js.map → VersionHistoryPanels-GeR6MStB.js.map} +1 -1
  111. package/dist/cdn/chunks/{VersionPreviewBanner-BJiwKkVC.js → VersionPreviewBanner-Df3FVlig.js} +4 -4
  112. package/dist/cdn/chunks/{VersionPreviewBanner-BJiwKkVC.js.map → VersionPreviewBanner-Df3FVlig.js.map} +1 -1
  113. package/dist/cdn/chunks/{blockTypeIcons-CNjJSFun.js → blockTypeIcons-raBjStuv.js} +2 -2
  114. package/dist/cdn/chunks/{blockTypeIcons-CNjJSFun.js.map → blockTypeIcons-raBjStuv.js.map} +1 -1
  115. package/dist/{ca-D9S-UCfZ.js → cdn/chunks/ca-YlPDhElv.js} +7 -1
  116. package/dist/cdn/chunks/{ca-D9S-UCfZ.js.map → ca-YlPDhElv.js.map} +1 -1
  117. package/dist/cdn/chunks/{cloud-BLgCKP7Z.js → cloud-eaXyxZ8l.js} +2 -2
  118. package/dist/cdn/chunks/{cloud-BLgCKP7Z.js.map → cloud-eaXyxZ8l.js.map} +1 -1
  119. package/dist/cdn/chunks/{createCloudRuntime-U-qCH-dq.js → createCloudRuntime-D5bXzcTe.js} +6 -6
  120. package/dist/cdn/chunks/{createCloudRuntime-U-qCH-dq.js.map → createCloudRuntime-D5bXzcTe.js.map} +1 -1
  121. package/dist/cdn/chunks/{de-BUPszLpi.js → de-CONjnzrF.js} +6 -2
  122. package/dist/cdn/chunks/{de-BUPszLpi.js.map → de-CONjnzrF.js.map} +1 -1
  123. package/dist/cdn/chunks/{dist-BW6Y49zE.js → dist-BRZhN8qJ.js} +4 -4
  124. package/dist/cdn/chunks/dist-BRZhN8qJ.js.map +1 -0
  125. package/dist/cdn/chunks/{dist-CAFTQ6Y2.js → dist-CXB2_kBa.js} +27 -22
  126. package/dist/cdn/chunks/dist-CXB2_kBa.js.map +1 -0
  127. package/dist/cdn/chunks/{draggable-kbOhCgnk.js → draggable-IB4x6w2O.js} +1477 -1470
  128. package/dist/cdn/chunks/draggable-IB4x6w2O.js.map +1 -0
  129. package/dist/cdn/chunks/{editor-modal-MXgtarMl.js → editor-modal-C_xYN_66.js} +7 -7
  130. package/dist/cdn/chunks/{editor-modal-MXgtarMl.js.map → editor-modal-C_xYN_66.js.map} +1 -1
  131. package/dist/cdn/chunks/{en-BbOC5x3w.js → en-BAMooiOF.js} +6 -2
  132. package/dist/cdn/chunks/{en-BbOC5x3w.js.map → en-BAMooiOF.js.map} +1 -1
  133. package/dist/cdn/chunks/en-BwfjKb4M.js +2 -0
  134. package/dist/{es-0bCDcT9p.js → cdn/chunks/es-I47lHs2m.js} +7 -1
  135. package/dist/cdn/chunks/{es-0bCDcT9p.js.map → es-I47lHs2m.js.map} +1 -1
  136. package/dist/cdn/chunks/{extensions-B8_jnIkD.js → extensions-Bhu8UEE5.js} +185 -100
  137. package/dist/cdn/chunks/extensions-Bhu8UEE5.js.map +1 -0
  138. package/dist/cdn/chunks/{fr-Brr8mJ9e.js → fr-B8MIKjT4.js} +6 -2
  139. package/dist/cdn/chunks/{fr-Brr8mJ9e.js.map → fr-B8MIKjT4.js.map} +1 -1
  140. package/dist/cdn/chunks/htmlparser-ClUZ6waR.js +1113 -0
  141. package/dist/cdn/chunks/htmlparser-ClUZ6waR.js.map +1 -0
  142. package/dist/cdn/chunks/{icons-BUlqGSgd.js → icons-BKkJ-5xF.js} +36 -36
  143. package/dist/cdn/chunks/{icons-BUlqGSgd.js.map → icons-BKkJ-5xF.js.map} +1 -1
  144. package/dist/cdn/chunks/keys-dJbD1QPs.js +12 -0
  145. package/dist/cdn/chunks/keys-dJbD1QPs.js.map +1 -0
  146. package/dist/{nl-Co3_RL0M.js → cdn/chunks/nl-CBLxcb-0.js} +7 -1
  147. package/dist/cdn/chunks/{nl-Co3_RL0M.js.map → nl-CBLxcb-0.js.map} +1 -1
  148. package/dist/{pt-BR-BECez5b0.js → cdn/chunks/pt-BR-CMSRfX7t.js} +7 -1
  149. package/dist/cdn/chunks/{pt-BR-BECez5b0.js.map → pt-BR-CMSRfX7t.js.map} +1 -1
  150. package/dist/cdn/chunks/socialIcons-9VrG8X3m.js +1054 -0
  151. package/dist/cdn/chunks/socialIcons-9VrG8X3m.js.map +1 -0
  152. package/dist/cdn/chunks/{src-IGLRmUar.js → src-CZ-W8YBa.js} +4 -4
  153. package/dist/cdn/chunks/{src-IGLRmUar.js.map → src-CZ-W8YBa.js.map} +1 -1
  154. package/dist/cdn/chunks/{src-CUvZWL6Y.js → src-CaNsA_WX.js} +2 -2
  155. package/dist/cdn/chunks/{src-CUvZWL6Y.js.map → src-CaNsA_WX.js.map} +1 -1
  156. package/dist/cdn/chunks/src-Dwgq7hf4.js.map +1 -1
  157. package/dist/cdn/chunks/templateSettingsFields-YCFVBVYh.js +36 -0
  158. package/dist/cdn/chunks/templateSettingsFields-YCFVBVYh.js.map +1 -0
  159. package/dist/cdn/chunks/{tiptap-Epe8m3Vo.js → tiptap-DhLuKyDc.js} +2776 -2773
  160. package/dist/cdn/chunks/tiptap-DhLuKyDc.js.map +1 -0
  161. package/dist/cdn/chunks/{useAliveFlag-CT9gjvO_.js → useAliveFlag-DAlQLbM2.js} +2 -2
  162. package/dist/cdn/chunks/{useAliveFlag-CT9gjvO_.js.map → useAliveFlag-DAlQLbM2.js.map} +1 -1
  163. package/dist/cdn/chunks/{useCloudI18n-DSWSGj-A.js → useCloudI18n-C09JcFS0.js} +3 -3
  164. package/dist/cdn/chunks/{useCloudI18n-DSWSGj-A.js.map → useCloudI18n-C09JcFS0.js.map} +1 -1
  165. package/dist/cdn/chunks/useEditorCore-BHmIp1hW.js +2592 -0
  166. package/dist/cdn/chunks/useEditorCore-BHmIp1hW.js.map +1 -0
  167. package/dist/cdn/chunks/useEditorRoot-DFx2fXJP.js +10 -0
  168. package/dist/cdn/chunks/{useEditorRoot-B0zW2nT4.js.map → useEditorRoot-DFx2fXJP.js.map} +1 -1
  169. package/dist/cdn/chunks/{useI18n-Dlo7R9RA.js → useI18n-DTZ9sIcv.js} +3 -3
  170. package/dist/cdn/chunks/{useI18n-Dlo7R9RA.js.map → useI18n-DTZ9sIcv.js.map} +1 -1
  171. package/dist/cdn/chunks/useLogicTag-E2V0Xdcb.js +38 -0
  172. package/dist/cdn/chunks/useLogicTag-E2V0Xdcb.js.map +1 -0
  173. package/dist/cdn/chunks/useMergeTag-BE8oDoha.js +60 -0
  174. package/dist/cdn/chunks/useMergeTag-BE8oDoha.js.map +1 -0
  175. package/dist/cdn/chunks/{usePopoverPosition-ElP3ABaV.js → usePopoverPosition-gB9q-ql7.js} +3 -3
  176. package/dist/cdn/chunks/{usePopoverPosition-ElP3ABaV.js.map → usePopoverPosition-gB9q-ql7.js.map} +1 -1
  177. package/dist/cdn/chunks/{useScrollToBlock-nTbWkgaU.js → useScrollToBlock-CtTXwmiU.js} +3 -3
  178. package/dist/cdn/chunks/{useScrollToBlock-nTbWkgaU.js.map → useScrollToBlock-CtTXwmiU.js.map} +1 -1
  179. package/dist/cdn/editor.css +1 -1
  180. package/dist/cdn/editor.js +856 -3347
  181. package/dist/cdn/editor.js.map +1 -1
  182. package/dist/{check-DWtkBzBU.js → check-eqb2JhqU.js} +1 -1
  183. package/dist/{chevron-down-C-Fjxcqj.js → chevron-down-Dkr-7Ywl.js} +1 -1
  184. package/dist/{chevron-right-SOkn2d4P.js → chevron-right-Bge4XF_B.js} +1 -1
  185. package/dist/{chevron-up-lntU1ypp.js → chevron-up-CQAyl0kC.js} +1 -1
  186. package/dist/{circle-alert-CjzUTwy3.js → circle-alert-CYgTHKWr.js} +1 -1
  187. package/dist/{clock-pB2QKPsJ.js → clock-BgSJZJP5.js} +1 -1
  188. package/dist/{cloud-DdidMW6f.js → cloud-C9xWZXhg.js} +1 -1
  189. package/dist/{copy-CId1E038.js → copy-mw6PVnOJ.js} +1 -1
  190. package/dist/{createCloudRuntime-x5WZm3p8.js → createCloudRuntime-BGd5--Bq.js} +5 -5
  191. package/dist/{createLucideIcon-Cwf_nTzE.js → createLucideIcon-BxY5yz5u.js} +6 -6
  192. package/dist/{de-BUPszLpi.js → de-CONjnzrF.js} +5 -1
  193. package/dist/{dist-D8i1ixHK.js → dist-8VFzbeu9.js} +3 -3
  194. package/dist/{dist-DBirAJIs.js → dist-BDuPwOyn.js} +26 -21
  195. package/dist/{dist-CtF9STPS.js → dist-BJM3eFyT.js} +1 -1
  196. package/dist/{dist-DkcA6epL.js → dist-BdHF7nyq.js} +3 -3
  197. package/dist/{dist-ByT5fgKq.js → dist-Bl4rxpX9.js} +1 -1
  198. package/dist/{dist-BVqAYoRB.js → dist-BmsLcnrO.js} +4 -4
  199. package/dist/{dist-CtMXAH7a.js → dist-BxVnMgXZ.js} +1 -1
  200. package/dist/{dist-DC-3T0ED.js → dist-CQSVro7b.js} +1 -1
  201. package/dist/{dist-f7HXo6j6.js → dist-DQbOebGW.js} +1 -1
  202. package/dist/{dist-DL9334yz.js → dist-DerFNpDY.js} +3 -3
  203. package/dist/{dist-D08oVYhr.js → dist-Djmzp6wi.js} +1 -1
  204. package/dist/{dist-D7WY8VPq.js → dist-DyrEOKEJ.js} +1 -1
  205. package/dist/{dist-DzdeVn-W.js → dist-EDkj3Ub1.js} +1 -1
  206. package/dist/{dist-C1tsW_99.js → dist-wyXxj3R1.js} +1 -1
  207. package/dist/{editor-modal-B_LaQf0s.js → editor-modal-OPhP71YO.js} +20 -20
  208. package/dist/{en-BbOC5x3w.js → en-BAMooiOF.js} +5 -1
  209. package/dist/en-CjNopehs.js +2 -0
  210. package/dist/{cdn/chunks/es-0bCDcT9p.js → es-I47lHs2m.js} +5 -3
  211. package/dist/extensions-DRN-elXT.js +1645 -0
  212. package/dist/{eye-BuGtFUoJ.js → eye-DphkRtAD.js} +1 -1
  213. package/dist/{fr-Brr8mJ9e.js → fr-B8MIKjT4.js} +5 -1
  214. package/dist/{image-up-gH4JEpU5.js → image-up-Qi2BXD7T.js} +1 -1
  215. package/dist/index.d.ts +15 -0
  216. package/dist/{info-BQ60P82u.js → info-VSyAs02q.js} +1 -1
  217. package/dist/keys-BdoSgsz9.js +10 -0
  218. package/dist/{link-3R8it3J7.js → link-CNuozGqD.js} +1 -1
  219. package/dist/{list-Ccdgj46T.js → list-BA0I5Wmu.js} +1 -1
  220. package/dist/{loader-circle-B_tAD4k6.js → loader-circle-z5eeqasv.js} +1 -1
  221. package/dist/{message-circle-P-KSc6V0.js → message-circle-BsQ9hEup.js} +1 -1
  222. package/dist/{cdn/chunks/nl-Co3_RL0M.js → nl-CBLxcb-0.js} +5 -3
  223. package/dist/package-OkXfuRoO.js +25 -0
  224. package/dist/{pencil-9ZiwqS4r.js → pencil-DFVFA7Dj.js} +1 -1
  225. package/dist/{plus-BwJEzCaO.js → plus-D8bkVjZ7.js} +1 -1
  226. package/dist/{cdn/chunks/pt-BR-BECez5b0.js → pt-BR-CMSRfX7t.js} +5 -3
  227. package/dist/{refresh-cw-DEgfb2FK.js → refresh-cw-DPB7YFuz.js} +1 -1
  228. package/dist/{runtime-dom.esm-bundler-PnoZU512.js → runtime-dom.esm-bundler-BGbPz4-g.js} +2 -2
  229. package/dist/{search-DqQ8Li5E.js → search-C-dCgqIa.js} +1 -1
  230. package/dist/{send-CE6uvqop.js → send-Cm2fy2zm.js} +1 -1
  231. package/dist/{shield-check-DhD1Z3rd.js → shield-check-COgBYFDF.js} +1 -1
  232. package/dist/smartphone-v0u_MOEV.js +46 -0
  233. package/dist/socialIcons-DkGcpEwC.js +1130 -0
  234. package/dist/{sparkles-R0ZQHa6F.js → sparkles-Ds0RF8Iu.js} +1 -1
  235. package/dist/style.css +1 -1
  236. package/dist/templateSettingsFields-YCFVBVYh.js +34 -0
  237. package/dist/templatical-editor.js +945 -3511
  238. package/dist/{text-align-start-DSux2UNn.js → text-align-start-DiavaIm6.js} +1 -1
  239. package/dist/{trash-Cf_SqsER.js → trash-DnOkfu2V.js} +1 -1
  240. package/dist/{triangle-alert-C6tGa6jw.js → triangle-alert-DGLAyXnh.js} +1 -1
  241. package/dist/{upload-DusKjpVr.js → upload-BBDme2cy.js} +1 -1
  242. package/dist/{useAliveFlag-oyByIcjy.js → useAliveFlag-BkKyhkwZ.js} +1 -1
  243. package/dist/{useCloudI18n-BLyh_e2T.js → useCloudI18n-D1iedlP3.js} +2 -2
  244. package/dist/useEditorCore-C5APBjjV.js +4097 -0
  245. package/dist/{useEditorRoot-ds57-l6F.js → useEditorRoot-BOxn5EfP.js} +2 -2
  246. package/dist/{useI18n-BbdxxpOE.js → useI18n-Ds_-druD.js} +2 -2
  247. package/dist/useLogicTag-DoHfc08B.js +36 -0
  248. package/dist/useMergeTag-DXyum3kG.js +58 -0
  249. package/dist/{usePopoverPosition-CprM5p-c.js → usePopoverPosition-Du-Ah8E9.js} +2 -2
  250. package/dist/{useScrollToBlock-BTFw0b9O.js → useScrollToBlock-DXQYPCnJ.js} +3 -3
  251. package/dist/{vue.runtime.esm-bundler-DShF3P6k.js → vue.runtime.esm-bundler-CyqhBwpY.js} +1133 -1126
  252. package/dist/{x-D_-42Ukq.js → x-3BHV3Q6K.js} +1 -1
  253. package/package.json +16 -16
  254. package/dist/ColorPicker-BqlZ_TqG.js +0 -501
  255. package/dist/FieldRow-C8nOknr_.js +0 -128
  256. package/dist/MergeTagInput-BEjzj4Iu.js +0 -457
  257. package/dist/MergeTagSuggestion-DKoLEeoj.js +0 -1329
  258. package/dist/cdn/chunks/AiChatSidebar-dyqqHAcI.js.map +0 -1
  259. package/dist/cdn/chunks/ColorPicker-LcrzgMoW.js +0 -502
  260. package/dist/cdn/chunks/ColorPicker-LcrzgMoW.js.map +0 -1
  261. package/dist/cdn/chunks/FieldRow-D9OJhYeb.js +0 -130
  262. package/dist/cdn/chunks/FieldRow-D9OJhYeb.js.map +0 -1
  263. package/dist/cdn/chunks/MergeTagInput-l7paaAml.js +0 -419
  264. package/dist/cdn/chunks/MergeTagInput-l7paaAml.js.map +0 -1
  265. package/dist/cdn/chunks/MergeTagSuggestion-t8Uj00Er.js +0 -215
  266. package/dist/cdn/chunks/MergeTagSuggestion-t8Uj00Er.js.map +0 -1
  267. package/dist/cdn/chunks/TemplateScoringPanel-DBjUNULq.js.map +0 -1
  268. package/dist/cdn/chunks/TestEmailModal-BTNlSW6f.js.map +0 -1
  269. package/dist/cdn/chunks/TitleEditor-CrnuIq62.js.map +0 -1
  270. package/dist/cdn/chunks/dist-BW6Y49zE.js.map +0 -1
  271. package/dist/cdn/chunks/dist-CAFTQ6Y2.js.map +0 -1
  272. package/dist/cdn/chunks/draggable-kbOhCgnk.js.map +0 -1
  273. package/dist/cdn/chunks/en-C9U7N77n.js +0 -2
  274. package/dist/cdn/chunks/extensions-B8_jnIkD.js.map +0 -1
  275. package/dist/cdn/chunks/htmlparser-DTML8Gvz.js +0 -1007
  276. package/dist/cdn/chunks/htmlparser-DTML8Gvz.js.map +0 -1
  277. package/dist/cdn/chunks/keys-DBFhDFng.js +0 -12
  278. package/dist/cdn/chunks/keys-DBFhDFng.js.map +0 -1
  279. package/dist/cdn/chunks/tiptap-Epe8m3Vo.js.map +0 -1
  280. package/dist/cdn/chunks/useEditorCore-Cs7rYVBo.js +0 -3689
  281. package/dist/cdn/chunks/useEditorCore-Cs7rYVBo.js.map +0 -1
  282. package/dist/cdn/chunks/useEditorRoot-B0zW2nT4.js +0 -10
  283. package/dist/cdn/chunks/useMergeTag-BYAifvh8.js +0 -46
  284. package/dist/cdn/chunks/useMergeTag-BYAifvh8.js.map +0 -1
  285. package/dist/en-DcmpWV53.js +0 -2
  286. package/dist/extensions-CHOBZRab.js +0 -445
  287. package/dist/keys-DQA2i1k1.js +0 -10
  288. package/dist/useEditorCore-DhlKOYwe.js +0 -5273
  289. package/dist/useMergeTag-DlvOBW_B.js +0 -44
@@ -1,45 +1,45 @@
1
- import { E as e, F as t, N as n, S as r, at as i, f as a, g as o, h as s, lt as c, m as l, p as u, u as d, ut as f } from "./draggable-kbOhCgnk.js";
1
+ import { E as e, F as t, N as n, S as r, at as i, f as a, g as o, h as s, lt as c, m as l, p as u, u as d, ut as f } from "./draggable-IB4x6w2O.js";
2
2
  import { u as p } from "./src-Dwgq7hf4.js";
3
- import { D as m } from "./keys-DBFhDFng.js";
4
- import { t as h } from "./useI18n-Dlo7R9RA.js";
5
- import { $ as g, D as _, E as v, p as y } from "./icons-BUlqGSgd.js";
3
+ import { D as m, P as h } from "./keys-dJbD1QPs.js";
4
+ import { t as g } from "./useI18n-DTZ9sIcv.js";
5
+ import { $ as _, D as v, E as y, p as b } from "./icons-BKkJ-5xF.js";
6
6
  //#region src/components/ViewportToggle.vue?vue&type=script&setup=true&lang.ts
7
- var b = ["aria-label"], x = [
7
+ var x = ["aria-label"], S = [
8
8
  "aria-checked",
9
9
  "aria-label",
10
10
  "title",
11
11
  "onClick"
12
- ], S = /* @__PURE__ */ r({
12
+ ], C = /* @__PURE__ */ r({
13
13
  __name: "ViewportToggle",
14
14
  props: { viewport: {} },
15
15
  emits: ["change"],
16
16
  setup(e, { emit: r }) {
17
- let s = e, p = r, { t: m } = h(), v = a(() => [{
17
+ let s = e, p = r, { t: m } = g(), h = a(() => [{
18
18
  value: "desktop",
19
19
  label: m.viewport.desktop
20
20
  }, {
21
21
  value: "mobile",
22
22
  label: m.viewport.mobile
23
- }]), y = a(() => `translateX(${v.value.findIndex((e) => e.value === s.viewport) * 100}%)`);
23
+ }]), y = a(() => `translateX(${h.value.findIndex((e) => e.value === s.viewport) * 100}%)`);
24
24
  return (r, a) => (n(), o("div", {
25
25
  role: "radiogroup",
26
26
  "aria-label": i(m).viewport.label,
27
27
  class: "tpl:relative tpl:grid tpl:rounded-[var(--tpl-radius-sm)] tpl:p-1",
28
28
  style: c({
29
- gridTemplateColumns: `repeat(${v.value.length}, 1fr)`,
29
+ gridTemplateColumns: `repeat(${h.value.length}, 1fr)`,
30
30
  backgroundColor: "var(--tpl-bg-hover)"
31
31
  })
32
32
  }, [u("div", {
33
33
  class: "tpl:absolute tpl:inset-y-1 tpl:rounded-[var(--tpl-radius-sm)]",
34
34
  style: c({
35
35
  left: "4px",
36
- width: `calc((100% - 8px) / ${v.value.length})`,
36
+ width: `calc((100% - 8px) / ${h.value.length})`,
37
37
  transform: y.value,
38
38
  backgroundColor: "var(--tpl-bg)",
39
39
  boxShadow: "var(--tpl-shadow)",
40
40
  transition: "transform 120ms cubic-bezier(0.16, 1, 0.3, 1)"
41
41
  })
42
- }, null, 4), (n(!0), o(d, null, t(v.value, (t) => (n(), o("button", {
42
+ }, null, 4), (n(!0), o(d, null, t(h.value, (t) => (n(), o("button", {
43
43
  key: t.value,
44
44
  role: "radio",
45
45
  "aria-checked": e.viewport === t.value,
@@ -51,54 +51,54 @@ var b = ["aria-label"], x = [
51
51
  }),
52
52
  title: t.label,
53
53
  onClick: (e) => p("change", t.value)
54
- }, [t.value === "desktop" ? (n(), l(i(g), {
54
+ }, [t.value === "desktop" ? (n(), l(i(_), {
55
55
  key: 0,
56
56
  size: 18,
57
57
  "stroke-width": 1.5
58
- })) : (n(), l(i(_), {
58
+ })) : (n(), l(i(v), {
59
59
  key: 1,
60
60
  size: 18,
61
61
  "stroke-width": 1.5
62
- })), u("span", null, f(t.label), 1)], 12, x))), 128))], 12, b));
62
+ })), u("span", null, f(t.label), 1)], 12, S))), 128))], 12, x));
63
63
  }
64
- }), C = ["aria-label"], w = [
64
+ }), w = ["aria-label"], T = [
65
65
  "aria-checked",
66
66
  "aria-label",
67
67
  "title",
68
68
  "onClick"
69
- ], T = /* @__PURE__ */ r({
69
+ ], E = /* @__PURE__ */ r({
70
70
  __name: "MergeTagModeToggle",
71
71
  props: { sampleMode: { type: Boolean } },
72
72
  emits: ["change"],
73
- setup(r, { emit: g }) {
74
- let _ = r, b = g, { t: x } = h(), S = e(m, []), T = a(() => p(S)), E = a(() => [{
73
+ setup(r, { emit: _ }) {
74
+ let v = r, x = _, { t: S } = g(), C = e(m, h), E = a(() => p(C.value)), D = a(() => [{
75
75
  value: !0,
76
- label: x.mergeTagPreview.sample
76
+ label: S.mergeTagPreview.sample
77
77
  }, {
78
78
  value: !1,
79
- label: x.mergeTagPreview.labelView
80
- }]), D = a(() => `translateX(${E.value.findIndex((e) => e.value === _.sampleMode) * 100}%)`);
81
- return (e, a) => T.value ? (n(), o("div", {
79
+ label: S.mergeTagPreview.labelView
80
+ }]), O = a(() => `translateX(${D.value.findIndex((e) => e.value === v.sampleMode) * 100}%)`);
81
+ return (e, a) => E.value ? (n(), o("div", {
82
82
  key: 0,
83
83
  role: "radiogroup",
84
- "aria-label": i(x).mergeTagPreview.label,
84
+ "aria-label": i(S).mergeTagPreview.label,
85
85
  "data-testid": "merge-tag-mode-toggle",
86
86
  class: "tpl:relative tpl:grid tpl:rounded-[var(--tpl-radius-sm)] tpl:p-1",
87
87
  style: c({
88
- gridTemplateColumns: `repeat(${E.value.length}, 1fr)`,
88
+ gridTemplateColumns: `repeat(${D.value.length}, 1fr)`,
89
89
  backgroundColor: "var(--tpl-bg-hover)"
90
90
  })
91
91
  }, [u("div", {
92
92
  class: "tpl:absolute tpl:inset-y-1 tpl:rounded-[var(--tpl-radius-sm)]",
93
93
  style: c({
94
94
  left: "4px",
95
- width: `calc((100% - 8px) / ${E.value.length})`,
96
- transform: D.value,
95
+ width: `calc((100% - 8px) / ${D.value.length})`,
96
+ transform: O.value,
97
97
  backgroundColor: "var(--tpl-bg)",
98
98
  boxShadow: "var(--tpl-shadow)",
99
99
  transition: "transform 120ms cubic-bezier(0.16, 1, 0.3, 1)"
100
100
  })
101
- }, null, 4), (n(!0), o(d, null, t(E.value, (e) => (n(), o("button", {
101
+ }, null, 4), (n(!0), o(d, null, t(D.value, (e) => (n(), o("button", {
102
102
  key: String(e.value),
103
103
  role: "radio",
104
104
  "aria-checked": r.sampleMode === e.value,
@@ -109,19 +109,19 @@ var b = ["aria-label"], x = [
109
109
  transition: "color 120ms cubic-bezier(0.16, 1, 0.3, 1)"
110
110
  }),
111
111
  title: e.label,
112
- onClick: (t) => b("change", e.value)
113
- }, [e.value ? (n(), l(i(v), {
112
+ onClick: (t) => x("change", e.value)
113
+ }, [e.value ? (n(), l(i(y), {
114
114
  key: 0,
115
115
  size: 18,
116
116
  "stroke-width": 1.5
117
- })) : (n(), l(i(y), {
117
+ })) : (n(), l(i(b), {
118
118
  key: 1,
119
119
  size: 18,
120
120
  "stroke-width": 1.5
121
- })), u("span", null, f(e.label), 1)], 12, w))), 128))], 12, C)) : s("", !0);
121
+ })), u("span", null, f(e.label), 1)], 12, T))), 128))], 12, w)) : s("", !0);
122
122
  }
123
123
  });
124
124
  //#endregion
125
- export { S as n, T as t };
125
+ export { C as n, E as t };
126
126
 
127
- //# sourceMappingURL=MergeTagModeToggle-DYxkAGtA.js.map
127
+ //# sourceMappingURL=MergeTagModeToggle-n3nvSNeQ.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"MergeTagModeToggle-DYxkAGtA.js","names":[],"sources":["../../../src/components/ViewportToggle.vue","../../../src/components/ViewportToggle.vue","../../../src/components/MergeTagModeToggle.vue","../../../src/components/MergeTagModeToggle.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { useI18n } from \"../composables/useI18n\";\nimport type { ViewportSize } from \"@templatical/types\";\nimport { Monitor, Smartphone } from \"@lucide/vue\";\nimport { computed } from \"vue\";\n\nconst props = defineProps<{\n viewport: ViewportSize;\n}>();\n\nconst emit = defineEmits<{\n (e: \"change\", viewport: ViewportSize): void;\n}>();\n\nconst { t } = useI18n();\n\nconst viewports = computed(() => [\n { value: \"desktop\" as ViewportSize, label: t.viewport.desktop },\n { value: \"mobile\" as ViewportSize, label: t.viewport.mobile },\n]);\n\nconst pillOffset = computed(() => {\n const index = viewports.value.findIndex((vp) => vp.value === props.viewport);\n return `translateX(${index * 100}%)`;\n});\n</script>\n\n<template>\n <div\n role=\"radiogroup\"\n :aria-label=\"t.viewport.label\"\n class=\"tpl:relative tpl:grid tpl:rounded-[var(--tpl-radius-sm)] tpl:p-1\"\n :style=\"{\n gridTemplateColumns: `repeat(${viewports.length}, 1fr)`,\n backgroundColor: 'var(--tpl-bg-hover)',\n }\"\n >\n <!-- Sliding pill -->\n <div\n class=\"tpl:absolute tpl:inset-y-1 tpl:rounded-[var(--tpl-radius-sm)]\"\n :style=\"{\n left: '4px',\n width: `calc((100% - 8px) / ${viewports.length})`,\n transform: pillOffset,\n backgroundColor: 'var(--tpl-bg)',\n boxShadow: 'var(--tpl-shadow)',\n transition: 'transform 120ms cubic-bezier(0.16, 1, 0.3, 1)',\n }\"\n ></div>\n\n <button\n v-for=\"vp in viewports\"\n :key=\"vp.value\"\n role=\"radio\"\n :aria-checked=\"viewport === vp.value\"\n :aria-label=\"vp.label\"\n class=\"tpl:relative tpl:z-10 tpl:flex tpl:cursor-pointer tpl:items-center tpl:justify-center tpl:gap-1.5 tpl:rounded-md tpl:border-none tpl:bg-transparent tpl:px-3 tpl:py-1.5 tpl:text-xs tpl:font-medium\"\n :style=\"{\n color:\n viewport === vp.value\n ? 'var(--tpl-primary)'\n : 'var(--tpl-text-muted)',\n transition: 'color 120ms cubic-bezier(0.16, 1, 0.3, 1)',\n }\"\n :title=\"vp.label\"\n @click=\"emit('change', vp.value)\"\n >\n <Monitor v-if=\"vp.value === 'desktop'\" :size=\"18\" :stroke-width=\"1.5\" />\n <Smartphone v-else :size=\"18\" :stroke-width=\"1.5\" />\n <span>{{ vp.label }}</span>\n </button>\n </div>\n</template>\n","<script setup lang=\"ts\">\nimport { useI18n } from \"../composables/useI18n\";\nimport type { ViewportSize } from \"@templatical/types\";\nimport { Monitor, Smartphone } from \"@lucide/vue\";\nimport { computed } from \"vue\";\n\nconst props = defineProps<{\n viewport: ViewportSize;\n}>();\n\nconst emit = defineEmits<{\n (e: \"change\", viewport: ViewportSize): void;\n}>();\n\nconst { t } = useI18n();\n\nconst viewports = computed(() => [\n { value: \"desktop\" as ViewportSize, label: t.viewport.desktop },\n { value: \"mobile\" as ViewportSize, label: t.viewport.mobile },\n]);\n\nconst pillOffset = computed(() => {\n const index = viewports.value.findIndex((vp) => vp.value === props.viewport);\n return `translateX(${index * 100}%)`;\n});\n</script>\n\n<template>\n <div\n role=\"radiogroup\"\n :aria-label=\"t.viewport.label\"\n class=\"tpl:relative tpl:grid tpl:rounded-[var(--tpl-radius-sm)] tpl:p-1\"\n :style=\"{\n gridTemplateColumns: `repeat(${viewports.length}, 1fr)`,\n backgroundColor: 'var(--tpl-bg-hover)',\n }\"\n >\n <!-- Sliding pill -->\n <div\n class=\"tpl:absolute tpl:inset-y-1 tpl:rounded-[var(--tpl-radius-sm)]\"\n :style=\"{\n left: '4px',\n width: `calc((100% - 8px) / ${viewports.length})`,\n transform: pillOffset,\n backgroundColor: 'var(--tpl-bg)',\n boxShadow: 'var(--tpl-shadow)',\n transition: 'transform 120ms cubic-bezier(0.16, 1, 0.3, 1)',\n }\"\n ></div>\n\n <button\n v-for=\"vp in viewports\"\n :key=\"vp.value\"\n role=\"radio\"\n :aria-checked=\"viewport === vp.value\"\n :aria-label=\"vp.label\"\n class=\"tpl:relative tpl:z-10 tpl:flex tpl:cursor-pointer tpl:items-center tpl:justify-center tpl:gap-1.5 tpl:rounded-md tpl:border-none tpl:bg-transparent tpl:px-3 tpl:py-1.5 tpl:text-xs tpl:font-medium\"\n :style=\"{\n color:\n viewport === vp.value\n ? 'var(--tpl-primary)'\n : 'var(--tpl-text-muted)',\n transition: 'color 120ms cubic-bezier(0.16, 1, 0.3, 1)',\n }\"\n :title=\"vp.label\"\n @click=\"emit('change', vp.value)\"\n >\n <Monitor v-if=\"vp.value === 'desktop'\" :size=\"18\" :stroke-width=\"1.5\" />\n <Smartphone v-else :size=\"18\" :stroke-width=\"1.5\" />\n <span>{{ vp.label }}</span>\n </button>\n </div>\n</template>\n","<script setup lang=\"ts\">\n/**\n * Switches the previews between the two merge-tag views: **Sample** (tags\n * replaced by their `MergeTag.sample`, rendered as ordinary text) and **Label**\n * (tags shown as their label with the usual cue).\n *\n * Deliberately the same segmented control as `ViewportToggle.vue` — the two sit\n * one click apart on the same preview surfaces, so they have to read as one\n * family rather than two similar things. Kept as a separate component rather\n * than generalising the viewport one: that would mean a generic segmented\n * control with an icon map, and two call sites don't justify the indirection.\n *\n * Renders only where a preview is showing. It must never appear over the\n * editing canvas, because substitution never happens there.\n *\n * **Renders nothing at all unless some configured tag declares a `sample`.**\n * With none, the two views are identical, so the control would be inert. The\n * check lives here rather than at each call site so the guarantee holds for\n * every surface — present and future — without three `v-if`s to keep in step.\n */\nimport { hasMergeTagSamples } from \"@templatical/types\";\nimport { useI18n } from \"../composables/useI18n\";\nimport { MERGE_TAGS_KEY } from \"../keys\";\nimport { TextCursorInput, Sparkles } from \"@lucide/vue\";\nimport { computed, inject } from \"vue\";\n\nconst props = defineProps<{\n /** `true` for Sample view, `false` for Label view. */\n sampleMode: boolean;\n}>();\n\nconst emit = defineEmits<{\n (e: \"change\", sampleMode: boolean): void;\n}>();\n\nconst { t } = useI18n();\n\nconst mergeTags = inject(MERGE_TAGS_KEY, []);\nconst isAvailable = computed(() => hasMergeTagSamples(mergeTags));\n\nconst modes = computed(() => [\n { value: true, label: t.mergeTagPreview.sample },\n { value: false, label: t.mergeTagPreview.labelView },\n]);\n\nconst pillOffset = computed(() => {\n const index = modes.value.findIndex((m) => m.value === props.sampleMode);\n return `translateX(${index * 100}%)`;\n});\n</script>\n\n<template>\n <div\n v-if=\"isAvailable\"\n role=\"radiogroup\"\n :aria-label=\"t.mergeTagPreview.label\"\n data-testid=\"merge-tag-mode-toggle\"\n class=\"tpl:relative tpl:grid tpl:rounded-[var(--tpl-radius-sm)] tpl:p-1\"\n :style=\"{\n gridTemplateColumns: `repeat(${modes.length}, 1fr)`,\n backgroundColor: 'var(--tpl-bg-hover)',\n }\"\n >\n <!-- Sliding pill -->\n <div\n class=\"tpl:absolute tpl:inset-y-1 tpl:rounded-[var(--tpl-radius-sm)]\"\n :style=\"{\n left: '4px',\n width: `calc((100% - 8px) / ${modes.length})`,\n transform: pillOffset,\n backgroundColor: 'var(--tpl-bg)',\n boxShadow: 'var(--tpl-shadow)',\n transition: 'transform 120ms cubic-bezier(0.16, 1, 0.3, 1)',\n }\"\n ></div>\n\n <button\n v-for=\"mode in modes\"\n :key=\"String(mode.value)\"\n role=\"radio\"\n :aria-checked=\"sampleMode === mode.value\"\n :aria-label=\"mode.label\"\n class=\"tpl:relative tpl:z-10 tpl:flex tpl:cursor-pointer tpl:items-center tpl:justify-center tpl:gap-1.5 tpl:rounded-md tpl:border-none tpl:bg-transparent tpl:px-3 tpl:py-1.5 tpl:text-xs tpl:font-medium\"\n :style=\"{\n color:\n sampleMode === mode.value\n ? 'var(--tpl-primary)'\n : 'var(--tpl-text-muted)',\n transition: 'color 120ms cubic-bezier(0.16, 1, 0.3, 1)',\n }\"\n :title=\"mode.label\"\n @click=\"emit('change', mode.value)\"\n >\n <Sparkles v-if=\"mode.value\" :size=\"18\" :stroke-width=\"1.5\" />\n <TextCursorInput v-else :size=\"18\" :stroke-width=\"1.5\" />\n <span>{{ mode.label }}</span>\n </button>\n </div>\n</template>\n","<script setup lang=\"ts\">\n/**\n * Switches the previews between the two merge-tag views: **Sample** (tags\n * replaced by their `MergeTag.sample`, rendered as ordinary text) and **Label**\n * (tags shown as their label with the usual cue).\n *\n * Deliberately the same segmented control as `ViewportToggle.vue` — the two sit\n * one click apart on the same preview surfaces, so they have to read as one\n * family rather than two similar things. Kept as a separate component rather\n * than generalising the viewport one: that would mean a generic segmented\n * control with an icon map, and two call sites don't justify the indirection.\n *\n * Renders only where a preview is showing. It must never appear over the\n * editing canvas, because substitution never happens there.\n *\n * **Renders nothing at all unless some configured tag declares a `sample`.**\n * With none, the two views are identical, so the control would be inert. The\n * check lives here rather than at each call site so the guarantee holds for\n * every surface — present and future — without three `v-if`s to keep in step.\n */\nimport { hasMergeTagSamples } from \"@templatical/types\";\nimport { useI18n } from \"../composables/useI18n\";\nimport { MERGE_TAGS_KEY } from \"../keys\";\nimport { TextCursorInput, Sparkles } from \"@lucide/vue\";\nimport { computed, inject } from \"vue\";\n\nconst props = defineProps<{\n /** `true` for Sample view, `false` for Label view. */\n sampleMode: boolean;\n}>();\n\nconst emit = defineEmits<{\n (e: \"change\", sampleMode: boolean): void;\n}>();\n\nconst { t } = useI18n();\n\nconst mergeTags = inject(MERGE_TAGS_KEY, []);\nconst isAvailable = computed(() => hasMergeTagSamples(mergeTags));\n\nconst modes = computed(() => [\n { value: true, label: t.mergeTagPreview.sample },\n { value: false, label: t.mergeTagPreview.labelView },\n]);\n\nconst pillOffset = computed(() => {\n const index = modes.value.findIndex((m) => m.value === props.sampleMode);\n return `translateX(${index * 100}%)`;\n});\n</script>\n\n<template>\n <div\n v-if=\"isAvailable\"\n role=\"radiogroup\"\n :aria-label=\"t.mergeTagPreview.label\"\n data-testid=\"merge-tag-mode-toggle\"\n class=\"tpl:relative tpl:grid tpl:rounded-[var(--tpl-radius-sm)] tpl:p-1\"\n :style=\"{\n gridTemplateColumns: `repeat(${modes.length}, 1fr)`,\n backgroundColor: 'var(--tpl-bg-hover)',\n }\"\n >\n <!-- Sliding pill -->\n <div\n class=\"tpl:absolute tpl:inset-y-1 tpl:rounded-[var(--tpl-radius-sm)]\"\n :style=\"{\n left: '4px',\n width: `calc((100% - 8px) / ${modes.length})`,\n transform: pillOffset,\n backgroundColor: 'var(--tpl-bg)',\n boxShadow: 'var(--tpl-shadow)',\n transition: 'transform 120ms cubic-bezier(0.16, 1, 0.3, 1)',\n }\"\n ></div>\n\n <button\n v-for=\"mode in modes\"\n :key=\"String(mode.value)\"\n role=\"radio\"\n :aria-checked=\"sampleMode === mode.value\"\n :aria-label=\"mode.label\"\n class=\"tpl:relative tpl:z-10 tpl:flex tpl:cursor-pointer tpl:items-center tpl:justify-center tpl:gap-1.5 tpl:rounded-md tpl:border-none tpl:bg-transparent tpl:px-3 tpl:py-1.5 tpl:text-xs tpl:font-medium\"\n :style=\"{\n color:\n sampleMode === mode.value\n ? 'var(--tpl-primary)'\n : 'var(--tpl-text-muted)',\n transition: 'color 120ms cubic-bezier(0.16, 1, 0.3, 1)',\n }\"\n :title=\"mode.label\"\n @click=\"emit('change', mode.value)\"\n >\n <Sparkles v-if=\"mode.value\" :size=\"18\" :stroke-width=\"1.5\" />\n <TextCursorInput v-else :size=\"18\" :stroke-width=\"1.5\" />\n <span>{{ mode.label }}</span>\n </button>\n </div>\n</template>\n"],"mappings":"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"}
1
+ {"version":3,"file":"MergeTagModeToggle-n3nvSNeQ.js","names":[],"sources":["../../../src/components/ViewportToggle.vue","../../../src/components/ViewportToggle.vue","../../../src/components/MergeTagModeToggle.vue","../../../src/components/MergeTagModeToggle.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { useI18n } from \"../composables/useI18n\";\nimport type { ViewportSize } from \"@templatical/types\";\nimport { Monitor, Smartphone } from \"@lucide/vue\";\nimport { computed } from \"vue\";\n\nconst props = defineProps<{\n viewport: ViewportSize;\n}>();\n\nconst emit = defineEmits<{\n (e: \"change\", viewport: ViewportSize): void;\n}>();\n\nconst { t } = useI18n();\n\nconst viewports = computed(() => [\n { value: \"desktop\" as ViewportSize, label: t.viewport.desktop },\n { value: \"mobile\" as ViewportSize, label: t.viewport.mobile },\n]);\n\nconst pillOffset = computed(() => {\n const index = viewports.value.findIndex((vp) => vp.value === props.viewport);\n return `translateX(${index * 100}%)`;\n});\n</script>\n\n<template>\n <div\n role=\"radiogroup\"\n :aria-label=\"t.viewport.label\"\n class=\"tpl:relative tpl:grid tpl:rounded-[var(--tpl-radius-sm)] tpl:p-1\"\n :style=\"{\n gridTemplateColumns: `repeat(${viewports.length}, 1fr)`,\n backgroundColor: 'var(--tpl-bg-hover)',\n }\"\n >\n <!-- Sliding pill -->\n <div\n class=\"tpl:absolute tpl:inset-y-1 tpl:rounded-[var(--tpl-radius-sm)]\"\n :style=\"{\n left: '4px',\n width: `calc((100% - 8px) / ${viewports.length})`,\n transform: pillOffset,\n backgroundColor: 'var(--tpl-bg)',\n boxShadow: 'var(--tpl-shadow)',\n transition: 'transform 120ms cubic-bezier(0.16, 1, 0.3, 1)',\n }\"\n ></div>\n\n <button\n v-for=\"vp in viewports\"\n :key=\"vp.value\"\n role=\"radio\"\n :aria-checked=\"viewport === vp.value\"\n :aria-label=\"vp.label\"\n class=\"tpl:relative tpl:z-10 tpl:flex tpl:cursor-pointer tpl:items-center tpl:justify-center tpl:gap-1.5 tpl:rounded-md tpl:border-none tpl:bg-transparent tpl:px-3 tpl:py-1.5 tpl:text-xs tpl:font-medium\"\n :style=\"{\n color:\n viewport === vp.value\n ? 'var(--tpl-primary)'\n : 'var(--tpl-text-muted)',\n transition: 'color 120ms cubic-bezier(0.16, 1, 0.3, 1)',\n }\"\n :title=\"vp.label\"\n @click=\"emit('change', vp.value)\"\n >\n <Monitor v-if=\"vp.value === 'desktop'\" :size=\"18\" :stroke-width=\"1.5\" />\n <Smartphone v-else :size=\"18\" :stroke-width=\"1.5\" />\n <span>{{ vp.label }}</span>\n </button>\n </div>\n</template>\n","<script setup lang=\"ts\">\nimport { useI18n } from \"../composables/useI18n\";\nimport type { ViewportSize } from \"@templatical/types\";\nimport { Monitor, Smartphone } from \"@lucide/vue\";\nimport { computed } from \"vue\";\n\nconst props = defineProps<{\n viewport: ViewportSize;\n}>();\n\nconst emit = defineEmits<{\n (e: \"change\", viewport: ViewportSize): void;\n}>();\n\nconst { t } = useI18n();\n\nconst viewports = computed(() => [\n { value: \"desktop\" as ViewportSize, label: t.viewport.desktop },\n { value: \"mobile\" as ViewportSize, label: t.viewport.mobile },\n]);\n\nconst pillOffset = computed(() => {\n const index = viewports.value.findIndex((vp) => vp.value === props.viewport);\n return `translateX(${index * 100}%)`;\n});\n</script>\n\n<template>\n <div\n role=\"radiogroup\"\n :aria-label=\"t.viewport.label\"\n class=\"tpl:relative tpl:grid tpl:rounded-[var(--tpl-radius-sm)] tpl:p-1\"\n :style=\"{\n gridTemplateColumns: `repeat(${viewports.length}, 1fr)`,\n backgroundColor: 'var(--tpl-bg-hover)',\n }\"\n >\n <!-- Sliding pill -->\n <div\n class=\"tpl:absolute tpl:inset-y-1 tpl:rounded-[var(--tpl-radius-sm)]\"\n :style=\"{\n left: '4px',\n width: `calc((100% - 8px) / ${viewports.length})`,\n transform: pillOffset,\n backgroundColor: 'var(--tpl-bg)',\n boxShadow: 'var(--tpl-shadow)',\n transition: 'transform 120ms cubic-bezier(0.16, 1, 0.3, 1)',\n }\"\n ></div>\n\n <button\n v-for=\"vp in viewports\"\n :key=\"vp.value\"\n role=\"radio\"\n :aria-checked=\"viewport === vp.value\"\n :aria-label=\"vp.label\"\n class=\"tpl:relative tpl:z-10 tpl:flex tpl:cursor-pointer tpl:items-center tpl:justify-center tpl:gap-1.5 tpl:rounded-md tpl:border-none tpl:bg-transparent tpl:px-3 tpl:py-1.5 tpl:text-xs tpl:font-medium\"\n :style=\"{\n color:\n viewport === vp.value\n ? 'var(--tpl-primary)'\n : 'var(--tpl-text-muted)',\n transition: 'color 120ms cubic-bezier(0.16, 1, 0.3, 1)',\n }\"\n :title=\"vp.label\"\n @click=\"emit('change', vp.value)\"\n >\n <Monitor v-if=\"vp.value === 'desktop'\" :size=\"18\" :stroke-width=\"1.5\" />\n <Smartphone v-else :size=\"18\" :stroke-width=\"1.5\" />\n <span>{{ vp.label }}</span>\n </button>\n </div>\n</template>\n","<script setup lang=\"ts\">\n/**\n * Switches the previews between the two merge-tag views: **Sample** (tags\n * replaced by their `MergeTag.sample`, rendered as ordinary text) and **Label**\n * (tags shown as their label with the usual cue).\n *\n * Deliberately the same segmented control as `ViewportToggle.vue` — the two sit\n * one click apart on the same preview surfaces, so they have to read as one\n * family rather than two similar things. Kept as a separate component rather\n * than generalising the viewport one: that would mean a generic segmented\n * control with an icon map, and two call sites don't justify the indirection.\n *\n * Renders only where a preview is showing. It must never appear over the\n * editing canvas, because substitution never happens there.\n *\n * **Renders nothing at all unless some configured tag declares a `sample`.**\n * With none, the two views are identical, so the control would be inert. The\n * check lives here rather than at each call site so the guarantee holds for\n * every surface — present and future — without three `v-if`s to keep in step.\n */\nimport { hasMergeTagSamples } from \"@templatical/types\";\nimport { useI18n } from \"../composables/useI18n\";\nimport { MERGE_TAGS_KEY, NO_MERGE_TAGS } from \"../keys\";\nimport { TextCursorInput, Sparkles } from \"@lucide/vue\";\nimport { computed, inject } from \"vue\";\n\nconst props = defineProps<{\n /** `true` for Sample view, `false` for Label view. */\n sampleMode: boolean;\n}>();\n\nconst emit = defineEmits<{\n (e: \"change\", sampleMode: boolean): void;\n}>();\n\nconst { t } = useI18n();\n\nconst mergeTags = inject(MERGE_TAGS_KEY, NO_MERGE_TAGS);\nconst isAvailable = computed(() => hasMergeTagSamples(mergeTags.value));\n\nconst modes = computed(() => [\n { value: true, label: t.mergeTagPreview.sample },\n { value: false, label: t.mergeTagPreview.labelView },\n]);\n\nconst pillOffset = computed(() => {\n const index = modes.value.findIndex((m) => m.value === props.sampleMode);\n return `translateX(${index * 100}%)`;\n});\n</script>\n\n<template>\n <div\n v-if=\"isAvailable\"\n role=\"radiogroup\"\n :aria-label=\"t.mergeTagPreview.label\"\n data-testid=\"merge-tag-mode-toggle\"\n class=\"tpl:relative tpl:grid tpl:rounded-[var(--tpl-radius-sm)] tpl:p-1\"\n :style=\"{\n gridTemplateColumns: `repeat(${modes.length}, 1fr)`,\n backgroundColor: 'var(--tpl-bg-hover)',\n }\"\n >\n <!-- Sliding pill -->\n <div\n class=\"tpl:absolute tpl:inset-y-1 tpl:rounded-[var(--tpl-radius-sm)]\"\n :style=\"{\n left: '4px',\n width: `calc((100% - 8px) / ${modes.length})`,\n transform: pillOffset,\n backgroundColor: 'var(--tpl-bg)',\n boxShadow: 'var(--tpl-shadow)',\n transition: 'transform 120ms cubic-bezier(0.16, 1, 0.3, 1)',\n }\"\n ></div>\n\n <button\n v-for=\"mode in modes\"\n :key=\"String(mode.value)\"\n role=\"radio\"\n :aria-checked=\"sampleMode === mode.value\"\n :aria-label=\"mode.label\"\n class=\"tpl:relative tpl:z-10 tpl:flex tpl:cursor-pointer tpl:items-center tpl:justify-center tpl:gap-1.5 tpl:rounded-md tpl:border-none tpl:bg-transparent tpl:px-3 tpl:py-1.5 tpl:text-xs tpl:font-medium\"\n :style=\"{\n color:\n sampleMode === mode.value\n ? 'var(--tpl-primary)'\n : 'var(--tpl-text-muted)',\n transition: 'color 120ms cubic-bezier(0.16, 1, 0.3, 1)',\n }\"\n :title=\"mode.label\"\n @click=\"emit('change', mode.value)\"\n >\n <Sparkles v-if=\"mode.value\" :size=\"18\" :stroke-width=\"1.5\" />\n <TextCursorInput v-else :size=\"18\" :stroke-width=\"1.5\" />\n <span>{{ mode.label }}</span>\n </button>\n </div>\n</template>\n","<script setup lang=\"ts\">\n/**\n * Switches the previews between the two merge-tag views: **Sample** (tags\n * replaced by their `MergeTag.sample`, rendered as ordinary text) and **Label**\n * (tags shown as their label with the usual cue).\n *\n * Deliberately the same segmented control as `ViewportToggle.vue` — the two sit\n * one click apart on the same preview surfaces, so they have to read as one\n * family rather than two similar things. Kept as a separate component rather\n * than generalising the viewport one: that would mean a generic segmented\n * control with an icon map, and two call sites don't justify the indirection.\n *\n * Renders only where a preview is showing. It must never appear over the\n * editing canvas, because substitution never happens there.\n *\n * **Renders nothing at all unless some configured tag declares a `sample`.**\n * With none, the two views are identical, so the control would be inert. The\n * check lives here rather than at each call site so the guarantee holds for\n * every surface — present and future — without three `v-if`s to keep in step.\n */\nimport { hasMergeTagSamples } from \"@templatical/types\";\nimport { useI18n } from \"../composables/useI18n\";\nimport { MERGE_TAGS_KEY, NO_MERGE_TAGS } from \"../keys\";\nimport { TextCursorInput, Sparkles } from \"@lucide/vue\";\nimport { computed, inject } from \"vue\";\n\nconst props = defineProps<{\n /** `true` for Sample view, `false` for Label view. */\n sampleMode: boolean;\n}>();\n\nconst emit = defineEmits<{\n (e: \"change\", sampleMode: boolean): void;\n}>();\n\nconst { t } = useI18n();\n\nconst mergeTags = inject(MERGE_TAGS_KEY, NO_MERGE_TAGS);\nconst isAvailable = computed(() => hasMergeTagSamples(mergeTags.value));\n\nconst modes = computed(() => [\n { value: true, label: t.mergeTagPreview.sample },\n { value: false, label: t.mergeTagPreview.labelView },\n]);\n\nconst pillOffset = computed(() => {\n const index = modes.value.findIndex((m) => m.value === props.sampleMode);\n return `translateX(${index * 100}%)`;\n});\n</script>\n\n<template>\n <div\n v-if=\"isAvailable\"\n role=\"radiogroup\"\n :aria-label=\"t.mergeTagPreview.label\"\n data-testid=\"merge-tag-mode-toggle\"\n class=\"tpl:relative tpl:grid tpl:rounded-[var(--tpl-radius-sm)] tpl:p-1\"\n :style=\"{\n gridTemplateColumns: `repeat(${modes.length}, 1fr)`,\n backgroundColor: 'var(--tpl-bg-hover)',\n }\"\n >\n <!-- Sliding pill -->\n <div\n class=\"tpl:absolute tpl:inset-y-1 tpl:rounded-[var(--tpl-radius-sm)]\"\n :style=\"{\n left: '4px',\n width: `calc((100% - 8px) / ${modes.length})`,\n transform: pillOffset,\n backgroundColor: 'var(--tpl-bg)',\n boxShadow: 'var(--tpl-shadow)',\n transition: 'transform 120ms cubic-bezier(0.16, 1, 0.3, 1)',\n }\"\n ></div>\n\n <button\n v-for=\"mode in modes\"\n :key=\"String(mode.value)\"\n role=\"radio\"\n :aria-checked=\"sampleMode === mode.value\"\n :aria-label=\"mode.label\"\n class=\"tpl:relative tpl:z-10 tpl:flex tpl:cursor-pointer tpl:items-center tpl:justify-center tpl:gap-1.5 tpl:rounded-md tpl:border-none tpl:bg-transparent tpl:px-3 tpl:py-1.5 tpl:text-xs tpl:font-medium\"\n :style=\"{\n color:\n sampleMode === mode.value\n ? 'var(--tpl-primary)'\n : 'var(--tpl-text-muted)',\n transition: 'color 120ms cubic-bezier(0.16, 1, 0.3, 1)',\n }\"\n :title=\"mode.label\"\n @click=\"emit('change', mode.value)\"\n >\n <Sparkles v-if=\"mode.value\" :size=\"18\" :stroke-width=\"1.5\" />\n <TextCursorInput v-else :size=\"18\" :stroke-width=\"1.5\" />\n <span>{{ mode.label }}</span>\n </button>\n </div>\n</template>\n"],"mappings":"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"}
@@ -1,15 +1,15 @@
1
- import { E as e, F as t, N as n, Q as r, R as i, S as a, at as o, b as s, c, ct as l, d as u, f as d, g as f, h as p, l as m, lt as h, m as g, p as _, q as v, u as y, ut as b, y as x } from "./draggable-kbOhCgnk.js";
1
+ import { E as e, F as t, N as n, Q as r, R as i, S as a, at as o, b as s, c, ct as l, d as u, f as d, g as f, h as p, l as m, lt as h, m as g, p as _, q as v, u as y, ut as b, y as x } from "./draggable-IB4x6w2O.js";
2
2
  import { R as S } from "./src-Dwgq7hf4.js";
3
- import { E as C, S as w, T, x as E } from "./useEditorCore-Cs7rYVBo.js";
4
- import { t as D } from "./dist-CAFTQ6Y2.js";
5
- import { T as O, W as k, Y as A, g as ee, k as j, q as M, v as N } from "./keys-DBFhDFng.js";
6
- import { t as P } from "./useI18n-Dlo7R9RA.js";
7
- import { n as F } from "./usePopoverPosition-ElP3ABaV.js";
8
- import { Ct as I, P as te, R as ne, Rt as re, S as ie, Vt as ae, _ as oe, at as se, ct as ce, g as le, h as ue, it as de, l as fe, m as pe, ot as me, ut as he, x as ge, y as _e } from "./icons-BUlqGSgd.js";
3
+ import { t as C } from "./dist-CXB2_kBa.js";
4
+ import { C as w, S as T, b as E, y as D } from "./useEditorCore-BHmIp1hW.js";
5
+ import { K as O, T as k, Y as A, Z as j, g as ee, k as M, v as N } from "./keys-dJbD1QPs.js";
6
+ import { t as P } from "./useI18n-DTZ9sIcv.js";
7
+ import { n as F } from "./usePopoverPosition-gB9q-ql7.js";
8
+ import { Ct as I, P as te, R as ne, Rt as re, S as ie, Vt as ae, _ as oe, at as se, c as ce, ct as le, g as ue, h as de, it as fe, m as pe, ot as me, ut as he, x as ge, y as _e } from "./icons-BKkJ-5xF.js";
9
9
  import { t as L } from "./_plugin-vue_export-helper-B3ysoDQm.js";
10
10
  import { a as ve, n as ye, o as be, s as xe } from "./styleConstants-C_YAPdQS.js";
11
- import { t as R } from "./ColorPicker-LcrzgMoW.js";
12
- import { n as z, t as B } from "./RichTextEditorContent-D_rb0rmU.js";
11
+ import { c as R } from "./LogicTagInsertButton-DpyPozop.js";
12
+ import { n as z, t as B } from "./RichTextEditorContent-Ch5zeyZ7.js";
13
13
  //#region src/components/blocks/EmojiPickerDropdown.vue?vue&type=script&setup=true&lang.ts
14
14
  var V = [
15
15
  "aria-label",
@@ -19,8 +19,8 @@ var V = [
19
19
  __name: "EmojiPickerDropdown",
20
20
  emits: ["insert"],
21
21
  setup(e, { emit: i }) {
22
- let a = i, { categories: u, isOpen: h, toggle: g, close: v } = T(), { t: x, format: S } = P(), w = r(null), E = r(null), O = d(() => h.value);
23
- C(w, O), D(E, () => {
22
+ let a = i, { categories: u, isOpen: h, toggle: g, close: v } = T(), { t: x, format: S } = P(), E = r(null), D = r(null), O = d(() => h.value);
23
+ w(E, O), C(D, () => {
24
24
  h.value && v();
25
25
  });
26
26
  function k(e) {
@@ -28,7 +28,7 @@ var V = [
28
28
  }
29
29
  return (e, r) => (n(), f("div", {
30
30
  ref_key: "rootRef",
31
- ref: E,
31
+ ref: D,
32
32
  class: "tpl:relative"
33
33
  }, [_("button", {
34
34
  type: "button",
@@ -46,7 +46,7 @@ var V = [
46
46
  key: 0,
47
47
  id: "tpl-emoji-picker",
48
48
  ref_key: "pickerRef",
49
- ref: w,
49
+ ref: E,
50
50
  role: "dialog",
51
51
  "aria-modal": "false",
52
52
  "aria-label": o(x).paragraphEditor.insertEmoji,
@@ -158,7 +158,7 @@ var Ee = ["data-tpl-theme", "aria-label"], De = { class: "tpl:flex tpl:items-cen
158
158
  "add-logic-tag"
159
159
  ],
160
160
  setup(t, { emit: r }) {
161
- let i = t, a = r, c = e(k, null), l = e(M, null), m = A(N, "ParagraphToolbar"), v = F(), S = e(j, null), C = e(O, null), w = e(ee, null), T = d(() => (S?.isOpen.value ?? !1) || (C?.isOpen.value ?? !1)), { t: E } = P(), D = m.fonts;
161
+ let i = t, a = r, c = e(O, null), l = e(A, null), m = j(N, "ParagraphToolbar"), v = F(), S = e(M, null), C = e(k, null), w = e(ee, null), T = d(() => (S?.isOpen.value ?? !1) || (C?.isOpen.value ?? !1)), { t: E } = P(), D = m.fonts;
162
162
  function I(e) {
163
163
  i.editor?.chain().focus().insertContent(e).run();
164
164
  }
@@ -300,7 +300,7 @@ var Ee = ["data-tpl-theme", "aria-label"], De = { class: "tpl:flex tpl:items-cen
300
300
  "active"
301
301
  ]),
302
302
  s(q, {
303
- icon: o(fe),
303
+ icon: o(ce),
304
304
  label: o(E).paragraphEditor.underline,
305
305
  active: t.editor.isActive("underline"),
306
306
  onClick: r[2] ||= (e) => t.editor.chain().focus().toggleUnderline().run()
@@ -342,7 +342,7 @@ var Ee = ["data-tpl-theme", "aria-label"], De = { class: "tpl:flex tpl:items-cen
342
342
  ]),
343
343
  s(Z),
344
344
  s(q, {
345
- icon: o(ce),
345
+ icon: o(le),
346
346
  label: o(E).paragraphEditor.addLink,
347
347
  active: t.editor.isActive("link"),
348
348
  onClick: r[6] ||= (e) => a("open-link-dialog")
@@ -384,7 +384,7 @@ var Ee = ["data-tpl-theme", "aria-label"], De = { class: "tpl:flex tpl:items-cen
384
384
  "active"
385
385
  ]),
386
386
  s(q, {
387
- icon: o(oe),
387
+ icon: o(ue),
388
388
  label: o(E).paragraphEditor.alignCenter,
389
389
  active: t.editor.isActive({ textAlign: "center" }),
390
390
  onClick: r[10] ||= (e) => t.editor.chain().focus().setTextAlign("center").run()
@@ -394,7 +394,7 @@ var Ee = ["data-tpl-theme", "aria-label"], De = { class: "tpl:flex tpl:items-cen
394
394
  "active"
395
395
  ]),
396
396
  s(q, {
397
- icon: o(le),
397
+ icon: o(de),
398
398
  label: o(E).paragraphEditor.alignRight,
399
399
  active: t.editor.isActive({ textAlign: "right" }),
400
400
  onClick: r[11] ||= (e) => t.editor.chain().focus().setTextAlign("right").run()
@@ -404,7 +404,7 @@ var Ee = ["data-tpl-theme", "aria-label"], De = { class: "tpl:flex tpl:items-cen
404
404
  "active"
405
405
  ]),
406
406
  s(q, {
407
- icon: o(ue),
407
+ icon: o(oe),
408
408
  label: o(E).paragraphEditor.alignJustify,
409
409
  active: t.editor.isActive({ textAlign: "justify" }),
410
410
  onClick: r[12] ||= (e) => t.editor.chain().focus().setTextAlign("justify").run()
@@ -467,7 +467,7 @@ var Ee = ["data-tpl-theme", "aria-label"], De = { class: "tpl:flex tpl:items-cen
467
467
  size: 16,
468
468
  "stroke-width": 2
469
469
  }), x(" " + b(o(E).logicTag.insertShort), 1)], 8, Ae)], 64)) : p("", !0)
470
- ])], 64)) : (n(), f("div", je, [s(o(de), {
470
+ ])], 64)) : (n(), f("div", je, [s(o(fe), {
471
471
  class: "tpl-spinner",
472
472
  size: 14,
473
473
  "stroke-width": 2
@@ -481,25 +481,25 @@ var Ee = ["data-tpl-theme", "aria-label"], De = { class: "tpl:flex tpl:items-cen
481
481
  },
482
482
  emits: ["done"],
483
483
  setup(t, { emit: r }) {
484
- let i = t, a = r, c = F(), l = e(ee, null), u = S(l?.content?.value?.settings ?? { locale: "en" }) === "rtl" ? "right" : "left", { editor: d, EditorContent: p, isLoading: m, initError: h, retry: g, showLinkDialog: _, linkUrl: y, linkColor: b, linkDialogRef: x, canRequestMergeTag: C, canInsertLogicTag: T, openLinkDialog: D, insertLink: O, removeLink: k, closeLinkDialog: A, handleLinkKeydown: j, handleAddMergeTag: M, handleAddLogicTag: N } = E({
484
+ let i = t, a = r, c = F(), l = e(ee, null), u = S(l?.content?.value?.settings ?? { locale: "en" }) === "rtl" ? "right" : "left", { editor: d, EditorContent: p, isLoading: m, initError: h, retry: g, showLinkDialog: _, linkUrl: y, linkColor: b, linkDialogRef: x, canRequestMergeTag: C, canInsertLogicTag: w, openLinkDialog: T, insertLink: O, removeLink: k, closeLinkDialog: A, handleLinkKeydown: j, handleAddMergeTag: M, handleAddLogicTag: N } = D({
485
485
  blockId: () => i.block.id,
486
486
  blockContent: () => i.block.content,
487
487
  onDone: () => a("done"),
488
488
  editorName: "ParagraphEditor",
489
489
  async loadExtensions({ mergeTags: e, syntax: t, triggerChar: n, autocompleteEnabled: r, suggestionEmptyText: i }) {
490
- let [{ Editor: a, EditorContent: o }, { default: s }, { default: l }, { default: d }, { default: f }, { default: p }, { default: m }, { TextStyle: h }, { default: g }, { default: _ }, { default: v }, { MergeTagNode: y, MergeTagSuggestion: b, LogicMergeTagNode: x, FontSize: S, LineHeight: C, LetterSpacing: T, LineBoundaryKeys: E }] = await Promise.all([
491
- import("./tiptap-Epe8m3Vo.js").then((e) => e.r),
492
- import("./tiptap-Epe8m3Vo.js").then((e) => e.i),
493
- import("./tiptap-Epe8m3Vo.js").then((e) => e.l),
494
- import("./tiptap-Epe8m3Vo.js").then((e) => e.a),
495
- import("./tiptap-Epe8m3Vo.js").then((e) => e.c),
496
- import("./tiptap-Epe8m3Vo.js").then((e) => e.s),
497
- import("./tiptap-Epe8m3Vo.js").then((e) => e.o),
498
- import("./tiptap-Epe8m3Vo.js").then((e) => e.p),
499
- import("./tiptap-Epe8m3Vo.js").then((e) => e.f),
500
- import("./tiptap-Epe8m3Vo.js").then((e) => e.d),
501
- import("./tiptap-Epe8m3Vo.js").then((e) => e.u),
502
- import("./extensions-B8_jnIkD.js")
490
+ let [{ Editor: a, EditorContent: o }, { default: s }, { default: l }, { default: d }, { default: f }, { default: p }, { default: m }, { TextStyle: h }, { default: g }, { default: _ }, { default: v }, { MergeTagNode: y, MergeTagSuggestion: b, LogicMergeTagNode: x, FontSize: S, LineHeight: C, LetterSpacing: w, LineBoundaryKeys: T }] = await Promise.all([
491
+ import("./tiptap-DhLuKyDc.js").then((e) => e.i),
492
+ import("./tiptap-DhLuKyDc.js").then((e) => e.a),
493
+ import("./tiptap-DhLuKyDc.js").then((e) => e.u),
494
+ import("./tiptap-DhLuKyDc.js").then((e) => e.o),
495
+ import("./tiptap-DhLuKyDc.js").then((e) => e.l),
496
+ import("./tiptap-DhLuKyDc.js").then((e) => e.c),
497
+ import("./tiptap-DhLuKyDc.js").then((e) => e.s),
498
+ import("./tiptap-DhLuKyDc.js").then((e) => e.m),
499
+ import("./tiptap-DhLuKyDc.js").then((e) => e.p),
500
+ import("./tiptap-DhLuKyDc.js").then((e) => e.f),
501
+ import("./tiptap-DhLuKyDc.js").then((e) => e.d),
502
+ import("./extensions-Bhu8UEE5.js")
503
503
  ]);
504
504
  return {
505
505
  TiptapEditor: a,
@@ -516,7 +516,7 @@ var Ee = ["data-tpl-theme", "aria-label"], De = { class: "tpl:flex tpl:items-cen
516
516
  d,
517
517
  f,
518
518
  p,
519
- w(l).configure({
519
+ E(l).configure({
520
520
  openOnClick: !1,
521
521
  HTMLAttributes: {
522
522
  target: "_blank",
@@ -533,15 +533,15 @@ var Ee = ["data-tpl-theme", "aria-label"], De = { class: "tpl:flex tpl:items-cen
533
533
  v.configure({ multicolor: !0 }),
534
534
  S,
535
535
  C,
536
- T,
536
+ w,
537
537
  y.configure({
538
- mergeTags: e,
538
+ mergeTags: () => e.value,
539
539
  syntax: t
540
540
  }),
541
541
  x.configure({ syntax: t }),
542
- E,
543
- ...r && n && e.length > 0 ? [b.configure({
544
- mergeTags: e,
542
+ T,
543
+ ...r && n && e.value.length > 0 ? [b.configure({
544
+ mergeTags: () => e.value,
545
545
  char: n,
546
546
  emptyText: i,
547
547
  popoverRoot: c
@@ -556,8 +556,8 @@ var Ee = ["data-tpl-theme", "aria-label"], De = { class: "tpl:flex tpl:items-cen
556
556
  "toolbar-position": t.toolbarPosition,
557
557
  "is-loading": o(m),
558
558
  "can-request-merge-tag": o(C),
559
- "can-insert-logic-tag": o(T),
560
- onOpenLinkDialog: o(D),
559
+ "can-insert-logic-tag": o(w),
560
+ onOpenLinkDialog: o(T),
561
561
  onAddMergeTag: o(M),
562
562
  onAddLogicTag: o(N)
563
563
  }, null, 8, [
@@ -613,4 +613,4 @@ var Ee = ["data-tpl-theme", "aria-label"], De = { class: "tpl:flex tpl:items-cen
613
613
  //#endregion
614
614
  export { Pe as default };
615
615
 
616
- //# sourceMappingURL=ParagraphEditor-Bd-GQXee.js.map
616
+ //# sourceMappingURL=ParagraphEditor-DO4RzP8l.js.map