@blocknote/core 0.20.0 → 0.22.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 (456) hide show
  1. package/dist/blocknote.js +1602 -1569
  2. package/dist/blocknote.js.map +1 -1
  3. package/dist/blocknote.umd.cjs +6 -6
  4. package/dist/blocknote.umd.cjs.map +1 -1
  5. package/dist/style.css +1 -1
  6. package/dist/tsconfig.tsbuildinfo +1 -1
  7. package/dist/webpack-stats.json +1 -1
  8. package/package.json +3 -3
  9. package/src/api/blockManipulation/commands/moveBlocks/moveBlocks.test.ts +3 -3
  10. package/src/api/blockManipulation/commands/moveBlocks/moveBlocks.ts +1 -3
  11. package/src/api/blockManipulation/commands/splitBlock/splitBlock.test.ts +1 -1
  12. package/src/api/blockManipulation/selections/selection.ts +5 -5
  13. package/src/api/clipboard/__snapshots__/external/pasteEndOfParagraph.html +96 -0
  14. package/src/api/clipboard/__snapshots__/external/pasteEndOfParagraphText.html +96 -0
  15. package/src/api/clipboard/__snapshots__/external/pasteImage.html +111 -0
  16. package/src/api/clipboard/__snapshots__/external/pasteParagraphInCustomBlock.html +96 -0
  17. package/src/api/clipboard/__snapshots__/external/pasteTable.html +149 -0
  18. package/src/api/clipboard/__snapshots__/external/pasteTableInExistingTable.html +124 -0
  19. package/src/api/clipboard/__snapshots__/internal/paragraphInCustomBlock.html +1 -0
  20. package/src/api/clipboard/__snapshots__/internal/tableAllCells.html +1 -0
  21. package/src/api/clipboard/__snapshots__/internal/tableCell.html +1 -0
  22. package/src/api/clipboard/__snapshots__/internal/tableRow.html +1 -0
  23. package/src/api/clipboard/clipboardExternal.test.ts +161 -0
  24. package/src/api/clipboard/{clipboard.test.ts → clipboardInternal.test.ts} +66 -40
  25. package/src/api/clipboard/fromClipboard/handleFileInsertion.ts +1 -1
  26. package/src/api/clipboard/fromClipboard/handleVSCodePaste.ts +7 -14
  27. package/src/api/clipboard/fromClipboard/pasteExtension.ts +6 -6
  28. package/src/api/clipboard/testUtil.ts +27 -0
  29. package/src/api/clipboard/toClipboard/copyExtension.ts +8 -2
  30. package/src/api/exporters/html/__snapshots__/file/basic/internal.html +1 -1
  31. package/src/api/exporters/html/__snapshots__/file/nested/internal.html +1 -1
  32. package/src/api/exporters/html/__snapshots__/file/noCaption/internal.html +1 -1
  33. package/src/api/exporters/html/__snapshots__/file/noName/internal.html +1 -1
  34. package/src/api/exporters/html/__snapshots__/image/basic/internal.html +1 -1
  35. package/src/api/exporters/html/__snapshots__/image/nested/internal.html +1 -1
  36. package/src/api/exporters/html/__snapshots__/image/noCaption/internal.html +1 -1
  37. package/src/api/exporters/html/__snapshots__/image/noName/internal.html +1 -1
  38. package/src/api/exporters/html/__snapshots__/image/noPreview/internal.html +1 -1
  39. package/src/api/exporters/html/__snapshots__/simpleImage/basic/external.html +1 -1
  40. package/src/api/exporters/html/__snapshots__/simpleImage/basic/internal.html +1 -1
  41. package/src/api/exporters/html/__snapshots__/simpleImage/nested/external.html +1 -1
  42. package/src/api/exporters/html/__snapshots__/simpleImage/nested/internal.html +1 -1
  43. package/src/api/exporters/html/__snapshots__/simpleImage/noCaption/external.html +1 -1
  44. package/src/api/exporters/html/__snapshots__/simpleImage/noCaption/internal.html +1 -1
  45. package/src/api/exporters/html/__snapshots__/simpleImage/noName/external.html +1 -1
  46. package/src/api/exporters/html/__snapshots__/simpleImage/noName/internal.html +1 -1
  47. package/src/api/exporters/html/__snapshots__/simpleImage/noPreview/external.html +1 -1
  48. package/src/api/exporters/html/__snapshots__/simpleImage/noPreview/internal.html +1 -1
  49. package/src/api/exporters/html/util/serializeBlocksExternalHTML.ts +7 -1
  50. package/src/api/exporters/html/util/serializeBlocksInternalHTML.ts +3 -1
  51. package/src/api/exporters/markdown/__snapshots__/simpleImage/basic/markdown.md +1 -1
  52. package/src/api/exporters/markdown/__snapshots__/simpleImage/nested/markdown.md +2 -2
  53. package/src/api/exporters/markdown/__snapshots__/simpleImage/noCaption/markdown.md +1 -1
  54. package/src/api/exporters/markdown/__snapshots__/simpleImage/noName/markdown.md +1 -1
  55. package/src/api/nodeConversions/nodeToBlock.ts +4 -1
  56. package/src/api/parsers/markdown/__snapshots__/pasted/styled.json +2 -2
  57. package/src/api/parsers/markdown/parseMarkdown.test.ts +5 -7
  58. package/src/api/testUtil/partialBlockTestUtil.ts +4 -1
  59. package/src/blocks/AudioBlockContent/AudioBlockContent.ts +13 -14
  60. package/src/blocks/FileBlockContent/FileBlockContent.ts +5 -12
  61. package/src/blocks/FileBlockContent/helpers/parse/parseEmbedElement.ts +5 -0
  62. package/src/blocks/FileBlockContent/helpers/parse/parseFigureElement.ts +16 -0
  63. package/src/blocks/FileBlockContent/helpers/render/createAddFileButton.ts +63 -0
  64. package/src/blocks/FileBlockContent/helpers/render/createFileBlockWrapper.ts +80 -0
  65. package/src/blocks/FileBlockContent/helpers/render/createFileNameWithIcon.ts +24 -0
  66. package/src/blocks/FileBlockContent/helpers/render/createResizableFileBlockWrapper.ts +204 -0
  67. package/src/blocks/FileBlockContent/helpers/toExternalHTML/createFigureWithCaption.ts +13 -0
  68. package/src/blocks/FileBlockContent/helpers/toExternalHTML/createLinkWithCaption.ts +15 -0
  69. package/src/blocks/HeadingBlockContent/HeadingBlockContent.ts +3 -19
  70. package/src/blocks/ImageBlockContent/ImageBlockContent.ts +20 -28
  71. package/src/blocks/ListItemBlockContent/CheckListItemBlockContent/CheckListItemBlockContent.ts +3 -15
  72. package/src/blocks/ListItemBlockContent/NumberedListItemBlockContent/NumberedListIndexingPlugin.ts +11 -3
  73. package/src/blocks/ListItemBlockContent/NumberedListItemBlockContent/NumberedListItemBlockContent.ts +25 -5
  74. package/src/blocks/VideoBlockContent/VideoBlockContent.ts +20 -27
  75. package/src/editor/Block.css +38 -54
  76. package/src/editor/BlockNoteEditor.test.ts +21 -1
  77. package/src/editor/BlockNoteEditor.ts +14 -7
  78. package/src/editor/BlockNoteExtensions.ts +7 -8
  79. package/src/editor/editor.css +7 -6
  80. package/src/editor/transformPasted.ts +57 -4
  81. package/src/extensions/LinkToolbar/protocols.ts +13 -0
  82. package/src/extensions/Placeholder/PlaceholderPlugin.ts +6 -6
  83. package/src/extensions/SideMenu/SideMenuPlugin.ts +5 -1
  84. package/src/extensions/SideMenu/dragging.ts +3 -0
  85. package/src/extensions/SuggestionMenu/SuggestionPlugin.ts +3 -6
  86. package/src/extensions/TableHandles/TableHandlesPlugin.ts +15 -3
  87. package/src/index.ts +9 -2
  88. package/src/schema/blocks/createSpec.ts +1 -1
  89. package/src/schema/blocks/internal.ts +16 -6
  90. package/src/schema/inlineContent/createSpec.ts +2 -2
  91. package/src/schema/inlineContent/internal.ts +4 -1
  92. package/src/schema/propTypes.ts +41 -18
  93. package/types/src/api/blockManipulation/setupTestEnv.d.ts +8 -0
  94. package/types/src/api/clipboard/clipboardInternal.test.d.ts +1 -0
  95. package/types/src/api/clipboard/fromClipboard/handleVSCodePaste.d.ts +2 -3
  96. package/types/src/api/clipboard/fromClipboard/pasteExtension.d.ts +1 -3
  97. package/types/src/api/clipboard/testUtil.d.ts +509 -0
  98. package/types/src/api/testUtil/cases/customBlocks.d.ts +8 -0
  99. package/types/src/api/testUtil/cases/customInlineContent.d.ts +8 -0
  100. package/types/src/api/testUtil/cases/customStyles.d.ts +8 -0
  101. package/types/src/blocks/AudioBlockContent/AudioBlockContent.d.ts +2 -5
  102. package/types/src/blocks/FileBlockContent/FileBlockContent.d.ts +2 -5
  103. package/types/src/blocks/FileBlockContent/helpers/parse/parseEmbedElement.d.ts +3 -0
  104. package/types/src/blocks/FileBlockContent/helpers/parse/parseFigureElement.d.ts +4 -0
  105. package/types/src/blocks/FileBlockContent/helpers/render/createAddFileButton.d.ts +6 -0
  106. package/types/src/blocks/FileBlockContent/helpers/render/createFileBlockWrapper.d.ts +9 -0
  107. package/types/src/blocks/FileBlockContent/helpers/render/createFileNameWithIcon.d.ts +6 -0
  108. package/types/src/blocks/FileBlockContent/helpers/render/createResizableFileBlockWrapper.d.ts +9 -0
  109. package/types/src/blocks/FileBlockContent/helpers/toExternalHTML/createFigureWithCaption.d.ts +3 -0
  110. package/types/src/blocks/FileBlockContent/helpers/toExternalHTML/createLinkWithCaption.d.ts +3 -0
  111. package/types/src/blocks/ImageBlockContent/ImageBlockContent.d.ts +2 -5
  112. package/types/src/blocks/ListItemBlockContent/NumberedListItemBlockContent/NumberedListItemBlockContent.d.ts +12 -0
  113. package/types/src/blocks/VideoBlockContent/VideoBlockContent.d.ts +2 -5
  114. package/types/src/blocks/defaultBlocks.d.ts +16 -0
  115. package/types/src/editor/BlockNoteEditor.d.ts +6 -4
  116. package/types/src/editor/transformPasted.d.ts +8 -4
  117. package/types/src/extensions/LinkToolbar/protocols.d.ts +2 -0
  118. package/types/src/index.d.ts +9 -2
  119. package/types/src/schema/propTypes.d.ts +20 -2
  120. package/dist/src/api/blockManipulation/commands/insertBlocks/insertBlocks.js +0 -30
  121. package/dist/src/api/blockManipulation/commands/insertBlocks/insertBlocks.js.map +0 -1
  122. package/dist/src/api/blockManipulation/commands/insertBlocks/insertBlocks.test.js +0 -99
  123. package/dist/src/api/blockManipulation/commands/insertBlocks/insertBlocks.test.js.map +0 -1
  124. package/dist/src/api/blockManipulation/commands/mergeBlocks/mergeBlocks.js +0 -97
  125. package/dist/src/api/blockManipulation/commands/mergeBlocks/mergeBlocks.js.map +0 -1
  126. package/dist/src/api/blockManipulation/commands/mergeBlocks/mergeBlocks.test.js +0 -88
  127. package/dist/src/api/blockManipulation/commands/mergeBlocks/mergeBlocks.test.js.map +0 -1
  128. package/dist/src/api/blockManipulation/commands/moveBlocks/moveBlocks.js +0 -219
  129. package/dist/src/api/blockManipulation/commands/moveBlocks/moveBlocks.js.map +0 -1
  130. package/dist/src/api/blockManipulation/commands/moveBlocks/moveBlocks.test.js +0 -175
  131. package/dist/src/api/blockManipulation/commands/moveBlocks/moveBlocks.test.js.map +0 -1
  132. package/dist/src/api/blockManipulation/commands/nestBlock/nestBlock.js +0 -57
  133. package/dist/src/api/blockManipulation/commands/nestBlock/nestBlock.js.map +0 -1
  134. package/dist/src/api/blockManipulation/commands/removeBlocks/removeBlocks.js +0 -5
  135. package/dist/src/api/blockManipulation/commands/removeBlocks/removeBlocks.js.map +0 -1
  136. package/dist/src/api/blockManipulation/commands/removeBlocks/removeBlocks.test.js +0 -31
  137. package/dist/src/api/blockManipulation/commands/removeBlocks/removeBlocks.test.js.map +0 -1
  138. package/dist/src/api/blockManipulation/commands/replaceBlocks/replaceBlocks.js +0 -71
  139. package/dist/src/api/blockManipulation/commands/replaceBlocks/replaceBlocks.js.map +0 -1
  140. package/dist/src/api/blockManipulation/commands/replaceBlocks/replaceBlocks.test.js +0 -157
  141. package/dist/src/api/blockManipulation/commands/replaceBlocks/replaceBlocks.test.js.map +0 -1
  142. package/dist/src/api/blockManipulation/commands/splitBlock/splitBlock.js +0 -27
  143. package/dist/src/api/blockManipulation/commands/splitBlock/splitBlock.js.map +0 -1
  144. package/dist/src/api/blockManipulation/commands/splitBlock/splitBlock.test.js +0 -67
  145. package/dist/src/api/blockManipulation/commands/splitBlock/splitBlock.test.js.map +0 -1
  146. package/dist/src/api/blockManipulation/commands/updateBlock/updateBlock.js +0 -148
  147. package/dist/src/api/blockManipulation/commands/updateBlock/updateBlock.js.map +0 -1
  148. package/dist/src/api/blockManipulation/commands/updateBlock/updateBlock.test.js +0 -252
  149. package/dist/src/api/blockManipulation/commands/updateBlock/updateBlock.test.js.map +0 -1
  150. package/dist/src/api/blockManipulation/getBlock/getBlock.js +0 -56
  151. package/dist/src/api/blockManipulation/getBlock/getBlock.js.map +0 -1
  152. package/dist/src/api/blockManipulation/insertContentAt.js +0 -64
  153. package/dist/src/api/blockManipulation/insertContentAt.js.map +0 -1
  154. package/dist/src/api/blockManipulation/selections/selection.js +0 -149
  155. package/dist/src/api/blockManipulation/selections/selection.js.map +0 -1
  156. package/dist/src/api/blockManipulation/selections/selection.test.js +0 -39
  157. package/dist/src/api/blockManipulation/selections/selection.test.js.map +0 -1
  158. package/dist/src/api/blockManipulation/selections/textCursorPosition/textCursorPosition.js +0 -79
  159. package/dist/src/api/blockManipulation/selections/textCursorPosition/textCursorPosition.js.map +0 -1
  160. package/dist/src/api/blockManipulation/selections/textCursorPosition/textCursorPosition.test.js +0 -33
  161. package/dist/src/api/blockManipulation/selections/textCursorPosition/textCursorPosition.test.js.map +0 -1
  162. package/dist/src/api/blockManipulation/setupTestEnv.js +0 -172
  163. package/dist/src/api/blockManipulation/setupTestEnv.js.map +0 -1
  164. package/dist/src/api/clipboard/clipboard.test.js +0 -246
  165. package/dist/src/api/clipboard/clipboard.test.js.map +0 -1
  166. package/dist/src/api/clipboard/fromClipboard/acceptedMIMETypes.js +0 -8
  167. package/dist/src/api/clipboard/fromClipboard/acceptedMIMETypes.js.map +0 -1
  168. package/dist/src/api/clipboard/fromClipboard/fileDropExtension.js +0 -38
  169. package/dist/src/api/clipboard/fromClipboard/fileDropExtension.js.map +0 -1
  170. package/dist/src/api/clipboard/fromClipboard/handleFileInsertion.js +0 -111
  171. package/dist/src/api/clipboard/fromClipboard/handleFileInsertion.js.map +0 -1
  172. package/dist/src/api/clipboard/fromClipboard/handleVSCodePaste.js +0 -26
  173. package/dist/src/api/clipboard/fromClipboard/handleVSCodePaste.js.map +0 -1
  174. package/dist/src/api/clipboard/fromClipboard/pasteExtension.js +0 -57
  175. package/dist/src/api/clipboard/fromClipboard/pasteExtension.js.map +0 -1
  176. package/dist/src/api/clipboard/toClipboard/copyExtension.js +0 -132
  177. package/dist/src/api/clipboard/toClipboard/copyExtension.js.map +0 -1
  178. package/dist/src/api/exporters/html/externalHTMLExporter.js +0 -35
  179. package/dist/src/api/exporters/html/externalHTMLExporter.js.map +0 -1
  180. package/dist/src/api/exporters/html/htmlConversion.test.js +0 -72
  181. package/dist/src/api/exporters/html/htmlConversion.test.js.map +0 -1
  182. package/dist/src/api/exporters/html/internalHTMLSerializer.js +0 -21
  183. package/dist/src/api/exporters/html/internalHTMLSerializer.js.map +0 -1
  184. package/dist/src/api/exporters/html/util/serializeBlocksExternalHTML.js +0 -141
  185. package/dist/src/api/exporters/html/util/serializeBlocksExternalHTML.js.map +0 -1
  186. package/dist/src/api/exporters/html/util/serializeBlocksInternalHTML.js +0 -96
  187. package/dist/src/api/exporters/html/util/serializeBlocksInternalHTML.js.map +0 -1
  188. package/dist/src/api/exporters/markdown/markdownExporter.js +0 -31
  189. package/dist/src/api/exporters/markdown/markdownExporter.js.map +0 -1
  190. package/dist/src/api/exporters/markdown/markdownExporter.test.js +0 -57
  191. package/dist/src/api/exporters/markdown/markdownExporter.test.js.map +0 -1
  192. package/dist/src/api/exporters/markdown/removeUnderlinesRehypePlugin.js +0 -33
  193. package/dist/src/api/exporters/markdown/removeUnderlinesRehypePlugin.js.map +0 -1
  194. package/dist/src/api/exporters/markdown/util/addSpacesToCheckboxesRehypePlugin.js +0 -37
  195. package/dist/src/api/exporters/markdown/util/addSpacesToCheckboxesRehypePlugin.js.map +0 -1
  196. package/dist/src/api/getBlockInfoFromPos.js +0 -165
  197. package/dist/src/api/getBlockInfoFromPos.js.map +0 -1
  198. package/dist/src/api/nodeConversions/blockToNode.js +0 -197
  199. package/dist/src/api/nodeConversions/blockToNode.js.map +0 -1
  200. package/dist/src/api/nodeConversions/fragmentToBlocks.js +0 -50
  201. package/dist/src/api/nodeConversions/fragmentToBlocks.js.map +0 -1
  202. package/dist/src/api/nodeConversions/nodeConversions.test.js +0 -54
  203. package/dist/src/api/nodeConversions/nodeConversions.test.js.map +0 -1
  204. package/dist/src/api/nodeConversions/nodeToBlock.js +0 -316
  205. package/dist/src/api/nodeConversions/nodeToBlock.js.map +0 -1
  206. package/dist/src/api/nodeUtil.js +0 -28
  207. package/dist/src/api/nodeUtil.js.map +0 -1
  208. package/dist/src/api/parsers/html/parseHTML.js +0 -19
  209. package/dist/src/api/parsers/html/parseHTML.js.map +0 -1
  210. package/dist/src/api/parsers/html/parseHTML.test.js +0 -470
  211. package/dist/src/api/parsers/html/parseHTML.test.js.map +0 -1
  212. package/dist/src/api/parsers/html/util/nestedLists.js +0 -106
  213. package/dist/src/api/parsers/html/util/nestedLists.js.map +0 -1
  214. package/dist/src/api/parsers/html/util/nestedLists.test.js +0 -166
  215. package/dist/src/api/parsers/html/util/nestedLists.test.js.map +0 -1
  216. package/dist/src/api/parsers/markdown/parseMarkdown.js +0 -52
  217. package/dist/src/api/parsers/markdown/parseMarkdown.js.map +0 -1
  218. package/dist/src/api/parsers/markdown/parseMarkdown.test.js +0 -109
  219. package/dist/src/api/parsers/markdown/parseMarkdown.test.js.map +0 -1
  220. package/dist/src/api/testUtil/cases/customBlocks.js +0 -313
  221. package/dist/src/api/testUtil/cases/customBlocks.js.map +0 -1
  222. package/dist/src/api/testUtil/cases/customInlineContent.js +0 -91
  223. package/dist/src/api/testUtil/cases/customInlineContent.js.map +0 -1
  224. package/dist/src/api/testUtil/cases/customStyles.js +0 -83
  225. package/dist/src/api/testUtil/cases/customStyles.js.map +0 -1
  226. package/dist/src/api/testUtil/cases/defaultSchema.js +0 -673
  227. package/dist/src/api/testUtil/cases/defaultSchema.js.map +0 -1
  228. package/dist/src/api/testUtil/index.js +0 -2
  229. package/dist/src/api/testUtil/index.js.map +0 -1
  230. package/dist/src/api/testUtil/partialBlockTestUtil.js +0 -114
  231. package/dist/src/api/testUtil/partialBlockTestUtil.js.map +0 -1
  232. package/dist/src/api/testUtil/paste.js +0 -29
  233. package/dist/src/api/testUtil/paste.js.map +0 -1
  234. package/dist/src/blocks/AudioBlockContent/AudioBlockContent.js +0 -97
  235. package/dist/src/blocks/AudioBlockContent/AudioBlockContent.js.map +0 -1
  236. package/dist/src/blocks/AudioBlockContent/audioBlockHelpers.js +0 -5
  237. package/dist/src/blocks/AudioBlockContent/audioBlockHelpers.js.map +0 -1
  238. package/dist/src/blocks/CodeBlockContent/CodeBlockContent.js +0 -281
  239. package/dist/src/blocks/CodeBlockContent/CodeBlockContent.js.map +0 -1
  240. package/dist/src/blocks/CodeBlockContent/defaultSupportedLanguages.js +0 -110
  241. package/dist/src/blocks/CodeBlockContent/defaultSupportedLanguages.js.map +0 -1
  242. package/dist/src/blocks/FileBlockContent/FileBlockContent.js +0 -70
  243. package/dist/src/blocks/FileBlockContent/FileBlockContent.js.map +0 -1
  244. package/dist/src/blocks/FileBlockContent/fileBlockHelpers.js +0 -317
  245. package/dist/src/blocks/FileBlockContent/fileBlockHelpers.js.map +0 -1
  246. package/dist/src/blocks/FileBlockContent/uploadToTmpFilesDotOrg_DEV_ONLY.js +0 -15
  247. package/dist/src/blocks/FileBlockContent/uploadToTmpFilesDotOrg_DEV_ONLY.js.map +0 -1
  248. package/dist/src/blocks/HeadingBlockContent/HeadingBlockContent.js +0 -145
  249. package/dist/src/blocks/HeadingBlockContent/HeadingBlockContent.js.map +0 -1
  250. package/dist/src/blocks/ImageBlockContent/ImageBlockContent.js +0 -106
  251. package/dist/src/blocks/ImageBlockContent/ImageBlockContent.js.map +0 -1
  252. package/dist/src/blocks/ImageBlockContent/imageBlockHelpers.js +0 -6
  253. package/dist/src/blocks/ImageBlockContent/imageBlockHelpers.js.map +0 -1
  254. package/dist/src/blocks/ListItemBlockContent/BulletListItemBlockContent/BulletListItemBlockContent.js +0 -113
  255. package/dist/src/blocks/ListItemBlockContent/BulletListItemBlockContent/BulletListItemBlockContent.js.map +0 -1
  256. package/dist/src/blocks/ListItemBlockContent/CheckListItemBlockContent/CheckListItemBlockContent.js +0 -224
  257. package/dist/src/blocks/ListItemBlockContent/CheckListItemBlockContent/CheckListItemBlockContent.js.map +0 -1
  258. package/dist/src/blocks/ListItemBlockContent/ListItemKeyboardShortcuts.js +0 -45
  259. package/dist/src/blocks/ListItemBlockContent/ListItemKeyboardShortcuts.js.map +0 -1
  260. package/dist/src/blocks/ListItemBlockContent/NumberedListItemBlockContent/NumberedListIndexingPlugin.js +0 -58
  261. package/dist/src/blocks/ListItemBlockContent/NumberedListItemBlockContent/NumberedListIndexingPlugin.js.map +0 -1
  262. package/dist/src/blocks/ListItemBlockContent/NumberedListItemBlockContent/NumberedListItemBlockContent.js +0 -130
  263. package/dist/src/blocks/ListItemBlockContent/NumberedListItemBlockContent/NumberedListItemBlockContent.js.map +0 -1
  264. package/dist/src/blocks/ParagraphBlockContent/ParagraphBlockContent.js +0 -52
  265. package/dist/src/blocks/ParagraphBlockContent/ParagraphBlockContent.js.map +0 -1
  266. package/dist/src/blocks/TableBlockContent/TableBlockContent.js +0 -129
  267. package/dist/src/blocks/TableBlockContent/TableBlockContent.js.map +0 -1
  268. package/dist/src/blocks/TableBlockContent/TableExtension.js +0 -64
  269. package/dist/src/blocks/TableBlockContent/TableExtension.js.map +0 -1
  270. package/dist/src/blocks/VideoBlockContent/VideoBlockContent.js +0 -103
  271. package/dist/src/blocks/VideoBlockContent/VideoBlockContent.js.map +0 -1
  272. package/dist/src/blocks/VideoBlockContent/videoBlockHelpers.js +0 -6
  273. package/dist/src/blocks/VideoBlockContent/videoBlockHelpers.js.map +0 -1
  274. package/dist/src/blocks/defaultBlockHelpers.js +0 -50
  275. package/dist/src/blocks/defaultBlockHelpers.js.map +0 -1
  276. package/dist/src/blocks/defaultBlockTypeGuards.js +0 -40
  277. package/dist/src/blocks/defaultBlockTypeGuards.js.map +0 -1
  278. package/dist/src/blocks/defaultBlocks.js +0 -50
  279. package/dist/src/blocks/defaultBlocks.js.map +0 -1
  280. package/dist/src/blocks/defaultProps.js +0 -19
  281. package/dist/src/blocks/defaultProps.js.map +0 -1
  282. package/dist/src/editor/BlockNoteEditor.js +0 -748
  283. package/dist/src/editor/BlockNoteEditor.js.map +0 -1
  284. package/dist/src/editor/BlockNoteEditor.test.js +0 -65
  285. package/dist/src/editor/BlockNoteEditor.test.js.map +0 -1
  286. package/dist/src/editor/BlockNoteExtensions.js +0 -196
  287. package/dist/src/editor/BlockNoteExtensions.js.map +0 -1
  288. package/dist/src/editor/BlockNoteSchema.js +0 -38
  289. package/dist/src/editor/BlockNoteSchema.js.map +0 -1
  290. package/dist/src/editor/BlockNoteTipTapEditor.js +0 -169
  291. package/dist/src/editor/BlockNoteTipTapEditor.js.map +0 -1
  292. package/dist/src/editor/cursorPositionTypes.js +0 -2
  293. package/dist/src/editor/cursorPositionTypes.js.map +0 -1
  294. package/dist/src/editor/defaultColors.js +0 -77
  295. package/dist/src/editor/defaultColors.js.map +0 -1
  296. package/dist/src/editor/selectionTypes.js +0 -2
  297. package/dist/src/editor/selectionTypes.js.map +0 -1
  298. package/dist/src/editor/transformPasted.js +0 -79
  299. package/dist/src/editor/transformPasted.js.map +0 -1
  300. package/dist/src/exporter/Exporter.js +0 -36
  301. package/dist/src/exporter/Exporter.js.map +0 -1
  302. package/dist/src/exporter/index.js +0 -3
  303. package/dist/src/exporter/index.js.map +0 -1
  304. package/dist/src/exporter/mapping.js +0 -12
  305. package/dist/src/exporter/mapping.js.map +0 -1
  306. package/dist/src/extensions/BackgroundColor/BackgroundColorExtension.js +0 -30
  307. package/dist/src/extensions/BackgroundColor/BackgroundColorExtension.js.map +0 -1
  308. package/dist/src/extensions/BackgroundColor/BackgroundColorMark.js +0 -39
  309. package/dist/src/extensions/BackgroundColor/BackgroundColorMark.js.map +0 -1
  310. package/dist/src/extensions/FilePanel/FilePanelPlugin.js +0 -131
  311. package/dist/src/extensions/FilePanel/FilePanelPlugin.js.map +0 -1
  312. package/dist/src/extensions/FormattingToolbar/FormattingToolbarPlugin.js +0 -197
  313. package/dist/src/extensions/FormattingToolbar/FormattingToolbarPlugin.js.map +0 -1
  314. package/dist/src/extensions/KeyboardShortcuts/KeyboardShortcutsExtension.js +0 -341
  315. package/dist/src/extensions/KeyboardShortcuts/KeyboardShortcutsExtension.js.map +0 -1
  316. package/dist/src/extensions/LinkToolbar/LinkToolbarPlugin.js +0 -251
  317. package/dist/src/extensions/LinkToolbar/LinkToolbarPlugin.js.map +0 -1
  318. package/dist/src/extensions/NodeSelectionKeyboard/NodeSelectionKeyboardPlugin.js +0 -54
  319. package/dist/src/extensions/NodeSelectionKeyboard/NodeSelectionKeyboardPlugin.js.map +0 -1
  320. package/dist/src/extensions/Placeholder/PlaceholderPlugin.js +0 -90
  321. package/dist/src/extensions/Placeholder/PlaceholderPlugin.js.map +0 -1
  322. package/dist/src/extensions/PreviousBlockType/PreviousBlockTypePlugin.js +0 -187
  323. package/dist/src/extensions/PreviousBlockType/PreviousBlockTypePlugin.js.map +0 -1
  324. package/dist/src/extensions/SideMenu/MultipleNodeSelection.js +0 -68
  325. package/dist/src/extensions/SideMenu/MultipleNodeSelection.js.map +0 -1
  326. package/dist/src/extensions/SideMenu/SideMenuPlugin.js +0 -343
  327. package/dist/src/extensions/SideMenu/SideMenuPlugin.js.map +0 -1
  328. package/dist/src/extensions/SideMenu/dragging.js +0 -132
  329. package/dist/src/extensions/SideMenu/dragging.js.map +0 -1
  330. package/dist/src/extensions/SuggestionMenu/DefaultGridSuggestionItem.js +0 -2
  331. package/dist/src/extensions/SuggestionMenu/DefaultGridSuggestionItem.js.map +0 -1
  332. package/dist/src/extensions/SuggestionMenu/DefaultSuggestionItem.js +0 -2
  333. package/dist/src/extensions/SuggestionMenu/DefaultSuggestionItem.js.map +0 -1
  334. package/dist/src/extensions/SuggestionMenu/SuggestionPlugin.js +0 -245
  335. package/dist/src/extensions/SuggestionMenu/SuggestionPlugin.js.map +0 -1
  336. package/dist/src/extensions/SuggestionMenu/getDefaultEmojiPickerItems.js +0 -26
  337. package/dist/src/extensions/SuggestionMenu/getDefaultEmojiPickerItems.js.map +0 -1
  338. package/dist/src/extensions/SuggestionMenu/getDefaultSlashMenuItems.js +0 -241
  339. package/dist/src/extensions/SuggestionMenu/getDefaultSlashMenuItems.js.map +0 -1
  340. package/dist/src/extensions/TableHandles/TableHandlesPlugin.js +0 -570
  341. package/dist/src/extensions/TableHandles/TableHandlesPlugin.js.map +0 -1
  342. package/dist/src/extensions/TextAlignment/TextAlignmentExtension.js +0 -36
  343. package/dist/src/extensions/TextAlignment/TextAlignmentExtension.js.map +0 -1
  344. package/dist/src/extensions/TextColor/TextColorExtension.js +0 -29
  345. package/dist/src/extensions/TextColor/TextColorExtension.js.map +0 -1
  346. package/dist/src/extensions/TextColor/TextColorMark.js +0 -37
  347. package/dist/src/extensions/TextColor/TextColorMark.js.map +0 -1
  348. package/dist/src/extensions/TrailingNode/TrailingNodeExtension.js +0 -58
  349. package/dist/src/extensions/TrailingNode/TrailingNodeExtension.js.map +0 -1
  350. package/dist/src/extensions/UniqueID/UniqueID.js +0 -283
  351. package/dist/src/extensions/UniqueID/UniqueID.js.map +0 -1
  352. package/dist/src/extensions/getDraggableBlockFromElement.js +0 -13
  353. package/dist/src/extensions/getDraggableBlockFromElement.js.map +0 -1
  354. package/dist/src/extensions-shared/UiElementPosition.js +0 -2
  355. package/dist/src/extensions-shared/UiElementPosition.js.map +0 -1
  356. package/dist/src/i18n/dictionary.js +0 -4
  357. package/dist/src/i18n/dictionary.js.map +0 -1
  358. package/dist/src/i18n/locales/ar.js +0 -298
  359. package/dist/src/i18n/locales/ar.js.map +0 -1
  360. package/dist/src/i18n/locales/de.js +0 -313
  361. package/dist/src/i18n/locales/de.js.map +0 -1
  362. package/dist/src/i18n/locales/en.js +0 -314
  363. package/dist/src/i18n/locales/en.js.map +0 -1
  364. package/dist/src/i18n/locales/es.js +0 -312
  365. package/dist/src/i18n/locales/es.js.map +0 -1
  366. package/dist/src/i18n/locales/fr.js +0 -313
  367. package/dist/src/i18n/locales/fr.js.map +0 -1
  368. package/dist/src/i18n/locales/hr.js +0 -308
  369. package/dist/src/i18n/locales/hr.js.map +0 -1
  370. package/dist/src/i18n/locales/index.js +0 -16
  371. package/dist/src/i18n/locales/index.js.map +0 -1
  372. package/dist/src/i18n/locales/is.js +0 -305
  373. package/dist/src/i18n/locales/is.js.map +0 -1
  374. package/dist/src/i18n/locales/ja.js +0 -333
  375. package/dist/src/i18n/locales/ja.js.map +0 -1
  376. package/dist/src/i18n/locales/ko.js +0 -326
  377. package/dist/src/i18n/locales/ko.js.map +0 -1
  378. package/dist/src/i18n/locales/nl.js +0 -313
  379. package/dist/src/i18n/locales/nl.js.map +0 -1
  380. package/dist/src/i18n/locales/pl.js +0 -297
  381. package/dist/src/i18n/locales/pl.js.map +0 -1
  382. package/dist/src/i18n/locales/pt.js +0 -305
  383. package/dist/src/i18n/locales/pt.js.map +0 -1
  384. package/dist/src/i18n/locales/ru.js +0 -340
  385. package/dist/src/i18n/locales/ru.js.map +0 -1
  386. package/dist/src/i18n/locales/vi.js +0 -312
  387. package/dist/src/i18n/locales/vi.js.map +0 -1
  388. package/dist/src/i18n/locales/zh.js +0 -346
  389. package/dist/src/i18n/locales/zh.js.map +0 -1
  390. package/dist/src/index.js +0 -56
  391. package/dist/src/index.js.map +0 -1
  392. package/dist/src/pm-nodes/BlockContainer.js +0 -72
  393. package/dist/src/pm-nodes/BlockContainer.js.map +0 -1
  394. package/dist/src/pm-nodes/BlockGroup.js +0 -43
  395. package/dist/src/pm-nodes/BlockGroup.js.map +0 -1
  396. package/dist/src/pm-nodes/Doc.js +0 -7
  397. package/dist/src/pm-nodes/Doc.js.map +0 -1
  398. package/dist/src/pm-nodes/index.js +0 -4
  399. package/dist/src/pm-nodes/index.js.map +0 -1
  400. package/dist/src/schema/blocks/createSpec.js +0 -126
  401. package/dist/src/schema/blocks/createSpec.js.map +0 -1
  402. package/dist/src/schema/blocks/internal.js +0 -147
  403. package/dist/src/schema/blocks/internal.js.map +0 -1
  404. package/dist/src/schema/blocks/types.js +0 -2
  405. package/dist/src/schema/blocks/types.js.map +0 -1
  406. package/dist/src/schema/index.js +0 -11
  407. package/dist/src/schema/index.js.map +0 -1
  408. package/dist/src/schema/inlineContent/createSpec.js +0 -64
  409. package/dist/src/schema/inlineContent/createSpec.js.map +0 -1
  410. package/dist/src/schema/inlineContent/internal.js +0 -52
  411. package/dist/src/schema/inlineContent/internal.js.map +0 -1
  412. package/dist/src/schema/inlineContent/types.js +0 -10
  413. package/dist/src/schema/inlineContent/types.js.map +0 -1
  414. package/dist/src/schema/propTypes.js +0 -2
  415. package/dist/src/schema/propTypes.js.map +0 -1
  416. package/dist/src/schema/styles/createSpec.js +0 -48
  417. package/dist/src/schema/styles/createSpec.js.map +0 -1
  418. package/dist/src/schema/styles/internal.js +0 -53
  419. package/dist/src/schema/styles/internal.js.map +0 -1
  420. package/dist/src/schema/styles/types.js +0 -2
  421. package/dist/src/schema/styles/types.js.map +0 -1
  422. package/dist/src/util/EventEmitter.js +0 -33
  423. package/dist/src/util/EventEmitter.js.map +0 -1
  424. package/dist/src/util/browser.js +0 -17
  425. package/dist/src/util/browser.js.map +0 -1
  426. package/dist/src/util/combineByGroup.js +0 -20
  427. package/dist/src/util/combineByGroup.js.map +0 -1
  428. package/dist/src/util/esmDependencies.js +0 -35
  429. package/dist/src/util/esmDependencies.js.map +0 -1
  430. package/dist/src/util/string.js +0 -14
  431. package/dist/src/util/string.js.map +0 -1
  432. package/dist/src/util/typescript.js +0 -12
  433. package/dist/src/util/typescript.js.map +0 -1
  434. package/src/api/clipboard/__snapshots__/tableAllCells.html +0 -1
  435. package/src/api/clipboard/__snapshots__/tableCell.html +0 -1
  436. package/src/api/clipboard/__snapshots__/tableRow.html +0 -1
  437. package/src/blocks/FileBlockContent/fileBlockHelpers.ts +0 -456
  438. package/types/src/blocks/FileBlockContent/fileBlockHelpers.d.ts +0 -41
  439. /package/src/api/clipboard/__snapshots__/{childToParent.html → internal/childToParent.html} +0 -0
  440. /package/src/api/clipboard/__snapshots__/{childrenToNextParent.html → internal/childrenToNextParent.html} +0 -0
  441. /package/src/api/clipboard/__snapshots__/{childrenToNextParentsChildren.html → internal/childrenToNextParentsChildren.html} +0 -0
  442. /package/src/api/clipboard/__snapshots__/{image.html → internal/image.html} +0 -0
  443. /package/src/api/clipboard/__snapshots__/{multipleChildren.html → internal/multipleChildren.html} +0 -0
  444. /package/src/api/clipboard/__snapshots__/{multipleStyledText.html → internal/multipleStyledText.html} +0 -0
  445. /package/src/api/clipboard/__snapshots__/{nestedImage.html → internal/nestedImage.html} +0 -0
  446. /package/src/api/clipboard/__snapshots__/{partialChildToParent.html → internal/partialChildToParent.html} +0 -0
  447. /package/src/api/clipboard/__snapshots__/{styledText.html → internal/styledText.html} +0 -0
  448. /package/src/api/clipboard/__snapshots__/{tableCellText.html → internal/tableCellText.html} +0 -0
  449. /package/src/api/clipboard/__snapshots__/{unstyledText.html → internal/unstyledText.html} +0 -0
  450. /package/src/blocks/AudioBlockContent/{audioBlockHelpers.ts → parseAudioElement.ts} +0 -0
  451. /package/src/blocks/ImageBlockContent/{imageBlockHelpers.ts → parseImageElement.ts} +0 -0
  452. /package/src/blocks/VideoBlockContent/{videoBlockHelpers.ts → parseVideoElement.ts} +0 -0
  453. /package/types/src/api/clipboard/{clipboard.test.d.ts → clipboardExternal.test.d.ts} +0 -0
  454. /package/types/src/blocks/AudioBlockContent/{audioBlockHelpers.d.ts → parseAudioElement.d.ts} +0 -0
  455. /package/types/src/blocks/ImageBlockContent/{imageBlockHelpers.d.ts → parseImageElement.d.ts} +0 -0
  456. /package/types/src/blocks/VideoBlockContent/{videoBlockHelpers.d.ts → parseVideoElement.d.ts} +0 -0
@@ -0,0 +1,149 @@
1
+ [
2
+ {
3
+ "children": [],
4
+ "content": [
5
+ {
6
+ "styles": {},
7
+ "text": "Paragraph",
8
+ "type": "text",
9
+ },
10
+ ],
11
+ "id": "0",
12
+ "props": {
13
+ "backgroundColor": "default",
14
+ "textAlignment": "left",
15
+ "textColor": "default",
16
+ },
17
+ "type": "paragraph",
18
+ },
19
+ {
20
+ "children": [],
21
+ "content": {
22
+ "columnWidths": [
23
+ undefined,
24
+ undefined,
25
+ ],
26
+ "rows": [
27
+ {
28
+ "cells": [
29
+ [
30
+ {
31
+ "styles": {},
32
+ "text": "Cell 1",
33
+ "type": "text",
34
+ },
35
+ ],
36
+ [
37
+ {
38
+ "styles": {},
39
+ "text": "Cell 2",
40
+ "type": "text",
41
+ },
42
+ ],
43
+ ],
44
+ },
45
+ {
46
+ "cells": [
47
+ [
48
+ {
49
+ "styles": {},
50
+ "text": "Cell 3",
51
+ "type": "text",
52
+ },
53
+ ],
54
+ [
55
+ {
56
+ "styles": {},
57
+ "text": "Cell 4",
58
+ "type": "text",
59
+ },
60
+ ],
61
+ ],
62
+ },
63
+ ],
64
+ "type": "tableContent",
65
+ },
66
+ "id": "4",
67
+ "props": {
68
+ "textColor": "default",
69
+ },
70
+ "type": "table",
71
+ },
72
+ {
73
+ "children": [],
74
+ "content": {
75
+ "columnWidths": [
76
+ undefined,
77
+ undefined,
78
+ ],
79
+ "rows": [
80
+ {
81
+ "cells": [
82
+ [
83
+ {
84
+ "styles": {},
85
+ "text": "Table Cell",
86
+ "type": "text",
87
+ },
88
+ ],
89
+ [
90
+ {
91
+ "styles": {},
92
+ "text": "Table Cell",
93
+ "type": "text",
94
+ },
95
+ ],
96
+ ],
97
+ },
98
+ {
99
+ "cells": [
100
+ [
101
+ {
102
+ "styles": {},
103
+ "text": "Table Cell",
104
+ "type": "text",
105
+ },
106
+ ],
107
+ [
108
+ {
109
+ "styles": {},
110
+ "text": "Table Cell",
111
+ "type": "text",
112
+ },
113
+ ],
114
+ ],
115
+ },
116
+ ],
117
+ "type": "tableContent",
118
+ },
119
+ "id": "1",
120
+ "props": {
121
+ "textColor": "default",
122
+ },
123
+ "type": "table",
124
+ },
125
+ {
126
+ "children": [],
127
+ "content": [
128
+ {
129
+ "styles": {},
130
+ "text": "Custom Paragraph",
131
+ "type": "text",
132
+ },
133
+ ],
134
+ "id": "2",
135
+ "props": {},
136
+ "type": "customParagraph",
137
+ },
138
+ {
139
+ "children": [],
140
+ "content": [],
141
+ "id": "3",
142
+ "props": {
143
+ "backgroundColor": "default",
144
+ "textAlignment": "left",
145
+ "textColor": "default",
146
+ },
147
+ "type": "paragraph",
148
+ },
149
+ ]
@@ -0,0 +1,124 @@
1
+ [
2
+ {
3
+ "children": [],
4
+ "content": [
5
+ {
6
+ "styles": {},
7
+ "text": "Paragraph",
8
+ "type": "text",
9
+ },
10
+ ],
11
+ "id": "0",
12
+ "props": {
13
+ "backgroundColor": "default",
14
+ "textAlignment": "left",
15
+ "textColor": "default",
16
+ },
17
+ "type": "paragraph",
18
+ },
19
+ {
20
+ "children": [],
21
+ "content": {
22
+ "columnWidths": [
23
+ undefined,
24
+ undefined,
25
+ undefined,
26
+ ],
27
+ "rows": [
28
+ {
29
+ "cells": [
30
+ [
31
+ {
32
+ "styles": {},
33
+ "text": "Table Cell",
34
+ "type": "text",
35
+ },
36
+ ],
37
+ [
38
+ {
39
+ "styles": {},
40
+ "text": "Table Cell",
41
+ "type": "text",
42
+ },
43
+ ],
44
+ [],
45
+ ],
46
+ },
47
+ {
48
+ "cells": [
49
+ [
50
+ {
51
+ "styles": {},
52
+ "text": "Table Cell",
53
+ "type": "text",
54
+ },
55
+ ],
56
+ [
57
+ {
58
+ "styles": {},
59
+ "text": "Cell 1",
60
+ "type": "text",
61
+ },
62
+ ],
63
+ [
64
+ {
65
+ "styles": {},
66
+ "text": "Cell 2",
67
+ "type": "text",
68
+ },
69
+ ],
70
+ ],
71
+ },
72
+ {
73
+ "cells": [
74
+ [],
75
+ [
76
+ {
77
+ "styles": {},
78
+ "text": "Cell 3",
79
+ "type": "text",
80
+ },
81
+ ],
82
+ [
83
+ {
84
+ "styles": {},
85
+ "text": "Cell 4",
86
+ "type": "text",
87
+ },
88
+ ],
89
+ ],
90
+ },
91
+ ],
92
+ "type": "tableContent",
93
+ },
94
+ "id": "1",
95
+ "props": {
96
+ "textColor": "default",
97
+ },
98
+ "type": "table",
99
+ },
100
+ {
101
+ "children": [],
102
+ "content": [
103
+ {
104
+ "styles": {},
105
+ "text": "Custom Paragraph",
106
+ "type": "text",
107
+ },
108
+ ],
109
+ "id": "2",
110
+ "props": {},
111
+ "type": "customParagraph",
112
+ },
113
+ {
114
+ "children": [],
115
+ "content": [],
116
+ "id": "3",
117
+ "props": {
118
+ "backgroundColor": "default",
119
+ "textAlignment": "left",
120
+ "textColor": "default",
121
+ },
122
+ "type": "paragraph",
123
+ },
124
+ ]
@@ -0,0 +1 @@
1
+ <table><tr><td colspan="1" rowspan="1"><p>Table Cell</p></td><td colspan="1" rowspan="1"><p>Table Cell</p></td></tr><tr><td colspan="1" rowspan="1"><p>Table Cell</p></td><td colspan="1" rowspan="1"><p>Table Cell</p></td></tr></table>
@@ -0,0 +1 @@
1
+ <table><tr><td colspan="1" rowspan="1"><p>Table Cell</p></td></tr></table>
@@ -0,0 +1 @@
1
+ <table><tr><td colspan="1" rowspan="1"><p>Table Cell</p></td><td colspan="1" rowspan="1"><p>Table Cell</p></td></tr></table>
@@ -0,0 +1,161 @@
1
+ import { Node } from "prosemirror-model";
2
+ import { Selection, TextSelection } from "prosemirror-state";
3
+ import { afterAll, beforeAll, beforeEach, describe, expect, it } from "vitest";
4
+
5
+ import { PartialBlock } from "../../blocks/defaultBlocks.js";
6
+ import { BlockNoteEditor } from "../../editor/BlockNoteEditor.js";
7
+ import { initializeESMDependencies } from "../../util/esmDependencies.js";
8
+ import { doPaste } from "../testUtil/paste.js";
9
+ import { schema } from "./testUtil.js";
10
+
11
+ type SelectionTestCase = {
12
+ testName: string;
13
+ createSelection: (doc: Node) => Selection;
14
+ } & (
15
+ | {
16
+ html: string;
17
+ }
18
+ | {
19
+ plainText: string;
20
+ }
21
+ );
22
+
23
+ // These tests are meant to test the pasting of external HTML in the editor.
24
+ // Each test case has an HTML string to be pasted, and a selection in the editor
25
+ // to paste at.
26
+ describe("Test external clipboard HTML", () => {
27
+ const initialContent: PartialBlock<typeof schema.blockSchema>[] = [
28
+ {
29
+ type: "paragraph",
30
+ content: "Paragraph",
31
+ },
32
+ {
33
+ type: "table",
34
+ content: {
35
+ type: "tableContent",
36
+ rows: [
37
+ {
38
+ cells: ["Table Cell", "Table Cell"],
39
+ },
40
+ {
41
+ cells: ["Table Cell", "Table Cell"],
42
+ },
43
+ ],
44
+ },
45
+ },
46
+ {
47
+ type: "customParagraph",
48
+ content: "Custom Paragraph",
49
+ },
50
+ {
51
+ type: "paragraph",
52
+ },
53
+ ];
54
+
55
+ let editor: BlockNoteEditor<typeof schema.blockSchema>;
56
+ const div = document.createElement("div");
57
+
58
+ beforeEach(() => {
59
+ editor.replaceBlocks(editor.document, initialContent);
60
+ });
61
+
62
+ beforeAll(async () => {
63
+ (window as any).__TEST_OPTIONS = (window as any).__TEST_OPTIONS || {};
64
+
65
+ editor = BlockNoteEditor.create({ schema });
66
+ editor.mount(div);
67
+
68
+ await initializeESMDependencies();
69
+ });
70
+
71
+ afterAll(() => {
72
+ editor.mount(undefined);
73
+ editor._tiptapEditor.destroy();
74
+ editor = undefined as any;
75
+
76
+ delete (window as Window & { __TEST_OPTIONS?: any }).__TEST_OPTIONS;
77
+ });
78
+
79
+ // Sets the editor selection to the given start and end positions, then
80
+ // pastes the HTML and compares it the document after to a snapshot.
81
+ async function testPasteExternalHTML(testCase: SelectionTestCase) {
82
+ if (!editor.prosemirrorView) {
83
+ throw new Error("Editor view not initialized.");
84
+ }
85
+
86
+ editor.dispatch(
87
+ editor._tiptapEditor.state.tr.setSelection(
88
+ testCase.createSelection(editor.prosemirrorView.state.doc)
89
+ )
90
+ );
91
+
92
+ doPaste(
93
+ editor.prosemirrorView,
94
+ "plainText" in testCase ? testCase.plainText : "",
95
+ "html" in testCase ? testCase.html : "",
96
+ "plainText" in testCase,
97
+ new ClipboardEvent("paste")
98
+ );
99
+
100
+ expect(editor.document).toMatchFileSnapshot(
101
+ `./__snapshots__/external/${testCase.testName}.html`
102
+ );
103
+ }
104
+
105
+ const testCases: SelectionTestCase[] = [
106
+ {
107
+ testName: "pasteEndOfParagraph",
108
+ createSelection: (doc) => TextSelection.create(doc, 12),
109
+ html: `<p>Paragraph</p>`,
110
+ },
111
+ {
112
+ testName: "pasteEndOfParagraphText",
113
+ createSelection: (doc) => TextSelection.create(doc, 12),
114
+ plainText: `Paragraph`,
115
+ },
116
+ {
117
+ testName: "pasteImage",
118
+ createSelection: (doc) => TextSelection.create(doc, 12),
119
+ html: `<img src="exampleURL">`,
120
+ },
121
+ {
122
+ testName: "pasteTable",
123
+ createSelection: (doc) => TextSelection.create(doc, 12),
124
+ html: `<table>
125
+ <tr>
126
+ <td>Cell 1</td>
127
+ <td>Cell 2</td>
128
+ </tr>
129
+ <tr>
130
+ <td>Cell 3</td>
131
+ <td>Cell 4</td>
132
+ </tr>
133
+ </table>`,
134
+ },
135
+ {
136
+ testName: "pasteTableInExistingTable",
137
+ createSelection: (doc) => TextSelection.create(doc, 73),
138
+ html: `<table>
139
+ <tr>
140
+ <td>Cell 1</td>
141
+ <td>Cell 2</td>
142
+ </tr>
143
+ <tr>
144
+ <td>Cell 3</td>
145
+ <td>Cell 4</td>
146
+ </tr>
147
+ </table>`,
148
+ },
149
+ {
150
+ testName: "pasteParagraphInCustomBlock",
151
+ createSelection: (doc) => TextSelection.create(doc, 80, 96),
152
+ html: `<p>Paragraph</p>`,
153
+ },
154
+ ];
155
+
156
+ for (const testCase of testCases) {
157
+ it(`${testCase.testName}`, async () => {
158
+ await testPasteExternalHTML(testCase);
159
+ });
160
+ }
161
+ });
@@ -7,11 +7,13 @@ import { PartialBlock } from "../../blocks/defaultBlocks.js";
7
7
  import { BlockNoteEditor } from "../../editor/BlockNoteEditor.js";
8
8
  import { initializeESMDependencies } from "../../util/esmDependencies.js";
9
9
  import { doPaste } from "../testUtil/paste.js";
10
+ import { schema } from "./testUtil.js";
10
11
  import { selectedFragmentToHTML } from "./toClipboard/copyExtension.js";
11
12
 
12
13
  type SelectionTestCase = {
13
14
  testName: string;
14
- createSelection: (doc: Node) => Selection;
15
+ createCopySelection: (doc: Node) => Selection;
16
+ createPasteSelection?: (doc: Node) => Selection;
15
17
  };
16
18
 
17
19
  // These tests are meant to test the copying of user selections in the editor.
@@ -19,7 +21,7 @@ type SelectionTestCase = {
19
21
  // as they are represented in the BlockNote API, whereas here we want to test
20
22
  // ProseMirror/TipTap selections directly.
21
23
  describe("Test ProseMirror selection clipboard HTML", () => {
22
- const initialContent: PartialBlock[] = [
24
+ const initialContent: PartialBlock<typeof schema.blockSchema>[] = [
23
25
  {
24
26
  type: "heading",
25
27
  props: {
@@ -138,9 +140,17 @@ describe("Test ProseMirror selection clipboard HTML", () => {
138
140
  // },
139
141
  // ],
140
142
  },
143
+ {
144
+ type: "paragraph",
145
+ content: "Paragraph",
146
+ },
147
+ {
148
+ type: "customParagraph",
149
+ content: "Paragraph",
150
+ },
141
151
  ];
142
152
 
143
- let editor: BlockNoteEditor;
153
+ let editor: BlockNoteEditor<typeof schema.blockSchema>;
144
154
  const div = document.createElement("div");
145
155
 
146
156
  beforeEach(() => {
@@ -150,7 +160,7 @@ describe("Test ProseMirror selection clipboard HTML", () => {
150
160
  beforeAll(async () => {
151
161
  (window as any).__TEST_OPTIONS = (window as any).__TEST_OPTIONS || {};
152
162
 
153
- editor = BlockNoteEditor.create();
163
+ editor = BlockNoteEditor.create({ schema });
154
164
  editor.mount(div);
155
165
 
156
166
  await initializeESMDependencies();
@@ -167,24 +177,36 @@ describe("Test ProseMirror selection clipboard HTML", () => {
167
177
  // Sets the editor selection to the given start and end positions, then
168
178
  // exports the selected content to HTML and compares it to a snapshot.
169
179
  async function testSelection(testCase: SelectionTestCase) {
180
+ if (!editor.prosemirrorView) {
181
+ throw new Error("Editor view not initialized.");
182
+ }
183
+
170
184
  editor.dispatch(
171
185
  editor._tiptapEditor.state.tr.setSelection(
172
- testCase.createSelection(editor._tiptapEditor.view.state.doc)
186
+ testCase.createCopySelection(editor.prosemirrorView.state.doc)
173
187
  )
174
188
  );
175
189
 
176
190
  const { clipboardHTML, externalHTML } = selectedFragmentToHTML(
177
- editor._tiptapEditor.view,
191
+ editor.prosemirrorView,
178
192
  editor
179
193
  );
180
194
 
181
195
  expect(externalHTML).toMatchFileSnapshot(
182
- `./__snapshots__/${testCase.testName}.html`
196
+ `./__snapshots__/internal/${testCase.testName}.html`
183
197
  );
184
198
 
199
+ if (testCase.createPasteSelection) {
200
+ editor.dispatch(
201
+ editor._tiptapEditor.state.tr.setSelection(
202
+ testCase.createPasteSelection(editor.prosemirrorView.state.doc)
203
+ )
204
+ );
205
+ }
206
+
185
207
  const originalDocument = editor.document;
186
208
  doPaste(
187
- editor._tiptapEditor.view,
209
+ editor.prosemirrorView,
188
210
  "text",
189
211
  clipboardHTML,
190
212
  false,
@@ -197,81 +219,85 @@ describe("Test ProseMirror selection clipboard HTML", () => {
197
219
 
198
220
  const testCases: SelectionTestCase[] = [
199
221
  // TODO: Consider adding test cases for nested blocks & double nested blocks.
200
- // Selection spans all of first heading's children.
222
+ // Copy/paste all of first heading's children.
201
223
  {
202
224
  testName: "multipleChildren",
203
- createSelection: (doc) => TextSelection.create(doc, 16, 78),
225
+ createCopySelection: (doc) => TextSelection.create(doc, 16, 78),
204
226
  },
205
- // Selection spans from start of first heading to end of its first child.
227
+ // Copy/paste from start of first heading to end of its first child.
206
228
  {
207
229
  testName: "childToParent",
208
- createSelection: (doc) => TextSelection.create(doc, 3, 34),
230
+ createCopySelection: (doc) => TextSelection.create(doc, 3, 34),
209
231
  },
210
- // Selection spans from middle of first heading to the middle of its first
211
- // child.
232
+ // Copy/paste from middle of first heading to the middle of its first child.
212
233
  {
213
234
  testName: "partialChildToParent",
214
- createSelection: (doc) => TextSelection.create(doc, 6, 23),
235
+ createCopySelection: (doc) => TextSelection.create(doc, 6, 23),
215
236
  },
216
- // Selection spans from start of first heading's first child to end of
217
- // second heading's content (does not include second heading's children).
237
+ // Copy/paste from start of first heading's first child to end of second
238
+ // heading's content (does not include second heading's children).
218
239
  {
219
240
  testName: "childrenToNextParent",
220
- createSelection: (doc) => TextSelection.create(doc, 16, 93),
241
+ createCopySelection: (doc) => TextSelection.create(doc, 16, 93),
221
242
  },
222
- // Selection spans from start of first heading's first child to end of
223
- // second heading's last child.
243
+ // Copy/paste from start of first heading's first child to end of second
244
+ // heading's last child.
224
245
  {
225
246
  testName: "childrenToNextParentsChildren",
226
- createSelection: (doc) => TextSelection.create(doc, 16, 159),
247
+ createCopySelection: (doc) => TextSelection.create(doc, 16, 159),
227
248
  },
228
- // Selection spans "Regular" text inside third heading.
249
+ // Copy/paste "Regular" text inside third heading.
229
250
  {
230
251
  testName: "unstyledText",
231
- createSelection: (doc) => TextSelection.create(doc, 175, 182),
252
+ createCopySelection: (doc) => TextSelection.create(doc, 175, 182),
232
253
  },
233
- // Selection spans "Italic" text inside third heading.
254
+ // Copy/paste "Italic" text inside third heading.
234
255
  {
235
256
  testName: "styledText",
236
- createSelection: (doc) => TextSelection.create(doc, 169, 175),
257
+ createCopySelection: (doc) => TextSelection.create(doc, 169, 175),
237
258
  },
238
- // Selection spans third heading's content (does not include third heading's
259
+ // Copy/paste third heading's content (does not include third heading's
239
260
  // children).
240
261
  {
241
262
  testName: "multipleStyledText",
242
- createSelection: (doc) => TextSelection.create(doc, 165, 182),
263
+ createCopySelection: (doc) => TextSelection.create(doc, 165, 182),
243
264
  },
244
- // Selection spans the image block content.
265
+ // Copy/paste the image block content.
245
266
  {
246
267
  testName: "image",
247
- createSelection: (doc) => NodeSelection.create(doc, 185),
268
+ createCopySelection: (doc) => NodeSelection.create(doc, 185),
248
269
  },
249
- // Selection spans from start of third heading to end of it's last
250
- // descendant.
270
+ // Copy/paste from start of third heading to end of it's last descendant.
251
271
  {
252
272
  testName: "nestedImage",
253
- createSelection: (doc) => TextSelection.create(doc, 165, 205),
273
+ createCopySelection: (doc) => TextSelection.create(doc, 165, 205),
254
274
  },
255
- // Selection spans text in first cell of the table.
275
+ // Copy/paste text in first cell of the table.
256
276
  {
257
277
  testName: "tableCellText",
258
- createSelection: (doc) => TextSelection.create(doc, 216, 226),
278
+ createCopySelection: (doc) => TextSelection.create(doc, 216, 226),
259
279
  },
260
- // Selection spans first cell of the table.
280
+ // Copy/paste first cell of the table.
261
281
  // TODO: External HTML is wrapped in unnecessary `tr` element.
262
282
  {
263
283
  testName: "tableCell",
264
- createSelection: (doc) => CellSelection.create(doc, 214),
284
+ createCopySelection: (doc) => CellSelection.create(doc, 214),
265
285
  },
266
- // Selection spans first row of the table.
286
+ // Copy/paste first row of the table.
267
287
  {
268
288
  testName: "tableRow",
269
- createSelection: (doc) => CellSelection.create(doc, 214, 228),
289
+ createCopySelection: (doc) => CellSelection.create(doc, 214, 228),
270
290
  },
271
- // Selection spans all cells of the table.
291
+ // Copy/paste all cells of the table.
272
292
  {
273
293
  testName: "tableAllCells",
274
- createSelection: (doc) => CellSelection.create(doc, 214, 258),
294
+ createCopySelection: (doc) => CellSelection.create(doc, 214, 258),
295
+ },
296
+ // Copy regular paragraph content and paste over custom block content.
297
+ {
298
+ testName: "paragraphInCustomBlock",
299
+ createCopySelection: (doc) => TextSelection.create(doc, 277, 286),
300
+ createPasteSelection: (doc) => TextSelection.create(doc, 290, 299),
275
301
  },
276
302
  ];
277
303
 
@@ -131,7 +131,7 @@ export async function handleFileInsertion<
131
131
  top: (event as DragEvent).clientY,
132
132
  };
133
133
 
134
- const pos = editor._tiptapEditor.view.posAtCoords(coords);
134
+ const pos = editor.prosemirrorView?.posAtCoords(coords);
135
135
  if (!pos) {
136
136
  return;
137
137
  }