add list of current commands

This commit is contained in:
Philipp Kühn
2020-04-22 09:23:53 +02:00
parent adb44f317c
commit 0e18e67c93
4 changed files with 38 additions and 6 deletions

View File

@@ -0,0 +1,32 @@
import { NodeType } from 'prosemirror-model'
import { setBlockType } from 'prosemirror-commands'
import { Editor } from '../Editor'
import nodeIsActive from '../utils/nodeIsActive'
import getNodeType from '../utils/getNodeType'
type ToggleNode = (
type: string | NodeType,
toggleType: string | NodeType,
attrs?: {}
) => any
declare module '../Editor' {
interface Editor {
toggleNode: ToggleNode,
}
}
export default (next: Function, editor: Editor): ToggleNode => (typeOrName, toggleTypeOrName, attrs) => {
const { view, state, schema } = editor
const type = getNodeType(typeOrName, schema)
const toggleType = getNodeType(toggleTypeOrName, schema)
const isActive = nodeIsActive(state, type, attrs)
if (isActive) {
setBlockType(toggleType)(view.state, view.dispatch)
} else {
setBlockType(type, attrs)(view.state, view.dispatch)
}
next()
}