[Bug]: The order of shapes is not guaranteed in reparentShapes()
### What happened?

When multiple shapes are selected and dragged over or out of a frame shape, they get reparented. However, during this process, the order of the selected shapes changes.

The issue arises because, inside reparentShapes(), the indices from indices are simply assigned to shapesToReparent in a loop. To preserve the original order, shapesToReparent should be sorted by their index before the loop runs. This ensures that new indices are assigned in the correct order.

I am attaching a video demonstrating the issue.

[without sorting]
https://github.com/user-attachments/assets/81130860-1578-476c-ba69-fe078ad44406

[with sorting]
https://github.com/user-attachments/assets/abb5f6a2-ddbb-4d80-9efd-2f416a1d6cb2

To fix the issue, modifying the reparentShapes() function as follows should work:

Change this line:
const shapesToReparent = compact(ids.map((id) => this.getShape(id)));
To:
const shapesToReparent = compact(ids.map((id) => this.getShape(id))).sort(sortByIndex);

This ensures that the shapes are sorted by their index before being processed, preserving their original selection order during reparenting.

### How can we reproduce the bug?

1. Add a frame shape along with multiple other shapes.
2. Select multiple shapes one by one while holding the Shift key to enter multi-select mode.
3. Drag the multi-selected shapes over the frame shape.
4. The shapes get reparented, but their order changes from the original selection order.

### What browsers are you seeing the problem on?

Chrome

### Where did this happen?

The developer package

### Contact Details

sjh7397@gmail.com

### Code of Conduct

- [x] I agree to follow this project's Code of Conduct