Browse Source

Move Keymaps config outside

pull/4746/head
Artur Arseniev 4 years ago
parent
commit
9339e2ea34
  1. 69
      src/keymaps/config.ts
  2. 70
      src/keymaps/index.ts

69
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<string, Omit<Keymap, 'id'> & { 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;

70
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<string, { keys: string; handler: string; opts?: KeymapOptions }>;
}
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<KeymapsConfig & { name?: string }> {
keymaster = keymaster;
keymaps: Record<string, Keymap>;
constructor(em: EditorModel) {
super(em, 'Keymaps', configDef);
super(em, 'Keymaps', defaults);
this.keymaps = {};
}

Loading…
Cancel
Save