ranui
Version:
A framework-agnostic Web Components UI library built on native custom elements, with TypeScript types, light/dark theming, SSR and PWA support.
58 lines (57 loc) • 2.54 kB
TypeScript
import type { Progress } from '../../progress';
export interface SpeedOption {
label: string;
value: number;
}
export interface PlayerViewRefs {
player: HTMLDivElement;
container: HTMLDivElement;
playerBtn: HTMLDivElement;
playerController: HTMLDivElement;
gestureFlash: HTMLDivElement;
progress: HTMLDivElement;
progressWrap: HTMLDivElement;
progressWrapBuffer: HTMLDivElement;
progressWrapValue: HTMLDivElement;
progressDot: HTMLDivElement;
playerControllerBottom: HTMLDivElement;
playerControllerBottomRight: HTMLDivElement;
playerControllerBottomLeft: HTMLDivElement;
playerControllerBottomPlayBtn: HTMLDivElement;
/** The `<r-icon>` inside `playerControllerBottomPlayBtn` — exposed separately so
* `syncPlayButtonState` can swap its `name` directly instead of re-querying the
* button on every play/pause toggle. */
playerControllerBottomPlayBtnIcon: HTMLElement;
playerControllerBottomTimeCurrent: HTMLDivElement;
playerControllerBottomTimeDuration: HTMLDivElement;
playerControllerBottomTimeDivide: HTMLDivElement;
playControllerBottomSubtitle: HTMLElement;
playControllerBottomClarity: HTMLElement;
playControllerBottomSpeed: HTMLDivElement;
playControllerBottomVolumeIcon: HTMLDivElement;
/** The `<r-icon>` inside `playControllerBottomVolumeIcon` — same reasoning as
* `playerControllerBottomPlayBtnIcon` above, for the mute/unmute swap. */
playControllerBottomVolumeIconGlyph: HTMLElement;
playControllerBottomVolumeProgress: Progress;
playControllerBottomPip: HTMLDivElement;
playControllerBottomRemote: HTMLDivElement;
playControllerBottomRightFullScreen: HTMLDivElement;
playControllerBottomVolume: HTMLDivElement;
playControllerBottomSpeedPopover: HTMLElement;
playerTip: HTMLDivElement;
playerTipThumbnail: HTMLDivElement;
playerTipTime: HTMLDivElement;
playerTipText: HTMLDivElement;
}
/**
* Builds the player's entire shadow DOM subtree in one pass. Every node is created
* once via the builder and its reference is captured directly in a local — there is
* no reuse/hydration path (this is called exactly once, from `r-player`'s
* constructor, and a Custom Element constructor never runs twice for the same
* instance), so refs are never re-derived by querying the DOM back.
*/
export declare function ensurePlayerView(input: {
shadowDom: ShadowRoot;
speedOptions: SpeedOption[];
onSpeedChange: (e: Event) => void;
}): PlayerViewRefs;