@cardenelabs/cdl 0.108.0 → 0.110.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 +61 -1
- package/dist/index.cjs +41 -24
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +41 -24
- package/dist/index.js.map +1 -1
- package/dist/react.cjs +41 -24
- package/dist/react.cjs.map +1 -1
- package/dist/react.js +41 -24
- 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 +9 -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/src/render/header.tsx +10 -1
- package/src/render.tsx +17 -0
package/CHANGELOG.md
CHANGED
|
@@ -5,6 +5,64 @@ CDL (Chainome Diagram Language) の主要変更履歴。
|
|
|
5
5
|
|
|
6
6
|
## [Unreleased]
|
|
7
7
|
|
|
8
|
+
## [0.110.0] - 2026-09-30
|
|
9
|
+
|
|
10
|
+
### Fixed
|
|
11
|
+
|
|
12
|
+
- **題の下限が、題以外の行まで切っていた** (#957)
|
|
13
|
+
|
|
14
|
+
0.108.0 (#953) で入れた読める下限 (11px) の効き方が、題以外の行に及んでいた。
|
|
15
|
+
引く側 (見本帳) を 0.109.0 に上げると、記法に書いた補いの行が切られる図が出た。
|
|
16
|
+
|
|
17
|
+
`shape-diamond` の 260x260 の箱で実測した内訳。
|
|
18
|
+
|
|
19
|
+
| 版 | 肩書 | 題 | 説明 |
|
|
20
|
+
|---|---|---|---|
|
|
21
|
+
| 0.107.0 相当 | 8.32 `方針` | 10.40 `再送の判定` | 7.63 `間隔を倍に広げる · 最大 3 …` |
|
|
22
|
+
| 0.109.0 | 8.80 `方針` | 11.00 `再送の判定` | 8.07 `間隔を倍に広げる · 最大 …` |
|
|
23
|
+
| 0.110.0 (本版) | 8.32 `方針` | 10.40 `再送の判定` | 7.63 `間隔を倍に広げる · 最大 3 回` |
|
|
24
|
+
|
|
25
|
+
2 つ直した。
|
|
26
|
+
|
|
27
|
+
**1 つ目 = 塊の倍率は一番広い行で決まるのに、下限を題の大きさから出していた**。
|
|
28
|
+
この箱で一番広いのは説明の行 (14 字) で、題は 5 字しかない。 題を 0.6px 上げるために
|
|
29
|
+
説明から `3 回` を落としていた = 払うのと得るのが別の行になる。
|
|
30
|
+
|
|
31
|
+
下限を当てるのは **題が一番広い行のときだけ** にした。 行ごとに倍率を出す 4 種
|
|
32
|
+
(`shape-commerce` / `shape-finance` / `shape-hardware` / `shape-blockchain`) では、
|
|
33
|
+
下限を当てるのは題の行だけにした (#953 の対象外 scope と同じ)。
|
|
34
|
+
|
|
35
|
+
**2 つ目 = ちょうど収まる行を丸め誤差で切っていた**。
|
|
36
|
+
塊の倍率は一番広い行が帯にちょうど収まる値なので、切る側の測り直しが浮動小数で
|
|
37
|
+
髪の毛 1 本ぶん上回ると、収まっている行を切る。 切る判定に相対の余裕 (1e-9) を入れた。
|
|
38
|
+
|
|
39
|
+
これで **切られるのは、自分が入らない行だけ** になる。
|
|
40
|
+
題が一番広い行のときに下限で止めて切る振る舞い (#953) は変えていない。
|
|
41
|
+
|
|
42
|
+
## [0.109.0] - 2026-09-30
|
|
43
|
+
|
|
44
|
+
### Fixed
|
|
45
|
+
|
|
46
|
+
- **頭の帯が、図の描いた題と同じ字をもう 1 度出していた** (#955)
|
|
47
|
+
|
|
48
|
+
`CdlDiagramView` は既定で頭の帯を出し、その左上に図の話題 (`topic`) を小さな字で置く。
|
|
49
|
+
0.96.0 (#930) から図表 15 種が自分の題を箱の上に描くようになったため、話題と題が同じ
|
|
50
|
+
文字列の図では同じ字が 2 か所に並んでいた。
|
|
51
|
+
|
|
52
|
+
実測は `chart-bar` 1 つの図で 2 件 (帯の `div` と図の `text`)。 `hideHeader` を渡す側
|
|
53
|
+
(見本帳) には出ず、**engine の既定で描く側** に出る。 この repo の `thumbnail.tsx` も
|
|
54
|
+
`hideHeader={false}` を渡している。
|
|
55
|
+
|
|
56
|
+
図が話題と同じ字を既に描いているなら、帯は話題を出さない。 判定は 0.103.0 (#943) で
|
|
57
|
+
出した `drawsFigureTitle` から導く = 種別の一覧を手で持つと、図表が増えた日にずれる。
|
|
58
|
+
|
|
59
|
+
落とすのは話題の 1 行だけで、帯そのものと段の印は残る。 印は `ml-auto` で右へ寄せてある
|
|
60
|
+
ので並びも動かない。 話題は図の代替文 (`buildDiagramAltText`) に入るため、読み上げでは
|
|
61
|
+
引き続き届く。
|
|
62
|
+
|
|
63
|
+
箱の題 (`node-label`) が話題と同じ場合は出し続ける。 図表と違い箱は図の中の 1 つに
|
|
64
|
+
すぎず、話題を名乗る場所が他に無い。
|
|
65
|
+
|
|
8
66
|
## [0.108.0] - 2026-09-30
|
|
9
67
|
|
|
10
68
|
### Fixed
|
|
@@ -4359,7 +4417,9 @@ Initial OSS release.
|
|
|
4359
4417
|
使わない = annotated tag を push しても GitHub Release は作られず、 Release を作っていない版で
|
|
4360
4418
|
行き止まりになる。
|
|
4361
4419
|
|
|
4362
|
-
[Unreleased]: https://github.com/cardene777/cdl/compare/v0.
|
|
4420
|
+
[Unreleased]: https://github.com/cardene777/cdl/compare/v0.110.0...HEAD
|
|
4421
|
+
[0.110.0]: https://github.com/cardene777/cdl/compare/v0.109.0...v0.110.0
|
|
4422
|
+
[0.109.0]: https://github.com/cardene777/cdl/compare/v0.108.0...v0.109.0
|
|
4363
4423
|
[0.108.0]: https://github.com/cardene777/cdl/compare/v0.107.0...v0.108.0
|
|
4364
4424
|
[0.107.0]: https://github.com/cardene777/cdl/compare/v0.106.0...v0.107.0
|
|
4365
4425
|
[0.106.0]: https://github.com/cardene777/cdl/compare/v0.105.0...v0.106.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;
|
|
@@ -23476,12 +23480,13 @@ function CdlHeader({
|
|
|
23476
23480
|
stateValues,
|
|
23477
23481
|
states,
|
|
23478
23482
|
onJumpPhase,
|
|
23479
|
-
headingLevel = 3
|
|
23483
|
+
headingLevel = 3,
|
|
23484
|
+
showTopic = true
|
|
23480
23485
|
}) {
|
|
23481
23486
|
const HeadingTag = `h${headingLevel}`;
|
|
23482
23487
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "border-b border-[var(--cdl-divider,#d4d4d8)]/35 px-7 py-6", children: [
|
|
23483
23488
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mb-5 flex items-center gap-3", children: [
|
|
23484
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-[10px] font-bold uppercase tracking-[0.2em]", style: { color: "var(--cdl-text-accent, #2d6a8f)" }, children: topic }),
|
|
23489
|
+
showTopic && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-[10px] font-bold uppercase tracking-[0.2em]", style: { color: "var(--cdl-text-accent, #2d6a8f)" }, children: topic }),
|
|
23485
23490
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "ml-auto flex items-center gap-1.5", children: [
|
|
23486
23491
|
phases.map((p, idx) => {
|
|
23487
23492
|
const active = idx === phaseIdx;
|
|
@@ -28720,7 +28725,8 @@ function labelBlock(node, pos, size, band) {
|
|
|
28720
28725
|
node.eyebrow ? textWidth(node.eyebrow, EYEBROW_SIZE2, EYEBROW_TRACKING) : 0,
|
|
28721
28726
|
node.subtitle ? textWidth(node.subtitle, SUB_SIZE) : 0
|
|
28722
28727
|
);
|
|
28723
|
-
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;
|
|
28724
28730
|
const { k, x, y: baseline } = fitLabel(band, { \u4E0A, \u4E0B, \u5E45 }, pos, \u4E0B\u9650);
|
|
28725
28731
|
return { k, x, baseline, \u4E0A\u7AEF: baseline - \u4E0A * k, \u4E0B\u7AEF: baseline + \u4E0B * k };
|
|
28726
28732
|
}
|
|
@@ -28728,7 +28734,7 @@ function commonLabel(node, pos, size, band) {
|
|
|
28728
28734
|
const \u584A = labelBlock(node, pos, size, band);
|
|
28729
28735
|
const k = \u584A.k;
|
|
28730
28736
|
const x = \u584A.x;
|
|
28731
|
-
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));
|
|
28732
28738
|
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
28733
28739
|
node.eyebrow && /* @__PURE__ */ jsxRuntime.jsx(
|
|
28734
28740
|
"text",
|
|
@@ -29099,9 +29105,10 @@ function planLabel(node, cx, \u5E45\u4E0A\u9650, plan) {
|
|
|
29099
29105
|
node.eyebrow && plan.\u80A9\u66F8 ? textWidth(node.eyebrow, plan.\u80A9\u66F8.size, EYEBROW_TRACKING) : 0,
|
|
29100
29106
|
node.subtitle && plan.\u8AAC\u660E ? textWidth(node.subtitle, plan.\u8AAC\u660E.size) : 0
|
|
29101
29107
|
);
|
|
29102
|
-
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;
|
|
29103
29110
|
const k = \u5E45 > 0 && \u5E45\u4E0A\u9650 > 0 ? Math.min(1, Math.max(\u5E45\u4E0A\u9650 / \u5E45, \u4E0B\u9650)) : 1;
|
|
29104
|
-
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));
|
|
29105
29112
|
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
29106
29113
|
node.eyebrow && plan.\u80A9\u66F8 && /* @__PURE__ */ jsxRuntime.jsx(
|
|
29107
29114
|
"text",
|
|
@@ -30058,16 +30065,17 @@ var externalLabel = (node, cx, bottomY) => /* @__PURE__ */ jsxRuntime.jsxs(jsxRu
|
|
|
30058
30065
|
)
|
|
30059
30066
|
] });
|
|
30060
30067
|
var LABEL_EYEBROW_SPACING = 2;
|
|
30061
|
-
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) {
|
|
30062
30069
|
const \u5E45 = textWidth(\u6587\u5B57\u5217, \u5927\u304D\u3055, \u5B57\u9593);
|
|
30063
|
-
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;
|
|
30064
30072
|
const size = \u5927\u304D\u3055 * \u500D\u7387;
|
|
30065
30073
|
const spacing = \u5B57\u9593 * \u500D\u7387;
|
|
30066
|
-
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)) };
|
|
30067
30075
|
}
|
|
30068
30076
|
function bottomLabel(node, cx, plan) {
|
|
30069
30077
|
const \u80A9 = \u5E45\u306B\u53CE\u3081\u308B2(node.eyebrow ?? "", plan.\u80A9\u66F8?.size ?? 0, LABEL_EYEBROW_SPACING, node.w);
|
|
30070
|
-
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);
|
|
30071
30079
|
const \u8AAC = \u5E45\u306B\u53CE\u3081\u308B2(node.subtitle ?? "", plan.\u8AAC\u660E?.size ?? 0, 0, node.w);
|
|
30072
30080
|
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
30073
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 }),
|
|
@@ -30867,14 +30875,15 @@ function blockchainNodeExtent(strokeWidth) {
|
|
|
30867
30875
|
return { \u4E0A: \u7E26, \u4E0B: \u7E26, \u5DE6: \u6A2A, \u53F3: \u6A2A };
|
|
30868
30876
|
}
|
|
30869
30877
|
function bottomLabel2(node, cx, plan) {
|
|
30870
|
-
const \u53CE\u3081\u308B = (t, \u5927\u304D\u3055, \u5B57\u9593) => {
|
|
30878
|
+
const \u53CE\u3081\u308B = (t, \u5927\u304D\u3055, \u5B57\u9593, \u984C\u304B = false) => {
|
|
30871
30879
|
const \u6E2C\u308B = (u, f, ls) => \u5B57\u306E\u5E45(u, f) + ls * [...u].length;
|
|
30872
|
-
const \
|
|
30880
|
+
const \u4E0B\u9650 = \u984C\u304B ? \u5207\u3063\u3066\u53CE\u307E\u308B\u4E0B\u9650(t, \u5927\u304D\u3055, \u5B57\u9593, node.w, \u6E2C\u308B) : 0;
|
|
30881
|
+
const \u500D\u7387 = Math.max(\u5E45\u306E\u500D\u7387(t, \u5927\u304D\u3055, \u5B57\u9593, node.w), \u4E0B\u9650);
|
|
30873
30882
|
const size = \u5927\u304D\u3055 * \u500D\u7387;
|
|
30874
|
-
return { \u500D\u7387, text: \
|
|
30883
|
+
return { \u500D\u7387, text: \u5E2F\u3067\u5207\u308B(t, size, node.w, (u, f) => \u5B57\u306E\u5E45(u, f) + \u5B57\u9593 * \u500D\u7387 * [...u].length) };
|
|
30875
30884
|
};
|
|
30876
30885
|
const \u80A9 = node.eyebrow && plan.\u80A9\u66F8 ? \u53CE\u3081\u308B(node.eyebrow, plan.\u80A9\u66F8.size, 2) : { \u500D\u7387: 1, text: node.eyebrow ?? "" };
|
|
30877
|
-
const \u540D = \u53CE\u3081\u308B(node.title ?? "", plan.\u540D\u524D.size, 0);
|
|
30886
|
+
const \u540D = \u53CE\u3081\u308B(node.title ?? "", plan.\u540D\u524D.size, 0, true);
|
|
30878
30887
|
const \u8AAC = node.subtitle && plan.\u8AAC\u660E ? \u53CE\u3081\u308B(node.subtitle, plan.\u8AAC\u660E.size, 0) : { \u500D\u7387: 1, text: node.subtitle ?? "" };
|
|
30879
30888
|
const \u80A9\u66F8\u500D\u7387 = \u80A9.\u500D\u7387;
|
|
30880
30889
|
const \u540D\u524D\u500D\u7387 = \u540D.\u500D\u7387;
|
|
@@ -31489,16 +31498,17 @@ function \u5B57\u5E45(\u6587\u5B57\u5217, \u5927\u304D\u3055, \u5B57\u9593) {
|
|
|
31489
31498
|
}
|
|
31490
31499
|
return \u5E45 + \u5B57\u9593 * \u5B57\u6570;
|
|
31491
31500
|
}
|
|
31492
|
-
function \u5E45\u306B\u53CE\u3081\u308B3(\u6587\u5B57\u5217, \u5927\u304D\u3055, \u5B57\u9593, \u7BB1\u5E45) {
|
|
31501
|
+
function \u5E45\u306B\u53CE\u3081\u308B3(\u6587\u5B57\u5217, \u5927\u304D\u3055, \u5B57\u9593, \u7BB1\u5E45, \u984C\u304B = false) {
|
|
31493
31502
|
const \u5E45 = \u5B57\u5E45(\u6587\u5B57\u5217, \u5927\u304D\u3055, \u5B57\u9593);
|
|
31494
|
-
const \
|
|
31503
|
+
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;
|
|
31504
|
+
const \u500D\u7387 = \u5E45 > 0 && \u7BB1\u5E45 > 0 ? Math.min(1, Math.max(\u7BB1\u5E45 / \u5E45, \u4E0B\u9650)) : 1;
|
|
31495
31505
|
const size = \u5927\u304D\u3055 * \u500D\u7387;
|
|
31496
31506
|
const spacing = \u5B57\u9593 * \u500D\u7387;
|
|
31497
|
-
return { size, spacing, text: \
|
|
31507
|
+
return { size, spacing, text: \u5E2F\u3067\u5207\u308B(\u6587\u5B57\u5217, size, \u7BB1\u5E45, (u, f) => \u5B57\u5E45(u, f, spacing)) };
|
|
31498
31508
|
}
|
|
31499
31509
|
function bottomLabel3(node, cx, plan) {
|
|
31500
31510
|
const \u80A9 = \u5E45\u306B\u53CE\u3081\u308B3(node.eyebrow ?? "", plan.\u80A9\u66F8?.size ?? 0, LABEL_EYEBROW_SPACING2, node.w);
|
|
31501
|
-
const \u540D = \u5E45\u306B\u53CE\u3081\u308B3(node.title ?? "", plan.\u540D\u524D.size, 0, node.w);
|
|
31511
|
+
const \u540D = \u5E45\u306B\u53CE\u3081\u308B3(node.title ?? "", plan.\u540D\u524D.size, 0, node.w, true);
|
|
31502
31512
|
const \u8AAC = \u5E45\u306B\u53CE\u3081\u308B3(node.subtitle ?? "", plan.\u8AAC\u660E?.size ?? 0, 0, node.w);
|
|
31503
31513
|
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
31504
31514
|
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 }),
|
|
@@ -31974,16 +31984,17 @@ function \u5B57\u5E452(\u6587\u5B57\u5217, \u5927\u304D\u3055, \u5B57\u9593) {
|
|
|
31974
31984
|
}
|
|
31975
31985
|
return \u5E45 + \u5B57\u9593 * \u5B57\u6570;
|
|
31976
31986
|
}
|
|
31977
|
-
function \u5E45\u306B\u53CE\u3081\u308B4(\u6587\u5B57\u5217, \u5927\u304D\u3055, \u5B57\u9593, \u7BB1\u5E45) {
|
|
31987
|
+
function \u5E45\u306B\u53CE\u3081\u308B4(\u6587\u5B57\u5217, \u5927\u304D\u3055, \u5B57\u9593, \u7BB1\u5E45, \u984C\u304B = false) {
|
|
31978
31988
|
const \u5E45 = \u5B57\u5E452(\u6587\u5B57\u5217, \u5927\u304D\u3055, \u5B57\u9593);
|
|
31979
|
-
const \
|
|
31989
|
+
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;
|
|
31990
|
+
const \u500D\u7387 = \u5E45 > 0 && \u7BB1\u5E45 > 0 ? Math.min(1, Math.max(\u7BB1\u5E45 / \u5E45, \u4E0B\u9650)) : 1;
|
|
31980
31991
|
const size = \u5927\u304D\u3055 * \u500D\u7387;
|
|
31981
31992
|
const spacing = \u5B57\u9593 * \u500D\u7387;
|
|
31982
|
-
return { size, spacing, text: \
|
|
31993
|
+
return { size, spacing, text: \u5E2F\u3067\u5207\u308B(\u6587\u5B57\u5217, size, \u7BB1\u5E45, (u, f) => \u5B57\u5E452(u, f, spacing)) };
|
|
31983
31994
|
}
|
|
31984
31995
|
function bottomLabel4(node, cx, plan) {
|
|
31985
31996
|
const \u80A9 = \u5E45\u306B\u53CE\u3081\u308B4(node.eyebrow ?? "", plan.\u80A9\u66F8?.size ?? 0, LABEL_EYEBROW_SPACING3, node.w);
|
|
31986
|
-
const \u540D = \u5E45\u306B\u53CE\u3081\u308B4(node.title ?? "", plan.\u540D\u524D.size, 0, node.w);
|
|
31997
|
+
const \u540D = \u5E45\u306B\u53CE\u3081\u308B4(node.title ?? "", plan.\u540D\u524D.size, 0, node.w, true);
|
|
31987
31998
|
const \u8AAC = \u5E45\u306B\u53CE\u3081\u308B4(node.subtitle ?? "", plan.\u8AAC\u660E?.size ?? 0, 0, node.w);
|
|
31988
31999
|
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
31989
32000
|
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 }),
|
|
@@ -33587,6 +33598,11 @@ function CdlDiagramView({ diagram: diagram2, laid: laidProp, hideHeader = false,
|
|
|
33587
33598
|
return mergeStateValues(baseStateValues, interactive.stateOverrides);
|
|
33588
33599
|
}, [isInteractive, baseStateValues, interactive.stateOverrides]);
|
|
33589
33600
|
const \u5024\u306E\u540D\u524D = react.useMemo(() => \u5024\u306E\u540D\u524D\u306E\u8868\u3092\u4F5C\u308B(diagram2.inputs), [diagram2.inputs]);
|
|
33601
|
+
const \u56F3\u304C\u8A71\u984C\u3092\u63CF\u304F = react.useMemo(() => {
|
|
33602
|
+
const \u8A71\u984C = laid.topic.trim();
|
|
33603
|
+
if (\u8A71\u984C === "") return false;
|
|
33604
|
+
return laid.nodes.some((n) => drawsFigureTitle(n.kind) && (n.title ?? "").trim() === \u8A71\u984C);
|
|
33605
|
+
}, [laid.nodes, laid.topic]);
|
|
33590
33606
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
33591
33607
|
"div",
|
|
33592
33608
|
{
|
|
@@ -33611,7 +33627,8 @@ function CdlDiagramView({ diagram: diagram2, laid: laidProp, hideHeader = false,
|
|
|
33611
33627
|
timeline.goto(idx);
|
|
33612
33628
|
timeline.play();
|
|
33613
33629
|
},
|
|
33614
|
-
headingLevel
|
|
33630
|
+
headingLevel,
|
|
33631
|
+
showTopic: !\u56F3\u304C\u8A71\u984C\u3092\u63CF\u304F
|
|
33615
33632
|
}
|
|
33616
33633
|
),
|
|
33617
33634
|
isInteractive && interactive.panel,
|