camunda-bpmn-js 0.13.0-drilldown.0 → 0.13.2
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/CHANGELOG.md +92 -0
- package/dist/assets/base-navigated-viewer.css +2 -0
- package/dist/assets/base-viewer.css +2 -0
- package/dist/assets/bpmn-js.css +7 -4
- package/dist/assets/camunda-cloud-modeler.css +2 -1
- package/dist/assets/camunda-cloud-navigated-viewer.css +1 -0
- package/dist/assets/camunda-cloud-viewer.css +1 -0
- package/dist/assets/camunda-platform-navigated-viewer.css +1 -0
- package/dist/assets/camunda-platform-viewer.css +1 -0
- package/dist/assets/element-templates.css +4 -0
- package/dist/assets/properties-panel.css +901 -877
- package/dist/base-modeler.development.js +1949 -3883
- package/dist/base-modeler.production.min.js +4 -4
- package/dist/base-navigated-viewer.development.js +22218 -0
- package/dist/base-navigated-viewer.production.min.js +2 -0
- package/dist/base-viewer.development.js +21227 -0
- package/dist/base-viewer.production.min.js +2 -0
- package/dist/camunda-cloud-modeler.development.js +8579 -5480
- package/dist/camunda-cloud-modeler.production.min.js +4 -4
- package/dist/camunda-cloud-navigated-viewer.development.js +23041 -0
- package/dist/camunda-cloud-navigated-viewer.production.min.js +2 -0
- package/dist/camunda-cloud-viewer.development.js +22050 -0
- package/dist/camunda-cloud-viewer.production.min.js +2 -0
- package/dist/camunda-platform-modeler.development.js +6777 -8719
- package/dist/camunda-platform-modeler.production.min.js +4 -4
- package/dist/camunda-platform-navigated-viewer.development.js +23413 -0
- package/dist/camunda-platform-navigated-viewer.production.min.js +2 -0
- package/dist/camunda-platform-viewer.development.js +22422 -0
- package/dist/camunda-platform-viewer.production.min.js +2 -0
- package/lib/base/NavigatedViewer.js +3 -0
- package/lib/base/Viewer.js +3 -0
- package/lib/camunda-cloud/ElementTemplatesValidator.js +1 -0
- package/lib/camunda-cloud/Modeler.js +8 -7
- package/lib/camunda-cloud/NavigatedViewer.js +34 -0
- package/lib/camunda-cloud/Viewer.js +34 -0
- package/lib/camunda-cloud/util/commonModules.js +14 -0
- package/lib/camunda-platform/Modeler.js +5 -5
- package/lib/camunda-platform/NavigatedViewer.js +25 -0
- package/lib/camunda-platform/Viewer.js +24 -0
- package/lib/camunda-platform/util/commonModules.js +7 -0
- package/lib/util/ExtensionElementsUtil.js +59 -0
- package/package.json +33 -15
- package/styles/base-navigated-viewer.css +2 -0
- package/styles/base-viewer.css +2 -0
- package/styles/camunda-cloud-modeler.css +2 -1
- package/styles/camunda-cloud-navigated-viewer.css +1 -0
- package/styles/camunda-cloud-viewer.css +1 -0
- package/styles/camunda-platform-navigated-viewer.css +1 -0
- package/styles/camunda-platform-viewer.css +1 -0
- package/util/index.js +39 -0
- package/dist/assets/bpmn-js-properties-panel.css +0 -778
- package/lib/camunda-cloud/features/modeling/behavior/CleanUpAssignmentDefinitionBehavior.js +0 -78
- package/lib/camunda-cloud/features/modeling/behavior/CleanUpBusinessRuleTaskBehavior.js +0 -112
- package/lib/camunda-cloud/features/modeling/behavior/CreateZeebeBoundaryEventBehavior.js +0 -76
- package/lib/camunda-cloud/features/modeling/behavior/CreateZeebeCallActivityBehavior.js +0 -74
- package/lib/camunda-cloud/features/modeling/behavior/FormDefinitionBehavior.js +0 -138
- package/lib/camunda-cloud/features/modeling/behavior/UpdatePropagateAllChildVariablesBehavior.js +0 -109
- package/lib/camunda-cloud/features/modeling/behavior/index.js +0 -24
- package/lib/camunda-cloud/features/modeling/index.js +0 -7
- package/lib/camunda-cloud/helper/CalledElementHelper.js +0 -72
- package/lib/camunda-cloud/helper/ElementHelper.js +0 -18
- package/lib/camunda-cloud/helper/ExtensionElementsHelper.js +0 -17
- package/lib/camunda-cloud/helper/FormsHelper.js +0 -84
- package/lib/camunda-cloud/helper/InputOutputHelper.js +0 -138
- package/lib/camunda-cloud/helper/Utils.js +0 -10
- package/lib/camunda-cloud/helper/ZeebeServiceTaskHelper.js +0 -41
- package/lib/camunda-platform/features/modeling/behavior/DeleteErrorEventDefinitionBehavior.js +0 -67
- package/lib/camunda-platform/features/modeling/behavior/DeleteRetryTimeCycleBehavior.js +0 -84
- package/lib/camunda-platform/features/modeling/behavior/UpdateCamundaExclusiveBehavior.js +0 -65
- package/lib/camunda-platform/features/modeling/behavior/UpdateInputOutputBehavior.js +0 -54
- package/lib/camunda-platform/features/modeling/behavior/UpdateResultVariableBehavior.js +0 -51
- package/lib/camunda-platform/features/modeling/behavior/UserTaskFormsBehavior.js +0 -70
- package/lib/camunda-platform/features/modeling/behavior/UserTaskGeneratedFormsBehavior.js +0 -117
- package/lib/camunda-platform/features/modeling/behavior/index.js +0 -26
- package/lib/camunda-platform/features/modeling/index.js +0 -7
- package/lib/camunda-platform/helper/InputOutputHelper.js +0 -29
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import inherits from 'inherits';
|
|
2
|
+
|
|
3
|
+
import BaseViewer from '../base/NavigatedViewer';
|
|
4
|
+
|
|
5
|
+
import { commonModdleExtensions, commonModules } from './util/commonModules';
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
*
|
|
10
|
+
* @param {Object} options
|
|
11
|
+
*/
|
|
12
|
+
export default function NavigatedViewer(options = {}) {
|
|
13
|
+
|
|
14
|
+
options = {
|
|
15
|
+
...options,
|
|
16
|
+
moddleExtensions: {
|
|
17
|
+
...commonModdleExtensions,
|
|
18
|
+
...options.moddleExtensions
|
|
19
|
+
}
|
|
20
|
+
};
|
|
21
|
+
|
|
22
|
+
BaseViewer.call(this, options);
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
inherits(NavigatedViewer, BaseViewer);
|
|
26
|
+
|
|
27
|
+
NavigatedViewer.prototype._camundaCloudModules = [
|
|
28
|
+
...commonModules
|
|
29
|
+
];
|
|
30
|
+
|
|
31
|
+
NavigatedViewer.prototype._modules = [].concat(
|
|
32
|
+
BaseViewer.prototype._modules,
|
|
33
|
+
NavigatedViewer.prototype._camundaCloudModules
|
|
34
|
+
);
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import inherits from 'inherits';
|
|
2
|
+
|
|
3
|
+
import BaseViewer from '../base/Viewer';
|
|
4
|
+
|
|
5
|
+
import { commonModdleExtensions, commonModules } from './util/commonModules';
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
*
|
|
10
|
+
* @param {Object} options
|
|
11
|
+
*/
|
|
12
|
+
export default function Viewer(options = {}) {
|
|
13
|
+
|
|
14
|
+
options = {
|
|
15
|
+
...options,
|
|
16
|
+
moddleExtensions: {
|
|
17
|
+
...commonModdleExtensions,
|
|
18
|
+
...options.moddleExtensions
|
|
19
|
+
}
|
|
20
|
+
};
|
|
21
|
+
|
|
22
|
+
BaseViewer.call(this, options);
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
inherits(Viewer, BaseViewer);
|
|
26
|
+
|
|
27
|
+
Viewer.prototype._camundaCloudModules = [
|
|
28
|
+
...commonModules
|
|
29
|
+
];
|
|
30
|
+
|
|
31
|
+
Viewer.prototype._modules = [].concat(
|
|
32
|
+
BaseViewer.prototype._modules,
|
|
33
|
+
Viewer.prototype._camundaCloudModules
|
|
34
|
+
);
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import iconRendererModule from '@bpmn-io/element-templates-icons-renderer';
|
|
2
|
+
|
|
3
|
+
import drilldownModule from '../features/drilldown';
|
|
4
|
+
|
|
5
|
+
import zeebeModdle from 'zeebe-bpmn-moddle/resources/zeebe.json';
|
|
6
|
+
|
|
7
|
+
export const commonModules = [
|
|
8
|
+
drilldownModule,
|
|
9
|
+
iconRendererModule
|
|
10
|
+
];
|
|
11
|
+
|
|
12
|
+
export const commonModdleExtensions = {
|
|
13
|
+
zeebe: zeebeModdle
|
|
14
|
+
};
|
|
@@ -2,9 +2,7 @@ import inherits from 'inherits';
|
|
|
2
2
|
|
|
3
3
|
import BaseModeler from '../base/Modeler';
|
|
4
4
|
|
|
5
|
-
import
|
|
6
|
-
|
|
7
|
-
import camundaModdle from 'camunda-bpmn-moddle/resources/camunda.json';
|
|
5
|
+
import behaviorsModule from 'camunda-bpmn-js-behaviors/lib/camunda-platform';
|
|
8
6
|
|
|
9
7
|
import camundaModdleExtension from 'camunda-bpmn-moddle/lib';
|
|
10
8
|
|
|
@@ -13,6 +11,8 @@ import {
|
|
|
13
11
|
ElementTemplatesPropertiesProviderModule
|
|
14
12
|
} from 'bpmn-js-properties-panel';
|
|
15
13
|
|
|
14
|
+
import { commonModdleExtensions } from './util/commonModules';
|
|
15
|
+
|
|
16
16
|
|
|
17
17
|
/**
|
|
18
18
|
*
|
|
@@ -23,7 +23,7 @@ export default function Modeler(options = {}) {
|
|
|
23
23
|
options = {
|
|
24
24
|
...options,
|
|
25
25
|
moddleExtensions: {
|
|
26
|
-
|
|
26
|
+
...commonModdleExtensions,
|
|
27
27
|
...options.moddleExtensions
|
|
28
28
|
}
|
|
29
29
|
};
|
|
@@ -35,7 +35,7 @@ inherits(Modeler, BaseModeler);
|
|
|
35
35
|
|
|
36
36
|
Modeler.prototype._camundaPlatformModules = [
|
|
37
37
|
camundaModdleExtension,
|
|
38
|
-
|
|
38
|
+
behaviorsModule,
|
|
39
39
|
CamundaPlatformPropertiesProviderModule,
|
|
40
40
|
ElementTemplatesPropertiesProviderModule
|
|
41
41
|
];
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import inherits from 'inherits';
|
|
2
|
+
|
|
3
|
+
import BaseViewer from '../base/NavigatedViewer';
|
|
4
|
+
|
|
5
|
+
import { commonModdleExtensions } from './util/commonModules';
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
*
|
|
10
|
+
* @param {Object} options
|
|
11
|
+
*/
|
|
12
|
+
export default function NavigatedViewer(options = {}) {
|
|
13
|
+
|
|
14
|
+
options = {
|
|
15
|
+
...options,
|
|
16
|
+
moddleExtensions: {
|
|
17
|
+
...commonModdleExtensions,
|
|
18
|
+
...options.moddleExtensions
|
|
19
|
+
}
|
|
20
|
+
};
|
|
21
|
+
|
|
22
|
+
BaseViewer.call(this, options);
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
inherits(NavigatedViewer, BaseViewer);
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import inherits from 'inherits';
|
|
2
|
+
|
|
3
|
+
import BaseViewer from '../base/Viewer';
|
|
4
|
+
|
|
5
|
+
import { commonModdleExtensions } from './util/commonModules';
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
*
|
|
9
|
+
* @param {Object} options
|
|
10
|
+
*/
|
|
11
|
+
export default function Viewer(options = {}) {
|
|
12
|
+
|
|
13
|
+
options = {
|
|
14
|
+
...options,
|
|
15
|
+
moddleExtensions: {
|
|
16
|
+
...commonModdleExtensions,
|
|
17
|
+
...options.moddleExtensions
|
|
18
|
+
}
|
|
19
|
+
};
|
|
20
|
+
|
|
21
|
+
BaseViewer.call(this, options);
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
inherits(Viewer, BaseViewer);
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import {
|
|
2
|
+
getBusinessObject,
|
|
3
|
+
is
|
|
4
|
+
} from 'bpmn-js/lib/util/ModelUtil';
|
|
5
|
+
|
|
6
|
+
import { isArray } from 'min-dash';
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* Get extension elements of business object. Optionally filter by type.
|
|
10
|
+
*
|
|
11
|
+
* @param {djs.model.Base|ModdleElement} element
|
|
12
|
+
* @param {String} [type=undefined]
|
|
13
|
+
* @returns {Array<ModdleElement>}
|
|
14
|
+
*/
|
|
15
|
+
export function getExtensionElementsList(element, type = undefined) {
|
|
16
|
+
const businessObject = getBusinessObject(element),
|
|
17
|
+
extensionElements = businessObject.get('extensionElements');
|
|
18
|
+
|
|
19
|
+
if (!extensionElements) {
|
|
20
|
+
return [];
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
const values = extensionElements.get('values');
|
|
24
|
+
|
|
25
|
+
if (!values || !values.length) {
|
|
26
|
+
return [];
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
if (type) {
|
|
30
|
+
return values.filter(value => is(value, type));
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
return values;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
/**
|
|
37
|
+
* Remove one or more extension elements. Remove bpmn:ExtensionElements afterwards if it's empty.
|
|
38
|
+
*
|
|
39
|
+
* @param {ModdleElement} element
|
|
40
|
+
* @param {ModdleElement} businessObject
|
|
41
|
+
* @param {ModdleElement|Array<ModdleElement>} extensionElementsToRemove
|
|
42
|
+
* @param {CommandStack} commandStack
|
|
43
|
+
*/
|
|
44
|
+
export function removeExtensionElements(element, businessObject, extensionElementsToRemove, commandStack) {
|
|
45
|
+
if (!isArray(extensionElementsToRemove)) {
|
|
46
|
+
extensionElementsToRemove = [ extensionElementsToRemove ];
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
const extensionElements = businessObject.get('extensionElements'),
|
|
50
|
+
values = extensionElements.get('values').filter(value => !extensionElementsToRemove.includes(value));
|
|
51
|
+
|
|
52
|
+
commandStack.execute('element.updateModdleProperties', {
|
|
53
|
+
element,
|
|
54
|
+
moddleElement: extensionElements,
|
|
55
|
+
properties: {
|
|
56
|
+
values
|
|
57
|
+
}
|
|
58
|
+
});
|
|
59
|
+
}
|
package/package.json
CHANGED
|
@@ -1,20 +1,25 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "camunda-bpmn-js",
|
|
3
|
-
"version": "0.13.
|
|
3
|
+
"version": "0.13.2",
|
|
4
4
|
"description": "Embeddable Camunda modeling distributions based on bpmn-js",
|
|
5
5
|
"main": "lib/index.js",
|
|
6
6
|
"scripts": {
|
|
7
|
-
"all": "run-s lint test distro test:distro",
|
|
7
|
+
"all": "run-s clean lint test distro test:distro",
|
|
8
8
|
"lint": "eslint .",
|
|
9
9
|
"dev": "npm test -- --auto-watch --no-single-run",
|
|
10
10
|
"test": "karma start karma.config.js",
|
|
11
|
+
"clean": "del-cli dist",
|
|
11
12
|
"distro": "rollup -c",
|
|
12
13
|
"test:distro": "node tasks/test-distro.js",
|
|
13
14
|
"start:base": "cross-env SINGLE_START=base-modeler npm run dev",
|
|
14
15
|
"start:platform": "cross-env SINGLE_START=camunda-platform-modeler npm run dev",
|
|
15
16
|
"start:cloud": "cross-env SINGLE_START=camunda-cloud-modeler npm run dev",
|
|
16
|
-
"
|
|
17
|
-
"
|
|
17
|
+
"start:platform-viewer": "cross-env SINGLE_START=camunda-platform-viewer npm run dev",
|
|
18
|
+
"start:cloud-viewer": "cross-env SINGLE_START=camunda-cloud-viewer npm run dev",
|
|
19
|
+
"start:platform-navigated-viewer": "cross-env SINGLE_START=camunda-platform-navigated-viewer npm run dev",
|
|
20
|
+
"start:cloud-navigated-viewer": "cross-env SINGLE_START=camunda-cloud-navigated-viewer npm run dev",
|
|
21
|
+
"prepublishOnly": "run-s test:distro",
|
|
22
|
+
"prepare": "run-s clean distro"
|
|
18
23
|
},
|
|
19
24
|
"repository": {
|
|
20
25
|
"type": "git",
|
|
@@ -41,30 +46,33 @@
|
|
|
41
46
|
"license": "MIT",
|
|
42
47
|
"dependencies": {
|
|
43
48
|
"@bpmn-io/align-to-origin": "^0.7.0",
|
|
44
|
-
"@bpmn-io/
|
|
45
|
-
"bpmn-js": "
|
|
46
|
-
"bpmn-js-disable-collapsed-subprocess": "^0.1.
|
|
49
|
+
"@bpmn-io/element-templates-icons-renderer": "^0.1.2",
|
|
50
|
+
"bpmn-js": "^9.0.3",
|
|
51
|
+
"bpmn-js-disable-collapsed-subprocess": "^0.1.4",
|
|
47
52
|
"bpmn-js-executable-fix": "^0.1.3",
|
|
48
|
-
"bpmn-js-
|
|
49
|
-
"camunda-bpmn-moddle": "^6.1.
|
|
50
|
-
"diagram-js": "
|
|
51
|
-
"diagram-js-minimap": "
|
|
53
|
+
"camunda-bpmn-js-behaviors": "^0.1.0",
|
|
54
|
+
"camunda-bpmn-moddle": "^6.1.2",
|
|
55
|
+
"diagram-js": "^8.2.1",
|
|
56
|
+
"diagram-js-minimap": "^2.1.0",
|
|
52
57
|
"diagram-js-origin": "^1.3.2",
|
|
53
58
|
"inherits": "^2.0.4",
|
|
54
|
-
"min-dash": "^3.
|
|
55
|
-
"zeebe-bpmn-moddle": "^0.
|
|
59
|
+
"min-dash": "^3.8.1",
|
|
60
|
+
"zeebe-bpmn-moddle": "^0.12.1"
|
|
56
61
|
},
|
|
57
62
|
"devDependencies": {
|
|
63
|
+
"@bpmn-io/properties-panel": "^0.13.2",
|
|
58
64
|
"@rollup/plugin-commonjs": "^17.1.0",
|
|
59
65
|
"@rollup/plugin-json": "^4.1.0",
|
|
60
66
|
"@rollup/plugin-node-resolve": "^11.1.1",
|
|
67
|
+
"bpmn-js-properties-panel": "^1.1.1",
|
|
61
68
|
"chai": "^4.2.0",
|
|
62
69
|
"cross-env": "^7.0.3",
|
|
70
|
+
"del-cli": "^4.0.1",
|
|
63
71
|
"eslint": "^7.32.0",
|
|
64
72
|
"eslint-plugin-bpmn-io": "^0.13.0",
|
|
65
73
|
"execa": "^5.0.0",
|
|
66
74
|
"istanbul-instrumenter-loader": "^3.0.1",
|
|
67
|
-
"karma": "^6.3.
|
|
75
|
+
"karma": "^6.3.16",
|
|
68
76
|
"karma-chai": "^0.1.0",
|
|
69
77
|
"karma-chrome-launcher": "^3.1.0",
|
|
70
78
|
"karma-coverage": "^2.0.3",
|
|
@@ -87,5 +95,15 @@
|
|
|
87
95
|
"sinon": "^9.2.4",
|
|
88
96
|
"sinon-chai": "^3.5.0",
|
|
89
97
|
"webpack": "^5.20.1"
|
|
90
|
-
}
|
|
98
|
+
},
|
|
99
|
+
"peerDependencies": {
|
|
100
|
+
"@bpmn-io/properties-panel": "0.13.x",
|
|
101
|
+
"bpmn-js-properties-panel": "1.x"
|
|
102
|
+
},
|
|
103
|
+
"files": [
|
|
104
|
+
"dist",
|
|
105
|
+
"lib",
|
|
106
|
+
"styles",
|
|
107
|
+
"util"
|
|
108
|
+
]
|
|
91
109
|
}
|
|
@@ -1 +1,2 @@
|
|
|
1
|
-
@import './base-modeler.css';
|
|
1
|
+
@import './base-modeler.css';
|
|
2
|
+
@import './element-templates.css';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
@import './base-navigated-viewer.css';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
@import './base-viewer.css';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
@import './base-navigated-viewer.css';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
@import './base-viewer.css';
|
package/util/index.js
ADDED
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generates all possible combinations of the items in the given arrays.
|
|
3
|
+
*
|
|
4
|
+
* @param {...Array} - arrays with options to combine
|
|
5
|
+
* @returns {Array<Array>} array with all posible combinations of items
|
|
6
|
+
*/
|
|
7
|
+
function getAllCombinations() {
|
|
8
|
+
const [ first, ...rest ] = arguments;
|
|
9
|
+
|
|
10
|
+
if (!first) {
|
|
11
|
+
return;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
const combinations = getAllCombinations(...rest);
|
|
15
|
+
|
|
16
|
+
return first.reduce((acc, cur) => {
|
|
17
|
+
|
|
18
|
+
const newCombination = combinations ? combinations.map(combination => [ cur, ...combination ]) : [ [ cur ] ];
|
|
19
|
+
|
|
20
|
+
return acc.concat(
|
|
21
|
+
newCombination
|
|
22
|
+
);
|
|
23
|
+
}, []);
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
function capitalize(string) {
|
|
27
|
+
return string.charAt(0).toUpperCase() + string.slice(1);
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
function toKebabCase(string) {
|
|
31
|
+
return string.replace(/([a-z])([A-Z])/g, '$1-$2').toLowerCase();
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
module.exports = {
|
|
36
|
+
getAllCombinations,
|
|
37
|
+
capitalize,
|
|
38
|
+
toKebabCase
|
|
39
|
+
};
|