diff --git a/packages/tiptap-core/src/utils/getMarkAttrs.ts b/packages/tiptap-core/src/utils/getMarkAttrs.ts new file mode 100644 index 00000000..3dd7ae8f --- /dev/null +++ b/packages/tiptap-core/src/utils/getMarkAttrs.ts @@ -0,0 +1,19 @@ +import { EditorState } from 'prosemirror-state' +import { Mark, MarkType } from 'prosemirror-model' + +export default function getMarkAttrs(state: EditorState, type: MarkType) { + const { from, to } = state.selection + let marks: Mark[] = [] + + state.doc.nodesBetween(from, to, node => { + marks = [...marks, ...node.marks] + }) + + const mark = marks.find(markItem => markItem.type.name === type.name) + + if (mark) { + return mark.attrs + } + + return {} +}