@blocknote/core 0.30.0 → 0.30.1
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.
- package/dist/blocknote.cjs +2 -2
- package/dist/blocknote.cjs.map +1 -1
- package/dist/blocknote.js +22 -20
- package/dist/blocknote.js.map +1 -1
- package/dist/comments.cjs.map +1 -1
- package/dist/comments.js.map +1 -1
- package/dist/style.css +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/dist/webpack-stats.json +1 -1
- package/package.json +5 -3
- package/src/api/README.md +1 -1
- package/src/api/blockManipulation/commands/insertBlocks/insertBlocks.test.ts +19 -14
- package/src/api/blockManipulation/commands/insertBlocks/insertBlocks.ts +5 -5
- package/src/api/blockManipulation/commands/mergeBlocks/mergeBlocks.test.ts +3 -3
- package/src/api/blockManipulation/commands/mergeBlocks/mergeBlocks.ts +12 -12
- package/src/api/blockManipulation/commands/moveBlocks/moveBlocks.test.ts +14 -14
- package/src/api/blockManipulation/commands/moveBlocks/moveBlocks.ts +16 -16
- package/src/api/blockManipulation/commands/nestBlock/nestBlock.ts +8 -8
- package/src/api/blockManipulation/commands/replaceBlocks/replaceBlocks.test.ts +12 -12
- package/src/api/blockManipulation/commands/replaceBlocks/replaceBlocks.ts +7 -7
- package/src/api/blockManipulation/commands/splitBlock/splitBlock.test.ts +10 -10
- package/src/api/blockManipulation/commands/splitBlock/splitBlock.ts +2 -2
- package/src/api/blockManipulation/commands/updateBlock/updateBlock.test.ts +42 -42
- package/src/api/blockManipulation/commands/updateBlock/updateBlock.ts +18 -18
- package/src/api/blockManipulation/getBlock/getBlock.ts +9 -9
- package/src/api/blockManipulation/insertContentAt.ts +1 -1
- package/src/api/blockManipulation/selections/selection.ts +11 -11
- package/src/api/blockManipulation/selections/textCursorPosition/textCursorPosition.test.ts +7 -7
- package/src/api/blockManipulation/selections/textCursorPosition/textCursorPosition.ts +6 -6
- package/src/api/blockManipulation/tables/tables.test.ts +106 -106
- package/src/api/blockManipulation/tables/tables.ts +35 -35
- package/src/api/clipboard/fromClipboard/fileDropExtension.ts +2 -2
- package/src/api/clipboard/fromClipboard/handleFileInsertion.ts +9 -9
- package/src/api/clipboard/fromClipboard/handleVSCodePaste.ts +3 -3
- package/src/api/clipboard/fromClipboard/pasteExtension.ts +3 -3
- package/src/api/clipboard/toClipboard/copyExtension.ts +22 -22
- package/src/api/exporters/html/externalHTMLExporter.ts +6 -6
- package/src/api/exporters/html/internalHTMLSerializer.ts +3 -3
- package/src/api/exporters/html/util/serializeBlocksExternalHTML.ts +16 -16
- package/src/api/exporters/html/util/serializeBlocksInternalHTML.ts +14 -14
- package/src/api/exporters/markdown/markdownExporter.ts +3 -3
- package/src/api/exporters/markdown/util/addSpacesToCheckboxesRehypePlugin.ts +3 -3
- package/src/api/getBlockInfoFromPos.ts +6 -6
- package/src/api/nodeConversions/blockToNode.ts +26 -26
- package/src/api/nodeConversions/fragmentToBlocks.ts +1 -1
- package/src/api/nodeConversions/nodeToBlock.ts +37 -33
- package/src/api/nodeUtil.test.ts +16 -16
- package/src/api/nodeUtil.ts +10 -10
- package/src/api/parsers/html/parseHTML.ts +1 -1
- package/src/api/parsers/html/util/nestedLists.ts +2 -2
- package/src/api/parsers/markdown/parseMarkdown.ts +1 -1
- package/src/api/pmUtil.ts +4 -4
- package/src/api/positionMapping.test.ts +3 -3
- package/src/api/positionMapping.ts +5 -5
- package/src/blocks/AudioBlockContent/AudioBlockContent.ts +4 -4
- package/src/blocks/CodeBlockContent/CodeBlockContent.ts +12 -12
- package/src/blocks/FileBlockContent/FileBlockContent.ts +2 -2
- package/src/blocks/FileBlockContent/helpers/parse/parseFigureElement.ts +2 -2
- package/src/blocks/FileBlockContent/helpers/render/createAddFileButton.ts +5 -5
- package/src/blocks/FileBlockContent/helpers/render/createFileBlockWrapper.ts +2 -2
- package/src/blocks/FileBlockContent/helpers/render/createFileNameWithIcon.ts +1 -1
- package/src/blocks/FileBlockContent/helpers/render/createResizableFileBlockWrapper.ts +7 -7
- package/src/blocks/FileBlockContent/helpers/toExternalHTML/createFigureWithCaption.ts +1 -1
- package/src/blocks/FileBlockContent/helpers/toExternalHTML/createLinkWithCaption.ts +1 -1
- package/src/blocks/FileBlockContent/uploadToTmpFilesDotOrg_DEV_ONLY.ts +2 -2
- package/src/blocks/HeadingBlockContent/HeadingBlockContent.ts +6 -6
- package/src/blocks/ImageBlockContent/ImageBlockContent.ts +4 -4
- package/src/blocks/ListItemBlockContent/BulletListItemBlockContent/BulletListItemBlockContent.ts +4 -4
- package/src/blocks/ListItemBlockContent/CheckListItemBlockContent/CheckListItemBlockContent.ts +10 -10
- package/src/blocks/ListItemBlockContent/ListItemKeyboardShortcuts.ts +1 -1
- package/src/blocks/ListItemBlockContent/NumberedListItemBlockContent/NumberedListIndexingPlugin.ts +1 -1
- package/src/blocks/ListItemBlockContent/NumberedListItemBlockContent/NumberedListItemBlockContent.ts +4 -4
- package/src/blocks/ListItemBlockContent/getListItemContent.ts +5 -5
- package/src/blocks/PageBreakBlockContent/PageBreakBlockContent.ts +1 -1
- package/src/blocks/PageBreakBlockContent/getPageBreakSlashMenuItems.ts +3 -3
- package/src/blocks/PageBreakBlockContent/schema.ts +2 -2
- package/src/blocks/ParagraphBlockContent/ParagraphBlockContent.ts +3 -3
- package/src/blocks/QuoteBlockContent/QuoteBlockContent.ts +4 -4
- package/src/blocks/README.md +1 -1
- package/src/blocks/TableBlockContent/TableBlockContent.ts +5 -5
- package/src/blocks/TableBlockContent/TableExtension.ts +3 -3
- package/src/blocks/VideoBlockContent/VideoBlockContent.ts +4 -4
- package/src/blocks/defaultBlockHelpers.ts +8 -8
- package/src/blocks/defaultBlockTypeGuards.ts +16 -16
- package/src/blocks/defaultBlocks.ts +3 -3
- package/src/comments/threadstore/DefaultThreadStoreAuth.ts +3 -3
- package/src/comments/threadstore/ThreadStore.ts +1 -1
- package/src/comments/threadstore/TipTapThreadStore.ts +10 -10
- package/src/comments/threadstore/yjs/RESTYjsThreadStore.ts +4 -4
- package/src/comments/threadstore/yjs/YjsThreadStore.test.ts +2 -2
- package/src/comments/threadstore/yjs/YjsThreadStore.ts +14 -14
- package/src/comments/threadstore/yjs/YjsThreadStoreBase.ts +1 -1
- package/src/comments/threadstore/yjs/yjsHelpers.ts +6 -6
- package/src/editor/Block.css +8 -0
- package/src/editor/BlockNoteEditor.test.ts +3 -3
- package/src/editor/BlockNoteEditor.ts +7 -1
- package/src/editor/BlockNoteExtensions.ts +10 -10
- package/src/editor/BlockNoteSchema.ts +4 -4
- package/src/editor/BlockNoteTipTapEditor.ts +10 -10
- package/src/editor/README.md +1 -1
- package/src/editor/cursorPositionTypes.ts +1 -1
- package/src/editor/editor.css +15 -3
- package/src/editor/selectionTypes.ts +1 -1
- package/src/editor/transformPasted.ts +2 -2
- package/src/exporter/Exporter.ts +5 -5
- package/src/exporter/mapping.ts +7 -7
- package/src/extensions/BackgroundColor/BackgroundColorMark.ts +1 -1
- package/src/extensions/Collaboration/CursorPlugin.ts +2 -2
- package/src/extensions/Comments/CommentsPlugin.ts +9 -9
- package/src/extensions/Comments/userstore/UserStore.ts +2 -2
- package/src/extensions/FilePanel/FilePanelPlugin.ts +7 -7
- package/src/extensions/FormattingToolbar/FormattingToolbarPlugin.ts +4 -4
- package/src/extensions/KeyboardShortcuts/KeyboardShortcutsExtension.ts +26 -26
- package/src/extensions/LinkToolbar/LinkToolbarPlugin.ts +11 -11
- package/src/extensions/NodeSelectionKeyboard/NodeSelectionKeyboardPlugin.ts +4 -4
- package/src/extensions/Placeholder/PlaceholderPlugin.ts +10 -10
- package/src/extensions/PreviousBlockType/PreviousBlockTypePlugin.ts +2 -2
- package/src/extensions/README.md +1 -1
- package/src/extensions/SideMenu/MultipleNodeSelection.ts +1 -1
- package/src/extensions/SideMenu/SideMenuPlugin.ts +31 -31
- package/src/extensions/SideMenu/dragging.ts +8 -8
- package/src/extensions/SuggestionMenu/SuggestionPlugin.ts +17 -17
- package/src/extensions/SuggestionMenu/getDefaultEmojiPickerItems.ts +2 -2
- package/src/extensions/SuggestionMenu/getDefaultSlashMenuItems.ts +12 -12
- package/src/extensions/TableHandles/TableHandlesPlugin.ts +54 -53
- package/src/extensions/TrailingNode/TrailingNodeExtension.ts +1 -1
- package/src/extensions/UniqueID/UniqueID.ts +6 -6
- package/src/extensions/getDraggableBlockFromElement.ts +1 -1
- package/src/fonts/inter.css +18 -9
- package/src/locales.ts +1 -1
- package/src/pm-nodes/BlockGroup.ts +1 -1
- package/src/pm-nodes/Doc.ts +4 -4
- package/src/schema/README.md +1 -1
- package/src/schema/blocks/createSpec.ts +14 -14
- package/src/schema/blocks/internal.ts +17 -17
- package/src/schema/blocks/types.ts +25 -25
- package/src/schema/inlineContent/createSpec.ts +16 -20
- package/src/schema/inlineContent/internal.ts +9 -9
- package/src/schema/inlineContent/types.ts +26 -26
- package/src/schema/propTypes.ts +8 -8
- package/src/schema/styles/createSpec.ts +2 -2
- package/src/schema/styles/internal.ts +7 -7
- package/src/schema/styles/types.ts +2 -2
- package/src/util/EventEmitter.ts +4 -4
- package/src/util/README.md +1 -1
- package/src/util/combineByGroup.ts +1 -1
- package/src/util/table.ts +33 -30
- package/types/src/editor/BlockNoteEditor.d.ts +3 -1
|
@@ -18,7 +18,7 @@ function sinkListItem(itemType: NodeType, groupType: NodeType) {
|
|
|
18
18
|
$to,
|
|
19
19
|
(node) =>
|
|
20
20
|
node.childCount > 0 &&
|
|
21
|
-
(node.type.name === "blockGroup" || node.type.name === "column") // change necessary to not look at first item child type
|
|
21
|
+
(node.type.name === "blockGroup" || node.type.name === "column"), // change necessary to not look at first item child type
|
|
22
22
|
);
|
|
23
23
|
if (!range) {
|
|
24
24
|
return false;
|
|
@@ -38,10 +38,10 @@ function sinkListItem(itemType: NodeType, groupType: NodeType) {
|
|
|
38
38
|
const inner = Fragment.from(nestedBefore ? itemType.create() : null);
|
|
39
39
|
const slice = new Slice(
|
|
40
40
|
Fragment.from(
|
|
41
|
-
itemType.create(null, Fragment.from(groupType.create(null, inner))) // change necessary to create "groupType" instead of parent.type
|
|
41
|
+
itemType.create(null, Fragment.from(groupType.create(null, inner))), // change necessary to create "groupType" instead of parent.type
|
|
42
42
|
),
|
|
43
43
|
nestedBefore ? 3 : 1,
|
|
44
|
-
0
|
|
44
|
+
0,
|
|
45
45
|
);
|
|
46
46
|
|
|
47
47
|
const before = range.start;
|
|
@@ -56,10 +56,10 @@ function sinkListItem(itemType: NodeType, groupType: NodeType) {
|
|
|
56
56
|
after,
|
|
57
57
|
slice,
|
|
58
58
|
1,
|
|
59
|
-
true
|
|
60
|
-
)
|
|
59
|
+
true,
|
|
60
|
+
),
|
|
61
61
|
)
|
|
62
|
-
.scrollIntoView()
|
|
62
|
+
.scrollIntoView(),
|
|
63
63
|
);
|
|
64
64
|
}
|
|
65
65
|
return true;
|
|
@@ -70,8 +70,8 @@ export function nestBlock(editor: BlockNoteEditor<any, any, any>) {
|
|
|
70
70
|
return editor.exec((state, dispatch) =>
|
|
71
71
|
sinkListItem(
|
|
72
72
|
state.schema.nodes["blockContainer"],
|
|
73
|
-
state.schema.nodes["blockGroup"]
|
|
74
|
-
)(state, dispatch)
|
|
73
|
+
state.schema.nodes["blockGroup"],
|
|
74
|
+
)(state, dispatch),
|
|
75
75
|
);
|
|
76
76
|
}
|
|
77
77
|
|
|
@@ -11,10 +11,10 @@ const getEditor = setupTestEnv();
|
|
|
11
11
|
function replaceBlocks(
|
|
12
12
|
editor: BlockNoteEditor,
|
|
13
13
|
blocksToRemove: BlockIdentifier[],
|
|
14
|
-
blocksToInsert: PartialBlock<any, any, any>[]
|
|
14
|
+
blocksToInsert: PartialBlock<any, any, any>[],
|
|
15
15
|
) {
|
|
16
16
|
return editor.transact((tr) =>
|
|
17
|
-
removeAndInsertBlocks(tr, blocksToRemove, blocksToInsert)
|
|
17
|
+
removeAndInsertBlocks(tr, blocksToRemove, blocksToInsert),
|
|
18
18
|
);
|
|
19
19
|
}
|
|
20
20
|
|
|
@@ -29,7 +29,7 @@ describe("Test replaceBlocks", () => {
|
|
|
29
29
|
replaceBlocks(
|
|
30
30
|
getEditor(),
|
|
31
31
|
["paragraph-0", "paragraph-1", "paragraph-with-children"],
|
|
32
|
-
[]
|
|
32
|
+
[],
|
|
33
33
|
);
|
|
34
34
|
|
|
35
35
|
expect(getEditor().document).toMatchSnapshot();
|
|
@@ -39,7 +39,7 @@ describe("Test replaceBlocks", () => {
|
|
|
39
39
|
replaceBlocks(
|
|
40
40
|
getEditor(),
|
|
41
41
|
["paragraph-0", "table-0", "heading-with-everything"],
|
|
42
|
-
[]
|
|
42
|
+
[],
|
|
43
43
|
);
|
|
44
44
|
|
|
45
45
|
expect(getEditor().document).toMatchSnapshot();
|
|
@@ -55,7 +55,7 @@ describe("Test replaceBlocks", () => {
|
|
|
55
55
|
replaceBlocks(
|
|
56
56
|
getEditor(),
|
|
57
57
|
["paragraph-0", "paragraph-1", "paragraph-with-children"],
|
|
58
|
-
[{ type: "paragraph" }]
|
|
58
|
+
[{ type: "paragraph" }],
|
|
59
59
|
);
|
|
60
60
|
|
|
61
61
|
expect(getEditor().document).toMatchSnapshot();
|
|
@@ -65,7 +65,7 @@ describe("Test replaceBlocks", () => {
|
|
|
65
65
|
replaceBlocks(
|
|
66
66
|
getEditor(),
|
|
67
67
|
["paragraph-0", "table-0", "heading-with-everything"],
|
|
68
|
-
[{ type: "paragraph" }]
|
|
68
|
+
[{ type: "paragraph" }],
|
|
69
69
|
);
|
|
70
70
|
|
|
71
71
|
expect(getEditor().document).toMatchSnapshot();
|
|
@@ -79,7 +79,7 @@ describe("Test replaceBlocks", () => {
|
|
|
79
79
|
{ type: "paragraph", content: "Inserted paragraph 1" },
|
|
80
80
|
{ type: "paragraph", content: "Inserted paragraph 2" },
|
|
81
81
|
{ type: "paragraph", content: "Inserted paragraph 3" },
|
|
82
|
-
]
|
|
82
|
+
],
|
|
83
83
|
);
|
|
84
84
|
|
|
85
85
|
expect(getEditor().document).toMatchSnapshot();
|
|
@@ -93,7 +93,7 @@ describe("Test replaceBlocks", () => {
|
|
|
93
93
|
{ type: "paragraph", content: "Inserted paragraph 1" },
|
|
94
94
|
{ type: "paragraph", content: "Inserted paragraph 2" },
|
|
95
95
|
{ type: "paragraph", content: "Inserted paragraph 3" },
|
|
96
|
-
]
|
|
96
|
+
],
|
|
97
97
|
);
|
|
98
98
|
|
|
99
99
|
expect(getEditor().document).toMatchSnapshot();
|
|
@@ -107,7 +107,7 @@ describe("Test replaceBlocks", () => {
|
|
|
107
107
|
{ type: "paragraph", content: "Inserted paragraph 1" },
|
|
108
108
|
{ type: "paragraph", content: "Inserted paragraph 2" },
|
|
109
109
|
{ type: "paragraph", content: "Inserted paragraph 3" },
|
|
110
|
-
]
|
|
110
|
+
],
|
|
111
111
|
);
|
|
112
112
|
|
|
113
113
|
expect(getEditor().document).toMatchSnapshot();
|
|
@@ -147,7 +147,7 @@ describe("Test replaceBlocks", () => {
|
|
|
147
147
|
},
|
|
148
148
|
],
|
|
149
149
|
},
|
|
150
|
-
]
|
|
150
|
+
],
|
|
151
151
|
);
|
|
152
152
|
|
|
153
153
|
expect(getEditor().document).toMatchSnapshot();
|
|
@@ -187,7 +187,7 @@ describe("Test replaceBlocks", () => {
|
|
|
187
187
|
},
|
|
188
188
|
],
|
|
189
189
|
},
|
|
190
|
-
]
|
|
190
|
+
],
|
|
191
191
|
);
|
|
192
192
|
|
|
193
193
|
expect(getEditor().document).toMatchSnapshot();
|
|
@@ -227,7 +227,7 @@ describe("Test replaceBlocks", () => {
|
|
|
227
227
|
},
|
|
228
228
|
],
|
|
229
229
|
},
|
|
230
|
-
]
|
|
230
|
+
],
|
|
231
231
|
);
|
|
232
232
|
|
|
233
233
|
expect(getEditor().document).toMatchSnapshot();
|
|
@@ -14,11 +14,11 @@ import { getPmSchema } from "../../../pmUtil.js";
|
|
|
14
14
|
export function removeAndInsertBlocks<
|
|
15
15
|
BSchema extends BlockSchema,
|
|
16
16
|
I extends InlineContentSchema,
|
|
17
|
-
S extends StyleSchema
|
|
17
|
+
S extends StyleSchema,
|
|
18
18
|
>(
|
|
19
19
|
tr: Transaction,
|
|
20
20
|
blocksToRemove: BlockIdentifier[],
|
|
21
|
-
blocksToInsert: PartialBlock<BSchema, I, S>[]
|
|
21
|
+
blocksToInsert: PartialBlock<BSchema, I, S>[],
|
|
22
22
|
): {
|
|
23
23
|
insertedBlocks: Block<BSchema, I, S>[];
|
|
24
24
|
removedBlocks: Block<BSchema, I, S>[];
|
|
@@ -27,13 +27,13 @@ export function removeAndInsertBlocks<
|
|
|
27
27
|
// Converts the `PartialBlock`s to ProseMirror nodes to insert them into the
|
|
28
28
|
// document.
|
|
29
29
|
const nodesToInsert: Node[] = blocksToInsert.map((block) =>
|
|
30
|
-
blockToNode(block, pmSchema)
|
|
30
|
+
blockToNode(block, pmSchema),
|
|
31
31
|
);
|
|
32
32
|
|
|
33
33
|
const idsOfBlocksToRemove = new Set<string>(
|
|
34
34
|
blocksToRemove.map((block) =>
|
|
35
|
-
typeof block === "string" ? block : block.id
|
|
36
|
-
)
|
|
35
|
+
typeof block === "string" ? block : block.id,
|
|
36
|
+
),
|
|
37
37
|
);
|
|
38
38
|
const removedBlocks: Block<BSchema, I, S>[] = [];
|
|
39
39
|
|
|
@@ -95,13 +95,13 @@ export function removeAndInsertBlocks<
|
|
|
95
95
|
|
|
96
96
|
throw Error(
|
|
97
97
|
"Blocks with the following IDs could not be found in the editor: " +
|
|
98
|
-
notFoundIds
|
|
98
|
+
notFoundIds,
|
|
99
99
|
);
|
|
100
100
|
}
|
|
101
101
|
|
|
102
102
|
// Converts the nodes created from `blocksToInsert` into full `Block`s.
|
|
103
103
|
const insertedBlocks = nodesToInsert.map((node) =>
|
|
104
|
-
nodeToBlock(node, pmSchema)
|
|
104
|
+
nodeToBlock(node, pmSchema),
|
|
105
105
|
);
|
|
106
106
|
|
|
107
107
|
return { insertedBlocks, removedBlocks };
|
|
@@ -15,17 +15,17 @@ const getEditor = setupTestEnv();
|
|
|
15
15
|
function splitBlock(
|
|
16
16
|
posInBlock: number,
|
|
17
17
|
keepType?: boolean,
|
|
18
|
-
keepProps?: boolean
|
|
18
|
+
keepProps?: boolean,
|
|
19
19
|
) {
|
|
20
20
|
getEditor()._tiptapEditor.commands.command(
|
|
21
|
-
splitBlockCommand(posInBlock, keepType, keepProps)
|
|
21
|
+
splitBlockCommand(posInBlock, keepType, keepProps),
|
|
22
22
|
);
|
|
23
23
|
}
|
|
24
24
|
|
|
25
25
|
function setSelectionWithOffset(
|
|
26
26
|
doc: Node,
|
|
27
27
|
targetBlockId: string,
|
|
28
|
-
offset: number
|
|
28
|
+
offset: number,
|
|
29
29
|
) {
|
|
30
30
|
const posInfo = getNodeById(targetBlockId, doc);
|
|
31
31
|
if (!posInfo) {
|
|
@@ -40,8 +40,8 @@ function setSelectionWithOffset(
|
|
|
40
40
|
|
|
41
41
|
getEditor().transact((tr) =>
|
|
42
42
|
tr.setSelection(
|
|
43
|
-
TextSelection.create(doc, info.blockContent.beforePos + offset + 1)
|
|
44
|
-
)
|
|
43
|
+
TextSelection.create(doc, info.blockContent.beforePos + offset + 1),
|
|
44
|
+
),
|
|
45
45
|
);
|
|
46
46
|
}
|
|
47
47
|
|
|
@@ -83,7 +83,7 @@ describe("Test splitBlocks", () => {
|
|
|
83
83
|
|
|
84
84
|
splitBlock(
|
|
85
85
|
getEditor().transact((tr) => tr.selection.anchor),
|
|
86
|
-
true
|
|
86
|
+
true,
|
|
87
87
|
);
|
|
88
88
|
|
|
89
89
|
expect(getEditor().document).toMatchSnapshot();
|
|
@@ -96,7 +96,7 @@ describe("Test splitBlocks", () => {
|
|
|
96
96
|
|
|
97
97
|
splitBlock(
|
|
98
98
|
getEditor().transact((tr) => tr.selection.anchor),
|
|
99
|
-
false
|
|
99
|
+
false,
|
|
100
100
|
);
|
|
101
101
|
|
|
102
102
|
expect(getEditor().document).toMatchSnapshot();
|
|
@@ -110,7 +110,7 @@ describe("Test splitBlocks", () => {
|
|
|
110
110
|
splitBlock(
|
|
111
111
|
getEditor().transact((tr) => tr.selection.anchor),
|
|
112
112
|
false,
|
|
113
|
-
true
|
|
113
|
+
true,
|
|
114
114
|
);
|
|
115
115
|
|
|
116
116
|
expect(getEditor().document).toMatchSnapshot();
|
|
@@ -124,7 +124,7 @@ describe("Test splitBlocks", () => {
|
|
|
124
124
|
splitBlock(
|
|
125
125
|
getEditor().transact((tr) => tr.selection.anchor),
|
|
126
126
|
false,
|
|
127
|
-
false
|
|
127
|
+
false,
|
|
128
128
|
);
|
|
129
129
|
|
|
130
130
|
expect(getEditor().document).toMatchSnapshot();
|
|
@@ -138,7 +138,7 @@ describe("Test splitBlocks", () => {
|
|
|
138
138
|
splitBlock(getEditor().transact((tr) => tr.selection.anchor));
|
|
139
139
|
|
|
140
140
|
const bnBlock = getEditor().transact(
|
|
141
|
-
(tr) => getBlockInfoFromTransaction(tr).bnBlock
|
|
141
|
+
(tr) => getBlockInfoFromTransaction(tr).bnBlock,
|
|
142
142
|
);
|
|
143
143
|
|
|
144
144
|
const anchorIsAtStartOfNewBlock =
|
|
@@ -8,7 +8,7 @@ import {
|
|
|
8
8
|
export const splitBlockCommand = (
|
|
9
9
|
posInBlock: number,
|
|
10
10
|
keepType?: boolean,
|
|
11
|
-
keepProps?: boolean
|
|
11
|
+
keepProps?: boolean,
|
|
12
12
|
) => {
|
|
13
13
|
return ({
|
|
14
14
|
state,
|
|
@@ -23,7 +23,7 @@ export const splitBlockCommand = (
|
|
|
23
23
|
|
|
24
24
|
if (!info.isBlockContainer) {
|
|
25
25
|
throw new Error(
|
|
26
|
-
`BlockContainer expected when calling splitBlock, position ${posInBlock}
|
|
26
|
+
`BlockContainer expected when calling splitBlock, position ${posInBlock}`,
|
|
27
27
|
);
|
|
28
28
|
}
|
|
29
29
|
|
|
@@ -13,7 +13,7 @@ describe("Test updateBlock typing", () => {
|
|
|
13
13
|
{
|
|
14
14
|
// @ts-expect-error invalid type
|
|
15
15
|
type: "non-existing",
|
|
16
|
-
}
|
|
16
|
+
},
|
|
17
17
|
);
|
|
18
18
|
} catch (e) {
|
|
19
19
|
// ID doesn't exist, which is fine - this is a compile-time check
|
|
@@ -30,7 +30,7 @@ describe("Test updateBlock typing", () => {
|
|
|
30
30
|
// @ts-expect-error invalid type
|
|
31
31
|
level: 1,
|
|
32
32
|
},
|
|
33
|
-
}
|
|
33
|
+
},
|
|
34
34
|
);
|
|
35
35
|
} catch (e) {
|
|
36
36
|
// ID doesn't exist, which is fine - this is a compile-time check
|
|
@@ -43,7 +43,7 @@ describe("Test updateBlock typing", () => {
|
|
|
43
43
|
props: {
|
|
44
44
|
level: 1,
|
|
45
45
|
},
|
|
46
|
-
}
|
|
46
|
+
},
|
|
47
47
|
);
|
|
48
48
|
} catch (e) {
|
|
49
49
|
// ID doesn't exist, which is fine - this is a compile-time check
|
|
@@ -57,8 +57,8 @@ describe("Test updateBlock", () => {
|
|
|
57
57
|
getEditor().transact((tr) =>
|
|
58
58
|
updateBlock(tr, "heading-with-everything", {
|
|
59
59
|
id: "new-id",
|
|
60
|
-
})
|
|
61
|
-
)
|
|
60
|
+
}),
|
|
61
|
+
),
|
|
62
62
|
).toMatchSnapshot();
|
|
63
63
|
expect(getEditor().document).toMatchSnapshot();
|
|
64
64
|
});
|
|
@@ -68,8 +68,8 @@ describe("Test updateBlock", () => {
|
|
|
68
68
|
getEditor().transact((tr) =>
|
|
69
69
|
updateBlock(tr, "heading-with-everything", {
|
|
70
70
|
type: "paragraph",
|
|
71
|
-
})
|
|
72
|
-
)
|
|
71
|
+
}),
|
|
72
|
+
),
|
|
73
73
|
).toMatchSnapshot();
|
|
74
74
|
|
|
75
75
|
expect(getEditor().document).toMatchSnapshot();
|
|
@@ -82,8 +82,8 @@ describe("Test updateBlock", () => {
|
|
|
82
82
|
props: {
|
|
83
83
|
level: 3,
|
|
84
84
|
},
|
|
85
|
-
})
|
|
86
|
-
)
|
|
85
|
+
}),
|
|
86
|
+
),
|
|
87
87
|
).toMatchSnapshot();
|
|
88
88
|
|
|
89
89
|
expect(getEditor().document).toMatchSnapshot();
|
|
@@ -99,8 +99,8 @@ describe("Test updateBlock", () => {
|
|
|
99
99
|
textAlignment: "right",
|
|
100
100
|
textColor: "blue",
|
|
101
101
|
},
|
|
102
|
-
})
|
|
103
|
-
)
|
|
102
|
+
}),
|
|
103
|
+
),
|
|
104
104
|
).toMatchSnapshot();
|
|
105
105
|
|
|
106
106
|
expect(getEditor().document).toMatchSnapshot();
|
|
@@ -113,8 +113,8 @@ describe("Test updateBlock", () => {
|
|
|
113
113
|
props: {
|
|
114
114
|
level: undefined,
|
|
115
115
|
},
|
|
116
|
-
})
|
|
117
|
-
)
|
|
116
|
+
}),
|
|
117
|
+
),
|
|
118
118
|
).toMatchSnapshot();
|
|
119
119
|
|
|
120
120
|
expect(getEditor().document).toMatchSnapshot();
|
|
@@ -130,8 +130,8 @@ describe("Test updateBlock", () => {
|
|
|
130
130
|
textAlignment: undefined,
|
|
131
131
|
textColor: undefined,
|
|
132
132
|
},
|
|
133
|
-
})
|
|
134
|
-
)
|
|
133
|
+
}),
|
|
134
|
+
),
|
|
135
135
|
).toMatchSnapshot();
|
|
136
136
|
|
|
137
137
|
expect(getEditor().document).toMatchSnapshot();
|
|
@@ -142,8 +142,8 @@ describe("Test updateBlock", () => {
|
|
|
142
142
|
getEditor().transact((tr) =>
|
|
143
143
|
updateBlock(tr, "heading-with-everything", {
|
|
144
144
|
content: "New content",
|
|
145
|
-
})
|
|
146
|
-
)
|
|
145
|
+
}),
|
|
146
|
+
),
|
|
147
147
|
).toMatchSnapshot();
|
|
148
148
|
|
|
149
149
|
expect(getEditor().document).toMatchSnapshot();
|
|
@@ -166,8 +166,8 @@ describe("Test updateBlock", () => {
|
|
|
166
166
|
styles: { backgroundColor: "blue" },
|
|
167
167
|
},
|
|
168
168
|
],
|
|
169
|
-
})
|
|
170
|
-
)
|
|
169
|
+
}),
|
|
170
|
+
),
|
|
171
171
|
).toMatchSnapshot();
|
|
172
172
|
|
|
173
173
|
expect(getEditor().document).toMatchSnapshot();
|
|
@@ -191,8 +191,8 @@ describe("Test updateBlock", () => {
|
|
|
191
191
|
],
|
|
192
192
|
},
|
|
193
193
|
],
|
|
194
|
-
})
|
|
195
|
-
)
|
|
194
|
+
}),
|
|
195
|
+
),
|
|
196
196
|
).toMatchSnapshot();
|
|
197
197
|
|
|
198
198
|
expect(getEditor().document).toMatchSnapshot();
|
|
@@ -236,8 +236,8 @@ describe("Test updateBlock", () => {
|
|
|
236
236
|
],
|
|
237
237
|
},
|
|
238
238
|
],
|
|
239
|
-
})
|
|
240
|
-
)
|
|
239
|
+
}),
|
|
240
|
+
),
|
|
241
241
|
).toMatchSnapshot();
|
|
242
242
|
|
|
243
243
|
expect(getEditor().document).toMatchSnapshot();
|
|
@@ -248,7 +248,7 @@ describe("Test updateBlock", () => {
|
|
|
248
248
|
getEditor().transact((tr) =>
|
|
249
249
|
updateBlock(tr, "paragraph-0", {
|
|
250
250
|
type: "table",
|
|
251
|
-
})
|
|
251
|
+
}),
|
|
252
252
|
);
|
|
253
253
|
}).toThrow();
|
|
254
254
|
});
|
|
@@ -258,8 +258,8 @@ describe("Test updateBlock", () => {
|
|
|
258
258
|
getEditor().transact((tr) =>
|
|
259
259
|
updateBlock(tr, "table-0", {
|
|
260
260
|
type: "paragraph",
|
|
261
|
-
})
|
|
262
|
-
)
|
|
261
|
+
}),
|
|
262
|
+
),
|
|
263
263
|
).toMatchSnapshot();
|
|
264
264
|
|
|
265
265
|
expect(getEditor().document).toMatchSnapshot();
|
|
@@ -284,8 +284,8 @@ describe("Test updateBlock", () => {
|
|
|
284
284
|
},
|
|
285
285
|
],
|
|
286
286
|
},
|
|
287
|
-
})
|
|
288
|
-
)
|
|
287
|
+
}),
|
|
288
|
+
),
|
|
289
289
|
).toMatchSnapshot();
|
|
290
290
|
|
|
291
291
|
expect(getEditor().document).toMatchSnapshot();
|
|
@@ -297,8 +297,8 @@ describe("Test updateBlock", () => {
|
|
|
297
297
|
updateBlock(tr, "table-0", {
|
|
298
298
|
type: "paragraph",
|
|
299
299
|
content: "Paragraph",
|
|
300
|
-
})
|
|
301
|
-
)
|
|
300
|
+
}),
|
|
301
|
+
),
|
|
302
302
|
).toMatchSnapshot();
|
|
303
303
|
|
|
304
304
|
expect(getEditor().document).toMatchSnapshot();
|
|
@@ -309,8 +309,8 @@ describe("Test updateBlock", () => {
|
|
|
309
309
|
getEditor().transact((tr) =>
|
|
310
310
|
updateBlock(tr, "paragraph-0", {
|
|
311
311
|
type: "image",
|
|
312
|
-
})
|
|
313
|
-
)
|
|
312
|
+
}),
|
|
313
|
+
),
|
|
314
314
|
).toMatchSnapshot();
|
|
315
315
|
|
|
316
316
|
expect(getEditor().document).toMatchSnapshot();
|
|
@@ -321,8 +321,8 @@ describe("Test updateBlock", () => {
|
|
|
321
321
|
getEditor().transact((tr) =>
|
|
322
322
|
updateBlock(tr, "image-0", {
|
|
323
323
|
type: "paragraph",
|
|
324
|
-
})
|
|
325
|
-
)
|
|
324
|
+
}),
|
|
325
|
+
),
|
|
326
326
|
).toMatchSnapshot();
|
|
327
327
|
|
|
328
328
|
expect(getEditor().document).toMatchSnapshot();
|
|
@@ -334,8 +334,8 @@ describe("Test updateBlock", () => {
|
|
|
334
334
|
updateBlock(tr, "image-0", {
|
|
335
335
|
type: "paragraph",
|
|
336
336
|
content: "Paragraph",
|
|
337
|
-
})
|
|
338
|
-
)
|
|
337
|
+
}),
|
|
338
|
+
),
|
|
339
339
|
).toMatchSnapshot();
|
|
340
340
|
|
|
341
341
|
expect(getEditor().document).toMatchSnapshot();
|
|
@@ -346,8 +346,8 @@ describe("Test updateBlock", () => {
|
|
|
346
346
|
getEditor().transact((tr) =>
|
|
347
347
|
updateBlock(tr, "image-0", {
|
|
348
348
|
type: "table",
|
|
349
|
-
})
|
|
350
|
-
)
|
|
349
|
+
}),
|
|
350
|
+
),
|
|
351
351
|
).toMatchSnapshot();
|
|
352
352
|
|
|
353
353
|
expect(getEditor().document).toMatchSnapshot();
|
|
@@ -399,8 +399,8 @@ describe("Test updateBlock", () => {
|
|
|
399
399
|
},
|
|
400
400
|
],
|
|
401
401
|
},
|
|
402
|
-
})
|
|
403
|
-
)
|
|
402
|
+
}),
|
|
403
|
+
),
|
|
404
404
|
).toMatchSnapshot();
|
|
405
405
|
|
|
406
406
|
expect(getEditor().document).toMatchSnapshot();
|
|
@@ -411,8 +411,8 @@ describe("Test updateBlock", () => {
|
|
|
411
411
|
getEditor().transact((tr) =>
|
|
412
412
|
updateBlock(tr, "table-0", {
|
|
413
413
|
type: "image",
|
|
414
|
-
})
|
|
415
|
-
)
|
|
414
|
+
}),
|
|
415
|
+
),
|
|
416
416
|
).toMatchSnapshot();
|
|
417
417
|
|
|
418
418
|
expect(getEditor().document).toMatchSnapshot();
|
|
@@ -31,10 +31,10 @@ import { getPmSchema } from "../../../pmUtil.js";
|
|
|
31
31
|
export const updateBlockCommand = <
|
|
32
32
|
BSchema extends BlockSchema,
|
|
33
33
|
I extends InlineContentSchema,
|
|
34
|
-
S extends StyleSchema
|
|
34
|
+
S extends StyleSchema,
|
|
35
35
|
>(
|
|
36
36
|
posBeforeBlock: number,
|
|
37
|
-
block: PartialBlock<BSchema, I, S
|
|
37
|
+
block: PartialBlock<BSchema, I, S>,
|
|
38
38
|
) => {
|
|
39
39
|
return ({
|
|
40
40
|
tr,
|
|
@@ -53,11 +53,11 @@ export const updateBlockCommand = <
|
|
|
53
53
|
const updateBlockTr = <
|
|
54
54
|
BSchema extends BlockSchema,
|
|
55
55
|
I extends InlineContentSchema,
|
|
56
|
-
S extends StyleSchema
|
|
56
|
+
S extends StyleSchema,
|
|
57
57
|
>(
|
|
58
58
|
tr: Transaction,
|
|
59
59
|
posBeforeBlock: number,
|
|
60
|
-
block: PartialBlock<BSchema, I, S
|
|
60
|
+
block: PartialBlock<BSchema, I, S>,
|
|
61
61
|
) => {
|
|
62
62
|
const blockInfo = getBlockInfoFromResolvedPos(tr.doc.resolve(posBeforeBlock));
|
|
63
63
|
|
|
@@ -96,8 +96,8 @@ const updateBlockTr = <
|
|
|
96
96
|
children: existingBlock.children, // if no children are passed in, use existing children
|
|
97
97
|
...block,
|
|
98
98
|
},
|
|
99
|
-
pmSchema
|
|
100
|
-
)
|
|
99
|
+
pmSchema,
|
|
100
|
+
),
|
|
101
101
|
);
|
|
102
102
|
|
|
103
103
|
return;
|
|
@@ -114,7 +114,7 @@ const updateBlockTr = <
|
|
|
114
114
|
function updateBlockContentNode<
|
|
115
115
|
BSchema extends BlockSchema,
|
|
116
116
|
I extends InlineContentSchema,
|
|
117
|
-
S extends StyleSchema
|
|
117
|
+
S extends StyleSchema,
|
|
118
118
|
>(
|
|
119
119
|
block: PartialBlock<BSchema, I, S>,
|
|
120
120
|
tr: Transaction,
|
|
@@ -125,7 +125,7 @@ function updateBlockContentNode<
|
|
|
125
125
|
| { node: PMNode; beforePos: number; afterPos: number }
|
|
126
126
|
| undefined;
|
|
127
127
|
blockContent: { node: PMNode; beforePos: number; afterPos: number };
|
|
128
|
-
}
|
|
128
|
+
},
|
|
129
129
|
) {
|
|
130
130
|
const pmSchema = getPmSchema(tr);
|
|
131
131
|
let content: PMNode[] | "keep" = "keep";
|
|
@@ -137,7 +137,7 @@ function updateBlockContentNode<
|
|
|
137
137
|
content = inlineContentToNodes(
|
|
138
138
|
[block.content],
|
|
139
139
|
pmSchema,
|
|
140
|
-
newNodeType.name
|
|
140
|
+
newNodeType.name,
|
|
141
141
|
);
|
|
142
142
|
} else if (Array.isArray(block.content)) {
|
|
143
143
|
// Adds a text node with the provided styles converted into marks to the content,
|
|
@@ -178,7 +178,7 @@ function updateBlockContentNode<
|
|
|
178
178
|
{
|
|
179
179
|
...blockInfo.blockContent.node.attrs,
|
|
180
180
|
...block.props,
|
|
181
|
-
}
|
|
181
|
+
},
|
|
182
182
|
);
|
|
183
183
|
} else {
|
|
184
184
|
// use replaceWith to replace the content and the block itself
|
|
@@ -192,8 +192,8 @@ function updateBlockContentNode<
|
|
|
192
192
|
...blockInfo.blockContent.node.attrs,
|
|
193
193
|
...block.props,
|
|
194
194
|
},
|
|
195
|
-
content
|
|
196
|
-
)
|
|
195
|
+
content,
|
|
196
|
+
),
|
|
197
197
|
);
|
|
198
198
|
}
|
|
199
199
|
}
|
|
@@ -201,7 +201,7 @@ function updateBlockContentNode<
|
|
|
201
201
|
function updateChildren<
|
|
202
202
|
BSchema extends BlockSchema,
|
|
203
203
|
I extends InlineContentSchema,
|
|
204
|
-
S extends StyleSchema
|
|
204
|
+
S extends StyleSchema,
|
|
205
205
|
>(block: PartialBlock<BSchema, I, S>, tr: Transaction, blockInfo: BlockInfo) {
|
|
206
206
|
const pmSchema = getPmSchema(tr);
|
|
207
207
|
if (block.children !== undefined && block.children.length > 0) {
|
|
@@ -218,8 +218,8 @@ function updateChildren<
|
|
|
218
218
|
new ReplaceStep(
|
|
219
219
|
blockInfo.childContainer.beforePos + 1,
|
|
220
220
|
blockInfo.childContainer.afterPos - 1,
|
|
221
|
-
new Slice(Fragment.from(childNodes), 0, 0)
|
|
222
|
-
)
|
|
221
|
+
new Slice(Fragment.from(childNodes), 0, 0),
|
|
222
|
+
),
|
|
223
223
|
);
|
|
224
224
|
} else {
|
|
225
225
|
if (!blockInfo.isBlockContainer) {
|
|
@@ -228,7 +228,7 @@ function updateChildren<
|
|
|
228
228
|
// Inserts a new blockGroup containing the child nodes created earlier.
|
|
229
229
|
tr.insert(
|
|
230
230
|
blockInfo.blockContent.afterPos,
|
|
231
|
-
pmSchema.nodes["blockGroup"].createChecked({}, childNodes)
|
|
231
|
+
pmSchema.nodes["blockGroup"].createChecked({}, childNodes),
|
|
232
232
|
);
|
|
233
233
|
}
|
|
234
234
|
}
|
|
@@ -237,11 +237,11 @@ function updateChildren<
|
|
|
237
237
|
export function updateBlock<
|
|
238
238
|
BSchema extends BlockSchema = any,
|
|
239
239
|
I extends InlineContentSchema = any,
|
|
240
|
-
S extends StyleSchema = any
|
|
240
|
+
S extends StyleSchema = any,
|
|
241
241
|
>(
|
|
242
242
|
tr: Transaction,
|
|
243
243
|
blockToUpdate: BlockIdentifier,
|
|
244
|
-
update: PartialBlock<BSchema, I, S
|
|
244
|
+
update: PartialBlock<BSchema, I, S>,
|
|
245
245
|
): Block<BSchema, I, S> {
|
|
246
246
|
const id =
|
|
247
247
|
typeof blockToUpdate === "string" ? blockToUpdate : blockToUpdate.id;
|