/**
 * @file loader.js
 * /
importiere Komponente aus '../component.js';
importiere Tech aus './tech.js';
importiere {toTitleCase} aus '../utils/string-cases.js';
import mergeOptions from '../utils/merge-options.js';

/**
 * Der `MediaLoader` ist die `Component`, die entscheidet, welche Wiedergabetechnologie geladen werden soll
 * wenn ein Spieler initialisiert wird.
 *
 * @erweitert Komponente
 * /
Klasse MediaLoader erweitert Komponente {

  /**
   * Erstellen Sie eine Instanz dieser Klasse.
   *
   * @param {Player} Spieler
   *        Der `Player`, an den diese Klasse angehängt werden soll.
   *
   * @param {Object} [Optionen]
   *        Der Schlüssel/Wertspeicher der Playeroptionen.
   *
   * @param {Component~ReadyCallback} [ready]
   * Die Funktion, die ausgeführt wird, wenn diese Komponente bereit ist.
   * /
  constructor(player, options, ready) {
    //MediaLoader hat kein Element
    const options_ = mergeOptions ({createEl: falsch}, Optionen);

    super (Spieler, Optionen_, bereit);

    //Wenn es bei der Initialisierung des Players keine Quellen gibt,
    //lade die erste unterstützte Wiedergabe-Technologie.

    wenn (! options.playerOptions.Sources || options.playerOptions.sources.length === 0) {
      für (sei i = 0, j = options.playerOptions.techOrder; i < j.length; i++) {
        const techName = toTitleCase (j [i]);
        let tech = Tech.getTech(techName);

        // Unterstützung des alten Verhaltens, dass Techs als Komponenten registriert werden.
        // Entfernen, sobald das veraltete Verhalten entfernt wird.
        wenn (! Technischer Name) {
          tech = Component.getComponent(techName);
        }

        // Prüfen Sie, ob der Browser diese Technologie unterstützt
        wenn (tech && tech.isSupported ()) {
          player.LoadTech_ (TechName);
          pause;
        }
      }
    } sonst {
      //Durchsuche die Wiedergabe-Technologien (z. B. HTML5) und überprüfe, ob sie unterstützt werden.
      //Dann lade die beste Quelle.
      //Ein paar Annahmen hier:
      //Alle Wiedergabe-Technologien respektieren Preload false.
      player.src (Options.PlayerOptions.Quellen);
    }
  }
}

component.registerComponent ('MediaLoader', MediaLoader);
exportiert den Standard-MediaLoader;