diff --git a/packages/core/src/commands/setNodeSelection.ts b/packages/core/src/commands/setNodeSelection.ts index 6427d27ba4..2ec8722fa2 100644 --- a/packages/core/src/commands/setNodeSelection.ts +++ b/packages/core/src/commands/setNodeSelection.ts @@ -1,4 +1,5 @@ import { NodeSelection } from 'prosemirror-state' +import minMax from '../utilities/minMax' import { Command, RawCommands } from '../types' declare module '@tiptap/core' { @@ -14,7 +15,9 @@ declare module '@tiptap/core' { export const setNodeSelection: RawCommands['setNodeSelection'] = position => ({ tr, dispatch }) => { if (dispatch) { - const selection = NodeSelection.create(tr.doc, position) + const { doc } = tr + const from = minMax(position, 0, doc.content.size) + const selection = NodeSelection.create(doc, from) tr.setSelection(selection) } diff --git a/packages/core/src/commands/setTextSelection.ts b/packages/core/src/commands/setTextSelection.ts index e25cfd9813..068ad10549 100644 --- a/packages/core/src/commands/setTextSelection.ts +++ b/packages/core/src/commands/setTextSelection.ts @@ -1,4 +1,5 @@ import { TextSelection } from 'prosemirror-state' +import minMax from '../utilities/minMax' import { Command, RawCommands, Range } from '../types' declare module '@tiptap/core' { @@ -14,7 +15,10 @@ declare module '@tiptap/core' { export const setTextSelection: RawCommands['setTextSelection'] = range => ({ tr, dispatch }) => { if (dispatch) { - const selection = TextSelection.create(tr.doc, range.from, range.to) + const { doc } = tr + const from = minMax(range.from, 0, doc.content.size) + const to = minMax(range.to, 0, doc.content.size) + const selection = TextSelection.create(doc, from, to) tr.setSelection(selection) }