refactoring
This commit is contained in:
@@ -3,13 +3,11 @@ import { Editor, Command, CommandsSpec } from './src/Editor'
|
|||||||
export default Editor
|
export default Editor
|
||||||
export { Editor, Command, CommandsSpec }
|
export { Editor, Command, CommandsSpec }
|
||||||
export { default as ComponentRenderer } from './src/ComponentRenderer'
|
export { default as ComponentRenderer } from './src/ComponentRenderer'
|
||||||
// export { default as Extension } from './src/Extension'
|
|
||||||
// export { default as Node } from './src/Node'
|
|
||||||
export * from './src/Extension'
|
export * from './src/Extension'
|
||||||
export * from './src/Node'
|
export * from './src/Node'
|
||||||
export * from './src/Mark'
|
export * from './src/Mark'
|
||||||
// export { default as Mark } from './src/Mark'
|
export * from './src/types'
|
||||||
export { Extensions } from './src/types'
|
|
||||||
|
|
||||||
export { default as nodeInputRule } from './src/inputRules/nodeInputRule'
|
export { default as nodeInputRule } from './src/inputRules/nodeInputRule'
|
||||||
export { default as markInputRule } from './src/inputRules/markInputRule'
|
export { default as markInputRule } from './src/inputRules/markInputRule'
|
||||||
@@ -19,7 +17,4 @@ export { default as capitalize } from './src/utils/capitalize'
|
|||||||
export { default as getSchema } from './src/utils/getSchema'
|
export { default as getSchema } from './src/utils/getSchema'
|
||||||
export { default as generateHtml } from './src/utils/generateHtml'
|
export { default as generateHtml } from './src/utils/generateHtml'
|
||||||
export { default as getHtmlFromFragment } from './src/utils/getHtmlFromFragment'
|
export { default as getHtmlFromFragment } from './src/utils/getHtmlFromFragment'
|
||||||
export { default as getTopNodeFromExtensions } from './src/utils/getTopNodeFromExtensions'
|
|
||||||
export { default as getNodesFromExtensions } from './src/utils/getNodesFromExtensions'
|
|
||||||
export { default as getMarksFromExtensions } from './src/utils/getMarksFromExtensions'
|
|
||||||
export { default as getMarkAttrs } from './src/utils/getMarkAttrs'
|
export { default as getMarkAttrs } from './src/utils/getMarkAttrs'
|
||||||
|
|||||||
@@ -1,7 +1,5 @@
|
|||||||
import collect from 'collect.js'
|
|
||||||
import { Plugin } from 'prosemirror-state'
|
import { Plugin } from 'prosemirror-state'
|
||||||
import { keymap } from 'prosemirror-keymap'
|
import { keymap } from 'prosemirror-keymap'
|
||||||
import { Schema } from 'prosemirror-model'
|
|
||||||
// import { Schema, Node as ProsemirrorNode } from 'prosemirror-model'
|
// import { Schema, Node as ProsemirrorNode } from 'prosemirror-model'
|
||||||
import { inputRules } from 'prosemirror-inputrules'
|
import { inputRules } from 'prosemirror-inputrules'
|
||||||
// import { EditorView, Decoration } from 'prosemirror-view'
|
// import { EditorView, Decoration } from 'prosemirror-view'
|
||||||
@@ -9,10 +7,6 @@ import { inputRules } from 'prosemirror-inputrules'
|
|||||||
import { Editor } from './Editor'
|
import { Editor } from './Editor'
|
||||||
// import capitalize from './utils/capitalize'
|
// import capitalize from './utils/capitalize'
|
||||||
import { Extensions } from './types'
|
import { Extensions } from './types'
|
||||||
import getTopNodeFromExtensions from './utils/getTopNodeFromExtensions'
|
|
||||||
import getNodesFromExtensions from './utils/getNodesFromExtensions'
|
|
||||||
import getMarksFromExtensions from './utils/getMarksFromExtensions'
|
|
||||||
import resolveExtensionConfig from './utils/resolveExtensionConfig'
|
|
||||||
import getSchema from './utils/getSchema'
|
import getSchema from './utils/getSchema'
|
||||||
|
|
||||||
export default class ExtensionManager {
|
export default class ExtensionManager {
|
||||||
@@ -60,22 +54,10 @@ export default class ExtensionManager {
|
|||||||
// })
|
// })
|
||||||
// }
|
// }
|
||||||
|
|
||||||
get schema(): Schema {
|
get schema() {
|
||||||
return getSchema(this.extensions)
|
return getSchema(this.extensions)
|
||||||
}
|
}
|
||||||
|
|
||||||
get topNode(): any {
|
|
||||||
return getTopNodeFromExtensions(this.extensions)
|
|
||||||
}
|
|
||||||
|
|
||||||
get nodes(): any {
|
|
||||||
return getNodesFromExtensions(this.extensions)
|
|
||||||
}
|
|
||||||
|
|
||||||
get marks(): any {
|
|
||||||
return getMarksFromExtensions(this.extensions)
|
|
||||||
}
|
|
||||||
|
|
||||||
get plugins(): Plugin[] {
|
get plugins(): Plugin[] {
|
||||||
// const plugins = collect(this.extensions)
|
// const plugins = collect(this.extensions)
|
||||||
// .flatMap(extension => extension.config.plugins)
|
// .flatMap(extension => extension.config.plugins)
|
||||||
|
|||||||
@@ -1,10 +0,0 @@
|
|||||||
import collect from 'collect.js'
|
|
||||||
import Mark from '../Mark'
|
|
||||||
import { Extensions } from '../types'
|
|
||||||
|
|
||||||
export default function getMarksFromExtensions(extensions: Extensions): any {
|
|
||||||
return collect(extensions)
|
|
||||||
.where('type', 'mark')
|
|
||||||
.mapWithKeys((extension: Mark) => [extension.config.name, extension.config.schema])
|
|
||||||
.all()
|
|
||||||
}
|
|
||||||
@@ -1,10 +0,0 @@
|
|||||||
import collect from 'collect.js'
|
|
||||||
import Node from '../Node'
|
|
||||||
import { Extensions } from '../types'
|
|
||||||
|
|
||||||
export default function getNodesFromExtensions(extensions: Extensions): any {
|
|
||||||
return collect(extensions)
|
|
||||||
.where('type', 'node')
|
|
||||||
.mapWithKeys((extension: Node) => [extension.config.name, extension.config.schema])
|
|
||||||
.all()
|
|
||||||
}
|
|
||||||
@@ -3,7 +3,6 @@ import { Extensions } from '../types'
|
|||||||
// import getTopNodeFromExtensions from './getTopNodeFromExtensions'
|
// import getTopNodeFromExtensions from './getTopNodeFromExtensions'
|
||||||
// import getNodesFromExtensions from './getNodesFromExtensions'
|
// import getNodesFromExtensions from './getNodesFromExtensions'
|
||||||
// import getMarksFromExtensions from './getMarksFromExtensions'
|
// import getMarksFromExtensions from './getMarksFromExtensions'
|
||||||
// import resolveExtensionConfig from './resolveExtensionConfig'
|
|
||||||
import splitExtensions from './splitExtensions'
|
import splitExtensions from './splitExtensions'
|
||||||
import getAttributesFromExtensions from './getAttributesFromExtensions'
|
import getAttributesFromExtensions from './getAttributesFromExtensions'
|
||||||
import getRenderedAttributes from './getRenderedAttributes'
|
import getRenderedAttributes from './getRenderedAttributes'
|
||||||
|
|||||||
@@ -1,10 +0,0 @@
|
|||||||
import collect from 'collect.js'
|
|
||||||
import { Extensions } from '../types'
|
|
||||||
|
|
||||||
export default function getTopNodeFromExtensions(extensions: Extensions): any {
|
|
||||||
const topNode = collect(extensions).firstWhere('config.topNode', true)
|
|
||||||
|
|
||||||
if (topNode) {
|
|
||||||
return topNode.config.name
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,35 +0,0 @@
|
|||||||
import deepmerge from 'deepmerge'
|
|
||||||
import Extension from '../Extension'
|
|
||||||
import Node from '../Node'
|
|
||||||
import Mark from '../Mark'
|
|
||||||
|
|
||||||
export default function resolveExtensionConfig(
|
|
||||||
extension: Extension | Node | Mark,
|
|
||||||
name: string,
|
|
||||||
props = {},
|
|
||||||
): void {
|
|
||||||
if (!extension.configs[name]) {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
extension.config[name] = extension.configs[name]
|
|
||||||
.reduce((accumulator, { stategy, value: rawValue }) => {
|
|
||||||
const value = typeof rawValue === 'function'
|
|
||||||
? rawValue(props)
|
|
||||||
: rawValue
|
|
||||||
|
|
||||||
if (accumulator === undefined) {
|
|
||||||
return value
|
|
||||||
}
|
|
||||||
|
|
||||||
if (stategy === 'overwrite') {
|
|
||||||
return value
|
|
||||||
}
|
|
||||||
|
|
||||||
if (stategy === 'extend') {
|
|
||||||
return deepmerge(accumulator, value)
|
|
||||||
}
|
|
||||||
|
|
||||||
return accumulator
|
|
||||||
}, undefined)
|
|
||||||
}
|
|
||||||
Reference in New Issue
Block a user