///
declare module 'playcraft' {
export interface SupportEnvironmentItem {
device?: { type: string };
os?: { name: string; version: string };
browser?: { name: string; version: string };
};
export interface Recommendation {
title: string;
content: React.ReactNode;
};
export interface PlayerInstance {
load(): void;
};
export interface PlayerProps {
ref?: MutableRefObject;
licenseKey: string;
config?: object;
host?: string;
accessToken?: string;
deviceId?: string;
content?: {
contentId: number | string;
contentType: 'videos' | 'lives';
};
customHeader?: object;
customQuery?: object;
lang?: 'en' | 'ja' | 'zh-TW';
langCustomCode?: object;
preload?: 'auto' | 'none';
autoplay?: boolean;
autoplayNext?: boolean;
startTime?: number;
quality?: string | number | {
default: string | number;
getQualityText?({width: number, height: number}): string;
qualitySelectionHack: boolean;
};
mediaSource?: string;
thumbnailSeeking?: boolean;
supportEnvironmentList?: Array;
limitOnePlaybackAtSameTime?: boolean;
recommendation?: Recommendation;
coverImageUrl?: string;
widevine?: 'force-l1' | 'device' | 'auto' | 'force-l3';
plugins?: Array;
drm?(object): any;
sentry?(object): any;
onSourceLoaded?(): void;
onReady?(): void;
onPlay?(): void;
onPaused?(): void;
onPlaying?(): void;
onEnded?(): void;
onError?(error: object): void;
onBack?(contentId: number | string): void;
onTimeChanged?(currentTime: number): void;
onSeek?(seekTarget: number, position: number): void;
onSeeked?(currentTime: number): void;
onVolumeChanged?(targetVolume: number, sourceVolume: number): void;
onMuted?(): void;
onUnmuted?(): void;
onVideoQualityChanged?(targetQuality: string, sourceQuality: string): void;
onMediaSourceChanged?(mediaSource: string): void;
onViewModeChange?(viewModeChangedEvent: object): void;
onEnterFullscreen?(): void;
onExitFullscreen?(): void;
onStallStarted?(): void;
onStallEnded?(): void;
onReplay?(): void;
onChangeVideo?(content: object): void;
onChangeToNextVideo?(content: object): void;
onChangeToPreviousVideo?(content: object): void;
onLogging?(type: string, property: object): void;
onSectionChange?(sectionChangedEvent: object): void;
};
export const Player: React.FunctionComponent;
}
declare module 'playcraft/react' {
export interface Intl {
locale?: string,
messages?: object,
}
export type uiMode = 'standalone' | 'embedded';
export interface PremiumPlayerProps {
source: object;
startTime?: number;
autoplay?: boolean;
quality?: object;
title?: string;
metadata?: object;
chapters?: object[];
// channelTitle?: string;
playbackState?: string;
quality?: object;
currentTime?: number;
playbackRate?: number;
volume?: number;
textTracks?: {
mode: 'showing' | 'hidden'
cues: {
startTime: number
endTime: number
text: string
}[]
}[]
thumbnailsUrl?: string;
controls?: object;
// marks?: object[],
intl?: Intl;
settings?: object;
plugins?: object[];
modulesConfig?: object;
blocking?: boolean;
style?: object;
children?: React.ReactNode;
uiMode?: uiMode;
uiElements?: object;
onError?: function;
onPlaybackStateChange?: function;
onBack?: function;
onChangeNext?: function;
onChangePrevious?: function;
onOpenSettings?: function;
onChangeSettings?: function;
onPlayerLoaded?: function;
onBlockedAutoplay?: function;
sendLog?: function;
license: string;
validationHost: string;
videoRef?: React.useRef,
bitmovin?: object;
shaka?: object;
modulesConfig?: {
[key: string]: string
}
drm?: object;
muted?: boolean;
loop?: boolean;
}
export const PremiumPlayer: React.FunctionComponent;
export interface CoverImageProps {
src?: string
};
export const CoverImage: React.FunctionComponent;
export const FunctionBarExtension = React.FunctionComponent;
export const InfoBarExtension = React.FunctionComponent;
export const TitleBarExtension = React.FunctionComponent;
export const Addons = React.FunctionComponent;
}
declare module 'playcraft/modules' {
export const createApi: function;
export const startSession: function;
export const getContentInfo: function;
export const getStreamInfo: function;
export const mapLogEvents: function;
export const logEventNames: function;
export const selectHlsQualities: function;
export const addSentry: function;
}
declare module 'playcraft/plugins' {
export const MediaTailorPlugin: function;
export const ImaDaiPlugin: function;
export const StallReloadPlugin: function;
}