kymostudio 0.2.4 → 0.2.6
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 +20 -0
- package/dist/alignment.d.ts +18 -0
- package/dist/alignment.d.ts.map +1 -0
- package/dist/alignment.js +436 -0
- package/dist/alignment.js.map +1 -0
- package/dist/dsl.d.ts +38 -0
- package/dist/dsl.d.ts.map +1 -0
- package/dist/dsl.js +538 -0
- package/dist/dsl.js.map +1 -0
- package/dist/index.d.ts +6 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -0
- package/dist/index.js.map +1 -1
- package/dist/layout.d.ts +57 -0
- package/dist/layout.d.ts.map +1 -0
- package/dist/layout.js +393 -0
- package/dist/layout.js.map +1 -0
- package/dist/render.d.ts.map +1 -1
- package/dist/render.js +14 -1
- package/dist/render.js.map +1 -1
- package/package.json +1 -1
package/dist/layout.d.ts
ADDED
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Auto-layout — JS port of `packages/python/src/kymo/layout.py`.
|
|
3
|
+
*
|
|
4
|
+
* Two layout strategies, both writing component `pos` (and region `bounds`)
|
|
5
|
+
* in place:
|
|
6
|
+
* - `layout()` — grid mode: pack components into a region/row grid so rows
|
|
7
|
+
* line up across regions (cross-region same-row edges run flat).
|
|
8
|
+
* - `applyLayoutTree()` — Figma-style auto-layout: each frame hugs its
|
|
9
|
+
* contents, children flow along the frame axis with a fixed gap, cross
|
|
10
|
+
* axis centre-aligned. `minimizeCrossings()` barycenter-reorders children
|
|
11
|
+
* first so siblings land in a crossing-minimised order.
|
|
12
|
+
*
|
|
13
|
+
* This is an independent TypeScript implementation kept at parity with the
|
|
14
|
+
* Python algorithm — not a transpile. Output need not be byte-identical to
|
|
15
|
+
* Python's (the two renderers differ); it must produce equivalent geometry.
|
|
16
|
+
*/
|
|
17
|
+
import { type Component, type Diagram, type Point } from "./model.js";
|
|
18
|
+
export type LayoutNode = {
|
|
19
|
+
t: "id";
|
|
20
|
+
id: string;
|
|
21
|
+
} | {
|
|
22
|
+
t: "group";
|
|
23
|
+
dir: "horizontal" | "vertical";
|
|
24
|
+
children: LayoutNode[];
|
|
25
|
+
padding?: Point;
|
|
26
|
+
};
|
|
27
|
+
export declare function idNode(id: string): LayoutNode;
|
|
28
|
+
export declare function groupNode(dir: "horizontal" | "vertical", children: LayoutNode[], padding?: Point): LayoutNode;
|
|
29
|
+
export interface RegionLayout {
|
|
30
|
+
[regionId: string]: string[][];
|
|
31
|
+
}
|
|
32
|
+
export interface ExternalSpec {
|
|
33
|
+
[componentId: string]: {
|
|
34
|
+
above?: string;
|
|
35
|
+
gap?: number;
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
export interface Cell {
|
|
39
|
+
w: number;
|
|
40
|
+
h: number;
|
|
41
|
+
}
|
|
42
|
+
export declare function cellSize(c: Component, hPad?: number, vPad?: number): Cell;
|
|
43
|
+
export interface LayoutOptions {
|
|
44
|
+
regionGap?: number;
|
|
45
|
+
rowGap?: number;
|
|
46
|
+
cellGap?: number;
|
|
47
|
+
regionPaddingX?: number;
|
|
48
|
+
regionPaddingY?: number;
|
|
49
|
+
canvasMargin?: number;
|
|
50
|
+
}
|
|
51
|
+
export declare function layout(diagram: Diagram, regionLayout: RegionLayout, external?: ExternalSpec | null, opts?: LayoutOptions): void;
|
|
52
|
+
export declare function applyLayoutTree(byId: Map<string, Component>, tree: LayoutNode, opts?: {
|
|
53
|
+
gap?: number;
|
|
54
|
+
origin?: Point;
|
|
55
|
+
}): Point;
|
|
56
|
+
export declare function minimizeCrossings(tree: LayoutNode, edges: Array<[string, string]>, maxSweeps?: number): void;
|
|
57
|
+
//# sourceMappingURL=layout.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"layout.d.ts","sourceRoot":"","sources":["../src/layout.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AACH,OAAO,EAES,KAAK,SAAS,EAAE,KAAK,OAAO,EAAa,KAAK,KAAK,EAClE,MAAM,YAAY,CAAC;AAMpB,MAAM,MAAM,UAAU,GAClB;IAAE,CAAC,EAAE,IAAI,CAAC;IAAC,EAAE,EAAE,MAAM,CAAA;CAAE,GACvB;IAAE,CAAC,EAAE,OAAO,CAAC;IAAC,GAAG,EAAE,YAAY,GAAG,UAAU,CAAC;IAAC,QAAQ,EAAE,UAAU,EAAE,CAAC;IAAC,OAAO,CAAC,EAAE,KAAK,CAAA;CAAE,CAAC;AAE5F,wBAAgB,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,UAAU,CAE7C;AACD,wBAAgB,SAAS,CACvB,GAAG,EAAE,YAAY,GAAG,UAAU,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAE,OAAO,CAAC,EAAE,KAAK,GACtE,UAAU,CAEZ;AAED,MAAM,WAAW,YAAY;IAC3B,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,EAAE,EAAE,CAAC;CAChC;AACD,MAAM,WAAW,YAAY;IAC3B,CAAC,WAAW,EAAE,MAAM,GAAG;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,GAAG,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CACzD;AAyBD,MAAM,WAAW,IAAI;IACnB,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;CACX;AAED,wBAAgB,QAAQ,CAAC,CAAC,EAAE,SAAS,EAAE,IAAI,SAAI,EAAE,IAAI,SAAK,GAAG,IAAI,CAOhE;AAGD,MAAM,WAAW,aAAa;IAC5B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,wBAAgB,MAAM,CACpB,OAAO,EAAE,OAAO,EAChB,YAAY,EAAE,YAAY,EAC1B,QAAQ,GAAE,YAAY,GAAG,IAAW,EACpC,IAAI,GAAE,aAAkB,GACvB,IAAI,CA4HN;AAGD,wBAAgB,eAAe,CAC7B,IAAI,EAAE,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,EAC5B,IAAI,EAAE,UAAU,EAChB,IAAI,GAAE;IAAE,GAAG,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,KAAK,CAAA;CAAO,GAC1C,KAAK,CA4EP;AAUD,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,EAAE,SAAS,SAAK,GAC/D,IAAI,CAaN"}
|
package/dist/layout.js
ADDED
|
@@ -0,0 +1,393 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Auto-layout — JS port of `packages/python/src/kymo/layout.py`.
|
|
3
|
+
*
|
|
4
|
+
* Two layout strategies, both writing component `pos` (and region `bounds`)
|
|
5
|
+
* in place:
|
|
6
|
+
* - `layout()` — grid mode: pack components into a region/row grid so rows
|
|
7
|
+
* line up across regions (cross-region same-row edges run flat).
|
|
8
|
+
* - `applyLayoutTree()` — Figma-style auto-layout: each frame hugs its
|
|
9
|
+
* contents, children flow along the frame axis with a fixed gap, cross
|
|
10
|
+
* axis centre-aligned. `minimizeCrossings()` barycenter-reorders children
|
|
11
|
+
* first so siblings land in a crossing-minimised order.
|
|
12
|
+
*
|
|
13
|
+
* This is an independent TypeScript implementation kept at parity with the
|
|
14
|
+
* Python algorithm — not a transpile. Output need not be byte-identical to
|
|
15
|
+
* Python's (the two renderers differ); it must produce equivalent geometry.
|
|
16
|
+
*/
|
|
17
|
+
import { LABEL_HEIGHT, SHAPE_HALF, componentHalf, anchor, resolveAnchors, getComponent, } from "./model.js";
|
|
18
|
+
export function idNode(id) {
|
|
19
|
+
return { t: "id", id };
|
|
20
|
+
}
|
|
21
|
+
export function groupNode(dir, children, padding) {
|
|
22
|
+
return padding ? { t: "group", dir, children, padding } : { t: "group", dir, children };
|
|
23
|
+
}
|
|
24
|
+
// ── Sizing ─────────────────────────────────────────────────────────────
|
|
25
|
+
const CHAR_W_NAME = 7.6; // 14px component name
|
|
26
|
+
const CHAR_W_SUB = 6.4; // 11.5px subtitle
|
|
27
|
+
const LABEL_GAP = 6;
|
|
28
|
+
const LINE_HEIGHT = 18;
|
|
29
|
+
// Derive icon (w, h) from SHAPE_HALF so new shapes don't drift; annotation
|
|
30
|
+
// keeps a (40, 32) label budget though SHAPE_HALF treats it as (0, 0).
|
|
31
|
+
const ICON_DIMS = (() => {
|
|
32
|
+
const out = {};
|
|
33
|
+
for (const [shape, [hw, hh]] of Object.entries(SHAPE_HALF))
|
|
34
|
+
out[shape] = [2 * hw, 2 * hh];
|
|
35
|
+
out["annotation"] = [40, 32];
|
|
36
|
+
return out;
|
|
37
|
+
})();
|
|
38
|
+
function iconDims(shape) {
|
|
39
|
+
return ICON_DIMS[shape] ?? [0, 0];
|
|
40
|
+
}
|
|
41
|
+
function textW(s, charW) {
|
|
42
|
+
return Math.trunc(s.length * charW);
|
|
43
|
+
}
|
|
44
|
+
export function cellSize(c, hPad = 8, vPad = 10) {
|
|
45
|
+
const [iw, ih] = iconDims(c.shape);
|
|
46
|
+
const nameW = textW(c.name, CHAR_W_NAME);
|
|
47
|
+
const subW = textW(c.subtitle, CHAR_W_SUB);
|
|
48
|
+
const labelW = Math.max(nameW, subW);
|
|
49
|
+
const labelH = LABEL_GAP + LINE_HEIGHT * 2;
|
|
50
|
+
return { w: Math.max(iw, labelW) + hPad * 2, h: ih + labelH + vPad };
|
|
51
|
+
}
|
|
52
|
+
export function layout(diagram, regionLayout, external = null, opts = {}) {
|
|
53
|
+
const regionGap = opts.regionGap ?? 36;
|
|
54
|
+
const rowGap = opts.rowGap ?? 28;
|
|
55
|
+
const cellGap = opts.cellGap ?? 18;
|
|
56
|
+
const regionPaddingX = opts.regionPaddingX ?? 18;
|
|
57
|
+
const regionPaddingY = opts.regionPaddingY ?? 22;
|
|
58
|
+
const canvasMargin = opts.canvasMargin ?? 18;
|
|
59
|
+
const sizes = new Map(diagram.components.map((c) => [c.id, cellSize(c)]));
|
|
60
|
+
const regionIds = Object.keys(regionLayout);
|
|
61
|
+
// Per-row height across all regions → consistent Y for cross-region rows.
|
|
62
|
+
const maxRows = Math.max(...regionIds.map((rid) => regionLayout[rid].length));
|
|
63
|
+
const rowHeights = [];
|
|
64
|
+
for (let i = 0; i < maxRows; i++) {
|
|
65
|
+
let h = 0;
|
|
66
|
+
for (const rid of regionIds) {
|
|
67
|
+
const rows = regionLayout[rid];
|
|
68
|
+
if (i < rows.length) {
|
|
69
|
+
for (const cid of rows[i]) {
|
|
70
|
+
const s = sizes.get(cid);
|
|
71
|
+
if (s)
|
|
72
|
+
h = Math.max(h, s.h);
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
rowHeights.push(h || 100);
|
|
77
|
+
}
|
|
78
|
+
// Per-region width = max(row width).
|
|
79
|
+
const regionWidths = new Map();
|
|
80
|
+
for (const rid of regionIds) {
|
|
81
|
+
let w = 0;
|
|
82
|
+
for (const row of regionLayout[rid]) {
|
|
83
|
+
const rowW = row.reduce((acc, cid) => acc + (sizes.get(cid)?.w ?? 0), 0)
|
|
84
|
+
+ (row.length - 1) * cellGap;
|
|
85
|
+
w = Math.max(w, rowW);
|
|
86
|
+
}
|
|
87
|
+
regionWidths.set(rid, w + regionPaddingX * 2);
|
|
88
|
+
}
|
|
89
|
+
// External components reserve vertical space above the first row.
|
|
90
|
+
const ext = external ?? {};
|
|
91
|
+
let extAboveHeight = 0;
|
|
92
|
+
for (const [eid, spec] of Object.entries(ext)) {
|
|
93
|
+
if (spec.above && sizes.has(eid)) {
|
|
94
|
+
extAboveHeight = Math.max(extAboveHeight, sizes.get(eid).h + (spec.gap ?? 60));
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
// Row centre-Y, cumulative.
|
|
98
|
+
const rowYs = [];
|
|
99
|
+
let y = canvasMargin + extAboveHeight;
|
|
100
|
+
for (const h of rowHeights) {
|
|
101
|
+
y += Math.floor(h / 2);
|
|
102
|
+
rowYs.push(y);
|
|
103
|
+
y += Math.floor(h / 2) + rowGap;
|
|
104
|
+
}
|
|
105
|
+
// Region centre-X, cumulative.
|
|
106
|
+
const regionXs = new Map();
|
|
107
|
+
let x = canvasMargin;
|
|
108
|
+
for (const rid of regionIds) {
|
|
109
|
+
const w = regionWidths.get(rid);
|
|
110
|
+
x += Math.floor(w / 2);
|
|
111
|
+
regionXs.set(rid, x);
|
|
112
|
+
x += Math.floor(w / 2) + regionGap;
|
|
113
|
+
}
|
|
114
|
+
const canvasRight = x - regionGap + canvasMargin;
|
|
115
|
+
// Place each component at its grid cell.
|
|
116
|
+
for (const rid of regionIds) {
|
|
117
|
+
const rx = regionXs.get(rid);
|
|
118
|
+
const rows = regionLayout[rid];
|
|
119
|
+
for (let i = 0; i < rows.length; i++) {
|
|
120
|
+
const row = rows[i];
|
|
121
|
+
const ry = rowYs[i];
|
|
122
|
+
const totalW = row.reduce((acc, cid) => acc + (sizes.get(cid)?.w ?? 0), 0)
|
|
123
|
+
+ (row.length - 1) * cellGap;
|
|
124
|
+
let cursor = rx - Math.floor(totalW / 2);
|
|
125
|
+
for (const cid of row) {
|
|
126
|
+
const cw = sizes.get(cid)?.w ?? 0;
|
|
127
|
+
getComponent(diagram, cid).pos = [cursor + Math.floor(cw / 2), ry];
|
|
128
|
+
cursor += cw + cellGap;
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
// Place external (above a target).
|
|
133
|
+
for (const [eid, spec] of Object.entries(ext)) {
|
|
134
|
+
if (spec.above) {
|
|
135
|
+
const target = getComponent(diagram, spec.above);
|
|
136
|
+
const gap = spec.gap ?? 60;
|
|
137
|
+
const targetTop = target.pos[1] - Math.floor((sizes.get(spec.above)?.h ?? 0) / 2);
|
|
138
|
+
getComponent(diagram, eid).pos = [
|
|
139
|
+
target.pos[0],
|
|
140
|
+
targetTop - gap - Math.floor((sizes.get(eid)?.h ?? 0) / 2),
|
|
141
|
+
];
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
// Region bounds — hug the cells with region padding.
|
|
145
|
+
for (const rid of regionIds) {
|
|
146
|
+
const rx = regionXs.get(rid);
|
|
147
|
+
const rw = regionWidths.get(rid);
|
|
148
|
+
const rows = regionLayout[rid];
|
|
149
|
+
const n = rows.length;
|
|
150
|
+
const top = rowYs[0] - Math.floor(rowHeights[0] / 2) - regionPaddingY;
|
|
151
|
+
const bot = rowYs[n - 1] + Math.floor(rowHeights[n - 1] / 2) + regionPaddingY;
|
|
152
|
+
for (const r of diagram.regions) {
|
|
153
|
+
if (r.id === rid) {
|
|
154
|
+
r.bounds = [rx - Math.floor(rw / 2), top, rw, bot - top];
|
|
155
|
+
break;
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
// Auto-route edges that asked for it.
|
|
160
|
+
routeEdges(diagram, rowYs);
|
|
161
|
+
// Final canvas — fit content + margin.
|
|
162
|
+
diagram.width = canvasRight;
|
|
163
|
+
diagram.height = Math.max(...diagram.components.map((c) => c.pos[1] + Math.floor((sizes.get(c.id)?.h ?? 0) / 2))) + canvasMargin;
|
|
164
|
+
}
|
|
165
|
+
// ── Anonymous layout-tree (Figma-style auto-layout) ────────────────────
|
|
166
|
+
export function applyLayoutTree(byId, tree, opts = {}) {
|
|
167
|
+
const gap = opts.gap ?? 40;
|
|
168
|
+
const origin = opts.origin ?? [0, 0];
|
|
169
|
+
const lookup = (cid) => {
|
|
170
|
+
const c = byId.get(cid);
|
|
171
|
+
if (!c)
|
|
172
|
+
throw new Error(`layout tree references unknown component ${JSON.stringify(cid)}`);
|
|
173
|
+
return c;
|
|
174
|
+
};
|
|
175
|
+
const cell = (c) => {
|
|
176
|
+
const [iw, ih] = iconDims(c.shape);
|
|
177
|
+
const lh = (c.name || c.subtitle) ? (LABEL_HEIGHT[c.shape] ?? 0) : 0;
|
|
178
|
+
return [iw, ih + lh];
|
|
179
|
+
};
|
|
180
|
+
const padOf = (node) => (node.t === "group" && node.padding) ? node.padding : [0, 0];
|
|
181
|
+
const effectiveGap = (dir, sizes) => {
|
|
182
|
+
const cross = dir === "horizontal"
|
|
183
|
+
? Math.max(...sizes.map((s) => s[1]))
|
|
184
|
+
: Math.max(...sizes.map((s) => s[0]));
|
|
185
|
+
return Math.max(gap, Math.floor(cross / 4));
|
|
186
|
+
};
|
|
187
|
+
const measure = (node) => {
|
|
188
|
+
if (node.t === "id")
|
|
189
|
+
return cell(lookup(node.id));
|
|
190
|
+
const [px, py] = padOf(node);
|
|
191
|
+
const sizes = node.children.map(measure);
|
|
192
|
+
const eg = effectiveGap(node.dir, sizes);
|
|
193
|
+
if (node.dir === "horizontal") {
|
|
194
|
+
return [
|
|
195
|
+
sizes.reduce((a, s) => a + s[0], 0) + (sizes.length - 1) * eg + 2 * px,
|
|
196
|
+
Math.max(...sizes.map((s) => s[1])) + 2 * py,
|
|
197
|
+
];
|
|
198
|
+
}
|
|
199
|
+
return [
|
|
200
|
+
Math.max(...sizes.map((s) => s[0])) + 2 * px,
|
|
201
|
+
sizes.reduce((a, s) => a + s[1], 0) + (sizes.length - 1) * eg + 2 * py,
|
|
202
|
+
];
|
|
203
|
+
};
|
|
204
|
+
const place = (node, cx, cy) => {
|
|
205
|
+
if (node.t === "id") {
|
|
206
|
+
const c = lookup(node.id);
|
|
207
|
+
const lh = (c.name || c.subtitle) ? (LABEL_HEIGHT[c.shape] ?? 0) : 0;
|
|
208
|
+
c.pos = [cx, cy - Math.floor(lh / 2)]; // cell center → icon center
|
|
209
|
+
return;
|
|
210
|
+
}
|
|
211
|
+
const sizes = node.children.map(measure);
|
|
212
|
+
const eg = effectiveGap(node.dir, sizes);
|
|
213
|
+
const [w, h] = measure(node);
|
|
214
|
+
const [px, py] = padOf(node);
|
|
215
|
+
const innerW = w - 2 * px;
|
|
216
|
+
const innerH = h - 2 * py;
|
|
217
|
+
if (node.dir === "horizontal") {
|
|
218
|
+
let cursor = cx - Math.floor(innerW / 2);
|
|
219
|
+
node.children.forEach((ch, i) => {
|
|
220
|
+
const cw = sizes[i][0];
|
|
221
|
+
place(ch, cursor + Math.floor(cw / 2), cy);
|
|
222
|
+
cursor += cw + eg;
|
|
223
|
+
});
|
|
224
|
+
}
|
|
225
|
+
else {
|
|
226
|
+
let cursor = cy - Math.floor(innerH / 2);
|
|
227
|
+
node.children.forEach((ch, i) => {
|
|
228
|
+
const chH = sizes[i][1];
|
|
229
|
+
place(ch, cx, cursor + Math.floor(chH / 2));
|
|
230
|
+
cursor += chH + eg;
|
|
231
|
+
});
|
|
232
|
+
}
|
|
233
|
+
};
|
|
234
|
+
const [w, h] = measure(tree);
|
|
235
|
+
place(tree, origin[0] + Math.floor(w / 2), origin[1] + Math.floor(h / 2));
|
|
236
|
+
return [w, h];
|
|
237
|
+
}
|
|
238
|
+
// ── Crossing minimisation (barycenter heuristic) ────────────────────────
|
|
239
|
+
function collectLeavesOrdered(node) {
|
|
240
|
+
if (node.t === "id")
|
|
241
|
+
return [node.id];
|
|
242
|
+
const out = [];
|
|
243
|
+
for (const ch of node.children)
|
|
244
|
+
out.push(...collectLeavesOrdered(ch));
|
|
245
|
+
return out;
|
|
246
|
+
}
|
|
247
|
+
export function minimizeCrossings(tree, edges, maxSweeps = 24) {
|
|
248
|
+
if (tree.t !== "group")
|
|
249
|
+
return;
|
|
250
|
+
const leafAdj = new Map();
|
|
251
|
+
const add = (a, b) => {
|
|
252
|
+
if (!leafAdj.has(a))
|
|
253
|
+
leafAdj.set(a, new Set());
|
|
254
|
+
leafAdj.get(a).add(b);
|
|
255
|
+
};
|
|
256
|
+
for (const [s, d] of edges) {
|
|
257
|
+
add(s, d);
|
|
258
|
+
add(d, s);
|
|
259
|
+
}
|
|
260
|
+
for (let i = 0; i < maxSweeps; i++) {
|
|
261
|
+
if (!sweepNode(tree, leafAdj))
|
|
262
|
+
break;
|
|
263
|
+
}
|
|
264
|
+
}
|
|
265
|
+
function sweepNode(node, leafAdj) {
|
|
266
|
+
if (node.t !== "group")
|
|
267
|
+
return false;
|
|
268
|
+
let changed = false;
|
|
269
|
+
for (const ch of node.children) {
|
|
270
|
+
if (sweepNode(ch, leafAdj))
|
|
271
|
+
changed = true;
|
|
272
|
+
}
|
|
273
|
+
const sibs = node.children;
|
|
274
|
+
const n = sibs.length;
|
|
275
|
+
if (n < 2)
|
|
276
|
+
return changed;
|
|
277
|
+
for (let i = 0; i < n - 1; i++) {
|
|
278
|
+
if (barycenterReorder(sibs, i, i + 1, leafAdj))
|
|
279
|
+
changed = true;
|
|
280
|
+
}
|
|
281
|
+
for (let i = n - 1; i > 0; i--) {
|
|
282
|
+
if (barycenterReorder(sibs, i, i - 1, leafAdj))
|
|
283
|
+
changed = true;
|
|
284
|
+
}
|
|
285
|
+
return changed;
|
|
286
|
+
}
|
|
287
|
+
function barycenterReorder(sibs, fixedIdx, freeIdx, adj) {
|
|
288
|
+
const free = sibs[freeIdx];
|
|
289
|
+
if (free.t !== "group")
|
|
290
|
+
return false;
|
|
291
|
+
const fixedLeaves = collectLeavesOrdered(sibs[fixedIdx]);
|
|
292
|
+
const fixedPos = new Map(fixedLeaves.map((leaf, idx) => [leaf, idx]));
|
|
293
|
+
const keyed = free.children.map((ch, chIdx) => {
|
|
294
|
+
const positions = [];
|
|
295
|
+
for (const leaf of collectLeavesOrdered(ch)) {
|
|
296
|
+
for (const adjLeaf of adj.get(leaf) ?? []) {
|
|
297
|
+
if (fixedPos.has(adjLeaf))
|
|
298
|
+
positions.push(fixedPos.get(adjLeaf));
|
|
299
|
+
}
|
|
300
|
+
}
|
|
301
|
+
const bary = positions.length
|
|
302
|
+
? positions.reduce((a, b) => a + b, 0) / positions.length
|
|
303
|
+
: chIdx;
|
|
304
|
+
return { bary, chIdx, ch };
|
|
305
|
+
});
|
|
306
|
+
keyed.sort((a, b) => (a.bary - b.bary) || (a.chIdx - b.chIdx)); // stable on ties
|
|
307
|
+
const newChildren = keyed.map((t) => t.ch);
|
|
308
|
+
if (newChildren.length === free.children.length
|
|
309
|
+
&& newChildren.every((c, i) => c === free.children[i])) {
|
|
310
|
+
return false;
|
|
311
|
+
}
|
|
312
|
+
free.children = newChildren;
|
|
313
|
+
return true;
|
|
314
|
+
}
|
|
315
|
+
// ── Edge routing helpers ───────────────────────────────────────────────
|
|
316
|
+
function routeEdges(diagram, rowYs) {
|
|
317
|
+
for (const e of diagram.edges) {
|
|
318
|
+
if (e.via.length)
|
|
319
|
+
continue; // respect explicit waypoints
|
|
320
|
+
if (e.route === "over")
|
|
321
|
+
e.via = routeOver(diagram, e, rowYs);
|
|
322
|
+
else if (e.route === "under")
|
|
323
|
+
e.via = routeUnder(diagram, e, rowYs);
|
|
324
|
+
// "auto" → no via; the renderer's auto-elbow handles it.
|
|
325
|
+
}
|
|
326
|
+
}
|
|
327
|
+
function nearestRow(rowYs, y) {
|
|
328
|
+
let best = 0;
|
|
329
|
+
let bestD = Infinity;
|
|
330
|
+
for (let i = 0; i < rowYs.length; i++) {
|
|
331
|
+
const d = Math.abs(rowYs[i] - y);
|
|
332
|
+
if (d < bestD) {
|
|
333
|
+
bestD = d;
|
|
334
|
+
best = i;
|
|
335
|
+
}
|
|
336
|
+
}
|
|
337
|
+
return best;
|
|
338
|
+
}
|
|
339
|
+
function routeOver(diagram, e, rowYs) {
|
|
340
|
+
const src = getComponent(diagram, e.src);
|
|
341
|
+
const dst = getComponent(diagram, e.dst);
|
|
342
|
+
const [sa, da] = resolveAnchors(e, src, dst);
|
|
343
|
+
const sp = anchor(src, sa);
|
|
344
|
+
const dp = anchor(dst, da);
|
|
345
|
+
const srcRow = nearestRow(rowYs, src.pos[1]);
|
|
346
|
+
if (srcRow === 0) {
|
|
347
|
+
const tops = diagram.components
|
|
348
|
+
.filter((c) => c.shape !== "annotation")
|
|
349
|
+
.map((c) => c.pos[1] - componentHalf(c)[1]);
|
|
350
|
+
const topOfContent = tops.length ? Math.min(...tops) : 0;
|
|
351
|
+
const overY = Math.max(14, topOfContent - 30);
|
|
352
|
+
return [[sp[0], overY], [dp[0], overY]];
|
|
353
|
+
}
|
|
354
|
+
const TOL = 5;
|
|
355
|
+
const prevRowY = rowYs[srcRow - 1];
|
|
356
|
+
const currRowY = rowYs[srcRow];
|
|
357
|
+
const prevCells = diagram.components.filter((c) => Math.abs(c.pos[1] - prevRowY) < TOL);
|
|
358
|
+
const currCells = diagram.components.filter((c) => Math.abs(c.pos[1] - currRowY) < TOL);
|
|
359
|
+
const prevBottom = prevCells.length
|
|
360
|
+
? Math.max(...prevCells.map((c) => c.pos[1] + componentHalf(c)[1] + (LABEL_HEIGHT[c.shape] ?? 0)))
|
|
361
|
+
: prevRowY;
|
|
362
|
+
const currTop = currCells.length
|
|
363
|
+
? Math.min(...currCells.map((c) => c.pos[1] - componentHalf(c)[1]))
|
|
364
|
+
: currRowY;
|
|
365
|
+
const overY = Math.floor((prevBottom + currTop) / 2);
|
|
366
|
+
return [[sp[0], overY], [dp[0], overY]];
|
|
367
|
+
}
|
|
368
|
+
function routeUnder(diagram, e, rowYs) {
|
|
369
|
+
const src = getComponent(diagram, e.src);
|
|
370
|
+
const dst = getComponent(diagram, e.dst);
|
|
371
|
+
const [sa, da] = resolveAnchors(e, src, dst);
|
|
372
|
+
const sp = anchor(src, sa);
|
|
373
|
+
const dp = anchor(dst, da);
|
|
374
|
+
const srcRow = nearestRow(rowYs, src.pos[1]);
|
|
375
|
+
if (srcRow + 1 >= rowYs.length) {
|
|
376
|
+
const yy = Math.max(sp[1], dp[1]) + 36;
|
|
377
|
+
return [[sp[0], yy], [dp[0], yy]];
|
|
378
|
+
}
|
|
379
|
+
const TOL = 5;
|
|
380
|
+
const srcRowY = rowYs[srcRow];
|
|
381
|
+
const nextRowY = rowYs[srcRow + 1];
|
|
382
|
+
const srcCells = diagram.components.filter((c) => Math.abs(c.pos[1] - srcRowY) < TOL);
|
|
383
|
+
const nextCells = diagram.components.filter((c) => Math.abs(c.pos[1] - nextRowY) < TOL);
|
|
384
|
+
const rowBottom = srcCells.length
|
|
385
|
+
? Math.max(...srcCells.map((c) => c.pos[1] + componentHalf(c)[1] + (LABEL_HEIGHT[c.shape] ?? 0)))
|
|
386
|
+
: srcRowY;
|
|
387
|
+
const nextTop = nextCells.length
|
|
388
|
+
? Math.min(...nextCells.map((c) => c.pos[1] - componentHalf(c)[1]))
|
|
389
|
+
: nextRowY;
|
|
390
|
+
const underY = Math.floor((rowBottom + nextTop) / 2);
|
|
391
|
+
return [[sp[0], underY], [dp[0], underY]];
|
|
392
|
+
}
|
|
393
|
+
//# sourceMappingURL=layout.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"layout.js","sourceRoot":"","sources":["../src/layout.ts"],"names":[],"mappings":"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"}
|
package/dist/render.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"render.d.ts","sourceRoot":"","sources":["../src/render.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AACH,OAAO,EAEW,KAAK,OAAO,EAC7B,MAAM,YAAY,CAAC;AAOpB,MAAM,WAAW,aAAa;IAC5B,0DAA0D;IAC1D,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,gFAAgF;IAChF,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC5B;
|
|
1
|
+
{"version":3,"file":"render.d.ts","sourceRoot":"","sources":["../src/render.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AACH,OAAO,EAEW,KAAK,OAAO,EAC7B,MAAM,YAAY,CAAC;AAOpB,MAAM,WAAW,aAAa;IAC5B,0DAA0D;IAC1D,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,gFAAgF;IAChF,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC5B;AA8DD;;;GAGG;AACH,wBAAsB,SAAS,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,GAAE,aAAkB,GAAG,OAAO,CAAC,MAAM,CAAC,CA8FrF"}
|
package/dist/render.js
CHANGED
|
@@ -40,6 +40,16 @@ const CSS = `
|
|
|
40
40
|
.title { fill: #0f172a; font-size: 17px; font-weight: 700; }
|
|
41
41
|
.label { fill: #1e293b; font-size: 13px; font-weight: 600; text-anchor: middle; }
|
|
42
42
|
.elabel { fill: #64748b; font-size: 10.5px; text-anchor: middle; }`;
|
|
43
|
+
// Architecture-diagram region styling. These same three rules also live in
|
|
44
|
+
// BPMN_STYLE (which serves pool/lane diagrams); inject this only for non-BPMN
|
|
45
|
+
// diagrams that have regions, so a `.diagram` with `outer`/`inner` frames gets
|
|
46
|
+
// its near-transparent fills + outlines instead of falling back to SVG-default
|
|
47
|
+
// black, while BPMN output stays byte-identical. (Without this, region rects
|
|
48
|
+
// have no fill rule and render solid black — breaking light backgrounds.)
|
|
49
|
+
const REGION_STYLE = `
|
|
50
|
+
.region-rect { fill: rgba(15,23,42,0.02); stroke: #cbd5e1; stroke-width: 1.4; }
|
|
51
|
+
.region-rect--inner { fill: rgba(124,58,237,0.03); stroke: #7c3aed; stroke-width: 1.3; stroke-dasharray: 4 4; }
|
|
52
|
+
.region-label--inner { font-size: 12px; font-weight: 600; fill: #6d28d9; }`;
|
|
43
53
|
/** Horizontally-biased cubic Bézier between two resolved anchor points. */
|
|
44
54
|
function edgePath(x1, y1, sa, x2, y2, da) {
|
|
45
55
|
const k = Math.max(40, Math.abs(x2 - x1) * 0.5);
|
|
@@ -69,6 +79,9 @@ export async function renderSVG(d, opts = {}) {
|
|
|
69
79
|
const hasBpmn = d.components.some((c) => c.shape.startsWith("bpmn-"))
|
|
70
80
|
|| d.edges.some((e) => e.points != null && e.points.length > 0)
|
|
71
81
|
|| d.regions.some((r) => r.style === "pool" || r.style === "lane");
|
|
82
|
+
// Non-BPMN diagrams with regions need the region CSS injected too (BPMN
|
|
83
|
+
// diagrams already get it via BPMN_STYLE).
|
|
84
|
+
const needsRegionStyle = !hasBpmn && d.regions.length > 0;
|
|
72
85
|
let minX = Infinity, minY = Infinity, maxX = -Infinity, maxY = -Infinity;
|
|
73
86
|
const grow = (x, y) => {
|
|
74
87
|
minX = Math.min(minX, x);
|
|
@@ -145,7 +158,7 @@ export async function renderSVG(d, opts = {}) {
|
|
|
145
158
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="${x0} ${y0} ${w} ${h}" width="${w}" height="${h}">
|
|
146
159
|
<defs>${DEFS}${hasBpmn ? BPMN_DEFS : ""}
|
|
147
160
|
</defs>
|
|
148
|
-
<style>${CSS}${hasBpmn ? BPMN_STYLE : ""}
|
|
161
|
+
<style>${CSS}${needsRegionStyle ? REGION_STYLE : ""}${hasBpmn ? BPMN_STYLE : ""}
|
|
149
162
|
</style>
|
|
150
163
|
${bg}
|
|
151
164
|
${title}${regionRects}
|
package/dist/render.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"render.js","sourceRoot":"","sources":["../src/render.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"render.js","sourceRoot":"","sources":["../src/render.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED