@playkit-js/kaltura-player-js
Version:
[](https://github.com/kaltura/kaltura-player-js/actions/workflows/run_canary.yaml) [ • 2.6 kB
text/typescript
import { Utils } from '@playkit-js/playkit-js';
import { PluginsConfig, SourcesConfig, KPPlaylistItemConfigObject } from '../../types';
const formats = ['hls', 'dash', 'progressive', 'image', 'document'];
/**
* @class PlaylistItem
* @param {PKSourcesConfigObject} [sources] - The item sources
* @param {KPPlaylistItemConfigObject} [config] - The item config
*/
class PlaylistItem {
private _sources: SourcesConfig;
private _config: KPPlaylistItemConfigObject;
private _plugins!: PluginsConfig;
private _index: number;
constructor(sources: SourcesConfig, config: KPPlaylistItemConfigObject, index: number) {
this._sources = sources;
this._config = config;
this._index = index;
}
/**
* Update the playlist item sources
* @param {PKSourcesConfigObject} sourcesObject - The sources
* @returns {void}
* @instance
* @memberof PlaylistItem
*/
public updateSources(sourcesObject: SourcesConfig): void {
this._sources = Utils.Object.mergeDeep({}, sourcesObject);
}
/**
* Update the playlist item plugins (e.g. bumper from BE)
* @param {KPPluginsConfigObject} pluginsObject - The plugins
* @returns {void}
* @instance
* @memberof PlaylistItem
*/
public updatePlugins(pluginsObject: PluginsConfig): void {
this._plugins = Utils.Object.copyDeep(pluginsObject);
}
/**
* Playlist item sources
* @type {?PKSourcesConfigObject}
* @instance
* @memberof PlaylistItem
*/
public get sources(): SourcesConfig {
formats.forEach((format: string) => {
if (this._sources && this._sources[format] && this._sources[format].length === 0) {
delete this._sources[format];
}
});
return this._sources;
}
/**
* Playlist item config
* @type {?KPPlaylistItemConfigObject}
* @instance
* @memberof PlaylistItem
*/
public get config(): KPPlaylistItemConfigObject {
return this._config;
}
/**
* Playlist item plugins
* @type {KPPluginsConfigObject}
* @instance
* @memberof PlaylistItem
*/
public get plugins(): PluginsConfig {
return this._plugins || {};
}
/**
* Playlist item index
* @type {number}
* @instance
* @memberof PlaylistItem
*/
public get index(): number {
return this._index;
}
/**
* @returns {boolean} = Whether the playlist item has sources to play
* @instance
* @memberof PlaylistItem
*/
public isPlayable(): boolean {
return !!formats.find((format) => {
return this._sources && this._sources[format] && this._sources[format].length;
});
}
}
export { PlaylistItem };