@atlaskit/editor-core
Version:
A package contains Atlassian editor core functionality
67 lines (50 loc) • 1.89 kB
text/typescript
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;