@cardenelabs/cdl 0.109.0 → 0.111.0
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 +74 -1
- package/dist/index.cjs +33 -21
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +33 -21
- package/dist/index.js.map +1 -1
- package/dist/react.cjs +33 -21
- package/dist/react.cjs.map +1 -1
- package/dist/react.js +33 -21
- package/dist/react.js.map +1 -1
- package/package.json +1 -1
- package/src/kinds/shape-basement.tsx +16 -7
- package/src/kinds/shape-blockchain.tsx +14 -5
- package/src/kinds/shape-commerce.tsx +10 -9
- package/src/kinds/shape-finance.tsx +10 -9
- package/src/kinds/shape-hardware.tsx +10 -10
- package/src/kinds/shape-region.tsx +26 -1
package/CHANGELOG.md
CHANGED
|
@@ -5,6 +5,77 @@ CDL (Chainome Diagram Language) の主要変更履歴。
|
|
|
5
5
|
|
|
6
6
|
## [Unreleased]
|
|
7
7
|
|
|
8
|
+
## [0.111.0] - 2026-09-30
|
|
9
|
+
|
|
10
|
+
### Fixed
|
|
11
|
+
|
|
12
|
+
- **収まっている行を、測り方の食い違いで切っていた** (#959)
|
|
13
|
+
|
|
14
|
+
`shape-blockchain.tsx` の名前の塊は、縮める倍率を `幅の倍率` (中で `textWidth` を使う) で
|
|
15
|
+
出し、切る時は `絵の中の字の幅` で測っていた。 後者は等幅の字送りと字形の大きい方を採るので
|
|
16
|
+
前者以上の値になる。 倍率が「収まる」 と言った行を、切る側が「はみ出す」 と判定していた。
|
|
17
|
+
|
|
18
|
+
幅 140 の箱に 3 行 (肩書 / 題 / 説明) を渡すと、9 種で説明の行が切れる。
|
|
19
|
+
`shape-smart-contract` / `shape-rpc-node` / `shape-wallet` / `shape-nft` / `shape-token` /
|
|
20
|
+
`shape-blockchain-node` / `shape-bitcoin-chain` / `shape-ethereum-chain` / `shape-blockchain`。
|
|
21
|
+
|
|
22
|
+
1 つの行の幅を、縮める時と切る時で同じ測り方で見るようにした。
|
|
23
|
+
|
|
24
|
+
### Added
|
|
25
|
+
|
|
26
|
+
- **全種別に 3 行の名前を渡す検査を足した** (#959)
|
|
27
|
+
|
|
28
|
+
engine の検査は種別を全件描く形をいくつも持つが、**渡す題が 1 行だけ** だった。
|
|
29
|
+
実際の図は肩書と題と説明の 3 行を持ち、一番広い行が題でない箱が普通にある。
|
|
30
|
+
|
|
31
|
+
その形が 1 度も描かれていなかったため、0.108.0 (#953) で入れた下限が題以外の行まで切る
|
|
32
|
+
欠陥を engine 単体では見つけられず、引く側 (`cardene777/dragon`) の見本 606 枚を回して
|
|
33
|
+
初めて出た (#957)。 本検査を足した時点でも、同じ穴が別の理由で 9 種に残っていた。
|
|
34
|
+
|
|
35
|
+
98 種を 5 つの箱で描き、**渡した 3 つの文字列を切った形だけ** を数える。
|
|
36
|
+
絵が自分で書く literal (`shape-blockchain` の `0x…` 等) は書き手の字ではないので数えない。
|
|
37
|
+
|
|
38
|
+
箱を 5 つ使うのは、1 つだと帯の広い種別で空振りするため (260x260 だけを見ていた時に
|
|
39
|
+
見つかったのは 1 種で、幅 140 を足すと 9 種に増えた)。
|
|
40
|
+
|
|
41
|
+
切ってよい種別は理由を添えて宣言に書き、**両方向で見る** = 宣言に在って実物が切らなければ
|
|
42
|
+
落ちる。 現在の宣言は `shape-blockchain-block` 1 件で、箱の中に決まった大きさで字を置く
|
|
43
|
+
振る舞い (#526) による。
|
|
44
|
+
|
|
45
|
+
## [0.110.0] - 2026-09-30
|
|
46
|
+
|
|
47
|
+
### Fixed
|
|
48
|
+
|
|
49
|
+
- **題の下限が、題以外の行まで切っていた** (#957)
|
|
50
|
+
|
|
51
|
+
0.108.0 (#953) で入れた読める下限 (11px) の効き方が、題以外の行に及んでいた。
|
|
52
|
+
引く側 (見本帳) を 0.109.0 に上げると、記法に書いた補いの行が切られる図が出た。
|
|
53
|
+
|
|
54
|
+
`shape-diamond` の 260x260 の箱で実測した内訳。
|
|
55
|
+
|
|
56
|
+
| 版 | 肩書 | 題 | 説明 |
|
|
57
|
+
|---|---|---|---|
|
|
58
|
+
| 0.107.0 相当 | 8.32 `方針` | 10.40 `再送の判定` | 7.63 `間隔を倍に広げる · 最大 3 …` |
|
|
59
|
+
| 0.109.0 | 8.80 `方針` | 11.00 `再送の判定` | 8.07 `間隔を倍に広げる · 最大 …` |
|
|
60
|
+
| 0.110.0 (本版) | 8.32 `方針` | 10.40 `再送の判定` | 7.63 `間隔を倍に広げる · 最大 3 回` |
|
|
61
|
+
|
|
62
|
+
2 つ直した。
|
|
63
|
+
|
|
64
|
+
**1 つ目 = 塊の倍率は一番広い行で決まるのに、下限を題の大きさから出していた**。
|
|
65
|
+
この箱で一番広いのは説明の行 (14 字) で、題は 5 字しかない。 題を 0.6px 上げるために
|
|
66
|
+
説明から `3 回` を落としていた = 払うのと得るのが別の行になる。
|
|
67
|
+
|
|
68
|
+
下限を当てるのは **題が一番広い行のときだけ** にした。 行ごとに倍率を出す 4 種
|
|
69
|
+
(`shape-commerce` / `shape-finance` / `shape-hardware` / `shape-blockchain`) では、
|
|
70
|
+
下限を当てるのは題の行だけにした (#953 の対象外 scope と同じ)。
|
|
71
|
+
|
|
72
|
+
**2 つ目 = ちょうど収まる行を丸め誤差で切っていた**。
|
|
73
|
+
塊の倍率は一番広い行が帯にちょうど収まる値なので、切る側の測り直しが浮動小数で
|
|
74
|
+
髪の毛 1 本ぶん上回ると、収まっている行を切る。 切る判定に相対の余裕 (1e-9) を入れた。
|
|
75
|
+
|
|
76
|
+
これで **切られるのは、自分が入らない行だけ** になる。
|
|
77
|
+
題が一番広い行のときに下限で止めて切る振る舞い (#953) は変えていない。
|
|
78
|
+
|
|
8
79
|
## [0.109.0] - 2026-09-30
|
|
9
80
|
|
|
10
81
|
### Fixed
|
|
@@ -4383,7 +4454,9 @@ Initial OSS release.
|
|
|
4383
4454
|
使わない = annotated tag を push しても GitHub Release は作られず、 Release を作っていない版で
|
|
4384
4455
|
行き止まりになる。
|
|
4385
4456
|
|
|
4386
|
-
[Unreleased]: https://github.com/cardene777/cdl/compare/v0.
|
|
4457
|
+
[Unreleased]: https://github.com/cardene777/cdl/compare/v0.111.0...HEAD
|
|
4458
|
+
[0.111.0]: https://github.com/cardene777/cdl/compare/v0.110.0...v0.111.0
|
|
4459
|
+
[0.110.0]: https://github.com/cardene777/cdl/compare/v0.109.0...v0.110.0
|
|
4387
4460
|
[0.109.0]: https://github.com/cardene777/cdl/compare/v0.108.0...v0.109.0
|
|
4388
4461
|
[0.108.0]: https://github.com/cardene777/cdl/compare/v0.107.0...v0.108.0
|
|
4389
4462
|
[0.107.0]: https://github.com/cardene777/cdl/compare/v0.106.0...v0.107.0
|
package/dist/index.cjs
CHANGED
|
@@ -14704,10 +14704,14 @@ function \u5E45\u306E\u500D\u7387(text, size, letterSpacing, \u5E45) {
|
|
|
14704
14704
|
function \u8AAD\u3081\u308B\u4E0B\u9650\u306E\u500D\u7387(\u5927\u304D\u3055) {
|
|
14705
14705
|
return \u5927\u304D\u3055 > MIN_TITLE_FONT_SIZE ? MIN_TITLE_FONT_SIZE / \u5927\u304D\u3055 : 0;
|
|
14706
14706
|
}
|
|
14707
|
+
var \u5207\u308B\u4F59\u88D5 = 1e-9;
|
|
14708
|
+
function \u5E2F\u3067\u5207\u308B(text, \u5927\u304D\u3055, \u5E45\u4E0A\u9650, \u6E2C\u308B) {
|
|
14709
|
+
return \u5E45\u3067\u5207\u308B(text, \u5927\u304D\u3055, \u5E45\u4E0A\u9650 * (1 + \u5207\u308B\u4F59\u88D5), \u6E2C\u308B);
|
|
14710
|
+
}
|
|
14707
14711
|
function \u5207\u3063\u3066\u53CE\u307E\u308B\u4E0B\u9650(\u984C, \u5927\u304D\u3055, \u5B57\u9593, \u5E45\u4E0A\u9650, \u6E2C\u308B) {
|
|
14708
14712
|
const \u4E0B\u9650 = \u8AAD\u3081\u308B\u4E0B\u9650\u306E\u500D\u7387(\u5927\u304D\u3055);
|
|
14709
14713
|
if (!(\u4E0B\u9650 > 0) || !(\u5E45\u4E0A\u9650 > 0)) return 0;
|
|
14710
|
-
return \
|
|
14714
|
+
return \u5E2F\u3067\u5207\u308B(\u984C, \u5927\u304D\u3055 * \u4E0B\u9650, \u5E45\u4E0A\u9650, (u, f) => \u6E2C\u308B(u, f, \u5B57\u9593 * \u4E0B\u9650)) === "" ? 0 : \u4E0B\u9650;
|
|
14711
14715
|
}
|
|
14712
14716
|
var TITLE_MAX = 18;
|
|
14713
14717
|
var TITLE_MIN = 9;
|
|
@@ -28721,7 +28725,8 @@ function labelBlock(node, pos, size, band) {
|
|
|
28721
28725
|
node.eyebrow ? textWidth(node.eyebrow, EYEBROW_SIZE2, EYEBROW_TRACKING) : 0,
|
|
28722
28726
|
node.subtitle ? textWidth(node.subtitle, SUB_SIZE) : 0
|
|
28723
28727
|
);
|
|
28724
|
-
const \
|
|
28728
|
+
const \u984C\u5E45 = textWidth(node.title ?? "", size);
|
|
28729
|
+
const \u4E0B\u9650 = \u984C\u5E45 >= \u5E45 ? \u5207\u3063\u3066\u53CE\u307E\u308B\u4E0B\u9650(node.title ?? "", size, 0, band.w, textWidth) : 0;
|
|
28725
28730
|
const { k, x, y: baseline } = fitLabel(band, { \u4E0A, \u4E0B, \u5E45 }, pos, \u4E0B\u9650);
|
|
28726
28731
|
return { k, x, baseline, \u4E0A\u7AEF: baseline - \u4E0A * k, \u4E0B\u7AEF: baseline + \u4E0B * k };
|
|
28727
28732
|
}
|
|
@@ -28729,7 +28734,7 @@ function commonLabel(node, pos, size, band) {
|
|
|
28729
28734
|
const \u584A = labelBlock(node, pos, size, band);
|
|
28730
28735
|
const k = \u584A.k;
|
|
28731
28736
|
const x = \u584A.x;
|
|
28732
|
-
const \u5207\u308B = (t, \u5927\u304D\u3055, \u5B57\u9593 = 0) => \
|
|
28737
|
+
const \u5207\u308B = (t, \u5927\u304D\u3055, \u5B57\u9593 = 0) => \u5E2F\u3067\u5207\u308B(t, \u5927\u304D\u3055 * k, band.w, (u, f) => textWidth(u, f, \u5B57\u9593 * k));
|
|
28733
28738
|
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
28734
28739
|
node.eyebrow && /* @__PURE__ */ jsxRuntime.jsx(
|
|
28735
28740
|
"text",
|
|
@@ -29100,9 +29105,10 @@ function planLabel(node, cx, \u5E45\u4E0A\u9650, plan) {
|
|
|
29100
29105
|
node.eyebrow && plan.\u80A9\u66F8 ? textWidth(node.eyebrow, plan.\u80A9\u66F8.size, EYEBROW_TRACKING) : 0,
|
|
29101
29106
|
node.subtitle && plan.\u8AAC\u660E ? textWidth(node.subtitle, plan.\u8AAC\u660E.size) : 0
|
|
29102
29107
|
);
|
|
29103
|
-
const \
|
|
29108
|
+
const \u984C\u5E45 = textWidth(node.title ?? "", plan.\u540D\u524D.size);
|
|
29109
|
+
const \u4E0B\u9650 = \u984C\u5E45 >= \u5E45 ? \u5207\u3063\u3066\u53CE\u307E\u308B\u4E0B\u9650(node.title ?? "", plan.\u540D\u524D.size, 0, \u5E45\u4E0A\u9650, textWidth) : 0;
|
|
29104
29110
|
const k = \u5E45 > 0 && \u5E45\u4E0A\u9650 > 0 ? Math.min(1, Math.max(\u5E45\u4E0A\u9650 / \u5E45, \u4E0B\u9650)) : 1;
|
|
29105
|
-
const \u5207\u308B = (t, \u5927\u304D\u3055, \u5B57\u9593 = 0) => \
|
|
29111
|
+
const \u5207\u308B = (t, \u5927\u304D\u3055, \u5B57\u9593 = 0) => \u5E2F\u3067\u5207\u308B(t, \u5927\u304D\u3055 * k, \u5E45\u4E0A\u9650, (u, f) => textWidth(u, f, \u5B57\u9593 * k));
|
|
29106
29112
|
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
29107
29113
|
node.eyebrow && plan.\u80A9\u66F8 && /* @__PURE__ */ jsxRuntime.jsx(
|
|
29108
29114
|
"text",
|
|
@@ -30059,16 +30065,17 @@ var externalLabel = (node, cx, bottomY) => /* @__PURE__ */ jsxRuntime.jsxs(jsxRu
|
|
|
30059
30065
|
)
|
|
30060
30066
|
] });
|
|
30061
30067
|
var LABEL_EYEBROW_SPACING = 2;
|
|
30062
|
-
function \u5E45\u306B\u53CE\u3081\u308B2(\u6587\u5B57\u5217, \u5927\u304D\u3055, \u5B57\u9593, \u7BB1\u5E45) {
|
|
30068
|
+
function \u5E45\u306B\u53CE\u3081\u308B2(\u6587\u5B57\u5217, \u5927\u304D\u3055, \u5B57\u9593, \u7BB1\u5E45, \u984C\u304B = false) {
|
|
30063
30069
|
const \u5E45 = textWidth(\u6587\u5B57\u5217, \u5927\u304D\u3055, \u5B57\u9593);
|
|
30064
|
-
const \
|
|
30070
|
+
const \u4E0B\u9650 = \u984C\u304B ? \u5207\u3063\u3066\u53CE\u307E\u308B\u4E0B\u9650(\u6587\u5B57\u5217, \u5927\u304D\u3055, \u5B57\u9593, \u7BB1\u5E45, textWidth) : 0;
|
|
30071
|
+
const \u500D\u7387 = \u5E45 > 0 && \u7BB1\u5E45 > 0 ? Math.min(1, Math.max(\u7BB1\u5E45 / \u5E45, \u4E0B\u9650)) : 1;
|
|
30065
30072
|
const size = \u5927\u304D\u3055 * \u500D\u7387;
|
|
30066
30073
|
const spacing = \u5B57\u9593 * \u500D\u7387;
|
|
30067
|
-
return { size, spacing, text: \
|
|
30074
|
+
return { size, spacing, text: \u5E2F\u3067\u5207\u308B(\u6587\u5B57\u5217, size, \u7BB1\u5E45, (u, f) => textWidth(u, f, spacing)) };
|
|
30068
30075
|
}
|
|
30069
30076
|
function bottomLabel(node, cx, plan) {
|
|
30070
30077
|
const \u80A9 = \u5E45\u306B\u53CE\u3081\u308B2(node.eyebrow ?? "", plan.\u80A9\u66F8?.size ?? 0, LABEL_EYEBROW_SPACING, node.w);
|
|
30071
|
-
const \u540D = \u5E45\u306B\u53CE\u3081\u308B2(node.title ?? "", plan.\u540D\u524D.size, 0, node.w);
|
|
30078
|
+
const \u540D = \u5E45\u306B\u53CE\u3081\u308B2(node.title ?? "", plan.\u540D\u524D.size, 0, node.w, true);
|
|
30072
30079
|
const \u8AAC = \u5E45\u306B\u53CE\u3081\u308B2(node.subtitle ?? "", plan.\u8AAC\u660E?.size ?? 0, 0, node.w);
|
|
30073
30080
|
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
30074
30081
|
node.eyebrow && plan.\u80A9\u66F8 && /* @__PURE__ */ jsxRuntime.jsx("text", { x: cx, y: plan.\u80A9\u66F8.y, fontSize: \u80A9.size, fontWeight: 700, letterSpacing: \u80A9.spacing, textAnchor: "middle", fill: "var(--cdl-tone-accent, #2d6a8f)", children: \u80A9.text }),
|
|
@@ -30868,14 +30875,17 @@ function blockchainNodeExtent(strokeWidth) {
|
|
|
30868
30875
|
return { \u4E0A: \u7E26, \u4E0B: \u7E26, \u5DE6: \u6A2A, \u53F3: \u6A2A };
|
|
30869
30876
|
}
|
|
30870
30877
|
function bottomLabel2(node, cx, plan) {
|
|
30871
|
-
const \u53CE\u3081\u308B = (t, \u5927\u304D\u3055, \u5B57\u9593) => {
|
|
30878
|
+
const \u53CE\u3081\u308B = (t, \u5927\u304D\u3055, \u5B57\u9593, \u984C\u304B = false) => {
|
|
30872
30879
|
const \u6E2C\u308B = (u, f, ls) => \u5B57\u306E\u5E45(u, f) + ls * [...u].length;
|
|
30873
|
-
const \
|
|
30880
|
+
const \u7D20\u306E\u5E45 = \u6E2C\u308B(t, \u5927\u304D\u3055, \u5B57\u9593);
|
|
30881
|
+
const \u53CE\u307E\u308B = \u7D20\u306E\u5E45 > node.w && node.w > 0 ? node.w / \u7D20\u306E\u5E45 : 1;
|
|
30882
|
+
const \u4E0B\u9650 = \u984C\u304B ? \u5207\u3063\u3066\u53CE\u307E\u308B\u4E0B\u9650(t, \u5927\u304D\u3055, \u5B57\u9593, node.w, \u6E2C\u308B) : 0;
|
|
30883
|
+
const \u500D\u7387 = Math.max(\u53CE\u307E\u308B, \u4E0B\u9650);
|
|
30874
30884
|
const size = \u5927\u304D\u3055 * \u500D\u7387;
|
|
30875
|
-
return { \u500D\u7387, text: \
|
|
30885
|
+
return { \u500D\u7387, text: \u5E2F\u3067\u5207\u308B(t, size, node.w, (u, f) => \u6E2C\u308B(u, f, \u5B57\u9593 * \u500D\u7387)) };
|
|
30876
30886
|
};
|
|
30877
30887
|
const \u80A9 = node.eyebrow && plan.\u80A9\u66F8 ? \u53CE\u3081\u308B(node.eyebrow, plan.\u80A9\u66F8.size, 2) : { \u500D\u7387: 1, text: node.eyebrow ?? "" };
|
|
30878
|
-
const \u540D = \u53CE\u3081\u308B(node.title ?? "", plan.\u540D\u524D.size, 0);
|
|
30888
|
+
const \u540D = \u53CE\u3081\u308B(node.title ?? "", plan.\u540D\u524D.size, 0, true);
|
|
30879
30889
|
const \u8AAC = node.subtitle && plan.\u8AAC\u660E ? \u53CE\u3081\u308B(node.subtitle, plan.\u8AAC\u660E.size, 0) : { \u500D\u7387: 1, text: node.subtitle ?? "" };
|
|
30880
30890
|
const \u80A9\u66F8\u500D\u7387 = \u80A9.\u500D\u7387;
|
|
30881
30891
|
const \u540D\u524D\u500D\u7387 = \u540D.\u500D\u7387;
|
|
@@ -31490,16 +31500,17 @@ function \u5B57\u5E45(\u6587\u5B57\u5217, \u5927\u304D\u3055, \u5B57\u9593) {
|
|
|
31490
31500
|
}
|
|
31491
31501
|
return \u5E45 + \u5B57\u9593 * \u5B57\u6570;
|
|
31492
31502
|
}
|
|
31493
|
-
function \u5E45\u306B\u53CE\u3081\u308B3(\u6587\u5B57\u5217, \u5927\u304D\u3055, \u5B57\u9593, \u7BB1\u5E45) {
|
|
31503
|
+
function \u5E45\u306B\u53CE\u3081\u308B3(\u6587\u5B57\u5217, \u5927\u304D\u3055, \u5B57\u9593, \u7BB1\u5E45, \u984C\u304B = false) {
|
|
31494
31504
|
const \u5E45 = \u5B57\u5E45(\u6587\u5B57\u5217, \u5927\u304D\u3055, \u5B57\u9593);
|
|
31495
|
-
const \
|
|
31505
|
+
const \u4E0B\u9650 = \u984C\u304B ? \u5207\u3063\u3066\u53CE\u307E\u308B\u4E0B\u9650(\u6587\u5B57\u5217, \u5927\u304D\u3055, \u5B57\u9593, \u7BB1\u5E45, \u5B57\u5E45) : 0;
|
|
31506
|
+
const \u500D\u7387 = \u5E45 > 0 && \u7BB1\u5E45 > 0 ? Math.min(1, Math.max(\u7BB1\u5E45 / \u5E45, \u4E0B\u9650)) : 1;
|
|
31496
31507
|
const size = \u5927\u304D\u3055 * \u500D\u7387;
|
|
31497
31508
|
const spacing = \u5B57\u9593 * \u500D\u7387;
|
|
31498
|
-
return { size, spacing, text: \
|
|
31509
|
+
return { size, spacing, text: \u5E2F\u3067\u5207\u308B(\u6587\u5B57\u5217, size, \u7BB1\u5E45, (u, f) => \u5B57\u5E45(u, f, spacing)) };
|
|
31499
31510
|
}
|
|
31500
31511
|
function bottomLabel3(node, cx, plan) {
|
|
31501
31512
|
const \u80A9 = \u5E45\u306B\u53CE\u3081\u308B3(node.eyebrow ?? "", plan.\u80A9\u66F8?.size ?? 0, LABEL_EYEBROW_SPACING2, node.w);
|
|
31502
|
-
const \u540D = \u5E45\u306B\u53CE\u3081\u308B3(node.title ?? "", plan.\u540D\u524D.size, 0, node.w);
|
|
31513
|
+
const \u540D = \u5E45\u306B\u53CE\u3081\u308B3(node.title ?? "", plan.\u540D\u524D.size, 0, node.w, true);
|
|
31503
31514
|
const \u8AAC = \u5E45\u306B\u53CE\u3081\u308B3(node.subtitle ?? "", plan.\u8AAC\u660E?.size ?? 0, 0, node.w);
|
|
31504
31515
|
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
31505
31516
|
node.eyebrow && plan.\u80A9\u66F8 && /* @__PURE__ */ jsxRuntime.jsx("text", { x: cx, y: plan.\u80A9\u66F8.y, fontSize: \u80A9.size, fontWeight: 700, letterSpacing: \u80A9.spacing, textAnchor: "middle", fill: "var(--cdl-tone-accent, #2d6a8f)", children: \u80A9.text }),
|
|
@@ -31975,16 +31986,17 @@ function \u5B57\u5E452(\u6587\u5B57\u5217, \u5927\u304D\u3055, \u5B57\u9593) {
|
|
|
31975
31986
|
}
|
|
31976
31987
|
return \u5E45 + \u5B57\u9593 * \u5B57\u6570;
|
|
31977
31988
|
}
|
|
31978
|
-
function \u5E45\u306B\u53CE\u3081\u308B4(\u6587\u5B57\u5217, \u5927\u304D\u3055, \u5B57\u9593, \u7BB1\u5E45) {
|
|
31989
|
+
function \u5E45\u306B\u53CE\u3081\u308B4(\u6587\u5B57\u5217, \u5927\u304D\u3055, \u5B57\u9593, \u7BB1\u5E45, \u984C\u304B = false) {
|
|
31979
31990
|
const \u5E45 = \u5B57\u5E452(\u6587\u5B57\u5217, \u5927\u304D\u3055, \u5B57\u9593);
|
|
31980
|
-
const \
|
|
31991
|
+
const \u4E0B\u9650 = \u984C\u304B ? \u5207\u3063\u3066\u53CE\u307E\u308B\u4E0B\u9650(\u6587\u5B57\u5217, \u5927\u304D\u3055, \u5B57\u9593, \u7BB1\u5E45, \u5B57\u5E452) : 0;
|
|
31992
|
+
const \u500D\u7387 = \u5E45 > 0 && \u7BB1\u5E45 > 0 ? Math.min(1, Math.max(\u7BB1\u5E45 / \u5E45, \u4E0B\u9650)) : 1;
|
|
31981
31993
|
const size = \u5927\u304D\u3055 * \u500D\u7387;
|
|
31982
31994
|
const spacing = \u5B57\u9593 * \u500D\u7387;
|
|
31983
|
-
return { size, spacing, text: \
|
|
31995
|
+
return { size, spacing, text: \u5E2F\u3067\u5207\u308B(\u6587\u5B57\u5217, size, \u7BB1\u5E45, (u, f) => \u5B57\u5E452(u, f, spacing)) };
|
|
31984
31996
|
}
|
|
31985
31997
|
function bottomLabel4(node, cx, plan) {
|
|
31986
31998
|
const \u80A9 = \u5E45\u306B\u53CE\u3081\u308B4(node.eyebrow ?? "", plan.\u80A9\u66F8?.size ?? 0, LABEL_EYEBROW_SPACING3, node.w);
|
|
31987
|
-
const \u540D = \u5E45\u306B\u53CE\u3081\u308B4(node.title ?? "", plan.\u540D\u524D.size, 0, node.w);
|
|
31999
|
+
const \u540D = \u5E45\u306B\u53CE\u3081\u308B4(node.title ?? "", plan.\u540D\u524D.size, 0, node.w, true);
|
|
31988
32000
|
const \u8AAC = \u5E45\u306B\u53CE\u3081\u308B4(node.subtitle ?? "", plan.\u8AAC\u660E?.size ?? 0, 0, node.w);
|
|
31989
32001
|
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
31990
32002
|
node.eyebrow && plan.\u80A9\u66F8 && /* @__PURE__ */ jsxRuntime.jsx("text", { x: cx, y: plan.\u80A9\u66F8.y, fontSize: \u80A9.size, fontWeight: 700, letterSpacing: \u80A9.spacing, textAnchor: "middle", fill: "var(--cdl-tone-accent, #2d6a8f)", children: \u80A9.text }),
|