@cardenelabs/cdl 0.25.0 → 0.26.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 +30 -1
- package/dist/index.cjs +7 -3
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +11 -0
- package/dist/index.d.ts +11 -0
- package/dist/index.js +7 -3
- package/dist/index.js.map +1 -1
- package/dist/react.cjs +2 -1
- package/dist/react.cjs.map +1 -1
- package/dist/react.js +2 -1
- package/dist/react.js.map +1 -1
- package/package.json +1 -1
- package/src/kinds/storage.tsx +14 -0
- package/src/presets.ts +16 -1
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cardenelabs/cdl",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.26.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
|
@@ -53,6 +53,15 @@ const ROW_GLYPH_RISE = 8;
|
|
|
53
53
|
*/
|
|
54
54
|
const SUBTITLE_BASELINE = 118;
|
|
55
55
|
|
|
56
|
+
/**
|
|
57
|
+
* 縞を敷く最少の行数 (#627)。
|
|
58
|
+
*
|
|
59
|
+
* 縞の役目は「隣り合う行を見分ける」 こと。 1 行しか無い箱には見分ける相手が居ないので、
|
|
60
|
+
* 敷くとその 1 行が「主役」 に見える。 閾値ではなく役目から導いた値なので、
|
|
61
|
+
* 図種を増やしても同じ規則が効く。
|
|
62
|
+
*/
|
|
63
|
+
const STRIPE_MIN_ROWS = 2;
|
|
64
|
+
|
|
56
65
|
/** 呼び名の級。 行の名前 (26) より小さく、型 (24) と同じ */
|
|
57
66
|
const SUBTITLE_FONT = 20;
|
|
58
67
|
|
|
@@ -169,8 +178,13 @@ export function StorageNode({
|
|
|
169
178
|
|
|
170
179
|
帯の左右は枠の内側に 1 だけ寄せる。 枠と同じ x に置くと、角の丸みから帯の角が
|
|
171
180
|
はみ出して四隅に色が出る。
|
|
181
|
+
|
|
182
|
+
**行が 1 つの箱には敷かない** (#627)。 縞の役目は「隣り合う行を見分ける」 ことで、
|
|
183
|
+
1 行しか無い箱には見分ける相手が居ない。 敷くとその 1 行が「主役」 に見える
|
|
184
|
+
(実測 = クラス図の 1 行の箱で縞が強調に読めた)。
|
|
172
185
|
*/}
|
|
173
186
|
{node.rowStripe &&
|
|
187
|
+
rows.length >= STRIPE_MIN_ROWS &&
|
|
174
188
|
rows.map((_, idx) => {
|
|
175
189
|
if (idx % 2 !== 0) return null;
|
|
176
190
|
const 帯 = rowStripeBand("storage", idx, 行の下げ);
|
package/src/presets.ts
CHANGED
|
@@ -1425,6 +1425,17 @@ export type ClassDiagramPreset = {
|
|
|
1425
1425
|
* 帯ではなく **箱** の幅。 帯は `箱の幅 + 余白 × 2` で宣言する。
|
|
1426
1426
|
*/
|
|
1427
1427
|
classWidth?: number;
|
|
1428
|
+
/**
|
|
1429
|
+
* 行に 1 行おきの縞を敷くか (既定 = 敷く、 #627)。
|
|
1430
|
+
*
|
|
1431
|
+
* クラス図の箱は ER 図と同じ作り (行頭の印 + 左に名前 + 右に型) をしており、名前と型が
|
|
1432
|
+
* 離れて並ぶので行を横に追う目印が要る。 `er()` と同じ既定にする。
|
|
1433
|
+
*/
|
|
1434
|
+
rowStripe?: boolean;
|
|
1435
|
+
/**
|
|
1436
|
+
* 図の配色の名前 (#627)。 描き手は色を持たないので、名前をそのまま markup に出す。
|
|
1437
|
+
*/
|
|
1438
|
+
palette?: string;
|
|
1428
1439
|
};
|
|
1429
1440
|
|
|
1430
1441
|
export type ClassDiagramBuilder = {
|
|
@@ -1447,7 +1458,9 @@ export type ClassDiagramBuilder = {
|
|
|
1447
1458
|
export function classDiagram(preset: ClassDiagramPreset): ClassDiagramBuilder {
|
|
1448
1459
|
const classW = resolveStorageBoxW(preset.classWidth, "classDiagram", "classWidth");
|
|
1449
1460
|
const tone: Tone = preset.defaultTone ?? "info";
|
|
1450
|
-
|
|
1461
|
+
// 縞と配色は `er()` と同じ扱い (#627)。 箱の作りが同じなので、既定も揃える
|
|
1462
|
+
const 縞を敷く = preset.rowStripe ?? true;
|
|
1463
|
+
const b = diagram(preset.id, { topic: preset.topic, palette: preset.palette });
|
|
1451
1464
|
|
|
1452
1465
|
const classes: string[] = [];
|
|
1453
1466
|
const phaseActivate: string[] = [];
|
|
@@ -1509,6 +1522,8 @@ export function classDiagram(preset: ClassDiagramPreset): ClassDiagramBuilder {
|
|
|
1509
1522
|
// あることしか言わず、図の中の全ての箱に同じ字が並ぶ
|
|
1510
1523
|
...(m.c.stereotype ? { eyebrow: m.c.stereotype } : {}),
|
|
1511
1524
|
...(m.rows.length > 0 ? { rows: m.rows, rowMarks: m.rowMarks } : {}),
|
|
1525
|
+
// 縞は行を持つ箱にだけ敷く (#627)。 行が無い箱に書いても描き手が読まない
|
|
1526
|
+
...(m.rows.length > 0 && 縞を敷く ? { rowStripe: true } : {}),
|
|
1512
1527
|
});
|
|
1513
1528
|
classes.push(m.c.id);
|
|
1514
1529
|
phaseActivate.push(m.c.id);
|