@bptlab/openbpt-modeler-typed-pn-variants 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (242) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +25 -0
  3. package/assets/icons/pn-fire-transition.svg +6 -0
  4. package/assets/icons/pn-inhibitor-arc.svg +30 -0
  5. package/assets/icons/pn-place.svg +62 -0
  6. package/assets/icons/pn-transition.svg +46 -0
  7. package/assets/icons/pn-unfire-transition.svg +6 -0
  8. package/assets/icons/reset.svg +1 -0
  9. package/assets/icons/toggle-off.svg +1 -0
  10. package/assets/icons/toggle-on.svg +1 -0
  11. package/assets/simulation.css +265 -0
  12. package/assets/tpn-js.css +101 -0
  13. package/dist/lib/BaseViewer.js +181 -0
  14. package/dist/lib/BaseViewer.js.map +1 -0
  15. package/dist/lib/CustomModeler.js +100 -0
  16. package/dist/lib/CustomModeler.js.map +1 -0
  17. package/dist/lib/NavigatedViewer.js +14 -0
  18. package/dist/lib/NavigatedViewer.js.map +1 -0
  19. package/dist/lib/Viewer.js +53 -0
  20. package/dist/lib/Viewer.js.map +1 -0
  21. package/dist/lib/auto-place/CustomAutoPlace.js +10 -0
  22. package/dist/lib/auto-place/CustomAutoPlace.js.map +1 -0
  23. package/dist/lib/auto-place/CustomAutoPlaceUtil.js +51 -0
  24. package/dist/lib/auto-place/CustomAutoPlaceUtil.js.map +1 -0
  25. package/dist/lib/auto-place/index.js +9 -0
  26. package/dist/lib/auto-place/index.js.map +1 -0
  27. package/dist/lib/common/copy-paste/CommonCopyPaste.js +58 -0
  28. package/dist/lib/common/copy-paste/CommonCopyPaste.js.map +1 -0
  29. package/dist/lib/common/copy-paste/ModdleCopy.js +168 -0
  30. package/dist/lib/common/copy-paste/ModdleCopy.js.map +1 -0
  31. package/dist/lib/common/copy-paste/index.js +10 -0
  32. package/dist/lib/common/copy-paste/index.js.map +1 -0
  33. package/dist/lib/common/editor-actions/EditorActions.js +110 -0
  34. package/dist/lib/common/editor-actions/EditorActions.js.map +1 -0
  35. package/dist/lib/common/editor-actions/index.js +7 -0
  36. package/dist/lib/common/editor-actions/index.js.map +1 -0
  37. package/dist/lib/common/keyboard/KeyboardBindings.js +101 -0
  38. package/dist/lib/common/keyboard/KeyboardBindings.js.map +1 -0
  39. package/dist/lib/common/keyboard/index.js +8 -0
  40. package/dist/lib/common/keyboard/index.js.map +1 -0
  41. package/dist/lib/common/search/CommonSearchProvider.js +72 -0
  42. package/dist/lib/common/search/CommonSearchProvider.js.map +1 -0
  43. package/dist/lib/common/search/index.js +9 -0
  44. package/dist/lib/common/search/index.js.map +1 -0
  45. package/dist/lib/core/index.js +6 -0
  46. package/dist/lib/core/index.js.map +1 -0
  47. package/dist/lib/declarations-panel/Util.js +32 -0
  48. package/dist/lib/declarations-panel/Util.js.map +1 -0
  49. package/dist/lib/declarations-panel/cmd/IdentifierCommitHandler.js +34 -0
  50. package/dist/lib/declarations-panel/cmd/IdentifierCommitHandler.js.map +1 -0
  51. package/dist/lib/declarations-panel/cmd/MultiCommandHandler.js +24 -0
  52. package/dist/lib/declarations-panel/cmd/MultiCommandHandler.js.map +1 -0
  53. package/dist/lib/declarations-panel/cmd/index.js +19 -0
  54. package/dist/lib/declarations-panel/cmd/index.js.map +1 -0
  55. package/dist/lib/declarations-panel/context/DeclarationsPanelContext.js +10 -0
  56. package/dist/lib/declarations-panel/context/DeclarationsPanelContext.js.map +1 -0
  57. package/dist/lib/declarations-panel/context/index.js +2 -0
  58. package/dist/lib/declarations-panel/context/index.js.map +1 -0
  59. package/dist/lib/declarations-panel/hooks/index.js +2 -0
  60. package/dist/lib/declarations-panel/hooks/index.js.map +1 -0
  61. package/dist/lib/declarations-panel/hooks/useService.js +7 -0
  62. package/dist/lib/declarations-panel/hooks/useService.js.map +1 -0
  63. package/dist/lib/declarations-panel/provider/DeclarationsProvider.js +107 -0
  64. package/dist/lib/declarations-panel/provider/DeclarationsProvider.js.map +1 -0
  65. package/dist/lib/declarations-panel/provider/IdentifierService.js +107 -0
  66. package/dist/lib/declarations-panel/provider/IdentifierService.js.map +1 -0
  67. package/dist/lib/declarations-panel/provider/SimulationModeService.js +14 -0
  68. package/dist/lib/declarations-panel/provider/SimulationModeService.js.map +1 -0
  69. package/dist/lib/declarations-panel/provider/index.js +14 -0
  70. package/dist/lib/declarations-panel/provider/index.js.map +1 -0
  71. package/dist/lib/declarations-panel/provider/properties/ArcProps.js +123 -0
  72. package/dist/lib/declarations-panel/provider/properties/ArcProps.js.map +1 -0
  73. package/dist/lib/declarations-panel/provider/properties/IdProps.js +47 -0
  74. package/dist/lib/declarations-panel/provider/properties/IdProps.js.map +1 -0
  75. package/dist/lib/declarations-panel/provider/properties/ModelDeclarations.js +193 -0
  76. package/dist/lib/declarations-panel/provider/properties/ModelDeclarations.js.map +1 -0
  77. package/dist/lib/declarations-panel/provider/properties/NameProps.js +43 -0
  78. package/dist/lib/declarations-panel/provider/properties/NameProps.js.map +1 -0
  79. package/dist/lib/declarations-panel/provider/properties/PlaceProps.js +135 -0
  80. package/dist/lib/declarations-panel/provider/properties/PlaceProps.js.map +1 -0
  81. package/dist/lib/declarations-panel/provider/properties/ReferenceSelect.js +21 -0
  82. package/dist/lib/declarations-panel/provider/properties/ReferenceSelect.js.map +1 -0
  83. package/dist/lib/declarations-panel/provider/properties/TokenProps.js +116 -0
  84. package/dist/lib/declarations-panel/provider/properties/TokenProps.js.map +1 -0
  85. package/dist/lib/declarations-panel/provider/properties/Util.js +112 -0
  86. package/dist/lib/declarations-panel/provider/properties/Util.js.map +1 -0
  87. package/dist/lib/declarations-panel/provider/properties/VariableArcProps.js +107 -0
  88. package/dist/lib/declarations-panel/provider/properties/VariableArcProps.js.map +1 -0
  89. package/dist/lib/declarations-panel/provider/properties/index.js +8 -0
  90. package/dist/lib/declarations-panel/provider/properties/index.js.map +1 -0
  91. package/dist/lib/declarations-panel/render/DeclarationsPanel.js +197 -0
  92. package/dist/lib/declarations-panel/render/DeclarationsPanel.js.map +1 -0
  93. package/dist/lib/declarations-panel/render/DeclarationsPanelRenderer.js +154 -0
  94. package/dist/lib/declarations-panel/render/DeclarationsPanelRenderer.js.map +1 -0
  95. package/dist/lib/declarations-panel/render/PanelHeaderProvider.js +55 -0
  96. package/dist/lib/declarations-panel/render/PanelHeaderProvider.js.map +1 -0
  97. package/dist/lib/declarations-panel/render/PanelPlaceholderProvider.js +17 -0
  98. package/dist/lib/declarations-panel/render/PanelPlaceholderProvider.js.map +1 -0
  99. package/dist/lib/declarations-panel/render/index.js +9 -0
  100. package/dist/lib/declarations-panel/render/index.js.map +1 -0
  101. package/dist/lib/draw/CustomRenderer.js +361 -0
  102. package/dist/lib/draw/CustomRenderer.js.map +1 -0
  103. package/dist/lib/draw/TextRenderer.js +52 -0
  104. package/dist/lib/draw/TextRenderer.js.map +1 -0
  105. package/dist/lib/draw/index.js +8 -0
  106. package/dist/lib/draw/index.js.map +1 -0
  107. package/dist/lib/import/CustomImporter.js +177 -0
  108. package/dist/lib/import/CustomImporter.js.map +1 -0
  109. package/dist/lib/import/CustomTreeWalker.js +178 -0
  110. package/dist/lib/import/CustomTreeWalker.js.map +1 -0
  111. package/dist/lib/import/Importer.js +47 -0
  112. package/dist/lib/import/Importer.js.map +1 -0
  113. package/dist/lib/import/index.js +7 -0
  114. package/dist/lib/import/index.js.map +1 -0
  115. package/dist/lib/moddle/CustomModdle.js +86 -0
  116. package/dist/lib/moddle/CustomModdle.js.map +1 -0
  117. package/dist/lib/moddle/index.js +15 -0
  118. package/dist/lib/moddle/index.js.map +1 -0
  119. package/dist/lib/moddle/resources/dc.json +99 -0
  120. package/dist/lib/moddle/resources/diagramSchema.js +210 -0
  121. package/dist/lib/moddle/resources/diagramSchema.js.map +1 -0
  122. package/dist/lib/moddle/resources/modelSchema.js +254 -0
  123. package/dist/lib/moddle/resources/modelSchema.js.map +1 -0
  124. package/dist/lib/modeling/CustomElementFactory.js +66 -0
  125. package/dist/lib/modeling/CustomElementFactory.js.map +1 -0
  126. package/dist/lib/modeling/CustomLabelEditing.js +177 -0
  127. package/dist/lib/modeling/CustomLabelEditing.js.map +1 -0
  128. package/dist/lib/modeling/CustomModeling.js +40 -0
  129. package/dist/lib/modeling/CustomModeling.js.map +1 -0
  130. package/dist/lib/modeling/CustomUpdater.js +291 -0
  131. package/dist/lib/modeling/CustomUpdater.js.map +1 -0
  132. package/dist/lib/modeling/CustomVerification.js +111 -0
  133. package/dist/lib/modeling/CustomVerification.js.map +1 -0
  134. package/dist/lib/modeling/ElementFactory.js +56 -0
  135. package/dist/lib/modeling/ElementFactory.js.map +1 -0
  136. package/dist/lib/modeling/LabelUtil.js +151 -0
  137. package/dist/lib/modeling/LabelUtil.js.map +1 -0
  138. package/dist/lib/modeling/UpdateLabelHandler.js +86 -0
  139. package/dist/lib/modeling/UpdateLabelHandler.js.map +1 -0
  140. package/dist/lib/modeling/UpdateModdlePropertiesHandler.js +88 -0
  141. package/dist/lib/modeling/UpdateModdlePropertiesHandler.js.map +1 -0
  142. package/dist/lib/modeling/UpdatePropertiesHandler.js +136 -0
  143. package/dist/lib/modeling/UpdatePropertiesHandler.js.map +1 -0
  144. package/dist/lib/modeling/behavior/AdaptiveLabelPositioningBehavior.js +169 -0
  145. package/dist/lib/modeling/behavior/AdaptiveLabelPositioningBehavior.js.map +1 -0
  146. package/dist/lib/modeling/behavior/LabelBehavior.js +255 -0
  147. package/dist/lib/modeling/behavior/LabelBehavior.js.map +1 -0
  148. package/dist/lib/modeling/behavior/index.js +8 -0
  149. package/dist/lib/modeling/behavior/index.js.map +1 -0
  150. package/dist/lib/modeling/behavior/util/GeometricUtil.js +99 -0
  151. package/dist/lib/modeling/behavior/util/GeometricUtil.js.map +1 -0
  152. package/dist/lib/modeling/behavior/util/LabelLayoutUtil.js +178 -0
  153. package/dist/lib/modeling/behavior/util/LabelLayoutUtil.js.map +1 -0
  154. package/dist/lib/modeling/behavior/util/LineAttachmentUtil.js +175 -0
  155. package/dist/lib/modeling/behavior/util/LineAttachmentUtil.js.map +1 -0
  156. package/dist/lib/modeling/index.js +36 -0
  157. package/dist/lib/modeling/index.js.map +1 -0
  158. package/dist/lib/palette/CustomContextPadProvider.js +182 -0
  159. package/dist/lib/palette/CustomContextPadProvider.js.map +1 -0
  160. package/dist/lib/palette/CustomPaletteProvider.js +93 -0
  161. package/dist/lib/palette/CustomPaletteProvider.js.map +1 -0
  162. package/dist/lib/palette/TokenModals.js +105 -0
  163. package/dist/lib/palette/TokenModals.js.map +1 -0
  164. package/dist/lib/palette/index.js +28 -0
  165. package/dist/lib/palette/index.js.map +1 -0
  166. package/dist/lib/replace/ReplaceMenuProvider.js +84 -0
  167. package/dist/lib/replace/ReplaceMenuProvider.js.map +1 -0
  168. package/dist/lib/replace/index.js +9 -0
  169. package/dist/lib/replace/index.js.map +1 -0
  170. package/dist/lib/rules/CustomRuleProvider.js +107 -0
  171. package/dist/lib/rules/CustomRuleProvider.js.map +1 -0
  172. package/dist/lib/rules/index.js +8 -0
  173. package/dist/lib/rules/index.js.map +1 -0
  174. package/dist/lib/simulation/EventHelper.js +6 -0
  175. package/dist/lib/simulation/EventHelper.js.map +1 -0
  176. package/dist/lib/simulation/Utils.js +8 -0
  177. package/dist/lib/simulation/Utils.js.map +1 -0
  178. package/dist/lib/simulation/binding-utils/arcPlaceInfoLogic.js +157 -0
  179. package/dist/lib/simulation/binding-utils/arcPlaceInfoLogic.js.map +1 -0
  180. package/dist/lib/simulation/binding-utils/bindingUtils.js +64 -0
  181. package/dist/lib/simulation/binding-utils/bindingUtils.js.map +1 -0
  182. package/dist/lib/simulation/binding-utils/earlyReturnLogic.js +107 -0
  183. package/dist/lib/simulation/binding-utils/earlyReturnLogic.js.map +1 -0
  184. package/dist/lib/simulation/binding-utils/exactSynchro.js +102 -0
  185. package/dist/lib/simulation/binding-utils/exactSynchro.js.map +1 -0
  186. package/dist/lib/simulation/binding-utils/helpers.js +141 -0
  187. package/dist/lib/simulation/binding-utils/helpers.js.map +1 -0
  188. package/dist/lib/simulation/binding-utils/inhibitorLogic.js +166 -0
  189. package/dist/lib/simulation/binding-utils/inhibitorLogic.js.map +1 -0
  190. package/dist/lib/simulation/binding-utils/linkingLogic.js +384 -0
  191. package/dist/lib/simulation/binding-utils/linkingLogic.js.map +1 -0
  192. package/dist/lib/simulation/context-pads/ContextPads.js +141 -0
  193. package/dist/lib/simulation/context-pads/ContextPads.js.map +1 -0
  194. package/dist/lib/simulation/context-pads/FireTransitionHandler.js +481 -0
  195. package/dist/lib/simulation/context-pads/FireTransitionHandler.js.map +1 -0
  196. package/dist/lib/simulation/context-pads/FireTransitionUtils.js +169 -0
  197. package/dist/lib/simulation/context-pads/FireTransitionUtils.js.map +1 -0
  198. package/dist/lib/simulation/context-pads/FormJsAdapter.js +99 -0
  199. package/dist/lib/simulation/context-pads/FormJsAdapter.js.map +1 -0
  200. package/dist/lib/simulation/context-pads/index.js +8 -0
  201. package/dist/lib/simulation/context-pads/index.js.map +1 -0
  202. package/dist/lib/simulation/palette/Palette.js +36 -0
  203. package/dist/lib/simulation/palette/Palette.js.map +1 -0
  204. package/dist/lib/simulation/palette/index.js +6 -0
  205. package/dist/lib/simulation/palette/index.js.map +1 -0
  206. package/dist/lib/simulation/reset-simulation/ResetSimulation.js +36 -0
  207. package/dist/lib/simulation/reset-simulation/ResetSimulation.js.map +1 -0
  208. package/dist/lib/simulation/reset-simulation/index.js +6 -0
  209. package/dist/lib/simulation/reset-simulation/index.js.map +1 -0
  210. package/dist/lib/simulation/simulation-history/SimulationHistory.js +158 -0
  211. package/dist/lib/simulation/simulation-history/SimulationHistory.js.map +1 -0
  212. package/dist/lib/simulation/simulation-history/index.js +6 -0
  213. package/dist/lib/simulation/simulation-history/index.js.map +1 -0
  214. package/dist/lib/simulation/simulator/Simulator.js +131 -0
  215. package/dist/lib/simulation/simulator/Simulator.js.map +1 -0
  216. package/dist/lib/simulation/simulator/index.js +6 -0
  217. package/dist/lib/simulation/simulator/index.js.map +1 -0
  218. package/dist/lib/simulation/toggle-simulation-mode/DisableModeling.js +85 -0
  219. package/dist/lib/simulation/toggle-simulation-mode/DisableModeling.js.map +1 -0
  220. package/dist/lib/simulation/toggle-simulation-mode/ToggleSimulationMode.js +65 -0
  221. package/dist/lib/simulation/toggle-simulation-mode/ToggleSimulationMode.js.map +1 -0
  222. package/dist/lib/simulation/toggle-simulation-mode/index.js +8 -0
  223. package/dist/lib/simulation/toggle-simulation-mode/index.js.map +1 -0
  224. package/dist/lib/util/EventBusEvents.js +70 -0
  225. package/dist/lib/util/EventBusEvents.js.map +1 -0
  226. package/dist/lib/util/FileUtil.js +35 -0
  227. package/dist/lib/util/FileUtil.js.map +1 -0
  228. package/dist/lib/util/HtmlUtil.js +67 -0
  229. package/dist/lib/util/HtmlUtil.js.map +1 -0
  230. package/dist/lib/util/Util.js +60 -0
  231. package/dist/lib/util/Util.js.map +1 -0
  232. package/dist/lib/util/constants.js +6 -0
  233. package/dist/lib/util/constants.js.map +1 -0
  234. package/dist/lib/util/emptyDiagram.js +12 -0
  235. package/dist/lib/util/emptyDiagram.js.map +1 -0
  236. package/dist/lib/util/generated-icons.js +12 -0
  237. package/dist/lib/util/generated-icons.js.map +1 -0
  238. package/dist/scripts/build-icons.js +30 -0
  239. package/dist/scripts/build-icons.js.map +1 -0
  240. package/dist/tsconfig.tsbuildinfo +1 -0
  241. package/index.js +1 -0
  242. package/package.json +83 -0
@@ -0,0 +1,291 @@
1
+ import CommandInterceptor from "diagram-js/lib/command/CommandInterceptor";
2
+ import { center, getBusinessObject, is, ifModelElement } from "../util/Util";
3
+ import { remove as collectionRemove } from "diagram-js/lib/util/Collections";
4
+ import { getLabel, isLabel, requiresExternalLabel } from "./LabelUtil";
5
+ import { assign, forEach } from "min-dash";
6
+ import { MODELER_PREFIX, MODELER_DI_PREFIX } from "../util/constants";
7
+ import { createDefaultInscriptionElementForClass, getArcColor, } from "../declarations-panel/provider/properties/Util";
8
+ export default class CustomUpdater extends CommandInterceptor {
9
+ constructor(eventBus, customElementFactory, connectionDocking, translate) {
10
+ super(eventBus);
11
+ this.updateDiAndSemanticParent = function (element, oldParent) {
12
+ // a label's parent does not change here
13
+ if (element.type === "label") {
14
+ return;
15
+ }
16
+ const parentShape = element.parent;
17
+ const businessObject = element.businessObject;
18
+ const parentBusinessObject = parentShape && parentShape.businessObject;
19
+ const parentDi = parentBusinessObject && parentBusinessObject.di;
20
+ this.updateSemanticParent(businessObject, parentBusinessObject);
21
+ this.updateDiParent(businessObject.di, parentDi);
22
+ };
23
+ this.updateSemanticParent = function (businessObject, newParent) {
24
+ let containment = businessObject.$parent;
25
+ const translate = this._translate;
26
+ if (businessObject.$parent === newParent) {
27
+ return;
28
+ }
29
+ if (is(businessObject, `${MODELER_PREFIX}:ModelElement`)) {
30
+ containment = "modelElements";
31
+ }
32
+ if (!containment) {
33
+ throw new Error(translate("no parent for {element} in {parent}", {
34
+ element: businessObject.id,
35
+ parent: newParent.id,
36
+ }));
37
+ }
38
+ let children;
39
+ if (businessObject.$parent) {
40
+ // Remove from old parent
41
+ children = businessObject.$parent.get(containment);
42
+ collectionRemove(children, businessObject);
43
+ }
44
+ if (!newParent) {
45
+ businessObject.$parent = null;
46
+ }
47
+ else {
48
+ // Add to new parent
49
+ children = newParent.get(containment);
50
+ children.push(businessObject);
51
+ businessObject.$parent = newParent;
52
+ }
53
+ };
54
+ this.updateDiParent = function (di, parentDi) {
55
+ if (parentDi && !is(parentDi, `${MODELER_DI_PREFIX}:Plane`)) {
56
+ parentDi = parentDi.$parent;
57
+ }
58
+ if (di.$parent === parentDi) {
59
+ return;
60
+ }
61
+ const planeElements = (parentDi || di.$parent).get("planeElements");
62
+ if (parentDi) {
63
+ planeElements.push(di);
64
+ di.$parent = parentDi;
65
+ }
66
+ else {
67
+ collectionRemove(planeElements, di);
68
+ di.$parent = null;
69
+ }
70
+ };
71
+ this.updateBounds = function (shape) {
72
+ const di = shape.businessObject.di;
73
+ const target = isLabel(shape) ? this._getLabel(di) : di;
74
+ let bounds = target.bounds;
75
+ if (!bounds) {
76
+ bounds = this._customElementFactory.createDiBounds();
77
+ target.set("bounds", bounds);
78
+ }
79
+ assign(bounds, {
80
+ x: shape.x,
81
+ y: shape.y,
82
+ width: shape.width,
83
+ height: shape.height,
84
+ });
85
+ };
86
+ this.updateConnection = function (context) {
87
+ const connection = context.connection;
88
+ const businessObject = getBusinessObject(connection);
89
+ const newSource = getBusinessObject(connection.source);
90
+ const newTarget = getBusinessObject(connection.target);
91
+ if (businessObject.source !== newSource) {
92
+ businessObject.source = newSource;
93
+ }
94
+ if (businessObject.target !== newTarget) {
95
+ businessObject.target = newTarget;
96
+ }
97
+ this.updateConnectionWaypoints(connection);
98
+ this.updateDiConnection(businessObject.di, newSource, newTarget);
99
+ };
100
+ this.updateConnectionWaypoints = function (connection) {
101
+ connection.businessObject.di.set("waypoint", this._customElementFactory.createDiWaypoints(connection.waypoints));
102
+ };
103
+ this.updateDiConnection = function (di, newSource, newTarget) {
104
+ if (di.sourceElement && di.sourceElement.modelElement !== newSource) {
105
+ di.sourceElement = newSource && newSource.di;
106
+ }
107
+ if (di.targetElement && di.targetElement.modelElement !== newTarget) {
108
+ di.targetElement = newTarget && newTarget.di;
109
+ }
110
+ };
111
+ this.connectionWaypoints = function (source, target) {
112
+ const connection = { source, target };
113
+ // Todo: Handle reflexive and bidirectional edges if necessary
114
+ // if (connection.source === connection.target) {
115
+ // connection.waypoints = reflexiveEdge(connection.source);
116
+ // } else if () {
117
+ // //TODO: Handle bidirectional edges
118
+ // }
119
+ connection.waypoints = [
120
+ center(connection.source),
121
+ center(connection.target),
122
+ ];
123
+ connection.waypoints =
124
+ this._connectionDocking.getCroppedWaypoints(connection);
125
+ // console.log(this._connectionDocking.getDockingPoint(connection, connection.source));
126
+ return connection.waypoints;
127
+ };
128
+ this._getLabel = function (di) {
129
+ if (!di.label) {
130
+ di.label = this._customElementFactory.createDiLabel();
131
+ }
132
+ return di.label;
133
+ };
134
+ this.createArcInscription = function (arc) {
135
+ if (!arc.businessObject.inscription) {
136
+ const newInscription = this._customElementFactory.create(`${MODELER_PREFIX}:Inscription`, { inscriptionElements: [] });
137
+ newInscription.$parent = arc;
138
+ const arcColor = getArcColor(arc);
139
+ if (arcColor && arcColor.length) {
140
+ arcColor.forEach((dataClass) => {
141
+ const inscriptionElement = createDefaultInscriptionElementForClass(dataClass, newInscription, this._customElementFactory);
142
+ newInscription.inscriptionElements.push(inscriptionElement);
143
+ });
144
+ }
145
+ arc.businessObject.inscription = newInscription;
146
+ }
147
+ };
148
+ this._customElementFactory = customElementFactory;
149
+ this._connectionDocking = connectionDocking;
150
+ this._translate = translate;
151
+ // Maintain a reference to the original this object
152
+ const self = this;
153
+ // Crop connection ends to avoid overlapping with elements
154
+ function cropConnection(e) {
155
+ const context = e.context;
156
+ const hints = context.hints || {};
157
+ if (!context.cropped && hints.createElementsBehavior !== false) {
158
+ const connection = context.connection;
159
+ // connection.waypoints = self.connectionWaypoints(connection.source, connection.target);
160
+ connection.waypoints =
161
+ connectionDocking.getCroppedWaypoints(connection);
162
+ context.cropped = true;
163
+ }
164
+ }
165
+ this.executed(["connection.layout", "connection.create"], cropConnection);
166
+ this.reverted(["connection.layout"], function (e) {
167
+ delete e.context.cropped;
168
+ });
169
+ // DI Update
170
+ function updateParent(e) {
171
+ const context = e.context;
172
+ const element = context.shape || context.connection;
173
+ self.updateDiAndSemanticParent(element, context.oldParent);
174
+ }
175
+ function reverseUpdateParent(e) {
176
+ const context = e.context;
177
+ const element = context.shape || context.connection;
178
+ const oldParent = context.parent || context.newParent;
179
+ self.updateDiAndSemanticParent(element, oldParent);
180
+ }
181
+ this.executed([
182
+ "shape.move",
183
+ "shape.create",
184
+ "shape.delete",
185
+ "connection.create",
186
+ "connection.move",
187
+ "connection.delete",
188
+ ], ifModelElement(updateParent));
189
+ this.reverted([
190
+ "shape.move",
191
+ "shape.create",
192
+ "shape.delete",
193
+ "connection.create",
194
+ "connection.move",
195
+ "connection.delete",
196
+ ], ifModelElement(reverseUpdateParent));
197
+ // Update root element of canvas
198
+ function updateRoot(e) {
199
+ const context = e.context;
200
+ const oldRoot = context.oldRoot;
201
+ const children = oldRoot.children;
202
+ forEach(children, function (child) {
203
+ if (is(child, `${MODELER_PREFIX}:ModelElement`)) {
204
+ self.updateParent(child);
205
+ }
206
+ });
207
+ }
208
+ this.executed(["canvas.updateRoot"], updateRoot);
209
+ this.reverted(["canvas.updateRoot"], updateRoot);
210
+ // Update bounds of everything but labels
211
+ function updateBounds(e) {
212
+ const shape = e.context.shape;
213
+ if (!is(shape, `${MODELER_PREFIX}:ModelElement`)) {
214
+ return;
215
+ }
216
+ self.updateBounds(shape);
217
+ }
218
+ this.executed(["shape.move", "shape.create", "shape.resize"], ifModelElement(function (e) {
219
+ // Exclude labels since they are handled differently during shape.changed
220
+ if (e.context.shape.type === "label") {
221
+ return;
222
+ }
223
+ updateBounds(e);
224
+ }));
225
+ this.reverted(["shape.move", "shape.create", "shape.resize"], ifModelElement(function (e) {
226
+ // Exclude labels since they are handled differently during shape.changed
227
+ if (e.context.shape.type === "label") {
228
+ return;
229
+ }
230
+ updateBounds(e);
231
+ }));
232
+ // Update label bounds
233
+ eventBus.on("shape.changed", function (e) {
234
+ if (e.element.type === "label") {
235
+ updateBounds({ context: { shape: e.element } });
236
+ }
237
+ });
238
+ function updateElementLabel(e) {
239
+ const { element } = e.context;
240
+ const label = getLabel(element);
241
+ const di = element.businessObject.di;
242
+ const diLabel = di && di.get("label");
243
+ if (!requiresExternalLabel(element) ||
244
+ is(di, `${MODELER_DI_PREFIX}:Plane`)) {
245
+ return;
246
+ }
247
+ if (label && !diLabel) {
248
+ di.set("label", self._customElementFactory.createDiLabel());
249
+ }
250
+ else if (!label && diLabel) {
251
+ di.set("label", null);
252
+ }
253
+ }
254
+ this.executed("element.updateLabel", ifModelElement(updateElementLabel));
255
+ this.reverted("element.updateLabel", ifModelElement(updateElementLabel));
256
+ // Update connections
257
+ function updateConnection(e) {
258
+ const context = e.context;
259
+ self.updateConnection(context);
260
+ }
261
+ this.executed([
262
+ "connection.create",
263
+ "connection.move",
264
+ "connection.delete",
265
+ "connection.reconnect",
266
+ ], ifModelElement(updateConnection));
267
+ this.reverted([
268
+ "connection.create",
269
+ "connection.move",
270
+ "connection.delete",
271
+ "connection.reconnect",
272
+ ], ifModelElement(updateConnection));
273
+ function createArcInscription(e) {
274
+ self.createArcInscription(e.context.connection);
275
+ }
276
+ this.executed(["connection.create"], ifModelElement(createArcInscription));
277
+ // Update waypoints
278
+ function updateConnectionWaypoints(e) {
279
+ self.updateConnectionWaypoints(e.context.connection);
280
+ }
281
+ this.executed(["connection.layout", "connection.move", "connection.updateWaypoints"], ifModelElement(updateConnectionWaypoints));
282
+ this.reverted(["connection.layout", "connection.move", "connection.updateWaypoints"], ifModelElement(updateConnectionWaypoints));
283
+ }
284
+ }
285
+ CustomUpdater.$inject = [
286
+ "eventBus",
287
+ "customElementFactory",
288
+ "connectionDocking",
289
+ "translate",
290
+ ];
291
+ //# sourceMappingURL=CustomUpdater.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CustomUpdater.js","sourceRoot":"","sources":["../../../lib/modeling/CustomUpdater.js"],"names":[],"mappings":"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"}
@@ -0,0 +1,111 @@
1
+ import CommandInterceptor from "diagram-js/lib/command/CommandInterceptor";
2
+ import { is, ifModelElement } from "../util/Util";
3
+ import { MODELER_PREFIX } from "../util/constants";
4
+ import { isStructurallyIncorrect } from "../simulation/binding-utils/earlyReturnLogic";
5
+ export default class CustomVerification extends CommandInterceptor {
6
+ constructor(eventBus, overlays, elementRegistry) {
7
+ super(eventBus);
8
+ this.verifyStructuralCorrectness = function (self, transition) {
9
+ const [isIncorrect, message] = isStructurallyIncorrect(transition.incoming, transition.outgoing);
10
+ if (self._overlayMap.has(transition)) {
11
+ self._overlays.remove(self._overlayMap.get(transition));
12
+ self._overlayMap.delete(transition);
13
+ }
14
+ if (isIncorrect) {
15
+ const escapedMessage = message
16
+ .replace(/&/g, "&")
17
+ .replace(/</g, "&lt;")
18
+ .replace(/>/g, "&gt;")
19
+ .replace(/"/g, "&quot;")
20
+ .replace(/'/g, "&#39;");
21
+ const overlayId = self._overlays.add(transition, {
22
+ position: {
23
+ bottom: -2,
24
+ right: -2,
25
+ },
26
+ html: `
27
+ <div class="structurally-incorrect-overlay" style="cursor: pointer; overflow: visible; font-size: 25;">
28
+ <div class="structurally-incorrect-tooltip">${escapedMessage}</div>
29
+ <svg width="24px" height="24px" viewBox="0 0 20 20" style="overflow: visible;">
30
+ <circle cx="10" cy="10" r="10" fill="#fff3cd" stroke="#856404" stroke-width="0.15em"/>
31
+ <text x="10" y="14" text-anchor="middle" font-size="16" fill="#856404" font-family="Arial">⚠</text>
32
+ </svg>
33
+ </div>
34
+ `,
35
+ });
36
+ self._overlayMap.set(transition, overlayId);
37
+ }
38
+ };
39
+ this._overlays = overlays;
40
+ this._elementRegistry = elementRegistry;
41
+ this._overlayMap = new Map();
42
+ const self = this;
43
+ function verifyInitially(e) {
44
+ var _a;
45
+ const allTransitions = [];
46
+ const elements = (_a = self._elementRegistry) === null || _a === void 0 ? void 0 : _a._elements;
47
+ if (!elements)
48
+ return;
49
+ Object.values(elements).forEach((id) => {
50
+ if (is(id.element, `${MODELER_PREFIX}:Transition`)) {
51
+ allTransitions.push(id.element);
52
+ }
53
+ });
54
+ for (const transition of allTransitions) {
55
+ self.verifyStructuralCorrectness(self, transition);
56
+ }
57
+ }
58
+ eventBus.on("import.done", verifyInitially);
59
+ function getTransition(contextArc) {
60
+ var _a, _b;
61
+ const sourceIsTransition = ((_a = contextArc.source) === null || _a === void 0 ? void 0 : _a.type) === `${MODELER_PREFIX}:Transition`;
62
+ const targetIsTransition = ((_b = contextArc.target) === null || _b === void 0 ? void 0 : _b.type) === `${MODELER_PREFIX}:Transition`;
63
+ if (!sourceIsTransition && !targetIsTransition)
64
+ return;
65
+ const transition = sourceIsTransition
66
+ ? contextArc.source
67
+ : contextArc.target;
68
+ return transition;
69
+ }
70
+ function verifyAfterConnectionUpdate(e) {
71
+ var _a, _b;
72
+ let contextArc = e.context;
73
+ let attempts = 0;
74
+ while (attempts < 2 &&
75
+ ((_a = contextArc.source) === null || _a === void 0 ? void 0 : _a.type) !== `${MODELER_PREFIX}:Transition` &&
76
+ ((_b = contextArc.target) === null || _b === void 0 ? void 0 : _b.type) !== `${MODELER_PREFIX}:Transition`) {
77
+ contextArc = contextArc.connection;
78
+ attempts++;
79
+ if (!contextArc)
80
+ return;
81
+ }
82
+ const transition = getTransition(contextArc);
83
+ if (!transition)
84
+ return;
85
+ self.verifyStructuralCorrectness(self, transition);
86
+ }
87
+ self.executed(["connection.create", "connection.delete"], ifModelElement(verifyAfterConnectionUpdate));
88
+ self.reverted(["connection.create", "connection.delete"], ifModelElement(verifyAfterConnectionUpdate));
89
+ function verifyAfterElementUpdate(e) {
90
+ let contextArc = e.context.element;
91
+ if (!(contextArc === null || contextArc === void 0 ? void 0 : contextArc.type) || contextArc.type !== `${MODELER_PREFIX}:Arc`)
92
+ return;
93
+ const transition = getTransition(contextArc);
94
+ if (!transition)
95
+ return;
96
+ self.verifyStructuralCorrectness(self, transition);
97
+ }
98
+ self.executed([
99
+ "element.updateModdleProperties",
100
+ "element.updateProperties",
101
+ "element.updateLabel",
102
+ ], verifyAfterElementUpdate);
103
+ self.reverted([
104
+ "element.updateModdleProperties",
105
+ "element.updateProperties",
106
+ "element.updateLabel",
107
+ ], verifyAfterElementUpdate);
108
+ }
109
+ }
110
+ CustomVerification.$inject = ["eventBus", "overlays", "elementRegistry"];
111
+ //# sourceMappingURL=CustomVerification.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CustomVerification.js","sourceRoot":"","sources":["../../../lib/modeling/CustomVerification.js"],"names":[],"mappings":"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"}
@@ -0,0 +1,56 @@
1
+ import { assign } from "min-dash";
2
+ import BaseElementFactory from "diagram-js/lib/core/ElementFactory";
3
+ import { DEFAULT_LABEL_SIZE } from "./LabelUtil";
4
+ export default class ElementFactory extends BaseElementFactory {
5
+ constructor(customElementFactory) {
6
+ super();
7
+ this._customElementFactory = customElementFactory;
8
+ }
9
+ baseCreate(elementType, attrs) {
10
+ return super.create(elementType, attrs);
11
+ }
12
+ create(elementType, attrs) {
13
+ // Leave label creation to diagram-js
14
+ // Assumes that a label's business object has been assigned elsewhere
15
+ if (elementType === "label") {
16
+ return this.baseCreate(elementType, assign({ type: "label" }, DEFAULT_LABEL_SIZE, attrs));
17
+ }
18
+ return this.createElement(elementType, attrs);
19
+ }
20
+ createElement(elementType, attrs) {
21
+ attrs = attrs || {};
22
+ let businessObject = attrs.businessObject;
23
+ if (!businessObject) {
24
+ businessObject = this._customElementFactory.create(attrs.type, attrs);
25
+ }
26
+ if (!businessObject.di) {
27
+ if (elementType === "root") {
28
+ businessObject.di = this._customElementFactory.createDiPlane(businessObject, [], {
29
+ id: businessObject.id + "_di",
30
+ });
31
+ }
32
+ else if (elementType === "connection") {
33
+ businessObject.di = this._customElementFactory.createDiEdge(businessObject, [], {
34
+ id: businessObject.id + "_di",
35
+ });
36
+ }
37
+ else {
38
+ businessObject.di = this._customElementFactory.createDiShape(businessObject, [], {
39
+ id: businessObject.id + "_di",
40
+ });
41
+ }
42
+ }
43
+ if (attrs.di) {
44
+ assign(businessObject.di, attrs.di);
45
+ delete attrs.di;
46
+ }
47
+ const size = this._customElementFactory.defaultSizeForType(businessObject);
48
+ attrs = assign({
49
+ businessObject,
50
+ id: businessObject.id,
51
+ }, size, attrs);
52
+ return this.baseCreate(elementType, attrs);
53
+ }
54
+ }
55
+ ElementFactory.$inject = ["customElementFactory"];
56
+ //# sourceMappingURL=ElementFactory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ElementFactory.js","sourceRoot":"","sources":["../../../lib/modeling/ElementFactory.js"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,kBAAkB,MAAM,oCAAoC,CAAC;AACpE,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAEjD,MAAM,CAAC,OAAO,OAAO,cAAe,SAAQ,kBAAkB;IAC5D,YAAY,oBAAoB;QAC9B,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,qBAAqB,GAAG,oBAAoB,CAAC;IACpD,CAAC;IAED,UAAU,CAAC,WAAW,EAAE,KAAK;QAC3B,OAAO,KAAK,CAAC,MAAM,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;IAC1C,CAAC;IAED,MAAM,CAAC,WAAW,EAAE,KAAK;QACvB,qCAAqC;QACrC,qEAAqE;QACrE,IAAI,WAAW,KAAK,OAAO,EAAE,CAAC;YAC5B,OAAO,IAAI,CAAC,UAAU,CACpB,WAAW,EACX,MAAM,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,kBAAkB,EAAE,KAAK,CAAC,CACrD,CAAC;QACJ,CAAC;QAED,OAAO,IAAI,CAAC,aAAa,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;IAChD,CAAC;IAED,aAAa,CAAC,WAAW,EAAE,KAAK;QAC9B,KAAK,GAAG,KAAK,IAAI,EAAE,CAAC;QAEpB,IAAI,cAAc,GAAG,KAAK,CAAC,cAAc,CAAC;QAE1C,IAAI,CAAC,cAAc,EAAE,CAAC;YACpB,cAAc,GAAG,IAAI,CAAC,qBAAqB,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QACxE,CAAC;QAED,IAAI,CAAC,cAAc,CAAC,EAAE,EAAE,CAAC;YACvB,IAAI,WAAW,KAAK,MAAM,EAAE,CAAC;gBAC3B,cAAc,CAAC,EAAE,GAAG,IAAI,CAAC,qBAAqB,CAAC,aAAa,CAC1D,cAAc,EACd,EAAE,EACF;oBACE,EAAE,EAAE,cAAc,CAAC,EAAE,GAAG,KAAK;iBAC9B,CACF,CAAC;YACJ,CAAC;iBAAM,IAAI,WAAW,KAAK,YAAY,EAAE,CAAC;gBACxC,cAAc,CAAC,EAAE,GAAG,IAAI,CAAC,qBAAqB,CAAC,YAAY,CACzD,cAAc,EACd,EAAE,EACF;oBACE,EAAE,EAAE,cAAc,CAAC,EAAE,GAAG,KAAK;iBAC9B,CACF,CAAC;YACJ,CAAC;iBAAM,CAAC;gBACN,cAAc,CAAC,EAAE,GAAG,IAAI,CAAC,qBAAqB,CAAC,aAAa,CAC1D,cAAc,EACd,EAAE,EACF;oBACE,EAAE,EAAE,cAAc,CAAC,EAAE,GAAG,KAAK;iBAC9B,CACF,CAAC;YACJ,CAAC;QACH,CAAC;QAED,IAAI,KAAK,CAAC,EAAE,EAAE,CAAC;YACb,MAAM,CAAC,cAAc,CAAC,EAAE,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC;YACpC,OAAO,KAAK,CAAC,EAAE,CAAC;QAClB,CAAC;QAED,MAAM,IAAI,GAAG,IAAI,CAAC,qBAAqB,CAAC,kBAAkB,CAAC,cAAc,CAAC,CAAC;QAE3E,KAAK,GAAG,MAAM,CACZ;YACE,cAAc;YACd,EAAE,EAAE,cAAc,CAAC,EAAE;SACtB,EACD,IAAI,EACJ,KAAK,CACN,CAAC;QAEF,OAAO,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;IAC7C,CAAC;CACF;AAED,cAAc,CAAC,OAAO,GAAG,CAAC,sBAAsB,CAAC,CAAC"}
@@ -0,0 +1,151 @@
1
+ import { getBusinessObject, isAny } from "../util/Util";
2
+ import { assign } from "min-dash";
3
+ import { MODELER_PREFIX } from "../util/constants";
4
+ import { isWritingArc } from "../declarations-panel/provider/properties/Util";
5
+ export function getArcInscriptionText(arcBusinessObject) {
6
+ const inscription = arcBusinessObject.inscription;
7
+ if (!inscription ||
8
+ !inscription.inscriptionElements ||
9
+ !inscription.inscriptionElements.length) {
10
+ return "";
11
+ }
12
+ const variableType = arcBusinessObject.variableType;
13
+ const isExactSynchronization = arcBusinessObject.isExactSynchronization;
14
+ const inscriptionText = inscription.inscriptionElements
15
+ .map((inscriptionElement) => {
16
+ const generationPrefix = inscriptionElement.isGenerated ? "\u03BD_" : "";
17
+ const variableName = inscriptionElement.variableName || inscriptionElement.dataClass.alias;
18
+ let variableTypeSuffix = "";
19
+ if (variableType && variableType.id === inscriptionElement.dataClass.id) {
20
+ variableTypeSuffix = "[]";
21
+ if (!isWritingArc(arcBusinessObject)) {
22
+ variableTypeSuffix += isExactSynchronization ? "=" : "⊆";
23
+ }
24
+ }
25
+ return `${generationPrefix}${variableName}${variableTypeSuffix}`;
26
+ })
27
+ .join(", ");
28
+ return inscription.inscriptionElements.length > 1
29
+ ? `(${inscriptionText})`
30
+ : inscriptionText;
31
+ }
32
+ export function getLabel(element) {
33
+ const businessObject = getBusinessObject(element);
34
+ if (businessObject.$type === `${MODELER_PREFIX}:Arc`) {
35
+ return getArcInscriptionText(businessObject);
36
+ }
37
+ const attr = getLabelAttribute(element);
38
+ if (attr) {
39
+ return businessObject[attr] || "";
40
+ }
41
+ }
42
+ // CustomModelerTodo: Usually, the label attribute should be 'name' for standard elements.
43
+ // However, if you want a different attribute to serve as the label, specify that here.
44
+ export function getLabelAttribute(element) {
45
+ const businessObject = getBusinessObject(element);
46
+ if (isAny(businessObject, [
47
+ `${MODELER_PREFIX}:Place`,
48
+ `${MODELER_PREFIX}:Transition`,
49
+ ])) {
50
+ return "name";
51
+ }
52
+ // else if (isAny(businessObject, [`${MODELER_PREFIX}:Arc`])) {
53
+ // return 'inscription';
54
+ // }
55
+ }
56
+ export function setLabel(element, text) {
57
+ const businessObject = element.businessObject;
58
+ const attr = getLabelAttribute(element);
59
+ if (attr) {
60
+ businessObject[attr] = text;
61
+ }
62
+ return element;
63
+ }
64
+ export function isLabel(element) {
65
+ return element && !!element.labelTarget;
66
+ }
67
+ // Returns true if there exists an external label for the given element
68
+ export function existsExternalLabel(element) {
69
+ return isLabel(element.label);
70
+ }
71
+ // Returns true if labels for that type of element are external
72
+ // CustomModelerTodo: Modify this function to return true for elements that
73
+ // require external labels.
74
+ export function requiresExternalLabel(element) {
75
+ const businessObject = getBusinessObject(element);
76
+ return isAny(businessObject, [
77
+ `${MODELER_PREFIX}:Place`,
78
+ `${MODELER_PREFIX}:Arc`,
79
+ ]);
80
+ }
81
+ export const DEFAULT_LABEL_SIZE = {
82
+ width: 90,
83
+ height: 20,
84
+ };
85
+ const FLOW_LABEL_INDENT = 15;
86
+ export function getExternalLabelMid(element) {
87
+ if (element.waypoints) {
88
+ return getFlowLabelPosition(element.waypoints);
89
+ }
90
+ else {
91
+ return {
92
+ x: element.x + element.width / 2,
93
+ y: element.y + element.height + DEFAULT_LABEL_SIZE.height / 2,
94
+ };
95
+ }
96
+ }
97
+ export function getExternalLabelBounds(businessObject, element) {
98
+ let mid;
99
+ let size;
100
+ let bounds;
101
+ const di = businessObject.di;
102
+ const label = di["label"];
103
+ if (label && label.bounds) {
104
+ bounds = label.bounds;
105
+ size = {
106
+ width: Math.max(DEFAULT_LABEL_SIZE.width, bounds.width),
107
+ height: bounds.height,
108
+ };
109
+ mid = {
110
+ x: bounds.x + bounds.width / 2,
111
+ y: bounds.y + bounds.height / 2,
112
+ };
113
+ }
114
+ else {
115
+ mid = getExternalLabelMid(element);
116
+ size = DEFAULT_LABEL_SIZE;
117
+ }
118
+ return assign({
119
+ x: mid.x - size.width / 2,
120
+ y: mid.y - size.height / 2,
121
+ }, size);
122
+ }
123
+ function getFlowLabelPosition(waypoints) {
124
+ // get the waypoints mid
125
+ const mid = waypoints.length / 2 - 1;
126
+ const first = waypoints[Math.floor(mid)];
127
+ const second = waypoints[Math.ceil(mid + 0.01)];
128
+ // get position
129
+ const position = getWaypointsMid(waypoints);
130
+ // calculate angle
131
+ const angle = Math.atan((second.y - first.y) / (second.x - first.x));
132
+ let x = position.x;
133
+ let y = position.y;
134
+ if (Math.abs(angle) < Math.PI / 2) {
135
+ y -= FLOW_LABEL_INDENT;
136
+ }
137
+ else {
138
+ x += FLOW_LABEL_INDENT;
139
+ }
140
+ return { x: x, y: y };
141
+ }
142
+ function getWaypointsMid(waypoints) {
143
+ const mid = waypoints.length / 2 - 1;
144
+ const first = waypoints[Math.floor(mid)];
145
+ const second = waypoints[Math.ceil(mid + 0.01)];
146
+ return {
147
+ x: first.x + (second.x - first.x) / 2,
148
+ y: first.y + (second.y - first.y) / 2,
149
+ };
150
+ }
151
+ //# sourceMappingURL=LabelUtil.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LabelUtil.js","sourceRoot":"","sources":["../../../lib/modeling/LabelUtil.js"],"names":[],"mappings":"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"}