fix deleting multi-point elem during edit (#1892)

This commit is contained in:
David Luzar 2020-07-09 22:33:27 +02:00 committed by GitHub
parent 51a8ab65f3
commit 6e357c0291
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -52,49 +52,45 @@ function handleGroupEditingState(
export const actionDeleteSelected = register({
name: "deleteSelectedElements",
perform: (elements, appState) => {
if (
appState.editingLinearElement?.activePointIndex != null &&
appState.editingLinearElement?.activePointIndex > -1
) {
const { elementId } = appState.editingLinearElement;
if (appState.editingLinearElement) {
const { elementId, activePointIndex } = appState.editingLinearElement;
const element = LinearElementEditor.getElement(elementId);
if (element) {
if (!element) {
return false;
}
if (
// case: no point selected → delete whole element
activePointIndex == null ||
activePointIndex === -1 ||
// case: deleting last point
if (element.points.length < 2) {
const nextElements = elements.filter((el) => el.id !== element.id);
const nextAppState = handleGroupEditingState(appState, nextElements);
return {
elements: nextElements,
appState: {
...nextAppState,
editingLinearElement: null,
},
commitToHistory: false,
};
}
LinearElementEditor.movePoint(
element,
appState.editingLinearElement.activePointIndex,
"delete",
);
element.points.length < 2
) {
const nextElements = elements.filter((el) => el.id !== element.id);
const nextAppState = handleGroupEditingState(appState, nextElements);
return {
elements: elements,
elements: nextElements,
appState: {
...appState,
editingLinearElement: {
...appState.editingLinearElement,
activePointIndex:
appState.editingLinearElement.activePointIndex > 0
? appState.editingLinearElement.activePointIndex - 1
: 0,
},
...nextAppState,
editingLinearElement: null,
},
commitToHistory: true,
commitToHistory: false,
};
}
LinearElementEditor.movePoint(element, activePointIndex, "delete");
return {
elements: elements,
appState: {
...appState,
editingLinearElement: {
...appState.editingLinearElement,
activePointIndex: activePointIndex > 0 ? activePointIndex - 1 : 0,
},
},
commitToHistory: true,
};
}
let {