text: /**
   * --------------------------------------------------------------------------
   * Bootstrap (v5.0.1): button.js
   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
   * --------------------------------------------------------------------------
   */
  
  import { defineJQueryPlugin } from './util'
  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-bs-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
  