Simplify state

This commit is contained in:
Mark Tolmacs
2025-08-30 16:02:32 +02:00
parent 6680120369
commit 92b9051838
4 changed files with 11 additions and 14 deletions

View File

@@ -303,8 +303,7 @@ const bindingStrategyForNewSimpleArrowEndpointDragging = (
// With new arrows it represents the continuous dragging of the end point // With new arrows it represents the continuous dragging of the end point
if (endDragged) { if (endDragged) {
const arrowOriginalStartPoint = const origin = appState?.selectedLinearElement?.pointerDownState.origin;
appState?.selectedLinearElement?.pointerDownState.arrowOriginalStartPoint;
// Inside -> inside binding // Inside -> inside binding
if (hit && arrow.startBinding?.elementId === hit.id) { if (hit && arrow.startBinding?.elementId === hit.id) {
@@ -317,7 +316,7 @@ const bindingStrategyForNewSimpleArrowEndpointDragging = (
start: { start: {
mode: "inside", mode: "inside",
element: hit, element: hit,
focusPoint: arrowOriginalStartPoint ?? center, focusPoint: origin ?? center,
}, },
end: { mode: "inside", element: hit, focusPoint: point }, end: { mode: "inside", element: hit, focusPoint: point },
}; };
@@ -337,12 +336,11 @@ const bindingStrategyForNewSimpleArrowEndpointDragging = (
mode: otherIsInsideBinding ? "inside" : "orbit", mode: otherIsInsideBinding ? "inside" : "orbit",
element: otherElement, element: otherElement,
focusPoint: otherIsInsideBinding focusPoint: otherIsInsideBinding
? arrowOriginalStartPoint ?? pointFrom<GlobalPoint>(arrow.x, arrow.y) ? origin ?? pointFrom<GlobalPoint>(arrow.x, arrow.y)
: snapToCenter( : snapToCenter(
otherElement, otherElement,
elementsMap, elementsMap,
arrowOriginalStartPoint ?? origin ?? pointFrom<GlobalPoint>(arrow.x, arrow.y),
pointFrom<GlobalPoint>(arrow.x, arrow.y),
), ),
}; };

View File

@@ -135,13 +135,12 @@ export class LinearElementEditor {
prevSelectedPointsIndices: readonly number[] | null; prevSelectedPointsIndices: readonly number[] | null;
/** index */ /** index */
lastClickedPoint: number; lastClickedPoint: number;
origin: Readonly<{ x: number; y: number }> | null; origin: Readonly<GlobalPoint> | null;
segmentMidpoint: { segmentMidpoint: {
value: GlobalPoint | null; value: GlobalPoint | null;
index: number | null; index: number | null;
added: boolean; added: boolean;
}; };
arrowOriginalStartPoint?: GlobalPoint;
arrowStartIsInside: boolean; arrowStartIsInside: boolean;
}>; }>;
@@ -631,7 +630,7 @@ export class LinearElementEditor {
customLineAngle: null, customLineAngle: null,
pointerDownState: { pointerDownState: {
...editingLinearElement.pointerDownState, ...editingLinearElement.pointerDownState,
arrowOriginalStartPoint: undefined, origin: null,
arrowStartIsInside: false, arrowStartIsInside: false,
}, },
}; };
@@ -933,7 +932,7 @@ export class LinearElementEditor {
pointerDownState: { pointerDownState: {
prevSelectedPointsIndices: linearElementEditor.selectedPointsIndices, prevSelectedPointsIndices: linearElementEditor.selectedPointsIndices,
lastClickedPoint: -1, lastClickedPoint: -1,
origin: { x: scenePointer.x, y: scenePointer.y }, origin: pointFrom<GlobalPoint>(scenePointer.x, scenePointer.y),
segmentMidpoint: { segmentMidpoint: {
value: segmentMidpoint, value: segmentMidpoint,
index: segmentMidpointIndex, index: segmentMidpointIndex,
@@ -994,7 +993,7 @@ export class LinearElementEditor {
pointerDownState: { pointerDownState: {
prevSelectedPointsIndices: linearElementEditor.selectedPointsIndices, prevSelectedPointsIndices: linearElementEditor.selectedPointsIndices,
lastClickedPoint: clickedPointIndex, lastClickedPoint: clickedPointIndex,
origin: { x: scenePointer.x, y: scenePointer.y }, origin: pointFrom<GlobalPoint>(scenePointer.x, scenePointer.y),
segmentMidpoint: { segmentMidpoint: {
value: segmentMidpoint, value: segmentMidpoint,
index: segmentMidpointIndex, index: segmentMidpointIndex,
@@ -1525,7 +1524,7 @@ export class LinearElementEditor {
const origin = linearElementEditor.pointerDownState.origin!; const origin = linearElementEditor.pointerDownState.origin!;
const dist = pointDistance( const dist = pointDistance(
pointFrom(origin.x, origin.y), origin,
pointFrom(pointerCoords.x, pointerCoords.y), pointFrom(pointerCoords.x, pointerCoords.y),
); );
if ( if (

View File

@@ -280,7 +280,7 @@ export const actionFinalize = register<FormData>({
: selectedLinearElement.isEditing, : selectedLinearElement.isEditing,
pointerDownState: { pointerDownState: {
...selectedLinearElement.pointerDownState, ...selectedLinearElement.pointerDownState,
arrowOriginalStartPoint: undefined, origin: null,
}, },
} }
: selectedLinearElement; : selectedLinearElement;

View File

@@ -8346,7 +8346,7 @@ class App extends React.Component<AppProps, AppState> {
pointerDownState: { pointerDownState: {
...linearElementEditor.pointerDownState, ...linearElementEditor.pointerDownState,
lastClickedPoint: endIdx, lastClickedPoint: endIdx,
arrowOriginalStartPoint: pointFrom<GlobalPoint>( origin: pointFrom<GlobalPoint>(
pointerDownState.origin.x, pointerDownState.origin.x,
pointerDownState.origin.y, pointerDownState.origin.y,
), ),