@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,361 @@
1
+ import { query as domQuery } from "min-dom";
2
+ import BaseRenderer from "diagram-js/lib/draw/BaseRenderer";
3
+ import { append as svgAppend, attr as svgAttr, create as svgCreate, classes as svgClasses, } from "tiny-svg";
4
+ import { assign, isObject } from "min-dash";
5
+ import { componentsToPath } from "diagram-js/lib/util/RenderUtil";
6
+ import Ids from "ids";
7
+ import { DEFAULT_TEXT_SIZE } from "./TextRenderer";
8
+ import { getLabel } from "../modeling/LabelUtil";
9
+ import { MODELER_PREFIX } from "../util/constants";
10
+ import { is } from "../util/Util";
11
+ const RENDERER_IDS = new Ids();
12
+ export default class CustomRenderer extends BaseRenderer {
13
+ constructor(eventBus, styles, canvas, textRenderer) {
14
+ super(eventBus, 2000);
15
+ this.drawPlace = function (parentGfx, element) {
16
+ // const shape = svgCreate('path');
17
+ // svgAttr(shape, {
18
+ // d: getPlacePath(0, 0, element.width, element.height),
19
+ // fill: 'white',
20
+ // fillOpacity: 0.95,
21
+ // stroke: 'black',
22
+ // strokeWidth: 2
23
+ // });
24
+ // svgAppend(parentGfx, shape);
25
+ const circle = this.drawCircle(parentGfx, element.width, element.height, 0, {});
26
+ const marking = element.businessObject.marking;
27
+ if (marking && marking.length) {
28
+ this.renderMarking(parentGfx, element, marking.length.toString());
29
+ }
30
+ return circle;
31
+ };
32
+ this.drawTransition = function (parentGfx, element) {
33
+ const shape = svgCreate("path");
34
+ svgAttr(shape, {
35
+ d: getTransitionPath(0, 0, element.width, element.height),
36
+ fill: "white",
37
+ fillOpacity: 0.95,
38
+ stroke: "black",
39
+ strokeWidth: 2,
40
+ });
41
+ svgAppend(parentGfx, shape);
42
+ this.renderEmbeddedLabel(parentGfx, element, "center-middle");
43
+ return parentGfx;
44
+ };
45
+ this.drawArc = function (parentGfx, element) {
46
+ if (element.businessObject.isInhibitorArc) {
47
+ return this.drawInhibitorArc(parentGfx, element);
48
+ }
49
+ if (element.businessObject.variableType) {
50
+ return this.drawVariableArc(parentGfx, element);
51
+ }
52
+ const pathData = this.getPathDataFromConnection(element);
53
+ const color = "black";
54
+ const attrs = this._styles.computeStyle({
55
+ markerEnd: this.marker("defaultarc-end", color, color),
56
+ }, ["no-fill"], this._defaultLineStyle);
57
+ return this._drawPath(parentGfx, pathData, attrs);
58
+ };
59
+ this.drawInhibitorArc = function (parentGfx, element) {
60
+ const pathData = this.getPathDataFromConnection(element);
61
+ let attrs;
62
+ if (is(element.target, `${MODELER_PREFIX}:Place`)) {
63
+ attrs = this._styles.computeStyle({
64
+ markerStart: this.marker("inhibitorarc-start", "white", "black"),
65
+ }, ["no-fill"], this._defaultLineStyle);
66
+ }
67
+ else {
68
+ attrs = this._styles.computeStyle({
69
+ markerEnd: this.marker("inhibitorarc-end", "white", "black"),
70
+ }, ["no-fill"], this._defaultLineStyle);
71
+ }
72
+ return this._drawPath(parentGfx, pathData, attrs);
73
+ };
74
+ this.renderExternalLabel = function (parentGfx, element, attrs = {}) {
75
+ const box = {
76
+ width: 90,
77
+ height: 30,
78
+ x: element.width / 2 + element.x,
79
+ y: element.height / 2 + element.y,
80
+ };
81
+ return this.renderLabel(parentGfx, getLabel(element), {
82
+ box: box,
83
+ fitBox: true,
84
+ style: assign({}, this._textRenderer.getExternalStyle(), {
85
+ fill: "black",
86
+ }),
87
+ });
88
+ };
89
+ this._styles = styles;
90
+ this._canvas = canvas;
91
+ this._textRenderer = textRenderer;
92
+ this._markers = {};
93
+ this._rendererId = RENDERER_IDS.next();
94
+ this._defaultLineStyle = {
95
+ strokeLinejoin: "round",
96
+ strokeWidth: 2,
97
+ stroke: "black",
98
+ // strokeDasharray: '5, 5'
99
+ };
100
+ }
101
+ canRender(element) {
102
+ return true;
103
+ }
104
+ // CustomModelerTodo: Implement the rendering of the different shapes.
105
+ drawShape(parentGfx, element) {
106
+ if (element.type === `${MODELER_PREFIX}:Place`) {
107
+ return this.drawPlace(parentGfx, element);
108
+ }
109
+ else if (element.type === `${MODELER_PREFIX}:Transition`) {
110
+ return this.drawTransition(parentGfx, element);
111
+ }
112
+ else if (element.type === `${MODELER_PREFIX}:Arc`) {
113
+ return this.drawArc(parentGfx, element);
114
+ }
115
+ else if (element.type === "label") {
116
+ return this.renderExternalLabel(parentGfx, element);
117
+ }
118
+ }
119
+ drawConnection(parentGfx, element) {
120
+ return this.drawShape(parentGfx, element);
121
+ }
122
+ drawCircle(parentGfx, width, height, offset, attrs) {
123
+ // Cheeky way to allow for optional parameters ...
124
+ if (isObject(offset)) {
125
+ attrs = offset;
126
+ offset = 0;
127
+ }
128
+ offset = offset || 0;
129
+ attrs = this._styles.computeStyle(attrs, {
130
+ stroke: "black",
131
+ strokeWidth: 2,
132
+ fill: "white",
133
+ });
134
+ // Not sure why it's necessary
135
+ if (attrs.fill === "none") {
136
+ delete attrs.fillOpacity;
137
+ }
138
+ const cx = width / 2;
139
+ const cy = height / 2;
140
+ const circle = svgCreate("circle", {
141
+ cx,
142
+ cy,
143
+ r: Math.round((width + height) / 4 - offset),
144
+ ...attrs,
145
+ });
146
+ svgAppend(parentGfx, circle);
147
+ return circle;
148
+ }
149
+ renderMarking(parentGfx, element, marking) {
150
+ return this.renderLabel(parentGfx, marking, {
151
+ box: element,
152
+ align: "center-middle",
153
+ padding: 5,
154
+ style: {
155
+ fill: "black",
156
+ fontSize: 20,
157
+ },
158
+ });
159
+ }
160
+ // The variable arc is drawn as two lines, a thicker black line with a thinner white line on top.
161
+ drawVariableArc(parentGfx, element) {
162
+ const pathDataBlack = this.getPathDataFromConnection(element, 10);
163
+ // Draw the thick black line
164
+ const blackAttrs = this._styles.computeStyle({
165
+ stroke: "black",
166
+ strokeWidth: 6,
167
+ }, ["no-fill"], this._defaultLineStyle);
168
+ this._drawPath(parentGfx, pathDataBlack, blackAttrs);
169
+ const pathDataWhite = this.getPathDataFromConnection(element);
170
+ // Draw the thinner white line on top
171
+ const whiteAttrs = this._styles.computeStyle({
172
+ stroke: "white",
173
+ strokeWidth: 2,
174
+ markerEnd: this.marker("defaultarc-end", "black", "black"),
175
+ }, ["no-fill"], this._defaultLineStyle);
176
+ const whiteArc = this._drawPath(parentGfx, pathDataWhite, whiteAttrs);
177
+ return whiteArc;
178
+ }
179
+ // Helper to create and append a path
180
+ _drawPath(parentGfx, pathData, attrs) {
181
+ const arc = svgCreate("path");
182
+ svgAttr(arc, { d: pathData });
183
+ svgAttr(arc, attrs);
184
+ svgAppend(parentGfx, arc);
185
+ return arc;
186
+ }
187
+ getPathDataFromConnection(connection, offset) {
188
+ const waypoints = connection.waypoints;
189
+ let pathData = "m " + waypoints[0].x + "," + waypoints[0].y;
190
+ for (let i = 1; i < waypoints.length; i++) {
191
+ if (i === waypoints.length - 1 && offset) {
192
+ const finalWaypoint = this.calculateWaypointWithOffset(waypoints[i], waypoints[i - 1], offset);
193
+ pathData += "L" + finalWaypoint.x + "," + finalWaypoint.y + " ";
194
+ }
195
+ else {
196
+ pathData += "L" + waypoints[i].x + "," + waypoints[i].y + " ";
197
+ }
198
+ }
199
+ return pathData;
200
+ }
201
+ // Calculate the final waypoint of a variable arc with an offset to avoid the thicker black line
202
+ // overlapping with the arrow head.
203
+ calculateWaypointWithOffset(waypoint, previousWaypoint, offset) {
204
+ let x = waypoint.x;
205
+ let y = waypoint.y;
206
+ if (x === previousWaypoint.x) {
207
+ y = y < previousWaypoint.y ? y + offset : y - offset;
208
+ }
209
+ else if (y === previousWaypoint.y) {
210
+ x = x < previousWaypoint.x ? x + offset : x - offset;
211
+ }
212
+ else if (x !== previousWaypoint.x && y !== previousWaypoint.y) {
213
+ // Diagonal: move back offset/2 pixels along the line from previousWaypoint to waypoint
214
+ const dx = waypoint.x - previousWaypoint.x;
215
+ const dy = waypoint.y - previousWaypoint.y;
216
+ const length = Math.sqrt(dx * dx + dy * dy) || 1;
217
+ const ratio = (length - offset / 2) / length;
218
+ x = previousWaypoint.x + dx * ratio;
219
+ y = previousWaypoint.y + dy * ratio;
220
+ }
221
+ return { x, y };
222
+ }
223
+ marker(type, fill, stroke) {
224
+ const id = type +
225
+ "-" +
226
+ colorEscape(fill) +
227
+ "-" +
228
+ colorEscape(stroke) +
229
+ "-" +
230
+ this._rendererId;
231
+ if (!this._markers[id]) {
232
+ this.createMarker(id, type, fill, stroke);
233
+ }
234
+ return "url(#" + id + ")";
235
+ }
236
+ createMarker(id, type, fill, stroke) {
237
+ if (type === "defaultarc-end") {
238
+ const defaultarcEnd = svgCreate("path", {
239
+ d: "M 1 5 L 11 10 L 1 15 Z",
240
+ fill,
241
+ stroke,
242
+ strokeLinecap: "round",
243
+ });
244
+ this.addMarker(id, {
245
+ element: defaultarcEnd,
246
+ ref: { x: 11, y: 10 },
247
+ scale: 0.5,
248
+ });
249
+ }
250
+ else if (type === "inhibitorarc-end") {
251
+ const inhibitorarcEnd = svgCreate("circle", {
252
+ cx: 6,
253
+ cy: 10,
254
+ r: 5,
255
+ fill,
256
+ stroke,
257
+ strokeLinecap: "round",
258
+ });
259
+ this.addMarker(id, {
260
+ element: inhibitorarcEnd,
261
+ ref: { x: 12, y: 10 },
262
+ scale: 0.5,
263
+ });
264
+ }
265
+ else if (type === "inhibitorarc-start") {
266
+ const inhibitorarcStart = svgCreate("circle", {
267
+ cx: 6,
268
+ cy: 10,
269
+ r: 5,
270
+ fill,
271
+ stroke,
272
+ strokeLinecap: "round",
273
+ });
274
+ this.addMarker(id, {
275
+ element: inhibitorarcStart,
276
+ ref: { x: 1, y: 10 },
277
+ scale: 0.5,
278
+ });
279
+ }
280
+ }
281
+ addMarker(id, options) {
282
+ const { ref = { x: 0, y: 0 }, scale = 1, element } = options;
283
+ const marker = svgCreate("marker", {
284
+ id,
285
+ viewBox: "0 0 20 20",
286
+ refX: ref.x,
287
+ refY: ref.y,
288
+ markerWidth: 20 * scale,
289
+ markerHeight: 20 * scale,
290
+ orient: "auto",
291
+ });
292
+ svgAppend(marker, element);
293
+ let defs = domQuery("defs", this._canvas._svg);
294
+ if (!defs) {
295
+ defs = svgCreate("defs");
296
+ svgAppend(this._canvas._svg, defs);
297
+ }
298
+ svgAppend(defs, marker);
299
+ this._markers[id] = marker;
300
+ }
301
+ renderLabel(parentGfx, label, attrs = {}) {
302
+ // Why?
303
+ attrs = assign({
304
+ size: {
305
+ width: 100,
306
+ },
307
+ }, attrs);
308
+ const text = this._textRenderer.createText(label, attrs);
309
+ svgClasses(text).add("djs-label");
310
+ svgAppend(parentGfx, text);
311
+ return text;
312
+ }
313
+ renderEmbeddedLabel(parentGfx, element, align) {
314
+ return this.renderLabel(parentGfx, getLabel(element), {
315
+ box: element,
316
+ align: align,
317
+ padding: 5,
318
+ style: {
319
+ fill: element.color === "black" ? "white" : "black",
320
+ },
321
+ });
322
+ }
323
+ getShapePath(element) {
324
+ if (element.type === `${MODELER_PREFIX}:Place`) {
325
+ return getPlacePath(element.x, element.y, element.width, element.height);
326
+ }
327
+ else if (element.type === `${MODELER_PREFIX}:Transition`) {
328
+ return getTransitionPath(element.x, element.y, element.width, element.height);
329
+ }
330
+ }
331
+ }
332
+ CustomRenderer.$inject = ["eventBus", "styles", "canvas", "textRenderer"];
333
+ // helpers
334
+ function colorEscape(colorString) {
335
+ // only allow characters and numbers
336
+ return colorString.replace(/[^0-9a-zA-z]+/g, "_");
337
+ }
338
+ // The following functions return the svg path for the respective shapes.
339
+ // For further details, see https://developer.mozilla.org/en-US/docs/Web/SVG/Tutorial/Paths
340
+ function getTransitionPath(x, y, width, height) {
341
+ return componentsToPath([
342
+ ["M", x, y],
343
+ ["h", width],
344
+ ["v", height],
345
+ ["h", -width],
346
+ ["z"],
347
+ ]);
348
+ }
349
+ function getPlacePath(x, y, width, height) {
350
+ const radius = width / 2;
351
+ // Get center coordinates of the circle
352
+ const cx = x + radius;
353
+ const cy = y + radius;
354
+ return componentsToPath([
355
+ ["M", cx, cy],
356
+ ["m", 0, -radius],
357
+ ["a", radius, radius, 0, 1, 1, 0, 2 * radius],
358
+ ["a", radius, radius, 0, 1, 1, 0, -2 * radius],
359
+ ]);
360
+ }
361
+ //# sourceMappingURL=CustomRenderer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CustomRenderer.js","sourceRoot":"","sources":["../../../lib/draw/CustomRenderer.js"],"names":[],"mappings":"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"}
@@ -0,0 +1,52 @@
1
+ import { assign } from "min-dash";
2
+ import TextUtil from "diagram-js/lib/util/Text";
3
+ export const DEFAULT_TEXT_SIZE = 16;
4
+ export const LINE_HEIGHT_RATIO = 1.2;
5
+ export default class TextRenderer {
6
+ constructor(config) {
7
+ // Get the new bounds of an externally rendered, layouted label
8
+ this.getExternalLabelBounds = function (bounds, text) {
9
+ const layoutedDimensions = this._textUtil.getDimensions(text, {
10
+ box: {
11
+ width: 90,
12
+ height: 30,
13
+ x: bounds.width / 2 + bounds.x,
14
+ y: bounds.height / 2 + bounds.y,
15
+ },
16
+ style: this._externalStyle,
17
+ });
18
+ // Resize label shape to fit label text
19
+ return {
20
+ x: Math.round(bounds.x + bounds.width / 2 - layoutedDimensions.width / 2),
21
+ y: Math.round(bounds.y),
22
+ width: Math.ceil(layoutedDimensions.width),
23
+ height: Math.ceil(layoutedDimensions.height),
24
+ };
25
+ };
26
+ // Create layouted text element as SVGElement
27
+ this.createText = function (text, options) {
28
+ return this._textUtil.createText(text, options || {});
29
+ };
30
+ this.getDefaultStyle = function () {
31
+ return this._defaultStyle;
32
+ };
33
+ this.getExternalStyle = function () {
34
+ return this._externalStyle;
35
+ };
36
+ this._defaultStyle = assign({
37
+ fontFamily: "IBM Plex, sans-serif",
38
+ fontSize: DEFAULT_TEXT_SIZE,
39
+ fontWeight: "normal",
40
+ lineHeight: LINE_HEIGHT_RATIO,
41
+ }, (config && config.defaultStyle) || {});
42
+ const fontSize = parseInt(this._defaultStyle.fontSize, 10);
43
+ this._externalStyle = assign({}, this._defaultStyle, {
44
+ fontSize: fontSize,
45
+ }, (config && config.externalStyle) || {});
46
+ this._textUtil = new TextUtil({
47
+ style: this._defaultStyle,
48
+ });
49
+ }
50
+ }
51
+ TextRenderer.$inject = ["config.textRenderer"];
52
+ //# sourceMappingURL=TextRenderer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TextRenderer.js","sourceRoot":"","sources":["../../../lib/draw/TextRenderer.js"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,QAAQ,MAAM,0BAA0B,CAAC;AAEhD,MAAM,CAAC,MAAM,iBAAiB,GAAG,EAAE,CAAC;AACpC,MAAM,CAAC,MAAM,iBAAiB,GAAG,GAAG,CAAC;AAErC,MAAM,CAAC,OAAO,OAAO,YAAY;IAC/B,YAAY,MAAM;QA2BlB,+DAA+D;QAC/D,2BAAsB,GAAG,UAAU,MAAM,EAAE,IAAI;YAC7C,MAAM,kBAAkB,GAAG,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,IAAI,EAAE;gBAC5D,GAAG,EAAE;oBACH,KAAK,EAAE,EAAE;oBACT,MAAM,EAAE,EAAE;oBACV,CAAC,EAAE,MAAM,CAAC,KAAK,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC;oBAC9B,CAAC,EAAE,MAAM,CAAC,MAAM,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC;iBAChC;gBACD,KAAK,EAAE,IAAI,CAAC,cAAc;aAC3B,CAAC,CAAC;YAEH,uCAAuC;YACvC,OAAO;gBACL,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,MAAM,CAAC,KAAK,GAAG,CAAC,GAAG,kBAAkB,CAAC,KAAK,GAAG,CAAC,CAAC;gBACzE,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;gBACvB,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC;gBAC1C,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC;aAC7C,CAAC;QACJ,CAAC,CAAC;QAEF,6CAA6C;QAC7C,eAAU,GAAG,UAAU,IAAI,EAAE,OAAO;YAClC,OAAO,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,EAAE,OAAO,IAAI,EAAE,CAAC,CAAC;QACxD,CAAC,CAAC;QAEF,oBAAe,GAAG;YAChB,OAAO,IAAI,CAAC,aAAa,CAAC;QAC5B,CAAC,CAAC;QAEF,qBAAgB,GAAG;YACjB,OAAO,IAAI,CAAC,cAAc,CAAC;QAC7B,CAAC,CAAC;QA1DA,IAAI,CAAC,aAAa,GAAG,MAAM,CACzB;YACE,UAAU,EAAE,sBAAsB;YAClC,QAAQ,EAAE,iBAAiB;YAC3B,UAAU,EAAE,QAAQ;YACpB,UAAU,EAAE,iBAAiB;SAC9B,EACD,CAAC,MAAM,IAAI,MAAM,CAAC,YAAY,CAAC,IAAI,EAAE,CACtC,CAAC;QAEF,MAAM,QAAQ,GAAG,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;QAE3D,IAAI,CAAC,cAAc,GAAG,MAAM,CAC1B,EAAE,EACF,IAAI,CAAC,aAAa,EAClB;YACE,QAAQ,EAAE,QAAQ;SACnB,EACD,CAAC,MAAM,IAAI,MAAM,CAAC,aAAa,CAAC,IAAI,EAAE,CACvC,CAAC;QAEF,IAAI,CAAC,SAAS,GAAG,IAAI,QAAQ,CAAC;YAC5B,KAAK,EAAE,IAAI,CAAC,aAAa;SAC1B,CAAC,CAAC;IACL,CAAC;CAmCF;AAED,YAAY,CAAC,OAAO,GAAG,CAAC,qBAAqB,CAAC,CAAC"}
@@ -0,0 +1,8 @@
1
+ import CustomRenderer from "./CustomRenderer";
2
+ import TextRenderer from "./TextRenderer";
3
+ export default {
4
+ __init__: ["customRenderer"],
5
+ customRenderer: ["type", CustomRenderer],
6
+ textRenderer: ["type", TextRenderer],
7
+ };
8
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../lib/draw/index.js"],"names":[],"mappings":"AAAA,OAAO,cAAc,MAAM,kBAAkB,CAAC;AAC9C,OAAO,YAAY,MAAM,gBAAgB,CAAC;AAE1C,eAAe;IACb,QAAQ,EAAE,CAAC,gBAAgB,CAAC;IAC5B,cAAc,EAAE,CAAC,MAAM,EAAE,cAAc,CAAC;IACxC,YAAY,EAAE,CAAC,MAAM,EAAE,YAAY,CAAC;CACrC,CAAC"}
@@ -0,0 +1,177 @@
1
+ import { assign } from "min-dash";
2
+ import { is, elementToString } from "../util/Util";
3
+ import { getExternalLabelBounds, getLabel, requiresExternalLabel, } from "../modeling/LabelUtil";
4
+ import { getMid } from "diagram-js/lib/layout/LayoutUtil";
5
+ import { MODELER_DI_PREFIX } from "../util/constants";
6
+ function elementData(semantic, attrs) {
7
+ return assign({
8
+ id: semantic.id,
9
+ type: semantic.$type,
10
+ businessObject: semantic,
11
+ }, attrs);
12
+ }
13
+ function notYetDrawn(translate, semantic, refSemantic, property) {
14
+ return new Error(translate("element {element} referenced by {referenced}#{property} not yet drawn", {
15
+ element: elementToString(refSemantic),
16
+ referenced: elementToString(semantic),
17
+ property: property,
18
+ }));
19
+ }
20
+ /**
21
+ * An importer that adds diagram elements to the canvas
22
+ *
23
+ * @param {EventBus} eventBus
24
+ * @param {Canvas} canvas
25
+ * @param {ElementFactory} elementFactory
26
+ * @param {ElementRegistry} elementRegistry
27
+ * @param {Function} translate
28
+ * @param {TextRenderer} textRenderer
29
+ */
30
+ export default class CustomImporter {
31
+ constructor(eventBus, canvas, elementFactory, elementRegistry, translate, textRenderer) {
32
+ this._eventBus = eventBus;
33
+ this._canvas = canvas;
34
+ this._elementFactory = elementFactory;
35
+ this._elementRegistry = elementRegistry;
36
+ this._translate = translate;
37
+ this._textRenderer = textRenderer;
38
+ }
39
+ /**
40
+ * Add model element (semantic) to the canvas onto the
41
+ * specified parent shape.
42
+ */
43
+ add(semantic, parentElement) {
44
+ const di = semantic.di;
45
+ let element;
46
+ const translate = this._translate;
47
+ let hidden;
48
+ let parentIndex;
49
+ // ROOT ELEMENT
50
+ // handle the special case that we deal with an
51
+ // invisible root element
52
+ if (is(di, `${MODELER_DI_PREFIX}:Plane`)) {
53
+ // add a virtual element (not being drawn)
54
+ element = this._elementFactory.createRoot(elementData(semantic));
55
+ this._canvas.setRootElement(element);
56
+ }
57
+ // SHAPE
58
+ else if (is(di, `${MODELER_DI_PREFIX}:DiagramShape`)) {
59
+ const isFrame = isFrameElement(semantic);
60
+ hidden =
61
+ parentElement && (parentElement.hidden || parentElement.collapsed);
62
+ const bounds = semantic.di.bounds;
63
+ element = this._elementFactory.createShape(elementData(semantic, {
64
+ hidden: hidden,
65
+ x: Math.round(bounds.x),
66
+ y: Math.round(bounds.y),
67
+ width: Math.round(bounds.width),
68
+ height: Math.round(bounds.height),
69
+ isFrame: isFrame,
70
+ }));
71
+ this._canvas.addShape(element, parentElement, parentIndex);
72
+ }
73
+ // CONNECTION
74
+ else if (is(di, `${MODELER_DI_PREFIX}:DiagramEdge`)) {
75
+ const source = this._getSource(semantic);
76
+ const target = this._getTarget(semantic);
77
+ hidden =
78
+ parentElement && (parentElement.hidden || parentElement.collapsed);
79
+ element = this._elementFactory.createConnection(elementData(semantic, {
80
+ hidden: hidden,
81
+ source: source,
82
+ target: target,
83
+ waypoints: getWaypoints(semantic, source, target),
84
+ }));
85
+ this._canvas.addConnection(element, parentElement, 0);
86
+ }
87
+ else {
88
+ throw new Error(translate("unknown di {di} for element {semantic}", {
89
+ di: elementToString(di),
90
+ semantic: elementToString(semantic),
91
+ }));
92
+ }
93
+ // (optional) LABEL
94
+ if (requiresExternalLabel(semantic) && getLabel(semantic)) {
95
+ //TODO this could be done nicer without explicitely setting labelAttribute
96
+ this.addLabel(semantic, element);
97
+ }
98
+ this._eventBus.fire("diagramElement.added", { element: element });
99
+ return element;
100
+ }
101
+ /**
102
+ * add label for an element
103
+ */
104
+ addLabel(semantic, element) {
105
+ const text = getLabel(element);
106
+ let bounds = getExternalLabelBounds(semantic, element);
107
+ if (text || text === "") {
108
+ // get corrected bounds from actual layouted text
109
+ bounds = this._textRenderer.getExternalLabelBounds(bounds, text);
110
+ }
111
+ const label = this._elementFactory.createLabel(elementData(semantic, {
112
+ id: semantic.id + "_label" + "_" + semantic.labelAttribute,
113
+ labelTarget: element,
114
+ labelAttribute: semantic.labelAttribute,
115
+ type: "label",
116
+ hidden: element.hidden || false,
117
+ x: Math.round(bounds.x),
118
+ y: Math.round(bounds.y),
119
+ width: Math.round(bounds.width),
120
+ height: Math.round(bounds.height),
121
+ }));
122
+ return this._canvas.addShape(label, element.parent);
123
+ }
124
+ /**
125
+ * Return the drawn connection end based on the given side.
126
+ *
127
+ * @throws {Error} if the end is not yet drawn
128
+ */
129
+ _getEnd(semantic, side) {
130
+ const refSemantic = semantic[side];
131
+ const element = refSemantic && this._getElement(refSemantic);
132
+ if (element) {
133
+ return element;
134
+ }
135
+ if (refSemantic) {
136
+ throw notYetDrawn(this._translate, semantic, refSemantic, side + "Ref");
137
+ }
138
+ else {
139
+ throw new Error(this._translate("{semantic}#{side} Ref not specified", {
140
+ semantic: elementToString(semantic),
141
+ side: side,
142
+ }));
143
+ }
144
+ }
145
+ _getSource(semantic) {
146
+ return this._getEnd(semantic, "source");
147
+ }
148
+ _getTarget(semantic) {
149
+ return this._getEnd(semantic, "target");
150
+ }
151
+ _getElement(semantic) {
152
+ return this._elementRegistry.get(semantic.id);
153
+ }
154
+ }
155
+ CustomImporter.$inject = [
156
+ "eventBus",
157
+ "canvas",
158
+ "elementFactory",
159
+ "elementRegistry",
160
+ "translate",
161
+ "textRenderer",
162
+ ];
163
+ // helpers //////////
164
+ function getWaypoints(bo, source, target) {
165
+ const waypoints = bo.di.waypoint;
166
+ if (!waypoints || waypoints.length < 2) {
167
+ return [getMid(source), getMid(target)];
168
+ }
169
+ return waypoints.map(function (p) {
170
+ return { x: p.x, y: p.y };
171
+ });
172
+ }
173
+ // Might become relevant if we include hierarchical elements
174
+ function isFrameElement(semantic) {
175
+ return false;
176
+ }
177
+ //# sourceMappingURL=CustomImporter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CustomImporter.js","sourceRoot":"","sources":["../../../lib/import/CustomImporter.js"],"names":[],"mappings":"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"}