refactoring

This commit is contained in:
Hans Pagel
2020-10-08 03:44:18 +02:00
parent 3b01b5b219
commit 19e040df42
2 changed files with 15 additions and 5 deletions

View File

@@ -15,7 +15,11 @@ declare module '../Editor' {
export const toggleMark: ToggleMarkCommand = (typeOrName, attrs) => ({ state, dispatch, commands }) => {
const type = getMarkType(typeOrName, state.schema)
if (markIsActive(state, type) && !markIsActive(state, type, attrs)) {
const hasMarkWithDifferentAttributes = attrs
&& markIsActive(state, type)
&& !markIsActive(state, type, attrs)
if (hasMarkWithDifferentAttributes) {
// @ts-ignore
return commands.updateMark(type, attrs)
}

View File

@@ -2,8 +2,14 @@ import { EditorState } from 'prosemirror-state'
import { MarkType } from 'prosemirror-model'
import getMarkAttrs from './getMarkAttrs'
export default function markHasAttributes(state: EditorState, type: MarkType, attrs?: Object) {
return attrs === undefined || JSON.stringify(attrs) === JSON.stringify(
getMarkAttrs(state, type),
)
export default function markHasAttributes(state: EditorState, type: MarkType, attrs?: { [key: string]: any }) {
if (attrs === undefined) {
return true
}
const originalAttrs: { [key: string]: any } = getMarkAttrs(state, type)
return Object.keys(attrs).filter((key: string) => {
return attrs[key] === originalAttrs[key]
}).length
}