refactoring

This commit is contained in:
Philipp Kühn
2018-11-14 10:58:14 +01:00
parent ba8c3dce59
commit ca0144cfc3
6 changed files with 43 additions and 60 deletions

View File

@@ -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)

View File

@@ -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'

View File

@@ -1,9 +0,0 @@
import { selectParentNode } from 'prosemirror-commands'
import { undoInputRule } from 'prosemirror-inputrules'
const keymap = {
Backspace: undoInputRule,
Escape: selectParentNode,
}
export default keymap

View File

@@ -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'

View File

@@ -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,
}
}, {})
}

View File

@@ -1,4 +1,4 @@
import Editor from '../src/Utils/Editor'
import Editor from '../src/Editor'
import {
Blockquote,