{"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":""}