bpmn-js 18.6.1 → 18.6.2

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