bpmn-js 18.6.1 → 18.6.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (340) 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 +38928 -38906
  5. package/dist/bpmn-modeler.production.min.js +2 -2
  6. package/dist/bpmn-navigated-viewer.development.js +21211 -21189
  7. package/dist/bpmn-navigated-viewer.production.min.js +2 -2
  8. package/dist/bpmn-viewer.development.js +21152 -21130
  9. package/dist/bpmn-viewer.production.min.js +2 -2
  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 +2412 -2390
  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 +17 -17
  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 +18 -18
  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 +10 -10
  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 +592 -592
  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/ModdleCopy.js +286 -286
  66. package/lib/features/copy-paste/index.d.ts +11 -11
  67. package/lib/features/copy-paste/index.js +13 -13
  68. package/lib/features/di-ordering/BpmnDiOrdering.d.ts +11 -11
  69. package/lib/features/di-ordering/BpmnDiOrdering.js +48 -48
  70. package/lib/features/di-ordering/index.d.ts +6 -6
  71. package/lib/features/di-ordering/index.js +7 -7
  72. package/lib/features/distribute-elements/BpmnDistributeElements.d.ts +10 -10
  73. package/lib/features/distribute-elements/BpmnDistributeElements.js +60 -60
  74. package/lib/features/distribute-elements/DistributeElementsIcons.d.ts +5 -5
  75. package/lib/features/distribute-elements/DistributeElementsIcons.js +18 -18
  76. package/lib/features/distribute-elements/DistributeElementsMenuProvider.d.ts +32 -32
  77. package/lib/features/distribute-elements/DistributeElementsMenuProvider.js +92 -92
  78. package/lib/features/distribute-elements/index.d.ts +13 -13
  79. package/lib/features/distribute-elements/index.js +19 -19
  80. package/lib/features/drilldown/DrilldownBreadcrumbs.d.ts +19 -19
  81. package/lib/features/drilldown/DrilldownBreadcrumbs.js +138 -138
  82. package/lib/features/drilldown/DrilldownCentering.d.ts +17 -17
  83. package/lib/features/drilldown/DrilldownCentering.js +122 -122
  84. package/lib/features/drilldown/DrilldownOverlayBehavior.d.ts +20 -20
  85. package/lib/features/drilldown/DrilldownOverlayBehavior.js +218 -218
  86. package/lib/features/drilldown/SubprocessCompatibility.d.ts +21 -21
  87. package/lib/features/drilldown/SubprocessCompatibility.js +266 -266
  88. package/lib/features/drilldown/index.d.ts +19 -19
  89. package/lib/features/drilldown/index.js +16 -16
  90. package/lib/features/editor-actions/BpmnEditorActions.d.ts +13 -13
  91. package/lib/features/editor-actions/BpmnEditorActions.js +187 -187
  92. package/lib/features/editor-actions/index.d.ts +8 -8
  93. package/lib/features/editor-actions/index.js +10 -10
  94. package/lib/features/grid-snapping/BpmnGridSnapping.d.ts +9 -9
  95. package/lib/features/grid-snapping/behavior/GridSnappingAutoPlaceBehavior.d.ts +14 -14
  96. package/lib/features/grid-snapping/behavior/GridSnappingLayoutConnectionBehavior.d.ts +27 -27
  97. package/lib/features/grid-snapping/behavior/GridSnappingLayoutConnectionBehavior.js +155 -155
  98. package/lib/features/grid-snapping/behavior/GridSnappingParticipantBehavior.d.ts +13 -13
  99. package/lib/features/grid-snapping/behavior/index.d.ts +10 -10
  100. package/lib/features/grid-snapping/index.d.ts +13 -13
  101. package/lib/features/interaction-events/BpmnInteractionEvents.d.ts +18 -18
  102. package/lib/features/interaction-events/BpmnInteractionEvents.js +146 -146
  103. package/lib/features/interaction-events/index.d.ts +6 -6
  104. package/lib/features/interaction-events/index.js +5 -5
  105. package/lib/features/keyboard/BpmnKeyboardBindings.d.ts +15 -15
  106. package/lib/features/keyboard/BpmnKeyboardBindings.js +179 -179
  107. package/lib/features/keyboard/index.d.ts +10 -10
  108. package/lib/features/keyboard/index.js +11 -11
  109. package/lib/features/label-editing/LabelEditingPreview.d.ts +13 -13
  110. package/lib/features/label-editing/LabelEditingPreview.js +145 -145
  111. package/lib/features/label-editing/LabelEditingProvider.d.ts +62 -62
  112. package/lib/features/label-editing/LabelEditingProvider.js +519 -519
  113. package/lib/features/label-editing/LabelUtil.d.ts +1 -1
  114. package/lib/features/label-editing/LabelUtil.js +4 -4
  115. package/lib/features/label-editing/cmd/UpdateLabelHandler.d.ts +22 -22
  116. package/lib/features/label-editing/cmd/UpdateLabelHandler.js +149 -149
  117. package/lib/features/label-editing/index.d.ts +9 -9
  118. package/lib/features/label-editing/index.js +21 -21
  119. package/lib/features/modeling/BpmnFactory.d.ts +73 -73
  120. package/lib/features/modeling/BpmnFactory.js +180 -180
  121. package/lib/features/modeling/BpmnLayouter.d.ts +30 -30
  122. package/lib/features/modeling/BpmnLayouter.js +488 -488
  123. package/lib/features/modeling/BpmnUpdater.d.ts +90 -90
  124. package/lib/features/modeling/BpmnUpdater.js +818 -818
  125. package/lib/features/modeling/ElementFactory.d.ts +117 -117
  126. package/lib/features/modeling/ElementFactory.js +412 -412
  127. package/lib/features/modeling/ElementFactory.test.ts +132 -132
  128. package/lib/features/modeling/Modeling.d.ts +150 -150
  129. package/lib/features/modeling/Modeling.js +309 -309
  130. package/lib/features/modeling/Modeling.test.ts +147 -147
  131. package/lib/features/modeling/behavior/AdaptiveLabelPositioningBehavior.d.ts +19 -19
  132. package/lib/features/modeling/behavior/AdaptiveLabelPositioningBehavior.js +288 -288
  133. package/lib/features/modeling/behavior/AppendBehavior.d.ts +6 -6
  134. package/lib/features/modeling/behavior/AppendBehavior.js +42 -42
  135. package/lib/features/modeling/behavior/AssociationBehavior.d.ts +11 -11
  136. package/lib/features/modeling/behavior/AttachEventBehavior.d.ts +15 -15
  137. package/lib/features/modeling/behavior/AttachEventBehavior.js +106 -106
  138. package/lib/features/modeling/behavior/BoundaryEventBehavior.d.ts +15 -15
  139. package/lib/features/modeling/behavior/BoundaryEventBehavior.js +74 -74
  140. package/lib/features/modeling/behavior/CompensateBoundaryEventBehavior.d.ts +17 -17
  141. package/lib/features/modeling/behavior/CompensateBoundaryEventBehavior.js +222 -222
  142. package/lib/features/modeling/behavior/CreateBehavior.d.ts +9 -9
  143. package/lib/features/modeling/behavior/CreateBehavior.js +33 -33
  144. package/lib/features/modeling/behavior/CreateDataObjectBehavior.d.ts +15 -15
  145. package/lib/features/modeling/behavior/CreateDataObjectBehavior.js +43 -43
  146. package/lib/features/modeling/behavior/CreateParticipantBehavior.d.ts +19 -19
  147. package/lib/features/modeling/behavior/CreateParticipantBehavior.js +237 -237
  148. package/lib/features/modeling/behavior/DataInputAssociationBehavior.d.ts +21 -21
  149. package/lib/features/modeling/behavior/DataInputAssociationBehavior.js +162 -162
  150. package/lib/features/modeling/behavior/DataStoreBehavior.d.ts +19 -19
  151. package/lib/features/modeling/behavior/DeleteLaneBehavior.d.ts +15 -15
  152. package/lib/features/modeling/behavior/DeleteLaneBehavior.js +162 -162
  153. package/lib/features/modeling/behavior/DetachEventBehavior.d.ts +15 -15
  154. package/lib/features/modeling/behavior/DetachEventBehavior.js +101 -101
  155. package/lib/features/modeling/behavior/DropOnFlowBehavior.d.ts +13 -13
  156. package/lib/features/modeling/behavior/DropOnFlowBehavior.js +221 -221
  157. package/lib/features/modeling/behavior/EventBasedGatewayBehavior.d.ts +11 -11
  158. package/lib/features/modeling/behavior/EventBasedGatewayBehavior.js +110 -110
  159. package/lib/features/modeling/behavior/FixHoverBehavior.d.ts +17 -17
  160. package/lib/features/modeling/behavior/GroupBehavior.d.ts +26 -26
  161. package/lib/features/modeling/behavior/ImportDockingFix.d.ts +13 -13
  162. package/lib/features/modeling/behavior/ImportDockingFix.js +83 -83
  163. package/lib/features/modeling/behavior/IsHorizontalFix.d.ts +10 -10
  164. package/lib/features/modeling/behavior/IsHorizontalFix.js +54 -54
  165. package/lib/features/modeling/behavior/LabelBehavior.d.ts +56 -56
  166. package/lib/features/modeling/behavior/LabelBehavior.js +364 -364
  167. package/lib/features/modeling/behavior/LayoutConnectionBehavior.d.ts +16 -16
  168. package/lib/features/modeling/behavior/LayoutConnectionBehavior.js +121 -121
  169. package/lib/features/modeling/behavior/MessageFlowBehavior.d.ts +15 -15
  170. package/lib/features/modeling/behavior/NonInterruptingBehavior.d.ts +4 -4
  171. package/lib/features/modeling/behavior/NonInterruptingBehavior.js +41 -41
  172. package/lib/features/modeling/behavior/RemoveElementBehavior.d.ts +13 -13
  173. package/lib/features/modeling/behavior/RemoveElementBehavior.js +91 -91
  174. package/lib/features/modeling/behavior/RemoveEmbeddedLabelBoundsBehavior.d.ts +16 -16
  175. package/lib/features/modeling/behavior/RemoveEmbeddedLabelBoundsBehavior.js +41 -41
  176. package/lib/features/modeling/behavior/RemoveParticipantBehavior.d.ts +15 -15
  177. package/lib/features/modeling/behavior/RemoveParticipantBehavior.js +59 -59
  178. package/lib/features/modeling/behavior/ReplaceConnectionBehavior.d.ts +15 -15
  179. package/lib/features/modeling/behavior/ReplaceConnectionBehavior.js +194 -194
  180. package/lib/features/modeling/behavior/ReplaceElementBehaviour.d.ts +23 -23
  181. package/lib/features/modeling/behavior/ReplaceElementBehaviour.js +144 -144
  182. package/lib/features/modeling/behavior/ResizeBehavior.d.ts +64 -64
  183. package/lib/features/modeling/behavior/ResizeBehavior.js +265 -265
  184. package/lib/features/modeling/behavior/ResizeLaneBehavior.d.ts +16 -16
  185. package/lib/features/modeling/behavior/ResizeLaneBehavior.js +70 -70
  186. package/lib/features/modeling/behavior/RootElementReferenceBehavior.d.ts +25 -25
  187. package/lib/features/modeling/behavior/SetCompensationActivityAfterPasteBehavior.d.ts +16 -16
  188. package/lib/features/modeling/behavior/SetCompensationActivityAfterPasteBehavior.js +66 -66
  189. package/lib/features/modeling/behavior/SpaceToolBehavior.d.ts +10 -10
  190. package/lib/features/modeling/behavior/SpaceToolBehavior.js +207 -207
  191. package/lib/features/modeling/behavior/SubProcessPlaneBehavior.d.ts +28 -28
  192. package/lib/features/modeling/behavior/SubProcessPlaneBehavior.js +588 -588
  193. package/lib/features/modeling/behavior/SubProcessStartEventBehavior.d.ts +15 -15
  194. package/lib/features/modeling/behavior/SubProcessStartEventBehavior.js +56 -56
  195. package/lib/features/modeling/behavior/TextAnnotationBehavior.d.ts +6 -6
  196. package/lib/features/modeling/behavior/TextAnnotationBehavior.js +42 -42
  197. package/lib/features/modeling/behavior/ToggleCollapseConnectionBehaviour.d.ts +14 -14
  198. package/lib/features/modeling/behavior/ToggleCollapseConnectionBehaviour.js +87 -87
  199. package/lib/features/modeling/behavior/ToggleElementCollapseBehaviour.d.ts +13 -13
  200. package/lib/features/modeling/behavior/ToggleElementCollapseBehaviour.js +156 -156
  201. package/lib/features/modeling/behavior/UnclaimIdBehavior.d.ts +19 -19
  202. package/lib/features/modeling/behavior/UnclaimIdBehavior.js +64 -64
  203. package/lib/features/modeling/behavior/UnsetDefaultFlowBehavior.d.ts +16 -16
  204. package/lib/features/modeling/behavior/UnsetDefaultFlowBehavior.js +59 -59
  205. package/lib/features/modeling/behavior/UpdateFlowNodeRefsBehavior.d.ts +15 -15
  206. package/lib/features/modeling/behavior/UpdateFlowNodeRefsBehavior.js +157 -157
  207. package/lib/features/modeling/behavior/index.d.ts +85 -85
  208. package/lib/features/modeling/behavior/index.js +131 -131
  209. package/lib/features/modeling/behavior/util/CategoryUtil.d.ts +49 -49
  210. package/lib/features/modeling/behavior/util/CategoryUtil.js +86 -86
  211. package/lib/features/modeling/behavior/util/ConnectionLayoutUtil.d.ts +19 -19
  212. package/lib/features/modeling/behavior/util/ConnectionLayoutUtil.js +22 -22
  213. package/lib/features/modeling/behavior/util/GeometricUtil.d.ts +1 -1
  214. package/lib/features/modeling/behavior/util/LabelLayoutUtil.d.ts +32 -32
  215. package/lib/features/modeling/behavior/util/LabelLayoutUtil.js +41 -41
  216. package/lib/features/modeling/behavior/util/LayoutUtil.d.ts +48 -48
  217. package/lib/features/modeling/behavior/util/LayoutUtil.js +259 -259
  218. package/lib/features/modeling/behavior/util/LineAttachmentUtil.d.ts +37 -37
  219. package/lib/features/modeling/behavior/util/LineAttachmentUtil.js +241 -241
  220. package/lib/features/modeling/behavior/util/LineIntersect.d.ts +13 -13
  221. package/lib/features/modeling/behavior/util/LineIntersect.js +39 -39
  222. package/lib/features/modeling/behavior/util/NonInterruptingUtil.d.ts +3 -3
  223. package/lib/features/modeling/behavior/util/NonInterruptingUtil.js +32 -32
  224. package/lib/features/modeling/behavior/util/ResizeUtil.d.ts +1 -1
  225. package/lib/features/modeling/cmd/AddLaneHandler.d.ts +22 -22
  226. package/lib/features/modeling/cmd/AddLaneHandler.js +187 -187
  227. package/lib/features/modeling/cmd/IdClaimHandler.d.ts +22 -22
  228. package/lib/features/modeling/cmd/IdClaimHandler.js +51 -51
  229. package/lib/features/modeling/cmd/ResizeLaneHandler.d.ts +39 -39
  230. package/lib/features/modeling/cmd/ResizeLaneHandler.js +146 -146
  231. package/lib/features/modeling/cmd/SetColorHandler.d.ts +18 -18
  232. package/lib/features/modeling/cmd/SplitLaneHandler.d.ts +20 -20
  233. package/lib/features/modeling/cmd/SplitLaneHandler.js +99 -99
  234. package/lib/features/modeling/cmd/UpdateCanvasRootHandler.d.ts +20 -20
  235. package/lib/features/modeling/cmd/UpdateCanvasRootHandler.js +99 -99
  236. package/lib/features/modeling/cmd/UpdateFlowNodeRefsHandler.d.ts +21 -21
  237. package/lib/features/modeling/cmd/UpdateFlowNodeRefsHandler.js +218 -218
  238. package/lib/features/modeling/cmd/UpdateModdlePropertiesHandler.d.ts +20 -20
  239. package/lib/features/modeling/cmd/UpdateModdlePropertiesHandler.js +107 -107
  240. package/lib/features/modeling/cmd/UpdatePropertiesHandler.d.ts +58 -58
  241. package/lib/features/modeling/cmd/UpdatePropertiesHandler.js +260 -260
  242. package/lib/features/modeling/cmd/UpdateSemanticParentHandler.d.ts +18 -18
  243. package/lib/features/modeling/index.d.ts +39 -39
  244. package/lib/features/modeling/index.js +45 -45
  245. package/lib/features/modeling/util/LaneUtil.d.ts +46 -46
  246. package/lib/features/modeling/util/LaneUtil.js +188 -188
  247. package/lib/features/modeling/util/ModelingUtil.d.ts +23 -23
  248. package/lib/features/modeling/util/ModelingUtil.js +88 -88
  249. package/lib/features/modeling-feedback/ModelingFeedback.d.ts +13 -13
  250. package/lib/features/modeling-feedback/ModelingFeedback.js +51 -51
  251. package/lib/features/modeling-feedback/index.d.ts +9 -9
  252. package/lib/features/modeling-feedback/index.js +12 -12
  253. package/lib/features/ordering/BpmnOrderingProvider.d.ts +19 -19
  254. package/lib/features/ordering/BpmnOrderingProvider.js +191 -191
  255. package/lib/features/ordering/index.d.ts +6 -6
  256. package/lib/features/ordering/index.js +5 -5
  257. package/lib/features/outline/OutlineProvider.d.ts +39 -39
  258. package/lib/features/outline/OutlineProvider.js +189 -189
  259. package/lib/features/outline/OutlineUtil.d.ts +23 -23
  260. package/lib/features/outline/OutlineUtil.js +35 -35
  261. package/lib/features/outline/index.d.ts +10 -10
  262. package/lib/features/outline/index.js +10 -10
  263. package/lib/features/palette/PaletteProvider.d.ts +34 -34
  264. package/lib/features/palette/PaletteProvider.js +214 -214
  265. package/lib/features/palette/index.d.ts +22 -22
  266. package/lib/features/palette/index.js +23 -23
  267. package/lib/features/popup-menu/ReplaceMenuProvider.d.ts +52 -52
  268. package/lib/features/popup-menu/ReplaceMenuProvider.js +656 -656
  269. package/lib/features/popup-menu/index.d.ts +13 -13
  270. package/lib/features/popup-menu/index.js +16 -16
  271. package/lib/features/popup-menu/util/Icons.d.ts +5 -5
  272. package/lib/features/popup-menu/util/Icons.js +14 -14
  273. package/lib/features/popup-menu/util/TypeUtil.d.ts +14 -14
  274. package/lib/features/popup-menu/util/TypeUtil.js +52 -52
  275. package/lib/features/replace/BpmnReplace.d.ts +45 -45
  276. package/lib/features/replace/BpmnReplace.js +391 -391
  277. package/lib/features/replace/ReplaceOptions.d.ts +85 -85
  278. package/lib/features/replace/ReplaceOptions.js +1198 -1198
  279. package/lib/features/replace/index.d.ts +16 -16
  280. package/lib/features/replace/index.js +14 -14
  281. package/lib/features/replace-preview/BpmnReplacePreview.d.ts +17 -17
  282. package/lib/features/replace-preview/BpmnReplacePreview.js +139 -139
  283. package/lib/features/replace-preview/index.d.ts +9 -9
  284. package/lib/features/replace-preview/index.js +11 -11
  285. package/lib/features/rules/BpmnRules.d.ts +181 -181
  286. package/lib/features/rules/BpmnRules.js +1191 -1191
  287. package/lib/features/rules/index.d.ts +9 -9
  288. package/lib/features/rules/index.js +11 -11
  289. package/lib/features/search/BpmnSearchProvider.d.ts +34 -34
  290. package/lib/features/search/BpmnSearchProvider.js +91 -91
  291. package/lib/features/search/index.d.ts +11 -11
  292. package/lib/features/search/index.js +14 -14
  293. package/lib/features/snapping/BpmnConnectSnapping.d.ts +17 -17
  294. package/lib/features/snapping/BpmnCreateMoveSnapping.d.ts +41 -41
  295. package/lib/features/snapping/BpmnCreateMoveSnapping.js +289 -289
  296. package/lib/features/snapping/BpmnSnappingUtil.d.ts +11 -11
  297. package/lib/features/snapping/index.d.ts +13 -13
  298. package/lib/features/snapping/index.js +12 -12
  299. package/lib/features/space-tool/BpmnSpaceTool.d.ts +24 -24
  300. package/lib/features/space-tool/BpmnSpaceTool.js +96 -96
  301. package/lib/features/space-tool/index.d.ts +9 -9
  302. package/lib/features/space-tool/index.js +7 -7
  303. package/lib/import/BpmnImporter.d.ts +51 -51
  304. package/lib/import/BpmnImporter.js +363 -363
  305. package/lib/import/BpmnTreeWalker.d.ts +20 -20
  306. package/lib/import/BpmnTreeWalker.js +452 -452
  307. package/lib/import/Importer.d.ts +25 -25
  308. package/lib/import/Importer.js +222 -222
  309. package/lib/import/Util.d.ts +1 -1
  310. package/lib/import/Util.js +6 -6
  311. package/lib/import/index.d.ts +8 -8
  312. package/lib/import/index.js +9 -9
  313. package/lib/index.d.ts +1 -1
  314. package/lib/index.js +2 -2
  315. package/lib/model/Types.d.ts +25 -25
  316. package/lib/model/Types.ts +40 -40
  317. package/lib/util/CompatibilityUtil.d.ts +8 -8
  318. package/lib/util/CompatibilityUtil.js +29 -29
  319. package/lib/util/DiUtil.d.ts +60 -60
  320. package/lib/util/DiUtil.js +122 -122
  321. package/lib/util/DrilldownUtil.d.ts +39 -39
  322. package/lib/util/DrilldownUtil.js +69 -69
  323. package/lib/util/LabelUtil.d.ts +83 -83
  324. package/lib/util/LabelUtil.js +266 -266
  325. package/lib/util/ModelUtil.d.ts +40 -40
  326. package/lib/util/ModelUtil.js +58 -58
  327. package/lib/util/PoweredByUtil.d.ts +8 -8
  328. package/lib/util/PoweredByUtil.js +99 -99
  329. package/lib/util/Types.js +4 -4
  330. package/lib/util/Types.ts +3 -3
  331. package/package.json +2 -2
  332. package/test/helper/TranslationCollector.js +15 -15
  333. package/test/helper/index.js +313 -313
  334. package/test/matchers/BoundsMatchers.js +252 -252
  335. package/test/matchers/ConnectionMatchers.js +165 -165
  336. package/test/matchers/JSONMatcher.js +19 -19
  337. package/test/util/KeyEvents.js +22 -22
  338. package/test/util/MockEvents.js +61 -61
  339. package/test/util/custom-rules/CustomRules.js +16 -16
  340. package/test/util/custom-rules/index.js +6 -6
@@ -1,588 +1,588 @@
1
- import inherits from 'inherits-browser';
2
-
3
- import CommandInterceptor from 'diagram-js/lib/command/CommandInterceptor';
4
-
5
- import { find } from 'min-dash';
6
-
7
- import { isExpanded } from '../../../util/DiUtil';
8
-
9
- import { getBusinessObject, getDi, is } from '../../../util/ModelUtil';
10
-
11
- import { getMid } from 'diagram-js/lib/layout/LayoutUtil';
12
-
13
- import { getBBox } from 'diagram-js/lib/util/Elements';
14
-
15
- import {
16
- getPlaneIdFromShape,
17
- getShapeIdFromPlane,
18
- isPlane,
19
- toPlaneId
20
- } from '../../../util/DrilldownUtil';
21
-
22
- /**
23
- * @typedef {import('diagram-js/lib/core/Canvas').default} Canvas
24
- * @typedef {import('diagram-js/lib/core/EventBus').default} EventBus
25
- * @typedef {import('../Modeling').default} Modeling
26
- * @typedef {import('../ElementFactory').default} ElementFactory
27
- * @typedef {import('../BpmnFactory').default} BpmnFactory
28
- * @typedef {import('../../../Modeler').default} Modeler
29
- * @typedef {import('diagram-js/lib/core/ElementRegistry').default} ElementRegistry
30
- *
31
- * @typedef {import('../../../model/Types').Element} Element
32
- * @typedef {import('../../../model/Types').Root} Root
33
- * @typedef {import('../../../model/Types').ModdleElement} ModdleElement
34
- */
35
-
36
- var LOW_PRIORITY = 400;
37
- var HIGH_PRIORITY = 600;
38
-
39
- var DEFAULT_POSITION = {
40
- x: 180,
41
- y: 160
42
- };
43
-
44
-
45
- /**
46
- * Creates bpmndi:BPMNPlane elements and canvas planes when collapsed subprocesses are created.
47
- *
48
- * @param {Canvas} canvas
49
- * @param {EventBus} eventBus
50
- * @param {Modeling} modeling
51
- * @param {ElementFactory} elementFactory
52
- * @param {BpmnFactory} bpmnFactory
53
- * @param {Modeler} bpmnjs
54
- * @param {ElementRegistry} elementRegistry
55
- */
56
- export default function SubProcessPlaneBehavior(
57
- canvas, eventBus, modeling,
58
- elementFactory, bpmnFactory, bpmnjs, elementRegistry) {
59
-
60
- CommandInterceptor.call(this, eventBus);
61
-
62
- this._canvas = canvas;
63
- this._eventBus = eventBus;
64
- this._modeling = modeling;
65
- this._elementFactory = elementFactory;
66
- this._bpmnFactory = bpmnFactory;
67
- this._bpmnjs = bpmnjs;
68
- this._elementRegistry = elementRegistry;
69
-
70
- var self = this;
71
-
72
- function isCollapsedSubProcess(element) {
73
- return is(element, 'bpmn:SubProcess') && !isExpanded(element);
74
- }
75
-
76
- function createRoot(context) {
77
- var shape = context.shape,
78
- rootElement = context.newRootElement;
79
-
80
- var businessObject = getBusinessObject(shape);
81
-
82
- rootElement = self._addDiagram(rootElement || businessObject);
83
-
84
- context.newRootElement = canvas.addRootElement(rootElement);
85
- }
86
-
87
- function removeRoot(context) {
88
- var shape = context.shape;
89
-
90
- var businessObject = getBusinessObject(shape);
91
- self._removeDiagram(businessObject);
92
-
93
- var rootElement = context.newRootElement = elementRegistry.get(getPlaneIdFromShape(businessObject));
94
-
95
- canvas.removeRootElement(rootElement);
96
- }
97
-
98
- // add plane elements for newly created sub-processes
99
- // this ensures we can actually drill down into the element
100
- this.executed('shape.create', function(context) {
101
- var shape = context.shape;
102
- if (!isCollapsedSubProcess(shape)) {
103
- return;
104
- }
105
-
106
- createRoot(context);
107
- }, true);
108
-
109
-
110
- this.postExecuted('shape.create', function(context) {
111
- var shape = context.shape,
112
- rootElement = context.newRootElement;
113
-
114
- if (!rootElement || !shape.children) {
115
- return;
116
- }
117
-
118
- self._showRecursively(shape.children);
119
-
120
- self._moveChildrenToShape(shape, rootElement);
121
- }, true);
122
-
123
-
124
- this.reverted('shape.create', function(context) {
125
- var shape = context.shape;
126
- if (!isCollapsedSubProcess(shape)) {
127
- return;
128
- }
129
-
130
- removeRoot(context);
131
- }, true);
132
-
133
-
134
- this.preExecuted('shape.delete', function(context) {
135
- var shape = context.shape;
136
- if (!isCollapsedSubProcess(shape)) {
137
- return;
138
- }
139
-
140
- var attachedRoot = elementRegistry.get(getPlaneIdFromShape(shape));
141
-
142
- if (!attachedRoot) {
143
- return;
144
- }
145
-
146
- modeling.removeElements(attachedRoot.children.slice());
147
- }, true);
148
-
149
-
150
- this.executed('shape.delete', function(context) {
151
- var shape = context.shape;
152
- if (!isCollapsedSubProcess(shape)) {
153
- return;
154
- }
155
- removeRoot(context);
156
- }, true);
157
-
158
-
159
- this.reverted('shape.delete', function(context) {
160
- var shape = context.shape;
161
- if (!isCollapsedSubProcess(shape)) {
162
- return;
163
- }
164
-
165
- createRoot(context);
166
- }, true);
167
-
168
-
169
- this.preExecuted('shape.replace', function(context) {
170
- var oldShape = context.oldShape;
171
- var newShape = context.newShape;
172
-
173
- if (!isCollapsedSubProcess(oldShape) || !isCollapsedSubProcess(newShape)) {
174
- return;
175
- }
176
-
177
- // old plane could have content,
178
- // we remove it so it is not recursively deleted from 'shape.delete'
179
- context.oldRoot = canvas.removeRootElement(getPlaneIdFromShape(oldShape));
180
- }, true);
181
-
182
-
183
- this.postExecuted('shape.replace', function(context) {
184
- var newShape = context.newShape,
185
- source = context.oldRoot,
186
- target = canvas.findRoot(getPlaneIdFromShape(newShape));
187
-
188
- if (!source || !target) {
189
- return;
190
- }
191
- var elements = source.children;
192
-
193
- modeling.moveElements(elements, { x: 0, y: 0 }, target);
194
- }, true);
195
-
196
-
197
- // rename primary elements when the secondary element changes
198
- // this ensures rootElement.id = element.id + '_plane'
199
- this.executed('element.updateProperties', function(context) {
200
- var shape = context.element;
201
-
202
- if (!is(shape, 'bpmn:SubProcess')) {
203
- return;
204
- }
205
-
206
- var properties = context.properties;
207
- var oldProperties = context.oldProperties;
208
-
209
- var oldId = oldProperties.id,
210
- newId = properties.id;
211
-
212
- if (oldId === newId) {
213
- return;
214
- }
215
-
216
- if (isPlane(shape)) {
217
- elementRegistry.updateId(shape, toPlaneId(newId));
218
- elementRegistry.updateId(oldId, newId);
219
-
220
- return;
221
- }
222
-
223
- var planeElement = elementRegistry.get(toPlaneId(oldId));
224
-
225
- if (!planeElement) {
226
- return;
227
- }
228
-
229
- elementRegistry.updateId(toPlaneId(oldId), toPlaneId(newId));
230
- }, true);
231
-
232
-
233
- this.reverted('element.updateProperties', function(context) {
234
- var shape = context.element;
235
-
236
- if (!is(shape, 'bpmn:SubProcess')) {
237
- return;
238
- }
239
-
240
- var properties = context.properties;
241
- var oldProperties = context.oldProperties;
242
-
243
- var oldId = oldProperties.id,
244
- newId = properties.id;
245
-
246
- if (oldId === newId) {
247
- return;
248
- }
249
-
250
- if (isPlane(shape)) {
251
- elementRegistry.updateId(shape, toPlaneId(oldId));
252
- elementRegistry.updateId(newId, oldId);
253
-
254
- return;
255
- }
256
-
257
- var planeElement = elementRegistry.get(toPlaneId(newId));
258
-
259
- if (!planeElement) {
260
- return;
261
- }
262
-
263
- elementRegistry.updateId(planeElement, toPlaneId(oldId));
264
- }, true);
265
-
266
- // re-throw element.changed to re-render primary shape if associated plane has
267
- // changed (e.g. bpmn:name property has changed)
268
- eventBus.on('element.changed', function(context) {
269
- var element = context.element;
270
-
271
- if (!isPlane(element)) {
272
- return;
273
- }
274
-
275
- var plane = element;
276
-
277
- var primaryShape = elementRegistry.get(getShapeIdFromPlane(plane));
278
-
279
- // do not re-throw if no associated primary shape (e.g. bpmn:Process)
280
- if (!primaryShape || primaryShape === plane) {
281
- return;
282
- }
283
-
284
- eventBus.fire('element.changed', { element: primaryShape });
285
- });
286
-
287
-
288
- // create/remove plane for the subprocess
289
- this.executed('shape.toggleCollapse', LOW_PRIORITY, function(context) {
290
- var shape = context.shape;
291
-
292
- if (!is(shape, 'bpmn:SubProcess')) {
293
- return;
294
- }
295
-
296
- if (!isExpanded(shape)) {
297
- createRoot(context);
298
- self._showRecursively(shape.children);
299
- } else {
300
- removeRoot(context);
301
- }
302
-
303
- }, true);
304
-
305
-
306
- // create/remove plane for the subprocess
307
- this.reverted('shape.toggleCollapse', LOW_PRIORITY, function(context) {
308
- var shape = context.shape;
309
-
310
- if (!is(shape, 'bpmn:SubProcess')) {
311
- return;
312
- }
313
-
314
- if (!isExpanded(shape)) {
315
- createRoot(context);
316
- self._showRecursively(shape.children);
317
- } else {
318
- removeRoot(context);
319
- }
320
-
321
- }, true);
322
-
323
- // move elements between planes
324
- this.postExecuted('shape.toggleCollapse', HIGH_PRIORITY, function(context) {
325
- var shape = context.shape;
326
-
327
- if (!is(shape, 'bpmn:SubProcess')) {
328
- return;
329
- }
330
-
331
- var rootElement = context.newRootElement;
332
-
333
- if (!rootElement) {
334
- return;
335
- }
336
-
337
- if (!isExpanded(shape)) {
338
-
339
- // collapsed
340
- self._moveChildrenToShape(shape, rootElement);
341
-
342
- } else {
343
- self._moveChildrenToShape(rootElement, shape);
344
- }
345
- }, true);
346
-
347
-
348
- // copy-paste ///////////
349
-
350
- // add elements in plane to tree
351
- eventBus.on('copyPaste.createTree', function(context) {
352
- var element = context.element,
353
- children = context.children;
354
-
355
- if (!isCollapsedSubProcess(element)) {
356
- return;
357
- }
358
-
359
- var id = getPlaneIdFromShape(element);
360
- var parent = elementRegistry.get(id);
361
-
362
- if (parent) {
363
-
364
- // do not copy invisible root element
365
- children.push.apply(children, parent.children);
366
- }
367
- });
368
-
369
- // set plane children as direct children of collapsed shape
370
- eventBus.on('copyPaste.copyElement', function(context) {
371
- var descriptor = context.descriptor,
372
- element = context.element,
373
- elements = context.elements;
374
-
375
- var parent = element.parent;
376
-
377
- var isPlane = is(getDi(parent), 'bpmndi:BPMNPlane');
378
- if (!isPlane) {
379
- return;
380
- }
381
-
382
- var parentId = getShapeIdFromPlane(parent);
383
-
384
- var referencedShape = find(elements, function(element) {
385
- return element.id === parentId;
386
- });
387
-
388
- if (!referencedShape) {
389
- return;
390
- }
391
-
392
- descriptor.parent = referencedShape.id;
393
- });
394
-
395
- // hide children during pasting
396
- eventBus.on('copyPaste.pasteElement', function(context) {
397
- var descriptor = context.descriptor;
398
-
399
- if (!descriptor.parent) {
400
- return;
401
- }
402
-
403
- if (isCollapsedSubProcess(descriptor.parent) || descriptor.parent.hidden) {
404
- descriptor.hidden = true;
405
- }
406
- });
407
-
408
- }
409
-
410
- inherits(SubProcessPlaneBehavior, CommandInterceptor);
411
-
412
- /**
413
- * Moves the child elements from source to target.
414
- *
415
- * If the target is a plane, the children are moved to the top left corner.
416
- * Otherwise, the center of the target is used.
417
- *
418
- * @param {Root} source
419
- * @param {Root} target
420
- */
421
- SubProcessPlaneBehavior.prototype._moveChildrenToShape = function(source, target) {
422
- var modeling = this._modeling;
423
-
424
- var children = source.children;
425
- var offset;
426
-
427
- if (!children) {
428
- return;
429
- }
430
-
431
- // add external labels that weren't children of sub process
432
- children = children.concat(children.reduce(function(labels, child) {
433
- if (child.label && child.label.parent !== source) {
434
- return labels.concat(child.label);
435
- }
436
-
437
- return labels;
438
- }, []));
439
-
440
- // only change plane if there are no visible children, but don't move them
441
- var visibleChildren = children.filter(function(child) {
442
- return !child.hidden;
443
- });
444
-
445
- if (!visibleChildren.length) {
446
- modeling.moveElements(children, { x: 0, y: 0 }, target, { autoResize: false });
447
- return;
448
- }
449
-
450
- var childrenBounds = getBBox(visibleChildren);
451
-
452
- // target is a plane
453
- if (!target.x) {
454
- offset = {
455
- x: DEFAULT_POSITION.x - childrenBounds.x,
456
- y: DEFAULT_POSITION.y - childrenBounds.y
457
- };
458
- }
459
-
460
- // source is a plane
461
- else {
462
-
463
- // move relative to the center of the shape
464
- var targetMid = getMid(target);
465
- var childrenMid = getMid(childrenBounds);
466
-
467
- offset = {
468
- x: targetMid.x - childrenMid.x,
469
- y: targetMid.y - childrenMid.y
470
- };
471
- }
472
-
473
- modeling.moveElements(children, offset, target, { autoResize: false });
474
- };
475
-
476
- /**
477
- * Sets `hidden` property on all children of the given shape.
478
- *
479
- * @param {Element[]} elements
480
- * @param {boolean} [hidden=false]
481
- *
482
- * @return {Element[]}
483
- */
484
- SubProcessPlaneBehavior.prototype._showRecursively = function(elements, hidden) {
485
- var self = this;
486
-
487
- var result = [];
488
- elements.forEach(function(element) {
489
- element.hidden = !!hidden;
490
-
491
- result = result.concat(element);
492
-
493
- if (element.children) {
494
- result = result.concat(
495
- self._showRecursively(element.children, element.collapsed || hidden)
496
- );
497
- }
498
- });
499
-
500
- return result;
501
- };
502
-
503
- /**
504
- * Adds a given root element to the BPMNDI diagrams.
505
- *
506
- * @param {Root|ModdleElement} planeElement
507
- *
508
- * @return {Root}
509
- */
510
- SubProcessPlaneBehavior.prototype._addDiagram = function(planeElement) {
511
- var bpmnjs = this._bpmnjs;
512
- var diagrams = bpmnjs.getDefinitions().diagrams;
513
-
514
- if (!planeElement.businessObject) {
515
- planeElement = this._createNewDiagram(planeElement);
516
- }
517
-
518
- diagrams.push(planeElement.di.$parent);
519
-
520
- return planeElement;
521
- };
522
-
523
-
524
- /**
525
- * Creates a new plane element for the given sub process.
526
- *
527
- * @param {ModdleElement} bpmnElement
528
- *
529
- * @return {Root}
530
- */
531
- SubProcessPlaneBehavior.prototype._createNewDiagram = function(bpmnElement) {
532
- var bpmnFactory = this._bpmnFactory,
533
- elementFactory = this._elementFactory;
534
-
535
- var diPlane = bpmnFactory.create('bpmndi:BPMNPlane', {
536
- bpmnElement: bpmnElement
537
- });
538
-
539
- var diDiagram = bpmnFactory.create('bpmndi:BPMNDiagram', {
540
- plane: diPlane
541
- });
542
-
543
- diPlane.$parent = diDiagram;
544
-
545
- // add a virtual element (not being drawn),
546
- // a copy cat of our BpmnImporter code
547
- var planeElement = elementFactory.createRoot({
548
- id: getPlaneIdFromShape(bpmnElement),
549
- type: bpmnElement.$type,
550
- di: diPlane,
551
- businessObject: bpmnElement,
552
- collapsed: true
553
- });
554
-
555
- return planeElement;
556
- };
557
-
558
- /**
559
- * Removes the diagram for a given root element.
560
- *
561
- * @param {Root} rootElement
562
- *
563
- * @return {ModdleElement}
564
- */
565
- SubProcessPlaneBehavior.prototype._removeDiagram = function(rootElement) {
566
- var bpmnjs = this._bpmnjs;
567
-
568
- var diagrams = bpmnjs.getDefinitions().diagrams;
569
-
570
- var removedDiagram = find(diagrams, function(diagram) {
571
- return diagram.plane.bpmnElement.id === rootElement.id;
572
- });
573
-
574
- diagrams.splice(diagrams.indexOf(removedDiagram), 1);
575
-
576
- return removedDiagram;
577
- };
578
-
579
-
580
- SubProcessPlaneBehavior.$inject = [
581
- 'canvas',
582
- 'eventBus',
583
- 'modeling',
584
- 'elementFactory',
585
- 'bpmnFactory',
586
- 'bpmnjs',
587
- 'elementRegistry'
588
- ];
1
+ import inherits from 'inherits-browser';
2
+
3
+ import CommandInterceptor from 'diagram-js/lib/command/CommandInterceptor';
4
+
5
+ import { find } from 'min-dash';
6
+
7
+ import { isExpanded } from '../../../util/DiUtil';
8
+
9
+ import { getBusinessObject, getDi, is } from '../../../util/ModelUtil';
10
+
11
+ import { getMid } from 'diagram-js/lib/layout/LayoutUtil';
12
+
13
+ import { getBBox } from 'diagram-js/lib/util/Elements';
14
+
15
+ import {
16
+ getPlaneIdFromShape,
17
+ getShapeIdFromPlane,
18
+ isPlane,
19
+ toPlaneId
20
+ } from '../../../util/DrilldownUtil';
21
+
22
+ /**
23
+ * @typedef {import('diagram-js/lib/core/Canvas').default} Canvas
24
+ * @typedef {import('diagram-js/lib/core/EventBus').default} EventBus
25
+ * @typedef {import('../Modeling').default} Modeling
26
+ * @typedef {import('../ElementFactory').default} ElementFactory
27
+ * @typedef {import('../BpmnFactory').default} BpmnFactory
28
+ * @typedef {import('../../../Modeler').default} Modeler
29
+ * @typedef {import('diagram-js/lib/core/ElementRegistry').default} ElementRegistry
30
+ *
31
+ * @typedef {import('../../../model/Types').Element} Element
32
+ * @typedef {import('../../../model/Types').Root} Root
33
+ * @typedef {import('../../../model/Types').ModdleElement} ModdleElement
34
+ */
35
+
36
+ var LOW_PRIORITY = 400;
37
+ var HIGH_PRIORITY = 600;
38
+
39
+ var DEFAULT_POSITION = {
40
+ x: 180,
41
+ y: 160
42
+ };
43
+
44
+
45
+ /**
46
+ * Creates bpmndi:BPMNPlane elements and canvas planes when collapsed subprocesses are created.
47
+ *
48
+ * @param {Canvas} canvas
49
+ * @param {EventBus} eventBus
50
+ * @param {Modeling} modeling
51
+ * @param {ElementFactory} elementFactory
52
+ * @param {BpmnFactory} bpmnFactory
53
+ * @param {Modeler} bpmnjs
54
+ * @param {ElementRegistry} elementRegistry
55
+ */
56
+ export default function SubProcessPlaneBehavior(
57
+ canvas, eventBus, modeling,
58
+ elementFactory, bpmnFactory, bpmnjs, elementRegistry) {
59
+
60
+ CommandInterceptor.call(this, eventBus);
61
+
62
+ this._canvas = canvas;
63
+ this._eventBus = eventBus;
64
+ this._modeling = modeling;
65
+ this._elementFactory = elementFactory;
66
+ this._bpmnFactory = bpmnFactory;
67
+ this._bpmnjs = bpmnjs;
68
+ this._elementRegistry = elementRegistry;
69
+
70
+ var self = this;
71
+
72
+ function isCollapsedSubProcess(element) {
73
+ return is(element, 'bpmn:SubProcess') && !isExpanded(element);
74
+ }
75
+
76
+ function createRoot(context) {
77
+ var shape = context.shape,
78
+ rootElement = context.newRootElement;
79
+
80
+ var businessObject = getBusinessObject(shape);
81
+
82
+ rootElement = self._addDiagram(rootElement || businessObject);
83
+
84
+ context.newRootElement = canvas.addRootElement(rootElement);
85
+ }
86
+
87
+ function removeRoot(context) {
88
+ var shape = context.shape;
89
+
90
+ var businessObject = getBusinessObject(shape);
91
+ self._removeDiagram(businessObject);
92
+
93
+ var rootElement = context.newRootElement = elementRegistry.get(getPlaneIdFromShape(businessObject));
94
+
95
+ canvas.removeRootElement(rootElement);
96
+ }
97
+
98
+ // add plane elements for newly created sub-processes
99
+ // this ensures we can actually drill down into the element
100
+ this.executed('shape.create', function(context) {
101
+ var shape = context.shape;
102
+ if (!isCollapsedSubProcess(shape)) {
103
+ return;
104
+ }
105
+
106
+ createRoot(context);
107
+ }, true);
108
+
109
+
110
+ this.postExecuted('shape.create', function(context) {
111
+ var shape = context.shape,
112
+ rootElement = context.newRootElement;
113
+
114
+ if (!rootElement || !shape.children) {
115
+ return;
116
+ }
117
+
118
+ self._showRecursively(shape.children);
119
+
120
+ self._moveChildrenToShape(shape, rootElement);
121
+ }, true);
122
+
123
+
124
+ this.reverted('shape.create', function(context) {
125
+ var shape = context.shape;
126
+ if (!isCollapsedSubProcess(shape)) {
127
+ return;
128
+ }
129
+
130
+ removeRoot(context);
131
+ }, true);
132
+
133
+
134
+ this.preExecuted('shape.delete', function(context) {
135
+ var shape = context.shape;
136
+ if (!isCollapsedSubProcess(shape)) {
137
+ return;
138
+ }
139
+
140
+ var attachedRoot = elementRegistry.get(getPlaneIdFromShape(shape));
141
+
142
+ if (!attachedRoot) {
143
+ return;
144
+ }
145
+
146
+ modeling.removeElements(attachedRoot.children.slice());
147
+ }, true);
148
+
149
+
150
+ this.executed('shape.delete', function(context) {
151
+ var shape = context.shape;
152
+ if (!isCollapsedSubProcess(shape)) {
153
+ return;
154
+ }
155
+ removeRoot(context);
156
+ }, true);
157
+
158
+
159
+ this.reverted('shape.delete', function(context) {
160
+ var shape = context.shape;
161
+ if (!isCollapsedSubProcess(shape)) {
162
+ return;
163
+ }
164
+
165
+ createRoot(context);
166
+ }, true);
167
+
168
+
169
+ this.preExecuted('shape.replace', function(context) {
170
+ var oldShape = context.oldShape;
171
+ var newShape = context.newShape;
172
+
173
+ if (!isCollapsedSubProcess(oldShape) || !isCollapsedSubProcess(newShape)) {
174
+ return;
175
+ }
176
+
177
+ // old plane could have content,
178
+ // we remove it so it is not recursively deleted from 'shape.delete'
179
+ context.oldRoot = canvas.removeRootElement(getPlaneIdFromShape(oldShape));
180
+ }, true);
181
+
182
+
183
+ this.postExecuted('shape.replace', function(context) {
184
+ var newShape = context.newShape,
185
+ source = context.oldRoot,
186
+ target = canvas.findRoot(getPlaneIdFromShape(newShape));
187
+
188
+ if (!source || !target) {
189
+ return;
190
+ }
191
+ var elements = source.children;
192
+
193
+ modeling.moveElements(elements, { x: 0, y: 0 }, target);
194
+ }, true);
195
+
196
+
197
+ // rename primary elements when the secondary element changes
198
+ // this ensures rootElement.id = element.id + '_plane'
199
+ this.executed('element.updateProperties', function(context) {
200
+ var shape = context.element;
201
+
202
+ if (!is(shape, 'bpmn:SubProcess')) {
203
+ return;
204
+ }
205
+
206
+ var properties = context.properties;
207
+ var oldProperties = context.oldProperties;
208
+
209
+ var oldId = oldProperties.id,
210
+ newId = properties.id;
211
+
212
+ if (oldId === newId) {
213
+ return;
214
+ }
215
+
216
+ if (isPlane(shape)) {
217
+ elementRegistry.updateId(shape, toPlaneId(newId));
218
+ elementRegistry.updateId(oldId, newId);
219
+
220
+ return;
221
+ }
222
+
223
+ var planeElement = elementRegistry.get(toPlaneId(oldId));
224
+
225
+ if (!planeElement) {
226
+ return;
227
+ }
228
+
229
+ elementRegistry.updateId(toPlaneId(oldId), toPlaneId(newId));
230
+ }, true);
231
+
232
+
233
+ this.reverted('element.updateProperties', function(context) {
234
+ var shape = context.element;
235
+
236
+ if (!is(shape, 'bpmn:SubProcess')) {
237
+ return;
238
+ }
239
+
240
+ var properties = context.properties;
241
+ var oldProperties = context.oldProperties;
242
+
243
+ var oldId = oldProperties.id,
244
+ newId = properties.id;
245
+
246
+ if (oldId === newId) {
247
+ return;
248
+ }
249
+
250
+ if (isPlane(shape)) {
251
+ elementRegistry.updateId(shape, toPlaneId(oldId));
252
+ elementRegistry.updateId(newId, oldId);
253
+
254
+ return;
255
+ }
256
+
257
+ var planeElement = elementRegistry.get(toPlaneId(newId));
258
+
259
+ if (!planeElement) {
260
+ return;
261
+ }
262
+
263
+ elementRegistry.updateId(planeElement, toPlaneId(oldId));
264
+ }, true);
265
+
266
+ // re-throw element.changed to re-render primary shape if associated plane has
267
+ // changed (e.g. bpmn:name property has changed)
268
+ eventBus.on('element.changed', function(context) {
269
+ var element = context.element;
270
+
271
+ if (!isPlane(element)) {
272
+ return;
273
+ }
274
+
275
+ var plane = element;
276
+
277
+ var primaryShape = elementRegistry.get(getShapeIdFromPlane(plane));
278
+
279
+ // do not re-throw if no associated primary shape (e.g. bpmn:Process)
280
+ if (!primaryShape || primaryShape === plane) {
281
+ return;
282
+ }
283
+
284
+ eventBus.fire('element.changed', { element: primaryShape });
285
+ });
286
+
287
+
288
+ // create/remove plane for the subprocess
289
+ this.executed('shape.toggleCollapse', LOW_PRIORITY, function(context) {
290
+ var shape = context.shape;
291
+
292
+ if (!is(shape, 'bpmn:SubProcess')) {
293
+ return;
294
+ }
295
+
296
+ if (!isExpanded(shape)) {
297
+ createRoot(context);
298
+ self._showRecursively(shape.children);
299
+ } else {
300
+ removeRoot(context);
301
+ }
302
+
303
+ }, true);
304
+
305
+
306
+ // create/remove plane for the subprocess
307
+ this.reverted('shape.toggleCollapse', LOW_PRIORITY, function(context) {
308
+ var shape = context.shape;
309
+
310
+ if (!is(shape, 'bpmn:SubProcess')) {
311
+ return;
312
+ }
313
+
314
+ if (!isExpanded(shape)) {
315
+ createRoot(context);
316
+ self._showRecursively(shape.children);
317
+ } else {
318
+ removeRoot(context);
319
+ }
320
+
321
+ }, true);
322
+
323
+ // move elements between planes
324
+ this.postExecuted('shape.toggleCollapse', HIGH_PRIORITY, function(context) {
325
+ var shape = context.shape;
326
+
327
+ if (!is(shape, 'bpmn:SubProcess')) {
328
+ return;
329
+ }
330
+
331
+ var rootElement = context.newRootElement;
332
+
333
+ if (!rootElement) {
334
+ return;
335
+ }
336
+
337
+ if (!isExpanded(shape)) {
338
+
339
+ // collapsed
340
+ self._moveChildrenToShape(shape, rootElement);
341
+
342
+ } else {
343
+ self._moveChildrenToShape(rootElement, shape);
344
+ }
345
+ }, true);
346
+
347
+
348
+ // copy-paste ///////////
349
+
350
+ // add elements in plane to tree
351
+ eventBus.on('copyPaste.createTree', function(context) {
352
+ var element = context.element,
353
+ children = context.children;
354
+
355
+ if (!isCollapsedSubProcess(element)) {
356
+ return;
357
+ }
358
+
359
+ var id = getPlaneIdFromShape(element);
360
+ var parent = elementRegistry.get(id);
361
+
362
+ if (parent) {
363
+
364
+ // do not copy invisible root element
365
+ children.push.apply(children, parent.children);
366
+ }
367
+ });
368
+
369
+ // set plane children as direct children of collapsed shape
370
+ eventBus.on('copyPaste.copyElement', function(context) {
371
+ var descriptor = context.descriptor,
372
+ element = context.element,
373
+ elements = context.elements;
374
+
375
+ var parent = element.parent;
376
+
377
+ var isPlane = is(getDi(parent), 'bpmndi:BPMNPlane');
378
+ if (!isPlane) {
379
+ return;
380
+ }
381
+
382
+ var parentId = getShapeIdFromPlane(parent);
383
+
384
+ var referencedShape = find(elements, function(element) {
385
+ return element.id === parentId;
386
+ });
387
+
388
+ if (!referencedShape) {
389
+ return;
390
+ }
391
+
392
+ descriptor.parent = referencedShape.id;
393
+ });
394
+
395
+ // hide children during pasting
396
+ eventBus.on('copyPaste.pasteElement', function(context) {
397
+ var descriptor = context.descriptor;
398
+
399
+ if (!descriptor.parent) {
400
+ return;
401
+ }
402
+
403
+ if (isCollapsedSubProcess(descriptor.parent) || descriptor.parent.hidden) {
404
+ descriptor.hidden = true;
405
+ }
406
+ });
407
+
408
+ }
409
+
410
+ inherits(SubProcessPlaneBehavior, CommandInterceptor);
411
+
412
+ /**
413
+ * Moves the child elements from source to target.
414
+ *
415
+ * If the target is a plane, the children are moved to the top left corner.
416
+ * Otherwise, the center of the target is used.
417
+ *
418
+ * @param {Root} source
419
+ * @param {Root} target
420
+ */
421
+ SubProcessPlaneBehavior.prototype._moveChildrenToShape = function(source, target) {
422
+ var modeling = this._modeling;
423
+
424
+ var children = source.children;
425
+ var offset;
426
+
427
+ if (!children) {
428
+ return;
429
+ }
430
+
431
+ // add external labels that weren't children of sub process
432
+ children = children.concat(children.reduce(function(labels, child) {
433
+ if (child.label && child.label.parent !== source) {
434
+ return labels.concat(child.label);
435
+ }
436
+
437
+ return labels;
438
+ }, []));
439
+
440
+ // only change plane if there are no visible children, but don't move them
441
+ var visibleChildren = children.filter(function(child) {
442
+ return !child.hidden;
443
+ });
444
+
445
+ if (!visibleChildren.length) {
446
+ modeling.moveElements(children, { x: 0, y: 0 }, target, { autoResize: false });
447
+ return;
448
+ }
449
+
450
+ var childrenBounds = getBBox(visibleChildren);
451
+
452
+ // target is a plane
453
+ if (!target.x) {
454
+ offset = {
455
+ x: DEFAULT_POSITION.x - childrenBounds.x,
456
+ y: DEFAULT_POSITION.y - childrenBounds.y
457
+ };
458
+ }
459
+
460
+ // source is a plane
461
+ else {
462
+
463
+ // move relative to the center of the shape
464
+ var targetMid = getMid(target);
465
+ var childrenMid = getMid(childrenBounds);
466
+
467
+ offset = {
468
+ x: targetMid.x - childrenMid.x,
469
+ y: targetMid.y - childrenMid.y
470
+ };
471
+ }
472
+
473
+ modeling.moveElements(children, offset, target, { autoResize: false });
474
+ };
475
+
476
+ /**
477
+ * Sets `hidden` property on all children of the given shape.
478
+ *
479
+ * @param {Element[]} elements
480
+ * @param {boolean} [hidden=false]
481
+ *
482
+ * @return {Element[]}
483
+ */
484
+ SubProcessPlaneBehavior.prototype._showRecursively = function(elements, hidden) {
485
+ var self = this;
486
+
487
+ var result = [];
488
+ elements.forEach(function(element) {
489
+ element.hidden = !!hidden;
490
+
491
+ result = result.concat(element);
492
+
493
+ if (element.children) {
494
+ result = result.concat(
495
+ self._showRecursively(element.children, element.collapsed || hidden)
496
+ );
497
+ }
498
+ });
499
+
500
+ return result;
501
+ };
502
+
503
+ /**
504
+ * Adds a given root element to the BPMNDI diagrams.
505
+ *
506
+ * @param {Root|ModdleElement} planeElement
507
+ *
508
+ * @return {Root}
509
+ */
510
+ SubProcessPlaneBehavior.prototype._addDiagram = function(planeElement) {
511
+ var bpmnjs = this._bpmnjs;
512
+ var diagrams = bpmnjs.getDefinitions().diagrams;
513
+
514
+ if (!planeElement.businessObject) {
515
+ planeElement = this._createNewDiagram(planeElement);
516
+ }
517
+
518
+ diagrams.push(planeElement.di.$parent);
519
+
520
+ return planeElement;
521
+ };
522
+
523
+
524
+ /**
525
+ * Creates a new plane element for the given sub process.
526
+ *
527
+ * @param {ModdleElement} bpmnElement
528
+ *
529
+ * @return {Root}
530
+ */
531
+ SubProcessPlaneBehavior.prototype._createNewDiagram = function(bpmnElement) {
532
+ var bpmnFactory = this._bpmnFactory,
533
+ elementFactory = this._elementFactory;
534
+
535
+ var diPlane = bpmnFactory.create('bpmndi:BPMNPlane', {
536
+ bpmnElement: bpmnElement
537
+ });
538
+
539
+ var diDiagram = bpmnFactory.create('bpmndi:BPMNDiagram', {
540
+ plane: diPlane
541
+ });
542
+
543
+ diPlane.$parent = diDiagram;
544
+
545
+ // add a virtual element (not being drawn),
546
+ // a copy cat of our BpmnImporter code
547
+ var planeElement = elementFactory.createRoot({
548
+ id: getPlaneIdFromShape(bpmnElement),
549
+ type: bpmnElement.$type,
550
+ di: diPlane,
551
+ businessObject: bpmnElement,
552
+ collapsed: true
553
+ });
554
+
555
+ return planeElement;
556
+ };
557
+
558
+ /**
559
+ * Removes the diagram for a given root element.
560
+ *
561
+ * @param {Root} rootElement
562
+ *
563
+ * @return {ModdleElement}
564
+ */
565
+ SubProcessPlaneBehavior.prototype._removeDiagram = function(rootElement) {
566
+ var bpmnjs = this._bpmnjs;
567
+
568
+ var diagrams = bpmnjs.getDefinitions().diagrams;
569
+
570
+ var removedDiagram = find(diagrams, function(diagram) {
571
+ return diagram.plane.bpmnElement.id === rootElement.id;
572
+ });
573
+
574
+ diagrams.splice(diagrams.indexOf(removedDiagram), 1);
575
+
576
+ return removedDiagram;
577
+ };
578
+
579
+
580
+ SubProcessPlaneBehavior.$inject = [
581
+ 'canvas',
582
+ 'eventBus',
583
+ 'modeling',
584
+ 'elementFactory',
585
+ 'bpmnFactory',
586
+ 'bpmnjs',
587
+ 'elementRegistry'
588
+ ];