mirror of https://github.com/artf/grapesjs.git
1 changed files with 77 additions and 0 deletions
@ -0,0 +1,77 @@ |
|||||
|
import { defaults } from 'underscore'; |
||||
|
const keymaster = require('keymaster').noConflict(); |
||||
|
|
||||
|
module.exports = () => { |
||||
|
let config; |
||||
|
const configDef = {}; |
||||
|
const keymaps = {}; |
||||
|
|
||||
|
return { |
||||
|
|
||||
|
name: 'Keymaps', |
||||
|
|
||||
|
|
||||
|
/** |
||||
|
* Get module configurations |
||||
|
* @return {Object} Configuration object |
||||
|
*/ |
||||
|
getConfig() { |
||||
|
return config; |
||||
|
}, |
||||
|
|
||||
|
|
||||
|
/** |
||||
|
* Initialize module |
||||
|
* @param {Object} config Configurations |
||||
|
* @private |
||||
|
*/ |
||||
|
init(opts = {}) { |
||||
|
config = opts; |
||||
|
defaults(config, configDef); |
||||
|
this.em = config.em; |
||||
|
return this; |
||||
|
}, |
||||
|
|
||||
|
/** |
||||
|
* Add new keymap |
||||
|
* @param {string} id Keymap id |
||||
|
* @param {string} keys Keymap keys, eg. '⌘+z, ctrl+z' |
||||
|
* @param {Function} handler Keymap handler |
||||
|
* @example |
||||
|
* keymaps.add('ns:my-keymap', '⌘+s, ctrl+s', () => { |
||||
|
* console.log('do stuff'); |
||||
|
* }); |
||||
|
*/ |
||||
|
add(id, keys, handler) { |
||||
|
const em = this.em; |
||||
|
const keymap = { keys, handler }; |
||||
|
const pk = keymaps[id]; |
||||
|
pk && this.remove(id); |
||||
|
keymaps[id] = keymap; |
||||
|
keymaster(keys, id, handler); |
||||
|
em && em.trigger('keymap:add', id, keymap); |
||||
|
// emit
|
||||
|
//keymaster.unbind(keys, id);
|
||||
|
}, |
||||
|
|
||||
|
|
||||
|
/** |
||||
|
* Returns the keymap by id |
||||
|
* @param {string} |
||||
|
*/ |
||||
|
get(id) { |
||||
|
return keymaps[id]; |
||||
|
}, |
||||
|
|
||||
|
|
||||
|
/** |
||||
|
* Return the global collection, containing all the assets |
||||
|
* @return {Collection} |
||||
|
*/ |
||||
|
getAll() { |
||||
|
return keymaps; |
||||
|
}, |
||||
|
|
||||
|
|
||||
|
}; |
||||
|
}; |
||||
Loading…
Reference in new issue