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({ export const actionDeleteSelected = register({
name: "deleteSelectedElements", name: "deleteSelectedElements",
perform: (elements, appState) => { perform: (elements, appState) => {
if ( if (appState.editingLinearElement) {
appState.editingLinearElement?.activePointIndex != null && const { elementId, activePointIndex } = appState.editingLinearElement;
appState.editingLinearElement?.activePointIndex > -1
) {
const { elementId } = appState.editingLinearElement;
const element = LinearElementEditor.getElement(elementId); 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 // case: deleting last point
if (element.points.length < 2) { element.points.length < 2
const nextElements = elements.filter((el) => el.id !== element.id); ) {
const nextAppState = handleGroupEditingState(appState, nextElements); 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",
);
return { return {
elements: elements, elements: nextElements,
appState: { appState: {
...appState, ...nextAppState,
editingLinearElement: { editingLinearElement: null,
...appState.editingLinearElement,
activePointIndex:
appState.editingLinearElement.activePointIndex > 0
? appState.editingLinearElement.activePointIndex - 1
: 0,
},
}, },
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 { let {