@cardenelabs/cdl 0.120.0 → 0.121.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 +40 -1
- package/dist/index.cjs +6 -4
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +6 -4
- package/dist/index.js.map +1 -1
- package/dist/react.cjs +6 -4
- package/dist/react.cjs.map +1 -1
- package/dist/react.js +6 -4
- package/dist/react.js.map +1 -1
- package/package.json +1 -1
- package/src/layout/head-label.ts +18 -8
- package/src/render/edges.tsx +18 -3
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cardenelabs/cdl",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.121.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/layout/head-label.ts
CHANGED
|
@@ -22,8 +22,15 @@ import { extractPathSegments } from "./collisions";
|
|
|
22
22
|
import { hasRenderedLabel } from "./spec";
|
|
23
23
|
import { measureTextWidth } from "./text-width";
|
|
24
24
|
|
|
25
|
-
/**
|
|
26
|
-
|
|
25
|
+
/**
|
|
26
|
+
* 端の字の大きさ (world)。
|
|
27
|
+
*
|
|
28
|
+
* **札の下の行とは別に持つ** (#994)。 元は `EDGE_LABEL_TEXT.sub.fontSize` を引いていたが、
|
|
29
|
+
* 札は箱の間に置くので縮めても読め、端の字は線の脇で単独に立つので同じ大きさでは負ける。
|
|
30
|
+
* 見本帳はクラス図を 0.42 倍で出しており、19 では画面 8 画素と、箱の中の字 (11 画素) より
|
|
31
|
+
* 一段小さく見えた。 26 にすると画面で 11 画素になり、箱の中の字と並ぶ。
|
|
32
|
+
*/
|
|
33
|
+
export const 端の字の大きさ = 26;
|
|
27
34
|
|
|
28
35
|
/** 字の箱の高さ。 字の大きさに上下の余白を足す */
|
|
29
36
|
const 箱の高さ = Math.round(端の字の大きさ * 1.2);
|
|
@@ -31,14 +38,17 @@ const 箱の高さ = Math.round(端の字の大きさ * 1.2);
|
|
|
31
38
|
/**
|
|
32
39
|
* 端の印と端の字の間に空ける余白 (world)。 線に沿う向きと直角の向きで同じ値を使う。
|
|
33
40
|
*
|
|
34
|
-
*
|
|
35
|
-
*
|
|
36
|
-
*
|
|
41
|
+
* **字の大きさに連れて広げない** (#994)。 #989 では字の箱の半分から導いていたが、字を 26 に
|
|
42
|
+
* 上げると余白まで 16 に広がり、印の大きさは変わらないのに字だけが線から遠ざかった。
|
|
43
|
+
* 実機で見た利用者の言葉は「間伸びしてる」 で、図も縦に伸びていた。
|
|
44
|
+
*
|
|
45
|
+
* この余白が避ける相手は **印** で、印は字の大きさに連れて変わらない (`EDGE_HEAD_MARKER_SIZE`
|
|
46
|
+
* は固定)。 避ける相手が動かないなら、避ける幅も動かさない。
|
|
37
47
|
*
|
|
38
|
-
*
|
|
39
|
-
*
|
|
48
|
+
* 値は #989 が字 19 で導いた 12 をそのまま据え置く。 見本帳の 0.42 倍では 5 画素で、
|
|
49
|
+
* 印の縁と字の箱の間に 1 行の半分ほどが残る。
|
|
40
50
|
*/
|
|
41
|
-
export const 端の字と印の余白 =
|
|
51
|
+
export const 端の字と印の余白 = 12;
|
|
42
52
|
|
|
43
53
|
/** 端の印が線の芯から左右へ張り出す長さ (world)。 印の縦の半分 */
|
|
44
54
|
export const 端の印の張り出し = EDGE_HEAD_MARKER_SIZE.既定 / 2;
|
package/src/render/edges.tsx
CHANGED
|
@@ -110,8 +110,9 @@ export function CdlEdgeView({
|
|
|
110
110
|
// 貫通効果が必要な場合は別途 phase activation で表現する。
|
|
111
111
|
// 丸の通り道は線の両端から印の長さだけ縮める (#988)。 縮めないと丸が端の印の中まで
|
|
112
112
|
// 入り、輪郭だけの三角に濃い丸が重なって印に穴が開いたように見える。
|
|
113
|
-
// 点線の粒を `shrinkPathEnd`
|
|
114
|
-
|
|
113
|
+
// 点線の粒を `shrinkPathEnd` で隠しているのと同じ理由で、向きが両端にあるぶん対で縮める。
|
|
114
|
+
// 縮める幅は芯ではなく **玉の一番外の縁** で測る (#994) = 使う側が縁を足すと芯だけでは足りない
|
|
115
|
+
const 通り道を縮める = EDGE_HEAD_MARKER_SIZE.既定 + 走る丸の外側;
|
|
115
116
|
const glowPathD = shrinkPathStart(shrinkPathEnd(edge.d, 通り道を縮める), 通り道を縮める);
|
|
116
117
|
void isPassThrough;
|
|
117
118
|
|
|
@@ -267,7 +268,21 @@ function SolidEdgePath({
|
|
|
267
268
|
* 見えるので、印の長さに芯の半径を足した分だけ通り道を縮める。 ここに数を直に書くと、
|
|
268
269
|
* 丸を大きくした時に芯だけが印へはみ出す。
|
|
269
270
|
*/
|
|
270
|
-
export const 走る丸の半径 = { 外: 28, 中: 18, 芯:
|
|
271
|
+
export const 走る丸の半径 = { 外: 28, 中: 18, 芯: 12 } as const;
|
|
272
|
+
|
|
273
|
+
/**
|
|
274
|
+
* 使う側が芯に足す縁の太さの見込み (world、半分の値)。
|
|
275
|
+
*
|
|
276
|
+
* 描く側は芯を塗りだけで描くが、使う側は紙の色の縁を回して線から浮かせることがある
|
|
277
|
+
* (見本帳は 3.5 の縁を足しており、外側は 12 + 1.75 = 13.75 になる)。
|
|
278
|
+
* その縁は CSS で足されるので描く側からは見えない = 見込みとして持つしかない。
|
|
279
|
+
*
|
|
280
|
+
* 2 にするのは見本帳の 1.75 を丸めた値。 **これより太い縁を足すと玉が印に入る**。
|
|
281
|
+
*/
|
|
282
|
+
export const 走る丸の縁の見込み = 2;
|
|
283
|
+
|
|
284
|
+
/** 玉の一番外の縁までの長さ (world)。 通り道を端から縮める幅の基準になる */
|
|
285
|
+
export const 走る丸の外側 = 走る丸の半径.芯 + 走る丸の縁の見込み;
|
|
271
286
|
|
|
272
287
|
function EdgeGlowCircles({ color, edgeId }: { color: string; edgeId: string }): JSX.Element {
|
|
273
288
|
const ref = `#cdl-edge-${edgeId}`;
|