/**
* @file text-track-cue-list.js
*/
/**
* @typedef {객체} TextTrackCueList~TextTrackCue
*
* @property {문자열} 아이디
* 이 텍스트 트랙 큐의 고유 ID
*
* @property {숫자} 시작시간
* 이 텍스트 트랙 큐의 시작 시간
*
* @property {숫자} endTime
* 이 텍스트 트랙 큐의 종료 시간
*
* @property {boolean} pauseOnExit
* true인 경우 종료 시간에 도달하면 일시 중지합니다.
*
* @see [사양]{@링크 https://html.spec.whatwg.org/multipage/embedded-content.html#texttrackcue}
*/
/**
* TextTrackCue 목록.
*
* @see [Spec]{@link https://html.spec.whatwg.org/multipage/embedded-content.html#texttrackcuelist}
*/
클래스 TextTrackCueList {
/**
* 이 클래스의 인스턴스를 생성합니다.
*
* @param {Array} 큐
* 초기화할 큐 목록
*/
생성자(큐) {
TextTrackCueList.prototype.setCues_.call(this, cues);
/**
* @memberof TextTrackCueList
* @member {번호} 길이
* TextTrackCueList에 있는 `TextTrackCue`의 현재 수입니다.
* @사례
*/
Object.defineProperty(이것, '길이', {
얻다() {
this.length_를 반환합니다.
}
});
}
/**
* 이 목록의 큐에 대한 세터. 게터 생성
* 큐에 대한 인덱스.
*
* @param {Array} 큐
* 설정할 큐의 배열
*
* @사적인
*/
setCues_(cues) {
const oldLength = this.length || 0;
내가 = 0하자;
const l = cues.length;
this.cues_ = 신호;
this.length_ = 큐.길이;
const defineProp = 함수(인덱스) {
if (!('' + index in this)) {
Object.defineProperty(이것, '' + 색인, {
얻다() {
return this.cues_[인덱스];
}
});
}
};
if (오래된 길이 < 엘) {
i = 이전 길이;
(; 나는 < 엘; i++) {
defineProp.call(this, i);
}
}
}
/**
* 현재 `TextTrackCueList`에 있는 `TextTrackCue`를 id로 가져옵니다.
*
* @param {문자열} 아이디
* 검색해야 하는 큐의 ID입니다.
*
* @return {TextTrackCueList~TextTrackCue|null}
* 단일 큐 또는 아무것도 발견되지 않은 경우 null입니다.
*/
getCueById(id) {
let 결과 = null;
for (let i = 0, l = this.length; i < 엘; i++) {
const cue = this[i];
if (cue.id === id) {
결과 = 큐;
부서지다;
}
}
반환 결과;
}
}
기본 TextTrackCueList 내보내기;