@cardenelabs/cdl 0.64.1 → 0.66.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 +90 -1
- package/dist/index.cjs +32 -14
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +32 -14
- package/dist/index.js.map +1 -1
- package/dist/react.cjs +32 -14
- package/dist/react.cjs.map +1 -1
- package/dist/react.js +32 -14
- package/dist/react.js.map +1 -1
- package/package.json +12 -9
- package/src/layout/edges.ts +98 -15
package/dist/index.js
CHANGED
|
@@ -18755,6 +18755,13 @@ var VERTICAL_DETOUR_CORNER = 14;
|
|
|
18755
18755
|
function verticalCornerDir(from, to) {
|
|
18756
18756
|
return to < from ? -1 : 1;
|
|
18757
18757
|
}
|
|
18758
|
+
function cornerRadiusFor(\u534A\u5F84, ...\u8D70\u308A) {
|
|
18759
|
+
return Math.min(\u534A\u5F84, ...\u8D70\u308A.map((v) => Math.abs(v)));
|
|
18760
|
+
}
|
|
18761
|
+
function runCrossesBox(\u8D70\u308A, \u7BB1) {
|
|
18762
|
+
if (\u8D70\u308A.y <= \u7BB1.cy - \u7BB1.h / 2 || \u8D70\u308A.y >= \u7BB1.cy + \u7BB1.h / 2) return false;
|
|
18763
|
+
return \u7BB1.cx + \u7BB1.w / 2 > Math.min(\u8D70\u308A.x1, \u8D70\u308A.x2) && \u7BB1.cx - \u7BB1.w / 2 < Math.max(\u8D70\u308A.x1, \u8D70\u308A.x2);
|
|
18764
|
+
}
|
|
18758
18765
|
var VERTICAL_DETOUR_EXIT = 45;
|
|
18759
18766
|
function nearestBoxDistance(anchorX, dir, verticalTop, verticalBottom, boxes) {
|
|
18760
18767
|
let nearest = Infinity;
|
|
@@ -19747,21 +19754,32 @@ function routePath(from, to, fromSide, toSide, obstacles = [], detourSide, _from
|
|
|
19747
19754
|
const labelIntersect = oTop < labelBottom && oBottom > labelTop;
|
|
19748
19755
|
return segIntersect || labelIntersect;
|
|
19749
19756
|
};
|
|
19757
|
+
const \u6A2A\u306E\u8D70\u308A\u304C\u585E\u304C\u308B = (mx) => labelObstacles.some((o) => {
|
|
19758
|
+
if (o.id === from.id || o.id === to.id) return false;
|
|
19759
|
+
return runCrossesBox({ y: A.y, x1: A.x, x2: mx }, o) || runCrossesBox({ y: B.y, x1: mx, x2: B.x }, o);
|
|
19760
|
+
});
|
|
19750
19761
|
let iter = 0;
|
|
19751
19762
|
while (iter < 12) {
|
|
19752
19763
|
const band = labelBand(midX2);
|
|
19753
|
-
const hit = labelObstacles.find((o) => intersects(o, band))
|
|
19764
|
+
const hit = labelObstacles.find((o) => intersects(o, band)) ?? labelObstacles.find(
|
|
19765
|
+
(o) => o.id !== from.id && o.id !== to.id && (runCrossesBox({ y: A.y, x1: A.x, x2: midX2 }, o) || runCrossesBox({ y: B.y, x1: midX2, x2: B.x }, o))
|
|
19766
|
+
);
|
|
19754
19767
|
if (!hit) break;
|
|
19755
19768
|
const hitLeft = hit.cx - hit.w / 2;
|
|
19756
19769
|
const hitRight = hit.cx + hit.w / 2;
|
|
19757
19770
|
const retreatRight = hitRight + labelHalfW + CLEARANCE_NODE_LABEL + 4;
|
|
19758
19771
|
const retreatLeft = hitLeft - labelHalfW - CLEARANCE_NODE_LABEL - 4;
|
|
19772
|
+
const \u53F3\u304C\u585E\u304C\u308B = \u6A2A\u306E\u8D70\u308A\u304C\u585E\u304C\u308B(retreatRight);
|
|
19773
|
+
const \u5DE6\u304C\u585E\u304C\u308B = \u6A2A\u306E\u8D70\u308A\u304C\u585E\u304C\u308B(retreatLeft);
|
|
19759
19774
|
const dRight = Math.abs(retreatRight - midX2);
|
|
19760
19775
|
const dLeft = Math.abs(retreatLeft - midX2);
|
|
19761
|
-
|
|
19776
|
+
const \u6B21 = \u53F3\u304C\u585E\u304C\u308B === \u5DE6\u304C\u585E\u304C\u308B ? dRight <= dLeft ? retreatRight : retreatLeft : \u53F3\u304C\u585E\u304C\u308B ? retreatLeft : retreatRight;
|
|
19777
|
+
if (\u6B21 === midX2) break;
|
|
19778
|
+
midX2 = \u6B21;
|
|
19762
19779
|
iter++;
|
|
19763
19780
|
}
|
|
19764
19781
|
}
|
|
19782
|
+
const lCorner = cornerRadiusFor(corner, (B.y - A.y) / 2, midX2 - A.x, B.x - midX2);
|
|
19765
19783
|
let verticalMidY = (A.y + B.y) / 2;
|
|
19766
19784
|
if (labelHalfW > 0) {
|
|
19767
19785
|
const labelBoxH = 36;
|
|
@@ -19799,10 +19817,10 @@ function routePath(from, to, fromSide, toSide, obstacles = [], detourSide, _from
|
|
|
19799
19817
|
}
|
|
19800
19818
|
}
|
|
19801
19819
|
if (edge?.overlay) {
|
|
19802
|
-
const exitEndX = midX2 - xDir *
|
|
19803
|
-
const enterStartX = midX2 + xDir *
|
|
19804
|
-
const midStartY = A.y + yDir *
|
|
19805
|
-
const midEndY = B.y - yDir *
|
|
19820
|
+
const exitEndX = midX2 - xDir * lCorner;
|
|
19821
|
+
const enterStartX = midX2 + xDir * lCorner;
|
|
19822
|
+
const midStartY = A.y + yDir * lCorner;
|
|
19823
|
+
const midEndY = B.y - yDir * lCorner;
|
|
19806
19824
|
const segments = [
|
|
19807
19825
|
{ len: Math.abs(exitEndX - A.x), midXVal: (A.x + exitEndX) / 2, midYVal: A.y },
|
|
19808
19826
|
{ len: Math.abs(midEndY - midStartY), midXVal: midX2, midYVal: (midStartY + midEndY) / 2 },
|
|
@@ -19811,10 +19829,10 @@ function routePath(from, to, fromSide, toSide, obstacles = [], detourSide, _from
|
|
|
19811
19829
|
const longest = segments.reduce((a, b) => b.len > a.len ? b : a);
|
|
19812
19830
|
return {
|
|
19813
19831
|
d: `M ${A.x} ${A.y}
|
|
19814
|
-
L ${midX2 - xDir *
|
|
19815
|
-
Q ${midX2} ${A.y}, ${midX2} ${A.y + yDir *
|
|
19816
|
-
L ${midX2} ${B.y - yDir *
|
|
19817
|
-
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}
|
|
19818
19836
|
L ${B.x} ${B.y}`,
|
|
19819
19837
|
labelX: longest.midXVal,
|
|
19820
19838
|
labelY: longest.midYVal,
|
|
@@ -19823,10 +19841,10 @@ function routePath(from, to, fromSide, toSide, obstacles = [], detourSide, _from
|
|
|
19823
19841
|
}
|
|
19824
19842
|
return {
|
|
19825
19843
|
d: `M ${A.x} ${A.y}
|
|
19826
|
-
L ${midX2 - xDir *
|
|
19827
|
-
Q ${midX2} ${A.y}, ${midX2} ${A.y + yDir *
|
|
19828
|
-
L ${midX2} ${B.y - yDir *
|
|
19829
|
-
Q ${midX2} ${B.y}, ${midX2 + xDir *
|
|
19844
|
+
L ${midX2 - xDir * lCorner} ${A.y}
|
|
19845
|
+
Q ${midX2} ${A.y}, ${midX2} ${A.y + yDir * lCorner}
|
|
19846
|
+
L ${midX2} ${B.y - yDir * lCorner}
|
|
19847
|
+
Q ${midX2} ${B.y}, ${midX2 + xDir * lCorner} ${B.y}
|
|
19830
19848
|
L ${B.x} ${B.y}`,
|
|
19831
19849
|
labelX: midX2,
|
|
19832
19850
|
labelY: verticalMidY,
|