@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/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
- midX2 = dRight <= dLeft ? retreatRight : retreatLeft;
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 * corner;
19803
- const enterStartX = midX2 + xDir * corner;
19804
- const midStartY = A.y + yDir * corner;
19805
- const midEndY = B.y - yDir * corner;
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 * corner} ${A.y}
19815
- Q ${midX2} ${A.y}, ${midX2} ${A.y + yDir * corner}
19816
- L ${midX2} ${B.y - yDir * corner}
19817
- Q ${midX2} ${B.y}, ${midX2 + xDir * corner} ${B.y}
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 * corner} ${A.y}
19827
- Q ${midX2} ${A.y}, ${midX2} ${A.y + yDir * corner}
19828
- L ${midX2} ${B.y - yDir * corner}
19829
- Q ${midX2} ${B.y}, ${midX2 + xDir * corner} ${B.y}
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,