/**
* @file html-track-element-list.js
*/
/**
* {@link HtmlTrackElement} 的當前列表。
*/
類 HtmlTrackElementList {
/**
* 創建此類的一個實例。
*
* @param {HtmlTrackElement[]} [tracks=[]]
* 用於實例化列表的 `HtmlTrackElement` 列表。
*/
構造函數(trackElements = []){
this.trackElements_ = [];
/**
* @memberof HtmlTrackElementList
* @member {number} 長度
* 此 Trackist 中的當前 `Track` 數。
* @實例
*/
Object.defineProperty(this, '長度', {
得到() {
返回 this.trackElements_.length;
}
});
對於(讓我 = 0,長度 = 跟踪。長度; 我的 < 長度; 我 ++){
this.addTrackElement_(trackElements[i]);
}
}
/**
* 添加一個 {@link HtmlTrackElement} 到 `HtmlTrackElementList`
*
* @param {HtmlTrackElement} trackElement
* 要添加到列表中的軌道元素。
*
* @私人的
*/
addTrackElement_(trackElement) {
const index = this.trackElements_.length;
如果(!(「+ 在這個索引)){
Object.defineProperty(這個,索引,{
得到() {
返回 this.trackElements_[index];
}
});
}
// 不要添加重複元素
如果 (this.trackElements_.indexOf(trackElement) === -1) {
this.trackElements_.push(trackElement);
}
}
/**
* 從給定的 `HtmlTrackElementList` 中獲取 {@link HtmlTrackElement}
* {@link TextTrack}。
*
* @param {TextTrack} 軌道
* 與軌道元素關聯的軌道。
*
* @return {HtmlTrackElement|undefined}
* 找到或未定義的軌道元素。
*
* @私人的
*/
getTrackElementByTrack_(軌道){
讓 trackElement_;
對於(讓我 = 0,長度 = 這個。跟踪 _ 長度; 我的 < 長度; I ++){
如果(軌道=== this.trackElements_[i].track){
trackElement_ = this.trackElements_[i];
休息;
}
}
返回軌道元素_;
}
/**
* 從 `HtmlTrackElementList` 中移除一個 {@link HtmlTrackElement}
*
* @param {HtmlTrackElement} trackElement
* 要從列表中刪除的軌道元素。
*
* @私人的
*/
removeTrackElement_(trackElement) {
對於(讓我 = 0,長度 = 這個。跟踪 _ 長度; 我的 < 長度; I ++){
如果 (trackElement === this.trackElements_[i]) {
如果 (this.trackElements_[i].track && typeof this.trackElements_[i].track.off === '函數') {
this.trackElements_[i].track.off();
}
if (typeof this.trackElements_[i].off === '函數') {
this.trackElements_[i].off();
}
this.trackElements_.splice(i, 1);
休息;
}
}
}
}
導出默認 HtmlTrackElementList;