mirror of
https://github.com/excalidraw/excalidraw.git
synced 2025-10-13 19:19:49 +02:00
Simplify state
This commit is contained in:
@@ -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),
|
|
||||||
),
|
),
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@@ -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 (
|
||||||
|
@@ -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;
|
||||||
|
@@ -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,
|
||||||
),
|
),
|
||||||
|
Reference in New Issue
Block a user