@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.
Files changed (92) hide show
  1. package/dist/lib/layouts/graph/areas.d.ts +27 -0
  2. package/dist/lib/layouts/graph/areas.d.ts.map +1 -0
  3. package/dist/lib/layouts/graph/areas.js +187 -0
  4. package/dist/lib/layouts/graph/areas.js.map +1 -0
  5. package/dist/lib/layouts/graph/graph-layout-result.d.ts +95 -0
  6. package/dist/lib/layouts/graph/graph-layout-result.d.ts.map +1 -0
  7. package/dist/lib/layouts/graph/graph-layout-result.js +2 -0
  8. package/dist/lib/layouts/graph/graph-layout-result.js.map +1 -0
  9. package/dist/lib/layouts/graph/graph-layout.d.ts +2 -1
  10. package/dist/lib/layouts/graph/graph-layout.d.ts.map +1 -1
  11. package/dist/lib/layouts/graph/graph-layout.js +5 -3
  12. package/dist/lib/layouts/graph/graph-layout.js.map +1 -1
  13. package/dist/lib/layouts/graph/gutters.d.ts +26 -0
  14. package/dist/lib/layouts/graph/gutters.d.ts.map +1 -0
  15. package/dist/lib/layouts/graph/gutters.js +123 -0
  16. package/dist/lib/layouts/graph/gutters.js.map +1 -0
  17. package/dist/lib/layouts/graph/layout.d.ts +10 -0
  18. package/dist/lib/layouts/graph/layout.d.ts.map +1 -0
  19. package/dist/lib/layouts/graph/layout.js +165 -0
  20. package/dist/lib/layouts/graph/layout.js.map +1 -0
  21. package/dist/lib/layouts/graph/legacy-graph-layout.d.ts +6 -0
  22. package/dist/lib/layouts/graph/legacy-graph-layout.d.ts.map +1 -0
  23. package/dist/lib/layouts/graph/legacy-graph-layout.js +542 -0
  24. package/dist/lib/layouts/graph/legacy-graph-layout.js.map +1 -0
  25. package/dist/lib/layouts/graph/measure.d.ts +44 -0
  26. package/dist/lib/layouts/graph/measure.d.ts.map +1 -0
  27. package/dist/lib/layouts/graph/measure.js +372 -0
  28. package/dist/lib/layouts/graph/measure.js.map +1 -0
  29. package/dist/lib/layouts/graph/node-content.d.ts +16 -0
  30. package/dist/lib/layouts/graph/node-content.d.ts.map +1 -0
  31. package/dist/lib/layouts/graph/node-content.js +323 -0
  32. package/dist/lib/layouts/graph/node-content.js.map +1 -0
  33. package/dist/lib/layouts/graph/text-block.d.ts +19 -0
  34. package/dist/lib/layouts/graph/text-block.d.ts.map +1 -0
  35. package/dist/lib/layouts/graph/text-block.js +86 -0
  36. package/dist/lib/layouts/graph/text-block.js.map +1 -0
  37. package/dist/lib/layouts/graph/tokens.d.ts +58 -0
  38. package/dist/lib/layouts/graph/tokens.d.ts.map +1 -0
  39. package/dist/lib/layouts/graph/tokens.js +108 -0
  40. package/dist/lib/layouts/graph/tokens.js.map +1 -0
  41. package/dist/lib/layouts/graph/tracks.d.ts +20 -0
  42. package/dist/lib/layouts/graph/tracks.d.ts.map +1 -0
  43. package/dist/lib/layouts/graph/tracks.js +47 -0
  44. package/dist/lib/layouts/graph/tracks.js.map +1 -0
  45. package/dist/lib/layouts/text/font-metrics.generated.d.ts +18 -0
  46. package/dist/lib/layouts/text/font-metrics.generated.d.ts.map +1 -0
  47. package/dist/lib/layouts/text/font-metrics.generated.js +1043 -0
  48. package/dist/lib/layouts/text/font-metrics.generated.js.map +1 -0
  49. package/dist/lib/layouts/text/font.d.ts +14 -0
  50. package/dist/lib/layouts/text/font.d.ts.map +1 -0
  51. package/dist/lib/layouts/text/font.js +11 -0
  52. package/dist/lib/layouts/text/font.js.map +1 -0
  53. package/dist/lib/layouts/text/measure-text.d.ts +13 -0
  54. package/dist/lib/layouts/text/measure-text.d.ts.map +1 -0
  55. package/dist/lib/layouts/text/measure-text.js +67 -0
  56. package/dist/lib/layouts/text/measure-text.js.map +1 -0
  57. package/dist/lib/model/diagram-ir.d.ts +14 -1
  58. package/dist/lib/model/diagram-ir.d.ts.map +1 -1
  59. package/dist/lib/model/diagram-ir.js.map +1 -1
  60. package/dist/lib/renderers/canvas/graph-canvas.d.ts.map +1 -1
  61. package/dist/lib/renderers/canvas/graph-canvas.js +148 -138
  62. package/dist/lib/renderers/canvas/graph-canvas.js.map +1 -1
  63. package/dist/lib/renderers/html/graph-html.d.ts.map +1 -1
  64. package/dist/lib/renderers/html/graph-html.js +462 -511
  65. package/dist/lib/renderers/html/graph-html.js.map +1 -1
  66. package/dist/lib/renderers/shared/graph-parts.d.ts +15 -13
  67. package/dist/lib/renderers/shared/graph-parts.d.ts.map +1 -1
  68. package/dist/lib/renderers/shared/graph-parts.js +649 -644
  69. package/dist/lib/renderers/shared/graph-parts.js.map +1 -1
  70. package/dist/lib/renderers/shared/node-parts.d.ts +20 -19
  71. package/dist/lib/renderers/shared/node-parts.d.ts.map +1 -1
  72. package/dist/lib/renderers/shared/node-parts.js +678 -811
  73. package/dist/lib/renderers/shared/node-parts.js.map +1 -1
  74. package/dist/lib/renderers/shared/run-spans.d.ts +8 -0
  75. package/dist/lib/renderers/shared/run-spans.d.ts.map +1 -0
  76. package/dist/lib/renderers/shared/run-spans.js +18 -0
  77. package/dist/lib/renderers/shared/run-spans.js.map +1 -0
  78. package/dist/lib/renderers/shared/text-runs.d.ts +21 -0
  79. package/dist/lib/renderers/shared/text-runs.d.ts.map +1 -0
  80. package/dist/lib/renderers/shared/text-runs.js +44 -0
  81. package/dist/lib/renderers/shared/text-runs.js.map +1 -0
  82. package/dist/lib/renderers/svg/graph-svg.d.ts.map +1 -1
  83. package/dist/lib/renderers/svg/graph-svg.js +304 -465
  84. package/dist/lib/renderers/svg/graph-svg.js.map +1 -1
  85. package/dist/lib/renderers/svg/timeline-svg.d.ts.map +1 -1
  86. package/dist/lib/renderers/svg/timeline-svg.js +10 -5
  87. package/dist/lib/renderers/svg/timeline-svg.js.map +1 -1
  88. package/dist/lib/renderers/webgpu/graph-flow-effects.d.ts +2 -2
  89. package/dist/lib/renderers/webgpu/graph-flow-effects.d.ts.map +1 -1
  90. package/dist/lib/renderers/webgpu/graph-flow-effects.js.map +1 -1
  91. package/package.json +3 -1
  92. 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, validateGraph } from "../../compiler/diagram-compile.js";
4
- import { computePaths, graphContentViewBox, groupBox, groupLabelLines, nodeBox, nodeFrameRadius, resolveGraphLayout } from "../../layouts/graph/graph-layout.js";
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
- function drawTextLines(ctx, lines, x, firstY, lineHeight, align) {
65
- ctx.textAlign = align;
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
- lines.forEach((line, index) => {
68
- ctx.fillText(line, x, firstY + index * lineHeight);
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 drawGraphCanvas(canvas, model, options) {
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(model.viewBox.w * dpr);
91
- canvas.height = Math.round(model.viewBox.h * dpr);
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.clearRect(0, 0, model.viewBox.w, model.viewBox.h);
94
- ctx.translate(-model.viewBox.x, -model.viewBox.y);
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(model.viewBox.x, model.viewBox.y, model.viewBox.w, model.viewBox.h);
134
+ ctx.fillRect(viewBox.x, viewBox.y, viewBox.w, viewBox.h);
103
135
  }
104
- for (const group of model.graph.groups ?? []) {
105
- const box = groupBox(group, model.graph.nodes, model.graph.layout, model.graph.groups);
106
- const stroke = group.frame === 'dashed' ? dim : group.accent ? accent : group.tone ? resolveCssColor(canvas, resolveDiagramToneStroke(group.tone)) : neutral;
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, box, group.rx ?? 18);
148
+ drawRoundedRect(ctx, rect, group.rx ?? 18);
114
149
  ctx.fill();
115
150
  ctx.stroke();
116
151
  ctx.restore();
117
- applyTexture(ctx, box, group.texture);
152
+ applyTexture(ctx, rect, group.texture);
118
153
  ctx.fillStyle = text;
119
- ctx.font = '600 14px ui-sans-serif, system-ui, sans-serif';
120
- drawTextLines(ctx, groupLabelLines(group), box.x + box.w / 2, box.y + 20, 15, 'center');
154
+ drawTextRuns(ctx, label);
121
155
  }
122
- for (const routed of model.routedEdges) {
123
- const [first, second] = routed.points;
124
- const from = routed.points.at(-2);
125
- const to = routed.points.at(-1);
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 = routed.edge.accent ? accent : routed.edge.dim ? dim : neutral;
165
+ const color = edgeColor(edge, palette);
128
166
  ctx.save();
129
167
  ctx.strokeStyle = color;
130
- ctx.lineWidth = routed.edge.strokeWidth ?? 1.5;
131
- ctx.setLineDash(edgeDash(routed.edge));
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 routed.points.slice(1)) {
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 ((routed.edge.direction ?? 'forward') !== 'none') {
177
+ if ((edge.direction ?? 'forward') !== 'none') {
140
178
  drawEdgeArrow(ctx, from, to, color);
141
179
  }
142
- if (routed.edge.direction === 'both') {
180
+ if (edge.direction === 'both') {
143
181
  drawEdgeArrow(ctx, second, first, color);
144
182
  }
145
- if (routed.edge.label?.length && routed.labelPlacement) {
183
+ if (label) {
146
184
  ctx.save();
147
185
  ctx.fillStyle = text;
148
- ctx.font = '10px ui-sans-serif, system-ui, sans-serif';
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 node of model.graph.nodes) {
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
- ctx.lineWidth = 1.5;
161
- ctx.fillStyle = fill;
162
- ctx.strokeStyle = stroke;
163
- drawRoundedRect(ctx, box, nodeFrameRadius(node));
164
- ctx.fill();
165
- ctx.stroke();
166
- applyTexture(ctx, box, node.texture);
167
- ctx.fillStyle = node.textColor === 'accent' ? accent : node.textColor === 'dim' ? dim : text;
168
- const fontSize = node.fontSize ?? 12;
169
- const lineHeight = Math.max(12, fontSize + 2);
170
- const lines = linesForLabel(node.label);
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(29);
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
- graph = resolveGraphLayout(ir);
285
- routedEdges = computePaths(graph);
286
- t1 = graphContentViewBox(graph, routedEdges);
315
+ t1 = legacyGraphLayout(ir);
287
316
  $[0] = ir;
288
- $[1] = graph;
289
- $[2] = routedEdges;
290
- $[3] = t1;
317
+ $[1] = t1;
291
318
  } else {
292
- graph = $[1];
293
- routedEdges = $[2];
294
- t1 = $[3];
319
+ t1 = $[1];
295
320
  }
296
- const viewBox = t1;
321
+ const layout = t1;
297
322
  let t2;
298
- if ($[4] !== graph || $[5] !== routedEdges || $[6] !== viewBox) {
299
- t2 = {
300
- graph,
301
- routedEdges,
302
- viewBox
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 = $[7];
329
+ t2 = $[4];
310
330
  }
311
- const model = t2;
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
- let t5;
324
- if ($[11] !== accent || $[12] !== model || $[13] !== paper || $[14] !== progress) {
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, model, {
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
- t5 = [accent, model, paper, progress];
338
- $[11] = accent;
339
- $[12] = model;
340
- $[13] = paper;
341
- $[14] = progress;
342
- $[15] = t4;
343
- $[16] = t5;
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
- t4 = $[15];
346
- t5 = $[16];
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 ($[17] !== model.viewBox.w) {
352
- t7 = Math.round(model.viewBox.w);
353
- $[17] = model.viewBox.w;
354
- $[18] = t7;
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 = $[18];
374
+ t7 = $[14];
357
375
  }
358
376
  let t8;
359
- if ($[19] !== model.viewBox.h) {
360
- t8 = Math.round(model.viewBox.h);
361
- $[19] = model.viewBox.h;
362
- $[20] = t8;
377
+ if ($[15] !== title) {
378
+ t8 = title.join(" ");
379
+ $[15] = title;
380
+ $[16] = t8;
363
381
  } else {
364
- t8 = $[20];
382
+ t8 = $[16];
365
383
  }
366
384
  let t9;
367
- if ($[21] !== title) {
368
- t9 = title.join(" ");
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": t6,
380
- width: t7,
381
- height: t8,
382
- "aria-label": t9,
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
- $[23] = t6;
387
- $[24] = t7;
388
- $[25] = t8;
389
- $[26] = t9;
390
- $[27] = viewportProps;
391
- $[28] = t10;
396
+ $[17] = t5;
397
+ $[18] = t6;
398
+ $[19] = t7;
399
+ $[20] = t8;
400
+ $[21] = viewportProps;
401
+ $[22] = t9;
392
402
  } else {
393
- t10 = $[28];
403
+ t9 = $[22];
394
404
  }
395
- return t10;
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":";AAAA,SAASA,SAAS,EAAEC,OAAO,EAAEC,MAAM,QAAQ,OAAO;AAElD,SAASC,YAAY,EAAEC,aAAa,QAAQ,mCAAmC;AAC/E,SACEC,YAAY,EACZC,mBAAmB,EACnBC,QAAQ,EACRC,eAAe,EACfC,OAAO,EACPC,eAAe,EACfC,kBAAkB,QACb,qCAAqC;AAU5C,SACEC,UAAU,EACVC,WAAW,EACXC,eAAe,EACfC,YAAY,EACZC,YAAY,EACZC,sBAAsB,EACtBC,wBAAwB,EACxBC,eAAe,QACV,6BAA6B;AAEpC,SAASC,aAAa,EAAEC,eAAe,QAAQ,0BAA2B;AAC1E,SAASC,iBAAiB,QAAQ,2BAA2B;AAE7D,SAASC,mBAAmB,QAAQ,sBAAsB;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAQ3D,SAASC,eAAeA,CACtBC,OAAoB,EACpBC,KAAa,EACbC,QAAQ,GAAG,SAAS,EACpB;EACA,MAAMC,QAAQ,GAAGF,KAAK,CAACG,KAAK,CAAC,oCAAoC,CAAC;EAClE,MAAMC,IAAI,GAAGF,QAAQ,GAAG,CAAC,CAAC;EAC1B,IAAIE,IAAI,KAAKC,SAAS,EAAE,OAAOL,KAAK;EACpC,MAAMM,QAAQ,GAAGC,MAAM,CACpBC,gBAAgB,CAACT,OAAO,CAAC,CACzBU,gBAAgB,CAACL,IAAI,CAAC,CACtBM,IAAI,CAAC,CAAC;EACT,OAAOJ,QAAQ,IAAIJ,QAAQ,GAAG,CAAC,CAAC,EAAEQ,IAAI,CAAC,CAAC,IAAIT,QAAQ;AACtD;AAEA,SAASU,QAAQA,CAACC,IAAiB,EAAE;EACnC,IAAIA,IAAI,CAACC,SAAS,KAAK,QAAQ,EAAE,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC;EAC9C,IAAID,IAAI,CAACC,SAAS,KAAK,QAAQ,EAAE,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC;EAC9C,OAAO,EAAE;AACX;AAEA,SAASC,aAAaA,CAACC,KAAkC,EAAE;EACzD,OAAO,CAACC,KAAK,CAACC,OAAO,CAACF,KAAK,CAAC,GAAGA,KAAK,GAAG,CAACA,KAAK,CAAC,EAAEG,GAAG,CAAEC,IAAI,IACvD,OAAOA,IAAI,KAAK,QAAQ,GAAGA,IAAI,GAAGA,IAAI,CAACC,IACzC,CAAC;AACH;AAEA,SAASC,eAAeA,CACtBC,GAA6B,EAC7BC,GAAQ,EACRC,MAAc,EACd;EACA,MAAMC,EAAE,GAAGC,IAAI,CAACC,GAAG,CAACH,MAAM,EAAED,GAAG,CAACK,CAAC,GAAG,CAAC,EAAEL,GAAG,CAACM,CAAC,GAAG,CAAC,CAAC;EACjDP,GAAG,CAACQ,SAAS,CAAC,CAAC;EACfR,GAAG,CAACS,MAAM,CAACR,GAAG,CAACS,CAAC,GAAGP,EAAE,EAAEF,GAAG,CAACU,CAAC,CAAC;EAC7BX,GAAG,CAACY,MAAM,CAACX,GAAG,CAACS,CAAC,GAAGT,GAAG,CAACK,CAAC,GAAGH,EAAE,EAAEF,GAAG,CAACU,CAAC,CAAC;EACrCX,GAAG,CAACa,gBAAgB,CAACZ,GAAG,CAACS,CAAC,GAAGT,GAAG,CAACK,CAAC,EAAEL,GAAG,CAACU,CAAC,EAAEV,GAAG,CAACS,CAAC,GAAGT,GAAG,CAACK,CAAC,EAAEL,GAAG,CAACU,CAAC,GAAGR,EAAE,CAAC;EACrEH,GAAG,CAACY,MAAM,CAACX,GAAG,CAACS,CAAC,GAAGT,GAAG,CAACK,CAAC,EAAEL,GAAG,CAACU,CAAC,GAAGV,GAAG,CAACM,CAAC,GAAGJ,EAAE,CAAC;EAC7CH,GAAG,CAACa,gBAAgB,CAClBZ,GAAG,CAACS,CAAC,GAAGT,GAAG,CAACK,CAAC,EACbL,GAAG,CAACU,CAAC,GAAGV,GAAG,CAACM,CAAC,EACbN,GAAG,CAACS,CAAC,GAAGT,GAAG,CAACK,CAAC,GAAGH,EAAE,EAClBF,GAAG,CAACU,CAAC,GAAGV,GAAG,CAACM,CACd,CAAC;EACDP,GAAG,CAACY,MAAM,CAACX,GAAG,CAACS,CAAC,GAAGP,EAAE,EAAEF,GAAG,CAACU,CAAC,GAAGV,GAAG,CAACM,CAAC,CAAC;EACrCP,GAAG,CAACa,gBAAgB,CAACZ,GAAG,CAACS,CAAC,EAAET,GAAG,CAACU,CAAC,GAAGV,GAAG,CAACM,CAAC,EAAEN,GAAG,CAACS,CAAC,EAAET,GAAG,CAACU,CAAC,GAAGV,GAAG,CAACM,CAAC,GAAGJ,EAAE,CAAC;EACrEH,GAAG,CAACY,MAAM,CAACX,GAAG,CAACS,CAAC,EAAET,GAAG,CAACU,CAAC,GAAGR,EAAE,CAAC;EAC7BH,GAAG,CAACa,gBAAgB,CAACZ,GAAG,CAACS,CAAC,EAAET,GAAG,CAACU,CAAC,EAAEV,GAAG,CAACS,CAAC,GAAGP,EAAE,EAAEF,GAAG,CAACU,CAAC,CAAC;EACrDX,GAAG,CAACc,SAAS,CAAC,CAAC;AACjB;AAEA,SAASC,YAAYA,CACnBf,GAA6B,EAC7BC,GAAQ,EACRe,OAAmC,EACnC;EACA,IAAI,CAACA,OAAO,IAAIA,OAAO,KAAK,MAAM,EAAE;EACpChB,GAAG,CAACiB,IAAI,CAAC,CAAC;EACVjB,GAAG,CAACkB,IAAI,CAAC,CAAC;EACVlB,GAAG,CAACmB,WAAW,GAAG,qBAAqB;EACvCnB,GAAG,CAACoB,SAAS,GAAG,GAAG;EACnB,IAAIJ,OAAO,KAAK,MAAM,EAAE;IACtBhB,GAAG,CAACqB,SAAS,GAAG,qBAAqB;IACrC,KAAK,IAAIX,CAAC,GAAGT,GAAG,CAACS,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGT,GAAG,CAACS,CAAC,GAAGT,GAAG,CAACK,CAAC,EAAEI,CAAC,IAAI,CAAC,EAAE;MACjD,KAAK,IAAIC,CAAC,GAAGV,GAAG,CAACU,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGV,GAAG,CAACU,CAAC,GAAGV,GAAG,CAACM,CAAC,EAAEI,CAAC,IAAI,CAAC,EAAE;QACjDX,GAAG,CAACQ,SAAS,CAAC,CAAC;QACfR,GAAG,CAACsB,GAAG,CAACZ,CAAC,EAAEC,CAAC,EAAE,GAAG,EAAE,CAAC,EAAEP,IAAI,CAACmB,EAAE,GAAG,CAAC,CAAC;QAClCvB,GAAG,CAACwB,IAAI,CAAC,CAAC;MACZ;IACF;EACF,CAAC,MAAM;IACL,KAAK,IAAId,CAAC,GAAGT,GAAG,CAACS,CAAC,GAAGT,GAAG,CAACM,CAAC,EAAEG,CAAC,GAAGT,GAAG,CAACS,CAAC,GAAGT,GAAG,CAACK,CAAC,EAAEI,CAAC,IAAI,CAAC,EAAE;MACrDV,GAAG,CAACQ,SAAS,CAAC,CAAC;MACfR,GAAG,CAACS,MAAM,CAACC,CAAC,EAAET,GAAG,CAACU,CAAC,GAAGV,GAAG,CAACM,CAAC,CAAC;MAC5BP,GAAG,CAACY,MAAM,CAACF,CAAC,GAAGT,GAAG,CAACM,CAAC,EAAEN,GAAG,CAACU,CAAC,CAAC;MAC5BX,GAAG,CAACyB,MAAM,CAAC,CAAC;IACd;EACF;EACAzB,GAAG,CAAC0B,OAAO,CAAC,CAAC;AACf;AAEA,SAASC,aAAaA,CACpB3B,GAA6B,EAC7B4B,KAAe,EACflB,CAAS,EACTmB,MAAc,EACdC,UAAkB,EAClBC,KAAsB,EACtB;EACA/B,GAAG,CAACgC,SAAS,GAAGD,KAAK;EACrB/B,GAAG,CAACiC,YAAY,GAAG,YAAY;EAC/BL,KAAK,CAACM,OAAO,CAAC,CAACrC,IAAI,EAAEsC,KAAK,KAAK;IAC7BnC,GAAG,CAACoC,QAAQ,CAACvC,IAAI,EAAEa,CAAC,EAAEmB,MAAM,GAAGM,KAAK,GAAGL,UAAU,CAAC;EACpD,CAAC,CAAC;AACJ;AAEA,SAASO,aAAaA,CACpBrC,GAA6B,EAC7BsC,IAA8B,EAC9BC,EAA4B,EAC5BC,KAAa,EACb;EACA,MAAMC,KAAK,GAAGrC,IAAI,CAACsC,KAAK,CAACH,EAAE,CAAC5B,CAAC,GAAG2B,IAAI,CAAC3B,CAAC,EAAE4B,EAAE,CAAC7B,CAAC,GAAG4B,IAAI,CAAC5B,CAAC,CAAC;EACtD,MAAMiC,IAAI,GAAG,CAAC;EACd3C,GAAG,CAACiB,IAAI,CAAC,CAAC;EACVjB,GAAG,CAAC4C,SAAS,CAACL,EAAE,CAAC7B,CAAC,EAAE6B,EAAE,CAAC5B,CAAC,CAAC;EACzBX,GAAG,CAAC6C,MAAM,CAACJ,KAAK,CAAC;EACjBzC,GAAG,CAACmB,WAAW,GAAGqB,KAAK;EACvBxC,GAAG,CAACoB,SAAS,GAAG,GAAG;EACnBpB,GAAG,CAACQ,SAAS,CAAC,CAAC;EACfR,GAAG,CAACS,MAAM,CAAC,CAACkC,IAAI,EAAE,CAACA,IAAI,GAAG,CAAC,CAAC;EAC5B3C,GAAG,CAACY,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC;EAChBZ,GAAG,CAACY,MAAM,CAAC,CAAC+B,IAAI,EAAEA,IAAI,GAAG,CAAC,CAAC;EAC3B3C,GAAG,CAACyB,MAAM,CAAC,CAAC;EACZzB,GAAG,CAAC0B,OAAO,CAAC,CAAC;AACf;AAEA,SAASoB,eAAeA,CACtBC,MAAyB,EACzBC,KAAuB,EACvBC,OAGC,EACD;EACA,MAAMjD,GAAG,GAAG+C,MAAM,CAACG,UAAU,CAAC,IAAI,CAAC;EACnC,IAAI,CAAClD,GAAG,EAAE;EACV,MAAMmD,GAAG,GAAGlE,MAAM,CAACmE,gBAAgB,IAAI,CAAC;EACxCL,MAAM,CAACM,KAAK,GAAGjD,IAAI,CAACkD,KAAK,CAACN,KAAK,CAACO,OAAO,CAACjD,CAAC,GAAG6C,GAAG,CAAC;EAChDJ,MAAM,CAACS,MAAM,GAAGpD,IAAI,CAACkD,KAAK,CAACN,KAAK,CAACO,OAAO,CAAChD,CAAC,GAAG4C,GAAG,CAAC;EACjDnD,GAAG,CAACyD,YAAY,CAACN,GAAG,EAAE,CAAC,EAAE,CAAC,EAAEA,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;EACtCnD,GAAG,CAAC0D,SAAS,CAAC,CAAC,EAAE,CAAC,EAAEV,KAAK,CAACO,OAAO,CAACjD,CAAC,EAAE0C,KAAK,CAACO,OAAO,CAAChD,CAAC,CAAC;EACrDP,GAAG,CAAC4C,SAAS,CAAC,CAACI,KAAK,CAACO,OAAO,CAAC7C,CAAC,EAAE,CAACsC,KAAK,CAACO,OAAO,CAAC5C,CAAC,CAAC;EAEjD,MAAMgD,MAAM,GAAGnF,eAAe,CAACuE,MAAM,EAAEE,OAAO,CAACU,MAAM,EAAE,SAAS,CAAC;EACjE,MAAMC,EAAE,GAAGpF,eAAe,CAACuE,MAAM,EAAErF,UAAU,EAAE,SAAS,CAAC;EACzD,MAAMoC,IAAI,GAAGtB,eAAe,CAACuE,MAAM,EAAElF,YAAY,EAAE,SAAS,CAAC;EAC7D,MAAMgG,GAAG,GAAGrF,eAAe,CAACuE,MAAM,EAAEpF,WAAW,EAAE,qBAAqB,CAAC;EACvE,MAAMmG,OAAO,GAAGtF,eAAe,CAC7BuE,MAAM,EACNnF,eAAe,EACf,qBACF,CAAC;EAED,IAAIqF,OAAO,CAACc,KAAK,EAAE;IACjB/D,GAAG,CAACqB,SAAS,GAAGuC,EAAE;IAClB5D,GAAG,CAACgE,QAAQ,CACVhB,KAAK,CAACO,OAAO,CAAC7C,CAAC,EACfsC,KAAK,CAACO,OAAO,CAAC5C,CAAC,EACfqC,KAAK,CAACO,OAAO,CAACjD,CAAC,EACf0C,KAAK,CAACO,OAAO,CAAChD,CAChB,CAAC;EACH;EAEA,KAAK,MAAM0D,KAAK,IAAIjB,KAAK,CAACkB,KAAK,CAACC,MAAM,IAAI,EAAE,EAAE;IAC5C,MAAMlE,GAAG,GAAG5C,QAAQ,CAClB4G,KAAK,EACLjB,KAAK,CAACkB,KAAK,CAACE,KAAK,EACjBpB,KAAK,CAACkB,KAAK,CAACG,MAAM,EAClBrB,KAAK,CAACkB,KAAK,CAACC,MACd,CAAC;IACD,MAAM1C,MAAM,GACVwC,KAAK,CAACK,KAAK,KAAK,QAAQ,GACpBT,GAAG,GACHI,KAAK,CAACN,MAAM,GACVA,MAAM,GACNM,KAAK,CAACM,IAAI,GACR/F,eAAe,CAACuE,MAAM,EAAE/E,wBAAwB,CAACiG,KAAK,CAACM,IAAI,CAAC,CAAC,GAC7DT,OAAO;IACjB,MAAMtC,IAAI,GAAGyC,KAAK,CAACM,IAAI,GACnB/F,eAAe,CAACuE,MAAM,EAAEhF,sBAAsB,CAACkG,KAAK,CAACM,IAAI,CAAC,CAAC,GAC3D,aAAa;IACjBvE,GAAG,CAACiB,IAAI,CAAC,CAAC;IACVjB,GAAG,CAACoB,SAAS,GAAG,GAAG;IACnBpB,GAAG,CAACwE,WAAW,CAACP,KAAK,CAACK,KAAK,KAAK,QAAQ,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC;IACvDtE,GAAG,CAACmB,WAAW,GAAG8C,KAAK,CAACK,KAAK,KAAK,MAAM,GAAG,aAAa,GAAG7C,MAAM;IACjEzB,GAAG,CAACqB,SAAS,GAAGG,IAAI;IACpBzB,eAAe,CAACC,GAAG,EAAEC,GAAG,EAAEgE,KAAK,CAAC9D,EAAE,IAAI,EAAE,CAAC;IACzCH,GAAG,CAACwB,IAAI,CAAC,CAAC;IACVxB,GAAG,CAACyB,MAAM,CAAC,CAAC;IACZzB,GAAG,CAAC0B,OAAO,CAAC,CAAC;IACbX,YAAY,CAACf,GAAG,EAAEC,GAAG,EAAEgE,KAAK,CAACjD,OAAO,CAAC;IACrChB,GAAG,CAACqB,SAAS,GAAGvB,IAAI;IACpBE,GAAG,CAACyE,IAAI,GAAG,+CAA+C;IAC1D9C,aAAa,CACX3B,GAAG,EACH1C,eAAe,CAAC2G,KAAK,CAAC,EACtBhE,GAAG,CAACS,CAAC,GAAGT,GAAG,CAACK,CAAC,GAAG,CAAC,EACjBL,GAAG,CAACU,CAAC,GAAG,EAAE,EACV,EAAE,EACF,QACF,CAAC;EACH;EAEA,KAAK,MAAM+D,MAAM,IAAI1B,KAAK,CAAC2B,WAAW,EAAE;IACtC,MAAM,CAACC,KAAK,EAAEC,MAAM,CAAC,GAAGH,MAAM,CAACI,MAAM;IACrC,MAAMxC,IAAI,GAAGoC,MAAM,CAACI,MAAM,CAACC,EAAE,CAAC,CAAC,CAAC,CAAC;IACjC,MAAMxC,EAAE,GAAGmC,MAAM,CAACI,MAAM,CAACC,EAAE,CAAC,CAAC,CAAC,CAAC;IAC/B,IAAI,CAACH,KAAK,IAAI,CAACC,MAAM,IAAI,CAACvC,IAAI,IAAI,CAACC,EAAE,EAAE;IACvC,MAAMC,KAAK,GAAGkC,MAAM,CAACpF,IAAI,CAACqE,MAAM,GAAGA,MAAM,GAAGe,MAAM,CAACpF,IAAI,CAACuE,GAAG,GAAGA,GAAG,GAAGC,OAAO;IAC3E9D,GAAG,CAACiB,IAAI,CAAC,CAAC;IACVjB,GAAG,CAACmB,WAAW,GAAGqB,KAAK;IACvBxC,GAAG,CAACoB,SAAS,GAAGsD,MAAM,CAACpF,IAAI,CAAC0F,WAAW,IAAI,GAAG;IAC9ChF,GAAG,CAACwE,WAAW,CAACnF,QAAQ,CAACqF,MAAM,CAACpF,IAAI,CAAC,CAAC;IACtCU,GAAG,CAACQ,SAAS,CAAC,CAAC;IACfR,GAAG,CAACS,MAAM,CAACmE,KAAK,CAAClE,CAAC,EAAEkE,KAAK,CAACjE,CAAC,CAAC;IAC5B,KAAK,MAAMsE,KAAK,IAAIP,MAAM,CAACI,MAAM,CAACI,KAAK,CAAC,CAAC,CAAC,EAAE;MAC1ClF,GAAG,CAACY,MAAM,CAACqE,KAAK,CAACvE,CAAC,EAAEuE,KAAK,CAACtE,CAAC,CAAC;IAC9B;IACAX,GAAG,CAACyB,MAAM,CAAC,CAAC;IACZzB,GAAG,CAAC0B,OAAO,CAAC,CAAC;IACb,IAAI,CAACgD,MAAM,CAACpF,IAAI,CAAC6F,SAAS,IAAI,SAAS,MAAM,MAAM,EAAE;MACnD9C,aAAa,CAACrC,GAAG,EAAEsC,IAAI,EAAEC,EAAE,EAAEC,KAAK,CAAC;IACrC;IACA,IAAIkC,MAAM,CAACpF,IAAI,CAAC6F,SAAS,KAAK,MAAM,EAAE;MACpC9C,aAAa,CAACrC,GAAG,EAAE6E,MAAM,EAAED,KAAK,EAAEpC,KAAK,CAAC;IAC1C;IACA,IAAIkC,MAAM,CAACpF,IAAI,CAACG,KAAK,EAAE2F,MAAM,IAAIV,MAAM,CAACW,cAAc,EAAE;MACtDrF,GAAG,CAACiB,IAAI,CAAC,CAAC;MACVjB,GAAG,CAACqB,SAAS,GAAGvB,IAAI;MACpBE,GAAG,CAACyE,IAAI,GAAG,2CAA2C;MACtD9C,aAAa,CACX3B,GAAG,EACH0E,MAAM,CAACpF,IAAI,CAACG,KAAK,EACjBiF,MAAM,CAACW,cAAc,CAAC3E,CAAC,EACvBgE,MAAM,CAACW,cAAc,CAAC1E,CAAC,EACvB,EAAE,EACF+D,MAAM,CAACW,cAAc,CAACtD,KAAK,KAAK,QAAQ,GACpC,QAAQ,GACR2C,MAAM,CAACW,cAAc,CAACtD,KAC5B,CAAC;MACD/B,GAAG,CAAC0B,OAAO,CAAC,CAAC;IACf;EACF;EAEA,KAAK,MAAM4D,IAAI,IAAItC,KAAK,CAACkB,KAAK,CAACE,KAAK,EAAE;IACpC,IAAIkB,IAAI,CAACC,MAAM,EAAE;IACjB,MAAMtF,GAAG,GAAG1C,OAAO,CAAC+H,IAAI,EAAEtC,KAAK,CAACkB,KAAK,CAACG,MAAM,CAAC;IAC7C,MAAMC,KAAK,GAAGgB,IAAI,CAAChB,KAAK,IAAI,OAAO;IACnC,MAAM9C,IAAI,GAAGhD,eAAe,CAACuE,MAAM,EAAE7E,aAAa,CAACoH,IAAI,EAAEhB,KAAK,CAAC,EAAE,SAAS,CAAC;IAC3E,MAAM7C,MAAM,GAAGjD,eAAe,CAC5BuE,MAAM,EACN5E,eAAe,CAACmH,IAAI,EAAEhB,KAAK,EAAEX,MAAM,CAAC,EACpC,SACF,CAAC;IACD3D,GAAG,CAACiB,IAAI,CAAC,CAAC;IACVjB,GAAG,CAACoB,SAAS,GAAG,GAAG;IACnBpB,GAAG,CAACqB,SAAS,GAAGG,IAAI;IACpBxB,GAAG,CAACmB,WAAW,GAAGM,MAAM;IACxB1B,eAAe,CAACC,GAAG,EAAEC,GAAG,EAAEzC,eAAe,CAAC8H,IAAI,CAAC,CAAC;IAChDtF,GAAG,CAACwB,IAAI,CAAC,CAAC;IACVxB,GAAG,CAACyB,MAAM,CAAC,CAAC;IACZV,YAAY,CAACf,GAAG,EAAEC,GAAG,EAAEqF,IAAI,CAACtE,OAAO,CAAC;IACpChB,GAAG,CAACqB,SAAS,GACXiE,IAAI,CAACE,SAAS,KAAK,QAAQ,GACvB7B,MAAM,GACN2B,IAAI,CAACE,SAAS,KAAK,KAAK,GACtB3B,GAAG,GACH/D,IAAI;IACZ,MAAM2F,QAAQ,GAAGH,IAAI,CAACG,QAAQ,IAAI,EAAE;IACpC,MAAM3D,UAAU,GAAG1B,IAAI,CAACsF,GAAG,CAAC,EAAE,EAAED,QAAQ,GAAG,CAAC,CAAC;IAC7C,MAAM7D,KAAK,GAAGpC,aAAa,CAAC8F,IAAI,CAAC7F,KAAK,CAAC;IACvCO,GAAG,CAACyE,IAAI,GAAG,GAAGa,IAAI,CAACK,UAAU,IAAI,GAAG,IAAIF,QAAQ,yCAAyC;IACzF,MAAMzD,SAAS,GAAGsD,IAAI,CAACtD,SAAS,IAAI,QAAQ;IAC5C,MAAMtB,CAAC,GAAGsB,SAAS,KAAK,OAAO,GAAG/B,GAAG,CAACS,CAAC,GAAG,EAAE,GAAGT,GAAG,CAACS,CAAC,GAAGT,GAAG,CAACK,CAAC,GAAG,CAAC;IAChE,MAAMK,CAAC,GACLV,GAAG,CAACU,CAAC,GAAGV,GAAG,CAACM,CAAC,GAAG,CAAC,GAAI,CAACqB,KAAK,CAACwD,MAAM,GAAG,CAAC,IAAItD,UAAU,GAAI,CAAC,GAAG2D,QAAQ,GAAG,CAAC;IAC1E9D,aAAa,CACX3B,GAAG,EACH4B,KAAK,EACLlB,CAAC,EACDC,CAAC,EACDmB,UAAU,EACVE,SAAS,KAAK,OAAO,GAAG,MAAM,GAAG,QACnC,CAAC;IACDhC,GAAG,CAAC0B,OAAO,CAAC,CAAC;EACf;AACF;AAMA,OAAO,SAAAkE,mBAAAC,EAAA;EAAA,MAAAC,CAAA,GAAAC,EAAA;EAAA,IAAAC,QAAA;EAAA,IAAAC,MAAA;EAAA,IAAA/B,KAAA;EAAA,IAAAH,KAAA;EAAA,IAAAmC,KAAA;EAAA,IAAAC,QAAA;EAAA,IAAAL,CAAA,QAAAD,EAAA;IAA4B;MAAAK,KAAA;MAAAF,QAAA;MAAA9B,KAAA;MAAAiC,QAAA;MAAApC,KAAA;MAAA,GAAAkC;IAAA,IAAAJ,EAOT;IAAAC,CAAA,MAAAD,EAAA;IAAAC,CAAA,MAAAE,QAAA;IAAAF,CAAA,MAAAG,MAAA;IAAAH,CAAA,MAAA5B,KAAA;IAAA4B,CAAA,MAAA/B,KAAA;IAAA+B,CAAA,MAAAI,KAAA;IAAAJ,CAAA,MAAAK,QAAA;EAAA;IAAAH,QAAA,GAAAF,CAAA;IAAAG,MAAA,GAAAH,CAAA;IAAA5B,KAAA,GAAA4B,CAAA;IAAA/B,KAAA,GAAA+B,CAAA;IAAAI,KAAA,GAAAJ,CAAA;IAAAK,QAAA,GAAAL,CAAA;EAAA;EAAA,IAAAM,EAAA;EAAA,IAAAN,CAAA,QAAAE,QAAA,IAAAF,CAAA,QAAA5B,KAAA;IACxBkC,EAAA,GAAWnJ,YAAY,CAAC+I,QAAQ,EAAE9B,KAAK,CAAC;IACxC9F,iBAAiB,CAACgI,EAAE,EAAE,oBAAoB,CAAC;IAAAN,CAAA,MAAAE,QAAA;IAAAF,CAAA,MAAA5B,KAAA;IAAA4B,CAAA,MAAAM,EAAA;EAAA;IAAAA,EAAA,GAAAN,CAAA;EAAA;EAAA,IAAAO,EAAA;EAAA,IAAAP,CAAA,SAAAI,KAAA;IAC7BG,EAAA,IAACH,KAAK,CAAC,CAAAI,IAAK,CAAC,CAAC;IAAAR,CAAA,OAAAI,KAAA;IAAAJ,CAAA,OAAAO,EAAA;EAAA;IAAAA,EAAA,GAAAP,CAAA;EAAA;EAA5B,MAAAlE,KAAA,GAAcyE,EAAc;EAEO,MAAAE,EAAA,GAAAJ,QAAQ,EAAAK,GAAK;EAAA,IAAAC,EAAA;EAAA,IAAAX,CAAA,SAAAM,EAAA,IAAAN,CAAA,SAAAlE,KAAA,IAAAkE,CAAA,SAAA/B,KAAA,IAAA+B,CAAA,SAAAK,QAAA;IAC3CM,EAAA,GAAAC,QAAA,iBACCnI,IAAA,CAACoI,WAAW;MACNP,EAAE,EAAFA,EAAE;MACCxE,KAAK,EAALA,KAAK;MACF8E,QAAQ,EAARA,QAAQ;MACRP,QAAQ,EAARA,QAAQ;MACXpC,KAAK,EAALA;IAAK,CACb,CACF;IAAA+B,CAAA,OAAAM,EAAA;IAAAN,CAAA,OAAAlE,KAAA;IAAAkE,CAAA,OAAA/B,KAAA;IAAA+B,CAAA,OAAAK,QAAA;IAAAL,CAAA,OAAAW,EAAA;EAAA;IAAAA,EAAA,GAAAX,CAAA;EAAA;EAAA,IAAAc,EAAA;EAAA,IAAAd,CAAA,SAAAG,MAAA,IAAAH,CAAA,SAAAlE,KAAA,IAAAkE,CAAA,SAAAS,EAAA,IAAAT,CAAA,SAAAW,EAAA;IATHG,EAAA,gBAAArI,IAAA,CAACT,YAAY;MAAQ8D,KAAK,EAALA,KAAK;MAAO4E,GAAa,EAAbD,EAAa;MAAA,GAAMN,MAAM;MAAAD,QAAA,EACvDS;IAQA,CACW,CAAC;IAAAX,CAAA,OAAAG,MAAA;IAAAH,CAAA,OAAAlE,KAAA;IAAAkE,CAAA,OAAAS,EAAA;IAAAT,CAAA,OAAAW,EAAA;IAAAX,CAAA,OAAAc,EAAA;EAAA;IAAAA,EAAA,GAAAd,CAAA;EAAA;EAAA,OAVfc,EAUe;AAAA;AAInB,SAAAD,YAAAd,EAAA;EAAA,MAAAC,CAAA,GAAAC,EAAA;EAAqB;IAAAK,EAAA;IAAAF,KAAA;IAAAQ,QAAA;IAAAP,QAAA;IAAApC;EAAA,IAAA8B,EAMA;EACnB,MAAAgB,SAAA,GAAkB7J,MAAM,CAAoB,IAAI,CAAC;EACjD;IAAA2G;EAAA,IAAmB1F,eAAe,CAAC,CAAC;EACpCf,aAAa,CAACkJ,EAAE,CAAC;EAAA,IAAAlC,KAAA;EAAA,IAAAS,WAAA;EAAA,IAAA0B,EAAA;EAAA,IAAAP,CAAA,QAAAM,EAAA;IAEflC,KAAA,GAAczG,kBAAkB,CAAC2I,EAAE,CAAC;IACpCzB,WAAA,GAAoBxH,YAAY,CAAC+G,KAAK,CAAC;IACvBmC,EAAA,GAAAjJ,mBAAmB,CAAC8G,KAAK,EAAES,WAAW,CAAC;IAAAmB,CAAA,MAAAM,EAAA;IAAAN,CAAA,MAAA5B,KAAA;IAAA4B,CAAA,MAAAnB,WAAA;IAAAmB,CAAA,MAAAO,EAAA;EAAA;IAAAnC,KAAA,GAAA4B,CAAA;IAAAnB,WAAA,GAAAmB,CAAA;IAAAO,EAAA,GAAAP,CAAA;EAAA;EAAvD,MAAAvC,OAAA,GAAgB8C,EAAuC;EAAC,IAAAE,EAAA;EAAA,IAAAT,CAAA,QAAA5B,KAAA,IAAA4B,CAAA,QAAAnB,WAAA,IAAAmB,CAAA,QAAAvC,OAAA;IACjDgD,EAAA;MAAArC,KAAA;MAAAS,WAAA;MAAApB;IAA8B,CAAC;IAAAuC,CAAA,MAAA5B,KAAA;IAAA4B,CAAA,MAAAnB,WAAA;IAAAmB,CAAA,MAAAvC,OAAA;IAAAuC,CAAA,MAAAS,EAAA;EAAA;IAAAA,EAAA,GAAAT,CAAA;EAAA;EAJxC,MAAA9C,KAAA,GAIEuD,EAAuC;EAChC,IAAAE,EAAA;EAAA,IAAAX,CAAA,QAAA9C,KAAA,CAAAO,OAAA,IAAAuC,CAAA,QAAAK,QAAA;IACaM,EAAA,GAAApI,mBAAmB,CAAC2E,KAAK,CAAAO,OAAQ,EAAE4C,QAAQ,CAAC;IAAAL,CAAA,MAAA9C,KAAA,CAAAO,OAAA;IAAAuC,CAAA,MAAAK,QAAA;IAAAL,CAAA,OAAAW,EAAA;EAAA;IAAAA,EAAA,GAAAX,CAAA;EAAA;EAAlE,MAAAgB,aAAA,GAAsBL,EAA4C;EAAC,IAAAG,EAAA;EAAA,IAAAG,EAAA;EAAA,IAAAjB,CAAA,SAAAnC,MAAA,IAAAmC,CAAA,SAAA9C,KAAA,IAAA8C,CAAA,SAAA/B,KAAA,IAAA+B,CAAA,SAAAY,QAAA;IAEzDE,EAAA,GAAAA,CAAA;MACR,MAAA7D,MAAA,GAAe8D,SAAS,CAAAG,OAAQ;MAChC,IAAI,CAACjE,MAAM;QAAA;MAAA;MACX,MAAAkE,IAAA,GAAaA,CAAA,KAAMnE,eAAe,CAACC,MAAM,EAAEC,KAAK,EAAE;QAAAW,MAAA;QAAAI;MAAgB,CAAC,CAAC;MACpEkD,IAAI,CAAC,CAAC;MAAA,OACCP,QAAQ,CAAAQ,EAAG,CAAC,QAAQ,EAAED,IAAI,CAAC;IAAA,CACnC;IAAEF,EAAA,IAACpD,MAAM,EAAEX,KAAK,EAAEe,KAAK,EAAE2C,QAAQ,CAAC;IAAAZ,CAAA,OAAAnC,MAAA;IAAAmC,CAAA,OAAA9C,KAAA;IAAA8C,CAAA,OAAA/B,KAAA;IAAA+B,CAAA,OAAAY,QAAA;IAAAZ,CAAA,OAAAc,EAAA;IAAAd,CAAA,OAAAiB,EAAA;EAAA;IAAAH,EAAA,GAAAd,CAAA;IAAAiB,EAAA,GAAAjB,CAAA;EAAA;EANnChJ,SAAS,CAAC8J,EAMT,EAAEG,EAAgC,CAAC;EAMH,MAAAI,EAAA,MAAGnE,KAAK,CAAAO,OAAQ,CAAA7C,CAAE,IAAIsC,KAAK,CAAAO,OAAQ,CAAA5C,CAAE,IAAIqC,KAAK,CAAAO,OAAQ,CAAAjD,CAAE,IAAI0C,KAAK,CAAAO,OAAQ,CAAAhD,CAAE,EAAE;EAAA,IAAA6G,EAAA;EAAA,IAAAtB,CAAA,SAAA9C,KAAA,CAAAO,OAAA,CAAAjD,CAAA;IACnG8G,EAAA,GAAAhH,IAAI,CAAAkD,KAAM,CAACN,KAAK,CAAAO,OAAQ,CAAAjD,CAAE,CAAC;IAAAwF,CAAA,OAAA9C,KAAA,CAAAO,OAAA,CAAAjD,CAAA;IAAAwF,CAAA,OAAAsB,EAAA;EAAA;IAAAA,EAAA,GAAAtB,CAAA;EAAA;EAAA,IAAAuB,EAAA;EAAA,IAAAvB,CAAA,SAAA9C,KAAA,CAAAO,OAAA,CAAAhD,CAAA;IAC1B8G,EAAA,GAAAjH,IAAI,CAAAkD,KAAM,CAACN,KAAK,CAAAO,OAAQ,CAAAhD,CAAE,CAAC;IAAAuF,CAAA,OAAA9C,KAAA,CAAAO,OAAA,CAAAhD,CAAA;IAAAuF,CAAA,OAAAuB,EAAA;EAAA;IAAAA,EAAA,GAAAvB,CAAA;EAAA;EAAA,IAAAwB,EAAA;EAAA,IAAAxB,CAAA,SAAAI,KAAA;IACvBoB,EAAA,GAAApB,KAAK,CAAAqB,IAAK,CAAC,GAAG,CAAC;IAAAzB,CAAA,OAAAI,KAAA;IAAAJ,CAAA,OAAAwB,EAAA;EAAA;IAAAA,EAAA,GAAAxB,CAAA;EAAA;EAAA,IAAA0B,GAAA;EAAA,IAAA1B,CAAA,SAAAqB,EAAA,IAAArB,CAAA,SAAAsB,EAAA,IAAAtB,CAAA,SAAAuB,EAAA,IAAAvB,CAAA,SAAAwB,EAAA,IAAAxB,CAAA,SAAAgB,aAAA;IAN7BU,GAAA,gBAAAjJ,IAAA;MACOsI,GAAS,EAATA,SAAS;MACM,8BAAO;MACE,+BAAAM,EAA6E;MACnG9D,KAA2B,EAA3B+D,EAA2B;MAC1B5D,MAA2B,EAA3B6D,EAA2B;MACvB,cAAAC,EAAe;MACtBG,IAAK,EAAL,KAAK;MAAA,GACNX;IAAa,CAClB,CAAC;IAAAhB,CAAA,OAAAqB,EAAA;IAAArB,CAAA,OAAAsB,EAAA;IAAAtB,CAAA,OAAAuB,EAAA;IAAAvB,CAAA,OAAAwB,EAAA;IAAAxB,CAAA,OAAAgB,aAAA;IAAAhB,CAAA,OAAA0B,GAAA;EAAA;IAAAA,GAAA,GAAA1B,CAAA;EAAA;EAAA,OATF0B,GASE;AAAA","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":"AAiBA,OAAO,KAAK,EAEV,kBAAkB,EAIlB,eAAe,EAChB,MAAM,2BAA2B,CAAC;AAOnC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AA+BjE,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"}
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"}