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