import { Manifest } from '@prose-reader/shared'; import { Observable } from 'rxjs'; import { Context } from '../../context/Context'; import { HookManager } from '../../hooks/HookManager'; import { ReaderSettingsManager } from '../../settings/ReaderSettingsManager'; import { ReactiveEntity } from '../../utils/ReactiveEntity'; import { Viewport } from '../../viewport/Viewport'; import { ResourceHandler } from '../resources/ResourceHandler'; export type DocumentRendererParams = { context: Context; settings: ReaderSettingsManager; hookManager: HookManager; item: Manifest[`spineItems`][number]; containerElement: HTMLElement; resourcesHandler: ResourceHandler; viewport: Viewport; }; type LayoutParams = { minPageSpread: number; blankPagePosition: `before` | `after` | `none`; spreadPosition: `none` | `left` | `right`; minimumWidth: number; }; type DocumentRendererState = { state: `idle` | `loading` | `loaded` | `unloading` | `error`; error: unknown | undefined; documentContainer: HTMLElement | undefined; }; export declare abstract class DocumentRenderer extends ReactiveEntity { static readonly DOCUMENT_CONTAINER_CLASS_NAME = "prose-reader-document-container"; private triggerSubject; protected viewport: Viewport; protected context: Context; protected settings: ReaderSettingsManager; protected hookManager: HookManager; protected item: Manifest[`spineItems`][number]; protected containerElement: HTMLElement; protected resourcesHandler: ResourceHandler; loaded$: Observable; unloaded$: Observable; constructor(params: { context: Context; settings: ReaderSettingsManager; hookManager: HookManager; item: Manifest[`spineItems`][number]; containerElement: HTMLElement; resourcesHandler: ResourceHandler; viewport: Viewport; }); protected setDocumentContainer(element: HTMLElement): void; protected attach(): void; protected detach(): void; get isLoaded$(): Observable; load(): void; unload(): void; renderHeadless(): Observable<{ doc: Document; release: () => void; } | undefined>; layout(params: LayoutParams): Observable<{ width: number; height: number; } | undefined>; destroy(): void; abstract onRenderHeadless(params: { release: Observable; }): Observable; abstract onUnload(): void; abstract onCreateDocument(): Observable; abstract onLoadDocument(): Observable; abstract onLayout(params: LayoutParams): Observable<{ width: number; height: number; } | undefined>; abstract getDocumentFrame(): HTMLIFrameElement | undefined; get documentContainer(): HTMLElement | undefined; get writingMode(): `vertical-rl` | `horizontal-tb` | undefined; get readingDirection(): `rtl` | `ltr` | undefined; get renditionLayout(): "reflowable" | "pre-paginated"; } export {};