import { ViewerMode } from 'pptx-viewer-shared'; import { CollaborationController } from '../collab'; import { EditorState } from '../editor/editor-state.svelte'; import { CreateViewerStateOptions } from './create-viewer-state-types'; import { PresentationLoader } from './presentation-loader.svelte'; import { ViewerState } from './viewer-state.svelte'; export interface ViewerDerivedDeps { loader: PresentationLoader; viewer: ViewerState; editor: EditorState; collab: CollaborationController; options: CreateViewerStateOptions; /** The live editable flag (not the raw host prop). */ getEditable(): boolean; } /** Layout / zoom / mode values every part of the chrome reads, as live getters. */ export interface ViewerDerived { readonly scale: number; readonly effectivePercent: number; readonly displaySlides: EditorState['renderedSlides']; readonly activeSlide: EditorState['renderedSlides'][number] | undefined; readonly chromeVisible: boolean; readonly editingActive: boolean; readonly showRibbon: boolean; readonly viewerMode: ViewerMode; } /** * The viewer's derived view state (canvas scale, zoom percent, the rendered * slide array, chrome/editing/ribbon visibility, the resolved mode) plus the * `$effect`s that report the ones the host subscribes to. Split out of * `createViewerState` to keep that file under the repo's file-size budget. * * Every value is returned as a getter, not a snapshot, so a consumer reading * `derived.scale` outside an effect still tracks it. Named `use*`, not * `build*`: it registers the host-notification effects. */ export declare function useViewerDerived(deps: ViewerDerivedDeps): ViewerDerived; //# sourceMappingURL=create-viewer-state-derived.svelte.d.ts.map