@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/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
- midX2 = dRight <= dLeft ? retreatRight : retreatLeft;
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 * corner;
8425
- const enterStartX = midX2 + xDir * corner;
8426
- const midStartY = A.y + yDir * corner;
8427
- const midEndY = B.y - yDir * corner;
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 * corner} ${A.y}
8437
- Q ${midX2} ${A.y}, ${midX2} ${A.y + yDir * corner}
8438
- L ${midX2} ${B.y - yDir * corner}
8439
- Q ${midX2} ${B.y}, ${midX2 + xDir * corner} ${B.y}
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 * corner} ${A.y}
8449
- Q ${midX2} ${A.y}, ${midX2} ${A.y + yDir * corner}
8450
- L ${midX2} ${B.y - yDir * corner}
8451
- Q ${midX2} ${B.y}, ${midX2 + xDir * corner} ${B.y}
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,