32 lines
682 B
TypeScript
32 lines
682 B
TypeScript
import { Mark } from "prosemirror-model";
|
|
import { EditorState } from "prosemirror-state";
|
|
|
|
/**
|
|
* Get all marks that are applied to text between two positions.
|
|
*
|
|
* @param start The start position
|
|
* @param end The end position
|
|
* @param state The editor state
|
|
* @returns A list of marks
|
|
*/
|
|
export function getMarksBetween(
|
|
start: number,
|
|
end: number,
|
|
state: EditorState
|
|
) {
|
|
let marks: { start: number; end: number; mark: Mark }[] = [];
|
|
|
|
state.doc.nodesBetween(start, end, (node, pos) => {
|
|
marks = [
|
|
...marks,
|
|
...node.marks.map((mark) => ({
|
|
start: pos,
|
|
end: pos + node.nodeSize,
|
|
mark,
|
|
})),
|
|
];
|
|
});
|
|
|
|
return marks;
|
|
}
|