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