bpmn-js 17.7.0 → 17.7.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 (337) hide show
  1. package/LICENSE +23 -23
  2. package/README.md +93 -93
  3. package/dist/assets/bpmn-js.css +145 -145
  4. package/dist/bpmn-modeler.development.js +36730 -36727
  5. package/dist/bpmn-modeler.production.min.js +4 -4
  6. package/dist/bpmn-navigated-viewer.development.js +21139 -21136
  7. package/dist/bpmn-navigated-viewer.production.min.js +3 -3
  8. package/dist/bpmn-viewer.development.js +21054 -21051
  9. package/dist/bpmn-viewer.production.min.js +3 -3
  10. package/index.js +2 -2
  11. package/lib/BaseModeler.d.ts +15 -15
  12. package/lib/BaseModeler.js +79 -79
  13. package/lib/BaseViewer.d.ts +352 -352
  14. package/lib/BaseViewer.js +858 -858
  15. package/lib/Modeler.d.ts +86 -86
  16. package/lib/Modeler.js +204 -204
  17. package/lib/NavigatedViewer.d.ts +11 -11
  18. package/lib/NavigatedViewer.js +37 -37
  19. package/lib/Viewer.d.ts +47 -47
  20. package/lib/Viewer.js +78 -78
  21. package/lib/core/index.d.ts +10 -10
  22. package/lib/core/index.js +8 -8
  23. package/lib/draw/BpmnRenderUtil.d.ts +123 -123
  24. package/lib/draw/BpmnRenderUtil.js +256 -256
  25. package/lib/draw/BpmnRenderer.d.ts +114 -114
  26. package/lib/draw/BpmnRenderer.js +2340 -2340
  27. package/lib/draw/PathMap.d.ts +330 -330
  28. package/lib/draw/PathMap.js +478 -478
  29. package/lib/draw/TextRenderer.d.ts +74 -74
  30. package/lib/draw/TextRenderer.js +136 -136
  31. package/lib/draw/index.d.ts +10 -10
  32. package/lib/draw/index.js +11 -11
  33. package/lib/features/align-elements/AlignElementsContextPadProvider.d.ts +32 -32
  34. package/lib/features/align-elements/AlignElementsContextPadProvider.js +105 -105
  35. package/lib/features/align-elements/AlignElementsIcons.d.ts +10 -10
  36. package/lib/features/align-elements/AlignElementsIcons.js +43 -43
  37. package/lib/features/align-elements/AlignElementsMenuProvider.d.ts +32 -32
  38. package/lib/features/align-elements/AlignElementsMenuProvider.js +100 -100
  39. package/lib/features/align-elements/BpmnAlignElements.d.ts +9 -9
  40. package/lib/features/align-elements/BpmnAlignElements.js +45 -45
  41. package/lib/features/align-elements/index.d.ts +11 -11
  42. package/lib/features/align-elements/index.js +23 -23
  43. package/lib/features/append-preview/AppendPreview.d.ts +36 -36
  44. package/lib/features/append-preview/AppendPreview.js +108 -108
  45. package/lib/features/append-preview/index.d.ts +16 -16
  46. package/lib/features/append-preview/index.js +15 -15
  47. package/lib/features/auto-place/BpmnAutoPlace.d.ts +13 -13
  48. package/lib/features/auto-place/BpmnAutoPlace.js +20 -20
  49. package/lib/features/auto-place/BpmnAutoPlaceUtil.d.ts +47 -47
  50. package/lib/features/auto-place/BpmnAutoPlaceUtil.js +225 -225
  51. package/lib/features/auto-place/index.d.ts +7 -7
  52. package/lib/features/auto-place/index.js +8 -8
  53. package/lib/features/auto-resize/BpmnAutoResize.d.ts +25 -25
  54. package/lib/features/auto-resize/BpmnAutoResize.js +45 -45
  55. package/lib/features/auto-resize/BpmnAutoResizeProvider.d.ts +26 -26
  56. package/lib/features/auto-resize/BpmnAutoResizeProvider.js +69 -69
  57. package/lib/features/auto-resize/index.d.ts +8 -8
  58. package/lib/features/auto-resize/index.js +12 -12
  59. package/lib/features/context-pad/ContextPadProvider.d.ts +73 -73
  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 +275 -275
  66. package/lib/features/copy-paste/index.d.ts +9 -9
  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 +9 -9
  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 +131 -131
  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 +18 -18
  85. package/lib/features/drilldown/DrilldownOverlayBehavior.js +210 -210
  86. package/lib/features/drilldown/SubprocessCompatibility.d.ts +21 -21
  87. package/lib/features/drilldown/SubprocessCompatibility.js +266 -268
  88. package/lib/features/drilldown/index.d.ts +13 -13
  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 +6 -6
  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 +12 -12
  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 +11 -11
  101. package/lib/features/interaction-events/BpmnInteractionEvents.d.ts +18 -18
  102. package/lib/features/interaction-events/BpmnInteractionEvents.js +150 -150
  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 +7 -7
  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 +144 -144
  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 +26 -26
  122. package/lib/features/modeling/BpmnLayouter.js +481 -481
  123. package/lib/features/modeling/BpmnUpdater.d.ts +90 -90
  124. package/lib/features/modeling/BpmnUpdater.js +837 -837
  125. package/lib/features/modeling/ElementFactory.d.ts +117 -117
  126. package/lib/features/modeling/ElementFactory.js +406 -406
  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 +307 -307
  130. package/lib/features/modeling/Modeling.test.ts +147 -147
  131. package/lib/features/modeling/behavior/AdaptiveLabelPositioningBehavior.d.ts +20 -20
  132. package/lib/features/modeling/behavior/AdaptiveLabelPositioningBehavior.js +284 -284
  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/GroupBehavior.js +332 -332
  162. package/lib/features/modeling/behavior/ImportDockingFix.d.ts +13 -13
  163. package/lib/features/modeling/behavior/ImportDockingFix.js +83 -83
  164. package/lib/features/modeling/behavior/IsHorizontalFix.d.ts +10 -10
  165. package/lib/features/modeling/behavior/IsHorizontalFix.js +54 -54
  166. package/lib/features/modeling/behavior/LabelBehavior.d.ts +56 -56
  167. package/lib/features/modeling/behavior/LabelBehavior.js +364 -364
  168. package/lib/features/modeling/behavior/LayoutConnectionBehavior.d.ts +16 -16
  169. package/lib/features/modeling/behavior/LayoutConnectionBehavior.js +121 -121
  170. package/lib/features/modeling/behavior/MessageFlowBehavior.d.ts +15 -15
  171. package/lib/features/modeling/behavior/NonInterruptingBehavior.d.ts +4 -4
  172. package/lib/features/modeling/behavior/NonInterruptingBehavior.js +41 -41
  173. package/lib/features/modeling/behavior/RemoveElementBehavior.d.ts +13 -13
  174. package/lib/features/modeling/behavior/RemoveElementBehavior.js +91 -91
  175. package/lib/features/modeling/behavior/RemoveEmbeddedLabelBoundsBehavior.d.ts +16 -16
  176. package/lib/features/modeling/behavior/RemoveEmbeddedLabelBoundsBehavior.js +41 -41
  177. package/lib/features/modeling/behavior/RemoveParticipantBehavior.d.ts +15 -15
  178. package/lib/features/modeling/behavior/RemoveParticipantBehavior.js +54 -54
  179. package/lib/features/modeling/behavior/ReplaceConnectionBehavior.d.ts +15 -15
  180. package/lib/features/modeling/behavior/ReplaceConnectionBehavior.js +194 -194
  181. package/lib/features/modeling/behavior/ReplaceElementBehaviour.d.ts +23 -23
  182. package/lib/features/modeling/behavior/ReplaceElementBehaviour.js +144 -144
  183. package/lib/features/modeling/behavior/ResizeBehavior.d.ts +67 -67
  184. package/lib/features/modeling/behavior/ResizeBehavior.js +262 -262
  185. package/lib/features/modeling/behavior/ResizeLaneBehavior.d.ts +16 -16
  186. package/lib/features/modeling/behavior/ResizeLaneBehavior.js +70 -70
  187. package/lib/features/modeling/behavior/RootElementReferenceBehavior.d.ts +25 -25
  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 +128 -128
  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 +192 -192
  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 +21 -21
  247. package/lib/features/modeling/util/ModelingUtil.js +54 -54
  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 +34 -34
  257. package/lib/features/outline/OutlineProvider.js +179 -179
  258. package/lib/features/outline/OutlineUtil.d.ts +18 -18
  259. package/lib/features/outline/OutlineUtil.js +31 -31
  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 +679 -679
  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 +47 -47
  275. package/lib/features/replace/BpmnReplace.js +382 -382
  276. package/lib/features/replace/ReplaceOptions.d.ts +75 -75
  277. package/lib/features/replace/ReplaceOptions.js +919 -919
  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 +29 -29
  289. package/lib/features/search/BpmnSearchProvider.js +136 -136
  290. package/lib/features/search/index.d.ts +7 -7
  291. package/lib/features/search/index.js +12 -12
  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 +21 -21
  299. package/lib/features/space-tool/BpmnSpaceTool.js +69 -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 -217
  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/model/Types.d.ts +25 -25
  313. package/lib/model/Types.ts +40 -40
  314. package/lib/util/CompatibilityUtil.d.ts +8 -8
  315. package/lib/util/CompatibilityUtil.js +29 -29
  316. package/lib/util/DiUtil.d.ts +60 -60
  317. package/lib/util/DiUtil.js +122 -122
  318. package/lib/util/DrilldownUtil.d.ts +39 -39
  319. package/lib/util/DrilldownUtil.js +69 -69
  320. package/lib/util/LabelUtil.d.ts +83 -83
  321. package/lib/util/LabelUtil.js +262 -262
  322. package/lib/util/ModelUtil.d.ts +40 -40
  323. package/lib/util/ModelUtil.js +58 -58
  324. package/lib/util/PoweredByUtil.d.ts +8 -8
  325. package/lib/util/PoweredByUtil.js +99 -99
  326. package/lib/util/Types.js +4 -4
  327. package/lib/util/Types.ts +3 -3
  328. package/package.json +132 -132
  329. package/test/helper/TranslationCollector.js +15 -15
  330. package/test/helper/index.js +313 -313
  331. package/test/matchers/BoundsMatchers.js +252 -252
  332. package/test/matchers/ConnectionMatchers.js +165 -165
  333. package/test/matchers/JSONMatcher.js +19 -19
  334. package/test/util/KeyEvents.js +22 -22
  335. package/test/util/MockEvents.js +61 -61
  336. package/test/util/custom-rules/CustomRules.js +16 -16
  337. package/test/util/custom-rules/index.js +6 -6
@@ -1,453 +1,453 @@
1
- import {
2
- filter,
3
- find,
4
- forEach
5
- } from 'min-dash';
6
-
7
- import {
8
- elementToString
9
- } from './Util';
10
-
11
- import {
12
- ensureCompatDiRef
13
- } from '../util/CompatibilityUtil';
14
-
15
- /**
16
- * @typedef {import('../model/Types').ModdleElement} ModdleElement
17
- */
18
-
19
- /**
20
- * Returns true if an element is of the given meta-model type.
21
- *
22
- * @param {ModdleElement} element
23
- * @param {string} type
24
- *
25
- * @return {boolean}
26
- */
27
- function is(element, type) {
28
- return element.$instanceOf(type);
29
- }
30
-
31
-
32
- /**
33
- * Find a suitable display candidate for definitions where the DI does not
34
- * correctly specify one.
35
- *
36
- * @param {ModdleElement} definitions
37
- *
38
- * @return {ModdleElement}
39
- */
40
- function findDisplayCandidate(definitions) {
41
- return find(definitions.rootElements, function(e) {
42
- return is(e, 'bpmn:Process') || is(e, 'bpmn:Collaboration');
43
- });
44
- }
45
-
46
- /**
47
- * @param {Record<'element' | 'root' | 'error', Function>} handler
48
- */
49
- export default function BpmnTreeWalker(handler) {
50
-
51
- // list of containers already walked
52
- var handledElements = {};
53
-
54
- // list of elements to handle deferred to ensure
55
- // prerequisites are drawn
56
- var deferred = [];
57
-
58
- var diMap = {};
59
-
60
- // Helpers //////////////////////
61
-
62
- function contextual(fn, ctx) {
63
- return function(e) {
64
- fn(e, ctx);
65
- };
66
- }
67
-
68
- function handled(element) {
69
- handledElements[element.id] = element;
70
- }
71
-
72
- function isHandled(element) {
73
- return handledElements[element.id];
74
- }
75
-
76
- function visit(element, ctx) {
77
-
78
- var gfx = element.gfx;
79
-
80
- // avoid multiple rendering of elements
81
- if (gfx) {
82
- throw new Error(
83
- `already rendered ${ elementToString(element) }`
84
- );
85
- }
86
-
87
- // call handler
88
- return handler.element(element, diMap[element.id], ctx);
89
- }
90
-
91
- function visitRoot(element, diagram) {
92
- return handler.root(element, diMap[element.id], diagram);
93
- }
94
-
95
- function visitIfDi(element, ctx) {
96
-
97
- try {
98
- var gfx = diMap[element.id] && visit(element, ctx);
99
-
100
- handled(element);
101
-
102
- return gfx;
103
- } catch (error) {
104
- logError(error.message, { element, error });
105
-
106
- console.error(`failed to import ${ elementToString(element) }`, error);
107
- }
108
- }
109
-
110
- function logError(message, context) {
111
- handler.error(message, context);
112
- }
113
-
114
- // DI handling //////////////////////
115
-
116
- var registerDi = this.registerDi = function registerDi(di) {
117
- var bpmnElement = di.bpmnElement;
118
-
119
- if (bpmnElement) {
120
- if (diMap[bpmnElement.id]) {
121
- logError(
122
- `multiple DI elements defined for ${ elementToString(bpmnElement) }`,
123
- { element: bpmnElement }
124
- );
125
- } else {
126
- diMap[bpmnElement.id] = di;
127
-
128
- ensureCompatDiRef(bpmnElement);
129
- }
130
- } else {
131
- logError(
132
- `no bpmnElement referenced in ${ elementToString(di) }`,
133
- { element: di }
134
- );
135
- }
136
- };
137
-
138
- function handleDiagram(diagram) {
139
- handlePlane(diagram.plane);
140
- }
141
-
142
- function handlePlane(plane) {
143
- registerDi(plane);
144
-
145
- forEach(plane.planeElement, handlePlaneElement);
146
- }
147
-
148
- function handlePlaneElement(planeElement) {
149
- registerDi(planeElement);
150
- }
151
-
152
-
153
- // Semantic handling //////////////////////
154
-
155
- /**
156
- * Handle definitions and return the rendered diagram (if any).
157
- *
158
- * @param {ModdleElement} definitions to walk and import
159
- * @param {ModdleElement} [diagram] specific diagram to import and display
160
- *
161
- * @throws {Error} if no diagram to display could be found
162
- */
163
- this.handleDefinitions = function handleDefinitions(definitions, diagram) {
164
-
165
- // make sure we walk the correct bpmnElement
166
-
167
- var diagrams = definitions.diagrams;
168
-
169
- if (diagram && diagrams.indexOf(diagram) === -1) {
170
- throw new Error('diagram not part of <bpmn:Definitions />');
171
- }
172
-
173
- if (!diagram && diagrams && diagrams.length) {
174
- diagram = diagrams[0];
175
- }
176
-
177
- // no diagram -> nothing to import
178
- if (!diagram) {
179
- throw new Error('no diagram to display');
180
- }
181
-
182
- // load DI from selected diagram only
183
- diMap = {};
184
- handleDiagram(diagram);
185
-
186
-
187
- var plane = diagram.plane;
188
-
189
- if (!plane) {
190
- throw new Error(
191
- `no plane for ${ elementToString(diagram) }`
192
- );
193
- }
194
-
195
- var rootElement = plane.bpmnElement;
196
-
197
- // ensure we default to a suitable display candidate (process or collaboration),
198
- // even if non is specified in DI
199
- if (!rootElement) {
200
- rootElement = findDisplayCandidate(definitions);
201
-
202
- if (!rootElement) {
203
- throw new Error('no process or collaboration to display');
204
- } else {
205
-
206
- logError(
207
- `correcting missing bpmnElement on ${ elementToString(plane) } to ${ elementToString(rootElement) }`
208
- );
209
-
210
- // correct DI on the fly
211
- plane.bpmnElement = rootElement;
212
- registerDi(plane);
213
- }
214
- }
215
-
216
-
217
- var ctx = visitRoot(rootElement, plane);
218
-
219
- if (is(rootElement, 'bpmn:Process') || is(rootElement, 'bpmn:SubProcess')) {
220
- handleProcess(rootElement, ctx);
221
- } else if (is(rootElement, 'bpmn:Collaboration')) {
222
- handleCollaboration(rootElement, ctx);
223
-
224
- // force drawing of everything not yet drawn that is part of the target DI
225
- handleUnhandledProcesses(definitions.rootElements, ctx);
226
- } else {
227
- throw new Error(
228
- `unsupported bpmnElement for ${ elementToString(plane) }: ${ elementToString(rootElement) }`
229
- );
230
- }
231
-
232
- // handle all deferred elements
233
- handleDeferred(deferred);
234
- };
235
-
236
- var handleDeferred = this.handleDeferred = function handleDeferred() {
237
-
238
- var fn;
239
-
240
- // drain deferred until empty
241
- while (deferred.length) {
242
- fn = deferred.shift();
243
-
244
- fn();
245
- }
246
- };
247
-
248
- function handleProcess(process, context) {
249
- handleFlowElementsContainer(process, context);
250
- handleIoSpecification(process.ioSpecification, context);
251
-
252
- handleArtifacts(process.artifacts, context);
253
-
254
- // log process handled
255
- handled(process);
256
- }
257
-
258
- function handleUnhandledProcesses(rootElements, ctx) {
259
-
260
- // walk through all processes that have not yet been drawn and draw them
261
- // if they contain lanes with DI information.
262
- // we do this to pass the free-floating lane test cases in the MIWG test suite
263
- var processes = filter(rootElements, function(e) {
264
- return !isHandled(e) && is(e, 'bpmn:Process') && e.laneSets;
265
- });
266
-
267
- processes.forEach(contextual(handleProcess, ctx));
268
- }
269
-
270
- function handleMessageFlow(messageFlow, context) {
271
- visitIfDi(messageFlow, context);
272
- }
273
-
274
- function handleMessageFlows(messageFlows, context) {
275
- forEach(messageFlows, contextual(handleMessageFlow, context));
276
- }
277
-
278
- function handleDataAssociation(association, context) {
279
- visitIfDi(association, context);
280
- }
281
-
282
- function handleDataInput(dataInput, context) {
283
- visitIfDi(dataInput, context);
284
- }
285
-
286
- function handleDataOutput(dataOutput, context) {
287
- visitIfDi(dataOutput, context);
288
- }
289
-
290
- function handleArtifact(artifact, context) {
291
-
292
- // bpmn:TextAnnotation
293
- // bpmn:Group
294
- // bpmn:Association
295
-
296
- visitIfDi(artifact, context);
297
- }
298
-
299
- function handleArtifacts(artifacts, context) {
300
-
301
- forEach(artifacts, function(e) {
302
- if (is(e, 'bpmn:Association')) {
303
- deferred.push(function() {
304
- handleArtifact(e, context);
305
- });
306
- } else {
307
- handleArtifact(e, context);
308
- }
309
- });
310
- }
311
-
312
- function handleIoSpecification(ioSpecification, context) {
313
-
314
- if (!ioSpecification) {
315
- return;
316
- }
317
-
318
- forEach(ioSpecification.dataInputs, contextual(handleDataInput, context));
319
- forEach(ioSpecification.dataOutputs, contextual(handleDataOutput, context));
320
- }
321
-
322
- var handleSubProcess = this.handleSubProcess = function handleSubProcess(subProcess, context) {
323
- handleFlowElementsContainer(subProcess, context);
324
- handleArtifacts(subProcess.artifacts, context);
325
- };
326
-
327
- function handleFlowNode(flowNode, context) {
328
- var childCtx = visitIfDi(flowNode, context);
329
-
330
- if (is(flowNode, 'bpmn:SubProcess')) {
331
- handleSubProcess(flowNode, childCtx || context);
332
- }
333
-
334
- if (is(flowNode, 'bpmn:Activity')) {
335
- handleIoSpecification(flowNode.ioSpecification, context);
336
- }
337
-
338
- // defer handling of associations
339
- // affected types:
340
- //
341
- // * bpmn:Activity
342
- // * bpmn:ThrowEvent
343
- // * bpmn:CatchEvent
344
- //
345
- deferred.push(function() {
346
- forEach(flowNode.dataInputAssociations, contextual(handleDataAssociation, context));
347
- forEach(flowNode.dataOutputAssociations, contextual(handleDataAssociation, context));
348
- });
349
- }
350
-
351
- function handleSequenceFlow(sequenceFlow, context) {
352
- visitIfDi(sequenceFlow, context);
353
- }
354
-
355
- function handleDataElement(dataObject, context) {
356
- visitIfDi(dataObject, context);
357
- }
358
-
359
- function handleLane(lane, context) {
360
-
361
- deferred.push(function() {
362
-
363
- var newContext = visitIfDi(lane, context);
364
-
365
- if (lane.childLaneSet) {
366
- handleLaneSet(lane.childLaneSet, newContext || context);
367
- }
368
-
369
- wireFlowNodeRefs(lane);
370
- });
371
- }
372
-
373
- function handleLaneSet(laneSet, context) {
374
- forEach(laneSet.lanes, contextual(handleLane, context));
375
- }
376
-
377
- function handleLaneSets(laneSets, context) {
378
- forEach(laneSets, contextual(handleLaneSet, context));
379
- }
380
-
381
- function handleFlowElementsContainer(container, context) {
382
- handleFlowElements(container.flowElements, context);
383
-
384
- if (container.laneSets) {
385
- handleLaneSets(container.laneSets, context);
386
- }
387
- }
388
-
389
- function handleFlowElements(flowElements, context) {
390
- forEach(flowElements, function(flowElement) {
391
- if (is(flowElement, 'bpmn:SequenceFlow')) {
392
- deferred.push(function() {
393
- handleSequenceFlow(flowElement, context);
394
- });
395
- } else if (is(flowElement, 'bpmn:BoundaryEvent')) {
396
- deferred.unshift(function() {
397
- handleFlowNode(flowElement, context);
398
- });
399
- } else if (is(flowElement, 'bpmn:FlowNode')) {
400
- handleFlowNode(flowElement, context);
401
- } else if (is(flowElement, 'bpmn:DataObject')) {
402
-
403
- // SKIP (assume correct referencing via DataObjectReference)
404
- } else if (is(flowElement, 'bpmn:DataStoreReference')) {
405
- handleDataElement(flowElement, context);
406
- } else if (is(flowElement, 'bpmn:DataObjectReference')) {
407
- handleDataElement(flowElement, context);
408
- } else {
409
- logError(
410
- `unrecognized flowElement ${ elementToString(flowElement) } in context ${ elementToString(context && context.businessObject) }`,
411
- {
412
- element: flowElement,
413
- context
414
- }
415
- );
416
- }
417
- });
418
- }
419
-
420
- function handleParticipant(participant, context) {
421
- var newCtx = visitIfDi(participant, context);
422
-
423
- var process = participant.processRef;
424
- if (process) {
425
- handleProcess(process, newCtx || context);
426
- }
427
- }
428
-
429
- function handleCollaboration(collaboration, context) {
430
-
431
- forEach(collaboration.participants, contextual(handleParticipant, context));
432
-
433
- handleArtifacts(collaboration.artifacts, context);
434
-
435
- // handle message flows latest in the process
436
- deferred.push(function() {
437
- handleMessageFlows(collaboration.messageFlows, context);
438
- });
439
- }
440
-
441
-
442
- function wireFlowNodeRefs(lane) {
443
-
444
- // wire the virtual flowNodeRefs <-> relationship
445
- forEach(lane.flowNodeRef, function(flowNode) {
446
- var lanes = flowNode.get('lanes');
447
-
448
- if (lanes) {
449
- lanes.push(lane);
450
- }
451
- });
452
- }
453
- }
1
+ import {
2
+ filter,
3
+ find,
4
+ forEach
5
+ } from 'min-dash';
6
+
7
+ import {
8
+ elementToString
9
+ } from './Util';
10
+
11
+ import {
12
+ ensureCompatDiRef
13
+ } from '../util/CompatibilityUtil';
14
+
15
+ /**
16
+ * @typedef {import('../model/Types').ModdleElement} ModdleElement
17
+ */
18
+
19
+ /**
20
+ * Returns true if an element is of the given meta-model type.
21
+ *
22
+ * @param {ModdleElement} element
23
+ * @param {string} type
24
+ *
25
+ * @return {boolean}
26
+ */
27
+ function is(element, type) {
28
+ return element.$instanceOf(type);
29
+ }
30
+
31
+
32
+ /**
33
+ * Find a suitable display candidate for definitions where the DI does not
34
+ * correctly specify one.
35
+ *
36
+ * @param {ModdleElement} definitions
37
+ *
38
+ * @return {ModdleElement}
39
+ */
40
+ function findDisplayCandidate(definitions) {
41
+ return find(definitions.rootElements, function(e) {
42
+ return is(e, 'bpmn:Process') || is(e, 'bpmn:Collaboration');
43
+ });
44
+ }
45
+
46
+ /**
47
+ * @param {Record<'element' | 'root' | 'error', Function>} handler
48
+ */
49
+ export default function BpmnTreeWalker(handler) {
50
+
51
+ // list of containers already walked
52
+ var handledElements = {};
53
+
54
+ // list of elements to handle deferred to ensure
55
+ // prerequisites are drawn
56
+ var deferred = [];
57
+
58
+ var diMap = {};
59
+
60
+ // Helpers //////////////////////
61
+
62
+ function contextual(fn, ctx) {
63
+ return function(e) {
64
+ fn(e, ctx);
65
+ };
66
+ }
67
+
68
+ function handled(element) {
69
+ handledElements[element.id] = element;
70
+ }
71
+
72
+ function isHandled(element) {
73
+ return handledElements[element.id];
74
+ }
75
+
76
+ function visit(element, ctx) {
77
+
78
+ var gfx = element.gfx;
79
+
80
+ // avoid multiple rendering of elements
81
+ if (gfx) {
82
+ throw new Error(
83
+ `already rendered ${ elementToString(element) }`
84
+ );
85
+ }
86
+
87
+ // call handler
88
+ return handler.element(element, diMap[element.id], ctx);
89
+ }
90
+
91
+ function visitRoot(element, diagram) {
92
+ return handler.root(element, diMap[element.id], diagram);
93
+ }
94
+
95
+ function visitIfDi(element, ctx) {
96
+
97
+ try {
98
+ var gfx = diMap[element.id] && visit(element, ctx);
99
+
100
+ handled(element);
101
+
102
+ return gfx;
103
+ } catch (error) {
104
+ logError(error.message, { element, error });
105
+
106
+ console.error(`failed to import ${ elementToString(element) }`, error);
107
+ }
108
+ }
109
+
110
+ function logError(message, context) {
111
+ handler.error(message, context);
112
+ }
113
+
114
+ // DI handling //////////////////////
115
+
116
+ var registerDi = this.registerDi = function registerDi(di) {
117
+ var bpmnElement = di.bpmnElement;
118
+
119
+ if (bpmnElement) {
120
+ if (diMap[bpmnElement.id]) {
121
+ logError(
122
+ `multiple DI elements defined for ${ elementToString(bpmnElement) }`,
123
+ { element: bpmnElement }
124
+ );
125
+ } else {
126
+ diMap[bpmnElement.id] = di;
127
+
128
+ ensureCompatDiRef(bpmnElement);
129
+ }
130
+ } else {
131
+ logError(
132
+ `no bpmnElement referenced in ${ elementToString(di) }`,
133
+ { element: di }
134
+ );
135
+ }
136
+ };
137
+
138
+ function handleDiagram(diagram) {
139
+ handlePlane(diagram.plane);
140
+ }
141
+
142
+ function handlePlane(plane) {
143
+ registerDi(plane);
144
+
145
+ forEach(plane.planeElement, handlePlaneElement);
146
+ }
147
+
148
+ function handlePlaneElement(planeElement) {
149
+ registerDi(planeElement);
150
+ }
151
+
152
+
153
+ // Semantic handling //////////////////////
154
+
155
+ /**
156
+ * Handle definitions and return the rendered diagram (if any).
157
+ *
158
+ * @param {ModdleElement} definitions to walk and import
159
+ * @param {ModdleElement} [diagram] specific diagram to import and display
160
+ *
161
+ * @throws {Error} if no diagram to display could be found
162
+ */
163
+ this.handleDefinitions = function handleDefinitions(definitions, diagram) {
164
+
165
+ // make sure we walk the correct bpmnElement
166
+
167
+ var diagrams = definitions.diagrams;
168
+
169
+ if (diagram && diagrams.indexOf(diagram) === -1) {
170
+ throw new Error('diagram not part of <bpmn:Definitions />');
171
+ }
172
+
173
+ if (!diagram && diagrams && diagrams.length) {
174
+ diagram = diagrams[0];
175
+ }
176
+
177
+ // no diagram -> nothing to import
178
+ if (!diagram) {
179
+ throw new Error('no diagram to display');
180
+ }
181
+
182
+ // load DI from selected diagram only
183
+ diMap = {};
184
+ handleDiagram(diagram);
185
+
186
+
187
+ var plane = diagram.plane;
188
+
189
+ if (!plane) {
190
+ throw new Error(
191
+ `no plane for ${ elementToString(diagram) }`
192
+ );
193
+ }
194
+
195
+ var rootElement = plane.bpmnElement;
196
+
197
+ // ensure we default to a suitable display candidate (process or collaboration),
198
+ // even if non is specified in DI
199
+ if (!rootElement) {
200
+ rootElement = findDisplayCandidate(definitions);
201
+
202
+ if (!rootElement) {
203
+ throw new Error('no process or collaboration to display');
204
+ } else {
205
+
206
+ logError(
207
+ `correcting missing bpmnElement on ${ elementToString(plane) } to ${ elementToString(rootElement) }`
208
+ );
209
+
210
+ // correct DI on the fly
211
+ plane.bpmnElement = rootElement;
212
+ registerDi(plane);
213
+ }
214
+ }
215
+
216
+
217
+ var ctx = visitRoot(rootElement, plane);
218
+
219
+ if (is(rootElement, 'bpmn:Process') || is(rootElement, 'bpmn:SubProcess')) {
220
+ handleProcess(rootElement, ctx);
221
+ } else if (is(rootElement, 'bpmn:Collaboration')) {
222
+ handleCollaboration(rootElement, ctx);
223
+
224
+ // force drawing of everything not yet drawn that is part of the target DI
225
+ handleUnhandledProcesses(definitions.rootElements, ctx);
226
+ } else {
227
+ throw new Error(
228
+ `unsupported bpmnElement for ${ elementToString(plane) }: ${ elementToString(rootElement) }`
229
+ );
230
+ }
231
+
232
+ // handle all deferred elements
233
+ handleDeferred(deferred);
234
+ };
235
+
236
+ var handleDeferred = this.handleDeferred = function handleDeferred() {
237
+
238
+ var fn;
239
+
240
+ // drain deferred until empty
241
+ while (deferred.length) {
242
+ fn = deferred.shift();
243
+
244
+ fn();
245
+ }
246
+ };
247
+
248
+ function handleProcess(process, context) {
249
+ handleFlowElementsContainer(process, context);
250
+ handleIoSpecification(process.ioSpecification, context);
251
+
252
+ handleArtifacts(process.artifacts, context);
253
+
254
+ // log process handled
255
+ handled(process);
256
+ }
257
+
258
+ function handleUnhandledProcesses(rootElements, ctx) {
259
+
260
+ // walk through all processes that have not yet been drawn and draw them
261
+ // if they contain lanes with DI information.
262
+ // we do this to pass the free-floating lane test cases in the MIWG test suite
263
+ var processes = filter(rootElements, function(e) {
264
+ return !isHandled(e) && is(e, 'bpmn:Process') && e.laneSets;
265
+ });
266
+
267
+ processes.forEach(contextual(handleProcess, ctx));
268
+ }
269
+
270
+ function handleMessageFlow(messageFlow, context) {
271
+ visitIfDi(messageFlow, context);
272
+ }
273
+
274
+ function handleMessageFlows(messageFlows, context) {
275
+ forEach(messageFlows, contextual(handleMessageFlow, context));
276
+ }
277
+
278
+ function handleDataAssociation(association, context) {
279
+ visitIfDi(association, context);
280
+ }
281
+
282
+ function handleDataInput(dataInput, context) {
283
+ visitIfDi(dataInput, context);
284
+ }
285
+
286
+ function handleDataOutput(dataOutput, context) {
287
+ visitIfDi(dataOutput, context);
288
+ }
289
+
290
+ function handleArtifact(artifact, context) {
291
+
292
+ // bpmn:TextAnnotation
293
+ // bpmn:Group
294
+ // bpmn:Association
295
+
296
+ visitIfDi(artifact, context);
297
+ }
298
+
299
+ function handleArtifacts(artifacts, context) {
300
+
301
+ forEach(artifacts, function(e) {
302
+ if (is(e, 'bpmn:Association')) {
303
+ deferred.push(function() {
304
+ handleArtifact(e, context);
305
+ });
306
+ } else {
307
+ handleArtifact(e, context);
308
+ }
309
+ });
310
+ }
311
+
312
+ function handleIoSpecification(ioSpecification, context) {
313
+
314
+ if (!ioSpecification) {
315
+ return;
316
+ }
317
+
318
+ forEach(ioSpecification.dataInputs, contextual(handleDataInput, context));
319
+ forEach(ioSpecification.dataOutputs, contextual(handleDataOutput, context));
320
+ }
321
+
322
+ var handleSubProcess = this.handleSubProcess = function handleSubProcess(subProcess, context) {
323
+ handleFlowElementsContainer(subProcess, context);
324
+ handleArtifacts(subProcess.artifacts, context);
325
+ };
326
+
327
+ function handleFlowNode(flowNode, context) {
328
+ var childCtx = visitIfDi(flowNode, context);
329
+
330
+ if (is(flowNode, 'bpmn:SubProcess')) {
331
+ handleSubProcess(flowNode, childCtx || context);
332
+ }
333
+
334
+ if (is(flowNode, 'bpmn:Activity')) {
335
+ handleIoSpecification(flowNode.ioSpecification, context);
336
+ }
337
+
338
+ // defer handling of associations
339
+ // affected types:
340
+ //
341
+ // * bpmn:Activity
342
+ // * bpmn:ThrowEvent
343
+ // * bpmn:CatchEvent
344
+ //
345
+ deferred.push(function() {
346
+ forEach(flowNode.dataInputAssociations, contextual(handleDataAssociation, context));
347
+ forEach(flowNode.dataOutputAssociations, contextual(handleDataAssociation, context));
348
+ });
349
+ }
350
+
351
+ function handleSequenceFlow(sequenceFlow, context) {
352
+ visitIfDi(sequenceFlow, context);
353
+ }
354
+
355
+ function handleDataElement(dataObject, context) {
356
+ visitIfDi(dataObject, context);
357
+ }
358
+
359
+ function handleLane(lane, context) {
360
+
361
+ deferred.push(function() {
362
+
363
+ var newContext = visitIfDi(lane, context);
364
+
365
+ if (lane.childLaneSet) {
366
+ handleLaneSet(lane.childLaneSet, newContext || context);
367
+ }
368
+
369
+ wireFlowNodeRefs(lane);
370
+ });
371
+ }
372
+
373
+ function handleLaneSet(laneSet, context) {
374
+ forEach(laneSet.lanes, contextual(handleLane, context));
375
+ }
376
+
377
+ function handleLaneSets(laneSets, context) {
378
+ forEach(laneSets, contextual(handleLaneSet, context));
379
+ }
380
+
381
+ function handleFlowElementsContainer(container, context) {
382
+ handleFlowElements(container.flowElements, context);
383
+
384
+ if (container.laneSets) {
385
+ handleLaneSets(container.laneSets, context);
386
+ }
387
+ }
388
+
389
+ function handleFlowElements(flowElements, context) {
390
+ forEach(flowElements, function(flowElement) {
391
+ if (is(flowElement, 'bpmn:SequenceFlow')) {
392
+ deferred.push(function() {
393
+ handleSequenceFlow(flowElement, context);
394
+ });
395
+ } else if (is(flowElement, 'bpmn:BoundaryEvent')) {
396
+ deferred.unshift(function() {
397
+ handleFlowNode(flowElement, context);
398
+ });
399
+ } else if (is(flowElement, 'bpmn:FlowNode')) {
400
+ handleFlowNode(flowElement, context);
401
+ } else if (is(flowElement, 'bpmn:DataObject')) {
402
+
403
+ // SKIP (assume correct referencing via DataObjectReference)
404
+ } else if (is(flowElement, 'bpmn:DataStoreReference')) {
405
+ handleDataElement(flowElement, context);
406
+ } else if (is(flowElement, 'bpmn:DataObjectReference')) {
407
+ handleDataElement(flowElement, context);
408
+ } else {
409
+ logError(
410
+ `unrecognized flowElement ${ elementToString(flowElement) } in context ${ elementToString(context && context.businessObject) }`,
411
+ {
412
+ element: flowElement,
413
+ context
414
+ }
415
+ );
416
+ }
417
+ });
418
+ }
419
+
420
+ function handleParticipant(participant, context) {
421
+ var newCtx = visitIfDi(participant, context);
422
+
423
+ var process = participant.processRef;
424
+ if (process) {
425
+ handleProcess(process, newCtx || context);
426
+ }
427
+ }
428
+
429
+ function handleCollaboration(collaboration, context) {
430
+
431
+ forEach(collaboration.participants, contextual(handleParticipant, context));
432
+
433
+ handleArtifacts(collaboration.artifacts, context);
434
+
435
+ // handle message flows latest in the process
436
+ deferred.push(function() {
437
+ handleMessageFlows(collaboration.messageFlows, context);
438
+ });
439
+ }
440
+
441
+
442
+ function wireFlowNodeRefs(lane) {
443
+
444
+ // wire the virtual flowNodeRefs <-> relationship
445
+ forEach(lane.flowNodeRef, function(flowNode) {
446
+ var lanes = flowNode.get('lanes');
447
+
448
+ if (lanes) {
449
+ lanes.push(lane);
450
+ }
451
+ });
452
+ }
453
+ }