@atlaskit/editor-core
Version:
A package contains Atlassian editor core functionality
49 lines (37 loc) • 2.03 kB
text/typescript
import { EditorView, MarkType, keydownHandler } from '../../prosemirror';
import * as keymaps from '../../keymaps';
import { trackAndInvoke } from '../../analytics';
import { TextFormattingState } from './';
import * as commands from './commands';
export function keymapHandler(view: EditorView, pluginState: TextFormattingState): Function {
const list = {};
const { schema } = view.state;
if (schema.marks.strong) {
const eventName = analyticsEventName(schema.marks.strong);
keymaps.bindKeymapWithCommand(keymaps.toggleBold.common!, trackAndInvoke(eventName, () => pluginState.toggleStrong(view)), list);
}
if (schema.marks.em) {
const eventName = analyticsEventName(schema.marks.em);
keymaps.bindKeymapWithCommand(keymaps.toggleItalic.common!, trackAndInvoke(eventName, () => pluginState.toggleEm(view)), list);
}
if (schema.marks.code) {
const eventName = analyticsEventName(schema.marks.code);
keymaps.bindKeymapWithCommand(keymaps.toggleCode.common!, trackAndInvoke(eventName, () => pluginState.toggleCode(view)), list);
}
if (schema.marks.strike) {
const eventName = analyticsEventName(schema.marks.strike);
keymaps.bindKeymapWithCommand(keymaps.toggleStrikethrough.common!, trackAndInvoke(eventName, () => pluginState.toggleStrike(view)), list);
}
if (schema.marks.underline) {
const eventName = analyticsEventName(schema.marks.underline);
keymaps.bindKeymapWithCommand(keymaps.toggleUnderline.common!, trackAndInvoke(eventName, () => pluginState.toggleUnderline(view)), list);
}
keymaps.bindKeymapWithCommand(keymaps.moveRight.common!, commands.moveRight(), list);
keymaps.bindKeymapWithCommand(keymaps.moveLeft.common!, commands.moveLeft(view), list);
keymaps.bindKeymapWithCommand(keymaps.backspace.common!, commands.removeIgnoredNodes(view), list);
return keydownHandler(list);
}
function analyticsEventName(markType: MarkType): string {
return `atlassian.editor.format.${markType.name}.keyboard`;
}
export default keymapHandler;