Handles two new scenarios:
1. A user wants to connect an event-based gateway to an event-based
gateway target with existing incoming sequence flows. The existing
sequence flows are removed before connecting the new one.
2. A user wants to replace a gateway, that is already connected to
event-based gateway targets, with an event-based gateway. The existing
incoming sequence flows of the targets, which do not belong to the
newly replaced event-based gateway, are removed before the replacement
operation finishes.
This is because target elements in an event gateway configuration
must not have any additional incoming sequence flows other than
that from the event gateway.
Until now we did not properly sanitize the IDs we create for colored
markers. This would make the marker retrival fail with fill and
stroke colors encoded in hex and rgb(a, b, c) form.
This commit improves the situation by removing forbidden chars from
the marker ID.
Closes#981
Related to camunda/camunda-modeler#1342
This adds a method to switch displayed diagram without reimporting
xml via
```
var viewer = new Viewer({ container: container });
viewer.importXML(xml, diagramId, done);
var diagrams = viewer.getDefinitions().diagrams;
viewer.open(diagrams[1], done);
```
This introduces a new parameter to `Viewer#importXML`
which enables to choose the diagram to display.
```
var viewer = new Viewer({ container: container });
viewer.importXML(xml, diagramId, done);
```
Closes#87
* only register keyboard bindings that are backed by actual
editor actions
* rename BpmnKeyBindings -> BpmnKeyboardBindings for parity with
diagram-js@latest
* sub-class and override _keyboardBindings_ service provided
by diagram-js
* extend spec to verify default actions
* Treat features as optional dependencies and register action
only if feature exists
* Explicitly add features to the Modeler and NavigatedViewer types
With the new version of `diagram-js`, the keyboard listeners receive
a single parameter which is an object with `KeyboardEvent` event
as the only property. `BpmnKeyBindings` needed to change in order
to make use of new version of API.
This ensures we don't accidently require files in the lib directory
via the global `lib` import. That stuff works during tests but does
not work in the final bundle.
Considerations: This plugin adds some runtime overhead to our linting
process.