@aigamo/nostalgic-diva
Version:
React function components for imperatively controlling embedded players (audio, Niconico, SoundCloud and YouTube) using refs.
20 lines (19 loc) • 1.44 kB
TypeScript
import React, { MutableRefObject, ReactElement, ReactNode } from 'react';
import { ILogger } from '../controllers/Logger';
import { IPlayerController, PlayerOptions, PlayerType } from '../controllers/PlayerController';
import { PlayerControllerImpl } from '../controllers/PlayerControllerImpl';
export interface PlayerProps {
logger: ILogger;
type: PlayerType;
onControllerChange: ((value: IPlayerController) => void) | undefined;
videoId: string;
options: PlayerOptions | undefined;
}
interface PlayerContainerProps<TElement extends HTMLElement, TPlayer extends object, TController extends PlayerControllerImpl<TPlayer>> extends PlayerProps {
loadScript: (() => Promise<void>) | undefined;
playerFactory: (element: TElement, videoId: string) => Promise<TPlayer>;
controllerFactory: new (logger: ILogger, player: TPlayer, options: PlayerOptions | undefined) => TController;
children: (elementRef: MutableRefObject<TElement>, videoId: string) => ReactNode;
}
export declare const PlayerContainer: <TElement extends HTMLElement, TPlayer extends object, TController extends PlayerControllerImpl<TPlayer>>({ logger, type, loadScript, playerFactory, onControllerChange, videoId, options, controllerFactory, children, }: PlayerContainerProps<TElement, TPlayer, TController>) => React.ReactElement<PlayerContainerProps<TElement, TPlayer, TController>, string | React.JSXElementConstructor<any>>;
export {};