@cardenelabs/cdl 0.10.0 → 0.12.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.cjs CHANGED
@@ -15864,6 +15864,16 @@ function nodeTemplateTexts(node) {
15864
15864
 
15865
15865
  // src/validate.ts
15866
15866
  var TONES2 = new Set(TONES);
15867
+ var DRAW_KINDS = /* @__PURE__ */ new Set([
15868
+ "chart-line",
15869
+ "chart-bar",
15870
+ "chart-pie",
15871
+ "journey-map",
15872
+ "mind-map",
15873
+ "tree-hierarchy",
15874
+ "gantt-timeline",
15875
+ "funnel-stages"
15876
+ ]);
15867
15877
  var KINDS = new Set(NODE_KINDS);
15868
15878
  var ENG_BANNED = /\b(FUNCTION|STORAGE|EVENT LOG|BALANCES MAPPING|READ|WRITE|EMIT|CALL)\b/;
15869
15879
  function validate(diag) {
@@ -15981,8 +15991,10 @@ function validate(diag) {
15981
15991
  continue;
15982
15992
  }
15983
15993
  const kind = diag.nodes.find((n) => n.id === id)?.kind;
15984
- if (kind !== "chart-line") {
15985
- warnings.push(`phase "${p.id}" \u306E draw "${id}" \u306F kind "${kind}" \u3067\u3001 \u5DE6\u304B\u3089\u63CF\u304F\u52D5\u304D\u3092\u6301\u305F\u306A\u3044 (\u5BFE\u8C61\u306F chart-line)`);
15994
+ if (!DRAW_KINDS.has(String(kind))) {
15995
+ warnings.push(
15996
+ `phase "${p.id}" \u306E draw "${id}" \u306F kind "${kind}" \u3067\u3001 \u8D77\u70B9\u304B\u3089\u63CF\u304F\u52D5\u304D\u3092\u6301\u305F\u306A\u3044 (\u5BFE\u8C61\u306F ${[...DRAW_KINDS].join(" / ")})`
15997
+ );
15986
15998
  }
15987
15999
  }
15988
16000
  for (const t of p.tweens) {
@@ -21279,6 +21291,44 @@ function resolveMindData(data, values) {
21279
21291
  const \u89E3\u6C7A\u5F8C = { ...data, rootTitle: root.value, branches };
21280
21292
  return root.ok ? \u89E3\u6C7A\u5F8C : { ...\u89E3\u6C7A\u5F8C, unresolved: true };
21281
21293
  }
21294
+
21295
+ // src/kinds/draw-progress.ts
21296
+ function \u9032\u307F\u3092\u7573\u3080(drawing, progress) {
21297
+ if (!drawing) return 1;
21298
+ return Math.min(1, Math.max(0, Number.isFinite(progress) ? progress : 1));
21299
+ }
21300
+ function \u4F38\u3070\u3059dash(drawing, \u4F38\u3073) {
21301
+ if (!drawing) return {};
21302
+ return { pathLength: 1, strokeDasharray: 1, strokeDashoffset: 1 - \u4F38\u3073 };
21303
+ }
21304
+ function \u6BB5\u306E\u4F38\u3073(\u4F38\u3073, \u6DF1\u3055, \u6700\u5927\u6DF1\u3055) {
21305
+ if (\u6700\u5927\u6DF1\u3055 <= 0 || \u6DF1\u3055 <= 0) return 1;
21306
+ const \u5E45 = 1 / \u6700\u5927\u6DF1\u3055;
21307
+ const \u59CB\u307E\u308A = (\u6DF1\u3055 - 1) * \u5E45;
21308
+ return Math.min(1, Math.max(0, (\u4F38\u3073 - \u59CB\u307E\u308A) / \u5E45));
21309
+ }
21310
+ function \u30D9\u30B8\u30A8\u306E\u7D2F\u7A4D\u5272\u5408(\u70B9, \u5236\u5FA1\u70B9, \u5206\u5272\u6570 = 16) {
21311
+ if (\u70B9.length <= 1) return \u70B9.map(() => 0);
21312
+ const \u9577\u3055 = [0];
21313
+ let \u5408\u8A08 = 0;
21314
+ for (let i = 1; i < \u70B9.length; i++) {
21315
+ const p0 = \u70B9[i - 1];
21316
+ const p3 = \u70B9[i];
21317
+ const [p1, p2] = \u5236\u5FA1\u70B9(p0, p3);
21318
+ let \u524D = p0;
21319
+ for (let s = 1; s <= \u5206\u5272\u6570; s++) {
21320
+ const t = s / \u5206\u5272\u6570;
21321
+ const u = 1 - t;
21322
+ const x = u * u * u * p0.x + 3 * u * u * t * p1.x + 3 * u * t * t * p2.x + t * t * t * p3.x;
21323
+ const y = u * u * u * p0.y + 3 * u * u * t * p1.y + 3 * u * t * t * p2.y + t * t * t * p3.y;
21324
+ \u5408\u8A08 += Math.hypot(x - \u524D.x, y - \u524D.y);
21325
+ \u524D = { x, y };
21326
+ }
21327
+ \u9577\u3055.push(\u5408\u8A08);
21328
+ }
21329
+ if (\u5408\u8A08 === 0) return \u70B9.map(() => 0);
21330
+ return \u9577\u3055.map((l) => l / \u5408\u8A08);
21331
+ }
21282
21332
  function ChartLineNode({
21283
21333
  node,
21284
21334
  active,
@@ -21316,7 +21366,7 @@ function ChartLineNode({
21316
21366
  \u70B9\u307E\u3067\u306E\u9577\u3055.push(\u7DDA\u306E\u5168\u9577);
21317
21367
  \u524D\u306E\u70B9 = \u4ECA\u306E\u70B9;
21318
21368
  }
21319
- const \u4F38\u3073 = drawing ? Math.min(1, Math.max(0, Number.isFinite(progress) ? progress : 1)) : 1;
21369
+ const \u4F38\u3073 = \u9032\u307F\u3092\u7573\u3080(drawing, progress);
21320
21370
  const \u7DDA\u306E\u5148\u304C\u5C4A\u3044\u305F = (idx) => {
21321
21371
  if (!drawing) return true;
21322
21372
  if (data.length <= 1) return true;
@@ -21401,7 +21451,7 @@ function ChartLineNode({
21401
21451
  strokeWidth: 2.5,
21402
21452
  strokeLinejoin: "round",
21403
21453
  strokeLinecap: "round",
21404
- ...drawing ? { pathLength: 1, strokeDasharray: 1, strokeDashoffset: 1 - \u4F38\u3073 } : {}
21454
+ ...\u4F38\u3070\u3059dash(drawing, \u4F38\u3073)
21405
21455
  }
21406
21456
  ),
21407
21457
  data.map((d, idx) => {
@@ -21467,8 +21517,11 @@ function ChartLineNode({
21467
21517
  function ChartPieNode({
21468
21518
  node,
21469
21519
  active,
21470
- stateValues = {}
21520
+ stateValues = {},
21521
+ drawing = false,
21522
+ progress = 1
21471
21523
  }) {
21524
+ const instanceId = react.useId().replace(/[^A-Za-z0-9_-]/g, "");
21472
21525
  const x0 = node.cx - node.w / 2;
21473
21526
  const y0 = node.cy - node.h / 2;
21474
21527
  const data = resolveChartData(node.chartData ?? [], stateValues);
@@ -21481,20 +21534,26 @@ function ChartPieNode({
21481
21534
  const cx = pieAreaW / 2;
21482
21535
  const cy = PAD_TOP + chartAreaH / 2;
21483
21536
  let cumAngle = -Math.PI / 2;
21537
+ let cumFrac = 0;
21484
21538
  const slices = data.map((d) => {
21485
21539
  const frac = d.value / total;
21486
21540
  const angle = frac * Math.PI * 2;
21487
21541
  const a0 = cumAngle;
21488
21542
  const a1 = cumAngle + angle;
21489
21543
  cumAngle = a1;
21544
+ const startFrac = cumFrac;
21545
+ cumFrac += frac;
21490
21546
  const x1 = cx + radius * Math.cos(a0);
21491
21547
  const y1 = cy + radius * Math.sin(a0);
21492
21548
  const x2 = cx + radius * Math.cos(a1);
21493
21549
  const y2 = cy + radius * Math.sin(a1);
21494
21550
  const large = angle > Math.PI ? 1 : 0;
21495
21551
  const path = `M ${cx} ${cy} L ${x1} ${y1} A ${radius} ${radius} 0 ${large} 1 ${x2} ${y2} Z`;
21496
- return { d, frac, path };
21552
+ return { d, frac, path, startFrac };
21497
21553
  });
21554
+ const \u958B\u304D = \u9032\u307F\u3092\u7573\u3080(drawing, progress);
21555
+ const \u5207\u308A\u629C\u304Did = `cdl-pie-draw-${instanceId}`;
21556
+ const \u958B\u304D\u59CB\u3081\u305F = (startFrac) => !drawing || \u958B\u304D > startFrac;
21498
21557
  const legendX = pieAreaW + 8;
21499
21558
  const legendGap = Math.min(28, chartAreaH / Math.max(data.length, 1));
21500
21559
  const legendStartY = PAD_TOP + (chartAreaH - legendGap * data.length) / 2 + legendGap / 2;
@@ -21513,7 +21572,8 @@ function ChartPieNode({
21513
21572
  strokeWidth: active ? 3 : 1.25
21514
21573
  }
21515
21574
  ),
21516
- slices.map((s, idx) => /* @__PURE__ */ jsxRuntime.jsx(
21575
+ drawing && /* @__PURE__ */ jsxRuntime.jsx("defs", { children: /* @__PURE__ */ jsxRuntime.jsx("clipPath", { id: \u5207\u308A\u629C\u304Did, children: \u6247\u5F62\u306E\u5207\u308A\u629C\u304D(cx, cy, radius + 2, \u958B\u304D) }) }),
21576
+ /* @__PURE__ */ jsxRuntime.jsx("g", { ...drawing ? { clipPath: `url(#${\u5207\u308A\u629C\u304Did})` } : {}, children: slices.map((s, idx) => /* @__PURE__ */ jsxRuntime.jsx(
21517
21577
  "path",
21518
21578
  {
21519
21579
  "data-cdl-role": "chart-pie-slice",
@@ -21525,8 +21585,8 @@ function ChartPieNode({
21525
21585
  strokeWidth: 1.5
21526
21586
  },
21527
21587
  `slice-${idx}`
21528
- )),
21529
- slices.map((s, idx) => /* @__PURE__ */ jsxRuntime.jsxs("g", { transform: `translate(${legendX} ${legendStartY + idx * legendGap})`, children: [
21588
+ )) }),
21589
+ slices.map((s, idx) => !\u958B\u304D\u59CB\u3081\u305F(s.startFrac) ? null : /* @__PURE__ */ jsxRuntime.jsxs("g", { transform: `translate(${legendX} ${legendStartY + idx * legendGap})`, children: [
21530
21590
  /* @__PURE__ */ jsxRuntime.jsx(
21531
21591
  "rect",
21532
21592
  {
@@ -21564,6 +21624,15 @@ function ChartPieNode({
21564
21624
  ] }, `legend-${idx}`))
21565
21625
  ] });
21566
21626
  }
21627
+ function \u6247\u5F62\u306E\u5207\u308A\u629C\u304D(cx, cy, r, \u958B\u304D) {
21628
+ if (\u958B\u304D <= 0) return null;
21629
+ if (\u958B\u304D >= 1) return /* @__PURE__ */ jsxRuntime.jsx("circle", { cx, cy, r });
21630
+ const a0 = -Math.PI / 2;
21631
+ const a1 = a0 + \u958B\u304D * Math.PI * 2;
21632
+ const large = \u958B\u304D > 0.5 ? 1 : 0;
21633
+ const d = `M ${cx} ${cy} L ${cx + r * Math.cos(a0)} ${cy + r * Math.sin(a0)} A ${r} ${r} 0 ${large} 1 ${cx + r * Math.cos(a1)} ${cy + r * Math.sin(a1)} Z`;
21634
+ return /* @__PURE__ */ jsxRuntime.jsx("path", { d });
21635
+ }
21567
21636
  var FALLBACK_ORDER = ["accent", "teal", "warning", "success", "info", "error"];
21568
21637
  function sliceColor(tone, idx) {
21569
21638
  if (tone) return TONE[tone];
@@ -21572,7 +21641,9 @@ function sliceColor(tone, idx) {
21572
21641
  function ChartBarNode({
21573
21642
  node,
21574
21643
  active,
21575
- stateValues = {}
21644
+ stateValues = {},
21645
+ drawing = false,
21646
+ progress = 1
21576
21647
  }) {
21577
21648
  const x0 = node.cx - node.w / 2;
21578
21649
  const y0 = node.cy - node.h / 2;
@@ -21595,6 +21666,8 @@ function ChartBarNode({
21595
21666
  const v = vMax * i / gridCount;
21596
21667
  return { y: yAt(v), value: v };
21597
21668
  });
21669
+ const \u4F38\u3073 = \u9032\u307F\u3092\u7573\u3080(drawing, progress);
21670
+ const \u6A2A\u8EF8\u306Ey = PAD_TOP + canvasH;
21598
21671
  return /* @__PURE__ */ jsxRuntime.jsxs("g", { transform: `translate(${x0} ${y0})`, children: [
21599
21672
  /* @__PURE__ */ jsxRuntime.jsx(
21600
21673
  "rect",
@@ -21651,26 +21724,28 @@ function ChartBarNode({
21651
21724
  const bx = xAt(idx);
21652
21725
  const by = yAt(d.value);
21653
21726
  const bh = PAD_TOP + canvasH - by;
21727
+ const \u898B\u3048\u3066\u3044\u308B\u982D = \u6A2A\u8EF8\u306Ey - (\u6A2A\u8EF8\u306Ey - by) * \u4F38\u3073;
21728
+ const \u68D2 = /* @__PURE__ */ jsxRuntime.jsx(
21729
+ "rect",
21730
+ {
21731
+ "data-cdl-role": "chart-bar",
21732
+ "data-cdl-unresolved": d.unresolved ? "true" : void 0,
21733
+ x: bx,
21734
+ y: by,
21735
+ width: barW,
21736
+ height: bh,
21737
+ rx: 2,
21738
+ fill: "var(--cdl-tone-accent, #2d6a8f)",
21739
+ fillOpacity: 0.9
21740
+ }
21741
+ );
21654
21742
  return /* @__PURE__ */ jsxRuntime.jsxs("g", { children: [
21655
- /* @__PURE__ */ jsxRuntime.jsx(
21656
- "rect",
21657
- {
21658
- "data-cdl-role": "chart-bar",
21659
- "data-cdl-unresolved": d.unresolved ? "true" : void 0,
21660
- x: bx,
21661
- y: by,
21662
- width: barW,
21663
- height: bh,
21664
- rx: 2,
21665
- fill: "var(--cdl-tone-accent, #2d6a8f)",
21666
- fillOpacity: 0.9
21667
- }
21668
- ),
21743
+ drawing ? /* @__PURE__ */ jsxRuntime.jsx("g", { transform: `translate(0 ${\u6A2A\u8EF8\u306Ey}) scale(1 ${\u4F38\u3073}) translate(0 ${-\u6A2A\u8EF8\u306Ey})`, children: \u68D2 }) : \u68D2,
21669
21744
  /* @__PURE__ */ jsxRuntime.jsx(
21670
21745
  "text",
21671
21746
  {
21672
21747
  x: bx + barW / 2,
21673
- y: by - 6,
21748
+ y: \u898B\u3048\u3066\u3044\u308B\u982D - 6,
21674
21749
  fontSize: 11,
21675
21750
  textAnchor: "middle",
21676
21751
  fill: "var(--cdl-text, #1a1f2a)",
@@ -21695,7 +21770,9 @@ function ChartBarNode({
21695
21770
  function GanttNode({
21696
21771
  node,
21697
21772
  active,
21698
- stateValues = {}
21773
+ stateValues = {},
21774
+ drawing = false,
21775
+ progress = 1
21699
21776
  }) {
21700
21777
  const x0 = node.cx - node.w / 2;
21701
21778
  const y0 = node.cy - node.h / 2;
@@ -21754,6 +21831,7 @@ function GanttNode({
21754
21831
  const \u5E2F\u306E\u4F59\u767D = Math.min(6, cellW / 2);
21755
21832
  const \u5E2F\u306E\u5DE6 = (idx) => xAt(idx) + \u5E2F\u306E\u4F59\u767D / 2;
21756
21833
  const \u5E2F\u306E\u53F3 = (idx) => xAt(idx) + cellW - \u5E2F\u306E\u4F59\u767D / 2;
21834
+ const \u4F38\u3073 = \u9032\u307F\u3092\u7573\u3080(drawing, progress);
21757
21835
  const taskById = new Map(\u6574\u3048\u305F.map((t) => [t.id, t]));
21758
21836
  const rowOf = new Map(\u6574\u3048\u305F.map((t, i) => [t.id, i]));
21759
21837
  return /* @__PURE__ */ jsxRuntime.jsxs("g", { transform: `translate(${x0} ${y0})`, children: [
@@ -21828,34 +21906,41 @@ function GanttNode({
21828
21906
  const bx = \u5E2F\u306E\u5DE6(t.startIdx);
21829
21907
  const by = yAt(row);
21830
21908
  const bw = Math.max(0, \u5E2F\u306E\u53F3(t.endIdx) - bx);
21831
- return /* @__PURE__ */ jsxRuntime.jsxs("g", { children: [
21832
- /* @__PURE__ */ jsxRuntime.jsx(
21833
- "rect",
21834
- {
21835
- "data-cdl-role": "gantt-bar",
21836
- "data-cdl-unresolved": t.unresolved ? "true" : void 0,
21837
- "data-cdl-clipped": "clipped" in t && t.clipped ? "true" : void 0,
21838
- x: bx,
21839
- y: by,
21840
- width: bw,
21841
- height: rowH,
21842
- rx: 4,
21843
- fill: toneColor3(t.tone),
21844
- fillOpacity: 0.9
21845
- }
21846
- ),
21847
- t.owner && rowH >= 22 && /* @__PURE__ */ jsxRuntime.jsx(
21848
- "text",
21849
- {
21850
- x: bx + 8,
21851
- y: by + rowH / 2 + 4,
21852
- fontSize: 11,
21853
- fill: "var(--cdl-node-fill, #ffffff)",
21854
- fontWeight: 600,
21855
- children: t.owner
21856
- }
21857
- )
21858
- ] }, `bar-${t.id}`);
21909
+ return /* @__PURE__ */ jsxRuntime.jsxs(
21910
+ "g",
21911
+ {
21912
+ ...drawing ? { transform: `translate(${bx} 0) scale(${\u4F38\u3073} 1) translate(${-bx} 0)` } : {},
21913
+ children: [
21914
+ /* @__PURE__ */ jsxRuntime.jsx(
21915
+ "rect",
21916
+ {
21917
+ "data-cdl-role": "gantt-bar",
21918
+ "data-cdl-unresolved": t.unresolved ? "true" : void 0,
21919
+ "data-cdl-clipped": "clipped" in t && t.clipped ? "true" : void 0,
21920
+ x: bx,
21921
+ y: by,
21922
+ width: bw,
21923
+ height: rowH,
21924
+ rx: 4,
21925
+ fill: toneColor3(t.tone),
21926
+ fillOpacity: 0.9
21927
+ }
21928
+ ),
21929
+ t.owner && rowH >= 22 && /* @__PURE__ */ jsxRuntime.jsx(
21930
+ "text",
21931
+ {
21932
+ x: bx + 8,
21933
+ y: by + rowH / 2 + 4,
21934
+ fontSize: 11,
21935
+ fill: "var(--cdl-node-fill, #ffffff)",
21936
+ fontWeight: 600,
21937
+ children: t.owner
21938
+ }
21939
+ )
21940
+ ]
21941
+ },
21942
+ `bar-${t.id}`
21943
+ );
21859
21944
  }),
21860
21945
  \u6574\u3048\u305F.filter((t) => t.dependsOn && taskById.has(t.dependsOn)).map((t) => {
21861
21946
  const parent = taskById.get(t.dependsOn);
@@ -21875,29 +21960,33 @@ function GanttNode({
21875
21960
  const hasRoom = enterX - startX >= elbowGap;
21876
21961
  const path = hasRoom ? `M ${startX} ${parentMidY} L ${enterX} ${parentMidY} L ${enterX} ${tipY} L ${tipX} ${tipY}` : `M ${startX} ${parentMidY} L ${startX + elbowGap} ${parentMidY} L ${startX + elbowGap} ${(parentMidY + tipY) / 2} L ${enterX} ${(parentMidY + tipY) / 2} L ${enterX} ${tipY} L ${tipX} ${tipY}`;
21877
21962
  const arrowHeadPath = `M ${tipX + arrowHeadSize} ${tipY} L ${tipX} ${tipY - arrowHeadSize / 2} L ${tipX} ${tipY + arrowHeadSize / 2} Z`;
21878
- return /* @__PURE__ */ jsxRuntime.jsxs("g", { "data-cdl-role": "gantt-arrow", children: [
21879
- /* @__PURE__ */ jsxRuntime.jsx(
21880
- "path",
21881
- {
21882
- d: path,
21883
- fill: "none",
21884
- stroke: "var(--cdl-text-mute, #8a8678)",
21885
- strokeWidth: 1.75,
21886
- strokeLinejoin: "round",
21887
- strokeLinecap: "round"
21888
- }
21889
- ),
21890
- /* @__PURE__ */ jsxRuntime.jsx(
21891
- "path",
21892
- {
21893
- d: arrowHeadPath,
21894
- fill: "var(--cdl-text-mute, #8a8678)",
21895
- stroke: "var(--cdl-text-mute, #8a8678)",
21896
- strokeWidth: 0.5,
21897
- strokeLinejoin: "round"
21898
- }
21899
- )
21900
- ] }, `dep-${parent.id}-${t.id}`);
21963
+ return (
21964
+ // 矢印は両端の帯が出てから描く。 帯が無い場所へ矢印だけが伸びると、
21965
+ // 指す先の無い線になる (cdl#521)
21966
+ drawing && \u4F38\u3073 < 1 ? null : /* @__PURE__ */ jsxRuntime.jsxs("g", { "data-cdl-role": "gantt-arrow", children: [
21967
+ /* @__PURE__ */ jsxRuntime.jsx(
21968
+ "path",
21969
+ {
21970
+ d: path,
21971
+ fill: "none",
21972
+ stroke: "var(--cdl-text-mute, #8a8678)",
21973
+ strokeWidth: 1.75,
21974
+ strokeLinejoin: "round",
21975
+ strokeLinecap: "round"
21976
+ }
21977
+ ),
21978
+ /* @__PURE__ */ jsxRuntime.jsx(
21979
+ "path",
21980
+ {
21981
+ d: arrowHeadPath,
21982
+ fill: "var(--cdl-text-mute, #8a8678)",
21983
+ stroke: "var(--cdl-text-mute, #8a8678)",
21984
+ strokeWidth: 0.5,
21985
+ strokeLinejoin: "round"
21986
+ }
21987
+ )
21988
+ ] }, `dep-${parent.id}-${t.id}`)
21989
+ );
21901
21990
  })
21902
21991
  ] });
21903
21992
  }
@@ -21953,7 +22042,9 @@ var MIND_BOX_GAP = 24;
21953
22042
  function MindMapNode({
21954
22043
  node,
21955
22044
  active,
21956
- stateValues = {}
22045
+ stateValues = {},
22046
+ drawing = false,
22047
+ progress = 1
21957
22048
  }) {
21958
22049
  const x0 = node.cx - node.w / 2;
21959
22050
  const y0 = node.cy - node.h / 2;
@@ -21965,6 +22056,9 @@ function MindMapNode({
21965
22056
  const canvasW = node.w - PAD * 2;
21966
22057
  const canvasH = node.h - PAD * 2;
21967
22058
  const layout2 = computeMindMapLayout(mindData, canvasCx, canvasCy, canvasW, canvasH);
22059
+ const \u4F38\u3073 = \u9032\u307F\u3092\u7573\u3080(drawing, progress);
22060
+ const \u6700\u5927\u6DF1\u3055 = layout2.nodes.reduce((m, n) => Math.max(m, n.depth), 0);
22061
+ const \u7BB1\u304C\u51FA\u308B = (\u6DF1\u3055) => !drawing || \u6BB5\u306E\u4F38\u3073(\u4F38\u3073, \u6DF1\u3055, \u6700\u5927\u6DF1\u3055) >= 1;
21968
22062
  return /* @__PURE__ */ jsxRuntime.jsxs("g", { transform: `translate(${x0} ${y0})`, children: [
21969
22063
  /* @__PURE__ */ jsxRuntime.jsx(
21970
22064
  "rect",
@@ -21980,20 +22074,25 @@ function MindMapNode({
21980
22074
  strokeWidth: active ? 3 : 1.25
21981
22075
  }
21982
22076
  ),
21983
- layout2.edges.map((e, i) => /* @__PURE__ */ jsxRuntime.jsx(
21984
- "path",
21985
- {
21986
- "data-cdl-role": "mind-edge",
21987
- d: e.d,
21988
- fill: "none",
21989
- stroke: toneColor4(e.tone),
21990
- strokeWidth: 2.5,
21991
- strokeOpacity: 0.55,
21992
- strokeLinecap: "round"
21993
- },
21994
- `edge-${i}`
21995
- )),
22077
+ layout2.edges.map((e, i) => {
22078
+ const \u679D\u306E\u4F38\u3073 = e.deferUntilComplete ? \u4F38\u3073 >= 1 ? 1 : 0 : \u6BB5\u306E\u4F38\u3073(\u4F38\u3073, e.depth, \u6700\u5927\u6DF1\u3055);
22079
+ return /* @__PURE__ */ jsxRuntime.jsx(
22080
+ "path",
22081
+ {
22082
+ "data-cdl-role": "mind-edge",
22083
+ d: e.d,
22084
+ fill: "none",
22085
+ stroke: toneColor4(e.tone),
22086
+ strokeWidth: 2.5,
22087
+ strokeOpacity: 0.55,
22088
+ strokeLinecap: "round",
22089
+ ...\u4F38\u3070\u3059dash(drawing, \u679D\u306E\u4F38\u3073)
22090
+ },
22091
+ `edge-${i}`
22092
+ );
22093
+ }),
21996
22094
  layout2.nodes.map((n) => {
22095
+ if (!\u7BB1\u304C\u51FA\u308B(n.depth)) return null;
21997
22096
  const \u884C = \u7BB1\u306B\u7A4D\u3080(
21998
22097
  [
21999
22098
  { \u5F79\u5272: "title", text: n.title, fontSize: n.isRoot ? 15 : 13 },
@@ -22061,6 +22160,8 @@ function computeMindMapLayout(mindData, cx, cy, canvasW, canvasH) {
22061
22160
  w: rootW,
22062
22161
  h: rootH,
22063
22162
  isRoot: true,
22163
+ // 中心は起点なので段数 0 (cdl#520)
22164
+ depth: 0,
22064
22165
  ...mindData.unresolved ? { unresolved: true } : {}
22065
22166
  });
22066
22167
  const childrenOf = /* @__PURE__ */ new Map();
@@ -22172,6 +22273,8 @@ function computeMindMapLayout(mindData, cx, cy, canvasW, canvasH) {
22172
22273
  y,
22173
22274
  w,
22174
22275
  h,
22276
+ // 第 1 階層が段数 1 (`subDepth` は 0 始まり、 cdl#520)
22277
+ depth: subDepth + 1,
22175
22278
  tone: myTone,
22176
22279
  isRoot: false,
22177
22280
  ...node.unresolved ? { unresolved: true } : {}
@@ -22213,23 +22316,36 @@ function computeMindMapLayout(mindData, cx, cy, canvasW, canvasH) {
22213
22316
  }
22214
22317
  }
22215
22318
  }
22319
+ const \u6BB5\u6570 = new Map(nodes.map((n) => [n.id, n.depth]));
22216
22320
  for (const br of mindData.branches) {
22217
22321
  const childPos = nodePos.get(br.id);
22218
22322
  if (!childPos) continue;
22219
22323
  const isLeft = nodeSide.get(br.id) === "left";
22220
22324
  const childHalfW = nodeHalfW.get(br.id) ?? subBranchW / 2;
22221
22325
  const tone = nodeTone.get(br.id);
22326
+ const childDepth = \u6BB5\u6570.get(br.id) ?? 1;
22327
+ const parentDepth = \u6BB5\u6570.get(br.parent) ?? 0;
22222
22328
  if (br.parent === mindData.rootId) {
22223
22329
  const startX = rootEdgeXFor(isLeft);
22224
22330
  const endX = childPos.x + (isLeft ? childHalfW : -childHalfW);
22225
- edges.push({ d: makeCurve(startX, cy, endX, childPos.y), tone });
22331
+ edges.push({
22332
+ d: makeCurve(startX, cy, endX, childPos.y),
22333
+ tone,
22334
+ depth: childDepth,
22335
+ deferUntilComplete: false
22336
+ });
22226
22337
  } else {
22227
22338
  const parentPos = nodePos.get(br.parent);
22228
22339
  if (!parentPos) continue;
22229
22340
  const parentHalfW = nodeHalfW.get(br.parent) ?? branchW / 2;
22230
22341
  const startX = parentPos.x + (isLeft ? -parentHalfW : parentHalfW);
22231
22342
  const endX = childPos.x + (isLeft ? childHalfW : -childHalfW);
22232
- edges.push({ d: makeCurve(startX, parentPos.y, endX, childPos.y), tone });
22343
+ edges.push({
22344
+ d: makeCurve(startX, parentPos.y, endX, childPos.y),
22345
+ tone,
22346
+ depth: Math.max(parentDepth, childDepth),
22347
+ deferUntilComplete: parentDepth >= childDepth
22348
+ });
22233
22349
  }
22234
22350
  }
22235
22351
  return { nodes, edges };
@@ -22249,7 +22365,9 @@ function toneColor4(tone, alpha = 1) {
22249
22365
  function FunnelNode({
22250
22366
  node,
22251
22367
  active,
22252
- stateValues = {}
22368
+ stateValues = {},
22369
+ drawing = false,
22370
+ progress = 1
22253
22371
  }) {
22254
22372
  const x0 = node.cx - node.w / 2;
22255
22373
  const y0 = node.cy - node.h / 2;
@@ -22264,12 +22382,79 @@ function FunnelNode({
22264
22382
  const stageCount = stages.length || 1;
22265
22383
  const gap = 4;
22266
22384
  const stageH = (canvasH - gap * (stageCount - 1)) / stageCount;
22385
+ const \u4F38\u3073 = \u9032\u307F\u3092\u7573\u3080(drawing, progress);
22386
+ const \u5207\u308A\u629C\u304Did = `cdl-funnel-draw-${react.useId().replace(/[^A-Za-z0-9_-]/g, "")}`;
22387
+ const \u6BB5\u306E\u4E0B\u7AEF\u306E\u5272\u5408 = (idx) => {
22388
+ if (canvasH <= 0) return 0;
22389
+ return ((idx + 1) * stageH + idx * gap) / canvasH;
22390
+ };
22391
+ const \u6BB5\u304C\u51FA\u5207\u3063\u305F = (idx) => !drawing || \u4F38\u3073 >= \u6BB5\u306E\u4E0B\u7AEF\u306E\u5272\u5408(idx);
22267
22392
  const widthAtStep = (step) => {
22268
22393
  const topRatio = 1;
22269
22394
  const bottomRatio = 0.35;
22270
22395
  const t = step / stageCount;
22271
22396
  return canvasW * (topRatio + (bottomRatio - topRatio) * t);
22272
22397
  };
22398
+ const \u6BB5 = stages.map((s, idx) => {
22399
+ const prev = idx > 0 ? stages[idx - 1] : null;
22400
+ const dropRate = prev && prev.count > 0 ? (prev.count - s.count) / prev.count * 100 : 0;
22401
+ const y = PAD_TOP + idx * (stageH + gap);
22402
+ const topW = widthAtStep(idx);
22403
+ const bottomW = widthAtStep(idx + 1);
22404
+ const cx = PAD_LEFT + canvasW / 2;
22405
+ const topX = cx - topW / 2;
22406
+ const bottomX = cx - bottomW / 2;
22407
+ const points = `${topX},${y} ${topX + topW},${y} ${bottomX + bottomW},${y + stageH} ${bottomX},${y + stageH}`;
22408
+ const tone = toneByIndex(idx);
22409
+ const legendX = PAD_LEFT + canvasW + 24;
22410
+ return /* @__PURE__ */ jsxRuntime.jsxs("g", { children: [
22411
+ /* @__PURE__ */ jsxRuntime.jsx(
22412
+ "polygon",
22413
+ {
22414
+ "data-cdl-role": "funnel-stage",
22415
+ "data-cdl-unresolved": s.unresolved ? "true" : void 0,
22416
+ points,
22417
+ fill: tone,
22418
+ fillOpacity: 0.9,
22419
+ stroke: tone,
22420
+ strokeWidth: 0
22421
+ }
22422
+ ),
22423
+ /* @__PURE__ */ jsxRuntime.jsx(
22424
+ "text",
22425
+ {
22426
+ x: cx,
22427
+ y: y + stageH / 2 + 5,
22428
+ fontSize: 14,
22429
+ fontWeight: 700,
22430
+ textAnchor: "middle",
22431
+ fill: "var(--cdl-node-fill, #ffffff)",
22432
+ children: s.title
22433
+ }
22434
+ ),
22435
+ \u6BB5\u304C\u51FA\u5207\u3063\u305F(idx) && /* @__PURE__ */ jsxRuntime.jsx(
22436
+ "text",
22437
+ {
22438
+ x: legendX,
22439
+ y: y + stageH / 2 - 2,
22440
+ fontSize: 13,
22441
+ fontWeight: 700,
22442
+ fill: "var(--cdl-text, #1a1f2a)",
22443
+ children: s.count.toLocaleString()
22444
+ }
22445
+ ),
22446
+ \u6BB5\u304C\u51FA\u5207\u3063\u305F(idx) && prev && /* @__PURE__ */ jsxRuntime.jsx(
22447
+ "text",
22448
+ {
22449
+ x: legendX,
22450
+ y: y + stageH / 2 + 14,
22451
+ fontSize: 11,
22452
+ fill: dropRate > 0 ? "var(--cdl-text-dim, #5a6270)" : "var(--cdl-text-mute, #8a8678)",
22453
+ children: dropRate > 0 ? `\u2193 ${dropRate.toFixed(1)}%` : "\xB10%"
22454
+ }
22455
+ )
22456
+ ] }, `stage-${s.id}`);
22457
+ });
22273
22458
  return /* @__PURE__ */ jsxRuntime.jsxs("g", { transform: `translate(${x0} ${y0})`, children: [
22274
22459
  /* @__PURE__ */ jsxRuntime.jsx(
22275
22460
  "rect",
@@ -22285,66 +22470,8 @@ function FunnelNode({
22285
22470
  strokeWidth: active ? 3 : 1.25
22286
22471
  }
22287
22472
  ),
22288
- stages.map((s, idx) => {
22289
- const prev = idx > 0 ? stages[idx - 1] : null;
22290
- const dropRate = prev && prev.count > 0 ? (prev.count - s.count) / prev.count * 100 : 0;
22291
- const y = PAD_TOP + idx * (stageH + gap);
22292
- const topW = widthAtStep(idx);
22293
- const bottomW = widthAtStep(idx + 1);
22294
- const cx = PAD_LEFT + canvasW / 2;
22295
- const topX = cx - topW / 2;
22296
- const bottomX = cx - bottomW / 2;
22297
- const points = `${topX},${y} ${topX + topW},${y} ${bottomX + bottomW},${y + stageH} ${bottomX},${y + stageH}`;
22298
- const tone = toneByIndex(idx);
22299
- const legendX = PAD_LEFT + canvasW + 24;
22300
- return /* @__PURE__ */ jsxRuntime.jsxs("g", { children: [
22301
- /* @__PURE__ */ jsxRuntime.jsx(
22302
- "polygon",
22303
- {
22304
- "data-cdl-role": "funnel-stage",
22305
- "data-cdl-unresolved": s.unresolved ? "true" : void 0,
22306
- points,
22307
- fill: tone,
22308
- fillOpacity: 0.9,
22309
- stroke: tone,
22310
- strokeWidth: 0
22311
- }
22312
- ),
22313
- /* @__PURE__ */ jsxRuntime.jsx(
22314
- "text",
22315
- {
22316
- x: cx,
22317
- y: y + stageH / 2 + 5,
22318
- fontSize: 14,
22319
- fontWeight: 700,
22320
- textAnchor: "middle",
22321
- fill: "var(--cdl-node-fill, #ffffff)",
22322
- children: s.title
22323
- }
22324
- ),
22325
- /* @__PURE__ */ jsxRuntime.jsx(
22326
- "text",
22327
- {
22328
- x: legendX,
22329
- y: y + stageH / 2 - 2,
22330
- fontSize: 13,
22331
- fontWeight: 700,
22332
- fill: "var(--cdl-text, #1a1f2a)",
22333
- children: s.count.toLocaleString()
22334
- }
22335
- ),
22336
- prev && /* @__PURE__ */ jsxRuntime.jsx(
22337
- "text",
22338
- {
22339
- x: legendX,
22340
- y: y + stageH / 2 + 14,
22341
- fontSize: 11,
22342
- fill: dropRate > 0 ? "var(--cdl-text-dim, #5a6270)" : "var(--cdl-text-mute, #8a8678)",
22343
- children: dropRate > 0 ? `\u2193 ${dropRate.toFixed(1)}%` : "\xB10%"
22344
- }
22345
- )
22346
- ] }, `stage-${s.id}`);
22347
- })
22473
+ drawing && /* @__PURE__ */ jsxRuntime.jsx("defs", { children: /* @__PURE__ */ jsxRuntime.jsx("clipPath", { id: \u5207\u308A\u629C\u304Did, children: /* @__PURE__ */ jsxRuntime.jsx("rect", { x: 0, y: 0, width: node.w, height: PAD_TOP + canvasH * \u4F38\u3073 }) }) }),
22474
+ drawing ? /* @__PURE__ */ jsxRuntime.jsx("g", { clipPath: `url(#${\u5207\u308A\u629C\u304Did})`, children: \u6BB5 }) : \u6BB5
22348
22475
  ] });
22349
22476
  }
22350
22477
  var TONE_ORDER = [
@@ -22530,7 +22657,9 @@ function \u7BB1\u306E\u6587\u5B57({
22530
22657
  function TreeNode({
22531
22658
  node,
22532
22659
  active,
22533
- stateValues = {}
22660
+ stateValues = {},
22661
+ drawing = false,
22662
+ progress = 1
22534
22663
  }) {
22535
22664
  const x0 = node.cx - node.w / 2;
22536
22665
  const y0 = node.cy - node.h / 2;
@@ -22543,6 +22672,9 @@ function TreeNode({
22543
22672
  const canvasW = node.w - PAD_LEFT - PAD_RIGHT;
22544
22673
  const canvasH = node.h - PAD_TOP - PAD_BOTTOM;
22545
22674
  const layout2 = computeTreeLayout(treeNodes, canvasW, canvasH);
22675
+ const \u4F38\u3073 = \u9032\u307F\u3092\u7573\u3080(drawing, progress);
22676
+ const \u6700\u5927\u6DF1\u3055 = layout2.nodes.reduce((m, n) => Math.max(m, n.depth), 0);
22677
+ const \u7BB1\u304C\u51FA\u308B = (\u6DF1\u3055) => !drawing || \u6BB5\u306E\u4F38\u3073(\u4F38\u3073, \u6DF1\u3055, \u6700\u5927\u6DF1\u3055) >= 1;
22546
22678
  const depthColors = [TONE.accent, TONE.teal, TONE.success, TONE.warning, TONE.info];
22547
22679
  return /* @__PURE__ */ jsxRuntime.jsxs("g", { transform: `translate(${x0} ${y0})`, children: [
22548
22680
  /* @__PURE__ */ jsxRuntime.jsx("defs", { children: /* @__PURE__ */ jsxRuntime.jsxs("linearGradient", { id: gradientId, x1: "0%", y1: "0%", x2: "0%", y2: "100%", children: [
@@ -22570,6 +22702,7 @@ function TreeNode({
22570
22702
  const y2 = PAD_TOP + e.y2;
22571
22703
  const midY = (y1 + y2) / 2;
22572
22704
  const path = `M ${x1} ${y1} L ${x1} ${midY} L ${x2} ${midY} L ${x2} ${y2}`;
22705
+ const \u679D\u306E\u4F38\u3073 = e.deferUntilComplete ? \u4F38\u3073 >= 1 ? 1 : 0 : \u6BB5\u306E\u4F38\u3073(\u4F38\u3073, e.depth, \u6700\u5927\u6DF1\u3055);
22573
22706
  return /* @__PURE__ */ jsxRuntime.jsxs("g", { children: [
22574
22707
  /* @__PURE__ */ jsxRuntime.jsx(
22575
22708
  "path",
@@ -22580,13 +22713,15 @@ function TreeNode({
22580
22713
  stroke: TONE.accent,
22581
22714
  strokeOpacity: 0.55,
22582
22715
  strokeWidth: 1.5,
22583
- strokeLinejoin: "round"
22716
+ strokeLinejoin: "round",
22717
+ ...\u4F38\u3070\u3059dash(drawing, \u679D\u306E\u4F38\u3073)
22584
22718
  }
22585
22719
  ),
22586
- /* @__PURE__ */ jsxRuntime.jsx("circle", { cx: x1, cy: midY, r: 2.5, fill: TONE.accent, fillOpacity: 0.75 })
22720
+ (!drawing || \u679D\u306E\u4F38\u3073 >= 1) && /* @__PURE__ */ jsxRuntime.jsx("circle", { cx: x1, cy: midY, r: 2.5, fill: TONE.accent, fillOpacity: 0.75 })
22587
22721
  ] }, `edge-${i}`);
22588
22722
  }),
22589
22723
  layout2.nodes.map((n) => {
22724
+ if (!\u7BB1\u304C\u51FA\u308B(n.depth)) return null;
22590
22725
  const accent = depthColors[Math.min(n.depth, depthColors.length - 1)] ?? depthColors[0];
22591
22726
  const isRoot = n.depth === 0;
22592
22727
  const \u884C = \u7BB1\u306B\u7A4D\u3080(
@@ -22767,6 +22902,7 @@ function computeTreeLayout(treeNodes, canvasW, canvasH) {
22767
22902
  }
22768
22903
  }
22769
22904
  const hById = new Map(nodes.map((n) => [n.id, n.h]));
22905
+ const \u6BB5\u6570 = new Map(nodes.map((n) => [n.id, n.depth]));
22770
22906
  const edges = [];
22771
22907
  for (const n of treeNodes) {
22772
22908
  if (!n.parent) continue;
@@ -22775,14 +22911,25 @@ function computeTreeLayout(treeNodes, canvasW, canvasH) {
22775
22911
  if (!parent || !child) continue;
22776
22912
  const parentH = hById.get(n.parent) ?? nodeH;
22777
22913
  const childH = hById.get(n.id) ?? nodeH;
22778
- edges.push({ x1: parent.x, y1: parent.y + parentH / 2, x2: child.x, y2: child.y - childH / 2 });
22914
+ const parentDepth = \u6BB5\u6570.get(n.parent) ?? 0;
22915
+ const childDepth = \u6BB5\u6570.get(n.id) ?? 1;
22916
+ edges.push({
22917
+ x1: parent.x,
22918
+ y1: parent.y + parentH / 2,
22919
+ x2: child.x,
22920
+ y2: child.y - childH / 2,
22921
+ depth: Math.max(parentDepth, childDepth),
22922
+ deferUntilComplete: parentDepth >= childDepth
22923
+ });
22779
22924
  }
22780
22925
  return { nodes, edges };
22781
22926
  }
22782
22927
  function UserJourneyNode({
22783
22928
  node,
22784
22929
  active,
22785
- stateValues = {}
22930
+ stateValues = {},
22931
+ drawing = false,
22932
+ progress = 1
22786
22933
  }) {
22787
22934
  const x0 = node.cx - node.w / 2;
22788
22935
  const y0 = node.cy - node.h / 2;
@@ -22820,6 +22967,12 @@ function UserJourneyNode({
22820
22967
  const xAt = (idx) => PAD_LEFT + (steps.length <= 1 ? canvasW / 2 : colW / 2 + colW * idx);
22821
22968
  const yAt = (emotion) => PAD_TOP + rowH / 2 + (4 - emotionScore[emotion]) * rowH;
22822
22969
  const pts = steps.map((s, i) => ({ x: xAt(i), y: yAt(s.emotion) }));
22970
+ const \u4F38\u3073 = \u9032\u307F\u3092\u7573\u3080(drawing, progress);
22971
+ const \u6BB5\u307E\u3067\u306E\u5272\u5408 = \u30D9\u30B8\u30A8\u306E\u7D2F\u7A4D\u5272\u5408(pts, (\u524D, \u5F8C) => {
22972
+ const midX = (\u524D.x + \u5F8C.x) / 2;
22973
+ return [{ x: midX, y: \u524D.y }, { x: midX, y: \u5F8C.y }];
22974
+ });
22975
+ const \u7DDA\u306E\u5148\u304C\u5C4A\u3044\u305F = (idx) => !drawing || \u4F38\u3073 >= (\u6BB5\u307E\u3067\u306E\u5272\u5408[idx] ?? 0);
22823
22976
  const smoothPath = pts.length > 1 ? pts.reduce((acc, p, i) => {
22824
22977
  if (i === 0) return `M ${p.x} ${p.y}`;
22825
22978
  const prev = pts[i - 1];
@@ -22900,7 +23053,8 @@ function UserJourneyNode({
22900
23053
  stroke: "var(--cdl-tone-accent, #2d6a8f)",
22901
23054
  strokeOpacity: 0.18,
22902
23055
  strokeWidth: 10,
22903
- strokeLinecap: "round"
23056
+ strokeLinecap: "round",
23057
+ ...\u4F38\u3070\u3059dash(drawing, \u4F38\u3073)
22904
23058
  }
22905
23059
  ),
22906
23060
  /* @__PURE__ */ jsxRuntime.jsx(
@@ -22912,11 +23066,12 @@ function UserJourneyNode({
22912
23066
  stroke: "var(--cdl-tone-accent, #2d6a8f)",
22913
23067
  strokeWidth: 2.75,
22914
23068
  strokeLinejoin: "round",
22915
- strokeLinecap: "round"
23069
+ strokeLinecap: "round",
23070
+ ...\u4F38\u3070\u3059dash(drawing, \u4F38\u3073)
22916
23071
  }
22917
23072
  )
22918
23073
  ] }),
22919
- steps.map((s, idx) => /* @__PURE__ */ jsxRuntime.jsxs(
23074
+ steps.map((s, idx) => !\u7DDA\u306E\u5148\u304C\u5C4A\u3044\u305F(idx) ? null : /* @__PURE__ */ jsxRuntime.jsxs(
22920
23075
  "g",
22921
23076
  {
22922
23077
  "data-cdl-role": "journey-step",
@@ -26804,21 +26959,84 @@ function CdlNodeView({
26804
26959
  }
26805
26960
  );
26806
26961
  case "chart-pie":
26807
- return /* @__PURE__ */ jsxRuntime.jsx(ChartPieNode, { node: resolvedNode, active, stateValues });
26962
+ return /* @__PURE__ */ jsxRuntime.jsx(
26963
+ ChartPieNode,
26964
+ {
26965
+ node: resolvedNode,
26966
+ active,
26967
+ stateValues,
26968
+ drawing,
26969
+ progress
26970
+ }
26971
+ );
26808
26972
  case "chart-bar":
26809
- return /* @__PURE__ */ jsxRuntime.jsx(ChartBarNode, { node: resolvedNode, active, stateValues });
26973
+ return /* @__PURE__ */ jsxRuntime.jsx(
26974
+ ChartBarNode,
26975
+ {
26976
+ node: resolvedNode,
26977
+ active,
26978
+ stateValues,
26979
+ drawing,
26980
+ progress
26981
+ }
26982
+ );
26810
26983
  case "gantt-timeline":
26811
- return /* @__PURE__ */ jsxRuntime.jsx(GanttNode, { node: resolvedNode, active, stateValues });
26984
+ return /* @__PURE__ */ jsxRuntime.jsx(
26985
+ GanttNode,
26986
+ {
26987
+ node: resolvedNode,
26988
+ active,
26989
+ stateValues,
26990
+ drawing,
26991
+ progress
26992
+ }
26993
+ );
26812
26994
  case "mind-map":
26813
- return /* @__PURE__ */ jsxRuntime.jsx(MindMapNode, { node: resolvedNode, active, stateValues });
26995
+ return /* @__PURE__ */ jsxRuntime.jsx(
26996
+ MindMapNode,
26997
+ {
26998
+ node: resolvedNode,
26999
+ active,
27000
+ stateValues,
27001
+ drawing,
27002
+ progress
27003
+ }
27004
+ );
26814
27005
  case "funnel-stages":
26815
- return /* @__PURE__ */ jsxRuntime.jsx(FunnelNode, { node: resolvedNode, active, stateValues });
27006
+ return /* @__PURE__ */ jsxRuntime.jsx(
27007
+ FunnelNode,
27008
+ {
27009
+ node: resolvedNode,
27010
+ active,
27011
+ stateValues,
27012
+ drawing,
27013
+ progress
27014
+ }
27015
+ );
26816
27016
  case "quadrant-matrix":
26817
27017
  return /* @__PURE__ */ jsxRuntime.jsx(QuadrantNode, { node: resolvedNode, active, stateValues });
26818
27018
  case "tree-hierarchy":
26819
- return /* @__PURE__ */ jsxRuntime.jsx(TreeNode, { node: resolvedNode, active, stateValues });
27019
+ return /* @__PURE__ */ jsxRuntime.jsx(
27020
+ TreeNode,
27021
+ {
27022
+ node: resolvedNode,
27023
+ active,
27024
+ stateValues,
27025
+ drawing,
27026
+ progress
27027
+ }
27028
+ );
26820
27029
  case "journey-map":
26821
- return /* @__PURE__ */ jsxRuntime.jsx(UserJourneyNode, { node: resolvedNode, active, stateValues });
27030
+ return /* @__PURE__ */ jsxRuntime.jsx(
27031
+ UserJourneyNode,
27032
+ {
27033
+ node: resolvedNode,
27034
+ active,
27035
+ stateValues,
27036
+ drawing,
27037
+ progress
27038
+ }
27039
+ );
26822
27040
  case "shape-file":
26823
27041
  return /* @__PURE__ */ jsxRuntime.jsx(ShapeFileNode, { node: resolvedNode, active });
26824
27042
  case "shape-folder":