text: /**
   * --------------------------------------------------------------------------
   * Bootstrap (v5.0.1): button.js
   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
   * --------------------------------------------------------------------------
   */
  
  import { defineJQueryPlugin } from './util/index';
  import Data from './dom/data';
  import EventHandler from './dom/event-handler';
  import BaseComponent from './base-component';
  
  /**
   * ------------------------------------------------------------------------
   * Constants
   * ------------------------------------------------------------------------
   */
  
  const NAME = 'button';
  const DATA_KEY = 'bs.button';
  const EVENT_KEY = `.${DATA_KEY}`;
  const DATA_API_KEY = '.data-api';
  
  const CLASS_NAME_ACTIVE = 'active';
  
  const SELECTOR_DATA_TOGGLE = '[data-mdb-toggle="button"]';
  
  const EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`;
  
  /**
   * ------------------------------------------------------------------------
   * Class Definition
   * ------------------------------------------------------------------------
   */
  
  class Button extends BaseComponent {
    // Getters
  
    static get NAME() {
      return NAME;
    }
  
    // Public
  
    toggle() {
      // Toggle class and sync the `aria-pressed` attribute with the return value of the `.toggle()` method
      this._element.setAttribute('aria-pressed', this._element.classList.toggle(CLASS_NAME_ACTIVE));
    }
  
    // Static
  
    static jQueryInterface(config) {
      return this.each(function () {
        let data = Data.get(this, DATA_KEY);
  
        if (!data) {
          data = new Button(this);
        }
  
        if (config === 'toggle') {
          data[config]();
        }
      });
    }
  }
  
  /**
   * ------------------------------------------------------------------------
   * Data Api implementation
   * ------------------------------------------------------------------------
   */
  
  EventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, (event) => {
    event.preventDefault();
  
    const button = event.target.closest(SELECTOR_DATA_TOGGLE);
  
    let data = Data.get(button, DATA_KEY);
    if (!data) {
      data = new Button(button);
    }
  
    data.toggle();
  });
  
  /**
   * ------------------------------------------------------------------------
   * jQuery
   * ------------------------------------------------------------------------
   * add .Button to jQuery only if jQuery is present
   */
  
  defineJQueryPlugin(Button);
  
  export default Button;
  