bpmn-js 18.2.0 → 18.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (339) hide show
  1. package/LICENSE +23 -23
  2. package/README.md +95 -95
  3. package/dist/assets/bpmn-js.css +145 -145
  4. package/dist/bpmn-modeler.development.js +38724 -38473
  5. package/dist/bpmn-modeler.production.min.js +38 -38
  6. package/dist/bpmn-navigated-viewer.development.js +21139 -21139
  7. package/dist/bpmn-navigated-viewer.production.min.js +1 -1
  8. package/dist/bpmn-viewer.development.js +21080 -21080
  9. package/dist/bpmn-viewer.production.min.js +1 -1
  10. package/lib/BaseModeler.d.ts +15 -15
  11. package/lib/BaseModeler.js +79 -79
  12. package/lib/BaseViewer.d.ts +352 -352
  13. package/lib/BaseViewer.js +858 -858
  14. package/lib/Modeler.d.ts +86 -86
  15. package/lib/Modeler.js +206 -206
  16. package/lib/NavigatedViewer.d.ts +11 -11
  17. package/lib/NavigatedViewer.js +37 -37
  18. package/lib/Viewer.d.ts +47 -47
  19. package/lib/Viewer.js +76 -76
  20. package/lib/core/index.d.ts +10 -10
  21. package/lib/core/index.js +8 -8
  22. package/lib/draw/BpmnRenderUtil.d.ts +123 -123
  23. package/lib/draw/BpmnRenderUtil.js +256 -256
  24. package/lib/draw/BpmnRenderer.d.ts +116 -116
  25. package/lib/draw/BpmnRenderer.js +2339 -2339
  26. package/lib/draw/PathMap.d.ts +330 -330
  27. package/lib/draw/PathMap.js +478 -478
  28. package/lib/draw/TextRenderer.d.ts +74 -74
  29. package/lib/draw/TextRenderer.js +136 -136
  30. package/lib/draw/index.d.ts +10 -10
  31. package/lib/draw/index.js +11 -11
  32. package/lib/features/align-elements/AlignElementsContextPadProvider.d.ts +32 -32
  33. package/lib/features/align-elements/AlignElementsContextPadProvider.js +105 -105
  34. package/lib/features/align-elements/AlignElementsIcons.d.ts +10 -10
  35. package/lib/features/align-elements/AlignElementsIcons.js +43 -43
  36. package/lib/features/align-elements/AlignElementsMenuProvider.d.ts +32 -32
  37. package/lib/features/align-elements/AlignElementsMenuProvider.js +100 -100
  38. package/lib/features/align-elements/BpmnAlignElements.d.ts +9 -9
  39. package/lib/features/align-elements/BpmnAlignElements.js +45 -45
  40. package/lib/features/align-elements/index.d.ts +11 -11
  41. package/lib/features/align-elements/index.js +23 -23
  42. package/lib/features/append-preview/AppendPreview.d.ts +36 -36
  43. package/lib/features/append-preview/AppendPreview.js +108 -108
  44. package/lib/features/append-preview/index.d.ts +16 -16
  45. package/lib/features/append-preview/index.js +15 -15
  46. package/lib/features/auto-place/BpmnAutoPlace.d.ts +15 -15
  47. package/lib/features/auto-place/BpmnAutoPlace.js +22 -22
  48. package/lib/features/auto-place/BpmnAutoPlaceUtil.d.ts +52 -52
  49. package/lib/features/auto-place/BpmnAutoPlaceUtil.js +226 -226
  50. package/lib/features/auto-place/index.d.ts +7 -7
  51. package/lib/features/auto-place/index.js +8 -8
  52. package/lib/features/auto-resize/BpmnAutoResize.d.ts +25 -25
  53. package/lib/features/auto-resize/BpmnAutoResize.js +45 -45
  54. package/lib/features/auto-resize/BpmnAutoResizeProvider.d.ts +26 -26
  55. package/lib/features/auto-resize/BpmnAutoResizeProvider.js +69 -69
  56. package/lib/features/auto-resize/index.d.ts +8 -8
  57. package/lib/features/auto-resize/index.js +12 -12
  58. package/lib/features/context-pad/ContextPadProvider.d.ts +62 -62
  59. package/lib/features/context-pad/ContextPadProvider.js +582 -582
  60. package/lib/features/context-pad/index.d.ts +7 -7
  61. package/lib/features/context-pad/index.js +22 -22
  62. package/lib/features/copy-paste/BpmnCopyPaste.d.ts +17 -17
  63. package/lib/features/copy-paste/BpmnCopyPaste.js +192 -192
  64. package/lib/features/copy-paste/ModdleCopy.d.ts +45 -45
  65. package/lib/features/copy-paste/index.d.ts +9 -9
  66. package/lib/features/copy-paste/index.js +13 -13
  67. package/lib/features/di-ordering/BpmnDiOrdering.d.ts +11 -11
  68. package/lib/features/di-ordering/BpmnDiOrdering.js +48 -48
  69. package/lib/features/di-ordering/index.d.ts +6 -6
  70. package/lib/features/di-ordering/index.js +7 -7
  71. package/lib/features/distribute-elements/BpmnDistributeElements.d.ts +10 -10
  72. package/lib/features/distribute-elements/BpmnDistributeElements.js +60 -60
  73. package/lib/features/distribute-elements/DistributeElementsIcons.d.ts +5 -5
  74. package/lib/features/distribute-elements/DistributeElementsIcons.js +18 -18
  75. package/lib/features/distribute-elements/DistributeElementsMenuProvider.d.ts +32 -32
  76. package/lib/features/distribute-elements/DistributeElementsMenuProvider.js +92 -92
  77. package/lib/features/distribute-elements/index.d.ts +9 -9
  78. package/lib/features/distribute-elements/index.js +19 -19
  79. package/lib/features/drilldown/DrilldownBreadcrumbs.d.ts +19 -19
  80. package/lib/features/drilldown/DrilldownBreadcrumbs.js +138 -138
  81. package/lib/features/drilldown/DrilldownCentering.d.ts +17 -17
  82. package/lib/features/drilldown/DrilldownCentering.js +122 -122
  83. package/lib/features/drilldown/DrilldownOverlayBehavior.d.ts +20 -20
  84. package/lib/features/drilldown/DrilldownOverlayBehavior.js +218 -218
  85. package/lib/features/drilldown/SubprocessCompatibility.d.ts +21 -21
  86. package/lib/features/drilldown/SubprocessCompatibility.js +266 -266
  87. package/lib/features/drilldown/index.d.ts +13 -13
  88. package/lib/features/drilldown/index.js +16 -16
  89. package/lib/features/editor-actions/BpmnEditorActions.d.ts +13 -13
  90. package/lib/features/editor-actions/BpmnEditorActions.js +187 -187
  91. package/lib/features/editor-actions/index.d.ts +6 -6
  92. package/lib/features/editor-actions/index.js +10 -10
  93. package/lib/features/grid-snapping/BpmnGridSnapping.d.ts +9 -9
  94. package/lib/features/grid-snapping/behavior/GridSnappingAutoPlaceBehavior.d.ts +14 -14
  95. package/lib/features/grid-snapping/behavior/GridSnappingLayoutConnectionBehavior.d.ts +27 -27
  96. package/lib/features/grid-snapping/behavior/GridSnappingLayoutConnectionBehavior.js +155 -155
  97. package/lib/features/grid-snapping/behavior/GridSnappingParticipantBehavior.d.ts +13 -13
  98. package/lib/features/grid-snapping/behavior/index.d.ts +10 -10
  99. package/lib/features/grid-snapping/index.d.ts +11 -11
  100. package/lib/features/interaction-events/BpmnInteractionEvents.d.ts +18 -18
  101. package/lib/features/interaction-events/BpmnInteractionEvents.js +146 -146
  102. package/lib/features/interaction-events/index.d.ts +6 -6
  103. package/lib/features/interaction-events/index.js +5 -5
  104. package/lib/features/keyboard/BpmnKeyboardBindings.d.ts +15 -15
  105. package/lib/features/keyboard/BpmnKeyboardBindings.js +179 -179
  106. package/lib/features/keyboard/index.d.ts +7 -7
  107. package/lib/features/keyboard/index.js +11 -11
  108. package/lib/features/label-editing/LabelEditingPreview.d.ts +13 -13
  109. package/lib/features/label-editing/LabelEditingPreview.js +145 -145
  110. package/lib/features/label-editing/LabelEditingProvider.d.ts +62 -62
  111. package/lib/features/label-editing/LabelEditingProvider.js +519 -519
  112. package/lib/features/label-editing/LabelUtil.d.ts +1 -1
  113. package/lib/features/label-editing/LabelUtil.js +4 -4
  114. package/lib/features/label-editing/cmd/UpdateLabelHandler.d.ts +22 -22
  115. package/lib/features/label-editing/cmd/UpdateLabelHandler.js +149 -149
  116. package/lib/features/label-editing/index.d.ts +9 -9
  117. package/lib/features/label-editing/index.js +21 -21
  118. package/lib/features/modeling/BpmnFactory.d.ts +73 -73
  119. package/lib/features/modeling/BpmnFactory.js +180 -180
  120. package/lib/features/modeling/BpmnLayouter.d.ts +30 -30
  121. package/lib/features/modeling/BpmnLayouter.js +488 -488
  122. package/lib/features/modeling/BpmnUpdater.d.ts +90 -90
  123. package/lib/features/modeling/BpmnUpdater.js +818 -818
  124. package/lib/features/modeling/ElementFactory.d.ts +117 -117
  125. package/lib/features/modeling/ElementFactory.js +412 -412
  126. package/lib/features/modeling/ElementFactory.test.ts +132 -132
  127. package/lib/features/modeling/Modeling.d.ts +150 -150
  128. package/lib/features/modeling/Modeling.js +309 -309
  129. package/lib/features/modeling/Modeling.test.ts +147 -147
  130. package/lib/features/modeling/behavior/AdaptiveLabelPositioningBehavior.d.ts +19 -19
  131. package/lib/features/modeling/behavior/AdaptiveLabelPositioningBehavior.js +288 -288
  132. package/lib/features/modeling/behavior/AppendBehavior.d.ts +6 -6
  133. package/lib/features/modeling/behavior/AppendBehavior.js +42 -42
  134. package/lib/features/modeling/behavior/AssociationBehavior.d.ts +11 -11
  135. package/lib/features/modeling/behavior/AttachEventBehavior.d.ts +15 -15
  136. package/lib/features/modeling/behavior/AttachEventBehavior.js +106 -106
  137. package/lib/features/modeling/behavior/BoundaryEventBehavior.d.ts +15 -15
  138. package/lib/features/modeling/behavior/BoundaryEventBehavior.js +74 -74
  139. package/lib/features/modeling/behavior/CompensateBoundaryEventBehavior.d.ts +17 -17
  140. package/lib/features/modeling/behavior/CompensateBoundaryEventBehavior.js +222 -222
  141. package/lib/features/modeling/behavior/CreateBehavior.d.ts +9 -9
  142. package/lib/features/modeling/behavior/CreateBehavior.js +33 -33
  143. package/lib/features/modeling/behavior/CreateDataObjectBehavior.d.ts +15 -15
  144. package/lib/features/modeling/behavior/CreateDataObjectBehavior.js +43 -43
  145. package/lib/features/modeling/behavior/CreateParticipantBehavior.d.ts +19 -19
  146. package/lib/features/modeling/behavior/CreateParticipantBehavior.js +237 -237
  147. package/lib/features/modeling/behavior/DataInputAssociationBehavior.d.ts +21 -21
  148. package/lib/features/modeling/behavior/DataInputAssociationBehavior.js +162 -162
  149. package/lib/features/modeling/behavior/DataStoreBehavior.d.ts +19 -19
  150. package/lib/features/modeling/behavior/DeleteLaneBehavior.d.ts +15 -15
  151. package/lib/features/modeling/behavior/DeleteLaneBehavior.js +162 -162
  152. package/lib/features/modeling/behavior/DetachEventBehavior.d.ts +15 -15
  153. package/lib/features/modeling/behavior/DetachEventBehavior.js +101 -101
  154. package/lib/features/modeling/behavior/DropOnFlowBehavior.d.ts +13 -13
  155. package/lib/features/modeling/behavior/DropOnFlowBehavior.js +221 -221
  156. package/lib/features/modeling/behavior/EventBasedGatewayBehavior.d.ts +11 -11
  157. package/lib/features/modeling/behavior/EventBasedGatewayBehavior.js +110 -110
  158. package/lib/features/modeling/behavior/FixHoverBehavior.d.ts +17 -17
  159. package/lib/features/modeling/behavior/GroupBehavior.d.ts +26 -26
  160. package/lib/features/modeling/behavior/ImportDockingFix.d.ts +13 -13
  161. package/lib/features/modeling/behavior/ImportDockingFix.js +83 -83
  162. package/lib/features/modeling/behavior/IsHorizontalFix.d.ts +10 -10
  163. package/lib/features/modeling/behavior/IsHorizontalFix.js +54 -54
  164. package/lib/features/modeling/behavior/LabelBehavior.d.ts +56 -56
  165. package/lib/features/modeling/behavior/LabelBehavior.js +364 -364
  166. package/lib/features/modeling/behavior/LayoutConnectionBehavior.d.ts +16 -16
  167. package/lib/features/modeling/behavior/LayoutConnectionBehavior.js +121 -121
  168. package/lib/features/modeling/behavior/MessageFlowBehavior.d.ts +15 -15
  169. package/lib/features/modeling/behavior/NonInterruptingBehavior.d.ts +4 -4
  170. package/lib/features/modeling/behavior/NonInterruptingBehavior.js +41 -41
  171. package/lib/features/modeling/behavior/RemoveElementBehavior.d.ts +13 -13
  172. package/lib/features/modeling/behavior/RemoveElementBehavior.js +91 -91
  173. package/lib/features/modeling/behavior/RemoveEmbeddedLabelBoundsBehavior.d.ts +16 -16
  174. package/lib/features/modeling/behavior/RemoveEmbeddedLabelBoundsBehavior.js +41 -41
  175. package/lib/features/modeling/behavior/RemoveParticipantBehavior.d.ts +15 -15
  176. package/lib/features/modeling/behavior/RemoveParticipantBehavior.js +59 -59
  177. package/lib/features/modeling/behavior/ReplaceConnectionBehavior.d.ts +15 -15
  178. package/lib/features/modeling/behavior/ReplaceConnectionBehavior.js +194 -194
  179. package/lib/features/modeling/behavior/ReplaceElementBehaviour.d.ts +23 -23
  180. package/lib/features/modeling/behavior/ReplaceElementBehaviour.js +144 -144
  181. package/lib/features/modeling/behavior/ResizeBehavior.d.ts +64 -64
  182. package/lib/features/modeling/behavior/ResizeBehavior.js +265 -265
  183. package/lib/features/modeling/behavior/ResizeLaneBehavior.d.ts +16 -16
  184. package/lib/features/modeling/behavior/ResizeLaneBehavior.js +70 -70
  185. package/lib/features/modeling/behavior/RootElementReferenceBehavior.d.ts +25 -25
  186. package/lib/features/modeling/behavior/SetCompensationActivityAfterPasteBehavior.d.ts +16 -16
  187. package/lib/features/modeling/behavior/SetCompensationActivityAfterPasteBehavior.js +66 -66
  188. package/lib/features/modeling/behavior/SpaceToolBehavior.d.ts +10 -10
  189. package/lib/features/modeling/behavior/SpaceToolBehavior.js +207 -207
  190. package/lib/features/modeling/behavior/SubProcessPlaneBehavior.d.ts +28 -28
  191. package/lib/features/modeling/behavior/SubProcessPlaneBehavior.js +588 -588
  192. package/lib/features/modeling/behavior/SubProcessStartEventBehavior.d.ts +15 -15
  193. package/lib/features/modeling/behavior/SubProcessStartEventBehavior.js +55 -55
  194. package/lib/features/modeling/behavior/TextAnnotationBehavior.d.ts +6 -6
  195. package/lib/features/modeling/behavior/TextAnnotationBehavior.js +42 -42
  196. package/lib/features/modeling/behavior/ToggleCollapseConnectionBehaviour.d.ts +14 -14
  197. package/lib/features/modeling/behavior/ToggleCollapseConnectionBehaviour.js +87 -87
  198. package/lib/features/modeling/behavior/ToggleElementCollapseBehaviour.d.ts +13 -13
  199. package/lib/features/modeling/behavior/ToggleElementCollapseBehaviour.js +156 -156
  200. package/lib/features/modeling/behavior/UnclaimIdBehavior.d.ts +19 -19
  201. package/lib/features/modeling/behavior/UnclaimIdBehavior.js +64 -64
  202. package/lib/features/modeling/behavior/UnsetDefaultFlowBehavior.d.ts +16 -16
  203. package/lib/features/modeling/behavior/UnsetDefaultFlowBehavior.js +59 -59
  204. package/lib/features/modeling/behavior/UpdateFlowNodeRefsBehavior.d.ts +15 -15
  205. package/lib/features/modeling/behavior/UpdateFlowNodeRefsBehavior.js +157 -157
  206. package/lib/features/modeling/behavior/index.d.ts +2 -2
  207. package/lib/features/modeling/behavior/index.js +131 -131
  208. package/lib/features/modeling/behavior/util/CategoryUtil.d.ts +49 -49
  209. package/lib/features/modeling/behavior/util/CategoryUtil.js +86 -86
  210. package/lib/features/modeling/behavior/util/ConnectionLayoutUtil.d.ts +19 -19
  211. package/lib/features/modeling/behavior/util/ConnectionLayoutUtil.js +22 -22
  212. package/lib/features/modeling/behavior/util/GeometricUtil.d.ts +1 -1
  213. package/lib/features/modeling/behavior/util/LabelLayoutUtil.d.ts +32 -32
  214. package/lib/features/modeling/behavior/util/LabelLayoutUtil.js +41 -41
  215. package/lib/features/modeling/behavior/util/LayoutUtil.d.ts +48 -48
  216. package/lib/features/modeling/behavior/util/LayoutUtil.js +259 -259
  217. package/lib/features/modeling/behavior/util/LineAttachmentUtil.d.ts +37 -37
  218. package/lib/features/modeling/behavior/util/LineAttachmentUtil.js +241 -241
  219. package/lib/features/modeling/behavior/util/LineIntersect.d.ts +13 -13
  220. package/lib/features/modeling/behavior/util/LineIntersect.js +39 -39
  221. package/lib/features/modeling/behavior/util/NonInterruptingUtil.d.ts +3 -3
  222. package/lib/features/modeling/behavior/util/NonInterruptingUtil.js +32 -32
  223. package/lib/features/modeling/behavior/util/ResizeUtil.d.ts +1 -1
  224. package/lib/features/modeling/cmd/AddLaneHandler.d.ts +22 -22
  225. package/lib/features/modeling/cmd/AddLaneHandler.js +187 -187
  226. package/lib/features/modeling/cmd/IdClaimHandler.d.ts +22 -22
  227. package/lib/features/modeling/cmd/IdClaimHandler.js +51 -51
  228. package/lib/features/modeling/cmd/ResizeLaneHandler.d.ts +39 -39
  229. package/lib/features/modeling/cmd/ResizeLaneHandler.js +146 -146
  230. package/lib/features/modeling/cmd/SetColorHandler.d.ts +18 -18
  231. package/lib/features/modeling/cmd/SplitLaneHandler.d.ts +20 -20
  232. package/lib/features/modeling/cmd/SplitLaneHandler.js +99 -99
  233. package/lib/features/modeling/cmd/UpdateCanvasRootHandler.d.ts +20 -20
  234. package/lib/features/modeling/cmd/UpdateCanvasRootHandler.js +99 -99
  235. package/lib/features/modeling/cmd/UpdateFlowNodeRefsHandler.d.ts +21 -21
  236. package/lib/features/modeling/cmd/UpdateFlowNodeRefsHandler.js +218 -218
  237. package/lib/features/modeling/cmd/UpdateModdlePropertiesHandler.d.ts +20 -20
  238. package/lib/features/modeling/cmd/UpdateModdlePropertiesHandler.js +107 -107
  239. package/lib/features/modeling/cmd/UpdatePropertiesHandler.d.ts +58 -58
  240. package/lib/features/modeling/cmd/UpdatePropertiesHandler.js +260 -260
  241. package/lib/features/modeling/cmd/UpdateSemanticParentHandler.d.ts +18 -18
  242. package/lib/features/modeling/index.d.ts +27 -27
  243. package/lib/features/modeling/index.js +45 -45
  244. package/lib/features/modeling/util/LaneUtil.d.ts +46 -46
  245. package/lib/features/modeling/util/LaneUtil.js +188 -188
  246. package/lib/features/modeling/util/ModelingUtil.d.ts +23 -23
  247. package/lib/features/modeling/util/ModelingUtil.js +88 -88
  248. package/lib/features/modeling-feedback/ModelingFeedback.d.ts +13 -13
  249. package/lib/features/modeling-feedback/ModelingFeedback.js +46 -46
  250. package/lib/features/modeling-feedback/index.d.ts +7 -7
  251. package/lib/features/modeling-feedback/index.js +12 -12
  252. package/lib/features/ordering/BpmnOrderingProvider.d.ts +19 -19
  253. package/lib/features/ordering/BpmnOrderingProvider.js +191 -191
  254. package/lib/features/ordering/index.d.ts +6 -6
  255. package/lib/features/ordering/index.js +5 -5
  256. package/lib/features/outline/OutlineProvider.d.ts +39 -39
  257. package/lib/features/outline/OutlineProvider.js +189 -189
  258. package/lib/features/outline/OutlineUtil.d.ts +23 -23
  259. package/lib/features/outline/OutlineUtil.js +35 -35
  260. package/lib/features/outline/index.d.ts +7 -7
  261. package/lib/features/outline/index.js +10 -10
  262. package/lib/features/palette/PaletteProvider.d.ts +34 -34
  263. package/lib/features/palette/PaletteProvider.js +214 -214
  264. package/lib/features/palette/index.d.ts +9 -9
  265. package/lib/features/palette/index.js +23 -23
  266. package/lib/features/popup-menu/ReplaceMenuProvider.d.ts +52 -52
  267. package/lib/features/popup-menu/ReplaceMenuProvider.js +656 -629
  268. package/lib/features/popup-menu/index.d.ts +11 -11
  269. package/lib/features/popup-menu/index.js +16 -16
  270. package/lib/features/popup-menu/util/Icons.d.ts +5 -5
  271. package/lib/features/popup-menu/util/Icons.js +14 -14
  272. package/lib/features/popup-menu/util/TypeUtil.d.ts +14 -14
  273. package/lib/features/popup-menu/util/TypeUtil.js +52 -52
  274. package/lib/features/replace/BpmnReplace.d.ts +45 -45
  275. package/lib/features/replace/BpmnReplace.js +391 -391
  276. package/lib/features/replace/ReplaceOptions.d.ts +85 -79
  277. package/lib/features/replace/ReplaceOptions.js +1198 -998
  278. package/lib/features/replace/index.d.ts +9 -9
  279. package/lib/features/replace/index.js +14 -14
  280. package/lib/features/replace-preview/BpmnReplacePreview.d.ts +17 -17
  281. package/lib/features/replace-preview/BpmnReplacePreview.js +139 -139
  282. package/lib/features/replace-preview/index.d.ts +7 -7
  283. package/lib/features/replace-preview/index.js +11 -11
  284. package/lib/features/rules/BpmnRules.d.ts +181 -181
  285. package/lib/features/rules/BpmnRules.js +1191 -1191
  286. package/lib/features/rules/index.d.ts +7 -7
  287. package/lib/features/rules/index.js +11 -11
  288. package/lib/features/search/BpmnSearchProvider.d.ts +34 -34
  289. package/lib/features/search/BpmnSearchProvider.js +91 -91
  290. package/lib/features/search/index.d.ts +7 -7
  291. package/lib/features/search/index.js +14 -14
  292. package/lib/features/snapping/BpmnConnectSnapping.d.ts +17 -17
  293. package/lib/features/snapping/BpmnCreateMoveSnapping.d.ts +41 -41
  294. package/lib/features/snapping/BpmnCreateMoveSnapping.js +289 -289
  295. package/lib/features/snapping/BpmnSnappingUtil.d.ts +11 -11
  296. package/lib/features/snapping/index.d.ts +9 -9
  297. package/lib/features/snapping/index.js +12 -12
  298. package/lib/features/space-tool/BpmnSpaceTool.d.ts +24 -21
  299. package/lib/features/space-tool/BpmnSpaceTool.js +96 -69
  300. package/lib/features/space-tool/index.d.ts +6 -6
  301. package/lib/features/space-tool/index.js +7 -7
  302. package/lib/import/BpmnImporter.d.ts +51 -51
  303. package/lib/import/BpmnImporter.js +363 -363
  304. package/lib/import/BpmnTreeWalker.d.ts +20 -20
  305. package/lib/import/BpmnTreeWalker.js +453 -453
  306. package/lib/import/Importer.d.ts +25 -25
  307. package/lib/import/Importer.js +222 -222
  308. package/lib/import/Util.d.ts +1 -1
  309. package/lib/import/Util.js +6 -6
  310. package/lib/import/index.d.ts +6 -6
  311. package/lib/import/index.js +9 -9
  312. package/lib/index.d.ts +1 -1
  313. package/lib/index.js +2 -2
  314. package/lib/model/Types.d.ts +25 -25
  315. package/lib/model/Types.ts +40 -40
  316. package/lib/util/CompatibilityUtil.d.ts +8 -8
  317. package/lib/util/CompatibilityUtil.js +29 -29
  318. package/lib/util/DiUtil.d.ts +60 -60
  319. package/lib/util/DiUtil.js +122 -122
  320. package/lib/util/DrilldownUtil.d.ts +39 -39
  321. package/lib/util/DrilldownUtil.js +69 -69
  322. package/lib/util/LabelUtil.d.ts +83 -83
  323. package/lib/util/LabelUtil.js +266 -266
  324. package/lib/util/ModelUtil.d.ts +40 -40
  325. package/lib/util/ModelUtil.js +58 -58
  326. package/lib/util/PoweredByUtil.d.ts +8 -8
  327. package/lib/util/PoweredByUtil.js +99 -99
  328. package/lib/util/Types.js +4 -4
  329. package/lib/util/Types.ts +3 -3
  330. package/package.json +131 -131
  331. package/test/helper/TranslationCollector.js +15 -15
  332. package/test/helper/index.js +313 -313
  333. package/test/matchers/BoundsMatchers.js +252 -252
  334. package/test/matchers/ConnectionMatchers.js +165 -165
  335. package/test/matchers/JSONMatcher.js +19 -19
  336. package/test/util/KeyEvents.js +22 -22
  337. package/test/util/MockEvents.js +61 -61
  338. package/test/util/custom-rules/CustomRules.js +16 -16
  339. package/test/util/custom-rules/index.js +6 -6
@@ -1,391 +1,391 @@
1
- import {
2
- pick,
3
- assign,
4
- filter,
5
- forEach,
6
- isArray,
7
- isUndefined,
8
- has
9
- } from 'min-dash';
10
-
11
- import {
12
- is,
13
- getDi,
14
- getBusinessObject
15
- } from '../../util/ModelUtil';
16
-
17
- import {
18
- isAny
19
- } from '../modeling/util/ModelingUtil';
20
-
21
- import {
22
- isExpanded,
23
- isEventSubProcess,
24
- isHorizontal
25
- } from '../../util/DiUtil';
26
-
27
- import { getPropertyNames } from '../copy-paste/ModdleCopy';
28
-
29
- /**
30
- * @typedef {import('../modeling/BpmnFactory').default} BpmnFactory
31
- * @typedef {import('../modeling/ElementFactory').default} ElementFactory
32
- * @typedef {import('../copy-paste/ModdleCopy').default} ModdleCopy
33
- * @typedef {import('../modeling/Modeling').default} Modeling
34
- * @typedef {import('diagram-js/lib/features/replace/Replace').default} Replace
35
- * @typedef {import('diagram-js/lib/features/rules/Rules').default} Rules
36
- *
37
- * @typedef {import('../../model/Types').Element} Element
38
- * @typedef {import('../../model/Types').Shape} Shape
39
- * @typedef {import('../../model/Types').ModdleElement} ModdleElement
40
- *
41
- * @typedef { {
42
- * type: string;
43
- * cancelActivity: boolean;
44
- * instantiate: boolean;
45
- * eventGatewayType: string;
46
- * triggeredByEvent: boolean;
47
- * isInterrupting: boolean;
48
- * collapsed: boolean;
49
- * isExpanded: boolean;
50
- * eventDefinitionType: string;
51
- * eventDefinitionAttrs: Object;
52
- * host: Shape;
53
- * } } TargetElement
54
- *
55
- * @typedef { {
56
- * moveChildren: boolean;
57
- * } & Record<string, any> } Hints
58
- */
59
-
60
- function copyProperties(source, target, properties) {
61
- if (!isArray(properties)) {
62
- properties = [ properties ];
63
- }
64
-
65
- forEach(properties, function(property) {
66
- if (!isUndefined(source[property])) {
67
- target[property] = source[property];
68
- }
69
- });
70
- }
71
-
72
-
73
- var CUSTOM_PROPERTIES = [
74
- 'cancelActivity',
75
- 'instantiate',
76
- 'eventGatewayType',
77
- 'triggeredByEvent',
78
- 'isInterrupting'
79
- ];
80
-
81
- /**
82
- * Check if element should be collapsed or expanded.
83
- */
84
- function shouldToggleCollapsed(element, targetElement) {
85
-
86
- var oldCollapsed = (
87
- element && has(element, 'collapsed') ? element.collapsed : !isExpanded(element)
88
- );
89
-
90
- var targetCollapsed;
91
-
92
- if (targetElement && (has(targetElement, 'collapsed') || has(targetElement, 'isExpanded'))) {
93
-
94
- // property is explicitly set so use it
95
- targetCollapsed = (
96
- has(targetElement, 'collapsed') ? targetElement.collapsed : !targetElement.isExpanded
97
- );
98
- } else {
99
-
100
- // keep old state
101
- targetCollapsed = oldCollapsed;
102
- }
103
-
104
- if (oldCollapsed !== targetCollapsed) {
105
- return true;
106
- }
107
-
108
- return false;
109
- }
110
-
111
-
112
- /**
113
- * BPMN-specific replace.
114
- *
115
- * @param {BpmnFactory} bpmnFactory
116
- * @param {ElementFactory} elementFactory
117
- * @param {ModdleCopy} moddleCopy
118
- * @param {Modeling} modeling
119
- * @param {Replace} replace
120
- * @param {Rules} rules
121
- */
122
- export default function BpmnReplace(
123
- bpmnFactory,
124
- elementFactory,
125
- moddleCopy,
126
- modeling,
127
- replace,
128
- rules
129
- ) {
130
-
131
- /**
132
- * Prepares a new business object for the replacement element
133
- * and triggers the replace operation.
134
- *
135
- * @param {Element} element
136
- * @param {TargetElement} targetElement
137
- * @param {Hints} [hints]
138
- *
139
- * @return {Element}
140
- */
141
- function replaceElement(element, targetElement, hints) {
142
-
143
- hints = hints || {};
144
-
145
- var type = targetElement.type,
146
- oldBusinessObject = element.businessObject;
147
-
148
- if (isSubProcess(oldBusinessObject) && (type === 'bpmn:SubProcess' || type === 'bpmn:AdHocSubProcess')) {
149
- if (shouldToggleCollapsed(element, targetElement)) {
150
-
151
- // expanding or collapsing process
152
- modeling.toggleCollapse(element);
153
-
154
- return element;
155
- }
156
- }
157
-
158
- var newBusinessObject = bpmnFactory.create(type);
159
-
160
- var newElement = {
161
- type: type,
162
- businessObject: newBusinessObject,
163
- };
164
-
165
- newElement.di = {};
166
-
167
- if (type === 'bpmn:ExclusiveGateway') {
168
- newElement.di.isMarkerVisible = true;
169
- }
170
-
171
- // colors will be set to DI
172
- copyProperties(element.di, newElement.di, [
173
- 'fill',
174
- 'stroke',
175
- 'background-color',
176
- 'border-color',
177
- 'color'
178
- ]);
179
-
180
- var elementProps = getPropertyNames(oldBusinessObject.$descriptor),
181
- newElementProps = getPropertyNames(newBusinessObject.$descriptor, true),
182
- copyProps = intersection(elementProps, newElementProps);
183
-
184
- // initialize special properties defined in target definition
185
- assign(newBusinessObject, pick(targetElement, CUSTOM_PROPERTIES));
186
-
187
- var properties = filter(copyProps, function(propertyName) {
188
-
189
- // copying event definitions, unless we replace
190
- if (propertyName === 'eventDefinitions') {
191
- return hasEventDefinition(element, targetElement.eventDefinitionType);
192
- }
193
-
194
- // retain loop characteristics if the target element
195
- // is not an event sub process
196
- if (propertyName === 'loopCharacteristics') {
197
- return !isEventSubProcess(newBusinessObject);
198
- }
199
-
200
- // so the applied properties from 'target' don't get lost
201
- if (has(newBusinessObject, propertyName)) {
202
- return false;
203
- }
204
-
205
- if (propertyName === 'processRef' && targetElement.isExpanded === false) {
206
- return false;
207
- }
208
-
209
- if (propertyName === 'triggeredByEvent') {
210
- return false;
211
- }
212
-
213
- if (propertyName === 'isForCompensation') {
214
- return !isEventSubProcess(newBusinessObject);
215
- }
216
-
217
- return true;
218
- });
219
-
220
- newBusinessObject = moddleCopy.copyElement(
221
- oldBusinessObject,
222
- newBusinessObject,
223
- properties
224
- );
225
-
226
- // initialize custom BPMN extensions
227
- if (targetElement.eventDefinitionType) {
228
-
229
- // only initialize with new eventDefinition
230
- // if we did not set an event definition yet,
231
- // i.e. because we copied it
232
- if (!hasEventDefinition(newBusinessObject, targetElement.eventDefinitionType)) {
233
- newElement.eventDefinitionType = targetElement.eventDefinitionType;
234
- newElement.eventDefinitionAttrs = targetElement.eventDefinitionAttrs;
235
- }
236
- }
237
-
238
- if (is(oldBusinessObject, 'bpmn:Activity')) {
239
-
240
- if (isSubProcess(oldBusinessObject)) {
241
-
242
- // no toggeling, so keep old state
243
- newElement.isExpanded = isExpanded(element);
244
- }
245
-
246
- // else if property is explicitly set, use it
247
- else if (targetElement && has(targetElement, 'isExpanded')) {
248
- newElement.isExpanded = targetElement.isExpanded;
249
-
250
- // assign default size of new expanded element
251
- var defaultSize = elementFactory.getDefaultSize(newBusinessObject, {
252
- isExpanded: newElement.isExpanded
253
- });
254
-
255
- newElement.width = defaultSize.width;
256
- newElement.height = defaultSize.height;
257
-
258
- // keep element centered
259
- newElement.x = element.x - (newElement.width - element.width) / 2;
260
- newElement.y = element.y - (newElement.height - element.height) / 2;
261
- }
262
-
263
- // TODO: need also to respect min/max Size
264
- // copy size, from an expanded subprocess to an expanded alternative subprocess
265
- // except bpmn:Task, because Task is always expanded
266
- if ((isExpanded(element) && !is(oldBusinessObject, 'bpmn:Task')) && newElement.isExpanded) {
267
- newElement.width = element.width;
268
- newElement.height = element.height;
269
- }
270
- }
271
-
272
- // remove children if not expanding sub process
273
- if (isSubProcess(oldBusinessObject) && !isSubProcess(newBusinessObject)) {
274
- hints.moveChildren = false;
275
- }
276
-
277
- // transform collapsed/expanded pools
278
- if (is(oldBusinessObject, 'bpmn:Participant')) {
279
-
280
- // create expanded pool
281
- if (targetElement.isExpanded === true) {
282
- newBusinessObject.processRef = bpmnFactory.create('bpmn:Process');
283
- } else {
284
-
285
- // remove children when transforming to collapsed pool
286
- hints.moveChildren = false;
287
- }
288
-
289
- // apply same directionality
290
- var isHorizontalPool = isHorizontal(element);
291
- if (!getDi(element).isHorizontal) {
292
- getDi(newElement).isHorizontal = isHorizontalPool;
293
- }
294
-
295
- // keep the existing size of the pool's direction to
296
- // prevent dangling message flows
297
- newElement.width = isHorizontalPool ? element.width : elementFactory.getDefaultSize(newElement).width;
298
- newElement.height = isHorizontalPool ? elementFactory.getDefaultSize(newElement).height : element.height;
299
- }
300
-
301
- if (!rules.allowed('shape.resize', { shape: newBusinessObject })) {
302
- newElement.height = elementFactory.getDefaultSize(newElement).height;
303
- newElement.width = elementFactory.getDefaultSize(newElement).width;
304
- }
305
-
306
- newBusinessObject.name = oldBusinessObject.name;
307
-
308
- // retain default flow's reference between inclusive <-> exclusive gateways and activities
309
- if (
310
- isAny(oldBusinessObject, [
311
- 'bpmn:ExclusiveGateway',
312
- 'bpmn:InclusiveGateway',
313
- 'bpmn:Activity'
314
- ]) &&
315
- isAny(newBusinessObject, [
316
- 'bpmn:ExclusiveGateway',
317
- 'bpmn:InclusiveGateway',
318
- 'bpmn:Activity'
319
- ])
320
- ) {
321
- newBusinessObject.default = oldBusinessObject.default;
322
- }
323
-
324
- if (
325
- targetElement.host &&
326
- !is(oldBusinessObject, 'bpmn:BoundaryEvent') &&
327
- is(newBusinessObject, 'bpmn:BoundaryEvent')
328
- ) {
329
- newElement.host = targetElement.host;
330
- }
331
-
332
- // The DataStoreReference element is 14px wider than the DataObjectReference element
333
- // This ensures that they stay centered on the x axis when replaced
334
- if (
335
- newElement.type === 'bpmn:DataStoreReference' ||
336
- newElement.type === 'bpmn:DataObjectReference'
337
- ) {
338
- newElement.x = element.x + (element.width - newElement.width) / 2;
339
- }
340
-
341
- return replace.replaceElement(element, newElement, { ...hints, targetElement });
342
- }
343
-
344
- this.replaceElement = replaceElement;
345
- }
346
-
347
- BpmnReplace.$inject = [
348
- 'bpmnFactory',
349
- 'elementFactory',
350
- 'moddleCopy',
351
- 'modeling',
352
- 'replace',
353
- 'rules'
354
- ];
355
-
356
- /**
357
- * @param {ModdleElement} businessObject
358
- *
359
- * @return {boolean}
360
- */
361
- function isSubProcess(businessObject) {
362
- return is(businessObject, 'bpmn:SubProcess');
363
- }
364
-
365
- /**
366
- * @param {Element|ModdleElement} element
367
- * @param {string} type
368
- *
369
- * @return {boolean}
370
- */
371
- function hasEventDefinition(element, type) {
372
- var businessObject = getBusinessObject(element);
373
-
374
- return type && businessObject.get('eventDefinitions').some(function(definition) {
375
- return is(definition, type);
376
- });
377
- }
378
-
379
- /**
380
- * Compute intersection between two arrays.
381
- *
382
- * @param {Array} a
383
- * @param {Array} b
384
- *
385
- * @return {Array}
386
- */
387
- function intersection(a, b) {
388
- return a.filter(function(item) {
389
- return b.includes(item);
390
- });
391
- }
1
+ import {
2
+ pick,
3
+ assign,
4
+ filter,
5
+ forEach,
6
+ isArray,
7
+ isUndefined,
8
+ has
9
+ } from 'min-dash';
10
+
11
+ import {
12
+ is,
13
+ getDi,
14
+ getBusinessObject
15
+ } from '../../util/ModelUtil';
16
+
17
+ import {
18
+ isAny
19
+ } from '../modeling/util/ModelingUtil';
20
+
21
+ import {
22
+ isExpanded,
23
+ isEventSubProcess,
24
+ isHorizontal
25
+ } from '../../util/DiUtil';
26
+
27
+ import { getPropertyNames } from '../copy-paste/ModdleCopy';
28
+
29
+ /**
30
+ * @typedef {import('../modeling/BpmnFactory').default} BpmnFactory
31
+ * @typedef {import('../modeling/ElementFactory').default} ElementFactory
32
+ * @typedef {import('../copy-paste/ModdleCopy').default} ModdleCopy
33
+ * @typedef {import('../modeling/Modeling').default} Modeling
34
+ * @typedef {import('diagram-js/lib/features/replace/Replace').default} Replace
35
+ * @typedef {import('diagram-js/lib/features/rules/Rules').default} Rules
36
+ *
37
+ * @typedef {import('../../model/Types').Element} Element
38
+ * @typedef {import('../../model/Types').Shape} Shape
39
+ * @typedef {import('../../model/Types').ModdleElement} ModdleElement
40
+ *
41
+ * @typedef { {
42
+ * type: string;
43
+ * cancelActivity: boolean;
44
+ * instantiate: boolean;
45
+ * eventGatewayType: string;
46
+ * triggeredByEvent: boolean;
47
+ * isInterrupting: boolean;
48
+ * collapsed: boolean;
49
+ * isExpanded: boolean;
50
+ * eventDefinitionType: string;
51
+ * eventDefinitionAttrs: Object;
52
+ * host: Shape;
53
+ * } } TargetElement
54
+ *
55
+ * @typedef { {
56
+ * moveChildren: boolean;
57
+ * } & Record<string, any> } Hints
58
+ */
59
+
60
+ function copyProperties(source, target, properties) {
61
+ if (!isArray(properties)) {
62
+ properties = [ properties ];
63
+ }
64
+
65
+ forEach(properties, function(property) {
66
+ if (!isUndefined(source[property])) {
67
+ target[property] = source[property];
68
+ }
69
+ });
70
+ }
71
+
72
+
73
+ var CUSTOM_PROPERTIES = [
74
+ 'cancelActivity',
75
+ 'instantiate',
76
+ 'eventGatewayType',
77
+ 'triggeredByEvent',
78
+ 'isInterrupting'
79
+ ];
80
+
81
+ /**
82
+ * Check if element should be collapsed or expanded.
83
+ */
84
+ function shouldToggleCollapsed(element, targetElement) {
85
+
86
+ var oldCollapsed = (
87
+ element && has(element, 'collapsed') ? element.collapsed : !isExpanded(element)
88
+ );
89
+
90
+ var targetCollapsed;
91
+
92
+ if (targetElement && (has(targetElement, 'collapsed') || has(targetElement, 'isExpanded'))) {
93
+
94
+ // property is explicitly set so use it
95
+ targetCollapsed = (
96
+ has(targetElement, 'collapsed') ? targetElement.collapsed : !targetElement.isExpanded
97
+ );
98
+ } else {
99
+
100
+ // keep old state
101
+ targetCollapsed = oldCollapsed;
102
+ }
103
+
104
+ if (oldCollapsed !== targetCollapsed) {
105
+ return true;
106
+ }
107
+
108
+ return false;
109
+ }
110
+
111
+
112
+ /**
113
+ * BPMN-specific replace.
114
+ *
115
+ * @param {BpmnFactory} bpmnFactory
116
+ * @param {ElementFactory} elementFactory
117
+ * @param {ModdleCopy} moddleCopy
118
+ * @param {Modeling} modeling
119
+ * @param {Replace} replace
120
+ * @param {Rules} rules
121
+ */
122
+ export default function BpmnReplace(
123
+ bpmnFactory,
124
+ elementFactory,
125
+ moddleCopy,
126
+ modeling,
127
+ replace,
128
+ rules
129
+ ) {
130
+
131
+ /**
132
+ * Prepares a new business object for the replacement element
133
+ * and triggers the replace operation.
134
+ *
135
+ * @param {Element} element
136
+ * @param {TargetElement} targetElement
137
+ * @param {Hints} [hints]
138
+ *
139
+ * @return {Element}
140
+ */
141
+ function replaceElement(element, targetElement, hints) {
142
+
143
+ hints = hints || {};
144
+
145
+ var type = targetElement.type,
146
+ oldBusinessObject = element.businessObject;
147
+
148
+ if (isSubProcess(oldBusinessObject) && (type === 'bpmn:SubProcess' || type === 'bpmn:AdHocSubProcess')) {
149
+ if (shouldToggleCollapsed(element, targetElement)) {
150
+
151
+ // expanding or collapsing process
152
+ modeling.toggleCollapse(element);
153
+
154
+ return element;
155
+ }
156
+ }
157
+
158
+ var newBusinessObject = bpmnFactory.create(type);
159
+
160
+ var newElement = {
161
+ type: type,
162
+ businessObject: newBusinessObject,
163
+ };
164
+
165
+ newElement.di = {};
166
+
167
+ if (type === 'bpmn:ExclusiveGateway') {
168
+ newElement.di.isMarkerVisible = true;
169
+ }
170
+
171
+ // colors will be set to DI
172
+ copyProperties(element.di, newElement.di, [
173
+ 'fill',
174
+ 'stroke',
175
+ 'background-color',
176
+ 'border-color',
177
+ 'color'
178
+ ]);
179
+
180
+ var elementProps = getPropertyNames(oldBusinessObject.$descriptor),
181
+ newElementProps = getPropertyNames(newBusinessObject.$descriptor, true),
182
+ copyProps = intersection(elementProps, newElementProps);
183
+
184
+ // initialize special properties defined in target definition
185
+ assign(newBusinessObject, pick(targetElement, CUSTOM_PROPERTIES));
186
+
187
+ var properties = filter(copyProps, function(propertyName) {
188
+
189
+ // copying event definitions, unless we replace
190
+ if (propertyName === 'eventDefinitions') {
191
+ return hasEventDefinition(element, targetElement.eventDefinitionType);
192
+ }
193
+
194
+ // retain loop characteristics if the target element
195
+ // is not an event sub process
196
+ if (propertyName === 'loopCharacteristics') {
197
+ return !isEventSubProcess(newBusinessObject);
198
+ }
199
+
200
+ // so the applied properties from 'target' don't get lost
201
+ if (has(newBusinessObject, propertyName)) {
202
+ return false;
203
+ }
204
+
205
+ if (propertyName === 'processRef' && targetElement.isExpanded === false) {
206
+ return false;
207
+ }
208
+
209
+ if (propertyName === 'triggeredByEvent') {
210
+ return false;
211
+ }
212
+
213
+ if (propertyName === 'isForCompensation') {
214
+ return !isEventSubProcess(newBusinessObject);
215
+ }
216
+
217
+ return true;
218
+ });
219
+
220
+ newBusinessObject = moddleCopy.copyElement(
221
+ oldBusinessObject,
222
+ newBusinessObject,
223
+ properties
224
+ );
225
+
226
+ // initialize custom BPMN extensions
227
+ if (targetElement.eventDefinitionType) {
228
+
229
+ // only initialize with new eventDefinition
230
+ // if we did not set an event definition yet,
231
+ // i.e. because we copied it
232
+ if (!hasEventDefinition(newBusinessObject, targetElement.eventDefinitionType)) {
233
+ newElement.eventDefinitionType = targetElement.eventDefinitionType;
234
+ newElement.eventDefinitionAttrs = targetElement.eventDefinitionAttrs;
235
+ }
236
+ }
237
+
238
+ if (is(oldBusinessObject, 'bpmn:Activity')) {
239
+
240
+ if (isSubProcess(oldBusinessObject)) {
241
+
242
+ // no toggeling, so keep old state
243
+ newElement.isExpanded = isExpanded(element);
244
+ }
245
+
246
+ // else if property is explicitly set, use it
247
+ else if (targetElement && has(targetElement, 'isExpanded')) {
248
+ newElement.isExpanded = targetElement.isExpanded;
249
+
250
+ // assign default size of new expanded element
251
+ var defaultSize = elementFactory.getDefaultSize(newBusinessObject, {
252
+ isExpanded: newElement.isExpanded
253
+ });
254
+
255
+ newElement.width = defaultSize.width;
256
+ newElement.height = defaultSize.height;
257
+
258
+ // keep element centered
259
+ newElement.x = element.x - (newElement.width - element.width) / 2;
260
+ newElement.y = element.y - (newElement.height - element.height) / 2;
261
+ }
262
+
263
+ // TODO: need also to respect min/max Size
264
+ // copy size, from an expanded subprocess to an expanded alternative subprocess
265
+ // except bpmn:Task, because Task is always expanded
266
+ if ((isExpanded(element) && !is(oldBusinessObject, 'bpmn:Task')) && newElement.isExpanded) {
267
+ newElement.width = element.width;
268
+ newElement.height = element.height;
269
+ }
270
+ }
271
+
272
+ // remove children if not expanding sub process
273
+ if (isSubProcess(oldBusinessObject) && !isSubProcess(newBusinessObject)) {
274
+ hints.moveChildren = false;
275
+ }
276
+
277
+ // transform collapsed/expanded pools
278
+ if (is(oldBusinessObject, 'bpmn:Participant')) {
279
+
280
+ // create expanded pool
281
+ if (targetElement.isExpanded === true) {
282
+ newBusinessObject.processRef = bpmnFactory.create('bpmn:Process');
283
+ } else {
284
+
285
+ // remove children when transforming to collapsed pool
286
+ hints.moveChildren = false;
287
+ }
288
+
289
+ // apply same directionality
290
+ var isHorizontalPool = isHorizontal(element);
291
+ if (!getDi(element).isHorizontal) {
292
+ getDi(newElement).isHorizontal = isHorizontalPool;
293
+ }
294
+
295
+ // keep the existing size of the pool's direction to
296
+ // prevent dangling message flows
297
+ newElement.width = isHorizontalPool ? element.width : elementFactory.getDefaultSize(newElement).width;
298
+ newElement.height = isHorizontalPool ? elementFactory.getDefaultSize(newElement).height : element.height;
299
+ }
300
+
301
+ if (!rules.allowed('shape.resize', { shape: newBusinessObject })) {
302
+ newElement.height = elementFactory.getDefaultSize(newElement).height;
303
+ newElement.width = elementFactory.getDefaultSize(newElement).width;
304
+ }
305
+
306
+ newBusinessObject.name = oldBusinessObject.name;
307
+
308
+ // retain default flow's reference between inclusive <-> exclusive gateways and activities
309
+ if (
310
+ isAny(oldBusinessObject, [
311
+ 'bpmn:ExclusiveGateway',
312
+ 'bpmn:InclusiveGateway',
313
+ 'bpmn:Activity'
314
+ ]) &&
315
+ isAny(newBusinessObject, [
316
+ 'bpmn:ExclusiveGateway',
317
+ 'bpmn:InclusiveGateway',
318
+ 'bpmn:Activity'
319
+ ])
320
+ ) {
321
+ newBusinessObject.default = oldBusinessObject.default;
322
+ }
323
+
324
+ if (
325
+ targetElement.host &&
326
+ !is(oldBusinessObject, 'bpmn:BoundaryEvent') &&
327
+ is(newBusinessObject, 'bpmn:BoundaryEvent')
328
+ ) {
329
+ newElement.host = targetElement.host;
330
+ }
331
+
332
+ // The DataStoreReference element is 14px wider than the DataObjectReference element
333
+ // This ensures that they stay centered on the x axis when replaced
334
+ if (
335
+ newElement.type === 'bpmn:DataStoreReference' ||
336
+ newElement.type === 'bpmn:DataObjectReference'
337
+ ) {
338
+ newElement.x = element.x + (element.width - newElement.width) / 2;
339
+ }
340
+
341
+ return replace.replaceElement(element, newElement, { ...hints, targetElement });
342
+ }
343
+
344
+ this.replaceElement = replaceElement;
345
+ }
346
+
347
+ BpmnReplace.$inject = [
348
+ 'bpmnFactory',
349
+ 'elementFactory',
350
+ 'moddleCopy',
351
+ 'modeling',
352
+ 'replace',
353
+ 'rules'
354
+ ];
355
+
356
+ /**
357
+ * @param {ModdleElement} businessObject
358
+ *
359
+ * @return {boolean}
360
+ */
361
+ function isSubProcess(businessObject) {
362
+ return is(businessObject, 'bpmn:SubProcess');
363
+ }
364
+
365
+ /**
366
+ * @param {Element|ModdleElement} element
367
+ * @param {string} type
368
+ *
369
+ * @return {boolean}
370
+ */
371
+ function hasEventDefinition(element, type) {
372
+ var businessObject = getBusinessObject(element);
373
+
374
+ return type && businessObject.get('eventDefinitions').some(function(definition) {
375
+ return is(definition, type);
376
+ });
377
+ }
378
+
379
+ /**
380
+ * Compute intersection between two arrays.
381
+ *
382
+ * @param {Array} a
383
+ * @param {Array} b
384
+ *
385
+ * @return {Array}
386
+ */
387
+ function intersection(a, b) {
388
+ return a.filter(function(item) {
389
+ return b.includes(item);
390
+ });
391
+ }