diff --git a/packages/core/src/CommandManager.ts b/packages/core/src/CommandManager.ts index b5ea87cd..c41dcb1f 100644 --- a/packages/core/src/CommandManager.ts +++ b/packages/core/src/CommandManager.ts @@ -68,7 +68,6 @@ export default class CommandManager { const callbacks: boolean[] = [] const hasStartTransaction = !!startTr const tr = startTr || state.tr - const props = this.buildProps(tr, shouldDispatch) return new Proxy({}, { get: (_, name: string, proxy) => { @@ -87,7 +86,9 @@ export default class CommandManager { } return (...args: any) => { + const props = this.buildProps(tr, shouldDispatch) const callback = command(...args)(props) + callbacks.push(callback) return proxy @@ -118,6 +119,10 @@ export default class CommandManager { const { editor, commands } = this const { state, view } = editor + if (state.storedMarks) { + tr.setStoredMarks(state.storedMarks) + } + const props = { tr, editor, @@ -141,6 +146,10 @@ export default class CommandManager { } public chainableState(tr: Transaction, state: EditorState): EditorState { + let { selection } = tr + let { doc } = tr + let { storedMarks } = tr + return { ...state, schema: state.schema, @@ -150,15 +159,19 @@ export default class CommandManager { reconfigure: state.reconfigure.bind(state), toJSON: state.toJSON.bind(state), get storedMarks() { - return tr.storedMarks + return storedMarks }, get selection() { - return tr.selection + return selection }, get doc() { - return tr.doc + return doc }, get tr() { + selection = tr.selection + doc = tr.doc + storedMarks = tr.storedMarks + return tr }, }