bpmn-js 18.2.0 → 18.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (339) hide show
  1. package/LICENSE +23 -23
  2. package/README.md +95 -95
  3. package/dist/assets/bpmn-js.css +145 -145
  4. package/dist/bpmn-modeler.development.js +38724 -38473
  5. package/dist/bpmn-modeler.production.min.js +38 -38
  6. package/dist/bpmn-navigated-viewer.development.js +21139 -21139
  7. package/dist/bpmn-navigated-viewer.production.min.js +1 -1
  8. package/dist/bpmn-viewer.development.js +21080 -21080
  9. package/dist/bpmn-viewer.production.min.js +1 -1
  10. package/lib/BaseModeler.d.ts +15 -15
  11. package/lib/BaseModeler.js +79 -79
  12. package/lib/BaseViewer.d.ts +352 -352
  13. package/lib/BaseViewer.js +858 -858
  14. package/lib/Modeler.d.ts +86 -86
  15. package/lib/Modeler.js +206 -206
  16. package/lib/NavigatedViewer.d.ts +11 -11
  17. package/lib/NavigatedViewer.js +37 -37
  18. package/lib/Viewer.d.ts +47 -47
  19. package/lib/Viewer.js +76 -76
  20. package/lib/core/index.d.ts +10 -10
  21. package/lib/core/index.js +8 -8
  22. package/lib/draw/BpmnRenderUtil.d.ts +123 -123
  23. package/lib/draw/BpmnRenderUtil.js +256 -256
  24. package/lib/draw/BpmnRenderer.d.ts +116 -116
  25. package/lib/draw/BpmnRenderer.js +2339 -2339
  26. package/lib/draw/PathMap.d.ts +330 -330
  27. package/lib/draw/PathMap.js +478 -478
  28. package/lib/draw/TextRenderer.d.ts +74 -74
  29. package/lib/draw/TextRenderer.js +136 -136
  30. package/lib/draw/index.d.ts +10 -10
  31. package/lib/draw/index.js +11 -11
  32. package/lib/features/align-elements/AlignElementsContextPadProvider.d.ts +32 -32
  33. package/lib/features/align-elements/AlignElementsContextPadProvider.js +105 -105
  34. package/lib/features/align-elements/AlignElementsIcons.d.ts +10 -10
  35. package/lib/features/align-elements/AlignElementsIcons.js +43 -43
  36. package/lib/features/align-elements/AlignElementsMenuProvider.d.ts +32 -32
  37. package/lib/features/align-elements/AlignElementsMenuProvider.js +100 -100
  38. package/lib/features/align-elements/BpmnAlignElements.d.ts +9 -9
  39. package/lib/features/align-elements/BpmnAlignElements.js +45 -45
  40. package/lib/features/align-elements/index.d.ts +11 -11
  41. package/lib/features/align-elements/index.js +23 -23
  42. package/lib/features/append-preview/AppendPreview.d.ts +36 -36
  43. package/lib/features/append-preview/AppendPreview.js +108 -108
  44. package/lib/features/append-preview/index.d.ts +16 -16
  45. package/lib/features/append-preview/index.js +15 -15
  46. package/lib/features/auto-place/BpmnAutoPlace.d.ts +15 -15
  47. package/lib/features/auto-place/BpmnAutoPlace.js +22 -22
  48. package/lib/features/auto-place/BpmnAutoPlaceUtil.d.ts +52 -52
  49. package/lib/features/auto-place/BpmnAutoPlaceUtil.js +226 -226
  50. package/lib/features/auto-place/index.d.ts +7 -7
  51. package/lib/features/auto-place/index.js +8 -8
  52. package/lib/features/auto-resize/BpmnAutoResize.d.ts +25 -25
  53. package/lib/features/auto-resize/BpmnAutoResize.js +45 -45
  54. package/lib/features/auto-resize/BpmnAutoResizeProvider.d.ts +26 -26
  55. package/lib/features/auto-resize/BpmnAutoResizeProvider.js +69 -69
  56. package/lib/features/auto-resize/index.d.ts +8 -8
  57. package/lib/features/auto-resize/index.js +12 -12
  58. package/lib/features/context-pad/ContextPadProvider.d.ts +62 -62
  59. package/lib/features/context-pad/ContextPadProvider.js +582 -582
  60. package/lib/features/context-pad/index.d.ts +7 -7
  61. package/lib/features/context-pad/index.js +22 -22
  62. package/lib/features/copy-paste/BpmnCopyPaste.d.ts +17 -17
  63. package/lib/features/copy-paste/BpmnCopyPaste.js +192 -192
  64. package/lib/features/copy-paste/ModdleCopy.d.ts +45 -45
  65. package/lib/features/copy-paste/index.d.ts +9 -9
  66. package/lib/features/copy-paste/index.js +13 -13
  67. package/lib/features/di-ordering/BpmnDiOrdering.d.ts +11 -11
  68. package/lib/features/di-ordering/BpmnDiOrdering.js +48 -48
  69. package/lib/features/di-ordering/index.d.ts +6 -6
  70. package/lib/features/di-ordering/index.js +7 -7
  71. package/lib/features/distribute-elements/BpmnDistributeElements.d.ts +10 -10
  72. package/lib/features/distribute-elements/BpmnDistributeElements.js +60 -60
  73. package/lib/features/distribute-elements/DistributeElementsIcons.d.ts +5 -5
  74. package/lib/features/distribute-elements/DistributeElementsIcons.js +18 -18
  75. package/lib/features/distribute-elements/DistributeElementsMenuProvider.d.ts +32 -32
  76. package/lib/features/distribute-elements/DistributeElementsMenuProvider.js +92 -92
  77. package/lib/features/distribute-elements/index.d.ts +9 -9
  78. package/lib/features/distribute-elements/index.js +19 -19
  79. package/lib/features/drilldown/DrilldownBreadcrumbs.d.ts +19 -19
  80. package/lib/features/drilldown/DrilldownBreadcrumbs.js +138 -138
  81. package/lib/features/drilldown/DrilldownCentering.d.ts +17 -17
  82. package/lib/features/drilldown/DrilldownCentering.js +122 -122
  83. package/lib/features/drilldown/DrilldownOverlayBehavior.d.ts +20 -20
  84. package/lib/features/drilldown/DrilldownOverlayBehavior.js +218 -218
  85. package/lib/features/drilldown/SubprocessCompatibility.d.ts +21 -21
  86. package/lib/features/drilldown/SubprocessCompatibility.js +266 -266
  87. package/lib/features/drilldown/index.d.ts +13 -13
  88. package/lib/features/drilldown/index.js +16 -16
  89. package/lib/features/editor-actions/BpmnEditorActions.d.ts +13 -13
  90. package/lib/features/editor-actions/BpmnEditorActions.js +187 -187
  91. package/lib/features/editor-actions/index.d.ts +6 -6
  92. package/lib/features/editor-actions/index.js +10 -10
  93. package/lib/features/grid-snapping/BpmnGridSnapping.d.ts +9 -9
  94. package/lib/features/grid-snapping/behavior/GridSnappingAutoPlaceBehavior.d.ts +14 -14
  95. package/lib/features/grid-snapping/behavior/GridSnappingLayoutConnectionBehavior.d.ts +27 -27
  96. package/lib/features/grid-snapping/behavior/GridSnappingLayoutConnectionBehavior.js +155 -155
  97. package/lib/features/grid-snapping/behavior/GridSnappingParticipantBehavior.d.ts +13 -13
  98. package/lib/features/grid-snapping/behavior/index.d.ts +10 -10
  99. package/lib/features/grid-snapping/index.d.ts +11 -11
  100. package/lib/features/interaction-events/BpmnInteractionEvents.d.ts +18 -18
  101. package/lib/features/interaction-events/BpmnInteractionEvents.js +146 -146
  102. package/lib/features/interaction-events/index.d.ts +6 -6
  103. package/lib/features/interaction-events/index.js +5 -5
  104. package/lib/features/keyboard/BpmnKeyboardBindings.d.ts +15 -15
  105. package/lib/features/keyboard/BpmnKeyboardBindings.js +179 -179
  106. package/lib/features/keyboard/index.d.ts +7 -7
  107. package/lib/features/keyboard/index.js +11 -11
  108. package/lib/features/label-editing/LabelEditingPreview.d.ts +13 -13
  109. package/lib/features/label-editing/LabelEditingPreview.js +145 -145
  110. package/lib/features/label-editing/LabelEditingProvider.d.ts +62 -62
  111. package/lib/features/label-editing/LabelEditingProvider.js +519 -519
  112. package/lib/features/label-editing/LabelUtil.d.ts +1 -1
  113. package/lib/features/label-editing/LabelUtil.js +4 -4
  114. package/lib/features/label-editing/cmd/UpdateLabelHandler.d.ts +22 -22
  115. package/lib/features/label-editing/cmd/UpdateLabelHandler.js +149 -149
  116. package/lib/features/label-editing/index.d.ts +9 -9
  117. package/lib/features/label-editing/index.js +21 -21
  118. package/lib/features/modeling/BpmnFactory.d.ts +73 -73
  119. package/lib/features/modeling/BpmnFactory.js +180 -180
  120. package/lib/features/modeling/BpmnLayouter.d.ts +30 -30
  121. package/lib/features/modeling/BpmnLayouter.js +488 -488
  122. package/lib/features/modeling/BpmnUpdater.d.ts +90 -90
  123. package/lib/features/modeling/BpmnUpdater.js +818 -818
  124. package/lib/features/modeling/ElementFactory.d.ts +117 -117
  125. package/lib/features/modeling/ElementFactory.js +412 -412
  126. package/lib/features/modeling/ElementFactory.test.ts +132 -132
  127. package/lib/features/modeling/Modeling.d.ts +150 -150
  128. package/lib/features/modeling/Modeling.js +309 -309
  129. package/lib/features/modeling/Modeling.test.ts +147 -147
  130. package/lib/features/modeling/behavior/AdaptiveLabelPositioningBehavior.d.ts +19 -19
  131. package/lib/features/modeling/behavior/AdaptiveLabelPositioningBehavior.js +288 -288
  132. package/lib/features/modeling/behavior/AppendBehavior.d.ts +6 -6
  133. package/lib/features/modeling/behavior/AppendBehavior.js +42 -42
  134. package/lib/features/modeling/behavior/AssociationBehavior.d.ts +11 -11
  135. package/lib/features/modeling/behavior/AttachEventBehavior.d.ts +15 -15
  136. package/lib/features/modeling/behavior/AttachEventBehavior.js +106 -106
  137. package/lib/features/modeling/behavior/BoundaryEventBehavior.d.ts +15 -15
  138. package/lib/features/modeling/behavior/BoundaryEventBehavior.js +74 -74
  139. package/lib/features/modeling/behavior/CompensateBoundaryEventBehavior.d.ts +17 -17
  140. package/lib/features/modeling/behavior/CompensateBoundaryEventBehavior.js +222 -222
  141. package/lib/features/modeling/behavior/CreateBehavior.d.ts +9 -9
  142. package/lib/features/modeling/behavior/CreateBehavior.js +33 -33
  143. package/lib/features/modeling/behavior/CreateDataObjectBehavior.d.ts +15 -15
  144. package/lib/features/modeling/behavior/CreateDataObjectBehavior.js +43 -43
  145. package/lib/features/modeling/behavior/CreateParticipantBehavior.d.ts +19 -19
  146. package/lib/features/modeling/behavior/CreateParticipantBehavior.js +237 -237
  147. package/lib/features/modeling/behavior/DataInputAssociationBehavior.d.ts +21 -21
  148. package/lib/features/modeling/behavior/DataInputAssociationBehavior.js +162 -162
  149. package/lib/features/modeling/behavior/DataStoreBehavior.d.ts +19 -19
  150. package/lib/features/modeling/behavior/DeleteLaneBehavior.d.ts +15 -15
  151. package/lib/features/modeling/behavior/DeleteLaneBehavior.js +162 -162
  152. package/lib/features/modeling/behavior/DetachEventBehavior.d.ts +15 -15
  153. package/lib/features/modeling/behavior/DetachEventBehavior.js +101 -101
  154. package/lib/features/modeling/behavior/DropOnFlowBehavior.d.ts +13 -13
  155. package/lib/features/modeling/behavior/DropOnFlowBehavior.js +221 -221
  156. package/lib/features/modeling/behavior/EventBasedGatewayBehavior.d.ts +11 -11
  157. package/lib/features/modeling/behavior/EventBasedGatewayBehavior.js +110 -110
  158. package/lib/features/modeling/behavior/FixHoverBehavior.d.ts +17 -17
  159. package/lib/features/modeling/behavior/GroupBehavior.d.ts +26 -26
  160. package/lib/features/modeling/behavior/ImportDockingFix.d.ts +13 -13
  161. package/lib/features/modeling/behavior/ImportDockingFix.js +83 -83
  162. package/lib/features/modeling/behavior/IsHorizontalFix.d.ts +10 -10
  163. package/lib/features/modeling/behavior/IsHorizontalFix.js +54 -54
  164. package/lib/features/modeling/behavior/LabelBehavior.d.ts +56 -56
  165. package/lib/features/modeling/behavior/LabelBehavior.js +364 -364
  166. package/lib/features/modeling/behavior/LayoutConnectionBehavior.d.ts +16 -16
  167. package/lib/features/modeling/behavior/LayoutConnectionBehavior.js +121 -121
  168. package/lib/features/modeling/behavior/MessageFlowBehavior.d.ts +15 -15
  169. package/lib/features/modeling/behavior/NonInterruptingBehavior.d.ts +4 -4
  170. package/lib/features/modeling/behavior/NonInterruptingBehavior.js +41 -41
  171. package/lib/features/modeling/behavior/RemoveElementBehavior.d.ts +13 -13
  172. package/lib/features/modeling/behavior/RemoveElementBehavior.js +91 -91
  173. package/lib/features/modeling/behavior/RemoveEmbeddedLabelBoundsBehavior.d.ts +16 -16
  174. package/lib/features/modeling/behavior/RemoveEmbeddedLabelBoundsBehavior.js +41 -41
  175. package/lib/features/modeling/behavior/RemoveParticipantBehavior.d.ts +15 -15
  176. package/lib/features/modeling/behavior/RemoveParticipantBehavior.js +59 -59
  177. package/lib/features/modeling/behavior/ReplaceConnectionBehavior.d.ts +15 -15
  178. package/lib/features/modeling/behavior/ReplaceConnectionBehavior.js +194 -194
  179. package/lib/features/modeling/behavior/ReplaceElementBehaviour.d.ts +23 -23
  180. package/lib/features/modeling/behavior/ReplaceElementBehaviour.js +144 -144
  181. package/lib/features/modeling/behavior/ResizeBehavior.d.ts +64 -64
  182. package/lib/features/modeling/behavior/ResizeBehavior.js +265 -265
  183. package/lib/features/modeling/behavior/ResizeLaneBehavior.d.ts +16 -16
  184. package/lib/features/modeling/behavior/ResizeLaneBehavior.js +70 -70
  185. package/lib/features/modeling/behavior/RootElementReferenceBehavior.d.ts +25 -25
  186. package/lib/features/modeling/behavior/SetCompensationActivityAfterPasteBehavior.d.ts +16 -16
  187. package/lib/features/modeling/behavior/SetCompensationActivityAfterPasteBehavior.js +66 -66
  188. package/lib/features/modeling/behavior/SpaceToolBehavior.d.ts +10 -10
  189. package/lib/features/modeling/behavior/SpaceToolBehavior.js +207 -207
  190. package/lib/features/modeling/behavior/SubProcessPlaneBehavior.d.ts +28 -28
  191. package/lib/features/modeling/behavior/SubProcessPlaneBehavior.js +588 -588
  192. package/lib/features/modeling/behavior/SubProcessStartEventBehavior.d.ts +15 -15
  193. package/lib/features/modeling/behavior/SubProcessStartEventBehavior.js +55 -55
  194. package/lib/features/modeling/behavior/TextAnnotationBehavior.d.ts +6 -6
  195. package/lib/features/modeling/behavior/TextAnnotationBehavior.js +42 -42
  196. package/lib/features/modeling/behavior/ToggleCollapseConnectionBehaviour.d.ts +14 -14
  197. package/lib/features/modeling/behavior/ToggleCollapseConnectionBehaviour.js +87 -87
  198. package/lib/features/modeling/behavior/ToggleElementCollapseBehaviour.d.ts +13 -13
  199. package/lib/features/modeling/behavior/ToggleElementCollapseBehaviour.js +156 -156
  200. package/lib/features/modeling/behavior/UnclaimIdBehavior.d.ts +19 -19
  201. package/lib/features/modeling/behavior/UnclaimIdBehavior.js +64 -64
  202. package/lib/features/modeling/behavior/UnsetDefaultFlowBehavior.d.ts +16 -16
  203. package/lib/features/modeling/behavior/UnsetDefaultFlowBehavior.js +59 -59
  204. package/lib/features/modeling/behavior/UpdateFlowNodeRefsBehavior.d.ts +15 -15
  205. package/lib/features/modeling/behavior/UpdateFlowNodeRefsBehavior.js +157 -157
  206. package/lib/features/modeling/behavior/index.d.ts +2 -2
  207. package/lib/features/modeling/behavior/index.js +131 -131
  208. package/lib/features/modeling/behavior/util/CategoryUtil.d.ts +49 -49
  209. package/lib/features/modeling/behavior/util/CategoryUtil.js +86 -86
  210. package/lib/features/modeling/behavior/util/ConnectionLayoutUtil.d.ts +19 -19
  211. package/lib/features/modeling/behavior/util/ConnectionLayoutUtil.js +22 -22
  212. package/lib/features/modeling/behavior/util/GeometricUtil.d.ts +1 -1
  213. package/lib/features/modeling/behavior/util/LabelLayoutUtil.d.ts +32 -32
  214. package/lib/features/modeling/behavior/util/LabelLayoutUtil.js +41 -41
  215. package/lib/features/modeling/behavior/util/LayoutUtil.d.ts +48 -48
  216. package/lib/features/modeling/behavior/util/LayoutUtil.js +259 -259
  217. package/lib/features/modeling/behavior/util/LineAttachmentUtil.d.ts +37 -37
  218. package/lib/features/modeling/behavior/util/LineAttachmentUtil.js +241 -241
  219. package/lib/features/modeling/behavior/util/LineIntersect.d.ts +13 -13
  220. package/lib/features/modeling/behavior/util/LineIntersect.js +39 -39
  221. package/lib/features/modeling/behavior/util/NonInterruptingUtil.d.ts +3 -3
  222. package/lib/features/modeling/behavior/util/NonInterruptingUtil.js +32 -32
  223. package/lib/features/modeling/behavior/util/ResizeUtil.d.ts +1 -1
  224. package/lib/features/modeling/cmd/AddLaneHandler.d.ts +22 -22
  225. package/lib/features/modeling/cmd/AddLaneHandler.js +187 -187
  226. package/lib/features/modeling/cmd/IdClaimHandler.d.ts +22 -22
  227. package/lib/features/modeling/cmd/IdClaimHandler.js +51 -51
  228. package/lib/features/modeling/cmd/ResizeLaneHandler.d.ts +39 -39
  229. package/lib/features/modeling/cmd/ResizeLaneHandler.js +146 -146
  230. package/lib/features/modeling/cmd/SetColorHandler.d.ts +18 -18
  231. package/lib/features/modeling/cmd/SplitLaneHandler.d.ts +20 -20
  232. package/lib/features/modeling/cmd/SplitLaneHandler.js +99 -99
  233. package/lib/features/modeling/cmd/UpdateCanvasRootHandler.d.ts +20 -20
  234. package/lib/features/modeling/cmd/UpdateCanvasRootHandler.js +99 -99
  235. package/lib/features/modeling/cmd/UpdateFlowNodeRefsHandler.d.ts +21 -21
  236. package/lib/features/modeling/cmd/UpdateFlowNodeRefsHandler.js +218 -218
  237. package/lib/features/modeling/cmd/UpdateModdlePropertiesHandler.d.ts +20 -20
  238. package/lib/features/modeling/cmd/UpdateModdlePropertiesHandler.js +107 -107
  239. package/lib/features/modeling/cmd/UpdatePropertiesHandler.d.ts +58 -58
  240. package/lib/features/modeling/cmd/UpdatePropertiesHandler.js +260 -260
  241. package/lib/features/modeling/cmd/UpdateSemanticParentHandler.d.ts +18 -18
  242. package/lib/features/modeling/index.d.ts +27 -27
  243. package/lib/features/modeling/index.js +45 -45
  244. package/lib/features/modeling/util/LaneUtil.d.ts +46 -46
  245. package/lib/features/modeling/util/LaneUtil.js +188 -188
  246. package/lib/features/modeling/util/ModelingUtil.d.ts +23 -23
  247. package/lib/features/modeling/util/ModelingUtil.js +88 -88
  248. package/lib/features/modeling-feedback/ModelingFeedback.d.ts +13 -13
  249. package/lib/features/modeling-feedback/ModelingFeedback.js +46 -46
  250. package/lib/features/modeling-feedback/index.d.ts +7 -7
  251. package/lib/features/modeling-feedback/index.js +12 -12
  252. package/lib/features/ordering/BpmnOrderingProvider.d.ts +19 -19
  253. package/lib/features/ordering/BpmnOrderingProvider.js +191 -191
  254. package/lib/features/ordering/index.d.ts +6 -6
  255. package/lib/features/ordering/index.js +5 -5
  256. package/lib/features/outline/OutlineProvider.d.ts +39 -39
  257. package/lib/features/outline/OutlineProvider.js +189 -189
  258. package/lib/features/outline/OutlineUtil.d.ts +23 -23
  259. package/lib/features/outline/OutlineUtil.js +35 -35
  260. package/lib/features/outline/index.d.ts +7 -7
  261. package/lib/features/outline/index.js +10 -10
  262. package/lib/features/palette/PaletteProvider.d.ts +34 -34
  263. package/lib/features/palette/PaletteProvider.js +214 -214
  264. package/lib/features/palette/index.d.ts +9 -9
  265. package/lib/features/palette/index.js +23 -23
  266. package/lib/features/popup-menu/ReplaceMenuProvider.d.ts +52 -52
  267. package/lib/features/popup-menu/ReplaceMenuProvider.js +656 -629
  268. package/lib/features/popup-menu/index.d.ts +11 -11
  269. package/lib/features/popup-menu/index.js +16 -16
  270. package/lib/features/popup-menu/util/Icons.d.ts +5 -5
  271. package/lib/features/popup-menu/util/Icons.js +14 -14
  272. package/lib/features/popup-menu/util/TypeUtil.d.ts +14 -14
  273. package/lib/features/popup-menu/util/TypeUtil.js +52 -52
  274. package/lib/features/replace/BpmnReplace.d.ts +45 -45
  275. package/lib/features/replace/BpmnReplace.js +391 -391
  276. package/lib/features/replace/ReplaceOptions.d.ts +85 -79
  277. package/lib/features/replace/ReplaceOptions.js +1198 -998
  278. package/lib/features/replace/index.d.ts +9 -9
  279. package/lib/features/replace/index.js +14 -14
  280. package/lib/features/replace-preview/BpmnReplacePreview.d.ts +17 -17
  281. package/lib/features/replace-preview/BpmnReplacePreview.js +139 -139
  282. package/lib/features/replace-preview/index.d.ts +7 -7
  283. package/lib/features/replace-preview/index.js +11 -11
  284. package/lib/features/rules/BpmnRules.d.ts +181 -181
  285. package/lib/features/rules/BpmnRules.js +1191 -1191
  286. package/lib/features/rules/index.d.ts +7 -7
  287. package/lib/features/rules/index.js +11 -11
  288. package/lib/features/search/BpmnSearchProvider.d.ts +34 -34
  289. package/lib/features/search/BpmnSearchProvider.js +91 -91
  290. package/lib/features/search/index.d.ts +7 -7
  291. package/lib/features/search/index.js +14 -14
  292. package/lib/features/snapping/BpmnConnectSnapping.d.ts +17 -17
  293. package/lib/features/snapping/BpmnCreateMoveSnapping.d.ts +41 -41
  294. package/lib/features/snapping/BpmnCreateMoveSnapping.js +289 -289
  295. package/lib/features/snapping/BpmnSnappingUtil.d.ts +11 -11
  296. package/lib/features/snapping/index.d.ts +9 -9
  297. package/lib/features/snapping/index.js +12 -12
  298. package/lib/features/space-tool/BpmnSpaceTool.d.ts +24 -21
  299. package/lib/features/space-tool/BpmnSpaceTool.js +96 -69
  300. package/lib/features/space-tool/index.d.ts +6 -6
  301. package/lib/features/space-tool/index.js +7 -7
  302. package/lib/import/BpmnImporter.d.ts +51 -51
  303. package/lib/import/BpmnImporter.js +363 -363
  304. package/lib/import/BpmnTreeWalker.d.ts +20 -20
  305. package/lib/import/BpmnTreeWalker.js +453 -453
  306. package/lib/import/Importer.d.ts +25 -25
  307. package/lib/import/Importer.js +222 -222
  308. package/lib/import/Util.d.ts +1 -1
  309. package/lib/import/Util.js +6 -6
  310. package/lib/import/index.d.ts +6 -6
  311. package/lib/import/index.js +9 -9
  312. package/lib/index.d.ts +1 -1
  313. package/lib/index.js +2 -2
  314. package/lib/model/Types.d.ts +25 -25
  315. package/lib/model/Types.ts +40 -40
  316. package/lib/util/CompatibilityUtil.d.ts +8 -8
  317. package/lib/util/CompatibilityUtil.js +29 -29
  318. package/lib/util/DiUtil.d.ts +60 -60
  319. package/lib/util/DiUtil.js +122 -122
  320. package/lib/util/DrilldownUtil.d.ts +39 -39
  321. package/lib/util/DrilldownUtil.js +69 -69
  322. package/lib/util/LabelUtil.d.ts +83 -83
  323. package/lib/util/LabelUtil.js +266 -266
  324. package/lib/util/ModelUtil.d.ts +40 -40
  325. package/lib/util/ModelUtil.js +58 -58
  326. package/lib/util/PoweredByUtil.d.ts +8 -8
  327. package/lib/util/PoweredByUtil.js +99 -99
  328. package/lib/util/Types.js +4 -4
  329. package/lib/util/Types.ts +3 -3
  330. package/package.json +131 -131
  331. package/test/helper/TranslationCollector.js +15 -15
  332. package/test/helper/index.js +313 -313
  333. package/test/matchers/BoundsMatchers.js +252 -252
  334. package/test/matchers/ConnectionMatchers.js +165 -165
  335. package/test/matchers/JSONMatcher.js +19 -19
  336. package/test/util/KeyEvents.js +22 -22
  337. package/test/util/MockEvents.js +61 -61
  338. package/test/util/custom-rules/CustomRules.js +16 -16
  339. package/test/util/custom-rules/index.js +6 -6
@@ -1,488 +1,488 @@
1
- import inherits from 'inherits-browser';
2
-
3
- import {
4
- assign
5
- } from 'min-dash';
6
-
7
- import BaseLayouter from 'diagram-js/lib/layout/BaseLayouter';
8
-
9
- import {
10
- repairConnection,
11
- withoutRedundantPoints
12
- } from 'diagram-js/lib/layout/ManhattanLayout';
13
-
14
- import {
15
- getMid,
16
- getOrientation
17
- } from 'diagram-js/lib/layout/LayoutUtil';
18
-
19
- import {
20
- isExpanded
21
- } from '../../util/DiUtil';
22
-
23
- import { is } from '../../util/ModelUtil';
24
-
25
- import { isDirectionHorizontal } from './util/ModelingUtil';
26
-
27
- /**
28
- * @typedef {import('diagram-js/lib/core/ElementRegistry').default} ElementRegistry
29
- *
30
- * @typedef {import('diagram-js/lib/util/Types').Point} Point
31
- *
32
- * @typedef {import('../../model/Types').Connection} Connection
33
- * @typedef {import('../../model/Types').Element} Element
34
- *
35
- * @typedef {import('diagram-js/lib/layout/BaseLayouter').LayoutConnectionHints} LayoutConnectionHints
36
- *
37
- * @typedef { {
38
- * source?: Element;
39
- * target?: Element;
40
- * waypoints?: Point[];
41
- * connectionStart?: Point;
42
- * connectionEnd?: Point;
43
- * } & LayoutConnectionHints } BpmnLayoutConnectionHints
44
- */
45
-
46
- var ATTACH_ORIENTATION_PADDING = -10,
47
- BOUNDARY_TO_HOST_THRESHOLD = 40;
48
-
49
- // layout all connection between flow elements h:h, except for
50
- // (1) outgoing of boundary events -> layout based on attach orientation and target orientation
51
- // (2) incoming/outgoing of gateways -> v:h for outgoing, h:v for incoming
52
- // (3) loops connect sides clockwise
53
- var PREFERRED_LAYOUTS_HORIZONTAL = {
54
- default: [ 'h:h' ],
55
- fromGateway: [ 'v:h' ],
56
- toGateway: [ 'h:v' ],
57
- loop: {
58
- fromTop: [ 't:r' ],
59
- fromRight: [ 'r:b' ],
60
- fromLeft: [ 'l:t' ],
61
- fromBottom: [ 'b:l' ]
62
- },
63
- boundaryLoop: {
64
- alternateHorizontalSide: 'b',
65
- alternateVerticalSide: 'l',
66
- default: 'v'
67
- },
68
- messageFlow: [ 'straight', 'v:v' ],
69
- subProcess: [ 'straight', 'h:h' ],
70
- isHorizontal: true
71
- };
72
-
73
- // for vertical layouts, switch h and v and loop counter-clockwise
74
- var PREFERRED_LAYOUTS_VERTICAL = {
75
- default: [ 'v:v' ],
76
- fromGateway: [ 'h:v' ],
77
- toGateway: [ 'v:h' ],
78
- loop: {
79
- fromTop: [ 't:l' ],
80
- fromRight: [ 'r:t' ],
81
- fromLeft: [ 'l:b' ],
82
- fromBottom: [ 'b:r' ]
83
- },
84
- boundaryLoop: {
85
- alternateHorizontalSide: 't',
86
- alternateVerticalSide: 'r',
87
- default: 'h'
88
- },
89
- messageFlow: [ 'straight', 'h:h' ],
90
- subProcess: [ 'straight', 'v:v' ],
91
- isHorizontal: false
92
- };
93
-
94
- var oppositeOrientationMapping = {
95
- 'top': 'bottom',
96
- 'top-right': 'bottom-left',
97
- 'top-left': 'bottom-right',
98
- 'right': 'left',
99
- 'bottom': 'top',
100
- 'bottom-right': 'top-left',
101
- 'bottom-left': 'top-right',
102
- 'left': 'right'
103
- };
104
-
105
- var orientationDirectionMapping = {
106
- top: 't',
107
- right: 'r',
108
- bottom: 'b',
109
- left: 'l'
110
- };
111
-
112
- export default function BpmnLayouter(elementRegistry) {
113
- this._elementRegistry = elementRegistry;
114
- }
115
-
116
- inherits(BpmnLayouter, BaseLayouter);
117
-
118
- /**
119
- * Returns waypoints of laid out connection.
120
- *
121
- * @param {Connection} connection
122
- * @param {BpmnLayoutConnectionHints} [hints]
123
- *
124
- * @return {Point[]}
125
- */
126
- BpmnLayouter.prototype.layoutConnection = function(connection, hints) {
127
- if (!hints) {
128
- hints = {};
129
- }
130
-
131
- var source = hints.source || connection.source,
132
- target = hints.target || connection.target,
133
- waypoints = hints.waypoints || connection.waypoints,
134
- connectionStart = hints.connectionStart,
135
- connectionEnd = hints.connectionEnd,
136
- elementRegistry = this._elementRegistry;
137
-
138
- var manhattanOptions,
139
- updatedWaypoints;
140
-
141
- if (!connectionStart) {
142
- connectionStart = getConnectionDocking(waypoints && waypoints[ 0 ], source);
143
- }
144
-
145
- if (!connectionEnd) {
146
- connectionEnd = getConnectionDocking(waypoints && waypoints[ waypoints.length - 1 ], target);
147
- }
148
-
149
- if (is(connection, 'bpmn:Association') ||
150
- is(connection, 'bpmn:DataAssociation')) {
151
-
152
- if (waypoints && !isCompensationAssociation(source, target)) {
153
- return [].concat([ connectionStart ], waypoints.slice(1, -1), [ connectionEnd ]);
154
- }
155
- }
156
-
157
- var layout = isDirectionHorizontal(source, elementRegistry) ? PREFERRED_LAYOUTS_HORIZONTAL : PREFERRED_LAYOUTS_VERTICAL;
158
-
159
- if (is(connection, 'bpmn:MessageFlow')) {
160
- manhattanOptions = getMessageFlowManhattanOptions(source, target, layout);
161
- } else if (is(connection, 'bpmn:SequenceFlow') || isCompensationAssociation(source, target)) {
162
-
163
- if (source === target) {
164
- manhattanOptions = {
165
- preferredLayouts: getLoopPreferredLayout(source, connection, layout)
166
- };
167
- } else if (is(source, 'bpmn:BoundaryEvent')) {
168
- manhattanOptions = {
169
- preferredLayouts: getBoundaryEventPreferredLayouts(source, target, connectionEnd, layout)
170
- };
171
- } else if (isExpandedSubProcess(source) || isExpandedSubProcess(target)) {
172
- manhattanOptions = {
173
- preferredLayouts: layout.subProcess,
174
- preserveDocking: getSubProcessPreserveDocking(source)
175
- };
176
- } else if (is(source, 'bpmn:Gateway')) {
177
- manhattanOptions = {
178
- preferredLayouts: layout.fromGateway
179
- };
180
- } else if (is(target, 'bpmn:Gateway')) {
181
- manhattanOptions = {
182
- preferredLayouts: layout.toGateway
183
- };
184
- } else {
185
- manhattanOptions = {
186
- preferredLayouts: layout.default
187
- };
188
- }
189
- }
190
-
191
- if (manhattanOptions) {
192
- manhattanOptions = assign(manhattanOptions, hints);
193
-
194
- updatedWaypoints = withoutRedundantPoints(repairConnection(
195
- source,
196
- target,
197
- connectionStart,
198
- connectionEnd,
199
- waypoints,
200
- manhattanOptions
201
- ));
202
- }
203
-
204
- return updatedWaypoints || [ connectionStart, connectionEnd ];
205
- };
206
-
207
-
208
- // helpers //////////
209
-
210
- function getAttachOrientation(attachedElement) {
211
- var hostElement = attachedElement.host;
212
-
213
- return getOrientation(getMid(attachedElement), hostElement, ATTACH_ORIENTATION_PADDING);
214
- }
215
-
216
- function getMessageFlowManhattanOptions(source, target, layout) {
217
- return {
218
- preferredLayouts: layout.messageFlow,
219
- preserveDocking: getMessageFlowPreserveDocking(source, target)
220
- };
221
- }
222
-
223
- function getMessageFlowPreserveDocking(source, target) {
224
-
225
- // (1) docking element connected to participant has precedence
226
- if (is(target, 'bpmn:Participant')) {
227
- return 'source';
228
- }
229
-
230
- if (is(source, 'bpmn:Participant')) {
231
- return 'target';
232
- }
233
-
234
- // (2) docking element connected to expanded sub-process has precedence
235
- if (isExpandedSubProcess(target)) {
236
- return 'source';
237
- }
238
-
239
- if (isExpandedSubProcess(source)) {
240
- return 'target';
241
- }
242
-
243
- // (3) docking event has precedence
244
- if (is(target, 'bpmn:Event')) {
245
- return 'target';
246
- }
247
-
248
- if (is(source, 'bpmn:Event')) {
249
- return 'source';
250
- }
251
-
252
- return null;
253
- }
254
-
255
- function getSubProcessPreserveDocking(source) {
256
- return isExpandedSubProcess(source) ? 'target' : 'source';
257
- }
258
-
259
- function getConnectionDocking(point, shape) {
260
- return point ? (point.original || point) : getMid(shape);
261
- }
262
-
263
- function isCompensationAssociation(source, target) {
264
- return is(target, 'bpmn:Activity') &&
265
- is(source, 'bpmn:BoundaryEvent') &&
266
- target.businessObject.isForCompensation;
267
- }
268
-
269
- function isExpandedSubProcess(element) {
270
- return is(element, 'bpmn:SubProcess') && isExpanded(element);
271
- }
272
-
273
- function isSame(a, b) {
274
- return a === b;
275
- }
276
-
277
- function isAnyOrientation(orientation, orientations) {
278
- return orientations.indexOf(orientation) !== -1;
279
- }
280
-
281
- function getHorizontalOrientation(orientation) {
282
- var matches = /right|left/.exec(orientation);
283
-
284
- return matches && matches[0];
285
- }
286
-
287
- function getVerticalOrientation(orientation) {
288
- var matches = /top|bottom/.exec(orientation);
289
-
290
- return matches && matches[0];
291
- }
292
-
293
- function isOppositeOrientation(a, b) {
294
- return oppositeOrientationMapping[a] === b;
295
- }
296
-
297
- function isOppositeHorizontalOrientation(a, b) {
298
- var horizontalOrientation = getHorizontalOrientation(a);
299
-
300
- var oppositeHorizontalOrientation = oppositeOrientationMapping[horizontalOrientation];
301
-
302
- return b.indexOf(oppositeHorizontalOrientation) !== -1;
303
- }
304
-
305
- function isOppositeVerticalOrientation(a, b) {
306
- var verticalOrientation = getVerticalOrientation(a);
307
-
308
- var oppositeVerticalOrientation = oppositeOrientationMapping[verticalOrientation];
309
-
310
- return b.indexOf(oppositeVerticalOrientation) !== -1;
311
- }
312
-
313
- function isHorizontalOrientation(orientation) {
314
- return orientation === 'right' || orientation === 'left';
315
- }
316
-
317
- function getLoopPreferredLayout(source, connection, layout) {
318
- var waypoints = connection.waypoints;
319
-
320
- var orientation = waypoints && waypoints.length && getOrientation(waypoints[0], source);
321
-
322
- if (orientation === 'top') {
323
- return layout.loop.fromTop;
324
- } else if (orientation === 'right') {
325
- return layout.loop.fromRight;
326
- } else if (orientation === 'left') {
327
- return layout.loop.fromLeft;
328
- }
329
-
330
- return layout.loop.fromBottom;
331
- }
332
-
333
- function getBoundaryEventPreferredLayouts(source, target, end, layout) {
334
- var sourceMid = getMid(source),
335
- targetMid = getMid(target),
336
- attachOrientation = getAttachOrientation(source),
337
- sourceLayout,
338
- targetLayout;
339
-
340
- var isLoop = isSame(source.host, target);
341
-
342
- var attachedToSide = isAnyOrientation(attachOrientation, [ 'top', 'right', 'bottom', 'left' ]);
343
-
344
- var targetOrientation = getOrientation(targetMid, sourceMid, {
345
- x: source.width / 2 + target.width / 2,
346
- y: source.height / 2 + target.height / 2
347
- });
348
-
349
- if (isLoop) {
350
- return getBoundaryEventLoopLayout(attachOrientation, attachedToSide, source, target, end, layout);
351
- }
352
-
353
- // source layout
354
- sourceLayout = getBoundaryEventSourceLayout(attachOrientation, targetOrientation, attachedToSide, layout.isHorizontal);
355
-
356
- // target layout
357
- targetLayout = getBoundaryEventTargetLayout(attachOrientation, targetOrientation, attachedToSide, layout.isHorizontal);
358
-
359
- return [ sourceLayout + ':' + targetLayout ];
360
- }
361
-
362
- function getBoundaryEventLoopLayout(attachOrientation, attachedToSide, source, target, end, layout) {
363
- var orientation = attachedToSide ? attachOrientation : layout.isHorizontal ? getVerticalOrientation(attachOrientation) : getHorizontalOrientation(attachOrientation),
364
- sourceLayout = orientationDirectionMapping[ orientation ],
365
- targetLayout;
366
-
367
- if (attachedToSide) {
368
- if (isHorizontalOrientation(attachOrientation)) {
369
- targetLayout = shouldConnectToSameSide('y', source, target, end) ? 'h' : layout.boundaryLoop.alternateHorizontalSide;
370
- } else {
371
- targetLayout = shouldConnectToSameSide('x', source, target, end) ? 'v' : layout.boundaryLoop.alternateVerticalSide;
372
- }
373
- } else {
374
- targetLayout = layout.boundaryLoop.default;
375
- }
376
-
377
- return [ sourceLayout + ':' + targetLayout ];
378
- }
379
-
380
- function shouldConnectToSameSide(axis, source, target, end) {
381
- var threshold = BOUNDARY_TO_HOST_THRESHOLD;
382
-
383
- return !(
384
- areCloseOnAxis(axis, end, target, threshold) ||
385
- areCloseOnAxis(axis, end, {
386
- x: target.x + target.width,
387
- y: target.y + target.height
388
- }, threshold) ||
389
- areCloseOnAxis(axis, end, getMid(source), threshold)
390
- );
391
- }
392
-
393
- function areCloseOnAxis(axis, a, b, threshold) {
394
- return Math.abs(a[ axis ] - b[ axis ]) < threshold;
395
- }
396
-
397
- function getBoundaryEventSourceLayout(attachOrientation, targetOrientation, attachedToSide, isHorizontal) {
398
-
399
- // attached to either top, right, bottom or left side
400
- if (attachedToSide) {
401
- return orientationDirectionMapping[ attachOrientation ];
402
- }
403
-
404
- // attached to either top-right, top-left, bottom-right or bottom-left corner
405
-
406
- var verticalAttachOrientation = getVerticalOrientation(attachOrientation),
407
- horizontalAttachOrientation = getHorizontalOrientation(attachOrientation),
408
- verticalTargetOrientation = getVerticalOrientation(targetOrientation),
409
- horizontalTargetOrientation = getHorizontalOrientation(targetOrientation);
410
-
411
- if (isHorizontal) {
412
-
413
- // same vertical or opposite horizontal orientation
414
- if (
415
- isSame(verticalAttachOrientation, verticalTargetOrientation) ||
416
- isOppositeOrientation(horizontalAttachOrientation, horizontalTargetOrientation)
417
- ) {
418
- return orientationDirectionMapping[ verticalAttachOrientation ];
419
- }
420
- } else {
421
-
422
- // same horizontal or opposite vertical orientation
423
- if (
424
- isSame(horizontalAttachOrientation, horizontalTargetOrientation) ||
425
- isOppositeOrientation(verticalAttachOrientation, verticalTargetOrientation)
426
- ) {
427
- return orientationDirectionMapping[ horizontalAttachOrientation ];
428
- }
429
- }
430
-
431
- // fallback
432
- return orientationDirectionMapping[ isHorizontal ? horizontalAttachOrientation : verticalAttachOrientation ];
433
- }
434
-
435
- function getBoundaryEventTargetLayout(attachOrientation, targetOrientation, attachedToSide, isHorizontal) {
436
-
437
- // attached to either top, right, bottom or left side
438
- if (attachedToSide) {
439
- if (isHorizontalOrientation(attachOrientation)) {
440
-
441
- // orientation is right or left
442
-
443
- // opposite horizontal orientation or same orientation
444
- if (
445
- isOppositeHorizontalOrientation(attachOrientation, targetOrientation) ||
446
- isSame(attachOrientation, targetOrientation)
447
- ) {
448
- return 'h';
449
- }
450
-
451
- // fallback
452
- return 'v';
453
- } else {
454
-
455
- // orientation is top or bottom
456
-
457
- // opposite vertical orientation or same orientation
458
- if (
459
- isOppositeVerticalOrientation(attachOrientation, targetOrientation) ||
460
- isSame(attachOrientation, targetOrientation)
461
- ) {
462
- return 'v';
463
- }
464
-
465
- // fallback
466
- return 'h';
467
- }
468
- }
469
-
470
- // attached to either top-right, top-left, bottom-right or bottom-left corner
471
- // and orientation is same on the counter-axis
472
-
473
- if (isHorizontal) {
474
- if (isSame(getVerticalOrientation(attachOrientation), getVerticalOrientation(targetOrientation))) {
475
- return 'h';
476
- } else {
477
- return 'v';
478
- }
479
- } else {
480
- if (isSame(getHorizontalOrientation(attachOrientation), getHorizontalOrientation(targetOrientation))) {
481
- return 'v';
482
- } else {
483
- return 'h';
484
- }
485
- }
486
- }
487
-
488
- BpmnLayouter.$inject = [ 'elementRegistry' ];
1
+ import inherits from 'inherits-browser';
2
+
3
+ import {
4
+ assign
5
+ } from 'min-dash';
6
+
7
+ import BaseLayouter from 'diagram-js/lib/layout/BaseLayouter';
8
+
9
+ import {
10
+ repairConnection,
11
+ withoutRedundantPoints
12
+ } from 'diagram-js/lib/layout/ManhattanLayout';
13
+
14
+ import {
15
+ getMid,
16
+ getOrientation
17
+ } from 'diagram-js/lib/layout/LayoutUtil';
18
+
19
+ import {
20
+ isExpanded
21
+ } from '../../util/DiUtil';
22
+
23
+ import { is } from '../../util/ModelUtil';
24
+
25
+ import { isDirectionHorizontal } from './util/ModelingUtil';
26
+
27
+ /**
28
+ * @typedef {import('diagram-js/lib/core/ElementRegistry').default} ElementRegistry
29
+ *
30
+ * @typedef {import('diagram-js/lib/util/Types').Point} Point
31
+ *
32
+ * @typedef {import('../../model/Types').Connection} Connection
33
+ * @typedef {import('../../model/Types').Element} Element
34
+ *
35
+ * @typedef {import('diagram-js/lib/layout/BaseLayouter').LayoutConnectionHints} LayoutConnectionHints
36
+ *
37
+ * @typedef { {
38
+ * source?: Element;
39
+ * target?: Element;
40
+ * waypoints?: Point[];
41
+ * connectionStart?: Point;
42
+ * connectionEnd?: Point;
43
+ * } & LayoutConnectionHints } BpmnLayoutConnectionHints
44
+ */
45
+
46
+ var ATTACH_ORIENTATION_PADDING = -10,
47
+ BOUNDARY_TO_HOST_THRESHOLD = 40;
48
+
49
+ // layout all connection between flow elements h:h, except for
50
+ // (1) outgoing of boundary events -> layout based on attach orientation and target orientation
51
+ // (2) incoming/outgoing of gateways -> v:h for outgoing, h:v for incoming
52
+ // (3) loops connect sides clockwise
53
+ var PREFERRED_LAYOUTS_HORIZONTAL = {
54
+ default: [ 'h:h' ],
55
+ fromGateway: [ 'v:h' ],
56
+ toGateway: [ 'h:v' ],
57
+ loop: {
58
+ fromTop: [ 't:r' ],
59
+ fromRight: [ 'r:b' ],
60
+ fromLeft: [ 'l:t' ],
61
+ fromBottom: [ 'b:l' ]
62
+ },
63
+ boundaryLoop: {
64
+ alternateHorizontalSide: 'b',
65
+ alternateVerticalSide: 'l',
66
+ default: 'v'
67
+ },
68
+ messageFlow: [ 'straight', 'v:v' ],
69
+ subProcess: [ 'straight', 'h:h' ],
70
+ isHorizontal: true
71
+ };
72
+
73
+ // for vertical layouts, switch h and v and loop counter-clockwise
74
+ var PREFERRED_LAYOUTS_VERTICAL = {
75
+ default: [ 'v:v' ],
76
+ fromGateway: [ 'h:v' ],
77
+ toGateway: [ 'v:h' ],
78
+ loop: {
79
+ fromTop: [ 't:l' ],
80
+ fromRight: [ 'r:t' ],
81
+ fromLeft: [ 'l:b' ],
82
+ fromBottom: [ 'b:r' ]
83
+ },
84
+ boundaryLoop: {
85
+ alternateHorizontalSide: 't',
86
+ alternateVerticalSide: 'r',
87
+ default: 'h'
88
+ },
89
+ messageFlow: [ 'straight', 'h:h' ],
90
+ subProcess: [ 'straight', 'v:v' ],
91
+ isHorizontal: false
92
+ };
93
+
94
+ var oppositeOrientationMapping = {
95
+ 'top': 'bottom',
96
+ 'top-right': 'bottom-left',
97
+ 'top-left': 'bottom-right',
98
+ 'right': 'left',
99
+ 'bottom': 'top',
100
+ 'bottom-right': 'top-left',
101
+ 'bottom-left': 'top-right',
102
+ 'left': 'right'
103
+ };
104
+
105
+ var orientationDirectionMapping = {
106
+ top: 't',
107
+ right: 'r',
108
+ bottom: 'b',
109
+ left: 'l'
110
+ };
111
+
112
+ export default function BpmnLayouter(elementRegistry) {
113
+ this._elementRegistry = elementRegistry;
114
+ }
115
+
116
+ inherits(BpmnLayouter, BaseLayouter);
117
+
118
+ /**
119
+ * Returns waypoints of laid out connection.
120
+ *
121
+ * @param {Connection} connection
122
+ * @param {BpmnLayoutConnectionHints} [hints]
123
+ *
124
+ * @return {Point[]}
125
+ */
126
+ BpmnLayouter.prototype.layoutConnection = function(connection, hints) {
127
+ if (!hints) {
128
+ hints = {};
129
+ }
130
+
131
+ var source = hints.source || connection.source,
132
+ target = hints.target || connection.target,
133
+ waypoints = hints.waypoints || connection.waypoints,
134
+ connectionStart = hints.connectionStart,
135
+ connectionEnd = hints.connectionEnd,
136
+ elementRegistry = this._elementRegistry;
137
+
138
+ var manhattanOptions,
139
+ updatedWaypoints;
140
+
141
+ if (!connectionStart) {
142
+ connectionStart = getConnectionDocking(waypoints && waypoints[ 0 ], source);
143
+ }
144
+
145
+ if (!connectionEnd) {
146
+ connectionEnd = getConnectionDocking(waypoints && waypoints[ waypoints.length - 1 ], target);
147
+ }
148
+
149
+ if (is(connection, 'bpmn:Association') ||
150
+ is(connection, 'bpmn:DataAssociation')) {
151
+
152
+ if (waypoints && !isCompensationAssociation(source, target)) {
153
+ return [].concat([ connectionStart ], waypoints.slice(1, -1), [ connectionEnd ]);
154
+ }
155
+ }
156
+
157
+ var layout = isDirectionHorizontal(source, elementRegistry) ? PREFERRED_LAYOUTS_HORIZONTAL : PREFERRED_LAYOUTS_VERTICAL;
158
+
159
+ if (is(connection, 'bpmn:MessageFlow')) {
160
+ manhattanOptions = getMessageFlowManhattanOptions(source, target, layout);
161
+ } else if (is(connection, 'bpmn:SequenceFlow') || isCompensationAssociation(source, target)) {
162
+
163
+ if (source === target) {
164
+ manhattanOptions = {
165
+ preferredLayouts: getLoopPreferredLayout(source, connection, layout)
166
+ };
167
+ } else if (is(source, 'bpmn:BoundaryEvent')) {
168
+ manhattanOptions = {
169
+ preferredLayouts: getBoundaryEventPreferredLayouts(source, target, connectionEnd, layout)
170
+ };
171
+ } else if (isExpandedSubProcess(source) || isExpandedSubProcess(target)) {
172
+ manhattanOptions = {
173
+ preferredLayouts: layout.subProcess,
174
+ preserveDocking: getSubProcessPreserveDocking(source)
175
+ };
176
+ } else if (is(source, 'bpmn:Gateway')) {
177
+ manhattanOptions = {
178
+ preferredLayouts: layout.fromGateway
179
+ };
180
+ } else if (is(target, 'bpmn:Gateway')) {
181
+ manhattanOptions = {
182
+ preferredLayouts: layout.toGateway
183
+ };
184
+ } else {
185
+ manhattanOptions = {
186
+ preferredLayouts: layout.default
187
+ };
188
+ }
189
+ }
190
+
191
+ if (manhattanOptions) {
192
+ manhattanOptions = assign(manhattanOptions, hints);
193
+
194
+ updatedWaypoints = withoutRedundantPoints(repairConnection(
195
+ source,
196
+ target,
197
+ connectionStart,
198
+ connectionEnd,
199
+ waypoints,
200
+ manhattanOptions
201
+ ));
202
+ }
203
+
204
+ return updatedWaypoints || [ connectionStart, connectionEnd ];
205
+ };
206
+
207
+
208
+ // helpers //////////
209
+
210
+ function getAttachOrientation(attachedElement) {
211
+ var hostElement = attachedElement.host;
212
+
213
+ return getOrientation(getMid(attachedElement), hostElement, ATTACH_ORIENTATION_PADDING);
214
+ }
215
+
216
+ function getMessageFlowManhattanOptions(source, target, layout) {
217
+ return {
218
+ preferredLayouts: layout.messageFlow,
219
+ preserveDocking: getMessageFlowPreserveDocking(source, target)
220
+ };
221
+ }
222
+
223
+ function getMessageFlowPreserveDocking(source, target) {
224
+
225
+ // (1) docking element connected to participant has precedence
226
+ if (is(target, 'bpmn:Participant')) {
227
+ return 'source';
228
+ }
229
+
230
+ if (is(source, 'bpmn:Participant')) {
231
+ return 'target';
232
+ }
233
+
234
+ // (2) docking element connected to expanded sub-process has precedence
235
+ if (isExpandedSubProcess(target)) {
236
+ return 'source';
237
+ }
238
+
239
+ if (isExpandedSubProcess(source)) {
240
+ return 'target';
241
+ }
242
+
243
+ // (3) docking event has precedence
244
+ if (is(target, 'bpmn:Event')) {
245
+ return 'target';
246
+ }
247
+
248
+ if (is(source, 'bpmn:Event')) {
249
+ return 'source';
250
+ }
251
+
252
+ return null;
253
+ }
254
+
255
+ function getSubProcessPreserveDocking(source) {
256
+ return isExpandedSubProcess(source) ? 'target' : 'source';
257
+ }
258
+
259
+ function getConnectionDocking(point, shape) {
260
+ return point ? (point.original || point) : getMid(shape);
261
+ }
262
+
263
+ function isCompensationAssociation(source, target) {
264
+ return is(target, 'bpmn:Activity') &&
265
+ is(source, 'bpmn:BoundaryEvent') &&
266
+ target.businessObject.isForCompensation;
267
+ }
268
+
269
+ function isExpandedSubProcess(element) {
270
+ return is(element, 'bpmn:SubProcess') && isExpanded(element);
271
+ }
272
+
273
+ function isSame(a, b) {
274
+ return a === b;
275
+ }
276
+
277
+ function isAnyOrientation(orientation, orientations) {
278
+ return orientations.indexOf(orientation) !== -1;
279
+ }
280
+
281
+ function getHorizontalOrientation(orientation) {
282
+ var matches = /right|left/.exec(orientation);
283
+
284
+ return matches && matches[0];
285
+ }
286
+
287
+ function getVerticalOrientation(orientation) {
288
+ var matches = /top|bottom/.exec(orientation);
289
+
290
+ return matches && matches[0];
291
+ }
292
+
293
+ function isOppositeOrientation(a, b) {
294
+ return oppositeOrientationMapping[a] === b;
295
+ }
296
+
297
+ function isOppositeHorizontalOrientation(a, b) {
298
+ var horizontalOrientation = getHorizontalOrientation(a);
299
+
300
+ var oppositeHorizontalOrientation = oppositeOrientationMapping[horizontalOrientation];
301
+
302
+ return b.indexOf(oppositeHorizontalOrientation) !== -1;
303
+ }
304
+
305
+ function isOppositeVerticalOrientation(a, b) {
306
+ var verticalOrientation = getVerticalOrientation(a);
307
+
308
+ var oppositeVerticalOrientation = oppositeOrientationMapping[verticalOrientation];
309
+
310
+ return b.indexOf(oppositeVerticalOrientation) !== -1;
311
+ }
312
+
313
+ function isHorizontalOrientation(orientation) {
314
+ return orientation === 'right' || orientation === 'left';
315
+ }
316
+
317
+ function getLoopPreferredLayout(source, connection, layout) {
318
+ var waypoints = connection.waypoints;
319
+
320
+ var orientation = waypoints && waypoints.length && getOrientation(waypoints[0], source);
321
+
322
+ if (orientation === 'top') {
323
+ return layout.loop.fromTop;
324
+ } else if (orientation === 'right') {
325
+ return layout.loop.fromRight;
326
+ } else if (orientation === 'left') {
327
+ return layout.loop.fromLeft;
328
+ }
329
+
330
+ return layout.loop.fromBottom;
331
+ }
332
+
333
+ function getBoundaryEventPreferredLayouts(source, target, end, layout) {
334
+ var sourceMid = getMid(source),
335
+ targetMid = getMid(target),
336
+ attachOrientation = getAttachOrientation(source),
337
+ sourceLayout,
338
+ targetLayout;
339
+
340
+ var isLoop = isSame(source.host, target);
341
+
342
+ var attachedToSide = isAnyOrientation(attachOrientation, [ 'top', 'right', 'bottom', 'left' ]);
343
+
344
+ var targetOrientation = getOrientation(targetMid, sourceMid, {
345
+ x: source.width / 2 + target.width / 2,
346
+ y: source.height / 2 + target.height / 2
347
+ });
348
+
349
+ if (isLoop) {
350
+ return getBoundaryEventLoopLayout(attachOrientation, attachedToSide, source, target, end, layout);
351
+ }
352
+
353
+ // source layout
354
+ sourceLayout = getBoundaryEventSourceLayout(attachOrientation, targetOrientation, attachedToSide, layout.isHorizontal);
355
+
356
+ // target layout
357
+ targetLayout = getBoundaryEventTargetLayout(attachOrientation, targetOrientation, attachedToSide, layout.isHorizontal);
358
+
359
+ return [ sourceLayout + ':' + targetLayout ];
360
+ }
361
+
362
+ function getBoundaryEventLoopLayout(attachOrientation, attachedToSide, source, target, end, layout) {
363
+ var orientation = attachedToSide ? attachOrientation : layout.isHorizontal ? getVerticalOrientation(attachOrientation) : getHorizontalOrientation(attachOrientation),
364
+ sourceLayout = orientationDirectionMapping[ orientation ],
365
+ targetLayout;
366
+
367
+ if (attachedToSide) {
368
+ if (isHorizontalOrientation(attachOrientation)) {
369
+ targetLayout = shouldConnectToSameSide('y', source, target, end) ? 'h' : layout.boundaryLoop.alternateHorizontalSide;
370
+ } else {
371
+ targetLayout = shouldConnectToSameSide('x', source, target, end) ? 'v' : layout.boundaryLoop.alternateVerticalSide;
372
+ }
373
+ } else {
374
+ targetLayout = layout.boundaryLoop.default;
375
+ }
376
+
377
+ return [ sourceLayout + ':' + targetLayout ];
378
+ }
379
+
380
+ function shouldConnectToSameSide(axis, source, target, end) {
381
+ var threshold = BOUNDARY_TO_HOST_THRESHOLD;
382
+
383
+ return !(
384
+ areCloseOnAxis(axis, end, target, threshold) ||
385
+ areCloseOnAxis(axis, end, {
386
+ x: target.x + target.width,
387
+ y: target.y + target.height
388
+ }, threshold) ||
389
+ areCloseOnAxis(axis, end, getMid(source), threshold)
390
+ );
391
+ }
392
+
393
+ function areCloseOnAxis(axis, a, b, threshold) {
394
+ return Math.abs(a[ axis ] - b[ axis ]) < threshold;
395
+ }
396
+
397
+ function getBoundaryEventSourceLayout(attachOrientation, targetOrientation, attachedToSide, isHorizontal) {
398
+
399
+ // attached to either top, right, bottom or left side
400
+ if (attachedToSide) {
401
+ return orientationDirectionMapping[ attachOrientation ];
402
+ }
403
+
404
+ // attached to either top-right, top-left, bottom-right or bottom-left corner
405
+
406
+ var verticalAttachOrientation = getVerticalOrientation(attachOrientation),
407
+ horizontalAttachOrientation = getHorizontalOrientation(attachOrientation),
408
+ verticalTargetOrientation = getVerticalOrientation(targetOrientation),
409
+ horizontalTargetOrientation = getHorizontalOrientation(targetOrientation);
410
+
411
+ if (isHorizontal) {
412
+
413
+ // same vertical or opposite horizontal orientation
414
+ if (
415
+ isSame(verticalAttachOrientation, verticalTargetOrientation) ||
416
+ isOppositeOrientation(horizontalAttachOrientation, horizontalTargetOrientation)
417
+ ) {
418
+ return orientationDirectionMapping[ verticalAttachOrientation ];
419
+ }
420
+ } else {
421
+
422
+ // same horizontal or opposite vertical orientation
423
+ if (
424
+ isSame(horizontalAttachOrientation, horizontalTargetOrientation) ||
425
+ isOppositeOrientation(verticalAttachOrientation, verticalTargetOrientation)
426
+ ) {
427
+ return orientationDirectionMapping[ horizontalAttachOrientation ];
428
+ }
429
+ }
430
+
431
+ // fallback
432
+ return orientationDirectionMapping[ isHorizontal ? horizontalAttachOrientation : verticalAttachOrientation ];
433
+ }
434
+
435
+ function getBoundaryEventTargetLayout(attachOrientation, targetOrientation, attachedToSide, isHorizontal) {
436
+
437
+ // attached to either top, right, bottom or left side
438
+ if (attachedToSide) {
439
+ if (isHorizontalOrientation(attachOrientation)) {
440
+
441
+ // orientation is right or left
442
+
443
+ // opposite horizontal orientation or same orientation
444
+ if (
445
+ isOppositeHorizontalOrientation(attachOrientation, targetOrientation) ||
446
+ isSame(attachOrientation, targetOrientation)
447
+ ) {
448
+ return 'h';
449
+ }
450
+
451
+ // fallback
452
+ return 'v';
453
+ } else {
454
+
455
+ // orientation is top or bottom
456
+
457
+ // opposite vertical orientation or same orientation
458
+ if (
459
+ isOppositeVerticalOrientation(attachOrientation, targetOrientation) ||
460
+ isSame(attachOrientation, targetOrientation)
461
+ ) {
462
+ return 'v';
463
+ }
464
+
465
+ // fallback
466
+ return 'h';
467
+ }
468
+ }
469
+
470
+ // attached to either top-right, top-left, bottom-right or bottom-left corner
471
+ // and orientation is same on the counter-axis
472
+
473
+ if (isHorizontal) {
474
+ if (isSame(getVerticalOrientation(attachOrientation), getVerticalOrientation(targetOrientation))) {
475
+ return 'h';
476
+ } else {
477
+ return 'v';
478
+ }
479
+ } else {
480
+ if (isSame(getHorizontalOrientation(attachOrientation), getHorizontalOrientation(targetOrientation))) {
481
+ return 'v';
482
+ } else {
483
+ return 'h';
484
+ }
485
+ }
486
+ }
487
+
488
+ BpmnLayouter.$inject = [ 'elementRegistry' ];