{"version":3,"file":"HeroCarousel.js","names":["define","HeroCarousel","args","animSpd","heroCarousel","scope","querySelector","slider","nav","animation","curSlide","autoScrollVar","slides","slidesArray","allSlides","querySelectorAll","slide","slideIsVisible","push","getSlides","slideCount","length","hiddenClasses","Array","from","map","el","className","hiddenClass","classList","contains","bullets","dir","activeBullet","remove","targetBullet","add","timeout","actionVideo","action","video","isPlaying","currentTime","paused","ended","readyState","HAVE_CURRENT_DATA","pause","play","pagination","fromElement","toElement","RemoveAnimation","fromPaths","toPaths","maxCount","Math","min","i","toIdPath","getAttribute","dSource","dTarget","animate","innerHTML","SetupAnimation","svgElement","StartAnimation","videoElement","playButton","pauseButton","style","display","playVideo","setTimeout","navigateNext","navigatePrevious","firstSlide","lastSlide","navigateAfter","scrollDown","window","scrollBy","offsetHeight","forEach","li","document","createElement","dataset","target","appendChild","lastLi","append","addBullets","addEventListener","e","parseInt","includes","which","preventDefault","delta","wheelDelta","deltaY","detail","isExperienceEditor","matchMedia","matches","animationSpeed"],"sources":["site/Components/HeroCarousel.js"],"mappings":"AAAAA,OAAO,IAAI,WACT,SAASC,EAAaC,EAAMC,GAC1B,MAAMC,EAAeF,EAAKG,MAAMC,cAAc,kBACxCC,EAASL,EAAKG,MAAMC,cAAc,kCAClCE,EAAMN,EAAKG,MAAMC,cAAc,2BACrC,IAAIG,GAAY,EACZC,EAAW,EACXC,GAAgB,EACpB,MAAMC,EAuBN,WACE,MAAMC,EAAc,GACdC,EAAYP,EAAOQ,iBAAiB,wBAE1C,IAAK,MAAMC,KAASF,EACdG,EAAeD,IACjBH,EAAYK,KAAKF,GAIrB,OAAOH,CACT,CAlCeM,GACTC,EAAaR,EAAOS,OAW1B,SAASJ,EAAeD,GACtB,MAAMM,EATCC,MAAMC,KACXtB,EAAKG,MAAMU,iBACT,4DAEFU,KAAKC,GAAOA,EAAGC,YAMjB,IAAK,MAAMC,KAAeN,EACxB,GAAIN,EAAMV,cAAc,QAAQuB,UAAUC,SAASF,GACjD,OAAO,EAGX,OAAO,CACT,CAoCA,SAASG,EAAQC,GACf,MAAMC,EAAezB,EAAIF,cAAc,gBAAgBI,KACnDuB,GAAcA,EAAaJ,UAAUK,OAAO,cAEhD,MAAMC,EAAe3B,EAAIF,cAAc,gBAAgB0B,KACnDG,GAAcA,EAAaN,UAAUO,IAAI,aAC/C,CAGA,SAASC,IACP5B,GAAY,CACd,CAWA,SAAS6B,EAAYtB,EAAOuB,GAC1B,MAAMC,EAAQxB,EAAMV,cAAc,SAElC,GAAIkC,EAAO,CACT,MAAMC,EACJD,EAAME,YAAc,IACnBF,EAAMG,SACNH,EAAMI,OACPJ,EAAMK,WAAaL,EAAMM,kBAEZ,SAAXP,GAAsBE,EAEJ,UAAXF,GAAsBE,GAC/BD,EAAMO,QAFNP,EAAMQ,MAIV,CACF,CA2BA,SAASC,EAAWjB,GAClBvB,GAAY,EACZF,EAAOsB,UAAUO,IAAI,aAErB,MAAMc,EAActC,EAAOF,EAAW,GAChCyC,EAAYvC,EAAOoB,EAAM,GAE1BtB,EAAWU,GAgDlB,SAAwB8B,EAAaC,GACnCC,EAAgBD,GAEhB,MAAME,EAAYH,EAAYnC,iBAAiB,kBACzCuC,EAAUH,EAAUpC,iBAAiB,kBAErCwC,EAAWC,KAAKC,IAAIJ,EAAUhC,OAAQiC,EAAQjC,QAEpD,IAAK,IAAIqC,EAAI,EAAGA,EAAIH,EAAUG,IAAK,CACjC,MAAMC,EAAWL,EAAQI,GAAGE,aAAa,MACnCC,EAAUR,EAAUK,GAAGE,aAAa,KACpCE,EAAUR,EAAQI,GAAGE,aAAa,KAElCG,EAAU,yBAAyBJ,iDAAwDxD,wCAA8C0D,KAAWC,QAE1JX,EAAU7C,cAAc,OAAO0D,WAAaD,CAC9C,CACF,CAhEKE,CAAef,EAAaC,GAkEjC,SAAwBA,GACtB,MAAMe,EAAaf,EAAU7C,cAAc,aAC3C4D,EAAWF,UAAYE,EAAWF,SACpC,CApEKG,CAAehB,IAEfC,EAAgBD,GAGnBD,EAAYrB,UAAUO,IAAI,QAlB1BE,EAmBWY,EAnBQ,SAoBnBC,EAAUtB,UAAUK,OAAO,QAzC7B,SAAmBlB,GACjBsB,EAAYtB,EAAO,QACnB,MAAMoD,EAAepD,EAAMV,cAAc,SACnC+D,EAAarD,EAAMV,cAAc,8BACjCgE,EAActD,EAAMV,cAAc,+BAItC8D,GACAA,EAAa1B,YAAc,IAC1B0B,EAAazB,SACbyB,EAAaxB,OACdwB,EAAavB,WAAa,IAE1BwB,EAAWE,MAAMC,QAAU,OAC3BF,EAAYC,MAAMC,QAAU,QAEhC,CAyBEC,CAAUtB,GApENhD,EAAU,EACZuE,WAAWrC,EAAmB,IAAVlC,GAEpBkC,GAmEJ,CAEA,SAASsC,KACFhE,GAAiBD,GAAYU,IAClC6B,EAAWvC,EAAW,GACtBqB,EAAQrB,EAAW,GACnBA,IACF,CAEA,SAASkE,IACHlE,GAAY,IAChBuC,EAAWvC,EAAW,GACtBqB,EAAQrB,EAAW,GACnBA,IACF,CAEA,SAASmE,IACP,OAAmB,GAAZnE,CACT,CAEA,SAASoE,IACP,OAAOpE,GAAYU,CACrB,CAEA,SAAS2D,EAAcC,GACrBvE,GAAY,EACRuE,GACFC,OAAOC,SAAS,EAAG3E,EAAO4E,aAE9B,CAEA,SAAS/B,EAAgBD,GACJA,EAAUpC,iBAAiB,yBACnCqE,SAAS3E,GAAcA,EAAUyB,UAC9C,EAzIA,WACE,IAAK,IAAIwB,EAAI,EAAGA,GAAKtC,EAAYsC,IAAK,CACpC,MAAM2B,EAAKC,SAASC,cAAc,MAClCF,EAAGG,QAAQC,OAAS/B,EACpB2B,EAAG1D,UAAY,0BAA0B+B,IACzClD,EAAIkF,YAAYL,EAClB,CAEA,MAAMM,EAASL,SAASC,cAAc,MACtCI,EAAOH,QAAQC,OAASrE,EAAa,EACrCuE,EAAOhE,UAAY,yCACjBP,EAAa,IAEfZ,EAAIoF,OAAOD,GAEXnF,EAAIF,cAAc,kBAAkBuB,UAAUO,IAAI,aACpD,CAqOAyD,GA/EErF,EAAIsF,iBAAiB,SAAS,SAAUC,GACtC,GACEA,EAAEN,OAAO5D,UAAUC,SAAS,gBAC3BiE,EAAEN,OAAO5D,UAAUC,SAAS,cAC7B,CACA,MAAM2D,EAASO,SAASD,EAAEN,OAAOD,QAAQC,QACxC,GAAIA,EAASrE,EAEX,YADA2D,GAAc,GAGjBhD,EAAQ0D,GACRxC,EAAWwC,GACX/E,EAAW+E,EACXhF,GAAY,CACd,CACF,IAGA6E,SAASQ,iBAAiB,WAAW,SAAUC,GAC7C,GAAI7F,EAAKG,MAAMC,cAAc,wBAAyB,CACpD,GAAIG,EAAW,OAYf,GAVI,CACE,GACA,GACA,IACJwF,SAASF,EAAEG,SACNrB,KACHkB,EAAEI,iBAEJvB,KAEE,CACE,GACA,GACA,GACA,GACA,IACJqB,SAASF,EAAEG,OAAQ,CAClB,GAAIpB,IAEF,YADAC,GAAc,GAGXD,MACFiB,EAAEI,iBACFxB,IAEN,CACF,CACF,IAEDvE,EAAa0F,iBAAiB,SAAS,SAAUC,GAC/C,IAAIK,EAAQL,EAAEM,YAAcN,EAAEO,OAE9B,GAAIF,EAAQ,GAAKL,EAAEQ,OAAS,EAAG,CAC7B,GAAI1B,IACF,OAGF,GADAkB,EAAEI,iBACE1F,EAAW,OACfmE,GACF,CAEA,GAAIwB,EAAQ,GAAKL,EAAEQ,OAAS,EAAG,CAC7B,GAAIzB,IACF,OAAIrE,OACFsF,EAAEI,sBAGJpB,GAAc,GAIhB,GADAgB,EAAEI,iBACE1F,EAAW,OACfkE,GACF,CACF,IAODpE,EACGQ,iBAAiB,wBACjBqE,SAASpE,GAAUA,EAAMa,UAAUO,IAAI,UAC1CxB,EAAO,GAAGiB,UAAUK,OAAO,OAC7B,CAEA,OAAO,SAAchC,IAEhBA,EAAKsG,oBACNvB,OAAOwB,WAAW,sBAAsBC,SAExCzG,EAAaC,EAAMA,EAAKyG,eAE5B,CACF","sourcesContent":["define([], function () {\r\n function HeroCarousel(args, animSpd) {\r\n const heroCarousel = args.scope.querySelector(\".hero-carousel\");\r\n const slider = args.scope.querySelector(\".hero-carousel-slide-container\");\r\n const nav = args.scope.querySelector(\".hero-carousel-nav .nav\");\r\n let animation = false;\r\n let curSlide = 1;\r\n let autoScrollVar = true;\r\n const slides = getSlides();\r\n const slideCount = slides.length;\r\n\r\n function getHiddenClasses() {\r\n return Array.from(\r\n args.scope.querySelectorAll(\r\n \".hero-carousel-visibility > div[style*='display: none']\"\r\n )\r\n ).map((el) => el.className);\r\n }\r\n\r\n\r\n function slideIsVisible(slide) {\r\n const hiddenClasses = getHiddenClasses();\r\n for (const hiddenClass of hiddenClasses) {\r\n if (slide.querySelector(\"div\")?.classList.contains(hiddenClass)) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n }\r\n\r\n \r\n function getSlides() {\r\n const slidesArray = [];\r\n const allSlides = slider.querySelectorAll(\".hero-carousel-slide\");\r\n\r\n for (const slide of allSlides) {\r\n if (slideIsVisible(slide)) {\r\n slidesArray.push(slide);\r\n }\r\n }\r\n\r\n return slidesArray;\r\n }\r\n\r\n \r\n function addBullets() {\r\n for (let i = 1; i <= slideCount; i++) {\r\n const li = document.createElement(\"li\");\r\n li.dataset.target = i;\r\n li.className = `nav__slide nav__slide--${i}`;\r\n nav.appendChild(li);\r\n }\r\n\r\n const lastLi = document.createElement(\"li\");\r\n lastLi.dataset.target = slideCount + 1;\r\n lastLi.className = `last_nav_slide nav__slide nav__slide--${\r\n slideCount + 1\r\n }`;\r\n nav.append(lastLi);\r\n\r\n nav.querySelector(\".nav__slide--1\").classList.add(\"nav-active\");\r\n }\r\n\r\n \r\n function bullets(dir) {\r\n const activeBullet = nav.querySelector(`.nav__slide--${curSlide}`);\r\n if (activeBullet) activeBullet.classList.remove(\"nav-active\");\r\n\r\n const targetBullet = nav.querySelector(`.nav__slide--${dir}`);\r\n if (targetBullet) targetBullet.classList.add(\"nav-active\");\r\n }\r\n\r\n \r\n function timeout() {\r\n animation = false;\r\n }\r\n\r\n function animationTimeout() {\r\n if (animSpd > 0) {\r\n setTimeout(timeout, animSpd * 1000);\r\n } else {\r\n timeout();\r\n }\r\n }\r\n\r\n \r\n function actionVideo(slide, action) {\r\n const video = slide.querySelector(\"video\");\r\n\r\n if (video) {\r\n const isPlaying =\r\n video.currentTime > 0 &&\r\n !video.paused &&\r\n !video.ended &&\r\n video.readyState > video.HAVE_CURRENT_DATA;\r\n\r\n if (action === \"play\" && !isPlaying) {\r\n video.play();\r\n } else if (action === \"pause\" && isPlaying) {\r\n video.pause();\r\n }\r\n }\r\n }\r\n\r\n function playVideo(slide) {\r\n actionVideo(slide, \"play\");\r\n const videoElement = slide.querySelector(\"video\");\r\n const playButton = slide.querySelector(\".hero-video--controls-play\");\r\n const pauseButton = slide.querySelector(\".hero-video--controls-pause\");\r\n\r\n // Check if video is currently playing\r\n if (\r\n videoElement &&\r\n videoElement.currentTime > 0 &&\r\n !videoElement.paused &&\r\n !videoElement.ended &&\r\n videoElement.readyState > 2\r\n ) {\r\n playButton.style.display = \"none\";\r\n pauseButton.style.display = \"block\";\r\n }\r\n }\r\n\r\n \r\n function pauseVideo(slide) {\r\n actionVideo(slide, \"pause\");\r\n }\r\n\r\n \r\n function pagination(dir) {\r\n animation = true;\r\n slider.classList.add(\"animation\");\r\n\r\n const fromElement = slides[curSlide - 1];\r\n const toElement = slides[dir - 1];\r\n\r\n if (curSlide < slideCount) {\r\n SetupAnimation(fromElement, toElement);\r\n StartAnimation(toElement);\r\n } else {\r\n RemoveAnimation(toElement);\r\n }\r\n\r\n fromElement.classList.add(\"hide\");\r\n pauseVideo(fromElement);\r\n toElement.classList.remove(\"hide\");\r\n playVideo(toElement);\r\n animationTimeout();\r\n }\r\n\r\n function navigateNext() {\r\n if (!autoScrollVar || curSlide >= slideCount) return;\r\n pagination(curSlide + 1);\r\n bullets(curSlide + 1);\r\n curSlide++;\r\n }\r\n\r\n function navigatePrevious() {\r\n if (curSlide <= 1) return;\r\n pagination(curSlide - 1);\r\n bullets(curSlide - 1);\r\n curSlide--;\r\n }\r\n\r\n function firstSlide() {\r\n return curSlide == 1;\r\n }\r\n\r\n function lastSlide() {\r\n return curSlide >= slideCount;\r\n }\r\n\r\n function navigateAfter(scrollDown) {\r\n animation = false;\r\n if (scrollDown) {\r\n window.scrollBy(0, slider.offsetHeight);\r\n }\r\n }\r\n \r\n function RemoveAnimation(toElement) {\r\n const animations = toElement.querySelectorAll(\".svgLayer svg animate\");\r\n animations.forEach((animation) => animation.remove());\r\n }\r\n \r\n function SetupAnimation(fromElement, toElement) {\r\n RemoveAnimation(toElement);\r\n\r\n const fromPaths = fromElement.querySelectorAll(\".svgLayer path\");\r\n const toPaths = toElement.querySelectorAll(\".svgLayer path\");\r\n\r\n const maxCount = Math.min(fromPaths.length, toPaths.length);\r\n\r\n for (let i = 0; i < maxCount; i++) {\r\n const toIdPath = toPaths[i].getAttribute(\"id\");\r\n const dSource = fromPaths[i].getAttribute(\"d\");\r\n const dTarget = toPaths[i].getAttribute(\"d\");\r\n\r\n const animate = ``;\r\n\r\n toElement.querySelector(\"svg\").innerHTML += animate;\r\n }\r\n }\r\n\r\n function StartAnimation(toElement) {\r\n const svgElement = toElement.querySelector(\".svgLayer\");\r\n svgElement.innerHTML = svgElement.innerHTML;\r\n }\r\n\r\n\r\n // Events\r\n function addEventListeners() {\r\n nav.addEventListener(\"click\", function (e) {\r\n if (\r\n e.target.classList.contains(\"nav__slide\") &&\r\n !e.target.classList.contains(\"nav-active\")\r\n ) {\r\n const target = parseInt(e.target.dataset.target);\r\n if (target > slideCount) {\r\n navigateAfter(true);\r\n return;\r\n }\r\n bullets(target);\r\n pagination(target);\r\n curSlide = target;\r\n animation = false;\r\n }\r\n });\r\n\r\n \r\n document.addEventListener(\"keydown\", function (e) {\r\n if (args.scope.querySelector(\".hero-carousel:hover\")) {\r\n if (animation) return;\r\n \r\n if ([\r\n 33, // Page Up \r\n 38, // Arrow Up\r\n 37 // Arrow Left\r\n ].includes(e.which)) {\r\n if (!firstSlide()) {\r\n e.preventDefault();\r\n }\r\n navigatePrevious();\r\n }\r\n if ([\r\n 13, // Enter Key\r\n 34, // Page Down\r\n 40, // Arrow Down\r\n 39, // Arrow Rigt\r\n 32 // Spacebar\r\n ].includes(e.which)) {\r\n if (lastSlide()) {\r\n navigateAfter(false);\r\n return;\r\n }\r\n if (!lastSlide()) {\r\n e.preventDefault();\r\n navigateNext();\r\n }\r\n }\r\n }\r\n });\r\n \r\n heroCarousel.addEventListener(\"wheel\", function (e) {\r\n let delta = e.wheelDelta || e.deltaY;\r\n \r\n if (delta > 0 || e.detail < 0) {\r\n if (firstSlide()) {\r\n return;\r\n }\r\n e.preventDefault();\r\n if (animation) return;\r\n navigatePrevious();\r\n }\r\n\r\n if (delta < 0 || e.detail > 0) {\r\n if (lastSlide()) {\r\n if (animation) {\r\n e.preventDefault();\r\n return;\r\n }\r\n navigateAfter(false);\r\n return;\r\n }\r\n e.preventDefault();\r\n if (animation) return;\r\n navigateNext();\r\n }\r\n });\r\n }\r\n \r\n addBullets();\r\n addEventListeners();\r\n\r\n \r\n slider\r\n .querySelectorAll(\".hero-carousel-slide\")\r\n .forEach((slide) => slide.classList.add(\"hide\"));\r\n slides[0].classList.remove(\"hide\");\r\n }\r\n\r\n return function init(args) {\r\n if (\r\n !args.isExperienceEditor &&\r\n window.matchMedia(\"(min-width: 700px)\").matches\r\n ) {\r\n HeroCarousel(args, args.animationSpeed);\r\n }\r\n };\r\n});\r\n"]}