import type { ComponentProps } from 'react'; import { UnifiedCreationPage } from './UnifiedCreationPage'; import type { UnifiedCreationSpec } from './unifiedCreationSpecs'; import { Match3DCreationWorkspace } from './workspaces/Match3DCreationWorkspace'; import { PuzzleCreationWorkspace } from './workspaces/PuzzleCreationWorkspace'; import { JumpHopCreationWorkspace } from './workspaces/JumpHopCreationWorkspace'; import { WoodenFishCreationWorkspace } from './workspaces/WoodenFishCreationWorkspace'; type PuzzleCreationWorkspaceProps = ComponentProps< typeof PuzzleCreationWorkspace >; type Match3DCreationWorkspaceProps = ComponentProps< typeof Match3DCreationWorkspace >; type JumpHopCreationWorkspaceProps = ComponentProps< typeof JumpHopCreationWorkspace >; type WoodenFishCreationWorkspaceProps = ComponentProps< typeof WoodenFishCreationWorkspace >; type UnifiedCreationWorkspaceBaseProps = { spec: UnifiedCreationSpec; }; type PuzzleUnifiedCreationWorkspaceProps = UnifiedCreationWorkspaceBaseProps & { playId: 'puzzle'; } & PuzzleCreationWorkspaceProps; type Match3DUnifiedCreationWorkspaceProps = UnifiedCreationWorkspaceBaseProps & { playId: 'match3d'; } & Match3DCreationWorkspaceProps; type JumpHopUnifiedCreationWorkspaceProps = UnifiedCreationWorkspaceBaseProps & { playId: 'jump-hop'; } & JumpHopCreationWorkspaceProps; type WoodenFishUnifiedCreationWorkspaceProps = UnifiedCreationWorkspaceBaseProps & { playId: 'wooden-fish'; } & WoodenFishCreationWorkspaceProps; export type UnifiedCreationWorkspaceProps = | PuzzleUnifiedCreationWorkspaceProps | Match3DUnifiedCreationWorkspaceProps | JumpHopUnifiedCreationWorkspaceProps | WoodenFishUnifiedCreationWorkspaceProps; export function UnifiedCreationWorkspace(props: UnifiedCreationWorkspaceProps) { switch (props.playId) { case 'puzzle': return ( ); case 'match3d': return ( ); case 'jump-hop': return ( ); case 'wooden-fish': return ( ); default: { const exhaustiveCheck: never = props; return exhaustiveCheck; } } } export default UnifiedCreationWorkspace;