@cardenelabs/cdl 0.111.0 → 0.113.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 +13 -4
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +13 -4
- package/dist/index.js.map +1 -1
- package/dist/react.cjs +13 -4
- package/dist/react.cjs.map +1 -1
- package/dist/react.js +13 -4
- package/dist/react.js.map +1 -1
- package/package.json +1 -1
- package/src/kinds/mind-map.tsx +51 -6
package/CHANGELOG.md
CHANGED
|
@@ -5,6 +5,64 @@ CDL (Chainome Diagram Language) の主要変更履歴。
|
|
|
5
5
|
|
|
6
6
|
## [Unreleased]
|
|
7
7
|
|
|
8
|
+
## [0.113.0] - 2026-09-30
|
|
9
|
+
|
|
10
|
+
### Fixed
|
|
11
|
+
|
|
12
|
+
- **放射の枝が札の横を 3 分の 2 しか使わなかった** (#964)
|
|
13
|
+
|
|
14
|
+
枝を中心からどれだけ離すかが `canvasW * 0.32` という決め打ちの割合だった。
|
|
15
|
+
枝の名前は枠を持たず、枠があった位置の内側の端から外へ伸びる (#907) ので、
|
|
16
|
+
名前が短い図ではこの位置の外側に誰も使わない余白が残る。
|
|
17
|
+
見本帳で測ると、左の名前は 173.2 の余地に対して 90.6 しか使っていなかった。
|
|
18
|
+
|
|
19
|
+
離す量を **第 1 階層の葉の名前のうち一番広いもの** から出すようにした。
|
|
20
|
+
名前の右端が描画域の端に一致する位置 (`canvasW / 2 + branchW / 2 - 名前の幅`) を上限にする。
|
|
21
|
+
名前が短い図では枝が外へ出て、名前が長い図では逆に内側へ寄る。
|
|
22
|
+
|
|
23
|
+
| 図の形 | 直す前 | 直した後 |
|
|
24
|
+
|---|---|---|
|
|
25
|
+
| 左右 2 本ずつ | 237.4 | 305.0 |
|
|
26
|
+
| 名前が長い左右 2 本ずつ | 230.4 | 186.3 |
|
|
27
|
+
| 枝 14 本 | 235.4 | 309.9 |
|
|
28
|
+
| 第 1 階層が全て子を持つ | 175.0 | 175.0 (変わらない) |
|
|
29
|
+
|
|
30
|
+
第 1 階層に葉が 1 つも無い図では名前では決まらず、入れ子のぶんを空ける従来の上限がそのまま効く。
|
|
31
|
+
|
|
32
|
+
あわせて、札に収める最後の一様縮小が横を **描く端** で測るようにした。
|
|
33
|
+
末端は枠を持たないので、箱で測ると描いてもいない幅を占めていることになり、
|
|
34
|
+
何もはみ出していない図まで縮んでいた (枝 1 本の図が 0.83 倍になり、
|
|
35
|
+
箱の高さが 30.8 から 25.6 に縮んで補足の行が落ちていた)。
|
|
36
|
+
|
|
37
|
+
見本帳 (`cardene777/dragon`) の 3 図を実際の画面で測ると、札の横を使う割合が
|
|
38
|
+
66% から 85%、54% から 79% になった。 入れ子を持つ 1 図は 52% のまま変わらない
|
|
39
|
+
(中心の箱を描いた中身の真ん中に置く話で、別 Issue で扱う)。
|
|
40
|
+
|
|
41
|
+
## [0.112.0] - 2026-09-30
|
|
42
|
+
|
|
43
|
+
### Fixed
|
|
44
|
+
|
|
45
|
+
- **放射の図が札の縦を 4 分の 1 しか使わなかった** (#962)
|
|
46
|
+
|
|
47
|
+
隣り合う枝の縦の間隔の上限が px の定数 (96) で、枝が横に伸びる量と無関係だった。
|
|
48
|
+
枝が左右 2 本ずつの図では割り算の側が 432 になるため上限が必ず効き、
|
|
49
|
+
横に 230 伸びる図でも縦は 96 までしか開かない。 枝の傾きが 12 度にしかならなかった。
|
|
50
|
+
|
|
51
|
+
上限を **枝が横に伸びる量** から出すようにした。
|
|
52
|
+
横の伸びを超えない範囲で開けば、隣り合う枝の傾きは 45 度を超えない。
|
|
53
|
+
#913 が防ぎたかった「細長く伸びる」 を、px ではなく角度で抑える形になる。
|
|
54
|
+
|
|
55
|
+
| 図の形 | 直す前 | 直した後 |
|
|
56
|
+
|---|---|---|
|
|
57
|
+
| 左右 2 本ずつ | 144 | 278 |
|
|
58
|
+
| 入れ子あり (左 3 葉 / 右 1 葉) | 236 | 394 |
|
|
59
|
+
| 枝 14 本 | 480 | 480 (変わらない) |
|
|
60
|
+
|
|
61
|
+
枝が多い図では割り算の側が先に効くため、札 720x480 では位置が変わらない。
|
|
62
|
+
|
|
63
|
+
見本帳 (`cardene777/dragon`) の 3 図を実際の画面で測ると、札の縦を使う割合が
|
|
64
|
+
25% から 48%、43% から 65%、23% から 46% になった。
|
|
65
|
+
|
|
8
66
|
## [0.111.0] - 2026-09-30
|
|
9
67
|
|
|
10
68
|
### Fixed
|
|
@@ -4454,7 +4512,9 @@ Initial OSS release.
|
|
|
4454
4512
|
使わない = annotated tag を push しても GitHub Release は作られず、 Release を作っていない版で
|
|
4455
4513
|
行き止まりになる。
|
|
4456
4514
|
|
|
4457
|
-
[Unreleased]: https://github.com/cardene777/cdl/compare/v0.
|
|
4515
|
+
[Unreleased]: https://github.com/cardene777/cdl/compare/v0.113.0...HEAD
|
|
4516
|
+
[0.113.0]: https://github.com/cardene777/cdl/compare/v0.112.0...v0.113.0
|
|
4517
|
+
[0.112.0]: https://github.com/cardene777/cdl/compare/v0.111.0...v0.112.0
|
|
4458
4518
|
[0.111.0]: https://github.com/cardene777/cdl/compare/v0.110.0...v0.111.0
|
|
4459
4519
|
[0.110.0]: https://github.com/cardene777/cdl/compare/v0.109.0...v0.110.0
|
|
4460
4520
|
[0.109.0]: https://github.com/cardene777/cdl/compare/v0.108.0...v0.109.0
|
package/dist/index.cjs
CHANGED
|
@@ -16008,7 +16008,7 @@ var MIND_BOX_GAP = 24;
|
|
|
16008
16008
|
var \u679D\u306E\u592A\u3055 = (\u6BB5) => Math.max(1.2, 3.2 - \u6BB5 * 0.7);
|
|
16009
16009
|
var BRANCH_BOX_H_MAX = 48;
|
|
16010
16010
|
var SUB_BOX_H_MAX = 40;
|
|
16011
|
-
var
|
|
16011
|
+
var \u7E26\u306E\u9593\u9694\u306E\u4E0A\u9650 = (\u679D\u306E\u6A2A\u306E\u4F38\u3073) => \u679D\u306E\u6A2A\u306E\u4F38\u3073;
|
|
16012
16012
|
var MIND_PAD = 40;
|
|
16013
16013
|
function \u653E\u5C04\u306E\u4E2D\u8EAB(node, stateValues = {}) {
|
|
16014
16014
|
const mindData = node.mindData ? resolveMindData(node.mindData, stateValues) : void 0;
|
|
@@ -16219,7 +16219,15 @@ function computeMindMapLayout(mindData, cx, cy, canvasW, canvasH) {
|
|
|
16219
16219
|
const preferredSubDx = subBranchW + 20;
|
|
16220
16220
|
const reserve = maxSubDepth > 0 ? branchW / 2 + maxSubDepth * preferredSubDx : 0;
|
|
16221
16221
|
const maxLayer1XOffset = Math.max(minLayer1XOffset, canvasW / 2 - reserve);
|
|
16222
|
-
const
|
|
16222
|
+
const \u8449\u306E\u540D\u524D\u306E\u6700\u5927\u5E45 = Math.max(
|
|
16223
|
+
0,
|
|
16224
|
+
...firstLevel.filter((br) => (childrenOf.get(br.id) ?? []).length === 0).map((br) => {
|
|
16225
|
+
const \u540D\u524D = \u653E\u5C04\u306E\u884C({ title: br.title, isRoot: false })[0];
|
|
16226
|
+
return measureTextWidth(\u540D\u524D.text, { fontSize: \u540D\u524D.fontSize});
|
|
16227
|
+
})
|
|
16228
|
+
);
|
|
16229
|
+
const \u540D\u524D\u3067\u6C7A\u307E\u308B\u4E0A\u9650 = canvasW / 2 + branchW / 2 - \u8449\u306E\u540D\u524D\u306E\u6700\u5927\u5E45;
|
|
16230
|
+
const layer1XOffset = Math.max(minLayer1XOffset, Math.min(\u540D\u524D\u3067\u6C7A\u307E\u308B\u4E0A\u9650, maxLayer1XOffset));
|
|
16223
16231
|
const room = canvasW / 2 - layer1XOffset;
|
|
16224
16232
|
const MIN_SUB_W = 56;
|
|
16225
16233
|
const PREFERRED_GAP = MIND_BOX_GAP;
|
|
@@ -16237,7 +16245,7 @@ function computeMindMapLayout(mindData, cx, cy, canvasW, canvasH) {
|
|
|
16237
16245
|
);
|
|
16238
16246
|
const sideLaneCount = Math.max(leavesOfSide(leftBranches), leavesOfSide(rightBranches));
|
|
16239
16247
|
const laneBandH = Math.max(0, canvasH - BRANCH_BOX_H_MAX);
|
|
16240
|
-
const rowGap = sideLaneCount > 1 ? Math.min(laneBandH / (sideLaneCount - 1),
|
|
16248
|
+
const rowGap = sideLaneCount > 1 ? Math.min(laneBandH / (sideLaneCount - 1), \u7E26\u306E\u9593\u9694\u306E\u4E0A\u9650(layer1XOffset)) : subBranchH + 14;
|
|
16241
16249
|
const effSubH = Math.min(SUB_BOX_H_MAX, rowGap * 0.7);
|
|
16242
16250
|
const effBranchH = Math.min(BRANCH_BOX_H_MAX, rowGap * 0.7);
|
|
16243
16251
|
const \u7AEF\u306E\u4F59\u308A = Math.max(effSubH, effBranchH) / 2;
|
|
@@ -16317,7 +16325,8 @@ function computeMindMapLayout(mindData, cx, cy, canvasW, canvasH) {
|
|
|
16317
16325
|
let maxExtentX = rootW / 2;
|
|
16318
16326
|
let maxExtentY = rootH / 2;
|
|
16319
16327
|
for (const n of nodes) {
|
|
16320
|
-
|
|
16328
|
+
const [\u5DE6, \u53F3] = \u63CF\u304F\u6A2A\u306E\u7AEF(n);
|
|
16329
|
+
maxExtentX = Math.max(maxExtentX, Math.abs(\u5DE6 - cx), Math.abs(\u53F3 - cx));
|
|
16321
16330
|
maxExtentY = Math.max(maxExtentY, Math.abs(n.y - cy) + n.h / 2);
|
|
16322
16331
|
}
|
|
16323
16332
|
const scale = Math.min(1, drawableHalfW / maxExtentX, drawableHalfH / maxExtentY);
|