{"version":3,"file":"elements-scrollable-callout-list-js-D-McAAN8.js","sources":["../src/entries/elements/scrollable-callout-list.js"],"sourcesContent":["import { scroll } from \"motion\";\nimport debounce from \"lodash/debounce\";\nimport \"./scrollable-callout-list.css\";\n\nlet trackers = [];\n\nconst setupHeights = (el) => {\n const contentColumn = el.querySelector(\".content-column\");\n const listColumn = el.querySelector(\".list-column\");\n const lastElement = listColumn.querySelector(\"li:last-child\");\n\n const isTwoColumn = window.matchMedia(\"(min-width: 768px)\").matches;\n const contentHeight = contentColumn.offsetHeight;\n const listHeight = listColumn.offsetHeight;\n\n if (isTwoColumn && listHeight > contentHeight) {\n const offset = contentColumn.offsetHeight - lastElement.offsetHeight;\n listColumn.style.paddingBottom = `${offset}px`;\n } else {\n listColumn.style.paddingBottom = null;\n }\n};\n\nconst setupScrollTracking = (el) => {\n const listItems = el.querySelectorAll(\".list-column li\");\n let currentActive = null;\n const firstItem = listItems[0];\n const lastItem = listItems[listItems.length - 1];\n let lastScrollY = window.scrollY;\n let lastActiveItem = firstItem;\n let latestRequest = null;\n const images = el.querySelectorAll(\".callout-image\");\n\n firstItem.classList.add(\"is-active\");\n currentActive = firstItem;\n\n const setActiveItem = (item) => {\n latestRequest = item;\n\n requestAnimationFrame(() => {\n if (latestRequest === item) {\n if (currentActive !== item) {\n currentActive?.classList.remove(\"is-active\");\n item.classList.add(\"is-active\");\n\n if (lastActiveItem !== item) {\n if (images.length) {\n images.forEach((image) => image.classList.remove(\"opacity-100\"));\n\n el.querySelector(`.callout-image[data-pos=\"${item.dataset.pos}\"]`).classList.add(\"opacity-100\");\n }\n lastActiveItem = item;\n }\n\n currentActive = item;\n }\n }\n });\n };\n\n listItems.forEach((item) => {\n const tracker = scroll(\n ({ y }) => {\n const scrollingDown = window.scrollY > lastScrollY;\n lastScrollY = window.scrollY;\n\n if (y.progress > 0.1 && y.progress < 0.9) {\n setActiveItem(item);\n } else if (item === firstItem && y.progress <= 0.1) {\n setActiveItem(item);\n } else if (item === lastItem && y.progress >= 0.9 && scrollingDown) {\n setActiveItem(item);\n }\n },\n {\n target: item,\n offset: [\"start 45%\", \"end -45%\"],\n },\n );\n trackers.push(tracker);\n });\n};\n\ndocument.querySelectorAll(\".element-scrollablecalloutlist\").forEach((el) => {\n setupHeights(el);\n setupScrollTracking(el);\n});\n\nwindow.addEventListener(\n \"resize\",\n debounce(() => {\n trackers.forEach((tracker) => tracker());\n trackers = [];\n document.querySelectorAll(\".element-scrollablecalloutlist\").forEach((el) => {\n setupHeights(el);\n setupScrollTracking(el);\n });\n }, 250),\n);\n"],"names":["trackers","setupHeights","el","contentColumn","listColumn","lastElement","isTwoColumn","contentHeight","listHeight","offset","setupScrollTracking","listItems","currentActive","firstItem","lastItem","lastScrollY","lastActiveItem","latestRequest","images","setActiveItem","item","image","tracker","scroll","y","scrollingDown","debounce"],"mappings":"gKAIA,IAAIA,EAAW,CAAA,EAEf,MAAMC,EAAgBC,GAAO,CAC3B,MAAMC,EAAgBD,EAAG,cAAc,iBAAiB,EAClDE,EAAaF,EAAG,cAAc,cAAc,EAC5CG,EAAcD,EAAW,cAAc,eAAe,EAEtDE,EAAc,OAAO,WAAW,oBAAoB,EAAE,QACtDC,EAAgBJ,EAAc,aAC9BK,EAAaJ,EAAW,aAE9B,GAAIE,GAAeE,EAAaD,EAAe,CAC7C,MAAME,EAASN,EAAc,aAAeE,EAAY,aACxDD,EAAW,MAAM,cAAgB,GAAGK,CAAM,IAC9C,MACIL,EAAW,MAAM,cAAgB,IAErC,EAEMM,EAAuBR,GAAO,CAClC,MAAMS,EAAYT,EAAG,iBAAiB,iBAAiB,EACvD,IAAIU,EAAgB,KACpB,MAAMC,EAAYF,EAAU,CAAC,EACvBG,EAAWH,EAAUA,EAAU,OAAS,CAAC,EAC/C,IAAII,EAAc,OAAO,QACrBC,EAAiBH,EACjBI,EAAgB,KACpB,MAAMC,EAAShB,EAAG,iBAAiB,gBAAgB,EAEnDW,EAAU,UAAU,IAAI,WAAW,EACnCD,EAAgBC,EAEhB,MAAMM,EAAiBC,GAAS,CAC9BH,EAAgBG,EAEhB,sBAAsB,IAAM,CACtBH,IAAkBG,GAChBR,IAAkBQ,IACpBR,GAAA,MAAAA,EAAe,UAAU,OAAO,aAChCQ,EAAK,UAAU,IAAI,WAAW,EAE1BJ,IAAmBI,IACjBF,EAAO,SACTA,EAAO,QAASG,GAAUA,EAAM,UAAU,OAAO,aAAa,CAAC,EAE/DnB,EAAG,cAAc,4BAA4BkB,EAAK,QAAQ,GAAG,IAAI,EAAE,UAAU,IAAI,aAAa,GAEhGJ,EAAiBI,GAGnBR,EAAgBQ,EAG1B,CAAK,CACL,EAEET,EAAU,QAASS,GAAS,CAC1B,MAAME,EAAUC,EACd,CAAC,CAAE,EAAAC,CAAC,IAAO,CACT,MAAMC,EAAgB,OAAO,QAAUV,EACvCA,EAAc,OAAO,SAEjBS,EAAE,SAAW,IAAOA,EAAE,SAAW,IAE1BJ,IAASP,GAAaW,EAAE,UAAY,IAEpCJ,IAASN,GAAYU,EAAE,UAAY,IAAOC,IACnDN,EAAcC,CAAI,CAErB,EACD,CACE,OAAQA,EACR,OAAQ,CAAC,YAAa,UAAU,CACjC,CACP,EACIpB,EAAS,KAAKsB,CAAO,CACzB,CAAG,CACH,EAEA,SAAS,iBAAiB,gCAAgC,EAAE,QAASpB,GAAO,CAC1ED,EAAaC,CAAE,EACfQ,EAAoBR,CAAE,CACxB,CAAC,EAED,OAAO,iBACL,SACAwB,EAAS,IAAM,CACb1B,EAAS,QAASsB,GAAYA,EAAS,CAAA,EACvCtB,EAAW,CAAA,EACX,SAAS,iBAAiB,gCAAgC,EAAE,QAASE,GAAO,CAC1ED,EAAaC,CAAE,EACfQ,EAAoBR,CAAE,CAC5B,CAAK,CACF,EAAE,GAAG,CACR"}