{ "version": 3, "sources": ["../../../app/elemason/core/Carousel/Dots.tsx", "../../../node_modules/embla-carousel-autoplay/src/components/Options.ts", "../../../node_modules/embla-carousel-autoplay/src/components/Autoplay.ts", "../../../app/elemason/core/Carousel/utils.ts"], "sourcesContent": ["import { HStack } from '~/uikit/components';\nimport clsx from 'clsx';\nimport { twMerge } from 'tailwind-merge';\nimport { toTailwindClass } from '~/elemason/utils';\nimport { useClasses } from '~/elemason/hooks';\n\nimport type { CarouselDotSize } from '~/elemason/typings';\nimport type { FC } from 'react';\nimport type { CarouselDotsProps } from './Carousel.types';\n\nconst sizeClasses: Record = {\n sm: 'w-2 h-2',\n md: 'w-2.5 h-2.5',\n lg: 'w-3 h-3',\n};\n\nconst spaceClasses: Record = {\n sm: 'p-3',\n md: 'p-4',\n lg: 'p-6',\n};\n\nconst Dots: FC = ({\n dots,\n config,\n activeDot,\n className,\n}) => {\n const size = config?.size ?? 'lg';\n const classes = useClasses(config);\n\n return (\n \n {dots.map((dot, index) => {\n const key = `${dot}_${index}`;\n const isSelected = index === activeDot;\n const bgColor = isSelected ? config.selectedColor : config.color;\n const classes = twMerge(\n clsx(\n 'p-0',\n sizeClasses[size],\n 'border border-white rounded-full',\n 'transition-all',\n { 'opacity-8 w-6': isSelected, 'opacity-6': !isSelected },\n 'min-w-min',\n toTailwindClass('bg', bgColor)\n )\n );\n return
;\n })}\n \n );\n};\n\nexport default Dots;\n", "import { CreateOptionsType } from 'embla-carousel/components/Options'\n\nexport type OptionsType = CreateOptionsType<{\n delay: number\n jump: boolean\n playOnInit: boolean\n stopOnFocusIn: boolean\n stopOnInteraction: boolean\n stopOnMouseEnter: boolean\n stopOnLastSnap: boolean\n rootNode: ((emblaRoot: HTMLElement) => HTMLElement | null) | null\n}>\n\nexport const defaultOptions: OptionsType = {\n active: true,\n breakpoints: {},\n delay: 4000,\n jump: false,\n playOnInit: true,\n stopOnFocusIn: true,\n stopOnInteraction: true,\n stopOnMouseEnter: false,\n stopOnLastSnap: false,\n rootNode: null\n}\n", "import { OptionsType, defaultOptions } from './Options'\nimport { CreatePluginType } from 'embla-carousel/components/Plugins'\nimport { OptionsHandlerType } from 'embla-carousel/components/OptionsHandler'\nimport { EmblaCarouselType } from 'embla-carousel'\n\ndeclare module 'embla-carousel/components/Plugins' {\n interface EmblaPluginsType {\n autoplay?: AutoplayType\n }\n}\n\ndeclare module 'embla-carousel/components/EventHandler' {\n interface EmblaEventListType {\n autoplayPlay: 'autoplay:play'\n autoplayStop: 'autoplay:stop'\n }\n}\n\nexport type AutoplayType = CreatePluginType<\n {\n play: (jump?: boolean) => void\n stop: () => void\n reset: () => void\n isPlaying: () => boolean\n },\n OptionsType\n>\n\nexport type AutoplayOptionsType = AutoplayType['options']\n\nfunction Autoplay(userOptions: AutoplayOptionsType = {}): AutoplayType {\n let options: OptionsType\n let emblaApi: EmblaCarouselType\n let destroyed: boolean\n let playing = false\n let wasPlaying = false\n let jump = false\n let animationFrame = 0\n let timer = 0\n\n function init(\n emblaApiInstance: EmblaCarouselType,\n optionsHandler: OptionsHandlerType\n ): void {\n emblaApi = emblaApiInstance\n if (emblaApi.scrollSnapList().length <= 1) return\n\n const { mergeOptions, optionsAtMedia } = optionsHandler\n const optionsBase = mergeOptions(defaultOptions, Autoplay.globalOptions)\n const allOptions = mergeOptions(optionsBase, userOptions)\n options = optionsAtMedia(allOptions)\n\n jump = options.jump\n destroyed = false\n\n const { eventStore, ownerDocument } = emblaApi.internalEngine()\n const emblaRoot = emblaApi.rootNode()\n const root = (options.rootNode && options.rootNode(emblaRoot)) || emblaRoot\n\n emblaApi.on('pointerDown', clearTimer)\n if (!options.stopOnInteraction) emblaApi.on('pointerUp', startTimer)\n\n if (options.stopOnMouseEnter) {\n eventStore.add(root, 'mouseenter', clearTimer)\n\n if (!options.stopOnInteraction) {\n eventStore.add(root, 'mouseleave', startTimer)\n }\n }\n\n if (options.stopOnFocusIn) {\n eventStore.add(root, 'focusin', clearTimer)\n\n if (!options.stopOnInteraction) {\n eventStore.add(root, 'focusout', startTimer)\n }\n }\n\n eventStore.add(ownerDocument, 'visibilitychange', () => {\n if (ownerDocument.visibilityState === 'hidden') {\n wasPlaying = playing\n return clearTimer()\n }\n\n if (wasPlaying) startTimer()\n })\n\n if (options.playOnInit) {\n emblaApi.on('init', startTimer).on('reInit', startTimer)\n }\n }\n\n function destroy(): void {\n destroyed = true\n playing = false\n emblaApi.off('init', startTimer).off('reInit', startTimer)\n emblaApi.off('pointerDown', clearTimer)\n if (!options.stopOnInteraction) emblaApi.off('pointerUp', startTimer)\n clearTimer()\n cancelAnimationFrame(animationFrame)\n animationFrame = 0\n }\n\n function startTimer(): void {\n if (destroyed) return\n if (!playing) emblaApi.emit('autoplay:play')\n const { ownerWindow } = emblaApi.internalEngine()\n ownerWindow.clearInterval(timer)\n timer = ownerWindow.setInterval(next, options.delay)\n playing = true\n }\n\n function clearTimer(): void {\n if (destroyed) return\n if (playing) emblaApi.emit('autoplay:stop')\n const { ownerWindow } = emblaApi.internalEngine()\n ownerWindow.clearInterval(timer)\n timer = 0\n playing = false\n }\n\n function play(jumpOverride?: boolean): void {\n if (typeof jumpOverride !== 'undefined') jump = jumpOverride\n startTimer()\n }\n\n function stop(): void {\n if (playing) clearTimer()\n }\n\n function reset(): void {\n if (playing) play()\n }\n\n function isPlaying(): boolean {\n return playing\n }\n\n function next(): void {\n animationFrame = requestAnimationFrame(() => {\n const { index } = emblaApi.internalEngine()\n const nextIndex = index.clone().add(1).get()\n const lastIndex = emblaApi.scrollSnapList().length - 1\n const kill = options.stopOnLastSnap && nextIndex === lastIndex\n\n if (kill) clearTimer()\n\n if (emblaApi.canScrollNext()) {\n emblaApi.scrollNext(jump)\n } else {\n emblaApi.scrollTo(0, jump)\n }\n })\n }\n\n const self: AutoplayType = {\n name: 'autoplay',\n options: userOptions,\n init,\n destroy,\n play,\n stop,\n reset,\n isPlaying\n }\n return self\n}\n\nAutoplay.globalOptions = undefined\n\nexport default Autoplay\n", "import EmblaAutoplay from 'embla-carousel-autoplay';\nimport { useMemo } from 'react';\n\nimport type { EmblaPluginType } from 'embla-carousel-react';\nimport type { CSSProperties } from 'react';\nimport type {\n CarouselAutoPlayConfig,\n CarouselWidgetConfig,\n} from '~/elemason/typings';\n\nconst DEFAULT_DELAY = 3000;\n\nconst useCarouselDimension = (config?: CarouselWidgetConfig): CSSProperties =>\n useMemo(() => {\n const width = config?.width;\n const height = config?.height;\n const aspectRatio = config?.aspectRatio;\n if (!width && !height && !aspectRatio) {\n // when no dimension carousel operates in full width and height.\n return {\n width: `100%`,\n height: `100%`,\n };\n }\n return {\n width: config.width,\n height: config.height,\n aspectRatio: config.aspectRatio,\n };\n }, [config]);\n\nconst getAutoPlayPlugin = (config: CarouselAutoPlayConfig) =>\n EmblaAutoplay({\n playOnInit: true,\n delay: config.delay ?? DEFAULT_DELAY,\n ...config,\n });\n\nconst useEmblaPlugins = (config: CarouselWidgetConfig) =>\n useMemo(() => {\n const plugins: EmblaPluginType[] = [];\n if (config.autoPlay?.enable) {\n const autoPlayPlugin = getAutoPlayPlugin(config.autoPlay);\n plugins.push(autoPlayPlugin);\n }\n return plugins;\n }, [config]);\n\nexport { useCarouselDimension, useEmblaPlugins };\n"], "mappings": "2OAuDe,IAAAA,EAAA,SA7CTC,EAA+C,CACnD,GAAI,UACJ,GAAI,cACJ,GAAI,SACN,EAEMC,EAAgD,CACpD,GAAI,MACJ,GAAI,MACJ,GAAI,KACN,EAEMC,EAA8B,CAAC,CACnC,KAAAC,EACA,OAAAC,EACA,UAAAC,EACA,UAAAC,CACF,IAAM,CACJ,IAAMC,EAAOH,GAAQ,MAAQ,KACvBI,EAAUC,EAAWL,CAAM,EAEjC,SACE,OAACM,EAAA,CACC,UAAWC,EACT,2BACAV,EAAaM,CAAI,EACjBD,EACAE,CACF,EAEC,SAAAL,EAAK,IAAI,CAACS,EAAKC,IAAU,CACxB,IAAMC,EAAM,GAAGF,KAAOC,IAChBE,EAAaF,IAAUR,EACvBW,EAAUD,EAAaX,EAAO,cAAgBA,EAAO,MACrDI,EAAUG,EACdM,EACE,MACAjB,EAAYO,CAAI,EAChB,mCACA,iBACA,CAAE,gBAAiBQ,EAAY,YAAa,CAACA,CAAW,EACxD,YACAG,EAAgB,KAAMF,CAAO,CAC/B,CACF,EACA,SAAO,OAAC,OAAc,UAAWR,GAAhBM,CAAyB,CAC5C,CAAC,EACH,CAEJ,EAEOK,EAAQjB,EChDR,IAAMkB,EAA8B,CACzCC,OAAQ,GACRC,YAAa,CAAA,EACbC,MAAO,IACPC,KAAM,GACNC,WAAY,GACZC,cAAe,GACfC,kBAAmB,GACnBC,iBAAkB,GAClBC,eAAgB,GAChBC,SAAU,MCOZ,SAASC,EAASC,EAAmC,CAAA,EAAE,CACrD,IAAIC,EACAC,EACAC,EACAC,EAAU,GACVC,EAAa,GACbb,EAAO,GACPc,EAAiB,EACjBC,EAAQ,EAEZ,SAASC,EACPC,EACAC,EAAkC,CAGlC,GADAR,EAAWO,EACPP,EAASS,eAAc,EAAGC,QAAU,EAAG,OAE3C,GAAM,CAAEC,aAAAA,EAAcC,eAAAA,CAAgB,EAAGJ,EACnCK,EAAcF,EAAazB,EAAgBW,EAASiB,aAAa,EACjEC,EAAaJ,EAAaE,EAAaf,CAAW,EACxDC,EAAUa,EAAeG,CAAU,EAEnCzB,EAAOS,EAAQT,KACfW,EAAY,GAEZ,GAAM,CAAEe,WAAAA,EAAYC,cAAAA,CAAa,EAAKjB,EAASkB,eAAc,EACvDC,EAAYnB,EAASJ,SAAQ,EAC7BwB,EAAQrB,EAAQH,UAAYG,EAAQH,SAASuB,CAAS,GAAMA,EAElEnB,EAASqB,GAAG,cAAeC,CAAU,EAChCvB,EAAQN,mBAAmBO,EAASqB,GAAG,YAAaE,CAAU,EAE/DxB,EAAQL,mBACVsB,EAAWQ,IAAIJ,EAAM,aAAcE,CAAU,EAExCvB,EAAQN,mBACXuB,EAAWQ,IAAIJ,EAAM,aAAcG,CAAU,GAI7CxB,EAAQP,gBACVwB,EAAWQ,IAAIJ,EAAM,UAAWE,CAAU,EAErCvB,EAAQN,mBACXuB,EAAWQ,IAAIJ,EAAM,WAAYG,CAAU,GAI/CP,EAAWQ,IAAIP,EAAe,mBAAoB,IAAK,CACrD,GAAIA,EAAcQ,kBAAoB,SACpCtB,OAAAA,EAAaD,EACNoB,EAAU,EAGfnB,GAAYoB,EAAU,CAC5B,CAAC,EAEGxB,EAAQR,YACVS,EAASqB,GAAG,OAAQE,CAAU,EAAEF,GAAG,SAAUE,CAAU,CAE3D,CAEA,SAASG,GAAO,CACdzB,EAAY,GACZC,EAAU,GACVF,EAAS2B,IAAI,OAAQJ,CAAU,EAAEI,IAAI,SAAUJ,CAAU,EACzDvB,EAAS2B,IAAI,cAAeL,CAAU,EACjCvB,EAAQN,mBAAmBO,EAAS2B,IAAI,YAAaJ,CAAU,EACpED,EAAU,EACVM,qBAAqBxB,CAAc,EACnCA,EAAiB,CACnB,CAEA,SAASmB,GAAU,CACjB,GAAItB,EAAW,OACVC,GAASF,EAAS6B,KAAK,eAAe,EAC3C,GAAM,CAAEC,YAAAA,CAAa,EAAG9B,EAASkB,eAAc,EAC/CY,EAAYC,cAAc1B,CAAK,EAC/BA,EAAQyB,EAAYE,YAAYC,EAAMlC,EAAQV,KAAK,EACnDa,EAAU,EACZ,CAEA,SAASoB,GAAU,CACjB,GAAIrB,EAAW,OACXC,GAASF,EAAS6B,KAAK,eAAe,EAC1C,GAAM,CAAEC,YAAAA,CAAa,EAAG9B,EAASkB,eAAc,EAC/CY,EAAYC,cAAc1B,CAAK,EAC/BA,EAAQ,EACRH,EAAU,EACZ,CAEA,SAASgC,EAAKC,EAAsB,CAC9B,OAAOA,EAAiB,MAAa7C,EAAO6C,GAChDZ,EAAU,CACZ,CAEA,SAASa,GAAI,CACPlC,GAASoB,EAAU,CACzB,CAEA,SAASe,GAAK,CACRnC,GAASgC,EAAI,CACnB,CAEA,SAASI,GAAS,CAChB,OAAOpC,CACT,CAEA,SAAS+B,GAAI,CACX7B,EAAiBmC,sBAAsB,IAAK,CAC1C,GAAM,CAAEC,MAAAA,CAAO,EAAGxC,EAASkB,eAAc,EACnCuB,EAAYD,EAAME,MAAK,EAAGlB,IAAI,CAAC,EAAEmB,IAAG,EACpCC,EAAY5C,EAASS,eAAc,EAAGC,OAAS,EACxCX,EAAQJ,gBAAkB8C,IAAcG,GAE3CtB,EAAU,EAEhBtB,EAAS6C,cAAa,EACxB7C,EAAS8C,WAAWxD,CAAI,EAExBU,EAAS+C,SAAS,EAAGzD,CAAI,CAE7B,CAAC,CACH,CAYA,MAV2B,CACzB0D,KAAM,WACNjD,QAASD,EACTQ,KAAAA,EACAoB,QAAAA,EACAQ,KAAAA,EACAE,KAAAA,EACAC,MAAAA,EACAC,UAAAA,EAGJ,CAEAzC,EAASiB,cAAiDmC,OCvK1D,IAAAC,EAAwB,SASlBC,EAAgB,IAEhBC,GAAwBC,MAC5B,WAAQ,IAAM,CACZ,IAAMC,EAAQD,GAAQ,MAChBE,EAASF,GAAQ,OACjBG,EAAcH,GAAQ,YAC5B,MAAI,CAACC,GAAS,CAACC,GAAU,CAACC,EAEjB,CACL,MAAO,OACP,OAAQ,MACV,EAEK,CACL,MAAOH,EAAO,MACd,OAAQA,EAAO,OACf,YAAaA,EAAO,WACtB,CACF,EAAG,CAACA,CAAM,CAAC,EAEPI,EAAqBJ,GACzBK,EAAc,CACZ,WAAY,GACZ,MAAOL,EAAO,OAASF,EACvB,GAAGE,CACL,CAAC,EAEGM,GAAmBN,MACvB,WAAQ,IAAM,CACZ,IAAMO,EAA6B,CAAC,EACpC,GAAIP,EAAO,UAAU,OAAQ,CAC3B,IAAMQ,EAAiBJ,EAAkBJ,EAAO,QAAQ,EACxDO,EAAQ,KAAKC,CAAc,EAE7B,OAAOD,CACT,EAAG,CAACP,CAAM,CAAC", "names": ["import_jsx_runtime", "sizeClasses", "spaceClasses", "Dots", "dots", "config", "activeDot", "className", "size", "classes", "useClasses_default", "HStack_default", "twMerge", "dot", "index", "key", "isSelected", "bgColor", "clsx_m_default", "toTailwindClass", "Dots_default", "defaultOptions", "active", "breakpoints", "delay", "jump", "playOnInit", "stopOnFocusIn", "stopOnInteraction", "stopOnMouseEnter", "stopOnLastSnap", "rootNode", "Autoplay", "userOptions", "options", "emblaApi", "destroyed", "playing", "wasPlaying", "animationFrame", "timer", "init", "emblaApiInstance", "optionsHandler", "scrollSnapList", "length", "mergeOptions", "optionsAtMedia", "optionsBase", "globalOptions", "allOptions", "eventStore", "ownerDocument", "internalEngine", "emblaRoot", "root", "on", "clearTimer", "startTimer", "add", "visibilityState", "destroy", "off", "cancelAnimationFrame", "emit", "ownerWindow", "clearInterval", "setInterval", "next", "play", "jumpOverride", "stop", "reset", "isPlaying", "requestAnimationFrame", "index", "nextIndex", "clone", "get", "lastIndex", "canScrollNext", "scrollNext", "scrollTo", "name", "undefined", "import_react", "DEFAULT_DELAY", "useCarouselDimension", "config", "width", "height", "aspectRatio", "getAutoPlayPlugin", "Autoplay", "useEmblaPlugins", "plugins", "autoPlayPlugin"] }