Do not trigger arrow binding for linear elements

This commit is contained in:
Mark Tolmacs
2025-08-13 20:30:38 +02:00
parent 8c751cec45
commit c9f553b78d

View File

@@ -2,6 +2,7 @@ import { pointFrom } from "@excalidraw/math";
import { bindOrUnbindBindingElement } from "@excalidraw/element/binding";
import {
isSimpleArrow,
isValidPolygon,
LinearElementEditor,
newElementWith,
@@ -83,28 +84,30 @@ export const actionFinalize = register<FormData>({
app.scene,
);
const newArrow = !appState.selectedLinearElement?.selectedPointsIndices;
if (isSimpleArrow(element)) {
const newArrow = !appState.selectedLinearElement?.selectedPointsIndices;
const selectedPointsIndices = newArrow
? [element.points.length - 1] // New arrow creation
: appState.selectedLinearElement.selectedPointsIndices;
const selectedPointsIndices = newArrow
? [element.points.length - 1] // New arrow creation
: appState.selectedLinearElement.selectedPointsIndices;
const draggedPoints: PointsPositionUpdates =
selectedPointsIndices.reduce((map, index) => {
map.set(index, {
point: LinearElementEditor.pointFromAbsoluteCoords(
element,
pointFrom<GlobalPoint>(sceneCoords.x, sceneCoords.y),
elementsMap,
),
});
const draggedPoints: PointsPositionUpdates =
selectedPointsIndices.reduce((map, index) => {
map.set(index, {
point: LinearElementEditor.pointFromAbsoluteCoords(
element,
pointFrom<GlobalPoint>(sceneCoords.x, sceneCoords.y),
elementsMap,
),
});
return map;
}, new Map()) ?? new Map();
return map;
}, new Map()) ?? new Map();
bindOrUnbindBindingElement(element, draggedPoints, scene, appState, {
newArrow,
});
bindOrUnbindBindingElement(element, draggedPoints, scene, appState, {
newArrow,
});
}
if (linearElementEditor !== appState.selectedLinearElement) {
// `handlePointerUp()` updated the linear element instance,