{"version":3,"file":"scrollspy-oso_zy0I.js","sources":["../../../app/frontend/entrypoints/marketing/free/scrollspy.js"],"sourcesContent":["import { getjQuery, onDOMContentLoaded } from '../mdb/util/index';\nimport EventHandler from '../mdb/dom/event-handler';\nimport SelectorEngine from '../mdb/dom/selector-engine';\nimport Manipulator from '../mdb/dom/manipulator';\nimport BSScrollSpy from '../bootstrap/mdb-prefix/scrollspy';\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'scrollspy';\nconst DATA_KEY = `mdb.${NAME}`;\nconst EVENT_KEY = `.${DATA_KEY}`;\nconst DATA_API_KEY = '.data-api';\n\nconst EVENT_ACTIVATE_BS = 'activate.bs.scrollspy';\nconst EVENT_ACTIVATE = `activate${EVENT_KEY}`;\nconst EVENT_LOAD_DATA_API = `load${EVENT_KEY}${DATA_API_KEY}`;\n\nconst CLASS_COLLAPSIBLE = 'collapsible-scrollspy';\nconst CLASS_ACTIVE = 'active';\n\nconst SELECTOR_LIST = 'ul';\nconst SELECTOR_DATA_SPY = '[data-mdb-spy=\"scroll\"]';\nconst SELECTOR_ACTIVE = `.${CLASS_ACTIVE}`;\nconst SELECTOR_COLLAPSIBLE_SCROLLSPY = `.${CLASS_COLLAPSIBLE}`;\n\nclass ScrollSpy extends BSScrollSpy {\n constructor(element, data) {\n super(element, data);\n\n this._scrollElement = element.tagName === 'BODY' ? window : element;\n this._collapsibles = [];\n this._init();\n }\n\n dispose() {\n EventHandler.off(this._scrollElement, EVENT_ACTIVATE_BS);\n this._scrollElement = null;\n\n super.dispose();\n }\n\n // Getters\n static get NAME() {\n return NAME;\n }\n\n // Private\n _init() {\n this._bindActivateEvent();\n this._getCollapsibles();\n\n if (this._collapsibles.length === 0) {\n return;\n }\n\n this._showSubsection();\n this._hideSubsection();\n }\n\n _getHeight(element) {\n return element.offsetHeight;\n }\n\n _hide(target) {\n const itemsToHide = SelectorEngine.findOne(SELECTOR_LIST, target.parentNode);\n itemsToHide.style.overflow = 'hidden';\n itemsToHide.style.height = `${0}px`;\n }\n\n _show(target, destinedHeight) {\n target.style.height = destinedHeight;\n }\n\n _getCollapsibles() {\n const collapsibleElements = SelectorEngine.find(SELECTOR_COLLAPSIBLE_SCROLLSPY);\n\n if (!collapsibleElements) {\n return;\n }\n\n collapsibleElements.forEach((collapsibleElement) => {\n const listParent = collapsibleElement.parentNode;\n const list = SelectorEngine.findOne(SELECTOR_LIST, listParent);\n const listHeight = list.offsetHeight;\n this._collapsibles.push({\n element: list,\n relatedTarget: collapsibleElement.getAttribute('href'),\n height: `${listHeight}px`,\n });\n });\n }\n\n _showSubsection() {\n const activeElements = SelectorEngine.find(SELECTOR_ACTIVE);\n const actives = activeElements.filter((active) => {\n return Manipulator.hasClass(active, CLASS_COLLAPSIBLE);\n });\n\n actives.forEach((active) => {\n const list = SelectorEngine.findOne(SELECTOR_LIST, active.parentNode);\n const height = this._collapsibles.find((collapsible) => {\n return (collapsible.relatedTarget = active.getAttribute('href'));\n }).height;\n this._show(list, height);\n });\n }\n\n _hideSubsection() {\n const unactives = SelectorEngine.find(SELECTOR_COLLAPSIBLE_SCROLLSPY).filter((collapsible) => {\n return Manipulator.hasClass(collapsible, 'active') === false;\n });\n unactives.forEach((unactive) => {\n this._hide(unactive);\n });\n }\n\n _bindActivateEvent() {\n EventHandler.on(this._scrollElement, EVENT_ACTIVATE_BS, (e) => {\n this._showSubsection();\n this._hideSubsection();\n EventHandler.trigger(this._scrollElement, EVENT_ACTIVATE, {\n relatedTarget: e.relatedTarget,\n });\n });\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation - auto initialization\n * ------------------------------------------------------------------------\n */\n\nEventHandler.on(window, EVENT_LOAD_DATA_API, () => {\n SelectorEngine.find(SELECTOR_DATA_SPY).forEach((el) => {\n let instance = ScrollSpy.getInstance(el);\n if (!instance) {\n instance = new ScrollSpy(el, Manipulator.getDataAttributes(el));\n }\n });\n});\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .rating to jQuery only if jQuery is present\n */\n\nonDOMContentLoaded(() => {\n const $ = getjQuery();\n\n if ($) {\n const JQUERY_NO_CONFLICT = $.fn[NAME];\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 }\n});\n\nexport default ScrollSpy;\n"],"names":["NAME","DATA_KEY","EVENT_KEY","DATA_API_KEY","EVENT_ACTIVATE_BS","EVENT_ACTIVATE","EVENT_LOAD_DATA_API","CLASS_COLLAPSIBLE","CLASS_ACTIVE","SELECTOR_LIST","SELECTOR_DATA_SPY","SELECTOR_ACTIVE","SELECTOR_COLLAPSIBLE_SCROLLSPY","ScrollSpy","BSScrollSpy","element","data","EventHandler","target","itemsToHide","SelectorEngine","destinedHeight","collapsibleElements","collapsibleElement","listParent","list","listHeight","active","Manipulator","height","collapsible","unactive","e","el","instance","onDOMContentLoaded","$","getjQuery","JQUERY_NO_CONFLICT"],"mappings":"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"}