/**
* @파일 로더.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 내보내기;