|
@@ -10,6 +10,7 @@ import {
|
|
|
getElementsInGroup,
|
|
|
addToGroup,
|
|
|
removeFromSelectedGroups,
|
|
|
+ isElementInGroup,
|
|
|
} from "../groups";
|
|
|
import { getNonDeletedElements } from "../element";
|
|
|
|
|
@@ -58,13 +59,32 @@ export const actionGroup = register({
|
|
|
),
|
|
|
});
|
|
|
});
|
|
|
+ // keep the z order within the group the same, but move them
|
|
|
+ // to the z order of the highest element in the layer stack
|
|
|
+ const elementsInGroup = getElementsInGroup(updatedElements, newGroupId);
|
|
|
+ const lastElementInGroup = elementsInGroup[elementsInGroup.length - 1];
|
|
|
+ const lastGroupElementIndex = updatedElements.lastIndexOf(
|
|
|
+ lastElementInGroup,
|
|
|
+ );
|
|
|
+ const elementsAfterGroup = updatedElements.slice(lastGroupElementIndex + 1);
|
|
|
+ const elementsBeforeGroup = updatedElements
|
|
|
+ .slice(0, lastGroupElementIndex)
|
|
|
+ .filter(
|
|
|
+ (updatedElement) => !isElementInGroup(updatedElement, newGroupId),
|
|
|
+ );
|
|
|
+ const updatedElementsInOrder = [
|
|
|
+ ...elementsBeforeGroup,
|
|
|
+ ...elementsInGroup,
|
|
|
+ ...elementsAfterGroup,
|
|
|
+ ];
|
|
|
+
|
|
|
return {
|
|
|
appState: selectGroup(
|
|
|
newGroupId,
|
|
|
{ ...appState, selectedGroupIds: {} },
|
|
|
- getNonDeletedElements(updatedElements),
|
|
|
+ getNonDeletedElements(updatedElementsInOrder),
|
|
|
),
|
|
|
- elements: updatedElements,
|
|
|
+ elements: updatedElementsInOrder,
|
|
|
commitToHistory: true,
|
|
|
};
|
|
|
},
|