import { documentCommands } from "@commands/document"; import { createCommandRegistry } from "@commands/registry"; import { selectionCommands } from "@commands/selection"; import { viewportCommands } from "@commands/viewport"; import { createInitialAppState } from "@editor/initial-state"; import { createAppStore } from "@editor/store"; export type ImageStudioApp = ReturnType; export function createImageStudioApp(options?: { documentName?: string; createDefaultArtboard?: boolean }) { const registry = createCommandRegistry([...viewportCommands, ...selectionCommands, ...documentCommands]); const store = createAppStore(createInitialAppState(options?.documentName), registry); if (options?.createDefaultArtboard !== false) { store.dispatch("document.addArtboard", { id: crypto.randomUUID(), name: "Artboard 1", bounds: { x: -400, y: -300, w: 800, h: 600 }, }); } return { registry, store, }; }