/**
 * @파일 로더.js
 */
'../component.js'에서 컴포넌트 가져오기;
'./tech.js'에서 기술 가져오기;
'../utils/string-cases.js'에서 {toTitleCase} 가져오기;
'../utils/merge-options.js'에서 mergeOptions 가져오기;

/**
 * `MediaLoader`는 로드할 재생 기술을 결정하는 `Component`입니다.
 * 플레이어가 초기화될 때.
 *
 * @extends 컴포넌트
 */
클래스 MediaLoader는 구성 요소 {를 확장합니다.

  /**
   * 이 클래스의 인스턴스를 만듭니다.
   *
   * @param {플레이어} 플레이어
   * 이 클래스가 연결되어야 하는 `Player`.
   *
   * @param {객체} [옵션]
   * 플레이어 옵션의 키/값 저장소.
   *
   * @param {Component~ReadyCallback} [준비]
   * 이 구성 요소가 준비되었을 때 실행되는 기능입니다.
   */
  생성자(플레이어, 옵션, 준비) {
    // MediaLoader에는 요소가 없습니다.
    const options_ = mergeOptions({createEl: false}, options);

    슈퍼(플레이어, 옵션_, 준비);

    // 플레이어 초기화 시 소스가 없다면,
    // 지원되는 첫 번째 재생 기술을 로드합니다.

    if (!options.playerOptions.sources || options.playerOptions.sources.length === 0) {
      for (let i = 0, j = options.playerOptions.techOrder; i < j.길이; i++) {
        const techName = toTitleCase(j[i]);
        let tech = Tech.getTech(techName);

        // 구성 요소로 등록되는 기술자의 이전 동작을 지원합니다.
        // 더 이상 사용되지 않는 동작이 제거되면 제거합니다.
        if (!techName) {
          기술 = Component.getComponent(techName);
        }

        // 브라우저가 이 기술을 지원하는지 확인
        만약 (기술 && tech.isSupported()) {
          player.loadTech_(techName);
          부서지다;
        }
      }
    } else {
      // 재생 기술(예: HTML5)을 반복하고 지원 여부를 확인합니다.
      // 그런 다음 최상의 소스를 로드합니다.
      // 여기에 몇 가지 가정이 있습니다.
      // 모든 재생 기술은 사전 로드 false를 따릅니다.
      player.src(options.playerOptions.sources);
    }
  }
}

Component.registerComponent('MediaLoader', MediaLoader);
기본 MediaLoader 내보내기;