Files
tiptap/packages/core/src/helpers/getMarkAttributes.ts
Philipp Kühn 4407d9a3d1 improve types
2021-01-28 09:50:17 +01:00

27 lines
710 B
TypeScript

import { EditorState } from 'prosemirror-state'
import { Mark, MarkType } from 'prosemirror-model'
import getMarkType from './getMarkType'
import { AnyObject } from '../types'
export default function getMarkAttributes(state: EditorState, typeOrName: string | MarkType): AnyObject {
const type = getMarkType(typeOrName, state.schema)
const { from, to, empty } = state.selection
let marks: Mark[] = []
if (empty) {
marks = state.selection.$head.marks()
} else {
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 {}
}