32 lines
723 B
TypeScript
32 lines
723 B
TypeScript
import type { Scene } from "@/lib/studio-types";
|
|
|
|
export const STUDIO_HISTORY_LIMIT = 50;
|
|
|
|
export interface StudioHistorySnapshot {
|
|
scenes: Scene[];
|
|
activeSceneId: string;
|
|
selectedLayerId: string | null;
|
|
}
|
|
|
|
export function cloneScenes(scenes: Scene[]): Scene[] {
|
|
return scenes.map((scene) => ({
|
|
...scene,
|
|
layers: scene.layers.map((layer) => ({
|
|
...layer,
|
|
props: { ...layer.props },
|
|
})),
|
|
}));
|
|
}
|
|
|
|
export function captureHistorySnapshot(state: {
|
|
scenes: Scene[];
|
|
activeSceneId: string;
|
|
selectedLayerId: string | null;
|
|
}): StudioHistorySnapshot {
|
|
return {
|
|
scenes: cloneScenes(state.scenes),
|
|
activeSceneId: state.activeSceneId,
|
|
selectedLayerId: state.selectedLayerId,
|
|
};
|
|
}
|