{"version":3,"file":"./modules/Expandable.xxxxxxxx.js","mappings":"6IAEe,MAAMA,EAIjB,WAAAC,CAAoBC,EAAgCC,EAA6B,CAAC,GAA9D,KAAAD,UAAAA,EAAgC,KAAAC,QAAAA,EAChDC,KAAKC,OAASD,KAAKF,UAAUI,UAAUC,SAAS,UAChDH,KAAKD,SAAU,QAAWC,KAAKF,UAAWM,OAAOC,OAAOL,KAAKM,oBAAqBN,KAAKD,UACvFC,KAAKO,MACT,CAEQ,IAAAA,GAGJ,OAFAP,KAAKQ,iBAAiBR,KAAKF,UAAWE,KAAKS,qBAC3CT,KAAKU,qBACEV,IACX,CAEQ,iBAAAW,GAEJ,OADAX,KAAKY,OAASZ,KAAKa,iBAAiBb,KAAKF,WAClCE,IACX,CAEQ,gBAAAa,CAAiBC,GACrB,OAAOA,EAAQC,YACnB,CAEQ,iBAAAN,GACJ,OAAOT,KAAKC,OAAS,GAAKD,KAAKD,QAAQiB,gBAAkB,IAC7D,CAEQ,gBAAAR,CAAiBM,EAAsBF,GAG3C,OAFAE,EAAQG,MAAMC,UAAsB,MAAVN,EAAiBA,EAAS,GAE7CZ,IACX,CAEQ,WAAAmB,GAEJ,OADAnB,KAAKC,QAAUD,KAAKC,OACbD,IACX,CAEQ,iBAAAM,GACJ,MAAO,CACHU,gBAAiB,IAEzB,CAEQ,kBAAAN,GAGJ,OAFAU,OAAOC,gBAAgB,SAAU,KAAM,QAA2B,IAAMrB,KAAKsB,WAAY,KAAMC,QAExFvB,IACX,CAEQ,QAAAsB,GACJ,MAAMV,EAASZ,KAAKS,oBACpBT,KAAKQ,iBAAiBR,KAAKF,UAAWc,EAC1C,CAEA,kBAAAY,CAAmBC,GAEf,OADAzB,KAAKD,QAAQiB,gBAAkBS,EACxBzB,IACX,CAEA,MAAA0B,GAGI,OAFA1B,KAAKmB,cACAX,iBAAiBR,KAAKF,UAAWE,KAAKS,qBACpCT,IACX,CAEA,QAAA2B,GACI,OAAO3B,KAAKC,MAChB,CAEA,aAAA2B,GACI,OAAO5B,KAAKY,OAAwC,KAA/BZ,KAAKD,QAAQiB,eACtC,CAGA,KAAAa,GAGI,OAFA7B,KAAKQ,iBAAiBR,KAAKF,WACtBa,oBACEX,IACX,CAEA,MAAA8B,GACI,MAAMlB,EAAUZ,KAAKS,oBAGrB,OAFAT,KAAKQ,iBAAiBR,KAAKF,UAAWc,GAE/BZ,IACX,CAEA,YAAA+B,GACI,OAAO/B,KAAKF,SAChB,E","sources":["webpack:///./modules/Expandable.ts"],"sourcesContent":["import { getOptions, requestAnimationFrameTimer } from '../helpers/helperFunctions';\r\n\r\nexport default class Expandable {\r\n private height: 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 this.init();\r\n }\r\n\r\n private init(): Expandable {\r\n this.setElementHeight(this.container, this.getSuitableHeight());\r\n this.setOnResizeHandler();\r\n return this;\r\n }\r\n\r\n private saveInitialHeight(): Expandable {\r\n this.height = this.getElementHeight(this.container);\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 getSuitableHeight(): string {\r\n return this.active ? '' : this.options.collapsedHeight + 'px';\r\n }\r\n\r\n private setElementHeight(element: HTMLElement, height?: string): Expandable {\r\n element.style.maxHeight = height != null ? height : ''; \r\n\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 private setOnResizeHandler(): Expandable {\r\n NiveaX.addToEventStore('resize', () => requestAnimationFrameTimer(() => this.onResize(), 300), window)\r\n\r\n return this;\r\n }\r\n\r\n private onResize() {\r\n const height = this.getSuitableHeight();\r\n this.setElementHeight(this.container, height);\r\n }\r\n\r\n setCollapsedHeight(value: number): Expandable {\r\n this.options.collapsedHeight = value;\r\n return this;\r\n }\r\n\r\n toggle(): Expandable {\r\n this.toggleState()\r\n .setElementHeight(this.container, this.getSuitableHeight());\r\n return this;\r\n }\r\n\r\n isActive(): boolean {\r\n return this.active;\r\n }\r\n \r\n needToBeShown(): boolean {\r\n return this.height > this.options.collapsedHeight * 1.25;\r\n }\r\n\r\n\r\n clear(): Expandable {\r\n this.setElementHeight(this.container)\r\n .saveInitialHeight();\r\n return this;\r\n }\r\n\r\n render(): Expandable {\r\n const height = this.getSuitableHeight();\r\n this.setElementHeight(this.container, height);\r\n\r\n return this;\r\n }\r\n\r\n getContainer(): HTMLElement {\r\n return this.container;\r\n }\r\n}"],"names":["Expandable","constructor","container","options","this","active","className","includes","Object","assign","getDefaultOptions","init","setElementHeight","getSuitableHeight","setOnResizeHandler","saveInitialHeight","height","getElementHeight","element","offsetHeight","collapsedHeight","style","maxHeight","toggleState","NiveaX","addToEventStore","onResize","window","setCollapsedHeight","value","toggle","isActive","needToBeShown","clear","render","getContainer"],"sourceRoot":""}