docs/api/keymaps.md
You can customize the initial state of the module from the editor initialization
const editor = grapesjs.init({
keymaps: {
// Object of keymaps
defaults: {
'your-namespace:keymap-name' {
keys: '⌘+z, ctrl+z',
handler: 'some-command-id'
},
...
}
}
})
Once the editor is instantiated you can use its API. Before using these methods you should get the module from the instance.
const keymaps = editor.Keymaps;
keymap:add New keymap added. The new keymap object is passed as an argument to the callback.editor.on('keymap:add', (keymap) => { ... });
keymap:remove Keymap removed. The removed keymap object is passed as an argument to the callback.editor.on('keymap:remove', (keymap) => { ... });
keymap:emit Some keymap emitted. The keymapId, shortcutUsed, and Event are passed as arguments to the callback.editor.on('keymap:emit', (keymapId, shortcutUsed, event) => { ... });
Get configuration object
Returns Object
Add new keymap
id string Keymap id
keys string Keymap keys, eg. ctrl+a, ⌘+z, ctrl+z
handler (Function | string) Keymap handler, might be a function
opts Object Options (optional, default {})
// 'ns' is just a custom namespace
keymaps.add('ns:my-keymap', '⌘+j, ⌘+u, ctrl+j, alt+u', editor => {
console.log('do stuff');
});
// or
keymaps.add('ns:my-keymap', '⌘+s, ctrl+s', 'some-gjs-command', {
// Prevent the default browser action
prevent: true,
});
// listen to events
editor.on('keymap:emit', (id, shortcut, event) => {
// ...
})
Returns Object Added keymap
Get the keymap by id
id string Keymap idkeymaps.get('ns:my-keymap');
// -> {keys, handler};
Returns Object Keymap object
Get all keymaps
keymaps.getAll();
// -> {id1: {}, id2: {}};
Returns Object
Remove the keymap by id
id string Keymap idkeymaps.remove('ns:my-keymap');
// -> {keys, handler};
Returns Object Removed keymap
Remove all binded keymaps
Returns this