@blocknote/core 0.27.2 → 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 (388) hide show
  1. package/dist/blocknote.cjs +10 -10
  2. package/dist/blocknote.cjs.map +1 -1
  3. package/dist/blocknote.js +3032 -3118
  4. package/dist/blocknote.js.map +1 -1
  5. package/dist/locales.cjs +1 -1
  6. package/dist/locales.cjs.map +1 -1
  7. package/dist/locales.js +10 -10
  8. package/dist/locales.js.map +1 -1
  9. package/dist/tsconfig.tsbuildinfo +1 -1
  10. package/dist/webpack-stats.json +1 -1
  11. package/package.json +2 -2
  12. package/src/api/__snapshots__/blocks-deleted-nested-deep.json +26 -0
  13. package/src/api/__snapshots__/blocks-deleted-nested.json +68 -0
  14. package/src/api/__snapshots__/blocks-deleted.json +26 -0
  15. package/src/api/__snapshots__/blocks-inserted-nested.json +62 -0
  16. package/src/api/__snapshots__/blocks-inserted.json +20 -0
  17. package/src/api/__snapshots__/blocks-updated-content-inserted.json +42 -0
  18. package/src/api/__snapshots__/blocks-updated-multiple-insert.json +50 -0
  19. package/src/api/__snapshots__/blocks-updated-multiple.json +82 -0
  20. package/src/api/__snapshots__/blocks-updated-nested-deep.json +42 -0
  21. package/src/api/__snapshots__/blocks-updated-nested-multiple.json +118 -0
  22. package/src/api/__snapshots__/blocks-updated-nested.json +78 -0
  23. package/src/api/__snapshots__/blocks-updated-single.json +42 -0
  24. package/src/api/__snapshots__/blocks-updated.json +42 -0
  25. package/src/api/blockManipulation/__snapshots__/transactions.test.ts.snap +34 -0
  26. package/src/api/blockManipulation/commands/insertBlocks/__snapshots__/insertBlocks.test.ts.snap +312 -0
  27. package/src/api/blockManipulation/commands/insertBlocks/insertBlocks.test.ts +127 -94
  28. package/src/api/blockManipulation/commands/insertBlocks/insertBlocks.ts +19 -37
  29. package/src/api/blockManipulation/commands/mergeBlocks/mergeBlocks.test.ts +8 -6
  30. package/src/api/blockManipulation/commands/moveBlocks/moveBlocks.test.ts +25 -31
  31. package/src/api/blockManipulation/commands/moveBlocks/moveBlocks.ts +93 -91
  32. package/src/api/blockManipulation/commands/nestBlock/nestBlock.ts +16 -20
  33. package/src/api/blockManipulation/commands/replaceBlocks/replaceBlocks.test.ts +14 -1
  34. package/src/api/blockManipulation/commands/replaceBlocks/replaceBlocks.ts +18 -56
  35. package/src/api/blockManipulation/commands/splitBlock/splitBlock.test.ts +52 -46
  36. package/src/api/blockManipulation/commands/updateBlock/__snapshots__/updateBlock.test.ts.snap +1051 -0
  37. package/src/api/blockManipulation/commands/updateBlock/updateBlock.test.ts +247 -154
  38. package/src/api/blockManipulation/commands/updateBlock/updateBlock.ts +109 -142
  39. package/src/api/blockManipulation/getBlock/getBlock.ts +23 -48
  40. package/src/api/blockManipulation/insertContentAt.ts +4 -17
  41. package/src/api/blockManipulation/selections/selection.test.ts +32 -16
  42. package/src/api/blockManipulation/selections/selection.ts +25 -51
  43. package/src/api/blockManipulation/selections/textCursorPosition/textCursorPosition.test.ts +35 -14
  44. package/src/api/blockManipulation/selections/textCursorPosition/textCursorPosition.ts +34 -65
  45. package/src/api/clipboard/fromClipboard/handleFileInsertion.ts +8 -10
  46. package/src/api/clipboard/toClipboard/copyExtension.ts +7 -7
  47. package/src/api/exporters/html/util/serializeBlocksExternalHTML.ts +7 -16
  48. package/src/api/exporters/html/util/serializeBlocksInternalHTML.ts +3 -17
  49. package/src/api/getBlockInfoFromPos.ts +13 -1
  50. package/src/api/nodeConversions/blockToNode.ts +21 -10
  51. package/src/api/nodeConversions/fragmentToBlocks.ts +5 -18
  52. package/src/api/nodeConversions/nodeToBlock.ts +11 -8
  53. package/src/api/nodeUtil.test.ts +228 -0
  54. package/src/api/nodeUtil.ts +235 -2
  55. package/src/api/parsers/html/parseHTML.ts +2 -10
  56. package/src/api/parsers/markdown/parseMarkdown.ts +2 -8
  57. package/src/api/pmUtil.ts +54 -0
  58. package/src/api/positionMapping.test.ts +370 -0
  59. package/src/api/positionMapping.ts +114 -0
  60. package/src/blocks/FileBlockContent/helpers/render/createAddFileButton.ts +2 -2
  61. package/src/blocks/HeadingBlockContent/HeadingBlockContent.ts +9 -13
  62. package/src/blocks/ListItemBlockContent/BulletListItemBlockContent/BulletListItemBlockContent.ts +5 -9
  63. package/src/blocks/ListItemBlockContent/CheckListItemBlockContent/CheckListItemBlockContent.ts +19 -31
  64. package/src/blocks/ListItemBlockContent/ListItemKeyboardShortcuts.ts +10 -8
  65. package/src/blocks/ListItemBlockContent/NumberedListItemBlockContent/NumberedListItemBlockContent.ts +9 -13
  66. package/src/blocks/ParagraphBlockContent/ParagraphBlockContent.ts +1 -1
  67. package/src/blocks/QuoteBlockContent/QuoteBlockContent.ts +5 -9
  68. package/src/blocks/defaultBlockHelpers.ts +1 -1
  69. package/src/editor/BlockNoteEditor.test.ts +1 -1
  70. package/src/editor/BlockNoteEditor.ts +259 -130
  71. package/src/editor/BlockNoteTipTapEditor.ts +91 -8
  72. package/src/extensions/Comments/CommentsPlugin.ts +32 -34
  73. package/src/extensions/KeyboardShortcuts/KeyboardShortcutsExtension.ts +4 -8
  74. package/src/extensions/LinkToolbar/LinkToolbarPlugin.ts +12 -13
  75. package/src/extensions/ShowSelection/ShowSelectionPlugin.ts +1 -3
  76. package/src/extensions/SideMenu/MultipleNodeSelection.ts +3 -1
  77. package/src/extensions/SideMenu/dragging.ts +1 -1
  78. package/src/extensions/SuggestionMenu/SuggestionPlugin.ts +38 -25
  79. package/src/extensions/SuggestionMenu/getDefaultSlashMenuItems.ts +8 -8
  80. package/src/extensions/TableHandles/TableHandlesPlugin.ts +150 -136
  81. package/src/i18n/locales/de.ts +10 -10
  82. package/src/index.ts +4 -3
  83. package/src/schema/inlineContent/createSpec.ts +1 -5
  84. package/types/src/api/blockManipulation/commands/insertBlocks/insertBlocks.d.ts +2 -2
  85. package/types/src/api/blockManipulation/commands/replaceBlocks/replaceBlocks.d.ts +4 -8
  86. package/types/src/api/blockManipulation/commands/updateBlock/updateBlock.d.ts +9 -10
  87. package/types/src/api/blockManipulation/getBlock/getBlock.d.ts +7 -7
  88. package/types/src/api/blockManipulation/insertContentAt.d.ts +5 -3
  89. package/types/src/api/blockManipulation/selections/selection.d.ts +3 -3
  90. package/types/src/api/blockManipulation/selections/textCursorPosition/textCursorPosition.d.ts +5 -5
  91. package/types/src/api/getBlockInfoFromPos.d.ts +8 -1
  92. package/types/src/api/nodeConversions/blockToNode.d.ts +3 -3
  93. package/types/src/api/nodeConversions/fragmentToBlocks.d.ts +1 -2
  94. package/types/src/api/nodeConversions/nodeToBlock.d.ts +2 -2
  95. package/types/src/api/nodeUtil.d.ts +67 -1
  96. package/types/src/api/parsers/html/parseHTML.d.ts +1 -1
  97. package/types/src/api/parsers/markdown/parseMarkdown.d.ts +1 -1
  98. package/types/src/api/pmUtil.d.ts +12 -0
  99. package/types/src/api/positionMapping.d.ts +25 -0
  100. package/types/src/editor/BlockNoteEditor.d.ts +72 -10
  101. package/types/src/editor/BlockNoteTipTapEditor.d.ts +15 -2
  102. package/types/src/extensions/TableHandles/TableHandlesPlugin.d.ts +1 -1
  103. package/types/src/index.d.ts +1 -2
  104. package/src/api/blockManipulation/commands/removeBlocks/__snapshots__/removeBlocks.test.ts.snap +0 -1859
  105. package/src/api/blockManipulation/commands/removeBlocks/removeBlocks.test.ts +0 -40
  106. package/src/api/blockManipulation/commands/removeBlocks/removeBlocks.ts +0 -20
  107. package/src/api/clipboard/__snapshots__/external/pasteEndOfParagraph.html +0 -138
  108. package/src/api/clipboard/__snapshots__/external/pasteEndOfParagraphText.html +0 -138
  109. package/src/api/clipboard/__snapshots__/external/pasteImage.html +0 -153
  110. package/src/api/clipboard/__snapshots__/external/pasteParagraphInCustomBlock.html +0 -138
  111. package/src/api/clipboard/__snapshots__/external/pasteTable.html +0 -233
  112. package/src/api/clipboard/__snapshots__/external/pasteTableInExistingTable.html +0 -216
  113. package/src/api/clipboard/__snapshots__/internal/basicBlocks.html +0 -1
  114. package/src/api/clipboard/__snapshots__/internal/basicBlocksWithProps.html +0 -1
  115. package/src/api/clipboard/__snapshots__/internal/childToParent.html +0 -1
  116. package/src/api/clipboard/__snapshots__/internal/childrenToNextParent.html +0 -1
  117. package/src/api/clipboard/__snapshots__/internal/childrenToNextParentsChildren.html +0 -1
  118. package/src/api/clipboard/__snapshots__/internal/image.html +0 -1
  119. package/src/api/clipboard/__snapshots__/internal/multipleChildren.html +0 -1
  120. package/src/api/clipboard/__snapshots__/internal/multipleStyledText.html +0 -1
  121. package/src/api/clipboard/__snapshots__/internal/nestedImage.html +0 -1
  122. package/src/api/clipboard/__snapshots__/internal/paragraphInCustomBlock.html +0 -1
  123. package/src/api/clipboard/__snapshots__/internal/partialChildToParent.html +0 -1
  124. package/src/api/clipboard/__snapshots__/internal/styledText.html +0 -1
  125. package/src/api/clipboard/__snapshots__/internal/tableAllCells.html +0 -1
  126. package/src/api/clipboard/__snapshots__/internal/tableCell.html +0 -1
  127. package/src/api/clipboard/__snapshots__/internal/tableCellText.html +0 -1
  128. package/src/api/clipboard/__snapshots__/internal/tableRow.html +0 -1
  129. package/src/api/clipboard/__snapshots__/internal/unstyledText.html +0 -1
  130. package/src/api/clipboard/clipboardExternal.test.ts +0 -161
  131. package/src/api/clipboard/clipboardInternal.test.ts +0 -435
  132. package/src/api/clipboard/testUtil.ts +0 -27
  133. package/src/api/exporters/html/__snapshots__/codeBlock/contains-newlines/external.html +0 -1
  134. package/src/api/exporters/html/__snapshots__/codeBlock/contains-newlines/internal.html +0 -3
  135. package/src/api/exporters/html/__snapshots__/codeBlock/defaultLanguage/external.html +0 -1
  136. package/src/api/exporters/html/__snapshots__/codeBlock/defaultLanguage/internal.html +0 -1
  137. package/src/api/exporters/html/__snapshots__/codeBlock/empty/external.html +0 -1
  138. package/src/api/exporters/html/__snapshots__/codeBlock/empty/internal.html +0 -1
  139. package/src/api/exporters/html/__snapshots__/codeBlock/python/external.html +0 -1
  140. package/src/api/exporters/html/__snapshots__/codeBlock/python/internal.html +0 -1
  141. package/src/api/exporters/html/__snapshots__/complex/misc/external.html +0 -1
  142. package/src/api/exporters/html/__snapshots__/complex/misc/internal.html +0 -1
  143. package/src/api/exporters/html/__snapshots__/customBlock/basic/external.html +0 -1
  144. package/src/api/exporters/html/__snapshots__/customBlock/basic/internal.html +0 -1
  145. package/src/api/exporters/html/__snapshots__/customParagraph/basic/external.html +0 -1
  146. package/src/api/exporters/html/__snapshots__/customParagraph/basic/internal.html +0 -1
  147. package/src/api/exporters/html/__snapshots__/customParagraph/lineBreaks/external.html +0 -1
  148. package/src/api/exporters/html/__snapshots__/customParagraph/lineBreaks/internal.html +0 -1
  149. package/src/api/exporters/html/__snapshots__/customParagraph/nested/external.html +0 -1
  150. package/src/api/exporters/html/__snapshots__/customParagraph/nested/internal.html +0 -1
  151. package/src/api/exporters/html/__snapshots__/customParagraph/styled/external.html +0 -1
  152. package/src/api/exporters/html/__snapshots__/customParagraph/styled/internal.html +0 -1
  153. package/src/api/exporters/html/__snapshots__/file/basic/external.html +0 -1
  154. package/src/api/exporters/html/__snapshots__/file/basic/internal.html +0 -1
  155. package/src/api/exporters/html/__snapshots__/file/button/external.html +0 -1
  156. package/src/api/exporters/html/__snapshots__/file/button/internal.html +0 -1
  157. package/src/api/exporters/html/__snapshots__/file/nested/external.html +0 -1
  158. package/src/api/exporters/html/__snapshots__/file/nested/internal.html +0 -1
  159. package/src/api/exporters/html/__snapshots__/file/noCaption/external.html +0 -1
  160. package/src/api/exporters/html/__snapshots__/file/noCaption/internal.html +0 -1
  161. package/src/api/exporters/html/__snapshots__/file/noName/external.html +0 -1
  162. package/src/api/exporters/html/__snapshots__/file/noName/internal.html +0 -1
  163. package/src/api/exporters/html/__snapshots__/fontSize/basic/external.html +0 -1
  164. package/src/api/exporters/html/__snapshots__/fontSize/basic/internal.html +0 -1
  165. package/src/api/exporters/html/__snapshots__/hardbreak/basic/external.html +0 -1
  166. package/src/api/exporters/html/__snapshots__/hardbreak/basic/internal.html +0 -1
  167. package/src/api/exporters/html/__snapshots__/hardbreak/between-links/external.html +0 -1
  168. package/src/api/exporters/html/__snapshots__/hardbreak/between-links/internal.html +0 -1
  169. package/src/api/exporters/html/__snapshots__/hardbreak/end/external.html +0 -1
  170. package/src/api/exporters/html/__snapshots__/hardbreak/end/internal.html +0 -1
  171. package/src/api/exporters/html/__snapshots__/hardbreak/link/external.html +0 -1
  172. package/src/api/exporters/html/__snapshots__/hardbreak/link/internal.html +0 -1
  173. package/src/api/exporters/html/__snapshots__/hardbreak/multiple/external.html +0 -1
  174. package/src/api/exporters/html/__snapshots__/hardbreak/multiple/internal.html +0 -1
  175. package/src/api/exporters/html/__snapshots__/hardbreak/only/external.html +0 -1
  176. package/src/api/exporters/html/__snapshots__/hardbreak/only/internal.html +0 -1
  177. package/src/api/exporters/html/__snapshots__/hardbreak/start/external.html +0 -1
  178. package/src/api/exporters/html/__snapshots__/hardbreak/start/internal.html +0 -1
  179. package/src/api/exporters/html/__snapshots__/hardbreak/styles/external.html +0 -1
  180. package/src/api/exporters/html/__snapshots__/hardbreak/styles/internal.html +0 -1
  181. package/src/api/exporters/html/__snapshots__/image/basic/external.html +0 -1
  182. package/src/api/exporters/html/__snapshots__/image/basic/internal.html +0 -1
  183. package/src/api/exporters/html/__snapshots__/image/button/external.html +0 -1
  184. package/src/api/exporters/html/__snapshots__/image/button/internal.html +0 -1
  185. package/src/api/exporters/html/__snapshots__/image/nested/external.html +0 -1
  186. package/src/api/exporters/html/__snapshots__/image/nested/internal.html +0 -1
  187. package/src/api/exporters/html/__snapshots__/image/noCaption/external.html +0 -1
  188. package/src/api/exporters/html/__snapshots__/image/noCaption/internal.html +0 -1
  189. package/src/api/exporters/html/__snapshots__/image/noName/external.html +0 -1
  190. package/src/api/exporters/html/__snapshots__/image/noName/internal.html +0 -1
  191. package/src/api/exporters/html/__snapshots__/image/noPreview/external.html +0 -1
  192. package/src/api/exporters/html/__snapshots__/image/noPreview/internal.html +0 -1
  193. package/src/api/exporters/html/__snapshots__/link/adjacent/external.html +0 -1
  194. package/src/api/exporters/html/__snapshots__/link/adjacent/internal.html +0 -1
  195. package/src/api/exporters/html/__snapshots__/link/basic/external.html +0 -1
  196. package/src/api/exporters/html/__snapshots__/link/basic/internal.html +0 -1
  197. package/src/api/exporters/html/__snapshots__/link/styled/external.html +0 -1
  198. package/src/api/exporters/html/__snapshots__/link/styled/internal.html +0 -1
  199. package/src/api/exporters/html/__snapshots__/lists/basic/external.html +0 -1
  200. package/src/api/exporters/html/__snapshots__/lists/basic/internal.html +0 -1
  201. package/src/api/exporters/html/__snapshots__/lists/nested/external.html +0 -1
  202. package/src/api/exporters/html/__snapshots__/lists/nested/internal.html +0 -1
  203. package/src/api/exporters/html/__snapshots__/mention/basic/external.html +0 -1
  204. package/src/api/exporters/html/__snapshots__/mention/basic/internal.html +0 -1
  205. package/src/api/exporters/html/__snapshots__/pageBreak/basic/external.html +0 -1
  206. package/src/api/exporters/html/__snapshots__/pageBreak/basic/internal.html +0 -1
  207. package/src/api/exporters/html/__snapshots__/paragraph/basic/external.html +0 -1
  208. package/src/api/exporters/html/__snapshots__/paragraph/basic/internal.html +0 -1
  209. package/src/api/exporters/html/__snapshots__/paragraph/empty/external.html +0 -1
  210. package/src/api/exporters/html/__snapshots__/paragraph/empty/internal.html +0 -1
  211. package/src/api/exporters/html/__snapshots__/paragraph/lineBreaks/external.html +0 -1
  212. package/src/api/exporters/html/__snapshots__/paragraph/lineBreaks/internal.html +0 -1
  213. package/src/api/exporters/html/__snapshots__/paragraph/nested/external.html +0 -1
  214. package/src/api/exporters/html/__snapshots__/paragraph/nested/internal.html +0 -1
  215. package/src/api/exporters/html/__snapshots__/paragraph/styled/external.html +0 -1
  216. package/src/api/exporters/html/__snapshots__/paragraph/styled/internal.html +0 -1
  217. package/src/api/exporters/html/__snapshots__/paste/parse-basic-block-types.json +0 -140
  218. package/src/api/exporters/html/__snapshots__/paste/parse-deep-nested-content.json +0 -240
  219. package/src/api/exporters/html/__snapshots__/paste/parse-div-with-inline-content.json +0 -91
  220. package/src/api/exporters/html/__snapshots__/paste/parse-divs.json +0 -19
  221. package/src/api/exporters/html/__snapshots__/paste/parse-fake-image-caption.json +0 -31
  222. package/src/api/exporters/html/__snapshots__/paste/parse-mixed-nested-lists.json +0 -70
  223. package/src/api/exporters/html/__snapshots__/paste/parse-nested-lists-with-paragraphs.json +0 -70
  224. package/src/api/exporters/html/__snapshots__/paste/parse-nested-lists.json +0 -70
  225. package/src/api/exporters/html/__snapshots__/simpleCustomParagraph/basic/external.html +0 -1
  226. package/src/api/exporters/html/__snapshots__/simpleCustomParagraph/basic/internal.html +0 -1
  227. package/src/api/exporters/html/__snapshots__/simpleCustomParagraph/nested/external.html +0 -1
  228. package/src/api/exporters/html/__snapshots__/simpleCustomParagraph/nested/internal.html +0 -1
  229. package/src/api/exporters/html/__snapshots__/simpleCustomParagraph/styled/external.html +0 -1
  230. package/src/api/exporters/html/__snapshots__/simpleCustomParagraph/styled/internal.html +0 -1
  231. package/src/api/exporters/html/__snapshots__/simpleFile/basic/external.html +0 -1
  232. package/src/api/exporters/html/__snapshots__/simpleFile/basic/internal.html +0 -1
  233. package/src/api/exporters/html/__snapshots__/simpleFile/button/external.html +0 -1
  234. package/src/api/exporters/html/__snapshots__/simpleFile/button/internal.html +0 -1
  235. package/src/api/exporters/html/__snapshots__/simpleFile/nested/external.html +0 -1
  236. package/src/api/exporters/html/__snapshots__/simpleFile/nested/internal.html +0 -1
  237. package/src/api/exporters/html/__snapshots__/simpleImage/basic/external.html +0 -1
  238. package/src/api/exporters/html/__snapshots__/simpleImage/basic/internal.html +0 -1
  239. package/src/api/exporters/html/__snapshots__/simpleImage/button/external.html +0 -1
  240. package/src/api/exporters/html/__snapshots__/simpleImage/button/internal.html +0 -1
  241. package/src/api/exporters/html/__snapshots__/simpleImage/nested/external.html +0 -1
  242. package/src/api/exporters/html/__snapshots__/simpleImage/nested/internal.html +0 -1
  243. package/src/api/exporters/html/__snapshots__/simpleImage/noCaption/external.html +0 -1
  244. package/src/api/exporters/html/__snapshots__/simpleImage/noCaption/internal.html +0 -1
  245. package/src/api/exporters/html/__snapshots__/simpleImage/noName/external.html +0 -1
  246. package/src/api/exporters/html/__snapshots__/simpleImage/noName/internal.html +0 -1
  247. package/src/api/exporters/html/__snapshots__/simpleImage/noPreview/external.html +0 -1
  248. package/src/api/exporters/html/__snapshots__/simpleImage/noPreview/internal.html +0 -1
  249. package/src/api/exporters/html/__snapshots__/small/basic/external.html +0 -1
  250. package/src/api/exporters/html/__snapshots__/small/basic/internal.html +0 -1
  251. package/src/api/exporters/html/__snapshots__/table/allColWidths/external.html +0 -1
  252. package/src/api/exporters/html/__snapshots__/table/allColWidths/internal.html +0 -1
  253. package/src/api/exporters/html/__snapshots__/table/basic/external.html +0 -1
  254. package/src/api/exporters/html/__snapshots__/table/basic/internal.html +0 -1
  255. package/src/api/exporters/html/__snapshots__/table/headerCols/external.html +0 -1
  256. package/src/api/exporters/html/__snapshots__/table/headerCols/internal.html +0 -1
  257. package/src/api/exporters/html/__snapshots__/table/headerRows/external.html +0 -1
  258. package/src/api/exporters/html/__snapshots__/table/headerRows/internal.html +0 -1
  259. package/src/api/exporters/html/__snapshots__/table/headersRows/external.html +0 -1
  260. package/src/api/exporters/html/__snapshots__/table/headersRows/internal.html +0 -1
  261. package/src/api/exporters/html/__snapshots__/table/mixedCellColors/external.html +0 -1
  262. package/src/api/exporters/html/__snapshots__/table/mixedCellColors/internal.html +0 -1
  263. package/src/api/exporters/html/__snapshots__/table/mixedColWidths/external.html +0 -1
  264. package/src/api/exporters/html/__snapshots__/table/mixedColWidths/internal.html +0 -1
  265. package/src/api/exporters/html/__snapshots__/table/mixedRowspansAndColspans/external.html +0 -1
  266. package/src/api/exporters/html/__snapshots__/table/mixedRowspansAndColspans/internal.html +0 -1
  267. package/src/api/exporters/html/__snapshots__/tag/basic/external.html +0 -1
  268. package/src/api/exporters/html/__snapshots__/tag/basic/internal.html +0 -1
  269. package/src/api/exporters/html/htmlConversion.test.ts +0 -110
  270. package/src/api/exporters/markdown/__snapshots__/codeBlock/contains-newlines/markdown.md +0 -4
  271. package/src/api/exporters/markdown/__snapshots__/codeBlock/defaultLanguage/markdown.md +0 -3
  272. package/src/api/exporters/markdown/__snapshots__/codeBlock/empty/markdown.md +0 -2
  273. package/src/api/exporters/markdown/__snapshots__/codeBlock/python/markdown.md +0 -3
  274. package/src/api/exporters/markdown/__snapshots__/complex/misc/markdown.md +0 -5
  275. package/src/api/exporters/markdown/__snapshots__/customBlock/basic/markdown.md +0 -5
  276. package/src/api/exporters/markdown/__snapshots__/customParagraph/basic/markdown.md +0 -1
  277. package/src/api/exporters/markdown/__snapshots__/customParagraph/lineBreaks/markdown.md +0 -1
  278. package/src/api/exporters/markdown/__snapshots__/customParagraph/nested/markdown.md +0 -5
  279. package/src/api/exporters/markdown/__snapshots__/customParagraph/styled/markdown.md +0 -1
  280. package/src/api/exporters/markdown/__snapshots__/file/basic/markdown.md +0 -3
  281. package/src/api/exporters/markdown/__snapshots__/file/button/markdown.md +0 -1
  282. package/src/api/exporters/markdown/__snapshots__/file/nested/markdown.md +0 -7
  283. package/src/api/exporters/markdown/__snapshots__/file/noCaption/markdown.md +0 -1
  284. package/src/api/exporters/markdown/__snapshots__/file/noName/markdown.md +0 -3
  285. package/src/api/exporters/markdown/__snapshots__/fontSize/basic/markdown.md +0 -1
  286. package/src/api/exporters/markdown/__snapshots__/hardbreak/basic/markdown.md +0 -2
  287. package/src/api/exporters/markdown/__snapshots__/hardbreak/between-links/markdown.md +0 -2
  288. package/src/api/exporters/markdown/__snapshots__/hardbreak/end/markdown.md +0 -1
  289. package/src/api/exporters/markdown/__snapshots__/hardbreak/link/markdown.md +0 -2
  290. package/src/api/exporters/markdown/__snapshots__/hardbreak/multiple/markdown.md +0 -3
  291. package/src/api/exporters/markdown/__snapshots__/hardbreak/only/markdown.md +0 -0
  292. package/src/api/exporters/markdown/__snapshots__/hardbreak/start/markdown.md +0 -1
  293. package/src/api/exporters/markdown/__snapshots__/hardbreak/styles/markdown.md +0 -2
  294. package/src/api/exporters/markdown/__snapshots__/image/basic/markdown.md +0 -3
  295. package/src/api/exporters/markdown/__snapshots__/image/button/markdown.md +0 -1
  296. package/src/api/exporters/markdown/__snapshots__/image/nested/markdown.md +0 -7
  297. package/src/api/exporters/markdown/__snapshots__/image/noCaption/markdown.md +0 -1
  298. package/src/api/exporters/markdown/__snapshots__/image/noName/markdown.md +0 -3
  299. package/src/api/exporters/markdown/__snapshots__/image/noPreview/markdown.md +0 -3
  300. package/src/api/exporters/markdown/__snapshots__/link/adjacent/markdown.md +0 -1
  301. package/src/api/exporters/markdown/__snapshots__/link/basic/markdown.md +0 -1
  302. package/src/api/exporters/markdown/__snapshots__/link/styled/markdown.md +0 -1
  303. package/src/api/exporters/markdown/__snapshots__/lists/basic/markdown.md +0 -10
  304. package/src/api/exporters/markdown/__snapshots__/lists/nested/markdown.md +0 -10
  305. package/src/api/exporters/markdown/__snapshots__/mention/basic/markdown.md +0 -1
  306. package/src/api/exporters/markdown/__snapshots__/pageBreak/basic/markdown.md +0 -0
  307. package/src/api/exporters/markdown/__snapshots__/paragraph/basic/markdown.md +0 -1
  308. package/src/api/exporters/markdown/__snapshots__/paragraph/empty/markdown.md +0 -0
  309. package/src/api/exporters/markdown/__snapshots__/paragraph/lineBreaks/markdown.md +0 -2
  310. package/src/api/exporters/markdown/__snapshots__/paragraph/nested/markdown.md +0 -5
  311. package/src/api/exporters/markdown/__snapshots__/paragraph/styled/markdown.md +0 -1
  312. package/src/api/exporters/markdown/__snapshots__/simpleCustomParagraph/basic/markdown.md +0 -1
  313. package/src/api/exporters/markdown/__snapshots__/simpleCustomParagraph/nested/markdown.md +0 -5
  314. package/src/api/exporters/markdown/__snapshots__/simpleCustomParagraph/styled/markdown.md +0 -1
  315. package/src/api/exporters/markdown/__snapshots__/simpleFile/basic/markdown.md +0 -3
  316. package/src/api/exporters/markdown/__snapshots__/simpleFile/button/markdown.md +0 -1
  317. package/src/api/exporters/markdown/__snapshots__/simpleFile/nested/markdown.md +0 -7
  318. package/src/api/exporters/markdown/__snapshots__/simpleImage/basic/markdown.md +0 -3
  319. package/src/api/exporters/markdown/__snapshots__/simpleImage/button/markdown.md +0 -1
  320. package/src/api/exporters/markdown/__snapshots__/simpleImage/nested/markdown.md +0 -7
  321. package/src/api/exporters/markdown/__snapshots__/simpleImage/noCaption/markdown.md +0 -1
  322. package/src/api/exporters/markdown/__snapshots__/simpleImage/noName/markdown.md +0 -3
  323. package/src/api/exporters/markdown/__snapshots__/simpleImage/noPreview/markdown.md +0 -3
  324. package/src/api/exporters/markdown/__snapshots__/small/basic/markdown.md +0 -1
  325. package/src/api/exporters/markdown/__snapshots__/table/allColWidths/markdown.md +0 -5
  326. package/src/api/exporters/markdown/__snapshots__/table/basic/markdown.md +0 -5
  327. package/src/api/exporters/markdown/__snapshots__/table/headerCols/markdown.md +0 -4
  328. package/src/api/exporters/markdown/__snapshots__/table/headerRows/markdown.md +0 -4
  329. package/src/api/exporters/markdown/__snapshots__/table/mixedCellColors/markdown.md +0 -5
  330. package/src/api/exporters/markdown/__snapshots__/table/mixedColWidths/markdown.md +0 -5
  331. package/src/api/exporters/markdown/__snapshots__/table/mixedRowspansAndColspans/markdown.md +0 -5
  332. package/src/api/exporters/markdown/__snapshots__/tag/basic/markdown.md +0 -1
  333. package/src/api/exporters/markdown/markdownExporter.test.ts +0 -86
  334. package/src/api/nodeConversions/__snapshots__/nodeConversions.test.ts.snap +0 -3473
  335. package/src/api/nodeConversions/nodeConversions.test.ts +0 -83
  336. package/src/api/parsers/html/__snapshots__/list-test.json +0 -177
  337. package/src/api/parsers/html/__snapshots__/parse-2-tables.json +0 -129
  338. package/src/api/parsers/html/__snapshots__/parse-basic-block-types.json +0 -142
  339. package/src/api/parsers/html/__snapshots__/parse-codeblocks.json +0 -62
  340. package/src/api/parsers/html/__snapshots__/parse-div-with-inline-content.json +0 -91
  341. package/src/api/parsers/html/__snapshots__/parse-divs.json +0 -121
  342. package/src/api/parsers/html/__snapshots__/parse-fake-image-caption.json +0 -33
  343. package/src/api/parsers/html/__snapshots__/parse-image-in-paragraph.json +0 -16
  344. package/src/api/parsers/html/__snapshots__/parse-mixed-nested-lists.json +0 -265
  345. package/src/api/parsers/html/__snapshots__/parse-nested-lists-with-paragraphs.json +0 -265
  346. package/src/api/parsers/html/__snapshots__/parse-nested-lists.json +0 -265
  347. package/src/api/parsers/html/__snapshots__/parse-notion-html.json +0 -565
  348. package/src/api/parsers/html/__snapshots__/parse-two-divs.json +0 -36
  349. package/src/api/parsers/html/parseHTML.test.ts +0 -563
  350. package/src/api/parsers/markdown/__snapshots__/complex.json +0 -353
  351. package/src/api/parsers/markdown/__snapshots__/issue-226-1.json +0 -71
  352. package/src/api/parsers/markdown/__snapshots__/issue-226-2.json +0 -144
  353. package/src/api/parsers/markdown/__snapshots__/nested.json +0 -72
  354. package/src/api/parsers/markdown/__snapshots__/non-nested.json +0 -71
  355. package/src/api/parsers/markdown/__snapshots__/pasted/complex.json +0 -319
  356. package/src/api/parsers/markdown/__snapshots__/pasted/issue-226-1.json +0 -81
  357. package/src/api/parsers/markdown/__snapshots__/pasted/issue-226-2.json +0 -165
  358. package/src/api/parsers/markdown/__snapshots__/pasted/nested.json +0 -81
  359. package/src/api/parsers/markdown/__snapshots__/pasted/non-nested.json +0 -81
  360. package/src/api/parsers/markdown/__snapshots__/pasted/styled.json +0 -61
  361. package/src/api/parsers/markdown/__snapshots__/pasted/whitespace bold.json +0 -42
  362. package/src/api/parsers/markdown/__snapshots__/styled.json +0 -58
  363. package/src/api/parsers/markdown/__snapshots__/whitespace bold.json +0 -19
  364. package/src/api/parsers/markdown/parseMarkdown.test.ts +0 -135
  365. package/src/api/testUtil/cases/customBlocks.ts +0 -342
  366. package/src/api/testUtil/cases/customInlineContent.ts +0 -113
  367. package/src/api/testUtil/cases/customStyles.ts +0 -102
  368. package/src/api/testUtil/cases/defaultSchema.ts +0 -1493
  369. package/src/api/testUtil/index.ts +0 -19
  370. package/src/api/testUtil/partialBlockTestUtil.ts +0 -198
  371. package/src/api/testUtil/paste.ts +0 -46
  372. package/types/src/api/blockManipulation/commands/removeBlocks/removeBlocks.d.ts +0 -4
  373. package/types/src/api/clipboard/clipboardInternal.test.d.ts +0 -1
  374. package/types/src/api/clipboard/testUtil.d.ts +0 -541
  375. package/types/src/api/exporters/html/htmlConversion.test.d.ts +0 -1
  376. package/types/src/api/exporters/markdown/markdownExporter.test.d.ts +0 -1
  377. package/types/src/api/nodeConversions/nodeConversions.test.d.ts +0 -1
  378. package/types/src/api/parsers/html/parseHTML.test.d.ts +0 -1
  379. package/types/src/api/parsers/markdown/parseMarkdown.test.d.ts +0 -1
  380. package/types/src/api/testUtil/cases/customBlocks.d.ts +0 -670
  381. package/types/src/api/testUtil/cases/customInlineContent.d.ts +0 -558
  382. package/types/src/api/testUtil/cases/customStyles.d.ts +0 -552
  383. package/types/src/api/testUtil/cases/defaultSchema.d.ts +0 -4
  384. package/types/src/api/testUtil/index.d.ts +0 -14
  385. package/types/src/api/testUtil/partialBlockTestUtil.d.ts +0 -9
  386. package/types/src/api/testUtil/paste.d.ts +0 -2
  387. /package/types/src/api/{blockManipulation/commands/removeBlocks/removeBlocks.test.d.ts → nodeUtil.test.d.ts} +0 -0
  388. /package/types/src/api/{clipboard/clipboardExternal.test.d.ts → positionMapping.test.d.ts} +0 -0
@@ -1,4 +1,4 @@
1
- import { Plugin, PluginKey, PluginView } from "prosemirror-state";
1
+ import { EditorState, Plugin, PluginKey, PluginView } from "prosemirror-state";
2
2
  import {
3
3
  CellSelection,
4
4
  addColumnAfter,
@@ -263,9 +263,8 @@ export class TableHandlesView<
263
263
  | BlockFromConfigNoChildren<DefaultBlockSchema["table"], I, S>
264
264
  | undefined;
265
265
 
266
- const pmNodeInfo = getNodeById(
267
- blockEl.id,
268
- this.editor._tiptapEditor.state.doc
266
+ const pmNodeInfo = this.editor.transact((tr) =>
267
+ getNodeById(blockEl.id, tr.doc)
269
268
  );
270
269
  if (!pmNodeInfo) {
271
270
  throw new Error(`Block with ID ${blockEl.id} not found`);
@@ -273,10 +272,10 @@ export class TableHandlesView<
273
272
 
274
273
  const block = nodeToBlock(
275
274
  pmNodeInfo.node,
275
+ this.editor.pmSchema,
276
276
  this.editor.schema.blockSchema,
277
277
  this.editor.schema.inlineContentSchema,
278
- this.editor.schema.styleSchema,
279
- this.editor.blockCache
278
+ this.editor.schema.styleSchema
280
279
  );
281
280
 
282
281
  if (checkBlockIsDefaultType("table", block, this.editor)) {
@@ -447,9 +446,7 @@ export class TableHandlesView<
447
446
  // Dispatches a dummy transaction to force a decorations update if
448
447
  // necessary.
449
448
  if (dispatchDecorationsTransaction) {
450
- this.editor.dispatch(
451
- this.pmView.state.tr.setMeta(tableHandlesPluginKey, true)
452
- );
449
+ this.editor.transact((tr) => tr.setMeta(tableHandlesPluginKey, true));
453
450
  }
454
451
  };
455
452
 
@@ -814,12 +811,12 @@ export class TableHandlesProsemirrorPlugin<
814
811
  };
815
812
  this.view!.emitUpdate();
816
813
 
817
- this.editor.dispatch(
818
- this.editor._tiptapEditor.state.tr.setMeta(tableHandlesPluginKey, {
814
+ this.editor.transact((tr) =>
815
+ tr.setMeta(tableHandlesPluginKey, {
819
816
  draggedCellOrientation:
820
- this.view!.state.draggingState.draggedCellOrientation,
821
- originalIndex: this.view!.state.colIndex,
822
- newIndex: this.view!.state.colIndex,
817
+ this.view!.state!.draggingState!.draggedCellOrientation,
818
+ originalIndex: this.view!.state!.colIndex,
819
+ newIndex: this.view!.state!.colIndex,
823
820
  tablePos: this.view!.tablePos,
824
821
  })
825
822
  );
@@ -857,12 +854,12 @@ export class TableHandlesProsemirrorPlugin<
857
854
  };
858
855
  this.view!.emitUpdate();
859
856
 
860
- this.editor.dispatch(
861
- this.editor._tiptapEditor.state.tr.setMeta(tableHandlesPluginKey, {
857
+ this.editor.transact((tr) =>
858
+ tr.setMeta(tableHandlesPluginKey, {
862
859
  draggedCellOrientation:
863
- this.view!.state.draggingState.draggedCellOrientation,
864
- originalIndex: this.view!.state.rowIndex,
865
- newIndex: this.view!.state.rowIndex,
860
+ this.view!.state!.draggingState!.draggedCellOrientation,
861
+ originalIndex: this.view!.state!.rowIndex,
862
+ newIndex: this.view!.state!.rowIndex,
866
863
  tablePos: this.view!.tablePos,
867
864
  })
868
865
  );
@@ -890,9 +887,7 @@ export class TableHandlesProsemirrorPlugin<
890
887
  this.view!.state.draggingState = undefined;
891
888
  this.view!.emitUpdate();
892
889
 
893
- this.editor.dispatch(
894
- this.editor._tiptapEditor.state.tr.setMeta(tableHandlesPluginKey, null)
895
- );
890
+ this.editor.transact((tr) => tr.setMeta(tableHandlesPluginKey, null));
896
891
 
897
892
  if (!this.editor.prosemirrorView) {
898
893
  throw new Error("Editor view not initialized.");
@@ -939,6 +934,7 @@ export class TableHandlesProsemirrorPlugin<
939
934
  * @returns The new state after the selection has been set.
940
935
  */
941
936
  private setCellSelection = (
937
+ state: EditorState,
942
938
  relativeStartCell: RelativeCellIndices,
943
939
  relativeEndCell: RelativeCellIndices = relativeStartCell
944
940
  ) => {
@@ -948,7 +944,6 @@ export class TableHandlesProsemirrorPlugin<
948
944
  throw new Error("Table handles view not initialized");
949
945
  }
950
946
 
951
- const state = this.editor.prosemirrorState;
952
947
  const tableResolvedPos = state.doc.resolve(view.tablePos! + 1);
953
948
  const startRowResolvedPos = state.doc.resolve(
954
949
  tableResolvedPos.posAtIndex(relativeStartCell.row) + 1
@@ -986,24 +981,28 @@ export class TableHandlesProsemirrorPlugin<
986
981
  | { orientation: "row"; side: "above" | "below" }
987
982
  | { orientation: "column"; side: "left" | "right" }
988
983
  ) => {
989
- const state = this.setCellSelection(
990
- direction.orientation === "row"
991
- ? { row: index, col: 0 }
992
- : { row: 0, col: index }
993
- );
994
- if (direction.orientation === "row") {
995
- if (direction.side === "above") {
996
- return addRowBefore(state, this.editor.dispatch);
997
- } else {
998
- return addRowAfter(state, this.editor.dispatch);
999
- }
1000
- } else {
1001
- if (direction.side === "left") {
1002
- return addColumnBefore(state, this.editor.dispatch);
984
+ this.editor.exec((beforeState, dispatch) => {
985
+ const state = this.setCellSelection(
986
+ beforeState,
987
+ direction.orientation === "row"
988
+ ? { row: index, col: 0 }
989
+ : { row: 0, col: index }
990
+ );
991
+
992
+ if (direction.orientation === "row") {
993
+ if (direction.side === "above") {
994
+ return addRowBefore(state, dispatch);
995
+ } else {
996
+ return addRowAfter(state, dispatch);
997
+ }
1003
998
  } else {
1004
- return addColumnAfter(state, this.editor.dispatch);
999
+ if (direction.side === "left") {
1000
+ return addColumnBefore(state, dispatch);
1001
+ } else {
1002
+ return addColumnAfter(state, dispatch);
1003
+ }
1005
1004
  }
1006
- }
1005
+ });
1007
1006
  };
1008
1007
 
1009
1008
  /**
@@ -1013,14 +1012,22 @@ export class TableHandlesProsemirrorPlugin<
1013
1012
  index: RelativeCellIndices["row"] | RelativeCellIndices["col"],
1014
1013
  direction: "row" | "column"
1015
1014
  ) => {
1016
- const state = this.setCellSelection(
1017
- direction === "row" ? { row: index, col: 0 } : { row: 0, col: index }
1018
- );
1019
-
1020
1015
  if (direction === "row") {
1021
- return deleteRow(state, this.editor.dispatch);
1016
+ return this.editor.exec((beforeState, dispatch) => {
1017
+ const state = this.setCellSelection(beforeState, {
1018
+ row: index,
1019
+ col: 0,
1020
+ });
1021
+ return deleteRow(state, dispatch);
1022
+ });
1022
1023
  } else {
1023
- return deleteColumn(state, this.editor.dispatch);
1024
+ return this.editor.exec((beforeState, dispatch) => {
1025
+ const state = this.setCellSelection(beforeState, {
1026
+ row: 0,
1027
+ col: index,
1028
+ });
1029
+ return deleteColumn(state, dispatch);
1030
+ });
1024
1031
  }
1025
1032
  };
1026
1033
 
@@ -1031,14 +1038,17 @@ export class TableHandlesProsemirrorPlugin<
1031
1038
  relativeStartCell: RelativeCellIndices;
1032
1039
  relativeEndCell: RelativeCellIndices;
1033
1040
  }) => {
1034
- const state = cellsToMerge
1035
- ? this.setCellSelection(
1036
- cellsToMerge.relativeStartCell,
1037
- cellsToMerge.relativeEndCell
1038
- )
1039
- : this.editor.prosemirrorState;
1040
-
1041
- return mergeCells(state, this.editor.dispatch);
1041
+ return this.editor.exec((beforeState, dispatch) => {
1042
+ const state = cellsToMerge
1043
+ ? this.setCellSelection(
1044
+ beforeState,
1045
+ cellsToMerge.relativeStartCell,
1046
+ cellsToMerge.relativeEndCell
1047
+ )
1048
+ : beforeState;
1049
+
1050
+ return mergeCells(state, dispatch);
1051
+ });
1042
1052
  };
1043
1053
 
1044
1054
  /**
@@ -1046,11 +1056,13 @@ export class TableHandlesProsemirrorPlugin<
1046
1056
  * If no cell is provided, the current cell selected will be split.
1047
1057
  */
1048
1058
  splitCell = (relativeCellToSplit?: RelativeCellIndices) => {
1049
- const state = relativeCellToSplit
1050
- ? this.setCellSelection(relativeCellToSplit)
1051
- : this.editor.prosemirrorState;
1059
+ return this.editor.exec((beforeState, dispatch) => {
1060
+ const state = relativeCellToSplit
1061
+ ? this.setCellSelection(beforeState, relativeCellToSplit)
1062
+ : beforeState;
1052
1063
 
1053
- return splitCell(state, this.editor.dispatch);
1064
+ return splitCell(state, dispatch);
1065
+ });
1054
1066
  };
1055
1067
 
1056
1068
  /**
@@ -1068,69 +1080,71 @@ export class TableHandlesProsemirrorPlugin<
1068
1080
  cells: RelativeCellIndices[];
1069
1081
  } => {
1070
1082
  // Based on the current selection, find the table cells that are within the selected range
1071
- const state = this.editor.prosemirrorState;
1072
- const selection = state.selection;
1073
-
1074
- let $fromCell = selection.$from;
1075
- let $toCell = selection.$to;
1076
- if (isTableCellSelection(selection)) {
1077
- // When the selection is a table cell selection, we can find the
1078
- // from and to cells by iterating over the ranges in the selection
1079
- const { ranges } = selection;
1080
- ranges.forEach((range) => {
1081
- $fromCell = range.$from.min($fromCell ?? range.$from);
1082
- $toCell = range.$to.max($toCell ?? range.$to);
1083
- });
1084
- } else {
1085
- // When the selection is a normal text selection
1086
- // Assumes we are within a tableParagraph
1087
- // And find the from and to cells by resolving the positions
1088
- $fromCell = state.doc.resolve(
1089
- selection.$from.pos - selection.$from.parentOffset - 1
1090
- );
1091
- $toCell = state.doc.resolve(
1092
- selection.$to.pos - selection.$to.parentOffset - 1
1093
- );
1094
1083
 
1095
- // Opt-out when the selection is not pointing into cells
1096
- if ($fromCell.pos === 0 || $toCell.pos === 0) {
1097
- return undefined;
1084
+ return this.editor.transact((tr) => {
1085
+ const selection = tr.selection;
1086
+
1087
+ let $fromCell = selection.$from;
1088
+ let $toCell = selection.$to;
1089
+ if (isTableCellSelection(selection)) {
1090
+ // When the selection is a table cell selection, we can find the
1091
+ // from and to cells by iterating over the ranges in the selection
1092
+ const { ranges } = selection;
1093
+ ranges.forEach((range) => {
1094
+ $fromCell = range.$from.min($fromCell ?? range.$from);
1095
+ $toCell = range.$to.max($toCell ?? range.$to);
1096
+ });
1097
+ } else {
1098
+ // When the selection is a normal text selection
1099
+ // Assumes we are within a tableParagraph
1100
+ // And find the from and to cells by resolving the positions
1101
+ $fromCell = tr.doc.resolve(
1102
+ selection.$from.pos - selection.$from.parentOffset - 1
1103
+ );
1104
+ $toCell = tr.doc.resolve(
1105
+ selection.$to.pos - selection.$to.parentOffset - 1
1106
+ );
1107
+
1108
+ // Opt-out when the selection is not pointing into cells
1109
+ if ($fromCell.pos === 0 || $toCell.pos === 0) {
1110
+ return undefined;
1111
+ }
1098
1112
  }
1099
- }
1100
1113
 
1101
- // Find the row and table that the from and to cells are in
1102
- const $fromRow = state.doc.resolve(
1103
- $fromCell.pos - $fromCell.parentOffset - 1
1104
- );
1105
- const $toRow = state.doc.resolve($toCell.pos - $toCell.parentOffset - 1);
1106
-
1107
- // Find the table
1108
- const $table = state.doc.resolve($fromRow.pos - $fromRow.parentOffset - 1);
1109
-
1110
- // Find the column and row indices of the from and to cells
1111
- const fromColIndex = $fromCell.index($fromRow.depth);
1112
- const fromRowIndex = $fromRow.index($table.depth);
1113
- const toColIndex = $toCell.index($toRow.depth);
1114
- const toRowIndex = $toRow.index($table.depth);
1115
-
1116
- const cells: RelativeCellIndices[] = [];
1117
- for (let row = fromRowIndex; row <= toRowIndex; row++) {
1118
- for (let col = fromColIndex; col <= toColIndex; col++) {
1119
- cells.push({ row, col });
1114
+ // Find the row and table that the from and to cells are in
1115
+ const $fromRow = tr.doc.resolve(
1116
+ $fromCell.pos - $fromCell.parentOffset - 1
1117
+ );
1118
+ const $toRow = tr.doc.resolve($toCell.pos - $toCell.parentOffset - 1);
1119
+
1120
+ // Find the table
1121
+ const $table = tr.doc.resolve($fromRow.pos - $fromRow.parentOffset - 1);
1122
+
1123
+ // Find the column and row indices of the from and to cells
1124
+ const fromColIndex = $fromCell.index($fromRow.depth);
1125
+ const fromRowIndex = $fromRow.index($table.depth);
1126
+ const toColIndex = $toCell.index($toRow.depth);
1127
+ const toRowIndex = $toRow.index($table.depth);
1128
+
1129
+ const cells: RelativeCellIndices[] = [];
1130
+ for (let row = fromRowIndex; row <= toRowIndex; row++) {
1131
+ for (let col = fromColIndex; col <= toColIndex; col++) {
1132
+ cells.push({ row, col });
1133
+ }
1120
1134
  }
1121
- }
1122
1135
 
1123
- return {
1124
- from: {
1125
- row: fromRowIndex,
1126
- col: fromColIndex,
1127
- },
1128
- to: {
1129
- row: toRowIndex,
1130
- col: toColIndex,
1131
- },
1132
- cells,
1133
- };
1136
+ return {
1137
+ from: {
1138
+ row: fromRowIndex,
1139
+ col: fromColIndex,
1140
+ },
1141
+ to: {
1142
+ row: toRowIndex,
1143
+ col: toColIndex,
1144
+ },
1145
+ cells,
1146
+ };
1147
+ });
1134
1148
  };
1135
1149
 
1136
1150
  /**
@@ -1143,32 +1157,32 @@ export class TableHandlesProsemirrorPlugin<
1143
1157
  | BlockFromConfigNoChildren<DefaultBlockSchema["table"], any, any>
1144
1158
  | undefined
1145
1159
  ) => {
1146
- const isSelectingTableCells = isTableCellSelection(
1147
- this.editor.prosemirrorState.selection
1148
- )
1149
- ? this.editor.prosemirrorState.selection
1150
- : undefined;
1160
+ return this.editor.transact((tr) => {
1161
+ const isSelectingTableCells = isTableCellSelection(tr.selection)
1162
+ ? tr.selection
1163
+ : undefined;
1151
1164
 
1152
- if (
1153
- !isSelectingTableCells ||
1154
- !block ||
1155
- // Only offer the merge button if there is more than one cell selected.
1156
- isSelectingTableCells.ranges.length <= 1
1157
- ) {
1158
- return undefined;
1159
- }
1165
+ if (
1166
+ !isSelectingTableCells ||
1167
+ !block ||
1168
+ // Only offer the merge button if there is more than one cell selected.
1169
+ isSelectingTableCells.ranges.length <= 1
1170
+ ) {
1171
+ return undefined;
1172
+ }
1160
1173
 
1161
- const cellSelection = this.getCellSelection();
1174
+ const cellSelection = this.getCellSelection();
1162
1175
 
1163
- if (!cellSelection) {
1164
- return undefined;
1165
- }
1176
+ if (!cellSelection) {
1177
+ return undefined;
1178
+ }
1166
1179
 
1167
- if (areInSameColumn(cellSelection.from, cellSelection.to, block)) {
1168
- return "vertical";
1169
- }
1180
+ if (areInSameColumn(cellSelection.from, cellSelection.to, block)) {
1181
+ return "vertical";
1182
+ }
1170
1183
 
1171
- return "horizontal";
1184
+ return "horizontal";
1185
+ });
1172
1186
  };
1173
1187
 
1174
1188
  cropEmptyRowsOrColumns = (
@@ -24,19 +24,19 @@ export const de: Dictionary = {
24
24
  title: "Zitat",
25
25
  subtext: "Zitat oder Auszug",
26
26
  aliases: ["quotation", "blockquote", "bq"],
27
- group: "Grundlegende blöcke",
27
+ group: "Grundlegende Blöcke",
28
28
  },
29
29
  numbered_list: {
30
30
  title: "Nummerierte Liste",
31
31
  subtext: "Liste mit nummerierten Elementen",
32
32
  aliases: ["ol", "li", "liste", "nummerierteliste", "nummerierte liste"],
33
- group: "Grundlegende blöcke",
33
+ group: "Grundlegende Blöcke",
34
34
  },
35
35
  bullet_list: {
36
36
  title: "Aufzählungsliste",
37
37
  subtext: "Liste mit unnummerierten Elementen",
38
38
  aliases: ["ul", "li", "liste", "aufzählungsliste", "aufzählung liste"],
39
- group: "Grundlegende blöcke",
39
+ group: "Grundlegende Blöcke",
40
40
  },
41
41
  check_list: {
42
42
  title: "Checkliste",
@@ -50,19 +50,19 @@ export const de: Dictionary = {
50
50
  "geprüfte liste",
51
51
  "kontrollkästchen",
52
52
  ],
53
- group: "Grundlegende blöcke",
53
+ group: "Grundlegende Blöcke",
54
54
  },
55
55
  paragraph: {
56
56
  title: "Absatz",
57
57
  subtext: "Der Hauptteil Ihres Dokuments",
58
58
  aliases: ["p", "absatz"],
59
- group: "Grundlegende blöcke",
59
+ group: "Grundlegende Blöcke",
60
60
  },
61
61
  code_block: {
62
62
  title: "Codeblock",
63
63
  subtext: "Codeblock mit Syntaxhervorhebung",
64
64
  aliases: ["code", "pre"],
65
- group: "Grundlegende blöcke",
65
+ group: "Grundlegende Blöcke",
66
66
  },
67
67
  page_break: {
68
68
  title: "Seitenumbruch",
@@ -137,9 +137,9 @@ export const de: Dictionary = {
137
137
  bulletListItem: "Liste",
138
138
  numberedListItem: "Liste",
139
139
  checkListItem: "Liste",
140
- new_comment: "Einen Kommentar schreiben...",
141
- edit_comment: "Kommentar bearbeiten...",
142
- comment_reply: "Kommentar hinzufügen...",
140
+ new_comment: "Einen Kommentar schreiben",
141
+ edit_comment: "Kommentar bearbeiten",
142
+ comment_reply: "Kommentar hinzufügen",
143
143
  },
144
144
  file_blocks: {
145
145
  image: {
@@ -178,7 +178,7 @@ export const de: Dictionary = {
178
178
  },
179
179
  suggestion_menu: {
180
180
  no_items_title: "Keine Elemente gefunden",
181
- loading: "Laden…",
181
+ loading: "Laden …",
182
182
  },
183
183
  color_picker: {
184
184
  text_title: "Text",
package/src/index.ts CHANGED
@@ -3,7 +3,6 @@ export * from "./api/exporters/html/externalHTMLExporter.js";
3
3
  export * from "./api/exporters/html/internalHTMLSerializer.js";
4
4
  export * from "./api/getBlockInfoFromPos.js";
5
5
  export * from "./api/nodeUtil.js";
6
- export * from "./api/testUtil/index.js";
7
6
  export * from "./blocks/AudioBlockContent/AudioBlockContent.js";
8
7
  export * from "./blocks/CodeBlockContent/CodeBlockContent.js";
9
8
  export * from "./blocks/FileBlockContent/FileBlockContent.js";
@@ -59,10 +58,12 @@ export * from "./util/typescript.js";
59
58
  export type { CodeBlockOptions } from "./blocks/CodeBlockContent/CodeBlockContent.js";
60
59
  export { UnreachableCaseError, assertEmpty } from "./util/typescript.js";
61
60
 
62
- // for testing from react (TODO: move):
61
+ // Unit testing
62
+ export { selectedFragmentToHTML } from "./api/clipboard/toClipboard/copyExtension.js";
63
+
64
+ // Node conversions
63
65
  export * from "./api/nodeConversions/blockToNode.js";
64
66
  export * from "./api/nodeConversions/nodeToBlock.js";
65
- export * from "./api/testUtil/partialBlockTestUtil.js";
66
67
  export * from "./extensions/UniqueID/UniqueID.js";
67
68
 
68
69
  // for server-util (TODO: maybe move):
@@ -136,11 +136,7 @@ export function createInlineContentSpec<
136
136
  return;
137
137
  }
138
138
 
139
- const content = inlineContentToNodes(
140
- [update],
141
- editor._tiptapEditor.schema,
142
- editor.schema.styleSchema
143
- );
139
+ const content = inlineContentToNodes([update], editor.pmSchema);
144
140
 
145
141
  editor.dispatch(
146
142
  editor.prosemirrorView.state.tr.replaceWith(
@@ -1,4 +1,4 @@
1
1
  import { Block, PartialBlock } from "../../../../blocks/defaultBlocks.js";
2
- import type { BlockNoteEditor } from "../../../../editor/BlockNoteEditor";
3
2
  import { BlockIdentifier, BlockSchema, InlineContentSchema, StyleSchema } from "../../../../schema/index.js";
4
- export declare function insertBlocks<BSchema extends BlockSchema, I extends InlineContentSchema, S extends StyleSchema>(editor: BlockNoteEditor<BSchema, I, S>, blocksToInsert: PartialBlock<BSchema, I, S>[], referenceBlock: BlockIdentifier, placement?: "before" | "after"): Block<BSchema, I, S>[];
3
+ import type { Transaction } from "prosemirror-state";
4
+ export declare function insertBlocks<BSchema extends BlockSchema, I extends InlineContentSchema, S extends StyleSchema>(tr: Transaction, blocksToInsert: PartialBlock<BSchema, I, S>[], referenceBlock: BlockIdentifier, placement?: "before" | "after"): Block<BSchema, I, S>[];
@@ -1,11 +1,7 @@
1
- import { Block, PartialBlock } from "../../../../blocks/defaultBlocks.js";
2
- import type { BlockNoteEditor } from "../../../../editor/BlockNoteEditor";
3
- import { BlockIdentifier, BlockSchema, InlineContentSchema, StyleSchema } from "../../../../schema/index.js";
4
- export declare function removeAndInsertBlocks<BSchema extends BlockSchema, I extends InlineContentSchema, S extends StyleSchema>(editor: BlockNoteEditor<BSchema, I, S>, blocksToRemove: BlockIdentifier[], blocksToInsert: PartialBlock<BSchema, I, S>[]): {
5
- insertedBlocks: Block<BSchema, I, S>[];
6
- removedBlocks: Block<BSchema, I, S>[];
7
- };
8
- export declare function replaceBlocks<BSchema extends BlockSchema, I extends InlineContentSchema, S extends StyleSchema>(editor: BlockNoteEditor<BSchema, I, S>, blocksToRemove: BlockIdentifier[], blocksToInsert: PartialBlock<BSchema, I, S>[]): {
1
+ import type { Transaction } from "prosemirror-state";
2
+ import type { Block, PartialBlock } from "../../../../blocks/defaultBlocks.js";
3
+ import type { BlockIdentifier, BlockSchema, InlineContentSchema, StyleSchema } from "../../../../schema/index.js";
4
+ export declare function removeAndInsertBlocks<BSchema extends BlockSchema, I extends InlineContentSchema, S extends StyleSchema>(tr: Transaction, blocksToRemove: BlockIdentifier[], blocksToInsert: PartialBlock<BSchema, I, S>[]): {
9
5
  insertedBlocks: Block<BSchema, I, S>[];
10
6
  removedBlocks: Block<BSchema, I, S>[];
11
7
  };
@@ -1,11 +1,10 @@
1
- import { EditorState } from "prosemirror-state";
2
- import { Block, PartialBlock } from "../../../../blocks/defaultBlocks.js";
3
- import { BlockNoteEditor } from "../../../../editor/BlockNoteEditor.js";
4
- import { BlockIdentifier, BlockSchema } from "../../../../schema/blocks/types.js";
5
- import { InlineContentSchema } from "../../../../schema/inlineContent/types.js";
6
- import { StyleSchema } from "../../../../schema/styles/types.js";
7
- export declare const updateBlockCommand: <BSchema extends BlockSchema, I extends InlineContentSchema, S extends StyleSchema>(editor: BlockNoteEditor<BSchema, I, S>, posBeforeBlock: number, block: PartialBlock<BSchema, I, S>) => ({ state, dispatch, }: {
8
- state: EditorState;
9
- dispatch: ((args?: any) => any) | undefined;
1
+ import type { Transaction } from "prosemirror-state";
2
+ import type { Block, PartialBlock } from "../../../../blocks/defaultBlocks.js";
3
+ import type { BlockIdentifier, BlockSchema } from "../../../../schema/blocks/types.js";
4
+ import type { InlineContentSchema } from "../../../../schema/inlineContent/types.js";
5
+ import type { StyleSchema } from "../../../../schema/styles/types.js";
6
+ export declare const updateBlockCommand: <BSchema extends BlockSchema, I extends InlineContentSchema, S extends StyleSchema>(posBeforeBlock: number, block: PartialBlock<BSchema, I, S>) => ({ tr, dispatch, }: {
7
+ tr: Transaction;
8
+ dispatch?: () => void;
10
9
  }) => boolean;
11
- export declare function updateBlock<BSchema extends BlockSchema, I extends InlineContentSchema, S extends StyleSchema>(editor: BlockNoteEditor<BSchema, I, S>, blockToUpdate: BlockIdentifier, update: PartialBlock<BSchema, I, S>): Block<BSchema, I, S>;
10
+ export declare function updateBlock<BSchema extends BlockSchema = any, I extends InlineContentSchema = any, S extends StyleSchema = any>(tr: Transaction, blockToUpdate: BlockIdentifier, update: PartialBlock<BSchema, I, S>): Block<BSchema, I, S>;
@@ -1,7 +1,7 @@
1
- import { Block } from "../../../blocks/defaultBlocks.js";
2
- import type { BlockNoteEditor } from "../../../editor/BlockNoteEditor.js";
3
- import { BlockIdentifier, BlockSchema, InlineContentSchema, StyleSchema } from "../../../schema/index.js";
4
- export declare function getBlock<BSchema extends BlockSchema, I extends InlineContentSchema, S extends StyleSchema>(editor: BlockNoteEditor<BSchema, I, S>, blockIdentifier: BlockIdentifier): Block<BSchema, I, S> | undefined;
5
- export declare function getPrevBlock<BSchema extends BlockSchema, I extends InlineContentSchema, S extends StyleSchema>(editor: BlockNoteEditor<BSchema, I, S>, blockIdentifier: BlockIdentifier): Block<BSchema, I, S> | undefined;
6
- export declare function getNextBlock<BSchema extends BlockSchema, I extends InlineContentSchema, S extends StyleSchema>(editor: BlockNoteEditor<BSchema, I, S>, blockIdentifier: BlockIdentifier): Block<BSchema, I, S> | undefined;
7
- export declare function getParentBlock<BSchema extends BlockSchema, I extends InlineContentSchema, S extends StyleSchema>(editor: BlockNoteEditor<BSchema, I, S>, blockIdentifier: BlockIdentifier): Block<BSchema, I, S> | undefined;
1
+ import type { Node } from "prosemirror-model";
2
+ import type { Block } from "../../../blocks/defaultBlocks.js";
3
+ import type { BlockIdentifier, BlockSchema, InlineContentSchema, StyleSchema } from "../../../schema/index.js";
4
+ export declare function getBlock<BSchema extends BlockSchema, I extends InlineContentSchema, S extends StyleSchema>(doc: Node, blockIdentifier: BlockIdentifier): Block<BSchema, I, S> | undefined;
5
+ export declare function getPrevBlock<BSchema extends BlockSchema, I extends InlineContentSchema, S extends StyleSchema>(doc: Node, blockIdentifier: BlockIdentifier): Block<BSchema, I, S> | undefined;
6
+ export declare function getNextBlock<BSchema extends BlockSchema, I extends InlineContentSchema, S extends StyleSchema>(doc: Node, blockIdentifier: BlockIdentifier): Block<BSchema, I, S> | undefined;
7
+ export declare function getParentBlock<BSchema extends BlockSchema, I extends InlineContentSchema, S extends StyleSchema>(doc: Node, blockIdentifier: BlockIdentifier): Block<BSchema, I, S> | undefined;
@@ -1,6 +1,8 @@
1
1
  import { Node } from "prosemirror-model";
2
- import type { BlockNoteEditor } from "../../editor/BlockNoteEditor.js";
3
- import { BlockSchema, InlineContentSchema, StyleSchema } from "../../schema/index.js";
4
- export declare function insertContentAt<BSchema extends BlockSchema, I extends InlineContentSchema, S extends StyleSchema>(position: any, nodes: Node[], editor: BlockNoteEditor<BSchema, I, S>, options?: {
2
+ import type { Transaction } from "prosemirror-state";
3
+ export declare function insertContentAt(tr: Transaction, position: number | {
4
+ from: number;
5
+ to: number;
6
+ }, nodes: Node[], options?: {
5
7
  updateSelection: boolean;
6
8
  }): boolean;
@@ -1,5 +1,5 @@
1
- import type { BlockNoteEditor } from "../../../editor/BlockNoteEditor";
1
+ import { type Transaction } from "prosemirror-state";
2
2
  import { Selection } from "../../../editor/selectionTypes.js";
3
3
  import { BlockIdentifier, BlockSchema, InlineContentSchema, StyleSchema } from "../../../schema/index.js";
4
- export declare function getSelection<BSchema extends BlockSchema, I extends InlineContentSchema, S extends StyleSchema>(editor: BlockNoteEditor<BSchema, I, S>): Selection<BSchema, I, S> | undefined;
5
- export declare function setSelection<BSchema extends BlockSchema, I extends InlineContentSchema, S extends StyleSchema>(editor: BlockNoteEditor<BSchema, I, S>, startBlock: BlockIdentifier, endBlock: BlockIdentifier): void;
4
+ export declare function getSelection<BSchema extends BlockSchema, I extends InlineContentSchema, S extends StyleSchema>(tr: Transaction): Selection<BSchema, I, S> | undefined;
5
+ export declare function setSelection(tr: Transaction, startBlock: BlockIdentifier, endBlock: BlockIdentifier): void;
@@ -1,5 +1,5 @@
1
- import type { BlockNoteEditor } from "../../../../editor/BlockNoteEditor.js";
2
- import { TextCursorPosition } from "../../../../editor/cursorPositionTypes.js";
3
- import { BlockIdentifier, BlockSchema, InlineContentSchema, StyleSchema } from "../../../../schema/index.js";
4
- export declare function getTextCursorPosition<BSchema extends BlockSchema, I extends InlineContentSchema, S extends StyleSchema>(editor: BlockNoteEditor<BSchema, I, S>): TextCursorPosition<BSchema, I, S>;
5
- export declare function setTextCursorPosition<BSchema extends BlockSchema, I extends InlineContentSchema, S extends StyleSchema>(editor: BlockNoteEditor<BSchema, I, S>, targetBlock: BlockIdentifier, placement?: "start" | "end"): void;
1
+ import { type Transaction } from "prosemirror-state";
2
+ import type { TextCursorPosition } from "../../../../editor/cursorPositionTypes.js";
3
+ import type { BlockIdentifier, BlockSchema, InlineContentSchema, StyleSchema } from "../../../../schema/index.js";
4
+ export declare function getTextCursorPosition<BSchema extends BlockSchema, I extends InlineContentSchema, S extends StyleSchema>(tr: Transaction): TextCursorPosition<BSchema, I, S>;
5
+ export declare function setTextCursorPosition(tr: Transaction, targetBlock: BlockIdentifier, placement?: "start" | "end"): void;
@@ -1,5 +1,5 @@
1
1
  import { Node, ResolvedPos } from "prosemirror-model";
2
- import { EditorState } from "prosemirror-state";
2
+ import { EditorState, Transaction } from "prosemirror-state";
3
3
  type SingleBlockInfo = {
4
4
  node: Node;
5
5
  beforePos: number;
@@ -92,4 +92,11 @@ export declare function getBlockInfoFromResolvedPos(resolvedPos: ResolvedPos): B
92
92
  * @param state The ProseMirror editor state.
93
93
  */
94
94
  export declare function getBlockInfoFromSelection(state: EditorState): BlockInfo;
95
+ /**
96
+ * Gets information regarding the ProseMirror nodes that make up a block. The
97
+ * block chosen is the one currently containing the current ProseMirror
98
+ * selection.
99
+ * @param tr The ProseMirror transaction.
100
+ */
101
+ export declare function getBlockInfoFromTransaction(tr: Transaction): BlockInfo;
95
102
  export {};
@@ -4,12 +4,12 @@ import type { PartialBlock } from "../../blocks/defaultBlocks";
4
4
  /**
5
5
  * converts an array of inline content elements to prosemirror nodes
6
6
  */
7
- export declare function inlineContentToNodes<I extends InlineContentSchema, S extends StyleSchema>(blockContent: PartialInlineContent<I, S>, schema: Schema, styleSchema: S, blockType?: string): Node[];
7
+ export declare function inlineContentToNodes<I extends InlineContentSchema, S extends StyleSchema>(blockContent: PartialInlineContent<I, S>, schema: Schema, blockType?: string, styleSchema?: S): Node[];
8
8
  /**
9
9
  * converts an array of inline content elements to prosemirror nodes
10
10
  */
11
- export declare function tableContentToNodes<I extends InlineContentSchema, S extends StyleSchema>(tableContent: PartialTableContent<I, S>, schema: Schema, styleSchema: StyleSchema): Node[];
11
+ export declare function tableContentToNodes<I extends InlineContentSchema, S extends StyleSchema>(tableContent: PartialTableContent<I, S>, schema: Schema, styleSchema?: StyleSchema): Node[];
12
12
  /**
13
13
  * Converts a BlockNote block to a Prosemirror node.
14
14
  */
15
- export declare function blockToNode(block: PartialBlock<any, any, any>, schema: Schema, styleSchema: StyleSchema): Node;
15
+ export declare function blockToNode(block: PartialBlock<any, any, any>, schema: Schema, styleSchema?: StyleSchema): Node;