@cardenelabs/cdl 0.40.1 → 0.40.3
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 +45 -1
- package/dist/index.cjs +87 -42
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +87 -42
- package/dist/index.js.map +1 -1
- package/dist/react.cjs +87 -42
- package/dist/react.cjs.map +1 -1
- package/dist/react.js +87 -42
- package/dist/react.js.map +1 -1
- package/package.json +1 -1
- package/src/kinds/chart-gauge.tsx +56 -11
- package/src/kinds/chart-pie.tsx +46 -4
- package/src/kinds/chart-slope.tsx +1 -65
- package/src/kinds/label-stack.ts +77 -0
package/dist/index.js
CHANGED
|
@@ -24356,6 +24356,38 @@ function interpolateColor(template, stateValues, fallback) {
|
|
|
24356
24356
|
if (!template) return fallback;
|
|
24357
24357
|
return interpolate(template, stateValues);
|
|
24358
24358
|
}
|
|
24359
|
+
|
|
24360
|
+
// src/kinds/label-stack.ts
|
|
24361
|
+
function \u540D\u672D\u306E\u6BB5\u3092\u307B\u3069\u304F(\u771F\u306Ey, \u9593\u9694, \u4E0A\u9650, \u4E0B\u9650) {
|
|
24362
|
+
const \u4EF6\u6570 = \u771F\u306Ey.length;
|
|
24363
|
+
if (\u4EF6\u6570 === 0) return [];
|
|
24364
|
+
const \u4E26\u3073 = \u771F\u306Ey.map((y, i) => ({ y, i })).sort((a, b) => a.y - b.y || a.i - b.i);
|
|
24365
|
+
const \u7D50\u679C = new Array(\u4EF6\u6570);
|
|
24366
|
+
if (\u9593\u9694 * (\u4EF6\u6570 - 1) > \u4E0B\u9650 - \u4E0A\u9650) {
|
|
24367
|
+
\u4E26\u3073.forEach((e, k) => {
|
|
24368
|
+
\u7D50\u679C[e.i] = \u4EF6\u6570 > 1 ? \u4E0A\u9650 + (\u4E0B\u9650 - \u4E0A\u9650) / (\u4EF6\u6570 - 1) * k : (\u4E0A\u9650 + \u4E0B\u9650) / 2;
|
|
24369
|
+
});
|
|
24370
|
+
return \u7D50\u679C;
|
|
24371
|
+
}
|
|
24372
|
+
const \u584A\u305F\u3061 = [];
|
|
24373
|
+
\u4E26\u3073.forEach((e, k) => {
|
|
24374
|
+
\u584A\u305F\u3061.push({ \u5408\u8A08: e.y - \u9593\u9694 * k, \u4EF6\u6570: 1 });
|
|
24375
|
+
while (\u584A\u305F\u3061.length >= 2) {
|
|
24376
|
+
const \u5F8C = \u584A\u305F\u3061[\u584A\u305F\u3061.length - 1];
|
|
24377
|
+
const \u524D = \u584A\u305F\u3061[\u584A\u305F\u3061.length - 2];
|
|
24378
|
+
if (\u524D.\u5408\u8A08 / \u524D.\u4EF6\u6570 <= \u5F8C.\u5408\u8A08 / \u5F8C.\u4EF6\u6570) break;
|
|
24379
|
+
\u584A\u305F\u3061.splice(\u584A\u305F\u3061.length - 2, 2, { \u5408\u8A08: \u524D.\u5408\u8A08 + \u5F8C.\u5408\u8A08, \u4EF6\u6570: \u524D.\u4EF6\u6570 + \u5F8C.\u4EF6\u6570 });
|
|
24380
|
+
}
|
|
24381
|
+
});
|
|
24382
|
+
const \u307B\u3069\u3044\u305F = [];
|
|
24383
|
+
\u584A\u305F\u3061.forEach((\u584A) => {
|
|
24384
|
+
const \u5E73\u5747 = \u584A.\u5408\u8A08 / \u584A.\u4EF6\u6570;
|
|
24385
|
+
for (let j = 0; j < \u584A.\u4EF6\u6570; j++) \u307B\u3069\u3044\u305F.push(\u5E73\u5747 + \u9593\u9694 * \u307B\u3069\u3044\u305F.length);
|
|
24386
|
+
});
|
|
24387
|
+
const \u305A\u308C = Math.max(0, \u4E0A\u9650 - \u307B\u3069\u3044\u305F[0]) - Math.max(0, \u307B\u3069\u3044\u305F[\u4EF6\u6570 - 1] - \u4E0B\u9650);
|
|
24388
|
+
\u4E26\u3073.forEach((e, k) => \u7D50\u679C[e.i] = \u307B\u3069\u3044\u305F[k] + \u305A\u308C);
|
|
24389
|
+
return \u7D50\u679C;
|
|
24390
|
+
}
|
|
24359
24391
|
function \u6247\u5F62\u306E\u5207\u308A\u629C\u304D(cx, cy, r, \u958B\u304D, \u8D77\u70B9 = -Math.PI / 2, \u5168\u5468 = Math.PI * 2) {
|
|
24360
24392
|
if (\u958B\u304D <= 0) return null;
|
|
24361
24393
|
if (\u958B\u304D >= 1 && \u5168\u5468 >= Math.PI * 2) return /* @__PURE__ */ jsx("circle", { cx, cy, r });
|
|
@@ -24436,6 +24468,26 @@ function ChartPieNode({
|
|
|
24436
24468
|
const \u5207\u308A\u629C\u304Did = `cdl-pie-draw-${instanceId}`;
|
|
24437
24469
|
const \u5F71id = `cdl-pie-shadow-${instanceId}`;
|
|
24438
24470
|
const \u958B\u304D\u59CB\u3081\u305F = (startFrac) => !drawing || \u958B\u304D > startFrac;
|
|
24471
|
+
const \u540D\u672D\u306E\u884C = \u5272\u5408\u306E\u7D1A + \u540D\u524D\u306E\u7D1A + 3;
|
|
24472
|
+
const \u540D\u672D\u306E\u5074 = slices.map((s) => Math.cos(s.\u4E2D\u592E\u89D2) >= 0);
|
|
24473
|
+
const \u540D\u672D\u306E\u771F\u306Ey = slices.map((s) => cy + (radius + \u5F15\u304D\u51FA\u3057) * Math.sin(s.\u4E2D\u592E\u89D2));
|
|
24474
|
+
const \u540D\u672D\u306Ey = (() => {
|
|
24475
|
+
const \u51FA\u3059 = [...\u540D\u672D\u306E\u771F\u306Ey];
|
|
24476
|
+
for (const \u5074 of [true, false]) {
|
|
24477
|
+
const \u756A\u53F7 = \u540D\u672D\u306E\u5074.flatMap((\u53F3, i) => \u53F3 === \u5074 ? [i] : []);
|
|
24478
|
+
if (\u756A\u53F7.length === 0) continue;
|
|
24479
|
+
const \u76F4\u3057\u305F = \u540D\u672D\u306E\u6BB5\u3092\u307B\u3069\u304F(
|
|
24480
|
+
\u756A\u53F7.map((i) => \u540D\u672D\u306E\u771F\u306Ey[i]),
|
|
24481
|
+
\u540D\u672D\u306E\u884C,
|
|
24482
|
+
PAD_TOP2 + \u540D\u672D\u306E\u7E26\u306E\u5F35\u308A\u51FA\u3057,
|
|
24483
|
+
node.h - PAD_BOTTOM2 - \u540D\u672D\u306E\u7E26\u306E\u5F35\u308A\u51FA\u3057
|
|
24484
|
+
);
|
|
24485
|
+
\u756A\u53F7.forEach((i, k) => \u51FA\u3059[i] = \u76F4\u3057\u305F[k]);
|
|
24486
|
+
}
|
|
24487
|
+
return \u51FA\u3059;
|
|
24488
|
+
})();
|
|
24489
|
+
const \u8098\u306Ex = (\u53F3) => cx + (\u53F3 ? 1 : -1) * (radius + \u5F15\u304D\u51FA\u3057);
|
|
24490
|
+
const \u5B57\u306Ex = (\u53F3) => \u8098\u306Ex(\u53F3) + (\u53F3 ? \u5B57\u307E\u3067\u306E\u9593 : -\u5B57\u307E\u3067\u306E\u9593);
|
|
24439
24491
|
return /* @__PURE__ */ jsxs("g", { transform: `translate(${x0} ${y0})`, children: [
|
|
24440
24492
|
/* @__PURE__ */ jsx(
|
|
24441
24493
|
"rect",
|
|
@@ -24508,12 +24560,12 @@ function ChartPieNode({
|
|
|
24508
24560
|
),
|
|
24509
24561
|
slices.map((s, idx) => {
|
|
24510
24562
|
if (!\u958B\u304D\u59CB\u3081\u305F(s.startFrac)) return null;
|
|
24511
|
-
const \u53F3 =
|
|
24563
|
+
const \u53F3 = \u540D\u672D\u306E\u5074[idx];
|
|
24512
24564
|
const \u7E01x = cx + radius * Math.cos(s.\u4E2D\u592E\u89D2);
|
|
24513
24565
|
const \u7E01y = cy + radius * Math.sin(s.\u4E2D\u592E\u89D2);
|
|
24514
|
-
const \u6298\u308Cx =
|
|
24515
|
-
const \u6298\u308Cy =
|
|
24516
|
-
const \u5B57x = \
|
|
24566
|
+
const \u6298\u308Cx = \u8098\u306Ex(\u53F3);
|
|
24567
|
+
const \u6298\u308Cy = \u540D\u672D\u306Ey[idx];
|
|
24568
|
+
const \u5B57x = \u5B57\u306Ex(\u53F3);
|
|
24517
24569
|
return /* @__PURE__ */ jsxs("g", { children: [
|
|
24518
24570
|
/* @__PURE__ */ jsx(
|
|
24519
24571
|
"path",
|
|
@@ -24834,8 +24886,18 @@ function ChartGaugeNode({
|
|
|
24834
24886
|
const \u4F7F\u3048\u308B\u5E452 = node.w - PAD_SIDE * 2;
|
|
24835
24887
|
const \u540D\u524D\u306E\u7D1A = 14;
|
|
24836
24888
|
const \u6570\u5024\u306E\u7D1A = 13;
|
|
24837
|
-
const \
|
|
24889
|
+
const \u6BB5\u306E\u9AD8\u3055 = 56;
|
|
24838
24890
|
const \u5F27\u3068\u5185\u8A33\u306E\u9593 = 16;
|
|
24891
|
+
const \u5370\u306E\u5E452 = 30;
|
|
24892
|
+
const \u533A\u753B\u306E\u9593 = 12;
|
|
24893
|
+
const \u5185\u8A33\u306E\u6570\u5024 = data.map((d) => `${\u5B9F\u5024\u8868\u8A18(d.value)} ${\u5272\u5408\u8868\u8A18(d.value / total)}`);
|
|
24894
|
+
const \u4EF6\u306B\u8981\u308B\u5E45 = Math.max(\u5370\u306E\u5E452, ...\u5185\u8A33\u306E\u6570\u5024.map((t) => textWidth(t, \u6570\u5024\u306E\u7D1A))) + \u533A\u753B\u306E\u9593;
|
|
24895
|
+
const \u884C\u306E\u4EF6\u6570 = Math.min(
|
|
24896
|
+
Math.max(1, Math.floor(\u4F7F\u3048\u308B\u5E452 / Math.max(\u4EF6\u306B\u8981\u308B\u5E45, 1))),
|
|
24897
|
+
Math.max(data.length, 1)
|
|
24898
|
+
);
|
|
24899
|
+
const \u5185\u8A33\u306E\u6BB5\u6570 = Math.ceil(Math.max(data.length, 1) / \u884C\u306E\u4EF6\u6570);
|
|
24900
|
+
const \u5185\u8A33\u306E\u9AD8\u3055 = \u6BB5\u306E\u9AD8\u3055 * \u5185\u8A33\u306E\u6BB5\u6570;
|
|
24839
24901
|
const \u5F27\u306B\u4F7F\u3048\u308B\u9AD8\u3055 = \u4F7F\u3048\u308B\u9AD8\u3055 - \u5185\u8A33\u306E\u9AD8\u3055 - \u5F27\u3068\u5185\u8A33\u306E\u9593;
|
|
24840
24902
|
const radius = Math.max(24, Math.min(\u5F27\u306B\u4F7F\u3048\u308B\u9AD8\u3055, \u4F7F\u3048\u308B\u5E452 / 2));
|
|
24841
24903
|
const \u5185\u534A\u5F84 = radius * 0.62;
|
|
@@ -24864,7 +24926,7 @@ function ChartGaugeNode({
|
|
|
24864
24926
|
);
|
|
24865
24927
|
const \u5408\u8A08\u306E\u7D1A = Math.max(11, Math.round(\u7D1A\u306E\u5019\u88DC));
|
|
24866
24928
|
const \u898B\u51FA\u3057\u306E\u7D1A = Math.max(9, Math.round(\u5408\u8A08\u306E\u7D1A * 0.38));
|
|
24867
|
-
const \u5185\u8A33\u306E\u5E45 = \u4F7F\u3048\u308B\u5E452 /
|
|
24929
|
+
const \u5185\u8A33\u306E\u5E45 = \u4F7F\u3048\u308B\u5E452 / \u884C\u306E\u4EF6\u6570;
|
|
24868
24930
|
const \u5185\u8A33\u306Ey = cy + \u5F27\u3068\u5185\u8A33\u306E\u9593;
|
|
24869
24931
|
const \u4F38\u3073 = \u9032\u307F\u3092\u7573\u3080(drawing, progress);
|
|
24870
24932
|
const \u5207\u308A\u629C\u304Did = `cdl-gauge-draw-${useId().replace(/[^A-Za-z0-9_-]/g, "")}`;
|
|
@@ -24922,22 +24984,35 @@ function ChartGaugeNode({
|
|
|
24922
24984
|
}
|
|
24923
24985
|
),
|
|
24924
24986
|
data.map((d, idx) => {
|
|
24925
|
-
const
|
|
24926
|
-
const \
|
|
24987
|
+
const \u5217 = idx % \u884C\u306E\u4EF6\u6570;
|
|
24988
|
+
const \u6BB5 = Math.floor(idx / \u884C\u306E\u4EF6\u6570);
|
|
24989
|
+
const x = PAD_SIDE + \u5185\u8A33\u306E\u5E45 * \u5217;
|
|
24990
|
+
const y = \u5185\u8A33\u306Ey + \u6BB5\u306E\u9AD8\u3055 * \u6BB5;
|
|
24991
|
+
const \u53CE\u307E\u308B\u5E45 = \u5185\u8A33\u306E\u5E45 - \u533A\u753B\u306E\u9593;
|
|
24927
24992
|
return /* @__PURE__ */ jsxs("g", { "data-cdl-role": "chart-gauge-item", children: [
|
|
24928
|
-
/* @__PURE__ */ jsx(
|
|
24993
|
+
/* @__PURE__ */ jsx(
|
|
24994
|
+
"rect",
|
|
24995
|
+
{
|
|
24996
|
+
x,
|
|
24997
|
+
y,
|
|
24998
|
+
width: Math.max(4, Math.min(\u5370\u306E\u5E452, \u53CE\u307E\u308B\u5E45)),
|
|
24999
|
+
height: 4,
|
|
25000
|
+
rx: 2,
|
|
25001
|
+
fill: arcColor(d.tone, idx)
|
|
25002
|
+
}
|
|
25003
|
+
),
|
|
24929
25004
|
/* @__PURE__ */ jsx(
|
|
24930
25005
|
"text",
|
|
24931
25006
|
{
|
|
24932
25007
|
x,
|
|
24933
|
-
y:
|
|
25008
|
+
y: y + 26,
|
|
24934
25009
|
fontSize: \u540D\u524D\u306E\u7D1A,
|
|
24935
25010
|
fontWeight: 700,
|
|
24936
25011
|
fill: "var(--cdl-text, #1a1f2a)",
|
|
24937
|
-
children: \u5207\u308A\u8A70\u3081\u308B(d.label ?? "", \
|
|
25012
|
+
children: \u5207\u308A\u8A70\u3081\u308B(d.label ?? "", \u53CE\u307E\u308B\u5E45, \u540D\u524D\u306E\u7D1A)
|
|
24938
25013
|
}
|
|
24939
25014
|
),
|
|
24940
|
-
/* @__PURE__ */ jsx("text", { x, y:
|
|
25015
|
+
/* @__PURE__ */ jsx("text", { x, y: y + 46, fontSize: \u6570\u5024\u306E\u7D1A, fill: "var(--cdl-text-dim, #5a6270)", children: \u5207\u308A\u8A70\u3081\u308B(\u5185\u8A33\u306E\u6570\u5024[idx] ?? "", \u53CE\u307E\u308B\u5E45, \u6570\u5024\u306E\u7D1A) })
|
|
24941
25016
|
] }, `legend-${idx}`);
|
|
24942
25017
|
})
|
|
24943
25018
|
] });
|
|
@@ -25526,36 +25601,6 @@ function \u4E00\u89A7\u306E\u4E26\u3073(data, \u5DE6, \u53F3\u7AEF, \u7D1A) {
|
|
|
25526
25601
|
return out;
|
|
25527
25602
|
}
|
|
25528
25603
|
var \u7DDA\u306E\u6700\u5C0F\u5E45 = 120;
|
|
25529
|
-
function \u540D\u672D\u306E\u6BB5\u3092\u307B\u3069\u304F(\u771F\u306Ey, \u9593\u9694, \u4E0A\u9650, \u4E0B\u9650) {
|
|
25530
|
-
const \u4EF6\u6570 = \u771F\u306Ey.length;
|
|
25531
|
-
if (\u4EF6\u6570 === 0) return [];
|
|
25532
|
-
const \u4E26\u3073 = \u771F\u306Ey.map((y, i) => ({ y, i })).sort((a, b) => a.y - b.y || a.i - b.i);
|
|
25533
|
-
const \u7D50\u679C = new Array(\u4EF6\u6570);
|
|
25534
|
-
if (\u9593\u9694 * (\u4EF6\u6570 - 1) > \u4E0B\u9650 - \u4E0A\u9650) {
|
|
25535
|
-
\u4E26\u3073.forEach((e, k) => {
|
|
25536
|
-
\u7D50\u679C[e.i] = \u4EF6\u6570 > 1 ? \u4E0A\u9650 + (\u4E0B\u9650 - \u4E0A\u9650) / (\u4EF6\u6570 - 1) * k : (\u4E0A\u9650 + \u4E0B\u9650) / 2;
|
|
25537
|
-
});
|
|
25538
|
-
return \u7D50\u679C;
|
|
25539
|
-
}
|
|
25540
|
-
const \u584A\u305F\u3061 = [];
|
|
25541
|
-
\u4E26\u3073.forEach((e, k) => {
|
|
25542
|
-
\u584A\u305F\u3061.push({ \u5408\u8A08: e.y - \u9593\u9694 * k, \u4EF6\u6570: 1 });
|
|
25543
|
-
while (\u584A\u305F\u3061.length >= 2) {
|
|
25544
|
-
const \u5F8C = \u584A\u305F\u3061[\u584A\u305F\u3061.length - 1];
|
|
25545
|
-
const \u524D = \u584A\u305F\u3061[\u584A\u305F\u3061.length - 2];
|
|
25546
|
-
if (\u524D.\u5408\u8A08 / \u524D.\u4EF6\u6570 <= \u5F8C.\u5408\u8A08 / \u5F8C.\u4EF6\u6570) break;
|
|
25547
|
-
\u584A\u305F\u3061.splice(\u584A\u305F\u3061.length - 2, 2, { \u5408\u8A08: \u524D.\u5408\u8A08 + \u5F8C.\u5408\u8A08, \u4EF6\u6570: \u524D.\u4EF6\u6570 + \u5F8C.\u4EF6\u6570 });
|
|
25548
|
-
}
|
|
25549
|
-
});
|
|
25550
|
-
const \u307B\u3069\u3044\u305F = [];
|
|
25551
|
-
\u584A\u305F\u3061.forEach((\u584A) => {
|
|
25552
|
-
const \u5E73\u5747 = \u584A.\u5408\u8A08 / \u584A.\u4EF6\u6570;
|
|
25553
|
-
for (let j = 0; j < \u584A.\u4EF6\u6570; j++) \u307B\u3069\u3044\u305F.push(\u5E73\u5747 + \u9593\u9694 * \u307B\u3069\u3044\u305F.length);
|
|
25554
|
-
});
|
|
25555
|
-
const \u305A\u308C = Math.max(0, \u4E0A\u9650 - \u307B\u3069\u3044\u305F[0]) - Math.max(0, \u307B\u3069\u3044\u305F[\u4EF6\u6570 - 1] - \u4E0B\u9650);
|
|
25556
|
-
\u4E26\u3073.forEach((e, k) => \u7D50\u679C[e.i] = \u307B\u3069\u3044\u305F[k] + \u305A\u308C);
|
|
25557
|
-
return \u7D50\u679C;
|
|
25558
|
-
}
|
|
25559
25604
|
function ChartSlopeNode({
|
|
25560
25605
|
node,
|
|
25561
25606
|
active,
|