@cardenelabs/cdl 0.30.2 → 0.30.3
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 +55 -0
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +55 -0
- package/dist/index.js.map +1 -1
- package/dist/react.cjs +55 -0
- package/dist/react.cjs.map +1 -1
- package/dist/react.js +55 -0
- package/dist/react.js.map +1 -1
- package/package.json +1 -1
- package/src/layout/edges.ts +108 -0
package/CHANGELOG.md
CHANGED
|
@@ -5,6 +5,34 @@ CDL (Chainome Diagram Language) の主要変更履歴。
|
|
|
5
5
|
|
|
6
6
|
## [Unreleased]
|
|
7
7
|
|
|
8
|
+
## [0.30.3] - 2026-09-05
|
|
9
|
+
|
|
10
|
+
### Fixed
|
|
11
|
+
|
|
12
|
+
- **線の終わりに潰れた角ができなくなった** (#663)
|
|
13
|
+
|
|
14
|
+
同じ箱の同じ辺に入る線の終点をずらす工程が、 終点の手前に 28 の直線を作っていた。
|
|
15
|
+
前後を角丸に挟まれて潰れた角に見え、 線がどこへ向かうのかが読めない。
|
|
16
|
+
|
|
17
|
+
```text
|
|
18
|
+
0.29.0 ... Q 588 1723, 602 1723 L 751 1723
|
|
19
|
+
0.30.2 ... Q 588 1723, 602 1723 L 602 1695 L 751 1695
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
この工程は最後の区間を助走ぶん戻った所に折れを 2 つ作って、 ずらした終点へ繋ぐ。
|
|
23
|
+
助走が最後の区間いっぱいに達すると 1 つ目の折れが直前の折れと重なり、
|
|
24
|
+
2 つ目の折れまでの区間がずらし量そのものになる。
|
|
25
|
+
|
|
26
|
+
折れを足す代わりに、 **直前の折れごと** ずらすようにした。 ずらす向きと平行な区間まで
|
|
27
|
+
手前へ辿り、 その区間の終わりだけを動かす。 平行な区間は伸び縮みするだけなので折れが増えない。
|
|
28
|
+
|
|
29
|
+
戻す条件は 2 つ。 手前の区間が助走の下限を割る形と、 動かした先が箱に当たる形。
|
|
30
|
+
どちらも直す先が移るだけになるので、 従来の形に任せる。
|
|
31
|
+
|
|
32
|
+
`0.30.1` の #655 は同じ形を **起点** 側で直したもので、 終点側が残っていた。
|
|
33
|
+
|
|
34
|
+
消費側の ER 図で 2 件あった 30 未満の直線が 0 件になった。 折れの数も交差の数も増えていない。
|
|
35
|
+
|
|
8
36
|
## [0.30.2] - 2026-09-05
|
|
9
37
|
|
|
10
38
|
### Fixed
|
|
@@ -1547,7 +1575,8 @@ Initial OSS release.
|
|
|
1547
1575
|
使わない = annotated tag を push しても GitHub Release は作られず、 Release を作っていない版で
|
|
1548
1576
|
行き止まりになる。
|
|
1549
1577
|
|
|
1550
|
-
[Unreleased]: https://github.com/cardene777/cdl/compare/v0.30.
|
|
1578
|
+
[Unreleased]: https://github.com/cardene777/cdl/compare/v0.30.3...HEAD
|
|
1579
|
+
[0.30.3]: https://github.com/cardene777/cdl/compare/v0.30.2...v0.30.3
|
|
1551
1580
|
[0.30.2]: https://github.com/cardene777/cdl/compare/v0.30.1...v0.30.2
|
|
1552
1581
|
[0.30.1]: https://github.com/cardene777/cdl/compare/v0.30.0...v0.30.1
|
|
1553
1582
|
[0.30.0]: https://github.com/cardene777/cdl/compare/v0.29.0...v0.30.0
|
package/dist/index.cjs
CHANGED
|
@@ -20110,11 +20110,66 @@ function \u672B\u5C3E\u3092\u8FBA\u306B\u6CBF\u3063\u3066\u305A\u3089\u3059(e, \
|
|
|
20110
20110
|
parts.push(`L ${s.x2} ${s.y2}`);
|
|
20111
20111
|
}
|
|
20112
20112
|
const \u6298\u308C1\u306F\u76F4\u524D\u306E\u6298\u308C = Math.abs(\u6298\u308C1.x - last.x1) <= 0.5 && Math.abs(\u6298\u308C1.y - last.y1) <= 0.5;
|
|
20113
|
+
if (\u6298\u308C1\u306F\u76F4\u524D\u306E\u6298\u308C) {
|
|
20114
|
+
const \u6298\u308A\u8FD4\u3055\u306A\u3044 = \u76F4\u524D\u306E\u6298\u308C\u3054\u3068\u305A\u3089\u3059(segs, \u6A2A, d, nodes, e);
|
|
20115
|
+
if (\u6298\u308A\u8FD4\u3055\u306A\u3044) return \u6298\u308A\u8FD4\u3055\u306A\u3044;
|
|
20116
|
+
}
|
|
20113
20117
|
if (!\u6298\u308C1\u306F\u76F4\u524D\u306E\u6298\u308C) parts.push(`L ${round1(\u6298\u308C1.x)} ${round1(\u6298\u308C1.y)}`);
|
|
20114
20118
|
parts.push(`L ${round1(\u6298\u308C2.x)} ${round1(\u6298\u308C2.y)}`);
|
|
20115
20119
|
parts.push(`L ${round1(\u7D42\u70B9.x)} ${round1(\u7D42\u70B9.y)}`);
|
|
20116
20120
|
return parts.join(" ");
|
|
20117
20121
|
}
|
|
20122
|
+
function \u76F4\u524D\u306E\u6298\u308C\u3054\u3068\u305A\u3089\u3059(segs, \u6A2A, d, nodes, e) {
|
|
20123
|
+
const \u5E73\u884C\u304B = (s) => \u6A2A ? Math.abs(s.x2 - s.x1) < 0.5 && Math.abs(s.y2 - s.y1) > 0.5 : Math.abs(s.y2 - s.y1) < 0.5 && Math.abs(s.x2 - s.x1) > 0.5;
|
|
20124
|
+
let \u5438\u53CE = -1;
|
|
20125
|
+
for (let i = segs.length - 2; i >= 0; i -= 1) {
|
|
20126
|
+
if (\u5E73\u884C\u304B(segs[i])) {
|
|
20127
|
+
\u5438\u53CE = i;
|
|
20128
|
+
break;
|
|
20129
|
+
}
|
|
20130
|
+
}
|
|
20131
|
+
if (\u5438\u53CE < 0) return null;
|
|
20132
|
+
const \u5143\u306E\u9577\u3055 = \u6A2A ? Math.abs(segs[\u5438\u53CE].y2 - segs[\u5438\u53CE].y1) : Math.abs(segs[\u5438\u53CE].x2 - segs[\u5438\u53CE].x1);
|
|
20133
|
+
const \u5411\u304D = \u6A2A ? Math.sign(segs[\u5438\u53CE].y2 - segs[\u5438\u53CE].y1) : Math.sign(segs[\u5438\u53CE].x2 - segs[\u5438\u53CE].x1);
|
|
20134
|
+
const \u5F8C\u306E\u9577\u3055 = \u5143\u306E\u9577\u3055 + \u5411\u304D * d;
|
|
20135
|
+
if (\u5F8C\u306E\u9577\u3055 < ENDPOINT_FAN_RUNUP) return null;
|
|
20136
|
+
const \u305A\u3089\u3059 = (p) => \u6A2A ? { ...p, y: p.y + d } : { ...p, x: p.x + d };
|
|
20137
|
+
const \u65B0segs = segs.map((s, i) => {
|
|
20138
|
+
if (i <= \u5438\u53CE) return s;
|
|
20139
|
+
return {
|
|
20140
|
+
...s,
|
|
20141
|
+
x1: \u305A\u3089\u3059({ x: s.x1, y: s.y1 }).x,
|
|
20142
|
+
y1: \u305A\u3089\u3059({ x: s.x1, y: s.y1 }).y,
|
|
20143
|
+
x2: \u305A\u3089\u3059({ x: s.x2, y: s.y2 }).x,
|
|
20144
|
+
y2: \u305A\u3089\u3059({ x: s.x2, y: s.y2 }).y,
|
|
20145
|
+
...s.ctrl ? { ctrl: s.ctrl.map((c) => \u305A\u3089\u3059(c)) } : {}
|
|
20146
|
+
};
|
|
20147
|
+
});
|
|
20148
|
+
\u65B0segs[\u5438\u53CE] = {
|
|
20149
|
+
...segs[\u5438\u53CE],
|
|
20150
|
+
x2: \u6A2A ? segs[\u5438\u53CE].x2 : segs[\u5438\u53CE].x2 + d,
|
|
20151
|
+
y2: \u6A2A ? segs[\u5438\u53CE].y2 + d : segs[\u5438\u53CE].y2
|
|
20152
|
+
};
|
|
20153
|
+
if (nodes.some(
|
|
20154
|
+
(n) => n.id !== e.from && n.id !== e.to && segmentsCrossRect(
|
|
20155
|
+
\u65B0segs.slice(\u5438\u53CE).map((s) => ({ x1: s.x1, y1: s.y1, x2: s.x2, y2: s.y2 })),
|
|
20156
|
+
nodeRect(n)
|
|
20157
|
+
)
|
|
20158
|
+
)) {
|
|
20159
|
+
return null;
|
|
20160
|
+
}
|
|
20161
|
+
const head = \u65B0segs[0];
|
|
20162
|
+
const parts = [`M ${round1(head.x1)} ${round1(head.y1)}`];
|
|
20163
|
+
for (const s of \u65B0segs) {
|
|
20164
|
+
if (s.cmd === "Q") {
|
|
20165
|
+
const c = s.ctrl?.[0];
|
|
20166
|
+
parts.push(c ? `Q ${round1(c.x)} ${round1(c.y)}, ${round1(s.x2)} ${round1(s.y2)}` : `L ${round1(s.x2)} ${round1(s.y2)}`);
|
|
20167
|
+
continue;
|
|
20168
|
+
}
|
|
20169
|
+
parts.push(`L ${round1(s.x2)} ${round1(s.y2)}`);
|
|
20170
|
+
}
|
|
20171
|
+
return parts.join(" ");
|
|
20172
|
+
}
|
|
20118
20173
|
|
|
20119
20174
|
// src/layout/lanes.ts
|
|
20120
20175
|
var LANE_POSITION_EPSILON = 1e-9;
|