/** * MediaController * * Manages media sources, playback events, and media state tracking. * Handles media selection, playback control, and model changes. */ import type { ViewerStateStores } from "../viewerState"; import type { ViewerDerivedStores } from "../viewerDerived"; import type { MediaSource, MediaType } from "../../../iiif/mediaResolver"; import type { ViewerEventEmitter } from "../../../core/types/events"; export type MediaControllerConfig = { state: ViewerStateStores; derived: ViewerDerivedStores; emitEvent: ViewerEventEmitter; emitStateChange: () => void; getCanvasId: () => string | null; }; export type MediaController = { handleMediaPlay: (detail: { time: number; }) => void; handleMediaPause: (detail: { time: number; }) => void; handleMediaTimeUpdate: (detail: { time: number; duration?: number; }) => void; handleMediaSeek: (detail: { from: number; to: number; }) => void; handleMediaSegmentEnd: () => void; handleModelChange: (detail: { source?: string; cameraOrbit?: string; cameraTarget?: string; fieldOfView?: string; orientation?: string; }) => void; getMediaLabel: (source: MediaSource, translate: (key: string) => string) => string; getMediaTypeLabel: (type: MediaType | null, translate: (key: string) => string) => string; setupMediaEffects: () => (() => void)[]; }; export declare const createMediaController: ({ state, derived: derivedStores, emitEvent, emitStateChange, getCanvasId, }: MediaControllerConfig) => MediaController;