/**
 * @file text-track-button.js
 */
import TrackButton de '../track-button.js' ;
import Component from '../../component.js' ;
import TextTrackMenuItem de './text-track-menu-item.js' ;
import OffTextTrackMenuItem from './off-text-track-menu-item.js' ;

/**
 * Classe de base pour les boutons permettant d'activer des types de pistes de texte spécifiques (par exemple, les sous-titres)
 *
 * @extends MenuButton
 */
class TextTrackButton extends TrackButton {

  /**
   * Crée une instance de cette classe.
   *
   * @param {Player} player
   *        Le `Player` auquel cette classe doit être attachée.
   *
   * @param {Objet} [options={}]
   *        La mémoire clé/valeur des options du lecteur.
   */
  constructor(player, options = {}) {
    options.tracks = player.textTracks() ;

    super(player, options) ;
  }

  /**
   * Créer un élément de menu pour chaque piste de texte
   *
   * @param {TextTrackMenuItem[]} [items=[]]
   *        Tableau existant d'éléments à utiliser lors de la création
   *
   * @return {TextTrackMenuItem[]}
   *         Tableau des éléments de menu qui ont été créés
   */
  createItems(items = [], TrackMenuItem = TextTrackMenuItem) {

    // L'étiquette est un substitut à l'étiquette [track] off
    // Utilisé pour localiser les légendes/sous-titres
    let label ;

    if (this.label_) {
      label = `${this.label_} off` ;
    }
    // Ajouter un élément de menu OFF pour désactiver toutes les pistes
    items.push(new OffTextTrackMenuItem(this.player_, {
      types : this.kinds_,
      type : this.kind_,
      étiquette
    })) ;

    this.hideThreshold_ += 1 ;

    const tracks = this.player_.textTracks() ;

    if (!Array.isArray(this.kinds_)) {
      this.kinds_ = [this.kind_] ;
    }

    for (let i = 0 ; i < tracks.length ; i++) {
      const track = tracks[i] ;

      // n'ajouter que les pistes qui sont d'un type approprié et qui ont une étiquette
      if (this.kinds_.indexOf(track.kind) > -1) {

        const item = new TrackMenuItem(this.player_, {
          la voie ferrée,
          types : this.kinds_,
          type : this.kind_,
          // L'élément de menu est sélectionnable
          sélectionnable : true,
          // L'élément de menu n'est PAS multi-sélectionnable (c'est-à-dire qu'un seul élément peut être marqué comme "sélectionné" à la fois)
          multiSelectable : false
        }) ;

        item.addClass(`vjs-${track.kind}-menu-item`) ;
        items.push(item) ;
      }
    }

    les articles de retour ;
  }

}

Component.registerComponent('TextTrackButton', TextTrackButton) ;
export default TextTrackButton ;