@atlaskit/editor-plugin-status
Version:
Status plugin for @atlaskit/editor-core
34 lines (33 loc) • 1.45 kB
JavaScript
import { bindKeymapWithCommand, enter, tab } from '@atlaskit/editor-common/keymaps';
import { keymap } from '@atlaskit/editor-prosemirror/keymap';
import { NodeSelection } from '@atlaskit/editor-prosemirror/state';
import { setFocusOnStatusInput } from './actions';
import { pluginKey } from './plugin-key';
import { mayGetStatusAtSelection } from './utils';
export function keymapPlugin() {
var list = {};
// Ignored via go/ees005
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
bindKeymapWithCommand(enter.common, consumeKeyEvent, list);
bindKeymapWithCommand(
// Ignored via go/ees005
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
tab.common, function (state, dispatch) {
var statusPluginState = pluginKey.getState(state);
var isStatusNode = state.selection instanceof NodeSelection ? state.selection.node.type === state.schema.nodes.status : false;
if (!isStatusNode) {
return false;
}
if (statusPluginState !== null && statusPluginState !== void 0 && statusPluginState.showStatusPickerAt) {
setFocusOnStatusInput()(state, dispatch);
return true;
}
return false;
}, list);
return keymap(list);
}
// consume event to prevent status node problems with positioning and selection
var consumeKeyEvent = function consumeKeyEvent(state, _dispatch) {
return !!mayGetStatusAtSelection(state.tr.selection);
};
export default keymapPlugin;