@cardenelabs/cdl 0.117.0 → 0.119.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 +84 -1
- package/dist/index.cjs +17 -7
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +17 -7
- package/dist/index.js.map +1 -1
- package/dist/react.cjs +17 -7
- package/dist/react.cjs.map +1 -1
- package/dist/react.js +17 -7
- package/dist/react.js.map +1 -1
- package/package.json +1 -1
- package/src/kinds/storage.tsx +14 -4
- package/src/layout/head-label.ts +23 -4
- package/src/layout/nodes.ts +6 -1
- package/src/layout/spec.ts +26 -0
- package/src/render/stage.tsx +3 -2
- package/src/types.ts +11 -0
package/CHANGELOG.md
CHANGED
|
@@ -5,6 +5,87 @@ CDL (Chainome Diagram Language) の主要変更履歴。
|
|
|
5
5
|
|
|
6
6
|
## [Unreleased]
|
|
7
7
|
|
|
8
|
+
## [0.119.0] - 2026-10-01
|
|
9
|
+
|
|
10
|
+
### Fixed
|
|
11
|
+
|
|
12
|
+
- **線の端に添える数が、同じ端の印に貼り付いて読めた** (#984)
|
|
13
|
+
|
|
14
|
+
クラス図の多重度 (`1` / `1..*`) が、集約とコンポジションの菱の印と同じ高さに並び、
|
|
15
|
+
2 つが 1 つの塊として読めていた。
|
|
16
|
+
|
|
17
|
+
置き場所は端から線に沿って 22 戻り、線の脇へ 8 離した所に決まる。
|
|
18
|
+
22 は印の長さの最大 14 に余白 8 を足した値で、**線に沿う向きだけ** を見ていた。
|
|
19
|
+
印は直角の向きにも広がり、菱と三角は線の芯から 7 ある。
|
|
20
|
+
線の脇へ 8 しか離さないので、印の縁と字の箱の間は 1 しか空かなかった。
|
|
21
|
+
|
|
22
|
+
| 向き | 印の広がり | 字までの距離 | 空き |
|
|
23
|
+
|---|---|---|---|
|
|
24
|
+
| 線に沿う | 14 | 22 | 8 |
|
|
25
|
+
| 直角 (前) | 7 | 8 | 1 |
|
|
26
|
+
| 直角 (後) | 7 | 15 | 8 |
|
|
27
|
+
|
|
28
|
+
線の脇へ離す距離を、印の張り出し (印の縦の半分) に余白を足した値から導くようにした。
|
|
29
|
+
余白は線に沿う向きが使っているものと同じ値なので、2 つの向きで空き方が揃う。
|
|
30
|
+
|
|
31
|
+
線に沿って戻る距離 (22) は変えていない。
|
|
32
|
+
この値は箱と箱の間隔を決める計算 (`端の字に要る線の長さ`) に入っており、
|
|
33
|
+
変えると図の高さが動く。
|
|
34
|
+
|
|
35
|
+
印の大きさ (14 / 10) は `EDGE_HEAD_MARKER_SIZE` に出し、marker を定義する側と
|
|
36
|
+
字を置く側の両方が引くようにした。
|
|
37
|
+
片方に数を直に書くと、印を大きくした時に字だけが元の位置に残る。
|
|
38
|
+
|
|
39
|
+
置き場所の検査も直した。
|
|
40
|
+
箱と札と他の端の字とは突き合わせていたが、**自分の端の印とは突き合わせていなかった**。
|
|
41
|
+
2 つの箱の隙間では見えない = 字は端から線に沿って戻した所に置くので、軸ごとの離れ方の
|
|
42
|
+
大きいほう (線に沿う向きの値) が返り、直角の向きが 1 まで詰まっても同じ数字が出る。
|
|
43
|
+
詰まる側の軸だけを見る検査を足し、字を直す前の位置へ寄せ直す植え込み対照を添えた。
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
## [0.118.0] - 2026-10-01
|
|
47
|
+
|
|
48
|
+
### Fixed
|
|
49
|
+
|
|
50
|
+
- **呼び名を書いた箱の下の余白が、上の 2 倍空いていた** (#974)
|
|
51
|
+
|
|
52
|
+
`storage` の箱に呼び名 (`subtitle`) を書くと、字が上に貼り付いて箱が下に間延びしていた。
|
|
53
|
+
|
|
54
|
+
| 書き方 | 箱の高さ | 上の余白 | 下の余白 |
|
|
55
|
+
|---|---|---|---|
|
|
56
|
+
| 名前だけ | 79 | 揃う | 揃う |
|
|
57
|
+
| 小見出し + 名前 | 115 | 揃う | 揃う |
|
|
58
|
+
| 名前 + 説明 | 125 | 17 | 39 |
|
|
59
|
+
| 小見出し + 名前 + 説明 | 161 | 21 | 39 |
|
|
60
|
+
|
|
61
|
+
許容は 7 なので、呼び名を書いた 2 通りだけが外れていた。
|
|
62
|
+
|
|
63
|
+
高さを決める側が、呼び名の分として **行の群を下げる幅** (`SUBTITLE_ROW_SHIFT` = 46) を
|
|
64
|
+
そのまま足していた。 46 は行を持つ箱で行の塊を何 world 下げるかの値で、
|
|
65
|
+
**行を持たない箱には下げる相手が居ない**。
|
|
66
|
+
|
|
67
|
+
足すべきなのは字の塊の下端が下がる分になる。
|
|
68
|
+
下端は題の字形の底から呼び名の字形の底へ移るので、baseline の差に字形の深さの差を足す。
|
|
69
|
+
|
|
70
|
+
```
|
|
71
|
+
呼び名で伸びる量 = (呼び名の baseline 118 - 題の baseline 86)
|
|
72
|
+
+ (呼び名の級 20 - 題の級 34) × 字形の深さの割合 0.4
|
|
73
|
+
= 26
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
呼び名の方が字が小さいぶん深さは浅いので、差は引き算になる。
|
|
77
|
+
|
|
78
|
+
| 書き方 | 直す前 | 直した後 |
|
|
79
|
+
|---|---|---|
|
|
80
|
+
| 名前 + 説明 | 125 | 105 |
|
|
81
|
+
| 小見出し + 名前 + 説明 | 161 | 141 |
|
|
82
|
+
|
|
83
|
+
**行を持つ箱は触っていない**。 そちらの 46 は行の塊を下げる分として正しく、
|
|
84
|
+
描く側の下げ幅と対になっている。
|
|
85
|
+
|
|
86
|
+
呼び名の baseline と級は `layout/spec.ts` に移した。
|
|
87
|
+
描く側と高さを出す側が同じ値を読む形にしないと、片方だけ動いて箱の下が空く。
|
|
88
|
+
|
|
8
89
|
## [0.117.0] - 2026-10-01
|
|
9
90
|
|
|
10
91
|
### Fixed
|
|
@@ -4646,7 +4727,9 @@ Initial OSS release.
|
|
|
4646
4727
|
使わない = annotated tag を push しても GitHub Release は作られず、 Release を作っていない版で
|
|
4647
4728
|
行き止まりになる。
|
|
4648
4729
|
|
|
4649
|
-
[Unreleased]: https://github.com/cardene777/cdl/compare/v0.
|
|
4730
|
+
[Unreleased]: https://github.com/cardene777/cdl/compare/v0.119.0...HEAD
|
|
4731
|
+
[0.119.0]: https://github.com/cardene777/cdl/compare/v0.118.0...v0.119.0
|
|
4732
|
+
[0.118.0]: https://github.com/cardene777/cdl/compare/v0.117.0...v0.118.0
|
|
4650
4733
|
[0.117.0]: https://github.com/cardene777/cdl/compare/v0.116.0...v0.117.0
|
|
4651
4734
|
[0.116.0]: https://github.com/cardene777/cdl/compare/v0.115.0...v0.116.0
|
|
4652
4735
|
[0.115.0]: https://github.com/cardene777/cdl/compare/v0.114.0...v0.115.0
|
package/dist/index.cjs
CHANGED
|
@@ -12589,11 +12589,16 @@ var ROW_FONT_GENERIC = 21;
|
|
|
12589
12589
|
var STORAGE_TITLE_BASELINE = 86;
|
|
12590
12590
|
var STORAGE_TITLE_FONT = 34;
|
|
12591
12591
|
var SUBTITLE_ROW_SHIFT = 46;
|
|
12592
|
+
var STORAGE_SUBTITLE_BASELINE = 118;
|
|
12593
|
+
var STORAGE_SUBTITLE_FONT = 20;
|
|
12592
12594
|
var STORAGE_ROW_DIVIDER_Y = Math.round(
|
|
12593
12595
|
(STORAGE_TITLE_BASELINE + (ROW_TOP_STORAGE - ROW_FONT_STORAGE * GLYPH_CAP_RATIO)) / 2
|
|
12594
12596
|
);
|
|
12595
12597
|
var ROW_GLYPH_DEPTH_RATIO = 0.4;
|
|
12596
12598
|
var TITLE_ROW_MIN_GAP = GENERIC_TITLE_FONT * ROW_GLYPH_DEPTH_RATIO + ROW_FONT_GENERIC * GLYPH_CAP_RATIO;
|
|
12599
|
+
var \u547C\u3073\u540D\u3067\u4F38\u3073\u308B\u91CF = Math.round(
|
|
12600
|
+
STORAGE_SUBTITLE_BASELINE - STORAGE_TITLE_BASELINE + (STORAGE_SUBTITLE_FONT - STORAGE_TITLE_FONT) * ROW_GLYPH_DEPTH_RATIO
|
|
12601
|
+
);
|
|
12597
12602
|
function rowGlyphDepth(kind) {
|
|
12598
12603
|
if (!rendersRows(kind)) return null;
|
|
12599
12604
|
const font = kind === "storage" ? ROW_FONT_STORAGE : ROW_FONT_GENERIC;
|
|
@@ -14688,6 +14693,7 @@ var EDGE_HEADS = [
|
|
|
14688
14693
|
];
|
|
14689
14694
|
var EDGE_HEAD_FILL_DEFAULT = "solid";
|
|
14690
14695
|
var EDGE_HEAD_FILLS = ["solid", "hollow"];
|
|
14696
|
+
var EDGE_HEAD_MARKER_SIZE = { \u65E2\u5B9A: 14, \u5C0F: 10 };
|
|
14691
14697
|
var EDGE_REVEALS = ["phase", "all"];
|
|
14692
14698
|
var RELATION_FOCUSES = ["off", "hover"];
|
|
14693
14699
|
var RELATION_FOCUS_DEFAULT = "off";
|
|
@@ -21562,8 +21568,10 @@ function recomputeContainedLanes(lanes, nodes) {
|
|
|
21562
21568
|
}
|
|
21563
21569
|
|
|
21564
21570
|
// src/layout/head-label.ts
|
|
21565
|
-
var \u7AEF\u306E\u5B57\
|
|
21566
|
-
var \u7AEF\u306E\
|
|
21571
|
+
var \u7AEF\u306E\u5B57\u3068\u5370\u306E\u4F59\u767D = 8;
|
|
21572
|
+
var \u7AEF\u306E\u5370\u306E\u5F35\u308A\u51FA\u3057 = EDGE_HEAD_MARKER_SIZE.\u65E2\u5B9A / 2;
|
|
21573
|
+
var \u7AEF\u306E\u5B57\u3092\u623B\u3059\u8DDD\u96E2 = EDGE_HEAD_MARKER_SIZE.\u65E2\u5B9A + \u7AEF\u306E\u5B57\u3068\u5370\u306E\u4F59\u767D;
|
|
21574
|
+
var \u7AEF\u306E\u5B57\u3068\u7DDA\u306E\u9699\u9593 = \u7AEF\u306E\u5370\u306E\u5F35\u308A\u51FA\u3057 + \u7AEF\u306E\u5B57\u3068\u5370\u306E\u4F59\u767D;
|
|
21567
21575
|
var \u7AEF\u306E\u5B57\u306E\u5927\u304D\u3055 = EDGE_LABEL_TEXT.sub.fontSize;
|
|
21568
21576
|
var \u7BB1\u306E\u9AD8\u3055 = Math.round(\u7AEF\u306E\u5B57\u306E\u5927\u304D\u3055 * 1.2);
|
|
21569
21577
|
var BASELINE_RATIO = 0.8;
|
|
@@ -21649,7 +21657,9 @@ function autoStorageHeight(n, defaultH) {
|
|
|
21649
21657
|
const \u5370\u3042\u308A = n.rowMarks !== void 0;
|
|
21650
21658
|
const \u547C\u3073\u540D\u306E\u5206 = n.subtitle ? SUBTITLE_ROW_SHIFT : 0;
|
|
21651
21659
|
const \u7E70\u308A\u4E0A\u3052 = n.eyebrow ? 0 : \u76EE\u5370\u306A\u3057\u306E\u7E70\u308A\u4E0A\u3052("storage");
|
|
21652
|
-
if (!n.rows || n.rows.length === 0)
|
|
21660
|
+
if (!n.rows || n.rows.length === 0) {
|
|
21661
|
+
return 115 + (n.subtitle ? \u547C\u3073\u540D\u3067\u4F38\u3073\u308B\u91CF : 0) - \u7E70\u308A\u4E0A\u3052;
|
|
21662
|
+
}
|
|
21653
21663
|
const \u5FC5\u8981 = requiredRowsHeight("storage", n.rows.length) ?? defaultH;
|
|
21654
21664
|
if (\u5370\u3042\u308A) {
|
|
21655
21665
|
const \u5E2F\u304B\u3089\u5FC5\u8981 = requiredMarkedRowsHeight("storage", n.rows.length) ?? defaultH;
|
|
@@ -24926,9 +24936,9 @@ var ROW_GLYPH_HALF = 7;
|
|
|
24926
24936
|
var ROW_GLYPH_CX = ROW_PAD_X_PX + ROW_GLYPH_HALF + 1;
|
|
24927
24937
|
var ROW_GLYPH_LEAD = 40;
|
|
24928
24938
|
var ROW_TYPE_FONT = 22;
|
|
24929
|
-
var SUBTITLE_BASELINE =
|
|
24939
|
+
var SUBTITLE_BASELINE = STORAGE_SUBTITLE_BASELINE;
|
|
24930
24940
|
var STRIPE_MIN_ROWS = 2;
|
|
24931
|
-
var SUBTITLE_FONT =
|
|
24941
|
+
var SUBTITLE_FONT = STORAGE_SUBTITLE_FONT;
|
|
24932
24942
|
var UNDERLINE_DROP = 7;
|
|
24933
24943
|
function RowGlyph({ mark, x, y, color }) {
|
|
24934
24944
|
const \u534A = ROW_GLYPH_HALF;
|
|
@@ -33269,8 +33279,8 @@ function CdlStage({
|
|
|
33269
33279
|
}
|
|
33270
33280
|
return Object.entries(TONE).flatMap(
|
|
33271
33281
|
([tone, color]) => [
|
|
33272
|
-
[false,
|
|
33273
|
-
[true,
|
|
33282
|
+
[false, EDGE_HEAD_MARKER_SIZE.\u65E2\u5B9A],
|
|
33283
|
+
[true, EDGE_HEAD_MARKER_SIZE.\u5C0F]
|
|
33274
33284
|
].flatMap(
|
|
33275
33285
|
([small, size]) => EDGE_HEADS.flatMap(
|
|
33276
33286
|
(head) => EDGE_HEAD_FILLS.map((fill) => {
|