@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
@@ -0,0 +1,70 @@
1
+ import { createBlockSpec, } from "../../schema/index.js";
2
+ import { defaultProps } from "../defaultProps.js";
3
+ import { createDefaultFilePreview, createFileAndCaptionWrapper, createFileBlockWrapper, createLinkWithCaption, parseEmbedElement, parseFigureElement, } from "./fileBlockHelpers.js";
4
+ export const filePropSchema = {
5
+ backgroundColor: defaultProps.backgroundColor,
6
+ // File name.
7
+ name: {
8
+ default: "",
9
+ },
10
+ // File url.
11
+ url: {
12
+ default: "",
13
+ },
14
+ // File caption.
15
+ caption: {
16
+ default: "",
17
+ },
18
+ };
19
+ export const fileBlockConfig = {
20
+ type: "file",
21
+ propSchema: filePropSchema,
22
+ content: "none",
23
+ isFileBlock: true,
24
+ };
25
+ export const fileRender = (block, editor) => {
26
+ const file = createDefaultFilePreview(block).dom;
27
+ const element = createFileAndCaptionWrapper(block, file);
28
+ return createFileBlockWrapper(block, editor, element);
29
+ };
30
+ export const fileParse = (element) => {
31
+ if (element.tagName === "EMBED") {
32
+ return parseEmbedElement(element);
33
+ }
34
+ if (element.tagName === "FIGURE") {
35
+ const parsedFigure = parseFigureElement(element, "embed");
36
+ if (!parsedFigure) {
37
+ return undefined;
38
+ }
39
+ const { targetElement, caption } = parsedFigure;
40
+ return {
41
+ ...parseEmbedElement(targetElement),
42
+ caption,
43
+ };
44
+ }
45
+ return undefined;
46
+ };
47
+ export const fileToExternalHTML = (block) => {
48
+ if (!block.props.url) {
49
+ const div = document.createElement("p");
50
+ div.textContent = "Add file";
51
+ return {
52
+ dom: div,
53
+ };
54
+ }
55
+ const fileSrcLink = document.createElement("a");
56
+ fileSrcLink.href = block.props.url;
57
+ fileSrcLink.textContent = block.props.name || block.props.url;
58
+ if (block.props.caption) {
59
+ return createLinkWithCaption(fileSrcLink, block.props.caption);
60
+ }
61
+ return {
62
+ dom: fileSrcLink,
63
+ };
64
+ };
65
+ export const FileBlock = createBlockSpec(fileBlockConfig, {
66
+ render: fileRender,
67
+ parse: fileParse,
68
+ toExternalHTML: fileToExternalHTML,
69
+ });
70
+ //# sourceMappingURL=FileBlockContent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FileBlockContent.js","sourceRoot":"","sources":["../../../../src/blocks/FileBlockContent/FileBlockContent.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,317 @@
1
+ export const FILE_ICON_SVG = `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor"><path d="M3 8L9.00319 2H19.9978C20.5513 2 21 2.45531 21 2.9918V21.0082C21 21.556 20.5551 22 20.0066 22H3.9934C3.44476 22 3 21.5501 3 20.9932V8ZM10 4V9H5V20H19V4H10Z"></path></svg>`;
2
+ export const createFileBlockWrapper = (block, editor,
3
+ // TODO: Maybe make optional for default preview
4
+ element, buttonText, buttonIcon) => {
5
+ const wrapper = document.createElement("div");
6
+ wrapper.className = "bn-file-block-content-wrapper";
7
+ if (block.props.url === "") {
8
+ const addFileButton = createAddFileButton(block, editor, buttonText, buttonIcon);
9
+ wrapper.appendChild(addFileButton.dom);
10
+ const loading = document.createElement("div");
11
+ loading.className = "bn-file-loading-preview";
12
+ loading.textContent = "Loading...";
13
+ const destroyUploadStartHandler = editor.onUploadStart((blockId) => {
14
+ if (blockId === block.id) {
15
+ wrapper.removeChild(addFileButton.dom);
16
+ wrapper.appendChild(loading);
17
+ }
18
+ });
19
+ const destroyUploadEndHandler = editor.onUploadEnd((blockId) => {
20
+ if (blockId === block.id) {
21
+ wrapper.removeChild(loading);
22
+ wrapper.appendChild(addFileButton.dom);
23
+ }
24
+ });
25
+ return {
26
+ dom: wrapper,
27
+ destroy: () => {
28
+ addFileButton.destroy?.();
29
+ destroyUploadStartHandler();
30
+ destroyUploadEndHandler();
31
+ },
32
+ };
33
+ }
34
+ else if (block.props.showPreview === false) {
35
+ // TODO: Not using the wrapper element here?
36
+ const file = createDefaultFilePreview(block).dom;
37
+ const element = createFileAndCaptionWrapper(block, file);
38
+ return {
39
+ dom: element.dom,
40
+ };
41
+ }
42
+ else {
43
+ wrapper.appendChild(element.dom);
44
+ return {
45
+ dom: wrapper,
46
+ destroy: element.destroy,
47
+ };
48
+ }
49
+ };
50
+ // Default file preview, displaying a file icon and file name.
51
+ export const createDefaultFilePreview = (block) => {
52
+ const file = document.createElement("div");
53
+ file.className = "bn-file-default-preview";
54
+ const icon = document.createElement("div");
55
+ icon.className = "bn-file-default-preview-icon";
56
+ icon.innerHTML = FILE_ICON_SVG;
57
+ const fileName = document.createElement("p");
58
+ fileName.className = "bn-file-default-preview-name";
59
+ fileName.textContent = block.props.name || "";
60
+ file.appendChild(icon);
61
+ file.appendChild(fileName);
62
+ return {
63
+ dom: file,
64
+ };
65
+ };
66
+ // Wrapper element containing file preview and caption.
67
+ export const createFileAndCaptionWrapper = (block, file) => {
68
+ const fileAndCaptionWrapper = document.createElement("div");
69
+ fileAndCaptionWrapper.className = "bn-file-and-caption-wrapper";
70
+ const caption = document.createElement("p");
71
+ caption.className = "bn-file-caption";
72
+ caption.textContent = block.props.caption;
73
+ if (typeof block.props.previewWidth === "number" &&
74
+ block.props.previewWidth > 0 &&
75
+ block.props.caption !== undefined) {
76
+ caption.style.width = `${block.props.previewWidth}px`;
77
+ }
78
+ fileAndCaptionWrapper.appendChild(file);
79
+ fileAndCaptionWrapper.appendChild(caption);
80
+ return {
81
+ dom: fileAndCaptionWrapper,
82
+ };
83
+ };
84
+ // Button element that acts as a placeholder for files with no src.
85
+ export const createAddFileButton = (block, editor, buttonText, buttonIcon) => {
86
+ const addFileButton = document.createElement("div");
87
+ addFileButton.className = "bn-add-file-button";
88
+ const addFileButtonIcon = document.createElement("div");
89
+ addFileButtonIcon.className = "bn-add-file-button-icon";
90
+ if (buttonIcon) {
91
+ addFileButtonIcon.appendChild(buttonIcon);
92
+ }
93
+ else {
94
+ addFileButtonIcon.innerHTML =
95
+ '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor"><path d="M3 8L9.00319 2H19.9978C20.5513 2 21 2.45531 21 2.9918V21.0082C21 21.556 20.5551 22 20.0066 22H3.9934C3.44476 22 3 21.5501 3 20.9932V8ZM10 4V9H5V20H19V4H10Z"></path></svg>';
96
+ }
97
+ const addFileButtonText = document.createElement("p");
98
+ addFileButtonText.className = "bn-add-file-button-text";
99
+ addFileButtonText.innerHTML =
100
+ buttonText || editor.dictionary.file_blocks.file.add_button_text;
101
+ // Prevents focus from moving to the button.
102
+ const addFileButtonMouseDownHandler = (event) => {
103
+ event.preventDefault();
104
+ };
105
+ // Opens the file toolbar.
106
+ const addFileButtonClickHandler = () => {
107
+ editor.dispatch(editor._tiptapEditor.state.tr.setMeta(editor.filePanel.plugin, {
108
+ block: block,
109
+ }));
110
+ };
111
+ addFileButton.appendChild(addFileButtonIcon);
112
+ addFileButton.appendChild(addFileButtonText);
113
+ addFileButton.addEventListener("mousedown", addFileButtonMouseDownHandler, true);
114
+ addFileButton.addEventListener("click", addFileButtonClickHandler, true);
115
+ return {
116
+ dom: addFileButton,
117
+ destroy: () => {
118
+ addFileButton.removeEventListener("mousedown", addFileButtonMouseDownHandler, true);
119
+ addFileButton.removeEventListener("click", addFileButtonClickHandler, true);
120
+ },
121
+ };
122
+ };
123
+ export const parseEmbedElement = (embedElement) => {
124
+ const url = embedElement.src || undefined;
125
+ return { url };
126
+ };
127
+ export const parseFigureElement = (figureElement, targetTag) => {
128
+ const targetElement = figureElement.querySelector(targetTag);
129
+ if (!targetElement) {
130
+ return undefined;
131
+ }
132
+ const captionElement = figureElement.querySelector("figcaption");
133
+ const caption = captionElement?.textContent ?? undefined;
134
+ return { targetElement, caption };
135
+ };
136
+ // Wrapper figure element to display file link with caption. Used for external
137
+ // HTML
138
+ export const createLinkWithCaption = (element, caption) => {
139
+ const wrapper = document.createElement("div");
140
+ const fileCaption = document.createElement("p");
141
+ fileCaption.textContent = caption;
142
+ wrapper.appendChild(element);
143
+ wrapper.appendChild(fileCaption);
144
+ return {
145
+ dom: wrapper,
146
+ };
147
+ };
148
+ // Wrapper figure element to display file preview with caption. Used for
149
+ // external HTML.
150
+ export const createFigureWithCaption = (element, caption) => {
151
+ const figure = document.createElement("figure");
152
+ const captionElement = document.createElement("figcaption");
153
+ captionElement.textContent = caption;
154
+ figure.appendChild(element);
155
+ figure.appendChild(captionElement);
156
+ return { dom: figure };
157
+ };
158
+ // Wrapper element which adds resize handles & logic for visual media file
159
+ // previews.
160
+ export const createResizeHandlesWrapper = (block, editor, element, getWidth, setWidth) => {
161
+ if (!block.props.previewWidth) {
162
+ throw new Error("Block must have a `previewWidth` prop.");
163
+ }
164
+ // Wrapper element for rendered element and resize handles.
165
+ const wrapper = document.createElement("div");
166
+ wrapper.className = "bn-visual-media-wrapper";
167
+ // Resize handle elements.
168
+ const leftResizeHandle = document.createElement("div");
169
+ leftResizeHandle.className = "bn-visual-media-resize-handle";
170
+ leftResizeHandle.style.left = "4px";
171
+ const rightResizeHandle = document.createElement("div");
172
+ rightResizeHandle.className = "bn-visual-media-resize-handle";
173
+ rightResizeHandle.style.right = "4px";
174
+ // Temporary parameters set when the user begins resizing the element, used to
175
+ // calculate the new width of the element.
176
+ let resizeParams;
177
+ // Updates the element width with an updated width depending on the cursor X
178
+ // offset from when the resize began, and which resize handle is being used.
179
+ const windowMouseMoveHandler = (event) => {
180
+ if (!resizeParams) {
181
+ if (!editor.isEditable &&
182
+ wrapper.contains(leftResizeHandle) &&
183
+ wrapper.contains(rightResizeHandle)) {
184
+ wrapper.removeChild(leftResizeHandle);
185
+ wrapper.removeChild(rightResizeHandle);
186
+ }
187
+ return;
188
+ }
189
+ let newWidth;
190
+ if (block.props.textAlignment === "center") {
191
+ if (resizeParams.handleUsed === "left") {
192
+ newWidth =
193
+ resizeParams.initialWidth +
194
+ (resizeParams.initialClientX - event.clientX) * 2;
195
+ }
196
+ else {
197
+ newWidth =
198
+ resizeParams.initialWidth +
199
+ (event.clientX - resizeParams.initialClientX) * 2;
200
+ }
201
+ }
202
+ else {
203
+ if (resizeParams.handleUsed === "left") {
204
+ newWidth =
205
+ resizeParams.initialWidth +
206
+ resizeParams.initialClientX -
207
+ event.clientX;
208
+ }
209
+ else {
210
+ newWidth =
211
+ resizeParams.initialWidth +
212
+ event.clientX -
213
+ resizeParams.initialClientX;
214
+ }
215
+ }
216
+ // Min element width in px.
217
+ const minWidth = 64;
218
+ // Ensures the element is not wider than the editor and not smaller than a
219
+ // predetermined minimum width.
220
+ if (newWidth < minWidth) {
221
+ setWidth(minWidth);
222
+ }
223
+ else if (newWidth > editor.domElement.firstElementChild.clientWidth) {
224
+ setWidth(editor.domElement.firstElementChild.clientWidth);
225
+ }
226
+ else {
227
+ setWidth(newWidth);
228
+ }
229
+ };
230
+ // Stops mouse movements from resizing the element and updates the block's
231
+ // `width` prop to the new value.
232
+ const windowMouseUpHandler = (event) => {
233
+ // Hides the drag handles if the cursor is no longer over the element.
234
+ if ((!event.target ||
235
+ !wrapper.contains(event.target) ||
236
+ !editor.isEditable) &&
237
+ wrapper.contains(leftResizeHandle) &&
238
+ wrapper.contains(rightResizeHandle)) {
239
+ wrapper.removeChild(leftResizeHandle);
240
+ wrapper.removeChild(rightResizeHandle);
241
+ }
242
+ if (!resizeParams) {
243
+ return;
244
+ }
245
+ resizeParams = undefined;
246
+ editor.updateBlock(block, {
247
+ props: {
248
+ previewWidth: getWidth(),
249
+ },
250
+ });
251
+ };
252
+ // Shows the resize handles when hovering over the element with the cursor.
253
+ const elementMouseEnterHandler = () => {
254
+ if (editor.isEditable) {
255
+ wrapper.appendChild(leftResizeHandle);
256
+ wrapper.appendChild(rightResizeHandle);
257
+ }
258
+ };
259
+ // Hides the resize handles when the cursor leaves the element, unless the
260
+ // cursor moves to one of the resize handles.
261
+ const elementMouseLeaveHandler = (event) => {
262
+ if (event.relatedTarget === leftResizeHandle ||
263
+ event.relatedTarget === rightResizeHandle) {
264
+ return;
265
+ }
266
+ if (resizeParams) {
267
+ return;
268
+ }
269
+ if (editor.isEditable &&
270
+ wrapper.contains(leftResizeHandle) &&
271
+ wrapper.contains(rightResizeHandle)) {
272
+ wrapper.removeChild(leftResizeHandle);
273
+ wrapper.removeChild(rightResizeHandle);
274
+ }
275
+ };
276
+ // Sets the resize params, allowing the user to begin resizing the element by
277
+ // moving the cursor left or right.
278
+ const leftResizeHandleMouseDownHandler = (event) => {
279
+ event.preventDefault();
280
+ wrapper.appendChild(leftResizeHandle);
281
+ wrapper.appendChild(rightResizeHandle);
282
+ resizeParams = {
283
+ handleUsed: "left",
284
+ initialWidth: block.props.previewWidth,
285
+ initialClientX: event.clientX,
286
+ };
287
+ };
288
+ const rightResizeHandleMouseDownHandler = (event) => {
289
+ event.preventDefault();
290
+ wrapper.appendChild(leftResizeHandle);
291
+ wrapper.appendChild(rightResizeHandle);
292
+ resizeParams = {
293
+ handleUsed: "right",
294
+ initialWidth: block.props.previewWidth,
295
+ initialClientX: event.clientX,
296
+ };
297
+ };
298
+ wrapper.appendChild(element);
299
+ window.addEventListener("mousemove", windowMouseMoveHandler);
300
+ window.addEventListener("mouseup", windowMouseUpHandler);
301
+ element.addEventListener("mouseenter", elementMouseEnterHandler);
302
+ element.addEventListener("mouseleave", elementMouseLeaveHandler);
303
+ leftResizeHandle.addEventListener("mousedown", leftResizeHandleMouseDownHandler);
304
+ rightResizeHandle.addEventListener("mousedown", rightResizeHandleMouseDownHandler);
305
+ return {
306
+ dom: wrapper,
307
+ destroy: () => {
308
+ window.removeEventListener("mousemove", windowMouseMoveHandler);
309
+ window.removeEventListener("mouseup", windowMouseUpHandler);
310
+ element.removeEventListener("mouseenter", elementMouseEnterHandler);
311
+ element.removeEventListener("mouseleave", elementMouseLeaveHandler);
312
+ leftResizeHandle.removeEventListener("mousedown", leftResizeHandleMouseDownHandler);
313
+ rightResizeHandle.removeEventListener("mousedown", rightResizeHandleMouseDownHandler);
314
+ },
315
+ };
316
+ };
317
+ //# sourceMappingURL=fileBlockHelpers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fileBlockHelpers.js","sourceRoot":"","sources":["../../../../src/blocks/FileBlockContent/fileBlockHelpers.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Uploads a file to tmpfiles.org and returns the URL to the uploaded file.
3
+ *
4
+ * @warning This function should only be used for development purposes, replace with your own backend!
5
+ */
6
+ export const uploadToTmpFilesDotOrg_DEV_ONLY = async (file) => {
7
+ const body = new FormData();
8
+ body.append("file", file);
9
+ const ret = await fetch("https://tmpfiles.org/api/v1/upload", {
10
+ method: "POST",
11
+ body: body,
12
+ });
13
+ return (await ret.json()).data.url.replace("tmpfiles.org/", "tmpfiles.org/dl/");
14
+ };
15
+ //# sourceMappingURL=uploadToTmpFilesDotOrg_DEV_ONLY.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"uploadToTmpFilesDotOrg_DEV_ONLY.js","sourceRoot":"","sources":["../../../../src/blocks/FileBlockContent/uploadToTmpFilesDotOrg_DEV_ONLY.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,MAAM,CAAC,MAAM,+BAA+B,GAAG,KAAK,EAClD,IAAU,EACO,EAAE;IACnB,MAAM,IAAI,GAAG,IAAI,QAAQ,EAAE,CAAC;IAC5B,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAE1B,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,oCAAoC,EAAE;QAC5D,MAAM,EAAE,MAAM;QACd,IAAI,EAAE,IAAI;KACX,CAAC,CAAC;IACH,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CACxC,eAAe,EACf,kBAAkB,CACnB,CAAC;AACJ,CAAC,CAAC"}
@@ -0,0 +1,141 @@
1
+ import { InputRule } from "@tiptap/core";
2
+ import { updateBlockCommand } from "../../api/blockManipulation/commands/updateBlock/updateBlock.js";
3
+ import { getBlockInfoFromSelection } from "../../api/getBlockInfoFromPos.js";
4
+ import { createBlockSpecFromStronglyTypedTiptapNode, createStronglyTypedTiptapNode, } from "../../schema/index.js";
5
+ import { createDefaultBlockDOMOutputSpec } from "../defaultBlockHelpers.js";
6
+ import { defaultProps } from "../defaultProps.js";
7
+ export const headingPropSchema = {
8
+ ...defaultProps,
9
+ level: { default: 1, values: [1, 2, 3] },
10
+ };
11
+ const HeadingBlockContent = createStronglyTypedTiptapNode({
12
+ name: "heading",
13
+ content: "inline*",
14
+ group: "blockContent",
15
+ addAttributes() {
16
+ return {
17
+ level: {
18
+ default: 1,
19
+ // instead of "level" attributes, use "data-level"
20
+ parseHTML: (element) => {
21
+ const attr = element.getAttribute("data-level");
22
+ const parsed = parseInt(attr);
23
+ if (isFinite(parsed)) {
24
+ return parsed;
25
+ }
26
+ return undefined;
27
+ },
28
+ renderHTML: (attributes) => {
29
+ return {
30
+ "data-level": attributes.level.toString(),
31
+ };
32
+ },
33
+ },
34
+ };
35
+ },
36
+ addInputRules() {
37
+ return [
38
+ ...[1, 2, 3].map((level) => {
39
+ // Creates a heading of appropriate level when starting with "#", "##", or "###".
40
+ return new InputRule({
41
+ find: new RegExp(`^(#{${level}})\\s$`),
42
+ handler: ({ state, chain, range }) => {
43
+ const blockInfo = getBlockInfoFromSelection(state);
44
+ if (blockInfo.blockContent.node.type.spec.content !== "inline*") {
45
+ return;
46
+ }
47
+ chain()
48
+ .command(updateBlockCommand(this.options.editor, blockInfo.bnBlock.beforePos, {
49
+ type: "heading",
50
+ props: {
51
+ level: level,
52
+ },
53
+ }))
54
+ // Removes the "#" character(s) used to set the heading.
55
+ .deleteRange({ from: range.from, to: range.to })
56
+ .run();
57
+ },
58
+ });
59
+ }),
60
+ ];
61
+ },
62
+ addKeyboardShortcuts() {
63
+ return {
64
+ "Mod-Alt-1": () => {
65
+ const blockInfo = getBlockInfoFromSelection(this.editor.state);
66
+ if (blockInfo.blockContent.node.type.spec.content !== "inline*") {
67
+ return true;
68
+ }
69
+ // call updateBlockCommand
70
+ return this.editor.commands.command(updateBlockCommand(this.options.editor, blockInfo.bnBlock.beforePos, {
71
+ type: "heading",
72
+ props: {
73
+ level: 1,
74
+ },
75
+ }));
76
+ },
77
+ "Mod-Alt-2": () => {
78
+ const blockInfo = getBlockInfoFromSelection(this.editor.state);
79
+ if (blockInfo.blockContent.node.type.spec.content !== "inline*") {
80
+ return true;
81
+ }
82
+ return this.editor.commands.command(updateBlockCommand(this.options.editor, blockInfo.bnBlock.beforePos, {
83
+ type: "heading",
84
+ props: {
85
+ level: 2,
86
+ },
87
+ }));
88
+ },
89
+ "Mod-Alt-3": () => {
90
+ const blockInfo = getBlockInfoFromSelection(this.editor.state);
91
+ if (blockInfo.blockContent.node.type.spec.content !== "inline*") {
92
+ return true;
93
+ }
94
+ return this.editor.commands.command(updateBlockCommand(this.options.editor, blockInfo.bnBlock.beforePos, {
95
+ type: "heading",
96
+ props: {
97
+ level: 3,
98
+ },
99
+ }));
100
+ },
101
+ };
102
+ },
103
+ parseHTML() {
104
+ return [
105
+ {
106
+ tag: "div[data-content-type=" + this.name + "]",
107
+ getAttrs: (element) => {
108
+ if (typeof element === "string") {
109
+ return false;
110
+ }
111
+ return {
112
+ level: element.getAttribute("data-level"),
113
+ };
114
+ },
115
+ },
116
+ {
117
+ tag: "h1",
118
+ attrs: { level: 1 },
119
+ node: "heading",
120
+ },
121
+ {
122
+ tag: "h2",
123
+ attrs: { level: 2 },
124
+ node: "heading",
125
+ },
126
+ {
127
+ tag: "h3",
128
+ attrs: { level: 3 },
129
+ node: "heading",
130
+ },
131
+ ];
132
+ },
133
+ renderHTML({ node, HTMLAttributes }) {
134
+ return createDefaultBlockDOMOutputSpec(this.name, `h${node.attrs.level}`, {
135
+ ...(this.options.domAttributes?.blockContent || {}),
136
+ ...HTMLAttributes,
137
+ }, this.options.domAttributes?.inlineContent || {});
138
+ },
139
+ });
140
+ export const Heading = createBlockSpecFromStronglyTypedTiptapNode(HeadingBlockContent, headingPropSchema);
141
+ //# sourceMappingURL=HeadingBlockContent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HeadingBlockContent.js","sourceRoot":"","sources":["../../../../src/blocks/HeadingBlockContent/HeadingBlockContent.ts"],"names":[],"mappings":"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"}