bpmn-js 18.8.0 → 18.9.0

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 (345) 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 +39465 -39235
  5. package/dist/bpmn-modeler.production.min.js +36 -36
  6. package/dist/bpmn-navigated-viewer.development.js +21216 -21199
  7. package/dist/bpmn-navigated-viewer.production.min.js +5 -5
  8. package/dist/bpmn-viewer.development.js +21170 -21153
  9. package/dist/bpmn-viewer.production.min.js +5 -5
  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 +208 -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 +2419 -2412
  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 +287 -287
  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/label-link/LabelLink.d.ts +27 -0
  120. package/lib/features/label-link/LabelLink.js +202 -0
  121. package/lib/features/label-link/index.d.ts +14 -0
  122. package/lib/features/label-link/index.js +15 -0
  123. package/lib/features/modeling/BpmnFactory.d.ts +73 -73
  124. package/lib/features/modeling/BpmnFactory.js +180 -180
  125. package/lib/features/modeling/BpmnLayouter.d.ts +30 -30
  126. package/lib/features/modeling/BpmnLayouter.js +488 -488
  127. package/lib/features/modeling/BpmnUpdater.d.ts +90 -90
  128. package/lib/features/modeling/BpmnUpdater.js +818 -818
  129. package/lib/features/modeling/ElementFactory.d.ts +117 -117
  130. package/lib/features/modeling/ElementFactory.js +412 -412
  131. package/lib/features/modeling/ElementFactory.test.ts +132 -132
  132. package/lib/features/modeling/Modeling.d.ts +150 -150
  133. package/lib/features/modeling/Modeling.js +309 -309
  134. package/lib/features/modeling/Modeling.test.ts +147 -147
  135. package/lib/features/modeling/behavior/AdaptiveLabelPositioningBehavior.d.ts +19 -19
  136. package/lib/features/modeling/behavior/AdaptiveLabelPositioningBehavior.js +288 -288
  137. package/lib/features/modeling/behavior/AppendBehavior.d.ts +6 -6
  138. package/lib/features/modeling/behavior/AppendBehavior.js +42 -42
  139. package/lib/features/modeling/behavior/AssociationBehavior.d.ts +11 -11
  140. package/lib/features/modeling/behavior/AttachEventBehavior.d.ts +15 -15
  141. package/lib/features/modeling/behavior/AttachEventBehavior.js +106 -106
  142. package/lib/features/modeling/behavior/BoundaryEventBehavior.d.ts +15 -15
  143. package/lib/features/modeling/behavior/BoundaryEventBehavior.js +74 -74
  144. package/lib/features/modeling/behavior/CompensateBoundaryEventBehavior.d.ts +17 -17
  145. package/lib/features/modeling/behavior/CompensateBoundaryEventBehavior.js +222 -222
  146. package/lib/features/modeling/behavior/CreateBehavior.d.ts +9 -9
  147. package/lib/features/modeling/behavior/CreateBehavior.js +33 -33
  148. package/lib/features/modeling/behavior/CreateDataObjectBehavior.d.ts +15 -15
  149. package/lib/features/modeling/behavior/CreateDataObjectBehavior.js +46 -46
  150. package/lib/features/modeling/behavior/CreateParticipantBehavior.d.ts +19 -19
  151. package/lib/features/modeling/behavior/CreateParticipantBehavior.js +237 -237
  152. package/lib/features/modeling/behavior/DataInputAssociationBehavior.d.ts +21 -21
  153. package/lib/features/modeling/behavior/DataInputAssociationBehavior.js +162 -162
  154. package/lib/features/modeling/behavior/DataStoreBehavior.d.ts +19 -19
  155. package/lib/features/modeling/behavior/DeleteLaneBehavior.d.ts +15 -15
  156. package/lib/features/modeling/behavior/DeleteLaneBehavior.js +162 -162
  157. package/lib/features/modeling/behavior/DetachEventBehavior.d.ts +15 -15
  158. package/lib/features/modeling/behavior/DetachEventBehavior.js +101 -101
  159. package/lib/features/modeling/behavior/DropOnFlowBehavior.d.ts +13 -13
  160. package/lib/features/modeling/behavior/DropOnFlowBehavior.js +221 -221
  161. package/lib/features/modeling/behavior/EventBasedGatewayBehavior.d.ts +11 -11
  162. package/lib/features/modeling/behavior/EventBasedGatewayBehavior.js +110 -110
  163. package/lib/features/modeling/behavior/FixHoverBehavior.d.ts +17 -17
  164. package/lib/features/modeling/behavior/GroupBehavior.d.ts +26 -26
  165. package/lib/features/modeling/behavior/ImportDockingFix.d.ts +13 -13
  166. package/lib/features/modeling/behavior/ImportDockingFix.js +83 -83
  167. package/lib/features/modeling/behavior/IsHorizontalFix.d.ts +10 -10
  168. package/lib/features/modeling/behavior/IsHorizontalFix.js +54 -54
  169. package/lib/features/modeling/behavior/LabelBehavior.d.ts +56 -56
  170. package/lib/features/modeling/behavior/LabelBehavior.js +364 -364
  171. package/lib/features/modeling/behavior/LayoutConnectionBehavior.d.ts +16 -16
  172. package/lib/features/modeling/behavior/LayoutConnectionBehavior.js +121 -121
  173. package/lib/features/modeling/behavior/MessageFlowBehavior.d.ts +15 -15
  174. package/lib/features/modeling/behavior/NonInterruptingBehavior.d.ts +4 -4
  175. package/lib/features/modeling/behavior/NonInterruptingBehavior.js +41 -41
  176. package/lib/features/modeling/behavior/RemoveElementBehavior.d.ts +13 -13
  177. package/lib/features/modeling/behavior/RemoveElementBehavior.js +91 -91
  178. package/lib/features/modeling/behavior/RemoveEmbeddedLabelBoundsBehavior.d.ts +16 -16
  179. package/lib/features/modeling/behavior/RemoveEmbeddedLabelBoundsBehavior.js +41 -41
  180. package/lib/features/modeling/behavior/RemoveParticipantBehavior.d.ts +15 -15
  181. package/lib/features/modeling/behavior/RemoveParticipantBehavior.js +59 -59
  182. package/lib/features/modeling/behavior/ReplaceConnectionBehavior.d.ts +15 -15
  183. package/lib/features/modeling/behavior/ReplaceConnectionBehavior.js +194 -194
  184. package/lib/features/modeling/behavior/ReplaceElementBehaviour.d.ts +23 -23
  185. package/lib/features/modeling/behavior/ReplaceElementBehaviour.js +144 -144
  186. package/lib/features/modeling/behavior/ResizeBehavior.d.ts +64 -64
  187. package/lib/features/modeling/behavior/ResizeBehavior.js +265 -265
  188. package/lib/features/modeling/behavior/ResizeLaneBehavior.d.ts +16 -16
  189. package/lib/features/modeling/behavior/ResizeLaneBehavior.js +70 -70
  190. package/lib/features/modeling/behavior/RootElementReferenceBehavior.d.ts +25 -25
  191. package/lib/features/modeling/behavior/SetCompensationActivityAfterPasteBehavior.d.ts +16 -16
  192. package/lib/features/modeling/behavior/SetCompensationActivityAfterPasteBehavior.js +66 -66
  193. package/lib/features/modeling/behavior/SpaceToolBehavior.d.ts +10 -10
  194. package/lib/features/modeling/behavior/SpaceToolBehavior.js +207 -207
  195. package/lib/features/modeling/behavior/SubProcessPlaneBehavior.d.ts +28 -28
  196. package/lib/features/modeling/behavior/SubProcessPlaneBehavior.js +588 -588
  197. package/lib/features/modeling/behavior/SubProcessStartEventBehavior.d.ts +15 -15
  198. package/lib/features/modeling/behavior/SubProcessStartEventBehavior.js +56 -56
  199. package/lib/features/modeling/behavior/TextAnnotationBehavior.d.ts +6 -6
  200. package/lib/features/modeling/behavior/TextAnnotationBehavior.js +42 -42
  201. package/lib/features/modeling/behavior/ToggleCollapseConnectionBehaviour.d.ts +14 -14
  202. package/lib/features/modeling/behavior/ToggleCollapseConnectionBehaviour.js +87 -87
  203. package/lib/features/modeling/behavior/ToggleElementCollapseBehaviour.d.ts +13 -13
  204. package/lib/features/modeling/behavior/ToggleElementCollapseBehaviour.js +156 -156
  205. package/lib/features/modeling/behavior/UnclaimIdBehavior.d.ts +19 -19
  206. package/lib/features/modeling/behavior/UnclaimIdBehavior.js +64 -64
  207. package/lib/features/modeling/behavior/UnsetDefaultFlowBehavior.d.ts +16 -16
  208. package/lib/features/modeling/behavior/UnsetDefaultFlowBehavior.js +59 -59
  209. package/lib/features/modeling/behavior/UpdateFlowNodeRefsBehavior.d.ts +15 -15
  210. package/lib/features/modeling/behavior/UpdateFlowNodeRefsBehavior.js +157 -157
  211. package/lib/features/modeling/behavior/index.d.ts +85 -85
  212. package/lib/features/modeling/behavior/index.js +131 -131
  213. package/lib/features/modeling/behavior/util/CategoryUtil.d.ts +49 -49
  214. package/lib/features/modeling/behavior/util/CategoryUtil.js +86 -86
  215. package/lib/features/modeling/behavior/util/ConnectionLayoutUtil.d.ts +19 -19
  216. package/lib/features/modeling/behavior/util/ConnectionLayoutUtil.js +22 -22
  217. package/lib/features/modeling/behavior/util/GeometricUtil.d.ts +1 -1
  218. package/lib/features/modeling/behavior/util/LabelLayoutUtil.d.ts +32 -32
  219. package/lib/features/modeling/behavior/util/LabelLayoutUtil.js +41 -41
  220. package/lib/features/modeling/behavior/util/LayoutUtil.d.ts +48 -48
  221. package/lib/features/modeling/behavior/util/LayoutUtil.js +259 -259
  222. package/lib/features/modeling/behavior/util/LineAttachmentUtil.d.ts +37 -37
  223. package/lib/features/modeling/behavior/util/LineAttachmentUtil.js +241 -241
  224. package/lib/features/modeling/behavior/util/LineIntersect.d.ts +13 -13
  225. package/lib/features/modeling/behavior/util/LineIntersect.js +39 -39
  226. package/lib/features/modeling/behavior/util/NonInterruptingUtil.d.ts +3 -3
  227. package/lib/features/modeling/behavior/util/NonInterruptingUtil.js +32 -32
  228. package/lib/features/modeling/behavior/util/ResizeUtil.d.ts +1 -1
  229. package/lib/features/modeling/cmd/AddLaneHandler.d.ts +22 -22
  230. package/lib/features/modeling/cmd/AddLaneHandler.js +187 -187
  231. package/lib/features/modeling/cmd/IdClaimHandler.d.ts +22 -22
  232. package/lib/features/modeling/cmd/IdClaimHandler.js +51 -51
  233. package/lib/features/modeling/cmd/ResizeLaneHandler.d.ts +39 -39
  234. package/lib/features/modeling/cmd/ResizeLaneHandler.js +146 -146
  235. package/lib/features/modeling/cmd/SetColorHandler.d.ts +18 -18
  236. package/lib/features/modeling/cmd/SplitLaneHandler.d.ts +20 -20
  237. package/lib/features/modeling/cmd/SplitLaneHandler.js +99 -99
  238. package/lib/features/modeling/cmd/UpdateCanvasRootHandler.d.ts +20 -20
  239. package/lib/features/modeling/cmd/UpdateCanvasRootHandler.js +99 -99
  240. package/lib/features/modeling/cmd/UpdateFlowNodeRefsHandler.d.ts +21 -21
  241. package/lib/features/modeling/cmd/UpdateFlowNodeRefsHandler.js +218 -218
  242. package/lib/features/modeling/cmd/UpdateModdlePropertiesHandler.d.ts +20 -20
  243. package/lib/features/modeling/cmd/UpdateModdlePropertiesHandler.js +107 -107
  244. package/lib/features/modeling/cmd/UpdatePropertiesHandler.d.ts +58 -58
  245. package/lib/features/modeling/cmd/UpdatePropertiesHandler.js +260 -260
  246. package/lib/features/modeling/cmd/UpdateSemanticParentHandler.d.ts +18 -18
  247. package/lib/features/modeling/index.d.ts +39 -39
  248. package/lib/features/modeling/index.js +45 -45
  249. package/lib/features/modeling/util/LaneUtil.d.ts +46 -46
  250. package/lib/features/modeling/util/LaneUtil.js +188 -188
  251. package/lib/features/modeling/util/ModelingUtil.d.ts +23 -23
  252. package/lib/features/modeling/util/ModelingUtil.js +88 -88
  253. package/lib/features/modeling-feedback/ModelingFeedback.d.ts +13 -13
  254. package/lib/features/modeling-feedback/ModelingFeedback.js +51 -51
  255. package/lib/features/modeling-feedback/index.d.ts +9 -9
  256. package/lib/features/modeling-feedback/index.js +12 -12
  257. package/lib/features/ordering/BpmnOrderingProvider.d.ts +19 -19
  258. package/lib/features/ordering/BpmnOrderingProvider.js +191 -191
  259. package/lib/features/ordering/index.d.ts +6 -6
  260. package/lib/features/ordering/index.js +5 -5
  261. package/lib/features/outline/OutlineProvider.d.ts +39 -39
  262. package/lib/features/outline/OutlineProvider.js +203 -189
  263. package/lib/features/outline/OutlineUtil.d.ts +23 -23
  264. package/lib/features/outline/OutlineUtil.js +35 -35
  265. package/lib/features/outline/index.d.ts +10 -10
  266. package/lib/features/outline/index.js +10 -10
  267. package/lib/features/palette/PaletteProvider.d.ts +34 -34
  268. package/lib/features/palette/PaletteProvider.js +214 -214
  269. package/lib/features/palette/index.d.ts +22 -22
  270. package/lib/features/palette/index.js +23 -23
  271. package/lib/features/popup-menu/ReplaceMenuProvider.d.ts +52 -52
  272. package/lib/features/popup-menu/ReplaceMenuProvider.js +656 -656
  273. package/lib/features/popup-menu/index.d.ts +13 -13
  274. package/lib/features/popup-menu/index.js +16 -16
  275. package/lib/features/popup-menu/util/Icons.d.ts +5 -5
  276. package/lib/features/popup-menu/util/Icons.js +14 -14
  277. package/lib/features/popup-menu/util/TypeUtil.d.ts +14 -14
  278. package/lib/features/popup-menu/util/TypeUtil.js +52 -52
  279. package/lib/features/replace/BpmnReplace.d.ts +45 -45
  280. package/lib/features/replace/BpmnReplace.js +391 -391
  281. package/lib/features/replace/ReplaceOptions.d.ts +85 -85
  282. package/lib/features/replace/ReplaceOptions.js +1198 -1198
  283. package/lib/features/replace/index.d.ts +16 -16
  284. package/lib/features/replace/index.js +14 -14
  285. package/lib/features/replace-preview/BpmnReplacePreview.d.ts +17 -17
  286. package/lib/features/replace-preview/BpmnReplacePreview.js +139 -139
  287. package/lib/features/replace-preview/index.d.ts +9 -9
  288. package/lib/features/replace-preview/index.js +11 -11
  289. package/lib/features/rules/BpmnRules.d.ts +181 -181
  290. package/lib/features/rules/BpmnRules.js +1191 -1191
  291. package/lib/features/rules/index.d.ts +9 -9
  292. package/lib/features/rules/index.js +11 -11
  293. package/lib/features/search/BpmnSearchProvider.d.ts +34 -34
  294. package/lib/features/search/BpmnSearchProvider.js +91 -91
  295. package/lib/features/search/index.d.ts +11 -11
  296. package/lib/features/search/index.js +14 -14
  297. package/lib/features/snapping/BpmnConnectSnapping.d.ts +17 -17
  298. package/lib/features/snapping/BpmnCreateMoveSnapping.d.ts +41 -41
  299. package/lib/features/snapping/BpmnCreateMoveSnapping.js +289 -289
  300. package/lib/features/snapping/BpmnSnappingUtil.d.ts +11 -11
  301. package/lib/features/snapping/index.d.ts +13 -13
  302. package/lib/features/snapping/index.js +12 -12
  303. package/lib/features/space-tool/BpmnSpaceTool.d.ts +24 -24
  304. package/lib/features/space-tool/BpmnSpaceTool.js +96 -96
  305. package/lib/features/space-tool/index.d.ts +9 -9
  306. package/lib/features/space-tool/index.js +7 -7
  307. package/lib/import/BpmnImporter.d.ts +51 -51
  308. package/lib/import/BpmnImporter.js +363 -363
  309. package/lib/import/BpmnTreeWalker.d.ts +20 -20
  310. package/lib/import/BpmnTreeWalker.js +452 -452
  311. package/lib/import/Importer.d.ts +25 -25
  312. package/lib/import/Importer.js +222 -222
  313. package/lib/import/Util.d.ts +1 -1
  314. package/lib/import/Util.js +6 -6
  315. package/lib/import/index.d.ts +8 -8
  316. package/lib/import/index.js +9 -9
  317. package/lib/index.d.ts +1 -1
  318. package/lib/index.js +2 -2
  319. package/lib/model/Types.d.ts +25 -25
  320. package/lib/model/Types.ts +40 -40
  321. package/lib/util/CompatibilityUtil.d.ts +8 -8
  322. package/lib/util/CompatibilityUtil.js +29 -29
  323. package/lib/util/DiUtil.d.ts +60 -60
  324. package/lib/util/DiUtil.js +122 -122
  325. package/lib/util/DrilldownUtil.d.ts +39 -39
  326. package/lib/util/DrilldownUtil.js +69 -69
  327. package/lib/util/LabelUtil.d.ts +92 -83
  328. package/lib/util/LabelUtil.js +277 -266
  329. package/lib/util/ModelUtil.d.ts +40 -40
  330. package/lib/util/ModelUtil.js +58 -58
  331. package/lib/util/PoweredByUtil.d.ts +8 -8
  332. package/lib/util/PoweredByUtil.js +99 -99
  333. package/lib/util/Types.js +4 -4
  334. package/lib/util/Types.ts +3 -3
  335. package/package.json +131 -131
  336. package/test/helper/TranslationCollector.js +15 -15
  337. package/test/helper/index.js +313 -313
  338. package/test/matchers/BoundsMatchers.js +252 -252
  339. package/test/matchers/ConnectionMatchers.js +165 -165
  340. package/test/matchers/JSONMatcher.js +19 -19
  341. package/test/util/KeyEvents.js +22 -22
  342. package/test/util/MockEvents.js +61 -61
  343. package/test/util/custom-rules/CustomRules.js +16 -16
  344. package/test/util/custom-rules/index.js +6 -6
  345. package/test/util/svgHelpers.js +52 -0
@@ -1,520 +1,520 @@
1
- import {
2
- assign
3
- } from 'min-dash';
4
-
5
- import {
6
- getLabel
7
- } from '../../util/LabelUtil';
8
-
9
- import {
10
- is
11
- } from '../../util/ModelUtil';
12
-
13
- import { isAny } from '../modeling/util/ModelingUtil';
14
-
15
- import {
16
- isExpanded,
17
- isHorizontal
18
- } from '../../util/DiUtil';
19
-
20
- import {
21
- getExternalLabelMid,
22
- isLabelExternal,
23
- hasExternalLabel,
24
- isLabel
25
- } from '../../util/LabelUtil';
26
-
27
- /**
28
- * @typedef {import('diagram-js/lib/core/EventBus').default} EventBus
29
- * @typedef {import('../modeling/BpmnFactory').default} BpmnFactory
30
- * @typedef {import('diagram-js/lib/core/Canvas').default} Canvas
31
- * @typedef {import('diagram-js-direct-editing/lib/DirectEditing').default} DirectEditing
32
- * @typedef {import('../modeling/Modeling').default} Modeling
33
- * @typedef {import('diagram-js/lib/features/resize/ResizeHandles').default} ResizeHandles
34
- * @typedef {import('../../draw/TextRenderer').default} TextRenderer
35
- *
36
- * @typedef {import('../../model/Types').Element} Element
37
- *
38
- * @typedef { {
39
- * bounds: {
40
- * x: number;
41
- * y: number;
42
- * width: number;
43
- * height: number;
44
- * minWidth?: number;
45
- * minHeight?: number;
46
- * };
47
- * style: Object;
48
- * } } DirectEditingContext
49
- */
50
-
51
- var HIGH_PRIORITY = 2000;
52
-
53
- /**
54
- * @param {EventBus} eventBus
55
- * @param {BpmnFactory} bpmnFactory
56
- * @param {Canvas} canvas
57
- * @param {DirectEditing} directEditing
58
- * @param {Modeling} modeling
59
- * @param {ResizeHandles} resizeHandles
60
- * @param {TextRenderer} textRenderer
61
- */
62
- export default function LabelEditingProvider(
63
- eventBus, bpmnFactory, canvas, directEditing,
64
- modeling, resizeHandles, textRenderer) {
65
-
66
- this._bpmnFactory = bpmnFactory;
67
- this._canvas = canvas;
68
- this._modeling = modeling;
69
- this._textRenderer = textRenderer;
70
-
71
- directEditing.registerProvider(this);
72
-
73
- // listen to dblclick on non-root elements
74
- eventBus.on('element.dblclick', function(event) {
75
- activateDirectEdit(event.element, true);
76
- });
77
-
78
- // complete on followup canvas operation
79
- eventBus.on([
80
- 'autoPlace.start',
81
- 'canvas.viewbox.changing',
82
- 'drag.init',
83
- 'element.mousedown',
84
- 'popupMenu.open',
85
- 'root.set',
86
- 'selection.changed'
87
- ], function() {
88
- if (directEditing.isActive()) {
89
- directEditing.complete();
90
- }
91
- });
92
-
93
- eventBus.on([
94
- 'shape.remove',
95
- 'connection.remove'
96
- ], HIGH_PRIORITY, function(event) {
97
-
98
- if (directEditing.isActive(event.element)) {
99
- directEditing.cancel();
100
- }
101
- });
102
-
103
- // cancel on command stack changes
104
- eventBus.on([ 'commandStack.changed' ], function(e) {
105
- if (directEditing.isActive()) {
106
- directEditing.cancel();
107
- }
108
- });
109
-
110
-
111
- eventBus.on('directEditing.activate', function(event) {
112
- resizeHandles.removeResizers();
113
- });
114
-
115
- eventBus.on('create.end', 500, function(event) {
116
-
117
- var context = event.context,
118
- element = context.shape,
119
- canExecute = event.context.canExecute,
120
- isTouch = event.isTouch;
121
-
122
- // TODO(nikku): we need to find a way to support the
123
- // direct editing on mobile devices; right now this will
124
- // break for desworkflowediting on mobile devices
125
- // as it breaks the user interaction workflow
126
-
127
- // TODO(nikku): we should temporarily focus the edited element
128
- // here and release the focused viewport after the direct edit
129
- // operation is finished
130
- if (isTouch) {
131
- return;
132
- }
133
-
134
- if (!canExecute) {
135
- return;
136
- }
137
-
138
- if (context.hints && context.hints.createElementsBehavior === false) {
139
- return;
140
- }
141
-
142
- activateDirectEdit(element);
143
- });
144
-
145
- eventBus.on('autoPlace.end', 500, function(event) {
146
- activateDirectEdit(event.shape);
147
- });
148
-
149
-
150
- function activateDirectEdit(element, force) {
151
- if (force ||
152
- isAny(element, [ 'bpmn:Task', 'bpmn:TextAnnotation', 'bpmn:Participant' ]) ||
153
- isCollapsedSubProcess(element)) {
154
-
155
- directEditing.activate(element);
156
- }
157
- }
158
-
159
- }
160
-
161
- LabelEditingProvider.$inject = [
162
- 'eventBus',
163
- 'bpmnFactory',
164
- 'canvas',
165
- 'directEditing',
166
- 'modeling',
167
- 'resizeHandles',
168
- 'textRenderer'
169
- ];
170
-
171
-
172
- /**
173
- * Activate direct editing for activities and text annotations.
174
- *
175
- * @param {Element} element
176
- *
177
- * @return { {
178
- * text: string;
179
- * options?: {
180
- * autoResize?: boolean;
181
- * centerVertically?: boolean;
182
- * resizable?: boolean;
183
- * }
184
- * } & DirectEditingContext }
185
- */
186
- LabelEditingProvider.prototype.activate = function(element) {
187
-
188
- // text
189
- var text = getLabel(element);
190
-
191
- if (text === undefined) {
192
- return;
193
- }
194
-
195
- var context = {
196
- text: text
197
- };
198
-
199
- // bounds
200
- var bounds = this.getEditingBBox(element);
201
-
202
- assign(context, bounds);
203
-
204
- var options = {};
205
- var style = context.style || {};
206
-
207
- // Remove background and border
208
- assign(style, {
209
- backgroundColor: null,
210
- border: null
211
- });
212
-
213
- // tasks
214
- if (
215
- isAny(element, [
216
- 'bpmn:Task',
217
- 'bpmn:Participant',
218
- 'bpmn:Lane',
219
- 'bpmn:CallActivity'
220
- ]) ||
221
- isCollapsedSubProcess(element)
222
- ) {
223
- assign(options, {
224
- centerVertically: true
225
- });
226
- }
227
-
228
- // external labels
229
- if (isLabelExternal(element)) {
230
- assign(options, {
231
- autoResize: true
232
- });
233
-
234
- // keep background and border for external labels
235
- assign(style, {
236
- backgroundColor: '#ffffff',
237
- border: '1px solid #ccc'
238
- });
239
- }
240
-
241
- // text annotations
242
- if (is(element, 'bpmn:TextAnnotation')) {
243
- assign(options, {
244
- resizable: true,
245
- autoResize: true
246
- });
247
-
248
- // keep background and border for text annotations
249
- assign(style, {
250
- backgroundColor: '#ffffff',
251
- border: '1px solid #ccc'
252
- });
253
- }
254
-
255
- assign(context, {
256
- options: options,
257
- style: style
258
- });
259
-
260
- return context;
261
- };
262
-
263
-
264
- /**
265
- * Get the editing bounding box based on the element's size and position.
266
- *
267
- * @param {Element} element
268
- *
269
- * @return {DirectEditingContext}
270
- */
271
- LabelEditingProvider.prototype.getEditingBBox = function(element) {
272
- var canvas = this._canvas;
273
-
274
- var target = element.label || element;
275
-
276
- var bbox = canvas.getAbsoluteBBox(target);
277
-
278
- var mid = {
279
- x: bbox.x + bbox.width / 2,
280
- y: bbox.y + bbox.height / 2
281
- };
282
-
283
- // default position
284
- var bounds = { x: bbox.x, y: bbox.y };
285
-
286
- var zoom = canvas.zoom();
287
-
288
- var defaultStyle = this._textRenderer.getDefaultStyle(),
289
- externalStyle = this._textRenderer.getExternalStyle();
290
-
291
- // take zoom into account
292
- var externalFontSize = externalStyle.fontSize * zoom,
293
- externalLineHeight = externalStyle.lineHeight,
294
- defaultFontSize = defaultStyle.fontSize * zoom,
295
- defaultLineHeight = defaultStyle.lineHeight;
296
-
297
- var style = {
298
- fontFamily: this._textRenderer.getDefaultStyle().fontFamily,
299
- fontWeight: this._textRenderer.getDefaultStyle().fontWeight
300
- };
301
-
302
- // adjust for expanded pools AND lanes
303
- if (is(element, 'bpmn:Lane') || isExpandedPool(element)) {
304
- var isHorizontalLane = isHorizontal(element);
305
-
306
- var laneBounds = isHorizontalLane ? {
307
- width: bbox.height,
308
- height: 30 * zoom,
309
- x: bbox.x - bbox.height / 2 + (15 * zoom),
310
- y: mid.y - (30 * zoom) / 2
311
- } : {
312
- width: bbox.width,
313
- height: 30 * zoom
314
- };
315
-
316
- assign(bounds, laneBounds);
317
-
318
- assign(style, {
319
- fontSize: defaultFontSize + 'px',
320
- lineHeight: defaultLineHeight,
321
- paddingTop: (7 * zoom) + 'px',
322
- paddingBottom: (7 * zoom) + 'px',
323
- paddingLeft: (5 * zoom) + 'px',
324
- paddingRight: (5 * zoom) + 'px',
325
- transform: isHorizontalLane ? 'rotate(-90deg)' : null
326
- });
327
- }
328
-
329
-
330
- // internal labels for collapsed participants
331
- if (isCollapsedPool(element)) {
332
- var isHorizontalPool = isHorizontal(element);
333
-
334
- var poolBounds = isHorizontalPool ? {
335
- width: bbox.width,
336
- height: bbox.height
337
- } : {
338
- width: bbox.height,
339
- height: bbox.width,
340
- x: mid.x - bbox.height / 2,
341
- y: mid.y - bbox.width / 2
342
- };
343
-
344
- assign(bounds, poolBounds);
345
-
346
- assign(style, {
347
- fontSize: defaultFontSize + 'px',
348
- lineHeight: defaultLineHeight,
349
- paddingTop: (7 * zoom) + 'px',
350
- paddingBottom: (7 * zoom) + 'px',
351
- paddingLeft: (5 * zoom) + 'px',
352
- paddingRight: (5 * zoom) + 'px',
353
- transform: isHorizontalPool ? null : 'rotate(-90deg)'
354
- });
355
- }
356
-
357
-
358
- // internal labels for tasks and collapsed call activities
359
- // and sub processes
360
- if (isAny(element, [ 'bpmn:Task', 'bpmn:CallActivity' ]) ||
361
- isCollapsedSubProcess(element)) {
362
-
363
- assign(bounds, {
364
- width: bbox.width,
365
- height: bbox.height
366
- });
367
-
368
- assign(style, {
369
- fontSize: defaultFontSize + 'px',
370
- lineHeight: defaultLineHeight,
371
- paddingTop: (7 * zoom) + 'px',
372
- paddingBottom: (7 * zoom) + 'px',
373
- paddingLeft: (5 * zoom) + 'px',
374
- paddingRight: (5 * zoom) + 'px'
375
- });
376
- }
377
-
378
-
379
- // internal labels for expanded sub processes
380
- if (isExpandedSubProcess(element)) {
381
- assign(bounds, {
382
- width: bbox.width,
383
- x: bbox.x
384
- });
385
-
386
- assign(style, {
387
- fontSize: defaultFontSize + 'px',
388
- lineHeight: defaultLineHeight,
389
- paddingTop: (7 * zoom) + 'px',
390
- paddingBottom: (7 * zoom) + 'px',
391
- paddingLeft: (5 * zoom) + 'px',
392
- paddingRight: (5 * zoom) + 'px'
393
- });
394
- }
395
-
396
- var width = 90 * zoom,
397
- paddingTop = 7 * zoom,
398
- paddingBottom = 4 * zoom;
399
-
400
- // external labels for events, data elements, gateways, groups and connections
401
- if (target.labelTarget) {
402
- assign(bounds, {
403
- width: width,
404
- height: bbox.height + paddingTop + paddingBottom,
405
- x: mid.x - width / 2,
406
- y: bbox.y - paddingTop
407
- });
408
-
409
- assign(style, {
410
- fontSize: externalFontSize + 'px',
411
- lineHeight: externalLineHeight,
412
- paddingTop: paddingTop + 'px',
413
- paddingBottom: paddingBottom + 'px'
414
- });
415
- }
416
-
417
- // external label not yet created
418
- if (isLabelExternal(target)
419
- && !hasExternalLabel(target)
420
- && !isLabel(target)) {
421
-
422
- var externalLabelMid = getExternalLabelMid(element);
423
-
424
- var absoluteBBox = canvas.getAbsoluteBBox({
425
- x: externalLabelMid.x,
426
- y: externalLabelMid.y,
427
- width: 0,
428
- height: 0
429
- });
430
-
431
- var height = externalFontSize + paddingTop + paddingBottom;
432
-
433
- assign(bounds, {
434
- width: width,
435
- height: height,
436
- x: absoluteBBox.x - width / 2,
437
- y: absoluteBBox.y - height / 2
438
- });
439
-
440
- assign(style, {
441
- fontSize: externalFontSize + 'px',
442
- lineHeight: externalLineHeight,
443
- paddingTop: paddingTop + 'px',
444
- paddingBottom: paddingBottom + 'px'
445
- });
446
- }
447
-
448
- // text annotations
449
- if (is(element, 'bpmn:TextAnnotation')) {
450
- assign(bounds, {
451
- width: bbox.width,
452
- height: bbox.height,
453
- minWidth: 30 * zoom,
454
- minHeight: 10 * zoom
455
- });
456
-
457
- assign(style, {
458
- textAlign: 'left',
459
- paddingTop: (5 * zoom) + 'px',
460
- paddingBottom: (7 * zoom) + 'px',
461
- paddingLeft: (7 * zoom) + 'px',
462
- paddingRight: (5 * zoom) + 'px',
463
- fontSize: defaultFontSize + 'px',
464
- lineHeight: defaultLineHeight
465
- });
466
- }
467
-
468
- return { bounds: bounds, style: style };
469
- };
470
-
471
-
472
- LabelEditingProvider.prototype.update = function(
473
- element, newLabel,
474
- activeContextText, bounds) {
475
-
476
- var newBounds,
477
- bbox;
478
-
479
- if (is(element, 'bpmn:TextAnnotation')) {
480
-
481
- bbox = this._canvas.getAbsoluteBBox(element);
482
-
483
- newBounds = {
484
- x: element.x,
485
- y: element.y,
486
- width: element.width / bbox.width * bounds.width,
487
- height: element.height / bbox.height * bounds.height
488
- };
489
- }
490
-
491
- if (isEmptyText(newLabel)) {
492
- newLabel = null;
493
- }
494
-
495
- this._modeling.updateLabel(element, newLabel, newBounds);
496
- };
497
-
498
-
499
-
500
- // helpers //////////
501
-
502
- function isCollapsedSubProcess(element) {
503
- return is(element, 'bpmn:SubProcess') && !isExpanded(element);
504
- }
505
-
506
- function isExpandedSubProcess(element) {
507
- return is(element, 'bpmn:SubProcess') && isExpanded(element);
508
- }
509
-
510
- function isCollapsedPool(element) {
511
- return is(element, 'bpmn:Participant') && !isExpanded(element);
512
- }
513
-
514
- function isExpandedPool(element) {
515
- return is(element, 'bpmn:Participant') && isExpanded(element);
516
- }
517
-
518
- function isEmptyText(label) {
519
- return !label || !label.trim();
1
+ import {
2
+ assign
3
+ } from 'min-dash';
4
+
5
+ import {
6
+ getLabel
7
+ } from '../../util/LabelUtil';
8
+
9
+ import {
10
+ is
11
+ } from '../../util/ModelUtil';
12
+
13
+ import { isAny } from '../modeling/util/ModelingUtil';
14
+
15
+ import {
16
+ isExpanded,
17
+ isHorizontal
18
+ } from '../../util/DiUtil';
19
+
20
+ import {
21
+ getExternalLabelMid,
22
+ isLabelExternal,
23
+ hasExternalLabel,
24
+ isLabel
25
+ } from '../../util/LabelUtil';
26
+
27
+ /**
28
+ * @typedef {import('diagram-js/lib/core/EventBus').default} EventBus
29
+ * @typedef {import('../modeling/BpmnFactory').default} BpmnFactory
30
+ * @typedef {import('diagram-js/lib/core/Canvas').default} Canvas
31
+ * @typedef {import('diagram-js-direct-editing/lib/DirectEditing').default} DirectEditing
32
+ * @typedef {import('../modeling/Modeling').default} Modeling
33
+ * @typedef {import('diagram-js/lib/features/resize/ResizeHandles').default} ResizeHandles
34
+ * @typedef {import('../../draw/TextRenderer').default} TextRenderer
35
+ *
36
+ * @typedef {import('../../model/Types').Element} Element
37
+ *
38
+ * @typedef { {
39
+ * bounds: {
40
+ * x: number;
41
+ * y: number;
42
+ * width: number;
43
+ * height: number;
44
+ * minWidth?: number;
45
+ * minHeight?: number;
46
+ * };
47
+ * style: Object;
48
+ * } } DirectEditingContext
49
+ */
50
+
51
+ var HIGH_PRIORITY = 2000;
52
+
53
+ /**
54
+ * @param {EventBus} eventBus
55
+ * @param {BpmnFactory} bpmnFactory
56
+ * @param {Canvas} canvas
57
+ * @param {DirectEditing} directEditing
58
+ * @param {Modeling} modeling
59
+ * @param {ResizeHandles} resizeHandles
60
+ * @param {TextRenderer} textRenderer
61
+ */
62
+ export default function LabelEditingProvider(
63
+ eventBus, bpmnFactory, canvas, directEditing,
64
+ modeling, resizeHandles, textRenderer) {
65
+
66
+ this._bpmnFactory = bpmnFactory;
67
+ this._canvas = canvas;
68
+ this._modeling = modeling;
69
+ this._textRenderer = textRenderer;
70
+
71
+ directEditing.registerProvider(this);
72
+
73
+ // listen to dblclick on non-root elements
74
+ eventBus.on('element.dblclick', function(event) {
75
+ activateDirectEdit(event.element, true);
76
+ });
77
+
78
+ // complete on followup canvas operation
79
+ eventBus.on([
80
+ 'autoPlace.start',
81
+ 'canvas.viewbox.changing',
82
+ 'drag.init',
83
+ 'element.mousedown',
84
+ 'popupMenu.open',
85
+ 'root.set',
86
+ 'selection.changed'
87
+ ], function() {
88
+ if (directEditing.isActive()) {
89
+ directEditing.complete();
90
+ }
91
+ });
92
+
93
+ eventBus.on([
94
+ 'shape.remove',
95
+ 'connection.remove'
96
+ ], HIGH_PRIORITY, function(event) {
97
+
98
+ if (directEditing.isActive(event.element)) {
99
+ directEditing.cancel();
100
+ }
101
+ });
102
+
103
+ // cancel on command stack changes
104
+ eventBus.on([ 'commandStack.changed' ], function(e) {
105
+ if (directEditing.isActive()) {
106
+ directEditing.cancel();
107
+ }
108
+ });
109
+
110
+
111
+ eventBus.on('directEditing.activate', function(event) {
112
+ resizeHandles.removeResizers();
113
+ });
114
+
115
+ eventBus.on('create.end', 500, function(event) {
116
+
117
+ var context = event.context,
118
+ element = context.shape,
119
+ canExecute = event.context.canExecute,
120
+ isTouch = event.isTouch;
121
+
122
+ // TODO(nikku): we need to find a way to support the
123
+ // direct editing on mobile devices; right now this will
124
+ // break for desworkflowediting on mobile devices
125
+ // as it breaks the user interaction workflow
126
+
127
+ // TODO(nikku): we should temporarily focus the edited element
128
+ // here and release the focused viewport after the direct edit
129
+ // operation is finished
130
+ if (isTouch) {
131
+ return;
132
+ }
133
+
134
+ if (!canExecute) {
135
+ return;
136
+ }
137
+
138
+ if (context.hints && context.hints.createElementsBehavior === false) {
139
+ return;
140
+ }
141
+
142
+ activateDirectEdit(element);
143
+ });
144
+
145
+ eventBus.on('autoPlace.end', 500, function(event) {
146
+ activateDirectEdit(event.shape);
147
+ });
148
+
149
+
150
+ function activateDirectEdit(element, force) {
151
+ if (force ||
152
+ isAny(element, [ 'bpmn:Task', 'bpmn:TextAnnotation', 'bpmn:Participant' ]) ||
153
+ isCollapsedSubProcess(element)) {
154
+
155
+ directEditing.activate(element);
156
+ }
157
+ }
158
+
159
+ }
160
+
161
+ LabelEditingProvider.$inject = [
162
+ 'eventBus',
163
+ 'bpmnFactory',
164
+ 'canvas',
165
+ 'directEditing',
166
+ 'modeling',
167
+ 'resizeHandles',
168
+ 'textRenderer'
169
+ ];
170
+
171
+
172
+ /**
173
+ * Activate direct editing for activities and text annotations.
174
+ *
175
+ * @param {Element} element
176
+ *
177
+ * @return { {
178
+ * text: string;
179
+ * options?: {
180
+ * autoResize?: boolean;
181
+ * centerVertically?: boolean;
182
+ * resizable?: boolean;
183
+ * }
184
+ * } & DirectEditingContext }
185
+ */
186
+ LabelEditingProvider.prototype.activate = function(element) {
187
+
188
+ // text
189
+ var text = getLabel(element);
190
+
191
+ if (text === undefined) {
192
+ return;
193
+ }
194
+
195
+ var context = {
196
+ text: text
197
+ };
198
+
199
+ // bounds
200
+ var bounds = this.getEditingBBox(element);
201
+
202
+ assign(context, bounds);
203
+
204
+ var options = {};
205
+ var style = context.style || {};
206
+
207
+ // Remove background and border
208
+ assign(style, {
209
+ backgroundColor: null,
210
+ border: null
211
+ });
212
+
213
+ // tasks
214
+ if (
215
+ isAny(element, [
216
+ 'bpmn:Task',
217
+ 'bpmn:Participant',
218
+ 'bpmn:Lane',
219
+ 'bpmn:CallActivity'
220
+ ]) ||
221
+ isCollapsedSubProcess(element)
222
+ ) {
223
+ assign(options, {
224
+ centerVertically: true
225
+ });
226
+ }
227
+
228
+ // external labels
229
+ if (isLabelExternal(element)) {
230
+ assign(options, {
231
+ autoResize: true
232
+ });
233
+
234
+ // keep background and border for external labels
235
+ assign(style, {
236
+ backgroundColor: '#ffffff',
237
+ border: '1px solid #ccc'
238
+ });
239
+ }
240
+
241
+ // text annotations
242
+ if (is(element, 'bpmn:TextAnnotation')) {
243
+ assign(options, {
244
+ resizable: true,
245
+ autoResize: true
246
+ });
247
+
248
+ // keep background and border for text annotations
249
+ assign(style, {
250
+ backgroundColor: '#ffffff',
251
+ border: '1px solid #ccc'
252
+ });
253
+ }
254
+
255
+ assign(context, {
256
+ options: options,
257
+ style: style
258
+ });
259
+
260
+ return context;
261
+ };
262
+
263
+
264
+ /**
265
+ * Get the editing bounding box based on the element's size and position.
266
+ *
267
+ * @param {Element} element
268
+ *
269
+ * @return {DirectEditingContext}
270
+ */
271
+ LabelEditingProvider.prototype.getEditingBBox = function(element) {
272
+ var canvas = this._canvas;
273
+
274
+ var target = element.label || element;
275
+
276
+ var bbox = canvas.getAbsoluteBBox(target);
277
+
278
+ var mid = {
279
+ x: bbox.x + bbox.width / 2,
280
+ y: bbox.y + bbox.height / 2
281
+ };
282
+
283
+ // default position
284
+ var bounds = { x: bbox.x, y: bbox.y };
285
+
286
+ var zoom = canvas.zoom();
287
+
288
+ var defaultStyle = this._textRenderer.getDefaultStyle(),
289
+ externalStyle = this._textRenderer.getExternalStyle();
290
+
291
+ // take zoom into account
292
+ var externalFontSize = externalStyle.fontSize * zoom,
293
+ externalLineHeight = externalStyle.lineHeight,
294
+ defaultFontSize = defaultStyle.fontSize * zoom,
295
+ defaultLineHeight = defaultStyle.lineHeight;
296
+
297
+ var style = {
298
+ fontFamily: this._textRenderer.getDefaultStyle().fontFamily,
299
+ fontWeight: this._textRenderer.getDefaultStyle().fontWeight
300
+ };
301
+
302
+ // adjust for expanded pools AND lanes
303
+ if (is(element, 'bpmn:Lane') || isExpandedPool(element)) {
304
+ var isHorizontalLane = isHorizontal(element);
305
+
306
+ var laneBounds = isHorizontalLane ? {
307
+ width: bbox.height,
308
+ height: 30 * zoom,
309
+ x: bbox.x - bbox.height / 2 + (15 * zoom),
310
+ y: mid.y - (30 * zoom) / 2
311
+ } : {
312
+ width: bbox.width,
313
+ height: 30 * zoom
314
+ };
315
+
316
+ assign(bounds, laneBounds);
317
+
318
+ assign(style, {
319
+ fontSize: defaultFontSize + 'px',
320
+ lineHeight: defaultLineHeight,
321
+ paddingTop: (7 * zoom) + 'px',
322
+ paddingBottom: (7 * zoom) + 'px',
323
+ paddingLeft: (5 * zoom) + 'px',
324
+ paddingRight: (5 * zoom) + 'px',
325
+ transform: isHorizontalLane ? 'rotate(-90deg)' : null
326
+ });
327
+ }
328
+
329
+
330
+ // internal labels for collapsed participants
331
+ if (isCollapsedPool(element)) {
332
+ var isHorizontalPool = isHorizontal(element);
333
+
334
+ var poolBounds = isHorizontalPool ? {
335
+ width: bbox.width,
336
+ height: bbox.height
337
+ } : {
338
+ width: bbox.height,
339
+ height: bbox.width,
340
+ x: mid.x - bbox.height / 2,
341
+ y: mid.y - bbox.width / 2
342
+ };
343
+
344
+ assign(bounds, poolBounds);
345
+
346
+ assign(style, {
347
+ fontSize: defaultFontSize + 'px',
348
+ lineHeight: defaultLineHeight,
349
+ paddingTop: (7 * zoom) + 'px',
350
+ paddingBottom: (7 * zoom) + 'px',
351
+ paddingLeft: (5 * zoom) + 'px',
352
+ paddingRight: (5 * zoom) + 'px',
353
+ transform: isHorizontalPool ? null : 'rotate(-90deg)'
354
+ });
355
+ }
356
+
357
+
358
+ // internal labels for tasks and collapsed call activities
359
+ // and sub processes
360
+ if (isAny(element, [ 'bpmn:Task', 'bpmn:CallActivity' ]) ||
361
+ isCollapsedSubProcess(element)) {
362
+
363
+ assign(bounds, {
364
+ width: bbox.width,
365
+ height: bbox.height
366
+ });
367
+
368
+ assign(style, {
369
+ fontSize: defaultFontSize + 'px',
370
+ lineHeight: defaultLineHeight,
371
+ paddingTop: (7 * zoom) + 'px',
372
+ paddingBottom: (7 * zoom) + 'px',
373
+ paddingLeft: (5 * zoom) + 'px',
374
+ paddingRight: (5 * zoom) + 'px'
375
+ });
376
+ }
377
+
378
+
379
+ // internal labels for expanded sub processes
380
+ if (isExpandedSubProcess(element)) {
381
+ assign(bounds, {
382
+ width: bbox.width,
383
+ x: bbox.x
384
+ });
385
+
386
+ assign(style, {
387
+ fontSize: defaultFontSize + 'px',
388
+ lineHeight: defaultLineHeight,
389
+ paddingTop: (7 * zoom) + 'px',
390
+ paddingBottom: (7 * zoom) + 'px',
391
+ paddingLeft: (5 * zoom) + 'px',
392
+ paddingRight: (5 * zoom) + 'px'
393
+ });
394
+ }
395
+
396
+ var width = 90 * zoom,
397
+ paddingTop = 7 * zoom,
398
+ paddingBottom = 4 * zoom;
399
+
400
+ // external labels for events, data elements, gateways, groups and connections
401
+ if (target.labelTarget) {
402
+ assign(bounds, {
403
+ width: width,
404
+ height: bbox.height + paddingTop + paddingBottom,
405
+ x: mid.x - width / 2,
406
+ y: bbox.y - paddingTop
407
+ });
408
+
409
+ assign(style, {
410
+ fontSize: externalFontSize + 'px',
411
+ lineHeight: externalLineHeight,
412
+ paddingTop: paddingTop + 'px',
413
+ paddingBottom: paddingBottom + 'px'
414
+ });
415
+ }
416
+
417
+ // external label not yet created
418
+ if (isLabelExternal(target)
419
+ && !hasExternalLabel(target)
420
+ && !isLabel(target)) {
421
+
422
+ var externalLabelMid = getExternalLabelMid(element);
423
+
424
+ var absoluteBBox = canvas.getAbsoluteBBox({
425
+ x: externalLabelMid.x,
426
+ y: externalLabelMid.y,
427
+ width: 0,
428
+ height: 0
429
+ });
430
+
431
+ var height = externalFontSize + paddingTop + paddingBottom;
432
+
433
+ assign(bounds, {
434
+ width: width,
435
+ height: height,
436
+ x: absoluteBBox.x - width / 2,
437
+ y: absoluteBBox.y - height / 2
438
+ });
439
+
440
+ assign(style, {
441
+ fontSize: externalFontSize + 'px',
442
+ lineHeight: externalLineHeight,
443
+ paddingTop: paddingTop + 'px',
444
+ paddingBottom: paddingBottom + 'px'
445
+ });
446
+ }
447
+
448
+ // text annotations
449
+ if (is(element, 'bpmn:TextAnnotation')) {
450
+ assign(bounds, {
451
+ width: bbox.width,
452
+ height: bbox.height,
453
+ minWidth: 30 * zoom,
454
+ minHeight: 10 * zoom
455
+ });
456
+
457
+ assign(style, {
458
+ textAlign: 'left',
459
+ paddingTop: (5 * zoom) + 'px',
460
+ paddingBottom: (7 * zoom) + 'px',
461
+ paddingLeft: (7 * zoom) + 'px',
462
+ paddingRight: (5 * zoom) + 'px',
463
+ fontSize: defaultFontSize + 'px',
464
+ lineHeight: defaultLineHeight
465
+ });
466
+ }
467
+
468
+ return { bounds: bounds, style: style };
469
+ };
470
+
471
+
472
+ LabelEditingProvider.prototype.update = function(
473
+ element, newLabel,
474
+ activeContextText, bounds) {
475
+
476
+ var newBounds,
477
+ bbox;
478
+
479
+ if (is(element, 'bpmn:TextAnnotation')) {
480
+
481
+ bbox = this._canvas.getAbsoluteBBox(element);
482
+
483
+ newBounds = {
484
+ x: element.x,
485
+ y: element.y,
486
+ width: element.width / bbox.width * bounds.width,
487
+ height: element.height / bbox.height * bounds.height
488
+ };
489
+ }
490
+
491
+ if (isEmptyText(newLabel)) {
492
+ newLabel = null;
493
+ }
494
+
495
+ this._modeling.updateLabel(element, newLabel, newBounds);
496
+ };
497
+
498
+
499
+
500
+ // helpers //////////
501
+
502
+ function isCollapsedSubProcess(element) {
503
+ return is(element, 'bpmn:SubProcess') && !isExpanded(element);
504
+ }
505
+
506
+ function isExpandedSubProcess(element) {
507
+ return is(element, 'bpmn:SubProcess') && isExpanded(element);
508
+ }
509
+
510
+ function isCollapsedPool(element) {
511
+ return is(element, 'bpmn:Participant') && !isExpanded(element);
512
+ }
513
+
514
+ function isExpandedPool(element) {
515
+ return is(element, 'bpmn:Participant') && isExpanded(element);
516
+ }
517
+
518
+ function isEmptyText(label) {
519
+ return !label || !label.trim();
520
520
  }