@templatical/editor 0.28.0 → 0.29.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 (164) hide show
  1. package/dist/{AiChatSidebar-mZyf81xG.js → AiChatSidebar-KeS30iRG.js} +7 -7
  2. package/dist/{AiFeatureMenu-wpL2vbbd.js → AiFeatureMenu-CCdTgCy7.js} +4 -4
  3. package/dist/{BlockIssueBadge-CavnyR3o.js → BlockIssueBadge-DQ6jBV1T.js} +2 -2
  4. package/dist/{BlockPreviewCanvas-CeNJqtJ6.js → BlockPreviewCanvas-MgXVXOG_.js} +21 -14
  5. package/dist/{CloudHeaderExtras-fH0cB-Ru.js → CloudHeaderExtras-L_b51XVJ.js} +2 -2
  6. package/dist/{CloudPanels-Davlnzfd.js → CloudPanels-XUtScYFl.js} +3 -3
  7. package/dist/{CollaboratorBar-BvQZriPA.js → CollaboratorBar-Cx5klY7H.js} +2 -2
  8. package/dist/{ColorPicker-OLSFZBBZ.js → ColorPicker-DjfecH79.js} +1 -1
  9. package/dist/{CommentsPanel-B4_63eIS.js → CommentsPanel-5QxgkKF-.js} +1 -1
  10. package/dist/{CommentsSidebar-BkBHMXez.js → CommentsSidebar-CScszOsC.js} +10 -10
  11. package/dist/{CountdownToolbar-D8FsDIfa.js → CountdownToolbar-CiBrLbq0.js} +1 -1
  12. package/dist/{DesignReferenceSidebar-Dp44REBY.js → DesignReferenceSidebar-B1__DJJI.js} +5 -5
  13. package/dist/{IssuesPanel-C1v3dmoB.js → IssuesPanel-CkuV9Fjp.js} +5 -5
  14. package/dist/{MergeTagModeToggle-CZN0Pr1o.js → MergeTagModeToggle-oX-n91fH.js} +2 -2
  15. package/dist/{MergeTagSuggestion-a7Tk8tBB.js → MergeTagSuggestion-BUozNVtA.js} +55 -39
  16. package/dist/{ParagraphEditor-CGxsm0Mx.js → ParagraphEditor-BVlMj-YW.js} +19 -19
  17. package/dist/{RestoreVersionDialog-BLW8wC1J.js → RestoreVersionDialog-CZRLWoqP.js} +3 -3
  18. package/dist/{RichTextEditorContent-COBy_Q9j.js → RichTextEditorContent-BN6RBSZG.js} +3 -3
  19. package/dist/{SaveBlockDialog-DPDQTGTB.js → SaveBlockDialog-KNQVLcUG.js} +6 -6
  20. package/dist/{SavedBlocksBrowserModal-D8a-wIRe.js → SavedBlocksBrowserModal-D7qatvfw.js} +7 -7
  21. package/dist/{SavedBlocksPanels-CmnGyJHO.js → SavedBlocksPanels-bizAFdNK.js} +1 -1
  22. package/dist/{SavedBlocksPickBar-Z-YRd488.js → SavedBlocksPickBar-BXUSoa38.js} +2 -2
  23. package/dist/{TemplateScoringPanel-5zp1qOSl.js → TemplateScoringPanel-Dm83xt9R.js} +10 -10
  24. package/dist/{TestEmailModal-C69UbsNy.js → TestEmailModal-DAdO9Gmo.js} +7 -7
  25. package/dist/{TestEmailPanel-CH2dG-8A.js → TestEmailPanel-DORs6xk0.js} +1 -1
  26. package/dist/{TitleEditor-BfWPus_C.js → TitleEditor-B_aWxZER.js} +8 -8
  27. package/dist/{TplModal-DBlMd7h9.js → TplModal-7623HR5x.js} +1 -1
  28. package/dist/{VersionHistoryMenu-Cg4UKxKc.js → VersionHistoryMenu-D7lgozpw.js} +4 -4
  29. package/dist/{VersionHistoryPanels-BKjbNEOM.js → VersionHistoryPanels-Dor0p1Ur.js} +1 -1
  30. package/dist/{VersionPreviewBanner-B0thyJ8F.js → VersionPreviewBanner-CQt2il1L.js} +1 -1
  31. package/dist/{blockTypeIcons-CQMkcHo9.js → blockTypeIcons-Di4AsjQx.js} +2 -2
  32. package/dist/bundle-stats.json +6 -6
  33. package/dist/cdn/chunks/{AiChatSidebar-BQATQ3Tr.js → AiChatSidebar-Cwr9eqTh.js} +2 -2
  34. package/dist/cdn/chunks/{AiChatSidebar-BQATQ3Tr.js.map → AiChatSidebar-Cwr9eqTh.js.map} +1 -1
  35. package/dist/cdn/chunks/{AiFeatureMenu-cNoZ0xl_.js → AiFeatureMenu-CT2QiHmi.js} +3 -3
  36. package/dist/cdn/chunks/{AiFeatureMenu-cNoZ0xl_.js.map → AiFeatureMenu-CT2QiHmi.js.map} +1 -1
  37. package/dist/cdn/chunks/{BlockIssueBadge-CH_3vFw4.js → BlockIssueBadge-CXlXn9Sm.js} +2 -2
  38. package/dist/cdn/chunks/{BlockIssueBadge-CH_3vFw4.js.map → BlockIssueBadge-CXlXn9Sm.js.map} +1 -1
  39. package/dist/cdn/chunks/{BlockPreviewCanvas-9tFXPVgi.js → BlockPreviewCanvas-BisO3JEy.js} +22 -15
  40. package/dist/cdn/chunks/BlockPreviewCanvas-BisO3JEy.js.map +1 -0
  41. package/dist/cdn/chunks/{CloudHeaderExtras-CUAM2ADe.js → CloudHeaderExtras-MRCYqip8.js} +3 -3
  42. package/dist/cdn/chunks/{CloudHeaderExtras-CUAM2ADe.js.map → CloudHeaderExtras-MRCYqip8.js.map} +1 -1
  43. package/dist/cdn/chunks/{CloudPanels-DMnnSIkX.js → CloudPanels-Bb9qSwKJ.js} +4 -4
  44. package/dist/cdn/chunks/{CloudPanels-DMnnSIkX.js.map → CloudPanels-Bb9qSwKJ.js.map} +1 -1
  45. package/dist/cdn/chunks/{CollaboratorBar-C6sorNRi.js → CollaboratorBar-CG13kDHu.js} +3 -3
  46. package/dist/cdn/chunks/{CollaboratorBar-C6sorNRi.js.map → CollaboratorBar-CG13kDHu.js.map} +1 -1
  47. package/dist/cdn/chunks/{ColorPicker-q1V7ggWI.js → ColorPicker-UpN24AsB.js} +2 -2
  48. package/dist/cdn/chunks/{ColorPicker-q1V7ggWI.js.map → ColorPicker-UpN24AsB.js.map} +1 -1
  49. package/dist/cdn/chunks/{CommentsPanel-ExfxJZM3.js → CommentsPanel-CIcIXzOB.js} +2 -2
  50. package/dist/cdn/chunks/{CommentsPanel-ExfxJZM3.js.map → CommentsPanel-CIcIXzOB.js.map} +1 -1
  51. package/dist/cdn/chunks/{CommentsSidebar-CzALURMJ.js → CommentsSidebar-CB5Z8xNz.js} +2 -2
  52. package/dist/cdn/chunks/{CommentsSidebar-CzALURMJ.js.map → CommentsSidebar-CB5Z8xNz.js.map} +1 -1
  53. package/dist/cdn/chunks/{CountdownToolbar-CkbWSrAH.js → CountdownToolbar-B1L0IK1T.js} +2 -2
  54. package/dist/cdn/chunks/{CountdownToolbar-CkbWSrAH.js.map → CountdownToolbar-B1L0IK1T.js.map} +1 -1
  55. package/dist/cdn/chunks/{DesignReferenceSidebar-COh0Rx_A.js → DesignReferenceSidebar-BwsfOFsc.js} +2 -2
  56. package/dist/cdn/chunks/{DesignReferenceSidebar-COh0Rx_A.js.map → DesignReferenceSidebar-BwsfOFsc.js.map} +1 -1
  57. package/dist/cdn/chunks/{IssuesPanel-C1NG0xRI.js → IssuesPanel-3nTCyKgK.js} +2 -2
  58. package/dist/cdn/chunks/{IssuesPanel-C1NG0xRI.js.map → IssuesPanel-3nTCyKgK.js.map} +1 -1
  59. package/dist/cdn/chunks/{MergeTagModeToggle-B1yXCp3D.js → MergeTagModeToggle-BUNsRKs6.js} +2 -2
  60. package/dist/cdn/chunks/{MergeTagModeToggle-B1yXCp3D.js.map → MergeTagModeToggle-BUNsRKs6.js.map} +1 -1
  61. package/dist/cdn/chunks/{MergeTagSuggestion-DqYR3jPA.js → MergeTagSuggestion-Dt6I8bZi.js} +2 -2
  62. package/dist/cdn/chunks/{MergeTagSuggestion-DqYR3jPA.js.map → MergeTagSuggestion-Dt6I8bZi.js.map} +1 -1
  63. package/dist/cdn/chunks/{ParagraphEditor-DPM1hUKo.js → ParagraphEditor-BtzkHfv2.js} +17 -17
  64. package/dist/cdn/chunks/{ParagraphEditor-DPM1hUKo.js.map → ParagraphEditor-BtzkHfv2.js.map} +1 -1
  65. package/dist/cdn/chunks/{RestoreVersionDialog-Dz0bX5ZZ.js → RestoreVersionDialog-DNoo-EBT.js} +3 -3
  66. package/dist/cdn/chunks/{RestoreVersionDialog-Dz0bX5ZZ.js.map → RestoreVersionDialog-DNoo-EBT.js.map} +1 -1
  67. package/dist/cdn/chunks/{RichTextEditorContent-nkyIRAyN.js → RichTextEditorContent-BQATmyd9.js} +3 -3
  68. package/dist/cdn/chunks/{RichTextEditorContent-nkyIRAyN.js.map → RichTextEditorContent-BQATmyd9.js.map} +1 -1
  69. package/dist/cdn/chunks/{SaveBlockDialog-DVMxZbmf.js → SaveBlockDialog-DB37Vmqt.js} +5 -5
  70. package/dist/cdn/chunks/{SaveBlockDialog-DVMxZbmf.js.map → SaveBlockDialog-DB37Vmqt.js.map} +1 -1
  71. package/dist/cdn/chunks/{SavedBlocksBrowserModal-C3nfKRQg.js → SavedBlocksBrowserModal-CTU2rGWQ.js} +6 -6
  72. package/dist/cdn/chunks/{SavedBlocksBrowserModal-C3nfKRQg.js.map → SavedBlocksBrowserModal-CTU2rGWQ.js.map} +1 -1
  73. package/dist/cdn/chunks/{SavedBlocksPanels-DVat5S7j.js → SavedBlocksPanels-B9h9wI6d.js} +2 -2
  74. package/dist/cdn/chunks/{SavedBlocksPanels-DVat5S7j.js.map → SavedBlocksPanels-B9h9wI6d.js.map} +1 -1
  75. package/dist/cdn/chunks/{SavedBlocksPickBar-Brg8US_n.js → SavedBlocksPickBar-CTY5WZum.js} +3 -3
  76. package/dist/cdn/chunks/{SavedBlocksPickBar-Brg8US_n.js.map → SavedBlocksPickBar-CTY5WZum.js.map} +1 -1
  77. package/dist/cdn/chunks/{TemplateScoringPanel-DO86BvdQ.js → TemplateScoringPanel-DZ0cpe_D.js} +7 -7
  78. package/dist/cdn/chunks/{TemplateScoringPanel-DO86BvdQ.js.map → TemplateScoringPanel-DZ0cpe_D.js.map} +1 -1
  79. package/dist/cdn/chunks/{TestEmailModal-CDx1Pqtx.js → TestEmailModal-Dqx1RyDE.js} +7 -7
  80. package/dist/cdn/chunks/TestEmailModal-Dqx1RyDE.js.map +1 -0
  81. package/dist/cdn/chunks/{TestEmailPanel--PpajGV7.js → TestEmailPanel-DrcQhnON.js} +2 -2
  82. package/dist/cdn/chunks/{TestEmailPanel--PpajGV7.js.map → TestEmailPanel-DrcQhnON.js.map} +1 -1
  83. package/dist/cdn/chunks/{TitleEditor-CLkXt5RZ.js → TitleEditor-CSeDvWVn.js} +8 -8
  84. package/dist/cdn/chunks/{TitleEditor-CLkXt5RZ.js.map → TitleEditor-CSeDvWVn.js.map} +1 -1
  85. package/dist/cdn/chunks/{TplModal-BhfPoZ_W.js → TplModal-BNBLwBxJ.js} +2 -2
  86. package/dist/cdn/chunks/{TplModal-BhfPoZ_W.js.map → TplModal-BNBLwBxJ.js.map} +1 -1
  87. package/dist/cdn/chunks/{VersionHistoryMenu-_DyRYBRP.js → VersionHistoryMenu-cZlb0sMi.js} +2 -2
  88. package/dist/cdn/chunks/{VersionHistoryMenu-_DyRYBRP.js.map → VersionHistoryMenu-cZlb0sMi.js.map} +1 -1
  89. package/dist/cdn/chunks/{VersionHistoryPanels-DGfOOcKV.js → VersionHistoryPanels-DgrjTK3z.js} +2 -2
  90. package/dist/cdn/chunks/{VersionHistoryPanels-DGfOOcKV.js.map → VersionHistoryPanels-DgrjTK3z.js.map} +1 -1
  91. package/dist/cdn/chunks/{VersionPreviewBanner-FbBmgknN.js → VersionPreviewBanner-BNq7PRun.js} +2 -2
  92. package/dist/cdn/chunks/{VersionPreviewBanner-FbBmgknN.js.map → VersionPreviewBanner-BNq7PRun.js.map} +1 -1
  93. package/dist/cdn/chunks/{blockTypeIcons-o4ammRlm.js → blockTypeIcons-BNGmmzB_.js} +2 -2
  94. package/dist/cdn/chunks/{blockTypeIcons-o4ammRlm.js.map → blockTypeIcons-BNGmmzB_.js.map} +1 -1
  95. package/dist/cdn/chunks/createCloudRuntime-B_HRgFxU.js +443 -0
  96. package/dist/cdn/chunks/createCloudRuntime-B_HRgFxU.js.map +1 -0
  97. package/dist/cdn/chunks/emailFrameWidth-BmFCN2dp.js.map +1 -1
  98. package/dist/cdn/chunks/en-BZlZVGwM.js +2 -0
  99. package/dist/cdn/chunks/{extensions-qSqWdFko.js → extensions-Deqilwp8.js} +3 -3
  100. package/dist/cdn/chunks/{extensions-qSqWdFko.js.map → extensions-Deqilwp8.js.map} +1 -1
  101. package/dist/cdn/chunks/{icons-MeYdeH4P.js → icons-C2kP4vOJ.js} +17 -17
  102. package/dist/cdn/chunks/{icons-MeYdeH4P.js.map → icons-C2kP4vOJ.js.map} +1 -1
  103. package/dist/cdn/chunks/{src-2QDLdUyx.js → src-CgIXdQlX.js} +3 -3
  104. package/dist/cdn/chunks/{src-2QDLdUyx.js.map → src-CgIXdQlX.js.map} +1 -1
  105. package/dist/cdn/chunks/{src-DgxiymKd.js → src-CnQgwcsc.js} +2 -2
  106. package/dist/cdn/chunks/{src-DgxiymKd.js.map → src-CnQgwcsc.js.map} +1 -1
  107. package/dist/cdn/chunks/{tiptap-DgH_wKK_.js → tiptap-DOw5Yb4H.js} +3276 -3229
  108. package/dist/cdn/chunks/tiptap-DOw5Yb4H.js.map +1 -0
  109. package/dist/cdn/chunks/{useEditorCore-2ZVOY0Rh.js → useEditorCore-Dq5gdn5i.js} +435 -411
  110. package/dist/cdn/chunks/useEditorCore-Dq5gdn5i.js.map +1 -0
  111. package/dist/cdn/editor.css +1 -1
  112. package/dist/cdn/editor.js +1362 -1352
  113. package/dist/cdn/editor.js.map +1 -1
  114. package/dist/{check-CLfibuQc.js → check-Cv96tY88.js} +1 -1
  115. package/dist/{chevron-down-DamTR8ta.js → chevron-down-BwEyjSjd.js} +1 -1
  116. package/dist/{chevron-up-CrV_Ksg-.js → chevron-up-C6Ye-Nzc.js} +1 -1
  117. package/dist/{circle-alert-BLy-e34e.js → circle-alert-BLt_gkcU.js} +1 -1
  118. package/dist/{clock-DQI6aaFT.js → clock-D-2BI0Co.js} +1 -1
  119. package/dist/createCloudRuntime-CWPQ7puE.js +441 -0
  120. package/dist/{createLucideIcon-Cbl3Ma_H.js → createLucideIcon-DGRWivCX.js} +2 -2
  121. package/dist/{dist-CgXIMxZc.js → dist-BG2cHdqw.js} +2 -2
  122. package/dist/{dist-CclsUQ7r.js → dist-BIFUEhwQ.js} +2 -2
  123. package/dist/{dist-DUn6jY0n.js → dist-BUh4MT4D.js} +2111 -2086
  124. package/dist/{dist-7Lr_A7Va.js → dist-BpHkLruF.js} +5 -4
  125. package/dist/{dist-C145btxT.js → dist-BtPhkQ2u.js} +154 -162
  126. package/dist/{dist-CQQNoHxz.js → dist-Btz6cFCI.js} +4 -4
  127. package/dist/dist-CCfNhI54.js +5 -0
  128. package/dist/{dist-D4Jb08yv.js → dist-CHp21juN.js} +2 -2
  129. package/dist/dist-CMcNDUcw.js +5 -0
  130. package/dist/{dist-CLc1cpN2.js → dist-DAR13YWM.js} +6 -5
  131. package/dist/{dist-Dx-KOuOj.js → dist-DQ_4a0hb.js} +2 -2
  132. package/dist/{dist-Dz7KUOSg.js → dist-q3Puexqv.js} +2 -2
  133. package/dist/{extensions-PJK0gLCL.js → extensions-BlYe3NFn.js} +3 -3
  134. package/dist/{image-up-BVOMy_Fs.js → image-up-KRq0lcdU.js} +1 -1
  135. package/dist/index.d.ts +146 -117
  136. package/dist/{info-BKMKasyT.js → info-DbmE2JAo.js} +1 -1
  137. package/dist/{loader-circle-CSGh8n8A.js → loader-circle-dSap9DfQ.js} +1 -1
  138. package/dist/{message-circle-C6q2Fm_W.js → message-circle-qSKKLbac.js} +1 -1
  139. package/dist/{pencil-DaTN0HKw.js → pencil-DMP8vL2F.js} +1 -1
  140. package/dist/{refresh-cw-Cu4wRQwT.js → refresh-cw-WXtBeMva.js} +1 -1
  141. package/dist/{scan-line-O_o657Gv.js → scan-line-BTrngVuN.js} +1 -1
  142. package/dist/{send-GS3soauT.js → send-CLa8Cxmh.js} +1 -1
  143. package/dist/{shield-check-B2TzT3Wp.js → shield-check-42WZrKQu.js} +1 -1
  144. package/dist/{sparkles-CNENcXZl.js → sparkles-DcOb0umz.js} +1 -1
  145. package/dist/style.css +1 -1
  146. package/dist/templatical-editor.js +725 -715
  147. package/dist/{text-align-start-D0-k8RUf.js → text-align-start-zoZhXJ2T.js} +1 -1
  148. package/dist/{trash-2-BE-qGIpG.js → trash-2-Capv4cSE.js} +1 -1
  149. package/dist/{triangle-alert-DNM2_dyh.js → triangle-alert-CnJUGX-6.js} +1 -1
  150. package/dist/{upload-Cv2Jx-yM.js → upload-Bc0ZTywl.js} +1 -1
  151. package/dist/{useEditorCore-DM8vzMZQ.js → useEditorCore-CIjO_NM9.js} +1094 -1072
  152. package/dist/{useScrollToBlock-C2LYXENK.js → useScrollToBlock-C2-9xCr7.js} +1 -1
  153. package/dist/{x-DUPrT6Aa.js → x-CvPZ3OAd.js} +1 -1
  154. package/package.json +22 -22
  155. package/dist/cdn/chunks/BlockPreviewCanvas-9tFXPVgi.js.map +0 -1
  156. package/dist/cdn/chunks/TestEmailModal-CDx1Pqtx.js.map +0 -1
  157. package/dist/cdn/chunks/createCloudRuntime-C-u7oIGa.js +0 -344
  158. package/dist/cdn/chunks/createCloudRuntime-C-u7oIGa.js.map +0 -1
  159. package/dist/cdn/chunks/en-C6FKrw69.js +0 -2
  160. package/dist/cdn/chunks/tiptap-DgH_wKK_.js.map +0 -1
  161. package/dist/cdn/chunks/useEditorCore-2ZVOY0Rh.js.map +0 -1
  162. package/dist/createCloudRuntime-BrgMP9gS.js +0 -342
  163. package/dist/dist-D-ulkdvF.js +0 -5
  164. package/dist/dist-Kf9u4ULN.js +0 -5
@@ -1,4 +1,4 @@
1
- import { E as e, G as t, Gn as n, Wn as r, et as i, f as a, fn as o, gn as s, lt as c, nt as l, pn as u, u as d, v as f } from "./dist-DUn6jY0n.js";
1
+ import { E as e, G as t, Gn as n, Wn as r, et as i, f as a, fn as o, gn as s, lt as c, nt as l, pn as u, u as d, v as f } from "./dist-BUh4MT4D.js";
2
2
  //#region ../../node_modules/.pnpm/linkifyjs@4.3.3/node_modules/linkifyjs/dist/linkify.mjs
3
3
  var p = "aaa1rp3bb0ott3vie4c1le2ogado5udhabi7c0ademy5centure6ountant0s9o1tor4d0s1ult4e0g1ro2tna4f0l1rica5g0akhan5ency5i0g1rbus3force5tel5kdn3l0ibaba4pay4lfinanz6state5y2sace3tom5m0azon4ericanexpress7family11x2fam3ica3sterdam8nalytics7droid5quan4z2o0l2partments8p0le4q0uarelle8r0ab1mco4chi3my2pa2t0e3s0da2ia2sociates9t0hleta5torney7u0ction5di0ble3o3spost5thor3o0s4w0s2x0a2z0ure5ba0by2idu3namex4d1k2r0celona5laycard4s5efoot5gains6seball5ketball8uhaus5yern5b0c1t1va3cg1n2d1e0ats2uty4er2rlin4st0buy5t2f1g1h0arti5i0ble3d1ke2ng0o3o1z2j1lack0friday9ockbuster8g1omberg7ue3m0s1w2n0pparibas9o0ats3ehringer8fa2m1nd2o0k0ing5sch2tik2on4t1utique6x2r0adesco6idgestone9oadway5ker3ther5ussels7s1t1uild0ers6siness6y1zz3v1w1y1z0h3ca0b1fe2l0l1vinklein9m0era3p2non3petown5ital0one8r0avan4ds2e0er0s4s2sa1e1h1ino4t0ering5holic7ba1n1re3c1d1enter4o1rn3f0a1d2g1h0anel2nel4rity4se2t2eap3intai5ristmas6ome4urch5i0priani6rcle4sco3tadel4i0c2y3k1l0aims4eaning6ick2nic1que6othing5ud3ub0med6m1n1o0ach3des3ffee4llege4ogne5m0mbank4unity6pany2re3uter5sec4ndos3struction8ulting7tact3ractors9oking4l1p2rsica5untry4pon0s4rses6pa2r0edit0card4union9icket5own3s1uise0s6u0isinella9v1w1x1y0mru3ou3z2dad1nce3ta1e1ing3sun4y2clk3ds2e0al0er2s3gree4livery5l1oitte5ta3mocrat6ntal2ist5si0gn4v2hl2iamonds6et2gital5rect0ory7scount3ver5h2y2j1k1m1np2o0cs1tor4g1mains5t1wnload7rive4tv2ubai3pont4rban5vag2r2z2earth3t2c0o2deka3u0cation8e1g1mail3erck5nergy4gineer0ing9terprises10pson4quipment8r0icsson6ni3s0q1tate5t1u0rovision8s2vents5xchange6pert3osed4ress5traspace10fage2il1rwinds6th3mily4n0s2rm0ers5shion4t3edex3edback6rrari3ero6i0delity5o2lm2nal1nce1ial7re0stone6mdale6sh0ing5t0ness6j1k1lickr3ghts4r2orist4wers5y2m1o0o0d1tball6rd1ex2sale4um3undation8x2r0ee1senius7l1ogans4ntier7tr2ujitsu5n0d2rniture7tbol5yi3ga0l0lery3o1up4me0s3p1rden4y2b0iz3d0n2e0a1nt0ing5orge5f1g0ee3h1i0ft0s3ves2ing5l0ass3e1obal2o4m0ail3bh2o1x2n1odaddy5ld0point6f2odyear5g0le4p1t1v2p1q1r0ainger5phics5tis4een3ipe3ocery4up4s1t1u0cci3ge2ide2tars5ru3w1y2hair2mburg5ngout5us3bo2dfc0bank7ealth0care8lp1sinki6re1mes5iphop4samitsu7tachi5v2k0t2m1n1ockey4ldings5iday5medepot5goods5s0ense7nda3rse3spital5t0ing5t0els3mail5use3w2r1sbc3t1u0ghes5yatt3undai7ibm2cbc2e1u2d1e0ee3fm2kano4l1m0amat4db2mo0bilien9n0c1dustries8finiti5o2g1k1stitute6urance4e4t0ernational10uit4vestments10o1piranga7q1r0ish4s0maili5t0anbul7t0au2v3jaguar4va3cb2e0ep2tzt3welry6io2ll2m0p2nj2o0bs1urg4t1y2p0morgan6rs3uegos4niper7kaufen5ddi3e0rryhotels6properties14fh2g1h1i0a1ds2m1ndle4tchen5wi3m1n1oeln3matsu5sher5p0mg2n2r0d1ed3uokgroup8w1y0oto4z2la0caixa5mborghini8er3nd0rover6xess5salle5t0ino3robe5w0yer5b1c1ds2ease3clerc5frak4gal2o2xus4gbt3i0dl2fe0insurance9style7ghting6ke2lly3mited4o2ncoln4k2ve1ing5k1lc1p2oan0s3cker3us3l1ndon4tte1o3ve3pl0financial11r1s1t0d0a3u0ndbeck6xe1ury5v1y2ma0drid4if1son4keup4n0agement7go3p1rket0ing3s4riott5shalls7ttel5ba2c0kinsey7d1e0d0ia3et2lbourne7me1orial6n0u2rck0msd7g1h1iami3crosoft7l1ni1t2t0subishi9k1l0b1s2m0a2n1o0bi0le4da2e1i1m1nash3ey2ster5rmon3tgage6scow4to0rcycles9v0ie4p1q1r1s0d2t0n1r2u0seum3ic4v1w1x1y1z2na0b1goya4me2vy3ba2c1e0c1t0bank4flix4work5ustar5w0s2xt0direct7us4f0l2g0o2hk2i0co2ke1on3nja3ssan1y5l1o0kia3rton4w0ruz3tv4p1r0a1w2tt2u1yc2z2obi1server7ffice5kinawa6layan0group9lo3m0ega4ne1g1l0ine5oo2pen3racle3nge4g0anic5igins6saka4tsuka4t2vh3pa0ge2nasonic7ris2s1tners4s1y3y2ccw3e0t2f0izer5g1h0armacy6d1ilips5one2to0graphy6s4ysio5ics1tet2ures6d1n0g1k2oneer5zza4k1l0ace2y0station9umbing5s3m1n0c2ohl2ker3litie5rn2st3r0axi3ess3ime3o0d0uctions8f1gressive8mo2perties3y5tection8u0dential9s1t1ub2w0c2y2qa1pon3uebec3st5racing4dio4e0ad1lestate6tor2y4cipes5d0umbrella9hab3ise0n3t2liance6n0t0als5pair3ort3ublican8st0aurant8view0s5xroth6ich0ardli6oh3l1o1p2o0cks3deo3gers4om3s0vp3u0gby3hr2n2w0e2yukyu6sa0arland6fe0ty4kura4le1on3msclub4ung5ndvik0coromant12ofi4p1rl2s1ve2xo3b0i1s2c0b1haeffler7midt4olarships8ol3ule3warz5ience5ot3d1e0arch3t2cure1ity6ek2lect4ner3rvices6ven3w1x0y3fr2g1h0angrila6rp3ell3ia1ksha5oes2p0ping5uji3w3i0lk2na1gles5te3j1k0i0n2y0pe4l0ing4m0art3ile4n0cf3o0ccer3ial4ftbank4ware6hu2lar2utions7ng1y2y2pa0ce3ort2t3r0l2s1t0ada2ples4r1tebank4farm7c0group6ockholm6rage3e3ream4udio2y3yle4u0cks3pplies3y2ort5rf1gery5zuki5v1watch4iss4x1y0dney4stems6z2tab1ipei4lk2obao4rget4tamotors6r2too4x0i3c0i2d0k2eam2ch0nology8l1masek5nnis4va3f1g1h0d1eater2re6iaa2ckets5enda4ps2res2ol4j0maxx4x2k0maxx5l1m0all4n1o0day3kyo3ols3p1ray3shiba5tal3urs3wn2yota3s3r0ade1ing4ining5vel0ers0insurance16ust3v2t1ube2i1nes3shu4v0s2w1z2ua1bank3s2g1k1nicom3versity8o2ol2ps2s1y1z2va0cations7na1guard7c1e0gas3ntures6risign5mögensberater2ung14sicherung10t2g1i0ajes4deo3g1king4llas4n1p1rgin4sa1ion4va1o3laanderen9n1odka3lvo3te1ing3o2yage5u2wales2mart4ter4ng0gou5tch0es6eather0channel12bcam3er2site5d0ding5ibo2r3f1hoswho6ien2ki2lliamhill9n0dows4e1ners6me2oodside6rk0s2ld3w2s1tc1f3xbox3erox4ihuan4n2xx2yz3yachts4hoo3maxun5ndex5e1odobashi7ga2kohama6u0tube6t1un3za0ppos4ra3ero3ip2m1one3uerich6w2", m = "ελ1υ2бг1ел3дети4ею2католик6ом3мкд2он1сква6онлайн5рг3рус2ф2сайт3рб3укр3қаз3հայ3ישראל5קום3ابوظبي5رامكو5لاردن4بحرين5جزائر5سعودية6عليان5مغرب5مارات5یران5بارت2زار4يتك3ھارت5تونس4سودان3رية5شبكة4عراق2ب2مان4فلسطين6قطر3كاثوليك6وم3مصر2ليسيا5وريتانيا7قع4همراه5پاکستان7ڀارت4कॉम3नेट3भारत0म्3ोत5संगठन5বাংলা5ভারত2ৰত4ਭਾਰਤ4ભારત4ଭାରତ4இந்தியா6லங்கை6சிங்கப்பூர்11భారత్5ಭಾರತ4ഭാരതം5ලංකා4คอม3ไทย3ລາວ3გე2みんな3アマゾン4クラウド4グーグル4コム2ストア3セール3ファッション6ポイント4世界2中信1国1國1文网3亚马逊3企业2佛山2信息2健康2八卦2公司1益2台湾1灣2商城1店1标2嘉里0大酒店5在线2大拿2天主教3娱乐2家電2广东2微博2慈善2我爱你3手机2招聘2政务1府2新加坡2闻2时尚2書籍2机构2淡马锡3游戏2澳門2点看2移动2组织机构4网址1店1站1络2联通2谷歌2购物2通販2集团2電訊盈科4飞利浦3食品2餐厅2香格里拉3港2닷넷1컴2삼성2한국2", h = "numeric", g = "ascii", _ = "alpha", v = "asciinumeric", y = "alphanumeric", b = "domain", x = "emoji", ee = "scheme", S = "slashscheme", C = "whitespace";
4
4
  function w(e, t) {
@@ -510,7 +510,7 @@ function yt(e, t = null, n = null) {
510
510
  return a;
511
511
  }
512
512
  //#endregion
513
- //#region ../../node_modules/.pnpm/@tiptap+extension-link@3.30.2_@tiptap+core@3.30.2_@tiptap+pm@3.30.2__@tiptap+pm@3.30.2/node_modules/@tiptap/extension-link/dist/index.js
513
+ //#region ../../node_modules/.pnpm/@tiptap+extension-link@3.30.3_@tiptap+core@3.30.3_@tiptap+pm@3.30.3__@tiptap+pm@3.30.3/node_modules/@tiptap/extension-link/dist/index.js
514
514
  var bt = "[\0- \xA0 ᠎ -\u2029  ]", xt = new RegExp(bt), St = RegExp(`${bt}$`), Ct = new RegExp(bt, "g");
515
515
  function wt(e) {
516
516
  return e.length === 1 ? e[0].isLink : e.length === 3 && e[1].isLink ? ["()", "[]"].includes(e[0].value + e[2].value) : !1;
@@ -521,8 +521,8 @@ function Tt(i) {
521
521
  appendTransaction: (n, r, a) => {
522
522
  let o = n.some((e) => e.docChanged) && !r.doc.eq(a.doc), s = n.some((e) => e.getMeta("preventAutolink"));
523
523
  if (!o || s) return;
524
- let { tr: u } = a, d = e(r.doc, [...n]);
525
- if (l(d).forEach(({ newRange: e }) => {
524
+ let { tr: u } = a;
525
+ if (l(e(r.doc, [...n])).forEach(({ newRange: e }) => {
526
526
  let n = t(a.doc, e, (e) => e.isTextblock), r, o;
527
527
  if (n.length > 1) r = n[0], o = a.doc.textBetween(r.pos, r.pos + r.node.nodeSize, void 0, " ");
528
528
  else if (n.length) {
@@ -0,0 +1,5 @@
1
+ import { Color as e } from "./dist-DAR13YWM.js";
2
+ //#region ../../node_modules/.pnpm/@tiptap+extension-color@3.30.3_@tiptap+extension-text-style@3.30.3_@tiptap+core@3.30.3_@tiptap+pm@3.30.3__/node_modules/@tiptap/extension-color/dist/index.js
3
+ var t = e;
4
+ //#endregion
5
+ export { e as Color, t as default };
@@ -1,5 +1,5 @@
1
- import { f as e, gn as t } from "./dist-DUn6jY0n.js";
2
- //#region ../../node_modules/.pnpm/@tiptap+extension-subscript@3.30.2_@tiptap+core@3.30.2_@tiptap+pm@3.30.2__@tiptap+pm@3.30.2/node_modules/@tiptap/extension-subscript/dist/index.js
1
+ import { f as e, gn as t } from "./dist-BUh4MT4D.js";
2
+ //#region ../../node_modules/.pnpm/@tiptap+extension-subscript@3.30.3_@tiptap+core@3.30.3_@tiptap+pm@3.30.3__@tiptap+pm@3.30.3/node_modules/@tiptap/extension-subscript/dist/index.js
3
3
  var n = e.create({
4
4
  name: "subscript",
5
5
  addOptions() {
@@ -0,0 +1,5 @@
1
+ import { FontFamily as e } from "./dist-DAR13YWM.js";
2
+ //#region ../../node_modules/.pnpm/@tiptap+extension-font-family@3.30.3_@tiptap+extension-text-style@3.30.3_@tiptap+core@3.30.3_@tiptap+pm@3.30.3__/node_modules/@tiptap/extension-font-family/dist/index.js
3
+ var t = e;
4
+ //#endregion
5
+ export { e as FontFamily, t as default };
@@ -1,5 +1,5 @@
1
- import { bt as e, f as t, gn as n, s as r } from "./dist-DUn6jY0n.js";
2
- //#region ../../node_modules/.pnpm/@tiptap+extension-text-style@3.30.2_@tiptap+core@3.30.2_@tiptap+pm@3.30.2_/node_modules/@tiptap/extension-text-style/dist/index.js
1
+ import { bt as e, f as t, gn as n, s as r } from "./dist-BUh4MT4D.js";
2
+ //#region ../../node_modules/.pnpm/@tiptap+extension-text-style@3.30.3_@tiptap+core@3.30.3_@tiptap+pm@3.30.3_/node_modules/@tiptap/extension-text-style/dist/index.js
3
3
  var i = 20, a = (e, t = 0) => {
4
4
  let n = [];
5
5
  return !e.children.length || t > i || Array.from(e.children).forEach((e) => {
@@ -9,8 +9,9 @@ var i = 20, a = (e, t = 0) => {
9
9
  if (!e.children.length) return;
10
10
  let t = a(e);
11
11
  t && t.forEach((e) => {
12
- let t = e.getAttribute("style"), n = (e.parentElement?.closest("span"))?.getAttribute("style");
13
- e.setAttribute("style", `${n};${t}`);
12
+ var t;
13
+ let n = e.getAttribute("style"), r = (t = e.parentElement) == null || (t = t.closest("span")) == null ? void 0 : t.getAttribute("style");
14
+ e.setAttribute("style", `${r};${n}`);
14
15
  });
15
16
  }, s = t.create({
16
17
  name: "textStyle",
@@ -41,7 +42,7 @@ var i = 20, a = (e, t = 0) => {
41
42
  removeEmptyTextStyle: () => ({ tr: e }) => {
42
43
  let { selection: t } = e;
43
44
  return e.doc.nodesBetween(t.from, t.to, (t, n) => {
44
- if (t.isTextblock) return !0;
45
+ if (!t.isInline) return !0;
45
46
  t.marks.filter((e) => e.type === this.type).some((e) => Object.values(e.attrs).some((e) => !!e)) || e.removeMark(n, n + t.nodeSize, this.type);
46
47
  }), !0;
47
48
  }
@@ -1,5 +1,5 @@
1
- import { f as e, gn as t } from "./dist-DUn6jY0n.js";
2
- //#region ../../node_modules/.pnpm/@tiptap+extension-underline@3.30.2_@tiptap+core@3.30.2_@tiptap+pm@3.30.2_/node_modules/@tiptap/extension-underline/dist/index.js
1
+ import { f as e, gn as t } from "./dist-BUh4MT4D.js";
2
+ //#region ../../node_modules/.pnpm/@tiptap+extension-underline@3.30.3_@tiptap+core@3.30.3_@tiptap+pm@3.30.3_/node_modules/@tiptap/extension-underline/dist/index.js
3
3
  var n = e.create({
4
4
  name: "underline",
5
5
  addOptions() {
@@ -1,5 +1,5 @@
1
- import { bt as e, f as t, fn as n, gn as r, pn as i } from "./dist-DUn6jY0n.js";
2
- //#region ../../node_modules/.pnpm/@tiptap+extension-highlight@3.30.2_@tiptap+core@3.30.2_@tiptap+pm@3.30.2_/node_modules/@tiptap/extension-highlight/dist/index.js
1
+ import { bt as e, f as t, fn as n, gn as r, pn as i } from "./dist-BUh4MT4D.js";
2
+ //#region ../../node_modules/.pnpm/@tiptap+extension-highlight@3.30.3_@tiptap+core@3.30.3_@tiptap+pm@3.30.3_/node_modules/@tiptap/extension-highlight/dist/index.js
3
3
  var a = /(?:^|\s)(==(?!\s+==)((?:[^=]+))==(?!\s+==))$/, o = /(?:^|\s)(==(?!\s+==)((?:[^=]+))==(?!\s+==))/g, s = t.create({
4
4
  name: "highlight",
5
5
  addOptions() {
@@ -3,9 +3,9 @@ import { a as h, c as g, s as _ } from "./runtime-dom.esm-bundler-CHEsXNQz.js";
3
3
  import { D as v, E as y, N as b, a as x } from "./dist-B1kLn1rs.js";
4
4
  import { t as S } from "./useI18n-DT_DKupw.js";
5
5
  import { t as C } from "./useMergeTag-CcHQCcPN.js";
6
- import { gn as w, m as T, s as E, u as D, v as O } from "./dist-DUn6jY0n.js";
7
- import { i as k, r as A, t as j } from "./MergeTagSuggestion-a7Tk8tBB.js";
8
- import { n as M, t as N } from "./dist-7Lr_A7Va.js";
6
+ import { gn as w, m as T, s as E, u as D, v as O } from "./dist-BUh4MT4D.js";
7
+ import { i as k, r as A, t as j } from "./MergeTagSuggestion-BUozNVtA.js";
8
+ import { n as M, t as N } from "./dist-BpHkLruF.js";
9
9
  //#region src/extensions/FontSize.ts
10
10
  var P = E.create({
11
11
  name: "fontSize",
@@ -1,4 +1,4 @@
1
- import { t as e } from "./createLucideIcon-Cbl3Ma_H.js";
1
+ import { t as e } from "./createLucideIcon-DGRWivCX.js";
2
2
  var t = e("image-up", [
3
3
  ["path", {
4
4
  d: "M10.3 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2v10l-3.1-3.1a2 2 0 0 0-2.814.014L6 21",
package/dist/index.d.ts CHANGED
@@ -2,7 +2,8 @@ import type { AiConfig } from '@templatical/types';
2
2
  import { BlockDefaults } from '@templatical/types';
3
3
  import type { CollaborationConfig } from '@templatical/types';
4
4
  import { ColorsConfig } from '@templatical/types';
5
- import type { CommentEvent } from '@templatical/types';
5
+ import { CommentEventMeta } from '@templatical/types';
6
+ import { CommentsOptions } from '@templatical/types';
6
7
  import type { CommentsProvider } from '@templatical/types';
7
8
  import { ComputedRef } from 'vue';
8
9
  import { createLocalStorageSavedBlocksProvider } from '@templatical/core';
@@ -28,40 +29,32 @@ import { RenderProvider } from '@templatical/types';
28
29
  import type { ResolvePreview } from '@templatical/types';
29
30
  import { SavedBlock } from '@templatical/types';
30
31
  import { SavedBlocksListParams } from '@templatical/types';
32
+ import { SavedBlocksOptions } from '@templatical/types';
31
33
  import { SavedBlocksProvider } from '@templatical/types';
32
34
  import { Template } from '@templatical/types';
33
35
  import { TemplateContent } from '@templatical/types';
34
36
  import { TemplateDefaults } from '@templatical/types';
35
37
  import { TemplatePatch } from '@templatical/types';
38
+ import { TemplateSaveTrigger } from '@templatical/types';
39
+ import { TemplatesOptions } from '@templatical/types';
36
40
  import { TemplatesProvider } from '@templatical/types';
41
+ import { TestEmailOptions } from '@templatical/types';
37
42
  import { TestEmailPayload } from '@templatical/types';
38
43
  import { TestEmailProvider } from '@templatical/types';
39
44
  import { ThemeOverrides } from '@templatical/types';
40
45
  import { UiTheme } from '@templatical/types';
46
+ import { VersionHistoryOptions } from '@templatical/types';
41
47
  import type { VersionHistoryProvider } from '@templatical/types';
42
48
  import { ViewportSize } from '@templatical/types';
43
49
 
44
- /**
45
- * How often the editor's single debounced tick fires, and whether it saves.
46
- *
47
- * `true` / `false` turn autosave on and off at the default cadence; the object
48
- * form turns it on and sets the cadence in one key. One key rather than a
49
- * `boolean` plus a separate `autoSaveDebounce`, so there is no combination —
50
- * `autoSave: false, autoSaveDebounce: 500` — that reads as configured but does
51
- * nothing.
52
- *
53
- * The debounce governs `onChange` too: both ride one `useAutoSave` instance so
54
- * the notification and the save cannot drift apart, and so both inherit the
55
- * pause-during-undo/redo behaviour `useEditorCore` wires around it.
56
- */
57
- declare type AutoSaveConfig = boolean | {
58
- debounce?: number;
59
- };
60
-
61
50
  export { BlockDefaults }
62
51
 
63
52
  export { ColorsConfig }
64
53
 
54
+ export { CommentEventMeta }
55
+
56
+ export { CommentsOptions }
57
+
65
58
  export { createLocalStorageSavedBlocksProvider }
66
59
 
67
60
  export { CustomBlockDefinition }
@@ -159,11 +152,6 @@ export declare interface EditorCapabilities {
159
152
  canUpdate: ComputedRef<boolean>;
160
153
  canDelete: ComputedRef<boolean>;
161
154
  };
162
- /**
163
- * Present only when a `TestEmailProvider` is configured — in OSS via
164
- * `init({ testEmail })`, in Cloud whenever cloud mode is active (or when a
165
- * consumer supplied their own sender to `initCloud()`).
166
- */
167
155
  /**
168
156
  * Present only when a `TemplatesProvider` is configured — in OSS via
169
157
  * `init({ templates })`.
@@ -216,8 +204,11 @@ export declare interface EditorCapabilities {
216
204
  isAvailable: ComputedRef<boolean>;
217
205
  };
218
206
  /**
219
- * Present only when a `VersionHistoryProvider` is configured via
220
- * `init({ versionHistory })` or `initCloud({ versionHistory })`.
207
+ * Present when a `VersionHistoryProvider` is configured via
208
+ * `init({ versionHistory })`. Always present in Cloud — Cloud injects its
209
+ * own adapter unconditionally, so `initCloud({ versionHistory })` (events
210
+ * only, no storage) attaches handlers to it rather than gating whether
211
+ * this capability exists.
221
212
  */
222
213
  versionHistory?: {
223
214
  /** Re-read the list from the provider. A no-op before a template exists. */
@@ -239,6 +230,11 @@ export declare interface EditorCapabilities {
239
230
  canCreate: ComputedRef<boolean>;
240
231
  canRestore: ComputedRef<boolean>;
241
232
  };
233
+ /**
234
+ * Present only when a `TestEmailProvider` is configured — in OSS via
235
+ * `init({ testEmail })`, in Cloud whenever cloud mode is active (or when a
236
+ * consumer supplied their own sender to `initCloud()`).
237
+ */
242
238
  testEmail?: {
243
239
  /** Open the send dialog. A no-op while {@link isAvailable} is false. */
244
240
  open(): void;
@@ -306,12 +302,30 @@ export declare function init(config: TemplaticalEditorConfig): Promise<Templatic
306
302
  * session that dies *later* — an auth refresh that cannot renew the token — does
307
303
  * still surface as an overlay, because by then there is an editor to cover.
308
304
  *
309
- * `templates`, `versionHistory` and `comments` are the three keys `initCloud()`
310
- * refuses: all are keyed to a template id Cloud issued, which also anchors
311
- * collaboration, AI rewrite, scoring and the server-side export. A store Cloud
312
- * never issued ids for would degrade all of them silently. Everything else —
313
- * `render`, `savedBlocks`, `testEmail`, `resolvePreview` is the same key with the
314
- * same type on both entry points, so upgrading an OSS integration is a deletion.
305
+ * `templates`, `comments` and `versionHistory` are all keyed to a template
306
+ * id Cloud issued, which also anchors collaboration, AI rewrite, scoring and
307
+ * the server-side export a store Cloud never issued ids for would degrade
308
+ * all of them silently. Cloud therefore keeps each key's storage, but each
309
+ * key is still accepted, for its configuration and events:
310
+ * `templates.load`/`create`/`save`,
311
+ * `comments.list`/`create`/`update`/`delete`/`setResolved`, and
312
+ * `versionHistory.list`/`get`/`create`/`restore` are ignored with a warning
313
+ * naming them, while `templates`' `autoSave`, `unsavedChangesGuard`,
314
+ * `nameField`, `onSaved`, `onCreated`, `onLoaded`, `comments`' `onCreated`,
315
+ * `onUpdated`, `onDeleted`, `onResolved`, `onUnresolved`, and
316
+ * `versionHistory`'s `onCreated`, `onRestored` are all honoured.
317
+ *
318
+ * `render` is not a key here at all, unlike `init()` — Cloud renders
319
+ * server-side for test email, sends and exports, so a supplied renderer
320
+ * would change only what you preview and export, never what Cloud delivers.
321
+ * `resolvePreview` is the same key with the same type on both entry points,
322
+ * so upgrading an OSS integration is a deletion. `savedBlocks` and
323
+ * `testEmail` are the same key on both entry points too, but Cloud widens
324
+ * each type to also accept an events-only shape — `boolean |
325
+ * SavedBlocksOptions | SavedBlocksProvider` and `Pick<TestEmailOptions,
326
+ * "onSent" | "defaultRecipient"> | TestEmailProvider` — so upgrading is
327
+ * still a deletion: drop the key to adopt Cloud's store or sender, or leave
328
+ * it exactly as it is to keep your own.
315
329
  *
316
330
  * `user` is not a key either: Cloud signs comment writes against the auth token's
317
331
  * `user` claim, so it fills `init({ user })` from there rather than letting a
@@ -355,6 +369,8 @@ export { SavedBlock }
355
369
 
356
370
  export { SavedBlocksListParams }
357
371
 
372
+ export { SavedBlocksOptions }
373
+
358
374
  export { SavedBlocksProvider }
359
375
 
360
376
  export { Template }
@@ -365,6 +381,10 @@ export { TemplateDefaults }
365
381
 
366
382
  export { TemplatePatch }
367
383
 
384
+ export { TemplateSaveTrigger }
385
+
386
+ export { TemplatesOptions }
387
+
368
388
  export { TemplatesProvider }
369
389
 
370
390
  /**
@@ -376,11 +396,12 @@ export { TemplatesProvider }
376
396
  * false. It also means moving between them is a config change and never a
377
397
  * rewrite of the calling code.
378
398
  *
379
- * Three cloud-only members went with the convergence: `setThemeOverrides`
380
- * (`config.theme` is applied at init on both entry points, and the entitlement
381
- * that gated changing it later is gone), and `sendTestEmail` (the shared dialog
382
- * is the supported path). `create()` takes `init()`'s `{ name?, content? }`
383
- * input object rather than a bare `TemplateContent`.
399
+ * Three cloud-only members went with the convergence: `create()` takes
400
+ * `init()`'s `{ name?, content? }` input object now, rather than a bare
401
+ * `TemplateContent`; `setThemeOverrides` is gone (`config.theme` is applied
402
+ * at init on both entry points, and the entitlement that gated changing it
403
+ * later is gone); and `sendTestEmail` is gone (the shared dialog is the
404
+ * supported path).
384
405
  */
385
406
  export declare type TemplaticalCloudEditor = TemplaticalEditor;
386
407
 
@@ -442,21 +463,7 @@ export declare interface TemplaticalCloudEditorConfig {
442
463
  * @default true
443
464
  */
444
465
  smallScreenNotice?: boolean;
445
- /**
446
- * Show the template's name in the header, inline-editable. Defaults to `true`.
447
- *
448
- * Set to `false` when your store has no name column, or when your own chrome
449
- * owns the name. Hides the field only — `create({ name })`, `setName()` and the
450
- * `name` in each save patch keep working, so a headless caller or your own UI
451
- * can still manage names.
452
- *
453
- * Without a `templates` provider the header renders no name field either way.
454
- *
455
- * @default true
456
- */
457
- templateNameField?: boolean;
458
466
  ai?: AiConfig | false;
459
- commenting?: boolean;
460
467
  collaboration?: CollaborationConfig;
461
468
  mcp?: McpConfig;
462
469
  blockDefaults?: BlockDefaults;
@@ -465,8 +472,10 @@ export declare interface TemplaticalCloudEditorConfig {
465
472
  * Reusable saved blocks.
466
473
  *
467
474
  * - **omitted / `true`** — backed by Templatical Cloud, gated on the
468
- * `saved_modules` plan feature.
469
- * - **`false`** — off entirely; no UI renders.
475
+ * `saved_modules` plan feature;
476
+ * - **`false`** — off entirely; no UI renders;
477
+ * - **a {@link SavedBlocksOptions}** — still backed by Cloud's store, plus
478
+ * your `onCreated`, `onUpdated` and `onDeleted` handlers;
470
479
  * - **a {@link SavedBlocksProvider}** — backed by *your* store instead of
471
480
  * Cloud's, and **not plan-gated**, because the plan feature licenses Cloud's
472
481
  * storage rather than the editor's UI.
@@ -475,14 +484,59 @@ export declare interface TemplaticalCloudEditorConfig {
475
484
  * integration to Cloud means deleting this key (to adopt Cloud's store) or
476
485
  * leaving it exactly as-is (to keep your own) — never rewriting it.
477
486
  */
478
- savedBlocks?: boolean | SavedBlocksProvider;
487
+ savedBlocks?: boolean | SavedBlocksOptions | SavedBlocksProvider;
488
+ /**
489
+ * Configuration and events for the template lifecycle. **The same key and
490
+ * the same type as `init()`'s `templates`** — minus the storage methods,
491
+ * which Cloud owns: the id it issues is the join key for collaboration,
492
+ * version history, comments, AI rewrite, scoring and the server-side export.
493
+ *
494
+ * Passing a full provider is not an error: `load` / `create` / `save` are
495
+ * ignored with a warning naming them, while `autoSave`, `unsavedChangesGuard`,
496
+ * `nameField`, `onSaved`, `onCreated` and `onLoaded` are all honoured. So an
497
+ * OSS integration moving to Cloud leaves this key exactly as it is.
498
+ */
499
+ templates?: TemplatesOptions;
500
+ /**
501
+ * The review conversation. **The same key `init()` takes**, minus the storage
502
+ * methods Cloud owns — a comment is keyed to a template id Cloud issued and
503
+ * its author is signed by the auth token.
504
+ *
505
+ * - **omitted** — Cloud's store, subject to the `commenting` plan feature;
506
+ * - **`false`** — off, whatever the plan grants;
507
+ * - **an options object** — Cloud's store, plus your `onCreated`,
508
+ * `onUpdated`, `onDeleted`, `onResolved` and `onUnresolved` handlers.
509
+ *
510
+ * Passing a full provider is not an error: its methods are ignored with a
511
+ * warning naming them, and its events are honoured.
512
+ */
513
+ comments?: false | CommentsOptions;
479
514
  /**
480
- * Save automatically, debounced. **The same key and the same type as
481
- * `init()`** `true`/`false`, or `{ debounce }` to set the cadence in one
482
- * key. Unlike OSS it defaults to *on*, because a Cloud session always has a
483
- * store to save to.
515
+ * Outward notifications for a template's version history. **The same key
516
+ * `init()` takes**, minus the storage methods Cloud owns a version is
517
+ * keyed to a template id Cloud issued, so Cloud owns version-history
518
+ * storage.
519
+ *
520
+ * - **omitted** — Cloud's store, with no extra notifications;
521
+ * - **a {@link VersionHistoryOptions}** — Cloud's store, plus your
522
+ * `onCreated` and `onRestored` handlers.
523
+ *
524
+ * Passing a full provider is not an error: its methods are ignored with a
525
+ * warning naming them, and its events are honoured.
484
526
  */
485
- autoSave?: AutoSaveConfig;
527
+ versionHistory?: VersionHistoryOptions;
528
+ /**
529
+ * How long the editor waits after the last edit before it fires `onChange`
530
+ * and, when `templates.autoSave` is on, saves.
531
+ *
532
+ * One timer drives both, so they cannot drift apart. Cloud always injects
533
+ * its own `templates` provider, so pace `onChange` alone with
534
+ * `templates: { autoSave: false }` rather than by omitting a provider —
535
+ * the no-provider case `init()` uses for this doesn't exist on this tier.
536
+ *
537
+ * @default 2000
538
+ */
539
+ changeDebounce?: number;
486
540
  mergeTags?: MergeTagsConfig;
487
541
  logicTags?: LogicTagsConfig;
488
542
  displayConditions?: DisplayConditionsConfig;
@@ -524,19 +578,7 @@ export declare interface TemplaticalCloudEditorConfig {
524
578
  * the same type as `init()`'s** — one editor, one set of keys.
525
579
  */
526
580
  onDirtyChange?: (isDirty: boolean) => void;
527
- /**
528
- * Warn before closing the tab with unsaved changes. On by default, since a
529
- * Cloud session always has a store to save to. Set to `false` to own the
530
- * prompt yourself; it can never cover client-side route changes either way,
531
- * which is what {@link onDirtyChange} is for.
532
- *
533
- * @default true
534
- */
535
- unsavedChangesGuard?: boolean;
536
- onCreate?: (template: Template) => void;
537
- onLoad?: (template: Template) => void;
538
581
  onError?: (error: Error) => void;
539
- onComment?: (event: CommentEvent) => void;
540
582
  onUnmount?: () => void;
541
583
  onRequestMedia?: (context: MediaRequestContext) => Promise<MediaItem | null>;
542
584
  /**
@@ -551,16 +593,27 @@ export declare interface TemplaticalCloudEditorConfig {
551
593
  * Sending backend for test emails.
552
594
  *
553
595
  * - **omitted** — sent by Templatical Cloud, gated on the `test_email` plan
554
- * feature and its signed allowed-recipient list.
596
+ * feature and its signed allowed-recipient list;
597
+ * - **`{ onSent?, defaultRecipient? }`** — still sent by Cloud, plus your
598
+ * `onSent` handler and/or a pre-filled recipient (ignored unless it's
599
+ * already on Cloud's own allowlist — this can't smuggle in an address
600
+ * outside it). `includeMjml` and `allowedRecipients` are not honoured on
601
+ * this form — Cloud renders server-side rather than from a client MJML
602
+ * pass, and the allowlist is the signed one from your project's JWT, not
603
+ * a client-supplied one. TypeScript does not flag passing them here
604
+ * (both are valid members of the sibling {@link TestEmailProvider} arm,
605
+ * so the union accepts them structurally); passing either logs a
606
+ * runtime warning naming it instead;
555
607
  * - **a {@link TestEmailProvider}** — sent by *you* instead, which is what to
556
608
  * reach for when mail must leave your own infrastructure for compliance or
557
- * data-residency reasons.
609
+ * data-residency reasons. `includeMjml`, `allowedRecipients`,
610
+ * `defaultRecipient` and `onSent` are all yours to set here.
558
611
  *
559
612
  * The same type `init()` takes, so moving an OSS integration to Cloud means
560
613
  * deleting this key (to adopt Cloud's sender) or leaving it exactly as-is (to
561
614
  * keep your own) — never rewriting it.
562
615
  */
563
- testEmail?: TestEmailProvider;
616
+ testEmail?: Pick<TestEmailOptions, "onSent" | "defaultRecipient"> | TestEmailProvider;
564
617
  /**
565
618
  * Resolves the template for preview surfaces — typically evaluating logic
566
619
  * tags (`{% if %}` … `{% endif %}`) against real data on your backend.
@@ -733,6 +786,11 @@ export declare interface TemplaticalEditorConfig {
733
786
  * await editor.load("tpl_123");
734
787
  * ```
735
788
  *
789
+ * Autosave (`templates.autoSave`), the unsaved-changes guard
790
+ * (`templates.unsavedChangesGuard`) and the header's inline name field
791
+ * (`templates.nameField`) are configured on this same object — grouped here
792
+ * because none of the three mean anything without somewhere to save to.
793
+ *
736
794
  * **Omitted by default.** With no provider the feature is entirely off — no
737
795
  * name field, no save button, no status indicator — and `create()` / `load()` /
738
796
  * `save()` reject with an explanatory error. Persist the content yourself from
@@ -815,34 +873,15 @@ export declare interface TemplaticalEditorConfig {
815
873
  */
816
874
  versionHistory?: VersionHistoryProvider;
817
875
  /**
818
- * Save the template automatically, debounced, after the user stops editing.
819
- * Requires a `templates` provider — without one there is nothing to save to,
820
- * and the option is ignored with a warning.
876
+ * How long the editor waits after the last edit before it fires `onChange`
877
+ * and, when `templates.autoSave` is on, saves.
821
878
  *
822
- * `true` uses the default cadence; `{ debounce }` sets it in the same key. The
823
- * debounce governs `onChange` too — both ride one timer so they cannot drift
824
- * apart.
879
+ * One timer drives both, so they cannot drift apart. Set it with no templates
880
+ * provider to pace `onChange` alone.
825
881
  *
826
- * ```ts
827
- * autoSave: true // default cadence
828
- * autoSave: { debounce: 2000 } // on, slower
829
- * ```
830
- *
831
- * @default false
882
+ * @default 2000
832
883
  */
833
- autoSave?: AutoSaveConfig;
834
- /**
835
- * Warn the user before they close or reload the tab with unsaved changes.
836
- * On by default whenever a `templates` provider is configured — without one
837
- * the editor cannot know whether you already persisted the change, so it never
838
- * warns.
839
- *
840
- * Set to `false` to own that prompt yourself. Note it can never cover
841
- * client-side route changes; use `onDirtyChange` for those.
842
- *
843
- * @default true
844
- */
845
- unsavedChangesGuard?: boolean;
884
+ changeDebounce?: number;
846
885
  onRequestMedia?: OnRequestMedia;
847
886
  /**
848
887
  * Resolves the template for preview surfaces — typically evaluating logic
@@ -1053,6 +1092,11 @@ export declare interface TemplaticalEditorConfig {
1053
1092
  * **Omitted by default**, and the panel also stays hidden until a template is
1054
1093
  * loaded, since a comment belongs to a template id.
1055
1094
  *
1095
+ * The same object also carries outward events — `onCreated`, `onUpdated`,
1096
+ * `onDeleted`, `onResolved`, `onUnresolved` — each called with the comment and
1097
+ * whether the change was made locally or arrived through `subscribe`. That's
1098
+ * the hook for a "3 new comments" badge outside the editor.
1099
+ *
1056
1100
  * Realtime is an optional `subscribe` on the provider, not a prerequisite:
1057
1101
  * without it comments work identically, you simply see a colleague's on the next
1058
1102
  * read rather than immediately.
@@ -1073,12 +1117,6 @@ export declare interface TemplaticalEditorConfig {
1073
1117
  * already trusts.
1074
1118
  */
1075
1119
  user?: EditorUser;
1076
- /**
1077
- * Called for every comment change the editor applied — including ones that
1078
- * arrived through a provider's `subscribe`, so this is the hook for a "3 new
1079
- * comments" badge outside the editor.
1080
- */
1081
- onComment?: (event: CommentEvent) => void;
1082
1120
  blockDefaults?: BlockDefaults;
1083
1121
  templateDefaults?: TemplateDefaults;
1084
1122
  theme?: ThemeOverrides;
@@ -1105,19 +1143,6 @@ export declare interface TemplaticalEditorConfig {
1105
1143
  * @default true
1106
1144
  */
1107
1145
  smallScreenNotice?: boolean;
1108
- /**
1109
- * Show the template's name in the header, inline-editable. Defaults to `true`.
1110
- *
1111
- * Set to `false` when your store has no name column, or when your own chrome
1112
- * owns the name. Hides the field only — `create({ name })`, `setName()` and the
1113
- * `name` in each save patch keep working, so a headless caller or your own UI
1114
- * can still manage names.
1115
- *
1116
- * Without a `templates` provider the header renders no name field either way.
1117
- *
1118
- * @default true
1119
- */
1120
- templateNameField?: boolean;
1121
1146
  /**
1122
1147
  * Template linter (`@templatical/quality`) configuration. Runs every
1123
1148
  * linter exported by the package (accessibility + structure).
@@ -1130,6 +1155,8 @@ export declare interface TemplaticalEditorConfig {
1130
1155
  lint?: LintOptions;
1131
1156
  }
1132
1157
 
1158
+ export { TestEmailOptions }
1159
+
1133
1160
  export { TestEmailPayload }
1134
1161
 
1135
1162
  export { TestEmailProvider }
@@ -1159,6 +1186,8 @@ export declare interface UseFontsReturn {
1159
1186
  getDefaultFont: () => string;
1160
1187
  }
1161
1188
 
1189
+ export { VersionHistoryOptions }
1190
+
1162
1191
  export { ViewportSize }
1163
1192
 
1164
1193
  export { }
@@ -1,4 +1,4 @@
1
- import { t as e } from "./createLucideIcon-Cbl3Ma_H.js";
1
+ import { t as e } from "./createLucideIcon-DGRWivCX.js";
2
2
  var t = e("info", [
3
3
  ["circle", {
4
4
  cx: "12",
@@ -1,4 +1,4 @@
1
- import { t as e } from "./createLucideIcon-Cbl3Ma_H.js";
1
+ import { t as e } from "./createLucideIcon-DGRWivCX.js";
2
2
  var t = e("loader-circle", [["path", {
3
3
  d: "M21 12a9 9 0 1 1-6.219-8.56",
4
4
  key: "13zald"
@@ -1,4 +1,4 @@
1
- import { t as e } from "./createLucideIcon-Cbl3Ma_H.js";
1
+ import { t as e } from "./createLucideIcon-DGRWivCX.js";
2
2
  var t = e("message-circle", [["path", {
3
3
  d: "M2.992 16.342a2 2 0 0 1 .094 1.167l-1.065 3.29a1 1 0 0 0 1.236 1.168l3.413-.998a2 2 0 0 1 1.099.092 10 10 0 1 0-4.777-4.719",
4
4
  key: "1sd12s"
@@ -1,4 +1,4 @@
1
- import { t as e } from "./createLucideIcon-Cbl3Ma_H.js";
1
+ import { t as e } from "./createLucideIcon-DGRWivCX.js";
2
2
  var t = e("pencil", [["path", {
3
3
  d: "M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z",
4
4
  key: "1a8usu"
@@ -1,4 +1,4 @@
1
- import { t as e } from "./createLucideIcon-Cbl3Ma_H.js";
1
+ import { t as e } from "./createLucideIcon-DGRWivCX.js";
2
2
  var t = e("eye", [["path", {
3
3
  d: "M2.062 12.348a1 1 0 0 1 0-.696 10.75 10.75 0 0 1 19.876 0 1 1 0 0 1 0 .696 10.75 10.75 0 0 1-19.876 0",
4
4
  key: "1nclc0"
@@ -1,4 +1,4 @@
1
- import { t as e } from "./createLucideIcon-Cbl3Ma_H.js";
1
+ import { t as e } from "./createLucideIcon-DGRWivCX.js";
2
2
  var t = e("braces", [["path", {
3
3
  d: "M8 3H7a2 2 0 0 0-2 2v5a2 2 0 0 1-2 2 2 2 0 0 1 2 2v5c0 1.1.9 2 2 2h1",
4
4
  key: "ezmyqa"
@@ -1,4 +1,4 @@
1
- import { t as e } from "./createLucideIcon-Cbl3Ma_H.js";
1
+ import { t as e } from "./createLucideIcon-DGRWivCX.js";
2
2
  var t = e("send", [["path", {
3
3
  d: "M14.536 21.686a.5.5 0 0 0 .937-.024l6.5-19a.496.496 0 0 0-.635-.635l-19 6.5a.5.5 0 0 0-.024.937l7.93 3.18a2 2 0 0 1 1.112 1.11z",
4
4
  key: "1ffxy3"
@@ -1,4 +1,4 @@
1
- import { t as e } from "./createLucideIcon-Cbl3Ma_H.js";
1
+ import { t as e } from "./createLucideIcon-DGRWivCX.js";
2
2
  var t = e("shield-check", [["path", {
3
3
  d: "M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z",
4
4
  key: "oel41y"
@@ -1,4 +1,4 @@
1
- import { t as e } from "./createLucideIcon-Cbl3Ma_H.js";
1
+ import { t as e } from "./createLucideIcon-DGRWivCX.js";
2
2
  var t = e("sparkles", [
3
3
  ["path", {
4
4
  d: "M11.017 2.814a1 1 0 0 1 1.966 0l1.051 5.558a2 2 0 0 0 1.594 1.594l5.558 1.051a1 1 0 0 1 0 1.966l-5.558 1.051a2 2 0 0 0-1.594 1.594l-1.051 5.558a1 1 0 0 1-1.966 0l-1.051-5.558a2 2 0 0 0-1.594-1.594l-5.558-1.051a1 1 0 0 1 0-1.966l5.558-1.051a2 2 0 0 0 1.594-1.594z",