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

/**
 * 單個“VideoTrack”的表示。
 *
 * @see [規範]{@link https://html.spec.whatwg.org/multipage/embedded-content.html#videotrack}
 * @extends 軌道
 */
類 VideoTrack 擴展軌道 {

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

    超級(設置);

    讓選擇=假;

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

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

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

導出默認 VideoTrack;