@atlaskit/editor-plugin-undo-redo
Version:
Undo redo plugin for @atlaskit/editor-core
33 lines (32 loc) • 1.74 kB
JavaScript
import { bindKeymapWithCommand, findKeyMapForBrowser, isCapsLockOnAndModifyKeyboardEvent, redo, redoAlt, undo } from '@atlaskit/editor-common/keymaps';
import { SafePlugin } from '@atlaskit/editor-common/safe-plugin';
import { keydownHandler } from '@atlaskit/editor-prosemirror/keymap';
import { redoFromKeyboardWithAnalytics, undoFromKeyboardWithAnalytics } from './commands';
/**
*
* @param api
* @example
*/
export function keymapPlugin(api) {
var _api$analytics, _api$analytics2, _api$analytics3;
const list = {};
bindKeymapWithCommand(
// Ignored via go/ees005
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
findKeyMapForBrowser(redo), redoFromKeyboardWithAnalytics(api === null || api === void 0 ? void 0 : (_api$analytics = api.analytics) === null || _api$analytics === void 0 ? void 0 : _api$analytics.actions), list);
bindKeymapWithCommand(
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
findKeyMapForBrowser(redoAlt), redoFromKeyboardWithAnalytics(api === null || api === void 0 ? void 0 : (_api$analytics2 = api.analytics) === null || _api$analytics2 === void 0 ? void 0 : _api$analytics2.actions), list);
bindKeymapWithCommand(
// Ignored via go/ees005
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
undo.common, undoFromKeyboardWithAnalytics(api === null || api === void 0 ? void 0 : (_api$analytics3 = api.analytics) === null || _api$analytics3 === void 0 ? void 0 : _api$analytics3.actions), list);
return new SafePlugin({
props: {
handleKeyDown(view, event) {
const keyboardEvent = isCapsLockOnAndModifyKeyboardEvent(event);
return keydownHandler(list)(view, keyboardEvent);
}
}
});
}