Welcome to mirror list, hosted at ThFree Co, Russian Federation.

scrollspy.js.map « dist « js - github.com/twbs/bootstrap.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
blob: daf9acaf8d2a306f26f94a24c2668aaa72853dfd (plain)
1
{"version":3,"sources":["../src/scrollspy.js"],"names":["ScrollSpy","NAME","VERSION","DATA_KEY","EVENT_KEY","DATA_API_KEY","JQUERY_NO_CONFLICT","$","fn","Default","offset","method","target","DefaultType","Event","ACTIVATE","SCROLL","LOAD_DATA_API","ClassName","DROPDOWN_ITEM","DROPDOWN_MENU","ACTIVE","Selector","DATA_SPY","NAV_LIST_GROUP","NAV_LINKS","LIST_ITEMS","DROPDOWN","DROPDOWN_ITEMS","DROPDOWN_TOGGLE","OffsetMethod","OFFSET","POSITION","element","config","_element","_scrollElement","tagName","window","_config","_getConfig","_selector","_offsets","_targets","_activeTarget","_scrollHeight","on","event","_process","refresh","autoMethod","offsetMethod","offsetBase","_getScrollTop","_getScrollHeight","targets","makeArray","map","targetSelector","Util","getSelectorFromElement","targetBCR","getBoundingClientRect","width","height","top","filter","item","sort","a","b","forEach","push","removeData","off","extend","id","attr","getUID","typeCheckConfig","pageYOffset","scrollTop","scrollHeight","Math","max","document","body","documentElement","innerHeight","maxScroll","_getOffsetHeight","length","_activate","_clear","i","isActiveTarget","queries","split","selector","$link","join","hasClass","closest","find","addClass","parents","prev","trigger","relatedTarget","removeClass","each","data","Error","scrollSpys","$spy","_jQueryInterface","call","Constructor","noConflict","jQuery"],"mappings":"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","file":"scrollspy.js","sourcesContent":["import $ from 'jquery'\nimport Util from './util'\n\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.0.0-beta): 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-beta'\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_ITEM : 'dropdown-item',\n    DROPDOWN_MENU : 'dropdown-menu',\n    ACTIVE        : 'active'\n  }\n\n  const Selector = {\n    DATA_SPY        : '[data-spy=\"scroll\"]',\n    ACTIVE          : '.active',\n    NAV_LIST_GROUP  : '.nav, .list-group',\n    NAV_LINKS       : '.nav-link',\n    LIST_ITEMS      : '.list-group-item',\n    DROPDOWN        : '.dropdown',\n    DROPDOWN_ITEMS  : '.dropdown-item',\n    DROPDOWN_TOGGLE : '.dropdown-toggle'\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_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\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      const autoMethod = this._scrollElement !== this._scrollElement.window ?\n        OffsetMethod.POSITION : OffsetMethod.OFFSET\n\n      const offsetMethod = this._config.method === 'auto' ?\n        autoMethod : this._config.method\n\n      const offsetBase = offsetMethod === OffsetMethod.POSITION ?\n        this._getScrollTop() : 0\n\n      this._offsets = []\n      this._targets = []\n\n      this._scrollHeight = this._getScrollHeight()\n\n      const targets = $.makeArray($(this._selector))\n\n      targets\n        .map((element) => {\n          let target\n          const targetSelector = Util.getSelectorFromElement(element)\n\n          if (targetSelector) {\n            target = $(targetSelector)[0]\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\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.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\n        + scrollHeight\n        - 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      let queries = this._selector.split(',')\n      // eslint-disable-next-line arrow-body-style\n      queries     = queries.map((selector) => {\n        return `${selector}[data-target=\"${target}\"],` +\n               `${selector}[href=\"${target}\"]`\n      })\n\n      const $link = $(queries.join(','))\n\n      if ($link.hasClass(ClassName.DROPDOWN_ITEM)) {\n        $link.closest(Selector.DROPDOWN).find(Selector.DROPDOWN_TOGGLE).addClass(ClassName.ACTIVE)\n        $link.addClass(ClassName.ACTIVE)\n      } else {\n        // Set triggered link as active\n        $link.addClass(ClassName.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).prev(`${Selector.NAV_LINKS}, ${Selector.LIST_ITEMS}`).addClass(ClassName.ACTIVE)\n      }\n\n      $(this._scrollElement).trigger(Event.ACTIVATE, {\n        relatedTarget: target\n      })\n    }\n\n    _clear() {\n      $(this._selector).filter(Selector.ACTIVE).removeClass(ClassName.ACTIVE)\n    }\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 Error(`No method named \"${config}\"`)\n          }\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, () => {\n    const scrollSpys = $.makeArray($(Selector.DATA_SPY))\n\n    for (let i = scrollSpys.length; i--;) {\n      const $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"]}