UNPKG

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