import { ViewportCanvas } from "./ViewportCanvas"; import { getViewportDisplayModeLabel, getViewportPanelLabel, type ViewportDisplayMode, type ViewportLayoutMode, type ViewportPanelId, type ViewportPanelState } from "./viewport-layout"; import { VIEWPORT_VIEW_MODES, getViewportViewModeLabel, type ViewportViewMode } from "./viewport-view-modes"; import type { CreationViewportToolPreview, ViewportToolPreview } from "./viewport-transient-state"; import type { LoadedModelAsset } from "../assets/gltf-model-import"; import type { LoadedImageAsset } from "../assets/image-assets"; import type { ProjectAssetRecord } from "../assets/project-assets"; import type { EditorSelection } from "../core/selection"; import type { ToolMode } from "../core/tool-mode"; import type { SceneDocument } from "../document/scene-document"; import type { WorldSettings } from "../document/world-settings"; interface ViewportPanelProps { panelId: ViewportPanelId; panelState: ViewportPanelState; layoutMode: ViewportLayoutMode; isActive: boolean; world: WorldSettings; sceneDocument: SceneDocument; projectAssets: Record; loadedModelAssets: Record; loadedImageAssets: Record; selection: EditorSelection; toolMode: ToolMode; toolPreview: ViewportToolPreview; focusRequestId: number; focusSelection: EditorSelection; onActivatePanel(panelId: ViewportPanelId): void; onSetPanelViewMode(panelId: ViewportPanelId, viewMode: ViewportViewMode): void; onSetPanelDisplayMode(panelId: ViewportPanelId, displayMode: ViewportDisplayMode): void; onCommitCreation(toolPreview: CreationViewportToolPreview): void; onToolPreviewChange(toolPreview: ViewportToolPreview): void; onSelectionChange(selection: EditorSelection): void; } export function ViewportPanel({ panelId, panelState, layoutMode, isActive, world, sceneDocument, projectAssets, loadedModelAssets, loadedImageAssets, selection, toolMode, toolPreview, focusRequestId, focusSelection, onActivatePanel, onSetPanelViewMode, onSetPanelDisplayMode, onCommitCreation, onToolPreviewChange, onSelectionChange }: ViewportPanelProps) { const shouldShow = layoutMode === "quad" || isActive; return (
onActivatePanel(panelId)} onFocusCapture={() => onActivatePanel(panelId)} >
{VIEWPORT_VIEW_MODES.map((viewMode) => ( ))}
{(["normal", "authoring"] as const).map((displayMode) => ( ))}
); }