diff --git a/src/keymaps/config.ts b/src/keymaps/config.ts new file mode 100644 index 000000000..402df4b3e --- /dev/null +++ b/src/keymaps/config.ts @@ -0,0 +1,69 @@ +import EditorModule from '../editor'; + +export interface Keymap { + id: string; + keys: string; + handler: string | ((editor: EditorModule) => any); +} + +export interface KeymapOptions { + /** + * Force the handler to be executed. + */ + force?: boolean; + /** + * Prevent default of the original triggered event. + */ + prevent?: boolean; +} + +export interface KeymapsConfig { + /** + * Default keymaps. + */ + defaults?: Record & { opts?: KeymapOptions }>; +} + +const config: KeymapsConfig = { + defaults: { + 'core:undo': { + keys: '⌘+z, ctrl+z', + handler: 'core:undo', + }, + 'core:redo': { + keys: '⌘+shift+z, ctrl+shift+z', + handler: 'core:redo', + }, + 'core:copy': { + keys: '⌘+c, ctrl+c', + handler: 'core:copy', + }, + 'core:paste': { + keys: '⌘+v, ctrl+v', + handler: 'core:paste', + }, + 'core:component-next': { + keys: 's', + handler: 'core:component-next', + }, + 'core:component-prev': { + keys: 'w', + handler: 'core:component-prev', + }, + 'core:component-enter': { + keys: 'd', + handler: 'core:component-enter', + }, + 'core:component-exit': { + keys: 'a', + handler: 'core:component-exit', + }, + 'core:component-delete': { + keys: 'backspace, delete', + handler: 'core:component-delete', + opts: { prevent: true }, + }, + }, +}; + +export default config; diff --git a/src/keymaps/index.ts b/src/keymaps/index.ts index 93a2fe23d..acf434866 100644 --- a/src/keymaps/index.ts +++ b/src/keymaps/index.ts @@ -48,82 +48,16 @@ import { hasWin, isObject } from '../utils/mixins'; import keymaster from '../utils/keymaster'; import { Module } from '../abstract'; import EditorModel from '../editor/model/Editor'; -import EditorModule from '../editor'; +import defaults, { Keymap, KeymapOptions, KeymapsConfig } from './config'; hasWin() && keymaster.init(window); -export interface Keymap { - id: string; - keys: string; - handler: string | ((editor: EditorModule) => any); -} - -export interface KeymapOptions { - /** - * Force the handler to be executed. - */ - force?: boolean; - /** - * Prevent default of the original triggered event. - */ - prevent?: boolean; -} - -export interface KeymapsConfig { - /** - * Default keymaps. - */ - defaults?: Record; -} - -const configDef: KeymapsConfig = { - defaults: { - 'core:undo': { - keys: '⌘+z, ctrl+z', - handler: 'core:undo', - }, - 'core:redo': { - keys: '⌘+shift+z, ctrl+shift+z', - handler: 'core:redo', - }, - 'core:copy': { - keys: '⌘+c, ctrl+c', - handler: 'core:copy', - }, - 'core:paste': { - keys: '⌘+v, ctrl+v', - handler: 'core:paste', - }, - 'core:component-next': { - keys: 's', - handler: 'core:component-next', - }, - 'core:component-prev': { - keys: 'w', - handler: 'core:component-prev', - }, - 'core:component-enter': { - keys: 'd', - handler: 'core:component-enter', - }, - 'core:component-exit': { - keys: 'a', - handler: 'core:component-exit', - }, - 'core:component-delete': { - keys: 'backspace, delete', - handler: 'core:component-delete', - opts: { prevent: true }, - }, - }, -}; - export default class KeymapsModule extends Module { keymaster = keymaster; keymaps: Record; constructor(em: EditorModel) { - super(em, 'Keymaps', configDef); + super(em, 'Keymaps', defaults); this.keymaps = {}; }