@jylups/cmmn-js 0.0.0-stage → 0.21.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.
Files changed (103) hide show
  1. package/.babelrc +3 -0
  2. package/CHANGELOG.md +119 -0
  3. package/LICENSE +23 -0
  4. package/README.md +107 -2
  5. package/dist/assets/cmmn-font/css/cmmn-codes.css +41 -0
  6. package/dist/assets/cmmn-font/css/cmmn-embedded.css +94 -0
  7. package/dist/assets/cmmn-font/css/cmmn.css +97 -0
  8. package/dist/assets/cmmn-font/font/cmmn.eot +0 -0
  9. package/dist/assets/cmmn-font/font/cmmn.svg +90 -0
  10. package/dist/assets/cmmn-font/font/cmmn.ttf +0 -0
  11. package/dist/assets/cmmn-font/font/cmmn.woff +0 -0
  12. package/dist/assets/cmmn-font/font/cmmn.woff2 +0 -0
  13. package/dist/assets/diagram-js.css +713 -0
  14. package/dist/cmmn-modeler.development.js +44817 -0
  15. package/dist/cmmn-modeler.production.min.js +2 -0
  16. package/dist/cmmn-navigated-viewer.development.js +18131 -0
  17. package/dist/cmmn-navigated-viewer.production.min.js +2 -0
  18. package/dist/cmmn-viewer.development.js +17599 -0
  19. package/dist/cmmn-viewer.production.min.js +2 -0
  20. package/index.js +1 -0
  21. package/lib/Modeler.js +222 -0
  22. package/lib/NavigatedViewer.js +28 -0
  23. package/lib/Viewer.js +489 -0
  24. package/lib/core/ItemRegistry.js +316 -0
  25. package/lib/core/index.js +7 -0
  26. package/lib/draw/CmmnRenderer.js +1235 -0
  27. package/lib/draw/PathMap.js +335 -0
  28. package/lib/draw/index.js +5 -0
  29. package/lib/features/auto-resize/CmmnAutoResizeProvider.js +57 -0
  30. package/lib/features/auto-resize/index.js +7 -0
  31. package/lib/features/context-pad/ContextPadProvider.js +240 -0
  32. package/lib/features/context-pad/index.js +11 -0
  33. package/lib/features/editor-actions/CmmnEditorActions.js +105 -0
  34. package/lib/features/editor-actions/index.js +10 -0
  35. package/lib/features/keyboard/CmmnKeyboardBindings.js +159 -0
  36. package/lib/features/keyboard/index.js +7 -0
  37. package/lib/features/label-editing/LabelEditingProvider.js +221 -0
  38. package/lib/features/label-editing/LabelUtil.js +95 -0
  39. package/lib/features/label-editing/cmd/UpdateLabelHandler.js +63 -0
  40. package/lib/features/label-editing/index.js +9 -0
  41. package/lib/features/modeling/CmmnFactory.js +166 -0
  42. package/lib/features/modeling/CmmnLayouter.js +49 -0
  43. package/lib/features/modeling/CmmnUpdater.js +511 -0
  44. package/lib/features/modeling/ElementFactory.js +215 -0
  45. package/lib/features/modeling/Modeling.js +185 -0
  46. package/lib/features/modeling/behavior/AttachCriterionBehavior.js +58 -0
  47. package/lib/features/modeling/behavior/CaseFileItemUpdater.js +324 -0
  48. package/lib/features/modeling/behavior/LabelBehavior.js +139 -0
  49. package/lib/features/modeling/behavior/PlanItemDefinitionUpdater.js +449 -0
  50. package/lib/features/modeling/behavior/PlanningTableUpdater.js +620 -0
  51. package/lib/features/modeling/behavior/ReplaceConnectionBehavior.js +320 -0
  52. package/lib/features/modeling/behavior/ReplaceElementBehavior.js +395 -0
  53. package/lib/features/modeling/behavior/ResizeCasePlanModelBehavior.js +108 -0
  54. package/lib/features/modeling/behavior/SentryUpdater.js +678 -0
  55. package/lib/features/modeling/behavior/UnclaimIdBehavior.js +28 -0
  56. package/lib/features/modeling/behavior/index.js +24 -0
  57. package/lib/features/modeling/cmd/AppendShapeHandler.js +52 -0
  58. package/lib/features/modeling/cmd/IdClaimHandler.js +38 -0
  59. package/lib/features/modeling/cmd/ReconnectConnectionHandler.js +57 -0
  60. package/lib/features/modeling/cmd/ReplaceShapeHandler.js +46 -0
  61. package/lib/features/modeling/cmd/UpdateControlsHandler.js +221 -0
  62. package/lib/features/modeling/cmd/UpdatePropertiesHandler.js +240 -0
  63. package/lib/features/modeling/cmd/UpdateSemanticParentHandler.js +94 -0
  64. package/lib/features/modeling/index.js +20 -0
  65. package/lib/features/modeling/util/ModelingUtil.js +138 -0
  66. package/lib/features/modeling/util/PlanItemDefinitionUtil.js +183 -0
  67. package/lib/features/ordering/CmmnOrderingProvider.js +146 -0
  68. package/lib/features/ordering/index.js +4 -0
  69. package/lib/features/outline/Outline.js +47 -0
  70. package/lib/features/outline/index.js +6 -0
  71. package/lib/features/palette/PaletteProvider.js +171 -0
  72. package/lib/features/palette/index.js +12 -0
  73. package/lib/features/popup-menu/ReplaceMenuProvider.js +448 -0
  74. package/lib/features/popup-menu/index.js +4 -0
  75. package/lib/features/replace/CmmnReplace.js +355 -0
  76. package/lib/features/replace/ReplaceOptions.js +241 -0
  77. package/lib/features/replace/index.js +8 -0
  78. package/lib/features/replace-preview/CmmnReplacePreview.js +247 -0
  79. package/lib/features/replace-preview/index.js +7 -0
  80. package/lib/features/rules/CmmnRules.js +1040 -0
  81. package/lib/features/rules/index.js +7 -0
  82. package/lib/features/search/CmmnSearchProvider.js +129 -0
  83. package/lib/features/search/index.js +7 -0
  84. package/lib/features/snapping/CmmnConnectSnapping.js +110 -0
  85. package/lib/features/snapping/CmmnCreateMoveSnapping.js +148 -0
  86. package/lib/features/snapping/CmmnResizeSnapping.js +42 -0
  87. package/lib/features/snapping/CmmnSnappingUtil.js +76 -0
  88. package/lib/features/snapping/index.js +17 -0
  89. package/lib/import/CmmnImporter.js +251 -0
  90. package/lib/import/CmmnTreeWalker.js +410 -0
  91. package/lib/import/Importer.js +73 -0
  92. package/lib/import/Util.js +9 -0
  93. package/lib/import/index.js +3 -0
  94. package/lib/util/DiUtil.js +39 -0
  95. package/lib/util/LabelUtil.js +124 -0
  96. package/lib/util/ModelUtil.js +257 -0
  97. package/lib/util/PoweredByUtil.js +91 -0
  98. package/package.json +88 -4
  99. package/test/helper/index.js +231 -0
  100. package/test/util/KeyEvents.js +23 -0
  101. package/test/util/MockEvents.js +55 -0
  102. package/test/util/custom-rules/CustomRules.js +19 -0
  103. package/test/util/custom-rules/index.js +4 -0
@@ -0,0 +1,316 @@
1
+ 'use strict';
2
+
3
+ var ModelUtil = require('../util/ModelUtil'),
4
+ getDefinition = ModelUtil.getDefinition,
5
+ getSentry = ModelUtil.getSentry;
6
+
7
+ var isAny = require('../features/modeling/util/ModelingUtil').isAny;
8
+
9
+ var forEach = require('min-dash').forEach,
10
+ isArray = require('min-dash').isArray;
11
+
12
+
13
+ /**
14
+ * @class
15
+ *
16
+ * A registry that keeps track of all items in the model.
17
+ */
18
+ function ItemRegistry(elementRegistry, eventBus) {
19
+ this._items = {};
20
+ this._referencedBy = {};
21
+
22
+ this._elementRegistry = elementRegistry;
23
+ this._eventBus = eventBus;
24
+
25
+ this._init();
26
+ }
27
+
28
+ ItemRegistry.$inject = [ 'elementRegistry', 'eventBus' ];
29
+
30
+ module.exports = ItemRegistry;
31
+
32
+
33
+ ItemRegistry.prototype._init = function(config) {
34
+
35
+ var eventBus = this._eventBus;
36
+
37
+ eventBus.on('diagram.destroy', 500, this._clear, this);
38
+ eventBus.on('diagram.clear', 500, this._clear, this);
39
+ };
40
+
41
+ ItemRegistry.prototype._clear = function() {
42
+ this._items = {};
43
+ this._referencedBy = {};
44
+ };
45
+
46
+ /**
47
+ * Register a given item.
48
+ *
49
+ * @param {ModdleElement} item
50
+ */
51
+ ItemRegistry.prototype.add = function(item) {
52
+
53
+ var items = this._items,
54
+ id = item.id,
55
+ definitions = this._referencedBy,
56
+ definition = getReference(item),
57
+ definitionId = definition && definition.id;
58
+
59
+ items[id] = item;
60
+
61
+ if (definition) {
62
+ definitions[definitionId] = definitions[definitionId] || [];
63
+
64
+ if (definitions[definitionId].indexOf(item) === -1) {
65
+ definitions[definitionId].push(item);
66
+ }
67
+
68
+ }
69
+
70
+ };
71
+
72
+
73
+ /**
74
+ * Removes an item from the registry.
75
+ *
76
+ * @param {ModdleElement} item
77
+ */
78
+ ItemRegistry.prototype.remove = function(item) {
79
+
80
+ var items = this._items,
81
+ id = item.id,
82
+ definitions = this._referencedBy,
83
+ definition = getReference(item),
84
+ definitionId = definition && definition.id;
85
+
86
+ delete items[id];
87
+
88
+ if (definition) {
89
+
90
+ var referencingItems = definitions[definitionId] || [],
91
+ idx = referencingItems.indexOf(item);
92
+
93
+ if (idx !== -1) {
94
+ referencingItems.splice(idx, 1);
95
+ }
96
+
97
+ if (!referencingItems.length) {
98
+ delete definitions[definitionId];
99
+ }
100
+
101
+ }
102
+
103
+ };
104
+
105
+
106
+ /**
107
+ * Update the registration with the new id.
108
+ *
109
+ * @param {ModdleElement} item
110
+ * @param {String} newId
111
+ */
112
+ ItemRegistry.prototype.updateId = function(element, newId) {
113
+
114
+ var items,
115
+ item;
116
+
117
+ if (typeof element === 'string') {
118
+ element = this.get(element);
119
+ }
120
+
121
+ if (isDefinition(element)) {
122
+ items = this._referencedBy;
123
+ }
124
+ else {
125
+ items = this._items;
126
+ }
127
+
128
+ if (element) {
129
+
130
+ item = items[element.id];
131
+
132
+ delete items[element.id];
133
+
134
+ items[newId] = item;
135
+
136
+ }
137
+
138
+ };
139
+
140
+
141
+ /**
142
+ * Update the registration.
143
+ *
144
+ * @param {ModdleElement} item
145
+ * @param {ModdleElement} newReference
146
+ */
147
+ ItemRegistry.prototype.updateReference = function(item, newReference) {
148
+
149
+ var definitions = this._referencedBy,
150
+ oldDefinition = getReference(item),
151
+ oldDefinitionId = oldDefinition && oldDefinition.id;
152
+
153
+ if (oldDefinition) {
154
+
155
+ var referencingItems = definitions[oldDefinitionId] || [],
156
+ idx = referencingItems.indexOf(item);
157
+
158
+ if (idx !== -1) {
159
+ referencingItems.splice(idx, 1);
160
+ }
161
+
162
+ if (!referencingItems.length) {
163
+ delete definitions[oldDefinitionId];
164
+ }
165
+
166
+ }
167
+
168
+ if (newReference) {
169
+
170
+ var newReferenceId = newReference.id;
171
+ if (newReferenceId) {
172
+
173
+ definitions[newReferenceId] = definitions[newReferenceId] || [];
174
+
175
+ if (definitions[newReferenceId].indexOf(item) === -1) {
176
+ definitions[newReferenceId].push(item);
177
+ }
178
+
179
+ }
180
+
181
+ }
182
+
183
+ };
184
+
185
+
186
+ /**
187
+ * Return the item for a given id.
188
+ *
189
+ * @param {String} id for selecting the item
190
+ *
191
+ * @return {ModdleElement}
192
+ */
193
+ ItemRegistry.prototype.get = function(id) {
194
+ return this._items[id];
195
+ };
196
+
197
+
198
+ /**
199
+ * Return all items that match a given filter function.
200
+ *
201
+ * @param {Function} fn
202
+ *
203
+ * @return {Array<ModdleElement>}
204
+ */
205
+ ItemRegistry.prototype.filter = function(fn) {
206
+
207
+ var filtered = [];
208
+
209
+ this.forEach(function(element, definition) {
210
+ if (fn(element, definition)) {
211
+ filtered.push(element);
212
+ }
213
+ });
214
+
215
+ return filtered;
216
+
217
+ };
218
+
219
+
220
+ /**
221
+ * Return all items.
222
+ *
223
+ * @return {Array<ModdleElement>}
224
+ */
225
+ ItemRegistry.prototype.getAll = function() {
226
+ return this.filter(function(e) { return e; });
227
+ };
228
+
229
+
230
+ /**
231
+ * Iterate over all items.
232
+ *
233
+ * @param {Function} fn
234
+ */
235
+ ItemRegistry.prototype.forEach = function(fn) {
236
+
237
+ var items = this._items;
238
+
239
+ forEach(items, function(item) {
240
+ return fn(item, getReference(item));
241
+ });
242
+
243
+ };
244
+
245
+
246
+ /**
247
+ * Return for given definition all referenced items.
248
+ *
249
+ * @param {String|ModdleElement} filter
250
+ */
251
+ ItemRegistry.prototype.getReferences = function(filter) {
252
+ var id = filter.id || filter;
253
+ return (this._referencedBy[id] || []).slice();
254
+ };
255
+
256
+
257
+ /**
258
+ * Return for a given item id the shape element.
259
+ *
260
+ * @param {String|ModdleElement} filter
261
+ */
262
+ ItemRegistry.prototype.getShape = function(filter) {
263
+ var id = filter.id || filter;
264
+ return this._elementRegistry && this._elementRegistry.get(id);
265
+ };
266
+
267
+
268
+ /**
269
+ * Return for a given filter all shapes.
270
+ *
271
+ * @param {Array<String>|String|ModdleElement} filter
272
+ */
273
+ ItemRegistry.prototype.getShapes = function(filter) {
274
+
275
+ var shapes = [],
276
+ self = this;
277
+
278
+ function add(shape) {
279
+ shape && shapes.push(shape);
280
+ }
281
+
282
+ if (isArray(filter)) {
283
+
284
+ forEach(filter, function(f) {
285
+ add(self.getShape(f));
286
+ });
287
+
288
+ }
289
+ else if (isDefinition(filter)) {
290
+
291
+ var referencedBy = self.getReferences(filter);
292
+ forEach(referencedBy, function(reference) {
293
+ add(self.getShape(reference));
294
+ });
295
+
296
+ }
297
+ else {
298
+ add(self.getShape(filter));
299
+ }
300
+
301
+ return shapes;
302
+
303
+ };
304
+
305
+
306
+ function getReference(item) {
307
+ return getDefinition(item) || getSentry(item);
308
+ }
309
+
310
+ function isDefinition(item) {
311
+ return isAny(item, [
312
+ 'cmmn:PlanItemDefinition',
313
+ 'cmmn:Sentry',
314
+ 'cmmn:CaseFileItemDefinition'
315
+ ]);
316
+ }
@@ -0,0 +1,7 @@
1
+ module.exports = {
2
+ __depends__: [
3
+ require('../draw'),
4
+ require('../import')
5
+ ],
6
+ itemRegistry: [ 'type', require('./ItemRegistry') ]
7
+ };