|  | @@ -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,
 | 
	
		
			
				|  |  |      };
 | 
	
		
			
				|  |  |    },
 |