bpmn-js 17.6.1 → 17.6.2

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