bpmn-js 13.2.2 → 14.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -11,11 +11,131 @@ export default class BaseViewer extends Diagram {
11
11
  */
12
12
  constructor(options?: BaseViewerOptions);
13
13
 
14
- importXML: (xml: string, bpmnDiagram?: ModdleElement | string) => Promise<ImportXMLResult>;
15
- importDefinitions: (definitions: ModdleElement, bpmnDiagram?: ModdleElement | string) => Promise<ImportDefinitionsResult>;
16
- open: (bpmnDiagramOrId: ModdleElement | string) => Promise<OpenResult>;
17
- saveXML: (options?: SaveXMLOptions) => Promise<SaveXMLResult>;
18
- saveSVG: () => Promise<SaveSVGResult>;
14
+ /**
15
+ * Parse and render a BPMN 2.0 diagram.
16
+ *
17
+ * Once finished the viewer reports back the result to the
18
+ * provided callback function with (err, warnings).
19
+ *
20
+ * ## Life-Cycle Events
21
+ *
22
+ * During import the viewer will fire life-cycle events:
23
+ *
24
+ * * import.parse.start (about to read model from XML)
25
+ * * import.parse.complete (model read; may have worked or not)
26
+ * * import.render.start (graphical import start)
27
+ * * import.render.complete (graphical import finished)
28
+ * * import.done (everything done)
29
+ *
30
+ * You can use these events to hook into the life-cycle.
31
+ *
32
+ * @throws {ImportXMLError} An error thrown during the import of the XML.
33
+ *
34
+ * @fires BaseViewer#ImportParseStartEvent
35
+ * @fires BaseViewer#ImportParseCompleteEvent
36
+ * @fires Importer#ImportRenderStartEvent
37
+ * @fires Importer#ImportRenderCompleteEvent
38
+ * @fires BaseViewer#ImportDoneEvent
39
+ *
40
+ * @param xml The BPMN 2.0 XML to be imported.
41
+ * @param bpmnDiagram The optional diagram or Id of the BPMN diagram to open.
42
+ *
43
+ * @return A promise resolving with warnings that were produced during the import.
44
+ */
45
+ importXML(xml: string, bpmnDiagram?: ModdleElement | string): Promise<ImportXMLResult>;
46
+
47
+ /**
48
+ * Import parsed definitions and render a BPMN 2.0 diagram.
49
+ *
50
+ * Once finished the viewer reports back the result to the
51
+ * provided callback function with (err, warnings).
52
+ *
53
+ * ## Life-Cycle Events
54
+ *
55
+ * During import the viewer will fire life-cycle events:
56
+ *
57
+ * * import.render.start (graphical import start)
58
+ * * import.render.complete (graphical import finished)
59
+ *
60
+ * You can use these events to hook into the life-cycle.
61
+ *
62
+ * @throws {ImportDefinitionsError} An error thrown during the import of the definitions.
63
+ *
64
+ * @param definitions The definitions.
65
+ * @param bpmnDiagram The optional diagram or ID of the BPMN diagram to open.
66
+ *
67
+ * @return A promise resolving with warnings that were produced during the import.
68
+ */
69
+ importDefinitions(definitions: ModdleElement, bpmnDiagram?: ModdleElement | string): Promise<ImportDefinitionsResult>;
70
+
71
+ /**
72
+ * Open diagram of previously imported XML.
73
+ *
74
+ * Once finished the viewer reports back the result to the
75
+ * provided callback function with (err, warnings).
76
+ *
77
+ * ## Life-Cycle Events
78
+ *
79
+ * During switch the viewer will fire life-cycle events:
80
+ *
81
+ * * import.render.start (graphical import start)
82
+ * * import.render.complete (graphical import finished)
83
+ *
84
+ * You can use these events to hook into the life-cycle.
85
+ *
86
+ * @throws {OpenError} An error thrown during opening.
87
+ *
88
+ * @param bpmnDiagramOrId The diagram or Id of the BPMN diagram to open.
89
+ *
90
+ * @return A promise resolving with warnings that were produced during opening.
91
+ */
92
+ open(bpmnDiagramOrId: ModdleElement | string): Promise<OpenResult>;
93
+
94
+ /**
95
+ * Export the currently displayed BPMN 2.0 diagram as
96
+ * a BPMN 2.0 XML document.
97
+ *
98
+ * ## Life-Cycle Events
99
+ *
100
+ * During XML saving the viewer will fire life-cycle events:
101
+ *
102
+ * * saveXML.start (before serialization)
103
+ * * saveXML.serialized (after xml generation)
104
+ * * saveXML.done (everything done)
105
+ *
106
+ * You can use these events to hook into the life-cycle.
107
+ *
108
+ * @throws {Error} An error thrown during export.
109
+ *
110
+ * @fires BaseViewer#SaveXMLStart
111
+ * @fires BaseViewer#SaveXMLDone
112
+ *
113
+ * @param options The options.
114
+ *
115
+ * @return A promise resolving with the XML.
116
+ */
117
+ saveXML(options?: SaveXMLOptions): Promise<SaveXMLResult>;
118
+
119
+ /**
120
+ * Export the currently displayed BPMN 2.0 diagram as
121
+ * an SVG image.
122
+ *
123
+ * ## Life-Cycle Events
124
+ *
125
+ * During SVG saving the viewer will fire life-cycle events:
126
+ *
127
+ * * saveSVG.start (before serialization)
128
+ * * saveSVG.done (everything done)
129
+ *
130
+ * You can use these events to hook into the life-cycle.
131
+ *
132
+ * @throws {Error} An error thrown during export.
133
+ *
134
+ * @fires BaseViewer#SaveSVGDone
135
+ *
136
+ * @return A promise resolving with the SVG.
137
+ */
138
+ saveSVG(): Promise<SaveSVGResult>;
19
139
 
20
140
  /**
21
141
  * Return modules to instantiate with.
package/lib/BaseViewer.js CHANGED
@@ -31,10 +31,6 @@ import {
31
31
  importBpmnDiagram
32
32
  } from './import/Importer';
33
33
 
34
- import {
35
- wrapForCompatibility
36
- } from './util/CompatibilityUtil';
37
-
38
34
  /**
39
35
  * @template T
40
36
  *
@@ -192,28 +188,7 @@ BaseViewer.prototype.importXML = async function importXML(xml, bpmnDiagram) {
192
188
  const self = this;
193
189
 
194
190
  function ParseCompleteEvent(data) {
195
-
196
- const event = self.get('eventBus').createEvent(data);
197
-
198
- // TODO(nikku): remove with future bpmn-js version
199
- Object.defineProperty(event, 'context', {
200
- enumerable: true,
201
- get: function() {
202
-
203
- console.warn(new Error(
204
- 'import.parse.complete <context> is deprecated ' +
205
- 'and will be removed in future library versions'
206
- ));
207
-
208
- return {
209
- warnings: data.warnings,
210
- references: data.references,
211
- elementsById: data.elementsById
212
- };
213
- }
214
- });
215
-
216
- return event;
191
+ return self.get('eventBus').createEvent(data);
217
192
  }
218
193
 
219
194
  let aggregatedWarnings = [];
@@ -291,8 +266,6 @@ BaseViewer.prototype.importXML = async function importXML(xml, bpmnDiagram) {
291
266
  }
292
267
  };
293
268
 
294
- BaseViewer.prototype.importXML = wrapForCompatibility(BaseViewer.prototype.importXML);
295
-
296
269
 
297
270
  /**
298
271
  * Import parsed definitions and render a BPMN 2.0 diagram.
@@ -323,8 +296,6 @@ BaseViewer.prototype.importDefinitions = async function importDefinitions(defini
323
296
  return { warnings: result.warnings };
324
297
  };
325
298
 
326
- BaseViewer.prototype.importDefinitions = wrapForCompatibility(BaseViewer.prototype.importDefinitions);
327
-
328
299
 
329
300
  /**
330
301
  * Open diagram of previously imported XML.
@@ -386,8 +357,6 @@ BaseViewer.prototype.open = async function open(bpmnDiagramOrId) {
386
357
  return { warnings };
387
358
  };
388
359
 
389
- BaseViewer.prototype.open = wrapForCompatibility(BaseViewer.prototype.open);
390
-
391
360
  /**
392
361
  * Export the currently displayed BPMN 2.0 diagram as
393
362
  * a BPMN 2.0 XML document.
@@ -462,8 +431,6 @@ BaseViewer.prototype.saveXML = async function saveXML(options) {
462
431
  return result;
463
432
  };
464
433
 
465
- BaseViewer.prototype.saveXML = wrapForCompatibility(BaseViewer.prototype.saveXML);
466
-
467
434
 
468
435
  /**
469
436
  * Export the currently displayed BPMN 2.0 diagram as
@@ -531,40 +498,6 @@ BaseViewer.prototype.saveSVG = async function saveSVG() {
531
498
  return { svg };
532
499
  };
533
500
 
534
- BaseViewer.prototype.saveSVG = wrapForCompatibility(BaseViewer.prototype.saveSVG);
535
-
536
- /**
537
- * Get a named diagram service.
538
- *
539
- * @example
540
- *
541
- * const elementRegistry = viewer.get('elementRegistry');
542
- * const startEventShape = elementRegistry.get('StartEvent_1');
543
- *
544
- * @param {string} name
545
- *
546
- * @return {Object} diagram service instance
547
- *
548
- * @method BaseViewer#get
549
- */
550
-
551
- /**
552
- * Invoke a function in the context of this viewer.
553
- *
554
- * @example
555
- *
556
- * viewer.invoke(function(elementRegistry) {
557
- * const startEventShape = elementRegistry.get('StartEvent_1');
558
- * });
559
- *
560
- * @param {Function} fn to be invoked
561
- *
562
- * @return {Object} the functions return value
563
- *
564
- * @method BaseViewer#invoke
565
- */
566
-
567
-
568
501
  BaseViewer.prototype._setDefinitions = function(definitions) {
569
502
  this._definitions = definitions;
570
503
  };
package/lib/Modeler.d.ts CHANGED
@@ -66,7 +66,15 @@
66
66
  export default class Modeler extends BaseModeler {
67
67
  static Viewer: typeof Viewer;
68
68
  static NavigatedViewer: typeof NavigatedViewer;
69
- createDiagram: () => Promise<ImportXMLResult>;
69
+
70
+ /**
71
+ * Create a new diagram to start modeling.
72
+ *
73
+ * @throws {ImportXMLError} An error thrown during the import of the XML.
74
+ *
75
+ * @return A promise resolving with warnings that were produced during the import.
76
+ */
77
+ createDiagram(): Promise<ImportXMLResult>;
70
78
  }
71
79
 
72
80
  type BaseViewerOptions = import('./BaseViewer').BaseViewerOptions;
package/lib/Modeler.js CHANGED
@@ -28,6 +28,7 @@ import KeyboardModule from './features/keyboard';
28
28
  import KeyboardMoveSelectionModule from 'diagram-js/lib/features/keyboard-move-selection';
29
29
  import LabelEditingModule from './features/label-editing';
30
30
  import ModelingModule from './features/modeling';
31
+ import ModelingFeedbackModule from './features/modeling-feedback';
31
32
  import MoveModule from 'diagram-js/lib/features/move';
32
33
  import PaletteModule from './features/palette';
33
34
  import ReplacePreviewModule from './features/replace-preview';
@@ -35,10 +36,6 @@ import ResizeModule from 'diagram-js/lib/features/resize';
35
36
  import SnappingModule from './features/snapping';
36
37
  import SearchModule from './features/search';
37
38
 
38
- import {
39
- wrapForCompatibility
40
- } from './util/CompatibilityUtil';
41
-
42
39
  var initialDiagram =
43
40
  '<?xml version="1.0" encoding="UTF-8"?>' +
44
41
  '<bpmn:definitions xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" ' +
@@ -152,8 +149,6 @@ Modeler.prototype.createDiagram = function createDiagram() {
152
149
  return this.importXML(initialDiagram);
153
150
  };
154
151
 
155
- Modeler.prototype.createDiagram = wrapForCompatibility(Modeler.prototype.createDiagram);
156
-
157
152
 
158
153
  Modeler.prototype._interactionModules = [
159
154
 
@@ -185,6 +180,7 @@ Modeler.prototype._modelingModules = [
185
180
  KeyboardMoveSelectionModule,
186
181
  LabelEditingModule,
187
182
  ModelingModule,
183
+ ModelingFeedbackModule,
188
184
  MoveModule,
189
185
  PaletteModule,
190
186
  ReplacePreviewModule,
@@ -452,7 +452,8 @@ ContextPadProvider.prototype.getContextPadEntries = function(element) {
452
452
  assign(actions, {
453
453
  'append.text-annotation': appendAction(
454
454
  'bpmn:TextAnnotation',
455
- 'bpmn-icon-text-annotation'
455
+ 'bpmn-icon-text-annotation',
456
+ translate('Append TextAnnotation')
456
457
  )
457
458
  });
458
459
  }
@@ -468,7 +469,8 @@ ContextPadProvider.prototype.getContextPadEntries = function(element) {
468
469
  assign(actions, {
469
470
  'append.text-annotation': appendAction(
470
471
  'bpmn:TextAnnotation',
471
- 'bpmn-icon-text-annotation'
472
+ 'bpmn-icon-text-annotation',
473
+ translate('Append TextAnnotation')
472
474
  ),
473
475
 
474
476
  'connect': {
@@ -519,7 +521,11 @@ ContextPadProvider.prototype.getContextPadEntries = function(element) {
519
521
 
520
522
  if (is(businessObject, 'bpmn:Group')) {
521
523
  assign(actions, {
522
- 'append.text-annotation': appendAction('bpmn:TextAnnotation', 'bpmn-icon-text-annotation')
524
+ 'append.text-annotation': appendAction(
525
+ 'bpmn:TextAnnotation',
526
+ 'bpmn-icon-text-annotation',
527
+ translate('Append TextAnnotation')
528
+ )
523
529
  });
524
530
  }
525
531
 
@@ -108,7 +108,7 @@ export default function BpmnCopyPaste(bpmnFactory, eventBus, moddleCopy) {
108
108
  property = reference.property;
109
109
 
110
110
  if (key === descriptor.id) {
111
- element[ property ] = businessObject;
111
+ element.set(property, businessObject);
112
112
 
113
113
  array.push(descriptor.id);
114
114
  }
@@ -43,12 +43,18 @@ export default function EventBasedGatewayBehavior(eventBus, modeling) {
43
43
  var sequenceFlows = [];
44
44
 
45
45
  if (is(source, 'bpmn:EventBasedGateway')) {
46
- sequenceFlows = target.incoming.filter(isSequenceFlow);
46
+ sequenceFlows = target.incoming
47
+ .filter(flow =>
48
+ flow !== connection &&
49
+ isSequenceFlow(flow)
50
+ );
47
51
  } else {
48
- sequenceFlows = target.incoming.filter(function(connection) {
49
- return isSequenceFlow(connection)
50
- && is(connection.source, 'bpmn:EventBasedGateway');
51
- });
52
+ sequenceFlows = target.incoming
53
+ .filter(flow =>
54
+ flow !== connection &&
55
+ isSequenceFlow(flow) &&
56
+ is(flow.source, 'bpmn:EventBasedGateway')
57
+ );
52
58
  }
53
59
 
54
60
  sequenceFlows.forEach(function(sequenceFlow) {
@@ -19,7 +19,6 @@ import IsHorizontalFix from './IsHorizontalFix';
19
19
  import LabelBehavior from './LabelBehavior';
20
20
  import LayoutConnectionBehavior from './LayoutConnectionBehavior';
21
21
  import MessageFlowBehavior from './MessageFlowBehavior';
22
- import ModelingFeedback from './ModelingFeedback';
23
22
  import RemoveEmbeddedLabelBoundsBehavior from './RemoveEmbeddedLabelBoundsBehavior';
24
23
  import RemoveElementBehavior from './RemoveElementBehavior';
25
24
  import RemoveParticipantBehavior from './RemoveParticipantBehavior';
@@ -63,7 +62,6 @@ export default {
63
62
  'labelBehavior',
64
63
  'layoutConnectionBehavior',
65
64
  'messageFlowBehavior',
66
- 'modelingFeedback',
67
65
  'removeElementBehavior',
68
66
  'removeEmbeddedLabelBoundsBehavior',
69
67
  'removeParticipantBehavior',
@@ -102,7 +100,6 @@ export default {
102
100
  labelBehavior: [ 'type', LabelBehavior ],
103
101
  layoutConnectionBehavior: [ 'type', LayoutConnectionBehavior ],
104
102
  messageFlowBehavior: [ 'type', MessageFlowBehavior ],
105
- modelingFeedback: [ 'type', ModelingFeedback ],
106
103
  removeElementBehavior: [ 'type', RemoveElementBehavior ],
107
104
  removeEmbeddedLabelBoundsBehavior: [ 'type', RemoveEmbeddedLabelBoundsBehavior ],
108
105
  removeParticipantBehavior: [ 'type', RemoveParticipantBehavior ],
@@ -6,7 +6,6 @@ import ReplaceModule from '../replace';
6
6
  import SpaceToolModule from '../space-tool';
7
7
 
8
8
  import CommandModule from 'diagram-js/lib/command';
9
- import TooltipsModule from 'diagram-js/lib/features/tooltips';
10
9
  import LabelSupportModule from 'diagram-js/lib/features/label-support';
11
10
  import AttachSupportModule from 'diagram-js/lib/features/attach-support';
12
11
  import SelectionModule from 'diagram-js/lib/features/selection';
@@ -32,7 +31,6 @@ export default {
32
31
  OrderingModule,
33
32
  ReplaceModule,
34
33
  CommandModule,
35
- TooltipsModule,
36
34
  LabelSupportModule,
37
35
  AttachSupportModule,
38
36
  SelectionModule,
@@ -1,4 +1,4 @@
1
- import { is } from '../../../util/ModelUtil';
1
+ import { is } from '../../util/ModelUtil';
2
2
 
3
3
  /**
4
4
  * @typedef {import('diagram-js/lib/core/EventBus').default} EventBus
@@ -0,0 +1,7 @@
1
+ declare namespace _default {
2
+ const __depends__: import("didi").ModuleDeclaration[];
3
+ const __init__: string[];
4
+ const modelingFeedback: (string | typeof ModelingFeedback)[];
5
+ }
6
+ export default _default;
7
+ import ModelingFeedback from './ModelingFeedback';
@@ -0,0 +1,13 @@
1
+ import TooltipsModule from 'diagram-js/lib/features/tooltips';
2
+
3
+ import ModelingFeedback from './ModelingFeedback';
4
+
5
+ export default {
6
+ __depends__: [
7
+ TooltipsModule
8
+ ],
9
+ __init__: [
10
+ 'modelingFeedback'
11
+ ],
12
+ modelingFeedback: [ 'type', ModelingFeedback ]
13
+ };
@@ -1,17 +1,3 @@
1
- /**
2
- * Wraps APIs to check:
3
- *
4
- * 1) If a callback is passed -> Warn users about callback deprecation.
5
- * 2) If Promise class is implemented in current environment.
6
- *
7
- * @private
8
- *
9
- * @param api
10
- *
11
- * @return
12
- */
13
- export function wrapForCompatibility(api: Function): Function;
14
-
15
1
  /**
16
2
  * @private
17
3
  *
@@ -1,68 +1,11 @@
1
1
  import {
2
- has,
3
- isFunction
2
+ has
4
3
  } from 'min-dash';
5
4
 
6
5
  /**
7
6
  * @typedef {import('../model/Types').ModdleElement} ModdleElement
8
7
  */
9
8
 
10
- // TODO(nikku): remove with future bpmn-js version
11
-
12
- /**
13
- * Wraps APIs to check:
14
- *
15
- * 1) If a callback is passed -> Warn users about callback deprecation.
16
- * 2) If Promise class is implemented in current environment.
17
- *
18
- * @private
19
- *
20
- * @param {Function} api
21
- *
22
- * @return {Function}
23
- */
24
- export function wrapForCompatibility(api) {
25
-
26
- return function() {
27
-
28
- if (!window.Promise) {
29
- throw new Error('Promises is not supported in this environment. Please polyfill Promise.');
30
- }
31
-
32
- var argLen = arguments.length;
33
- if (argLen >= 1 && isFunction(arguments[argLen - 1])) {
34
-
35
- var callback = arguments[argLen - 1];
36
-
37
- console.warn(new Error(
38
- 'Passing callbacks to ' + api.name + ' is deprecated and will be removed in a future major release. ' +
39
- 'Please switch to promises: https://bpmn.io/l/moving-to-promises.html'
40
- ));
41
-
42
- var argsWithoutCallback = Array.prototype.slice.call(arguments, 0, -1);
43
-
44
- api.apply(this, argsWithoutCallback).then(function(result) {
45
-
46
- var firstKey = Object.keys(result)[0];
47
-
48
- // The APIs we are wrapping all resolve a single item depending on the API.
49
- // For instance, importXML resolves { warnings } and saveXML returns { xml }.
50
- // That's why we can call the callback with the first item of result.
51
- return callback(null, result[firstKey]);
52
-
53
- // Passing a second paramter instead of catch because we don't want to
54
- // catch errors thrown by callback().
55
- }, function(err) {
56
-
57
- return callback(err, err.warnings);
58
- });
59
- } else {
60
-
61
- return api.apply(this, arguments);
62
- }
63
- };
64
- }
65
-
66
9
 
67
10
  // TODO(nikku): remove with future bpmn-js version
68
11
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "bpmn-js",
3
- "version": "13.2.2",
3
+ "version": "14.0.0",
4
4
  "description": "A bpmn 2.0 toolkit and web modeler",
5
5
  "main": "index.js",
6
6
  "files": [
@@ -22,12 +22,12 @@
22
22
  "start:navigated-viewer": "cross-env SINGLE_START=navigated-viewer npm run dev",
23
23
  "dev": "npm test -- --auto-watch --no-single-run",
24
24
  "test": "karma start test/config/karma.unit.js",
25
- "distro": "node tasks/build-distro.js",
25
+ "distro": "node tasks/build-distro.mjs",
26
26
  "collect-translations": "cross-env COLLECT_TRANSLATIONS=1 npm test",
27
27
  "generate-types": "run-s generate-types:*",
28
28
  "generate-types:generate": "del-cli \"lib/**/*.d.ts\" && npx bio-dts -r lib",
29
29
  "generate-types:test": "tsc --noEmit --noImplicitAny",
30
- "test:distro": "node tasks/test-distro.js",
30
+ "test:distro": "node tasks/test-distro.mjs",
31
31
  "postversion": "run-s distro test:distro",
32
32
  "prepare": "run-s distro",
33
33
  "prepublishOnly": "run-s generate-types"
@@ -69,7 +69,7 @@
69
69
  "babel-loader": "^9.1.0",
70
70
  "babel-plugin-istanbul": "^6.1.1",
71
71
  "bio-dts": "^0.8.1",
72
- "bpmn-font": "^0.12.0",
72
+ "bpmn-font": "^0.12.1",
73
73
  "camunda-bpmn-moddle": "^4.0.1",
74
74
  "chai": "4.1.2",
75
75
  "chai-match": "^1.1.1",
@@ -80,7 +80,7 @@
80
80
  "eslint": "^8.22.0",
81
81
  "eslint-plugin-bpmn-io": "^1.0.0",
82
82
  "eslint-plugin-import": "^2.26.0",
83
- "execa": "^5.1.1",
83
+ "execa": "^8.0.0",
84
84
  "file-drops": "^0.5.0",
85
85
  "karma": "^6.4.1",
86
86
  "karma-chrome-launcher": "^3.1.1",
@@ -92,11 +92,10 @@
92
92
  "karma-safari-launcher": "^1.0.0",
93
93
  "karma-sinon-chai": "^2.0.2",
94
94
  "karma-webpack": "^5.0.0",
95
- "mkdirp": "^2.0.0",
96
95
  "mocha": "^10.1.0",
97
96
  "mocha-test-container-support": "0.2.0",
98
97
  "npm-run-all": "^4.1.2",
99
- "puppeteer": "^20.8.0",
98
+ "puppeteer": "^21.0.0",
100
99
  "remark-cli": "^11.0.0",
101
100
  "remark-preset-bpmn-io": "^0.2.1",
102
101
  "rollup": "^3.19.1",
@@ -108,10 +107,10 @@
108
107
  "webpack": "^5.74.0"
109
108
  },
110
109
  "dependencies": {
111
- "bpmn-moddle": "^8.0.0",
112
- "diagram-js": "^12.2.0",
110
+ "bpmn-moddle": "^8.0.1",
111
+ "diagram-js": "^12.3.0",
113
112
  "diagram-js-direct-editing": "^2.0.0",
114
- "ids": "^1.0.0",
113
+ "ids": "^1.0.3",
115
114
  "inherits-browser": "^0.1.0",
116
115
  "min-dash": "^4.0.0",
117
116
  "min-dom": "^4.0.3",