/**
 * @file descriptions-button.js
 * /
importar TextTrackButton desde './text-track-button.js';
importar componente desde '../../component.js';
importar * como Fn desde '../../utils/fn.js';

/**
 * El componente de botón para alternar y seleccionar descripciones
 *
 * @extiende TextTrackButton
 * /
clase DescriptionsButton extiende TextTrackButton {

  /**
   * 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.
   *
   * @param {Componente~ReadyCallback} [listo]
   * La función a llamar cuando este componente esté listo.
   * /
  constructor(jugador, opciones, listo) {
    super(jugador, opciones, listo);

    const pistas = player.textTracks();
    const changeHandler = Fn.bind(this, this.handleTracksChange);

    pistas.addEventListener('cambio', changeHandler);
    this.on('dispose', function() {
      pistas.removeEventListener('cambio', changeHandler);
    });
  }

  /**
   * Manejar el cambio de pista de texto
   *
   * @param {EventTarget~Evento} evento
   * El evento que provocó la ejecución de esta función
   *
   * @escucha TextTrackList#cambio
   * /
  handleTracksChange(evento) {
    const pistas = this.player().textTracks();
    dejar deshabilitado = falso;

    // Comprobar si se muestra una pista de un tipo diferente
    for (sea i = 0, l = pistas.longitud; i < yo; i++) {
      const pista = pistas[i];

      if (pista.tipo !== este.tipo_ && track.mode === 'mostrando') {
        deshabilitado = verdadero;
        romper;
      }
    }

    // Si se muestra otra pista, deshabilite este botón de menú
    si (deshabilitado) {
      esto.deshabilitar();
    } else {
      esto.habilitar();
    }
  }

  /**
   * Construye el DOM predeterminado `className`.
   *
   * @return {cadena}
   * El DOM `className` para este objeto.
   * /
  construirClaseCSS() {
    return `vjs-descriptions-button ${super.buildCSSClass()}`;
  }

  buildWrapperCSSClass() {
    return `vjs-descriptions-button ${super.buildWrapperCSSClass()}`;
  }
}

/**
 * `tipo` de TextTrack a buscar para asociarlo a este menú.
 *
 * @tipo {cadena}
 * @privado
 * /
DescriptionsButton.prototype.kind_ = 'descripciones';

/**
 * El texto que debería mostrarse sobre los controles `DescriptionsButton`s. Añadido para la localización.
 *
 * @tipo {cadena}
 * @privado
 * /
DescriptionsButton.prototype.controlText_ = 'Descripciones';

Component.registerComponent('DescriptionsButton', DescriptionsButton);
exportar el botón de descripción predeterminado;