{"version":3,"sources":["collapse.js"],"names":["BaseComponent","EventHandler","SelectorEngine","defineJQueryPlugin","getElement","reflow","NAME","DATA_KEY","EVENT_KEY","concat","DATA_API_KEY","EVENT_SHOW","EVENT_SHOWN","EVENT_HIDE","EVENT_HIDDEN","EVENT_CLICK_DATA_API","CLASS_NAME_SHOW","CLASS_NAME_COLLAPSE","CLASS_NAME_COLLAPSING","CLASS_NAME_COLLAPSED","CLASS_NAME_DEEPER_CHILDREN","CLASS_NAME_HORIZONTAL","WIDTH","HEIGHT","SELECTOR_ACTIVES","SELECTOR_DATA_TOGGLE","Default","parent","toggle","DefaultType","Collapse","element","config","_this","_classCallCheck","this","_callSuper","_isTransitioning","_triggerArray","_step","_iterator","_createForOfIteratorHelper","find","s","n","done","elem","value","selector","getSelectorFromElement","filterElement","filter","foundElement","_element","length","push","err","e","f","_initializeChildren","_config","_addAriaAndCollapsedClass","_isShown","_inherits","_createClass","key","hide","show","_this2","activeChildren","_getFirstLevelChildren","map","getOrCreateInstance","startEvent","trigger","defaultPrevented","_step2","_iterator2","dimension","_getDimension","capitalizedDimension","classList","remove","add","style","toUpperCase","slice","scrollSize","_queueCallback","_this3","_step3","_iterator3","getBoundingClientRect","getElementFromSelector","arguments","undefined","contains","Boolean","_step4","_iterator4","selected","children","includes","triggerArray","isOpen","_step5","_iterator5","setAttribute","get","test","each","data","TypeError","on","document","event","target","tagName","delegateTarget","preventDefault","_step6","_iterator6","getMultipleElementsFromSelector"],"mappings":"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","file":"collapse.js","sourcesContent":["/**\n * --------------------------------------------------------------------------\n * Bootstrap collapse.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport SelectorEngine from './dom/selector-engine.js'\nimport {\n defineJQueryPlugin,\n getElement,\n reflow\n} from './util/index.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'collapse'\nconst DATA_KEY = 'bs.collapse'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_NAME_COLLAPSE = 'collapse'\nconst CLASS_NAME_COLLAPSING = 'collapsing'\nconst CLASS_NAME_COLLAPSED = 'collapsed'\nconst CLASS_NAME_DEEPER_CHILDREN = `:scope .${CLASS_NAME_COLLAPSE} .${CLASS_NAME_COLLAPSE}`\nconst CLASS_NAME_HORIZONTAL = 'collapse-horizontal'\n\nconst WIDTH = 'width'\nconst HEIGHT = 'height'\n\nconst SELECTOR_ACTIVES = '.collapse.show, .collapse.collapsing'\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"collapse\"]'\n\nconst Default = {\n parent: null,\n toggle: true\n}\n\nconst DefaultType = {\n parent: '(null|element)',\n toggle: 'boolean'\n}\n\n/**\n * Class definition\n */\n\nclass Collapse extends BaseComponent {\n constructor(element, config) {\n super(element, config)\n\n this._isTransitioning = false\n this._triggerArray = []\n\n const toggleList = SelectorEngine.find(SELECTOR_DATA_TOGGLE)\n\n for (const elem of toggleList) {\n const selector = SelectorEngine.getSelectorFromElement(elem)\n const filterElement = SelectorEngine.find(selector)\n .filter(foundElement => foundElement === this._element)\n\n if (selector !== null && filterElement.length) {\n this._triggerArray.push(elem)\n }\n }\n\n this._initializeChildren()\n\n if (!this._config.parent) {\n this._addAriaAndCollapsedClass(this._triggerArray, this._isShown())\n }\n\n if (this._config.toggle) {\n this.toggle()\n }\n }\n\n // Getters\n static get Default() {\n return Default\n }\n\n static get DefaultType() {\n return DefaultType\n }\n\n static get NAME() {\n return NAME\n }\n\n // Public\n toggle() {\n if (this._isShown()) {\n this.hide()\n } else {\n this.show()\n }\n }\n\n show() {\n if (this._isTransitioning || this._isShown()) {\n return\n }\n\n let activeChildren = []\n\n // find active children\n if (this._config.parent) {\n activeChildren = this._getFirstLevelChildren(SELECTOR_ACTIVES)\n .filter(element => element !== this._element)\n .map(element => Collapse.getOrCreateInstance(element, { toggle: false }))\n }\n\n if (activeChildren.length && activeChildren[0]._isTransitioning) {\n return\n }\n\n const startEvent = EventHandler.trigger(this._element, EVENT_SHOW)\n if (startEvent.defaultPrevented) {\n return\n }\n\n for (const activeInstance of activeChildren) {\n activeInstance.hide()\n }\n\n const dimension = this._getDimension()\n\n this._element.classList.remove(CLASS_NAME_COLLAPSE)\n this._element.classList.add(CLASS_NAME_COLLAPSING)\n\n this._element.style[dimension] = 0\n\n this._addAriaAndCollapsedClass(this._triggerArray, true)\n this._isTransitioning = true\n\n const complete = () => {\n this._isTransitioning = false\n\n this._element.classList.remove(CLASS_NAME_COLLAPSING)\n this._element.classList.add(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW)\n\n this._element.style[dimension] = ''\n\n EventHandler.trigger(this._element, EVENT_SHOWN)\n }\n\n const capitalizedDimension = dimension[0].toUpperCase() + dimension.slice(1)\n const scrollSize = `scroll${capitalizedDimension}`\n\n this._queueCallback(complete, this._element, true)\n this._element.style[dimension] = `${this._element[scrollSize]}px`\n }\n\n hide() {\n if (this._isTransitioning || !this._isShown()) {\n return\n }\n\n const startEvent = EventHandler.trigger(this._element, EVENT_HIDE)\n if (startEvent.defaultPrevented) {\n return\n }\n\n const dimension = this._getDimension()\n\n this._element.style[dimension] = `${this._element.getBoundingClientRect()[dimension]}px`\n\n reflow(this._element)\n\n this._element.classList.add(CLASS_NAME_COLLAPSING)\n this._element.classList.remove(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW)\n\n for (const trigger of this._triggerArray) {\n const element = SelectorEngine.getElementFromSelector(trigger)\n\n if (element && !this._isShown(element)) {\n this._addAriaAndCollapsedClass([trigger], false)\n }\n }\n\n this._isTransitioning = true\n\n const complete = () => {\n this._isTransitioning = false\n this._element.classList.remove(CLASS_NAME_COLLAPSING)\n this._element.classList.add(CLASS_NAME_COLLAPSE)\n EventHandler.trigger(this._element, EVENT_HIDDEN)\n }\n\n this._element.style[dimension] = ''\n\n this._queueCallback(complete, this._element, true)\n }\n\n _isShown(element = this._element) {\n return element.classList.contains(CLASS_NAME_SHOW)\n }\n\n // Private\n _configAfterMerge(config) {\n config.toggle = Boolean(config.toggle) // Coerce string values\n config.parent = getElement(config.parent)\n return config\n }\n\n _getDimension() {\n return this._element.classList.contains(CLASS_NAME_HORIZONTAL) ? WIDTH : HEIGHT\n }\n\n _initializeChildren() {\n if (!this._config.parent) {\n return\n }\n\n const children = this._getFirstLevelChildren(SELECTOR_DATA_TOGGLE)\n\n for (const element of children) {\n const selected = SelectorEngine.getElementFromSelector(element)\n\n if (selected) {\n this._addAriaAndCollapsedClass([element], this._isShown(selected))\n }\n }\n }\n\n _getFirstLevelChildren(selector) {\n const children = SelectorEngine.find(CLASS_NAME_DEEPER_CHILDREN, this._config.parent)\n // remove children if greater depth\n return SelectorEngine.find(selector, this._config.parent).filter(element => !children.includes(element))\n }\n\n _addAriaAndCollapsedClass(triggerArray, isOpen) {\n if (!triggerArray.length) {\n return\n }\n\n for (const element of triggerArray) {\n element.classList.toggle(CLASS_NAME_COLLAPSED, !isOpen)\n element.setAttribute('aria-expanded', isOpen)\n }\n }\n\n // Static\n static jQueryInterface(config) {\n const _config = {}\n if (typeof config === 'string' && /show|hide/.test(config)) {\n _config.toggle = false\n }\n\n return this.each(function () {\n const data = Collapse.getOrCreateInstance(this, _config)\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config]()\n }\n })\n }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n // preventDefault only for elements (which change the URL) not inside the collapsible element\n if (event.target.tagName === 'A' || (event.delegateTarget && event.delegateTarget.tagName === 'A')) {\n event.preventDefault()\n }\n\n for (const element of SelectorEngine.getMultipleElementsFromSelector(this)) {\n Collapse.getOrCreateInstance(element, { toggle: false }).toggle()\n }\n})\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Collapse)\n\nexport default Collapse\n"]}