@cardenelabs/cdl 0.40.3 → 0.40.5
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 +43 -1
- package/dist/index.cjs +46 -13
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +46 -13
- package/dist/index.js.map +1 -1
- package/dist/react.cjs +46 -13
- package/dist/react.cjs.map +1 -1
- package/dist/react.js +46 -13
- package/dist/react.js.map +1 -1
- package/package.json +1 -1
- package/src/anim/core/timeline.ts +13 -3
- package/src/anim/core/types.ts +1 -1
- package/src/kinds/chart-gauge.tsx +88 -17
- package/src/render.tsx +4 -2
package/dist/react.js
CHANGED
|
@@ -40,7 +40,7 @@ function cubicBezier(x1, y1, x2, y2) {
|
|
|
40
40
|
return sampleCurveY(solveCurveX(t));
|
|
41
41
|
};
|
|
42
42
|
}
|
|
43
|
-
var
|
|
43
|
+
var easeOut = cubicBezier(0, 0, 0.58, 1);
|
|
44
44
|
function clamp01(value) {
|
|
45
45
|
if (value < 0) return 0;
|
|
46
46
|
if (value > 1) return 1;
|
|
@@ -85,7 +85,7 @@ var Timeline = class {
|
|
|
85
85
|
throw new Error("Timeline requires at least one phase");
|
|
86
86
|
}
|
|
87
87
|
this.phases = phases;
|
|
88
|
-
this.easing = options.easing ??
|
|
88
|
+
this.easing = options.easing ?? easeOut;
|
|
89
89
|
this.loop = options.loop ?? false;
|
|
90
90
|
this.autoAdvanceMsOverride = options.autoAdvanceMs;
|
|
91
91
|
this.phaseHoldMs = options.phaseHoldMs ?? 0;
|
|
@@ -12391,13 +12391,46 @@ function ChartGaugeNode({
|
|
|
12391
12391
|
const \u5F27\u3068\u5185\u8A33\u306E\u9593 = 16;
|
|
12392
12392
|
const \u5370\u306E\u5E452 = 30;
|
|
12393
12393
|
const \u533A\u753B\u306E\u9593 = 12;
|
|
12394
|
-
const \
|
|
12395
|
-
const \
|
|
12396
|
-
|
|
12397
|
-
|
|
12398
|
-
|
|
12394
|
+
const \u6570\u5024\u306E\u884C = (d) => `${\u5B9F\u5024\u8868\u8A18(d.value)} ${\u5272\u5408\u8868\u8A18(d.value / total)}`;
|
|
12395
|
+
const \u5272\u308A\u4ED8\u3051\u308B = (\u4EF6\u305F\u3061) => {
|
|
12396
|
+
const \u5E45 = Math.max(\u5370\u306E\u5E452, ...\u4EF6\u305F\u3061.map((d) => textWidth(\u6570\u5024\u306E\u884C(d), \u6570\u5024\u306E\u7D1A))) + \u533A\u753B\u306E\u9593;
|
|
12397
|
+
const \u884C\u306E\u4EF6\u65702 = Math.min(
|
|
12398
|
+
Math.max(1, Math.floor(\u4F7F\u3048\u308B\u5E452 / Math.max(\u5E45, 1))),
|
|
12399
|
+
Math.max(\u4EF6\u305F\u3061.length, 1)
|
|
12400
|
+
);
|
|
12401
|
+
return { \u884C\u306E\u4EF6\u6570: \u884C\u306E\u4EF6\u65702, \u6BB5\u6570: Math.ceil(Math.max(\u4EF6\u305F\u3061.length, 1) / \u884C\u306E\u4EF6\u65702) };
|
|
12402
|
+
};
|
|
12403
|
+
const \u5F27\u306B\u6B8B\u3059\u9AD8\u3055 = 48;
|
|
12404
|
+
const \u7F6E\u3051\u308B\u6BB5\u6570 = Math.max(
|
|
12405
|
+
1,
|
|
12406
|
+
Math.floor((\u4F7F\u3048\u308B\u9AD8\u3055 - \u5F27\u306B\u6B8B\u3059\u9AD8\u3055 - \u5F27\u3068\u5185\u8A33\u306E\u9593) / \u6BB5\u306E\u9AD8\u3055)
|
|
12399
12407
|
);
|
|
12400
|
-
const \
|
|
12408
|
+
const \u7573\u3080 = (\u6B8B\u3059\u4EF6\u6570) => {
|
|
12409
|
+
if (\u6B8B\u3059\u4EF6\u6570 >= data.length) return data;
|
|
12410
|
+
const \u524D = data.slice(0, Math.max(0, \u6B8B\u3059\u4EF6\u6570 - 1));
|
|
12411
|
+
const \u6B8B\u308A = data.slice(Math.max(0, \u6B8B\u3059\u4EF6\u6570 - 1));
|
|
12412
|
+
const \u5024 = \u6B8B\u308A.reduce((acc, d) => acc + d.value, 0);
|
|
12413
|
+
const \u8AAD\u3081\u306A\u3044 = \u6B8B\u308A.some((d) => d.unresolved);
|
|
12414
|
+
const \u7573\u3093\u3060 = {
|
|
12415
|
+
...\u6B8B\u308A[0],
|
|
12416
|
+
label: "\u305D\u306E\u4ED6",
|
|
12417
|
+
value: \u5024,
|
|
12418
|
+
previous: void 0,
|
|
12419
|
+
...\u8AAD\u3081\u306A\u3044 ? { unresolved: true } : { unresolved: void 0 }
|
|
12420
|
+
};
|
|
12421
|
+
return [...\u524D, \u7573\u3093\u3060];
|
|
12422
|
+
};
|
|
12423
|
+
const \u51FA\u3059\u4EF6\u305F\u3061 = (() => {
|
|
12424
|
+
let \u4EF6\u305F\u3061 = data;
|
|
12425
|
+
for (let i = 0; i < 4; i++) {
|
|
12426
|
+
const { \u884C\u306E\u4EF6\u6570: \u884C\u306E\u4EF6\u65702, \u6BB5\u6570 } = \u5272\u308A\u4ED8\u3051\u308B(\u4EF6\u305F\u3061);
|
|
12427
|
+
if (\u6BB5\u6570 <= \u7F6E\u3051\u308B\u6BB5\u6570) return \u4EF6\u305F\u3061;
|
|
12428
|
+
\u4EF6\u305F\u3061 = \u7573\u3080(Math.max(1, \u7F6E\u3051\u308B\u6BB5\u6570 * \u884C\u306E\u4EF6\u65702));
|
|
12429
|
+
}
|
|
12430
|
+
return \u4EF6\u305F\u3061;
|
|
12431
|
+
})();
|
|
12432
|
+
const \u5185\u8A33\u306E\u6570\u5024 = \u51FA\u3059\u4EF6\u305F\u3061.map((d) => \u6570\u5024\u306E\u884C(d));
|
|
12433
|
+
const { \u884C\u306E\u4EF6\u6570, \u6BB5\u6570: \u5185\u8A33\u306E\u6BB5\u6570 } = \u5272\u308A\u4ED8\u3051\u308B(\u51FA\u3059\u4EF6\u305F\u3061);
|
|
12401
12434
|
const \u5185\u8A33\u306E\u9AD8\u3055 = \u6BB5\u306E\u9AD8\u3055 * \u5185\u8A33\u306E\u6BB5\u6570;
|
|
12402
12435
|
const \u5F27\u306B\u4F7F\u3048\u308B\u9AD8\u3055 = \u4F7F\u3048\u308B\u9AD8\u3055 - \u5185\u8A33\u306E\u9AD8\u3055 - \u5F27\u3068\u5185\u8A33\u306E\u9593;
|
|
12403
12436
|
const radius = Math.max(24, Math.min(\u5F27\u306B\u4F7F\u3048\u308B\u9AD8\u3055, \u4F7F\u3048\u308B\u5E452 / 2));
|
|
@@ -12405,7 +12438,7 @@ function ChartGaugeNode({
|
|
|
12405
12438
|
const cx = node.w / 2;
|
|
12406
12439
|
const cy = PAD_TOP2 + radius;
|
|
12407
12440
|
let cumFrac = 0;
|
|
12408
|
-
const slices =
|
|
12441
|
+
const slices = \u51FA\u3059\u4EF6\u305F\u3061.map((d) => {
|
|
12409
12442
|
const frac = d.value / total;
|
|
12410
12443
|
const a0 = Math.PI + cumFrac * Math.PI;
|
|
12411
12444
|
const a1 = a0 + frac * Math.PI;
|
|
@@ -12418,10 +12451,10 @@ function ChartGaugeNode({
|
|
|
12418
12451
|
return { d, frac, path };
|
|
12419
12452
|
});
|
|
12420
12453
|
const \u5408\u8A08\u306E\u6587\u5B57 = \u5B9F\u5024\u8868\u8A18(Math.round(total));
|
|
12421
|
-
const \
|
|
12454
|
+
const \u5358\u4F4D\u5E45 = Math.max(textWidth(\u5408\u8A08\u306E\u6587\u5B57, 100), 1) / 100;
|
|
12422
12455
|
const \u7D1A\u306E\u5019\u88DC = Math.min(
|
|
12423
|
-
// 横 =
|
|
12424
|
-
\
|
|
12456
|
+
// 横 = 字の上の角が内側の円に入る大きさ
|
|
12457
|
+
\u5185\u534A\u5F84 / Math.sqrt((\u5358\u4F4D\u5E45 / 2) ** 2 + 1.25 ** 2),
|
|
12425
12458
|
// 縦 = 合計 1 行 + 見出し 1 行が内側の高さに収まる比
|
|
12426
12459
|
\u5185\u534A\u5F84 * 0.52
|
|
12427
12460
|
);
|
|
@@ -12484,7 +12517,7 @@ function ChartGaugeNode({
|
|
|
12484
12517
|
children: "\u5408\u8A08"
|
|
12485
12518
|
}
|
|
12486
12519
|
),
|
|
12487
|
-
|
|
12520
|
+
\u51FA\u3059\u4EF6\u305F\u3061.map((d, idx) => {
|
|
12488
12521
|
const \u5217 = idx % \u884C\u306E\u4EF6\u6570;
|
|
12489
12522
|
const \u6BB5 = Math.floor(idx / \u884C\u306E\u4EF6\u6570);
|
|
12490
12523
|
const x = PAD_SIDE + \u5185\u8A33\u306E\u5E45 * \u5217;
|