@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/react.js
CHANGED
|
@@ -7375,6 +7375,13 @@ var VERTICAL_DETOUR_CORNER = 14;
|
|
|
7375
7375
|
function verticalCornerDir(from, to) {
|
|
7376
7376
|
return to < from ? -1 : 1;
|
|
7377
7377
|
}
|
|
7378
|
+
function cornerRadiusFor(\u534A\u5F84, ...\u8D70\u308A) {
|
|
7379
|
+
return Math.min(\u534A\u5F84, ...\u8D70\u308A.map((v) => Math.abs(v)));
|
|
7380
|
+
}
|
|
7381
|
+
function runCrossesBox(\u8D70\u308A, \u7BB1) {
|
|
7382
|
+
if (\u8D70\u308A.y <= \u7BB1.cy - \u7BB1.h / 2 || \u8D70\u308A.y >= \u7BB1.cy + \u7BB1.h / 2) return false;
|
|
7383
|
+
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);
|
|
7384
|
+
}
|
|
7378
7385
|
var VERTICAL_DETOUR_EXIT = 45;
|
|
7379
7386
|
function nearestBoxDistance(anchorX, dir, verticalTop, verticalBottom, boxes) {
|
|
7380
7387
|
let nearest = Infinity;
|
|
@@ -8367,21 +8374,32 @@ function routePath(from, to, fromSide, toSide, obstacles = [], detourSide, _from
|
|
|
8367
8374
|
const labelIntersect = oTop < labelBottom && oBottom > labelTop;
|
|
8368
8375
|
return segIntersect || labelIntersect;
|
|
8369
8376
|
};
|
|
8377
|
+
const \u6A2A\u306E\u8D70\u308A\u304C\u585E\u304C\u308B = (mx) => labelObstacles.some((o) => {
|
|
8378
|
+
if (o.id === from.id || o.id === to.id) return false;
|
|
8379
|
+
return runCrossesBox({ y: A.y, x1: A.x, x2: mx }, o) || runCrossesBox({ y: B.y, x1: mx, x2: B.x }, o);
|
|
8380
|
+
});
|
|
8370
8381
|
let iter = 0;
|
|
8371
8382
|
while (iter < 12) {
|
|
8372
8383
|
const band = labelBand(midX2);
|
|
8373
|
-
const hit = labelObstacles.find((o) => intersects(o, band))
|
|
8384
|
+
const hit = labelObstacles.find((o) => intersects(o, band)) ?? labelObstacles.find(
|
|
8385
|
+
(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))
|
|
8386
|
+
);
|
|
8374
8387
|
if (!hit) break;
|
|
8375
8388
|
const hitLeft = hit.cx - hit.w / 2;
|
|
8376
8389
|
const hitRight = hit.cx + hit.w / 2;
|
|
8377
8390
|
const retreatRight = hitRight + labelHalfW + CLEARANCE_NODE_LABEL + 4;
|
|
8378
8391
|
const retreatLeft = hitLeft - labelHalfW - CLEARANCE_NODE_LABEL - 4;
|
|
8392
|
+
const \u53F3\u304C\u585E\u304C\u308B = \u6A2A\u306E\u8D70\u308A\u304C\u585E\u304C\u308B(retreatRight);
|
|
8393
|
+
const \u5DE6\u304C\u585E\u304C\u308B = \u6A2A\u306E\u8D70\u308A\u304C\u585E\u304C\u308B(retreatLeft);
|
|
8379
8394
|
const dRight = Math.abs(retreatRight - midX2);
|
|
8380
8395
|
const dLeft = Math.abs(retreatLeft - midX2);
|
|
8381
|
-
|
|
8396
|
+
const \u6B21 = \u53F3\u304C\u585E\u304C\u308B === \u5DE6\u304C\u585E\u304C\u308B ? dRight <= dLeft ? retreatRight : retreatLeft : \u53F3\u304C\u585E\u304C\u308B ? retreatLeft : retreatRight;
|
|
8397
|
+
if (\u6B21 === midX2) break;
|
|
8398
|
+
midX2 = \u6B21;
|
|
8382
8399
|
iter++;
|
|
8383
8400
|
}
|
|
8384
8401
|
}
|
|
8402
|
+
const lCorner = cornerRadiusFor(corner, (B.y - A.y) / 2, midX2 - A.x, B.x - midX2);
|
|
8385
8403
|
let verticalMidY = (A.y + B.y) / 2;
|
|
8386
8404
|
if (labelHalfW > 0) {
|
|
8387
8405
|
const labelBoxH = 36;
|
|
@@ -8419,10 +8437,10 @@ function routePath(from, to, fromSide, toSide, obstacles = [], detourSide, _from
|
|
|
8419
8437
|
}
|
|
8420
8438
|
}
|
|
8421
8439
|
if (edge?.overlay) {
|
|
8422
|
-
const exitEndX = midX2 - xDir *
|
|
8423
|
-
const enterStartX = midX2 + xDir *
|
|
8424
|
-
const midStartY = A.y + yDir *
|
|
8425
|
-
const midEndY = B.y - yDir *
|
|
8440
|
+
const exitEndX = midX2 - xDir * lCorner;
|
|
8441
|
+
const enterStartX = midX2 + xDir * lCorner;
|
|
8442
|
+
const midStartY = A.y + yDir * lCorner;
|
|
8443
|
+
const midEndY = B.y - yDir * lCorner;
|
|
8426
8444
|
const segments = [
|
|
8427
8445
|
{ len: Math.abs(exitEndX - A.x), midXVal: (A.x + exitEndX) / 2, midYVal: A.y },
|
|
8428
8446
|
{ len: Math.abs(midEndY - midStartY), midXVal: midX2, midYVal: (midStartY + midEndY) / 2 },
|
|
@@ -8431,10 +8449,10 @@ function routePath(from, to, fromSide, toSide, obstacles = [], detourSide, _from
|
|
|
8431
8449
|
const longest = segments.reduce((a, b) => b.len > a.len ? b : a);
|
|
8432
8450
|
return {
|
|
8433
8451
|
d: `M ${A.x} ${A.y}
|
|
8434
|
-
L ${midX2 - xDir *
|
|
8435
|
-
Q ${midX2} ${A.y}, ${midX2} ${A.y + yDir *
|
|
8436
|
-
L ${midX2} ${B.y - yDir *
|
|
8437
|
-
Q ${midX2} ${B.y}, ${midX2 + xDir *
|
|
8452
|
+
L ${midX2 - xDir * lCorner} ${A.y}
|
|
8453
|
+
Q ${midX2} ${A.y}, ${midX2} ${A.y + yDir * lCorner}
|
|
8454
|
+
L ${midX2} ${B.y - yDir * lCorner}
|
|
8455
|
+
Q ${midX2} ${B.y}, ${midX2 + xDir * lCorner} ${B.y}
|
|
8438
8456
|
L ${B.x} ${B.y}`,
|
|
8439
8457
|
labelX: longest.midXVal,
|
|
8440
8458
|
labelY: longest.midYVal,
|
|
@@ -8443,10 +8461,10 @@ function routePath(from, to, fromSide, toSide, obstacles = [], detourSide, _from
|
|
|
8443
8461
|
}
|
|
8444
8462
|
return {
|
|
8445
8463
|
d: `M ${A.x} ${A.y}
|
|
8446
|
-
L ${midX2 - xDir *
|
|
8447
|
-
Q ${midX2} ${A.y}, ${midX2} ${A.y + yDir *
|
|
8448
|
-
L ${midX2} ${B.y - yDir *
|
|
8449
|
-
Q ${midX2} ${B.y}, ${midX2 + xDir *
|
|
8464
|
+
L ${midX2 - xDir * lCorner} ${A.y}
|
|
8465
|
+
Q ${midX2} ${A.y}, ${midX2} ${A.y + yDir * lCorner}
|
|
8466
|
+
L ${midX2} ${B.y - yDir * lCorner}
|
|
8467
|
+
Q ${midX2} ${B.y}, ${midX2 + xDir * lCorner} ${B.y}
|
|
8450
8468
|
L ${B.x} ${B.y}`,
|
|
8451
8469
|
labelX: midX2,
|
|
8452
8470
|
labelY: verticalMidY,
|