@cardenelabs/cdl 0.12.1 → 0.13.1
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 +38 -1
- package/dist/index.cjs +52 -32
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +4 -2
- package/dist/index.d.ts +4 -2
- package/dist/index.js +52 -32
- package/dist/index.js.map +1 -1
- package/dist/react.cjs +51 -32
- package/dist/react.cjs.map +1 -1
- package/dist/react.d.cts +1 -1
- package/dist/react.d.ts +1 -1
- package/dist/react.js +51 -32
- package/dist/react.js.map +1 -1
- package/dist/{render-C7FKvMqq.d.cts → render-B5JHcUrb.d.cts} +8 -0
- package/dist/{render-C7FKvMqq.d.ts → render-B5JHcUrb.d.ts} +8 -0
- package/package.json +1 -1
- package/src/kinds/box-lines.ts +45 -4
- package/src/kinds/compact-title.ts +6 -6
- package/src/kinds/mind-map.tsx +14 -7
- package/src/kinds/tree.tsx +12 -7
- package/src/presets.ts +3 -0
- package/src/render/payload-binding.ts +14 -4
- package/src/render/template-fields.ts +1 -0
- package/src/types.ts +8 -0
package/CHANGELOG.md
CHANGED
|
@@ -7,6 +7,41 @@ CDL (Chainome Diagram Language) の主要変更履歴。
|
|
|
7
7
|
|
|
8
8
|
予定 ... feedback を反映した patch / minor。
|
|
9
9
|
|
|
10
|
+
## [0.13.1] - 2026-08-22
|
|
11
|
+
|
|
12
|
+
### Fixed
|
|
13
|
+
|
|
14
|
+
- **入りきらない名前を、切る前に字を小さくして収めるようにした** (#534)
|
|
15
|
+
|
|
16
|
+
`#526` で放射と木の箱に幅を見る処理を入れたが、入れたのは **切る方だけ** だった。 中心の
|
|
17
|
+
箱は幅 120 の固定で、使える幅 104 に全角 6 文字しか入らない。 全角 7 文字の名前
|
|
18
|
+
(`新プロジェクト`) が `新プロジェ…` になり、何の箱か読めなかった。
|
|
19
|
+
|
|
20
|
+
同じ描画側の `compact-title.ts` は入りきらない時に字を 1 ずつ小さくして収めている
|
|
21
|
+
(`fitTextSize`)。 放射と木の箱だけが縮めずに切っており、扱いが揃っていなかった。
|
|
22
|
+
|
|
23
|
+
幅に入るまで 1px ずつ小さくし、下限 (11px、 `compact-title.ts` の `MIN_SIZE` と同じ値) まで
|
|
24
|
+
縮めても入らない時だけ切る。 縮めるのは入るところまでで、一律に下限へは落とさない。
|
|
25
|
+
|
|
26
|
+
元の大きさで入る名前は字も文字も変わらない = 収まっていた図の見え方は動かない。
|
|
27
|
+
|
|
28
|
+
**箱の大きさは変えない**。 配置の計算が箱幅から出ているため。
|
|
29
|
+
|
|
30
|
+
## [0.13.0] - 2026-08-22
|
|
31
|
+
|
|
32
|
+
### Added
|
|
33
|
+
|
|
34
|
+
- **放射図の中心にも補足を渡せるようにした** (#530)
|
|
35
|
+
|
|
36
|
+
枝 (`MindBranchNode`) は元から `subtitle` を持つのに、中心だけ渡す口が無かった。 呼出側が
|
|
37
|
+
名前と補足を連結して `rootTitle` に入れるため 1 行に全部入り、箱幅 120px に対して 163px の
|
|
38
|
+
文字が切られていた。
|
|
39
|
+
|
|
40
|
+
`MindBranchPayload` に `rootSubtitle` を足し、枝と同じ経路で 2 行に積む。 分けて渡せば
|
|
41
|
+
1 行あたりが短くなり (`図を速くする` 90px / `300 ms 短縮` 60px)、同じ箱幅でも収まる。
|
|
42
|
+
|
|
43
|
+
**箱の大きさは変えない**。 配置の計算が箱幅から出ているため。
|
|
44
|
+
|
|
10
45
|
## [0.12.1] - 2026-08-22
|
|
11
46
|
|
|
12
47
|
### Fixed
|
|
@@ -516,7 +551,9 @@ Initial OSS release.
|
|
|
516
551
|
使わない = annotated tag を push しても GitHub Release は作られず、 Release を作っていない版で
|
|
517
552
|
行き止まりになる。
|
|
518
553
|
|
|
519
|
-
[Unreleased]: https://github.com/cardene777/cdl/compare/v0.
|
|
554
|
+
[Unreleased]: https://github.com/cardene777/cdl/compare/v0.13.1...HEAD
|
|
555
|
+
[0.13.1]: https://github.com/cardene777/cdl/compare/v0.13.0...v0.13.1
|
|
556
|
+
[0.13.0]: https://github.com/cardene777/cdl/compare/v0.12.1...v0.13.0
|
|
520
557
|
[0.12.1]: https://github.com/cardene777/cdl/compare/v0.12.0...v0.12.1
|
|
521
558
|
[0.12.0]: https://github.com/cardene777/cdl/compare/v0.11.0...v0.12.0
|
|
522
559
|
[0.11.0]: https://github.com/cardene777/cdl/compare/v0.10.0...v0.11.0
|
package/dist/index.cjs
CHANGED
|
@@ -15837,6 +15837,7 @@ function payloadTexts(node) {
|
|
|
15837
15837
|
}
|
|
15838
15838
|
if (node.mindData) {
|
|
15839
15839
|
\u8DB3\u3059(node.mindData.rootTitle);
|
|
15840
|
+
\u8DB3\u3059(node.mindData.rootSubtitle);
|
|
15840
15841
|
for (const b of node.mindData.branches) {
|
|
15841
15842
|
\u8DB3\u3059(b.title);
|
|
15842
15843
|
\u8DB3\u3059(b.subtitle);
|
|
@@ -20267,10 +20268,10 @@ function fitTextSize(text, maxWidth, targetSize, minSize) {
|
|
|
20267
20268
|
}
|
|
20268
20269
|
var COMPACT_MAX_H = 100;
|
|
20269
20270
|
var COMPACT_PADDING_X = 16;
|
|
20270
|
-
var
|
|
20271
|
+
var MIN_TEXT_SIZE = 11;
|
|
20271
20272
|
var ASCENT2 = 0.72;
|
|
20272
20273
|
var DESCENT2 = 0.25;
|
|
20273
|
-
var MIN_BAND_H =
|
|
20274
|
+
var MIN_BAND_H = MIN_TEXT_SIZE * (ASCENT2 + DESCENT2);
|
|
20274
20275
|
var EYEBROW_BASELINE = 38;
|
|
20275
20276
|
var EYEBROW_SIZE = 18;
|
|
20276
20277
|
var EYEBROW_GAP = 8;
|
|
@@ -20292,10 +20293,10 @@ function titlePlacement(node, \u901A\u5E38, opts = {}) {
|
|
|
20292
20293
|
node.title,
|
|
20293
20294
|
Math.max(0, node.w - COMPACT_PADDING_X),
|
|
20294
20295
|
\u901A\u5E38.size,
|
|
20295
|
-
|
|
20296
|
+
MIN_TEXT_SIZE
|
|
20296
20297
|
);
|
|
20297
20298
|
const \u5E2F\u3067 = Math.floor(\u5E2F / (ASCENT2 + DESCENT2));
|
|
20298
|
-
const size = Math.max(
|
|
20299
|
+
const size = Math.max(MIN_TEXT_SIZE, Math.min(\u5E45\u3067, \u5E2F\u3067));
|
|
20299
20300
|
const \u5B57\u9AD8 = size * (ASCENT2 + DESCENT2);
|
|
20300
20301
|
const y = \u5B57\u9AD8 <= \u5E2F ? \u4E0A + \u5E2F / 2 + size * (ASCENT2 - DESCENT2) / 2 : \u4E0A > 0 ? \u4E0A + size * ASCENT2 : (\u9AD8\u3055 - \u5B57\u9AD8) / 2 + size * ASCENT2;
|
|
20301
20302
|
return { x: node.w / 2, y, size, anchor: "middle" };
|
|
@@ -21275,9 +21276,10 @@ function resolveTreeData(nodes, values) {
|
|
|
21275
21276
|
});
|
|
21276
21277
|
}
|
|
21277
21278
|
function resolveMindData(data, values) {
|
|
21278
|
-
const \u8AAD\u3080 = data.rootTitle.includes("{") || data.branches.some((b) => b.title.includes("{") || (b.subtitle?.includes("{") ?? false));
|
|
21279
|
+
const \u8AAD\u3080 = data.rootTitle.includes("{") || (data.rootSubtitle?.includes("{") ?? false) || data.branches.some((b) => b.title.includes("{") || (b.subtitle?.includes("{") ?? false));
|
|
21279
21280
|
if (!\u8AAD\u3080) return data;
|
|
21280
21281
|
const root = resolveBoundText(data.rootTitle, values);
|
|
21282
|
+
const rootSubtitle = data.rootSubtitle === void 0 ? void 0 : resolveBoundText(data.rootSubtitle, values);
|
|
21281
21283
|
const branches = data.branches.map((b) => {
|
|
21282
21284
|
const title = resolveBoundText(b.title, values);
|
|
21283
21285
|
const subtitle = b.subtitle === void 0 ? void 0 : resolveBoundText(b.subtitle, values);
|
|
@@ -21288,8 +21290,13 @@ function resolveMindData(data, values) {
|
|
|
21288
21290
|
};
|
|
21289
21291
|
return title.ok && (subtitle?.ok ?? true) ? \u89E3\u6C7A\u5F8C2 : { ...\u89E3\u6C7A\u5F8C2, unresolved: true };
|
|
21290
21292
|
});
|
|
21291
|
-
const \u89E3\u6C7A\u5F8C = {
|
|
21292
|
-
|
|
21293
|
+
const \u89E3\u6C7A\u5F8C = {
|
|
21294
|
+
...data,
|
|
21295
|
+
rootTitle: root.value,
|
|
21296
|
+
...rootSubtitle ? { rootSubtitle: rootSubtitle.value } : {},
|
|
21297
|
+
branches
|
|
21298
|
+
};
|
|
21299
|
+
return root.ok && (rootSubtitle?.ok ?? true) ? \u89E3\u6C7A\u5F8C : { ...\u89E3\u6C7A\u5F8C, unresolved: true };
|
|
21293
21300
|
}
|
|
21294
21301
|
|
|
21295
21302
|
// src/kinds/draw-progress.ts
|
|
@@ -22019,6 +22026,12 @@ function \u5E45\u3067\u5207\u308B(text, fontSize, \u4F7F\u3048\u308B\u5E452, \u6
|
|
|
22019
22026
|
}
|
|
22020
22027
|
return `${\u51FA}${\u7701\u7565}`;
|
|
22021
22028
|
}
|
|
22029
|
+
var \u7E2E\u3081\u306E\u4E0B\u9650 = MIN_TEXT_SIZE;
|
|
22030
|
+
function \u5E45\u306B\u53CE\u3081\u308B(text, fontSize, \u4F7F\u3048\u308B\u5E452, \u6E2C\u308B = textWidth) {
|
|
22031
|
+
let size = fontSize;
|
|
22032
|
+
while (size > \u7E2E\u3081\u306E\u4E0B\u9650 && \u6E2C\u308B(text, size) > \u4F7F\u3048\u308B\u5E452) size -= 1;
|
|
22033
|
+
return { text: \u5E45\u3067\u5207\u308B(text, size, \u4F7F\u3048\u308B\u5E452, \u6E2C\u308B), fontSize: size };
|
|
22034
|
+
}
|
|
22022
22035
|
function \u66F8\u8A18\u7D20\u306B\u5206\u3051\u308B(text) {
|
|
22023
22036
|
const \u533A\u5207\u308A = Intl.Segmenter;
|
|
22024
22037
|
if (typeof \u533A\u5207\u308A !== "function") return [...text];
|
|
@@ -22032,12 +22045,13 @@ function \u7BB1\u306B\u7A4D\u3080(\u884C, \u7BB1\u306E\u5E45, \u7BB1\u306E\u9AD8
|
|
|
22032
22045
|
const \u6B8B\u3059 = [...\u5019\u88DC];
|
|
22033
22046
|
while (\u6B8B\u3059.length > 1 && \u9AD8\u3055(\u6B8B\u3059) > \u4F7F\u3048\u308B\u9AD8\u3055) \u6B8B\u3059.pop();
|
|
22034
22047
|
const \u5E45 = \u4F7F\u3048\u308B\u5E45(\u7BB1\u306E\u5E45);
|
|
22035
|
-
const \
|
|
22048
|
+
const \u53CE\u3081\u305F = \u6B8B\u3059.map((r) => ({ ...r, ...\u5E45\u306B\u53CE\u3081\u308B(r.text, r.fontSize, \u5E45) }));
|
|
22049
|
+
const \u7DCF\u9AD8 = \u9AD8\u3055(\u53CE\u3081\u305F);
|
|
22036
22050
|
let \u7A4D\u307F = -\u7DCF\u9AD8 / 2;
|
|
22037
|
-
return \
|
|
22051
|
+
return \u53CE\u3081\u305F.map((r) => {
|
|
22038
22052
|
const dy = \u7A4D\u307F + (\u884C\u9001\u308A\u306E\u6BD4 + \u5B57\u306E\u9AD8\u3055\u306E\u6BD4) / 2 * r.fontSize;
|
|
22039
22053
|
\u7A4D\u307F += r.fontSize * \u884C\u9001\u308A\u306E\u6BD4;
|
|
22040
|
-
return { ...r,
|
|
22054
|
+
return { ...r, dy };
|
|
22041
22055
|
});
|
|
22042
22056
|
}
|
|
22043
22057
|
var MIND_TONES = ["accent", "teal", "success", "warning", "info", "error"];
|
|
@@ -22105,6 +22119,7 @@ function MindMapNode({
|
|
|
22105
22119
|
n.h
|
|
22106
22120
|
);
|
|
22107
22121
|
const \u88DC\u8DB3\u3042\u308A = (n.subtitle ?? "").trim() !== "";
|
|
22122
|
+
const \u53CE\u3081\u305F\u540D\u524D = \u88DC\u8DB3\u3042\u308A ? void 0 : \u5E45\u306B\u53CE\u3081\u308B(n.title, n.isRoot ? 15 : 13, \u4F7F\u3048\u308B\u5E45(n.w));
|
|
22108
22123
|
const \u6587\u5B57\u306E\u8272 = n.isRoot ? "var(--cdl-text-on-tone, #ffffff)" : "var(--cdl-chip-text, #1a1f2a)";
|
|
22109
22124
|
return /* @__PURE__ */ jsxRuntime.jsxs("g", { "data-cdl-unresolved": n.unresolved ? "true" : void 0, children: [
|
|
22110
22125
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -22120,7 +22135,7 @@ function MindMapNode({
|
|
|
22120
22135
|
strokeWidth: n.isRoot ? 2 : 1.75
|
|
22121
22136
|
}
|
|
22122
22137
|
),
|
|
22123
|
-
\
|
|
22138
|
+
\u53CE\u3081\u305F\u540D\u524D === void 0 ? \u884C.map((r) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
22124
22139
|
"text",
|
|
22125
22140
|
{
|
|
22126
22141
|
"data-cdl-role": r.\u5F79\u5272 === "subtitle" ? "mind-node-subtitle" : void 0,
|
|
@@ -22137,17 +22152,18 @@ function MindMapNode({
|
|
|
22137
22152
|
)) : (
|
|
22138
22153
|
// 補足が無くても **幅に収める** (#526)。 `箱に積む` を通らないこの経路だけが
|
|
22139
22154
|
// 幅を見ておらず、長い名前がそのまま箱の外へ出て枝の線と重なっていた
|
|
22140
|
-
// (実測 = 中心の箱で文字 163px に対し箱 120px)
|
|
22155
|
+
// (実測 = 中心の箱で文字 163px に対し箱 120px)。
|
|
22156
|
+
// 収める手段は縮めるのが先で、切るのは下限まで縮めても入らない時だけ (#534)
|
|
22141
22157
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
22142
22158
|
"text",
|
|
22143
22159
|
{
|
|
22144
22160
|
x: n.x,
|
|
22145
22161
|
y: n.y + 5,
|
|
22146
|
-
fontSize:
|
|
22162
|
+
fontSize: \u53CE\u3081\u305F\u540D\u524D.fontSize,
|
|
22147
22163
|
fontWeight: n.isRoot ? 700 : 600,
|
|
22148
22164
|
textAnchor: "middle",
|
|
22149
22165
|
fill: \u6587\u5B57\u306E\u8272,
|
|
22150
|
-
children: \
|
|
22166
|
+
children: \u53CE\u3081\u305F\u540D\u524D.text
|
|
22151
22167
|
}
|
|
22152
22168
|
)
|
|
22153
22169
|
)
|
|
@@ -22163,6 +22179,8 @@ function computeMindMapLayout(mindData, cx, cy, canvasW, canvasH) {
|
|
|
22163
22179
|
nodes.push({
|
|
22164
22180
|
id: mindData.rootId,
|
|
22165
22181
|
title: mindData.rootTitle,
|
|
22182
|
+
// 中心も枝と同じく 2 行に積める (#530)。 高さ 52 に 15px + 9px の 2 行が入る
|
|
22183
|
+
...mindData.rootSubtitle === void 0 ? {} : { subtitle: mindData.rootSubtitle },
|
|
22166
22184
|
x: cx,
|
|
22167
22185
|
y: cy,
|
|
22168
22186
|
w: rootW,
|
|
@@ -22741,6 +22759,7 @@ function TreeNode({
|
|
|
22741
22759
|
n.h
|
|
22742
22760
|
);
|
|
22743
22761
|
const \u88DC\u8DB3\u3042\u308A = (n.subtitle ?? "").trim() !== "";
|
|
22762
|
+
const \u53CE\u3081\u305F\u540D\u524D = \u88DC\u8DB3\u3042\u308A ? void 0 : \u5E45\u306B\u53CE\u3081\u308B(n.title, isRoot ? 13 : 12, \u4F7F\u3048\u308B\u5E45(n.w));
|
|
22744
22763
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
22745
22764
|
"g",
|
|
22746
22765
|
{
|
|
@@ -22759,7 +22778,7 @@ function TreeNode({
|
|
|
22759
22778
|
fill: `url(#${gradientId})`
|
|
22760
22779
|
}
|
|
22761
22780
|
),
|
|
22762
|
-
\
|
|
22781
|
+
\u53CE\u3081\u305F\u540D\u524D === void 0 ? \u7BB1\u306E\u6587\u5B57({
|
|
22763
22782
|
\u884C,
|
|
22764
22783
|
x: n.w / 2,
|
|
22765
22784
|
\u7BB1\u306E\u9AD8\u3055: n.h,
|
|
@@ -22773,11 +22792,11 @@ function TreeNode({
|
|
|
22773
22792
|
{
|
|
22774
22793
|
x: n.w / 2,
|
|
22775
22794
|
y: n.h / 2 + 5,
|
|
22776
|
-
fontSize:
|
|
22795
|
+
fontSize: \u53CE\u3081\u305F\u540D\u524D.fontSize,
|
|
22777
22796
|
fontWeight: 700,
|
|
22778
22797
|
textAnchor: "middle",
|
|
22779
22798
|
fill: "var(--cdl-text-on-tone, #ffffff)",
|
|
22780
|
-
children: \
|
|
22799
|
+
children: \u53CE\u3081\u305F\u540D\u524D.text
|
|
22781
22800
|
}
|
|
22782
22801
|
)
|
|
22783
22802
|
)
|
|
@@ -22797,7 +22816,7 @@ function TreeNode({
|
|
|
22797
22816
|
}
|
|
22798
22817
|
),
|
|
22799
22818
|
/* @__PURE__ */ jsxRuntime.jsx("rect", { x: 0, y: 0, width: 4, height: n.h, rx: 2, fill: accent }),
|
|
22800
|
-
\
|
|
22819
|
+
\u53CE\u3081\u305F\u540D\u524D === void 0 ? \u7BB1\u306E\u6587\u5B57({
|
|
22801
22820
|
\u884C,
|
|
22802
22821
|
x: n.w / 2 + 2,
|
|
22803
22822
|
\u7BB1\u306E\u9AD8\u3055: n.h,
|
|
@@ -22808,11 +22827,11 @@ function TreeNode({
|
|
|
22808
22827
|
{
|
|
22809
22828
|
x: n.w / 2 + 2,
|
|
22810
22829
|
y: n.h / 2 + 4,
|
|
22811
|
-
fontSize:
|
|
22830
|
+
fontSize: \u53CE\u3081\u305F\u540D\u524D.fontSize,
|
|
22812
22831
|
fontWeight: 600,
|
|
22813
22832
|
textAnchor: "middle",
|
|
22814
22833
|
fill: "var(--cdl-chip-text, #1a1f2a)",
|
|
22815
|
-
children: \
|
|
22834
|
+
children: \u53CE\u3081\u305F\u540D\u524D.text
|
|
22816
22835
|
}
|
|
22817
22836
|
)
|
|
22818
22837
|
] })
|
|
@@ -24517,15 +24536,15 @@ var externalLabel = (node, cx, bottomY) => /* @__PURE__ */ jsxRuntime.jsxs(jsxRu
|
|
|
24517
24536
|
)
|
|
24518
24537
|
] });
|
|
24519
24538
|
var LABEL_EYEBROW_SPACING = 2;
|
|
24520
|
-
function \u5E45\u306B\u53CE\u3081\
|
|
24539
|
+
function \u5E45\u306B\u53CE\u3081\u308B2(\u6587\u5B57\u5217, \u5927\u304D\u3055, \u5B57\u9593, \u7BB1\u5E45) {
|
|
24521
24540
|
const \u5E45 = textWidth(\u6587\u5B57\u5217, \u5927\u304D\u3055, \u5B57\u9593);
|
|
24522
24541
|
const \u500D\u7387 = \u5E45 > 0 && \u7BB1\u5E45 > 0 ? Math.min(1, \u7BB1\u5E45 / \u5E45) : 1;
|
|
24523
24542
|
return { size: \u5927\u304D\u3055 * \u500D\u7387, spacing: \u5B57\u9593 * \u500D\u7387 };
|
|
24524
24543
|
}
|
|
24525
24544
|
function bottomLabel(node, cx, plan) {
|
|
24526
|
-
const \u80A9 = \u5E45\u306B\u53CE\u3081\
|
|
24527
|
-
const \u540D = \u5E45\u306B\u53CE\u3081\
|
|
24528
|
-
const \u8AAC = \u5E45\u306B\u53CE\u3081\
|
|
24545
|
+
const \u80A9 = \u5E45\u306B\u53CE\u3081\u308B2(node.eyebrow ?? "", plan.\u80A9\u66F8?.size ?? 0, LABEL_EYEBROW_SPACING, node.w);
|
|
24546
|
+
const \u540D = \u5E45\u306B\u53CE\u3081\u308B2(node.title ?? "", plan.\u540D\u524D.size, 0, node.w);
|
|
24547
|
+
const \u8AAC = \u5E45\u306B\u53CE\u3081\u308B2(node.subtitle ?? "", plan.\u8AAC\u660E?.size ?? 0, 0, node.w);
|
|
24529
24548
|
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
24530
24549
|
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: node.eyebrow }),
|
|
24531
24550
|
/* @__PURE__ */ jsxRuntime.jsx("text", { "data-cdl-role": "node-label", x: cx, y: plan.\u540D\u524D.y, fontSize: \u540D.size, fontWeight: 700, textAnchor: "middle", fill: "var(--cdl-text, #1a1f2a)", children: node.title }),
|
|
@@ -25842,15 +25861,15 @@ function \u5B57\u5E45(\u6587\u5B57\u5217, \u5927\u304D\u3055, \u5B57\u9593) {
|
|
|
25842
25861
|
}
|
|
25843
25862
|
return \u5E45 + \u5B57\u9593 * \u5B57\u6570;
|
|
25844
25863
|
}
|
|
25845
|
-
function \u5E45\u306B\u53CE\u3081\
|
|
25864
|
+
function \u5E45\u306B\u53CE\u3081\u308B3(\u6587\u5B57\u5217, \u5927\u304D\u3055, \u5B57\u9593, \u7BB1\u5E45) {
|
|
25846
25865
|
const \u5E45 = \u5B57\u5E45(\u6587\u5B57\u5217, \u5927\u304D\u3055, \u5B57\u9593);
|
|
25847
25866
|
const \u500D\u7387 = \u5E45 > 0 && \u7BB1\u5E45 > 0 ? Math.min(1, \u7BB1\u5E45 / \u5E45) : 1;
|
|
25848
25867
|
return { size: \u5927\u304D\u3055 * \u500D\u7387, spacing: \u5B57\u9593 * \u500D\u7387 };
|
|
25849
25868
|
}
|
|
25850
25869
|
function bottomLabel3(node, cx, plan) {
|
|
25851
|
-
const \u80A9 = \u5E45\u306B\u53CE\u3081\
|
|
25852
|
-
const \u540D = \u5E45\u306B\u53CE\u3081\
|
|
25853
|
-
const \u8AAC = \u5E45\u306B\u53CE\u3081\
|
|
25870
|
+
const \u80A9 = \u5E45\u306B\u53CE\u3081\u308B3(node.eyebrow ?? "", plan.\u80A9\u66F8?.size ?? 0, LABEL_EYEBROW_SPACING2, node.w);
|
|
25871
|
+
const \u540D = \u5E45\u306B\u53CE\u3081\u308B3(node.title ?? "", plan.\u540D\u524D.size, 0, node.w);
|
|
25872
|
+
const \u8AAC = \u5E45\u306B\u53CE\u3081\u308B3(node.subtitle ?? "", plan.\u8AAC\u660E?.size ?? 0, 0, node.w);
|
|
25854
25873
|
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
25855
25874
|
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: node.eyebrow }),
|
|
25856
25875
|
/* @__PURE__ */ jsxRuntime.jsx("text", { "data-cdl-role": "node-label", x: cx, y: plan.\u540D\u524D.y, fontSize: \u540D.size, fontWeight: 700, textAnchor: "middle", fill: "var(--cdl-text, #1a1f2a)", children: node.title }),
|
|
@@ -26291,15 +26310,15 @@ function \u5B57\u5E452(\u6587\u5B57\u5217, \u5927\u304D\u3055, \u5B57\u9593) {
|
|
|
26291
26310
|
}
|
|
26292
26311
|
return \u5E45 + \u5B57\u9593 * \u5B57\u6570;
|
|
26293
26312
|
}
|
|
26294
|
-
function \u5E45\u306B\u53CE\u3081\
|
|
26313
|
+
function \u5E45\u306B\u53CE\u3081\u308B4(\u6587\u5B57\u5217, \u5927\u304D\u3055, \u5B57\u9593, \u7BB1\u5E45) {
|
|
26295
26314
|
const \u5E45 = \u5B57\u5E452(\u6587\u5B57\u5217, \u5927\u304D\u3055, \u5B57\u9593);
|
|
26296
26315
|
const \u500D\u7387 = \u5E45 > 0 && \u7BB1\u5E45 > 0 ? Math.min(1, \u7BB1\u5E45 / \u5E45) : 1;
|
|
26297
26316
|
return { size: \u5927\u304D\u3055 * \u500D\u7387, spacing: \u5B57\u9593 * \u500D\u7387 };
|
|
26298
26317
|
}
|
|
26299
26318
|
function bottomLabel4(node, cx, plan) {
|
|
26300
|
-
const \u80A9 = \u5E45\u306B\u53CE\u3081\
|
|
26301
|
-
const \u540D = \u5E45\u306B\u53CE\u3081\
|
|
26302
|
-
const \u8AAC = \u5E45\u306B\u53CE\u3081\
|
|
26319
|
+
const \u80A9 = \u5E45\u306B\u53CE\u3081\u308B4(node.eyebrow ?? "", plan.\u80A9\u66F8?.size ?? 0, LABEL_EYEBROW_SPACING3, node.w);
|
|
26320
|
+
const \u540D = \u5E45\u306B\u53CE\u3081\u308B4(node.title ?? "", plan.\u540D\u524D.size, 0, node.w);
|
|
26321
|
+
const \u8AAC = \u5E45\u306B\u53CE\u3081\u308B4(node.subtitle ?? "", plan.\u8AAC\u660E?.size ?? 0, 0, node.w);
|
|
26303
26322
|
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
26304
26323
|
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: node.eyebrow }),
|
|
26305
26324
|
/* @__PURE__ */ jsxRuntime.jsx("text", { "data-cdl-role": "node-label", x: cx, y: plan.\u540D\u524D.y, fontSize: \u540D.size, fontWeight: 700, textAnchor: "middle", fill: "var(--cdl-text, #1a1f2a)", children: node.title }),
|
|
@@ -28403,6 +28422,7 @@ function mindMap(preset) {
|
|
|
28403
28422
|
mindData: {
|
|
28404
28423
|
rootId: preset.rootId,
|
|
28405
28424
|
rootTitle: preset.rootTitle,
|
|
28425
|
+
...preset.rootSubtitle === void 0 ? {} : { rootSubtitle: preset.rootSubtitle },
|
|
28406
28426
|
branches: branches.map((br) => ({
|
|
28407
28427
|
id: br.id,
|
|
28408
28428
|
title: br.title,
|