{"version":3,"file":"553.js","mappings":"y2BAAO,IAAMA,EAAW,WACtB,SAAAA,EAAYC,GAAQ,IAAAC,EAAA,M,4FAAAC,CAAA,KAAAH,GAClBI,KAAKC,KAAOJ,EAEZG,KAAKE,cACLF,KAAKG,oBAEL,IAAMC,EAAaC,MAAMC,KAAKN,KAAKC,KAAKM,iBAAiB,0BAA0BC,KACjF,SAACC,EAAKC,GAAK,OAAKZ,EAAKa,aAAaF,EAAKC,EAAM,IAG/CV,KAAKY,QAAQR,EACf,C,QAwDC,O,EAxDAR,G,EAAA,EAAAiB,IAAA,cAAAC,MAED,WAAc,IAAAC,EAAA,KACNC,EAAW,WACf,IAAMC,EAAYC,OAAOC,QAEnBC,EADeC,SAASC,KAAKC,aACML,OAAOM,YAChDT,EAAKU,iBAAmBR,EAAYG,CACtC,EAEAJ,IACAK,SAASK,iBAAiB,SAAUV,EACtC,GAAC,CAAAH,IAAA,oBAAAC,MAED,WAAoB,IAAAa,EAAA,KACZC,EAAuB,SAAAC,GAC3BF,EAAKG,aAAeD,EAAME,OAC5B,EAEAH,EAAqBV,OAAOc,WAAW,qCACvCd,OACGc,WAAW,oCACXN,iBAAiB,SAAUE,EAChC,GAAC,CAAAf,IAAA,eAAAC,MAED,SAAamB,EAAOvB,GAClB,IAAMwB,EAAWD,EAAME,YAEjBC,EAAUH,EAAMI,cAAc,+BAMpC,MAAO,CACLD,QAAAA,EACAE,UAPiBF,EAAQD,YAEQD,GAChB,EAAE,EAAG,KAAO,IAAKxB,EAAQ,GAM9C,GAAC,CAAAG,IAAA,UAAAC,MAED,SAAQyB,GAAS,IAAAC,EAAA,MACA,SAATC,IACJ,IAAIhB,EAAmBe,EAAKf,iBACxBe,EAAKV,eACPL,EAAmB,KAGrBc,EAAQG,SAAQ,SAAAC,GACd,IAAMC,EAAaD,EAAOL,SAAWb,EACrCkB,EAAOP,QAAQS,MAAMC,UAAY,cAAHC,OAAiBH,EAAU,MAC3D,IAEAI,sBAAsBP,EACxB,CAEAA,EACF,M,oEAAC7C,CAAA,CApEqB,E","sources":["webpack://cornell-engineering-college/./static/js/components/home-inspire.js"],"sourcesContent":["export class HomeInspire {\n constructor(rootEl) {\n this.root = rootEl;\n\n this.trackScroll();\n this.trackReduceMotion();\n\n const rowConfigs = Array.from(this.root.querySelectorAll('.home__inspire-images')).map(\n (row, index) => this.getRowConfig(row, index),\n );\n\n this.animate(rowConfigs);\n }\n\n trackScroll() {\n const onScroll = () => {\n const scrollTop = window.scrollY;\n const scrollHeight = document.body.scrollHeight;\n const maxScrollDistance = scrollHeight - window.innerHeight;\n this.scrollPercentage = scrollTop / maxScrollDistance;\n };\n\n onScroll();\n document.addEventListener('scroll', onScroll);\n }\n\n trackReduceMotion() {\n const onReduceMotionChange = event => {\n this.reduceMotion = event.matches;\n };\n\n onReduceMotionChange(window.matchMedia('(prefers-reduced-motion: reduce)'));\n window\n .matchMedia('(prefers-reduced-motion: reduce)')\n .addEventListener('change', onReduceMotionChange);\n }\n\n getRowConfig(rowEl, index) {\n const rowWidth = rowEl.offsetWidth;\n\n const trackEl = rowEl.querySelector('.home__inspire-images-inner');\n const trackWidth = trackEl.offsetWidth;\n\n const maxTranslateX = trackWidth - rowWidth;\n const multiplier = [-1, 0.75, -0.5][index % 3];\n\n return {\n trackEl,\n maxDelta: maxTranslateX * multiplier,\n };\n }\n\n animate(configs) {\n const update = () => {\n let scrollPercentage = this.scrollPercentage;\n if (this.reduceMotion) {\n scrollPercentage = 0.33;\n }\n\n configs.forEach(config => {\n const translateX = config.maxDelta * scrollPercentage;\n config.trackEl.style.transform = `translateX(${translateX}px)`;\n });\n\n requestAnimationFrame(update);\n };\n\n update();\n }\n}\n"],"names":["HomeInspire","rootEl","_this","_classCallCheck","this","root","trackScroll","trackReduceMotion","rowConfigs","Array","from","querySelectorAll","map","row","index","getRowConfig","animate","key","value","_this2","onScroll","scrollTop","window","scrollY","maxScrollDistance","document","body","scrollHeight","innerHeight","scrollPercentage","addEventListener","_this3","onReduceMotionChange","event","reduceMotion","matches","matchMedia","rowEl","rowWidth","offsetWidth","trackEl","querySelector","maxDelta","configs","_this4","update","forEach","config","translateX","style","transform","concat","requestAnimationFrame"],"sourceRoot":""}