@cardenelabs/cdl 0.64.1 → 0.65.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 +46 -1
- package/dist/index.cjs +16 -12
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +16 -12
- package/dist/index.js.map +1 -1
- package/dist/react.cjs +16 -12
- package/dist/react.cjs.map +1 -1
- package/dist/react.js +16 -12
- package/dist/react.js.map +1 -1
- package/package.json +12 -9
- package/src/layout/edges.ts +38 -12
package/CHANGELOG.md
CHANGED
|
@@ -5,6 +5,49 @@ CDL (Chainome Diagram Language) の主要変更履歴。
|
|
|
5
5
|
|
|
6
6
|
## [Unreleased]
|
|
7
7
|
|
|
8
|
+
## [0.65.0] - 2026-09-15
|
|
9
|
+
|
|
10
|
+
### Fixed
|
|
11
|
+
|
|
12
|
+
- **横に並んだ箱の高さが近い時に、矢印の角が裏返るのを直した** (#865)
|
|
13
|
+
|
|
14
|
+
横に並んだ箱を繋ぐ経路は「横に走る → 縦に折れる → 横に走る」 の L 字で、角は「手前で 14 だけ直線を止め、弧で
|
|
15
|
+
14 先へ抜ける」 形で丸める。 縦の走りは両端の 2 角が 14 ずつ使うため 28 が要るが、**その長さがあるかを
|
|
16
|
+
一度も見ていなかった**。
|
|
17
|
+
|
|
18
|
+
2 つの箱の中心の高さが 28 より近いと、止めた点が走りの向こう側へ回り込む。 直線が逆走し、角の外へ突起が出る。
|
|
19
|
+
中心の高さが 506 と 516 の対で実測した形。
|
|
20
|
+
|
|
21
|
+
```
|
|
22
|
+
変更前 ... M 360 506 L 486 506 Q 500 506, 500 520 L 500 502 Q 500 516, 514 516 L 640 516
|
|
23
|
+
変更後 ... M 360 506 L 495 506 Q 500 506, 500 511 L 500 511 Q 500 516, 505 516 L 640 516
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
変更前の縦の走りは `520` から `502` へ 18 戻っている。 進む向きは下 (506 → 516) なので逆走。
|
|
27
|
+
|
|
28
|
+
丸みを、その角が使える長さで頭打ちにする。 縦の走りは両端の 2 角で使うので半分、横の走りは片端の 1 角しか
|
|
29
|
+
使わないのでそのまま渡す。
|
|
30
|
+
|
|
31
|
+
| 走り | 渡す長さ | 効く場面 |
|
|
32
|
+
|---|---|---|
|
|
33
|
+
| 縦 (折れる位置の上下) | `|B.y - A.y| / 2` | 中心の高さが 28 より近い対 |
|
|
34
|
+
| 横 (箱から折れる位置まで) | `|midX - A.x|` と `|B.x - midX|` | 箱どうしの隙間が 28 より狭い対 |
|
|
35
|
+
|
|
36
|
+
頭打ちは `midX` (折れる位置) が決まってから計算する。 説明文を避ける繰り返しが `midX` を中央から動かすため、
|
|
37
|
+
中央のつもりで先に計算すると、動いた後の横の走りを測り損ねる。
|
|
38
|
+
|
|
39
|
+
同じ規則は経路を組み直す側 (`verticesToPath`) が既に持っており、L 字の分岐だけが持っていなかった。
|
|
40
|
+
丸みが足りている対 (中心の高さの差 28 以上、隙間 28 以上) の `d` は 1 文字も変わらない。
|
|
41
|
+
|
|
42
|
+
dragon の見本帳で、高さの違う部品どうしを矢印で繋ぐ形が出せなかった原因 (dragon#2012)。
|
|
43
|
+
|
|
44
|
+
### Fixed (公開作業の取りこぼし)
|
|
45
|
+
|
|
46
|
+
- **`v0.64.1` の tag と比較 link を後から付けた**
|
|
47
|
+
|
|
48
|
+
0.64.1 は npm に公開済だったが、tag も比較 link も残っていなかった。 版から commit を辿れない状態で、
|
|
49
|
+
変更履歴の検査 3 件が落ちたままになっていた。 tag は公開済の commit (`f2a4be9`) に付けた。
|
|
50
|
+
|
|
8
51
|
## [0.64.1] - 2026-09-15
|
|
9
52
|
|
|
10
53
|
### Fixed
|
|
@@ -2727,7 +2770,9 @@ Initial OSS release.
|
|
|
2727
2770
|
使わない = annotated tag を push しても GitHub Release は作られず、 Release を作っていない版で
|
|
2728
2771
|
行き止まりになる。
|
|
2729
2772
|
|
|
2730
|
-
[Unreleased]: https://github.com/cardene777/cdl/compare/v0.
|
|
2773
|
+
[Unreleased]: https://github.com/cardene777/cdl/compare/v0.65.0...HEAD
|
|
2774
|
+
[0.65.0]: https://github.com/cardene777/cdl/compare/v0.64.1...v0.65.0
|
|
2775
|
+
[0.64.1]: https://github.com/cardene777/cdl/compare/v0.64.0...v0.64.1
|
|
2731
2776
|
[0.64.0]: https://github.com/cardene777/cdl/compare/v0.63.0...v0.64.0
|
|
2732
2777
|
[0.63.0]: https://github.com/cardene777/cdl/compare/v0.62.0...v0.63.0
|
|
2733
2778
|
[0.62.0]: https://github.com/cardene777/cdl/compare/v0.61.0...v0.62.0
|
package/dist/index.cjs
CHANGED
|
@@ -18757,6 +18757,9 @@ var VERTICAL_DETOUR_CORNER = 14;
|
|
|
18757
18757
|
function verticalCornerDir(from, to) {
|
|
18758
18758
|
return to < from ? -1 : 1;
|
|
18759
18759
|
}
|
|
18760
|
+
function cornerRadiusFor(\u534A\u5F84, ...\u8D70\u308A) {
|
|
18761
|
+
return Math.min(\u534A\u5F84, ...\u8D70\u308A.map((v) => Math.abs(v)));
|
|
18762
|
+
}
|
|
18760
18763
|
var VERTICAL_DETOUR_EXIT = 45;
|
|
18761
18764
|
function nearestBoxDistance(anchorX, dir, verticalTop, verticalBottom, boxes) {
|
|
18762
18765
|
let nearest = Infinity;
|
|
@@ -19764,6 +19767,7 @@ function routePath(from, to, fromSide, toSide, obstacles = [], detourSide, _from
|
|
|
19764
19767
|
iter++;
|
|
19765
19768
|
}
|
|
19766
19769
|
}
|
|
19770
|
+
const lCorner = cornerRadiusFor(corner, (B.y - A.y) / 2, midX2 - A.x, B.x - midX2);
|
|
19767
19771
|
let verticalMidY = (A.y + B.y) / 2;
|
|
19768
19772
|
if (labelHalfW > 0) {
|
|
19769
19773
|
const labelBoxH = 36;
|
|
@@ -19801,10 +19805,10 @@ function routePath(from, to, fromSide, toSide, obstacles = [], detourSide, _from
|
|
|
19801
19805
|
}
|
|
19802
19806
|
}
|
|
19803
19807
|
if (edge?.overlay) {
|
|
19804
|
-
const exitEndX = midX2 - xDir *
|
|
19805
|
-
const enterStartX = midX2 + xDir *
|
|
19806
|
-
const midStartY = A.y + yDir *
|
|
19807
|
-
const midEndY = B.y - yDir *
|
|
19808
|
+
const exitEndX = midX2 - xDir * lCorner;
|
|
19809
|
+
const enterStartX = midX2 + xDir * lCorner;
|
|
19810
|
+
const midStartY = A.y + yDir * lCorner;
|
|
19811
|
+
const midEndY = B.y - yDir * lCorner;
|
|
19808
19812
|
const segments = [
|
|
19809
19813
|
{ len: Math.abs(exitEndX - A.x), midXVal: (A.x + exitEndX) / 2, midYVal: A.y },
|
|
19810
19814
|
{ len: Math.abs(midEndY - midStartY), midXVal: midX2, midYVal: (midStartY + midEndY) / 2 },
|
|
@@ -19813,10 +19817,10 @@ function routePath(from, to, fromSide, toSide, obstacles = [], detourSide, _from
|
|
|
19813
19817
|
const longest = segments.reduce((a, b) => b.len > a.len ? b : a);
|
|
19814
19818
|
return {
|
|
19815
19819
|
d: `M ${A.x} ${A.y}
|
|
19816
|
-
L ${midX2 - xDir *
|
|
19817
|
-
Q ${midX2} ${A.y}, ${midX2} ${A.y + yDir *
|
|
19818
|
-
L ${midX2} ${B.y - yDir *
|
|
19819
|
-
Q ${midX2} ${B.y}, ${midX2 + xDir *
|
|
19820
|
+
L ${midX2 - xDir * lCorner} ${A.y}
|
|
19821
|
+
Q ${midX2} ${A.y}, ${midX2} ${A.y + yDir * lCorner}
|
|
19822
|
+
L ${midX2} ${B.y - yDir * lCorner}
|
|
19823
|
+
Q ${midX2} ${B.y}, ${midX2 + xDir * lCorner} ${B.y}
|
|
19820
19824
|
L ${B.x} ${B.y}`,
|
|
19821
19825
|
labelX: longest.midXVal,
|
|
19822
19826
|
labelY: longest.midYVal,
|
|
@@ -19825,10 +19829,10 @@ function routePath(from, to, fromSide, toSide, obstacles = [], detourSide, _from
|
|
|
19825
19829
|
}
|
|
19826
19830
|
return {
|
|
19827
19831
|
d: `M ${A.x} ${A.y}
|
|
19828
|
-
L ${midX2 - xDir *
|
|
19829
|
-
Q ${midX2} ${A.y}, ${midX2} ${A.y + yDir *
|
|
19830
|
-
L ${midX2} ${B.y - yDir *
|
|
19831
|
-
Q ${midX2} ${B.y}, ${midX2 + xDir *
|
|
19832
|
+
L ${midX2 - xDir * lCorner} ${A.y}
|
|
19833
|
+
Q ${midX2} ${A.y}, ${midX2} ${A.y + yDir * lCorner}
|
|
19834
|
+
L ${midX2} ${B.y - yDir * lCorner}
|
|
19835
|
+
Q ${midX2} ${B.y}, ${midX2 + xDir * lCorner} ${B.y}
|
|
19832
19836
|
L ${B.x} ${B.y}`,
|
|
19833
19837
|
labelX: midX2,
|
|
19834
19838
|
labelY: verticalMidY,
|