@atlaskit/editor-common
Version:
A package that contains common classes and components for editor and renderer
42 lines (41 loc) • 1.35 kB
JavaScript
import { Transaction } from '@atlaskit/editor-prosemirror/state';
/**
* Convert a EditorCommand to a standard Prosemirror Command.
* The preferred approach to dispatching a `EditorCommand` is via the
* `core.actions.execute` on `pluginInjectionAPI`. In some cases
* the type may require a Command until we refactor this out and this
* function is suitable for those cases.
*
* @param command A plugin command (a function that modifies and returns a `Transaction`)
* @returns Command
*/
export function editorCommandToPMCommand(command) {
return ({
tr
}, dispatch) => {
const newTr = command === null || command === void 0 ? void 0 : command({
tr
});
if (!newTr) {
return false;
}
if (newTr instanceof PassiveTransaction) {
return true;
}
dispatch === null || dispatch === void 0 ? void 0 : dispatch(newTr);
return true;
};
}
/**
* PassiveTransaction is used only to indicate that
* an `EditorCommand` should return `true` but should not dispatch.
*/
export class PassiveTransaction extends Transaction {
// This is very cheeky but this should never be used outside its intended
// purpose - it will likely crash the editor so we should get an early warning
// signal
constructor() {
// eslint-disable-next-line @typescript-eslint/no-explicit-any
super({});
}
}