@blocknote/core 0.17.1 → 0.19.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 (490) hide show
  1. package/dist/blocknote.js +2774 -1804
  2. package/dist/blocknote.js.map +1 -1
  3. package/dist/blocknote.umd.cjs +9 -6
  4. package/dist/blocknote.umd.cjs.map +1 -1
  5. package/dist/src/api/blockManipulation/commands/insertBlocks/insertBlocks.js +27 -0
  6. package/dist/src/api/blockManipulation/commands/insertBlocks/insertBlocks.js.map +1 -0
  7. package/dist/src/api/blockManipulation/commands/insertBlocks/insertBlocks.test.js +99 -0
  8. package/dist/src/api/blockManipulation/commands/insertBlocks/insertBlocks.test.js.map +1 -0
  9. package/dist/src/api/blockManipulation/commands/mergeBlocks/mergeBlocks.js +97 -0
  10. package/dist/src/api/blockManipulation/commands/mergeBlocks/mergeBlocks.js.map +1 -0
  11. package/dist/src/api/blockManipulation/commands/mergeBlocks/mergeBlocks.test.js +88 -0
  12. package/dist/src/api/blockManipulation/commands/mergeBlocks/mergeBlocks.test.js.map +1 -0
  13. package/dist/src/api/blockManipulation/commands/moveBlock/moveBlock.js +116 -0
  14. package/dist/src/api/blockManipulation/commands/moveBlock/moveBlock.js.map +1 -0
  15. package/dist/src/api/blockManipulation/commands/moveBlock/moveBlock.test.js +106 -0
  16. package/dist/src/api/blockManipulation/commands/moveBlock/moveBlock.test.js.map +1 -0
  17. package/dist/src/api/blockManipulation/commands/nestBlock/nestBlock.js +57 -0
  18. package/dist/src/api/blockManipulation/commands/nestBlock/nestBlock.js.map +1 -0
  19. package/dist/src/api/blockManipulation/commands/removeBlocks/removeBlocks.js +43 -0
  20. package/dist/src/api/blockManipulation/commands/removeBlocks/removeBlocks.js.map +1 -0
  21. package/dist/src/api/blockManipulation/commands/removeBlocks/removeBlocks.test.js +27 -0
  22. package/dist/src/api/blockManipulation/commands/removeBlocks/removeBlocks.test.js.map +1 -0
  23. package/dist/src/api/blockManipulation/commands/replaceBlocks/replaceBlocks.js +29 -0
  24. package/dist/src/api/blockManipulation/commands/replaceBlocks/replaceBlocks.js.map +1 -0
  25. package/dist/src/api/blockManipulation/commands/replaceBlocks/replaceBlocks.test.js +157 -0
  26. package/dist/src/api/blockManipulation/commands/replaceBlocks/replaceBlocks.test.js.map +1 -0
  27. package/dist/src/api/blockManipulation/commands/splitBlock/splitBlock.js +27 -0
  28. package/dist/src/api/blockManipulation/commands/splitBlock/splitBlock.js.map +1 -0
  29. package/dist/src/api/blockManipulation/commands/splitBlock/splitBlock.test.js +64 -0
  30. package/dist/src/api/blockManipulation/commands/splitBlock/splitBlock.test.js.map +1 -0
  31. package/dist/src/api/blockManipulation/commands/updateBlock/updateBlock.js +145 -0
  32. package/dist/src/api/blockManipulation/commands/updateBlock/updateBlock.js.map +1 -0
  33. package/dist/src/api/blockManipulation/commands/updateBlock/updateBlock.test.js +252 -0
  34. package/dist/src/api/blockManipulation/commands/updateBlock/updateBlock.test.js.map +1 -0
  35. package/dist/src/api/blockManipulation/insertContentAt.js +64 -0
  36. package/dist/src/api/blockManipulation/insertContentAt.js.map +1 -0
  37. package/dist/src/api/blockManipulation/selections/textCursorPosition/textCursorPosition.js +76 -0
  38. package/dist/src/api/blockManipulation/selections/textCursorPosition/textCursorPosition.js.map +1 -0
  39. package/dist/src/api/blockManipulation/selections/textCursorPosition/textCursorPosition.test.js +33 -0
  40. package/dist/src/api/blockManipulation/selections/textCursorPosition/textCursorPosition.test.js.map +1 -0
  41. package/dist/src/api/blockManipulation/setupTestEnv.js +172 -0
  42. package/dist/src/api/blockManipulation/setupTestEnv.js.map +1 -0
  43. package/dist/src/api/clipboard/clipboard.test.js +246 -0
  44. package/dist/src/api/clipboard/clipboard.test.js.map +1 -0
  45. package/dist/src/api/clipboard/fromClipboard/acceptedMIMETypes.js +8 -0
  46. package/dist/src/api/clipboard/fromClipboard/acceptedMIMETypes.js.map +1 -0
  47. package/dist/src/api/clipboard/fromClipboard/fileDropExtension.js +38 -0
  48. package/dist/src/api/clipboard/fromClipboard/fileDropExtension.js.map +1 -0
  49. package/dist/src/api/clipboard/fromClipboard/handleFileInsertion.js +109 -0
  50. package/dist/src/api/clipboard/fromClipboard/handleFileInsertion.js.map +1 -0
  51. package/dist/src/api/clipboard/fromClipboard/handleVSCodePaste.js +26 -0
  52. package/dist/src/api/clipboard/fromClipboard/handleVSCodePaste.js.map +1 -0
  53. package/dist/src/api/clipboard/fromClipboard/pasteExtension.js +57 -0
  54. package/dist/src/api/clipboard/fromClipboard/pasteExtension.js.map +1 -0
  55. package/dist/src/api/clipboard/toClipboard/copyExtension.js +132 -0
  56. package/dist/src/api/clipboard/toClipboard/copyExtension.js.map +1 -0
  57. package/dist/src/api/exporters/html/externalHTMLExporter.js +35 -0
  58. package/dist/src/api/exporters/html/externalHTMLExporter.js.map +1 -0
  59. package/dist/src/api/exporters/html/htmlConversion.test.js +72 -0
  60. package/dist/src/api/exporters/html/htmlConversion.test.js.map +1 -0
  61. package/dist/src/api/exporters/html/internalHTMLSerializer.js +21 -0
  62. package/dist/src/api/exporters/html/internalHTMLSerializer.js.map +1 -0
  63. package/dist/src/api/exporters/html/util/serializeBlocksExternalHTML.js +141 -0
  64. package/dist/src/api/exporters/html/util/serializeBlocksExternalHTML.js.map +1 -0
  65. package/dist/src/api/exporters/html/util/serializeBlocksInternalHTML.js +96 -0
  66. package/dist/src/api/exporters/html/util/serializeBlocksInternalHTML.js.map +1 -0
  67. package/dist/src/api/exporters/markdown/markdownExporter.js +31 -0
  68. package/dist/src/api/exporters/markdown/markdownExporter.js.map +1 -0
  69. package/dist/src/api/exporters/markdown/markdownExporter.test.js +57 -0
  70. package/dist/src/api/exporters/markdown/markdownExporter.test.js.map +1 -0
  71. package/dist/src/api/exporters/markdown/removeUnderlinesRehypePlugin.js +33 -0
  72. package/dist/src/api/exporters/markdown/removeUnderlinesRehypePlugin.js.map +1 -0
  73. package/dist/src/api/exporters/markdown/util/addSpacesToCheckboxesRehypePlugin.js +37 -0
  74. package/dist/src/api/exporters/markdown/util/addSpacesToCheckboxesRehypePlugin.js.map +1 -0
  75. package/dist/src/api/getBlockInfoFromPos.js +171 -0
  76. package/dist/src/api/getBlockInfoFromPos.js.map +1 -0
  77. package/dist/src/api/nodeConversions/blockToNode.js +197 -0
  78. package/dist/src/api/nodeConversions/blockToNode.js.map +1 -0
  79. package/dist/src/api/nodeConversions/fragmentToBlocks.js +50 -0
  80. package/dist/src/api/nodeConversions/fragmentToBlocks.js.map +1 -0
  81. package/dist/src/api/nodeConversions/nodeConversions.test.js +54 -0
  82. package/dist/src/api/nodeConversions/nodeConversions.test.js.map +1 -0
  83. package/dist/src/api/nodeConversions/nodeToBlock.js +316 -0
  84. package/dist/src/api/nodeConversions/nodeToBlock.js.map +1 -0
  85. package/dist/src/api/nodeUtil.js +28 -0
  86. package/dist/src/api/nodeUtil.js.map +1 -0
  87. package/dist/src/api/parsers/html/parseHTML.js +19 -0
  88. package/dist/src/api/parsers/html/parseHTML.js.map +1 -0
  89. package/dist/src/api/parsers/html/parseHTML.test.js +470 -0
  90. package/dist/src/api/parsers/html/parseHTML.test.js.map +1 -0
  91. package/dist/src/api/parsers/html/util/nestedLists.js +106 -0
  92. package/dist/src/api/parsers/html/util/nestedLists.js.map +1 -0
  93. package/dist/src/api/parsers/html/util/nestedLists.test.js +166 -0
  94. package/dist/src/api/parsers/html/util/nestedLists.test.js.map +1 -0
  95. package/dist/src/api/parsers/markdown/parseMarkdown.js +52 -0
  96. package/dist/src/api/parsers/markdown/parseMarkdown.js.map +1 -0
  97. package/dist/src/api/parsers/markdown/parseMarkdown.test.js +109 -0
  98. package/dist/src/api/parsers/markdown/parseMarkdown.test.js.map +1 -0
  99. package/dist/src/api/testUtil/cases/customBlocks.js +313 -0
  100. package/dist/src/api/testUtil/cases/customBlocks.js.map +1 -0
  101. package/dist/src/api/testUtil/cases/customInlineContent.js +91 -0
  102. package/dist/src/api/testUtil/cases/customInlineContent.js.map +1 -0
  103. package/dist/src/api/testUtil/cases/customStyles.js +83 -0
  104. package/dist/src/api/testUtil/cases/customStyles.js.map +1 -0
  105. package/dist/src/api/testUtil/cases/defaultSchema.js +673 -0
  106. package/dist/src/api/testUtil/cases/defaultSchema.js.map +1 -0
  107. package/dist/src/api/testUtil/index.js +2 -0
  108. package/dist/src/api/testUtil/index.js.map +1 -0
  109. package/dist/src/api/testUtil/partialBlockTestUtil.js +114 -0
  110. package/dist/src/api/testUtil/partialBlockTestUtil.js.map +1 -0
  111. package/dist/src/api/testUtil/paste.js +29 -0
  112. package/dist/src/api/testUtil/paste.js.map +1 -0
  113. package/dist/src/blocks/AudioBlockContent/AudioBlockContent.js +97 -0
  114. package/dist/src/blocks/AudioBlockContent/AudioBlockContent.js.map +1 -0
  115. package/dist/src/blocks/AudioBlockContent/audioBlockHelpers.js +5 -0
  116. package/dist/src/blocks/AudioBlockContent/audioBlockHelpers.js.map +1 -0
  117. package/dist/src/blocks/CodeBlockContent/CodeBlockContent.js +273 -0
  118. package/dist/src/blocks/CodeBlockContent/CodeBlockContent.js.map +1 -0
  119. package/dist/src/blocks/CodeBlockContent/defaultSupportedLanguages.js +90 -0
  120. package/dist/src/blocks/CodeBlockContent/defaultSupportedLanguages.js.map +1 -0
  121. package/dist/src/blocks/FileBlockContent/FileBlockContent.js +70 -0
  122. package/dist/src/blocks/FileBlockContent/FileBlockContent.js.map +1 -0
  123. package/dist/src/blocks/FileBlockContent/fileBlockHelpers.js +317 -0
  124. package/dist/src/blocks/FileBlockContent/fileBlockHelpers.js.map +1 -0
  125. package/dist/src/blocks/FileBlockContent/uploadToTmpFilesDotOrg_DEV_ONLY.js +15 -0
  126. package/dist/src/blocks/FileBlockContent/uploadToTmpFilesDotOrg_DEV_ONLY.js.map +1 -0
  127. package/dist/src/blocks/HeadingBlockContent/HeadingBlockContent.js +141 -0
  128. package/dist/src/blocks/HeadingBlockContent/HeadingBlockContent.js.map +1 -0
  129. package/dist/src/blocks/ImageBlockContent/ImageBlockContent.js +106 -0
  130. package/dist/src/blocks/ImageBlockContent/ImageBlockContent.js.map +1 -0
  131. package/dist/src/blocks/ImageBlockContent/imageBlockHelpers.js +6 -0
  132. package/dist/src/blocks/ImageBlockContent/imageBlockHelpers.js.map +1 -0
  133. package/dist/src/blocks/ListItemBlockContent/BulletListItemBlockContent/BulletListItemBlockContent.js +111 -0
  134. package/dist/src/blocks/ListItemBlockContent/BulletListItemBlockContent/BulletListItemBlockContent.js.map +1 -0
  135. package/dist/src/blocks/ListItemBlockContent/CheckListItemBlockContent/CheckListItemBlockContent.js +218 -0
  136. package/dist/src/blocks/ListItemBlockContent/CheckListItemBlockContent/CheckListItemBlockContent.js.map +1 -0
  137. package/dist/src/blocks/ListItemBlockContent/ListItemKeyboardShortcuts.js +41 -0
  138. package/dist/src/blocks/ListItemBlockContent/ListItemKeyboardShortcuts.js.map +1 -0
  139. package/dist/src/blocks/ListItemBlockContent/NumberedListItemBlockContent/NumberedListIndexingPlugin.js +58 -0
  140. package/dist/src/blocks/ListItemBlockContent/NumberedListItemBlockContent/NumberedListIndexingPlugin.js.map +1 -0
  141. package/dist/src/blocks/ListItemBlockContent/NumberedListItemBlockContent/NumberedListItemBlockContent.js +128 -0
  142. package/dist/src/blocks/ListItemBlockContent/NumberedListItemBlockContent/NumberedListItemBlockContent.js.map +1 -0
  143. package/dist/src/blocks/ParagraphBlockContent/ParagraphBlockContent.js +51 -0
  144. package/dist/src/blocks/ParagraphBlockContent/ParagraphBlockContent.js.map +1 -0
  145. package/dist/src/blocks/TableBlockContent/TableBlockContent.js +130 -0
  146. package/dist/src/blocks/TableBlockContent/TableBlockContent.js.map +1 -0
  147. package/dist/src/blocks/TableBlockContent/TableExtension.js +57 -0
  148. package/dist/src/blocks/TableBlockContent/TableExtension.js.map +1 -0
  149. package/dist/src/blocks/VideoBlockContent/VideoBlockContent.js +103 -0
  150. package/dist/src/blocks/VideoBlockContent/VideoBlockContent.js.map +1 -0
  151. package/dist/src/blocks/VideoBlockContent/videoBlockHelpers.js +6 -0
  152. package/dist/src/blocks/VideoBlockContent/videoBlockHelpers.js.map +1 -0
  153. package/dist/src/blocks/defaultBlockHelpers.js +50 -0
  154. package/dist/src/blocks/defaultBlockHelpers.js.map +1 -0
  155. package/dist/src/blocks/defaultBlockTypeGuards.js +40 -0
  156. package/dist/src/blocks/defaultBlockTypeGuards.js.map +1 -0
  157. package/dist/src/blocks/defaultBlocks.js +50 -0
  158. package/dist/src/blocks/defaultBlocks.js.map +1 -0
  159. package/dist/src/blocks/defaultProps.js +19 -0
  160. package/dist/src/blocks/defaultProps.js.map +1 -0
  161. package/dist/src/editor/BlockNoteEditor.js +750 -0
  162. package/dist/src/editor/BlockNoteEditor.js.map +1 -0
  163. package/dist/src/editor/BlockNoteEditor.test.js +65 -0
  164. package/dist/src/editor/BlockNoteEditor.test.js.map +1 -0
  165. package/dist/src/editor/BlockNoteExtensions.js +149 -0
  166. package/dist/src/editor/BlockNoteExtensions.js.map +1 -0
  167. package/dist/src/editor/BlockNoteSchema.js +38 -0
  168. package/dist/src/editor/BlockNoteSchema.js.map +1 -0
  169. package/dist/src/editor/BlockNoteTipTapEditor.js +169 -0
  170. package/dist/src/editor/BlockNoteTipTapEditor.js.map +1 -0
  171. package/dist/src/editor/cursorPositionTypes.js +2 -0
  172. package/dist/src/editor/cursorPositionTypes.js.map +1 -0
  173. package/dist/src/editor/defaultColors.js +77 -0
  174. package/dist/src/editor/defaultColors.js.map +1 -0
  175. package/dist/src/editor/selectionTypes.js +2 -0
  176. package/dist/src/editor/selectionTypes.js.map +1 -0
  177. package/dist/src/editor/transformPasted.js +79 -0
  178. package/dist/src/editor/transformPasted.js.map +1 -0
  179. package/dist/src/exporter/Exporter.js +36 -0
  180. package/dist/src/exporter/Exporter.js.map +1 -0
  181. package/dist/src/exporter/index.js +3 -0
  182. package/dist/src/exporter/index.js.map +1 -0
  183. package/dist/src/exporter/mapping.js +12 -0
  184. package/dist/src/exporter/mapping.js.map +1 -0
  185. package/dist/src/extensions/BackgroundColor/BackgroundColorExtension.js +30 -0
  186. package/dist/src/extensions/BackgroundColor/BackgroundColorExtension.js.map +1 -0
  187. package/dist/src/extensions/BackgroundColor/BackgroundColorMark.js +39 -0
  188. package/dist/src/extensions/BackgroundColor/BackgroundColorMark.js.map +1 -0
  189. package/dist/src/extensions/FilePanel/FilePanelPlugin.js +131 -0
  190. package/dist/src/extensions/FilePanel/FilePanelPlugin.js.map +1 -0
  191. package/dist/src/extensions/FormattingToolbar/FormattingToolbarPlugin.js +195 -0
  192. package/dist/src/extensions/FormattingToolbar/FormattingToolbarPlugin.js.map +1 -0
  193. package/dist/src/extensions/KeyboardShortcuts/KeyboardShortcutsExtension.js +309 -0
  194. package/dist/src/extensions/KeyboardShortcuts/KeyboardShortcutsExtension.js.map +1 -0
  195. package/dist/src/extensions/LinkToolbar/LinkToolbarPlugin.js +247 -0
  196. package/dist/src/extensions/LinkToolbar/LinkToolbarPlugin.js.map +1 -0
  197. package/dist/src/extensions/NodeSelectionKeyboard/NodeSelectionKeyboardPlugin.js +51 -0
  198. package/dist/src/extensions/NodeSelectionKeyboard/NodeSelectionKeyboardPlugin.js.map +1 -0
  199. package/dist/src/extensions/Placeholder/PlaceholderPlugin.js +81 -0
  200. package/dist/src/extensions/Placeholder/PlaceholderPlugin.js.map +1 -0
  201. package/dist/src/extensions/PreviousBlockType/PreviousBlockTypePlugin.js +183 -0
  202. package/dist/src/extensions/PreviousBlockType/PreviousBlockTypePlugin.js.map +1 -0
  203. package/dist/src/extensions/SideMenu/MultipleNodeSelection.js +68 -0
  204. package/dist/src/extensions/SideMenu/MultipleNodeSelection.js.map +1 -0
  205. package/dist/src/extensions/SideMenu/SideMenuPlugin.js +339 -0
  206. package/dist/src/extensions/SideMenu/SideMenuPlugin.js.map +1 -0
  207. package/dist/src/extensions/SideMenu/dragging.js +128 -0
  208. package/dist/src/extensions/SideMenu/dragging.js.map +1 -0
  209. package/dist/src/extensions/SuggestionMenu/DefaultGridSuggestionItem.js +2 -0
  210. package/dist/src/extensions/SuggestionMenu/DefaultGridSuggestionItem.js.map +1 -0
  211. package/dist/src/extensions/SuggestionMenu/DefaultSuggestionItem.js +2 -0
  212. package/dist/src/extensions/SuggestionMenu/DefaultSuggestionItem.js.map +1 -0
  213. package/dist/src/extensions/SuggestionMenu/SuggestionPlugin.js +245 -0
  214. package/dist/src/extensions/SuggestionMenu/SuggestionPlugin.js.map +1 -0
  215. package/dist/src/extensions/SuggestionMenu/getDefaultEmojiPickerItems.js +26 -0
  216. package/dist/src/extensions/SuggestionMenu/getDefaultEmojiPickerItems.js.map +1 -0
  217. package/dist/src/extensions/SuggestionMenu/getDefaultSlashMenuItems.js +244 -0
  218. package/dist/src/extensions/SuggestionMenu/getDefaultSlashMenuItems.js.map +1 -0
  219. package/dist/src/extensions/TableHandles/TableHandlesPlugin.js +553 -0
  220. package/dist/src/extensions/TableHandles/TableHandlesPlugin.js.map +1 -0
  221. package/dist/src/extensions/TextAlignment/TextAlignmentExtension.js +36 -0
  222. package/dist/src/extensions/TextAlignment/TextAlignmentExtension.js.map +1 -0
  223. package/dist/src/extensions/TextColor/TextColorExtension.js +29 -0
  224. package/dist/src/extensions/TextColor/TextColorExtension.js.map +1 -0
  225. package/dist/src/extensions/TextColor/TextColorMark.js +37 -0
  226. package/dist/src/extensions/TextColor/TextColorMark.js.map +1 -0
  227. package/dist/src/extensions/TrailingNode/TrailingNodeExtension.js +58 -0
  228. package/dist/src/extensions/TrailingNode/TrailingNodeExtension.js.map +1 -0
  229. package/dist/src/extensions/UniqueID/UniqueID.js +283 -0
  230. package/dist/src/extensions/UniqueID/UniqueID.js.map +1 -0
  231. package/dist/src/extensions/getDraggableBlockFromElement.js +13 -0
  232. package/dist/src/extensions/getDraggableBlockFromElement.js.map +1 -0
  233. package/dist/src/extensions-shared/UiElementPosition.js +2 -0
  234. package/dist/src/extensions-shared/UiElementPosition.js.map +1 -0
  235. package/dist/src/i18n/dictionary.js +4 -0
  236. package/dist/src/i18n/dictionary.js.map +1 -0
  237. package/dist/src/i18n/locales/ar.js +298 -0
  238. package/dist/src/i18n/locales/ar.js.map +1 -0
  239. package/dist/src/i18n/locales/de.js +313 -0
  240. package/dist/src/i18n/locales/de.js.map +1 -0
  241. package/dist/src/i18n/locales/en.js +314 -0
  242. package/dist/src/i18n/locales/en.js.map +1 -0
  243. package/dist/src/i18n/locales/es.js +312 -0
  244. package/dist/src/i18n/locales/es.js.map +1 -0
  245. package/dist/src/i18n/locales/fr.js +313 -0
  246. package/dist/src/i18n/locales/fr.js.map +1 -0
  247. package/dist/src/i18n/locales/hr.js +308 -0
  248. package/dist/src/i18n/locales/hr.js.map +1 -0
  249. package/dist/src/i18n/locales/index.js +16 -0
  250. package/dist/src/i18n/locales/index.js.map +1 -0
  251. package/dist/src/i18n/locales/is.js +305 -0
  252. package/dist/src/i18n/locales/is.js.map +1 -0
  253. package/dist/src/i18n/locales/ja.js +333 -0
  254. package/dist/src/i18n/locales/ja.js.map +1 -0
  255. package/dist/src/i18n/locales/ko.js +326 -0
  256. package/dist/src/i18n/locales/ko.js.map +1 -0
  257. package/dist/src/i18n/locales/nl.js +313 -0
  258. package/dist/src/i18n/locales/nl.js.map +1 -0
  259. package/dist/src/i18n/locales/pl.js +297 -0
  260. package/dist/src/i18n/locales/pl.js.map +1 -0
  261. package/dist/src/i18n/locales/pt.js +305 -0
  262. package/dist/src/i18n/locales/pt.js.map +1 -0
  263. package/dist/src/i18n/locales/ru.js +340 -0
  264. package/dist/src/i18n/locales/ru.js.map +1 -0
  265. package/dist/src/i18n/locales/vi.js +312 -0
  266. package/dist/src/i18n/locales/vi.js.map +1 -0
  267. package/dist/src/i18n/locales/zh.js +346 -0
  268. package/dist/src/i18n/locales/zh.js.map +1 -0
  269. package/dist/src/index.js +55 -0
  270. package/dist/src/index.js.map +1 -0
  271. package/dist/src/pm-nodes/BlockContainer.js +72 -0
  272. package/dist/src/pm-nodes/BlockContainer.js.map +1 -0
  273. package/dist/src/pm-nodes/BlockGroup.js +43 -0
  274. package/dist/src/pm-nodes/BlockGroup.js.map +1 -0
  275. package/dist/src/pm-nodes/Doc.js +7 -0
  276. package/dist/src/pm-nodes/Doc.js.map +1 -0
  277. package/dist/src/pm-nodes/index.js +4 -0
  278. package/dist/src/pm-nodes/index.js.map +1 -0
  279. package/dist/src/schema/blocks/createSpec.js +126 -0
  280. package/dist/src/schema/blocks/createSpec.js.map +1 -0
  281. package/dist/src/schema/blocks/internal.js +147 -0
  282. package/dist/src/schema/blocks/internal.js.map +1 -0
  283. package/dist/src/schema/blocks/types.js +2 -0
  284. package/dist/src/schema/blocks/types.js.map +1 -0
  285. package/dist/src/schema/index.js +11 -0
  286. package/dist/src/schema/index.js.map +1 -0
  287. package/dist/src/schema/inlineContent/createSpec.js +64 -0
  288. package/dist/src/schema/inlineContent/createSpec.js.map +1 -0
  289. package/dist/src/schema/inlineContent/internal.js +52 -0
  290. package/dist/src/schema/inlineContent/internal.js.map +1 -0
  291. package/dist/src/schema/inlineContent/types.js +10 -0
  292. package/dist/src/schema/inlineContent/types.js.map +1 -0
  293. package/dist/src/schema/propTypes.js +2 -0
  294. package/dist/src/schema/propTypes.js.map +1 -0
  295. package/dist/src/schema/styles/createSpec.js +48 -0
  296. package/dist/src/schema/styles/createSpec.js.map +1 -0
  297. package/dist/src/schema/styles/internal.js +53 -0
  298. package/dist/src/schema/styles/internal.js.map +1 -0
  299. package/dist/src/schema/styles/types.js +2 -0
  300. package/dist/src/schema/styles/types.js.map +1 -0
  301. package/dist/src/util/EventEmitter.js +33 -0
  302. package/dist/src/util/EventEmitter.js.map +1 -0
  303. package/dist/src/util/browser.js +17 -0
  304. package/dist/src/util/browser.js.map +1 -0
  305. package/dist/src/util/combineByGroup.js +20 -0
  306. package/dist/src/util/combineByGroup.js.map +1 -0
  307. package/dist/src/util/esmDependencies.js +35 -0
  308. package/dist/src/util/esmDependencies.js.map +1 -0
  309. package/dist/src/util/string.js +14 -0
  310. package/dist/src/util/string.js.map +1 -0
  311. package/dist/src/util/typescript.js +12 -0
  312. package/dist/src/util/typescript.js.map +1 -0
  313. package/dist/style.css +1 -1
  314. package/dist/tsconfig.tsbuildinfo +1 -0
  315. package/dist/webpack-stats.json +1 -1
  316. package/package.json +9 -7
  317. package/src/api/blockManipulation/commands/insertBlocks/__snapshots__/insertBlocks.test.ts.snap +30 -0
  318. package/src/api/blockManipulation/commands/insertBlocks/insertBlocks.ts +2 -0
  319. package/src/api/blockManipulation/commands/mergeBlocks/__snapshots__/mergeBlocks.test.ts.snap +25 -0
  320. package/src/api/blockManipulation/commands/mergeBlocks/mergeBlocks.test.ts +2 -2
  321. package/src/api/blockManipulation/commands/mergeBlocks/mergeBlocks.ts +104 -39
  322. package/src/api/blockManipulation/commands/moveBlock/__snapshots__/moveBlock.test.ts.snap +40 -0
  323. package/src/api/blockManipulation/commands/moveBlock/moveBlock.ts +3 -5
  324. package/src/api/blockManipulation/commands/nestBlock/nestBlock.ts +100 -0
  325. package/src/api/blockManipulation/commands/removeBlocks/__snapshots__/removeBlocks.test.ts.snap +10 -0
  326. package/src/api/blockManipulation/commands/removeBlocks/removeBlocks.ts +1 -1
  327. package/src/api/blockManipulation/commands/replaceBlocks/__snapshots__/replaceBlocks.test.ts.snap +40 -0
  328. package/src/api/blockManipulation/commands/splitBlock/__snapshots__/splitBlock.test.ts.snap +30 -0
  329. package/src/api/blockManipulation/commands/splitBlock/splitBlock.test.ts +8 -4
  330. package/src/api/blockManipulation/commands/splitBlock/splitBlock.ts +11 -7
  331. package/src/api/blockManipulation/commands/updateBlock/__snapshots__/updateBlock.test.ts.snap +87 -0
  332. package/src/api/blockManipulation/commands/updateBlock/updateBlock.test.ts +5 -5
  333. package/src/api/blockManipulation/commands/updateBlock/updateBlock.ts +192 -107
  334. package/src/api/blockManipulation/selections/textCursorPosition/textCursorPosition.ts +48 -33
  335. package/src/api/clipboard/clipboard.test.ts +1 -1
  336. package/src/api/clipboard/fromClipboard/acceptedMIMETypes.ts +1 -0
  337. package/src/api/clipboard/fromClipboard/handleFileInsertion.ts +1 -1
  338. package/src/api/clipboard/fromClipboard/handleVSCodePaste.ts +49 -0
  339. package/src/api/clipboard/fromClipboard/pasteExtension.ts +6 -0
  340. package/src/api/clipboard/toClipboard/copyExtension.ts +1 -1
  341. package/src/api/exporters/html/__snapshots__/codeBlock/defaultLanguage/external.html +1 -0
  342. package/src/api/exporters/html/__snapshots__/codeBlock/defaultLanguage/internal.html +1 -0
  343. package/src/api/exporters/html/__snapshots__/codeBlock/empty/external.html +1 -0
  344. package/src/api/exporters/html/__snapshots__/codeBlock/empty/internal.html +1 -0
  345. package/src/api/exporters/html/__snapshots__/codeBlock/python/external.html +1 -0
  346. package/src/api/exporters/html/__snapshots__/codeBlock/python/internal.html +1 -0
  347. package/src/api/exporters/html/__snapshots__/image/basic/internal.html +1 -1
  348. package/src/api/exporters/html/__snapshots__/image/nested/internal.html +1 -1
  349. package/src/api/exporters/html/__snapshots__/image/noName/internal.html +1 -1
  350. package/src/api/exporters/html/__snapshots__/image/noPreview/internal.html +1 -1
  351. package/src/api/exporters/html/__snapshots__/lists/basic/internal.html +1 -1
  352. package/src/api/exporters/html/__snapshots__/lists/nested/internal.html +1 -1
  353. package/src/api/exporters/html/__snapshots__/simpleImage/basic/external.html +1 -1
  354. package/src/api/exporters/html/__snapshots__/simpleImage/basic/internal.html +1 -1
  355. package/src/api/exporters/html/__snapshots__/simpleImage/nested/external.html +1 -1
  356. package/src/api/exporters/html/__snapshots__/simpleImage/nested/internal.html +1 -1
  357. package/src/api/exporters/html/__snapshots__/simpleImage/noCaption/external.html +1 -1
  358. package/src/api/exporters/html/__snapshots__/simpleImage/noName/external.html +1 -1
  359. package/src/api/exporters/html/__snapshots__/simpleImage/noName/internal.html +1 -1
  360. package/src/api/exporters/html/__snapshots__/simpleImage/noPreview/external.html +1 -1
  361. package/src/api/exporters/html/__snapshots__/simpleImage/noPreview/internal.html +1 -1
  362. package/src/api/exporters/html/__snapshots__/table/allColWidths/external.html +1 -0
  363. package/src/api/exporters/html/__snapshots__/table/allColWidths/internal.html +1 -0
  364. package/src/api/exporters/html/__snapshots__/table/basic/external.html +1 -0
  365. package/src/api/exporters/html/__snapshots__/table/basic/internal.html +1 -0
  366. package/src/api/exporters/html/__snapshots__/table/mixedColWidths/external.html +1 -0
  367. package/src/api/exporters/html/__snapshots__/table/mixedColWidths/internal.html +1 -0
  368. package/src/api/exporters/html/htmlConversion.test.ts +1 -4
  369. package/src/api/exporters/html/internalHTMLSerializer.ts +2 -7
  370. package/src/api/exporters/html/util/serializeBlocksExternalHTML.ts +7 -1
  371. package/src/api/exporters/html/util/serializeBlocksInternalHTML.ts +75 -33
  372. package/src/api/exporters/markdown/__snapshots__/codeBlock/defaultLanguage/markdown.md +3 -0
  373. package/src/api/exporters/markdown/__snapshots__/codeBlock/empty/markdown.md +2 -0
  374. package/src/api/exporters/markdown/__snapshots__/codeBlock/python/markdown.md +3 -0
  375. package/src/api/exporters/markdown/__snapshots__/table/allColWidths/markdown.md +5 -0
  376. package/src/api/exporters/markdown/__snapshots__/table/basic/markdown.md +5 -0
  377. package/src/api/exporters/markdown/__snapshots__/table/mixedColWidths/markdown.md +5 -0
  378. package/src/api/exporters/markdown/markdownExporter.test.ts +1 -4
  379. package/src/api/getBlockInfoFromPos.ts +113 -58
  380. package/src/api/nodeConversions/__snapshots__/nodeConversions.test.ts.snap +711 -0
  381. package/src/api/nodeConversions/blockToNode.ts +62 -26
  382. package/src/api/nodeConversions/fragmentToBlocks.ts +18 -0
  383. package/src/api/nodeConversions/nodeToBlock.ts +35 -22
  384. package/src/api/nodeUtil.ts +1 -1
  385. package/src/api/parsers/html/__snapshots__/parse-notion-html.json +5 -0
  386. package/src/api/parsers/markdown/parseMarkdown.ts +1 -1
  387. package/src/api/testUtil/cases/defaultSchema.ts +95 -0
  388. package/src/api/testUtil/partialBlockTestUtil.ts +41 -4
  389. package/src/blocks/AudioBlockContent/AudioBlockContent.ts +4 -2
  390. package/src/blocks/CodeBlockContent/CodeBlockContent.ts +369 -0
  391. package/src/blocks/CodeBlockContent/defaultSupportedLanguages.ts +96 -0
  392. package/src/blocks/FileBlockContent/fileBlockHelpers.ts +10 -2
  393. package/src/blocks/HeadingBlockContent/HeadingBlockContent.ts +19 -31
  394. package/src/blocks/ImageBlockContent/ImageBlockContent.ts +4 -2
  395. package/src/blocks/ListItemBlockContent/BulletListItemBlockContent/BulletListItemBlockContent.ts +5 -9
  396. package/src/blocks/ListItemBlockContent/CheckListItemBlockContent/CheckListItemBlockContent.ts +6 -10
  397. package/src/blocks/ListItemBlockContent/ListItemKeyboardShortcuts.ts +1 -1
  398. package/src/blocks/ListItemBlockContent/NumberedListItemBlockContent/NumberedListIndexingPlugin.ts +11 -4
  399. package/src/blocks/ListItemBlockContent/NumberedListItemBlockContent/NumberedListItemBlockContent.ts +5 -9
  400. package/src/blocks/ParagraphBlockContent/ParagraphBlockContent.ts +4 -8
  401. package/src/blocks/TableBlockContent/TableBlockContent.ts +83 -8
  402. package/src/blocks/TableBlockContent/TableExtension.ts +10 -1
  403. package/src/blocks/VideoBlockContent/VideoBlockContent.ts +4 -2
  404. package/src/blocks/defaultBlockHelpers.ts +7 -2
  405. package/src/blocks/defaultBlocks.ts +4 -0
  406. package/src/editor/Block.css +71 -3
  407. package/src/editor/BlockNoteEditor.test.ts +2 -2
  408. package/src/editor/BlockNoteEditor.ts +18 -21
  409. package/src/editor/BlockNoteExtensions.ts +2 -3
  410. package/src/editor/BlockNoteTipTapEditor.ts +8 -1
  411. package/src/editor/defaultColors.ts +77 -0
  412. package/src/editor/editor.css +43 -5
  413. package/src/editor/transformPasted.ts +6 -3
  414. package/src/exporter/Exporter.ts +101 -0
  415. package/src/exporter/index.ts +2 -0
  416. package/src/exporter/mapping.ts +75 -0
  417. package/src/extensions/FormattingToolbar/FormattingToolbarPlugin.ts +8 -0
  418. package/src/extensions/KeyboardShortcuts/KeyboardShortcutsExtension.ts +201 -48
  419. package/src/extensions/NodeSelectionKeyboard/NodeSelectionKeyboardPlugin.ts +1 -1
  420. package/src/extensions/Placeholder/PlaceholderPlugin.ts +5 -0
  421. package/src/extensions/SideMenu/SideMenuPlugin.ts +141 -52
  422. package/src/extensions/SideMenu/dragging.ts +3 -54
  423. package/src/extensions/SuggestionMenu/SuggestionPlugin.ts +5 -0
  424. package/src/extensions/SuggestionMenu/getDefaultEmojiPickerItems.ts +2 -1
  425. package/src/extensions/SuggestionMenu/getDefaultSlashMenuItems.ts +22 -6
  426. package/src/extensions/TableHandles/TableHandlesPlugin.ts +225 -120
  427. package/src/extensions/TrailingNode/TrailingNodeExtension.ts +1 -1
  428. package/src/extensions/getDraggableBlockFromElement.ts +19 -0
  429. package/src/i18n/locales/ar.ts +6 -0
  430. package/src/i18n/locales/de.ts +299 -294
  431. package/src/i18n/locales/en.ts +6 -0
  432. package/src/i18n/locales/es.ts +310 -274
  433. package/src/i18n/locales/fr.ts +6 -0
  434. package/src/i18n/locales/is.ts +6 -0
  435. package/src/i18n/locales/ja.ts +6 -0
  436. package/src/i18n/locales/ko.ts +6 -0
  437. package/src/i18n/locales/nl.ts +6 -0
  438. package/src/i18n/locales/pl.ts +6 -0
  439. package/src/i18n/locales/pt.ts +10 -4
  440. package/src/i18n/locales/ru.ts +6 -0
  441. package/src/i18n/locales/vi.ts +6 -0
  442. package/src/i18n/locales/zh.ts +6 -0
  443. package/src/index.ts +9 -0
  444. package/src/pm-nodes/BlockContainer.ts +1 -1
  445. package/src/pm-nodes/BlockGroup.ts +2 -2
  446. package/src/pm-nodes/README.md +127 -28
  447. package/src/schema/blocks/createSpec.ts +4 -1
  448. package/src/schema/blocks/internal.ts +12 -2
  449. package/src/schema/blocks/types.ts +3 -1
  450. package/src/util/combineByGroup.ts +25 -0
  451. package/types/src/api/blockManipulation/commands/mergeBlocks/mergeBlocks.d.ts +22 -2
  452. package/types/src/api/blockManipulation/commands/nestBlock/nestBlock.d.ts +5 -0
  453. package/types/src/api/blockManipulation/setupTestEnv.d.ts +22 -8
  454. package/types/src/api/clipboard/fromClipboard/acceptedMIMETypes.d.ts +1 -1
  455. package/types/src/api/clipboard/fromClipboard/handleVSCodePaste.d.ts +3 -0
  456. package/types/src/api/exporters/html/util/serializeBlocksInternalHTML.d.ts +2 -3
  457. package/types/src/api/getBlockInfoFromPos.d.ts +55 -5
  458. package/types/src/api/nodeConversions/blockToNode.d.ts +1 -1
  459. package/types/src/api/nodeConversions/nodeToBlock.d.ts +3 -1
  460. package/types/src/api/testUtil/cases/customBlocks.d.ts +22 -8
  461. package/types/src/api/testUtil/cases/customInlineContent.d.ts +22 -8
  462. package/types/src/api/testUtil/cases/customStyles.d.ts +22 -8
  463. package/types/src/api/testUtil/partialBlockTestUtil.d.ts +2 -1
  464. package/types/src/blocks/AudioBlockContent/AudioBlockContent.d.ts +1 -0
  465. package/types/src/blocks/CodeBlockContent/CodeBlockContent.d.ts +57 -0
  466. package/types/src/blocks/CodeBlockContent/defaultSupportedLanguages.d.ts +6 -0
  467. package/types/src/blocks/FileBlockContent/fileBlockHelpers.d.ts +1 -0
  468. package/types/src/blocks/ImageBlockContent/ImageBlockContent.d.ts +1 -0
  469. package/types/src/blocks/TableBlockContent/TableBlockContent.d.ts +0 -12
  470. package/types/src/blocks/TableBlockContent/TableExtension.d.ts +3 -0
  471. package/types/src/blocks/VideoBlockContent/VideoBlockContent.d.ts +1 -0
  472. package/types/src/blocks/defaultBlocks.d.ts +45 -16
  473. package/types/src/editor/BlockNoteEditor.d.ts +4 -3
  474. package/types/src/editor/BlockNoteTipTapEditor.d.ts +1 -0
  475. package/types/src/editor/defaultColors.d.ts +76 -0
  476. package/types/src/exporter/Exporter.d.ts +43 -0
  477. package/types/src/exporter/index.d.ts +2 -0
  478. package/types/src/exporter/mapping.d.ts +30 -0
  479. package/types/src/extensions/SideMenu/SideMenuPlugin.d.ts +2 -1
  480. package/types/src/extensions/SideMenu/dragging.d.ts +1 -6
  481. package/types/src/extensions/TableHandles/TableHandlesPlugin.d.ts +9 -5
  482. package/types/src/extensions/getDraggableBlockFromElement.d.ts +5 -0
  483. package/types/src/i18n/locales/de.d.ts +6 -0
  484. package/types/src/i18n/locales/en.d.ts +6 -0
  485. package/types/src/i18n/locales/es.d.ts +6 -0
  486. package/types/src/index.d.ts +6 -0
  487. package/types/src/schema/blocks/createSpec.d.ts +1 -1
  488. package/types/src/schema/blocks/internal.d.ts +2 -2
  489. package/types/src/schema/blocks/types.d.ts +3 -1
  490. package/types/src/util/combineByGroup.d.ts +9 -0
@@ -44,6 +44,12 @@ export const nl: Dictionary = {
44
44
  aliases: ["p", "paragraaf"],
45
45
  group: "Basisblokken",
46
46
  },
47
+ code_block: {
48
+ title: "Codeblok",
49
+ subtext: "Codeblok met syntax highlighting",
50
+ aliases: ["code", "pre"],
51
+ group: "Basisblokken",
52
+ },
47
53
  table: {
48
54
  title: "Tabel",
49
55
  subtext: "Gebruikt voor tabellen",
@@ -44,6 +44,12 @@ export const pl: Dictionary = {
44
44
  aliases: ["p", "akapit"],
45
45
  group: "Podstawowe bloki",
46
46
  },
47
+ code_block: {
48
+ title: "Blok kodu",
49
+ subtext: "Blok kodu z podświetleniem składni",
50
+ aliases: ["kod", "pre"],
51
+ group: "Podstawowe bloki",
52
+ },
47
53
  table: {
48
54
  title: "Tabela",
49
55
  subtext: "Używana do tworzenia tabel",
@@ -24,13 +24,13 @@ export const pt: Dictionary = {
24
24
  title: "Lista Numerada",
25
25
  subtext: "Usado para exibir uma lista numerada",
26
26
  aliases: ["ol", "li", "lista", "listanumerada", "lista numerada"],
27
- group: "Blocos Básicos",
27
+ group: "Blocos básicos",
28
28
  },
29
29
  bullet_list: {
30
30
  title: "Lista com Marcadores",
31
31
  subtext: "Usado para exibir uma lista não ordenada",
32
32
  aliases: ["ul", "li", "lista", "listamarcadores", "lista com marcadores"],
33
- group: "Blocos Básicos",
33
+ group: "Blocos básicos",
34
34
  },
35
35
  check_list: {
36
36
  title: "Lista de verificação",
@@ -43,13 +43,19 @@ export const pt: Dictionary = {
43
43
  "lista marcada",
44
44
  "caixa de seleção",
45
45
  ],
46
- group: "Blocos Básicos",
46
+ group: "Blocos básicos",
47
47
  },
48
48
  paragraph: {
49
49
  title: "Parágrafo",
50
50
  subtext: "Usado para o corpo do seu documento",
51
51
  aliases: ["p", "paragrafo"],
52
- group: "Blocos Básicos",
52
+ group: "Blocos básicos",
53
+ },
54
+ code_block: {
55
+ title: "Bloco de Código",
56
+ subtext: "Usado para exibir código com destaque de sintaxe",
57
+ aliases: ["codigo", "pre"],
58
+ group: "Blocos básicos",
53
59
  },
54
60
  table: {
55
61
  title: "Tabela",
@@ -69,6 +69,12 @@ export const ru: Dictionary = {
69
69
  aliases: ["p", "paragraph", "параграф"],
70
70
  group: "Базовые блоки",
71
71
  },
72
+ code_block: {
73
+ title: "Блок кода",
74
+ subtext: "Блок кода с подсветкой синтаксиса",
75
+ aliases: ["code", "pre", "блок кода"],
76
+ group: "Базовые блоки",
77
+ },
72
78
  table: {
73
79
  title: "Таблица",
74
80
  subtext: "Используется для таблиц",
@@ -51,6 +51,12 @@ export const vi: Dictionary = {
51
51
  aliases: ["p", "doanvan"],
52
52
  group: "Khối cơ bản",
53
53
  },
54
+ code_block: {
55
+ title: "Mã",
56
+ subtext: "Sử dụng để hiển thị mã với cú pháp",
57
+ aliases: ["code", "pre"],
58
+ group: "Khối cơ bản",
59
+ },
54
60
  table: {
55
61
  title: "Bảng",
56
62
  subtext: "Sử dụng để tạo bảng",
@@ -69,6 +69,12 @@ export const zh: Dictionary = {
69
69
  aliases: ["p", "paragraph", "text", "正文"],
70
70
  group: "基础",
71
71
  },
72
+ code_block: {
73
+ title: "代码块",
74
+ subtext: "用于显示带有语法高亮的代码块",
75
+ aliases: ["code", "pre", "代码", "预格式"],
76
+ group: "基础",
77
+ },
72
78
  table: {
73
79
  title: "表格",
74
80
  subtext: "使用表格",
package/src/index.ts CHANGED
@@ -2,13 +2,19 @@ import * as locales from "./i18n/locales/index.js";
2
2
  export * from "./api/exporters/html/externalHTMLExporter.js";
3
3
  export * from "./api/exporters/html/internalHTMLSerializer.js";
4
4
  export * from "./api/getBlockInfoFromPos.js";
5
+ export * from "./api/nodeUtil.js";
5
6
  export * from "./api/testUtil/index.js";
6
7
  export * from "./blocks/AudioBlockContent/AudioBlockContent.js";
8
+ export * from "./blocks/CodeBlockContent/CodeBlockContent.js";
7
9
  export * from "./blocks/FileBlockContent/FileBlockContent.js";
8
10
  export * from "./blocks/FileBlockContent/fileBlockHelpers.js";
9
11
  export * from "./blocks/FileBlockContent/uploadToTmpFilesDotOrg_DEV_ONLY.js";
10
12
  export * from "./blocks/ImageBlockContent/ImageBlockContent.js";
11
13
  export { parseImageElement } from "./blocks/ImageBlockContent/imageBlockHelpers.js";
14
+ export {
15
+ EMPTY_CELL_HEIGHT,
16
+ EMPTY_CELL_WIDTH,
17
+ } from "./blocks/TableBlockContent/TableExtension.js";
12
18
  export * from "./blocks/VideoBlockContent/VideoBlockContent.js";
13
19
  export * from "./blocks/defaultBlockHelpers.js";
14
20
  export * from "./blocks/defaultBlockTypeGuards.js";
@@ -17,7 +23,9 @@ export * from "./blocks/defaultProps.js";
17
23
  export * from "./editor/BlockNoteEditor.js";
18
24
  export * from "./editor/BlockNoteExtensions.js";
19
25
  export * from "./editor/BlockNoteSchema.js";
26
+ export * from "./editor/defaultColors.js";
20
27
  export * from "./editor/selectionTypes.js";
28
+ export * from "./exporter/index.js";
21
29
  export * from "./extensions-shared/UiElementPosition.js";
22
30
  export * from "./extensions/FilePanel/FilePanelPlugin.js";
23
31
  export * from "./extensions/FormattingToolbar/FormattingToolbarPlugin.js";
@@ -32,6 +40,7 @@ export * from "./extensions/TableHandles/TableHandlesPlugin.js";
32
40
  export * from "./i18n/dictionary.js";
33
41
  export * from "./schema/index.js";
34
42
  export * from "./util/browser.js";
43
+ export * from "./util/combineByGroup.js";
35
44
  export * from "./util/esmDependencies.js";
36
45
  export * from "./util/string.js";
37
46
  export * from "./util/typescript.js";
@@ -21,7 +21,7 @@ export const BlockContainer = Node.create<{
21
21
  editor: BlockNoteEditor<any, any, any>;
22
22
  }>({
23
23
  name: "blockContainer",
24
- group: "blockContainer",
24
+ group: "blockGroupChild bnBlock",
25
25
  // A block always contains content, and optionally a blockGroup which contains nested blocks
26
26
  content: "blockContent blockGroup?",
27
27
  // Ensures content-specific keyboard handlers trigger first.
@@ -6,8 +6,8 @@ export const BlockGroup = Node.create<{
6
6
  domAttributes?: BlockNoteDOMAttributes;
7
7
  }>({
8
8
  name: "blockGroup",
9
- group: "blockGroup",
10
- content: "blockContainer+",
9
+ group: "childContainer",
10
+ content: "blockGroupChild+",
11
11
 
12
12
  parseHTML() {
13
13
  return [
@@ -2,41 +2,140 @@
2
2
 
3
3
  Defines the prosemirror nodes and base node structure. See below:
4
4
 
5
+ # Block structure
6
+
7
+ In the BlockNote API, recall that blocks look like this:
8
+
9
+ ```typescript
10
+ {
11
+ id: string;
12
+ type: string;
13
+ children: Block[];
14
+ content: InlineContent[] | undefined;
15
+ props: Record<string, any>;
16
+ }
17
+ ```
18
+
19
+ `children` describes child blocks that have their own `id` and also map to a `Block` type. Most of the cases these are nested blocks, but they can also be blocks within a `column` or `columnList`.
20
+
21
+ `content` is the block's Inline Content. Inline content doesn't have any `id`, it's "loose" content within the node.
22
+
23
+ This is a bit different from the Prosemirror structure we use internally. This document describes the Prosemirror schema architecture.
5
24
 
6
25
  # Node structure
7
26
 
8
- We use a Prosemirror document structure where every element is a `block` with 1 `content` element and one optional group of children (`blockgroup`).
27
+ ## BlockGroup
28
+
29
+ ```typescript
30
+ name: "blockGroup",
31
+ group: "childContainer",
32
+ content: "blockGroupChild+"
33
+ ```
34
+
35
+ A `blockGroup` is a container node that can contain multiple Blocks. It is used as:
36
+
37
+ - The root node of the Prosemirror document
38
+ - When a block has nested children, they are wrapped in a `blockGroup`
39
+
40
+ ## BlockContainer
41
+
42
+ ```typescript
43
+ name: "blockContainer",
44
+ group: "blockGroupChild bnBlock",
45
+ // A block always contains content, and optionally a blockGroup which contains nested blocks
46
+ content: "blockContent blockGroup?",
47
+ ```
48
+
49
+ A `blockContainer` is a container node that always contains a `blockContent` node, and optionally a `blockGroup` node (for nested children). It is used as the wrapper for most blocks. This structure makes it possible to nest blocks within blocks.
50
+
51
+ ### BlockContent (group)
52
+
53
+ Example:
9
54
 
10
- - A `block` can only appear in a `blockgroup` (which is also the type of the root node)
11
- - Every `block` element can have attributes (e.g.: is it a heading or a list item)
12
- - Every `block` element can contain a `blockgroup` as second child. In this case the `blockgroup` is considered nested (indented in the UX)
55
+ ```typescript
56
+ name: "paragraph", // name corresponds to the block type in the BlockNote API
57
+ content: "inline*", // can also be no content (for image blocks)
58
+ group: "blockContent",
59
+ ```
60
+
61
+ Blocks that are part of the `blockContent` group define the appearance / behaviour of the main element of the block (i.e.: headings, paragraphs, list items, etc.).
62
+ These are only used for "regular" blocks that are represented as `blockContainer` nodes.
63
+
64
+ ## Multi-column
65
+
66
+ The `multi-column` package makes it possible to order blocks side by side in
67
+ columns. It adds the `columnList` and `column` nodes to the schema.
68
+
69
+ ### ColumnList
70
+
71
+ ```typescript
72
+ name: "columnList",
73
+ group: "childContainer bnBlock blockGroupChild",
74
+ // A block always contains content, and optionally a blockGroup which contains nested blocks
75
+ content: "column column+", // min two columns
76
+ ```
77
+
78
+ The column list contains 2 or more columns.
13
79
 
14
- This architecture is different from the "default" Prosemirror / Tiptap implementation which would use more semantic HTML node types (`p`, `li`, etc.). We have designed this block structure instead to more easily:
80
+ ### Column
15
81
 
16
- - support indentation of any node (without complex wrapping logic)
17
- - supporting animations (nodes stay the same type, only attrs are changed)
82
+ ```typescript
83
+ name: "column",
84
+ group: "bnBlock childContainer",
85
+ // A block always contains content, and optionally a blockGroup which contains nested blocks
86
+ content: "blockContainer+",
87
+ ```
88
+
89
+ The column contains 1 or more block containers.
90
+
91
+ # Groups
92
+
93
+ We use Prosemirror "groups" to help organize this schema. Here is a list of the different groups:
18
94
 
19
- ## Example
95
+ - `blockContent`: described above (contain the content for blocks that are represented as `BlockContainer` nodes)
96
+ - `blockGroupChild`: anything that is allowed inside a `blockGroup`. In practice, `blockContainer` and `columnList`
97
+ - `childContainer`: think of this as the container node that can hold nodes corresponding to `block.children` in the BlockNote API. So for regular blocks, this is the `BlockGroup`, but for columns, both `columnList` and `column` are considered to be `childContainer` nodes.
98
+ - `bnBlock`: think of this as the node that directly maps to a `Block` in the BlockNote API. For example, this node will store the `id`. Both `blockContainer`, `column` and `columnList` are part of this group.
99
+
100
+ _Note that the last two groups, `bnBlock` and `childContainer`, are not used anywhere in the schema. They are however helpful while programming. For example, we can check whether a node is a `bnBlock`, and then we know it corresponds to a BlockNote Block. Or, we can check whether a node is a `childContainer`, and then we know it's a container of a BlockNote Block's `children`. See `getBlockInfoFromPos` for an example of how this is used._
101
+
102
+ ## Example document
20
103
 
21
104
  ```xml
22
- <blockgroup>
23
- <block>
24
- <content>Parent element 1</content>
25
- <blockgroup>
26
- <block>
27
- <content>Nested / child / indented item</content>
28
- </block>
29
- </blockgroup>
30
- </block>
31
- <block>
32
- <content>Parent element 2</content>
33
- <blockgroup>
34
- <block>...</block>
35
- <block>...</block>
36
- </blockgroup>
37
- </block>
38
- <block>
39
- <content>Element 3 without children</content>
40
- </block>
41
- </blockgroup>
105
+ <blockGroup>
106
+ <blockContaine id="0">
107
+ <blockContent>Parent element 1</blockContent>
108
+ <blockGroup>
109
+ <blockContainer id="1">
110
+ <blockContent>Nested / child / indented item</blockContent>
111
+ </blockContainer>
112
+ </blockGroup>
113
+ </blockContainer>
114
+ <blockContainer id="2">
115
+ <blockContent>Parent element 2</blockContent>
116
+ <blockGroup>
117
+ <blockContainer id="3">...</blockContainer>
118
+ <blockContainer id="4">...</blockContainer>
119
+ </blockGroup>
120
+ </blockContainer>
121
+ <blockContainer id="5">
122
+ <blockContent>Element 3 without children</blockContent>
123
+ </blockContainer>
124
+ <columnList id="6">
125
+ <column id="7">
126
+ <blockContainer id="8">
127
+ <blockContent>Column 1</blockContent>
128
+ </blockContainer>
129
+ </column>
130
+ <column id="9">
131
+ <blockContainer id="10">
132
+ <blockContent>Column 2</blockContent>
133
+ </blockContainer>
134
+ </column>
135
+ </columnList>
136
+ </blockGroup>
42
137
  ```
138
+
139
+ ## Tables
140
+
141
+ Tables are implemented a special type of blockContent node. The rows and columns are stored in the `content` fields, not in the `children`. This is because children of tables (rows / columns / cells) are not considered to be blocks (they don't have an id, for example).
@@ -137,7 +137,10 @@ export function createBlockSpec<
137
137
  T extends CustomBlockConfig,
138
138
  I extends InlineContentSchema,
139
139
  S extends StyleSchema
140
- >(blockConfig: T, blockImplementation: CustomBlockImplementation<T, I, S>) {
140
+ >(
141
+ blockConfig: T,
142
+ blockImplementation: CustomBlockImplementation<NoInfer<T>, I, S>
143
+ ) {
141
144
  const node = createStronglyTypedTiptapNode({
142
145
  name: blockConfig.type as T["type"],
143
146
  content: (blockConfig.content === "inline"
@@ -201,12 +201,22 @@ export function wrapInBlockStructure<
201
201
  // Helper type to keep track of the `name` and `content` properties after calling Node.create.
202
202
  type StronglyTypedTipTapNode<
203
203
  Name extends string,
204
- Content extends "inline*" | "tableRow+" | ""
204
+ Content extends
205
+ | "inline*"
206
+ | "tableRow+"
207
+ | "blockContainer+"
208
+ | "column column+"
209
+ | ""
205
210
  > = Node & { name: Name; config: { content: Content } };
206
211
 
207
212
  export function createStronglyTypedTiptapNode<
208
213
  Name extends string,
209
- Content extends "inline*" | "tableRow+" | ""
214
+ Content extends
215
+ | "inline*"
216
+ | "tableRow+"
217
+ | "blockContainer+"
218
+ | "column column+"
219
+ | ""
210
220
  >(config: NodeConfig & { name: Name; content: Content }) {
211
221
  return Node.create(config) as StronglyTypedTipTapNode<Name, Content>; // force re-typing (should be safe as it's type-checked from the config)
212
222
  }
@@ -104,7 +104,7 @@ export type BlockSpec<
104
104
  S extends StyleSchema
105
105
  > = {
106
106
  config: T;
107
- implementation: TiptapBlockImplementation<T, B, I, S>;
107
+ implementation: TiptapBlockImplementation<NoInfer<T>, B, I, S>;
108
108
  };
109
109
 
110
110
  // Utility type. For a given object block schema, ensures that the key of each
@@ -149,6 +149,7 @@ export type TableContent<
149
149
  S extends StyleSchema = StyleSchema
150
150
  > = {
151
151
  type: "tableContent";
152
+ columnWidths: (number | undefined)[];
152
153
  rows: {
153
154
  cells: InlineContent<I, S>[][];
154
155
  }[];
@@ -224,6 +225,7 @@ export type PartialTableContent<
224
225
  S extends StyleSchema = StyleSchema
225
226
  > = {
226
227
  type: "tableContent";
228
+ columnWidths?: (number | undefined)[];
227
229
  rows: {
228
230
  cells: PartialInlineContent<I, S>[];
229
231
  }[];
@@ -0,0 +1,25 @@
1
+ /**
2
+ * Combines items by group. This can be used to combine multiple slash menu item arrays,
3
+ * while making sure that items from the same group are adjacent to each other.
4
+ */
5
+ export function combineByGroup<T extends { group?: string }>(
6
+ items: T[],
7
+ ...additionalItemsArray: {
8
+ group?: string;
9
+ }[][]
10
+ ) {
11
+ const combinedItems = [...items];
12
+ for (const additionalItems of additionalItemsArray) {
13
+ for (const additionalItem of additionalItems) {
14
+ const lastItemWithSameGroup = combinedItems.findLastIndex(
15
+ (item) => item.group === additionalItem.group
16
+ );
17
+ if (lastItemWithSameGroup === -1) {
18
+ combinedItems.push(additionalItem as T);
19
+ } else {
20
+ combinedItems.splice(lastItemWithSameGroup + 1, 0, additionalItem as T);
21
+ }
22
+ }
23
+ }
24
+ return combinedItems;
25
+ }
@@ -1,6 +1,26 @@
1
- import { Node, ResolvedPos } from "prosemirror-model";
1
+ import { Node } from "prosemirror-model";
2
2
  import { EditorState } from "prosemirror-state";
3
- export declare const getPrevBlockPos: (doc: Node, $nextBlockPos: ResolvedPos) => ResolvedPos;
3
+ import { BlockInfo } from "../../../getBlockInfoFromPos.js";
4
+ /**
5
+ * Returns the block info from the parent block
6
+ * or undefined if we're at the root
7
+ */
8
+ export declare const getParentBlockInfo: (doc: Node, beforePos: number) => BlockInfo | undefined;
9
+ /**
10
+ * Returns the block info from the sibling block before (above) the given block,
11
+ * or undefined if the given block is the first sibling.
12
+ */
13
+ export declare const getPrevBlockInfo: (doc: Node, beforePos: number) => BlockInfo | undefined;
14
+ /**
15
+ * If a block has children like this:
16
+ * A
17
+ * - B
18
+ * - C
19
+ * -- D
20
+ *
21
+ * Then the bottom nested block returned is D.
22
+ */
23
+ export declare const getBottomNestedBlockInfo: (doc: Node, blockInfo: BlockInfo) => BlockInfo;
4
24
  export declare const mergeBlocksCommand: (posBetweenBlocks: number) => ({ state, dispatch, }: {
5
25
  state: EditorState;
6
26
  dispatch: ((args?: any) => any) | undefined;
@@ -0,0 +1,5 @@
1
+ import { BlockNoteEditor } from "../../../../editor/BlockNoteEditor.js";
2
+ export declare function nestBlock(editor: BlockNoteEditor<any, any, any>): boolean;
3
+ export declare function unnestBlock(editor: BlockNoteEditor<any, any, any>): void;
4
+ export declare function canNestBlock(editor: BlockNoteEditor<any, any, any>): boolean;
5
+ export declare function canUnnestBlock(editor: BlockNoteEditor<any, any, any>): boolean;
@@ -76,6 +76,28 @@ export declare function setupTestEnv(): () => BlockNoteEditor<import("../../inde
76
76
  };
77
77
  }, any, import("../../index.js").InlineContentSchema, import("../../index.js").StyleSchema>;
78
78
  };
79
+ codeBlock: {
80
+ config: {
81
+ type: "codeBlock";
82
+ content: "inline";
83
+ propSchema: {
84
+ language: {
85
+ default: string;
86
+ values: string[];
87
+ };
88
+ };
89
+ };
90
+ implementation: import("../../index.js").TiptapBlockImplementation<{
91
+ type: "codeBlock";
92
+ content: "inline";
93
+ propSchema: {
94
+ language: {
95
+ default: string;
96
+ values: string[];
97
+ };
98
+ };
99
+ }, any, import("../../index.js").InlineContentSchema, import("../../index.js").StyleSchema>;
100
+ };
79
101
  bulletListItem: {
80
102
  config: {
81
103
  type: "bulletListItem";
@@ -195,10 +217,6 @@ export declare function setupTestEnv(): () => BlockNoteEditor<import("../../inde
195
217
  textColor: {
196
218
  default: "default";
197
219
  };
198
- textAlignment: {
199
- default: "left";
200
- values: readonly ["left", "center", "right", "justify"];
201
- };
202
220
  };
203
221
  };
204
222
  implementation: import("../../index.js").TiptapBlockImplementation<{
@@ -211,10 +229,6 @@ export declare function setupTestEnv(): () => BlockNoteEditor<import("../../inde
211
229
  textColor: {
212
230
  default: "default";
213
231
  };
214
- textAlignment: {
215
- default: "left";
216
- values: readonly ["left", "center", "right", "justify"];
217
- };
218
232
  };
219
233
  }, any, import("../../index.js").InlineContentSchema, import("../../index.js").StyleSchema>;
220
234
  };
@@ -1 +1 @@
1
- export declare const acceptedMIMETypes: readonly ["blocknote/html", "Files", "text/html", "text/plain"];
1
+ export declare const acceptedMIMETypes: readonly ["vscode-editor-data", "blocknote/html", "Files", "text/html", "text/plain"];
@@ -0,0 +1,3 @@
1
+ import { BlockNoteEditor } from "../../../editor/BlockNoteEditor.js";
2
+ import { BlockSchema, InlineContentSchema, StyleSchema } from "../../../schema/index.js";
3
+ export declare function handleVSCodePaste<BSchema extends BlockSchema, I extends InlineContentSchema, S extends StyleSchema>(event: ClipboardEvent, editor: BlockNoteEditor<BSchema, I, S>): Promise<boolean>;
@@ -2,10 +2,9 @@ import { DOMSerializer } from "prosemirror-model";
2
2
  import { PartialBlock } from "../../../../blocks/defaultBlocks.js";
3
3
  import type { BlockNoteEditor } from "../../../../editor/BlockNoteEditor.js";
4
4
  import { BlockSchema, InlineContentSchema, StyleSchema } from "../../../../schema/index.js";
5
- export declare function serializeInlineContentInternalHTML<BSchema extends BlockSchema, I extends InlineContentSchema, S extends StyleSchema>(editor: BlockNoteEditor<any, I, S>, blockContent: PartialBlock<BSchema, I, S>["content"], serializer: DOMSerializer, _toExternalHTML: boolean, // TODO, externalHTML for IC
6
- options?: {
5
+ export declare function serializeInlineContentInternalHTML<BSchema extends BlockSchema, I extends InlineContentSchema, S extends StyleSchema>(editor: BlockNoteEditor<any, I, S>, blockContent: PartialBlock<BSchema, I, S>["content"], serializer: DOMSerializer, options?: {
7
6
  document?: Document;
8
7
  }): HTMLElement | DocumentFragment;
9
- export declare const serializeBlocksInternalHTML: <BSchema extends Record<string, import("../../../../schema/index.js").BlockConfig>, I extends InlineContentSchema, S extends StyleSchema>(editor: BlockNoteEditor<BSchema, I, S>, blocks: PartialBlock<BSchema, I, S>[], serializer: DOMSerializer, toExternalHTML: boolean, options?: {
8
+ export declare const serializeBlocksInternalHTML: <BSchema extends Record<string, import("../../../../schema/index.js").BlockConfig>, I extends InlineContentSchema, S extends StyleSchema>(editor: BlockNoteEditor<BSchema, I, S>, blocks: PartialBlock<BSchema, I, S>[], serializer: DOMSerializer, options?: {
10
9
  document?: Document;
11
10
  }) => HTMLElement;
@@ -6,10 +6,36 @@ type SingleBlockInfo = {
6
6
  afterPos: number;
7
7
  };
8
8
  export type BlockInfo = {
9
- blockContainer: SingleBlockInfo;
9
+ /**
10
+ * The outer node that represents a BlockNote block. This is the node that has the ID.
11
+ * Most of the time, this will be a blockContainer node, but it could also be a Column or ColumnList
12
+ */
13
+ bnBlock: SingleBlockInfo;
14
+ /**
15
+ * The type of BlockNote block that this node represents.
16
+ * When dealing with a blockContainer, this is retrieved from the blockContent node, otherwise it's retrieved from the bnBlock node.
17
+ */
18
+ blockNoteType: string;
19
+ } & ({
20
+ /**
21
+ * The Prosemirror node that holds block.children. For non-blockContainer, this node will be the same as bnBlock.
22
+ */
23
+ childContainer: SingleBlockInfo;
24
+ isBlockContainer: false;
25
+ } | {
26
+ /**
27
+ * The Prosemirror node that holds block.children. For blockContainers, this is the blockGroup node, if it exists.
28
+ */
29
+ childContainer?: SingleBlockInfo;
30
+ /**
31
+ * The Prosemirror node that wraps block.content and has most of the props
32
+ */
10
33
  blockContent: SingleBlockInfo;
11
- blockGroup?: SingleBlockInfo;
12
- };
34
+ /**
35
+ * Whether bnBlock is a blockContainer node
36
+ */
37
+ isBlockContainer: true;
38
+ });
13
39
  /**
14
40
  * Retrieves the position just before the nearest blockContainer node in a
15
41
  * ProseMirror doc, relative to a position. If the position is within a
@@ -37,7 +63,7 @@ export declare function getNearestBlockContainerPos(doc: Node, pos: number): {
37
63
  * @param blockContainerBeforePosOffset the position just before the
38
64
  * `blockContainer` node in the document.
39
65
  */
40
- export declare function getBlockInfoWithManualOffset(node: Node, blockContainerBeforePosOffset: number): BlockInfo;
66
+ export declare function getBlockInfoWithManualOffset(node: Node, bnBlockBeforePosOffset: number): BlockInfo;
41
67
  /**
42
68
  * Gets information regarding the ProseMirror nodes that make up a block in a
43
69
  * BlockNote document. This includes the main `blockContainer` node, the
@@ -66,5 +92,29 @@ export declare function getBlockInfoFromResolvedPos(resolvedPos: ResolvedPos): B
66
92
  * selection.
67
93
  * @param state The ProseMirror editor state.
68
94
  */
69
- export declare function getBlockInfoFromSelection(state: EditorState): BlockInfo;
95
+ export declare function getBlockInfoFromSelection(state: EditorState): {
96
+ /**
97
+ * The outer node that represents a BlockNote block. This is the node that has the ID.
98
+ * Most of the time, this will be a blockContainer node, but it could also be a Column or ColumnList
99
+ */
100
+ bnBlock: SingleBlockInfo;
101
+ /**
102
+ * The type of BlockNote block that this node represents.
103
+ * When dealing with a blockContainer, this is retrieved from the blockContent node, otherwise it's retrieved from the bnBlock node.
104
+ */
105
+ blockNoteType: string;
106
+ } & {
107
+ /**
108
+ * The Prosemirror node that holds block.children. For blockContainers, this is the blockGroup node, if it exists.
109
+ */
110
+ childContainer?: SingleBlockInfo | undefined;
111
+ /**
112
+ * The Prosemirror node that wraps block.content and has most of the props
113
+ */
114
+ blockContent: SingleBlockInfo;
115
+ /**
116
+ * Whether bnBlock is a blockContainer node
117
+ */
118
+ isBlockContainer: true;
119
+ };
70
120
  export {};
@@ -10,6 +10,6 @@ export declare function inlineContentToNodes<I extends InlineContentSchema, S ex
10
10
  */
11
11
  export declare function tableContentToNodes<I extends InlineContentSchema, S extends StyleSchema>(tableContent: PartialTableContent<I, S>, schema: Schema, styleSchema: StyleSchema): Node[];
12
12
  /**
13
- * Converts a BlockNote block to a TipTap node.
13
+ * Converts a BlockNote block to a Prosemirror node.
14
14
  */
15
15
  export declare function blockToNode(block: PartialBlock<any, any, any>, schema: Schema, styleSchema: StyleSchema): Node;
@@ -11,6 +11,8 @@ export declare function contentNodeToTableContent<I extends InlineContentSchema,
11
11
  export declare function contentNodeToInlineContent<I extends InlineContentSchema, S extends StyleSchema>(contentNode: Node, inlineContentSchema: I, styleSchema: S): InlineContent<I, S>[];
12
12
  export declare function nodeToCustomInlineContent<I extends InlineContentSchema, S extends StyleSchema>(node: Node, inlineContentSchema: I, styleSchema: S): InlineContent<I, S>;
13
13
  /**
14
- * Convert a TipTap node to a BlockNote block.
14
+ * Convert a Prosemirror node to a BlockNote block.
15
+ *
16
+ * TODO: test changes
15
17
  */
16
18
  export declare function nodeToBlock<BSchema extends BlockSchema, I extends InlineContentSchema, S extends StyleSchema>(node: Node, blockSchema: BSchema, inlineContentSchema: I, styleSchema: S, blockCache?: WeakMap<Node, Block<BSchema, I, S>>): Block<BSchema, I, S>;