@zukhruf/diagram 0.3.30 → 0.3.32

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 +196 -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 +25 -0
  14. package/dist/lib/layouts/graph/gutters.d.ts.map +1 -0
  15. package/dist/lib/layouts/graph/gutters.js +124 -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 +164 -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 +53 -0
  38. package/dist/lib/layouts/graph/tokens.d.ts.map +1 -0
  39. package/dist/lib/layouts/graph/tokens.js +95 -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 +11 -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,16 +1,16 @@
1
1
  import { c as _c } from "react/compiler-runtime";
2
2
  import { motion, useTransform } from 'motion/react';
3
- import { compileGraph, validateGraph } from "../../compiler/diagram-compile.js";
4
- import { computePaths, graphContentViewBox, groupBox, groupDividerLines, nodeBox, nodeFrameRadius, nodeFrameStrokeWidth, nodeStackCount, resolveGraphAnnotations, 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_DOT, DIAGRAM_HATCH, DiagramFrame, useDiagramTheme } from "../../react/chrome/index.js";
6
7
  import { DiagramDefs } from "../shared/defs.js";
7
- import { DiagramNodeIcon, EdgeOverlay, EdgeStroke, GroupRect, buildSegments, labelLineFill, nodeFrameFill, nodeFrameStroke, nodeTextFill, nodeTexture } from "../shared/graph-parts.js";
8
- import { ANNOTATION_REVEAL_START, AnnotationText, NodeCaption, NodePorts, NodeStackFrames, SpecialNode, isSpecialNode } from "../shared/node-parts.js";
8
+ import { DiagramNodeIcon, EdgeOverlay, EdgeStroke, GroupRect, buildSegments, nodeFrameFill, nodeFrameStroke, nodeFrameStrokeWidth, nodeTextFill, nodeTexture } from "../shared/graph-parts.js";
9
+ import { ANNOTATION_REVEAL_START, AnnotationText, NodeCaption, NodePorts, NodeStackFrames, SpecialNode, isSpecialNode, splitNotes } from "../shared/node-parts.js";
9
10
  import { DiagramPaperRect } from "../shared/paper.js";
11
+ import { nodeTextParts, runFill } from "../shared/text-runs.js";
10
12
  import { formatZoom, normalizeZoom } from "../shared/viewport-zoom.js";
11
13
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
12
- const MONO = "ui-monospace, 'Geist Mono', monospace";
13
- const SANS = 'ui-sans-serif, system-ui, sans-serif';
14
14
  export function HtmlGraphDiagram(t0) {
15
15
  const $ = _c(23);
16
16
  let children;
@@ -117,7 +117,6 @@ function GraphHTML(t0) {
117
117
  const {
118
118
  stylePreset
119
119
  } = useDiagramTheme();
120
- validateGraph(ir);
121
120
  let t1;
122
121
  let t10;
123
122
  let t11;
@@ -125,6 +124,7 @@ function GraphHTML(t0) {
125
124
  let t13;
126
125
  let t14;
127
126
  let t15;
127
+ let t16;
128
128
  let t2;
129
129
  let t3;
130
130
  let t4;
@@ -134,11 +134,13 @@ function GraphHTML(t0) {
134
134
  let t8;
135
135
  let t9;
136
136
  if ($[0] !== ir || $[1] !== paper || $[2] !== progress || $[3] !== stylePreset || $[4] !== title || $[5] !== zoom) {
137
- const graph = resolveGraphLayout(ir);
138
- const layout = graph.layout;
139
- const segments = buildSegments(graph.nodes.length, graph.edges.length);
140
- const seg = (kind, t16) => {
141
- const index = t16 === undefined ? 0 : t16;
137
+ const layout = legacyGraphLayout(ir);
138
+ const {
139
+ viewBox
140
+ } = layout;
141
+ const segments = buildSegments(ir.nodes.length, ir.edges.length);
142
+ const seg = (kind, t17) => {
143
+ const index = t17 === undefined ? 0 : t17;
142
144
  const segment = segments.find(candidate => candidate.kind === kind && candidate.index === index);
143
145
  if (!segment) {
144
146
  throw new Error(`segment ${kind}[${index}] missing`);
@@ -146,21 +148,21 @@ function GraphHTML(t0) {
146
148
  return segment;
147
149
  };
148
150
  const groupsSeg = seg("groups");
149
- const routedEdges = computePaths(graph);
150
- const indexedEdges = routedEdges.map((routedEdge, index_0) => ({
151
- ...routedEdge,
151
+ const indexedEdges = layout.edges.map((edgeLayout, index_0) => ({
152
+ ...edgeLayout,
152
153
  index: index_0,
153
154
  segment: seg("edge", index_0),
154
- layer: routedEdge.edge.layer ?? "foreground"
155
+ layer: edgeLayout.edge.layer ?? "foreground"
155
156
  })).filter(_temp);
156
- const viewBox = graphContentViewBox(graph, routedEdges);
157
- const nodes = graph.nodes.map((node, i) => ({
158
- node,
159
- box: nodeBox(node, layout),
157
+ const {
158
+ graphNodes,
159
+ notes
160
+ } = splitNotes(layout.nodes);
161
+ const nodes = graphNodes.map((nodeLayout, i) => ({
162
+ layout: nodeLayout,
160
163
  segment: seg("node", i)
161
164
  })).filter(_temp2);
162
165
  const boxNodes = nodes.filter(_temp3);
163
- const annotations = resolveGraphAnnotations(graph);
164
166
  const svgLayer = {
165
167
  className: "pointer-events-none absolute inset-0 overflow-visible",
166
168
  width: viewBox.w,
@@ -169,21 +171,22 @@ function GraphHTML(t0) {
169
171
  "aria-hidden": true
170
172
  };
171
173
  t11 = "group";
172
- if ($[21] !== title) {
174
+ if ($[22] !== title) {
173
175
  t12 = title.join(" ");
174
- $[21] = title;
175
- $[22] = t12;
176
+ $[22] = title;
177
+ $[23] = t12;
176
178
  } else {
177
- t12 = $[22];
179
+ t12 = $[23];
178
180
  }
179
181
  t13 = "w-full overflow-x-auto";
180
- t14 = stylePreset;
181
- if ($[23] !== zoom) {
182
- t15 = formatZoom(zoom);
183
- $[23] = zoom;
184
- $[24] = t15;
182
+ t14 = TEXT_SHAPING;
183
+ t15 = stylePreset;
184
+ if ($[24] !== zoom) {
185
+ t16 = formatZoom(zoom);
186
+ $[24] = zoom;
187
+ $[25] = t16;
185
188
  } else {
186
- t15 = $[24];
189
+ t16 = $[25];
187
190
  }
188
191
  t6 = "relative mx-auto";
189
192
  t7 = {
@@ -192,22 +195,22 @@ function GraphHTML(t0) {
192
195
  zoom
193
196
  };
194
197
  t8 = "graph";
195
- let t17;
196
- if ($[25] === Symbol.for("react.memo_cache_sentinel")) {
197
- t17 = /*#__PURE__*/_jsx(DiagramDefs, {});
198
- $[25] = t17;
198
+ let t18;
199
+ if ($[26] === Symbol.for("react.memo_cache_sentinel")) {
200
+ t18 = /*#__PURE__*/_jsx(DiagramDefs, {});
201
+ $[26] = t18;
199
202
  } else {
200
- t17 = $[25];
203
+ t18 = $[26];
201
204
  }
202
- let t18;
203
- if ($[26] !== progress) {
204
- t18 = t19 => {
205
+ let t19;
206
+ if ($[27] !== progress) {
207
+ t19 = t20 => {
205
208
  const {
206
209
  d: d_0,
207
210
  edge,
208
211
  index: index_1,
209
212
  segment: segment_0
210
- } = t19;
213
+ } = t20;
211
214
  return /*#__PURE__*/_jsx(EdgeStroke, {
212
215
  d: d_0,
213
216
  edge: edge,
@@ -216,108 +219,98 @@ function GraphHTML(t0) {
216
219
  end: segment_0.end
217
220
  }, `edge-background-${index_1}`);
218
221
  };
219
- $[26] = progress;
220
- $[27] = t18;
222
+ $[27] = progress;
223
+ $[28] = t19;
221
224
  } else {
222
- t18 = $[27];
225
+ t19 = $[28];
223
226
  }
224
- let t19;
225
- if ($[28] !== progress) {
226
- t19 = t20 => {
227
+ let t20;
228
+ if ($[29] !== progress) {
229
+ t20 = t21 => {
227
230
  const {
228
- node: node_2,
229
- box,
231
+ layout: nodeLayout_0,
230
232
  segment: segment_1
231
- } = t20;
232
- return isSpecialNode(node_2) ? /*#__PURE__*/_jsx(SpecialNode, {
233
- node: node_2,
234
- box: box,
233
+ } = t21;
234
+ return isSpecialNode(nodeLayout_0.node) ? /*#__PURE__*/_jsx(SpecialNode, {
235
+ layout: nodeLayout_0,
235
236
  progress: progress,
236
237
  start: segment_1.start,
237
238
  end: segment_1.end
238
- }, `node-${node_2.id}`) : /*#__PURE__*/_jsx(NodeStack, {
239
- node: node_2,
240
- box: box,
239
+ }, `node-${nodeLayout_0.node.id}`) : /*#__PURE__*/_jsx(NodeStack, {
240
+ layout: nodeLayout_0,
241
241
  progress: progress,
242
242
  start: segment_1.start,
243
243
  end: segment_1.end
244
- }, `stack-${node_2.id}`);
244
+ }, `stack-${nodeLayout_0.node.id}`);
245
245
  };
246
- $[28] = progress;
247
- $[29] = t19;
246
+ $[29] = progress;
247
+ $[30] = t20;
248
248
  } else {
249
- t19 = $[29];
249
+ t20 = $[30];
250
250
  }
251
251
  t9 = /*#__PURE__*/_jsxs("svg", {
252
252
  ...svgLayer,
253
- children: [t17, /*#__PURE__*/_jsx(DiagramPaperRect, {
253
+ children: [t18, /*#__PURE__*/_jsx(DiagramPaperRect, {
254
254
  kind: "graph",
255
255
  paper: paper,
256
256
  x: viewBox.x,
257
257
  y: viewBox.y,
258
258
  width: viewBox.w,
259
259
  height: viewBox.h
260
- }), graph.groups?.map(group => /*#__PURE__*/_jsx(GroupRect, {
261
- group: group,
262
- box: groupBox(group, graph.nodes, layout, graph.groups),
263
- dividers: groupDividerLines(group, graph.nodes, layout, graph.groups),
260
+ }), layout.groups.map(groupLayout => /*#__PURE__*/_jsx(GroupRect, {
261
+ layout: groupLayout,
264
262
  progress: progress,
265
263
  start: groupsSeg.start,
266
264
  end: groupsSeg.end
267
- }, `group-${group.id}`)), indexedEdges.filter(_temp4).map(t18), nodes.map(t19)]
265
+ }, `group-${groupLayout.group.id}`)), indexedEdges.filter(_temp4).map(t19), nodes.map(t20)]
268
266
  });
269
- t10 = boxNodes.map(t20 => {
267
+ t10 = boxNodes.map(t21 => {
270
268
  const {
271
- node: node_3,
272
- box: box_0,
269
+ layout: nodeLayout_1,
273
270
  segment: segment_2
274
- } = t20;
271
+ } = t21;
275
272
  return /*#__PURE__*/_jsx(NodeBox, {
276
- node: node_3,
277
- box: box_0,
273
+ layout: nodeLayout_1,
278
274
  origin: viewBox,
279
275
  progress: progress,
280
276
  start: segment_2.start,
281
277
  end: segment_2.end
282
- }, `node-${node_3.id}`);
278
+ }, `node-${nodeLayout_1.node.id}`);
283
279
  });
284
280
  t1 = svgLayer;
285
- let t21;
286
- if ($[30] !== progress) {
287
- t21 = t22 => {
281
+ let t22;
282
+ if ($[31] !== progress) {
283
+ t22 = t23 => {
288
284
  const {
289
- node: node_4,
290
- box: box_1,
285
+ layout: nodeLayout_2,
291
286
  segment: segment_3
292
- } = t22;
287
+ } = t23;
293
288
  return /*#__PURE__*/_jsxs(NodeReveal, {
294
289
  progress: progress,
295
290
  start: segment_3.start,
296
291
  end: segment_3.end,
297
292
  children: [/*#__PURE__*/_jsx(NodePorts, {
298
- node: node_4,
299
- box: box_1
293
+ layout: nodeLayout_2
300
294
  }), /*#__PURE__*/_jsx(NodeCaption, {
301
- node: node_4,
302
- box: box_1
295
+ layout: nodeLayout_2
303
296
  })]
304
- }, `node-marks-${node_4.id}`);
297
+ }, `node-marks-${nodeLayout_2.node.id}`);
305
298
  };
306
- $[30] = progress;
307
- $[31] = t21;
299
+ $[31] = progress;
300
+ $[32] = t22;
308
301
  } else {
309
- t21 = $[31];
302
+ t22 = $[32];
310
303
  }
311
- t2 = boxNodes.map(t21);
312
- let t22;
313
- if ($[32] !== progress) {
314
- t22 = t23 => {
304
+ t2 = boxNodes.map(t22);
305
+ let t23;
306
+ if ($[33] !== progress) {
307
+ t23 = t24 => {
315
308
  const {
316
309
  d: d_1,
317
310
  edge: edge_0,
318
311
  index: index_2,
319
312
  segment: segment_4
320
- } = t23;
313
+ } = t24;
321
314
  return /*#__PURE__*/_jsx(EdgeStroke, {
322
315
  d: d_1,
323
316
  edge: edge_0,
@@ -326,52 +319,34 @@ function GraphHTML(t0) {
326
319
  end: segment_4.end
327
320
  }, `edge-foreground-${index_2}`);
328
321
  };
329
- $[32] = progress;
330
- $[33] = t22;
331
- } else {
332
- t22 = $[33];
333
- }
334
- t3 = indexedEdges.filter(_temp5).map(t22);
335
- let t23;
336
- if ($[34] !== progress) {
337
- t23 = t24 => {
338
- const {
339
- edge: edge_1,
340
- labelPlacement,
341
- badgePlacement,
342
- index: index_3,
343
- segment: segment_5
344
- } = t24;
345
- return /*#__PURE__*/_jsx(EdgeOverlay, {
346
- edge: edge_1,
347
- labelPlacement: labelPlacement,
348
- badgePlacement: badgePlacement,
349
- progress: progress,
350
- start: segment_5.start,
351
- end: segment_5.end
352
- }, `edge-overlay-${index_3}`);
353
- };
354
- $[34] = progress;
355
- $[35] = t23;
322
+ $[33] = progress;
323
+ $[34] = t23;
356
324
  } else {
357
- t23 = $[35];
325
+ t23 = $[34];
358
326
  }
359
- t4 = indexedEdges.map(t23);
327
+ t3 = indexedEdges.filter(_temp5).map(t23);
360
328
  let t24;
361
- if ($[36] !== progress) {
362
- t24 = (annotation, i_0) => /*#__PURE__*/_jsx(AnnotationText, {
363
- annotation: annotation,
329
+ if ($[35] !== progress) {
330
+ t24 = edgeLayout_0 => /*#__PURE__*/_jsx(EdgeOverlay, {
331
+ layout: edgeLayout_0,
364
332
  progress: progress,
365
- start: ANNOTATION_REVEAL_START,
366
- end: 1,
367
- index: i_0
368
- }, `annot-${i_0}`);
369
- $[36] = progress;
370
- $[37] = t24;
333
+ start: edgeLayout_0.segment.start,
334
+ end: edgeLayout_0.segment.end
335
+ }, `edge-overlay-${edgeLayout_0.index}`);
336
+ $[35] = progress;
337
+ $[36] = t24;
371
338
  } else {
372
- t24 = $[37];
339
+ t24 = $[36];
373
340
  }
374
- t5 = annotations.map(t24);
341
+ t4 = indexedEdges.map(t24);
342
+ t5 = notes.map(note => /*#__PURE__*/_jsx(AnnotationText, {
343
+ note: note,
344
+ annotations: ir.annotations,
345
+ leaders: layout.leaders,
346
+ progress: progress,
347
+ start: ANNOTATION_REVEAL_START,
348
+ end: 1
349
+ }, note.node.id));
375
350
  $[0] = ir;
376
351
  $[1] = paper;
377
352
  $[2] = progress;
@@ -385,14 +360,15 @@ function GraphHTML(t0) {
385
360
  $[10] = t13;
386
361
  $[11] = t14;
387
362
  $[12] = t15;
388
- $[13] = t2;
389
- $[14] = t3;
390
- $[15] = t4;
391
- $[16] = t5;
392
- $[17] = t6;
393
- $[18] = t7;
394
- $[19] = t8;
395
- $[20] = t9;
363
+ $[13] = t16;
364
+ $[14] = t2;
365
+ $[15] = t3;
366
+ $[16] = t4;
367
+ $[17] = t5;
368
+ $[18] = t6;
369
+ $[19] = t7;
370
+ $[20] = t8;
371
+ $[21] = t9;
396
372
  } else {
397
373
  t1 = $[6];
398
374
  t10 = $[7];
@@ -401,69 +377,72 @@ function GraphHTML(t0) {
401
377
  t13 = $[10];
402
378
  t14 = $[11];
403
379
  t15 = $[12];
404
- t2 = $[13];
405
- t3 = $[14];
406
- t4 = $[15];
407
- t5 = $[16];
408
- t6 = $[17];
409
- t7 = $[18];
410
- t8 = $[19];
411
- t9 = $[20];
380
+ t16 = $[13];
381
+ t2 = $[14];
382
+ t3 = $[15];
383
+ t4 = $[16];
384
+ t5 = $[17];
385
+ t6 = $[18];
386
+ t7 = $[19];
387
+ t8 = $[20];
388
+ t9 = $[21];
412
389
  }
413
- let t16;
414
- if ($[38] !== t1 || $[39] !== t2 || $[40] !== t3 || $[41] !== t4 || $[42] !== t5) {
415
- t16 = /*#__PURE__*/_jsxs("svg", {
390
+ let t17;
391
+ if ($[37] !== t1 || $[38] !== t2 || $[39] !== t3 || $[40] !== t4 || $[41] !== t5) {
392
+ t17 = /*#__PURE__*/_jsxs("svg", {
416
393
  ...t1,
417
394
  children: [t2, t3, t4, t5]
418
395
  });
419
- $[38] = t1;
420
- $[39] = t2;
421
- $[40] = t3;
422
- $[41] = t4;
423
- $[42] = t5;
424
- $[43] = t16;
396
+ $[37] = t1;
397
+ $[38] = t2;
398
+ $[39] = t3;
399
+ $[40] = t4;
400
+ $[41] = t5;
401
+ $[42] = t17;
425
402
  } else {
426
- t16 = $[43];
403
+ t17 = $[42];
427
404
  }
428
- let t17;
429
- if ($[44] !== t10 || $[45] !== t16 || $[46] !== t6 || $[47] !== t7 || $[48] !== t8 || $[49] !== t9) {
430
- t17 = /*#__PURE__*/_jsxs("div", {
405
+ let t18;
406
+ if ($[43] !== t10 || $[44] !== t17 || $[45] !== t6 || $[46] !== t7 || $[47] !== t8 || $[48] !== t9) {
407
+ t18 = /*#__PURE__*/_jsxs("div", {
431
408
  className: t6,
432
409
  style: t7,
433
410
  "data-diagram-html": t8,
434
- children: [t9, t10, t16]
411
+ children: [t9, t10, t17]
435
412
  });
436
- $[44] = t10;
437
- $[45] = t16;
438
- $[46] = t6;
439
- $[47] = t7;
440
- $[48] = t8;
441
- $[49] = t9;
442
- $[50] = t17;
413
+ $[43] = t10;
414
+ $[44] = t17;
415
+ $[45] = t6;
416
+ $[46] = t7;
417
+ $[47] = t8;
418
+ $[48] = t9;
419
+ $[49] = t18;
443
420
  } else {
444
- t17 = $[50];
421
+ t18 = $[49];
445
422
  }
446
- let t18;
447
- if ($[51] !== t11 || $[52] !== t12 || $[53] !== t13 || $[54] !== t14 || $[55] !== t15 || $[56] !== t17) {
448
- t18 = /*#__PURE__*/_jsx("div", {
423
+ let t19;
424
+ if ($[50] !== t11 || $[51] !== t12 || $[52] !== t13 || $[53] !== t14 || $[54] !== t15 || $[55] !== t16 || $[56] !== t18) {
425
+ t19 = /*#__PURE__*/_jsx("div", {
449
426
  role: t11,
450
427
  "aria-label": t12,
451
428
  className: t13,
452
- "data-diagram-style-preset": t14,
453
- "data-diagram-viewport-zoom": t15,
454
- children: t17
429
+ style: t14,
430
+ "data-diagram-style-preset": t15,
431
+ "data-diagram-viewport-zoom": t16,
432
+ children: t18
455
433
  });
456
- $[51] = t11;
457
- $[52] = t12;
458
- $[53] = t13;
459
- $[54] = t14;
460
- $[55] = t15;
461
- $[56] = t17;
462
- $[57] = t18;
463
- } else {
464
- t18 = $[57];
465
- }
466
- return t18;
434
+ $[50] = t11;
435
+ $[51] = t12;
436
+ $[52] = t13;
437
+ $[53] = t14;
438
+ $[54] = t15;
439
+ $[55] = t16;
440
+ $[56] = t18;
441
+ $[57] = t19;
442
+ } else {
443
+ t19 = $[57];
444
+ }
445
+ return t19;
467
446
  }
468
447
  function _temp5(t0) {
469
448
  const {
@@ -479,15 +458,21 @@ function _temp4(t0) {
479
458
  }
480
459
  function _temp3(t0) {
481
460
  const {
482
- node: node_1
461
+ layout: t1
483
462
  } = t0;
484
- return !isSpecialNode(node_1);
463
+ const {
464
+ node: node_0
465
+ } = t1;
466
+ return !isSpecialNode(node_0);
485
467
  }
486
468
  function _temp2(t0) {
487
469
  const {
488
- node: node_0
470
+ layout: t1
489
471
  } = t0;
490
- return !node_0.hidden;
472
+ const {
473
+ node
474
+ } = t1;
475
+ return !node.hidden;
491
476
  }
492
477
  function _temp(t0) {
493
478
  const {
@@ -576,10 +561,9 @@ function NodeReveal(t0) {
576
561
  return t8;
577
562
  }
578
563
  function NodeStack(t0) {
579
- const $ = _c(23);
564
+ const $ = _c(19);
580
565
  const {
581
- node,
582
- box,
566
+ layout,
583
567
  progress,
584
568
  start,
585
569
  end
@@ -587,82 +571,73 @@ function NodeStack(t0) {
587
571
  const {
588
572
  accent: themeAccent
589
573
  } = useDiagramTheme();
574
+ const {
575
+ node
576
+ } = layout;
590
577
  const frame = node.frame ?? "solid";
591
- if (frame === "none" || nodeStackCount(node) < 2) {
578
+ if (layout.frames.length === 0) {
592
579
  return null;
593
580
  }
594
581
  let t1;
595
- if ($[0] !== node) {
596
- t1 = nodeFrameRadius(node);
597
- $[0] = node;
598
- $[1] = t1;
582
+ if ($[0] !== frame || $[1] !== node) {
583
+ t1 = nodeFrameFill(node, frame);
584
+ $[0] = frame;
585
+ $[1] = node;
586
+ $[2] = t1;
599
587
  } else {
600
- t1 = $[1];
588
+ t1 = $[2];
601
589
  }
602
590
  let t2;
603
- if ($[2] !== frame || $[3] !== node) {
604
- t2 = nodeFrameFill(node, frame);
605
- $[2] = frame;
606
- $[3] = node;
607
- $[4] = t2;
591
+ if ($[3] !== frame || $[4] !== node || $[5] !== themeAccent) {
592
+ t2 = nodeFrameStroke(node, frame, themeAccent);
593
+ $[3] = frame;
594
+ $[4] = node;
595
+ $[5] = themeAccent;
596
+ $[6] = t2;
608
597
  } else {
609
- t2 = $[4];
598
+ t2 = $[6];
610
599
  }
611
600
  let t3;
612
- if ($[5] !== frame || $[6] !== node || $[7] !== themeAccent) {
613
- t3 = nodeFrameStroke(node, frame, themeAccent);
614
- $[5] = frame;
615
- $[6] = node;
616
- $[7] = themeAccent;
601
+ if ($[7] !== node) {
602
+ t3 = nodeFrameStrokeWidth(node);
603
+ $[7] = node;
617
604
  $[8] = t3;
618
605
  } else {
619
606
  t3 = $[8];
620
607
  }
621
608
  let t4;
622
- if ($[9] !== node) {
623
- t4 = nodeFrameStrokeWidth(node);
624
- $[9] = node;
625
- $[10] = t4;
626
- } else {
627
- t4 = $[10];
628
- }
629
- let t5;
630
- if ($[11] !== box || $[12] !== node || $[13] !== t1 || $[14] !== t2 || $[15] !== t3 || $[16] !== t4) {
631
- t5 = /*#__PURE__*/_jsx(NodeStackFrames, {
632
- node: node,
633
- box: box,
634
- rx: t1,
635
- fill: t2,
636
- stroke: t3,
637
- strokeWidth: t4
609
+ if ($[9] !== layout || $[10] !== t1 || $[11] !== t2 || $[12] !== t3) {
610
+ t4 = /*#__PURE__*/_jsx(NodeStackFrames, {
611
+ layout: layout,
612
+ fill: t1,
613
+ stroke: t2,
614
+ strokeWidth: t3
638
615
  });
639
- $[11] = box;
640
- $[12] = node;
641
- $[13] = t1;
642
- $[14] = t2;
643
- $[15] = t3;
644
- $[16] = t4;
645
- $[17] = t5;
616
+ $[9] = layout;
617
+ $[10] = t1;
618
+ $[11] = t2;
619
+ $[12] = t3;
620
+ $[13] = t4;
646
621
  } else {
647
- t5 = $[17];
622
+ t4 = $[13];
648
623
  }
649
- let t6;
650
- if ($[18] !== end || $[19] !== progress || $[20] !== start || $[21] !== t5) {
651
- t6 = /*#__PURE__*/_jsx(NodeReveal, {
624
+ let t5;
625
+ if ($[14] !== end || $[15] !== progress || $[16] !== start || $[17] !== t4) {
626
+ t5 = /*#__PURE__*/_jsx(NodeReveal, {
652
627
  progress: progress,
653
628
  start: start,
654
629
  end: end,
655
- children: t5
630
+ children: t4
656
631
  });
657
- $[18] = end;
658
- $[19] = progress;
659
- $[20] = start;
660
- $[21] = t5;
661
- $[22] = t6;
632
+ $[14] = end;
633
+ $[15] = progress;
634
+ $[16] = start;
635
+ $[17] = t4;
636
+ $[18] = t5;
662
637
  } else {
663
- t6 = $[22];
638
+ t5 = $[18];
664
639
  }
665
- return t6;
640
+ return t5;
666
641
  }
667
642
  function textureImage(texture) {
668
643
  if (texture === 'dots') {
@@ -678,11 +653,16 @@ function textureImage(texture) {
678
653
  }
679
654
  return {};
680
655
  }
656
+
657
+ /**
658
+ * A node frame with its text drawn as absolutely placed runs, at the positions
659
+ * the SVG output draws them. The frame is an inset shadow, not a border, so the
660
+ * runs share the frame's origin.
661
+ */
681
662
  function NodeBox(t0) {
682
- const $ = _c(90);
663
+ const $ = _c(83);
683
664
  const {
684
- node,
685
- box,
665
+ layout,
686
666
  origin,
687
667
  progress,
688
668
  start,
@@ -737,6 +717,12 @@ function NodeBox(t0) {
737
717
  t6 = $[9];
738
718
  }
739
719
  const translateY = useTransform(progress, t4, t5, t6);
720
+ const {
721
+ node,
722
+ box,
723
+ icon,
724
+ text
725
+ } = layout;
740
726
  const frame = node.frame ?? "solid";
741
727
  let t7;
742
728
  if ($[10] !== frame || $[11] !== node || $[12] !== themeAccent) {
@@ -749,321 +735,286 @@ function NodeBox(t0) {
749
735
  t7 = $[13];
750
736
  }
751
737
  const fill = t7;
752
- let t8;
753
- if ($[14] !== node.label) {
754
- t8 = Array.isArray(node.label) ? node.label : [node.label];
755
- $[14] = node.label;
756
- $[15] = t8;
757
- } else {
758
- t8 = $[15];
759
- }
760
- const lines = t8;
761
738
  let T0;
762
- let itemLines;
739
+ let lastRun;
763
740
  let t10;
764
741
  let t11;
765
742
  let t12;
766
743
  let t13;
767
744
  let t14;
768
745
  let t15;
769
- let t16;
746
+ let t8;
770
747
  let t9;
771
- if ($[16] !== box.h || $[17] !== box.w || $[18] !== box.x || $[19] !== box.y || $[20] !== fill || $[21] !== frame || $[22] !== lines || $[23] !== node || $[24] !== opacity || $[25] !== origin.x || $[26] !== origin.y || $[27] !== themeAccent || $[28] !== translateY) {
772
- const descriptionLines = [node.description ?? []].flat();
773
- let t17;
774
- if ($[39] !== node.items) {
775
- t17 = node.items ?? [];
776
- $[39] = node.items;
777
- $[40] = t17;
748
+ if ($[14] !== box || $[15] !== fill || $[16] !== frame || $[17] !== icon || $[18] !== layout || $[19] !== node || $[20] !== opacity || $[21] !== origin.x || $[22] !== origin.y || $[23] !== text || $[24] !== themeAccent || $[25] !== translateY) {
749
+ const {
750
+ title,
751
+ description,
752
+ items
753
+ } = nodeTextParts(layout);
754
+ let t16;
755
+ if ($[36] !== text) {
756
+ t16 = text.at(-1);
757
+ $[36] = text;
758
+ $[37] = t16;
778
759
  } else {
779
- t17 = $[40];
760
+ t16 = $[37];
780
761
  }
781
- itemLines = t17;
782
- const startAligned = (node.textAlign ?? "center") === "start" || Boolean(node.icon) || descriptionLines.length > 0;
783
- const iconSize = node.iconSize ?? 42;
762
+ lastRun = t16;
784
763
  T0 = motion.div;
785
- t12 = node.id;
786
- t13 = node.tone;
787
- t14 = startAligned ? "absolute flex items-start gap-[22px] px-7 py-6" : "absolute flex flex-col items-center justify-center gap-2 px-3 text-center";
788
- const t18 = box.x - origin.x;
789
- const t19 = box.y - origin.y;
790
- const t20 = box.w;
791
- const t21 = box.h;
792
- let t22;
793
- if ($[41] !== node) {
794
- t22 = nodeFrameRadius(node);
795
- $[41] = node;
796
- $[42] = t22;
797
- } else {
798
- t22 = $[42];
799
- }
800
- let t23;
801
- if ($[43] !== frame || $[44] !== node || $[45] !== themeAccent) {
802
- t23 = frame === "none" ? {} : {
764
+ t8 = node.id;
765
+ t9 = node.tone;
766
+ t10 = "absolute";
767
+ const t17 = box.x - origin.x;
768
+ const t18 = box.y - origin.y;
769
+ let t19;
770
+ if ($[38] !== frame || $[39] !== node || $[40] !== themeAccent) {
771
+ t19 = frame === "none" ? {} : {
803
772
  backgroundColor: nodeFrameFill(node, frame),
804
- border: `${nodeFrameStrokeWidth(node)}px solid ${nodeFrameStroke(node, frame, themeAccent)}`,
773
+ boxShadow: `inset 0 0 0 ${nodeFrameStrokeWidth(node)}px ${nodeFrameStroke(node, frame, themeAccent)}`,
805
774
  ...textureImage(nodeTexture(node, frame))
806
775
  };
807
- $[43] = frame;
808
- $[44] = node;
809
- $[45] = themeAccent;
810
- $[46] = t23;
776
+ $[38] = frame;
777
+ $[39] = node;
778
+ $[40] = themeAccent;
779
+ $[41] = t19;
811
780
  } else {
812
- t23 = $[46];
781
+ t19 = $[41];
813
782
  }
814
- if ($[47] !== box.h || $[48] !== box.w || $[49] !== fill || $[50] !== opacity || $[51] !== t18 || $[52] !== t19 || $[53] !== t22 || $[54] !== t23 || $[55] !== translateY) {
815
- t15 = {
816
- left: t18,
817
- top: t19,
818
- width: t20,
819
- height: t21,
783
+ if ($[42] !== box.h || $[43] !== box.w || $[44] !== fill || $[45] !== layout.radius || $[46] !== opacity || $[47] !== t17 || $[48] !== t18 || $[49] !== t19 || $[50] !== translateY) {
784
+ t11 = {
785
+ left: t17,
786
+ top: t18,
787
+ width: box.w,
788
+ height: box.h,
820
789
  boxSizing: "border-box",
821
- borderRadius: t22,
822
- ...t23,
790
+ borderRadius: layout.radius,
791
+ ...t19,
823
792
  color: fill,
824
793
  opacity,
825
794
  y: translateY
826
795
  };
827
- $[47] = box.h;
828
- $[48] = box.w;
829
- $[49] = fill;
830
- $[50] = opacity;
831
- $[51] = t18;
832
- $[52] = t19;
833
- $[53] = t22;
834
- $[54] = t23;
835
- $[55] = translateY;
836
- $[56] = t15;
796
+ $[42] = box.h;
797
+ $[43] = box.w;
798
+ $[44] = fill;
799
+ $[45] = layout.radius;
800
+ $[46] = opacity;
801
+ $[47] = t17;
802
+ $[48] = t18;
803
+ $[49] = t19;
804
+ $[50] = translateY;
805
+ $[51] = t11;
837
806
  } else {
838
- t15 = $[56];
807
+ t11 = $[51];
839
808
  }
840
- if ($[57] !== fill || $[58] !== iconSize || $[59] !== node.icon || $[60] !== node.textColor || $[61] !== themeAccent) {
841
- t16 = node.icon && /*#__PURE__*/_jsx("svg", {
842
- width: iconSize,
843
- height: iconSize,
844
- className: "shrink-0",
809
+ if ($[52] !== box.x || $[53] !== box.y || $[54] !== fill || $[55] !== icon || $[56] !== node.icon || $[57] !== node.textColor || $[58] !== themeAccent) {
810
+ t12 = node.icon && icon && /*#__PURE__*/_jsx("svg", {
811
+ width: icon.size,
812
+ height: icon.size,
813
+ className: "absolute",
814
+ style: {
815
+ left: icon.x - box.x,
816
+ top: icon.y - box.y
817
+ },
845
818
  "aria-hidden": true,
846
819
  children: /*#__PURE__*/_jsx(DiagramNodeIcon, {
847
820
  icon: node.icon,
848
821
  x: 0,
849
822
  y: 0,
850
- size: iconSize,
823
+ size: icon.size,
851
824
  color: node.textColor === "accent" ? themeAccent : fill
852
825
  })
853
826
  });
854
- $[57] = fill;
855
- $[58] = iconSize;
856
- $[59] = node.icon;
857
- $[60] = node.textColor;
858
- $[61] = themeAccent;
859
- $[62] = t16;
827
+ $[52] = box.x;
828
+ $[53] = box.y;
829
+ $[54] = fill;
830
+ $[55] = icon;
831
+ $[56] = node.icon;
832
+ $[57] = node.textColor;
833
+ $[58] = themeAccent;
834
+ $[59] = t12;
860
835
  } else {
861
- t16 = $[62];
836
+ t12 = $[59];
862
837
  }
863
- t9 = startAligned ? "flex min-w-0 flex-col gap-2" : "contents";
864
- if ($[63] !== fill || $[64] !== lines || $[65] !== node || $[66] !== startAligned || $[67] !== themeAccent) {
865
- t10 = /*#__PURE__*/_jsx(NodeLabel, {
866
- node: node,
867
- lines: lines,
868
- fill: fill,
869
- themeAccent: themeAccent,
870
- startAligned: startAligned
871
- });
872
- $[63] = fill;
873
- $[64] = lines;
874
- $[65] = node;
875
- $[66] = startAligned;
876
- $[67] = themeAccent;
877
- $[68] = t10;
838
+ let t20;
839
+ if ($[60] !== box || $[61] !== fill || $[62] !== themeAccent) {
840
+ t20 = (run, i) => /*#__PURE__*/_jsx(RunText, {
841
+ run: run,
842
+ origin: box,
843
+ color: runFill(run, fill, themeAccent)
844
+ }, i);
845
+ $[60] = box;
846
+ $[61] = fill;
847
+ $[62] = themeAccent;
848
+ $[63] = t20;
878
849
  } else {
879
- t10 = $[68];
850
+ t20 = $[63];
880
851
  }
881
- t11 = descriptionLines.length > 0 && /*#__PURE__*/_jsx("p", {
852
+ t13 = title.map(t20);
853
+ t14 = description.length > 0 && /*#__PURE__*/_jsx("div", {
882
854
  "data-diagram-node-description": node.id,
883
- className: "text-pretty",
884
- style: {
885
- fontFamily: SANS,
886
- fontSize: node.bodyFontSize ?? 13,
887
- lineHeight: 1.35
888
- },
889
- children: descriptionLines.join(" ")
855
+ children: description.map((run_0, i_0) => /*#__PURE__*/_jsx(RunText, {
856
+ run: run_0,
857
+ origin: box
858
+ }, i_0))
890
859
  });
891
- $[16] = box.h;
892
- $[17] = box.w;
893
- $[18] = box.x;
894
- $[19] = box.y;
895
- $[20] = fill;
896
- $[21] = frame;
897
- $[22] = lines;
898
- $[23] = node;
899
- $[24] = opacity;
900
- $[25] = origin.x;
901
- $[26] = origin.y;
902
- $[27] = themeAccent;
903
- $[28] = translateY;
904
- $[29] = T0;
905
- $[30] = itemLines;
906
- $[31] = t10;
907
- $[32] = t11;
908
- $[33] = t12;
909
- $[34] = t13;
910
- $[35] = t14;
911
- $[36] = t15;
912
- $[37] = t16;
913
- $[38] = t9;
914
- } else {
915
- T0 = $[29];
916
- itemLines = $[30];
917
- t10 = $[31];
918
- t11 = $[32];
919
- t12 = $[33];
920
- t13 = $[34];
921
- t14 = $[35];
922
- t15 = $[36];
923
- t16 = $[37];
924
- t9 = $[38];
860
+ let t21;
861
+ if ($[64] !== box || $[65] !== node.id) {
862
+ t21 = (t22, i_1) => {
863
+ const {
864
+ run: run_1,
865
+ bullet
866
+ } = t22;
867
+ return /*#__PURE__*/_jsxs("div", {
868
+ "data-diagram-node-item": `${node.id}:${i_1}`,
869
+ children: [/*#__PURE__*/_jsx("span", {
870
+ className: "absolute rounded-full bg-current",
871
+ style: {
872
+ left: bullet.x - box.x - 2.2,
873
+ top: bullet.y - box.y - 2.2,
874
+ width: 4.4,
875
+ height: 4.4
876
+ }
877
+ }), /*#__PURE__*/_jsx(RunText, {
878
+ run: run_1,
879
+ origin: box
880
+ })]
881
+ }, i_1);
882
+ };
883
+ $[64] = box;
884
+ $[65] = node.id;
885
+ $[66] = t21;
886
+ } else {
887
+ t21 = $[66];
888
+ }
889
+ t15 = items.map(t21);
890
+ $[14] = box;
891
+ $[15] = fill;
892
+ $[16] = frame;
893
+ $[17] = icon;
894
+ $[18] = layout;
895
+ $[19] = node;
896
+ $[20] = opacity;
897
+ $[21] = origin.x;
898
+ $[22] = origin.y;
899
+ $[23] = text;
900
+ $[24] = themeAccent;
901
+ $[25] = translateY;
902
+ $[26] = T0;
903
+ $[27] = lastRun;
904
+ $[28] = t10;
905
+ $[29] = t11;
906
+ $[30] = t12;
907
+ $[31] = t13;
908
+ $[32] = t14;
909
+ $[33] = t15;
910
+ $[34] = t8;
911
+ $[35] = t9;
912
+ } else {
913
+ T0 = $[26];
914
+ lastRun = $[27];
915
+ t10 = $[28];
916
+ t11 = $[29];
917
+ t12 = $[30];
918
+ t13 = $[31];
919
+ t14 = $[32];
920
+ t15 = $[33];
921
+ t8 = $[34];
922
+ t9 = $[35];
925
923
  }
926
- let t17;
927
- if ($[69] !== itemLines || $[70] !== node.bodyFontSize || $[71] !== node.id) {
928
- t17 = itemLines.length > 0 && /*#__PURE__*/_jsx("ul", {
929
- className: "flex list-disc flex-col gap-1 pl-4",
924
+ let t16;
925
+ if ($[67] !== box.y || $[68] !== lastRun || $[69] !== node.content || $[70] !== node.id) {
926
+ t16 = node.content !== undefined && /*#__PURE__*/_jsx("div", {
927
+ className: "absolute inset-x-0 bottom-0 flex flex-col items-center justify-center",
930
928
  style: {
931
- fontFamily: SANS,
932
- fontSize: node.bodyFontSize ?? 13
929
+ top: lastRun ? lastRun.bounds.y + lastRun.bounds.h - box.y : 0
933
930
  },
934
- children: itemLines.map((item, i) => /*#__PURE__*/_jsx("li", {
935
- "data-diagram-node-item": `${node.id}:${i}`,
936
- children: item
937
- }, i))
938
- });
939
- $[69] = itemLines;
940
- $[70] = node.bodyFontSize;
941
- $[71] = node.id;
942
- $[72] = t17;
943
- } else {
944
- t17 = $[72];
945
- }
946
- let t18;
947
- if ($[73] !== node.content || $[74] !== node.id) {
948
- t18 = node.content !== undefined && /*#__PURE__*/_jsx("div", {
949
- "data-diagram-node-content": node.id,
950
- children: node.content
951
- });
952
- $[73] = node.content;
953
- $[74] = node.id;
954
- $[75] = t18;
955
- } else {
956
- t18 = $[75];
957
- }
958
- let t19;
959
- if ($[76] !== t10 || $[77] !== t11 || $[78] !== t17 || $[79] !== t18 || $[80] !== t9) {
960
- t19 = /*#__PURE__*/_jsxs("div", {
961
- className: t9,
962
- children: [t10, t11, t17, t18]
931
+ children: /*#__PURE__*/_jsx("div", {
932
+ "data-diagram-node-content": node.id,
933
+ children: node.content
934
+ })
963
935
  });
964
- $[76] = t10;
965
- $[77] = t11;
966
- $[78] = t17;
967
- $[79] = t18;
968
- $[80] = t9;
969
- $[81] = t19;
936
+ $[67] = box.y;
937
+ $[68] = lastRun;
938
+ $[69] = node.content;
939
+ $[70] = node.id;
940
+ $[71] = t16;
970
941
  } else {
971
- t19 = $[81];
942
+ t16 = $[71];
972
943
  }
973
- let t20;
974
- if ($[82] !== T0 || $[83] !== t12 || $[84] !== t13 || $[85] !== t14 || $[86] !== t15 || $[87] !== t16 || $[88] !== t19) {
975
- t20 = /*#__PURE__*/_jsxs(T0, {
976
- "data-diagram-node": t12,
977
- "data-diagram-node-tone": t13,
978
- className: t14,
979
- style: t15,
980
- children: [t16, t19]
944
+ let t17;
945
+ if ($[72] !== T0 || $[73] !== t10 || $[74] !== t11 || $[75] !== t12 || $[76] !== t13 || $[77] !== t14 || $[78] !== t15 || $[79] !== t16 || $[80] !== t8 || $[81] !== t9) {
946
+ t17 = /*#__PURE__*/_jsxs(T0, {
947
+ "data-diagram-node": t8,
948
+ "data-diagram-node-tone": t9,
949
+ className: t10,
950
+ style: t11,
951
+ children: [t12, t13, t14, t15, t16]
981
952
  });
982
- $[82] = T0;
983
- $[83] = t12;
984
- $[84] = t13;
985
- $[85] = t14;
986
- $[86] = t15;
987
- $[87] = t16;
988
- $[88] = t19;
989
- $[89] = t20;
990
- } else {
991
- t20 = $[89];
992
- }
993
- return t20;
953
+ $[72] = T0;
954
+ $[73] = t10;
955
+ $[74] = t11;
956
+ $[75] = t12;
957
+ $[76] = t13;
958
+ $[77] = t14;
959
+ $[78] = t15;
960
+ $[79] = t16;
961
+ $[80] = t8;
962
+ $[81] = t9;
963
+ $[82] = t17;
964
+ } else {
965
+ t17 = $[82];
966
+ }
967
+ return t17;
994
968
  }
995
- function NodeLabel(t0) {
996
- const $ = _c(19);
969
+ function RunText(t0) {
970
+ const $ = _c(12);
997
971
  const {
998
- node,
999
- lines,
1000
- fill,
1001
- themeAccent,
1002
- startAligned
972
+ run,
973
+ origin,
974
+ color
1003
975
  } = t0;
1004
- const fontSize = node.fontSize ?? (startAligned ? 15 : 12);
1005
- const defaultWeight = startAligned ? 700 : 500;
1006
- const t1 = startAligned ? SANS : MONO;
1007
- const t2 = `${startAligned ? fontSize + 4 : Math.max(12, fontSize + 2)}px`;
1008
- const t3 = startAligned ? undefined : 0.6;
1009
- let t4;
1010
- if ($[0] !== fontSize || $[1] !== t1 || $[2] !== t2 || $[3] !== t3) {
1011
- t4 = {
1012
- fontFamily: t1,
1013
- fontSize,
1014
- lineHeight: t2,
1015
- letterSpacing: t3
976
+ const t1 = run.bounds.x - origin.x;
977
+ const t2 = run.bounds.y - origin.y;
978
+ const t3 = FONT_FAMILY[run.font.face];
979
+ const t4 = `${run.bounds.h}px`;
980
+ const t5 = run.font.face === "mono" ? 0.6 : undefined;
981
+ let t6;
982
+ if ($[0] !== color || $[1] !== run.font.size || $[2] !== run.font.weight || $[3] !== t1 || $[4] !== t2 || $[5] !== t3 || $[6] !== t4 || $[7] !== t5) {
983
+ t6 = {
984
+ left: t1,
985
+ top: t2,
986
+ fontFamily: t3,
987
+ fontSize: run.font.size,
988
+ fontWeight: run.font.weight,
989
+ lineHeight: t4,
990
+ letterSpacing: t5,
991
+ color
1016
992
  };
1017
- $[0] = fontSize;
1018
- $[1] = t1;
1019
- $[2] = t2;
1020
- $[3] = t3;
1021
- $[4] = t4;
1022
- } else {
1023
- t4 = $[4];
1024
- }
1025
- let t5;
1026
- if ($[5] !== defaultWeight || $[6] !== fill || $[7] !== lines || $[8] !== node.fontWeight || $[9] !== themeAccent) {
1027
- let t6;
1028
- if ($[11] !== defaultWeight || $[12] !== fill || $[13] !== node.fontWeight || $[14] !== themeAccent) {
1029
- t6 = (line, i) => /*#__PURE__*/_jsx("div", {
1030
- style: {
1031
- color: labelLineFill(line, fill, themeAccent),
1032
- fontWeight: typeof line === "string" ? node.fontWeight ?? defaultWeight : line.fontWeight ?? node.fontWeight ?? defaultWeight
1033
- },
1034
- children: typeof line === "string" ? line : line.text
1035
- }, i);
1036
- $[11] = defaultWeight;
1037
- $[12] = fill;
1038
- $[13] = node.fontWeight;
1039
- $[14] = themeAccent;
1040
- $[15] = t6;
1041
- } else {
1042
- t6 = $[15];
1043
- }
1044
- t5 = lines.map(t6);
1045
- $[5] = defaultWeight;
1046
- $[6] = fill;
1047
- $[7] = lines;
1048
- $[8] = node.fontWeight;
1049
- $[9] = themeAccent;
1050
- $[10] = t5;
993
+ $[0] = color;
994
+ $[1] = run.font.size;
995
+ $[2] = run.font.weight;
996
+ $[3] = t1;
997
+ $[4] = t2;
998
+ $[5] = t3;
999
+ $[6] = t4;
1000
+ $[7] = t5;
1001
+ $[8] = t6;
1051
1002
  } else {
1052
- t5 = $[10];
1003
+ t6 = $[8];
1053
1004
  }
1054
- let t6;
1055
- if ($[16] !== t4 || $[17] !== t5) {
1056
- t6 = /*#__PURE__*/_jsx("div", {
1057
- className: "text-balance",
1058
- style: t4,
1059
- children: t5
1005
+ let t7;
1006
+ if ($[9] !== run.text || $[10] !== t6) {
1007
+ t7 = /*#__PURE__*/_jsx("span", {
1008
+ className: "absolute whitespace-pre",
1009
+ style: t6,
1010
+ children: run.text
1060
1011
  });
1061
- $[16] = t4;
1062
- $[17] = t5;
1063
- $[18] = t6;
1012
+ $[9] = run.text;
1013
+ $[10] = t6;
1014
+ $[11] = t7;
1064
1015
  } else {
1065
- t6 = $[18];
1016
+ t7 = $[11];
1066
1017
  }
1067
- return t6;
1018
+ return t7;
1068
1019
  }
1069
1020
  //# sourceMappingURL=graph-html.js.map