{"version":3,"file":"collapse.js","sources":["../src/util/index.js","../src/collapse.js"],"sourcesContent":["/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.3.1): util/index.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nconst MAX_UID = 1000000\nconst MILLISECONDS_MULTIPLIER = 1000\nconst TRANSITION_END = 'transitionend'\nconst { jQuery } = window\n\n// Shoutout AngusCroll (https://goo.gl/pxwQGp)\nconst toType = obj => ({}.toString.call(obj).match(/\\s([a-z]+)/i)[1].toLowerCase())\n\n/**\n * --------------------------------------------------------------------------\n * Public Util Api\n * --------------------------------------------------------------------------\n */\n\nconst getUID = prefix => {\n do {\n // eslint-disable-next-line no-bitwise\n prefix += ~~(Math.random() * MAX_UID) // \"~~\" acts like a faster Math.floor() here\n } while (document.getElementById(prefix))\n\n return prefix\n}\n\nconst getSelectorFromElement = element => {\n let selector = element.getAttribute('data-target')\n\n if (!selector || selector === '#') {\n const hrefAttr = element.getAttribute('href')\n\n selector = hrefAttr && hrefAttr !== '#' ? hrefAttr.trim() : ''\n }\n\n try {\n return document.querySelector(selector) ? selector : null\n } catch (error) {\n return null\n }\n}\n\nconst getTransitionDurationFromElement = element => {\n if (!element) {\n return 0\n }\n\n // Get transition-duration of the element\n let {\n transitionDuration,\n transitionDelay\n } = window.getComputedStyle(element)\n\n const floatTransitionDuration = parseFloat(transitionDuration)\n const floatTransitionDelay = parseFloat(transitionDelay)\n\n // Return 0 if element or transition duration is not found\n if (!floatTransitionDuration && !floatTransitionDelay) {\n return 0\n }\n\n // If multiple durations are defined, take the first\n transitionDuration = transitionDuration.split(',')[0]\n transitionDelay = transitionDelay.split(',')[0]\n\n return (parseFloat(transitionDuration) + parseFloat(transitionDelay)) * MILLISECONDS_MULTIPLIER\n}\n\nconst triggerTransitionEnd = element => {\n const evt = document.createEvent('HTMLEvents')\n\n evt.initEvent(TRANSITION_END, true, true)\n element.dispatchEvent(evt)\n}\n\nconst isElement = obj => (obj[0] || obj).nodeType\n\nconst emulateTransitionEnd = (element, duration) => {\n let called = false\n const durationPadding = 5\n const emulatedDuration = duration + durationPadding\n function listener() {\n called = true\n element.removeEventListener(TRANSITION_END, listener)\n }\n\n element.addEventListener(TRANSITION_END, listener)\n setTimeout(() => {\n if (!called) {\n triggerTransitionEnd(element)\n }\n }, emulatedDuration)\n}\n\nconst typeCheckConfig = (componentName, config, configTypes) => {\n Object.keys(configTypes)\n .forEach(property => {\n const expectedTypes = configTypes[property]\n const value = config[property]\n const valueType = value && isElement(value) ?\n 'element' :\n toType(value)\n\n if (!new RegExp(expectedTypes).test(valueType)) {\n throw new Error(\n `${componentName.toUpperCase()}: ` +\n `Option \"${property}\" provided type \"${valueType}\" ` +\n `but expected type \"${expectedTypes}\".`)\n }\n })\n}\n\nconst makeArray = nodeList => {\n if (!nodeList) {\n return []\n }\n\n return [].slice.call(nodeList)\n}\n\nconst isVisible = element => {\n if (!element) {\n return false\n }\n\n if (element.style && element.parentNode && element.parentNode.style) {\n return element.style.display !== 'none' &&\n element.parentNode.style.display !== 'none' &&\n element.style.visibility !== 'hidden'\n }\n\n return false\n}\n\nconst findShadowRoot = element => {\n if (!document.documentElement.attachShadow) {\n return null\n }\n\n // Can find the shadow root otherwise it'll return the document\n if (typeof element.getRootNode === 'function') {\n const root = element.getRootNode()\n return root instanceof ShadowRoot ? root : null\n }\n\n if (element instanceof ShadowRoot) {\n return element\n }\n\n // when we don't find a shadow root\n if (!element.parentNode) {\n return null\n }\n\n return findShadowRoot(element.parentNode)\n}\n\n// eslint-disable-next-line no-empty-function\nconst noop = () => function () {}\n\nconst reflow = element => element.offsetHeight\n\nexport {\n jQuery,\n TRANSITION_END,\n getUID,\n getSelectorFromElement,\n getTransitionDurationFromElement,\n triggerTransitionEnd,\n isElement,\n emulateTransitionEnd,\n typeCheckConfig,\n makeArray,\n isVisible,\n findShadowRoot,\n noop,\n reflow\n}\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.3.1): collapse.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport {\n jQuery as $,\n TRANSITION_END,\n emulateTransitionEnd,\n getSelectorFromElement,\n getTransitionDurationFromElement,\n isElement,\n makeArray,\n reflow,\n typeCheckConfig\n} from './util/index'\nimport Data from './dom/data'\nimport EventHandler from './dom/event-handler'\nimport Manipulator from './dom/manipulator'\nimport SelectorEngine from './dom/selector-engine'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'collapse'\nconst VERSION = '4.3.1'\nconst DATA_KEY = 'bs.collapse'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst Default = {\n toggle: true,\n parent: ''\n}\n\nconst DefaultType = {\n toggle: 'boolean',\n parent: '(string|element)'\n}\n\nconst Event = {\n SHOW: `show${EVENT_KEY}`,\n SHOWN: `shown${EVENT_KEY}`,\n HIDE: `hide${EVENT_KEY}`,\n HIDDEN: `hidden${EVENT_KEY}`,\n CLICK_DATA_API: `click${EVENT_KEY}${DATA_API_KEY}`\n}\n\nconst ClassName = {\n SHOW: 'show',\n COLLAPSE: 'collapse',\n COLLAPSING: 'collapsing',\n COLLAPSED: 'collapsed'\n}\n\nconst Dimension = {\n WIDTH: 'width',\n HEIGHT: 'height'\n}\n\nconst Selector = {\n ACTIVES: '.show, .collapsing',\n DATA_TOGGLE: '[data-toggle=\"collapse\"]'\n}\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Collapse {\n constructor(element, config) {\n this._isTransitioning = false\n this._element = element\n this._config = this._getConfig(config)\n this._triggerArray = makeArray(SelectorEngine.find(\n `[data-toggle=\"collapse\"][href=\"#${element.id}\"],` +\n `[data-toggle=\"collapse\"][data-target=\"#${element.id}\"]`\n ))\n\n const toggleList = makeArray(SelectorEngine.find(Selector.DATA_TOGGLE))\n for (let i = 0, len = toggleList.length; i < len; i++) {\n const elem = toggleList[i]\n const selector = getSelectorFromElement(elem)\n const filterElement = makeArray(SelectorEngine.find(selector))\n .filter(foundElem => foundElem === element)\n\n if (selector !== null && filterElement.length) {\n this._selector = selector\n this._triggerArray.push(elem)\n }\n }\n\n this._parent = this._config.parent ? this._getParent() : null\n\n if (!this._config.parent) {\n this._addAriaAndCollapsedClass(this._element, this._triggerArray)\n }\n\n if (this._config.toggle) {\n this.toggle()\n }\n\n Data.setData(element, DATA_KEY, this)\n }\n\n // Getters\n\n static get VERSION() {\n return VERSION\n }\n\n static get Default() {\n return Default\n }\n\n // Public\n\n toggle() {\n if (this._element.classList.contains(ClassName.SHOW)) {\n this.hide()\n } else {\n this.show()\n }\n }\n\n show() {\n if (this._isTransitioning ||\n this._element.classList.contains(ClassName.SHOW)) {\n return\n }\n\n let actives\n let activesData\n\n if (this._parent) {\n actives = makeArray(SelectorEngine.find(Selector.ACTIVES, this._parent))\n .filter(elem => {\n if (typeof this._config.parent === 'string') {\n return elem.getAttribute('data-parent') === this._config.parent\n }\n\n return elem.classList.contains(ClassName.COLLAPSE)\n })\n\n if (actives.length === 0) {\n actives = null\n }\n }\n\n const container = SelectorEngine.findOne(this._selector)\n if (actives) {\n const tempActiveData = actives.filter(elem => container !== elem)\n activesData = tempActiveData[0] ? Data.getData(tempActiveData[0], DATA_KEY) : null\n\n if (activesData && activesData._isTransitioning) {\n return\n }\n }\n\n const startEvent = EventHandler.trigger(this._element, Event.SHOW)\n if (startEvent.defaultPrevented) {\n return\n }\n\n if (actives) {\n actives.forEach(elemActive => {\n if (container !== elemActive) {\n Collapse._collapseInterface(elemActive, 'hide')\n }\n\n if (!activesData) {\n Data.setData(elemActive, DATA_KEY, null)\n }\n })\n }\n\n const dimension = this._getDimension()\n\n this._element.classList.remove(ClassName.COLLAPSE)\n this._element.classList.add(ClassName.COLLAPSING)\n\n this._element.style[dimension] = 0\n\n if (this._triggerArray.length) {\n this._triggerArray.forEach(element => {\n element.classList.remove(ClassName.COLLAPSED)\n element.setAttribute('aria-expanded', true)\n })\n }\n\n this.setTransitioning(true)\n\n const complete = () => {\n this._element.classList.remove(ClassName.COLLAPSING)\n this._element.classList.add(ClassName.COLLAPSE)\n this._element.classList.add(ClassName.SHOW)\n\n this._element.style[dimension] = ''\n\n this.setTransitioning(false)\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 const transitionDuration = getTransitionDurationFromElement(this._element)\n\n EventHandler.one(this._element, TRANSITION_END, complete)\n\n emulateTransitionEnd(this._element, transitionDuration)\n this._element.style[dimension] = `${this._element[scrollSize]}px`\n }\n\n hide() {\n if (this._isTransitioning ||\n !this._element.classList.contains(ClassName.SHOW)) {\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(ClassName.COLLAPSING)\n this._element.classList.remove(ClassName.COLLAPSE)\n this._element.classList.remove(ClassName.SHOW)\n\n const triggerArrayLength = this._triggerArray.length\n if (triggerArrayLength > 0) {\n for (let i = 0; i < triggerArrayLength; i++) {\n const trigger = this._triggerArray[i]\n const selector = getSelectorFromElement(trigger)\n\n if (selector !== null) {\n const elem = SelectorEngine.findOne(selector)\n\n if (!elem.classList.contains(ClassName.SHOW)) {\n trigger.classList.add(ClassName.COLLAPSED)\n trigger.setAttribute('aria-expanded', false)\n }\n }\n }\n }\n\n this.setTransitioning(true)\n\n const complete = () => {\n this.setTransitioning(false)\n this._element.classList.remove(ClassName.COLLAPSING)\n this._element.classList.add(ClassName.COLLAPSE)\n EventHandler.trigger(this._element, Event.HIDDEN)\n }\n\n this._element.style[dimension] = ''\n const transitionDuration = getTransitionDurationFromElement(this._element)\n\n EventHandler.one(this._element, TRANSITION_END, complete)\n emulateTransitionEnd(this._element, transitionDuration)\n }\n\n setTransitioning(isTransitioning) {\n this._isTransitioning = isTransitioning\n }\n\n dispose() {\n Data.removeData(this._element, DATA_KEY)\n\n this._config = null\n this._parent = null\n this._element = null\n this._triggerArray = null\n this._isTransitioning = null\n }\n\n // Private\n\n _getConfig(config) {\n config = {\n ...Default,\n ...config\n }\n config.toggle = Boolean(config.toggle) // Coerce string values\n typeCheckConfig(NAME, config, DefaultType)\n return config\n }\n\n _getDimension() {\n const hasWidth = this._element.classList.contains(Dimension.WIDTH)\n return hasWidth ? Dimension.WIDTH : Dimension.HEIGHT\n }\n\n _getParent() {\n let { parent } = this._config\n\n if (isElement(parent)) {\n // it's a jQuery object\n if (typeof parent.jquery !== 'undefined' || typeof parent[0] !== 'undefined') {\n parent = parent[0]\n }\n } else {\n parent = SelectorEngine.findOne(parent)\n }\n\n const selector = `[data-toggle=\"collapse\"][data-parent=\"${parent}\"]`\n\n makeArray(SelectorEngine.find(selector, parent))\n .forEach(element => {\n this._addAriaAndCollapsedClass(\n Collapse._getTargetFromElement(element),\n [element]\n )\n })\n\n return parent\n }\n\n _addAriaAndCollapsedClass(element, triggerArray) {\n if (element) {\n const isOpen = element.classList.contains(ClassName.SHOW)\n\n if (triggerArray.length) {\n triggerArray.forEach(elem => {\n if (isOpen) {\n elem.classList.remove(ClassName.COLLAPSED)\n } else {\n elem.classList.add(ClassName.COLLAPSED)\n }\n\n elem.setAttribute('aria-expanded', isOpen)\n })\n }\n }\n }\n\n // Static\n\n static _getTargetFromElement(element) {\n const selector = getSelectorFromElement(element)\n return selector ? SelectorEngine.findOne(selector) : null\n }\n\n static _collapseInterface(element, config) {\n let data = Data.getData(element, DATA_KEY)\n const _config = {\n ...Default,\n ...Manipulator.getDataAttributes(element),\n ...typeof config === 'object' && config ? config : {}\n }\n\n if (!data && _config.toggle && /show|hide/.test(config)) {\n _config.toggle = false\n }\n\n if (!data) {\n data = new Collapse(element, _config)\n }\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 static _jQueryInterface(config) {\n return this.each(function () {\n Collapse._collapseInterface(this, config)\n })\n }\n\n static _getInstance(element) {\n return Data.getData(element, DATA_KEY)\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\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') {\n event.preventDefault()\n }\n\n const triggerData = Manipulator.getDataAttributes(this)\n const selector = getSelectorFromElement(this)\n const selectorElements = makeArray(SelectorEngine.find(selector))\n\n selectorElements.forEach(element => {\n const data = Data.getData(element, DATA_KEY)\n let config\n if (data) {\n // update parent attribute\n if (data._parent === null && typeof triggerData.parent === 'string') {\n data._config.parent = triggerData.parent\n data._parent = data._getParent()\n }\n\n config = 'toggle'\n } else {\n config = triggerData\n }\n\n Collapse._collapseInterface(element, config)\n })\n})\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .collapse to jQuery only if jQuery is present\n */\n\nif (typeof $ !== 'undefined') {\n const JQUERY_NO_CONFLICT = $.fn[NAME]\n $.fn[NAME] = Collapse._jQueryInterface\n $.fn[NAME].Constructor = Collapse\n $.fn[NAME].noConflict = () => {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return Collapse._jQueryInterface\n }\n}\n\nexport default Collapse\n"],"names":["MILLISECONDS_MULTIPLIER","TRANSITION_END","window","jQuery","toType","obj","toString","call","match","toLowerCase","getSelectorFromElement","element","selector","getAttribute","hrefAttr","trim","document","querySelector","error","getTransitionDurationFromElement","getComputedStyle","transitionDuration","transitionDelay","floatTransitionDuration","parseFloat","floatTransitionDelay","split","triggerTransitionEnd","evt","createEvent","initEvent","dispatchEvent","isElement","nodeType","emulateTransitionEnd","duration","called","durationPadding","emulatedDuration","listener","removeEventListener","addEventListener","setTimeout","typeCheckConfig","componentName","config","configTypes","Object","keys","forEach","property","expectedTypes","value","valueType","RegExp","test","Error","toUpperCase","makeArray","nodeList","slice","reflow","offsetHeight","NAME","VERSION","DATA_KEY","EVENT_KEY","DATA_API_KEY","Default","toggle","parent","DefaultType","Event","SHOW","SHOWN","HIDE","HIDDEN","CLICK_DATA_API","ClassName","COLLAPSE","COLLAPSING","COLLAPSED","Dimension","WIDTH","HEIGHT","Selector","ACTIVES","DATA_TOGGLE","Collapse","_isTransitioning","_element","_config","_getConfig","_triggerArray","SelectorEngine","find","id","toggleList","i","len","length","elem","filterElement","filter","foundElem","_selector","push","_parent","_getParent","_addAriaAndCollapsedClass","Data","setData","classList","contains","hide","show","actives","activesData","container","findOne","tempActiveData","getData","startEvent","EventHandler","trigger","defaultPrevented","elemActive","_collapseInterface","dimension","_getDimension","remove","add","style","setAttribute","setTransitioning","complete","capitalizedDimension","scrollSize","one","getBoundingClientRect","triggerArrayLength","isTransitioning","dispose","removeData","Boolean","hasWidth","jquery","_getTargetFromElement","triggerArray","isOpen","data","Manipulator","getDataAttributes","TypeError","_jQueryInterface","each","_getInstance","on","event","target","tagName","preventDefault","triggerData","selectorElements","$","JQUERY_NO_CONFLICT","fn","Constructor","noConflict"],"mappings":"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"}