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: { export type Command = (props: {
editor: Editor editor: Editor
tr: Transaction tr: Transaction
// TODO: find correct type
commands: any
}) => boolean }) => boolean
export interface CommandSpec { export interface CommandSpec {
@@ -143,7 +145,22 @@ export class Editor extends EventEmitter {
} }
return (...args: any) => { 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) callbacks.push(callback)
return proxy return proxy

View File

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