'use client'; import { useMemo } from 'react'; import type { Scene, StageMode } from '@/lib/types/stage'; import { SlideEditor as SlideRenderer } from '../slide-renderer/Editor'; import { QuizView } from '../scene-renderers/quiz-view'; import { InteractiveRenderer } from '../scene-renderers/interactive-renderer'; import { PBLRenderer } from '../scene-renderers/pbl-renderer'; interface SceneRendererProps { readonly scene: Scene; readonly mode: StageMode; } /** * Playback scene dispatcher. In Pro (edit) mode, Stage renders EditShell * directly as a top-level takeover — SceneRenderer is only on the playback * path, so it does not branch on `mode === 'edit'`. */ export function SceneRenderer({ scene, mode }: SceneRendererProps) { const renderer = useMemo(() => { switch (scene.type) { case 'slide': if (scene.content.type !== 'slide') return
Invalid slide content
; return ; case 'quiz': if (scene.content.type !== 'quiz') return
Invalid quiz content
; return ( ); case 'interactive': if (scene.content.type !== 'interactive') return
Invalid interactive content
; return ; case 'pbl': if (scene.content.type !== 'pbl') return
Invalid PBL content
; return ; default: return
Unknown scene type
; } }, [scene, mode]); return
{renderer}
; }