@blocknote/core 0.30.1 → 0.31.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 (139) hide show
  1. package/dist/blocknote.cjs +9 -9
  2. package/dist/blocknote.cjs.map +1 -1
  3. package/dist/blocknote.js +2754 -2230
  4. package/dist/blocknote.js.map +1 -1
  5. package/dist/{en-D4taoCs4.cjs → en-BXVKCwYt.cjs} +2 -2
  6. package/dist/en-BXVKCwYt.cjs.map +1 -0
  7. package/dist/{en-B7ycW7c8.js → en-qGo6sk9V.js} +2 -3
  8. package/dist/en-qGo6sk9V.js.map +1 -0
  9. package/dist/locales.cjs +1 -1
  10. package/dist/locales.cjs.map +1 -1
  11. package/dist/locales.js +20 -39
  12. package/dist/locales.js.map +1 -1
  13. package/dist/style.css +1 -1
  14. package/dist/webpack-stats.json +1 -1
  15. package/package.json +4 -5
  16. package/src/api/blockManipulation/commands/insertBlocks/insertBlocks.ts +2 -3
  17. package/src/api/blockManipulation/commands/replaceBlocks/replaceBlocks.ts +1 -1
  18. package/src/api/blockManipulation/commands/updateBlock/__snapshots__/updateBlock.test.ts.snap +2816 -0
  19. package/src/api/blockManipulation/commands/updateBlock/updateBlock.test.ts +158 -0
  20. package/src/api/blockManipulation/commands/updateBlock/updateBlock.ts +87 -17
  21. package/src/api/blockManipulation/selections/selection.ts +48 -1
  22. package/src/api/blockManipulation/selections/{textCursorPosition/textCursorPosition.ts → textCursorPosition.ts} +7 -7
  23. package/src/api/getBlockInfoFromPos.ts +1 -1
  24. package/src/api/nodeConversions/blockToNode.ts +5 -2
  25. package/src/api/nodeConversions/nodeToBlock.ts +203 -8
  26. package/src/api/pmUtil.ts +3 -3
  27. package/src/blocks/CodeBlockContent/CodeBlockContent.ts +6 -6
  28. package/src/blocks/FileBlockContent/helpers/render/createAddFileButton.ts +1 -1
  29. package/src/blocks/TableBlockContent/TableBlockContent.ts +32 -2
  30. package/src/editor/Block.css +27 -1
  31. package/src/editor/BlockNoteEditor.test.ts +7 -0
  32. package/src/editor/BlockNoteEditor.ts +88 -37
  33. package/src/editor/BlockNoteExtension.ts +26 -0
  34. package/src/editor/BlockNoteExtensions.ts +28 -12
  35. package/src/editor/BlockNoteTipTapEditor.ts +23 -2
  36. package/src/extensions/Collaboration/CursorPlugin.ts +13 -7
  37. package/src/extensions/Collaboration/ForkYDocPlugin.test.ts +166 -0
  38. package/src/extensions/Collaboration/ForkYDocPlugin.ts +174 -0
  39. package/src/extensions/Collaboration/SyncPlugin.ts +7 -4
  40. package/src/extensions/Collaboration/UndoPlugin.ts +7 -4
  41. package/src/extensions/Collaboration/__snapshots__/fork-yjs-snap-editor-forked.json +30 -0
  42. package/src/extensions/Collaboration/__snapshots__/fork-yjs-snap-editor.json +30 -0
  43. package/src/extensions/Collaboration/__snapshots__/fork-yjs-snap-forked.html +1 -0
  44. package/src/extensions/Collaboration/__snapshots__/fork-yjs-snap.html +1 -0
  45. package/src/extensions/Comments/CommentsPlugin.ts +75 -70
  46. package/src/extensions/FilePanel/FilePanelPlugin.ts +50 -49
  47. package/src/extensions/FormattingToolbar/FormattingToolbarPlugin.ts +56 -26
  48. package/src/extensions/LinkToolbar/LinkToolbarPlugin.ts +22 -21
  49. package/src/extensions/NodeSelectionKeyboard/NodeSelectionKeyboardPlugin.ts +45 -42
  50. package/src/extensions/Placeholder/PlaceholderPlugin.ts +111 -108
  51. package/src/extensions/PreviousBlockType/PreviousBlockTypePlugin.ts +179 -170
  52. package/src/extensions/ShowSelection/ShowSelectionPlugin.ts +22 -19
  53. package/src/extensions/SideMenu/SideMenuPlugin.ts +19 -18
  54. package/src/extensions/SuggestionMenu/SuggestionPlugin.ts +168 -168
  55. package/src/extensions/SuggestionMenu/getDefaultSlashMenuItems.ts +4 -4
  56. package/src/extensions/Suggestions/SuggestionMarks.ts +175 -0
  57. package/src/extensions/TableHandles/TableHandlesPlugin.ts +153 -150
  58. package/src/i18n/locales/ar.ts +0 -1
  59. package/src/i18n/locales/de.ts +0 -1
  60. package/src/i18n/locales/en.ts +0 -1
  61. package/src/i18n/locales/es.ts +0 -1
  62. package/src/i18n/locales/fr.ts +0 -1
  63. package/src/i18n/locales/hr.ts +0 -1
  64. package/src/i18n/locales/is.ts +0 -1
  65. package/src/i18n/locales/it.ts +0 -1
  66. package/src/i18n/locales/ja.ts +0 -1
  67. package/src/i18n/locales/ko.ts +0 -1
  68. package/src/i18n/locales/nl.ts +0 -1
  69. package/src/i18n/locales/no.ts +0 -1
  70. package/src/i18n/locales/pl.ts +0 -1
  71. package/src/i18n/locales/pt.ts +0 -1
  72. package/src/i18n/locales/ru.ts +0 -1
  73. package/src/i18n/locales/sk.ts +0 -1
  74. package/src/i18n/locales/uk.ts +0 -1
  75. package/src/i18n/locales/vi.ts +0 -1
  76. package/src/i18n/locales/zh-tw.ts +0 -1
  77. package/src/i18n/locales/zh.ts +0 -1
  78. package/src/index.ts +18 -8
  79. package/src/pm-nodes/BlockContainer.ts +1 -1
  80. package/src/pm-nodes/BlockGroup.ts +1 -1
  81. package/src/pm-nodes/Doc.ts +1 -0
  82. package/types/src/api/blockManipulation/commands/insertBlocks/insertBlocks.d.ts +1 -1
  83. package/types/src/api/blockManipulation/commands/removeBlocks/removeBlocks.d.ts +4 -0
  84. package/types/src/api/blockManipulation/commands/removeBlocks/removeBlocks.test.d.ts +1 -0
  85. package/types/src/api/blockManipulation/commands/updateBlock/updateBlock.d.ts +3 -1
  86. package/types/src/api/blockManipulation/selections/selection.d.ts +10 -0
  87. package/types/src/api/blockManipulation/selections/textCursorPosition.d.ts +5 -0
  88. package/types/src/api/blockManipulation/transactions.test.d.ts +0 -0
  89. package/types/src/api/clipboard/clipboardExternal.test.d.ts +1 -0
  90. package/types/src/api/clipboard/clipboardInternal.test.d.ts +1 -0
  91. package/types/src/api/clipboard/testUtil.d.ts +541 -0
  92. package/types/src/api/exporters/html/htmlConversion.test.d.ts +1 -0
  93. package/types/src/api/exporters/markdown/markdownExporter.test.d.ts +1 -0
  94. package/types/src/api/nodeConversions/nodeConversions.test.d.ts +1 -0
  95. package/types/src/api/nodeConversions/nodeToBlock.d.ts +39 -2
  96. package/types/src/api/parsers/html/parseHTML.test.d.ts +1 -0
  97. package/types/src/api/parsers/markdown/parseMarkdown.test.d.ts +1 -0
  98. package/types/src/api/pmUtil.d.ts +3 -3
  99. package/types/src/api/testUtil/cases/customBlocks.d.ts +670 -0
  100. package/types/src/api/testUtil/cases/customInlineContent.d.ts +558 -0
  101. package/types/src/api/testUtil/cases/customStyles.d.ts +552 -0
  102. package/types/src/api/testUtil/cases/defaultSchema.d.ts +4 -0
  103. package/types/src/api/testUtil/index.d.ts +14 -0
  104. package/types/src/api/testUtil/partialBlockTestUtil.d.ts +9 -0
  105. package/types/src/api/testUtil/paste.d.ts +2 -0
  106. package/types/src/blocks/CodeBlockContent/defaultSupportedLanguages.d.ts +6 -0
  107. package/types/src/blocks/TableBlockContent/TableBlockContent.d.ts +9 -1
  108. package/types/src/editor/BlockNoteEditor.d.ts +55 -9
  109. package/types/src/editor/BlockNoteExtension.d.ts +9 -0
  110. package/types/src/editor/BlockNoteExtensions.d.ts +2 -2
  111. package/types/src/editor/BlockNoteTipTapEditor.d.ts +2 -2
  112. package/types/src/extensions/Collaboration/CursorPlugin.d.ts +3 -3
  113. package/types/src/extensions/Collaboration/ForkYDocPlugin.d.ts +41 -0
  114. package/types/src/extensions/Collaboration/ForkYDocPlugin.test.d.ts +1 -0
  115. package/types/src/extensions/Collaboration/SyncPlugin.d.ts +3 -3
  116. package/types/src/extensions/Collaboration/UndoPlugin.d.ts +3 -3
  117. package/types/src/extensions/Collaboration/createCollaborationExtensions.d.ts +17 -0
  118. package/types/src/extensions/Comments/CommentsPlugin.d.ts +2 -4
  119. package/types/src/extensions/FilePanel/FilePanelPlugin.d.ts +3 -4
  120. package/types/src/extensions/FormattingToolbar/FormattingToolbarPlugin.d.ts +5 -5
  121. package/types/src/extensions/LinkToolbar/LinkToolbarPlugin.d.ts +3 -4
  122. package/types/src/extensions/NodeSelectionKeyboard/NodeSelectionKeyboardPlugin.d.ts +2 -3
  123. package/types/src/extensions/Placeholder/PlaceholderPlugin.d.ts +2 -3
  124. package/types/src/extensions/PreviousBlockType/PreviousBlockTypePlugin.d.ts +2 -3
  125. package/types/src/extensions/ShowSelection/ShowSelectionPlugin.d.ts +2 -3
  126. package/types/src/extensions/SideMenu/SideMenuPlugin.d.ts +3 -4
  127. package/types/src/extensions/SuggestionMenu/SuggestionPlugin.d.ts +2 -4
  128. package/types/src/extensions/Suggestions/SuggestionMarks.d.ts +4 -0
  129. package/types/src/extensions/TableHandles/TableHandlesPlugin.d.ts +5 -6
  130. package/types/src/i18n/locales/en.d.ts +0 -1
  131. package/types/src/i18n/locales/sk.d.ts +0 -1
  132. package/types/src/index.d.ts +15 -8
  133. package/dist/en-B7ycW7c8.js.map +0 -1
  134. package/dist/en-D4taoCs4.cjs.map +0 -1
  135. package/dist/tsconfig.tsbuildinfo +0 -1
  136. package/src/api/blockManipulation/selections/__snapshots__/selection.test.ts.snap +0 -844
  137. package/src/api/blockManipulation/selections/selection.test.ts +0 -72
  138. package/src/api/blockManipulation/selections/textCursorPosition/__snapshots__/textCursorPosition.test.ts.snap +0 -316
  139. package/src/api/blockManipulation/selections/textCursorPosition/textCursorPosition.test.ts +0 -74
@@ -177,7 +177,6 @@ export const sk = {
177
177
  },
178
178
  suggestion_menu: {
179
179
  no_items_title: "Nenašli sa žiadne položky",
180
- loading: "Načítava sa…",
181
180
  },
182
181
  color_picker: {
183
182
  text_title: "Text",
@@ -203,7 +203,6 @@ export const uk: Dictionary = {
203
203
  },
204
204
  suggestion_menu: {
205
205
  no_items_title: "Нічого не знайдено",
206
- loading: "Завантаження…",
207
206
  },
208
207
  color_picker: {
209
208
  text_title: "Текст",
@@ -177,7 +177,6 @@ export const vi: Dictionary = {
177
177
  },
178
178
  suggestion_menu: {
179
179
  no_items_title: "Không tìm thấy mục nào",
180
- loading: "Đang tải...",
181
180
  },
182
181
  color_picker: {
183
182
  text_title: "Văn bản",
@@ -211,7 +211,6 @@ export const zhTW: Dictionary = {
211
211
  },
212
212
  suggestion_menu: {
213
213
  no_items_title: "無相符項目",
214
- loading: "載入中…",
215
214
  },
216
215
  color_picker: {
217
216
  text_title: "文字",
@@ -211,7 +211,6 @@ export const zh: Dictionary = {
211
211
  },
212
212
  suggestion_menu: {
213
213
  no_items_title: "无匹配项",
214
- loading: "加载中…",
215
214
  },
216
215
  color_picker: {
217
216
  text_title: "文本",
package/src/index.ts CHANGED
@@ -1,10 +1,17 @@
1
+ export * from "./api/blockManipulation/commands/insertBlocks/insertBlocks.js";
2
+ export * from "./api/blockManipulation/commands/replaceBlocks/replaceBlocks.js";
1
3
  export * from "./api/blockManipulation/commands/updateBlock/updateBlock.js";
2
4
  export * from "./api/exporters/html/externalHTMLExporter.js";
3
5
  export * from "./api/exporters/html/internalHTMLSerializer.js";
4
6
  export * from "./api/getBlockInfoFromPos.js";
5
7
  export * from "./api/nodeUtil.js";
8
+ export * from "./api/pmUtil.js";
6
9
  export * from "./blocks/AudioBlockContent/AudioBlockContent.js";
7
10
  export * from "./blocks/CodeBlockContent/CodeBlockContent.js";
11
+ export * from "./blocks/defaultBlockHelpers.js";
12
+ export * from "./blocks/defaultBlocks.js";
13
+ export * from "./blocks/defaultBlockTypeGuards.js";
14
+ export * from "./blocks/defaultProps.js";
8
15
  export * from "./blocks/FileBlockContent/FileBlockContent.js";
9
16
  export * from "./blocks/FileBlockContent/helpers/parse/parseEmbedElement.js";
10
17
  export * from "./blocks/FileBlockContent/helpers/parse/parseFigureElement.js";
@@ -16,19 +23,16 @@ export * from "./blocks/FileBlockContent/helpers/toExternalHTML/createFigureWith
16
23
  export * from "./blocks/FileBlockContent/helpers/toExternalHTML/createLinkWithCaption.js";
17
24
  export * from "./blocks/FileBlockContent/uploadToTmpFilesDotOrg_DEV_ONLY.js";
18
25
  export * from "./blocks/ImageBlockContent/ImageBlockContent.js";
19
- export * from "./blocks/PageBreakBlockContent/PageBreakBlockContent.js";
20
26
  export * from "./blocks/PageBreakBlockContent/getPageBreakSlashMenuItems.js";
27
+ export * from "./blocks/PageBreakBlockContent/PageBreakBlockContent.js";
21
28
  export * from "./blocks/PageBreakBlockContent/schema.js";
22
29
  export {
23
30
  EMPTY_CELL_HEIGHT,
24
31
  EMPTY_CELL_WIDTH,
25
32
  } from "./blocks/TableBlockContent/TableExtension.js";
26
33
  export * from "./blocks/VideoBlockContent/VideoBlockContent.js";
27
- export * from "./blocks/defaultBlockHelpers.js";
28
- export * from "./blocks/defaultBlockTypeGuards.js";
29
- export * from "./blocks/defaultBlocks.js";
30
- export * from "./blocks/defaultProps.js";
31
34
  export * from "./editor/BlockNoteEditor.js";
35
+ export * from "./editor/BlockNoteExtension.js";
32
36
  export * from "./editor/BlockNoteExtensions.js";
33
37
  export * from "./editor/BlockNoteSchema.js";
34
38
  export * from "./editor/defaultColors.js";
@@ -42,22 +46,24 @@ export * from "./extensions/LinkToolbar/protocols.js";
42
46
  export * from "./extensions/SideMenu/SideMenuPlugin.js";
43
47
  export * from "./extensions/SuggestionMenu/DefaultGridSuggestionItem.js";
44
48
  export * from "./extensions/SuggestionMenu/DefaultSuggestionItem.js";
45
- export * from "./extensions/SuggestionMenu/SuggestionPlugin.js";
46
49
  export * from "./extensions/SuggestionMenu/getDefaultEmojiPickerItems.js";
47
50
  export * from "./extensions/SuggestionMenu/getDefaultSlashMenuItems.js";
51
+ export * from "./extensions/SuggestionMenu/SuggestionPlugin.js";
48
52
  export * from "./extensions/TableHandles/TableHandlesPlugin.js";
49
53
  export * from "./i18n/dictionary.js";
50
54
  export * from "./schema/index.js";
51
55
  export * from "./util/browser.js";
52
56
  export * from "./util/combineByGroup.js";
53
57
  export * from "./util/esmDependencies.js";
54
- export * from "./util/table.js";
55
58
  export * from "./util/string.js";
59
+ export * from "./util/table.js";
56
60
  export * from "./util/typescript.js";
57
61
 
58
62
  export type { CodeBlockOptions } from "./blocks/CodeBlockContent/CodeBlockContent.js";
59
- export { UnreachableCaseError, assertEmpty } from "./util/typescript.js";
63
+ export { assertEmpty, UnreachableCaseError } from "./util/typescript.js";
60
64
 
65
+ export * from "./util/EventEmitter.js";
66
+ // for testing from react (TODO: move):
61
67
  // Unit testing
62
68
  export { selectedFragmentToHTML } from "./api/clipboard/toClipboard/copyExtension.js";
63
69
 
@@ -70,3 +76,7 @@ export * from "./extensions/UniqueID/UniqueID.js";
70
76
  export * from "./api/exporters/markdown/markdownExporter.js";
71
77
  export * from "./api/parsers/html/parseHTML.js";
72
78
  export * from "./api/parsers/markdown/parseMarkdown.js";
79
+
80
+ // TODO: for ai, remove?
81
+ export * from "./api/blockManipulation/getBlock/getBlock.js";
82
+ export * from "./api/positionMapping.js";
@@ -27,7 +27,7 @@ export const BlockContainer = Node.create<{
27
27
  // Ensures content-specific keyboard handlers trigger first.
28
28
  priority: 50,
29
29
  defining: true,
30
-
30
+ marks: "insertion modification deletion",
31
31
  parseHTML() {
32
32
  return [
33
33
  {
@@ -8,7 +8,7 @@ export const BlockGroup = Node.create<{
8
8
  name: "blockGroup",
9
9
  group: "childContainer",
10
10
  content: "blockGroupChild+",
11
-
11
+ marks: "deletion insertion modification",
12
12
  parseHTML() {
13
13
  return [
14
14
  {
@@ -4,4 +4,5 @@ export const Doc = Node.create({
4
4
  name: "doc",
5
5
  topNode: true,
6
6
  content: "blockGroup",
7
+ marks: "insertion modification deletion",
7
8
  });
@@ -1,4 +1,4 @@
1
+ import type { Transaction } from "prosemirror-state";
1
2
  import { Block, PartialBlock } from "../../../../blocks/defaultBlocks.js";
2
3
  import { BlockIdentifier, BlockSchema, InlineContentSchema, StyleSchema } from "../../../../schema/index.js";
3
- import type { Transaction } from "prosemirror-state";
4
4
  export declare function insertBlocks<BSchema extends BlockSchema, I extends InlineContentSchema, S extends StyleSchema>(tr: Transaction, blocksToInsert: PartialBlock<BSchema, I, S>[], referenceBlock: BlockIdentifier, placement?: "before" | "after"): Block<BSchema, I, S>[];
@@ -0,0 +1,4 @@
1
+ import { Block } from "../../../../blocks/defaultBlocks.js";
2
+ import type { BlockNoteEditor } from "../../../../editor/BlockNoteEditor";
3
+ import { BlockIdentifier, BlockSchema, InlineContentSchema, StyleSchema } from "../../../../schema/index.js";
4
+ export declare function removeBlocks<BSchema extends BlockSchema, I extends InlineContentSchema, S extends StyleSchema>(editor: BlockNoteEditor<BSchema, I, S>, blocksToRemove: BlockIdentifier[]): Block<BSchema, I, S>[];
@@ -1,4 +1,5 @@
1
1
  import type { Transaction } from "prosemirror-state";
2
+ import { Transform } from "prosemirror-transform";
2
3
  import type { Block, PartialBlock } from "../../../../blocks/defaultBlocks.js";
3
4
  import type { BlockIdentifier, BlockSchema } from "../../../../schema/blocks/types.js";
4
5
  import type { InlineContentSchema } from "../../../../schema/inlineContent/types.js";
@@ -7,4 +8,5 @@ export declare const updateBlockCommand: <BSchema extends BlockSchema, I extends
7
8
  tr: Transaction;
8
9
  dispatch?: () => void;
9
10
  }) => boolean;
10
- export declare function updateBlock<BSchema extends BlockSchema = any, I extends InlineContentSchema = any, S extends StyleSchema = any>(tr: Transaction, blockToUpdate: BlockIdentifier, update: PartialBlock<BSchema, I, S>): Block<BSchema, I, S>;
11
+ export declare function updateBlockTr<BSchema extends BlockSchema, I extends InlineContentSchema, S extends StyleSchema>(tr: Transform, posBeforeBlock: number, block: PartialBlock<BSchema, I, S>, replaceFromPos?: number, replaceToPos?: number): void;
12
+ export declare function updateBlock<BSchema extends BlockSchema = any, I extends InlineContentSchema = any, S extends StyleSchema = any>(tr: Transaction, blockToUpdate: BlockIdentifier, update: PartialBlock<BSchema, I, S>, replaceFromPos?: number, replaceToPos?: number): Block<BSchema, I, S>;
@@ -1,5 +1,15 @@
1
1
  import { type Transaction } from "prosemirror-state";
2
+ import { Block } from "../../../blocks/defaultBlocks.js";
2
3
  import { Selection } from "../../../editor/selectionTypes.js";
3
4
  import { BlockIdentifier, BlockSchema, InlineContentSchema, StyleSchema } from "../../../schema/index.js";
4
5
  export declare function getSelection<BSchema extends BlockSchema, I extends InlineContentSchema, S extends StyleSchema>(tr: Transaction): Selection<BSchema, I, S> | undefined;
5
6
  export declare function setSelection(tr: Transaction, startBlock: BlockIdentifier, endBlock: BlockIdentifier): void;
7
+ export declare function getSelectionCutBlocks(tr: Transaction): {
8
+ blocks: Block<Record<string, import("../../../index.js").BlockConfig>, InlineContentSchema, StyleSchema>[];
9
+ blockCutAtStart: string | undefined;
10
+ blockCutAtEnd: string | undefined;
11
+ _meta: {
12
+ startPos: number;
13
+ endPos: number;
14
+ };
15
+ };
@@ -0,0 +1,5 @@
1
+ import { type Transaction } from "prosemirror-state";
2
+ import type { TextCursorPosition } from "../../../editor/cursorPositionTypes.js";
3
+ import type { BlockIdentifier, BlockSchema, InlineContentSchema, StyleSchema } from "../../../schema/index.js";
4
+ export declare function getTextCursorPosition<BSchema extends BlockSchema, I extends InlineContentSchema, S extends StyleSchema>(tr: Transaction): TextCursorPosition<BSchema, I, S>;
5
+ export declare function setTextCursorPosition(tr: Transaction, targetBlock: BlockIdentifier, placement?: "start" | "end"): void;