@byomakase/omakase-player
Version:
## Omakase Player - Open source JavaScript framework for building frame accurate video experiences
346 lines (345 loc) • 10.3 kB
TypeScript
export declare enum PlayerChromingTheme {
Default = "DEFAULT",
Stamp = "STAMP",
Chromeless = "CHROMELESS",
Custom = "CUSTOM",
Audio = "AUDIO",
Omakase = "OMAKASE"
}
export declare enum ControlBarVisibility {
Enabled = "ENABLED",
Disabled = "DISABLED",
FullscreenOnly = "FULLSCREEN_ONLY"
}
export declare enum OmakaseControlBarVisibility {
Enabled = "ENABLED",
Disabled = "DISABLED",
AlwaysOn = "ALWAYS_ON"
}
export declare enum DefaultThemeControl {
Play = "PLAY",
FrameForward = "FRAME_FORWARD",
TenFramesForward = "TEN_FRAMES_FORWARD",
FrameBackward = "FRAME_BACKWARD",
TenFramesBackward = "TEN_FRAMES_BACKWARD",
Bitc = "BITC",
Fullscreen = "FULLSCREEN",
Captions = "CAPTIONS",
Volume = "VOLUME",
Scrubber = "SCRUBBER",
Trackselector = "TRACKSELECTOR",
PlaybackRate = "PLAYBACK_RATE",
Detach = "DETACH"
}
export declare enum AudioThemeControl {
Play = "PLAY",
Volume = "VOLUME",
PlaybackRate = "PLAYBACK_RATE",
Trackselector = "TRACKSELECTOR",
Scrubber = "SCRUBBER",
Time = "TIME"
}
export declare enum DefaultThemeFloatingControl {
Trackselector = "TRACKSELECTOR",
HelpMenu = "HELP_MENU",
PlaybackControls = "PLAYBACK_CONTROLS",
Time = "TIME"
}
export declare enum StampThemeFloatingControl {
ProgressBar = "PROGRESS_BAR",
Time = "TIME",
PlaybackControls = "PLAYBACK_CONTROLS",
ActionIcons = "ACTION_ICONS"
}
export declare enum StampThemeActionIcon {
AudioToggle = "AUDIO_TOGGLE",
Fullscreen = "FULLSCREEN"
}
export declare enum AudioThemeFloatingControl {
PlaybackControls = "PLAYBACK_CONTROLS",
HelpMenu = "HELP_MENU"
}
export declare enum ChromelessThemeFloatingControl {
Time = "TIME"
}
export declare enum OmakaseThemeControl {
Play = "PLAY",
FrameForward = "FRAME_FORWARD",
TenFramesForward = "TEN_FRAMES_FORWARD",
FrameBackward = "FRAME_BACKWARD",
TenFramesBackward = "TEN_FRAMES_BACKWARD",
Fullscreen = "FULLSCREEN",
Volume = "VOLUME",
Trackselector = "TRACKSELECTOR",
PlaybackRate = "PLAYBACK_RATE",
Detach = "DETACH",
Time = "TIME",
Close = "CLOSE"
}
export declare enum OmakaseThemeFloatingControl {
ProgressBar = "PROGRESS_BAR",
Time = "TIME",
PlaybackControls = "PLAYBACK_CONTROLS",
ActionIcons = "ACTION_ICONS"
}
export declare enum OmakaseThemeActionIcon {
HelpMenu = "HELP_MENU",
Fullscreen = "FULLSCREEN",
AudioToggle = "AUDIO_TOGGLE",
Volume = "VOLUME",
ControlBarToggle = "CONTROL_BAR_TOGGLE"
}
export declare enum StampThemeScale {
Fill = "FILL",
Fit = "FIT"
}
export declare enum TimeFormat {
Timecode = "TIMECODE",
CountdownTimer = "COUNTDOWN_TIMER",
MediaTime = "MEDIA_TIME"
}
export declare enum WatermarkVisibility {
AlwaysOn = "ALWAYS_ON",
AutoHide = "AUTO_HIDE"
}
export declare enum AudioPlayerSize {
Full = "FULL",
Compact = "COMPACT"
}
export declare enum FullscreenChroming {
Enabled = "ENABLED",
Disabled = "DISABLED"
}
export declare enum OmakaseProgressBarPosition {
OverVideo = "OVER_VIDEO",
UnderVideo = "UNDER_VIDEO"
}
export declare enum AudioVisualization {
Disabled = "DISABLED",
Enabled = "ENABLED"
}
interface BasePlayerChroming<T extends PlayerChromingTheme> {
/**
* Chroming theme determines how the player will be chromed.
*/
readonly theme: T;
/**
* URL for the thumbnails (used for preview in media chrome time range)
*/
thumbnailUrl?: string;
/**
* Function that allows custom handler for getting a thumbnail for given time
* @param time time in seconds
* @returns thumbnail url
*/
thumbnailSelectionFn?: (time: number) => string;
/**
* Watermark text or svg
*/
watermark?: string;
/**
* Specifies if watermark is shown when the video is playing
*/
watermarkVisibility?: WatermarkVisibility;
/**
* Specifies if chroming is enabled in fullscreen
*/
fullscreenChroming?: FullscreenChroming;
/**
* CSS file url(s) for player chroming styling
*/
styleUrl?: string | string[];
}
export interface DefaultThemeConfig {
/**
* Specifies controls visibility
*/
controlBarVisibility: ControlBarVisibility;
/**
* Specifies list of enabled controls in control bar
*/
controlBar: DefaultThemeControl[];
/**
* Specifies list of enabled floating controls
*/
floatingControls: DefaultThemeFloatingControl[];
/**
* Specifies list of enabled floating controls
*/
alwaysOnFloatingControls: DefaultThemeFloatingControl[];
/**
* Sets the available playback rates in menu
*/
playbackRates: number[];
/**
* If false, track selection menu will keep open until explicitly closed.
* If true it will close on track selection or when clicking outside of the menu
*/
trackSelectorAutoClose: boolean;
/**
* Specifies which time format will be used in the timer control
*/
timeFormat: TimeFormat;
/**
* Id of the custom web component used for Player chroming
*/
htmlTemplateId?: string;
}
export interface CustomThemeConfig {
/**
* Id of the custom web component used for Player chroming
*/
htmlTemplateId: string;
}
export interface DefaultChroming extends BasePlayerChroming<PlayerChromingTheme.Default> {
themeConfig?: Partial<DefaultThemeConfig>;
}
export interface CustomChroming extends BasePlayerChroming<PlayerChromingTheme.Custom> {
themeConfig?: Partial<CustomThemeConfig>;
}
export interface StampThemeConfig {
/**
* Specifies list of enabled floating controls
*/
floatingControls: StampThemeFloatingControl[];
/**
* Specifies list of floating controls that are shown when the video is playing
*/
alwaysOnFloatingControls: StampThemeFloatingControl[];
/**
* Specifies list of enabled action icons
*/
actionIcons: StampThemeActionIcon[];
/**
* Specifies how the video will fill the container
*/
stampScale: StampThemeScale;
/**
* Specifies which time format will be used in the timer control
*/
timeFormat: TimeFormat;
/**
* Id of the custom web component used for Player chroming
*/
htmlTemplateId?: string;
}
export interface AudioVisualizationConfig {
/**
* Hex value for the stroke color
*/
strokeColor: string;
/**
* Hex values for the fill gradient colors
*/
fillColors: string[];
}
export interface AudioThemeConfig {
/**
* Specifies controls visibility
*/
controlBarVisibility: Omit<ControlBarVisibility, ControlBarVisibility.FullscreenOnly>;
/**
* Specifies list of enabled controls in control bar
*/
controlBar: AudioThemeControl[];
/**
* Specifies list of enabled floating controls
*/
floatingControls: AudioThemeFloatingControl[];
/**
* Sets the available playback rates in menu
*/
playbackRates: number[];
/**
* Specifies the audio player size
*/
playerSize: AudioPlayerSize;
/**
* Enables/disables the audio visualization
*/
visualization: AudioVisualization;
/**
* Configures the audio visualization
*/
visualizationConfig: AudioVisualizationConfig;
/**
* Specifies which time format will be used in the timer control
*/
timeFormat: TimeFormat;
/**
* Id of the custom web component used for Player chroming
*/
htmlTemplateId?: string;
}
export interface OmakaseThemeConfig {
/**
* Specifies the list of enabled floating controls
*/
floatingControls: OmakaseThemeFloatingControl[];
/**
* Specifies the list of floating controls that are shown when the video is playing
*/
alwaysOnFloatingControls: OmakaseThemeFloatingControl[];
/**
* Specifies the list of enabled action icons
*/
actionIcons: OmakaseThemeActionIcon[];
/**
* Specifies which time format will be used in the timer control
*/
timeFormat: TimeFormat;
/**
* Specifies controls visibility
*/
controlBarVisibility: OmakaseControlBarVisibility;
/**
* Specifies list of enabled controls in control bar
*/
controlBar: OmakaseThemeControl[];
/**
* Specifies control bar position
*/
progressBarPosition: OmakaseProgressBarPosition;
/**
* Sets the available playback rates in menu
*/
playbackRates: number[];
/**
* Id of the custom web component used for Player chroming
*/
htmlTemplateId?: string;
}
export interface ChromelessThemeConfig {
/**
* Specifies which time format will be used in the timer control
*/
timeFormat: TimeFormat;
/**
* Specifies the list of enabled floating controls
*/
floatingControls: ChromelessThemeFloatingControl[];
/**
* Specifies the list of floating controls that are shown when the video is playing
*/
alwaysOnFloatingControls: ChromelessThemeFloatingControl[];
}
export interface StampChroming extends BasePlayerChroming<PlayerChromingTheme.Stamp> {
themeConfig?: Partial<StampThemeConfig>;
}
export interface AudioChroming extends BasePlayerChroming<PlayerChromingTheme.Audio> {
themeConfig?: Partial<AudioThemeConfig>;
}
export interface OmakaseChroming extends BasePlayerChroming<PlayerChromingTheme.Omakase> {
themeConfig?: Partial<OmakaseThemeConfig>;
}
export interface ChromelessChroming extends BasePlayerChroming<PlayerChromingTheme.Chromeless> {
themeConfig?: Partial<ChromelessThemeConfig>;
}
export type PlayerChroming = DefaultChroming | StampChroming | CustomChroming | ChromelessChroming | AudioChroming | OmakaseChroming;
export declare const DEFAULT_PLAYER_CHROMING_CONFIG: DefaultThemeConfig;
export declare const DEFAULT_STAMP_PLAYER_CHROMING_CONFIG: StampThemeConfig;
export declare const DEFAULT_AUDIO_PLAYER_CHROMING_CONFIG: AudioThemeConfig;
export declare const DEFAULT_OMAKASE_PLAYER_CHROMING_CONFIG: OmakaseThemeConfig;
export declare const DEFAULT_CHROMELESS_PLAYER_CHROMING_CONFIG: ChromelessThemeConfig;
export declare const DEFAULT_PLAYER_CHROMING: DefaultChroming;
export {};