From ca0144cfc339d3d2eb67f3cc1f9c163749d6e4f2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Philipp=20Ku=CC=88hn?= Date: Wed, 14 Nov 2018 10:58:14 +0100 Subject: [PATCH] refactoring --- packages/tiptap/src/{utils => }/Editor.js | 49 ++++++++++++++++------ packages/tiptap/src/index.js | 11 ++--- packages/tiptap/src/utils/builtInKeymap.js | 9 ---- packages/tiptap/src/utils/index.js | 5 ++- packages/tiptap/src/utils/initNodeViews.js | 27 ------------ packages/tiptap/test/Editor.spec.js | 2 +- 6 files changed, 43 insertions(+), 60 deletions(-) rename packages/tiptap/src/{utils => }/Editor.js (85%) delete mode 100644 packages/tiptap/src/utils/builtInKeymap.js delete mode 100644 packages/tiptap/src/utils/initNodeViews.js diff --git a/packages/tiptap/src/utils/Editor.js b/packages/tiptap/src/Editor.js similarity index 85% rename from packages/tiptap/src/utils/Editor.js rename to packages/tiptap/src/Editor.js index 11b2652a..57f06e32 100644 --- a/packages/tiptap/src/utils/Editor.js +++ b/packages/tiptap/src/Editor.js @@ -3,17 +3,11 @@ import { EditorView } from 'prosemirror-view' import { Schema, DOMParser, DOMSerializer } from 'prosemirror-model' import { gapCursor } from 'prosemirror-gapcursor' import { keymap } from 'prosemirror-keymap' -import { baseKeymap } from 'prosemirror-commands' -import { inputRules } from 'prosemirror-inputrules' +import { baseKeymap, selectParentNode } from 'prosemirror-commands' +import { inputRules, undoInputRule } from 'prosemirror-inputrules' import { markIsActive, nodeIsActive, getMarkAttrs } from 'tiptap-utils' - -import { - ExtensionManager, - initNodeViews, - builtInKeymap, -} from '.' - -import builtInNodes from '../Nodes' +import { ExtensionManager, ComponentView } from './Utils' +import builtInNodes from './Nodes' export default class Editor { @@ -114,7 +108,10 @@ export default class Editor { rules: this.inputRules, }), ...this.keymaps, - keymap(builtInKeymap), + keymap({ + Backspace: undoInputRule, + Escape: selectParentNode, + }), keymap(baseKeymap), gapCursor(), new Plugin({ @@ -145,7 +142,7 @@ export default class Editor { const view = new EditorView(this.element, { state: this.state, dispatchTransaction: this.dispatchTransaction.bind(this), - nodeViews: initNodeViews({ + nodeViews: this.initNodeViews({ extensions: [ ...builtInNodes, ...this.options.extensions, @@ -175,7 +172,7 @@ export default class Editor { } this.view.setProps({ - nodeViews: initNodeViews({ + nodeViews: this.initNodeViews({ parent: component, extensions: [ ...builtInNodes, @@ -186,6 +183,32 @@ export default class Editor { }) } + initNodeViews({ parent, extensions, editable }) { + return extensions + .filter(extension => ['node', 'mark'].includes(extension.type)) + .filter(extension => extension.view) + .reduce((nodeViews, extension) => { + const nodeView = (node, view, getPos, decorations) => { + const component = extension.view + + return new ComponentView(component, { + extension, + parent, + node, + view, + getPos, + decorations, + editable, + }) + } + + return { + ...nodeViews, + [extension.name]: nodeView, + } + }, {}) + } + dispatchTransaction(transaction) { this.state = this.state.apply(transaction) this.view.updateState(this.state) diff --git a/packages/tiptap/src/index.js b/packages/tiptap/src/index.js index 60305026..94859d7c 100644 --- a/packages/tiptap/src/index.js +++ b/packages/tiptap/src/index.js @@ -1,12 +1,7 @@ -export { default as Editor } from './Utils/Editor' -export { default as Extension } from './Utils/Extension' -export { default as Node } from './Utils/Node' -export { default as Mark } from './Utils/Mark' - +export { default as Editor } from './Editor' +export { Extension, Node, Mark } from './Utils' export { default as EditorContent } from './Components/EditorContent' export { default as EditorMenuBar } from './Components/EditorMenuBar' export { default as EditorMenuBubble } from './Components/EditorMenuBubble' export { default as EditorFloatingMenu } from './Components/EditorFloatingMenu' - -export { Plugin } from 'prosemirror-state' -export { PluginKey } from 'prosemirror-state' +export { Plugin, PluginKey } from 'prosemirror-state' diff --git a/packages/tiptap/src/utils/builtInKeymap.js b/packages/tiptap/src/utils/builtInKeymap.js deleted file mode 100644 index 23919b10..00000000 --- a/packages/tiptap/src/utils/builtInKeymap.js +++ /dev/null @@ -1,9 +0,0 @@ -import { selectParentNode } from 'prosemirror-commands' -import { undoInputRule } from 'prosemirror-inputrules' - -const keymap = { - Backspace: undoInputRule, - Escape: selectParentNode, -} - -export default keymap diff --git a/packages/tiptap/src/utils/index.js b/packages/tiptap/src/utils/index.js index 2c9d1821..baec08cb 100644 --- a/packages/tiptap/src/utils/index.js +++ b/packages/tiptap/src/utils/index.js @@ -1,4 +1,5 @@ -export { default as builtInKeymap } from './builtInKeymap' export { default as ComponentView } from './ComponentView' -export { default as initNodeViews } from './initNodeViews' +export { default as Extension } from './Extension' export { default as ExtensionManager } from './ExtensionManager' +export { default as Mark } from './Mark' +export { default as Node } from './Node' diff --git a/packages/tiptap/src/utils/initNodeViews.js b/packages/tiptap/src/utils/initNodeViews.js deleted file mode 100644 index 893ccb7c..00000000 --- a/packages/tiptap/src/utils/initNodeViews.js +++ /dev/null @@ -1,27 +0,0 @@ -import ComponentView from './ComponentView' - -export default function initNodeViews({ parent, extensions, editable }) { - return extensions - .filter(extension => ['node', 'mark'].includes(extension.type)) - .filter(extension => extension.view) - .reduce((nodeViews, extension) => { - const nodeView = (node, view, getPos, decorations) => { - const component = extension.view - - return new ComponentView(component, { - extension, - parent, - node, - view, - getPos, - decorations, - editable, - }) - } - - return { - ...nodeViews, - [extension.name]: nodeView, - } - }, {}) -} diff --git a/packages/tiptap/test/Editor.spec.js b/packages/tiptap/test/Editor.spec.js index ae5c44d3..7504f25b 100644 --- a/packages/tiptap/test/Editor.spec.js +++ b/packages/tiptap/test/Editor.spec.js @@ -1,4 +1,4 @@ -import Editor from '../src/Utils/Editor' +import Editor from '../src/Editor' import { Blockquote,