Server IP : 15.235.198.142 / Your IP : 216.73.216.76 Web Server : Apache/2.4.58 (Ubuntu) System : Linux ballsack 6.8.0-45-generic #45-Ubuntu SMP PREEMPT_DYNAMIC Fri Aug 30 12:02:04 UTC 2024 x86_64 User : www-data ( 33) PHP Version : 8.3.6 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : ON | Pkexec : OFF Directory : /usr/share/javascript/bootstrap5/js/ |
Upload File : |
/*! * Bootstrap scrollspy.js v5.3.1 (https://getbootstrap.com/) * Copyright 2011-2023 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors) * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) */ (function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('./base-component.js'), require('./dom/event-handler.js'), require('./dom/selector-engine.js'), require('./util/index.js')) : typeof define === 'function' && define.amd ? define(['./base-component', './dom/event-handler', './dom/selector-engine', './util/index'], factory) : (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.Scrollspy = factory(global.BaseComponent, global.EventHandler, global.SelectorEngine, global.Index)); })(this, (function (BaseComponent, EventHandler, SelectorEngine, index_js) { 'use strict'; 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, _toPropertyKey(descriptor.key), descriptor); } } function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; } function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); } function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; } function _createForOfIteratorHelperLoose(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (it) return (it = it.call(o)).next.bind(it); if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; return function () { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } function _toPrimitive(input, hint) { if (typeof input !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (typeof res !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); } function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); } /** * Constants */ var NAME = 'scrollspy'; var DATA_KEY = 'bs.scrollspy'; var EVENT_KEY = "." + DATA_KEY; var DATA_API_KEY = '.data-api'; var EVENT_ACTIVATE = "activate" + EVENT_KEY; var EVENT_CLICK = "click" + 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'; var SELECTOR_DATA_SPY = '[data-bs-spy="scroll"]'; var SELECTOR_TARGET_LINKS = '[href]'; 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_LINK_ITEMS = SELECTOR_NAV_LINKS + ", " + SELECTOR_NAV_ITEMS + " > " + SELECTOR_NAV_LINKS + ", " + SELECTOR_LIST_ITEMS; var SELECTOR_DROPDOWN = '.dropdown'; var SELECTOR_DROPDOWN_TOGGLE = '.dropdown-toggle'; var Default = { offset: null, // TODO: v6 @deprecated, keep it for backwards compatibility reasons rootMargin: '0px 0px -25%', smoothScroll: false, target: null, threshold: [0.1, 0.5, 1] }; var DefaultType = { offset: '(number|null)', // TODO v6 @deprecated, keep it for backwards compatibility reasons rootMargin: 'string', smoothScroll: 'boolean', target: 'element', threshold: 'array' }; /** * Class definition */ var ScrollSpy = /*#__PURE__*/function (_BaseComponent) { _inheritsLoose(ScrollSpy, _BaseComponent); function ScrollSpy(element, config) { var _this; _this = _BaseComponent.call(this, element, config) || this; // this._element is the observablesContainer and config.target the menu links wrapper _this._targetLinks = new Map(); _this._observableSections = new Map(); _this._rootElement = getComputedStyle(_this._element).overflowY === 'visible' ? null : _this._element; _this._activeTarget = null; _this._observer = null; _this._previousScrollData = { visibleEntryTop: 0, parentScrollTop: 0 }; _this.refresh(); // initialize return _this; } // Getters var _proto = ScrollSpy.prototype; // Public _proto.refresh = function refresh() { this._initializeTargetsAndObservables(); this._maybeEnableSmoothScroll(); if (this._observer) { this._observer.disconnect(); } else { this._observer = this._getNewObserver(); } for (var _iterator = _createForOfIteratorHelperLoose(this._observableSections.values()), _step; !(_step = _iterator()).done;) { var section = _step.value; this._observer.observe(section); } }; _proto.dispose = function dispose() { this._observer.disconnect(); _BaseComponent.prototype.dispose.call(this); } // Private ; _proto._configAfterMerge = function _configAfterMerge(config) { // TODO: on v6 target should be given explicitly & remove the {target: 'ss-target'} case config.target = index_js.getElement(config.target) || document.body; // TODO: v6 Only for backwards compatibility reasons. Use rootMargin only config.rootMargin = config.offset ? config.offset + "px 0px -30%" : config.rootMargin; if (typeof config.threshold === 'string') { config.threshold = config.threshold.split(',').map(function (value) { return Number.parseFloat(value); }); } return config; }; _proto._maybeEnableSmoothScroll = function _maybeEnableSmoothScroll() { var _this2 = this; if (!this._config.smoothScroll) { return; } // unregister any previous listeners EventHandler.off(this._config.target, EVENT_CLICK); EventHandler.on(this._config.target, EVENT_CLICK, SELECTOR_TARGET_LINKS, function (event) { var observableSection = _this2._observableSections.get(event.target.hash); if (observableSection) { event.preventDefault(); var root = _this2._rootElement || window; var height = observableSection.offsetTop - _this2._element.offsetTop; if (root.scrollTo) { root.scrollTo({ top: height, behavior: 'smooth' }); return; } // Chrome 60 doesn't support `scrollTo` root.scrollTop = height; } }); }; _proto._getNewObserver = function _getNewObserver() { var _this3 = this; var options = { root: this._rootElement, threshold: this._config.threshold, rootMargin: this._config.rootMargin }; return new IntersectionObserver(function (entries) { return _this3._observerCallback(entries); }, options); } // The logic of selection ; _proto._observerCallback = function _observerCallback(entries) { var _this4 = this; var targetElement = function targetElement(entry) { return _this4._targetLinks.get("#" + entry.target.id); }; var activate = function activate(entry) { _this4._previousScrollData.visibleEntryTop = entry.target.offsetTop; _this4._process(targetElement(entry)); }; var parentScrollTop = (this._rootElement || document.documentElement).scrollTop; var userScrollsDown = parentScrollTop >= this._previousScrollData.parentScrollTop; this._previousScrollData.parentScrollTop = parentScrollTop; for (var _iterator2 = _createForOfIteratorHelperLoose(entries), _step2; !(_step2 = _iterator2()).done;) { var entry = _step2.value; if (!entry.isIntersecting) { this._activeTarget = null; this._clearActiveClass(targetElement(entry)); continue; } var entryIsLowerThanPrevious = entry.target.offsetTop >= this._previousScrollData.visibleEntryTop; // if we are scrolling down, pick the bigger offsetTop if (userScrollsDown && entryIsLowerThanPrevious) { activate(entry); // if parent isn't scrolled, let's keep the first visible item, breaking the iteration if (!parentScrollTop) { return; } continue; } // if we are scrolling up, pick the smallest offsetTop if (!userScrollsDown && !entryIsLowerThanPrevious) { activate(entry); } } }; _proto._initializeTargetsAndObservables = function _initializeTargetsAndObservables() { this._targetLinks = new Map(); this._observableSections = new Map(); var targetLinks = SelectorEngine.find(SELECTOR_TARGET_LINKS, this._config.target); for (var _iterator3 = _createForOfIteratorHelperLoose(targetLinks), _step3; !(_step3 = _iterator3()).done;) { var anchor = _step3.value; // ensure that the anchor has an id and is not disabled if (!anchor.hash || index_js.isDisabled(anchor)) { continue; } var observableSection = SelectorEngine.findOne(decodeURI(anchor.hash), this._element); // ensure that the observableSection exists & is visible if (index_js.isVisible(observableSection)) { this._targetLinks.set(decodeURI(anchor.hash), anchor); this._observableSections.set(anchor.hash, observableSection); } } }; _proto._process = function _process(target) { if (this._activeTarget === target) { return; } this._clearActiveClass(this._config.target); this._activeTarget = target; target.classList.add(CLASS_NAME_ACTIVE); this._activateParents(target); EventHandler.trigger(this._element, EVENT_ACTIVATE, { relatedTarget: target }); }; _proto._activateParents = function _activateParents(target) { // Activate dropdown parents if (target.classList.contains(CLASS_NAME_DROPDOWN_ITEM)) { SelectorEngine.findOne(SELECTOR_DROPDOWN_TOGGLE, target.closest(SELECTOR_DROPDOWN)).classList.add(CLASS_NAME_ACTIVE); return; } for (var _iterator4 = _createForOfIteratorHelperLoose(SelectorEngine.parents(target, SELECTOR_NAV_LIST_GROUP)), _step4; !(_step4 = _iterator4()).done;) { var listGroup = _step4.value; // Set triggered links parents as active // With both <ul> and <nav> markup a parent is the previous sibling of any nav ancestor for (var _iterator5 = _createForOfIteratorHelperLoose(SelectorEngine.prev(listGroup, SELECTOR_LINK_ITEMS)), _step5; !(_step5 = _iterator5()).done;) { var item = _step5.value; item.classList.add(CLASS_NAME_ACTIVE); } } }; _proto._clearActiveClass = function _clearActiveClass(parent) { parent.classList.remove(CLASS_NAME_ACTIVE); var activeNodes = SelectorEngine.find(SELECTOR_TARGET_LINKS + "." + CLASS_NAME_ACTIVE, parent); for (var _iterator6 = _createForOfIteratorHelperLoose(activeNodes), _step6; !(_step6 = _iterator6()).done;) { var node = _step6.value; node.classList.remove(CLASS_NAME_ACTIVE); } } // Static ; ScrollSpy.jQueryInterface = function jQueryInterface(config) { return this.each(function () { var data = ScrollSpy.getOrCreateInstance(this, config); if (typeof config !== 'string') { return; } if (data[config] === undefined || config.startsWith('_') || config === 'constructor') { throw new TypeError("No method named \"" + config + "\""); } data[config](); }); }; _createClass(ScrollSpy, null, [{ key: "Default", get: function get() { return Default; } }, { key: "DefaultType", get: function get() { return DefaultType; } }, { key: "NAME", get: function get() { return NAME; } }]); return ScrollSpy; }(BaseComponent); /** * Data API implementation */ EventHandler.on(window, EVENT_LOAD_DATA_API, function () { for (var _iterator7 = _createForOfIteratorHelperLoose(SelectorEngine.find(SELECTOR_DATA_SPY)), _step7; !(_step7 = _iterator7()).done;) { var spy = _step7.value; ScrollSpy.getOrCreateInstance(spy); } }); /** * jQuery */ index_js.defineJQueryPlugin(ScrollSpy); return ScrollSpy; })); //# sourceMappingURL=scrollspy.js.map