Browse Source

fix: move doBoundsIntersect from element/src/bounds.ts to common/math/src/utils.ts (#9650)

move doBoundsIntersect to math/utils

Co-authored-by: dwelle <5153846+dwelle@users.noreply.github.com>
pull/9094/merge
zsviczian 6 months ago committed by GitHub
parent
commit
84e96e9393
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
  1. 7
      packages/element/src/binding.ts
  2. 14
      packages/element/src/bounds.ts
  3. 2
      packages/element/src/collision.ts
  4. 2
      packages/excalidraw/lasso/utils.ts
  5. 3
      packages/math/src/curve.ts
  6. 16
      packages/math/src/utils.ts

7
packages/element/src/binding.ts

@ -24,6 +24,7 @@ import { @@ -24,6 +24,7 @@ import {
pointsEqual,
lineSegmentIntersectionPoints,
PRECISION,
doBoundsIntersect,
} from "@excalidraw/math";
import type { LocalPoint, Radians } from "@excalidraw/math";
@ -32,11 +33,7 @@ import type { AppState } from "@excalidraw/excalidraw/types"; @@ -32,11 +33,7 @@ import type { AppState } from "@excalidraw/excalidraw/types";
import type { MapEntry, Mutable } from "@excalidraw/common/utility-types";
import {
getCenterForBounds,
getElementBounds,
doBoundsIntersect,
} from "./bounds";
import { getCenterForBounds, getElementBounds } from "./bounds";
import { intersectElementWithLineSegment } from "./collision";
import { distanceToElement } from "./distance";
import {

14
packages/element/src/bounds.ts

@ -1165,20 +1165,6 @@ export const getCenterForBounds = (bounds: Bounds): GlobalPoint => @@ -1165,20 +1165,6 @@ export const getCenterForBounds = (bounds: Bounds): GlobalPoint =>
bounds[1] + (bounds[3] - bounds[1]) / 2,
);
export const doBoundsIntersect = (
bounds1: Bounds | null,
bounds2: Bounds | null,
): boolean => {
if (bounds1 == null || bounds2 == null) {
return false;
}
const [minX1, minY1, maxX1, maxY1] = bounds1;
const [minX2, minY2, maxX2, maxY2] = bounds2;
return minX1 < maxX2 && maxX1 > minX2 && minY1 < maxY2 && maxY1 > minY2;
};
/**
* Get the axis-aligned bounding box for a given element
*/

2
packages/element/src/collision.ts

@ -11,6 +11,7 @@ import { @@ -11,6 +11,7 @@ import {
vectorFromPoint,
vectorNormalize,
vectorScale,
doBoundsIntersect,
} from "@excalidraw/math";
import {
@ -25,7 +26,6 @@ import type { FrameNameBounds } from "@excalidraw/excalidraw/types"; @@ -25,7 +26,6 @@ import type { FrameNameBounds } from "@excalidraw/excalidraw/types";
import { isPathALoop } from "./utils";
import {
type Bounds,
doBoundsIntersect,
elementCenterPoint,
getCenterForBounds,
getElementBounds,

2
packages/excalidraw/lasso/utils.ts

@ -4,12 +4,12 @@ import { @@ -4,12 +4,12 @@ import {
polygonFromPoints,
lineSegment,
polygonIncludesPointNonZero,
doBoundsIntersect,
} from "@excalidraw/math";
import {
type Bounds,
computeBoundTextPosition,
doBoundsIntersect,
getBoundTextElement,
getElementBounds,
intersectElementWithLineSegment,

3
packages/math/src/curve.ts

@ -1,8 +1,9 @@ @@ -1,8 +1,9 @@
import { doBoundsIntersect, type Bounds } from "@excalidraw/element";
import { type Bounds } from "@excalidraw/element";
import { isPoint, pointDistance, pointFrom, pointFromVector } from "./point";
import { vector, vectorNormal, vectorNormalize, vectorScale } from "./vector";
import { LegendreGaussN24CValues, LegendreGaussN24TValues } from "./constants";
import { doBoundsIntersect } from "./utils";
import type { Curve, GlobalPoint, LineSegment, LocalPoint } from "./types";

16
packages/math/src/utils.ts

@ -1,3 +1,5 @@ @@ -1,3 +1,5 @@
import { type Bounds } from "@excalidraw/element";
export const PRECISION = 10e-5;
export const clamp = (value: number, min: number, max: number) => {
@ -31,3 +33,17 @@ export const isFiniteNumber = (value: any): value is number => { @@ -31,3 +33,17 @@ export const isFiniteNumber = (value: any): value is number => {
export const isCloseTo = (a: number, b: number, precision = PRECISION) =>
Math.abs(a - b) < precision;
export const doBoundsIntersect = (
bounds1: Bounds | null,
bounds2: Bounds | null,
): boolean => {
if (bounds1 == null || bounds2 == null) {
return false;
}
const [minX1, minY1, maxX1, maxY1] = bounds1;
const [minX2, minY2, maxX2, maxY2] = bounds2;
return minX1 < maxX2 && maxX1 > minX2 && minY1 < maxY2 && maxY1 > minY2;
};

Loading…
Cancel
Save