'./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 {문자열} [옵션.라벨='']
   * 이 트랙의 메뉴 레이블입니다.
   *
   * @param {문자열} [옵션.언어='']
   * 유효한 두 문자 언어 코드입니다.
   *
   * @param {부울} [옵션.활성화]
   * 이 트랙이 현재 재생 중인 트랙인 경우. 이 트랙이
   * {@link AudioTrackList}, 하나의 {@link AudioTrack}만 활성화됩니다.
   */
  생성자(옵션 = {}) {
    const 설정 = 병합(옵션, {
      친절한: AudioTrackKind[옵션.종류] || ''
    });

    슈퍼(설정);

    활성화 = 거짓;

    /**
     * @memberof AudioTrack
     * @member {부울} 활성화됨
     * 이 `AudioTrack`이 활성화되어 있는지 여부. 이것을 설정할 때
     * 활성 상태가 변경되면 {@link AudioTrack#enabledchange}를 실행합니다.
     * @사례
     *
     * @fires VideoTrack#selectedchange
     */
    Object.defineProperty(이것, '활성화됨', {
      얻다() {
        반환 가능;
      },
      설정(newEnabled) {
        // 유효하지 않거나 변경되지 않은 값
        if (newEnabled 유형 !== '부울' || newEnabled === 사용) {
          반품;
        }
        활성화 = newEnabled;

        /**
         * 이 트랙에서 변경 사항이 활성화되면 실행되는 이벤트입니다. 이를 통해
         * 그에 따라 작동하도록 이 트랙을 보유하고 있는 AudioTrackList.
         *
         * > 메모: 이것은 사양의 일부가 아닙니다! 기본 트랙이 가능합니다.
         * 내부적으로는 이벤트가 없습니다.
         *
         * @event AudioTrack#enabledchange
         * @type {이벤트대상~이벤트}
         */
        this.trigger('활성화된 변경');
      }
    });

    // 사용자가 이 트랙을 선택으로 설정하면
    // 그렇지 않으면 선택된 값을 참 값으로 설정합니다.
    // 거짓으로 유지
    if (설정.활성화) {
      this.enabled = 설정.활성화;
    }
    this.loaded_ = 참;
  }
}

기본 AudioTrack 내보내기;