UNPKG

@atlaskit/editor-core

Version:

A package contains Atlassian editor core functionality

67 lines (50 loc) 1.89 kB
import { Schema, keymap, Plugin } from '../../prosemirror'; import * as keymaps from '../../keymaps'; import { EmojiState, stateKey } from './'; export function keymapPlugin(schema: Schema<any, any>): Plugin { const list = {}; keymaps.bindKeymapWithCommand(keymaps.moveUp.common!, (state: any, dispatch) => { const emojisPlugin = stateKey.getState(state) as EmojiState; if (!emojisPlugin.queryActive) { return false; } return emojisPlugin.onSelectPrevious(); }, list); keymaps.bindKeymapWithCommand(keymaps.moveDown.common!, (state: any, dispatch) => { const emojisPlugin = stateKey.getState(state) as EmojiState; if (!emojisPlugin.queryActive) { return false; } return emojisPlugin.onSelectNext(); }, list); keymaps.bindKeymapWithCommand(keymaps.enter.common!, (state: any, dispatch) => { const emojisPlugin = stateKey.getState(state) as EmojiState; if (!emojisPlugin.queryActive) { return false; } return emojisPlugin.onSelectCurrent(); }, list); keymaps.bindKeymapWithCommand(keymaps.tab.common!, (state: any, dispatch) => { const emojisPlugin = stateKey.getState(state) as EmojiState; if (!emojisPlugin.queryActive) { return false; } return emojisPlugin.onSelectCurrent(); }, list); keymaps.bindKeymapWithCommand(keymaps.escape.common!, (state: any, dispatch) => { const emojisPlugin = stateKey.getState(state) as EmojiState; if (!emojisPlugin.queryActive) { return false; } return emojisPlugin.dismiss(); }, list); keymaps.bindKeymapWithCommand(keymaps.space.common!, (state: any, dispatch) => { const emojisPlugin = stateKey.getState(state) as EmojiState; if (!emojisPlugin.queryActive) { return false; } return emojisPlugin.trySelectCurrent(); }, list); return keymap(list); } export default keymapPlugin;