sort layers

This commit is contained in:
hamid zarghami
2026-04-29 09:47:27 +03:30
parent 24872d9544
commit b252682509
3 changed files with 63 additions and 1 deletions
+33
View File
@@ -91,6 +91,7 @@ type EditorStoreType = {
updateObject: (id: string, updates: Partial<EditorObject>) => void;
deleteObject: (id: string) => void;
duplicateObject: (id: string) => void;
reorderObjects: (draggedId: string, targetId: string) => void;
selectedObjectId: string | null;
setSelectedObjectId: (id: string | null) => void;
selectedObjectIds: string[];
@@ -354,6 +355,38 @@ export const useEditorStore = create<EditorStoreType>((set, get) => {
selectedObjectId: duplicatedObject.id,
}));
},
reorderObjects: (draggedId, targetId) => {
if (draggedId === targetId) return;
const reorder = (items: EditorObject[]) => {
const fromIndex = items.findIndex((item) => item.id === draggedId);
const toIndex = items.findIndex((item) => item.id === targetId);
if (fromIndex === -1 || toIndex === -1) return items;
const nextItems = [...items];
const [movedItem] = nextItems.splice(fromIndex, 1);
nextItems.splice(toIndex, 0, movedItem);
return nextItems;
};
const state = get();
if (state.currentPageId) {
set((state) => ({
objects: reorder(state.objects),
pages: state.pages.map((page) =>
page.id === state.currentPageId
? { ...page, objects: reorder(page.objects) }
: page,
),
}));
return;
}
set((state) => ({
objects: reorder(state.objects),
}));
},
selectedObjectId: null,
setSelectedObjectId: (id) => {
set({