{"version":3,"file":"overflow.79118c466fb3e3e947ce.min.js","mappings":"+IAAe,MAAMA,EACjBC,WAAAA,CAAYC,GACRC,KAAKD,UAAYA,EAEjBC,KAAKC,MACT,CAEAC,aAAAA,GACI,OAAOF,KAAKD,UAAUI,YAAcH,KAAKD,UAAUK,WACvD,CAEAC,qBAAAA,CAAsBC,GACbA,IAELA,EAAKC,gBAAgB,GAAGC,MAAMC,QAAUH,EAAKP,UAAUW,WAAa,EAAI,EAAI,EAC5EJ,EAAKC,gBAAgB,GAAGC,MAAMC,QAAUH,EAAKP,UAAUW,YAAcJ,EAAKP,UAAUI,YAAcG,EAAKP,UAAUK,YAAc,EAAI,EACvI,CAEAO,YAAAA,GACI,MAAML,EAAON,KACb,IAAIY,EAEJZ,KAAKD,UAAUc,iBAAiB,UAAU,KACtCC,OAAOC,aAAaH,GAEpBA,EAAcI,YAAW,WACrBV,EAAKD,sBAAsBC,EAC/B,GAAG,GAAG,IAGVN,KAAKD,UAAUc,iBAAiB,SAASI,IAChCjB,KAAKE,kBAENe,EAAMC,OAAOC,QAAQ,8BAC6E,SAA9FF,EAAMC,OAAOC,QAAQ,6BAA6BC,aAAa,2BAC/DpB,KAAKD,UAAUW,YAA2C,IAA7BV,KAAKD,UAAUK,YAE5CJ,KAAKD,UAAUW,YAA2C,IAA7BV,KAAKD,UAAUK,YAGhDJ,KAAKK,yBACEY,EAAMC,OAAOG,QAAQ,6BAC5BrB,KAAKD,UAAUW,WAAaO,EAAMC,OAAOI,WAAa,KAC1D,GAER,CAEAC,UAAAA,GACIvB,KAAKO,gBAAkB,GAEvB,IAAK,IAAIiB,EAAQ,EAAGA,EAAQ,EAAGA,GAAS,EAAG,CACvC,MAAMC,EAASC,SAASC,cAAc,UAEtCF,EAAOG,aAAa,QAAS,6CAC7BH,EAAOG,aAAa,OAAQ,UAC5BH,EAAOG,aAAa,0BAAsC,IAAVJ,EAAc,OAAS,SACvEC,EAAOI,UAAY,wOACL,IAAVL,IAAaC,EAAOjB,MAAMC,QAAU,GAExCT,KAAKO,gBAAgBuB,KAAKL,EAC9B,CAEAzB,KAAKD,UAAUgC,QAAQ/B,KAAKO,gBAAgB,IAC5CP,KAAKD,UAAUiC,OAAOhC,KAAKO,gBAAgB,GAC/C,CAEAN,IAAAA,GAQI,IAAIgC,EAPJjC,KAAKD,UAAUmC,UAAUC,IAAI,YAEzBnC,KAAKE,kBACLF,KAAKuB,aACLvB,KAAKW,gBAITG,OAAOD,iBAAiB,UAAU,KAC9BE,aAAakB,GACbA,EAAcjB,YAAW,KACjBhB,KAAKE,iBACLF,KAAKW,eAELX,KAAKD,UAAUmC,UAAUC,IAAI,YACzBnC,KAAKO,iBAAiBP,KAAKO,gBAAgB6B,SAAQX,GAAUA,EAAOjB,MAAM6B,QAAU,OAExFrC,KAAKD,UAAUmC,UAAUI,OAAO,YAC5BtC,KAAKO,iBAAiBP,KAAKO,gBAAgB6B,SAAQX,GAAUA,EAAOjB,MAAM6B,QAAU,SAC5F,GACD,IAAI,GAEf,E","sources":["webpack://intracto-deheus/./Frontend/js/components/overflow/index.js"],"sourcesContent":["export default class Overflow {\r\n constructor(component) {\r\n this.component = component;\r\n\r\n this.init();\r\n }\r\n\r\n checkOverflow() {\r\n return this.component.scrollWidth > this.component.clientWidth;\r\n }\r\n\r\n checkButtonVisibility(root) {\r\n if (!root) return;\r\n\r\n root.overflowButtons[0].style.opacity = root.component.scrollLeft < 1 ? 0 : 1;\r\n root.overflowButtons[1].style.opacity = root.component.scrollLeft >= root.component.scrollWidth - root.component.clientWidth ? 0 : 1;\r\n }\r\n\r\n bindHandlers() {\r\n const root = this;\r\n let isScrolling;\r\n\r\n this.component.addEventListener('scroll', () => {\r\n window.clearTimeout(isScrolling);\r\n\r\n isScrolling = setTimeout(function() {\r\n root.checkButtonVisibility(root);\r\n }, 66);\r\n });\r\n\r\n this.component.addEventListener('click', event => {\r\n if (!this.checkOverflow()) return;\r\n\r\n if (event.target.closest('[data-overflow-direction]')) {\r\n if (event.target.closest('[data-overflow-direction]').getAttribute('data-overflow-direction') === 'left') {\r\n this.component.scrollLeft -= this.component.clientWidth * 0.75;\r\n } else {\r\n this.component.scrollLeft += this.component.clientWidth * 0.75;\r\n }\r\n\r\n this.checkButtonVisibility();\r\n } else if (event.target.matches('[data-overflow-trigger]')) {\r\n this.component.scrollLeft = event.target.offsetLeft - 100;\r\n }\r\n });\r\n }\r\n\r\n addButtons() {\r\n this.overflowButtons = [];\r\n\r\n for (let index = 0; index < 2; index += 1) {\r\n const button = document.createElement('button');\r\n\r\n button.setAttribute('class', 'overflow__button button border-radius-100');\r\n button.setAttribute('type', 'button');\r\n button.setAttribute('data-overflow-direction', (index === 0 ? 'left' : 'right'));\r\n button.innerHTML = '';\r\n if (index === 0) button.style.opacity = 0;\r\n\r\n this.overflowButtons.push(button);\r\n }\r\n\r\n this.component.prepend(this.overflowButtons[0]);\r\n this.component.append(this.overflowButtons[1]);\r\n }\r\n\r\n init() {\r\n this.component.classList.add('overflow');\r\n \r\n if (this.checkOverflow()) {\r\n this.addButtons();\r\n this.bindHandlers();\r\n }\r\n\r\n let resizeTimer;\r\n window.addEventListener('resize', () => {\r\n clearTimeout(resizeTimer);\r\n resizeTimer = setTimeout(() => {\r\n if (this.checkOverflow()) {\r\n this.bindHandlers();\r\n\r\n this.component.classList.add('overflow');\r\n if (this.overflowButtons) this.overflowButtons.forEach(button => button.style.display = '');\r\n } else {\r\n this.component.classList.remove('overflow');\r\n if (this.overflowButtons) this.overflowButtons.forEach(button => button.style.display = 'none');\r\n }\r\n }, 250);\r\n });\r\n }\r\n}"],"names":["Overflow","constructor","component","this","init","checkOverflow","scrollWidth","clientWidth","checkButtonVisibility","root","overflowButtons","style","opacity","scrollLeft","bindHandlers","isScrolling","addEventListener","window","clearTimeout","setTimeout","event","target","closest","getAttribute","matches","offsetLeft","addButtons","index","button","document","createElement","setAttribute","innerHTML","push","prepend","append","resizeTimer","classList","add","forEach","display","remove"],"sourceRoot":""}