Something went wrong. Try again.
a tool for shared writing and social publishing
Something went wrong. Try again.
636 B · 28 lines
TypeScript
1234567891011121314151617181920212223242526272829import { MarkType, Node } from "prosemirror-model";
export function findMarkRange( doc: Node, markType: MarkType, from: number, to?: number,) { let start = from; let end = to ?? from; let $start = doc.resolve(start); let $end = doc.resolve(end); while ( $start.nodeBefore && $start.nodeBefore.marks.some((m) => m.type === markType) ) { start -= $start.nodeBefore.nodeSize; $start = doc.resolve(start); } while ( $end.nodeAfter && $end.nodeAfter.marks.some((m) => m.type === markType) ) { end += $end.nodeAfter.nodeSize; $end = doc.resolve(end); } return { start, end };}