123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164 |
- import {
- isCmd,
- isKey,
- isShift
- } from './KeyboardUtil';
- var LOW_PRIORITY = 500;
- /**
- * Adds default keyboard bindings.
- *
- * This does not pull in any features will bind only actions that
- * have previously been registered against the editorActions component.
- *
- * @param {EventBus} eventBus
- * @param {Keyboard} keyboard
- */
- export default function KeyboardBindings(eventBus, keyboard) {
- var self = this;
- eventBus.on('editorActions.init', LOW_PRIORITY, function(event) {
- var editorActions = event.editorActions;
- self.registerBindings(keyboard, editorActions);
- });
- }
- KeyboardBindings.$inject = [
- 'eventBus',
- 'keyboard'
- ];
- /**
- * Register available keyboard bindings.
- *
- * @param {Keyboard} keyboard
- * @param {EditorActions} editorActions
- */
- KeyboardBindings.prototype.registerBindings = function(keyboard, editorActions) {
- /**
- * Add keyboard binding if respective editor action
- * is registered.
- *
- * @param {String} action name
- * @param {Function} fn that implements the key binding
- */
- function addListener(action, fn) {
- if (editorActions.isRegistered(action)) {
- keyboard.addListener(fn);
- }
- }
- // undo
- // (CTRL|CMD) + Z
- addListener('undo', function(context) {
- var event = context.keyEvent;
- if (isCmd(event) && !isShift(event) && isKey(['z', 'Z'], event)) {
- editorActions.trigger('undo');
- return true;
- }
- });
- // redo
- // CTRL + Y
- // CMD + SHIFT + Z
- addListener('redo', function(context) {
- var event = context.keyEvent;
- if (isCmd(event) && (isKey(['y', 'Y'], event) || (isKey(['z', 'Z'], event) && isShift(event)))) {
- editorActions.trigger('redo');
- return true;
- }
- });
- // copy
- // CTRL/CMD + C
- addListener('copy', function(context) {
- var event = context.keyEvent;
- if (isCmd(event) && isKey(['c', 'C'], event)) {
- editorActions.trigger('copy');
- return true;
- }
- });
- // paste
- // CTRL/CMD + V
- addListener('paste', function(context) {
- var event = context.keyEvent;
- if (isCmd(event) && isKey(['v', 'V'], event)) {
- editorActions.trigger('paste');
- return true;
- }
- });
- // zoom in one step
- // CTRL/CMD + +
- addListener('stepZoom', function(context) {
- var event = context.keyEvent;
- if (isKey([ '+', 'Add' ], event) && isCmd(event)) {
- editorActions.trigger('stepZoom', { value: 1 });
- return true;
- }
- });
- // zoom out one step
- // CTRL + -
- addListener('stepZoom', function(context) {
- var event = context.keyEvent;
- if (isKey([ '-', 'Subtract' ], event) && isCmd(event)) {
- editorActions.trigger('stepZoom', { value: -1 });
- return true;
- }
- });
- // zoom to the default level
- // CTRL + 0
- addListener('zoom', function(context) {
- var event = context.keyEvent;
- if (isKey('0', event) && isCmd(event)) {
- editorActions.trigger('zoom', { value: 1 });
- return true;
- }
- });
- // delete selected element
- // DEL
- addListener('removeSelection', function(context) {
- var event = context.keyEvent;
- if (isKey([ 'Delete', 'Del' ], event)) {
- editorActions.trigger('removeSelection');
- return true;
- }
- });
- };
|