2018-11-13 08:41:12 +02:00
/ * !
2021-02-10 18:14:51 +02:00
* Bootstrap scrollspy . js v5 . 0.0 - beta2 ( https : //getbootstrap.com/)
* Copyright 2011 - 2021 The Bootstrap Authors ( https : //github.com/twbs/bootstrap/graphs/contributors)
2020-06-16 21:50:01 +03:00
* Licensed under MIT ( https : //github.com/twbs/bootstrap/blob/main/LICENSE)
2018-11-13 08:41:12 +02:00
* /
2018-07-23 17:51:14 -07:00
( function ( global , factory ) {
2021-02-10 18:14:51 +02:00
typeof exports === 'object' && typeof module !== 'undefined' ? module . exports = factory ( require ( './dom/data.js' ) , require ( './dom/event-handler.js' ) , require ( './dom/manipulator.js' ) , require ( './dom/selector-engine.js' ) , require ( './base-component.js' ) ) :
typeof define === 'function' && define . amd ? define ( [ './dom/data' , './dom/event-handler' , './dom/manipulator' , './dom/selector-engine' , './base-component' ] , factory ) :
( global = typeof globalThis !== 'undefined' ? globalThis : global || self , global . ScrollSpy = factory ( global . Data , global . EventHandler , global . Manipulator , global . SelectorEngine , global . Base ) ) ;
} ( this , ( function ( Data , EventHandler , Manipulator , SelectorEngine , BaseComponent ) { 'use strict' ;
2018-07-23 17:51:14 -07:00
2020-09-14 18:12:06 +03:00
function _interopDefaultLegacy ( e ) { return e && typeof e === 'object' && 'default' in e ? e : { 'default' : e } ; }
var Data _ _default = /*#__PURE__*/ _interopDefaultLegacy ( Data ) ;
var EventHandler _ _default = /*#__PURE__*/ _interopDefaultLegacy ( EventHandler ) ;
var Manipulator _ _default = /*#__PURE__*/ _interopDefaultLegacy ( Manipulator ) ;
var SelectorEngine _ _default = /*#__PURE__*/ _interopDefaultLegacy ( SelectorEngine ) ;
2021-02-10 18:14:51 +02:00
var BaseComponent _ _default = /*#__PURE__*/ _interopDefaultLegacy ( BaseComponent ) ;
function _defineProperties ( target , props ) {
for ( var i = 0 ; i < props . length ; i ++ ) {
var descriptor = props [ i ] ;
descriptor . enumerable = descriptor . enumerable || false ;
descriptor . configurable = true ;
if ( "value" in descriptor ) descriptor . writable = true ;
Object . defineProperty ( target , descriptor . key , descriptor ) ;
}
}
function _createClass ( Constructor , protoProps , staticProps ) {
if ( protoProps ) _defineProperties ( Constructor . prototype , protoProps ) ;
if ( staticProps ) _defineProperties ( Constructor , staticProps ) ;
return Constructor ;
}
function _extends ( ) {
_extends = Object . assign || function ( target ) {
for ( var i = 1 ; i < arguments . length ; i ++ ) {
var source = arguments [ i ] ;
for ( var key in source ) {
if ( Object . prototype . hasOwnProperty . call ( source , key ) ) {
target [ key ] = source [ key ] ;
}
}
}
return target ;
} ;
return _extends . apply ( this , arguments ) ;
}
function _inheritsLoose ( subClass , superClass ) {
subClass . prototype = Object . create ( superClass . prototype ) ;
subClass . prototype . constructor = subClass ;
2021-02-11 07:22:18 -08:00
_setPrototypeOf ( subClass , superClass ) ;
}
function _setPrototypeOf ( o , p ) {
_setPrototypeOf = Object . setPrototypeOf || function _setPrototypeOf ( o , p ) {
o . _ _proto _ _ = p ;
return o ;
} ;
return _setPrototypeOf ( o , p ) ;
2021-02-10 18:14:51 +02:00
}
2018-07-23 17:51:14 -07:00
2019-03-01 18:31:34 +02:00
/ * *
* -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
2021-02-10 18:14:51 +02:00
* Bootstrap ( v5 . 0.0 - beta2 ) : util / index . js
2020-06-16 21:50:01 +03:00
* Licensed under MIT ( https : //github.com/twbs/bootstrap/blob/main/LICENSE)
2019-03-01 18:31:34 +02:00
* -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
* /
var MAX _UID = 1000000 ;
var toType = function toType ( obj ) {
2020-03-28 12:29:08 +02:00
if ( obj === null || obj === undefined ) {
return "" + obj ;
}
2019-03-01 18:31:34 +02:00
return { } . toString . call ( obj ) . match ( /\s([a-z]+)/i ) [ 1 ] . toLowerCase ( ) ;
} ;
/ * *
* -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
* Public Util Api
* -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
* /
var getUID = function getUID ( prefix ) {
do {
2020-06-13 15:40:28 -07:00
prefix += Math . floor ( Math . random ( ) * MAX _UID ) ;
2019-03-01 18:31:34 +02:00
} while ( document . getElementById ( prefix ) ) ;
return prefix ;
} ;
2019-08-27 16:03:21 +03:00
var getSelector = function getSelector ( element ) {
2020-11-23 15:17:16 +02:00
var selector = element . getAttribute ( 'data-bs-target' ) ;
2019-03-01 18:31:34 +02:00
if ( ! selector || selector === '#' ) {
2021-02-10 18:14:51 +02:00
var hrefAttr = element . getAttribute ( 'href' ) ; // The only valid content that could double as a selector are IDs or classes,
// so everything starting with `#` or `.`. If a "real" URL is used as the selector,
// `document.querySelector` will rightfully complain it is invalid.
// See https://github.com/twbs/bootstrap/issues/32273
if ( ! hrefAttr || ! hrefAttr . includes ( '#' ) && ! hrefAttr . startsWith ( '.' ) ) {
return null ;
} // Just in case some CMS puts out a full URL with the anchor appended
if ( hrefAttr . includes ( '#' ) && ! hrefAttr . startsWith ( '#' ) ) {
hrefAttr = '#' + hrefAttr . split ( '#' ) [ 1 ] ;
}
2019-08-27 16:03:21 +03:00
selector = hrefAttr && hrefAttr !== '#' ? hrefAttr . trim ( ) : null ;
2019-03-01 18:31:34 +02:00
}
2019-08-27 16:03:21 +03:00
return selector ;
} ;
var getSelectorFromElement = function getSelectorFromElement ( element ) {
var selector = getSelector ( element ) ;
if ( selector ) {
2019-03-01 18:31:34 +02:00
return document . querySelector ( selector ) ? selector : null ;
}
2019-08-27 16:03:21 +03:00
return null ;
2019-03-01 18:31:34 +02:00
} ;
var isElement = function isElement ( obj ) {
return ( obj [ 0 ] || obj ) . nodeType ;
} ;
var typeCheckConfig = function typeCheckConfig ( componentName , config , configTypes ) {
Object . keys ( configTypes ) . forEach ( function ( property ) {
var expectedTypes = configTypes [ property ] ;
var value = config [ property ] ;
var valueType = value && isElement ( value ) ? 'element' : toType ( value ) ;
if ( ! new RegExp ( expectedTypes ) . test ( valueType ) ) {
2021-02-10 18:14:51 +02:00
throw new TypeError ( componentName . toUpperCase ( ) + ": " + ( "Option \"" + property + "\" provided type \"" + valueType + "\" " ) + ( "but expected type \"" + expectedTypes + "\"." ) ) ;
2019-03-01 18:31:34 +02:00
}
} ) ;
} ;
2019-08-27 16:03:21 +03:00
var getjQuery = function getjQuery ( ) {
var _window = window ,
jQuery = _window . jQuery ;
2020-11-23 15:17:16 +02:00
if ( jQuery && ! document . body . hasAttribute ( 'data-bs-no-jquery' ) ) {
2019-08-27 16:03:21 +03:00
return jQuery ;
}
return null ;
} ;
2020-11-11 19:07:37 +02:00
var onDOMContentLoaded = function onDOMContentLoaded ( callback ) {
if ( document . readyState === 'loading' ) {
document . addEventListener ( 'DOMContentLoaded' , callback ) ;
} else {
callback ( ) ;
}
} ;
2021-02-10 18:14:51 +02:00
document . documentElement . dir === 'rtl' ;
2020-12-03 16:18:59 +02:00
2021-02-10 18:14:51 +02:00
var defineJQueryPlugin = function defineJQueryPlugin ( name , plugin ) {
onDOMContentLoaded ( function ( ) {
var $ = getjQuery ( ) ;
/* istanbul ignore if */
2020-12-03 16:18:59 +02:00
2021-02-10 18:14:51 +02:00
if ( $ ) {
var JQUERY _NO _CONFLICT = $ . fn [ name ] ;
$ . fn [ name ] = plugin . jQueryInterface ;
$ . fn [ name ] . Constructor = plugin ;
2020-12-03 16:18:59 +02:00
2021-02-10 18:14:51 +02:00
$ . fn [ name ] . noConflict = function ( ) {
$ . fn [ name ] = JQUERY _NO _CONFLICT ;
return plugin . jQueryInterface ;
} ;
2020-12-03 16:18:59 +02:00
}
2021-02-10 18:14:51 +02:00
} ) ;
} ;
2020-12-03 16:18:59 +02:00
/ * *
* -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
* Constants
* -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
* /
var NAME = 'scrollspy' ;
2018-11-13 08:41:12 +02:00
var DATA _KEY = 'bs.scrollspy' ;
var EVENT _KEY = "." + DATA _KEY ;
var DATA _API _KEY = '.data-api' ;
var Default = {
offset : 10 ,
method : 'auto' ,
target : ''
} ;
var DefaultType = {
offset : 'number' ,
method : 'string' ,
target : '(string|element)'
} ;
2020-03-28 12:29:08 +02:00
var EVENT _ACTIVATE = "activate" + EVENT _KEY ;
var EVENT _SCROLL = "scroll" + EVENT _KEY ;
var EVENT _LOAD _DATA _API = "load" + EVENT _KEY + DATA _API _KEY ;
var CLASS _NAME _DROPDOWN _ITEM = 'dropdown-item' ;
var CLASS _NAME _ACTIVE = 'active' ;
2020-11-23 15:17:16 +02:00
var SELECTOR _DATA _SPY = '[data-bs-spy="scroll"]' ;
2020-03-28 12:29:08 +02:00
var SELECTOR _NAV _LIST _GROUP = '.nav, .list-group' ;
var SELECTOR _NAV _LINKS = '.nav-link' ;
var SELECTOR _NAV _ITEMS = '.nav-item' ;
var SELECTOR _LIST _ITEMS = '.list-group-item' ;
var SELECTOR _DROPDOWN = '.dropdown' ;
var SELECTOR _DROPDOWN _TOGGLE = '.dropdown-toggle' ;
var METHOD _OFFSET = 'offset' ;
var METHOD _POSITION = 'position' ;
2019-10-08 09:39:10 +03:00
/ * *
* -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
* Class Definition
* -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
* /
2018-11-13 08:41:12 +02:00
2020-12-03 16:18:59 +02:00
var ScrollSpy = /*#__PURE__*/ function ( _BaseComponent ) {
_inheritsLoose ( ScrollSpy , _BaseComponent ) ;
2018-11-13 08:41:12 +02:00
2020-12-03 16:18:59 +02:00
function ScrollSpy ( element , config ) {
var _this ;
_this = _BaseComponent . call ( this , element ) || this ;
_this . _scrollElement = element . tagName === 'BODY' ? window : element ;
_this . _config = _this . _getConfig ( config ) ;
_this . _selector = _this . _config . target + " " + SELECTOR _NAV _LINKS + ", " + _this . _config . target + " " + SELECTOR _LIST _ITEMS + ", " + _this . _config . target + " ." + CLASS _NAME _DROPDOWN _ITEM ;
_this . _offsets = [ ] ;
_this . _targets = [ ] ;
_this . _activeTarget = null ;
_this . _scrollHeight = 0 ;
2021-02-10 18:14:51 +02:00
EventHandler _ _default [ 'default' ] . on ( _this . _scrollElement , EVENT _SCROLL , function ( ) {
return _this . _process ( ) ;
2018-11-13 08:41:12 +02:00
} ) ;
2015-08-12 21:12:03 -07:00
2020-12-03 16:18:59 +02:00
_this . refresh ( ) ;
_this . _process ( ) ;
2019-03-01 18:31:34 +02:00
2020-12-03 16:18:59 +02:00
return _this ;
2018-11-13 08:41:12 +02:00
} // Getters
2015-05-11 12:05:35 -07:00
2018-11-13 08:41:12 +02:00
var _proto = ScrollSpy . prototype ;
2015-05-11 12:05:35 -07:00
2018-11-13 08:41:12 +02:00
// Public
_proto . refresh = function refresh ( ) {
var _this2 = this ;
2017-09-30 14:28:03 -07:00
2020-03-28 12:29:08 +02:00
var autoMethod = this . _scrollElement === this . _scrollElement . window ? METHOD _OFFSET : METHOD _POSITION ;
2018-11-13 08:41:12 +02:00
var offsetMethod = this . _config . method === 'auto' ? autoMethod : this . _config . method ;
2020-03-28 12:29:08 +02:00
var offsetBase = offsetMethod === METHOD _POSITION ? this . _getScrollTop ( ) : 0 ;
2018-11-13 08:41:12 +02:00
this . _offsets = [ ] ;
this . _targets = [ ] ;
this . _scrollHeight = this . _getScrollHeight ( ) ;
2020-09-14 18:12:06 +03:00
var targets = SelectorEngine _ _default [ 'default' ] . find ( this . _selector ) ;
2018-11-13 08:41:12 +02:00
targets . map ( function ( element ) {
2019-03-01 18:31:34 +02:00
var targetSelector = getSelectorFromElement ( element ) ;
2020-09-14 18:12:06 +03:00
var target = targetSelector ? SelectorEngine _ _default [ 'default' ] . findOne ( targetSelector ) : null ;
2015-05-13 12:55:11 -07:00
2018-11-13 08:41:12 +02:00
if ( target ) {
var targetBCR = target . getBoundingClientRect ( ) ;
2015-05-11 12:05:35 -07:00
2018-11-13 08:41:12 +02:00
if ( targetBCR . width || targetBCR . height ) {
2020-09-14 18:12:06 +03:00
return [ Manipulator _ _default [ 'default' ] [ offsetMethod ] ( target ) . top + offsetBase , targetSelector ] ;
2017-09-30 14:28:03 -07:00
}
2018-11-13 08:41:12 +02:00
}
2015-05-11 12:05:35 -07:00
2018-11-13 08:41:12 +02:00
return null ;
} ) . filter ( function ( item ) {
return item ;
} ) . sort ( function ( a , b ) {
return a [ 0 ] - b [ 0 ] ;
} ) . forEach ( function ( item ) {
_this2 . _offsets . push ( item [ 0 ] ) ;
2015-05-13 13:43:56 -07:00
2018-11-13 08:41:12 +02:00
_this2 . _targets . push ( item [ 1 ] ) ;
} ) ;
} ;
2016-10-09 17:26:51 -07:00
2018-11-13 08:41:12 +02:00
_proto . dispose = function dispose ( ) {
2020-12-03 16:18:59 +02:00
_BaseComponent . prototype . dispose . call ( this ) ;
2020-09-14 18:12:06 +03:00
EventHandler _ _default [ 'default' ] . off ( this . _scrollElement , EVENT _KEY ) ;
2018-11-13 08:41:12 +02:00
this . _scrollElement = null ;
this . _config = null ;
this . _selector = null ;
this . _offsets = null ;
this . _targets = null ;
this . _activeTarget = null ;
this . _scrollHeight = null ;
2019-01-04 08:29:45 -08:00
} // Private
;
2018-11-13 08:41:12 +02:00
_proto . _getConfig = function _getConfig ( config ) {
2020-09-14 18:12:06 +03:00
config = _extends ( { } , Default , typeof config === 'object' && config ? config : { } ) ;
2018-11-13 08:41:12 +02:00
2020-05-13 21:53:43 +03:00
if ( typeof config . target !== 'string' && isElement ( config . target ) ) {
2019-03-01 18:31:34 +02:00
var id = config . target . id ;
2018-11-13 08:41:12 +02:00
if ( ! id ) {
2019-03-01 18:31:34 +02:00
id = getUID ( NAME ) ;
config . target . id = id ;
2018-07-23 17:51:14 -07:00
}
2016-01-09 16:40:51 +08:00
2018-11-13 08:41:12 +02:00
config . target = "#" + id ;
}
2016-10-09 17:26:51 -07:00
2019-03-01 18:31:34 +02:00
typeCheckConfig ( NAME , config , DefaultType ) ;
2018-11-13 08:41:12 +02:00
return config ;
} ;
2015-05-11 12:05:35 -07:00
2018-11-13 08:41:12 +02:00
_proto . _getScrollTop = function _getScrollTop ( ) {
return this . _scrollElement === window ? this . _scrollElement . pageYOffset : this . _scrollElement . scrollTop ;
} ;
2015-05-11 12:05:35 -07:00
2018-11-13 08:41:12 +02:00
_proto . _getScrollHeight = function _getScrollHeight ( ) {
return this . _scrollElement . scrollHeight || Math . max ( document . body . scrollHeight , document . documentElement . scrollHeight ) ;
} ;
2015-05-11 12:05:35 -07:00
2018-11-13 08:41:12 +02:00
_proto . _getOffsetHeight = function _getOffsetHeight ( ) {
return this . _scrollElement === window ? window . innerHeight : this . _scrollElement . getBoundingClientRect ( ) . height ;
} ;
2015-05-11 12:05:35 -07:00
2018-11-13 08:41:12 +02:00
_proto . _process = function _process ( ) {
var scrollTop = this . _getScrollTop ( ) + this . _config . offset ;
2015-05-11 12:05:35 -07:00
2018-11-13 08:41:12 +02:00
var scrollHeight = this . _getScrollHeight ( ) ;
2017-09-30 14:28:03 -07:00
2018-11-13 08:41:12 +02:00
var maxScroll = this . _config . offset + scrollHeight - this . _getOffsetHeight ( ) ;
2017-09-30 14:28:03 -07:00
2018-11-13 08:41:12 +02:00
if ( this . _scrollHeight !== scrollHeight ) {
this . refresh ( ) ;
}
2017-09-30 14:28:03 -07:00
2018-11-13 08:41:12 +02:00
if ( scrollTop >= maxScroll ) {
var target = this . _targets [ this . _targets . length - 1 ] ;
2015-05-11 12:05:35 -07:00
2018-11-13 08:41:12 +02:00
if ( this . _activeTarget !== target ) {
this . _activate ( target ) ;
2018-07-23 17:51:14 -07:00
}
2015-05-11 12:05:35 -07:00
2018-11-13 08:41:12 +02:00
return ;
}
2018-07-23 17:51:14 -07:00
2018-11-13 08:41:12 +02:00
if ( this . _activeTarget && scrollTop < this . _offsets [ 0 ] && this . _offsets [ 0 ] > 0 ) {
this . _activeTarget = null ;
2017-09-30 14:28:03 -07:00
2018-11-13 08:41:12 +02:00
this . _clear ( ) ;
2018-06-21 22:55:23 -07:00
2018-11-13 08:41:12 +02:00
return ;
}
2015-05-11 12:05:35 -07:00
2020-05-13 21:53:43 +03:00
for ( var i = this . _offsets . length ; i -- ; ) {
2018-11-13 08:41:12 +02:00
var isActiveTarget = this . _activeTarget !== this . _targets [ i ] && scrollTop >= this . _offsets [ i ] && ( typeof this . _offsets [ i + 1 ] === 'undefined' || scrollTop < this . _offsets [ i + 1 ] ) ;
2017-09-30 14:28:03 -07:00
2018-11-13 08:41:12 +02:00
if ( isActiveTarget ) {
this . _activate ( this . _targets [ i ] ) ;
}
}
} ;
2017-09-30 14:28:03 -07:00
2018-11-13 08:41:12 +02:00
_proto . _activate = function _activate ( target ) {
this . _activeTarget = target ;
2017-09-30 14:28:03 -07:00
2018-11-13 08:41:12 +02:00
this . _clear ( ) ;
2017-09-30 14:28:03 -07:00
2018-11-24 18:22:59 +02:00
var queries = this . _selector . split ( ',' ) . map ( function ( selector ) {
2020-11-23 15:17:16 +02:00
return selector + "[data-bs-target=\"" + target + "\"]," + selector + "[href=\"" + target + "\"]" ;
2018-11-13 08:41:12 +02:00
} ) ;
2018-11-24 18:22:59 +02:00
2020-09-14 18:12:06 +03:00
var link = SelectorEngine _ _default [ 'default' ] . findOne ( queries . join ( ',' ) ) ;
2017-09-30 14:28:03 -07:00
2020-03-28 12:29:08 +02:00
if ( link . classList . contains ( CLASS _NAME _DROPDOWN _ITEM ) ) {
2020-09-14 18:12:06 +03:00
SelectorEngine _ _default [ 'default' ] . findOne ( SELECTOR _DROPDOWN _TOGGLE , link . closest ( SELECTOR _DROPDOWN ) ) . classList . add ( CLASS _NAME _ACTIVE ) ;
2020-03-28 12:29:08 +02:00
link . classList . add ( CLASS _NAME _ACTIVE ) ;
2018-11-13 08:41:12 +02:00
} else {
// Set triggered link as active
2020-03-28 12:29:08 +02:00
link . classList . add ( CLASS _NAME _ACTIVE ) ;
2020-09-14 18:12:06 +03:00
SelectorEngine _ _default [ 'default' ] . parents ( link , SELECTOR _NAV _LIST _GROUP ) . forEach ( function ( listGroup ) {
2019-03-01 18:31:34 +02:00
// Set triggered links parents as active
// With both <ul> and <nav> markup a parent is the previous sibling of any nav ancestor
2020-09-14 18:12:06 +03:00
SelectorEngine _ _default [ 'default' ] . prev ( listGroup , SELECTOR _NAV _LINKS + ", " + SELECTOR _LIST _ITEMS ) . forEach ( function ( item ) {
2020-03-28 12:29:08 +02:00
return item . classList . add ( CLASS _NAME _ACTIVE ) ;
2019-03-01 18:31:34 +02:00
} ) ; // Handle special case when .nav-link is inside .nav-item
2020-09-14 18:12:06 +03:00
SelectorEngine _ _default [ 'default' ] . prev ( listGroup , SELECTOR _NAV _ITEMS ) . forEach ( function ( navItem ) {
SelectorEngine _ _default [ 'default' ] . children ( navItem , SELECTOR _NAV _LINKS ) . forEach ( function ( item ) {
2020-03-28 12:29:08 +02:00
return item . classList . add ( CLASS _NAME _ACTIVE ) ;
2019-03-01 18:31:34 +02:00
} ) ;
} ) ;
} ) ;
2018-11-13 08:41:12 +02:00
}
2016-10-09 17:26:51 -07:00
2020-09-14 18:12:06 +03:00
EventHandler _ _default [ 'default' ] . trigger ( this . _scrollElement , EVENT _ACTIVATE , {
2018-11-13 08:41:12 +02:00
relatedTarget : target
} ) ;
} ;
2016-10-09 17:26:51 -07:00
2018-11-13 08:41:12 +02:00
_proto . _clear = function _clear ( ) {
2020-09-14 18:12:06 +03:00
SelectorEngine _ _default [ 'default' ] . find ( this . _selector ) . filter ( function ( node ) {
2020-03-28 12:29:08 +02:00
return node . classList . contains ( CLASS _NAME _ACTIVE ) ;
2018-11-24 18:22:59 +02:00
} ) . forEach ( function ( node ) {
2020-03-28 12:29:08 +02:00
return node . classList . remove ( CLASS _NAME _ACTIVE ) ;
2018-11-24 18:22:59 +02:00
} ) ;
2019-01-04 08:29:45 -08:00
} // Static
;
2017-09-30 14:28:03 -07:00
2019-08-27 16:03:21 +03:00
ScrollSpy . jQueryInterface = function jQueryInterface ( config ) {
2018-11-13 08:41:12 +02:00
return this . each ( function ( ) {
2020-09-14 18:12:06 +03:00
var data = Data _ _default [ 'default' ] . getData ( this , DATA _KEY ) ;
2017-09-30 14:28:03 -07:00
2018-11-13 08:41:12 +02:00
var _config = typeof config === 'object' && config ;
2017-09-30 14:28:03 -07:00
2018-11-13 08:41:12 +02:00
if ( ! data ) {
data = new ScrollSpy ( this , _config ) ;
}
2018-07-23 17:51:14 -07:00
2018-11-13 08:41:12 +02:00
if ( typeof config === 'string' ) {
if ( typeof data [ config ] === 'undefined' ) {
throw new TypeError ( "No method named \"" + config + "\"" ) ;
2017-09-05 21:05:12 -07:00
}
2017-09-30 14:28:03 -07:00
2018-11-13 08:41:12 +02:00
data [ config ] ( ) ;
2017-09-30 14:28:03 -07:00
}
2018-11-13 08:41:12 +02:00
} ) ;
} ;
2017-09-30 14:28:03 -07:00
2021-02-10 18:14:51 +02:00
_createClass ( ScrollSpy , null , [ {
2020-12-03 16:18:59 +02:00
key : "Default" ,
2018-11-13 08:41:12 +02:00
get : function get ( ) {
2020-12-03 16:18:59 +02:00
return Default ;
2018-11-13 08:41:12 +02:00
}
} , {
2020-12-03 16:18:59 +02:00
key : "DATA_KEY" ,
2018-11-13 08:41:12 +02:00
get : function get ( ) {
2020-12-03 16:18:59 +02:00
return DATA _KEY ;
2018-11-13 08:41:12 +02:00
}
} ] ) ;
2015-05-11 12:05:35 -07:00
2018-11-13 08:41:12 +02:00
return ScrollSpy ;
2021-02-10 18:14:51 +02:00
} ( BaseComponent _ _default [ 'default' ] ) ;
2018-11-13 08:41:12 +02:00
/ * *
* -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
* Data Api implementation
* -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
* /
2015-05-11 12:05:35 -07:00
2017-09-30 14:28:03 -07:00
2020-09-14 18:12:06 +03:00
EventHandler _ _default [ 'default' ] . on ( window , EVENT _LOAD _DATA _API , function ( ) {
SelectorEngine _ _default [ 'default' ] . find ( SELECTOR _DATA _SPY ) . forEach ( function ( spy ) {
return new ScrollSpy ( spy , Manipulator _ _default [ 'default' ] . getDataAttributes ( spy ) ) ;
2019-03-01 18:31:34 +02:00
} ) ;
2018-11-13 08:41:12 +02:00
} ) ;
/ * *
* -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
* jQuery
* -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
2020-11-11 19:07:37 +02:00
* add . ScrollSpy to jQuery only if jQuery is present
2018-11-13 08:41:12 +02:00
* /
2015-05-11 12:05:35 -07:00
2021-02-10 18:14:51 +02:00
defineJQueryPlugin ( NAME , ScrollSpy ) ;
2015-05-11 12:05:35 -07:00
return ScrollSpy ;
2018-07-23 17:51:14 -07:00
2019-11-08 10:11:23 +02:00
} ) ) ) ;
2018-07-23 17:51:14 -07:00
//# sourceMappingURL=scrollspy.js.map