[skip ci] No jumping at the beginning

This commit is contained in:
Mark Tolmacs
2025-03-27 20:12:01 +01:00
parent c8ade51b53
commit ea5ad1412c
2 changed files with 10 additions and 59 deletions

View File

@@ -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<AppProps, AppState> {
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<GlobalPoint>(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<GlobalPoint>(gridX, gridY),
pointFrom<GlobalPoint>(
gridX,
hoveredElement.y + hoveredElement.height / 2,
),
),
2 * FIXED_BINDING_DISTANCE,
)[0] ??
intersectElementWithLineSegment(
hoveredElement,
lineSegment(
pointFrom<GlobalPoint>(gridX, gridY),
pointFrom<GlobalPoint>(
hoveredElement.x + hoveredElement.width / 2,
gridY,
),
),
2 * FIXED_BINDING_DISTANCE,
)[0] ??
pointFrom<GlobalPoint>(gridX, gridY);
}
element = arrow;
element = {
...arrow,
x,
y,
};
} else {
element = newLinearElement({
type: elementType,