/**
 * @file audio-track-menu-item.js
 * /
importar MenuItem desde '../../menu/menu-item.js';
importar componente desde '../../component.js';
importar * como Dom desde '../../utils/dom.js';

/**
 * Una {@link AudioTrack} {@link MenuItem}
 *
 * @extiende elemento de menú
 * /
clase AudioTrackMenuItem extiende MenuItem {

  /**
   * 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) {
    const pista = opciones.pista;
    const pistas = player.audioTracks();

    // Modificar las opciones para el inicio de la clase principal MenuItem.
    opciones.etiqueta = pista.etiqueta || pista.idioma || 'Desconocido';
    opciones.seleccionado = seguimiento.habilitado;

    super(jugador, opciones);

    esta.pista = pista;

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

    const changeHandler = (... argumentos) => {
      this.handleTracksChange.apply(this, args);
    };

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

  createEl(tipo, accesorios, atributos) {
    const el = super.createEl(tipo, props, attrs);
    const parentSpan = el.querySelector('.vjs-menu-item-text');

    if (this.options_.track.kind === 'main-desc') {
      parentSpan.appendChild(Dom.createEl('span', {
        className: 'vjs-icono-marcador de posición'
      }, {
        'aria-oculto': verdadero
      }));
      parentSpan.appendChild(Dom.createEl('span', {
        className: 'vjs-control-texto',
        textContent: ' ' + this.localize('Descripciones')
      }));
    }

    volver el;
  }

  /**
   * Esto se llama cuando se "hace clic" en un `AudioTrackMenuItem'. Ver {@link ClickableComponent}
   * para obtener información más detallada sobre lo que puede ser un clic.
   *
   * @param {Objetivo de evento~Evento} [evento]
   * El evento `keydown`, `top` o `click` que hizo que esta función se desactivara
   * llamado.
   *
   * @escucha toca
   * @escucha clic
   * /
  handleClick(evento) {
    super.handleClick(evento);

    // la lista de pistas de audio alternará automáticamente otras pistas
    // fuera para nosotros.
    this.track.enabled = true;

    // cuando se usan pistas de audio nativas, queremos asegurarnos de que otras pistas estén desactivadas
    if (this.player_.tech_.featuresNativeAudioTracks) {
      const pistas = this.player_.audioTracks();

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

        // salta la pista actual ya que la habilitamos arriba
        if (pista === esta.pista) {
          continuar;
        }

        track.enabled = track === this.track;
      }
    }
  }

  /**
   * Manejar cualquier cambio de {@link AudioTrack}.
   *
   * @param {Objetivo de evento~Evento} [evento]
   * El evento {@link AudioTrackList#change} que hizo que esto se ejecutara.
   *
   * @escucha AudioTrackList#cambiar
   * /
  handleTracksChange(evento) {
    this.selected(this.track.enabled);
  }
}

Component.registerComponent('AudioTrackMenuItem', AudioTrackMenuItem);
exportar elemento de menú de pista de audio predeterminado;