@zukhruf/diagram 0.3.30 → 0.3.31
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/dist/lib/layouts/graph/areas.d.ts +27 -0
- package/dist/lib/layouts/graph/areas.d.ts.map +1 -0
- package/dist/lib/layouts/graph/areas.js +187 -0
- package/dist/lib/layouts/graph/areas.js.map +1 -0
- package/dist/lib/layouts/graph/graph-layout-result.d.ts +95 -0
- package/dist/lib/layouts/graph/graph-layout-result.d.ts.map +1 -0
- package/dist/lib/layouts/graph/graph-layout-result.js +2 -0
- package/dist/lib/layouts/graph/graph-layout-result.js.map +1 -0
- package/dist/lib/layouts/graph/graph-layout.d.ts +2 -1
- package/dist/lib/layouts/graph/graph-layout.d.ts.map +1 -1
- package/dist/lib/layouts/graph/graph-layout.js +5 -3
- package/dist/lib/layouts/graph/graph-layout.js.map +1 -1
- package/dist/lib/layouts/graph/gutters.d.ts +26 -0
- package/dist/lib/layouts/graph/gutters.d.ts.map +1 -0
- package/dist/lib/layouts/graph/gutters.js +123 -0
- package/dist/lib/layouts/graph/gutters.js.map +1 -0
- package/dist/lib/layouts/graph/layout.d.ts +10 -0
- package/dist/lib/layouts/graph/layout.d.ts.map +1 -0
- package/dist/lib/layouts/graph/layout.js +165 -0
- package/dist/lib/layouts/graph/layout.js.map +1 -0
- package/dist/lib/layouts/graph/legacy-graph-layout.d.ts +6 -0
- package/dist/lib/layouts/graph/legacy-graph-layout.d.ts.map +1 -0
- package/dist/lib/layouts/graph/legacy-graph-layout.js +542 -0
- package/dist/lib/layouts/graph/legacy-graph-layout.js.map +1 -0
- package/dist/lib/layouts/graph/measure.d.ts +44 -0
- package/dist/lib/layouts/graph/measure.d.ts.map +1 -0
- package/dist/lib/layouts/graph/measure.js +372 -0
- package/dist/lib/layouts/graph/measure.js.map +1 -0
- package/dist/lib/layouts/graph/node-content.d.ts +16 -0
- package/dist/lib/layouts/graph/node-content.d.ts.map +1 -0
- package/dist/lib/layouts/graph/node-content.js +323 -0
- package/dist/lib/layouts/graph/node-content.js.map +1 -0
- package/dist/lib/layouts/graph/text-block.d.ts +19 -0
- package/dist/lib/layouts/graph/text-block.d.ts.map +1 -0
- package/dist/lib/layouts/graph/text-block.js +86 -0
- package/dist/lib/layouts/graph/text-block.js.map +1 -0
- package/dist/lib/layouts/graph/tokens.d.ts +58 -0
- package/dist/lib/layouts/graph/tokens.d.ts.map +1 -0
- package/dist/lib/layouts/graph/tokens.js +108 -0
- package/dist/lib/layouts/graph/tokens.js.map +1 -0
- package/dist/lib/layouts/graph/tracks.d.ts +20 -0
- package/dist/lib/layouts/graph/tracks.d.ts.map +1 -0
- package/dist/lib/layouts/graph/tracks.js +47 -0
- package/dist/lib/layouts/graph/tracks.js.map +1 -0
- package/dist/lib/layouts/text/font-metrics.generated.d.ts +18 -0
- package/dist/lib/layouts/text/font-metrics.generated.d.ts.map +1 -0
- package/dist/lib/layouts/text/font-metrics.generated.js +1043 -0
- package/dist/lib/layouts/text/font-metrics.generated.js.map +1 -0
- package/dist/lib/layouts/text/font.d.ts +14 -0
- package/dist/lib/layouts/text/font.d.ts.map +1 -0
- package/dist/lib/layouts/text/font.js +11 -0
- package/dist/lib/layouts/text/font.js.map +1 -0
- package/dist/lib/layouts/text/measure-text.d.ts +13 -0
- package/dist/lib/layouts/text/measure-text.d.ts.map +1 -0
- package/dist/lib/layouts/text/measure-text.js +67 -0
- package/dist/lib/layouts/text/measure-text.js.map +1 -0
- package/dist/lib/model/diagram-ir.d.ts +14 -1
- package/dist/lib/model/diagram-ir.d.ts.map +1 -1
- package/dist/lib/model/diagram-ir.js.map +1 -1
- package/dist/lib/renderers/canvas/graph-canvas.d.ts.map +1 -1
- package/dist/lib/renderers/canvas/graph-canvas.js +148 -138
- package/dist/lib/renderers/canvas/graph-canvas.js.map +1 -1
- package/dist/lib/renderers/html/graph-html.d.ts.map +1 -1
- package/dist/lib/renderers/html/graph-html.js +462 -511
- package/dist/lib/renderers/html/graph-html.js.map +1 -1
- package/dist/lib/renderers/shared/graph-parts.d.ts +15 -13
- package/dist/lib/renderers/shared/graph-parts.d.ts.map +1 -1
- package/dist/lib/renderers/shared/graph-parts.js +649 -644
- package/dist/lib/renderers/shared/graph-parts.js.map +1 -1
- package/dist/lib/renderers/shared/node-parts.d.ts +20 -19
- package/dist/lib/renderers/shared/node-parts.d.ts.map +1 -1
- package/dist/lib/renderers/shared/node-parts.js +678 -811
- package/dist/lib/renderers/shared/node-parts.js.map +1 -1
- package/dist/lib/renderers/shared/run-spans.d.ts +8 -0
- package/dist/lib/renderers/shared/run-spans.d.ts.map +1 -0
- package/dist/lib/renderers/shared/run-spans.js +18 -0
- package/dist/lib/renderers/shared/run-spans.js.map +1 -0
- package/dist/lib/renderers/shared/text-runs.d.ts +21 -0
- package/dist/lib/renderers/shared/text-runs.d.ts.map +1 -0
- package/dist/lib/renderers/shared/text-runs.js +44 -0
- package/dist/lib/renderers/shared/text-runs.js.map +1 -0
- package/dist/lib/renderers/svg/graph-svg.d.ts.map +1 -1
- package/dist/lib/renderers/svg/graph-svg.js +304 -465
- package/dist/lib/renderers/svg/graph-svg.js.map +1 -1
- package/dist/lib/renderers/svg/timeline-svg.d.ts.map +1 -1
- package/dist/lib/renderers/svg/timeline-svg.js +10 -5
- package/dist/lib/renderers/svg/timeline-svg.js.map +1 -1
- package/dist/lib/renderers/webgpu/graph-flow-effects.d.ts +2 -2
- package/dist/lib/renderers/webgpu/graph-flow-effects.d.ts.map +1 -1
- package/dist/lib/renderers/webgpu/graph-flow-effects.js.map +1 -1
- package/package.json +3 -1
- package/styles.css +8 -0
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { c as _c } from "react/compiler-runtime";
|
|
2
2
|
import { useEffect, useMemo, useRef } from 'react';
|
|
3
|
-
import { compileGraph
|
|
4
|
-
import {
|
|
3
|
+
import { compileGraph } from "../../compiler/diagram-compile.js";
|
|
4
|
+
import { legacyGraphLayout } from "../../layouts/graph/legacy-graph-layout.js";
|
|
5
|
+
import { FONT_FAMILY, TEXT_SHAPING } from "../../layouts/text/font.js";
|
|
5
6
|
import { DIAGRAM_BG, DIAGRAM_DIM, DIAGRAM_NEUTRAL, DIAGRAM_TEXT, DiagramFrame, resolveDiagramToneFill, resolveDiagramToneStroke, useDiagramTheme } from "../../react/chrome/index.js";
|
|
6
7
|
import { nodeFrameFill, nodeFrameStroke } from "../shared/graph-parts.js";
|
|
7
8
|
import { rejectNodeContent } from "../shared/node-content.js";
|
|
@@ -19,9 +20,6 @@ function edgeDash(edge) {
|
|
|
19
20
|
if (edge.lineStyle === 'dotted') return [1, 6];
|
|
20
21
|
return [];
|
|
21
22
|
}
|
|
22
|
-
function linesForLabel(label) {
|
|
23
|
-
return (Array.isArray(label) ? label : [label]).map(line => typeof line === 'string' ? line : line.text);
|
|
24
|
-
}
|
|
25
23
|
function drawRoundedRect(ctx, box, radius) {
|
|
26
24
|
const rx = Math.min(radius, box.w / 2, box.h / 2);
|
|
27
25
|
ctx.beginPath();
|
|
@@ -61,12 +59,18 @@ function applyTexture(ctx, box, texture) {
|
|
|
61
59
|
}
|
|
62
60
|
ctx.restore();
|
|
63
61
|
}
|
|
64
|
-
|
|
65
|
-
|
|
62
|
+
const CANVAS_ALIGN = {
|
|
63
|
+
start: 'left',
|
|
64
|
+
middle: 'center',
|
|
65
|
+
end: 'right'
|
|
66
|
+
};
|
|
67
|
+
function drawTextRuns(ctx, runs) {
|
|
66
68
|
ctx.textBaseline = 'alphabetic';
|
|
67
|
-
|
|
68
|
-
ctx.
|
|
69
|
-
|
|
69
|
+
for (const run of runs) {
|
|
70
|
+
ctx.font = `${run.font.weight} ${run.font.size}px ${FONT_FAMILY[run.font.face]}`;
|
|
71
|
+
ctx.textAlign = CANVAS_ALIGN[run.anchor];
|
|
72
|
+
ctx.fillText(run.text, run.x, run.y);
|
|
73
|
+
}
|
|
70
74
|
}
|
|
71
75
|
function drawEdgeArrow(ctx, from, to, color) {
|
|
72
76
|
const angle = Math.atan2(to.y - from.y, to.x - from.x);
|
|
@@ -83,96 +87,126 @@ function drawEdgeArrow(ctx, from, to, color) {
|
|
|
83
87
|
ctx.stroke();
|
|
84
88
|
ctx.restore();
|
|
85
89
|
}
|
|
86
|
-
function
|
|
90
|
+
function groupStrokeColor(canvas, group, palette) {
|
|
91
|
+
if (group.frame === 'dashed') return palette.dim;
|
|
92
|
+
if (group.accent) return palette.accent;
|
|
93
|
+
if (group.tone) {
|
|
94
|
+
return resolveCssColor(canvas, resolveDiagramToneStroke(group.tone));
|
|
95
|
+
}
|
|
96
|
+
return palette.neutral;
|
|
97
|
+
}
|
|
98
|
+
function edgeColor(edge, palette) {
|
|
99
|
+
if (edge.accent) return palette.accent;
|
|
100
|
+
if (edge.dim) return palette.dim;
|
|
101
|
+
return palette.neutral;
|
|
102
|
+
}
|
|
103
|
+
function nodeTextColor(node, palette) {
|
|
104
|
+
if (node.textColor === 'accent') return palette.accent;
|
|
105
|
+
if (node.textColor === 'dim') return palette.dim;
|
|
106
|
+
return palette.text;
|
|
107
|
+
}
|
|
108
|
+
function drawGraphCanvas(canvas, layout, options) {
|
|
87
109
|
const ctx = canvas.getContext('2d');
|
|
88
110
|
if (!ctx) return;
|
|
111
|
+
const {
|
|
112
|
+
viewBox
|
|
113
|
+
} = layout;
|
|
89
114
|
const dpr = window.devicePixelRatio || 1;
|
|
90
|
-
canvas.width = Math.round(
|
|
91
|
-
canvas.height = Math.round(
|
|
115
|
+
canvas.width = Math.round(viewBox.w * dpr);
|
|
116
|
+
canvas.height = Math.round(viewBox.h * dpr);
|
|
92
117
|
ctx.setTransform(dpr, 0, 0, dpr, 0, 0);
|
|
93
|
-
ctx.
|
|
94
|
-
ctx.
|
|
118
|
+
ctx.fontKerning = TEXT_SHAPING.fontKerning;
|
|
119
|
+
ctx.clearRect(0, 0, viewBox.w, viewBox.h);
|
|
120
|
+
ctx.translate(-viewBox.x, -viewBox.y);
|
|
95
121
|
const accent = resolveCssColor(canvas, options.accent, '#111827');
|
|
96
122
|
const bg = resolveCssColor(canvas, DIAGRAM_BG, '#ffffff');
|
|
97
123
|
const text = resolveCssColor(canvas, DIAGRAM_TEXT, '#111827');
|
|
98
124
|
const dim = resolveCssColor(canvas, DIAGRAM_DIM, 'rgba(17,24,39,0.58)');
|
|
99
125
|
const neutral = resolveCssColor(canvas, DIAGRAM_NEUTRAL, 'rgba(17,24,39,0.82)');
|
|
126
|
+
const palette = {
|
|
127
|
+
accent,
|
|
128
|
+
text,
|
|
129
|
+
dim,
|
|
130
|
+
neutral
|
|
131
|
+
};
|
|
100
132
|
if (options.paper) {
|
|
101
133
|
ctx.fillStyle = bg;
|
|
102
|
-
ctx.fillRect(
|
|
134
|
+
ctx.fillRect(viewBox.x, viewBox.y, viewBox.w, viewBox.h);
|
|
103
135
|
}
|
|
104
|
-
for (const
|
|
105
|
-
|
|
106
|
-
|
|
136
|
+
for (const {
|
|
137
|
+
group,
|
|
138
|
+
rect,
|
|
139
|
+
label
|
|
140
|
+
} of layout.groups) {
|
|
141
|
+
const stroke = groupStrokeColor(canvas, group, palette);
|
|
107
142
|
const fill = group.tone ? resolveCssColor(canvas, resolveDiagramToneFill(group.tone)) : 'transparent';
|
|
108
143
|
ctx.save();
|
|
109
144
|
ctx.lineWidth = 1.5;
|
|
110
145
|
ctx.setLineDash(group.frame === 'dashed' ? [7, 7] : []);
|
|
111
146
|
ctx.strokeStyle = group.frame === 'none' ? 'transparent' : stroke;
|
|
112
147
|
ctx.fillStyle = fill;
|
|
113
|
-
drawRoundedRect(ctx,
|
|
148
|
+
drawRoundedRect(ctx, rect, group.rx ?? 18);
|
|
114
149
|
ctx.fill();
|
|
115
150
|
ctx.stroke();
|
|
116
151
|
ctx.restore();
|
|
117
|
-
applyTexture(ctx,
|
|
152
|
+
applyTexture(ctx, rect, group.texture);
|
|
118
153
|
ctx.fillStyle = text;
|
|
119
|
-
ctx
|
|
120
|
-
drawTextLines(ctx, groupLabelLines(group), box.x + box.w / 2, box.y + 20, 15, 'center');
|
|
154
|
+
drawTextRuns(ctx, label);
|
|
121
155
|
}
|
|
122
|
-
for (const
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
156
|
+
for (const {
|
|
157
|
+
edge,
|
|
158
|
+
points,
|
|
159
|
+
label
|
|
160
|
+
} of layout.edges) {
|
|
161
|
+
const [first, second] = points;
|
|
162
|
+
const from = points.at(-2);
|
|
163
|
+
const to = points.at(-1);
|
|
126
164
|
if (!first || !second || !from || !to) continue;
|
|
127
|
-
const color =
|
|
165
|
+
const color = edgeColor(edge, palette);
|
|
128
166
|
ctx.save();
|
|
129
167
|
ctx.strokeStyle = color;
|
|
130
|
-
ctx.lineWidth =
|
|
131
|
-
ctx.setLineDash(edgeDash(
|
|
168
|
+
ctx.lineWidth = edge.strokeWidth ?? 1.5;
|
|
169
|
+
ctx.setLineDash(edgeDash(edge));
|
|
132
170
|
ctx.beginPath();
|
|
133
171
|
ctx.moveTo(first.x, first.y);
|
|
134
|
-
for (const point of
|
|
172
|
+
for (const point of points.slice(1)) {
|
|
135
173
|
ctx.lineTo(point.x, point.y);
|
|
136
174
|
}
|
|
137
175
|
ctx.stroke();
|
|
138
176
|
ctx.restore();
|
|
139
|
-
if ((
|
|
177
|
+
if ((edge.direction ?? 'forward') !== 'none') {
|
|
140
178
|
drawEdgeArrow(ctx, from, to, color);
|
|
141
179
|
}
|
|
142
|
-
if (
|
|
180
|
+
if (edge.direction === 'both') {
|
|
143
181
|
drawEdgeArrow(ctx, second, first, color);
|
|
144
182
|
}
|
|
145
|
-
if (
|
|
183
|
+
if (label) {
|
|
146
184
|
ctx.save();
|
|
147
185
|
ctx.fillStyle = text;
|
|
148
|
-
ctx
|
|
149
|
-
drawTextLines(ctx, routed.edge.label, routed.labelPlacement.x, routed.labelPlacement.y, 12, routed.labelPlacement.align === 'middle' ? 'center' : routed.labelPlacement.align);
|
|
186
|
+
drawTextRuns(ctx, label.text);
|
|
150
187
|
ctx.restore();
|
|
151
188
|
}
|
|
152
189
|
}
|
|
153
|
-
for (const
|
|
190
|
+
for (const {
|
|
191
|
+
node,
|
|
192
|
+
box,
|
|
193
|
+
radius,
|
|
194
|
+
text: runs
|
|
195
|
+
} of layout.nodes) {
|
|
154
196
|
if (node.hidden) continue;
|
|
155
|
-
const box = nodeBox(node, model.graph.layout);
|
|
156
197
|
const frame = node.frame ?? 'solid';
|
|
157
|
-
const fill = resolveCssColor(canvas, nodeFrameFill(node, frame), '#ffffff');
|
|
158
|
-
const stroke = resolveCssColor(canvas, nodeFrameStroke(node, frame, accent), '#111827');
|
|
159
198
|
ctx.save();
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
ctx.font = `${node.fontWeight ?? 600} ${fontSize}px ui-sans-serif, system-ui, sans-serif`;
|
|
172
|
-
const textAlign = node.textAlign ?? 'center';
|
|
173
|
-
const x = textAlign === 'start' ? box.x + 16 : box.x + box.w / 2;
|
|
174
|
-
const y = box.y + box.h / 2 - (lines.length - 1) * lineHeight / 2 + fontSize / 2;
|
|
175
|
-
drawTextLines(ctx, lines, x, y, lineHeight, textAlign === 'start' ? 'left' : 'center');
|
|
199
|
+
if (frame !== 'none') {
|
|
200
|
+
ctx.lineWidth = 1.5;
|
|
201
|
+
ctx.fillStyle = resolveCssColor(canvas, nodeFrameFill(node, frame), '#ffffff');
|
|
202
|
+
ctx.strokeStyle = resolveCssColor(canvas, nodeFrameStroke(node, frame, accent), '#111827');
|
|
203
|
+
drawRoundedRect(ctx, box, radius);
|
|
204
|
+
ctx.fill();
|
|
205
|
+
ctx.stroke();
|
|
206
|
+
applyTexture(ctx, box, node.texture);
|
|
207
|
+
}
|
|
208
|
+
ctx.fillStyle = nodeTextColor(node, palette);
|
|
209
|
+
drawTextRuns(ctx, runs);
|
|
176
210
|
ctx.restore();
|
|
177
211
|
}
|
|
178
212
|
}
|
|
@@ -264,7 +298,7 @@ export function CanvasGraphDiagram(t0) {
|
|
|
264
298
|
return t4;
|
|
265
299
|
}
|
|
266
300
|
function GraphCanvas(t0) {
|
|
267
|
-
const $ = _c(
|
|
301
|
+
const $ = _c(23);
|
|
268
302
|
const {
|
|
269
303
|
ir,
|
|
270
304
|
title,
|
|
@@ -276,122 +310,98 @@ function GraphCanvas(t0) {
|
|
|
276
310
|
const {
|
|
277
311
|
accent
|
|
278
312
|
} = useDiagramTheme();
|
|
279
|
-
validateGraph(ir);
|
|
280
|
-
let graph;
|
|
281
|
-
let routedEdges;
|
|
282
313
|
let t1;
|
|
283
314
|
if ($[0] !== ir) {
|
|
284
|
-
|
|
285
|
-
routedEdges = computePaths(graph);
|
|
286
|
-
t1 = graphContentViewBox(graph, routedEdges);
|
|
315
|
+
t1 = legacyGraphLayout(ir);
|
|
287
316
|
$[0] = ir;
|
|
288
|
-
$[1] =
|
|
289
|
-
$[2] = routedEdges;
|
|
290
|
-
$[3] = t1;
|
|
317
|
+
$[1] = t1;
|
|
291
318
|
} else {
|
|
292
|
-
|
|
293
|
-
routedEdges = $[2];
|
|
294
|
-
t1 = $[3];
|
|
319
|
+
t1 = $[1];
|
|
295
320
|
}
|
|
296
|
-
const
|
|
321
|
+
const layout = t1;
|
|
297
322
|
let t2;
|
|
298
|
-
if ($[
|
|
299
|
-
t2 =
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
};
|
|
304
|
-
$[4] = graph;
|
|
305
|
-
$[5] = routedEdges;
|
|
306
|
-
$[6] = viewBox;
|
|
307
|
-
$[7] = t2;
|
|
323
|
+
if ($[2] !== layout.viewBox || $[3] !== viewport) {
|
|
324
|
+
t2 = canvasViewportProps(layout.viewBox, viewport);
|
|
325
|
+
$[2] = layout.viewBox;
|
|
326
|
+
$[3] = viewport;
|
|
327
|
+
$[4] = t2;
|
|
308
328
|
} else {
|
|
309
|
-
t2 = $[
|
|
329
|
+
t2 = $[4];
|
|
310
330
|
}
|
|
311
|
-
const
|
|
331
|
+
const viewportProps = t2;
|
|
312
332
|
let t3;
|
|
313
|
-
if ($[8] !== model.viewBox || $[9] !== viewport) {
|
|
314
|
-
t3 = canvasViewportProps(model.viewBox, viewport);
|
|
315
|
-
$[8] = model.viewBox;
|
|
316
|
-
$[9] = viewport;
|
|
317
|
-
$[10] = t3;
|
|
318
|
-
} else {
|
|
319
|
-
t3 = $[10];
|
|
320
|
-
}
|
|
321
|
-
const viewportProps = t3;
|
|
322
333
|
let t4;
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
t4 = () => {
|
|
334
|
+
if ($[5] !== accent || $[6] !== layout || $[7] !== paper || $[8] !== progress) {
|
|
335
|
+
t3 = () => {
|
|
326
336
|
const canvas = canvasRef.current;
|
|
327
337
|
if (!canvas) {
|
|
328
338
|
return;
|
|
329
339
|
}
|
|
330
|
-
const draw = () => drawGraphCanvas(canvas,
|
|
340
|
+
const draw = () => drawGraphCanvas(canvas, layout, {
|
|
331
341
|
accent,
|
|
332
342
|
paper
|
|
333
343
|
});
|
|
334
344
|
draw();
|
|
335
345
|
return progress.on("change", draw);
|
|
336
346
|
};
|
|
337
|
-
|
|
338
|
-
$[
|
|
339
|
-
$[
|
|
340
|
-
$[
|
|
341
|
-
$[
|
|
342
|
-
$[
|
|
343
|
-
$[
|
|
347
|
+
t4 = [accent, layout, paper, progress];
|
|
348
|
+
$[5] = accent;
|
|
349
|
+
$[6] = layout;
|
|
350
|
+
$[7] = paper;
|
|
351
|
+
$[8] = progress;
|
|
352
|
+
$[9] = t3;
|
|
353
|
+
$[10] = t4;
|
|
344
354
|
} else {
|
|
345
|
-
|
|
346
|
-
|
|
355
|
+
t3 = $[9];
|
|
356
|
+
t4 = $[10];
|
|
357
|
+
}
|
|
358
|
+
useEffect(t3, t4);
|
|
359
|
+
const t5 = `${layout.viewBox.x} ${layout.viewBox.y} ${layout.viewBox.w} ${layout.viewBox.h}`;
|
|
360
|
+
let t6;
|
|
361
|
+
if ($[11] !== layout.viewBox.w) {
|
|
362
|
+
t6 = Math.round(layout.viewBox.w);
|
|
363
|
+
$[11] = layout.viewBox.w;
|
|
364
|
+
$[12] = t6;
|
|
365
|
+
} else {
|
|
366
|
+
t6 = $[12];
|
|
347
367
|
}
|
|
348
|
-
useEffect(t4, t5);
|
|
349
|
-
const t6 = `${model.viewBox.x} ${model.viewBox.y} ${model.viewBox.w} ${model.viewBox.h}`;
|
|
350
368
|
let t7;
|
|
351
|
-
if ($[
|
|
352
|
-
t7 = Math.round(
|
|
353
|
-
$[
|
|
354
|
-
$[
|
|
369
|
+
if ($[13] !== layout.viewBox.h) {
|
|
370
|
+
t7 = Math.round(layout.viewBox.h);
|
|
371
|
+
$[13] = layout.viewBox.h;
|
|
372
|
+
$[14] = t7;
|
|
355
373
|
} else {
|
|
356
|
-
t7 = $[
|
|
374
|
+
t7 = $[14];
|
|
357
375
|
}
|
|
358
376
|
let t8;
|
|
359
|
-
if ($[
|
|
360
|
-
t8 =
|
|
361
|
-
$[
|
|
362
|
-
$[
|
|
377
|
+
if ($[15] !== title) {
|
|
378
|
+
t8 = title.join(" ");
|
|
379
|
+
$[15] = title;
|
|
380
|
+
$[16] = t8;
|
|
363
381
|
} else {
|
|
364
|
-
t8 = $[
|
|
382
|
+
t8 = $[16];
|
|
365
383
|
}
|
|
366
384
|
let t9;
|
|
367
|
-
if ($[21] !==
|
|
368
|
-
t9 =
|
|
369
|
-
$[21] = title;
|
|
370
|
-
$[22] = t9;
|
|
371
|
-
} else {
|
|
372
|
-
t9 = $[22];
|
|
373
|
-
}
|
|
374
|
-
let t10;
|
|
375
|
-
if ($[23] !== t6 || $[24] !== t7 || $[25] !== t8 || $[26] !== t9 || $[27] !== viewportProps) {
|
|
376
|
-
t10 = /*#__PURE__*/_jsx("canvas", {
|
|
385
|
+
if ($[17] !== t5 || $[18] !== t6 || $[19] !== t7 || $[20] !== t8 || $[21] !== viewportProps) {
|
|
386
|
+
t9 = /*#__PURE__*/_jsx("canvas", {
|
|
377
387
|
ref: canvasRef,
|
|
378
388
|
"data-diagram-canvas": "graph",
|
|
379
|
-
"data-diagram-canvas-viewbox":
|
|
380
|
-
width:
|
|
381
|
-
height:
|
|
382
|
-
"aria-label":
|
|
389
|
+
"data-diagram-canvas-viewbox": t5,
|
|
390
|
+
width: t6,
|
|
391
|
+
height: t7,
|
|
392
|
+
"aria-label": t8,
|
|
383
393
|
role: "img",
|
|
384
394
|
...viewportProps
|
|
385
395
|
});
|
|
386
|
-
$[
|
|
387
|
-
$[
|
|
388
|
-
$[
|
|
389
|
-
$[
|
|
390
|
-
$[
|
|
391
|
-
$[
|
|
396
|
+
$[17] = t5;
|
|
397
|
+
$[18] = t6;
|
|
398
|
+
$[19] = t7;
|
|
399
|
+
$[20] = t8;
|
|
400
|
+
$[21] = viewportProps;
|
|
401
|
+
$[22] = t9;
|
|
392
402
|
} else {
|
|
393
|
-
|
|
403
|
+
t9 = $[22];
|
|
394
404
|
}
|
|
395
|
-
return
|
|
405
|
+
return t9;
|
|
396
406
|
}
|
|
397
407
|
//# sourceMappingURL=graph-canvas.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"graph-canvas.js","names":["useEffect","useMemo","useRef","compileGraph","validateGraph","computePaths","graphContentViewBox","groupBox","groupLabelLines","nodeBox","nodeFrameRadius","resolveGraphLayout","DIAGRAM_BG","DIAGRAM_DIM","DIAGRAM_NEUTRAL","DIAGRAM_TEXT","DiagramFrame","resolveDiagramToneFill","resolveDiagramToneStroke","useDiagramTheme","nodeFrameFill","nodeFrameStroke","rejectNodeContent","canvasViewportProps","jsx","_jsx","resolveCssColor","element","value","fallback","varMatch","match","name","undefined","resolved","window","getComputedStyle","getPropertyValue","trim","edgeDash","edge","lineStyle","linesForLabel","label","Array","isArray","map","line","text","drawRoundedRect","ctx","box","radius","rx","Math","min","w","h","beginPath","moveTo","x","y","lineTo","quadraticCurveTo","closePath","applyTexture","texture","save","clip","strokeStyle","lineWidth","fillStyle","arc","PI","fill","stroke","restore","drawTextLines","lines","firstY","lineHeight","align","textAlign","textBaseline","forEach","index","fillText","drawEdgeArrow","from","to","color","angle","atan2","size","translate","rotate","drawGraphCanvas","canvas","model","options","getContext","dpr","devicePixelRatio","width","round","viewBox","height","setTransform","clearRect","accent","bg","dim","neutral","paper","fillRect","group","graph","groups","nodes","layout","frame","tone","setLineDash","font","routed","routedEdges","first","second","points","at","strokeWidth","point","slice","direction","length","labelPlacement","node","hidden","textColor","fontSize","max","fontWeight","CanvasGraphDiagram","t0","$","_c","children","chrome","title","viewport","ir","t1","flat","t2","fit","t3","progress","GraphCanvas","t4","canvasRef","viewportProps","t5","current","draw","on","t6","t7","t8","t9","join","t10","role"],"sources":["../../../../src/lib/renderers/canvas/graph-canvas.tsx"],"sourcesContent":["import { useEffect, useMemo, useRef } from 'react';\n\nimport { compileGraph, validateGraph } from '../../compiler/diagram-compile.ts';\nimport {\n computePaths,\n graphContentViewBox,\n groupBox,\n groupLabelLines,\n nodeBox,\n nodeFrameRadius,\n resolveGraphLayout,\n} from '../../layouts/graph/graph-layout.ts';\nimport type {\n Box,\n DiagramEdge,\n DiagramGraphLayout,\n DiagramLabelLine,\n DiagramPaper,\n DiagramTexture,\n GraphLayoutSpec,\n} from '../../model/diagram-ir.ts';\nimport {\n DIAGRAM_BG,\n DIAGRAM_DIM,\n DIAGRAM_NEUTRAL,\n DIAGRAM_TEXT,\n DiagramFrame,\n resolveDiagramToneFill,\n resolveDiagramToneStroke,\n useDiagramTheme,\n} from '../../react/chrome/index.ts';\nimport type { DiagramProps } from '../../react/diagram-types.ts';\nimport { nodeFrameFill, nodeFrameStroke } from '../shared/graph-parts.tsx';\nimport { rejectNodeContent } from '../shared/node-content.ts';\nimport type { GraphRendererProps } from '../types.ts';\nimport { canvasViewportProps } from './canvas-viewport.ts';\n\ntype CanvasGraphModel = {\n graph: GraphLayoutSpec;\n routedEdges: ReturnType<typeof computePaths>;\n viewBox: Box;\n};\n\nfunction resolveCssColor(\n element: HTMLElement,\n value: string,\n fallback = '#111827',\n) {\n const varMatch = value.match(/^var\\((--[^,\\s)]+)(?:,\\s*(.*))?\\)$/);\n const name = varMatch?.[1];\n if (name === undefined) return value;\n const resolved = window\n .getComputedStyle(element)\n .getPropertyValue(name)\n .trim();\n return resolved || varMatch?.[2]?.trim() || fallback;\n}\n\nfunction edgeDash(edge: DiagramEdge) {\n if (edge.lineStyle === 'dashed') return [6, 6];\n if (edge.lineStyle === 'dotted') return [1, 6];\n return [];\n}\n\nfunction linesForLabel(label: string | DiagramLabelLine[]) {\n return (Array.isArray(label) ? label : [label]).map((line) =>\n typeof line === 'string' ? line : line.text,\n );\n}\n\nfunction drawRoundedRect(\n ctx: CanvasRenderingContext2D,\n box: Box,\n radius: number,\n) {\n const rx = Math.min(radius, box.w / 2, box.h / 2);\n ctx.beginPath();\n ctx.moveTo(box.x + rx, box.y);\n ctx.lineTo(box.x + box.w - rx, box.y);\n ctx.quadraticCurveTo(box.x + box.w, box.y, box.x + box.w, box.y + rx);\n ctx.lineTo(box.x + box.w, box.y + box.h - rx);\n ctx.quadraticCurveTo(\n box.x + box.w,\n box.y + box.h,\n box.x + box.w - rx,\n box.y + box.h,\n );\n ctx.lineTo(box.x + rx, box.y + box.h);\n ctx.quadraticCurveTo(box.x, box.y + box.h, box.x, box.y + box.h - rx);\n ctx.lineTo(box.x, box.y + rx);\n ctx.quadraticCurveTo(box.x, box.y, box.x + rx, box.y);\n ctx.closePath();\n}\n\nfunction applyTexture(\n ctx: CanvasRenderingContext2D,\n box: Box,\n texture: DiagramTexture | undefined,\n) {\n if (!texture || texture === 'none') return;\n ctx.save();\n ctx.clip();\n ctx.strokeStyle = 'rgba(17,24,39,0.12)';\n ctx.lineWidth = 0.8;\n if (texture === 'dots') {\n ctx.fillStyle = 'rgba(17,24,39,0.16)';\n for (let x = box.x + 3; x < box.x + box.w; x += 8) {\n for (let y = box.y + 3; y < box.y + box.h; y += 8) {\n ctx.beginPath();\n ctx.arc(x, y, 0.7, 0, Math.PI * 2);\n ctx.fill();\n }\n }\n } else {\n for (let x = box.x - box.h; x < box.x + box.w; x += 8) {\n ctx.beginPath();\n ctx.moveTo(x, box.y + box.h);\n ctx.lineTo(x + box.h, box.y);\n ctx.stroke();\n }\n }\n ctx.restore();\n}\n\nfunction drawTextLines(\n ctx: CanvasRenderingContext2D,\n lines: string[],\n x: number,\n firstY: number,\n lineHeight: number,\n align: CanvasTextAlign,\n) {\n ctx.textAlign = align;\n ctx.textBaseline = 'alphabetic';\n lines.forEach((line, index) => {\n ctx.fillText(line, x, firstY + index * lineHeight);\n });\n}\n\nfunction drawEdgeArrow(\n ctx: CanvasRenderingContext2D,\n from: { x: number; y: number },\n to: { x: number; y: number },\n color: string,\n) {\n const angle = Math.atan2(to.y - from.y, to.x - from.x);\n const size = 9;\n ctx.save();\n ctx.translate(to.x, to.y);\n ctx.rotate(angle);\n ctx.strokeStyle = color;\n ctx.lineWidth = 1.6;\n ctx.beginPath();\n ctx.moveTo(-size, -size / 2);\n ctx.lineTo(0, 0);\n ctx.lineTo(-size, size / 2);\n ctx.stroke();\n ctx.restore();\n}\n\nfunction drawGraphCanvas(\n canvas: HTMLCanvasElement,\n model: CanvasGraphModel,\n options: {\n accent: string;\n paper?: DiagramPaper | undefined;\n },\n) {\n const ctx = canvas.getContext('2d');\n if (!ctx) return;\n const dpr = window.devicePixelRatio || 1;\n canvas.width = Math.round(model.viewBox.w * dpr);\n canvas.height = Math.round(model.viewBox.h * dpr);\n ctx.setTransform(dpr, 0, 0, dpr, 0, 0);\n ctx.clearRect(0, 0, model.viewBox.w, model.viewBox.h);\n ctx.translate(-model.viewBox.x, -model.viewBox.y);\n\n const accent = resolveCssColor(canvas, options.accent, '#111827');\n const bg = resolveCssColor(canvas, DIAGRAM_BG, '#ffffff');\n const text = resolveCssColor(canvas, DIAGRAM_TEXT, '#111827');\n const dim = resolveCssColor(canvas, DIAGRAM_DIM, 'rgba(17,24,39,0.58)');\n const neutral = resolveCssColor(\n canvas,\n DIAGRAM_NEUTRAL,\n 'rgba(17,24,39,0.82)',\n );\n\n if (options.paper) {\n ctx.fillStyle = bg;\n ctx.fillRect(\n model.viewBox.x,\n model.viewBox.y,\n model.viewBox.w,\n model.viewBox.h,\n );\n }\n\n for (const group of model.graph.groups ?? []) {\n const box = groupBox(\n group,\n model.graph.nodes,\n model.graph.layout,\n model.graph.groups,\n );\n const stroke =\n group.frame === 'dashed'\n ? dim\n : group.accent\n ? accent\n : group.tone\n ? resolveCssColor(canvas, resolveDiagramToneStroke(group.tone))\n : neutral;\n const fill = group.tone\n ? resolveCssColor(canvas, resolveDiagramToneFill(group.tone))\n : 'transparent';\n ctx.save();\n ctx.lineWidth = 1.5;\n ctx.setLineDash(group.frame === 'dashed' ? [7, 7] : []);\n ctx.strokeStyle = group.frame === 'none' ? 'transparent' : stroke;\n ctx.fillStyle = fill;\n drawRoundedRect(ctx, box, group.rx ?? 18);\n ctx.fill();\n ctx.stroke();\n ctx.restore();\n applyTexture(ctx, box, group.texture);\n ctx.fillStyle = text;\n ctx.font = '600 14px ui-sans-serif, system-ui, sans-serif';\n drawTextLines(\n ctx,\n groupLabelLines(group),\n box.x + box.w / 2,\n box.y + 20,\n 15,\n 'center',\n );\n }\n\n for (const routed of model.routedEdges) {\n const [first, second] = routed.points;\n const from = routed.points.at(-2);\n const to = routed.points.at(-1);\n if (!first || !second || !from || !to) continue;\n const color = routed.edge.accent ? accent : routed.edge.dim ? dim : neutral;\n ctx.save();\n ctx.strokeStyle = color;\n ctx.lineWidth = routed.edge.strokeWidth ?? 1.5;\n ctx.setLineDash(edgeDash(routed.edge));\n ctx.beginPath();\n ctx.moveTo(first.x, first.y);\n for (const point of routed.points.slice(1)) {\n ctx.lineTo(point.x, point.y);\n }\n ctx.stroke();\n ctx.restore();\n if ((routed.edge.direction ?? 'forward') !== 'none') {\n drawEdgeArrow(ctx, from, to, color);\n }\n if (routed.edge.direction === 'both') {\n drawEdgeArrow(ctx, second, first, color);\n }\n if (routed.edge.label?.length && routed.labelPlacement) {\n ctx.save();\n ctx.fillStyle = text;\n ctx.font = '10px ui-sans-serif, system-ui, sans-serif';\n drawTextLines(\n ctx,\n routed.edge.label,\n routed.labelPlacement.x,\n routed.labelPlacement.y,\n 12,\n routed.labelPlacement.align === 'middle'\n ? 'center'\n : routed.labelPlacement.align,\n );\n ctx.restore();\n }\n }\n\n for (const node of model.graph.nodes) {\n if (node.hidden) continue;\n const box = nodeBox(node, model.graph.layout);\n const frame = node.frame ?? 'solid';\n const fill = resolveCssColor(canvas, nodeFrameFill(node, frame), '#ffffff');\n const stroke = resolveCssColor(\n canvas,\n nodeFrameStroke(node, frame, accent),\n '#111827',\n );\n ctx.save();\n ctx.lineWidth = 1.5;\n ctx.fillStyle = fill;\n ctx.strokeStyle = stroke;\n drawRoundedRect(ctx, box, nodeFrameRadius(node));\n ctx.fill();\n ctx.stroke();\n applyTexture(ctx, box, node.texture);\n ctx.fillStyle =\n node.textColor === 'accent'\n ? accent\n : node.textColor === 'dim'\n ? dim\n : text;\n const fontSize = node.fontSize ?? 12;\n const lineHeight = Math.max(12, fontSize + 2);\n const lines = linesForLabel(node.label);\n ctx.font = `${node.fontWeight ?? 600} ${fontSize}px ui-sans-serif, system-ui, sans-serif`;\n const textAlign = node.textAlign ?? 'center';\n const x = textAlign === 'start' ? box.x + 16 : box.x + box.w / 2;\n const y =\n box.y + box.h / 2 - ((lines.length - 1) * lineHeight) / 2 + fontSize / 2;\n drawTextLines(\n ctx,\n lines,\n x,\n y,\n lineHeight,\n textAlign === 'start' ? 'left' : 'center',\n );\n ctx.restore();\n }\n}\n\nexport type CanvasGraphDiagramProps = DiagramProps & {\n graph?: DiagramGraphLayout;\n};\n\nexport function CanvasGraphDiagram({\n title,\n children,\n graph,\n viewport,\n paper,\n ...chrome\n}: CanvasGraphDiagramProps) {\n const ir = compileGraph(children, graph);\n rejectNodeContent(ir, 'CanvasGraphDiagram');\n const lines = [title].flat();\n return (\n <DiagramFrame title={lines} fit={viewport?.fit} {...chrome}>\n {(progress) => (\n <GraphCanvas\n ir={ir}\n title={lines}\n progress={progress}\n viewport={viewport}\n paper={paper}\n />\n )}\n </DiagramFrame>\n );\n}\n\nfunction GraphCanvas({\n ir,\n title,\n progress,\n viewport,\n paper,\n}: GraphRendererProps) {\n const canvasRef = useRef<HTMLCanvasElement>(null);\n const { accent } = useDiagramTheme();\n validateGraph(ir);\n const model = useMemo<CanvasGraphModel>(() => {\n const graph = resolveGraphLayout(ir);\n const routedEdges = computePaths(graph);\n const viewBox = graphContentViewBox(graph, routedEdges);\n return { graph, routedEdges, viewBox };\n }, [ir]);\n const viewportProps = canvasViewportProps(model.viewBox, viewport);\n\n useEffect(() => {\n const canvas = canvasRef.current;\n if (!canvas) return;\n const draw = () => drawGraphCanvas(canvas, model, { accent, paper });\n draw();\n return progress.on('change', draw);\n }, [accent, model, paper, progress]);\n\n return (\n <canvas\n ref={canvasRef}\n data-diagram-canvas=\"graph\"\n data-diagram-canvas-viewbox={`${model.viewBox.x} ${model.viewBox.y} ${model.viewBox.w} ${model.viewBox.h}`}\n width={Math.round(model.viewBox.w)}\n height={Math.round(model.viewBox.h)}\n aria-label={title.join(' ')}\n role=\"img\"\n {...viewportProps}\n />\n );\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"graph-canvas.js","names":["useEffect","useMemo","useRef","compileGraph","legacyGraphLayout","FONT_FAMILY","TEXT_SHAPING","DIAGRAM_BG","DIAGRAM_DIM","DIAGRAM_NEUTRAL","DIAGRAM_TEXT","DiagramFrame","resolveDiagramToneFill","resolveDiagramToneStroke","useDiagramTheme","nodeFrameFill","nodeFrameStroke","rejectNodeContent","canvasViewportProps","jsx","_jsx","resolveCssColor","element","value","fallback","varMatch","match","name","undefined","resolved","window","getComputedStyle","getPropertyValue","trim","edgeDash","edge","lineStyle","drawRoundedRect","ctx","box","radius","rx","Math","min","w","h","beginPath","moveTo","x","y","lineTo","quadraticCurveTo","closePath","applyTexture","texture","save","clip","strokeStyle","lineWidth","fillStyle","arc","PI","fill","stroke","restore","CANVAS_ALIGN","start","middle","end","drawTextRuns","runs","textBaseline","run","font","weight","size","face","textAlign","anchor","fillText","text","drawEdgeArrow","from","to","color","angle","atan2","translate","rotate","groupStrokeColor","canvas","group","palette","frame","dim","accent","tone","neutral","edgeColor","nodeTextColor","node","textColor","drawGraphCanvas","layout","options","getContext","viewBox","dpr","devicePixelRatio","width","round","height","setTransform","fontKerning","clearRect","bg","paper","fillRect","rect","label","groups","setLineDash","points","edges","first","second","at","strokeWidth","point","slice","direction","nodes","hidden","CanvasGraphDiagram","t0","$","_c","children","chrome","graph","title","viewport","ir","t1","flat","lines","t2","fit","t3","progress","GraphCanvas","t4","canvasRef","viewportProps","current","draw","on","t5","t6","t7","t8","join","t9","role"],"sources":["../../../../src/lib/renderers/canvas/graph-canvas.tsx"],"sourcesContent":["import { useEffect, useMemo, useRef } from 'react';\n\nimport { compileGraph } from '../../compiler/diagram-compile.ts';\nimport type {\n GraphLayout,\n TextAnchor,\n TextRun,\n} from '../../layouts/graph/graph-layout-result.ts';\nimport { legacyGraphLayout } from '../../layouts/graph/legacy-graph-layout.ts';\nimport { FONT_FAMILY, TEXT_SHAPING } from '../../layouts/text/font.ts';\nimport type {\n Box,\n DiagramEdge,\n DiagramGraphLayout,\n DiagramGroup,\n DiagramNode,\n DiagramPaper,\n DiagramTexture,\n} from '../../model/diagram-ir.ts';\nimport {\n DIAGRAM_BG,\n DIAGRAM_DIM,\n DIAGRAM_NEUTRAL,\n DIAGRAM_TEXT,\n DiagramFrame,\n resolveDiagramToneFill,\n resolveDiagramToneStroke,\n useDiagramTheme,\n} from '../../react/chrome/index.ts';\nimport type { DiagramProps } from '../../react/diagram-types.ts';\nimport { nodeFrameFill, nodeFrameStroke } from '../shared/graph-parts.tsx';\nimport { rejectNodeContent } from '../shared/node-content.ts';\nimport type { GraphRendererProps } from '../types.ts';\nimport { canvasViewportProps } from './canvas-viewport.ts';\n\nfunction resolveCssColor(\n element: HTMLElement,\n value: string,\n fallback = '#111827',\n) {\n const varMatch = value.match(/^var\\((--[^,\\s)]+)(?:,\\s*(.*))?\\)$/);\n const name = varMatch?.[1];\n if (name === undefined) return value;\n const resolved = window\n .getComputedStyle(element)\n .getPropertyValue(name)\n .trim();\n return resolved || varMatch?.[2]?.trim() || fallback;\n}\n\nfunction edgeDash(edge: DiagramEdge) {\n if (edge.lineStyle === 'dashed') return [6, 6];\n if (edge.lineStyle === 'dotted') return [1, 6];\n return [];\n}\n\nfunction drawRoundedRect(\n ctx: CanvasRenderingContext2D,\n box: Box,\n radius: number,\n) {\n const rx = Math.min(radius, box.w / 2, box.h / 2);\n ctx.beginPath();\n ctx.moveTo(box.x + rx, box.y);\n ctx.lineTo(box.x + box.w - rx, box.y);\n ctx.quadraticCurveTo(box.x + box.w, box.y, box.x + box.w, box.y + rx);\n ctx.lineTo(box.x + box.w, box.y + box.h - rx);\n ctx.quadraticCurveTo(\n box.x + box.w,\n box.y + box.h,\n box.x + box.w - rx,\n box.y + box.h,\n );\n ctx.lineTo(box.x + rx, box.y + box.h);\n ctx.quadraticCurveTo(box.x, box.y + box.h, box.x, box.y + box.h - rx);\n ctx.lineTo(box.x, box.y + rx);\n ctx.quadraticCurveTo(box.x, box.y, box.x + rx, box.y);\n ctx.closePath();\n}\n\nfunction applyTexture(\n ctx: CanvasRenderingContext2D,\n box: Box,\n texture: DiagramTexture | undefined,\n) {\n if (!texture || texture === 'none') return;\n ctx.save();\n ctx.clip();\n ctx.strokeStyle = 'rgba(17,24,39,0.12)';\n ctx.lineWidth = 0.8;\n if (texture === 'dots') {\n ctx.fillStyle = 'rgba(17,24,39,0.16)';\n for (let x = box.x + 3; x < box.x + box.w; x += 8) {\n for (let y = box.y + 3; y < box.y + box.h; y += 8) {\n ctx.beginPath();\n ctx.arc(x, y, 0.7, 0, Math.PI * 2);\n ctx.fill();\n }\n }\n } else {\n for (let x = box.x - box.h; x < box.x + box.w; x += 8) {\n ctx.beginPath();\n ctx.moveTo(x, box.y + box.h);\n ctx.lineTo(x + box.h, box.y);\n ctx.stroke();\n }\n }\n ctx.restore();\n}\n\nconst CANVAS_ALIGN: Record<TextAnchor, CanvasTextAlign> = {\n start: 'left',\n middle: 'center',\n end: 'right',\n};\n\nfunction drawTextRuns(ctx: CanvasRenderingContext2D, runs: TextRun[]) {\n ctx.textBaseline = 'alphabetic';\n for (const run of runs) {\n ctx.font = `${run.font.weight} ${run.font.size}px ${FONT_FAMILY[run.font.face]}`;\n ctx.textAlign = CANVAS_ALIGN[run.anchor];\n ctx.fillText(run.text, run.x, run.y);\n }\n}\n\nfunction drawEdgeArrow(\n ctx: CanvasRenderingContext2D,\n from: { x: number; y: number },\n to: { x: number; y: number },\n color: string,\n) {\n const angle = Math.atan2(to.y - from.y, to.x - from.x);\n const size = 9;\n ctx.save();\n ctx.translate(to.x, to.y);\n ctx.rotate(angle);\n ctx.strokeStyle = color;\n ctx.lineWidth = 1.6;\n ctx.beginPath();\n ctx.moveTo(-size, -size / 2);\n ctx.lineTo(0, 0);\n ctx.lineTo(-size, size / 2);\n ctx.stroke();\n ctx.restore();\n}\n\ntype CanvasPalette = {\n accent: string;\n text: string;\n dim: string;\n neutral: string;\n};\n\nfunction groupStrokeColor(\n canvas: HTMLCanvasElement,\n group: DiagramGroup,\n palette: CanvasPalette,\n) {\n if (group.frame === 'dashed') return palette.dim;\n if (group.accent) return palette.accent;\n if (group.tone) {\n return resolveCssColor(canvas, resolveDiagramToneStroke(group.tone));\n }\n return palette.neutral;\n}\n\nfunction edgeColor(edge: DiagramEdge, palette: CanvasPalette) {\n if (edge.accent) return palette.accent;\n if (edge.dim) return palette.dim;\n return palette.neutral;\n}\n\nfunction nodeTextColor(node: DiagramNode, palette: CanvasPalette) {\n if (node.textColor === 'accent') return palette.accent;\n if (node.textColor === 'dim') return palette.dim;\n return palette.text;\n}\n\nfunction drawGraphCanvas(\n canvas: HTMLCanvasElement,\n layout: GraphLayout,\n options: {\n accent: string;\n paper?: DiagramPaper | undefined;\n },\n) {\n const ctx = canvas.getContext('2d');\n if (!ctx) return;\n const { viewBox } = layout;\n const dpr = window.devicePixelRatio || 1;\n canvas.width = Math.round(viewBox.w * dpr);\n canvas.height = Math.round(viewBox.h * dpr);\n ctx.setTransform(dpr, 0, 0, dpr, 0, 0);\n ctx.fontKerning = TEXT_SHAPING.fontKerning;\n ctx.clearRect(0, 0, viewBox.w, viewBox.h);\n ctx.translate(-viewBox.x, -viewBox.y);\n\n const accent = resolveCssColor(canvas, options.accent, '#111827');\n const bg = resolveCssColor(canvas, DIAGRAM_BG, '#ffffff');\n const text = resolveCssColor(canvas, DIAGRAM_TEXT, '#111827');\n const dim = resolveCssColor(canvas, DIAGRAM_DIM, 'rgba(17,24,39,0.58)');\n const neutral = resolveCssColor(\n canvas,\n DIAGRAM_NEUTRAL,\n 'rgba(17,24,39,0.82)',\n );\n const palette: CanvasPalette = { accent, text, dim, neutral };\n\n if (options.paper) {\n ctx.fillStyle = bg;\n ctx.fillRect(viewBox.x, viewBox.y, viewBox.w, viewBox.h);\n }\n\n for (const { group, rect, label } of layout.groups) {\n const stroke = groupStrokeColor(canvas, group, palette);\n const fill = group.tone\n ? resolveCssColor(canvas, resolveDiagramToneFill(group.tone))\n : 'transparent';\n ctx.save();\n ctx.lineWidth = 1.5;\n ctx.setLineDash(group.frame === 'dashed' ? [7, 7] : []);\n ctx.strokeStyle = group.frame === 'none' ? 'transparent' : stroke;\n ctx.fillStyle = fill;\n drawRoundedRect(ctx, rect, group.rx ?? 18);\n ctx.fill();\n ctx.stroke();\n ctx.restore();\n applyTexture(ctx, rect, group.texture);\n ctx.fillStyle = text;\n drawTextRuns(ctx, label);\n }\n\n for (const { edge, points, label } of layout.edges) {\n const [first, second] = points;\n const from = points.at(-2);\n const to = points.at(-1);\n if (!first || !second || !from || !to) continue;\n const color = edgeColor(edge, palette);\n ctx.save();\n ctx.strokeStyle = color;\n ctx.lineWidth = edge.strokeWidth ?? 1.5;\n ctx.setLineDash(edgeDash(edge));\n ctx.beginPath();\n ctx.moveTo(first.x, first.y);\n for (const point of points.slice(1)) {\n ctx.lineTo(point.x, point.y);\n }\n ctx.stroke();\n ctx.restore();\n if ((edge.direction ?? 'forward') !== 'none') {\n drawEdgeArrow(ctx, from, to, color);\n }\n if (edge.direction === 'both') {\n drawEdgeArrow(ctx, second, first, color);\n }\n if (label) {\n ctx.save();\n ctx.fillStyle = text;\n drawTextRuns(ctx, label.text);\n ctx.restore();\n }\n }\n\n for (const { node, box, radius, text: runs } of layout.nodes) {\n if (node.hidden) continue;\n const frame = node.frame ?? 'solid';\n ctx.save();\n if (frame !== 'none') {\n ctx.lineWidth = 1.5;\n ctx.fillStyle = resolveCssColor(\n canvas,\n nodeFrameFill(node, frame),\n '#ffffff',\n );\n ctx.strokeStyle = resolveCssColor(\n canvas,\n nodeFrameStroke(node, frame, accent),\n '#111827',\n );\n drawRoundedRect(ctx, box, radius);\n ctx.fill();\n ctx.stroke();\n applyTexture(ctx, box, node.texture);\n }\n ctx.fillStyle = nodeTextColor(node, palette);\n drawTextRuns(ctx, runs);\n ctx.restore();\n }\n}\n\nexport type CanvasGraphDiagramProps = DiagramProps & {\n graph?: DiagramGraphLayout;\n};\n\nexport function CanvasGraphDiagram({\n title,\n children,\n graph,\n viewport,\n paper,\n ...chrome\n}: CanvasGraphDiagramProps) {\n const ir = compileGraph(children, graph);\n rejectNodeContent(ir, 'CanvasGraphDiagram');\n const lines = [title].flat();\n return (\n <DiagramFrame title={lines} fit={viewport?.fit} {...chrome}>\n {(progress) => (\n <GraphCanvas\n ir={ir}\n title={lines}\n progress={progress}\n viewport={viewport}\n paper={paper}\n />\n )}\n </DiagramFrame>\n );\n}\n\nfunction GraphCanvas({\n ir,\n title,\n progress,\n viewport,\n paper,\n}: GraphRendererProps) {\n const canvasRef = useRef<HTMLCanvasElement>(null);\n const { accent } = useDiagramTheme();\n const layout = useMemo(() => legacyGraphLayout(ir), [ir]);\n const viewportProps = canvasViewportProps(layout.viewBox, viewport);\n\n useEffect(() => {\n const canvas = canvasRef.current;\n if (!canvas) return;\n const draw = () => drawGraphCanvas(canvas, layout, { accent, paper });\n draw();\n return progress.on('change', draw);\n }, [accent, layout, paper, progress]);\n\n return (\n <canvas\n ref={canvasRef}\n data-diagram-canvas=\"graph\"\n data-diagram-canvas-viewbox={`${layout.viewBox.x} ${layout.viewBox.y} ${layout.viewBox.w} ${layout.viewBox.h}`}\n width={Math.round(layout.viewBox.w)}\n height={Math.round(layout.viewBox.h)}\n aria-label={title.join(' ')}\n role=\"img\"\n {...viewportProps}\n />\n );\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"graph-html.d.ts","sourceRoot":"","sources":["../../../../src/lib/renderers/html/graph-html.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"graph-html.d.ts","sourceRoot":"","sources":["../../../../src/lib/renderers/html/graph-html.tsx"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAEV,kBAAkB,EAElB,eAAe,EAChB,MAAM,2BAA2B,CAAC;AAOnC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AA8BjE,MAAM,MAAM,qBAAqB,GAAG,IAAI,CAAC,YAAY,EAAE,UAAU,CAAC,GAAG;IACnE,KAAK,CAAC,EAAE,kBAAkB,CAAC;IAC3B,QAAQ,CAAC,EAAE,IAAI,CAAC,eAAe,EAAE,KAAK,CAAC,CAAC;CACzC,CAAC;AAEF,wBAAgB,gBAAgB,CAAC,EAC/B,KAAK,EACL,QAAQ,EACR,KAAK,EACL,QAAQ,EACR,KAAK,EACL,GAAG,MAAM,EACV,EAAE,qBAAqB,+BAiBvB"}
|