從 './track-enums' 導入 {AudioTrackKind};
從“./track”導入曲目;
從'../utils/merge-options'導入合併;

/**
 * 單個“AudioTrack”的表示。如果它是 {@link AudioTrackList} 的一部分
 * 一次只會啟用列表中的一個 `AudioTrack`。
 *
 * @see [規範]{@link https://html.spec.whatwg.org/multipage/embedded-content.html#audiotrack}
 * @extends 軌道
 */
類 AudioTrack 擴展軌道 {

  /**
   * 創建此類的一個實例。
   *
   * @param {對象} [選項={}]
   * 選項名稱和值的對象
   *
   * @param {AudioTrack~Kind} [options.kind='']
   * 有效的音軌類型
   *
   * @param {string} [options.id='vjs_track_' + Guid.newGUID()]
   * 此 AudioTrack 的唯一 ID。
   *
   * @param {string} [options.label='']
   * 此軌道的菜單標籤。
   *
   * @param {string} [options.language='']
   * 有效的雙字符語言代碼。
   *
   * @param {boolean} [options.enabled]
   * 如果此曲目是當前正在播放的曲目。如果這條軌道是
   * 一個{@link AudioTrackList},只會啟用一個{@link AudioTrack}。
   */
  構造函數(選項={}){
    常量設置=合併(選項,{
      種類:AudioTrackKind[選項.種類] || ''
    });

    超級(設置);

    讓啟用=假;

    /**
     * @memberof AudioTrack
     * @member {boolean} 啟用
     * 是否啟用此 `AudioTrack`。設置時會
     * 如果啟用狀態發生變化,則觸發 {@link AudioTrack#enabledchange}。
     * @實例
     *
     * @fires VideoTrack#selectedchange
     */
    Object.defineProperty(this, 'enabled', {
      得到() {
        返回啟用;
      },
      設置(新啟用){
        // 無效或未更改的值
        如果(類型新啟用!== '布爾' || 新啟用 === 啟用){
          返回;
        }
        啟用=新啟用;

        /**
         * 在此軌道上啟用更改時觸發的事件。這允許
         * 保存此軌道的 AudioTrackList 以進行相應操作。
         *
         * > 注意:這不是規範的一部分!原生曲目就可以了
         * 這在內部沒有事件。
         *
         * @event AudioTrack#enabledchange
         * @type {EventTarget~Event}
         */
        this.trigger('enabledchange');
      }
    });

    // 如果用戶將此軌道設置為選中則
    // 否則將 selected 設置為真值
    // 我們保持假
    如果(設置。啟用){
      this.enabled = settings.enabled;
    }
    this.loaded_ = true;
  }
}

導出默認 AudioTrack;