UNPKG

ranui

Version:

A framework-agnostic Web Components UI library built on native custom elements, with TypeScript types, light/dark theming, SSR and PWA support.

49 lines (48 loc) 2.25 kB
import type { EngineAdapter, EngineQualityLevel } from './adapters/types'; import type { PlaybackSnapshot } from './playback'; import type { PlayerRuntimeState } from './state'; export interface PlayerClarityRefs { clarityContainer: HTMLElement; player: HTMLDivElement; } export type PlayerClarityRuntimeState = Pick<PlayerRuntimeState<PlaybackSnapshot>, 'isSwitchingSource' | 'pendingPlaybackRestore'>; export interface PlayerClarityCtx<TLevel extends EngineQualityLevel = EngineQualityLevel> { levels: TLevel[]; levelMap: Map<string, string>; clarity: string; } export interface PlayerClarityDeps<TLevel extends EngineQualityLevel = EngineQualityLevel> { refs: PlayerClarityRefs; state: PlayerClarityRuntimeState; ctx: PlayerClarityCtx<TLevel>; getEngine: () => EngineAdapter | undefined; getVideo: () => HTMLVideoElement | undefined; getSrc: () => string; capturePlaybackSnapshot: () => PlaybackSnapshot; setLoadingState: (loading: boolean) => void; change: (name: string, value: unknown) => void; showErrorModal: (message: string) => void; /** * Self-forwarding entry for this module's own `createClaritySelect` — * `manifestLoaded` calls it through the RanPlayer wrapper instead of the * local closure below, so a `vi.spyOn(player, 'createClaritySelect')` set * up after construction still intercepts it. */ createClaritySelect: () => void; } export interface PlayerClarityHandlers<TLevel extends EngineQualityLevel = EngineQualityLevel> { changeClarity: (e: Event) => void; createClaritySelect: () => void; manifestLoaded: (levels: TLevel[]) => void; hlsError: (payload: { fatal: boolean; detail: unknown; }) => void; } /** * Rendition/quality switching, generalized across whichever `EngineAdapter` * is currently loaded (`docs/PLAYER_ROADMAP.md` Phase 2) — no engine-specific * branching lives here, that's the adapter's job (`core/adapters/*.ts`). Kept * separate from `core/subtitles.ts` since subtitles are engine-independent. */ export declare function createClarityHandlers<TLevel extends EngineQualityLevel = EngineQualityLevel>(deps: PlayerClarityDeps<TLevel>): PlayerClarityHandlers<TLevel>;