@cardenelabs/cdl 0.34.0 → 0.35.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/CHANGELOG.md CHANGED
@@ -5,6 +5,20 @@ CDL (Chainome Diagram Language) の主要変更履歴。
5
5
 
6
6
  ## [Unreleased]
7
7
 
8
+ ## [0.35.0] - 2026-09-07
9
+
10
+ ### Changed
11
+
12
+ - **傾き図の系列の名前を線と同じ色で描くようにした** (#698)
13
+
14
+ 名前も値も同じ淡い色だったため、名前と線を突き合わせるには線を目で辿るしかなかった。
15
+ 交差を読ませる図で、交差した先を追う作業が読み手に残っていた。
16
+
17
+ 色を持たせるのは名前だけで、値は太字の濃い色のまま。 identity は色が、量は字が担う。
18
+
19
+ 併せて時点の軸の縦線を太さ 1 から 2 にした。 淡い罫では柱に見えず、「前」「今」 の見出し
20
+ だけが宙に浮いていた。 系列の線 (2.5) より細いままなので、軸が線の 1 本には見えない。
21
+
8
22
  ## [0.34.0] - 2026-09-07
9
23
 
10
24
  ### Changed
@@ -1663,7 +1677,8 @@ Initial OSS release.
1663
1677
  使わない = annotated tag を push しても GitHub Release は作られず、 Release を作っていない版で
1664
1678
  行き止まりになる。
1665
1679
 
1666
- [Unreleased]: https://github.com/cardene777/cdl/compare/v0.34.0...HEAD
1680
+ [Unreleased]: https://github.com/cardene777/cdl/compare/v0.35.0...HEAD
1681
+ [0.35.0]: https://github.com/cardene777/cdl/compare/v0.34.0...v0.35.0
1667
1682
  [0.34.0]: https://github.com/cardene777/cdl/compare/v0.33.0...v0.34.0
1668
1683
  [0.33.0]: https://github.com/cardene777/cdl/compare/v0.32.0...v0.33.0
1669
1684
  [0.32.0]: https://github.com/cardene777/cdl/compare/v0.31.1...v0.32.0
package/dist/index.cjs CHANGED
@@ -24338,6 +24338,15 @@ function interpolateColor(template, stateValues, fallback) {
24338
24338
  if (!template) return fallback;
24339
24339
  return interpolate(template, stateValues);
24340
24340
  }
24341
+
24342
+ // src/kinds/chart-number.ts
24343
+ function \u5B9F\u5024\u8868\u8A18(v) {
24344
+ return Number.isInteger(v) ? v.toLocaleString("en-US") : v.toLocaleString("en-US", { maximumFractionDigits: 1 });
24345
+ }
24346
+ function \u5272\u5408\u8868\u8A18(frac) {
24347
+ const v = Math.round(frac * 1e3) / 10;
24348
+ return `${Number.isInteger(v) ? v : v.toFixed(1)}%`;
24349
+ }
24341
24350
  function ChartPieNode({
24342
24351
  node,
24343
24352
  active,
@@ -24785,13 +24794,6 @@ function \u6247\u5F62\u306E\u5207\u308A\u629C\u304D(cx, cy, r, \u958B\u304D) {
24785
24794
  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`;
24786
24795
  return /* @__PURE__ */ jsxRuntime.jsx("path", { d });
24787
24796
  }
24788
- function \u5B9F\u5024\u8868\u8A18(v) {
24789
- return Number.isInteger(v) ? v.toLocaleString("en-US") : v.toLocaleString("en-US", { maximumFractionDigits: 1 });
24790
- }
24791
- function \u5272\u5408\u8868\u8A18(frac) {
24792
- const v = Math.round(frac * 1e3) / 10;
24793
- return `${Number.isInteger(v) ? v : v.toFixed(1)}%`;
24794
- }
24795
24797
  function sliceColor(tone, idx) {
24796
24798
  if (tone) return TONE[tone];
24797
24799
  return chartSeriesColor(idx);
@@ -24832,7 +24834,7 @@ function ChartGaugeNode({
24832
24834
  const path = `M ${\u59161.x} ${\u59161.y} A ${radius} ${radius} 0 0 1 ${\u59162.x} ${\u59162.y} L ${\u51852.x} ${\u51852.y} A ${\u5185\u534A\u5F84} ${\u5185\u534A\u5F84} 0 0 0 ${\u51851.x} ${\u51851.y} Z`;
24833
24835
  return { d, frac, path };
24834
24836
  });
24835
- const \u5408\u8A08\u306E\u6587\u5B57 = \u5B9F\u5024\u8868\u8A182(Math.round(total));
24837
+ const \u5408\u8A08\u306E\u6587\u5B57 = \u5B9F\u5024\u8868\u8A18(Math.round(total));
24836
24838
  const \u6A2A\u306E\u4E0A\u9650 = \u5185\u534A\u5F84 * 2 * 0.86;
24837
24839
  const \u7D1A\u306E\u5019\u88DC = Math.min(
24838
24840
  // 横 = 実際の字幅から逆算する
@@ -24897,7 +24899,7 @@ function ChartGaugeNode({
24897
24899
  ),
24898
24900
  data.map((d, idx) => {
24899
24901
  const x = PAD_SIDE + \u5185\u8A33\u306E\u5E45 * idx;
24900
- const \u6570\u5024 = `${\u5B9F\u5024\u8868\u8A182(d.value)} ${\u5272\u5408\u8868\u8A182(d.value / total)}`;
24902
+ const \u6570\u5024 = `${\u5B9F\u5024\u8868\u8A18(d.value)} ${\u5272\u5408\u8868\u8A18(d.value / total)}`;
24901
24903
  return /* @__PURE__ */ jsxRuntime.jsxs("g", { "data-cdl-role": "chart-gauge-item", children: [
24902
24904
  /* @__PURE__ */ jsxRuntime.jsx("rect", { x, y: \u5185\u8A33\u306Ey, width: 30, height: 4, rx: 2, fill: arcColor(d.tone, idx) }),
24903
24905
  /* @__PURE__ */ jsxRuntime.jsx(
@@ -24929,13 +24931,6 @@ function \u5207\u308A\u8A70\u3081\u308B(s, \u4E0A\u9650, \u7D1A) {
24929
24931
  }
24930
24932
  return `${out}\u2026`;
24931
24933
  }
24932
- function \u5B9F\u5024\u8868\u8A182(v) {
24933
- return Number.isInteger(v) ? v.toLocaleString("en-US") : v.toLocaleString("en-US", { maximumFractionDigits: 1 });
24934
- }
24935
- function \u5272\u5408\u8868\u8A182(frac) {
24936
- const v = Math.round(frac * 1e3) / 10;
24937
- return `${Number.isInteger(v) ? v : v.toFixed(1)}%`;
24938
- }
24939
24934
  function arcColor(tone, idx) {
24940
24935
  if (tone) return TONE[tone];
24941
24936
  return chartSeriesColor(idx);
@@ -24955,7 +24950,7 @@ function ChartRadialNode({
24955
24950
  const \u6570\u5024\u306E\u7D1A = 13;
24956
24951
  const \u884C\u306E\u9AD8\u3055 = 42;
24957
24952
  const \u4E00\u89A7\u3068\u5F27\u306E\u9593 = 28;
24958
- const \u6570\u5024\u306E\u6587\u5B57 = data.map((d) => `${\u5B9F\u5024\u8868\u8A183(d.value)} ${\u5272\u5408\u8868\u8A183(d.value / total)}`);
24953
+ const \u6570\u5024\u306E\u6587\u5B57 = data.map((d) => `${\u5B9F\u5024\u8868\u8A18(d.value)} ${\u5272\u5408\u8868\u8A18(d.value / total)}`);
24959
24954
  const \u4E00\u89A7\u306E\u5E45 = \u5370\u306E\u5E45 + Math.max(
24960
24955
  0,
24961
24956
  ...data.map(
@@ -25058,13 +25053,6 @@ function \u5F27\u306E\u90532(cx, cy, \u4E2D\u5FC3\u534A\u5F84, \u5E45, \u5272\u5
25058
25053
  const p = (r, a) => `${cx + r * Math.cos(a)} ${cy + r * Math.sin(a)}`;
25059
25054
  return `M ${p(\u5916, a0)} A ${\u5916} ${\u5916} 0 ${large} 1 ${p(\u5916, a1)} L ${p(\u5185, a1)} A ${\u5185} ${\u5185} 0 ${large} 0 ${p(\u5185, a0)} Z`;
25060
25055
  }
25061
- function \u5B9F\u5024\u8868\u8A183(v) {
25062
- return Number.isInteger(v) ? v.toLocaleString("en-US") : v.toLocaleString("en-US", { maximumFractionDigits: 1 });
25063
- }
25064
- function \u5272\u5408\u8868\u8A183(frac) {
25065
- const v = Math.round(frac * 1e3) / 10;
25066
- return `${Number.isInteger(v) ? v : v.toFixed(1)}%`;
25067
- }
25068
25056
  function arcColor2(tone, idx) {
25069
25057
  if (tone) return TONE[tone];
25070
25058
  return chartSeriesColor(idx);
@@ -25098,7 +25086,7 @@ function ChartStatNode({
25098
25086
  const \u67A02 = \u533A\u753B.\u67A0(idx);
25099
25087
  const frac = total > 0 ? d.value / total : 0;
25100
25088
  const \u8272 = \u5370\u306E\u8272(d.tone, idx);
25101
- const \u6570\u5024 = \u5B9F\u5024\u8868\u8A184(d.value);
25089
+ const \u6570\u5024 = \u5B9F\u5024\u8868\u8A18(d.value);
25102
25090
  const \u6570\u5024\u306E\u7D1A = \u53CE\u3081\u308B\u7D1A(\u6570\u5024, \u67A02.w - \u533A\u753B.\u4F59\u767D * 2, \u533A\u753B.\u6570\u5024\u306E\u7D1A, \u533A\u753B.\u540D\u524D\u306E\u7D1A + 1);
25103
25091
  return /* @__PURE__ */ jsxRuntime.jsxs("g", { "data-cdl-role": "chart-stat-item", transform: `translate(${\u67A02.x} ${\u67A02.y})`, children: [
25104
25092
  idx > 0 && /* @__PURE__ */ jsxRuntime.jsx(
@@ -25173,7 +25161,7 @@ function ChartStatNode({
25173
25161
  fontSize: \u533A\u753B.\u5272\u5408\u306E\u7D1A,
25174
25162
  textAnchor: "middle",
25175
25163
  fill: "var(--cdl-text-dim, #5a6270)",
25176
- children: \u5272\u5408\u8868\u8A184(frac)
25164
+ children: \u5272\u5408\u8868\u8A18(frac)
25177
25165
  }
25178
25166
  )
25179
25167
  ] }, `stat-${idx}`);
@@ -25220,13 +25208,6 @@ function \u5F27\u306E\u90533(cx, cy, r, \u5272\u5408) {
25220
25208
  const p = (a) => `${cx + r * Math.cos(a)} ${cy + r * Math.sin(a)}`;
25221
25209
  return `M ${p(a0)} A ${r} ${r} 0 ${large} 1 ${p(a1)}`;
25222
25210
  }
25223
- function \u5B9F\u5024\u8868\u8A184(v) {
25224
- return Number.isInteger(v) ? v.toLocaleString("en-US") : v.toLocaleString("en-US", { maximumFractionDigits: 1 });
25225
- }
25226
- function \u5272\u5408\u8868\u8A184(frac) {
25227
- const v = Math.round(frac * 1e3) / 10;
25228
- return `${Number.isInteger(v) ? v : v.toFixed(1)}%`;
25229
- }
25230
25211
  function \u5370\u306E\u8272(tone, idx) {
25231
25212
  if (tone) return TONE[tone];
25232
25213
  return chartSeriesColor(idx);
@@ -25262,7 +25243,7 @@ function ChartWaffleNode({
25262
25243
  const \u884C\u306E\u9AD8\u3055 = 40;
25263
25244
  const \u4E00\u89A7\u3068\u683C\u5B50\u306E\u9593 = 28;
25264
25245
  const \u5370\u306E\u5E452 = 18;
25265
- const \u6570\u5024\u306E\u6587\u5B57 = data.map((d, i) => `${\u5B9F\u5024\u8868\u8A185(d.value)} ${\u914D\u5206[i] ?? 0}%`);
25246
+ const \u6570\u5024\u306E\u6587\u5B57 = data.map((d, i) => `${\u5B9F\u5024\u8868\u8A18(d.value)} ${\u914D\u5206[i] ?? 0}%`);
25266
25247
  const \u4E00\u89A7\u306E\u5E45 = \u5370\u306E\u5E452 + Math.max(
25267
25248
  0,
25268
25249
  ...data.map(
@@ -25346,9 +25327,6 @@ function ChartWaffleNode({
25346
25327
  })
25347
25328
  ] });
25348
25329
  }
25349
- function \u5B9F\u5024\u8868\u8A185(v) {
25350
- return Number.isInteger(v) ? v.toLocaleString("en-US") : v.toLocaleString("en-US", { maximumFractionDigits: 1 });
25351
- }
25352
25330
  function \u5370\u306E\u82722(tone, idx) {
25353
25331
  if (tone) return TONE[tone];
25354
25332
  return chartSeriesColor(idx);
@@ -25435,7 +25413,7 @@ function ChartStackedBarNode({
25435
25413
  fontWeight: 700,
25436
25414
  textAnchor: "middle",
25437
25415
  fill: "#ffffff",
25438
- children: \u5272\u5408\u8868\u8A185(s.\u5272\u5408)
25416
+ children: \u5272\u5408\u8868\u8A18(s.\u5272\u5408)
25439
25417
  }
25440
25418
  ),
25441
25419
  w >= SLICE_MIN_W_FOR_VALUE && /* @__PURE__ */ jsxRuntime.jsx(
@@ -25448,7 +25426,7 @@ function ChartStackedBarNode({
25448
25426
  textAnchor: "middle",
25449
25427
  fill: "#ffffff",
25450
25428
  fillOpacity: 0.85,
25451
- children: \u5B9F\u5024\u8868\u8A186(s.\u5B9F\u5024)
25429
+ children: \u5B9F\u5024\u8868\u8A18(s.\u5B9F\u5024)
25452
25430
  }
25453
25431
  )
25454
25432
  ] }, `slice-${idx}`);
@@ -25493,13 +25471,6 @@ function \u5E2F\u3092\u7D44\u3080(\u540D\u524D, data, \u53D6\u308B) {
25493
25471
  }))
25494
25472
  };
25495
25473
  }
25496
- function \u5B9F\u5024\u8868\u8A186(v) {
25497
- return Number.isInteger(v) ? v.toLocaleString("en-US") : v.toLocaleString("en-US", { maximumFractionDigits: 1 });
25498
- }
25499
- function \u5272\u5408\u8868\u8A185(frac) {
25500
- const v = Math.round(frac * 1e3) / 10;
25501
- return `${Number.isInteger(v) ? v : v.toFixed(1)}%`;
25502
- }
25503
25474
  function \u5370\u306E\u82723(tone, idx) {
25504
25475
  if (tone) return TONE[tone];
25505
25476
  return chartSeriesColor(idx);
@@ -25521,11 +25492,6 @@ function \u4E00\u89A7\u306E\u4E26\u3073(data, \u5DE6, \u53F3\u7AEF, \u7D1A) {
25521
25492
  });
25522
25493
  return out;
25523
25494
  }
25524
-
25525
- // src/kinds/chart-number.ts
25526
- function \u5B9F\u5024\u8868\u8A187(v) {
25527
- return Number.isInteger(v) ? v.toLocaleString("en-US") : v.toLocaleString("en-US", { maximumFractionDigits: 1 });
25528
- }
25529
25495
  var \u7DDA\u306E\u6700\u5C0F\u5E45 = 120;
25530
25496
  function ChartSlopeNode({
25531
25497
  node,
@@ -25561,8 +25527,8 @@ function ChartSlopeNode({
25561
25527
  const \u4E0A\u7AEF = PAD + (\u524D\u3042\u308A ? \u6642\u70B9\u306E\u7D1A + 12 : 0) + 6;
25562
25528
  const \u4E0B\u7AEF = Math.max(\u4E0A\u7AEF + 10, node.h - PAD - 6);
25563
25529
  const y\u3092\u53D6\u308B = (v) => \u5C3A\u306E\u5E45 > 0 ? \u4E0B\u7AEF - (v - \u6700\u5C0F) / \u5C3A\u306E\u5E45 * (\u4E0B\u7AEF - \u4E0A\u7AEF) : (\u4E0A\u7AEF + \u4E0B\u7AEF) / 2;
25564
- const \u5DE6\u306E\u5B57 = \u7CFB\u5217\u305F\u3061.map((s) => \u5B9F\u5024\u8868\u8A187(s.\u524D));
25565
- const \u53F3\u306E\u5B57 = \u7CFB\u5217\u305F\u3061.map((s) => \u5B9F\u5024\u8868\u8A187(s.\u4ECA));
25530
+ const \u5DE6\u306E\u5B57 = \u7CFB\u5217\u305F\u3061.map((s) => \u5B9F\u5024\u8868\u8A18(s.\u524D));
25531
+ const \u53F3\u306E\u5B57 = \u7CFB\u5217\u305F\u3061.map((s) => \u5B9F\u5024\u8868\u8A18(s.\u4ECA));
25566
25532
  const \u5DE6\u5024\u5E45 = Math.max(0, ...\u5DE6\u306E\u5B57.map((t) => textWidth(t, \u5024\u306E\u7D1A)));
25567
25533
  const \u53F3\u5024\u5E45 = Math.max(0, ...\u53F3\u306E\u5B57.map((t) => textWidth(t, \u5024\u306E\u7D1A)));
25568
25534
  const \u540D\u524D\u306B\u4F7F\u3048\u308B = Math.max(
@@ -25604,7 +25570,7 @@ function ChartSlopeNode({
25604
25570
  x2: x,
25605
25571
  y2: \u4E0B\u7AEF + 6,
25606
25572
  stroke: "var(--cdl-divider, #d4d4d8)",
25607
- strokeWidth: 1
25573
+ strokeWidth: 2
25608
25574
  },
25609
25575
  `axis-${i}`
25610
25576
  )),
@@ -25698,7 +25664,7 @@ function ChartSlopeNode({
25698
25664
  y: \u5DE6y + 5,
25699
25665
  textAnchor: "end",
25700
25666
  fontSize: \u540D\u524D\u306E\u7D1A,
25701
- fill: "var(--cdl-text-dim, #5a6270)",
25667
+ fill: s.\u8272,
25702
25668
  children: s.\u540D\u524D
25703
25669
  }
25704
25670
  )
@@ -25710,7 +25676,7 @@ function ChartSlopeNode({
25710
25676
  y: \u53F3y + 5,
25711
25677
  textAnchor: "end",
25712
25678
  fontSize: \u540D\u524D\u306E\u7D1A,
25713
- fill: "var(--cdl-text-dim, #5a6270)",
25679
+ fill: s.\u8272,
25714
25680
  children: s.\u540D\u524D
25715
25681
  }
25716
25682
  ),
@@ -25734,7 +25700,7 @@ function ChartSlopeNode({
25734
25700
  x: \u53F3\u8EF8x + \u8EF8\u304B\u3089\u5024\u307E\u3067 + \u53F3\u5024\u5E45 + \u5024\u304B\u3089\u540D\u524D\u307E\u3067,
25735
25701
  y: \u53F3y + 5,
25736
25702
  fontSize: \u540D\u524D\u306E\u7D1A,
25737
- fill: "var(--cdl-text-dim, #5a6270)",
25703
+ fill: s.\u8272,
25738
25704
  children: s.\u540D\u524D
25739
25705
  }
25740
25706
  )