@tiptap/core
Version:
headless rich text editor
30 lines (24 loc) • 764 B
text/typescript
import { NodeSelection } from '@tiptap/pm/state'
import { RawCommands } from '../types.js'
import { minMax } from '../utilities/minMax.js'
declare module '@tiptap/core' {
interface Commands<ReturnType> {
setNodeSelection: {
/**
* Creates a NodeSelection.
* @param position - Position of the node.
* @example editor.commands.setNodeSelection(10)
*/
setNodeSelection: (position: number) => ReturnType
}
}
}
export const setNodeSelection: RawCommands['setNodeSelection'] = position => ({ tr, dispatch }) => {
if (dispatch) {
const { doc } = tr
const from = minMax(position, 0, doc.content.size)
const selection = NodeSelection.create(doc, from)
tr.setSelection(selection)
}
return true
}