    /**
     * @file audio-track-menu-item.js
     */
    import MenuItem from '../../menu/menu-item.js';
    import Component from '../../component.js';
    import * as Fn from '../../utils/fn.js';

    /**
     * An {@link AudioTrack} {@link MenuItem}
     *
     * @extends MenuItem
     */
    class AudioTrackMenuItem extends MenuItem {

      /**
       * Creates an instance of this class.
       *
       * @param {Player} player
       *        The `Player` that this class should be attached to.
       *
       * @param {Object} [options]
       *        The key/value store of player options.
       */
      constructor(player, options) {
        const track = options.track;
        const tracks = player.audioTracks();

        // Modify options for parent MenuItem class's init.
        options.label = track.label || track.language || 'Unknown';
        options.selected = track.enabled;

        super(player, options);

        this.track = track;

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

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

      /**
       * This gets called when an `AudioTrackMenuItem is "clicked". See {@link ClickableComponent}
       * for more detailed information on what a click can be.
       *
       * @param {EventTarget~Event} [event]
       *        The `keydown`, `tap`, or `click` event that caused this function to be
       *        called.
       *
       * @listens tap
       * @listens click
       */
      handleClick(event) {
        const tracks = this.player_.audioTracks();

        super.handleClick(event);

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

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

      /**
       * Handle any {@link AudioTrack} change.
       *
       * @param {EventTarget~Event} [event]
       *        The {@link AudioTrackList#change} event that caused this to run.
       *
       * @listens AudioTrackList#change
       */
      handleTracksChange(event) {
        this.selected(this.track.enabled);
      }
    }

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