import { ParsedTableStyleMap, PptxAppProperties, PptxCoreProperties, PptxCustomProperty, PptxEmbeddedFont, PptxHandoutMaster, PptxHeaderFooter, PptxNotesMaster, PptxPresentationProperties, PptxCustomShow, PptxSection, PptxSlide, PptxSlideMaster, PptxTagCollection, PptxThemeColorScheme, PptxTheme, PptxThemeOption, PptxViewProperties, PptxHandler } from 'pptx-viewer-core'; import { CanvasSize, CollabLoadOrigin, SlideSizeEmu } from 'pptx-viewer-shared'; /** * Reactive load pipeline for the Svelte viewer: the runes port of the Vue * `useLoadContent` composable's viewer subset. * * All heavy lifting (ZIP, XML parse, theme/master/layout resolution, chart * enrichment via `PptxSlideLoaderService.enrichChartData`) happens inside * `PptxHandler.load` in `pptx-viewer-core`; this class only wires the async * load into Svelte reactivity and manages Blob-URL / handler lifecycle. */ export declare class PresentationLoader { #private; /** Parsed slides with lazily-loaded image URLs patched in. */ slides: PptxSlide[]; /** Parsed slide-master hierarchy for the dedicated master workspace. */ slideMasters: PptxSlideMaster[]; notesMaster: PptxNotesMaster | undefined; handoutMaster: PptxHandoutMaster | undefined; sections: PptxSection[]; headerFooter: PptxHeaderFooter; presentationProperties: PptxPresentationProperties; /** * View properties (`ppt/viewProps.xml`, `p:viewPr`): grid spacing, snap / * guide toggles, last view, splitter state, etc. `gridSpacing` lives here, * NOT on `presentationProperties` -- `p:gridSpacing` is a child of * `p:viewPr`, and a real PowerPoint file never populates it under * `p:presentationPr`. */ viewProperties: PptxViewProperties | undefined; customShows: PptxCustomShow[]; coreProperties: PptxCoreProperties | undefined; appProperties: PptxAppProperties | undefined; customProperties: PptxCustomProperty[]; /** Parsed `ppt/tags/*.xml` collections, editable in the inspector's Tags section. */ tagCollections: PptxTagCollection[]; embeddedFonts: PptxEmbeddedFont[]; hasDigitalSignatures: boolean; digitalSignatureCount: number; isPasswordProtected: boolean; /** Whether the loaded package contains a VBA project. */ hasMacros: boolean; notesCanvasSize: CanvasSize | undefined; /** Packaged theme parts (`ppt/theme/*.xml`) selectable in the inspector. */ themeOptions: PptxThemeOption[]; /** Slide canvas size in pixels. */ canvasSize: CanvasSize; /** * The deck's `p:sldSz` in EMU, seeded from the parse and re-written by the * inspector's Slide Size preset / orientation controls. * * Held alongside {@link canvasSize} rather than derived from it because the * pixel size is lossy: Ledger is 12179300 EMU (1278.5px), so a round-trip * through an integer pixel would move it 6350 EMU and cost the deck its * `ppSlideSizeLedgerPaper` identity. `resolveSlideSizeSelection` decides * which of the two wins at save time. */ slideSize: SlideSizeEmu | undefined; /** Archive-path -> displayable URL map for media + poster frames. */ mediaDataUrls: Map; /** Presentation theme colours used to resolve scheme-based table styles. */ colorScheme: PptxThemeColorScheme | undefined; presentationTheme: PptxTheme | undefined; /** Parsed presentation table-style definitions keyed by style id. */ tableStyleMap: ParsedTableStyleMap | undefined; /** True while a load is in flight. */ loading: boolean; /** Error message from the last failed load, or null. */ error: string | null; /** True when the file is password-protected and could not be opened. */ isEncrypted: boolean; /** The live `PptxHandler` for the loaded file (or null). */ handler: PptxHandler | null; /** Incremented after each successful load (drives `load` callbacks). */ loadCount: number; /** * Why the deck now loaded was loaded. A collaboration room may replace the * host's own `source` (a late joiner's bootstrap) but never a file the user * opened during the session (`shouldRoomSlidesReplaceLoad`). */ loadOrigin: CollabLoadOrigin; /** Parse a `.pptx` buffer into reactive viewer state. */ load(raw: Uint8Array | ArrayBuffer, origin?: CollabLoadOrigin): Promise; /** Cancel in-flight loads, revoke Blob URLs, dispose the handler. */ dispose(): void; } //# sourceMappingURL=presentation-loader.svelte.d.ts.map