/**
* @file html-track-element-list.js
*/
/**
* {@link HtmlTrackElement}의 현재 목록입니다.
*/
클래스 HtmlTrackElementList {
/**
* 이 클래스의 인스턴스를 만듭니다.
*
* @param {HtmlTrackElement[]} [트랙=[]]
* 목록을 인스턴스화할 `HtmlTrackElement` 목록입니다.
*/
생성자(trackElements = []) {
this.trackElements_ = [];
/**
* @memberof HtmlTrackElementList
* @member {번호} 길이
* 이 Trackist에 있는 `Track`의 현재 수입니다.
* @사례
*/
Object.defineProperty(이것, '길이', {
얻다() {
this.trackElements_.length 반환;
}
});
for (let i = 0, 길이 = trackElements.length; i < 길이; i++) {
this.addTrackElement_(trackElements[i]);
}
}
/**
* `HtmlTrackElementList`에 {@link HtmlTrackElement} 추가
*
* @param {HtmlTrackElement} 트랙 요소
* 목록에 추가할 트랙 요소입니다.
*
* @사적인
*/
addTrackElement_(trackElement) {
const 인덱스 = this.trackElements_.length;
if (!('' + index in this)) {
Object.defineProperty(이것, 색인, {
얻다() {
return this.trackElements_[인덱스];
}
});
}
// 중복 요소를 추가하지 않음
if (this.trackElements_.indexOf(trackElement) === -1) {
this.trackElements_.push(트랙 요소);
}
}
/**
* 주어진 `HtmlTrackElementList`에서 {@link HtmlTrackElement} 가져오기
* {@link TextTrack}.
*
* @param {TextTrack} 트랙
* 트랙 요소와 관련된 트랙.
*
* @return {HtmlTrackElement|정의되지 않음}
* 발견되었거나 정의되지 않은 트랙 요소.
*
* @사적인
*/
getTrackElementByTrack_(트랙) {
let trackElement_;
for (let i = 0, 길이 = this.trackElements_.length; i < 길이; i++) {
if (트랙 === this.trackElements_[i].track) {
trackElement_ = this.trackElements_[i];
부서지다;
}
}
trackElement_ 반환;
}
/**
* `HtmlTrackElementList`에서 {@link HtmlTrackElement} 제거
*
* @param {HtmlTrackElement} 트랙 요소
* 목록에서 제거할 트랙 요소입니다.
*
* @사적인
*/
removeTrackElement_(트랙 요소) {
for (let i = 0, 길이 = this.trackElements_.length; i < 길이; i++) {
if (trackElement === this.trackElements_[i]) {
if (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 내보내기;