UNPKG

mida

Version:

Muiltiple Instance and Data Animator for BPMN models.

108 lines (82 loc) 2.58 kB
'use strict'; var domClosest = require('min-dom/dist').closest, domClasses = require('min-dom/dist').classes, domEvent = require('min-dom/dist').event; var events = require('../../../util/EventHelper'), TOGGLE_MODE_EVENT = events.TOGGLE_MODE_EVENT; // TODO: find a better way to check if Camunda Modeler function isCamundaModeler(canvas) { var container = canvas.getContainer(); return domClosest(container, '.editor-parent') && domClosest(container, '.editor-container') && domClosest(container, '.bpmn-editor') && domClosest(container, '.content'); } function KeyboardBindings(canvas, eventBus, editorActions, keyboard) { var isActive = false; eventBus.on(TOGGLE_MODE_EVENT, function(context) { var simulationModeActive = context.simulationModeActive; if (simulationModeActive) { isActive = true; } else { isActive = false; } }); eventBus.on('import.done', function() { // Camunda Modeler doesn't bind keyboard therefore needs special treatment if (isCamundaModeler(canvas)) { domEvent.bind(window, 'keydown', function(e) { var key = e.keyCode; if (!isActive) { return; } // space if (key === 32) { editorActions.trigger('togglePauseTokenSimulation'); } // r if (key === 82) { editorActions.trigger('resetTokenSimulation'); } // l if (key === 76) { editorActions.trigger('toggleTokenSimulationLog'); } }); } else { keyboard.addListener(function(key) { // t if (key === 84) { editorActions.trigger('toggleTokenSimulation'); return true; } if (!isActive) { return; } // space if (key === 32) { editorActions.trigger('togglePauseTokenSimulation'); return true; } // r if (key === 82) { editorActions.trigger('resetTokenSimulation'); return true; } }); // see https://github.com/bpmn-io/diagram-js/issues/226 keyboard._listeners.unshift(function(key) { if (!isActive) { return; } // l if (key === 76) { editorActions.trigger('toggleTokenSimulationLog'); return true; } }); } }); } KeyboardBindings.$inject = [ 'canvas', 'eventBus', 'editorActions', 'keyboard' ]; module.exports = KeyboardBindings;