@cardenelabs/cdl 0.117.0 → 0.118.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 +45 -1
- package/dist/index.cjs +10 -3
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +10 -3
- package/dist/index.js.map +1 -1
- package/dist/react.cjs +10 -3
- package/dist/react.cjs.map +1 -1
- package/dist/react.js +10 -3
- package/dist/react.js.map +1 -1
- package/package.json +1 -1
- package/src/kinds/storage.tsx +14 -4
- package/src/layout/nodes.ts +6 -1
- package/src/layout/spec.ts +26 -0
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cardenelabs/cdl",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.118.0",
|
|
4
4
|
"description": "CDL (Chainome Diagram Language). Mermaid-like declarative DSL that compiles to animated SVG diagrams. Built for blockchain / Solidity flows, generic enough for sequence / flow / state / ER / topology diagrams.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": "cardene777",
|
package/src/kinds/storage.tsx
CHANGED
|
@@ -8,6 +8,8 @@ import {
|
|
|
8
8
|
ROW_PITCH_STORAGE,
|
|
9
9
|
ROW_TOP_STORAGE,
|
|
10
10
|
STORAGE_ROW_DIVIDER_Y,
|
|
11
|
+
STORAGE_SUBTITLE_BASELINE,
|
|
12
|
+
STORAGE_SUBTITLE_FONT,
|
|
11
13
|
STORAGE_TITLE_BASELINE,
|
|
12
14
|
STORAGE_TITLE_FONT,
|
|
13
15
|
SUBTITLE_ROW_SHIFT,
|
|
@@ -49,10 +51,13 @@ const ROW_GLYPH_RISE = 8;
|
|
|
49
51
|
/**
|
|
50
52
|
* 題の下に置く呼び名の baseline (#578)。
|
|
51
53
|
*
|
|
52
|
-
* 題 (
|
|
54
|
+
* 題 (86) と 1 行目 (130) の間。 印で分ける箱では区切り線を引かないので、その分の余白が空く。
|
|
53
55
|
* ER の表名や状態の名前は識別子なので、その下に日本語の呼び名を薄く添える。
|
|
56
|
+
*
|
|
57
|
+
* **値は `layout/spec.ts` が持つ** (#974)。 高さを出す側が同じ値を読むため、
|
|
58
|
+
* ここで別に持つと片方だけ動いて箱の下が空く。
|
|
54
59
|
*/
|
|
55
|
-
const SUBTITLE_BASELINE =
|
|
60
|
+
const SUBTITLE_BASELINE = STORAGE_SUBTITLE_BASELINE;
|
|
56
61
|
|
|
57
62
|
/**
|
|
58
63
|
* 縞を敷く最少の行数 (#627)。
|
|
@@ -63,8 +68,13 @@ const SUBTITLE_BASELINE = 118;
|
|
|
63
68
|
*/
|
|
64
69
|
const STRIPE_MIN_ROWS = 2;
|
|
65
70
|
|
|
66
|
-
/**
|
|
67
|
-
|
|
71
|
+
/**
|
|
72
|
+
* 呼び名の級。 行の名前 (26) より小さく、型 (24) と同じ。
|
|
73
|
+
*
|
|
74
|
+
* **値は `layout/spec.ts` が持つ** (#974)。 高さを出す側が字形の深さをこの級から
|
|
75
|
+
* 見込むため、ここで別に持つと片方だけ動く。
|
|
76
|
+
*/
|
|
77
|
+
const SUBTITLE_FONT = STORAGE_SUBTITLE_FONT;
|
|
68
78
|
|
|
69
79
|
/** 主キーの下線を名前の baseline からどれだけ下に引くか */
|
|
70
80
|
const UNDERLINE_DROP = 7;
|
package/src/layout/nodes.ts
CHANGED
|
@@ -9,6 +9,7 @@ import {
|
|
|
9
9
|
requiredVerticalLabelGap,
|
|
10
10
|
SUBTITLE_ROW_SHIFT,
|
|
11
11
|
中身から出す高さ,
|
|
12
|
+
呼び名で伸びる量,
|
|
12
13
|
目印なしの繰り上げ,
|
|
13
14
|
} from "./spec";
|
|
14
15
|
import { DEFAULT_NODE_GAP, HEADER_RESERVE, LANE_TOP_PAD, NODE_SIZE, STACK_GAP } from "./tokens";
|
|
@@ -47,7 +48,11 @@ function autoStorageHeight(
|
|
|
47
48
|
const 呼び名の分 = n.subtitle ? SUBTITLE_ROW_SHIFT : 0;
|
|
48
49
|
// 小見出しを書かない形では字を上へ繰り上げるので、その分だけ箱も低くする (#589)
|
|
49
50
|
const 繰り上げ = n.eyebrow ? 0 : 目印なしの繰り上げ("storage");
|
|
50
|
-
|
|
51
|
+
// 行を持たない箱は **下げる相手が居ない** ので、行の下げ幅ではなく字の塊が下に伸びる分を
|
|
52
|
+
// 足す (#974)。 46 を足していた間は上 17 に対し下 39 と、下だけ 22 空いていた
|
|
53
|
+
if (!n.rows || n.rows.length === 0) {
|
|
54
|
+
return 115 + (n.subtitle ? 呼び名で伸びる量 : 0) - 繰り上げ;
|
|
55
|
+
}
|
|
51
56
|
const 必要 = requiredRowsHeight("storage", n.rows.length) ?? defaultH;
|
|
52
57
|
// 行頭の印を持つ箱は **中身の足し算だけ** で高さを決める (#578)。 下限を残すと、行が
|
|
53
58
|
// 1 つしか無い箱が 4 行の箱と同じ高さになり、下が空いたまま並ぶ。
|
package/src/layout/spec.ts
CHANGED
|
@@ -658,6 +658,16 @@ export const STORAGE_TITLE_FONT = 34;
|
|
|
658
658
|
*/
|
|
659
659
|
export const SUBTITLE_ROW_SHIFT = 46;
|
|
660
660
|
|
|
661
|
+
/**
|
|
662
|
+
* `kinds/storage.tsx` の呼び名 (subtitle) の baseline (#578)。
|
|
663
|
+
*
|
|
664
|
+
* 題 (86) と 1 行目 (130) の間に置く。 描き手が字を置く位置で、高さの計算もここを読む。
|
|
665
|
+
*/
|
|
666
|
+
export const STORAGE_SUBTITLE_BASELINE = 118;
|
|
667
|
+
|
|
668
|
+
/** `kinds/storage.tsx` の呼び名の字の大きさ。 題 (34) より小さくして題を先に読ませる */
|
|
669
|
+
export const STORAGE_SUBTITLE_FONT = 20;
|
|
670
|
+
|
|
661
671
|
/**
|
|
662
672
|
* `storage` の名前と列の間に引く区切り線の Y。
|
|
663
673
|
*
|
|
@@ -701,6 +711,22 @@ export const ROW_GLYPH_DEPTH_RATIO = 0.4;
|
|
|
701
711
|
export const TITLE_ROW_MIN_GAP =
|
|
702
712
|
GENERIC_TITLE_FONT * ROW_GLYPH_DEPTH_RATIO + ROW_FONT_GENERIC * GLYPH_CAP_RATIO;
|
|
703
713
|
|
|
714
|
+
/**
|
|
715
|
+
* 行を持たない `storage` に呼び名を書いた時、箱がどれだけ高くなるか (#974)。
|
|
716
|
+
*
|
|
717
|
+
* **`SUBTITLE_ROW_SHIFT` を流用しない**。 あちらは行の群を下げる幅で、下げる相手が
|
|
718
|
+
* 居ない箱に足すと下だけ空く (実測で上 17 に対し下 39、許容は 7)。
|
|
719
|
+
*
|
|
720
|
+
* 足すべきなのは **字の塊の下端が下がる分** になる。 下端は題の字形の底から呼び名の
|
|
721
|
+
* 字形の底へ移るので、baseline の差に字形の深さの差を足す。 呼び名の方が字が小さいぶん
|
|
722
|
+
* 深さは浅く、差は引き算になる。
|
|
723
|
+
*/
|
|
724
|
+
export const 呼び名で伸びる量 = Math.round(
|
|
725
|
+
STORAGE_SUBTITLE_BASELINE -
|
|
726
|
+
STORAGE_TITLE_BASELINE +
|
|
727
|
+
(STORAGE_SUBTITLE_FONT - STORAGE_TITLE_FONT) * ROW_GLYPH_DEPTH_RATIO,
|
|
728
|
+
);
|
|
729
|
+
|
|
704
730
|
/**
|
|
705
731
|
* 最終行の baseline から下に、 字形が枠に触れないために要ると **見込む** 量。
|
|
706
732
|
*
|