From 0e1f8c464535f82b372cf035e8744c5f8492e20f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Philipp=20Ku=CC=88hn?= Date: Tue, 22 Sep 2020 21:35:02 +0200 Subject: [PATCH] refactoring --- packages/core/src/CommandManager.ts | 69 +++++++++++------------------ 1 file changed, 27 insertions(+), 42 deletions(-) diff --git a/packages/core/src/CommandManager.ts b/packages/core/src/CommandManager.ts index 604663ce..73c0085f 100644 --- a/packages/core/src/CommandManager.ts +++ b/packages/core/src/CommandManager.ts @@ -24,26 +24,7 @@ export default class CommandManager { return (...args: any) => { const { tr } = state - - const props = { - editor: this.editor, - state: this.chainableEditorState(tr, state), - view, - dispatch: () => false, - // chain: this.chain.bind(this), - tr, - } - - Object.defineProperty(props, 'commands', { - get: function() { - return Object.fromEntries(Object - .entries(commands) - .map(([name, command]) => { - return [name, (...args: any[]) => command(...args)(props)] - })) - } - }) - + const props = this.buildProps(tr) const callback = command(...args)(props) view.dispatch(tr) @@ -59,7 +40,7 @@ export default class CommandManager { const callbacks: boolean[] = [] return new Proxy({}, { - get: (target, name: string, proxy) => { + get: (_, name: string, proxy) => { if (name === 'run') { view.dispatch(tr) @@ -73,26 +54,7 @@ export default class CommandManager { } return (...args: any) => { - const props = { - editor: editor, - state: this.chainableEditorState(tr, state), - view: view, - dispatch: () => false, - // chain: this.chain.bind(this), - tr, - } - - // const self = this.editor - Object.defineProperty(props, 'commands', { - get: function() { - return Object.fromEntries(Object - .entries(commands) - .map(([name, command]) => { - return [name, (...args: any[]) => command(...args)(props)] - })) - } - }); - + const props = this.buildProps(tr) const callback = command(...args)(props) callbacks.push(callback) @@ -102,7 +64,30 @@ export default class CommandManager { }) as ChainedCommands } - public chainableEditorState(tr: Transaction, state: EditorState): EditorState { + public buildProps(tr: Transaction) { + const { editor, commands } = this + const { state, view } = editor + + const props = { + editor, + state: this.chainableState(tr, state), + view, + dispatch: () => false, + // chain: this.chain.bind(this), + tr, + get commands() { + return Object.fromEntries(Object + .entries(commands) + .map(([name, command]) => { + return [name, (...args: any[]) => command(...args)(props)] + })) + } + } + + return props + } + + public chainableState(tr: Transaction, state: EditorState): EditorState { let selection = tr.selection let doc = tr.doc let storedMarks = tr.storedMarks