camunda-bpmn-js 5.1.0 → 5.2.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.
@@ -2755,7 +2755,7 @@
2755
2755
  * @return {string}
2756
2756
  */
2757
2757
  function componentsToPath(elements) {
2758
- return elements.flat().join(',').replace(/,?([A-z]),?/g, '$1');
2758
+ return elements.flat().join(',').replace(/,?([A-Za-z]),?/g, '$1');
2759
2759
  }
2760
2760
 
2761
2761
  /**
@@ -25387,7 +25387,7 @@
25387
25387
  * `keyboard.bind=true|false` configuration option.
25388
25388
  *
25389
25389
  * @param {Object} config
25390
- * @param {EventTarget} [config.bindTo]
25390
+ * @param {boolean} [config.bind]
25391
25391
  * @param {EventBus} eventBus
25392
25392
  */
25393
25393
  function Keyboard(config, eventBus) {
@@ -25463,10 +25463,17 @@
25463
25463
  /**
25464
25464
  * Bind keyboard events to the given DOM node.
25465
25465
  *
25466
+ * @overlord
25467
+ * @deprecated No longer in use since version 15.0.0.
25468
+ *
25466
25469
  * @param {EventTarget} node
25467
25470
  */
25471
+ /**
25472
+ * Bind keyboard events to the canvas node.
25473
+ */
25468
25474
  Keyboard.prototype.bind = function(node) {
25469
25475
 
25476
+ // legacy <node> argument provided
25470
25477
  if (node) {
25471
25478
  console.error('unsupported argument <node>', new Error(compatMessage));
25472
25479
  }
@@ -104358,7 +104365,7 @@
104358
104365
  this._tooltipConfig = tooltipConfig;
104359
104366
  this._feelPopupContainer = feelPopupContainer;
104360
104367
  this._getFeelPopupLinks = getFeelPopupLinks;
104361
- this._container = domify$1('<div style="height: 100%" class="bio-properties-panel-container"></div>');
104368
+ this._container = domify$1('<div style="height: 100%" tabindex="-1" class="bio-properties-panel-container"></div>');
104362
104369
  var commandStack = injector.get('commandStack', false);
104363
104370
  commandStack && setupKeyboard(this._container, eventBus, commandStack);
104364
104371
  eventBus.on('diagram.init', () => {
@@ -115970,1035 +115977,1035 @@
115970
115977
  Modeler$1.prototype._extensionModules
115971
115978
  );
115972
115979
 
115973
- const WILDCARD = '*';
115974
-
115975
-
115976
- class CopyPasteBehavior {
115977
- constructor(eventBus) {
115978
- eventBus.on('moddleCopy.canCopyProperty', (context) => {
115979
- const {
115980
- parent,
115981
- property
115982
- } = context;
115983
-
115984
- return this.canCopyProperty(property, parent);
115985
- });
115986
- }
115987
-
115988
- /**
115989
- * Check wether to disallow copying property.
115990
- */
115991
- canCopyProperty(property, parent) {
115992
-
115993
- // (1) check wether property is allowed in parent
115994
- if (isObject$1(property) && !isAllowedInParent(property, parent)) {
115995
-
115996
- return false;
115997
- }
115998
-
115999
- // (2) check more complex scenarios
116000
- if (is$5(property, 'camunda:InputOutput') && !this.canHostInputOutput(parent)) {
116001
- return false;
116002
- }
116003
-
116004
- if (isAny$1(property, [ 'camunda:Connector', 'camunda:Field' ]) && !this.canHostConnector(parent)) {
116005
- return false;
116006
- }
116007
-
116008
- if (is$5(property, 'camunda:In') && !this.canHostIn(parent)) {
116009
- return false;
116010
- }
116011
- }
116012
-
116013
- canHostInputOutput(parent) {
116014
-
116015
- // allowed in camunda:Connector
116016
- const connector = getParent(parent, 'camunda:Connector');
116017
-
116018
- if (connector) {
116019
- return true;
116020
- }
116021
-
116022
- // special rules inside bpmn:FlowNode
116023
- const flowNode = getParent(parent, 'bpmn:FlowNode');
116024
-
116025
- if (!flowNode) {
116026
- return false;
116027
- }
116028
-
116029
- if (isAny$1(flowNode, [ 'bpmn:StartEvent', 'bpmn:Gateway', 'bpmn:BoundaryEvent' ])) {
116030
- return false;
116031
- }
116032
-
116033
- if (is$5(flowNode, 'bpmn:SubProcess') && flowNode.get('triggeredByEvent')) {
116034
- return false;
116035
- }
116036
-
116037
- return true;
116038
- }
116039
-
116040
- canHostConnector(parent) {
116041
- const serviceTaskLike = getParent(parent, 'camunda:ServiceTaskLike');
116042
-
116043
- if (is$5(serviceTaskLike, 'bpmn:MessageEventDefinition')) {
116044
-
116045
- // only allow on throw and end events
116046
- return (
116047
- getParent(parent, 'bpmn:IntermediateThrowEvent')
116048
- || getParent(parent, 'bpmn:EndEvent')
116049
- );
116050
- }
116051
-
116052
- return true;
116053
- }
116054
-
116055
- canHostIn(parent) {
116056
- const callActivity = getParent(parent, 'bpmn:CallActivity');
116057
-
116058
- if (callActivity) {
116059
- return true;
116060
- }
116061
-
116062
- const signalEventDefinition = getParent(parent, 'bpmn:SignalEventDefinition');
116063
-
116064
- if (signalEventDefinition) {
116065
-
116066
- // only allow on throw and end events
116067
- return (
116068
- getParent(parent, 'bpmn:IntermediateThrowEvent')
116069
- || getParent(parent, 'bpmn:EndEvent')
116070
- );
116071
- }
116072
-
116073
- return true;
116074
- }
116075
- }
116076
-
116077
- CopyPasteBehavior.$inject = [ 'eventBus' ];
116078
-
116079
-
116080
- // helpers //////////
116081
-
116082
- function getParent(element, type) {
116083
- if (!type) {
116084
- return element.$parent;
116085
- }
116086
-
116087
- if (is$5(element, type)) {
116088
- return element;
116089
- }
116090
-
116091
- if (!element.$parent) {
116092
- return;
116093
- }
116094
-
116095
- return getParent(element.$parent, type);
116096
- }
116097
-
116098
- function isAllowedInParent(property, parent) {
116099
-
116100
- // (1) find property descriptor
116101
- var descriptor = property.$type && property.$model.getTypeDescriptor(property.$type);
116102
-
116103
- var allowedIn = descriptor && descriptor.meta && descriptor.meta.allowedIn;
116104
-
116105
- if (!allowedIn || isWildcard(allowedIn)) {
116106
- return true;
116107
- }
116108
-
116109
- // (2) check wether property has parent of allowed type
116110
- return some$1(allowedIn, function(type) {
116111
- return getParent(parent, type);
116112
- });
116113
- }
116114
-
116115
- function isWildcard(allowedIn) {
116116
- return allowedIn.includes(WILDCARD);
116117
- }
116118
-
116119
- const LOW_PRIORITY$3 = 500;
116120
-
116121
-
116122
- /**
116123
- * Add referenced root elements (bpmn:Error) if they don't exist.
116124
- * Copy referenced root elements on copy & paste.
116125
- */
116126
- class CopyPasteRootElementBehavior extends CommandInterceptor$1 {
116127
- constructor(bpmnFactory, bpmnjs, eventBus, moddleCopy) {
116128
- super(eventBus);
116129
-
116130
- function hasRootElement(rootElement) {
116131
- const definitions = bpmnjs.getDefinitions(),
116132
- rootElements = definitions.get('rootElements');
116133
-
116134
- return !!find$2(rootElements, matchPattern({ id: rootElement.get('id') }));
116135
- }
116136
-
116137
- // create shape
116138
- this.executed('shape.create', (context) => {
116139
- const { shape } = context;
116140
-
116141
- const businessObject = getBusinessObject$1(shape);
116142
-
116143
- if (!canHaveNestedRootElementReference(businessObject)) {
116144
- return;
116145
- }
116146
-
116147
- const referencedRootElements = getRootElements(businessObject, getReferencingElement(shape)),
116148
- rootElements = bpmnjs.getDefinitions().get('rootElements');
116149
-
116150
- context.addedRootElements = [];
116151
-
116152
- referencedRootElements.forEach((reference) => {
116153
- const { referencedElement } = reference;
116154
-
116155
- if (referencedElement && !hasRootElement(referencedElement)) {
116156
-
116157
- // add root element
116158
- add$2(rootElements, referencedElement);
116159
-
116160
- context.addedRootElements.push(referencedElement);
116161
- }
116162
- });
116163
- }, true);
116164
-
116165
- this.reverted('shape.create', (context) => {
116166
- const { addedRootElements } = context;
116167
-
116168
- if (!addedRootElements) {
116169
- return;
116170
- }
116171
-
116172
- const rootElements = bpmnjs.getDefinitions().get('rootElements');
116173
-
116174
- // remove root elements
116175
- addedRootElements.forEach((addedRootElement) => {
116176
- remove$2(rootElements, addedRootElement);
116177
- });
116178
- }, true);
116179
-
116180
- eventBus.on('copyPaste.copyElement', function(context) {
116181
- const {
116182
- descriptor,
116183
- element
116184
- } = context;
116185
-
116186
- const businessObject = getBusinessObject$1(element);
116187
-
116188
- if (element.labelTarget || !canHaveNestedRootElementReference(businessObject)) {
116189
- return;
116190
- }
116191
-
116192
- const rootElements = getRootElements(businessObject, getReferencingElement(element));
116193
-
116194
- if (rootElements) {
116195
- descriptor.referencedRootElements = rootElements;
116196
- }
116197
- });
116198
-
116199
- eventBus.on('copyPaste.pasteElement', LOW_PRIORITY$3, (context) => {
116200
- const { descriptor } = context;
116201
-
116202
- const {
116203
- businessObject,
116204
- referencedRootElements
116205
- } = descriptor;
116206
-
116207
- if (!referencedRootElements) {
116208
- return;
116209
- }
116210
-
116211
- referencedRootElements.forEach((reference) => {
116212
- let {
116213
- idx,
116214
- referencedElement
116215
- } = reference;
116216
-
116217
- if (!referencedElement) {
116218
- return;
116219
- }
116220
-
116221
- if (!hasRootElement(referencedElement)) {
116222
- referencedElement = moddleCopy.copyElement(
116223
- referencedElement,
116224
- bpmnFactory.create(referencedElement.$type)
116225
- );
116226
- }
116227
-
116228
- setRootElement(businessObject, referencedElement, idx);
116229
- });
116230
-
116231
- delete descriptor.referencedRootElements;
116232
- });
116233
- }
116234
- }
116235
-
116236
- CopyPasteRootElementBehavior.$inject = [
116237
- 'bpmnFactory',
116238
- 'bpmnjs',
116239
- 'eventBus',
116240
- 'moddleCopy'
116241
- ];
116242
-
116243
-
116244
- // helpers //////////
116245
-
116246
- function getReferencingElement(element) {
116247
- if (is$5(element, 'bpmn:ServiceTask')) {
116248
- return 'camunda:ErrorEventDefinition';
116249
- }
116250
- }
116251
-
116252
- function getRootElementReferencePropertyName(bo) {
116253
- if (is$5(bo, 'camunda:ErrorEventDefinition')) {
116254
- return 'errorRef';
116255
- }
116256
- }
116257
-
116258
- function canHaveNestedRootElementReference(businessObject) {
116259
- return is$5(businessObject, 'bpmn:ServiceTask') && businessObject.get('type') === 'external';
116260
- }
116261
-
116262
- /**
116263
- * Retrieves a list of to-be copied references for the extension elements
116264
- * of a given element in the following form.
116265
- *
116266
- * [
116267
- * {
116268
- * idx: 0, // position of extension in the list of extension elements
116269
- * referencedElement: {ModdleElement} // reference to root element
116270
- * }
116271
- * ]
116272
- *
116273
- *
116274
- * @param {ModdleElement} businessObject
116275
- * @param {String} extensionElementType
116276
- *
116277
- * @returns {Array}
116278
- */
116279
- function getRootElements(businessObject, extensionElementType) {
116280
- const extensionElements = businessObject.get('extensionElements');
116281
-
116282
- if (!extensionElements) {
116283
- return [];
116284
- }
116285
-
116286
- return extensionElements
116287
- .get('values')
116288
- .filter((element) => is$5(element, extensionElementType))
116289
- .reduce((result, element) => {
116290
- const referencedElement = element.get(getRootElementReferencePropertyName(element));
116291
-
116292
- if (referencedElement) {
116293
- result.push({
116294
- idx: getExtensionElementId(businessObject, element),
116295
- referencedElement
116296
- });
116297
- }
116298
-
116299
- return result;
116300
- }, []);
116301
- }
116302
-
116303
- function setRootElement(businessObject, rootElement, index) {
116304
- const extensionElement = businessObject.get('extensionElements').get('values')[ index ];
116305
-
116306
- extensionElement.set(getRootElementReferencePropertyName(extensionElement), rootElement);
116307
- }
116308
-
116309
- function getExtensionElementId(businessObject, extensionElement) {
116310
- const extensionElements = businessObject.get('extensionElements');
116311
-
116312
- if (!extensionElements) {
116313
- return -1;
116314
- }
116315
-
116316
- return extensionElements.get('values').indexOf(extensionElement);
116317
- }
116318
-
116319
- /**
116320
- * Get extension elements of business object. Optionally filter by type.
116321
- *
116322
- * @param {djs.model.Base|ModdleElement} element
116323
- * @param {String} [type=undefined]
116324
- * @returns {Array<ModdleElement>}
116325
- */
116326
- function getExtensionElementsList(element, type = undefined) {
116327
- const businessObject = getBusinessObject$1(element),
116328
- extensionElements = businessObject.get('extensionElements');
116329
-
116330
- if (!extensionElements) {
116331
- return [];
116332
- }
116333
-
116334
- const values = extensionElements.get('values');
116335
-
116336
- if (!values || !values.length) {
116337
- return [];
116338
- }
116339
-
116340
- if (type) {
116341
- return values.filter(value => is$5(value, type));
116342
- }
116343
-
116344
- return values;
116345
- }
116346
-
116347
- /**
116348
- * Remove one or more extension elements. Remove bpmn:ExtensionElements afterwards if it's empty.
116349
- *
116350
- * @param {ModdleElement} element
116351
- * @param {ModdleElement} businessObject
116352
- * @param {ModdleElement|Array<ModdleElement>} extensionElementsToRemove
116353
- * @param {CommandStack} commandStack
116354
- */
116355
- function removeExtensionElements(element, businessObject, extensionElementsToRemove, commandStack) {
116356
- if (!isArray$4(extensionElementsToRemove)) {
116357
- extensionElementsToRemove = [ extensionElementsToRemove ];
116358
- }
116359
-
116360
- const extensionElements = businessObject.get('extensionElements'),
116361
- values = extensionElements.get('values').filter(value => !extensionElementsToRemove.includes(value));
116362
-
116363
- commandStack.execute('element.updateModdleProperties', {
116364
- element,
116365
- moddleElement: extensionElements,
116366
- properties: {
116367
- values
116368
- }
116369
- });
116370
- }
116371
-
116372
- const HIGH_PRIORITY$3 = 5000;
116373
-
116374
-
116375
- /**
116376
- * Camunda BPMN specific behavior ensuring camunda:ErrorEventDefinition extension elements are removed
116377
- * if type of e.g. bpmn:ServiceTask is set to something other than external.
116378
- */
116379
- class DeleteErrorEventDefinitionBehavior extends CommandInterceptor$1 {
116380
- constructor(commandStack, eventBus) {
116381
- super(eventBus);
116382
-
116383
- this.postExecute([
116384
- 'element.updateProperties',
116385
- 'element.updateModdleProperties'
116386
- ], HIGH_PRIORITY$3, function(context) {
116387
- const {
116388
- element,
116389
- moddleElement,
116390
- properties
116391
- } = context;
116392
-
116393
- const businessObject = moddleElement || getBusinessObject$1(element);
116394
-
116395
- if (is$5(element, 'camunda:ExternalCapable')
116396
- && is$5(businessObject, 'camunda:ExternalCapable')
116397
- && properties[ 'camunda:type' ] !== 'external'
116398
- ) {
116399
- const errorEventDefinitions = getExtensionElementsList(businessObject, 'camunda:ErrorEventDefinition');
116400
-
116401
- if (errorEventDefinitions.length) {
116402
- removeExtensionElements(element, businessObject, errorEventDefinitions, commandStack);
116403
- }
116404
- }
116405
- }, true);
116406
-
116407
- }
115980
+ const WILDCARD = '*';
115981
+
115982
+
115983
+ class CopyPasteBehavior {
115984
+ constructor(eventBus) {
115985
+ eventBus.on('moddleCopy.canCopyProperty', (context) => {
115986
+ const {
115987
+ parent,
115988
+ property
115989
+ } = context;
115990
+
115991
+ return this.canCopyProperty(property, parent);
115992
+ });
115993
+ }
115994
+
115995
+ /**
115996
+ * Check wether to disallow copying property.
115997
+ */
115998
+ canCopyProperty(property, parent) {
115999
+
116000
+ // (1) check wether property is allowed in parent
116001
+ if (isObject$1(property) && !isAllowedInParent(property, parent)) {
116002
+
116003
+ return false;
116004
+ }
116005
+
116006
+ // (2) check more complex scenarios
116007
+ if (is$5(property, 'camunda:InputOutput') && !this.canHostInputOutput(parent)) {
116008
+ return false;
116009
+ }
116010
+
116011
+ if (isAny$1(property, [ 'camunda:Connector', 'camunda:Field' ]) && !this.canHostConnector(parent)) {
116012
+ return false;
116013
+ }
116014
+
116015
+ if (is$5(property, 'camunda:In') && !this.canHostIn(parent)) {
116016
+ return false;
116017
+ }
116018
+ }
116019
+
116020
+ canHostInputOutput(parent) {
116021
+
116022
+ // allowed in camunda:Connector
116023
+ const connector = getParent(parent, 'camunda:Connector');
116024
+
116025
+ if (connector) {
116026
+ return true;
116027
+ }
116028
+
116029
+ // special rules inside bpmn:FlowNode
116030
+ const flowNode = getParent(parent, 'bpmn:FlowNode');
116031
+
116032
+ if (!flowNode) {
116033
+ return false;
116034
+ }
116035
+
116036
+ if (isAny$1(flowNode, [ 'bpmn:StartEvent', 'bpmn:Gateway', 'bpmn:BoundaryEvent' ])) {
116037
+ return false;
116038
+ }
116039
+
116040
+ if (is$5(flowNode, 'bpmn:SubProcess') && flowNode.get('triggeredByEvent')) {
116041
+ return false;
116042
+ }
116043
+
116044
+ return true;
116045
+ }
116046
+
116047
+ canHostConnector(parent) {
116048
+ const serviceTaskLike = getParent(parent, 'camunda:ServiceTaskLike');
116049
+
116050
+ if (is$5(serviceTaskLike, 'bpmn:MessageEventDefinition')) {
116051
+
116052
+ // only allow on throw and end events
116053
+ return (
116054
+ getParent(parent, 'bpmn:IntermediateThrowEvent')
116055
+ || getParent(parent, 'bpmn:EndEvent')
116056
+ );
116057
+ }
116058
+
116059
+ return true;
116060
+ }
116061
+
116062
+ canHostIn(parent) {
116063
+ const callActivity = getParent(parent, 'bpmn:CallActivity');
116064
+
116065
+ if (callActivity) {
116066
+ return true;
116067
+ }
116068
+
116069
+ const signalEventDefinition = getParent(parent, 'bpmn:SignalEventDefinition');
116070
+
116071
+ if (signalEventDefinition) {
116072
+
116073
+ // only allow on throw and end events
116074
+ return (
116075
+ getParent(parent, 'bpmn:IntermediateThrowEvent')
116076
+ || getParent(parent, 'bpmn:EndEvent')
116077
+ );
116078
+ }
116079
+
116080
+ return true;
116081
+ }
116082
+ }
116083
+
116084
+ CopyPasteBehavior.$inject = [ 'eventBus' ];
116085
+
116086
+
116087
+ // helpers //////////
116088
+
116089
+ function getParent(element, type) {
116090
+ if (!type) {
116091
+ return element.$parent;
116092
+ }
116093
+
116094
+ if (is$5(element, type)) {
116095
+ return element;
116096
+ }
116097
+
116098
+ if (!element.$parent) {
116099
+ return;
116100
+ }
116101
+
116102
+ return getParent(element.$parent, type);
116103
+ }
116104
+
116105
+ function isAllowedInParent(property, parent) {
116106
+
116107
+ // (1) find property descriptor
116108
+ var descriptor = property.$type && property.$model.getTypeDescriptor(property.$type);
116109
+
116110
+ var allowedIn = descriptor && descriptor.meta && descriptor.meta.allowedIn;
116111
+
116112
+ if (!allowedIn || isWildcard(allowedIn)) {
116113
+ return true;
116114
+ }
116115
+
116116
+ // (2) check wether property has parent of allowed type
116117
+ return some$1(allowedIn, function(type) {
116118
+ return getParent(parent, type);
116119
+ });
116120
+ }
116121
+
116122
+ function isWildcard(allowedIn) {
116123
+ return allowedIn.includes(WILDCARD);
116408
116124
  }
116409
116125
 
116410
- DeleteErrorEventDefinitionBehavior.$inject = [
116411
- 'commandStack',
116412
- 'eventBus'
116413
- ];
116414
-
116415
- const LOW_PRIORITY$2 = 250;
116416
-
116417
- /**
116418
- * Camunda-specific behavior ensuring `isExecutable` is kept after deleting
116419
- * the last participant.
116420
- */
116421
- class DeleteParticipantBehaviour extends CommandInterceptor$1 {
116422
- constructor(eventBus, canvas, modeling) {
116423
- super(eventBus);
116424
-
116425
- this.postExecuted('shape.delete', LOW_PRIORITY$2, function(context) {
116426
- const {
116427
- collaborationRoot,
116428
- shape
116429
- } = context;
116430
-
116431
- const newRoot = canvas.getRootElement();
116432
-
116433
- if (is$5(shape, 'bpmn:Participant') &&
116434
- collaborationRoot &&
116435
- !collaborationRoot.businessObject.get('participants').length &&
116436
- is$5(newRoot, 'bpmn:Process')) {
116437
-
116438
- const oldProcessBusinessObject = shape.businessObject.get('processRef');
116439
-
116440
- if (!oldProcessBusinessObject) {
116441
- return;
116442
- }
116443
-
116444
- modeling.updateProperties(newRoot, { isExecutable: oldProcessBusinessObject.get('isExecutable') });
116445
- }
116446
-
116447
- }, true);
116448
- }
116126
+ const LOW_PRIORITY$3 = 500;
116127
+
116128
+
116129
+ /**
116130
+ * Add referenced root elements (bpmn:Error) if they don't exist.
116131
+ * Copy referenced root elements on copy & paste.
116132
+ */
116133
+ class CopyPasteRootElementBehavior extends CommandInterceptor$1 {
116134
+ constructor(bpmnFactory, bpmnjs, eventBus, moddleCopy) {
116135
+ super(eventBus);
116136
+
116137
+ function hasRootElement(rootElement) {
116138
+ const definitions = bpmnjs.getDefinitions(),
116139
+ rootElements = definitions.get('rootElements');
116140
+
116141
+ return !!find$2(rootElements, matchPattern({ id: rootElement.get('id') }));
116142
+ }
116143
+
116144
+ // create shape
116145
+ this.executed('shape.create', (context) => {
116146
+ const { shape } = context;
116147
+
116148
+ const businessObject = getBusinessObject$1(shape);
116149
+
116150
+ if (!canHaveNestedRootElementReference(businessObject)) {
116151
+ return;
116152
+ }
116153
+
116154
+ const referencedRootElements = getRootElements(businessObject, getReferencingElement(shape)),
116155
+ rootElements = bpmnjs.getDefinitions().get('rootElements');
116156
+
116157
+ context.addedRootElements = [];
116158
+
116159
+ referencedRootElements.forEach((reference) => {
116160
+ const { referencedElement } = reference;
116161
+
116162
+ if (referencedElement && !hasRootElement(referencedElement)) {
116163
+
116164
+ // add root element
116165
+ add$2(rootElements, referencedElement);
116166
+
116167
+ context.addedRootElements.push(referencedElement);
116168
+ }
116169
+ });
116170
+ }, true);
116171
+
116172
+ this.reverted('shape.create', (context) => {
116173
+ const { addedRootElements } = context;
116174
+
116175
+ if (!addedRootElements) {
116176
+ return;
116177
+ }
116178
+
116179
+ const rootElements = bpmnjs.getDefinitions().get('rootElements');
116180
+
116181
+ // remove root elements
116182
+ addedRootElements.forEach((addedRootElement) => {
116183
+ remove$2(rootElements, addedRootElement);
116184
+ });
116185
+ }, true);
116186
+
116187
+ eventBus.on('copyPaste.copyElement', function(context) {
116188
+ const {
116189
+ descriptor,
116190
+ element
116191
+ } = context;
116192
+
116193
+ const businessObject = getBusinessObject$1(element);
116194
+
116195
+ if (element.labelTarget || !canHaveNestedRootElementReference(businessObject)) {
116196
+ return;
116197
+ }
116198
+
116199
+ const rootElements = getRootElements(businessObject, getReferencingElement(element));
116200
+
116201
+ if (rootElements) {
116202
+ descriptor.referencedRootElements = rootElements;
116203
+ }
116204
+ });
116205
+
116206
+ eventBus.on('copyPaste.pasteElement', LOW_PRIORITY$3, (context) => {
116207
+ const { descriptor } = context;
116208
+
116209
+ const {
116210
+ businessObject,
116211
+ referencedRootElements
116212
+ } = descriptor;
116213
+
116214
+ if (!referencedRootElements) {
116215
+ return;
116216
+ }
116217
+
116218
+ referencedRootElements.forEach((reference) => {
116219
+ let {
116220
+ idx,
116221
+ referencedElement
116222
+ } = reference;
116223
+
116224
+ if (!referencedElement) {
116225
+ return;
116226
+ }
116227
+
116228
+ if (!hasRootElement(referencedElement)) {
116229
+ referencedElement = moddleCopy.copyElement(
116230
+ referencedElement,
116231
+ bpmnFactory.create(referencedElement.$type)
116232
+ );
116233
+ }
116234
+
116235
+ setRootElement(businessObject, referencedElement, idx);
116236
+ });
116237
+
116238
+ delete descriptor.referencedRootElements;
116239
+ });
116240
+ }
116241
+ }
116242
+
116243
+ CopyPasteRootElementBehavior.$inject = [
116244
+ 'bpmnFactory',
116245
+ 'bpmnjs',
116246
+ 'eventBus',
116247
+ 'moddleCopy'
116248
+ ];
116249
+
116250
+
116251
+ // helpers //////////
116252
+
116253
+ function getReferencingElement(element) {
116254
+ if (is$5(element, 'bpmn:ServiceTask')) {
116255
+ return 'camunda:ErrorEventDefinition';
116256
+ }
116257
+ }
116258
+
116259
+ function getRootElementReferencePropertyName(bo) {
116260
+ if (is$5(bo, 'camunda:ErrorEventDefinition')) {
116261
+ return 'errorRef';
116262
+ }
116263
+ }
116264
+
116265
+ function canHaveNestedRootElementReference(businessObject) {
116266
+ return is$5(businessObject, 'bpmn:ServiceTask') && businessObject.get('type') === 'external';
116267
+ }
116268
+
116269
+ /**
116270
+ * Retrieves a list of to-be copied references for the extension elements
116271
+ * of a given element in the following form.
116272
+ *
116273
+ * [
116274
+ * {
116275
+ * idx: 0, // position of extension in the list of extension elements
116276
+ * referencedElement: {ModdleElement} // reference to root element
116277
+ * }
116278
+ * ]
116279
+ *
116280
+ *
116281
+ * @param {ModdleElement} businessObject
116282
+ * @param {String} extensionElementType
116283
+ *
116284
+ * @returns {Array}
116285
+ */
116286
+ function getRootElements(businessObject, extensionElementType) {
116287
+ const extensionElements = businessObject.get('extensionElements');
116288
+
116289
+ if (!extensionElements) {
116290
+ return [];
116291
+ }
116292
+
116293
+ return extensionElements
116294
+ .get('values')
116295
+ .filter((element) => is$5(element, extensionElementType))
116296
+ .reduce((result, element) => {
116297
+ const referencedElement = element.get(getRootElementReferencePropertyName(element));
116298
+
116299
+ if (referencedElement) {
116300
+ result.push({
116301
+ idx: getExtensionElementId(businessObject, element),
116302
+ referencedElement
116303
+ });
116304
+ }
116305
+
116306
+ return result;
116307
+ }, []);
116308
+ }
116309
+
116310
+ function setRootElement(businessObject, rootElement, index) {
116311
+ const extensionElement = businessObject.get('extensionElements').get('values')[ index ];
116312
+
116313
+ extensionElement.set(getRootElementReferencePropertyName(extensionElement), rootElement);
116314
+ }
116315
+
116316
+ function getExtensionElementId(businessObject, extensionElement) {
116317
+ const extensionElements = businessObject.get('extensionElements');
116318
+
116319
+ if (!extensionElements) {
116320
+ return -1;
116321
+ }
116322
+
116323
+ return extensionElements.get('values').indexOf(extensionElement);
116449
116324
  }
116450
116325
 
116451
- DeleteParticipantBehaviour.$inject = [
116452
- 'eventBus',
116453
- 'canvas',
116454
- 'modeling'
116455
- ];
116456
-
116457
- const HIGH_PRIORITY$2 = 5000;
116458
-
116459
-
116460
- /**
116461
- * Camunda BPMN specific behavior ensuring camunda:FailedJobRetryTimeCycle is
116462
- * removed when both camunda:asyncAfter and camunda:asyncBefore set to false.
116463
- * Doesn't apply if element has bpmn:TimerEventDefinition.
116464
- */
116465
- class DeleteRetryTimeCycleBehavior extends CommandInterceptor$1 {
116466
- constructor(commandStack, eventBus) {
116467
- super(eventBus);
116468
-
116469
- this.postExecute([
116470
- 'element.updateProperties',
116471
- 'element.updateModdleProperties'
116472
- ], HIGH_PRIORITY$2, function(context) {
116473
- const {
116474
- element,
116475
- moddleElement,
116476
- properties = {}
116477
- } = context;
116478
-
116479
- const asyncAfter = properties[ 'camunda:asyncAfter' ],
116480
- asyncBefore = properties[ 'camunda:asyncBefore' ];
116481
-
116482
- const businessObject = moddleElement || getBusinessObject$1(element);
116483
-
116484
- const failedJobRetryTimeCycle = getFailedJobRetryTimeCycle(element);
116485
-
116486
- if (
116487
- !is$5(element, 'camunda:AsyncCapable')
116488
- || !is$5(businessObject, 'camunda:AsyncCapable')
116489
- || (asyncAfter !== false && asyncBefore !== false)
116490
- || !failedJobRetryTimeCycle
116491
- || getTimerEventDefinition(element)
116492
- || isAsyncBefore$1(businessObject)
116493
- || isAsyncAfter$1(businessObject)
116494
- ) {
116495
- return;
116496
- }
116497
-
116498
- removeExtensionElements(element, businessObject, failedJobRetryTimeCycle, commandStack);
116499
- }, true);
116500
-
116501
- }
116326
+ /**
116327
+ * Get extension elements of business object. Optionally filter by type.
116328
+ *
116329
+ * @param {djs.model.Base|ModdleElement} element
116330
+ * @param {String} [type=undefined]
116331
+ * @returns {Array<ModdleElement>}
116332
+ */
116333
+ function getExtensionElementsList(element, type = undefined) {
116334
+ const businessObject = getBusinessObject$1(element),
116335
+ extensionElements = businessObject.get('extensionElements');
116336
+
116337
+ if (!extensionElements) {
116338
+ return [];
116339
+ }
116340
+
116341
+ const values = extensionElements.get('values');
116342
+
116343
+ if (!values || !values.length) {
116344
+ return [];
116345
+ }
116346
+
116347
+ if (type) {
116348
+ return values.filter(value => is$5(value, type));
116349
+ }
116350
+
116351
+ return values;
116352
+ }
116353
+
116354
+ /**
116355
+ * Remove one or more extension elements. Remove bpmn:ExtensionElements afterwards if it's empty.
116356
+ *
116357
+ * @param {ModdleElement} element
116358
+ * @param {ModdleElement} businessObject
116359
+ * @param {ModdleElement|Array<ModdleElement>} extensionElementsToRemove
116360
+ * @param {CommandStack} commandStack
116361
+ */
116362
+ function removeExtensionElements(element, businessObject, extensionElementsToRemove, commandStack) {
116363
+ if (!isArray$4(extensionElementsToRemove)) {
116364
+ extensionElementsToRemove = [ extensionElementsToRemove ];
116365
+ }
116366
+
116367
+ const extensionElements = businessObject.get('extensionElements'),
116368
+ values = extensionElements.get('values').filter(value => !extensionElementsToRemove.includes(value));
116369
+
116370
+ commandStack.execute('element.updateModdleProperties', {
116371
+ element,
116372
+ moddleElement: extensionElements,
116373
+ properties: {
116374
+ values
116375
+ }
116376
+ });
116502
116377
  }
116503
116378
 
116504
- DeleteRetryTimeCycleBehavior.$inject = [
116505
- 'commandStack',
116506
- 'eventBus'
116379
+ const HIGH_PRIORITY$3 = 5000;
116380
+
116381
+
116382
+ /**
116383
+ * Camunda BPMN specific behavior ensuring camunda:ErrorEventDefinition extension elements are removed
116384
+ * if type of e.g. bpmn:ServiceTask is set to something other than external.
116385
+ */
116386
+ class DeleteErrorEventDefinitionBehavior extends CommandInterceptor$1 {
116387
+ constructor(commandStack, eventBus) {
116388
+ super(eventBus);
116389
+
116390
+ this.postExecute([
116391
+ 'element.updateProperties',
116392
+ 'element.updateModdleProperties'
116393
+ ], HIGH_PRIORITY$3, function(context) {
116394
+ const {
116395
+ element,
116396
+ moddleElement,
116397
+ properties
116398
+ } = context;
116399
+
116400
+ const businessObject = moddleElement || getBusinessObject$1(element);
116401
+
116402
+ if (is$5(element, 'camunda:ExternalCapable')
116403
+ && is$5(businessObject, 'camunda:ExternalCapable')
116404
+ && properties[ 'camunda:type' ] !== 'external'
116405
+ ) {
116406
+ const errorEventDefinitions = getExtensionElementsList(businessObject, 'camunda:ErrorEventDefinition');
116407
+
116408
+ if (errorEventDefinitions.length) {
116409
+ removeExtensionElements(element, businessObject, errorEventDefinitions, commandStack);
116410
+ }
116411
+ }
116412
+ }, true);
116413
+
116414
+ }
116415
+ }
116416
+
116417
+ DeleteErrorEventDefinitionBehavior.$inject = [
116418
+ 'commandStack',
116419
+ 'eventBus'
116507
116420
  ];
116508
116421
 
116509
-
116510
- // helpers //////////
116511
-
116512
- function isAsyncBefore$1(businessObject) {
116513
- return !!(businessObject.get('camunda:asyncBefore') || businessObject.get('camunda:async'));
116514
- }
116515
-
116516
- function isAsyncAfter$1(businessObject) {
116517
- return !!businessObject.get('camunda:asyncAfter');
116518
- }
116519
-
116520
- function getFailedJobRetryTimeCycle(element) {
116521
- return getExtensionElementsList(element, 'camunda:FailedJobRetryTimeCycle')[ 0 ];
116522
- }
116523
-
116524
- function getTimerEventDefinition(element) {
116525
- return getEventDefinition$1(element, 'bpmn:TimerEventDefinition');
116526
- }
116527
-
116528
- function getEventDefinition$1(element, type) {
116529
- const businessObject = getBusinessObject$1(element);
116530
-
116531
- const eventDefinitions = businessObject.get('eventDefinitions');
116532
-
116533
- if (!eventDefinitions || !eventDefinitions.length) {
116534
- return;
116535
- }
116536
-
116537
- return eventDefinitions.find((eventDefinition) => {
116538
- return is$5(eventDefinition, type);
116539
- });
116540
- }
116541
-
116542
- /**
116543
- * Camunda BPMN specific behavior ensuring camunda:initiator property is removed
116544
- * when start event is created in or moved to sub process.
116545
- */
116546
- class RemoveInitiatorBehaviour extends CommandInterceptor$1 {
116547
- constructor(eventBus, modeling) {
116548
- super(eventBus);
116549
-
116550
- this.postExecuted([ 'shape.create','shape.move' ], (context) => {
116551
- const {
116552
- shape,
116553
- parent,
116554
- newParent = parent
116555
- } = context;
116556
-
116557
- const businessObject = getBusinessObject$1(shape);
116558
-
116559
- if (is$5(shape, 'bpmn:StartEvent') && isDefined(businessObject.get('camunda:initiator'))) {
116560
- if ((is$5(newParent || parent, 'bpmn:SubProcess'))) {
116561
- modeling.updateProperties(shape, { 'camunda:initiator': undefined });
116562
- }
116563
- }
116564
- }, true);
116565
- }
116566
- }
116567
-
116568
- RemoveInitiatorBehaviour.$inject = [
116569
- 'eventBus',
116570
- 'modeling'
116422
+ const LOW_PRIORITY$2 = 250;
116423
+
116424
+ /**
116425
+ * Camunda-specific behavior ensuring `isExecutable` is kept after deleting
116426
+ * the last participant.
116427
+ */
116428
+ class DeleteParticipantBehaviour extends CommandInterceptor$1 {
116429
+ constructor(eventBus, canvas, modeling) {
116430
+ super(eventBus);
116431
+
116432
+ this.postExecuted('shape.delete', LOW_PRIORITY$2, function(context) {
116433
+ const {
116434
+ collaborationRoot,
116435
+ shape
116436
+ } = context;
116437
+
116438
+ const newRoot = canvas.getRootElement();
116439
+
116440
+ if (is$5(shape, 'bpmn:Participant') &&
116441
+ collaborationRoot &&
116442
+ !collaborationRoot.businessObject.get('participants').length &&
116443
+ is$5(newRoot, 'bpmn:Process')) {
116444
+
116445
+ const oldProcessBusinessObject = shape.businessObject.get('processRef');
116446
+
116447
+ if (!oldProcessBusinessObject) {
116448
+ return;
116449
+ }
116450
+
116451
+ modeling.updateProperties(newRoot, { isExecutable: oldProcessBusinessObject.get('isExecutable') });
116452
+ }
116453
+
116454
+ }, true);
116455
+ }
116456
+ }
116457
+
116458
+ DeleteParticipantBehaviour.$inject = [
116459
+ 'eventBus',
116460
+ 'canvas',
116461
+ 'modeling'
116571
116462
  ];
116572
116463
 
116573
- /**
116574
- * Camunda BPMN specific behavior ensuring camunda:variableEvents property is
116575
- * removed when start event is moved out of event sub process.
116576
- */
116577
- class RemoveVariableEventBehaviour extends CommandInterceptor$1 {
116578
- constructor(bpmnFactory, eventBus, moddleCopy, modeling) {
116579
- super(eventBus);
116580
-
116581
- this.postExecuted([ 'shape.create', 'shape.move' ], (context) => {
116582
- const {
116583
- parent,
116584
- newParent = parent,
116585
- shape
116586
- } = context;
116587
-
116588
- const newParentBusinessObject = getBusinessObject$1(newParent),
116589
- shapeBusinessObject = getBusinessObject$1(shape);
116590
-
116591
- if (is$5(shape, 'bpmn:StartEvent')) {
116592
-
116593
- if (!(is$5(newParent, 'bpmn:SubProcess') && newParentBusinessObject.get('triggeredByEvent'))) {
116594
- const eventDefinitions = shapeBusinessObject.get('eventDefinitions').slice();
116595
-
116596
- const update = eventDefinitions.reduce((update, eventDefinition, index) => {
116597
- if (!is$5(eventDefinition, 'bpmn:ConditionalEventDefinition')) {
116598
- return;
116599
- }
116600
-
116601
- if (eventDefinition.get('camunda:variableEvents')) {
116602
- const conditionalEventDefinition = bpmnFactory.create('bpmn:ConditionalEventDefinition');
116603
-
116604
- moddleCopy.copyElement(eventDefinition, conditionalEventDefinition);
116605
-
116606
- conditionalEventDefinition.$parent = eventDefinition.$parent;
116607
-
116608
- // remove camunda:variableEvents property
116609
- conditionalEventDefinition.variableEvents = undefined;
116610
-
116611
- eventDefinitions[ index ] = conditionalEventDefinition;
116612
-
116613
- return true;
116614
- }
116615
-
116616
- return update;
116617
- }, false);
116618
-
116619
- if (update) {
116620
- modeling.updateProperties(shape, {
116621
- eventDefinitions: eventDefinitions
116622
- });
116623
- }
116624
- }
116625
- }
116626
- }, true);
116627
- }
116464
+ const HIGH_PRIORITY$2 = 5000;
116465
+
116466
+
116467
+ /**
116468
+ * Camunda BPMN specific behavior ensuring camunda:FailedJobRetryTimeCycle is
116469
+ * removed when both camunda:asyncAfter and camunda:asyncBefore set to false.
116470
+ * Doesn't apply if element has bpmn:TimerEventDefinition.
116471
+ */
116472
+ class DeleteRetryTimeCycleBehavior extends CommandInterceptor$1 {
116473
+ constructor(commandStack, eventBus) {
116474
+ super(eventBus);
116475
+
116476
+ this.postExecute([
116477
+ 'element.updateProperties',
116478
+ 'element.updateModdleProperties'
116479
+ ], HIGH_PRIORITY$2, function(context) {
116480
+ const {
116481
+ element,
116482
+ moddleElement,
116483
+ properties = {}
116484
+ } = context;
116485
+
116486
+ const asyncAfter = properties[ 'camunda:asyncAfter' ],
116487
+ asyncBefore = properties[ 'camunda:asyncBefore' ];
116488
+
116489
+ const businessObject = moddleElement || getBusinessObject$1(element);
116490
+
116491
+ const failedJobRetryTimeCycle = getFailedJobRetryTimeCycle(element);
116492
+
116493
+ if (
116494
+ !is$5(element, 'camunda:AsyncCapable')
116495
+ || !is$5(businessObject, 'camunda:AsyncCapable')
116496
+ || (asyncAfter !== false && asyncBefore !== false)
116497
+ || !failedJobRetryTimeCycle
116498
+ || getTimerEventDefinition(element)
116499
+ || isAsyncBefore$1(businessObject)
116500
+ || isAsyncAfter$1(businessObject)
116501
+ ) {
116502
+ return;
116503
+ }
116504
+
116505
+ removeExtensionElements(element, businessObject, failedJobRetryTimeCycle, commandStack);
116506
+ }, true);
116507
+
116508
+ }
116509
+ }
116510
+
116511
+ DeleteRetryTimeCycleBehavior.$inject = [
116512
+ 'commandStack',
116513
+ 'eventBus'
116514
+ ];
116515
+
116516
+
116517
+ // helpers //////////
116518
+
116519
+ function isAsyncBefore$1(businessObject) {
116520
+ return !!(businessObject.get('camunda:asyncBefore') || businessObject.get('camunda:async'));
116521
+ }
116522
+
116523
+ function isAsyncAfter$1(businessObject) {
116524
+ return !!businessObject.get('camunda:asyncAfter');
116525
+ }
116526
+
116527
+ function getFailedJobRetryTimeCycle(element) {
116528
+ return getExtensionElementsList(element, 'camunda:FailedJobRetryTimeCycle')[ 0 ];
116529
+ }
116530
+
116531
+ function getTimerEventDefinition(element) {
116532
+ return getEventDefinition$1(element, 'bpmn:TimerEventDefinition');
116533
+ }
116534
+
116535
+ function getEventDefinition$1(element, type) {
116536
+ const businessObject = getBusinessObject$1(element);
116537
+
116538
+ const eventDefinitions = businessObject.get('eventDefinitions');
116539
+
116540
+ if (!eventDefinitions || !eventDefinitions.length) {
116541
+ return;
116542
+ }
116543
+
116544
+ return eventDefinitions.find((eventDefinition) => {
116545
+ return is$5(eventDefinition, type);
116546
+ });
116628
116547
  }
116629
116548
 
116630
- RemoveVariableEventBehaviour.$inject = [
116631
- 'bpmnFactory',
116632
- 'eventBus',
116633
- 'moddleCopy',
116634
- 'modeling'
116549
+ /**
116550
+ * Camunda BPMN specific behavior ensuring camunda:initiator property is removed
116551
+ * when start event is created in or moved to sub process.
116552
+ */
116553
+ class RemoveInitiatorBehaviour extends CommandInterceptor$1 {
116554
+ constructor(eventBus, modeling) {
116555
+ super(eventBus);
116556
+
116557
+ this.postExecuted([ 'shape.create','shape.move' ], (context) => {
116558
+ const {
116559
+ shape,
116560
+ parent,
116561
+ newParent = parent
116562
+ } = context;
116563
+
116564
+ const businessObject = getBusinessObject$1(shape);
116565
+
116566
+ if (is$5(shape, 'bpmn:StartEvent') && isDefined(businessObject.get('camunda:initiator'))) {
116567
+ if ((is$5(newParent || parent, 'bpmn:SubProcess'))) {
116568
+ modeling.updateProperties(shape, { 'camunda:initiator': undefined });
116569
+ }
116570
+ }
116571
+ }, true);
116572
+ }
116573
+ }
116574
+
116575
+ RemoveInitiatorBehaviour.$inject = [
116576
+ 'eventBus',
116577
+ 'modeling'
116635
116578
  ];
116636
116579
 
116637
- const HIGH_PRIORITY$1 = 5000;
116638
-
116639
-
116640
- /**
116641
- * Camunda BPMN specific behavior ensuring camunda:exclusive is set to true if
116642
- * camunda:asyncBefore or camunda:asyncAfter is set to false.
116643
- */
116644
- class UpdateCamundaExclusiveBehavior extends CommandInterceptor$1 {
116645
- constructor(eventBus) {
116646
- super(eventBus);
116647
-
116648
- this.preExecute([
116649
- 'element.updateProperties',
116650
- 'element.updateModdleProperties',
116651
- ], HIGH_PRIORITY$1, function(context) {
116652
- const {
116653
- element,
116654
- moddleElement,
116655
- properties = {}
116656
- } = context;
116657
-
116658
- const businessObject = moddleElement || getBusinessObject$1(element);
116659
-
116660
- const asyncAfter = properties[ 'camunda:asyncAfter' ],
116661
- asyncBefore = properties[ 'camunda:asyncBefore' ];
116662
-
116663
- if (!is$5(element, 'camunda:AsyncCapable')
116664
- || !is$5(businessObject, 'camunda:AsyncCapable')
116665
- || (asyncAfter !== false && asyncBefore !== false)
116666
- || isExclusive(businessObject)
116667
- || (isAsyncAfter(businessObject) && asyncAfter !== false)
116668
- || (isAsyncBefore(businessObject) && asyncBefore !== false)
116669
- || (asyncAfter === true || asyncBefore === true)
116670
- ) {
116671
- return;
116672
- }
116673
-
116674
- properties[ 'camunda:exclusive' ] = true;
116675
- }, true);
116676
-
116677
- }
116678
- }
116679
-
116680
- UpdateCamundaExclusiveBehavior.$inject = [
116681
- 'eventBus'
116580
+ /**
116581
+ * Camunda BPMN specific behavior ensuring camunda:variableEvents property is
116582
+ * removed when start event is moved out of event sub process.
116583
+ */
116584
+ class RemoveVariableEventBehaviour extends CommandInterceptor$1 {
116585
+ constructor(bpmnFactory, eventBus, moddleCopy, modeling) {
116586
+ super(eventBus);
116587
+
116588
+ this.postExecuted([ 'shape.create', 'shape.move' ], (context) => {
116589
+ const {
116590
+ parent,
116591
+ newParent = parent,
116592
+ shape
116593
+ } = context;
116594
+
116595
+ const newParentBusinessObject = getBusinessObject$1(newParent),
116596
+ shapeBusinessObject = getBusinessObject$1(shape);
116597
+
116598
+ if (is$5(shape, 'bpmn:StartEvent')) {
116599
+
116600
+ if (!(is$5(newParent, 'bpmn:SubProcess') && newParentBusinessObject.get('triggeredByEvent'))) {
116601
+ const eventDefinitions = shapeBusinessObject.get('eventDefinitions').slice();
116602
+
116603
+ const update = eventDefinitions.reduce((update, eventDefinition, index) => {
116604
+ if (!is$5(eventDefinition, 'bpmn:ConditionalEventDefinition')) {
116605
+ return;
116606
+ }
116607
+
116608
+ if (eventDefinition.get('camunda:variableEvents')) {
116609
+ const conditionalEventDefinition = bpmnFactory.create('bpmn:ConditionalEventDefinition');
116610
+
116611
+ moddleCopy.copyElement(eventDefinition, conditionalEventDefinition);
116612
+
116613
+ conditionalEventDefinition.$parent = eventDefinition.$parent;
116614
+
116615
+ // remove camunda:variableEvents property
116616
+ conditionalEventDefinition.variableEvents = undefined;
116617
+
116618
+ eventDefinitions[ index ] = conditionalEventDefinition;
116619
+
116620
+ return true;
116621
+ }
116622
+
116623
+ return update;
116624
+ }, false);
116625
+
116626
+ if (update) {
116627
+ modeling.updateProperties(shape, {
116628
+ eventDefinitions: eventDefinitions
116629
+ });
116630
+ }
116631
+ }
116632
+ }
116633
+ }, true);
116634
+ }
116635
+ }
116636
+
116637
+ RemoveVariableEventBehaviour.$inject = [
116638
+ 'bpmnFactory',
116639
+ 'eventBus',
116640
+ 'moddleCopy',
116641
+ 'modeling'
116682
116642
  ];
116683
116643
 
116684
-
116685
- // helpers //////////
116686
-
116687
- function isAsyncBefore(businessObject) {
116688
- return !!(businessObject.get('camunda:asyncBefore') || businessObject.get('camunda:async'));
116689
- }
116690
-
116691
- function isAsyncAfter(businessObject) {
116692
- return !!businessObject.get('camunda:asyncAfter');
116693
- }
116694
-
116695
- function isExclusive(businessObject) {
116696
- return !!businessObject.get('camunda:exclusive');
116697
- }
116698
-
116699
- function getInputParameters$1(inputOutput) {
116700
- return inputOutput.get('inputParameters');
116701
- }
116702
-
116703
- function getOutputParameters$1(inputOutput) {
116704
- return inputOutput.get('outputParameters');
116705
- }
116706
-
116707
- function isInputOutputEmpty(inputOutput) {
116708
- const inputParameters = getInputParameters$1(inputOutput);
116709
- const outputParameters = getOutputParameters$1(inputOutput);
116710
-
116711
- return !inputParameters.length && !outputParameters.length;
116712
- }
116713
-
116714
- const LOW_PRIORITY$1 = 250;
116715
-
116716
-
116717
- /**
116718
- * Camunda BPMN specific behavior ensuring empty camunda:InputOutput is removed.
116719
- */
116720
- class UpdateInputOutputBehavior extends CommandInterceptor$1 {
116721
- constructor(commandStack, eventBus) {
116722
- super(eventBus);
116723
-
116724
- this.postExecuted('element.updateModdleProperties', LOW_PRIORITY$1, function(context) {
116725
- const {
116726
- element,
116727
- moddleElement
116728
- } = context;
116729
-
116730
- if (!is$5(moddleElement, 'camunda:InputOutput')) {
116731
- return;
116732
- }
116733
-
116734
- if (isInputOutputEmpty(moddleElement)) {
116735
- removeExtensionElements(element, getBusinessObject$1(element), moddleElement, commandStack);
116736
- }
116737
- }, true);
116738
- }
116644
+ const HIGH_PRIORITY$1 = 5000;
116645
+
116646
+
116647
+ /**
116648
+ * Camunda BPMN specific behavior ensuring camunda:exclusive is set to true if
116649
+ * camunda:asyncBefore or camunda:asyncAfter is set to false.
116650
+ */
116651
+ class UpdateCamundaExclusiveBehavior extends CommandInterceptor$1 {
116652
+ constructor(eventBus) {
116653
+ super(eventBus);
116654
+
116655
+ this.preExecute([
116656
+ 'element.updateProperties',
116657
+ 'element.updateModdleProperties',
116658
+ ], HIGH_PRIORITY$1, function(context) {
116659
+ const {
116660
+ element,
116661
+ moddleElement,
116662
+ properties = {}
116663
+ } = context;
116664
+
116665
+ const businessObject = moddleElement || getBusinessObject$1(element);
116666
+
116667
+ const asyncAfter = properties[ 'camunda:asyncAfter' ],
116668
+ asyncBefore = properties[ 'camunda:asyncBefore' ];
116669
+
116670
+ if (!is$5(element, 'camunda:AsyncCapable')
116671
+ || !is$5(businessObject, 'camunda:AsyncCapable')
116672
+ || (asyncAfter !== false && asyncBefore !== false)
116673
+ || isExclusive(businessObject)
116674
+ || (isAsyncAfter(businessObject) && asyncAfter !== false)
116675
+ || (isAsyncBefore(businessObject) && asyncBefore !== false)
116676
+ || (asyncAfter === true || asyncBefore === true)
116677
+ ) {
116678
+ return;
116679
+ }
116680
+
116681
+ properties[ 'camunda:exclusive' ] = true;
116682
+ }, true);
116683
+
116684
+ }
116685
+ }
116686
+
116687
+ UpdateCamundaExclusiveBehavior.$inject = [
116688
+ 'eventBus'
116689
+ ];
116690
+
116691
+
116692
+ // helpers //////////
116693
+
116694
+ function isAsyncBefore(businessObject) {
116695
+ return !!(businessObject.get('camunda:asyncBefore') || businessObject.get('camunda:async'));
116696
+ }
116697
+
116698
+ function isAsyncAfter(businessObject) {
116699
+ return !!businessObject.get('camunda:asyncAfter');
116700
+ }
116701
+
116702
+ function isExclusive(businessObject) {
116703
+ return !!businessObject.get('camunda:exclusive');
116739
116704
  }
116740
116705
 
116741
- UpdateInputOutputBehavior.$inject = [
116742
- 'commandStack',
116743
- 'eventBus'
116744
- ];
116745
-
116746
- const HIGH_PRIORITY = 5000;
116747
-
116748
-
116749
- /**
116750
- * Camunda BPMN specific camunda:resultVariable behavior ensuring
116751
- * camunda:mapDecisionResult is removed when camunda:resultVariable is removed.
116752
- */
116753
- class UpdateResultVariableBehavior extends CommandInterceptor$1 {
116754
- constructor(eventBus) {
116755
- super(eventBus);
116756
-
116757
- this.preExecute([
116758
- 'element.updateProperties',
116759
- 'element.updateModdleProperties'
116760
- ], HIGH_PRIORITY, function(context) {
116761
- const {
116762
- element,
116763
- moddleElement,
116764
- properties
116765
- } = context;
116766
-
116767
- const businessObject = moddleElement || getBusinessObject$1(element);
116768
-
116769
- if (
116770
- is$5(element, 'camunda:DmnCapable')
116771
- && is$5(businessObject, 'camunda:DmnCapable')
116772
- && has$2(properties, 'camunda:resultVariable')
116773
- && isEmpty(properties[ 'camunda:resultVariable' ])
116774
- ) {
116775
- properties[ 'camunda:mapDecisionResult' ] = undefined;
116776
- }
116777
- }, true);
116778
-
116779
- }
116706
+ function getInputParameters$1(inputOutput) {
116707
+ return inputOutput.get('inputParameters');
116708
+ }
116709
+
116710
+ function getOutputParameters$1(inputOutput) {
116711
+ return inputOutput.get('outputParameters');
116712
+ }
116713
+
116714
+ function isInputOutputEmpty(inputOutput) {
116715
+ const inputParameters = getInputParameters$1(inputOutput);
116716
+ const outputParameters = getOutputParameters$1(inputOutput);
116717
+
116718
+ return !inputParameters.length && !outputParameters.length;
116780
116719
  }
116781
116720
 
116782
- UpdateResultVariableBehavior.$inject = [
116783
- 'eventBus'
116721
+ const LOW_PRIORITY$1 = 250;
116722
+
116723
+
116724
+ /**
116725
+ * Camunda BPMN specific behavior ensuring empty camunda:InputOutput is removed.
116726
+ */
116727
+ class UpdateInputOutputBehavior extends CommandInterceptor$1 {
116728
+ constructor(commandStack, eventBus) {
116729
+ super(eventBus);
116730
+
116731
+ this.postExecuted('element.updateModdleProperties', LOW_PRIORITY$1, function(context) {
116732
+ const {
116733
+ element,
116734
+ moddleElement
116735
+ } = context;
116736
+
116737
+ if (!is$5(moddleElement, 'camunda:InputOutput')) {
116738
+ return;
116739
+ }
116740
+
116741
+ if (isInputOutputEmpty(moddleElement)) {
116742
+ removeExtensionElements(element, getBusinessObject$1(element), moddleElement, commandStack);
116743
+ }
116744
+ }, true);
116745
+ }
116746
+ }
116747
+
116748
+ UpdateInputOutputBehavior.$inject = [
116749
+ 'commandStack',
116750
+ 'eventBus'
116784
116751
  ];
116785
116752
 
116786
- // helpers //////////
116787
-
116788
- function isEmpty(value) {
116789
- return value == undefined || value === '';
116753
+ const HIGH_PRIORITY = 5000;
116754
+
116755
+
116756
+ /**
116757
+ * Camunda BPMN specific camunda:resultVariable behavior ensuring
116758
+ * camunda:mapDecisionResult is removed when camunda:resultVariable is removed.
116759
+ */
116760
+ class UpdateResultVariableBehavior extends CommandInterceptor$1 {
116761
+ constructor(eventBus) {
116762
+ super(eventBus);
116763
+
116764
+ this.preExecute([
116765
+ 'element.updateProperties',
116766
+ 'element.updateModdleProperties'
116767
+ ], HIGH_PRIORITY, function(context) {
116768
+ const {
116769
+ element,
116770
+ moddleElement,
116771
+ properties
116772
+ } = context;
116773
+
116774
+ const businessObject = moddleElement || getBusinessObject$1(element);
116775
+
116776
+ if (
116777
+ is$5(element, 'camunda:DmnCapable')
116778
+ && is$5(businessObject, 'camunda:DmnCapable')
116779
+ && has$2(properties, 'camunda:resultVariable')
116780
+ && isEmpty(properties[ 'camunda:resultVariable' ])
116781
+ ) {
116782
+ properties[ 'camunda:mapDecisionResult' ] = undefined;
116783
+ }
116784
+ }, true);
116785
+
116786
+ }
116787
+ }
116788
+
116789
+ UpdateResultVariableBehavior.$inject = [
116790
+ 'eventBus'
116791
+ ];
116792
+
116793
+ // helpers //////////
116794
+
116795
+ function isEmpty(value) {
116796
+ return value == undefined || value === '';
116790
116797
  }
116791
116798
 
116792
- /**
116793
- * Camunda BPMN specific user task forms behavior.
116794
- */
116795
- let UserTaskFormsBehavior$1 = class UserTaskFormsBehavior extends CommandInterceptor$1 {
116796
- constructor(eventBus) {
116797
- super(eventBus);
116798
-
116799
- /**
116800
- * Ensure that only one of the following options is configured:
116801
- *
116802
- * 1. embedded, external or Camunda forms using camunda:formKey
116803
- * 2. Camunda forms using camunda:formRef
116804
- */
116805
- this.preExecute([
116806
- 'element.updateProperties',
116807
- 'element.updateModdleProperties'
116808
- ], function(context) {
116809
- const {
116810
- element,
116811
- moddleElement,
116812
- properties
116813
- } = context;
116814
-
116815
- const businessObject = moddleElement || getBusinessObject$1(element);
116816
-
116817
- if (has$2(properties, 'camunda:formKey')) {
116818
- Object.assign(properties, {
116819
- 'camunda:formRef': undefined,
116820
- 'camunda:formRefBinding': undefined,
116821
- 'camunda:formRefVersion': undefined
116822
- });
116823
- } else if (has$2(properties, 'camunda:formRef')) {
116824
- Object.assign(properties, {
116825
- 'camunda:formKey': undefined
116826
- });
116827
-
116828
- if (isUndefined$4(properties[ 'camunda:formRef' ])) {
116829
- Object.assign(properties, {
116830
- 'camunda:formRefBinding': undefined,
116831
- 'camunda:formRefVersion': undefined
116832
- });
116833
- }
116834
-
116835
- if (!has$2(properties, 'camunda:formRefBinding') && isUndefined$4(businessObject.get('camunda:formRefBinding'))) {
116836
- Object.assign(properties, {
116837
- 'camunda:formRefBinding': 'latest'
116838
- });
116839
- }
116840
- }
116841
-
116842
- if (has$2(properties, 'camunda:formRefBinding') && properties[ 'camunda:formRefBinding' ] !== 'version') {
116843
- Object.assign(properties, {
116844
- 'camunda:formRefVersion': undefined
116845
- });
116846
- }
116847
- }, true);
116848
-
116849
- }
116850
- };
116851
-
116799
+ /**
116800
+ * Camunda BPMN specific user task forms behavior.
116801
+ */
116802
+ let UserTaskFormsBehavior$1 = class UserTaskFormsBehavior extends CommandInterceptor$1 {
116803
+ constructor(eventBus) {
116804
+ super(eventBus);
116805
+
116806
+ /**
116807
+ * Ensure that only one of the following options is configured:
116808
+ *
116809
+ * 1. embedded, external or Camunda forms using camunda:formKey
116810
+ * 2. Camunda forms using camunda:formRef
116811
+ */
116812
+ this.preExecute([
116813
+ 'element.updateProperties',
116814
+ 'element.updateModdleProperties'
116815
+ ], function(context) {
116816
+ const {
116817
+ element,
116818
+ moddleElement,
116819
+ properties
116820
+ } = context;
116821
+
116822
+ const businessObject = moddleElement || getBusinessObject$1(element);
116823
+
116824
+ if (has$2(properties, 'camunda:formKey')) {
116825
+ Object.assign(properties, {
116826
+ 'camunda:formRef': undefined,
116827
+ 'camunda:formRefBinding': undefined,
116828
+ 'camunda:formRefVersion': undefined
116829
+ });
116830
+ } else if (has$2(properties, 'camunda:formRef')) {
116831
+ Object.assign(properties, {
116832
+ 'camunda:formKey': undefined
116833
+ });
116834
+
116835
+ if (isUndefined$4(properties[ 'camunda:formRef' ])) {
116836
+ Object.assign(properties, {
116837
+ 'camunda:formRefBinding': undefined,
116838
+ 'camunda:formRefVersion': undefined
116839
+ });
116840
+ }
116841
+
116842
+ if (!has$2(properties, 'camunda:formRefBinding') && isUndefined$4(businessObject.get('camunda:formRefBinding'))) {
116843
+ Object.assign(properties, {
116844
+ 'camunda:formRefBinding': 'latest'
116845
+ });
116846
+ }
116847
+ }
116848
+
116849
+ if (has$2(properties, 'camunda:formRefBinding') && properties[ 'camunda:formRefBinding' ] !== 'version') {
116850
+ Object.assign(properties, {
116851
+ 'camunda:formRefVersion': undefined
116852
+ });
116853
+ }
116854
+ }, true);
116855
+
116856
+ }
116857
+ };
116858
+
116852
116859
  UserTaskFormsBehavior$1.$inject = [ 'eventBus' ];
116853
116860
 
116854
- /**
116855
- * Camunda BPMN specific user task generated forms behavior.
116856
- *
116857
- * 1. Removes camunda:FormField#values if camunda:FormField#type is changed to something other than enum.
116858
- * 2. Updates camunda:FormData#businessKey if camunda:FormField#id is changed.
116859
- * 3. Removes camunda:FormData#businessKey if camunda:FormField is removed.
116860
- */
116861
- class UserTaskFormsBehavior extends CommandInterceptor$1 {
116862
- constructor(eventBus, modeling) {
116863
- super(eventBus);
116864
-
116865
- /**
116866
- * Remove camunda:FormField#values if camunda:FormField#type is changed to
116867
- * something other than enum.
116868
- */
116869
- this.preExecute('element.updateModdleProperties', function(context) {
116870
- const {
116871
- moddleElement,
116872
- properties
116873
- } = context;
116874
-
116875
- if (!is$5(moddleElement, 'camunda:FormField')) {
116876
- return;
116877
- }
116878
-
116879
- if (
116880
- ('type' in properties && properties[ 'type' ] !== 'enum')
116881
- || 'camunda:type' in properties && properties[ 'camunda:type' ] !== 'enum'
116882
- ) {
116883
- properties[ 'camunda:values' ] = undefined;
116884
- }
116885
- }, true);
116886
-
116887
- /**
116888
- * Update camunda:FormData#businessKey if camunda:FormField#id is changed.
116889
- */
116890
- this.preExecute('element.updateModdleProperties', function(context) {
116891
- const {
116892
- element,
116893
- moddleElement,
116894
- properties
116895
- } = context;
116896
-
116897
- if (!is$5(moddleElement, 'camunda:FormField')
116898
- || (!has$2(properties, 'id') && !has$2(properties, 'camunda:id'))
116899
- ) {
116900
- return;
116901
- }
116902
-
116903
- const formData = getFormData(element);
116904
-
116905
- const businessKey = formData.get('camunda:businessKey');
116906
-
116907
- if (!businessKey) {
116908
- return;
116909
- }
116910
-
116911
- if (isBusinessKey(moddleElement, formData)) {
116912
- modeling.updateModdleProperties(element, formData, {
116913
- 'camunda:businessKey': has$2(properties, 'id') ? properties.id : properties[ 'camunda:id' ]
116914
- });
116915
- }
116916
- }, true);
116917
-
116918
- /**
116919
- * Remove camunda:FormData#businessKey if camunda:FormField is removed.
116920
- */
116921
- this.postExecute('element.updateModdleProperties', function(context) {
116922
- const {
116923
- element,
116924
- moddleElement,
116925
- properties
116926
- } = context;
116927
-
116928
- if (!is$5(moddleElement, 'camunda:FormData') || !has$2(properties, 'fields')) {
116929
- return;
116930
- }
116931
-
116932
- const businessKey = moddleElement.get('camunda:businessKey');
116933
-
116934
- if (!businessKey) {
116935
- return;
116936
- }
116937
-
116938
- const fieldWithBusinessKey = moddleElement.get('fields').find(field => {
116939
- return field.get('camunda:id') === businessKey;
116940
- });
116941
-
116942
- if (!fieldWithBusinessKey) {
116943
- modeling.updateModdleProperties(element, moddleElement, {
116944
- 'camunda:businessKey': undefined
116945
- });
116946
- }
116947
- }, true);
116948
- }
116949
- }
116950
-
116951
-
116952
- UserTaskFormsBehavior.$inject = [ 'eventBus', 'modeling' ];
116953
-
116954
- // helpers //////////
116955
-
116956
- function isBusinessKey(formField, formData) {
116957
- return formField.get('camunda:id') === formData.get('camunda:businessKey');
116958
- }
116959
-
116960
- function getFormData(element) {
116961
- const businessObject = getBusinessObject$1(element),
116962
- extensionElements = businessObject.get('extensionElements');
116963
-
116964
- if (!extensionElements) {
116965
- return;
116966
- }
116967
-
116968
- const values = extensionElements.get('values');
116969
-
116970
- return values.find((value) => {
116971
- return is$5(value, 'camunda:FormData');
116972
- });
116861
+ /**
116862
+ * Camunda BPMN specific user task generated forms behavior.
116863
+ *
116864
+ * 1. Removes camunda:FormField#values if camunda:FormField#type is changed to something other than enum.
116865
+ * 2. Updates camunda:FormData#businessKey if camunda:FormField#id is changed.
116866
+ * 3. Removes camunda:FormData#businessKey if camunda:FormField is removed.
116867
+ */
116868
+ class UserTaskFormsBehavior extends CommandInterceptor$1 {
116869
+ constructor(eventBus, modeling) {
116870
+ super(eventBus);
116871
+
116872
+ /**
116873
+ * Remove camunda:FormField#values if camunda:FormField#type is changed to
116874
+ * something other than enum.
116875
+ */
116876
+ this.preExecute('element.updateModdleProperties', function(context) {
116877
+ const {
116878
+ moddleElement,
116879
+ properties
116880
+ } = context;
116881
+
116882
+ if (!is$5(moddleElement, 'camunda:FormField')) {
116883
+ return;
116884
+ }
116885
+
116886
+ if (
116887
+ ('type' in properties && properties[ 'type' ] !== 'enum')
116888
+ || 'camunda:type' in properties && properties[ 'camunda:type' ] !== 'enum'
116889
+ ) {
116890
+ properties[ 'camunda:values' ] = undefined;
116891
+ }
116892
+ }, true);
116893
+
116894
+ /**
116895
+ * Update camunda:FormData#businessKey if camunda:FormField#id is changed.
116896
+ */
116897
+ this.preExecute('element.updateModdleProperties', function(context) {
116898
+ const {
116899
+ element,
116900
+ moddleElement,
116901
+ properties
116902
+ } = context;
116903
+
116904
+ if (!is$5(moddleElement, 'camunda:FormField')
116905
+ || (!has$2(properties, 'id') && !has$2(properties, 'camunda:id'))
116906
+ ) {
116907
+ return;
116908
+ }
116909
+
116910
+ const formData = getFormData(element);
116911
+
116912
+ const businessKey = formData.get('camunda:businessKey');
116913
+
116914
+ if (!businessKey) {
116915
+ return;
116916
+ }
116917
+
116918
+ if (isBusinessKey(moddleElement, formData)) {
116919
+ modeling.updateModdleProperties(element, formData, {
116920
+ 'camunda:businessKey': has$2(properties, 'id') ? properties.id : properties[ 'camunda:id' ]
116921
+ });
116922
+ }
116923
+ }, true);
116924
+
116925
+ /**
116926
+ * Remove camunda:FormData#businessKey if camunda:FormField is removed.
116927
+ */
116928
+ this.postExecute('element.updateModdleProperties', function(context) {
116929
+ const {
116930
+ element,
116931
+ moddleElement,
116932
+ properties
116933
+ } = context;
116934
+
116935
+ if (!is$5(moddleElement, 'camunda:FormData') || !has$2(properties, 'fields')) {
116936
+ return;
116937
+ }
116938
+
116939
+ const businessKey = moddleElement.get('camunda:businessKey');
116940
+
116941
+ if (!businessKey) {
116942
+ return;
116943
+ }
116944
+
116945
+ const fieldWithBusinessKey = moddleElement.get('fields').find(field => {
116946
+ return field.get('camunda:id') === businessKey;
116947
+ });
116948
+
116949
+ if (!fieldWithBusinessKey) {
116950
+ modeling.updateModdleProperties(element, moddleElement, {
116951
+ 'camunda:businessKey': undefined
116952
+ });
116953
+ }
116954
+ }, true);
116955
+ }
116956
+ }
116957
+
116958
+
116959
+ UserTaskFormsBehavior.$inject = [ 'eventBus', 'modeling' ];
116960
+
116961
+ // helpers //////////
116962
+
116963
+ function isBusinessKey(formField, formData) {
116964
+ return formField.get('camunda:id') === formData.get('camunda:businessKey');
116965
+ }
116966
+
116967
+ function getFormData(element) {
116968
+ const businessObject = getBusinessObject$1(element),
116969
+ extensionElements = businessObject.get('extensionElements');
116970
+
116971
+ if (!extensionElements) {
116972
+ return;
116973
+ }
116974
+
116975
+ const values = extensionElements.get('values');
116976
+
116977
+ return values.find((value) => {
116978
+ return is$5(value, 'camunda:FormData');
116979
+ });
116973
116980
  }
116974
116981
 
116975
- var behaviorsModule = {
116976
- __init__: [
116977
- 'copyPasteBehavior',
116978
- 'copyPasteRootElementBehavior',
116979
- 'deleteErrorEventDefinitionBehavior',
116980
- 'deleteParticipantBehaviour',
116981
- 'deleteRetryTimeCycleBehavior',
116982
- 'removeInitiatorBehaviour',
116983
- 'removeVariableEventBehaviour',
116984
- 'updateCamundaExclusiveBehavior',
116985
- 'updateResultVariableBehavior',
116986
- 'updateInputOutputBehavior',
116987
- 'userTaskFormsBehavior',
116988
- 'userTaskGeneratedFormsBehavior'
116989
- ],
116990
- copyPasteBehavior: [ 'type', CopyPasteBehavior ],
116991
- copyPasteRootElementBehavior: [ 'type', CopyPasteRootElementBehavior ],
116992
- deleteErrorEventDefinitionBehavior: [ 'type', DeleteErrorEventDefinitionBehavior ],
116993
- deleteParticipantBehaviour: [ 'type', DeleteParticipantBehaviour ],
116994
- deleteRetryTimeCycleBehavior: [ 'type', DeleteRetryTimeCycleBehavior ],
116995
- removeInitiatorBehaviour: [ 'type', RemoveInitiatorBehaviour ],
116996
- removeVariableEventBehaviour: [ 'type', RemoveVariableEventBehaviour ],
116997
- updateCamundaExclusiveBehavior: [ 'type', UpdateCamundaExclusiveBehavior ],
116998
- updateResultVariableBehavior: [ 'type', UpdateResultVariableBehavior ],
116999
- updateInputOutputBehavior: [ 'type', UpdateInputOutputBehavior ],
117000
- userTaskFormsBehavior: [ 'type', UserTaskFormsBehavior$1 ],
117001
- userTaskGeneratedFormsBehavior: [ 'type', UserTaskFormsBehavior ]
116982
+ var behaviorsModule = {
116983
+ __init__: [
116984
+ 'copyPasteBehavior',
116985
+ 'copyPasteRootElementBehavior',
116986
+ 'deleteErrorEventDefinitionBehavior',
116987
+ 'deleteParticipantBehaviour',
116988
+ 'deleteRetryTimeCycleBehavior',
116989
+ 'removeInitiatorBehaviour',
116990
+ 'removeVariableEventBehaviour',
116991
+ 'updateCamundaExclusiveBehavior',
116992
+ 'updateResultVariableBehavior',
116993
+ 'updateInputOutputBehavior',
116994
+ 'userTaskFormsBehavior',
116995
+ 'userTaskGeneratedFormsBehavior'
116996
+ ],
116997
+ copyPasteBehavior: [ 'type', CopyPasteBehavior ],
116998
+ copyPasteRootElementBehavior: [ 'type', CopyPasteRootElementBehavior ],
116999
+ deleteErrorEventDefinitionBehavior: [ 'type', DeleteErrorEventDefinitionBehavior ],
117000
+ deleteParticipantBehaviour: [ 'type', DeleteParticipantBehaviour ],
117001
+ deleteRetryTimeCycleBehavior: [ 'type', DeleteRetryTimeCycleBehavior ],
117002
+ removeInitiatorBehaviour: [ 'type', RemoveInitiatorBehaviour ],
117003
+ removeVariableEventBehaviour: [ 'type', RemoveVariableEventBehaviour ],
117004
+ updateCamundaExclusiveBehavior: [ 'type', UpdateCamundaExclusiveBehavior ],
117005
+ updateResultVariableBehavior: [ 'type', UpdateResultVariableBehavior ],
117006
+ updateInputOutputBehavior: [ 'type', UpdateInputOutputBehavior ],
117007
+ userTaskFormsBehavior: [ 'type', UserTaskFormsBehavior$1 ],
117008
+ userTaskGeneratedFormsBehavior: [ 'type', UserTaskFormsBehavior ]
117002
117009
  };
117003
117010
 
117004
117011
  /**