| 1 |
define("theme_boost/bootstrap/scrollspy",["exports","jquery","./util"],(function(_exports,_jquery,_util){function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}Object.defineProperty(_exports,"__esModule",{value:!0}),_exports.default=void 0,_jquery=_interopRequireDefault(_jquery),_util=_interopRequireDefault(_util);const NAME="scrollspy",EVENT_KEY=".".concat("bs.scrollspy"),JQUERY_NO_CONFLICT=_jquery.default.fn[NAME],EVENT_ACTIVATE="activate".concat(EVENT_KEY),EVENT_SCROLL="scroll".concat(EVENT_KEY),EVENT_LOAD_DATA_API="load".concat(EVENT_KEY).concat(".data-api"),Default={offset:10,method:"auto",target:""},DefaultType={offset:"number",method:"string",target:"(string|element)"};class ScrollSpy{constructor(element,config){this._element=element,this._scrollElement="BODY"===element.tagName?window:element,this._config=this._getConfig(config),this._selector="".concat(this._config.target," ").concat(".nav-link",",")+"".concat(this._config.target," ").concat(".list-group-item",",")+"".concat(this._config.target," ").concat(".dropdown-item"),this._offsets=[],this._targets=[],this._activeTarget=null,this._scrollHeight=0,(0,_jquery.default)(this._scrollElement).on(EVENT_SCROLL,(event=>this._process(event))),this.refresh(),this._process()}static get VERSION(){return"4.6.2"}static get Default(){return Default}refresh(){const autoMethod=this._scrollElement===this._scrollElement.window?"offset":"position",offsetMethod="auto"===this._config.method?autoMethod:this._config.method,offsetBase="position"===offsetMethod?this._getScrollTop():0;this._offsets=[],this._targets=[],this._scrollHeight=this._getScrollHeight();[].slice.call(document.querySelectorAll(this._selector)).map((element=>{let target;const targetSelector=_util.default.getSelectorFromElement(element);if(targetSelector&&(target=document.querySelector(targetSelector)),target){const targetBCR=target.getBoundingClientRect();if(targetBCR.width||targetBCR.height)return[(0,_jquery.default)(target)[offsetMethod]().top+offsetBase,targetSelector]}return null})).filter(Boolean).sort(((a,b)=>a[0]-b[0])).forEach((item=>{this._offsets.push(item[0]),this._targets.push(item[1])}))}dispose(){_jquery.default.removeData(this._element,"bs.scrollspy"),(0,_jquery.default)(this._scrollElement).off(EVENT_KEY),this._element=null,this._scrollElement=null,this._config=null,this._selector=null,this._offsets=null,this._targets=null,this._activeTarget=null,this._scrollHeight=null}_getConfig(config){if("string"!=typeof(config={...Default,..."object"==typeof config&&config?config:{}}).target&&_util.default.isElement(config.target)){let id=(0,_jquery.default)(config.target).attr("id");id||(id=_util.default.getUID(NAME),(0,_jquery.default)(config.target).attr("id",id)),config.target="#".concat(id)}return _util.default.typeCheckConfig(NAME,config,DefaultType),config}_getScrollTop(){return this._scrollElement===window?this._scrollElement.pageYOffset:this._scrollElement.scrollTop}_getScrollHeight(){return this._scrollElement.scrollHeight||Math.max(document.body.scrollHeight,document.documentElement.scrollHeight)}_getOffsetHeight(){return this._scrollElement===window?window.innerHeight:this._scrollElement.getBoundingClientRect().height}_process(){const scrollTop=this._getScrollTop()+this._config.offset,scrollHeight=this._getScrollHeight(),maxScroll=this._config.offset+scrollHeight-this._getOffsetHeight();if(this._scrollHeight!==scrollHeight&&this.refresh(),scrollTop>=maxScroll){const target=this._targets[this._targets.length-1];this._activeTarget!==target&&this._activate(target)}else{if(this._activeTarget&&scrollTop<this._offsets[0]&&this._offsets[0]>0)return this._activeTarget=null,void this._clear();for(let i=this._offsets.length;i--;){this._activeTarget!==this._targets[i]&&scrollTop>=this._offsets[i]&&(void 0===this._offsets[i+1]||scrollTop<this._offsets[i+1])&&this._activate(this._targets[i])}}}_activate(target){this._activeTarget=target,this._clear();const queries=this._selector.split(",").map((selector=>"".concat(selector,'[data-target="').concat(target,'"],').concat(selector,'[href="').concat(target,'"]'))),$link=(0,_jquery.default)([].slice.call(document.querySelectorAll(queries.join(","))));$link.hasClass("dropdown-item")?($link.closest(".dropdown").find(".dropdown-toggle").addClass("active"),$link.addClass("active")):($link.addClass("active"),$link.parents(".nav, .list-group").prev("".concat(".nav-link",", ").concat(".list-group-item")).addClass("active"),$link.parents(".nav, .list-group").prev(".nav-item").children(".nav-link").addClass("active")),(0,_jquery.default)(this._scrollElement).trigger(EVENT_ACTIVATE,{relatedTarget:target})}_clear(){[].slice.call(document.querySelectorAll(this._selector)).filter((node=>node.classList.contains("active"))).forEach((node=>node.classList.remove("active")))}static _jQueryInterface(config){return this.each((function(){let data=(0,_jquery.default)(this).data("bs.scrollspy");if(data||(data=new ScrollSpy(this,"object"==typeof config&&config),(0,_jquery.default)(this).data("bs.scrollspy",data)),"string"==typeof config){if(void 0===data[config])throw new TypeError('No method named "'.concat(config,'"'));data[config]()}}))}}(0,_jquery.default)(window).on(EVENT_LOAD_DATA_API,(()=>{const scrollSpys=[].slice.call(document.querySelectorAll('[data-spy="scroll"]'));for(let i=scrollSpys.length;i--;){const $spy=(0,_jquery.default)(scrollSpys[i]);ScrollSpy._jQueryInterface.call($spy,$spy.data())}})),_jquery.default.fn[NAME]=ScrollSpy._jQueryInterface,_jquery.default.fn[NAME].Constructor=ScrollSpy,_jquery.default.fn[NAME].noConflict=()=>(_jquery.default.fn[NAME]=JQUERY_NO_CONFLICT,ScrollSpy._jQueryInterface);var _default=ScrollSpy;return _exports.default=_default,_exports.default}));
|
1 |
define("theme_boost/bootstrap/scrollspy",["exports","./base-component","./dom/event-handler","./dom/selector-engine","./util/index"],(function(_exports,_baseComponent,_eventHandler,_selectorEngine,_index){function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}Object.defineProperty(_exports,"__esModule",{value:!0}),_exports.default=void 0,_baseComponent=_interopRequireDefault(_baseComponent),_eventHandler=_interopRequireDefault(_eventHandler),_selectorEngine=_interopRequireDefault(_selectorEngine);const EVENT_KEY=".".concat("bs.scrollspy"),EVENT_ACTIVATE="activate".concat(EVENT_KEY),EVENT_CLICK="click".concat(EVENT_KEY),EVENT_LOAD_DATA_API="load".concat(EVENT_KEY).concat(".data-api"),SELECTOR_LINK_ITEMS="".concat(".nav-link",", ").concat(".nav-item"," > ").concat(".nav-link",", ").concat(".list-group-item"),Default={offset:null,rootMargin:"0px 0px -25%",smoothScroll:!1,target:null,threshold:[.1,.5,1]},DefaultType={offset:"(number|null)",rootMargin:"string",smoothScroll:"boolean",target:"element",threshold:"array"};class ScrollSpy extends _baseComponent.default{constructor(element,config){super(element,config),this._targetLinks=new Map,this._observableSections=new Map,this._rootElement="visible"===getComputedStyle(this._element).overflowY?null:this._element,this._activeTarget=null,this._observer=null,this._previousScrollData={visibleEntryTop:0,parentScrollTop:0},this.refresh()}static get Default(){return Default}static get DefaultType(){return DefaultType}static get NAME(){return"scrollspy"}refresh(){this._initializeTargetsAndObservables(),this._maybeEnableSmoothScroll(),this._observer?this._observer.disconnect():this._observer=this._getNewObserver();for(const section of this._observableSections.values())this._observer.observe(section)}dispose(){this._observer.disconnect(),super.dispose()}_configAfterMerge(config){return config.target=(0,_index.getElement)(config.target)||document.body,config.rootMargin=config.offset?"".concat(config.offset,"px 0px -30%"):config.rootMargin,"string"==typeof config.threshold&&(config.threshold=config.threshold.split(",").map((value=>Number.parseFloat(value)))),config}_maybeEnableSmoothScroll(){this._config.smoothScroll&&(_eventHandler.default.off(this._config.target,EVENT_CLICK),_eventHandler.default.on(this._config.target,EVENT_CLICK,"[href]",(event=>{const observableSection=this._observableSections.get(event.target.hash);if(observableSection){event.preventDefault();const root=this._rootElement||window,height=observableSection.offsetTop-this._element.offsetTop;if(root.scrollTo)return void root.scrollTo({top:height,behavior:"smooth"});root.scrollTop=height}})))}_getNewObserver(){const options={root:this._rootElement,threshold:this._config.threshold,rootMargin:this._config.rootMargin};return new IntersectionObserver((entries=>this._observerCallback(entries)),options)}_observerCallback(entries){const targetElement=entry=>this._targetLinks.get("#".concat(entry.target.id)),activate=entry=>{this._previousScrollData.visibleEntryTop=entry.target.offsetTop,this._process(targetElement(entry))},parentScrollTop=(this._rootElement||document.documentElement).scrollTop,userScrollsDown=parentScrollTop>=this._previousScrollData.parentScrollTop;this._previousScrollData.parentScrollTop=parentScrollTop;for(const entry of entries){if(!entry.isIntersecting){this._activeTarget=null,this._clearActiveClass(targetElement(entry));continue}const entryIsLowerThanPrevious=entry.target.offsetTop>=this._previousScrollData.visibleEntryTop;if(userScrollsDown&&entryIsLowerThanPrevious){if(activate(entry),!parentScrollTop)return}else userScrollsDown||entryIsLowerThanPrevious||activate(entry)}}_initializeTargetsAndObservables(){this._targetLinks=new Map,this._observableSections=new Map;const targetLinks=_selectorEngine.default.find("[href]",this._config.target);for(const anchor of targetLinks){if(!anchor.hash||(0,_index.isDisabled)(anchor))continue;const observableSection=_selectorEngine.default.findOne(decodeURI(anchor.hash),this._element);(0,_index.isVisible)(observableSection)&&(this._targetLinks.set(decodeURI(anchor.hash),anchor),this._observableSections.set(anchor.hash,observableSection))}}_process(target){this._activeTarget!==target&&(this._clearActiveClass(this._config.target),this._activeTarget=target,target.classList.add("active"),this._activateParents(target),_eventHandler.default.trigger(this._element,EVENT_ACTIVATE,{relatedTarget:target}))}_activateParents(target){if(target.classList.contains("dropdown-item"))_selectorEngine.default.findOne(".dropdown-toggle",target.closest(".dropdown")).classList.add("active");else for(const listGroup of _selectorEngine.default.parents(target,".nav, .list-group"))for(const item of _selectorEngine.default.prev(listGroup,SELECTOR_LINK_ITEMS))item.classList.add("active")}_clearActiveClass(parent){parent.classList.remove("active");const activeNodes=_selectorEngine.default.find("".concat("[href]",".").concat("active"),parent);for(const node of activeNodes)node.classList.remove("active")}static jQueryInterface(config){return this.each((function(){const data=ScrollSpy.getOrCreateInstance(this,config);if("string"==typeof config){if(void 0===data[config]||config.startsWith("_")||"constructor"===config)throw new TypeError('No method named "'.concat(config,'"'));data[config]()}}))}}_eventHandler.default.on(window,EVENT_LOAD_DATA_API,(()=>{for(const spy of _selectorEngine.default.find('[data-bs-spy="scroll"]'))ScrollSpy.getOrCreateInstance(spy)})),(0,_index.defineJQueryPlugin)(ScrollSpy);var _default=ScrollSpy;return _exports.default=_default,_exports.default}));
|