{"version":3,"file":"./modules/ScrollSlider.xxxxxxxx.js","mappings":"6IAAA,MAAMA,EAAiB,+BAGR,MAAMC,EASjB,YAAOC,CAAMC,EAAmBH,GAC5BI,MAAMC,KAAKC,SAASC,iBAAiBJ,IAAWK,QAAQC,IAAuBA,EAAKC,QAAQC,oBAAmBC,SAASC,IACpH,IAAIZ,EAAaY,GACjBA,EAAQH,QAAQC,kBAAoB,MAAM,GAElD,CAEA,WAAAG,CAAmBD,EAA8BE,EAA+B,CAAC,GAA9D,KAAAF,QAAAA,EAA8B,KAAAE,QAAAA,EAC7CC,KAAKD,SAAU,QAAWC,KAAKH,QAASI,OAAOC,OAAOF,KAAKG,oBAAqBH,KAAKD,UACrFC,KAAKI,MAAyBC,MAAhBf,SAASgB,IAAqC,QAAjBhB,SAASgB,IAAgF,OAAhEhB,SAASiB,qBAAqB,QAAQ,GAAGC,aAAa,OAC1HR,KAAKS,QAAUT,KAAKH,QAAQa,cAAcV,KAAKD,QAAQY,WACvDX,KAAKY,SAAWZ,KAAKH,QAAQa,cAAcV,KAAKD,QAAQc,YACxDb,KAAKc,mBAAqBd,KAAKH,QAAQa,cAAcV,KAAKD,QAAQgB,eAE9Df,KAAKc,oBAETd,KAAKgB,MACT,CAEQ,IAAAA,GACJ1B,SAAS2B,iBAAiB,sBAAsB,IAAMjB,KAAKkB,eAC3DC,OAAOF,iBAAiB,UAAU,SAAS,IAAMjB,KAAKkB,cAAc,MACpElB,KAAKc,mBAAmBG,iBAAiB,UAAU,IAAMjB,KAAKoB,gBAC9DpB,KAAKqB,eACT,CAEQ,aAAAA,GACJrB,KAAKsB,wBAAwBtB,KAAKS,QAAST,KAAKI,MAAQ,IAAM,IAC9DJ,KAAKsB,wBAAwBtB,KAAKY,SAAUZ,KAAKI,OAAS,GAAK,GACnE,CAEQ,uBAAAkB,CAAwBC,EAAoBC,GAChDD,EAAMN,iBAAiB,SAAS,KAC5BjB,KAAKyB,cAAcD,EAAc,GAClC,CAAEE,SAAS,IACdH,EAAMN,iBAAiB,aAAa,KAChCjB,KAAK2B,oBAAoBH,EAAc,GACxC,CAAEE,SAAS,IACdH,EAAMN,iBAAiB,WAAW,KAC9BW,cAAc5B,KAAK6B,iBAAiB,GACrC,CAAEH,SAAS,IACdH,EAAMN,iBAAiB,cAAc,KACjCjB,KAAK2B,oBAAoBH,EAAc,GACxC,CAAEE,SAAS,GAClB,CAEQ,mBAAAC,CAAoBH,GACpBxB,KAAK6B,kBACLD,cAAc5B,KAAK6B,kBAEvB7B,KAAK6B,iBAAmBC,aAAY,IAAM9B,KAAKyB,cAAcD,IAAgB,IACjF,CAEQ,aAAAC,CAAcD,GAClBxB,KAAKc,mBAAmBiB,SAAS,CAC7BC,IAAK,EACLC,KAAMT,EACNU,SAAU,UAElB,CAEQ,UAAAhB,GACJlB,KAAKH,QAAQsC,UAAUC,OAAO,4BAC9BpC,KAAKqC,eAAiBrC,KAAKc,mBAAmBwB,YAC9CtC,KAAKuC,aAAevC,KAAKH,QAAQyC,YAE7BtC,KAAKqC,gBAAkBrC,KAAKuC,cAC5BvC,KAAKH,QAAQsC,UAAUK,IAAI,2BACnC,CAEQ,WAAApB,GACsC,GAAtCpB,KAAKc,mBAAmB2B,WACxBzC,KAAKS,QAAQ0B,UAAUK,IAAI,oBAE3BxC,KAAKS,QAAQ0B,UAAUC,OAAO,oBAE7BpC,KAAKqC,eAAiBrC,KAAKuC,aAAe,GAAMG,KAAKC,IAAI3C,KAAKc,mBAAmB2B,YAClFzC,KAAKY,SAASuB,UAAUC,OAAO,oBAE/BpC,KAAKY,SAASuB,UAAUK,IAAI,mBACpC,CAEQ,iBAAArC,GACJ,MAAO,CACHY,cAAe,8BACfJ,UAAW,qCACXE,WAAY,sCAEpB,EAgBA5B,EAAaC,MAAMF,E","sources":["webpack:///./modules/ScrollSlider.ts"],"sourcesContent":["const moduleSelector = '[data-module=\"ScrollSlider\"]';\r\nimport { debounce, getOptions } from \"../helpers/helperFunctions\";\r\n\r\nexport default class ScrollSlider {\r\n leftBtn: HTMLElement;\r\n rightBtn: HTMLElement;\r\n scrollBarContainer: HTMLElement;\r\n scrollBarWidth: number;\r\n elementWidth: number;\r\n intervalToScroll: any;\r\n isRtl: boolean;\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 ScrollSlider(element);\r\n element.dataset.moduleInitialized = 'true';\r\n });\r\n }\r\n\r\n constructor(public element: HTMLElement, private options: ScrollSliderOptions = {}) {\r\n this.options = getOptions(this.element, Object.assign(this.getDefaultOptions(), this.options));\r\n this.isRtl = (document.dir != undefined) ? document.dir === \"rtl\" : document.getElementsByTagName(\"html\")[0].getAttribute(\"dir\") == \"rtl\";\r\n this.leftBtn = this.element.querySelector(this.options.arrowLeft);\r\n this.rightBtn = this.element.querySelector(this.options.arrowRight);\r\n this.scrollBarContainer = this.element.querySelector(this.options.scrollContent) as HTMLElement;\r\n \r\n if(!this.scrollBarContainer) return;\r\n \r\n this.init();\r\n }\r\n\r\n private init() {\r\n document.addEventListener('ScrollSlider:reset', () => this.showArrows());\r\n window.addEventListener('resize', debounce(() => this.showArrows(), 200));\r\n this.scrollBarContainer.addEventListener('scroll', () => this.checkArrows());\r\n this.arrowHandlers();\r\n }\r\n\r\n private arrowHandlers() {\r\n this.arrowHandlersMouseEvent(this.leftBtn, this.isRtl ? 50 : -50);\r\n this.arrowHandlersMouseEvent(this.rightBtn, this.isRtl ? -50 : 50);\r\n }\r\n\r\n private arrowHandlersMouseEvent(arrow: HTMLElement, valueToScroll: number) {\r\n arrow.addEventListener('click', () => {\r\n this.scrollElement(valueToScroll)\r\n }, { passive: true });\r\n arrow.addEventListener('mousedown', () => {\r\n this.setIntervalToScroll(valueToScroll)\r\n }, { passive: true });\r\n arrow.addEventListener('mouseup', () => {\r\n clearInterval(this.intervalToScroll)\r\n }, { passive: true });\r\n arrow.addEventListener('touchstart', () => {\r\n this.setIntervalToScroll(valueToScroll)\r\n }, { passive: true });\r\n }\r\n\r\n private setIntervalToScroll(valueToScroll: number) {\r\n if (this.intervalToScroll) {\r\n clearInterval(this.intervalToScroll);\r\n }\r\n this.intervalToScroll = setInterval(() => this.scrollElement(valueToScroll), 100);\r\n }\r\n\r\n private scrollElement(valueToScroll: number) {\r\n this.scrollBarContainer.scrollBy({\r\n top: 0,\r\n left: valueToScroll,\r\n behavior: 'smooth'\r\n })\r\n }\r\n\r\n private showArrows() {\r\n this.element.classList.remove('nx-scroll-slider--active');\r\n this.scrollBarWidth = this.scrollBarContainer.offsetWidth;\r\n this.elementWidth = this.element.offsetWidth;\r\n\r\n if (this.scrollBarWidth >= this.elementWidth)\r\n this.element.classList.add('nx-scroll-slider--active');\r\n }\r\n\r\n private checkArrows() {\r\n if (this.scrollBarContainer.scrollLeft == 0)\r\n this.leftBtn.classList.add('nx-arrow--hidden')\r\n else\r\n this.leftBtn.classList.remove('nx-arrow--hidden')\r\n\r\n if ((this.scrollBarWidth - this.elementWidth - 5) >= Math.abs(this.scrollBarContainer.scrollLeft))\r\n this.rightBtn.classList.remove('nx-arrow--hidden')\r\n else\r\n this.rightBtn.classList.add('nx-arrow--hidden')\r\n }\r\n\r\n private getDefaultOptions(): ScrollSliderOptions {\r\n return {\r\n scrollContent: '.nx-filter-navigation__list',\r\n arrowLeft: '.nx-filter-navigation__arrow--left',\r\n arrowRight: '.nx-filter-navigation__arrow--right'\r\n };\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 ScrollSlider.setup(moduleSelector);\r\n\r\n module.hot.accept(() => {\r\n ScrollSlider.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 ScrollSlider.setup(moduleSelector);\r\n}"],"names":["moduleSelector","ScrollSlider","setup","selector","Array","from","document","querySelectorAll","filter","node","dataset","moduleInitialized","forEach","element","constructor","options","this","Object","assign","getDefaultOptions","isRtl","undefined","dir","getElementsByTagName","getAttribute","leftBtn","querySelector","arrowLeft","rightBtn","arrowRight","scrollBarContainer","scrollContent","init","addEventListener","showArrows","window","checkArrows","arrowHandlers","arrowHandlersMouseEvent","arrow","valueToScroll","scrollElement","passive","setIntervalToScroll","clearInterval","intervalToScroll","setInterval","scrollBy","top","left","behavior","classList","remove","scrollBarWidth","offsetWidth","elementWidth","add","scrollLeft","Math","abs"],"sourceRoot":""}