import inherits from 'inherits-browser'; import KeyboardBindings from 'diagram-js/lib/features/keyboard/KeyboardBindings'; /** * BPMN 2.0 specific keyboard bindings. * * @param {Injector} injector */ export default function BpmnKeyboardBindings(injector) { injector.invoke(KeyboardBindings, this); } inherits(BpmnKeyboardBindings, KeyboardBindings); BpmnKeyboardBindings.$inject = [ 'injector' ]; /** * Register available keyboard bindings. * * @param {Keyboard} keyboard * @param {EditorActions} editorActions */ BpmnKeyboardBindings.prototype.registerBindings = function(keyboard, editorActions) { // inherit default bindings KeyboardBindings.prototype.registerBindings.call(this, 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); } } // select all elements // CTRL + A addListener('selectElements', function(context) { var event = context.keyEvent; if (keyboard.isKey([ 'a', 'A' ], event) && keyboard.isCmd(event)) { editorActions.trigger('selectElements'); return true; } }); // search labels // CTRL + F addListener('find', function(context) { var event = context.keyEvent; if (keyboard.isKey([ 'f', 'F' ], event) && keyboard.isCmd(event)) { editorActions.trigger('find'); return true; } }); // activate space tool // S addListener('spaceTool', function(context) { var event = context.keyEvent; if (keyboard.hasModifier(event)) { return; } if (keyboard.isKey([ 's', 'S' ], event)) { editorActions.trigger('spaceTool'); return true; } }); // activate lasso tool // L addListener('lassoTool', function(context) { var event = context.keyEvent; if (keyboard.hasModifier(event)) { return; } if (keyboard.isKey([ 'l', 'L' ], event)) { editorActions.trigger('lassoTool'); return true; } }); // activate hand tool // H addListener('handTool', function(context) { var event = context.keyEvent; if (keyboard.hasModifier(event)) { return; } if (keyboard.isKey([ 'h', 'H' ], event)) { editorActions.trigger('handTool'); return true; } }); // activate global connect tool // C addListener('globalConnectTool', function(context) { var event = context.keyEvent; if (keyboard.hasModifier(event)) { return; } if (keyboard.isKey([ 'c', 'C' ], event)) { editorActions.trigger('globalConnectTool'); return true; } }); // activate direct editing // E addListener('directEditing', function(context) { var event = context.keyEvent; if (keyboard.hasModifier(event)) { return; } if (keyboard.isKey([ 'e', 'E' ], event)) { editorActions.trigger('directEditing'); return true; } }); };