/** * PanelController * * Manages panel visibility and state, including enforcement of single left panel rule. * Handles panel permissions and panel toggle events. */ import type { ViewerStateStores } from "../viewerState"; import type { ViewerDerivedStores } from "../viewerDerived"; import type { ViewerEventEmitter } from "../../../core/types/events"; export type ViewerPanel = "thumbnails" | "collection" | "contents" | "search" | "metadata" | "annotations" | "tools" | "settings" | "layers"; export type PanelControllerConfig = { state: ViewerStateStores; derived: ViewerDerivedStores; emitEvent: ViewerEventEmitter; emitStateChange: () => void; initialOpen?: boolean; initialActivePanel?: string; }; export type PanelController = { setPanelOpen: (panel: ViewerPanel, open: boolean) => void; setupPanelEffects: () => (() => void)[]; }; export declare const createPanelController: ({ state, derived: derivedStores, emitEvent, emitStateChange, initialOpen, initialActivePanel, }: PanelControllerConfig) => PanelController;