@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/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 = Math.cos(s.\u4E2D\u592E\u89D2) >= 0;
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 = cx + (radius + \u5F15\u304D\u51FA\u3057) * Math.cos(s.\u4E2D\u592E\u89D2);
24515
- const \u6298\u308Cy = cy + (radius + \u5F15\u304D\u51FA\u3057) * Math.sin(s.\u4E2D\u592E\u89D2);
24516
- const \u5B57x = \u6298\u308Cx + (\u53F3 ? \u5B57\u307E\u3067\u306E\u9593 : -\u5B57\u307E\u3067\u306E\u9593);
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 \u5185\u8A33\u306E\u9AD8\u3055 = 56;
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 / Math.max(data.length, 1);
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 x = PAD_SIDE + \u5185\u8A33\u306E\u5E45 * idx;
24926
- const \u6570\u5024 = `${\u5B9F\u5024\u8868\u8A18(d.value)} ${\u5272\u5408\u8868\u8A18(d.value / total)}`;
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("rect", { x, y: \u5185\u8A33\u306Ey, width: 30, height: 4, rx: 2, fill: arcColor(d.tone, idx) }),
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: \u5185\u8A33\u306Ey + 26,
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 ?? "", \u5185\u8A33\u306E\u5E45 - 12, \u540D\u524D\u306E\u7D1A)
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: \u5185\u8A33\u306Ey + 46, fontSize: \u6570\u5024\u306E\u7D1A, fill: "var(--cdl-text-dim, #5a6270)", children: \u6570\u5024 })
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,