UNPKG

@atlaskit/editor-plugin-status

Version:

Status plugin for @atlaskit/editor-core

32 lines (31 loc) 1.41 kB
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() { const 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, (state, dispatch) => { const statusPluginState = pluginKey.getState(state); const 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 const consumeKeyEvent = (state, _dispatch) => !!mayGetStatusAtSelection(state.tr.selection); export default keymapPlugin;