/**
* @파일 트랙.js
*/
import * as Guid from '../utils/guid.js';
'../event-target'에서 EventTarget 가져오기;
/**
* {@link AudioTrack}의 모든 공통 기능을 포함하는 트랙 클래스,
* {@link VideoTrack} 및 {@link TextTrack}.
*
* > 메모: 이 클래스는 직접 사용하면 안 됩니다.
*
* @see {@link https://html.spec.whatwg.org/multipage/embedded-content.html}
* @extends 이벤트 타겟
* @추상적인
*/
클래스 추적은 EventTarget을 확장 {
/**
* 이 클래스의 인스턴스를 만듭니다.
*
* @param {객체} [옵션={}]
* 옵션 이름 및 값의 개체
*
* @param {문자열} [옵션.종류='']
* 생성 중인 트랙 유형에 유효한 종류입니다.
*
* @param {string} [options.id='vjs_track_' + Guid.newGUID()]
* 이 AudioTrack의 고유 ID입니다.
*
* @param {문자열} [옵션.라벨='']
* 이 트랙의 메뉴 레이블입니다.
*
* @param {문자열} [옵션.언어='']
* 유효한 두 문자 언어 코드입니다.
*
* @추상적인
*/
생성자(옵션 = {}) {
감독자();
const trackProps = {
아이디: options.id || 'vjs_track_' + Guid.newGUID(),
종류: options.kind || '',
언어: options.language || ''
};
let label = options.label || '';
/**
* @memberof 트랙
* @멤버 {문자열} 아이디
* 이 트랙의 ID입니다. 생성 후에는 변경할 수 없습니다.
* @사례
*
* @읽기전용
*/
/**
* @memberof 트랙
* @member {문자열} 종류
* 이것이 트랙의 종류입니다. 생성 후에는 변경할 수 없습니다.
* @사례
*
* @읽기전용
*/
/**
* @memberof 트랙
* @member {문자열} 언어
* 이 트랙의 두 글자 언어 코드입니다. 이후 변경 불가
* 창조.
* @사례
*
* @읽기전용
*/
for (trackProps의 const 키) {
Object.defineProperty(이것, 키, {
얻다() {
return trackProps[키];
},
세트() {}
});
}
/**
* @memberof 트랙
* @member {문자열} 라벨
* 이 트랙의 레이블입니다. 생성 후에는 변경할 수 없습니다.
* @사례
*
* @fires Track#labelchange
*/
Object.defineProperty(이것, '라벨', {
얻다() {
반품 라벨;
},
설정(newLabel) {
if (newLabel !== 레이블) {
레이블 = newLabel;
/**
* 이 트랙에서 레이블이 변경될 때 실행되는 이벤트입니다.
*
* > 메모: 이것은 사양의 일부가 아닙니다!
*
* @event Track#labelchange
* @type {이벤트대상~이벤트}
*/
this.trigger('labelchange');
}
}
});
}
}
기본 트랙 내보내기;