Restore accidentally reverted changes

This commit is contained in:
Mark Tolmacs 2025-03-15 19:05:27 +01:00
parent f23a26b5b2
commit 224a69aa10

View file

@ -487,32 +487,31 @@ export const bindLinearElement = (
return; return;
} }
const binding: PointBinding | FixedPointBinding = { let binding: PointBinding | FixedPointBinding = {
elementId: hoveredElement.id, elementId: hoveredElement.id,
...(isElbowArrow(linearElement) ...normalizePointBinding(
? { calculateFocusAndGap(
...calculateFixedPointForElbowArrowBinding( linearElement,
linearElement, hoveredElement,
hoveredElement, startOrEnd,
startOrEnd, elementsMap,
elementsMap, ),
), hoveredElement,
focus: 0, ),
gap: 0,
}
: {
...normalizePointBinding(
calculateFocusAndGap(
linearElement,
hoveredElement,
startOrEnd,
elementsMap,
),
hoveredElement,
),
}),
}; };
if (isElbowArrow(linearElement)) {
binding = {
...binding,
...calculateFixedPointForElbowArrowBinding(
linearElement,
hoveredElement,
startOrEnd,
elementsMap,
),
};
}
mutateElement(linearElement, { mutateElement(linearElement, {
[startOrEnd === "start" ? "startBinding" : "endBinding"]: binding, [startOrEnd === "start" ? "startBinding" : "endBinding"]: binding,
}); });
@ -1303,23 +1302,35 @@ const updateBoundPoint = (
pointDistance(adjacentPoint, edgePointAbsolute) + pointDistance(adjacentPoint, edgePointAbsolute) +
pointDistance(adjacentPoint, center) + pointDistance(adjacentPoint, center) +
Math.max(bindableElement.width, bindableElement.height) * 2; Math.max(bindableElement.width, bindableElement.height) * 2;
const intersections = intersectElementWithLineSegment( const intersections = [
bindableElement, ...intersectElementWithLineSegment(
lineSegment<GlobalPoint>( bindableElement,
adjacentPoint, lineSegment<GlobalPoint>(
pointFromVector(
vectorScale(
vectorNormalize(vectorFromPoint(focusPointAbsolute, adjacentPoint)),
interceptorLength,
),
adjacentPoint, adjacentPoint,
pointFromVector(
vectorScale(
vectorNormalize(
vectorFromPoint(focusPointAbsolute, adjacentPoint),
),
interceptorLength,
),
adjacentPoint,
),
), ),
binding.gap,
).sort(
(g, h) =>
pointDistanceSq(g, adjacentPoint) - pointDistanceSq(h, adjacentPoint),
), ),
binding.gap, // Fallback when arrow doesn't point to the shape
).sort( pointFromVector(
(g, h) => vectorScale(
pointDistanceSq(g, adjacentPoint) - pointDistanceSq(h, adjacentPoint), vectorNormalize(vectorFromPoint(focusPointAbsolute, adjacentPoint)),
); pointDistance(adjacentPoint, edgePointAbsolute),
),
adjacentPoint,
),
];
if (intersections.length > 1) { if (intersections.length > 1) {
// The adjacent point is outside the shape (+ gap) // The adjacent point is outside the shape (+ gap)