@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.
- package/.babelrc +3 -0
- package/CHANGELOG.md +119 -0
- package/LICENSE +23 -0
- package/README.md +107 -2
- package/dist/assets/cmmn-font/css/cmmn-codes.css +41 -0
- package/dist/assets/cmmn-font/css/cmmn-embedded.css +94 -0
- package/dist/assets/cmmn-font/css/cmmn.css +97 -0
- package/dist/assets/cmmn-font/font/cmmn.eot +0 -0
- package/dist/assets/cmmn-font/font/cmmn.svg +90 -0
- package/dist/assets/cmmn-font/font/cmmn.ttf +0 -0
- package/dist/assets/cmmn-font/font/cmmn.woff +0 -0
- package/dist/assets/cmmn-font/font/cmmn.woff2 +0 -0
- package/dist/assets/diagram-js.css +713 -0
- package/dist/cmmn-modeler.development.js +44817 -0
- package/dist/cmmn-modeler.production.min.js +2 -0
- package/dist/cmmn-navigated-viewer.development.js +18131 -0
- package/dist/cmmn-navigated-viewer.production.min.js +2 -0
- package/dist/cmmn-viewer.development.js +17599 -0
- package/dist/cmmn-viewer.production.min.js +2 -0
- package/index.js +1 -0
- package/lib/Modeler.js +222 -0
- package/lib/NavigatedViewer.js +28 -0
- package/lib/Viewer.js +489 -0
- package/lib/core/ItemRegistry.js +316 -0
- package/lib/core/index.js +7 -0
- package/lib/draw/CmmnRenderer.js +1235 -0
- package/lib/draw/PathMap.js +335 -0
- package/lib/draw/index.js +5 -0
- package/lib/features/auto-resize/CmmnAutoResizeProvider.js +57 -0
- package/lib/features/auto-resize/index.js +7 -0
- package/lib/features/context-pad/ContextPadProvider.js +240 -0
- package/lib/features/context-pad/index.js +11 -0
- package/lib/features/editor-actions/CmmnEditorActions.js +105 -0
- package/lib/features/editor-actions/index.js +10 -0
- package/lib/features/keyboard/CmmnKeyboardBindings.js +159 -0
- package/lib/features/keyboard/index.js +7 -0
- package/lib/features/label-editing/LabelEditingProvider.js +221 -0
- package/lib/features/label-editing/LabelUtil.js +95 -0
- package/lib/features/label-editing/cmd/UpdateLabelHandler.js +63 -0
- package/lib/features/label-editing/index.js +9 -0
- package/lib/features/modeling/CmmnFactory.js +166 -0
- package/lib/features/modeling/CmmnLayouter.js +49 -0
- package/lib/features/modeling/CmmnUpdater.js +511 -0
- package/lib/features/modeling/ElementFactory.js +215 -0
- package/lib/features/modeling/Modeling.js +185 -0
- package/lib/features/modeling/behavior/AttachCriterionBehavior.js +58 -0
- package/lib/features/modeling/behavior/CaseFileItemUpdater.js +324 -0
- package/lib/features/modeling/behavior/LabelBehavior.js +139 -0
- package/lib/features/modeling/behavior/PlanItemDefinitionUpdater.js +449 -0
- package/lib/features/modeling/behavior/PlanningTableUpdater.js +620 -0
- package/lib/features/modeling/behavior/ReplaceConnectionBehavior.js +320 -0
- package/lib/features/modeling/behavior/ReplaceElementBehavior.js +395 -0
- package/lib/features/modeling/behavior/ResizeCasePlanModelBehavior.js +108 -0
- package/lib/features/modeling/behavior/SentryUpdater.js +678 -0
- package/lib/features/modeling/behavior/UnclaimIdBehavior.js +28 -0
- package/lib/features/modeling/behavior/index.js +24 -0
- package/lib/features/modeling/cmd/AppendShapeHandler.js +52 -0
- package/lib/features/modeling/cmd/IdClaimHandler.js +38 -0
- package/lib/features/modeling/cmd/ReconnectConnectionHandler.js +57 -0
- package/lib/features/modeling/cmd/ReplaceShapeHandler.js +46 -0
- package/lib/features/modeling/cmd/UpdateControlsHandler.js +221 -0
- package/lib/features/modeling/cmd/UpdatePropertiesHandler.js +240 -0
- package/lib/features/modeling/cmd/UpdateSemanticParentHandler.js +94 -0
- package/lib/features/modeling/index.js +20 -0
- package/lib/features/modeling/util/ModelingUtil.js +138 -0
- package/lib/features/modeling/util/PlanItemDefinitionUtil.js +183 -0
- package/lib/features/ordering/CmmnOrderingProvider.js +146 -0
- package/lib/features/ordering/index.js +4 -0
- package/lib/features/outline/Outline.js +47 -0
- package/lib/features/outline/index.js +6 -0
- package/lib/features/palette/PaletteProvider.js +171 -0
- package/lib/features/palette/index.js +12 -0
- package/lib/features/popup-menu/ReplaceMenuProvider.js +448 -0
- package/lib/features/popup-menu/index.js +4 -0
- package/lib/features/replace/CmmnReplace.js +355 -0
- package/lib/features/replace/ReplaceOptions.js +241 -0
- package/lib/features/replace/index.js +8 -0
- package/lib/features/replace-preview/CmmnReplacePreview.js +247 -0
- package/lib/features/replace-preview/index.js +7 -0
- package/lib/features/rules/CmmnRules.js +1040 -0
- package/lib/features/rules/index.js +7 -0
- package/lib/features/search/CmmnSearchProvider.js +129 -0
- package/lib/features/search/index.js +7 -0
- package/lib/features/snapping/CmmnConnectSnapping.js +110 -0
- package/lib/features/snapping/CmmnCreateMoveSnapping.js +148 -0
- package/lib/features/snapping/CmmnResizeSnapping.js +42 -0
- package/lib/features/snapping/CmmnSnappingUtil.js +76 -0
- package/lib/features/snapping/index.js +17 -0
- package/lib/import/CmmnImporter.js +251 -0
- package/lib/import/CmmnTreeWalker.js +410 -0
- package/lib/import/Importer.js +73 -0
- package/lib/import/Util.js +9 -0
- package/lib/import/index.js +3 -0
- package/lib/util/DiUtil.js +39 -0
- package/lib/util/LabelUtil.js +124 -0
- package/lib/util/ModelUtil.js +257 -0
- package/lib/util/PoweredByUtil.js +91 -0
- package/package.json +88 -4
- package/test/helper/index.js +231 -0
- package/test/util/KeyEvents.js +23 -0
- package/test/util/MockEvents.js +55 -0
- package/test/util/custom-rules/CustomRules.js +19 -0
- package/test/util/custom-rules/index.js +4 -0
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var CmmnTreeWalker = require('./CmmnTreeWalker');
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Import the definitions into a diagram.
|
|
8
|
+
*
|
|
9
|
+
* Errors and warnings are reported through the specified callback.
|
|
10
|
+
*
|
|
11
|
+
* @param {Diagram} diagram
|
|
12
|
+
* @param {ModdleElement} definitions
|
|
13
|
+
* @param {Function} done the callback, invoked with (err, [ warning ]) once the import is done
|
|
14
|
+
*/
|
|
15
|
+
function importCmmnDiagram(diagram, definitions, done) {
|
|
16
|
+
|
|
17
|
+
var importer = diagram.get('cmmnImporter'),
|
|
18
|
+
eventBus = diagram.get('eventBus'),
|
|
19
|
+
itemRegistry = diagram.get('itemRegistry');
|
|
20
|
+
|
|
21
|
+
var error,
|
|
22
|
+
warnings = [];
|
|
23
|
+
|
|
24
|
+
/**
|
|
25
|
+
* Walk the diagram semantically, importing (=drawing)
|
|
26
|
+
* all elements you encounter.
|
|
27
|
+
*
|
|
28
|
+
* @param {ModdleElement} definitions
|
|
29
|
+
*/
|
|
30
|
+
function render(definitions) {
|
|
31
|
+
|
|
32
|
+
var visitor = {
|
|
33
|
+
|
|
34
|
+
root: function(element) {
|
|
35
|
+
return importer.root(element);
|
|
36
|
+
},
|
|
37
|
+
|
|
38
|
+
element: function(element, parentShape) {
|
|
39
|
+
return importer.add(element, parentShape);
|
|
40
|
+
},
|
|
41
|
+
|
|
42
|
+
error: function(message, context) {
|
|
43
|
+
warnings.push({ message: message, context: context });
|
|
44
|
+
},
|
|
45
|
+
|
|
46
|
+
addItem: function(item) {
|
|
47
|
+
itemRegistry.add(item);
|
|
48
|
+
}
|
|
49
|
+
};
|
|
50
|
+
|
|
51
|
+
var walker = new CmmnTreeWalker(visitor);
|
|
52
|
+
|
|
53
|
+
// import
|
|
54
|
+
walker.handleDefinitions(definitions);
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
eventBus.fire('import.render.start', { definitions: definitions });
|
|
58
|
+
|
|
59
|
+
try {
|
|
60
|
+
render(definitions);
|
|
61
|
+
} catch (e) {
|
|
62
|
+
error = e;
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
eventBus.fire('import.render.complete', {
|
|
66
|
+
error: error,
|
|
67
|
+
warnings: warnings
|
|
68
|
+
});
|
|
69
|
+
|
|
70
|
+
done(error, warnings);
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
module.exports.importCmmnDiagram = importCmmnDiagram;
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var is = require('./ModelUtil').is,
|
|
4
|
+
getBusinessObject = require('./ModelUtil').getBusinessObject,
|
|
5
|
+
isCasePlanModel = require('./ModelUtil').isCasePlanModel;
|
|
6
|
+
|
|
7
|
+
module.exports.isCollapsed = function(element) {
|
|
8
|
+
|
|
9
|
+
if (!isCasePlanModel(element)) {
|
|
10
|
+
|
|
11
|
+
element = getBusinessObject(element);
|
|
12
|
+
|
|
13
|
+
var definition = element.definitionRef;
|
|
14
|
+
if (is(definition, 'cmmn:PlanFragment')) {
|
|
15
|
+
return !!(element && element.di && element.di.isCollapsed);
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
return false;
|
|
20
|
+
};
|
|
21
|
+
|
|
22
|
+
module.exports.isPlanningTableCollapsed = function(element) {
|
|
23
|
+
|
|
24
|
+
element = getBusinessObject(element);
|
|
25
|
+
|
|
26
|
+
if (is(element, 'cmmn:Stage') ||
|
|
27
|
+
(element.definitionRef && (is(element.definitionRef, 'cmmn:Stage') ||
|
|
28
|
+
is(element.definitionRef, 'cmmn:HumanTask')))) {
|
|
29
|
+
return element.di && element.di.isPlanningTableCollapsed;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
return false;
|
|
33
|
+
};
|
|
34
|
+
|
|
35
|
+
module.exports.isStandardEventVisible = function(element) {
|
|
36
|
+
element = getBusinessObject(element);
|
|
37
|
+
var cmmnElement = element.cmmnElementRef;
|
|
38
|
+
return !!(is(cmmnElement, 'cmmn:OnPart') && element.isStandardEventVisible);
|
|
39
|
+
};
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var is = require('../util/ModelUtil').is;
|
|
4
|
+
var assign = require('min-dash').assign;
|
|
5
|
+
|
|
6
|
+
var DEFAULT_LABEL_SIZE = module.exports.DEFAULT_LABEL_SIZE = {
|
|
7
|
+
width: 90,
|
|
8
|
+
height: 20
|
|
9
|
+
};
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* Returns true if the given semantic has an external label
|
|
14
|
+
*
|
|
15
|
+
* @param {CmmnElement} semantic
|
|
16
|
+
* @return {Boolean} true if has label
|
|
17
|
+
*/
|
|
18
|
+
module.exports.hasExternalLabel = function(semantic) {
|
|
19
|
+
|
|
20
|
+
if (is(semantic, 'cmmn:PlanItem') || is(semantic, 'cmmn:DiscretionaryItem')) {
|
|
21
|
+
semantic = semantic.definitionRef;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
if (is(semantic, 'cmmndi:CMMNEdge') && semantic.cmmnElementRef) {
|
|
25
|
+
|
|
26
|
+
if (is(semantic.cmmnElementRef, 'cmmn:OnPart')) {
|
|
27
|
+
semantic = semantic.cmmnElementRef;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
return is(semantic, 'cmmn:EventListener') ||
|
|
33
|
+
is(semantic, 'cmmn:OnPart') ||
|
|
34
|
+
is(semantic, 'cmmn:CaseFileItem');
|
|
35
|
+
};
|
|
36
|
+
|
|
37
|
+
/**
|
|
38
|
+
* Get the middle of a number of waypoints
|
|
39
|
+
*
|
|
40
|
+
* @param {Array<Point>} waypoints
|
|
41
|
+
* @return {Point} the mid point
|
|
42
|
+
*/
|
|
43
|
+
var getWaypointsMid = module.exports.getWaypointsMid = function(waypoints) {
|
|
44
|
+
|
|
45
|
+
var mid = waypoints.length / 2 - 1;
|
|
46
|
+
|
|
47
|
+
var first = waypoints[Math.floor(mid)];
|
|
48
|
+
var second = waypoints[Math.ceil(mid + 0.01)];
|
|
49
|
+
|
|
50
|
+
return {
|
|
51
|
+
x: first.x + (second.x - first.x) / 2,
|
|
52
|
+
y: first.y + (second.y - first.y) / 2
|
|
53
|
+
};
|
|
54
|
+
};
|
|
55
|
+
|
|
56
|
+
|
|
57
|
+
var getExternalLabelMid = module.exports.getExternalLabelMid = function(element) {
|
|
58
|
+
|
|
59
|
+
var bo = element.businessObject,
|
|
60
|
+
di = bo.di;
|
|
61
|
+
|
|
62
|
+
if (!di && is(bo, 'cmmndi:CMMNEdge') && bo.cmmnElementRef) {
|
|
63
|
+
di = bo;
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
if (bo && di && di.waypoint) {
|
|
67
|
+
return getWaypointsMid(di.waypoint);
|
|
68
|
+
} else {
|
|
69
|
+
return {
|
|
70
|
+
x: element.x + element.width / 2,
|
|
71
|
+
y: element.y + element.height + DEFAULT_LABEL_SIZE.height / 2
|
|
72
|
+
};
|
|
73
|
+
}
|
|
74
|
+
};
|
|
75
|
+
|
|
76
|
+
/**
|
|
77
|
+
* Returns the bounds of an elements label, parsed from the elements DI or
|
|
78
|
+
* generated from its bounds.
|
|
79
|
+
*
|
|
80
|
+
* @param {CmmnElement} semantic
|
|
81
|
+
* @param {djs.model.Base} element
|
|
82
|
+
*/
|
|
83
|
+
module.exports.getExternalLabelBounds = function(semantic, element) {
|
|
84
|
+
|
|
85
|
+
var mid,
|
|
86
|
+
size,
|
|
87
|
+
bounds,
|
|
88
|
+
di = semantic.di || semantic,
|
|
89
|
+
label = di.label;
|
|
90
|
+
|
|
91
|
+
if (label && label.bounds) {
|
|
92
|
+
bounds = label.bounds;
|
|
93
|
+
|
|
94
|
+
size = {
|
|
95
|
+
width: Math.max(DEFAULT_LABEL_SIZE.width, bounds.width),
|
|
96
|
+
height: bounds.height
|
|
97
|
+
};
|
|
98
|
+
|
|
99
|
+
mid = {
|
|
100
|
+
x: bounds.x + bounds.width / 2,
|
|
101
|
+
y: bounds.y + bounds.height / 2
|
|
102
|
+
};
|
|
103
|
+
} else {
|
|
104
|
+
|
|
105
|
+
mid = getExternalLabelMid(element);
|
|
106
|
+
|
|
107
|
+
size = DEFAULT_LABEL_SIZE;
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
return assign({
|
|
111
|
+
x: mid.x - size.width / 2,
|
|
112
|
+
y: mid.y - size.height / 2
|
|
113
|
+
}, size);
|
|
114
|
+
};
|
|
115
|
+
|
|
116
|
+
var hasLabelBounds = module.exports.hasLabelBounds = function(semantic) {
|
|
117
|
+
return semantic && semantic.di && semantic.di.label && semantic.di.label.bounds;
|
|
118
|
+
};
|
|
119
|
+
|
|
120
|
+
module.exports.getLabelBounds = function(semantic) {
|
|
121
|
+
if (hasLabelBounds(semantic)) {
|
|
122
|
+
return semantic.di.label.bounds;
|
|
123
|
+
}
|
|
124
|
+
};
|
|
@@ -0,0 +1,257 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
function isInstanceOf(bo, type) {
|
|
4
|
+
return !!(bo && ((typeof bo.$instanceOf === 'function') && bo.$instanceOf(type)));
|
|
5
|
+
}
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* Is an element of the given CMMN type?
|
|
9
|
+
*
|
|
10
|
+
* @param {djs.model.Base|ModdleElement} element
|
|
11
|
+
* @param {String} type
|
|
12
|
+
*
|
|
13
|
+
* @return {Boolean}
|
|
14
|
+
*/
|
|
15
|
+
function is(element, type) {
|
|
16
|
+
return isInstanceOf(getBusinessObject(element), type);
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
module.exports.is = is;
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* Return the business object for a given element.
|
|
24
|
+
*
|
|
25
|
+
* @param {djs.model.Base|ModdleElement} element
|
|
26
|
+
*
|
|
27
|
+
* @return {ModdleElement}
|
|
28
|
+
*/
|
|
29
|
+
function getBusinessObject(element) {
|
|
30
|
+
return element && element.businessObject ? element.businessObject : element;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
module.exports.getBusinessObject = getBusinessObject;
|
|
34
|
+
|
|
35
|
+
function isCasePlanModel(element) {
|
|
36
|
+
element = getBusinessObject(element);
|
|
37
|
+
return is(element, 'cmmn:Stage') && element.$parent && is(element.$parent, 'cmmn:Case');
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
module.exports.isCasePlanModel = isCasePlanModel;
|
|
41
|
+
|
|
42
|
+
function getDefinition(element) {
|
|
43
|
+
var bo = getBusinessObject(element);
|
|
44
|
+
|
|
45
|
+
if (is(element, 'cmmn:PlanItemDefinition') || is(element, 'cmmn:CaseFileItemDefinition')) {
|
|
46
|
+
return bo;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
return bo && bo.definitionRef;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
module.exports.getDefinition = getDefinition;
|
|
53
|
+
|
|
54
|
+
function getDefaultControl(element) {
|
|
55
|
+
var definition = getDefinition(element);
|
|
56
|
+
return definition && definition.defaultControl;
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
module.exports.getDefaultControl = getDefaultControl;
|
|
60
|
+
|
|
61
|
+
function getItemControl(element) {
|
|
62
|
+
element = getBusinessObject(element);
|
|
63
|
+
return element && element.itemControl;
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
module.exports.getItemControl = getItemControl;
|
|
67
|
+
|
|
68
|
+
|
|
69
|
+
function getRule(element, rule) {
|
|
70
|
+
var itemControl = getItemControl(element),
|
|
71
|
+
defaultControl = getDefaultControl(element);
|
|
72
|
+
|
|
73
|
+
if (itemControl && itemControl[rule]) {
|
|
74
|
+
return itemControl[rule];
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
return defaultControl && defaultControl[rule];
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
function isRequired(element) {
|
|
81
|
+
return !!getRule(element, 'requiredRule');
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
module.exports.isRequired = isRequired;
|
|
85
|
+
|
|
86
|
+
function isRepeatable(element) {
|
|
87
|
+
return !!getRule(element, 'repetitionRule');
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
module.exports.isRepeatable = isRepeatable;
|
|
91
|
+
|
|
92
|
+
function isManualActivation(element) {
|
|
93
|
+
return !!getRule(element, 'manualActivationRule');
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
module.exports.isManualActivation = isManualActivation;
|
|
97
|
+
|
|
98
|
+
function isAutoComplete(element) {
|
|
99
|
+
element = getBusinessObject(element);
|
|
100
|
+
var definition = getDefinition(element);
|
|
101
|
+
return element.autoComplete || (definition && definition.autoComplete);
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
module.exports.isAutoComplete = isAutoComplete;
|
|
105
|
+
|
|
106
|
+
function hasPlanningTable(element) {
|
|
107
|
+
element = getBusinessObject(element);
|
|
108
|
+
return element.planningTable || (getDefinition(element) && getDefinition(element).planningTable);
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
module.exports.hasPlanningTable = hasPlanningTable;
|
|
112
|
+
|
|
113
|
+
function getName(element) {
|
|
114
|
+
element = getBusinessObject(element);
|
|
115
|
+
|
|
116
|
+
if (is(element, 'cmmndi:CMMNEdge') && element.cmmnElementRef) {
|
|
117
|
+
element = element.cmmnElementRef;
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
var name = element.name;
|
|
121
|
+
if (!name) {
|
|
122
|
+
|
|
123
|
+
if (element.definitionRef) {
|
|
124
|
+
name = element.definitionRef.name;
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
return name;
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
module.exports.getName = getName;
|
|
132
|
+
|
|
133
|
+
|
|
134
|
+
/**
|
|
135
|
+
* Returns the referenced sentry, if present.
|
|
136
|
+
*
|
|
137
|
+
* @param {djs.model.Base} criterion
|
|
138
|
+
*
|
|
139
|
+
* @result {ModdleElement} referenced sentry
|
|
140
|
+
*/
|
|
141
|
+
function getSentry(element) {
|
|
142
|
+
var bo = getBusinessObject(element);
|
|
143
|
+
|
|
144
|
+
if (is(bo, 'cmmn:Sentry')) {
|
|
145
|
+
return bo;
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
return bo && bo.sentryRef;
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
module.exports.getSentry = getSentry;
|
|
152
|
+
|
|
153
|
+
|
|
154
|
+
function getStandardEvent(element) {
|
|
155
|
+
element = getBusinessObject(element);
|
|
156
|
+
return element.cmmnElementRef && element.cmmnElementRef.standardEvent;
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
module.exports.getStandardEvent = getStandardEvent;
|
|
160
|
+
|
|
161
|
+
function getStandardEvents(element) {
|
|
162
|
+
|
|
163
|
+
if (is(element, 'cmmndi:CMMNEdge')) {
|
|
164
|
+
element = getBusinessObject(element).cmmnElementRef;
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
if (is(element, 'cmmn:OnPart')) {
|
|
168
|
+
|
|
169
|
+
if (is(element.exitCriterionRef, 'cmmn:ExitCriterion')) {
|
|
170
|
+
return [ 'exit' ];
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
return getTransitions(element.sourceRef);
|
|
174
|
+
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
return [];
|
|
178
|
+
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
module.exports.getStandardEvents = getStandardEvents;
|
|
182
|
+
|
|
183
|
+
|
|
184
|
+
function getTransitions(element) {
|
|
185
|
+
|
|
186
|
+
element = getBusinessObject(element);
|
|
187
|
+
|
|
188
|
+
if (is(element, 'cmmn:CaseFileItem')) {
|
|
189
|
+
|
|
190
|
+
return [
|
|
191
|
+
'addChild',
|
|
192
|
+
'addReference',
|
|
193
|
+
'create',
|
|
194
|
+
'delete',
|
|
195
|
+
'removeChild',
|
|
196
|
+
'removeReference',
|
|
197
|
+
'replace',
|
|
198
|
+
'update'
|
|
199
|
+
];
|
|
200
|
+
|
|
201
|
+
}
|
|
202
|
+
|
|
203
|
+
if (is(element, 'cmmn:PlanItem') || is(element, 'cmmn:DiscretionaryItem')) {
|
|
204
|
+
|
|
205
|
+
var definition = getDefinition(element);
|
|
206
|
+
|
|
207
|
+
if (is(definition, 'cmmn:EventListener') || is(definition, 'cmmn:Milestone')) {
|
|
208
|
+
|
|
209
|
+
return [
|
|
210
|
+
'create',
|
|
211
|
+
'occur',
|
|
212
|
+
'resume',
|
|
213
|
+
'suspend',
|
|
214
|
+
'terminate'
|
|
215
|
+
];
|
|
216
|
+
|
|
217
|
+
}
|
|
218
|
+
|
|
219
|
+
return [
|
|
220
|
+
'complete',
|
|
221
|
+
'create',
|
|
222
|
+
'disable',
|
|
223
|
+
'enable',
|
|
224
|
+
'exit',
|
|
225
|
+
'fault',
|
|
226
|
+
'manualStart',
|
|
227
|
+
'parentResume',
|
|
228
|
+
'parentSuspend',
|
|
229
|
+
'reactivate',
|
|
230
|
+
'reenable',
|
|
231
|
+
'resume',
|
|
232
|
+
'start',
|
|
233
|
+
'suspend',
|
|
234
|
+
'terminate'
|
|
235
|
+
];
|
|
236
|
+
|
|
237
|
+
}
|
|
238
|
+
|
|
239
|
+
if (isCasePlanModel(element)) {
|
|
240
|
+
|
|
241
|
+
return [
|
|
242
|
+
'close',
|
|
243
|
+
'complete',
|
|
244
|
+
'create',
|
|
245
|
+
'fault',
|
|
246
|
+
'reactivate',
|
|
247
|
+
'suspend',
|
|
248
|
+
'terminate'
|
|
249
|
+
];
|
|
250
|
+
|
|
251
|
+
}
|
|
252
|
+
|
|
253
|
+
return [];
|
|
254
|
+
|
|
255
|
+
}
|
|
256
|
+
|
|
257
|
+
module.exports.getTransitions = getTransitions;
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* This file must not be changed or exchanged.
|
|
3
|
+
*
|
|
4
|
+
* @see http://bpmn.io/license for more information.
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
'use strict';
|
|
8
|
+
|
|
9
|
+
var domify = require('min-dom').domify;
|
|
10
|
+
|
|
11
|
+
var domDelegate = require('min-dom').delegate;
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
// inlined ../../resources/logo.svg
|
|
15
|
+
var BPMNIO_LOGO_SVG = '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 14.02 5.57" width="53" height="21" style="vertical-align:middle"><path fill="currentColor" d="M1.88.92v.14c0 .41-.13.68-.4.8.33.14.46.44.46.86v.33c0 .61-.33.95-.95.95H0V0h.95c.65 0 .93.3.93.92zM.63.57v1.06h.24c.24 0 .38-.1.38-.43V.98c0-.28-.1-.4-.32-.4zm0 1.63v1.22h.36c.2 0 .32-.1.32-.39v-.35c0-.37-.12-.48-.4-.48H.63zM4.18.99v.52c0 .64-.31.98-.94.98h-.3V4h-.62V0h.92c.63 0 .94.35.94.99zM2.94.57v1.35h.3c.2 0 .3-.09.3-.37v-.6c0-.29-.1-.38-.3-.38h-.3zm2.89 2.27L6.25 0h.88v4h-.6V1.12L6.1 3.99h-.6l-.46-2.82v2.82h-.55V0h.87zM8.14 1.1V4h-.56V0h.79L9 2.4V0h.56v4h-.64zm2.49 2.29v.6h-.6v-.6zM12.12 1c0-.63.33-1 .95-1 .61 0 .95.37.95 1v2.04c0 .64-.34 1-.95 1-.62 0-.95-.37-.95-1zm.62 2.08c0 .28.13.39.33.39s.32-.1.32-.4V.98c0-.29-.12-.4-.32-.4s-.33.11-.33.4z"/><path fill="currentColor" d="M0 4.53h14.02v1.04H0zM11.08 0h.63v.62h-.63zm.63 4V1h-.63v2.98z"/></svg>';
|
|
16
|
+
|
|
17
|
+
var BPMNIO_IMG = BPMNIO_LOGO_SVG;
|
|
18
|
+
|
|
19
|
+
function css(attrs) {
|
|
20
|
+
return attrs.join(';');
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
var LINK_STYLES = css([
|
|
24
|
+
'color: #404040'
|
|
25
|
+
]);
|
|
26
|
+
|
|
27
|
+
var LIGHTBOX_STYLES = css([
|
|
28
|
+
'z-index: 1001',
|
|
29
|
+
'position: fixed',
|
|
30
|
+
'top: 0',
|
|
31
|
+
'left: 0',
|
|
32
|
+
'right: 0',
|
|
33
|
+
'bottom: 0'
|
|
34
|
+
]);
|
|
35
|
+
|
|
36
|
+
var BACKDROP_STYLES = css([
|
|
37
|
+
'width: 100%',
|
|
38
|
+
'height: 100%',
|
|
39
|
+
'background: rgba(40,40,40,0.2)'
|
|
40
|
+
]);
|
|
41
|
+
|
|
42
|
+
var NOTICE_STYLES = css([
|
|
43
|
+
'position: absolute',
|
|
44
|
+
'left: 50%',
|
|
45
|
+
'top: 40%',
|
|
46
|
+
'transform: translate(-50%)',
|
|
47
|
+
'width: 260px',
|
|
48
|
+
'padding: 10px',
|
|
49
|
+
'background: white',
|
|
50
|
+
'box-shadow: 0 1px 4px rgba(0,0,0,0.3)',
|
|
51
|
+
'font-family: Helvetica, Arial, sans-serif',
|
|
52
|
+
'font-size: 14px',
|
|
53
|
+
'display: flex',
|
|
54
|
+
'line-height: 1.3'
|
|
55
|
+
]);
|
|
56
|
+
|
|
57
|
+
var LIGHTBOX_MARKUP =
|
|
58
|
+
'<div class="bjs-powered-by-lightbox" style="' + LIGHTBOX_STYLES + '">' +
|
|
59
|
+
'<div class="backdrop" style="' + BACKDROP_STYLES + '"></div>' +
|
|
60
|
+
'<div class="notice" style="' + NOTICE_STYLES + '">' +
|
|
61
|
+
'<a href="https://bpmn.io" target="_blank" rel="noopener" style="margin: 15px 20px 15px 10px; align-self: center;' + LINK_STYLES + '">' +
|
|
62
|
+
BPMNIO_IMG +
|
|
63
|
+
'</a>' +
|
|
64
|
+
'<span>' +
|
|
65
|
+
'Web-based tooling for BPMN, DMN and CMMN diagrams ' +
|
|
66
|
+
'powered by <a href="https://bpmn.io" target="_blank" rel="noopener">bpmn.io</a>.' +
|
|
67
|
+
'</span>' +
|
|
68
|
+
'</div>' +
|
|
69
|
+
'</div>';
|
|
70
|
+
|
|
71
|
+
|
|
72
|
+
var lightbox;
|
|
73
|
+
|
|
74
|
+
function open() {
|
|
75
|
+
|
|
76
|
+
if (!lightbox) {
|
|
77
|
+
lightbox = domify(LIGHTBOX_MARKUP);
|
|
78
|
+
|
|
79
|
+
domDelegate.bind(lightbox, '.backdrop', 'click', function(event) {
|
|
80
|
+
document.body.removeChild(lightbox);
|
|
81
|
+
});
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
document.body.appendChild(lightbox);
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
module.exports.open = open;
|
|
88
|
+
|
|
89
|
+
module.exports.BPMNIO_IMG = BPMNIO_IMG;
|
|
90
|
+
|
|
91
|
+
module.exports.LINK_STYLES = LINK_STYLES;
|
package/package.json
CHANGED
|
@@ -1,6 +1,90 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@jylups/cmmn-js",
|
|
3
|
-
"version": "0.
|
|
4
|
-
"
|
|
5
|
-
"
|
|
6
|
-
|
|
3
|
+
"version": "0.21.0",
|
|
4
|
+
"description": "A cmmn 1.1 toolkit",
|
|
5
|
+
"scripts": {
|
|
6
|
+
"all": "run-s lint test distro test:distro",
|
|
7
|
+
"lint": "eslint .",
|
|
8
|
+
"dev": "npm test -- --auto-watch --no-single-run",
|
|
9
|
+
"test": "karma start test/config/karma.unit.js",
|
|
10
|
+
"distro": "node tasks/build-distro.js",
|
|
11
|
+
"test:distro": "node tasks/test-distro.js",
|
|
12
|
+
"prepublishOnly": "run-s distro test:distro"
|
|
13
|
+
},
|
|
14
|
+
"repository": {
|
|
15
|
+
"type": "git",
|
|
16
|
+
"url": "git+https://github.com/jylups/cmmn-js.git"
|
|
17
|
+
},
|
|
18
|
+
"bugs": {
|
|
19
|
+
"url": "https://github.com/jylups/cmmn-js-env/issues"
|
|
20
|
+
},
|
|
21
|
+
"keywords": [
|
|
22
|
+
"cmmn",
|
|
23
|
+
"cmmn-js",
|
|
24
|
+
"toolkit"
|
|
25
|
+
],
|
|
26
|
+
"author": {
|
|
27
|
+
"name": "Roman Smirnov",
|
|
28
|
+
"url": "https://github.com/romansmirnov"
|
|
29
|
+
},
|
|
30
|
+
"contributors": [
|
|
31
|
+
{
|
|
32
|
+
"name": "bpmn.io contributors",
|
|
33
|
+
"url": "https://github.com/bpmn-io"
|
|
34
|
+
}
|
|
35
|
+
],
|
|
36
|
+
"license": "SEE LICENSE IN LICENSE",
|
|
37
|
+
"devDependencies": {
|
|
38
|
+
"babel-core": "^6.26.0",
|
|
39
|
+
"babel-preset-env": "^1.6.1",
|
|
40
|
+
"babelify": "~8.0.0",
|
|
41
|
+
"browser-pack-flat": "~3.0.8",
|
|
42
|
+
"browserify": "~14.5.0",
|
|
43
|
+
"browserify-derequire": "~0.9.1",
|
|
44
|
+
"bundle-collapser": "~1.3.0",
|
|
45
|
+
"chai": "^4.1.2",
|
|
46
|
+
"common-shakeify": "~0.4.5",
|
|
47
|
+
"cpx": "^1.5.0",
|
|
48
|
+
"del": "^3.0.0",
|
|
49
|
+
"envify": "~4.1.0",
|
|
50
|
+
"eslint": "^4.17.0",
|
|
51
|
+
"eslint-plugin-bpmn-io": "^0.5.2",
|
|
52
|
+
"execa": "^0.9.0",
|
|
53
|
+
"jsondiffpatch": "^0.1.26",
|
|
54
|
+
"karma": "^4.1.0",
|
|
55
|
+
"karma-browserify": "^6.0.0",
|
|
56
|
+
"karma-chrome-launcher": "^2.2.0",
|
|
57
|
+
"karma-firefox-launcher": "^1.0.1",
|
|
58
|
+
"karma-mocha": "^1.3.0",
|
|
59
|
+
"karma-safari-launcher": "^1.0.0",
|
|
60
|
+
"karma-sinon-chai": "^1.3.3",
|
|
61
|
+
"karma-spec-reporter": "0.0.31",
|
|
62
|
+
"mkdirp": "^0.5.1",
|
|
63
|
+
"mocha": "^4.1.0",
|
|
64
|
+
"mocha-test-container-support": "~0.2.0",
|
|
65
|
+
"npm-run-all": "^4.1.2",
|
|
66
|
+
"sinon": "^4.2.2",
|
|
67
|
+
"sinon-chai": "^2.14.0",
|
|
68
|
+
"source-map-concat": "^1.0.0",
|
|
69
|
+
"stringify": "^5.1.0",
|
|
70
|
+
"uglify-es": "^3.3.10",
|
|
71
|
+
"unassertify": "~2.1.0",
|
|
72
|
+
"watchify": "^3.11.1"
|
|
73
|
+
},
|
|
74
|
+
"dependencies": {
|
|
75
|
+
"@jylups/cmmn-moddle": "^5.1.0",
|
|
76
|
+
"cmmn-font": "^0.5.0",
|
|
77
|
+
"css.escape": "^1.5.1",
|
|
78
|
+
"diagram-js": "^4.0.1",
|
|
79
|
+
"diagram-js-direct-editing": "^1.5.0",
|
|
80
|
+
"ids": "^0.2.0",
|
|
81
|
+
"inherits": "^2.0.1",
|
|
82
|
+
"min-dash": "^3.5.0",
|
|
83
|
+
"min-dom": "^3.0.0",
|
|
84
|
+
"object-refs": "^0.3.0",
|
|
85
|
+
"tiny-svg": "^2.2.1"
|
|
86
|
+
},
|
|
87
|
+
"publishConfig": {
|
|
88
|
+
"access": "public"
|
|
89
|
+
}
|
|
90
|
+
}
|