@cardenelabs/cdl 0.122.0 → 0.123.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 +16 -1
- package/README.md +64 -0
- package/dist/index.cjs +1065 -617
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +38 -26
- package/dist/index.d.ts +38 -26
- package/dist/index.js +1065 -618
- package/dist/index.js.map +1 -1
- package/dist/react.cjs +834 -403
- 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 +834 -403
- package/dist/react.js.map +1 -1
- package/dist/{render-U_pC-Ksh.d.cts → render-CVczwfRb.d.cts} +20 -2
- package/dist/{render-U_pC-Ksh.d.ts → render-CVczwfRb.d.ts} +20 -2
- package/package.json +9 -12
- package/src/builder.ts +5 -0
- package/src/index.ts +2 -0
- package/src/kinds/box-lines.ts +17 -4
- package/src/kinds/chart-bar.tsx +4 -0
- package/src/kinds/chart-gauge.tsx +20 -9
- package/src/kinds/chart-pie.tsx +67 -17
- package/src/kinds/chart-radial.tsx +7 -2
- package/src/kinds/chart-slope.tsx +26 -7
- package/src/kinds/chart-stacked-bar.tsx +8 -4
- package/src/kinds/chart-stat.tsx +19 -4
- package/src/kinds/chart-waffle.tsx +7 -2
- package/src/kinds/funnel.tsx +9 -2
- package/src/kinds/generic.tsx +5 -2
- package/src/kinds/mind-map.tsx +26 -10
- package/src/kinds/quadrant.tsx +14 -4
- package/src/kinds/row-align.ts +19 -7
- package/src/kinds/sequence-board-metrics.ts +13 -3
- package/src/kinds/sequence-board.tsx +4 -2
- package/src/kinds/shape-basement.tsx +57 -32
- package/src/kinds/shape-blockchain.tsx +83 -34
- package/src/kinds/shape-commerce.tsx +65 -24
- package/src/kinds/shape-finance.tsx +90 -26
- package/src/kinds/shape-hardware.tsx +48 -17
- package/src/kinds/shape-region.tsx +16 -6
- package/src/kinds/shape-software.tsx +30 -8
- package/src/kinds/text-width.ts +17 -3
- package/src/kinds/tree.tsx +25 -7
- package/src/layout/collisions.ts +21 -8
- package/src/layout/curve-path.ts +3 -2
- package/src/layout/edges.ts +70 -25
- package/src/layout/head-label.ts +3 -1
- package/src/layout/lanes.ts +3 -2
- package/src/layout/metro-path.ts +3 -2
- package/src/layout/nodes.ts +14 -6
- package/src/layout/predict-bbox.ts +6 -3
- package/src/layout/self-loop.ts +10 -4
- package/src/layout/spec.ts +20 -6
- package/src/layout/text-width.ts +25 -8
- package/src/layout.ts +39 -15
- package/src/presets.ts +69 -43
- package/src/render/edges.tsx +18 -3
- package/src/render/interactive-panel.tsx +34 -7
- package/src/render/nodes.tsx +97 -48
- package/src/render/stage.tsx +3 -0
- package/src/text-metrics.ts +9 -0
- package/src/types.ts +19 -0
- package/src/visual-validate.ts +67 -17
package/CHANGELOG.md
CHANGED
|
@@ -5,6 +5,20 @@ CDL (Chainome Diagram Language) の主要変更履歴。
|
|
|
5
5
|
|
|
6
6
|
## [Unreleased]
|
|
7
7
|
|
|
8
|
+
## [0.123.0] - 2026-10-05
|
|
9
|
+
|
|
10
|
+
### Added
|
|
11
|
+
|
|
12
|
+
- **図ごとに等幅書体の字幅で配置を計算できる `textMetrics` を足した** (#1006, #1009)
|
|
13
|
+
|
|
14
|
+
`textMetrics: "monospace"` では半角を 0.63 em、全角を 1.08 em の実測幅で測り、箱・札・衝突判定に加えて図表・マインドマップ・絵の中の字も同じ幅に揃える。
|
|
15
|
+
`textMetrics` を書かない既存の図は `proportional` のままで、出力は変わらない。
|
|
16
|
+
|
|
17
|
+
- **線の札と主役の線・棒を属性で選べるようにした** (#1008)
|
|
18
|
+
|
|
19
|
+
中ほどと端の札へ `data-cdl-tone`、主役の線と札へ `data-cdl-edge-role`、最大値の棒へ `data-cdl-emphasis` を出す。
|
|
20
|
+
既存の図の色と不透明度は変わらないが、`[data-cdl-tone]` を祖先に置く selector は札にも当たり始める。
|
|
21
|
+
|
|
8
22
|
## [0.122.0] - 2026-10-04
|
|
9
23
|
|
|
10
24
|
### Added
|
|
@@ -4850,7 +4864,8 @@ Initial OSS release.
|
|
|
4850
4864
|
使わない = annotated tag を push しても GitHub Release は作られず、 Release を作っていない版で
|
|
4851
4865
|
行き止まりになる。
|
|
4852
4866
|
|
|
4853
|
-
[Unreleased]: https://github.com/cardene777/cdl/compare/v0.
|
|
4867
|
+
[Unreleased]: https://github.com/cardene777/cdl/compare/v0.123.0...HEAD
|
|
4868
|
+
[0.123.0]: https://github.com/cardene777/cdl/compare/v0.122.0...v0.123.0
|
|
4854
4869
|
[0.122.0]: https://github.com/cardene777/cdl/compare/v0.121.0...v0.122.0
|
|
4855
4870
|
[0.121.0]: https://github.com/cardene777/cdl/compare/v0.120.0...v0.121.0
|
|
4856
4871
|
[0.120.0]: https://github.com/cardene777/cdl/compare/v0.119.0...v0.120.0
|
package/README.md
CHANGED
|
@@ -66,6 +66,43 @@ export function AuthSequenceDemo() {
|
|
|
66
66
|
|
|
67
67
|
これで UML sequence diagram が phase 切替 + state diff + 進行点 glow で animated に表示。
|
|
68
68
|
|
|
69
|
+
### 等幅書体で描く図の字幅
|
|
70
|
+
|
|
71
|
+
`textMetrics` は `proportional` (既定) または `monospace` を取る。
|
|
72
|
+
消費側が図全体を等幅書体で描く場合は `monospace` を指定すると、配置計算と描画の字幅を揃えられる。
|
|
73
|
+
|
|
74
|
+
`monospace` は `fontFamily: "mono"` と同じ JetBrains Mono の実測で、ASCII・半角カナ・記号を 0.63 em、
|
|
75
|
+
和字と全角 (CJK) を 1.08 em、絵文字を 1.16 em として書記素ごとに加算する。
|
|
76
|
+
図表の字、マインドマップの名前、絵の中の字も同じ測り方になる。
|
|
77
|
+
|
|
78
|
+
preset では options に指定する。
|
|
79
|
+
|
|
80
|
+
```ts
|
|
81
|
+
const terminalFlow = sequence({
|
|
82
|
+
id: "terminal-flow",
|
|
83
|
+
topic: "Terminal flow",
|
|
84
|
+
actors: ["CLI", "Worker"],
|
|
85
|
+
textMetrics: "monospace",
|
|
86
|
+
});
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
`CdlDiagram` を直接組み立てる場合は field に指定する。
|
|
90
|
+
|
|
91
|
+
```ts
|
|
92
|
+
import type { CdlDiagram } from "@cardenelabs/cdl";
|
|
93
|
+
|
|
94
|
+
const terminalDiagram: CdlDiagram = {
|
|
95
|
+
id: "terminal",
|
|
96
|
+
topic: "Terminal",
|
|
97
|
+
textMetrics: "monospace",
|
|
98
|
+
lanes: [],
|
|
99
|
+
nodes: [],
|
|
100
|
+
edges: [],
|
|
101
|
+
states: [],
|
|
102
|
+
phases: [],
|
|
103
|
+
};
|
|
104
|
+
```
|
|
105
|
+
|
|
69
106
|
## 6 つの preset
|
|
70
107
|
|
|
71
108
|
低位 API (lane / node / edge 個別宣言) + 高位 preset (1 行で典型図生成)。
|
|
@@ -457,6 +494,33 @@ cdl は形だけを描き、 色や影は持たない (geometry only、 style
|
|
|
457
494
|
[data-cdl-routing="metro"] [data-cdl-role="edge-line"] { /* 路線図の線 */ }
|
|
458
495
|
```
|
|
459
496
|
|
|
497
|
+
線の札と主役は、次の属性で選べる。
|
|
498
|
+
|
|
499
|
+
| 属性 | 付く要素 | 値 |
|
|
500
|
+
|---|---|---|
|
|
501
|
+
| `data-cdl-tone` | 線の要素の `g`、中ほどの札の `g` (`[data-cdl-edge-label-for]`)、端の札の `text` (`[data-cdl-edge-end-label-for]`) | 線の tone 名 (`accent` / `teal` / `success` / `error` / `warning` / `info`)。主役の線でも tone 名のまま |
|
|
502
|
+
| `data-cdl-edge-role` | 主役の線 (`role: "main"`) の線の要素の `g`・中ほどの札の `g`・端の札の `text` | `main`。主役でない線には付かない |
|
|
503
|
+
| `data-cdl-emphasis` | 棒グラフ (`chart-bar`) の棒 `rect` | `primary`。値が最大の棒すべてに付く (同率なら全部)。全ての値が 0 以下なら付かない |
|
|
504
|
+
|
|
505
|
+
```css
|
|
506
|
+
[data-cdl-edge-label-for][data-cdl-tone="accent"] [data-cdl-role="edge-label-bg"],
|
|
507
|
+
[data-cdl-edge-end-label-for][data-cdl-tone="accent"] {
|
|
508
|
+
fill: var(--cdl-tone-accent);
|
|
509
|
+
}
|
|
510
|
+
|
|
511
|
+
[data-cdl-edge-label-for][data-cdl-edge-role="main"] [data-cdl-role="edge-label-bg"],
|
|
512
|
+
[data-cdl-edge-end-label-for][data-cdl-edge-role="main"] {
|
|
513
|
+
fill: var(--cdl-now);
|
|
514
|
+
}
|
|
515
|
+
|
|
516
|
+
[data-cdl-role="chart-bar"][data-cdl-emphasis="primary"] {
|
|
517
|
+
stroke: var(--cdl-now);
|
|
518
|
+
}
|
|
519
|
+
```
|
|
520
|
+
|
|
521
|
+
`[data-cdl-tone="accent"] text` のように `data-cdl-tone` を祖先に置く selector は、札にも当たり始める。
|
|
522
|
+
札だけを除きたい時は `[data-cdl-edge][data-cdl-tone="accent"] text` のように `[data-cdl-edge]` を前に付け、線の要素に絞る。
|
|
523
|
+
|
|
460
524
|
明暗の切替は consumer 側の仕組み (`html` の class 等) で行う = cdl は明暗の概念を持たない。
|
|
461
525
|
|
|
462
526
|
**`CdlRole` 型は実装にある role の全部ではない**。 型に載っているのは共通の描画で使う
|