/**
* @file track.js
*/
從 '../utils/guid.js' 導入 * 作為 Guid;
從 '../event-target' 導入 EventTarget;
/**
* 包含 {@link AudioTrack} 的所有常用功能的 Track 類,
* {@link VideoTrack} 和 {@link TextTrack}。
*
* > 注意:不應直接使用此類
*
* @see {@link https://html.spec.whatwg.org/multipage/embedded-content.html}
* @extends 事件目標
* @抽象的
*/
類 Track 擴展 EventTarget {
/**
* 創建此類的一個實例。
*
* @param {對象} [選項={}]
* 選項名稱和值的對象
*
* @param {string} [options.kind='']
* 您正在創建的軌道類型的有效種類。
*
* @param {string} [options.id='vjs_track_' + Guid.newGUID()]
* 此 AudioTrack 的唯一 ID。
*
* @param {string} [options.label='']
* 此軌道的菜單標籤。
*
* @param {string} [options.language='']
* 有效的雙字符語言代碼。
*
* @抽象的
*/
構造函數(選項={}){
極好的();
const trackProps = {
id: options.id || 'vjs_track_' + Guid.newGUID(),
種類:options.kind || '',
語言:options.language || ''
};
讓標籤=選項。標籤|| '';
/**
* @memberof 軌道
* @member {string} id
* 該曲目的 ID。創建後無法更改。
* @實例
*
* @只讀
*/
/**
* @memberof 軌道
* @member {string} 種類
* 這是那種曲目。創建後無法更改。
* @實例
*
* @只讀
*/
/**
* @memberof 軌道
* @member {string} 語言
* 此軌道的兩個字母語言代碼。之後無法更改
* 創作。
* @實例
*
* @只讀
*/
對於(trackProps 中的常量鍵){
Object.defineProperty(這個,鍵,{
得到() {
返回 trackProps[key];
},
放() {}
});
}
/**
* @memberof 軌道
* @member {string} 標籤
* 此軌道的標籤。創建後無法更改。
* @實例
*
* @fires Track#labelchange
*/
Object.defineProperty(this, 'label', {
得到() {
退貨標籤;
},
設置(新標籤){
如果(新標籤!==標籤){
標籤=新標籤;
/**
* 在此軌道上更改標籤時觸發的事件。
*
* > 注意:這不是規範的一部分!
*
* @event Track#labelchange
* @type {EventTarget~Event}
*/
this.trigger('labelchange');
}
}
});
}
}
導出默認軌道;