{"version":3,"file":"horizontal-scroll-controller-B3pFBBAL.js","sources":["../../../app/frontend/src/jobseeker/main/js/controllers/horizontal-scroll-controller.js"],"sourcesContent":["import { Controller } from '@hotwired/stimulus';\n\nexport default class extends Controller {\n static targets = ['arrowLeft', 'arrowRight', 'container', 'wrapper'];\n\n initialize() {\n this.navBarTravelling = false;\n this.navBarTravelDirection = '';\n this.navBarTravelDistance = 80;\n\n this.containerTarget.setAttribute(\n 'data-overflowing',\n this.determineOverflow(this.wrapperTarget, this.containerTarget)\n );\n\n this.lastScrollPosition = 0;\n this.ticking = false;\n }\n\n scroll() {\n this.lastScrollPosition = window.scrollY;\n if (!this.ticking) {\n window.requestAnimationFrame(() => {\n this.setOverflowState();\n this.ticking = false;\n });\n }\n this.ticking = true;\n }\n\n determineOverflow(content, container) {\n const containerMetrics = container.getBoundingClientRect();\n const containerMetricsRight = Math.floor(containerMetrics.right);\n const containerMetricsLeft = Math.floor(containerMetrics.left);\n const contentMetrics = content.getBoundingClientRect();\n const contentMetricsRight = Math.floor(contentMetrics.right);\n const contentMetricsLeft = Math.floor(contentMetrics.left);\n\n if (\n containerMetricsLeft > contentMetricsLeft &&\n containerMetricsRight < contentMetricsRight\n ) {\n return 'both';\n } else if (contentMetricsLeft < containerMetricsLeft) {\n return 'left';\n } else if (contentMetricsRight > containerMetricsRight) {\n return 'right';\n } else {\n return 'none';\n }\n }\n\n setOverflowState() {\n this.containerTarget.setAttribute(\n 'data-overflowing',\n this.determineOverflow(this.wrapperTarget, this.containerTarget)\n );\n }\n\n left() {\n if (this.navBarTravelling === true) {\n return;\n }\n\n if (\n this.determineOverflow(this.wrapperTarget, this.containerTarget) ===\n 'left' ||\n this.determineOverflow(this.wrapperTarget, this.containerTarget) ===\n 'both'\n ) {\n const availableScrollLeft = this.containerTarget.scrollLeft;\n\n if (availableScrollLeft < this.navBarTravelDistance * 2) {\n this.wrapperTarget.style.transform =\n 'translateX(' + availableScrollLeft + 'px)';\n } else {\n this.wrapperTarget.style.transform =\n 'translateX(' + this.navBarTravelDistance + 'px)';\n }\n\n this.wrapperTarget.classList.remove('-no-transition');\n\n this.navBarTravelDirection = 'left';\n this.navBarTravelling = true;\n }\n\n this.setOverflowState();\n }\n\n right() {\n if (this.navBarTravelling === true) {\n return;\n }\n\n if (\n this.determineOverflow(this.wrapperTarget, this.containerTarget) ===\n 'right' ||\n this.determineOverflow(this.wrapperTarget, this.containerTarget) ===\n 'both'\n ) {\n const navBarRightEdge = this.wrapperTarget.getBoundingClientRect().right;\n const navBarScrollerRightEdge =\n this.containerTarget.getBoundingClientRect().right;\n\n const availableScrollRight = Math.floor(\n navBarRightEdge - navBarScrollerRightEdge\n );\n\n if (availableScrollRight < this.navBarTravelDistance * 2) {\n this.wrapperTarget.style.transform =\n 'translateX(-' + availableScrollRight + 'px)';\n } else {\n this.wrapperTarget.style.transform =\n 'translateX(-' + this.navBarTravelDistance + 'px)';\n }\n\n this.wrapperTarget.classList.remove('-no-transition');\n\n this.navBarTravelDirection = 'right';\n this.navBarTravelling = true;\n }\n\n this.setOverflowState();\n }\n\n transitionEnd() {\n const styleOfTransform = window.getComputedStyle(this.wrapperTarget, null);\n const tr = styleOfTransform.getPropertyValue('transform');\n const amount = Math.abs(parseInt(tr.split(',')[4]) || 0);\n\n this.wrapperTarget.style.transform = 'none';\n this.wrapperTarget.classList.add('-no-transition');\n\n if (this.navBarTravelDirection === 'left') {\n this.containerTarget.scrollLeft =\n this.containerTarget.scrollLeft - amount;\n } else {\n this.containerTarget.scrollLeft =\n this.containerTarget.scrollLeft + amount;\n }\n this.navBarTravelling = false;\n }\n}\n"],"names":["horizontalScrollController","Controller","content","container","containerMetrics","containerMetricsRight","containerMetricsLeft","contentMetrics","contentMetricsRight","contentMetricsLeft","availableScrollLeft","navBarRightEdge","navBarScrollerRightEdge","availableScrollRight","tr","amount","__publicField"],"mappings":"2NAEe,MAAKA,UAASC,CAAW,CAGtC,YAAa,CACX,KAAK,iBAAmB,GACxB,KAAK,sBAAwB,GAC7B,KAAK,qBAAuB,GAE5B,KAAK,gBAAgB,aACnB,mBACA,KAAK,kBAAkB,KAAK,cAAe,KAAK,eAAe,CAChE,EAED,KAAK,mBAAqB,EAC1B,KAAK,QAAU,EACnB,CAEE,QAAS,CACP,KAAK,mBAAqB,OAAO,QAC5B,KAAK,SACR,OAAO,sBAAsB,IAAM,CACjC,KAAK,iBAAkB,EACvB,KAAK,QAAU,EACvB,CAAO,EAEH,KAAK,QAAU,EACnB,CAEE,kBAAkBC,EAASC,EAAW,CACpC,MAAMC,EAAmBD,EAAU,sBAAuB,EACpDE,EAAwB,KAAK,MAAMD,EAAiB,KAAK,EACzDE,EAAuB,KAAK,MAAMF,EAAiB,IAAI,EACvDG,EAAiBL,EAAQ,sBAAuB,EAChDM,EAAsB,KAAK,MAAMD,EAAe,KAAK,EACrDE,EAAqB,KAAK,MAAMF,EAAe,IAAI,EAEzD,OACED,EAAuBG,GACvBJ,EAAwBG,EAEjB,OACEC,EAAqBH,EACvB,OACEE,EAAsBH,EACxB,QAEA,MAEb,CAEE,kBAAmB,CACjB,KAAK,gBAAgB,aACnB,mBACA,KAAK,kBAAkB,KAAK,cAAe,KAAK,eAAe,CAChE,CACL,CAEE,MAAO,CACL,GAAI,KAAK,mBAAqB,GAI9B,IACE,KAAK,kBAAkB,KAAK,cAAe,KAAK,eAAe,IAC7D,QACF,KAAK,kBAAkB,KAAK,cAAe,KAAK,eAAe,IAC7D,OACF,CACA,MAAMK,EAAsB,KAAK,gBAAgB,WAE7CA,EAAsB,KAAK,qBAAuB,EACpD,KAAK,cAAc,MAAM,UACvB,cAAgBA,EAAsB,MAExC,KAAK,cAAc,MAAM,UACvB,cAAgB,KAAK,qBAAuB,MAGhD,KAAK,cAAc,UAAU,OAAO,gBAAgB,EAEpD,KAAK,sBAAwB,OAC7B,KAAK,iBAAmB,EAC9B,CAEI,KAAK,iBAAkB,EAC3B,CAEE,OAAQ,CACN,GAAI,KAAK,mBAAqB,GAI9B,IACE,KAAK,kBAAkB,KAAK,cAAe,KAAK,eAAe,IAC7D,SACF,KAAK,kBAAkB,KAAK,cAAe,KAAK,eAAe,IAC7D,OACF,CACA,MAAMC,EAAkB,KAAK,cAAc,sBAAuB,EAAC,MAC7DC,EACJ,KAAK,gBAAgB,sBAAqB,EAAG,MAEzCC,EAAuB,KAAK,MAChCF,EAAkBC,CACnB,EAEGC,EAAuB,KAAK,qBAAuB,EACrD,KAAK,cAAc,MAAM,UACvB,eAAiBA,EAAuB,MAE1C,KAAK,cAAc,MAAM,UACvB,eAAiB,KAAK,qBAAuB,MAGjD,KAAK,cAAc,UAAU,OAAO,gBAAgB,EAEpD,KAAK,sBAAwB,QAC7B,KAAK,iBAAmB,EAC9B,CAEI,KAAK,iBAAkB,EAC3B,CAEE,eAAgB,CAEd,MAAMC,EADmB,OAAO,iBAAiB,KAAK,cAAe,IAAI,EAC7C,iBAAiB,WAAW,EAClDC,EAAS,KAAK,IAAI,SAASD,EAAG,MAAM,GAAG,EAAE,CAAC,CAAC,GAAK,CAAC,EAEvD,KAAK,cAAc,MAAM,UAAY,OACrC,KAAK,cAAc,UAAU,IAAI,gBAAgB,EAE7C,KAAK,wBAA0B,OACjC,KAAK,gBAAgB,WACnB,KAAK,gBAAgB,WAAaC,EAEpC,KAAK,gBAAgB,WACnB,KAAK,gBAAgB,WAAaA,EAEtC,KAAK,iBAAmB,EAC5B,CACA,CA3IEC,EADkBhB,EACX,UAAU,CAAC,YAAa,aAAc,YAAa,SAAS"}