/**
* @cargador de archivos.js
* /
importar componente desde '../component.js';
importar tecnología desde './tech.js';
importar {toTitleCase} desde '../utils/string-cases.js';
importar mergeOptions desde '../utils/merge-options.js';
/**
* El `MediaLoader` es el `Componente` que decide qué tecnología de reproducción cargar
* cuando se inicializa un reproductor.
*
* Componente @extiende
* /
clase MediaLoader extiende Componente {
/**
* Crear una instancia de esta clase.
*
* @param {Jugador} jugador
* El `Jugador` al que esta clase debe adjuntarse.
*
* @param {Objeto} [opciones]
* El almacén de clave/valor de las opciones del jugador.
*
* @param {Componente~ReadyCallback} [listo]
* La función que se ejecuta cuando este componente está listo.
* /
constructor(jugador, opciones, listo) {
// MediaLoader no tiene ningún elemento
const options_ = mergeOptions({createEl: false}, options);
super(jugador, opciones_, listo);
// Si no hay fuentes cuando se inicializa el reproductor,
// carga la primera tecnología de reproducción admitida.
if (!opciones.opciones.jugador.fuentes || opciones.opciones.jugador.fuentes.longitud === 0) {
for (sea i = 0, j = options.playerOptions.techOrder; i < j.longitud; i++) {
const techName = toTitleCase(j[i]);
let tech = Tech.getTech(techName);
// Admite el comportamiento anterior de los técnicos que se registran como componentes.
// Eliminar una vez que se elimine ese comportamiento obsoleto.
if (!nombreTecnológico) {
tech = Component.getComponent(techName);
}
// Comprobar si el navegador soporta esta tecnología
si (tecnología && tech.isSupported()) {
player.loadTech_(nombreTecnología);
romper;
}
}
} else {
// Recorra las tecnologías de reproducción (p. ej., HTML5) y busque soporte.
// Luego cargue la mejor fuente.
// Algunas suposiciones aquí:
// Todas las tecnologías de reproducción respetan la precarga false.
player.src(opciones.playerOptions.sources);
}
}
}
Component.registerComponent('MediaLoader', MediaLoader);
exportar MediaLoader predeterminado;