{"version":3,"file":"button.js","sources":["../src/button.js"],"sourcesContent":["import $ from 'jquery'\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.1.3): button.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nconst Button = (($) => {\n  /**\n   * ------------------------------------------------------------------------\n   * Constants\n   * ------------------------------------------------------------------------\n   */\n\n  const NAME                = 'button'\n  const VERSION             = '4.1.3'\n  const DATA_KEY            = 'bs.button'\n  const EVENT_KEY           = `.${DATA_KEY}`\n  const DATA_API_KEY        = '.data-api'\n  const JQUERY_NO_CONFLICT  = $.fn[NAME]\n\n  const ClassName = {\n    ACTIVE : 'active',\n    BUTTON : 'btn',\n    FOCUS  : 'focus'\n  }\n\n  const Selector = {\n    DATA_TOGGLE_CARROT : '[data-toggle^=\"button\"]',\n    DATA_TOGGLE        : '[data-toggle=\"buttons\"]',\n    INPUT              : 'input',\n    ACTIVE             : '.active',\n    BUTTON             : '.btn'\n  }\n\n  const Event = {\n    CLICK_DATA_API      : `click${EVENT_KEY}${DATA_API_KEY}`,\n    FOCUS_BLUR_DATA_API : `focus${EVENT_KEY}${DATA_API_KEY} ` +\n                            `blur${EVENT_KEY}${DATA_API_KEY}`\n  }\n\n  /**\n   * ------------------------------------------------------------------------\n   * Class Definition\n   * ------------------------------------------------------------------------\n   */\n\n  class Button {\n    constructor(element) {\n      this._element = element\n    }\n\n    // Getters\n\n    static get VERSION() {\n      return VERSION\n    }\n\n    // Public\n\n    toggle() {\n      let triggerChangeEvent = true\n      let addAriaPressed = true\n      const rootElement = $(this._element).closest(\n        Selector.DATA_TOGGLE\n      )[0]\n\n      if (rootElement) {\n        const input = this._element.querySelector(Selector.INPUT)\n\n        if (input) {\n          if (input.type === 'radio') {\n            if (input.checked &&\n              this._element.classList.contains(ClassName.ACTIVE)) {\n              triggerChangeEvent = false\n            } else {\n              const activeElement = rootElement.querySelector(Selector.ACTIVE)\n\n              if (activeElement) {\n                $(activeElement).removeClass(ClassName.ACTIVE)\n              }\n            }\n          }\n\n          if (triggerChangeEvent) {\n            if (input.hasAttribute('disabled') ||\n              rootElement.hasAttribute('disabled') ||\n              input.classList.contains('disabled') ||\n              rootElement.classList.contains('disabled')) {\n              return\n            }\n            input.checked = !this._element.classList.contains(ClassName.ACTIVE)\n            $(input).trigger('change')\n          }\n\n          input.focus()\n          addAriaPressed = false\n        }\n      }\n\n      if (addAriaPressed) {\n        this._element.setAttribute('aria-pressed',\n          !this._element.classList.contains(ClassName.ACTIVE))\n      }\n\n      if (triggerChangeEvent) {\n        $(this._element).toggleClass(ClassName.ACTIVE)\n      }\n    }\n\n    dispose() {\n      $.removeData(this._element, DATA_KEY)\n      this._element = null\n    }\n\n    // Static\n\n    static _jQueryInterface(config) {\n      return this.each(function () {\n        let data = $(this).data(DATA_KEY)\n\n        if (!data) {\n          data = new Button(this)\n          $(this).data(DATA_KEY, data)\n        }\n\n        if (config === 'toggle') {\n          data[config]()\n        }\n      })\n    }\n  }\n\n  /**\n   * ------------------------------------------------------------------------\n   * Data Api implementation\n   * ------------------------------------------------------------------------\n   */\n\n  $(document)\n    .on(Event.CLICK_DATA_API, Selector.DATA_TOGGLE_CARROT, (event) => {\n      event.preventDefault()\n\n      let button = event.target\n\n      if (!$(button).hasClass(ClassName.BUTTON)) {\n        button = $(button).closest(Selector.BUTTON)\n      }\n\n      Button._jQueryInterface.call($(button), 'toggle')\n    })\n    .on(Event.FOCUS_BLUR_DATA_API, Selector.DATA_TOGGLE_CARROT, (event) => {\n      const button = $(event.target).closest(Selector.BUTTON)[0]\n      $(button).toggleClass(ClassName.FOCUS, /^focus(in)?$/.test(event.type))\n    })\n\n  /**\n   * ------------------------------------------------------------------------\n   * jQuery\n   * ------------------------------------------------------------------------\n   */\n\n  $.fn[NAME] = Button._jQueryInterface\n  $.fn[NAME].Constructor = Button\n  $.fn[NAME].noConflict = function () {\n    $.fn[NAME] = JQUERY_NO_CONFLICT\n    return Button._jQueryInterface\n  }\n\n  return Button\n})($)\n\nexport default Button\n"],"names":["Button","$","NAME","VERSION","DATA_KEY","EVENT_KEY","DATA_API_KEY","JQUERY_NO_CONFLICT","fn","ClassName","ACTIVE","BUTTON","FOCUS","Selector","DATA_TOGGLE_CARROT","DATA_TOGGLE","INPUT","Event","CLICK_DATA_API","FOCUS_BLUR_DATA_API","element","_element","toggle","triggerChangeEvent","addAriaPressed","rootElement","closest","input","querySelector","type","checked","classList","contains","activeElement","removeClass","hasAttribute","trigger","focus","setAttribute","toggleClass","dispose","removeData","_jQueryInterface","config","each","data","document","on","event","preventDefault","button","target","hasClass","call","test","Constructor","noConflict"],"mappings":"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"}