import { Pencere } from "../core.mjs"; import type { PencereStrings, Translator } from "../i18n.mjs"; import type { CloseReason, Item, PencereOptions } from "../types.mjs"; import type { DialogControllerOptions } from "./dialog.mjs"; import type { HapticsOptions } from "./haptics.mjs"; import type { PencereHooks } from "./hooks.mjs"; import type { ImageLoader, ImageLoaderOptions } from "./image-loader.mjs"; import type { KeyboardMapOptions } from "./keyboard.mjs"; import type { PencerePlugin } from "./plugin.mjs"; import type { Renderer } from "./renderers.mjs"; import type { RoutingOptions } from "./routing-controller.mjs"; export type { RoutingOptions } from "./routing-controller.mjs"; export interface PencereViewerOptions extends PencereOptions, Pick { /** Container to attach the viewer root into. Defaults to document.body. */ container?: HTMLElement; /** Translator overrides — either a string bundle or a custom function. */ strings?: Partial; i18n?: Translator; /** Keyboard remapping / disabling. */ keyboard?: KeyboardMapOptions; /** Image loading options (CORS, referrer policy, etc). */ image?: ImageLoaderOptions; /** * Inject a custom ImageLoader (#9). Use this to add CDN * signing, blur-up previews, service-worker caching, or a * bespoke AVIF fallback strategy. The loader must honor the * AbortSignal passed on every `load()` call so rapid slide * navigation can cancel in-flight requests. */ imageLoader?: ImageLoader; /** * Force reduced-motion behavior regardless of the user's OS setting. * `"auto"` (default) honors `prefers-reduced-motion`. */ reducedMotion?: "auto" | "always" | "never"; /** * CSP nonce. When set, the stylesheet fallback `