/**
 * @file html-track-element.js
 */

'../event-target'에서 EventTarget 가져오기;
'../tracks/text-track'에서 TextTrack 가져오기;

/**
 * @memberof HTMLTrackElement
 * @typedef {HTMLTrackElement~ReadyState}
 * @enum {숫자}
 */
상수 없음 = 0;
const 로딩 = 1;
const 로드됨 = 2;
상수 오류 = 3;

/**
 * DOM에 표시되는 단일 트랙.
 *
 * @see [사양]{@링크 https://html.spec.whatwg.org/multipage/embedded-content.html#htmltrackelement}
 * @extends 이벤트 타겟
 */
클래스 HTMLTrackElement 확장 EventTarget {

  /**
   * 이 클래스의 인스턴스를 만듭니다.
   *
   * @param {객체} 옵션={}
   * 옵션 이름 및 값의 개체
   *
   * @param {기술} options.tech
   * 이 HTMLTrackElement를 소유하는 기술에 대한 참조입니다.
   *
   * @param {TextTrack~Kind} [options.kind='자막']
   * 유효한 텍스트 트랙 종류입니다.
   *
   * @param {TextTrack~Mode} [options.mode='비활성화됨']
   * 유효한 텍스트 트랙 모드.
   *
   * @param {string} [options.id='vjs_track_' + Guid.newGUID()]
   * 이 TextTrack의 고유 ID입니다.
   *
   * @param {문자열} [옵션.라벨='']
   * 이 트랙의 메뉴 레이블입니다.
   *
   * @param {문자열} [옵션.언어='']
   * 유효한 두 문자 언어 코드입니다.
   *
   * @param {문자열} [options.srclang='']
   * 유효한 두 문자 언어 코드입니다. 대안이지만 우선 순위가 낮음
   * `options.language` 버전
   *
   * @param {문자열} [옵션.src]
   * TextTrack 큐에 대한 URL.
   *
   * @param {부울} [옵션.기본값]
   * 이 트랙이 기본적으로 켜짐 또는 꺼짐인지 여부.
   */
  생성자(옵션 = {}) {
    감독자();

    let readyState;

    const track = new TextTrack(옵션);

    this.kind = track.kind;
    this.src = 트랙.src;
    this.srclang = 트랙.언어;
    this.label = 트랙.라벨;
    this.default = 트랙.디폴트;

    Object.defineProperties(이것, {

      /**
       * @memberof HTMLTrackElement
       * @member {HTMLTrackElement~ReadyState} readyState
       * 트랙 요소의 현재 준비 상태.
       * @사례
       */
      준비 상태: {
        얻다() {
          readyState 반환;
        }
      },

      /**
       * @memberof HTMLTrackElement
       * @member {TextTrack} 트랙
       * 기본 TextTrack 개체입니다.
       * @사례
       *
       */
      길: {
        얻다() {
          리턴 트랙;
        }
      }
    });

    readyState = 없음;

    /**
     * @listens TextTrack#loadeddata
     * @fires HTMLTrackElement#load
     */
    track.addEventListener('loadeddata', () => {
      readyState = 로드됨;

      this.trigger({
        유형: '로드',
        대상: 이
      });
    });
  }
}

HTMLTrackElement.prototype.allowedEvents_ = {
  로드: '로드'
};

HTMLTrackElement.NONE = 없음;
HTMLTrackElement.LOADING = 로드 중;
HTMLTrackElement.LOADED = 로드됨;
HTMLTrackElement.ERROR = 오류;

기본 HTMLTrackElement 내보내기;