/**
 * @file text-track-cue-list.js
 */

/**
 * @typedef {對象} TextTrackCueList~TextTrackCue
 *
 * @property {字符串} ID
 * 此文本軌道提示的唯一 ID
 *
 * @property {number} 開始時間
 * 此文本軌道提示的開始時間
 *
 * @property {number} 結束時間
 * 此文本軌道提示的結束時間
 *
 * @property {boolean} pauseOnExit
 * 如果為真,則在到達結束時間時暫停。
 *
 * @see [規範]{@link https://html.spec.whatwg.org/multipage/embedded-content.html#texttrackcue}
 */

/**
 * TextTrackCues 列表。
 *
 * @see [規範]{@link https://html.spec.whatwg.org/multipage/embedded-content.html#texttrackcuelist}
 */
類 TextTrackCueList {

  /**
   * 創建這個類的一個實例..
   *
   * @param {Array} 線索
   * 要初始化的提示列表
   */
  構造函數(提示){
    TextTrackCueList.prototype.setCues_.call(this, cues);

    /**
     * @memberof TextTrackCueList
     * @member {number} 長度
     * TextTrackCueList 中 `TextTrackCue` 的當前數量。
     * @實例
     */
    Object.defineProperty(this, '長度', {
      得到() {
        返回 this.length_;
      }
    });
  }

  /**
   * 此列表中提示的設置器。創建吸氣劑
   * 提示的索引。
   *
   * @param {Array} 線索
   * 要設置的一系列提示
   *
   * @私人的
   */
  setCues_(提示){
    const oldLength = this.length || 0;
    讓我= 0;
    const l = cues.length;

    this.cues_ = 提示;
    this.length_ = cues.length;

    const defineProp = 函數(索引){
      如果(!(「+ 在這個索引)){
        Object.defineProperty(this, '' + index, {
          得到() {
            返回 this.cues_[index];
          }
        });
      }
    };

    如果 (舊長度 <  l) {
      i = 舊長度;

      對於(;我<我;我++){
        defineProp.call(this, i);
      }
    }
  }

  /**
   * 通過 id 獲取當前在 `TextTrackCueList` 中的 `TextTrackCue`。
   *
   * @param {string} id
   * 應搜索的提示的 id。
   *
   * @return {TextTrackCueList~TextTrackCue|null}
   * 如果沒有找到,則為單個提示或 null。
   */
  getCueById(id) {
    讓結果=空;

    對於(讓我 = 0,升 = 這個。長度;  < 我; 我 ++){
      const cue = this[i];

      如果(cue.id === id){
        結果=提示;
        休息;
      }
    }

    返回結果;
  }
}

導出默認的 TextTrackCueList;