@atlaskit/editor-plugin-track-changes
Version:
ShowDiff plugin for @atlaskit/editor-core
31 lines (30 loc) • 1.65 kB
JavaScript
import { getBrowserInfo } from '@atlaskit/editor-common/browser';
import { bindKeymapWithCommand, isCapsLockOnAndModifyKeyboardEvent, toggleViewChanges } from '@atlaskit/editor-common/keymaps';
import { SafePlugin } from '@atlaskit/editor-common/safe-plugin';
import { keydownHandler } from '@atlaskit/editor-prosemirror/keymap';
export function keymapPlugin(api) {
var list = {};
var browser = getBrowserInfo();
// Exclude Firefox browser from keyboard shortcut
if (!browser.gecko) {
bindKeymapWithCommand(
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
toggleViewChanges.common, function () {
var _api$trackChanges, _api$trackChanges2;
var isShowDiffAvailable = api === null || api === void 0 || (_api$trackChanges = api.trackChanges) === null || _api$trackChanges === void 0 || (_api$trackChanges = _api$trackChanges.sharedState.currentState()) === null || _api$trackChanges === void 0 ? void 0 : _api$trackChanges.isShowDiffAvailable;
if (!isShowDiffAvailable) {
return false;
}
var result = api === null || api === void 0 ? void 0 : api.core.actions.execute(api === null || api === void 0 || (_api$trackChanges2 = api.trackChanges) === null || _api$trackChanges2 === void 0 ? void 0 : _api$trackChanges2.commands.toggleChanges);
return result !== null && result !== void 0 ? result : false;
}, list);
}
return new SafePlugin({
props: {
handleKeyDown: function handleKeyDown(view, event) {
var keyboardEvent = isCapsLockOnAndModifyKeyboardEvent(event);
return keydownHandler(list)(view, keyboardEvent);
}
}
});
}