@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/CHANGELOG.md +62 -1
- package/dist/index.cjs +118 -12
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +118 -12
- package/dist/index.js.map +1 -1
- package/dist/react.cjs +118 -12
- package/dist/react.cjs.map +1 -1
- package/dist/react.js +118 -12
- package/dist/react.js.map +1 -1
- package/package.json +1 -1
- package/src/kinds/chart-bar.tsx +39 -1
- package/src/kinds/chart-gauge.tsx +81 -11
- package/src/kinds/chart-radial.tsx +59 -0
- package/src/kinds/chart-stat.tsx +56 -7
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
|
-
|
|
24969
|
-
|
|
24970
|
-
|
|
24971
|
-
|
|
24972
|
-
const
|
|
24973
|
-
|
|
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__ */
|
|
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 \
|
|
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 \
|
|
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 \
|
|
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 =
|
|
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
|
{
|