add way to nest commands

This commit is contained in:
Philipp Kühn
2020-09-21 00:14:59 +02:00
parent f6270c0e0c
commit 432b30f1a6
2 changed files with 20 additions and 6 deletions

View File

@@ -26,6 +26,8 @@ import * as commands from './commands'
export type Command = (props: {
editor: Editor
tr: Transaction
// TODO: find correct type
commands: any
}) => boolean
export interface CommandSpec {
@@ -143,7 +145,22 @@ export class Editor extends EventEmitter {
}
return (...args: any) => {
const callback = command(...args)({ editor: this.proxy, tr })
const props = {
editor: this.proxy,
tr,
}
Object.defineProperty(props, 'commands', {
get: function() {
return Object.fromEntries(Object
.entries(this.commands)
.map(([name, command]) => {
return [name, (...args) => command(...args)(props)]
}))
}.bind(this)
});
const callback = command(...args)(props)
callbacks.push(callback)
return proxy

View File

@@ -8,9 +8,6 @@ declare module '../Editor' {
}
}
export const clearContent: ClearContentCommand = (emitUpdate = false) => ({ editor }) => {
// TODO: doesnt work, we have to re-use `tr`
editor.setContent('', emitUpdate)
return true
export const clearContent: ClearContentCommand = (emitUpdate = false) => ({ commands }) => {
return commands.setContent('', emitUpdate)
}