{"version":3,"sources":["../src/tab.js"],"names":["Tab","$","NAME","VERSION","DATA_KEY","EVENT_KEY","DATA_API_KEY","JQUERY_NO_CONFLICT","fn","TRANSITION_DURATION","Event","HIDE","HIDDEN","SHOW","SHOWN","CLICK_DATA_API","ClassName","DROPDOWN_MENU","ACTIVE","FADE","IN","Selector","A","LI","DROPDOWN","UL","FADE_CHILD","ACTIVE_CHILD","DATA_TOGGLE","DROPDOWN_TOGGLE","DROPDOWN_ACTIVE_CHILD","element","_element","show","parentNode","nodeType","Node","ELEMENT_NODE","hasClass","target","previous","ulElement","closest","selector","Util","getSelectorFromElement","makeArray","find","length","hideEvent","relatedTarget","showEvent","trigger","isDefaultPrevented","_activate","complete","hiddenEvent","shownEvent","dispose","removeClass","container","callback","active","isTransitioning","supportsTransitionEnd","Boolean","proxy","_transitionComplete","one","TRANSITION_END","emulateTransitionEnd","dropdownChild","setAttribute","addClass","reflow","dropdownElement","_jQueryInterface","config","each","$this","data","undefined","Error","document","on","event","preventDefault","call","Constructor","noConflict","jQuery"],"mappings":"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","file":"tab.js","sourcesContent":["import Util from './util'\n\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.0.0-alpha.4): tab.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nconst Tab = (($) => {\n\n\n  /**\n   * ------------------------------------------------------------------------\n   * Constants\n   * ------------------------------------------------------------------------\n   */\n\n  const NAME                = 'tab'\n  const VERSION             = '4.0.0-alpha.4'\n  const DATA_KEY            = 'bs.tab'\n  const EVENT_KEY           = `.${DATA_KEY}`\n  const DATA_API_KEY        = '.data-api'\n  const JQUERY_NO_CONFLICT  = $.fn[NAME]\n  const TRANSITION_DURATION = 150\n\n  const Event = {\n    HIDE           : `hide${EVENT_KEY}`,\n    HIDDEN         : `hidden${EVENT_KEY}`,\n    SHOW           : `show${EVENT_KEY}`,\n    SHOWN          : `shown${EVENT_KEY}`,\n    CLICK_DATA_API : `click${EVENT_KEY}${DATA_API_KEY}`\n  }\n\n  const ClassName = {\n    DROPDOWN_MENU : 'dropdown-menu',\n    ACTIVE        : 'active',\n    FADE          : 'fade',\n    IN            : 'in'\n  }\n\n  const Selector = {\n    A                     : 'a',\n    LI                    : 'li',\n    DROPDOWN              : '.dropdown',\n    UL                    : 'ul:not(.dropdown-menu)',\n    FADE_CHILD            : '> .nav-item .fade, > .fade',\n    ACTIVE                : '.active',\n    ACTIVE_CHILD          : '> .nav-item > .active, > .active',\n    DATA_TOGGLE           : '[data-toggle=\"tab\"], [data-toggle=\"pill\"]',\n    DROPDOWN_TOGGLE       : '.dropdown-toggle',\n    DROPDOWN_ACTIVE_CHILD : '> .dropdown-menu .active'\n  }\n\n\n  /**\n   * ------------------------------------------------------------------------\n   * Class Definition\n   * ------------------------------------------------------------------------\n   */\n\n  class Tab {\n\n    constructor(element) {\n      this._element = element\n    }\n\n\n    // getters\n\n    static get VERSION() {\n      return VERSION\n    }\n\n\n    // public\n\n    show() {\n      if (this._element.parentNode &&\n         (this._element.parentNode.nodeType === Node.ELEMENT_NODE) &&\n         ($(this._element).hasClass(ClassName.ACTIVE))) {\n        return\n      }\n\n      let target\n      let previous\n      let ulElement = $(this._element).closest(Selector.UL)[0]\n      let selector  = Util.getSelectorFromElement(this._element)\n\n      if (ulElement) {\n        previous = $.makeArray($(ulElement).find(Selector.ACTIVE))\n        previous = previous[previous.length - 1]\n      }\n\n      let hideEvent = $.Event(Event.HIDE, {\n        relatedTarget: this._element\n      })\n\n      let showEvent = $.Event(Event.SHOW, {\n        relatedTarget: previous\n      })\n\n      if (previous) {\n        $(previous).trigger(hideEvent)\n      }\n\n      $(this._element).trigger(showEvent)\n\n      if (showEvent.isDefaultPrevented() ||\n         (hideEvent.isDefaultPrevented())) {\n        return\n      }\n\n      if (selector) {\n        target = $(selector)[0]\n      }\n\n      this._activate(\n        this._element,\n        ulElement\n      )\n\n      let complete = () => {\n        let hiddenEvent = $.Event(Event.HIDDEN, {\n          relatedTarget: this._element\n        })\n\n        let shownEvent  = $.Event(Event.SHOWN, {\n          relatedTarget: previous\n        })\n\n        $(previous).trigger(hiddenEvent)\n        $(this._element).trigger(shownEvent)\n      }\n\n      if (target) {\n        this._activate(target, target.parentNode, complete)\n      } else {\n        complete()\n      }\n    }\n\n    dispose() {\n      $.removeClass(this._element, DATA_KEY)\n      this._element = null\n    }\n\n\n    // private\n\n    _activate(element, container, callback) {\n      let active          = $(container).find(Selector.ACTIVE_CHILD)[0]\n      let isTransitioning = callback\n        && Util.supportsTransitionEnd()\n        && ((active && $(active).hasClass(ClassName.FADE))\n           || Boolean($(container).find(Selector.FADE_CHILD)[0]))\n\n      let complete = $.proxy(\n        this._transitionComplete,\n        this,\n        element,\n        active,\n        isTransitioning,\n        callback\n      )\n\n      if (active && isTransitioning) {\n        $(active)\n          .one(Util.TRANSITION_END, complete)\n          .emulateTransitionEnd(TRANSITION_DURATION)\n\n      } else {\n        complete()\n      }\n\n      if (active) {\n        $(active).removeClass(ClassName.IN)\n      }\n    }\n\n    _transitionComplete(element, active, isTransitioning, callback) {\n      if (active) {\n        $(active).removeClass(ClassName.ACTIVE)\n\n        let dropdownChild = $(active).find(\n          Selector.DROPDOWN_ACTIVE_CHILD\n        )[0]\n\n        if (dropdownChild) {\n          $(dropdownChild).removeClass(ClassName.ACTIVE)\n        }\n\n        active.setAttribute('aria-expanded', false)\n      }\n\n      $(element).addClass(ClassName.ACTIVE)\n      element.setAttribute('aria-expanded', true)\n\n      if (isTransitioning) {\n        Util.reflow(element)\n        $(element).addClass(ClassName.IN)\n      } else {\n        $(element).removeClass(ClassName.FADE)\n      }\n\n      if (element.parentNode &&\n         ($(element.parentNode).hasClass(ClassName.DROPDOWN_MENU))) {\n\n        let dropdownElement = $(element).closest(Selector.DROPDOWN)[0]\n        if (dropdownElement) {\n          $(dropdownElement).find(Selector.DROPDOWN_TOGGLE).addClass(ClassName.ACTIVE)\n        }\n\n        element.setAttribute('aria-expanded', true)\n      }\n\n      if (callback) {\n        callback()\n      }\n    }\n\n\n    // static\n\n    static _jQueryInterface(config) {\n      return this.each(function () {\n        let $this = $(this)\n        let data  = $this.data(DATA_KEY)\n\n        if (!data) {\n          data = data = new Tab(this)\n          $this.data(DATA_KEY, data)\n        }\n\n        if (typeof config === 'string') {\n          if (data[config] === undefined) {\n            throw new Error(`No method named \"${config}\"`)\n          }\n          data[config]()\n        }\n      })\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, function (event) {\n      event.preventDefault()\n      Tab._jQueryInterface.call($(this), 'show')\n    })\n\n\n  /**\n   * ------------------------------------------------------------------------\n   * jQuery\n   * ------------------------------------------------------------------------\n   */\n\n  $.fn[NAME]             = Tab._jQueryInterface\n  $.fn[NAME].Constructor = Tab\n  $.fn[NAME].noConflict  = function () {\n    $.fn[NAME] = JQUERY_NO_CONFLICT\n    return Tab._jQueryInterface\n  }\n\n  return Tab\n\n})(jQuery)\n\nexport default Tab\n"]}