import { IReader } from '@vscode/observables'; import { FixtureRegistry, ComponentDefinition } from '../core/index.js'; import { ExplorerTreeNode } from './types.js'; import { DaemonModel } from '../daemon/index.js'; import { ReportModel } from '../report/ReportModel.js'; import { ReportFixtureItem } from './ReportComparisonRow.js'; export type ViewMode = 'session' | 'diff' | 'report'; /** * A fixture item to be rendered in the preview area. */ export interface FixtureItem { readonly id: string; readonly name: string; readonly path: string; readonly component: ComponentDefinition; } /** * A screenshot comparison item for diff mode. */ export interface ScreenshotComparisonItem { readonly fixtureId: string; readonly name: string; readonly path: string; } /** * A preview row can be a live fixture, a variant group, or a screenshot comparison. */ export type PreviewRow = { readonly type: 'single'; readonly fixture: FixtureItem; } | { readonly type: 'variants'; readonly id: string; readonly name: string; readonly path: string; readonly fixtures: readonly FixtureItem[]; } | { readonly type: 'screenshot-comparison'; readonly id: string; readonly name: string; readonly path: string; readonly items: readonly ScreenshotComparisonItem[]; } | { readonly type: 'report-comparison'; readonly id: string; readonly name: string; readonly path: string; readonly items: readonly ReportFixtureItem[]; }; declare const ExplorerModel_base: import('@vscode/observables-react').ViewModelClass<{ registry: import('@vscode/observables-react').IPropertyTransformerFactory; daemonModel: import('@vscode/observables-react').IPropertyTransformerFactory; reportModel: import('@vscode/observables-react').IPropertyTransformerFactory; }>; export declare class ExplorerModel extends ExplorerModel_base { readonly leftSidebarVisible: import('@vscode/observables').ISettableObservable; readonly rightSidebarVisible: import('@vscode/observables').ISettableObservable; readonly isDarkTheme: import('@vscode/observables').ISettableObservable; readonly selectedNodeId: import('@vscode/observables').ISettableObservable; readonly expandedNodeIds: import('@vscode/observables').ISettableObservable, void>; readonly viewMode: import('@vscode/observables').ISettableObservable; get daemonAvailable(): boolean; get daemon(): DaemonModel | undefined; get reportModel(): ReportModel | undefined; get isReportMode(): boolean; readonly loading: import('@vscode/observables').IObservableWithChange; readonly searchQuery: import('@vscode/observables').ISettableObservable; /** The explorer's tree derived from the registry or report */ readonly tree: import('@vscode/observables').IObservableWithChange; readonly filteredTree: import('@vscode/observables').IObservableWithChange; readonly selectedNode: import('@vscode/observables').IObservableWithChange; /** List of preview rows to render based on current selection and view mode */ readonly selectedFixtures: import('@vscode/observables').IObservableWithChange; setViewMode: (mode: ViewMode) => void; navigateToSession: (sessionName: string) => void; toggleLeftSidebar: () => void; toggleRightSidebar: () => void; toggleTheme: () => void; selectNode: (nodeId: string) => void; toggleNodeExpanded: (nodeId: string) => void; isNodeExpanded(nodeId: string, reader: IReader): boolean; private _initialExpandedNodes; private _findNode; private _collectPreviewRows; /** * In diff mode: fixtures become screenshot comparison items showing current vs baseline. * Variants become comparison groups. */ private _collectDiffRows; private _collectReportRows; } export {}; //# sourceMappingURL=ExplorerModel.d.ts.map