diff --git a/packages/core/src/Editor.ts b/packages/core/src/Editor.ts index fc31a2ca..058583f9 100644 --- a/packages/core/src/Editor.ts +++ b/packages/core/src/Editor.ts @@ -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 diff --git a/packages/core/src/commands/clearContent.ts b/packages/core/src/commands/clearContent.ts index 64e75a3c..978c8c1d 100644 --- a/packages/core/src/commands/clearContent.ts +++ b/packages/core/src/commands/clearContent.ts @@ -8,9 +8,6 @@ declare module '../Editor' { } } -export const clearContent: ClearContentCommand = (emitUpdate = false) => ({ editor }) => { - // TODO: doesn’t work, we have to re-use `tr` - editor.setContent('', emitUpdate) - - return true +export const clearContent: ClearContentCommand = (emitUpdate = false) => ({ commands }) => { + return commands.setContent('', emitUpdate) }