{"version":3,"sources":["js/src/scrollspy.js"],"names":[],"mappings":";;;;;;;;;;;;;AAUA,IAAM,SAAS,GAAG,CAAC,UAAC,CAAC,EAAK;;;;;;;;AASxB,MAAM,IAAI,GAAiB,WAAW,CAAA;AACtC,MAAM,OAAO,GAAc,OAAO,CAAA;AAClC,MAAM,QAAQ,GAAa,cAAc,CAAA;AACzC,MAAM,SAAS,SAAgB,QAAQ,AAAE,CAAA;AACzC,MAAM,YAAY,GAAS,WAAW,CAAA;AACtC,MAAM,kBAAkB,GAAG,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAA;;AAErC,MAAM,OAAO,GAAG;AACd,UAAM,EAAG,EAAE;AACX,UAAM,EAAG,MAAM;AACf,UAAM,EAAG,EAAE;GACZ,CAAA;;AAED,MAAM,WAAW,GAAG;AAClB,UAAM,EAAG,QAAQ;AACjB,UAAM,EAAG,QAAQ;AACjB,UAAM,EAAG,kBAAkB;GAC5B,CAAA;;AAED,MAAM,KAAK,GAAG;AACZ,YAAQ,eAAmB,SAAS,AAAE;AACtC,UAAM,aAAmB,SAAS,AAAE;AACpC,iBAAa,WAAU,SAAS,GAAG,YAAY,AAAE;GAClD,CAAA;;AAED,MAAM,SAAS,GAAG;AAChB,iBAAa,EAAG,eAAe;AAC/B,UAAM,EAAU,QAAQ;GACzB,CAAA;;AAED,MAAM,QAAQ,GAAG;AACf,YAAQ,EAAM,qBAAqB;AACnC,UAAM,EAAQ,SAAS;AACvB,MAAE,EAAY,IAAI;AAClB,eAAW,EAAG,aAAa;AAC3B,eAAW,EAAG,aAAa;GAC5B,CAAA;;AAED,MAAM,YAAY,GAAG;AACnB,UAAM,EAAK,QAAQ;AACnB,YAAQ,EAAG,UAAU;GACtB,CAAA;;;;;;;;MASK,SAAS;AAEF,aAFP,SAAS,CAED,OAAO,EAAE,MAAM,EAAE;4BAFzB,SAAS;;AAGX,UAAI,CAAC,QAAQ,GAAS,OAAO,CAAA;AAC7B,UAAI,CAAC,cAAc,GAAG,OAAO,CAAC,OAAO,KAAK,MAAM,GAAG,MAAM,GAAG,OAAO,CAAA;AACnE,UAAI,CAAC,OAAO,GAAU,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAA;AAC7C,UAAI,CAAC,SAAS,GAAW,IAAI,CAAC,OAAO,CAAC,MAAM,SAAI,QAAQ,CAAC,WAAW,AAAE,CAAA;AACtE,UAAI,CAAC,QAAQ,GAAS,EAAE,CAAA;AACxB,UAAI,CAAC,QAAQ,GAAS,EAAE,CAAA;AACxB,UAAI,CAAC,aAAa,GAAI,IAAI,CAAA;AAC1B,UAAI,CAAC,aAAa,GAAI,CAAC,CAAA;;AAEvB,OAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAA;;AAErE,UAAI,CAAC,OAAO,EAAE,CAAA;AACd,UAAI,CAAC,QAAQ,EAAE,CAAA;KAChB;;;;;;;;;;iBAhBG,SAAS;;;;;aAgCN,mBAAG;;;AACR,YAAI,UAAU,GAAG,IAAI,CAAC,cAAc,KAAK,IAAI,CAAC,cAAc,CAAC,MAAM,GACjE,YAAY,CAAC,QAAQ,GAAG,YAAY,CAAC,MAAM,CAAA;;AAE7C,YAAI,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,KAAK,MAAM,GAC/C,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAA;;AAElC,YAAI,UAAU,GAAG,YAAY,KAAK,YAAY,CAAC,QAAQ,GACrD,IAAI,CAAC,aAAa,EAAE,GAAG,CAAC,CAAA;;AAE1B,YAAI,CAAC,QAAQ,GAAG,EAAE,CAAA;AAClB,YAAI,CAAC,QAAQ,GAAG,EAAE,CAAA;;AAElB,YAAI,CAAC,aAAa,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAA;;AAE5C,YAAI,OAAO,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAA;;AAE5C,eAAO,CACJ,GAAG,CAAC,UAAC,OAAO,EAAK;AAChB,cAAI,MAAM,YAAA,CAAA;AACV,cAAI,cAAc,GAAG,IAAI,CAAC,sBAAsB,CAAC,OAAO,CAAC,CAAA;;AAEzD,cAAI,cAAc,EAAE;AAClB,kBAAM,GAAG,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAA;WAC9B;;AAED,cAAI,MAAM,KAAK,MAAM,CAAC,WAAW,IAAI,MAAM,CAAC,YAAY,CAAA,AAAC,EAAE;;AAEzD,mBAAO,CACL,CAAC,CAAC,MAAM,CAAC,CAAC,YAAY,CAAC,EAAE,CAAC,GAAG,GAAG,UAAU,EAC1C,cAAc,CACf,CAAA;WACF;SACF,CAAC,CACD,MAAM,CAAC,UAAC,IAAI;iBAAM,IAAI;SAAA,CAAC,CACvB,IAAI,CAAC,UAAC,CAAC,EAAE,CAAC;iBAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;SAAA,CAAC,CAC9B,OAAO,CAAC,UAAC,IAAI,EAAK;AACjB,gBAAK,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAA;AAC3B,gBAAK,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAA;SAC5B,CAAC,CAAA;OACL;;;aAEM,mBAAG;AACR,SAAC,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAA;AACrC,SAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAA;;AAErC,YAAI,CAAC,QAAQ,GAAS,IAAI,CAAA;AAC1B,YAAI,CAAC,cAAc,GAAG,IAAI,CAAA;AAC1B,YAAI,CAAC,OAAO,GAAU,IAAI,CAAA;AAC1B,YAAI,CAAC,SAAS,GAAQ,IAAI,CAAA;AAC1B,YAAI,CAAC,QAAQ,GAAS,IAAI,CAAA;AAC1B,YAAI,CAAC,QAAQ,GAAS,IAAI,CAAA;AAC1B,YAAI,CAAC,aAAa,GAAI,IAAI,CAAA;AAC1B,YAAI,CAAC,aAAa,GAAI,IAAI,CAAA;OAC3B;;;;;;aAKS,oBAAC,MAAM,EAAE;AACjB,cAAM,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,EAAE,OAAO,EAAE,MAAM,CAAC,CAAA;;AAEtC,YAAI,OAAO,MAAM,CAAC,MAAM,KAAK,QAAQ,EAAE;AACrC,cAAI,EAAE,GAAG,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AACpC,cAAI,CAAC,EAAE,EAAE;AACP,cAAE,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;AACtB,aAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC,CAAA;WAChC;AACD,gBAAM,CAAC,MAAM,SAAO,EAAE,AAAE,CAAA;SACzB;;AAED,YAAI,CAAC,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,WAAW,CAAC,CAAA;;AAE/C,eAAO,MAAM,CAAA;OACd;;;aAEY,yBAAG;AACd,eAAO,IAAI,CAAC,cAAc,KAAK,MAAM,GACjC,IAAI,CAAC,cAAc,CAAC,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,SAAS,CAAA;OAChE;;;aAEe,4BAAG;AACjB,eAAO,IAAI,CAAC,cAAc,CAAC,YAAY,IAAI,IAAI,CAAC,GAAG,CACjD,QAAQ,CAAC,IAAI,CAAC,YAAY,EAC1B,QAAQ,CAAC,eAAe,CAAC,YAAY,CACtC,CAAA;OACF;;;aAEO,oBAAG;AACT,YAAI,SAAS,GAAM,IAAI,CAAC,aAAa,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAA;AAC7D,YAAI,YAAY,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAA;AAC1C,YAAI,SAAS,GAAM,IAAI,CAAC,OAAO,CAAC,MAAM,GAClC,YAAY,GACZ,IAAI,CAAC,cAAc,CAAC,YAAY,CAAA;;AAEpC,YAAI,IAAI,CAAC,aAAa,KAAK,YAAY,EAAE;AACvC,cAAI,CAAC,OAAO,EAAE,CAAA;SACf;;AAED,YAAI,SAAS,IAAI,SAAS,EAAE;AAC1B,cAAI,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA;;AAEpD,cAAI,IAAI,CAAC,aAAa,KAAK,MAAM,EAAE;AACjC,gBAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAA;WACvB;SACF;;AAED,YAAI,IAAI,CAAC,aAAa,IAAI,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE;AACtD,cAAI,CAAC,aAAa,GAAG,IAAI,CAAA;AACzB,cAAI,CAAC,MAAM,EAAE,CAAA;AACb,iBAAM;SACP;;AAED,aAAK,IAAI,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,GAAG;AACvC,cAAI,cAAc,GAAG,IAAI,CAAC,aAAa,KAAK,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IACrD,SAAS,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,KAC5B,IAAI,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,SAAS,IAClC,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,CAAA,AAAC,CAAA;;AAEzC,cAAI,cAAc,EAAE;AAClB,gBAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAA;WACjC;SACF;OACF;;;aAEQ,mBAAC,MAAM,EAAE;AAChB,YAAI,CAAC,aAAa,GAAG,MAAM,CAAA;;AAE3B,YAAI,CAAC,MAAM,EAAE,CAAA;;AAEb,YAAI,QAAQ,GACV,AAAG,IAAI,CAAC,SAAS,sBAAiB,MAAM,YACrC,IAAI,CAAC,SAAS,eAAU,MAAM,QAAI,CAAA;;;AAGvC,YAAI,eAAe,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAA;;AAEtD,aAAK,IAAI,CAAC,GAAG,eAAe,CAAC,MAAM,EAAE,CAAC,EAAE,GAAG;AACzC,WAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,MAAM,CAAC,CAAA;;AAEhD,cAAI,UAAU,GAAG,eAAe,CAAC,CAAC,CAAC,CAAC,UAAU,CAAA;;AAE9C,cAAI,UAAU,IAAI,CAAC,CAAC,UAAU,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,aAAa,CAAC,EAAE;AACjE,gBAAI,eAAe,GAAG,CAAC,CAAC,UAAU,CAAC,CAChC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAA;AACnC,aAAC,CAAC,eAAe,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,MAAM,CAAC,CAAA;WAC9C;SACF;;AAED,SAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAE;AAC7C,uBAAa,EAAE,MAAM;SACtB,CAAC,CAAA;OACH;;;aAEK,kBAAG;AACP,YAAI,aAAa,GAAG,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,YAAY,CAChD,IAAI,CAAC,OAAO,CAAC,MAAM,EACnB,QAAQ,CAAC,MAAM,CAChB,CAAA;;AAED,aAAK,IAAI,CAAC,GAAG,aAAa,CAAC,MAAM,EAAE,CAAC,EAAE,GAAG;AACvC,WAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,SAAS,CAAC,MAAM,CAAC,CAAA;SAClD;OACF;;;;;;aAKsB,0BAAC,MAAM,EAAE;AAC9B,eAAO,IAAI,CAAC,IAAI,CAAC,YAAY;AAC3B,cAAI,IAAI,GAAM,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;AACpC,cAAI,OAAO,GAAG,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,IAAI,IAAI,CAAA;;AAE1D,cAAI,CAAC,IAAI,EAAE;AACT,gBAAI,GAAG,IAAI,SAAS,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;AACnC,aAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAA;WAC7B;;AAED,cAAI,OAAO,MAAM,KAAK,QAAQ,EAAE;AAC9B,gBAAI,CAAC,MAAM,CAAC,EAAE,CAAA;WACf;SACF,CAAC,CAAA;OACH;;;WAjMiB,eAAG;AACnB,eAAO,OAAO,CAAA;OACf;;;WAEiB,eAAG;AACnB,eAAO,OAAO,CAAA;OACf;;;WA3BG,SAAS;;;AAkOf,GAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,aAAa,EAAE,YAAY;AAC5C,QAAI,UAAU,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAA;;AAElD,SAAK,IAAI,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,GAAG;AACpC,UAAI,IAAI,GAAG,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAA;AAC3B,eAAS,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAA;KACnD;GACF,CAAC,CAAA;;;;;;;;AASF,GAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAe,SAAS,CAAC,gBAAgB,CAAA;AACnD,GAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,WAAW,GAAG,SAAS,CAAA;AAClC,GAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,UAAU,GAAI,YAAY;AACnC,KAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,kBAAkB,CAAA;AAC/B,WAAO,SAAS,CAAC,gBAAgB,CAAA;GAClC,CAAA;;AAED,SAAO,SAAS,CAAA;CAEjB,CAAA,CAAE,MAAM,CAAC,CAAA","file":"js/src/scrollspy.js","sourcesContent":["import Util from './util'\n\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.0.0): scrollspy.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nconst ScrollSpy = (($) => {\n\n\n  /**\n   * ------------------------------------------------------------------------\n   * Constants\n   * ------------------------------------------------------------------------\n   */\n\n  const NAME               = 'scrollspy'\n  const VERSION            = '4.0.0'\n  const DATA_KEY           = 'bs.scrollspy'\n  const EVENT_KEY          = `.${DATA_KEY}`\n  const DATA_API_KEY       = '.data-api'\n  const JQUERY_NO_CONFLICT = $.fn[NAME]\n\n  const Default = {\n    offset : 10,\n    method : 'auto',\n    target : ''\n  }\n\n  const DefaultType = {\n    offset : 'number',\n    method : 'string',\n    target : '(string|element)'\n  }\n\n  const Event = {\n    ACTIVATE      : `activate${EVENT_KEY}`,\n    SCROLL        : `scroll${EVENT_KEY}`,\n    LOAD_DATA_API : `load${EVENT_KEY}${DATA_API_KEY}`\n  }\n\n  const ClassName = {\n    DROPDOWN_MENU : 'dropdown-menu',\n    ACTIVE        : 'active'\n  }\n\n  const Selector = {\n    DATA_SPY    : '[data-spy=\"scroll\"]',\n    ACTIVE      : '.active',\n    LI          : 'li',\n    LI_DROPDOWN : 'li.dropdown',\n    NAV_ANCHORS : '.nav li > a'\n  }\n\n  const OffsetMethod = {\n    OFFSET   : 'offset',\n    POSITION : 'position'\n  }\n\n\n  /**\n   * ------------------------------------------------------------------------\n   * Class Definition\n   * ------------------------------------------------------------------------\n   */\n\n  class ScrollSpy {\n\n    constructor(element, config) {\n      this._element       = element\n      this._scrollElement = element.tagName === 'BODY' ? window : element\n      this._config        = this._getConfig(config)\n      this._selector      = `${this._config.target} ${Selector.NAV_ANCHORS}`\n      this._offsets       = []\n      this._targets       = []\n      this._activeTarget  = null\n      this._scrollHeight  = 0\n\n      $(this._scrollElement).on(Event.SCROLL, $.proxy(this._process, this))\n\n      this.refresh()\n      this._process()\n    }\n\n\n    // getters\n\n    static get VERSION() {\n      return VERSION\n    }\n\n    static get Default() {\n      return Default\n    }\n\n\n    // public\n\n    refresh() {\n      let autoMethod = this._scrollElement !== this._scrollElement.window ?\n        OffsetMethod.POSITION : OffsetMethod.OFFSET\n\n      let offsetMethod = this._config.method === 'auto' ?\n        autoMethod : this._config.method\n\n      let offsetBase = offsetMethod === OffsetMethod.POSITION ?\n        this._getScrollTop() : 0\n\n      this._offsets = []\n      this._targets = []\n\n      this._scrollHeight = this._getScrollHeight()\n\n      let targets = $.makeArray($(this._selector))\n\n      targets\n        .map((element) => {\n          let target\n          let targetSelector = Util.getSelectorFromElement(element)\n\n          if (targetSelector) {\n            target = $(targetSelector)[0]\n          }\n\n          if (target && (target.offsetWidth || target.offsetHeight)) {\n            // todo (fat): remove sketch reliance on jQuery position/offset\n            return [\n              $(target)[offsetMethod]().top + offsetBase,\n              targetSelector\n            ]\n          }\n        })\n        .filter((item)  => item)\n        .sort((a, b)    => a[0] - b[0])\n        .forEach((item) => {\n          this._offsets.push(item[0])\n          this._targets.push(item[1])\n        })\n    }\n\n    dispose() {\n      $.removeData(this._element, DATA_KEY)\n      $(this._scrollElement).off(EVENT_KEY)\n\n      this._element       = null\n      this._scrollElement = null\n      this._config        = null\n      this._selector      = null\n      this._offsets       = null\n      this._targets       = null\n      this._activeTarget  = null\n      this._scrollHeight  = null\n    }\n\n\n    // private\n\n    _getConfig(config) {\n      config = $.extend({}, Default, config)\n\n      if (typeof config.target !== 'string') {\n        let id = $(config.target).attr('id')\n        if (!id) {\n          id = Util.getUID(NAME)\n          $(config.target).attr('id', id)\n        }\n        config.target = `#${id}`\n      }\n\n      Util.typeCheckConfig(NAME, config, DefaultType)\n\n      return config\n    }\n\n    _getScrollTop() {\n      return this._scrollElement === window ?\n          this._scrollElement.scrollY : this._scrollElement.scrollTop\n    }\n\n    _getScrollHeight() {\n      return this._scrollElement.scrollHeight || Math.max(\n        document.body.scrollHeight,\n        document.documentElement.scrollHeight\n      )\n    }\n\n    _process() {\n      let scrollTop    = this._getScrollTop() + this._config.offset\n      let scrollHeight = this._getScrollHeight()\n      let maxScroll    = this._config.offset\n        + scrollHeight\n        - this._scrollElement.offsetHeight\n\n      if (this._scrollHeight !== scrollHeight) {\n        this.refresh()\n      }\n\n      if (scrollTop >= maxScroll) {\n        let target = this._targets[this._targets.length - 1]\n\n        if (this._activeTarget !== target) {\n          this._activate(target)\n        }\n      }\n\n      if (this._activeTarget && scrollTop < this._offsets[0]) {\n        this._activeTarget = null\n        this._clear()\n        return\n      }\n\n      for (let i = this._offsets.length; i--;) {\n        let isActiveTarget = this._activeTarget !== this._targets[i]\n            && scrollTop >= this._offsets[i]\n            && (this._offsets[i + 1] === undefined ||\n                scrollTop < this._offsets[i + 1])\n\n        if (isActiveTarget) {\n          this._activate(this._targets[i])\n        }\n      }\n    }\n\n    _activate(target) {\n      this._activeTarget = target\n\n      this._clear()\n\n      let selector =\n        `${this._selector}[data-target=\"${target}\"],` +\n        `${this._selector}[href=\"${target}\"]`\n\n      // todo (fat): getting all the raw li's up the tree is not great.\n      let parentListItems = $(selector).parents(Selector.LI)\n\n      for (let i = parentListItems.length; i--;) {\n        $(parentListItems[i]).addClass(ClassName.ACTIVE)\n\n        let itemParent = parentListItems[i].parentNode\n\n        if (itemParent && $(itemParent).hasClass(ClassName.DROPDOWN_MENU)) {\n          let closestDropdown = $(itemParent)\n            .closest(Selector.LI_DROPDOWN)[0]\n          $(closestDropdown).addClass(ClassName.ACTIVE)\n        }\n      }\n\n      $(this._scrollElement).trigger(Event.ACTIVATE, {\n        relatedTarget: target\n      })\n    }\n\n    _clear() {\n      let activeParents = $(this._selector).parentsUntil(\n        this._config.target,\n        Selector.ACTIVE\n      )\n\n      for (let i = activeParents.length; i--;) {\n        $(activeParents[i]).removeClass(ClassName.ACTIVE)\n      }\n    }\n\n\n    // static\n\n    static _jQueryInterface(config) {\n      return this.each(function () {\n        let data    = $(this).data(DATA_KEY)\n        let _config = typeof config === 'object' && config || null\n\n        if (!data) {\n          data = new ScrollSpy(this, _config)\n          $(this).data(DATA_KEY, data)\n        }\n\n        if (typeof config === 'string') {\n          data[config]()\n        }\n      })\n    }\n\n\n  }\n\n\n  /**\n   * ------------------------------------------------------------------------\n   * Data Api implementation\n   * ------------------------------------------------------------------------\n   */\n\n  $(window).on(Event.LOAD_DATA_API, function () {\n    let scrollSpys = $.makeArray($(Selector.DATA_SPY))\n\n    for (let i = scrollSpys.length; i--;) {\n      let $spy = $(scrollSpys[i])\n      ScrollSpy._jQueryInterface.call($spy, $spy.data())\n    }\n  })\n\n\n  /**\n   * ------------------------------------------------------------------------\n   * jQuery\n   * ------------------------------------------------------------------------\n   */\n\n  $.fn[NAME]             = ScrollSpy._jQueryInterface\n  $.fn[NAME].Constructor = ScrollSpy\n  $.fn[NAME].noConflict  = function () {\n    $.fn[NAME] = JQUERY_NO_CONFLICT\n    return ScrollSpy._jQueryInterface\n  }\n\n  return ScrollSpy\n\n})(jQuery)\n\nexport default ScrollSpy\n"]}