@cardenelabs/cdl 0.40.9 → 0.40.11

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.js CHANGED
@@ -24959,18 +24959,35 @@ function ChartGaugeNode({
24959
24959
  const \u5185\u534A\u5F84 = radius * 0.62;
24960
24960
  const cx = node.w / 2;
24961
24961
  const cy = PAD_TOP2 + radius;
24962
+ const \u524D\u3042\u308A = \u51FA\u3059\u4EF6\u305F\u3061.some((d) => d.previous !== void 0);
24963
+ const \u524D\u306E\u5024 = \u51FA\u3059\u4EF6\u305F\u3061.map((d) => Math.max(0, d.previous ?? 0));
24964
+ const \u524D\u306E\u5408\u8A08 = \u524D\u306E\u5024.reduce((acc, v) => acc + v, 0);
24965
+ const \u5E2F = radius - \u5185\u534A\u5F84;
24966
+ const \u4ECA\u306E\u5185\u534A\u5F84 = \u524D\u3042\u308A ? \u5185\u534A\u5F84 + \u5E2F * 0.42 : \u5185\u534A\u5F84;
24967
+ const \u524D\u306E\u5185\u534A\u5F84 = \u5185\u534A\u5F84;
24968
+ const \u524D\u306E\u5916\u534A\u5F84 = \u5185\u534A\u5F84 + \u5E2F * 0.32;
24969
+ const \u6247\u306E\u9053 = (a0, a1, \u5185, \u5916) => {
24970
+ const \u59161 = \u6975(cx, cy, \u5916, a0);
24971
+ const \u59162 = \u6975(cx, cy, \u5916, a1);
24972
+ const \u51852 = \u6975(cx, cy, \u5185, a1);
24973
+ const \u51851 = \u6975(cx, cy, \u5185, a0);
24974
+ return `M ${\u59161.x} ${\u59161.y} A ${\u5916} ${\u5916} 0 0 1 ${\u59162.x} ${\u59162.y} L ${\u51852.x} ${\u51852.y} A ${\u5185} ${\u5185} 0 0 0 ${\u51851.x} ${\u51851.y} Z`;
24975
+ };
24962
24976
  let cumFrac = 0;
24963
24977
  const slices = \u51FA\u3059\u4EF6\u305F\u3061.map((d) => {
24964
24978
  const frac = d.value / total;
24965
24979
  const a0 = Math.PI + cumFrac * Math.PI;
24966
24980
  const a1 = a0 + frac * Math.PI;
24967
24981
  cumFrac += frac;
24968
- const \u59161 = \u6975(cx, cy, radius, a0);
24969
- const \u59162 = \u6975(cx, cy, radius, a1);
24970
- const \u51852 = \u6975(cx, cy, \u5185\u534A\u5F84, a1);
24971
- const \u51851 = \u6975(cx, cy, \u5185\u534A\u5F84, a0);
24972
- 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`;
24973
- return { d, frac, path };
24982
+ return { d, frac, path: \u6247\u306E\u9053(a0, a1, \u4ECA\u306E\u5185\u534A\u5F84, radius) };
24983
+ });
24984
+ let \u524D\u306Ecum = 0;
24985
+ const \u524D\u306E\u6247\u305F\u3061 = \u51FA\u3059\u4EF6\u305F\u3061.map((d, idx) => {
24986
+ const frac = \u524D\u306E\u5408\u8A08 > 0 ? (\u524D\u306E\u5024[idx] ?? 0) / \u524D\u306E\u5408\u8A08 : 0;
24987
+ const a0 = Math.PI + \u524D\u306Ecum * Math.PI;
24988
+ const a1 = a0 + frac * Math.PI;
24989
+ \u524D\u306Ecum += frac;
24990
+ return { d, frac, path: \u6247\u306E\u9053(a0, a1, \u524D\u306E\u5185\u534A\u5F84, \u524D\u306E\u5916\u534A\u5F84) };
24974
24991
  });
24975
24992
  const \u5408\u8A08\u306E\u6587\u5B57 = \u5B9F\u5024\u8868\u8A18(Math.round(total));
24976
24993
  const \u5358\u4F4D\u5E45 = Math.max(textWidth(\u5408\u8A08\u306E\u6587\u5B57, 100), 1) / 100;
@@ -24999,6 +25016,20 @@ function ChartGaugeNode({
24999
25016
  },
25000
25017
  `arc-${idx}`
25001
25018
  ));
25019
+ const \u524D\u306E\u5F27\u305F\u3061 = \u524D\u3042\u308A ? \u524D\u306E\u6247\u305F\u3061.map((s, idx) => /* @__PURE__ */ jsx(
25020
+ "path",
25021
+ {
25022
+ "data-cdl-role": "chart-gauge-previous",
25023
+ "data-cdl-unresolved": s.d.unresolved ? "true" : void 0,
25024
+ d: s.path,
25025
+ fill: arcColor(s.d.tone, idx),
25026
+ fillOpacity: 0.45,
25027
+ stroke: "var(--cdl-node-fill, #ffffff)",
25028
+ strokeWidth: 1.5,
25029
+ strokeLinejoin: "round"
25030
+ },
25031
+ `prev-arc-${idx}`
25032
+ )) : null;
25002
25033
  return /* @__PURE__ */ jsxs("g", { transform: `translate(${x0} ${y0})`, children: [
25003
25034
  /* @__PURE__ */ jsx(
25004
25035
  "rect",
@@ -25015,7 +25046,13 @@ function ChartGaugeNode({
25015
25046
  }
25016
25047
  ),
25017
25048
  drawing && /* @__PURE__ */ jsx("defs", { children: /* @__PURE__ */ jsx("clipPath", { id: \u5207\u308A\u629C\u304Did, children: \u6247\u5F62\u306E\u5207\u308A\u629C\u304D(cx, cy, radius + 2, \u4F38\u3073, Math.PI, Math.PI) }) }),
25018
- drawing ? /* @__PURE__ */ jsx("g", { clipPath: `url(#${\u5207\u308A\u629C\u304Did})`, children: \u5F27\u305F\u3061 }) : \u5F27\u305F\u3061,
25049
+ drawing ? /* @__PURE__ */ jsxs("g", { clipPath: `url(#${\u5207\u308A\u629C\u304Did})`, children: [
25050
+ \u524D\u306E\u5F27\u305F\u3061,
25051
+ \u5F27\u305F\u3061
25052
+ ] }) : /* @__PURE__ */ jsxs(Fragment, { children: [
25053
+ \u524D\u306E\u5F27\u305F\u3061,
25054
+ \u5F27\u305F\u3061
25055
+ ] }),
25019
25056
  /* @__PURE__ */ jsx(
25020
25057
  "text",
25021
25058
  {
@@ -25124,9 +25161,11 @@ function ChartRadialNode({
25124
25161
  const rings = data.map((d, idx) => {
25125
25162
  const frac = d.value / total;
25126
25163
  const \u4E2D\u5FC3\u534A\u5F84 = \u5916\u534A\u5F84 - \u5E2F1\u672C * idx - \u5E2F1\u672C / 2;
25164
+ const \u524D\u306E\u5272\u5408 = d.previous === void 0 ? null : Math.max(0, d.previous) / total;
25127
25165
  return {
25128
25166
  d,
25129
25167
  frac,
25168
+ \u524D\u306E\u5272\u5408,
25130
25169
  \u4E2D\u5FC3\u534A\u5F84,
25131
25170
  // 軌道は全周。 1 周ちょうどは弧で表せないので、 わずかに欠かして描く
25132
25171
  \u8ECC\u9053: \u5F27\u306E\u90532(\u5F27\u306Ecx, cy, \u4E2D\u5FC3\u534A\u5F84, \u5E2F\u306E\u5E45, 0.9999),
@@ -25175,6 +25214,20 @@ function ChartRadialNode({
25175
25214
  )),
25176
25215
  drawing && /* @__PURE__ */ jsx("defs", { children: /* @__PURE__ */ jsx("clipPath", { id: \u5207\u308A\u629C\u304Did, children: \u6247\u5F62\u306E\u5207\u308A\u629C\u304D(\u5F27\u306Ecx, cy, \u5916\u534A\u5F84 + \u5E2F\u306E\u5E45, \u958B\u304D) }) }),
25177
25216
  drawing ? /* @__PURE__ */ jsx("g", { clipPath: `url(#${\u5207\u308A\u629C\u304Did})`, children: \u53D6\u308A\u5206\u305F\u3061 }) : \u53D6\u308A\u5206\u305F\u3061,
25217
+ rings.map(
25218
+ (r, idx) => r.\u524D\u306E\u5272\u5408 === null ? null : /* @__PURE__ */ jsx(
25219
+ "line",
25220
+ {
25221
+ "data-cdl-role": "chart-radial-previous",
25222
+ "data-cdl-unresolved": r.d.unresolved ? "true" : void 0,
25223
+ ...\u5E2F\u3092\u6A2A\u5207\u308B\u5370(\u5F27\u306Ecx, cy, r.\u4E2D\u5FC3\u534A\u5F84, \u5E2F\u306E\u5E45, Math.min(r.\u524D\u306E\u5272\u5408, 0.9999)),
25224
+ stroke: "var(--cdl-text-mute, #8a8678)",
25225
+ strokeWidth: 2,
25226
+ strokeLinecap: "round"
25227
+ },
25228
+ `prev-${idx}`
25229
+ )
25230
+ ),
25178
25231
  data.map((d, idx) => {
25179
25232
  const y = \u4E00\u89A7\u306E\u59CB\u307E\u308A + \u884C\u306E\u9AD8\u3055 * idx;
25180
25233
  return /* @__PURE__ */ jsxs("g", { "data-cdl-role": "chart-radial-item", children: [
@@ -25214,6 +25267,18 @@ function \u5F27\u306E\u90532(cx, cy, \u4E2D\u5FC3\u534A\u5F84, \u5E45, \u5272\u5
25214
25267
  const p = (r, a) => `${cx + r * Math.cos(a)} ${cy + r * Math.sin(a)}`;
25215
25268
  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`;
25216
25269
  }
25270
+ function \u5E2F\u3092\u6A2A\u5207\u308B\u5370(cx, cy, \u4E2D\u5FC3\u534A\u5F84, \u5E45, \u5272\u5408) {
25271
+ const \u306F\u307F\u51FA\u3057 = Math.min(\u5E45 * 0.3, 5);
25272
+ const \u5916 = \u4E2D\u5FC3\u534A\u5F84 + \u5E45 / 2 + \u306F\u307F\u51FA\u3057;
25273
+ const \u5185 = Math.max(0.5, \u4E2D\u5FC3\u534A\u5F84 - \u5E45 / 2 - \u306F\u307F\u51FA\u3057);
25274
+ const a = -Math.PI / 2 + \u5272\u5408 * Math.PI * 2;
25275
+ return {
25276
+ x1: cx + \u5185 * Math.cos(a),
25277
+ y1: cy + \u5185 * Math.sin(a),
25278
+ x2: cx + \u5916 * Math.cos(a),
25279
+ y2: cy + \u5916 * Math.sin(a)
25280
+ };
25281
+ }
25217
25282
  function arcColor2(tone, idx) {
25218
25283
  if (tone) return TONE[tone];
25219
25284
  return chartSeriesColor(idx);
@@ -25227,7 +25292,8 @@ function ChartStatNode({
25227
25292
  const y0 = node.cy - node.h / 2;
25228
25293
  const data = resolveChartData(node.chartData ?? [], stateValues);
25229
25294
  const total = data.reduce((acc, d) => acc + d.value, 0) || 1;
25230
- const \u533A\u753B = \u533A\u753B\u306E\u5272\u4ED8(node.w, node.h, data.length);
25295
+ const \u524D\u3092\u51FA\u3059 = data.some((d) => d.previous !== void 0);
25296
+ const \u533A\u753B = \u533A\u753B\u306E\u5272\u4ED8(node.w, node.h, data.length, \u524D\u3092\u51FA\u3059);
25231
25297
  const \u5272\u5408\u3092\u51FA\u3059 = data.length > 1;
25232
25298
  return /* @__PURE__ */ jsxs("g", { transform: `translate(${x0} ${y0})`, children: [
25233
25299
  /* @__PURE__ */ jsx(
@@ -25295,6 +25361,24 @@ function ChartStatNode({
25295
25361
  children: \u6570\u5024
25296
25362
  }
25297
25363
  ),
25364
+ d.previous !== void 0 && /* @__PURE__ */ jsx(
25365
+ "text",
25366
+ {
25367
+ "data-cdl-role": "chart-stat-previous",
25368
+ "data-cdl-unresolved": d.unresolved ? "true" : void 0,
25369
+ x: \u67A02.w / 2,
25370
+ y: \u533A\u753B.\u524D\u306Ey,
25371
+ fontSize: \u53CE\u3081\u308B\u7D1A(
25372
+ `\u524D ${\u5B9F\u5024\u8868\u8A18(d.previous)}`,
25373
+ \u67A02.w - \u533A\u753B.\u4F59\u767D * 2,
25374
+ \u533A\u753B.\u524D\u306E\u7D1A,
25375
+ 8
25376
+ ),
25377
+ textAnchor: "middle",
25378
+ fill: "var(--cdl-text-dim, #5a6270)",
25379
+ children: `\u524D ${\u5B9F\u5024\u8868\u8A18(d.previous)}`
25380
+ }
25381
+ ),
25298
25382
  \u5272\u5408\u3092\u51FA\u3059 && /* @__PURE__ */ jsx(
25299
25383
  "circle",
25300
25384
  {
@@ -25338,29 +25422,34 @@ function ChartStatNode({
25338
25422
  })
25339
25423
  ] });
25340
25424
  }
25341
- function \u533A\u753B\u306E\u5272\u4ED8(w, h, \u4EF6\u6570) {
25425
+ function \u533A\u753B\u306E\u5272\u4ED8(w, h, \u4EF6\u6570, \u524D\u3092\u51FA\u3059) {
25342
25426
  const \u4F59\u767D = 20;
25343
25427
  const \u5E45 = \u4EF6\u6570 > 0 ? w / \u4EF6\u6570 : w;
25344
25428
  const \u540D\u524D\u306E\u7D1A = 14;
25345
25429
  const \u6570\u5024\u306E\u7D1A = 40;
25430
+ const \u524D\u306E\u7D1A = \u540D\u524D\u306E\u7D1A;
25346
25431
  const \u5272\u5408\u306E\u7D1A = 12;
25347
25432
  const \u5F27\u306E\u534A\u5F84 = 20;
25348
25433
  const \u5F27\u306E\u592A\u3055 = 4;
25349
- const \u4E2D\u8EAB\u306E\u9AD8\u3055 = \u540D\u524D\u306E\u7D1A + 12 + \u6570\u5024\u306E\u7D1A + 16 + \u5F27\u306E\u534A\u5F84 * 2 + 8 + \u5272\u5408\u306E\u7D1A;
25434
+ const \u524D\u306E\u9AD8\u3055 = \u524D\u3092\u51FA\u3059 ? 8 + \u524D\u306E\u7D1A : 0;
25435
+ const \u4E2D\u8EAB\u306E\u9AD8\u3055 = \u540D\u524D\u306E\u7D1A + 12 + \u6570\u5024\u306E\u7D1A + \u524D\u306E\u9AD8\u3055 + 16 + \u5F27\u306E\u534A\u5F84 * 2 + 8 + \u5272\u5408\u306E\u7D1A;
25350
25436
  const \u4E0A\u7AEF = Math.max(\u4F59\u767D, (h - \u4E2D\u8EAB\u306E\u9AD8\u3055) / 2);
25351
25437
  const \u540D\u524D\u306Ey = \u4E0A\u7AEF + \u540D\u524D\u306E\u7D1A;
25352
25438
  const \u6570\u5024\u306Ey = \u540D\u524D\u306Ey + 12 + \u6570\u5024\u306E\u7D1A * 0.78;
25353
- const \u5F27\u306Ey = \u6570\u5024\u306Ey + 16 + \u5F27\u306E\u534A\u5F84;
25439
+ const \u524D\u306Ey = \u6570\u5024\u306Ey + 8 + \u524D\u306E\u7D1A;
25440
+ const \u5F27\u306Ey = \u6570\u5024\u306Ey + \u524D\u306E\u9AD8\u3055 + 16 + \u5F27\u306E\u534A\u5F84;
25354
25441
  const \u5272\u5408\u306Ey = \u5F27\u306Ey + \u5F27\u306E\u534A\u5F84 + 8 + \u5272\u5408\u306E\u7D1A;
25355
25442
  return {
25356
25443
  \u4F59\u767D,
25357
25444
  \u540D\u524D\u306E\u7D1A,
25358
25445
  \u6570\u5024\u306E\u7D1A,
25446
+ \u524D\u306E\u7D1A,
25359
25447
  \u5272\u5408\u306E\u7D1A,
25360
25448
  \u5F27\u306E\u534A\u5F84,
25361
25449
  \u5F27\u306E\u592A\u3055,
25362
25450
  \u540D\u524D\u306Ey,
25363
25451
  \u6570\u5024\u306Ey,
25452
+ \u524D\u306Ey,
25364
25453
  \u5F27\u306Ey,
25365
25454
  \u5272\u5408\u306Ey,
25366
25455
  \u67A0: (idx) => ({ x: \u5E45 * idx, y: 0, w: \u5E45, h })
@@ -25940,8 +26029,9 @@ function ChartBarNode({
25940
26029
  const canvasW = node.w - PAD_LEFT2 - PAD_RIGHT2;
25941
26030
  const canvasH = node.h - PAD_TOP2 - PAD_BOTTOM2;
25942
26031
  const vMax = data.length > 0 ? Math.max(...data.map((d) => d.value)) : 1;
26032
+ const \u8EF8\u306E\u3082\u3068 = data.length > 0 ? Math.max(vMax, ...data.map((d) => d.previous ?? 0)) : vMax;
25943
26033
  const \u76EE\u76DB\u308A\u306E\u76EE\u5B892 = 4;
25944
- const \u5929\u4E95\u306E\u3082\u3068 = vMax > 0 ? vMax : 1;
26034
+ const \u5929\u4E95\u306E\u3082\u3068 = \u8EF8\u306E\u3082\u3068 > 0 ? \u8EF8\u306E\u3082\u3068 : 1;
25945
26035
  const \u523B\u307F = \u76EE\u76DB\u308A\u306E\u523B\u307F(\u5929\u4E95\u306E\u3082\u3068, \u76EE\u76DB\u308A\u306E\u76EE\u5B892);
25946
26036
  const \u523B\u307F\u306E\u6841 = \u5C0F\u6570\u306E\u6841(\u523B\u307F);
25947
26037
  const \u5929\u4E95 = \u6841\u3067\u4E38\u3081\u308B(Math.ceil(\u5929\u4E95\u306E\u3082\u3068 / \u523B\u307F - 1e-9) * \u523B\u307F, \u523B\u307F\u306E\u6841);
@@ -26034,8 +26124,24 @@ function ChartBarNode({
26034
26124
  fillOpacity: \u6FC3\u3055(d.value)
26035
26125
  }
26036
26126
  );
26127
+ const \u5370\u306E\u306F\u307F\u51FA\u3057 = Math.min(barW * 0.18, 8);
26128
+ const \u524D\u306E\u5370 = d.previous === void 0 ? null : /* @__PURE__ */ jsx(
26129
+ "line",
26130
+ {
26131
+ "data-cdl-role": "chart-bar-previous",
26132
+ "data-cdl-unresolved": d.unresolved ? "true" : void 0,
26133
+ x1: bx - \u5370\u306E\u306F\u307F\u51FA\u3057,
26134
+ y1: yAt(Math.max(0, d.previous)),
26135
+ x2: bx + barW + \u5370\u306E\u306F\u307F\u51FA\u3057,
26136
+ y2: yAt(Math.max(0, d.previous)),
26137
+ stroke: "var(--cdl-text-mute, #8a8678)",
26138
+ strokeWidth: 1.5,
26139
+ strokeDasharray: "5 3"
26140
+ }
26141
+ );
26037
26142
  return /* @__PURE__ */ jsxs("g", { children: [
26038
26143
  drawing ? /* @__PURE__ */ jsx("g", { transform: `translate(0 ${\u6A2A\u8EF8\u306Ey}) scale(1 ${\u4F38\u3073}) translate(0 ${-\u6A2A\u8EF8\u306Ey})`, children: \u68D2 }) : \u68D2,
26144
+ \u524D\u306E\u5370,
26039
26145
  /* @__PURE__ */ jsx(
26040
26146
  "text",
26041
26147
  {