import { vi } from "vitest"; import { defineToolcraft } from "../../schema/define-toolcraft"; import type { ToolcraftSourceAssetCoordinator } from "../../source-assets/source-asset-coordinator"; import { createToolcraftState } from "../../state/create-template-state"; import { createToolcraftExternalStore } from "../../state/toolcraft-external-store"; import { useToolcraftSourceAssetCoordinator } from "./toolcraft-source-asset-context"; export function ToolcraftSourceAssetCoordinatorProbe({ capture, }: { capture: (coordinator: ToolcraftSourceAssetCoordinator) => void; }): null { capture(useToolcraftSourceAssetCoordinator()); return null; } export function createTestSourceAssetCoordinator( overrides: Partial = {}, ): ToolcraftSourceAssetCoordinator { const idleOperation = Object.freeze({ phase: "idle" as const, target: "source.test", }); return { cancelTarget: vi.fn(), clearPresentationFeedback: vi.fn(), dispose: vi.fn(async () => undefined), getOperation: () => idleOperation, getPresentation: () => null, hydrateBinaryMedia: vi.fn(async () => undefined), hydrateModels: vi.fn(async () => undefined), importBatch: vi.fn(async () => ({ assetIds: [] as const, kind: "committed" as const, })), repairModel: vi.fn(async () => ({ kind: "cancelled" as const })), reportPresentationFeedback: vi.fn(), subscribe: () => () => undefined, ...overrides, }; } export function createTestSourceAssetStore() { return createToolcraftExternalStore( createToolcraftState( defineToolcraft({ canvas: { enabled: true, upload: true }, panels: {} }), ), ); }