Refactors

This commit is contained in:
Mark Tolmacs 2025-03-02 17:55:37 +01:00
parent a54322a34f
commit 2f02d72741
2 changed files with 46 additions and 41 deletions

View file

@ -336,55 +336,60 @@ export class LinearElementEditor {
LinearElementEditor.movePoints( LinearElementEditor.movePoints(
element, element,
selectedPointsIndices.map((pointIndex) => { selectedPointsIndices.map((pointIndex) => {
let p = pointFrom<GlobalPoint>( let newPointPosition = pointFrom<LocalPoint>(
element.x + element.points[pointIndex][0] + deltaX, element.points[pointIndex][0] + deltaX,
element.y + element.points[pointIndex][1] + deltaY, element.points[pointIndex][1] + deltaY,
); );
if ( // Check if point dragging is happening
pointIndex === lastClickedPoint && if (pointIndex === lastClickedPoint) {
(pointIndex === 0 || pointIndex === element.points.length - 1) let globalNewPointPosition = pointFrom<GlobalPoint>(
) { scenePointerX - linearElementEditor.pointerOffset.x,
const hoveredElement = getHoveredElementForBinding( scenePointerY - linearElementEditor.pointerOffset.y,
{
x: scenePointerX,
y: scenePointerY,
},
app.scene.getNonDeletedElements(),
app.scene.getNonDeletedElementsMap(),
app.state.zoom,
elbowed,
elbowed,
); );
if (hoveredElement) {
const newPoints = Array.from(element.points); if (
newPoints[pointIndex] = pointFrom( pointIndex === 0 ||
element.points[pointIndex][0] + deltaX, pointIndex === element.points.length - 1
element.points[pointIndex][1] + deltaY, ) {
); const hoveredElement = getHoveredElementForBinding(
p = bindPointToSnapToElementOutline(
{ {
...element, x: scenePointerX,
points: newPoints, y: scenePointerY,
}, },
hoveredElement, app.scene.getNonDeletedElements(),
pointIndex === 0 ? "start" : "end", app.scene.getNonDeletedElementsMap(),
app.state.zoom,
elbowed,
elbowed,
); );
if (hoveredElement) {
const newPoints = Array.from(element.points);
newPoints[pointIndex] = pointFrom(
element.points[pointIndex][0] + deltaX,
element.points[pointIndex][1] + deltaY,
);
globalNewPointPosition = bindPointToSnapToElementOutline(
{
...element,
points: newPoints,
},
hoveredElement,
pointIndex === 0 ? "start" : "end",
);
}
} }
newPointPosition = LinearElementEditor.createPointAt(
element,
elementsMap,
globalNewPointPosition[0],
globalNewPointPosition[1],
event[KEYS.CTRL_OR_CMD] ? null : app.getEffectiveGridSize(),
);
} }
const newPointPosition: LocalPoint =
pointIndex === lastClickedPoint
? LinearElementEditor.createPointAt(
element,
elementsMap,
p[0],
p[1],
// p[0] - linearElementEditor.pointerOffset.x,
// p[1] - linearElementEditor.pointerOffset.y,
event[KEYS.CTRL_OR_CMD] ? null : app.getEffectiveGridSize(),
)
: pointFrom(p[0] - element.x, p[1] - element.y);
return { return {
index: pointIndex, index: pointIndex,
point: newPointPosition, point: newPointPosition,

View file

@ -781,7 +781,7 @@ describe("Test Transform", () => {
expect((arrow as ExcalidrawArrowElement).endBinding).toStrictEqual({ expect((arrow as ExcalidrawArrowElement).endBinding).toStrictEqual({
elementId: "rect-1", elementId: "rect-1",
focus: -0, focus: -0,
gap: 5, gap: FIXED_BINDING_DISTANCE,
}); });
expect(rect.boundElements).toStrictEqual([ expect(rect.boundElements).toStrictEqual([
{ {