From 3d02da20fffe8e897fcdda50411e43b37e6365fc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Philipp=20Ku=CC=88hn?= Date: Wed, 22 Apr 2020 00:09:31 +0200 Subject: [PATCH] add getNodeType --- packages/core/src/commands/toggleBlockType.ts | 11 +++++++---- packages/core/src/utils/getNodeType.ts | 9 +++++++++ packages/extension-heading/index.ts | 2 +- 3 files changed, 17 insertions(+), 5 deletions(-) create mode 100644 packages/core/src/utils/getNodeType.ts diff --git a/packages/core/src/commands/toggleBlockType.ts b/packages/core/src/commands/toggleBlockType.ts index 35277d6a..fdbc2015 100644 --- a/packages/core/src/commands/toggleBlockType.ts +++ b/packages/core/src/commands/toggleBlockType.ts @@ -2,10 +2,11 @@ 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 ToggleBlockType = ( - type: NodeType, - toggleType: NodeType, + type: string | NodeType, + toggleType: string | NodeType, attrs?: {} ) => any @@ -15,8 +16,10 @@ declare module '../Editor' { } } -export default (next: Function, editor: Editor): ToggleBlockType => (type, toggleType, attrs) => { - const { view, state } = editor +export default (next: Function, editor: Editor): ToggleBlockType => (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) { diff --git a/packages/core/src/utils/getNodeType.ts b/packages/core/src/utils/getNodeType.ts new file mode 100644 index 00000000..58da4f70 --- /dev/null +++ b/packages/core/src/utils/getNodeType.ts @@ -0,0 +1,9 @@ +import { NodeType, Schema } from 'prosemirror-model' + +export default function getNodeType(nameOrType: string | NodeType, schema: Schema): NodeType { + if (typeof nameOrType === 'string') { + return schema.nodes[nameOrType] + } + + return nameOrType +} diff --git a/packages/extension-heading/index.ts b/packages/extension-heading/index.ts index b5e200d9..8471a7b6 100644 --- a/packages/extension-heading/index.ts +++ b/packages/extension-heading/index.ts @@ -48,7 +48,7 @@ export default class Heading extends Node { commands(): CommandSpec { return { heading: next => attrs => { - this.editor.toggleBlockType(this.type, this.editor.schema.nodes.paragraph, attrs) + this.editor.toggleBlockType(this.name, 'paragraph', attrs) next() }, }