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

從 '../event-target' 導入 EventTarget;
從 '../tracks/text-track' 導入 TextTrack;

/**
 * @memberof HTMLTrackElement
 * @typedef {HTMLTrackElement~ReadyState}
 * @enum {數字}
 */
常量無= 0;
常量加載= 1;
常量加載= 2;
常量錯誤 = 3;

/**
 * 在 DOM 中表示的單個軌道。
 *
 * @see [規範]{@link https://html.spec.whatwg.org/multipage/embedded-content.html#htmltrackelement}
 * @extends 事件目標
 */
類 HTMLTrackElement 擴展 EventTarget {

  /**
   * 創建此類的一個實例。
   *
   * @param {Object} 選項={}
   * 選項名稱和值的對象
   *
   * @param {Tech} options.tech
   * 對擁有此 HTMLTrackElement 的技術的引用。
   *
   * @param {TextTrack~Kind} [options.kind='subtitles']
   * 一個有效的文本軌道類型。
   *
   * @param {TextTrack~Mode} [options.mode='disabled']
   * 一個有效的文本軌道模式。
   *
   * @param {string} [options.id='vjs_track_' + Guid.newGUID()]
   * 此 TextTrack 的唯一 ID。
   *
   * @param {string} [options.label='']
   * 此軌道的菜單標籤。
   *
   * @param {string} [options.language='']
   * 有效的雙字符語言代碼。
   *
   * @param {string} [options.srclang='']
   * 有效的雙字符語言代碼。一個替代方案,但被取消優先級
   * `options.language` 的版本
   *
   * @param {string} [options.src]
   * TextTrack 提示的 url。
   *
   * @param {boolean} [options.default]
   * 如果此軌道應默認打開或關閉。
   */
  構造函數(選項={}){
    極好的();

    讓就緒狀態;

    const track = new TextTrack(選項);

    this.kind = track.kind;
    this.src = track.src;
    this.srclang = track.language;
    this.label = track.label;
    this.default = track.default;

    Object.defineProperties(這個,{

      /**
       * @memberof HTMLTrackElement
       * @member {HTMLTrackElement~ReadyState} readyState
       * 軌道元素的當前就緒狀態。
       * @實例
       */
      就緒狀態:{
        得到() {
          返回就緒狀態;
        }
      },

      /**
       * @memberof HTMLTrackElement
       * @member {TextTrack} 軌道
       * 底層 TextTrack 對象。
       * @實例
       *
       */
      追踪: {
        得到() {
          返回軌道;
        }
      }
    });

    就緒狀態=無;

    /**
     * @listens TextTrack#loadeddata
     * @fires HTMLTrackElement#load
     */
    track.addEventListener('loadeddata', () => {
      就緒狀態=加載;

      這個。觸發({
        類型:'加載',
        目標:這個
      });
    });
  }
}

HTMLTrackElement.prototype.allowedEvents_ = {
  加載:'加載'
};

HTMLTrackElement.NONE = NONE;
HTMLTrackElement.LOADING = 加載中;
HTMLTrackElement.LOADED = LOADED;
HTMLTrackElement.ERROR = 錯誤;

導出默認的 HTMLTrackElement;