add paste rules
This commit is contained in:
@@ -25,6 +25,7 @@ export default class Editor {
|
||||
this.plugins = this.createPlugins()
|
||||
this.keymaps = this.createKeymaps()
|
||||
this.inputRules = this.createInputRules()
|
||||
this.pasteRules = this.createPasteRules()
|
||||
this.state = this.createState()
|
||||
this.view = this.createView()
|
||||
this.commands = this.createCommands()
|
||||
@@ -94,6 +95,12 @@ export default class Editor {
|
||||
})
|
||||
}
|
||||
|
||||
createPasteRules() {
|
||||
return this.extensions.pasteRules({
|
||||
schema: this.schema,
|
||||
})
|
||||
}
|
||||
|
||||
createCommands() {
|
||||
return this.extensions.commands({
|
||||
schema: this.schema,
|
||||
@@ -126,6 +133,7 @@ export default class Editor {
|
||||
inputRules({
|
||||
rules: this.inputRules,
|
||||
}),
|
||||
...this.pasteRules,
|
||||
...this.keymaps,
|
||||
keymap({
|
||||
Backspace: undoInputRule,
|
||||
|
||||
@@ -76,6 +76,29 @@ export default class ExtensionManager {
|
||||
]), [])
|
||||
}
|
||||
|
||||
pasteRules({ schema }) {
|
||||
const extensionPasteRules = this.extensions
|
||||
.filter(extension => ['extension'].includes(extension.type))
|
||||
.filter(extension => extension.pasteRules)
|
||||
.map(extension => extension.pasteRules({ schema }))
|
||||
|
||||
const nodeMarkPasteRules = this.extensions
|
||||
.filter(extension => ['node', 'mark'].includes(extension.type))
|
||||
.filter(extension => extension.pasteRules)
|
||||
.map(extension => extension.pasteRules({
|
||||
type: schema[`${extension.type}s`][extension.name],
|
||||
schema,
|
||||
}))
|
||||
|
||||
return [
|
||||
...extensionPasteRules,
|
||||
...nodeMarkPasteRules,
|
||||
].reduce((allPasteRules, pasteRules) => ([
|
||||
...allPasteRules,
|
||||
...pasteRules,
|
||||
]), [])
|
||||
}
|
||||
|
||||
commands({ schema, view, editable }) {
|
||||
return this.extensions
|
||||
.filter(extension => extension.commands)
|
||||
|
||||
Reference in New Issue
Block a user