@aigamo/nostalgic-diva
Version:
React function components for imperatively controlling embedded players (audio, Niconico, SoundCloud and YouTube) using refs.
75 lines (74 loc) • 2.88 kB
TypeScript
import { ILogger } from './Logger';
import { PlayerControllerImpl } from './PlayerControllerImpl';
export declare enum PlayerType {
'Audio' = "Audio",
'Dailymotion' = "Dailymotion",
'Niconico' = "Niconico",
'SoundCloud' = "SoundCloud",
'Twitch' = "Twitch",
'Vimeo' = "Vimeo",
'YouTube' = "YouTube"
}
export declare function validatePlayerType(value: string): value is PlayerType;
export interface LoadedEvent {
id: string;
}
export interface TimeEvent {
duration: number | undefined;
percent: number | undefined;
seconds: number | undefined;
}
export interface PlayerOptions {
onError?(event: any): void;
onLoaded?(event: LoadedEvent): void;
onPlay?(): void;
onPause?(): void;
onEnded?(): void;
onTimeUpdate?(event: TimeEvent): void;
}
export interface IPlayerCommands {
loadVideo(id: string): Promise<void>;
play(): Promise<void>;
pause(): Promise<void>;
setCurrentTime(seconds: number): Promise<void>;
setVolume(volume: number): Promise<void>;
setMuted(muted: boolean): Promise<void>;
setPlaybackRate(playbackRate: number): Promise<void>;
getDuration(): Promise<number | undefined>;
getCurrentTime(): Promise<number | undefined>;
getVolume(): Promise<number | undefined>;
getPlaybackRate(): Promise<number | undefined>;
}
export interface IPlayerController extends IPlayerCommands {
supports(command: keyof IPlayerCommands): boolean;
}
export declare class PlayerController<TPlayer extends object, TController extends PlayerControllerImpl<TPlayer>> implements IPlayerController {
private readonly logger;
private readonly type;
private readonly player;
private readonly options;
private readonly controllerFactory;
private static nextId;
private readonly id;
private impl?;
constructor(logger: ILogger, type: PlayerType, player: TPlayer, options: PlayerOptions | undefined, controllerFactory: new (logger: ILogger, player: TPlayer, options: PlayerOptions | undefined) => TController);
private createMessage;
debug(message?: any, ...optionalParams: any): void;
error(message?: any, ...optionalParams: any): void;
attach(id: string): Promise<void>;
private createPlayerNotAttachedError;
private createCommandNotSupportedError;
detach(): Promise<void>;
loadVideo(id: string): Promise<void>;
play(): Promise<void>;
pause(): Promise<void>;
setCurrentTime(seconds: number): Promise<void>;
setVolume(volume: number): Promise<void>;
setMuted(muted: boolean): Promise<void>;
setPlaybackRate(playbackRate: number): Promise<void>;
getDuration(): Promise<number | undefined>;
getCurrentTime(): Promise<number | undefined>;
getVolume(): Promise<number | undefined>;
getPlaybackRate(): Promise<number | undefined>;
supports(command: keyof IPlayerCommands): boolean;
}