text: import videojs from 'video.js';
  
  const VideoJsButtonClass = videojs.getComponent('MenuButton');
  const VideoJsMenuClass = videojs.getComponent('Menu');
  const VideoJsComponent = videojs.getComponent('Component');
  const Dom = videojs.dom;
  
  /**
   * Convert string to title case.
   *
   * @param {string} string - the string to convert
   * @return {string} the returned titlecase string
   */
  function toTitleCase(string) {
    if (typeof string !== 'string') {
      return string;
    }
  
    return string.charAt(0).toUpperCase() + string.slice(1);
  }
  
  /**
   * Extend vjs button class for quality button.
   */
  export default class ConcreteButton extends VideoJsButtonClass {
    /**
     * Button constructor.
     *
     * @param {Player} player - videojs player instance
     */
    constructor(player) {
      super(player, {
        title: player.localize('Quality'),
        name: 'QualityButton',
      });
    }
  
    /**
     * Creates button items.
     *
     * @return {Array} - Button items
     */
    createItems() {
      return [];
    }
  
    /**
     * Create the menu and add all items to it.
     *
     * @return {Menu}
     *         The constructed menu
     */
    createMenu() {
      const menu = new VideoJsMenuClass(this.player_, { menuButton: this });
  
      this.hideThreshold_ = 0;
  
      // Add a title list item to the top
      if (this.options_.title) {
        const titleEl = Dom.createEl('li', {
          className: 'vjs-menu-title',
          innerHTML: toTitleCase(this.options_.title),
          tabIndex: -1,
        });
        const titleComponent = new VideoJsComponent(this.player_, { el: titleEl });
  
        this.hideThreshold_ += 1;
  
        menu.addItem(titleComponent);
      }
  
      this.items = this.createItems();
  
      if (this.items) {
        // Add menu items to the menu
        for (let i = 0; i < this.items.length; i++) {
          menu.addItem(this.items[i]);
        }
      }
  
      return menu;
    }
  }
  