1{"version":3,"sources":["../../src/bootstrap/scrollspy.js"],"names":["DATA_KEY","EVENT_KEY","JQUERY_NO_CONFLICT","$","fn","Default","offset","method","target","DefaultType","EVENT_ACTIVATE","EVENT_SCROLL","EVENT_LOAD_DATA_API","CLASS_NAME_ACTIVE","SELECTOR_NAV_LIST_GROUP","SELECTOR_NAV_LINKS","SELECTOR_LIST_ITEMS","METHOD_POSITION","ScrollSpy","element","config","_element","_scrollElement","tagName","window","_config","_getConfig","_selector","_offsets","_targets","_activeTarget","_scrollHeight","on","event","_process","refresh","autoMethod","offsetMethod","offsetBase","_getScrollTop","_getScrollHeight","targets","slice","call","document","querySelectorAll","map","targetSelector","Util","getSelectorFromElement","querySelector","targetBCR","getBoundingClientRect","width","height","top","filter","item","sort","a","b","forEach","push","removeData","off","isElement","id","attr","getUID","typeCheckConfig","pageYOffset","scrollTop","scrollHeight","Math","max","body","documentElement","innerHeight","maxScroll","_getOffsetHeight","length","_activate","_clear","i","isActiveTarget","queries","split","selector","$link","join","hasClass","closest","find","addClass","parents","prev","children","trigger","relatedTarget","node","classList","contains","remove","each","data","TypeError","scrollSpys","scrollSpysLength","$spy","_jQueryInterface","Constructor","noConflict"],"mappings":"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","sourcesContent":["/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.5.0): scrollspy.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport $ from 'jquery'\nimport Util from './util'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME               = 'scrollspy'\nconst VERSION            = '4.5.0'\nconst DATA_KEY           = 'bs.scrollspy'\nconst EVENT_KEY          = `.${DATA_KEY}`\nconst DATA_API_KEY       = '.data-api'\nconst JQUERY_NO_CONFLICT = $.fn[NAME]\n\nconst Default = {\n  offset : 10,\n  method : 'auto',\n  target : ''\n}\n\nconst DefaultType = {\n  offset : 'number',\n  method : 'string',\n  target : '(string|element)'\n}\n\nconst EVENT_ACTIVATE      = `activate${EVENT_KEY}`\nconst EVENT_SCROLL        = `scroll${EVENT_KEY}`\nconst EVENT_LOAD_DATA_API = `load${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_DROPDOWN_ITEM = 'dropdown-item'\nconst CLASS_NAME_ACTIVE        = 'active'\n\nconst SELECTOR_DATA_SPY        = '[data-spy=\"scroll\"]'\nconst SELECTOR_NAV_LIST_GROUP  = '.nav, .list-group'\nconst SELECTOR_NAV_LINKS       = '.nav-link'\nconst SELECTOR_NAV_ITEMS       = '.nav-item'\nconst SELECTOR_LIST_ITEMS      = '.list-group-item'\nconst SELECTOR_DROPDOWN        = '.dropdown'\nconst SELECTOR_DROPDOWN_ITEMS  = '.dropdown-item'\nconst SELECTOR_DROPDOWN_TOGGLE = '.dropdown-toggle'\n\nconst METHOD_OFFSET   = 'offset'\nconst METHOD_POSITION = 'position'\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass ScrollSpy {\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_LINKS},` +\n                          `${this._config.target} ${SELECTOR_LIST_ITEMS},` +\n                          `${this._config.target} ${SELECTOR_DROPDOWN_ITEMS}`\n    this._offsets       = []\n    this._targets       = []\n    this._activeTarget  = null\n    this._scrollHeight  = 0\n\n    $(this._scrollElement).on(EVENT_SCROLL, (event) => this._process(event))\n\n    this.refresh()\n    this._process()\n  }\n\n  // Getters\n\n  static get VERSION() {\n    return VERSION\n  }\n\n  static get Default() {\n    return Default\n  }\n\n  // Public\n\n  refresh() {\n    const autoMethod = this._scrollElement === this._scrollElement.window\n      ? METHOD_OFFSET : METHOD_POSITION\n\n    const offsetMethod = this._config.method === 'auto'\n      ? autoMethod : this._config.method\n\n    const offsetBase = offsetMethod === METHOD_POSITION\n      ? this._getScrollTop() : 0\n\n    this._offsets = []\n    this._targets = []\n\n    this._scrollHeight = this._getScrollHeight()\n\n    const targets = [].slice.call(document.querySelectorAll(this._selector))\n\n    targets\n      .map((element) => {\n        let target\n        const targetSelector = Util.getSelectorFromElement(element)\n\n        if (targetSelector) {\n          target = document.querySelector(targetSelector)\n        }\n\n        if (target) {\n          const targetBCR = target.getBoundingClientRect()\n          if (targetBCR.width || targetBCR.height) {\n            // TODO (fat): remove sketch reliance on jQuery position/offset\n            return [\n              $(target)[offsetMethod]().top + offsetBase,\n              targetSelector\n            ]\n          }\n        }\n        return null\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  // Private\n\n  _getConfig(config) {\n    config = {\n      ...Default,\n      ...typeof config === 'object' && config ? config : {}\n    }\n\n    if (typeof config.target !== 'string' && Util.isElement(config.target)) {\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.pageYOffset : 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  _getOffsetHeight() {\n    return this._scrollElement === window\n      ? window.innerHeight : this._scrollElement.getBoundingClientRect().height\n  }\n\n  _process() {\n    const scrollTop    = this._getScrollTop() + this._config.offset\n    const scrollHeight = this._getScrollHeight()\n    const maxScroll    = this._config.offset + scrollHeight - this._getOffsetHeight()\n\n    if (this._scrollHeight !== scrollHeight) {\n      this.refresh()\n    }\n\n    if (scrollTop >= maxScroll) {\n      const target = this._targets[this._targets.length - 1]\n\n      if (this._activeTarget !== target) {\n        this._activate(target)\n      }\n      return\n    }\n\n    if (this._activeTarget && scrollTop < this._offsets[0] && this._offsets[0] > 0) {\n      this._activeTarget = null\n      this._clear()\n      return\n    }\n\n    for (let i = this._offsets.length; i--;) {\n      const isActiveTarget = this._activeTarget !== this._targets[i] &&\n          scrollTop >= this._offsets[i] &&\n          (typeof 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    const queries = this._selector\n      .split(',')\n      .map((selector) => `${selector}[data-target=\"${target}\"],${selector}[href=\"${target}\"]`)\n\n    const $link = $([].slice.call(document.querySelectorAll(queries.join(','))))\n\n    if ($link.hasClass(CLASS_NAME_DROPDOWN_ITEM)) {\n      $link.closest(SELECTOR_DROPDOWN)\n        .find(SELECTOR_DROPDOWN_TOGGLE)\n        .addClass(CLASS_NAME_ACTIVE)\n      $link.addClass(CLASS_NAME_ACTIVE)\n    } else {\n      // Set triggered link as active\n      $link.addClass(CLASS_NAME_ACTIVE)\n      // Set triggered links parents as active\n      // With both <ul> and <nav> markup a parent is the previous sibling of any nav ancestor\n      $link.parents(SELECTOR_NAV_LIST_GROUP)\n        .prev(`${SELECTOR_NAV_LINKS}, ${SELECTOR_LIST_ITEMS}`)\n        .addClass(CLASS_NAME_ACTIVE)\n      // Handle special case when .nav-link is inside .nav-item\n      $link.parents(SELECTOR_NAV_LIST_GROUP)\n        .prev(SELECTOR_NAV_ITEMS)\n        .children(SELECTOR_NAV_LINKS)\n        .addClass(CLASS_NAME_ACTIVE)\n    }\n\n    $(this._scrollElement).trigger(EVENT_ACTIVATE, {\n      relatedTarget: target\n    })\n  }\n\n  _clear() {\n    [].slice.call(document.querySelectorAll(this._selector))\n      .filter((node) => node.classList.contains(CLASS_NAME_ACTIVE))\n      .forEach((node) => node.classList.remove(CLASS_NAME_ACTIVE))\n  }\n\n  // Static\n\n  static _jQueryInterface(config) {\n    return this.each(function () {\n      let data = $(this).data(DATA_KEY)\n      const _config = typeof config === 'object' && config\n\n      if (!data) {\n        data = new ScrollSpy(this, _config)\n        $(this).data(DATA_KEY, data)\n      }\n\n      if (typeof config === 'string') {\n        if (typeof data[config] === 'undefined') {\n          throw new TypeError(`No method named \"${config}\"`)\n        }\n        data[config]()\n      }\n    })\n  }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\n$(window).on(EVENT_LOAD_DATA_API, () => {\n  const scrollSpys = [].slice.call(document.querySelectorAll(SELECTOR_DATA_SPY))\n  const scrollSpysLength = scrollSpys.length\n\n  for (let i = scrollSpysLength; i--;) {\n    const $spy = $(scrollSpys[i])\n    ScrollSpy._jQueryInterface.call($spy, $spy.data())\n  }\n})\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n$.fn[NAME] = ScrollSpy._jQueryInterface\n$.fn[NAME].Constructor = ScrollSpy\n$.fn[NAME].noConflict = () => {\n  $.fn[NAME] = JQUERY_NO_CONFLICT\n  return ScrollSpy._jQueryInterface\n}\n\nexport default ScrollSpy\n"],"file":"scrollspy.min.js"}