/**
 * @file text-track-button.js
 * /
importar TrackButton desde '../track-button.js';
importar componente desde '../../component.js';
importar TextTrackMenuItem desde './text-track-menu-item.js';
importar OffTextTrackMenuItem desde './off-text-track-menu-item.js';

/**
 * La clase base para botones que alternan tipos de pistas de texto específicas (por ejemplo, subtítulos)
 *
 * @extiende el botón de menú
 * /
clase TextTrackButton extiende TrackButton {

  /**
   * Crea una instancia de esta clase.
   *
   * @param {Jugador} jugador
   * El `Jugador` al que se debe adjuntar esta clase.
   *
   * @param {Objeto} [opciones={}]
   * El almacén de clave/valor de las opciones del jugador.
   * /
  constructor(jugador, opciones = {}) {
    options.tracks = player.textTracks();

    super(jugador, opciones);
  }

  /**
   * Crear un elemento de menú para cada pista de texto
   *
   * @param {TextTrackMenuItem[]} [elementos=[]]
   * Conjunto existente de elementos para usar durante la creación
   *
   * @return {TextTrackMenuItem[]}
   * Matriz de elementos de menú que se crearon
   * /
  createItems(items = [], TrackMenuItem = TextTrackMenuItem) {

    // La etiqueta es una anulación de la [pista] fuera de la etiqueta
    // Usado para localizar leyendas/subtítulos
    dejar etiquetar;

    if (esta.etiqueta_) {
      etiqueta = `${this.label_} off`;
    }
    // Agregue un elemento de menú APAGADO para apagar todas las pistas
    items.push(nuevo OffTextTrackMenuItem(this.player_, {
      tipos: este.tipos_,
      tipo: este.tipo_,
      etiqueta
    }));

    este.hideThreshold_ += 1;

    const pistas = this.player_.textTracks();

    if (!Array.isArray(this.kinds_)) {
      este.tipos_ = [este.tipo_];
    }

    para (sea i = 0; i < pistas.longitud; i++) {
      const pista = pistas[i];

      // solo agregue pistas que sean del tipo apropiado y tengan una etiqueta
      if (este.tipos_.indexOf(pista.tipo) > -1) {

        const item = new TrackMenuItem(this.player_, {
          pista,
          tipos: este.tipos_,
          tipo: este.tipo_,
          // MenuItem es seleccionable
          seleccionable: verdadero,
          // MenuItem NO es multiseleccionable (es decir, solo uno puede marcarse como "seleccionado" a la vez)
          multiseleccionable: falso
        });

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

    devolver los artículos;
  }

}

Component.registerComponent('TextTrackButton', TextTrackButton);
exportar TextTrackButton predeterminado;