kymostudio 0.1.0 → 0.2.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.
- package/README.md +52 -29
- package/dist/bpmn-shapes.d.ts +15 -0
- package/dist/bpmn-shapes.d.ts.map +1 -0
- package/dist/bpmn-shapes.js +344 -0
- package/dist/bpmn-shapes.js.map +1 -0
- package/dist/from-bpmn.d.ts +15 -0
- package/dist/from-bpmn.d.ts.map +1 -0
- package/dist/from-bpmn.js +228 -0
- package/dist/from-bpmn.js.map +1 -0
- package/dist/icons-builtin.d.ts +14 -0
- package/dist/icons-builtin.d.ts.map +1 -0
- package/{src/js → dist}/icons-builtin.js +70 -115
- package/dist/icons-builtin.js.map +1 -0
- package/dist/icons-loader.d.ts +29 -0
- package/dist/icons-loader.d.ts.map +1 -0
- package/dist/icons-loader.js +88 -0
- package/dist/icons-loader.js.map +1 -0
- package/dist/index.d.ts +18 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +18 -0
- package/dist/index.js.map +1 -0
- package/dist/model.d.ts +166 -0
- package/dist/model.d.ts.map +1 -0
- package/dist/model.js +165 -0
- package/dist/model.js.map +1 -0
- package/dist/render.d.ts +27 -0
- package/dist/render.d.ts.map +1 -0
- package/dist/render.js +161 -0
- package/dist/render.js.map +1 -0
- package/dist/xml.d.ts +22 -0
- package/dist/xml.d.ts.map +1 -0
- package/dist/xml.js +116 -0
- package/dist/xml.js.map +1 -0
- package/package.json +29 -11
- package/src/js/icons-loader.js +0 -91
- package/src/js/index.js +0 -13
- package/src/js/model.js +0 -176
|
@@ -0,0 +1,228 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* BPMN 2.0 XML importer — turns a standard `.bpmn` file (Camunda Modeler,
|
|
3
|
+
* bpmn.io, Signavio, …) into a fully-resolved {@link Diagram} that
|
|
4
|
+
* {@link renderSVG} can draw. Geometry comes from the file's Diagram-
|
|
5
|
+
* Interchange section (`BPMNShape`/`dc:Bounds`, `BPMNEdge`/`di:waypoint`),
|
|
6
|
+
* so no layout pass is needed.
|
|
7
|
+
*
|
|
8
|
+
* Equivalent to the Python `from_bpmn.py`; element types map to `bpmn-*`
|
|
9
|
+
* shapes (drawn by `bpmn-shapes.ts`) or, for pools / lanes / expanded
|
|
10
|
+
* sub-processes, to regions.
|
|
11
|
+
*/
|
|
12
|
+
import { makeComponent, makeDiagram, makeEdge, makeRegion, } from "./model.js";
|
|
13
|
+
import { iterAll, parseXml } from "./xml.js";
|
|
14
|
+
const MARGIN = 30;
|
|
15
|
+
const EVENT_SHAPE = {
|
|
16
|
+
startEvent: "bpmn-start",
|
|
17
|
+
endEvent: "bpmn-end",
|
|
18
|
+
intermediateCatchEvent: "bpmn-intermediate",
|
|
19
|
+
intermediateThrowEvent: "bpmn-intermediate",
|
|
20
|
+
boundaryEvent: "bpmn-boundary",
|
|
21
|
+
};
|
|
22
|
+
const EVENT_DEF = {
|
|
23
|
+
messageEventDefinition: "message",
|
|
24
|
+
timerEventDefinition: "timer",
|
|
25
|
+
errorEventDefinition: "error",
|
|
26
|
+
signalEventDefinition: "signal",
|
|
27
|
+
terminateEventDefinition: "terminate",
|
|
28
|
+
escalationEventDefinition: "escalation",
|
|
29
|
+
conditionalEventDefinition: "conditional",
|
|
30
|
+
linkEventDefinition: "link",
|
|
31
|
+
compensateEventDefinition: "compensation",
|
|
32
|
+
cancelEventDefinition: "",
|
|
33
|
+
};
|
|
34
|
+
const TASK_MARKER = {
|
|
35
|
+
task: "", userTask: "user", serviceTask: "service", scriptTask: "script",
|
|
36
|
+
sendTask: "send", receiveTask: "receive", manualTask: "manual",
|
|
37
|
+
businessRuleTask: "rule", callActivity: "",
|
|
38
|
+
};
|
|
39
|
+
const GATEWAY_MARKER = {
|
|
40
|
+
exclusiveGateway: "exclusive", parallelGateway: "parallel",
|
|
41
|
+
inclusiveGateway: "inclusive", eventBasedGateway: "event",
|
|
42
|
+
complexGateway: "complex",
|
|
43
|
+
};
|
|
44
|
+
const SUBPROCESS_TAGS = new Set(["subProcess", "transaction", "adHocSubProcess"]);
|
|
45
|
+
const num = (v) => (v ? parseFloat(v) : 0);
|
|
46
|
+
function bounds(el) {
|
|
47
|
+
for (const ch of el.children) {
|
|
48
|
+
if (ch.tag === "Bounds") {
|
|
49
|
+
return [num(ch.attrs.x), num(ch.attrs.y), num(ch.attrs.width), num(ch.attrs.height)];
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
return null;
|
|
53
|
+
}
|
|
54
|
+
function labelCenter(el) {
|
|
55
|
+
for (const ch of el.children) {
|
|
56
|
+
if (ch.tag === "BPMNLabel") {
|
|
57
|
+
const b = bounds(ch);
|
|
58
|
+
if (b)
|
|
59
|
+
return [b[0] + b[2] / 2, b[1] + b[3] / 2];
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
return null;
|
|
63
|
+
}
|
|
64
|
+
function eventMarker(el) {
|
|
65
|
+
for (const ch of el.children) {
|
|
66
|
+
const m = EVENT_DEF[ch.tag];
|
|
67
|
+
if (m !== undefined)
|
|
68
|
+
return m;
|
|
69
|
+
}
|
|
70
|
+
return "";
|
|
71
|
+
}
|
|
72
|
+
function annotationText(el) {
|
|
73
|
+
for (const ch of el.children)
|
|
74
|
+
if (ch.tag === "text")
|
|
75
|
+
return ch.text.trim();
|
|
76
|
+
return "";
|
|
77
|
+
}
|
|
78
|
+
/** (shape, marker) for a Component, or null when the element is a Region. */
|
|
79
|
+
function classifyNode(tag, el, di) {
|
|
80
|
+
if (tag in EVENT_SHAPE)
|
|
81
|
+
return [EVENT_SHAPE[tag], eventMarker(el)];
|
|
82
|
+
if (tag in TASK_MARKER)
|
|
83
|
+
return ["bpmn-task", TASK_MARKER[tag]];
|
|
84
|
+
if (tag in GATEWAY_MARKER) {
|
|
85
|
+
let marker = GATEWAY_MARKER[tag];
|
|
86
|
+
// exclusive X only when DI opts in (bpmn.io default leaves it plain)
|
|
87
|
+
if (tag === "exclusiveGateway" && di.attrs.isMarkerVisible !== "true")
|
|
88
|
+
marker = "";
|
|
89
|
+
return ["bpmn-gateway", marker];
|
|
90
|
+
}
|
|
91
|
+
if (tag === "dataObjectReference" || tag === "dataInput" || tag === "dataOutput")
|
|
92
|
+
return ["bpmn-data-object", ""];
|
|
93
|
+
if (tag === "dataStoreReference")
|
|
94
|
+
return ["bpmn-data-store", ""];
|
|
95
|
+
if (tag === "textAnnotation")
|
|
96
|
+
return ["bpmn-annotation", ""];
|
|
97
|
+
if (SUBPROCESS_TAGS.has(tag)) {
|
|
98
|
+
const b = bounds(di);
|
|
99
|
+
const exp = di.attrs.isExpanded;
|
|
100
|
+
const expanded = exp === "true" || (exp === undefined && b[2] > 130 && b[3] > 90);
|
|
101
|
+
if (expanded)
|
|
102
|
+
return null; // → Region
|
|
103
|
+
return ["bpmn-subprocess", ""];
|
|
104
|
+
}
|
|
105
|
+
return null;
|
|
106
|
+
}
|
|
107
|
+
function flowKind(tag, el, byId) {
|
|
108
|
+
if (tag === "messageFlow")
|
|
109
|
+
return "message";
|
|
110
|
+
if (tag === "association" || tag === "dataInputAssociation" || tag === "dataOutputAssociation")
|
|
111
|
+
return "association";
|
|
112
|
+
if (tag === "sequenceFlow" && el) {
|
|
113
|
+
const src = byId.get(el.attrs.sourceRef ?? "");
|
|
114
|
+
if (src && src.attrs.default === el.attrs.id)
|
|
115
|
+
return "default";
|
|
116
|
+
const srcIsGateway = src ? src.tag.endsWith("Gateway") : false;
|
|
117
|
+
if (!srcIsGateway && el.children.some((c) => c.tag === "conditionExpression"))
|
|
118
|
+
return "conditional";
|
|
119
|
+
}
|
|
120
|
+
return "sequence";
|
|
121
|
+
}
|
|
122
|
+
/** Parse BPMN 2.0 XML into a resolved Diagram. */
|
|
123
|
+
export function parseBpmn(xmlText) {
|
|
124
|
+
const root = parseXml(xmlText);
|
|
125
|
+
const byId = new Map();
|
|
126
|
+
const diShapes = [];
|
|
127
|
+
const diEdges = [];
|
|
128
|
+
for (const el of iterAll(root)) {
|
|
129
|
+
const id = el.attrs.id;
|
|
130
|
+
if (id && !byId.has(id))
|
|
131
|
+
byId.set(id, el);
|
|
132
|
+
if (el.tag === "BPMNShape")
|
|
133
|
+
diShapes.push(el);
|
|
134
|
+
else if (el.tag === "BPMNEdge")
|
|
135
|
+
diEdges.push(el);
|
|
136
|
+
}
|
|
137
|
+
const components = [];
|
|
138
|
+
const regions = [];
|
|
139
|
+
const edges = [];
|
|
140
|
+
const xs = [];
|
|
141
|
+
const ys = [];
|
|
142
|
+
const track = (x, y, w = 0, h = 0) => { xs.push(x, x + w); ys.push(y, y + h); };
|
|
143
|
+
// ── shapes → components / regions ───────────────────────────────────
|
|
144
|
+
for (const shape of diShapes) {
|
|
145
|
+
const ref = shape.attrs.bpmnElement;
|
|
146
|
+
const el = ref ? byId.get(ref) : undefined;
|
|
147
|
+
const b = bounds(shape);
|
|
148
|
+
if (!el || !b)
|
|
149
|
+
continue;
|
|
150
|
+
const [x, y, w, h] = b;
|
|
151
|
+
track(x, y, w, h);
|
|
152
|
+
const tag = el.tag;
|
|
153
|
+
const name = (el.attrs.name ?? "").trim();
|
|
154
|
+
const bnd = [Math.round(x), Math.round(y), Math.round(w), Math.round(h)];
|
|
155
|
+
if (tag === "participant") {
|
|
156
|
+
regions.push(makeRegion({ id: ref, label: name, bounds: bnd, style: "pool" }));
|
|
157
|
+
continue;
|
|
158
|
+
}
|
|
159
|
+
if (tag === "lane") {
|
|
160
|
+
regions.push(makeRegion({ id: ref, label: name, bounds: bnd, style: "lane" }));
|
|
161
|
+
continue;
|
|
162
|
+
}
|
|
163
|
+
if (tag === "group") {
|
|
164
|
+
regions.push(makeRegion({ id: ref, label: name, bounds: bnd, style: "outer" }));
|
|
165
|
+
continue;
|
|
166
|
+
}
|
|
167
|
+
const cls = classifyNode(tag, el, shape);
|
|
168
|
+
if (cls === null && SUBPROCESS_TAGS.has(tag)) {
|
|
169
|
+
regions.push(makeRegion({ id: ref, label: name, bounds: bnd, style: "inner", labelPosition: "inside" }));
|
|
170
|
+
continue;
|
|
171
|
+
}
|
|
172
|
+
if (cls === null)
|
|
173
|
+
continue;
|
|
174
|
+
const [cshape, marker] = cls;
|
|
175
|
+
components.push(makeComponent({
|
|
176
|
+
id: ref, name: tag === "textAnnotation" ? annotationText(el) : name,
|
|
177
|
+
icon: marker, shape: cshape, accent: "blue",
|
|
178
|
+
pos: [Math.round(x + w / 2), Math.round(y + h / 2)],
|
|
179
|
+
size: [Math.round(w), Math.round(h)],
|
|
180
|
+
}));
|
|
181
|
+
}
|
|
182
|
+
// ── edges → flows ───────────────────────────────────────────────────
|
|
183
|
+
for (const de of diEdges) {
|
|
184
|
+
const ref = de.attrs.bpmnElement;
|
|
185
|
+
const el = ref ? byId.get(ref) : undefined;
|
|
186
|
+
const wps = de.children
|
|
187
|
+
.filter((c) => c.tag === "waypoint")
|
|
188
|
+
.map((wp) => [Math.round(num(wp.attrs.x)), Math.round(num(wp.attrs.y))]);
|
|
189
|
+
if (wps.length < 2)
|
|
190
|
+
continue;
|
|
191
|
+
for (const [px, py] of wps)
|
|
192
|
+
track(px, py);
|
|
193
|
+
const tag = el ? el.tag : "sequenceFlow";
|
|
194
|
+
const lc = labelCenter(de);
|
|
195
|
+
edges.push(makeEdge({
|
|
196
|
+
src: (el?.attrs.sourceRef ?? ""), dst: (el?.attrs.targetRef ?? ""),
|
|
197
|
+
label: (el?.attrs.name ?? "").trim(), points: wps, bpmnFlow: flowKind(tag, el, byId),
|
|
198
|
+
labelPos: lc ? [Math.round(lc[0]), Math.round(lc[1])] : null,
|
|
199
|
+
}));
|
|
200
|
+
}
|
|
201
|
+
// ── normalise into a tidy top-left-anchored canvas ──────────────────
|
|
202
|
+
if (xs.length === 0) {
|
|
203
|
+
xs.push(0);
|
|
204
|
+
ys.push(0);
|
|
205
|
+
}
|
|
206
|
+
const minX = Math.min(...xs), minY = Math.min(...ys);
|
|
207
|
+
const dx = Math.round(MARGIN - minX), dy = Math.round(MARGIN - minY);
|
|
208
|
+
const width = Math.round(Math.max(...xs) - minX + 2 * MARGIN);
|
|
209
|
+
const height = Math.round(Math.max(...ys) - minY + 2 * MARGIN);
|
|
210
|
+
for (const c of components)
|
|
211
|
+
c.pos = [c.pos[0] + dx, c.pos[1] + dy];
|
|
212
|
+
for (const r of regions) {
|
|
213
|
+
const [bx, by, bw, bh] = r.bounds;
|
|
214
|
+
r.bounds = [bx + dx, by + dy, bw, bh];
|
|
215
|
+
}
|
|
216
|
+
for (const e of edges) {
|
|
217
|
+
e.points = (e.points ?? []).map(([px, py]) => [px + dx, py + dy]);
|
|
218
|
+
if (e.labelPos)
|
|
219
|
+
e.labelPos = [e.labelPos[0] + dx, e.labelPos[1] + dy];
|
|
220
|
+
}
|
|
221
|
+
// pools first (drawn underneath), then lanes, then containers
|
|
222
|
+
regions.sort((a, b) => rank(a.style) - rank(b.style));
|
|
223
|
+
return makeDiagram({ width, height, components, regions, edges });
|
|
224
|
+
}
|
|
225
|
+
function rank(style) {
|
|
226
|
+
return style === "pool" ? 0 : style === "lane" ? 1 : 2;
|
|
227
|
+
}
|
|
228
|
+
//# sourceMappingURL=from-bpmn.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"from-bpmn.js","sourceRoot":"","sources":["../src/from-bpmn.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Hand-coded SVG icon library — JS mirror of `packages/python/src/kymo/icons.py`.
|
|
3
|
+
*
|
|
4
|
+
* Each entry in `ICONS` is an SVG fragment centred at (0, 0). The
|
|
5
|
+
* renderer wraps it in a `<g transform="translate(cx, cy)">`. Helper
|
|
6
|
+
* functions (`_cube`, `_box`, `_awsTile`, `_halo`, `_stepBadge`)
|
|
7
|
+
* generate consistent shells around inner glyphs, mirroring the
|
|
8
|
+
* Python originals 1:1.
|
|
9
|
+
*
|
|
10
|
+
* The file-backed icons (icons/<provider>/<name>.png) live in
|
|
11
|
+
* `icons-loader.js`.
|
|
12
|
+
*/
|
|
13
|
+
export declare const ICONS: Record<string, string>;
|
|
14
|
+
//# sourceMappingURL=icons-builtin.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"icons-builtin.d.ts","sourceRoot":"","sources":["../src/icons-builtin.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAgWH,eAAO,MAAM,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAmCxC,CAAC"}
|