bpmn-js 17.6.0 → 17.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 (339) 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/assets/diagram-js.css +966 -969
  5. package/dist/bpmn-modeler.development.js +59330 -59198
  6. package/dist/bpmn-modeler.production.min.js +8 -8
  7. package/dist/bpmn-navigated-viewer.development.js +22449 -22449
  8. package/dist/bpmn-navigated-viewer.production.min.js +1 -1
  9. package/dist/bpmn-viewer.development.js +21433 -21433
  10. package/dist/bpmn-viewer.production.min.js +1 -1
  11. package/index.js +2 -2
  12. package/lib/BaseModeler.d.ts +15 -15
  13. package/lib/BaseModeler.js +79 -79
  14. package/lib/BaseViewer.d.ts +352 -352
  15. package/lib/BaseViewer.js +858 -858
  16. package/lib/Modeler.d.ts +86 -86
  17. package/lib/Modeler.js +204 -204
  18. package/lib/NavigatedViewer.d.ts +11 -11
  19. package/lib/NavigatedViewer.js +37 -37
  20. package/lib/Viewer.d.ts +47 -47
  21. package/lib/Viewer.js +78 -78
  22. package/lib/core/index.d.ts +10 -10
  23. package/lib/core/index.js +8 -8
  24. package/lib/draw/BpmnRenderUtil.d.ts +123 -123
  25. package/lib/draw/BpmnRenderUtil.js +256 -256
  26. package/lib/draw/BpmnRenderer.d.ts +114 -114
  27. package/lib/draw/BpmnRenderer.js +2340 -2340
  28. package/lib/draw/PathMap.d.ts +330 -330
  29. package/lib/draw/PathMap.js +478 -478
  30. package/lib/draw/TextRenderer.d.ts +74 -74
  31. package/lib/draw/TextRenderer.js +136 -136
  32. package/lib/draw/index.d.ts +10 -10
  33. package/lib/draw/index.js +11 -11
  34. package/lib/features/align-elements/AlignElementsContextPadProvider.d.ts +32 -32
  35. package/lib/features/align-elements/AlignElementsContextPadProvider.js +105 -105
  36. package/lib/features/align-elements/AlignElementsIcons.d.ts +10 -10
  37. package/lib/features/align-elements/AlignElementsIcons.js +43 -43
  38. package/lib/features/align-elements/AlignElementsMenuProvider.d.ts +32 -32
  39. package/lib/features/align-elements/AlignElementsMenuProvider.js +100 -100
  40. package/lib/features/align-elements/BpmnAlignElements.d.ts +9 -9
  41. package/lib/features/align-elements/BpmnAlignElements.js +45 -45
  42. package/lib/features/align-elements/index.d.ts +11 -11
  43. package/lib/features/align-elements/index.js +23 -23
  44. package/lib/features/append-preview/AppendPreview.d.ts +36 -36
  45. package/lib/features/append-preview/AppendPreview.js +108 -108
  46. package/lib/features/append-preview/index.d.ts +16 -16
  47. package/lib/features/append-preview/index.js +15 -15
  48. package/lib/features/auto-place/BpmnAutoPlace.d.ts +13 -13
  49. package/lib/features/auto-place/BpmnAutoPlace.js +20 -20
  50. package/lib/features/auto-place/BpmnAutoPlaceUtil.d.ts +47 -47
  51. package/lib/features/auto-place/BpmnAutoPlaceUtil.js +225 -225
  52. package/lib/features/auto-place/index.d.ts +7 -7
  53. package/lib/features/auto-place/index.js +8 -8
  54. package/lib/features/auto-resize/BpmnAutoResize.d.ts +25 -25
  55. package/lib/features/auto-resize/BpmnAutoResize.js +45 -45
  56. package/lib/features/auto-resize/BpmnAutoResizeProvider.d.ts +26 -26
  57. package/lib/features/auto-resize/BpmnAutoResizeProvider.js +69 -69
  58. package/lib/features/auto-resize/index.d.ts +8 -8
  59. package/lib/features/auto-resize/index.js +12 -12
  60. package/lib/features/context-pad/ContextPadProvider.d.ts +73 -73
  61. package/lib/features/context-pad/ContextPadProvider.js +591 -591
  62. package/lib/features/context-pad/index.d.ts +7 -7
  63. package/lib/features/context-pad/index.js +22 -22
  64. package/lib/features/copy-paste/BpmnCopyPaste.d.ts +17 -17
  65. package/lib/features/copy-paste/BpmnCopyPaste.js +192 -192
  66. package/lib/features/copy-paste/ModdleCopy.d.ts +45 -45
  67. package/lib/features/copy-paste/ModdleCopy.js +275 -275
  68. package/lib/features/copy-paste/index.d.ts +9 -9
  69. package/lib/features/copy-paste/index.js +13 -13
  70. package/lib/features/di-ordering/BpmnDiOrdering.d.ts +11 -11
  71. package/lib/features/di-ordering/BpmnDiOrdering.js +48 -48
  72. package/lib/features/di-ordering/index.d.ts +6 -6
  73. package/lib/features/di-ordering/index.js +7 -7
  74. package/lib/features/distribute-elements/BpmnDistributeElements.d.ts +10 -10
  75. package/lib/features/distribute-elements/BpmnDistributeElements.js +60 -60
  76. package/lib/features/distribute-elements/DistributeElementsIcons.d.ts +5 -5
  77. package/lib/features/distribute-elements/DistributeElementsIcons.js +18 -18
  78. package/lib/features/distribute-elements/DistributeElementsMenuProvider.d.ts +32 -32
  79. package/lib/features/distribute-elements/DistributeElementsMenuProvider.js +92 -92
  80. package/lib/features/distribute-elements/index.d.ts +9 -9
  81. package/lib/features/distribute-elements/index.js +19 -19
  82. package/lib/features/drilldown/DrilldownBreadcrumbs.d.ts +19 -19
  83. package/lib/features/drilldown/DrilldownBreadcrumbs.js +131 -131
  84. package/lib/features/drilldown/DrilldownCentering.d.ts +17 -17
  85. package/lib/features/drilldown/DrilldownCentering.js +122 -122
  86. package/lib/features/drilldown/DrilldownOverlayBehavior.d.ts +18 -18
  87. package/lib/features/drilldown/DrilldownOverlayBehavior.js +210 -210
  88. package/lib/features/drilldown/SubprocessCompatibility.d.ts +21 -21
  89. package/lib/features/drilldown/SubprocessCompatibility.js +268 -268
  90. package/lib/features/drilldown/index.d.ts +13 -13
  91. package/lib/features/drilldown/index.js +16 -16
  92. package/lib/features/editor-actions/BpmnEditorActions.d.ts +13 -13
  93. package/lib/features/editor-actions/BpmnEditorActions.js +187 -187
  94. package/lib/features/editor-actions/index.d.ts +6 -6
  95. package/lib/features/editor-actions/index.js +10 -10
  96. package/lib/features/grid-snapping/BpmnGridSnapping.d.ts +9 -9
  97. package/lib/features/grid-snapping/behavior/GridSnappingAutoPlaceBehavior.d.ts +12 -12
  98. package/lib/features/grid-snapping/behavior/GridSnappingLayoutConnectionBehavior.d.ts +27 -27
  99. package/lib/features/grid-snapping/behavior/GridSnappingLayoutConnectionBehavior.js +155 -155
  100. package/lib/features/grid-snapping/behavior/GridSnappingParticipantBehavior.d.ts +13 -13
  101. package/lib/features/grid-snapping/behavior/index.d.ts +10 -10
  102. package/lib/features/grid-snapping/index.d.ts +11 -11
  103. package/lib/features/interaction-events/BpmnInteractionEvents.d.ts +18 -18
  104. package/lib/features/interaction-events/BpmnInteractionEvents.js +150 -150
  105. package/lib/features/interaction-events/index.d.ts +6 -6
  106. package/lib/features/interaction-events/index.js +5 -5
  107. package/lib/features/keyboard/BpmnKeyboardBindings.d.ts +15 -15
  108. package/lib/features/keyboard/BpmnKeyboardBindings.js +179 -179
  109. package/lib/features/keyboard/index.d.ts +7 -7
  110. package/lib/features/keyboard/index.js +11 -11
  111. package/lib/features/label-editing/LabelEditingPreview.d.ts +13 -13
  112. package/lib/features/label-editing/LabelEditingPreview.js +144 -144
  113. package/lib/features/label-editing/LabelEditingProvider.d.ts +62 -62
  114. package/lib/features/label-editing/LabelEditingProvider.js +519 -519
  115. package/lib/features/label-editing/LabelUtil.d.ts +1 -1
  116. package/lib/features/label-editing/LabelUtil.js +4 -4
  117. package/lib/features/label-editing/cmd/UpdateLabelHandler.d.ts +22 -22
  118. package/lib/features/label-editing/cmd/UpdateLabelHandler.js +149 -149
  119. package/lib/features/label-editing/index.d.ts +9 -9
  120. package/lib/features/label-editing/index.js +21 -21
  121. package/lib/features/modeling/BpmnFactory.d.ts +73 -73
  122. package/lib/features/modeling/BpmnFactory.js +180 -180
  123. package/lib/features/modeling/BpmnLayouter.d.ts +26 -26
  124. package/lib/features/modeling/BpmnLayouter.js +481 -481
  125. package/lib/features/modeling/BpmnUpdater.d.ts +90 -90
  126. package/lib/features/modeling/BpmnUpdater.js +837 -837
  127. package/lib/features/modeling/ElementFactory.d.ts +117 -117
  128. package/lib/features/modeling/ElementFactory.js +406 -406
  129. package/lib/features/modeling/ElementFactory.test.ts +132 -132
  130. package/lib/features/modeling/Modeling.d.ts +150 -150
  131. package/lib/features/modeling/Modeling.js +307 -307
  132. package/lib/features/modeling/Modeling.test.ts +147 -147
  133. package/lib/features/modeling/behavior/AdaptiveLabelPositioningBehavior.d.ts +20 -20
  134. package/lib/features/modeling/behavior/AdaptiveLabelPositioningBehavior.js +284 -284
  135. package/lib/features/modeling/behavior/AppendBehavior.d.ts +6 -6
  136. package/lib/features/modeling/behavior/AppendBehavior.js +42 -42
  137. package/lib/features/modeling/behavior/AssociationBehavior.d.ts +11 -11
  138. package/lib/features/modeling/behavior/AttachEventBehavior.d.ts +15 -15
  139. package/lib/features/modeling/behavior/AttachEventBehavior.js +106 -106
  140. package/lib/features/modeling/behavior/BoundaryEventBehavior.d.ts +15 -15
  141. package/lib/features/modeling/behavior/BoundaryEventBehavior.js +74 -74
  142. package/lib/features/modeling/behavior/CompensateBoundaryEventBehavior.d.ts +17 -17
  143. package/lib/features/modeling/behavior/CompensateBoundaryEventBehavior.js +222 -222
  144. package/lib/features/modeling/behavior/CreateBehavior.d.ts +9 -9
  145. package/lib/features/modeling/behavior/CreateBehavior.js +33 -33
  146. package/lib/features/modeling/behavior/CreateDataObjectBehavior.d.ts +15 -15
  147. package/lib/features/modeling/behavior/CreateDataObjectBehavior.js +43 -43
  148. package/lib/features/modeling/behavior/CreateParticipantBehavior.d.ts +19 -19
  149. package/lib/features/modeling/behavior/CreateParticipantBehavior.js +237 -237
  150. package/lib/features/modeling/behavior/DataInputAssociationBehavior.d.ts +21 -21
  151. package/lib/features/modeling/behavior/DataInputAssociationBehavior.js +162 -162
  152. package/lib/features/modeling/behavior/DataStoreBehavior.d.ts +19 -19
  153. package/lib/features/modeling/behavior/DeleteLaneBehavior.d.ts +15 -15
  154. package/lib/features/modeling/behavior/DeleteLaneBehavior.js +162 -162
  155. package/lib/features/modeling/behavior/DetachEventBehavior.d.ts +15 -15
  156. package/lib/features/modeling/behavior/DetachEventBehavior.js +101 -101
  157. package/lib/features/modeling/behavior/DropOnFlowBehavior.d.ts +13 -13
  158. package/lib/features/modeling/behavior/DropOnFlowBehavior.js +221 -221
  159. package/lib/features/modeling/behavior/EventBasedGatewayBehavior.d.ts +11 -11
  160. package/lib/features/modeling/behavior/EventBasedGatewayBehavior.js +110 -110
  161. package/lib/features/modeling/behavior/FixHoverBehavior.d.ts +17 -17
  162. package/lib/features/modeling/behavior/GroupBehavior.d.ts +26 -26
  163. package/lib/features/modeling/behavior/GroupBehavior.js +332 -332
  164. package/lib/features/modeling/behavior/ImportDockingFix.d.ts +13 -13
  165. package/lib/features/modeling/behavior/ImportDockingFix.js +83 -83
  166. package/lib/features/modeling/behavior/IsHorizontalFix.d.ts +10 -10
  167. package/lib/features/modeling/behavior/IsHorizontalFix.js +54 -54
  168. package/lib/features/modeling/behavior/LabelBehavior.d.ts +56 -56
  169. package/lib/features/modeling/behavior/LabelBehavior.js +364 -364
  170. package/lib/features/modeling/behavior/LayoutConnectionBehavior.d.ts +16 -16
  171. package/lib/features/modeling/behavior/LayoutConnectionBehavior.js +121 -121
  172. package/lib/features/modeling/behavior/MessageFlowBehavior.d.ts +15 -15
  173. package/lib/features/modeling/behavior/NonInterruptingBehavior.d.ts +4 -4
  174. package/lib/features/modeling/behavior/NonInterruptingBehavior.js +41 -41
  175. package/lib/features/modeling/behavior/RemoveElementBehavior.d.ts +13 -13
  176. package/lib/features/modeling/behavior/RemoveElementBehavior.js +91 -91
  177. package/lib/features/modeling/behavior/RemoveEmbeddedLabelBoundsBehavior.d.ts +16 -16
  178. package/lib/features/modeling/behavior/RemoveEmbeddedLabelBoundsBehavior.js +41 -41
  179. package/lib/features/modeling/behavior/RemoveParticipantBehavior.d.ts +15 -15
  180. package/lib/features/modeling/behavior/RemoveParticipantBehavior.js +54 -54
  181. package/lib/features/modeling/behavior/ReplaceConnectionBehavior.d.ts +15 -15
  182. package/lib/features/modeling/behavior/ReplaceConnectionBehavior.js +194 -194
  183. package/lib/features/modeling/behavior/ReplaceElementBehaviour.d.ts +23 -23
  184. package/lib/features/modeling/behavior/ReplaceElementBehaviour.js +144 -144
  185. package/lib/features/modeling/behavior/ResizeBehavior.d.ts +67 -67
  186. package/lib/features/modeling/behavior/ResizeBehavior.js +262 -262
  187. package/lib/features/modeling/behavior/ResizeLaneBehavior.d.ts +16 -16
  188. package/lib/features/modeling/behavior/ResizeLaneBehavior.js +70 -70
  189. package/lib/features/modeling/behavior/RootElementReferenceBehavior.d.ts +25 -25
  190. package/lib/features/modeling/behavior/SpaceToolBehavior.d.ts +10 -10
  191. package/lib/features/modeling/behavior/SpaceToolBehavior.js +207 -207
  192. package/lib/features/modeling/behavior/SubProcessPlaneBehavior.d.ts +28 -28
  193. package/lib/features/modeling/behavior/SubProcessPlaneBehavior.js +588 -588
  194. package/lib/features/modeling/behavior/SubProcessStartEventBehavior.d.ts +15 -15
  195. package/lib/features/modeling/behavior/SubProcessStartEventBehavior.js +55 -55
  196. package/lib/features/modeling/behavior/TextAnnotationBehavior.d.ts +6 -6
  197. package/lib/features/modeling/behavior/TextAnnotationBehavior.js +42 -42
  198. package/lib/features/modeling/behavior/ToggleCollapseConnectionBehaviour.d.ts +14 -14
  199. package/lib/features/modeling/behavior/ToggleCollapseConnectionBehaviour.js +87 -87
  200. package/lib/features/modeling/behavior/ToggleElementCollapseBehaviour.d.ts +13 -13
  201. package/lib/features/modeling/behavior/ToggleElementCollapseBehaviour.js +156 -156
  202. package/lib/features/modeling/behavior/UnclaimIdBehavior.d.ts +19 -19
  203. package/lib/features/modeling/behavior/UnclaimIdBehavior.js +64 -64
  204. package/lib/features/modeling/behavior/UnsetDefaultFlowBehavior.d.ts +16 -16
  205. package/lib/features/modeling/behavior/UnsetDefaultFlowBehavior.js +59 -59
  206. package/lib/features/modeling/behavior/UpdateFlowNodeRefsBehavior.d.ts +15 -15
  207. package/lib/features/modeling/behavior/UpdateFlowNodeRefsBehavior.js +157 -157
  208. package/lib/features/modeling/behavior/index.d.ts +2 -2
  209. package/lib/features/modeling/behavior/index.js +128 -128
  210. package/lib/features/modeling/behavior/util/CategoryUtil.d.ts +49 -49
  211. package/lib/features/modeling/behavior/util/CategoryUtil.js +86 -86
  212. package/lib/features/modeling/behavior/util/ConnectionLayoutUtil.d.ts +19 -19
  213. package/lib/features/modeling/behavior/util/ConnectionLayoutUtil.js +22 -22
  214. package/lib/features/modeling/behavior/util/GeometricUtil.d.ts +1 -1
  215. package/lib/features/modeling/behavior/util/LabelLayoutUtil.d.ts +32 -32
  216. package/lib/features/modeling/behavior/util/LabelLayoutUtil.js +41 -41
  217. package/lib/features/modeling/behavior/util/LayoutUtil.d.ts +48 -48
  218. package/lib/features/modeling/behavior/util/LayoutUtil.js +259 -259
  219. package/lib/features/modeling/behavior/util/LineAttachmentUtil.d.ts +37 -37
  220. package/lib/features/modeling/behavior/util/LineAttachmentUtil.js +241 -241
  221. package/lib/features/modeling/behavior/util/LineIntersect.d.ts +13 -13
  222. package/lib/features/modeling/behavior/util/LineIntersect.js +39 -39
  223. package/lib/features/modeling/behavior/util/NonInterruptingUtil.d.ts +3 -3
  224. package/lib/features/modeling/behavior/util/NonInterruptingUtil.js +32 -32
  225. package/lib/features/modeling/behavior/util/ResizeUtil.d.ts +1 -1
  226. package/lib/features/modeling/cmd/AddLaneHandler.d.ts +22 -22
  227. package/lib/features/modeling/cmd/AddLaneHandler.js +192 -192
  228. package/lib/features/modeling/cmd/IdClaimHandler.d.ts +22 -22
  229. package/lib/features/modeling/cmd/IdClaimHandler.js +51 -51
  230. package/lib/features/modeling/cmd/ResizeLaneHandler.d.ts +39 -39
  231. package/lib/features/modeling/cmd/ResizeLaneHandler.js +146 -146
  232. package/lib/features/modeling/cmd/SetColorHandler.d.ts +18 -18
  233. package/lib/features/modeling/cmd/SplitLaneHandler.d.ts +20 -20
  234. package/lib/features/modeling/cmd/SplitLaneHandler.js +99 -99
  235. package/lib/features/modeling/cmd/UpdateCanvasRootHandler.d.ts +20 -20
  236. package/lib/features/modeling/cmd/UpdateCanvasRootHandler.js +99 -99
  237. package/lib/features/modeling/cmd/UpdateFlowNodeRefsHandler.d.ts +21 -21
  238. package/lib/features/modeling/cmd/UpdateFlowNodeRefsHandler.js +218 -218
  239. package/lib/features/modeling/cmd/UpdateModdlePropertiesHandler.d.ts +20 -20
  240. package/lib/features/modeling/cmd/UpdateModdlePropertiesHandler.js +107 -107
  241. package/lib/features/modeling/cmd/UpdatePropertiesHandler.d.ts +58 -58
  242. package/lib/features/modeling/cmd/UpdatePropertiesHandler.js +260 -260
  243. package/lib/features/modeling/cmd/UpdateSemanticParentHandler.d.ts +18 -18
  244. package/lib/features/modeling/index.d.ts +27 -27
  245. package/lib/features/modeling/index.js +45 -45
  246. package/lib/features/modeling/util/LaneUtil.d.ts +46 -46
  247. package/lib/features/modeling/util/LaneUtil.js +188 -188
  248. package/lib/features/modeling/util/ModelingUtil.d.ts +21 -21
  249. package/lib/features/modeling/util/ModelingUtil.js +54 -54
  250. package/lib/features/modeling-feedback/ModelingFeedback.d.ts +13 -13
  251. package/lib/features/modeling-feedback/ModelingFeedback.js +46 -46
  252. package/lib/features/modeling-feedback/index.d.ts +7 -7
  253. package/lib/features/modeling-feedback/index.js +12 -12
  254. package/lib/features/ordering/BpmnOrderingProvider.d.ts +19 -19
  255. package/lib/features/ordering/BpmnOrderingProvider.js +191 -191
  256. package/lib/features/ordering/index.d.ts +6 -6
  257. package/lib/features/ordering/index.js +5 -5
  258. package/lib/features/outline/OutlineProvider.d.ts +34 -34
  259. package/lib/features/outline/OutlineProvider.js +179 -179
  260. package/lib/features/outline/OutlineUtil.d.ts +18 -18
  261. package/lib/features/outline/OutlineUtil.js +31 -31
  262. package/lib/features/outline/index.d.ts +7 -7
  263. package/lib/features/outline/index.js +10 -10
  264. package/lib/features/palette/PaletteProvider.d.ts +34 -34
  265. package/lib/features/palette/PaletteProvider.js +214 -214
  266. package/lib/features/palette/index.d.ts +9 -9
  267. package/lib/features/palette/index.js +23 -23
  268. package/lib/features/popup-menu/ReplaceMenuProvider.d.ts +52 -52
  269. package/lib/features/popup-menu/ReplaceMenuProvider.js +679 -679
  270. package/lib/features/popup-menu/index.d.ts +11 -11
  271. package/lib/features/popup-menu/index.js +16 -16
  272. package/lib/features/popup-menu/util/Icons.d.ts +5 -5
  273. package/lib/features/popup-menu/util/Icons.js +14 -14
  274. package/lib/features/popup-menu/util/TypeUtil.d.ts +14 -14
  275. package/lib/features/popup-menu/util/TypeUtil.js +52 -52
  276. package/lib/features/replace/BpmnReplace.d.ts +47 -47
  277. package/lib/features/replace/BpmnReplace.js +382 -382
  278. package/lib/features/replace/ReplaceOptions.d.ts +75 -75
  279. package/lib/features/replace/ReplaceOptions.js +919 -919
  280. package/lib/features/replace/index.d.ts +9 -9
  281. package/lib/features/replace/index.js +14 -14
  282. package/lib/features/replace-preview/BpmnReplacePreview.d.ts +17 -17
  283. package/lib/features/replace-preview/BpmnReplacePreview.js +139 -139
  284. package/lib/features/replace-preview/index.d.ts +7 -7
  285. package/lib/features/replace-preview/index.js +11 -11
  286. package/lib/features/rules/BpmnRules.d.ts +181 -181
  287. package/lib/features/rules/BpmnRules.js +1191 -1191
  288. package/lib/features/rules/index.d.ts +7 -7
  289. package/lib/features/rules/index.js +11 -11
  290. package/lib/features/search/BpmnSearchProvider.d.ts +29 -29
  291. package/lib/features/search/BpmnSearchProvider.js +136 -136
  292. package/lib/features/search/index.d.ts +7 -7
  293. package/lib/features/search/index.js +12 -12
  294. package/lib/features/snapping/BpmnConnectSnapping.d.ts +17 -17
  295. package/lib/features/snapping/BpmnCreateMoveSnapping.d.ts +41 -41
  296. package/lib/features/snapping/BpmnCreateMoveSnapping.js +289 -289
  297. package/lib/features/snapping/BpmnSnappingUtil.d.ts +11 -11
  298. package/lib/features/snapping/index.d.ts +9 -9
  299. package/lib/features/snapping/index.js +12 -12
  300. package/lib/features/space-tool/BpmnSpaceTool.d.ts +21 -21
  301. package/lib/features/space-tool/BpmnSpaceTool.js +69 -69
  302. package/lib/features/space-tool/index.d.ts +6 -6
  303. package/lib/features/space-tool/index.js +7 -7
  304. package/lib/import/BpmnImporter.d.ts +51 -51
  305. package/lib/import/BpmnImporter.js +363 -363
  306. package/lib/import/BpmnTreeWalker.d.ts +20 -20
  307. package/lib/import/BpmnTreeWalker.js +453 -453
  308. package/lib/import/Importer.d.ts +25 -25
  309. package/lib/import/Importer.js +217 -217
  310. package/lib/import/Util.d.ts +1 -1
  311. package/lib/import/Util.js +6 -6
  312. package/lib/import/index.d.ts +6 -6
  313. package/lib/import/index.js +9 -9
  314. package/lib/model/Types.d.ts +25 -25
  315. package/lib/model/Types.ts +40 -40
  316. package/lib/util/CompatibilityUtil.d.ts +8 -8
  317. package/lib/util/CompatibilityUtil.js +29 -29
  318. package/lib/util/DiUtil.d.ts +60 -60
  319. package/lib/util/DiUtil.js +122 -122
  320. package/lib/util/DrilldownUtil.d.ts +39 -39
  321. package/lib/util/DrilldownUtil.js +69 -69
  322. package/lib/util/LabelUtil.d.ts +83 -83
  323. package/lib/util/LabelUtil.js +262 -262
  324. package/lib/util/ModelUtil.d.ts +40 -40
  325. package/lib/util/ModelUtil.js +58 -58
  326. package/lib/util/PoweredByUtil.d.ts +8 -8
  327. package/lib/util/PoweredByUtil.js +99 -99
  328. package/lib/util/Types.js +4 -4
  329. package/lib/util/Types.ts +3 -3
  330. package/package.json +132 -132
  331. package/test/helper/TranslationCollector.js +15 -15
  332. package/test/helper/index.js +313 -313
  333. package/test/matchers/BoundsMatchers.js +252 -252
  334. package/test/matchers/ConnectionMatchers.js +165 -165
  335. package/test/matchers/JSONMatcher.js +19 -19
  336. package/test/util/KeyEvents.js +22 -22
  337. package/test/util/MockEvents.js +61 -61
  338. package/test/util/custom-rules/CustomRules.js +16 -16
  339. package/test/util/custom-rules/index.js +6 -6
@@ -1,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
+ }