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,582 +1,582 @@
1
- import {
2
- assign,
3
- forEach,
4
- isArray,
5
- every
6
- } from 'min-dash';
7
-
8
- import {
9
- is
10
- } from '../../util/ModelUtil';
11
-
12
- import {
13
- isExpanded,
14
- isHorizontal,
15
- isEventSubProcess
16
- } from '../../util/DiUtil';
17
-
18
- import {
19
- isAny
20
- } from '../modeling/util/ModelingUtil';
21
-
22
- import {
23
- getChildLanes
24
- } from '../modeling/util/LaneUtil';
25
-
26
- import {
27
- hasPrimaryModifier
28
- } from 'diagram-js/lib/util/Mouse';
29
-
30
- /**
31
- * @typedef {import('didi').Injector} Injector
32
- * @typedef {import('diagram-js/lib/core/EventBus').default} EventBus
33
- * @typedef {import('diagram-js/lib/features/context-pad/ContextPad').default} ContextPad
34
- * @typedef {import('../modeling/Modeling').default} Modeling
35
- * @typedef {import('../modeling/ElementFactory').default} ElementFactory
36
- * @typedef {import('../append-preview/AppendPreview').default} AppendPreview
37
- * @typedef {import('diagram-js/lib/features/connect/Connect').default} Connect
38
- * @typedef {import('diagram-js/lib/features/create/Create').default} Create
39
- * @typedef {import('diagram-js/lib/features/popup-menu/PopupMenu').default} PopupMenu
40
- * @typedef {import('diagram-js/lib/features/canvas/Canvas').default} Canvas
41
- * @typedef {import('diagram-js/lib/features/rules/Rules').default} Rules
42
- * @typedef {import('diagram-js/lib/i18n/translate/translate').default} Translate
43
- *
44
- * @typedef {import('../../model/Types').Element} Element
45
- * @typedef {import('../../model/Types').ModdleElement} ModdleElement
46
- *
47
- * @typedef {import('diagram-js/lib/features/context-pad/ContextPadProvider').default<Element>} BaseContextPadProvider
48
- * @typedef {import('diagram-js/lib/features/context-pad/ContextPadProvider').ContextPadEntries} ContextPadEntries
49
- * @typedef {import('diagram-js/lib/features/context-pad/ContextPadProvider').ContextPadEntry} ContextPadEntry
50
- *
51
- * @typedef { { autoPlace?: boolean; } } ContextPadConfig
52
- */
53
-
54
- /**
55
- * BPMN-specific context pad provider.
56
- *
57
- * @implements {BaseContextPadProvider}
58
- *
59
- * @param {ContextPadConfig} config
60
- * @param {Injector} injector
61
- * @param {EventBus} eventBus
62
- * @param {ContextPad} contextPad
63
- * @param {Modeling} modeling
64
- * @param {ElementFactory} elementFactory
65
- * @param {Connect} connect
66
- * @param {Create} create
67
- * @param {PopupMenu} popupMenu
68
- * @param {Canvas} canvas
69
- * @param {Rules} rules
70
- * @param {Translate} translate
71
- * @param {AppendPreview} appendPreview
72
- */
73
- export default function ContextPadProvider(
74
- config, injector, eventBus,
75
- contextPad, modeling, elementFactory,
76
- connect, create, popupMenu,
77
- canvas, rules, translate, appendPreview) {
78
-
79
- config = config || {};
80
-
81
- contextPad.registerProvider(this);
82
-
83
- this._contextPad = contextPad;
84
-
85
- this._modeling = modeling;
86
-
87
- this._elementFactory = elementFactory;
88
- this._connect = connect;
89
- this._create = create;
90
- this._popupMenu = popupMenu;
91
- this._canvas = canvas;
92
- this._rules = rules;
93
- this._translate = translate;
94
- this._eventBus = eventBus;
95
- this._appendPreview = appendPreview;
96
-
97
- if (config.autoPlace !== false) {
98
- this._autoPlace = injector.get('autoPlace', false);
99
- }
100
-
101
- eventBus.on('create.end', 250, function(event) {
102
- var context = event.context,
103
- shape = context.shape;
104
-
105
- if (!hasPrimaryModifier(event) || !contextPad.isOpen(shape)) {
106
- return;
107
- }
108
-
109
- var entries = contextPad.getEntries(shape);
110
-
111
- if (entries.replace) {
112
- entries.replace.action.click(event, shape);
113
- }
114
- });
115
-
116
- eventBus.on('contextPad.close', function() {
117
- appendPreview.cleanUp();
118
- });
119
- }
120
-
121
- ContextPadProvider.$inject = [
122
- 'config.contextPad',
123
- 'injector',
124
- 'eventBus',
125
- 'contextPad',
126
- 'modeling',
127
- 'elementFactory',
128
- 'connect',
129
- 'create',
130
- 'popupMenu',
131
- 'canvas',
132
- 'rules',
133
- 'translate',
134
- 'appendPreview'
135
- ];
136
-
137
- /**
138
- * @param {Element[]} elements
139
- *
140
- * @return {ContextPadEntries}
141
- */
142
- ContextPadProvider.prototype.getMultiElementContextPadEntries = function(elements) {
143
- var modeling = this._modeling;
144
-
145
- var actions = {};
146
-
147
- if (this._isDeleteAllowed(elements)) {
148
- assign(actions, {
149
- 'delete': {
150
- group: 'edit',
151
- className: 'bpmn-icon-trash',
152
- title: this._translate('Delete'),
153
- action: {
154
- click: function(event, elements) {
155
- modeling.removeElements(elements.slice());
156
- }
157
- }
158
- }
159
- });
160
- }
161
-
162
- return actions;
163
- };
164
-
165
- /**
166
- * @param {Element[]} elements
167
- *
168
- * @return {boolean}
169
- */
170
- ContextPadProvider.prototype._isDeleteAllowed = function(elements) {
171
-
172
- var baseAllowed = this._rules.allowed('elements.delete', {
173
- elements: elements
174
- });
175
-
176
- if (isArray(baseAllowed)) {
177
- return every(elements, el => baseAllowed.includes(el));
178
- }
179
-
180
- return baseAllowed;
181
- };
182
-
183
- /**
184
- * @param {Element} element
185
- *
186
- * @return {ContextPadEntries}
187
- */
188
- ContextPadProvider.prototype.getContextPadEntries = function(element) {
189
- var contextPad = this._contextPad,
190
- modeling = this._modeling,
191
- elementFactory = this._elementFactory,
192
- connect = this._connect,
193
- create = this._create,
194
- popupMenu = this._popupMenu,
195
- autoPlace = this._autoPlace,
196
- translate = this._translate,
197
- appendPreview = this._appendPreview;
198
-
199
- var actions = {};
200
-
201
- if (element.type === 'label') {
202
- if (this._isDeleteAllowed([ element ])) {
203
- assign(actions, deleteAction());
204
- }
205
-
206
- return actions;
207
- }
208
-
209
- var businessObject = element.businessObject;
210
-
211
- function startConnect(event, element) {
212
- connect.start(event, element);
213
- }
214
-
215
- function removeElement(e, element) {
216
- modeling.removeElements([ element ]);
217
- }
218
-
219
- function deleteAction() {
220
- return {
221
- 'delete': {
222
- group: 'edit',
223
- className: 'bpmn-icon-trash',
224
- title: translate('Delete'),
225
- action: {
226
- click: removeElement
227
- }
228
- }
229
- };
230
- }
231
-
232
- function getReplaceMenuPosition(element) {
233
-
234
- var Y_OFFSET = 5;
235
-
236
- var pad = contextPad.getPad(element).html;
237
-
238
- var padRect = pad.getBoundingClientRect();
239
-
240
- var pos = {
241
- x: padRect.left,
242
- y: padRect.bottom + Y_OFFSET
243
- };
244
-
245
- return pos;
246
- }
247
-
248
- /**
249
- * Create an append action.
250
- *
251
- * @param {string} type
252
- * @param {string} className
253
- * @param {string} title
254
- * @param {Object} [options]
255
- *
256
- * @return {ContextPadEntry}
257
- */
258
- function appendAction(type, className, title, options) {
259
-
260
- function appendStart(event, element) {
261
-
262
- var shape = elementFactory.createShape(assign({ type: type }, options));
263
-
264
- create.start(event, shape, {
265
- source: element
266
- });
267
- }
268
-
269
- var append = autoPlace ? function(_, element) {
270
- var shape = elementFactory.createShape(assign({ type: type }, options));
271
-
272
- autoPlace.append(element, shape);
273
- } : appendStart;
274
-
275
- var previewAppend = autoPlace ? function(_, element) {
276
-
277
- // mouseover
278
- appendPreview.create(element, type, options);
279
-
280
- return () => {
281
-
282
- // mouseout
283
- appendPreview.cleanUp();
284
- };
285
- } : null;
286
-
287
- return {
288
- group: 'model',
289
- className: className,
290
- title: title,
291
- action: {
292
- dragstart: appendStart,
293
- click: append,
294
- hover: previewAppend
295
- }
296
- };
297
- }
298
-
299
- function splitLaneHandler(count) {
300
-
301
- return function(_, element) {
302
-
303
- // actual split
304
- modeling.splitLane(element, count);
305
-
306
- // refresh context pad after split to
307
- // get rid of split icons
308
- contextPad.open(element, true);
309
- };
310
- }
311
-
312
-
313
- if (isAny(businessObject, [ 'bpmn:Lane', 'bpmn:Participant' ]) && isExpanded(element)) {
314
-
315
- var childLanes = getChildLanes(element);
316
-
317
- assign(actions, {
318
- 'lane-insert-above': {
319
- group: 'lane-insert-above',
320
- className: 'bpmn-icon-lane-insert-above',
321
- title: translate('Add lane above'),
322
- action: {
323
- click: function(event, element) {
324
- modeling.addLane(element, 'top');
325
- }
326
- }
327
- }
328
- });
329
-
330
- if (childLanes.length < 2) {
331
-
332
- if (isHorizontal(element) ? element.height >= 120 : element.width >= 120) {
333
- assign(actions, {
334
- 'lane-divide-two': {
335
- group: 'lane-divide',
336
- className: 'bpmn-icon-lane-divide-two',
337
- title: translate('Divide into two lanes'),
338
- action: {
339
- click: splitLaneHandler(2)
340
- }
341
- }
342
- });
343
- }
344
-
345
- if (isHorizontal(element) ? element.height >= 180 : element.width >= 180) {
346
- assign(actions, {
347
- 'lane-divide-three': {
348
- group: 'lane-divide',
349
- className: 'bpmn-icon-lane-divide-three',
350
- title: translate('Divide into three lanes'),
351
- action: {
352
- click: splitLaneHandler(3)
353
- }
354
- }
355
- });
356
- }
357
- }
358
-
359
- assign(actions, {
360
- 'lane-insert-below': {
361
- group: 'lane-insert-below',
362
- className: 'bpmn-icon-lane-insert-below',
363
- title: translate('Add lane below'),
364
- action: {
365
- click: function(event, element) {
366
- modeling.addLane(element, 'bottom');
367
- }
368
- }
369
- }
370
- });
371
-
372
- }
373
-
374
- if (is(businessObject, 'bpmn:FlowNode')) {
375
-
376
- if (is(businessObject, 'bpmn:EventBasedGateway')) {
377
-
378
- assign(actions, {
379
- 'append.receive-task': appendAction(
380
- 'bpmn:ReceiveTask',
381
- 'bpmn-icon-receive-task',
382
- translate('Append receive task')
383
- ),
384
- 'append.message-intermediate-event': appendAction(
385
- 'bpmn:IntermediateCatchEvent',
386
- 'bpmn-icon-intermediate-event-catch-message',
387
- translate('Append message intermediate catch event'),
388
- { eventDefinitionType: 'bpmn:MessageEventDefinition' }
389
- ),
390
- 'append.timer-intermediate-event': appendAction(
391
- 'bpmn:IntermediateCatchEvent',
392
- 'bpmn-icon-intermediate-event-catch-timer',
393
- translate('Append timer intermediate catch event'),
394
- { eventDefinitionType: 'bpmn:TimerEventDefinition' }
395
- ),
396
- 'append.condition-intermediate-event': appendAction(
397
- 'bpmn:IntermediateCatchEvent',
398
- 'bpmn-icon-intermediate-event-catch-condition',
399
- translate('Append conditional intermediate catch event'),
400
- { eventDefinitionType: 'bpmn:ConditionalEventDefinition' }
401
- ),
402
- 'append.signal-intermediate-event': appendAction(
403
- 'bpmn:IntermediateCatchEvent',
404
- 'bpmn-icon-intermediate-event-catch-signal',
405
- translate('Append signal intermediate catch event'),
406
- { eventDefinitionType: 'bpmn:SignalEventDefinition' }
407
- )
408
- });
409
- } else if (isEventType(businessObject, 'bpmn:BoundaryEvent', 'bpmn:CompensateEventDefinition')) {
410
-
411
- assign(actions, {
412
- 'append.compensation-activity':
413
- appendAction(
414
- 'bpmn:Task',
415
- 'bpmn-icon-task',
416
- translate('Append compensation activity'),
417
- {
418
- isForCompensation: true
419
- }
420
- )
421
- });
422
- } else if (!is(businessObject, 'bpmn:EndEvent') &&
423
- !businessObject.isForCompensation &&
424
- !isEventType(businessObject, 'bpmn:IntermediateThrowEvent', 'bpmn:LinkEventDefinition') &&
425
- !isEventSubProcess(businessObject)) {
426
-
427
- assign(actions, {
428
- 'append.end-event': appendAction(
429
- 'bpmn:EndEvent',
430
- 'bpmn-icon-end-event-none',
431
- translate('Append end event')
432
- ),
433
- 'append.gateway': appendAction(
434
- 'bpmn:ExclusiveGateway',
435
- 'bpmn-icon-gateway-none',
436
- translate('Append gateway')
437
- ),
438
- 'append.append-task': appendAction(
439
- 'bpmn:Task',
440
- 'bpmn-icon-task',
441
- translate('Append task')
442
- ),
443
- 'append.intermediate-event': appendAction(
444
- 'bpmn:IntermediateThrowEvent',
445
- 'bpmn-icon-intermediate-event-none',
446
- translate('Append intermediate/boundary event')
447
- )
448
- });
449
- }
450
- }
451
-
452
- if (!popupMenu.isEmpty(element, 'bpmn-replace')) {
453
-
454
- // Replace menu entry
455
- assign(actions, {
456
- 'replace': {
457
- group: 'edit',
458
- className: 'bpmn-icon-screw-wrench',
459
- title: translate('Change element'),
460
- action: {
461
- click: function(event, element) {
462
-
463
- var position = assign(getReplaceMenuPosition(element), {
464
- cursor: { x: event.x, y: event.y }
465
- });
466
-
467
- popupMenu.open(element, 'bpmn-replace', position, {
468
- title: translate('Change element'),
469
- width: 300,
470
- search: true
471
- });
472
- }
473
- }
474
- }
475
- });
476
- }
477
-
478
- if (is(businessObject, 'bpmn:SequenceFlow')) {
479
- assign(actions, {
480
- 'append.text-annotation': appendAction(
481
- 'bpmn:TextAnnotation',
482
- 'bpmn-icon-text-annotation',
483
- translate('Add text annotation')
484
- )
485
- });
486
- }
487
-
488
- if (
489
- isAny(businessObject, [
490
- 'bpmn:FlowNode',
491
- 'bpmn:InteractionNode',
492
- 'bpmn:DataObjectReference',
493
- 'bpmn:DataStoreReference',
494
- ])
495
- ) {
496
- assign(actions, {
497
- 'append.text-annotation': appendAction(
498
- 'bpmn:TextAnnotation',
499
- 'bpmn-icon-text-annotation',
500
- translate('Add text annotation')
501
- ),
502
- 'connect': {
503
- group: 'connect',
504
- className: 'bpmn-icon-connection-multi',
505
- title: translate('Connect to other element'),
506
- action: {
507
- click: startConnect,
508
- dragstart: startConnect,
509
- },
510
- },
511
- });
512
- }
513
-
514
- if (is(businessObject, 'bpmn:TextAnnotation')) {
515
- assign(actions, {
516
- 'connect': {
517
- group: 'connect',
518
- className: 'bpmn-icon-connection-multi',
519
- title: translate('Connect using association'),
520
- action: {
521
- click: startConnect,
522
- dragstart: startConnect,
523
- },
524
- },
525
- });
526
- }
527
-
528
- if (isAny(businessObject, [ 'bpmn:DataObjectReference', 'bpmn:DataStoreReference' ])) {
529
- assign(actions, {
530
- 'connect': {
531
- group: 'connect',
532
- className: 'bpmn-icon-connection-multi',
533
- title: translate('Connect using data input association'),
534
- action: {
535
- click: startConnect,
536
- dragstart: startConnect
537
- }
538
- }
539
- });
540
- }
541
-
542
- if (is(businessObject, 'bpmn:Group')) {
543
- assign(actions, {
544
- 'append.text-annotation': appendAction(
545
- 'bpmn:TextAnnotation',
546
- 'bpmn-icon-text-annotation',
547
- translate('Add text annotation')
548
- )
549
- });
550
- }
551
-
552
- if (this._isDeleteAllowed([ element ])) {
553
- assign(actions, deleteAction());
554
- }
555
-
556
- return actions;
557
- };
558
-
559
-
560
- // helpers /////////
561
-
562
- /**
563
- * @param {ModdleElement} businessObject
564
- * @param {string} type
565
- * @param {string} eventDefinitionType
566
- *
567
- * @return {boolean}
568
- */
569
- function isEventType(businessObject, type, eventDefinitionType) {
570
-
571
- var isType = businessObject.$instanceOf(type);
572
- var isDefinition = false;
573
-
574
- var definitions = businessObject.eventDefinitions || [];
575
- forEach(definitions, function(def) {
576
- if (def.$type === eventDefinitionType) {
577
- isDefinition = true;
578
- }
579
- });
580
-
581
- return isType && isDefinition;
582
- }
1
+ import {
2
+ assign,
3
+ forEach,
4
+ isArray,
5
+ every
6
+ } from 'min-dash';
7
+
8
+ import {
9
+ is
10
+ } from '../../util/ModelUtil';
11
+
12
+ import {
13
+ isExpanded,
14
+ isHorizontal,
15
+ isEventSubProcess
16
+ } from '../../util/DiUtil';
17
+
18
+ import {
19
+ isAny
20
+ } from '../modeling/util/ModelingUtil';
21
+
22
+ import {
23
+ getChildLanes
24
+ } from '../modeling/util/LaneUtil';
25
+
26
+ import {
27
+ hasPrimaryModifier
28
+ } from 'diagram-js/lib/util/Mouse';
29
+
30
+ /**
31
+ * @typedef {import('didi').Injector} Injector
32
+ * @typedef {import('diagram-js/lib/core/EventBus').default} EventBus
33
+ * @typedef {import('diagram-js/lib/features/context-pad/ContextPad').default} ContextPad
34
+ * @typedef {import('../modeling/Modeling').default} Modeling
35
+ * @typedef {import('../modeling/ElementFactory').default} ElementFactory
36
+ * @typedef {import('../append-preview/AppendPreview').default} AppendPreview
37
+ * @typedef {import('diagram-js/lib/features/connect/Connect').default} Connect
38
+ * @typedef {import('diagram-js/lib/features/create/Create').default} Create
39
+ * @typedef {import('diagram-js/lib/features/popup-menu/PopupMenu').default} PopupMenu
40
+ * @typedef {import('diagram-js/lib/features/canvas/Canvas').default} Canvas
41
+ * @typedef {import('diagram-js/lib/features/rules/Rules').default} Rules
42
+ * @typedef {import('diagram-js/lib/i18n/translate/translate').default} Translate
43
+ *
44
+ * @typedef {import('../../model/Types').Element} Element
45
+ * @typedef {import('../../model/Types').ModdleElement} ModdleElement
46
+ *
47
+ * @typedef {import('diagram-js/lib/features/context-pad/ContextPadProvider').default<Element>} BaseContextPadProvider
48
+ * @typedef {import('diagram-js/lib/features/context-pad/ContextPadProvider').ContextPadEntries} ContextPadEntries
49
+ * @typedef {import('diagram-js/lib/features/context-pad/ContextPadProvider').ContextPadEntry} ContextPadEntry
50
+ *
51
+ * @typedef { { autoPlace?: boolean; } } ContextPadConfig
52
+ */
53
+
54
+ /**
55
+ * BPMN-specific context pad provider.
56
+ *
57
+ * @implements {BaseContextPadProvider}
58
+ *
59
+ * @param {ContextPadConfig} config
60
+ * @param {Injector} injector
61
+ * @param {EventBus} eventBus
62
+ * @param {ContextPad} contextPad
63
+ * @param {Modeling} modeling
64
+ * @param {ElementFactory} elementFactory
65
+ * @param {Connect} connect
66
+ * @param {Create} create
67
+ * @param {PopupMenu} popupMenu
68
+ * @param {Canvas} canvas
69
+ * @param {Rules} rules
70
+ * @param {Translate} translate
71
+ * @param {AppendPreview} appendPreview
72
+ */
73
+ export default function ContextPadProvider(
74
+ config, injector, eventBus,
75
+ contextPad, modeling, elementFactory,
76
+ connect, create, popupMenu,
77
+ canvas, rules, translate, appendPreview) {
78
+
79
+ config = config || {};
80
+
81
+ contextPad.registerProvider(this);
82
+
83
+ this._contextPad = contextPad;
84
+
85
+ this._modeling = modeling;
86
+
87
+ this._elementFactory = elementFactory;
88
+ this._connect = connect;
89
+ this._create = create;
90
+ this._popupMenu = popupMenu;
91
+ this._canvas = canvas;
92
+ this._rules = rules;
93
+ this._translate = translate;
94
+ this._eventBus = eventBus;
95
+ this._appendPreview = appendPreview;
96
+
97
+ if (config.autoPlace !== false) {
98
+ this._autoPlace = injector.get('autoPlace', false);
99
+ }
100
+
101
+ eventBus.on('create.end', 250, function(event) {
102
+ var context = event.context,
103
+ shape = context.shape;
104
+
105
+ if (!hasPrimaryModifier(event) || !contextPad.isOpen(shape)) {
106
+ return;
107
+ }
108
+
109
+ var entries = contextPad.getEntries(shape);
110
+
111
+ if (entries.replace) {
112
+ entries.replace.action.click(event, shape);
113
+ }
114
+ });
115
+
116
+ eventBus.on('contextPad.close', function() {
117
+ appendPreview.cleanUp();
118
+ });
119
+ }
120
+
121
+ ContextPadProvider.$inject = [
122
+ 'config.contextPad',
123
+ 'injector',
124
+ 'eventBus',
125
+ 'contextPad',
126
+ 'modeling',
127
+ 'elementFactory',
128
+ 'connect',
129
+ 'create',
130
+ 'popupMenu',
131
+ 'canvas',
132
+ 'rules',
133
+ 'translate',
134
+ 'appendPreview'
135
+ ];
136
+
137
+ /**
138
+ * @param {Element[]} elements
139
+ *
140
+ * @return {ContextPadEntries}
141
+ */
142
+ ContextPadProvider.prototype.getMultiElementContextPadEntries = function(elements) {
143
+ var modeling = this._modeling;
144
+
145
+ var actions = {};
146
+
147
+ if (this._isDeleteAllowed(elements)) {
148
+ assign(actions, {
149
+ 'delete': {
150
+ group: 'edit',
151
+ className: 'bpmn-icon-trash',
152
+ title: this._translate('Delete'),
153
+ action: {
154
+ click: function(event, elements) {
155
+ modeling.removeElements(elements.slice());
156
+ }
157
+ }
158
+ }
159
+ });
160
+ }
161
+
162
+ return actions;
163
+ };
164
+
165
+ /**
166
+ * @param {Element[]} elements
167
+ *
168
+ * @return {boolean}
169
+ */
170
+ ContextPadProvider.prototype._isDeleteAllowed = function(elements) {
171
+
172
+ var baseAllowed = this._rules.allowed('elements.delete', {
173
+ elements: elements
174
+ });
175
+
176
+ if (isArray(baseAllowed)) {
177
+ return every(elements, el => baseAllowed.includes(el));
178
+ }
179
+
180
+ return baseAllowed;
181
+ };
182
+
183
+ /**
184
+ * @param {Element} element
185
+ *
186
+ * @return {ContextPadEntries}
187
+ */
188
+ ContextPadProvider.prototype.getContextPadEntries = function(element) {
189
+ var contextPad = this._contextPad,
190
+ modeling = this._modeling,
191
+ elementFactory = this._elementFactory,
192
+ connect = this._connect,
193
+ create = this._create,
194
+ popupMenu = this._popupMenu,
195
+ autoPlace = this._autoPlace,
196
+ translate = this._translate,
197
+ appendPreview = this._appendPreview;
198
+
199
+ var actions = {};
200
+
201
+ if (element.type === 'label') {
202
+ if (this._isDeleteAllowed([ element ])) {
203
+ assign(actions, deleteAction());
204
+ }
205
+
206
+ return actions;
207
+ }
208
+
209
+ var businessObject = element.businessObject;
210
+
211
+ function startConnect(event, element) {
212
+ connect.start(event, element);
213
+ }
214
+
215
+ function removeElement(e, element) {
216
+ modeling.removeElements([ element ]);
217
+ }
218
+
219
+ function deleteAction() {
220
+ return {
221
+ 'delete': {
222
+ group: 'edit',
223
+ className: 'bpmn-icon-trash',
224
+ title: translate('Delete'),
225
+ action: {
226
+ click: removeElement
227
+ }
228
+ }
229
+ };
230
+ }
231
+
232
+ function getReplaceMenuPosition(element) {
233
+
234
+ var Y_OFFSET = 5;
235
+
236
+ var pad = contextPad.getPad(element).html;
237
+
238
+ var padRect = pad.getBoundingClientRect();
239
+
240
+ var pos = {
241
+ x: padRect.left,
242
+ y: padRect.bottom + Y_OFFSET
243
+ };
244
+
245
+ return pos;
246
+ }
247
+
248
+ /**
249
+ * Create an append action.
250
+ *
251
+ * @param {string} type
252
+ * @param {string} className
253
+ * @param {string} title
254
+ * @param {Object} [options]
255
+ *
256
+ * @return {ContextPadEntry}
257
+ */
258
+ function appendAction(type, className, title, options) {
259
+
260
+ function appendStart(event, element) {
261
+
262
+ var shape = elementFactory.createShape(assign({ type: type }, options));
263
+
264
+ create.start(event, shape, {
265
+ source: element
266
+ });
267
+ }
268
+
269
+ var append = autoPlace ? function(_, element) {
270
+ var shape = elementFactory.createShape(assign({ type: type }, options));
271
+
272
+ autoPlace.append(element, shape);
273
+ } : appendStart;
274
+
275
+ var previewAppend = autoPlace ? function(_, element) {
276
+
277
+ // mouseover
278
+ appendPreview.create(element, type, options);
279
+
280
+ return () => {
281
+
282
+ // mouseout
283
+ appendPreview.cleanUp();
284
+ };
285
+ } : null;
286
+
287
+ return {
288
+ group: 'model',
289
+ className: className,
290
+ title: title,
291
+ action: {
292
+ dragstart: appendStart,
293
+ click: append,
294
+ hover: previewAppend
295
+ }
296
+ };
297
+ }
298
+
299
+ function splitLaneHandler(count) {
300
+
301
+ return function(_, element) {
302
+
303
+ // actual split
304
+ modeling.splitLane(element, count);
305
+
306
+ // refresh context pad after split to
307
+ // get rid of split icons
308
+ contextPad.open(element, true);
309
+ };
310
+ }
311
+
312
+
313
+ if (isAny(businessObject, [ 'bpmn:Lane', 'bpmn:Participant' ]) && isExpanded(element)) {
314
+
315
+ var childLanes = getChildLanes(element);
316
+
317
+ assign(actions, {
318
+ 'lane-insert-above': {
319
+ group: 'lane-insert-above',
320
+ className: 'bpmn-icon-lane-insert-above',
321
+ title: translate('Add lane above'),
322
+ action: {
323
+ click: function(event, element) {
324
+ modeling.addLane(element, 'top');
325
+ }
326
+ }
327
+ }
328
+ });
329
+
330
+ if (childLanes.length < 2) {
331
+
332
+ if (isHorizontal(element) ? element.height >= 120 : element.width >= 120) {
333
+ assign(actions, {
334
+ 'lane-divide-two': {
335
+ group: 'lane-divide',
336
+ className: 'bpmn-icon-lane-divide-two',
337
+ title: translate('Divide into two lanes'),
338
+ action: {
339
+ click: splitLaneHandler(2)
340
+ }
341
+ }
342
+ });
343
+ }
344
+
345
+ if (isHorizontal(element) ? element.height >= 180 : element.width >= 180) {
346
+ assign(actions, {
347
+ 'lane-divide-three': {
348
+ group: 'lane-divide',
349
+ className: 'bpmn-icon-lane-divide-three',
350
+ title: translate('Divide into three lanes'),
351
+ action: {
352
+ click: splitLaneHandler(3)
353
+ }
354
+ }
355
+ });
356
+ }
357
+ }
358
+
359
+ assign(actions, {
360
+ 'lane-insert-below': {
361
+ group: 'lane-insert-below',
362
+ className: 'bpmn-icon-lane-insert-below',
363
+ title: translate('Add lane below'),
364
+ action: {
365
+ click: function(event, element) {
366
+ modeling.addLane(element, 'bottom');
367
+ }
368
+ }
369
+ }
370
+ });
371
+
372
+ }
373
+
374
+ if (is(businessObject, 'bpmn:FlowNode')) {
375
+
376
+ if (is(businessObject, 'bpmn:EventBasedGateway')) {
377
+
378
+ assign(actions, {
379
+ 'append.receive-task': appendAction(
380
+ 'bpmn:ReceiveTask',
381
+ 'bpmn-icon-receive-task',
382
+ translate('Append receive task')
383
+ ),
384
+ 'append.message-intermediate-event': appendAction(
385
+ 'bpmn:IntermediateCatchEvent',
386
+ 'bpmn-icon-intermediate-event-catch-message',
387
+ translate('Append message intermediate catch event'),
388
+ { eventDefinitionType: 'bpmn:MessageEventDefinition' }
389
+ ),
390
+ 'append.timer-intermediate-event': appendAction(
391
+ 'bpmn:IntermediateCatchEvent',
392
+ 'bpmn-icon-intermediate-event-catch-timer',
393
+ translate('Append timer intermediate catch event'),
394
+ { eventDefinitionType: 'bpmn:TimerEventDefinition' }
395
+ ),
396
+ 'append.condition-intermediate-event': appendAction(
397
+ 'bpmn:IntermediateCatchEvent',
398
+ 'bpmn-icon-intermediate-event-catch-condition',
399
+ translate('Append conditional intermediate catch event'),
400
+ { eventDefinitionType: 'bpmn:ConditionalEventDefinition' }
401
+ ),
402
+ 'append.signal-intermediate-event': appendAction(
403
+ 'bpmn:IntermediateCatchEvent',
404
+ 'bpmn-icon-intermediate-event-catch-signal',
405
+ translate('Append signal intermediate catch event'),
406
+ { eventDefinitionType: 'bpmn:SignalEventDefinition' }
407
+ )
408
+ });
409
+ } else if (isEventType(businessObject, 'bpmn:BoundaryEvent', 'bpmn:CompensateEventDefinition')) {
410
+
411
+ assign(actions, {
412
+ 'append.compensation-activity':
413
+ appendAction(
414
+ 'bpmn:Task',
415
+ 'bpmn-icon-task',
416
+ translate('Append compensation activity'),
417
+ {
418
+ isForCompensation: true
419
+ }
420
+ )
421
+ });
422
+ } else if (!is(businessObject, 'bpmn:EndEvent') &&
423
+ !businessObject.isForCompensation &&
424
+ !isEventType(businessObject, 'bpmn:IntermediateThrowEvent', 'bpmn:LinkEventDefinition') &&
425
+ !isEventSubProcess(businessObject)) {
426
+
427
+ assign(actions, {
428
+ 'append.end-event': appendAction(
429
+ 'bpmn:EndEvent',
430
+ 'bpmn-icon-end-event-none',
431
+ translate('Append end event')
432
+ ),
433
+ 'append.gateway': appendAction(
434
+ 'bpmn:ExclusiveGateway',
435
+ 'bpmn-icon-gateway-none',
436
+ translate('Append gateway')
437
+ ),
438
+ 'append.append-task': appendAction(
439
+ 'bpmn:Task',
440
+ 'bpmn-icon-task',
441
+ translate('Append task')
442
+ ),
443
+ 'append.intermediate-event': appendAction(
444
+ 'bpmn:IntermediateThrowEvent',
445
+ 'bpmn-icon-intermediate-event-none',
446
+ translate('Append intermediate/boundary event')
447
+ )
448
+ });
449
+ }
450
+ }
451
+
452
+ if (!popupMenu.isEmpty(element, 'bpmn-replace')) {
453
+
454
+ // Replace menu entry
455
+ assign(actions, {
456
+ 'replace': {
457
+ group: 'edit',
458
+ className: 'bpmn-icon-screw-wrench',
459
+ title: translate('Change element'),
460
+ action: {
461
+ click: function(event, element) {
462
+
463
+ var position = assign(getReplaceMenuPosition(element), {
464
+ cursor: { x: event.x, y: event.y }
465
+ });
466
+
467
+ popupMenu.open(element, 'bpmn-replace', position, {
468
+ title: translate('Change element'),
469
+ width: 300,
470
+ search: true
471
+ });
472
+ }
473
+ }
474
+ }
475
+ });
476
+ }
477
+
478
+ if (is(businessObject, 'bpmn:SequenceFlow')) {
479
+ assign(actions, {
480
+ 'append.text-annotation': appendAction(
481
+ 'bpmn:TextAnnotation',
482
+ 'bpmn-icon-text-annotation',
483
+ translate('Add text annotation')
484
+ )
485
+ });
486
+ }
487
+
488
+ if (
489
+ isAny(businessObject, [
490
+ 'bpmn:FlowNode',
491
+ 'bpmn:InteractionNode',
492
+ 'bpmn:DataObjectReference',
493
+ 'bpmn:DataStoreReference',
494
+ ])
495
+ ) {
496
+ assign(actions, {
497
+ 'append.text-annotation': appendAction(
498
+ 'bpmn:TextAnnotation',
499
+ 'bpmn-icon-text-annotation',
500
+ translate('Add text annotation')
501
+ ),
502
+ 'connect': {
503
+ group: 'connect',
504
+ className: 'bpmn-icon-connection-multi',
505
+ title: translate('Connect to other element'),
506
+ action: {
507
+ click: startConnect,
508
+ dragstart: startConnect,
509
+ },
510
+ },
511
+ });
512
+ }
513
+
514
+ if (is(businessObject, 'bpmn:TextAnnotation')) {
515
+ assign(actions, {
516
+ 'connect': {
517
+ group: 'connect',
518
+ className: 'bpmn-icon-connection-multi',
519
+ title: translate('Connect using association'),
520
+ action: {
521
+ click: startConnect,
522
+ dragstart: startConnect,
523
+ },
524
+ },
525
+ });
526
+ }
527
+
528
+ if (isAny(businessObject, [ 'bpmn:DataObjectReference', 'bpmn:DataStoreReference' ])) {
529
+ assign(actions, {
530
+ 'connect': {
531
+ group: 'connect',
532
+ className: 'bpmn-icon-connection-multi',
533
+ title: translate('Connect using data input association'),
534
+ action: {
535
+ click: startConnect,
536
+ dragstart: startConnect
537
+ }
538
+ }
539
+ });
540
+ }
541
+
542
+ if (is(businessObject, 'bpmn:Group')) {
543
+ assign(actions, {
544
+ 'append.text-annotation': appendAction(
545
+ 'bpmn:TextAnnotation',
546
+ 'bpmn-icon-text-annotation',
547
+ translate('Add text annotation')
548
+ )
549
+ });
550
+ }
551
+
552
+ if (this._isDeleteAllowed([ element ])) {
553
+ assign(actions, deleteAction());
554
+ }
555
+
556
+ return actions;
557
+ };
558
+
559
+
560
+ // helpers /////////
561
+
562
+ /**
563
+ * @param {ModdleElement} businessObject
564
+ * @param {string} type
565
+ * @param {string} eventDefinitionType
566
+ *
567
+ * @return {boolean}
568
+ */
569
+ function isEventType(businessObject, type, eventDefinitionType) {
570
+
571
+ var isType = businessObject.$instanceOf(type);
572
+ var isDefinition = false;
573
+
574
+ var definitions = businessObject.eventDefinitions || [];
575
+ forEach(definitions, function(def) {
576
+ if (def.$type === eventDefinitionType) {
577
+ isDefinition = true;
578
+ }
579
+ });
580
+
581
+ return isType && isDefinition;
582
+ }