{"version":3,"file":"./modules/Expander.xxxxxxxx.js","mappings":"8GAEA,WAKI,SAAAA,EAAoBC,EAAgCC,QAAA,IAAAA,IAAAA,EAAA,IAAhCC,KAAAF,UAAAA,EAAgCE,KAAAD,QAAAA,EAChDC,KAAKC,OAASD,KAAKF,UAAUI,UAAUC,SAAS,UAChDH,KAAKD,SAAU,EAAAK,EAAAC,IAAWL,KAAKF,UAAWQ,OAAOC,OAAOP,KAAKQ,oBAAqBR,KAAKD,UAEvFC,KAAKS,MACT,CA6EJ,OA3EYZ,EAAAa,UAAAD,KAAR,WAGI,OAFAT,KAAKW,oBACAC,iBAAiBZ,KAAKF,UAAWE,KAAKa,qBACpCb,IACX,EAEQH,EAAAa,UAAAC,kBAAR,WAKI,OAJAX,KAAKc,OAASd,KAAKD,QAAQgB,WAAaf,KAAKgB,iBAAiBhB,KAAKF,WACnEE,KAAKiB,MAAQjB,KAAKkB,gBAAgBlB,KAAKF,WACvCE,KAAKF,UAAUqB,QAAQC,cAA+B,MAAfpB,KAAKc,OAAiBd,KAAKc,OAAOO,WAAa,GACtFrB,KAAKF,UAAUqB,QAAQG,aAA8B,MAAftB,KAAKc,OAAiBd,KAAKiB,MAAMI,WAAa,GAC7ErB,IACX,EAEQH,EAAAa,UAAAM,iBAAR,SAAyBO,GACrB,OAAOA,EAAQC,YACnB,EAEQ3B,EAAAa,UAAAQ,gBAAR,SAAwBK,GACpB,OAAOA,EAAQE,WACnB,EAEQ5B,EAAAa,UAAAG,kBAAR,WACI,OAAOb,KAAKC,OAASD,KAAKc,OAASd,KAAKD,QAAQ2B,eACpD,EAEQ7B,EAAAa,UAAAE,iBAAR,SAAyBW,EAAsBT,GAE3C,OADAS,EAAQI,MAAMZ,UAAsB,MAAVD,EAAiBA,EAAS,KAAO,GACpDd,IACX,EAEQH,EAAAa,UAAAkB,YAAR,WAEI,OADA5B,KAAKC,QAAUD,KAAKC,OACbD,IACX,EAEQH,EAAAa,UAAAF,kBAAR,WACI,MAAO,CACHkB,gBAAiB,IAEzB,EAEO7B,EAAAa,UAAAmB,mBAAP,SAA0BC,GAEtB,OADA9B,KAAKD,QAAQ2B,gBAAkBI,EACxB9B,IACX,EAEOH,EAAAa,UAAAqB,OAAP,WAGI,OAFA/B,KAAK4B,cACAhB,iBAAiBZ,KAAKF,UAAWE,KAAKa,qBACpCb,IACX,EAEOH,EAAAa,UAAAsB,SAAP,WACI,OAAOhC,KAAKC,MAChB,EAEOJ,EAAAa,UAAAuB,cAAP,WACI,OAAOjC,KAAKc,OAAwC,KAA/Bd,KAAKD,QAAQ2B,eACtC,EAEO7B,EAAAa,UAAAwB,MAAP,WAGI,OAFAlC,KAAKY,iBAAiBZ,KAAKF,WACtBa,oBACEX,IACX,EAEOH,EAAAa,UAAAyB,OAAP,WAEI,OADAnC,KAAKY,iBAAiBZ,KAAKF,UAAWE,KAAKa,qBACpCb,IACX,EAEOH,EAAAa,UAAA0B,aAAP,WACI,OAAOpC,KAAKF,SAChB,EACJD,CAAA,CAvFA,kECCMwC,EAAiB,2BAEvBC,EAAA,WAYI,SAAAA,EAAmBf,EAA8BxB,QAAA,IAAAA,IAAAA,EAAA,IAA9BC,KAAAuB,QAAAA,EAA8BvB,KAAAD,QAAAA,EAC7CC,KAAKD,SAAU,EAAAwC,EAAAlC,IAAWL,KAAKuB,QAASjB,OAAOC,OAAOP,KAAKQ,oBAAqBR,KAAKD,UACrFC,KAAKF,UAAyBE,KAAKuB,QAAQiB,cAAc,IAAAC,OAAIzC,KAAKD,QAAQ2C,qBAAwB1C,KAAKuB,QACvGvB,KAAK2C,OAAsB3C,KAAKuB,QAAQiB,cAAc,IAAAC,OAAIzC,KAAKD,QAAQ6C,iBAEvE5C,KAAK6C,WAAa,IAAIC,EAAA,QAAW9C,KAAKF,UAAWE,KAAKD,QAAQgD,mBAE9D/C,KAAKS,MACT,CA0HJ,OAzIW6B,EAAAU,MAAP,SAAaC,QAAA,IAAAA,IAAAA,EAAAZ,GACTa,MAAMC,KAAKC,SAASC,iBAAiBJ,IAAWK,OAAO,SAACC,GAAsB,OAACA,EAAKpC,QAAQqC,iBAAd,GAAiCC,QAAQ,SAAClC,GACpH,IAAIe,EAASf,GACbA,EAAQJ,QAAQqC,kBAAoB,MACxC,EACJ,EAYQlB,EAAA5B,UAAAD,KAAR,WAQI,OANAT,KAAK0D,qBACAC,wBAEAC,mBACAC,yBAEE7D,IACX,EAEQsC,EAAA5B,UAAAgD,mBAAR,WAEI,OADA1D,KAAK2C,OAAOmB,QAAS,EACd9D,IACX,EAEQsC,EAAA5B,UAAAiD,sBAAR,WAEI,OADA3D,KAAK2C,OAAOoB,iBAAiB,QAAS/D,KAAKgE,eAAeC,KAAKjE,OACxDA,IACX,EAEQsC,EAAA5B,UAAAwD,qBAAR,SAA6BC,GAKzB,OAJA,EACMnE,KAAKuB,QAAQ6C,UAAUC,IAAI,GAAA5B,OAAGzC,KAAKD,QAAQuE,gBAAe,aAC1DtE,KAAKuB,QAAQ6C,UAAUG,OAAO,GAAA9B,OAAGzC,KAAKD,QAAQuE,gBAAe,aAE5DtE,IACX,EAEQsC,EAAA5B,UAAA8D,SAAR,SAAiBL,GAKb,OAJA,EACMnE,KAAKD,QAAQ0E,SAAWzE,KAAKF,UAAUsE,UAAUC,IAAI,GAAA5B,OAAGzC,KAAKD,QAAQ2C,kBAAiB,gBACtF1C,KAAKD,QAAQ0E,SAAWzE,KAAKF,UAAUsE,UAAUG,OAAO,GAAA9B,OAAGzC,KAAKD,QAAQ2C,kBAAiB,gBAExF1C,IACX,EAEQsC,EAAA5B,UAAAsD,eAAR,SAAuBU,QAAA,IAAAA,IAAAA,GAAA,GAEnB1E,KAAK6C,WAAWd,SAChB/B,KAAKkE,qBAAqBlE,KAAK6C,WAAWb,WAC9C,EAOQM,EAAA5B,UAAAmD,uBAAR,WAII,OAHI7D,KAAKD,QAAQiC,UACbhC,KAAKgE,gBAAe,GAEjBhE,IACX,EAOQsC,EAAA5B,UAAAiE,cAAR,WAMI,OALA3E,KAAK6C,WAAWV,SAEhBnC,KAAKwE,UAAS,GACTI,YAAW,GAET5E,IACX,EAEQsC,EAAA5B,UAAAmE,gBAAR,WAMI,OALA7E,KAAK6C,WAAWX,QAEhBlC,KAAKwE,UAAS,GACTI,YAAW,GAET5E,IACX,EAEQsC,EAAA5B,UAAAkE,WAAR,SAAmB9C,GAEf,OADA9B,KAAK2C,OAAOmB,OAAShC,EACd9B,IACX,EAEQsC,EAAA5B,UAAAF,kBAAR,WACI,MAAO,CACH8D,gBAAiB,cACjB5B,kBAAmB,uBACnBE,eAAgB,sBAChB6B,SAAS,EACTK,aAAc,WAAQ,EAE9B,EAEOxC,EAAA5B,UAAAkD,iBAAP,WAMI,OALA5D,KAAK6C,WAAWX,QAEhBlC,KAAK6C,WAAWZ,gBACVjC,KAAK2E,gBACL3E,KAAK6E,kBACJ7E,IACX,EAEOsC,EAAA5B,UAAAmB,mBAAP,SAA0BC,GAEtB,OADA9B,KAAK6C,WAAWhB,mBAAmBC,GAC5B9B,IACX,EAEOsC,EAAA5B,UAAAqE,iBAAP,SAAwBC,GAEpB,OADAhF,KAAKD,QAAQ+E,aAAeE,EACrBhF,IACX,EAEOsC,EAAA5B,UAAAsB,SAAP,WACI,OAAOhC,KAAK6C,WAAWb,UAC3B,EAEOM,EAAA5B,UAAAqB,OAAP,WAEI,OADA/B,KAAKgE,iBACEhE,IACX,EACJsC,CAAA,CA9IA,aA6JI,IAAIA,EAASU,MAAMX","sources":["webpack:///./modules/Expandable.ts","webpack:///./modules/Expander.ts"],"sourcesContent":["import { getOptions } from '../helpers/helperFunctions';\r\n\r\nexport default class Expandable {\r\n private height: number;\r\n private width: number;\r\n private active: boolean;\r\n\r\n constructor(private container: HTMLElement, private options: ExpandableOptions = {}) {\r\n this.active = this.container.className.includes('active');\r\n this.options = getOptions(this.container, Object.assign(this.getDefaultOptions(), this.options));\r\n\r\n this.init();\r\n }\r\n\r\n private init(): Expandable {\r\n this.saveInitialHeight()\r\n .setElementHeight(this.container, this.getSuitableHeight());\r\n return this;\r\n }\r\n\r\n private saveInitialHeight(): Expandable {\r\n this.height = this.options.maxHeight || this.getElementHeight(this.container);\r\n this.width = this.getElementWidth(this.container);\r\n this.container.dataset.elementHeight = this.height != null ? this.height.toString() : '';\r\n this.container.dataset.elementWidth = this.height != null ? this.width.toString() : '';\r\n return this;\r\n }\r\n\r\n private getElementHeight(element: HTMLElement): number {\r\n return element.offsetHeight;\r\n }\r\n\r\n private getElementWidth(element: HTMLElement): number {\r\n return element.offsetWidth;\r\n }\r\n\r\n private getSuitableHeight(): number {\r\n return this.active ? this.height : this.options.collapsedHeight;\r\n }\r\n\r\n private setElementHeight(element: HTMLElement, height?: number): Expandable {\r\n element.style.maxHeight = height != null ? height + 'px' : '';\r\n return this;\r\n }\r\n\r\n private toggleState(): Expandable {\r\n this.active = !this.active;\r\n return this;\r\n }\r\n\r\n private getDefaultOptions(): ExpandableOptions {\r\n return {\r\n collapsedHeight: 115\r\n };\r\n }\r\n\r\n public setCollapsedHeight(value: number): Expandable {\r\n this.options.collapsedHeight = value;\r\n return this;\r\n }\r\n\r\n public toggle(): Expandable {\r\n this.toggleState()\r\n .setElementHeight(this.container, this.getSuitableHeight());\r\n return this;\r\n }\r\n\r\n public isActive(): boolean {\r\n return this.active;\r\n }\r\n\r\n public needToBeShown(): boolean {\r\n return this.height > this.options.collapsedHeight * 1.25;\r\n }\r\n\r\n public clear(): Expandable {\r\n this.setElementHeight(this.container)\r\n .saveInitialHeight();\r\n return this;\r\n }\r\n\r\n public render(): Expandable {\r\n this.setElementHeight(this.container, this.getSuitableHeight());\r\n return this;\r\n }\r\n\r\n public getContainer(): HTMLElement {\r\n return this.container;\r\n }\r\n}","import Expandable from './Expandable';\r\nimport { getOptions } from '../helpers/helperFunctions';\r\n\r\nconst moduleSelector = '[data-module=\"Expander\"]';\r\n\r\nexport default class Expander {\r\n private container: HTMLElement;\r\n private button: HTMLElement;\r\n private expandable: Expandable;\r\n\r\n static setup(selector: string = moduleSelector): void {\r\n Array.from(document.querySelectorAll(selector)).filter((node: HTMLElement) => !node.dataset.moduleInitialized).forEach((element: HTMLElement) => {\r\n new Expander(element);\r\n element.dataset.moduleInitialized = 'true';\r\n });\r\n }\r\n\r\n constructor(public element: HTMLElement, private options: ExpanderOptions = {}) {\r\n this.options = getOptions(this.element, Object.assign(this.getDefaultOptions(), this.options));\r\n this.container = this.element.querySelector(`.${this.options.contaiterSelector}`) || this.element;\r\n this.button = this.element.querySelector(`.${this.options.buttonSelector}`);\r\n \r\n this.expandable = new Expandable(this.container, this.options.expandableOptions);\r\n\r\n this.init();\r\n }\r\n\r\n private init(): Expander {\r\n\r\n this.showExpanderButton()\r\n .setButtonEventHandler()\r\n // .setOnResizeHandler()\r\n .adjustAppearance()\r\n .applyActiveFromOptions();\r\n\r\n return this;\r\n }\r\n\r\n private showExpanderButton(): Expander {\r\n this.button.hidden = false;\r\n return this;\r\n }\r\n\r\n private setButtonEventHandler(): Expander {\r\n this.button.addEventListener('click', this.toggleExpander.bind(this));\r\n return this;\r\n }\r\n\r\n private toggleActiveModifier(force?: boolean): Expander {\r\n (force)\r\n ? this.element.classList.add(`${this.options.elementSelector}--active`)\r\n : this.element.classList.remove(`${this.options.elementSelector}--active`);\r\n\r\n return this;\r\n }\r\n\r\n private showFade(force?: boolean): Expander {\r\n (force)\r\n ? this.options.hasFade && this.container.classList.add(`${this.options.contaiterSelector}--with-fade`)\r\n : this.options.hasFade && this.container.classList.remove(`${this.options.contaiterSelector}--with-fade`);\r\n\r\n return this;\r\n }\r\n\r\n private toggleExpander(clickedEvent: boolean = true): void {\r\n debugger;\r\n this.expandable.toggle();\r\n this.toggleActiveModifier(this.expandable.isActive());\r\n }\r\n\r\n // private onResize(): void {\r\n // this.options.beforeResize();\r\n // this.adjustAppearance();\r\n // }\r\n\r\n private applyActiveFromOptions() {\r\n if (this.options.isActive) {\r\n this.toggleExpander(false);\r\n }\r\n return this;\r\n }\r\n\r\n // private setOnResizeHandler(): Expander {\r\n // Beiersdorf.addToEventStore('resize', this.onResize.bind(this), window);\r\n // return this;\r\n // }\r\n\r\n private setupExpander(): Expander {\r\n this.expandable.render();\r\n\r\n this.showFade(true)\r\n .hideButton(false);\r\n\r\n return this;\r\n }\r\n\r\n private destroyExpander(): Expander {\r\n this.expandable.clear();\r\n\r\n this.showFade(false)\r\n .hideButton(true);\r\n\r\n return this;\r\n }\r\n\r\n private hideButton(value: boolean): Expander {\r\n this.button.hidden = value;\r\n return this;\r\n }\r\n\r\n private getDefaultOptions(): ExpanderOptions {\r\n return {\r\n elementSelector: 'cw-expander',\r\n contaiterSelector: 'cw-expander__content',\r\n buttonSelector: 'cw-expander__button',\r\n hasFade: true,\r\n beforeResize: () => { }\r\n };\r\n }\r\n\r\n public adjustAppearance(): Expander {\r\n this.expandable.clear();\r\n\r\n this.expandable.needToBeShown()\r\n ? this.setupExpander()\r\n : this.destroyExpander();\r\n return this;\r\n }\r\n\r\n public setCollapsedHeight(value: number): Expander {\r\n this.expandable.setCollapsedHeight(value);\r\n return this;\r\n }\r\n\r\n public setBeforResizeCB(cb: Callback): Expander {\r\n this.options.beforeResize = cb;\r\n return this;\r\n }\r\n\r\n public isActive(): boolean {\r\n return this.expandable.isActive();\r\n }\r\n\r\n public toggle(): Expander {\r\n this.toggleExpander();\r\n return this;\r\n }\r\n}\r\n\r\n// Hot Module Replacement\r\nif (module.hot) {\r\n let nodesCache: HMRNodes[] = Array.from(document.querySelectorAll(moduleSelector)).map((element: Node) => ({ nodeToReplace: element, nodeOrigin: element.cloneNode(true) }));\r\n\r\n new Expander.setup(moduleSelector);\r\n\r\n module.hot.accept(() => {\r\n new Expander.setup(moduleSelector);\r\n });\r\n module.hot.dispose(() => {\r\n nodesCache.forEach(({ nodeToReplace, nodeOrigin }) => { nodeToReplace = nodeToReplace.parentElement.replaceChild(nodeOrigin.cloneNode(true), nodeToReplace) });\r\n });\r\n} else {\r\n new Expander.setup(moduleSelector);\r\n}"],"names":["Expandable","container","options","this","active","className","includes","_helpers_helperFunctions__WEBPACK_IMPORTED_MODULE_0__","$E","Object","assign","getDefaultOptions","init","prototype","saveInitialHeight","setElementHeight","getSuitableHeight","height","maxHeight","getElementHeight","width","getElementWidth","dataset","elementHeight","toString","elementWidth","element","offsetHeight","offsetWidth","collapsedHeight","style","toggleState","setCollapsedHeight","value","toggle","isActive","needToBeShown","clear","render","getContainer","moduleSelector","Expander","_helpers_helperFunctions__WEBPACK_IMPORTED_MODULE_1__","querySelector","concat","contaiterSelector","button","buttonSelector","expandable","_Expandable__WEBPACK_IMPORTED_MODULE_0__","expandableOptions","setup","selector","Array","from","document","querySelectorAll","filter","node","moduleInitialized","forEach","showExpanderButton","setButtonEventHandler","adjustAppearance","applyActiveFromOptions","hidden","addEventListener","toggleExpander","bind","toggleActiveModifier","force","classList","add","elementSelector","remove","showFade","hasFade","clickedEvent","setupExpander","hideButton","destroyExpander","beforeResize","setBeforResizeCB","cb"],"sourceRoot":""}