{"version":3,"file":"elements-card-stack.js","mappings":"+GAAA,MAAMA,EAAcA,KACbC,OAAOC,WAAW,sBAAsBC,SAI7CC,SAASC,iBAAiB,sBAAsBC,SAASC,IACvD,MAAMC,EAAYD,EAAGF,iBAAiB,cAChCI,EAAgBF,EAAGG,cAAc,wBACjCC,EAAcJ,EAAGG,cAAc,sBAErCF,EAAUF,SAAQ,CAACM,EAAMC,KACvB,MAAMC,EAAQb,OAAOc,iBAAiBH,GAChCI,EAAYC,SAASH,EAAMI,iBAAiB,QAC5CC,EAAWP,EAAKQ,wBAChBC,EAAYT,EAAKF,cAAc,gBAC/BY,EAAgBD,EAAUD,wBAE1BG,EADcX,EAAKF,cAAc,iBACHU,wBAEhCP,EAAQ,GACVD,EAAKY,UAAUC,OAAO,YAAaN,EAASO,KAAOV,GAGrD,MAAMW,EAAOR,EAASO,IAAMV,EAE5B,GAAIO,EAAgBK,QAAUN,EAAcM,QAAUD,EAAO,EAAG,CAC9D,MAAME,EAAaN,EAAgBK,OAASN,EAAcM,OAGxDP,EAAUP,MAAMgB,WADN,EAARH,EAAYE,EACc,mBAA0B,EAARF,UAElB,kBAAkBE,SAElD,MACER,EAAUP,MAAMgB,UAAY,IAC9B,IAGF,MAAMC,EAAavB,EAAUwB,OAC7B,IAAIC,EAAkB1B,EAAGF,iBAAiB,wBAAwB2B,OAE1C,IAApBC,IACFA,EAAkB,GAGpB,MAAMC,EAAYD,EAAgBE,WAAWC,SAAS,EAAG,KACzDzB,EAAYG,MAAMgB,UAAY,UAAUG,EAAkBF,KAE1DtB,EAAc4B,YAAcH,CAAS,GACrC,EAGJjC,OAAOqC,iBAAiB,SAAUtC,GAElCA,G","sources":["webpack://silverstripe-base/./themes/app/src/elements/card-stack.js"],"sourcesContent":["const handleCards = () => {\n if (!window.matchMedia(\"(min-width: 768px)\").matches) {\n return;\n }\n\n document.querySelectorAll(\".element-cardstack\").forEach((el) => {\n const cardItems = el.querySelectorAll(\".card-item\");\n const progressCount = el.querySelector(\".card-progress-count\");\n const progressBar = el.querySelector(\".card-progress-bar\");\n\n cardItems.forEach((card, index) => {\n const style = window.getComputedStyle(card);\n const stickyTop = parseInt(style.getPropertyValue(\"top\"));\n const cardRect = card.getBoundingClientRect();\n const cardMedia = card.querySelector(\".media-block\");\n const cardMediaRect = cardMedia.getBoundingClientRect();\n const cardContent = card.querySelector(\".card-content\");\n const cardContentRect = cardContent.getBoundingClientRect();\n\n if (index > 0) {\n card.classList.toggle(\"is-active\", cardRect.top <= stickyTop);\n }\n\n const diff = cardRect.top - stickyTop;\n\n if (cardContentRect.height >= cardMediaRect.height && diff < 0) {\n const heightDiff = cardContentRect.height - cardMediaRect.height;\n\n if (diff * -1 < heightDiff) {\n cardMedia.style.transform = `translate3d(0, ${diff * -1}px, 0)`;\n } else {\n cardMedia.style.transform = `translate3d(0, ${heightDiff}px, 0)`;\n }\n } else {\n cardMedia.style.transform = null;\n }\n });\n\n const totalCards = cardItems.length;\n let activeCardCount = el.querySelectorAll(\".card-item.is-active\").length;\n\n if (activeCardCount === 0) {\n activeCardCount = 1;\n }\n\n const cardCount = activeCardCount.toString().padStart(2, \"0\");\n progressBar.style.transform = `scaleX(${activeCardCount / totalCards})`;\n\n progressCount.textContent = cardCount;\n });\n};\n\nwindow.addEventListener(\"scroll\", handleCards);\n\nhandleCards();\n"],"names":["handleCards","window","matchMedia","matches","document","querySelectorAll","forEach","el","cardItems","progressCount","querySelector","progressBar","card","index","style","getComputedStyle","stickyTop","parseInt","getPropertyValue","cardRect","getBoundingClientRect","cardMedia","cardMediaRect","cardContentRect","classList","toggle","top","diff","height","heightDiff","transform","totalCards","length","activeCardCount","cardCount","toString","padStart","textContent","addEventListener"],"sourceRoot":""}