I’m new to ProseMirror and would like to know if the below is the best practice for how one would make a TextSelection at the node they just found via view.posAtDOM
handleDOMEvents: {
mouseover: (view, event) => {
const pos = editor.view.posAtDOM(event.target, 0);
const node = editor.state.doc.nodeAt(pos);
const linkMark = node?.marks.find(mark => mark.type.name === "link")
if (!linkMark) return false;
const resolvedPos = editor.state.doc.resolve(pos);
const resolvedEndPos = editor.state.doc.resolve(pos + node.nodeSize);
editor.view.dispatch(
editor.state.tr.setSelection(
new TextSelection(resolvedPos, resolvedEndPos)
)
);
return false;
}
}
In the above, I successfully detected when the user hovered over a node with a link. I then set the selection to that node.
It currently seems to work, but I don’t know if it is working by chance. Is this how one would properly use pos
and pos + node.nodeSize
?