diff --git a/packages/element/src/newElement.ts b/packages/element/src/newElement.ts index 53a2f05aed..437dee94e0 100644 --- a/packages/element/src/newElement.ts +++ b/packages/element/src/newElement.ts @@ -98,28 +98,6 @@ const _newElementBase = ( ...rest }: ElementConstructorOpts & Omit, "type">, ) => { - // NOTE (mtolmacs): This is a temporary check to detect extremely large - // element position or sizing - if ( - x < -1e6 || - x > 1e6 || - y < -1e6 || - y > 1e6 || - width < -1e6 || - width > 1e6 || - height < -1e6 || - height > 1e6 - ) { - console.error("New element size or position is too large", { - x, - y, - width, - height, - // @ts-ignore - points: rest.points, - }); - } - // assign type to guard against excess properties const element: Merge = { id: rest.id || randomId(), diff --git a/packages/excalidraw/components/App.tsx b/packages/excalidraw/components/App.tsx index bec9e9665d..2bf9664043 100644 --- a/packages/excalidraw/components/App.tsx +++ b/packages/excalidraw/components/App.tsx @@ -16,7 +16,6 @@ import { vectorSubtract, vectorDot, vectorNormalize, - lineSegment, } from "@excalidraw/math"; import { isPointInShape } from "@excalidraw/utils/collision"; import { getSelectionBoxShape } from "@excalidraw/utils/shape"; @@ -121,7 +120,6 @@ import { updateBoundElements, getSuggestedBindingsForArrows, getOutlineAvoidingPoint, - FIXED_BINDING_DISTANCE, } from "@excalidraw/element/binding"; import { LinearElementEditor } from "@excalidraw/element/linearElementEditor"; @@ -233,7 +231,6 @@ import { hitElementBoundText, hitElementBoundingBoxOnly, hitElementItself, - intersectElementWithLineSegment, } from "@excalidraw/element/collision"; import { getVisibleSceneBounds } from "@excalidraw/element/bounds"; @@ -7866,43 +7863,19 @@ class App extends React.Component { this.state.currentItemArrowType === ARROW_TYPE.elbow ? [] : null, }); - const hoveredElement = getHoveredElementForBinding( - { x: gridX, y: gridY }, - this.scene.getNonDeletedElements(), - this.scene.getNonDeletedElementsMap(), + const [x, y] = getOutlineAvoidingPoint( + arrow, + pointFrom(gridX, gridY), + 0, + this.scene, this.state.zoom, - true, - this.state.currentItemArrowType === ARROW_TYPE.elbow, ); - if (hoveredElement) { - [arrow.x, arrow.y] = - intersectElementWithLineSegment( - hoveredElement, - lineSegment( - pointFrom(gridX, gridY), - pointFrom( - gridX, - hoveredElement.y + hoveredElement.height / 2, - ), - ), - 2 * FIXED_BINDING_DISTANCE, - )[0] ?? - intersectElementWithLineSegment( - hoveredElement, - lineSegment( - pointFrom(gridX, gridY), - pointFrom( - hoveredElement.x + hoveredElement.width / 2, - gridY, - ), - ), - 2 * FIXED_BINDING_DISTANCE, - )[0] ?? - pointFrom(gridX, gridY); - } - - element = arrow; + element = { + ...arrow, + x, + y, + }; } else { element = newLinearElement({ type: elementType,