Files
outline/shared/editor/lib/chainTransactions.ts
2023-05-24 19:24:05 -07:00

17 lines
517 B
TypeScript

import { Command, Transaction } from "prosemirror-state";
export default function chainTransactions(...commands: Command[]): Command {
return (state, dispatch): boolean => {
const dispatcher = (tr: Transaction): void => {
state = state.apply(tr);
dispatch?.(tr);
};
const last = commands.pop();
const reduced = commands.reduce(
(result, command) => result || command(state, dispatcher),
false
);
return reduced && last !== undefined && last(state, dispatch);
};
}