    /**
     * @file popup-button.js
     */
    import ClickableComponent from '../clickable-component.js';
    import Component from '../component.js';

    /**
     * A button class for use with {@link Popup} controls
     *
     * @extends ClickableComponent
     */
    class PopupButton extends ClickableComponent {

      /**
       * Create 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 = {}) {
        super(player, options);

        this.update();
      }

      /**
       * Update the `Popup` that this button is attached to.
       */
      update() {
        const popup = this.createPopup();

        if (this.popup) {
          this.removeChild(this.popup);
        }

        this.popup = popup;
        this.addChild(popup);

        if (this.items && this.items.length === 0) {
          this.hide();
        } else if (this.items && this.items.length > 1) {
          this.show();
        }
      }

      /**
       * Create a `Popup`. - Override with specific functionality for component
       *
       * @abstract
       */
      createPopup() {}

      /**
       * Create the `PopupButton`s DOM element.
       *
       * @return {Element}
       *         The element that gets created.
       */
      createEl() {
        return super.createEl('div', {
          className: this.buildCSSClass()
        });
      }

      /**
       * Builds the default DOM `className`.
       *
       * @return {string}
       *         The DOM `className` for this object.
       */
      buildCSSClass() {
        let menuButtonClass = 'vjs-menu-button';

        // If the inline option is passed, we want to use different styles altogether.
        if (this.options_.inline === true) {
          menuButtonClass += '-inline';
        } else {
          menuButtonClass += '-popup';
        }

        return `vjs-menu-button ${menuButtonClass} ${super.buildCSSClass()}`;
      }
    }

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