diff --git a/packages/extension-horizontal-rule/src/horizontal-rule.ts b/packages/extension-horizontal-rule/src/horizontal-rule.ts index 680bc275..0e8b0e50 100644 --- a/packages/extension-horizontal-rule/src/horizontal-rule.ts +++ b/packages/extension-horizontal-rule/src/horizontal-rule.ts @@ -42,28 +42,31 @@ export const HorizontalRule = Node.create({ addCommands() { return { - setHorizontalRule: () => ({ tr, dispatch }) => { - if (dispatch) { - tr.replaceSelectionWith(this.type.create()) + setHorizontalRule: () => ({ chain }) => { + return chain() + .insertContent({ type: this.name }) + .command(({ tr, dispatch }) => { + if (dispatch) { + const { parent, pos } = tr.selection.$from + const posAfter = pos + 1 + const nodeAfter = tr.doc.nodeAt(posAfter) - const { parent, pos } = tr.selection.$from - const posAfter = pos + 1 - const nodeAfter = tr.doc.nodeAt(posAfter) + // end of document + if (!nodeAfter) { + const node = parent.type.contentMatch.defaultType?.create() - // end of document - if (!nodeAfter) { - const node = parent.type.contentMatch.defaultType?.create() + if (node) { + tr.insert(posAfter, node) + tr.setSelection(TextSelection.create(tr.doc, posAfter)) + } + } - if (node) { - tr.insert(posAfter, node) - tr.setSelection(TextSelection.create(tr.doc, posAfter)) + tr.scrollIntoView() } - } - tr.scrollIntoView() - } - - return true + return true + }) + .run() }, } }, diff --git a/packages/extension-image/src/image.ts b/packages/extension-image/src/image.ts index 7e45a6f5..987d893c 100644 --- a/packages/extension-image/src/image.ts +++ b/packages/extension-image/src/image.ts @@ -69,15 +69,11 @@ export const Image = Node.create({ addCommands() { return { - setImage: options => ({ tr, dispatch }) => { - const { selection } = tr - const node = this.type.create(options) - - if (dispatch) { - tr.replaceRangeWith(selection.from, selection.to, node) - } - - return true + setImage: options => ({ commands }) => { + return commands.insertContent({ + type: this.name, + attrs: options, + }) }, } },