UNPKG

@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
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; }