@exadel/esl
Version:
Exadel Smart Library (ESL) is the lightweight custom elements library that provide a set of super-flexible components
59 lines (58 loc) • 2.02 kB
TypeScript
import { BaseProvider, PlayerStates } from '../core/esl-media-provider';
import type { ESLMedia } from '../core/esl-media';
import type { ProviderObservedParams } from '../core/esl-media-provider';
import type { VideoJsPlayer } from 'video.js';
export interface BCPlayerAccount {
playerId: string | null;
accountId: string | null;
}
/**
* Brightcove API provider for {@link ESLMedia}
* @author Julia Murashko
*/
export declare class BrightcoveProvider extends BaseProvider {
static readonly providerName: string;
protected videojsClasses: string;
protected _api: VideoJsPlayer;
protected _account: BCPlayerAccount;
protected _autoplay: boolean;
/**
* @returns settings, get from element by default
*/
protected static getAccount(el: ESLMedia): BCPlayerAccount;
/** Loads player API according defined settings */
protected static loadAPI(account: BCPlayerAccount): Promise<Event>;
/** Build video brightcove element */
protected buildVideo(): HTMLElement;
/** Utility method to convert api event to promise */
protected $$fromEvent(eventName: string): Promise<void>;
/**
* Executes as soon as api script detected or loaded.
* @returns promise with provided API
*/
protected onAPILoaded(): Promise<void> | void;
/**
* Executes after API ready state resolved
* Basic onAPIReady should be called to subscribe to API state
*/
protected onAPIReady(): Promise<void> | void;
bind(): void;
unbind(): void;
protected onConfigChange(param: ProviderObservedParams, value: boolean): void;
focus(): void;
get state(): PlayerStates;
get defaultAspectRatio(): number;
get currentTime(): number;
get duration(): number;
seekTo(pos: number): void;
play(): void;
pause(): void;
stop(): void;
safePlay(): Promise<any>;
safeStop(): Promise<any>;
}
declare global {
interface Window {
bc?: (el: HTMLElement, ...args: any[]) => VideoJsPlayer;
}
}