{"version":3,"sources":["webpack://fair-labour/./assets/components/accordion/js/accordion.component.js","webpack://fair-labour/./assets/components/accordion/index.js"],"names":["EASING","Accordion","_DcBaseComponent","_inherits","_super","_this","_classCallCheck","_len","arguments","length","args","Array","_key","call","apply","concat","_isAnimating","element","classList","contains","_isExpanded","Error","_onClickTrigger","bind","_assertThisInitialized","_onKeydownTrigger","_onAnimationComplete","key","value","_this2","this","refs","trigger","forEach","x","setAttribute","content","_addListeners","_this3","addListener","event","preventDefault","collapse","expand","which","isExperienceEditor","_this4","style","display","overflow","maxHeight","remove","add","anime","targets","scrollHeight","duration","easing","complete","_this5","_this6","removeAttribute","DcBaseComponent","dcFactory"],"mappings":"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","file":"accordion.6f3cf9c0e61fe2175947.js","sourcesContent":["import anime from 'animejs';\nimport { DcBaseComponent } from '@deleteagency/dc';\n\nconst ANIMATION_DURATION = 300;\nconst EASING = 'linear';\n\nexport default class Accordion extends DcBaseComponent {\n constructor(...args) {\n super(...args);\n this._isAnimating = false;\n\n if (this.element.classList.contains('is-expanded')) {\n this._isExpanded = true;\n } else if (this.element.classList.contains('is-collapsed')) {\n this._isExpanded = false;\n } else {\n throw new Error('You have to specify one of accordion state: is-collpased, is-expanded');\n }\n\n this._onClickTrigger = this._onClickTrigger.bind(this);\n this._onKeydownTrigger = this._onKeydownTrigger.bind(this);\n this._onAnimationComplete = this._onAnimationComplete.bind(this);\n }\n\n static getNamespace() {\n return 'accordion';\n }\n\n static getRequiredRefs() {\n return ['trigger', 'content'];\n }\n\n onInit() {\n this.refs.trigger.forEach((x) => {\n x.setAttribute('aria-expanded', this._isExpanded);\n });\n this.refs.content.setAttribute('aria-hidden', !this._isExpanded);\n\n this._addListeners();\n }\n\n _addListeners() {\n this.refs.trigger.forEach((x) => {\n this.addListener(x, 'click', this._onClickTrigger);\n this.addListener(x, 'keydown', this._onKeydownTrigger);\n });\n }\n\n _onClickTrigger(event) {\n if (typeof event !== 'undefined' &&\n typeof event.preventDefault === 'function'\n ) {\n event.preventDefault();\n }\n\n if (this._isAnimating) return;\n\n if (this._isExpanded) {\n this.collapse();\n } else {\n this.expand();\n }\n }\n\n _onKeydownTrigger(event) {\n const keyCode = event.which;\n\n switch (keyCode) {\n case 13:\n case 32:\n if (!this.isExperienceEditor) {\n this._onClickTrigger(event);\n }\n break;\n default:\n break;\n }\n }\n\n expand() {\n this._isAnimating = true;\n this.refs.content.style.display = 'block';\n this.refs.content.style.overflow = 'hidden';\n this.refs.content.style.maxHeight = '0';\n this.element.classList.remove('is-collapsed');\n this.element.classList.add('is-expanding');\n\n anime({\n targets: this.refs.content,\n maxHeight: [0, this.refs.content.scrollHeight],\n duration: ANIMATION_DURATION,\n easing: EASING,\n complete: () => {\n this._onAnimationComplete();\n }\n });\n }\n\n collapse() {\n this._isAnimating = true;\n // animejs do not set initial value for max height\n this.refs.content.style.maxHeight = `${this.refs.content.scrollHeight}px`;\n this.refs.content.style.overflow = 'hidden';\n this.element.classList.remove('is-expanded');\n this.element.classList.add('is-collapsing');\n\n anime({\n targets: this.refs.content,\n maxHeight: [this.refs.content.scrollHeight, 0],\n duration: ANIMATION_DURATION,\n easing: EASING,\n complete: () => {\n this._onAnimationComplete();\n }\n });\n }\n\n _onAnimationComplete() {\n this._isAnimating = false;\n this._isExpanded = !this._isExpanded;\n\n if (this._isExpanded) {\n this.element.classList.remove('is-expanding');\n this.element.classList.add('is-expanded');\n } else {\n this.element.classList.remove('is-collapsing');\n this.element.classList.add('is-collapsed');\n }\n\n this.refs.content.removeAttribute('style');\n this.refs.trigger.forEach((x) => {\n x.setAttribute('aria-expanded', this._isExpanded);\n });\n this.refs.content.setAttribute('aria-hidden', !this._isExpanded);\n }\n}\n","import './scss/index.scss';\n\nimport { dcFactory } from '@deleteagency/dc';\nimport Accordion from './js/accordion.component';\n\ndcFactory.register(Accordion);\n"],"sourceRoot":""}