diff --git a/.yarn/versions/69e7ac83.yml b/.yarn/versions/69e7ac83.yml new file mode 100644 index 000000000..96237af44 --- /dev/null +++ b/.yarn/versions/69e7ac83.yml @@ -0,0 +1,16 @@ +undecided: + - embla-carousel-monorepo + - embla-carousel + - embla-carousel-auto-height + - embla-carousel-auto-scroll + - embla-carousel-autoplay + - embla-carousel-class-names + - embla-carousel-docs + - embla-carousel-fade + - embla-carousel-react + - embla-carousel-reactive-utils + - embla-carousel-solid + - embla-carousel-svelte + - embla-carousel-vue + - embla-carousel-playground-react + - embla-carousel-playground-solid diff --git a/README.md b/README.md index 8c9efd38c..c7c19a671 100644 --- a/README.md +++ b/README.md @@ -95,6 +95,8 @@ + + @@ -103,8 +105,6 @@ - - diff --git a/docs/1905-2479836f551e53be6259.js.map b/docs/1905-2479836f551e53be6259.js.map index daae1fba3..747fd61a7 100644 --- a/docs/1905-2479836f551e53be6259.js.map +++ b/docs/1905-2479836f551e53be6259.js.map @@ -1 +1 @@ -{"version":3,"file":"1905-2479836f551e53be6259.js","mappings":"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","sources":["webpack://embla-carousel-docs/../src/components/Options.ts","webpack://embla-carousel-docs/../src/components/AutoScroll.ts","webpack://embla-carousel-docs/./src/components/Sandbox/React/SandboxFilesSrc/AutoScroll/EmblaCarousel.tsx"],"sourcesContent":["import { CreateOptionsType } from 'embla-carousel/components/Options'\n\nexport type OptionsType = CreateOptionsType<{\n direction: 'forward' | 'backward'\n speed: number\n startDelay: number\n playOnInit: boolean\n stopOnFocusIn: boolean\n stopOnInteraction: boolean\n stopOnMouseEnter: boolean\n rootNode: ((emblaRoot: HTMLElement) => HTMLElement | null) | null\n}>\n\nexport const defaultOptions: OptionsType = {\n direction: 'forward',\n speed: 2,\n startDelay: 1000,\n active: true,\n breakpoints: {},\n playOnInit: true,\n stopOnFocusIn: true,\n stopOnInteraction: true,\n stopOnMouseEnter: 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'\nimport { EngineType } from 'embla-carousel/components/Engine'\nimport { ScrollBodyType } from 'embla-carousel/components/ScrollBody'\n\ndeclare module 'embla-carousel/components/Plugins' {\n interface EmblaPluginsType {\n autoScroll?: AutoScrollType\n }\n}\n\ndeclare module 'embla-carousel/components/EventHandler' {\n interface EmblaEventListType {\n autoScrollPlay: 'autoScroll:play'\n autoScrollStop: 'autoScroll:stop'\n }\n}\n\nexport type AutoScrollType = CreatePluginType<\n {\n play: (delay?: number) => void\n stop: () => void\n reset: () => void\n isPlaying: () => boolean\n },\n OptionsType\n>\n\nexport type AutoScrollOptionsType = AutoScrollType['options']\n\nfunction AutoScroll(userOptions: AutoScrollOptionsType = {}): AutoScrollType {\n let options: OptionsType\n let emblaApi: EmblaCarouselType\n let destroyed: boolean\n let playing = false\n let resume = true\n let timer = 0\n let startDelay: number\n let defaultScrollBehaviour: ScrollBodyType\n\n function init(\n emblaApiInstance: EmblaCarouselType,\n optionsHandler: OptionsHandlerType\n ): void {\n emblaApi = emblaApiInstance\n\n const { mergeOptions, optionsAtMedia } = optionsHandler\n const optionsBase = mergeOptions(defaultOptions, AutoScroll.globalOptions)\n const allOptions = mergeOptions(optionsBase, userOptions)\n options = optionsAtMedia(allOptions)\n\n if (emblaApi.scrollSnapList().length <= 1) return\n\n startDelay = options.startDelay\n destroyed = false\n defaultScrollBehaviour = emblaApi.internalEngine().scrollBody\n\n const { eventStore } = emblaApi.internalEngine()\n const emblaRoot = emblaApi.rootNode()\n const root = (options.rootNode && options.rootNode(emblaRoot)) || emblaRoot\n const container = emblaApi.containerNode()\n\n emblaApi.on('pointerDown', stopScroll)\n\n if (!options.stopOnInteraction) {\n emblaApi.on('pointerUp', startScrollOnSettle)\n }\n\n if (options.stopOnMouseEnter) {\n eventStore.add(root, 'mouseenter', () => {\n resume = false\n stopScroll()\n })\n\n if (!options.stopOnInteraction) {\n eventStore.add(root, 'mouseleave', () => {\n resume = true\n startScroll()\n })\n }\n }\n\n if (options.stopOnFocusIn) {\n eventStore.add(container, 'focusin', () => {\n stopScroll()\n emblaApi.scrollTo(emblaApi.selectedScrollSnap(), true)\n })\n\n if (!options.stopOnInteraction) {\n eventStore.add(container, 'focusout', startScroll)\n }\n }\n\n if (options.playOnInit) startScroll()\n }\n\n function destroy(): void {\n emblaApi\n .off('pointerDown', stopScroll)\n .off('pointerUp', startScrollOnSettle)\n .off('settle', onSettle)\n stopScroll()\n destroyed = true\n playing = false\n }\n\n function startScroll(): void {\n if (destroyed || playing) return\n if (!resume) return\n emblaApi.emit('autoScroll:play')\n\n const engine = emblaApi.internalEngine()\n const { ownerWindow } = engine\n\n timer = ownerWindow.setTimeout(() => {\n engine.scrollBody = createAutoScrollBehaviour(engine)\n engine.animation.start()\n }, startDelay)\n\n playing = true\n }\n\n function stopScroll(): void {\n if (destroyed || !playing) return\n emblaApi.emit('autoScroll:stop')\n\n const engine = emblaApi.internalEngine()\n const { ownerWindow } = engine\n\n engine.scrollBody = defaultScrollBehaviour\n ownerWindow.clearTimeout(timer)\n timer = 0\n\n playing = false\n }\n\n function onSettle(): void {\n if (resume) startScroll()\n emblaApi.off('settle', onSettle)\n }\n\n function startScrollOnSettle(): void {\n emblaApi.on('settle', onSettle)\n }\n\n function createAutoScrollBehaviour(engine: EngineType): ScrollBodyType {\n const {\n location,\n target,\n scrollTarget,\n index,\n indexPrevious,\n limit: { reachedMin, reachedMax, constrain },\n options: { loop }\n } = engine\n const directionSign = options.direction === 'forward' ? -1 : 1\n const noop = (): ScrollBodyType => self\n\n let bodyVelocity = 0\n let scrollDirection = 0\n let rawLocation = location.get()\n let rawLocationPrevious = 0\n let hasSettled = false\n\n function seek(): ScrollBodyType {\n let directionDiff = 0\n\n bodyVelocity = directionSign * options.speed\n rawLocation += bodyVelocity\n location.add(bodyVelocity)\n target.set(location)\n\n directionDiff = rawLocation - rawLocationPrevious\n scrollDirection = Math.sign(directionDiff)\n rawLocationPrevious = rawLocation\n\n const currentIndex = scrollTarget.byDistance(0, false).index\n\n if (index.get() !== currentIndex) {\n indexPrevious.set(index.get())\n index.set(currentIndex)\n emblaApi.emit('select')\n }\n\n const reachedEnd =\n options.direction === 'forward'\n ? reachedMin(location.get())\n : reachedMax(location.get())\n\n if (!loop && reachedEnd) {\n hasSettled = true\n const constrainedLocation = constrain(location.get())\n location.set(constrainedLocation)\n target.set(location)\n stopScroll()\n }\n\n return self\n }\n\n const self: ScrollBodyType = {\n direction: () => scrollDirection,\n duration: () => -1,\n velocity: () => bodyVelocity,\n settled: () => hasSettled,\n seek,\n useBaseFriction: noop,\n useBaseDuration: noop,\n useFriction: noop,\n useDuration: noop\n }\n return self\n }\n\n function play(startDelayOverride?: number): void {\n if (typeof startDelayOverride !== 'undefined') {\n startDelay = startDelayOverride\n }\n resume = true\n startScroll()\n }\n\n function stop(): void {\n if (playing) stopScroll()\n }\n\n function reset(): void {\n if (playing) {\n stopScroll()\n startScrollOnSettle()\n }\n }\n\n function isPlaying(): boolean {\n return playing\n }\n\n const self: AutoScrollType = {\n name: 'autoScroll',\n options: userOptions,\n init,\n destroy,\n play,\n stop,\n reset,\n isPlaying\n }\n return self\n}\n\nAutoScroll.globalOptions = undefined\n\nexport default AutoScroll\n","import React, { useCallback, useEffect, useState } from 'react'\nimport { EmblaOptionsType } from 'embla-carousel'\nimport useEmblaCarousel from 'embla-carousel-react'\nimport AutoScroll from 'embla-carousel-auto-scroll'\nimport {\n NextButton,\n PrevButton,\n usePrevNextButtons\n} from '../EmblaCarouselArrowButtons'\n\ntype PropType = {\n slides: number[]\n options?: EmblaOptionsType\n}\n\nconst EmblaCarousel: React.FC = (props) => {\n const { slides, options } = props\n const [emblaRef, emblaApi] = useEmblaCarousel(options, [\n AutoScroll({ playOnInit: false })\n ])\n const [isPlaying, setIsPlaying] = useState(false)\n\n const {\n prevBtnDisabled,\n nextBtnDisabled,\n onPrevButtonClick,\n onNextButtonClick\n } = usePrevNextButtons(emblaApi)\n\n const onButtonAutoplayClick = useCallback(\n (callback: () => void) => {\n const autoScroll = emblaApi?.plugins()?.autoScroll\n if (!autoScroll) return\n\n const resetOrStop =\n autoScroll.options.stopOnInteraction === false\n ? autoScroll.reset\n : autoScroll.stop\n\n resetOrStop()\n callback()\n },\n [emblaApi]\n )\n\n const toggleAutoplay = useCallback(() => {\n const autoScroll = emblaApi?.plugins()?.autoScroll\n if (!autoScroll) return\n\n const playOrStop = autoScroll.isPlaying()\n ? autoScroll.stop\n : autoScroll.play\n playOrStop()\n }, [emblaApi])\n\n useEffect(() => {\n const autoScroll = emblaApi?.plugins()?.autoScroll\n if (!autoScroll) return\n\n setIsPlaying(autoScroll.isPlaying())\n emblaApi\n .on('autoScroll:play', () => setIsPlaying(true))\n .on('autoScroll:stop', () => setIsPlaying(false))\n .on('reInit', () => setIsPlaying(autoScroll.isPlaying()))\n }, [emblaApi])\n\n return (\n
\n
\n
\n {slides.map((index) => (\n
\n
\n {index + 1}\n
\n
\n ))}\n
\n
\n\n
\n
\n onButtonAutoplayClick(onPrevButtonClick)}\n disabled={prevBtnDisabled}\n />\n onButtonAutoplayClick(onNextButtonClick)}\n disabled={nextBtnDisabled}\n />\n
\n\n \n
\n
\n )\n}\n\nexport default EmblaCarousel\n"],"names":["defaultOptions","direction","speed","startDelay","active","breakpoints","playOnInit","stopOnFocusIn","stopOnInteraction","stopOnMouseEnter","rootNode","AutoScroll","userOptions","options","emblaApi","destroyed","defaultScrollBehaviour","playing","resume","timer","startScroll","emit","engine","internalEngine","ownerWindow","setTimeout","scrollBody","location","target","scrollTarget","index","indexPrevious","limit","reachedMin","reachedMax","constrain","loop","directionSign","noop","self","bodyVelocity","scrollDirection","rawLocation","get","rawLocationPrevious","hasSettled","seek","directionDiff","add","set","Math","sign","currentIndex","byDistance","reachedEnd","constrainedLocation","stopScroll","duration","velocity","settled","useBaseFriction","useBaseDuration","useFriction","useDuration","createAutoScrollBehaviour","animation","start","clearTimeout","onSettle","off","startScrollOnSettle","on","name","init","emblaApiInstance","optionsHandler","mergeOptions","optionsAtMedia","optionsBase","globalOptions","allOptions","scrollSnapList","length","eventStore","emblaRoot","root","container","containerNode","scrollTo","selectedScrollSnap","destroy","play","startDelayOverride","stop","reset","isPlaying","undefined","props","slides","emblaRef","useEmblaCarousel","setIsPlaying","useState","prevBtnDisabled","nextBtnDisabled","onPrevButtonClick","onNextButtonClick","usePrevNextButtons","onButtonAutoplayClick","useCallback","callback","_emblaApi$plugins","autoScroll","plugins","toggleAutoplay","_emblaApi$plugins2","useEffect","_emblaApi$plugins3","React","className","ref","map","key","PrevButton","onClick","disabled","NextButton","type"],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"1905-2479836f551e53be6259.js","mappings":"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","sources":["webpack://embla-carousel-docs/../src/components/Options.ts","webpack://embla-carousel-docs/../src/components/AutoScroll.ts","webpack://embla-carousel-docs/./src/components/Sandbox/React/SandboxFilesSrc/AutoScroll/EmblaCarousel.tsx"],"sourcesContent":["import { CreateOptionsType } from 'embla-carousel'\n\nexport type OptionsType = CreateOptionsType<{\n direction: 'forward' | 'backward'\n speed: number\n startDelay: number\n playOnInit: boolean\n stopOnFocusIn: boolean\n stopOnInteraction: boolean\n stopOnMouseEnter: boolean\n rootNode: ((emblaRoot: HTMLElement) => HTMLElement | null) | null\n}>\n\nexport const defaultOptions: OptionsType = {\n direction: 'forward',\n speed: 2,\n startDelay: 1000,\n active: true,\n breakpoints: {},\n playOnInit: true,\n stopOnFocusIn: true,\n stopOnInteraction: true,\n stopOnMouseEnter: false,\n rootNode: null\n}\n","import { OptionsType, defaultOptions } from './Options'\nimport {\n CreatePluginType,\n OptionsHandlerType,\n EmblaCarouselType,\n EngineType,\n ScrollBodyType\n} from 'embla-carousel'\n\ndeclare module 'embla-carousel' {\n interface EmblaPluginsType {\n autoScroll: AutoScrollType\n }\n\n interface EmblaEventListType {\n autoScrollPlay: 'autoScroll:play'\n autoScrollStop: 'autoScroll:stop'\n }\n}\n\nexport type AutoScrollType = CreatePluginType<\n {\n play: (delay?: number) => void\n stop: () => void\n reset: () => void\n isPlaying: () => boolean\n },\n OptionsType\n>\n\nexport type AutoScrollOptionsType = AutoScrollType['options']\n\nfunction AutoScroll(userOptions: AutoScrollOptionsType = {}): AutoScrollType {\n let options: OptionsType\n let emblaApi: EmblaCarouselType\n let destroyed: boolean\n let playing = false\n let resume = true\n let timer = 0\n let startDelay: number\n let defaultScrollBehaviour: ScrollBodyType\n\n function init(\n emblaApiInstance: EmblaCarouselType,\n optionsHandler: OptionsHandlerType\n ): void {\n emblaApi = emblaApiInstance\n\n const { mergeOptions, optionsAtMedia } = optionsHandler\n const optionsBase = mergeOptions(defaultOptions, AutoScroll.globalOptions)\n const allOptions = mergeOptions(optionsBase, userOptions)\n options = optionsAtMedia(allOptions)\n\n if (emblaApi.scrollSnapList().length <= 1) return\n\n startDelay = options.startDelay\n destroyed = false\n defaultScrollBehaviour = emblaApi.internalEngine().scrollBody\n\n const { eventStore } = emblaApi.internalEngine()\n const emblaRoot = emblaApi.rootNode()\n const root = (options.rootNode && options.rootNode(emblaRoot)) || emblaRoot\n const container = emblaApi.containerNode()\n\n emblaApi.on('pointerDown', stopScroll)\n\n if (!options.stopOnInteraction) {\n emblaApi.on('pointerUp', startScrollOnSettle)\n }\n\n if (options.stopOnMouseEnter) {\n eventStore.add(root, 'mouseenter', () => {\n resume = false\n stopScroll()\n })\n\n if (!options.stopOnInteraction) {\n eventStore.add(root, 'mouseleave', () => {\n resume = true\n startScroll()\n })\n }\n }\n\n if (options.stopOnFocusIn) {\n eventStore.add(container, 'focusin', () => {\n stopScroll()\n emblaApi.scrollTo(emblaApi.selectedScrollSnap(), true)\n })\n\n if (!options.stopOnInteraction) {\n eventStore.add(container, 'focusout', startScroll)\n }\n }\n\n if (options.playOnInit) startScroll()\n }\n\n function destroy(): void {\n emblaApi\n .off('pointerDown', stopScroll)\n .off('pointerUp', startScrollOnSettle)\n .off('settle', onSettle)\n stopScroll()\n destroyed = true\n playing = false\n }\n\n function startScroll(): void {\n if (destroyed || playing) return\n if (!resume) return\n emblaApi.emit('autoScroll:play')\n\n const engine = emblaApi.internalEngine()\n const { ownerWindow } = engine\n\n timer = ownerWindow.setTimeout(() => {\n engine.scrollBody = createAutoScrollBehaviour(engine)\n engine.animation.start()\n }, startDelay)\n\n playing = true\n }\n\n function stopScroll(): void {\n if (destroyed || !playing) return\n emblaApi.emit('autoScroll:stop')\n\n const engine = emblaApi.internalEngine()\n const { ownerWindow } = engine\n\n engine.scrollBody = defaultScrollBehaviour\n ownerWindow.clearTimeout(timer)\n timer = 0\n\n playing = false\n }\n\n function onSettle(): void {\n if (resume) startScroll()\n emblaApi.off('settle', onSettle)\n }\n\n function startScrollOnSettle(): void {\n emblaApi.on('settle', onSettle)\n }\n\n function createAutoScrollBehaviour(engine: EngineType): ScrollBodyType {\n const {\n location,\n target,\n scrollTarget,\n index,\n indexPrevious,\n limit: { reachedMin, reachedMax, constrain },\n options: { loop }\n } = engine\n const directionSign = options.direction === 'forward' ? -1 : 1\n const noop = (): ScrollBodyType => self\n\n let bodyVelocity = 0\n let scrollDirection = 0\n let rawLocation = location.get()\n let rawLocationPrevious = 0\n let hasSettled = false\n\n function seek(): ScrollBodyType {\n let directionDiff = 0\n\n bodyVelocity = directionSign * options.speed\n rawLocation += bodyVelocity\n location.add(bodyVelocity)\n target.set(location)\n\n directionDiff = rawLocation - rawLocationPrevious\n scrollDirection = Math.sign(directionDiff)\n rawLocationPrevious = rawLocation\n\n const currentIndex = scrollTarget.byDistance(0, false).index\n\n if (index.get() !== currentIndex) {\n indexPrevious.set(index.get())\n index.set(currentIndex)\n emblaApi.emit('select')\n }\n\n const reachedEnd =\n options.direction === 'forward'\n ? reachedMin(location.get())\n : reachedMax(location.get())\n\n if (!loop && reachedEnd) {\n hasSettled = true\n const constrainedLocation = constrain(location.get())\n location.set(constrainedLocation)\n target.set(location)\n stopScroll()\n }\n\n return self\n }\n\n const self: ScrollBodyType = {\n direction: () => scrollDirection,\n duration: () => -1,\n velocity: () => bodyVelocity,\n settled: () => hasSettled,\n seek,\n useBaseFriction: noop,\n useBaseDuration: noop,\n useFriction: noop,\n useDuration: noop\n }\n return self\n }\n\n function play(startDelayOverride?: number): void {\n if (typeof startDelayOverride !== 'undefined') {\n startDelay = startDelayOverride\n }\n resume = true\n startScroll()\n }\n\n function stop(): void {\n if (playing) stopScroll()\n }\n\n function reset(): void {\n if (playing) {\n stopScroll()\n startScrollOnSettle()\n }\n }\n\n function isPlaying(): boolean {\n return playing\n }\n\n const self: AutoScrollType = {\n name: 'autoScroll',\n options: userOptions,\n init,\n destroy,\n play,\n stop,\n reset,\n isPlaying\n }\n return self\n}\n\ndeclare namespace AutoScroll {\n let globalOptions: AutoScrollOptionsType | undefined\n}\n\nAutoScroll.globalOptions = undefined\n\nexport default AutoScroll\n","import React, { useCallback, useEffect, useState } from 'react'\nimport { EmblaOptionsType } from 'embla-carousel'\nimport useEmblaCarousel from 'embla-carousel-react'\nimport AutoScroll from 'embla-carousel-auto-scroll'\nimport {\n NextButton,\n PrevButton,\n usePrevNextButtons\n} from '../EmblaCarouselArrowButtons'\n\ntype PropType = {\n slides: number[]\n options?: EmblaOptionsType\n}\n\nconst EmblaCarousel: React.FC = (props) => {\n const { slides, options } = props\n const [emblaRef, emblaApi] = useEmblaCarousel(options, [\n AutoScroll({ playOnInit: false })\n ])\n const [isPlaying, setIsPlaying] = useState(false)\n\n const {\n prevBtnDisabled,\n nextBtnDisabled,\n onPrevButtonClick,\n onNextButtonClick\n } = usePrevNextButtons(emblaApi)\n\n const onButtonAutoplayClick = useCallback(\n (callback: () => void) => {\n const autoScroll = emblaApi?.plugins()?.autoScroll\n if (!autoScroll) return\n\n const resetOrStop =\n autoScroll.options.stopOnInteraction === false\n ? autoScroll.reset\n : autoScroll.stop\n\n resetOrStop()\n callback()\n },\n [emblaApi]\n )\n\n const toggleAutoplay = useCallback(() => {\n const autoScroll = emblaApi?.plugins()?.autoScroll\n if (!autoScroll) return\n\n const playOrStop = autoScroll.isPlaying()\n ? autoScroll.stop\n : autoScroll.play\n playOrStop()\n }, [emblaApi])\n\n useEffect(() => {\n const autoScroll = emblaApi?.plugins()?.autoScroll\n if (!autoScroll) return\n\n setIsPlaying(autoScroll.isPlaying())\n emblaApi\n .on('autoScroll:play', () => setIsPlaying(true))\n .on('autoScroll:stop', () => setIsPlaying(false))\n .on('reInit', () => setIsPlaying(autoScroll.isPlaying()))\n }, [emblaApi])\n\n return (\n
\n
\n
\n {slides.map((index) => (\n
\n
\n {index + 1}\n
\n
\n ))}\n
\n
\n\n
\n
\n onButtonAutoplayClick(onPrevButtonClick)}\n disabled={prevBtnDisabled}\n />\n onButtonAutoplayClick(onNextButtonClick)}\n disabled={nextBtnDisabled}\n />\n
\n\n \n
\n
\n )\n}\n\nexport default EmblaCarousel\n"],"names":["defaultOptions","direction","speed","startDelay","active","breakpoints","playOnInit","stopOnFocusIn","stopOnInteraction","stopOnMouseEnter","rootNode","AutoScroll","userOptions","options","emblaApi","destroyed","defaultScrollBehaviour","playing","resume","timer","startScroll","emit","engine","internalEngine","ownerWindow","setTimeout","scrollBody","location","target","scrollTarget","index","indexPrevious","limit","reachedMin","reachedMax","constrain","loop","directionSign","noop","self","bodyVelocity","scrollDirection","rawLocation","get","rawLocationPrevious","hasSettled","seek","directionDiff","add","set","Math","sign","currentIndex","byDistance","reachedEnd","constrainedLocation","stopScroll","duration","velocity","settled","useBaseFriction","useBaseDuration","useFriction","useDuration","createAutoScrollBehaviour","animation","start","clearTimeout","onSettle","off","startScrollOnSettle","on","name","init","emblaApiInstance","optionsHandler","mergeOptions","optionsAtMedia","optionsBase","globalOptions","allOptions","scrollSnapList","length","eventStore","emblaRoot","root","container","containerNode","scrollTo","selectedScrollSnap","destroy","play","startDelayOverride","stop","reset","isPlaying","undefined","props","slides","emblaRef","useEmblaCarousel","setIsPlaying","useState","prevBtnDisabled","nextBtnDisabled","onPrevButtonClick","onNextButtonClick","usePrevNextButtons","onButtonAutoplayClick","useCallback","callback","_emblaApi$plugins","autoScroll","plugins","toggleAutoplay","_emblaApi$plugins2","useEffect","_emblaApi$plugins3","React","className","ref","map","key","PrevButton","onClick","disabled","NextButton","type"],"sourceRoot":""} \ No newline at end of file diff --git a/docs/2445-520d15ac197a112a3ec1.js b/docs/2445-520d15ac197a112a3ec1.js new file mode 100644 index 000000000..be1f93b93 --- /dev/null +++ b/docs/2445-520d15ac197a112a3ec1.js @@ -0,0 +1,2 @@ +"use strict";(self.webpackChunkembla_carousel_docs=self.webpackChunkembla_carousel_docs||[]).push([[2445],{2445:function(e,t,r){r.r(t),r.d(t,{SearchAlgolia:function(){return po}});var n=r(4041),o=r(3057),i=r(8362),a=r(7254),c=r(3144);function l(){return n.createElement("svg",{width:"15",height:"15",className:"DocSearch-Control-Key-Icon"},n.createElement("path",{d:"M4.505 4.496h2M5.505 5.496v5M8.216 4.496l.055 5.993M10 7.5c.333.333.5.667.5 1v2M12.326 4.5v5.996M8.384 4.496c1.674 0 2.116 0 2.116 1.5s-.442 1.5-2.116 1.5M3.205 9.303c-.09.448-.277 1.21-1.241 1.203C1 10.5.5 9.513.5 8V7c0-1.57.5-2.5 1.464-2.494.964.006 1.134.598 1.24 1.342M12.553 10.5h1.953",strokeWidth:"1.2",stroke:"currentColor",fill:"none",strokeLinecap:"square"}))}function u(){return n.createElement("svg",{width:"20",height:"20",className:"DocSearch-Search-Icon",viewBox:"0 0 20 20","aria-hidden":"true"},n.createElement("path",{d:"M14.386 14.386l4.0877 4.0877-4.0877-4.0877c-2.9418 2.9419-7.7115 2.9419-10.6533 0-2.9419-2.9418-2.9419-7.7115 0-10.6533 2.9418-2.9419 7.7115-2.9419 10.6533 0 2.9419 2.9418 2.9419 7.7115 0 10.6533z",stroke:"currentColor",fill:"none",fillRule:"evenodd",strokeLinecap:"round",strokeLinejoin:"round"}))}var s=["translations"];function f(){return f=Object.assign||function(e){for(var t=1;te.length)&&(t=e.length);for(var r=0,n=new Array(t);r=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}var h="Ctrl";var v=n.forwardRef((function(e,t){var r=e.translations,o=void 0===r?{}:r,i=d(e,s),a=o.buttonText,c=void 0===a?"Search":a,p=o.buttonAriaLabel,v=void 0===p?"Search":p,b=m((0,n.useState)(null),2),g=b[0],S=b[1];return(0,n.useEffect)((function(){"undefined"!=typeof navigator&&(/(Mac|iPhone|iPod|iPad)/i.test(navigator.platform)?S("⌘"):S(h))}),[]),n.createElement("button",f({type:"button",className:"DocSearch DocSearch-Button","aria-label":v},i,{ref:t}),n.createElement("span",{className:"DocSearch-Button-Container"},n.createElement(u,null),n.createElement("span",{className:"DocSearch-Button-Placeholder"},c)),n.createElement("span",{className:"DocSearch-Button-Keys"},null!==g&&n.createElement(n.Fragment,null,n.createElement(y,{reactsToKey:g===h?h:"Meta"},g===h?n.createElement(l,null):g),n.createElement(y,{reactsToKey:"k"},"K"))))}));function y(e){var t=e.reactsToKey,r=e.children,o=m((0,n.useState)(!1),2),i=o[0],a=o[1];return(0,n.useEffect)((function(){if(t)return window.addEventListener("keydown",e),window.addEventListener("keyup",r),function(){window.removeEventListener("keydown",e),window.removeEventListener("keyup",r)};function e(e){e.key===t&&a(!0)}function r(e){e.key!==t&&"Meta"!==e.key||a(!1)}}),[t]),n.createElement("kbd",{className:i?"DocSearch-Button-Key DocSearch-Button-Key--pressed":"DocSearch-Button-Key"},r)}function b(e,t){var r=void 0;return function(){for(var n=arguments.length,o=new Array(n),i=0;ie.length)&&(t=e.length);for(var r=0,n=new Array(t);re.length)&&(t=e.length);for(var r=0,n=new Array(t);r=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}function _(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function N(e){for(var t=1;t=3||2===r&&n>=4||1===r&&n>=10);function i(t,r,n){if(o&&void 0!==n){var i=n[0].__autocomplete_algoliaCredentials,a={"X-Algolia-Application-Id":i.appId,"X-Algolia-API-Key":i.apiKey};e.apply(void 0,[t].concat(T(r),[{headers:a}]))}else e.apply(void 0,[t].concat(T(r)))}return{init:function(t,r){e("init",{appId:t,apiKey:r})},setUserToken:function(t){e("setUserToken",t)},clickedObjectIDsAfterSearch:function(){for(var e=arguments.length,t=new Array(e),r=0;r0&&i("clickedObjectIDsAfterSearch",x(t),t[0].items)},clickedObjectIDs:function(){for(var e=arguments.length,t=new Array(e),r=0;r0&&i("clickedObjectIDs",x(t),t[0].items)},clickedFilters:function(){for(var t=arguments.length,r=new Array(t),n=0;n0&&e.apply(void 0,["clickedFilters"].concat(r))},convertedObjectIDsAfterSearch:function(){for(var e=arguments.length,t=new Array(e),r=0;r0&&i("convertedObjectIDsAfterSearch",x(t),t[0].items)},convertedObjectIDs:function(){for(var e=arguments.length,t=new Array(e),r=0;r0&&i("convertedObjectIDs",x(t),t[0].items)},convertedFilters:function(){for(var t=arguments.length,r=new Array(t),n=0;n0&&e.apply(void 0,["convertedFilters"].concat(r))},viewedObjectIDs:function(){for(var e=arguments.length,t=new Array(e),r=0;r0&&t.reduce((function(e,t){var r=t.items,n=C(t,D);return[].concat(T(e),T(function(e){for(var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:20,r=[],n=0;n0&&e.apply(void 0,["viewedFilters"].concat(r))}}}function L(e){var t=e.items.reduce((function(e,t){var r;return e[t.__autocomplete_indexName]=(null!==(r=e[t.__autocomplete_indexName])&&void 0!==r?r:[]).concat(t),e}),{});return Object.keys(t).map((function(e){return{index:e,items:t[e],algoliaSource:["autocomplete"]}}))}function H(e){return e.objectID&&e.__autocomplete_indexName&&e.__autocomplete_queryID}function M(e){return M="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},M(e)}function q(e){return function(e){if(Array.isArray(e))return U(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||function(e,t){if(!e)return;if("string"==typeof e)return U(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);"Object"===r&&e.constructor&&(r=e.constructor.name);if("Map"===r||"Set"===r)return Array.from(e);if("Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return U(e,t)}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function U(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r0&&z({onItemsChange:n,items:r,insights:c,state:t}))}}),0);return{name:"aa.algoliaInsightsPlugin",subscribe:function(e){var t=e.setContext,r=e.onSelect,n=e.onActive;a("addAlgoliaAgent","insights-plugin"),t({algoliaInsightsPlugin:{__algoliaSearchParameters:{clickAnalytics:!0},insights:c}}),r((function(e){var t=e.item,r=e.state,n=e.event;H(t)&&o({state:r,event:n,insights:c,item:t,insightsEvents:[B({eventName:"Item Selected"},E({item:t,items:l.current}))]})})),n((function(e){var t=e.item,r=e.state,n=e.event;H(t)&&i({state:r,event:n,insights:c,item:t,insightsEvents:[B({eventName:"Item Active"},E({item:t,items:l.current}))]})}))},onStateChange:function(e){var t=e.state;u({state:t})},__autocomplete_pluginOptions:e}}function W(e){return W="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},W(e)}function X(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function J(e,t,r){return(t=function(e){var t=function(e,t){if("object"!==W(e)||null===e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var n=r.call(e,t||"default");if("object"!==W(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"===W(t)?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function Y(e,t,r){var n,o=t.initialState;return{getState:function(){return o},dispatch:function(n,i){var a=function(e){for(var t=1;te.length)&&(t=e.length);for(var r=0,n=new Array(t);r0},reshape:function(e){return e.sources}},e),{},{id:null!==(r=e.id)&&void 0!==r?r:"autocomplete-".concat(oe++),plugins:o,initialState:pe({activeItemId:null,query:"",completion:null,collections:[],isOpen:!1,status:"idle",context:{}},e.initialState),onStateChange:function(t){var r;null===(r=e.onStateChange)||void 0===r||r.call(e,t),o.forEach((function(e){var r;return null===(r=e.onStateChange)||void 0===r?void 0:r.call(e,t)}))},onSubmit:function(t){var r;null===(r=e.onSubmit)||void 0===r||r.call(e,t),o.forEach((function(e){var r;return null===(r=e.onSubmit)||void 0===r?void 0:r.call(e,t)}))},onReset:function(t){var r;null===(r=e.onReset)||void 0===r||r.call(e,t),o.forEach((function(e){var r;return null===(r=e.onReset)||void 0===r?void 0:r.call(e,t)}))},getSources:function(r){return Promise.all([].concat(se(o.map((function(e){return e.getSources}))),[e.getSources]).filter(Boolean).map((function(e){return function(e,t){var r=[];return Promise.resolve(e(t)).then((function(e){return Array.isArray(e),Promise.all(e.filter((function(e){return Boolean(e)})).map((function(e){if(e.sourceId,r.includes(e.sourceId))throw new Error("[Autocomplete] The `sourceId` ".concat(JSON.stringify(e.sourceId)," is not unique."));r.push(e.sourceId);var t={getItemInputValue:function(e){return e.state.query},getItemUrl:function(){},onSelect:function(e){(0,e.setIsOpen)(!1)},onActive:O,onResolve:O};Object.keys(t).forEach((function(e){t[e].__default=!0}));var n=ae(ae({},t),e);return Promise.resolve(n)})))}))}(e,r)}))).then((function(e){return Q(e)})).then((function(e){return e.map((function(e){return pe(pe({},e),{},{onSelect:function(r){e.onSelect(r),t.forEach((function(e){var t;return null===(t=e.onSelect)||void 0===t?void 0:t.call(e,r)}))},onActive:function(r){e.onActive(r),t.forEach((function(e){var t;return null===(t=e.onActive)||void 0===t?void 0:t.call(e,r)}))},onResolve:function(r){e.onResolve(r),t.forEach((function(e){var t;return null===(t=e.onResolve)||void 0===t?void 0:t.call(e,r)}))}})}))}))},navigator:pe({navigate:function(e){var t=e.itemUrl;n.location.assign(t)},navigateNewTab:function(e){var t=e.itemUrl,r=n.open(t,"_blank","noopener");null==r||r.focus()},navigateNewWindow:function(e){var t=e.itemUrl;n.open(t,"_blank","noopener")}},e.navigator)})}function ve(e){return ve="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},ve(e)}function ye(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function be(e){for(var t=1;te.length)&&(t=e.length);for(var r=0,n=new Array(t);r=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}var Fe,Be,Ke,Ve=null,$e=(Fe=-1,Be=-1,Ke=void 0,function(e){var t=++Fe;return Promise.resolve(e).then((function(e){return Ke&&t=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}var Ze=/((gt|sm)-|galaxy nexus)|samsung[- ]|samsungbrowser/i;function et(e){return et="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},et(e)}var tt=["props","refresh","store"],rt=["inputElement","formElement","panelElement"],nt=["inputElement"],ot=["inputElement","maxLength"],it=["sourceIndex"],at=["sourceIndex"],ct=["item","source","sourceIndex"];function lt(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function ut(e){for(var t=1;t=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}function mt(e){var t=e.props,r=e.refresh,n=e.store,o=ft(e,tt),i=function(e,t){return void 0!==t?"".concat(e,"-").concat(t):e};return{getEnvironmentProps:function(e){var r=e.inputElement,o=e.formElement,i=e.panelElement;function a(e){!n.getState().isOpen&&n.pendingRequests.isEmpty()||e.target===r||!1===[o,i].some((function(t){return r=t,n=e.target,r===n||r.contains(n);var r,n}))&&(n.dispatch("blur",null),t.debug||n.pendingRequests.cancelAll())}return ut({onTouchStart:a,onMouseDown:a,onTouchMove:function(e){!1!==n.getState().isOpen&&r===t.environment.document.activeElement&&e.target!==r&&r.blur()}},ft(e,rt))},getRootProps:function(e){return ut({role:"combobox","aria-expanded":n.getState().isOpen,"aria-haspopup":"listbox","aria-owns":n.getState().isOpen?"".concat(t.id,"-list"):void 0,"aria-labelledby":"".concat(t.id,"-label")},e)},getFormProps:function(e){e.inputElement;return ut({action:"",noValidate:!0,role:"search",onSubmit:function(i){var a;i.preventDefault(),t.onSubmit(ut({event:i,refresh:r,state:n.getState()},o)),n.dispatch("submit",null),null===(a=e.inputElement)||void 0===a||a.blur()},onReset:function(i){var a;i.preventDefault(),t.onReset(ut({event:i,refresh:r,state:n.getState()},o)),n.dispatch("reset",null),null===(a=e.inputElement)||void 0===a||a.focus()}},ft(e,nt))},getLabelProps:function(e){var r=e||{},n=r.sourceIndex,o=ft(r,it);return ut({htmlFor:"".concat(i(t.id,n),"-input"),id:"".concat(i(t.id,n),"-label")},o)},getInputProps:function(e){var i;function a(e){(t.openOnFocus||Boolean(n.getState().query))&&ze(ut({event:e,props:t,query:n.getState().completion||n.getState().query,refresh:r,store:n},o)),n.dispatch("focus",null)}var c=e||{},l=(c.inputElement,c.maxLength),u=void 0===l?512:l,s=ft(c,ot),f=xe(n.getState()),m=function(e){return Boolean(e&&e.match(Ze))}((null===(i=t.environment.navigator)||void 0===i?void 0:i.userAgent)||""),p=null!=f&&f.itemUrl&&!m?"go":"search";return ut({"aria-autocomplete":"both","aria-activedescendant":n.getState().isOpen&&null!==n.getState().activeItemId?"".concat(t.id,"-item-").concat(n.getState().activeItemId):void 0,"aria-controls":n.getState().isOpen?"".concat(t.id,"-list"):void 0,"aria-labelledby":"".concat(t.id,"-label"),value:n.getState().completion||n.getState().query,id:"".concat(t.id,"-input"),autoComplete:"off",autoCorrect:"off",autoCapitalize:"off",enterKeyHint:p,spellCheck:"false",autoFocus:t.autoFocus,placeholder:t.placeholder,maxLength:u,type:"search",onChange:function(e){ze(ut({event:e,props:t,query:e.currentTarget.value.slice(0,u),refresh:r,store:n},o))},onKeyDown:function(e){!function(e){var t=e.event,r=e.props,n=e.refresh,o=e.store,i=Qe(e,We);if("ArrowUp"===t.key||"ArrowDown"===t.key){var a=function(){var e=r.environment.document.getElementById("".concat(r.id,"-item-").concat(o.getState().activeItemId));e&&(e.scrollIntoViewIfNeeded?e.scrollIntoViewIfNeeded(!1):e.scrollIntoView(!1))},c=function(){var e=xe(o.getState());if(null!==o.getState().activeItemId&&e){var r=e.item,a=e.itemInputValue,c=e.itemUrl,l=e.source;l.onActive(Je({event:t,item:r,itemInputValue:a,itemUrl:c,refresh:n,source:l,state:o.getState()},i))}};t.preventDefault(),!1===o.getState().isOpen&&(r.openOnFocus||Boolean(o.getState().query))?ze(Je({event:t,props:r,query:o.getState().query,refresh:n,store:o},i)).then((function(){o.dispatch(t.key,{nextActiveItemId:r.defaultActiveItemId}),c(),setTimeout(a,0)})):(o.dispatch(t.key,{}),c(),a())}else if("Escape"===t.key)t.preventDefault(),o.dispatch(t.key,null),o.pendingRequests.cancelAll();else if("Tab"===t.key)o.dispatch("blur",null),o.pendingRequests.cancelAll();else if("Enter"===t.key){if(null===o.getState().activeItemId||o.getState().collections.every((function(e){return 0===e.items.length})))return void(r.debug||o.pendingRequests.cancelAll());t.preventDefault();var l=xe(o.getState()),u=l.item,s=l.itemInputValue,f=l.itemUrl,m=l.source;if(t.metaKey||t.ctrlKey)void 0!==f&&(m.onSelect(Je({event:t,item:u,itemInputValue:s,itemUrl:f,refresh:n,source:m,state:o.getState()},i)),r.navigator.navigateNewTab({itemUrl:f,item:u,state:o.getState()}));else if(t.shiftKey)void 0!==f&&(m.onSelect(Je({event:t,item:u,itemInputValue:s,itemUrl:f,refresh:n,source:m,state:o.getState()},i)),r.navigator.navigateNewWindow({itemUrl:f,item:u,state:o.getState()}));else if(t.altKey);else{if(void 0!==f)return m.onSelect(Je({event:t,item:u,itemInputValue:s,itemUrl:f,refresh:n,source:m,state:o.getState()},i)),void r.navigator.navigate({itemUrl:f,item:u,state:o.getState()});ze(Je({event:t,nextState:{isOpen:!1},props:r,query:s,refresh:n,store:o},i)).then((function(){m.onSelect(Je({event:t,item:u,itemInputValue:s,itemUrl:f,refresh:n,source:m,state:o.getState()},i))}))}}}(ut({event:e,props:t,refresh:r,store:n},o))},onFocus:a,onBlur:O,onClick:function(r){e.inputElement!==t.environment.document.activeElement||n.getState().isOpen||a(r)}},s)},getPanelProps:function(e){return ut({onMouseDown:function(e){e.preventDefault()},onMouseLeave:function(){n.dispatch("mouseleave",null)}},e)},getListProps:function(e){var r=e||{},n=r.sourceIndex,o=ft(r,at);return ut({role:"listbox","aria-labelledby":"".concat(i(t.id,n),"-label"),id:"".concat(i(t.id,n),"-list")},o)},getItemProps:function(e){var a=e.item,c=e.source,l=e.sourceIndex,u=ft(e,ct);return ut({id:"".concat(i(t.id,l),"-item-").concat(a.__autocomplete_id),role:"option","aria-selected":n.getState().activeItemId===a.__autocomplete_id,onMouseMove:function(e){if(a.__autocomplete_id!==n.getState().activeItemId){n.dispatch("mousemove",a.__autocomplete_id);var t=xe(n.getState());if(null!==n.getState().activeItemId&&t){var i=t.item,c=t.itemInputValue,l=t.itemUrl,u=t.source;u.onActive(ut({event:e,item:i,itemInputValue:c,itemUrl:l,refresh:r,source:u,state:n.getState()},o))}}},onMouseDown:function(e){e.preventDefault()},onClick:function(e){var i=c.getItemInputValue({item:a,state:n.getState()}),l=c.getItemUrl({item:a,state:n.getState()});(l?Promise.resolve():ze(ut({event:e,nextState:{isOpen:!1},props:t,query:i,refresh:r,store:n},o))).then((function(){c.onSelect(ut({event:e,item:a,itemInputValue:i,itemUrl:l,refresh:r,source:c,state:n.getState()},o))}))}},u)}}}var pt=[{segment:"autocomplete-core",version:"1.9.3"}];function dt(e){return dt="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},dt(e)}function ht(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function vt(e){for(var t=1;t=r?null===n?null:0:o}function Ot(e){return Ot="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Ot(e)}function Et(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function wt(e){for(var t=1;te.length)&&(t=e.length);for(var r=0,n=new Array(t);r=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}function Kt(e){var t=e.translations,r=void 0===t?{}:t,o=Bt(e,qt),i=r.noResultsText,a=void 0===i?"No results for":i,c=r.suggestedQueryText,l=void 0===c?"Try searching for":c,u=r.reportMissingResultsText,s=void 0===u?"Believe this query should return results?":u,f=r.reportMissingResultsLinkText,m=void 0===f?"Let us know.":f,p=o.state.context.searchSuggestions;return n.createElement("div",{className:"DocSearch-NoResults"},n.createElement("div",{className:"DocSearch-Screen-Icon"},n.createElement(Mt,null)),n.createElement("p",{className:"DocSearch-Title"},a,' "',n.createElement("strong",null,o.state.query),'"'),p&&p.length>0&&n.createElement("div",{className:"DocSearch-NoResults-Prefill-List"},n.createElement("p",{className:"DocSearch-Help"},l,":"),n.createElement("ul",null,p.slice(0,3).reduce((function(e,t){return[].concat(Ut(e),[n.createElement("li",{key:t},n.createElement("button",{className:"DocSearch-Prefill",key:t,type:"button",onClick:function(){o.setQuery(t.toLowerCase()+" "),o.refresh(),o.inputRef.current.focus()}},t))])}),[]))),o.getMissingResultsUrl&&n.createElement("p",{className:"DocSearch-Help"},"".concat(s," "),n.createElement("a",{href:o.getMissingResultsUrl({query:o.state.query}),target:"_blank",rel:"noopener noreferrer"},m)))}var Vt=function(){return n.createElement("svg",{width:"20",height:"20",viewBox:"0 0 20 20"},n.createElement("path",{d:"M17 6v12c0 .52-.2 1-1 1H4c-.7 0-1-.33-1-1V2c0-.55.42-1 1-1h8l5 5zM14 8h-3.13c-.51 0-.87-.34-.87-.87V4",stroke:"currentColor",fill:"none",fillRule:"evenodd",strokeLinejoin:"round"}))};function $t(e){switch(e.type){case"lvl1":return n.createElement(Vt,null);case"content":return n.createElement(Gt,null);default:return n.createElement(zt,null)}}function zt(){return n.createElement("svg",{width:"20",height:"20",viewBox:"0 0 20 20"},n.createElement("path",{d:"M13 13h4-4V8H7v5h6v4-4H7V8H3h4V3v5h6V3v5h4-4v5zm-6 0v4-4H3h4z",stroke:"currentColor",fill:"none",fillRule:"evenodd",strokeLinecap:"round",strokeLinejoin:"round"}))}function Gt(){return n.createElement("svg",{width:"20",height:"20",viewBox:"0 0 20 20"},n.createElement("path",{d:"M17 5H3h14zm0 5H3h14zm0 5H3h14z",stroke:"currentColor",fill:"none",fillRule:"evenodd",strokeLinejoin:"round"}))}function Wt(){return n.createElement("svg",{className:"DocSearch-Hit-Select-Icon",width:"20",height:"20",viewBox:"0 0 20 20"},n.createElement("g",{stroke:"currentColor",fill:"none",fillRule:"evenodd",strokeLinecap:"round",strokeLinejoin:"round"},n.createElement("path",{d:"M18 3v4c0 2-2 4-4 4H2"}),n.createElement("path",{d:"M8 17l-6-6 6-6"})))}var Xt=["hit","attribute","tagName"];function Jt(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function Yt(e){for(var t=1;t=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}function er(e,t){return t.split(".").reduce((function(e,t){return null!=e&&e[t]?e[t]:null}),e)}function tr(e){var t=e.hit,r=e.attribute,o=e.tagName,i=void 0===o?"span":o,a=Zt(e,Xt);return(0,n.createElement)(i,Yt(Yt({},a),{},{dangerouslySetInnerHTML:{__html:er(t,"_snippetResult.".concat(r,".value"))||er(t,r)}}))}function rr(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null==r)return;var n,o,i=[],a=!0,c=!1;try{for(r=r.call(e);!(a=(n=r.next()).done)&&(i.push(n.value),!t||i.length!==t);a=!0);}catch(l){c=!0,o=l}finally{try{a||null==r.return||r.return()}finally{if(c)throw o}}return i}(e,t)||function(e,t){if(!e)return;if("string"==typeof e)return nr(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);"Object"===r&&e.constructor&&(r=e.constructor.name);if("Map"===r||"Set"===r)return Array.from(e);if("Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return nr(e,t)}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function nr(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r|<\/mark>)/g,lr=RegExp(cr.source);function ur(e){var t,r,n=e;if(!n.__docsearch_parent&&!e._highlightResult)return e.hierarchy.lvl0;var o=((n.__docsearch_parent?null===(t=n.__docsearch_parent)||void 0===t||null===(t=t._highlightResult)||void 0===t||null===(t=t.hierarchy)||void 0===t?void 0:t.lvl0:null===(r=e._highlightResult)||void 0===r||null===(r=r.hierarchy)||void 0===r?void 0:r.lvl0)||{}).value;return o&&lr.test(o)?o.replace(cr,""):o}function sr(){return sr=Object.assign||function(e){for(var t=1;t=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}function br(e){var t=e.translations,r=void 0===t?{}:t,o=yr(e,hr),i=r.recentSearchesTitle,a=void 0===i?"Recent":i,c=r.noRecentSearchesText,l=void 0===c?"No recent searches":c,u=r.saveRecentSearchButtonTitle,s=void 0===u?"Save this search":u,f=r.removeRecentSearchButtonTitle,m=void 0===f?"Remove this search from history":f,p=r.favoriteSearchesTitle,d=void 0===p?"Favorite":p,h=r.removeFavoriteSearchButtonTitle,v=void 0===h?"Remove this search from favorites":h;return"idle"===o.state.status&&!1===o.hasCollections?o.disableUserPersonalization?null:n.createElement("div",{className:"DocSearch-StartScreen"},n.createElement("p",{className:"DocSearch-Help"},l)):!1===o.hasCollections?null:n.createElement("div",{className:"DocSearch-Dropdown-Container"},n.createElement(ir,vr({},o,{title:a,collection:o.state.collections[0],renderIcon:function(){return n.createElement("div",{className:"DocSearch-Hit-icon"},n.createElement(mr,null))},renderAction:function(e){var t=e.item,r=e.runFavoriteTransition,i=e.runDeleteTransition;return n.createElement(n.Fragment,null,n.createElement("div",{className:"DocSearch-Hit-action"},n.createElement("button",{className:"DocSearch-Hit-action-button",title:s,type:"submit",onClick:function(e){e.preventDefault(),e.stopPropagation(),r((function(){o.favoriteSearches.add(t),o.recentSearches.remove(t),o.refresh()}))}},n.createElement(pr,null))),n.createElement("div",{className:"DocSearch-Hit-action"},n.createElement("button",{className:"DocSearch-Hit-action-button",title:m,type:"submit",onClick:function(e){e.preventDefault(),e.stopPropagation(),i((function(){o.recentSearches.remove(t),o.refresh()}))}},n.createElement(dr,null))))}})),n.createElement(ir,vr({},o,{title:d,collection:o.state.collections[1],renderIcon:function(){return n.createElement("div",{className:"DocSearch-Hit-icon"},n.createElement(pr,null))},renderAction:function(e){var t=e.item,r=e.runDeleteTransition;return n.createElement("div",{className:"DocSearch-Hit-action"},n.createElement("button",{className:"DocSearch-Hit-action-button",title:v,type:"submit",onClick:function(e){e.preventDefault(),e.stopPropagation(),r((function(){o.favoriteSearches.remove(t),o.refresh()}))}},n.createElement(dr,null)))}})))}var gr=["translations"];function Sr(){return Sr=Object.assign||function(e){for(var t=1;t=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}var Er=n.memo((function(e){var t=e.translations,r=void 0===t?{}:t,o=Or(e,gr);if("error"===o.state.status)return n.createElement(Ht,{translations:null==r?void 0:r.errorScreen});var i=o.state.collections.some((function(e){return e.items.length>0}));return o.state.query?!1===i?n.createElement(Kt,Sr({},o,{translations:null==r?void 0:r.noResultsScreen})):n.createElement(fr,o):n.createElement(br,Sr({},o,{hasCollections:i,translations:null==r?void 0:r.startScreen}))}),(function(e,t){return"loading"===t.state.status||"stalled"===t.state.status}));function wr(){return n.createElement("svg",{viewBox:"0 0 38 38",stroke:"currentColor",strokeOpacity:".5"},n.createElement("g",{fill:"none",fillRule:"evenodd"},n.createElement("g",{transform:"translate(1 1)",strokeWidth:"2"},n.createElement("circle",{strokeOpacity:".3",cx:"18",cy:"18",r:"18"}),n.createElement("path",{d:"M36 18c0-9.94-8.06-18-18-18"},n.createElement("animateTransform",{attributeName:"transform",type:"rotate",from:"0 18 18",to:"360 18 18",dur:"1s",repeatCount:"indefinite"})))))}var jr=["translations"];function Ir(){return Ir=Object.assign||function(e){for(var t=1;t=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}function Pr(e){var t=e.translations,r=void 0===t?{}:t,o=Dr(e,jr),i=r.resetButtonTitle,a=void 0===i?"Clear the query":i,c=r.resetButtonAriaLabel,l=void 0===c?"Clear the query":c,s=r.cancelButtonText,f=void 0===s?"Cancel":s,m=r.cancelButtonAriaLabel,p=void 0===m?"Cancel":m,d=r.searchInputLabel,h=void 0===d?"Search":d,v=o.getFormProps({inputElement:o.inputRef.current}).onReset;return n.useEffect((function(){o.autoFocus&&o.inputRef.current&&o.inputRef.current.focus()}),[o.autoFocus,o.inputRef]),n.useEffect((function(){o.isFromSelection&&o.inputRef.current&&o.inputRef.current.select()}),[o.isFromSelection,o.inputRef]),n.createElement(n.Fragment,null,n.createElement("form",{className:"DocSearch-Form",onSubmit:function(e){e.preventDefault()},onReset:v},n.createElement("label",Ir({className:"DocSearch-MagnifierLabel"},o.getLabelProps()),n.createElement(u,null),n.createElement("span",{className:"DocSearch-VisuallyHiddenForAccessibility"},h)),n.createElement("div",{className:"DocSearch-LoadingIndicator"},n.createElement(wr,null)),n.createElement("input",Ir({className:"DocSearch-Input",ref:o.inputRef},o.getInputProps({inputElement:o.inputRef.current,autoFocus:o.autoFocus,maxLength:_t}))),n.createElement("button",{type:"reset",title:a,className:"DocSearch-Reset","aria-label":l,hidden:!o.state.query},n.createElement(dr,null))),n.createElement("button",{className:"DocSearch-Cancel",type:"reset","aria-label":p,onClick:o.onClose},f))}var Tr=["_highlightResult","_snippetResult"];function Ar(e,t){if(null==e)return{};var r,n,o=function(e,t){if(null==e)return{};var r,n,o={},i=Object.keys(e);for(n=0;n=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}function Cr(e){return!1===function(){var e="__TEST_KEY__";try{return localStorage.setItem(e,""),localStorage.removeItem(e),!0}catch(t){return!1}}()?{setItem:function(){},getItem:function(){return[]}}:{setItem:function(t){return window.localStorage.setItem(e,JSON.stringify(t))},getItem:function(){var t=window.localStorage.getItem(e);return t?JSON.parse(t):[]}}}function _r(e){var t=e.key,r=e.limit,n=void 0===r?5:r,o=Cr(t),i=o.getItem().slice(0,n);return{add:function(e){var t=e,r=(t._highlightResult,t._snippetResult,Ar(t,Tr)),a=i.findIndex((function(e){return e.objectID===r.objectID}));a>-1&&i.splice(a,1),i.unshift(r),i=i.slice(0,n),o.setItem(i)},remove:function(e){i=i.filter((function(t){return t.objectID!==e.objectID})),o.setItem(i)},getAll:function(){return i}}}function Nr(e){const t=`algoliasearch-client-js-${e.key}`;let r;const n=()=>(void 0===r&&(r=e.localStorage||window.localStorage),r),o=()=>JSON.parse(n().getItem(t)||"{}"),i=e=>{n().setItem(t,JSON.stringify(e))};return{get(t,r,n={miss:()=>Promise.resolve()}){return Promise.resolve().then((()=>{(()=>{const t=e.timeToLive?1e3*e.timeToLive:null,r=o(),n=Object.fromEntries(Object.entries(r).filter((([,e])=>void 0!==e.timestamp)));if(i(n),!t)return;const a=Object.fromEntries(Object.entries(n).filter((([,e])=>{const r=(new Date).getTime();return!(e.timestamp+tPromise.all([e?e.value:r(),void 0!==e]))).then((([e,t])=>Promise.all([e,t||n.miss(e)]))).then((([e])=>e))},set(e,r){return Promise.resolve().then((()=>{const i=o();return i[JSON.stringify(e)]={timestamp:(new Date).getTime(),value:r},n().setItem(t,JSON.stringify(i)),r}))},delete(e){return Promise.resolve().then((()=>{const r=o();delete r[JSON.stringify(e)],n().setItem(t,JSON.stringify(r))}))},clear(){return Promise.resolve().then((()=>{n().removeItem(t)}))}}}function kr(e){const t=[...e.caches],r=t.shift();return void 0===r?{get(e,t,r={miss:()=>Promise.resolve()}){return t().then((e=>Promise.all([e,r.miss(e)]))).then((([e])=>e))},set(e,t){return Promise.resolve(t)},delete(e){return Promise.resolve()},clear(){return Promise.resolve()}}:{get(e,n,o={miss:()=>Promise.resolve()}){return r.get(e,n,o).catch((()=>kr({caches:t}).get(e,n,o)))},set(e,n){return r.set(e,n).catch((()=>kr({caches:t}).set(e,n)))},delete(e){return r.delete(e).catch((()=>kr({caches:t}).delete(e)))},clear(){return r.clear().catch((()=>kr({caches:t}).clear()))}}}function xr(e={serializable:!0}){let t={};return{get(r,n,o={miss:()=>Promise.resolve()}){const i=JSON.stringify(r);if(i in t)return Promise.resolve(e.serializable?JSON.parse(t[i]):t[i]);const a=n(),c=o&&o.miss||(()=>Promise.resolve());return a.then((e=>c(e))).then((()=>a))},set(r,n){return t[JSON.stringify(r)]=e.serializable?JSON.stringify(n):n,Promise.resolve(n)},delete(e){return delete t[JSON.stringify(e)],Promise.resolve()},clear(){return t={},Promise.resolve()}}}function Rr(e){let t=e.length-1;for(;t>0;t--){const r=Math.floor(Math.random()*(t+1)),n=e[t];e[t]=e[r],e[r]=n}return e}function Lr(e,t){return t?(Object.keys(t).forEach((r=>{e[r]=t[r](e)})),e):e}function Hr(e,...t){let r=0;return e.replace(/%s/g,(()=>encodeURIComponent(t[r++])))}const Mr="4.23.2",qr={WithinQueryParameters:0,WithinHeaders:1};function Ur(e,t){const r=e||{},n=r.data||{};return Object.keys(r).forEach((e=>{-1===["timeout","headers","queryParameters","data","cacheable"].indexOf(e)&&(n[e]=r[e])})),{data:Object.entries(n).length>0?n:void 0,timeout:r.timeout||t,headers:r.headers||{},queryParameters:r.queryParameters||{},cacheable:r.cacheable}}const Fr={Read:1,Write:2,Any:3},Br={Up:1,Down:2,Timeouted:3},Kr=12e4;function Vr(e,t=Br.Up){return{...e,status:t,lastUpdate:Date.now()}}function $r(e){return"string"==typeof e?{protocol:"https",url:e,accept:Fr.Any}:{protocol:e.protocol||"https",url:e.url,accept:e.accept||Fr.Any}}const zr={Delete:"DELETE",Get:"GET",Post:"POST",Put:"PUT"};function Gr(e,t){return Promise.all(t.map((t=>e.get(t,(()=>Promise.resolve(Vr(t))))))).then((e=>{const r=e.filter((e=>function(e){return e.status===Br.Up||Date.now()-e.lastUpdate>Kr}(e))),n=e.filter((e=>function(e){return e.status===Br.Timeouted&&Date.now()-e.lastUpdate<=Kr}(e))),o=[...r,...n],i=o.length>0?o.map((e=>$r(e))):t;return{getTimeout(e,t){return(0===n.length&&0===e?1:n.length+3+e)*t},statelessHosts:i}}))}const Wr=(e,t)=>(e=>{const t=e.status;return e.isTimedOut||(({isTimedOut:e,status:t})=>!e&&!~~t)(e)||2!=~~(t/100)&&4!=~~(t/100)})(e)?t.onRetry(e):(({status:e})=>2==~~(e/100))(e)?t.onSuccess(e):t.onFail(e);function Xr(e,t,r,n){const o=[],i=function(e,t){if(e.method===zr.Get||void 0===e.data&&void 0===t.data)return;const r=Array.isArray(e.data)?e.data:{...e.data,...t.data};return JSON.stringify(r)}(r,n),a=function(e,t){const r={...e.headers,...t.headers},n={};return Object.keys(r).forEach((e=>{const t=r[e];n[e.toLowerCase()]=t})),n}(e,n),c=r.method,l=r.method!==zr.Get?{}:{...r.data,...n.data},u={"x-algolia-agent":e.userAgent.value,...e.queryParameters,...l,...n.queryParameters};let s=0;const f=(t,l)=>{const m=t.pop();if(void 0===m)throw{name:"RetryError",message:"Unreachable hosts - your application id may be incorrect. If the error persists, contact support@algolia.com.",transporterStackTrace:Zr(o)};const p={data:i,headers:a,method:c,url:Yr(m,r.path,u),connectTimeout:l(s,e.timeouts.connect),responseTimeout:l(s,n.timeout)},d=e=>{const r={request:p,response:e,host:m,triesLeft:t.length};return o.push(r),r},h={onSuccess:e=>function(e){try{return JSON.parse(e.content)}catch(t){throw function(e,t){return{name:"DeserializationError",message:e,response:t}}(t.message,e)}}(e),onRetry(r){const n=d(r);return r.isTimedOut&&s++,Promise.all([e.logger.info("Retryable failure",en(n)),e.hostsCache.set(m,Vr(m,r.isTimedOut?Br.Timeouted:Br.Down))]).then((()=>f(t,l)))},onFail(e){throw d(e),function({content:e,status:t},r){let n=e;try{n=JSON.parse(e).message}catch(o){}return function(e,t,r){return{name:"ApiError",message:e,status:t,transporterStackTrace:r}}(n,t,r)}(e,Zr(o))}};return e.requester.send(p).then((e=>Wr(e,h)))};return Gr(e.hostsCache,t).then((e=>f([...e.statelessHosts].reverse(),e.getTimeout)))}function Jr(e){const t={value:`Algolia for JavaScript (${e})`,add(e){const r=`; ${e.segment}${void 0!==e.version?` (${e.version})`:""}`;return-1===t.value.indexOf(r)&&(t.value=`${t.value}${r}`),t}};return t}function Yr(e,t,r){const n=Qr(r);let o=`${e.protocol}://${e.url}/${"/"===t.charAt(0)?t.substr(1):t}`;return n.length&&(o+=`?${n}`),o}function Qr(e){return Object.keys(e).map((t=>{return Hr("%s=%s",t,(r=e[t],"[object Object]"===Object.prototype.toString.call(r)||"[object Array]"===Object.prototype.toString.call(r)?JSON.stringify(e[t]):e[t]));var r})).join("&")}function Zr(e){return e.map((e=>en(e)))}function en(e){const t=e.request.headers["x-algolia-api-key"]?{"x-algolia-api-key":"*****"}:{};return{...e,request:{...e.request,headers:{...e.request.headers,...t}}}}const tn=e=>{const t=e.appId,r=function(e,t,r){const n={"x-algolia-api-key":r,"x-algolia-application-id":t};return{headers(){return e===qr.WithinHeaders?n:{}},queryParameters(){return e===qr.WithinQueryParameters?n:{}}}}(void 0!==e.authMode?e.authMode:qr.WithinHeaders,t,e.apiKey),n=function(e){const{hostsCache:t,logger:r,requester:n,requestsCache:o,responsesCache:i,timeouts:a,userAgent:c,hosts:l,queryParameters:u,headers:s}=e,f={hostsCache:t,logger:r,requester:n,requestsCache:o,responsesCache:i,timeouts:a,userAgent:c,headers:s,queryParameters:u,hosts:l.map((e=>$r(e))),read(e,t){const r=Ur(t,f.timeouts.read),n=()=>Xr(f,f.hosts.filter((e=>!!(e.accept&Fr.Read))),e,r);if(!0!==(void 0!==r.cacheable?r.cacheable:e.cacheable))return n();const o={request:e,mappedRequestOptions:r,transporter:{queryParameters:f.queryParameters,headers:f.headers}};return f.responsesCache.get(o,(()=>f.requestsCache.get(o,(()=>f.requestsCache.set(o,n()).then((e=>Promise.all([f.requestsCache.delete(o),e])),(e=>Promise.all([f.requestsCache.delete(o),Promise.reject(e)]))).then((([e,t])=>t))))),{miss:e=>f.responsesCache.set(o,e)})},write(e,t){return Xr(f,f.hosts.filter((e=>!!(e.accept&Fr.Write))),e,Ur(t,f.timeouts.write))}};return f}({hosts:[{url:`${t}-dsn.algolia.net`,accept:Fr.Read},{url:`${t}.algolia.net`,accept:Fr.Write}].concat(Rr([{url:`${t}-1.algolianet.com`},{url:`${t}-2.algolianet.com`},{url:`${t}-3.algolianet.com`}])),...e,headers:{...r.headers(),"content-type":"application/x-www-form-urlencoded",...e.headers},queryParameters:{...r.queryParameters(),...e.queryParameters}}),o={transporter:n,appId:t,addAlgoliaAgent(e,t){n.userAgent.add({segment:e,version:t})},clearCache(){return Promise.all([n.requestsCache.clear(),n.responsesCache.clear()]).then((()=>{}))}};return Lr(o,e.methods)},rn=e=>(t,r)=>t.method===zr.Get?e.transporter.read(t,r):e.transporter.write(t,r),nn=e=>(t,r={})=>Lr({transporter:e.transporter,appId:e.appId,indexName:t},r.methods),on=e=>(t,r)=>{const n=t.map((e=>({...e,params:Qr(e.params||{})})));return e.transporter.read({method:zr.Post,path:"1/indexes/*/queries",data:{requests:n},cacheable:!0},r)},an=e=>(t,r)=>Promise.all(t.map((t=>{const{facetName:n,facetQuery:o,...i}=t.params;return nn(e)(t.indexName,{methods:{searchForFacetValues:un}}).searchForFacetValues(n,o,{...r,...i})}))),cn=e=>(t,r,n)=>e.transporter.read({method:zr.Post,path:Hr("1/answers/%s/prediction",e.indexName),data:{query:t,queryLanguages:r},cacheable:!0},n),ln=e=>(t,r)=>e.transporter.read({method:zr.Post,path:Hr("1/indexes/%s/query",e.indexName),data:{query:t},cacheable:!0},r),un=e=>(t,r,n)=>e.transporter.read({method:zr.Post,path:Hr("1/indexes/%s/facets/%s/query",e.indexName,t),data:{facetQuery:r},cacheable:!0},n),sn={Debug:1,Info:2,Error:3};const fn=e=>(t,r)=>{const n=t.map((e=>({...e,threshold:e.threshold||0})));return e.transporter.read({method:zr.Post,path:"1/indexes/*/recommendations",data:{requests:n},cacheable:!0},r)};function mn(e,t,r){const n={appId:e,apiKey:t,timeouts:{connect:1,read:2,write:30},requester:{send(e){return new Promise((t=>{const r=new XMLHttpRequest;r.open(e.method,e.url,!0),Object.keys(e.headers).forEach((t=>r.setRequestHeader(t,e.headers[t])));const n=(e,n)=>setTimeout((()=>{r.abort(),t({status:0,content:n,isTimedOut:!0})}),1e3*e),o=n(e.connectTimeout,"Connection timeout");let i;r.onreadystatechange=()=>{r.readyState>r.OPENED&&void 0===i&&(clearTimeout(o),i=n(e.responseTimeout,"Socket timeout"))},r.onerror=()=>{0===r.status&&(clearTimeout(o),clearTimeout(i),t({content:r.responseText||"Network request failed",status:r.status,isTimedOut:!1}))},r.onload=()=>{clearTimeout(o),clearTimeout(i),t({content:r.responseText,status:r.status,isTimedOut:!1})},r.send(e.data)}))}},logger:(o=sn.Error,{debug(e,t){return sn.Debug>=o&&console.debug(e,t),Promise.resolve()},info(e,t){return sn.Info>=o&&console.info(e,t),Promise.resolve()},error(e,t){return console.error(e,t),Promise.resolve()}}),responsesCache:xr(),requestsCache:xr({serializable:!1}),hostsCache:kr({caches:[Nr({key:`${Mr}-${e}`}),xr()]}),userAgent:Jr(Mr).add({segment:"Browser",version:"lite"}),authMode:qr.WithinQueryParameters};var o;return tn({...n,...r,methods:{search:on,searchForFacetValues:an,multipleQueries:on,multipleSearchForFacetValues:an,customRequest:rn,initIndex:e=>t=>nn(e)(t,{methods:{search:ln,searchForFacetValues:un,findAnswers:cn}}),getRecommendations:fn}})}mn.version=Mr;var pn=mn,dn="3.6.0";function hn(){}function vn(e){return e}function yn(e){return 1===e.button||e.altKey||e.ctrlKey||e.metaKey||e.shiftKey}function bn(e,t,r){return e.reduce((function(e,n){var o=t(n);return e.hasOwnProperty(o)||(e[o]=[]),e[o].length<(r||5)&&e[o].push(n),e}),{})}var gn=["footer","searchBox"];function Sn(){return Sn=Object.assign||function(e){for(var t=1;te.length)&&(t=e.length);for(var r=0,n=new Array(t);r=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}function Pn(e){var t=e.appId,r=e.apiKey,o=e.indexName,i=e.placeholder,a=void 0===i?"Search docs":i,c=e.searchParameters,l=e.maxResultsPerGroup,u=e.onClose,s=void 0===u?hn:u,f=e.transformItems,m=void 0===f?vn:f,p=e.hitComponent,d=void 0===p?Rt:p,h=e.resultsFooterComponent,v=void 0===h?function(){return null}:h,y=e.navigator,b=e.initialScrollY,g=void 0===b?0:b,S=e.transformSearchClient,O=void 0===S?vn:S,E=e.disableUserPersonalization,w=void 0!==E&&E,j=e.initialQuery,I=void 0===j?"":j,D=e.translations,P=void 0===D?{}:D,T=e.getMissingResultsUrl,A=e.insights,C=void 0!==A&&A,_=P.footer,N=P.searchBox,k=Dn(P,gn),x=jn(n.useState({query:"",collections:[],completion:null,context:{},isOpen:!1,activeItemId:null,status:"idle"}),2),R=x[0],L=x[1],H=n.useRef(null),M=n.useRef(null),q=n.useRef(null),U=n.useRef(null),F=n.useRef(null),B=n.useRef(10),K=n.useRef("undefined"!=typeof window?window.getSelection().toString().slice(0,_t):"").current,V=n.useRef(I||K).current,$=function(e,t,r){return n.useMemo((function(){var n=pn(e,t);return n.addAlgoliaAgent("docsearch",dn),!1===/docsearch.js \(.*\)/.test(n.transporter.userAgent.value)&&n.addAlgoliaAgent("docsearch-react",dn),r(n)}),[e,t,r])}(t,r,O),z=n.useRef(_r({key:"__DOCSEARCH_FAVORITE_SEARCHES__".concat(o),limit:10})).current,G=n.useRef(_r({key:"__DOCSEARCH_RECENT_SEARCHES__".concat(o),limit:0===z.getAll().length?7:4})).current,W=n.useCallback((function(e){if(!w){var t="content"===e.type?e.__docsearch_parent:e;t&&-1===z.getAll().findIndex((function(e){return e.objectID===t.objectID}))&&G.add(t)}}),[z,G,w]),X=n.useCallback((function(e){if(R.context.algoliaInsightsPlugin&&e.__autocomplete_id){var t=e,r={eventName:"Item Selected",index:t.__autocomplete_indexName,items:[t],positions:[e.__autocomplete_id],queryID:t.__autocomplete_queryID};R.context.algoliaInsightsPlugin.insights.clickedObjectIDsAfterSearch(r)}}),[R.context.algoliaInsightsPlugin]),J=n.useMemo((function(){return Ct({id:"docsearch",defaultActiveItemId:0,placeholder:a,openOnFocus:!0,initialState:{query:V,context:{searchSuggestions:[]}},insights:C,navigator:y,onStateChange:function(e){L(e.state)},getSources:function(e){var n=e.query,i=e.state,a=e.setContext,u=e.setStatus;if(!n)return w?[]:[{sourceId:"recentSearches",onSelect:function(e){var t=e.item,r=e.event;W(t),yn(r)||s()},getItemUrl:function(e){return e.item.url},getItems:function(){return G.getAll()}},{sourceId:"favoriteSearches",onSelect:function(e){var t=e.item,r=e.event;W(t),yn(r)||s()},getItemUrl:function(e){return e.item.url},getItems:function(){return z.getAll()}}];var f=Boolean(C);return $.search([{query:n,indexName:o,params:En({attributesToRetrieve:["hierarchy.lvl0","hierarchy.lvl1","hierarchy.lvl2","hierarchy.lvl3","hierarchy.lvl4","hierarchy.lvl5","hierarchy.lvl6","content","type","url"],attributesToSnippet:["hierarchy.lvl1:".concat(B.current),"hierarchy.lvl2:".concat(B.current),"hierarchy.lvl3:".concat(B.current),"hierarchy.lvl4:".concat(B.current),"hierarchy.lvl5:".concat(B.current),"hierarchy.lvl6:".concat(B.current),"content:".concat(B.current)],snippetEllipsisText:"…",highlightPreTag:"",highlightPostTag:"",hitsPerPage:20,clickAnalytics:f},c)}]).catch((function(e){throw"RetryError"===e.name&&u("error"),e})).then((function(e){var n=e.results[0],c=n.hits,u=n.nbHits,p=bn(c,(function(e){return ur(e)}),l);i.context.searchSuggestions.length0&&(Z(),F.current&&F.current.focus())}),[V,Z]),n.useEffect((function(){function e(){if(M.current){var e=.01*window.innerHeight;M.current.style.setProperty("--docsearch-vh","".concat(e,"px"))}}return e(),window.addEventListener("resize",e),function(){window.removeEventListener("resize",e)}}),[]),n.createElement("div",Sn({ref:H},Q({"aria-expanded":!0}),{className:["DocSearch","DocSearch-Container","stalled"===R.status&&"DocSearch-Container--Stalled","error"===R.status&&"DocSearch-Container--Errored"].filter(Boolean).join(" "),role:"button",tabIndex:0,onMouseDown:function(e){e.target===e.currentTarget&&s()}}),n.createElement("div",{className:"DocSearch-Modal",ref:M},n.createElement("header",{className:"DocSearch-SearchBar",ref:q},n.createElement(Pr,Sn({},J,{state:R,autoFocus:0===V.length,inputRef:F,isFromSelection:Boolean(V)&&V===K,translations:N,onClose:s}))),n.createElement("div",{className:"DocSearch-Dropdown",ref:U},n.createElement(Er,Sn({},J,{indexName:o,state:R,hitComponent:d,resultsFooterComponent:v,disableUserPersonalization:w,recentSearches:G,favoriteSearches:z,inputRef:F,translations:k,getMissingResultsUrl:T,onItemClick:function(e,t){X(e),W(e),yn(t)||s()}}))),n.createElement("footer",{className:"DocSearch-Footer"},n.createElement(xt,{translations:_}))))}function Tn(){return Tn=Object.assign||function(e){for(var t=1;te.length)&&(t=e.length);for(var r=0,n=new Array(t);r svg{","}}.DocSearch-Title{color:",";margin-bottom:",";font-size:",";}.DocSearch-Help a{",";",";}.DocSearch-Dropdown{overflow-y:auto;overflow-x:hidden;flex:1 1 0;}.DocSearch-Help{font-size:",";margin:0;user-select:none;}.DocSearch-Hits mark{",";}.DocSearch-HitsFooter{color:",";font-size:",";display:flex;justify-content:center;}.DocSearch-HitsFooter a{padding-top:",";margin-bottom:",";border-bottom:"," solid;color:inherit;display:inline-flex;}.DocSearch-Hit{padding-bottom:",";border-radius:",";display:flex;position:relative;}@media screen and (prefers-reduced-motion:reduce){.DocSearch-Hit--deleting{transition:none;}}.DocSearch-Hit--deleting{opacity:0;transition:all 250ms linear;}@media screen and (prefers-reduced-motion:reduce){.DocSearch-Hit--favoriting{transition:none;}}.DocSearch-Hit--favoriting{transform:scale(0);transform-origin:top center;transition:all 250ms linear;transition-delay:250ms;}.DocSearch-Hit a{",";outline-offset:-",";background-color:",";padding-left:",";border-radius:",";display:block;width:100%;}.DocSearch-Hit-source{background-color:",";color:",";margin:0 -",";padding:"," "," 0;font-size:",";font-weight:",";line-height:3.2rem;position:sticky;top:0;z-index:10;}.DocSearch-Hit-Tree{","{display:none;}","{color:",";height:",";opacity:0.5;stroke-width:",";width:",";}}.DocSearch-Hit[aria-selected='true'] a{position:relative;display:block;&:before,&:after{content:'';position:absolute;pointer-events:none;top:0;bottom:0;left:0;",";}&:before{width:0.4rem;}&:after{border-radius:",";right:0;opacity:0.07;}}.DocSearch-Hit-Container{color:",";height:",";padding:0 "," 0 0;align-items:center;display:flex;flex-direction:row;}.DocSearch-Hit-icon{"," color:",";stroke-width:",";}.DocSearch-Hit-action{",";color:",";stroke-width:",";align-items:center;display:flex;> svg{",";display:block;}}.DocSearch-Hit-action + .DocSearch-Hit-action{margin-left:",";}.DocSearch-Hit-action-button{",";color:inherit;padding:",";}svg.DocSearch-Hit-Select-Icon{display:none;}.DocSearch-Hit[aria-selected='true'] .DocSearch-Hit-Select-Icon{display:block;}.DocSearch-Hit-action-button:hover path,.DocSearch-Hit-action-button:focus path{fill:",";}.DocSearch-Hit-content-wrapper{display:flex;flex:1 1 auto;flex-direction:column;font-weight:",";justify-content:center;line-height:1.2em;margin:0 ",";overflow-x:hidden;position:relative;text-overflow:ellipsis;white-space:nowrap;width:80%;}.DocSearch-Hit-title{font-size:",";}.DocSearch-Hit-path{color:",";font-size:",";}.DocSearch-Hit[aria-selected='true'] .DocSearch-Hit-title,.DocSearch-Hit[aria-selected='true'] mark,.DocSearch-Hit[aria-selected='true'] .DocSearch-Hit-text,.DocSearch-Hit[aria-selected='true'] .DocSearch-Hit-path,.DocSearch-Hit[aria-selected='true'] .DocSearch-Hit-icon,.DocSearch-Hit[aria-selected='true'] .DocSearch-Hit-action,.DocSearch-Hit[aria-selected='true'] .DocSearch-Hit-Tree{color:"," !important;}.DocSearch-NoResults-Prefill-List{padding-bottom:",";> ul{padding-top:",";font-size:",";display:inline-block;}li{color:",";list-style-position:inside;list-style-type:'» ';text-align:left;}}.DocSearch-Prefill{",";",";padding-top:",";padding-bottom:",";}"],Bn.lm.TEXT_LOW_CONTRAST,Fn.F.SIX,Kn.$.COMPLEMENTARY,Bn.lm.DETAIL_HIGH_CONTRAST,eo,(0,xn.P)("4rem"),Bn.lm.TEXT_HIGH_CONTRAST,Fn.F.THREE,Kn.$.H4,kn.y,$n.y,Kn.$.COMPLEMENTARY,Rn.y,Bn.lm.TEXT_LOW_CONTRAST,Kn.$.COMPLEMENTARY,eo,eo,Vn.C.DETAIL,Fn.F.CUSTOM((e=>{let{ONE:t}=e;return t-.2})),Vn.Y.BOX,$n.y,Vn.C.OUTLINE,Bn.lm.BACKGROUND_CODE,eo,Vn.Y.BOX,Bn.lm.BACKGROUND_SITE,Bn.lm.TEXT_HIGH_CONTRAST,Fn.F.CUSTOM((e=>{let{ONE:t}=e;return t-.2})),Fn.F.CUSTOM((e=>{let{ONE:t}=e;return t+.2})),Fn.F.CUSTOM((e=>{let{ONE:t}=e;return t-.2})),Kn.$.COMPLEMENTARY,Kn.s.SEMI_BOLD,qn.Rn.COMPACT,qn.Rn.DESKTOP,Bn.lm.DETAIL_HIGH_CONTRAST,Yn,Jn,Fn.F.FOUR,Rn.J,Vn.Y.BOX,Bn.lm.TEXT_MEDIUM_CONTRAST,Yn,eo,(0,xn.P)("2rem"),Bn.lm.DETAIL_HIGH_CONTRAST,Jn,(0,xn.P)("2.2rem"),Bn.lm.DETAIL_HIGH_CONTRAST,Jn,(0,xn.P)("1.8rem"),Fn.F.ONE,Nn.jq,Fn.F.CUSTOM((e=>{let{ONE:t}=e;return t-.4})),Bn.lm.TEXT_MEDIUM_CONTRAST,Kn.s.MEDIUM,Fn.F.CUSTOM((e=>{let{ONE:t}=e;return t+.2})),Kn.$.CUSTOM((e=>{let{COMPLEMENTARY:t}=e;return t+.04})),Bn.lm.TEXT_LOW_CONTRAST,Kn.$.DETAIL,Bn.lm.TEXT_HIGH_CONTRAST,Fn.F.THREE,Fn.F.ONE,Kn.$.COMPLEMENTARY,Bn.lm.TEXT_HIGH_CONTRAST,Nn.jq,kn.y,Fn.F.ONE,Fn.F.ONE),oo=(0,o.css)([".DocSearch-Footer{flex:0 0 auto;padding-top:",";display:flex;flex-direction:row-reverse;flex-shrink:0;width:100%;justify-content:space-between;align-items:center;}.DocSearch-Logo a{",";display:flex;}.DocSearch-Logo svg{color:#5468ff;margin-left:",";}.DocSearch-Label{color:",";font-size:",";line-height:1.9rem;}.DocSearch-Commands{color:",";display:flex;list-style:none;margin:0;padding:0;","{display:none;}}.DocSearch-Commands li{align-items:center;display:flex;}.DocSearch-Commands li:not(:last-of-type){margin-right:",";;}.DocSearch-Commands-Key{align-items:center;border-radius:",";background:linear-gradient( -225deg,"," 0%,"," 100% );box-shadow:inset 0 -0.2rem 0 0 ",";,inset 0 0 0.1rem 0.1rem ",",0 0.1rem 0.2rem 0.1rem rgba(",",0.4);display:flex;height:1.8rem;justify-content:center;margin-right:0.4em;padding-bottom:0.1rem;width:2rem;}.","","{.DocSearch-Commands-Key{background:linear-gradient( -225deg,"," 0%,"," 100% );box-shadow:inset 0 -0.2rem 0 0 ",",inset 0 0 0.1rem 0.1rem ",",0 0.1rem 0.2rem 0.1rem rgba(",",0.4);}}.","","{.DocSearch-Commands-Key{background:linear-gradient( -225deg,"," 0%,"," 100% );box-shadow:inset 0 -0.2rem 0 0 ",";,inset 0 0 0.1rem 0.1rem ",",0 0.1rem 0.2rem 0.1rem rgba(",",0.4);}}"],eo,$n.y,Fn.F.CUSTOM((e=>{let{ONE:t}=e;return t+.2})),Bn.lm.TEXT_LOW_CONTRAST,Kn.$.DETAIL,Bn.lm.TEXT_LOW_CONTRAST,qn.Rn.COMPACT,Fn.F.CUSTOM((e=>{let{ONE:t}=e;return t+.2})),Vn.Y.LINE,Bn.lm.DETAIL_MEDIUM_CONTRAST,Bn.lm.DETAIL_HIGH_CONTRAST,Bn.lm.DETAIL_LOW_CONTRAST,Bn.lm.DETAIL_MEDIUM_CONTRAST,Bn.lm.DETAIL_HIGH_CONTRAST_RGB_VALUE,Bn.tv,Bn.$.LIGHT,Bn.lm.DETAIL_HIGH_CONTRAST,Bn.lm.DETAIL_MEDIUM_CONTRAST,Bn.lm.DETAIL_HIGH_CONTRAST,Bn.lm.DETAIL_MEDIUM_CONTRAST,Bn.lm.DETAIL_LOW_CONTRAST_RGB_VALUE,Bn.tv,Bn.$.DARK,Bn.lm.DETAIL_MEDIUM_CONTRAST,Bn.lm.DETAIL_HIGH_CONTRAST,Bn.lm.DETAIL_LOW_CONTRAST,Bn.lm.DETAIL_MEDIUM_CONTRAST,Bn.lm.DETAIL_HIGH_CONTRAST_RGB_VALUE),io=(0,o.css)([".DocSearch-Input{",";",";height:calc("," - ("," * 2));padding-left:",";padding-right:",";-webkit-appearance:none;appearance:none;border-radius:",";width:100%;font-size:",";background-color:",";color:",";border:0;}.DocSearch-Input::-ms-clear{display:none;",";}.DocSearch-Input::-ms-reveal{display:none;",";}.DocSearch-Input::-webkit-search-decoration,.DocSearch-Input::-webkit-search-cancel-button,.DocSearch-Input::-webkit-search-results-button,.DocSearch-Input::-webkit-search-results-decoration{display:none;}.DocSearch-VisuallyHiddenForAccessibility{",";}"],(ao=Bn.lm.TEXT_LOW_CONTRAST,(0,o.css)(["::-webkit-input-placeholder{color:",";}:-moz-placeholder{color:",";opacity:1;}::-moz-placeholder{color:",";opacity:1;}:-ms-input-placeholder{color:",";}::-ms-input-placeholder{color:",";}::placeholder{color:",";}"],ao,ao,ao,ao,ao,ao)),$n.y,Yn,Xn,Qn,Qn,Vn.Y.BOX,Kn.$.H4,Bn.lm.BACKGROUND_SITE,Bn.lm.TEXT_BODY,(0,xn.P)("0"),(0,xn.P)("0"),Ln.O);var ao;const co=(0,o.css)([".DocSearch-Button{",";&:hover{box-shadow:none;}}.DocSearch-Button-Placeholder,.DocSearch-Button-Keys{","}.DocSearch-Search-Icon{",";}"],Wn.PQ,Ln.O,Wn.aT),lo=(0,o.css)([".DocSearch-MagnifierLabel{display:flex;width:",";top:",";bottom:",";position:absolute;align-items:center;justify-content:center;> svg{",";}}.DocSearch-Container--Stalled .DocSearch-MagnifierLabel{display:none;}"],Qn,Xn,Xn,(0,xn.P)("2.35rem")),uo=(0,o.css)([".DocSearch-Reset{",";width:",";top:",";bottom:",";right:",";display:flex;position:absolute;align-items:center;justify-content:center;stroke-width:0.2rem;color:",";> svg{",";}}.DocSearch-Reset[hidden]{display:none;}"],Nn.jq,Qn,Xn,Xn,Xn,Bn.lm.TEXT_HIGH_CONTRAST,(0,xn.P)("2.35rem")),so=(0,o.css)([".DocSearch-Cancel{",";color:",";height:",";display:flex;align-items:center;margin-left:",";}"],Nn.jq,Bn.lm.TEXT_BODY,Yn,Fn.F.CUSTOM((e=>{let{TWO:t}=e;return t-.2}))),fo=(0,o.css)([".DocSearch-LoadingIndicator{width:",";top:",";bottom:",";position:absolute;align-items:center;justify-content:center;color:",";display:none;> svg{",";}}.DocSearch-Container--Stalled .DocSearch-LoadingIndicator{display:flex;}"],Qn,Xn,Xn,Bn.lm.TEXT_HIGH_CONTRAST,(0,xn.P)("2.35rem")),mo=(0,o.createGlobalStyle)(["",";",";",";",";",";",";",";",";",";",";"],to,ro,no,oo,io,co,lo,uo,so,fo),po=()=>{const e=(0,i.GV)(a.U$),t=(0,i.GV)((0,Gn.s4)(Mn.l.SITE_SEARCH)),r=(0,n.useRef)(t),o=(0,n.useRef)(),c=(0,n.useRef)(null),l=(0,i.jL)(),u=(0,n.useCallback)((()=>{l((0,Gn.WI)(Mn.l.SITE_SEARCH))}),[l]),s=(0,n.useCallback)((()=>{l((0,Gn.q6)(Mn.l.SITE_SEARCH))}),[l]);return(0,n.useEffect)((()=>{if(zn.B&&!c.current)return c.current=document.querySelector("."+Hn.D.SEARCH_TOGGLE_BUTTON),c.current&&c.current.addEventListener("click",u),()=>{c.current&&c.current.removeEventListener("click",u)}}),[u]),(0,n.useEffect)((()=>{c.current&&r.current&&c.current.click()}),[]),(0,n.useEffect)((()=>{if(!zn.B)return;const{body:e}=document,t=new MutationObserver((t=>{t.forEach((t=>{if("attributes"!==t.type)return;var r;if(!e.classList.contains(Hn.D.SEARCH_ACTIVE))return void(null===(r=o.current)||void 0===r||r.call(o));const n=e.querySelector("."+Hn.D.SEARCH_INPUT);n&&setTimeout((()=>n.focus()),0)}))}));return t.observe(e,{attributes:!0,childList:!1,subtree:!1}),()=>t.disconnect()}),[]),(0,n.useEffect)((()=>{o.current=s}),[s]),n.createElement(n.Fragment,null,n.createElement(mo,{$isKeyNavigating:e}),n.createElement(_n,{appId:Hn.g.APP_ID,indexName:Hn.g.INDEX_NAME,apiKey:Hn.g.API_KEY}))}}}]); +//# sourceMappingURL=2445-520d15ac197a112a3ec1.js.map \ No newline at end of file diff --git a/docs/2445-520d15ac197a112a3ec1.js.map b/docs/2445-520d15ac197a112a3ec1.js.map new file mode 100644 index 000000000..91d4fdcc9 --- /dev/null +++ b/docs/2445-520d15ac197a112a3ec1.js.map @@ -0,0 +1 @@ +{"version":3,"file":"2445-520d15ac197a112a3ec1.js","mappings":"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","sources":["webpack://embla-carousel-docs/../../node_modules/@docsearch/react/dist/esm/icons/ControlKeyIcon.js","webpack://embla-carousel-docs/../../node_modules/@docsearch/react/dist/esm/icons/SearchIcon.js","webpack://embla-carousel-docs/../../node_modules/@docsearch/react/dist/esm/DocSearchButton.js","webpack://embla-carousel-docs/../../node_modules/@algolia/autocomplete-shared/dist/esm/debounce.js","webpack://embla-carousel-docs/../../node_modules/@algolia/autocomplete-shared/dist/esm/isEqual.js","webpack://embla-carousel-docs/../../node_modules/@algolia/autocomplete-shared/dist/esm/noop.js","webpack://embla-carousel-docs/../../node_modules/@algolia/autocomplete-plugin-algolia-insights/dist/esm/createClickedEvent.js","webpack://embla-carousel-docs/../../node_modules/@algolia/autocomplete-plugin-algolia-insights/dist/esm/isModernInsightsClient.js","webpack://embla-carousel-docs/../../node_modules/@algolia/autocomplete-plugin-algolia-insights/dist/esm/createSearchInsightsApi.js","webpack://embla-carousel-docs/../../node_modules/@algolia/autocomplete-plugin-algolia-insights/dist/esm/createViewedEvents.js","webpack://embla-carousel-docs/../../node_modules/@algolia/autocomplete-plugin-algolia-insights/dist/esm/isAlgoliaInsightsHit.js","webpack://embla-carousel-docs/../../node_modules/@algolia/autocomplete-plugin-algolia-insights/dist/esm/createAlgoliaInsightsPlugin.js","webpack://embla-carousel-docs/../../node_modules/@algolia/autocomplete-shared/dist/esm/safelyRunOnBrowser.js","webpack://embla-carousel-docs/../../node_modules/@algolia/autocomplete-shared/dist/esm/createRef.js","webpack://embla-carousel-docs/../../node_modules/@algolia/autocomplete-core/dist/esm/createStore.js","webpack://embla-carousel-docs/../../node_modules/@algolia/autocomplete-core/dist/esm/utils/createCancelablePromiseList.js","webpack://embla-carousel-docs/../../node_modules/@algolia/autocomplete-shared/dist/esm/flatten.js","webpack://embla-carousel-docs/../../node_modules/@algolia/autocomplete-core/dist/esm/getAutocompleteSetters.js","webpack://embla-carousel-docs/../../node_modules/@algolia/autocomplete-shared/dist/esm/getItemsCount.js","webpack://embla-carousel-docs/../../node_modules/@algolia/autocomplete-shared/dist/esm/generateAutocompleteId.js","webpack://embla-carousel-docs/../../node_modules/@algolia/autocomplete-core/dist/esm/utils/getNormalizedSources.js","webpack://embla-carousel-docs/../../node_modules/@algolia/autocomplete-core/dist/esm/getDefaultProps.js","webpack://embla-carousel-docs/../../node_modules/@algolia/autocomplete-core/dist/esm/reshape.js","webpack://embla-carousel-docs/../../node_modules/@algolia/autocomplete-core/dist/esm/resolve.js","webpack://embla-carousel-docs/../../node_modules/@algolia/autocomplete-core/dist/esm/utils/mapToAlgoliaResponse.js","webpack://embla-carousel-docs/../../node_modules/@algolia/autocomplete-core/dist/esm/utils/createCancelablePromise.js","webpack://embla-carousel-docs/../../node_modules/@algolia/autocomplete-core/dist/esm/utils/getActiveItem.js","webpack://embla-carousel-docs/../../node_modules/@algolia/autocomplete-core/dist/esm/onInput.js","webpack://embla-carousel-docs/../../node_modules/@algolia/autocomplete-core/dist/esm/utils/createConcurrentSafePromise.js","webpack://embla-carousel-docs/../../node_modules/@algolia/autocomplete-core/dist/esm/onKeyDown.js","webpack://embla-carousel-docs/../../node_modules/@algolia/autocomplete-core/dist/esm/utils/isSamsung.js","webpack://embla-carousel-docs/../../node_modules/@algolia/autocomplete-core/dist/esm/getPropGetters.js","webpack://embla-carousel-docs/../../node_modules/@algolia/autocomplete-core/dist/esm/utils/isOrContainsNode.js","webpack://embla-carousel-docs/../../node_modules/@algolia/autocomplete-shared/dist/esm/version.js","webpack://embla-carousel-docs/../../node_modules/@algolia/autocomplete-shared/dist/esm/userAgents.js","webpack://embla-carousel-docs/../../node_modules/@algolia/autocomplete-core/dist/esm/metadata.js","webpack://embla-carousel-docs/../../node_modules/@algolia/autocomplete-core/dist/esm/getCompletion.js","webpack://embla-carousel-docs/../../node_modules/@algolia/autocomplete-core/dist/esm/utils/getNextActiveItemId.js","webpack://embla-carousel-docs/../../node_modules/@algolia/autocomplete-core/dist/esm/stateReducer.js","webpack://embla-carousel-docs/../../node_modules/@algolia/autocomplete-core/dist/esm/createAutocomplete.js","webpack://embla-carousel-docs/../../node_modules/@docsearch/react/dist/esm/constants.js","webpack://embla-carousel-docs/../../node_modules/@docsearch/react/dist/esm/AlgoliaLogo.js","webpack://embla-carousel-docs/../../node_modules/@docsearch/react/dist/esm/Footer.js","webpack://embla-carousel-docs/../../node_modules/@docsearch/react/dist/esm/Hit.js","webpack://embla-carousel-docs/../../node_modules/@docsearch/react/dist/esm/icons/ErrorIcon.js","webpack://embla-carousel-docs/../../node_modules/@docsearch/react/dist/esm/ErrorScreen.js","webpack://embla-carousel-docs/../../node_modules/@docsearch/react/dist/esm/icons/NoResultsIcon.js","webpack://embla-carousel-docs/../../node_modules/@docsearch/react/dist/esm/NoResultsScreen.js","webpack://embla-carousel-docs/../../node_modules/@docsearch/react/dist/esm/icons/SourceIcon.js","webpack://embla-carousel-docs/../../node_modules/@docsearch/react/dist/esm/icons/SelectIcon.js","webpack://embla-carousel-docs/../../node_modules/@docsearch/react/dist/esm/Snippet.js","webpack://embla-carousel-docs/../../node_modules/@docsearch/react/dist/esm/Results.js","webpack://embla-carousel-docs/../../node_modules/@docsearch/react/dist/esm/utils/removeHighlightTags.js","webpack://embla-carousel-docs/../../node_modules/@docsearch/react/dist/esm/ResultsScreen.js","webpack://embla-carousel-docs/../../node_modules/@docsearch/react/dist/esm/icons/RecentIcon.js","webpack://embla-carousel-docs/../../node_modules/@docsearch/react/dist/esm/icons/StarIcon.js","webpack://embla-carousel-docs/../../node_modules/@docsearch/react/dist/esm/icons/ResetIcon.js","webpack://embla-carousel-docs/../../node_modules/@docsearch/react/dist/esm/StartScreen.js","webpack://embla-carousel-docs/../../node_modules/@docsearch/react/dist/esm/ScreenState.js","webpack://embla-carousel-docs/../../node_modules/@docsearch/react/dist/esm/icons/LoadingIcon.js","webpack://embla-carousel-docs/../../node_modules/@docsearch/react/dist/esm/SearchBox.js","webpack://embla-carousel-docs/../../node_modules/@docsearch/react/dist/esm/stored-searches.js","webpack://embla-carousel-docs/../../node_modules/algoliasearch/dist/algoliasearch-lite.esm.browser.js","webpack://embla-carousel-docs/../../node_modules/@docsearch/react/dist/esm/version.js","webpack://embla-carousel-docs/../../node_modules/@docsearch/react/dist/esm/utils/noop.js","webpack://embla-carousel-docs/../../node_modules/@docsearch/react/dist/esm/utils/identity.js","webpack://embla-carousel-docs/../../node_modules/@docsearch/react/dist/esm/utils/isModifierEvent.js","webpack://embla-carousel-docs/../../node_modules/@docsearch/react/dist/esm/utils/groupBy.js","webpack://embla-carousel-docs/../../node_modules/@docsearch/react/dist/esm/DocSearchModal.js","webpack://embla-carousel-docs/../../node_modules/@docsearch/react/dist/esm/useSearchClient.js","webpack://embla-carousel-docs/../../node_modules/@docsearch/react/dist/esm/useTouchEvents.js","webpack://embla-carousel-docs/../../node_modules/@docsearch/react/dist/esm/useTrapFocus.js","webpack://embla-carousel-docs/../../node_modules/@docsearch/react/dist/esm/DocSearch.js","webpack://embla-carousel-docs/../../node_modules/@docsearch/react/dist/esm/useDocSearchKeyboardEvents.js","webpack://embla-carousel-docs/./src/components/Search/SearchAlgolia.tsx","webpack://embla-carousel-docs/./src/utils/createPlaceholderStyles.ts"],"sourcesContent":["import React from 'react';\nexport function ControlKeyIcon() {\n return /*#__PURE__*/React.createElement(\"svg\", {\n width: \"15\",\n height: \"15\",\n className: \"DocSearch-Control-Key-Icon\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M4.505 4.496h2M5.505 5.496v5M8.216 4.496l.055 5.993M10 7.5c.333.333.5.667.5 1v2M12.326 4.5v5.996M8.384 4.496c1.674 0 2.116 0 2.116 1.5s-.442 1.5-2.116 1.5M3.205 9.303c-.09.448-.277 1.21-1.241 1.203C1 10.5.5 9.513.5 8V7c0-1.57.5-2.5 1.464-2.494.964.006 1.134.598 1.24 1.342M12.553 10.5h1.953\",\n strokeWidth: \"1.2\",\n stroke: \"currentColor\",\n fill: \"none\",\n strokeLinecap: \"square\"\n }));\n}","import React from 'react';\nexport function SearchIcon() {\n return /*#__PURE__*/React.createElement(\"svg\", {\n width: \"20\",\n height: \"20\",\n className: \"DocSearch-Search-Icon\",\n viewBox: \"0 0 20 20\",\n \"aria-hidden\": \"true\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M14.386 14.386l4.0877 4.0877-4.0877-4.0877c-2.9418 2.9419-7.7115 2.9419-10.6533 0-2.9419-2.9418-2.9419-7.7115 0-10.6533 2.9418-2.9419 7.7115-2.9419 10.6533 0 2.9419 2.9418 2.9419 7.7115 0 10.6533z\",\n stroke: \"currentColor\",\n fill: \"none\",\n fillRule: \"evenodd\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n }));\n}","var _excluded = [\"translations\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\n\nfunction _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport React, { useEffect, useState } from 'react';\nimport { ControlKeyIcon } from './icons/ControlKeyIcon';\nimport { SearchIcon } from './icons/SearchIcon';\nvar ACTION_KEY_DEFAULT = 'Ctrl';\nvar ACTION_KEY_APPLE = '⌘';\n\nfunction isAppleDevice() {\n return /(Mac|iPhone|iPod|iPad)/i.test(navigator.platform);\n}\n\nexport var DocSearchButton = React.forwardRef(function (_ref, ref) {\n var _ref$translations = _ref.translations,\n translations = _ref$translations === void 0 ? {} : _ref$translations,\n props = _objectWithoutProperties(_ref, _excluded);\n\n var _translations$buttonT = translations.buttonText,\n buttonText = _translations$buttonT === void 0 ? 'Search' : _translations$buttonT,\n _translations$buttonA = translations.buttonAriaLabel,\n buttonAriaLabel = _translations$buttonA === void 0 ? 'Search' : _translations$buttonA;\n\n var _useState = useState(null),\n _useState2 = _slicedToArray(_useState, 2),\n key = _useState2[0],\n setKey = _useState2[1];\n\n useEffect(function () {\n if (typeof navigator !== 'undefined') {\n isAppleDevice() ? setKey(ACTION_KEY_APPLE) : setKey(ACTION_KEY_DEFAULT);\n }\n }, []);\n return /*#__PURE__*/React.createElement(\"button\", _extends({\n type: \"button\",\n className: \"DocSearch DocSearch-Button\",\n \"aria-label\": buttonAriaLabel\n }, props, {\n ref: ref\n }), /*#__PURE__*/React.createElement(\"span\", {\n className: \"DocSearch-Button-Container\"\n }, /*#__PURE__*/React.createElement(SearchIcon, null), /*#__PURE__*/React.createElement(\"span\", {\n className: \"DocSearch-Button-Placeholder\"\n }, buttonText)), /*#__PURE__*/React.createElement(\"span\", {\n className: \"DocSearch-Button-Keys\"\n }, key !== null && /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(DocSearchButtonKey, {\n reactsToKey: key === ACTION_KEY_DEFAULT ? ACTION_KEY_DEFAULT : 'Meta'\n }, key === ACTION_KEY_DEFAULT ? /*#__PURE__*/React.createElement(ControlKeyIcon, null) : key), /*#__PURE__*/React.createElement(DocSearchButtonKey, {\n reactsToKey: \"k\"\n }, \"K\"))));\n});\n\nfunction DocSearchButtonKey(_ref2) {\n var reactsToKey = _ref2.reactsToKey,\n children = _ref2.children;\n\n var _useState3 = useState(false),\n _useState4 = _slicedToArray(_useState3, 2),\n isKeyDown = _useState4[0],\n setIsKeyDown = _useState4[1];\n\n useEffect(function () {\n if (!reactsToKey) {\n return undefined;\n }\n\n function handleKeyDown(e) {\n if (e.key === reactsToKey) {\n setIsKeyDown(true);\n }\n }\n\n function handleKeyUp(e) {\n if (e.key === reactsToKey || // keyup doesn't fire when Command is held down,\n // workaround is to mark key as also released when Command is released\n // See https://stackoverflow.com/a/73419500\n e.key === 'Meta') {\n setIsKeyDown(false);\n }\n }\n\n window.addEventListener('keydown', handleKeyDown);\n window.addEventListener('keyup', handleKeyUp);\n return function () {\n window.removeEventListener('keydown', handleKeyDown);\n window.removeEventListener('keyup', handleKeyUp);\n };\n }, [reactsToKey]);\n return /*#__PURE__*/React.createElement(\"kbd\", {\n className: isKeyDown ? 'DocSearch-Button-Key DocSearch-Button-Key--pressed' : 'DocSearch-Button-Key'\n }, children);\n}","export function debounce(fn, time) {\n var timerId = undefined;\n return function () {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n if (timerId) {\n clearTimeout(timerId);\n }\n timerId = setTimeout(function () {\n return fn.apply(void 0, args);\n }, time);\n };\n}","function isPrimitive(obj) {\n return obj !== Object(obj);\n}\nexport function isEqual(first, second) {\n if (first === second) {\n return true;\n }\n if (isPrimitive(first) || isPrimitive(second) || typeof first === 'function' || typeof second === 'function') {\n return first === second;\n }\n if (Object.keys(first).length !== Object.keys(second).length) {\n return false;\n }\n for (var _i = 0, _Object$keys = Object.keys(first); _i < _Object$keys.length; _i++) {\n var key = _Object$keys[_i];\n if (!(key in second)) {\n return false;\n }\n if (!isEqual(first[key], second[key])) {\n return false;\n }\n }\n return true;\n}","export var noop = function noop() {};","export function createClickedEvent(_ref) {\n var item = _ref.item,\n items = _ref.items;\n return {\n index: item.__autocomplete_indexName,\n items: [item],\n positions: [1 + items.findIndex(function (x) {\n return x.objectID === item.objectID;\n })],\n queryID: item.__autocomplete_queryID,\n algoliaSource: ['autocomplete']\n };\n}","function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nfunction _iterableToArrayLimit(arr, i) { var _i = null == arr ? null : \"undefined\" != typeof Symbol && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (null != _i) { var _s, _e, _x, _r, _arr = [], _n = !0, _d = !1; try { if (_x = (_i = _i.call(arr)).next, 0 === i) { if (Object(_i) !== _i) return; _n = !1; } else for (; !(_n = (_s = _x.call(_i)).done) && (_arr.push(_s.value), _arr.length !== i); _n = !0); } catch (err) { _d = !0, _e = err; } finally { try { if (!_n && null != _i.return && (_r = _i.return(), Object(_r) !== _r)) return; } finally { if (_d) throw _e; } } return _arr; } }\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n/**\n * Determines if a given insights `client` supports the optional call to `init`\n * and the ability to set credentials via extra parameters when sending events.\n */\nexport function isModernInsightsClient(client) {\n var _split$map = (client.version || '').split('.').map(Number),\n _split$map2 = _slicedToArray(_split$map, 2),\n major = _split$map2[0],\n minor = _split$map2[1];\n\n /* eslint-disable @typescript-eslint/camelcase */\n var v3 = major >= 3;\n var v2_4 = major === 2 && minor >= 4;\n var v1_10 = major === 1 && minor >= 10;\n return v3 || v2_4 || v1_10;\n /* eslint-enable @typescript-eslint/camelcase */\n}","var _excluded = [\"items\"],\n _excluded2 = [\"items\"];\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter); }\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return _typeof(key) === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (_typeof(input) !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (_typeof(res) !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nimport { isModernInsightsClient } from './isModernInsightsClient';\nfunction chunk(item) {\n var chunkSize = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 20;\n var chunks = [];\n for (var i = 0; i < item.objectIDs.length; i += chunkSize) {\n chunks.push(_objectSpread(_objectSpread({}, item), {}, {\n objectIDs: item.objectIDs.slice(i, i + chunkSize)\n }));\n }\n return chunks;\n}\nfunction mapToInsightsParamsApi(params) {\n return params.map(function (_ref) {\n var items = _ref.items,\n param = _objectWithoutProperties(_ref, _excluded);\n return _objectSpread(_objectSpread({}, param), {}, {\n objectIDs: (items === null || items === void 0 ? void 0 : items.map(function (_ref2) {\n var objectID = _ref2.objectID;\n return objectID;\n })) || param.objectIDs\n });\n });\n}\nexport function createSearchInsightsApi(searchInsights) {\n var canSendHeaders = isModernInsightsClient(searchInsights);\n function sendToInsights(method, payloads, items) {\n if (canSendHeaders && typeof items !== 'undefined') {\n var _items$0$__autocomple = items[0].__autocomplete_algoliaCredentials,\n appId = _items$0$__autocomple.appId,\n apiKey = _items$0$__autocomple.apiKey;\n var headers = {\n 'X-Algolia-Application-Id': appId,\n 'X-Algolia-API-Key': apiKey\n };\n searchInsights.apply(void 0, [method].concat(_toConsumableArray(payloads), [{\n headers: headers\n }]));\n } else {\n searchInsights.apply(void 0, [method].concat(_toConsumableArray(payloads)));\n }\n }\n return {\n /**\n * Initializes Insights with Algolia credentials.\n */\n init: function init(appId, apiKey) {\n searchInsights('init', {\n appId: appId,\n apiKey: apiKey\n });\n },\n /**\n * Sets the user token to attach to events.\n */\n setUserToken: function setUserToken(userToken) {\n searchInsights('setUserToken', userToken);\n },\n /**\n * Sends click events to capture a query and its clicked items and positions.\n *\n * @link https://www.algolia.com/doc/api-reference/api-methods/clicked-object-ids-after-search/\n */\n clickedObjectIDsAfterSearch: function clickedObjectIDsAfterSearch() {\n for (var _len = arguments.length, params = new Array(_len), _key = 0; _key < _len; _key++) {\n params[_key] = arguments[_key];\n }\n if (params.length > 0) {\n sendToInsights('clickedObjectIDsAfterSearch', mapToInsightsParamsApi(params), params[0].items);\n }\n },\n /**\n * Sends click events to capture clicked items.\n *\n * @link https://www.algolia.com/doc/api-reference/api-methods/clicked-object-ids/\n */\n clickedObjectIDs: function clickedObjectIDs() {\n for (var _len2 = arguments.length, params = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n params[_key2] = arguments[_key2];\n }\n if (params.length > 0) {\n sendToInsights('clickedObjectIDs', mapToInsightsParamsApi(params), params[0].items);\n }\n },\n /**\n * Sends click events to capture the filters a user clicks on.\n *\n * @link https://www.algolia.com/doc/api-reference/api-methods/clicked-filters/\n */\n clickedFilters: function clickedFilters() {\n for (var _len3 = arguments.length, params = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n params[_key3] = arguments[_key3];\n }\n if (params.length > 0) {\n searchInsights.apply(void 0, ['clickedFilters'].concat(params));\n }\n },\n /**\n * Sends conversion events to capture a query and its clicked items.\n *\n * @link https://www.algolia.com/doc/api-reference/api-methods/converted-object-ids-after-search/\n */\n convertedObjectIDsAfterSearch: function convertedObjectIDsAfterSearch() {\n for (var _len4 = arguments.length, params = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {\n params[_key4] = arguments[_key4];\n }\n if (params.length > 0) {\n sendToInsights('convertedObjectIDsAfterSearch', mapToInsightsParamsApi(params), params[0].items);\n }\n },\n /**\n * Sends conversion events to capture clicked items.\n *\n * @link https://www.algolia.com/doc/api-reference/api-methods/converted-object-ids/\n */\n convertedObjectIDs: function convertedObjectIDs() {\n for (var _len5 = arguments.length, params = new Array(_len5), _key5 = 0; _key5 < _len5; _key5++) {\n params[_key5] = arguments[_key5];\n }\n if (params.length > 0) {\n sendToInsights('convertedObjectIDs', mapToInsightsParamsApi(params), params[0].items);\n }\n },\n /**\n * Sends conversion events to capture the filters a user uses when converting.\n *\n * @link https://www.algolia.com/doc/api-reference/api-methods/converted-filters/\n */\n convertedFilters: function convertedFilters() {\n for (var _len6 = arguments.length, params = new Array(_len6), _key6 = 0; _key6 < _len6; _key6++) {\n params[_key6] = arguments[_key6];\n }\n if (params.length > 0) {\n searchInsights.apply(void 0, ['convertedFilters'].concat(params));\n }\n },\n /**\n * Sends view events to capture clicked items.\n *\n * @link https://www.algolia.com/doc/api-reference/api-methods/viewed-object-ids/\n */\n viewedObjectIDs: function viewedObjectIDs() {\n for (var _len7 = arguments.length, params = new Array(_len7), _key7 = 0; _key7 < _len7; _key7++) {\n params[_key7] = arguments[_key7];\n }\n if (params.length > 0) {\n params.reduce(function (acc, _ref3) {\n var items = _ref3.items,\n param = _objectWithoutProperties(_ref3, _excluded2);\n return [].concat(_toConsumableArray(acc), _toConsumableArray(chunk(_objectSpread(_objectSpread({}, param), {}, {\n objectIDs: (items === null || items === void 0 ? void 0 : items.map(function (_ref4) {\n var objectID = _ref4.objectID;\n return objectID;\n })) || param.objectIDs\n })).map(function (payload) {\n return {\n items: items,\n payload: payload\n };\n })));\n }, []).forEach(function (_ref5) {\n var items = _ref5.items,\n payload = _ref5.payload;\n return sendToInsights('viewedObjectIDs', [payload], items);\n });\n }\n },\n /**\n * Sends view events to capture the filters a user uses when viewing.\n *\n * @link https://www.algolia.com/doc/api-reference/api-methods/viewed-filters/\n */\n viewedFilters: function viewedFilters() {\n for (var _len8 = arguments.length, params = new Array(_len8), _key8 = 0; _key8 < _len8; _key8++) {\n params[_key8] = arguments[_key8];\n }\n if (params.length > 0) {\n searchInsights.apply(void 0, ['viewedFilters'].concat(params));\n }\n }\n };\n}","export function createViewedEvents(_ref) {\n var items = _ref.items;\n var itemsByIndexName = items.reduce(function (acc, current) {\n var _acc$current$__autoco;\n acc[current.__autocomplete_indexName] = ((_acc$current$__autoco = acc[current.__autocomplete_indexName]) !== null && _acc$current$__autoco !== void 0 ? _acc$current$__autoco : []).concat(current);\n return acc;\n }, {});\n return Object.keys(itemsByIndexName).map(function (indexName) {\n var items = itemsByIndexName[indexName];\n return {\n index: indexName,\n items: items,\n algoliaSource: ['autocomplete']\n };\n });\n}","export function isAlgoliaInsightsHit(hit) {\n return hit.objectID && hit.__autocomplete_indexName && hit.__autocomplete_queryID;\n}","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter); }\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return _typeof(key) === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (_typeof(input) !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (_typeof(res) !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nimport { createRef, debounce, isEqual, noop, safelyRunOnBrowser } from '@algolia/autocomplete-shared';\nimport { createClickedEvent } from './createClickedEvent';\nimport { createSearchInsightsApi } from './createSearchInsightsApi';\nimport { createViewedEvents } from './createViewedEvents';\nimport { isAlgoliaInsightsHit } from './isAlgoliaInsightsHit';\nvar VIEW_EVENT_DELAY = 400;\nvar ALGOLIA_INSIGHTS_VERSION = '2.6.0';\nvar ALGOLIA_INSIGHTS_SRC = \"https://cdn.jsdelivr.net/npm/search-insights@\".concat(ALGOLIA_INSIGHTS_VERSION, \"/dist/search-insights.min.js\");\nvar sendViewedObjectIDs = debounce(function (_ref) {\n var onItemsChange = _ref.onItemsChange,\n items = _ref.items,\n insights = _ref.insights,\n state = _ref.state;\n onItemsChange({\n insights: insights,\n insightsEvents: createViewedEvents({\n items: items\n }).map(function (event) {\n return _objectSpread({\n eventName: 'Items Viewed'\n }, event);\n }),\n state: state\n });\n}, VIEW_EVENT_DELAY);\nexport function createAlgoliaInsightsPlugin(options) {\n var _getOptions = getOptions(options),\n providedInsightsClient = _getOptions.insightsClient,\n onItemsChange = _getOptions.onItemsChange,\n onSelectEvent = _getOptions.onSelect,\n onActiveEvent = _getOptions.onActive;\n var insightsClient = providedInsightsClient;\n if (!providedInsightsClient) {\n safelyRunOnBrowser(function (_ref2) {\n var window = _ref2.window;\n var pointer = window.AlgoliaAnalyticsObject || 'aa';\n if (typeof pointer === 'string') {\n insightsClient = window[pointer];\n }\n if (!insightsClient) {\n window.AlgoliaAnalyticsObject = pointer;\n if (!window[pointer]) {\n window[pointer] = function () {\n if (!window[pointer].queue) {\n window[pointer].queue = [];\n }\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n window[pointer].queue.push(args);\n };\n }\n window[pointer].version = ALGOLIA_INSIGHTS_VERSION;\n insightsClient = window[pointer];\n loadInsights(window);\n }\n });\n }\n var insights = createSearchInsightsApi(insightsClient);\n var previousItems = createRef([]);\n var debouncedOnStateChange = debounce(function (_ref3) {\n var state = _ref3.state;\n if (!state.isOpen) {\n return;\n }\n var items = state.collections.reduce(function (acc, current) {\n return [].concat(_toConsumableArray(acc), _toConsumableArray(current.items));\n }, []).filter(isAlgoliaInsightsHit);\n if (!isEqual(previousItems.current.map(function (x) {\n return x.objectID;\n }), items.map(function (x) {\n return x.objectID;\n }))) {\n previousItems.current = items;\n if (items.length > 0) {\n sendViewedObjectIDs({\n onItemsChange: onItemsChange,\n items: items,\n insights: insights,\n state: state\n });\n }\n }\n }, 0);\n return {\n name: 'aa.algoliaInsightsPlugin',\n subscribe: function subscribe(_ref4) {\n var setContext = _ref4.setContext,\n onSelect = _ref4.onSelect,\n onActive = _ref4.onActive;\n insightsClient('addAlgoliaAgent', 'insights-plugin');\n setContext({\n algoliaInsightsPlugin: {\n __algoliaSearchParameters: {\n clickAnalytics: true\n },\n insights: insights\n }\n });\n onSelect(function (_ref5) {\n var item = _ref5.item,\n state = _ref5.state,\n event = _ref5.event;\n if (!isAlgoliaInsightsHit(item)) {\n return;\n }\n onSelectEvent({\n state: state,\n event: event,\n insights: insights,\n item: item,\n insightsEvents: [_objectSpread({\n eventName: 'Item Selected'\n }, createClickedEvent({\n item: item,\n items: previousItems.current\n }))]\n });\n });\n onActive(function (_ref6) {\n var item = _ref6.item,\n state = _ref6.state,\n event = _ref6.event;\n if (!isAlgoliaInsightsHit(item)) {\n return;\n }\n onActiveEvent({\n state: state,\n event: event,\n insights: insights,\n item: item,\n insightsEvents: [_objectSpread({\n eventName: 'Item Active'\n }, createClickedEvent({\n item: item,\n items: previousItems.current\n }))]\n });\n });\n },\n onStateChange: function onStateChange(_ref7) {\n var state = _ref7.state;\n debouncedOnStateChange({\n state: state\n });\n },\n __autocomplete_pluginOptions: options\n };\n}\nfunction getOptions(options) {\n return _objectSpread({\n onItemsChange: function onItemsChange(_ref8) {\n var insights = _ref8.insights,\n insightsEvents = _ref8.insightsEvents;\n insights.viewedObjectIDs.apply(insights, _toConsumableArray(insightsEvents.map(function (event) {\n return _objectSpread(_objectSpread({}, event), {}, {\n algoliaSource: [].concat(_toConsumableArray(event.algoliaSource || []), ['autocomplete-internal'])\n });\n })));\n },\n onSelect: function onSelect(_ref9) {\n var insights = _ref9.insights,\n insightsEvents = _ref9.insightsEvents;\n insights.clickedObjectIDsAfterSearch.apply(insights, _toConsumableArray(insightsEvents.map(function (event) {\n return _objectSpread(_objectSpread({}, event), {}, {\n algoliaSource: [].concat(_toConsumableArray(event.algoliaSource || []), ['autocomplete-internal'])\n });\n })));\n },\n onActive: noop\n }, options);\n}\nfunction loadInsights(environment) {\n var errorMessage = \"[Autocomplete]: Could not load search-insights.js. Please load it manually following https://alg.li/insights-autocomplete\";\n try {\n var script = environment.document.createElement('script');\n script.async = true;\n script.src = ALGOLIA_INSIGHTS_SRC;\n script.onerror = function () {\n // eslint-disable-next-line no-console\n console.error(errorMessage);\n };\n document.body.appendChild(script);\n } catch (cause) {\n // eslint-disable-next-line no-console\n console.error(errorMessage);\n }\n}","/**\n * Safely runs code meant for browser environments only.\n */\nexport function safelyRunOnBrowser(callback) {\n if (typeof window !== 'undefined') {\n return callback({\n window: window\n });\n }\n return undefined;\n}","export function createRef(initialValue) {\n return {\n current: initialValue\n };\n}","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return _typeof(key) === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (_typeof(input) !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (_typeof(res) !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nimport { createCancelablePromiseList } from './utils';\nexport function createStore(reducer, props, onStoreStateChange) {\n var state = props.initialState;\n return {\n getState: function getState() {\n return state;\n },\n dispatch: function dispatch(action, payload) {\n var prevState = _objectSpread({}, state);\n state = reducer(state, {\n type: action,\n props: props,\n payload: payload\n });\n onStoreStateChange({\n state: state,\n prevState: prevState\n });\n },\n pendingRequests: createCancelablePromiseList()\n };\n}","export function createCancelablePromiseList() {\n var list = [];\n return {\n add: function add(cancelablePromise) {\n list.push(cancelablePromise);\n return cancelablePromise.finally(function () {\n list = list.filter(function (item) {\n return item !== cancelablePromise;\n });\n });\n },\n cancelAll: function cancelAll() {\n list.forEach(function (promise) {\n return promise.cancel();\n });\n },\n isEmpty: function isEmpty() {\n return list.length === 0;\n }\n };\n}","export function flatten(values) {\n return values.reduce(function (a, b) {\n return a.concat(b);\n }, []);\n}","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return _typeof(key) === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (_typeof(input) !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (_typeof(res) !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nimport { flatten } from '@algolia/autocomplete-shared';\nexport function getAutocompleteSetters(_ref) {\n var store = _ref.store;\n var setActiveItemId = function setActiveItemId(value) {\n store.dispatch('setActiveItemId', value);\n };\n var setQuery = function setQuery(value) {\n store.dispatch('setQuery', value);\n };\n var setCollections = function setCollections(rawValue) {\n var baseItemId = 0;\n var value = rawValue.map(function (collection) {\n return _objectSpread(_objectSpread({}, collection), {}, {\n // We flatten the stored items to support calling `getAlgoliaResults`\n // from the source itself.\n items: flatten(collection.items).map(function (item) {\n return _objectSpread(_objectSpread({}, item), {}, {\n __autocomplete_id: baseItemId++\n });\n })\n });\n });\n store.dispatch('setCollections', value);\n };\n var setIsOpen = function setIsOpen(value) {\n store.dispatch('setIsOpen', value);\n };\n var setStatus = function setStatus(value) {\n store.dispatch('setStatus', value);\n };\n var setContext = function setContext(value) {\n store.dispatch('setContext', value);\n };\n return {\n setActiveItemId: setActiveItemId,\n setQuery: setQuery,\n setCollections: setCollections,\n setIsOpen: setIsOpen,\n setStatus: setStatus,\n setContext: setContext\n };\n}","export function getItemsCount(state) {\n if (state.collections.length === 0) {\n return 0;\n }\n return state.collections.reduce(function (sum, collection) {\n return sum + collection.items.length;\n }, 0);\n}","var autocompleteId = 0;\nexport function generateAutocompleteId() {\n return \"autocomplete-\".concat(autocompleteId++);\n}","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return _typeof(key) === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (_typeof(input) !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (_typeof(res) !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\nimport { invariant, decycle, noop } from '@algolia/autocomplete-shared';\nexport function getNormalizedSources(getSources, params) {\n var seenSourceIds = [];\n return Promise.resolve(getSources(params)).then(function (sources) {\n invariant(Array.isArray(sources), function () {\n return \"The `getSources` function must return an array of sources but returned type \".concat(JSON.stringify(_typeof(sources)), \":\\n\\n\").concat(JSON.stringify(decycle(sources), null, 2));\n });\n return Promise.all(sources\n // We allow `undefined` and `false` sources to allow users to use\n // `Boolean(query) && source` (=> `false`).\n // We need to remove these values at this point.\n .filter(function (maybeSource) {\n return Boolean(maybeSource);\n }).map(function (source) {\n invariant(typeof source.sourceId === 'string', 'A source must provide a `sourceId` string.');\n if (seenSourceIds.includes(source.sourceId)) {\n throw new Error(\"[Autocomplete] The `sourceId` \".concat(JSON.stringify(source.sourceId), \" is not unique.\"));\n }\n seenSourceIds.push(source.sourceId);\n var defaultSource = {\n getItemInputValue: function getItemInputValue(_ref) {\n var state = _ref.state;\n return state.query;\n },\n getItemUrl: function getItemUrl() {\n return undefined;\n },\n onSelect: function onSelect(_ref2) {\n var setIsOpen = _ref2.setIsOpen;\n setIsOpen(false);\n },\n onActive: noop,\n onResolve: noop\n };\n Object.keys(defaultSource).forEach(function (key) {\n defaultSource[key].__default = true;\n });\n var normalizedSource = _objectSpread(_objectSpread({}, defaultSource), source);\n return Promise.resolve(normalizedSource);\n }));\n });\n}","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter); }\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return _typeof(key) === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (_typeof(input) !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (_typeof(res) !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nimport { getItemsCount, generateAutocompleteId, flatten } from '@algolia/autocomplete-shared';\nimport { getNormalizedSources } from './utils';\nexport function getDefaultProps(props, pluginSubscribers) {\n var _props$id;\n /* eslint-disable no-restricted-globals */\n var environment = typeof window !== 'undefined' ? window : {};\n /* eslint-enable no-restricted-globals */\n var plugins = props.plugins || [];\n return _objectSpread(_objectSpread({\n debug: false,\n openOnFocus: false,\n placeholder: '',\n autoFocus: false,\n defaultActiveItemId: null,\n stallThreshold: 300,\n insights: false,\n environment: environment,\n shouldPanelOpen: function shouldPanelOpen(_ref) {\n var state = _ref.state;\n return getItemsCount(state) > 0;\n },\n reshape: function reshape(_ref2) {\n var sources = _ref2.sources;\n return sources;\n }\n }, props), {}, {\n // Since `generateAutocompleteId` triggers a side effect (it increments\n // an internal counter), we don't want to execute it if unnecessary.\n id: (_props$id = props.id) !== null && _props$id !== void 0 ? _props$id : generateAutocompleteId(),\n plugins: plugins,\n // The following props need to be deeply defaulted.\n initialState: _objectSpread({\n activeItemId: null,\n query: '',\n completion: null,\n collections: [],\n isOpen: false,\n status: 'idle',\n context: {}\n }, props.initialState),\n onStateChange: function onStateChange(params) {\n var _props$onStateChange;\n (_props$onStateChange = props.onStateChange) === null || _props$onStateChange === void 0 ? void 0 : _props$onStateChange.call(props, params);\n plugins.forEach(function (x) {\n var _x$onStateChange;\n return (_x$onStateChange = x.onStateChange) === null || _x$onStateChange === void 0 ? void 0 : _x$onStateChange.call(x, params);\n });\n },\n onSubmit: function onSubmit(params) {\n var _props$onSubmit;\n (_props$onSubmit = props.onSubmit) === null || _props$onSubmit === void 0 ? void 0 : _props$onSubmit.call(props, params);\n plugins.forEach(function (x) {\n var _x$onSubmit;\n return (_x$onSubmit = x.onSubmit) === null || _x$onSubmit === void 0 ? void 0 : _x$onSubmit.call(x, params);\n });\n },\n onReset: function onReset(params) {\n var _props$onReset;\n (_props$onReset = props.onReset) === null || _props$onReset === void 0 ? void 0 : _props$onReset.call(props, params);\n plugins.forEach(function (x) {\n var _x$onReset;\n return (_x$onReset = x.onReset) === null || _x$onReset === void 0 ? void 0 : _x$onReset.call(x, params);\n });\n },\n getSources: function getSources(params) {\n return Promise.all([].concat(_toConsumableArray(plugins.map(function (plugin) {\n return plugin.getSources;\n })), [props.getSources]).filter(Boolean).map(function (getSources) {\n return getNormalizedSources(getSources, params);\n })).then(function (nested) {\n return flatten(nested);\n }).then(function (sources) {\n return sources.map(function (source) {\n return _objectSpread(_objectSpread({}, source), {}, {\n onSelect: function onSelect(params) {\n source.onSelect(params);\n pluginSubscribers.forEach(function (x) {\n var _x$onSelect;\n return (_x$onSelect = x.onSelect) === null || _x$onSelect === void 0 ? void 0 : _x$onSelect.call(x, params);\n });\n },\n onActive: function onActive(params) {\n source.onActive(params);\n pluginSubscribers.forEach(function (x) {\n var _x$onActive;\n return (_x$onActive = x.onActive) === null || _x$onActive === void 0 ? void 0 : _x$onActive.call(x, params);\n });\n },\n onResolve: function onResolve(params) {\n source.onResolve(params);\n pluginSubscribers.forEach(function (x) {\n var _x$onResolve;\n return (_x$onResolve = x.onResolve) === null || _x$onResolve === void 0 ? void 0 : _x$onResolve.call(x, params);\n });\n }\n });\n });\n });\n },\n navigator: _objectSpread({\n navigate: function navigate(_ref3) {\n var itemUrl = _ref3.itemUrl;\n environment.location.assign(itemUrl);\n },\n navigateNewTab: function navigateNewTab(_ref4) {\n var itemUrl = _ref4.itemUrl;\n var windowReference = environment.open(itemUrl, '_blank', 'noopener');\n windowReference === null || windowReference === void 0 ? void 0 : windowReference.focus();\n },\n navigateNewWindow: function navigateNewWindow(_ref5) {\n var itemUrl = _ref5.itemUrl;\n environment.open(itemUrl, '_blank', 'noopener');\n }\n }, props.navigator)\n });\n}","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return _typeof(key) === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (_typeof(input) !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (_typeof(res) !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nimport { flatten } from '@algolia/autocomplete-shared';\nexport function reshape(_ref) {\n var collections = _ref.collections,\n props = _ref.props,\n state = _ref.state;\n // Sources are grouped by `sourceId` to conveniently pick them via destructuring.\n // Example: `const { recentSearchesPlugin } = sourcesBySourceId`\n var originalSourcesBySourceId = collections.reduce(function (acc, collection) {\n return _objectSpread(_objectSpread({}, acc), {}, _defineProperty({}, collection.source.sourceId, _objectSpread(_objectSpread({}, collection.source), {}, {\n getItems: function getItems() {\n // We provide the resolved items from the collection to the `reshape` prop.\n return flatten(collection.items);\n }\n })));\n }, {});\n var _props$plugins$reduce = props.plugins.reduce(function (acc, plugin) {\n if (plugin.reshape) {\n return plugin.reshape(acc);\n }\n return acc;\n }, {\n sourcesBySourceId: originalSourcesBySourceId,\n state: state\n }),\n sourcesBySourceId = _props$plugins$reduce.sourcesBySourceId;\n var reshapeSources = props.reshape({\n sourcesBySourceId: sourcesBySourceId,\n sources: Object.values(sourcesBySourceId),\n state: state\n });\n\n // We reconstruct the collections with the items modified by the `reshape` prop.\n return flatten(reshapeSources).filter(Boolean).map(function (source) {\n return {\n source: source,\n items: source.getItems()\n };\n });\n}","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return _typeof(key) === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (_typeof(input) !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (_typeof(res) !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter); }\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nimport { decycle, flatten, invariant } from '@algolia/autocomplete-shared';\nimport { mapToAlgoliaResponse } from './utils';\nfunction isDescription(item) {\n return Boolean(item.execute);\n}\nfunction isRequesterDescription(description) {\n return Boolean(description === null || description === void 0 ? void 0 : description.execute);\n}\nexport function preResolve(itemsOrDescription, sourceId, state) {\n if (isRequesterDescription(itemsOrDescription)) {\n var contextParameters = itemsOrDescription.requesterId === 'algolia' ? Object.assign.apply(Object, [{}].concat(_toConsumableArray(Object.keys(state.context).map(function (key) {\n var _state$context$key;\n return (_state$context$key = state.context[key]) === null || _state$context$key === void 0 ? void 0 : _state$context$key.__algoliaSearchParameters;\n })))) : {};\n return _objectSpread(_objectSpread({}, itemsOrDescription), {}, {\n requests: itemsOrDescription.queries.map(function (query) {\n return {\n query: itemsOrDescription.requesterId === 'algolia' ? _objectSpread(_objectSpread({}, query), {}, {\n params: _objectSpread(_objectSpread({}, contextParameters), query.params)\n }) : query,\n sourceId: sourceId,\n transformResponse: itemsOrDescription.transformResponse\n };\n })\n });\n }\n return {\n items: itemsOrDescription,\n sourceId: sourceId\n };\n}\nexport function resolve(items) {\n var packed = items.reduce(function (acc, current) {\n if (!isDescription(current)) {\n acc.push(current);\n return acc;\n }\n var searchClient = current.searchClient,\n execute = current.execute,\n requesterId = current.requesterId,\n requests = current.requests;\n var container = acc.find(function (item) {\n return isDescription(current) && isDescription(item) && item.searchClient === searchClient && Boolean(requesterId) && item.requesterId === requesterId;\n });\n if (container) {\n var _container$items;\n (_container$items = container.items).push.apply(_container$items, _toConsumableArray(requests));\n } else {\n var request = {\n execute: execute,\n requesterId: requesterId,\n items: requests,\n searchClient: searchClient\n };\n acc.push(request);\n }\n return acc;\n }, []);\n var values = packed.map(function (maybeDescription) {\n if (!isDescription(maybeDescription)) {\n return Promise.resolve(maybeDescription);\n }\n var _ref = maybeDescription,\n execute = _ref.execute,\n items = _ref.items,\n searchClient = _ref.searchClient;\n return execute({\n searchClient: searchClient,\n requests: items\n });\n });\n return Promise.all(values).then(function (responses) {\n return flatten(responses);\n });\n}\nexport function postResolve(responses, sources, store) {\n return sources.map(function (source) {\n var matches = responses.filter(function (response) {\n return response.sourceId === source.sourceId;\n });\n var results = matches.map(function (_ref2) {\n var items = _ref2.items;\n return items;\n });\n var transform = matches[0].transformResponse;\n var items = transform ? transform(mapToAlgoliaResponse(results)) : results;\n source.onResolve({\n source: source,\n results: results,\n items: items,\n state: store.getState()\n });\n invariant(Array.isArray(items), function () {\n return \"The `getItems` function from source \\\"\".concat(source.sourceId, \"\\\" must return an array of items but returned type \").concat(JSON.stringify(_typeof(items)), \":\\n\\n\").concat(JSON.stringify(decycle(items), null, 2), \".\\n\\nSee: https://www.algolia.com/doc/ui-libraries/autocomplete/core-concepts/sources/#param-getitems\");\n });\n invariant(items.every(Boolean), \"The `getItems` function from source \\\"\".concat(source.sourceId, \"\\\" must return an array of items but returned \").concat(JSON.stringify(undefined), \".\\n\\nDid you forget to return items?\\n\\nSee: https://www.algolia.com/doc/ui-libraries/autocomplete/core-concepts/sources/#param-getitems\"));\n return {\n source: source,\n items: items\n };\n });\n}","export function mapToAlgoliaResponse(rawResults) {\n return {\n results: rawResults,\n hits: rawResults.map(function (result) {\n return result.hits;\n }).filter(Boolean),\n facetHits: rawResults.map(function (result) {\n var _facetHits;\n return (_facetHits = result.facetHits) === null || _facetHits === void 0 ? void 0 : _facetHits.map(function (facetHit) {\n // Bring support for the highlighting components.\n return {\n label: facetHit.value,\n count: facetHit.count,\n _highlightResult: {\n label: {\n value: facetHit.highlighted\n }\n }\n };\n });\n }).filter(Boolean)\n };\n}","function createInternalCancelablePromise(promise, initialState) {\n var state = initialState;\n return {\n then: function then(onfulfilled, onrejected) {\n return createInternalCancelablePromise(promise.then(createCallback(onfulfilled, state, promise), createCallback(onrejected, state, promise)), state);\n },\n catch: function _catch(onrejected) {\n return createInternalCancelablePromise(promise.catch(createCallback(onrejected, state, promise)), state);\n },\n finally: function _finally(onfinally) {\n if (onfinally) {\n state.onCancelList.push(onfinally);\n }\n return createInternalCancelablePromise(promise.finally(createCallback(onfinally && function () {\n state.onCancelList = [];\n return onfinally();\n }, state, promise)), state);\n },\n cancel: function cancel() {\n state.isCanceled = true;\n var callbacks = state.onCancelList;\n state.onCancelList = [];\n callbacks.forEach(function (callback) {\n callback();\n });\n },\n isCanceled: function isCanceled() {\n return state.isCanceled === true;\n }\n };\n}\nexport function createCancelablePromise(executor) {\n return createInternalCancelablePromise(new Promise(function (resolve, reject) {\n return executor(resolve, reject);\n }), {\n isCanceled: false,\n onCancelList: []\n });\n}\ncreateCancelablePromise.resolve = function (value) {\n return cancelable(Promise.resolve(value));\n};\ncreateCancelablePromise.reject = function (reason) {\n return cancelable(Promise.reject(reason));\n};\nexport function cancelable(promise) {\n return createInternalCancelablePromise(promise, {\n isCanceled: false,\n onCancelList: []\n });\n}\nfunction createCallback(onResult, state, fallback) {\n if (!onResult) {\n return fallback;\n }\n return function callback(arg) {\n if (state.isCanceled) {\n return arg;\n }\n return onResult(arg);\n };\n}","// We don't have access to the autocomplete source when we call `onKeyDown`\n// or `onClick` because those are native browser events.\n// However, we can get the source from the suggestion index.\nfunction getCollectionFromActiveItemId(state) {\n // Given 3 sources with respectively 1, 2 and 3 suggestions: [1, 2, 3]\n // We want to get the accumulated counts:\n // [1, 1 + 2, 1 + 2 + 3] = [1, 3, 3 + 3] = [1, 3, 6]\n var accumulatedCollectionsCount = state.collections.map(function (collections) {\n return collections.items.length;\n }).reduce(function (acc, collectionsCount, index) {\n var previousValue = acc[index - 1] || 0;\n var nextValue = previousValue + collectionsCount;\n acc.push(nextValue);\n return acc;\n }, []);\n\n // Based on the accumulated counts, we can infer the index of the suggestion.\n var collectionIndex = accumulatedCollectionsCount.reduce(function (acc, current) {\n if (current <= state.activeItemId) {\n return acc + 1;\n }\n return acc;\n }, 0);\n return state.collections[collectionIndex];\n}\n\n/**\n * Gets the highlighted index relative to a suggestion object (not the absolute\n * highlighted index).\n *\n * Example:\n * [['a', 'b'], ['c', 'd', 'e'], ['f']]\n * ↑\n * (absolute: 3, relative: 1)\n */\nfunction getRelativeActiveItemId(_ref) {\n var state = _ref.state,\n collection = _ref.collection;\n var isOffsetFound = false;\n var counter = 0;\n var previousItemsOffset = 0;\n while (isOffsetFound === false) {\n var currentCollection = state.collections[counter];\n if (currentCollection === collection) {\n isOffsetFound = true;\n break;\n }\n previousItemsOffset += currentCollection.items.length;\n counter++;\n }\n return state.activeItemId - previousItemsOffset;\n}\nexport function getActiveItem(state) {\n var collection = getCollectionFromActiveItemId(state);\n if (!collection) {\n return null;\n }\n var item = collection.items[getRelativeActiveItemId({\n state: state,\n collection: collection\n })];\n var source = collection.source;\n var itemInputValue = source.getItemInputValue({\n item: item,\n state: state\n });\n var itemUrl = source.getItemUrl({\n item: item,\n state: state\n });\n return {\n item: item,\n itemInputValue: itemInputValue,\n itemUrl: itemUrl,\n source: source\n };\n}","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\nvar _excluded = [\"event\", \"nextState\", \"props\", \"query\", \"refresh\", \"store\"];\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return _typeof(key) === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (_typeof(input) !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (_typeof(res) !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nimport { reshape } from './reshape';\nimport { preResolve, resolve, postResolve } from './resolve';\nimport { cancelable, createConcurrentSafePromise, getActiveItem } from './utils';\nvar lastStalledId = null;\nvar runConcurrentSafePromise = createConcurrentSafePromise();\nexport function onInput(_ref) {\n var event = _ref.event,\n _ref$nextState = _ref.nextState,\n nextState = _ref$nextState === void 0 ? {} : _ref$nextState,\n props = _ref.props,\n query = _ref.query,\n refresh = _ref.refresh,\n store = _ref.store,\n setters = _objectWithoutProperties(_ref, _excluded);\n if (lastStalledId) {\n props.environment.clearTimeout(lastStalledId);\n }\n var setCollections = setters.setCollections,\n setIsOpen = setters.setIsOpen,\n setQuery = setters.setQuery,\n setActiveItemId = setters.setActiveItemId,\n setStatus = setters.setStatus;\n setQuery(query);\n setActiveItemId(props.defaultActiveItemId);\n if (!query && props.openOnFocus === false) {\n var _nextState$isOpen;\n var collections = store.getState().collections.map(function (collection) {\n return _objectSpread(_objectSpread({}, collection), {}, {\n items: []\n });\n });\n setStatus('idle');\n setCollections(collections);\n setIsOpen((_nextState$isOpen = nextState.isOpen) !== null && _nextState$isOpen !== void 0 ? _nextState$isOpen : props.shouldPanelOpen({\n state: store.getState()\n }));\n\n // We make sure to update the latest resolved value of the tracked\n // promises to keep late resolving promises from \"cancelling\" the state\n // updates performed in this code path.\n // We chain with a void promise to respect `onInput`'s expected return type.\n var _request = cancelable(runConcurrentSafePromise(collections).then(function () {\n return Promise.resolve();\n }));\n return store.pendingRequests.add(_request);\n }\n setStatus('loading');\n lastStalledId = props.environment.setTimeout(function () {\n setStatus('stalled');\n }, props.stallThreshold);\n\n // We track the entire promise chain triggered by `onInput` before mutating\n // the Autocomplete state to make sure that any state manipulation is based on\n // fresh data regardless of when promises individually resolve.\n // We don't track nested promises and only rely on the full chain resolution,\n // meaning we should only ever manipulate the state once this concurrent-safe\n // promise is resolved.\n var request = cancelable(runConcurrentSafePromise(props.getSources(_objectSpread({\n query: query,\n refresh: refresh,\n state: store.getState()\n }, setters)).then(function (sources) {\n return Promise.all(sources.map(function (source) {\n return Promise.resolve(source.getItems(_objectSpread({\n query: query,\n refresh: refresh,\n state: store.getState()\n }, setters))).then(function (itemsOrDescription) {\n return preResolve(itemsOrDescription, source.sourceId, store.getState());\n });\n })).then(resolve).then(function (responses) {\n return postResolve(responses, sources, store);\n }).then(function (collections) {\n return reshape({\n collections: collections,\n props: props,\n state: store.getState()\n });\n });\n }))).then(function (collections) {\n var _nextState$isOpen2;\n // Parameters passed to `onInput` could be stale when the following code\n // executes, because `onInput` calls may not resolve in order.\n // If it becomes a problem we'll need to save the last passed parameters.\n // See: https://codesandbox.io/s/agitated-cookies-y290z\n\n setStatus('idle');\n setCollections(collections);\n var isPanelOpen = props.shouldPanelOpen({\n state: store.getState()\n });\n setIsOpen((_nextState$isOpen2 = nextState.isOpen) !== null && _nextState$isOpen2 !== void 0 ? _nextState$isOpen2 : props.openOnFocus && !query && isPanelOpen || isPanelOpen);\n var highlightedItem = getActiveItem(store.getState());\n if (store.getState().activeItemId !== null && highlightedItem) {\n var item = highlightedItem.item,\n itemInputValue = highlightedItem.itemInputValue,\n itemUrl = highlightedItem.itemUrl,\n source = highlightedItem.source;\n source.onActive(_objectSpread({\n event: event,\n item: item,\n itemInputValue: itemInputValue,\n itemUrl: itemUrl,\n refresh: refresh,\n source: source,\n state: store.getState()\n }, setters));\n }\n }).finally(function () {\n setStatus('idle');\n if (lastStalledId) {\n props.environment.clearTimeout(lastStalledId);\n }\n });\n return store.pendingRequests.add(request);\n}","/**\n * Creates a runner that executes promises in a concurrent-safe way.\n *\n * This is useful to prevent older promises to resolve after a newer promise,\n * otherwise resulting in stale resolved values.\n */\nexport function createConcurrentSafePromise() {\n var basePromiseId = -1;\n var latestResolvedId = -1;\n var latestResolvedValue = undefined;\n return function runConcurrentSafePromise(promise) {\n basePromiseId++;\n var currentPromiseId = basePromiseId;\n return Promise.resolve(promise).then(function (x) {\n // The promise might take too long to resolve and get outdated. This would\n // result in resolving stale values.\n // When this happens, we ignore the promise value and return the one\n // coming from the latest resolved value.\n //\n // +----------------------------------+\n // | 100ms |\n // | run(1) +---> R1 |\n // | 300ms |\n // | run(2) +-------------> R2 (SKIP) |\n // | 200ms |\n // | run(3) +--------> R3 |\n // +----------------------------------+\n if (latestResolvedValue && currentPromiseId < latestResolvedId) {\n return latestResolvedValue;\n }\n latestResolvedId = currentPromiseId;\n latestResolvedValue = x;\n return x;\n });\n };\n}","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\nvar _excluded = [\"event\", \"props\", \"refresh\", \"store\"];\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return _typeof(key) === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (_typeof(input) !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (_typeof(res) !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nimport { onInput } from './onInput';\nimport { getActiveItem } from './utils';\nexport function onKeyDown(_ref) {\n var event = _ref.event,\n props = _ref.props,\n refresh = _ref.refresh,\n store = _ref.store,\n setters = _objectWithoutProperties(_ref, _excluded);\n if (event.key === 'ArrowUp' || event.key === 'ArrowDown') {\n // eslint-disable-next-line no-inner-declarations\n var triggerScrollIntoView = function triggerScrollIntoView() {\n var nodeItem = props.environment.document.getElementById(\"\".concat(props.id, \"-item-\").concat(store.getState().activeItemId));\n if (nodeItem) {\n if (nodeItem.scrollIntoViewIfNeeded) {\n nodeItem.scrollIntoViewIfNeeded(false);\n } else {\n nodeItem.scrollIntoView(false);\n }\n }\n }; // eslint-disable-next-line no-inner-declarations\n var triggerOnActive = function triggerOnActive() {\n var highlightedItem = getActiveItem(store.getState());\n if (store.getState().activeItemId !== null && highlightedItem) {\n var item = highlightedItem.item,\n itemInputValue = highlightedItem.itemInputValue,\n itemUrl = highlightedItem.itemUrl,\n source = highlightedItem.source;\n source.onActive(_objectSpread({\n event: event,\n item: item,\n itemInputValue: itemInputValue,\n itemUrl: itemUrl,\n refresh: refresh,\n source: source,\n state: store.getState()\n }, setters));\n }\n }; // Default browser behavior changes the caret placement on ArrowUp and\n // ArrowDown.\n event.preventDefault();\n\n // When re-opening the panel, we need to split the logic to keep the actions\n // synchronized as `onInput` returns a promise.\n if (store.getState().isOpen === false && (props.openOnFocus || Boolean(store.getState().query))) {\n onInput(_objectSpread({\n event: event,\n props: props,\n query: store.getState().query,\n refresh: refresh,\n store: store\n }, setters)).then(function () {\n store.dispatch(event.key, {\n nextActiveItemId: props.defaultActiveItemId\n });\n triggerOnActive();\n // Since we rely on the DOM, we need to wait for all the micro tasks to\n // finish (which include re-opening the panel) to make sure all the\n // elements are available.\n setTimeout(triggerScrollIntoView, 0);\n });\n } else {\n store.dispatch(event.key, {});\n triggerOnActive();\n triggerScrollIntoView();\n }\n } else if (event.key === 'Escape') {\n // This prevents the default browser behavior on `input[type=\"search\"]`\n // from removing the query right away because we first want to close the\n // panel.\n event.preventDefault();\n store.dispatch(event.key, null);\n\n // Hitting the `Escape` key signals the end of a user interaction with the\n // autocomplete. At this point, we should ignore any requests that are still\n // pending and could reopen the panel once they resolve, because that would\n // result in an unsolicited UI behavior.\n store.pendingRequests.cancelAll();\n } else if (event.key === 'Tab') {\n store.dispatch('blur', null);\n\n // Hitting the `Escape` key signals the end of a user interaction with the\n // autocomplete. At this point, we should ignore any requests that are still\n // pending and could reopen the panel once they resolve, because that would\n // result in an unsolicited UI behavior.\n store.pendingRequests.cancelAll();\n } else if (event.key === 'Enter') {\n // No active item, so we let the browser handle the native `onSubmit` form\n // event.\n if (store.getState().activeItemId === null || store.getState().collections.every(function (collection) {\n return collection.items.length === 0;\n })) {\n // If requests are still pending when the panel closes, they could reopen\n // the panel once they resolve.\n // We want to prevent any subsequent query from reopening the panel\n // because it would result in an unsolicited UI behavior.\n if (!props.debug) {\n store.pendingRequests.cancelAll();\n }\n return;\n }\n\n // This prevents the `onSubmit` event to be sent because an item is\n // highlighted.\n event.preventDefault();\n var _ref2 = getActiveItem(store.getState()),\n item = _ref2.item,\n itemInputValue = _ref2.itemInputValue,\n itemUrl = _ref2.itemUrl,\n source = _ref2.source;\n if (event.metaKey || event.ctrlKey) {\n if (itemUrl !== undefined) {\n source.onSelect(_objectSpread({\n event: event,\n item: item,\n itemInputValue: itemInputValue,\n itemUrl: itemUrl,\n refresh: refresh,\n source: source,\n state: store.getState()\n }, setters));\n props.navigator.navigateNewTab({\n itemUrl: itemUrl,\n item: item,\n state: store.getState()\n });\n }\n } else if (event.shiftKey) {\n if (itemUrl !== undefined) {\n source.onSelect(_objectSpread({\n event: event,\n item: item,\n itemInputValue: itemInputValue,\n itemUrl: itemUrl,\n refresh: refresh,\n source: source,\n state: store.getState()\n }, setters));\n props.navigator.navigateNewWindow({\n itemUrl: itemUrl,\n item: item,\n state: store.getState()\n });\n }\n } else if (event.altKey) {\n // Keep native browser behavior\n } else {\n if (itemUrl !== undefined) {\n source.onSelect(_objectSpread({\n event: event,\n item: item,\n itemInputValue: itemInputValue,\n itemUrl: itemUrl,\n refresh: refresh,\n source: source,\n state: store.getState()\n }, setters));\n props.navigator.navigate({\n itemUrl: itemUrl,\n item: item,\n state: store.getState()\n });\n return;\n }\n onInput(_objectSpread({\n event: event,\n nextState: {\n isOpen: false\n },\n props: props,\n query: itemInputValue,\n refresh: refresh,\n store: store\n }, setters)).then(function () {\n source.onSelect(_objectSpread({\n event: event,\n item: item,\n itemInputValue: itemInputValue,\n itemUrl: itemUrl,\n refresh: refresh,\n source: source,\n state: store.getState()\n }, setters));\n });\n }\n }\n}","var regex = /((gt|sm)-|galaxy nexus)|samsung[- ]|samsungbrowser/i;\nexport function isSamsung(userAgent) {\n return Boolean(userAgent && userAgent.match(regex));\n}","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\nvar _excluded = [\"props\", \"refresh\", \"store\"],\n _excluded2 = [\"inputElement\", \"formElement\", \"panelElement\"],\n _excluded3 = [\"inputElement\"],\n _excluded4 = [\"inputElement\", \"maxLength\"],\n _excluded5 = [\"sourceIndex\"],\n _excluded6 = [\"sourceIndex\"],\n _excluded7 = [\"item\", \"source\", \"sourceIndex\"];\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return _typeof(key) === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (_typeof(input) !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (_typeof(res) !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nimport { noop } from '@algolia/autocomplete-shared';\nimport { onInput } from './onInput';\nimport { onKeyDown as _onKeyDown } from './onKeyDown';\nimport { getActiveItem, isOrContainsNode, isSamsung } from './utils';\nexport function getPropGetters(_ref) {\n var props = _ref.props,\n refresh = _ref.refresh,\n store = _ref.store,\n setters = _objectWithoutProperties(_ref, _excluded);\n var getEnvironmentProps = function getEnvironmentProps(providedProps) {\n var inputElement = providedProps.inputElement,\n formElement = providedProps.formElement,\n panelElement = providedProps.panelElement,\n rest = _objectWithoutProperties(providedProps, _excluded2);\n function onMouseDownOrTouchStart(event) {\n // The `onTouchStart`/`onMouseDown` events shouldn't trigger the `blur`\n // handler when it's not an interaction with Autocomplete.\n // We detect it with the following heuristics:\n // - the panel is closed AND there are no pending requests\n // (no interaction with the autocomplete, no future state updates)\n // - OR the touched target is the input element (should open the panel)\n var isAutocompleteInteraction = store.getState().isOpen || !store.pendingRequests.isEmpty();\n if (!isAutocompleteInteraction || event.target === inputElement) {\n return;\n }\n\n // @TODO: support cases where there are multiple Autocomplete instances.\n // Right now, a second instance makes this computation return false.\n var isTargetWithinAutocomplete = [formElement, panelElement].some(function (contextNode) {\n return isOrContainsNode(contextNode, event.target);\n });\n if (isTargetWithinAutocomplete === false) {\n store.dispatch('blur', null);\n\n // If requests are still pending when the user closes the panel, they\n // could reopen the panel once they resolve.\n // We want to prevent any subsequent query from reopening the panel\n // because it would result in an unsolicited UI behavior.\n if (!props.debug) {\n store.pendingRequests.cancelAll();\n }\n }\n }\n return _objectSpread({\n // We do not rely on the native `blur` event of the input to close the\n // panel, but rather on a custom `touchstart`/`mousedown` event outside\n // of the autocomplete elements.\n // This ensures we don't mistakenly interpret interactions within the\n // autocomplete (but outside of the input) as a signal to close the panel.\n // For example, clicking reset button causes an input blur, but if\n // `openOnFocus=true`, it shouldn't close the panel.\n // On touch devices, scrolling results (`touchmove`) causes an input blur\n // but shouldn't close the panel.\n onTouchStart: onMouseDownOrTouchStart,\n onMouseDown: onMouseDownOrTouchStart,\n // When scrolling on touch devices (mobiles, tablets, etc.), we want to\n // mimic the native platform behavior where the input is blurred to\n // hide the virtual keyboard. This gives more vertical space to\n // discover all the suggestions showing up in the panel.\n onTouchMove: function onTouchMove(event) {\n if (store.getState().isOpen === false || inputElement !== props.environment.document.activeElement || event.target === inputElement) {\n return;\n }\n inputElement.blur();\n }\n }, rest);\n };\n var getRootProps = function getRootProps(rest) {\n return _objectSpread({\n role: 'combobox',\n 'aria-expanded': store.getState().isOpen,\n 'aria-haspopup': 'listbox',\n 'aria-owns': store.getState().isOpen ? \"\".concat(props.id, \"-list\") : undefined,\n 'aria-labelledby': \"\".concat(props.id, \"-label\")\n }, rest);\n };\n var getFormProps = function getFormProps(providedProps) {\n var inputElement = providedProps.inputElement,\n rest = _objectWithoutProperties(providedProps, _excluded3);\n return _objectSpread({\n action: '',\n noValidate: true,\n role: 'search',\n onSubmit: function onSubmit(event) {\n var _providedProps$inputE;\n event.preventDefault();\n props.onSubmit(_objectSpread({\n event: event,\n refresh: refresh,\n state: store.getState()\n }, setters));\n store.dispatch('submit', null);\n (_providedProps$inputE = providedProps.inputElement) === null || _providedProps$inputE === void 0 ? void 0 : _providedProps$inputE.blur();\n },\n onReset: function onReset(event) {\n var _providedProps$inputE2;\n event.preventDefault();\n props.onReset(_objectSpread({\n event: event,\n refresh: refresh,\n state: store.getState()\n }, setters));\n store.dispatch('reset', null);\n (_providedProps$inputE2 = providedProps.inputElement) === null || _providedProps$inputE2 === void 0 ? void 0 : _providedProps$inputE2.focus();\n }\n }, rest);\n };\n var getInputProps = function getInputProps(providedProps) {\n var _props$environment$na;\n function onFocus(event) {\n // We want to trigger a query when `openOnFocus` is true\n // because the panel should open with the current query.\n if (props.openOnFocus || Boolean(store.getState().query)) {\n onInput(_objectSpread({\n event: event,\n props: props,\n query: store.getState().completion || store.getState().query,\n refresh: refresh,\n store: store\n }, setters));\n }\n store.dispatch('focus', null);\n }\n var _ref2 = providedProps || {},\n inputElement = _ref2.inputElement,\n _ref2$maxLength = _ref2.maxLength,\n maxLength = _ref2$maxLength === void 0 ? 512 : _ref2$maxLength,\n rest = _objectWithoutProperties(_ref2, _excluded4);\n var activeItem = getActiveItem(store.getState());\n var userAgent = ((_props$environment$na = props.environment.navigator) === null || _props$environment$na === void 0 ? void 0 : _props$environment$na.userAgent) || '';\n var shouldFallbackKeyHint = isSamsung(userAgent);\n var enterKeyHint = activeItem !== null && activeItem !== void 0 && activeItem.itemUrl && !shouldFallbackKeyHint ? 'go' : 'search';\n return _objectSpread({\n 'aria-autocomplete': 'both',\n 'aria-activedescendant': store.getState().isOpen && store.getState().activeItemId !== null ? \"\".concat(props.id, \"-item-\").concat(store.getState().activeItemId) : undefined,\n 'aria-controls': store.getState().isOpen ? \"\".concat(props.id, \"-list\") : undefined,\n 'aria-labelledby': \"\".concat(props.id, \"-label\"),\n value: store.getState().completion || store.getState().query,\n id: \"\".concat(props.id, \"-input\"),\n autoComplete: 'off',\n autoCorrect: 'off',\n autoCapitalize: 'off',\n enterKeyHint: enterKeyHint,\n spellCheck: 'false',\n autoFocus: props.autoFocus,\n placeholder: props.placeholder,\n maxLength: maxLength,\n type: 'search',\n onChange: function onChange(event) {\n onInput(_objectSpread({\n event: event,\n props: props,\n query: event.currentTarget.value.slice(0, maxLength),\n refresh: refresh,\n store: store\n }, setters));\n },\n onKeyDown: function onKeyDown(event) {\n _onKeyDown(_objectSpread({\n event: event,\n props: props,\n refresh: refresh,\n store: store\n }, setters));\n },\n onFocus: onFocus,\n // We don't rely on the `blur` event.\n // See explanation in `onTouchStart`/`onMouseDown`.\n // @MAJOR See if we need to keep this handler.\n onBlur: noop,\n onClick: function onClick(event) {\n // When the panel is closed and you click on the input while\n // the input is focused, the `onFocus` event is not triggered\n // (default browser behavior).\n // In an autocomplete context, it makes sense to open the panel in this\n // case.\n // We mimic this event by catching the `onClick` event which\n // triggers the `onFocus` for the panel to open.\n if (providedProps.inputElement === props.environment.document.activeElement && !store.getState().isOpen) {\n onFocus(event);\n }\n }\n }, rest);\n };\n var getAutocompleteId = function getAutocompleteId(instanceId, sourceId) {\n return typeof sourceId !== 'undefined' ? \"\".concat(instanceId, \"-\").concat(sourceId) : instanceId;\n };\n var getLabelProps = function getLabelProps(providedProps) {\n var _ref3 = providedProps || {},\n sourceIndex = _ref3.sourceIndex,\n rest = _objectWithoutProperties(_ref3, _excluded5);\n return _objectSpread({\n htmlFor: \"\".concat(getAutocompleteId(props.id, sourceIndex), \"-input\"),\n id: \"\".concat(getAutocompleteId(props.id, sourceIndex), \"-label\")\n }, rest);\n };\n var getListProps = function getListProps(providedProps) {\n var _ref4 = providedProps || {},\n sourceIndex = _ref4.sourceIndex,\n rest = _objectWithoutProperties(_ref4, _excluded6);\n return _objectSpread({\n role: 'listbox',\n 'aria-labelledby': \"\".concat(getAutocompleteId(props.id, sourceIndex), \"-label\"),\n id: \"\".concat(getAutocompleteId(props.id, sourceIndex), \"-list\")\n }, rest);\n };\n var getPanelProps = function getPanelProps(rest) {\n return _objectSpread({\n onMouseDown: function onMouseDown(event) {\n // Prevents the `activeElement` from being changed to the panel so\n // that the blur event is not triggered, otherwise it closes the\n // panel.\n event.preventDefault();\n },\n onMouseLeave: function onMouseLeave() {\n store.dispatch('mouseleave', null);\n }\n }, rest);\n };\n var getItemProps = function getItemProps(providedProps) {\n var item = providedProps.item,\n source = providedProps.source,\n sourceIndex = providedProps.sourceIndex,\n rest = _objectWithoutProperties(providedProps, _excluded7);\n return _objectSpread({\n id: \"\".concat(getAutocompleteId(props.id, sourceIndex), \"-item-\").concat(item.__autocomplete_id),\n role: 'option',\n 'aria-selected': store.getState().activeItemId === item.__autocomplete_id,\n onMouseMove: function onMouseMove(event) {\n if (item.__autocomplete_id === store.getState().activeItemId) {\n return;\n }\n store.dispatch('mousemove', item.__autocomplete_id);\n var activeItem = getActiveItem(store.getState());\n if (store.getState().activeItemId !== null && activeItem) {\n var _item = activeItem.item,\n itemInputValue = activeItem.itemInputValue,\n itemUrl = activeItem.itemUrl,\n _source = activeItem.source;\n _source.onActive(_objectSpread({\n event: event,\n item: _item,\n itemInputValue: itemInputValue,\n itemUrl: itemUrl,\n refresh: refresh,\n source: _source,\n state: store.getState()\n }, setters));\n }\n },\n onMouseDown: function onMouseDown(event) {\n // Prevents the `activeElement` from being changed to the item so it\n // can remain with the current `activeElement`.\n event.preventDefault();\n },\n onClick: function onClick(event) {\n var itemInputValue = source.getItemInputValue({\n item: item,\n state: store.getState()\n });\n var itemUrl = source.getItemUrl({\n item: item,\n state: store.getState()\n });\n\n // If `getItemUrl` is provided, it means that the suggestion\n // is a link, not plain text that aims at updating the query.\n // We can therefore skip the state change because it will update\n // the `activeItemId`, resulting in a UI flash, especially\n // noticeable on mobile.\n var runPreCommand = itemUrl ? Promise.resolve() : onInput(_objectSpread({\n event: event,\n nextState: {\n isOpen: false\n },\n props: props,\n query: itemInputValue,\n refresh: refresh,\n store: store\n }, setters));\n runPreCommand.then(function () {\n source.onSelect(_objectSpread({\n event: event,\n item: item,\n itemInputValue: itemInputValue,\n itemUrl: itemUrl,\n refresh: refresh,\n source: source,\n state: store.getState()\n }, setters));\n });\n }\n }, rest);\n };\n return {\n getEnvironmentProps: getEnvironmentProps,\n getRootProps: getRootProps,\n getFormProps: getFormProps,\n getLabelProps: getLabelProps,\n getInputProps: getInputProps,\n getPanelProps: getPanelProps,\n getListProps: getListProps,\n getItemProps: getItemProps\n };\n}","export function isOrContainsNode(parent, child) {\n return parent === child || parent.contains(child);\n}","export var version = '1.9.3';","import { version } from './version';\nexport var userAgents = [{\n segment: 'autocomplete-core',\n version: version\n}];","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return _typeof(key) === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (_typeof(input) !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (_typeof(res) !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nimport { userAgents } from '@algolia/autocomplete-shared';\nexport function getMetadata(_ref) {\n var _, _options$__autocomple, _options$__autocomple2, _options$__autocomple3;\n var plugins = _ref.plugins,\n options = _ref.options;\n var optionsKey = (_ = (((_options$__autocomple = options.__autocomplete_metadata) === null || _options$__autocomple === void 0 ? void 0 : _options$__autocomple.userAgents) || [])[0]) === null || _ === void 0 ? void 0 : _.segment;\n var extraOptions = optionsKey ? _defineProperty({}, optionsKey, Object.keys(((_options$__autocomple2 = options.__autocomplete_metadata) === null || _options$__autocomple2 === void 0 ? void 0 : _options$__autocomple2.options) || {})) : {};\n return {\n plugins: plugins.map(function (plugin) {\n return {\n name: plugin.name,\n options: Object.keys(plugin.__autocomplete_pluginOptions || [])\n };\n }),\n options: _objectSpread({\n 'autocomplete-core': Object.keys(options)\n }, extraOptions),\n ua: userAgents.concat(((_options$__autocomple3 = options.__autocomplete_metadata) === null || _options$__autocomple3 === void 0 ? void 0 : _options$__autocomple3.userAgents) || [])\n };\n}\nexport function injectMetadata(_ref3) {\n var _environment$navigato, _environment$navigato2;\n var metadata = _ref3.metadata,\n environment = _ref3.environment;\n var isMetadataEnabled = (_environment$navigato = environment.navigator) === null || _environment$navigato === void 0 ? void 0 : (_environment$navigato2 = _environment$navigato.userAgent) === null || _environment$navigato2 === void 0 ? void 0 : _environment$navigato2.includes('Algolia Crawler');\n if (isMetadataEnabled) {\n var metadataContainer = environment.document.createElement('meta');\n var headRef = environment.document.querySelector('head');\n metadataContainer.name = 'algolia:metadata';\n setTimeout(function () {\n metadataContainer.content = JSON.stringify(metadata);\n headRef.appendChild(metadataContainer);\n }, 0);\n }\n}","import { getActiveItem } from './utils';\nexport function getCompletion(_ref) {\n var _getActiveItem;\n var state = _ref.state;\n if (state.isOpen === false || state.activeItemId === null) {\n return null;\n }\n return ((_getActiveItem = getActiveItem(state)) === null || _getActiveItem === void 0 ? void 0 : _getActiveItem.itemInputValue) || null;\n}","/**\n * Returns the next active item ID from the current state.\n *\n * We allow circular keyboard navigation from the base index.\n * The base index can either be `null` (nothing is highlighted) or `0`\n * (the first item is highlighted).\n * The base index is allowed to get assigned `null` only if\n * `props.defaultActiveItemId` is `null`. This pattern allows to \"stop\"\n * by the actual query before navigating to other suggestions as seen on\n * Google or Amazon.\n *\n * @param moveAmount The offset to increment (or decrement) the last index\n * @param baseIndex The current index to compute the next index from\n * @param itemCount The number of items\n * @param defaultActiveItemId The default active index to fallback to\n */\nexport function getNextActiveItemId(moveAmount, baseIndex, itemCount, defaultActiveItemId) {\n if (!itemCount) {\n return null;\n }\n if (moveAmount < 0 && (baseIndex === null || defaultActiveItemId !== null && baseIndex === 0)) {\n return itemCount + moveAmount;\n }\n var numericIndex = (baseIndex === null ? -1 : baseIndex) + moveAmount;\n if (numericIndex <= -1 || numericIndex >= itemCount) {\n return defaultActiveItemId === null ? null : 0;\n }\n return numericIndex;\n}","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return _typeof(key) === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (_typeof(input) !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (_typeof(res) !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nimport { getItemsCount, invariant } from '@algolia/autocomplete-shared';\nimport { getCompletion } from './getCompletion';\nimport { getNextActiveItemId } from './utils';\nexport var stateReducer = function stateReducer(state, action) {\n switch (action.type) {\n case 'setActiveItemId':\n {\n return _objectSpread(_objectSpread({}, state), {}, {\n activeItemId: action.payload\n });\n }\n case 'setQuery':\n {\n return _objectSpread(_objectSpread({}, state), {}, {\n query: action.payload,\n completion: null\n });\n }\n case 'setCollections':\n {\n return _objectSpread(_objectSpread({}, state), {}, {\n collections: action.payload\n });\n }\n case 'setIsOpen':\n {\n return _objectSpread(_objectSpread({}, state), {}, {\n isOpen: action.payload\n });\n }\n case 'setStatus':\n {\n return _objectSpread(_objectSpread({}, state), {}, {\n status: action.payload\n });\n }\n case 'setContext':\n {\n return _objectSpread(_objectSpread({}, state), {}, {\n context: _objectSpread(_objectSpread({}, state.context), action.payload)\n });\n }\n case 'ArrowDown':\n {\n var nextState = _objectSpread(_objectSpread({}, state), {}, {\n activeItemId: action.payload.hasOwnProperty('nextActiveItemId') ? action.payload.nextActiveItemId : getNextActiveItemId(1, state.activeItemId, getItemsCount(state), action.props.defaultActiveItemId)\n });\n return _objectSpread(_objectSpread({}, nextState), {}, {\n completion: getCompletion({\n state: nextState\n })\n });\n }\n case 'ArrowUp':\n {\n var _nextState = _objectSpread(_objectSpread({}, state), {}, {\n activeItemId: getNextActiveItemId(-1, state.activeItemId, getItemsCount(state), action.props.defaultActiveItemId)\n });\n return _objectSpread(_objectSpread({}, _nextState), {}, {\n completion: getCompletion({\n state: _nextState\n })\n });\n }\n case 'Escape':\n {\n if (state.isOpen) {\n return _objectSpread(_objectSpread({}, state), {}, {\n activeItemId: null,\n isOpen: false,\n completion: null\n });\n }\n return _objectSpread(_objectSpread({}, state), {}, {\n activeItemId: null,\n query: '',\n status: 'idle',\n collections: []\n });\n }\n case 'submit':\n {\n return _objectSpread(_objectSpread({}, state), {}, {\n activeItemId: null,\n isOpen: false,\n status: 'idle'\n });\n }\n case 'reset':\n {\n return _objectSpread(_objectSpread({}, state), {}, {\n activeItemId:\n // Since we open the panel on reset when openOnFocus=true\n // we need to restore the highlighted index to the defaultActiveItemId. (DocSearch use-case)\n\n // Since we close the panel when openOnFocus=false\n // we lose track of the highlighted index. (Query-suggestions use-case)\n action.props.openOnFocus === true ? action.props.defaultActiveItemId : null,\n status: 'idle',\n query: ''\n });\n }\n case 'focus':\n {\n return _objectSpread(_objectSpread({}, state), {}, {\n activeItemId: action.props.defaultActiveItemId,\n isOpen: (action.props.openOnFocus || Boolean(state.query)) && action.props.shouldPanelOpen({\n state: state\n })\n });\n }\n case 'blur':\n {\n if (action.props.debug) {\n return state;\n }\n return _objectSpread(_objectSpread({}, state), {}, {\n isOpen: false,\n activeItemId: null\n });\n }\n case 'mousemove':\n {\n return _objectSpread(_objectSpread({}, state), {}, {\n activeItemId: action.payload\n });\n }\n case 'mouseleave':\n {\n return _objectSpread(_objectSpread({}, state), {}, {\n activeItemId: action.props.defaultActiveItemId\n });\n }\n default:\n invariant(false, \"The reducer action \".concat(JSON.stringify(action.type), \" is not supported.\"));\n return state;\n }\n};","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return _typeof(key) === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (_typeof(input) !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (_typeof(res) !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nimport { createAlgoliaInsightsPlugin } from '@algolia/autocomplete-plugin-algolia-insights';\nimport { checkOptions } from './checkOptions';\nimport { createStore } from './createStore';\nimport { getAutocompleteSetters } from './getAutocompleteSetters';\nimport { getDefaultProps } from './getDefaultProps';\nimport { getPropGetters } from './getPropGetters';\nimport { getMetadata, injectMetadata } from './metadata';\nimport { onInput } from './onInput';\nimport { stateReducer } from './stateReducer';\nexport function createAutocomplete(options) {\n checkOptions(options);\n var subscribers = [];\n var props = getDefaultProps(options, subscribers);\n var store = createStore(stateReducer, props, onStoreStateChange);\n var setters = getAutocompleteSetters({\n store: store\n });\n var propGetters = getPropGetters(_objectSpread({\n props: props,\n refresh: refresh,\n store: store,\n navigator: props.navigator\n }, setters));\n function onStoreStateChange(_ref) {\n var prevState = _ref.prevState,\n state = _ref.state;\n props.onStateChange(_objectSpread({\n prevState: prevState,\n state: state,\n refresh: refresh,\n navigator: props.navigator\n }, setters));\n }\n function refresh() {\n return onInput(_objectSpread({\n event: new Event('input'),\n nextState: {\n isOpen: store.getState().isOpen\n },\n props: props,\n navigator: props.navigator,\n query: store.getState().query,\n refresh: refresh,\n store: store\n }, setters));\n }\n if (options.insights && !props.plugins.some(function (plugin) {\n return plugin.name === 'aa.algoliaInsightsPlugin';\n })) {\n var insightsParams = typeof options.insights === 'boolean' ? {} : options.insights;\n props.plugins.push(createAlgoliaInsightsPlugin(insightsParams));\n }\n props.plugins.forEach(function (plugin) {\n var _plugin$subscribe;\n return (_plugin$subscribe = plugin.subscribe) === null || _plugin$subscribe === void 0 ? void 0 : _plugin$subscribe.call(plugin, _objectSpread(_objectSpread({}, setters), {}, {\n navigator: props.navigator,\n refresh: refresh,\n onSelect: function onSelect(fn) {\n subscribers.push({\n onSelect: fn\n });\n },\n onActive: function onActive(fn) {\n subscribers.push({\n onActive: fn\n });\n },\n onResolve: function onResolve(fn) {\n subscribers.push({\n onResolve: fn\n });\n }\n }));\n });\n injectMetadata({\n metadata: getMetadata({\n plugins: props.plugins,\n options: options\n }),\n environment: props.environment\n });\n return _objectSpread(_objectSpread({\n refresh: refresh,\n navigator: props.navigator\n }, propGetters), setters);\n}","export var MAX_QUERY_SIZE = 64;","import React from 'react';\nexport function AlgoliaLogo(_ref) {\n var _ref$translations = _ref.translations,\n translations = _ref$translations === void 0 ? {} : _ref$translations;\n var _translations$searchB = translations.searchByText,\n searchByText = _translations$searchB === void 0 ? 'Search by' : _translations$searchB;\n return /*#__PURE__*/React.createElement(\"a\", {\n href: \"https://www.algolia.com/ref/docsearch/?utm_source=\".concat(window.location.hostname, \"&utm_medium=referral&utm_content=powered_by&utm_campaign=docsearch\"),\n target: \"_blank\",\n rel: \"noopener noreferrer\"\n }, /*#__PURE__*/React.createElement(\"span\", {\n className: \"DocSearch-Label\"\n }, searchByText), /*#__PURE__*/React.createElement(\"svg\", {\n width: \"77\",\n height: \"19\",\n \"aria-label\": \"Algolia\",\n role: \"img\",\n id: \"Layer_1\",\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 2196.2 500\"\n }, /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"style\", null, \".cls-1,.cls-2{fill:#003dff;}.cls-2{fill-rule:evenodd;}\")), /*#__PURE__*/React.createElement(\"path\", {\n className: \"cls-2\",\n d: \"M1070.38,275.3V5.91c0-3.63-3.24-6.39-6.82-5.83l-50.46,7.94c-2.87,.45-4.99,2.93-4.99,5.84l.17,273.22c0,12.92,0,92.7,95.97,95.49,3.33,.1,6.09-2.58,6.09-5.91v-40.78c0-2.96-2.19-5.51-5.12-5.84-34.85-4.01-34.85-47.57-34.85-54.72Z\"\n }), /*#__PURE__*/React.createElement(\"rect\", {\n className: \"cls-1\",\n x: \"1845.88\",\n y: \"104.73\",\n width: \"62.58\",\n height: \"277.9\",\n rx: \"5.9\",\n ry: \"5.9\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n className: \"cls-2\",\n d: \"M1851.78,71.38h50.77c3.26,0,5.9-2.64,5.9-5.9V5.9c0-3.62-3.24-6.39-6.82-5.83l-50.77,7.95c-2.87,.45-4.99,2.92-4.99,5.83v51.62c0,3.26,2.64,5.9,5.9,5.9Z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n className: \"cls-2\",\n d: \"M1764.03,275.3V5.91c0-3.63-3.24-6.39-6.82-5.83l-50.46,7.94c-2.87,.45-4.99,2.93-4.99,5.84l.17,273.22c0,12.92,0,92.7,95.97,95.49,3.33,.1,6.09-2.58,6.09-5.91v-40.78c0-2.96-2.19-5.51-5.12-5.84-34.85-4.01-34.85-47.57-34.85-54.72Z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n className: \"cls-2\",\n d: \"M1631.95,142.72c-11.14-12.25-24.83-21.65-40.78-28.31-15.92-6.53-33.26-9.85-52.07-9.85-18.78,0-36.15,3.17-51.92,9.85-15.59,6.66-29.29,16.05-40.76,28.31-11.47,12.23-20.38,26.87-26.76,44.03-6.38,17.17-9.24,37.37-9.24,58.36,0,20.99,3.19,36.87,9.55,54.21,6.38,17.32,15.14,32.11,26.45,44.36,11.29,12.23,24.83,21.62,40.6,28.46,15.77,6.83,40.12,10.33,52.4,10.48,12.25,0,36.78-3.82,52.7-10.48,15.92-6.68,29.46-16.23,40.78-28.46,11.29-12.25,20.05-27.04,26.25-44.36,6.22-17.34,9.24-33.22,9.24-54.21,0-20.99-3.34-41.19-10.03-58.36-6.38-17.17-15.14-31.8-26.43-44.03Zm-44.43,163.75c-11.47,15.75-27.56,23.7-48.09,23.7-20.55,0-36.63-7.8-48.1-23.7-11.47-15.75-17.21-34.01-17.21-61.2,0-26.89,5.59-49.14,17.06-64.87,11.45-15.75,27.54-23.52,48.07-23.52,20.55,0,36.63,7.78,48.09,23.52,11.47,15.57,17.36,37.98,17.36,64.87,0,27.19-5.72,45.3-17.19,61.2Z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n className: \"cls-2\",\n d: \"M894.42,104.73h-49.33c-48.36,0-90.91,25.48-115.75,64.1-14.52,22.58-22.99,49.63-22.99,78.73,0,44.89,20.13,84.92,51.59,111.1,2.93,2.6,6.05,4.98,9.31,7.14,12.86,8.49,28.11,13.47,44.52,13.47,1.23,0,2.46-.03,3.68-.09,.36-.02,.71-.05,1.07-.07,.87-.05,1.75-.11,2.62-.2,.34-.03,.68-.08,1.02-.12,.91-.1,1.82-.21,2.73-.34,.21-.03,.42-.07,.63-.1,32.89-5.07,61.56-30.82,70.9-62.81v57.83c0,3.26,2.64,5.9,5.9,5.9h50.42c3.26,0,5.9-2.64,5.9-5.9V110.63c0-3.26-2.64-5.9-5.9-5.9h-56.32Zm0,206.92c-12.2,10.16-27.97,13.98-44.84,15.12-.16,.01-.33,.03-.49,.04-1.12,.07-2.24,.1-3.36,.1-42.24,0-77.12-35.89-77.12-79.37,0-10.25,1.96-20.01,5.42-28.98,11.22-29.12,38.77-49.74,71.06-49.74h49.33v142.83Z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n className: \"cls-2\",\n d: \"M2133.97,104.73h-49.33c-48.36,0-90.91,25.48-115.75,64.1-14.52,22.58-22.99,49.63-22.99,78.73,0,44.89,20.13,84.92,51.59,111.1,2.93,2.6,6.05,4.98,9.31,7.14,12.86,8.49,28.11,13.47,44.52,13.47,1.23,0,2.46-.03,3.68-.09,.36-.02,.71-.05,1.07-.07,.87-.05,1.75-.11,2.62-.2,.34-.03,.68-.08,1.02-.12,.91-.1,1.82-.21,2.73-.34,.21-.03,.42-.07,.63-.1,32.89-5.07,61.56-30.82,70.9-62.81v57.83c0,3.26,2.64,5.9,5.9,5.9h50.42c3.26,0,5.9-2.64,5.9-5.9V110.63c0-3.26-2.64-5.9-5.9-5.9h-56.32Zm0,206.92c-12.2,10.16-27.97,13.98-44.84,15.12-.16,.01-.33,.03-.49,.04-1.12,.07-2.24,.1-3.36,.1-42.24,0-77.12-35.89-77.12-79.37,0-10.25,1.96-20.01,5.42-28.98,11.22-29.12,38.77-49.74,71.06-49.74h49.33v142.83Z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n className: \"cls-2\",\n d: \"M1314.05,104.73h-49.33c-48.36,0-90.91,25.48-115.75,64.1-11.79,18.34-19.6,39.64-22.11,62.59-.58,5.3-.88,10.68-.88,16.14s.31,11.15,.93,16.59c4.28,38.09,23.14,71.61,50.66,94.52,2.93,2.6,6.05,4.98,9.31,7.14,12.86,8.49,28.11,13.47,44.52,13.47h0c17.99,0,34.61-5.93,48.16-15.97,16.29-11.58,28.88-28.54,34.48-47.75v50.26h-.11v11.08c0,21.84-5.71,38.27-17.34,49.36-11.61,11.08-31.04,16.63-58.25,16.63-11.12,0-28.79-.59-46.6-2.41-2.83-.29-5.46,1.5-6.27,4.22l-12.78,43.11c-1.02,3.46,1.27,7.02,4.83,7.53,21.52,3.08,42.52,4.68,54.65,4.68,48.91,0,85.16-10.75,108.89-32.21,21.48-19.41,33.15-48.89,35.2-88.52V110.63c0-3.26-2.64-5.9-5.9-5.9h-56.32Zm0,64.1s.65,139.13,0,143.36c-12.08,9.77-27.11,13.59-43.49,14.7-.16,.01-.33,.03-.49,.04-1.12,.07-2.24,.1-3.36,.1-1.32,0-2.63-.03-3.94-.1-40.41-2.11-74.52-37.26-74.52-79.38,0-10.25,1.96-20.01,5.42-28.98,11.22-29.12,38.77-49.74,71.06-49.74h49.33Z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n className: \"cls-1\",\n d: \"M249.83,0C113.3,0,2,110.09,.03,246.16c-2,138.19,110.12,252.7,248.33,253.5,42.68,.25,83.79-10.19,120.3-30.03,3.56-1.93,4.11-6.83,1.08-9.51l-23.38-20.72c-4.75-4.21-11.51-5.4-17.36-2.92-25.48,10.84-53.17,16.38-81.71,16.03-111.68-1.37-201.91-94.29-200.13-205.96,1.76-110.26,92-199.41,202.67-199.41h202.69V407.41l-115-102.18c-3.72-3.31-9.42-2.66-12.42,1.31-18.46,24.44-48.53,39.64-81.93,37.34-46.33-3.2-83.87-40.5-87.34-86.81-4.15-55.24,39.63-101.52,94-101.52,49.18,0,89.68,37.85,93.91,85.95,.38,4.28,2.31,8.27,5.52,11.12l29.95,26.55c3.4,3.01,8.79,1.17,9.63-3.3,2.16-11.55,2.92-23.58,2.07-35.92-4.82-70.34-61.8-126.93-132.17-131.26-80.68-4.97-148.13,58.14-150.27,137.25-2.09,77.1,61.08,143.56,138.19,145.26,32.19,.71,62.03-9.41,86.14-26.95l150.26,133.2c6.44,5.71,16.61,1.14,16.61-7.47V9.48C499.66,4.25,495.42,0,490.18,0H249.83Z\"\n })));\n}","import React from 'react';\nimport { AlgoliaLogo } from './AlgoliaLogo';\n\nfunction CommandIcon(props) {\n return /*#__PURE__*/React.createElement(\"svg\", {\n width: \"15\",\n height: \"15\",\n \"aria-label\": props.ariaLabel,\n role: \"img\"\n }, /*#__PURE__*/React.createElement(\"g\", {\n fill: \"none\",\n stroke: \"currentColor\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n strokeWidth: \"1.2\"\n }, props.children));\n}\n\nexport function Footer(_ref) {\n var _ref$translations = _ref.translations,\n translations = _ref$translations === void 0 ? {} : _ref$translations;\n var _translations$selectT = translations.selectText,\n selectText = _translations$selectT === void 0 ? 'to select' : _translations$selectT,\n _translations$selectK = translations.selectKeyAriaLabel,\n selectKeyAriaLabel = _translations$selectK === void 0 ? 'Enter key' : _translations$selectK,\n _translations$navigat = translations.navigateText,\n navigateText = _translations$navigat === void 0 ? 'to navigate' : _translations$navigat,\n _translations$navigat2 = translations.navigateUpKeyAriaLabel,\n navigateUpKeyAriaLabel = _translations$navigat2 === void 0 ? 'Arrow up' : _translations$navigat2,\n _translations$navigat3 = translations.navigateDownKeyAriaLabel,\n navigateDownKeyAriaLabel = _translations$navigat3 === void 0 ? 'Arrow down' : _translations$navigat3,\n _translations$closeTe = translations.closeText,\n closeText = _translations$closeTe === void 0 ? 'to close' : _translations$closeTe,\n _translations$closeKe = translations.closeKeyAriaLabel,\n closeKeyAriaLabel = _translations$closeKe === void 0 ? 'Escape key' : _translations$closeKe,\n _translations$searchB = translations.searchByText,\n searchByText = _translations$searchB === void 0 ? 'Search by' : _translations$searchB;\n return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(\"div\", {\n className: \"DocSearch-Logo\"\n }, /*#__PURE__*/React.createElement(AlgoliaLogo, {\n translations: {\n searchByText: searchByText\n }\n })), /*#__PURE__*/React.createElement(\"ul\", {\n className: \"DocSearch-Commands\"\n }, /*#__PURE__*/React.createElement(\"li\", null, /*#__PURE__*/React.createElement(\"kbd\", {\n className: \"DocSearch-Commands-Key\"\n }, /*#__PURE__*/React.createElement(CommandIcon, {\n ariaLabel: selectKeyAriaLabel\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M12 3.53088v3c0 1-1 2-2 2H4M7 11.53088l-3-3 3-3\"\n }))), /*#__PURE__*/React.createElement(\"span\", {\n className: \"DocSearch-Label\"\n }, selectText)), /*#__PURE__*/React.createElement(\"li\", null, /*#__PURE__*/React.createElement(\"kbd\", {\n className: \"DocSearch-Commands-Key\"\n }, /*#__PURE__*/React.createElement(CommandIcon, {\n ariaLabel: navigateDownKeyAriaLabel\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M7.5 3.5v8M10.5 8.5l-3 3-3-3\"\n }))), /*#__PURE__*/React.createElement(\"kbd\", {\n className: \"DocSearch-Commands-Key\"\n }, /*#__PURE__*/React.createElement(CommandIcon, {\n ariaLabel: navigateUpKeyAriaLabel\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M7.5 11.5v-8M10.5 6.5l-3-3-3 3\"\n }))), /*#__PURE__*/React.createElement(\"span\", {\n className: \"DocSearch-Label\"\n }, navigateText)), /*#__PURE__*/React.createElement(\"li\", null, /*#__PURE__*/React.createElement(\"kbd\", {\n className: \"DocSearch-Commands-Key\"\n }, /*#__PURE__*/React.createElement(CommandIcon, {\n ariaLabel: closeKeyAriaLabel\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M13.6167 8.936c-.1065.3583-.6883.962-1.4875.962-.7993 0-1.653-.9165-1.653-2.1258v-.5678c0-1.2548.7896-2.1016 1.653-2.1016.8634 0 1.3601.4778 1.4875 1.0724M9 6c-.1352-.4735-.7506-.9219-1.46-.8972-.7092.0246-1.344.57-1.344 1.2166s.4198.8812 1.3445.9805C8.465 7.3992 8.968 7.9337 9 8.5c.032.5663-.454 1.398-1.4595 1.398C6.6593 9.898 6 9 5.963 8.4851m-1.4748.5368c-.2635.5941-.8099.876-1.5443.876s-1.7073-.6248-1.7073-2.204v-.4603c0-1.0416.721-2.131 1.7073-2.131.9864 0 1.6425 1.031 1.5443 2.2492h-2.956\"\n }))), /*#__PURE__*/React.createElement(\"span\", {\n className: \"DocSearch-Label\"\n }, closeText))));\n}","import React from 'react';\nexport function Hit(_ref) {\n var hit = _ref.hit,\n children = _ref.children;\n return /*#__PURE__*/React.createElement(\"a\", {\n href: hit.url\n }, children);\n}","import React from 'react';\nexport function ErrorIcon() {\n return /*#__PURE__*/React.createElement(\"svg\", {\n width: \"40\",\n height: \"40\",\n viewBox: \"0 0 20 20\",\n fill: \"none\",\n fillRule: \"evenodd\",\n stroke: \"currentColor\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M19 4.8a16 16 0 00-2-1.2m-3.3-1.2A16 16 0 001.1 4.7M16.7 8a12 12 0 00-2.8-1.4M10 6a12 12 0 00-6.7 2M12.3 14.7a4 4 0 00-4.5 0M14.5 11.4A8 8 0 0010 10M3 16L18 2M10 18h0\"\n }));\n}","import React from 'react';\nimport { ErrorIcon } from './icons';\nexport function ErrorScreen(_ref) {\n var _ref$translations = _ref.translations,\n translations = _ref$translations === void 0 ? {} : _ref$translations;\n var _translations$titleTe = translations.titleText,\n titleText = _translations$titleTe === void 0 ? 'Unable to fetch results' : _translations$titleTe,\n _translations$helpTex = translations.helpText,\n helpText = _translations$helpTex === void 0 ? 'You might want to check your network connection.' : _translations$helpTex;\n return /*#__PURE__*/React.createElement(\"div\", {\n className: \"DocSearch-ErrorScreen\"\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: \"DocSearch-Screen-Icon\"\n }, /*#__PURE__*/React.createElement(ErrorIcon, null)), /*#__PURE__*/React.createElement(\"p\", {\n className: \"DocSearch-Title\"\n }, titleText), /*#__PURE__*/React.createElement(\"p\", {\n className: \"DocSearch-Help\"\n }, helpText));\n}","import React from 'react';\nexport function NoResultsIcon() {\n return /*#__PURE__*/React.createElement(\"svg\", {\n width: \"40\",\n height: \"40\",\n viewBox: \"0 0 20 20\",\n fill: \"none\",\n fillRule: \"evenodd\",\n stroke: \"currentColor\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M15.5 4.8c2 3 1.7 7-1 9.7h0l4.3 4.3-4.3-4.3a7.8 7.8 0 01-9.8 1m-2.2-2.2A7.8 7.8 0 0113.2 2.4M2 18L18 2\"\n }));\n}","var _excluded = [\"translations\"];\n\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport React from 'react';\nimport { NoResultsIcon } from './icons';\nexport function NoResultsScreen(_ref) {\n var _ref$translations = _ref.translations,\n translations = _ref$translations === void 0 ? {} : _ref$translations,\n props = _objectWithoutProperties(_ref, _excluded);\n\n var _translations$noResul = translations.noResultsText,\n noResultsText = _translations$noResul === void 0 ? 'No results for' : _translations$noResul,\n _translations$suggest = translations.suggestedQueryText,\n suggestedQueryText = _translations$suggest === void 0 ? 'Try searching for' : _translations$suggest,\n _translations$reportM = translations.reportMissingResultsText,\n reportMissingResultsText = _translations$reportM === void 0 ? 'Believe this query should return results?' : _translations$reportM,\n _translations$reportM2 = translations.reportMissingResultsLinkText,\n reportMissingResultsLinkText = _translations$reportM2 === void 0 ? 'Let us know.' : _translations$reportM2;\n var searchSuggestions = props.state.context.searchSuggestions;\n return /*#__PURE__*/React.createElement(\"div\", {\n className: \"DocSearch-NoResults\"\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: \"DocSearch-Screen-Icon\"\n }, /*#__PURE__*/React.createElement(NoResultsIcon, null)), /*#__PURE__*/React.createElement(\"p\", {\n className: \"DocSearch-Title\"\n }, noResultsText, \" \\\"\", /*#__PURE__*/React.createElement(\"strong\", null, props.state.query), \"\\\"\"), searchSuggestions && searchSuggestions.length > 0 && /*#__PURE__*/React.createElement(\"div\", {\n className: \"DocSearch-NoResults-Prefill-List\"\n }, /*#__PURE__*/React.createElement(\"p\", {\n className: \"DocSearch-Help\"\n }, suggestedQueryText, \":\"), /*#__PURE__*/React.createElement(\"ul\", null, searchSuggestions.slice(0, 3).reduce(function (acc, search) {\n return [].concat(_toConsumableArray(acc), [/*#__PURE__*/React.createElement(\"li\", {\n key: search\n }, /*#__PURE__*/React.createElement(\"button\", {\n className: \"DocSearch-Prefill\",\n key: search,\n type: \"button\",\n onClick: function onClick() {\n props.setQuery(search.toLowerCase() + ' ');\n props.refresh();\n props.inputRef.current.focus();\n }\n }, search))]);\n }, []))), props.getMissingResultsUrl && /*#__PURE__*/React.createElement(\"p\", {\n className: \"DocSearch-Help\"\n }, \"\".concat(reportMissingResultsText, \" \"), /*#__PURE__*/React.createElement(\"a\", {\n href: props.getMissingResultsUrl({\n query: props.state.query\n }),\n target: \"_blank\",\n rel: \"noopener noreferrer\"\n }, reportMissingResultsLinkText)));\n}","import React from 'react';\n\nvar LvlIcon = function LvlIcon() {\n return /*#__PURE__*/React.createElement(\"svg\", {\n width: \"20\",\n height: \"20\",\n viewBox: \"0 0 20 20\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M17 6v12c0 .52-.2 1-1 1H4c-.7 0-1-.33-1-1V2c0-.55.42-1 1-1h8l5 5zM14 8h-3.13c-.51 0-.87-.34-.87-.87V4\",\n stroke: \"currentColor\",\n fill: \"none\",\n fillRule: \"evenodd\",\n strokeLinejoin: \"round\"\n }));\n};\n\nexport function SourceIcon(props) {\n switch (props.type) {\n case 'lvl1':\n return /*#__PURE__*/React.createElement(LvlIcon, null);\n\n case 'content':\n return /*#__PURE__*/React.createElement(ContentIcon, null);\n\n default:\n return /*#__PURE__*/React.createElement(AnchorIcon, null);\n }\n}\n\nfunction AnchorIcon() {\n return /*#__PURE__*/React.createElement(\"svg\", {\n width: \"20\",\n height: \"20\",\n viewBox: \"0 0 20 20\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M13 13h4-4V8H7v5h6v4-4H7V8H3h4V3v5h6V3v5h4-4v5zm-6 0v4-4H3h4z\",\n stroke: \"currentColor\",\n fill: \"none\",\n fillRule: \"evenodd\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n }));\n}\n\nfunction ContentIcon() {\n return /*#__PURE__*/React.createElement(\"svg\", {\n width: \"20\",\n height: \"20\",\n viewBox: \"0 0 20 20\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M17 5H3h14zm0 5H3h14zm0 5H3h14z\",\n stroke: \"currentColor\",\n fill: \"none\",\n fillRule: \"evenodd\",\n strokeLinejoin: \"round\"\n }));\n}","import React from 'react';\nexport function SelectIcon() {\n return /*#__PURE__*/React.createElement(\"svg\", {\n className: \"DocSearch-Hit-Select-Icon\",\n width: \"20\",\n height: \"20\",\n viewBox: \"0 0 20 20\"\n }, /*#__PURE__*/React.createElement(\"g\", {\n stroke: \"currentColor\",\n fill: \"none\",\n fillRule: \"evenodd\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M18 3v4c0 2-2 4-4 4H2\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M8 17l-6-6 6-6\"\n })));\n}","var _excluded = [\"hit\", \"attribute\", \"tagName\"];\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport { createElement } from 'react';\n\nfunction getPropertyByPath(object, path) {\n var parts = path.split('.');\n return parts.reduce(function (prev, current) {\n if (prev !== null && prev !== void 0 && prev[current]) return prev[current];\n return null;\n }, object);\n}\n\nexport function Snippet(_ref) {\n var hit = _ref.hit,\n attribute = _ref.attribute,\n _ref$tagName = _ref.tagName,\n tagName = _ref$tagName === void 0 ? 'span' : _ref$tagName,\n rest = _objectWithoutProperties(_ref, _excluded);\n\n return createElement(tagName, _objectSpread(_objectSpread({}, rest), {}, {\n dangerouslySetInnerHTML: {\n __html: getPropertyByPath(hit, \"_snippetResult.\".concat(attribute, \".value\")) || getPropertyByPath(hit, attribute)\n }\n }));\n}","function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\n\nfunction _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport React from 'react';\nimport { Snippet } from './Snippet';\nexport function Results(props) {\n if (!props.collection || props.collection.items.length === 0) {\n return null;\n }\n\n return /*#__PURE__*/React.createElement(\"section\", {\n className: \"DocSearch-Hits\"\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: \"DocSearch-Hit-source\"\n }, props.title), /*#__PURE__*/React.createElement(\"ul\", props.getListProps(), props.collection.items.map(function (item, index) {\n return /*#__PURE__*/React.createElement(Result, _extends({\n key: [props.title, item.objectID].join(':'),\n item: item,\n index: index\n }, props));\n })));\n}\n\nfunction Result(_ref) {\n var item = _ref.item,\n index = _ref.index,\n renderIcon = _ref.renderIcon,\n renderAction = _ref.renderAction,\n getItemProps = _ref.getItemProps,\n onItemClick = _ref.onItemClick,\n collection = _ref.collection,\n hitComponent = _ref.hitComponent;\n\n var _React$useState = React.useState(false),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n isDeleting = _React$useState2[0],\n setIsDeleting = _React$useState2[1];\n\n var _React$useState3 = React.useState(false),\n _React$useState4 = _slicedToArray(_React$useState3, 2),\n isFavoriting = _React$useState4[0],\n setIsFavoriting = _React$useState4[1];\n\n var action = React.useRef(null);\n var Hit = hitComponent;\n\n function runDeleteTransition(cb) {\n setIsDeleting(true);\n action.current = cb;\n }\n\n function runFavoriteTransition(cb) {\n setIsFavoriting(true);\n action.current = cb;\n }\n\n return /*#__PURE__*/React.createElement(\"li\", _extends({\n className: ['DocSearch-Hit', item.__docsearch_parent && 'DocSearch-Hit--Child', isDeleting && 'DocSearch-Hit--deleting', isFavoriting && 'DocSearch-Hit--favoriting'].filter(Boolean).join(' '),\n onTransitionEnd: function onTransitionEnd() {\n if (action.current) {\n action.current();\n }\n }\n }, getItemProps({\n item: item,\n source: collection.source,\n onClick: function onClick(event) {\n onItemClick(item, event);\n }\n })), /*#__PURE__*/React.createElement(Hit, {\n hit: item\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: \"DocSearch-Hit-Container\"\n }, renderIcon({\n item: item,\n index: index\n }), item.hierarchy[item.type] && item.type === 'lvl1' && /*#__PURE__*/React.createElement(\"div\", {\n className: \"DocSearch-Hit-content-wrapper\"\n }, /*#__PURE__*/React.createElement(Snippet, {\n className: \"DocSearch-Hit-title\",\n hit: item,\n attribute: \"hierarchy.lvl1\"\n }), item.content && /*#__PURE__*/React.createElement(Snippet, {\n className: \"DocSearch-Hit-path\",\n hit: item,\n attribute: \"content\"\n })), item.hierarchy[item.type] && (item.type === 'lvl2' || item.type === 'lvl3' || item.type === 'lvl4' || item.type === 'lvl5' || item.type === 'lvl6') && /*#__PURE__*/React.createElement(\"div\", {\n className: \"DocSearch-Hit-content-wrapper\"\n }, /*#__PURE__*/React.createElement(Snippet, {\n className: \"DocSearch-Hit-title\",\n hit: item,\n attribute: \"hierarchy.\".concat(item.type)\n }), /*#__PURE__*/React.createElement(Snippet, {\n className: \"DocSearch-Hit-path\",\n hit: item,\n attribute: \"hierarchy.lvl1\"\n })), item.type === 'content' && /*#__PURE__*/React.createElement(\"div\", {\n className: \"DocSearch-Hit-content-wrapper\"\n }, /*#__PURE__*/React.createElement(Snippet, {\n className: \"DocSearch-Hit-title\",\n hit: item,\n attribute: \"content\"\n }), /*#__PURE__*/React.createElement(Snippet, {\n className: \"DocSearch-Hit-path\",\n hit: item,\n attribute: \"hierarchy.lvl1\"\n })), renderAction({\n item: item,\n runDeleteTransition: runDeleteTransition,\n runFavoriteTransition: runFavoriteTransition\n }))));\n}","var regexHighlightTags = /(|<\\/mark>)/g;\nvar regexHasHighlightTags = RegExp(regexHighlightTags.source);\nexport function removeHighlightTags(hit) {\n var _internalDocSearchHit, _hit$_highlightResult;\n\n var internalDocSearchHit = hit;\n\n if (!internalDocSearchHit.__docsearch_parent && !hit._highlightResult) {\n return hit.hierarchy.lvl0;\n }\n\n var _ref = (internalDocSearchHit.__docsearch_parent ? (_internalDocSearchHit = internalDocSearchHit.__docsearch_parent) === null || _internalDocSearchHit === void 0 || (_internalDocSearchHit = _internalDocSearchHit._highlightResult) === null || _internalDocSearchHit === void 0 || (_internalDocSearchHit = _internalDocSearchHit.hierarchy) === null || _internalDocSearchHit === void 0 ? void 0 : _internalDocSearchHit.lvl0 : (_hit$_highlightResult = hit._highlightResult) === null || _hit$_highlightResult === void 0 || (_hit$_highlightResult = _hit$_highlightResult.hierarchy) === null || _hit$_highlightResult === void 0 ? void 0 : _hit$_highlightResult.lvl0) || {},\n value = _ref.value;\n\n return value && regexHasHighlightTags.test(value) ? value.replace(regexHighlightTags, '') : value;\n}","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport React from 'react';\nimport { SelectIcon, SourceIcon } from './icons';\nimport { Results } from './Results';\nimport { removeHighlightTags } from './utils';\nexport function ResultsScreen(props) {\n return /*#__PURE__*/React.createElement(\"div\", {\n className: \"DocSearch-Dropdown-Container\"\n }, props.state.collections.map(function (collection) {\n if (collection.items.length === 0) {\n return null;\n }\n\n var title = removeHighlightTags(collection.items[0]);\n return /*#__PURE__*/React.createElement(Results, _extends({}, props, {\n key: collection.source.sourceId,\n title: title,\n collection: collection,\n renderIcon: function renderIcon(_ref) {\n var _collection$items;\n\n var item = _ref.item,\n index = _ref.index;\n return /*#__PURE__*/React.createElement(React.Fragment, null, item.__docsearch_parent && /*#__PURE__*/React.createElement(\"svg\", {\n className: \"DocSearch-Hit-Tree\",\n viewBox: \"0 0 24 54\"\n }, /*#__PURE__*/React.createElement(\"g\", {\n stroke: \"currentColor\",\n fill: \"none\",\n fillRule: \"evenodd\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n }, item.__docsearch_parent !== ((_collection$items = collection.items[index + 1]) === null || _collection$items === void 0 ? void 0 : _collection$items.__docsearch_parent) ? /*#__PURE__*/React.createElement(\"path\", {\n d: \"M8 6v21M20 27H8.3\"\n }) : /*#__PURE__*/React.createElement(\"path\", {\n d: \"M8 6v42M20 27H8.3\"\n }))), /*#__PURE__*/React.createElement(\"div\", {\n className: \"DocSearch-Hit-icon\"\n }, /*#__PURE__*/React.createElement(SourceIcon, {\n type: item.type\n })));\n },\n renderAction: function renderAction() {\n return /*#__PURE__*/React.createElement(\"div\", {\n className: \"DocSearch-Hit-action\"\n }, /*#__PURE__*/React.createElement(SelectIcon, null));\n }\n }));\n }), props.resultsFooterComponent && /*#__PURE__*/React.createElement(\"section\", {\n className: \"DocSearch-HitsFooter\"\n }, /*#__PURE__*/React.createElement(props.resultsFooterComponent, {\n state: props.state\n })));\n}","import React from 'react';\nexport function RecentIcon() {\n return /*#__PURE__*/React.createElement(\"svg\", {\n width: \"20\",\n height: \"20\",\n viewBox: \"0 0 20 20\"\n }, /*#__PURE__*/React.createElement(\"g\", {\n stroke: \"currentColor\",\n fill: \"none\",\n fillRule: \"evenodd\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M3.18 6.6a8.23 8.23 0 1112.93 9.94h0a8.23 8.23 0 01-11.63 0\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M6.44 7.25H2.55V3.36M10.45 6v5.6M10.45 11.6L13 13\"\n })));\n}","import React from 'react';\nexport function StarIcon() {\n return /*#__PURE__*/React.createElement(\"svg\", {\n width: \"20\",\n height: \"20\",\n viewBox: \"0 0 20 20\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M10 14.2L5 17l1-5.6-4-4 5.5-.7 2.5-5 2.5 5 5.6.8-4 4 .9 5.5z\",\n stroke: \"currentColor\",\n fill: \"none\",\n fillRule: \"evenodd\",\n strokeLinejoin: \"round\"\n }));\n}","import React from 'react';\nexport function ResetIcon() {\n return /*#__PURE__*/React.createElement(\"svg\", {\n width: \"20\",\n height: \"20\",\n viewBox: \"0 0 20 20\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M10 10l5.09-5.09L10 10l5.09 5.09L10 10zm0 0L4.91 4.91 10 10l-5.09 5.09L10 10z\",\n stroke: \"currentColor\",\n fill: \"none\",\n fillRule: \"evenodd\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n }));\n}","var _excluded = [\"translations\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport React from 'react';\nimport { RecentIcon, ResetIcon, StarIcon } from './icons';\nimport { Results } from './Results';\nexport function StartScreen(_ref) {\n var _ref$translations = _ref.translations,\n translations = _ref$translations === void 0 ? {} : _ref$translations,\n props = _objectWithoutProperties(_ref, _excluded);\n\n var _translations$recentS = translations.recentSearchesTitle,\n recentSearchesTitle = _translations$recentS === void 0 ? 'Recent' : _translations$recentS,\n _translations$noRecen = translations.noRecentSearchesText,\n noRecentSearchesText = _translations$noRecen === void 0 ? 'No recent searches' : _translations$noRecen,\n _translations$saveRec = translations.saveRecentSearchButtonTitle,\n saveRecentSearchButtonTitle = _translations$saveRec === void 0 ? 'Save this search' : _translations$saveRec,\n _translations$removeR = translations.removeRecentSearchButtonTitle,\n removeRecentSearchButtonTitle = _translations$removeR === void 0 ? 'Remove this search from history' : _translations$removeR,\n _translations$favorit = translations.favoriteSearchesTitle,\n favoriteSearchesTitle = _translations$favorit === void 0 ? 'Favorite' : _translations$favorit,\n _translations$removeF = translations.removeFavoriteSearchButtonTitle,\n removeFavoriteSearchButtonTitle = _translations$removeF === void 0 ? 'Remove this search from favorites' : _translations$removeF;\n\n if (props.state.status === 'idle' && props.hasCollections === false) {\n if (props.disableUserPersonalization) {\n return null;\n }\n\n return /*#__PURE__*/React.createElement(\"div\", {\n className: \"DocSearch-StartScreen\"\n }, /*#__PURE__*/React.createElement(\"p\", {\n className: \"DocSearch-Help\"\n }, noRecentSearchesText));\n }\n\n if (props.hasCollections === false) {\n return null;\n }\n\n return /*#__PURE__*/React.createElement(\"div\", {\n className: \"DocSearch-Dropdown-Container\"\n }, /*#__PURE__*/React.createElement(Results, _extends({}, props, {\n title: recentSearchesTitle,\n collection: props.state.collections[0],\n renderIcon: function renderIcon() {\n return /*#__PURE__*/React.createElement(\"div\", {\n className: \"DocSearch-Hit-icon\"\n }, /*#__PURE__*/React.createElement(RecentIcon, null));\n },\n renderAction: function renderAction(_ref2) {\n var item = _ref2.item,\n runFavoriteTransition = _ref2.runFavoriteTransition,\n runDeleteTransition = _ref2.runDeleteTransition;\n return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(\"div\", {\n className: \"DocSearch-Hit-action\"\n }, /*#__PURE__*/React.createElement(\"button\", {\n className: \"DocSearch-Hit-action-button\",\n title: saveRecentSearchButtonTitle,\n type: \"submit\",\n onClick: function onClick(event) {\n event.preventDefault();\n event.stopPropagation();\n runFavoriteTransition(function () {\n props.favoriteSearches.add(item);\n props.recentSearches.remove(item);\n props.refresh();\n });\n }\n }, /*#__PURE__*/React.createElement(StarIcon, null))), /*#__PURE__*/React.createElement(\"div\", {\n className: \"DocSearch-Hit-action\"\n }, /*#__PURE__*/React.createElement(\"button\", {\n className: \"DocSearch-Hit-action-button\",\n title: removeRecentSearchButtonTitle,\n type: \"submit\",\n onClick: function onClick(event) {\n event.preventDefault();\n event.stopPropagation();\n runDeleteTransition(function () {\n props.recentSearches.remove(item);\n props.refresh();\n });\n }\n }, /*#__PURE__*/React.createElement(ResetIcon, null))));\n }\n })), /*#__PURE__*/React.createElement(Results, _extends({}, props, {\n title: favoriteSearchesTitle,\n collection: props.state.collections[1],\n renderIcon: function renderIcon() {\n return /*#__PURE__*/React.createElement(\"div\", {\n className: \"DocSearch-Hit-icon\"\n }, /*#__PURE__*/React.createElement(StarIcon, null));\n },\n renderAction: function renderAction(_ref3) {\n var item = _ref3.item,\n runDeleteTransition = _ref3.runDeleteTransition;\n return /*#__PURE__*/React.createElement(\"div\", {\n className: \"DocSearch-Hit-action\"\n }, /*#__PURE__*/React.createElement(\"button\", {\n className: \"DocSearch-Hit-action-button\",\n title: removeFavoriteSearchButtonTitle,\n type: \"submit\",\n onClick: function onClick(event) {\n event.preventDefault();\n event.stopPropagation();\n runDeleteTransition(function () {\n props.favoriteSearches.remove(item);\n props.refresh();\n });\n }\n }, /*#__PURE__*/React.createElement(ResetIcon, null)));\n }\n })));\n}","var _excluded = [\"translations\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport React from 'react';\nimport { ErrorScreen } from './ErrorScreen';\nimport { NoResultsScreen } from './NoResultsScreen';\nimport { ResultsScreen } from './ResultsScreen';\nimport { StartScreen } from './StartScreen';\nexport var ScreenState = React.memo(function (_ref) {\n var _ref$translations = _ref.translations,\n translations = _ref$translations === void 0 ? {} : _ref$translations,\n props = _objectWithoutProperties(_ref, _excluded);\n\n if (props.state.status === 'error') {\n return /*#__PURE__*/React.createElement(ErrorScreen, {\n translations: translations === null || translations === void 0 ? void 0 : translations.errorScreen\n });\n }\n\n var hasCollections = props.state.collections.some(function (collection) {\n return collection.items.length > 0;\n });\n\n if (!props.state.query) {\n return /*#__PURE__*/React.createElement(StartScreen, _extends({}, props, {\n hasCollections: hasCollections,\n translations: translations === null || translations === void 0 ? void 0 : translations.startScreen\n }));\n }\n\n if (hasCollections === false) {\n return /*#__PURE__*/React.createElement(NoResultsScreen, _extends({}, props, {\n translations: translations === null || translations === void 0 ? void 0 : translations.noResultsScreen\n }));\n }\n\n return /*#__PURE__*/React.createElement(ResultsScreen, props);\n}, function areEqual(_prevProps, nextProps) {\n // We don't update the screen when Autocomplete is loading or stalled to\n // avoid UI flashes:\n // - Empty screen → Results screen\n // - NoResults screen → NoResults screen with another query\n return nextProps.state.status === 'loading' || nextProps.state.status === 'stalled';\n});","import React from 'react';\nexport function LoadingIcon() {\n return /*#__PURE__*/React.createElement(\"svg\", {\n viewBox: \"0 0 38 38\",\n stroke: \"currentColor\",\n strokeOpacity: \".5\"\n }, /*#__PURE__*/React.createElement(\"g\", {\n fill: \"none\",\n fillRule: \"evenodd\"\n }, /*#__PURE__*/React.createElement(\"g\", {\n transform: \"translate(1 1)\",\n strokeWidth: \"2\"\n }, /*#__PURE__*/React.createElement(\"circle\", {\n strokeOpacity: \".3\",\n cx: \"18\",\n cy: \"18\",\n r: \"18\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M36 18c0-9.94-8.06-18-18-18\"\n }, /*#__PURE__*/React.createElement(\"animateTransform\", {\n attributeName: \"transform\",\n type: \"rotate\",\n from: \"0 18 18\",\n to: \"360 18 18\",\n dur: \"1s\",\n repeatCount: \"indefinite\"\n })))));\n}","var _excluded = [\"translations\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport React from 'react';\nimport { MAX_QUERY_SIZE } from './constants';\nimport { LoadingIcon } from './icons/LoadingIcon';\nimport { ResetIcon } from './icons/ResetIcon';\nimport { SearchIcon } from './icons/SearchIcon';\nexport function SearchBox(_ref) {\n var _ref$translations = _ref.translations,\n translations = _ref$translations === void 0 ? {} : _ref$translations,\n props = _objectWithoutProperties(_ref, _excluded);\n\n var _translations$resetBu = translations.resetButtonTitle,\n resetButtonTitle = _translations$resetBu === void 0 ? 'Clear the query' : _translations$resetBu,\n _translations$resetBu2 = translations.resetButtonAriaLabel,\n resetButtonAriaLabel = _translations$resetBu2 === void 0 ? 'Clear the query' : _translations$resetBu2,\n _translations$cancelB = translations.cancelButtonText,\n cancelButtonText = _translations$cancelB === void 0 ? 'Cancel' : _translations$cancelB,\n _translations$cancelB2 = translations.cancelButtonAriaLabel,\n cancelButtonAriaLabel = _translations$cancelB2 === void 0 ? 'Cancel' : _translations$cancelB2,\n _translations$searchI = translations.searchInputLabel,\n searchInputLabel = _translations$searchI === void 0 ? 'Search' : _translations$searchI;\n\n var _props$getFormProps = props.getFormProps({\n inputElement: props.inputRef.current\n }),\n onReset = _props$getFormProps.onReset;\n\n React.useEffect(function () {\n if (props.autoFocus && props.inputRef.current) {\n props.inputRef.current.focus();\n }\n }, [props.autoFocus, props.inputRef]);\n React.useEffect(function () {\n if (props.isFromSelection && props.inputRef.current) {\n props.inputRef.current.select();\n }\n }, [props.isFromSelection, props.inputRef]);\n return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(\"form\", {\n className: \"DocSearch-Form\",\n onSubmit: function onSubmit(event) {\n event.preventDefault();\n },\n onReset: onReset\n }, /*#__PURE__*/React.createElement(\"label\", _extends({\n className: \"DocSearch-MagnifierLabel\"\n }, props.getLabelProps()), /*#__PURE__*/React.createElement(SearchIcon, null), /*#__PURE__*/React.createElement(\"span\", {\n className: \"DocSearch-VisuallyHiddenForAccessibility\"\n }, searchInputLabel)), /*#__PURE__*/React.createElement(\"div\", {\n className: \"DocSearch-LoadingIndicator\"\n }, /*#__PURE__*/React.createElement(LoadingIcon, null)), /*#__PURE__*/React.createElement(\"input\", _extends({\n className: \"DocSearch-Input\",\n ref: props.inputRef\n }, props.getInputProps({\n inputElement: props.inputRef.current,\n autoFocus: props.autoFocus,\n maxLength: MAX_QUERY_SIZE\n }))), /*#__PURE__*/React.createElement(\"button\", {\n type: \"reset\",\n title: resetButtonTitle,\n className: \"DocSearch-Reset\",\n \"aria-label\": resetButtonAriaLabel,\n hidden: !props.state.query\n }, /*#__PURE__*/React.createElement(ResetIcon, null))), /*#__PURE__*/React.createElement(\"button\", {\n className: \"DocSearch-Cancel\",\n type: \"reset\",\n \"aria-label\": cancelButtonAriaLabel,\n onClick: props.onClose\n }, cancelButtonText));\n}","var _excluded = [\"_highlightResult\", \"_snippetResult\"];\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nfunction isLocalStorageSupported() {\n var key = '__TEST_KEY__';\n\n try {\n localStorage.setItem(key, '');\n localStorage.removeItem(key);\n return true;\n } catch (error) {\n return false;\n }\n}\n\nfunction createStorage(key) {\n if (isLocalStorageSupported() === false) {\n return {\n setItem: function setItem() {},\n getItem: function getItem() {\n return [];\n }\n };\n }\n\n return {\n setItem: function setItem(item) {\n return window.localStorage.setItem(key, JSON.stringify(item));\n },\n getItem: function getItem() {\n var item = window.localStorage.getItem(key);\n return item ? JSON.parse(item) : [];\n }\n };\n}\n\nexport function createStoredSearches(_ref) {\n var key = _ref.key,\n _ref$limit = _ref.limit,\n limit = _ref$limit === void 0 ? 5 : _ref$limit;\n var storage = createStorage(key);\n var items = storage.getItem().slice(0, limit);\n return {\n add: function add(item) {\n var _ref2 = item,\n _highlightResult = _ref2._highlightResult,\n _snippetResult = _ref2._snippetResult,\n hit = _objectWithoutProperties(_ref2, _excluded);\n\n var isQueryAlreadySaved = items.findIndex(function (x) {\n return x.objectID === hit.objectID;\n });\n\n if (isQueryAlreadySaved > -1) {\n items.splice(isQueryAlreadySaved, 1);\n }\n\n items.unshift(hit);\n items = items.slice(0, limit);\n storage.setItem(items);\n },\n remove: function remove(item) {\n items = items.filter(function (x) {\n return x.objectID !== item.objectID;\n });\n storage.setItem(items);\n },\n getAll: function getAll() {\n return items;\n }\n };\n}","function createBrowserLocalStorageCache(options) {\r\n const namespaceKey = `algoliasearch-client-js-${options.key}`;\r\n // eslint-disable-next-line functional/no-let\r\n let storage;\r\n const getStorage = () => {\r\n if (storage === undefined) {\r\n storage = options.localStorage || window.localStorage;\r\n }\r\n return storage;\r\n };\r\n const getNamespace = () => {\r\n return JSON.parse(getStorage().getItem(namespaceKey) || '{}');\r\n };\r\n const setNamespace = (namespace) => {\r\n getStorage().setItem(namespaceKey, JSON.stringify(namespace));\r\n };\r\n const removeOutdatedCacheItems = () => {\r\n const timeToLive = options.timeToLive ? options.timeToLive * 1000 : null;\r\n const namespace = getNamespace();\r\n const filteredNamespaceWithoutOldFormattedCacheItems = Object.fromEntries(Object.entries(namespace).filter(([, cacheItem]) => {\r\n return cacheItem.timestamp !== undefined;\r\n }));\r\n setNamespace(filteredNamespaceWithoutOldFormattedCacheItems);\r\n if (!timeToLive)\r\n return;\r\n const filteredNamespaceWithoutExpiredItems = Object.fromEntries(Object.entries(filteredNamespaceWithoutOldFormattedCacheItems).filter(([, cacheItem]) => {\r\n const currentTimestamp = new Date().getTime();\r\n const isExpired = cacheItem.timestamp + timeToLive < currentTimestamp;\r\n return !isExpired;\r\n }));\r\n setNamespace(filteredNamespaceWithoutExpiredItems);\r\n };\r\n return {\r\n get(key, defaultValue, events = {\r\n miss: () => Promise.resolve(),\r\n }) {\r\n return Promise.resolve()\r\n .then(() => {\r\n removeOutdatedCacheItems();\r\n const keyAsString = JSON.stringify(key);\r\n return getNamespace()[keyAsString];\r\n })\r\n .then(value => {\r\n return Promise.all([value ? value.value : defaultValue(), value !== undefined]);\r\n })\r\n .then(([value, exists]) => {\r\n return Promise.all([value, exists || events.miss(value)]);\r\n })\r\n .then(([value]) => value);\r\n },\r\n set(key, value) {\r\n return Promise.resolve().then(() => {\r\n const namespace = getNamespace();\r\n // eslint-disable-next-line functional/immutable-data\r\n namespace[JSON.stringify(key)] = {\r\n timestamp: new Date().getTime(),\r\n value,\r\n };\r\n getStorage().setItem(namespaceKey, JSON.stringify(namespace));\r\n return value;\r\n });\r\n },\r\n delete(key) {\r\n return Promise.resolve().then(() => {\r\n const namespace = getNamespace();\r\n // eslint-disable-next-line functional/immutable-data\r\n delete namespace[JSON.stringify(key)];\r\n getStorage().setItem(namespaceKey, JSON.stringify(namespace));\r\n });\r\n },\r\n clear() {\r\n return Promise.resolve().then(() => {\r\n getStorage().removeItem(namespaceKey);\r\n });\r\n },\r\n };\r\n}\n\n// @todo Add logger on options to debug when caches go wrong.\r\nfunction createFallbackableCache(options) {\r\n const caches = [...options.caches];\r\n const current = caches.shift(); // eslint-disable-line functional/immutable-data\r\n if (current === undefined) {\r\n return createNullCache();\r\n }\r\n return {\r\n get(key, defaultValue, events = {\r\n miss: () => Promise.resolve(),\r\n }) {\r\n return current.get(key, defaultValue, events).catch(() => {\r\n return createFallbackableCache({ caches }).get(key, defaultValue, events);\r\n });\r\n },\r\n set(key, value) {\r\n return current.set(key, value).catch(() => {\r\n return createFallbackableCache({ caches }).set(key, value);\r\n });\r\n },\r\n delete(key) {\r\n return current.delete(key).catch(() => {\r\n return createFallbackableCache({ caches }).delete(key);\r\n });\r\n },\r\n clear() {\r\n return current.clear().catch(() => {\r\n return createFallbackableCache({ caches }).clear();\r\n });\r\n },\r\n };\r\n}\n\nfunction createNullCache() {\r\n return {\r\n get(_key, defaultValue, events = {\r\n miss: () => Promise.resolve(),\r\n }) {\r\n const value = defaultValue();\r\n return value\r\n .then(result => Promise.all([result, events.miss(result)]))\r\n .then(([result]) => result);\r\n },\r\n set(_key, value) {\r\n return Promise.resolve(value);\r\n },\r\n delete(_key) {\r\n return Promise.resolve();\r\n },\r\n clear() {\r\n return Promise.resolve();\r\n },\r\n };\r\n}\n\nfunction createInMemoryCache(options = { serializable: true }) {\r\n // eslint-disable-next-line functional/no-let\r\n let cache = {};\r\n return {\r\n get(key, defaultValue, events = {\r\n miss: () => Promise.resolve(),\r\n }) {\r\n const keyAsString = JSON.stringify(key);\r\n if (keyAsString in cache) {\r\n return Promise.resolve(options.serializable ? JSON.parse(cache[keyAsString]) : cache[keyAsString]);\r\n }\r\n const promise = defaultValue();\r\n const miss = (events && events.miss) || (() => Promise.resolve());\r\n return promise.then((value) => miss(value)).then(() => promise);\r\n },\r\n set(key, value) {\r\n // eslint-disable-next-line functional/immutable-data\r\n cache[JSON.stringify(key)] = options.serializable ? JSON.stringify(value) : value;\r\n return Promise.resolve(value);\r\n },\r\n delete(key) {\r\n // eslint-disable-next-line functional/immutable-data\r\n delete cache[JSON.stringify(key)];\r\n return Promise.resolve();\r\n },\r\n clear() {\r\n cache = {};\r\n return Promise.resolve();\r\n },\r\n };\r\n}\n\nfunction createAuth(authMode, appId, apiKey) {\r\n const credentials = {\r\n 'x-algolia-api-key': apiKey,\r\n 'x-algolia-application-id': appId,\r\n };\r\n return {\r\n headers() {\r\n return authMode === AuthMode.WithinHeaders ? credentials : {};\r\n },\r\n queryParameters() {\r\n return authMode === AuthMode.WithinQueryParameters ? credentials : {};\r\n },\r\n };\r\n}\n\n// eslint-disable-next-line functional/prefer-readonly-type\r\nfunction shuffle(array) {\r\n let c = array.length - 1; // eslint-disable-line functional/no-let\r\n // eslint-disable-next-line functional/no-loop-statement\r\n for (c; c > 0; c--) {\r\n const b = Math.floor(Math.random() * (c + 1));\r\n const a = array[c];\r\n array[c] = array[b]; // eslint-disable-line functional/immutable-data, no-param-reassign\r\n array[b] = a; // eslint-disable-line functional/immutable-data, no-param-reassign\r\n }\r\n return array;\r\n}\r\nfunction addMethods(base, methods) {\r\n if (!methods) {\r\n return base;\r\n }\r\n Object.keys(methods).forEach(key => {\r\n // eslint-disable-next-line functional/immutable-data, no-param-reassign\r\n base[key] = methods[key](base);\r\n });\r\n return base;\r\n}\r\nfunction encode(format, ...args) {\r\n // eslint-disable-next-line functional/no-let\r\n let i = 0;\r\n return format.replace(/%s/g, () => encodeURIComponent(args[i++]));\r\n}\n\nconst version = '4.23.2';\n\nconst AuthMode = {\r\n /**\r\n * If auth credentials should be in query parameters.\r\n */\r\n WithinQueryParameters: 0,\r\n /**\r\n * If auth credentials should be in headers.\r\n */\r\n WithinHeaders: 1,\r\n};\n\nfunction createMappedRequestOptions(requestOptions, timeout) {\r\n const options = requestOptions || {};\r\n const data = options.data || {};\r\n Object.keys(options).forEach(key => {\r\n if (['timeout', 'headers', 'queryParameters', 'data', 'cacheable'].indexOf(key) === -1) {\r\n data[key] = options[key]; // eslint-disable-line functional/immutable-data\r\n }\r\n });\r\n return {\r\n data: Object.entries(data).length > 0 ? data : undefined,\r\n timeout: options.timeout || timeout,\r\n headers: options.headers || {},\r\n queryParameters: options.queryParameters || {},\r\n cacheable: options.cacheable,\r\n };\r\n}\n\nconst CallEnum = {\r\n /**\r\n * If the host is read only.\r\n */\r\n Read: 1,\r\n /**\r\n * If the host is write only.\r\n */\r\n Write: 2,\r\n /**\r\n * If the host is both read and write.\r\n */\r\n Any: 3,\r\n};\n\nconst HostStatusEnum = {\r\n Up: 1,\r\n Down: 2,\r\n Timeouted: 3,\r\n};\n\n// By default, API Clients at Algolia have expiration delay\r\n// of 5 mins. In the JavaScript client, we have 2 mins.\r\nconst EXPIRATION_DELAY = 2 * 60 * 1000;\r\nfunction createStatefulHost(host, status = HostStatusEnum.Up) {\r\n return {\r\n ...host,\r\n status,\r\n lastUpdate: Date.now(),\r\n };\r\n}\r\nfunction isStatefulHostUp(host) {\r\n return host.status === HostStatusEnum.Up || Date.now() - host.lastUpdate > EXPIRATION_DELAY;\r\n}\r\nfunction isStatefulHostTimeouted(host) {\r\n return (host.status === HostStatusEnum.Timeouted && Date.now() - host.lastUpdate <= EXPIRATION_DELAY);\r\n}\n\nfunction createStatelessHost(options) {\r\n if (typeof options === 'string') {\r\n return {\r\n protocol: 'https',\r\n url: options,\r\n accept: CallEnum.Any,\r\n };\r\n }\r\n return {\r\n protocol: options.protocol || 'https',\r\n url: options.url,\r\n accept: options.accept || CallEnum.Any,\r\n };\r\n}\n\nconst MethodEnum = {\r\n Delete: 'DELETE',\r\n Get: 'GET',\r\n Post: 'POST',\r\n Put: 'PUT',\r\n};\n\nfunction createRetryableOptions(hostsCache, statelessHosts) {\r\n return Promise.all(statelessHosts.map(statelessHost => {\r\n return hostsCache.get(statelessHost, () => {\r\n return Promise.resolve(createStatefulHost(statelessHost));\r\n });\r\n })).then(statefulHosts => {\r\n const hostsUp = statefulHosts.filter(host => isStatefulHostUp(host));\r\n const hostsTimeouted = statefulHosts.filter(host => isStatefulHostTimeouted(host));\r\n /**\r\n * Note, we put the hosts that previously timeouted on the end of the list.\r\n */\r\n const hostsAvailable = [...hostsUp, ...hostsTimeouted];\r\n const statelessHostsAvailable = hostsAvailable.length > 0\r\n ? hostsAvailable.map(host => createStatelessHost(host))\r\n : statelessHosts;\r\n return {\r\n getTimeout(timeoutsCount, baseTimeout) {\r\n /**\r\n * Imagine that you have 4 hosts, if timeouts will increase\r\n * on the following way: 1 (timeouted) > 4 (timeouted) > 5 (200)\r\n *\r\n * Note that, the very next request, we start from the previous timeout\r\n *\r\n * 5 (timeouted) > 6 (timeouted) > 7 ...\r\n *\r\n * This strategy may need to be reviewed, but is the strategy on the our\r\n * current v3 version.\r\n */\r\n const timeoutMultiplier = hostsTimeouted.length === 0 && timeoutsCount === 0\r\n ? 1\r\n : hostsTimeouted.length + 3 + timeoutsCount;\r\n return timeoutMultiplier * baseTimeout;\r\n },\r\n statelessHosts: statelessHostsAvailable,\r\n };\r\n });\r\n}\n\nconst isNetworkError = ({ isTimedOut, status }) => {\r\n return !isTimedOut && ~~status === 0;\r\n};\r\nconst isRetryable = (response) => {\r\n const status = response.status;\r\n const isTimedOut = response.isTimedOut;\r\n return (isTimedOut || isNetworkError(response) || (~~(status / 100) !== 2 && ~~(status / 100) !== 4));\r\n};\r\nconst isSuccess = ({ status }) => {\r\n return ~~(status / 100) === 2;\r\n};\r\nconst retryDecision = (response, outcomes) => {\r\n if (isRetryable(response)) {\r\n return outcomes.onRetry(response);\r\n }\r\n if (isSuccess(response)) {\r\n return outcomes.onSuccess(response);\r\n }\r\n return outcomes.onFail(response);\r\n};\n\nfunction retryableRequest(transporter, statelessHosts, request, requestOptions) {\r\n const stackTrace = []; // eslint-disable-line functional/prefer-readonly-type\r\n /**\r\n * First we prepare the payload that do not depend from hosts.\r\n */\r\n const data = serializeData(request, requestOptions);\r\n const headers = serializeHeaders(transporter, requestOptions);\r\n const method = request.method;\r\n // On `GET`, the data is proxied to query parameters.\r\n const dataQueryParameters = request.method !== MethodEnum.Get\r\n ? {}\r\n : {\r\n ...request.data,\r\n ...requestOptions.data,\r\n };\r\n const queryParameters = {\r\n 'x-algolia-agent': transporter.userAgent.value,\r\n ...transporter.queryParameters,\r\n ...dataQueryParameters,\r\n ...requestOptions.queryParameters,\r\n };\r\n let timeoutsCount = 0; // eslint-disable-line functional/no-let\r\n const retry = (hosts, // eslint-disable-line functional/prefer-readonly-type\r\n getTimeout) => {\r\n /**\r\n * We iterate on each host, until there is no host left.\r\n */\r\n const host = hosts.pop(); // eslint-disable-line functional/immutable-data\r\n if (host === undefined) {\r\n throw createRetryError(stackTraceWithoutCredentials(stackTrace));\r\n }\r\n const payload = {\r\n data,\r\n headers,\r\n method,\r\n url: serializeUrl(host, request.path, queryParameters),\r\n connectTimeout: getTimeout(timeoutsCount, transporter.timeouts.connect),\r\n responseTimeout: getTimeout(timeoutsCount, requestOptions.timeout),\r\n };\r\n /**\r\n * The stackFrame is pushed to the stackTrace so we\r\n * can have information about onRetry and onFailure\r\n * decisions.\r\n */\r\n const pushToStackTrace = (response) => {\r\n const stackFrame = {\r\n request: payload,\r\n response,\r\n host,\r\n triesLeft: hosts.length,\r\n };\r\n // eslint-disable-next-line functional/immutable-data\r\n stackTrace.push(stackFrame);\r\n return stackFrame;\r\n };\r\n const decisions = {\r\n onSuccess: response => deserializeSuccess(response),\r\n onRetry(response) {\r\n const stackFrame = pushToStackTrace(response);\r\n /**\r\n * If response is a timeout, we increaset the number of\r\n * timeouts so we can increase the timeout later.\r\n */\r\n if (response.isTimedOut) {\r\n timeoutsCount++;\r\n }\r\n return Promise.all([\r\n /**\r\n * Failures are individually send the logger, allowing\r\n * the end user to debug / store stack frames even\r\n * when a retry error does not happen.\r\n */\r\n transporter.logger.info('Retryable failure', stackFrameWithoutCredentials(stackFrame)),\r\n /**\r\n * We also store the state of the host in failure cases. If the host, is\r\n * down it will remain down for the next 2 minutes. In a timeout situation,\r\n * this host will be added end of the list of hosts on the next request.\r\n */\r\n transporter.hostsCache.set(host, createStatefulHost(host, response.isTimedOut ? HostStatusEnum.Timeouted : HostStatusEnum.Down)),\r\n ]).then(() => retry(hosts, getTimeout));\r\n },\r\n onFail(response) {\r\n pushToStackTrace(response);\r\n throw deserializeFailure(response, stackTraceWithoutCredentials(stackTrace));\r\n },\r\n };\r\n return transporter.requester.send(payload).then(response => {\r\n return retryDecision(response, decisions);\r\n });\r\n };\r\n /**\r\n * Finally, for each retryable host perform request until we got a non\r\n * retryable response. Some notes here:\r\n *\r\n * 1. The reverse here is applied so we can apply a `pop` later on => more performant.\r\n * 2. We also get from the retryable options a timeout multiplier that is tailored\r\n * for the current context.\r\n */\r\n return createRetryableOptions(transporter.hostsCache, statelessHosts).then(options => {\r\n return retry([...options.statelessHosts].reverse(), options.getTimeout);\r\n });\r\n}\n\nfunction createTransporter(options) {\r\n const { hostsCache, logger, requester, requestsCache, responsesCache, timeouts, userAgent, hosts, queryParameters, headers, } = options;\r\n const transporter = {\r\n hostsCache,\r\n logger,\r\n requester,\r\n requestsCache,\r\n responsesCache,\r\n timeouts,\r\n userAgent,\r\n headers,\r\n queryParameters,\r\n hosts: hosts.map(host => createStatelessHost(host)),\r\n read(request, requestOptions) {\r\n /**\r\n * First, we compute the user request options. Now, keep in mind,\r\n * that using request options the user is able to modified the intire\r\n * payload of the request. Such as headers, query parameters, and others.\r\n */\r\n const mappedRequestOptions = createMappedRequestOptions(requestOptions, transporter.timeouts.read);\r\n const createRetryableRequest = () => {\r\n /**\r\n * Then, we prepare a function factory that contains the construction of\r\n * the retryable request. At this point, we may *not* perform the actual\r\n * request. But we want to have the function factory ready.\r\n */\r\n return retryableRequest(transporter, transporter.hosts.filter(host => (host.accept & CallEnum.Read) !== 0), request, mappedRequestOptions);\r\n };\r\n /**\r\n * Once we have the function factory ready, we need to determine of the\r\n * request is \"cacheable\" - should be cached. Note that, once again,\r\n * the user can force this option.\r\n */\r\n const cacheable = mappedRequestOptions.cacheable !== undefined\r\n ? mappedRequestOptions.cacheable\r\n : request.cacheable;\r\n /**\r\n * If is not \"cacheable\", we immediatly trigger the retryable request, no\r\n * need to check cache implementations.\r\n */\r\n if (cacheable !== true) {\r\n return createRetryableRequest();\r\n }\r\n /**\r\n * If the request is \"cacheable\", we need to first compute the key to ask\r\n * the cache implementations if this request is on progress or if the\r\n * response already exists on the cache.\r\n */\r\n const key = {\r\n request,\r\n mappedRequestOptions,\r\n transporter: {\r\n queryParameters: transporter.queryParameters,\r\n headers: transporter.headers,\r\n },\r\n };\r\n /**\r\n * With the computed key, we first ask the responses cache\r\n * implemention if this request was been resolved before.\r\n */\r\n return transporter.responsesCache.get(key, () => {\r\n /**\r\n * If the request has never resolved before, we actually ask if there\r\n * is a current request with the same key on progress.\r\n */\r\n return transporter.requestsCache.get(key, () => {\r\n return (transporter.requestsCache\r\n /**\r\n * Finally, if there is no request in progress with the same key,\r\n * this `createRetryableRequest()` will actually trigger the\r\n * retryable request.\r\n */\r\n .set(key, createRetryableRequest())\r\n .then(response => Promise.all([transporter.requestsCache.delete(key), response]), err => Promise.all([transporter.requestsCache.delete(key), Promise.reject(err)]))\r\n .then(([_, response]) => response));\r\n });\r\n }, {\r\n /**\r\n * Of course, once we get this response back from the server, we\r\n * tell response cache to actually store the received response\r\n * to be used later.\r\n */\r\n miss: response => transporter.responsesCache.set(key, response),\r\n });\r\n },\r\n write(request, requestOptions) {\r\n /**\r\n * On write requests, no cache mechanisms are applied, and we\r\n * proxy the request immediately to the requester.\r\n */\r\n return retryableRequest(transporter, transporter.hosts.filter(host => (host.accept & CallEnum.Write) !== 0), request, createMappedRequestOptions(requestOptions, transporter.timeouts.write));\r\n },\r\n };\r\n return transporter;\r\n}\n\nfunction createUserAgent(version) {\r\n const userAgent = {\r\n value: `Algolia for JavaScript (${version})`,\r\n add(options) {\r\n const addedUserAgent = `; ${options.segment}${options.version !== undefined ? ` (${options.version})` : ''}`;\r\n if (userAgent.value.indexOf(addedUserAgent) === -1) {\r\n // eslint-disable-next-line functional/immutable-data\r\n userAgent.value = `${userAgent.value}${addedUserAgent}`;\r\n }\r\n return userAgent;\r\n },\r\n };\r\n return userAgent;\r\n}\n\nfunction deserializeSuccess(response) {\r\n // eslint-disable-next-line functional/no-try-statement\r\n try {\r\n return JSON.parse(response.content);\r\n }\r\n catch (e) {\r\n throw createDeserializationError(e.message, response);\r\n }\r\n}\r\nfunction deserializeFailure({ content, status }, stackFrame) {\r\n // eslint-disable-next-line functional/no-let\r\n let message = content;\r\n // eslint-disable-next-line functional/no-try-statement\r\n try {\r\n message = JSON.parse(content).message;\r\n }\r\n catch (e) {\r\n // ..\r\n }\r\n return createApiError(message, status, stackFrame);\r\n}\n\nfunction serializeUrl(host, path, queryParameters) {\r\n const queryParametersAsString = serializeQueryParameters(queryParameters);\r\n // eslint-disable-next-line functional/no-let\r\n let url = `${host.protocol}://${host.url}/${path.charAt(0) === '/' ? path.substr(1) : path}`;\r\n if (queryParametersAsString.length) {\r\n url += `?${queryParametersAsString}`;\r\n }\r\n return url;\r\n}\r\nfunction serializeQueryParameters(parameters) {\r\n const isObjectOrArray = (value) => Object.prototype.toString.call(value) === '[object Object]' ||\r\n Object.prototype.toString.call(value) === '[object Array]';\r\n return Object.keys(parameters)\r\n .map(key => encode('%s=%s', key, isObjectOrArray(parameters[key]) ? JSON.stringify(parameters[key]) : parameters[key]))\r\n .join('&');\r\n}\r\nfunction serializeData(request, requestOptions) {\r\n if (request.method === MethodEnum.Get ||\r\n (request.data === undefined && requestOptions.data === undefined)) {\r\n return undefined;\r\n }\r\n const data = Array.isArray(request.data)\r\n ? request.data\r\n : { ...request.data, ...requestOptions.data };\r\n return JSON.stringify(data);\r\n}\r\nfunction serializeHeaders(transporter, requestOptions) {\r\n const headers = {\r\n ...transporter.headers,\r\n ...requestOptions.headers,\r\n };\r\n const serializedHeaders = {};\r\n Object.keys(headers).forEach(header => {\r\n const value = headers[header];\r\n // @ts-ignore\r\n // eslint-disable-next-line functional/immutable-data\r\n serializedHeaders[header.toLowerCase()] = value;\r\n });\r\n return serializedHeaders;\r\n}\n\nfunction stackTraceWithoutCredentials(stackTrace) {\r\n return stackTrace.map(stackFrame => stackFrameWithoutCredentials(stackFrame));\r\n}\r\nfunction stackFrameWithoutCredentials(stackFrame) {\r\n const modifiedHeaders = stackFrame.request.headers['x-algolia-api-key']\r\n ? { 'x-algolia-api-key': '*****' }\r\n : {};\r\n return {\r\n ...stackFrame,\r\n request: {\r\n ...stackFrame.request,\r\n headers: {\r\n ...stackFrame.request.headers,\r\n ...modifiedHeaders,\r\n },\r\n },\r\n };\r\n}\n\nfunction createApiError(message, status, transporterStackTrace) {\r\n return {\r\n name: 'ApiError',\r\n message,\r\n status,\r\n transporterStackTrace,\r\n };\r\n}\n\nfunction createDeserializationError(message, response) {\r\n return {\r\n name: 'DeserializationError',\r\n message,\r\n response,\r\n };\r\n}\n\nfunction createRetryError(transporterStackTrace) {\r\n return {\r\n name: 'RetryError',\r\n message: 'Unreachable hosts - your application id may be incorrect. If the error persists, contact support@algolia.com.',\r\n transporterStackTrace,\r\n };\r\n}\n\nconst createSearchClient = options => {\r\n const appId = options.appId;\r\n const auth = createAuth(options.authMode !== undefined ? options.authMode : AuthMode.WithinHeaders, appId, options.apiKey);\r\n const transporter = createTransporter({\r\n hosts: [\r\n { url: `${appId}-dsn.algolia.net`, accept: CallEnum.Read },\r\n { url: `${appId}.algolia.net`, accept: CallEnum.Write },\r\n ].concat(shuffle([\r\n { url: `${appId}-1.algolianet.com` },\r\n { url: `${appId}-2.algolianet.com` },\r\n { url: `${appId}-3.algolianet.com` },\r\n ])),\r\n ...options,\r\n headers: {\r\n ...auth.headers(),\r\n ...{ 'content-type': 'application/x-www-form-urlencoded' },\r\n ...options.headers,\r\n },\r\n queryParameters: {\r\n ...auth.queryParameters(),\r\n ...options.queryParameters,\r\n },\r\n });\r\n const base = {\r\n transporter,\r\n appId,\r\n addAlgoliaAgent(segment, version) {\r\n transporter.userAgent.add({ segment, version });\r\n },\r\n clearCache() {\r\n return Promise.all([\r\n transporter.requestsCache.clear(),\r\n transporter.responsesCache.clear(),\r\n ]).then(() => undefined);\r\n },\r\n };\r\n return addMethods(base, options.methods);\r\n};\n\nconst customRequest = (base) => {\r\n return (request, requestOptions) => {\r\n if (request.method === MethodEnum.Get) {\r\n return base.transporter.read(request, requestOptions);\r\n }\r\n return base.transporter.write(request, requestOptions);\r\n };\r\n};\n\nconst initIndex = (base) => {\r\n return (indexName, options = {}) => {\r\n const searchIndex = {\r\n transporter: base.transporter,\r\n appId: base.appId,\r\n indexName,\r\n };\r\n return addMethods(searchIndex, options.methods);\r\n };\r\n};\n\nconst multipleQueries = (base) => {\r\n return (queries, requestOptions) => {\r\n const requests = queries.map(query => {\r\n return {\r\n ...query,\r\n params: serializeQueryParameters(query.params || {}),\r\n };\r\n });\r\n return base.transporter.read({\r\n method: MethodEnum.Post,\r\n path: '1/indexes/*/queries',\r\n data: {\r\n requests,\r\n },\r\n cacheable: true,\r\n }, requestOptions);\r\n };\r\n};\n\nconst multipleSearchForFacetValues = (base) => {\r\n return (queries, requestOptions) => {\r\n return Promise.all(queries.map(query => {\r\n const { facetName, facetQuery, ...params } = query.params;\r\n return initIndex(base)(query.indexName, {\r\n methods: { searchForFacetValues },\r\n }).searchForFacetValues(facetName, facetQuery, {\r\n ...requestOptions,\r\n ...params,\r\n });\r\n }));\r\n };\r\n};\n\nconst findAnswers = (base) => {\r\n return (query, queryLanguages, requestOptions) => {\r\n return base.transporter.read({\r\n method: MethodEnum.Post,\r\n path: encode('1/answers/%s/prediction', base.indexName),\r\n data: {\r\n query,\r\n queryLanguages,\r\n },\r\n cacheable: true,\r\n }, requestOptions);\r\n };\r\n};\n\nconst search = (base) => {\r\n return (query, requestOptions) => {\r\n return base.transporter.read({\r\n method: MethodEnum.Post,\r\n path: encode('1/indexes/%s/query', base.indexName),\r\n data: {\r\n query,\r\n },\r\n cacheable: true,\r\n }, requestOptions);\r\n };\r\n};\n\nconst searchForFacetValues = (base) => {\r\n return (facetName, facetQuery, requestOptions) => {\r\n return base.transporter.read({\r\n method: MethodEnum.Post,\r\n path: encode('1/indexes/%s/facets/%s/query', base.indexName, facetName),\r\n data: {\r\n facetQuery,\r\n },\r\n cacheable: true,\r\n }, requestOptions);\r\n };\r\n};\n\nconst LogLevelEnum = {\r\n Debug: 1,\r\n Info: 2,\r\n Error: 3,\r\n};\n\n/* eslint no-console: 0 */\r\nfunction createConsoleLogger(logLevel) {\r\n return {\r\n debug(message, args) {\r\n if (LogLevelEnum.Debug >= logLevel) {\r\n console.debug(message, args);\r\n }\r\n return Promise.resolve();\r\n },\r\n info(message, args) {\r\n if (LogLevelEnum.Info >= logLevel) {\r\n console.info(message, args);\r\n }\r\n return Promise.resolve();\r\n },\r\n error(message, args) {\r\n console.error(message, args);\r\n return Promise.resolve();\r\n },\r\n };\r\n}\n\nconst getRecommendations = base => {\r\n return (queries, requestOptions) => {\r\n const requests = queries.map(query => ({\r\n ...query,\r\n // The `threshold` param is required by the endpoint to make it easier\r\n // to provide a default value later, so we default it in the client\r\n // so that users don't have to provide a value.\r\n threshold: query.threshold || 0,\r\n }));\r\n return base.transporter.read({\r\n method: MethodEnum.Post,\r\n path: '1/indexes/*/recommendations',\r\n data: {\r\n requests,\r\n },\r\n cacheable: true,\r\n }, requestOptions);\r\n };\r\n};\n\nfunction createBrowserXhrRequester() {\r\n return {\r\n send(request) {\r\n return new Promise((resolve) => {\r\n const baseRequester = new XMLHttpRequest();\r\n baseRequester.open(request.method, request.url, true);\r\n Object.keys(request.headers).forEach(key => baseRequester.setRequestHeader(key, request.headers[key]));\r\n const createTimeout = (timeout, content) => {\r\n return setTimeout(() => {\r\n baseRequester.abort();\r\n resolve({\r\n status: 0,\r\n content,\r\n isTimedOut: true,\r\n });\r\n }, timeout * 1000);\r\n };\r\n const connectTimeout = createTimeout(request.connectTimeout, 'Connection timeout');\r\n // eslint-disable-next-line functional/no-let\r\n let responseTimeout;\r\n // eslint-disable-next-line functional/immutable-data\r\n baseRequester.onreadystatechange = () => {\r\n if (baseRequester.readyState > baseRequester.OPENED && responseTimeout === undefined) {\r\n clearTimeout(connectTimeout);\r\n responseTimeout = createTimeout(request.responseTimeout, 'Socket timeout');\r\n }\r\n };\r\n // eslint-disable-next-line functional/immutable-data\r\n baseRequester.onerror = () => {\r\n // istanbul ignore next\r\n if (baseRequester.status === 0) {\r\n clearTimeout(connectTimeout);\r\n clearTimeout(responseTimeout);\r\n resolve({\r\n content: baseRequester.responseText || 'Network request failed',\r\n status: baseRequester.status,\r\n isTimedOut: false,\r\n });\r\n }\r\n };\r\n // eslint-disable-next-line functional/immutable-data\r\n baseRequester.onload = () => {\r\n clearTimeout(connectTimeout);\r\n clearTimeout(responseTimeout);\r\n resolve({\r\n content: baseRequester.responseText,\r\n status: baseRequester.status,\r\n isTimedOut: false,\r\n });\r\n };\r\n baseRequester.send(request.data);\r\n });\r\n },\r\n };\r\n}\n\nfunction algoliasearch(appId, apiKey, options) {\r\n const commonOptions = {\r\n appId,\r\n apiKey,\r\n timeouts: {\r\n connect: 1,\r\n read: 2,\r\n write: 30,\r\n },\r\n requester: createBrowserXhrRequester(),\r\n logger: createConsoleLogger(LogLevelEnum.Error),\r\n responsesCache: createInMemoryCache(),\r\n requestsCache: createInMemoryCache({ serializable: false }),\r\n hostsCache: createFallbackableCache({\r\n caches: [\r\n createBrowserLocalStorageCache({ key: `${version}-${appId}` }),\r\n createInMemoryCache(),\r\n ],\r\n }),\r\n userAgent: createUserAgent(version).add({\r\n segment: 'Browser',\r\n version: 'lite',\r\n }),\r\n authMode: AuthMode.WithinQueryParameters,\r\n };\r\n return createSearchClient({\r\n ...commonOptions,\r\n ...options,\r\n methods: {\r\n search: multipleQueries,\r\n searchForFacetValues: multipleSearchForFacetValues,\r\n multipleQueries,\r\n multipleSearchForFacetValues,\r\n customRequest,\r\n initIndex: base => (indexName) => {\r\n return initIndex(base)(indexName, {\r\n methods: { search, searchForFacetValues, findAnswers },\r\n });\r\n },\r\n getRecommendations,\r\n },\r\n });\r\n}\r\n// eslint-disable-next-line functional/immutable-data\r\nalgoliasearch.version = version;\n\nexport default algoliasearch;\n","export var version = '3.6.0';","export function noop() {}","export function identity(x) {\n return x;\n}","/**\n * Detect when an event is modified with a special key to let the browser\n * trigger its default behavior.\n */\nexport function isModifierEvent(event) {\n var isMiddleClick = event.button === 1;\n return isMiddleClick || event.altKey || event.ctrlKey || event.metaKey || event.shiftKey;\n}","export function groupBy(values, predicate, maxResultsPerGroup) {\n return values.reduce(function (acc, item) {\n var key = predicate(item);\n\n if (!acc.hasOwnProperty(key)) {\n acc[key] = [];\n } // We limit each section to show 5 hits maximum.\n // This acts as a frontend alternative to `distinct`.\n\n\n if (acc[key].length < (maxResultsPerGroup || 5)) {\n acc[key].push(item);\n }\n\n return acc;\n }, {});\n}","var _excluded = [\"footer\", \"searchBox\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\n\nfunction _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport { createAutocomplete } from '@algolia/autocomplete-core';\nimport React from 'react';\nimport { MAX_QUERY_SIZE } from './constants';\nimport { Footer } from './Footer';\nimport { Hit } from './Hit';\nimport { ScreenState } from './ScreenState';\nimport { SearchBox } from './SearchBox';\nimport { createStoredSearches } from './stored-searches';\nimport { useSearchClient } from './useSearchClient';\nimport { useTouchEvents } from './useTouchEvents';\nimport { useTrapFocus } from './useTrapFocus';\nimport { groupBy, identity, noop, removeHighlightTags, isModifierEvent } from './utils';\nexport function DocSearchModal(_ref) {\n var appId = _ref.appId,\n apiKey = _ref.apiKey,\n indexName = _ref.indexName,\n _ref$placeholder = _ref.placeholder,\n placeholder = _ref$placeholder === void 0 ? 'Search docs' : _ref$placeholder,\n searchParameters = _ref.searchParameters,\n maxResultsPerGroup = _ref.maxResultsPerGroup,\n _ref$onClose = _ref.onClose,\n onClose = _ref$onClose === void 0 ? noop : _ref$onClose,\n _ref$transformItems = _ref.transformItems,\n transformItems = _ref$transformItems === void 0 ? identity : _ref$transformItems,\n _ref$hitComponent = _ref.hitComponent,\n hitComponent = _ref$hitComponent === void 0 ? Hit : _ref$hitComponent,\n _ref$resultsFooterCom = _ref.resultsFooterComponent,\n resultsFooterComponent = _ref$resultsFooterCom === void 0 ? function () {\n return null;\n } : _ref$resultsFooterCom,\n navigator = _ref.navigator,\n _ref$initialScrollY = _ref.initialScrollY,\n initialScrollY = _ref$initialScrollY === void 0 ? 0 : _ref$initialScrollY,\n _ref$transformSearchC = _ref.transformSearchClient,\n transformSearchClient = _ref$transformSearchC === void 0 ? identity : _ref$transformSearchC,\n _ref$disableUserPerso = _ref.disableUserPersonalization,\n disableUserPersonalization = _ref$disableUserPerso === void 0 ? false : _ref$disableUserPerso,\n _ref$initialQuery = _ref.initialQuery,\n initialQueryFromProp = _ref$initialQuery === void 0 ? '' : _ref$initialQuery,\n _ref$translations = _ref.translations,\n translations = _ref$translations === void 0 ? {} : _ref$translations,\n getMissingResultsUrl = _ref.getMissingResultsUrl,\n _ref$insights = _ref.insights,\n insights = _ref$insights === void 0 ? false : _ref$insights;\n\n var footerTranslations = translations.footer,\n searchBoxTranslations = translations.searchBox,\n screenStateTranslations = _objectWithoutProperties(translations, _excluded);\n\n var _React$useState = React.useState({\n query: '',\n collections: [],\n completion: null,\n context: {},\n isOpen: false,\n activeItemId: null,\n status: 'idle'\n }),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n state = _React$useState2[0],\n setState = _React$useState2[1];\n\n var containerRef = React.useRef(null);\n var modalRef = React.useRef(null);\n var formElementRef = React.useRef(null);\n var dropdownRef = React.useRef(null);\n var inputRef = React.useRef(null);\n var snippetLength = React.useRef(10);\n var initialQueryFromSelection = React.useRef(typeof window !== 'undefined' ? window.getSelection().toString().slice(0, MAX_QUERY_SIZE) : '').current;\n var initialQuery = React.useRef(initialQueryFromProp || initialQueryFromSelection).current;\n var searchClient = useSearchClient(appId, apiKey, transformSearchClient);\n var favoriteSearches = React.useRef(createStoredSearches({\n key: \"__DOCSEARCH_FAVORITE_SEARCHES__\".concat(indexName),\n limit: 10\n })).current;\n var recentSearches = React.useRef(createStoredSearches({\n key: \"__DOCSEARCH_RECENT_SEARCHES__\".concat(indexName),\n // We display 7 recent searches and there's no favorites, but only\n // 4 when there are favorites.\n limit: favoriteSearches.getAll().length === 0 ? 7 : 4\n })).current;\n var saveRecentSearch = React.useCallback(function saveRecentSearch(item) {\n if (disableUserPersonalization) {\n return;\n } // We don't store `content` record, but their parent if available.\n\n\n var search = item.type === 'content' ? item.__docsearch_parent : item; // We save the recent search only if it's not favorited.\n\n if (search && favoriteSearches.getAll().findIndex(function (x) {\n return x.objectID === search.objectID;\n }) === -1) {\n recentSearches.add(search);\n }\n }, [favoriteSearches, recentSearches, disableUserPersonalization]);\n var sendItemClickEvent = React.useCallback(function (item) {\n if (!state.context.algoliaInsightsPlugin || !item.__autocomplete_id) return;\n var insightsItem = item;\n var insightsClickParams = {\n eventName: 'Item Selected',\n index: insightsItem.__autocomplete_indexName,\n items: [insightsItem],\n positions: [item.__autocomplete_id],\n queryID: insightsItem.__autocomplete_queryID\n };\n state.context.algoliaInsightsPlugin.insights.clickedObjectIDsAfterSearch(insightsClickParams);\n }, [state.context.algoliaInsightsPlugin]);\n var autocomplete = React.useMemo(function () {\n return createAutocomplete({\n id: 'docsearch',\n defaultActiveItemId: 0,\n placeholder: placeholder,\n openOnFocus: true,\n initialState: {\n query: initialQuery,\n context: {\n searchSuggestions: []\n }\n },\n insights: insights,\n navigator: navigator,\n onStateChange: function onStateChange(props) {\n setState(props.state);\n },\n getSources: function getSources(_ref2) {\n var query = _ref2.query,\n sourcesState = _ref2.state,\n setContext = _ref2.setContext,\n setStatus = _ref2.setStatus;\n\n if (!query) {\n if (disableUserPersonalization) {\n return [];\n }\n\n return [{\n sourceId: 'recentSearches',\n onSelect: function onSelect(_ref3) {\n var item = _ref3.item,\n event = _ref3.event;\n saveRecentSearch(item);\n\n if (!isModifierEvent(event)) {\n onClose();\n }\n },\n getItemUrl: function getItemUrl(_ref4) {\n var item = _ref4.item;\n return item.url;\n },\n getItems: function getItems() {\n return recentSearches.getAll();\n }\n }, {\n sourceId: 'favoriteSearches',\n onSelect: function onSelect(_ref5) {\n var item = _ref5.item,\n event = _ref5.event;\n saveRecentSearch(item);\n\n if (!isModifierEvent(event)) {\n onClose();\n }\n },\n getItemUrl: function getItemUrl(_ref6) {\n var item = _ref6.item;\n return item.url;\n },\n getItems: function getItems() {\n return favoriteSearches.getAll();\n }\n }];\n }\n\n var insightsActive = Boolean(insights);\n return searchClient.search([{\n query: query,\n indexName: indexName,\n params: _objectSpread({\n attributesToRetrieve: ['hierarchy.lvl0', 'hierarchy.lvl1', 'hierarchy.lvl2', 'hierarchy.lvl3', 'hierarchy.lvl4', 'hierarchy.lvl5', 'hierarchy.lvl6', 'content', 'type', 'url'],\n attributesToSnippet: [\"hierarchy.lvl1:\".concat(snippetLength.current), \"hierarchy.lvl2:\".concat(snippetLength.current), \"hierarchy.lvl3:\".concat(snippetLength.current), \"hierarchy.lvl4:\".concat(snippetLength.current), \"hierarchy.lvl5:\".concat(snippetLength.current), \"hierarchy.lvl6:\".concat(snippetLength.current), \"content:\".concat(snippetLength.current)],\n snippetEllipsisText: '…',\n highlightPreTag: '',\n highlightPostTag: '',\n hitsPerPage: 20,\n clickAnalytics: insightsActive\n }, searchParameters)\n }]).catch(function (error) {\n // The Algolia `RetryError` happens when all the servers have\n // failed, meaning that there's no chance the response comes\n // back. This is the right time to display an error.\n // See https://github.com/algolia/algoliasearch-client-javascript/blob/2ffddf59bc765cd1b664ee0346b28f00229d6e12/packages/transporter/src/errors/createRetryError.ts#L5\n if (error.name === 'RetryError') {\n setStatus('error');\n }\n\n throw error;\n }).then(function (_ref7) {\n var results = _ref7.results;\n var firstResult = results[0];\n var hits = firstResult.hits,\n nbHits = firstResult.nbHits;\n var sources = groupBy(hits, function (hit) {\n return removeHighlightTags(hit);\n }, maxResultsPerGroup); // We store the `lvl0`s to display them as search suggestions\n // in the \"no results\" screen.\n\n if (sourcesState.context.searchSuggestions.length < Object.keys(sources).length) {\n setContext({\n searchSuggestions: Object.keys(sources)\n });\n }\n\n setContext({\n nbHits: nbHits\n });\n var insightsParams = {};\n\n if (insightsActive) {\n insightsParams = {\n __autocomplete_indexName: indexName,\n __autocomplete_queryID: firstResult.queryID,\n __autocomplete_algoliaCredentials: {\n appId: appId,\n apiKey: apiKey\n }\n };\n }\n\n return Object.values(sources).map(function (items, index) {\n return {\n sourceId: \"hits\".concat(index),\n onSelect: function onSelect(_ref8) {\n var item = _ref8.item,\n event = _ref8.event;\n saveRecentSearch(item);\n\n if (!isModifierEvent(event)) {\n onClose();\n }\n },\n getItemUrl: function getItemUrl(_ref9) {\n var item = _ref9.item;\n return item.url;\n },\n getItems: function getItems() {\n return Object.values(groupBy(items, function (item) {\n return item.hierarchy.lvl1;\n }, maxResultsPerGroup)).map(transformItems).map(function (groupedHits) {\n return groupedHits.map(function (item) {\n var parent = null;\n var potentialParent = groupedHits.find(function (siblingItem) {\n return siblingItem.type === 'lvl1' && siblingItem.hierarchy.lvl1 === item.hierarchy.lvl1;\n });\n\n if (item.type !== 'lvl1' && potentialParent) {\n parent = potentialParent;\n }\n\n return _objectSpread(_objectSpread({}, item), {}, {\n __docsearch_parent: parent\n }, insightsParams);\n });\n }).flat();\n }\n };\n });\n });\n }\n });\n }, [indexName, searchParameters, maxResultsPerGroup, searchClient, onClose, recentSearches, favoriteSearches, saveRecentSearch, initialQuery, placeholder, navigator, transformItems, disableUserPersonalization, insights, appId, apiKey]);\n var getEnvironmentProps = autocomplete.getEnvironmentProps,\n getRootProps = autocomplete.getRootProps,\n refresh = autocomplete.refresh;\n useTouchEvents({\n getEnvironmentProps: getEnvironmentProps,\n panelElement: dropdownRef.current,\n formElement: formElementRef.current,\n inputElement: inputRef.current\n });\n useTrapFocus({\n container: containerRef.current\n });\n React.useEffect(function () {\n document.body.classList.add('DocSearch--active');\n return function () {\n var _window$scrollTo, _window;\n\n document.body.classList.remove('DocSearch--active'); // IE11 doesn't support `scrollTo` so we check that the method exists\n // first.\n\n (_window$scrollTo = (_window = window).scrollTo) === null || _window$scrollTo === void 0 || _window$scrollTo.call(_window, 0, initialScrollY);\n }; // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n React.useEffect(function () {\n var isMobileMediaQuery = window.matchMedia('(max-width: 768px)');\n\n if (isMobileMediaQuery.matches) {\n snippetLength.current = 5;\n }\n }, []);\n React.useEffect(function () {\n if (dropdownRef.current) {\n dropdownRef.current.scrollTop = 0;\n }\n }, [state.query]); // We don't focus the input when there's an initial query (i.e. Selection\n // Search) because users rather want to see the results directly, without the\n // keyboard appearing.\n // We therefore need to refresh the autocomplete instance to load all the\n // results, which is usually triggered on focus.\n\n React.useEffect(function () {\n if (initialQuery.length > 0) {\n refresh();\n\n if (inputRef.current) {\n inputRef.current.focus();\n }\n }\n }, [initialQuery, refresh]); // We rely on a CSS property to set the modal height to the full viewport height\n // because all mobile browsers don't compute their height the same way.\n // See https://css-tricks.com/the-trick-to-viewport-units-on-mobile/\n\n React.useEffect(function () {\n function setFullViewportHeight() {\n if (modalRef.current) {\n var vh = window.innerHeight * 0.01;\n modalRef.current.style.setProperty('--docsearch-vh', \"\".concat(vh, \"px\"));\n }\n }\n\n setFullViewportHeight();\n window.addEventListener('resize', setFullViewportHeight);\n return function () {\n window.removeEventListener('resize', setFullViewportHeight);\n };\n }, []);\n return /*#__PURE__*/React.createElement(\"div\", _extends({\n ref: containerRef\n }, getRootProps({\n 'aria-expanded': true\n }), {\n className: ['DocSearch', 'DocSearch-Container', state.status === 'stalled' && 'DocSearch-Container--Stalled', state.status === 'error' && 'DocSearch-Container--Errored'].filter(Boolean).join(' '),\n role: \"button\",\n tabIndex: 0,\n onMouseDown: function onMouseDown(event) {\n if (event.target === event.currentTarget) {\n onClose();\n }\n }\n }), /*#__PURE__*/React.createElement(\"div\", {\n className: \"DocSearch-Modal\",\n ref: modalRef\n }, /*#__PURE__*/React.createElement(\"header\", {\n className: \"DocSearch-SearchBar\",\n ref: formElementRef\n }, /*#__PURE__*/React.createElement(SearchBox, _extends({}, autocomplete, {\n state: state,\n autoFocus: initialQuery.length === 0,\n inputRef: inputRef,\n isFromSelection: Boolean(initialQuery) && initialQuery === initialQueryFromSelection,\n translations: searchBoxTranslations,\n onClose: onClose\n }))), /*#__PURE__*/React.createElement(\"div\", {\n className: \"DocSearch-Dropdown\",\n ref: dropdownRef\n }, /*#__PURE__*/React.createElement(ScreenState, _extends({}, autocomplete, {\n indexName: indexName,\n state: state,\n hitComponent: hitComponent,\n resultsFooterComponent: resultsFooterComponent,\n disableUserPersonalization: disableUserPersonalization,\n recentSearches: recentSearches,\n favoriteSearches: favoriteSearches,\n inputRef: inputRef,\n translations: screenStateTranslations,\n getMissingResultsUrl: getMissingResultsUrl,\n onItemClick: function onItemClick(item, event) {\n // If insights is active, send insights click event\n sendItemClickEvent(item);\n saveRecentSearch(item);\n\n if (!isModifierEvent(event)) {\n onClose();\n }\n }\n }))), /*#__PURE__*/React.createElement(\"footer\", {\n className: \"DocSearch-Footer\"\n }, /*#__PURE__*/React.createElement(Footer, {\n translations: footerTranslations\n }))));\n}","import algoliasearch from 'algoliasearch/dist/algoliasearch-lite.esm.browser';\nimport React from 'react';\nimport { version } from './version';\nexport function useSearchClient(appId, apiKey, transformSearchClient) {\n var searchClient = React.useMemo(function () {\n var client = algoliasearch(appId, apiKey);\n client.addAlgoliaAgent('docsearch', version); // Since DocSearch.js relies on DocSearch React with an alias to Preact,\n // we cannot add the `docsearch-react` user agent by default, otherwise\n // it would also be sent on a DocSearch.js integration.\n // We therefore only add the `docsearch-react` user agent if `docsearch.js`\n // is not present.\n\n if (/docsearch.js \\(.*\\)/.test(client.transporter.userAgent.value) === false) {\n client.addAlgoliaAgent('docsearch-react', version);\n }\n\n return transformSearchClient(client);\n }, [appId, apiKey, transformSearchClient]);\n return searchClient;\n}","import React from 'react';\nexport function useTouchEvents(_ref) {\n var getEnvironmentProps = _ref.getEnvironmentProps,\n panelElement = _ref.panelElement,\n formElement = _ref.formElement,\n inputElement = _ref.inputElement;\n React.useEffect(function () {\n if (!(panelElement && formElement && inputElement)) {\n return undefined;\n }\n\n var _getEnvironmentProps = getEnvironmentProps({\n panelElement: panelElement,\n formElement: formElement,\n inputElement: inputElement\n }),\n onTouchStart = _getEnvironmentProps.onTouchStart,\n onTouchMove = _getEnvironmentProps.onTouchMove;\n\n window.addEventListener('touchstart', onTouchStart);\n window.addEventListener('touchmove', onTouchMove);\n return function () {\n window.removeEventListener('touchstart', onTouchStart);\n window.removeEventListener('touchmove', onTouchMove);\n };\n }, [getEnvironmentProps, panelElement, formElement, inputElement]);\n}","import React from 'react';\nexport function useTrapFocus(_ref) {\n var container = _ref.container;\n React.useEffect(function () {\n if (!container) {\n return undefined;\n }\n\n var focusableElements = container.querySelectorAll('a[href]:not([disabled]), button:not([disabled]), input:not([disabled])');\n var firstElement = focusableElements[0];\n var lastElement = focusableElements[focusableElements.length - 1];\n\n function trapFocus(event) {\n if (event.key !== 'Tab') {\n return;\n }\n\n if (event.shiftKey) {\n if (document.activeElement === firstElement) {\n event.preventDefault();\n lastElement.focus();\n }\n } else if (document.activeElement === lastElement) {\n event.preventDefault();\n firstElement.focus();\n }\n }\n\n container.addEventListener('keydown', trapFocus);\n return function () {\n container.removeEventListener('keydown', trapFocus);\n };\n }, [container]);\n}","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\n\nfunction _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nimport React from 'react';\nimport { createPortal } from 'react-dom';\nimport { DocSearchButton } from './DocSearchButton';\nimport { DocSearchModal } from './DocSearchModal';\nimport { useDocSearchKeyboardEvents } from './useDocSearchKeyboardEvents';\nexport function DocSearch(props) {\n var _props$translations, _props$translations2;\n\n var searchButtonRef = React.useRef(null);\n\n var _React$useState = React.useState(false),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n isOpen = _React$useState2[0],\n setIsOpen = _React$useState2[1];\n\n var _React$useState3 = React.useState((props === null || props === void 0 ? void 0 : props.initialQuery) || undefined),\n _React$useState4 = _slicedToArray(_React$useState3, 2),\n initialQuery = _React$useState4[0],\n setInitialQuery = _React$useState4[1];\n\n var onOpen = React.useCallback(function () {\n setIsOpen(true);\n }, [setIsOpen]);\n var onClose = React.useCallback(function () {\n setIsOpen(false);\n }, [setIsOpen]);\n var onInput = React.useCallback(function (event) {\n setIsOpen(true);\n setInitialQuery(event.key);\n }, [setIsOpen, setInitialQuery]);\n useDocSearchKeyboardEvents({\n isOpen: isOpen,\n onOpen: onOpen,\n onClose: onClose,\n onInput: onInput,\n searchButtonRef: searchButtonRef\n });\n return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(DocSearchButton, {\n ref: searchButtonRef,\n translations: props === null || props === void 0 || (_props$translations = props.translations) === null || _props$translations === void 0 ? void 0 : _props$translations.button,\n onClick: onOpen\n }), isOpen && createPortal( /*#__PURE__*/React.createElement(DocSearchModal, _extends({}, props, {\n initialScrollY: window.scrollY,\n initialQuery: initialQuery,\n translations: props === null || props === void 0 || (_props$translations2 = props.translations) === null || _props$translations2 === void 0 ? void 0 : _props$translations2.modal,\n onClose: onClose\n })), document.body));\n}","import React from 'react';\n\nfunction isEditingContent(event) {\n var element = event.target;\n var tagName = element.tagName;\n return element.isContentEditable || tagName === 'INPUT' || tagName === 'SELECT' || tagName === 'TEXTAREA';\n}\n\nexport function useDocSearchKeyboardEvents(_ref) {\n var isOpen = _ref.isOpen,\n onOpen = _ref.onOpen,\n onClose = _ref.onClose,\n onInput = _ref.onInput,\n searchButtonRef = _ref.searchButtonRef;\n React.useEffect(function () {\n function onKeyDown(event) {\n var _event$key;\n\n function open() {\n // We check that no other DocSearch modal is showing before opening\n // another one.\n if (!document.body.classList.contains('DocSearch--active')) {\n onOpen();\n }\n }\n\n if (event.keyCode === 27 && isOpen || // The `Cmd+K` shortcut both opens and closes the modal.\n // We need to check for `event.key` because it can be `undefined` with\n // Chrome's autofill feature.\n // See https://github.com/paperjs/paper.js/issues/1398\n ((_event$key = event.key) === null || _event$key === void 0 ? void 0 : _event$key.toLowerCase()) === 'k' && (event.metaKey || event.ctrlKey) || // The `/` shortcut opens but doesn't close the modal because it's\n // a character.\n !isEditingContent(event) && event.key === '/' && !isOpen) {\n event.preventDefault();\n\n if (isOpen) {\n onClose();\n } else if (!document.body.classList.contains('DocSearch--active')) {\n open();\n }\n }\n\n if (searchButtonRef && searchButtonRef.current === document.activeElement && onInput) {\n if (/[a-zA-Z0-9]/.test(String.fromCharCode(event.keyCode))) {\n onInput(event);\n }\n }\n }\n\n window.addEventListener('keydown', onKeyDown);\n return function () {\n window.removeEventListener('keydown', onKeyDown);\n };\n }, [isOpen, onOpen, onClose, onInput, searchButtonRef]);\n}","import React, { useCallback, useEffect, useRef } from 'react'\nimport { createGlobalStyle, css } from 'styled-components'\nimport { useAppDispatch, useAppSelector } from 'hooks/useRedux'\nimport { selectKeyNavigating } from 'components/KeyEvents/keyEventsReducer'\nimport { DocSearch } from '@docsearch/react'\nimport { buttonBareStyles } from 'components/Button/ButtonBare'\nimport { linkContentStyles } from 'components/Link/LinkContent'\nimport { createPlaceholderStyles } from 'utils/createPlaceholderStyles'\nimport { createSquareSizeStyles } from 'utils/createSquareSizeStyles'\nimport { BRAND_GRADIENT_BACKGROUND_STYLES } from 'consts/gradients'\nimport { BRAND_GRADIENT_TEXT_STYLES } from 'consts/gradients'\nimport { visuallyHiddenStyles } from 'utils/visuallyHiddenStyles'\nimport { ALGOLIA_CLASSNAMES, ALGOLIA_SEARCH_CONFIG } from 'consts/algoliaSearch'\nimport { MODALS } from 'consts/modal'\nimport { MEDIA } from 'consts/breakpoints'\nimport { LAYERS } from 'consts/layers'\nimport { SPACINGS } from 'consts/spacings'\nimport { THEME_KEYS, THEME_PREFIX, COLORS } from 'consts/themes'\nimport { FONT_SIZES, FONT_WEIGHTS } from 'consts/fontSizes'\nimport { BORDER_RADIUSES, BORDER_SIZES } from 'consts/border'\nimport { KEY_NAVIGATING_STYLES } from 'consts/keyEvents'\nimport { isBrowser } from 'utils/isBrowser'\nimport {\n selectIsModalOpen,\n setModalClosed,\n setModalOpen\n} from 'components/Modal/modalReducer'\nimport {\n searchButtonIconStyles,\n searchButtonStyles\n} from 'components/Search/SearchButton'\n\nconst MODAL_MAX_WIDTH = '56rem'\nconst INPUT_BORDER_SIZE = '0.2rem'\nconst SVG_STROKE_WIDTH = '0.14rem'\nconst INPUT_HEIGHT = SPACINGS.NINE\nconst BUTTON_WIDTH = SPACINGS.EIGHT\nconst DESKTOP_END_SPACING = SPACINGS.TEN\nconst EDGE_SPACING = SPACINGS.TWO\n\nconst modalStyles = css`\n .DocSearch-Container {\n z-index: ${LAYERS.SEARCH};\n position: fixed;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n\n &:before {\n position: absolute;\n opacity: 0.9;\n background-color: ${COLORS.BACKGROUND_SITE};\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n pointer-events: none;\n content: '';\n display: flex;\n }\n }\n\n .DocSearch-Container a {\n text-decoration: none;\n }\n\n .DocSearch-Modal {\n padding: ${EDGE_SPACING};\n box-shadow: 0 0 0 ${BORDER_SIZES.DETAIL} ${COLORS.DETAIL_LOW_CONTRAST};\n background-color: ${COLORS.BACKGROUND_SITE};\n z-index: ${LAYERS.STEP};\n position: relative;\n width: 100%;\n display: flex;\n flex-direction: column;\n height: 100vh;\n\n ${MEDIA.DESKTOP} {\n border-radius: ${BORDER_RADIUSES.SOFT};\n max-width: ${MODAL_MAX_WIDTH};\n margin: ${DESKTOP_END_SPACING} auto;\n height: calc(100vh - ${DESKTOP_END_SPACING} * 2);\n }\n }\n`\n\nconst headerStyles = css`\n .DocSearch-SearchBar {\n display: flex;\n flex: 0 0 auto;\n }\n\n .DocSearch-Form {\n padding: ${INPUT_BORDER_SIZE};\n position: relative;\n width: 100%;\n border-radius: ${BORDER_RADIUSES.BOX};\n ${BRAND_GRADIENT_BACKGROUND_STYLES};\n }\n`\n\nconst contentStyles = css`\n .DocSearch-NoResults,\n .DocSearch-StartScreen,\n .DocSearch-ErrorScreen {\n color: ${COLORS.TEXT_LOW_CONTRAST};\n padding: ${SPACINGS.SIX} 0;\n font-size: ${FONT_SIZES.COMPLEMENTARY};\n margin: 0 auto;\n text-align: center;\n width: 80%;\n }\n\n .DocSearch-Screen-Icon {\n color: ${COLORS.DETAIL_HIGH_CONTRAST};\n padding-bottom: ${EDGE_SPACING};\n\n > svg {\n ${createSquareSizeStyles('4rem')}\n }\n }\n\n .DocSearch-Title {\n color: ${COLORS.TEXT_HIGH_CONTRAST};\n margin-bottom: ${SPACINGS.THREE};\n font-size: ${FONT_SIZES.H4};\n }\n\n .DocSearch-Help a {\n ${linkContentStyles};\n ${KEY_NAVIGATING_STYLES};\n }\n\n .DocSearch-Dropdown {\n overflow-y: auto;\n overflow-x: hidden;\n flex: 1 1 0;\n }\n\n .DocSearch-Help {\n font-size: ${FONT_SIZES.COMPLEMENTARY};\n margin: 0;\n user-select: none;\n }\n\n .DocSearch-Hits mark {\n ${BRAND_GRADIENT_TEXT_STYLES};\n }\n\n .DocSearch-HitsFooter {\n color: ${COLORS.TEXT_LOW_CONTRAST};\n font-size: ${FONT_SIZES.COMPLEMENTARY};\n display: flex;\n justify-content: center;\n }\n\n .DocSearch-HitsFooter a {\n padding-top: ${EDGE_SPACING};\n margin-bottom: ${EDGE_SPACING};\n border-bottom: ${BORDER_SIZES.DETAIL} solid;\n color: inherit;\n display: inline-flex;\n }\n\n .DocSearch-Hit {\n padding-bottom: ${SPACINGS.CUSTOM(({ ONE }) => ONE - 0.2)};\n border-radius: ${BORDER_RADIUSES.BOX};\n display: flex;\n position: relative;\n }\n\n @media screen and (prefers-reduced-motion: reduce) {\n .DocSearch-Hit--deleting {\n transition: none;\n }\n }\n\n .DocSearch-Hit--deleting {\n opacity: 0;\n transition: all 250ms linear;\n }\n\n @media screen and (prefers-reduced-motion: reduce) {\n .DocSearch-Hit--favoriting {\n transition: none;\n }\n }\n\n .DocSearch-Hit--favoriting {\n transform: scale(0);\n transform-origin: top center;\n transition: all 250ms linear;\n transition-delay: 250ms;\n }\n\n .DocSearch-Hit a {\n ${KEY_NAVIGATING_STYLES};\n outline-offset: -${BORDER_SIZES.OUTLINE};\n background-color: ${COLORS.BACKGROUND_CODE};\n padding-left: ${EDGE_SPACING};\n border-radius: ${BORDER_RADIUSES.BOX};\n display: block;\n width: 100%;\n }\n\n .DocSearch-Hit-source {\n background-color: ${COLORS.BACKGROUND_SITE};\n color: ${COLORS.TEXT_HIGH_CONTRAST};\n margin: 0 -${SPACINGS.CUSTOM(({ ONE }) => ONE - 0.2)};\n padding: ${SPACINGS.CUSTOM(({ ONE }) => ONE + 0.2)}\n ${SPACINGS.CUSTOM(({ ONE }) => ONE - 0.2)} 0;\n font-size: ${FONT_SIZES.COMPLEMENTARY};\n font-weight: ${FONT_WEIGHTS.SEMI_BOLD};\n line-height: 3.2rem;\n position: sticky;\n top: 0;\n z-index: 10;\n }\n\n .DocSearch-Hit-Tree {\n ${MEDIA.COMPACT} {\n display: none;\n }\n ${MEDIA.DESKTOP} {\n color: ${COLORS.DETAIL_HIGH_CONTRAST};\n height: ${INPUT_HEIGHT};\n opacity: 0.5;\n stroke-width: ${SVG_STROKE_WIDTH};\n width: ${SPACINGS.FOUR};\n }\n }\n\n .DocSearch-Hit[aria-selected='true'] a {\n position: relative;\n display: block;\n\n &:before,\n &:after {\n content: '';\n position: absolute;\n pointer-events: none;\n top: 0;\n bottom: 0;\n left: 0;\n ${BRAND_GRADIENT_BACKGROUND_STYLES};\n }\n\n &:before {\n width: 0.4rem;\n }\n &:after {\n border-radius: ${BORDER_RADIUSES.BOX};\n right: 0;\n opacity: 0.07;\n }\n }\n\n .DocSearch-Hit-Container {\n color: ${COLORS.TEXT_MEDIUM_CONTRAST};\n height: ${INPUT_HEIGHT};\n padding: 0 ${EDGE_SPACING} 0 0;\n align-items: center;\n display: flex;\n flex-direction: row;\n }\n\n .DocSearch-Hit-icon {\n ${createSquareSizeStyles('2rem')}\n color: ${COLORS.DETAIL_HIGH_CONTRAST};\n stroke-width: ${SVG_STROKE_WIDTH};\n }\n\n .DocSearch-Hit-action {\n ${createSquareSizeStyles('2.2rem')};\n color: ${COLORS.DETAIL_HIGH_CONTRAST};\n stroke-width: ${SVG_STROKE_WIDTH};\n align-items: center;\n display: flex;\n\n > svg {\n ${createSquareSizeStyles('1.8rem')};\n display: block;\n }\n }\n\n .DocSearch-Hit-action + .DocSearch-Hit-action {\n margin-left: ${SPACINGS.ONE};\n }\n\n .DocSearch-Hit-action-button {\n ${buttonBareStyles};\n color: inherit;\n padding: ${SPACINGS.CUSTOM(({ ONE }) => ONE - 0.4)};\n }\n\n svg.DocSearch-Hit-Select-Icon {\n display: none;\n }\n\n .DocSearch-Hit[aria-selected='true'] .DocSearch-Hit-Select-Icon {\n display: block;\n }\n\n .DocSearch-Hit-action-button:hover path,\n .DocSearch-Hit-action-button:focus path {\n fill: ${COLORS.TEXT_MEDIUM_CONTRAST};\n }\n\n .DocSearch-Hit-content-wrapper {\n display: flex;\n flex: 1 1 auto;\n flex-direction: column;\n font-weight: ${FONT_WEIGHTS.MEDIUM};\n justify-content: center;\n line-height: 1.2em;\n margin: 0 ${SPACINGS.CUSTOM(({ ONE }) => ONE + 0.2)};\n overflow-x: hidden;\n position: relative;\n text-overflow: ellipsis;\n white-space: nowrap;\n width: 80%;\n }\n\n .DocSearch-Hit-title {\n font-size: ${FONT_SIZES.CUSTOM(\n ({ COMPLEMENTARY }) => COMPLEMENTARY + 0.04\n )};\n }\n\n .DocSearch-Hit-path {\n color: ${COLORS.TEXT_LOW_CONTRAST};\n font-size: ${FONT_SIZES.DETAIL};\n }\n\n .DocSearch-Hit[aria-selected='true'] .DocSearch-Hit-title,\n .DocSearch-Hit[aria-selected='true'] mark,\n .DocSearch-Hit[aria-selected='true'] .DocSearch-Hit-text,\n .DocSearch-Hit[aria-selected='true'] .DocSearch-Hit-path,\n .DocSearch-Hit[aria-selected='true'] .DocSearch-Hit-icon,\n .DocSearch-Hit[aria-selected='true'] .DocSearch-Hit-action,\n .DocSearch-Hit[aria-selected='true'] .DocSearch-Hit-Tree {\n color: ${COLORS.TEXT_HIGH_CONTRAST} !important;\n }\n\n .DocSearch-NoResults-Prefill-List {\n padding-bottom: ${SPACINGS.THREE};\n\n > ul {\n padding-top: ${SPACINGS.ONE};\n font-size: ${FONT_SIZES.COMPLEMENTARY};\n display: inline-block;\n }\n\n li {\n color: ${COLORS.TEXT_HIGH_CONTRAST};\n list-style-position: inside;\n list-style-type: '» ';\n text-align: left;\n }\n }\n\n .DocSearch-Prefill {\n ${buttonBareStyles};\n ${linkContentStyles};\n padding-top: ${SPACINGS.ONE};\n padding-bottom: ${SPACINGS.ONE};\n }\n`\n\nconst footerStyles = css`\n .DocSearch-Footer {\n flex: 0 0 auto;\n padding-top: ${EDGE_SPACING};\n display: flex;\n flex-direction: row-reverse;\n flex-shrink: 0;\n width: 100%;\n justify-content: space-between;\n align-items: center;\n }\n\n .DocSearch-Logo a {\n ${KEY_NAVIGATING_STYLES};\n display: flex;\n }\n\n .DocSearch-Logo svg {\n color: #5468ff;\n margin-left: ${SPACINGS.CUSTOM(({ ONE }) => ONE + 0.2)};\n }\n\n .DocSearch-Label {\n color: ${COLORS.TEXT_LOW_CONTRAST};\n font-size: ${FONT_SIZES.DETAIL};\n line-height: 1.9rem;\n }\n\n .DocSearch-Commands {\n color: ${COLORS.TEXT_LOW_CONTRAST};\n display: flex;\n list-style: none;\n margin: 0;\n padding: 0;\n\n ${MEDIA.COMPACT} {\n display: none;\n }\n }\n\n .DocSearch-Commands li {\n align-items: center;\n display: flex;\n }\n\n .DocSearch-Commands li:not(:last-of-type) {\n margin-right: ${SPACINGS.CUSTOM(({ ONE }) => ONE + 0.2)};;\n }\n\n .DocSearch-Commands-Key {\n align-items: center;\n border-radius: ${BORDER_RADIUSES.LINE};\n background: linear-gradient(\n -225deg,\n ${COLORS.DETAIL_MEDIUM_CONTRAST} 0%,\n ${COLORS.DETAIL_HIGH_CONTRAST} 100%\n );\n box-shadow: inset 0 -0.2rem 0 0 ${COLORS.DETAIL_LOW_CONTRAST};,\n inset 0 0 0.1rem 0.1rem ${COLORS.DETAIL_MEDIUM_CONTRAST},\n 0 0.1rem 0.2rem 0.1rem rgba(${\n COLORS.DETAIL_HIGH_CONTRAST_RGB_VALUE\n }, 0.4);\n display: flex;\n height: 1.8rem;\n justify-content: center;\n margin-right: 0.4em;\n padding-bottom: 0.1rem;\n width: 2rem;\n }\n\n .${THEME_PREFIX}${THEME_KEYS.LIGHT} {\n .DocSearch-Commands-Key {\n background: linear-gradient(\n -225deg,\n ${COLORS.DETAIL_HIGH_CONTRAST} 0%,\n ${COLORS.DETAIL_MEDIUM_CONTRAST} 100%\n );\n box-shadow: inset 0 -0.2rem 0 0 ${COLORS.DETAIL_HIGH_CONTRAST},\n inset 0 0 0.1rem 0.1rem ${COLORS.DETAIL_MEDIUM_CONTRAST},\n 0 0.1rem 0.2rem 0.1rem rgba(${\n COLORS.DETAIL_LOW_CONTRAST_RGB_VALUE\n }, 0.4);\n }\n }\n .${THEME_PREFIX}${THEME_KEYS.DARK} {\n .DocSearch-Commands-Key {\n background: linear-gradient(\n -225deg,\n ${COLORS.DETAIL_MEDIUM_CONTRAST} 0%,\n ${COLORS.DETAIL_HIGH_CONTRAST} 100%\n );\n box-shadow: inset 0 -0.2rem 0 0 ${COLORS.DETAIL_LOW_CONTRAST};,\n inset 0 0 0.1rem 0.1rem ${COLORS.DETAIL_MEDIUM_CONTRAST},\n 0 0.1rem 0.2rem 0.1rem rgba(${\n COLORS.DETAIL_HIGH_CONTRAST_RGB_VALUE\n }, 0.4);\n }\n }\n`\n\nconst inputStyles = css`\n .DocSearch-Input {\n ${createPlaceholderStyles(COLORS.TEXT_LOW_CONTRAST)};\n ${KEY_NAVIGATING_STYLES};\n height: calc(${INPUT_HEIGHT} - (${INPUT_BORDER_SIZE} * 2));\n padding-left: ${BUTTON_WIDTH};\n padding-right: ${BUTTON_WIDTH};\n -webkit-appearance: none;\n appearance: none;\n border-radius: ${BORDER_RADIUSES.BOX};\n width: 100%;\n font-size: ${FONT_SIZES.H4};\n background-color: ${COLORS.BACKGROUND_SITE};\n color: ${COLORS.TEXT_BODY};\n border: 0;\n }\n\n .DocSearch-Input::-ms-clear {\n display: none;\n ${createSquareSizeStyles('0')};\n }\n .DocSearch-Input::-ms-reveal {\n display: none;\n ${createSquareSizeStyles('0')};\n }\n .DocSearch-Input::-webkit-search-decoration,\n .DocSearch-Input::-webkit-search-cancel-button,\n .DocSearch-Input::-webkit-search-results-button,\n .DocSearch-Input::-webkit-search-results-decoration {\n display: none;\n }\n\n .DocSearch-VisuallyHiddenForAccessibility {\n ${visuallyHiddenStyles};\n }\n`\n\nconst toggleButtonStyles = css`\n .DocSearch-Button {\n ${searchButtonStyles};\n\n &:hover {\n box-shadow: none;\n }\n }\n .DocSearch-Button-Placeholder,\n .DocSearch-Button-Keys {\n ${visuallyHiddenStyles}\n }\n .DocSearch-Search-Icon {\n ${searchButtonIconStyles};\n }\n`\n\nconst magnifyerButtonStyles = css`\n .DocSearch-MagnifierLabel {\n display: flex;\n width: ${BUTTON_WIDTH};\n top: ${INPUT_BORDER_SIZE};\n bottom: ${INPUT_BORDER_SIZE};\n position: absolute;\n align-items: center;\n justify-content: center;\n\n > svg {\n ${createSquareSizeStyles('2.35rem')};\n }\n }\n\n .DocSearch-Container--Stalled .DocSearch-MagnifierLabel {\n display: none;\n }\n`\n\nconst resetButtonStyles = css`\n .DocSearch-Reset {\n ${buttonBareStyles};\n width: ${BUTTON_WIDTH};\n top: ${INPUT_BORDER_SIZE};\n bottom: ${INPUT_BORDER_SIZE};\n right: ${INPUT_BORDER_SIZE};\n display: flex;\n position: absolute;\n align-items: center;\n justify-content: center;\n stroke-width: 0.2rem;\n color: ${COLORS.TEXT_HIGH_CONTRAST};\n\n > svg {\n ${createSquareSizeStyles('2.35rem')};\n }\n }\n\n .DocSearch-Reset[hidden] {\n display: none;\n }\n`\n\nconst cancelButtonStyles = css`\n .DocSearch-Cancel {\n ${buttonBareStyles};\n color: ${COLORS.TEXT_BODY};\n height: ${INPUT_HEIGHT};\n display: flex;\n align-items: center;\n margin-left: ${SPACINGS.CUSTOM(({ TWO }) => TWO - 0.2)};\n }\n`\n\nconst loadingIndicatorStyles = css`\n .DocSearch-LoadingIndicator {\n width: ${BUTTON_WIDTH};\n top: ${INPUT_BORDER_SIZE};\n bottom: ${INPUT_BORDER_SIZE};\n position: absolute;\n align-items: center;\n justify-content: center;\n color: ${COLORS.TEXT_HIGH_CONTRAST};\n display: none;\n\n > svg {\n ${createSquareSizeStyles('2.35rem')};\n }\n }\n\n .DocSearch-Container--Stalled .DocSearch-LoadingIndicator {\n display: flex;\n }\n`\n\nconst SearchStyles = createGlobalStyle<{ $isKeyNavigating: boolean }>`\n ${modalStyles};\n ${headerStyles};\n ${contentStyles};\n ${footerStyles};\n ${inputStyles};\n ${toggleButtonStyles};\n ${magnifyerButtonStyles};\n ${resetButtonStyles};\n ${cancelButtonStyles};\n ${loadingIndicatorStyles};\n`\n\nexport const SearchAlgolia = () => {\n const isKeyNavigating = useAppSelector(selectKeyNavigating)\n const isSearchOpen = useAppSelector(selectIsModalOpen(MODALS.SITE_SEARCH))\n const isSearchInitiallyOpenRef = useRef(isSearchOpen)\n const closeSearchRef = useRef<() => void>()\n const toggleElement = useRef(null)\n const dispatch = useAppDispatch()\n\n const openSearch = useCallback(() => {\n dispatch(setModalOpen(MODALS.SITE_SEARCH))\n }, [dispatch])\n\n const closeSearch = useCallback(() => {\n dispatch(setModalClosed(MODALS.SITE_SEARCH))\n }, [dispatch])\n\n useEffect(() => {\n if (!isBrowser || toggleElement.current) return\n\n toggleElement.current = document.querySelector(\n `.${ALGOLIA_CLASSNAMES.SEARCH_TOGGLE_BUTTON}`\n )\n\n if (toggleElement.current) {\n toggleElement.current.addEventListener('click', openSearch)\n }\n\n return () => {\n if (toggleElement.current) {\n toggleElement.current.removeEventListener('click', openSearch)\n }\n }\n }, [openSearch])\n\n useEffect(() => {\n if (!toggleElement.current || !isSearchInitiallyOpenRef.current) return\n toggleElement.current.click()\n }, [])\n\n useEffect(() => {\n if (!isBrowser) return\n const { body } = document\n\n const observer = new MutationObserver((mutations) => {\n mutations.forEach((mutation) => {\n if (mutation.type !== 'attributes') return\n\n if (!body.classList.contains(ALGOLIA_CLASSNAMES.SEARCH_ACTIVE)) {\n closeSearchRef.current?.()\n return\n }\n\n const input = body.querySelector(`.${ALGOLIA_CLASSNAMES.SEARCH_INPUT}`)\n if (input) setTimeout(() => (input as HTMLInputElement).focus(), 0)\n })\n })\n\n observer.observe(body, {\n attributes: true,\n childList: false,\n subtree: false\n })\n\n return () => observer.disconnect()\n }, [])\n\n useEffect(() => {\n closeSearchRef.current = closeSearch\n }, [closeSearch])\n\n return (\n <>\n \n \n \n )\n}\n","import { css, FlattenSimpleInterpolation } from 'styled-components'\n\nexport const createPlaceholderStyles = (\n color: string\n): FlattenSimpleInterpolation => css`\n ::-webkit-input-placeholder {\n color: ${color};\n }\n :-moz-placeholder {\n color: ${color};\n opacity: 1;\n }\n ::-moz-placeholder {\n color: ${color};\n opacity: 1;\n }\n :-ms-input-placeholder {\n color: ${color};\n }\n ::-ms-input-placeholder {\n color: ${color};\n }\n ::placeholder {\n color: ${color};\n }\n`\n"],"names":["ControlKeyIcon","width","height","className","d","strokeWidth","stroke","fill","strokeLinecap","SearchIcon","viewBox","fillRule","strokeLinejoin","_excluded","_extends","Object","assign","target","i","arguments","length","source","key","prototype","hasOwnProperty","call","apply","this","_slicedToArray","arr","Array","isArray","_arrayWithHoles","_i","Symbol","iterator","_s","_e","_arr","_n","_d","next","done","push","value","err","_iterableToArrayLimit","o","minLen","_arrayLikeToArray","n","toString","slice","constructor","name","from","test","_unsupportedIterableToArray","TypeError","_nonIterableRest","len","arr2","_objectWithoutProperties","excluded","sourceKeys","keys","indexOf","_objectWithoutPropertiesLoose","getOwnPropertySymbols","sourceSymbolKeys","propertyIsEnumerable","ACTION_KEY_DEFAULT","DocSearchButton","_ref","ref","_ref$translations","translations","props","_translations$buttonT","buttonText","_translations$buttonA","buttonAriaLabel","_useState2","useState","setKey","useEffect","navigator","platform","type","DocSearchButtonKey","reactsToKey","_ref2","children","_useState4","isKeyDown","setIsKeyDown","window","addEventListener","handleKeyDown","handleKeyUp","removeEventListener","e","debounce","fn","time","timerId","undefined","_len","args","_key","clearTimeout","setTimeout","isPrimitive","obj","isEqual","first","second","_Object$keys","noop","createClickedEvent","item","items","index","__autocomplete_indexName","positions","findIndex","x","objectID","queryID","__autocomplete_queryID","algoliaSource","_x","_r","return","_excluded2","_typeof","_toConsumableArray","_arrayWithoutHoles","iter","_iterableToArray","_nonIterableSpread","ownKeys","object","enumerableOnly","symbols","filter","sym","getOwnPropertyDescriptor","enumerable","_objectSpread","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","defineProperty","arg","input","hint","prim","toPrimitive","res","String","Number","_toPrimitive","_toPropertyKey","configurable","writable","mapToInsightsParamsApi","params","map","param","objectIDs","createSearchInsightsApi","searchInsights","_split$map2","major","minor","canSendHeaders","version","split","sendToInsights","method","payloads","_items$0$__autocomple","__autocomplete_algoliaCredentials","headers","appId","apiKey","concat","init","setUserToken","userToken","clickedObjectIDsAfterSearch","clickedObjectIDs","_len2","_key2","clickedFilters","_len3","_key3","convertedObjectIDsAfterSearch","_len4","_key4","convertedObjectIDs","_len5","_key5","convertedFilters","_len6","_key6","viewedObjectIDs","_len7","_key7","reduce","acc","_ref3","chunkSize","chunks","chunk","_ref4","payload","_ref5","viewedFilters","_len8","_key8","createViewedEvents","itemsByIndexName","current","_acc$current$__autoco","indexName","isAlgoliaInsightsHit","hit","ALGOLIA_INSIGHTS_VERSION","ALGOLIA_INSIGHTS_SRC","sendViewedObjectIDs","onItemsChange","insights","state","insightsEvents","event","eventName","createAlgoliaInsightsPlugin","options","_getOptions","_ref8","onSelect","_ref9","onActive","getOptions","providedInsightsClient","insightsClient","onSelectEvent","onActiveEvent","callback","safelyRunOnBrowser","pointer","AlgoliaAnalyticsObject","queue","environment","errorMessage","script","document","createElement","async","src","onerror","console","error","body","appendChild","cause","loadInsights","previousItems","debouncedOnStateChange","isOpen","collections","subscribe","setContext","algoliaInsightsPlugin","__algoliaSearchParameters","clickAnalytics","_ref6","onStateChange","_ref7","__autocomplete_pluginOptions","createStore","reducer","onStoreStateChange","list","initialState","getState","dispatch","action","prevState","pendingRequests","add","cancelablePromise","finally","cancelAll","promise","cancel","isEmpty","flatten","values","a","b","getItemsCount","sum","collection","autocompleteId","getDefaultProps","pluginSubscribers","_props$id","plugins","debug","openOnFocus","placeholder","autoFocus","defaultActiveItemId","stallThreshold","shouldPanelOpen","reshape","sources","id","activeItemId","query","completion","status","context","_props$onStateChange","_x$onStateChange","onSubmit","_props$onSubmit","_x$onSubmit","onReset","_props$onReset","_x$onReset","getSources","Promise","all","plugin","Boolean","seenSourceIds","resolve","then","maybeSource","sourceId","includes","Error","JSON","stringify","defaultSource","getItemInputValue","getItemUrl","setIsOpen","onResolve","__default","normalizedSource","getNormalizedSources","nested","_x$onSelect","_x$onActive","_x$onResolve","navigate","itemUrl","location","navigateNewTab","windowReference","open","focus","navigateNewWindow","isDescription","execute","preResolve","itemsOrDescription","description","contextParameters","requesterId","_state$context$key","requests","queries","transformResponse","searchClient","container","find","_container$items","request","maybeDescription","responses","postResolve","store","rawResults","matches","response","results","transform","hits","result","facetHits","_facetHits","facetHit","label","count","_highlightResult","highlighted","every","createInternalCancelablePromise","onfulfilled","onrejected","createCallback","catch","onfinally","onCancelList","isCanceled","callbacks","createCancelablePromise","executor","reject","cancelable","onResult","fallback","getActiveItem","collectionIndex","collectionsCount","nextValue","getCollectionFromActiveItemId","isOffsetFound","counter","previousItemsOffset","currentCollection","getRelativeActiveItemId","itemInputValue","reason","basePromiseId","latestResolvedId","latestResolvedValue","lastStalledId","runConcurrentSafePromise","currentPromiseId","onInput","_ref$nextState","nextState","refresh","setters","setCollections","setQuery","setActiveItemId","setStatus","_nextState$isOpen","_request","getItems","originalSourcesBySourceId","sourcesBySourceId","_nextState$isOpen2","isPanelOpen","highlightedItem","regex","_excluded3","_excluded4","_excluded5","_excluded6","_excluded7","getPropGetters","getAutocompleteId","instanceId","getEnvironmentProps","providedProps","inputElement","formElement","panelElement","onMouseDownOrTouchStart","some","contextNode","parent","child","contains","onTouchStart","onMouseDown","onTouchMove","activeElement","blur","getRootProps","rest","role","getFormProps","noValidate","_providedProps$inputE","preventDefault","_providedProps$inputE2","getLabelProps","sourceIndex","htmlFor","getInputProps","_props$environment$na","onFocus","_ref2$maxLength","maxLength","activeItem","shouldFallbackKeyHint","userAgent","match","isSamsung","enterKeyHint","autoComplete","autoCorrect","autoCapitalize","spellCheck","onChange","currentTarget","onKeyDown","triggerScrollIntoView","nodeItem","getElementById","scrollIntoViewIfNeeded","scrollIntoView","triggerOnActive","nextActiveItemId","metaKey","ctrlKey","shiftKey","altKey","onBlur","onClick","getPanelProps","onMouseLeave","getListProps","getItemProps","__autocomplete_id","onMouseMove","_item","_source","userAgents","segment","getMetadata","_","_options$__autocomple","_options$__autocomple2","_options$__autocomple3","optionsKey","__autocomplete_metadata","extraOptions","ua","getCompletion","_getActiveItem","getNextActiveItemId","moveAmount","baseIndex","itemCount","numericIndex","stateReducer","_nextState","createAutocomplete","subscribers","rawValue","baseItemId","getAutocompleteSetters","propGetters","Event","insightsParams","_plugin$subscribe","_environment$navigato","_environment$navigato2","metadata","metadataContainer","headRef","querySelector","content","injectMetadata","MAX_QUERY_SIZE","AlgoliaLogo","_translations$searchB","searchByText","href","hostname","rel","xmlns","y","rx","ry","CommandIcon","ariaLabel","Footer","_translations$selectT","selectText","_translations$selectK","selectKeyAriaLabel","_translations$navigat","navigateText","_translations$navigat2","navigateUpKeyAriaLabel","_translations$navigat3","navigateDownKeyAriaLabel","_translations$closeTe","closeText","_translations$closeKe","closeKeyAriaLabel","Hit","url","ErrorIcon","ErrorScreen","_translations$titleTe","titleText","_translations$helpTex","helpText","NoResultsIcon","NoResultsScreen","_translations$noResul","noResultsText","_translations$suggest","suggestedQueryText","_translations$reportM","reportMissingResultsText","_translations$reportM2","reportMissingResultsLinkText","searchSuggestions","search","toLowerCase","inputRef","getMissingResultsUrl","LvlIcon","SourceIcon","ContentIcon","AnchorIcon","SelectIcon","getPropertyByPath","path","prev","Snippet","attribute","_ref$tagName","tagName","dangerouslySetInnerHTML","__html","Results","title","Result","join","renderIcon","renderAction","onItemClick","hitComponent","_React$useState2","isDeleting","setIsDeleting","_React$useState4","isFavoriting","setIsFavoriting","__docsearch_parent","onTransitionEnd","hierarchy","runDeleteTransition","cb","runFavoriteTransition","regexHighlightTags","regexHasHighlightTags","RegExp","removeHighlightTags","_internalDocSearchHit","_hit$_highlightResult","internalDocSearchHit","lvl0","replace","ResultsScreen","_collection$items","resultsFooterComponent","RecentIcon","StarIcon","ResetIcon","StartScreen","_translations$recentS","recentSearchesTitle","_translations$noRecen","noRecentSearchesText","_translations$saveRec","saveRecentSearchButtonTitle","_translations$removeR","removeRecentSearchButtonTitle","_translations$favorit","favoriteSearchesTitle","_translations$removeF","removeFavoriteSearchButtonTitle","hasCollections","disableUserPersonalization","stopPropagation","favoriteSearches","recentSearches","remove","ScreenState","errorScreen","noResultsScreen","startScreen","_prevProps","nextProps","LoadingIcon","strokeOpacity","cx","cy","r","attributeName","to","dur","repeatCount","SearchBox","_translations$resetBu","resetButtonTitle","_translations$resetBu2","resetButtonAriaLabel","_translations$cancelB","cancelButtonText","_translations$cancelB2","cancelButtonAriaLabel","_translations$searchI","searchInputLabel","isFromSelection","select","hidden","onClose","createStorage","localStorage","setItem","removeItem","isLocalStorageSupported","getItem","parse","createStoredSearches","_ref$limit","limit","storage","_snippetResult","isQueryAlreadySaved","splice","unshift","getAll","createBrowserLocalStorageCache","namespaceKey","getStorage","getNamespace","setNamespace","namespace","get","defaultValue","events","miss","timeToLive","filteredNamespaceWithoutOldFormattedCacheItems","fromEntries","entries","cacheItem","timestamp","filteredNamespaceWithoutExpiredItems","currentTimestamp","Date","getTime","removeOutdatedCacheItems","keyAsString","exists","set","clear","createFallbackableCache","caches","shift","delete","createInMemoryCache","serializable","cache","shuffle","array","c","Math","floor","random","addMethods","base","methods","encode","format","encodeURIComponent","AuthMode","WithinQueryParameters","WithinHeaders","createMappedRequestOptions","requestOptions","timeout","data","queryParameters","cacheable","CallEnum","Read","Write","Any","HostStatusEnum","Up","Down","Timeouted","EXPIRATION_DELAY","createStatefulHost","host","lastUpdate","now","createStatelessHost","protocol","accept","MethodEnum","Delete","Get","Post","Put","createRetryableOptions","hostsCache","statelessHosts","statelessHost","statefulHosts","hostsUp","isStatefulHostUp","hostsTimeouted","isStatefulHostTimeouted","hostsAvailable","statelessHostsAvailable","getTimeout","timeoutsCount","baseTimeout","retryDecision","outcomes","isTimedOut","isNetworkError","isRetryable","onRetry","isSuccess","onSuccess","onFail","retryableRequest","transporter","stackTrace","serializeData","serializedHeaders","header","serializeHeaders","dataQueryParameters","retry","hosts","pop","message","transporterStackTrace","stackTraceWithoutCredentials","serializeUrl","connectTimeout","timeouts","connect","responseTimeout","pushToStackTrace","stackFrame","triesLeft","decisions","createDeserializationError","deserializeSuccess","logger","info","stackFrameWithoutCredentials","createApiError","deserializeFailure","requester","send","reverse","createUserAgent","addedUserAgent","queryParametersAsString","serializeQueryParameters","charAt","substr","parameters","modifiedHeaders","createSearchClient","auth","authMode","credentials","createAuth","requestsCache","responsesCache","read","mappedRequestOptions","createRetryableRequest","write","createTransporter","addAlgoliaAgent","clearCache","customRequest","initIndex","multipleQueries","multipleSearchForFacetValues","facetName","facetQuery","searchForFacetValues","findAnswers","queryLanguages","LogLevelEnum","Debug","Info","getRecommendations","threshold","algoliasearch","commonOptions","baseRequester","XMLHttpRequest","setRequestHeader","createTimeout","abort","onreadystatechange","readyState","OPENED","responseText","onload","logLevel","identity","isModifierEvent","button","groupBy","predicate","maxResultsPerGroup","DocSearchModal","_ref$placeholder","searchParameters","_ref$onClose","_ref$transformItems","transformItems","_ref$hitComponent","_ref$resultsFooterCom","_ref$initialScrollY","initialScrollY","_ref$transformSearchC","transformSearchClient","_ref$disableUserPerso","_ref$initialQuery","initialQuery","initialQueryFromProp","_ref$insights","footerTranslations","footer","searchBoxTranslations","searchBox","screenStateTranslations","setState","containerRef","modalRef","formElementRef","dropdownRef","snippetLength","initialQueryFromSelection","getSelection","client","useSearchClient","saveRecentSearch","sendItemClickEvent","insightsItem","insightsClickParams","autocomplete","sourcesState","insightsActive","attributesToRetrieve","attributesToSnippet","snippetEllipsisText","highlightPreTag","highlightPostTag","hitsPerPage","firstResult","nbHits","lvl1","groupedHits","potentialParent","siblingItem","flat","_getEnvironmentProps","useTouchEvents","focusableElements","querySelectorAll","firstElement","lastElement","trapFocus","useTrapFocus","classList","_window$scrollTo","_window","scrollTo","matchMedia","scrollTop","setFullViewportHeight","vh","innerHeight","style","setProperty","tabIndex","DocSearch","_props$translations","_props$translations2","searchButtonRef","setInitialQuery","onOpen","_event$key","keyCode","element","isContentEditable","isEditingContent","fromCharCode","useDocSearchKeyboardEvents","createPortal","scrollY","modal","INPUT_BORDER_SIZE","SVG_STROKE_WIDTH","INPUT_HEIGHT","SPACINGS","NINE","BUTTON_WIDTH","EIGHT","DESKTOP_END_SPACING","TEN","EDGE_SPACING","TWO","modalStyles","css","LAYERS","SEARCH","COLORS","BACKGROUND_SITE","BORDER_SIZES","DETAIL","DETAIL_LOW_CONTRAST","STEP","MEDIA","DESKTOP","BORDER_RADIUSES","SOFT","headerStyles","BOX","BRAND_GRADIENT_BACKGROUND_STYLES","contentStyles","TEXT_LOW_CONTRAST","SIX","FONT_SIZES","COMPLEMENTARY","DETAIL_HIGH_CONTRAST","createSquareSizeStyles","TEXT_HIGH_CONTRAST","THREE","H4","linkContentStyles","KEY_NAVIGATING_STYLES","BRAND_GRADIENT_TEXT_STYLES","CUSTOM","ONE","OUTLINE","BACKGROUND_CODE","FONT_WEIGHTS","SEMI_BOLD","COMPACT","FOUR","TEXT_MEDIUM_CONTRAST","buttonBareStyles","MEDIUM","footerStyles","LINE","DETAIL_MEDIUM_CONTRAST","DETAIL_HIGH_CONTRAST_RGB_VALUE","THEME_PREFIX","THEME_KEYS","LIGHT","DETAIL_LOW_CONTRAST_RGB_VALUE","DARK","inputStyles","color","TEXT_BODY","visuallyHiddenStyles","toggleButtonStyles","searchButtonStyles","searchButtonIconStyles","magnifyerButtonStyles","resetButtonStyles","cancelButtonStyles","_ref10","loadingIndicatorStyles","SearchStyles","createGlobalStyle","SearchAlgolia","isKeyNavigating","useAppSelector","selectKeyNavigating","isSearchOpen","selectIsModalOpen","MODALS","SITE_SEARCH","isSearchInitiallyOpenRef","useRef","closeSearchRef","toggleElement","useAppDispatch","openSearch","useCallback","setModalOpen","closeSearch","setModalClosed","isBrowser","ALGOLIA_CLASSNAMES","SEARCH_TOGGLE_BUTTON","click","observer","MutationObserver","mutations","mutation","_closeSearchRef$curre","SEARCH_ACTIVE","SEARCH_INPUT","observe","attributes","childList","subtree","disconnect","React","$isKeyNavigating","ALGOLIA_SEARCH_CONFIG","APP_ID","INDEX_NAME","API_KEY"],"sourceRoot":""} \ No newline at end of file diff --git a/docs/2682-e50dd563da035e3b2513.js b/docs/2682-e50dd563da035e3b2513.js deleted file mode 100644 index 2e818b10e..000000000 --- a/docs/2682-e50dd563da035e3b2513.js +++ /dev/null @@ -1,2 +0,0 @@ -"use strict";(self.webpackChunkembla_carousel_docs=self.webpackChunkembla_carousel_docs||[]).push([[2682],{2682:function(n,_,e){e.r(_),_.default='import React, {\n PropsWithChildren,\n useCallback,\n useEffect,\n useState\n} from \'react\'\nimport { EmblaCarouselType } from \'embla-carousel\'\n\ntype UsePrevNextButtonsType = {\n prevBtnDisabled: boolean\n nextBtnDisabled: boolean\n onPrevButtonClick: () => void\n onNextButtonClick: () => void\n}\n\nexport const usePrevNextButtons = (\n emblaApi: EmblaCarouselType | undefined,\n /*__NAV_AUTOPLAY_REPLACE_START__*/\n onButtonClick?: (emblaApi: EmblaCarouselType) => void\n /*__NAV_AUTOPLAY_REPLACE_END__*/\n): UsePrevNextButtonsType => {\n const [prevBtnDisabled, setPrevBtnDisabled] = useState(true)\n const [nextBtnDisabled, setNextBtnDisabled] = useState(true)\n\n const onPrevButtonClick = useCallback(() => {\n if (!emblaApi) return\n emblaApi.scrollPrev()\n /*__NAV_AUTOPLAY_REPLACE_START__*/\n if (onButtonClick) onButtonClick(emblaApi)\n /*__NAV_AUTOPLAY_REPLACE_END__*/\n }, [\n emblaApi,\n /*__NAV_AUTOPLAY_REPLACE_START__*/ onButtonClick /*__NAV_AUTOPLAY_REPLACE_END__*/\n ])\n\n const onNextButtonClick = useCallback(() => {\n if (!emblaApi) return\n emblaApi.scrollNext()\n /*__NAV_AUTOPLAY_REPLACE_START__*/\n if (onButtonClick) onButtonClick(emblaApi)\n /*__NAV_AUTOPLAY_REPLACE_END__*/\n }, [\n emblaApi,\n /*__NAV_AUTOPLAY_REPLACE_START__*/ onButtonClick /*__NAV_AUTOPLAY_REPLACE_END__*/\n ])\n\n const onSelect = useCallback((emblaApi: EmblaCarouselType) => {\n setPrevBtnDisabled(!emblaApi.canScrollPrev())\n setNextBtnDisabled(!emblaApi.canScrollNext())\n }, [])\n\n useEffect(() => {\n if (!emblaApi) return\n\n onSelect(emblaApi)\n emblaApi.on(\'reInit\', onSelect).on(\'select\', onSelect)\n }, [emblaApi, onSelect])\n\n return {\n prevBtnDisabled,\n nextBtnDisabled,\n onPrevButtonClick,\n onNextButtonClick\n }\n}\n\ntype PropType = PropsWithChildren<\n React.DetailedHTMLProps<\n React.ButtonHTMLAttributes,\n HTMLButtonElement\n >\n>\n\nexport const PrevButton: React.FC = (props) => {\n const { children, ...restProps } = props\n\n return (\n \n \n {/*__PREV_NEXT_BUTTONS_RTL_REPLACE_START__*/}\n \n {/*__PREV_NEXT_BUTTONS_RTL_REPLACE_END__*/}\n {/*__PREV_NEXT_BUTTONS_LTR_REPLACE_START__*/}\n \n {/*__PREV_NEXT_BUTTONS_LTR_REPLACE_END__*/}\n {/*__PREV_NEXT_BUTTONS_VERTICAL_REPLACE_START__*/}\n \n {/*__PREV_NEXT_BUTTONS_VERTICAL_REPLACE_END__*/}\n \n {children}\n \n )\n}\n\nexport const NextButton: React.FC = (props) => {\n const { children, ...restProps } = props\n\n return (\n \n \n {/*__PREV_NEXT_BUTTONS_RTL_REPLACE_START__*/}\n \n {/*__PREV_NEXT_BUTTONS_RTL_REPLACE_END__*/}\n {/*__PREV_NEXT_BUTTONS_LTR_REPLACE_START__*/}\n \n {/*__PREV_NEXT_BUTTONS_LTR_REPLACE_END__*/}\n {/*__PREV_NEXT_BUTTONS_VERTICAL_REPLACE_START__*/}\n \n {/*__PREV_NEXT_BUTTONS_VERTICAL_REPLACE_END__*/}\n \n {children}\n \n )\n}\n'}}]); -//# sourceMappingURL=2682-e50dd563da035e3b2513.js.map \ No newline at end of file diff --git a/docs/2682-e50dd563da035e3b2513.js.map b/docs/2682-e50dd563da035e3b2513.js.map deleted file mode 100644 index bda4a3961..000000000 --- a/docs/2682-e50dd563da035e3b2513.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"2682-e50dd563da035e3b2513.js","mappings":"uIAAA,0wL","sources":["webpack://embla-carousel-docs/./src/components/Sandbox/React/SandboxFilesDist/CarouselGenerator/EmblaCarouselArrowButtons.tsx"],"sourcesContent":["export default \"import React, {\\n PropsWithChildren,\\n useCallback,\\n useEffect,\\n useState\\n} from 'react'\\nimport { EmblaCarouselType } from 'embla-carousel'\\n\\ntype UsePrevNextButtonsType = {\\n prevBtnDisabled: boolean\\n nextBtnDisabled: boolean\\n onPrevButtonClick: () => void\\n onNextButtonClick: () => void\\n}\\n\\nexport const usePrevNextButtons = (\\n emblaApi: EmblaCarouselType | undefined,\\n /*__NAV_AUTOPLAY_REPLACE_START__*/\\n onButtonClick?: (emblaApi: EmblaCarouselType) => void\\n /*__NAV_AUTOPLAY_REPLACE_END__*/\\n): UsePrevNextButtonsType => {\\n const [prevBtnDisabled, setPrevBtnDisabled] = useState(true)\\n const [nextBtnDisabled, setNextBtnDisabled] = useState(true)\\n\\n const onPrevButtonClick = useCallback(() => {\\n if (!emblaApi) return\\n emblaApi.scrollPrev()\\n /*__NAV_AUTOPLAY_REPLACE_START__*/\\n if (onButtonClick) onButtonClick(emblaApi)\\n /*__NAV_AUTOPLAY_REPLACE_END__*/\\n }, [\\n emblaApi,\\n /*__NAV_AUTOPLAY_REPLACE_START__*/ onButtonClick /*__NAV_AUTOPLAY_REPLACE_END__*/\\n ])\\n\\n const onNextButtonClick = useCallback(() => {\\n if (!emblaApi) return\\n emblaApi.scrollNext()\\n /*__NAV_AUTOPLAY_REPLACE_START__*/\\n if (onButtonClick) onButtonClick(emblaApi)\\n /*__NAV_AUTOPLAY_REPLACE_END__*/\\n }, [\\n emblaApi,\\n /*__NAV_AUTOPLAY_REPLACE_START__*/ onButtonClick /*__NAV_AUTOPLAY_REPLACE_END__*/\\n ])\\n\\n const onSelect = useCallback((emblaApi: EmblaCarouselType) => {\\n setPrevBtnDisabled(!emblaApi.canScrollPrev())\\n setNextBtnDisabled(!emblaApi.canScrollNext())\\n }, [])\\n\\n useEffect(() => {\\n if (!emblaApi) return\\n\\n onSelect(emblaApi)\\n emblaApi.on('reInit', onSelect).on('select', onSelect)\\n }, [emblaApi, onSelect])\\n\\n return {\\n prevBtnDisabled,\\n nextBtnDisabled,\\n onPrevButtonClick,\\n onNextButtonClick\\n }\\n}\\n\\ntype PropType = PropsWithChildren<\\n React.DetailedHTMLProps<\\n React.ButtonHTMLAttributes,\\n HTMLButtonElement\\n >\\n>\\n\\nexport const PrevButton: React.FC = (props) => {\\n const { children, ...restProps } = props\\n\\n return (\\n \\n \\n {/*__PREV_NEXT_BUTTONS_RTL_REPLACE_START__*/}\\n \\n {/*__PREV_NEXT_BUTTONS_RTL_REPLACE_END__*/}\\n {/*__PREV_NEXT_BUTTONS_LTR_REPLACE_START__*/}\\n \\n {/*__PREV_NEXT_BUTTONS_LTR_REPLACE_END__*/}\\n {/*__PREV_NEXT_BUTTONS_VERTICAL_REPLACE_START__*/}\\n \\n {/*__PREV_NEXT_BUTTONS_VERTICAL_REPLACE_END__*/}\\n \\n {children}\\n \\n )\\n}\\n\\nexport const NextButton: React.FC = (props) => {\\n const { children, ...restProps } = props\\n\\n return (\\n \\n \\n {/*__PREV_NEXT_BUTTONS_RTL_REPLACE_START__*/}\\n \\n {/*__PREV_NEXT_BUTTONS_RTL_REPLACE_END__*/}\\n {/*__PREV_NEXT_BUTTONS_LTR_REPLACE_START__*/}\\n \\n {/*__PREV_NEXT_BUTTONS_LTR_REPLACE_END__*/}\\n {/*__PREV_NEXT_BUTTONS_VERTICAL_REPLACE_START__*/}\\n \\n {/*__PREV_NEXT_BUTTONS_VERTICAL_REPLACE_END__*/}\\n \\n {children}\\n \\n )\\n}\\n\";"],"names":[],"sourceRoot":""} \ No newline at end of file diff --git a/docs/2682-ea2dd26c33112f5be706.js b/docs/2682-ea2dd26c33112f5be706.js new file mode 100644 index 000000000..2c85539d0 --- /dev/null +++ b/docs/2682-ea2dd26c33112f5be706.js @@ -0,0 +1,2 @@ +"use strict";(self.webpackChunkembla_carousel_docs=self.webpackChunkembla_carousel_docs||[]).push([[2682],{2682:function(n,_,e){e.r(_),_.default='import React, {\n ComponentPropsWithRef,\n useCallback,\n useEffect,\n useState\n} from \'react\'\nimport { EmblaCarouselType } from \'embla-carousel\'\n\ntype UsePrevNextButtonsType = {\n prevBtnDisabled: boolean\n nextBtnDisabled: boolean\n onPrevButtonClick: () => void\n onNextButtonClick: () => void\n}\n\nexport const usePrevNextButtons = (\n emblaApi: EmblaCarouselType | undefined,\n /*__NAV_AUTOPLAY_REPLACE_START__*/\n onButtonClick?: (emblaApi: EmblaCarouselType) => void\n /*__NAV_AUTOPLAY_REPLACE_END__*/\n): UsePrevNextButtonsType => {\n const [prevBtnDisabled, setPrevBtnDisabled] = useState(true)\n const [nextBtnDisabled, setNextBtnDisabled] = useState(true)\n\n const onPrevButtonClick = useCallback(() => {\n if (!emblaApi) return\n emblaApi.scrollPrev()\n /*__NAV_AUTOPLAY_REPLACE_START__*/\n if (onButtonClick) onButtonClick(emblaApi)\n /*__NAV_AUTOPLAY_REPLACE_END__*/\n }, [\n emblaApi,\n /*__NAV_AUTOPLAY_REPLACE_START__*/ onButtonClick /*__NAV_AUTOPLAY_REPLACE_END__*/\n ])\n\n const onNextButtonClick = useCallback(() => {\n if (!emblaApi) return\n emblaApi.scrollNext()\n /*__NAV_AUTOPLAY_REPLACE_START__*/\n if (onButtonClick) onButtonClick(emblaApi)\n /*__NAV_AUTOPLAY_REPLACE_END__*/\n }, [\n emblaApi,\n /*__NAV_AUTOPLAY_REPLACE_START__*/ onButtonClick /*__NAV_AUTOPLAY_REPLACE_END__*/\n ])\n\n const onSelect = useCallback((emblaApi: EmblaCarouselType) => {\n setPrevBtnDisabled(!emblaApi.canScrollPrev())\n setNextBtnDisabled(!emblaApi.canScrollNext())\n }, [])\n\n useEffect(() => {\n if (!emblaApi) return\n\n onSelect(emblaApi)\n emblaApi.on(\'reInit\', onSelect).on(\'select\', onSelect)\n }, [emblaApi, onSelect])\n\n return {\n prevBtnDisabled,\n nextBtnDisabled,\n onPrevButtonClick,\n onNextButtonClick\n }\n}\n\ntype PropType = ComponentPropsWithRef<\'button\'>\n\nexport const PrevButton: React.FC = (props) => {\n const { children, ...restProps } = props\n\n return (\n \n \n {/*__PREV_NEXT_BUTTONS_RTL_REPLACE_START__*/}\n \n {/*__PREV_NEXT_BUTTONS_RTL_REPLACE_END__*/}\n {/*__PREV_NEXT_BUTTONS_LTR_REPLACE_START__*/}\n \n {/*__PREV_NEXT_BUTTONS_LTR_REPLACE_END__*/}\n {/*__PREV_NEXT_BUTTONS_VERTICAL_REPLACE_START__*/}\n \n {/*__PREV_NEXT_BUTTONS_VERTICAL_REPLACE_END__*/}\n \n {children}\n \n )\n}\n\nexport const NextButton: React.FC = (props) => {\n const { children, ...restProps } = props\n\n return (\n \n \n {/*__PREV_NEXT_BUTTONS_RTL_REPLACE_START__*/}\n \n {/*__PREV_NEXT_BUTTONS_RTL_REPLACE_END__*/}\n {/*__PREV_NEXT_BUTTONS_LTR_REPLACE_START__*/}\n \n {/*__PREV_NEXT_BUTTONS_LTR_REPLACE_END__*/}\n {/*__PREV_NEXT_BUTTONS_VERTICAL_REPLACE_START__*/}\n \n {/*__PREV_NEXT_BUTTONS_VERTICAL_REPLACE_END__*/}\n \n {children}\n \n )\n}\n'}}]); +//# sourceMappingURL=2682-ea2dd26c33112f5be706.js.map \ No newline at end of file diff --git a/docs/2682-ea2dd26c33112f5be706.js.map b/docs/2682-ea2dd26c33112f5be706.js.map new file mode 100644 index 000000000..1baeadb1b --- /dev/null +++ b/docs/2682-ea2dd26c33112f5be706.js.map @@ -0,0 +1 @@ +{"version":3,"file":"2682-ea2dd26c33112f5be706.js","mappings":"uIAAA,8qL","sources":["webpack://embla-carousel-docs/./src/components/Sandbox/React/SandboxFilesDist/CarouselGenerator/EmblaCarouselArrowButtons.tsx"],"sourcesContent":["export default \"import React, {\\n ComponentPropsWithRef,\\n useCallback,\\n useEffect,\\n useState\\n} from 'react'\\nimport { EmblaCarouselType } from 'embla-carousel'\\n\\ntype UsePrevNextButtonsType = {\\n prevBtnDisabled: boolean\\n nextBtnDisabled: boolean\\n onPrevButtonClick: () => void\\n onNextButtonClick: () => void\\n}\\n\\nexport const usePrevNextButtons = (\\n emblaApi: EmblaCarouselType | undefined,\\n /*__NAV_AUTOPLAY_REPLACE_START__*/\\n onButtonClick?: (emblaApi: EmblaCarouselType) => void\\n /*__NAV_AUTOPLAY_REPLACE_END__*/\\n): UsePrevNextButtonsType => {\\n const [prevBtnDisabled, setPrevBtnDisabled] = useState(true)\\n const [nextBtnDisabled, setNextBtnDisabled] = useState(true)\\n\\n const onPrevButtonClick = useCallback(() => {\\n if (!emblaApi) return\\n emblaApi.scrollPrev()\\n /*__NAV_AUTOPLAY_REPLACE_START__*/\\n if (onButtonClick) onButtonClick(emblaApi)\\n /*__NAV_AUTOPLAY_REPLACE_END__*/\\n }, [\\n emblaApi,\\n /*__NAV_AUTOPLAY_REPLACE_START__*/ onButtonClick /*__NAV_AUTOPLAY_REPLACE_END__*/\\n ])\\n\\n const onNextButtonClick = useCallback(() => {\\n if (!emblaApi) return\\n emblaApi.scrollNext()\\n /*__NAV_AUTOPLAY_REPLACE_START__*/\\n if (onButtonClick) onButtonClick(emblaApi)\\n /*__NAV_AUTOPLAY_REPLACE_END__*/\\n }, [\\n emblaApi,\\n /*__NAV_AUTOPLAY_REPLACE_START__*/ onButtonClick /*__NAV_AUTOPLAY_REPLACE_END__*/\\n ])\\n\\n const onSelect = useCallback((emblaApi: EmblaCarouselType) => {\\n setPrevBtnDisabled(!emblaApi.canScrollPrev())\\n setNextBtnDisabled(!emblaApi.canScrollNext())\\n }, [])\\n\\n useEffect(() => {\\n if (!emblaApi) return\\n\\n onSelect(emblaApi)\\n emblaApi.on('reInit', onSelect).on('select', onSelect)\\n }, [emblaApi, onSelect])\\n\\n return {\\n prevBtnDisabled,\\n nextBtnDisabled,\\n onPrevButtonClick,\\n onNextButtonClick\\n }\\n}\\n\\ntype PropType = ComponentPropsWithRef<'button'>\\n\\nexport const PrevButton: React.FC = (props) => {\\n const { children, ...restProps } = props\\n\\n return (\\n \\n \\n {/*__PREV_NEXT_BUTTONS_RTL_REPLACE_START__*/}\\n \\n {/*__PREV_NEXT_BUTTONS_RTL_REPLACE_END__*/}\\n {/*__PREV_NEXT_BUTTONS_LTR_REPLACE_START__*/}\\n \\n {/*__PREV_NEXT_BUTTONS_LTR_REPLACE_END__*/}\\n {/*__PREV_NEXT_BUTTONS_VERTICAL_REPLACE_START__*/}\\n \\n {/*__PREV_NEXT_BUTTONS_VERTICAL_REPLACE_END__*/}\\n \\n {children}\\n \\n )\\n}\\n\\nexport const NextButton: React.FC = (props) => {\\n const { children, ...restProps } = props\\n\\n return (\\n \\n \\n {/*__PREV_NEXT_BUTTONS_RTL_REPLACE_START__*/}\\n \\n {/*__PREV_NEXT_BUTTONS_RTL_REPLACE_END__*/}\\n {/*__PREV_NEXT_BUTTONS_LTR_REPLACE_START__*/}\\n \\n {/*__PREV_NEXT_BUTTONS_LTR_REPLACE_END__*/}\\n {/*__PREV_NEXT_BUTTONS_VERTICAL_REPLACE_START__*/}\\n \\n {/*__PREV_NEXT_BUTTONS_VERTICAL_REPLACE_END__*/}\\n \\n {children}\\n \\n )\\n}\\n\";"],"names":[],"sourceRoot":""} \ No newline at end of file diff --git a/docs/2900-1c386162116f224c8b54.js b/docs/2900-1c386162116f224c8b54.js new file mode 100644 index 000000000..c2e04a298 --- /dev/null +++ b/docs/2900-1c386162116f224c8b54.js @@ -0,0 +1,2 @@ +"use strict";(self.webpackChunkembla_carousel_docs=self.webpackChunkembla_carousel_docs||[]).push([[2900],{2900:function(e,t,n){n.r(t),n.d(t,{default:function(){return i}});var l=n(4041),a=n(7154);function c(e){let t;void 0===e&&(e={});let n=[];const l=["select","slideFocus"];function a(){t.containerNode().style.height=function(){const{slideRegistry:e}=t.internalEngine();return e[t.selectedScrollSnap()].map((e=>n[e])).reduce(((e,t)=>Math.max(e,t)),0)}()+"px"}return{name:"autoHeight",options:e,init:function(e){t=e;const{options:{axis:c},slideRects:s}=t.internalEngine();"y"!==c&&(n=s.map((e=>e.height)),l.forEach((e=>t.on(e,a))),a())},destroy:function(){l.forEach((e=>t.off(e,a)));const e=t.containerNode();e.style.height="",e.getAttribute("style")||e.removeAttribute("style")}}}c.globalOptions=void 0;var s=n(7105),o=n(642);var i=e=>{const{slides:t,options:n}=e,[i,r]=(0,a.A)(n,[c()]),{selectedIndex:u,scrollSnaps:d,onDotButtonClick:m}=(0,o.R)(r),{prevBtnDisabled:b,nextBtnDisabled:_,onPrevButtonClick:p,onNextButtonClick:f}=(0,s.Hd)(r);return l.createElement("div",{className:"embla"},l.createElement("div",{className:"embla__viewport",ref:i},l.createElement("div",{className:"embla__container"},t.map((e=>l.createElement("div",{className:"embla__slide",key:e},l.createElement("div",{className:"embla__slide__number"},l.createElement("span",null,e+1))))))),l.createElement("div",{className:"embla__controls"},l.createElement("div",{className:"embla__buttons"},l.createElement(s.U1,{onClick:p,disabled:b}),l.createElement(s.WE,{onClick:f,disabled:_})),l.createElement("div",{className:"embla__dots"},d.map(((e,t)=>l.createElement(o.c,{key:t,onClick:()=>m(t),className:"embla__dot".concat(t===u?" embla__dot--selected":"")}))))))}},642:function(e,t,n){n.d(t,{R:function(){return a},c:function(){return c}});var l=n(4041);const a=(e,t)=>{const{0:n,1:a}=(0,l.useState)(0),{0:c,1:s}=(0,l.useState)([]),o=(0,l.useCallback)((n=>{e&&(e.scrollTo(n),t&&t(e))}),[e,t]),i=(0,l.useCallback)((e=>{s(e.scrollSnapList())}),[]),r=(0,l.useCallback)((e=>{a(e.selectedScrollSnap())}),[]);return(0,l.useEffect)((()=>{e&&(i(e),r(e),e.on("reInit",i).on("reInit",r).on("select",r))}),[e,i,r]),{selectedIndex:n,scrollSnaps:c,onDotButtonClick:o}},c=e=>{const{children:t,...n}=e;return l.createElement("button",Object.assign({type:"button"},n),t)}}}]); +//# sourceMappingURL=2900-1c386162116f224c8b54.js.map \ No newline at end of file diff --git a/docs/2900-1c386162116f224c8b54.js.map b/docs/2900-1c386162116f224c8b54.js.map new file mode 100644 index 000000000..a799a6118 --- /dev/null +++ b/docs/2900-1c386162116f224c8b54.js.map @@ -0,0 +1 @@ +{"version":3,"file":"2900-1c386162116f224c8b54.js","mappings":"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","sources":["webpack://embla-carousel-docs/../src/components/AutoHeight.ts","webpack://embla-carousel-docs/./src/components/Sandbox/React/SandboxFilesSrc/AutoHeight/EmblaCarousel.tsx","webpack://embla-carousel-docs/./src/components/Sandbox/React/SandboxFilesSrc/EmblaCarouselDotButton.tsx"],"sourcesContent":["import { OptionsType } from './Options'\nimport {\n EmblaEventType,\n CreatePluginType,\n EmblaCarouselType\n} from 'embla-carousel'\n\ndeclare module 'embla-carousel' {\n interface EmblaPluginsType {\n autoHeight: AutoHeightType\n }\n}\n\nexport type AutoHeightType = CreatePluginType<{}, OptionsType>\n\nexport type AutoHeightOptionsType = AutoHeightType['options']\n\nfunction AutoHeight(userOptions: AutoHeightOptionsType = {}): AutoHeightType {\n let emblaApi: EmblaCarouselType\n let slideHeights: number[] = []\n const heightEvents: EmblaEventType[] = ['select', 'slideFocus']\n\n function init(emblaApiInstance: EmblaCarouselType): void {\n emblaApi = emblaApiInstance\n\n const {\n options: { axis },\n slideRects\n } = emblaApi.internalEngine()\n\n if (axis === 'y') return\n\n slideHeights = slideRects.map((slideRect) => slideRect.height)\n\n heightEvents.forEach((evt) => emblaApi.on(evt, setContainerHeight))\n setContainerHeight()\n }\n\n function destroy(): void {\n heightEvents.forEach((evt) => emblaApi.off(evt, setContainerHeight))\n const container = emblaApi.containerNode()\n container.style.height = ''\n if (!container.getAttribute('style')) container.removeAttribute('style')\n }\n\n function highestInView(): number {\n const { slideRegistry } = emblaApi.internalEngine()\n const selectedIndexes = slideRegistry[emblaApi.selectedScrollSnap()]\n\n return selectedIndexes\n .map((index) => slideHeights[index])\n .reduce((a, b) => Math.max(a, b), 0)\n }\n\n function setContainerHeight(): void {\n emblaApi.containerNode().style.height = `${highestInView()}px`\n }\n\n const self: AutoHeightType = {\n name: 'autoHeight',\n options: userOptions,\n init,\n destroy\n }\n return self\n}\n\ndeclare namespace AutoHeight {\n let globalOptions: AutoHeightOptionsType | undefined\n}\n\nAutoHeight.globalOptions = undefined\n\nexport default AutoHeight\n","import React from 'react'\nimport { EmblaOptionsType } from 'embla-carousel'\nimport useEmblaCarousel from 'embla-carousel-react'\nimport AutoHeight from 'embla-carousel-auto-height'\nimport {\n NextButton,\n PrevButton,\n usePrevNextButtons\n} from '../EmblaCarouselArrowButtons'\nimport { DotButton, useDotButton } from '../EmblaCarouselDotButton'\n\ntype PropType = {\n slides: number[]\n options?: EmblaOptionsType\n}\n\nconst EmblaCarousel: React.FC = (props) => {\n const { slides, options } = props\n const [emblaRef, emblaApi] = useEmblaCarousel(options, [AutoHeight()])\n\n const { selectedIndex, scrollSnaps, onDotButtonClick } =\n useDotButton(emblaApi)\n\n const {\n prevBtnDisabled,\n nextBtnDisabled,\n onPrevButtonClick,\n onNextButtonClick\n } = usePrevNextButtons(emblaApi)\n\n return (\n
\n
\n
\n {slides.map((index) => (\n
\n
\n {index + 1}\n
\n
\n ))}\n
\n
\n\n
\n
\n \n \n
\n\n
\n {scrollSnaps.map((_, index) => (\n onDotButtonClick(index)}\n className={'embla__dot'.concat(\n index === selectedIndex ? ' embla__dot--selected' : ''\n )}\n />\n ))}\n
\n
\n
\n )\n}\n\nexport default EmblaCarousel\n","import React, {\n ComponentPropsWithRef,\n useCallback,\n useEffect,\n useState\n} from 'react'\nimport { EmblaCarouselType } from 'embla-carousel'\n\ntype UseDotButtonType = {\n selectedIndex: number\n scrollSnaps: number[]\n onDotButtonClick: (index: number) => void\n}\n\nexport const useDotButton = (\n emblaApi: EmblaCarouselType | undefined,\n onButtonClick?: (emblaApi: EmblaCarouselType) => void\n): UseDotButtonType => {\n const [selectedIndex, setSelectedIndex] = useState(0)\n const [scrollSnaps, setScrollSnaps] = useState([])\n\n const onDotButtonClick = useCallback(\n (index: number) => {\n if (!emblaApi) return\n emblaApi.scrollTo(index)\n if (onButtonClick) onButtonClick(emblaApi)\n },\n [emblaApi, onButtonClick]\n )\n\n const onInit = useCallback((emblaApi: EmblaCarouselType) => {\n setScrollSnaps(emblaApi.scrollSnapList())\n }, [])\n\n const onSelect = useCallback((emblaApi: EmblaCarouselType) => {\n setSelectedIndex(emblaApi.selectedScrollSnap())\n }, [])\n\n useEffect(() => {\n if (!emblaApi) return\n\n onInit(emblaApi)\n onSelect(emblaApi)\n\n emblaApi.on('reInit', onInit).on('reInit', onSelect).on('select', onSelect)\n }, [emblaApi, onInit, onSelect])\n\n return {\n selectedIndex,\n scrollSnaps,\n onDotButtonClick\n }\n}\n\ntype PropType = ComponentPropsWithRef<'button'>\n\nexport const DotButton: React.FC = (props) => {\n const { children, ...restProps } = props\n\n return (\n \n )\n}\n"],"names":["AutoHeight","userOptions","emblaApi","slideHeights","heightEvents","setContainerHeight","containerNode","style","height","slideRegistry","internalEngine","selectedScrollSnap","map","index","reduce","a","b","Math","max","highestInView","name","options","init","emblaApiInstance","axis","slideRects","slideRect","forEach","evt","on","destroy","off","container","getAttribute","removeAttribute","globalOptions","undefined","props","slides","emblaRef","useEmblaCarousel","selectedIndex","scrollSnaps","onDotButtonClick","useDotButton","prevBtnDisabled","nextBtnDisabled","onPrevButtonClick","onNextButtonClick","usePrevNextButtons","React","className","ref","key","PrevButton","onClick","disabled","NextButton","_","DotButton","concat","onButtonClick","setSelectedIndex","useState","setScrollSnaps","useCallback","scrollTo","onInit","scrollSnapList","onSelect","useEffect","children","restProps","Object","assign","type"],"sourceRoot":""} \ No newline at end of file diff --git a/docs/2900-779eedf26db62b1cd2eb.js b/docs/2900-779eedf26db62b1cd2eb.js deleted file mode 100644 index 391100a51..000000000 --- a/docs/2900-779eedf26db62b1cd2eb.js +++ /dev/null @@ -1,2 +0,0 @@ -"use strict";(self.webpackChunkembla_carousel_docs=self.webpackChunkembla_carousel_docs||[]).push([[2900],{2900:function(e,t,n){n.r(t),n.d(t,{default:function(){return r}});var a=n(4041),l=n(7154);const s={active:!0,breakpoints:{},destroyHeight:"auto"};function o(e){let t,n;void 0===e&&(e={});let a=[];const l=["select"];function c(e,l){const s="destroy"===l?t.destroyHeight:function(){const{slideRegistry:e}=n.internalEngine();return e[n.selectedScrollSnap()].map((e=>a[e])).reduce(((e,t)=>Math.max(e,t)),0)}()+"px";n.containerNode().style.height=s}return{name:"autoHeight",options:e,init:function(i,r){n=i;const{mergeOptions:d,optionsAtMedia:u}=r,m=d(s,o.globalOptions),b=d(m,e);t=u(b);const{options:{axis:p},slideRects:_}=n.internalEngine();"y"!==p&&(a=_.map((e=>e.height)),l.forEach((e=>n.on(e,c))),c())},destroy:function(){l.forEach((e=>n.off(e,c))),c(void 0,"destroy")}}}o.globalOptions=void 0;var c=n(7105),i=n(642);var r=e=>{const{slides:t,options:n}=e,[s,r]=(0,l.A)(n,[o()]),{selectedIndex:d,scrollSnaps:u,onDotButtonClick:m}=(0,i.R)(r),{prevBtnDisabled:b,nextBtnDisabled:p,onPrevButtonClick:_,onNextButtonClick:f}=(0,c.Hd)(r);return a.createElement("div",{className:"embla"},a.createElement("div",{className:"embla__viewport",ref:s},a.createElement("div",{className:"embla__container"},t.map((e=>a.createElement("div",{className:"embla__slide",key:e},a.createElement("div",{className:"embla__slide__number"},a.createElement("span",null,e+1))))))),a.createElement("div",{className:"embla__controls"},a.createElement("div",{className:"embla__buttons"},a.createElement(c.U1,{onClick:_,disabled:b}),a.createElement(c.WE,{onClick:f,disabled:p})),a.createElement("div",{className:"embla__dots"},u.map(((e,t)=>a.createElement(i.c,{key:t,onClick:()=>m(t),className:"embla__dot".concat(t===d?" embla__dot--selected":"")}))))))}},642:function(e,t,n){n.d(t,{R:function(){return l},c:function(){return s}});var a=n(4041);const l=(e,t)=>{const{0:n,1:l}=(0,a.useState)(0),{0:s,1:o}=(0,a.useState)([]),c=(0,a.useCallback)((n=>{e&&(e.scrollTo(n),t&&t(e))}),[e,t]),i=(0,a.useCallback)((e=>{o(e.scrollSnapList())}),[]),r=(0,a.useCallback)((e=>{l(e.selectedScrollSnap())}),[]);return(0,a.useEffect)((()=>{e&&(i(e),r(e),e.on("reInit",i).on("reInit",r).on("select",r))}),[e,i,r]),{selectedIndex:n,scrollSnaps:s,onDotButtonClick:c}},s=e=>{const{children:t,...n}=e;return a.createElement("button",Object.assign({type:"button"},n),t)}}}]); -//# sourceMappingURL=2900-779eedf26db62b1cd2eb.js.map \ No newline at end of file diff --git a/docs/2900-779eedf26db62b1cd2eb.js.map b/docs/2900-779eedf26db62b1cd2eb.js.map deleted file mode 100644 index da0caa6ac..000000000 --- a/docs/2900-779eedf26db62b1cd2eb.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"2900-779eedf26db62b1cd2eb.js","mappings":"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","sources":["webpack://embla-carousel-docs/../src/components/Options.ts","webpack://embla-carousel-docs/../src/components/AutoHeight.ts","webpack://embla-carousel-docs/./src/components/Sandbox/React/SandboxFilesSrc/AutoHeight/EmblaCarousel.tsx","webpack://embla-carousel-docs/./src/components/Sandbox/React/SandboxFilesSrc/EmblaCarouselDotButton.tsx"],"sourcesContent":["import { CreateOptionsType } from 'embla-carousel/components/Options'\n\nexport type OptionsType = CreateOptionsType<{\n destroyHeight: CSSStyleDeclaration['height']\n}>\n\nexport const defaultOptions: OptionsType = {\n active: true,\n breakpoints: {},\n destroyHeight: 'auto'\n}\n","import { defaultOptions, OptionsType } from './Options'\nimport { CreatePluginType } from 'embla-carousel/components/Plugins'\nimport { OptionsHandlerType } from 'embla-carousel/components/OptionsHandler'\nimport { EmblaCarouselType, EmblaEventType } from 'embla-carousel'\n\ndeclare module 'embla-carousel/components/Plugins' {\n interface EmblaPluginsType {\n autoHeight?: AutoHeightType\n }\n}\n\nexport type AutoHeightType = CreatePluginType<{}, OptionsType>\n\nexport type AutoHeightOptionsType = AutoHeightType['options']\n\nfunction AutoHeight(userOptions: AutoHeightOptionsType = {}): AutoHeightType {\n let options: OptionsType\n let emblaApi: EmblaCarouselType\n let slideHeights: number[] = []\n const heightEvents: EmblaEventType[] = ['select']\n\n function init(\n emblaApiInstance: EmblaCarouselType,\n optionsHandler: OptionsHandlerType\n ): void {\n emblaApi = emblaApiInstance\n\n const { mergeOptions, optionsAtMedia } = optionsHandler\n const optionsBase = mergeOptions(defaultOptions, AutoHeight.globalOptions)\n const allOptions = mergeOptions(optionsBase, userOptions)\n options = optionsAtMedia(allOptions)\n\n const {\n options: { axis },\n slideRects\n } = emblaApi.internalEngine()\n\n if (axis === 'y') return\n\n slideHeights = slideRects.map((slideRect) => slideRect.height)\n\n heightEvents.forEach((evt) => emblaApi.on(evt, setContainerHeight))\n setContainerHeight()\n }\n\n function destroy(): void {\n heightEvents.forEach((evt) => emblaApi.off(evt, setContainerHeight))\n setContainerHeight(undefined, 'destroy')\n }\n\n function highestInView(): number {\n const { slideRegistry } = emblaApi.internalEngine()\n const selectedIndexes = slideRegistry[emblaApi.selectedScrollSnap()]\n\n return selectedIndexes\n .map((index) => slideHeights[index])\n .reduce((a, b) => Math.max(a, b), 0)\n }\n\n function setContainerHeight(\n _?: EmblaCarouselType,\n evt?: EmblaEventType\n ): void {\n const height =\n evt === 'destroy' ? options.destroyHeight : `${highestInView()}px`\n emblaApi.containerNode().style.height = height\n }\n\n const self: AutoHeightType = {\n name: 'autoHeight',\n options: userOptions,\n init,\n destroy\n }\n return self\n}\n\nAutoHeight.globalOptions = undefined\n\nexport default AutoHeight\n","import React from 'react'\nimport { EmblaOptionsType } from 'embla-carousel'\nimport useEmblaCarousel from 'embla-carousel-react'\nimport AutoHeight from 'embla-carousel-auto-height'\nimport {\n NextButton,\n PrevButton,\n usePrevNextButtons\n} from '../EmblaCarouselArrowButtons'\nimport { DotButton, useDotButton } from '../EmblaCarouselDotButton'\n\ntype PropType = {\n slides: number[]\n options?: EmblaOptionsType\n}\n\nconst EmblaCarousel: React.FC = (props) => {\n const { slides, options } = props\n const [emblaRef, emblaApi] = useEmblaCarousel(options, [AutoHeight()])\n\n const { selectedIndex, scrollSnaps, onDotButtonClick } =\n useDotButton(emblaApi)\n\n const {\n prevBtnDisabled,\n nextBtnDisabled,\n onPrevButtonClick,\n onNextButtonClick\n } = usePrevNextButtons(emblaApi)\n\n return (\n
\n
\n
\n {slides.map((index) => (\n
\n
\n {index + 1}\n
\n
\n ))}\n
\n
\n\n
\n
\n \n \n
\n\n
\n {scrollSnaps.map((_, index) => (\n onDotButtonClick(index)}\n className={'embla__dot'.concat(\n index === selectedIndex ? ' embla__dot--selected' : ''\n )}\n />\n ))}\n
\n
\n
\n )\n}\n\nexport default EmblaCarousel\n","import React, {\n PropsWithChildren,\n useCallback,\n useEffect,\n useState\n} from 'react'\nimport { EmblaCarouselType } from 'embla-carousel'\n\ntype UseDotButtonType = {\n selectedIndex: number\n scrollSnaps: number[]\n onDotButtonClick: (index: number) => void\n}\n\nexport const useDotButton = (\n emblaApi: EmblaCarouselType | undefined,\n onButtonClick?: (emblaApi: EmblaCarouselType) => void\n): UseDotButtonType => {\n const [selectedIndex, setSelectedIndex] = useState(0)\n const [scrollSnaps, setScrollSnaps] = useState([])\n\n const onDotButtonClick = useCallback(\n (index: number) => {\n if (!emblaApi) return\n emblaApi.scrollTo(index)\n if (onButtonClick) onButtonClick(emblaApi)\n },\n [emblaApi, onButtonClick]\n )\n\n const onInit = useCallback((emblaApi: EmblaCarouselType) => {\n setScrollSnaps(emblaApi.scrollSnapList())\n }, [])\n\n const onSelect = useCallback((emblaApi: EmblaCarouselType) => {\n setSelectedIndex(emblaApi.selectedScrollSnap())\n }, [])\n\n useEffect(() => {\n if (!emblaApi) return\n\n onInit(emblaApi)\n onSelect(emblaApi)\n\n emblaApi.on('reInit', onInit).on('reInit', onSelect).on('select', onSelect)\n }, [emblaApi, onInit, onSelect])\n\n return {\n selectedIndex,\n scrollSnaps,\n onDotButtonClick\n }\n}\n\ntype PropType = PropsWithChildren<\n React.DetailedHTMLProps<\n React.ButtonHTMLAttributes,\n HTMLButtonElement\n >\n>\n\nexport const DotButton: React.FC = (props) => {\n const { children, ...restProps } = props\n\n return (\n \n )\n}\n"],"names":["defaultOptions","active","breakpoints","destroyHeight","AutoHeight","userOptions","options","emblaApi","slideHeights","heightEvents","setContainerHeight","_","evt","height","slideRegistry","internalEngine","selectedScrollSnap","map","index","reduce","a","b","Math","max","highestInView","containerNode","style","name","init","emblaApiInstance","optionsHandler","mergeOptions","optionsAtMedia","optionsBase","globalOptions","allOptions","axis","slideRects","slideRect","forEach","on","destroy","off","undefined","props","slides","emblaRef","useEmblaCarousel","selectedIndex","scrollSnaps","onDotButtonClick","useDotButton","prevBtnDisabled","nextBtnDisabled","onPrevButtonClick","onNextButtonClick","usePrevNextButtons","React","className","ref","key","PrevButton","onClick","disabled","NextButton","DotButton","concat","onButtonClick","setSelectedIndex","useState","setScrollSnaps","useCallback","scrollTo","onInit","scrollSnapList","onSelect","useEffect","children","restProps","Object","assign","type"],"sourceRoot":""} \ No newline at end of file diff --git a/docs/2c8f1d14031690b3a7c730295b2f775c68c4b349-9081749583888e3f282d.js.map b/docs/2c8f1d14031690b3a7c730295b2f775c68c4b349-9081749583888e3f282d.js.map index 6f306c893..0115fe0aa 100644 --- a/docs/2c8f1d14031690b3a7c730295b2f775c68c4b349-9081749583888e3f282d.js.map +++ b/docs/2c8f1d14031690b3a7c730295b2f775c68c4b349-9081749583888e3f282d.js.map @@ -1 +1 @@ -{"version":3,"file":"2c8f1d14031690b3a7c730295b2f775c68c4b349-9081749583888e3f282d.js","mappings":"oMAcO,MAAMA,EAAeA,CAC1BC,EACAC,KAEA,MAAM,EAACC,EAAc,EAACC,IAAoBC,EAAAA,EAAAA,UAAS,IAC7C,EAACC,EAAY,EAACC,IAAkBF,EAAAA,EAAAA,UAAmB,IAEnDG,GAAmBC,EAAAA,EAAAA,cACtBC,IACMT,IACLA,EAASU,SAASD,GACdR,GAAeA,EAAcD,GAAS,GAE5C,CAACA,EAAUC,IAGPU,GAASH,EAAAA,EAAAA,cAAaR,IAC1BM,EAAeN,EAASY,iBAAiB,GACxC,IAEGC,GAAWL,EAAAA,EAAAA,cAAaR,IAC5BG,EAAiBH,EAASc,qBAAqB,GAC9C,IAWH,OATAC,EAAAA,EAAAA,YAAU,KACHf,IAELW,EAAOX,GACPa,EAASb,GAETA,EAASgB,GAAG,SAAUL,GAAQK,GAAG,SAAUH,GAAUG,GAAG,SAAUH,GAAS,GAC1E,CAACb,EAAUW,EAAQE,IAEf,CACLX,gBACAG,cACAE,mBACD,EAUUU,EAAiCC,IAC5C,MAAM,SAAEC,KAAaC,GAAcF,EAEnC,OACEG,EAAAA,cAAA,SAAAC,OAAAC,OAAA,CAAQC,KAAK,UAAaJ,GACvBD,EACM,C,gECoGb,UA7I2CD,IACzC,MAAM,QAAEO,EAASC,OAAQC,GAAeT,EAClCU,GAAoBC,EAAAA,EAAAA,SAAmB,KAAe,IACtDC,GAAqBD,EAAAA,EAAAA,SAAO,GAC5BE,GAAmBF,EAAAA,EAAAA,SAAO,IAC1B,EAACH,EAAO,EAACM,IAAa5B,EAAAA,EAAAA,UAASuB,IAC/B,EAACM,EAAc,EAACC,IAAoB9B,EAAAA,EAAAA,WAAS,IAC7C,EAAC+B,EAAY,EAACC,IAAkBhC,EAAAA,EAAAA,WAAS,IAExCiC,EAAUrC,IAAYsC,EAAAA,EAAAA,GAAiB,IACzCb,EACHc,YAAcvC,IACZ,MAAMwC,EAAcA,KAClB,MAAMC,EAAYzC,EAAS0C,iBAE3B1C,EAAS2C,SACT,MAAMC,EAAY5C,EAAS0C,iBACqB,CAC9C,WACA,SACA,cAEgBG,SAASC,IACzBxB,OAAOC,OAAOqB,EAAUE,GAAeL,EAAUK,GAAc,IAGjEF,EAAUG,UAAUC,GAAGP,EAAUQ,SAASC,OAC1C,MAAM,MAAEzC,GAAUmC,EAAUO,aAAaC,WAAW,GAAG,GACvDR,EAAUnC,MAAM4C,IAAI5C,GACpBmC,EAAUU,UAAUC,QAEpBnB,GAAe,GACfN,EAAmB0B,SAAU,CAAI,EAG7BC,EAAuBA,KAC3BzD,EAAS0D,IAAI,YAAaD,GAC1BjB,GAAa,EAGTmB,EAAS3D,EAAS0C,iBAExB,GAAIX,EAAiByB,SAAWG,EAAOC,YAAYC,cAAe,CAChE,MAAMC,EAAeH,EAAOI,MAAMC,WAAWL,EAAOM,OAAOf,OAC3DS,EAAOO,aAAaC,aAAaL,GACjC9D,EAASgB,GAAG,YAAayC,EAC3B,MACEjB,GACF,KAIE,gBACJ4B,EAAe,gBACfC,EAAe,kBACfC,EAAiB,kBACjBC,IACEC,EAAAA,EAAAA,IAAmBxE,GAEjByE,GAAWjE,EAAAA,EAAAA,cAAaR,IACvB8B,EAAmB0B,SAExBpB,GAAgBD,IACd,MAAMuC,EAAY1E,EAAS2E,aAAaC,OAAS,EAC3CC,EAAkB7E,EAAS8E,eAAeC,SAASL,GAmBzD,OAlBkBvC,GAAe0C,IAG/B/C,EAAmB0B,SAAU,EApFjBwB,EAClBC,EACAC,EACAC,KAEA,MAAMC,EAAMC,KAAKC,KAAKL,GAChBM,EAAMF,KAAKG,MAAMN,GACjBO,EAAOJ,KAAKG,MAAMH,KAAKK,UAAYH,EAAMH,EAAM,IAAMA,EAC3DO,WAAWR,EAAUM,EAAK,EA8EpBT,CAAY,IAAM,KAAM,KACtBhD,GAAW4D,IACT,GAA6B,KAAzBA,EAAchB,OAGhB,OAFA1C,GAAiB,GACjBlC,EAAS0D,IAAI,SAAU9B,EAAkB4B,SAClCoC,EAET,MAAMC,EAAgBD,EAAchB,OAAS,EAC7C,OAAOkB,MAAMC,KAAKD,MAAMD,GAAeG,OAAO,GAC9C,KAIC7D,GAAe0C,CAAe,GACrC,GACD,IAEGoB,GAAoBzF,EAAAA,EAAAA,cACvBR,IACC4B,EAAkB4B,QAAU,IAAMiB,EAASzE,GAC3CA,EAASgB,GAAG,SAAUY,EAAkB4B,QAAQ,GAElD,CAACiB,IAgBH,OAbA1D,EAAAA,EAAAA,YAAU,KACR,IAAKf,EAAU,OACfiG,EAAkBjG,GAElB,MAAMkG,EAAWA,IAAMlG,EAAS2C,SAChCwD,OAAOC,iBAAiB,SAAUF,GAClClG,EAASgB,GAAG,WAAW,IAAMmF,OAAOE,oBAAoB,SAAUH,IAAU,GAC3E,CAAClG,EAAUiG,KAEdlF,EAAAA,EAAAA,YAAU,KACRgB,EAAiByB,QAAUvB,CAAa,GACvC,CAACA,IAGFZ,EAAAA,cAAA,OAAKiF,UAAU,SACbjF,EAAAA,cAAA,OAAKiF,UAAU,kBAAkBC,IAAKlE,GACpChB,EAAAA,cAAA,OAAKiF,UAAU,oBACZ5E,EAAO8E,KAAK/F,GACXY,EAAAA,cAAA,OAAKiF,UAAU,eAAeG,IAAKhG,GACjCY,EAAAA,cAAA,OAAKiF,UAAU,wBACbjF,EAAAA,cAAA,YAAOZ,EAAQ,OAIpBwB,GACCZ,EAAAA,cAAA,OACEiF,UAAW,wBAAwBI,OACjCvE,EAAc,uCAAyC,KAGzDd,EAAAA,cAAA,QAAMiF,UAAU,sCAMxBjF,EAAAA,cAAA,OAAKiF,UAAU,mBACbjF,EAAAA,cAAA,OAAKiF,UAAU,kBACbjF,EAAAA,cAACsF,EAAAA,GAAU,CAACC,QAAStC,EAAmBuC,SAAUzC,IAClD/C,EAAAA,cAACyF,EAAAA,GAAU,CAACF,QAASrC,EAAmBsC,SAAUxC,MAGlD,C,4FC/JV,MAKa0C,EAAoBC,GAEpBC,EAAe5B,KAAK6B,MAC/BC,GAAsB9B,KAAK+B,IAAI/B,KAAKgC,GANb,KASnBC,EAAWA,CAACC,EAAuBC,IACvCnC,KAAKoC,IAAIF,EAAgBC,GANIT,GA+DlBW,EAAqCxG,IAChD,MAAM,WAAEyG,EAAU,YAAEC,EAAW,MAAEC,EAAK,KAAEC,GAAO,GAAU5G,GAClDmB,EAAUrC,IAAYsC,EAAAA,EAAAA,GAAiB,CAC5CwF,OACAC,KAAM,IACNC,UAAU,EACVC,eAAe,EACf1F,aAAa,IAET2F,GAAcrG,EAAAA,EAAAA,QAAuB,MACrCsG,EAAcR,EAAaZ,EAC3BqB,EAAiBN,EAAO,EAAIf,EAC5BrF,EAASoE,MAAMC,KAAKD,MAAM6B,GAAY3B,QAEtCqC,GAA2B7H,EAAAA,EAAAA,cAC9BR,IACC,IAAKA,EAAU,OACf,MAAM,UAAE+C,EAAS,YAAEuF,GAAgBtI,EAAS0C,iBAC5CK,EAAUwF,QACVxF,EAAUoB,cAAa,GACvBmE,EAAYE,WAAW3F,SAAQ4F,IAAoB,IAAnB,UAAE1F,GAAW0F,EAC3C1F,EAAUwF,QACVxF,EAAUoB,cAAa,EAAM,GAC7B,GAEJ,IAGIuE,GAAclI,EAAAA,EAAAA,cACjBR,IACC,MACM2I,GADWhB,EAAaZ,EAAoBqB,GACjBpI,EAAS4I,iBA7CdC,EAChC7I,EACA2I,KAEA3I,EAAS8I,gBAAgBC,MAAMC,UAAS,cAAiB/B,EAAY,eAAe0B,EAAa,MAAM,EA0CnGE,CAAmB7I,EAAU2I,GAC7B3I,EAAS2E,aAAa9B,SAAQ,CAACoG,EAAGxI,KAxFjByI,EACrBlJ,EACAS,EACAqH,EACAH,EACAQ,KAEA,MAAMgB,EAAYnJ,EAAS2E,aAAalE,GAClC8G,EAAgBvH,EAAS4I,iBAAmBT,EAC5CiB,EAAkBpJ,EAASY,iBAAiBH,GAAS0H,EACrDkB,EAAoBD,EAAkBjB,EACtCmB,EAAkBF,EAAkBjB,EAE1C,IAAIoB,GAAS,EACTC,GAAgB,GAAR/I,EAER6G,EAASC,EAAe6B,KAC1BG,GAAS,GAGPzB,GAAQR,EAASC,EAAe+B,KAClCC,GAAS,EACTC,GAA2B7B,EAAalH,GAASsG,EApC9B,KAuCjBe,GAAQR,EAASC,EAAe8B,KAClCE,GAAS,EACTC,GAAUrB,EAzCS,IAyCuB1H,EAAQsG,GAGhDwC,GACFJ,EAAUJ,MAAMU,QAAU,IAC1BN,EAAUJ,MAAMC,UAAS,eACf,IAARvI,EAAW,cACC+I,EAAK,mBAAmBvC,EAAY,QAElDkC,EAAUJ,MAAMU,QAAU,IAC1BN,EAAUJ,MAAMC,UAAY,OAC9B,EAmDME,CAAelJ,EAAUS,EAAOqH,EAAMH,EAAYQ,EAAY,GAC9D,GAEJ,CAACR,EAAYS,EAAgBD,IAyB/B,OAtBApH,EAAAA,EAAAA,YAAU,KACHf,IAELA,EAASgB,GAAG,aAAchB,IACxB,MAAM,SAAEU,EAAQ,OAAEuD,EAAM,SAAEhB,GAAajD,EAAS0C,iBAC1CgH,EAAezF,EAAOf,MAAQD,EAASC,MAEvCyG,EAAWD,GADFrE,KAAKoC,IAAIiC,GAAgBvC,KAAwB,GAAK,IAErEzG,EAASiJ,SAASA,GAAU,EAAK,IAGnC3J,EAASgB,GAAG,SAAU0H,GAEtB1I,EAASgB,GAAG,UAAWhB,IACrBqI,EAAyBrI,GACzB0I,EAAY1I,EAAS,IAGvBqI,EAAyBrI,GACzB0I,EAAY1I,GAAS,GACpB,CAACA,EAAUqI,EAA0BK,IAGtCrH,EAAAA,cAAA,OAAKiF,UAAU,qBACbjF,EAAAA,cAAA,OAAKiF,UAAU,2BAA2BC,IAAK2B,GAC7C7G,EAAAA,cAAA,OACEiF,UAAS,wEAA0EsB,EACnFrB,IAAKlE,GAELhB,EAAAA,cAAA,OAAKiF,UAAU,gCACZ5E,EAAO8E,KAAI,CAACyC,EAAGxI,IACdY,EAAAA,cAAA,OAAKiF,UAAU,2BAA2BG,IAAKhG,GAC5CA,QAMXY,EAAAA,cAAA,OAAKiF,UAAU,4BAA4BuB,GACvC,EC3HV,MArB2C3G,IACzC,MAAM,KAAE4G,GAAS5G,EAEjB,OACEG,EAAAA,cAAA,OAAKiF,UAAU,SACbjF,EAAAA,cAACqG,EAAa,CACZC,WAAY,GACZC,YAAY,OACZE,KAAMA,EACND,MAAM,UAERxG,EAAAA,cAACqG,EAAa,CACZC,WAAY,GACZC,YAAY,QACZE,KAAMA,EACND,MAAM,QAEJ,C,4FCvBV,MAQa+B,EAAqC1I,IAChD,MAAM,OAAE2I,EAAM,OAAEN,GAAWrI,GACrB,EAAC4I,EAAU,EAACC,IAAgB3J,EAAAA,EAAAA,WAAS,GAErC4J,GAAYxJ,EAAAA,EAAAA,cAAY,KACxB+I,GAAQQ,GAAa,EAAK,GAC7B,CAACR,EAAQQ,IAEZ,OACE1I,EAAAA,cAAA,OAAKiF,UAAU,gBACbjF,EAAAA,cAAA,OACEiF,UAAW,mBAAmBI,OAC5BoD,EAAY,gCAAkC,MAG9CA,GAAazI,EAAAA,cAAA,QAAMiF,UAAU,8BAC/BjF,EAAAA,cAAA,OACEiF,UAAU,0CACV2D,OAAQD,EACRE,IAAKX,EAASM,EA3BH,+DA4BXM,IAAI,gBACJ,WAAUN,KAGV,E,uBCsDV,MAxE2C3I,IACzC,MAAM,OAAEQ,EAAM,QAAED,GAAYP,GACrBkJ,EAAUpK,IAAYsC,EAAAA,EAAAA,GAAiBb,IACxC,EAACqD,EAAa,EAACuF,IAAmBjK,EAAAA,EAAAA,UAAmB,KAErD,cAAEF,EAAa,YAAEG,EAAW,iBAAEE,IAClCR,EAAAA,EAAAA,GAAaC,IAET,gBACJoE,EAAe,gBACfC,EAAe,kBACfC,EAAiB,kBACjBC,IACEC,EAAAA,EAAAA,IAAmBxE,GAEjBsK,GAAqB9J,EAAAA,EAAAA,cAAaR,IACtCqK,GAAiBvF,IACXA,EAAaF,SAAW5E,EAAS2E,aAAaC,QAChD5E,EAAS0D,IAAI,eAAgB4G,GAE/B,MAAMf,EAASvJ,EACZ8E,eACAyF,QAAQ9J,IAAWqE,EAAaC,SAAStE,KAC5C,OAAOqE,EAAa4B,OAAO6C,EAAO,GAClC,GACD,IAUH,OARAxI,EAAAA,EAAAA,YAAU,KACHf,IAELsK,EAAmBtK,GACnBA,EAASgB,GAAG,eAAgBsJ,GAC5BtK,EAASgB,GAAG,SAAUsJ,GAAmB,GACxC,CAACtK,EAAUsK,IAGZjJ,EAAAA,cAAA,OAAKiF,UAAU,SACbjF,EAAAA,cAAA,OAAKiF,UAAU,kBAAkBC,IAAK6D,GACpC/I,EAAAA,cAAA,OAAKiF,UAAU,oBACZ5E,EAAO8E,KAAK/F,GACXY,EAAAA,cAACuI,EAAa,CACZnD,IAAKhG,EACLA,MAAOA,EACPoJ,OAAM,mCAAqCpJ,EAC3C8I,OAAQzE,EAAa0F,QAAQ/J,IAAU,QAM/CY,EAAAA,cAAA,OAAKiF,UAAU,mBACbjF,EAAAA,cAAA,OAAKiF,UAAU,kBACbjF,EAAAA,cAACsF,EAAAA,GAAU,CAACC,QAAStC,EAAmBuC,SAAUzC,IAClD/C,EAAAA,cAACyF,EAAAA,GAAU,CAACF,QAASrC,EAAmBsC,SAAUxC,KAGpDhD,EAAAA,cAAA,OAAKiF,UAAU,eACZjG,EAAYmG,KAAI,CAACyC,EAAGxI,IACnBY,EAAAA,cAACJ,EAAAA,EAAS,CACRwF,IAAKhG,EACLmG,QAASA,IAAMrG,EAAiBE,GAChC6F,UAAW,aAAaI,OACtBjG,IAAUP,EAAgB,wBAA0B,UAM1D,C,kFCkDV,UA7G2CgB,IACzC,MAAM,OAAEQ,EAAM,QAAED,GAAYP,GACrBmB,EAAUrC,IAAYsC,EAAAA,EAAAA,GAAiBb,GACxCgJ,GAAc5I,EAAAA,EAAAA,QAAO,IAErB,cAAE3B,EAAa,YAAEG,EAAW,iBAAEE,IAClCR,EAAAA,EAAAA,GAAaC,IAET,gBACJoE,EAAe,gBACfC,EAAe,kBACfC,EAAiB,kBACjBC,IACEC,EAAAA,EAAAA,IAAmBxE,GAEjB0K,GAAiBlK,EAAAA,EAAAA,cAAaR,IAClCyK,EAAYjH,QA1BU,IA0BoBxD,EAASY,iBAAiBgE,MAAM,GACzE,IAEG+F,GAAenK,EAAAA,EAAAA,cACnB,CAACR,EAA6B4K,KAC5B,MAAMjH,EAAS3D,EAAS0C,iBAClBkG,EAAiB5I,EAAS4I,iBAC1B9D,EAAe9E,EAAS8E,eACxB+F,EAA8B,WAAdD,EAEtB5K,EAASY,iBAAiBiC,SAAQ,CAACiI,EAAYC,KAC7C,IAAIrB,EAAeoB,EAAalC,EACXjF,EAAOqH,cAAcD,GAE7BlI,SAASoI,IACpB,GAAIJ,IAAkB/F,EAAaC,SAASkG,GAAa,OAErDtH,EAAOlC,QAAQqG,MACjBnE,EAAO2E,YAAYE,WAAW3F,SAASqI,IACrC,MAAMjH,EAASiH,EAASjH,SAExB,GAAIgH,IAAeC,EAASzK,OAAoB,IAAXwD,EAAc,CACjD,MAAMkH,EAAO9F,KAAK8F,KAAKlH,IAET,IAAVkH,IACFzB,EAAeoB,GAAc,EAAIlC,IAEtB,IAATuC,IACFzB,EAAeoB,GAAc,EAAIlC,GAErC,KAIJ,MAAMwC,EAAa,EAAI/F,KAAKoC,IAAIiC,EAAee,EAAYjH,SACrDiG,GA3DW4B,EA2DiBD,EA3DDhG,EA2Da,EA3DAG,EA2DG,EA1DzDF,KAAKD,IAAIC,KAAKE,IAAI8F,EAAQjG,GAAMG,IA0D4B+F,WA3DpCC,IAACF,EAAgBjG,EAAaG,EA4D9CvF,EAAS2E,aAAasG,GAAYlC,MAAMU,QAAUA,CAAO,GACzD,GACF,GAEJ,IAeF,OAZA1I,EAAAA,EAAAA,YAAU,KACHf,IAEL0K,EAAe1K,GACf2K,EAAa3K,GACbA,EACGgB,GAAG,SAAU0J,GACb1J,GAAG,SAAU2J,GACb3J,GAAG,SAAU2J,GACb3J,GAAG,aAAc2J,GAAa,GAChC,CAAC3K,EAAU2K,IAGZtJ,EAAAA,cAAA,OAAKiF,UAAU,SACbjF,EAAAA,cAAA,OAAKiF,UAAU,kBAAkBC,IAAKlE,GACpChB,EAAAA,cAAA,OAAKiF,UAAU,oBACZ5E,EAAO8E,KAAK/F,GACXY,EAAAA,cAAA,OAAKiF,UAAU,eAAeG,IAAKhG,GACjCY,EAAAA,cAAA,OACEiF,UAAU,oBACV4D,KAAKsB,EAAAA,EAAAA,GAAc/K,GACnB0J,IAAI,uBAOd9I,EAAAA,cAAA,OAAKiF,UAAU,mBACbjF,EAAAA,cAAA,OAAKiF,UAAU,kBACbjF,EAAAA,cAACsF,EAAAA,GAAU,CAACC,QAAStC,EAAmBuC,SAAUzC,IAClD/C,EAAAA,cAACyF,EAAAA,GAAU,CAACF,QAASrC,EAAmBsC,SAAUxC,KAGpDhD,EAAAA,cAAA,OAAKiF,UAAU,eACZjG,EAAYmG,KAAI,CAACyC,EAAGxI,IACnBY,EAAAA,cAACJ,EAAAA,EAAS,CACRwF,IAAKhG,EACLmG,QAASA,IAAMrG,EAAiBE,GAChC6F,UAAW,aAAaI,OACtBjG,IAAUP,EAAgB,wBAA0B,UAM1D,C,mFCeV,UA3H2CgB,IACzC,MAAM,OAAEQ,EAAM,QAAED,GAAYP,GACrBmB,EAAUrC,IAAYsC,EAAAA,EAAAA,GAAiBb,GACxCgJ,GAAc5I,EAAAA,EAAAA,QAAO,GACrB4J,GAAa5J,EAAAA,EAAAA,QAAsB,KAEnC,cAAE3B,EAAa,YAAEG,EAAW,iBAAEE,IAClCR,EAAAA,EAAAA,GAAaC,IAET,gBACJoE,EAAe,gBACfC,EAAe,kBACfC,EAAiB,kBACjBC,IACEC,EAAAA,EAAAA,IAAmBxE,GAEjB0L,GAAgBlL,EAAAA,EAAAA,cAAaR,IACjCyL,EAAWjI,QAAUxD,EAAS2E,aAAa6B,KAAK2C,GACvCA,EAAUwC,cAAc,4BAC/B,GACD,IAEGjB,GAAiBlK,EAAAA,EAAAA,cAAaR,IAClCyK,EAAYjH,QA9BU,GA8BoBxD,EAASY,iBAAiBgE,MAAM,GACzE,IAEGgH,GAAgBpL,EAAAA,EAAAA,cACpB,CAACR,EAA6B4K,KAC5B,MAAMjH,EAAS3D,EAAS0C,iBAClBkG,EAAiB5I,EAAS4I,iBAC1B9D,EAAe9E,EAAS8E,eACxB+F,EAA8B,WAAdD,EAEtB5K,EAASY,iBAAiBiC,SAAQ,CAACiI,EAAYC,KAC7C,IAAIrB,EAAeoB,EAAalC,EACXjF,EAAOqH,cAAcD,GAE7BlI,SAASoI,IACpB,GAAIJ,IAAkB/F,EAAaC,SAASkG,GAAa,OAErDtH,EAAOlC,QAAQqG,MACjBnE,EAAO2E,YAAYE,WAAW3F,SAASqI,IACrC,MAAMjH,EAASiH,EAASjH,SAExB,GAAIgH,IAAeC,EAASzK,OAAoB,IAAXwD,EAAc,CACjD,MAAMkH,EAAO9F,KAAK8F,KAAKlH,IAET,IAAVkH,IACFzB,EAAeoB,GAAc,EAAIlC,IAEtB,IAATuC,IACFzB,EAAeoB,GAAc,EAAIlC,GAErC,KAIJ,MAAM7F,EAAY2G,IAAiB,EAAIe,EAAYjH,SAAW,IAC5CiI,EAAWjI,QAAQyH,GAC3BlC,MAAMC,UAAS,cAAiBjG,EAAS,IAAI,GACvD,GACF,GAEJ,IAkBF,OAfAhC,EAAAA,EAAAA,YAAU,KACHf,IAEL0L,EAAc1L,GACd0K,EAAe1K,GACf4L,EAAc5L,GAEdA,EACGgB,GAAG,SAAU0K,GACb1K,GAAG,SAAU0J,GACb1J,GAAG,SAAU4K,GACb5K,GAAG,SAAU4K,GACb5K,GAAG,aAAc4K,GAAc,GACjC,CAAC5L,EAAU4L,IAGZvK,EAAAA,cAAA,OAAKiF,UAAU,SACbjF,EAAAA,cAAA,OAAKiF,UAAU,kBAAkBC,IAAKlE,GACpChB,EAAAA,cAAA,OAAKiF,UAAU,oBACZ5E,EAAO8E,KAAK/F,GACXY,EAAAA,cAAA,OAAKiF,UAAU,eAAeG,IAAKhG,GACjCY,EAAAA,cAAA,OAAKiF,UAAU,mBACbjF,EAAAA,cAAA,OAAKiF,UAAU,0BACbjF,EAAAA,cAAA,OACEiF,UAAU,yCACV4D,KAAKsB,EAAAA,EAAAA,GAAc/K,GACnB0J,IAAI,yBASlB9I,EAAAA,cAAA,OAAKiF,UAAU,mBACbjF,EAAAA,cAAA,OAAKiF,UAAU,kBACbjF,EAAAA,cAACsF,EAAAA,GAAU,CAACC,QAAStC,EAAmBuC,SAAUzC,IAClD/C,EAAAA,cAACyF,EAAAA,GAAU,CAACF,QAASrC,EAAmBsC,SAAUxC,KAGpDhD,EAAAA,cAAA,OAAKiF,UAAU,eACZjG,EAAYmG,KAAI,CAACyC,EAAGxI,IACnBY,EAAAA,cAACJ,EAAAA,EAAS,CACRwF,IAAKhG,EACLmG,QAASA,IAAMrG,EAAiBE,GAChC6F,UAAW,aAAaI,OACtBjG,IAAUP,EAAgB,wBAA0B,UAM1D,C,gECrEV,UA1D2CgB,IACzC,MAAM,OAAEQ,EAAM,QAAED,GAAYP,GACrBmB,EAAUrC,IAAYsC,EAAAA,EAAAA,GAAiBb,IACxC,EAACmH,EAAe,EAACiD,IAAqBzL,EAAAA,EAAAA,UAAS,IAE/C,gBACJgE,EAAe,gBACfC,EAAe,kBACfC,EAAiB,kBACjBC,IACEC,EAAAA,EAAAA,IAAmBxE,GAEjByE,GAAWjE,EAAAA,EAAAA,cAAaR,IAC5B,MAAM8L,EAAWzG,KAAKE,IAAI,EAAGF,KAAKD,IAAI,EAAGpF,EAAS4I,mBAClDiD,EAA6B,IAAXC,EAAe,GAChC,IAYH,OAVA/K,EAAAA,EAAAA,YAAU,KACHf,IAELyE,EAASzE,GACTA,EACGgB,GAAG,SAAUyD,GACbzD,GAAG,SAAUyD,GACbzD,GAAG,aAAcyD,GAAS,GAC5B,CAACzE,EAAUyE,IAGZpD,EAAAA,cAAA,OAAKiF,UAAU,SACbjF,EAAAA,cAAA,OAAKiF,UAAU,kBAAkBC,IAAKlE,GACpChB,EAAAA,cAAA,OAAKiF,UAAU,oBACZ5E,EAAO8E,KAAK/F,GACXY,EAAAA,cAAA,OAAKiF,UAAU,eAAeG,IAAKhG,GACjCY,EAAAA,cAAA,OAAKiF,UAAU,wBACbjF,EAAAA,cAAA,YAAOZ,EAAQ,SAOzBY,EAAAA,cAAA,OAAKiF,UAAU,mBACbjF,EAAAA,cAAA,OAAKiF,UAAU,kBACbjF,EAAAA,cAACsF,EAAAA,GAAU,CAACC,QAAStC,EAAmBuC,SAAUzC,IAClD/C,EAAAA,cAACyF,EAAAA,GAAU,CAACF,QAASrC,EAAmBsC,SAAUxC,KAGpDhD,EAAAA,cAAA,OAAKiF,UAAU,mBACbjF,EAAAA,cAAA,OACEiF,UAAU,uBACVyC,MAAO,CAAEC,UAAU,eAAgBJ,EAAc,kBAInD,C,wECwEV,UApH2C1H,IACzC,MAAM,OAAEQ,EAAM,QAAED,GAAYP,GACrBmB,EAAUrC,IAAYsC,EAAAA,EAAAA,GAAiBb,GACxCgJ,GAAc5I,EAAAA,EAAAA,QAAO,GACrB4J,GAAa5J,EAAAA,EAAAA,QAAsB,KAEnC,cAAE3B,EAAa,YAAEG,EAAW,iBAAEE,IAClCR,EAAAA,EAAAA,GAAaC,IAET,gBACJoE,EAAe,gBACfC,EAAe,kBACfC,EAAiB,kBACjBC,IACEC,EAAAA,EAAAA,IAAmBxE,GAEjB0L,GAAgBlL,EAAAA,EAAAA,cAAaR,IACjCyL,EAAWjI,QAAUxD,EAAS2E,aAAa6B,KAAK2C,GACvCA,EAAUwC,cAAc,0BAC/B,GACD,IAEGjB,GAAiBlK,EAAAA,EAAAA,cAAaR,IAClCyK,EAAYjH,QAjCU,IAiCoBxD,EAASY,iBAAiBgE,MAAM,GACzE,IAEGmH,GAAavL,EAAAA,EAAAA,cACjB,CAACR,EAA6B4K,KAC5B,MAAMjH,EAAS3D,EAAS0C,iBAClBkG,EAAiB5I,EAAS4I,iBAC1B9D,EAAe9E,EAAS8E,eACxB+F,EAA8B,WAAdD,EAEtB5K,EAASY,iBAAiBiC,SAAQ,CAACiI,EAAYC,KAC7C,IAAIrB,EAAeoB,EAAalC,EACXjF,EAAOqH,cAAcD,GAE7BlI,SAASoI,IACpB,GAAIJ,IAAkB/F,EAAaC,SAASkG,GAAa,OAErDtH,EAAOlC,QAAQqG,MACjBnE,EAAO2E,YAAYE,WAAW3F,SAASqI,IACrC,MAAMjH,EAASiH,EAASjH,SAExB,GAAIgH,IAAeC,EAASzK,OAAoB,IAAXwD,EAAc,CACjD,MAAMkH,EAAO9F,KAAK8F,KAAKlH,IAET,IAAVkH,IACFzB,EAAeoB,GAAc,EAAIlC,IAEtB,IAATuC,IACFzB,EAAeoB,GAAc,EAAIlC,GAErC,KAIJ,MAAMwC,EAAa,EAAI/F,KAAKoC,IAAIiC,EAAee,EAAYjH,SACrDwI,GAlEWX,EAkEeD,EAlEChG,EAkEW,EAlEEG,EAkEC,EAjEvDF,KAAKD,IAAIC,KAAKE,IAAI8F,EAAQjG,GAAMG,IAiE0B+F,WAlElCC,IAACF,EAAgBjG,EAAaG,EAmE5BkG,EAAWjI,QAAQyH,GAC3BlC,MAAMC,UAAS,SAAYgD,EAAK,GAAG,GAC7C,GACF,GAEJ,IAkBF,OAfAjL,EAAAA,EAAAA,YAAU,KACHf,IAEL0L,EAAc1L,GACd0K,EAAe1K,GACf+L,EAAW/L,GAEXA,EACGgB,GAAG,SAAU0K,GACb1K,GAAG,SAAU0J,GACb1J,GAAG,SAAU+K,GACb/K,GAAG,SAAU+K,GACb/K,GAAG,aAAc+K,GAAW,GAC9B,CAAC/L,EAAU+L,IAGZ1K,EAAAA,cAAA,OAAKiF,UAAU,SACbjF,EAAAA,cAAA,OAAKiF,UAAU,kBAAkBC,IAAKlE,GACpChB,EAAAA,cAAA,OAAKiF,UAAU,oBACZ5E,EAAO8E,KAAK/F,GACXY,EAAAA,cAAA,OAAKiF,UAAU,eAAeG,IAAKhG,GACjCY,EAAAA,cAAA,OAAKiF,UAAU,wBAAwB7F,EAAQ,QAMvDY,EAAAA,cAAA,OAAKiF,UAAU,mBACbjF,EAAAA,cAAA,OAAKiF,UAAU,kBACbjF,EAAAA,cAACsF,EAAAA,GAAU,CAACC,QAAStC,EAAmBuC,SAAUzC,IAClD/C,EAAAA,cAACyF,EAAAA,GAAU,CAACF,QAASrC,EAAmBsC,SAAUxC,KAGpDhD,EAAAA,cAAA,OAAKiF,UAAU,eACZjG,EAAYmG,KAAI,CAACyC,EAAGxI,IACnBY,EAAAA,cAACJ,EAAAA,EAAS,CACRwF,IAAKhG,EACLmG,QAASA,IAAMrG,EAAiBE,GAChC6F,UAAW,aAAaI,OACtBjG,IAAUP,EAAgB,wBAA0B,UAM1D,C,4FChIH,MAAM+L,EAA6B/K,IACxC,MAAM,SAAEgL,EAAQ,MAAEzL,EAAK,QAAEmG,GAAY1F,EAErC,OACEG,EAAAA,cAAA,OACEiF,UAAW,sBAAsBI,OAC/BwF,EAAW,iCAAmC,KAGhD7K,EAAAA,cAAA,UACEuF,QAASA,EACTpF,KAAK,SACL8E,UAAU,+BAET7F,EAAQ,GAEP,EC8CV,MA5D2CS,IACzC,MAAM,OAAEQ,EAAM,QAAED,GAAYP,GACtB,EAAChB,EAAc,EAACC,IAAoBC,EAAAA,EAAAA,UAAS,IAC5C+L,EAAcC,IAAgB9J,EAAAA,EAAAA,GAAiBb,IAC/C4K,EAAgBC,IAAkBhK,EAAAA,EAAAA,GAAiB,CACxD2F,cAAe,YACfD,UAAU,IAGNuE,GAAe/L,EAAAA,EAAAA,cAClBC,IACM2L,GAAiBE,GACtBF,EAAa1L,SAASD,EAAM,GAE9B,CAAC2L,EAAcE,IAGXzL,GAAWL,EAAAA,EAAAA,cAAY,KACtB4L,GAAiBE,IACtBnM,EAAiBiM,EAAatL,sBAC9BwL,EAAe5L,SAAS0L,EAAatL,sBAAqB,GACzD,CAACsL,EAAcE,EAAgBnM,IASlC,OAPAY,EAAAA,EAAAA,YAAU,KACHqL,IACLvL,IAEAuL,EAAapL,GAAG,SAAUH,GAAUG,GAAG,SAAUH,GAAS,GACzD,CAACuL,EAAcvL,IAGhBQ,EAAAA,cAAA,OAAKiF,UAAU,SACbjF,EAAAA,cAAA,OAAKiF,UAAU,kBAAkBC,IAAK4F,GACpC9K,EAAAA,cAAA,OAAKiF,UAAU,oBACZ5E,EAAO8E,KAAK/F,GACXY,EAAAA,cAAA,OAAKiF,UAAU,eAAeG,IAAKhG,GACjCY,EAAAA,cAAA,OAAKiF,UAAU,wBAAwB7F,EAAQ,QAMvDY,EAAAA,cAAA,OAAKiF,UAAU,gBACbjF,EAAAA,cAAA,OAAKiF,UAAU,yBAAyBC,IAAK8F,GAC3ChL,EAAAA,cAAA,OAAKiF,UAAU,2BACZ5E,EAAO8E,KAAK/F,GACXY,EAAAA,cAAC4K,EAAK,CACJxF,IAAKhG,EACLmG,QAASA,IAAM2F,EAAa9L,GAC5ByL,SAAUzL,IAAUP,EACpBO,MAAOA,SAMb,C,uDC5DV,MAAM+L,EAA6B,CCNpB,IAA0B,sDCA1B,IAA0B,sDCA1B,IAA0B,sDCA1B,IAA0B,sDCA1B,IAA0B,uDLQ5BhB,EAAiB/K,GAC5B+L,EAAiB/L,EAAQ+L,EAAiB5H,O","sources":["webpack://embla-carousel-docs/./src/components/Sandbox/React/SandboxFilesSrc/EmblaCarouselDotButton.tsx","webpack://embla-carousel-docs/./src/components/Sandbox/React/SandboxFilesSrc/InfiniteScroll/EmblaCarousel.tsx","webpack://embla-carousel-docs/./src/components/Sandbox/React/SandboxFilesSrc/IosPicker/EmblaCarouselIosPickerItem.tsx","webpack://embla-carousel-docs/./src/components/Sandbox/React/SandboxFilesSrc/IosPicker/EmblaCarousel.tsx","webpack://embla-carousel-docs/./src/components/Sandbox/React/SandboxFilesSrc/LazyLoad/EmblaCarouselLazyLoadImage.tsx","webpack://embla-carousel-docs/./src/components/Sandbox/React/SandboxFilesSrc/LazyLoad/EmblaCarousel.tsx","webpack://embla-carousel-docs/./src/components/Sandbox/React/SandboxFilesSrc/Opacity/EmblaCarousel.tsx","webpack://embla-carousel-docs/./src/components/Sandbox/React/SandboxFilesSrc/Parallax/EmblaCarousel.tsx","webpack://embla-carousel-docs/./src/components/Sandbox/React/SandboxFilesSrc/Progress/EmblaCarousel.tsx","webpack://embla-carousel-docs/./src/components/Sandbox/React/SandboxFilesSrc/Scale/EmblaCarousel.tsx","webpack://embla-carousel-docs/./src/components/Sandbox/React/SandboxFilesSrc/Thumbs/EmblaCarouselThumbsButton.tsx","webpack://embla-carousel-docs/./src/components/Sandbox/React/SandboxFilesSrc/Thumbs/EmblaCarousel.tsx","webpack://embla-carousel-docs/./src/components/Sandbox/sandboxImages.ts","webpack://embla-carousel-docs/./src/assets/images/slide-1.jpg","webpack://embla-carousel-docs/./src/assets/images/slide-2.jpg","webpack://embla-carousel-docs/./src/assets/images/slide-3.jpg","webpack://embla-carousel-docs/./src/assets/images/slide-4.jpg","webpack://embla-carousel-docs/./src/assets/images/slide-5.jpg"],"sourcesContent":["import React, {\n PropsWithChildren,\n useCallback,\n useEffect,\n useState\n} from 'react'\nimport { EmblaCarouselType } from 'embla-carousel'\n\ntype UseDotButtonType = {\n selectedIndex: number\n scrollSnaps: number[]\n onDotButtonClick: (index: number) => void\n}\n\nexport const useDotButton = (\n emblaApi: EmblaCarouselType | undefined,\n onButtonClick?: (emblaApi: EmblaCarouselType) => void\n): UseDotButtonType => {\n const [selectedIndex, setSelectedIndex] = useState(0)\n const [scrollSnaps, setScrollSnaps] = useState([])\n\n const onDotButtonClick = useCallback(\n (index: number) => {\n if (!emblaApi) return\n emblaApi.scrollTo(index)\n if (onButtonClick) onButtonClick(emblaApi)\n },\n [emblaApi, onButtonClick]\n )\n\n const onInit = useCallback((emblaApi: EmblaCarouselType) => {\n setScrollSnaps(emblaApi.scrollSnapList())\n }, [])\n\n const onSelect = useCallback((emblaApi: EmblaCarouselType) => {\n setSelectedIndex(emblaApi.selectedScrollSnap())\n }, [])\n\n useEffect(() => {\n if (!emblaApi) return\n\n onInit(emblaApi)\n onSelect(emblaApi)\n\n emblaApi.on('reInit', onInit).on('reInit', onSelect).on('select', onSelect)\n }, [emblaApi, onInit, onSelect])\n\n return {\n selectedIndex,\n scrollSnaps,\n onDotButtonClick\n }\n}\n\ntype PropType = PropsWithChildren<\n React.DetailedHTMLProps<\n React.ButtonHTMLAttributes,\n HTMLButtonElement\n >\n>\n\nexport const DotButton: React.FC = (props) => {\n const { children, ...restProps } = props\n\n return (\n \n )\n}\n","import React, { useCallback, useEffect, useRef, useState } from 'react'\nimport { EngineType } from 'embla-carousel/components/Engine'\nimport { EmblaCarouselType, EmblaOptionsType } from 'embla-carousel'\nimport useEmblaCarousel from 'embla-carousel-react'\nimport {\n NextButton,\n PrevButton,\n usePrevNextButtons\n} from '../EmblaCarouselArrowButtons'\n\nconst mockApiCall = (\n minWait: number,\n maxWait: number,\n callback: () => void\n): void => {\n const min = Math.ceil(minWait)\n const max = Math.floor(maxWait)\n const wait = Math.floor(Math.random() * (max - min + 1)) + min\n setTimeout(callback, wait)\n}\n\ntype PropType = {\n slides: number[]\n options?: EmblaOptionsType\n}\n\nconst EmblaCarousel: React.FC = (props) => {\n const { options, slides: propSlides } = props\n const scrollListenerRef = useRef<() => void>(() => undefined)\n const listenForScrollRef = useRef(true)\n const hasMoreToLoadRef = useRef(true)\n const [slides, setSlides] = useState(propSlides)\n const [hasMoreToLoad, setHasMoreToLoad] = useState(true)\n const [loadingMore, setLoadingMore] = useState(false)\n\n const [emblaRef, emblaApi] = useEmblaCarousel({\n ...options,\n watchSlides: (emblaApi) => {\n const reloadEmbla = (): void => {\n const oldEngine = emblaApi.internalEngine()\n\n emblaApi.reInit()\n const newEngine = emblaApi.internalEngine()\n const copyEngineModules: (keyof EngineType)[] = [\n 'location',\n 'target',\n 'scrollBody'\n ]\n copyEngineModules.forEach((engineModule) => {\n Object.assign(newEngine[engineModule], oldEngine[engineModule])\n })\n\n newEngine.translate.to(oldEngine.location.get())\n const { index } = newEngine.scrollTarget.byDistance(0, false)\n newEngine.index.set(index)\n newEngine.animation.start()\n\n setLoadingMore(false)\n listenForScrollRef.current = true\n }\n\n const reloadAfterPointerUp = (): void => {\n emblaApi.off('pointerUp', reloadAfterPointerUp)\n reloadEmbla()\n }\n\n const engine = emblaApi.internalEngine()\n\n if (hasMoreToLoadRef.current && engine.dragHandler.pointerDown()) {\n const boundsActive = engine.limit.reachedMax(engine.target.get())\n engine.scrollBounds.toggleActive(boundsActive)\n emblaApi.on('pointerUp', reloadAfterPointerUp)\n } else {\n reloadEmbla()\n }\n }\n })\n\n const {\n prevBtnDisabled,\n nextBtnDisabled,\n onPrevButtonClick,\n onNextButtonClick\n } = usePrevNextButtons(emblaApi)\n\n const onScroll = useCallback((emblaApi: EmblaCarouselType) => {\n if (!listenForScrollRef.current) return\n\n setLoadingMore((loadingMore) => {\n const lastSlide = emblaApi.slideNodes().length - 1\n const lastSlideInView = emblaApi.slidesInView().includes(lastSlide)\n const loadMore = !loadingMore && lastSlideInView\n\n if (loadMore) {\n listenForScrollRef.current = false\n\n mockApiCall(1000, 2000, () => {\n setSlides((currentSlides) => {\n if (currentSlides.length === 20) {\n setHasMoreToLoad(false)\n emblaApi.off('scroll', scrollListenerRef.current)\n return currentSlides\n }\n const newSlideCount = currentSlides.length + 5\n return Array.from(Array(newSlideCount).keys())\n })\n })\n }\n\n return loadingMore || lastSlideInView\n })\n }, [])\n\n const addScrollListener = useCallback(\n (emblaApi: EmblaCarouselType) => {\n scrollListenerRef.current = () => onScroll(emblaApi)\n emblaApi.on('scroll', scrollListenerRef.current)\n },\n [onScroll]\n )\n\n useEffect(() => {\n if (!emblaApi) return\n addScrollListener(emblaApi)\n\n const onResize = () => emblaApi.reInit()\n window.addEventListener('resize', onResize)\n emblaApi.on('destroy', () => window.removeEventListener('resize', onResize))\n }, [emblaApi, addScrollListener])\n\n useEffect(() => {\n hasMoreToLoadRef.current = hasMoreToLoad\n }, [hasMoreToLoad])\n\n return (\n
\n
\n
\n {slides.map((index) => (\n
\n
\n {index + 1}\n
\n
\n ))}\n {hasMoreToLoad && (\n \n \n
\n )}\n
\n
\n\n
\n
\n \n \n
\n
\n \n )\n}\n\nexport default EmblaCarousel\n","import React, { useEffect, useState, useCallback, useRef } from 'react'\nimport { EmblaCarouselType } from 'embla-carousel'\nimport useEmblaCarousel from 'embla-carousel-react'\n\nconst CIRCLE_DEGREES = 360\nconst WHEEL_ITEM_SIZE = 32\nconst WHEEL_ITEM_COUNT = 18\nconst WHEEL_ITEMS_IN_VIEW = 4\n\nexport const WHEEL_ITEM_RADIUS = CIRCLE_DEGREES / WHEEL_ITEM_COUNT\nexport const IN_VIEW_DEGREES = WHEEL_ITEM_RADIUS * WHEEL_ITEMS_IN_VIEW\nexport const WHEEL_RADIUS = Math.round(\n WHEEL_ITEM_SIZE / 2 / Math.tan(Math.PI / WHEEL_ITEM_COUNT)\n)\n\nconst isInView = (wheelLocation: number, slidePosition: number): boolean =>\n Math.abs(wheelLocation - slidePosition) < IN_VIEW_DEGREES\n\nconst setSlideStyles = (\n emblaApi: EmblaCarouselType,\n index: number,\n loop: boolean,\n slideCount: number,\n totalRadius: number\n): void => {\n const slideNode = emblaApi.slideNodes()[index]\n const wheelLocation = emblaApi.scrollProgress() * totalRadius\n const positionDefault = emblaApi.scrollSnapList()[index] * totalRadius\n const positionLoopStart = positionDefault + totalRadius\n const positionLoopEnd = positionDefault - totalRadius\n\n let inView = false\n let angle = index * -WHEEL_ITEM_RADIUS\n\n if (isInView(wheelLocation, positionDefault)) {\n inView = true\n }\n\n if (loop && isInView(wheelLocation, positionLoopEnd)) {\n inView = true\n angle = -CIRCLE_DEGREES + (slideCount - index) * WHEEL_ITEM_RADIUS\n }\n\n if (loop && isInView(wheelLocation, positionLoopStart)) {\n inView = true\n angle = -(totalRadius % CIRCLE_DEGREES) - index * WHEEL_ITEM_RADIUS\n }\n\n if (inView) {\n slideNode.style.opacity = '1'\n slideNode.style.transform = `translateY(-${\n index * 100\n }%) rotateX(${angle}deg) translateZ(${WHEEL_RADIUS}px)`\n } else {\n slideNode.style.opacity = '0'\n slideNode.style.transform = 'none'\n }\n}\n\nexport const setContainerStyles = (\n emblaApi: EmblaCarouselType,\n wheelRotation: number\n): void => {\n emblaApi.containerNode().style.transform = `translateZ(${WHEEL_RADIUS}px) rotateX(${wheelRotation}deg)`\n}\n\ntype PropType = {\n loop?: boolean\n label: string\n slideCount: number\n perspective: 'left' | 'right'\n}\n\nexport const IosPickerItem: React.FC = (props) => {\n const { slideCount, perspective, label, loop = false } = props\n const [emblaRef, emblaApi] = useEmblaCarousel({\n loop,\n axis: 'y',\n dragFree: true,\n containScroll: false,\n watchSlides: false\n })\n const rootNodeRef = useRef(null)\n const totalRadius = slideCount * WHEEL_ITEM_RADIUS\n const rotationOffset = loop ? 0 : WHEEL_ITEM_RADIUS\n const slides = Array.from(Array(slideCount).keys())\n\n const inactivateEmblaTransform = useCallback(\n (emblaApi: EmblaCarouselType) => {\n if (!emblaApi) return\n const { translate, slideLooper } = emblaApi.internalEngine()\n translate.clear()\n translate.toggleActive(false)\n slideLooper.loopPoints.forEach(({ translate }) => {\n translate.clear()\n translate.toggleActive(false)\n })\n },\n []\n )\n\n const rotateWheel = useCallback(\n (emblaApi: EmblaCarouselType) => {\n const rotation = slideCount * WHEEL_ITEM_RADIUS - rotationOffset\n const wheelRotation = rotation * emblaApi.scrollProgress()\n setContainerStyles(emblaApi, wheelRotation)\n emblaApi.slideNodes().forEach((_, index) => {\n setSlideStyles(emblaApi, index, loop, slideCount, totalRadius)\n })\n },\n [slideCount, rotationOffset, totalRadius]\n )\n\n useEffect(() => {\n if (!emblaApi) return\n\n emblaApi.on('pointerUp', (emblaApi) => {\n const { scrollTo, target, location } = emblaApi.internalEngine()\n const diffToTarget = target.get() - location.get()\n const factor = Math.abs(diffToTarget) < WHEEL_ITEM_SIZE / 2.5 ? 10 : 0.1\n const distance = diffToTarget * factor\n scrollTo.distance(distance, true)\n })\n\n emblaApi.on('scroll', rotateWheel)\n\n emblaApi.on('reInit', (emblaApi) => {\n inactivateEmblaTransform(emblaApi)\n rotateWheel(emblaApi)\n })\n\n inactivateEmblaTransform(emblaApi)\n rotateWheel(emblaApi)\n }, [emblaApi, inactivateEmblaTransform, rotateWheel])\n\n return (\n
\n
\n \n
\n {slides.map((_, index) => (\n
\n {index}\n
\n ))}\n
\n
\n
\n
{label}
\n \n )\n}\n","import React from 'react'\nimport { EmblaOptionsType } from 'embla-carousel'\nimport { IosPickerItem } from './EmblaCarouselIosPickerItem'\n\ntype PropType = {\n loop?: EmblaOptionsType['loop']\n}\n\nconst EmblaCarousel: React.FC = (props) => {\n const { loop } = props\n\n return (\n
\n \n \n
\n )\n}\n\nexport default EmblaCarousel\n","import React, { useState, useCallback } from 'react'\n\nconst PLACEHOLDER_SRC = `data:image/gif;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs%3D`\n\ntype PropType = {\n imgSrc: string\n inView: boolean\n index: number\n}\n\nexport const LazyLoadImage: React.FC = (props) => {\n const { imgSrc, inView } = props\n const [hasLoaded, setHasLoaded] = useState(false)\n\n const setLoaded = useCallback(() => {\n if (inView) setHasLoaded(true)\n }, [inView, setHasLoaded])\n\n return (\n
\n \n {!hasLoaded && }\n \n
\n \n )\n}\n","import React, { useCallback, useEffect, useState } from 'react'\nimport { EmblaCarouselType, EmblaOptionsType } from 'embla-carousel'\nimport useEmblaCarousel from 'embla-carousel-react'\nimport { LazyLoadImage } from './EmblaCarouselLazyLoadImage'\nimport {\n NextButton,\n PrevButton,\n usePrevNextButtons\n} from '../EmblaCarouselArrowButtons'\nimport { DotButton, useDotButton } from '../EmblaCarouselDotButton'\n\ntype PropType = {\n slides: number[]\n options?: EmblaOptionsType\n}\n\nconst EmblaCarousel: React.FC = (props) => {\n const { slides, options } = props\n const [emblaRed, emblaApi] = useEmblaCarousel(options)\n const [slidesInView, setSlidesInView] = useState([])\n\n const { selectedIndex, scrollSnaps, onDotButtonClick } =\n useDotButton(emblaApi)\n\n const {\n prevBtnDisabled,\n nextBtnDisabled,\n onPrevButtonClick,\n onNextButtonClick\n } = usePrevNextButtons(emblaApi)\n\n const updateSlidesInView = useCallback((emblaApi: EmblaCarouselType) => {\n setSlidesInView((slidesInView) => {\n if (slidesInView.length === emblaApi.slideNodes().length) {\n emblaApi.off('slidesInView', updateSlidesInView)\n }\n const inView = emblaApi\n .slidesInView()\n .filter((index) => !slidesInView.includes(index))\n return slidesInView.concat(inView)\n })\n }, [])\n\n useEffect(() => {\n if (!emblaApi) return\n\n updateSlidesInView(emblaApi)\n emblaApi.on('slidesInView', updateSlidesInView)\n emblaApi.on('reInit', updateSlidesInView)\n }, [emblaApi, updateSlidesInView])\n\n return (\n
\n
\n
\n {slides.map((index) => (\n -1}\n />\n ))}\n
\n
\n\n
\n
\n \n \n
\n\n
\n {scrollSnaps.map((_, index) => (\n onDotButtonClick(index)}\n className={'embla__dot'.concat(\n index === selectedIndex ? ' embla__dot--selected' : ''\n )}\n />\n ))}\n
\n
\n
\n )\n}\n\nexport default EmblaCarousel\n","import React, { useCallback, useEffect, useRef } from 'react'\nimport {\n EmblaCarouselType,\n EmblaEventType,\n EmblaOptionsType\n} from 'embla-carousel'\nimport useEmblaCarousel from 'embla-carousel-react'\nimport {\n NextButton,\n PrevButton,\n usePrevNextButtons\n} from '../EmblaCarouselArrowButtons'\nimport { DotButton, useDotButton } from '../EmblaCarouselDotButton'\nimport { sandboxImages } from 'components/Sandbox/sandboxImages'\n\nconst TWEEN_FACTOR_BASE = 0.84\n\nconst numberWithinRange = (number: number, min: number, max: number): number =>\n Math.min(Math.max(number, min), max)\n\ntype PropType = {\n slides: number[]\n options?: EmblaOptionsType\n}\n\nconst EmblaCarousel: React.FC = (props) => {\n const { slides, options } = props\n const [emblaRef, emblaApi] = useEmblaCarousel(options)\n const tweenFactor = useRef(0)\n\n const { selectedIndex, scrollSnaps, onDotButtonClick } =\n useDotButton(emblaApi)\n\n const {\n prevBtnDisabled,\n nextBtnDisabled,\n onPrevButtonClick,\n onNextButtonClick\n } = usePrevNextButtons(emblaApi)\n\n const setTweenFactor = useCallback((emblaApi: EmblaCarouselType) => {\n tweenFactor.current = TWEEN_FACTOR_BASE * emblaApi.scrollSnapList().length\n }, [])\n\n const tweenOpacity = useCallback(\n (emblaApi: EmblaCarouselType, eventName?: EmblaEventType) => {\n const engine = emblaApi.internalEngine()\n const scrollProgress = emblaApi.scrollProgress()\n const slidesInView = emblaApi.slidesInView()\n const isScrollEvent = eventName === 'scroll'\n\n emblaApi.scrollSnapList().forEach((scrollSnap, snapIndex) => {\n let diffToTarget = scrollSnap - scrollProgress\n const slidesInSnap = engine.slideRegistry[snapIndex]\n\n slidesInSnap.forEach((slideIndex) => {\n if (isScrollEvent && !slidesInView.includes(slideIndex)) return\n\n if (engine.options.loop) {\n engine.slideLooper.loopPoints.forEach((loopItem) => {\n const target = loopItem.target()\n\n if (slideIndex === loopItem.index && target !== 0) {\n const sign = Math.sign(target)\n\n if (sign === -1) {\n diffToTarget = scrollSnap - (1 + scrollProgress)\n }\n if (sign === 1) {\n diffToTarget = scrollSnap + (1 - scrollProgress)\n }\n }\n })\n }\n\n const tweenValue = 1 - Math.abs(diffToTarget * tweenFactor.current)\n const opacity = numberWithinRange(tweenValue, 0, 1).toString()\n emblaApi.slideNodes()[slideIndex].style.opacity = opacity\n })\n })\n },\n []\n )\n\n useEffect(() => {\n if (!emblaApi) return\n\n setTweenFactor(emblaApi)\n tweenOpacity(emblaApi)\n emblaApi\n .on('reInit', setTweenFactor)\n .on('reInit', tweenOpacity)\n .on('scroll', tweenOpacity)\n .on('slideFocus', tweenOpacity)\n }, [emblaApi, tweenOpacity])\n\n return (\n
\n
\n
\n {slides.map((index) => (\n
\n \n
\n ))}\n
\n
\n\n
\n
\n \n \n
\n\n
\n {scrollSnaps.map((_, index) => (\n onDotButtonClick(index)}\n className={'embla__dot'.concat(\n index === selectedIndex ? ' embla__dot--selected' : ''\n )}\n />\n ))}\n
\n
\n
\n )\n}\n\nexport default EmblaCarousel\n","import React, { useCallback, useEffect, useRef } from 'react'\nimport {\n EmblaCarouselType,\n EmblaEventType,\n EmblaOptionsType\n} from 'embla-carousel'\nimport useEmblaCarousel from 'embla-carousel-react'\nimport {\n NextButton,\n PrevButton,\n usePrevNextButtons\n} from '../EmblaCarouselArrowButtons'\nimport { DotButton, useDotButton } from '../EmblaCarouselDotButton'\nimport { sandboxImages } from 'components/Sandbox/sandboxImages'\n\nconst TWEEN_FACTOR_BASE = 0.2\n\ntype PropType = {\n slides: number[]\n options?: EmblaOptionsType\n}\n\nconst EmblaCarousel: React.FC = (props) => {\n const { slides, options } = props\n const [emblaRef, emblaApi] = useEmblaCarousel(options)\n const tweenFactor = useRef(0)\n const tweenNodes = useRef([])\n\n const { selectedIndex, scrollSnaps, onDotButtonClick } =\n useDotButton(emblaApi)\n\n const {\n prevBtnDisabled,\n nextBtnDisabled,\n onPrevButtonClick,\n onNextButtonClick\n } = usePrevNextButtons(emblaApi)\n\n const setTweenNodes = useCallback((emblaApi: EmblaCarouselType): void => {\n tweenNodes.current = emblaApi.slideNodes().map((slideNode) => {\n return slideNode.querySelector('.embla__parallax__layer') as HTMLElement\n })\n }, [])\n\n const setTweenFactor = useCallback((emblaApi: EmblaCarouselType) => {\n tweenFactor.current = TWEEN_FACTOR_BASE * emblaApi.scrollSnapList().length\n }, [])\n\n const tweenParallax = useCallback(\n (emblaApi: EmblaCarouselType, eventName?: EmblaEventType) => {\n const engine = emblaApi.internalEngine()\n const scrollProgress = emblaApi.scrollProgress()\n const slidesInView = emblaApi.slidesInView()\n const isScrollEvent = eventName === 'scroll'\n\n emblaApi.scrollSnapList().forEach((scrollSnap, snapIndex) => {\n let diffToTarget = scrollSnap - scrollProgress\n const slidesInSnap = engine.slideRegistry[snapIndex]\n\n slidesInSnap.forEach((slideIndex) => {\n if (isScrollEvent && !slidesInView.includes(slideIndex)) return\n\n if (engine.options.loop) {\n engine.slideLooper.loopPoints.forEach((loopItem) => {\n const target = loopItem.target()\n\n if (slideIndex === loopItem.index && target !== 0) {\n const sign = Math.sign(target)\n\n if (sign === -1) {\n diffToTarget = scrollSnap - (1 + scrollProgress)\n }\n if (sign === 1) {\n diffToTarget = scrollSnap + (1 - scrollProgress)\n }\n }\n })\n }\n\n const translate = diffToTarget * (-1 * tweenFactor.current) * 100\n const tweenNode = tweenNodes.current[slideIndex]\n tweenNode.style.transform = `translateX(${translate}%)`\n })\n })\n },\n []\n )\n\n useEffect(() => {\n if (!emblaApi) return\n\n setTweenNodes(emblaApi)\n setTweenFactor(emblaApi)\n tweenParallax(emblaApi)\n\n emblaApi\n .on('reInit', setTweenNodes)\n .on('reInit', setTweenFactor)\n .on('reInit', tweenParallax)\n .on('scroll', tweenParallax)\n .on('slideFocus', tweenParallax)\n }, [emblaApi, tweenParallax])\n\n return (\n
\n
\n
\n {slides.map((index) => (\n
\n
\n
\n \n
\n
\n
\n ))}\n
\n
\n\n
\n
\n \n \n
\n\n
\n {scrollSnaps.map((_, index) => (\n onDotButtonClick(index)}\n className={'embla__dot'.concat(\n index === selectedIndex ? ' embla__dot--selected' : ''\n )}\n />\n ))}\n
\n
\n
\n )\n}\n\nexport default EmblaCarousel\n","import React, { useCallback, useEffect, useState } from 'react'\nimport { EmblaCarouselType, EmblaOptionsType } from 'embla-carousel'\nimport useEmblaCarousel from 'embla-carousel-react'\nimport {\n NextButton,\n PrevButton,\n usePrevNextButtons\n} from '../EmblaCarouselArrowButtons'\n\ntype PropType = {\n slides: number[]\n options?: EmblaOptionsType\n}\n\nconst EmblaCarousel: React.FC = (props) => {\n const { slides, options } = props\n const [emblaRef, emblaApi] = useEmblaCarousel(options)\n const [scrollProgress, setScrollProgress] = useState(0)\n\n const {\n prevBtnDisabled,\n nextBtnDisabled,\n onPrevButtonClick,\n onNextButtonClick\n } = usePrevNextButtons(emblaApi)\n\n const onScroll = useCallback((emblaApi: EmblaCarouselType) => {\n const progress = Math.max(0, Math.min(1, emblaApi.scrollProgress()))\n setScrollProgress(progress * 100)\n }, [])\n\n useEffect(() => {\n if (!emblaApi) return\n\n onScroll(emblaApi)\n emblaApi\n .on('reInit', onScroll)\n .on('scroll', onScroll)\n .on('slideFocus', onScroll)\n }, [emblaApi, onScroll])\n\n return (\n
\n
\n
\n {slides.map((index) => (\n
\n
\n {index + 1}\n
\n
\n ))}\n
\n
\n\n
\n
\n \n \n
\n\n
\n \n
\n
\n
\n )\n}\n\nexport default EmblaCarousel\n","import React, { useCallback, useEffect, useRef } from 'react'\nimport {\n EmblaCarouselType,\n EmblaEventType,\n EmblaOptionsType\n} from 'embla-carousel'\nimport useEmblaCarousel from 'embla-carousel-react'\nimport {\n NextButton,\n PrevButton,\n usePrevNextButtons\n} from '../EmblaCarouselArrowButtons'\nimport { DotButton, useDotButton } from '../EmblaCarouselDotButton'\n\nconst TWEEN_FACTOR_BASE = 0.52\n\nconst numberWithinRange = (number: number, min: number, max: number): number =>\n Math.min(Math.max(number, min), max)\n\ntype PropType = {\n slides: number[]\n options?: EmblaOptionsType\n}\n\nconst EmblaCarousel: React.FC = (props) => {\n const { slides, options } = props\n const [emblaRef, emblaApi] = useEmblaCarousel(options)\n const tweenFactor = useRef(0)\n const tweenNodes = useRef([])\n\n const { selectedIndex, scrollSnaps, onDotButtonClick } =\n useDotButton(emblaApi)\n\n const {\n prevBtnDisabled,\n nextBtnDisabled,\n onPrevButtonClick,\n onNextButtonClick\n } = usePrevNextButtons(emblaApi)\n\n const setTweenNodes = useCallback((emblaApi: EmblaCarouselType): void => {\n tweenNodes.current = emblaApi.slideNodes().map((slideNode) => {\n return slideNode.querySelector('.embla__slide__number') as HTMLElement\n })\n }, [])\n\n const setTweenFactor = useCallback((emblaApi: EmblaCarouselType) => {\n tweenFactor.current = TWEEN_FACTOR_BASE * emblaApi.scrollSnapList().length\n }, [])\n\n const tweenScale = useCallback(\n (emblaApi: EmblaCarouselType, eventName?: EmblaEventType) => {\n const engine = emblaApi.internalEngine()\n const scrollProgress = emblaApi.scrollProgress()\n const slidesInView = emblaApi.slidesInView()\n const isScrollEvent = eventName === 'scroll'\n\n emblaApi.scrollSnapList().forEach((scrollSnap, snapIndex) => {\n let diffToTarget = scrollSnap - scrollProgress\n const slidesInSnap = engine.slideRegistry[snapIndex]\n\n slidesInSnap.forEach((slideIndex) => {\n if (isScrollEvent && !slidesInView.includes(slideIndex)) return\n\n if (engine.options.loop) {\n engine.slideLooper.loopPoints.forEach((loopItem) => {\n const target = loopItem.target()\n\n if (slideIndex === loopItem.index && target !== 0) {\n const sign = Math.sign(target)\n\n if (sign === -1) {\n diffToTarget = scrollSnap - (1 + scrollProgress)\n }\n if (sign === 1) {\n diffToTarget = scrollSnap + (1 - scrollProgress)\n }\n }\n })\n }\n\n const tweenValue = 1 - Math.abs(diffToTarget * tweenFactor.current)\n const scale = numberWithinRange(tweenValue, 0, 1).toString()\n const tweenNode = tweenNodes.current[slideIndex]\n tweenNode.style.transform = `scale(${scale})`\n })\n })\n },\n []\n )\n\n useEffect(() => {\n if (!emblaApi) return\n\n setTweenNodes(emblaApi)\n setTweenFactor(emblaApi)\n tweenScale(emblaApi)\n\n emblaApi\n .on('reInit', setTweenNodes)\n .on('reInit', setTweenFactor)\n .on('reInit', tweenScale)\n .on('scroll', tweenScale)\n .on('slideFocus', tweenScale)\n }, [emblaApi, tweenScale])\n\n return (\n
\n
\n
\n {slides.map((index) => (\n
\n
{index + 1}
\n
\n ))}\n
\n
\n\n
\n
\n \n \n
\n\n
\n {scrollSnaps.map((_, index) => (\n onDotButtonClick(index)}\n className={'embla__dot'.concat(\n index === selectedIndex ? ' embla__dot--selected' : ''\n )}\n />\n ))}\n
\n
\n
\n )\n}\n\nexport default EmblaCarousel\n","import React from 'react'\n\ntype PropType = {\n selected: boolean\n index: number\n onClick: () => void\n}\n\nexport const Thumb: React.FC = (props) => {\n const { selected, index, onClick } = props\n\n return (\n \n \n {index + 1}\n \n \n )\n}\n","import React, { useState, useEffect, useCallback } from 'react'\nimport { EmblaOptionsType } from 'embla-carousel'\nimport useEmblaCarousel from 'embla-carousel-react'\nimport { Thumb } from './EmblaCarouselThumbsButton'\n\ntype PropType = {\n slides: number[]\n options?: EmblaOptionsType\n}\n\nconst EmblaCarousel: React.FC = (props) => {\n const { slides, options } = props\n const [selectedIndex, setSelectedIndex] = useState(0)\n const [emblaMainRef, emblaMainApi] = useEmblaCarousel(options)\n const [emblaThumbsRef, emblaThumbsApi] = useEmblaCarousel({\n containScroll: 'keepSnaps',\n dragFree: true\n })\n\n const onThumbClick = useCallback(\n (index: number) => {\n if (!emblaMainApi || !emblaThumbsApi) return\n emblaMainApi.scrollTo(index)\n },\n [emblaMainApi, emblaThumbsApi]\n )\n\n const onSelect = useCallback(() => {\n if (!emblaMainApi || !emblaThumbsApi) return\n setSelectedIndex(emblaMainApi.selectedScrollSnap())\n emblaThumbsApi.scrollTo(emblaMainApi.selectedScrollSnap())\n }, [emblaMainApi, emblaThumbsApi, setSelectedIndex])\n\n useEffect(() => {\n if (!emblaMainApi) return\n onSelect()\n\n emblaMainApi.on('select', onSelect).on('reInit', onSelect)\n }, [emblaMainApi, onSelect])\n\n return (\n
\n
\n
\n {slides.map((index) => (\n
\n
{index + 1}
\n
\n ))}\n
\n
\n\n
\n
\n
\n {slides.map((index) => (\n onThumbClick(index)}\n selected={index === selectedIndex}\n index={index}\n />\n ))}\n
\n
\n
\n
\n )\n}\n\nexport default EmblaCarousel\n","import image1 from 'assets/images/slide-1.jpg'\nimport image2 from 'assets/images/slide-2.jpg'\nimport image3 from 'assets/images/slide-3.jpg'\nimport image4 from 'assets/images/slide-4.jpg'\nimport image5 from 'assets/images/slide-5.jpg'\n\nconst sandboxImageList: string[] = [image1, image2, image3, image4, image5]\n\nexport const sandboxImages = (index: number): string =>\n sandboxImageList[index % sandboxImageList.length]\n","export default __webpack_public_path__ + \"static/slide-1-47ed6052f4455272d8f76db16447d760.jpg\";","export default __webpack_public_path__ + \"static/slide-2-dc15cfe63eb4aeb8c9c09823179ee64c.jpg\";","export default __webpack_public_path__ + \"static/slide-3-6362505742d23d7cd240880140151a95.jpg\";","export default __webpack_public_path__ + \"static/slide-4-ebad84cfea5ff9481504ded363c22003.jpg\";","export default __webpack_public_path__ + \"static/slide-5-2d88e98502aa565d6269834d7a7be406.jpg\";"],"names":["useDotButton","emblaApi","onButtonClick","selectedIndex","setSelectedIndex","useState","scrollSnaps","setScrollSnaps","onDotButtonClick","useCallback","index","scrollTo","onInit","scrollSnapList","onSelect","selectedScrollSnap","useEffect","on","DotButton","props","children","restProps","React","Object","assign","type","options","slides","propSlides","scrollListenerRef","useRef","listenForScrollRef","hasMoreToLoadRef","setSlides","hasMoreToLoad","setHasMoreToLoad","loadingMore","setLoadingMore","emblaRef","useEmblaCarousel","watchSlides","reloadEmbla","oldEngine","internalEngine","reInit","newEngine","forEach","engineModule","translate","to","location","get","scrollTarget","byDistance","set","animation","start","current","reloadAfterPointerUp","off","engine","dragHandler","pointerDown","boundsActive","limit","reachedMax","target","scrollBounds","toggleActive","prevBtnDisabled","nextBtnDisabled","onPrevButtonClick","onNextButtonClick","usePrevNextButtons","onScroll","lastSlide","slideNodes","length","lastSlideInView","slidesInView","includes","mockApiCall","minWait","maxWait","callback","min","Math","ceil","max","floor","wait","random","setTimeout","currentSlides","newSlideCount","Array","from","keys","addScrollListener","onResize","window","addEventListener","removeEventListener","className","ref","map","key","concat","PrevButton","onClick","disabled","NextButton","WHEEL_ITEM_RADIUS","CIRCLE_DEGREES","WHEEL_RADIUS","round","WHEEL_ITEM_SIZE","tan","PI","isInView","wheelLocation","slidePosition","abs","IosPickerItem","slideCount","perspective","label","loop","axis","dragFree","containScroll","rootNodeRef","totalRadius","rotationOffset","inactivateEmblaTransform","slideLooper","clear","loopPoints","_ref","rotateWheel","wheelRotation","scrollProgress","setContainerStyles","containerNode","style","transform","_","setSlideStyles","slideNode","positionDefault","positionLoopStart","positionLoopEnd","inView","angle","opacity","diffToTarget","distance","LazyLoadImage","imgSrc","hasLoaded","setHasLoaded","setLoaded","onLoad","src","alt","emblaRed","setSlidesInView","updateSlidesInView","filter","indexOf","tweenFactor","setTweenFactor","tweenOpacity","eventName","isScrollEvent","scrollSnap","snapIndex","slideRegistry","slideIndex","loopItem","sign","tweenValue","number","toString","numberWithinRange","sandboxImages","tweenNodes","setTweenNodes","querySelector","tweenParallax","setScrollProgress","progress","tweenScale","scale","Thumb","selected","emblaMainRef","emblaMainApi","emblaThumbsRef","emblaThumbsApi","onThumbClick","sandboxImageList"],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"2c8f1d14031690b3a7c730295b2f775c68c4b349-9081749583888e3f282d.js","mappings":"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","sources":["webpack://embla-carousel-docs/./src/components/Sandbox/React/SandboxFilesSrc/EmblaCarouselDotButton.tsx","webpack://embla-carousel-docs/./src/components/Sandbox/React/SandboxFilesSrc/InfiniteScroll/EmblaCarousel.tsx","webpack://embla-carousel-docs/./src/components/Sandbox/React/SandboxFilesSrc/IosPicker/EmblaCarouselIosPickerItem.tsx","webpack://embla-carousel-docs/./src/components/Sandbox/React/SandboxFilesSrc/IosPicker/EmblaCarousel.tsx","webpack://embla-carousel-docs/./src/components/Sandbox/React/SandboxFilesSrc/LazyLoad/EmblaCarouselLazyLoadImage.tsx","webpack://embla-carousel-docs/./src/components/Sandbox/React/SandboxFilesSrc/LazyLoad/EmblaCarousel.tsx","webpack://embla-carousel-docs/./src/components/Sandbox/React/SandboxFilesSrc/Opacity/EmblaCarousel.tsx","webpack://embla-carousel-docs/./src/components/Sandbox/React/SandboxFilesSrc/Parallax/EmblaCarousel.tsx","webpack://embla-carousel-docs/./src/components/Sandbox/React/SandboxFilesSrc/Progress/EmblaCarousel.tsx","webpack://embla-carousel-docs/./src/components/Sandbox/React/SandboxFilesSrc/Scale/EmblaCarousel.tsx","webpack://embla-carousel-docs/./src/components/Sandbox/React/SandboxFilesSrc/Thumbs/EmblaCarouselThumbsButton.tsx","webpack://embla-carousel-docs/./src/components/Sandbox/React/SandboxFilesSrc/Thumbs/EmblaCarousel.tsx","webpack://embla-carousel-docs/./src/components/Sandbox/sandboxImages.ts","webpack://embla-carousel-docs/./src/assets/images/slide-1.jpg","webpack://embla-carousel-docs/./src/assets/images/slide-2.jpg","webpack://embla-carousel-docs/./src/assets/images/slide-3.jpg","webpack://embla-carousel-docs/./src/assets/images/slide-4.jpg","webpack://embla-carousel-docs/./src/assets/images/slide-5.jpg"],"sourcesContent":["import React, {\n ComponentPropsWithRef,\n useCallback,\n useEffect,\n useState\n} from 'react'\nimport { EmblaCarouselType } from 'embla-carousel'\n\ntype UseDotButtonType = {\n selectedIndex: number\n scrollSnaps: number[]\n onDotButtonClick: (index: number) => void\n}\n\nexport const useDotButton = (\n emblaApi: EmblaCarouselType | undefined,\n onButtonClick?: (emblaApi: EmblaCarouselType) => void\n): UseDotButtonType => {\n const [selectedIndex, setSelectedIndex] = useState(0)\n const [scrollSnaps, setScrollSnaps] = useState([])\n\n const onDotButtonClick = useCallback(\n (index: number) => {\n if (!emblaApi) return\n emblaApi.scrollTo(index)\n if (onButtonClick) onButtonClick(emblaApi)\n },\n [emblaApi, onButtonClick]\n )\n\n const onInit = useCallback((emblaApi: EmblaCarouselType) => {\n setScrollSnaps(emblaApi.scrollSnapList())\n }, [])\n\n const onSelect = useCallback((emblaApi: EmblaCarouselType) => {\n setSelectedIndex(emblaApi.selectedScrollSnap())\n }, [])\n\n useEffect(() => {\n if (!emblaApi) return\n\n onInit(emblaApi)\n onSelect(emblaApi)\n\n emblaApi.on('reInit', onInit).on('reInit', onSelect).on('select', onSelect)\n }, [emblaApi, onInit, onSelect])\n\n return {\n selectedIndex,\n scrollSnaps,\n onDotButtonClick\n }\n}\n\ntype PropType = ComponentPropsWithRef<'button'>\n\nexport const DotButton: React.FC = (props) => {\n const { children, ...restProps } = props\n\n return (\n \n )\n}\n","import React, { useCallback, useEffect, useRef, useState } from 'react'\nimport { EngineType } from 'embla-carousel/components/Engine'\nimport { EmblaCarouselType, EmblaOptionsType } from 'embla-carousel'\nimport useEmblaCarousel from 'embla-carousel-react'\nimport {\n NextButton,\n PrevButton,\n usePrevNextButtons\n} from '../EmblaCarouselArrowButtons'\n\nconst mockApiCall = (\n minWait: number,\n maxWait: number,\n callback: () => void\n): void => {\n const min = Math.ceil(minWait)\n const max = Math.floor(maxWait)\n const wait = Math.floor(Math.random() * (max - min + 1)) + min\n setTimeout(callback, wait)\n}\n\ntype PropType = {\n slides: number[]\n options?: EmblaOptionsType\n}\n\nconst EmblaCarousel: React.FC = (props) => {\n const { options, slides: propSlides } = props\n const scrollListenerRef = useRef<() => void>(() => undefined)\n const listenForScrollRef = useRef(true)\n const hasMoreToLoadRef = useRef(true)\n const [slides, setSlides] = useState(propSlides)\n const [hasMoreToLoad, setHasMoreToLoad] = useState(true)\n const [loadingMore, setLoadingMore] = useState(false)\n\n const [emblaRef, emblaApi] = useEmblaCarousel({\n ...options,\n watchSlides: (emblaApi) => {\n const reloadEmbla = (): void => {\n const oldEngine = emblaApi.internalEngine()\n\n emblaApi.reInit()\n const newEngine = emblaApi.internalEngine()\n const copyEngineModules: (keyof EngineType)[] = [\n 'location',\n 'target',\n 'scrollBody'\n ]\n copyEngineModules.forEach((engineModule) => {\n Object.assign(newEngine[engineModule], oldEngine[engineModule])\n })\n\n newEngine.translate.to(oldEngine.location.get())\n const { index } = newEngine.scrollTarget.byDistance(0, false)\n newEngine.index.set(index)\n newEngine.animation.start()\n\n setLoadingMore(false)\n listenForScrollRef.current = true\n }\n\n const reloadAfterPointerUp = (): void => {\n emblaApi.off('pointerUp', reloadAfterPointerUp)\n reloadEmbla()\n }\n\n const engine = emblaApi.internalEngine()\n\n if (hasMoreToLoadRef.current && engine.dragHandler.pointerDown()) {\n const boundsActive = engine.limit.reachedMax(engine.target.get())\n engine.scrollBounds.toggleActive(boundsActive)\n emblaApi.on('pointerUp', reloadAfterPointerUp)\n } else {\n reloadEmbla()\n }\n }\n })\n\n const {\n prevBtnDisabled,\n nextBtnDisabled,\n onPrevButtonClick,\n onNextButtonClick\n } = usePrevNextButtons(emblaApi)\n\n const onScroll = useCallback((emblaApi: EmblaCarouselType) => {\n if (!listenForScrollRef.current) return\n\n setLoadingMore((loadingMore) => {\n const lastSlide = emblaApi.slideNodes().length - 1\n const lastSlideInView = emblaApi.slidesInView().includes(lastSlide)\n const loadMore = !loadingMore && lastSlideInView\n\n if (loadMore) {\n listenForScrollRef.current = false\n\n mockApiCall(1000, 2000, () => {\n setSlides((currentSlides) => {\n if (currentSlides.length === 20) {\n setHasMoreToLoad(false)\n emblaApi.off('scroll', scrollListenerRef.current)\n return currentSlides\n }\n const newSlideCount = currentSlides.length + 5\n return Array.from(Array(newSlideCount).keys())\n })\n })\n }\n\n return loadingMore || lastSlideInView\n })\n }, [])\n\n const addScrollListener = useCallback(\n (emblaApi: EmblaCarouselType) => {\n scrollListenerRef.current = () => onScroll(emblaApi)\n emblaApi.on('scroll', scrollListenerRef.current)\n },\n [onScroll]\n )\n\n useEffect(() => {\n if (!emblaApi) return\n addScrollListener(emblaApi)\n\n const onResize = () => emblaApi.reInit()\n window.addEventListener('resize', onResize)\n emblaApi.on('destroy', () => window.removeEventListener('resize', onResize))\n }, [emblaApi, addScrollListener])\n\n useEffect(() => {\n hasMoreToLoadRef.current = hasMoreToLoad\n }, [hasMoreToLoad])\n\n return (\n
\n
\n
\n {slides.map((index) => (\n
\n
\n {index + 1}\n
\n
\n ))}\n {hasMoreToLoad && (\n \n \n
\n )}\n
\n
\n\n
\n
\n \n \n
\n
\n \n )\n}\n\nexport default EmblaCarousel\n","import React, { useEffect, useState, useCallback, useRef } from 'react'\nimport { EmblaCarouselType } from 'embla-carousel'\nimport useEmblaCarousel from 'embla-carousel-react'\n\nconst CIRCLE_DEGREES = 360\nconst WHEEL_ITEM_SIZE = 32\nconst WHEEL_ITEM_COUNT = 18\nconst WHEEL_ITEMS_IN_VIEW = 4\n\nexport const WHEEL_ITEM_RADIUS = CIRCLE_DEGREES / WHEEL_ITEM_COUNT\nexport const IN_VIEW_DEGREES = WHEEL_ITEM_RADIUS * WHEEL_ITEMS_IN_VIEW\nexport const WHEEL_RADIUS = Math.round(\n WHEEL_ITEM_SIZE / 2 / Math.tan(Math.PI / WHEEL_ITEM_COUNT)\n)\n\nconst isInView = (wheelLocation: number, slidePosition: number): boolean =>\n Math.abs(wheelLocation - slidePosition) < IN_VIEW_DEGREES\n\nconst setSlideStyles = (\n emblaApi: EmblaCarouselType,\n index: number,\n loop: boolean,\n slideCount: number,\n totalRadius: number\n): void => {\n const slideNode = emblaApi.slideNodes()[index]\n const wheelLocation = emblaApi.scrollProgress() * totalRadius\n const positionDefault = emblaApi.scrollSnapList()[index] * totalRadius\n const positionLoopStart = positionDefault + totalRadius\n const positionLoopEnd = positionDefault - totalRadius\n\n let inView = false\n let angle = index * -WHEEL_ITEM_RADIUS\n\n if (isInView(wheelLocation, positionDefault)) {\n inView = true\n }\n\n if (loop && isInView(wheelLocation, positionLoopEnd)) {\n inView = true\n angle = -CIRCLE_DEGREES + (slideCount - index) * WHEEL_ITEM_RADIUS\n }\n\n if (loop && isInView(wheelLocation, positionLoopStart)) {\n inView = true\n angle = -(totalRadius % CIRCLE_DEGREES) - index * WHEEL_ITEM_RADIUS\n }\n\n if (inView) {\n slideNode.style.opacity = '1'\n slideNode.style.transform = `translateY(-${\n index * 100\n }%) rotateX(${angle}deg) translateZ(${WHEEL_RADIUS}px)`\n } else {\n slideNode.style.opacity = '0'\n slideNode.style.transform = 'none'\n }\n}\n\nexport const setContainerStyles = (\n emblaApi: EmblaCarouselType,\n wheelRotation: number\n): void => {\n emblaApi.containerNode().style.transform = `translateZ(${WHEEL_RADIUS}px) rotateX(${wheelRotation}deg)`\n}\n\ntype PropType = {\n loop?: boolean\n label: string\n slideCount: number\n perspective: 'left' | 'right'\n}\n\nexport const IosPickerItem: React.FC = (props) => {\n const { slideCount, perspective, label, loop = false } = props\n const [emblaRef, emblaApi] = useEmblaCarousel({\n loop,\n axis: 'y',\n dragFree: true,\n containScroll: false,\n watchSlides: false\n })\n const rootNodeRef = useRef(null)\n const totalRadius = slideCount * WHEEL_ITEM_RADIUS\n const rotationOffset = loop ? 0 : WHEEL_ITEM_RADIUS\n const slides = Array.from(Array(slideCount).keys())\n\n const inactivateEmblaTransform = useCallback(\n (emblaApi: EmblaCarouselType) => {\n if (!emblaApi) return\n const { translate, slideLooper } = emblaApi.internalEngine()\n translate.clear()\n translate.toggleActive(false)\n slideLooper.loopPoints.forEach(({ translate }) => {\n translate.clear()\n translate.toggleActive(false)\n })\n },\n []\n )\n\n const rotateWheel = useCallback(\n (emblaApi: EmblaCarouselType) => {\n const rotation = slideCount * WHEEL_ITEM_RADIUS - rotationOffset\n const wheelRotation = rotation * emblaApi.scrollProgress()\n setContainerStyles(emblaApi, wheelRotation)\n emblaApi.slideNodes().forEach((_, index) => {\n setSlideStyles(emblaApi, index, loop, slideCount, totalRadius)\n })\n },\n [slideCount, rotationOffset, totalRadius]\n )\n\n useEffect(() => {\n if (!emblaApi) return\n\n emblaApi.on('pointerUp', (emblaApi) => {\n const { scrollTo, target, location } = emblaApi.internalEngine()\n const diffToTarget = target.get() - location.get()\n const factor = Math.abs(diffToTarget) < WHEEL_ITEM_SIZE / 2.5 ? 10 : 0.1\n const distance = diffToTarget * factor\n scrollTo.distance(distance, true)\n })\n\n emblaApi.on('scroll', rotateWheel)\n\n emblaApi.on('reInit', (emblaApi) => {\n inactivateEmblaTransform(emblaApi)\n rotateWheel(emblaApi)\n })\n\n inactivateEmblaTransform(emblaApi)\n rotateWheel(emblaApi)\n }, [emblaApi, inactivateEmblaTransform, rotateWheel])\n\n return (\n
\n
\n \n
\n {slides.map((_, index) => (\n
\n {index}\n
\n ))}\n
\n
\n
\n
{label}
\n \n )\n}\n","import React from 'react'\nimport { EmblaOptionsType } from 'embla-carousel'\nimport { IosPickerItem } from './EmblaCarouselIosPickerItem'\n\ntype PropType = {\n loop?: EmblaOptionsType['loop']\n}\n\nconst EmblaCarousel: React.FC = (props) => {\n const { loop } = props\n\n return (\n
\n \n \n
\n )\n}\n\nexport default EmblaCarousel\n","import React, { useState, useCallback } from 'react'\n\nconst PLACEHOLDER_SRC = `data:image/gif;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs%3D`\n\ntype PropType = {\n imgSrc: string\n inView: boolean\n index: number\n}\n\nexport const LazyLoadImage: React.FC = (props) => {\n const { imgSrc, inView } = props\n const [hasLoaded, setHasLoaded] = useState(false)\n\n const setLoaded = useCallback(() => {\n if (inView) setHasLoaded(true)\n }, [inView, setHasLoaded])\n\n return (\n
\n \n {!hasLoaded && }\n \n
\n \n )\n}\n","import React, { useCallback, useEffect, useState } from 'react'\nimport { EmblaCarouselType, EmblaOptionsType } from 'embla-carousel'\nimport useEmblaCarousel from 'embla-carousel-react'\nimport { LazyLoadImage } from './EmblaCarouselLazyLoadImage'\nimport {\n NextButton,\n PrevButton,\n usePrevNextButtons\n} from '../EmblaCarouselArrowButtons'\nimport { DotButton, useDotButton } from '../EmblaCarouselDotButton'\n\ntype PropType = {\n slides: number[]\n options?: EmblaOptionsType\n}\n\nconst EmblaCarousel: React.FC = (props) => {\n const { slides, options } = props\n const [emblaRed, emblaApi] = useEmblaCarousel(options)\n const [slidesInView, setSlidesInView] = useState([])\n\n const { selectedIndex, scrollSnaps, onDotButtonClick } =\n useDotButton(emblaApi)\n\n const {\n prevBtnDisabled,\n nextBtnDisabled,\n onPrevButtonClick,\n onNextButtonClick\n } = usePrevNextButtons(emblaApi)\n\n const updateSlidesInView = useCallback((emblaApi: EmblaCarouselType) => {\n setSlidesInView((slidesInView) => {\n if (slidesInView.length === emblaApi.slideNodes().length) {\n emblaApi.off('slidesInView', updateSlidesInView)\n }\n const inView = emblaApi\n .slidesInView()\n .filter((index) => !slidesInView.includes(index))\n return slidesInView.concat(inView)\n })\n }, [])\n\n useEffect(() => {\n if (!emblaApi) return\n\n updateSlidesInView(emblaApi)\n emblaApi.on('slidesInView', updateSlidesInView)\n emblaApi.on('reInit', updateSlidesInView)\n }, [emblaApi, updateSlidesInView])\n\n return (\n
\n
\n
\n {slides.map((index) => (\n -1}\n />\n ))}\n
\n
\n\n
\n
\n \n \n
\n\n
\n {scrollSnaps.map((_, index) => (\n onDotButtonClick(index)}\n className={'embla__dot'.concat(\n index === selectedIndex ? ' embla__dot--selected' : ''\n )}\n />\n ))}\n
\n
\n
\n )\n}\n\nexport default EmblaCarousel\n","import React, { useCallback, useEffect, useRef } from 'react'\nimport {\n EmblaCarouselType,\n EmblaEventType,\n EmblaOptionsType\n} from 'embla-carousel'\nimport useEmblaCarousel from 'embla-carousel-react'\nimport {\n NextButton,\n PrevButton,\n usePrevNextButtons\n} from '../EmblaCarouselArrowButtons'\nimport { DotButton, useDotButton } from '../EmblaCarouselDotButton'\nimport { sandboxImages } from 'components/Sandbox/sandboxImages'\n\nconst TWEEN_FACTOR_BASE = 0.84\n\nconst numberWithinRange = (number: number, min: number, max: number): number =>\n Math.min(Math.max(number, min), max)\n\ntype PropType = {\n slides: number[]\n options?: EmblaOptionsType\n}\n\nconst EmblaCarousel: React.FC = (props) => {\n const { slides, options } = props\n const [emblaRef, emblaApi] = useEmblaCarousel(options)\n const tweenFactor = useRef(0)\n\n const { selectedIndex, scrollSnaps, onDotButtonClick } =\n useDotButton(emblaApi)\n\n const {\n prevBtnDisabled,\n nextBtnDisabled,\n onPrevButtonClick,\n onNextButtonClick\n } = usePrevNextButtons(emblaApi)\n\n const setTweenFactor = useCallback((emblaApi: EmblaCarouselType) => {\n tweenFactor.current = TWEEN_FACTOR_BASE * emblaApi.scrollSnapList().length\n }, [])\n\n const tweenOpacity = useCallback(\n (emblaApi: EmblaCarouselType, eventName?: EmblaEventType) => {\n const engine = emblaApi.internalEngine()\n const scrollProgress = emblaApi.scrollProgress()\n const slidesInView = emblaApi.slidesInView()\n const isScrollEvent = eventName === 'scroll'\n\n emblaApi.scrollSnapList().forEach((scrollSnap, snapIndex) => {\n let diffToTarget = scrollSnap - scrollProgress\n const slidesInSnap = engine.slideRegistry[snapIndex]\n\n slidesInSnap.forEach((slideIndex) => {\n if (isScrollEvent && !slidesInView.includes(slideIndex)) return\n\n if (engine.options.loop) {\n engine.slideLooper.loopPoints.forEach((loopItem) => {\n const target = loopItem.target()\n\n if (slideIndex === loopItem.index && target !== 0) {\n const sign = Math.sign(target)\n\n if (sign === -1) {\n diffToTarget = scrollSnap - (1 + scrollProgress)\n }\n if (sign === 1) {\n diffToTarget = scrollSnap + (1 - scrollProgress)\n }\n }\n })\n }\n\n const tweenValue = 1 - Math.abs(diffToTarget * tweenFactor.current)\n const opacity = numberWithinRange(tweenValue, 0, 1).toString()\n emblaApi.slideNodes()[slideIndex].style.opacity = opacity\n })\n })\n },\n []\n )\n\n useEffect(() => {\n if (!emblaApi) return\n\n setTweenFactor(emblaApi)\n tweenOpacity(emblaApi)\n emblaApi\n .on('reInit', setTweenFactor)\n .on('reInit', tweenOpacity)\n .on('scroll', tweenOpacity)\n .on('slideFocus', tweenOpacity)\n }, [emblaApi, tweenOpacity])\n\n return (\n
\n
\n
\n {slides.map((index) => (\n
\n \n
\n ))}\n
\n
\n\n
\n
\n \n \n
\n\n
\n {scrollSnaps.map((_, index) => (\n onDotButtonClick(index)}\n className={'embla__dot'.concat(\n index === selectedIndex ? ' embla__dot--selected' : ''\n )}\n />\n ))}\n
\n
\n
\n )\n}\n\nexport default EmblaCarousel\n","import React, { useCallback, useEffect, useRef } from 'react'\nimport {\n EmblaCarouselType,\n EmblaEventType,\n EmblaOptionsType\n} from 'embla-carousel'\nimport useEmblaCarousel from 'embla-carousel-react'\nimport {\n NextButton,\n PrevButton,\n usePrevNextButtons\n} from '../EmblaCarouselArrowButtons'\nimport { DotButton, useDotButton } from '../EmblaCarouselDotButton'\nimport { sandboxImages } from 'components/Sandbox/sandboxImages'\n\nconst TWEEN_FACTOR_BASE = 0.2\n\ntype PropType = {\n slides: number[]\n options?: EmblaOptionsType\n}\n\nconst EmblaCarousel: React.FC = (props) => {\n const { slides, options } = props\n const [emblaRef, emblaApi] = useEmblaCarousel(options)\n const tweenFactor = useRef(0)\n const tweenNodes = useRef([])\n\n const { selectedIndex, scrollSnaps, onDotButtonClick } =\n useDotButton(emblaApi)\n\n const {\n prevBtnDisabled,\n nextBtnDisabled,\n onPrevButtonClick,\n onNextButtonClick\n } = usePrevNextButtons(emblaApi)\n\n const setTweenNodes = useCallback((emblaApi: EmblaCarouselType): void => {\n tweenNodes.current = emblaApi.slideNodes().map((slideNode) => {\n return slideNode.querySelector('.embla__parallax__layer') as HTMLElement\n })\n }, [])\n\n const setTweenFactor = useCallback((emblaApi: EmblaCarouselType) => {\n tweenFactor.current = TWEEN_FACTOR_BASE * emblaApi.scrollSnapList().length\n }, [])\n\n const tweenParallax = useCallback(\n (emblaApi: EmblaCarouselType, eventName?: EmblaEventType) => {\n const engine = emblaApi.internalEngine()\n const scrollProgress = emblaApi.scrollProgress()\n const slidesInView = emblaApi.slidesInView()\n const isScrollEvent = eventName === 'scroll'\n\n emblaApi.scrollSnapList().forEach((scrollSnap, snapIndex) => {\n let diffToTarget = scrollSnap - scrollProgress\n const slidesInSnap = engine.slideRegistry[snapIndex]\n\n slidesInSnap.forEach((slideIndex) => {\n if (isScrollEvent && !slidesInView.includes(slideIndex)) return\n\n if (engine.options.loop) {\n engine.slideLooper.loopPoints.forEach((loopItem) => {\n const target = loopItem.target()\n\n if (slideIndex === loopItem.index && target !== 0) {\n const sign = Math.sign(target)\n\n if (sign === -1) {\n diffToTarget = scrollSnap - (1 + scrollProgress)\n }\n if (sign === 1) {\n diffToTarget = scrollSnap + (1 - scrollProgress)\n }\n }\n })\n }\n\n const translate = diffToTarget * (-1 * tweenFactor.current) * 100\n const tweenNode = tweenNodes.current[slideIndex]\n tweenNode.style.transform = `translateX(${translate}%)`\n })\n })\n },\n []\n )\n\n useEffect(() => {\n if (!emblaApi) return\n\n setTweenNodes(emblaApi)\n setTweenFactor(emblaApi)\n tweenParallax(emblaApi)\n\n emblaApi\n .on('reInit', setTweenNodes)\n .on('reInit', setTweenFactor)\n .on('reInit', tweenParallax)\n .on('scroll', tweenParallax)\n .on('slideFocus', tweenParallax)\n }, [emblaApi, tweenParallax])\n\n return (\n
\n
\n
\n {slides.map((index) => (\n
\n
\n
\n \n
\n
\n
\n ))}\n
\n
\n\n
\n
\n \n \n
\n\n
\n {scrollSnaps.map((_, index) => (\n onDotButtonClick(index)}\n className={'embla__dot'.concat(\n index === selectedIndex ? ' embla__dot--selected' : ''\n )}\n />\n ))}\n
\n
\n
\n )\n}\n\nexport default EmblaCarousel\n","import React, { useCallback, useEffect, useState } from 'react'\nimport { EmblaCarouselType, EmblaOptionsType } from 'embla-carousel'\nimport useEmblaCarousel from 'embla-carousel-react'\nimport {\n NextButton,\n PrevButton,\n usePrevNextButtons\n} from '../EmblaCarouselArrowButtons'\n\ntype PropType = {\n slides: number[]\n options?: EmblaOptionsType\n}\n\nconst EmblaCarousel: React.FC = (props) => {\n const { slides, options } = props\n const [emblaRef, emblaApi] = useEmblaCarousel(options)\n const [scrollProgress, setScrollProgress] = useState(0)\n\n const {\n prevBtnDisabled,\n nextBtnDisabled,\n onPrevButtonClick,\n onNextButtonClick\n } = usePrevNextButtons(emblaApi)\n\n const onScroll = useCallback((emblaApi: EmblaCarouselType) => {\n const progress = Math.max(0, Math.min(1, emblaApi.scrollProgress()))\n setScrollProgress(progress * 100)\n }, [])\n\n useEffect(() => {\n if (!emblaApi) return\n\n onScroll(emblaApi)\n emblaApi\n .on('reInit', onScroll)\n .on('scroll', onScroll)\n .on('slideFocus', onScroll)\n }, [emblaApi, onScroll])\n\n return (\n
\n
\n
\n {slides.map((index) => (\n
\n
\n {index + 1}\n
\n
\n ))}\n
\n
\n\n
\n
\n \n \n
\n\n
\n \n
\n
\n
\n )\n}\n\nexport default EmblaCarousel\n","import React, { useCallback, useEffect, useRef } from 'react'\nimport {\n EmblaCarouselType,\n EmblaEventType,\n EmblaOptionsType\n} from 'embla-carousel'\nimport useEmblaCarousel from 'embla-carousel-react'\nimport {\n NextButton,\n PrevButton,\n usePrevNextButtons\n} from '../EmblaCarouselArrowButtons'\nimport { DotButton, useDotButton } from '../EmblaCarouselDotButton'\n\nconst TWEEN_FACTOR_BASE = 0.52\n\nconst numberWithinRange = (number: number, min: number, max: number): number =>\n Math.min(Math.max(number, min), max)\n\ntype PropType = {\n slides: number[]\n options?: EmblaOptionsType\n}\n\nconst EmblaCarousel: React.FC = (props) => {\n const { slides, options } = props\n const [emblaRef, emblaApi] = useEmblaCarousel(options)\n const tweenFactor = useRef(0)\n const tweenNodes = useRef([])\n\n const { selectedIndex, scrollSnaps, onDotButtonClick } =\n useDotButton(emblaApi)\n\n const {\n prevBtnDisabled,\n nextBtnDisabled,\n onPrevButtonClick,\n onNextButtonClick\n } = usePrevNextButtons(emblaApi)\n\n const setTweenNodes = useCallback((emblaApi: EmblaCarouselType): void => {\n tweenNodes.current = emblaApi.slideNodes().map((slideNode) => {\n return slideNode.querySelector('.embla__slide__number') as HTMLElement\n })\n }, [])\n\n const setTweenFactor = useCallback((emblaApi: EmblaCarouselType) => {\n tweenFactor.current = TWEEN_FACTOR_BASE * emblaApi.scrollSnapList().length\n }, [])\n\n const tweenScale = useCallback(\n (emblaApi: EmblaCarouselType, eventName?: EmblaEventType) => {\n const engine = emblaApi.internalEngine()\n const scrollProgress = emblaApi.scrollProgress()\n const slidesInView = emblaApi.slidesInView()\n const isScrollEvent = eventName === 'scroll'\n\n emblaApi.scrollSnapList().forEach((scrollSnap, snapIndex) => {\n let diffToTarget = scrollSnap - scrollProgress\n const slidesInSnap = engine.slideRegistry[snapIndex]\n\n slidesInSnap.forEach((slideIndex) => {\n if (isScrollEvent && !slidesInView.includes(slideIndex)) return\n\n if (engine.options.loop) {\n engine.slideLooper.loopPoints.forEach((loopItem) => {\n const target = loopItem.target()\n\n if (slideIndex === loopItem.index && target !== 0) {\n const sign = Math.sign(target)\n\n if (sign === -1) {\n diffToTarget = scrollSnap - (1 + scrollProgress)\n }\n if (sign === 1) {\n diffToTarget = scrollSnap + (1 - scrollProgress)\n }\n }\n })\n }\n\n const tweenValue = 1 - Math.abs(diffToTarget * tweenFactor.current)\n const scale = numberWithinRange(tweenValue, 0, 1).toString()\n const tweenNode = tweenNodes.current[slideIndex]\n tweenNode.style.transform = `scale(${scale})`\n })\n })\n },\n []\n )\n\n useEffect(() => {\n if (!emblaApi) return\n\n setTweenNodes(emblaApi)\n setTweenFactor(emblaApi)\n tweenScale(emblaApi)\n\n emblaApi\n .on('reInit', setTweenNodes)\n .on('reInit', setTweenFactor)\n .on('reInit', tweenScale)\n .on('scroll', tweenScale)\n .on('slideFocus', tweenScale)\n }, [emblaApi, tweenScale])\n\n return (\n
\n
\n
\n {slides.map((index) => (\n
\n
{index + 1}
\n
\n ))}\n
\n
\n\n
\n
\n \n \n
\n\n
\n {scrollSnaps.map((_, index) => (\n onDotButtonClick(index)}\n className={'embla__dot'.concat(\n index === selectedIndex ? ' embla__dot--selected' : ''\n )}\n />\n ))}\n
\n
\n
\n )\n}\n\nexport default EmblaCarousel\n","import React from 'react'\n\ntype PropType = {\n selected: boolean\n index: number\n onClick: () => void\n}\n\nexport const Thumb: React.FC = (props) => {\n const { selected, index, onClick } = props\n\n return (\n \n \n {index + 1}\n \n \n )\n}\n","import React, { useState, useEffect, useCallback } from 'react'\nimport { EmblaOptionsType } from 'embla-carousel'\nimport useEmblaCarousel from 'embla-carousel-react'\nimport { Thumb } from './EmblaCarouselThumbsButton'\n\ntype PropType = {\n slides: number[]\n options?: EmblaOptionsType\n}\n\nconst EmblaCarousel: React.FC = (props) => {\n const { slides, options } = props\n const [selectedIndex, setSelectedIndex] = useState(0)\n const [emblaMainRef, emblaMainApi] = useEmblaCarousel(options)\n const [emblaThumbsRef, emblaThumbsApi] = useEmblaCarousel({\n containScroll: 'keepSnaps',\n dragFree: true\n })\n\n const onThumbClick = useCallback(\n (index: number) => {\n if (!emblaMainApi || !emblaThumbsApi) return\n emblaMainApi.scrollTo(index)\n },\n [emblaMainApi, emblaThumbsApi]\n )\n\n const onSelect = useCallback(() => {\n if (!emblaMainApi || !emblaThumbsApi) return\n setSelectedIndex(emblaMainApi.selectedScrollSnap())\n emblaThumbsApi.scrollTo(emblaMainApi.selectedScrollSnap())\n }, [emblaMainApi, emblaThumbsApi, setSelectedIndex])\n\n useEffect(() => {\n if (!emblaMainApi) return\n onSelect()\n\n emblaMainApi.on('select', onSelect).on('reInit', onSelect)\n }, [emblaMainApi, onSelect])\n\n return (\n
\n
\n
\n {slides.map((index) => (\n
\n
{index + 1}
\n
\n ))}\n
\n
\n\n
\n
\n
\n {slides.map((index) => (\n onThumbClick(index)}\n selected={index === selectedIndex}\n index={index}\n />\n ))}\n
\n
\n
\n
\n )\n}\n\nexport default EmblaCarousel\n","import image1 from 'assets/images/slide-1.jpg'\nimport image2 from 'assets/images/slide-2.jpg'\nimport image3 from 'assets/images/slide-3.jpg'\nimport image4 from 'assets/images/slide-4.jpg'\nimport image5 from 'assets/images/slide-5.jpg'\n\nconst sandboxImageList: string[] = [image1, image2, image3, image4, image5]\n\nexport const sandboxImages = (index: number): string =>\n sandboxImageList[index % sandboxImageList.length]\n","export default __webpack_public_path__ + \"static/slide-1-47ed6052f4455272d8f76db16447d760.jpg\";","export default __webpack_public_path__ + \"static/slide-2-dc15cfe63eb4aeb8c9c09823179ee64c.jpg\";","export default __webpack_public_path__ + \"static/slide-3-6362505742d23d7cd240880140151a95.jpg\";","export default __webpack_public_path__ + \"static/slide-4-ebad84cfea5ff9481504ded363c22003.jpg\";","export default __webpack_public_path__ + \"static/slide-5-2d88e98502aa565d6269834d7a7be406.jpg\";"],"names":["useDotButton","emblaApi","onButtonClick","selectedIndex","setSelectedIndex","useState","scrollSnaps","setScrollSnaps","onDotButtonClick","useCallback","index","scrollTo","onInit","scrollSnapList","onSelect","selectedScrollSnap","useEffect","on","DotButton","props","children","restProps","React","Object","assign","type","options","slides","propSlides","scrollListenerRef","useRef","listenForScrollRef","hasMoreToLoadRef","setSlides","hasMoreToLoad","setHasMoreToLoad","loadingMore","setLoadingMore","emblaRef","useEmblaCarousel","watchSlides","reloadEmbla","oldEngine","internalEngine","reInit","newEngine","forEach","engineModule","translate","to","location","get","scrollTarget","byDistance","set","animation","start","current","reloadAfterPointerUp","off","engine","dragHandler","pointerDown","boundsActive","limit","reachedMax","target","scrollBounds","toggleActive","prevBtnDisabled","nextBtnDisabled","onPrevButtonClick","onNextButtonClick","usePrevNextButtons","onScroll","lastSlide","slideNodes","length","lastSlideInView","slidesInView","includes","mockApiCall","minWait","maxWait","callback","min","Math","ceil","max","floor","wait","random","setTimeout","currentSlides","newSlideCount","Array","from","keys","addScrollListener","onResize","window","addEventListener","removeEventListener","className","ref","map","key","concat","PrevButton","onClick","disabled","NextButton","WHEEL_ITEM_RADIUS","CIRCLE_DEGREES","WHEEL_RADIUS","round","WHEEL_ITEM_SIZE","tan","PI","isInView","wheelLocation","slidePosition","abs","IosPickerItem","slideCount","perspective","label","loop","axis","dragFree","containScroll","rootNodeRef","totalRadius","rotationOffset","inactivateEmblaTransform","slideLooper","clear","loopPoints","_ref","rotateWheel","wheelRotation","scrollProgress","setContainerStyles","containerNode","style","transform","_","setSlideStyles","slideNode","positionDefault","positionLoopStart","positionLoopEnd","inView","angle","opacity","diffToTarget","distance","LazyLoadImage","imgSrc","hasLoaded","setHasLoaded","setLoaded","onLoad","src","alt","emblaRed","setSlidesInView","updateSlidesInView","filter","indexOf","tweenFactor","setTweenFactor","tweenOpacity","eventName","isScrollEvent","scrollSnap","snapIndex","slideRegistry","slideIndex","loopItem","sign","tweenValue","number","toString","numberWithinRange","sandboxImages","tweenNodes","setTweenNodes","querySelector","tweenParallax","setScrollProgress","progress","tweenScale","scale","Thumb","selected","emblaMainRef","emblaMainApi","emblaThumbsRef","emblaThumbsApi","onThumbClick","sandboxImageList"],"sourceRoot":""} \ No newline at end of file diff --git a/docs/3602-1df978a2563465b2ac92.js.map b/docs/3602-1df978a2563465b2ac92.js.map index 0fbf96fbb..fe077ab02 100644 --- a/docs/3602-1df978a2563465b2ac92.js.map +++ b/docs/3602-1df978a2563465b2ac92.js.map @@ -1 +1 @@ -{"version":3,"file":"3602-1df978a2563465b2ac92.js","mappings":"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","sources":["webpack://embla-carousel-docs/./src/components/Sandbox/React/SandboxFilesSrc/CarouselGenerator/EmblaCarouselDotButton.tsx","webpack://embla-carousel-docs/./src/components/Sandbox/React/SandboxFilesSrc/CarouselGenerator/EmblaCarouselArrowButtons.tsx","webpack://embla-carousel-docs/./src/components/Sandbox/React/SandboxFilesSrc/CarouselGenerator/EmblaCarouselSelectedSnapDisplay.tsx","webpack://embla-carousel-docs/./src/components/Sandbox/React/SandboxFilesSrc/CarouselGenerator/EmblaCarousel.tsx","webpack://embla-carousel-docs/../src/components/Options.ts","webpack://embla-carousel-docs/../src/components/Autoplay.ts","webpack://embla-carousel-docs/../src/components/utils.ts","webpack://embla-carousel-docs/../src/components/ClassNames.ts"],"sourcesContent":["import React, {\n PropsWithChildren,\n useCallback,\n useEffect,\n useState\n} from 'react'\nimport { EmblaCarouselType } from 'embla-carousel'\n\ntype UseDotButtonType = {\n selectedIndex: number\n scrollSnaps: number[]\n onDotButtonClick: (index: number) => void\n}\n\nexport const useDotButton = (\n emblaApi: EmblaCarouselType | undefined,\n /*__NAV_AUTOPLAY_REPLACE_START__*/\n onButtonClick?: (emblaApi: EmblaCarouselType) => void\n /*__NAV_AUTOPLAY_REPLACE_END__*/\n): UseDotButtonType => {\n const [selectedIndex, setSelectedIndex] = useState(0)\n const [scrollSnaps, setScrollSnaps] = useState([])\n\n const onDotButtonClick = useCallback(\n (index: number) => {\n if (!emblaApi) return\n emblaApi.scrollTo(index)\n /*__NAV_AUTOPLAY_REPLACE_START__*/\n if (onButtonClick) onButtonClick(emblaApi)\n /*__NAV_AUTOPLAY_REPLACE_END__*/\n },\n [\n emblaApi,\n /*__NAV_AUTOPLAY_REPLACE_START__*/ onButtonClick /*__NAV_AUTOPLAY_REPLACE_END__*/\n ]\n )\n\n const onInit = useCallback((emblaApi: EmblaCarouselType) => {\n setScrollSnaps(emblaApi.scrollSnapList())\n }, [])\n\n const onSelect = useCallback((emblaApi: EmblaCarouselType) => {\n setSelectedIndex(emblaApi.selectedScrollSnap())\n }, [])\n\n useEffect(() => {\n if (!emblaApi) return\n\n onInit(emblaApi)\n onSelect(emblaApi)\n emblaApi.on('reInit', onInit).on('reInit', onSelect).on('select', onSelect)\n }, [emblaApi, onInit, onSelect])\n\n return {\n selectedIndex,\n scrollSnaps,\n onDotButtonClick\n }\n}\n\ntype PropType = PropsWithChildren<\n React.DetailedHTMLProps<\n React.ButtonHTMLAttributes,\n HTMLButtonElement\n >\n>\n\nexport const DotButton: React.FC = (props) => {\n const { children, ...restProps } = props\n\n return (\n \n )\n}\n","import React, {\n PropsWithChildren,\n useCallback,\n useEffect,\n useState\n} from 'react'\nimport { EmblaCarouselType } from 'embla-carousel'\n\ntype UsePrevNextButtonsType = {\n prevBtnDisabled: boolean\n nextBtnDisabled: boolean\n onPrevButtonClick: () => void\n onNextButtonClick: () => void\n}\n\nexport const usePrevNextButtons = (\n emblaApi: EmblaCarouselType | undefined,\n /*__NAV_AUTOPLAY_REPLACE_START__*/\n onButtonClick?: (emblaApi: EmblaCarouselType) => void\n /*__NAV_AUTOPLAY_REPLACE_END__*/\n): UsePrevNextButtonsType => {\n const [prevBtnDisabled, setPrevBtnDisabled] = useState(true)\n const [nextBtnDisabled, setNextBtnDisabled] = useState(true)\n\n const onPrevButtonClick = useCallback(() => {\n if (!emblaApi) return\n emblaApi.scrollPrev()\n /*__NAV_AUTOPLAY_REPLACE_START__*/\n if (onButtonClick) onButtonClick(emblaApi)\n /*__NAV_AUTOPLAY_REPLACE_END__*/\n }, [\n emblaApi,\n /*__NAV_AUTOPLAY_REPLACE_START__*/ onButtonClick /*__NAV_AUTOPLAY_REPLACE_END__*/\n ])\n\n const onNextButtonClick = useCallback(() => {\n if (!emblaApi) return\n emblaApi.scrollNext()\n /*__NAV_AUTOPLAY_REPLACE_START__*/\n if (onButtonClick) onButtonClick(emblaApi)\n /*__NAV_AUTOPLAY_REPLACE_END__*/\n }, [\n emblaApi,\n /*__NAV_AUTOPLAY_REPLACE_START__*/ onButtonClick /*__NAV_AUTOPLAY_REPLACE_END__*/\n ])\n\n const onSelect = useCallback((emblaApi: EmblaCarouselType) => {\n setPrevBtnDisabled(!emblaApi.canScrollPrev())\n setNextBtnDisabled(!emblaApi.canScrollNext())\n }, [])\n\n useEffect(() => {\n if (!emblaApi) return\n\n onSelect(emblaApi)\n emblaApi.on('reInit', onSelect).on('select', onSelect)\n }, [emblaApi, onSelect])\n\n return {\n prevBtnDisabled,\n nextBtnDisabled,\n onPrevButtonClick,\n onNextButtonClick\n }\n}\n\ntype PropType = PropsWithChildren<\n React.DetailedHTMLProps<\n React.ButtonHTMLAttributes,\n HTMLButtonElement\n >\n>\n\nexport const PrevButton: React.FC = (props) => {\n const { children, ...restProps } = props\n\n return (\n \n \n {/*__PREV_NEXT_BUTTONS_RTL_REPLACE_START__*/}\n \n {/*__PREV_NEXT_BUTTONS_RTL_REPLACE_END__*/}\n {/*__PREV_NEXT_BUTTONS_LTR_REPLACE_START__*/}\n \n {/*__PREV_NEXT_BUTTONS_LTR_REPLACE_END__*/}\n {/*__PREV_NEXT_BUTTONS_VERTICAL_REPLACE_START__*/}\n \n {/*__PREV_NEXT_BUTTONS_VERTICAL_REPLACE_END__*/}\n \n {children}\n \n )\n}\n\nexport const NextButton: React.FC = (props) => {\n const { children, ...restProps } = props\n\n return (\n \n \n {/*__PREV_NEXT_BUTTONS_RTL_REPLACE_START__*/}\n \n {/*__PREV_NEXT_BUTTONS_RTL_REPLACE_END__*/}\n {/*__PREV_NEXT_BUTTONS_LTR_REPLACE_START__*/}\n \n {/*__PREV_NEXT_BUTTONS_LTR_REPLACE_END__*/}\n {/*__PREV_NEXT_BUTTONS_VERTICAL_REPLACE_START__*/}\n \n {/*__PREV_NEXT_BUTTONS_VERTICAL_REPLACE_END__*/}\n \n {children}\n \n )\n}\n","import React, { useCallback, useEffect, useState } from 'react'\nimport { EmblaCarouselType } from 'embla-carousel'\n\ntype UseSelectedSnapDisplayType = {\n selectedSnap: number\n snapCount: number\n}\n\nexport const useSelectedSnapDisplay = (\n emblaApi: EmblaCarouselType | undefined\n): UseSelectedSnapDisplayType => {\n const [selectedSnap, setSelectedSnap] = useState(0)\n const [snapCount, setSnapCount] = useState(0)\n\n const updateScrollSnapState = useCallback((emblaApi: EmblaCarouselType) => {\n setSnapCount(emblaApi.scrollSnapList().length)\n setSelectedSnap(emblaApi.selectedScrollSnap())\n }, [])\n\n useEffect(() => {\n if (!emblaApi) return\n\n updateScrollSnapState(emblaApi)\n emblaApi.on('select', updateScrollSnapState)\n emblaApi.on('reInit', updateScrollSnapState)\n }, [emblaApi, updateScrollSnapState])\n\n return {\n selectedSnap,\n snapCount\n }\n}\n\ntype PropType = {\n selectedSnap: number\n snapCount: number\n}\n\nexport const SelectedSnapDisplay: React.FC = (props) => {\n const { selectedSnap, snapCount } = props\n\n return (\n
\n {selectedSnap + 1} / {snapCount}\n
\n )\n}\n","import React, {\n /*__NAV_AUTOPLAY_REPLACE_START__*/ useCallback /*__NAV_AUTOPLAY_REPLACE_END__*/\n} from 'react'\nimport {\n EmblaOptionsType,\n /*__NAV_AUTOPLAY_REPLACE_START__*/ EmblaCarouselType /*__NAV_AUTOPLAY_REPLACE_END__*/\n} from 'embla-carousel'\n/*__DOT_BUTTONS_REPLACE_START__*/\nimport { DotButton, useDotButton } from './EmblaCarouselDotButton'\n/*__DOT_BUTTONS_REPLACE_END__*/\n/*__PREV_NEXT_BUTTONS_REPLACE_START__*/\nimport {\n PrevButton,\n NextButton,\n usePrevNextButtons\n} from './EmblaCarouselArrowButtons'\n/*__PREV_NEXT_BUTTONS_REPLACE_END__*/\n/*__SELECTED_SNAP_DISPLAY_REPLACE_START__*/\nimport {\n SelectedSnapDisplay,\n useSelectedSnapDisplay\n} from './EmblaCarouselSelectedSnapDisplay'\n/*__SELECTED_SNAP_DISPLAY_REPLACE_END__*/\n/*__AUTOPLAY_REPLACE_START__*/\nimport Autoplay from 'embla-carousel-autoplay'\n/*__AUTOPLAY_REPLACE_END__*/\n/*__CLASS_NAMES_REPLACE_START__*/\nimport ClassNames from 'embla-carousel-class-names'\n/*__CLASS_NAMES_REPLACE_END__*/\nimport useEmblaCarousel from 'embla-carousel-react'\n\ntype PropType = {\n slides: number[]\n options?: EmblaOptionsType\n}\n\nconst EmblaCarousel: React.FC = (props) => {\n const { slides, options } = props\n const [emblaRef, emblaApi] = useEmblaCarousel(\n options,\n /*__PLUGINS_REPLACE_START__*/\n [\n /*__AUTOPLAY_REPLACE_START__*/\n Autoplay(),\n /*__AUTOPLAY_REPLACE_END__*/\n\n /*__CLASS_NAMES_REPLACE_START__*/\n ClassNames()\n /*__CLASS_NAMES_REPLACE_END__*/\n ]\n /*__PLUGINS_REPLACE_END__*/\n )\n\n /*__NAV_AUTOPLAY_REPLACE_START__*/\n const onNavButtonClick = useCallback((emblaApi: EmblaCarouselType) => {\n const autoplay = emblaApi?.plugins()?.autoplay\n if (!autoplay) return\n\n const resetOrStop =\n autoplay.options.stopOnInteraction === false\n ? autoplay.reset\n : autoplay.stop\n\n resetOrStop()\n }, [])\n /*__NAV_AUTOPLAY_REPLACE_END__*/\n\n /*__DOT_BUTTONS_REPLACE_START__*/\n const { selectedIndex, scrollSnaps, onDotButtonClick } = useDotButton(\n emblaApi,\n /*__NAV_AUTOPLAY_REPLACE_START__*/ onNavButtonClick /*__NAV_AUTOPLAY_REPLACE_END__*/\n )\n /*__DOT_BUTTONS_REPLACE_END__*/\n\n /*__PREV_NEXT_BUTTONS_REPLACE_START__*/\n const {\n prevBtnDisabled,\n nextBtnDisabled,\n onPrevButtonClick,\n onNextButtonClick\n } = usePrevNextButtons(\n emblaApi,\n /*__NAV_AUTOPLAY_REPLACE_START__*/ onNavButtonClick /*__NAV_AUTOPLAY_REPLACE_END__*/\n )\n /*__PREV_NEXT_BUTTONS_REPLACE_END__*/\n\n /*__SELECTED_SNAP_DISPLAY_REPLACE_START__*/\n const { selectedSnap, snapCount } = useSelectedSnapDisplay(emblaApi)\n /*__SELECTED_SNAP_DISPLAY_REPLACE_END__*/\n\n return (\n \n
\n
\n {slides.map((index) => (\n
\n
{index + 1}
\n
\n ))}\n
\n
\n\n {/*__CONTROLS_REPLACE_START__*/}\n
\n {/*__PREV_NEXT_BUTTONS_REPLACE_START__*/}\n
\n \n \n
\n {/*__PREV_NEXT_BUTTONS_REPLACE_END__*/}\n\n {/*__DOT_BUTTONS_REPLACE_START__*/}\n
\n {scrollSnaps.map((_, index) => (\n onDotButtonClick(index)}\n className={'embla__dot'.concat(\n index === selectedIndex ? ' embla__dot--selected' : ''\n )}\n />\n ))}\n
\n {/*__DOT_BUTTONS_REPLACE_END__*/}\n\n {/*__SELECTED_SNAP_DISPLAY_REPLACE_START__*/}\n \n {/*__SELECTED_SNAP_DISPLAY_REPLACE_END__*/}\n
\n {/*__CONTROLS_REPLACE_END__*/}\n \n )\n}\n\nexport default EmblaCarousel\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 resume = true\n let jump = false\n let timer = 0\n\n function init(\n emblaApiInstance: EmblaCarouselType,\n optionsHandler: OptionsHandlerType\n ): void {\n emblaApi = emblaApiInstance\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 if (emblaApi.scrollSnapList().length <= 1) return\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 const container = emblaApi.containerNode()\n\n emblaApi.on('pointerDown', stopTimer)\n\n if (!options.stopOnInteraction) {\n emblaApi.on('pointerUp', startTimer)\n }\n\n if (options.stopOnMouseEnter) {\n eventStore.add(root, 'mouseenter', () => {\n resume = false\n stopTimer()\n })\n\n if (!options.stopOnInteraction) {\n eventStore.add(root, 'mouseleave', () => {\n resume = true\n startTimer()\n })\n }\n }\n\n if (options.stopOnFocusIn) {\n eventStore.add(container, 'focusin', stopTimer)\n\n if (!options.stopOnInteraction) {\n eventStore.add(container, 'focusout', startTimer)\n }\n }\n\n eventStore.add(ownerDocument, 'visibilitychange', visibilityChange)\n\n if (options.playOnInit && !documentIsHidden()) startTimer()\n }\n\n function destroy(): void {\n emblaApi.off('pointerDown', stopTimer).off('pointerUp', startTimer)\n stopTimer()\n destroyed = true\n playing = false\n }\n\n function startTimer(): void {\n if (destroyed) return\n if (!resume) 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 stopTimer(): 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 visibilityChange(): void {\n if (documentIsHidden()) {\n resume = playing\n return stopTimer()\n }\n\n if (resume) startTimer()\n }\n\n function documentIsHidden(): boolean {\n const { ownerDocument } = emblaApi.internalEngine()\n return ownerDocument.visibilityState === 'hidden'\n }\n\n function play(jumpOverride?: boolean): void {\n if (typeof jumpOverride !== 'undefined') jump = jumpOverride\n resume = true\n startTimer()\n }\n\n function stop(): void {\n if (playing) stopTimer()\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 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) stopTimer()\n\n if (emblaApi.canScrollNext()) {\n emblaApi.scrollNext(jump)\n } else {\n emblaApi.scrollTo(0, jump)\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","export function removeClass(node: HTMLElement, className: string): void {\n if (!node || !className) return\n const { classList } = node\n if (classList.contains(className)) classList.remove(className)\n}\n\nexport function addClass(node: HTMLElement, className: string): void {\n if (!node || !className) return\n const { classList } = node\n if (!classList.contains(className)) classList.add(className)\n}\n\nexport function nodeListToArray(nodeList: NodeListOf): HTMLElement[] {\n return Array.from(nodeList)\n}\n","import { defaultOptions, OptionsType } from './Options'\nimport { nodeListToArray, addClass, removeClass } from './utils'\nimport { CreatePluginType } from 'embla-carousel/components/Plugins'\nimport { EmblaCarouselType, EmblaEventType } from 'embla-carousel'\nimport { OptionsHandlerType } from 'embla-carousel/components/OptionsHandler'\n\ndeclare module 'embla-carousel/components/Plugins' {\n interface EmblaPluginsType {\n classNames?: ClassNamesType\n }\n}\n\nexport type ClassNamesType = CreatePluginType<{}, OptionsType>\n\nexport type ClassNamesOptionsType = ClassNamesType['options']\n\nfunction ClassNames(userOptions: ClassNamesOptionsType = {}): ClassNamesType {\n let options: OptionsType\n let emblaApi: EmblaCarouselType\n let root: HTMLElement\n let slides: HTMLElement[]\n const selectedEvents: EmblaEventType[] = ['select']\n const draggingEvents: EmblaEventType[] = ['pointerDown', 'pointerUp']\n const inViewEvents: EmblaEventType[] = ['slidesInView']\n\n function init(\n emblaApiInstance: EmblaCarouselType,\n optionsHandler: OptionsHandlerType\n ): void {\n emblaApi = emblaApiInstance\n\n const { mergeOptions, optionsAtMedia } = optionsHandler\n const optionsBase = mergeOptions(defaultOptions, ClassNames.globalOptions)\n const allOptions = mergeOptions(optionsBase, userOptions)\n options = optionsAtMedia(allOptions)\n\n root = emblaApi.rootNode()\n slides = emblaApi.slideNodes()\n const isDraggable = !!emblaApi.internalEngine().options.watchDrag\n\n if (isDraggable) {\n addClass(root, options.draggable)\n }\n if (options.dragging) {\n draggingEvents.forEach((evt) => emblaApi.on(evt, toggleDraggingClass))\n }\n if (options.snapped) {\n selectedEvents.forEach((evt) => emblaApi.on(evt, toggleSnappedClasses))\n toggleSnappedClasses()\n }\n if (options.inView) {\n inViewEvents.forEach((evt) => emblaApi.on(evt, toggleInViewClasses))\n toggleInViewClasses()\n }\n }\n\n function destroy(): void {\n removeClass(root, options.draggable)\n draggingEvents.forEach((evt) => emblaApi.off(evt, toggleDraggingClass))\n selectedEvents.forEach((evt) => emblaApi.off(evt, toggleSnappedClasses))\n inViewEvents.forEach((evt) => emblaApi.off(evt, toggleInViewClasses))\n slides.forEach((slide) => removeClass(slide, options.snapped))\n }\n\n function toggleDraggingClass(\n _: EmblaCarouselType,\n evt: EmblaEventType\n ): void {\n if (evt === 'pointerDown') addClass(root, options.dragging)\n else removeClass(root, options.dragging)\n }\n\n function toggleSlideClasses(slideIndexes: number[], className: string): void {\n const container = emblaApi.containerNode()\n const slideNodeList = container.querySelectorAll(`.${className}`)\n const removeClassSlides = nodeListToArray(slideNodeList)\n\n removeClassSlides.forEach((slide) => removeClass(slide, className))\n slideIndexes.forEach((index) => addClass(slides[index], className))\n }\n\n function toggleSnappedClasses(): void {\n const { slideRegistry } = emblaApi.internalEngine()\n const slideIndexes = slideRegistry[emblaApi.selectedScrollSnap()]\n toggleSlideClasses(slideIndexes, options.snapped)\n }\n\n function toggleInViewClasses(): void {\n const slideIndexes = emblaApi.slidesInView()\n toggleSlideClasses(slideIndexes, options.inView)\n }\n\n const self: ClassNamesType = {\n name: 'classNames',\n options: userOptions,\n init,\n destroy\n }\n return self\n}\n\nClassNames.globalOptions = undefined\n\nexport default ClassNames\n"],"names":["DotButton","props","children","restProps","React","Object","assign","type","PrevButton","className","viewBox","fill","d","NextButton","SelectedSnapDisplay","selectedSnap","snapCount","slides","options","emblaRef","emblaApi","useEmblaCarousel","Autoplay","ClassNames","onNavButtonClick","useCallback","_emblaApi$plugins","autoplay","plugins","stopOnInteraction","reset","stop","selectedIndex","scrollSnaps","onDotButtonClick","useDotButton","onButtonClick","setSelectedIndex","useState","setScrollSnaps","index","scrollTo","onInit","scrollSnapList","onSelect","selectedScrollSnap","useEffect","on","prevBtnDisabled","nextBtnDisabled","onPrevButtonClick","onNextButtonClick","usePrevNextButtons","setPrevBtnDisabled","setNextBtnDisabled","scrollPrev","scrollNext","canScrollPrev","canScrollNext","setSelectedSnap","setSnapCount","updateScrollSnapState","length","useSelectedSnapDisplay","dir","ref","map","key","onClick","disabled","_","concat","defaultOptions","active","breakpoints","delay","jump","playOnInit","stopOnFocusIn","stopOnMouseEnter","stopOnLastSnap","rootNode","userOptions","destroyed","playing","resume","timer","startTimer","emit","ownerWindow","internalEngine","clearInterval","setInterval","next","stopTimer","visibilityChange","documentIsHidden","ownerDocument","visibilityState","play","jumpOverride","nextIndex","clone","add","get","lastIndex","name","init","emblaApiInstance","optionsHandler","mergeOptions","optionsAtMedia","optionsBase","globalOptions","allOptions","eventStore","emblaRoot","root","container","containerNode","destroy","off","isPlaying","undefined","snapped","inView","draggable","dragging","removeClass","node","classList","contains","remove","addClass","selectedEvents","draggingEvents","inViewEvents","toggleDraggingClass","evt","toggleSlideClasses","slideIndexes","slideNodeList","querySelectorAll","nodeList","Array","from","forEach","slide","toggleSnappedClasses","slideRegistry","toggleInViewClasses","slidesInView","slideNodes","watchDrag"],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"3602-1df978a2563465b2ac92.js","mappings":"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","sources":["webpack://embla-carousel-docs/./src/components/Sandbox/React/SandboxFilesSrc/CarouselGenerator/EmblaCarouselDotButton.tsx","webpack://embla-carousel-docs/./src/components/Sandbox/React/SandboxFilesSrc/CarouselGenerator/EmblaCarouselArrowButtons.tsx","webpack://embla-carousel-docs/./src/components/Sandbox/React/SandboxFilesSrc/CarouselGenerator/EmblaCarouselSelectedSnapDisplay.tsx","webpack://embla-carousel-docs/./src/components/Sandbox/React/SandboxFilesSrc/CarouselGenerator/EmblaCarousel.tsx","webpack://embla-carousel-docs/../src/components/Options.ts","webpack://embla-carousel-docs/../src/components/Autoplay.ts","webpack://embla-carousel-docs/../src/components/utils.ts","webpack://embla-carousel-docs/../src/components/ClassNames.ts"],"sourcesContent":["import React, {\n ComponentPropsWithRef,\n useCallback,\n useEffect,\n useState\n} from 'react'\nimport { EmblaCarouselType } from 'embla-carousel'\n\ntype UseDotButtonType = {\n selectedIndex: number\n scrollSnaps: number[]\n onDotButtonClick: (index: number) => void\n}\n\nexport const useDotButton = (\n emblaApi: EmblaCarouselType | undefined,\n /*__NAV_AUTOPLAY_REPLACE_START__*/\n onButtonClick?: (emblaApi: EmblaCarouselType) => void\n /*__NAV_AUTOPLAY_REPLACE_END__*/\n): UseDotButtonType => {\n const [selectedIndex, setSelectedIndex] = useState(0)\n const [scrollSnaps, setScrollSnaps] = useState([])\n\n const onDotButtonClick = useCallback(\n (index: number) => {\n if (!emblaApi) return\n emblaApi.scrollTo(index)\n /*__NAV_AUTOPLAY_REPLACE_START__*/\n if (onButtonClick) onButtonClick(emblaApi)\n /*__NAV_AUTOPLAY_REPLACE_END__*/\n },\n [\n emblaApi,\n /*__NAV_AUTOPLAY_REPLACE_START__*/ onButtonClick /*__NAV_AUTOPLAY_REPLACE_END__*/\n ]\n )\n\n const onInit = useCallback((emblaApi: EmblaCarouselType) => {\n setScrollSnaps(emblaApi.scrollSnapList())\n }, [])\n\n const onSelect = useCallback((emblaApi: EmblaCarouselType) => {\n setSelectedIndex(emblaApi.selectedScrollSnap())\n }, [])\n\n useEffect(() => {\n if (!emblaApi) return\n\n onInit(emblaApi)\n onSelect(emblaApi)\n emblaApi.on('reInit', onInit).on('reInit', onSelect).on('select', onSelect)\n }, [emblaApi, onInit, onSelect])\n\n return {\n selectedIndex,\n scrollSnaps,\n onDotButtonClick\n }\n}\n\ntype PropType = ComponentPropsWithRef<'button'>\n\nexport const DotButton: React.FC = (props) => {\n const { children, ...restProps } = props\n\n return (\n \n )\n}\n","import React, {\n ComponentPropsWithRef,\n useCallback,\n useEffect,\n useState\n} from 'react'\nimport { EmblaCarouselType } from 'embla-carousel'\n\ntype UsePrevNextButtonsType = {\n prevBtnDisabled: boolean\n nextBtnDisabled: boolean\n onPrevButtonClick: () => void\n onNextButtonClick: () => void\n}\n\nexport const usePrevNextButtons = (\n emblaApi: EmblaCarouselType | undefined,\n /*__NAV_AUTOPLAY_REPLACE_START__*/\n onButtonClick?: (emblaApi: EmblaCarouselType) => void\n /*__NAV_AUTOPLAY_REPLACE_END__*/\n): UsePrevNextButtonsType => {\n const [prevBtnDisabled, setPrevBtnDisabled] = useState(true)\n const [nextBtnDisabled, setNextBtnDisabled] = useState(true)\n\n const onPrevButtonClick = useCallback(() => {\n if (!emblaApi) return\n emblaApi.scrollPrev()\n /*__NAV_AUTOPLAY_REPLACE_START__*/\n if (onButtonClick) onButtonClick(emblaApi)\n /*__NAV_AUTOPLAY_REPLACE_END__*/\n }, [\n emblaApi,\n /*__NAV_AUTOPLAY_REPLACE_START__*/ onButtonClick /*__NAV_AUTOPLAY_REPLACE_END__*/\n ])\n\n const onNextButtonClick = useCallback(() => {\n if (!emblaApi) return\n emblaApi.scrollNext()\n /*__NAV_AUTOPLAY_REPLACE_START__*/\n if (onButtonClick) onButtonClick(emblaApi)\n /*__NAV_AUTOPLAY_REPLACE_END__*/\n }, [\n emblaApi,\n /*__NAV_AUTOPLAY_REPLACE_START__*/ onButtonClick /*__NAV_AUTOPLAY_REPLACE_END__*/\n ])\n\n const onSelect = useCallback((emblaApi: EmblaCarouselType) => {\n setPrevBtnDisabled(!emblaApi.canScrollPrev())\n setNextBtnDisabled(!emblaApi.canScrollNext())\n }, [])\n\n useEffect(() => {\n if (!emblaApi) return\n\n onSelect(emblaApi)\n emblaApi.on('reInit', onSelect).on('select', onSelect)\n }, [emblaApi, onSelect])\n\n return {\n prevBtnDisabled,\n nextBtnDisabled,\n onPrevButtonClick,\n onNextButtonClick\n }\n}\n\ntype PropType = ComponentPropsWithRef<'button'>\n\nexport const PrevButton: React.FC = (props) => {\n const { children, ...restProps } = props\n\n return (\n \n \n {/*__PREV_NEXT_BUTTONS_RTL_REPLACE_START__*/}\n \n {/*__PREV_NEXT_BUTTONS_RTL_REPLACE_END__*/}\n {/*__PREV_NEXT_BUTTONS_LTR_REPLACE_START__*/}\n \n {/*__PREV_NEXT_BUTTONS_LTR_REPLACE_END__*/}\n {/*__PREV_NEXT_BUTTONS_VERTICAL_REPLACE_START__*/}\n \n {/*__PREV_NEXT_BUTTONS_VERTICAL_REPLACE_END__*/}\n \n {children}\n \n )\n}\n\nexport const NextButton: React.FC = (props) => {\n const { children, ...restProps } = props\n\n return (\n \n \n {/*__PREV_NEXT_BUTTONS_RTL_REPLACE_START__*/}\n \n {/*__PREV_NEXT_BUTTONS_RTL_REPLACE_END__*/}\n {/*__PREV_NEXT_BUTTONS_LTR_REPLACE_START__*/}\n \n {/*__PREV_NEXT_BUTTONS_LTR_REPLACE_END__*/}\n {/*__PREV_NEXT_BUTTONS_VERTICAL_REPLACE_START__*/}\n \n {/*__PREV_NEXT_BUTTONS_VERTICAL_REPLACE_END__*/}\n \n {children}\n \n )\n}\n","import React, { useCallback, useEffect, useState } from 'react'\nimport { EmblaCarouselType } from 'embla-carousel'\n\ntype UseSelectedSnapDisplayType = {\n selectedSnap: number\n snapCount: number\n}\n\nexport const useSelectedSnapDisplay = (\n emblaApi: EmblaCarouselType | undefined\n): UseSelectedSnapDisplayType => {\n const [selectedSnap, setSelectedSnap] = useState(0)\n const [snapCount, setSnapCount] = useState(0)\n\n const updateScrollSnapState = useCallback((emblaApi: EmblaCarouselType) => {\n setSnapCount(emblaApi.scrollSnapList().length)\n setSelectedSnap(emblaApi.selectedScrollSnap())\n }, [])\n\n useEffect(() => {\n if (!emblaApi) return\n\n updateScrollSnapState(emblaApi)\n emblaApi.on('select', updateScrollSnapState)\n emblaApi.on('reInit', updateScrollSnapState)\n }, [emblaApi, updateScrollSnapState])\n\n return {\n selectedSnap,\n snapCount\n }\n}\n\ntype PropType = {\n selectedSnap: number\n snapCount: number\n}\n\nexport const SelectedSnapDisplay: React.FC = (props) => {\n const { selectedSnap, snapCount } = props\n\n return (\n
\n {selectedSnap + 1} / {snapCount}\n
\n )\n}\n","import React, {\n /*__NAV_AUTOPLAY_REPLACE_START__*/ useCallback /*__NAV_AUTOPLAY_REPLACE_END__*/\n} from 'react'\nimport {\n EmblaOptionsType,\n /*__NAV_AUTOPLAY_REPLACE_START__*/ EmblaCarouselType /*__NAV_AUTOPLAY_REPLACE_END__*/\n} from 'embla-carousel'\n/*__DOT_BUTTONS_REPLACE_START__*/\nimport { DotButton, useDotButton } from './EmblaCarouselDotButton'\n/*__DOT_BUTTONS_REPLACE_END__*/\n/*__PREV_NEXT_BUTTONS_REPLACE_START__*/\nimport {\n PrevButton,\n NextButton,\n usePrevNextButtons\n} from './EmblaCarouselArrowButtons'\n/*__PREV_NEXT_BUTTONS_REPLACE_END__*/\n/*__SELECTED_SNAP_DISPLAY_REPLACE_START__*/\nimport {\n SelectedSnapDisplay,\n useSelectedSnapDisplay\n} from './EmblaCarouselSelectedSnapDisplay'\n/*__SELECTED_SNAP_DISPLAY_REPLACE_END__*/\n/*__AUTOPLAY_REPLACE_START__*/\nimport Autoplay from 'embla-carousel-autoplay'\n/*__AUTOPLAY_REPLACE_END__*/\n/*__CLASS_NAMES_REPLACE_START__*/\nimport ClassNames from 'embla-carousel-class-names'\n/*__CLASS_NAMES_REPLACE_END__*/\nimport useEmblaCarousel from 'embla-carousel-react'\n\ntype PropType = {\n slides: number[]\n options?: EmblaOptionsType\n}\n\nconst EmblaCarousel: React.FC = (props) => {\n const { slides, options } = props\n const [emblaRef, emblaApi] = useEmblaCarousel(\n options,\n /*__PLUGINS_REPLACE_START__*/\n [\n /*__AUTOPLAY_REPLACE_START__*/\n Autoplay(),\n /*__AUTOPLAY_REPLACE_END__*/\n\n /*__CLASS_NAMES_REPLACE_START__*/\n ClassNames()\n /*__CLASS_NAMES_REPLACE_END__*/\n ]\n /*__PLUGINS_REPLACE_END__*/\n )\n\n /*__NAV_AUTOPLAY_REPLACE_START__*/\n const onNavButtonClick = useCallback((emblaApi: EmblaCarouselType) => {\n const autoplay = emblaApi?.plugins()?.autoplay\n if (!autoplay) return\n\n const resetOrStop =\n autoplay.options.stopOnInteraction === false\n ? autoplay.reset\n : autoplay.stop\n\n resetOrStop()\n }, [])\n /*__NAV_AUTOPLAY_REPLACE_END__*/\n\n /*__DOT_BUTTONS_REPLACE_START__*/\n const { selectedIndex, scrollSnaps, onDotButtonClick } = useDotButton(\n emblaApi,\n /*__NAV_AUTOPLAY_REPLACE_START__*/ onNavButtonClick /*__NAV_AUTOPLAY_REPLACE_END__*/\n )\n /*__DOT_BUTTONS_REPLACE_END__*/\n\n /*__PREV_NEXT_BUTTONS_REPLACE_START__*/\n const {\n prevBtnDisabled,\n nextBtnDisabled,\n onPrevButtonClick,\n onNextButtonClick\n } = usePrevNextButtons(\n emblaApi,\n /*__NAV_AUTOPLAY_REPLACE_START__*/ onNavButtonClick /*__NAV_AUTOPLAY_REPLACE_END__*/\n )\n /*__PREV_NEXT_BUTTONS_REPLACE_END__*/\n\n /*__SELECTED_SNAP_DISPLAY_REPLACE_START__*/\n const { selectedSnap, snapCount } = useSelectedSnapDisplay(emblaApi)\n /*__SELECTED_SNAP_DISPLAY_REPLACE_END__*/\n\n return (\n \n
\n
\n {slides.map((index) => (\n
\n
{index + 1}
\n
\n ))}\n
\n
\n\n {/*__CONTROLS_REPLACE_START__*/}\n
\n {/*__PREV_NEXT_BUTTONS_REPLACE_START__*/}\n
\n \n \n
\n {/*__PREV_NEXT_BUTTONS_REPLACE_END__*/}\n\n {/*__DOT_BUTTONS_REPLACE_START__*/}\n
\n {scrollSnaps.map((_, index) => (\n onDotButtonClick(index)}\n className={'embla__dot'.concat(\n index === selectedIndex ? ' embla__dot--selected' : ''\n )}\n />\n ))}\n
\n {/*__DOT_BUTTONS_REPLACE_END__*/}\n\n {/*__SELECTED_SNAP_DISPLAY_REPLACE_START__*/}\n \n {/*__SELECTED_SNAP_DISPLAY_REPLACE_END__*/}\n
\n {/*__CONTROLS_REPLACE_END__*/}\n \n )\n}\n\nexport default EmblaCarousel\n","import { CreateOptionsType } from 'embla-carousel'\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 {\n CreatePluginType,\n OptionsHandlerType,\n EmblaCarouselType\n} from 'embla-carousel'\n\ndeclare module 'embla-carousel' {\n interface EmblaPluginsType {\n autoplay: AutoplayType\n }\n\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 resume = true\n let jump = false\n let timer = 0\n\n function init(\n emblaApiInstance: EmblaCarouselType,\n optionsHandler: OptionsHandlerType\n ): void {\n emblaApi = emblaApiInstance\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 if (emblaApi.scrollSnapList().length <= 1) return\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 const container = emblaApi.containerNode()\n\n emblaApi.on('pointerDown', stopTimer)\n\n if (!options.stopOnInteraction) {\n emblaApi.on('pointerUp', startTimer)\n }\n\n if (options.stopOnMouseEnter) {\n eventStore.add(root, 'mouseenter', () => {\n resume = false\n stopTimer()\n })\n\n if (!options.stopOnInteraction) {\n eventStore.add(root, 'mouseleave', () => {\n resume = true\n startTimer()\n })\n }\n }\n\n if (options.stopOnFocusIn) {\n eventStore.add(container, 'focusin', stopTimer)\n\n if (!options.stopOnInteraction) {\n eventStore.add(container, 'focusout', startTimer)\n }\n }\n\n eventStore.add(ownerDocument, 'visibilitychange', visibilityChange)\n\n if (options.playOnInit && !documentIsHidden()) startTimer()\n }\n\n function destroy(): void {\n emblaApi.off('pointerDown', stopTimer).off('pointerUp', startTimer)\n stopTimer()\n destroyed = true\n playing = false\n }\n\n function startTimer(): void {\n if (destroyed) return\n if (!resume) 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 stopTimer(): 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 visibilityChange(): void {\n if (documentIsHidden()) {\n resume = playing\n return stopTimer()\n }\n\n if (resume) startTimer()\n }\n\n function documentIsHidden(): boolean {\n const { ownerDocument } = emblaApi.internalEngine()\n return ownerDocument.visibilityState === 'hidden'\n }\n\n function play(jumpOverride?: boolean): void {\n if (typeof jumpOverride !== 'undefined') jump = jumpOverride\n resume = true\n startTimer()\n }\n\n function stop(): void {\n if (playing) stopTimer()\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 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) stopTimer()\n\n if (emblaApi.canScrollNext()) {\n emblaApi.scrollNext(jump)\n } else {\n emblaApi.scrollTo(0, jump)\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\ndeclare namespace Autoplay {\n let globalOptions: AutoplayOptionsType | undefined\n}\n\nAutoplay.globalOptions = undefined\n\nexport default Autoplay\n","export function removeClass(node: HTMLElement, className: string): void {\n if (!node || !className) return\n const { classList } = node\n if (classList.contains(className)) classList.remove(className)\n}\n\nexport function addClass(node: HTMLElement, className: string): void {\n if (!node || !className) return\n const { classList } = node\n if (!classList.contains(className)) classList.add(className)\n}\n\nexport function nodeListToArray(nodeList: NodeListOf): HTMLElement[] {\n return Array.from(nodeList)\n}\n","import { defaultOptions, OptionsType } from './Options'\nimport { nodeListToArray, addClass, removeClass } from './utils'\nimport {\n CreatePluginType,\n OptionsHandlerType,\n EmblaCarouselType,\n EmblaEventType\n} from 'embla-carousel'\n\ndeclare module 'embla-carousel' {\n interface EmblaPluginsType {\n classNames: ClassNamesType\n }\n}\n\nexport type ClassNamesType = CreatePluginType<{}, OptionsType>\n\nexport type ClassNamesOptionsType = ClassNamesType['options']\n\nfunction ClassNames(userOptions: ClassNamesOptionsType = {}): ClassNamesType {\n let options: OptionsType\n let emblaApi: EmblaCarouselType\n let root: HTMLElement\n let slides: HTMLElement[]\n const selectedEvents: EmblaEventType[] = ['select']\n const draggingEvents: EmblaEventType[] = ['pointerDown', 'pointerUp']\n const inViewEvents: EmblaEventType[] = ['slidesInView']\n\n function init(\n emblaApiInstance: EmblaCarouselType,\n optionsHandler: OptionsHandlerType\n ): void {\n emblaApi = emblaApiInstance\n\n const { mergeOptions, optionsAtMedia } = optionsHandler\n const optionsBase = mergeOptions(defaultOptions, ClassNames.globalOptions)\n const allOptions = mergeOptions(optionsBase, userOptions)\n options = optionsAtMedia(allOptions)\n\n root = emblaApi.rootNode()\n slides = emblaApi.slideNodes()\n const isDraggable = !!emblaApi.internalEngine().options.watchDrag\n\n if (isDraggable) {\n addClass(root, options.draggable)\n }\n if (options.dragging) {\n draggingEvents.forEach((evt) => emblaApi.on(evt, toggleDraggingClass))\n }\n if (options.snapped) {\n selectedEvents.forEach((evt) => emblaApi.on(evt, toggleSnappedClasses))\n toggleSnappedClasses()\n }\n if (options.inView) {\n inViewEvents.forEach((evt) => emblaApi.on(evt, toggleInViewClasses))\n toggleInViewClasses()\n }\n }\n\n function destroy(): void {\n removeClass(root, options.draggable)\n draggingEvents.forEach((evt) => emblaApi.off(evt, toggleDraggingClass))\n selectedEvents.forEach((evt) => emblaApi.off(evt, toggleSnappedClasses))\n inViewEvents.forEach((evt) => emblaApi.off(evt, toggleInViewClasses))\n slides.forEach((slide) => removeClass(slide, options.snapped))\n }\n\n function toggleDraggingClass(\n _: EmblaCarouselType,\n evt: EmblaEventType\n ): void {\n if (evt === 'pointerDown') addClass(root, options.dragging)\n else removeClass(root, options.dragging)\n }\n\n function toggleSlideClasses(slideIndexes: number[], className: string): void {\n const container = emblaApi.containerNode()\n const slideNodeList = container.querySelectorAll(`.${className}`)\n const removeClassSlides = nodeListToArray(slideNodeList)\n\n removeClassSlides.forEach((slide) => removeClass(slide, className))\n slideIndexes.forEach((index) => addClass(slides[index], className))\n }\n\n function toggleSnappedClasses(): void {\n const { slideRegistry } = emblaApi.internalEngine()\n const slideIndexes = slideRegistry[emblaApi.selectedScrollSnap()]\n toggleSlideClasses(slideIndexes, options.snapped)\n }\n\n function toggleInViewClasses(): void {\n const slideIndexes = emblaApi.slidesInView()\n toggleSlideClasses(slideIndexes, options.inView)\n }\n\n const self: ClassNamesType = {\n name: 'classNames',\n options: userOptions,\n init,\n destroy\n }\n return self\n}\n\ndeclare namespace ClassNames {\n let globalOptions: ClassNamesOptionsType | undefined\n}\n\nClassNames.globalOptions = undefined\n\nexport default ClassNames\n"],"names":["DotButton","props","children","restProps","React","Object","assign","type","PrevButton","className","viewBox","fill","d","NextButton","SelectedSnapDisplay","selectedSnap","snapCount","slides","options","emblaRef","emblaApi","useEmblaCarousel","Autoplay","ClassNames","onNavButtonClick","useCallback","_emblaApi$plugins","autoplay","plugins","stopOnInteraction","reset","stop","selectedIndex","scrollSnaps","onDotButtonClick","useDotButton","onButtonClick","setSelectedIndex","useState","setScrollSnaps","index","scrollTo","onInit","scrollSnapList","onSelect","selectedScrollSnap","useEffect","on","prevBtnDisabled","nextBtnDisabled","onPrevButtonClick","onNextButtonClick","usePrevNextButtons","setPrevBtnDisabled","setNextBtnDisabled","scrollPrev","scrollNext","canScrollPrev","canScrollNext","setSelectedSnap","setSnapCount","updateScrollSnapState","length","useSelectedSnapDisplay","dir","ref","map","key","onClick","disabled","_","concat","defaultOptions","active","breakpoints","delay","jump","playOnInit","stopOnFocusIn","stopOnMouseEnter","stopOnLastSnap","rootNode","userOptions","destroyed","playing","resume","timer","startTimer","emit","ownerWindow","internalEngine","clearInterval","setInterval","next","stopTimer","visibilityChange","documentIsHidden","ownerDocument","visibilityState","play","jumpOverride","nextIndex","clone","add","get","lastIndex","name","init","emblaApiInstance","optionsHandler","mergeOptions","optionsAtMedia","optionsBase","globalOptions","allOptions","eventStore","emblaRoot","root","container","containerNode","destroy","off","isPlaying","undefined","snapped","inView","draggable","dragging","removeClass","node","classList","contains","remove","addClass","selectedEvents","draggingEvents","inViewEvents","toggleDraggingClass","evt","toggleSlideClasses","slideIndexes","slideNodeList","querySelectorAll","nodeList","Array","from","forEach","slide","toggleSnappedClasses","slideRegistry","toggleInViewClasses","slidesInView","slideNodes","watchDrag"],"sourceRoot":""} \ No newline at end of file diff --git a/docs/404.html b/docs/404.html index e53a48619..1be96facf 100644 --- a/docs/404.html +++ b/docs/404.html @@ -25,14 +25,12 @@ html{background-color:var(--background-site);font-size:62.5%;}/*!sc*/ body{background-color:var(--background-site);color:var(--text-high-contrast);font-size:1.6rem;line-height:1.65;}/*!sc*/ .theme-light{color-scheme:light;}/*!sc*/ -.theme-light .SiteLogo__LogoDarkIcon-sc-1by5cek-3,.theme-light .ThemeToggle__LightThemeSvg-sc-1ezo9zi-1{display:none;}/*!sc*/ +.theme-light .SiteLogo__LogoDarkIcon-sc-1by5cek-4,.theme-light .SiteLogo__LogoDarkImage-sc-1by5cek-2,.theme-light .ThemeToggle__LightThemeSvg-sc-1ezo9zi-1{display:none;}/*!sc*/ .theme-dark{color-scheme:dark;}/*!sc*/ -.theme-dark .SiteLogo__LogoLightIcon-sc-1by5cek-2,.theme-dark .ThemeToggle__DarkThemeSvg-sc-1ezo9zi-2{display:none;}/*!sc*/ -data-styled.g22[id="sc-global-dAorGo1"]{content:"sc-global-dAorGo1,"}/*!sc*/ +.theme-dark .SiteLogo__LogoLightIcon-sc-1by5cek-3,.theme-dark .SiteLogo__LogoLightImage-sc-1by5cek-1,.theme-dark .ThemeToggle__DarkThemeSvg-sc-1ezo9zi-2{display:none;}/*!sc*/ +data-styled.g23[id="sc-global-isqsKj1"]{content:"sc-global-isqsKj1,"}/*!sc*/ .bxhdr{margin-left:auto;margin-right:auto;padding-left:2.4rem;padding-right:2.4rem;max-width:68rem;width:100%;}/*!sc*/ -data-styled.g23[id="PageFrame__PageFrameWrapper-sc-1wyjdd4-0"]{content:"bxhdr,"}/*!sc*/ -.eOqFPv{color:var(--brand-primary);background-image:linear-gradient( 45deg,var(--brand-primary),var(--brand-secondary) );background-clip:text;-webkit-background-clip:text;-webkit-text-fill-color:transparent;display:inline-block;font-weight:500;}/*!sc*/ -data-styled.g29[id="LinkContent__LinkContentWrapper-sc-1wcim9r-0"]{content:"eOqFPv,"}/*!sc*/ +data-styled.g24[id="PageFrame__PageFrameWrapper-sc-1wyjdd4-0"]{content:"bxhdr,"}/*!sc*/ .fhEhjC{color:var(--text-body);}/*!sc*/ .fhEhjC .code-highlight{background-color:var(--background-code);border-radius:0.4rem;border:0.1rem solid var(--detail-low-contrast);padding:0.3rem 0.6rem;font-size:1.44rem;box-sizing:border-box;}/*!sc*/ .fhEhjC .Admonition__AdmonitionWrapper-sc-1cc944d-0 .code-highlight{background-color:var(--background-site);border-color:var(--detail-medium-contrast);}/*!sc*/ @@ -92,18 +90,20 @@ .fhEhjC .TabsPanel__TabsPanelWrapper-sc-1ihsh9r-0 > h1,.fhEhjC .Admonition__AdmonitionContent-sc-1cc944d-1 > h1,.fhEhjC > h1,.fhEhjC .TabsPanel__TabsPanelWrapper-sc-1ihsh9r-0 > h2,.fhEhjC .Admonition__AdmonitionContent-sc-1cc944d-1 > h2,.fhEhjC > h2,.fhEhjC .TabsPanel__TabsPanelWrapper-sc-1ihsh9r-0 > h3,.fhEhjC .Admonition__AdmonitionContent-sc-1cc944d-1 > h3,.fhEhjC > h3,.fhEhjC .TabsPanel__TabsPanelWrapper-sc-1ihsh9r-0 > h4,.fhEhjC .Admonition__AdmonitionContent-sc-1cc944d-1 > h4,.fhEhjC > h4,.fhEhjC .TabsPanel__TabsPanelWrapper-sc-1ihsh9r-0 > h5,.fhEhjC .Admonition__AdmonitionContent-sc-1cc944d-1 > h5,.fhEhjC > h5,.fhEhjC .TabsPanel__TabsPanelWrapper-sc-1ihsh9r-0 > h6,.fhEhjC .Admonition__AdmonitionContent-sc-1cc944d-1 > h6,.fhEhjC > h6,.fhEhjC .TabsPanel__TabsPanelWrapper-sc-1ihsh9r-0 > ul,.fhEhjC .Admonition__AdmonitionContent-sc-1cc944d-1 > ul,.fhEhjC > ul,.fhEhjC .TabsPanel__TabsPanelWrapper-sc-1ihsh9r-0 > ol,.fhEhjC .Admonition__AdmonitionContent-sc-1cc944d-1 > ol,.fhEhjC > ol,.fhEhjC .TabsPanel__TabsPanelWrapper-sc-1ihsh9r-0 > dl,.fhEhjC .Admonition__AdmonitionContent-sc-1cc944d-1 > dl,.fhEhjC > dl,.fhEhjC .TabsPanel__TabsPanelWrapper-sc-1ihsh9r-0 > p,.fhEhjC .Admonition__AdmonitionContent-sc-1cc944d-1 > p,.fhEhjC > p,.fhEhjC .TabsPanel__TabsPanelWrapper-sc-1ihsh9r-0 > hgroup,.fhEhjC .Admonition__AdmonitionContent-sc-1cc944d-1 > hgroup,.fhEhjC > hgroup,.fhEhjC .TabsPanel__TabsPanelWrapper-sc-1ihsh9r-0 > address,.fhEhjC .Admonition__AdmonitionContent-sc-1cc944d-1 > address,.fhEhjC > address,.fhEhjC .TabsPanel__TabsPanelWrapper-sc-1ihsh9r-0 > table,.fhEhjC .Admonition__AdmonitionContent-sc-1cc944d-1 > table,.fhEhjC > table,.fhEhjC .TabsPanel__TabsPanelWrapper-sc-1ihsh9r-0 > fieldset,.fhEhjC .Admonition__AdmonitionContent-sc-1cc944d-1 > fieldset,.fhEhjC > fieldset,.fhEhjC .TabsPanel__TabsPanelWrapper-sc-1ihsh9r-0 > figure,.fhEhjC .Admonition__AdmonitionContent-sc-1cc944d-1 > figure,.fhEhjC > figure,.fhEhjC .TabsPanel__TabsPanelWrapper-sc-1ihsh9r-0 > pre,.fhEhjC .Admonition__AdmonitionContent-sc-1cc944d-1 > pre,.fhEhjC > pre,.fhEhjC .TabsPanel__TabsPanelWrapper-sc-1ihsh9r-0 > dd,.fhEhjC .Admonition__AdmonitionContent-sc-1cc944d-1 > dd,.fhEhjC > dd,.fhEhjC .TabsPanel__TabsPanelWrapper-sc-1ihsh9r-0 > blockquote,.fhEhjC .Admonition__AdmonitionContent-sc-1cc944d-1 > blockquote,.fhEhjC > blockquote,.fhEhjC .TabsPanel__TabsPanelWrapper-sc-1ihsh9r-0 > blockquote code,.fhEhjC .Admonition__AdmonitionContent-sc-1cc944d-1 > blockquote code,.fhEhjC > blockquote code,.fhEhjC .TabsPanel__TabsPanelWrapper-sc-1ihsh9r-0 > kbd,.fhEhjC .Admonition__AdmonitionContent-sc-1cc944d-1 > kbd,.fhEhjC > kbd,.fhEhjC .TabsPanel__TabsPanelWrapper-sc-1ihsh9r-0 > samp,.fhEhjC .Admonition__AdmonitionContent-sc-1cc944d-1 > samp,.fhEhjC > samp,.fhEhjC .TabsPanel__TabsPanelWrapper-sc-1ihsh9r-0 > .prism-highlight,.fhEhjC .Admonition__AdmonitionContent-sc-1cc944d-1 > .prism-highlight,.fhEhjC > .prism-highlight,.fhEhjC .TabsPanel__TabsPanelWrapper-sc-1ihsh9r-0 > .Tabs__TabsWrapper-sc-1wvkykc-0,.fhEhjC .Admonition__AdmonitionContent-sc-1cc944d-1 > .Tabs__TabsWrapper-sc-1wvkykc-0,.fhEhjC > .Tabs__TabsWrapper-sc-1wvkykc-0,.fhEhjC .TabsPanel__TabsPanelWrapper-sc-1ihsh9r-0 > .Admonition__AdmonitionWrapper-sc-1cc944d-0,.fhEhjC .Admonition__AdmonitionContent-sc-1cc944d-1 > .Admonition__AdmonitionWrapper-sc-1cc944d-0,.fhEhjC > .Admonition__AdmonitionWrapper-sc-1cc944d-0{margin-bottom:2.4rem;}/*!sc*/ .fhEhjC .TabsPanel__TabsPanelWrapper-sc-1ihsh9r-0 > *:first-child,.fhEhjC .Admonition__AdmonitionContent-sc-1cc944d-1 > *:first-child,.fhEhjC > *:first-child{margin-top:0;}/*!sc*/ .fhEhjC .TabsPanel__TabsPanelWrapper-sc-1ihsh9r-0 > *:last-child,.fhEhjC .Admonition__AdmonitionContent-sc-1cc944d-1 > *:last-child,.fhEhjC > *:last-child{margin-bottom:0;}/*!sc*/ -data-styled.g120[id="Styles__MdxStyles-sc-18i58cr-0"]{content:"fhEhjC,"}/*!sc*/ +data-styled.g92[id="Styles__MdxStyles-sc-18i58cr-0"]{content:"fhEhjC,"}/*!sc*/ +.eOqFPv{color:var(--brand-primary);background-image:linear-gradient( 45deg,var(--brand-primary),var(--brand-secondary) );background-clip:text;-webkit-background-clip:text;-webkit-text-fill-color:transparent;display:inline-block;font-weight:500;}/*!sc*/ +data-styled.g93[id="LinkContent__LinkContentWrapper-sc-1wcim9r-0"]{content:"eOqFPv,"}/*!sc*/ .bNscHq .code-highlight > span{color:var(--brand-primary);background-image:linear-gradient( 45deg,var(--brand-primary),var(--brand-secondary) );background-clip:text;-webkit-background-clip:text;-webkit-text-fill-color:transparent;}/*!sc*/ -data-styled.g121[id="Link__LinkContentStyled-sc-1x8mt22-0"]{content:"bNscHq,"}/*!sc*/ +data-styled.g94[id="Link__LinkContentStyled-sc-1x8mt22-0"]{content:"bNscHq,"}/*!sc*/ .jgctsE{display:block;width:100%;}/*!sc*/ -data-styled.g123[id="H1__Text-sc-1ov938g-0"]{content:"jgctsE,"}/*!sc*/ +data-styled.g96[id="H1__Text-sc-1ov938g-0"]{content:"jgctsE,"}/*!sc*/ .cYbjpM{display:block;font-size:0;}/*!sc*/ -data-styled.g124[id="H1__DecorationWrapper-sc-1ov938g-1"]{content:"cYbjpM,"}/*!sc*/ +data-styled.g97[id="H1__DecorationWrapper-sc-1ov938g-1"]{content:"cYbjpM,"}/*!sc*/ .bnSdak{background-image:linear-gradient( 45deg,var(--brand-primary),var(--brand-secondary) );margin-top:2.4rem;height:0.3rem;width:5rem;max-width:100%;display:-webkit-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-flex;}/*!sc*/ -data-styled.g125[id="H1__Decoration-sc-1ov938g-2"]{content:"bnSdak,"}/*!sc*/ +data-styled.g98[id="H1__Decoration-sc-1ov938g-2"]{content:"bnSdak,"}/*!sc*/ .celRSI{text-align:center;}/*!sc*/ .celRSI:before{content:'';display:block;height:10vw;max-height:100px;}/*!sc*/ -data-styled.g146[id="sc-404__PageNotFoundWrapper-sc-8mtezr-0"]{content:"celRSI,"}/*!sc*/ +data-styled.g122[id="sc-404__PageNotFoundWrapper-sc-8mtezr-0"]{content:"celRSI,"}/*!sc*/

Page not found

+
- \ No newline at end of file + \ No newline at end of file diff --git a/docs/404/index.html b/docs/404/index.html index 32ff5ba6e..c6e28d87a 100644 --- a/docs/404/index.html +++ b/docs/404/index.html @@ -25,14 +25,12 @@ html{background-color:var(--background-site);font-size:62.5%;}/*!sc*/ body{background-color:var(--background-site);color:var(--text-high-contrast);font-size:1.6rem;line-height:1.65;}/*!sc*/ .theme-light{color-scheme:light;}/*!sc*/ -.theme-light .SiteLogo__LogoDarkIcon-sc-1by5cek-3,.theme-light .ThemeToggle__LightThemeSvg-sc-1ezo9zi-1{display:none;}/*!sc*/ +.theme-light .SiteLogo__LogoDarkIcon-sc-1by5cek-4,.theme-light .SiteLogo__LogoDarkImage-sc-1by5cek-2,.theme-light .ThemeToggle__LightThemeSvg-sc-1ezo9zi-1{display:none;}/*!sc*/ .theme-dark{color-scheme:dark;}/*!sc*/ -.theme-dark .SiteLogo__LogoLightIcon-sc-1by5cek-2,.theme-dark .ThemeToggle__DarkThemeSvg-sc-1ezo9zi-2{display:none;}/*!sc*/ -data-styled.g22[id="sc-global-dAorGo1"]{content:"sc-global-dAorGo1,"}/*!sc*/ +.theme-dark .SiteLogo__LogoLightIcon-sc-1by5cek-3,.theme-dark .SiteLogo__LogoLightImage-sc-1by5cek-1,.theme-dark .ThemeToggle__DarkThemeSvg-sc-1ezo9zi-2{display:none;}/*!sc*/ +data-styled.g23[id="sc-global-isqsKj1"]{content:"sc-global-isqsKj1,"}/*!sc*/ .bxhdr{margin-left:auto;margin-right:auto;padding-left:2.4rem;padding-right:2.4rem;max-width:68rem;width:100%;}/*!sc*/ -data-styled.g23[id="PageFrame__PageFrameWrapper-sc-1wyjdd4-0"]{content:"bxhdr,"}/*!sc*/ -.eOqFPv{color:var(--brand-primary);background-image:linear-gradient( 45deg,var(--brand-primary),var(--brand-secondary) );background-clip:text;-webkit-background-clip:text;-webkit-text-fill-color:transparent;display:inline-block;font-weight:500;}/*!sc*/ -data-styled.g29[id="LinkContent__LinkContentWrapper-sc-1wcim9r-0"]{content:"eOqFPv,"}/*!sc*/ +data-styled.g24[id="PageFrame__PageFrameWrapper-sc-1wyjdd4-0"]{content:"bxhdr,"}/*!sc*/ .fhEhjC{color:var(--text-body);}/*!sc*/ .fhEhjC .code-highlight{background-color:var(--background-code);border-radius:0.4rem;border:0.1rem solid var(--detail-low-contrast);padding:0.3rem 0.6rem;font-size:1.44rem;box-sizing:border-box;}/*!sc*/ .fhEhjC .Admonition__AdmonitionWrapper-sc-1cc944d-0 .code-highlight{background-color:var(--background-site);border-color:var(--detail-medium-contrast);}/*!sc*/ @@ -92,18 +90,20 @@ .fhEhjC .TabsPanel__TabsPanelWrapper-sc-1ihsh9r-0 > h1,.fhEhjC .Admonition__AdmonitionContent-sc-1cc944d-1 > h1,.fhEhjC > h1,.fhEhjC .TabsPanel__TabsPanelWrapper-sc-1ihsh9r-0 > h2,.fhEhjC .Admonition__AdmonitionContent-sc-1cc944d-1 > h2,.fhEhjC > h2,.fhEhjC .TabsPanel__TabsPanelWrapper-sc-1ihsh9r-0 > h3,.fhEhjC .Admonition__AdmonitionContent-sc-1cc944d-1 > h3,.fhEhjC > h3,.fhEhjC .TabsPanel__TabsPanelWrapper-sc-1ihsh9r-0 > h4,.fhEhjC .Admonition__AdmonitionContent-sc-1cc944d-1 > h4,.fhEhjC > h4,.fhEhjC .TabsPanel__TabsPanelWrapper-sc-1ihsh9r-0 > h5,.fhEhjC .Admonition__AdmonitionContent-sc-1cc944d-1 > h5,.fhEhjC > h5,.fhEhjC .TabsPanel__TabsPanelWrapper-sc-1ihsh9r-0 > h6,.fhEhjC .Admonition__AdmonitionContent-sc-1cc944d-1 > h6,.fhEhjC > h6,.fhEhjC .TabsPanel__TabsPanelWrapper-sc-1ihsh9r-0 > ul,.fhEhjC .Admonition__AdmonitionContent-sc-1cc944d-1 > ul,.fhEhjC > ul,.fhEhjC .TabsPanel__TabsPanelWrapper-sc-1ihsh9r-0 > ol,.fhEhjC .Admonition__AdmonitionContent-sc-1cc944d-1 > ol,.fhEhjC > ol,.fhEhjC .TabsPanel__TabsPanelWrapper-sc-1ihsh9r-0 > dl,.fhEhjC .Admonition__AdmonitionContent-sc-1cc944d-1 > dl,.fhEhjC > dl,.fhEhjC .TabsPanel__TabsPanelWrapper-sc-1ihsh9r-0 > p,.fhEhjC .Admonition__AdmonitionContent-sc-1cc944d-1 > p,.fhEhjC > p,.fhEhjC .TabsPanel__TabsPanelWrapper-sc-1ihsh9r-0 > hgroup,.fhEhjC .Admonition__AdmonitionContent-sc-1cc944d-1 > hgroup,.fhEhjC > hgroup,.fhEhjC .TabsPanel__TabsPanelWrapper-sc-1ihsh9r-0 > address,.fhEhjC .Admonition__AdmonitionContent-sc-1cc944d-1 > address,.fhEhjC > address,.fhEhjC .TabsPanel__TabsPanelWrapper-sc-1ihsh9r-0 > table,.fhEhjC .Admonition__AdmonitionContent-sc-1cc944d-1 > table,.fhEhjC > table,.fhEhjC .TabsPanel__TabsPanelWrapper-sc-1ihsh9r-0 > fieldset,.fhEhjC .Admonition__AdmonitionContent-sc-1cc944d-1 > fieldset,.fhEhjC > fieldset,.fhEhjC .TabsPanel__TabsPanelWrapper-sc-1ihsh9r-0 > figure,.fhEhjC .Admonition__AdmonitionContent-sc-1cc944d-1 > figure,.fhEhjC > figure,.fhEhjC .TabsPanel__TabsPanelWrapper-sc-1ihsh9r-0 > pre,.fhEhjC .Admonition__AdmonitionContent-sc-1cc944d-1 > pre,.fhEhjC > pre,.fhEhjC .TabsPanel__TabsPanelWrapper-sc-1ihsh9r-0 > dd,.fhEhjC .Admonition__AdmonitionContent-sc-1cc944d-1 > dd,.fhEhjC > dd,.fhEhjC .TabsPanel__TabsPanelWrapper-sc-1ihsh9r-0 > blockquote,.fhEhjC .Admonition__AdmonitionContent-sc-1cc944d-1 > blockquote,.fhEhjC > blockquote,.fhEhjC .TabsPanel__TabsPanelWrapper-sc-1ihsh9r-0 > blockquote code,.fhEhjC .Admonition__AdmonitionContent-sc-1cc944d-1 > blockquote code,.fhEhjC > blockquote code,.fhEhjC .TabsPanel__TabsPanelWrapper-sc-1ihsh9r-0 > kbd,.fhEhjC .Admonition__AdmonitionContent-sc-1cc944d-1 > kbd,.fhEhjC > kbd,.fhEhjC .TabsPanel__TabsPanelWrapper-sc-1ihsh9r-0 > samp,.fhEhjC .Admonition__AdmonitionContent-sc-1cc944d-1 > samp,.fhEhjC > samp,.fhEhjC .TabsPanel__TabsPanelWrapper-sc-1ihsh9r-0 > .prism-highlight,.fhEhjC .Admonition__AdmonitionContent-sc-1cc944d-1 > .prism-highlight,.fhEhjC > .prism-highlight,.fhEhjC .TabsPanel__TabsPanelWrapper-sc-1ihsh9r-0 > .Tabs__TabsWrapper-sc-1wvkykc-0,.fhEhjC .Admonition__AdmonitionContent-sc-1cc944d-1 > .Tabs__TabsWrapper-sc-1wvkykc-0,.fhEhjC > .Tabs__TabsWrapper-sc-1wvkykc-0,.fhEhjC .TabsPanel__TabsPanelWrapper-sc-1ihsh9r-0 > .Admonition__AdmonitionWrapper-sc-1cc944d-0,.fhEhjC .Admonition__AdmonitionContent-sc-1cc944d-1 > .Admonition__AdmonitionWrapper-sc-1cc944d-0,.fhEhjC > .Admonition__AdmonitionWrapper-sc-1cc944d-0{margin-bottom:2.4rem;}/*!sc*/ .fhEhjC .TabsPanel__TabsPanelWrapper-sc-1ihsh9r-0 > *:first-child,.fhEhjC .Admonition__AdmonitionContent-sc-1cc944d-1 > *:first-child,.fhEhjC > *:first-child{margin-top:0;}/*!sc*/ .fhEhjC .TabsPanel__TabsPanelWrapper-sc-1ihsh9r-0 > *:last-child,.fhEhjC .Admonition__AdmonitionContent-sc-1cc944d-1 > *:last-child,.fhEhjC > *:last-child{margin-bottom:0;}/*!sc*/ -data-styled.g120[id="Styles__MdxStyles-sc-18i58cr-0"]{content:"fhEhjC,"}/*!sc*/ +data-styled.g92[id="Styles__MdxStyles-sc-18i58cr-0"]{content:"fhEhjC,"}/*!sc*/ +.eOqFPv{color:var(--brand-primary);background-image:linear-gradient( 45deg,var(--brand-primary),var(--brand-secondary) );background-clip:text;-webkit-background-clip:text;-webkit-text-fill-color:transparent;display:inline-block;font-weight:500;}/*!sc*/ +data-styled.g93[id="LinkContent__LinkContentWrapper-sc-1wcim9r-0"]{content:"eOqFPv,"}/*!sc*/ .bNscHq .code-highlight > span{color:var(--brand-primary);background-image:linear-gradient( 45deg,var(--brand-primary),var(--brand-secondary) );background-clip:text;-webkit-background-clip:text;-webkit-text-fill-color:transparent;}/*!sc*/ -data-styled.g121[id="Link__LinkContentStyled-sc-1x8mt22-0"]{content:"bNscHq,"}/*!sc*/ +data-styled.g94[id="Link__LinkContentStyled-sc-1x8mt22-0"]{content:"bNscHq,"}/*!sc*/ .jgctsE{display:block;width:100%;}/*!sc*/ -data-styled.g123[id="H1__Text-sc-1ov938g-0"]{content:"jgctsE,"}/*!sc*/ +data-styled.g96[id="H1__Text-sc-1ov938g-0"]{content:"jgctsE,"}/*!sc*/ .cYbjpM{display:block;font-size:0;}/*!sc*/ -data-styled.g124[id="H1__DecorationWrapper-sc-1ov938g-1"]{content:"cYbjpM,"}/*!sc*/ +data-styled.g97[id="H1__DecorationWrapper-sc-1ov938g-1"]{content:"cYbjpM,"}/*!sc*/ .bnSdak{background-image:linear-gradient( 45deg,var(--brand-primary),var(--brand-secondary) );margin-top:2.4rem;height:0.3rem;width:5rem;max-width:100%;display:-webkit-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-flex;}/*!sc*/ -data-styled.g125[id="H1__Decoration-sc-1ov938g-2"]{content:"bnSdak,"}/*!sc*/ +data-styled.g98[id="H1__Decoration-sc-1ov938g-2"]{content:"bnSdak,"}/*!sc*/ .celRSI{text-align:center;}/*!sc*/ .celRSI:before{content:'';display:block;height:10vw;max-height:100px;}/*!sc*/ -data-styled.g146[id="sc-404__PageNotFoundWrapper-sc-8mtezr-0"]{content:"celRSI,"}/*!sc*/ +data-styled.g122[id="sc-404__PageNotFoundWrapper-sc-8mtezr-0"]{content:"celRSI,"}/*!sc*/

Page not found

+
- \ No newline at end of file + \ No newline at end of file diff --git a/docs/5029-dd4e8cbcb7c1a56f94c7.js.map b/docs/5029-dd4e8cbcb7c1a56f94c7.js.map index 8c5e5d8fa..efd902d9b 100644 --- a/docs/5029-dd4e8cbcb7c1a56f94c7.js.map +++ b/docs/5029-dd4e8cbcb7c1a56f94c7.js.map @@ -1 +1 @@ -{"version":3,"file":"5029-dd4e8cbcb7c1a56f94c7.js","mappings":"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","sources":["webpack://embla-carousel-docs/./src/components/Sandbox/React/SandboxFilesSrc/EmblaCarouselDotButton.tsx","webpack://embla-carousel-docs/../src/components/utils.ts","webpack://embla-carousel-docs/../src/components/Fade.ts","webpack://embla-carousel-docs/./src/components/Sandbox/React/SandboxFilesSrc/Fade/EmblaCarousel.tsx","webpack://embla-carousel-docs/./src/components/Sandbox/sandboxImages.ts","webpack://embla-carousel-docs/./src/assets/images/slide-1.jpg","webpack://embla-carousel-docs/./src/assets/images/slide-2.jpg","webpack://embla-carousel-docs/./src/assets/images/slide-3.jpg","webpack://embla-carousel-docs/./src/assets/images/slide-4.jpg","webpack://embla-carousel-docs/./src/assets/images/slide-5.jpg"],"sourcesContent":["import React, {\n PropsWithChildren,\n useCallback,\n useEffect,\n useState\n} from 'react'\nimport { EmblaCarouselType } from 'embla-carousel'\n\ntype UseDotButtonType = {\n selectedIndex: number\n scrollSnaps: number[]\n onDotButtonClick: (index: number) => void\n}\n\nexport const useDotButton = (\n emblaApi: EmblaCarouselType | undefined,\n onButtonClick?: (emblaApi: EmblaCarouselType) => void\n): UseDotButtonType => {\n const [selectedIndex, setSelectedIndex] = useState(0)\n const [scrollSnaps, setScrollSnaps] = useState([])\n\n const onDotButtonClick = useCallback(\n (index: number) => {\n if (!emblaApi) return\n emblaApi.scrollTo(index)\n if (onButtonClick) onButtonClick(emblaApi)\n },\n [emblaApi, onButtonClick]\n )\n\n const onInit = useCallback((emblaApi: EmblaCarouselType) => {\n setScrollSnaps(emblaApi.scrollSnapList())\n }, [])\n\n const onSelect = useCallback((emblaApi: EmblaCarouselType) => {\n setSelectedIndex(emblaApi.selectedScrollSnap())\n }, [])\n\n useEffect(() => {\n if (!emblaApi) return\n\n onInit(emblaApi)\n onSelect(emblaApi)\n\n emblaApi.on('reInit', onInit).on('reInit', onSelect).on('select', onSelect)\n }, [emblaApi, onInit, onSelect])\n\n return {\n selectedIndex,\n scrollSnaps,\n onDotButtonClick\n }\n}\n\ntype PropType = PropsWithChildren<\n React.DetailedHTMLProps<\n React.ButtonHTMLAttributes,\n HTMLButtonElement\n >\n>\n\nexport const DotButton: React.FC = (props) => {\n const { children, ...restProps } = props\n\n return (\n \n )\n}\n","export function clampNumber(number: number, min: number, max: number): number {\n return Math.min(Math.max(number, min), max)\n}\n\nexport function isNumber(value: number | null): value is number {\n return typeof value === 'number' && !isNaN(value)\n}\n","import { OptionsType } from './Options'\nimport { CreatePluginType } from 'embla-carousel/components/Plugins'\nimport { EmblaCarouselType } from 'embla-carousel'\nimport { isNumber, clampNumber } from './utils'\nimport { ScrollBodyType } from 'embla-carousel/components/ScrollBody'\n\ndeclare module 'embla-carousel/components/Plugins' {\n interface EmblaPluginsType {\n fade?: FadeType\n }\n}\n\nexport type FadeType = CreatePluginType<{}, OptionsType>\n\nexport type FadeOptionsType = FadeType['options']\n\nfunction Fade(userOptions: FadeOptionsType = {}): FadeType {\n const fullOpacity = 1\n const noOpacity = 0\n const fadeFriction = 0.68\n\n let emblaApi: EmblaCarouselType\n let opacities: number[] = []\n let fadeToNextDistance: number\n let distanceFromPointerDown = 0\n let fadeVelocity = 0\n let progress = 0\n let shouldFadePair = false\n let defaultSettledBehaviour: ScrollBodyType['settled']\n let defaultProgressBehaviour: EmblaCarouselType['scrollProgress']\n\n function init(emblaApiInstance: EmblaCarouselType): void {\n emblaApi = emblaApiInstance\n\n const selectedSnap = emblaApi.selectedScrollSnap()\n const { scrollBody, containerRect, axis } = emblaApi.internalEngine()\n const containerSize = axis.measureSize(containerRect)\n\n fadeToNextDistance = clampNumber(containerSize * 0.75, 200, 500)\n shouldFadePair = false\n\n opacities = emblaApi\n .scrollSnapList()\n .map((_, index) => (index === selectedSnap ? fullOpacity : noOpacity))\n\n defaultSettledBehaviour = scrollBody.settled\n defaultProgressBehaviour = emblaApi.scrollProgress\n\n scrollBody.settled = settled\n emblaApi.scrollProgress = scrollProgress\n\n emblaApi\n .on('select', select)\n .on('slideFocus', fadeToSelectedSnapInstantly)\n .on('pointerDown', pointerDown)\n .on('pointerUp', pointerUp)\n\n disableScroll()\n fadeToSelectedSnapInstantly()\n }\n\n function destroy(): void {\n const { scrollBody } = emblaApi.internalEngine()\n scrollBody.settled = defaultSettledBehaviour\n emblaApi.scrollProgress = defaultProgressBehaviour\n\n emblaApi\n .off('select', select)\n .off('slideFocus', fadeToSelectedSnapInstantly)\n .off('pointerDown', pointerDown)\n .off('pointerUp', pointerUp)\n\n emblaApi.slideNodes().forEach((slideNode) => {\n const slideStyle = slideNode.style\n slideStyle.opacity = ''\n slideStyle.transform = ''\n slideStyle.pointerEvents = ''\n if (!slideNode.getAttribute('style')) slideNode.removeAttribute('style')\n })\n }\n\n function fadeToSelectedSnapInstantly(): void {\n const selectedSnap = emblaApi.selectedScrollSnap()\n setOpacities(selectedSnap, fullOpacity)\n }\n\n function pointerUp(): void {\n shouldFadePair = false\n }\n\n function pointerDown(): void {\n shouldFadePair = false\n distanceFromPointerDown = 0\n fadeVelocity = 0\n }\n\n function select(): void {\n const duration = emblaApi.internalEngine().scrollBody.duration()\n fadeVelocity = duration ? 0 : fullOpacity\n shouldFadePair = true\n if (!duration) fadeToSelectedSnapInstantly()\n }\n\n function getSlideTransform(position: number): string {\n const { axis } = emblaApi.internalEngine()\n const translateAxis = axis.scroll.toUpperCase()\n return `translate${translateAxis}(${axis.direction(position)}px)`\n }\n\n function disableScroll(): void {\n const { translate, slideLooper } = emblaApi.internalEngine()\n\n translate.clear()\n translate.toggleActive(false)\n\n slideLooper.loopPoints.forEach(({ translate }) => {\n translate.clear()\n translate.toggleActive(false)\n })\n }\n\n function lockExcessiveScroll(fadeIndex: number | null): void {\n const { scrollSnaps, location, target } = emblaApi.internalEngine()\n if (!isNumber(fadeIndex) || opacities[fadeIndex] < 0.5) return\n\n location.set(scrollSnaps[fadeIndex])\n target.set(location)\n }\n\n function setOpacities(fadeIndex: number, velocity: number): void {\n const scrollSnaps = emblaApi.scrollSnapList()\n\n scrollSnaps.forEach((_, indexA) => {\n const absVelocity = Math.abs(velocity)\n const currentOpacity = opacities[indexA]\n const isFadeIndex = indexA === fadeIndex\n\n const nextOpacity = isFadeIndex\n ? currentOpacity + absVelocity\n : currentOpacity - absVelocity\n\n const clampedOpacity = clampNumber(nextOpacity, noOpacity, fullOpacity)\n opacities[indexA] = clampedOpacity\n\n const fadePair = isFadeIndex && shouldFadePair\n const indexB = emblaApi.previousScrollSnap()\n\n if (fadePair) opacities[indexB] = 1 - clampedOpacity\n if (isFadeIndex) setProgress(fadeIndex, clampedOpacity)\n\n setOpacity(indexA)\n })\n }\n\n function setOpacity(index: number): void {\n const slidesInSnap = emblaApi.internalEngine().slideRegistry[index]\n const { scrollSnaps, containerRect } = emblaApi.internalEngine()\n const opacity = opacities[index]\n\n slidesInSnap.forEach((slideIndex) => {\n const slideStyle = emblaApi.slideNodes()[slideIndex].style\n const roundedOpacity = parseFloat(opacity.toFixed(2))\n const hasOpacity = roundedOpacity > noOpacity\n const position = hasOpacity ? scrollSnaps[index] : containerRect.width + 2\n const transform = getSlideTransform(position)\n\n if (hasOpacity) slideStyle.transform = transform\n\n slideStyle.opacity = roundedOpacity.toString()\n slideStyle.pointerEvents = opacity > 0.5 ? 'auto' : 'none'\n\n if (!hasOpacity) slideStyle.transform = transform\n })\n }\n\n function setProgress(fadeIndex: number, opacity: number): void {\n const { index, dragHandler, scrollSnaps } = emblaApi.internalEngine()\n const pointerDown = dragHandler.pointerDown()\n const snapFraction = 1 / (scrollSnaps.length - 1)\n\n let indexA = fadeIndex\n let indexB = pointerDown\n ? emblaApi.selectedScrollSnap()\n : emblaApi.previousScrollSnap()\n\n if (pointerDown && indexA === indexB) {\n const reverseSign = Math.sign(distanceFromPointerDown) * -1\n indexA = indexB\n indexB = index.clone().set(indexB).add(reverseSign).get()\n }\n\n const currentPosition = indexB * snapFraction\n const diffPosition = (indexA - indexB) * snapFraction\n progress = currentPosition + diffPosition * opacity\n }\n\n function getFadeIndex(): number | null {\n const { dragHandler, index, scrollBody } = emblaApi.internalEngine()\n const selectedSnap = emblaApi.selectedScrollSnap()\n\n if (!dragHandler.pointerDown()) return selectedSnap\n\n const directionSign = Math.sign(scrollBody.velocity())\n const distanceSign = Math.sign(distanceFromPointerDown)\n const nextSnap = index\n .clone()\n .set(selectedSnap)\n .add(directionSign * -1)\n .get()\n\n if (!directionSign || !distanceSign) return null\n return distanceSign === directionSign ? nextSnap : selectedSnap\n }\n\n const fade = (emblaApi: EmblaCarouselType): void => {\n const { dragHandler, scrollBody } = emblaApi.internalEngine()\n const pointerDown = dragHandler.pointerDown()\n const velocity = scrollBody.velocity()\n const duration = scrollBody.duration()\n const fadeIndex = getFadeIndex()\n const noFadeIndex = !isNumber(fadeIndex)\n\n if (pointerDown) {\n if (!velocity) return\n\n distanceFromPointerDown += velocity\n fadeVelocity = Math.abs(velocity / fadeToNextDistance)\n lockExcessiveScroll(fadeIndex)\n }\n\n if (!pointerDown) {\n if (!duration || noFadeIndex) return\n\n fadeVelocity += (fullOpacity - opacities[fadeIndex]) / duration\n fadeVelocity *= fadeFriction\n }\n\n if (noFadeIndex) return\n setOpacities(fadeIndex, fadeVelocity)\n }\n\n function settled(): boolean {\n const { target, location } = emblaApi.internalEngine()\n const diffToTarget = target.get() - location.get()\n const notReachedTarget = Math.abs(diffToTarget) >= 1\n const fadeIndex = getFadeIndex()\n const noFadeIndex = !isNumber(fadeIndex)\n\n fade(emblaApi)\n\n if (noFadeIndex || notReachedTarget) return false\n return opacities[fadeIndex] > 0.999\n }\n\n function scrollProgress(): number {\n return progress\n }\n\n const self: FadeType = {\n name: 'fade',\n options: userOptions,\n init,\n destroy\n }\n return self\n}\n\nFade.globalOptions = undefined\n\nexport default Fade\n","import React from 'react'\nimport { EmblaOptionsType } from 'embla-carousel'\nimport useEmblaCarousel from 'embla-carousel-react'\nimport Fade from 'embla-carousel-fade'\nimport {\n NextButton,\n PrevButton,\n usePrevNextButtons\n} from '../EmblaCarouselArrowButtons'\nimport { DotButton, useDotButton } from '../EmblaCarouselDotButton'\nimport { sandboxImages } from 'components/Sandbox/sandboxImages'\n\ntype PropType = {\n slides: number[]\n options?: EmblaOptionsType\n}\n\nconst EmblaCarousel: React.FC = (props) => {\n const { slides, options } = props\n const [emblaRef, emblaApi] = useEmblaCarousel(options, [Fade()])\n\n const { selectedIndex, scrollSnaps, onDotButtonClick } =\n useDotButton(emblaApi)\n\n const {\n prevBtnDisabled,\n nextBtnDisabled,\n onPrevButtonClick,\n onNextButtonClick\n } = usePrevNextButtons(emblaApi)\n\n return (\n
\n
\n
\n {slides.map((index) => (\n
\n \n
\n ))}\n
\n
\n\n
\n
\n \n \n
\n\n
\n {scrollSnaps.map((_, index) => (\n onDotButtonClick(index)}\n className={'embla__dot'.concat(\n index === selectedIndex ? ' embla__dot--selected' : ''\n )}\n />\n ))}\n
\n
\n
\n )\n}\n\nexport default EmblaCarousel\n","import image1 from 'assets/images/slide-1.jpg'\nimport image2 from 'assets/images/slide-2.jpg'\nimport image3 from 'assets/images/slide-3.jpg'\nimport image4 from 'assets/images/slide-4.jpg'\nimport image5 from 'assets/images/slide-5.jpg'\n\nconst sandboxImageList: string[] = [image1, image2, image3, image4, image5]\n\nexport const sandboxImages = (index: number): string =>\n sandboxImageList[index % sandboxImageList.length]\n","export default __webpack_public_path__ + \"static/slide-1-47ed6052f4455272d8f76db16447d760.jpg\";","export default __webpack_public_path__ + \"static/slide-2-dc15cfe63eb4aeb8c9c09823179ee64c.jpg\";","export default __webpack_public_path__ + \"static/slide-3-6362505742d23d7cd240880140151a95.jpg\";","export default __webpack_public_path__ + \"static/slide-4-ebad84cfea5ff9481504ded363c22003.jpg\";","export default __webpack_public_path__ + \"static/slide-5-2d88e98502aa565d6269834d7a7be406.jpg\";"],"names":["useDotButton","emblaApi","onButtonClick","selectedIndex","setSelectedIndex","useState","scrollSnaps","setScrollSnaps","onDotButtonClick","useCallback","index","scrollTo","onInit","scrollSnapList","onSelect","selectedScrollSnap","useEffect","on","DotButton","props","children","restProps","React","Object","assign","type","clampNumber","number","min","max","Math","isNumber","value","isNaN","Fade","userOptions","fullOpacity","noOpacity","fadeToNextDistance","defaultSettledBehaviour","defaultProgressBehaviour","opacities","distanceFromPointerDown","fadeVelocity","progress","shouldFadePair","fadeToSelectedSnapInstantly","setOpacities","pointerUp","pointerDown","select","duration","internalEngine","scrollBody","lockExcessiveScroll","fadeIndex","location","target","set","velocity","forEach","_","indexA","absVelocity","abs","currentOpacity","isFadeIndex","clampedOpacity","fadePair","indexB","previousScrollSnap","opacity","dragHandler","snapFraction","length","reverseSign","sign","clone","add","get","currentPosition","diffPosition","setProgress","slidesInSnap","slideRegistry","containerRect","slideIndex","slideStyle","slideNodes","style","roundedOpacity","parseFloat","toFixed","hasOpacity","transform","position","axis","scroll","toUpperCase","direction","getSlideTransform","width","toString","pointerEvents","setOpacity","getFadeIndex","selectedSnap","directionSign","distanceSign","nextSnap","fade","noFadeIndex","settled","diffToTarget","notReachedTarget","scrollProgress","name","options","init","emblaApiInstance","containerSize","measureSize","map","translate","slideLooper","clear","toggleActive","loopPoints","_ref","disableScroll","destroy","off","slideNode","getAttribute","removeAttribute","globalOptions","undefined","slides","emblaRef","useEmblaCarousel","prevBtnDisabled","nextBtnDisabled","onPrevButtonClick","onNextButtonClick","usePrevNextButtons","className","ref","key","src","sandboxImages","alt","PrevButton","onClick","disabled","NextButton","concat","sandboxImageList"],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"5029-dd4e8cbcb7c1a56f94c7.js","mappings":"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","sources":["webpack://embla-carousel-docs/./src/components/Sandbox/React/SandboxFilesSrc/EmblaCarouselDotButton.tsx","webpack://embla-carousel-docs/../src/components/utils.ts","webpack://embla-carousel-docs/../src/components/Fade.ts","webpack://embla-carousel-docs/./src/components/Sandbox/React/SandboxFilesSrc/Fade/EmblaCarousel.tsx","webpack://embla-carousel-docs/./src/components/Sandbox/sandboxImages.ts","webpack://embla-carousel-docs/./src/assets/images/slide-1.jpg","webpack://embla-carousel-docs/./src/assets/images/slide-2.jpg","webpack://embla-carousel-docs/./src/assets/images/slide-3.jpg","webpack://embla-carousel-docs/./src/assets/images/slide-4.jpg","webpack://embla-carousel-docs/./src/assets/images/slide-5.jpg"],"sourcesContent":["import React, {\n ComponentPropsWithRef,\n useCallback,\n useEffect,\n useState\n} from 'react'\nimport { EmblaCarouselType } from 'embla-carousel'\n\ntype UseDotButtonType = {\n selectedIndex: number\n scrollSnaps: number[]\n onDotButtonClick: (index: number) => void\n}\n\nexport const useDotButton = (\n emblaApi: EmblaCarouselType | undefined,\n onButtonClick?: (emblaApi: EmblaCarouselType) => void\n): UseDotButtonType => {\n const [selectedIndex, setSelectedIndex] = useState(0)\n const [scrollSnaps, setScrollSnaps] = useState([])\n\n const onDotButtonClick = useCallback(\n (index: number) => {\n if (!emblaApi) return\n emblaApi.scrollTo(index)\n if (onButtonClick) onButtonClick(emblaApi)\n },\n [emblaApi, onButtonClick]\n )\n\n const onInit = useCallback((emblaApi: EmblaCarouselType) => {\n setScrollSnaps(emblaApi.scrollSnapList())\n }, [])\n\n const onSelect = useCallback((emblaApi: EmblaCarouselType) => {\n setSelectedIndex(emblaApi.selectedScrollSnap())\n }, [])\n\n useEffect(() => {\n if (!emblaApi) return\n\n onInit(emblaApi)\n onSelect(emblaApi)\n\n emblaApi.on('reInit', onInit).on('reInit', onSelect).on('select', onSelect)\n }, [emblaApi, onInit, onSelect])\n\n return {\n selectedIndex,\n scrollSnaps,\n onDotButtonClick\n }\n}\n\ntype PropType = ComponentPropsWithRef<'button'>\n\nexport const DotButton: React.FC = (props) => {\n const { children, ...restProps } = props\n\n return (\n \n )\n}\n","export function clampNumber(number: number, min: number, max: number): number {\n return Math.min(Math.max(number, min), max)\n}\n\nexport function isNumber(value: number | null): value is number {\n return typeof value === 'number' && !isNaN(value)\n}\n","import { OptionsType } from './Options'\nimport { isNumber, clampNumber } from './utils'\nimport {\n CreatePluginType,\n EmblaCarouselType,\n ScrollBodyType\n} from 'embla-carousel'\n\ndeclare module 'embla-carousel' {\n interface EmblaPluginsType {\n fade: FadeType\n }\n}\n\nexport type FadeType = CreatePluginType<{}, OptionsType>\n\nexport type FadeOptionsType = FadeType['options']\n\nfunction Fade(userOptions: FadeOptionsType = {}): FadeType {\n const fullOpacity = 1\n const noOpacity = 0\n const fadeFriction = 0.68\n\n let emblaApi: EmblaCarouselType\n let opacities: number[] = []\n let fadeToNextDistance: number\n let distanceFromPointerDown = 0\n let fadeVelocity = 0\n let progress = 0\n let shouldFadePair = false\n let defaultSettledBehaviour: ScrollBodyType['settled']\n let defaultProgressBehaviour: EmblaCarouselType['scrollProgress']\n\n function init(emblaApiInstance: EmblaCarouselType): void {\n emblaApi = emblaApiInstance\n\n const selectedSnap = emblaApi.selectedScrollSnap()\n const { scrollBody, containerRect, axis } = emblaApi.internalEngine()\n const containerSize = axis.measureSize(containerRect)\n\n fadeToNextDistance = clampNumber(containerSize * 0.75, 200, 500)\n shouldFadePair = false\n\n opacities = emblaApi\n .scrollSnapList()\n .map((_, index) => (index === selectedSnap ? fullOpacity : noOpacity))\n\n defaultSettledBehaviour = scrollBody.settled\n defaultProgressBehaviour = emblaApi.scrollProgress\n\n scrollBody.settled = settled\n emblaApi.scrollProgress = scrollProgress\n\n emblaApi\n .on('select', select)\n .on('slideFocus', fadeToSelectedSnapInstantly)\n .on('pointerDown', pointerDown)\n .on('pointerUp', pointerUp)\n\n disableScroll()\n fadeToSelectedSnapInstantly()\n }\n\n function destroy(): void {\n const { scrollBody } = emblaApi.internalEngine()\n scrollBody.settled = defaultSettledBehaviour\n emblaApi.scrollProgress = defaultProgressBehaviour\n\n emblaApi\n .off('select', select)\n .off('slideFocus', fadeToSelectedSnapInstantly)\n .off('pointerDown', pointerDown)\n .off('pointerUp', pointerUp)\n\n emblaApi.slideNodes().forEach((slideNode) => {\n const slideStyle = slideNode.style\n slideStyle.opacity = ''\n slideStyle.transform = ''\n slideStyle.pointerEvents = ''\n if (!slideNode.getAttribute('style')) slideNode.removeAttribute('style')\n })\n }\n\n function fadeToSelectedSnapInstantly(): void {\n const selectedSnap = emblaApi.selectedScrollSnap()\n setOpacities(selectedSnap, fullOpacity)\n }\n\n function pointerUp(): void {\n shouldFadePair = false\n }\n\n function pointerDown(): void {\n shouldFadePair = false\n distanceFromPointerDown = 0\n fadeVelocity = 0\n }\n\n function select(): void {\n const duration = emblaApi.internalEngine().scrollBody.duration()\n fadeVelocity = duration ? 0 : fullOpacity\n shouldFadePair = true\n if (!duration) fadeToSelectedSnapInstantly()\n }\n\n function getSlideTransform(position: number): string {\n const { axis } = emblaApi.internalEngine()\n const translateAxis = axis.scroll.toUpperCase()\n return `translate${translateAxis}(${axis.direction(position)}px)`\n }\n\n function disableScroll(): void {\n const { translate, slideLooper } = emblaApi.internalEngine()\n\n translate.clear()\n translate.toggleActive(false)\n\n slideLooper.loopPoints.forEach(({ translate }) => {\n translate.clear()\n translate.toggleActive(false)\n })\n }\n\n function lockExcessiveScroll(fadeIndex: number | null): void {\n const { scrollSnaps, location, target } = emblaApi.internalEngine()\n if (!isNumber(fadeIndex) || opacities[fadeIndex] < 0.5) return\n\n location.set(scrollSnaps[fadeIndex])\n target.set(location)\n }\n\n function setOpacities(fadeIndex: number, velocity: number): void {\n const scrollSnaps = emblaApi.scrollSnapList()\n\n scrollSnaps.forEach((_, indexA) => {\n const absVelocity = Math.abs(velocity)\n const currentOpacity = opacities[indexA]\n const isFadeIndex = indexA === fadeIndex\n\n const nextOpacity = isFadeIndex\n ? currentOpacity + absVelocity\n : currentOpacity - absVelocity\n\n const clampedOpacity = clampNumber(nextOpacity, noOpacity, fullOpacity)\n opacities[indexA] = clampedOpacity\n\n const fadePair = isFadeIndex && shouldFadePair\n const indexB = emblaApi.previousScrollSnap()\n\n if (fadePair) opacities[indexB] = 1 - clampedOpacity\n if (isFadeIndex) setProgress(fadeIndex, clampedOpacity)\n\n setOpacity(indexA)\n })\n }\n\n function setOpacity(index: number): void {\n const slidesInSnap = emblaApi.internalEngine().slideRegistry[index]\n const { scrollSnaps, containerRect } = emblaApi.internalEngine()\n const opacity = opacities[index]\n\n slidesInSnap.forEach((slideIndex) => {\n const slideStyle = emblaApi.slideNodes()[slideIndex].style\n const roundedOpacity = parseFloat(opacity.toFixed(2))\n const hasOpacity = roundedOpacity > noOpacity\n const position = hasOpacity ? scrollSnaps[index] : containerRect.width + 2\n const transform = getSlideTransform(position)\n\n if (hasOpacity) slideStyle.transform = transform\n\n slideStyle.opacity = roundedOpacity.toString()\n slideStyle.pointerEvents = opacity > 0.5 ? 'auto' : 'none'\n\n if (!hasOpacity) slideStyle.transform = transform\n })\n }\n\n function setProgress(fadeIndex: number, opacity: number): void {\n const { index, dragHandler, scrollSnaps } = emblaApi.internalEngine()\n const pointerDown = dragHandler.pointerDown()\n const snapFraction = 1 / (scrollSnaps.length - 1)\n\n let indexA = fadeIndex\n let indexB = pointerDown\n ? emblaApi.selectedScrollSnap()\n : emblaApi.previousScrollSnap()\n\n if (pointerDown && indexA === indexB) {\n const reverseSign = Math.sign(distanceFromPointerDown) * -1\n indexA = indexB\n indexB = index.clone().set(indexB).add(reverseSign).get()\n }\n\n const currentPosition = indexB * snapFraction\n const diffPosition = (indexA - indexB) * snapFraction\n progress = currentPosition + diffPosition * opacity\n }\n\n function getFadeIndex(): number | null {\n const { dragHandler, index, scrollBody } = emblaApi.internalEngine()\n const selectedSnap = emblaApi.selectedScrollSnap()\n\n if (!dragHandler.pointerDown()) return selectedSnap\n\n const directionSign = Math.sign(scrollBody.velocity())\n const distanceSign = Math.sign(distanceFromPointerDown)\n const nextSnap = index\n .clone()\n .set(selectedSnap)\n .add(directionSign * -1)\n .get()\n\n if (!directionSign || !distanceSign) return null\n return distanceSign === directionSign ? nextSnap : selectedSnap\n }\n\n const fade = (emblaApi: EmblaCarouselType): void => {\n const { dragHandler, scrollBody } = emblaApi.internalEngine()\n const pointerDown = dragHandler.pointerDown()\n const velocity = scrollBody.velocity()\n const duration = scrollBody.duration()\n const fadeIndex = getFadeIndex()\n const noFadeIndex = !isNumber(fadeIndex)\n\n if (pointerDown) {\n if (!velocity) return\n\n distanceFromPointerDown += velocity\n fadeVelocity = Math.abs(velocity / fadeToNextDistance)\n lockExcessiveScroll(fadeIndex)\n }\n\n if (!pointerDown) {\n if (!duration || noFadeIndex) return\n\n fadeVelocity += (fullOpacity - opacities[fadeIndex]) / duration\n fadeVelocity *= fadeFriction\n }\n\n if (noFadeIndex) return\n setOpacities(fadeIndex, fadeVelocity)\n }\n\n function settled(): boolean {\n const { target, location } = emblaApi.internalEngine()\n const diffToTarget = target.get() - location.get()\n const notReachedTarget = Math.abs(diffToTarget) >= 1\n const fadeIndex = getFadeIndex()\n const noFadeIndex = !isNumber(fadeIndex)\n\n fade(emblaApi)\n\n if (noFadeIndex || notReachedTarget) return false\n return opacities[fadeIndex] > 0.999\n }\n\n function scrollProgress(): number {\n return progress\n }\n\n const self: FadeType = {\n name: 'fade',\n options: userOptions,\n init,\n destroy\n }\n return self\n}\n\ndeclare namespace Fade {\n let globalOptions: FadeOptionsType | undefined\n}\n\nFade.globalOptions = undefined\n\nexport default Fade\n","import React from 'react'\nimport { EmblaOptionsType } from 'embla-carousel'\nimport useEmblaCarousel from 'embla-carousel-react'\nimport Fade from 'embla-carousel-fade'\nimport {\n NextButton,\n PrevButton,\n usePrevNextButtons\n} from '../EmblaCarouselArrowButtons'\nimport { DotButton, useDotButton } from '../EmblaCarouselDotButton'\nimport { sandboxImages } from 'components/Sandbox/sandboxImages'\n\ntype PropType = {\n slides: number[]\n options?: EmblaOptionsType\n}\n\nconst EmblaCarousel: React.FC = (props) => {\n const { slides, options } = props\n const [emblaRef, emblaApi] = useEmblaCarousel(options, [Fade()])\n\n const { selectedIndex, scrollSnaps, onDotButtonClick } =\n useDotButton(emblaApi)\n\n const {\n prevBtnDisabled,\n nextBtnDisabled,\n onPrevButtonClick,\n onNextButtonClick\n } = usePrevNextButtons(emblaApi)\n\n return (\n
\n
\n
\n {slides.map((index) => (\n
\n \n
\n ))}\n
\n
\n\n
\n
\n \n \n
\n\n
\n {scrollSnaps.map((_, index) => (\n onDotButtonClick(index)}\n className={'embla__dot'.concat(\n index === selectedIndex ? ' embla__dot--selected' : ''\n )}\n />\n ))}\n
\n
\n
\n )\n}\n\nexport default EmblaCarousel\n","import image1 from 'assets/images/slide-1.jpg'\nimport image2 from 'assets/images/slide-2.jpg'\nimport image3 from 'assets/images/slide-3.jpg'\nimport image4 from 'assets/images/slide-4.jpg'\nimport image5 from 'assets/images/slide-5.jpg'\n\nconst sandboxImageList: string[] = [image1, image2, image3, image4, image5]\n\nexport const sandboxImages = (index: number): string =>\n sandboxImageList[index % sandboxImageList.length]\n","export default __webpack_public_path__ + \"static/slide-1-47ed6052f4455272d8f76db16447d760.jpg\";","export default __webpack_public_path__ + \"static/slide-2-dc15cfe63eb4aeb8c9c09823179ee64c.jpg\";","export default __webpack_public_path__ + \"static/slide-3-6362505742d23d7cd240880140151a95.jpg\";","export default __webpack_public_path__ + \"static/slide-4-ebad84cfea5ff9481504ded363c22003.jpg\";","export default __webpack_public_path__ + \"static/slide-5-2d88e98502aa565d6269834d7a7be406.jpg\";"],"names":["useDotButton","emblaApi","onButtonClick","selectedIndex","setSelectedIndex","useState","scrollSnaps","setScrollSnaps","onDotButtonClick","useCallback","index","scrollTo","onInit","scrollSnapList","onSelect","selectedScrollSnap","useEffect","on","DotButton","props","children","restProps","React","Object","assign","type","clampNumber","number","min","max","Math","isNumber","value","isNaN","Fade","userOptions","fullOpacity","noOpacity","fadeToNextDistance","defaultSettledBehaviour","defaultProgressBehaviour","opacities","distanceFromPointerDown","fadeVelocity","progress","shouldFadePair","fadeToSelectedSnapInstantly","setOpacities","pointerUp","pointerDown","select","duration","internalEngine","scrollBody","lockExcessiveScroll","fadeIndex","location","target","set","velocity","forEach","_","indexA","absVelocity","abs","currentOpacity","isFadeIndex","clampedOpacity","fadePair","indexB","previousScrollSnap","opacity","dragHandler","snapFraction","length","reverseSign","sign","clone","add","get","currentPosition","diffPosition","setProgress","slidesInSnap","slideRegistry","containerRect","slideIndex","slideStyle","slideNodes","style","roundedOpacity","parseFloat","toFixed","hasOpacity","transform","position","axis","scroll","toUpperCase","direction","getSlideTransform","width","toString","pointerEvents","setOpacity","getFadeIndex","selectedSnap","directionSign","distanceSign","nextSnap","fade","noFadeIndex","settled","diffToTarget","notReachedTarget","scrollProgress","name","options","init","emblaApiInstance","containerSize","measureSize","map","translate","slideLooper","clear","toggleActive","loopPoints","_ref","disableScroll","destroy","off","slideNode","getAttribute","removeAttribute","globalOptions","undefined","slides","emblaRef","useEmblaCarousel","prevBtnDisabled","nextBtnDisabled","onPrevButtonClick","onNextButtonClick","usePrevNextButtons","className","ref","key","src","sandboxImages","alt","PrevButton","onClick","disabled","NextButton","concat","sandboxImageList"],"sourceRoot":""} \ No newline at end of file diff --git a/docs/5207-7ae280f6579479863a16.js b/docs/5207-7ae280f6579479863a16.js deleted file mode 100644 index fc1d543fc..000000000 --- a/docs/5207-7ae280f6579479863a16.js +++ /dev/null @@ -1,2 +0,0 @@ -"use strict";(self.webpackChunkembla_carousel_docs=self.webpackChunkembla_carousel_docs||[]).push([[5207],{5207:function(n,e,t){t.r(e),e.default="import React, {\n PropsWithChildren,\n useCallback,\n useEffect,\n useState\n} from 'react'\nimport { EmblaCarouselType } from 'embla-carousel'\n\ntype UseDotButtonType = {\n selectedIndex: number\n scrollSnaps: number[]\n onDotButtonClick: (index: number) => void\n}\n\nexport const useDotButton = (\n emblaApi: EmblaCarouselType | undefined,\n onButtonClick?: (emblaApi: EmblaCarouselType) => void\n): UseDotButtonType => {\n const [selectedIndex, setSelectedIndex] = useState(0)\n const [scrollSnaps, setScrollSnaps] = useState([])\n\n const onDotButtonClick = useCallback(\n (index: number) => {\n if (!emblaApi) return\n emblaApi.scrollTo(index)\n if (onButtonClick) onButtonClick(emblaApi)\n },\n [emblaApi, onButtonClick]\n )\n\n const onInit = useCallback((emblaApi: EmblaCarouselType) => {\n setScrollSnaps(emblaApi.scrollSnapList())\n }, [])\n\n const onSelect = useCallback((emblaApi: EmblaCarouselType) => {\n setSelectedIndex(emblaApi.selectedScrollSnap())\n }, [])\n\n useEffect(() => {\n if (!emblaApi) return\n\n onInit(emblaApi)\n onSelect(emblaApi)\n\n emblaApi.on('reInit', onInit).on('reInit', onSelect).on('select', onSelect)\n }, [emblaApi, onInit, onSelect])\n\n return {\n selectedIndex,\n scrollSnaps,\n onDotButtonClick\n }\n}\n\ntype PropType = PropsWithChildren<\n React.DetailedHTMLProps<\n React.ButtonHTMLAttributes,\n HTMLButtonElement\n >\n>\n\nexport const DotButton: React.FC = (props) => {\n const { children, ...restProps } = props\n\n return (\n \n )\n}\n"}}]); -//# sourceMappingURL=5207-7ae280f6579479863a16.js.map \ No newline at end of file diff --git a/docs/5207-7ae280f6579479863a16.js.map b/docs/5207-7ae280f6579479863a16.js.map deleted file mode 100644 index 935919b95..000000000 --- a/docs/5207-7ae280f6579479863a16.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"5207-7ae280f6579479863a16.js","mappings":"uIAAA,sqD","sources":["webpack://embla-carousel-docs/./src/components/Sandbox/React/SandboxFilesDist/EmblaCarouselDotButton.tsx"],"sourcesContent":["export default \"import React, {\\n PropsWithChildren,\\n useCallback,\\n useEffect,\\n useState\\n} from 'react'\\nimport { EmblaCarouselType } from 'embla-carousel'\\n\\ntype UseDotButtonType = {\\n selectedIndex: number\\n scrollSnaps: number[]\\n onDotButtonClick: (index: number) => void\\n}\\n\\nexport const useDotButton = (\\n emblaApi: EmblaCarouselType | undefined,\\n onButtonClick?: (emblaApi: EmblaCarouselType) => void\\n): UseDotButtonType => {\\n const [selectedIndex, setSelectedIndex] = useState(0)\\n const [scrollSnaps, setScrollSnaps] = useState([])\\n\\n const onDotButtonClick = useCallback(\\n (index: number) => {\\n if (!emblaApi) return\\n emblaApi.scrollTo(index)\\n if (onButtonClick) onButtonClick(emblaApi)\\n },\\n [emblaApi, onButtonClick]\\n )\\n\\n const onInit = useCallback((emblaApi: EmblaCarouselType) => {\\n setScrollSnaps(emblaApi.scrollSnapList())\\n }, [])\\n\\n const onSelect = useCallback((emblaApi: EmblaCarouselType) => {\\n setSelectedIndex(emblaApi.selectedScrollSnap())\\n }, [])\\n\\n useEffect(() => {\\n if (!emblaApi) return\\n\\n onInit(emblaApi)\\n onSelect(emblaApi)\\n\\n emblaApi.on('reInit', onInit).on('reInit', onSelect).on('select', onSelect)\\n }, [emblaApi, onInit, onSelect])\\n\\n return {\\n selectedIndex,\\n scrollSnaps,\\n onDotButtonClick\\n }\\n}\\n\\ntype PropType = PropsWithChildren<\\n React.DetailedHTMLProps<\\n React.ButtonHTMLAttributes,\\n HTMLButtonElement\\n >\\n>\\n\\nexport const DotButton: React.FC = (props) => {\\n const { children, ...restProps } = props\\n\\n return (\\n \\n )\\n}\\n\";"],"names":[],"sourceRoot":""} \ No newline at end of file diff --git a/docs/5207-8aabd340fa230756fb59.js b/docs/5207-8aabd340fa230756fb59.js new file mode 100644 index 000000000..03ab8eef4 --- /dev/null +++ b/docs/5207-8aabd340fa230756fb59.js @@ -0,0 +1,2 @@ +"use strict";(self.webpackChunkembla_carousel_docs=self.webpackChunkembla_carousel_docs||[]).push([[5207],{5207:function(n,e,t){t.r(e),e.default="import React, {\n ComponentPropsWithRef,\n useCallback,\n useEffect,\n useState\n} from 'react'\nimport { EmblaCarouselType } from 'embla-carousel'\n\ntype UseDotButtonType = {\n selectedIndex: number\n scrollSnaps: number[]\n onDotButtonClick: (index: number) => void\n}\n\nexport const useDotButton = (\n emblaApi: EmblaCarouselType | undefined,\n onButtonClick?: (emblaApi: EmblaCarouselType) => void\n): UseDotButtonType => {\n const [selectedIndex, setSelectedIndex] = useState(0)\n const [scrollSnaps, setScrollSnaps] = useState([])\n\n const onDotButtonClick = useCallback(\n (index: number) => {\n if (!emblaApi) return\n emblaApi.scrollTo(index)\n if (onButtonClick) onButtonClick(emblaApi)\n },\n [emblaApi, onButtonClick]\n )\n\n const onInit = useCallback((emblaApi: EmblaCarouselType) => {\n setScrollSnaps(emblaApi.scrollSnapList())\n }, [])\n\n const onSelect = useCallback((emblaApi: EmblaCarouselType) => {\n setSelectedIndex(emblaApi.selectedScrollSnap())\n }, [])\n\n useEffect(() => {\n if (!emblaApi) return\n\n onInit(emblaApi)\n onSelect(emblaApi)\n\n emblaApi.on('reInit', onInit).on('reInit', onSelect).on('select', onSelect)\n }, [emblaApi, onInit, onSelect])\n\n return {\n selectedIndex,\n scrollSnaps,\n onDotButtonClick\n }\n}\n\ntype PropType = ComponentPropsWithRef<'button'>\n\nexport const DotButton: React.FC = (props) => {\n const { children, ...restProps } = props\n\n return (\n \n )\n}\n"}}]); +//# sourceMappingURL=5207-8aabd340fa230756fb59.js.map \ No newline at end of file diff --git a/docs/5207-8aabd340fa230756fb59.js.map b/docs/5207-8aabd340fa230756fb59.js.map new file mode 100644 index 000000000..5d82c7a30 --- /dev/null +++ b/docs/5207-8aabd340fa230756fb59.js.map @@ -0,0 +1 @@ +{"version":3,"file":"5207-8aabd340fa230756fb59.js","mappings":"uIAAA,wkD","sources":["webpack://embla-carousel-docs/./src/components/Sandbox/React/SandboxFilesDist/EmblaCarouselDotButton.tsx"],"sourcesContent":["export default \"import React, {\\n ComponentPropsWithRef,\\n useCallback,\\n useEffect,\\n useState\\n} from 'react'\\nimport { EmblaCarouselType } from 'embla-carousel'\\n\\ntype UseDotButtonType = {\\n selectedIndex: number\\n scrollSnaps: number[]\\n onDotButtonClick: (index: number) => void\\n}\\n\\nexport const useDotButton = (\\n emblaApi: EmblaCarouselType | undefined,\\n onButtonClick?: (emblaApi: EmblaCarouselType) => void\\n): UseDotButtonType => {\\n const [selectedIndex, setSelectedIndex] = useState(0)\\n const [scrollSnaps, setScrollSnaps] = useState([])\\n\\n const onDotButtonClick = useCallback(\\n (index: number) => {\\n if (!emblaApi) return\\n emblaApi.scrollTo(index)\\n if (onButtonClick) onButtonClick(emblaApi)\\n },\\n [emblaApi, onButtonClick]\\n )\\n\\n const onInit = useCallback((emblaApi: EmblaCarouselType) => {\\n setScrollSnaps(emblaApi.scrollSnapList())\\n }, [])\\n\\n const onSelect = useCallback((emblaApi: EmblaCarouselType) => {\\n setSelectedIndex(emblaApi.selectedScrollSnap())\\n }, [])\\n\\n useEffect(() => {\\n if (!emblaApi) return\\n\\n onInit(emblaApi)\\n onSelect(emblaApi)\\n\\n emblaApi.on('reInit', onInit).on('reInit', onSelect).on('select', onSelect)\\n }, [emblaApi, onInit, onSelect])\\n\\n return {\\n selectedIndex,\\n scrollSnaps,\\n onDotButtonClick\\n }\\n}\\n\\ntype PropType = ComponentPropsWithRef<'button'>\\n\\nexport const DotButton: React.FC = (props) => {\\n const { children, ...restProps } = props\\n\\n return (\\n \\n )\\n}\\n\";"],"names":[],"sourceRoot":""} \ No newline at end of file diff --git a/docs/6013-48de808721c06836b310.js b/docs/6013-c4aab2318461e798c029.js similarity index 91% rename from docs/6013-48de808721c06836b310.js rename to docs/6013-c4aab2318461e798c029.js index 9713d1842..4f9e2bcdb 100644 --- a/docs/6013-48de808721c06836b310.js +++ b/docs/6013-c4aab2318461e798c029.js @@ -1,2 +1,2 @@ -"use strict";(self.webpackChunkembla_carousel_docs=self.webpackChunkembla_carousel_docs||[]).push([[6013],{8394:function(e,n,a){a.r(n),n.default="import React, { useCallback, useEffect, useState } from 'react'\nimport { EmblaCarouselType } from 'embla-carousel'\n\ntype UseSelectedSnapDisplayType = {\n selectedSnap: number\n snapCount: number\n}\n\nexport const useSelectedSnapDisplay = (\n emblaApi: EmblaCarouselType | undefined\n): UseSelectedSnapDisplayType => {\n const [selectedSnap, setSelectedSnap] = useState(0)\n const [snapCount, setSnapCount] = useState(0)\n\n const updateScrollSnapState = useCallback((emblaApi: EmblaCarouselType) => {\n setSnapCount(emblaApi.scrollSnapList().length)\n setSelectedSnap(emblaApi.selectedScrollSnap())\n }, [])\n\n useEffect(() => {\n if (!emblaApi) return\n\n updateScrollSnapState(emblaApi)\n emblaApi.on('select', updateScrollSnapState)\n emblaApi.on('reInit', updateScrollSnapState)\n }, [emblaApi, updateScrollSnapState])\n\n return {\n selectedSnap,\n snapCount\n }\n}\n\ntype PropType = {\n selectedSnap: number\n snapCount: number\n}\n\nexport const SelectedSnapDisplay: React.FC = (props) => {\n const { selectedSnap, snapCount } = props\n\n return (\n
\n {selectedSnap + 1} / {snapCount}\n
\n )\n}\n"}}]); -//# sourceMappingURL=6013-48de808721c06836b310.js.map \ No newline at end of file +"use strict";(self.webpackChunkembla_carousel_docs=self.webpackChunkembla_carousel_docs||[]).push([[6013],{6013:function(e,n,a){a.r(n),n.default="import React, { useCallback, useEffect, useState } from 'react'\nimport { EmblaCarouselType } from 'embla-carousel'\n\ntype UseSelectedSnapDisplayType = {\n selectedSnap: number\n snapCount: number\n}\n\nexport const useSelectedSnapDisplay = (\n emblaApi: EmblaCarouselType | undefined\n): UseSelectedSnapDisplayType => {\n const [selectedSnap, setSelectedSnap] = useState(0)\n const [snapCount, setSnapCount] = useState(0)\n\n const updateScrollSnapState = useCallback((emblaApi: EmblaCarouselType) => {\n setSnapCount(emblaApi.scrollSnapList().length)\n setSelectedSnap(emblaApi.selectedScrollSnap())\n }, [])\n\n useEffect(() => {\n if (!emblaApi) return\n\n updateScrollSnapState(emblaApi)\n emblaApi.on('select', updateScrollSnapState)\n emblaApi.on('reInit', updateScrollSnapState)\n }, [emblaApi, updateScrollSnapState])\n\n return {\n selectedSnap,\n snapCount\n }\n}\n\ntype PropType = {\n selectedSnap: number\n snapCount: number\n}\n\nexport const SelectedSnapDisplay: React.FC = (props) => {\n const { selectedSnap, snapCount } = props\n\n return (\n
\n {selectedSnap + 1} / {snapCount}\n
\n )\n}\n"}}]); +//# sourceMappingURL=6013-c4aab2318461e798c029.js.map \ No newline at end of file diff --git a/docs/6013-48de808721c06836b310.js.map b/docs/6013-c4aab2318461e798c029.js.map similarity index 95% rename from docs/6013-48de808721c06836b310.js.map rename to docs/6013-c4aab2318461e798c029.js.map index f64005cfb..c0ba39fbe 100644 --- a/docs/6013-48de808721c06836b310.js.map +++ b/docs/6013-c4aab2318461e798c029.js.map @@ -1 +1 @@ -{"version":3,"file":"6013-48de808721c06836b310.js","mappings":"uIAAA,qtC","sources":["webpack://embla-carousel-docs/./src/components/Sandbox/React/SandboxFilesDist/EmblaCarouselSelectedSnapDisplay.tsx"],"sourcesContent":["export default \"import React, { useCallback, useEffect, useState } from 'react'\\nimport { EmblaCarouselType } from 'embla-carousel'\\n\\ntype UseSelectedSnapDisplayType = {\\n selectedSnap: number\\n snapCount: number\\n}\\n\\nexport const useSelectedSnapDisplay = (\\n emblaApi: EmblaCarouselType | undefined\\n): UseSelectedSnapDisplayType => {\\n const [selectedSnap, setSelectedSnap] = useState(0)\\n const [snapCount, setSnapCount] = useState(0)\\n\\n const updateScrollSnapState = useCallback((emblaApi: EmblaCarouselType) => {\\n setSnapCount(emblaApi.scrollSnapList().length)\\n setSelectedSnap(emblaApi.selectedScrollSnap())\\n }, [])\\n\\n useEffect(() => {\\n if (!emblaApi) return\\n\\n updateScrollSnapState(emblaApi)\\n emblaApi.on('select', updateScrollSnapState)\\n emblaApi.on('reInit', updateScrollSnapState)\\n }, [emblaApi, updateScrollSnapState])\\n\\n return {\\n selectedSnap,\\n snapCount\\n }\\n}\\n\\ntype PropType = {\\n selectedSnap: number\\n snapCount: number\\n}\\n\\nexport const SelectedSnapDisplay: React.FC = (props) => {\\n const { selectedSnap, snapCount } = props\\n\\n return (\\n
\\n {selectedSnap + 1} / {snapCount}\\n
\\n )\\n}\\n\";"],"names":[],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"6013-c4aab2318461e798c029.js","mappings":"uIAAA,qtC","sources":["webpack://embla-carousel-docs/./src/components/Sandbox/React/SandboxFilesDist/EmblaCarouselSelectedSnapDisplay.tsx"],"sourcesContent":["export default \"import React, { useCallback, useEffect, useState } from 'react'\\nimport { EmblaCarouselType } from 'embla-carousel'\\n\\ntype UseSelectedSnapDisplayType = {\\n selectedSnap: number\\n snapCount: number\\n}\\n\\nexport const useSelectedSnapDisplay = (\\n emblaApi: EmblaCarouselType | undefined\\n): UseSelectedSnapDisplayType => {\\n const [selectedSnap, setSelectedSnap] = useState(0)\\n const [snapCount, setSnapCount] = useState(0)\\n\\n const updateScrollSnapState = useCallback((emblaApi: EmblaCarouselType) => {\\n setSnapCount(emblaApi.scrollSnapList().length)\\n setSelectedSnap(emblaApi.selectedScrollSnap())\\n }, [])\\n\\n useEffect(() => {\\n if (!emblaApi) return\\n\\n updateScrollSnapState(emblaApi)\\n emblaApi.on('select', updateScrollSnapState)\\n emblaApi.on('reInit', updateScrollSnapState)\\n }, [emblaApi, updateScrollSnapState])\\n\\n return {\\n selectedSnap,\\n snapCount\\n }\\n}\\n\\ntype PropType = {\\n selectedSnap: number\\n snapCount: number\\n}\\n\\nexport const SelectedSnapDisplay: React.FC = (props) => {\\n const { selectedSnap, snapCount } = props\\n\\n return (\\n
\\n {selectedSnap + 1} / {snapCount}\\n
\\n )\\n}\\n\";"],"names":[],"sourceRoot":""} \ No newline at end of file diff --git a/docs/6128-8063df41eda37f34a01a.js.map b/docs/6128-8063df41eda37f34a01a.js.map index a9a7a6fc8..a497459d9 100644 --- a/docs/6128-8063df41eda37f34a01a.js.map +++ b/docs/6128-8063df41eda37f34a01a.js.map @@ -1 +1 @@ -{"version":3,"file":"6128-8063df41eda37f34a01a.js","mappings":"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","sources":["webpack://embla-carousel-docs/./src/components/Sandbox/React/SandboxFilesSrc/ClassNames/EmblaCarousel.tsx","webpack://embla-carousel-docs/./src/components/Sandbox/React/SandboxFilesSrc/EmblaCarouselDotButton.tsx","webpack://embla-carousel-docs/./src/components/Sandbox/sandboxImages.ts","webpack://embla-carousel-docs/./src/assets/images/slide-1.jpg","webpack://embla-carousel-docs/./src/assets/images/slide-2.jpg","webpack://embla-carousel-docs/./src/assets/images/slide-3.jpg","webpack://embla-carousel-docs/./src/assets/images/slide-4.jpg","webpack://embla-carousel-docs/./src/assets/images/slide-5.jpg","webpack://embla-carousel-docs/../src/components/Options.ts","webpack://embla-carousel-docs/../src/components/utils.ts","webpack://embla-carousel-docs/../src/components/ClassNames.ts"],"sourcesContent":["import React from 'react'\nimport { EmblaOptionsType } from 'embla-carousel'\nimport useEmblaCarousel from 'embla-carousel-react'\nimport ClassNames from 'embla-carousel-class-names'\nimport {\n NextButton,\n PrevButton,\n usePrevNextButtons\n} from '../EmblaCarouselArrowButtons'\nimport { DotButton, useDotButton } from '../EmblaCarouselDotButton'\nimport { sandboxImages } from 'components/Sandbox/sandboxImages'\n\ntype PropType = {\n slides: number[]\n options?: EmblaOptionsType\n}\n\nconst EmblaCarousel: React.FC = (props) => {\n const { slides, options } = props\n const [emblaRef, emblaApi] = useEmblaCarousel(options, [ClassNames()])\n\n const { selectedIndex, scrollSnaps, onDotButtonClick } =\n useDotButton(emblaApi)\n\n const {\n prevBtnDisabled,\n nextBtnDisabled,\n onPrevButtonClick,\n onNextButtonClick\n } = usePrevNextButtons(emblaApi)\n\n return (\n
\n
\n
\n {slides.map((index) => (\n
\n \n
\n ))}\n
\n
\n\n
\n
\n \n \n
\n\n
\n {scrollSnaps.map((_, index) => (\n onDotButtonClick(index)}\n className={'embla__dot'.concat(\n index === selectedIndex ? ' embla__dot--selected' : ''\n )}\n />\n ))}\n
\n
\n
\n )\n}\n\nexport default EmblaCarousel\n","import React, {\n PropsWithChildren,\n useCallback,\n useEffect,\n useState\n} from 'react'\nimport { EmblaCarouselType } from 'embla-carousel'\n\ntype UseDotButtonType = {\n selectedIndex: number\n scrollSnaps: number[]\n onDotButtonClick: (index: number) => void\n}\n\nexport const useDotButton = (\n emblaApi: EmblaCarouselType | undefined,\n onButtonClick?: (emblaApi: EmblaCarouselType) => void\n): UseDotButtonType => {\n const [selectedIndex, setSelectedIndex] = useState(0)\n const [scrollSnaps, setScrollSnaps] = useState([])\n\n const onDotButtonClick = useCallback(\n (index: number) => {\n if (!emblaApi) return\n emblaApi.scrollTo(index)\n if (onButtonClick) onButtonClick(emblaApi)\n },\n [emblaApi, onButtonClick]\n )\n\n const onInit = useCallback((emblaApi: EmblaCarouselType) => {\n setScrollSnaps(emblaApi.scrollSnapList())\n }, [])\n\n const onSelect = useCallback((emblaApi: EmblaCarouselType) => {\n setSelectedIndex(emblaApi.selectedScrollSnap())\n }, [])\n\n useEffect(() => {\n if (!emblaApi) return\n\n onInit(emblaApi)\n onSelect(emblaApi)\n\n emblaApi.on('reInit', onInit).on('reInit', onSelect).on('select', onSelect)\n }, [emblaApi, onInit, onSelect])\n\n return {\n selectedIndex,\n scrollSnaps,\n onDotButtonClick\n }\n}\n\ntype PropType = PropsWithChildren<\n React.DetailedHTMLProps<\n React.ButtonHTMLAttributes,\n HTMLButtonElement\n >\n>\n\nexport const DotButton: React.FC = (props) => {\n const { children, ...restProps } = props\n\n return (\n \n )\n}\n","import image1 from 'assets/images/slide-1.jpg'\nimport image2 from 'assets/images/slide-2.jpg'\nimport image3 from 'assets/images/slide-3.jpg'\nimport image4 from 'assets/images/slide-4.jpg'\nimport image5 from 'assets/images/slide-5.jpg'\n\nconst sandboxImageList: string[] = [image1, image2, image3, image4, image5]\n\nexport const sandboxImages = (index: number): string =>\n sandboxImageList[index % sandboxImageList.length]\n","export default __webpack_public_path__ + \"static/slide-1-47ed6052f4455272d8f76db16447d760.jpg\";","export default __webpack_public_path__ + \"static/slide-2-dc15cfe63eb4aeb8c9c09823179ee64c.jpg\";","export default __webpack_public_path__ + \"static/slide-3-6362505742d23d7cd240880140151a95.jpg\";","export default __webpack_public_path__ + \"static/slide-4-ebad84cfea5ff9481504ded363c22003.jpg\";","export default __webpack_public_path__ + \"static/slide-5-2d88e98502aa565d6269834d7a7be406.jpg\";","import { CreateOptionsType } from 'embla-carousel/components/Options'\n\nexport type OptionsType = CreateOptionsType<{\n snapped: string\n inView: string\n draggable: string\n dragging: string\n}>\n\nexport const defaultOptions: OptionsType = {\n active: true,\n breakpoints: {},\n snapped: 'is-snapped',\n inView: 'is-in-view',\n draggable: 'is-draggable',\n dragging: 'is-dragging'\n}\n","export function removeClass(node: HTMLElement, className: string): void {\n if (!node || !className) return\n const { classList } = node\n if (classList.contains(className)) classList.remove(className)\n}\n\nexport function addClass(node: HTMLElement, className: string): void {\n if (!node || !className) return\n const { classList } = node\n if (!classList.contains(className)) classList.add(className)\n}\n\nexport function nodeListToArray(nodeList: NodeListOf): HTMLElement[] {\n return Array.from(nodeList)\n}\n","import { defaultOptions, OptionsType } from './Options'\nimport { nodeListToArray, addClass, removeClass } from './utils'\nimport { CreatePluginType } from 'embla-carousel/components/Plugins'\nimport { EmblaCarouselType, EmblaEventType } from 'embla-carousel'\nimport { OptionsHandlerType } from 'embla-carousel/components/OptionsHandler'\n\ndeclare module 'embla-carousel/components/Plugins' {\n interface EmblaPluginsType {\n classNames?: ClassNamesType\n }\n}\n\nexport type ClassNamesType = CreatePluginType<{}, OptionsType>\n\nexport type ClassNamesOptionsType = ClassNamesType['options']\n\nfunction ClassNames(userOptions: ClassNamesOptionsType = {}): ClassNamesType {\n let options: OptionsType\n let emblaApi: EmblaCarouselType\n let root: HTMLElement\n let slides: HTMLElement[]\n const selectedEvents: EmblaEventType[] = ['select']\n const draggingEvents: EmblaEventType[] = ['pointerDown', 'pointerUp']\n const inViewEvents: EmblaEventType[] = ['slidesInView']\n\n function init(\n emblaApiInstance: EmblaCarouselType,\n optionsHandler: OptionsHandlerType\n ): void {\n emblaApi = emblaApiInstance\n\n const { mergeOptions, optionsAtMedia } = optionsHandler\n const optionsBase = mergeOptions(defaultOptions, ClassNames.globalOptions)\n const allOptions = mergeOptions(optionsBase, userOptions)\n options = optionsAtMedia(allOptions)\n\n root = emblaApi.rootNode()\n slides = emblaApi.slideNodes()\n const isDraggable = !!emblaApi.internalEngine().options.watchDrag\n\n if (isDraggable) {\n addClass(root, options.draggable)\n }\n if (options.dragging) {\n draggingEvents.forEach((evt) => emblaApi.on(evt, toggleDraggingClass))\n }\n if (options.snapped) {\n selectedEvents.forEach((evt) => emblaApi.on(evt, toggleSnappedClasses))\n toggleSnappedClasses()\n }\n if (options.inView) {\n inViewEvents.forEach((evt) => emblaApi.on(evt, toggleInViewClasses))\n toggleInViewClasses()\n }\n }\n\n function destroy(): void {\n removeClass(root, options.draggable)\n draggingEvents.forEach((evt) => emblaApi.off(evt, toggleDraggingClass))\n selectedEvents.forEach((evt) => emblaApi.off(evt, toggleSnappedClasses))\n inViewEvents.forEach((evt) => emblaApi.off(evt, toggleInViewClasses))\n slides.forEach((slide) => removeClass(slide, options.snapped))\n }\n\n function toggleDraggingClass(\n _: EmblaCarouselType,\n evt: EmblaEventType\n ): void {\n if (evt === 'pointerDown') addClass(root, options.dragging)\n else removeClass(root, options.dragging)\n }\n\n function toggleSlideClasses(slideIndexes: number[], className: string): void {\n const container = emblaApi.containerNode()\n const slideNodeList = container.querySelectorAll(`.${className}`)\n const removeClassSlides = nodeListToArray(slideNodeList)\n\n removeClassSlides.forEach((slide) => removeClass(slide, className))\n slideIndexes.forEach((index) => addClass(slides[index], className))\n }\n\n function toggleSnappedClasses(): void {\n const { slideRegistry } = emblaApi.internalEngine()\n const slideIndexes = slideRegistry[emblaApi.selectedScrollSnap()]\n toggleSlideClasses(slideIndexes, options.snapped)\n }\n\n function toggleInViewClasses(): void {\n const slideIndexes = emblaApi.slidesInView()\n toggleSlideClasses(slideIndexes, options.inView)\n }\n\n const self: ClassNamesType = {\n name: 'classNames',\n options: userOptions,\n init,\n destroy\n }\n return self\n}\n\nClassNames.globalOptions = undefined\n\nexport default ClassNames\n"],"names":["props","slides","options","emblaRef","emblaApi","useEmblaCarousel","ClassNames","selectedIndex","scrollSnaps","onDotButtonClick","useDotButton","prevBtnDisabled","nextBtnDisabled","onPrevButtonClick","onNextButtonClick","usePrevNextButtons","React","className","ref","map","index","key","src","sandboxImages","alt","PrevButton","onClick","disabled","NextButton","_","DotButton","concat","onButtonClick","setSelectedIndex","useState","setScrollSnaps","useCallback","scrollTo","onInit","scrollSnapList","onSelect","selectedScrollSnap","useEffect","on","children","restProps","Object","assign","type","sandboxImageList","length","defaultOptions","active","breakpoints","snapped","inView","draggable","dragging","removeClass","node","classList","contains","remove","addClass","add","userOptions","root","selectedEvents","draggingEvents","inViewEvents","toggleDraggingClass","evt","toggleSlideClasses","slideIndexes","slideNodeList","containerNode","querySelectorAll","nodeList","Array","from","forEach","slide","toggleSnappedClasses","slideRegistry","internalEngine","toggleInViewClasses","slidesInView","name","init","emblaApiInstance","optionsHandler","mergeOptions","optionsAtMedia","optionsBase","globalOptions","allOptions","rootNode","slideNodes","watchDrag","destroy","off","undefined"],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"6128-8063df41eda37f34a01a.js","mappings":"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","sources":["webpack://embla-carousel-docs/./src/components/Sandbox/React/SandboxFilesSrc/ClassNames/EmblaCarousel.tsx","webpack://embla-carousel-docs/./src/components/Sandbox/React/SandboxFilesSrc/EmblaCarouselDotButton.tsx","webpack://embla-carousel-docs/./src/components/Sandbox/sandboxImages.ts","webpack://embla-carousel-docs/./src/assets/images/slide-1.jpg","webpack://embla-carousel-docs/./src/assets/images/slide-2.jpg","webpack://embla-carousel-docs/./src/assets/images/slide-3.jpg","webpack://embla-carousel-docs/./src/assets/images/slide-4.jpg","webpack://embla-carousel-docs/./src/assets/images/slide-5.jpg","webpack://embla-carousel-docs/../src/components/Options.ts","webpack://embla-carousel-docs/../src/components/utils.ts","webpack://embla-carousel-docs/../src/components/ClassNames.ts"],"sourcesContent":["import React from 'react'\nimport { EmblaOptionsType } from 'embla-carousel'\nimport useEmblaCarousel from 'embla-carousel-react'\nimport ClassNames from 'embla-carousel-class-names'\nimport {\n NextButton,\n PrevButton,\n usePrevNextButtons\n} from '../EmblaCarouselArrowButtons'\nimport { DotButton, useDotButton } from '../EmblaCarouselDotButton'\nimport { sandboxImages } from 'components/Sandbox/sandboxImages'\n\ntype PropType = {\n slides: number[]\n options?: EmblaOptionsType\n}\n\nconst EmblaCarousel: React.FC = (props) => {\n const { slides, options } = props\n const [emblaRef, emblaApi] = useEmblaCarousel(options, [ClassNames()])\n\n const { selectedIndex, scrollSnaps, onDotButtonClick } =\n useDotButton(emblaApi)\n\n const {\n prevBtnDisabled,\n nextBtnDisabled,\n onPrevButtonClick,\n onNextButtonClick\n } = usePrevNextButtons(emblaApi)\n\n return (\n
\n
\n
\n {slides.map((index) => (\n
\n \n
\n ))}\n
\n
\n\n
\n
\n \n \n
\n\n
\n {scrollSnaps.map((_, index) => (\n onDotButtonClick(index)}\n className={'embla__dot'.concat(\n index === selectedIndex ? ' embla__dot--selected' : ''\n )}\n />\n ))}\n
\n
\n
\n )\n}\n\nexport default EmblaCarousel\n","import React, {\n ComponentPropsWithRef,\n useCallback,\n useEffect,\n useState\n} from 'react'\nimport { EmblaCarouselType } from 'embla-carousel'\n\ntype UseDotButtonType = {\n selectedIndex: number\n scrollSnaps: number[]\n onDotButtonClick: (index: number) => void\n}\n\nexport const useDotButton = (\n emblaApi: EmblaCarouselType | undefined,\n onButtonClick?: (emblaApi: EmblaCarouselType) => void\n): UseDotButtonType => {\n const [selectedIndex, setSelectedIndex] = useState(0)\n const [scrollSnaps, setScrollSnaps] = useState([])\n\n const onDotButtonClick = useCallback(\n (index: number) => {\n if (!emblaApi) return\n emblaApi.scrollTo(index)\n if (onButtonClick) onButtonClick(emblaApi)\n },\n [emblaApi, onButtonClick]\n )\n\n const onInit = useCallback((emblaApi: EmblaCarouselType) => {\n setScrollSnaps(emblaApi.scrollSnapList())\n }, [])\n\n const onSelect = useCallback((emblaApi: EmblaCarouselType) => {\n setSelectedIndex(emblaApi.selectedScrollSnap())\n }, [])\n\n useEffect(() => {\n if (!emblaApi) return\n\n onInit(emblaApi)\n onSelect(emblaApi)\n\n emblaApi.on('reInit', onInit).on('reInit', onSelect).on('select', onSelect)\n }, [emblaApi, onInit, onSelect])\n\n return {\n selectedIndex,\n scrollSnaps,\n onDotButtonClick\n }\n}\n\ntype PropType = ComponentPropsWithRef<'button'>\n\nexport const DotButton: React.FC = (props) => {\n const { children, ...restProps } = props\n\n return (\n \n )\n}\n","import image1 from 'assets/images/slide-1.jpg'\nimport image2 from 'assets/images/slide-2.jpg'\nimport image3 from 'assets/images/slide-3.jpg'\nimport image4 from 'assets/images/slide-4.jpg'\nimport image5 from 'assets/images/slide-5.jpg'\n\nconst sandboxImageList: string[] = [image1, image2, image3, image4, image5]\n\nexport const sandboxImages = (index: number): string =>\n sandboxImageList[index % sandboxImageList.length]\n","export default __webpack_public_path__ + \"static/slide-1-47ed6052f4455272d8f76db16447d760.jpg\";","export default __webpack_public_path__ + \"static/slide-2-dc15cfe63eb4aeb8c9c09823179ee64c.jpg\";","export default __webpack_public_path__ + \"static/slide-3-6362505742d23d7cd240880140151a95.jpg\";","export default __webpack_public_path__ + \"static/slide-4-ebad84cfea5ff9481504ded363c22003.jpg\";","export default __webpack_public_path__ + \"static/slide-5-2d88e98502aa565d6269834d7a7be406.jpg\";","import { CreateOptionsType } from 'embla-carousel'\n\nexport type OptionsType = CreateOptionsType<{\n snapped: string\n inView: string\n draggable: string\n dragging: string\n}>\n\nexport const defaultOptions: OptionsType = {\n active: true,\n breakpoints: {},\n snapped: 'is-snapped',\n inView: 'is-in-view',\n draggable: 'is-draggable',\n dragging: 'is-dragging'\n}\n","export function removeClass(node: HTMLElement, className: string): void {\n if (!node || !className) return\n const { classList } = node\n if (classList.contains(className)) classList.remove(className)\n}\n\nexport function addClass(node: HTMLElement, className: string): void {\n if (!node || !className) return\n const { classList } = node\n if (!classList.contains(className)) classList.add(className)\n}\n\nexport function nodeListToArray(nodeList: NodeListOf): HTMLElement[] {\n return Array.from(nodeList)\n}\n","import { defaultOptions, OptionsType } from './Options'\nimport { nodeListToArray, addClass, removeClass } from './utils'\nimport {\n CreatePluginType,\n OptionsHandlerType,\n EmblaCarouselType,\n EmblaEventType\n} from 'embla-carousel'\n\ndeclare module 'embla-carousel' {\n interface EmblaPluginsType {\n classNames: ClassNamesType\n }\n}\n\nexport type ClassNamesType = CreatePluginType<{}, OptionsType>\n\nexport type ClassNamesOptionsType = ClassNamesType['options']\n\nfunction ClassNames(userOptions: ClassNamesOptionsType = {}): ClassNamesType {\n let options: OptionsType\n let emblaApi: EmblaCarouselType\n let root: HTMLElement\n let slides: HTMLElement[]\n const selectedEvents: EmblaEventType[] = ['select']\n const draggingEvents: EmblaEventType[] = ['pointerDown', 'pointerUp']\n const inViewEvents: EmblaEventType[] = ['slidesInView']\n\n function init(\n emblaApiInstance: EmblaCarouselType,\n optionsHandler: OptionsHandlerType\n ): void {\n emblaApi = emblaApiInstance\n\n const { mergeOptions, optionsAtMedia } = optionsHandler\n const optionsBase = mergeOptions(defaultOptions, ClassNames.globalOptions)\n const allOptions = mergeOptions(optionsBase, userOptions)\n options = optionsAtMedia(allOptions)\n\n root = emblaApi.rootNode()\n slides = emblaApi.slideNodes()\n const isDraggable = !!emblaApi.internalEngine().options.watchDrag\n\n if (isDraggable) {\n addClass(root, options.draggable)\n }\n if (options.dragging) {\n draggingEvents.forEach((evt) => emblaApi.on(evt, toggleDraggingClass))\n }\n if (options.snapped) {\n selectedEvents.forEach((evt) => emblaApi.on(evt, toggleSnappedClasses))\n toggleSnappedClasses()\n }\n if (options.inView) {\n inViewEvents.forEach((evt) => emblaApi.on(evt, toggleInViewClasses))\n toggleInViewClasses()\n }\n }\n\n function destroy(): void {\n removeClass(root, options.draggable)\n draggingEvents.forEach((evt) => emblaApi.off(evt, toggleDraggingClass))\n selectedEvents.forEach((evt) => emblaApi.off(evt, toggleSnappedClasses))\n inViewEvents.forEach((evt) => emblaApi.off(evt, toggleInViewClasses))\n slides.forEach((slide) => removeClass(slide, options.snapped))\n }\n\n function toggleDraggingClass(\n _: EmblaCarouselType,\n evt: EmblaEventType\n ): void {\n if (evt === 'pointerDown') addClass(root, options.dragging)\n else removeClass(root, options.dragging)\n }\n\n function toggleSlideClasses(slideIndexes: number[], className: string): void {\n const container = emblaApi.containerNode()\n const slideNodeList = container.querySelectorAll(`.${className}`)\n const removeClassSlides = nodeListToArray(slideNodeList)\n\n removeClassSlides.forEach((slide) => removeClass(slide, className))\n slideIndexes.forEach((index) => addClass(slides[index], className))\n }\n\n function toggleSnappedClasses(): void {\n const { slideRegistry } = emblaApi.internalEngine()\n const slideIndexes = slideRegistry[emblaApi.selectedScrollSnap()]\n toggleSlideClasses(slideIndexes, options.snapped)\n }\n\n function toggleInViewClasses(): void {\n const slideIndexes = emblaApi.slidesInView()\n toggleSlideClasses(slideIndexes, options.inView)\n }\n\n const self: ClassNamesType = {\n name: 'classNames',\n options: userOptions,\n init,\n destroy\n }\n return self\n}\n\ndeclare namespace ClassNames {\n let globalOptions: ClassNamesOptionsType | undefined\n}\n\nClassNames.globalOptions = undefined\n\nexport default ClassNames\n"],"names":["props","slides","options","emblaRef","emblaApi","useEmblaCarousel","ClassNames","selectedIndex","scrollSnaps","onDotButtonClick","useDotButton","prevBtnDisabled","nextBtnDisabled","onPrevButtonClick","onNextButtonClick","usePrevNextButtons","React","className","ref","map","index","key","src","sandboxImages","alt","PrevButton","onClick","disabled","NextButton","_","DotButton","concat","onButtonClick","setSelectedIndex","useState","setScrollSnaps","useCallback","scrollTo","onInit","scrollSnapList","onSelect","selectedScrollSnap","useEffect","on","children","restProps","Object","assign","type","sandboxImageList","length","defaultOptions","active","breakpoints","snapped","inView","draggable","dragging","removeClass","node","classList","contains","remove","addClass","add","userOptions","root","selectedEvents","draggingEvents","inViewEvents","toggleDraggingClass","evt","toggleSlideClasses","slideIndexes","slideNodeList","containerNode","querySelectorAll","nodeList","Array","from","forEach","slide","toggleSnappedClasses","slideRegistry","internalEngine","toggleInViewClasses","slidesInView","name","init","emblaApiInstance","optionsHandler","mergeOptions","optionsAtMedia","optionsBase","globalOptions","allOptions","rootNode","slideNodes","watchDrag","destroy","off","undefined"],"sourceRoot":""} \ No newline at end of file diff --git a/docs/6445-cac03c60bbec1a06dc44.js b/docs/6445-cac03c60bbec1a06dc44.js new file mode 100644 index 000000000..704183d9e --- /dev/null +++ b/docs/6445-cac03c60bbec1a06dc44.js @@ -0,0 +1,2 @@ +"use strict";(self.webpackChunkembla_carousel_docs=self.webpackChunkembla_carousel_docs||[]).push([[6445],{2627:function(e,t,n){n.d(t,{$:function(){return i},m:function(){return r}});var a=n(9666),o=n(5291);const i=(0,a.B)("radio"),r=(0,o.m)("radio")},5291:function(e,t,n){n.d(t,{m:function(){return S}});var a=n(4041),o=n(3057),i=n(8362),r=n(7254),l=n(9973),d=n(382),c=n(7564),s=n(4906),u=n(1381),p=n(9204),m=n(1801),f=n(6341),b=n(4989);const h=o.default.label.withConfig({displayName:"createRadioOrCheckboxCard__RadioOrCheckboxCardWrapper",componentId:"sc-10bqvgs-0"})(["",";",";display:flex;align-items:center;justify-content:center;position:relative;height:100%;"],p.Q,l.S),g=o.default.span.withConfig({displayName:"createRadioOrCheckboxCard__LabelContent",componentId:"sc-10bqvgs-1"})(["z-index:",";position:relative;display:block;width:100%;cursor:pointer;"],m.R.STEP),C=o.default.span.withConfig({displayName:"createRadioOrCheckboxCard__Highlight",componentId:"sc-10bqvgs-2"})(["",";top:-",";left:-",";bottom:-",";right:-",";display:block;position:absolute;border-radius:inherit;pointer-events:none;visibility:hidden;&:after{background-color:",";border-radius:inherit;position:absolute;top:",";left:",";bottom:",";right:",";content:'';}"],s.J,u.C.DETAIL,u.C.DETAIL,u.C.DETAIL,u.C.DETAIL,f.lm.BACKGROUND_CODE,u.C.OUTLINE,u.C.OUTLINE,u.C.OUTLINE,u.C.OUTLINE),E=o.default.input.withConfig({displayName:"createRadioOrCheckboxCard__Input",componentId:"sc-10bqvgs-3"})(["",";",";position:absolute;border-radius:",";top:0;left:0;",";appearance:none;-webkit-appearance:none;border:0;background-color:transparent;pointer-events:none;&:after{display:block;content:'';position:absolute;top:0;left:0;",";}&:checked + ","{visibility:visible;}&[disabled] + "," + ","{cursor:not-allowed;}&[disabled]:checked + ","{background-image:none;background-color:",";}"],p.Q,b.y,u.Y.CARD,(0,d.P)("100%"),(0,d.P)("100%"),C,C,g,C,f.lm.DETAIL_HIGH_CONTRAST),S=e=>{const t=(0,c.fq)("input-"+e+"-card"),n=t=>{const{children:n,...o}=t,l=(0,i.GV)(r.U$);return a.createElement(h,{htmlFor:o.id},a.createElement(E,Object.assign({type:e,$isKeyNavigating:l},o)),a.createElement(C,null),a.createElement(g,null,n))};return n.displayName=t,n}},9666:function(e,t,n){n.d(t,{B:function(){return y}});var a=n(4041),o=n(3057),i=n(8362),r=n(7254),l=n(6341),d=n(4393),c=n(382),s=n(1381),u=n(4906),p=n(7564),m=n(9204),f=n(4989);const b="2.5rem",h=o.default.span.withConfig({displayName:"createRadioOrCheckboxDefault__RadioOrCheckboxDefaultWrapper",componentId:"sc-1f4htb9-0"})(["display:flex;align-items:flex-start;flex-wrap:wrap;"]),g=o.default.span.withConfig({displayName:"createRadioOrCheckboxDefault__InputWrapper",componentId:"sc-1f4htb9-1"})(["flex:0 0 ",";position:relative;min-width:0;"],b),C=o.default.span.withConfig({displayName:"createRadioOrCheckboxDefault__InputLineHeight",componentId:"sc-1f4htb9-2"})(["color:",";width:",";display:inline-block;line-height:inherit;"],l.lm.BACKGROUND_SITE,b),E=o.default.input.withConfig({displayName:"createRadioOrCheckboxDefault__Input",componentId:"sc-1f4htb9-3"})(["",";",";",";appearance:none;-webkit-appearance:none;position:absolute;top:50%;left:0;top:50%;transform:translateY(-50%);background-color:",";cursor:pointer;&:before,&:after{display:block;content:'';position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);}&:before{",";background-color:",";}&:after{",";}&:checked{&:after{",";}}&[disabled]{cursor:not-allowed;}&[disabled]:checked{&:after{background-image:none;background-color:",";}}"],(0,c.P)(b),m.Q,f.y,l.lm.DETAIL_MEDIUM_CONTRAST,(0,c.P)("2rem"),l.lm.BACKGROUND_CODE,(0,c.P)("1.2rem"),u.J,l.lm.DETAIL_HIGH_CONTRAST),S=(0,o.default)(E).withConfig({displayName:"createRadioOrCheckboxDefault__InputRadio",componentId:"sc-1f4htb9-4"})(["border-radius:",";&:before{border-radius:",";}&:after{border-radius:",";}"],s.Y.CIRCLE,s.Y.CIRCLE,s.Y.CIRCLE),_=(0,o.default)(E).withConfig({displayName:"createRadioOrCheckboxDefault__InputCheckbox",componentId:"sc-1f4htb9-5"})(["border-radius:",";&:before{border-radius:",";}&:after{border-radius:0;}"],s.Y.LINE,s.Y.LINE),x=o.default.label.withConfig({displayName:"createRadioOrCheckboxDefault__Label",componentId:"sc-1f4htb9-6"})(["",";padding-left:",";min-width:0;flex:0 0 calc(100% - ",");",";"],m.Q,d.F.TWO,b,(e=>{let{$disabled:t}=e;return t&&(0,o.css)(["color:",";"],l.lm.TEXT_LOW_CONTRAST)})),y=e=>{const t="radio"===e?S:_,n=(0,p.fq)("input-"+e+"-default"),o=n=>{const{children:o,...l}=n,d=(0,i.GV)(r.U$);return a.createElement(h,null,a.createElement(g,null,a.createElement(C,null,"-"),a.createElement(t,Object.assign({type:e,$isKeyNavigating:d},l))),a.createElement(x,{htmlFor:l.id,$disabled:l.disabled},o))};return o.displayName=n,o}},5730:function(e,t,n){n.d(t,{S:function(){return m}});var a=n(4041),o=n(3057),i=n(3214),r=n(2627),l=n(4702),d=n(4393),c=n(382);const s={VANILLA_JS:"javascript",VANILLA_TS:"typescript",REACT_JS:"react",REACT_TS:"react"},u=o.default.span.withConfig({displayName:"SandboxSelectionInput__RadioLabelContent",componentId:"sc-sob6nf-0"})(["display:flex;flex-direction:column;padding:",";line-height:1;text-align:center;align-items:center;font-size:",";font-weight:",";"],d.F.TWO,l.$.DETAIL,l.s.MEDIUM),p=(0,o.default)(i.I).withConfig({displayName:"SandboxSelectionInput__RadioLabelSvg",componentId:"sc-sob6nf-1"})(["",";margin-bottom:",";"],(0,c.P)("3rem"),d.F.TWO),m=e=>{const{children:t,framework:n,...o}=e;return a.createElement(r.m,o,a.createElement(u,null,a.createElement(p,{svg:s[n]}),t))}},6445:function(e,t,n){n.r(t),n.d(t,{SELECT_CODESANDBOX_DIALOG_ID:function(){return A},SandboxSelectionModal:function(){return H}});var a=n(4041),o=n(3057),i=n(4867),r=n.n(i),l=n(7442),d=n(6341),c=n(1801),s=n(4393),u=n(5335),p=n(5513),m=n(3214),f=n(382),b=n(8893),h=n(4702),g=n(8981),C=n(4094),E=n(1672),S=n(7564),_=n(5730);const x="choose-sandbox",y=o.default.form.withConfig({displayName:"SandboxSelectionForm__SandboxSelectionFormWrapper",componentId:"sc-1eycu1r-0"})(["display:flex;flex-direction:column;"]),I=o.default.div.withConfig({displayName:"SandboxSelectionForm__Fieldset",componentId:"sc-1eycu1r-1"})(["padding-bottom:",";"],s.F.FIVE),k=o.default.h3.withConfig({displayName:"SandboxSelectionForm__Legend",componentId:"sc-1eycu1r-2"})(["margin-bottom:",";font-size:",";width:100%;font-weight:",";line-height:1.5;"],s.F.FOUR,h.$.H3,h.s.BOLD),N=o.default.ul.withConfig({displayName:"SandboxSelectionForm__SandboxSelectionList",componentId:"sc-1eycu1r-3"})(["",";display:flex;flex-wrap:wrap;"],(0,C.F)(E.hz,E.hz,"li")),O=o.default.li.withConfig({displayName:"SandboxSelectionForm__SandboxSelection",componentId:"sc-1eycu1r-4"})(["position:relative;flex:0 0 50%;min-width:0;"]),w=e=>{const{sandboxes:t=[]}=e,{0:n,1:o}=(0,a.useState)(""),{0:i,1:r}=(0,a.useState)(""),l=!(!n||i),d=(0,a.useCallback)((async e=>{const n=t.find((t=>t.key===e));n&&r(await n.createSandbox())}),[t]),c=(0,a.useCallback)((e=>{const t=e.currentTarget.value;r(""),o(t)}),[]);return(0,a.useEffect)((()=>{n&&d(n)}),[n]),a.createElement(y,{action:b.t.CODESANDBOX_DEFINE,method:"POST",target:"_blank"},a.createElement(I,{role:"radiogroup","aria-label":x},a.createElement(k,null,"Select CodeSandbox"),a.createElement(N,null,t.map((e=>a.createElement(O,{key:e.key},a.createElement(_.S,{framework:e.key,name:x,id:x+"-"+(0,S.pX)(e.key),value:e.key,onChange:c,checked:n===e.key},e.label)))))),a.createElement("input",{type:"hidden",name:"parameters",value:i}),a.createElement(g.$K,{isLoading:l,disabled:!i,type:"submit"},"Create Sandbox"))};var T=n(3144),R=n(8988);const v="portal-root",D=e=>{const{children:t}=e,n=(0,a.useRef)((()=>{if(!R.B)return null;let e=document.getElementById(v);return e||(e=document.createElement("div"),e.id=v,document.body.appendChild(e),e)})()),o=(0,a.useRef)(R.B?document.createElement("div"):null);return(0,a.useEffect)((()=>{if(n.current&&o.current)return n.current.appendChild(o.current),()=>{n.current&&o.current&&n.current.removeChild(o.current)}}),[]),(0,T.createPortal)(t,o.current)};var L=n(1381);const A="select-codesandbox-dialog",F=s.F.TEN,B="4rem",U="1.8rem",P=o.default.div.withConfig({displayName:"SandboxSelectionModal__SandboxSelectionModalWrapper",componentId:"sc-a7uzjf-0"})(["z-index:",";padding:"," 0;background-color:",";position:fixed;left:0;right:0;top:0;margin:auto;width:100%;display:flex;margin:0 auto;flex-direction:column;height:100vh;max-width:",";","{box-shadow:0 0 0 0.1rem ",";top:",";max-height:calc(100vh - "," * 2);height:auto;border-radius:",";}"],c.R.SEARCH+c.R.STEP,p.E,d.lm.BACKGROUND_SITE,"36rem",u.Rn.DESKTOP,d.lm.DETAIL_LOW_CONTRAST,F,F,L.Y.SOFT),z=o.default.div.withConfig({displayName:"SandboxSelectionModal__Overlay",componentId:"sc-a7uzjf-1"})(["z-index:",";position:fixed;top:0;right:0;left:0;bottom:0;background-color:",";","{opacity:0.9;}"],c.R.SEARCH,d.lm.BACKGROUND_SITE,u.Rn.DESKTOP),M=(0,o.default)(l.rB).withConfig({displayName:"SandboxSelectionModal__CloseButton",componentId:"sc-a7uzjf-2"})(["",";z-index:",";display:flex;align-items:center;justify-content:center;position:absolute;top:",";right:",";margin-right:calc(("," - ",") / 2 * -1);margin-top:-",";","{display:flex;}"],(0,f.P)(B),c.R.STEP,p.E,p.E,B,U,s.F.CUSTOM((()=>.4)),l.SN),G=o.default.div.withConfig({displayName:"SandboxSelectionModal__ScrollArea",componentId:"sc-a7uzjf-3"})(["padding:0 ",";overflow:auto;position:relative;max-height:100%;"],p.E),H=e=>{const{sandboxes:t,closeModal:n}=e;return a.createElement(D,null,a.createElement(r(),{active:!0},a.createElement("div",null,a.createElement(z,{onClick:n}),a.createElement(P,{role:"dialog","aria-modal":"true","aria-label":"Select CodeSandbox Dialog","aria-labelledby":A},a.createElement(M,{"aria-label":"Hide Select CodeSandbox Dialog",onClick:n},a.createElement(m.I,{svg:"cross",size:U})),a.createElement(G,null,a.createElement(w,{sandboxes:t||[]}))))))}}}]); +//# sourceMappingURL=6445-cac03c60bbec1a06dc44.js.map \ No newline at end of file diff --git a/docs/6445-cac03c60bbec1a06dc44.js.map b/docs/6445-cac03c60bbec1a06dc44.js.map new file mode 100644 index 000000000..63e8ee801 --- /dev/null +++ b/docs/6445-cac03c60bbec1a06dc44.js.map @@ -0,0 +1 @@ +{"version":3,"file":"6445-cac03c60bbec1a06dc44.js","mappings":"+MAGO,MAAMA,GAAoBC,EAAAA,EAAAA,GAA6B,SAEjDC,GAAiBC,EAAAA,EAAAA,GAA0B,Q,4LCUxD,MAAMC,EAA6BC,EAAAA,QAAOC,MAAKC,WAAA,CAAAC,YAAA,wDAAAC,YAAA,gBAAZJ,CAAY,kGAC3CK,EAAAA,EACAC,EAAAA,GAQEC,EAAeP,EAAAA,QAAOQ,KAAIN,WAAA,CAAAC,YAAA,0CAAAC,YAAA,gBAAXJ,CAAW,2EACnBS,EAAAA,EAAOC,MAOdC,EAAYX,EAAAA,QAAOQ,KAAIN,WAAA,CAAAC,YAAA,uCAAAC,YAAA,gBAAXJ,CAAW,sQACzBY,EAAAA,EACMC,EAAAA,EAAaC,OACZD,EAAAA,EAAaC,OACXD,EAAAA,EAAaC,OACdD,EAAAA,EAAaC,OAQDC,EAAAA,GAAOC,gBAGpBH,EAAAA,EAAaI,QACZJ,EAAAA,EAAaI,QACXJ,EAAAA,EAAaI,QACdJ,EAAAA,EAAaI,SAKpBC,EAAQlB,EAAAA,QAAOmB,MAAKjB,WAAA,CAAAC,YAAA,mCAAAC,YAAA,gBAAZJ,CAAY,+XACtBK,EAAAA,EACAe,EAAAA,EAEeC,EAAAA,EAAgBC,MAG/BC,EAAAA,EAAAA,GAAuB,SAarBA,EAAAA,EAAAA,GAAuB,QAGbZ,EAIEA,EAAeJ,EAIPI,EAEFI,EAAAA,GAAOS,sBAIlB1B,EACX2B,IAEA,MAAMtB,GAAcuB,EAAAA,EAAAA,IAAsB,SAASD,EAAI,SAEjDE,EAA2BC,IAC/B,MAAM,SAAEC,KAAaC,GAAcF,EAC7BG,GAAkBC,EAAAA,EAAAA,IAAeC,EAAAA,IAEvC,OACEC,EAAAA,cAACnC,EAA0B,CAACoC,QAASL,EAAUM,IAC7CF,EAAAA,cAAChB,EAAKmB,OAAAC,OAAA,CAACb,KAAMA,EAAMc,iBAAkBR,GAAqBD,IAC1DI,EAAAA,cAACvB,EAAS,MACVuB,EAAAA,cAAC3B,EAAY,KAAEsB,GACY,EAKjC,OADAF,EAAwBxB,YAAcA,EAC/BwB,CAAuB,C,kLCpGhC,MAAMa,EAAa,SAGbC,EAAgCzC,EAAAA,QAAOQ,KAAIN,WAAA,CAAAC,YAAA,8DAAAC,YAAA,gBAAXJ,CAAW,yDAM3C0C,EAAe1C,EAAAA,QAAOQ,KAAIN,WAAA,CAAAC,YAAA,6CAAAC,YAAA,gBAAXJ,CAAW,gDAClBwC,GAKRG,EAAkB3C,EAAAA,QAAOQ,KAAIN,WAAA,CAAAC,YAAA,gDAAAC,YAAA,gBAAXJ,CAAW,kEACxBe,EAAAA,GAAO6B,gBACPJ,GAKLtB,EAAQlB,EAAAA,QAAOmB,MAAKjB,WAAA,CAAAC,YAAA,sCAAAC,YAAA,gBAAZJ,CAAY,gcACtBuB,EAAAA,EAAAA,GAAuBiB,GACvBnC,EAAAA,EACAe,EAAAA,EAQkBL,EAAAA,GAAO8B,wBAcvBtB,EAAAA,EAAAA,GAAuB,QACLR,EAAAA,GAAOC,iBAIzBO,EAAAA,EAAAA,GAnDa,UAwDXX,EAAAA,EAWkBG,EAAAA,GAAOS,sBAK3BsB,GAAa9C,EAAAA,EAAAA,SAAOkB,GAAMhB,WAAA,CAAAC,YAAA,2CAAAC,YAAA,gBAAbJ,CAAa,8EACbqB,EAAAA,EAAgB0B,OAGd1B,EAAAA,EAAgB0B,OAGhB1B,EAAAA,EAAgB0B,QAI/BC,GAAgBhD,EAAAA,EAAAA,SAAOkB,GAAMhB,WAAA,CAAAC,YAAA,8CAAAC,YAAA,gBAAbJ,CAAa,4EAChBqB,EAAAA,EAAgB4B,KAGd5B,EAAAA,EAAgB4B,MAQ/BC,EAAQlD,EAAAA,QAAOC,MAAKC,WAAA,CAAAC,YAAA,sCAAAC,YAAA,gBAAZJ,CAAY,oEACtBK,EAAAA,EACc8C,EAAAA,EAASC,IAEDZ,GAEtBa,IAAA,IAAC,UAAEC,GAAWD,EAAA,OACdC,IACAC,EAAAA,EAAAA,KAAG,eACQxC,EAAAA,GAAOyC,kBACjB,IAKQ5D,EACX6B,IAEA,MAAMgC,EAA0B,UAAThC,EAAmBqB,EAAaE,EACjD7C,GAAcuB,EAAAA,EAAAA,IAAsB,SAASD,EAAI,YAEjDE,EAA2BC,IAC/B,MAAM,SAAEC,KAAaC,GAAcF,EAC7BG,GAAkBC,EAAAA,EAAAA,IAAeC,EAAAA,IAEvC,OACEC,EAAAA,cAACO,EAA6B,KAC5BP,EAAAA,cAACQ,EAAY,KACXR,EAAAA,cAACS,EAAe,KAAC,KACjBT,EAAAA,cAACuB,EAAcpB,OAAAC,OAAA,CACbb,KAAMA,EACNc,iBAAkBR,GACdD,KAGRI,EAAAA,cAACgB,EAAK,CAACf,QAASL,EAAUM,GAAIkB,UAAWxB,EAAU4B,UAChD7B,GAE2B,EAKpC,OADAF,EAAwBxB,YAAcA,EAC/BwB,CAAuB,C,gIC7IhC,MAAMgC,EAKF,CACFC,WAAY,aACZC,WAAY,aACZC,SAAU,QACVC,SAAU,SAGNC,EAAoBhE,EAAAA,QAAOQ,KAAIN,WAAA,CAAAC,YAAA,2CAAAC,YAAA,eAAXJ,CAAW,qIAGxBmD,EAAAA,EAASC,IAIPa,EAAAA,EAAWnD,OACToD,EAAAA,EAAaC,QAGxBC,GAAgBpE,EAAAA,EAAAA,SAAOqE,EAAAA,GAAKnE,WAAA,CAAAC,YAAA,uCAAAC,YAAA,eAAZJ,CAAY,4BAC9BuB,EAAAA,EAAAA,GAAuB,QACR4B,EAAAA,EAASC,KAOfkB,EAAyB1C,IACpC,MAAM,SAAEC,EAAQ,UAAE0C,KAAczC,GAAcF,EAE9C,OACEM,EAAAA,cAACrC,EAAAA,EAAmBiC,EAClBI,EAAAA,cAAC8B,EAAiB,KAChB9B,EAAAA,cAACkC,EAAa,CAACI,IAAKb,EAAeY,KAClC1C,GAEY,C,oUCvCrB,MAAM4C,EAAyB,iBAEzBC,EAA8B1E,EAAAA,QAAO2E,KAAIzE,WAAA,CAAAC,YAAA,oDAAAC,YAAA,gBAAXJ,CAAW,yCAKzC4E,EAAW5E,EAAAA,QAAO6E,IAAG3E,WAAA,CAAAC,YAAA,iCAAAC,YAAA,gBAAVJ,CAAU,wBACPmD,EAAAA,EAAS2B,MAGvBC,EAAS/E,EAAAA,QAAOgF,GAAE9E,WAAA,CAAAC,YAAA,+BAAAC,YAAA,gBAATJ,CAAS,gFACLmD,EAAAA,EAAS8B,KACbhB,EAAAA,EAAWiB,GAGThB,EAAAA,EAAaiB,MAIxBC,EAAuBpF,EAAAA,QAAOqF,GAAEnF,WAAA,CAAAC,YAAA,6CAAAC,YAAA,gBAATJ,CAAS,sCAClCsF,EAAAA,EAAAA,GACAC,EAAAA,GACAA,EAAAA,GACA,OAMEC,EAAmBxF,EAAAA,QAAOyF,GAAEvF,WAAA,CAAAC,YAAA,yCAAAC,YAAA,gBAATJ,CAAS,iDAMrB0F,EAAwB9D,IACnC,MAAM,UAAE+D,EAAY,IAAO/D,GACrB,EAACgE,EAAW,EAACC,IAAiBC,EAAAA,EAAAA,UAAmC,KACjE,EAACC,EAAQ,EAACC,IAAcF,EAAAA,EAAAA,UAAS,IACjCG,KAAeL,GAAeG,GAE9BG,GAAcC,EAAAA,EAAAA,cAClBC,UACE,MAAML,EAAUJ,EAAUU,MAAMN,GAAYA,EAAQO,MAAQA,IACxDP,GAASC,QAAiBD,EAAQQ,gBAAgB,GAExD,CAACZ,IAGGa,GAAWL,EAAAA,EAAAA,cAAaM,IAC5B,MAAMH,EAAMG,EAAMC,cAAcC,MAChCX,EAAW,IACXH,EAAcS,EAAI,GACjB,IAMH,OAJAM,EAAAA,EAAAA,YAAU,KACJhB,GAAYM,EAAYN,EAAW,GACtC,CAACA,IAGF1D,EAAAA,cAACwC,EAA2B,CAC1BmC,OAAQC,EAAAA,EAAKC,mBACbC,OAAO,OACPC,OAAO,UAEP/E,EAAAA,cAAC0C,EAAQ,CAACsC,KAAK,aAAa,aAAYzC,GACtCvC,EAAAA,cAAC6C,EAAM,KAAC,sBAER7C,EAAAA,cAACkD,EAAoB,KAClBO,EAAUwB,KAAKpB,GACd7D,EAAAA,cAACsD,EAAgB,CAACc,IAAKP,EAAQO,KAC7BpE,EAAAA,cAACoC,EAAAA,EAAqB,CACpBC,UAAWwB,EAAQO,IACnBc,KAAM3C,EACNrC,GAAOqC,EAAsB,KAAI4C,EAAAA,EAAAA,IAC/BtB,EAAQO,KAEVK,MAAOZ,EAAQO,IACfE,SAAUA,EACVc,QAAS1B,IAAeG,EAAQO,KAE/BP,EAAQ9F,YAOnBiC,EAAAA,cAAA,SAAOT,KAAK,SAAS2F,KAAK,aAAaT,MAAOZ,IAE9C7D,EAAAA,cAACqF,EAAAA,GAA8B,CAC7BtB,UAAWA,EACXvC,UAAWqC,EACXtE,KAAK,UACN,kBAG2B,E,wBC3GlC,MAYM+F,EAAoB,cAIbC,EAAe7F,IAC1B,MAAM,SAAEC,GAAaD,EACf8F,GAAgBC,EAAAA,EAAAA,QAlBiBC,MACvC,IAAKC,EAAAA,EAAW,OAAO,KAEvB,IAAIC,EAAUC,SAASC,eAAeR,GACtC,OAAIM,IAEJA,EAAUC,SAASE,cAAc,OACjCH,EAAQ1F,GAAKoF,EACbO,SAASG,KAAKC,YAAYL,GACnBA,EAAO,EASeF,IACvBQ,GAAgBT,EAAAA,EAAAA,QACpBE,EAAAA,EAAYE,SAASE,cAAc,OAAS,MAc9C,OAXArB,EAAAA,EAAAA,YAAU,KACR,GAAKc,EAAcW,SAAYD,EAAcC,QAI7C,OAFAX,EAAcW,QAAQF,YAAYC,EAAcC,SAEzC,KACAX,EAAcW,SAAYD,EAAcC,SAC7CX,EAAcW,QAAQC,YAAYF,EAAcC,QAAQ,CACzD,GACA,KAEIE,EAAAA,EAAAA,cAAa1G,EAAUuG,EAAcC,QAA0B,E,cCtBjE,MAAMG,EAA+B,4BAEtCC,EAAsBtF,EAAAA,EAASuF,IAE/BC,EAAc,OACdC,EAAY,SAEZC,EAA+B7I,EAAAA,QAAO6E,IAAG3E,WAAA,CAAAC,YAAA,sDAAAC,YAAA,eAAVJ,CAAU,mSAClCS,EAAAA,EAAOqI,OAASrI,EAAAA,EAAOC,KACvBqI,EAAAA,EACShI,EAAAA,GAAO6B,gBATL,QAsBpBoG,EAAAA,GAAMC,QACqBlI,EAAAA,GAAOmI,oBAC3BT,EACoBA,EAEVpH,EAAAA,EAAgB8H,MAI/BC,EAAUpJ,EAAAA,QAAO6E,IAAG3E,WAAA,CAAAC,YAAA,iCAAAC,YAAA,eAAVJ,CAAU,oGACbS,EAAAA,EAAOqI,OAME/H,EAAAA,GAAO6B,gBAEzBoG,EAAAA,GAAMC,SAKJI,GAAcrJ,EAAAA,EAAAA,SAAOsJ,EAAAA,IAAWpJ,WAAA,CAAAC,YAAA,qCAAAC,YAAA,eAAlBJ,CAAkB,2LAClCuB,EAAAA,EAAAA,GAAuBoH,GACdlI,EAAAA,EAAOC,KAKXqI,EAAAA,EACEA,EAAAA,EACaJ,EAAiBC,EACxBzF,EAAAA,EAASoG,QAAO,IAAM,KAEnCC,EAAAA,IAKEC,EAAazJ,EAAAA,QAAO6E,IAAG3E,WAAA,CAAAC,YAAA,oCAAAC,YAAA,eAAVJ,CAAU,mEACd+I,EAAAA,GAWFW,EAAyB9H,IACpC,MAAM,UAAE+D,EAAS,WAAEgE,GAAe/H,EAElC,OACEM,EAAAA,cAACuF,EAAW,KACVvF,EAAAA,cAAC0H,IAAS,CAACC,QAAQ,GACjB3H,EAAAA,cAAA,WACEA,EAAAA,cAACkH,EAAO,CAACU,QAASH,IAElBzH,EAAAA,cAAC2G,EAA4B,CAC3B3B,KAAK,SACL,aAAW,OACX,aAAW,4BACX,kBAAiBsB,GAEjBtG,EAAAA,cAACmH,EAAW,CACV,aAAW,iCACXS,QAASH,GAETzH,EAAAA,cAACmC,EAAAA,EAAI,CAACG,IAAI,QAAQuF,KAAMnB,KAG1B1G,EAAAA,cAACuH,EAAU,KACTvH,EAAAA,cAACwD,EAAoB,CAACC,UAAWA,GAAa,SAK1C,C","sources":["webpack://embla-carousel-docs/./src/components/Input/InputRadio.tsx","webpack://embla-carousel-docs/./src/components/Input/createRadioOrCheckboxCard.tsx","webpack://embla-carousel-docs/./src/components/Input/createRadioOrCheckboxDefault.tsx","webpack://embla-carousel-docs/./src/components/Sandbox/SandboxSelectionInput.tsx","webpack://embla-carousel-docs/./src/components/Sandbox/SandboxSelectionForm.tsx","webpack://embla-carousel-docs/./src/components/Modal/ModalPortal.tsx","webpack://embla-carousel-docs/./src/components/Sandbox/SandboxSelectionModal.tsx"],"sourcesContent":["import { createRadioOrCheckboxDefault } from './createRadioOrCheckboxDefault'\nimport { createRadioOrCheckboxCard } from './createRadioOrCheckboxCard'\n\nexport const InputRadioDefault = createRadioOrCheckboxDefault('radio')\n\nexport const InputRadioCard = createRadioOrCheckboxCard('radio')\n","import React from 'react'\nimport styled from 'styled-components'\nimport { useAppSelector } from 'hooks/useRedux'\nimport { selectKeyNavigating } from 'components/KeyEvents/keyEventsReducer'\nimport { CARD_STYLES } from 'consts/card'\nimport { createSquareSizeStyles } from 'utils/createSquareSizeStyles'\nimport { kebabCaseToPascalCase } from 'utils/stringCasing'\nimport { PropType } from './createRadioOrCheckboxDefault'\nimport { BRAND_GRADIENT_BACKGROUND_STYLES } from 'consts/gradients'\nimport { BORDER_RADIUSES, BORDER_SIZES } from 'consts/border'\nimport { TAP_HIGHLIGHT_STYLES } from 'consts/tapHighlight'\nimport { LAYERS } from 'consts/layers'\nimport { COLORS } from 'consts/themes'\nimport { KEY_NAVIGATING_STYLES } from 'consts/keyEvents'\n\nconst RadioOrCheckboxCardWrapper = styled.label`\n ${TAP_HIGHLIGHT_STYLES};\n ${CARD_STYLES};\n display: flex;\n align-items: center;\n justify-content: center;\n position: relative;\n height: 100%;\n`\n\nconst LabelContent = styled.span`\n z-index: ${LAYERS.STEP};\n position: relative;\n display: block;\n width: 100%;\n cursor: pointer;\n`\n\nconst Highlight = styled.span`\n ${BRAND_GRADIENT_BACKGROUND_STYLES};\n top: -${BORDER_SIZES.DETAIL};\n left: -${BORDER_SIZES.DETAIL};\n bottom: -${BORDER_SIZES.DETAIL};\n right: -${BORDER_SIZES.DETAIL};\n display: block;\n position: absolute;\n border-radius: inherit;\n pointer-events: none;\n visibility: hidden;\n\n &:after {\n background-color: ${COLORS.BACKGROUND_CODE};\n border-radius: inherit;\n position: absolute;\n top: ${BORDER_SIZES.OUTLINE};\n left: ${BORDER_SIZES.OUTLINE};\n bottom: ${BORDER_SIZES.OUTLINE};\n right: ${BORDER_SIZES.OUTLINE};\n content: '';\n }\n`\n\nconst Input = styled.input<{ $isKeyNavigating: boolean }>`\n ${TAP_HIGHLIGHT_STYLES};\n ${KEY_NAVIGATING_STYLES};\n position: absolute;\n border-radius: ${BORDER_RADIUSES.CARD};\n top: 0;\n left: 0;\n ${createSquareSizeStyles('100%')};\n appearance: none;\n -webkit-appearance: none;\n border: 0;\n background-color: transparent;\n pointer-events: none;\n\n &:after {\n display: block;\n content: '';\n position: absolute;\n top: 0;\n left: 0;\n ${createSquareSizeStyles('100%')};\n }\n\n &:checked + ${Highlight} {\n visibility: visible;\n }\n\n &[disabled] + ${Highlight} + ${LabelContent} {\n cursor: not-allowed;\n }\n\n &[disabled]:checked + ${Highlight} {\n background-image: none;\n background-color: ${COLORS.DETAIL_HIGH_CONTRAST};\n }\n`\n\nexport const createRadioOrCheckboxCard = (\n type: 'radio' | 'checkbox'\n): ((props: PropType) => JSX.Element) => {\n const displayName = kebabCaseToPascalCase(`input-${type}-card`)\n\n const InputSelectionComponent = (props: PropType) => {\n const { children, ...restProps } = props\n const isKeyNavigating = useAppSelector(selectKeyNavigating)\n\n return (\n \n \n \n {children}\n \n )\n }\n\n InputSelectionComponent.displayName = displayName\n return InputSelectionComponent\n}\n","import React, { ComponentPropsWithRef } from 'react'\nimport styled, { css } from 'styled-components'\nimport { useAppSelector } from 'hooks/useRedux'\nimport { selectKeyNavigating } from 'components/KeyEvents/keyEventsReducer'\nimport { COLORS } from 'consts/themes'\nimport { SPACINGS } from 'consts/spacings'\nimport { createSquareSizeStyles } from 'utils/createSquareSizeStyles'\nimport { BORDER_RADIUSES } from 'consts/border'\nimport { BRAND_GRADIENT_BACKGROUND_STYLES } from 'consts/gradients'\nimport { kebabCaseToPascalCase } from 'utils/stringCasing'\nimport { TAP_HIGHLIGHT_STYLES } from 'consts/tapHighlight'\nimport { KEY_NAVIGATING_STYLES } from 'consts/keyEvents'\n\nconst INPUT_SIZE = '2.5rem'\nconst CHECK_SIZE = '1.2rem'\n\nconst RadioOrCheckboxDefaultWrapper = styled.span`\n display: flex;\n align-items: flex-start;\n flex-wrap: wrap;\n`\n\nconst InputWrapper = styled.span`\n flex: 0 0 ${INPUT_SIZE};\n position: relative;\n min-width: 0;\n`\n\nconst InputLineHeight = styled.span`\n color: ${COLORS.BACKGROUND_SITE};\n width: ${INPUT_SIZE};\n display: inline-block;\n line-height: inherit;\n`\n\nconst Input = styled.input<{ $isKeyNavigating: boolean }>`\n ${createSquareSizeStyles(INPUT_SIZE)};\n ${TAP_HIGHLIGHT_STYLES};\n ${KEY_NAVIGATING_STYLES};\n appearance: none;\n -webkit-appearance: none;\n position: absolute;\n top: 50%;\n left: 0;\n top: 50%;\n transform: translateY(-50%);\n background-color: ${COLORS.DETAIL_MEDIUM_CONTRAST};\n cursor: pointer;\n\n &:before,\n &:after {\n display: block;\n content: '';\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n }\n\n &:before {\n ${createSquareSizeStyles('2rem')};\n background-color: ${COLORS.BACKGROUND_CODE};\n }\n\n &:after {\n ${createSquareSizeStyles(CHECK_SIZE)};\n }\n\n &:checked {\n &:after {\n ${BRAND_GRADIENT_BACKGROUND_STYLES};\n }\n }\n\n &[disabled] {\n cursor: not-allowed;\n }\n\n &[disabled]:checked {\n &:after {\n background-image: none;\n background-color: ${COLORS.DETAIL_HIGH_CONTRAST};\n }\n }\n`\n\nconst InputRadio = styled(Input)`\n border-radius: ${BORDER_RADIUSES.CIRCLE};\n\n &:before {\n border-radius: ${BORDER_RADIUSES.CIRCLE};\n }\n &:after {\n border-radius: ${BORDER_RADIUSES.CIRCLE};\n }\n`\n\nconst InputCheckbox = styled(Input)`\n border-radius: ${BORDER_RADIUSES.LINE};\n\n &:before {\n border-radius: ${BORDER_RADIUSES.LINE};\n }\n\n &:after {\n border-radius: 0;\n }\n`\n\nconst Label = styled.label<{ $disabled?: boolean }>`\n ${TAP_HIGHLIGHT_STYLES};\n padding-left: ${SPACINGS.TWO};\n min-width: 0;\n flex: 0 0 calc(100% - ${INPUT_SIZE});\n\n ${({ $disabled }) =>\n $disabled &&\n css`\n color: ${COLORS.TEXT_LOW_CONTRAST};\n `};\n`\n\nexport type PropType = ComponentPropsWithRef<'input'>\n\nexport const createRadioOrCheckboxDefault = (\n type: 'radio' | 'checkbox'\n): ((props: PropType) => JSX.Element) => {\n const InputComponent = type === 'radio' ? InputRadio : InputCheckbox\n const displayName = kebabCaseToPascalCase(`input-${type}-default`)\n\n const InputSelectionComponent = (props: PropType) => {\n const { children, ...restProps } = props\n const isKeyNavigating = useAppSelector(selectKeyNavigating)\n\n return (\n \n \n -\n \n \n \n \n )\n }\n\n InputSelectionComponent.displayName = displayName\n return InputSelectionComponent\n}\n","import React from 'react'\nimport styled from 'styled-components'\nimport { Icon } from 'components/Icon/Icon'\nimport { InputRadioCard } from 'components/Input/InputRadio'\nimport { FONT_SIZES, FONT_WEIGHTS } from 'consts/fontSizes'\nimport { SPACINGS } from 'consts/spacings'\nimport { createSquareSizeStyles } from 'utils/createSquareSizeStyles'\nimport { PropType as RadioOrCheckboxPropType } from 'components/Input/createRadioOrCheckboxDefault'\nimport { SandboxLabelKeyType } from 'consts/sandbox'\nimport { IconType } from 'assets/icons'\n\nconst ICONS_BY_LABEL: {\n [key in SandboxLabelKeyType]: Extract<\n IconType,\n 'javascript' | 'typescript' | 'react'\n >\n} = {\n VANILLA_JS: 'javascript',\n VANILLA_TS: 'typescript',\n REACT_JS: 'react',\n REACT_TS: 'react'\n}\n\nconst RadioLabelContent = styled.span`\n display: flex;\n flex-direction: column;\n padding: ${SPACINGS.TWO};\n line-height: 1;\n text-align: center;\n align-items: center;\n font-size: ${FONT_SIZES.DETAIL};\n font-weight: ${FONT_WEIGHTS.MEDIUM};\n`\n\nconst RadioLabelSvg = styled(Icon)`\n ${createSquareSizeStyles('3rem')};\n margin-bottom: ${SPACINGS.TWO};\n`\n\ntype PropType = RadioOrCheckboxPropType & {\n framework: SandboxLabelKeyType\n}\n\nexport const SandboxSelectionInput = (props: PropType) => {\n const { children, framework, ...restProps } = props\n\n return (\n \n \n \n {children}\n \n \n )\n}\n","import React, { useCallback, useState } from 'react'\nimport styled from 'styled-components'\nimport { SPACINGS } from 'consts/spacings'\nimport { URLS } from 'consts/urls'\nimport { FONT_SIZES, FONT_WEIGHTS } from 'consts/fontSizes'\nimport { useEffect } from 'react'\nimport { ButtonPrimaryFilledWithLoading } from 'components/Button/ButtonPrimaryFilled'\nimport { createGapStyles } from 'utils/createGapStyles'\nimport { PropType } from 'components/Sandbox/SandboxSelection'\nimport { SandboxLabelKeyType, SANDBOX_SELECTION_SPACING } from 'consts/sandbox'\nimport { snakeCaseToKebabCase } from 'utils/stringCasing'\nimport { SandboxSelectionInput } from './SandboxSelectionInput'\n\nconst INPUT_RADIO_GROUP_NAME = 'choose-sandbox'\n\nconst SandboxSelectionFormWrapper = styled.form`\n display: flex;\n flex-direction: column;\n`\n\nconst Fieldset = styled.div`\n padding-bottom: ${SPACINGS.FIVE};\n`\n\nconst Legend = styled.h3`\n margin-bottom: ${SPACINGS.FOUR};\n font-size: ${FONT_SIZES.H3};\n\n width: 100%;\n font-weight: ${FONT_WEIGHTS.BOLD};\n line-height: 1.5;\n`\n\nconst SandboxSelectionList = styled.ul`\n ${createGapStyles(\n SANDBOX_SELECTION_SPACING,\n SANDBOX_SELECTION_SPACING,\n 'li'\n )};\n display: flex;\n flex-wrap: wrap;\n`\n\nconst SandboxSelection = styled.li`\n position: relative;\n flex: 0 0 50%;\n min-width: 0;\n`\n\nexport const SandboxSelectionForm = (props: PropType) => {\n const { sandboxes = [] } = props\n const [sandboxKey, setSandboxKey] = useState('')\n const [sandbox, setSandbox] = useState('')\n const isLoading = !!(sandboxKey && !sandbox)\n\n const loadSandbox = useCallback(\n async (key: SandboxLabelKeyType) => {\n const sandbox = sandboxes.find((sandbox) => sandbox.key === key)\n if (sandbox) setSandbox(await sandbox.createSandbox())\n },\n [sandboxes]\n )\n\n const onChange = useCallback((event: React.FormEvent) => {\n const key = event.currentTarget.value as SandboxLabelKeyType\n setSandbox('')\n setSandboxKey(key)\n }, [])\n\n useEffect(() => {\n if (sandboxKey) loadSandbox(sandboxKey)\n }, [sandboxKey])\n\n return (\n \n
\n Select CodeSandbox\n\n \n {sandboxes.map((sandbox) => (\n \n \n {sandbox.label}\n \n \n ))}\n \n
\n\n \n\n \n Create Sandbox\n \n \n )\n}\n","import { useEffect, PropsWithChildren, useRef } from 'react'\nimport { createPortal } from 'react-dom'\nimport { isBrowser } from 'utils/isBrowser'\n\nconst getExistingOrCreatePortalWrapper = (): HTMLElement | null => {\n if (!isBrowser) return null\n\n let wrapper = document.getElementById(PORTAL_ELEMENT_ID)\n if (wrapper) return wrapper\n\n wrapper = document.createElement('div')\n wrapper.id = PORTAL_ELEMENT_ID\n document.body.appendChild(wrapper)\n return wrapper\n}\n\nconst PORTAL_ELEMENT_ID = 'portal-root'\n\ntype PropType = PropsWithChildren<{}>\n\nexport const ModalPortal = (props: PropType) => {\n const { children } = props\n const portalWrapper = useRef(getExistingOrCreatePortalWrapper())\n const portalContent = useRef(\n isBrowser ? document.createElement('div') : null\n )\n\n useEffect(() => {\n if (!portalWrapper.current || !portalContent.current) return\n\n portalWrapper.current.appendChild(portalContent.current)\n\n return () => {\n if (!portalWrapper.current || !portalContent.current) return\n portalWrapper.current.removeChild(portalContent.current)\n }\n }, [])\n\n return createPortal(children, portalContent.current as HTMLDivElement)\n}\n","import React from 'react'\nimport styled from 'styled-components'\nimport FocusTrap from 'focus-trap-react'\nimport { SandboxSelectionType } from 'consts/sandbox'\nimport { ButtonBare, ButtonBareText } from 'components/Button/ButtonBare'\nimport { COLORS } from 'consts/themes'\nimport { LAYERS } from 'consts/layers'\nimport { SPACINGS } from 'consts/spacings'\nimport { MEDIA } from 'consts/breakpoints'\nimport { PAGE_FRAME_SPACING } from 'components/Page/PageFrame'\nimport { Icon } from 'components/Icon/Icon'\nimport { createSquareSizeStyles } from 'utils/createSquareSizeStyles'\nimport { SandboxSelectionForm } from 'components/Sandbox/SandboxSelectionForm'\nimport { ModalPortal } from 'components/Modal/ModalPortal'\nimport { BORDER_RADIUSES } from 'consts/border'\n\nexport const SELECT_CODESANDBOX_DIALOG_ID = 'select-codesandbox-dialog'\nconst MODAL_MAX_WIDTH = '36rem'\nconst DESKTOP_END_SPACING = SPACINGS.TEN\n\nconst BUTTON_SIZE = '4rem'\nconst ICON_SIZE = '1.8rem'\n\nconst SandboxSelectionModalWrapper = styled.div`\n z-index: ${LAYERS.SEARCH + LAYERS.STEP};\n padding: ${PAGE_FRAME_SPACING} 0;\n background-color: ${COLORS.BACKGROUND_SITE};\n position: fixed;\n left: 0;\n right: 0;\n top: 0;\n margin: auto;\n width: 100%;\n display: flex;\n margin: 0 auto;\n flex-direction: column;\n height: 100vh;\n max-width: ${MODAL_MAX_WIDTH};\n\n ${MEDIA.DESKTOP} {\n box-shadow: 0 0 0 0.1rem ${COLORS.DETAIL_LOW_CONTRAST};\n top: ${DESKTOP_END_SPACING};\n max-height: calc(100vh - ${DESKTOP_END_SPACING} * 2);\n height: auto;\n border-radius: ${BORDER_RADIUSES.SOFT};\n }\n`\n\nconst Overlay = styled.div`\n z-index: ${LAYERS.SEARCH};\n position: fixed;\n top: 0;\n right: 0;\n left: 0;\n bottom: 0;\n background-color: ${COLORS.BACKGROUND_SITE};\n\n ${MEDIA.DESKTOP} {\n opacity: 0.9;\n }\n`\n\nconst CloseButton = styled(ButtonBare)`\n ${createSquareSizeStyles(BUTTON_SIZE)};\n z-index: ${LAYERS.STEP};\n display: flex;\n align-items: center;\n justify-content: center;\n position: absolute;\n top: ${PAGE_FRAME_SPACING};\n right: ${PAGE_FRAME_SPACING};\n margin-right: calc((${BUTTON_SIZE} - ${ICON_SIZE}) / 2 * -1);\n margin-top: -${SPACINGS.CUSTOM(() => 0.4)};\n\n ${ButtonBareText} {\n display: flex;\n }\n`\n\nconst ScrollArea = styled.div`\n padding: 0 ${PAGE_FRAME_SPACING};\n overflow: auto;\n position: relative;\n max-height: 100%;\n`\n\ntype PropType = {\n sandboxes: SandboxSelectionType[]\n closeModal: () => void\n}\n\nexport const SandboxSelectionModal = (props: PropType) => {\n const { sandboxes, closeModal } = props\n\n return (\n \n \n
\n \n\n \n \n \n \n\n \n \n \n \n
\n
\n
\n )\n}\n"],"names":["InputRadioDefault","createRadioOrCheckboxDefault","InputRadioCard","createRadioOrCheckboxCard","RadioOrCheckboxCardWrapper","styled","label","withConfig","displayName","componentId","TAP_HIGHLIGHT_STYLES","CARD_STYLES","LabelContent","span","LAYERS","STEP","Highlight","BRAND_GRADIENT_BACKGROUND_STYLES","BORDER_SIZES","DETAIL","COLORS","BACKGROUND_CODE","OUTLINE","Input","input","KEY_NAVIGATING_STYLES","BORDER_RADIUSES","CARD","createSquareSizeStyles","DETAIL_HIGH_CONTRAST","type","kebabCaseToPascalCase","InputSelectionComponent","props","children","restProps","isKeyNavigating","useAppSelector","selectKeyNavigating","React","htmlFor","id","Object","assign","$isKeyNavigating","INPUT_SIZE","RadioOrCheckboxDefaultWrapper","InputWrapper","InputLineHeight","BACKGROUND_SITE","DETAIL_MEDIUM_CONTRAST","InputRadio","CIRCLE","InputCheckbox","LINE","Label","SPACINGS","TWO","_ref","$disabled","css","TEXT_LOW_CONTRAST","InputComponent","disabled","ICONS_BY_LABEL","VANILLA_JS","VANILLA_TS","REACT_JS","REACT_TS","RadioLabelContent","FONT_SIZES","FONT_WEIGHTS","MEDIUM","RadioLabelSvg","Icon","SandboxSelectionInput","framework","svg","INPUT_RADIO_GROUP_NAME","SandboxSelectionFormWrapper","form","Fieldset","div","FIVE","Legend","h3","FOUR","H3","BOLD","SandboxSelectionList","ul","createGapStyles","SANDBOX_SELECTION_SPACING","SandboxSelection","li","SandboxSelectionForm","sandboxes","sandboxKey","setSandboxKey","useState","sandbox","setSandbox","isLoading","loadSandbox","useCallback","async","find","key","createSandbox","onChange","event","currentTarget","value","useEffect","action","URLS","CODESANDBOX_DEFINE","method","target","role","map","name","snakeCaseToKebabCase","checked","ButtonPrimaryFilledWithLoading","PORTAL_ELEMENT_ID","ModalPortal","portalWrapper","useRef","getExistingOrCreatePortalWrapper","isBrowser","wrapper","document","getElementById","createElement","body","appendChild","portalContent","current","removeChild","createPortal","SELECT_CODESANDBOX_DIALOG_ID","DESKTOP_END_SPACING","TEN","BUTTON_SIZE","ICON_SIZE","SandboxSelectionModalWrapper","SEARCH","PAGE_FRAME_SPACING","MEDIA","DESKTOP","DETAIL_LOW_CONTRAST","SOFT","Overlay","CloseButton","ButtonBare","CUSTOM","ButtonBareText","ScrollArea","SandboxSelectionModal","closeModal","FocusTrap","active","onClick","size"],"sourceRoot":""} \ No newline at end of file diff --git a/docs/6458-0476e2238b662231a0dc.js b/docs/6458-0476e2238b662231a0dc.js deleted file mode 100644 index 97249ea7f..000000000 --- a/docs/6458-0476e2238b662231a0dc.js +++ /dev/null @@ -1,2 +0,0 @@ -"use strict";(self.webpackChunkembla_carousel_docs=self.webpackChunkembla_carousel_docs||[]).push([[6458],{6458:function(n,e,t){t.r(e),e.default='import React, {\n PropsWithChildren,\n useCallback,\n useEffect,\n useState\n} from \'react\'\nimport { EmblaCarouselType } from \'embla-carousel\'\n\ntype UsePrevNextButtonsType = {\n prevBtnDisabled: boolean\n nextBtnDisabled: boolean\n onPrevButtonClick: () => void\n onNextButtonClick: () => void\n}\n\nexport const usePrevNextButtons = (\n emblaApi: EmblaCarouselType | undefined,\n onButtonClick?: (emblaApi: EmblaCarouselType) => void\n): UsePrevNextButtonsType => {\n const [prevBtnDisabled, setPrevBtnDisabled] = useState(true)\n const [nextBtnDisabled, setNextBtnDisabled] = useState(true)\n\n const onPrevButtonClick = useCallback(() => {\n if (!emblaApi) return\n emblaApi.scrollPrev()\n if (onButtonClick) onButtonClick(emblaApi)\n }, [emblaApi, onButtonClick])\n\n const onNextButtonClick = useCallback(() => {\n if (!emblaApi) return\n emblaApi.scrollNext()\n if (onButtonClick) onButtonClick(emblaApi)\n }, [emblaApi, onButtonClick])\n\n const onSelect = useCallback((emblaApi: EmblaCarouselType) => {\n setPrevBtnDisabled(!emblaApi.canScrollPrev())\n setNextBtnDisabled(!emblaApi.canScrollNext())\n }, [])\n\n useEffect(() => {\n if (!emblaApi) return\n\n onSelect(emblaApi)\n emblaApi.on(\'reInit\', onSelect).on(\'select\', onSelect)\n }, [emblaApi, onSelect])\n\n return {\n prevBtnDisabled,\n nextBtnDisabled,\n onPrevButtonClick,\n onNextButtonClick\n }\n}\n\ntype PropType = PropsWithChildren<\n React.DetailedHTMLProps<\n React.ButtonHTMLAttributes,\n HTMLButtonElement\n >\n>\n\nexport const PrevButton: React.FC = (props) => {\n const { children, ...restProps } = props\n\n return (\n \n \n \n \n {children}\n \n )\n}\n\nexport const NextButton: React.FC = (props) => {\n const { children, ...restProps } = props\n\n return (\n \n \n \n \n {children}\n \n )\n}\n'}}]); -//# sourceMappingURL=6458-0476e2238b662231a0dc.js.map \ No newline at end of file diff --git a/docs/6458-0476e2238b662231a0dc.js.map b/docs/6458-0476e2238b662231a0dc.js.map deleted file mode 100644 index 61d5445d8..000000000 --- a/docs/6458-0476e2238b662231a0dc.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"6458-0476e2238b662231a0dc.js","mappings":"uIAAA,ulG","sources":["webpack://embla-carousel-docs/./src/components/Sandbox/React/SandboxFilesDist/EmblaCarouselArrowButtons.tsx"],"sourcesContent":["export default \"import React, {\\n PropsWithChildren,\\n useCallback,\\n useEffect,\\n useState\\n} from 'react'\\nimport { EmblaCarouselType } from 'embla-carousel'\\n\\ntype UsePrevNextButtonsType = {\\n prevBtnDisabled: boolean\\n nextBtnDisabled: boolean\\n onPrevButtonClick: () => void\\n onNextButtonClick: () => void\\n}\\n\\nexport const usePrevNextButtons = (\\n emblaApi: EmblaCarouselType | undefined,\\n onButtonClick?: (emblaApi: EmblaCarouselType) => void\\n): UsePrevNextButtonsType => {\\n const [prevBtnDisabled, setPrevBtnDisabled] = useState(true)\\n const [nextBtnDisabled, setNextBtnDisabled] = useState(true)\\n\\n const onPrevButtonClick = useCallback(() => {\\n if (!emblaApi) return\\n emblaApi.scrollPrev()\\n if (onButtonClick) onButtonClick(emblaApi)\\n }, [emblaApi, onButtonClick])\\n\\n const onNextButtonClick = useCallback(() => {\\n if (!emblaApi) return\\n emblaApi.scrollNext()\\n if (onButtonClick) onButtonClick(emblaApi)\\n }, [emblaApi, onButtonClick])\\n\\n const onSelect = useCallback((emblaApi: EmblaCarouselType) => {\\n setPrevBtnDisabled(!emblaApi.canScrollPrev())\\n setNextBtnDisabled(!emblaApi.canScrollNext())\\n }, [])\\n\\n useEffect(() => {\\n if (!emblaApi) return\\n\\n onSelect(emblaApi)\\n emblaApi.on('reInit', onSelect).on('select', onSelect)\\n }, [emblaApi, onSelect])\\n\\n return {\\n prevBtnDisabled,\\n nextBtnDisabled,\\n onPrevButtonClick,\\n onNextButtonClick\\n }\\n}\\n\\ntype PropType = PropsWithChildren<\\n React.DetailedHTMLProps<\\n React.ButtonHTMLAttributes,\\n HTMLButtonElement\\n >\\n>\\n\\nexport const PrevButton: React.FC = (props) => {\\n const { children, ...restProps } = props\\n\\n return (\\n \\n \\n \\n \\n {children}\\n \\n )\\n}\\n\\nexport const NextButton: React.FC = (props) => {\\n const { children, ...restProps } = props\\n\\n return (\\n \\n \\n \\n \\n {children}\\n \\n )\\n}\\n\";"],"names":[],"sourceRoot":""} \ No newline at end of file diff --git a/docs/6458-f2ffa797135f74c8165a.js b/docs/6458-f2ffa797135f74c8165a.js new file mode 100644 index 000000000..af4a413cd --- /dev/null +++ b/docs/6458-f2ffa797135f74c8165a.js @@ -0,0 +1,2 @@ +"use strict";(self.webpackChunkembla_carousel_docs=self.webpackChunkembla_carousel_docs||[]).push([[6458],{6458:function(n,e,t){t.r(e),e.default='import React, {\n ComponentPropsWithRef,\n useCallback,\n useEffect,\n useState\n} from \'react\'\nimport { EmblaCarouselType } from \'embla-carousel\'\n\ntype UsePrevNextButtonsType = {\n prevBtnDisabled: boolean\n nextBtnDisabled: boolean\n onPrevButtonClick: () => void\n onNextButtonClick: () => void\n}\n\nexport const usePrevNextButtons = (\n emblaApi: EmblaCarouselType | undefined,\n onButtonClick?: (emblaApi: EmblaCarouselType) => void\n): UsePrevNextButtonsType => {\n const [prevBtnDisabled, setPrevBtnDisabled] = useState(true)\n const [nextBtnDisabled, setNextBtnDisabled] = useState(true)\n\n const onPrevButtonClick = useCallback(() => {\n if (!emblaApi) return\n emblaApi.scrollPrev()\n if (onButtonClick) onButtonClick(emblaApi)\n }, [emblaApi, onButtonClick])\n\n const onNextButtonClick = useCallback(() => {\n if (!emblaApi) return\n emblaApi.scrollNext()\n if (onButtonClick) onButtonClick(emblaApi)\n }, [emblaApi, onButtonClick])\n\n const onSelect = useCallback((emblaApi: EmblaCarouselType) => {\n setPrevBtnDisabled(!emblaApi.canScrollPrev())\n setNextBtnDisabled(!emblaApi.canScrollNext())\n }, [])\n\n useEffect(() => {\n if (!emblaApi) return\n\n onSelect(emblaApi)\n emblaApi.on(\'reInit\', onSelect).on(\'select\', onSelect)\n }, [emblaApi, onSelect])\n\n return {\n prevBtnDisabled,\n nextBtnDisabled,\n onPrevButtonClick,\n onNextButtonClick\n }\n}\n\ntype PropType = ComponentPropsWithRef<\'button\'>\n\nexport const PrevButton: React.FC = (props) => {\n const { children, ...restProps } = props\n\n return (\n \n \n \n \n {children}\n \n )\n}\n\nexport const NextButton: React.FC = (props) => {\n const { children, ...restProps } = props\n\n return (\n \n \n \n \n {children}\n \n )\n}\n'}}]); +//# sourceMappingURL=6458-f2ffa797135f74c8165a.js.map \ No newline at end of file diff --git a/docs/6458-f2ffa797135f74c8165a.js.map b/docs/6458-f2ffa797135f74c8165a.js.map new file mode 100644 index 000000000..28e1cacc1 --- /dev/null +++ b/docs/6458-f2ffa797135f74c8165a.js.map @@ -0,0 +1 @@ +{"version":3,"file":"6458-f2ffa797135f74c8165a.js","mappings":"uIAAA,2/F","sources":["webpack://embla-carousel-docs/./src/components/Sandbox/React/SandboxFilesDist/EmblaCarouselArrowButtons.tsx"],"sourcesContent":["export default \"import React, {\\n ComponentPropsWithRef,\\n useCallback,\\n useEffect,\\n useState\\n} from 'react'\\nimport { EmblaCarouselType } from 'embla-carousel'\\n\\ntype UsePrevNextButtonsType = {\\n prevBtnDisabled: boolean\\n nextBtnDisabled: boolean\\n onPrevButtonClick: () => void\\n onNextButtonClick: () => void\\n}\\n\\nexport const usePrevNextButtons = (\\n emblaApi: EmblaCarouselType | undefined,\\n onButtonClick?: (emblaApi: EmblaCarouselType) => void\\n): UsePrevNextButtonsType => {\\n const [prevBtnDisabled, setPrevBtnDisabled] = useState(true)\\n const [nextBtnDisabled, setNextBtnDisabled] = useState(true)\\n\\n const onPrevButtonClick = useCallback(() => {\\n if (!emblaApi) return\\n emblaApi.scrollPrev()\\n if (onButtonClick) onButtonClick(emblaApi)\\n }, [emblaApi, onButtonClick])\\n\\n const onNextButtonClick = useCallback(() => {\\n if (!emblaApi) return\\n emblaApi.scrollNext()\\n if (onButtonClick) onButtonClick(emblaApi)\\n }, [emblaApi, onButtonClick])\\n\\n const onSelect = useCallback((emblaApi: EmblaCarouselType) => {\\n setPrevBtnDisabled(!emblaApi.canScrollPrev())\\n setNextBtnDisabled(!emblaApi.canScrollNext())\\n }, [])\\n\\n useEffect(() => {\\n if (!emblaApi) return\\n\\n onSelect(emblaApi)\\n emblaApi.on('reInit', onSelect).on('select', onSelect)\\n }, [emblaApi, onSelect])\\n\\n return {\\n prevBtnDisabled,\\n nextBtnDisabled,\\n onPrevButtonClick,\\n onNextButtonClick\\n }\\n}\\n\\ntype PropType = ComponentPropsWithRef<'button'>\\n\\nexport const PrevButton: React.FC = (props) => {\\n const { children, ...restProps } = props\\n\\n return (\\n \\n \\n \\n \\n {children}\\n \\n )\\n}\\n\\nexport const NextButton: React.FC = (props) => {\\n const { children, ...restProps } = props\\n\\n return (\\n \\n \\n \\n \\n {children}\\n \\n )\\n}\\n\";"],"names":[],"sourceRoot":""} \ No newline at end of file diff --git a/docs/6655-eac02025dc5c9764ddda.js.map b/docs/6655-eac02025dc5c9764ddda.js.map index 58d2c49fb..026a066b4 100644 --- a/docs/6655-eac02025dc5c9764ddda.js.map +++ b/docs/6655-eac02025dc5c9764ddda.js.map @@ -1 +1 @@ -{"version":3,"file":"6655-eac02025dc5c9764ddda.js","mappings":"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","sources":["webpack://embla-carousel-docs/./src/components/Sandbox/React/SandboxFilesSrc/Autoplay/EmblaCarousel.tsx","webpack://embla-carousel-docs/../src/components/Options.ts","webpack://embla-carousel-docs/../src/components/Autoplay.ts"],"sourcesContent":["import React, { useCallback, useEffect, useState } from 'react'\nimport { EmblaOptionsType } from 'embla-carousel'\nimport useEmblaCarousel from 'embla-carousel-react'\nimport Autoplay from 'embla-carousel-autoplay'\nimport {\n NextButton,\n PrevButton,\n usePrevNextButtons\n} from '../EmblaCarouselArrowButtons'\n\ntype PropType = {\n slides: number[]\n options?: EmblaOptionsType\n}\n\nconst EmblaCarousel: React.FC = (props) => {\n const { slides, options } = props\n const [emblaRef, emblaApi] = useEmblaCarousel(options, [\n Autoplay({ playOnInit: false, delay: 3000 })\n ])\n const [isPlaying, setIsPlaying] = useState(false)\n\n const {\n prevBtnDisabled,\n nextBtnDisabled,\n onPrevButtonClick,\n onNextButtonClick\n } = usePrevNextButtons(emblaApi)\n\n const onButtonAutoplayClick = useCallback(\n (callback: () => void) => {\n const autoplay = emblaApi?.plugins()?.autoplay\n if (!autoplay) return\n\n const resetOrStop =\n autoplay.options.stopOnInteraction === false\n ? autoplay.reset\n : autoplay.stop\n\n resetOrStop()\n callback()\n },\n [emblaApi]\n )\n\n const toggleAutoplay = useCallback(() => {\n const autoplay = emblaApi?.plugins()?.autoplay\n if (!autoplay) return\n\n const playOrStop = autoplay.isPlaying() ? autoplay.stop : autoplay.play\n playOrStop()\n }, [emblaApi])\n\n useEffect(() => {\n const autoplay = emblaApi?.plugins()?.autoplay\n if (!autoplay) return\n\n setIsPlaying(autoplay.isPlaying())\n emblaApi\n .on('autoplay:play', () => setIsPlaying(true))\n .on('autoplay:stop', () => setIsPlaying(false))\n .on('reInit', () => setIsPlaying(autoplay.isPlaying()))\n }, [emblaApi])\n\n return (\n
\n
\n
\n {slides.map((index) => (\n
\n
\n {index + 1}\n
\n
\n ))}\n
\n
\n\n
\n
\n onButtonAutoplayClick(onPrevButtonClick)}\n disabled={prevBtnDisabled}\n />\n onButtonAutoplayClick(onNextButtonClick)}\n disabled={nextBtnDisabled}\n />\n
\n\n \n
\n
\n )\n}\n\nexport default EmblaCarousel\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 resume = true\n let jump = false\n let timer = 0\n\n function init(\n emblaApiInstance: EmblaCarouselType,\n optionsHandler: OptionsHandlerType\n ): void {\n emblaApi = emblaApiInstance\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 if (emblaApi.scrollSnapList().length <= 1) return\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 const container = emblaApi.containerNode()\n\n emblaApi.on('pointerDown', stopTimer)\n\n if (!options.stopOnInteraction) {\n emblaApi.on('pointerUp', startTimer)\n }\n\n if (options.stopOnMouseEnter) {\n eventStore.add(root, 'mouseenter', () => {\n resume = false\n stopTimer()\n })\n\n if (!options.stopOnInteraction) {\n eventStore.add(root, 'mouseleave', () => {\n resume = true\n startTimer()\n })\n }\n }\n\n if (options.stopOnFocusIn) {\n eventStore.add(container, 'focusin', stopTimer)\n\n if (!options.stopOnInteraction) {\n eventStore.add(container, 'focusout', startTimer)\n }\n }\n\n eventStore.add(ownerDocument, 'visibilitychange', visibilityChange)\n\n if (options.playOnInit && !documentIsHidden()) startTimer()\n }\n\n function destroy(): void {\n emblaApi.off('pointerDown', stopTimer).off('pointerUp', startTimer)\n stopTimer()\n destroyed = true\n playing = false\n }\n\n function startTimer(): void {\n if (destroyed) return\n if (!resume) 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 stopTimer(): 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 visibilityChange(): void {\n if (documentIsHidden()) {\n resume = playing\n return stopTimer()\n }\n\n if (resume) startTimer()\n }\n\n function documentIsHidden(): boolean {\n const { ownerDocument } = emblaApi.internalEngine()\n return ownerDocument.visibilityState === 'hidden'\n }\n\n function play(jumpOverride?: boolean): void {\n if (typeof jumpOverride !== 'undefined') jump = jumpOverride\n resume = true\n startTimer()\n }\n\n function stop(): void {\n if (playing) stopTimer()\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 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) stopTimer()\n\n if (emblaApi.canScrollNext()) {\n emblaApi.scrollNext(jump)\n } else {\n emblaApi.scrollTo(0, jump)\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"],"names":["props","slides","options","emblaRef","emblaApi","useEmblaCarousel","Autoplay","playOnInit","delay","isPlaying","setIsPlaying","useState","prevBtnDisabled","nextBtnDisabled","onPrevButtonClick","onNextButtonClick","usePrevNextButtons","onButtonAutoplayClick","useCallback","callback","_emblaApi$plugins","autoplay","plugins","stopOnInteraction","reset","stop","toggleAutoplay","_emblaApi$plugins2","play","useEffect","_emblaApi$plugins3","on","React","className","ref","map","index","key","PrevButton","onClick","disabled","NextButton","type","defaultOptions","active","breakpoints","jump","stopOnFocusIn","stopOnMouseEnter","stopOnLastSnap","rootNode","userOptions","destroyed","playing","resume","timer","startTimer","emit","ownerWindow","internalEngine","clearInterval","setInterval","next","stopTimer","visibilityChange","documentIsHidden","ownerDocument","visibilityState","jumpOverride","nextIndex","clone","add","get","lastIndex","scrollSnapList","length","canScrollNext","scrollNext","scrollTo","name","init","emblaApiInstance","optionsHandler","mergeOptions","optionsAtMedia","optionsBase","globalOptions","allOptions","eventStore","emblaRoot","root","container","containerNode","destroy","off","undefined"],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"6655-eac02025dc5c9764ddda.js","mappings":"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","sources":["webpack://embla-carousel-docs/./src/components/Sandbox/React/SandboxFilesSrc/Autoplay/EmblaCarousel.tsx","webpack://embla-carousel-docs/../src/components/Options.ts","webpack://embla-carousel-docs/../src/components/Autoplay.ts"],"sourcesContent":["import React, { useCallback, useEffect, useState } from 'react'\nimport { EmblaOptionsType } from 'embla-carousel'\nimport useEmblaCarousel from 'embla-carousel-react'\nimport Autoplay from 'embla-carousel-autoplay'\nimport {\n NextButton,\n PrevButton,\n usePrevNextButtons\n} from '../EmblaCarouselArrowButtons'\n\ntype PropType = {\n slides: number[]\n options?: EmblaOptionsType\n}\n\nconst EmblaCarousel: React.FC = (props) => {\n const { slides, options } = props\n const [emblaRef, emblaApi] = useEmblaCarousel(options, [\n Autoplay({ playOnInit: false, delay: 3000 })\n ])\n const [isPlaying, setIsPlaying] = useState(false)\n\n const {\n prevBtnDisabled,\n nextBtnDisabled,\n onPrevButtonClick,\n onNextButtonClick\n } = usePrevNextButtons(emblaApi)\n\n const onButtonAutoplayClick = useCallback(\n (callback: () => void) => {\n const autoplay = emblaApi?.plugins()?.autoplay\n if (!autoplay) return\n\n const resetOrStop =\n autoplay.options.stopOnInteraction === false\n ? autoplay.reset\n : autoplay.stop\n\n resetOrStop()\n callback()\n },\n [emblaApi]\n )\n\n const toggleAutoplay = useCallback(() => {\n const autoplay = emblaApi?.plugins()?.autoplay\n if (!autoplay) return\n\n const playOrStop = autoplay.isPlaying() ? autoplay.stop : autoplay.play\n playOrStop()\n }, [emblaApi])\n\n useEffect(() => {\n const autoplay = emblaApi?.plugins()?.autoplay\n if (!autoplay) return\n\n setIsPlaying(autoplay.isPlaying())\n emblaApi\n .on('autoplay:play', () => setIsPlaying(true))\n .on('autoplay:stop', () => setIsPlaying(false))\n .on('reInit', () => setIsPlaying(autoplay.isPlaying()))\n }, [emblaApi])\n\n return (\n
\n
\n
\n {slides.map((index) => (\n
\n
\n {index + 1}\n
\n
\n ))}\n
\n
\n\n
\n
\n onButtonAutoplayClick(onPrevButtonClick)}\n disabled={prevBtnDisabled}\n />\n onButtonAutoplayClick(onNextButtonClick)}\n disabled={nextBtnDisabled}\n />\n
\n\n \n
\n
\n )\n}\n\nexport default EmblaCarousel\n","import { CreateOptionsType } from 'embla-carousel'\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 {\n CreatePluginType,\n OptionsHandlerType,\n EmblaCarouselType\n} from 'embla-carousel'\n\ndeclare module 'embla-carousel' {\n interface EmblaPluginsType {\n autoplay: AutoplayType\n }\n\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 resume = true\n let jump = false\n let timer = 0\n\n function init(\n emblaApiInstance: EmblaCarouselType,\n optionsHandler: OptionsHandlerType\n ): void {\n emblaApi = emblaApiInstance\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 if (emblaApi.scrollSnapList().length <= 1) return\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 const container = emblaApi.containerNode()\n\n emblaApi.on('pointerDown', stopTimer)\n\n if (!options.stopOnInteraction) {\n emblaApi.on('pointerUp', startTimer)\n }\n\n if (options.stopOnMouseEnter) {\n eventStore.add(root, 'mouseenter', () => {\n resume = false\n stopTimer()\n })\n\n if (!options.stopOnInteraction) {\n eventStore.add(root, 'mouseleave', () => {\n resume = true\n startTimer()\n })\n }\n }\n\n if (options.stopOnFocusIn) {\n eventStore.add(container, 'focusin', stopTimer)\n\n if (!options.stopOnInteraction) {\n eventStore.add(container, 'focusout', startTimer)\n }\n }\n\n eventStore.add(ownerDocument, 'visibilitychange', visibilityChange)\n\n if (options.playOnInit && !documentIsHidden()) startTimer()\n }\n\n function destroy(): void {\n emblaApi.off('pointerDown', stopTimer).off('pointerUp', startTimer)\n stopTimer()\n destroyed = true\n playing = false\n }\n\n function startTimer(): void {\n if (destroyed) return\n if (!resume) 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 stopTimer(): 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 visibilityChange(): void {\n if (documentIsHidden()) {\n resume = playing\n return stopTimer()\n }\n\n if (resume) startTimer()\n }\n\n function documentIsHidden(): boolean {\n const { ownerDocument } = emblaApi.internalEngine()\n return ownerDocument.visibilityState === 'hidden'\n }\n\n function play(jumpOverride?: boolean): void {\n if (typeof jumpOverride !== 'undefined') jump = jumpOverride\n resume = true\n startTimer()\n }\n\n function stop(): void {\n if (playing) stopTimer()\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 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) stopTimer()\n\n if (emblaApi.canScrollNext()) {\n emblaApi.scrollNext(jump)\n } else {\n emblaApi.scrollTo(0, jump)\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\ndeclare namespace Autoplay {\n let globalOptions: AutoplayOptionsType | undefined\n}\n\nAutoplay.globalOptions = undefined\n\nexport default Autoplay\n"],"names":["props","slides","options","emblaRef","emblaApi","useEmblaCarousel","Autoplay","playOnInit","delay","isPlaying","setIsPlaying","useState","prevBtnDisabled","nextBtnDisabled","onPrevButtonClick","onNextButtonClick","usePrevNextButtons","onButtonAutoplayClick","useCallback","callback","_emblaApi$plugins","autoplay","plugins","stopOnInteraction","reset","stop","toggleAutoplay","_emblaApi$plugins2","play","useEffect","_emblaApi$plugins3","on","React","className","ref","map","index","key","PrevButton","onClick","disabled","NextButton","type","defaultOptions","active","breakpoints","jump","stopOnFocusIn","stopOnMouseEnter","stopOnLastSnap","rootNode","userOptions","destroyed","playing","resume","timer","startTimer","emit","ownerWindow","internalEngine","clearInterval","setInterval","next","stopTimer","visibilityChange","documentIsHidden","ownerDocument","visibilityState","jumpOverride","nextIndex","clone","add","get","lastIndex","scrollSnapList","length","canScrollNext","scrollNext","scrollTo","name","init","emblaApiInstance","optionsHandler","mergeOptions","optionsAtMedia","optionsBase","globalOptions","allOptions","eventStore","emblaRoot","root","container","containerNode","destroy","off","undefined"],"sourceRoot":""} \ No newline at end of file diff --git a/docs/8794-c37a3f0ed6ae576cafd0.js b/docs/8794-c37a3f0ed6ae576cafd0.js new file mode 100644 index 000000000..27845c522 --- /dev/null +++ b/docs/8794-c37a3f0ed6ae576cafd0.js @@ -0,0 +1,2 @@ +"use strict";(self.webpackChunkembla_carousel_docs=self.webpackChunkembla_carousel_docs||[]).push([[8794],{8794:function(e,t,n){n.r(t),n.d(t,{SiteNavigationMenuCompact:function(){return U}});var o=n(4041),a=n(3057),i=n(8362),l=n(3490),r=n(7254),c=n(3402),d=n(6341),m=n(4393),u=n(5335),s=n(9917),g=n(5513),p=n(1801),f=n(1381),E=n(7259),h=n(430),b=n(7993),T=n(8783),_=n(1658),N=n(7030),v=n(5078),C=n(8342),S=n(7307),y=n(3446),I=n(5614),w=n(9416),O=n(8152);const R="36rem",A=a.default.div.withConfig({displayName:"SiteNavigationMenuCompact__SiteNavigationMenuCompactWrapper",componentId:"sc-16s07xy-0"})(["background-color:",";position:relative;height:100%;z-index:",";padding-right:",";padding-left:",";padding-bottom:",";padding-top:",";","{display:none;}"],d.lm.BACKGROUND_SITE,p.R.STEP,g.E,g.E,s.uF,s.uF,u.Rn.DESKTOP),x=(0,a.default)(_.t).withConfig({displayName:"SiteNavigationMenuCompact__MenuTabs",componentId:"sc-16s07xy-1"})(["height:100%;","{height:",";z-index:",";position:absolute;bottom:0;left:0;right:0;padding-left:",";padding-right:",";margin-bottom:0;background-color:",";border-top:"," solid ",";border-bottom:0;justify-content:center;&:before,&:after{display:none;}}","{max-width:",";overflow:visible;padding-bottom:0;&:before,&:after{display:none;}}","{position:relative;height:100%;outline-offset:-",";overflow:hidden;&:before,&:after{position:absolute;z-index:",";left:-",";right:-",";content:'';}&:before{",";top:-",";}&:after{",";bottom:-",";}&:focus{z-index:",";}}","{flex-grow:1;justify-content:center;max-width:calc("," / 2);}"],N.KQ,s.uF,2*p.R.STEP,g.E,g.E,d.lm.BACKGROUND_SITE,f.C.DETAIL,d.lm.DETAIL_LOW_CONTRAST,N.bZ,R,C.c,f.C.OUTLINE,p.R.STEP,g.E,g.E,(0,w.lJ)("top"),w.Ro,(0,w.lJ)("bottom"),w.Ro,p.R.HEADER,v.I,R),M=a.default.div.withConfig({displayName:"SiteNavigationMenuCompact__ScrollArea",componentId:"sc-16s07xy-2"})(["",";padding-top:",";padding-bottom:",";max-width:",";overflow:auto;scrollbar-gutter:stable both-edges;position:relative;max-height:100%;margin-left:auto;margin-right:auto;"],(0,w.pV)("y"),m.F.TWO,m.F.FOUR,R),G=(0,a.default)(O.UW).withConfig({displayName:"SiteNavigationMenuCompact__ThemeToggleButton",componentId:"sc-16s07xy-3"})(["background-color:",";width:100%;justify-content:space-between;padding:1.8rem 2rem;margin-top:",";height:auto;margin-right:0;margin-left:0;border-radius:",";overflow:hidden;",",","{left:auto;right:2rem;transform:translateY(-50%);}"],d.lm.BACKGROUND_CODE,m.F.FOUR,f.Y.BOX,O.it,O.cz),D=a.default.span.withConfig({displayName:"SiteNavigationMenuCompact__ThemeToggleText",componentId:"sc-16s07xy-4"})(["color:",";"],d.lm.TEXT_MEDIUM_CONTRAST),F=(0,a.default)(b.j).withConfig({displayName:"SiteNavigationMenuCompact__MiscLinks",componentId:"sc-16s07xy-5"})(["padding-top:",";justify-content:center;"],m.F.THREE),U=()=>{const e=(0,i.GV)(r.U$),t=(0,i.GV)(l.SJ),n=(0,i.GV)((0,y.s4)(I.l.SITE_NAVIGATION)),a=(0,o.useRef)(n),m=(0,i.GV)(c.eI),{0:u,1:s}=(0,o.useState)(!0),g=t===d.$.LIGHT?d.$.DARK:d.$.LIGHT;return(0,o.useEffect)((()=>{if(n!==a.current){var e;const t=!(null===(e=m.items)||void 0===e||!e.length);s(t),a.current=n}}),[n,m]),o.createElement(A,null,o.createElement(x,{$isKeyNavigating:e},o.createElement(T.O,{tab:E.e0.TABS.MAIN_MENU},o.createElement(M,null,o.createElement("ul",null,o.createElement(S.E,null),o.createElement("li",null,o.createElement(G,null,o.createElement(D,null,"Activate ",g," theme"))),o.createElement("li",null,o.createElement(F,null))))),o.createElement(T.O,{tab:E.e0.TABS.ON_THIS_PAGE,disabled:!u},o.createElement(M,null,o.createElement(h.M,null)))))}},8783:function(e,t,n){n.d(t,{O:function(){return a}});var o=n(4041);const a=e=>o.createElement(o.Fragment,e)}}]); +//# sourceMappingURL=8794-c37a3f0ed6ae576cafd0.js.map \ No newline at end of file diff --git a/docs/8794-c37a3f0ed6ae576cafd0.js.map b/docs/8794-c37a3f0ed6ae576cafd0.js.map new file mode 100644 index 000000000..cb89d203e --- /dev/null +++ b/docs/8794-c37a3f0ed6ae576cafd0.js.map @@ -0,0 +1 @@ +{"version":3,"file":"8794-c37a3f0ed6ae576cafd0.js","mappings":"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","sources":["webpack://embla-carousel-docs/./src/components/SiteNavigation/SiteNavigationMenuCompact.tsx","webpack://embla-carousel-docs/./src/components/Tabs/TabsItem.tsx"],"sourcesContent":["import React, { useEffect, useRef, useState } from 'react'\nimport styled from 'styled-components'\nimport { useAppSelector } from 'hooks/useRedux'\nimport { selectTheme } from 'components/Theme/themeReducer'\nimport { selectKeyNavigating } from 'components/KeyEvents/keyEventsReducer'\nimport { selectTableOfContents } from 'components/TableOfContents/tableOfContentsReducer'\nimport { COLORS, THEME_KEYS } from 'consts/themes'\nimport { SPACINGS } from 'consts/spacings'\nimport { MEDIA } from 'consts/breakpoints'\nimport { HEADER_HEIGHT } from 'components/Header/Header'\nimport { PAGE_FRAME_SPACING } from 'components/Page/PageFrame'\nimport { LAYERS } from 'consts/layers'\nimport { BORDER_RADIUSES, BORDER_SIZES } from 'consts/border'\nimport { TABS_SITE_NAVIGATION } from 'consts/tabs'\nimport { TableOfContents } from 'components/TableOfContents/TableOfContents'\nimport { FooterLinks } from 'components/Footer/FooterLinks'\nimport { TabsItem } from 'components/Tabs/TabsItem'\nimport { Tabs } from 'components/Tabs/Tabs'\nimport { TabsListScrollArea, TabsListWrapper } from 'components/Tabs/TabsList'\nimport { TabsButtonWrapper } from 'components/Tabs/TabsButton'\nimport { TabsPanelWrapper } from 'components/Tabs/TabsPanel'\nimport { SiteNavigationSubMenus } from './SiteNavigationSubMenus'\nimport { selectIsModalOpen } from 'components/Modal/modalReducer'\nimport { MODALS } from 'consts/modal'\nimport {\n createScrollBarShadowStyles,\n createScrollBarStyles,\n SCROLL_BAR_SHADOW_SIZE\n} from 'consts/scrollBars'\nimport {\n ThemeToggle,\n LightThemeSvg,\n DarkThemeSvg\n} from 'components/Theme/ThemeToggle'\n\nconst MAX_WIDTH_COMPACT = '36rem'\n\nconst SiteNavigationMenuCompactWrapper = styled.div`\n background-color: ${COLORS.BACKGROUND_SITE};\n position: relative;\n height: 100%;\n z-index: ${LAYERS.STEP};\n padding-right: ${PAGE_FRAME_SPACING};\n padding-left: ${PAGE_FRAME_SPACING};\n padding-bottom: ${HEADER_HEIGHT};\n padding-top: ${HEADER_HEIGHT};\n\n ${MEDIA.DESKTOP} {\n display: none;\n }\n`\n\nconst MenuTabs = styled(Tabs)<{\n $isKeyNavigating: boolean\n}>`\n height: 100%;\n\n ${TabsListWrapper} {\n height: ${HEADER_HEIGHT};\n z-index: ${LAYERS.STEP * 2};\n position: absolute;\n bottom: 0;\n left: 0;\n right: 0;\n padding-left: ${PAGE_FRAME_SPACING};\n padding-right: ${PAGE_FRAME_SPACING};\n margin-bottom: 0;\n background-color: ${COLORS.BACKGROUND_SITE};\n border-top: ${BORDER_SIZES.DETAIL} solid ${COLORS.DETAIL_LOW_CONTRAST};\n border-bottom: 0;\n justify-content: center;\n\n &:before,\n &:after {\n display: none;\n }\n }\n\n ${TabsListScrollArea} {\n max-width: ${MAX_WIDTH_COMPACT};\n overflow: visible;\n padding-bottom: 0;\n\n &:before,\n &:after {\n display: none;\n }\n }\n\n ${TabsPanelWrapper} {\n position: relative;\n height: 100%;\n outline-offset: -${BORDER_SIZES.OUTLINE};\n overflow: hidden;\n\n &:before,\n &:after {\n position: absolute;\n z-index: ${LAYERS.STEP};\n left: -${PAGE_FRAME_SPACING};\n right: -${PAGE_FRAME_SPACING};\n content: '';\n }\n\n &:before {\n ${createScrollBarShadowStyles('top')};\n top: -${SCROLL_BAR_SHADOW_SIZE};\n }\n\n &:after {\n ${createScrollBarShadowStyles('bottom')};\n bottom: -${SCROLL_BAR_SHADOW_SIZE};\n }\n\n &:focus {\n z-index: ${LAYERS.HEADER};\n }\n }\n\n ${TabsButtonWrapper} {\n flex-grow: 1;\n justify-content: center;\n max-width: calc(${MAX_WIDTH_COMPACT} / 2);\n }\n`\n\nconst ScrollArea = styled.div`\n ${createScrollBarStyles('y')};\n padding-top: ${SPACINGS.TWO};\n padding-bottom: ${SPACINGS.FOUR};\n max-width: ${MAX_WIDTH_COMPACT};\n overflow: auto;\n scrollbar-gutter: stable both-edges;\n position: relative;\n max-height: 100%;\n margin-left: auto;\n margin-right: auto;\n`\n\nconst ThemeToggleButton = styled(ThemeToggle)`\n background-color: ${COLORS.BACKGROUND_CODE};\n width: 100%;\n justify-content: space-between;\n padding: 1.8rem 2rem;\n margin-top: ${SPACINGS.FOUR};\n height: auto;\n margin-right: 0;\n margin-left: 0;\n border-radius: ${BORDER_RADIUSES.BOX};\n overflow: hidden;\n\n ${LightThemeSvg}, ${DarkThemeSvg} {\n left: auto;\n right: 2rem;\n transform: translateY(-50%);\n }\n`\n\nconst ThemeToggleText = styled.span`\n color: ${COLORS.TEXT_MEDIUM_CONTRAST};\n`\n\nconst MiscLinks = styled(FooterLinks)`\n padding-top: ${SPACINGS.THREE};\n justify-content: center;\n`\n\nexport const SiteNavigationMenuCompact = () => {\n const isKeyNavigating = useAppSelector(selectKeyNavigating)\n const theme = useAppSelector(selectTheme)\n const isOpen = useAppSelector(selectIsModalOpen(MODALS.SITE_NAVIGATION))\n const isOpenRef = useRef(isOpen)\n const tableOfContents = useAppSelector(selectTableOfContents)\n const [showTableOfContents, setShowTableOfContents] = useState(true)\n const isLightTheme = theme === THEME_KEYS.LIGHT\n const oppositeTheme = isLightTheme ? THEME_KEYS.DARK : THEME_KEYS.LIGHT\n\n useEffect(() => {\n if (isOpen !== isOpenRef.current) {\n const show = !!tableOfContents.items?.length\n setShowTableOfContents(show)\n isOpenRef.current = isOpen\n }\n }, [isOpen, tableOfContents])\n\n return (\n \n \n \n \n
    \n \n\n
  • \n \n \n Activate {oppositeTheme} theme\n \n \n
  • \n\n
  • \n \n
  • \n
\n
\n
\n\n \n \n \n \n \n
\n
\n )\n}\n","import { TabsGroupItemType } from 'consts/tabs'\nimport React, { PropsWithChildren } from 'react'\n\nexport type PropType = PropsWithChildren<{\n tab: TabsGroupItemType\n default?: boolean\n disabled?: boolean\n}>\n\nexport const TabsItem = (props: PropType) => {\n return \n}\n"],"names":["MAX_WIDTH_COMPACT","SiteNavigationMenuCompactWrapper","styled","div","withConfig","displayName","componentId","COLORS","BACKGROUND_SITE","LAYERS","STEP","PAGE_FRAME_SPACING","HEADER_HEIGHT","MEDIA","DESKTOP","MenuTabs","Tabs","TabsListWrapper","BORDER_SIZES","DETAIL","DETAIL_LOW_CONTRAST","TabsListScrollArea","TabsPanelWrapper","OUTLINE","createScrollBarShadowStyles","SCROLL_BAR_SHADOW_SIZE","HEADER","TabsButtonWrapper","ScrollArea","createScrollBarStyles","SPACINGS","TWO","FOUR","ThemeToggleButton","ThemeToggle","BACKGROUND_CODE","BORDER_RADIUSES","BOX","LightThemeSvg","DarkThemeSvg","ThemeToggleText","span","TEXT_MEDIUM_CONTRAST","MiscLinks","FooterLinks","THREE","SiteNavigationMenuCompact","isKeyNavigating","useAppSelector","selectKeyNavigating","theme","selectTheme","isOpen","selectIsModalOpen","MODALS","SITE_NAVIGATION","isOpenRef","useRef","tableOfContents","selectTableOfContents","showTableOfContents","setShowTableOfContents","useState","oppositeTheme","THEME_KEYS","LIGHT","DARK","useEffect","current","_tableOfContents$item","show","items","length","React","$isKeyNavigating","TabsItem","tab","TABS_SITE_NAVIGATION","TABS","MAIN_MENU","SiteNavigationSubMenus","ON_THIS_PAGE","disabled","TableOfContents","props"],"sourceRoot":""} \ No newline at end of file diff --git a/docs/8855-2b988844909c55d3c798.js b/docs/8855-2b988844909c55d3c798.js new file mode 100644 index 000000000..ee318f33e --- /dev/null +++ b/docs/8855-2b988844909c55d3c798.js @@ -0,0 +1,2 @@ +"use strict";(self.webpackChunkembla_carousel_docs=self.webpackChunkembla_carousel_docs||[]).push([[8855],{8855:function(n,e,t){t.r(e),e.default="import React, {\n ComponentPropsWithRef,\n useCallback,\n useEffect,\n useState\n} from 'react'\nimport { EmblaCarouselType } from 'embla-carousel'\n\ntype UseDotButtonType = {\n selectedIndex: number\n scrollSnaps: number[]\n onDotButtonClick: (index: number) => void\n}\n\nexport const useDotButton = (\n emblaApi: EmblaCarouselType | undefined,\n /*__NAV_AUTOPLAY_REPLACE_START__*/\n onButtonClick?: (emblaApi: EmblaCarouselType) => void\n /*__NAV_AUTOPLAY_REPLACE_END__*/\n): UseDotButtonType => {\n const [selectedIndex, setSelectedIndex] = useState(0)\n const [scrollSnaps, setScrollSnaps] = useState([])\n\n const onDotButtonClick = useCallback(\n (index: number) => {\n if (!emblaApi) return\n emblaApi.scrollTo(index)\n /*__NAV_AUTOPLAY_REPLACE_START__*/\n if (onButtonClick) onButtonClick(emblaApi)\n /*__NAV_AUTOPLAY_REPLACE_END__*/\n },\n [\n emblaApi,\n /*__NAV_AUTOPLAY_REPLACE_START__*/ onButtonClick /*__NAV_AUTOPLAY_REPLACE_END__*/\n ]\n )\n\n const onInit = useCallback((emblaApi: EmblaCarouselType) => {\n setScrollSnaps(emblaApi.scrollSnapList())\n }, [])\n\n const onSelect = useCallback((emblaApi: EmblaCarouselType) => {\n setSelectedIndex(emblaApi.selectedScrollSnap())\n }, [])\n\n useEffect(() => {\n if (!emblaApi) return\n\n onInit(emblaApi)\n onSelect(emblaApi)\n emblaApi.on('reInit', onInit).on('reInit', onSelect).on('select', onSelect)\n }, [emblaApi, onInit, onSelect])\n\n return {\n selectedIndex,\n scrollSnaps,\n onDotButtonClick\n }\n}\n\ntype PropType = ComponentPropsWithRef<'button'>\n\nexport const DotButton: React.FC = (props) => {\n const { children, ...restProps } = props\n\n return (\n \n )\n}\n"}}]); +//# sourceMappingURL=8855-2b988844909c55d3c798.js.map \ No newline at end of file diff --git a/docs/8855-2b988844909c55d3c798.js.map b/docs/8855-2b988844909c55d3c798.js.map new file mode 100644 index 000000000..dcd7cf126 --- /dev/null +++ b/docs/8855-2b988844909c55d3c798.js.map @@ -0,0 +1 @@ +{"version":3,"file":"8855-2b988844909c55d3c798.js","mappings":"uIAAA,2zD","sources":["webpack://embla-carousel-docs/./src/components/Sandbox/React/SandboxFilesDist/CarouselGenerator/EmblaCarouselDotButton.tsx"],"sourcesContent":["export default \"import React, {\\n ComponentPropsWithRef,\\n useCallback,\\n useEffect,\\n useState\\n} from 'react'\\nimport { EmblaCarouselType } from 'embla-carousel'\\n\\ntype UseDotButtonType = {\\n selectedIndex: number\\n scrollSnaps: number[]\\n onDotButtonClick: (index: number) => void\\n}\\n\\nexport const useDotButton = (\\n emblaApi: EmblaCarouselType | undefined,\\n /*__NAV_AUTOPLAY_REPLACE_START__*/\\n onButtonClick?: (emblaApi: EmblaCarouselType) => void\\n /*__NAV_AUTOPLAY_REPLACE_END__*/\\n): UseDotButtonType => {\\n const [selectedIndex, setSelectedIndex] = useState(0)\\n const [scrollSnaps, setScrollSnaps] = useState([])\\n\\n const onDotButtonClick = useCallback(\\n (index: number) => {\\n if (!emblaApi) return\\n emblaApi.scrollTo(index)\\n /*__NAV_AUTOPLAY_REPLACE_START__*/\\n if (onButtonClick) onButtonClick(emblaApi)\\n /*__NAV_AUTOPLAY_REPLACE_END__*/\\n },\\n [\\n emblaApi,\\n /*__NAV_AUTOPLAY_REPLACE_START__*/ onButtonClick /*__NAV_AUTOPLAY_REPLACE_END__*/\\n ]\\n )\\n\\n const onInit = useCallback((emblaApi: EmblaCarouselType) => {\\n setScrollSnaps(emblaApi.scrollSnapList())\\n }, [])\\n\\n const onSelect = useCallback((emblaApi: EmblaCarouselType) => {\\n setSelectedIndex(emblaApi.selectedScrollSnap())\\n }, [])\\n\\n useEffect(() => {\\n if (!emblaApi) return\\n\\n onInit(emblaApi)\\n onSelect(emblaApi)\\n emblaApi.on('reInit', onInit).on('reInit', onSelect).on('select', onSelect)\\n }, [emblaApi, onInit, onSelect])\\n\\n return {\\n selectedIndex,\\n scrollSnaps,\\n onDotButtonClick\\n }\\n}\\n\\ntype PropType = ComponentPropsWithRef<'button'>\\n\\nexport const DotButton: React.FC = (props) => {\\n const { children, ...restProps } = props\\n\\n return (\\n \\n )\\n}\\n\";"],"names":[],"sourceRoot":""} \ No newline at end of file diff --git a/docs/8855-c6b5a666e018cb894115.js b/docs/8855-c6b5a666e018cb894115.js deleted file mode 100644 index 852644f35..000000000 --- a/docs/8855-c6b5a666e018cb894115.js +++ /dev/null @@ -1,2 +0,0 @@ -"use strict";(self.webpackChunkembla_carousel_docs=self.webpackChunkembla_carousel_docs||[]).push([[8855],{8855:function(n,e,t){t.r(e),e.default="import React, {\n PropsWithChildren,\n useCallback,\n useEffect,\n useState\n} from 'react'\nimport { EmblaCarouselType } from 'embla-carousel'\n\ntype UseDotButtonType = {\n selectedIndex: number\n scrollSnaps: number[]\n onDotButtonClick: (index: number) => void\n}\n\nexport const useDotButton = (\n emblaApi: EmblaCarouselType | undefined,\n /*__NAV_AUTOPLAY_REPLACE_START__*/\n onButtonClick?: (emblaApi: EmblaCarouselType) => void\n /*__NAV_AUTOPLAY_REPLACE_END__*/\n): UseDotButtonType => {\n const [selectedIndex, setSelectedIndex] = useState(0)\n const [scrollSnaps, setScrollSnaps] = useState([])\n\n const onDotButtonClick = useCallback(\n (index: number) => {\n if (!emblaApi) return\n emblaApi.scrollTo(index)\n /*__NAV_AUTOPLAY_REPLACE_START__*/\n if (onButtonClick) onButtonClick(emblaApi)\n /*__NAV_AUTOPLAY_REPLACE_END__*/\n },\n [\n emblaApi,\n /*__NAV_AUTOPLAY_REPLACE_START__*/ onButtonClick /*__NAV_AUTOPLAY_REPLACE_END__*/\n ]\n )\n\n const onInit = useCallback((emblaApi: EmblaCarouselType) => {\n setScrollSnaps(emblaApi.scrollSnapList())\n }, [])\n\n const onSelect = useCallback((emblaApi: EmblaCarouselType) => {\n setSelectedIndex(emblaApi.selectedScrollSnap())\n }, [])\n\n useEffect(() => {\n if (!emblaApi) return\n\n onInit(emblaApi)\n onSelect(emblaApi)\n emblaApi.on('reInit', onInit).on('reInit', onSelect).on('select', onSelect)\n }, [emblaApi, onInit, onSelect])\n\n return {\n selectedIndex,\n scrollSnaps,\n onDotButtonClick\n }\n}\n\ntype PropType = PropsWithChildren<\n React.DetailedHTMLProps<\n React.ButtonHTMLAttributes,\n HTMLButtonElement\n >\n>\n\nexport const DotButton: React.FC = (props) => {\n const { children, ...restProps } = props\n\n return (\n \n )\n}\n"}}]); -//# sourceMappingURL=8855-c6b5a666e018cb894115.js.map \ No newline at end of file diff --git a/docs/8855-c6b5a666e018cb894115.js.map b/docs/8855-c6b5a666e018cb894115.js.map deleted file mode 100644 index 4e8b70be2..000000000 --- a/docs/8855-c6b5a666e018cb894115.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"8855-c6b5a666e018cb894115.js","mappings":"uIAAA,y5D","sources":["webpack://embla-carousel-docs/./src/components/Sandbox/React/SandboxFilesDist/CarouselGenerator/EmblaCarouselDotButton.tsx"],"sourcesContent":["export default \"import React, {\\n PropsWithChildren,\\n useCallback,\\n useEffect,\\n useState\\n} from 'react'\\nimport { EmblaCarouselType } from 'embla-carousel'\\n\\ntype UseDotButtonType = {\\n selectedIndex: number\\n scrollSnaps: number[]\\n onDotButtonClick: (index: number) => void\\n}\\n\\nexport const useDotButton = (\\n emblaApi: EmblaCarouselType | undefined,\\n /*__NAV_AUTOPLAY_REPLACE_START__*/\\n onButtonClick?: (emblaApi: EmblaCarouselType) => void\\n /*__NAV_AUTOPLAY_REPLACE_END__*/\\n): UseDotButtonType => {\\n const [selectedIndex, setSelectedIndex] = useState(0)\\n const [scrollSnaps, setScrollSnaps] = useState([])\\n\\n const onDotButtonClick = useCallback(\\n (index: number) => {\\n if (!emblaApi) return\\n emblaApi.scrollTo(index)\\n /*__NAV_AUTOPLAY_REPLACE_START__*/\\n if (onButtonClick) onButtonClick(emblaApi)\\n /*__NAV_AUTOPLAY_REPLACE_END__*/\\n },\\n [\\n emblaApi,\\n /*__NAV_AUTOPLAY_REPLACE_START__*/ onButtonClick /*__NAV_AUTOPLAY_REPLACE_END__*/\\n ]\\n )\\n\\n const onInit = useCallback((emblaApi: EmblaCarouselType) => {\\n setScrollSnaps(emblaApi.scrollSnapList())\\n }, [])\\n\\n const onSelect = useCallback((emblaApi: EmblaCarouselType) => {\\n setSelectedIndex(emblaApi.selectedScrollSnap())\\n }, [])\\n\\n useEffect(() => {\\n if (!emblaApi) return\\n\\n onInit(emblaApi)\\n onSelect(emblaApi)\\n emblaApi.on('reInit', onInit).on('reInit', onSelect).on('select', onSelect)\\n }, [emblaApi, onInit, onSelect])\\n\\n return {\\n selectedIndex,\\n scrollSnaps,\\n onDotButtonClick\\n }\\n}\\n\\ntype PropType = PropsWithChildren<\\n React.DetailedHTMLProps<\\n React.ButtonHTMLAttributes,\\n HTMLButtonElement\\n >\\n>\\n\\nexport const DotButton: React.FC = (props) => {\\n const { children, ...restProps } = props\\n\\n return (\\n \\n )\\n}\\n\";"],"names":[],"sourceRoot":""} \ No newline at end of file diff --git a/docs/95da5ec31316267b433b7b2e2bbaca0a1c0b9c0a-2d2b18075bbcb7571c88.js b/docs/95da5ec31316267b433b7b2e2bbaca0a1c0b9c0a-2d2b18075bbcb7571c88.js deleted file mode 100644 index 97a37f969..000000000 --- a/docs/95da5ec31316267b433b7b2e2bbaca0a1c0b9c0a-2d2b18075bbcb7571c88.js +++ /dev/null @@ -1,2 +0,0 @@ -(self.webpackChunkembla_carousel_docs=self.webpackChunkembla_carousel_docs||[]).push([[6075],{2220:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(683);t.getParameters=function(e){return t=JSON.stringify(e),r.compressToBase64(t).replace(/\+/g,"-").replace(/\//g,"_").replace(/=+$/,"");var t}},4274:function(e,t,n){"use strict";t.b=void 0;var r=n(2220);t.b=r.getParameters},3211:function(e){e.exports={bracketSpacing:!0,printWidth:80,semi:!1,singleQuote:!0,trailingComma:"none",tabWidth:2,useTabs:!1}},7736:function(e,t,n){"use strict";n.d(t,{EW:function(){return I},F6:function(){return S},Fc:function(){return re},Gb:function(){return Q},MD:function(){return O},N$:function(){return ne},N1:function(){return K},QR:function(){return q},RW:function(){return X},Tk:function(){return Y},U3:function(){return h},Wr:function(){return _},Yl:function(){return te},Z4:function(){return f},br:function(){return b},cM:function(){return Z},cm:function(){return J},dJ:function(){return $},kk:function(){return A},lN:function(){return p},mh:function(){return H},mn:function(){return g},pS:function(){return W},qV:function(){return V},uk:function(){return ee},zw:function(){return U}});var r=n(3057),o=n(1801),a=n(6341),i=n(4393),s=n(1381),l=n(5335),c=n(4702),u=n(382),d=n(1664),m=n(9204);const f="19rem",p="6rem",b="0.8rem",_="22.2rem",g=i.F.SIX,h=i.F.THREE,E=(0,r.css)(["border-radius:",";"],s.Y.SOFT),C=(0,r.css)(["box-shadow:inset 0 0 0 "," ",";"],s.C.OUTLINE,a.lm.DETAIL_MEDIUM_CONTRAST),y=(0,r.css)(["",";-webkit-appearance:none;appearance:none;background-color:transparent;touch-action:manipulation;display:inline-flex;text-decoration:none;cursor:pointer;border:0;padding:0;margin:0;"],m.Q),x=(0,r.css)([".embla{max-width:",";margin:auto;--slide-height:",";--slide-spacing:__replace_axis_spacing_amount__;--slide-size:__replace_slide_size__;}.embla__viewport{overflow:hidden;}.embla__container{backface-visibility:hidden;display:flex;touch-action:__replace-axis-touch_action__;margin-__replace_axis_spacing__:calc(var(--slide-spacing) * -1);__replace_axis_height__ __replace_axis_flex__}.embla__slide{flex:0 0 var(--slide-size);min-__replace-axis-size__:0;padding-__replace_axis_spacing__:var(--slide-spacing);}"],"48rem",f),v=(0,r.css)([".embla{max-width:70rem;margin:auto;--slide-height:",";--slide-spacing:1rem;--slide-size:100%;--slide-spacing-sm:1.6rem;--slide-size-sm:50%;--slide-spacing-lg:2rem;--slide-size-lg:calc(100% / 3);}.embla__viewport{overflow:hidden;}.embla__container{backface-visibility:hidden;display:flex;touch-action:__replace-axis-touch_action__;margin-__replace_axis_spacing__:calc(var(--slide-spacing) * -1);__replace_axis_height__ __replace_axis_flex__}","{.embla__container{margin-__replace_axis_spacing__:calc(var(--slide-spacing-sm) * -1);}}","{.embla__container{margin-__replace_axis_spacing__:calc(var(--slide-spacing-lg) * -1);}}.embla__slide{min-__replace-axis-size__:0;flex:0 0 var(--slide-size);padding-__replace_axis_spacing__:var(--slide-spacing);}","{.embla__slide{flex:0 0 var(--slide-size-sm);padding-__replace_axis_spacing__:var(--slide-spacing-sm);}}","{.embla__slide{flex:0 0 var(--slide-size-lg);padding-__replace_axis_spacing__:var(--slide-spacing-lg);}}"],f,l.Rn.MIN_SM,l.Rn.MIN_LG,l.Rn.MIN_SM,l.Rn.MIN_LG),S=(0,r.css)([".embla__slide__number{",";",";font-size:",";font-weight:",";display:flex;align-items:center;justify-content:center;height:__replace_slide_height__;}"],C,E,c.$.CUSTOM((()=>4)),c.s.SEMI_BOLD),T=(0,r.css)([".embla__slide__img{",";display:block;height:__replace_slide_height__;width:100%;object-fit:cover;}"],E),w=(0,r.css)([".embla__slide:nth-child(1){flex:0 0 60%;}.embla__slide:nth-child(2){flex:0 0 40%;}.embla__slide:nth-child(3){flex:0 0 30%;}.embla__slide:nth-child(4){flex:0 0 90%;}.embla__slide:nth-child(5){flex:0 0 35%;}.embla__slide:nth-child(6){flex:0 0 55%;}.embla__slide:nth-child(7){flex:0 0 85%;}.embla__slide:nth-child(8){flex:0 0 50%;}.embla__slide:nth-child(9){flex:0 0 35%;}"]),I=(0,r.css)([".embla__controls{display:grid;grid-template-columns:auto 1fr;justify-content:space-between;gap:",";margin-top:",";}"],i.F.TWO,h),A=(0,r.css)([".embla__buttons{display:grid;grid-template-columns:repeat(2,1fr);gap:",";align-items:center;}.embla__button{",";",";"," z-index:",";border-radius:",";color:",";display:flex;align-items:center;justify-content:center;}.embla__button:disabled{color:",";}.embla__button__svg{","}"],i.F.ONE,y,C,(0,u.P)(g),o.R.STEP,s.Y.CIRCLE,a.lm.TEXT_BODY,a.lm.DETAIL_HIGH_CONTRAST,(0,u.P)("35%")),O=(0,r.css)([".embla__dots{display:flex;flex-wrap:wrap;justify-content:flex-end;align-items:center;margin-right:calc((2.6rem - 1.4rem) / 2 * -1);}.embla__dot{",";"," display:flex;align-items:center;justify-content:center;border-radius:",";}.embla__dot:after{",";"," border-radius:",";display:flex;align-items:center;content:'';}.embla__dot--selected:after{box-shadow:inset 0 0 0 "," ",";}"],y,(0,u.P)("2.6rem"),s.Y.CIRCLE,C,(0,u.P)("1.4rem"),s.Y.CIRCLE,s.C.OUTLINE,a.lm.TEXT_BODY),L=(0,r.css)([".embla__selected-snap-display{justify-self:flex-end;align-self:center;color:",";font-weight:",";}"],a.lm.TEXT_LOW_CONTRAST,c.s.SEMI_BOLD),N=(0,r.css)([".embla__play{",";",";",";display:flex;align-items:center;justify-content:center;justify-self:flex-end;color:",";font-weight:",";font-size:",";padding:0 ",";min-width:",";}"],y,C,E,a.lm.TEXT_BODY,c.s.BOLD,c.$.COMPLEMENTARY,i.F.FOUR,i.F.FOURTEEN),k=(0,r.css)([".embla-thumbs{--thumbs-slide-spacing:",";--thumbs-slide-height:",";margin-top:var(--thumbs-slide-spacing);}.embla-thumbs__viewport{overflow:hidden;}.embla-thumbs__container{display:flex;flex-direction:row;margin-left:calc(var(--thumbs-slide-spacing) * -1);}.embla-thumbs__slide{flex:0 0 22%;min-__replace-axis-size__:0;padding-left:var(--thumbs-slide-spacing);}","{.embla-thumbs__slide{flex:0 0 15%;}}.embla-thumbs__slide__number{",";",";",";font-size:",";font-weight:",";color:",";display:flex;align-items:center;justify-content:center;height:var(--thumbs-slide-height);width:100%;}.embla-thumbs__slide--selected .embla-thumbs__slide__number{color:",";}"],b,p,l.Rn.MIN_XS,E,y,C,c.$.H4,c.s.SEMI_BOLD,a.lm.DETAIL_HIGH_CONTRAST,a.lm.TEXT_BODY),P=(0,r.css)([".embla__progress{",";",";background-color:",";position:relative;height:0.6rem;justify-self:flex-end;align-self:center;width:13rem;max-width:90%;overflow:hidden;}.embla__progress__bar{background-color:",";position:absolute;width:100%;top:0;bottom:0;left:-100%;}"],E,C,a.lm.BACKGROUND_SITE,a.lm.TEXT_BODY),j=(0,r.css)([".embla__parallax{",";height:100%;overflow:hidden;}.embla__parallax__layer{position:relative;height:100%;width:100%;display:flex;justify-content:center;}.embla__parallax__img{max-width:none;flex:0 0 calc(115% + (var(--slide-spacing) * 2));object-fit:cover;}"],E),D=(0,r.css)([".embla__slide__number{backface-visibility:hidden;}"]),R=(0,r.css)([".embla__lazy-load{position:relative;height:100%;}.embla__lazy-load__spinner{border:"," solid rgba(",",0.2);border-left:"," solid ",";font-size:1rem;display:inline-flex;position:absolute;top:0;left:0;bottom:0;right:0;margin:auto;text-indent:-9999em;animation:loading 1.1s infinite linear;border-radius:",";","}.embla__lazy-load__spinner:after{border-radius:inherit;","}.embla__lazy-load__img{opacity:0;transition:opacity 0.2s ease-in-out;}.embla__lazy-load--has-loaded .embla__lazy-load__img{opacity:1;}@keyframes loading{0%{transform:rotate(0deg);}100%{transform:rotate(360deg);}}"],s.C.ACCENT_VERTICAL,a.lm.TEXT_HIGH_CONTRAST_RGB_VALUE,s.C.ACCENT_VERTICAL,a.lm.TEXT_HIGH_CONTRAST,s.Y.CIRCLE,(0,u.P)("5rem"),(0,u.P)("5rem")),B=(0,r.css)([".embla__container{align-items:flex-start;}.embla__slide:nth-child(1) > .embla__slide__number{height:",";}.embla__slide:nth-child(2) > .embla__slide__number{height:calc("," + 4rem);}.embla__slide:nth-child(3) > .embla__slide__number{height:calc("," - 2rem);}.embla__slide:nth-child(4) > .embla__slide__number{height:calc("," + 2rem);}.embla__slide:nth-child(5) > .embla__slide__number{height:",";}"],f,f,f,f,f),z=(0,r.css)([".embla__slide{transition:opacity 0.2s ease-in-out;}.embla__slide:not(.is-snapped){opacity:0.16;}"]),G=(0,r.css)([".embla__slide__img{user-select:none;}"]),F=(0,r.css)([".embla-infinite-scroll{position:relative;flex:0 0 15rem;min-__replace-axis-size__:0;height:var(--slide-height);display:flex;align-items:center;justify-content:center;}.embla-infinite-scroll__spinner{display:none;border:"," solid rgba(",",0.2);border-left:"," solid ",";font-size:1rem;position:absolute;top:0;left:0;bottom:0;right:0;margin:auto;text-indent:-9999em;animation:loading 1.1s infinite linear;border-radius:",";","}.embla-infinite-scroll__spinner:after{border-radius:inherit;","}.embla-infinite-scroll--loading-more > .embla-infinite-scroll__spinner{display:inline-flex;}@keyframes loading{0%{transform:rotate(0deg);}100%{transform:rotate(360deg);}}"],s.C.ACCENT_VERTICAL,a.lm.TEXT_HIGH_CONTRAST_RGB_VALUE,s.C.ACCENT_VERTICAL,a.lm.TEXT_HIGH_CONTRAST,s.Y.CIRCLE,(0,u.P)("5rem"),(0,u.P)("5rem")),M=(0,r.css)([".embla{position:relative;display:flex;width:100%;height:",";max-width:30rem;margin-left:auto;margin-right:auto;}.embla:before,.embla:after{position:absolute;left:0;right:0;content:'';display:block;height:calc(50% - 32px / 2);z-index:",";pointer-events:none;}.embla:before{top:-0.5px;border-bottom:0.5px solid rgba(",",0.3);background:linear-gradient( to top,rgba(",",0.65) 0%,rgba(",",1) 100% );}.embla:after{bottom:-0.5px;border-top:0.5px solid rgba(",",0.3);background:linear-gradient( to bottom,rgba(",",0.65) 0%,rgba(",",1) 100% );}.embla__ios-picker{height:100%;display:flex;align-items:center;min-width:50%;justify-content:center;line-height:1;font-size:1.8rem;}.embla__ios-picker__scene{min-width:100%;height:100%;overflow:hidden;display:flex;align-items:center;touch-action:pan-x;}.embla__ios-picker__viewport{height:32px;width:100%;perspective:1000px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-touch-callout:none;-khtml-user-select:none;-webkit-tap-highlight-color:transparent;}.embla__ios-picker__viewport--perspective-left{perspective-origin:calc(50% + 130px) 50%;transform:translateX(27px);}.embla__ios-picker__viewport--perspective-right{perspective-origin:calc(50% - 130px) 50%;transform:translateX(-27px);}.embla__ios-picker__container{height:100%;width:100%;transform-style:preserve-3d;will-change:transform;}.embla__ios-picker__slide{width:100%;height:100%;font-size:19px;text-align:center;display:flex;align-items:center;justify-content:center;backface-visibility:hidden;opacity:0;}.embla__ios-picker__label{font-weight:",";transform:translateX(-55px);pointer-events:none;}"],_,o.R.STEP,a.lm.TEXT_HIGH_CONTRAST_RGB_VALUE,a.lm.BACKGROUND_SITE_RGB_VALUE,a.lm.BACKGROUND_SITE_RGB_VALUE,a.lm.TEXT_HIGH_CONTRAST_RGB_VALUE,a.lm.BACKGROUND_SITE_RGB_VALUE,a.lm.BACKGROUND_SITE_RGB_VALUE,c.s.BOLD),U=function(e,t,n,r,o){void 0===e&&(e="100%"),void 0===t&&(t="1rem"),void 0===n&&(n="x"),void 0===r&&(r=""),void 0===o&&(o=(0,d.i)(x));const a="x"===n,i=a?"left":"top",s="pan-"+(a?"y":"x")+" pinch-zoom",l=a?"width":"height",c=a?"var(--slide-height)":"100%",u=a?"":"height: calc(var(--slide-spacing) + var(--slide-height));";return(o+r).replace(/__replace_axis_flex__/gi,a?"":"flex-direction: column;").replace(/__replace-axis-size__/gi,l).replace(/__replace-axis-touch_action__/gi,s).replace(/__replace_axis_spacing__/gi,i).replace(/__replace_axis_spacing_amount__/gi,t).replace(/__replace_axis_height__/gi,u).replace(/__replace_slide_height__/gi,c).replace(/__replace_slide_size__/gi,e)},H=(e,t,n)=>U(e,t,n,(0,d.i)(S,I,A,L)),V=(e,t,n)=>U(e,t,n,(0,d.i)(w,S,I,A,L)),J=(e,t,n)=>U(e,t,n,(0,d.i)(S,I,A,O),(0,d.i)(v)),Y=(e,t,n)=>U(e,t,n,(0,d.i)(S,k)),W=(e,t,n)=>U(e,t,n,(0,d.i)(S,I,A,P)),X=(e,t,n)=>U(e,t,n,(0,d.i)(T,I,A,O,j)),q=(e,t,n)=>U(e,t,n,(0,d.i)(S,I,A,O,D)),$=(e,t,n)=>U(e,t,n,(0,d.i)(T,I,A,O)),K=(e,t,n)=>U(e,t,n,(0,d.i)(S,I,A,N)),Q=(e,t,n)=>U(e,t,n,(0,d.i)(S,I,A,O,B)),Z=(e,t,n)=>U(e,t,n,(0,d.i)(T,I,A,O,z)),ee=(e,t,n)=>U(e,t,n,(0,d.i)(T,I,A,O,G)),te=(e,t,n)=>U(e,t,n,(0,d.i)(T,I,A,O,R)),ne=(e,t,n)=>U(e,t,n,(0,d.i)(S,I,A,L,F)),re=()=>(0,d.i)(M)},2627:function(e,t,n){"use strict";n.d(t,{$:function(){return a},m:function(){return i}});var r=n(9666),o=n(5291);const a=(0,r.B)("radio"),i=(0,o.m)("radio")},5291:function(e,t,n){"use strict";n.d(t,{m:function(){return E}});var r=n(4041),o=n(3057),a=n(9973),i=n(3911),s=n(382),l=n(7564),c=n(4906),u=n(1381),d=n(9204),m=n(1801),f=n(6341),p=n(6034);const b=o.default.label.withConfig({displayName:"createRadioOrCheckboxCard__RadioOrCheckboxCardWrapper",componentId:"sc-10bqvgs-0"})(["",";",";display:flex;align-items:center;justify-content:center;position:relative;height:100%;"],d.Q,a.S),_=o.default.span.withConfig({displayName:"createRadioOrCheckboxCard__LabelContent",componentId:"sc-10bqvgs-1"})(["z-index:",";position:relative;display:block;width:100%;cursor:pointer;"],m.R.STEP),g=o.default.span.withConfig({displayName:"createRadioOrCheckboxCard__Highlight",componentId:"sc-10bqvgs-2"})(["",";top:-",";left:-",";bottom:-",";right:-",";display:block;position:absolute;border-radius:inherit;pointer-events:none;visibility:hidden;&:after{background-color:",";border-radius:inherit;position:absolute;top:",";left:",";bottom:",";right:",";content:'';}"],c.J,u.C.DETAIL,u.C.DETAIL,u.C.DETAIL,u.C.DETAIL,f.lm.BACKGROUND_CODE,u.C.OUTLINE,u.C.OUTLINE,u.C.OUTLINE,u.C.OUTLINE),h=o.default.input.withConfig({displayName:"createRadioOrCheckboxCard__Input",componentId:"sc-10bqvgs-3"})(["",";",";position:absolute;border-radius:",";top:0;left:0;",";appearance:none;-webkit-appearance:none;border:0;background-color:transparent;pointer-events:none;&:after{display:block;content:'';position:absolute;top:0;left:0;",";}&:checked + ","{visibility:visible;}&[disabled] + "," + ","{cursor:not-allowed;}&[disabled]:checked + ","{background-image:none;background-color:",";}"],d.Q,p.y,u.Y.CARD,(0,s.P)("100%"),(0,s.P)("100%"),g,g,_,g,f.lm.DETAIL_HIGH_CONTRAST),E=e=>{const t=(0,l.fq)("input-"+e+"-card"),n=t=>{const{children:n,...o}=t,{isKeyNavigating:a}=(0,i.P)();return r.createElement(b,{htmlFor:o.id},r.createElement(h,Object.assign({type:e,$isKeyNavigating:a},o)),r.createElement(g,null),r.createElement(_,null,n))};return n.displayName=t,n}},9666:function(e,t,n){"use strict";n.d(t,{B:function(){return x}});var r=n(4041),o=n(3057),a=n(6341),i=n(4393),s=n(3911),l=n(382),c=n(1381),u=n(4906),d=n(7564),m=n(9204),f=n(6034);const p="2.5rem",b=o.default.span.withConfig({displayName:"createRadioOrCheckboxDefault__RadioOrCheckboxDefaultWrapper",componentId:"sc-1f4htb9-0"})(["display:flex;align-items:flex-start;flex-wrap:wrap;"]),_=o.default.span.withConfig({displayName:"createRadioOrCheckboxDefault__InputWrapper",componentId:"sc-1f4htb9-1"})(["flex:0 0 ",";position:relative;min-width:0;"],p),g=o.default.span.withConfig({displayName:"createRadioOrCheckboxDefault__InputLineHeight",componentId:"sc-1f4htb9-2"})(["color:",";width:",";display:inline-block;line-height:inherit;"],a.lm.BACKGROUND_SITE,p),h=o.default.input.withConfig({displayName:"createRadioOrCheckboxDefault__Input",componentId:"sc-1f4htb9-3"})(["",";",";",";appearance:none;-webkit-appearance:none;position:absolute;top:50%;left:0;top:50%;transform:translateY(-50%);background-color:",";cursor:pointer;&:before,&:after{display:block;content:'';position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);}&:before{",";background-color:",";}&:after{",";}&:checked{&:after{",";}}&[disabled]{cursor:not-allowed;}&[disabled]:checked{&:after{background-image:none;background-color:",";}}"],(0,l.P)(p),m.Q,f.y,a.lm.DETAIL_MEDIUM_CONTRAST,(0,l.P)("2rem"),a.lm.BACKGROUND_CODE,(0,l.P)("1.2rem"),u.J,a.lm.DETAIL_HIGH_CONTRAST),E=(0,o.default)(h).withConfig({displayName:"createRadioOrCheckboxDefault__InputRadio",componentId:"sc-1f4htb9-4"})(["border-radius:",";&:before{border-radius:",";}&:after{border-radius:",";}"],c.Y.CIRCLE,c.Y.CIRCLE,c.Y.CIRCLE),C=(0,o.default)(h).withConfig({displayName:"createRadioOrCheckboxDefault__InputCheckbox",componentId:"sc-1f4htb9-5"})(["border-radius:",";&:before{border-radius:",";}&:after{border-radius:0;}"],c.Y.LINE,c.Y.LINE),y=o.default.label.withConfig({displayName:"createRadioOrCheckboxDefault__Label",componentId:"sc-1f4htb9-6"})(["",";padding-left:",";min-width:0;flex:0 0 calc(100% - ",");",";"],m.Q,i.F.TWO,p,(e=>{let{$disabled:t}=e;return t&&(0,o.css)(["color:",";"],a.lm.TEXT_LOW_CONTRAST)})),x=e=>{const t="radio"===e?E:C,n=(0,d.fq)("input-"+e+"-default"),o=n=>{const{children:o,...a}=n,{isKeyNavigating:i}=(0,s.P)();return r.createElement(b,null,r.createElement(_,null,r.createElement(g,null,"-"),r.createElement(t,Object.assign({type:e,$isKeyNavigating:i},a))),r.createElement(y,{htmlFor:a.id,$disabled:a.disabled},o))};return o.displayName=n,o}},9860:function(e,t,n){"use strict";n.d(t,{Q:function(){return g}});var r=n(4041),o=n(3057),a=n(7286),i=(n(5483),n(3448)),s=n(3724);var l=n(3214),c=n(6341),u=n(4702),d=n(4393);const m=o.default.nav.withConfig({displayName:"PageBreadcrumbs__PageBreadcrumbsWrapper",componentId:"sc-1mlty1z-0"})(["display:flex;align-items:center;font-size:",";margin-bottom:",";"],u.$.COMPLEMENTARY,d.F.THREE),f=(0,o.css)(["color:",";padding:"," 0;"],c.lm.TEXT_LOW_CONTRAST,d.F.ONE),p=(0,o.default)(a.l).withConfig({displayName:"PageBreadcrumbs__Link",componentId:"sc-1mlty1z-1"})(["",";"],f),b=o.default.span.withConfig({displayName:"PageBreadcrumbs__ActiveTitle",componentId:"sc-1mlty1z-2"})(["",";"],f),_=(0,o.default)(l.I).withConfig({displayName:"PageBreadcrumbs__Separator",componentId:"sc-1mlty1z-3"})(["color:",";margin:0 ",";"],c.lm.TEXT_LOW_CONTRAST,d.F.ONE),g=e=>{const{id:t}=e,n=(e=>{const{flat:t}=(0,s.Y)(),n=t.find((t=>t.id===e));return t.filter((e=>(0,i.Ig)(e.slug,(null==n?void 0:n.slug)||""))).sort(((e,t)=>e.level-t.level))})(t);return 0===n.length?null:r.createElement(m,{"aria-label":"Breadcrumb Navigation"},n.map(((e,t)=>{let{id:o,slug:a,title:i}=e;return t!==n.length-1?r.createElement(r.Fragment,{key:o},r.createElement(p,{to:a},i),r.createElement(_,{size:"0.6rem",svg:"chevronRight",role:"presentation","aria-hidden":"false"})):r.createElement(b,{key:o},i)})))}},6169:function(e,t,n){"use strict";n.d(t,{R:function(){return m}});var r=n(4041),o=n(3057),a=n(7286),i=n(6341),s=n(4702),l=n(4393),c=n(8893),u=n(405);const d=(0,o.default)(a.l).withConfig({displayName:"PageEditThisPage__PageEditThisPageWrapper",componentId:"sc-15acsrz-0"})(["display:inline-flex;align-items:center;text-decoration:none;font-size:",";padding-top:",";padding-bottom:",";margin-top:",";color:",";"],s.$.COMPLEMENTARY,l.F.ONE,l.F.ONE,l.F.EIGHT,i.lm.TEXT_LOW_CONTRAST),m=e=>{const{pageUrl:t}=e,n=c.t.GITHUB_DOCUMENTATION+"/"+t;return r.createElement(d,{to:n},r.createElement(u.vK,{iconSvg:"pen",iconSize:"1.5rem"},"Edit this page on GitHub"))}},8324:function(e,t,n){"use strict";n.d(t,{o:function(){return g}});var r=n(4041),o=n(3057),a=n(7286),i=n(4906),s=n(6341),l=n(4393),c=n(4702),u=n(405),d=n(4094);const m=l.F.FOUR,f=o.default.nav.withConfig({displayName:"PagePagination__PagePaginationWrapper",componentId:"sc-3ejrow-0"})(["",";display:flex;justify-content:space-between;margin-top:",";"],(0,d.F)(m,"","div"),l.F.EIGHT),p=o.default.div.withConfig({displayName:"PagePagination__Item",componentId:"sc-3ejrow-1"})(["> a{color:",";}&:nth-child(2) > a{text-align:right;color:",";}"],s.lm.BRAND_PRIMARY,s.lm.BRAND_SECONDARY),b=o.default.div.withConfig({displayName:"PagePagination__ItemLabel",componentId:"sc-3ejrow-2"})(["color:",";padding-bottom:",";"],s.lm.TEXT_LOW_CONTRAST,l.F.ONE),_=o.default.div.withConfig({displayName:"PagePagination__ItemTitle",componentId:"sc-3ejrow-3"})(["display:inline-flex;align-items:center;font-weight:",";","{",";}"],c.s.MEDIUM,u.eU,i.y),g=e=>{const{next:t,previous:n}=e;return r.createElement(f,{"aria-label":"Pagination Navigation"},r.createElement(p,null,n&&r.createElement(a.l,{to:n.slug},r.createElement(b,null,"Previous"),r.createElement(_,null,r.createElement(u.vK,{iconSvg:"arrowLeft"},n.title)))),r.createElement(p,null,t&&r.createElement(a.l,{to:t.slug},r.createElement(b,null,"Next"),r.createElement(_,null,r.createElement(u.vK,{iconSvg:"arrowRight",iconSide:"right"},t.title)))))}},1528:function(e,t,n){"use strict";n.d(t,{$:function(){return v}});var r=n(4274),o=n(5378),a=n(3160),i=n(3525),s=n(8330),l=n(7564),c=n(5399);var u=n(6341),d=n(9874),m=n(1672);const f=async e=>{const t=await n.e(8269).then(n.bind(n,8269)),r=u.tv+(0,d.b)(),o=(0,l.fq)(e," ");return t.default.replace(m.Ug,r).replace(m.R6,o)},p=/import\sEmblaCarousel\sfrom\s'(.*)'/,b=/const\sSLIDE_COUNT\s=\s\d{1,}/,_='import EmblaCarousel from "./EmblaCarousel"',g=async(e,t,r,o)=>"embla-carousel-ios-style-picker"===o?(async(e,t)=>(await n(348)("./CarouselIosPickerEntry."+e)).default.replace(p,_).replace(m.Ap,(0,c.Wb)(t)))(e,!!r.loop):(async(e,t,r)=>{const o=t.length.toString();return(await n(7182)("./CarouselDefaultEntry."+e)).default.replace(p,_).replace(m.$b,(0,c.rf)(r)).replace(b,(e=>e.replace(/\d{1,}/,o)))})(e,t,r),h=/import\s{\ssandboxImages\s}\sfrom\s'(.*)/,E=/sandboxImages\(index\)/,C=async(e,t)=>{const r=await n(4502)("./Header."+e),o=(0,l.fq)(t," ");return r.default.replace(m.R6,o)};var y=n(8893);const x=async e=>(await n(2804)("./Footer."+e)).default.replace(m.HC,y.t.GITHUB_ROOT),v=async e=>{const{id:t,carouselScript:n,slides:u,options:d,styles:p,plugins:b,sandboxOverrides:_,language:y=m.uq.JAVASCRIPT}=e,v=t+"-react",{prettierConfig:S,formatCss:T}=await(0,i.g)(),{isTypeScript:w,reactScriptExtension:I,formatScript:A}=await(0,c.Bz)(y),O=await(async(e,t,n)=>{const{dependencies:r,devDependencies:o}=s,{isJavaScript:i,reactScriptExtension:u}=await(0,c.Bz)(e);return{name:t,version:"1.0.0",description:(0,l.fq)(t," ")+" Example",main:a.c.JS+"/index."+u,scripts:{start:"react-scripts start",build:"react-scripts build",test:"react-scripts test --env=jsdom",eject:"react-scripts eject"},dependencies:{react:r.react,"react-dom":r["react-dom"],"react-scripts":"4.0.0","embla-carousel-react":r["embla-carousel-react"],"embla-carousel":r["embla-carousel"],...n&&n},devDependencies:i?{"@babel/runtime":"7.13.8"}:{"@types/react":o["@types/react"],"@types/react-dom":o["@types/react-dom"],typescript:o.typescript},browserslist:[">0.2%","not dead","not ie <= 11","not op_mini all"]}})(y,v,b),L={include:["./src/**/*"],compilerOptions:{strict:!0,esModuleInterop:!0,lib:["es6","dom"],jsx:"react-jsx"}},N=(e=>e.replace(h,"").replace(E,"`https://picsum.photos/600/350?v=${index}`"))(n),[k,P,j,D]=await Promise.all([f(v),g(I,u,d,t),C(I,v),x(I)]),R={".prettierrc":{isBinary:!1,content:JSON.stringify(S,null,"\t")},"package.json":{isBinary:!1,content:JSON.stringify(O,null,"\t")},[a.c.PUBLIC+"/index.html"]:{isBinary:!1,content:k},[a.c.CSS+"/base.css"]:{isBinary:!1,content:T(o.y)},[a.c.CSS+"/sandbox.css"]:{isBinary:!1,content:T(o.c)},[a.c.CSS+"/embla.css"]:{isBinary:!1,content:T(p)},[a.c.JS+"/index."+I]:{isBinary:!1,content:A(P)},[a.c.JS+"/Header."+I]:{isBinary:!1,content:A(j)},[a.c.JS+"/Footer."+I]:{isBinary:!1,content:A(D)},[a.c.JS+"/EmblaCarousel."+I]:{isBinary:!1,content:A(N)}};return w&&Object.assign(R,{"tsconfig.json":{isBinary:!1,content:JSON.stringify(L,null,"\t")}}),(0,r.b)({files:Object.assign({},R,_)})}},3160:function(e,t,n){"use strict";n.d(t,{c:function(){return r}});const r={PUBLIC:"public",CSS:"src/css",JS:"src/js"}},5730:function(e,t,n){"use strict";n.d(t,{S:function(){return f}});var r=n(4041),o=n(3057),a=n(3214),i=n(2627),s=n(4702),l=n(4393),c=n(382);const u={VANILLA_JS:"javascript",VANILLA_TS:"typescript",REACT_JS:"react",REACT_TS:"react"},d=o.default.span.withConfig({displayName:"SandboxSelectionInput__RadioLabelContent",componentId:"sc-sob6nf-0"})(["display:flex;flex-direction:column;padding:",";line-height:1;text-align:center;align-items:center;font-size:",";font-weight:",";"],l.F.TWO,s.$.DETAIL,s.s.MEDIUM),m=(0,o.default)(a.I).withConfig({displayName:"SandboxSelectionInput__RadioLabelSvg",componentId:"sc-sob6nf-1"})(["",";margin-bottom:",";"],(0,c.P)("3rem"),l.F.TWO),f=e=>{const{children:t,framework:n,...o}=e;return r.createElement(i.m,o,r.createElement(d,null,r.createElement(m,{svg:u[n]}),t))}},5435:function(e,t,n){"use strict";n.d(t,{F:function(){return E}});var r=n(4274),o=n(5378),a=n(6052),i=n(3525),s=n(8330),l=n(7564),c=n(5399);var u=n(6341),d=n(8893),m=n(9874),f=n(1672);const p=/__replace_sandbox_script_src__/g,b=/__replace_sandbox_code__/g,_=/\/static\/slide-\d{1,}-.+?\.jpg/g,g=/slide-\d{1,}/,h=/slide-/,E=async e=>{const{id:t,carouselScript:E,carouselHtml:C,options:y,styles:x,plugins:v,sandboxOverrides:S,language:T=f.uq.JAVASCRIPT}=e,w=t+"-vanilla",{prettierConfig:I,formatHtml:A,formatCss:O}=await(0,i.g)(),{isTypeScript:L,vanillaScriptExtension:N,formatScript:k}=await(0,c.Bz)(T),P=await(async(e,t,n)=>{const{isJavaScript:r}=await(0,c.Bz)(e),{dependencies:o,devDependencies:a}=s;return{name:t,version:"1.0.0",description:(0,l.fq)(t," ")+" Example",main:"index.html",scripts:{start:"parcel index.html --open",build:"parcel build index.html"},dependencies:{"parcel-bundler":"^1.6.1","embla-carousel":o["embla-carousel-react"],...n&&n},devDependencies:r?{"@babel/core":"7.2.0"}:{typescript:a.typescript},resolutions:{"@babel/preset-env":"7.13.8"}}})(T,w,v),j={include:["./src/**/*"],compilerOptions:{strict:!0,module:"commonjs",jsx:"preserve",esModuleInterop:!0,sourceMap:!0,allowJs:!0,lib:["es6","dom"],rootDir:"src",moduleResolution:"node"}},D=((e,t)=>{const n=null==t?void 0:t.loop;return e.replace(f.$b,(0,c.rf)(t)).replace(f.Ap,(0,c.Wb)(n))})(E,y),R=await(async(e,t,r)=>{const o=await n.e(7265).then(n.bind(n,7265)),i=u.tv+(0,m.b)(),s=(0,l.fq)(e," "),c=a.i.JS+"/index."+t;return o.default.replace(f.Ug,i).replace(f.R6,s).replace(p,c).replace(f.HC,d.t.GITHUB_ROOT).replace(b,r)})(w,N,(e=>e.replace(_,(e=>"https://picsum.photos/600/350?v="+(e.match(g)||[""])[0].replace(h,""))))(C)),B={".prettierrc":{isBinary:!1,content:JSON.stringify(I,null,"\t")},"package.json":{isBinary:!1,content:JSON.stringify(P,null,"\t")},"index.html":{isBinary:!1,content:A(R)},[a.i.CSS+"/base.css"]:{isBinary:!1,content:O(o.y)},[a.i.CSS+"/sandbox.css"]:{isBinary:!1,content:O(o.c)},[a.i.CSS+"/embla.css"]:{isBinary:!1,content:O(x)},[a.i.JS+"/index."+N]:{isBinary:!1,content:k(D)}};return L&&Object.assign(B,{"tsconfig.json":{isBinary:!1,content:JSON.stringify(j,null,"\t")}}),(0,r.b)({files:Object.assign({},B,S)})}},6052:function(e,t,n){"use strict";n.d(t,{i:function(){return r}});const r={CSS:"src/css",JS:"src/js"}},2168:function(e,t,n){"use strict";n.d(t,{r:function(){return m},Z:function(){return d}});var r=n(107),o=n(5399);const a=/from\s'.\/EmblaCarousel(.*)'/g,i=/.+?(?=EmblaCarousel)/,s=e=>(e.match(a)||[]).map((e=>e.replace(i,"").replace(/'/,""))),l=/from\s'..\/EmblaCarousel(.*)'/g,c=/.+?(?=EmblaCarousel)/,u=e=>(e.match(l)||[]).map((e=>e.replace(c,"").replace(/'/,""))),d=async(e,t,a)=>{const{vanillaScriptExtension:i}=await(0,o.Bz)(e),l=s(t),c=u(t),d=[].concat((0,r.A)(l),(0,r.A)(c)),m=l.map((e=>n(2351)("./"+a+"/"+e+"."+i))),f=c.map((e=>n(2351)("./"+e+"."+i))),p=[].concat((0,r.A)(m),(0,r.A)(f)),b=(await Promise.all(p)).map(((e,t)=>({script:e,name:d[t]})));return new Promise((e=>e(b)))},m=async(e,t,a)=>{const{reactScriptExtension:i}=await(0,o.Bz)(e),l=s(t),c=u(t),d=[].concat((0,r.A)(l),(0,r.A)(c)),m=l.map((e=>n(1735)("./"+a+"/"+e+"."+i))),f=c.map((e=>n(1735)("./"+e+"."+i))),p=[].concat((0,r.A)(m),(0,r.A)(f)),b=(await Promise.all(p)).map(((e,t)=>({script:e,name:d[t]})));return new Promise((e=>e(b)))}},3125:function(e,t,n){"use strict";n.d(t,{R:function(){return a}});var r=n(1672),o=n(5399);const a=e=>{const t=Object.values(r.LC).filter((t=>e.match("from '"+t+"'")));return(0,o.rJ)(t).plugins}},5378:function(e,t,n){"use strict";n.d(t,{c:function(){return m},y:function(){return d}});var r=n(3057),o=n(1664),a=n(4702),i=n(6341),s=n(8237);const l=(0,r.css)(["@import url('https://fonts.googleapis.com/css2?family=Inter:wght@100..900&display=swap');html{-webkit-text-size-adjust:100%;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;box-sizing:border-box;line-height:1.15;background-color:",";font-size:",";font-family:Inter,'system-ui',-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Helvetica,Arial,sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol';}*,*::before,*::after{box-sizing:inherit;}body{background-color:",";color:",";font-size:",";line-height:1.65;}"],i.lm.BACKGROUND_SITE,s.X,i.lm.BACKGROUND_SITE,i.lm.TEXT_HIGH_CONTRAST,a.$.BODY),c=(0,r.css)([".header{font-size:2rem;font-weight:",";text-align:center;padding:4rem 2rem 2rem 2rem;margin:0;}"],a.s.BOLD),u=(0,r.css)([".footer{display:flex;justify-content:center;padding:2rem 2rem 4rem 2rem;}.footer__link{display:flex;align-items:center;background-color:transparent;text-decoration:none;text-align:center;font-weight:",";color:",";font-size:1.4rem;}.footer__link__svg{display:block;width:2rem;height:2rem;margin-right:1rem;fill:currentColor;}"],a.s.SEMI_BOLD,i.lm.TEXT_LOW_CONTRAST),d=(0,o.i)(l,i.Zy),m=(0,o.i)(c,u)},352:function(e,t,n){"use strict";n.d(t,{G:function(){return s}});var r=n(4041),o=n(408),a=n(3594),i=n(7564);const s=e=>{const{title:t,description:n,lang:s="en",url:l,children:c}=e,u=(0,o.Q)(),d=t+" | "+(0,i.fq)(u.title),m=n||u.description;return r.createElement(r.Fragment,null,r.createElement("html",{lang:s}),r.createElement("title",null,d),r.createElement("link",{rel:"canonical",href:l}),r.createElement("meta",{name:"description",content:m}),r.createElement("meta",{name:"og:title",content:t}),r.createElement("meta",{name:"og:description",content:m}),r.createElement("meta",{name:"og:type",content:"article"}),r.createElement("meta",{name:"og:locale",content:"en_EN"}),r.createElement("meta",{name:"og:url",content:l}),r.createElement("meta",{name:"og:site_name",content:(0,a.b)(u.siteUrl)}),r.createElement("meta",{name:"twitter:card",content:"summary"}),r.createElement("meta",{name:"twitter:creator",content:u.author}),r.createElement("meta",{name:"twitter:title",content:t}),r.createElement("meta",{name:"twitter:description",content:m}),c)}},1672:function(e,t,n){"use strict";n.d(t,{$b:function(){return f},Ap:function(){return p},HC:function(){return u},HQ:function(){return s},KH:function(){return o},LC:function(){return i},R6:function(){return d},Ug:function(){return m},gc:function(){return l},hz:function(){return c},uq:function(){return a}});var r=n(4393);const o={VANILLA_JS:"Vanilla",VANILLA_TS:"Vanilla + TypeScript",REACT_TS:"React + TypeScript",REACT_JS:"React"},a={JAVASCRIPT:"javascript",TYPESCRIPT:"typescript"},i={AUTOPLAY:"embla-carousel-autoplay",AUTO_SCROLL:"embla-carousel-auto-scroll",AUTO_HEIGHT:"embla-carousel-auto-height",CLASS_NAMES:"embla-carousel-class-names",FADE:"embla-carousel-fade"},s={FRAMEWORK:"framework",LOOP:"loop",DRAG_FREE:"dragFree",AXIS:"axis",DIRECTION:"direction",ACCESSIBILITY:"accessibility",SLIDE_SIZE:"slideSize",SLIDE_GAP_SIZE:"slideGapSize",EDGE_GAP:"edgeGap",ALIGN:"align",CONTAIN_SCROLL:"containScroll",SLIDES_TO_SCROLL:"slidesToScroll",NAVIGATION_PREV_NEXT_BUTTONS:"navigationPrevNextButtons",NAVIGATION_DOTS:"navigationDots",AUTOPLAY:"autoplay",WHEEL_GESTURES:"wheelGestures"},l="carousel-generator-form",c=r.F.ONE,u=/__replace_sandbox_repository_url__/g,d=/__replace_sandbox_title__/g,m=/__replace_sandbox_theme__/g,f=/const\sOPTIONS(.*)/,p=/const\sLOOP\s=\sfalse/},8312:function(e,t,n){"use strict";n.d(t,{F:function(){return r}});const r=e=>Array.from(Array(e).keys())},9874:function(e,t,n){"use strict";n.d(t,{b:function(){return a}});var r=n(6341),o=n(8988);const a=()=>{if(!o.B)return r.$.LIGHT;const e=r.tv+r.$.LIGHT;return document.documentElement.classList.contains(e)?r.$.LIGHT:r.$.DARK}},3525:function(e,t,n){"use strict";n.d(t,{g:function(){return a}});var r=n(4620);const o=n.n(r)(),a=async()=>{const[e,t,r,a]=await Promise.all([n.e(4832).then(n.t.bind(n,2406,23)),n.e(775).then(n.t.bind(n,6242,23)),n.e(7190).then(n.t.bind(n,7190,23)),n.e(4858).then(n.t.bind(n,3975,23))]),i={...o,parser:"html",plugins:[t]},s={...o,parser:"css",plugins:[r]},l={...o,parser:"babel",plugins:[a]},c={...o,parser:"babel-ts",plugins:[a]},u=(t,n)=>{let r="";try{r=e.format(t,n)}catch(o){console.warn("Prettier was not able to format file",o)}return r};return{prettierConfig:o,formatHtml:e=>u(e,i),formatCss:e=>u(e,s),formatJs:e=>u(e,l),formatTs:e=>u(e,c)}}},3594:function(e,t,n){"use strict";n.d(t,{b:function(){return r}});const r=e=>e.replace(/(^\w+:|^)\/\//,"")},5399:function(e,t,n){"use strict";n.d(t,{Bz:function(){return s},M8:function(){return m},Wb:function(){return d},Yy:function(){return l},rJ:function(){return c},rf:function(){return u}});var r=n(8330),o=n(3525),a=n(7564),i=n(1672);const s=async e=>{const{formatTs:t,formatJs:n}=await(0,o.g)(),r=e===i.uq.TYPESCRIPT,a=!r;return{isJavaScript:a,isTypeScript:r,vanillaScriptExtension:a?"js":"ts",reactScriptExtension:a?"jsx":"tsx",formatScript:r?t:n}},l=e=>Object.keys(e).map((t=>{const n=t,r=e[n];return{key:n,label:i.KH[n],createSandbox:r}})),c=e=>({plugins:{...(Array.isArray(e)?e:[e]).reduce(((e,t)=>({...e,[t]:r.dependencies[t]})),{})}}),u=e=>t=>t.replace("{}",JSON.stringify(e)),d=function(e){return void 0===e&&(e=!1),t=>t.replace("false",e.toString())},m=e=>({FIELD_NAME:e,ID:i.gc+"-"+(0,a.QA)(e)})},1664:function(e,t,n){"use strict";n.d(t,{i:function(){return r}});const r=function(){for(var e=arguments.length,t=new Array(e),n=0;ne+t.join("")),"")}},4620:function(e,t,n){e.exports=n(3211)},7154:function(e,t,n){"use strict";n.d(t,{A:function(){return H}});var r=n(4041);function o(e){return function(e){return"[object Object]"===Object.prototype.toString.call(e)}(e)||Array.isArray(e)}function a(e,t){const n=Object.keys(e),r=Object.keys(t);if(n.length!==r.length)return!1;return JSON.stringify(Object.keys(e.breakpoints||{}))===JSON.stringify(Object.keys(t.breakpoints||{}))&&n.every((n=>{const r=e[n],i=t[n];return"function"==typeof r?""+r==""+i:o(r)&&o(i)?a(r,i):r===i}))}function i(e){return e.concat().sort(((e,t)=>e.name>t.name?1:-1)).map((e=>e.options))}var s=n(107);function l(e){return"number"==typeof e}function c(e){return"string"==typeof e}function u(e){return"boolean"==typeof e}function d(e){return"[object Object]"===Object.prototype.toString.call(e)}function m(e){return Math.abs(e)}function f(e){return Math.sign(e)}function p(e,t){return m(e-t)}function b(e){return C(e).map(Number)}function _(e){return e[g(e)]}function g(e){return Math.max(0,e.length-1)}function h(e,t){return t===g(e)}function E(e,t){return void 0===t&&(t=0),Array.from(Array(e),((e,n)=>t+n))}function C(e){return Object.keys(e)}function y(e,t){return[e,t].reduce(((e,t)=>(C(t).forEach((n=>{const r=e[n],o=t[n],a=d(r)&&d(o);e[n]=a?y(r,o):o})),e)),{})}function x(e,t){return void 0!==t.MouseEvent&&e instanceof t.MouseEvent}function v(){let e=[];const t={add:function(n,r,o,a){let i;if(void 0===a&&(a={passive:!0}),"addEventListener"in n)n.addEventListener(r,o,a),i=()=>n.removeEventListener(r,o,a);else{const e=n;e.addListener(o),i=()=>e.removeListener(o)}return e.push(i),t},clear:function(){e=e.filter((e=>e()))}};return t}function S(e,t,n,r){const o=v(),a=1e3/60;let i=null,s=0,l=0;function c(e){if(!l)return;i||(i=e);const o=e-i;for(i=e,s+=o;s>=a;)n(),s-=a;const u=m(s/a);r(u),l&&t.requestAnimationFrame(c)}function u(){t.cancelAnimationFrame(l),i=null,s=0,l=0}return{init:function(){o.add(e,"visibilitychange",(()=>{e.hidden&&(i=null,s=0)}))},destroy:function(){u(),o.clear()},start:function(){l||(l=t.requestAnimationFrame(c))},stop:u,update:n,render:r}}function T(e,t){void 0===e&&(e=0),void 0===t&&(t=0);const n=m(e-t);function r(t){return tt}function a(e){return r(e)||o(e)}return{length:n,max:t,min:e,constrain:function(n){return a(n)?r(n)?e:t:n},reachedAny:a,reachedMax:o,reachedMin:r,removeOffset:function(e){return n?e-n*Math.ceil((e-t)/n):e}}}function w(e,t,n){const{constrain:r}=T(0,e),o=e+1;let a=i(t);function i(e){return n?m((o+e)%o):r(e)}function s(){return a}function l(){return w(e,s(),n)}const c={get:s,set:function(e){return a=i(e),c},add:function(e){return l().set(s()+e)},clone:l};return c}function I(e,t,n,r,o,a,i,s,l,c,d,b,_,g,h,E,C,y,S){const{cross:w,direction:I}=e,A=["INPUT","SELECT","TEXTAREA"],O={passive:!1},L=v(),N=v(),k=T(50,225).constrain(g.measure(20)),P={mouse:300,touch:400},j={mouse:500,touch:600},D=h?43:25;let R=!1,B=0,z=0,G=!1,F=!1,M=!1,U=!1;function H(e){if(!x(e,r)&&e.touches.length>=2)return V(e);const t=a.readPoint(e),n=a.readPoint(e,w),i=p(t,B),l=p(n,z);if(!F&&!U){if(!e.cancelable)return V(e);if(F=i>l,!F)return V(e)}const u=a.pointerMove(e);i>E&&(M=!0),c.useFriction(.3).useDuration(.75),s.start(),o.add(I(u)),e.preventDefault()}function V(e){const t=d.byDistance(0,!1).index!==b.get(),n=a.pointerUp(e)*(h?j:P)[U?"mouse":"touch"],r=function(e,t){const n=b.add(-1*f(e)),r=d.byDistance(e,!h).distance;return h||m(e)=2,s&&0!==e.button)return;if(function(e){const t=e.nodeName||"";return A.includes(t)}(e.target))return;G=!0,a.pointerDown(e),c.useFriction(0).useDuration(0),o.set(i),function(){const e=U?n:t;N.add(e,"touchmove",H,O).add(e,"touchend",V).add(e,"mousemove",H,O).add(e,"mouseup",V)}(),B=a.readPoint(e),z=a.readPoint(e,w),_.emit("pointerDown")}(s)}const l=t;L.add(l,"dragstart",(e=>e.preventDefault()),O).add(l,"touchmove",(()=>{}),O).add(l,"touchend",(()=>{})).add(l,"touchstart",s).add(l,"mousedown",s).add(l,"touchcancel",V).add(l,"contextmenu",V).add(l,"click",J,!0)},destroy:function(){L.clear(),N.clear()},pointerDown:function(){return G}}}function A(e,t){let n,r;function o(e){return e.timeStamp}function a(n,r){const o="client"+("x"===(r||e.scroll)?"X":"Y");return(x(n,t)?n:n.touches[0])[o]}return{pointerDown:function(e){return n=e,r=e,a(e)},pointerMove:function(e){const t=a(e)-a(r),i=o(e)-o(n)>170;return r=e,i&&(n=e),t},pointerUp:function(e){if(!n||!r)return 0;const t=a(r)-a(n),i=o(e)-o(n),s=o(e)-o(r)>170,l=t/i;return i&&!s&&m(l)>.1?l:0},readPoint:a}}function O(e,t,n,r,o,a,i){let s,l,c=[],d=!1;function f(e){return o.measureSize(i.measure(e))}return{init:function(o){if(!a)return;l=f(e),c=r.map(f),s=new ResizeObserver((i=>{d||(u(a)||a(o,i))&&function(a){for(const i of a){const a=i.target===e,s=r.indexOf(i.target),u=a?l:c[s];if(m(f(a?e:r[s])-u)>=.5){n.requestAnimationFrame((()=>{o.reInit(),t.emit("resize")}));break}}}(i)})),[e].concat(r).forEach((e=>s.observe(e)))},destroy:function(){s&&s.disconnect(),d=!0}}}function L(e,t,n,r,o){const a=o.measure(10),i=o.measure(50),s=T(.1,.99);let l=!1;function c(){return!l&&(!!e.reachedAny(n.get())&&!!e.reachedAny(t.get()))}return{shouldConstrain:c,constrain:function(o){if(!c())return;const l=e.reachedMin(t.get())?"min":"max",u=m(e[l]-t.get()),d=n.get()-t.get(),f=s.constrain(u/i);n.subtract(d*f),!o&&m(d)e.add(o)))}}}function k(e,t,n,r,o){const{reachedAny:a,removeOffset:i,constrain:s}=r;function l(e){return e.concat().sort(((e,t)=>m(e)-m(t)))[0]}function c(t,r){const o=[t,t+n,t-n];if(!e)return t;if(!r)return l(o);const a=o.filter((e=>f(e)===r));return a.length?l(a):_(o)-n}return{byDistance:function(n,r){const l=o.get()+n,{index:u,distance:d}=function(n){const r=e?i(n):s(n),o=t.map(((e,t)=>({diff:c(e-r,0),index:t}))).sort(((e,t)=>m(e.diff)-m(t.diff))),{index:a}=o[0];return{index:a,distance:r}}(l),f=!e&&a(l);return!r||f?{index:u,distance:n}:{index:u,distance:n+c(t[u]-d,0)}},byIndex:function(e,n){return{index:e,distance:c(t[e]-o.get(),n)}},shortcut:c}}function P(e){let t=e;function n(e){return l(e)?e:e.get()}return{get:function(){return t},set:function(e){t=n(e)},add:function(e){t+=n(e)},subtract:function(e){t-=n(e)}}}function j(e,t){const n="x"===e.scroll?function(e){return"translate3d("+e+"px,0px,0px)"}:function(e){return"translate3d(0px,"+e+"px,0px)"},r=t.style;let o=!1;return{clear:function(){o||(r.transform="",t.getAttribute("style")||t.removeAttribute("style"))},to:function(t){o||(r.transform=n(e.direction(t)))},toggleActive:function(e){o=!e}}}function D(e,t,n,r,o,a,i,s,l){const c=.5,u=b(o),d=b(o).reverse(),m=function(){const e=i[0];return _(p(d,e),n,!1)}().concat(function(){const e=t-i[0]-1;return _(p(u,e),-n,!0)}());function f(e,t){return e.reduce(((e,t)=>e-o[t]),t)}function p(e,t){return e.reduce(((e,n)=>f(e,t)>0?e.concat([n]):e),[])}function _(o,i,u){const d=function(e){return a.map(((n,o)=>({start:n-r[o]+c+e,end:n+t-c+e})))}(i);return o.map((t=>{const r=u?0:-n,o=u?n:0,a=u?"end":"start",i=d[t][a];return{index:t,loopPoint:i,slideLocation:P(-1),translate:j(e,l[t]),target:()=>s.get()>i?r:o}}))}return{canLoop:function(){return m.every((e=>{let{index:n}=e;return f(u.filter((e=>e!==n)),t)<=.1}))},clear:function(){m.forEach((e=>e.translate.clear()))},loop:function(){m.forEach((e=>{const{target:t,translate:n,slideLocation:r}=e,o=t();o!==r.get()&&(n.to(o),r.set(o))}))},loopPoints:m}}function R(e,t,n){let r,o=!1;return{init:function(a){n&&(r=new MutationObserver((e=>{o||(u(n)||n(a,e))&&function(e){for(const n of e)if("childList"===n.type){a.reInit(),t.emit("slidesChanged");break}}(e)})),r.observe(e,{childList:!0}))},destroy:function(){r&&r.disconnect(),o=!0}}}function B(e,t,n,r){const o={};let a,i=null,s=null,l=!1;return{init:function(){a=new IntersectionObserver((e=>{l||(e.forEach((e=>{const n=t.indexOf(e.target);o[n]=e})),i=null,s=null,n.emit("slidesInView"))}),{root:e.parentElement,threshold:r}),t.forEach((e=>a.observe(e)))},destroy:function(){a&&a.disconnect(),l=!0},get:function(e){if(void 0===e&&(e=!0),e&&i)return i;if(!e&&s)return s;const t=function(e){return C(o).reduce(((t,n)=>{const r=parseInt(n),{isIntersecting:a}=o[r];return(e&&a||!e&&!a)&&t.push(r),t}),[])}(e);return e&&(i=t),e||(s=t),t}}}function z(e,t,n,r,o,a,i,s,c){const{startEdge:u,endEdge:d,direction:f}=e,p=l(n);return{groupSlides:function(e){return p?function(e,t){return b(e).filter((e=>e%t==0)).map((n=>e.slice(n,n+t)))}(e,n):function(e){return e.length?b(e).reduce(((n,l,p)=>{const b=_(n)||0,h=0===b,E=l===g(e),C=o[u]-a[b][u],y=o[u]-a[l][d],x=!r&&h?f(i):0,v=m(y-(!r&&E?f(s):0)-(C+x));return p&&v>t+c&&n.push(l),E&&n.push(e.length),n}),[]).map(((t,n,r)=>{const o=Math.max(r[n-1]||0);return e.slice(o,t)})):[]}(e)}}}function G(e,t,n,r,o,a,i){const{align:s,axis:u,direction:d,startIndex:C,loop:y,duration:x,dragFree:G,dragThreshold:F,inViewThreshold:M,slidesToScroll:U,skipSnaps:H,containScroll:V,watchResize:J,watchSlides:Y,watchDrag:W}=a,X={measure:function(e){const{offsetTop:t,offsetLeft:n,offsetWidth:r,offsetHeight:o}=e;return{top:t,right:n+r,bottom:t+o,left:n,width:r,height:o}}},q=X.measure(t),$=n.map(X.measure),K=function(e,t){const n="rtl"===t,r="y"===e,o=!r&&n?-1:1;return{scroll:r?"y":"x",cross:r?"x":"y",startEdge:r?"top":n?"right":"left",endEdge:r?"bottom":n?"left":"right",measureSize:function(e){const{height:t,width:n}=e;return r?t:n},direction:function(e){return e*o}}}(u,d),Q=K.measureSize(q),Z=function(e){return{measure:function(t){return e*(t/100)}}}(Q),ee=function(e,t){const n={start:function(){return 0},center:function(e){return r(e)/2},end:r};function r(e){return t-e}return{measure:function(r,o){return c(e)?n[e](r):e(t,r,o)}}}(s,Q),te=!y&&!!V,ne=y||!!V,{slideSizes:re,slideSizesWithGaps:oe,startGap:ae,endGap:ie}=function(e,t,n,r,o,a){const{measureSize:i,startEdge:s,endEdge:l}=e,c=n[0]&&o,u=function(){if(!c)return 0;const e=n[0];return m(t[s]-e[s])}(),d=function(){if(!c)return 0;const e=a.getComputedStyle(_(r));return parseFloat(e.getPropertyValue("margin-"+l))}(),f=n.map(i),p=n.map(((e,t,n)=>{const r=!t,o=h(n,t);return r?f[t]+u:o?f[t]+d:n[t+1][s]-e[s]})).map(m);return{slideSizes:f,slideSizesWithGaps:p,startGap:u,endGap:d}}(K,q,$,n,ne,o),se=z(K,Q,U,y,q,$,ae,ie,2),{snaps:le,snapsAligned:ce}=function(e,t,n,r,o){const{startEdge:a,endEdge:i}=e,{groupSlides:s}=o,l=s(r).map((e=>_(e)[i]-e[0][a])).map(m).map(t.measure),c=r.map((e=>n[a]-e[a])).map((e=>-m(e))),u=s(c).map((e=>e[0])).map(((e,t)=>e+l[t]));return{snaps:c,snapsAligned:u}}(K,ee,q,$,se),ue=-_(le)+_(oe),{snapsContained:de,scrollContainLimit:me}=function(e,t,n,r,o){const a=T(-t+e,0),i=n.map(((e,t)=>{const{min:r,max:o}=a,i=a.constrain(e),s=!t,c=h(n,t);return s?o:c||l(r,i)?r:l(o,i)?o:i})).map((e=>parseFloat(e.toFixed(3)))),s=function(){const e=i[0],t=_(i);return T(i.lastIndexOf(e),i.indexOf(t)+1)}();function l(e,t){return p(e,t)<1}return{snapsContained:function(){if(t<=e+o)return[a.max];if("keepSnaps"===r)return i;const{min:n,max:l}=s;return i.slice(n,l)}(),scrollContainLimit:s}}(Q,ue,ce,V,2),fe=te?de:ce,{limit:pe}=function(e,t,n){const r=t[0];return{limit:T(n?r-e:_(t),r)}}(ue,fe,y),be=w(g(fe),C,y),_e=be.clone(),ge=b(n),he=S(r,o,(()=>(e=>{let{dragHandler:t,scrollBody:n,scrollBounds:r,options:{loop:o}}=e;o||r.constrain(t.pointerDown()),n.seek()})(Ne)),(e=>((e,t)=>{let{scrollBody:n,translate:r,location:o,offsetLocation:a,scrollLooper:i,slideLooper:s,dragHandler:l,animation:c,eventHandler:u,scrollBounds:d,options:{loop:m}}=e;const f=n.velocity(),p=n.settled(),b=!d.shouldConstrain(),_=m?p:p&&b;_&&!l.pointerDown()&&(c.stop(),u.emit("settle")),_||u.emit("scroll"),a.set(o.get()-f+f*t),m&&(i.loop(n.direction()),s.loop()),r.to(a.get())})(Ne,e))),Ee=fe[be.get()],Ce=P(Ee),ye=P(Ee),xe=P(Ee),ve=function(e,t,n,r,o){let a=0,i=0,s=r,l=o,c=e.get(),u=0;function d(e){return s=e,b}function p(e){return l=e,b}const b={direction:function(){return i},duration:function(){return s},velocity:function(){return a},seek:function(){const t=n.get()-e.get();let r=0;return s?(a+=t/s,a*=l,c+=a,e.add(a),r=c-u):(a=0,e.set(n),r=t),i=f(r),u=c,b},settled:function(){return m(n.get()-t.get())<.001},useBaseFriction:function(){return p(o)},useBaseDuration:function(){return d(r)},useFriction:p,useDuration:d};return b}(Ce,ye,xe,x,.68),Se=k(y,fe,ue,pe,xe),Te=function(e,t,n,r,o,a,i){function s(o){const s=o.distance,l=o.index!==t.get();a.add(s),s&&(r.duration()?e.start():(e.update(),e.render(1),e.update())),l&&(n.set(t.get()),t.set(o.index),i.emit("select"))}return{distance:function(e,t){s(o.byDistance(e,t))},index:function(e,n){const r=t.clone().set(e);s(o.byIndex(r.get(),n))}}}(he,be,_e,ve,Se,xe,i),we=function(e){const{max:t,length:n}=e;return{get:function(e){return n?(e-t)/-n:0}}}(pe),Ie=v(),Ae=B(t,n,i,M),{slideRegistry:Oe}=function(e,t,n,r,o,a){const{groupSlides:i}=o,{min:s,max:l}=r;return{slideRegistry:function(){const r=i(a),o=!e||"keepSnaps"===t;return 1===n.length?[a]:o?r:r.slice(s,l).map(((e,t,n)=>{const r=!t,o=h(n,t);return r?E(_(n[0])+1):o?E(g(a)-_(n)[0]+1,_(n)[0]):e}))}()}}(te,V,fe,me,se,ge),Le=function(e,t,n,r,o,a,i){let s=0;function c(e){"Tab"===e.code&&(s=(new Date).getTime())}function u(c){a.add(c,"focus",(()=>{if((new Date).getTime()-s>10)return;e.scrollLeft=0;const a=t.indexOf(c),u=n.findIndex((e=>e.includes(a)));l(u)&&(o.useDuration(0),r.index(u,0),i.emit("slideFocus"))}),{passive:!0,capture:!0})}return{init:function(){a.add(document,"keydown",c,!1),t.forEach(u)}}}(e,n,Oe,Te,ve,Ie,i),Ne={ownerDocument:r,ownerWindow:o,eventHandler:i,containerRect:q,slideRects:$,animation:he,axis:K,dragHandler:I(K,e,r,o,xe,A(K,o),Ce,he,Te,ve,Se,be,i,Z,G,F,H,.68,W),eventStore:Ie,percentOfView:Z,index:be,indexPrevious:_e,limit:pe,location:Ce,offsetLocation:ye,options:a,resizeHandler:O(t,i,o,n,K,J,X),scrollBody:ve,scrollBounds:L(pe,ye,xe,ve,Z),scrollLooper:N(ue,pe,ye,[Ce,ye,xe]),scrollProgress:we,scrollSnapList:fe.map(we.get),scrollSnaps:fe,scrollTarget:Se,scrollTo:Te,slideLooper:D(K,Q,ue,re,oe,le,fe,ye,n),slideFocus:Le,slidesHandler:R(t,i,Y),slidesInView:Ae,slideIndexes:ge,slideRegistry:Oe,slidesToScroll:se,target:xe,translate:j(K,t)};return Ne}const F={align:"center",axis:"x",container:null,slides:null,containScroll:"trimSnaps",direction:"ltr",slidesToScroll:1,inViewThreshold:0,breakpoints:{},dragFree:!1,dragThreshold:10,loop:!1,skipSnaps:!1,duration:25,startIndex:0,active:!0,watchDrag:!0,watchResize:!0,watchSlides:!0};function M(e){function t(e,t){return y(e,t||{})}const n={mergeOptions:t,optionsAtMedia:function(n){const r=n.breakpoints||{},o=C(r).filter((t=>e.matchMedia(t).matches)).map((e=>r[e])).reduce(((e,n)=>t(e,n)),{});return t(n,o)},optionsMediaQueries:function(t){return t.map((e=>C(e.breakpoints||{}))).reduce(((e,t)=>e.concat(t)),[]).map(e.matchMedia)}};return n}function U(e,t,n){const r=e.ownerDocument,o=r.defaultView,a=M(o),i=function(e){let t=[];return{init:function(n,r){return t=r.filter((t=>{let{options:n}=t;return!1!==e.optionsAtMedia(n).active})),t.forEach((t=>t.init(n,e))),r.reduce(((e,t)=>Object.assign(e,{[t.name]:t})),{})},destroy:function(){t=t.filter((e=>e.destroy()))}}}(a),l=v(),u=function(){let e,t={};function n(e){return t[e]||[]}const r={init:function(t){e=t},emit:function(t){return n(t).forEach((n=>n(e,t))),r},off:function(e,o){return t[e]=n(e).filter((e=>e!==o)),r},on:function(e,o){return t[e]=n(e).concat([o]),r},clear:function(){t={}}};return r}(),{mergeOptions:d,optionsAtMedia:m,optionsMediaQueries:f}=a,{on:p,off:b,emit:_}=u,g=O;let h,E,C,y,x=!1,S=d(F,U.globalOptions),T=d(S),w=[];function I(t){const n=G(e,C,y,r,o,t,u);if(t.loop&&!n.slideLooper.canLoop()){return I(Object.assign({},t,{loop:!1}))}return n}function A(t,n){x||(S=d(S,t),T=m(S),w=n||w,function(){const{container:t,slides:n}=T,r=c(t)?e.querySelector(t):t;C=r||e.children[0];const o=c(n)?C.querySelectorAll(n):n;y=[].slice.call(o||C.children)}(),h=I(T),f([S].concat((0,s.A)(w.map((e=>{let{options:t}=e;return t}))))).forEach((e=>l.add(e,"change",O))),T.active&&(h.translate.to(h.location.get()),h.animation.init(),h.slidesInView.init(),h.slideFocus.init(),h.eventHandler.init(P),h.resizeHandler.init(P),h.slidesHandler.init(P),h.options.loop&&h.slideLooper.loop(),C.offsetParent&&y.length&&h.dragHandler.init(P),E=i.init(P,w)))}function O(e,t){const n=k();L(),A(d({startIndex:n},e),t),u.emit("reInit")}function L(){h.dragHandler.destroy(),h.eventStore.clear(),h.translate.clear(),h.slideLooper.clear(),h.resizeHandler.destroy(),h.slidesHandler.destroy(),h.slidesInView.destroy(),h.animation.destroy(),i.destroy(),l.clear()}function N(e,t,n){T.active&&!x&&(h.scrollBody.useBaseFriction().useDuration(!0===t?0:T.duration),h.scrollTo.index(e,n||0))}function k(){return h.index.get()}const P={canScrollNext:function(){return h.index.add(1).get()!==k()},canScrollPrev:function(){return h.index.add(-1).get()!==k()},containerNode:function(){return C},internalEngine:function(){return h},destroy:function(){x||(x=!0,l.clear(),L(),u.emit("destroy"),u.clear())},off:b,on:p,emit:_,plugins:function(){return E},previousScrollSnap:function(){return h.indexPrevious.get()},reInit:g,rootNode:function(){return e},scrollNext:function(e){N(h.index.add(1).get(),e,-1)},scrollPrev:function(e){N(h.index.add(-1).get(),e,1)},scrollProgress:function(){return h.scrollProgress.get(h.location.get())},scrollSnapList:function(){return h.scrollSnapList},scrollTo:N,selectedScrollSnap:k,slideNodes:function(){return y},slidesInView:function(){return h.slidesInView.get()},slidesNotInView:function(){return h.slidesInView.get(!1)}};return A(t,n),setTimeout((()=>u.emit("init")),0),P}function H(e,t){void 0===e&&(e={}),void 0===t&&(t=[]);const n=(0,r.useRef)(e),o=(0,r.useRef)(t),{0:s,1:l}=(0,r.useState)(),{0:c,1:u}=(0,r.useState)(),d=(0,r.useCallback)((()=>{s&&s.reInit(n.current,o.current)}),[s]);return(0,r.useEffect)((()=>{if("undefined"!=typeof window&&window.document&&window.document.createElement&&c){U.globalOptions=H.globalOptions;const e=U(c,n.current,o.current);return l(e),()=>e.destroy()}l(void 0)}),[c,l]),(0,r.useEffect)((()=>{a(n.current,e)||(n.current=e,d())}),[e,d]),(0,r.useEffect)((()=>{(function(e,t){if(e.length!==t.length)return!1;const n=i(e),r=i(t);return n.every(((e,t)=>a(e,r[t])))})(o.current,t)||(o.current=t,d())}),[t,d]),[u,s]}U.globalOptions=void 0,H.globalOptions=void 0},683:function(e,t,n){var r,o=function(){var e=String.fromCharCode,t="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",n="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+-$",r={};function o(e,t){if(!r[e]){r[e]={};for(var n=0;n>>8,n[2*r+1]=i%256}return n},decompressFromUint8Array:function(t){if(null==t)return a.decompress(t);for(var n=new Array(t.length/2),r=0,o=n.length;r>=1}else{for(o=1,r=0;r>=1}0==--d&&(d=Math.pow(2,f),f++),delete s[u]}else for(o=i[u],r=0;r>=1;0==--d&&(d=Math.pow(2,f),f++),i[c]=m++,u=String(l)}if(""!==u){if(Object.prototype.hasOwnProperty.call(s,u)){if(u.charCodeAt(0)<256){for(r=0;r>=1}else{for(o=1,r=0;r>=1}0==--d&&(d=Math.pow(2,f),f++),delete s[u]}else for(o=i[u],r=0;r>=1;0==--d&&(d=Math.pow(2,f),f++)}for(o=2,r=0;r>=1;for(;;){if(b<<=1,_==t-1){p.push(n(b));break}_++}return p.join("")},decompress:function(e){return null==e?"":""==e?null:a._decompress(e.length,32768,(function(t){return e.charCodeAt(t)}))},_decompress:function(t,n,r){var o,a,i,s,l,c,u,d=[],m=4,f=4,p=3,b="",_=[],g={val:r(0),position:n,index:1};for(o=0;o<3;o+=1)d[o]=o;for(i=0,l=Math.pow(2,2),c=1;c!=l;)s=g.val&g.position,g.position>>=1,0==g.position&&(g.position=n,g.val=r(g.index++)),i|=(s>0?1:0)*c,c<<=1;switch(i){case 0:for(i=0,l=Math.pow(2,8),c=1;c!=l;)s=g.val&g.position,g.position>>=1,0==g.position&&(g.position=n,g.val=r(g.index++)),i|=(s>0?1:0)*c,c<<=1;u=e(i);break;case 1:for(i=0,l=Math.pow(2,16),c=1;c!=l;)s=g.val&g.position,g.position>>=1,0==g.position&&(g.position=n,g.val=r(g.index++)),i|=(s>0?1:0)*c,c<<=1;u=e(i);break;case 2:return""}for(d[3]=u,a=u,_.push(u);;){if(g.index>t)return"";for(i=0,l=Math.pow(2,p),c=1;c!=l;)s=g.val&g.position,g.position>>=1,0==g.position&&(g.position=n,g.val=r(g.index++)),i|=(s>0?1:0)*c,c<<=1;switch(u=i){case 0:for(i=0,l=Math.pow(2,8),c=1;c!=l;)s=g.val&g.position,g.position>>=1,0==g.position&&(g.position=n,g.val=r(g.index++)),i|=(s>0?1:0)*c,c<<=1;d[f++]=e(i),u=f-1,m--;break;case 1:for(i=0,l=Math.pow(2,16),c=1;c!=l;)s=g.val&g.position,g.position>>=1,0==g.position&&(g.position=n,g.val=r(g.index++)),i|=(s>0?1:0)*c,c<<=1;d[f++]=e(i),u=f-1,m--;break;case 2:return _.join("")}if(0==m&&(m=Math.pow(2,p),p++),d[u])b=d[u];else{if(u!==f)return null;b=a+a.charAt(0)}_.push(b),d[f++]=a+b.charAt(0),a=b,0==--m&&(m=Math.pow(2,p),p++)}}};return a}();void 0===(r=function(){return o}.call(t,n,t,e))||(e.exports=r)},824:function(e,t,n){"use strict";t.A=n.p+"static/maskable-36b9e327abc26d5d02e9350d184a058f.png"},1735:function(e,t,n){var r={"./AutoHeight/EmblaCarousel":[4439,4439],"./AutoHeight/EmblaCarousel.jsx":[4439,4439],"./AutoHeight/EmblaCarousel.tsx":[3405,3405],"./AutoScroll/EmblaCarousel":[2885,2885],"./AutoScroll/EmblaCarousel.jsx":[2885,2885],"./AutoScroll/EmblaCarousel.tsx":[6831,6831],"./Autoplay/EmblaCarousel":[6652,6652],"./Autoplay/EmblaCarousel.jsx":[6652,6652],"./Autoplay/EmblaCarousel.tsx":[6158,6158],"./CarouselDefaultEntry":[5566,5566],"./CarouselDefaultEntry.jsx":[5566,5566],"./CarouselDefaultEntry.tsx":[460,460],"./CarouselGenerator/EmblaCarousel":[4910,4910],"./CarouselGenerator/EmblaCarousel.jsx":[4910,4910],"./CarouselGenerator/EmblaCarousel.tsx":[5404,5404],"./CarouselGenerator/EmblaCarouselArrowButtons":[4720,4720],"./CarouselGenerator/EmblaCarouselArrowButtons.jsx":[4720,4720],"./CarouselGenerator/EmblaCarouselArrowButtons.tsx":[2682,2682],"./CarouselGenerator/EmblaCarouselDotButton":[893,893],"./CarouselGenerator/EmblaCarouselDotButton.jsx":[893,893],"./CarouselGenerator/EmblaCarouselDotButton.tsx":[8855,8855],"./CarouselGenerator/EmblaCarouselSelectedSnapDisplay":[6807,6807],"./CarouselGenerator/EmblaCarouselSelectedSnapDisplay.jsx":[6807,6807],"./CarouselGenerator/EmblaCarouselSelectedSnapDisplay.tsx":[9421,9421],"./CarouselIosPickerEntry":[7700,7700],"./CarouselIosPickerEntry.jsx":[7700,7700],"./CarouselIosPickerEntry.tsx":[6,6],"./ClassNames/EmblaCarousel":[5223,5223],"./ClassNames/EmblaCarousel.jsx":[5223,5223],"./ClassNames/EmblaCarousel.tsx":[6429,6429],"./EmblaCarouselArrowButtons":[1920,1920],"./EmblaCarouselArrowButtons.jsx":[1920,1920],"./EmblaCarouselArrowButtons.tsx":[6458,6458],"./EmblaCarouselDotButton":[6237,6237],"./EmblaCarouselDotButton.jsx":[6237,6237],"./EmblaCarouselDotButton.tsx":[5207,5207],"./EmblaCarouselSelectedSnapDisplay":[6356,3975],"./EmblaCarouselSelectedSnapDisplay.jsx":[6356,3975],"./EmblaCarouselSelectedSnapDisplay.tsx":[8394,6013],"./Fade/EmblaCarousel":[221,221],"./Fade/EmblaCarousel.jsx":[221,221],"./Fade/EmblaCarousel.tsx":[8183,8183],"./Footer":[8728,8728],"./Footer.jsx":[8728,8728],"./Footer.tsx":[9474,9474],"./Header":[5266,5266],"./Header.jsx":[5266,5266],"./Header.tsx":[3400,3400],"./InfiniteScroll/EmblaCarousel":[7032,7032],"./InfiniteScroll/EmblaCarousel.jsx":[7032,7032],"./InfiniteScroll/EmblaCarousel.tsx":[8898,8898],"./IosPicker/EmblaCarousel":[6958,6958],"./IosPicker/EmblaCarousel.jsx":[6958,6958],"./IosPicker/EmblaCarousel.tsx":[1852,1852],"./IosPicker/EmblaCarouselIosPickerItem":[3348,3348],"./IosPicker/EmblaCarouselIosPickerItem.jsx":[3348,3348],"./IosPicker/EmblaCarouselIosPickerItem.tsx":[7142,7142],"./LazyLoad/EmblaCarousel":[1897,1897],"./LazyLoad/EmblaCarousel.jsx":[1897,1897],"./LazyLoad/EmblaCarousel.tsx":[8683,8683],"./LazyLoad/EmblaCarouselLazyLoadImage":[3376,3376],"./LazyLoad/EmblaCarouselLazyLoadImage.jsx":[3376,3376],"./LazyLoad/EmblaCarouselLazyLoadImage.tsx":[4618,4618],"./Opacity/EmblaCarousel":[2260,2260],"./Opacity/EmblaCarousel.jsx":[2260,2260],"./Opacity/EmblaCarousel.tsx":[7862,7862],"./Parallax/EmblaCarousel":[3862,3862],"./Parallax/EmblaCarousel.jsx":[3862,3862],"./Parallax/EmblaCarousel.tsx":[9844,9844],"./Progress/EmblaCarousel":[3146,3146],"./Progress/EmblaCarousel.jsx":[3146,3146],"./Progress/EmblaCarousel.tsx":[9360,9360],"./Scale/EmblaCarousel":[3734,3734],"./Scale/EmblaCarousel.jsx":[3734,3734],"./Scale/EmblaCarousel.tsx":[7387,7387],"./Thumbs/EmblaCarousel":[72,72],"./Thumbs/EmblaCarousel.jsx":[72,72],"./Thumbs/EmblaCarousel.tsx":[9122,9122],"./Thumbs/EmblaCarouselThumbsButton":[2875,2875],"./Thumbs/EmblaCarouselThumbsButton.jsx":[2875,2875],"./Thumbs/EmblaCarouselThumbsButton.tsx":[6841,6841],"./index.html":[8269,8269]};function o(e){if(!n.o(r,e))return Promise.resolve().then((function(){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}));var t=r[e],o=t[0];return n.e(t[1]).then((function(){return n(o)}))}o.keys=function(){return Object.keys(r)},o.id=1735,e.exports=o},7182:function(e,t,n){var r={"./CarouselDefaultEntry.jsx":[5566,5566],"./CarouselDefaultEntry.tsx":[460,460]};function o(e){if(!n.o(r,e))return Promise.resolve().then((function(){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}));var t=r[e],o=t[0];return n.e(t[1]).then((function(){return n(o)}))}o.keys=function(){return Object.keys(r)},o.id=7182,e.exports=o},348:function(e,t,n){var r={"./CarouselIosPickerEntry.jsx":[7700,7700],"./CarouselIosPickerEntry.tsx":[6,6]};function o(e){if(!n.o(r,e))return Promise.resolve().then((function(){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}));var t=r[e],o=t[0];return n.e(t[1]).then((function(){return n(o)}))}o.keys=function(){return Object.keys(r)},o.id=348,e.exports=o},2804:function(e,t,n){var r={"./Footer.jsx":[8728,8728],"./Footer.tsx":[9474,9474]};function o(e){if(!n.o(r,e))return Promise.resolve().then((function(){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}));var t=r[e],o=t[0];return n.e(t[1]).then((function(){return n(o)}))}o.keys=function(){return Object.keys(r)},o.id=2804,e.exports=o},4502:function(e,t,n){var r={"./Header.jsx":[5266,5266],"./Header.tsx":[3400,3400]};function o(e){if(!n.o(r,e))return Promise.resolve().then((function(){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}));var t=r[e],o=t[0];return n.e(t[1]).then((function(){return n(o)}))}o.keys=function(){return Object.keys(r)},o.id=4502,e.exports=o},2351:function(e,t,n){var r={"./AutoHeight/EmblaCarousel":[9361,9361],"./AutoHeight/EmblaCarousel.js":[9361,9361],"./AutoHeight/EmblaCarousel.ts":[6827,6827],"./AutoScroll/EmblaCarousel":[7419,7419],"./AutoScroll/EmblaCarousel.js":[7419,7419],"./AutoScroll/EmblaCarousel.ts":[8193,8193],"./AutoScroll/EmblaCarouselAutoScroll":[3165,3165],"./AutoScroll/EmblaCarouselAutoScroll.js":[3165,3165],"./AutoScroll/EmblaCarouselAutoScroll.ts":[8591,8591],"./Autoplay/EmblaCarousel":[6200,6200],"./Autoplay/EmblaCarousel.js":[6200,6200],"./Autoplay/EmblaCarousel.ts":[374,374],"./Autoplay/EmblaCarouselAutoplay":[3325,3325],"./Autoplay/EmblaCarouselAutoplay.js":[3325,3325],"./Autoplay/EmblaCarouselAutoplay.ts":[5743,5743],"./CarouselGenerator/EmblaCarousel":[6518,6518],"./CarouselGenerator/EmblaCarousel.js":[6518,6518],"./CarouselGenerator/EmblaCarousel.ts":[6040,6040],"./CarouselGenerator/EmblaCarouselArrowButtons":[8692,8692],"./CarouselGenerator/EmblaCarouselArrowButtons.js":[8692,8692],"./CarouselGenerator/EmblaCarouselArrowButtons.ts":[9178,9178],"./CarouselGenerator/EmblaCarouselDotButton":[83,83],"./CarouselGenerator/EmblaCarouselDotButton.js":[83,83],"./CarouselGenerator/EmblaCarouselDotButton.ts":[1353,1353],"./CarouselGenerator/EmblaCarouselSelectedSnapDisplay":[6825,6825],"./CarouselGenerator/EmblaCarouselSelectedSnapDisplay.js":[6825,6825],"./CarouselGenerator/EmblaCarouselSelectedSnapDisplay.ts":[5555,5555],"./CarouselGenerator/embla-carousel.html":[7673,7673],"./CarouselGenerator/slide.html":[2548,2548],"./ClassNames/EmblaCarousel":[9105,9105],"./ClassNames/EmblaCarousel.js":[9105,9105],"./ClassNames/EmblaCarousel.ts":[4987,4987],"./EmblaCarouselArrowButtons":[3676,3676],"./EmblaCarouselArrowButtons.js":[3676,3676],"./EmblaCarouselArrowButtons.ts":[1650,1650],"./EmblaCarouselDotButton":[5259,5259],"./EmblaCarouselDotButton.js":[5259,5259],"./EmblaCarouselDotButton.ts":[9377,9377],"./Fade/EmblaCarousel":[8939,8939],"./Fade/EmblaCarousel.js":[8939,8939],"./Fade/EmblaCarousel.ts":[6065,6065],"./InfiniteScroll/EmblaCarousel":[7340,7340],"./InfiniteScroll/EmblaCarousel.js":[7340,7340],"./InfiniteScroll/EmblaCarousel.ts":[1618,1618],"./InfiniteScroll/EmblaCarouselInfiniteScroll":[2709,2709],"./InfiniteScroll/EmblaCarouselInfiniteScroll.js":[2709,2709],"./InfiniteScroll/EmblaCarouselInfiniteScroll.ts":[5917,679],"./IosPicker/EmblaCarousel":[7238,7238],"./IosPicker/EmblaCarousel.js":[7238,7238],"./IosPicker/EmblaCarousel.ts":[4824,2443],"./IosPicker/EmblaCarouselIosPicker":[7787,7787],"./IosPicker/EmblaCarouselIosPicker.js":[7787,7787],"./IosPicker/EmblaCarouselIosPicker.ts":[4913,4913],"./LazyLoad/EmblaCarousel":[7703,7703],"./LazyLoad/EmblaCarousel.js":[7703,7703],"./LazyLoad/EmblaCarousel.ts":[6677,6677],"./LazyLoad/EmblaCarouselLazyLoad":[9157,9157],"./LazyLoad/EmblaCarouselLazyLoad.js":[9157,9157],"./LazyLoad/EmblaCarouselLazyLoad.ts":[8071,8071],"./Opacity/EmblaCarousel":[4776,4776],"./Opacity/EmblaCarousel.js":[4776,4776],"./Opacity/EmblaCarousel.ts":[8950,8950],"./Opacity/EmblaCarouselTweenOpacity":[5804,5804],"./Opacity/EmblaCarouselTweenOpacity.js":[5804,5804],"./Opacity/EmblaCarouselTweenOpacity.ts":[6786,6786],"./Parallax/EmblaCarousel":[3590,3590],"./Parallax/EmblaCarousel.js":[3590,3590],"./Parallax/EmblaCarousel.ts":[2443,4824],"./Parallax/EmblaCarouselTweenParallax":[1288,1288],"./Parallax/EmblaCarouselTweenParallax.js":[1288,1288],"./Parallax/EmblaCarouselTweenParallax.ts":[3878,3878],"./Progress/EmblaCarousel":[6397,8778],"./Progress/EmblaCarousel.js":[6397,8778],"./Progress/EmblaCarousel.ts":[4596,4596],"./Progress/EmblaCarouselProgressBar":[4032,4032],"./Progress/EmblaCarouselProgressBar.js":[4032,4032],"./Progress/EmblaCarouselProgressBar.ts":[334,334],"./Scale/EmblaCarousel":[3615,3615],"./Scale/EmblaCarousel.js":[3615,3615],"./Scale/EmblaCarousel.ts":[1485,1485],"./Scale/EmblaCarouselTweenScale":[7892,7892],"./Scale/EmblaCarouselTweenScale.js":[7892,7892],"./Scale/EmblaCarouselTweenScale.ts":[8378,8378],"./Thumbs/EmblaCarousel":[8804,8804],"./Thumbs/EmblaCarousel.js":[8804,8804],"./Thumbs/EmblaCarousel.ts":[9290,9290],"./Thumbs/EmblaCarouselThumbsButton":[1797,1797],"./Thumbs/EmblaCarouselThumbsButton.js":[1797,1797],"./Thumbs/EmblaCarouselThumbsButton.ts":[711,711],"./index.html":[7265,7265]};function o(e){if(!n.o(r,e))return Promise.resolve().then((function(){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}));var t=r[e],o=t[0];return n.e(t[1]).then((function(){return n(o)}))}o.keys=function(){return Object.keys(r)},o.id=2351,e.exports=o}}]); -//# sourceMappingURL=95da5ec31316267b433b7b2e2bbaca0a1c0b9c0a-2d2b18075bbcb7571c88.js.map \ No newline at end of file diff --git a/docs/95da5ec31316267b433b7b2e2bbaca0a1c0b9c0a-2d2b18075bbcb7571c88.js.map b/docs/95da5ec31316267b433b7b2e2bbaca0a1c0b9c0a-2d2b18075bbcb7571c88.js.map deleted file mode 100644 index 1c563cd14..000000000 --- a/docs/95da5ec31316267b433b7b2e2bbaca0a1c0b9c0a-2d2b18075bbcb7571c88.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"95da5ec31316267b433b7b2e2bbaca0a1c0b9c0a-2d2b18075bbcb7571c88.js","mappings":"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AC,EACAC,IAEOH,EACLC,EACAC,EACAC,GACAG,EAAAA,EAAAA,GAA+BhD,EAAqByB,IAI3CkC,EAAiCA,CAC5ChB,EACAC,EACAC,IAEOH,EACLC,EACAC,EACAC,GACAG,EAAAA,EAAAA,GACEhD,EACAO,EACAE,EACAmB,IAKOgC,EAAiCA,CAC5CjB,EACAC,EACAC,IAEOH,EACLC,EACAC,EACAC,GACAG,EAAAA,EAAAA,GACE3C,EACAE,EACAE,EACAQ,EACAa,IAKO+B,EAA8BA,CACzClB,EACAC,EACAC,IAEOH,EACLC,EACAC,EACAC,GACAG,EAAAA,EAAAA,GACEhD,EACAO,EACAE,EACAQ,EACAc,IAKO+B,EAAgCA,CAC3CnB,EACAC,EACAC,IAEOH,EACLC,EACAC,EACAC,GACAG,EAAAA,EAAAA,GACE3C,EACAE,EACAE,EACAQ,IAKO8C,EAAiCA,CAC5CpB,EACAC,EACAC,IAEOH,EACLC,EACAC,EACAC,GACAG,EAAAA,EAAAA,GACEhD,EACAO,EACAE,EACAW,IAKO4C,EAAmCA,CAC9CrB,EACAC,EACAC,IAEOH,EACLC,EACAC,EACAC,GACAG,EAAAA,EAAAA,GACEhD,EACAO,EACAE,EACAQ,EACAmB,IAKO6B,EAAmCA,CAC9CtB,EACAC,EACAC,IAEOH,EACLC,EACAC,EACAC,GACAG,EAAAA,EAAAA,GACE3C,EACAE,EACAE,EACAQ,EACAoB,IAKO6B,GAA6BA,CACxCvB,EACAC,EACAC,IAEOH,EACLC,EACAC,EACAC,GACAG,EAAAA,EAAAA,GACE3C,EACAE,EACAE,EACAQ,EACAqB,IAKO6B,GAAiCA,CAC5CxB,EACAC,EACAC,IAEOH,EACLC,EACAC,EACAC,GACAG,EAAAA,EAAAA,GACE3C,EACAE,EACAE,EACAQ,EACAe,IAKOoC,GAAuCA,CAClDzB,EACAC,EACAC,IAEOH,EACLC,EACAC,EACAC,GACAG,EAAAA,EAAAA,GACEhD,EACAO,EACAE,EACAS,EACAqB,IAKO8B,GAAkCA,KACtCrB,EAAAA,EAAAA,GAA+BR,E,mHCr5BjC,MAAM8B,GAAoBC,EAAAA,EAA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,iCAAkC,CACjC,KACA,MAED,6BAA8B,CAC7B,KACA,MAED,iCAAkC,CACjC,KACA,MAED,iCAAkC,CACjC,KACA,MAED,2BAA4B,CAC3B,KACA,MAED,+BAAgC,CAC/B,KACA,MAED,+BAAgC,CAC/B,KACA,MAED,yBAA0B,CACzB,KACA,MAED,6BAA8B,CAC7B,KACA,MAED,6BAA8B,CAC7B,IACA,KAED,oCAAqC,CACpC,KACA,MAED,wCAAyC,CACxC,KACA,MAED,wCAAyC,CACxC,KACA,MAED,gDAAiD,CAChD,KACA,MAED,oDAAqD,CACpD,KACA,MAED,oDAAqD,CACpD,KACA,MAED,6CAA8C,CAC7C,IACA,KAED,iDAAkD,CACjD,IACA,KAED,iDAAkD,CACjD,KACA,MAED,uDAAwD,CACvD,KACA,MAED,2DAA4D,CAC3D,KACA,MAED,2DAA4D,CAC3D,KACA,MAED,2BAA4B,CAC3B,KACA,MAED,+BAAgC,CAC/B,KACA,MAED,+BAAgC,CAC/B,EACA,GAED,6BAA8B,CAC7B,KACA,MAED,iCAAkC,CACjC,KACA,MAED,iCAAkC,CACjC,KACA,MAED,8BAA+B,CAC9B,KACA,MAED,kCAAmC,CAClC,KACA,MAED,kCAAmC,CAClC,KACA,MAED,2BAA4B,CAC3B,KACA,MAED,+BAAgC,CAC/B,KACA,MAED,+BAAgC,CAC/B,KACA,MAED,qCAAsC,CACrC,KACA,MAED,yCAA0C,CACzC,KACA,MAED,yCAA0C,CACzC,KACA,MAED,uBAAwB,CACvB,IACA,KAED,2BAA4B,CAC3B,IACA,KAED,2BAA4B,CAC3B,KACA,MAED,WAAY,CACX,KACA,MAED,eAAgB,CACf,KACA,MAED,eAAgB,CACf,KACA,MAED,WAAY,CACX,KACA,MAED,eAAgB,CACf,KACA,MAED,eAAgB,CACf,KACA,MAED,iCAAkC,CACjC,KACA,MAED,qCAAsC,CACrC,KACA,MAED,qCAAsC,CACrC,KACA,MAED,4BAA6B,CAC5B,KACA,MAED,gCAAiC,CAChC,KACA,MAED,gCAAiC,CAChC,KACA,MAED,yCAA0C,CACzC,KACA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","sources":["webpack://embla-carousel-docs/../../node_modules/codesandbox-import-utils/lib/api/define.js","webpack://embla-carousel-docs/../../node_modules/codesandbox/lib/api/define.js","webpack://embla-carousel-docs/../../.prettierrc.js","webpack://embla-carousel-docs/./src/components/Examples/examplesCarouselStyles.ts","webpack://embla-carousel-docs/./src/components/Input/InputRadio.tsx","webpack://embla-carousel-docs/./src/components/Input/createRadioOrCheckboxCard.tsx","webpack://embla-carousel-docs/./src/components/Input/createRadioOrCheckboxDefault.tsx","webpack://embla-carousel-docs/./src/components/Page/PageBreadcrumbs.tsx","webpack://embla-carousel-docs/./src/hooks/useRouteBreadcrumbs.ts","webpack://embla-carousel-docs/./src/components/Page/PageEditThisPage.tsx","webpack://embla-carousel-docs/./src/components/Page/PagePagination.tsx","webpack://embla-carousel-docs/./src/components/Sandbox/React/createSandboxReactIndexHtml.ts","webpack://embla-carousel-docs/./src/components/Sandbox/React/createSandboxReactEntry.ts","webpack://embla-carousel-docs/./src/components/Sandbox/React/createSandboxReactImagePaths.ts","webpack://embla-carousel-docs/./src/components/Sandbox/React/createSandboxReactHeader.ts","webpack://embla-carousel-docs/./src/components/Sandbox/React/createSandboxReactFooter.ts","webpack://embla-carousel-docs/./src/components/Sandbox/React/createSandboxReact.ts","webpack://embla-carousel-docs/./src/components/Sandbox/React/createSandboxReactPackageJson.ts","webpack://embla-carousel-docs/./src/components/Sandbox/React/createSandboxReactTsConfig.ts","webpack://embla-carousel-docs/./src/components/Sandbox/React/sandboxReactFolders.ts","webpack://embla-carousel-docs/./src/components/Sandbox/SandboxSelectionInput.tsx","webpack://embla-carousel-docs/./src/components/Sandbox/Vanilla/createSandboxVanillaEntry.ts","webpack://embla-carousel-docs/./src/components/Sandbox/Vanilla/createSandboxVanillaImagePaths.ts","webpack://embla-carousel-docs/./src/components/Sandbox/Vanilla/createSandboxVanilla.ts","webpack://embla-carousel-docs/./src/components/Sandbox/Vanilla/createSandboxVanillaPackageJson.ts","webpack://embla-carousel-docs/./src/components/Sandbox/Vanilla/createSandboxVanillaTsConfig.ts","webpack://embla-carousel-docs/./src/components/Sandbox/Vanilla/createSandboxVanillaOptions.ts","webpack://embla-carousel-docs/./src/components/Sandbox/Vanilla/sandboxVanillaFolders.ts","webpack://embla-carousel-docs/./src/components/Sandbox/sandboxStaticFindModules.ts","webpack://embla-carousel-docs/./src/components/Sandbox/sandboxStaticExtractModules.ts","webpack://embla-carousel-docs/./src/components/Sandbox/sandboxStaticExtractPlugins.ts","webpack://embla-carousel-docs/./src/components/Sandbox/sandboxStyles.ts","webpack://embla-carousel-docs/./src/components/Seo/Seo.tsx","webpack://embla-carousel-docs/./src/consts/sandbox.ts","webpack://embla-carousel-docs/./src/utils/arrayFromNumber.ts","webpack://embla-carousel-docs/./src/utils/getThemeFromDocument.ts","webpack://embla-carousel-docs/./src/utils/loadPrettier.ts","webpack://embla-carousel-docs/./src/utils/removeProtocol.ts","webpack://embla-carousel-docs/./src/utils/sandbox.ts","webpack://embla-carousel-docs/./src/utils/styledComponentStylesToString.ts","webpack://embla-carousel-docs/./.prettierrc.js","webpack://embla-carousel-docs/../src/components/utils.ts","webpack://embla-carousel-docs/../src/components/Alignment.ts","webpack://embla-carousel-docs/../src/components/EventStore.ts","webpack://embla-carousel-docs/../src/components/Animations.ts","webpack://embla-carousel-docs/../src/components/Axis.ts","webpack://embla-carousel-docs/../src/components/Limit.ts","webpack://embla-carousel-docs/../src/components/Counter.ts","webpack://embla-carousel-docs/../src/components/DragHandler.ts","webpack://embla-carousel-docs/../src/components/DragTracker.ts","webpack://embla-carousel-docs/../src/components/ResizeHandler.ts","webpack://embla-carousel-docs/../src/components/ScrollBounds.ts","webpack://embla-carousel-docs/../src/components/ScrollLooper.ts","webpack://embla-carousel-docs/../src/components/ScrollTarget.ts","webpack://embla-carousel-docs/../src/components/Vector1d.ts","webpack://embla-carousel-docs/../src/components/Translate.ts","webpack://embla-carousel-docs/../src/components/SlideLooper.ts","webpack://embla-carousel-docs/../src/components/SlidesHandler.ts","webpack://embla-carousel-docs/../src/components/SlidesInView.ts","webpack://embla-carousel-docs/../src/components/SlideSizes.ts","webpack://embla-carousel-docs/../src/components/SlidesToScroll.ts","webpack://embla-carousel-docs/../src/components/Engine.ts","webpack://embla-carousel-docs/../src/components/NodeRects.ts","webpack://embla-carousel-docs/../src/components/PercentOfView.ts","webpack://embla-carousel-docs/../src/components/ScrollSnaps.ts","webpack://embla-carousel-docs/../src/components/ScrollContain.ts","webpack://embla-carousel-docs/../src/components/ScrollLimit.ts","webpack://embla-carousel-docs/../src/components/ScrollBody.ts","webpack://embla-carousel-docs/../src/components/ScrollTo.ts","webpack://embla-carousel-docs/../src/components/ScrollProgress.ts","webpack://embla-carousel-docs/../src/components/SlideRegistry.ts","webpack://embla-carousel-docs/../src/components/SlideFocus.ts","webpack://embla-carousel-docs/../src/components/Options.ts","webpack://embla-carousel-docs/../src/components/OptionsHandler.ts","webpack://embla-carousel-docs/../src/components/EmblaCarousel.ts","webpack://embla-carousel-docs/../src/components/PluginsHandler.ts","webpack://embla-carousel-docs/../src/components/EventHandler.ts","webpack://embla-carousel-docs/../src/components/useEmblaCarousel.ts","webpack://embla-carousel-docs/../../node_modules/lz-string/libs/lz-string.js","webpack://embla-carousel-docs/./src/assets/images/maskable.png","webpack://embla-carousel-docs/ ^\\.\\/.*$ namespace object","webpack://embla-carousel-docs/ ^\\.\\/CarouselDefaultEntry\\..*$ namespace object","webpack://embla-carousel-docs/ ^\\.\\/CarouselIosPickerEntry\\..*$ namespace object","webpack://embla-carousel-docs/ ^\\.\\/Footer\\..*$ namespace object","webpack://embla-carousel-docs/ ^\\.\\/Header\\..*$ namespace object","webpack://embla-carousel-docs/ ^\\.\\/.*$ namespace object?8db5"],"sourcesContent":["\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar LZString = require(\"lz-string\");\nfunction compress(input) {\n return LZString.compressToBase64(input)\n .replace(/\\+/g, \"-\") // Convert '+' to '-'\n .replace(/\\//g, \"_\") // Convert '/' to '_'\n .replace(/=+$/, \"\"); // Remove ending '='\n}\nfunction getParameters(parameters) {\n return compress(JSON.stringify(parameters));\n}\nexports.getParameters = getParameters;\n//# sourceMappingURL=define.js.map","\"use strict\";\nexports.__esModule = true;\nexports.getParameters = void 0;\nvar define_1 = require(\"codesandbox-import-utils/lib/api/define\");\nexports.getParameters = define_1.getParameters;\n//# sourceMappingURL=define.js.map","module.exports = {\n bracketSpacing: true,\n printWidth: 80,\n semi: false,\n singleQuote: true,\n trailingComma: 'none',\n tabWidth: 2,\n useTabs: false\n}\n","import { css } from 'styled-components'\nimport { LAYERS } from 'consts/layers'\nimport { COLORS } from 'consts/themes'\nimport { SPACINGS } from 'consts/spacings'\nimport { BORDER_RADIUSES, BORDER_SIZES } from 'consts/border'\nimport { MEDIA } from 'consts/breakpoints'\nimport { FONT_SIZES, FONT_WEIGHTS } from 'consts/fontSizes'\nimport { EmblaOptionsType } from 'embla-carousel'\nimport { createSquareSizeStyles } from 'utils/createSquareSizeStyles'\nimport { styledComponentsStylesToString } from 'utils/styledComponentStylesToString'\nimport { TAP_HIGHLIGHT_STYLES } from 'consts/tapHighlight'\n\nconst CAROUSEL_MAX_WIDTH = '48rem'\nexport const CAROUSEL_DEFAULT_HEIGHT = '19rem'\nexport const CAROUSEL_SLIDES_SPACING = '1rem'\n\nexport const CAROUSEL_THUMB_SLIDES_HEIGHT = '6rem'\nexport const CAROUSEL_THUMB_SLIDES_SPACING = '0.8rem'\n\nexport const CAROUSEL_IOS_PICKER_HEIGHT = '22.2rem'\n\nexport const CAROUSEL_NAV_BUTTON_SIZE = SPACINGS.SIX\nexport const CAROUSEL_CONTROLS_SPACING = SPACINGS.THREE\n\nexport const CAROUSEL_SLIDE_RADIUS_STYLES = css`\n border-radius: ${BORDER_RADIUSES.SOFT};\n`\n\nexport const CAROUSEL_BORDER_SHADOW_STYLES = css`\n box-shadow: inset 0 0 0 ${BORDER_SIZES.OUTLINE}\n ${COLORS.DETAIL_MEDIUM_CONTRAST};\n`\n\nexport const CAROUSEL_BUTTON_BASE_STYLES = css`\n ${TAP_HIGHLIGHT_STYLES};\n -webkit-appearance: none;\n appearance: none;\n background-color: transparent;\n touch-action: manipulation;\n display: inline-flex;\n text-decoration: none;\n cursor: pointer;\n border: 0;\n padding: 0;\n margin: 0;\n`\n\nexport const BASE_STYLES = css`\n .embla {\n max-width: ${CAROUSEL_MAX_WIDTH};\n margin: auto;\n \n --slide-height: ${CAROUSEL_DEFAULT_HEIGHT};\n --slide-spacing: __replace_axis_spacing_amount__;\n --slide-size: __replace_slide_size__;\n }\n \n .embla__viewport {\n overflow: hidden;\n }\n\n .embla__container {\n backface-visibility: hidden;\n display: flex;\n touch-action: __replace-axis-touch_action__;\n margin-__replace_axis_spacing__: calc(var(--slide-spacing) * -1);\n __replace_axis_height__\n __replace_axis_flex__\n }\n\n .embla__slide {\n flex: 0 0 var(--slide-size);\n min-__replace-axis-size__: 0;\n padding-__replace_axis_spacing__: var(--slide-spacing);\n }\n`\n\nexport const SLIDES_PER_VIEW_STYLES = css`\n .embla {\n max-width: 70rem;\n margin: auto;\n\n --slide-height: ${CAROUSEL_DEFAULT_HEIGHT};\n --slide-spacing: 1rem;\n --slide-size: 100%;\n --slide-spacing-sm: 1.6rem;\n --slide-size-sm: 50%;\n --slide-spacing-lg: 2rem;\n --slide-size-lg: calc(100% / 3);\n }\n\n .embla__viewport {\n overflow: hidden;\n }\n\n .embla__container {\n backface-visibility: hidden;\n display: flex;\n touch-action: __replace-axis-touch_action__;\n margin-__replace_axis_spacing__: calc(var(--slide-spacing) * -1);\n __replace_axis_height__\n __replace_axis_flex__\n }\n\n ${MEDIA.MIN_SM} {\n .embla__container {\n margin-__replace_axis_spacing__: calc(var(--slide-spacing-sm) * -1);\n }\n }\n ${MEDIA.MIN_LG} {\n .embla__container {\n margin-__replace_axis_spacing__: calc(var(--slide-spacing-lg) * -1);\n }\n }\n\n\n .embla__slide {\n min-__replace-axis-size__: 0;\n flex: 0 0 var(--slide-size);\n padding-__replace_axis_spacing__: var(--slide-spacing);\n }\n\n ${MEDIA.MIN_SM} {\n .embla__slide {\n flex: 0 0 var(--slide-size-sm);\n padding-__replace_axis_spacing__: var(--slide-spacing-sm);\n }\n }\n ${MEDIA.MIN_LG} {\n .embla__slide {\n flex: 0 0 var(--slide-size-lg);\n padding-__replace_axis_spacing__: var(--slide-spacing-lg);\n }\n }\n`\n\nexport const SLIDE_NUMBER_STYLES = css`\n .embla__slide__number {\n ${CAROUSEL_BORDER_SHADOW_STYLES};\n ${CAROUSEL_SLIDE_RADIUS_STYLES};\n font-size: ${FONT_SIZES.CUSTOM(() => 4)};\n font-weight: ${FONT_WEIGHTS.SEMI_BOLD};\n display: flex;\n align-items: center;\n justify-content: center;\n height: __replace_slide_height__;\n }\n`\n\nexport const IMAGE_STYLES = css`\n .embla__slide__img {\n ${CAROUSEL_SLIDE_RADIUS_STYLES};\n display: block;\n height: __replace_slide_height__;\n width: 100%;\n object-fit: cover;\n }\n`\n\nexport const VARIABLE_WIDTH_STYLES = css`\n .embla__slide:nth-child(1) {\n flex: 0 0 60%;\n }\n .embla__slide:nth-child(2) {\n flex: 0 0 40%;\n }\n .embla__slide:nth-child(3) {\n flex: 0 0 30%;\n }\n .embla__slide:nth-child(4) {\n flex: 0 0 90%;\n }\n .embla__slide:nth-child(5) {\n flex: 0 0 35%;\n }\n .embla__slide:nth-child(6) {\n flex: 0 0 55%;\n }\n .embla__slide:nth-child(7) {\n flex: 0 0 85%;\n }\n .embla__slide:nth-child(8) {\n flex: 0 0 50%;\n }\n .embla__slide:nth-child(9) {\n flex: 0 0 35%;\n }\n`\n\nexport const CONTROLS_STYLES = css`\n .embla__controls {\n display: grid;\n grid-template-columns: auto 1fr;\n justify-content: space-between;\n gap: ${SPACINGS.TWO};\n margin-top: ${CAROUSEL_CONTROLS_SPACING};\n }\n`\n\nexport const ARROWS_STYLES = css`\n .embla__buttons {\n display: grid;\n grid-template-columns: repeat(2, 1fr);\n gap: ${SPACINGS.ONE};\n align-items: center;\n }\n\n .embla__button {\n ${CAROUSEL_BUTTON_BASE_STYLES};\n ${CAROUSEL_BORDER_SHADOW_STYLES};\n ${createSquareSizeStyles(CAROUSEL_NAV_BUTTON_SIZE)}\n z-index: ${LAYERS.STEP};\n border-radius: ${BORDER_RADIUSES.CIRCLE};\n color: ${COLORS.TEXT_BODY};\n display: flex;\n align-items: center;\n justify-content: center;\n }\n\n .embla__button:disabled {\n color: ${COLORS.DETAIL_HIGH_CONTRAST};\n }\n\n .embla__button__svg {\n ${createSquareSizeStyles('35%')}\n }\n`\n\nexport const DOTS_STYLES = css`\n .embla__dots {\n display: flex;\n flex-wrap: wrap;\n justify-content: flex-end;\n align-items: center;\n margin-right: calc((2.6rem - 1.4rem) / 2 * -1);\n }\n\n .embla__dot {\n ${CAROUSEL_BUTTON_BASE_STYLES};\n ${createSquareSizeStyles('2.6rem')}\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: ${BORDER_RADIUSES.CIRCLE};\n }\n\n .embla__dot:after {\n ${CAROUSEL_BORDER_SHADOW_STYLES};\n ${createSquareSizeStyles('1.4rem')}\n border-radius: ${BORDER_RADIUSES.CIRCLE};\n display: flex;\n align-items: center;\n content: '';\n }\n\n .embla__dot--selected:after {\n box-shadow: inset 0 0 0 ${BORDER_SIZES.OUTLINE} ${COLORS.TEXT_BODY};\n }\n`\n\nexport const SNAP_DISPLAY_STYLES = css`\n .embla__selected-snap-display {\n justify-self: flex-end;\n align-self: center;\n color: ${COLORS.TEXT_LOW_CONTRAST};\n font-weight: ${FONT_WEIGHTS.SEMI_BOLD};\n }\n`\n\nexport const PLAY_BUTTON_STYLES = css`\n .embla__play {\n ${CAROUSEL_BUTTON_BASE_STYLES};\n ${CAROUSEL_BORDER_SHADOW_STYLES};\n ${CAROUSEL_SLIDE_RADIUS_STYLES};\n display: flex;\n align-items: center;\n justify-content: center;\n justify-self: flex-end;\n color: ${COLORS.TEXT_BODY};\n font-weight: ${FONT_WEIGHTS.BOLD};\n font-size: ${FONT_SIZES.COMPLEMENTARY};\n padding: 0 ${SPACINGS.FOUR};\n min-width: ${SPACINGS.FOURTEEN};\n }\n`\n\nexport const THUMBS_STYLES = css`\n .embla-thumbs {\n --thumbs-slide-spacing: ${CAROUSEL_THUMB_SLIDES_SPACING};\n --thumbs-slide-height: ${CAROUSEL_THUMB_SLIDES_HEIGHT};\n margin-top: var(--thumbs-slide-spacing);\n }\n\n .embla-thumbs__viewport {\n overflow: hidden;\n }\n\n .embla-thumbs__container {\n display: flex;\n flex-direction: row;\n margin-left: calc(var(--thumbs-slide-spacing) * -1);\n }\n\n .embla-thumbs__slide {\n flex: 0 0 22%;\n min-__replace-axis-size__: 0;\n padding-left: var(--thumbs-slide-spacing);\n }\n\n ${MEDIA.MIN_XS} {\n .embla-thumbs__slide {\n flex: 0 0 15%;\n }\n }\n\n .embla-thumbs__slide__number {\n ${CAROUSEL_SLIDE_RADIUS_STYLES};\n ${CAROUSEL_BUTTON_BASE_STYLES};\n ${CAROUSEL_BORDER_SHADOW_STYLES};\n font-size: ${FONT_SIZES.H4};\n font-weight: ${FONT_WEIGHTS.SEMI_BOLD};\n color: ${COLORS.DETAIL_HIGH_CONTRAST};\n display: flex;\n align-items: center;\n justify-content: center;\n height: var(--thumbs-slide-height);\n width: 100%;\n }\n\n .embla-thumbs__slide--selected .embla-thumbs__slide__number {\n color: ${COLORS.TEXT_BODY};\n }\n`\n\nexport const PROGRESS_STYLES = css`\n .embla__progress {\n ${CAROUSEL_SLIDE_RADIUS_STYLES};\n ${CAROUSEL_BORDER_SHADOW_STYLES};\n background-color: ${COLORS.BACKGROUND_SITE};\n position: relative;\n height: 0.6rem;\n justify-self: flex-end;\n align-self: center;\n width: 13rem;\n max-width: 90%;\n overflow: hidden;\n }\n\n .embla__progress__bar {\n background-color: ${COLORS.TEXT_BODY};\n position: absolute;\n width: 100%;\n top: 0;\n bottom: 0;\n left: -100%;\n }\n`\n\nexport const PARALLAX_STYLES = css`\n .embla__parallax {\n ${CAROUSEL_SLIDE_RADIUS_STYLES};\n height: 100%;\n overflow: hidden;\n }\n\n .embla__parallax__layer {\n position: relative;\n height: 100%;\n width: 100%;\n display: flex;\n justify-content: center;\n }\n\n .embla__parallax__img {\n max-width: none;\n flex: 0 0 calc(115% + (var(--slide-spacing) * 2));\n object-fit: cover;\n }\n`\n\nconst SCALE_STYLES = css`\n .embla__slide__number {\n backface-visibility: hidden;\n }\n`\n\nconst LAZY_LOAD_STYLES = css`\n .embla__lazy-load {\n position: relative;\n height: 100%;\n }\n\n .embla__lazy-load__spinner {\n border: ${BORDER_SIZES.ACCENT_VERTICAL} solid\n rgba(${COLORS.TEXT_HIGH_CONTRAST_RGB_VALUE}, 0.2);\n border-left: ${BORDER_SIZES.ACCENT_VERTICAL} solid\n ${COLORS.TEXT_HIGH_CONTRAST};\n font-size: 1rem;\n display: inline-flex;\n position: absolute;\n top: 0;\n left: 0;\n bottom: 0;\n right: 0;\n margin: auto;\n text-indent: -9999em;\n animation: loading 1.1s infinite linear;\n border-radius: ${BORDER_RADIUSES.CIRCLE};\n ${createSquareSizeStyles('5rem')}\n }\n\n .embla__lazy-load__spinner:after {\n border-radius: inherit;\n ${createSquareSizeStyles('5rem')}\n }\n\n .embla__lazy-load__img {\n opacity: 0;\n transition: opacity 0.2s ease-in-out;\n }\n\n .embla__lazy-load--has-loaded .embla__lazy-load__img {\n opacity: 1;\n }\n\n @keyframes loading {\n 0% {\n transform: rotate(0deg);\n }\n 100% {\n transform: rotate(360deg);\n }\n }\n`\n\nexport const AUTO_HEIGHT_STYLES = css`\n .embla__container {\n align-items: flex-start;\n }\n\n .embla__slide:nth-child(1) > .embla__slide__number {\n height: ${CAROUSEL_DEFAULT_HEIGHT};\n }\n .embla__slide:nth-child(2) > .embla__slide__number {\n height: calc(${CAROUSEL_DEFAULT_HEIGHT} + 4rem);\n }\n .embla__slide:nth-child(3) > .embla__slide__number {\n height: calc(${CAROUSEL_DEFAULT_HEIGHT} - 2rem);\n }\n .embla__slide:nth-child(4) > .embla__slide__number {\n height: calc(${CAROUSEL_DEFAULT_HEIGHT} + 2rem);\n }\n .embla__slide:nth-child(5) > .embla__slide__number {\n height: ${CAROUSEL_DEFAULT_HEIGHT};\n }\n`\n\nconst CLASS_NAMES_STYLES = css`\n .embla__slide {\n transition: opacity 0.2s ease-in-out;\n }\n\n .embla__slide:not(.is-snapped) {\n opacity: 0.16;\n }\n`\n\nconst FADE_STYLES = css`\n .embla__slide__img {\n user-select: none;\n }\n`\n\nexport const INFINITE_SCROLL_STYLES = css`\n .embla-infinite-scroll {\n position: relative;\n flex: 0 0 15rem;\n min-__replace-axis-size__: 0;\n height: var(--slide-height);\n display: flex;\n align-items: center;\n justify-content: center;\n }\n\n .embla-infinite-scroll__spinner {\n display: none;\n border: ${BORDER_SIZES.ACCENT_VERTICAL} solid\n rgba(${COLORS.TEXT_HIGH_CONTRAST_RGB_VALUE}, 0.2);\n border-left: ${BORDER_SIZES.ACCENT_VERTICAL} solid\n ${COLORS.TEXT_HIGH_CONTRAST};\n font-size: 1rem;\n position: absolute;\n top: 0;\n left: 0;\n bottom: 0;\n right: 0;\n margin: auto;\n text-indent: -9999em;\n animation: loading 1.1s infinite linear;\n border-radius: ${BORDER_RADIUSES.CIRCLE};\n ${createSquareSizeStyles('5rem')}\n }\n\n .embla-infinite-scroll__spinner:after {\n border-radius: inherit;\n ${createSquareSizeStyles('5rem')}\n }\n\n .embla-infinite-scroll--loading-more > .embla-infinite-scroll__spinner {\n display: inline-flex;\n }\n\n @keyframes loading {\n 0% {\n transform: rotate(0deg);\n }\n 100% {\n transform: rotate(360deg);\n }\n }\n`\n\nexport const IOS_PICKER_STYLES = css`\n .embla {\n position: relative;\n display: flex;\n width: 100%;\n height: ${CAROUSEL_IOS_PICKER_HEIGHT};\n max-width: 30rem;\n margin-left: auto;\n margin-right: auto;\n }\n\n .embla:before,\n .embla:after {\n position: absolute;\n left: 0;\n right: 0;\n content: '';\n display: block;\n height: calc(50% - 32px / 2);\n z-index: ${LAYERS.STEP};\n pointer-events: none;\n }\n\n .embla:before {\n top: -0.5px;\n border-bottom: 0.5px solid rgba(${COLORS.TEXT_HIGH_CONTRAST_RGB_VALUE}, 0.3);\n background: linear-gradient(\n to top,\n rgba(${COLORS.BACKGROUND_SITE_RGB_VALUE}, 0.65) 0%,\n rgba(${COLORS.BACKGROUND_SITE_RGB_VALUE}, 1) 100%\n );\n }\n\n .embla:after {\n bottom: -0.5px;\n border-top: 0.5px solid rgba(${COLORS.TEXT_HIGH_CONTRAST_RGB_VALUE}, 0.3);\n background: linear-gradient(\n to bottom,\n rgba(${COLORS.BACKGROUND_SITE_RGB_VALUE}, 0.65) 0%,\n rgba(${COLORS.BACKGROUND_SITE_RGB_VALUE}, 1) 100%\n );\n }\n\n .embla__ios-picker {\n height: 100%;\n display: flex;\n align-items: center;\n min-width: 50%;\n justify-content: center;\n line-height: 1;\n font-size: 1.8rem;\n }\n\n .embla__ios-picker__scene {\n min-width: 100%;\n height: 100%;\n overflow: hidden;\n display: flex;\n align-items: center;\n touch-action: pan-x;\n }\n\n .embla__ios-picker__viewport {\n height: 32px;\n width: 100%;\n perspective: 1000px;\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n -webkit-touch-callout: none;\n -khtml-user-select: none;\n -webkit-tap-highlight-color: transparent;\n }\n\n .embla__ios-picker__viewport--perspective-left {\n perspective-origin: calc(50% + 130px) 50%;\n transform: translateX(27px);\n }\n\n .embla__ios-picker__viewport--perspective-right {\n perspective-origin: calc(50% - 130px) 50%;\n transform: translateX(-27px);\n }\n\n .embla__ios-picker__container {\n height: 100%;\n width: 100%;\n transform-style: preserve-3d;\n will-change: transform;\n }\n\n .embla__ios-picker__slide {\n width: 100%;\n height: 100%;\n font-size: 19px;\n text-align: center;\n display: flex;\n align-items: center;\n justify-content: center;\n backface-visibility: hidden;\n opacity: 0;\n }\n\n .embla__ios-picker__label {\n font-weight: ${FONT_WEIGHTS.BOLD};\n transform: translateX(-55px);\n pointer-events: none;\n }\n`\n\nexport const examplesCarouselDefaultStyles = (\n slideSize: string = '100%',\n spacingSize: string = CAROUSEL_SLIDES_SPACING,\n axis: EmblaOptionsType['axis'] = 'x',\n customStyles: string = '',\n baseStyles: string = styledComponentsStylesToString(BASE_STYLES)\n): string => {\n const horizontal = axis === 'x'\n const flexDirection = horizontal ? '' : 'flex-direction: column;'\n const spacingDirection = horizontal ? 'left' : 'top'\n const panDirection = `pan-${horizontal ? 'y' : 'x'} pinch-zoom`\n const sizeDimention = horizontal ? 'width' : 'height'\n const slideHeight = horizontal ? 'var(--slide-height)' : '100%'\n const containerHeight = horizontal\n ? ''\n : 'height: calc(var(--slide-spacing) + var(--slide-height));'\n\n const mergedStyles = baseStyles + customStyles\n\n return mergedStyles\n .replace(/__replace_axis_flex__/gi, flexDirection)\n .replace(/__replace-axis-size__/gi, sizeDimention)\n .replace(/__replace-axis-touch_action__/gi, panDirection)\n .replace(/__replace_axis_spacing__/gi, spacingDirection)\n .replace(/__replace_axis_spacing_amount__/gi, spacingSize)\n .replace(/__replace_axis_height__/gi, containerHeight)\n .replace(/__replace_slide_height__/gi, slideHeight)\n .replace(/__replace_slide_size__/gi, slideSize)\n}\n\nexport const examplesCarouselDragFreeStyles = (\n slideSize?: string,\n spacingSize?: string,\n axis?: EmblaOptionsType['axis']\n): string => {\n return examplesCarouselDefaultStyles(\n slideSize,\n spacingSize,\n axis,\n styledComponentsStylesToString(\n SLIDE_NUMBER_STYLES,\n CONTROLS_STYLES,\n ARROWS_STYLES,\n SNAP_DISPLAY_STYLES\n )\n )\n}\n\nexport const examplesCarouselVariableWidthStyles = (\n slideSize?: string,\n spacingSize?: string,\n axis?: EmblaOptionsType['axis']\n): string => {\n return examplesCarouselDefaultStyles(\n slideSize,\n spacingSize,\n axis,\n styledComponentsStylesToString(\n VARIABLE_WIDTH_STYLES,\n SLIDE_NUMBER_STYLES,\n CONTROLS_STYLES,\n ARROWS_STYLES,\n SNAP_DISPLAY_STYLES\n )\n )\n}\n\nexport const examplesCarouselSlidesPerViewStyles = (\n slideSize?: string,\n spacingSize?: string,\n axis?: EmblaOptionsType['axis']\n): string => {\n return examplesCarouselDefaultStyles(\n slideSize,\n spacingSize,\n axis,\n styledComponentsStylesToString(\n SLIDE_NUMBER_STYLES,\n CONTROLS_STYLES,\n ARROWS_STYLES,\n DOTS_STYLES\n ),\n styledComponentsStylesToString(SLIDES_PER_VIEW_STYLES)\n )\n}\n\nexport const examplesCarouselThumbsStyles = (\n slideSize?: string,\n spacingSize?: string,\n axis?: EmblaOptionsType['axis']\n): string => {\n return examplesCarouselDefaultStyles(\n slideSize,\n spacingSize,\n axis,\n styledComponentsStylesToString(SLIDE_NUMBER_STYLES, THUMBS_STYLES)\n )\n}\n\nexport const examplesCarouselProgressStyles = (\n slideSize?: string,\n spacingSize?: string,\n axis?: EmblaOptionsType['axis']\n): string => {\n return examplesCarouselDefaultStyles(\n slideSize,\n spacingSize,\n axis,\n styledComponentsStylesToString(\n SLIDE_NUMBER_STYLES,\n CONTROLS_STYLES,\n ARROWS_STYLES,\n PROGRESS_STYLES\n )\n )\n}\n\nexport const examplesCarouselParallaxStyles = (\n slideSize?: string,\n spacingSize?: string,\n axis?: EmblaOptionsType['axis']\n): string => {\n return examplesCarouselDefaultStyles(\n slideSize,\n spacingSize,\n axis,\n styledComponentsStylesToString(\n IMAGE_STYLES,\n CONTROLS_STYLES,\n ARROWS_STYLES,\n DOTS_STYLES,\n PARALLAX_STYLES\n )\n )\n}\n\nexport const examplesCarouselScaleStyles = (\n slideSize?: string,\n spacingSize?: string,\n axis?: EmblaOptionsType['axis']\n): string => {\n return examplesCarouselDefaultStyles(\n slideSize,\n spacingSize,\n axis,\n styledComponentsStylesToString(\n SLIDE_NUMBER_STYLES,\n CONTROLS_STYLES,\n ARROWS_STYLES,\n DOTS_STYLES,\n SCALE_STYLES\n )\n )\n}\n\nexport const examplesCarouselOpacityStyles = (\n slideSize?: string,\n spacingSize?: string,\n axis?: EmblaOptionsType['axis']\n): string => {\n return examplesCarouselDefaultStyles(\n slideSize,\n spacingSize,\n axis,\n styledComponentsStylesToString(\n IMAGE_STYLES,\n CONTROLS_STYLES,\n ARROWS_STYLES,\n DOTS_STYLES\n )\n )\n}\n\nexport const examplesCarouselAutoplayStyles = (\n slideSize?: string,\n spacingSize?: string,\n axis?: EmblaOptionsType['axis']\n): string => {\n return examplesCarouselDefaultStyles(\n slideSize,\n spacingSize,\n axis,\n styledComponentsStylesToString(\n SLIDE_NUMBER_STYLES,\n CONTROLS_STYLES,\n ARROWS_STYLES,\n PLAY_BUTTON_STYLES\n )\n )\n}\n\nexport const examplesCarouselAutoHeightStyles = (\n slideSize?: string,\n spacingSize?: string,\n axis?: EmblaOptionsType['axis']\n): string => {\n return examplesCarouselDefaultStyles(\n slideSize,\n spacingSize,\n axis,\n styledComponentsStylesToString(\n SLIDE_NUMBER_STYLES,\n CONTROLS_STYLES,\n ARROWS_STYLES,\n DOTS_STYLES,\n AUTO_HEIGHT_STYLES\n )\n )\n}\n\nexport const examplesCarouselClassNamesStyles = (\n slideSize?: string,\n spacingSize?: string,\n axis?: EmblaOptionsType['axis']\n): string => {\n return examplesCarouselDefaultStyles(\n slideSize,\n spacingSize,\n axis,\n styledComponentsStylesToString(\n IMAGE_STYLES,\n CONTROLS_STYLES,\n ARROWS_STYLES,\n DOTS_STYLES,\n CLASS_NAMES_STYLES\n )\n )\n}\n\nexport const examplesCarouselFadeStyles = (\n slideSize?: string,\n spacingSize?: string,\n axis?: EmblaOptionsType['axis']\n): string => {\n return examplesCarouselDefaultStyles(\n slideSize,\n spacingSize,\n axis,\n styledComponentsStylesToString(\n IMAGE_STYLES,\n CONTROLS_STYLES,\n ARROWS_STYLES,\n DOTS_STYLES,\n FADE_STYLES\n )\n )\n}\n\nexport const examplesCarouselLazyLoadStyles = (\n slideSize?: string,\n spacingSize?: string,\n axis?: EmblaOptionsType['axis']\n): string => {\n return examplesCarouselDefaultStyles(\n slideSize,\n spacingSize,\n axis,\n styledComponentsStylesToString(\n IMAGE_STYLES,\n CONTROLS_STYLES,\n ARROWS_STYLES,\n DOTS_STYLES,\n LAZY_LOAD_STYLES\n )\n )\n}\n\nexport const examplesCarouselInfiniteScrollStyles = (\n slideSize?: string,\n spacingSize?: string,\n axis?: EmblaOptionsType['axis']\n): string => {\n return examplesCarouselDefaultStyles(\n slideSize,\n spacingSize,\n axis,\n styledComponentsStylesToString(\n SLIDE_NUMBER_STYLES,\n CONTROLS_STYLES,\n ARROWS_STYLES,\n SNAP_DISPLAY_STYLES,\n INFINITE_SCROLL_STYLES\n )\n )\n}\n\nexport const examplesCarouselIosPickerStyles = (): string => {\n return styledComponentsStylesToString(IOS_PICKER_STYLES)\n}\n","import { createRadioOrCheckboxDefault } from './createRadioOrCheckboxDefault'\nimport { createRadioOrCheckboxCard } from './createRadioOrCheckboxCard'\n\nexport const InputRadioDefault = createRadioOrCheckboxDefault('radio')\n\nexport const InputRadioCard = createRadioOrCheckboxCard('radio')\n","import React from 'react'\nimport styled from 'styled-components'\nimport { CARD_STYLES } from 'consts/card'\nimport { useKeyNavigating } from 'hooks/useKeyNavigating'\nimport { createSquareSizeStyles } from 'utils/createSquareSizeStyles'\nimport { kebabCaseToPascalCase } from 'utils/stringCasing'\nimport { PropType } from './createRadioOrCheckboxDefault'\nimport { BRAND_GRADIENT_BACKGROUND_STYLES } from 'consts/gradients'\nimport { BORDER_RADIUSES, BORDER_SIZES } from 'consts/border'\nimport { TAP_HIGHLIGHT_STYLES } from 'consts/tapHighlight'\nimport { LAYERS } from 'consts/layers'\nimport { COLORS } from 'consts/themes'\nimport { KEY_NAVIGATING_STYLES } from 'consts/keyNavigatingStyles'\n\nconst RadioOrCheckboxCardWrapper = styled.label`\n ${TAP_HIGHLIGHT_STYLES};\n ${CARD_STYLES};\n display: flex;\n align-items: center;\n justify-content: center;\n position: relative;\n height: 100%;\n`\n\nconst LabelContent = styled.span`\n z-index: ${LAYERS.STEP};\n position: relative;\n display: block;\n width: 100%;\n cursor: pointer;\n`\n\nconst Highlight = styled.span`\n ${BRAND_GRADIENT_BACKGROUND_STYLES};\n top: -${BORDER_SIZES.DETAIL};\n left: -${BORDER_SIZES.DETAIL};\n bottom: -${BORDER_SIZES.DETAIL};\n right: -${BORDER_SIZES.DETAIL};\n display: block;\n position: absolute;\n border-radius: inherit;\n pointer-events: none;\n visibility: hidden;\n\n &:after {\n background-color: ${COLORS.BACKGROUND_CODE};\n border-radius: inherit;\n position: absolute;\n top: ${BORDER_SIZES.OUTLINE};\n left: ${BORDER_SIZES.OUTLINE};\n bottom: ${BORDER_SIZES.OUTLINE};\n right: ${BORDER_SIZES.OUTLINE};\n content: '';\n }\n`\n\nconst Input = styled.input<{ $isKeyNavigating: boolean }>`\n ${TAP_HIGHLIGHT_STYLES};\n ${KEY_NAVIGATING_STYLES};\n position: absolute;\n border-radius: ${BORDER_RADIUSES.CARD};\n top: 0;\n left: 0;\n ${createSquareSizeStyles('100%')};\n appearance: none;\n -webkit-appearance: none;\n border: 0;\n background-color: transparent;\n pointer-events: none;\n\n &:after {\n display: block;\n content: '';\n position: absolute;\n top: 0;\n left: 0;\n ${createSquareSizeStyles('100%')};\n }\n\n &:checked + ${Highlight} {\n visibility: visible;\n }\n\n &[disabled] + ${Highlight} + ${LabelContent} {\n cursor: not-allowed;\n }\n\n &[disabled]:checked + ${Highlight} {\n background-image: none;\n background-color: ${COLORS.DETAIL_HIGH_CONTRAST};\n }\n`\n\nexport const createRadioOrCheckboxCard = (\n type: 'radio' | 'checkbox'\n): ((props: PropType) => JSX.Element) => {\n const displayName = kebabCaseToPascalCase(`input-${type}-card`)\n\n const InputSelectionComponent = (props: PropType) => {\n const { children, ...restProps } = props\n const { isKeyNavigating } = useKeyNavigating()\n\n return (\n \n \n \n {children}\n \n )\n }\n\n InputSelectionComponent.displayName = displayName\n return InputSelectionComponent\n}\n","import React, { PropsWithRef } from 'react'\nimport styled, { css } from 'styled-components'\nimport { COLORS } from 'consts/themes'\nimport { SPACINGS } from 'consts/spacings'\nimport { useKeyNavigating } from 'hooks/useKeyNavigating'\nimport { createSquareSizeStyles } from 'utils/createSquareSizeStyles'\nimport { BORDER_RADIUSES } from 'consts/border'\nimport { BRAND_GRADIENT_BACKGROUND_STYLES } from 'consts/gradients'\nimport { kebabCaseToPascalCase } from 'utils/stringCasing'\nimport { TAP_HIGHLIGHT_STYLES } from 'consts/tapHighlight'\nimport { KEY_NAVIGATING_STYLES } from 'consts/keyNavigatingStyles'\n\nconst INPUT_SIZE = '2.5rem'\nconst CHECK_SIZE = '1.2rem'\n\nconst RadioOrCheckboxDefaultWrapper = styled.span`\n display: flex;\n align-items: flex-start;\n flex-wrap: wrap;\n`\n\nconst InputWrapper = styled.span`\n flex: 0 0 ${INPUT_SIZE};\n position: relative;\n min-width: 0;\n`\n\nconst InputLineHeight = styled.span`\n color: ${COLORS.BACKGROUND_SITE};\n width: ${INPUT_SIZE};\n display: inline-block;\n line-height: inherit;\n`\n\nconst Input = styled.input<{ $isKeyNavigating: boolean }>`\n ${createSquareSizeStyles(INPUT_SIZE)};\n ${TAP_HIGHLIGHT_STYLES};\n ${KEY_NAVIGATING_STYLES};\n appearance: none;\n -webkit-appearance: none;\n position: absolute;\n top: 50%;\n left: 0;\n top: 50%;\n transform: translateY(-50%);\n background-color: ${COLORS.DETAIL_MEDIUM_CONTRAST};\n cursor: pointer;\n\n &:before,\n &:after {\n display: block;\n content: '';\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n }\n\n &:before {\n ${createSquareSizeStyles('2rem')};\n background-color: ${COLORS.BACKGROUND_CODE};\n }\n\n &:after {\n ${createSquareSizeStyles(CHECK_SIZE)};\n }\n\n &:checked {\n &:after {\n ${BRAND_GRADIENT_BACKGROUND_STYLES};\n }\n }\n\n &[disabled] {\n cursor: not-allowed;\n }\n\n &[disabled]:checked {\n &:after {\n background-image: none;\n background-color: ${COLORS.DETAIL_HIGH_CONTRAST};\n }\n }\n`\n\nconst InputRadio = styled(Input)`\n border-radius: ${BORDER_RADIUSES.CIRCLE};\n\n &:before {\n border-radius: ${BORDER_RADIUSES.CIRCLE};\n }\n &:after {\n border-radius: ${BORDER_RADIUSES.CIRCLE};\n }\n`\n\nconst InputCheckbox = styled(Input)`\n border-radius: ${BORDER_RADIUSES.LINE};\n\n &:before {\n border-radius: ${BORDER_RADIUSES.LINE};\n }\n\n &:after {\n border-radius: 0;\n }\n`\n\nconst Label = styled.label<{ $disabled?: boolean }>`\n ${TAP_HIGHLIGHT_STYLES};\n padding-left: ${SPACINGS.TWO};\n min-width: 0;\n flex: 0 0 calc(100% - ${INPUT_SIZE});\n\n ${({ $disabled }) =>\n $disabled &&\n css`\n color: ${COLORS.TEXT_LOW_CONTRAST};\n `};\n`\n\nexport type PropType = PropsWithRef<\n React.DetailedHTMLProps<\n React.InputHTMLAttributes,\n HTMLInputElement\n >\n>\n\nexport const createRadioOrCheckboxDefault = (\n type: 'radio' | 'checkbox'\n): ((props: PropType) => JSX.Element) => {\n const InputComponent = type === 'radio' ? InputRadio : InputCheckbox\n const displayName = kebabCaseToPascalCase(`input-${type}-default`)\n\n const InputSelectionComponent = (props: PropType) => {\n const { children, ...restProps } = props\n const { isKeyNavigating } = useKeyNavigating()\n\n return (\n \n \n -\n \n \n \n \n )\n }\n\n InputSelectionComponent.displayName = displayName\n return InputSelectionComponent\n}\n","import React, { Fragment } from 'react'\nimport styled, { css } from 'styled-components'\nimport { LinkBare } from 'components/Link/LinkBare'\nimport { useRouteBreadcrumbs } from 'hooks/useRouteBreadcrumbs'\nimport { Icon } from 'components/Icon/Icon'\nimport { COLORS } from 'consts/themes'\nimport { FONT_SIZES } from 'consts/fontSizes'\nimport { SPACINGS } from 'consts/spacings'\n\nconst PageBreadcrumbsWrapper = styled.nav`\n display: flex;\n align-items: center;\n font-size: ${FONT_SIZES.COMPLEMENTARY};\n margin-bottom: ${SPACINGS.THREE};\n`\n\nconst itemStyles = css`\n color: ${COLORS.TEXT_LOW_CONTRAST};\n padding: ${SPACINGS.ONE} 0;\n`\n\nconst Link = styled(LinkBare)`\n ${itemStyles};\n`\n\nconst ActiveTitle = styled.span`\n ${itemStyles};\n`\n\nconst Separator = styled(Icon)`\n color: ${COLORS.TEXT_LOW_CONTRAST};\n margin: 0 ${SPACINGS.ONE};\n`\n\ntype PropType = { id: string }\n\nexport const PageBreadcrumbs = (props: PropType) => {\n const { id } = props\n const breadcrumbs = useRouteBreadcrumbs(id)\n\n if (breadcrumbs.length === 0) return null\n\n return (\n \n {breadcrumbs.map(({ id, slug, title }, index) =>\n index !== breadcrumbs.length - 1 ? (\n \n {title}\n \n \n ) : (\n {title}\n )\n )}\n \n )\n}\n","import { RouteType } from 'components/Routes/RoutesContext'\nimport { isRoutePartiallyActive } from 'utils/routes'\nimport { useRoutes } from './useRoutes'\n\nexport const useRouteBreadcrumbs = (id: string): RouteType[] => {\n const { flat: routes } = useRoutes()\n const currentRoute = routes.find((route) => route.id === id)\n\n return routes\n .filter((route) =>\n isRoutePartiallyActive(route.slug, currentRoute?.slug || '')\n )\n .sort((a, b) => a.level - b.level)\n}\n","import React from 'react'\nimport styled from 'styled-components'\nimport { LinkBare } from 'components/Link/LinkBare'\nimport { COLORS } from 'consts/themes'\nimport { FONT_SIZES } from 'consts/fontSizes'\nimport { SPACINGS } from 'consts/spacings'\nimport { URLS } from 'consts/urls'\nimport { IconWithText } from 'components/Icon/IconWithText'\n\nconst PageEditThisPageWrapper = styled(LinkBare)`\n display: inline-flex;\n align-items: center;\n text-decoration: none;\n font-size: ${FONT_SIZES.COMPLEMENTARY};\n padding-top: ${SPACINGS.ONE};\n padding-bottom: ${SPACINGS.ONE};\n margin-top: ${SPACINGS.EIGHT};\n color: ${COLORS.TEXT_LOW_CONTRAST};\n`\n\ntype PropType = {\n pageUrl: string\n}\n\nexport const PageEditThisPage = (props: PropType) => {\n const { pageUrl } = props\n const url = `${URLS.GITHUB_DOCUMENTATION}/${pageUrl}`\n\n return (\n \n \n Edit this page on GitHub\n \n \n )\n}\n","import React from 'react'\nimport styled from 'styled-components'\nimport { PropType as PageDefaultType } from 'templates/Default'\nimport { LinkBare } from 'components/Link/LinkBare'\nimport { BRAND_GRADIENT_TEXT_STYLES } from 'consts/gradients'\nimport { COLORS } from 'consts/themes'\nimport { SPACINGS } from 'consts/spacings'\nimport { FONT_WEIGHTS } from 'consts/fontSizes'\nimport { IconWithText, IconWithTextText } from 'components/Icon/IconWithText'\nimport { createGapStyles } from 'utils/createGapStyles'\n\nconst ITEM_SPACING = SPACINGS.FOUR\n\nconst PagePaginationWrapper = styled.nav`\n ${createGapStyles(ITEM_SPACING, '', 'div')};\n display: flex;\n justify-content: space-between;\n margin-top: ${SPACINGS.EIGHT};\n`\n\nconst Item = styled.div`\n > a {\n color: ${COLORS.BRAND_PRIMARY};\n }\n\n &:nth-child(2) > a {\n text-align: right;\n color: ${COLORS.BRAND_SECONDARY};\n }\n`\n\nconst ItemLabel = styled.div`\n color: ${COLORS.TEXT_LOW_CONTRAST};\n padding-bottom: ${SPACINGS.ONE};\n`\n\nconst ItemTitle = styled.div`\n display: inline-flex;\n align-items: center;\n font-weight: ${FONT_WEIGHTS.MEDIUM};\n\n ${IconWithTextText} {\n ${BRAND_GRADIENT_TEXT_STYLES};\n }\n`\n\ntype PropType = {\n next: PageDefaultType['pageContext']['next']\n previous: PageDefaultType['pageContext']['previous']\n}\n\nexport const PagePagination = (props: PropType) => {\n const { next, previous } = props\n\n return (\n \n \n {previous && (\n \n Previous\n \n {previous.title}\n \n \n )}\n \n \n {next && (\n \n Next\n \n \n {next.title}\n \n \n \n )}\n \n \n )\n}\n","import { THEME_PREFIX } from 'consts/themes'\nimport { getThemeFromDocument } from 'utils/getThemeFromDocument'\nimport { kebabCaseToPascalCase } from 'utils/stringCasing'\nimport { SANDBOX_REGEX_THEME, SANDBOX_REGEX_TITLE } from 'consts/sandbox'\n\nexport const createSandboxReactIndexHtml = async (\n id: string\n): Promise => {\n const indexHTML = await import(\n '!!raw-loader!components/Sandbox/React/SandboxFilesDist/index.html'\n )\n const theme = THEME_PREFIX + getThemeFromDocument()\n const title = kebabCaseToPascalCase(id, ' ')\n return indexHTML.default\n .replace(SANDBOX_REGEX_THEME, theme)\n .replace(SANDBOX_REGEX_TITLE, title)\n}\n","import { EmblaOptionsType } from 'embla-carousel'\nimport { SandboxModuleType, SandboxReactExtensionType } from 'consts/sandbox'\nimport { sandboxInjectIosPickerLoop, sandboxInjectOptions } from 'utils/sandbox'\nimport {\n SANDBOX_REGEX_IOS_PICKER_LOOP,\n SANDBOX_REGEX_OPTIONS\n} from 'consts/sandbox'\n\nconst CAROUSEL_IMPORT_REGEX = /import\\sEmblaCarousel\\sfrom\\s'(.*)'/\nconst SLIDE_COUNT_REGEX = /const\\sSLIDE_COUNT\\s=\\s\\d{1,}/\nconst CAROUSEL_IMPORT_REPLACE = 'import EmblaCarousel from \"./EmblaCarousel\"'\n\nexport const createSandboxReactDefaultEntry = async (\n reactScriptExtension: SandboxReactExtensionType,\n slides: number[],\n options: EmblaOptionsType\n): Promise => {\n const slideCount = slides.length.toString()\n const entry: SandboxModuleType = await import(\n `!!raw-loader!components/Sandbox/React/SandboxFilesDist/CarouselDefaultEntry.${reactScriptExtension}`\n )\n return entry.default\n .replace(CAROUSEL_IMPORT_REGEX, CAROUSEL_IMPORT_REPLACE)\n .replace(SANDBOX_REGEX_OPTIONS, sandboxInjectOptions(options))\n .replace(SLIDE_COUNT_REGEX, (match) => match.replace(/\\d{1,}/, slideCount))\n}\n\nexport const createSandboxReactIosPickerEntry = async (\n reactScriptExtension: SandboxReactExtensionType,\n loop: boolean\n): Promise => {\n const entry: SandboxModuleType = await import(\n `!!raw-loader!components/Sandbox/React/SandboxFilesDist/CarouselIosPickerEntry.${reactScriptExtension}`\n )\n return entry.default\n .replace(CAROUSEL_IMPORT_REGEX, CAROUSEL_IMPORT_REPLACE)\n .replace(SANDBOX_REGEX_IOS_PICKER_LOOP, sandboxInjectIosPickerLoop(loop))\n}\n\nexport const createSandboxReactEntry = async (\n reactScriptExtension: SandboxReactExtensionType,\n slides: number[],\n options: EmblaOptionsType,\n id: string\n): Promise => {\n if (id === 'embla-carousel-ios-style-picker') {\n return createSandboxReactIosPickerEntry(\n reactScriptExtension,\n !!options.loop\n )\n }\n return createSandboxReactDefaultEntry(reactScriptExtension, slides, options)\n}\n","const IMAGES_IMPORT_REGEX = /import\\s{\\ssandboxImages\\s}\\sfrom\\s'(.*)/\nconst IMAGES_FUNCTION_REGEX = /sandboxImages\\(index\\)/\n\nexport const createSandboxReactImagePaths = (\n carouselScript: string\n): string => {\n return carouselScript\n .replace(IMAGES_IMPORT_REGEX, '')\n .replace(\n IMAGES_FUNCTION_REGEX,\n '`https://picsum.photos/600/350?v=${index}`'\n )\n}\n","import { kebabCaseToPascalCase } from 'utils/stringCasing'\nimport { SandboxModuleType, SandboxReactExtensionType } from 'consts/sandbox'\nimport { SANDBOX_REGEX_TITLE } from 'consts/sandbox'\n\nexport const createSandboxReactHeader = async (\n reactScriptExtension: SandboxReactExtensionType,\n id: string\n): Promise => {\n const header: SandboxModuleType = await import(\n `!!raw-loader!components/Sandbox/React/SandboxFilesDist/Header.${reactScriptExtension}`\n )\n const formattedTitle = kebabCaseToPascalCase(id, ' ')\n return header.default.replace(SANDBOX_REGEX_TITLE, formattedTitle)\n}\n","import { URLS } from 'consts/urls'\nimport { SandboxModuleType, SandboxReactExtensionType } from 'consts/sandbox'\nimport { SANDBOX_REGEX_REPOSITORY_URL } from 'consts/sandbox'\n\nexport const createSandboxReactFooter = async (\n reactScriptExtension: SandboxReactExtensionType\n): Promise => {\n const footer: SandboxModuleType = await import(\n `!!raw-loader!components/Sandbox/React/SandboxFilesDist/Footer.${reactScriptExtension}`\n )\n return footer.default.replace(SANDBOX_REGEX_REPOSITORY_URL, URLS.GITHUB_ROOT)\n}\n","import { getParameters } from 'codesandbox/lib/api/define'\nimport { SANDBOX_BASE_CSS, SANDBOX_CSS } from 'components/Sandbox/sandboxStyles'\nimport { SANDBOX_REACT_FOLDERS } from './sandboxReactFolders'\nimport { loadPrettier } from 'utils/loadPrettier'\nimport { createSandboxReactPackageJson } from './createSandboxReactPackageJson'\nimport { createSandboxReactIndexHtml } from './createSandboxReactIndexHtml'\nimport { createSandboxReactEntry } from './createSandboxReactEntry'\nimport { createSandboxReactImagePaths } from './createSandboxReactImagePaths'\nimport { createSandboxReactHeader } from './createSandboxReactHeader'\nimport { createSandboxReactFooter } from './createSandboxReactFooter'\nimport { createSandboxReactTsConfig } from './createSandboxReactTsConfig'\nimport { sandboxLanguageUtils } from 'utils/sandbox'\nimport {\n SandboxConfigType,\n SandboxReactCreateType,\n SANDBOX_LANGUAGES\n} from 'consts/sandbox'\n\nexport const createSandboxReact = async (\n config: SandboxReactCreateType\n): Promise => {\n const {\n id,\n carouselScript,\n slides,\n options,\n styles,\n plugins,\n sandboxOverrides,\n language = SANDBOX_LANGUAGES.JAVASCRIPT\n } = config\n const title = `${id}-react`\n const { prettierConfig, formatCss } = await loadPrettier()\n const { isTypeScript, reactScriptExtension, formatScript } =\n await sandboxLanguageUtils(language)\n const packageJson = await createSandboxReactPackageJson(\n language,\n title,\n plugins\n )\n const tsConfig = createSandboxReactTsConfig()\n const carouselScriptWithImages = createSandboxReactImagePaths(carouselScript)\n const [entryHtml, entryScript, headerScript, footerScript] =\n await Promise.all([\n createSandboxReactIndexHtml(title),\n createSandboxReactEntry(reactScriptExtension, slides, options, id),\n createSandboxReactHeader(reactScriptExtension, title),\n createSandboxReactFooter(reactScriptExtension)\n ])\n\n const sandboxConfig: SandboxConfigType['files'] = {\n [`.prettierrc`]: {\n isBinary: false,\n content: JSON.stringify(prettierConfig, null, '\\t')\n },\n [`package.json`]: {\n isBinary: false,\n content: JSON.stringify(packageJson, null, '\\t')\n },\n [`${SANDBOX_REACT_FOLDERS.PUBLIC}/index.html`]: {\n isBinary: false,\n content: entryHtml\n },\n [`${SANDBOX_REACT_FOLDERS.CSS}/base.css`]: {\n isBinary: false,\n content: formatCss(SANDBOX_BASE_CSS)\n },\n [`${SANDBOX_REACT_FOLDERS.CSS}/sandbox.css`]: {\n isBinary: false,\n content: formatCss(SANDBOX_CSS)\n },\n [`${SANDBOX_REACT_FOLDERS.CSS}/embla.css`]: {\n isBinary: false,\n content: formatCss(styles)\n },\n [`${SANDBOX_REACT_FOLDERS.JS}/index.${reactScriptExtension}`]: {\n isBinary: false,\n content: formatScript(entryScript)\n },\n [`${SANDBOX_REACT_FOLDERS.JS}/Header.${reactScriptExtension}`]: {\n isBinary: false,\n content: formatScript(headerScript)\n },\n [`${SANDBOX_REACT_FOLDERS.JS}/Footer.${reactScriptExtension}`]: {\n isBinary: false,\n content: formatScript(footerScript)\n },\n [`${SANDBOX_REACT_FOLDERS.JS}/EmblaCarousel.${reactScriptExtension}`]: {\n isBinary: false,\n content: formatScript(carouselScriptWithImages)\n }\n }\n\n if (isTypeScript) {\n Object.assign(sandboxConfig, {\n [`tsconfig.json`]: {\n isBinary: false,\n content: JSON.stringify(tsConfig, null, '\\t')\n }\n })\n }\n\n return getParameters({\n files: Object.assign({}, sandboxConfig, sandboxOverrides)\n })\n}\n","import docsPackageJson from 'embla-carousel-docs/package.json'\nimport { SANDBOX_REACT_FOLDERS } from './sandboxReactFolders'\nimport { kebabCaseToPascalCase } from 'utils/stringCasing'\nimport { sandboxLanguageUtils } from 'utils/sandbox'\nimport {\n SandboxLanguageType,\n SandboxPluginsType,\n PackageJsonType\n} from 'consts/sandbox'\n\nexport const createSandboxReactPackageJson = async (\n language: SandboxLanguageType,\n id: string,\n plugins?: SandboxPluginsType\n): Promise => {\n const { dependencies, devDependencies } = docsPackageJson\n const { isJavaScript, reactScriptExtension } = await sandboxLanguageUtils(\n language\n )\n\n return {\n name: id,\n version: '1.0.0',\n description: `${kebabCaseToPascalCase(id, ' ')} Example`,\n main: `${SANDBOX_REACT_FOLDERS.JS}/index.${reactScriptExtension}`,\n scripts: {\n start: 'react-scripts start',\n build: 'react-scripts build',\n test: 'react-scripts test --env=jsdom',\n eject: 'react-scripts eject'\n },\n dependencies: {\n react: dependencies.react,\n 'react-dom': dependencies['react-dom'],\n 'react-scripts': '4.0.0',\n 'embla-carousel-react': dependencies['embla-carousel-react'],\n 'embla-carousel': dependencies['embla-carousel'],\n ...(plugins && plugins)\n },\n devDependencies: isJavaScript\n ? { '@babel/runtime': '7.13.8' }\n : {\n '@types/react': devDependencies['@types/react'],\n '@types/react-dom': devDependencies['@types/react-dom'],\n typescript: devDependencies.typescript\n },\n browserslist: ['>0.2%', 'not dead', 'not ie <= 11', 'not op_mini all']\n }\n}\n","import { TsConfigType } from 'consts/sandbox'\n\nexport const createSandboxReactTsConfig = (): TsConfigType => {\n return {\n include: ['./src/**/*'],\n compilerOptions: {\n strict: true,\n esModuleInterop: true,\n lib: ['es6', 'dom'],\n jsx: 'react-jsx'\n }\n }\n}\n","export const SANDBOX_REACT_FOLDERS = {\n PUBLIC: 'public',\n CSS: 'src/css',\n JS: 'src/js'\n}\n","import React from 'react'\nimport styled from 'styled-components'\nimport { Icon } from 'components/Icon/Icon'\nimport { InputRadioCard } from 'components/Input/InputRadio'\nimport { FONT_SIZES, FONT_WEIGHTS } from 'consts/fontSizes'\nimport { SPACINGS } from 'consts/spacings'\nimport { createSquareSizeStyles } from 'utils/createSquareSizeStyles'\nimport { PropType as RadioOrCheckboxPropType } from 'components/Input/createRadioOrCheckboxDefault'\nimport { SandboxLabelKeyType } from 'consts/sandbox'\nimport { IconType } from 'assets/icons'\n\nconst ICONS_BY_LABEL: {\n [key in SandboxLabelKeyType]: Extract<\n IconType,\n 'javascript' | 'typescript' | 'react'\n >\n} = {\n VANILLA_JS: 'javascript',\n VANILLA_TS: 'typescript',\n REACT_JS: 'react',\n REACT_TS: 'react'\n}\n\nconst RadioLabelContent = styled.span`\n display: flex;\n flex-direction: column;\n padding: ${SPACINGS.TWO};\n line-height: 1;\n text-align: center;\n align-items: center;\n font-size: ${FONT_SIZES.DETAIL};\n font-weight: ${FONT_WEIGHTS.MEDIUM};\n`\n\nconst RadioLabelSvg = styled(Icon)`\n ${createSquareSizeStyles('3rem')};\n margin-bottom: ${SPACINGS.TWO};\n`\n\ntype PropType = RadioOrCheckboxPropType & {\n framework: SandboxLabelKeyType\n}\n\nexport const SandboxSelectionInput = (props: PropType) => {\n const { children, framework, ...restProps } = props\n\n return (\n \n \n \n {children}\n \n \n )\n}\n","import { THEME_PREFIX } from 'consts/themes'\nimport { URLS } from 'consts/urls'\nimport { SANDBOX_VANILLA_FOLDERS } from './sandboxVanillaFolders'\nimport { getThemeFromDocument } from 'utils/getThemeFromDocument'\nimport { kebabCaseToPascalCase } from 'utils/stringCasing'\nimport { SandboxVanillaExtensionType } from 'consts/sandbox'\nimport {\n SANDBOX_REGEX_THEME,\n SANDBOX_REGEX_TITLE,\n SANDBOX_REGEX_REPOSITORY_URL\n} from 'consts/sandbox'\n\nconst SANDBOX_SCRIPT_SRC_REGEX = /__replace_sandbox_script_src__/g\nconst SANDBOX_CODE_REGEX = /__replace_sandbox_code__/g\n\nexport const createSandboxVanillaEntry = async (\n id: string,\n languageExtension: SandboxVanillaExtensionType,\n carouselHtml: string\n): Promise => {\n const indexHTML = await import(\n '!!raw-loader!components/Sandbox/Vanilla/SandboxFilesDist/index.html'\n )\n const theme = THEME_PREFIX + getThemeFromDocument()\n const title = kebabCaseToPascalCase(id, ' ')\n const scriptSrc = `${SANDBOX_VANILLA_FOLDERS.JS}/index.${languageExtension}`\n return indexHTML.default\n .replace(SANDBOX_REGEX_THEME, theme)\n .replace(SANDBOX_REGEX_TITLE, title)\n .replace(SANDBOX_SCRIPT_SRC_REGEX, scriptSrc)\n .replace(SANDBOX_REGEX_REPOSITORY_URL, URLS.GITHUB_ROOT)\n .replace(SANDBOX_CODE_REGEX, carouselHtml)\n}\n","const IMG_SRC_WITH_HASH_REGEX = /\\/static\\/slide-\\d{1,}-.+?\\.jpg/g\nconst IMG_SLIDE_WITH_NUMBER_REGEX = /slide-\\d{1,}/\nconst IMG_NUMBER_REGEX = /slide-/\n\nexport const createSandboxVanillaImagePaths = (\n carouselHtml: string\n): string => {\n return carouselHtml.replace(IMG_SRC_WITH_HASH_REGEX, (match) => {\n const slideWithNumber = match.match(IMG_SLIDE_WITH_NUMBER_REGEX) || ['']\n const index = slideWithNumber[0].replace(IMG_NUMBER_REGEX, '')\n return `https://picsum.photos/600/350?v=${index}`\n })\n}\n","import { getParameters } from 'codesandbox/lib/api/define'\nimport { SANDBOX_BASE_CSS, SANDBOX_CSS } from '../sandboxStyles'\nimport { SANDBOX_VANILLA_FOLDERS } from './sandboxVanillaFolders'\nimport { loadPrettier } from 'utils/loadPrettier'\nimport { createSandboxVanillaPackageJson } from './createSandboxVanillaPackageJson'\nimport { createSandboxVanillaTsConfig } from './createSandboxVanillaTsConfig'\nimport { createSandboxVanillaEntry } from './createSandboxVanillaEntry'\nimport { createSandboxVanillaImagePaths } from './createSandboxVanillaImagePaths'\nimport { createSandboxVanillaOptions } from './createSandboxVanillaOptions'\nimport { sandboxLanguageUtils } from 'utils/sandbox'\nimport {\n SandboxVanillaCreateType,\n SandboxConfigType,\n SANDBOX_LANGUAGES\n} from 'consts/sandbox'\n\nexport const createSandboxVanilla = async (\n config: SandboxVanillaCreateType\n): Promise => {\n const {\n id,\n carouselScript,\n carouselHtml,\n options,\n styles,\n plugins,\n sandboxOverrides,\n language = SANDBOX_LANGUAGES.JAVASCRIPT\n } = config\n const title = `${id}-vanilla`\n const { prettierConfig, formatHtml, formatCss } = await loadPrettier()\n const { isTypeScript, vanillaScriptExtension, formatScript } =\n await sandboxLanguageUtils(language)\n const packageJson = await createSandboxVanillaPackageJson(\n language,\n title,\n plugins\n )\n const tsConfig = createSandboxVanillaTsConfig()\n const entryScript = createSandboxVanillaOptions(carouselScript, options)\n const entryHtml = await createSandboxVanillaEntry(\n title,\n vanillaScriptExtension,\n createSandboxVanillaImagePaths(carouselHtml)\n )\n\n const sandboxConfig: SandboxConfigType['files'] = {\n [`.prettierrc`]: {\n isBinary: false,\n content: JSON.stringify(prettierConfig, null, '\\t')\n },\n [`package.json`]: {\n isBinary: false,\n content: JSON.stringify(packageJson, null, '\\t')\n },\n [`index.html`]: {\n isBinary: false,\n content: formatHtml(entryHtml)\n },\n [`${SANDBOX_VANILLA_FOLDERS.CSS}/base.css`]: {\n isBinary: false,\n content: formatCss(SANDBOX_BASE_CSS)\n },\n [`${SANDBOX_VANILLA_FOLDERS.CSS}/sandbox.css`]: {\n isBinary: false,\n content: formatCss(SANDBOX_CSS)\n },\n [`${SANDBOX_VANILLA_FOLDERS.CSS}/embla.css`]: {\n isBinary: false,\n content: formatCss(styles)\n },\n [`${SANDBOX_VANILLA_FOLDERS.JS}/index.${vanillaScriptExtension}`]: {\n isBinary: false,\n content: formatScript(entryScript)\n }\n }\n\n if (isTypeScript) {\n Object.assign(sandboxConfig, {\n [`tsconfig.json`]: {\n isBinary: false,\n content: JSON.stringify(tsConfig, null, '\\t')\n }\n })\n }\n\n return getParameters({\n files: Object.assign({}, sandboxConfig, sandboxOverrides)\n })\n}\n","import docsPackageJson from 'embla-carousel-docs/package.json'\nimport { kebabCaseToPascalCase } from 'utils/stringCasing'\nimport { sandboxLanguageUtils } from 'utils/sandbox'\nimport {\n PackageJsonType,\n SandboxLanguageType,\n SandboxPluginsType\n} from 'consts/sandbox'\n\nexport const createSandboxVanillaPackageJson = async (\n language: SandboxLanguageType,\n id: string,\n plugins?: SandboxPluginsType\n): Promise => {\n const { isJavaScript } = await sandboxLanguageUtils(language)\n const { dependencies, devDependencies } = docsPackageJson\n\n return {\n name: id,\n version: '1.0.0',\n description: `${kebabCaseToPascalCase(id, ' ')} Example`,\n main: 'index.html',\n scripts: {\n start: 'parcel index.html --open',\n build: 'parcel build index.html'\n },\n dependencies: {\n 'parcel-bundler': '^1.6.1',\n 'embla-carousel': dependencies['embla-carousel-react'],\n ...(plugins && plugins)\n },\n devDependencies: isJavaScript\n ? { '@babel/core': '7.2.0' }\n : {\n typescript: devDependencies.typescript\n },\n resolutions: {\n '@babel/preset-env': '7.13.8'\n }\n }\n}\n","import { TsConfigType } from 'consts/sandbox'\n\nexport const createSandboxVanillaTsConfig = (): TsConfigType => {\n return {\n include: ['./src/**/*'],\n compilerOptions: {\n strict: true,\n module: 'commonjs',\n jsx: 'preserve',\n esModuleInterop: true,\n sourceMap: true,\n allowJs: true,\n lib: ['es6', 'dom'],\n rootDir: 'src',\n moduleResolution: 'node'\n }\n }\n}\n","import { EmblaOptionsType } from 'embla-carousel'\nimport { sandboxInjectIosPickerLoop, sandboxInjectOptions } from 'utils/sandbox'\nimport {\n SANDBOX_REGEX_IOS_PICKER_LOOP,\n SANDBOX_REGEX_OPTIONS\n} from 'consts/sandbox'\n\nexport const createSandboxVanillaOptions = (\n carouselScript: string,\n options: EmblaOptionsType\n): string => {\n const loop = options?.loop\n return carouselScript\n .replace(SANDBOX_REGEX_OPTIONS, sandboxInjectOptions(options))\n .replace(SANDBOX_REGEX_IOS_PICKER_LOOP, sandboxInjectIosPickerLoop(loop))\n}\n","export const SANDBOX_VANILLA_FOLDERS = {\n CSS: 'src/css',\n JS: 'src/js'\n}\n","const IMPORT_LOCAL_MODULE_REGEX = /from\\s'.\\/EmblaCarousel(.*)'/g\nconst MODULE_LOCAL_NAME_REGEX = /.+?(?=EmblaCarousel)/\n\nexport const sandboxStaticFindLocalModules = (\n carouselScript: string\n): string[] => {\n const modulesMatch = carouselScript.match(IMPORT_LOCAL_MODULE_REGEX) || []\n return modulesMatch.map((match) =>\n match.replace(MODULE_LOCAL_NAME_REGEX, '').replace(/'/, '')\n )\n}\n\nconst IMPORT_SHARED_MODULE_REGEX = /from\\s'..\\/EmblaCarousel(.*)'/g\nconst MODULE_SHARED_NAME_REGEX = /.+?(?=EmblaCarousel)/\n\nexport const sandboxStaticFindSharedModules = (\n carouselScript: string\n): string[] => {\n const modulesMatch = carouselScript.match(IMPORT_SHARED_MODULE_REGEX) || []\n return modulesMatch.map((match) =>\n match.replace(MODULE_SHARED_NAME_REGEX, '').replace(/'/, '')\n )\n}\n","import { sandboxLanguageUtils } from 'utils/sandbox'\nimport { SandboxLanguageType, SandboxModuleType } from 'consts/sandbox'\nimport {\n sandboxStaticFindLocalModules,\n sandboxStaticFindSharedModules\n} from './sandboxStaticFindModules'\n\ntype ModuleScriptType = {\n script: SandboxModuleType\n name: string\n}\n\nexport const sandboxStaticExtractVanillaModules = async (\n language: SandboxLanguageType,\n carouselScript: string,\n path: string\n): Promise => {\n const { vanillaScriptExtension } = await sandboxLanguageUtils(language)\n const localModules = sandboxStaticFindLocalModules(carouselScript)\n const sharedModules = sandboxStaticFindSharedModules(carouselScript)\n const modules = [...localModules, ...sharedModules]\n\n const localModulesPromises: Promise[] = localModules.map(\n (module) => {\n return import(\n `!!raw-loader!components/Sandbox/Vanilla/SandboxFilesDist/${path}/${module}.${vanillaScriptExtension}`\n )\n }\n )\n const sharedModulesPromises: Promise[] = sharedModules.map(\n (module) => {\n return import(\n `!!raw-loader!components/Sandbox/Vanilla/SandboxFilesDist/${module}.${vanillaScriptExtension}`\n )\n }\n )\n\n const promises = [...localModulesPromises, ...sharedModulesPromises]\n const resolvedPromises = await Promise.all(promises)\n const moduleScripts = resolvedPromises.map((script, index) => ({\n script,\n name: modules[index]\n }))\n\n return new Promise((resolve) => resolve(moduleScripts))\n}\n\nexport const sandboxStaticExtractReactModules = async (\n language: SandboxLanguageType,\n carouselScript: string,\n path: string\n): Promise => {\n const { reactScriptExtension } = await sandboxLanguageUtils(language)\n const localModules = sandboxStaticFindLocalModules(carouselScript)\n const sharedModules = sandboxStaticFindSharedModules(carouselScript)\n const modules = [...localModules, ...sharedModules]\n\n const localModulesPromises: Promise[] = localModules.map(\n (module) => {\n return import(\n `!!raw-loader!components/Sandbox/React/SandboxFilesDist/${path}/${module}.${reactScriptExtension}`\n )\n }\n )\n const sharedModulesPromises: Promise[] = sharedModules.map(\n (module) => {\n return import(\n `!!raw-loader!components/Sandbox/React/SandboxFilesDist/${module}.${reactScriptExtension}`\n )\n }\n )\n\n const promises = [...localModulesPromises, ...sharedModulesPromises]\n const resolvedPromises = await Promise.all(promises)\n const moduleScripts = resolvedPromises.map((script, index) => ({\n script,\n name: modules[index]\n }))\n\n return new Promise((resolve) => resolve(moduleScripts))\n}\n","import { SandboxPluginsType, SANDBOX_PLUGINS } from 'consts/sandbox'\nimport { addSandboxPlugins } from 'utils/sandbox'\n\nexport const sandboxStaticExtractPlugins = (\n carouselScript: string\n): SandboxPluginsType | undefined => {\n const pluginList = Object.values(SANDBOX_PLUGINS).filter((pluginName) => {\n return carouselScript.match(`from '${pluginName}'`)\n })\n\n return addSandboxPlugins(pluginList).plugins\n}\n","import { css } from 'styled-components'\nimport { styledComponentsStylesToString } from 'utils/styledComponentStylesToString'\nimport { FONT_SIZES, FONT_WEIGHTS } from 'consts/fontSizes'\nimport { COLORS, THEME_STYLES } from 'consts/themes'\nimport { BASE_FONT_STYLES } from 'components/Layout/GlobalStyles/base'\n\nconst SANDBOX_BASE_STYLES = css`\n @import url('https://fonts.googleapis.com/css2?family=Inter:wght@100..900&display=swap');\n\n html {\n -webkit-text-size-adjust: 100%;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n box-sizing: border-box;\n line-height: 1.15;\n\n background-color: ${COLORS.BACKGROUND_SITE};\n font-size: ${BASE_FONT_STYLES};\n\n font-family: Inter, 'system-ui', -apple-system, BlinkMacSystemFont,\n 'Segoe UI', Roboto, Helvetica, Arial, sans-serif, 'Apple Color Emoji',\n 'Segoe UI Emoji', 'Segoe UI Symbol';\n }\n\n *,\n *::before,\n *::after {\n box-sizing: inherit;\n }\n\n body {\n background-color: ${COLORS.BACKGROUND_SITE};\n color: ${COLORS.TEXT_HIGH_CONTRAST};\n font-size: ${FONT_SIZES.BODY};\n line-height: 1.65;\n }\n`\n\nconst SANDBOX_HEADER_STYLES = css`\n .header {\n font-size: 2rem;\n font-weight: ${FONT_WEIGHTS.BOLD};\n text-align: center;\n padding: 4rem 2rem 2rem 2rem;\n margin: 0;\n }\n`\n\nconst SANDBOX_FOOTER_STYLES = css`\n .footer {\n display: flex;\n justify-content: center;\n padding: 2rem 2rem 4rem 2rem;\n }\n\n .footer__link {\n display: flex;\n align-items: center;\n background-color: transparent;\n text-decoration: none;\n text-align: center;\n font-weight: ${FONT_WEIGHTS.SEMI_BOLD};\n color: ${COLORS.TEXT_LOW_CONTRAST};\n font-size: 1.4rem;\n }\n\n .footer__link__svg {\n display: block;\n width: 2rem;\n height: 2rem;\n margin-right: 1rem;\n fill: currentColor;\n }\n`\n\nexport const SANDBOX_BASE_CSS = styledComponentsStylesToString(\n SANDBOX_BASE_STYLES,\n THEME_STYLES\n)\n\nexport const SANDBOX_CSS = styledComponentsStylesToString(\n SANDBOX_HEADER_STYLES,\n SANDBOX_FOOTER_STYLES\n)\n","import React, { PropsWithChildren } from 'react'\nimport { useSiteMetadata } from 'hooks/useSiteMetadata'\nimport { removeProtocol } from 'utils/removeProtocol'\nimport { kebabCaseToPascalCase } from 'utils/stringCasing'\n\ntype PropType = PropsWithChildren<{\n title: string\n description?: string\n lang?: string\n url: string\n}>\n\nexport const Seo = (props: PropType) => {\n const { title, description, lang = 'en', url, children } = props\n const siteMetadata = useSiteMetadata()\n const pageTitle = `${title} | ${kebabCaseToPascalCase(siteMetadata.title)}`\n const metaDescription = description || siteMetadata.description\n\n return (\n <>\n \n {pageTitle}\n \n \n \n \n \n \n \n \n \n \n \n \n\n {children}\n \n )\n}\n","import { EmblaOptionsType } from 'embla-carousel'\nimport { OptionsType } from 'embla-carousel/components/Options'\nimport { SPACINGS } from './spacings'\nimport {\n PackageJson as BasePackageJsonType,\n TsConfigJson as TsConfigType\n} from 'type-fest'\n\nexport type PackageJsonType = BasePackageJsonType & {\n browserslist?: string[]\n}\n\nexport type { TsConfigType }\n\nexport type SandboxConfigType = {\n files: {\n [key: string]: {\n content: string\n isBinary: boolean\n }\n }\n}\n\nexport type SandboxModuleType = { default: string }\n\nexport type SandboxVanillaExtensionType = 'js' | 'ts'\n\nexport type SandboxReactExtensionType = 'jsx' | 'tsx'\n\nexport type SandboxPluginNameType =\n (typeof SANDBOX_PLUGINS)[keyof typeof SANDBOX_PLUGINS]\n\nexport type SandboxLanguageType =\n (typeof SANDBOX_LANGUAGES)[keyof typeof SANDBOX_LANGUAGES]\n\nexport type SandboxPluginsType = {\n [key in SandboxPluginNameType]?: string\n}\n\nexport type SandboxSharedCreateType = {\n id: string\n options: EmblaOptionsType\n styles: string\n plugins?: SandboxPluginsType\n language?: SandboxLanguageType\n sandboxOverrides?: SandboxConfigType['files']\n}\n\nexport type SandboxVanillaCreateType = SandboxSharedCreateType & {\n carouselScript: string\n carouselHtml: string\n}\n\nexport type SandboxReactCreateType = SandboxSharedCreateType & {\n carouselScript: string\n slides: number[]\n}\n\nexport type SandboxStaticSettingsType = {\n id: string\n options: EmblaOptionsType\n styles: string\n language?: SandboxLanguageType\n slides: number[]\n}\n\nexport type SandboxGeneratorSettingsType = OptionsType & {\n id: string\n framework: SandboxLabelKeyType | ''\n slideList: number[]\n accessibility: boolean\n slideSize: string\n slideGapSize: string\n edgeGap: string\n navigationPrevNextButtons: boolean\n navigationDots: boolean\n selectedSnapDisplay: boolean\n autoplay: boolean\n classNames: boolean\n wheelGestures: boolean\n styles?: string\n}\n\nexport type SandboxModuleScriptType = {\n script: SandboxModuleType\n name: string\n}\n\nexport type SandboxSelectionType = {\n key: SandboxLabelKeyType\n label: SandboxLabelValueType\n createSandbox: (settings?: SettingsType) => Promise\n}\n\nexport type SandboxLabelValueType = (typeof SANDBOX_LABELS)[SandboxLabelKeyType]\nexport type SandboxLabelKeyType = keyof typeof SANDBOX_LABELS\nexport type SandboxCreateFunctionType =\n SandboxSelectionType['createSandbox']\n\nexport const SANDBOX_LABELS = {\n VANILLA_JS: 'Vanilla',\n VANILLA_TS: 'Vanilla + TypeScript',\n REACT_TS: 'React + TypeScript',\n REACT_JS: 'React'\n} as const\n\nexport const SANDBOX_LANGUAGES = {\n JAVASCRIPT: 'javascript',\n TYPESCRIPT: 'typescript'\n} as const\n\nexport const SANDBOX_PLUGINS = {\n AUTOPLAY: 'embla-carousel-autoplay',\n AUTO_SCROLL: 'embla-carousel-auto-scroll',\n AUTO_HEIGHT: 'embla-carousel-auto-height',\n CLASS_NAMES: 'embla-carousel-class-names',\n FADE: 'embla-carousel-fade'\n} as const\n\nexport const SANDBOX_GENERATOR_FORM_FIELDS = {\n FRAMEWORK: 'framework',\n LOOP: 'loop',\n DRAG_FREE: 'dragFree',\n AXIS: 'axis',\n DIRECTION: 'direction',\n ACCESSIBILITY: 'accessibility',\n SLIDE_SIZE: 'slideSize',\n SLIDE_GAP_SIZE: 'slideGapSize',\n EDGE_GAP: 'edgeGap',\n ALIGN: 'align',\n CONTAIN_SCROLL: 'containScroll',\n SLIDES_TO_SCROLL: 'slidesToScroll',\n NAVIGATION_PREV_NEXT_BUTTONS: 'navigationPrevNextButtons',\n NAVIGATION_DOTS: 'navigationDots',\n AUTOPLAY: 'autoplay',\n WHEEL_GESTURES: 'wheelGestures'\n} as const\n\nexport const SANDBOX_GENERATOR_FORM_PREFIX = 'carousel-generator-form'\n\nexport const SANDBOX_SELECTION_SPACING = SPACINGS.ONE\n\nexport const SANDBOX_REGEX_REPOSITORY_URL =\n /__replace_sandbox_repository_url__/g\n\nexport const SANDBOX_REGEX_TITLE = /__replace_sandbox_title__/g\n\nexport const SANDBOX_REGEX_THEME = /__replace_sandbox_theme__/g\n\nexport const SANDBOX_REGEX_OPTIONS = /const\\sOPTIONS(.*)/\n\nexport const SANDBOX_REGEX_IOS_PICKER_LOOP = /const\\sLOOP\\s=\\sfalse/\n","export const arrayFromNumber = (number: number): number[] =>\n Array.from(Array(number).keys())\n","import { ThemeKeyType, THEME_KEYS, THEME_PREFIX } from 'consts/themes'\nimport { isBrowser } from './isBrowser'\n\nexport const getThemeFromDocument = (): ThemeKeyType => {\n if (!isBrowser) return THEME_KEYS.LIGHT\n\n const lightThemeClass = THEME_PREFIX + THEME_KEYS.LIGHT\n return document.documentElement.classList.contains(lightThemeClass)\n ? THEME_KEYS.LIGHT\n : THEME_KEYS.DARK\n}\n","import prettierrc from '../../.prettierrc'\nimport { Options as PretterOptions } from 'prettier'\n\ntype LoadPrettierType = {\n prettierConfig: PretterOptions\n formatHtml: (html: string) => string\n formatCss: (css: string) => string\n formatJs: (js: string) => string\n formatTs: (ts: string) => string\n}\n\nconst PRETTIER_CONFIG = prettierrc\n\nexport const loadPrettier = async (): Promise => {\n const [prettier, htmlParser, cssParser, babelParser] = await Promise.all([\n import('prettier'),\n import('prettier/parser-html'),\n import('prettier/parser-postcss'),\n import('prettier/parser-babel')\n ])\n\n const prettierHtmlParser: PretterOptions = {\n ...PRETTIER_CONFIG,\n parser: 'html',\n plugins: [htmlParser]\n }\n\n const prettierCssParser: PretterOptions = {\n ...PRETTIER_CONFIG,\n parser: 'css',\n plugins: [cssParser]\n }\n\n const prettierBabelParser: PretterOptions = {\n ...PRETTIER_CONFIG,\n parser: 'babel',\n plugins: [babelParser]\n }\n\n const prettierBabeTsParser: PretterOptions = {\n ...PRETTIER_CONFIG,\n parser: 'babel-ts',\n plugins: [babelParser]\n }\n\n const prettierFormatSafe = (\n subject: string,\n parser: PretterOptions\n ): string => {\n let formattedString = ''\n try {\n formattedString = prettier.format(subject, parser)\n } catch (error) {\n console.warn('Prettier was not able to format file', error) // eslint-disable-line no-console\n }\n return formattedString\n }\n\n const formatHtml = (html: string): string =>\n prettierFormatSafe(html, prettierHtmlParser)\n\n const formatCss = (css: string): string =>\n prettierFormatSafe(css, prettierCssParser)\n\n const formatJs = (js: string): string =>\n prettierFormatSafe(js, prettierBabelParser)\n\n const formatTs = (ts: string): string =>\n prettierFormatSafe(ts, prettierBabeTsParser)\n\n return {\n prettierConfig: PRETTIER_CONFIG,\n formatHtml,\n formatCss,\n formatJs,\n formatTs\n }\n}\n","export const removeProtocol = (url: string): string =>\n url.replace(/(^\\w+:|^)\\/\\//, '')\n","import docsPackageJson from 'embla-carousel-docs/package.json'\nimport { EmblaOptionsType } from 'embla-carousel'\nimport { loadPrettier } from './loadPrettier'\nimport { camelOrPascalToKebabCase } from './stringCasing'\nimport {\n SandboxCreateFunctionType,\n SandboxLabelKeyType,\n SandboxSelectionType,\n SANDBOX_LABELS,\n SandboxLanguageType,\n SandboxReactExtensionType,\n SandboxVanillaExtensionType,\n SANDBOX_LANGUAGES,\n SandboxSharedCreateType,\n SandboxPluginNameType,\n SandboxGeneratorSettingsType,\n SANDBOX_GENERATOR_FORM_PREFIX\n} from 'consts/sandbox'\n\ntype SandboxLanguageUtilsType = {\n isJavaScript: boolean\n isTypeScript: boolean\n vanillaScriptExtension: SandboxVanillaExtensionType\n reactScriptExtension: SandboxReactExtensionType\n formatScript: (jsOrTs: string) => string\n}\n\nexport const sandboxLanguageUtils = async (\n language: SandboxLanguageType\n): Promise => {\n const { formatTs, formatJs } = await loadPrettier()\n const isTypeScript = language === SANDBOX_LANGUAGES.TYPESCRIPT\n const isJavaScript = !isTypeScript\n const formatScript = isTypeScript ? formatTs : formatJs\n const reactScriptExtension = isJavaScript ? 'jsx' : 'tsx'\n const vanillaScriptExtension = isJavaScript ? 'js' : 'ts'\n\n return {\n isJavaScript,\n isTypeScript,\n vanillaScriptExtension,\n reactScriptExtension,\n formatScript\n }\n}\n\ntype SandboxCreateType = {\n [key in SandboxLabelKeyType]: SandboxCreateFunctionType\n}\n\nexport const createSandboxFunctionsWithLabels = (\n createSandboxFunction: Partial>\n): SandboxSelectionType[] => {\n return Object.keys(createSandboxFunction).map((sandboxLabelKey) => {\n const key = sandboxLabelKey\n const createSandbox = >(\n createSandboxFunction[key]\n )\n const label = SANDBOX_LABELS[key]\n\n return { key, label, createSandbox }\n })\n}\n\ntype SandboxAddPluginsType = Pick\n\nexport const addSandboxPlugins = (\n pluginNames: SandboxPluginNameType | SandboxPluginNameType[]\n): SandboxAddPluginsType => {\n const pluginsArray = Array.isArray(pluginNames) ? pluginNames : [pluginNames]\n\n return {\n plugins: {\n ...pluginsArray.reduce(\n (allPlugins, pluginName) => ({\n ...allPlugins,\n [pluginName]: docsPackageJson.dependencies[pluginName]\n }),\n {}\n )\n }\n }\n}\n\nexport const sandboxInjectOptions = (\n options: EmblaOptionsType\n): ((match: string) => string) => {\n return (match: string) => match.replace('{}', JSON.stringify(options))\n}\n\nexport const sandboxInjectIosPickerLoop = (\n loop: boolean = false\n): ((match: string) => string) => {\n return (match) => match.replace('false', loop.toString())\n}\n\ntype SandboxGeneratorInputIdType<\n Key extends keyof SandboxGeneratorSettingsType\n> = {\n ID: string\n FIELD_NAME: Key\n}\n\nexport type SandboxGeneratorRadioType<\n Key extends keyof SandboxGeneratorSettingsType\n> = SandboxGeneratorInputIdType & {\n OPTIONS: {\n LABEL: string\n VALUE: SandboxGeneratorSettingsType[Key]\n }[]\n}\n\nexport type SandboxGeneratorCheckboxType<\n Key extends keyof SandboxGeneratorSettingsType\n> = SandboxGeneratorInputIdType & {\n LABEL: string\n}\n\nexport type SandboxGeneratorInputTextType<\n Key extends keyof SandboxGeneratorSettingsType\n> = SandboxGeneratorInputIdType & {\n LABEL: string\n}\n\nexport const createSandboxGeneratorInputId = <\n Key extends keyof SandboxGeneratorSettingsType\n>(\n fieldName: Key\n): SandboxGeneratorInputIdType => {\n return {\n FIELD_NAME: fieldName,\n ID: `${SANDBOX_GENERATOR_FORM_PREFIX}-${camelOrPascalToKebabCase(\n fieldName\n )}`\n }\n}\n","import { FlattenSimpleInterpolation } from 'styled-components'\n\nexport const styledComponentsStylesToString = (\n ...stylesList: FlattenSimpleInterpolation[]\n): string => {\n return stylesList.reduce(\n (allStyles, styles) => allStyles + styles.join(''),\n ''\n )\n}\n","module.exports = require('../../.prettierrc.js')\n","import { EmblaPluginType } from 'embla-carousel'\n\nexport function isObject(subject: unknown): subject is Record {\n return Object.prototype.toString.call(subject) === '[object Object]'\n}\n\nexport function isRecord(\n subject: unknown\n): subject is Record {\n return isObject(subject) || Array.isArray(subject)\n}\n\nexport function canUseDOM(): boolean {\n return !!(\n typeof window !== 'undefined' &&\n window.document &&\n window.document.createElement\n )\n}\n\nexport function areOptionsEqual(\n optionsA: Record,\n optionsB: Record\n): boolean {\n const optionsAKeys = Object.keys(optionsA)\n const optionsBKeys = Object.keys(optionsB)\n\n if (optionsAKeys.length !== optionsBKeys.length) return false\n\n const breakpointsA = JSON.stringify(Object.keys(optionsA.breakpoints || {}))\n const breakpointsB = JSON.stringify(Object.keys(optionsB.breakpoints || {}))\n\n if (breakpointsA !== breakpointsB) return false\n\n return optionsAKeys.every((key) => {\n const valueA = optionsA[key]\n const valueB = optionsB[key]\n if (typeof valueA === 'function') return `${valueA}` === `${valueB}`\n if (!isRecord(valueA) || !isRecord(valueB)) return valueA === valueB\n return areOptionsEqual(valueA, valueB)\n })\n}\n\nexport function sortAndMapPluginToOptions(\n plugins: EmblaPluginType[]\n): EmblaPluginType['options'][] {\n return plugins\n .concat()\n .sort((a, b) => (a.name > b.name ? 1 : -1))\n .map((plugin) => plugin.options)\n}\n\nexport function arePluginsEqual(\n pluginsA: EmblaPluginType[],\n pluginsB: EmblaPluginType[]\n): boolean {\n if (pluginsA.length !== pluginsB.length) return false\n\n const optionsA = sortAndMapPluginToOptions(pluginsA)\n const optionsB = sortAndMapPluginToOptions(pluginsB)\n\n return optionsA.every((optionA, index) => {\n const optionB = optionsB[index]\n return areOptionsEqual(optionA, optionB)\n })\n}\n","import { isString } from './utils'\n\nexport type AlignmentOptionType =\n | 'start'\n | 'center'\n | 'end'\n | ((viewSize: number, snapSize: number, index: number) => number)\n\nexport type AlignmentType = {\n measure: (n: number, index: number) => number\n}\n\nexport function Alignment(\n align: AlignmentOptionType,\n viewSize: number\n): AlignmentType {\n const predefined = { start, center, end }\n\n function start(): number {\n return 0\n }\n\n function center(n: number): number {\n return end(n) / 2\n }\n\n function end(n: number): number {\n return viewSize - n\n }\n\n function measure(n: number, index: number): number {\n if (isString(align)) return predefined[align](n)\n return align(viewSize, n, index)\n }\n\n const self: AlignmentType = {\n measure\n }\n return self\n}\n","type EventNameType = keyof DocumentEventMap | keyof WindowEventMap\ntype EventHandlerType = (evt: any) => void\ntype EventOptionsType = boolean | AddEventListenerOptions | undefined\ntype EventRemoverType = () => void\n\nexport type EventStoreType = {\n add: (\n node: EventTarget,\n type: EventNameType,\n handler: EventHandlerType,\n options?: EventOptionsType\n ) => EventStoreType\n clear: () => void\n}\n\nexport function EventStore(): EventStoreType {\n let listeners: EventRemoverType[] = []\n\n function add(\n node: EventTarget,\n type: EventNameType,\n handler: EventHandlerType,\n options: EventOptionsType = { passive: true }\n ): EventStoreType {\n let removeListener: EventRemoverType\n\n if ('addEventListener' in node) {\n node.addEventListener(type, handler, options)\n removeListener = () => node.removeEventListener(type, handler, options)\n } else {\n const legacyMediaQueryList = node\n legacyMediaQueryList.addListener(handler)\n removeListener = () => legacyMediaQueryList.removeListener(handler)\n }\n\n listeners.push(removeListener)\n return self\n }\n\n function clear(): void {\n listeners = listeners.filter((remove) => remove())\n }\n\n const self: EventStoreType = {\n add,\n clear\n }\n return self\n}\n","import { EngineType } from './Engine'\nimport { EventStore } from './EventStore'\nimport { mathAbs, WindowType } from './utils'\n\nexport type AnimationsUpdateType = (engine: EngineType) => void\nexport type AnimationsRenderType = (\n engine: EngineType,\n lagOffset: number\n) => void\n\nexport type AnimationsType = {\n init: () => void\n destroy: () => void\n start: () => void\n stop: () => void\n update: () => void\n render: (lagOffset: number) => void\n}\n\nexport function Animations(\n ownerDocument: Document,\n ownerWindow: WindowType,\n update: AnimationsType['update'],\n render: AnimationsType['render']\n): AnimationsType {\n const documentVisibleHandler = EventStore()\n const timeStep = 1000 / 60\n let lastTimeStamp: number | null = null\n let lag = 0\n let animationFrame = 0\n\n function init(): void {\n documentVisibleHandler.add(ownerDocument, 'visibilitychange', () => {\n if (ownerDocument.hidden) reset()\n })\n }\n\n function destroy(): void {\n stop()\n documentVisibleHandler.clear()\n }\n\n function animate(timeStamp: DOMHighResTimeStamp): void {\n if (!animationFrame) return\n if (!lastTimeStamp) lastTimeStamp = timeStamp\n\n const elapsed = timeStamp - lastTimeStamp\n lastTimeStamp = timeStamp\n lag += elapsed\n\n while (lag >= timeStep) {\n update()\n lag -= timeStep\n }\n\n const lagOffset = mathAbs(lag / timeStep)\n render(lagOffset)\n\n if (animationFrame) ownerWindow.requestAnimationFrame(animate)\n }\n\n function start(): void {\n if (animationFrame) return\n\n animationFrame = ownerWindow.requestAnimationFrame(animate)\n }\n\n function stop(): void {\n ownerWindow.cancelAnimationFrame(animationFrame)\n lastTimeStamp = null\n lag = 0\n animationFrame = 0\n }\n\n function reset(): void {\n lastTimeStamp = null\n lag = 0\n }\n\n const self: AnimationsType = {\n init,\n destroy,\n start,\n stop,\n update,\n render\n }\n return self\n}\n","import { NodeRectType } from './NodeRects'\n\nexport type AxisOptionType = 'x' | 'y'\nexport type AxisDirectionOptionType = 'ltr' | 'rtl'\ntype AxisEdgeType = 'top' | 'right' | 'bottom' | 'left'\n\nexport type AxisType = {\n scroll: AxisOptionType\n cross: AxisOptionType\n startEdge: AxisEdgeType\n endEdge: AxisEdgeType\n measureSize: (nodeRect: NodeRectType) => number\n direction: (n: number) => number\n}\n\nexport function Axis(\n axis: AxisOptionType,\n contentDirection: AxisDirectionOptionType\n): AxisType {\n const isRightToLeft = contentDirection === 'rtl'\n const isVertical = axis === 'y'\n const scroll = isVertical ? 'y' : 'x'\n const cross = isVertical ? 'x' : 'y'\n const sign = !isVertical && isRightToLeft ? -1 : 1\n const startEdge = getStartEdge()\n const endEdge = getEndEdge()\n\n function measureSize(nodeRect: NodeRectType): number {\n const { height, width } = nodeRect\n return isVertical ? height : width\n }\n\n function getStartEdge(): AxisEdgeType {\n if (isVertical) return 'top'\n return isRightToLeft ? 'right' : 'left'\n }\n\n function getEndEdge(): AxisEdgeType {\n if (isVertical) return 'bottom'\n return isRightToLeft ? 'left' : 'right'\n }\n\n function direction(n: number): number {\n return n * sign\n }\n\n const self: AxisType = {\n scroll,\n cross,\n startEdge,\n endEdge,\n measureSize,\n direction\n }\n return self\n}\n","import { mathAbs } from './utils'\n\nexport type LimitType = {\n min: number\n max: number\n length: number\n constrain: (n: number) => number\n reachedAny: (n: number) => boolean\n reachedMax: (n: number) => boolean\n reachedMin: (n: number) => boolean\n removeOffset: (n: number) => number\n}\n\nexport function Limit(min: number = 0, max: number = 0): LimitType {\n const length = mathAbs(min - max)\n\n function reachedMin(n: number): boolean {\n return n < min\n }\n\n function reachedMax(n: number): boolean {\n return n > max\n }\n\n function reachedAny(n: number): boolean {\n return reachedMin(n) || reachedMax(n)\n }\n\n function constrain(n: number): number {\n if (!reachedAny(n)) return n\n return reachedMin(n) ? min : max\n }\n\n function removeOffset(n: number): number {\n if (!length) return n\n return n - length * Math.ceil((n - max) / length)\n }\n\n const self: LimitType = {\n length,\n max,\n min,\n constrain,\n reachedAny,\n reachedMax,\n reachedMin,\n removeOffset\n }\n return self\n}\n","import { Limit } from './Limit'\nimport { mathAbs } from './utils'\n\nexport type CounterType = {\n get: () => number\n set: (n: number) => CounterType\n add: (n: number) => CounterType\n clone: () => CounterType\n}\n\nexport function Counter(\n max: number,\n start: number,\n loop: boolean\n): CounterType {\n const { constrain } = Limit(0, max)\n const loopEnd = max + 1\n let counter = withinLimit(start)\n\n function withinLimit(n: number): number {\n return !loop ? constrain(n) : mathAbs((loopEnd + n) % loopEnd)\n }\n\n function get(): number {\n return counter\n }\n\n function set(n: number): CounterType {\n counter = withinLimit(n)\n return self\n }\n\n function add(n: number): CounterType {\n return clone().set(get() + n)\n }\n\n function clone(): CounterType {\n return Counter(max, get(), loop)\n }\n\n const self: CounterType = {\n get,\n set,\n add,\n clone\n }\n return self\n}\n","import { EmblaCarouselType } from './EmblaCarousel'\nimport { AnimationsType } from './Animations'\nimport { CounterType } from './Counter'\nimport { DragTrackerType, PointerEventType } from './DragTracker'\nimport { EventHandlerType } from './EventHandler'\nimport { AxisType } from './Axis'\nimport { EventStore } from './EventStore'\nimport { ScrollBodyType } from './ScrollBody'\nimport { ScrollTargetType } from './ScrollTarget'\nimport { ScrollToType } from './ScrollTo'\nimport { Vector1DType } from './Vector1d'\nimport { PercentOfViewType } from './PercentOfView'\nimport { Limit } from './Limit'\nimport {\n deltaAbs,\n factorAbs,\n isBoolean,\n isMouseEvent,\n mathAbs,\n mathSign,\n WindowType\n} from './utils'\n\ntype DragHandlerCallbackType = (\n emblaApi: EmblaCarouselType,\n evt: PointerEventType\n) => boolean | void\n\nexport type DragHandlerOptionType = boolean | DragHandlerCallbackType\n\nexport type DragHandlerType = {\n init: (emblaApi: EmblaCarouselType) => void\n destroy: () => void\n pointerDown: () => boolean\n}\n\nexport function DragHandler(\n axis: AxisType,\n rootNode: HTMLElement,\n ownerDocument: Document,\n ownerWindow: WindowType,\n target: Vector1DType,\n dragTracker: DragTrackerType,\n location: Vector1DType,\n animation: AnimationsType,\n scrollTo: ScrollToType,\n scrollBody: ScrollBodyType,\n scrollTarget: ScrollTargetType,\n index: CounterType,\n eventHandler: EventHandlerType,\n percentOfView: PercentOfViewType,\n dragFree: boolean,\n dragThreshold: number,\n skipSnaps: boolean,\n baseFriction: number,\n watchDrag: DragHandlerOptionType\n): DragHandlerType {\n const { cross: crossAxis, direction } = axis\n const focusNodes = ['INPUT', 'SELECT', 'TEXTAREA']\n const nonPassiveEvent = { passive: false }\n const initEvents = EventStore()\n const dragEvents = EventStore()\n const goToNextThreshold = Limit(50, 225).constrain(percentOfView.measure(20))\n const snapForceBoost = { mouse: 300, touch: 400 }\n const freeForceBoost = { mouse: 500, touch: 600 }\n const baseSpeed = dragFree ? 43 : 25\n\n let isMoving = false\n let startScroll = 0\n let startCross = 0\n let pointerIsDown = false\n let preventScroll = false\n let preventClick = false\n let isMouse = false\n\n function init(emblaApi: EmblaCarouselType): void {\n if (!watchDrag) return\n\n function downIfAllowed(evt: PointerEventType): void {\n if (isBoolean(watchDrag) || watchDrag(emblaApi, evt)) down(evt)\n }\n\n const node = rootNode\n initEvents\n .add(node, 'dragstart', (evt) => evt.preventDefault(), nonPassiveEvent)\n .add(node, 'touchmove', () => undefined, nonPassiveEvent)\n .add(node, 'touchend', () => undefined)\n .add(node, 'touchstart', downIfAllowed)\n .add(node, 'mousedown', downIfAllowed)\n .add(node, 'touchcancel', up)\n .add(node, 'contextmenu', up)\n .add(node, 'click', click, true)\n }\n\n function destroy(): void {\n initEvents.clear()\n dragEvents.clear()\n }\n\n function addDragEvents(): void {\n const node = isMouse ? ownerDocument : rootNode\n dragEvents\n .add(node, 'touchmove', move, nonPassiveEvent)\n .add(node, 'touchend', up)\n .add(node, 'mousemove', move, nonPassiveEvent)\n .add(node, 'mouseup', up)\n }\n\n function isFocusNode(node: Element): boolean {\n const nodeName = node.nodeName || ''\n return focusNodes.includes(nodeName)\n }\n\n function forceBoost(): number {\n const boost = dragFree ? freeForceBoost : snapForceBoost\n const type = isMouse ? 'mouse' : 'touch'\n return boost[type]\n }\n\n function allowedForce(force: number, targetChanged: boolean): number {\n const next = index.add(mathSign(force) * -1)\n const baseForce = scrollTarget.byDistance(force, !dragFree).distance\n\n if (dragFree || mathAbs(force) < goToNextThreshold) return baseForce\n if (skipSnaps && targetChanged) return baseForce * 0.5\n\n return scrollTarget.byIndex(next.get(), 0).distance\n }\n\n function down(evt: PointerEventType): void {\n const isMouseEvt = isMouseEvent(evt, ownerWindow)\n isMouse = isMouseEvt\n preventClick = dragFree && isMouseEvt && !evt.buttons && isMoving\n isMoving = deltaAbs(target.get(), location.get()) >= 2\n\n if (isMouseEvt && evt.button !== 0) return\n if (isFocusNode(evt.target as Element)) return\n\n pointerIsDown = true\n dragTracker.pointerDown(evt)\n scrollBody.useFriction(0).useDuration(0)\n target.set(location)\n addDragEvents()\n startScroll = dragTracker.readPoint(evt)\n startCross = dragTracker.readPoint(evt, crossAxis)\n eventHandler.emit('pointerDown')\n }\n\n function move(evt: PointerEventType): void {\n const isTouchEvt = !isMouseEvent(evt, ownerWindow)\n if (isTouchEvt && evt.touches.length >= 2) return up(evt)\n\n const lastScroll = dragTracker.readPoint(evt)\n const lastCross = dragTracker.readPoint(evt, crossAxis)\n const diffScroll = deltaAbs(lastScroll, startScroll)\n const diffCross = deltaAbs(lastCross, startCross)\n\n if (!preventScroll && !isMouse) {\n if (!evt.cancelable) return up(evt)\n preventScroll = diffScroll > diffCross\n if (!preventScroll) return up(evt)\n }\n const diff = dragTracker.pointerMove(evt)\n if (diffScroll > dragThreshold) preventClick = true\n\n scrollBody.useFriction(0.3).useDuration(0.75)\n animation.start()\n target.add(direction(diff))\n evt.preventDefault()\n }\n\n function up(evt: PointerEventType): void {\n const currentLocation = scrollTarget.byDistance(0, false)\n const targetChanged = currentLocation.index !== index.get()\n const rawForce = dragTracker.pointerUp(evt) * forceBoost()\n const force = allowedForce(direction(rawForce), targetChanged)\n const forceFactor = factorAbs(rawForce, force)\n const speed = baseSpeed - 10 * forceFactor\n const friction = baseFriction + forceFactor / 50\n\n preventScroll = false\n pointerIsDown = false\n dragEvents.clear()\n scrollBody.useDuration(speed).useFriction(friction)\n scrollTo.distance(force, !dragFree)\n isMouse = false\n eventHandler.emit('pointerUp')\n }\n\n function click(evt: MouseEvent): void {\n if (preventClick) {\n evt.stopPropagation()\n evt.preventDefault()\n preventClick = false\n }\n }\n\n function pointerDown(): boolean {\n return pointerIsDown\n }\n\n const self: DragHandlerType = {\n init,\n destroy,\n pointerDown\n }\n return self\n}\n","import { AxisOptionType, AxisType } from './Axis'\nimport { isMouseEvent, mathAbs, WindowType } from './utils'\n\ntype PointerCoordType = keyof Touch | keyof MouseEvent\nexport type PointerEventType = TouchEvent | MouseEvent\n\nexport type DragTrackerType = {\n pointerDown: (evt: PointerEventType) => number\n pointerMove: (evt: PointerEventType) => number\n pointerUp: (evt: PointerEventType) => number\n readPoint: (evt: PointerEventType, evtAxis?: AxisOptionType) => number\n}\n\nexport function DragTracker(\n axis: AxisType,\n ownerWindow: WindowType\n): DragTrackerType {\n const logInterval = 170\n\n let startEvent: PointerEventType\n let lastEvent: PointerEventType\n\n function readTime(evt: PointerEventType): number {\n return evt.timeStamp\n }\n\n function readPoint(evt: PointerEventType, evtAxis?: AxisOptionType): number {\n const property = evtAxis || axis.scroll\n const coord: PointerCoordType = `client${property === 'x' ? 'X' : 'Y'}`\n return (isMouseEvent(evt, ownerWindow) ? evt : evt.touches[0])[coord]\n }\n\n function pointerDown(evt: PointerEventType): number {\n startEvent = evt\n lastEvent = evt\n return readPoint(evt)\n }\n\n function pointerMove(evt: PointerEventType): number {\n const diff = readPoint(evt) - readPoint(lastEvent)\n const expired = readTime(evt) - readTime(startEvent) > logInterval\n\n lastEvent = evt\n if (expired) startEvent = evt\n return diff\n }\n\n function pointerUp(evt: PointerEventType): number {\n if (!startEvent || !lastEvent) return 0\n const diffDrag = readPoint(lastEvent) - readPoint(startEvent)\n const diffTime = readTime(evt) - readTime(startEvent)\n const expired = readTime(evt) - readTime(lastEvent) > logInterval\n const force = diffDrag / diffTime\n const isFlick = diffTime && !expired && mathAbs(force) > 0.1\n\n return isFlick ? force : 0\n }\n\n const self: DragTrackerType = {\n pointerDown,\n pointerMove,\n pointerUp,\n readPoint\n }\n return self\n}\n","import { AxisType } from './Axis'\nimport { EmblaCarouselType } from './EmblaCarousel'\nimport { EventHandlerType } from './EventHandler'\nimport { NodeRectsType } from './NodeRects'\nimport { isBoolean, mathAbs, WindowType } from './utils'\n\ntype ResizeHandlerCallbackType = (\n emblaApi: EmblaCarouselType,\n entries: ResizeObserverEntry[]\n) => boolean | void\n\nexport type ResizeHandlerOptionType = boolean | ResizeHandlerCallbackType\n\nexport type ResizeHandlerType = {\n init: (emblaApi: EmblaCarouselType) => void\n destroy: () => void\n}\n\nexport function ResizeHandler(\n container: HTMLElement,\n eventHandler: EventHandlerType,\n ownerWindow: WindowType,\n slides: HTMLElement[],\n axis: AxisType,\n watchResize: ResizeHandlerOptionType,\n nodeRects: NodeRectsType\n): ResizeHandlerType {\n let resizeObserver: ResizeObserver\n let containerSize: number\n let slideSizes: number[] = []\n let destroyed = false\n\n function readSize(node: HTMLElement): number {\n return axis.measureSize(nodeRects.measure(node))\n }\n\n function init(emblaApi: EmblaCarouselType): void {\n if (!watchResize) return\n\n containerSize = readSize(container)\n slideSizes = slides.map(readSize)\n\n function defaultCallback(entries: ResizeObserverEntry[]): void {\n for (const entry of entries) {\n const isContainer = entry.target === container\n const slideIndex = slides.indexOf(entry.target)\n const lastSize = isContainer ? containerSize : slideSizes[slideIndex]\n const newSize = readSize(isContainer ? container : slides[slideIndex])\n const diffSize = mathAbs(newSize - lastSize)\n\n if (diffSize >= 0.5) {\n ownerWindow.requestAnimationFrame(() => {\n emblaApi.reInit()\n eventHandler.emit('resize')\n })\n break\n }\n }\n }\n\n resizeObserver = new ResizeObserver((entries) => {\n if (destroyed) return\n if (isBoolean(watchResize) || watchResize(emblaApi, entries)) {\n defaultCallback(entries)\n }\n })\n\n const observeNodes = [container].concat(slides)\n observeNodes.forEach((node) => resizeObserver.observe(node))\n }\n\n function destroy(): void {\n if (resizeObserver) resizeObserver.disconnect()\n destroyed = true\n }\n\n const self: ResizeHandlerType = {\n init,\n destroy\n }\n return self\n}\n","import { Limit, LimitType } from './Limit'\nimport { ScrollBodyType } from './ScrollBody'\nimport { Vector1DType } from './Vector1d'\nimport { mathAbs } from './utils'\nimport { PercentOfViewType } from './PercentOfView'\n\nexport type ScrollBoundsType = {\n shouldConstrain: () => boolean\n constrain: (pointerDown: boolean) => void\n toggleActive: (active: boolean) => void\n}\n\nexport function ScrollBounds(\n limit: LimitType,\n offsetLocation: Vector1DType,\n target: Vector1DType,\n scrollBody: ScrollBodyType,\n percentOfView: PercentOfViewType\n): ScrollBoundsType {\n const pullBackThreshold = percentOfView.measure(10)\n const edgeOffsetTolerance = percentOfView.measure(50)\n const frictionLimit = Limit(0.1, 0.99)\n let disabled = false\n\n function shouldConstrain(): boolean {\n if (disabled) return false\n if (!limit.reachedAny(target.get())) return false\n if (!limit.reachedAny(offsetLocation.get())) return false\n return true\n }\n\n function constrain(pointerDown: boolean): void {\n if (!shouldConstrain()) return\n const edge = limit.reachedMin(offsetLocation.get()) ? 'min' : 'max'\n const diffToEdge = mathAbs(limit[edge] - offsetLocation.get())\n const diffToTarget = target.get() - offsetLocation.get()\n const friction = frictionLimit.constrain(diffToEdge / edgeOffsetTolerance)\n\n target.subtract(diffToTarget * friction)\n\n if (!pointerDown && mathAbs(diffToTarget) < pullBackThreshold) {\n target.set(limit.constrain(target.get()))\n scrollBody.useDuration(25).useBaseFriction()\n }\n }\n\n function toggleActive(active: boolean): void {\n disabled = !active\n }\n\n const self: ScrollBoundsType = {\n shouldConstrain,\n constrain,\n toggleActive\n }\n return self\n}\n","import { Limit, LimitType } from './Limit'\nimport { Vector1DType } from './Vector1d'\n\nexport type ScrollLooperType = {\n loop: (direction: number) => void\n}\n\nexport function ScrollLooper(\n contentSize: number,\n limit: LimitType,\n offsetLocation: Vector1DType,\n vectors: Vector1DType[]\n): ScrollLooperType {\n const jointSafety = 0.1\n const min = limit.min + jointSafety\n const max = limit.max + jointSafety\n const { reachedMin, reachedMax } = Limit(min, max)\n\n function shouldLoop(direction: number): boolean {\n if (direction === 1) return reachedMax(offsetLocation.get())\n if (direction === -1) return reachedMin(offsetLocation.get())\n return false\n }\n\n function loop(direction: number): void {\n if (!shouldLoop(direction)) return\n\n const loopDistance = contentSize * (direction * -1)\n vectors.forEach((v) => v.add(loopDistance))\n }\n\n const self: ScrollLooperType = {\n loop\n }\n return self\n}\n","import { LimitType } from './Limit'\nimport { Vector1DType } from './Vector1d'\nimport { arrayLast, mathAbs, mathSign } from './utils'\n\nexport type TargetType = {\n distance: number\n index: number\n}\n\nexport type ScrollTargetType = {\n byIndex: (target: number, direction: number) => TargetType\n byDistance: (force: number, snap: boolean) => TargetType\n shortcut: (target: number, direction: number) => number\n}\n\nexport function ScrollTarget(\n loop: boolean,\n scrollSnaps: number[],\n contentSize: number,\n limit: LimitType,\n targetVector: Vector1DType\n): ScrollTargetType {\n const { reachedAny, removeOffset, constrain } = limit\n\n function minDistance(distances: number[]): number {\n return distances.concat().sort((a, b) => mathAbs(a) - mathAbs(b))[0]\n }\n\n function findTargetSnap(target: number): TargetType {\n const distance = loop ? removeOffset(target) : constrain(target)\n const ascDiffsToSnaps = scrollSnaps\n .map((snap, index) => ({ diff: shortcut(snap - distance, 0), index }))\n .sort((d1, d2) => mathAbs(d1.diff) - mathAbs(d2.diff))\n\n const { index } = ascDiffsToSnaps[0]\n return { index, distance }\n }\n\n function shortcut(target: number, direction: number): number {\n const targets = [target, target + contentSize, target - contentSize]\n\n if (!loop) return target\n if (!direction) return minDistance(targets)\n\n const matchingTargets = targets.filter((t) => mathSign(t) === direction)\n if (matchingTargets.length) return minDistance(matchingTargets)\n return arrayLast(targets) - contentSize\n }\n\n function byIndex(index: number, direction: number): TargetType {\n const diffToSnap = scrollSnaps[index] - targetVector.get()\n const distance = shortcut(diffToSnap, direction)\n return { index, distance }\n }\n\n function byDistance(distance: number, snap: boolean): TargetType {\n const target = targetVector.get() + distance\n const { index, distance: targetSnapDistance } = findTargetSnap(target)\n const reachedBound = !loop && reachedAny(target)\n\n if (!snap || reachedBound) return { index, distance }\n\n const diffToSnap = scrollSnaps[index] - targetSnapDistance\n const snapDistance = distance + shortcut(diffToSnap, 0)\n\n return { index, distance: snapDistance }\n }\n\n const self: ScrollTargetType = {\n byDistance,\n byIndex,\n shortcut\n }\n return self\n}\n","import { isNumber } from './utils'\n\nexport type Vector1DType = {\n get: () => number\n set: (n: Vector1DType | number) => void\n add: (n: Vector1DType | number) => void\n subtract: (n: Vector1DType | number) => void\n}\n\nexport function Vector1D(initialValue: number): Vector1DType {\n let value = initialValue\n\n function get(): number {\n return value\n }\n\n function set(n: Vector1DType | number): void {\n value = normalizeInput(n)\n }\n\n function add(n: Vector1DType | number): void {\n value += normalizeInput(n)\n }\n\n function subtract(n: Vector1DType | number): void {\n value -= normalizeInput(n)\n }\n\n function normalizeInput(n: Vector1DType | number): number {\n return isNumber(n) ? n : n.get()\n }\n\n const self: Vector1DType = {\n get,\n set,\n add,\n subtract\n }\n return self\n}\n","import { AxisType } from './Axis'\n\nexport type TranslateType = {\n clear: () => void\n to: (target: number) => void\n toggleActive: (active: boolean) => void\n}\n\nexport function Translate(\n axis: AxisType,\n container: HTMLElement\n): TranslateType {\n const translate = axis.scroll === 'x' ? x : y\n const containerStyle = container.style\n let disabled = false\n\n function x(n: number): string {\n return `translate3d(${n}px,0px,0px)`\n }\n\n function y(n: number): string {\n return `translate3d(0px,${n}px,0px)`\n }\n\n function to(target: number): void {\n if (disabled) return\n containerStyle.transform = translate(axis.direction(target))\n }\n\n function toggleActive(active: boolean): void {\n disabled = !active\n }\n\n function clear(): void {\n if (disabled) return\n containerStyle.transform = ''\n if (!container.getAttribute('style')) container.removeAttribute('style')\n }\n\n const self: TranslateType = {\n clear,\n to,\n toggleActive\n }\n return self\n}\n","import { AxisType } from './Axis'\nimport { arrayKeys } from './utils'\nimport { Vector1D, Vector1DType } from './Vector1d'\nimport { Translate, TranslateType } from './Translate'\n\ntype SlideBoundType = {\n start: number\n end: number\n}\n\ntype LoopPointType = {\n loopPoint: number\n index: number\n translate: TranslateType\n slideLocation: Vector1DType\n target: () => number\n}\n\nexport type SlideLooperType = {\n canLoop: () => boolean\n clear: () => void\n loop: () => void\n loopPoints: LoopPointType[]\n}\n\nexport function SlideLooper(\n axis: AxisType,\n viewSize: number,\n contentSize: number,\n slideSizes: number[],\n slideSizesWithGaps: number[],\n snaps: number[],\n scrollSnaps: number[],\n offsetLocation: Vector1DType,\n slides: HTMLElement[]\n): SlideLooperType {\n const roundingSafety = 0.5\n const ascItems = arrayKeys(slideSizesWithGaps)\n const descItems = arrayKeys(slideSizesWithGaps).reverse()\n const loopPoints = startPoints().concat(endPoints())\n\n function removeSlideSizes(indexes: number[], from: number): number {\n return indexes.reduce((a: number, i) => {\n return a - slideSizesWithGaps[i]\n }, from)\n }\n\n function slidesInGap(indexes: number[], gap: number): number[] {\n return indexes.reduce((a: number[], i) => {\n const remainingGap = removeSlideSizes(a, gap)\n return remainingGap > 0 ? a.concat([i]) : a\n }, [])\n }\n\n function findSlideBounds(offset: number): SlideBoundType[] {\n return snaps.map((snap, index) => ({\n start: snap - slideSizes[index] + roundingSafety + offset,\n end: snap + viewSize - roundingSafety + offset\n }))\n }\n\n function findLoopPoints(\n indexes: number[],\n offset: number,\n isEndEdge: boolean\n ): LoopPointType[] {\n const slideBounds = findSlideBounds(offset)\n\n return indexes.map((index) => {\n const initial = isEndEdge ? 0 : -contentSize\n const altered = isEndEdge ? contentSize : 0\n const boundEdge = isEndEdge ? 'end' : 'start'\n const loopPoint = slideBounds[index][boundEdge]\n\n return {\n index,\n loopPoint,\n slideLocation: Vector1D(-1),\n translate: Translate(axis, slides[index]),\n target: () => (offsetLocation.get() > loopPoint ? initial : altered)\n }\n })\n }\n\n function startPoints(): LoopPointType[] {\n const gap = scrollSnaps[0]\n const indexes = slidesInGap(descItems, gap)\n return findLoopPoints(indexes, contentSize, false)\n }\n\n function endPoints(): LoopPointType[] {\n const gap = viewSize - scrollSnaps[0] - 1\n const indexes = slidesInGap(ascItems, gap)\n return findLoopPoints(indexes, -contentSize, true)\n }\n\n function canLoop(): boolean {\n return loopPoints.every(({ index }) => {\n const otherIndexes = ascItems.filter((i) => i !== index)\n return removeSlideSizes(otherIndexes, viewSize) <= 0.1\n })\n }\n\n function loop(): void {\n loopPoints.forEach((loopPoint) => {\n const { target, translate, slideLocation } = loopPoint\n const shiftLocation = target()\n if (shiftLocation === slideLocation.get()) return\n translate.to(shiftLocation)\n slideLocation.set(shiftLocation)\n })\n }\n\n function clear(): void {\n loopPoints.forEach((loopPoint) => loopPoint.translate.clear())\n }\n\n const self: SlideLooperType = {\n canLoop,\n clear,\n loop,\n loopPoints\n }\n return self\n}\n","import { EmblaCarouselType } from './EmblaCarousel'\nimport { EventHandlerType } from './EventHandler'\nimport { isBoolean } from './utils'\n\ntype SlidesHandlerCallbackType = (\n emblaApi: EmblaCarouselType,\n mutations: MutationRecord[]\n) => boolean | void\n\nexport type SlidesHandlerOptionType = boolean | SlidesHandlerCallbackType\n\nexport type SlidesHandlerType = {\n init: (emblaApi: EmblaCarouselType) => void\n destroy: () => void\n}\n\nexport function SlidesHandler(\n container: HTMLElement,\n eventHandler: EventHandlerType,\n watchSlides: SlidesHandlerOptionType\n): SlidesHandlerType {\n let mutationObserver: MutationObserver\n let destroyed = false\n\n function init(emblaApi: EmblaCarouselType): void {\n if (!watchSlides) return\n\n function defaultCallback(mutations: MutationRecord[]): void {\n for (const mutation of mutations) {\n if (mutation.type === 'childList') {\n emblaApi.reInit()\n eventHandler.emit('slidesChanged')\n break\n }\n }\n }\n\n mutationObserver = new MutationObserver((mutations) => {\n if (destroyed) return\n if (isBoolean(watchSlides) || watchSlides(emblaApi, mutations)) {\n defaultCallback(mutations)\n }\n })\n\n mutationObserver.observe(container, { childList: true })\n }\n\n function destroy(): void {\n if (mutationObserver) mutationObserver.disconnect()\n destroyed = true\n }\n\n const self: SlidesHandlerType = {\n init,\n destroy\n }\n return self\n}\n","import { EventHandlerType } from './EventHandler'\nimport { objectKeys } from './utils'\n\ntype IntersectionEntryMapType = {\n [key: number]: IntersectionObserverEntry\n}\n\nexport type SlidesInViewOptionsType = IntersectionObserverInit['threshold']\n\nexport type SlidesInViewType = {\n init: () => void\n destroy: () => void\n get: (inView?: boolean) => number[]\n}\n\nexport function SlidesInView(\n container: HTMLElement,\n slides: HTMLElement[],\n eventHandler: EventHandlerType,\n threshold: SlidesInViewOptionsType\n): SlidesInViewType {\n const intersectionEntryMap: IntersectionEntryMapType = {}\n let inViewCache: number[] | null = null\n let notInViewCache: number[] | null = null\n let intersectionObserver: IntersectionObserver\n let destroyed = false\n\n function init(): void {\n intersectionObserver = new IntersectionObserver(\n (entries) => {\n if (destroyed) return\n\n entries.forEach((entry) => {\n const index = slides.indexOf(entry.target)\n intersectionEntryMap[index] = entry\n })\n\n inViewCache = null\n notInViewCache = null\n eventHandler.emit('slidesInView')\n },\n {\n root: container.parentElement,\n threshold\n }\n )\n\n slides.forEach((slide) => intersectionObserver.observe(slide))\n }\n\n function destroy(): void {\n if (intersectionObserver) intersectionObserver.disconnect()\n destroyed = true\n }\n\n function createInViewList(inView: boolean): number[] {\n return objectKeys(intersectionEntryMap).reduce(\n (list: number[], slideIndex) => {\n const index = parseInt(slideIndex)\n const { isIntersecting } = intersectionEntryMap[index]\n const inViewMatch = inView && isIntersecting\n const notInViewMatch = !inView && !isIntersecting\n\n if (inViewMatch || notInViewMatch) list.push(index)\n return list\n },\n []\n )\n }\n\n function get(inView: boolean = true): number[] {\n if (inView && inViewCache) return inViewCache\n if (!inView && notInViewCache) return notInViewCache\n\n const slideIndexes = createInViewList(inView)\n\n if (inView) inViewCache = slideIndexes\n if (!inView) notInViewCache = slideIndexes\n\n return slideIndexes\n }\n\n const self: SlidesInViewType = {\n init,\n destroy,\n get\n }\n\n return self\n}\n","import { AxisType } from './Axis'\nimport { NodeRectType } from './NodeRects'\nimport { arrayIsLastIndex, arrayLast, mathAbs, WindowType } from './utils'\n\nexport type SlideSizesType = {\n slideSizes: number[]\n slideSizesWithGaps: number[]\n startGap: number\n endGap: number\n}\n\nexport function SlideSizes(\n axis: AxisType,\n containerRect: NodeRectType,\n slideRects: NodeRectType[],\n slides: HTMLElement[],\n readEdgeGap: boolean,\n ownerWindow: WindowType\n): SlideSizesType {\n const { measureSize, startEdge, endEdge } = axis\n const withEdgeGap = slideRects[0] && readEdgeGap\n const startGap = measureStartGap()\n const endGap = measureEndGap()\n const slideSizes = slideRects.map(measureSize)\n const slideSizesWithGaps = measureWithGaps()\n\n function measureStartGap(): number {\n if (!withEdgeGap) return 0\n const slideRect = slideRects[0]\n return mathAbs(containerRect[startEdge] - slideRect[startEdge])\n }\n\n function measureEndGap(): number {\n if (!withEdgeGap) return 0\n const style = ownerWindow.getComputedStyle(arrayLast(slides))\n return parseFloat(style.getPropertyValue(`margin-${endEdge}`))\n }\n\n function measureWithGaps(): number[] {\n return slideRects\n .map((rect, index, rects) => {\n const isFirst = !index\n const isLast = arrayIsLastIndex(rects, index)\n if (isFirst) return slideSizes[index] + startGap\n if (isLast) return slideSizes[index] + endGap\n return rects[index + 1][startEdge] - rect[startEdge]\n })\n .map(mathAbs)\n }\n\n const self: SlideSizesType = {\n slideSizes,\n slideSizesWithGaps,\n startGap,\n endGap\n }\n return self\n}\n","import { AxisType } from './Axis'\nimport { NodeRectType } from './NodeRects'\nimport {\n arrayKeys,\n arrayLast,\n arrayLastIndex,\n isNumber,\n mathAbs\n} from './utils'\n\nexport type SlidesToScrollOptionType = 'auto' | number\n\nexport type SlidesToScrollType = {\n groupSlides: (array: Type[]) => Type[][]\n}\n\nexport function SlidesToScroll(\n axis: AxisType,\n viewSize: number,\n slidesToScroll: SlidesToScrollOptionType,\n loop: boolean,\n containerRect: NodeRectType,\n slideRects: NodeRectType[],\n startGap: number,\n endGap: number,\n pixelTolerance: number\n): SlidesToScrollType {\n const { startEdge, endEdge, direction } = axis\n const groupByNumber = isNumber(slidesToScroll)\n\n function byNumber(array: Type[], groupSize: number): Type[][] {\n return arrayKeys(array)\n .filter((i) => i % groupSize === 0)\n .map((i) => array.slice(i, i + groupSize))\n }\n\n function bySize(array: Type[]): Type[][] {\n if (!array.length) return []\n\n return arrayKeys(array)\n .reduce((groups: number[], rectB, index) => {\n const rectA = arrayLast(groups) || 0\n const isFirst = rectA === 0\n const isLast = rectB === arrayLastIndex(array)\n\n const edgeA = containerRect[startEdge] - slideRects[rectA][startEdge]\n const edgeB = containerRect[startEdge] - slideRects[rectB][endEdge]\n const gapA = !loop && isFirst ? direction(startGap) : 0\n const gapB = !loop && isLast ? direction(endGap) : 0\n const chunkSize = mathAbs(edgeB - gapB - (edgeA + gapA))\n\n if (index && chunkSize > viewSize + pixelTolerance) groups.push(rectB)\n if (isLast) groups.push(array.length)\n return groups\n }, [])\n .map((currentSize, index, groups) => {\n const previousSize = Math.max(groups[index - 1] || 0)\n return array.slice(previousSize, currentSize)\n })\n }\n\n function groupSlides(array: Type[]): Type[][] {\n return groupByNumber ? byNumber(array, slidesToScroll) : bySize(array)\n }\n\n const self: SlidesToScrollType = {\n groupSlides\n }\n return self\n}\n","import { Alignment } from './Alignment'\nimport {\n Animations,\n AnimationsType,\n AnimationsUpdateType,\n AnimationsRenderType\n} from './Animations'\nimport { Axis, AxisType } from './Axis'\nimport { Counter, CounterType } from './Counter'\nimport { DragHandler, DragHandlerType } from './DragHandler'\nimport { DragTracker } from './DragTracker'\nimport { EventHandlerType } from './EventHandler'\nimport { EventStore, EventStoreType } from './EventStore'\nimport { LimitType } from './Limit'\nimport { NodeRectType, NodeRects } from './NodeRects'\nimport { OptionsType } from './Options'\nimport { PercentOfView, PercentOfViewType } from './PercentOfView'\nimport { ResizeHandler, ResizeHandlerType } from './ResizeHandler'\nimport { ScrollBody, ScrollBodyType } from './ScrollBody'\nimport { ScrollBounds, ScrollBoundsType } from './ScrollBounds'\nimport { ScrollContain } from './ScrollContain'\nimport { ScrollLimit } from './ScrollLimit'\nimport { ScrollLooper, ScrollLooperType } from './ScrollLooper'\nimport { ScrollProgress, ScrollProgressType } from './ScrollProgress'\nimport { ScrollSnaps } from './ScrollSnaps'\nimport { SlideRegistry, SlideRegistryType } from './SlideRegistry'\nimport { ScrollTarget, ScrollTargetType } from './ScrollTarget'\nimport { ScrollTo, ScrollToType } from './ScrollTo'\nimport { SlideFocus, SlideFocusType } from './SlideFocus'\nimport { SlideLooper, SlideLooperType } from './SlideLooper'\nimport { SlidesHandler, SlidesHandlerType } from './SlidesHandler'\nimport { SlidesInView, SlidesInViewType } from './SlidesInView'\nimport { SlideSizes } from './SlideSizes'\nimport { SlidesToScroll, SlidesToScrollType } from './SlidesToScroll'\nimport { Translate, TranslateType } from './Translate'\nimport { arrayKeys, arrayLast, arrayLastIndex, WindowType } from './utils'\nimport { Vector1D, Vector1DType } from './Vector1d'\n\nexport type EngineType = {\n ownerDocument: Document\n ownerWindow: WindowType\n eventHandler: EventHandlerType\n axis: AxisType\n animation: AnimationsType\n scrollBounds: ScrollBoundsType\n scrollLooper: ScrollLooperType\n scrollProgress: ScrollProgressType\n index: CounterType\n indexPrevious: CounterType\n limit: LimitType\n location: Vector1DType\n offsetLocation: Vector1DType\n options: OptionsType\n percentOfView: PercentOfViewType\n scrollBody: ScrollBodyType\n dragHandler: DragHandlerType\n eventStore: EventStoreType\n slideLooper: SlideLooperType\n slidesInView: SlidesInViewType\n slidesToScroll: SlidesToScrollType\n target: Vector1DType\n translate: TranslateType\n resizeHandler: ResizeHandlerType\n slidesHandler: SlidesHandlerType\n scrollTo: ScrollToType\n scrollTarget: ScrollTargetType\n scrollSnapList: number[]\n scrollSnaps: number[]\n slideIndexes: number[]\n slideFocus: SlideFocusType\n slideRegistry: SlideRegistryType['slideRegistry']\n containerRect: NodeRectType\n slideRects: NodeRectType[]\n}\n\nexport function Engine(\n root: HTMLElement,\n container: HTMLElement,\n slides: HTMLElement[],\n ownerDocument: Document,\n ownerWindow: WindowType,\n options: OptionsType,\n eventHandler: EventHandlerType\n): EngineType {\n // Options\n const {\n align,\n axis: scrollAxis,\n direction,\n startIndex,\n loop,\n duration,\n dragFree,\n dragThreshold,\n inViewThreshold,\n slidesToScroll: groupSlides,\n skipSnaps,\n containScroll,\n watchResize,\n watchSlides,\n watchDrag\n } = options\n\n // Measurements\n const pixelTolerance = 2\n const nodeRects = NodeRects()\n const containerRect = nodeRects.measure(container)\n const slideRects = slides.map(nodeRects.measure)\n const axis = Axis(scrollAxis, direction)\n const viewSize = axis.measureSize(containerRect)\n const percentOfView = PercentOfView(viewSize)\n const alignment = Alignment(align, viewSize)\n const containSnaps = !loop && !!containScroll\n const readEdgeGap = loop || !!containScroll\n const { slideSizes, slideSizesWithGaps, startGap, endGap } = SlideSizes(\n axis,\n containerRect,\n slideRects,\n slides,\n readEdgeGap,\n ownerWindow\n )\n const slidesToScroll = SlidesToScroll(\n axis,\n viewSize,\n groupSlides,\n loop,\n containerRect,\n slideRects,\n startGap,\n endGap,\n pixelTolerance\n )\n const { snaps, snapsAligned } = ScrollSnaps(\n axis,\n alignment,\n containerRect,\n slideRects,\n slidesToScroll\n )\n const contentSize = -arrayLast(snaps) + arrayLast(slideSizesWithGaps)\n const { snapsContained, scrollContainLimit } = ScrollContain(\n viewSize,\n contentSize,\n snapsAligned,\n containScroll,\n pixelTolerance\n )\n const scrollSnaps = containSnaps ? snapsContained : snapsAligned\n const { limit } = ScrollLimit(contentSize, scrollSnaps, loop)\n\n // Indexes\n const index = Counter(arrayLastIndex(scrollSnaps), startIndex, loop)\n const indexPrevious = index.clone()\n const slideIndexes = arrayKeys(slides)\n\n // Animation\n const update: AnimationsUpdateType = ({\n dragHandler,\n scrollBody,\n scrollBounds,\n options: { loop }\n }) => {\n if (!loop) scrollBounds.constrain(dragHandler.pointerDown())\n scrollBody.seek()\n }\n\n const render: AnimationsRenderType = (\n {\n scrollBody,\n translate,\n location,\n offsetLocation,\n scrollLooper,\n slideLooper,\n dragHandler,\n animation,\n eventHandler,\n scrollBounds,\n options: { loop }\n },\n lagOffset\n ) => {\n const velocity = scrollBody.velocity()\n const shouldSettle = scrollBody.settled()\n const withinBounds = !scrollBounds.shouldConstrain()\n const hasSettled = loop ? shouldSettle : shouldSettle && withinBounds\n\n if (hasSettled && !dragHandler.pointerDown()) {\n animation.stop()\n eventHandler.emit('settle')\n }\n if (!hasSettled) eventHandler.emit('scroll')\n\n offsetLocation.set(location.get() - velocity + velocity * lagOffset)\n\n if (loop) {\n scrollLooper.loop(scrollBody.direction())\n slideLooper.loop()\n }\n\n translate.to(offsetLocation.get())\n }\n const animation = Animations(\n ownerDocument,\n ownerWindow,\n () => update(engine),\n (lagOffset: number) => render(engine, lagOffset)\n )\n\n // Shared\n const friction = 0.68\n const startLocation = scrollSnaps[index.get()]\n const location = Vector1D(startLocation)\n const offsetLocation = Vector1D(startLocation)\n const target = Vector1D(startLocation)\n const scrollBody = ScrollBody(\n location,\n offsetLocation,\n target,\n duration,\n friction\n )\n const scrollTarget = ScrollTarget(\n loop,\n scrollSnaps,\n contentSize,\n limit,\n target\n )\n const scrollTo = ScrollTo(\n animation,\n index,\n indexPrevious,\n scrollBody,\n scrollTarget,\n target,\n eventHandler\n )\n const scrollProgress = ScrollProgress(limit)\n const eventStore = EventStore()\n const slidesInView = SlidesInView(\n container,\n slides,\n eventHandler,\n inViewThreshold\n )\n const { slideRegistry } = SlideRegistry(\n containSnaps,\n containScroll,\n scrollSnaps,\n scrollContainLimit,\n slidesToScroll,\n slideIndexes\n )\n const slideFocus = SlideFocus(\n root,\n slides,\n slideRegistry,\n scrollTo,\n scrollBody,\n eventStore,\n eventHandler\n )\n\n // Engine\n const engine: EngineType = {\n ownerDocument,\n ownerWindow,\n eventHandler,\n containerRect,\n slideRects,\n animation,\n axis,\n dragHandler: DragHandler(\n axis,\n root,\n ownerDocument,\n ownerWindow,\n target,\n DragTracker(axis, ownerWindow),\n location,\n animation,\n scrollTo,\n scrollBody,\n scrollTarget,\n index,\n eventHandler,\n percentOfView,\n dragFree,\n dragThreshold,\n skipSnaps,\n friction,\n watchDrag\n ),\n eventStore,\n percentOfView,\n index,\n indexPrevious,\n limit,\n location,\n offsetLocation,\n options,\n resizeHandler: ResizeHandler(\n container,\n eventHandler,\n ownerWindow,\n slides,\n axis,\n watchResize,\n nodeRects\n ),\n scrollBody,\n scrollBounds: ScrollBounds(\n limit,\n offsetLocation,\n target,\n scrollBody,\n percentOfView\n ),\n scrollLooper: ScrollLooper(contentSize, limit, offsetLocation, [\n location,\n offsetLocation,\n target\n ]),\n scrollProgress,\n scrollSnapList: scrollSnaps.map(scrollProgress.get),\n scrollSnaps,\n scrollTarget,\n scrollTo,\n slideLooper: SlideLooper(\n axis,\n viewSize,\n contentSize,\n slideSizes,\n slideSizesWithGaps,\n snaps,\n scrollSnaps,\n offsetLocation,\n slides\n ),\n slideFocus,\n slidesHandler: SlidesHandler(container, eventHandler, watchSlides),\n slidesInView,\n slideIndexes,\n slideRegistry,\n slidesToScroll,\n target,\n translate: Translate(axis, container)\n }\n\n return engine\n}\n","export type NodeRectType = {\n top: number\n right: number\n bottom: number\n left: number\n width: number\n height: number\n}\n\nexport type NodeRectsType = {\n measure: (node: HTMLElement) => NodeRectType\n}\n\nexport function NodeRects(): NodeRectsType {\n function measure(node: HTMLElement): NodeRectType {\n const { offsetTop, offsetLeft, offsetWidth, offsetHeight } = node\n const offset: NodeRectType = {\n top: offsetTop,\n right: offsetLeft + offsetWidth,\n bottom: offsetTop + offsetHeight,\n left: offsetLeft,\n width: offsetWidth,\n height: offsetHeight\n }\n\n return offset\n }\n\n const self: NodeRectsType = {\n measure\n }\n return self\n}\n","export type PercentOfViewType = {\n measure: (n: number) => number\n}\n\nexport function PercentOfView(viewSize: number): PercentOfViewType {\n function measure(n: number): number {\n return viewSize * (n / 100)\n }\n\n const self: PercentOfViewType = {\n measure\n }\n return self\n}\n","import { AlignmentType } from './Alignment'\nimport { AxisType } from './Axis'\nimport { NodeRectType } from './NodeRects'\nimport { SlidesToScrollType } from './SlidesToScroll'\nimport { arrayLast, mathAbs } from './utils'\n\nexport type ScrollSnapsType = {\n snaps: number[]\n snapsAligned: number[]\n}\n\nexport function ScrollSnaps(\n axis: AxisType,\n alignment: AlignmentType,\n containerRect: NodeRectType,\n slideRects: NodeRectType[],\n slidesToScroll: SlidesToScrollType\n): ScrollSnapsType {\n const { startEdge, endEdge } = axis\n const { groupSlides } = slidesToScroll\n const alignments = measureSizes().map(alignment.measure)\n const snaps = measureUnaligned()\n const snapsAligned = measureAligned()\n\n function measureSizes(): number[] {\n return groupSlides(slideRects)\n .map((rects) => arrayLast(rects)[endEdge] - rects[0][startEdge])\n .map(mathAbs)\n }\n\n function measureUnaligned(): number[] {\n return slideRects\n .map((rect) => containerRect[startEdge] - rect[startEdge])\n .map((snap) => -mathAbs(snap))\n }\n\n function measureAligned(): number[] {\n return groupSlides(snaps)\n .map((g) => g[0])\n .map((snap, index) => snap + alignments[index])\n }\n\n const self: ScrollSnapsType = {\n snaps,\n snapsAligned\n }\n return self\n}\n","import { Limit, LimitType } from './Limit'\nimport { arrayIsLastIndex, arrayLast, deltaAbs } from './utils'\n\nexport type ScrollContainOptionType = false | 'trimSnaps' | 'keepSnaps'\n\nexport type ScrollContainType = {\n snapsContained: number[]\n scrollContainLimit: LimitType\n}\n\nexport function ScrollContain(\n viewSize: number,\n contentSize: number,\n snapsAligned: number[],\n containScroll: ScrollContainOptionType,\n pixelTolerance: number\n): ScrollContainType {\n const scrollBounds = Limit(-contentSize + viewSize, 0)\n const snapsBounded = measureBounded()\n const scrollContainLimit = findScrollContainLimit()\n const snapsContained = measureContained()\n\n function usePixelTolerance(bound: number, snap: number): boolean {\n return deltaAbs(bound, snap) < 1\n }\n\n function findScrollContainLimit(): LimitType {\n const startSnap = snapsBounded[0]\n const endSnap = arrayLast(snapsBounded)\n const min = snapsBounded.lastIndexOf(startSnap)\n const max = snapsBounded.indexOf(endSnap) + 1\n return Limit(min, max)\n }\n\n function measureBounded(): number[] {\n return snapsAligned\n .map((snapAligned, index) => {\n const { min, max } = scrollBounds\n const snap = scrollBounds.constrain(snapAligned)\n const isFirst = !index\n const isLast = arrayIsLastIndex(snapsAligned, index)\n if (isFirst) return max\n if (isLast) return min\n if (usePixelTolerance(min, snap)) return min\n if (usePixelTolerance(max, snap)) return max\n return snap\n })\n .map((scrollBound) => parseFloat(scrollBound.toFixed(3)))\n }\n\n function measureContained(): number[] {\n if (contentSize <= viewSize + pixelTolerance) return [scrollBounds.max]\n if (containScroll === 'keepSnaps') return snapsBounded\n const { min, max } = scrollContainLimit\n return snapsBounded.slice(min, max)\n }\n\n const self: ScrollContainType = {\n snapsContained,\n scrollContainLimit\n }\n return self\n}\n","import { Limit, LimitType } from './Limit'\nimport { arrayLast } from './utils'\n\nexport type ScrollLimitType = {\n limit: LimitType\n}\n\nexport function ScrollLimit(\n contentSize: number,\n scrollSnaps: number[],\n loop: boolean\n): ScrollLimitType {\n const max = scrollSnaps[0]\n const min = loop ? max - contentSize : arrayLast(scrollSnaps)\n const limit = Limit(min, max)\n\n const self: ScrollLimitType = {\n limit\n }\n return self\n}\n","import { mathSign, mathAbs } from './utils'\nimport { Vector1DType } from './Vector1d'\n\nexport type ScrollBodyType = {\n direction: () => number\n duration: () => number\n velocity: () => number\n seek: () => ScrollBodyType\n settled: () => boolean\n useBaseFriction: () => ScrollBodyType\n useBaseDuration: () => ScrollBodyType\n useFriction: (n: number) => ScrollBodyType\n useDuration: (n: number) => ScrollBodyType\n}\n\nexport function ScrollBody(\n location: Vector1DType,\n offsetLocation: Vector1DType,\n target: Vector1DType,\n baseDuration: number,\n baseFriction: number\n): ScrollBodyType {\n let bodyVelocity = 0\n let scrollDirection = 0\n let scrollDuration = baseDuration\n let scrollFriction = baseFriction\n let rawLocation = location.get()\n let rawLocationPrevious = 0\n\n function seek(): ScrollBodyType {\n const diff = target.get() - location.get()\n const isInstant = !scrollDuration\n let directionDiff = 0\n\n if (isInstant) {\n bodyVelocity = 0\n location.set(target)\n\n directionDiff = diff\n } else {\n bodyVelocity += diff / scrollDuration\n bodyVelocity *= scrollFriction\n rawLocation += bodyVelocity\n location.add(bodyVelocity)\n\n directionDiff = rawLocation - rawLocationPrevious\n }\n\n scrollDirection = mathSign(directionDiff)\n rawLocationPrevious = rawLocation\n return self\n }\n\n function settled(): boolean {\n const diff = target.get() - offsetLocation.get()\n return mathAbs(diff) < 0.001\n }\n\n function duration(): number {\n return scrollDuration\n }\n\n function direction(): number {\n return scrollDirection\n }\n\n function velocity(): number {\n return bodyVelocity\n }\n\n function useBaseDuration(): ScrollBodyType {\n return useDuration(baseDuration)\n }\n\n function useBaseFriction(): ScrollBodyType {\n return useFriction(baseFriction)\n }\n\n function useDuration(n: number): ScrollBodyType {\n scrollDuration = n\n return self\n }\n\n function useFriction(n: number): ScrollBodyType {\n scrollFriction = n\n return self\n }\n\n const self: ScrollBodyType = {\n direction,\n duration,\n velocity,\n seek,\n settled,\n useBaseFriction,\n useBaseDuration,\n useFriction,\n useDuration\n }\n return self\n}\n","import { AnimationsType } from './Animations'\nimport { CounterType } from './Counter'\nimport { EventHandlerType } from './EventHandler'\nimport { ScrollBodyType } from './ScrollBody'\nimport { ScrollTargetType, TargetType } from './ScrollTarget'\nimport { Vector1DType } from './Vector1d'\n\nexport type ScrollToType = {\n distance: (n: number, snap: boolean) => void\n index: (n: number, direction: number) => void\n}\n\nexport function ScrollTo(\n animation: AnimationsType,\n indexCurrent: CounterType,\n indexPrevious: CounterType,\n scrollBody: ScrollBodyType,\n scrollTarget: ScrollTargetType,\n targetVector: Vector1DType,\n eventHandler: EventHandlerType\n): ScrollToType {\n function scrollTo(target: TargetType): void {\n const distanceDiff = target.distance\n const indexDiff = target.index !== indexCurrent.get()\n\n targetVector.add(distanceDiff)\n\n if (distanceDiff) {\n if (scrollBody.duration()) {\n animation.start()\n } else {\n animation.update()\n animation.render(1)\n animation.update()\n }\n }\n\n if (indexDiff) {\n indexPrevious.set(indexCurrent.get())\n indexCurrent.set(target.index)\n eventHandler.emit('select')\n }\n }\n\n function distance(n: number, snap: boolean): void {\n const target = scrollTarget.byDistance(n, snap)\n scrollTo(target)\n }\n\n function index(n: number, direction: number): void {\n const targetIndex = indexCurrent.clone().set(n)\n const target = scrollTarget.byIndex(targetIndex.get(), direction)\n scrollTo(target)\n }\n\n const self: ScrollToType = {\n distance,\n index\n }\n return self\n}\n","import { LimitType } from './Limit'\n\nexport type ScrollProgressType = {\n get: (n: number) => number\n}\n\nexport function ScrollProgress(limit: LimitType): ScrollProgressType {\n const { max, length } = limit\n\n function get(n: number): number {\n const currentLocation = n - max\n return length ? currentLocation / -length : 0\n }\n\n const self: ScrollProgressType = {\n get\n }\n return self\n}\n","import { LimitType } from './Limit'\nimport { ScrollContainOptionType } from './ScrollContain'\nimport { SlidesToScrollType } from './SlidesToScroll'\nimport {\n arrayFromNumber,\n arrayIsLastIndex,\n arrayLast,\n arrayLastIndex\n} from './utils'\n\nexport type SlideRegistryType = {\n slideRegistry: number[][]\n}\n\nexport function SlideRegistry(\n containSnaps: boolean,\n containScroll: ScrollContainOptionType,\n scrollSnaps: number[],\n scrollContainLimit: LimitType,\n slidesToScroll: SlidesToScrollType,\n slideIndexes: number[]\n): SlideRegistryType {\n const { groupSlides } = slidesToScroll\n const { min, max } = scrollContainLimit\n const slideRegistry = createSlideRegistry()\n\n function createSlideRegistry(): number[][] {\n const groupedSlideIndexes = groupSlides(slideIndexes)\n const doNotContain = !containSnaps || containScroll === 'keepSnaps'\n\n if (scrollSnaps.length === 1) return [slideIndexes]\n if (doNotContain) return groupedSlideIndexes\n\n return groupedSlideIndexes.slice(min, max).map((group, index, groups) => {\n const isFirst = !index\n const isLast = arrayIsLastIndex(groups, index)\n\n if (isFirst) {\n const range = arrayLast(groups[0]) + 1\n return arrayFromNumber(range)\n }\n if (isLast) {\n const range = arrayLastIndex(slideIndexes) - arrayLast(groups)[0] + 1\n return arrayFromNumber(range, arrayLast(groups)[0])\n }\n return group\n })\n }\n\n const self: SlideRegistryType = {\n slideRegistry\n }\n return self\n}\n","import { EventHandlerType } from './EventHandler'\nimport { EventStoreType } from './EventStore'\nimport { ScrollBodyType } from './ScrollBody'\nimport { ScrollToType } from './ScrollTo'\nimport { SlideRegistryType } from './SlideRegistry'\nimport { isNumber } from './utils'\n\nexport type SlideFocusType = {\n init: () => void\n}\n\nexport function SlideFocus(\n root: HTMLElement,\n slides: HTMLElement[],\n slideRegistry: SlideRegistryType['slideRegistry'],\n scrollTo: ScrollToType,\n scrollBody: ScrollBodyType,\n eventStore: EventStoreType,\n eventHandler: EventHandlerType\n): SlideFocusType {\n let lastTabPressTime = 0\n\n function init(): void {\n eventStore.add(document, 'keydown', registerTabPress, false)\n slides.forEach(addSlideFocusEvent)\n }\n\n function registerTabPress(event: KeyboardEvent): void {\n if (event.code === 'Tab') lastTabPressTime = new Date().getTime()\n }\n\n function addSlideFocusEvent(slide: HTMLElement): void {\n const focus = (): void => {\n const nowTime = new Date().getTime()\n const diffTime = nowTime - lastTabPressTime\n\n if (diffTime > 10) return\n\n root.scrollLeft = 0\n const index = slides.indexOf(slide)\n const group = slideRegistry.findIndex((group) => group.includes(index))\n\n if (!isNumber(group)) return\n\n scrollBody.useDuration(0)\n scrollTo.index(group, 0)\n eventHandler.emit('slideFocus')\n }\n\n eventStore.add(slide, 'focus', focus, {\n passive: true,\n capture: true\n })\n }\n\n const self: SlideFocusType = {\n init\n }\n return self\n}\n","import { AlignmentOptionType } from './Alignment'\nimport { AxisDirectionOptionType, AxisOptionType } from './Axis'\nimport { SlidesToScrollOptionType } from './SlidesToScroll'\nimport { ScrollContainOptionType } from './ScrollContain'\nimport { DragHandlerOptionType } from './DragHandler'\nimport { ResizeHandlerOptionType } from './ResizeHandler'\nimport { SlidesHandlerOptionType } from './SlidesHandler'\nimport { SlidesInViewOptionsType } from './SlidesInView'\n\nexport type LooseOptionsType = {\n [key: string]: unknown\n}\n\nexport type CreateOptionsType = Type & {\n active: boolean\n breakpoints: {\n [key: string]: Omit>, 'breakpoints'>\n }\n}\n\nexport type OptionsType = CreateOptionsType<{\n align: AlignmentOptionType\n axis: AxisOptionType\n container: string | HTMLElement | null\n slides: string | HTMLElement[] | NodeListOf | null\n containScroll: ScrollContainOptionType\n direction: AxisDirectionOptionType\n slidesToScroll: SlidesToScrollOptionType\n dragFree: boolean\n dragThreshold: number\n inViewThreshold: SlidesInViewOptionsType\n loop: boolean\n skipSnaps: boolean\n duration: number\n startIndex: number\n watchDrag: DragHandlerOptionType\n watchResize: ResizeHandlerOptionType\n watchSlides: SlidesHandlerOptionType\n}>\n\nexport const defaultOptions: OptionsType = {\n align: 'center',\n axis: 'x',\n container: null,\n slides: null,\n containScroll: 'trimSnaps',\n direction: 'ltr',\n slidesToScroll: 1,\n inViewThreshold: 0,\n breakpoints: {},\n dragFree: false,\n dragThreshold: 10,\n loop: false,\n skipSnaps: false,\n duration: 25,\n startIndex: 0,\n active: true,\n watchDrag: true,\n watchResize: true,\n watchSlides: true\n}\n\nexport type EmblaOptionsType = Partial\n","import { LooseOptionsType, CreateOptionsType } from './Options'\nimport { objectKeys, objectsMergeDeep, WindowType } from './utils'\n\ntype OptionsType = Partial>\n\nexport type OptionsHandlerType = {\n mergeOptions: (\n optionsA: TypeA,\n optionsB?: TypeB\n ) => TypeA\n optionsAtMedia: (options: Type) => Type\n optionsMediaQueries: (optionsList: OptionsType[]) => MediaQueryList[]\n}\n\nexport function OptionsHandler(ownerWindow: WindowType): OptionsHandlerType {\n function mergeOptions(\n optionsA: TypeA,\n optionsB?: TypeB\n ): TypeA {\n return objectsMergeDeep(optionsA, optionsB || {})\n }\n\n function optionsAtMedia(options: Type): Type {\n const optionsAtMedia = options.breakpoints || {}\n const matchedMediaOptions = objectKeys(optionsAtMedia)\n .filter((media) => ownerWindow.matchMedia(media).matches)\n .map((media) => optionsAtMedia[media])\n .reduce((a, mediaOption) => mergeOptions(a, mediaOption), {})\n\n return mergeOptions(options, matchedMediaOptions)\n }\n\n function optionsMediaQueries(optionsList: OptionsType[]): MediaQueryList[] {\n return optionsList\n .map((options) => objectKeys(options.breakpoints || {}))\n .reduce((acc, mediaQueries) => acc.concat(mediaQueries), [])\n .map(ownerWindow.matchMedia)\n }\n\n const self: OptionsHandlerType = {\n mergeOptions,\n optionsAtMedia,\n optionsMediaQueries\n }\n return self\n}\n","import { Engine, EngineType } from './Engine'\nimport { EventStore } from './EventStore'\nimport { EventHandler, EventHandlerType } from './EventHandler'\nimport { defaultOptions, EmblaOptionsType, OptionsType } from './Options'\nimport { OptionsHandler } from './OptionsHandler'\nimport { PluginsHandler } from './PluginsHandler'\nimport { EmblaPluginsType, EmblaPluginType } from './Plugins'\nimport { isString, WindowType } from './utils'\n\nexport type EmblaCarouselType = {\n canScrollNext: () => boolean\n canScrollPrev: () => boolean\n containerNode: () => HTMLElement\n internalEngine: () => EngineType\n destroy: () => void\n off: EventHandlerType['off']\n on: EventHandlerType['on']\n emit: EventHandlerType['emit']\n plugins: () => EmblaPluginsType\n previousScrollSnap: () => number\n reInit: (options?: EmblaOptionsType, plugins?: EmblaPluginType[]) => void\n rootNode: () => HTMLElement\n scrollNext: (jump?: boolean) => void\n scrollPrev: (jump?: boolean) => void\n scrollProgress: () => number\n scrollSnapList: () => number[]\n scrollTo: (index: number, jump?: boolean) => void\n selectedScrollSnap: () => number\n slideNodes: () => HTMLElement[]\n slidesInView: () => number[]\n slidesNotInView: () => number[]\n}\n\nfunction EmblaCarousel(\n root: HTMLElement,\n userOptions?: EmblaOptionsType,\n userPlugins?: EmblaPluginType[]\n): EmblaCarouselType {\n const ownerDocument = root.ownerDocument\n const ownerWindow = ownerDocument.defaultView\n const optionsHandler = OptionsHandler(ownerWindow)\n const pluginsHandler = PluginsHandler(optionsHandler)\n const mediaHandlers = EventStore()\n const eventHandler = EventHandler()\n const { mergeOptions, optionsAtMedia, optionsMediaQueries } = optionsHandler\n const { on, off, emit } = eventHandler\n const reInit = reActivate\n\n let destroyed = false\n let engine: EngineType\n let optionsBase = mergeOptions(defaultOptions, EmblaCarousel.globalOptions)\n let options = mergeOptions(optionsBase)\n let pluginList: EmblaPluginType[] = []\n let pluginApis: EmblaPluginsType\n\n let container: HTMLElement\n let slides: HTMLElement[]\n\n function storeElements(): void {\n const { container: userContainer, slides: userSlides } = options\n\n const customContainer = isString(userContainer)\n ? root.querySelector(userContainer)\n : userContainer\n container = (customContainer || root.children[0])\n\n const customSlides = isString(userSlides)\n ? container.querySelectorAll(userSlides)\n : userSlides\n slides = [].slice.call(customSlides || container.children)\n }\n\n function createEngine(options: OptionsType): EngineType {\n const engine = Engine(\n root,\n container,\n slides,\n ownerDocument,\n ownerWindow,\n options,\n eventHandler\n )\n\n if (options.loop && !engine.slideLooper.canLoop()) {\n const optionsWithoutLoop = Object.assign({}, options, { loop: false })\n return createEngine(optionsWithoutLoop)\n }\n return engine\n }\n\n function activate(\n withOptions?: EmblaOptionsType,\n withPlugins?: EmblaPluginType[]\n ): void {\n if (destroyed) return\n\n optionsBase = mergeOptions(optionsBase, withOptions)\n options = optionsAtMedia(optionsBase)\n pluginList = withPlugins || pluginList\n\n storeElements()\n\n engine = createEngine(options)\n\n optionsMediaQueries([\n optionsBase,\n ...pluginList.map(({ options }) => options)\n ]).forEach((query) => mediaHandlers.add(query, 'change', reActivate))\n\n if (!options.active) return\n\n engine.translate.to(engine.location.get())\n engine.animation.init()\n engine.slidesInView.init()\n engine.slideFocus.init()\n engine.eventHandler.init(self)\n engine.resizeHandler.init(self)\n engine.slidesHandler.init(self)\n\n if (engine.options.loop) engine.slideLooper.loop()\n if (container.offsetParent && slides.length) engine.dragHandler.init(self)\n\n pluginApis = pluginsHandler.init(self, pluginList)\n }\n\n function reActivate(\n withOptions?: EmblaOptionsType,\n withPlugins?: EmblaPluginType[]\n ): void {\n const startIndex = selectedScrollSnap()\n deActivate()\n activate(mergeOptions({ startIndex }, withOptions), withPlugins)\n eventHandler.emit('reInit')\n }\n\n function deActivate(): void {\n engine.dragHandler.destroy()\n engine.eventStore.clear()\n engine.translate.clear()\n engine.slideLooper.clear()\n engine.resizeHandler.destroy()\n engine.slidesHandler.destroy()\n engine.slidesInView.destroy()\n engine.animation.destroy()\n pluginsHandler.destroy()\n mediaHandlers.clear()\n }\n\n function destroy(): void {\n if (destroyed) return\n destroyed = true\n mediaHandlers.clear()\n deActivate()\n eventHandler.emit('destroy')\n eventHandler.clear()\n }\n\n function scrollTo(index: number, jump?: boolean, direction?: number): void {\n if (!options.active || destroyed) return\n engine.scrollBody\n .useBaseFriction()\n .useDuration(jump === true ? 0 : options.duration)\n engine.scrollTo.index(index, direction || 0)\n }\n\n function scrollNext(jump?: boolean): void {\n const next = engine.index.add(1).get()\n scrollTo(next, jump, -1)\n }\n\n function scrollPrev(jump?: boolean): void {\n const prev = engine.index.add(-1).get()\n scrollTo(prev, jump, 1)\n }\n\n function canScrollNext(): boolean {\n const next = engine.index.add(1).get()\n return next !== selectedScrollSnap()\n }\n\n function canScrollPrev(): boolean {\n const prev = engine.index.add(-1).get()\n return prev !== selectedScrollSnap()\n }\n\n function scrollSnapList(): number[] {\n return engine.scrollSnapList\n }\n\n function scrollProgress(): number {\n return engine.scrollProgress.get(engine.location.get())\n }\n\n function selectedScrollSnap(): number {\n return engine.index.get()\n }\n\n function previousScrollSnap(): number {\n return engine.indexPrevious.get()\n }\n\n function slidesInView(): number[] {\n return engine.slidesInView.get()\n }\n\n function slidesNotInView(): number[] {\n return engine.slidesInView.get(false)\n }\n\n function plugins(): EmblaPluginsType {\n return pluginApis\n }\n\n function internalEngine(): EngineType {\n return engine\n }\n\n function rootNode(): HTMLElement {\n return root\n }\n\n function containerNode(): HTMLElement {\n return container\n }\n\n function slideNodes(): HTMLElement[] {\n return slides\n }\n\n const self: EmblaCarouselType = {\n canScrollNext,\n canScrollPrev,\n containerNode,\n internalEngine,\n destroy,\n off,\n on,\n emit,\n plugins,\n previousScrollSnap,\n reInit,\n rootNode,\n scrollNext,\n scrollPrev,\n scrollProgress,\n scrollSnapList,\n scrollTo,\n selectedScrollSnap,\n slideNodes,\n slidesInView,\n slidesNotInView\n }\n\n activate(userOptions, userPlugins)\n setTimeout(() => eventHandler.emit('init'), 0)\n return self\n}\n\nEmblaCarousel.globalOptions = undefined\n\nexport default EmblaCarousel\n","import { EmblaCarouselType } from './EmblaCarousel'\nimport { OptionsHandlerType } from './OptionsHandler'\nimport { EmblaPluginsType, EmblaPluginType } from './Plugins'\n\nexport type PluginsHandlerType = {\n init: (\n emblaApi: EmblaCarouselType,\n plugins: EmblaPluginType[]\n ) => EmblaPluginsType\n destroy: () => void\n}\n\nexport function PluginsHandler(\n optionsHandler: OptionsHandlerType\n): PluginsHandlerType {\n let activePlugins: EmblaPluginType[] = []\n\n function init(\n emblaApi: EmblaCarouselType,\n plugins: EmblaPluginType[]\n ): EmblaPluginsType {\n activePlugins = plugins.filter(\n ({ options }) => optionsHandler.optionsAtMedia(options).active !== false\n )\n activePlugins.forEach((plugin) => plugin.init(emblaApi, optionsHandler))\n\n return plugins.reduce(\n (map, plugin) => Object.assign(map, { [plugin.name]: plugin }),\n {}\n )\n }\n\n function destroy(): void {\n activePlugins = activePlugins.filter((plugin) => plugin.destroy())\n }\n\n const self: PluginsHandlerType = {\n init,\n destroy\n }\n return self\n}\n","import { EmblaCarouselType } from './EmblaCarousel'\n\ntype CallbackType = (emblaApi: EmblaCarouselType, evt: EmblaEventType) => void\ntype ListenersType = Partial<{ [key in EmblaEventType]: CallbackType[] }>\n\nexport type EmblaEventType = EmblaEventListType[keyof EmblaEventListType]\n\nexport interface EmblaEventListType {\n init: 'init'\n pointerDown: 'pointerDown'\n pointerUp: 'pointerUp'\n slidesChanged: 'slidesChanged'\n slidesInView: 'slidesInView'\n scroll: 'scroll'\n select: 'select'\n settle: 'settle'\n destroy: 'destroy'\n reInit: 'reInit'\n resize: 'resize'\n slideFocus: 'slideFocus'\n}\n\nexport type EventHandlerType = {\n init: (emblaApi: EmblaCarouselType) => void\n emit: (evt: EmblaEventType) => EventHandlerType\n on: (evt: EmblaEventType, cb: CallbackType) => EventHandlerType\n off: (evt: EmblaEventType, cb: CallbackType) => EventHandlerType\n clear: () => void\n}\n\nexport function EventHandler(): EventHandlerType {\n let listeners: ListenersType = {}\n let api: EmblaCarouselType\n\n function init(emblaApi: EmblaCarouselType): void {\n api = emblaApi\n }\n\n function getListeners(evt: EmblaEventType): CallbackType[] {\n return listeners[evt] || []\n }\n\n function emit(evt: EmblaEventType): EventHandlerType {\n getListeners(evt).forEach((e) => e(api, evt))\n return self\n }\n\n function on(evt: EmblaEventType, cb: CallbackType): EventHandlerType {\n listeners[evt] = getListeners(evt).concat([cb])\n return self\n }\n\n function off(evt: EmblaEventType, cb: CallbackType): EventHandlerType {\n listeners[evt] = getListeners(evt).filter((e) => e !== cb)\n return self\n }\n\n function clear(): void {\n listeners = {}\n }\n\n const self: EventHandlerType = {\n init,\n emit,\n off,\n on,\n clear\n }\n return self\n}\n","import { useRef, useEffect, useState, useCallback } from 'react'\nimport {\n areOptionsEqual,\n arePluginsEqual,\n canUseDOM\n} from 'embla-carousel-reactive-utils'\nimport EmblaCarousel, {\n EmblaCarouselType,\n EmblaOptionsType,\n EmblaPluginType\n} from 'embla-carousel'\n\ntype EmblaViewportRefType = (\n instance: ViewportElement | null\n) => void\n\nexport type UseEmblaCarouselType = [\n EmblaViewportRefType,\n EmblaCarouselType | undefined\n]\n\nfunction useEmblaCarousel(\n options: EmblaOptionsType = {},\n plugins: EmblaPluginType[] = []\n): UseEmblaCarouselType {\n const storedOptions = useRef(options)\n const storedPlugins = useRef(plugins)\n const [emblaApi, setEmblaApi] = useState()\n const [viewport, setViewport] = useState()\n\n const reInit = useCallback(() => {\n if (emblaApi) emblaApi.reInit(storedOptions.current, storedPlugins.current)\n }, [emblaApi])\n\n useEffect(() => {\n if (canUseDOM() && viewport) {\n EmblaCarousel.globalOptions = useEmblaCarousel.globalOptions\n const newEmblaApi = EmblaCarousel(\n viewport,\n storedOptions.current,\n storedPlugins.current\n )\n setEmblaApi(newEmblaApi)\n return () => newEmblaApi.destroy()\n } else {\n setEmblaApi(undefined)\n }\n }, [viewport, setEmblaApi])\n\n useEffect(() => {\n if (areOptionsEqual(storedOptions.current, options)) return\n storedOptions.current = options\n reInit()\n }, [options, reInit])\n\n useEffect(() => {\n if (arePluginsEqual(storedPlugins.current, plugins)) return\n storedPlugins.current = plugins\n reInit()\n }, [plugins, reInit])\n\n return [setViewport, emblaApi]\n}\n\nuseEmblaCarousel.globalOptions = undefined\n\nexport default useEmblaCarousel\n","// Copyright (c) 2013 Pieroxy \n// This work is free. You can redistribute it and/or modify it\n// under the terms of the WTFPL, Version 2\n// For more information see LICENSE.txt or http://www.wtfpl.net/\n//\n// For more information, the home page:\n// http://pieroxy.net/blog/pages/lz-string/testing.html\n//\n// LZ-based compression algorithm, version 1.4.5\nvar LZString = (function() {\n\n// private property\nvar f = String.fromCharCode;\nvar keyStrBase64 = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\";\nvar keyStrUriSafe = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+-$\";\nvar baseReverseDic = {};\n\nfunction getBaseValue(alphabet, character) {\n if (!baseReverseDic[alphabet]) {\n baseReverseDic[alphabet] = {};\n for (var i=0 ; i>> 8;\n buf[i*2+1] = current_value % 256;\n }\n return buf;\n },\n\n //decompress from uint8array (UCS-2 big endian format)\n decompressFromUint8Array:function (compressed) {\n if (compressed===null || compressed===undefined){\n return LZString.decompress(compressed);\n } else {\n var buf=new Array(compressed.length/2); // 2 bytes per character\n for (var i=0, TotalLen=buf.length; i> 1;\n }\n } else {\n value = 1;\n for (i=0 ; i> 1;\n }\n }\n context_enlargeIn--;\n if (context_enlargeIn == 0) {\n context_enlargeIn = Math.pow(2, context_numBits);\n context_numBits++;\n }\n delete context_dictionaryToCreate[context_w];\n } else {\n value = context_dictionary[context_w];\n for (i=0 ; i> 1;\n }\n\n\n }\n context_enlargeIn--;\n if (context_enlargeIn == 0) {\n context_enlargeIn = Math.pow(2, context_numBits);\n context_numBits++;\n }\n // Add wc to the dictionary.\n context_dictionary[context_wc] = context_dictSize++;\n context_w = String(context_c);\n }\n }\n\n // Output the code for w.\n if (context_w !== \"\") {\n if (Object.prototype.hasOwnProperty.call(context_dictionaryToCreate,context_w)) {\n if (context_w.charCodeAt(0)<256) {\n for (i=0 ; i> 1;\n }\n } else {\n value = 1;\n for (i=0 ; i> 1;\n }\n }\n context_enlargeIn--;\n if (context_enlargeIn == 0) {\n context_enlargeIn = Math.pow(2, context_numBits);\n context_numBits++;\n }\n delete context_dictionaryToCreate[context_w];\n } else {\n value = context_dictionary[context_w];\n for (i=0 ; i> 1;\n }\n\n\n }\n context_enlargeIn--;\n if (context_enlargeIn == 0) {\n context_enlargeIn = Math.pow(2, context_numBits);\n context_numBits++;\n }\n }\n\n // Mark the end of the stream\n value = 2;\n for (i=0 ; i> 1;\n }\n\n // Flush the last char\n while (true) {\n context_data_val = (context_data_val << 1);\n if (context_data_position == bitsPerChar-1) {\n context_data.push(getCharFromInt(context_data_val));\n break;\n }\n else context_data_position++;\n }\n return context_data.join('');\n },\n\n decompress: function (compressed) {\n if (compressed == null) return \"\";\n if (compressed == \"\") return null;\n return LZString._decompress(compressed.length, 32768, function(index) { return compressed.charCodeAt(index); });\n },\n\n _decompress: function (length, resetValue, getNextValue) {\n var dictionary = [],\n next,\n enlargeIn = 4,\n dictSize = 4,\n numBits = 3,\n entry = \"\",\n result = [],\n i,\n w,\n bits, resb, maxpower, power,\n c,\n data = {val:getNextValue(0), position:resetValue, index:1};\n\n for (i = 0; i < 3; i += 1) {\n dictionary[i] = i;\n }\n\n bits = 0;\n maxpower = Math.pow(2,2);\n power=1;\n while (power!=maxpower) {\n resb = data.val & data.position;\n data.position >>= 1;\n if (data.position == 0) {\n data.position = resetValue;\n data.val = getNextValue(data.index++);\n }\n bits |= (resb>0 ? 1 : 0) * power;\n power <<= 1;\n }\n\n switch (next = bits) {\n case 0:\n bits = 0;\n maxpower = Math.pow(2,8);\n power=1;\n while (power!=maxpower) {\n resb = data.val & data.position;\n data.position >>= 1;\n if (data.position == 0) {\n data.position = resetValue;\n data.val = getNextValue(data.index++);\n }\n bits |= (resb>0 ? 1 : 0) * power;\n power <<= 1;\n }\n c = f(bits);\n break;\n case 1:\n bits = 0;\n maxpower = Math.pow(2,16);\n power=1;\n while (power!=maxpower) {\n resb = data.val & data.position;\n data.position >>= 1;\n if (data.position == 0) {\n data.position = resetValue;\n data.val = getNextValue(data.index++);\n }\n bits |= (resb>0 ? 1 : 0) * power;\n power <<= 1;\n }\n c = f(bits);\n break;\n case 2:\n return \"\";\n }\n dictionary[3] = c;\n w = c;\n result.push(c);\n while (true) {\n if (data.index > length) {\n return \"\";\n }\n\n bits = 0;\n maxpower = Math.pow(2,numBits);\n power=1;\n while (power!=maxpower) {\n resb = data.val & data.position;\n data.position >>= 1;\n if (data.position == 0) {\n data.position = resetValue;\n data.val = getNextValue(data.index++);\n }\n bits |= (resb>0 ? 1 : 0) * power;\n power <<= 1;\n }\n\n switch (c = bits) {\n case 0:\n bits = 0;\n maxpower = Math.pow(2,8);\n power=1;\n while (power!=maxpower) {\n resb = data.val & data.position;\n data.position >>= 1;\n if (data.position == 0) {\n data.position = resetValue;\n data.val = getNextValue(data.index++);\n }\n bits |= (resb>0 ? 1 : 0) * power;\n power <<= 1;\n }\n\n dictionary[dictSize++] = f(bits);\n c = dictSize-1;\n enlargeIn--;\n break;\n case 1:\n bits = 0;\n maxpower = Math.pow(2,16);\n power=1;\n while (power!=maxpower) {\n resb = data.val & data.position;\n data.position >>= 1;\n if (data.position == 0) {\n data.position = resetValue;\n data.val = getNextValue(data.index++);\n }\n bits |= (resb>0 ? 1 : 0) * power;\n power <<= 1;\n }\n dictionary[dictSize++] = f(bits);\n c = dictSize-1;\n enlargeIn--;\n break;\n case 2:\n return result.join('');\n }\n\n if (enlargeIn == 0) {\n enlargeIn = Math.pow(2, numBits);\n numBits++;\n }\n\n if (dictionary[c]) {\n entry = dictionary[c];\n } else {\n if (c === dictSize) {\n entry = w + w.charAt(0);\n } else {\n return null;\n }\n }\n result.push(entry);\n\n // Add w+entry[0] to the dictionary.\n dictionary[dictSize++] = w + entry.charAt(0);\n enlargeIn--;\n\n w = entry;\n\n if (enlargeIn == 0) {\n enlargeIn = Math.pow(2, numBits);\n numBits++;\n }\n\n }\n }\n};\n return LZString;\n})();\n\nif (typeof define === 'function' && define.amd) {\n define(function () { return LZString; });\n} else if( typeof module !== 'undefined' && module != null ) {\n module.exports = LZString\n} else if( typeof angular !== 'undefined' && angular != null ) {\n angular.module('LZString', [])\n .factory('LZString', function () {\n return LZString;\n });\n}\n","export default __webpack_public_path__ + \"static/maskable-36b9e327abc26d5d02e9350d184a058f.png\";","var map = {\n\t\"./AutoHeight/EmblaCarousel\": [\n\t\t4439,\n\t\t4439\n\t],\n\t\"./AutoHeight/EmblaCarousel.jsx\": [\n\t\t4439,\n\t\t4439\n\t],\n\t\"./AutoHeight/EmblaCarousel.tsx\": [\n\t\t3405,\n\t\t3405\n\t],\n\t\"./AutoScroll/EmblaCarousel\": [\n\t\t2885,\n\t\t2885\n\t],\n\t\"./AutoScroll/EmblaCarousel.jsx\": [\n\t\t2885,\n\t\t2885\n\t],\n\t\"./AutoScroll/EmblaCarousel.tsx\": [\n\t\t6831,\n\t\t6831\n\t],\n\t\"./Autoplay/EmblaCarousel\": [\n\t\t6652,\n\t\t6652\n\t],\n\t\"./Autoplay/EmblaCarousel.jsx\": [\n\t\t6652,\n\t\t6652\n\t],\n\t\"./Autoplay/EmblaCarousel.tsx\": [\n\t\t6158,\n\t\t6158\n\t],\n\t\"./CarouselDefaultEntry\": [\n\t\t5566,\n\t\t5566\n\t],\n\t\"./CarouselDefaultEntry.jsx\": [\n\t\t5566,\n\t\t5566\n\t],\n\t\"./CarouselDefaultEntry.tsx\": [\n\t\t460,\n\t\t460\n\t],\n\t\"./CarouselGenerator/EmblaCarousel\": [\n\t\t4910,\n\t\t4910\n\t],\n\t\"./CarouselGenerator/EmblaCarousel.jsx\": [\n\t\t4910,\n\t\t4910\n\t],\n\t\"./CarouselGenerator/EmblaCarousel.tsx\": [\n\t\t5404,\n\t\t5404\n\t],\n\t\"./CarouselGenerator/EmblaCarouselArrowButtons\": [\n\t\t4720,\n\t\t4720\n\t],\n\t\"./CarouselGenerator/EmblaCarouselArrowButtons.jsx\": [\n\t\t4720,\n\t\t4720\n\t],\n\t\"./CarouselGenerator/EmblaCarouselArrowButtons.tsx\": [\n\t\t2682,\n\t\t2682\n\t],\n\t\"./CarouselGenerator/EmblaCarouselDotButton\": [\n\t\t893,\n\t\t893\n\t],\n\t\"./CarouselGenerator/EmblaCarouselDotButton.jsx\": [\n\t\t893,\n\t\t893\n\t],\n\t\"./CarouselGenerator/EmblaCarouselDotButton.tsx\": [\n\t\t8855,\n\t\t8855\n\t],\n\t\"./CarouselGenerator/EmblaCarouselSelectedSnapDisplay\": [\n\t\t6807,\n\t\t6807\n\t],\n\t\"./CarouselGenerator/EmblaCarouselSelectedSnapDisplay.jsx\": [\n\t\t6807,\n\t\t6807\n\t],\n\t\"./CarouselGenerator/EmblaCarouselSelectedSnapDisplay.tsx\": [\n\t\t9421,\n\t\t9421\n\t],\n\t\"./CarouselIosPickerEntry\": [\n\t\t7700,\n\t\t7700\n\t],\n\t\"./CarouselIosPickerEntry.jsx\": [\n\t\t7700,\n\t\t7700\n\t],\n\t\"./CarouselIosPickerEntry.tsx\": [\n\t\t6,\n\t\t6\n\t],\n\t\"./ClassNames/EmblaCarousel\": [\n\t\t5223,\n\t\t5223\n\t],\n\t\"./ClassNames/EmblaCarousel.jsx\": [\n\t\t5223,\n\t\t5223\n\t],\n\t\"./ClassNames/EmblaCarousel.tsx\": [\n\t\t6429,\n\t\t6429\n\t],\n\t\"./EmblaCarouselArrowButtons\": [\n\t\t1920,\n\t\t1920\n\t],\n\t\"./EmblaCarouselArrowButtons.jsx\": [\n\t\t1920,\n\t\t1920\n\t],\n\t\"./EmblaCarouselArrowButtons.tsx\": [\n\t\t6458,\n\t\t6458\n\t],\n\t\"./EmblaCarouselDotButton\": [\n\t\t6237,\n\t\t6237\n\t],\n\t\"./EmblaCarouselDotButton.jsx\": [\n\t\t6237,\n\t\t6237\n\t],\n\t\"./EmblaCarouselDotButton.tsx\": [\n\t\t5207,\n\t\t5207\n\t],\n\t\"./EmblaCarouselSelectedSnapDisplay\": [\n\t\t6356,\n\t\t3975\n\t],\n\t\"./EmblaCarouselSelectedSnapDisplay.jsx\": [\n\t\t6356,\n\t\t3975\n\t],\n\t\"./EmblaCarouselSelectedSnapDisplay.tsx\": [\n\t\t8394,\n\t\t6013\n\t],\n\t\"./Fade/EmblaCarousel\": [\n\t\t221,\n\t\t221\n\t],\n\t\"./Fade/EmblaCarousel.jsx\": [\n\t\t221,\n\t\t221\n\t],\n\t\"./Fade/EmblaCarousel.tsx\": [\n\t\t8183,\n\t\t8183\n\t],\n\t\"./Footer\": [\n\t\t8728,\n\t\t8728\n\t],\n\t\"./Footer.jsx\": [\n\t\t8728,\n\t\t8728\n\t],\n\t\"./Footer.tsx\": [\n\t\t9474,\n\t\t9474\n\t],\n\t\"./Header\": [\n\t\t5266,\n\t\t5266\n\t],\n\t\"./Header.jsx\": [\n\t\t5266,\n\t\t5266\n\t],\n\t\"./Header.tsx\": [\n\t\t3400,\n\t\t3400\n\t],\n\t\"./InfiniteScroll/EmblaCarousel\": [\n\t\t7032,\n\t\t7032\n\t],\n\t\"./InfiniteScroll/EmblaCarousel.jsx\": [\n\t\t7032,\n\t\t7032\n\t],\n\t\"./InfiniteScroll/EmblaCarousel.tsx\": [\n\t\t8898,\n\t\t8898\n\t],\n\t\"./IosPicker/EmblaCarousel\": [\n\t\t6958,\n\t\t6958\n\t],\n\t\"./IosPicker/EmblaCarousel.jsx\": [\n\t\t6958,\n\t\t6958\n\t],\n\t\"./IosPicker/EmblaCarousel.tsx\": [\n\t\t1852,\n\t\t1852\n\t],\n\t\"./IosPicker/EmblaCarouselIosPickerItem\": [\n\t\t3348,\n\t\t3348\n\t],\n\t\"./IosPicker/EmblaCarouselIosPickerItem.jsx\": [\n\t\t3348,\n\t\t3348\n\t],\n\t\"./IosPicker/EmblaCarouselIosPickerItem.tsx\": [\n\t\t7142,\n\t\t7142\n\t],\n\t\"./LazyLoad/EmblaCarousel\": [\n\t\t1897,\n\t\t1897\n\t],\n\t\"./LazyLoad/EmblaCarousel.jsx\": [\n\t\t1897,\n\t\t1897\n\t],\n\t\"./LazyLoad/EmblaCarousel.tsx\": [\n\t\t8683,\n\t\t8683\n\t],\n\t\"./LazyLoad/EmblaCarouselLazyLoadImage\": [\n\t\t3376,\n\t\t3376\n\t],\n\t\"./LazyLoad/EmblaCarouselLazyLoadImage.jsx\": [\n\t\t3376,\n\t\t3376\n\t],\n\t\"./LazyLoad/EmblaCarouselLazyLoadImage.tsx\": [\n\t\t4618,\n\t\t4618\n\t],\n\t\"./Opacity/EmblaCarousel\": [\n\t\t2260,\n\t\t2260\n\t],\n\t\"./Opacity/EmblaCarousel.jsx\": [\n\t\t2260,\n\t\t2260\n\t],\n\t\"./Opacity/EmblaCarousel.tsx\": [\n\t\t7862,\n\t\t7862\n\t],\n\t\"./Parallax/EmblaCarousel\": [\n\t\t3862,\n\t\t3862\n\t],\n\t\"./Parallax/EmblaCarousel.jsx\": [\n\t\t3862,\n\t\t3862\n\t],\n\t\"./Parallax/EmblaCarousel.tsx\": [\n\t\t9844,\n\t\t9844\n\t],\n\t\"./Progress/EmblaCarousel\": [\n\t\t3146,\n\t\t3146\n\t],\n\t\"./Progress/EmblaCarousel.jsx\": [\n\t\t3146,\n\t\t3146\n\t],\n\t\"./Progress/EmblaCarousel.tsx\": [\n\t\t9360,\n\t\t9360\n\t],\n\t\"./Scale/EmblaCarousel\": [\n\t\t3734,\n\t\t3734\n\t],\n\t\"./Scale/EmblaCarousel.jsx\": [\n\t\t3734,\n\t\t3734\n\t],\n\t\"./Scale/EmblaCarousel.tsx\": [\n\t\t7387,\n\t\t7387\n\t],\n\t\"./Thumbs/EmblaCarousel\": [\n\t\t72,\n\t\t72\n\t],\n\t\"./Thumbs/EmblaCarousel.jsx\": [\n\t\t72,\n\t\t72\n\t],\n\t\"./Thumbs/EmblaCarousel.tsx\": [\n\t\t9122,\n\t\t9122\n\t],\n\t\"./Thumbs/EmblaCarouselThumbsButton\": [\n\t\t2875,\n\t\t2875\n\t],\n\t\"./Thumbs/EmblaCarouselThumbsButton.jsx\": [\n\t\t2875,\n\t\t2875\n\t],\n\t\"./Thumbs/EmblaCarouselThumbsButton.tsx\": [\n\t\t6841,\n\t\t6841\n\t],\n\t\"./index.html\": [\n\t\t8269,\n\t\t8269\n\t]\n};\nfunction webpackAsyncContext(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\treturn Promise.resolve().then(function() {\n\t\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\t\te.code = 'MODULE_NOT_FOUND';\n\t\t\tthrow e;\n\t\t});\n\t}\n\n\tvar ids = map[req], id = ids[0];\n\treturn __webpack_require__.e(ids[1]).then(function() {\n\t\treturn __webpack_require__(id);\n\t});\n}\nwebpackAsyncContext.keys = function() { return Object.keys(map); };\nwebpackAsyncContext.id = 1735;\nmodule.exports = webpackAsyncContext;","var map = {\n\t\"./CarouselDefaultEntry.jsx\": [\n\t\t5566,\n\t\t5566\n\t],\n\t\"./CarouselDefaultEntry.tsx\": [\n\t\t460,\n\t\t460\n\t]\n};\nfunction webpackAsyncContext(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\treturn Promise.resolve().then(function() {\n\t\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\t\te.code = 'MODULE_NOT_FOUND';\n\t\t\tthrow e;\n\t\t});\n\t}\n\n\tvar ids = map[req], id = ids[0];\n\treturn __webpack_require__.e(ids[1]).then(function() {\n\t\treturn __webpack_require__(id);\n\t});\n}\nwebpackAsyncContext.keys = function() { return Object.keys(map); };\nwebpackAsyncContext.id = 7182;\nmodule.exports = webpackAsyncContext;","var map = {\n\t\"./CarouselIosPickerEntry.jsx\": [\n\t\t7700,\n\t\t7700\n\t],\n\t\"./CarouselIosPickerEntry.tsx\": [\n\t\t6,\n\t\t6\n\t]\n};\nfunction webpackAsyncContext(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\treturn Promise.resolve().then(function() {\n\t\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\t\te.code = 'MODULE_NOT_FOUND';\n\t\t\tthrow e;\n\t\t});\n\t}\n\n\tvar ids = map[req], id = ids[0];\n\treturn __webpack_require__.e(ids[1]).then(function() {\n\t\treturn __webpack_require__(id);\n\t});\n}\nwebpackAsyncContext.keys = function() { return Object.keys(map); };\nwebpackAsyncContext.id = 348;\nmodule.exports = webpackAsyncContext;","var map = {\n\t\"./Footer.jsx\": [\n\t\t8728,\n\t\t8728\n\t],\n\t\"./Footer.tsx\": [\n\t\t9474,\n\t\t9474\n\t]\n};\nfunction webpackAsyncContext(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\treturn Promise.resolve().then(function() {\n\t\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\t\te.code = 'MODULE_NOT_FOUND';\n\t\t\tthrow e;\n\t\t});\n\t}\n\n\tvar ids = map[req], id = ids[0];\n\treturn __webpack_require__.e(ids[1]).then(function() {\n\t\treturn __webpack_require__(id);\n\t});\n}\nwebpackAsyncContext.keys = function() { return Object.keys(map); };\nwebpackAsyncContext.id = 2804;\nmodule.exports = webpackAsyncContext;","var map = {\n\t\"./Header.jsx\": [\n\t\t5266,\n\t\t5266\n\t],\n\t\"./Header.tsx\": [\n\t\t3400,\n\t\t3400\n\t]\n};\nfunction webpackAsyncContext(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\treturn Promise.resolve().then(function() {\n\t\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\t\te.code = 'MODULE_NOT_FOUND';\n\t\t\tthrow e;\n\t\t});\n\t}\n\n\tvar ids = map[req], id = ids[0];\n\treturn __webpack_require__.e(ids[1]).then(function() {\n\t\treturn __webpack_require__(id);\n\t});\n}\nwebpackAsyncContext.keys = function() { return Object.keys(map); };\nwebpackAsyncContext.id = 4502;\nmodule.exports = webpackAsyncContext;","var map = {\n\t\"./AutoHeight/EmblaCarousel\": [\n\t\t9361,\n\t\t9361\n\t],\n\t\"./AutoHeight/EmblaCarousel.js\": [\n\t\t9361,\n\t\t9361\n\t],\n\t\"./AutoHeight/EmblaCarousel.ts\": [\n\t\t6827,\n\t\t6827\n\t],\n\t\"./AutoScroll/EmblaCarousel\": [\n\t\t7419,\n\t\t7419\n\t],\n\t\"./AutoScroll/EmblaCarousel.js\": [\n\t\t7419,\n\t\t7419\n\t],\n\t\"./AutoScroll/EmblaCarousel.ts\": [\n\t\t8193,\n\t\t8193\n\t],\n\t\"./AutoScroll/EmblaCarouselAutoScroll\": [\n\t\t3165,\n\t\t3165\n\t],\n\t\"./AutoScroll/EmblaCarouselAutoScroll.js\": [\n\t\t3165,\n\t\t3165\n\t],\n\t\"./AutoScroll/EmblaCarouselAutoScroll.ts\": [\n\t\t8591,\n\t\t8591\n\t],\n\t\"./Autoplay/EmblaCarousel\": [\n\t\t6200,\n\t\t6200\n\t],\n\t\"./Autoplay/EmblaCarousel.js\": [\n\t\t6200,\n\t\t6200\n\t],\n\t\"./Autoplay/EmblaCarousel.ts\": [\n\t\t374,\n\t\t374\n\t],\n\t\"./Autoplay/EmblaCarouselAutoplay\": [\n\t\t3325,\n\t\t3325\n\t],\n\t\"./Autoplay/EmblaCarouselAutoplay.js\": [\n\t\t3325,\n\t\t3325\n\t],\n\t\"./Autoplay/EmblaCarouselAutoplay.ts\": [\n\t\t5743,\n\t\t5743\n\t],\n\t\"./CarouselGenerator/EmblaCarousel\": [\n\t\t6518,\n\t\t6518\n\t],\n\t\"./CarouselGenerator/EmblaCarousel.js\": [\n\t\t6518,\n\t\t6518\n\t],\n\t\"./CarouselGenerator/EmblaCarousel.ts\": [\n\t\t6040,\n\t\t6040\n\t],\n\t\"./CarouselGenerator/EmblaCarouselArrowButtons\": [\n\t\t8692,\n\t\t8692\n\t],\n\t\"./CarouselGenerator/EmblaCarouselArrowButtons.js\": [\n\t\t8692,\n\t\t8692\n\t],\n\t\"./CarouselGenerator/EmblaCarouselArrowButtons.ts\": [\n\t\t9178,\n\t\t9178\n\t],\n\t\"./CarouselGenerator/EmblaCarouselDotButton\": [\n\t\t83,\n\t\t83\n\t],\n\t\"./CarouselGenerator/EmblaCarouselDotButton.js\": [\n\t\t83,\n\t\t83\n\t],\n\t\"./CarouselGenerator/EmblaCarouselDotButton.ts\": [\n\t\t1353,\n\t\t1353\n\t],\n\t\"./CarouselGenerator/EmblaCarouselSelectedSnapDisplay\": [\n\t\t6825,\n\t\t6825\n\t],\n\t\"./CarouselGenerator/EmblaCarouselSelectedSnapDisplay.js\": [\n\t\t6825,\n\t\t6825\n\t],\n\t\"./CarouselGenerator/EmblaCarouselSelectedSnapDisplay.ts\": [\n\t\t5555,\n\t\t5555\n\t],\n\t\"./CarouselGenerator/embla-carousel.html\": [\n\t\t7673,\n\t\t7673\n\t],\n\t\"./CarouselGenerator/slide.html\": [\n\t\t2548,\n\t\t2548\n\t],\n\t\"./ClassNames/EmblaCarousel\": [\n\t\t9105,\n\t\t9105\n\t],\n\t\"./ClassNames/EmblaCarousel.js\": [\n\t\t9105,\n\t\t9105\n\t],\n\t\"./ClassNames/EmblaCarousel.ts\": [\n\t\t4987,\n\t\t4987\n\t],\n\t\"./EmblaCarouselArrowButtons\": [\n\t\t3676,\n\t\t3676\n\t],\n\t\"./EmblaCarouselArrowButtons.js\": [\n\t\t3676,\n\t\t3676\n\t],\n\t\"./EmblaCarouselArrowButtons.ts\": [\n\t\t1650,\n\t\t1650\n\t],\n\t\"./EmblaCarouselDotButton\": [\n\t\t5259,\n\t\t5259\n\t],\n\t\"./EmblaCarouselDotButton.js\": [\n\t\t5259,\n\t\t5259\n\t],\n\t\"./EmblaCarouselDotButton.ts\": [\n\t\t9377,\n\t\t9377\n\t],\n\t\"./Fade/EmblaCarousel\": [\n\t\t8939,\n\t\t8939\n\t],\n\t\"./Fade/EmblaCarousel.js\": [\n\t\t8939,\n\t\t8939\n\t],\n\t\"./Fade/EmblaCarousel.ts\": [\n\t\t6065,\n\t\t6065\n\t],\n\t\"./InfiniteScroll/EmblaCarousel\": [\n\t\t7340,\n\t\t7340\n\t],\n\t\"./InfiniteScroll/EmblaCarousel.js\": [\n\t\t7340,\n\t\t7340\n\t],\n\t\"./InfiniteScroll/EmblaCarousel.ts\": [\n\t\t1618,\n\t\t1618\n\t],\n\t\"./InfiniteScroll/EmblaCarouselInfiniteScroll\": [\n\t\t2709,\n\t\t2709\n\t],\n\t\"./InfiniteScroll/EmblaCarouselInfiniteScroll.js\": [\n\t\t2709,\n\t\t2709\n\t],\n\t\"./InfiniteScroll/EmblaCarouselInfiniteScroll.ts\": [\n\t\t5917,\n\t\t679\n\t],\n\t\"./IosPicker/EmblaCarousel\": [\n\t\t7238,\n\t\t7238\n\t],\n\t\"./IosPicker/EmblaCarousel.js\": [\n\t\t7238,\n\t\t7238\n\t],\n\t\"./IosPicker/EmblaCarousel.ts\": [\n\t\t4824,\n\t\t2443\n\t],\n\t\"./IosPicker/EmblaCarouselIosPicker\": [\n\t\t7787,\n\t\t7787\n\t],\n\t\"./IosPicker/EmblaCarouselIosPicker.js\": [\n\t\t7787,\n\t\t7787\n\t],\n\t\"./IosPicker/EmblaCarouselIosPicker.ts\": [\n\t\t4913,\n\t\t4913\n\t],\n\t\"./LazyLoad/EmblaCarousel\": [\n\t\t7703,\n\t\t7703\n\t],\n\t\"./LazyLoad/EmblaCarousel.js\": [\n\t\t7703,\n\t\t7703\n\t],\n\t\"./LazyLoad/EmblaCarousel.ts\": [\n\t\t6677,\n\t\t6677\n\t],\n\t\"./LazyLoad/EmblaCarouselLazyLoad\": [\n\t\t9157,\n\t\t9157\n\t],\n\t\"./LazyLoad/EmblaCarouselLazyLoad.js\": [\n\t\t9157,\n\t\t9157\n\t],\n\t\"./LazyLoad/EmblaCarouselLazyLoad.ts\": [\n\t\t8071,\n\t\t8071\n\t],\n\t\"./Opacity/EmblaCarousel\": [\n\t\t4776,\n\t\t4776\n\t],\n\t\"./Opacity/EmblaCarousel.js\": [\n\t\t4776,\n\t\t4776\n\t],\n\t\"./Opacity/EmblaCarousel.ts\": [\n\t\t8950,\n\t\t8950\n\t],\n\t\"./Opacity/EmblaCarouselTweenOpacity\": [\n\t\t5804,\n\t\t5804\n\t],\n\t\"./Opacity/EmblaCarouselTweenOpacity.js\": [\n\t\t5804,\n\t\t5804\n\t],\n\t\"./Opacity/EmblaCarouselTweenOpacity.ts\": [\n\t\t6786,\n\t\t6786\n\t],\n\t\"./Parallax/EmblaCarousel\": [\n\t\t3590,\n\t\t3590\n\t],\n\t\"./Parallax/EmblaCarousel.js\": [\n\t\t3590,\n\t\t3590\n\t],\n\t\"./Parallax/EmblaCarousel.ts\": [\n\t\t2443,\n\t\t4824\n\t],\n\t\"./Parallax/EmblaCarouselTweenParallax\": [\n\t\t1288,\n\t\t1288\n\t],\n\t\"./Parallax/EmblaCarouselTweenParallax.js\": [\n\t\t1288,\n\t\t1288\n\t],\n\t\"./Parallax/EmblaCarouselTweenParallax.ts\": [\n\t\t3878,\n\t\t3878\n\t],\n\t\"./Progress/EmblaCarousel\": [\n\t\t6397,\n\t\t8778\n\t],\n\t\"./Progress/EmblaCarousel.js\": [\n\t\t6397,\n\t\t8778\n\t],\n\t\"./Progress/EmblaCarousel.ts\": [\n\t\t4596,\n\t\t4596\n\t],\n\t\"./Progress/EmblaCarouselProgressBar\": [\n\t\t4032,\n\t\t4032\n\t],\n\t\"./Progress/EmblaCarouselProgressBar.js\": [\n\t\t4032,\n\t\t4032\n\t],\n\t\"./Progress/EmblaCarouselProgressBar.ts\": [\n\t\t334,\n\t\t334\n\t],\n\t\"./Scale/EmblaCarousel\": [\n\t\t3615,\n\t\t3615\n\t],\n\t\"./Scale/EmblaCarousel.js\": [\n\t\t3615,\n\t\t3615\n\t],\n\t\"./Scale/EmblaCarousel.ts\": [\n\t\t1485,\n\t\t1485\n\t],\n\t\"./Scale/EmblaCarouselTweenScale\": [\n\t\t7892,\n\t\t7892\n\t],\n\t\"./Scale/EmblaCarouselTweenScale.js\": [\n\t\t7892,\n\t\t7892\n\t],\n\t\"./Scale/EmblaCarouselTweenScale.ts\": [\n\t\t8378,\n\t\t8378\n\t],\n\t\"./Thumbs/EmblaCarousel\": [\n\t\t8804,\n\t\t8804\n\t],\n\t\"./Thumbs/EmblaCarousel.js\": [\n\t\t8804,\n\t\t8804\n\t],\n\t\"./Thumbs/EmblaCarousel.ts\": [\n\t\t9290,\n\t\t9290\n\t],\n\t\"./Thumbs/EmblaCarouselThumbsButton\": [\n\t\t1797,\n\t\t1797\n\t],\n\t\"./Thumbs/EmblaCarouselThumbsButton.js\": [\n\t\t1797,\n\t\t1797\n\t],\n\t\"./Thumbs/EmblaCarouselThumbsButton.ts\": [\n\t\t711,\n\t\t711\n\t],\n\t\"./index.html\": [\n\t\t7265,\n\t\t7265\n\t]\n};\nfunction webpackAsyncContext(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\treturn Promise.resolve().then(function() {\n\t\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\t\te.code = 'MODULE_NOT_FOUND';\n\t\t\tthrow e;\n\t\t});\n\t}\n\n\tvar ids = map[req], id = ids[0];\n\treturn __webpack_require__.e(ids[1]).then(function() {\n\t\treturn __webpack_require__(id);\n\t});\n}\nwebpackAsyncContext.keys = function() { return Object.keys(map); };\nwebpackAsyncContext.id = 2351;\nmodule.exports = webpackAsyncContext;"],"names":["Object","defineProperty","exports","value","LZString","getParameters","parameters","input","JSON","stringify","compressToBase64","replace","define_1","module","bracketSpacing","printWidth","semi","singleQuote","trailingComma","tabWidth","useTabs","CAROUSEL_DEFAULT_HEIGHT","CAROUSEL_THUMB_SLIDES_HEIGHT","CAROUSEL_THUMB_SLIDES_SPACING","CAROUSEL_IOS_PICKER_HEIGHT","CAROUSEL_NAV_BUTTON_SIZE","SPACINGS","SIX","CAROUSEL_CONTROLS_SPACING","THREE","CAROUSEL_SLIDE_RADIUS_STYLES","css","BORDER_RADIUSES","SOFT","CAROUSEL_BORDER_SHADOW_STYLES","BORDER_SIZES","OUTLINE","COLORS","DETAIL_MEDIUM_CONTRAST","CAROUSEL_BUTTON_BASE_STYLES","TAP_HIGHLIGHT_STYLES","BASE_STYLES","SLIDES_PER_VIEW_STYLES","MEDIA","MIN_SM","MIN_LG","SLIDE_NUMBER_STYLES","FONT_SIZES","CUSTOM","FONT_WEIGHTS","SEMI_BOLD","IMAGE_STYLES","VARIABLE_WIDTH_STYLES","CONTROLS_STYLES","TWO","ARROWS_STYLES","ONE","createSquareSizeStyles","LAYERS","STEP","CIRCLE","TEXT_BODY","DETAIL_HIGH_CONTRAST","DOTS_STYLES","SNAP_DISPLAY_STYLES","TEXT_LOW_CONTRAST","PLAY_BUTTON_STYLES","BOLD","COMPLEMENTARY","FOUR","FOURTEEN","THUMBS_STYLES","MIN_XS","H4","PROGRESS_STYLES","BACKGROUND_SITE","PARALLAX_STYLES","SCALE_STYLES","LAZY_LOAD_STYLES","ACCENT_VERTICAL","TEXT_HIGH_CONTRAST_RGB_VALUE","TEXT_HIGH_CONTRAST","AUTO_HEIGHT_STYLES","CLASS_NAMES_STYLES","FADE_STYLES","INFINITE_SCROLL_STYLES","IOS_PICKER_STYLES","BACKGROUND_SITE_RGB_VALUE","examplesCarouselDefaultStyles","slideSize","spacingSize","axis","customStyles","baseStyles","styledComponentsStylesToString","horizontal","spacingDirection","panDirection","sizeDimention","slideHeight","containerHeight","examplesCarouselDragFreeStyles","examplesCarouselVariableWidthStyles","examplesCarouselSlidesPerViewStyles","examplesCarouselThumbsStyles","examplesCarouselProgressStyles","examplesCarouselParallaxStyles","examplesCarouselScaleStyles","examplesCarouselOpacityStyles","examplesCarouselAutoplayStyles","examplesCarouselAutoHeightStyles","examplesCarouselClassNamesStyles","examplesCarouselFadeStyles","examplesCarouselLazyLoadStyles","examplesCarouselInfiniteScrollStyles","examplesCarouselIosPickerStyles","InputRadioDefault","createRadioOrCheckboxDefault","InputRadioCard","createRadioOrCheckboxCard","RadioOrCheckboxCardWrapper","styled","label","withConfig","displayName","componentId","CARD_STYLES","LabelContent","span","Highlight","BRAND_GRADIENT_BACKGROUND_STYLES","DETAIL","BACKGROUND_CODE","Input","KEY_NAVIGATING_STYLES","CARD","type","kebabCaseToPascalCase","InputSelectionComponent","props","children","restProps","isKeyNavigating","useKeyNavigating","React","htmlFor","id","assign","$isKeyNavigating","INPUT_SIZE","RadioOrCheckboxDefaultWrapper","InputWrapper","InputLineHeight","InputRadio","InputCheckbox","LINE","Label","_ref","$disabled","InputComponent","disabled","PageBreadcrumbsWrapper","nav","itemStyles","Link","LinkBare","ActiveTitle","Separator","Icon","PageBreadcrumbs","breadcrumbs","flat","routes","useRoutes","currentRoute","find","route","filter","isRoutePartiallyActive","slug","sort","a","b","level","useRouteBreadcrumbs","length","map","index","title","Fragment","key","to","size","svg","role","PageEditThisPageWrapper","EIGHT","PageEditThisPage","pageUrl","url","URLS","GITHUB_DOCUMENTATION","IconWithText","iconSvg","iconSize","ITEM_SPACING","PagePaginationWrapper","createGapStyles","Item","div","BRAND_PRIMARY","BRAND_SECONDARY","ItemLabel","ItemTitle","MEDIUM","IconWithTextText","BRAND_GRADIENT_TEXT_STYLES","PagePagination","next","previous","iconSide","createSandboxReactIndexHtml","async","indexHTML","theme","THEME_PREFIX","getThemeFromDocument","default","SANDBOX_REGEX_THEME","SANDBOX_REGEX_TITLE","CAROUSEL_IMPORT_REGEX","SLIDE_COUNT_REGEX","CAROUSEL_IMPORT_REPLACE","createSandboxReactEntry","reactScriptExtension","slides","options","loop","SANDBOX_REGEX_IOS_PICKER_LOOP","sandboxInjectIosPickerLoop","createSandboxReactIosPickerEntry","slideCount","toString","SANDBOX_REGEX_OPTIONS","sandboxInjectOptions","match","createSandboxReactDefaultEntry","IMAGES_IMPORT_REGEX","IMAGES_FUNCTION_REGEX","createSandboxReactHeader","header","formattedTitle","createSandboxReactFooter","SANDBOX_REGEX_REPOSITORY_URL","GITHUB_ROOT","createSandboxReact","carouselScript","styles","plugins","sandboxOverrides","language","SANDBOX_LANGUAGES","JAVASCRIPT","config","prettierConfig","formatCss","loadPrettier","isTypeScript","formatScript","sandboxLanguageUtils","packageJson","dependencies","devDependencies","docsPackageJson","isJavaScript","name","version","description","main","SANDBOX_REACT_FOLDERS","JS","scripts","start","build","test","eject","react","typescript","browserslist","createSandboxReactPackageJson","tsConfig","include","compilerOptions","strict","esModuleInterop","lib","jsx","carouselScriptWithImages","createSandboxReactImagePaths","entryHtml","entryScript","headerScript","footerScript","Promise","all","sandboxConfig","isBinary","content","PUBLIC","CSS","SANDBOX_BASE_CSS","SANDBOX_CSS","files","ICONS_BY_LABEL","VANILLA_JS","VANILLA_TS","REACT_JS","REACT_TS","RadioLabelContent","RadioLabelSvg","SandboxSelectionInput","framework","SANDBOX_SCRIPT_SRC_REGEX","SANDBOX_CODE_REGEX","IMG_SRC_WITH_HASH_REGEX","IMG_SLIDE_WITH_NUMBER_REGEX","IMG_NUMBER_REGEX","createSandboxVanilla","carouselHtml","formatHtml","vanillaScriptExtension","resolutions","createSandboxVanillaPackageJson","sourceMap","allowJs","rootDir","moduleResolution","createSandboxVanillaOptions","languageExtension","scriptSrc","SANDBOX_VANILLA_FOLDERS","createSandboxVanillaEntry","createSandboxVanillaImagePaths","IMPORT_LOCAL_MODULE_REGEX","MODULE_LOCAL_NAME_REGEX","sandboxStaticFindLocalModules","IMPORT_SHARED_MODULE_REGEX","MODULE_SHARED_NAME_REGEX","sandboxStaticFindSharedModules","sandboxStaticExtractVanillaModules","path","localModules","sharedModules","modules","concat","_toConsumableArray","localModulesPromises","sharedModulesPromises","promises","moduleScripts","script","resolve","sandboxStaticExtractReactModules","sandboxStaticExtractPlugins","pluginList","values","SANDBOX_PLUGINS","pluginName","addSandboxPlugins","SANDBOX_BASE_STYLES","BASE_FONT_STYLES","BODY","SANDBOX_HEADER_STYLES","SANDBOX_FOOTER_STYLES","THEME_STYLES","Seo","lang","siteMetadata","useSiteMetadata","pageTitle","metaDescription","rel","href","removeProtocol","siteUrl","author","SANDBOX_LABELS","TYPESCRIPT","AUTOPLAY","AUTO_SCROLL","AUTO_HEIGHT","CLASS_NAMES","FADE","SANDBOX_GENERATOR_FORM_FIELDS","FRAMEWORK","LOOP","DRAG_FREE","AXIS","DIRECTION","ACCESSIBILITY","SLIDE_SIZE","SLIDE_GAP_SIZE","EDGE_GAP","ALIGN","CONTAIN_SCROLL","SLIDES_TO_SCROLL","NAVIGATION_PREV_NEXT_BUTTONS","NAVIGATION_DOTS","WHEEL_GESTURES","SANDBOX_GENERATOR_FORM_PREFIX","SANDBOX_SELECTION_SPACING","arrayFromNumber","number","Array","from","keys","isBrowser","THEME_KEYS","LIGHT","lightThemeClass","document","documentElement","classList","contains","DARK","PRETTIER_CONFIG","prettierrc","prettier","htmlParser","cssParser","babelParser","prettierHtmlParser","parser","prettierCssParser","prettierBabelParser","prettierBabeTsParser","prettierFormatSafe","subject","formattedString","format","error","console","warn","html","formatJs","js","formatTs","ts","createSandboxFunctionsWithLabels","createSandboxFunction","sandboxLabelKey","createSandbox","pluginNames","isArray","reduce","allPlugins","createSandboxGeneratorInputId","fieldName","FIELD_NAME","ID","camelOrPascalToKebabCase","_len","arguments","stylesList","_key","allStyles","join","isRecord","prototype","call","isObject","areOptionsEqual","optionsA","optionsB","optionsAKeys","optionsBKeys","breakpoints","every","valueA","valueB","sortAndMapPluginToOptions","plugin","isNumber","isString","isBoolean","mathAbs","n","Math","abs","mathSign","sign","deltaAbs","arrayKeys","array","objectKeys","Number","arrayLast","arrayLastIndex","max","arrayIsLastIndex","startAt","_","i","object","objectsMergeDeep","objectA","objectB","mergedObjects","currentObject","forEach","areObjects","isMouseEvent","evt","ownerWindow","MouseEvent","EventStore","listeners","self","add","node","handler","removeListener","passive","addEventListener","removeEventListener","legacyMediaQueryList","addListener","push","clear","remove","Animations","ownerDocument","update","render","documentVisibleHandler","timeStep","lastTimeStamp","lag","animationFrame","animate","timeStamp","elapsed","lagOffset","requestAnimationFrame","stop","cancelAnimationFrame","init","hidden","destroy","Limit","min","reachedMin","reachedMax","reachedAny","constrain","removeOffset","ceil","Counter","loopEnd","counter","withinLimit","get","clone","set","DragHandler","rootNode","target","dragTracker","location","animation","scrollTo","scrollBody","scrollTarget","eventHandler","percentOfView","dragFree","dragThreshold","skipSnaps","baseFriction","watchDrag","cross","crossAxis","direction","focusNodes","nonPassiveEvent","initEvents","dragEvents","goToNextThreshold","measure","snapForceBoost","mouse","touch","freeForceBoost","baseSpeed","isMoving","startScroll","startCross","pointerIsDown","preventScroll","preventClick","isMouse","move","touches","up","lastScroll","readPoint","lastCross","diffScroll","diffCross","cancelable","diff","pointerMove","useFriction","useDuration","preventDefault","targetChanged","byDistance","rawForce","pointerUp","force","baseForce","distance","byIndex","allowedForce","forceFactor","factorAbs","speed","friction","emit","click","stopPropagation","emblaApi","downIfAllowed","isMouseEvt","buttons","button","nodeName","includes","isFocusNode","pointerDown","addDragEvents","down","DragTracker","startEvent","lastEvent","readTime","evtAxis","coord","scroll","expired","diffDrag","diffTime","ResizeHandler","container","watchResize","nodeRects","resizeObserver","containerSize","slideSizes","destroyed","readSize","measureSize","ResizeObserver","entries","entry","isContainer","slideIndex","indexOf","lastSize","reInit","defaultCallback","observe","disconnect","ScrollBounds","limit","offsetLocation","pullBackThreshold","edgeOffsetTolerance","frictionLimit","shouldConstrain","edge","diffToEdge","diffToTarget","subtract","useBaseFriction","toggleActive","active","ScrollLooper","contentSize","vectors","shouldLoop","loopDistance","v","ScrollTarget","scrollSnaps","targetVector","minDistance","distances","shortcut","targets","matchingTargets","t","snap","targetSnapDistance","ascDiffsToSnaps","d1","d2","findTargetSnap","reachedBound","Vector1D","initialValue","normalizeInput","Translate","translate","containerStyle","style","transform","getAttribute","removeAttribute","SlideLooper","viewSize","slideSizesWithGaps","snaps","roundingSafety","ascItems","descItems","reverse","loopPoints","gap","findLoopPoints","slidesInGap","startPoints","endPoints","removeSlideSizes","indexes","offset","isEndEdge","slideBounds","end","findSlideBounds","initial","altered","boundEdge","loopPoint","slideLocation","canLoop","shiftLocation","SlidesHandler","watchSlides","mutationObserver","MutationObserver","mutations","mutation","childList","SlidesInView","threshold","intersectionEntryMap","intersectionObserver","inViewCache","notInViewCache","IntersectionObserver","root","parentElement","slide","inView","slideIndexes","list","parseInt","isIntersecting","createInViewList","SlidesToScroll","slidesToScroll","containerRect","slideRects","startGap","endGap","pixelTolerance","startEdge","endEdge","groupByNumber","groupSlides","groupSize","slice","byNumber","groups","rectB","rectA","isFirst","isLast","edgeA","edgeB","gapA","chunkSize","currentSize","previousSize","bySize","Engine","align","scrollAxis","startIndex","duration","inViewThreshold","containScroll","offsetTop","offsetLeft","offsetWidth","offsetHeight","top","right","bottom","left","width","height","contentDirection","isRightToLeft","isVertical","nodeRect","Axis","PercentOfView","alignment","predefined","center","Alignment","containSnaps","readEdgeGap","withEdgeGap","slideRect","measureStartGap","getComputedStyle","parseFloat","getPropertyValue","measureEndGap","rect","rects","SlideSizes","snapsAligned","alignments","g","ScrollSnaps","snapsContained","scrollContainLimit","scrollBounds","snapsBounded","snapAligned","usePixelTolerance","scrollBound","toFixed","startSnap","endSnap","lastIndexOf","findScrollContainLimit","bound","measureContained","ScrollContain","ScrollLimit","indexPrevious","_ref2","dragHandler","seek","engine","_ref3","scrollLooper","slideLooper","velocity","shouldSettle","settled","withinBounds","hasSettled","startLocation","baseDuration","bodyVelocity","scrollDirection","scrollDuration","scrollFriction","rawLocation","rawLocationPrevious","directionDiff","useBaseDuration","ScrollBody","indexCurrent","distanceDiff","indexDiff","targetIndex","ScrollTo","scrollProgress","ScrollProgress","eventStore","slidesInView","slideRegistry","groupedSlideIndexes","doNotContain","group","createSlideRegistry","SlideRegistry","slideFocus","lastTabPressTime","registerTabPress","event","code","Date","getTime","addSlideFocusEvent","focus","scrollLeft","findIndex","capture","SlideFocus","resizeHandler","scrollSnapList","slidesHandler","defaultOptions","OptionsHandler","mergeOptions","optionsAtMedia","matchedMediaOptions","media","matchMedia","matches","mediaOption","optionsMediaQueries","optionsList","acc","mediaQueries","EmblaCarousel","userOptions","userPlugins","defaultView","optionsHandler","pluginsHandler","activePlugins","_ref4","PluginsHandler","mediaHandlers","api","getListeners","e","off","cb","on","EventHandler","reActivate","pluginApis","optionsBase","globalOptions","createEngine","activate","withOptions","withPlugins","userContainer","userSlides","customContainer","querySelector","customSlides","querySelectorAll","storeElements","_ref5","query","offsetParent","selectedScrollSnap","deActivate","jump","canScrollNext","canScrollPrev","containerNode","internalEngine","previousScrollSnap","scrollNext","scrollPrev","slideNodes","slidesNotInView","setTimeout","useEmblaCarousel","storedOptions","useRef","storedPlugins","setEmblaApi","useState","viewport","setViewport","useCallback","current","useEffect","window","createElement","newEmblaApi","undefined","pluginsA","pluginsB","optionA","arePluginsEqual","f","String","fromCharCode","keyStrBase64","keyStrUriSafe","baseReverseDic","getBaseValue","alphabet","character","charAt","res","_compress","decompressFromBase64","_decompress","compressToUTF16","decompressFromUTF16","compressed","charCodeAt","compressToUint8Array","uncompressed","compress","buf","Uint8Array","TotalLen","current_value","decompressFromUint8Array","decompress","result","c","compressToEncodedURIComponent","decompressFromEncodedURIComponent","bitsPerChar","getCharFromInt","ii","context_dictionary","context_dictionaryToCreate","context_c","context_wc","context_w","context_enlargeIn","context_dictSize","context_numBits","context_data","context_data_val","context_data_position","hasOwnProperty","pow","resetValue","getNextValue","w","bits","resb","maxpower","power","dictionary","enlargeIn","dictSize","numBits","data","val","position","webpackAsyncContext","req","__webpack_require__","o","then","Error","ids"],"sourceRoot":""} \ No newline at end of file diff --git a/docs/95da5ec31316267b433b7b2e2bbaca0a1c0b9c0a-9db511b4935758553259.js b/docs/95da5ec31316267b433b7b2e2bbaca0a1c0b9c0a-9db511b4935758553259.js new file mode 100644 index 000000000..bb93af39f --- /dev/null +++ b/docs/95da5ec31316267b433b7b2e2bbaca0a1c0b9c0a-9db511b4935758553259.js @@ -0,0 +1,2 @@ +(self.webpackChunkembla_carousel_docs=self.webpackChunkembla_carousel_docs||[]).push([[6075],{2220:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(683);t.getParameters=function(e){return t=JSON.stringify(e),r.compressToBase64(t).replace(/\+/g,"-").replace(/\//g,"_").replace(/=+$/,"");var t}},4274:function(e,t,n){"use strict";t.b=void 0;var r=n(2220);t.b=r.getParameters},3211:function(e){e.exports={bracketSpacing:!0,printWidth:80,semi:!1,singleQuote:!0,trailingComma:"none",tabWidth:2,useTabs:!1}},7736:function(e,t,n){"use strict";n.d(t,{EW:function(){return A},F6:function(){return S},Fc:function(){return re},Gb:function(){return Q},MD:function(){return I},N$:function(){return ne},N1:function(){return K},QR:function(){return q},RW:function(){return W},Tk:function(){return X},U3:function(){return h},Wr:function(){return b},Yl:function(){return te},Z4:function(){return f},br:function(){return _},cM:function(){return Z},cm:function(){return J},dJ:function(){return $},kk:function(){return O},lN:function(){return p},mh:function(){return U},mn:function(){return g},pS:function(){return Y},qV:function(){return V},uk:function(){return ee},zw:function(){return H}});var r=n(3057),o=n(1801),a=n(6341),i=n(4393),s=n(1381),l=n(5335),c=n(4702),u=n(382),d=n(1664),m=n(9204);const f="19rem",p="6rem",_="0.8rem",b="22.2rem",g=i.F.SIX,h=i.F.THREE,E=(0,r.css)(["border-radius:",";"],s.Y.SOFT),C=(0,r.css)(["box-shadow:inset 0 0 0 "," ",";"],s.C.OUTLINE,a.lm.DETAIL_MEDIUM_CONTRAST),y=(0,r.css)(["",";-webkit-appearance:none;appearance:none;background-color:transparent;touch-action:manipulation;display:inline-flex;text-decoration:none;cursor:pointer;border:0;padding:0;margin:0;"],m.Q),x=(0,r.css)([".embla{max-width:",";margin:auto;--slide-height:",";--slide-spacing:__replace_axis_spacing_amount__;--slide-size:__replace_slide_size__;}.embla__viewport{overflow:hidden;}.embla__container{backface-visibility:hidden;display:flex;touch-action:__replace-axis-touch_action__;margin-__replace_axis_spacing__:calc(var(--slide-spacing) * -1);__replace_axis_height__ __replace_axis_flex__}.embla__slide{flex:0 0 var(--slide-size);min-__replace-axis-size__:0;padding-__replace_axis_spacing__:var(--slide-spacing);}"],"48rem",f),v=(0,r.css)([".embla{max-width:70rem;margin:auto;--slide-height:",";--slide-spacing:1rem;--slide-size:100%;--slide-spacing-sm:1.6rem;--slide-size-sm:50%;--slide-spacing-lg:2rem;--slide-size-lg:calc(100% / 3);}.embla__viewport{overflow:hidden;}.embla__container{backface-visibility:hidden;display:flex;touch-action:__replace-axis-touch_action__;margin-__replace_axis_spacing__:calc(var(--slide-spacing) * -1);__replace_axis_height__ __replace_axis_flex__}","{.embla__container{margin-__replace_axis_spacing__:calc(var(--slide-spacing-sm) * -1);}}","{.embla__container{margin-__replace_axis_spacing__:calc(var(--slide-spacing-lg) * -1);}}.embla__slide{min-__replace-axis-size__:0;flex:0 0 var(--slide-size);padding-__replace_axis_spacing__:var(--slide-spacing);}","{.embla__slide{flex:0 0 var(--slide-size-sm);padding-__replace_axis_spacing__:var(--slide-spacing-sm);}}","{.embla__slide{flex:0 0 var(--slide-size-lg);padding-__replace_axis_spacing__:var(--slide-spacing-lg);}}"],f,l.Rn.MIN_SM,l.Rn.MIN_LG,l.Rn.MIN_SM,l.Rn.MIN_LG),S=(0,r.css)([".embla__slide__number{",";",";font-size:",";font-weight:",";display:flex;align-items:center;justify-content:center;height:__replace_slide_height__;}"],C,E,c.$.CUSTOM((()=>4)),c.s.SEMI_BOLD),T=(0,r.css)([".embla__slide__img{",";display:block;height:__replace_slide_height__;width:100%;object-fit:cover;}"],E),w=(0,r.css)([".embla__slide:nth-child(1){flex:0 0 60%;}.embla__slide:nth-child(2){flex:0 0 40%;}.embla__slide:nth-child(3){flex:0 0 30%;}.embla__slide:nth-child(4){flex:0 0 90%;}.embla__slide:nth-child(5){flex:0 0 35%;}.embla__slide:nth-child(6){flex:0 0 55%;}.embla__slide:nth-child(7){flex:0 0 85%;}.embla__slide:nth-child(8){flex:0 0 50%;}.embla__slide:nth-child(9){flex:0 0 35%;}"]),A=(0,r.css)([".embla__controls{display:grid;grid-template-columns:auto 1fr;justify-content:space-between;gap:",";margin-top:",";}"],i.F.TWO,h),O=(0,r.css)([".embla__buttons{display:grid;grid-template-columns:repeat(2,1fr);gap:",";align-items:center;}.embla__button{",";",";"," z-index:",";border-radius:",";color:",";display:flex;align-items:center;justify-content:center;}.embla__button:disabled{color:",";}.embla__button__svg{","}"],i.F.ONE,y,C,(0,u.P)(g),o.R.STEP,s.Y.CIRCLE,a.lm.TEXT_BODY,a.lm.DETAIL_HIGH_CONTRAST,(0,u.P)("35%")),I=(0,r.css)([".embla__dots{display:flex;flex-wrap:wrap;justify-content:flex-end;align-items:center;margin-right:calc((2.6rem - 1.4rem) / 2 * -1);}.embla__dot{",";"," display:flex;align-items:center;justify-content:center;border-radius:",";}.embla__dot:after{",";"," border-radius:",";display:flex;align-items:center;content:'';}.embla__dot--selected:after{box-shadow:inset 0 0 0 "," ",";}"],y,(0,u.P)("2.6rem"),s.Y.CIRCLE,C,(0,u.P)("1.4rem"),s.Y.CIRCLE,s.C.OUTLINE,a.lm.TEXT_BODY),L=(0,r.css)([".embla__selected-snap-display{justify-self:flex-end;align-self:center;color:",";font-weight:",";}"],a.lm.TEXT_LOW_CONTRAST,c.s.SEMI_BOLD),P=(0,r.css)([".embla__play{",";",";",";display:flex;align-items:center;justify-content:center;justify-self:flex-end;color:",";font-weight:",";font-size:",";padding:0 ",";min-width:",";}"],y,C,E,a.lm.TEXT_BODY,c.s.BOLD,c.$.COMPLEMENTARY,i.F.FOUR,i.F.FOURTEEN),j=(0,r.css)([".embla-thumbs{--thumbs-slide-spacing:",";--thumbs-slide-height:",";margin-top:var(--thumbs-slide-spacing);}.embla-thumbs__viewport{overflow:hidden;}.embla-thumbs__container{display:flex;flex-direction:row;margin-left:calc(var(--thumbs-slide-spacing) * -1);}.embla-thumbs__slide{flex:0 0 22%;min-__replace-axis-size__:0;padding-left:var(--thumbs-slide-spacing);}","{.embla-thumbs__slide{flex:0 0 15%;}}.embla-thumbs__slide__number{",";",";",";font-size:",";font-weight:",";color:",";display:flex;align-items:center;justify-content:center;height:var(--thumbs-slide-height);width:100%;}.embla-thumbs__slide--selected .embla-thumbs__slide__number{color:",";}"],_,p,l.Rn.MIN_XS,E,y,C,c.$.H4,c.s.SEMI_BOLD,a.lm.DETAIL_HIGH_CONTRAST,a.lm.TEXT_BODY),N=(0,r.css)([".embla__progress{",";",";background-color:",";position:relative;height:0.6rem;justify-self:flex-end;align-self:center;width:13rem;max-width:90%;overflow:hidden;}.embla__progress__bar{background-color:",";position:absolute;width:100%;top:0;bottom:0;left:-100%;}"],E,C,a.lm.BACKGROUND_SITE,a.lm.TEXT_BODY),B=(0,r.css)([".embla__parallax{",";height:100%;overflow:hidden;}.embla__parallax__layer{position:relative;height:100%;width:100%;display:flex;justify-content:center;}.embla__parallax__img{max-width:none;flex:0 0 calc(115% + (var(--slide-spacing) * 2));object-fit:cover;}"],E),k=(0,r.css)([".embla__slide__number{backface-visibility:hidden;}"]),D=(0,r.css)([".embla__lazy-load{position:relative;height:100%;}.embla__lazy-load__spinner{border:"," solid rgba(",",0.2);border-left:"," solid ",";font-size:1rem;display:inline-flex;position:absolute;top:0;left:0;bottom:0;right:0;margin:auto;text-indent:-9999em;animation:loading 1.1s infinite linear;border-radius:",";","}.embla__lazy-load__spinner:after{border-radius:inherit;","}.embla__lazy-load__img{opacity:0;transition:opacity 0.2s ease-in-out;}.embla__lazy-load--has-loaded .embla__lazy-load__img{opacity:1;}@keyframes loading{0%{transform:rotate(0deg);}100%{transform:rotate(360deg);}}"],s.C.ACCENT_VERTICAL,a.lm.TEXT_HIGH_CONTRAST_RGB_VALUE,s.C.ACCENT_VERTICAL,a.lm.TEXT_HIGH_CONTRAST,s.Y.CIRCLE,(0,u.P)("5rem"),(0,u.P)("5rem")),R=(0,r.css)([".embla__container{align-items:flex-start;}.embla__slide:nth-child(1) > .embla__slide__number{height:",";}.embla__slide:nth-child(2) > .embla__slide__number{height:calc("," + 4rem);}.embla__slide:nth-child(3) > .embla__slide__number{height:calc("," - 2rem);}.embla__slide:nth-child(4) > .embla__slide__number{height:calc("," + 2rem);}.embla__slide:nth-child(5) > .embla__slide__number{height:",";}"],f,f,f,f,f),z=(0,r.css)([".embla__slide{transition:opacity 0.2s ease-in-out;}.embla__slide:not(.is-snapped){opacity:0.16;}"]),G=(0,r.css)([".embla__slide__img{user-select:none;}"]),F=(0,r.css)([".embla-infinite-scroll{position:relative;flex:0 0 15rem;min-__replace-axis-size__:0;height:var(--slide-height);display:flex;align-items:center;justify-content:center;}.embla-infinite-scroll__spinner{display:none;border:"," solid rgba(",",0.2);border-left:"," solid ",";font-size:1rem;position:absolute;top:0;left:0;bottom:0;right:0;margin:auto;text-indent:-9999em;animation:loading 1.1s infinite linear;border-radius:",";","}.embla-infinite-scroll__spinner:after{border-radius:inherit;","}.embla-infinite-scroll--loading-more > .embla-infinite-scroll__spinner{display:inline-flex;}@keyframes loading{0%{transform:rotate(0deg);}100%{transform:rotate(360deg);}}"],s.C.ACCENT_VERTICAL,a.lm.TEXT_HIGH_CONTRAST_RGB_VALUE,s.C.ACCENT_VERTICAL,a.lm.TEXT_HIGH_CONTRAST,s.Y.CIRCLE,(0,u.P)("5rem"),(0,u.P)("5rem")),M=(0,r.css)([".embla{position:relative;display:flex;width:100%;height:",";max-width:30rem;margin-left:auto;margin-right:auto;}.embla:before,.embla:after{position:absolute;left:0;right:0;content:'';display:block;height:calc(50% - 32px / 2);z-index:",";pointer-events:none;}.embla:before{top:-0.5px;border-bottom:0.5px solid rgba(",",0.3);background:linear-gradient( to top,rgba(",",0.65) 0%,rgba(",",1) 100% );}.embla:after{bottom:-0.5px;border-top:0.5px solid rgba(",",0.3);background:linear-gradient( to bottom,rgba(",",0.65) 0%,rgba(",",1) 100% );}.embla__ios-picker{height:100%;display:flex;align-items:center;min-width:50%;justify-content:center;line-height:1;font-size:1.8rem;}.embla__ios-picker__scene{min-width:100%;height:100%;overflow:hidden;display:flex;align-items:center;touch-action:pan-x;}.embla__ios-picker__viewport{height:32px;width:100%;perspective:1000px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-touch-callout:none;-khtml-user-select:none;-webkit-tap-highlight-color:transparent;}.embla__ios-picker__viewport--perspective-left{perspective-origin:calc(50% + 130px) 50%;transform:translateX(27px);}.embla__ios-picker__viewport--perspective-right{perspective-origin:calc(50% - 130px) 50%;transform:translateX(-27px);}.embla__ios-picker__container{height:100%;width:100%;transform-style:preserve-3d;will-change:transform;}.embla__ios-picker__slide{width:100%;height:100%;font-size:19px;text-align:center;display:flex;align-items:center;justify-content:center;backface-visibility:hidden;opacity:0;}.embla__ios-picker__label{font-weight:",";transform:translateX(-55px);pointer-events:none;}"],b,o.R.STEP,a.lm.TEXT_HIGH_CONTRAST_RGB_VALUE,a.lm.BACKGROUND_SITE_RGB_VALUE,a.lm.BACKGROUND_SITE_RGB_VALUE,a.lm.TEXT_HIGH_CONTRAST_RGB_VALUE,a.lm.BACKGROUND_SITE_RGB_VALUE,a.lm.BACKGROUND_SITE_RGB_VALUE,c.s.BOLD),H=function(e,t,n,r,o){void 0===e&&(e="100%"),void 0===t&&(t="1rem"),void 0===n&&(n="x"),void 0===r&&(r=""),void 0===o&&(o=(0,d.i)(x));const a="x"===n,i=a?"left":"top",s="pan-"+(a?"y":"x")+" pinch-zoom",l=a?"width":"height",c=a?"var(--slide-height)":"100%",u=a?"":"height: calc(var(--slide-spacing) + var(--slide-height));";return(o+r).replace(/__replace_axis_flex__/gi,a?"":"flex-direction: column;").replace(/__replace-axis-size__/gi,l).replace(/__replace-axis-touch_action__/gi,s).replace(/__replace_axis_spacing__/gi,i).replace(/__replace_axis_spacing_amount__/gi,t).replace(/__replace_axis_height__/gi,u).replace(/__replace_slide_height__/gi,c).replace(/__replace_slide_size__/gi,e)},U=(e,t,n)=>H(e,t,n,(0,d.i)(S,A,O,L)),V=(e,t,n)=>H(e,t,n,(0,d.i)(w,S,A,O,L)),J=(e,t,n)=>H(e,t,n,(0,d.i)(S,A,O,I),(0,d.i)(v)),X=(e,t,n)=>H(e,t,n,(0,d.i)(S,j)),Y=(e,t,n)=>H(e,t,n,(0,d.i)(S,A,O,N)),W=(e,t,n)=>H(e,t,n,(0,d.i)(T,A,O,I,B)),q=(e,t,n)=>H(e,t,n,(0,d.i)(S,A,O,I,k)),$=(e,t,n)=>H(e,t,n,(0,d.i)(T,A,O,I)),K=(e,t,n)=>H(e,t,n,(0,d.i)(S,A,O,P)),Q=(e,t,n)=>H(e,t,n,(0,d.i)(S,A,O,I,R)),Z=(e,t,n)=>H(e,t,n,(0,d.i)(T,A,O,I,z)),ee=(e,t,n)=>H(e,t,n,(0,d.i)(T,A,O,I,G)),te=(e,t,n)=>H(e,t,n,(0,d.i)(T,A,O,I,D)),ne=(e,t,n)=>H(e,t,n,(0,d.i)(S,A,O,L,F)),re=()=>(0,d.i)(M)},2272:function(e,t,n){"use strict";n.d(t,{Q:function(){return b}});var r=n(4041),o=n(3057),a=n(7286),i=n(3724),s=n(3214),l=n(6341),c=n(4702),u=n(4393);const d=o.default.nav.withConfig({displayName:"PageBreadcrumbs__PageBreadcrumbsWrapper",componentId:"sc-1mlty1z-0"})(["display:flex;align-items:center;font-size:",";margin-bottom:",";"],c.$.COMPLEMENTARY,u.F.THREE),m=(0,o.css)(["color:",";padding:"," 0;"],l.lm.TEXT_LOW_CONTRAST,u.F.ONE),f=(0,o.default)(a.l).withConfig({displayName:"PageBreadcrumbs__Link",componentId:"sc-1mlty1z-1"})(["",";"],m),p=o.default.span.withConfig({displayName:"PageBreadcrumbs__ActiveTitle",componentId:"sc-1mlty1z-2"})(["",";"],m),_=(0,o.default)(s.I).withConfig({displayName:"PageBreadcrumbs__Separator",componentId:"sc-1mlty1z-3"})(["color:",";margin:0 ",";"],l.lm.TEXT_LOW_CONTRAST,u.F.ONE),b=e=>{const{id:t}=e,n=(0,i.rx)(t);return 0===n.length?null:r.createElement(d,{"aria-label":"Breadcrumb Navigation"},n.map(((e,t)=>{let{id:o,slug:a,title:i}=e;return t!==n.length-1?r.createElement(r.Fragment,{key:o},r.createElement(f,{to:a},i),r.createElement(_,{size:"0.6rem",svg:"chevronRight",role:"presentation","aria-hidden":"false"})):r.createElement(p,{key:o},i)})))}},6169:function(e,t,n){"use strict";n.d(t,{R:function(){return m}});var r=n(4041),o=n(3057),a=n(7286),i=n(6341),s=n(4702),l=n(4393),c=n(8893),u=n(405);const d=(0,o.default)(a.l).withConfig({displayName:"PageEditThisPage__PageEditThisPageWrapper",componentId:"sc-15acsrz-0"})(["display:inline-flex;align-items:center;text-decoration:none;font-size:",";padding-top:",";padding-bottom:",";margin-top:",";color:",";"],s.$.COMPLEMENTARY,l.F.ONE,l.F.ONE,l.F.EIGHT,i.lm.TEXT_LOW_CONTRAST),m=e=>{const{pageUrl:t}=e,n=c.t.GITHUB_DOCUMENTATION+"/"+t;return r.createElement(d,{to:n},r.createElement(u.vK,{iconSvg:"pen",iconSize:"1.5rem"},"Edit this page on GitHub"))}},8324:function(e,t,n){"use strict";n.d(t,{o:function(){return g}});var r=n(4041),o=n(3057),a=n(7286),i=n(4906),s=n(6341),l=n(4393),c=n(4702),u=n(405),d=n(4094);const m=l.F.FOUR,f=o.default.nav.withConfig({displayName:"PagePagination__PagePaginationWrapper",componentId:"sc-3ejrow-0"})(["",";display:flex;justify-content:space-between;margin-top:",";"],(0,d.F)(m,"","div"),l.F.EIGHT),p=o.default.div.withConfig({displayName:"PagePagination__Item",componentId:"sc-3ejrow-1"})(["> a{color:",";}&:nth-child(2) > a{text-align:right;color:",";}"],s.lm.BRAND_PRIMARY,s.lm.BRAND_SECONDARY),_=o.default.div.withConfig({displayName:"PagePagination__ItemLabel",componentId:"sc-3ejrow-2"})(["color:",";padding-bottom:",";"],s.lm.TEXT_LOW_CONTRAST,l.F.ONE),b=o.default.div.withConfig({displayName:"PagePagination__ItemTitle",componentId:"sc-3ejrow-3"})(["display:inline-flex;align-items:center;font-weight:",";","{",";}"],c.s.MEDIUM,u.eU,i.y),g=e=>{const{next:t,previous:n}=e;return r.createElement(f,{"aria-label":"Pagination Navigation"},r.createElement(p,null,n&&r.createElement(a.l,{to:n.slug},r.createElement(_,null,"Previous"),r.createElement(b,null,r.createElement(u.vK,{iconSvg:"arrowLeft"},n.title)))),r.createElement(p,null,t&&r.createElement(a.l,{to:t.slug},r.createElement(_,null,"Next"),r.createElement(b,null,r.createElement(u.vK,{iconSvg:"arrowRight",iconSide:"right"},t.title)))))}},1528:function(e,t,n){"use strict";n.d(t,{$:function(){return v}});var r=n(4274),o=n(5378),a=n(3160),i=n(3525),s=n(8330),l=n(7564),c=n(5399);var u=n(6341),d=n(9874),m=n(1672);const f=async e=>{const t=await n.e(8269).then(n.bind(n,8269)),r=u.tv+(0,d.b)(),o=(0,l.fq)(e," ");return t.default.replace(m.Ug,r).replace(m.R6,o)},p=/import\sEmblaCarousel\sfrom\s'(.*)'/,_=/const\sSLIDE_COUNT\s=\s\d{1,}/,b='import EmblaCarousel from "./EmblaCarousel"',g=async(e,t,r,o)=>"embla-carousel-ios-style-picker"===o?(async(e,t)=>(await n(348)("./CarouselIosPickerEntry."+e)).default.replace(p,b).replace(m.Ap,(0,c.Wb)(t)))(e,!!r.loop):(async(e,t,r)=>{const o=t.length.toString();return(await n(7182)("./CarouselDefaultEntry."+e)).default.replace(p,b).replace(m.$b,(0,c.rf)(r)).replace(_,(e=>e.replace(/\d{1,}/,o)))})(e,t,r),h=/import\s{\ssandboxImages\s}\sfrom\s'(.*)/,E=/sandboxImages\(index\)/,C=async(e,t)=>{const r=await n(4502)("./Header."+e),o=(0,l.fq)(t," ");return r.default.replace(m.R6,o)};var y=n(8893);const x=async e=>(await n(2804)("./Footer."+e)).default.replace(m.HC,y.t.GITHUB_ROOT),v=async e=>{const{id:t,carouselScript:n,slides:u,options:d,styles:p,plugins:_,sandboxOverrides:b,language:y=m.uq.JAVASCRIPT}=e,v=t+"-react",{prettierConfig:S,formatCss:T}=await(0,i.g)(),{isTypeScript:w,reactScriptExtension:A,formatScript:O}=await(0,c.Bz)(y),I=await(async(e,t,n)=>{const{dependencies:r,devDependencies:o}=s,{isJavaScript:i,reactScriptExtension:u}=await(0,c.Bz)(e);return{name:t,version:"1.0.0",description:(0,l.fq)(t," ")+" Example",main:a.c.JS+"/index."+u,scripts:{start:"react-scripts start",build:"react-scripts build",test:"react-scripts test --env=jsdom",eject:"react-scripts eject"},dependencies:{react:r.react,"react-dom":r["react-dom"],"react-scripts":"4.0.0","embla-carousel-react":r["embla-carousel-react"],"embla-carousel":r["embla-carousel"],...n&&n},devDependencies:i?{"@babel/runtime":"7.13.8"}:{"@types/react":o["@types/react"],"@types/react-dom":o["@types/react-dom"],typescript:o.typescript},browserslist:[">0.2%","not dead","not ie <= 11","not op_mini all"]}})(y,v,_),L={include:["./src/**/*"],compilerOptions:{strict:!0,esModuleInterop:!0,lib:["es6","dom"],jsx:"react-jsx"}},P=(e=>e.replace(h,"").replace(E,"`https://picsum.photos/600/350?v=${index}`"))(n),[j,N,B,k]=await Promise.all([f(v),g(A,u,d,t),C(A,v),x(A)]),D={".prettierrc":{isBinary:!1,content:JSON.stringify(S,null,"\t")},"package.json":{isBinary:!1,content:JSON.stringify(I,null,"\t")},[a.c.PUBLIC+"/index.html"]:{isBinary:!1,content:j},[a.c.CSS+"/base.css"]:{isBinary:!1,content:T(o.y)},[a.c.CSS+"/sandbox.css"]:{isBinary:!1,content:T(o.c)},[a.c.CSS+"/embla.css"]:{isBinary:!1,content:T(p)},[a.c.JS+"/index."+A]:{isBinary:!1,content:O(N)},[a.c.JS+"/Header."+A]:{isBinary:!1,content:O(B)},[a.c.JS+"/Footer."+A]:{isBinary:!1,content:O(k)},[a.c.JS+"/EmblaCarousel."+A]:{isBinary:!1,content:O(P)}};return w&&Object.assign(D,{"tsconfig.json":{isBinary:!1,content:JSON.stringify(L,null,"\t")}}),(0,r.b)({files:Object.assign({},D,b)})}},3160:function(e,t,n){"use strict";n.d(t,{c:function(){return r}});const r={PUBLIC:"public",CSS:"src/css",JS:"src/js"}},5435:function(e,t,n){"use strict";n.d(t,{F:function(){return E}});var r=n(4274),o=n(5378),a=n(6052),i=n(3525),s=n(8330),l=n(7564),c=n(5399);var u=n(6341),d=n(8893),m=n(9874),f=n(1672);const p=/__replace_sandbox_script_src__/g,_=/__replace_sandbox_code__/g,b=/\/static\/slide-\d{1,}-.+?\.jpg/g,g=/slide-\d{1,}/,h=/slide-/,E=async e=>{const{id:t,carouselScript:E,carouselHtml:C,options:y,styles:x,plugins:v,sandboxOverrides:S,language:T=f.uq.JAVASCRIPT}=e,w=t+"-vanilla",{prettierConfig:A,formatHtml:O,formatCss:I}=await(0,i.g)(),{isTypeScript:L,vanillaScriptExtension:P,formatScript:j}=await(0,c.Bz)(T),N=await(async(e,t,n)=>{const{isJavaScript:r}=await(0,c.Bz)(e),{dependencies:o,devDependencies:a}=s;return{name:t,version:"1.0.0",description:(0,l.fq)(t," ")+" Example",main:"index.html",scripts:{start:"parcel index.html --open",build:"parcel build index.html"},dependencies:{"parcel-bundler":"^1.6.1","embla-carousel":o["embla-carousel-react"],...n&&n},devDependencies:r?{"@babel/core":"7.2.0"}:{typescript:a.typescript},resolutions:{"@babel/preset-env":"7.13.8"}}})(T,w,v),B={include:["./src/**/*"],compilerOptions:{strict:!0,module:"commonjs",jsx:"preserve",esModuleInterop:!0,sourceMap:!0,allowJs:!0,lib:["es6","dom"],rootDir:"src",moduleResolution:"node"}},k=((e,t)=>{const n=null==t?void 0:t.loop;return e.replace(f.$b,(0,c.rf)(t)).replace(f.Ap,(0,c.Wb)(n))})(E,y),D=await(async(e,t,r)=>{const o=await n.e(7265).then(n.bind(n,7265)),i=u.tv+(0,m.b)(),s=(0,l.fq)(e," "),c=a.i.JS+"/index."+t;return o.default.replace(f.Ug,i).replace(f.R6,s).replace(p,c).replace(f.HC,d.t.GITHUB_ROOT).replace(_,r)})(w,P,(e=>e.replace(b,(e=>"https://picsum.photos/600/350?v="+(e.match(g)||[""])[0].replace(h,""))))(C)),R={".prettierrc":{isBinary:!1,content:JSON.stringify(A,null,"\t")},"package.json":{isBinary:!1,content:JSON.stringify(N,null,"\t")},"index.html":{isBinary:!1,content:O(D)},[a.i.CSS+"/base.css"]:{isBinary:!1,content:I(o.y)},[a.i.CSS+"/sandbox.css"]:{isBinary:!1,content:I(o.c)},[a.i.CSS+"/embla.css"]:{isBinary:!1,content:I(x)},[a.i.JS+"/index."+P]:{isBinary:!1,content:j(k)}};return L&&Object.assign(R,{"tsconfig.json":{isBinary:!1,content:JSON.stringify(B,null,"\t")}}),(0,r.b)({files:Object.assign({},R,S)})}},6052:function(e,t,n){"use strict";n.d(t,{i:function(){return r}});const r={CSS:"src/css",JS:"src/js"}},2168:function(e,t,n){"use strict";n.d(t,{r:function(){return m},Z:function(){return d}});var r=n(107),o=n(5399);const a=/from\s'.\/EmblaCarousel(.*)'/g,i=/.+?(?=EmblaCarousel)/,s=e=>(e.match(a)||[]).map((e=>e.replace(i,"").replace(/'/,""))),l=/from\s'..\/EmblaCarousel(.*)'/g,c=/.+?(?=EmblaCarousel)/,u=e=>(e.match(l)||[]).map((e=>e.replace(c,"").replace(/'/,""))),d=async(e,t,a)=>{const{vanillaScriptExtension:i}=await(0,o.Bz)(e),l=s(t),c=u(t),d=[].concat((0,r.A)(l),(0,r.A)(c)),m=l.map((e=>n(2351)("./"+a+"/"+e+"."+i))),f=c.map((e=>n(2351)("./"+e+"."+i))),p=[].concat((0,r.A)(m),(0,r.A)(f)),_=(await Promise.all(p)).map(((e,t)=>({script:e,name:d[t]})));return new Promise((e=>e(_)))},m=async(e,t,a)=>{const{reactScriptExtension:i}=await(0,o.Bz)(e),l=s(t),c=u(t),d=[].concat((0,r.A)(l),(0,r.A)(c)),m=l.map((e=>n(1735)("./"+a+"/"+e+"."+i))),f=c.map((e=>n(1735)("./"+e+"."+i))),p=[].concat((0,r.A)(m),(0,r.A)(f)),_=(await Promise.all(p)).map(((e,t)=>({script:e,name:d[t]})));return new Promise((e=>e(_)))}},3125:function(e,t,n){"use strict";n.d(t,{R:function(){return a}});var r=n(1672),o=n(5399);const a=e=>{const t=Object.values(r.LC).filter((t=>e.match("from '"+t+"'")));return(0,o.rJ)(t).plugins}},5378:function(e,t,n){"use strict";n.d(t,{c:function(){return m},y:function(){return d}});var r=n(3057),o=n(1664),a=n(4702),i=n(6341),s=n(8237);const l=(0,r.css)(["@import url('https://fonts.googleapis.com/css2?family=Inter:wght@100..900&display=swap');html{-webkit-text-size-adjust:100%;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;box-sizing:border-box;line-height:1.15;background-color:",";font-size:",";font-family:Inter,'system-ui',-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Helvetica,Arial,sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol';}*,*::before,*::after{box-sizing:inherit;}body{background-color:",";color:",";font-size:",";line-height:1.65;}"],i.lm.BACKGROUND_SITE,s.X,i.lm.BACKGROUND_SITE,i.lm.TEXT_HIGH_CONTRAST,a.$.BODY),c=(0,r.css)([".header{font-size:2rem;font-weight:",";text-align:center;padding:4rem 2rem 2rem 2rem;margin:0;}"],a.s.BOLD),u=(0,r.css)([".footer{display:flex;justify-content:center;padding:2rem 2rem 4rem 2rem;}.footer__link{display:flex;align-items:center;background-color:transparent;text-decoration:none;text-align:center;font-weight:",";color:",";font-size:1.4rem;}.footer__link__svg{display:block;width:2rem;height:2rem;margin-right:1rem;fill:currentColor;}"],a.s.SEMI_BOLD,i.lm.TEXT_LOW_CONTRAST),d=(0,o.i)(l,i.Zy),m=(0,o.i)(c,u)},352:function(e,t,n){"use strict";n.d(t,{G:function(){return s}});var r=n(4041),o=n(408),a=n(3594),i=n(7564);const s=e=>{const{title:t,description:n,lang:s="en",url:l,children:c}=e,u=(0,o.Q)(),d=t+" | "+(0,i.fq)(u.title),m=n||u.description;return r.createElement(r.Fragment,null,r.createElement("html",{lang:s}),r.createElement("title",null,d),r.createElement("link",{rel:"canonical",href:l}),r.createElement("meta",{name:"description",content:m}),r.createElement("meta",{name:"og:title",content:t}),r.createElement("meta",{name:"og:description",content:m}),r.createElement("meta",{name:"og:type",content:"article"}),r.createElement("meta",{name:"og:locale",content:"en_EN"}),r.createElement("meta",{name:"og:url",content:l}),r.createElement("meta",{name:"og:site_name",content:(0,a.b)(u.siteUrl)}),r.createElement("meta",{name:"twitter:card",content:"summary"}),r.createElement("meta",{name:"twitter:creator",content:u.author}),r.createElement("meta",{name:"twitter:title",content:t}),r.createElement("meta",{name:"twitter:description",content:m}),c)}},1672:function(e,t,n){"use strict";n.d(t,{$b:function(){return f},Ap:function(){return p},HC:function(){return u},HQ:function(){return s},KH:function(){return o},LC:function(){return i},R6:function(){return d},Ug:function(){return m},gc:function(){return l},hz:function(){return c},uq:function(){return a}});var r=n(4393);const o={VANILLA_JS:"Vanilla",VANILLA_TS:"Vanilla + TypeScript",REACT_TS:"React + TypeScript",REACT_JS:"React"},a={JAVASCRIPT:"javascript",TYPESCRIPT:"typescript"},i={AUTOPLAY:"embla-carousel-autoplay",AUTO_SCROLL:"embla-carousel-auto-scroll",AUTO_HEIGHT:"embla-carousel-auto-height",CLASS_NAMES:"embla-carousel-class-names",FADE:"embla-carousel-fade"},s={FRAMEWORK:"framework",LOOP:"loop",DRAG_FREE:"dragFree",AXIS:"axis",DIRECTION:"direction",ACCESSIBILITY:"accessibility",SLIDE_SIZE:"slideSize",SLIDE_GAP_SIZE:"slideGapSize",EDGE_GAP:"edgeGap",ALIGN:"align",CONTAIN_SCROLL:"containScroll",SLIDES_TO_SCROLL:"slidesToScroll",NAVIGATION_PREV_NEXT_BUTTONS:"navigationPrevNextButtons",NAVIGATION_DOTS:"navigationDots",AUTOPLAY:"autoplay",WHEEL_GESTURES:"wheelGestures"},l="carousel-generator-form",c=r.F.ONE,u=/__replace_sandbox_repository_url__/g,d=/__replace_sandbox_title__/g,m=/__replace_sandbox_theme__/g,f=/const\sOPTIONS(.*)/,p=/const\sLOOP\s=\sfalse/},8312:function(e,t,n){"use strict";n.d(t,{F:function(){return r}});const r=e=>Array.from(Array(e).keys())},9874:function(e,t,n){"use strict";n.d(t,{b:function(){return a}});var r=n(6341),o=n(8988);const a=()=>{if(!o.B)return r.$.LIGHT;const e=r.tv+r.$.LIGHT;return document.documentElement.classList.contains(e)?r.$.LIGHT:r.$.DARK}},3525:function(e,t,n){"use strict";n.d(t,{g:function(){return a}});var r=n(4620);const o=n.n(r)(),a=async()=>{const[e,t,r,a]=await Promise.all([n.e(4832).then(n.t.bind(n,2406,23)),n.e(775).then(n.t.bind(n,6242,23)),n.e(7190).then(n.t.bind(n,7190,23)),n.e(4858).then(n.t.bind(n,3975,23))]),i={...o,parser:"html",plugins:[t]},s={...o,parser:"css",plugins:[r]},l={...o,parser:"babel",plugins:[a]},c={...o,parser:"babel-ts",plugins:[a]},u=(t,n)=>{let r="";try{r=e.format(t,n)}catch(o){console.warn("Prettier was not able to format file",o)}return r};return{prettierConfig:o,formatHtml:e=>u(e,i),formatCss:e=>u(e,s),formatJs:e=>u(e,l),formatTs:e=>u(e,c)}}},3594:function(e,t,n){"use strict";n.d(t,{b:function(){return r}});const r=e=>e.replace(/(^\w+:|^)\/\//,"")},5399:function(e,t,n){"use strict";n.d(t,{Bz:function(){return s},M8:function(){return m},Wb:function(){return d},Yy:function(){return l},rJ:function(){return c},rf:function(){return u}});var r=n(8330),o=n(3525),a=n(7564),i=n(1672);const s=async e=>{const{formatTs:t,formatJs:n}=await(0,o.g)(),r=e===i.uq.TYPESCRIPT,a=!r;return{isJavaScript:a,isTypeScript:r,vanillaScriptExtension:a?"js":"ts",reactScriptExtension:a?"jsx":"tsx",formatScript:r?t:n}},l=e=>Object.keys(e).map((t=>{const n=t,r=e[n];return{key:n,label:i.KH[n],createSandbox:r}})),c=e=>({plugins:{...(Array.isArray(e)?e:[e]).reduce(((e,t)=>({...e,[t]:r.dependencies[t]})),{})}}),u=e=>t=>t.replace("{}",JSON.stringify(e)),d=function(e){return void 0===e&&(e=!1),t=>t.replace("false",e.toString())},m=e=>({FIELD_NAME:e,ID:i.gc+"-"+(0,a.QA)(e)})},1664:function(e,t,n){"use strict";n.d(t,{i:function(){return r}});const r=function(){for(var e=arguments.length,t=new Array(e),n=0;ne+t.join("")),"")}},4620:function(e,t,n){e.exports=n(3211)},7154:function(e,t,n){"use strict";n.d(t,{A:function(){return U}});var r=n(4041);function o(e){return function(e){return"[object Object]"===Object.prototype.toString.call(e)}(e)||Array.isArray(e)}function a(e,t){const n=Object.keys(e),r=Object.keys(t);if(n.length!==r.length)return!1;return JSON.stringify(Object.keys(e.breakpoints||{}))===JSON.stringify(Object.keys(t.breakpoints||{}))&&n.every((n=>{const r=e[n],i=t[n];return"function"==typeof r?""+r==""+i:o(r)&&o(i)?a(r,i):r===i}))}function i(e){return e.concat().sort(((e,t)=>e.name>t.name?1:-1)).map((e=>e.options))}var s=n(107);function l(e){return"number"==typeof e}function c(e){return"string"==typeof e}function u(e){return"boolean"==typeof e}function d(e){return"[object Object]"===Object.prototype.toString.call(e)}function m(e){return Math.abs(e)}function f(e){return Math.sign(e)}function p(e,t){return m(e-t)}function _(e){return C(e).map(Number)}function b(e){return e[g(e)]}function g(e){return Math.max(0,e.length-1)}function h(e,t){return t===g(e)}function E(e,t){return void 0===t&&(t=0),Array.from(Array(e),((e,n)=>t+n))}function C(e){return Object.keys(e)}function y(e,t){return[e,t].reduce(((e,t)=>(C(t).forEach((n=>{const r=e[n],o=t[n],a=d(r)&&d(o);e[n]=a?y(r,o):o})),e)),{})}function x(e,t){return void 0!==t.MouseEvent&&e instanceof t.MouseEvent}function v(){let e=[];const t={add:function(n,r,o,a){let i;if(void 0===a&&(a={passive:!0}),"addEventListener"in n)n.addEventListener(r,o,a),i=()=>n.removeEventListener(r,o,a);else{const e=n;e.addListener(o),i=()=>e.removeListener(o)}return e.push(i),t},clear:function(){e=e.filter((e=>e()))}};return t}function S(e,t,n,r){const o=v(),a=1e3/60;let i=null,s=0,l=0;function c(e){if(!l)return;i||(i=e);const o=e-i;for(i=e,s+=o;s>=a;)n(),s-=a;const u=m(s/a);r(u),l&&t.requestAnimationFrame(c)}function u(){t.cancelAnimationFrame(l),i=null,s=0,l=0}return{init:function(){o.add(e,"visibilitychange",(()=>{e.hidden&&(i=null,s=0)}))},destroy:function(){u(),o.clear()},start:function(){l||(l=t.requestAnimationFrame(c))},stop:u,update:n,render:r}}function T(e,t){void 0===e&&(e=0),void 0===t&&(t=0);const n=m(e-t);function r(t){return tt}function a(e){return r(e)||o(e)}return{length:n,max:t,min:e,constrain:function(n){return a(n)?r(n)?e:t:n},reachedAny:a,reachedMax:o,reachedMin:r,removeOffset:function(e){return n?e-n*Math.ceil((e-t)/n):e}}}function w(e,t,n){const{constrain:r}=T(0,e),o=e+1;let a=i(t);function i(e){return n?m((o+e)%o):r(e)}function s(){return a}function l(){return w(e,s(),n)}const c={get:s,set:function(e){return a=i(e),c},add:function(e){return l().set(s()+e)},clone:l};return c}function A(e,t,n,r,o,a,i,s,l,c,d,_,b,g,h,E,C,y,S){const{cross:w,direction:A}=e,O=["INPUT","SELECT","TEXTAREA"],I={passive:!1},L=v(),P=v(),j=T(50,225).constrain(g.measure(20)),N={mouse:300,touch:400},B={mouse:500,touch:600},k=h?43:25;let D=!1,R=0,z=0,G=!1,F=!1,M=!1,H=!1;function U(e){if(!x(e,r)&&e.touches.length>=2)return V(e);const t=a.readPoint(e),n=a.readPoint(e,w),i=p(t,R),l=p(n,z);if(!F&&!H){if(!e.cancelable)return V(e);if(F=i>l,!F)return V(e)}const u=a.pointerMove(e);i>E&&(M=!0),c.useFriction(.3).useDuration(.75),s.start(),o.add(A(u)),e.preventDefault()}function V(e){const t=d.byDistance(0,!1).index!==_.get(),n=a.pointerUp(e)*(h?B:N)[H?"mouse":"touch"],r=function(e,t){const n=_.add(-1*f(e)),r=d.byDistance(e,!h).distance;return h||m(e)=2,s&&0!==e.button)return;if(function(e){const t=e.nodeName||"";return O.includes(t)}(e.target))return;G=!0,a.pointerDown(e),c.useFriction(0).useDuration(0),o.set(i),function(){const e=H?n:t;P.add(e,"touchmove",U,I).add(e,"touchend",V).add(e,"mousemove",U,I).add(e,"mouseup",V)}(),R=a.readPoint(e),z=a.readPoint(e,w),b.emit("pointerDown")}(s)}const l=t;L.add(l,"dragstart",(e=>e.preventDefault()),I).add(l,"touchmove",(()=>{}),I).add(l,"touchend",(()=>{})).add(l,"touchstart",s).add(l,"mousedown",s).add(l,"touchcancel",V).add(l,"contextmenu",V).add(l,"click",J,!0)},destroy:function(){L.clear(),P.clear()},pointerDown:function(){return G}}}function O(e,t){let n,r;function o(e){return e.timeStamp}function a(n,r){const o="client"+("x"===(r||e.scroll)?"X":"Y");return(x(n,t)?n:n.touches[0])[o]}return{pointerDown:function(e){return n=e,r=e,a(e)},pointerMove:function(e){const t=a(e)-a(r),i=o(e)-o(n)>170;return r=e,i&&(n=e),t},pointerUp:function(e){if(!n||!r)return 0;const t=a(r)-a(n),i=o(e)-o(n),s=o(e)-o(r)>170,l=t/i;return i&&!s&&m(l)>.1?l:0},readPoint:a}}function I(e,t,n,r,o,a,i){let s,l,c=[],d=!1;function f(e){return o.measureSize(i.measure(e))}return{init:function(o){if(!a)return;l=f(e),c=r.map(f),s=new ResizeObserver((i=>{d||(u(a)||a(o,i))&&function(a){for(const i of a){const a=i.target===e,s=r.indexOf(i.target),u=a?l:c[s];if(m(f(a?e:r[s])-u)>=.5){n.requestAnimationFrame((()=>{o.reInit(),t.emit("resize")}));break}}}(i)})),[e].concat(r).forEach((e=>s.observe(e)))},destroy:function(){s&&s.disconnect(),d=!0}}}function L(e,t,n,r,o){const a=o.measure(10),i=o.measure(50),s=T(.1,.99);let l=!1;function c(){return!l&&(!!e.reachedAny(n.get())&&!!e.reachedAny(t.get()))}return{shouldConstrain:c,constrain:function(o){if(!c())return;const l=e.reachedMin(t.get())?"min":"max",u=m(e[l]-t.get()),d=n.get()-t.get(),f=s.constrain(u/i);n.subtract(d*f),!o&&m(d)e.add(o)))}}}function j(e,t,n,r,o){const{reachedAny:a,removeOffset:i,constrain:s}=r;function l(e){return e.concat().sort(((e,t)=>m(e)-m(t)))[0]}function c(t,r){const o=[t,t+n,t-n];if(!e)return t;if(!r)return l(o);const a=o.filter((e=>f(e)===r));return a.length?l(a):b(o)-n}return{byDistance:function(n,r){const l=o.get()+n,{index:u,distance:d}=function(n){const r=e?i(n):s(n),o=t.map(((e,t)=>({diff:c(e-r,0),index:t}))).sort(((e,t)=>m(e.diff)-m(t.diff))),{index:a}=o[0];return{index:a,distance:r}}(l),f=!e&&a(l);return!r||f?{index:u,distance:n}:{index:u,distance:n+c(t[u]-d,0)}},byIndex:function(e,n){return{index:e,distance:c(t[e]-o.get(),n)}},shortcut:c}}function N(e){let t=e;function n(e){return l(e)?e:e.get()}return{get:function(){return t},set:function(e){t=n(e)},add:function(e){t+=n(e)},subtract:function(e){t-=n(e)}}}function B(e,t){const n="x"===e.scroll?function(e){return"translate3d("+e+"px,0px,0px)"}:function(e){return"translate3d(0px,"+e+"px,0px)"},r=t.style;let o=!1;return{clear:function(){o||(r.transform="",t.getAttribute("style")||t.removeAttribute("style"))},to:function(t){o||(r.transform=n(e.direction(t)))},toggleActive:function(e){o=!e}}}function k(e,t,n,r,o,a,i,s,l){const c=.5,u=_(o),d=_(o).reverse(),m=function(){const e=i[0];return b(p(d,e),n,!1)}().concat(function(){const e=t-i[0]-1;return b(p(u,e),-n,!0)}());function f(e,t){return e.reduce(((e,t)=>e-o[t]),t)}function p(e,t){return e.reduce(((e,n)=>f(e,t)>0?e.concat([n]):e),[])}function b(o,i,u){const d=function(e){return a.map(((n,o)=>({start:n-r[o]+c+e,end:n+t-c+e})))}(i);return o.map((t=>{const r=u?0:-n,o=u?n:0,a=u?"end":"start",i=d[t][a];return{index:t,loopPoint:i,slideLocation:N(-1),translate:B(e,l[t]),target:()=>s.get()>i?r:o}}))}return{canLoop:function(){return m.every((e=>{let{index:n}=e;return f(u.filter((e=>e!==n)),t)<=.1}))},clear:function(){m.forEach((e=>e.translate.clear()))},loop:function(){m.forEach((e=>{const{target:t,translate:n,slideLocation:r}=e,o=t();o!==r.get()&&(n.to(o),r.set(o))}))},loopPoints:m}}function D(e,t,n){let r,o=!1;return{init:function(a){n&&(r=new MutationObserver((e=>{o||(u(n)||n(a,e))&&function(e){for(const n of e)if("childList"===n.type){a.reInit(),t.emit("slidesChanged");break}}(e)})),r.observe(e,{childList:!0}))},destroy:function(){r&&r.disconnect(),o=!0}}}function R(e,t,n,r){const o={};let a,i=null,s=null,l=!1;return{init:function(){a=new IntersectionObserver((e=>{l||(e.forEach((e=>{const n=t.indexOf(e.target);o[n]=e})),i=null,s=null,n.emit("slidesInView"))}),{root:e.parentElement,threshold:r}),t.forEach((e=>a.observe(e)))},destroy:function(){a&&a.disconnect(),l=!0},get:function(e){if(void 0===e&&(e=!0),e&&i)return i;if(!e&&s)return s;const t=function(e){return C(o).reduce(((t,n)=>{const r=parseInt(n),{isIntersecting:a}=o[r];return(e&&a||!e&&!a)&&t.push(r),t}),[])}(e);return e&&(i=t),e||(s=t),t}}}function z(e,t,n,r,o,a,i,s,c){const{startEdge:u,endEdge:d,direction:f}=e,p=l(n);return{groupSlides:function(e){return p?function(e,t){return _(e).filter((e=>e%t==0)).map((n=>e.slice(n,n+t)))}(e,n):function(e){return e.length?_(e).reduce(((n,l,p)=>{const _=b(n)||0,h=0===_,E=l===g(e),C=o[u]-a[_][u],y=o[u]-a[l][d],x=!r&&h?f(i):0,v=m(y-(!r&&E?f(s):0)-(C+x));return p&&v>t+c&&n.push(l),E&&n.push(e.length),n}),[]).map(((t,n,r)=>{const o=Math.max(r[n-1]||0);return e.slice(o,t)})):[]}(e)}}}function G(e,t,n,r,o,a,i){const{align:s,axis:u,direction:d,startIndex:C,loop:y,duration:x,dragFree:G,dragThreshold:F,inViewThreshold:M,slidesToScroll:H,skipSnaps:U,containScroll:V,watchResize:J,watchSlides:X,watchDrag:Y}=a,W={measure:function(e){const{offsetTop:t,offsetLeft:n,offsetWidth:r,offsetHeight:o}=e;return{top:t,right:n+r,bottom:t+o,left:n,width:r,height:o}}},q=W.measure(t),$=n.map(W.measure),K=function(e,t){const n="rtl"===t,r="y"===e,o=!r&&n?-1:1;return{scroll:r?"y":"x",cross:r?"x":"y",startEdge:r?"top":n?"right":"left",endEdge:r?"bottom":n?"left":"right",measureSize:function(e){const{height:t,width:n}=e;return r?t:n},direction:function(e){return e*o}}}(u,d),Q=K.measureSize(q),Z=function(e){return{measure:function(t){return e*(t/100)}}}(Q),ee=function(e,t){const n={start:function(){return 0},center:function(e){return r(e)/2},end:r};function r(e){return t-e}return{measure:function(r,o){return c(e)?n[e](r):e(t,r,o)}}}(s,Q),te=!y&&!!V,ne=y||!!V,{slideSizes:re,slideSizesWithGaps:oe,startGap:ae,endGap:ie}=function(e,t,n,r,o,a){const{measureSize:i,startEdge:s,endEdge:l}=e,c=n[0]&&o,u=function(){if(!c)return 0;const e=n[0];return m(t[s]-e[s])}(),d=function(){if(!c)return 0;const e=a.getComputedStyle(b(r));return parseFloat(e.getPropertyValue("margin-"+l))}(),f=n.map(i),p=n.map(((e,t,n)=>{const r=!t,o=h(n,t);return r?f[t]+u:o?f[t]+d:n[t+1][s]-e[s]})).map(m);return{slideSizes:f,slideSizesWithGaps:p,startGap:u,endGap:d}}(K,q,$,n,ne,o),se=z(K,Q,H,y,q,$,ae,ie,2),{snaps:le,snapsAligned:ce}=function(e,t,n,r,o){const{startEdge:a,endEdge:i}=e,{groupSlides:s}=o,l=s(r).map((e=>b(e)[i]-e[0][a])).map(m).map(t.measure),c=r.map((e=>n[a]-e[a])).map((e=>-m(e))),u=s(c).map((e=>e[0])).map(((e,t)=>e+l[t]));return{snaps:c,snapsAligned:u}}(K,ee,q,$,se),ue=-b(le)+b(oe),{snapsContained:de,scrollContainLimit:me}=function(e,t,n,r,o){const a=T(-t+e,0),i=n.map(((e,t)=>{const{min:r,max:o}=a,i=a.constrain(e),s=!t,c=h(n,t);return s?o:c||l(r,i)?r:l(o,i)?o:i})).map((e=>parseFloat(e.toFixed(3)))),s=function(){const e=i[0],t=b(i);return T(i.lastIndexOf(e),i.indexOf(t)+1)}();function l(e,t){return p(e,t)<1}return{snapsContained:function(){if(t<=e+o)return[a.max];if("keepSnaps"===r)return i;const{min:n,max:l}=s;return i.slice(n,l)}(),scrollContainLimit:s}}(Q,ue,ce,V,2),fe=te?de:ce,{limit:pe}=function(e,t,n){const r=t[0];return{limit:T(n?r-e:b(t),r)}}(ue,fe,y),_e=w(g(fe),C,y),be=_e.clone(),ge=_(n),he=S(r,o,(()=>(e=>{let{dragHandler:t,scrollBody:n,scrollBounds:r,options:{loop:o}}=e;o||r.constrain(t.pointerDown()),n.seek()})(Pe)),(e=>((e,t)=>{let{scrollBody:n,translate:r,location:o,offsetLocation:a,scrollLooper:i,slideLooper:s,dragHandler:l,animation:c,eventHandler:u,scrollBounds:d,options:{loop:m}}=e;const f=n.velocity(),p=n.settled(),_=!d.shouldConstrain(),b=m?p:p&&_;b&&!l.pointerDown()&&(c.stop(),u.emit("settle")),b||u.emit("scroll"),a.set(o.get()-f+f*t),m&&(i.loop(n.direction()),s.loop()),r.to(a.get())})(Pe,e))),Ee=fe[_e.get()],Ce=N(Ee),ye=N(Ee),xe=N(Ee),ve=function(e,t,n,r,o){let a=0,i=0,s=r,l=o,c=e.get(),u=0;function d(e){return s=e,_}function p(e){return l=e,_}const _={direction:function(){return i},duration:function(){return s},velocity:function(){return a},seek:function(){const t=n.get()-e.get();let r=0;return s?(a+=t/s,a*=l,c+=a,e.add(a),r=c-u):(a=0,e.set(n),r=t),i=f(r),u=c,_},settled:function(){return m(n.get()-t.get())<.001},useBaseFriction:function(){return p(o)},useBaseDuration:function(){return d(r)},useFriction:p,useDuration:d};return _}(Ce,ye,xe,x,.68),Se=j(y,fe,ue,pe,xe),Te=function(e,t,n,r,o,a,i){function s(o){const s=o.distance,l=o.index!==t.get();a.add(s),s&&(r.duration()?e.start():(e.update(),e.render(1),e.update())),l&&(n.set(t.get()),t.set(o.index),i.emit("select"))}return{distance:function(e,t){s(o.byDistance(e,t))},index:function(e,n){const r=t.clone().set(e);s(o.byIndex(r.get(),n))}}}(he,_e,be,ve,Se,xe,i),we=function(e){const{max:t,length:n}=e;return{get:function(e){return n?(e-t)/-n:0}}}(pe),Ae=v(),Oe=R(t,n,i,M),{slideRegistry:Ie}=function(e,t,n,r,o,a){const{groupSlides:i}=o,{min:s,max:l}=r;return{slideRegistry:function(){const r=i(a),o=!e||"keepSnaps"===t;return 1===n.length?[a]:o?r:r.slice(s,l).map(((e,t,n)=>{const r=!t,o=h(n,t);return r?E(b(n[0])+1):o?E(g(a)-b(n)[0]+1,b(n)[0]):e}))}()}}(te,V,fe,me,se,ge),Le=function(e,t,n,r,o,a,i){let s=0;function c(e){"Tab"===e.code&&(s=(new Date).getTime())}function u(c){a.add(c,"focus",(()=>{if((new Date).getTime()-s>10)return;e.scrollLeft=0;const a=t.indexOf(c),u=n.findIndex((e=>e.includes(a)));l(u)&&(o.useDuration(0),r.index(u,0),i.emit("slideFocus"))}),{passive:!0,capture:!0})}return{init:function(){a.add(document,"keydown",c,!1),t.forEach(u)}}}(e,n,Ie,Te,ve,Ae,i),Pe={ownerDocument:r,ownerWindow:o,eventHandler:i,containerRect:q,slideRects:$,animation:he,axis:K,dragHandler:A(K,e,r,o,xe,O(K,o),Ce,he,Te,ve,Se,_e,i,Z,G,F,U,.68,Y),eventStore:Ae,percentOfView:Z,index:_e,indexPrevious:be,limit:pe,location:Ce,offsetLocation:ye,options:a,resizeHandler:I(t,i,o,n,K,J,W),scrollBody:ve,scrollBounds:L(pe,ye,xe,ve,Z),scrollLooper:P(ue,pe,ye,[Ce,ye,xe]),scrollProgress:we,scrollSnapList:fe.map(we.get),scrollSnaps:fe,scrollTarget:Se,scrollTo:Te,slideLooper:k(K,Q,ue,re,oe,le,fe,ye,n),slideFocus:Le,slidesHandler:D(t,i,X),slidesInView:Oe,slideIndexes:ge,slideRegistry:Ie,slidesToScroll:se,target:xe,translate:B(K,t)};return Pe}const F={align:"center",axis:"x",container:null,slides:null,containScroll:"trimSnaps",direction:"ltr",slidesToScroll:1,inViewThreshold:0,breakpoints:{},dragFree:!1,dragThreshold:10,loop:!1,skipSnaps:!1,duration:25,startIndex:0,active:!0,watchDrag:!0,watchResize:!0,watchSlides:!0};function M(e){function t(e,t){return y(e,t||{})}const n={mergeOptions:t,optionsAtMedia:function(n){const r=n.breakpoints||{},o=C(r).filter((t=>e.matchMedia(t).matches)).map((e=>r[e])).reduce(((e,n)=>t(e,n)),{});return t(n,o)},optionsMediaQueries:function(t){return t.map((e=>C(e.breakpoints||{}))).reduce(((e,t)=>e.concat(t)),[]).map(e.matchMedia)}};return n}function H(e,t,n){const r=e.ownerDocument,o=r.defaultView,a=M(o),i=function(e){let t=[];return{init:function(n,r){return t=r.filter((t=>{let{options:n}=t;return!1!==e.optionsAtMedia(n).active})),t.forEach((t=>t.init(n,e))),r.reduce(((e,t)=>Object.assign(e,{[t.name]:t})),{})},destroy:function(){t=t.filter((e=>e.destroy()))}}}(a),l=v(),u=function(){let e,t={};function n(e){return t[e]||[]}const r={init:function(t){e=t},emit:function(t){return n(t).forEach((n=>n(e,t))),r},off:function(e,o){return t[e]=n(e).filter((e=>e!==o)),r},on:function(e,o){return t[e]=n(e).concat([o]),r},clear:function(){t={}}};return r}(),{mergeOptions:d,optionsAtMedia:m,optionsMediaQueries:f}=a,{on:p,off:_,emit:b}=u,g=I;let h,E,C,y,x=!1,S=d(F,H.globalOptions),T=d(S),w=[];function A(t){const n=G(e,C,y,r,o,t,u);if(t.loop&&!n.slideLooper.canLoop()){return A(Object.assign({},t,{loop:!1}))}return n}function O(t,n){x||(S=d(S,t),T=m(S),w=n||w,function(){const{container:t,slides:n}=T,r=c(t)?e.querySelector(t):t;C=r||e.children[0];const o=c(n)?C.querySelectorAll(n):n;y=[].slice.call(o||C.children)}(),h=A(T),f([S].concat((0,s.A)(w.map((e=>{let{options:t}=e;return t}))))).forEach((e=>l.add(e,"change",I))),T.active&&(h.translate.to(h.location.get()),h.animation.init(),h.slidesInView.init(),h.slideFocus.init(),h.eventHandler.init(N),h.resizeHandler.init(N),h.slidesHandler.init(N),h.options.loop&&h.slideLooper.loop(),C.offsetParent&&y.length&&h.dragHandler.init(N),E=i.init(N,w)))}function I(e,t){const n=j();L(),O(d({startIndex:n},e),t),u.emit("reInit")}function L(){h.dragHandler.destroy(),h.eventStore.clear(),h.translate.clear(),h.slideLooper.clear(),h.resizeHandler.destroy(),h.slidesHandler.destroy(),h.slidesInView.destroy(),h.animation.destroy(),i.destroy(),l.clear()}function P(e,t,n){T.active&&!x&&(h.scrollBody.useBaseFriction().useDuration(!0===t?0:T.duration),h.scrollTo.index(e,n||0))}function j(){return h.index.get()}const N={canScrollNext:function(){return h.index.add(1).get()!==j()},canScrollPrev:function(){return h.index.add(-1).get()!==j()},containerNode:function(){return C},internalEngine:function(){return h},destroy:function(){x||(x=!0,l.clear(),L(),u.emit("destroy"),u.clear())},off:_,on:p,emit:b,plugins:function(){return E},previousScrollSnap:function(){return h.indexPrevious.get()},reInit:g,rootNode:function(){return e},scrollNext:function(e){P(h.index.add(1).get(),e,-1)},scrollPrev:function(e){P(h.index.add(-1).get(),e,1)},scrollProgress:function(){return h.scrollProgress.get(h.location.get())},scrollSnapList:function(){return h.scrollSnapList},scrollTo:P,selectedScrollSnap:j,slideNodes:function(){return y},slidesInView:function(){return h.slidesInView.get()},slidesNotInView:function(){return h.slidesInView.get(!1)}};return O(t,n),setTimeout((()=>u.emit("init")),0),N}function U(e,t){void 0===e&&(e={}),void 0===t&&(t=[]);const n=(0,r.useRef)(e),o=(0,r.useRef)(t),{0:s,1:l}=(0,r.useState)(),{0:c,1:u}=(0,r.useState)(),d=(0,r.useCallback)((()=>{s&&s.reInit(n.current,o.current)}),[s]);return(0,r.useEffect)((()=>{if("undefined"!=typeof window&&window.document&&window.document.createElement&&c){H.globalOptions=U.globalOptions;const e=H(c,n.current,o.current);return l(e),()=>e.destroy()}l(void 0)}),[c,l]),(0,r.useEffect)((()=>{a(n.current,e)||(n.current=e,d())}),[e,d]),(0,r.useEffect)((()=>{(function(e,t){if(e.length!==t.length)return!1;const n=i(e),r=i(t);return n.every(((e,t)=>a(e,r[t])))})(o.current,t)||(o.current=t,d())}),[t,d]),[u,s]}H.globalOptions=void 0,U.globalOptions=void 0},683:function(e,t,n){var r,o=function(){var e=String.fromCharCode,t="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",n="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+-$",r={};function o(e,t){if(!r[e]){r[e]={};for(var n=0;n>>8,n[2*r+1]=i%256}return n},decompressFromUint8Array:function(t){if(null==t)return a.decompress(t);for(var n=new Array(t.length/2),r=0,o=n.length;r>=1}else{for(o=1,r=0;r>=1}0==--d&&(d=Math.pow(2,f),f++),delete s[u]}else for(o=i[u],r=0;r>=1;0==--d&&(d=Math.pow(2,f),f++),i[c]=m++,u=String(l)}if(""!==u){if(Object.prototype.hasOwnProperty.call(s,u)){if(u.charCodeAt(0)<256){for(r=0;r>=1}else{for(o=1,r=0;r>=1}0==--d&&(d=Math.pow(2,f),f++),delete s[u]}else for(o=i[u],r=0;r>=1;0==--d&&(d=Math.pow(2,f),f++)}for(o=2,r=0;r>=1;for(;;){if(_<<=1,b==t-1){p.push(n(_));break}b++}return p.join("")},decompress:function(e){return null==e?"":""==e?null:a._decompress(e.length,32768,(function(t){return e.charCodeAt(t)}))},_decompress:function(t,n,r){var o,a,i,s,l,c,u,d=[],m=4,f=4,p=3,_="",b=[],g={val:r(0),position:n,index:1};for(o=0;o<3;o+=1)d[o]=o;for(i=0,l=Math.pow(2,2),c=1;c!=l;)s=g.val&g.position,g.position>>=1,0==g.position&&(g.position=n,g.val=r(g.index++)),i|=(s>0?1:0)*c,c<<=1;switch(i){case 0:for(i=0,l=Math.pow(2,8),c=1;c!=l;)s=g.val&g.position,g.position>>=1,0==g.position&&(g.position=n,g.val=r(g.index++)),i|=(s>0?1:0)*c,c<<=1;u=e(i);break;case 1:for(i=0,l=Math.pow(2,16),c=1;c!=l;)s=g.val&g.position,g.position>>=1,0==g.position&&(g.position=n,g.val=r(g.index++)),i|=(s>0?1:0)*c,c<<=1;u=e(i);break;case 2:return""}for(d[3]=u,a=u,b.push(u);;){if(g.index>t)return"";for(i=0,l=Math.pow(2,p),c=1;c!=l;)s=g.val&g.position,g.position>>=1,0==g.position&&(g.position=n,g.val=r(g.index++)),i|=(s>0?1:0)*c,c<<=1;switch(u=i){case 0:for(i=0,l=Math.pow(2,8),c=1;c!=l;)s=g.val&g.position,g.position>>=1,0==g.position&&(g.position=n,g.val=r(g.index++)),i|=(s>0?1:0)*c,c<<=1;d[f++]=e(i),u=f-1,m--;break;case 1:for(i=0,l=Math.pow(2,16),c=1;c!=l;)s=g.val&g.position,g.position>>=1,0==g.position&&(g.position=n,g.val=r(g.index++)),i|=(s>0?1:0)*c,c<<=1;d[f++]=e(i),u=f-1,m--;break;case 2:return b.join("")}if(0==m&&(m=Math.pow(2,p),p++),d[u])_=d[u];else{if(u!==f)return null;_=a+a.charAt(0)}b.push(_),d[f++]=a+_.charAt(0),a=_,0==--m&&(m=Math.pow(2,p),p++)}}};return a}();void 0===(r=function(){return o}.call(t,n,t,e))||(e.exports=r)},824:function(e,t,n){"use strict";t.A=n.p+"static/maskable-36b9e327abc26d5d02e9350d184a058f.png"},1735:function(e,t,n){var r={"./AutoHeight/EmblaCarousel":[4439,4439],"./AutoHeight/EmblaCarousel.jsx":[4439,4439],"./AutoHeight/EmblaCarousel.tsx":[3405,3405],"./AutoScroll/EmblaCarousel":[2885,2885],"./AutoScroll/EmblaCarousel.jsx":[2885,2885],"./AutoScroll/EmblaCarousel.tsx":[6831,6831],"./Autoplay/EmblaCarousel":[6652,6652],"./Autoplay/EmblaCarousel.jsx":[6652,6652],"./Autoplay/EmblaCarousel.tsx":[6158,6158],"./CarouselDefaultEntry":[5566,5566],"./CarouselDefaultEntry.jsx":[5566,5566],"./CarouselDefaultEntry.tsx":[460,460],"./CarouselGenerator/EmblaCarousel":[4910,4910],"./CarouselGenerator/EmblaCarousel.jsx":[4910,4910],"./CarouselGenerator/EmblaCarousel.tsx":[5404,5404],"./CarouselGenerator/EmblaCarouselArrowButtons":[4720,4720],"./CarouselGenerator/EmblaCarouselArrowButtons.jsx":[4720,4720],"./CarouselGenerator/EmblaCarouselArrowButtons.tsx":[2682,2682],"./CarouselGenerator/EmblaCarouselDotButton":[893,893],"./CarouselGenerator/EmblaCarouselDotButton.jsx":[893,893],"./CarouselGenerator/EmblaCarouselDotButton.tsx":[8855,8855],"./CarouselGenerator/EmblaCarouselSelectedSnapDisplay":[6807,6807],"./CarouselGenerator/EmblaCarouselSelectedSnapDisplay.jsx":[6807,6807],"./CarouselGenerator/EmblaCarouselSelectedSnapDisplay.tsx":[9421,9421],"./CarouselIosPickerEntry":[7700,7700],"./CarouselIosPickerEntry.jsx":[7700,7700],"./CarouselIosPickerEntry.tsx":[6,6],"./ClassNames/EmblaCarousel":[5223,5223],"./ClassNames/EmblaCarousel.jsx":[5223,5223],"./ClassNames/EmblaCarousel.tsx":[6429,6429],"./EmblaCarouselArrowButtons":[1920,1920],"./EmblaCarouselArrowButtons.jsx":[1920,1920],"./EmblaCarouselArrowButtons.tsx":[6458,6458],"./EmblaCarouselDotButton":[6237,6237],"./EmblaCarouselDotButton.jsx":[6237,6237],"./EmblaCarouselDotButton.tsx":[5207,5207],"./EmblaCarouselSelectedSnapDisplay":[6356,3975],"./EmblaCarouselSelectedSnapDisplay.jsx":[6356,3975],"./EmblaCarouselSelectedSnapDisplay.tsx":[6013,6013],"./Fade/EmblaCarousel":[221,221],"./Fade/EmblaCarousel.jsx":[221,221],"./Fade/EmblaCarousel.tsx":[8183,8183],"./Footer":[8728,8728],"./Footer.jsx":[8728,8728],"./Footer.tsx":[9474,9474],"./Header":[5266,5266],"./Header.jsx":[5266,5266],"./Header.tsx":[3400,3400],"./InfiniteScroll/EmblaCarousel":[7032,7032],"./InfiniteScroll/EmblaCarousel.jsx":[7032,7032],"./InfiniteScroll/EmblaCarousel.tsx":[8898,8898],"./IosPicker/EmblaCarousel":[6958,6958],"./IosPicker/EmblaCarousel.jsx":[6958,6958],"./IosPicker/EmblaCarousel.tsx":[1852,1852],"./IosPicker/EmblaCarouselIosPickerItem":[3348,3348],"./IosPicker/EmblaCarouselIosPickerItem.jsx":[3348,3348],"./IosPicker/EmblaCarouselIosPickerItem.tsx":[7142,7142],"./LazyLoad/EmblaCarousel":[1897,1897],"./LazyLoad/EmblaCarousel.jsx":[1897,1897],"./LazyLoad/EmblaCarousel.tsx":[8683,8683],"./LazyLoad/EmblaCarouselLazyLoadImage":[3376,3376],"./LazyLoad/EmblaCarouselLazyLoadImage.jsx":[3376,3376],"./LazyLoad/EmblaCarouselLazyLoadImage.tsx":[4618,4618],"./Opacity/EmblaCarousel":[2260,2260],"./Opacity/EmblaCarousel.jsx":[2260,2260],"./Opacity/EmblaCarousel.tsx":[7862,7862],"./Parallax/EmblaCarousel":[3862,3862],"./Parallax/EmblaCarousel.jsx":[3862,3862],"./Parallax/EmblaCarousel.tsx":[9844,9844],"./Progress/EmblaCarousel":[3146,3146],"./Progress/EmblaCarousel.jsx":[3146,3146],"./Progress/EmblaCarousel.tsx":[9360,9360],"./Scale/EmblaCarousel":[3734,3734],"./Scale/EmblaCarousel.jsx":[3734,3734],"./Scale/EmblaCarousel.tsx":[7387,7387],"./Thumbs/EmblaCarousel":[72,72],"./Thumbs/EmblaCarousel.jsx":[72,72],"./Thumbs/EmblaCarousel.tsx":[9122,9122],"./Thumbs/EmblaCarouselThumbsButton":[2875,2875],"./Thumbs/EmblaCarouselThumbsButton.jsx":[2875,2875],"./Thumbs/EmblaCarouselThumbsButton.tsx":[6841,6841],"./index.html":[8269,8269]};function o(e){if(!n.o(r,e))return Promise.resolve().then((function(){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}));var t=r[e],o=t[0];return n.e(t[1]).then((function(){return n(o)}))}o.keys=function(){return Object.keys(r)},o.id=1735,e.exports=o},7182:function(e,t,n){var r={"./CarouselDefaultEntry.jsx":[5566,5566],"./CarouselDefaultEntry.tsx":[460,460]};function o(e){if(!n.o(r,e))return Promise.resolve().then((function(){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}));var t=r[e],o=t[0];return n.e(t[1]).then((function(){return n(o)}))}o.keys=function(){return Object.keys(r)},o.id=7182,e.exports=o},348:function(e,t,n){var r={"./CarouselIosPickerEntry.jsx":[7700,7700],"./CarouselIosPickerEntry.tsx":[6,6]};function o(e){if(!n.o(r,e))return Promise.resolve().then((function(){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}));var t=r[e],o=t[0];return n.e(t[1]).then((function(){return n(o)}))}o.keys=function(){return Object.keys(r)},o.id=348,e.exports=o},2804:function(e,t,n){var r={"./Footer.jsx":[8728,8728],"./Footer.tsx":[9474,9474]};function o(e){if(!n.o(r,e))return Promise.resolve().then((function(){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}));var t=r[e],o=t[0];return n.e(t[1]).then((function(){return n(o)}))}o.keys=function(){return Object.keys(r)},o.id=2804,e.exports=o},4502:function(e,t,n){var r={"./Header.jsx":[5266,5266],"./Header.tsx":[3400,3400]};function o(e){if(!n.o(r,e))return Promise.resolve().then((function(){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}));var t=r[e],o=t[0];return n.e(t[1]).then((function(){return n(o)}))}o.keys=function(){return Object.keys(r)},o.id=4502,e.exports=o},2351:function(e,t,n){var r={"./AutoHeight/EmblaCarousel":[9361,9361],"./AutoHeight/EmblaCarousel.js":[9361,9361],"./AutoHeight/EmblaCarousel.ts":[6827,6827],"./AutoScroll/EmblaCarousel":[7419,7419],"./AutoScroll/EmblaCarousel.js":[7419,7419],"./AutoScroll/EmblaCarousel.ts":[8193,8193],"./AutoScroll/EmblaCarouselAutoScroll":[3165,3165],"./AutoScroll/EmblaCarouselAutoScroll.js":[3165,3165],"./AutoScroll/EmblaCarouselAutoScroll.ts":[8591,8591],"./Autoplay/EmblaCarousel":[6200,6200],"./Autoplay/EmblaCarousel.js":[6200,6200],"./Autoplay/EmblaCarousel.ts":[374,374],"./Autoplay/EmblaCarouselAutoplay":[3325,3325],"./Autoplay/EmblaCarouselAutoplay.js":[3325,3325],"./Autoplay/EmblaCarouselAutoplay.ts":[5743,5743],"./CarouselGenerator/EmblaCarousel":[6518,6518],"./CarouselGenerator/EmblaCarousel.js":[6518,6518],"./CarouselGenerator/EmblaCarousel.ts":[6040,6040],"./CarouselGenerator/EmblaCarouselArrowButtons":[8692,8692],"./CarouselGenerator/EmblaCarouselArrowButtons.js":[8692,8692],"./CarouselGenerator/EmblaCarouselArrowButtons.ts":[9178,9178],"./CarouselGenerator/EmblaCarouselDotButton":[83,83],"./CarouselGenerator/EmblaCarouselDotButton.js":[83,83],"./CarouselGenerator/EmblaCarouselDotButton.ts":[1353,1353],"./CarouselGenerator/EmblaCarouselSelectedSnapDisplay":[6825,6825],"./CarouselGenerator/EmblaCarouselSelectedSnapDisplay.js":[6825,6825],"./CarouselGenerator/EmblaCarouselSelectedSnapDisplay.ts":[5555,5555],"./CarouselGenerator/embla-carousel.html":[7673,7673],"./CarouselGenerator/slide.html":[2548,2548],"./ClassNames/EmblaCarousel":[9105,9105],"./ClassNames/EmblaCarousel.js":[9105,9105],"./ClassNames/EmblaCarousel.ts":[4987,4987],"./EmblaCarouselArrowButtons":[3676,3676],"./EmblaCarouselArrowButtons.js":[3676,3676],"./EmblaCarouselArrowButtons.ts":[1650,1650],"./EmblaCarouselDotButton":[5259,5259],"./EmblaCarouselDotButton.js":[5259,5259],"./EmblaCarouselDotButton.ts":[9377,9377],"./Fade/EmblaCarousel":[8939,8939],"./Fade/EmblaCarousel.js":[8939,8939],"./Fade/EmblaCarousel.ts":[6065,6065],"./InfiniteScroll/EmblaCarousel":[7340,7340],"./InfiniteScroll/EmblaCarousel.js":[7340,7340],"./InfiniteScroll/EmblaCarousel.ts":[1618,1618],"./InfiniteScroll/EmblaCarouselInfiniteScroll":[2709,2709],"./InfiniteScroll/EmblaCarouselInfiniteScroll.js":[2709,2709],"./InfiniteScroll/EmblaCarouselInfiniteScroll.ts":[5917,679],"./IosPicker/EmblaCarousel":[7238,7238],"./IosPicker/EmblaCarousel.js":[7238,7238],"./IosPicker/EmblaCarousel.ts":[4824,2443],"./IosPicker/EmblaCarouselIosPicker":[7787,7787],"./IosPicker/EmblaCarouselIosPicker.js":[7787,7787],"./IosPicker/EmblaCarouselIosPicker.ts":[4913,4913],"./LazyLoad/EmblaCarousel":[7703,7703],"./LazyLoad/EmblaCarousel.js":[7703,7703],"./LazyLoad/EmblaCarousel.ts":[6677,6677],"./LazyLoad/EmblaCarouselLazyLoad":[9157,9157],"./LazyLoad/EmblaCarouselLazyLoad.js":[9157,9157],"./LazyLoad/EmblaCarouselLazyLoad.ts":[8071,8071],"./Opacity/EmblaCarousel":[4776,4776],"./Opacity/EmblaCarousel.js":[4776,4776],"./Opacity/EmblaCarousel.ts":[8950,8950],"./Opacity/EmblaCarouselTweenOpacity":[5804,5804],"./Opacity/EmblaCarouselTweenOpacity.js":[5804,5804],"./Opacity/EmblaCarouselTweenOpacity.ts":[6786,6786],"./Parallax/EmblaCarousel":[3590,3590],"./Parallax/EmblaCarousel.js":[3590,3590],"./Parallax/EmblaCarousel.ts":[2443,4824],"./Parallax/EmblaCarouselTweenParallax":[1288,1288],"./Parallax/EmblaCarouselTweenParallax.js":[1288,1288],"./Parallax/EmblaCarouselTweenParallax.ts":[3878,3878],"./Progress/EmblaCarousel":[6397,8778],"./Progress/EmblaCarousel.js":[6397,8778],"./Progress/EmblaCarousel.ts":[4596,4596],"./Progress/EmblaCarouselProgressBar":[4032,4032],"./Progress/EmblaCarouselProgressBar.js":[4032,4032],"./Progress/EmblaCarouselProgressBar.ts":[334,334],"./Scale/EmblaCarousel":[3615,3615],"./Scale/EmblaCarousel.js":[3615,3615],"./Scale/EmblaCarousel.ts":[1485,1485],"./Scale/EmblaCarouselTweenScale":[7892,7892],"./Scale/EmblaCarouselTweenScale.js":[7892,7892],"./Scale/EmblaCarouselTweenScale.ts":[8378,8378],"./Thumbs/EmblaCarousel":[8804,8804],"./Thumbs/EmblaCarousel.js":[8804,8804],"./Thumbs/EmblaCarousel.ts":[9290,9290],"./Thumbs/EmblaCarouselThumbsButton":[1797,1797],"./Thumbs/EmblaCarouselThumbsButton.js":[1797,1797],"./Thumbs/EmblaCarouselThumbsButton.ts":[711,711],"./index.html":[7265,7265]};function o(e){if(!n.o(r,e))return Promise.resolve().then((function(){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}));var t=r[e],o=t[0];return n.e(t[1]).then((function(){return n(o)}))}o.keys=function(){return Object.keys(r)},o.id=2351,e.exports=o}}]); +//# sourceMappingURL=95da5ec31316267b433b7b2e2bbaca0a1c0b9c0a-9db511b4935758553259.js.map \ No newline at end of file diff --git a/docs/95da5ec31316267b433b7b2e2bbaca0a1c0b9c0a-9db511b4935758553259.js.map b/docs/95da5ec31316267b433b7b2e2bbaca0a1c0b9c0a-9db511b4935758553259.js.map new file mode 100644 index 000000000..757e0f150 --- /dev/null +++ b/docs/95da5ec31316267b433b7b2e2bbaca0a1c0b9c0a-9db511b4935758553259.js.map @@ -0,0 +1 @@ +{"version":3,"file":"95da5ec31316267b433b7b2e2bbaca0a1c0b9c0a-9db511b4935758553259.js","mappings":"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AC,EACAC,IAEOH,EACLC,EACAC,EACAC,GACAG,EAAAA,EAAAA,GAA+BhD,EAAqByB,IAI3CkC,EAAiCA,CAC5ChB,EACAC,EACAC,IAEOH,EACLC,EACAC,EACAC,GACAG,EAAAA,EAAAA,GACEhD,EACAO,EACAE,EACAmB,IAKOgC,EAAiCA,CAC5CjB,EACAC,EACAC,IAEOH,EACLC,EACAC,EACAC,GACAG,EAAAA,EAAAA,GACE3C,EACAE,EACAE,EACAQ,EACAa,IAKO+B,EAA8BA,CACzClB,EACAC,EACAC,IAEOH,EACLC,EACAC,EACAC,GACAG,EAAAA,EAAAA,GACEhD,EACAO,EACAE,EACAQ,EACAc,IAKO+B,EAAgCA,CAC3CnB,EACAC,EACAC,IAEOH,EACLC,EACAC,EACAC,GACAG,EAAAA,EAAAA,GACE3C,EACAE,EACAE,EACAQ,IAKO8C,EAAiCA,CAC5CpB,EACAC,EACAC,IAEOH,EACLC,EACAC,EACAC,GACAG,EAAAA,EAAAA,GACEhD,EACAO,EACAE,EACAW,IAKO4C,EAAmCA,CAC9CrB,EACAC,EACAC,IAEOH,EACLC,EACAC,EACAC,GACAG,EAAAA,EAAAA,GACEhD,EACAO,EACAE,EACAQ,EACAmB,IAKO6B,EAAmCA,CAC9CtB,EACAC,EACAC,IAEOH,EACLC,EACAC,EACAC,GACAG,EAAAA,EAAAA,GACE3C,EACAE,EACAE,EACAQ,EACAoB,IAKO6B,GAA6BA,CACxCvB,EACAC,EACAC,IAEOH,EACLC,EACAC,EACAC,GACAG,EAAAA,EAAAA,GACE3C,EACAE,EACAE,EACAQ,EACAqB,IAKO6B,GAAiCA,CAC5CxB,EACAC,EACAC,IAEOH,EACLC,EACAC,EACAC,GACAG,EAAAA,EAAAA,GACE3C,EACAE,EACAE,EACAQ,EACAe,IAKOoC,GAAuCA,CAClDzB,EACAC,EACAC,IAEOH,EACLC,EACAC,EACAC,GACAG,EAAAA,EAAAA,GACEhD,EACAO,EACAE,EACAS,EACAqB,IAKO8B,GAAkCA,KACtCrB,EAAAA,EAAAA,GAA+BR,E,wJC/4BxC,MAAM8B,EAAyBC,EAAAA,QAA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3D2S,EAAS2Z,KAEdjU,EAAW0C,YAAY,GACvB3C,EAASpY,MAAMssB,EAAO,GACtB/T,EAAauD,KAAK,cAAa,GAGK,CACpC1G,SAAS,EACTgY,SAAS,GAEb,CAKA,MAH6B,CAC3BxW,KAlCF,WACEqV,EAAWlX,IAAItG,SAAU,UAAWke,GAAkB,GACtDzpB,EAAOoR,QAAQ0Y,EACjB,EAkCF,CVoMqBK,CACjBjJ,EACAlhB,EACAipB,GACA/T,GACAC,GACA4T,GACA1T,GAII+R,GAAqB,CACzBzU,gBACAnB,cACA6D,eACAwM,gBACAC,aACA7M,aACAlb,OACAmtB,YAAatS,EACX7a,EACAmnB,EACAvO,EACAnB,EACAsD,GACA4E,EAAY3f,EAAMyX,GAClBwD,GACAC,GACAC,GACAC,GACAC,GACAtY,GACAuY,EACAC,EACAC,EACAC,EACAC,EAhFa,IAkFbE,GAEFoT,cACAzT,gBACAxY,SACAkqB,iBACAtL,SACA1G,YACA2G,kBACA1b,UACAmqB,cAAehQ,EACbC,EACAhF,EACA7D,EACAxR,EACAjG,EACAugB,EACAC,GAEFpF,cACA+Q,aAAczK,EACZC,GACAC,GACA7G,GACAK,GACAG,GAEFgS,aAAc9K,EAAaC,GAAaf,GAAOC,GAAgB,CAC7D3G,GACA2G,GACA7G,KAEF+T,kBACAwB,eAAgBtN,GAAYngB,IAAIisB,GAAepU,KAC/CsI,eACA3H,gBACAF,YACAqS,YAAa/I,EACXzkB,EACA0kB,EACAhC,GACA/B,GACAgE,GACAC,GACA5B,GACApB,GACA3b,GAEFupB,cACAe,cAAelK,EAAc/F,EAAWhF,EAAcgL,GACtD2I,gBACA1H,gBACA2H,iBACArH,kBACA9M,UACAoJ,UAAWD,EAAUlkB,EAAMsgB,IAG7B,OAAO+M,EACT,CWxTO,MAAMmD,EAA8B,CACzCjH,MAAO,SACPvpB,KAAM,IACNsgB,UAAW,KACXra,OAAQ,KACR2jB,cAAe,YACf7N,UAAW,MACX8L,eAAgB,EAChB8B,gBAAiB,EACjB1U,YAAa,CAAC,EACduG,UAAU,EACVC,cAAe,GACftV,MAAM,EACNuV,WAAW,EACXgO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AMgV,OAAO,GAG1CwC,EAAIxX,EAEa,KAJjB8X,IAKEA,EAAYhjB,KAAKuiB,IAAI,EAAGW,GACxBA,IAGJ,CACF,GAEA,OAAOx+B,CACR,CArec,QAwe0B,KAAvC,aAAqB,OAAOA,CAAW,+B,mCCjfzC,IAAe,IAA0B,sD,uBCAzC,IAAIoI,EAAM,CACT,6BAA8B,CAC7B,KACA,MAED,iCAAkC,CACjC,KACA,MAED,iCAAkC,CACjC,KACA,MAED,6BAA8B,CAC7B,KACA,MAED,iCAAkC,CACjC,KACA,MAED,iCAAkC,CACjC,KACA,MAED,2BAA4B,CAC3B,KACA,MAED,+BAAgC,CAC/B,KACA,MAED,+BAAgC,CAC/B,KACA,MAED,yBAA0B,CACzB,KACA,MAED,6BAA8B,CAC7B,KACA,MAED,6BAA8B,CAC7B,IACA,KAED,oCAAqC,CACpC,KACA,MAED,wCAAyC,CACxC,KACA,MAED,wCAAyC,CACxC,KACA,MAED,gDAAiD,CAChD,KACA,MAED,oDAAqD,CACpD,KACA,MAED,oDAAqD,CACpD,KACA,MAED,6CAA8C,CAC7C,IACA,KAED,iDAAkD,CACjD,IACA,KAED,iDAAkD,CACjD,KACA,MAED,uDAAwD,CACvD,KACA,MAED,2DAA4D,CAC3D,KACA,MAED,2DAA4D,CAC3D,KACA,MAED,2BAA4B,CAC3B,KACA,MAED,+BAAgC,CAC/B,KACA,MAED,+BAAgC,CAC/B,EACA,GAED,6BAA8B,CAC7B,KACA,MAED,iCAAkC,CACjC,KACA,MAED,iCAAkC,CACjC,KACA,MAED,8BAA+B,CAC9B,KACA,MAED,kCAAmC,CAClC,KACA,MAED,kCAAmC,CAClC,KACA,MAED,2BAA4B,CAC3B,KACA,MAED,+BAAgC,CAC/B,KACA,MAED,+BAAgC,CAC/B,KACA,MAED,qCAAsC,CACrC,KACA,MAED,yCAA0C,CACzC,KACA,MAED,yCAA0C,CACzC,KACA,MAED,uBAAwB,CACvB,IACA,KAED,2BAA4B,CAC3B,IACA,KAED,2BAA4B,CAC3B,KACA,MAED,WAAY,CACX,KACA,MAED,eAAgB,CACf,KACA,MAED,eAAgB,CACf,KACA,MAED,WAAY,CACX,KACA,MAED,eAAgB,CACf,KACA,MAED,eAAgB,CACf,KACA,MAED,iCAAkC,CACjC,KACA,MAED,qCAAsC,CACrC,KACA,MAED,qCAAsC,CACrC,KACA,MAED,4BAA6B,CAC5B,KACA,MAED,gCAAiC,CAChC,KACA,MAED,gCAAiC,CAChC,KACA,MAED,yCAA0C,CACzC,KACA,MAED,6CAA8C,CAC7C,KACA,MAED,6CAA8C,CAC7C,KACA,MAED,2BAA4B,CAC3B,KACA,MAED,+BAAgC,CAC/B,KACA,MAED,+BAAgC,CAC/B,KACA,MAED,wCAAyC,CACxC,KACA,MAED,4CAA6C,CAC5C,KACA,MAED,4CAA6C,CAC5C,KACA,MAED,0BAA2B,CAC1B,KACA,MAED,8BAA+B,CAC9B,KACA,MAED,8BAA+B,CAC9B,KACA,MAED,2BAA4B,CAC3B,KACA,MAED,+BAAgC,CAC/B,KACA,MAED,+BAAgC,CAC/B,KACA,MAED,2BAA4B,CAC3B,KACA,MAED,+BAAgC,CAC/B,KACA,MAED,+BAAgC,CAC/B,KACA,MAED,wBAAyB,CACxB,KACA,MAED,4BAA6B,CAC5B,KACA,MAED,4BAA6B,CAC5B,KACA,MAED,yBAA0B,CACzB,GACA,IAED,6BAA8B,CAC7B,GACA,IAED,6BAA8B,CAC7B,KACA,MAED,qCAAsC,CACrC,KACA,MAED,yCAA0C,CACzC,KACA,MAED,yCAA0C,CACzC,KACA,MAED,eAAgB,CACf,KACA,OAGF,SAASw2B,EAAoBC,GAC5B,IAAIC,EAAoBC,EAAE32B,EAAKy2B,GAC9B,OAAOjvB,QAAQkD,UAAUksB,MAAK,WAC7B,IAAIxH,EAAI,IAAIyH,MAAM,uBAAyBJ,EAAM,KAEjD,MADArH,EAAErC,KAAO,mBACHqC,CACP,IAGD,IAAI0H,EAAM92B,EAAIy2B,GAAM92B,EAAKm3B,EAAI,GAC7B,OAAOJ,EAAoBtH,EAAE0H,EAAI,IAAIF,MAAK,WACzC,OAAOF,EAAoB/2B,EAC5B,GACD,CACA62B,EAAoBloB,KAAO,WAAa,OAAO9W,OAAO8W,KAAKtO,EAAM,EACjEw2B,EAAoB72B,GAAK,KACzBtH,EAAOX,QAAU8+B,C,uBC1VjB,IAAIx2B,EAAM,CACT,6BAA8B,CAC7B,KACA,MAED,6BAA8B,CAC7B,IACA,MAGF,SAASw2B,EAAoBC,GAC5B,IAAIC,EAAoBC,EAAE32B,EAAKy2B,GAC9B,OAAOjvB,QAAQkD,UAAUksB,MAAK,WAC7B,IAAIxH,EAAI,IAAIyH,MAAM,uBAAyBJ,EAAM,KAEjD,MADArH,EAAErC,KAAO,mBACHqC,CACP,IAGD,IAAI0H,EAAM92B,EAAIy2B,GAAM92B,EAAKm3B,EAAI,GAC7B,OAAOJ,EAAoBtH,EAAE0H,EAAI,IAAIF,MAAK,WACzC,OAAOF,EAAoB/2B,EAC5B,GACD,CACA62B,EAAoBloB,KAAO,WAAa,OAAO9W,OAAO8W,KAAKtO,EAAM,EACjEw2B,EAAoB72B,GAAK,KACzBtH,EAAOX,QAAU8+B,C,sBC1BjB,IAAIx2B,EAAM,CACT,+BAAgC,CAC/B,KACA,MAED,+BAAgC,CAC/B,EACA,IAGF,SAASw2B,EAAoBC,GAC5B,IAAIC,EAAoBC,EAAE32B,EAAKy2B,GAC9B,OAAOjvB,QAAQkD,UAAUksB,MAAK,WAC7B,IAAIxH,EAAI,IAAIyH,MAAM,uBAAyBJ,EAAM,KAEjD,MADArH,EAAErC,KAAO,mBACHqC,CACP,IAGD,IAAI0H,EAAM92B,EAAIy2B,GAAM92B,EAAKm3B,EAAI,GAC7B,OAAOJ,EAAoBtH,EAAE0H,EAAI,IAAIF,MAAK,WACzC,OAAOF,EAAoB/2B,EAC5B,GACD,CACA62B,EAAoBloB,KAAO,WAAa,OAAO9W,OAAO8W,KAAKtO,EAAM,EACjEw2B,EAAoB72B,GAAK,IACzBtH,EAAOX,QAAU8+B,C,uBC1BjB,IAAIx2B,EAAM,CACT,eAAgB,CACf,KACA,MAED,eAAgB,CACf,KACA,OAGF,SAASw2B,EAAoBC,GAC5B,IAAIC,EAAoBC,EAAE32B,EAAKy2B,GAC9B,OAAOjvB,QAAQkD,UAAUksB,MAAK,WAC7B,IAAIxH,EAAI,IAAIyH,MAAM,uBAAyBJ,EAAM,KAEjD,MADArH,EAAErC,KAAO,mBACHqC,CACP,IAGD,IAAI0H,EAAM92B,EAAIy2B,GAAM92B,EAAKm3B,EAAI,GAC7B,OAAOJ,EAAoBtH,EAAE0H,EAAI,IAAIF,MAAK,WACzC,OAAOF,EAAoB/2B,EAC5B,GACD,CACA62B,EAAoBloB,KAAO,WAAa,OAAO9W,OAAO8W,KAAKtO,EAAM,EACjEw2B,EAAoB72B,GAAK,KACzBtH,EAAOX,QAAU8+B,C,uBC1BjB,IAAIx2B,EAAM,CACT,eAAgB,CACf,KACA,MAED,eAAgB,CACf,KACA,OAGF,SAASw2B,EAAoBC,GAC5B,IAAIC,EAAoBC,EAAE32B,EAAKy2B,GAC9B,OAAOjvB,QAAQkD,UAAUksB,MAAK,WAC7B,IAAIxH,EAAI,IAAIyH,MAAM,uBAAyBJ,EAAM,KAEjD,MADArH,EAAErC,KAAO,mBACHqC,CACP,IAGD,IAAI0H,EAAM92B,EAAIy2B,GAAM92B,EAAKm3B,EAAI,GAC7B,OAAOJ,EAAoBtH,EAAE0H,EAAI,IAAIF,MAAK,WACzC,OAAOF,EAAoB/2B,EAC5B,GACD,CACA62B,EAAoBloB,KAAO,WAAa,OAAO9W,OAAO8W,KAAKtO,EAAM,EACjEw2B,EAAoB72B,GAAK,KACzBtH,EAAOX,QAAU8+B,C,uBC1BjB,IAAIx2B,EAAM,CACT,6BAA8B,CAC7B,KACA,MAED,gCAAiC,CAChC,KACA,MAED,gCAAiC,CAChC,KACA,MAED,6BAA8B,CAC7B,KACA,MAED,gCAAiC,CAChC,KACA,MAED,gCAAiC,CAChC,KACA,MAED,uCAAwC,CACvC,KACA,MAED,0CAA2C,CAC1C,KACA,MAED,0CAA2C,CAC1C,KACA,MAED,2BAA4B,CAC3B,KACA,MAED,8BAA+B,CAC9B,KACA,MAED,8BAA+B,CAC9B,IACA,KAED,mCAAoC,CACnC,KACA,MAED,sCAAuC,CACtC,KACA,MAED,sCAAuC,CACtC,KACA,MAED,oCAAqC,CACpC,KACA,MAED,uCAAwC,CACvC,KACA,MAED,uCAAwC,CACvC,KACA,MAED,gDAAiD,CAChD,KACA,MAED,mDAAoD,CACnD,KACA,MAED,mDAAoD,CACnD,KACA,MAED,6CAA8C,CAC7C,GACA,IAED,gDAAiD,CAChD,GACA,IAED,gDAAiD,CAChD,KACA,MAED,uDAAwD,CACvD,KACA,MAED,0DAA2D,CAC1D,KACA,MAED,0DAA2D,CAC1D,KACA,MAED,0CAA2C,CAC1C,KACA,MAED,iCAAkC,CACjC,KACA,MAED,6BAA8B,CAC7B,KACA,MAED,gCAAiC,CAChC,KACA,MAED,gCAAiC,CAChC,KACA,MAED,8BAA+B,CAC9B,KACA,MAED,iCAAkC,CACjC,KACA,MAED,iCAAkC,CACjC,KACA,MAED,2BAA4B,CAC3B,KACA,MAED,8BAA+B,CAC9B,KACA,MAED,8BAA+B,CAC9B,KACA,MAED,uBAAwB,CACvB,KACA,MAED,0BAA2B,CAC1B,KACA,MAED,0BAA2B,CAC1B,KACA,MAED,iCAAkC,CACjC,KACA,MAED,oCAAqC,CACpC,KACA,MAED,oCAAqC,CACpC,KACA,MAED,+CAAgD,CAC/C,KACA,MAED,kDAAmD,CAClD,KACA,MAED,kDAAmD,CAClD,KACA,KAED,4BAA6B,CAC5B,KACA,MAED,+BAAgC,CAC/B,KACA,MAED,+BAAgC,CAC/B,KACA,MAED,qCAAsC,CACrC,KACA,MAED,wCAAyC,CACxC,KACA,MAED,wCAAyC,CACxC,KACA,MAED,2BAA4B,CAC3B,KACA,MAED,8BAA+B,CAC9B,KACA,MAED,8BAA+B,CAC9B,KACA,MAED,mCAAoC,CACnC,KACA,MAED,sCAAuC,CACtC,KACA,MAED,sCAAuC,CACtC,KACA,MAED,0BAA2B,CAC1B,KACA,MAED,6BAA8B,CAC7B,KACA,MAED,6BAA8B,CAC7B,KACA,MAED,sCAAuC,CACtC,KACA,MAED,yCAA0C,CACzC,KACA,MAED,yCAA0C,CACzC,KACA,MAED,2BAA4B,CAC3B,KACA,MAED,8BAA+B,CAC9B,KACA,MAED,8BAA+B,CAC9B,KACA,MAED,wCAAyC,CACxC,KACA,MAED,2CAA4C,CAC3C,KACA,MAED,2CAA4C,CAC3C,KACA,MAED,2BAA4B,CAC3B,KACA,MAED,8BAA+B,CAC9B,KACA,MAED,8BAA+B,CAC9B,KACA,MAED,sCAAuC,CACtC,KACA,MAED,yCAA0C,CACzC,KACA,MAED,yCAA0C,CACzC,IACA,KAED,wBAAyB,CACxB,KACA,MAED,2BAA4B,CAC3B,KACA,MAED,2BAA4B,CAC3B,KACA,MAED,kCAAmC,CAClC,KACA,MAED,qCAAsC,CACrC,KACA,MAED,qCAAsC,CACrC,KACA,MAED,yBAA0B,CACzB,KACA,MAED,4BAA6B,CAC5B,KACA,MAED,4BAA6B,CAC5B,KACA,MAED,qCAAsC,CACrC,KACA,MAED,wCAAyC,CACxC,KACA,MAED,wCAAyC,CACxC,IACA,KAED,eAAgB,CACf,KACA,OAGF,SAASw2B,EAAoBC,GAC5B,IAAIC,EAAoBC,EAAE32B,EAAKy2B,GAC9B,OAAOjvB,QAAQkD,UAAUksB,MAAK,WAC7B,IAAIxH,EAAI,IAAIyH,MAAM,uBAAyBJ,EAAM,KAEjD,MADArH,EAAErC,KAAO,mBACHqC,CACP,IAGD,IAAI0H,EAAM92B,EAAIy2B,GAAM92B,EAAKm3B,EAAI,GAC7B,OAAOJ,EAAoBtH,EAAE0H,EAAI,IAAIF,MAAK,WACzC,OAAOF,EAAoB/2B,EAC5B,GACD,CACA62B,EAAoBloB,KAAO,WAAa,OAAO9W,OAAO8W,KAAKtO,EAAM,EACjEw2B,EAAoB72B,GAAK,KACzBtH,EAAOX,QAAU8+B,C","sources":["webpack://embla-carousel-docs/../../node_modules/codesandbox-import-utils/lib/api/define.js","webpack://embla-carousel-docs/../../node_modules/codesandbox/lib/api/define.js","webpack://embla-carousel-docs/../../.prettierrc.js","webpack://embla-carousel-docs/./src/components/Examples/examplesCarouselStyles.ts","webpack://embla-carousel-docs/./src/components/Page/PageBreadcrumbs.tsx","webpack://embla-carousel-docs/./src/components/Page/PageEditThisPage.tsx","webpack://embla-carousel-docs/./src/components/Page/PagePagination.tsx","webpack://embla-carousel-docs/./src/components/Sandbox/React/createSandboxReactIndexHtml.ts","webpack://embla-carousel-docs/./src/components/Sandbox/React/createSandboxReactEntry.ts","webpack://embla-carousel-docs/./src/components/Sandbox/React/createSandboxReactImagePaths.ts","webpack://embla-carousel-docs/./src/components/Sandbox/React/createSandboxReactHeader.ts","webpack://embla-carousel-docs/./src/components/Sandbox/React/createSandboxReactFooter.ts","webpack://embla-carousel-docs/./src/components/Sandbox/React/createSandboxReact.ts","webpack://embla-carousel-docs/./src/components/Sandbox/React/createSandboxReactPackageJson.ts","webpack://embla-carousel-docs/./src/components/Sandbox/React/createSandboxReactTsConfig.ts","webpack://embla-carousel-docs/./src/components/Sandbox/React/sandboxReactFolders.ts","webpack://embla-carousel-docs/./src/components/Sandbox/Vanilla/createSandboxVanillaEntry.ts","webpack://embla-carousel-docs/./src/components/Sandbox/Vanilla/createSandboxVanillaImagePaths.ts","webpack://embla-carousel-docs/./src/components/Sandbox/Vanilla/createSandboxVanilla.ts","webpack://embla-carousel-docs/./src/components/Sandbox/Vanilla/createSandboxVanillaPackageJson.ts","webpack://embla-carousel-docs/./src/components/Sandbox/Vanilla/createSandboxVanillaTsConfig.ts","webpack://embla-carousel-docs/./src/components/Sandbox/Vanilla/createSandboxVanillaOptions.ts","webpack://embla-carousel-docs/./src/components/Sandbox/Vanilla/sandboxVanillaFolders.ts","webpack://embla-carousel-docs/./src/components/Sandbox/sandboxStaticFindModules.ts","webpack://embla-carousel-docs/./src/components/Sandbox/sandboxStaticExtractModules.ts","webpack://embla-carousel-docs/./src/components/Sandbox/sandboxStaticExtractPlugins.ts","webpack://embla-carousel-docs/./src/components/Sandbox/sandboxStyles.ts","webpack://embla-carousel-docs/./src/components/Seo/Seo.tsx","webpack://embla-carousel-docs/./src/consts/sandbox.ts","webpack://embla-carousel-docs/./src/utils/arrayFromNumber.ts","webpack://embla-carousel-docs/./src/utils/getThemeFromDocument.ts","webpack://embla-carousel-docs/./src/utils/loadPrettier.ts","webpack://embla-carousel-docs/./src/utils/removeProtocol.ts","webpack://embla-carousel-docs/./src/utils/sandbox.ts","webpack://embla-carousel-docs/./src/utils/styledComponentStylesToString.ts","webpack://embla-carousel-docs/./.prettierrc.js","webpack://embla-carousel-docs/../src/components/utils.ts","webpack://embla-carousel-docs/../src/components/Alignment.ts","webpack://embla-carousel-docs/../src/components/EventStore.ts","webpack://embla-carousel-docs/../src/components/Animations.ts","webpack://embla-carousel-docs/../src/components/Axis.ts","webpack://embla-carousel-docs/../src/components/Limit.ts","webpack://embla-carousel-docs/../src/components/Counter.ts","webpack://embla-carousel-docs/../src/components/DragHandler.ts","webpack://embla-carousel-docs/../src/components/DragTracker.ts","webpack://embla-carousel-docs/../src/components/ResizeHandler.ts","webpack://embla-carousel-docs/../src/components/ScrollBounds.ts","webpack://embla-carousel-docs/../src/components/ScrollLooper.ts","webpack://embla-carousel-docs/../src/components/ScrollTarget.ts","webpack://embla-carousel-docs/../src/components/Vector1d.ts","webpack://embla-carousel-docs/../src/components/Translate.ts","webpack://embla-carousel-docs/../src/components/SlideLooper.ts","webpack://embla-carousel-docs/../src/components/SlidesHandler.ts","webpack://embla-carousel-docs/../src/components/SlidesInView.ts","webpack://embla-carousel-docs/../src/components/SlideSizes.ts","webpack://embla-carousel-docs/../src/components/SlidesToScroll.ts","webpack://embla-carousel-docs/../src/components/Engine.ts","webpack://embla-carousel-docs/../src/components/NodeRects.ts","webpack://embla-carousel-docs/../src/components/PercentOfView.ts","webpack://embla-carousel-docs/../src/components/ScrollSnaps.ts","webpack://embla-carousel-docs/../src/components/ScrollContain.ts","webpack://embla-carousel-docs/../src/components/ScrollLimit.ts","webpack://embla-carousel-docs/../src/components/ScrollBody.ts","webpack://embla-carousel-docs/../src/components/ScrollTo.ts","webpack://embla-carousel-docs/../src/components/ScrollProgress.ts","webpack://embla-carousel-docs/../src/components/SlideRegistry.ts","webpack://embla-carousel-docs/../src/components/SlideFocus.ts","webpack://embla-carousel-docs/../src/components/Options.ts","webpack://embla-carousel-docs/../src/components/OptionsHandler.ts","webpack://embla-carousel-docs/../src/components/EmblaCarousel.ts","webpack://embla-carousel-docs/../src/components/PluginsHandler.ts","webpack://embla-carousel-docs/../src/components/EventHandler.ts","webpack://embla-carousel-docs/../src/components/useEmblaCarousel.ts","webpack://embla-carousel-docs/../../node_modules/lz-string/libs/lz-string.js","webpack://embla-carousel-docs/./src/assets/images/maskable.png","webpack://embla-carousel-docs/ ^\\.\\/.*$ namespace object","webpack://embla-carousel-docs/ ^\\.\\/CarouselDefaultEntry\\..*$ namespace object","webpack://embla-carousel-docs/ ^\\.\\/CarouselIosPickerEntry\\..*$ namespace object","webpack://embla-carousel-docs/ ^\\.\\/Footer\\..*$ namespace object","webpack://embla-carousel-docs/ ^\\.\\/Header\\..*$ namespace object","webpack://embla-carousel-docs/ ^\\.\\/.*$ namespace object?8db5"],"sourcesContent":["\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar LZString = require(\"lz-string\");\nfunction compress(input) {\n return LZString.compressToBase64(input)\n .replace(/\\+/g, \"-\") // Convert '+' to '-'\n .replace(/\\//g, \"_\") // Convert '/' to '_'\n .replace(/=+$/, \"\"); // Remove ending '='\n}\nfunction getParameters(parameters) {\n return compress(JSON.stringify(parameters));\n}\nexports.getParameters = getParameters;\n//# sourceMappingURL=define.js.map","\"use strict\";\nexports.__esModule = true;\nexports.getParameters = void 0;\nvar define_1 = require(\"codesandbox-import-utils/lib/api/define\");\nexports.getParameters = define_1.getParameters;\n//# sourceMappingURL=define.js.map","module.exports = {\n bracketSpacing: true,\n printWidth: 80,\n semi: false,\n singleQuote: true,\n trailingComma: 'none',\n tabWidth: 2,\n useTabs: false\n}\n","import { css } from 'styled-components'\nimport { LAYERS } from 'consts/layers'\nimport { COLORS } from 'consts/themes'\nimport { SPACINGS } from 'consts/spacings'\nimport { BORDER_RADIUSES, BORDER_SIZES } from 'consts/border'\nimport { MEDIA } from 'consts/breakpoints'\nimport { FONT_SIZES, FONT_WEIGHTS } from 'consts/fontSizes'\nimport { EmblaOptionsType } from 'embla-carousel'\nimport { createSquareSizeStyles } from 'utils/createSquareSizeStyles'\nimport { styledComponentsStylesToString } from 'utils/styledComponentStylesToString'\nimport { TAP_HIGHLIGHT_STYLES } from 'consts/tapHighlight'\n\nconst CAROUSEL_MAX_WIDTH = '48rem'\nexport const CAROUSEL_DEFAULT_HEIGHT = '19rem'\nexport const CAROUSEL_SLIDES_SPACING = '1rem'\n\nexport const CAROUSEL_THUMB_SLIDES_HEIGHT = '6rem'\nexport const CAROUSEL_THUMB_SLIDES_SPACING = '0.8rem'\n\nexport const CAROUSEL_IOS_PICKER_HEIGHT = '22.2rem'\n\nexport const CAROUSEL_NAV_BUTTON_SIZE = SPACINGS.SIX\nexport const CAROUSEL_CONTROLS_SPACING = SPACINGS.THREE\n\nexport const CAROUSEL_SLIDE_RADIUS_STYLES = css`\n border-radius: ${BORDER_RADIUSES.SOFT};\n`\n\nexport const CAROUSEL_BORDER_SHADOW_STYLES = css`\n box-shadow: inset 0 0 0 ${BORDER_SIZES.OUTLINE}\n ${COLORS.DETAIL_MEDIUM_CONTRAST};\n`\n\nexport const CAROUSEL_BUTTON_BASE_STYLES = css`\n ${TAP_HIGHLIGHT_STYLES};\n -webkit-appearance: none;\n appearance: none;\n background-color: transparent;\n touch-action: manipulation;\n display: inline-flex;\n text-decoration: none;\n cursor: pointer;\n border: 0;\n padding: 0;\n margin: 0;\n`\n\nexport const BASE_STYLES = css`\n .embla {\n max-width: ${CAROUSEL_MAX_WIDTH};\n margin: auto;\n \n --slide-height: ${CAROUSEL_DEFAULT_HEIGHT};\n --slide-spacing: __replace_axis_spacing_amount__;\n --slide-size: __replace_slide_size__;\n }\n \n .embla__viewport {\n overflow: hidden;\n }\n\n .embla__container {\n backface-visibility: hidden;\n display: flex;\n touch-action: __replace-axis-touch_action__;\n margin-__replace_axis_spacing__: calc(var(--slide-spacing) * -1);\n __replace_axis_height__\n __replace_axis_flex__\n }\n\n .embla__slide {\n flex: 0 0 var(--slide-size);\n min-__replace-axis-size__: 0;\n padding-__replace_axis_spacing__: var(--slide-spacing);\n }\n`\n\nexport const SLIDES_PER_VIEW_STYLES = css`\n .embla {\n max-width: 70rem;\n margin: auto;\n\n --slide-height: ${CAROUSEL_DEFAULT_HEIGHT};\n --slide-spacing: 1rem;\n --slide-size: 100%;\n --slide-spacing-sm: 1.6rem;\n --slide-size-sm: 50%;\n --slide-spacing-lg: 2rem;\n --slide-size-lg: calc(100% / 3);\n }\n\n .embla__viewport {\n overflow: hidden;\n }\n\n .embla__container {\n backface-visibility: hidden;\n display: flex;\n touch-action: __replace-axis-touch_action__;\n margin-__replace_axis_spacing__: calc(var(--slide-spacing) * -1);\n __replace_axis_height__\n __replace_axis_flex__\n }\n\n ${MEDIA.MIN_SM} {\n .embla__container {\n margin-__replace_axis_spacing__: calc(var(--slide-spacing-sm) * -1);\n }\n }\n ${MEDIA.MIN_LG} {\n .embla__container {\n margin-__replace_axis_spacing__: calc(var(--slide-spacing-lg) * -1);\n }\n }\n\n\n .embla__slide {\n min-__replace-axis-size__: 0;\n flex: 0 0 var(--slide-size);\n padding-__replace_axis_spacing__: var(--slide-spacing);\n }\n\n ${MEDIA.MIN_SM} {\n .embla__slide {\n flex: 0 0 var(--slide-size-sm);\n padding-__replace_axis_spacing__: var(--slide-spacing-sm);\n }\n }\n ${MEDIA.MIN_LG} {\n .embla__slide {\n flex: 0 0 var(--slide-size-lg);\n padding-__replace_axis_spacing__: var(--slide-spacing-lg);\n }\n }\n`\n\nexport const SLIDE_NUMBER_STYLES = css`\n .embla__slide__number {\n ${CAROUSEL_BORDER_SHADOW_STYLES};\n ${CAROUSEL_SLIDE_RADIUS_STYLES};\n font-size: ${FONT_SIZES.CUSTOM(() => 4)};\n font-weight: ${FONT_WEIGHTS.SEMI_BOLD};\n display: flex;\n align-items: center;\n justify-content: center;\n height: __replace_slide_height__;\n }\n`\n\nexport const IMAGE_STYLES = css`\n .embla__slide__img {\n ${CAROUSEL_SLIDE_RADIUS_STYLES};\n display: block;\n height: __replace_slide_height__;\n width: 100%;\n object-fit: cover;\n }\n`\n\nexport const VARIABLE_WIDTH_STYLES = css`\n .embla__slide:nth-child(1) {\n flex: 0 0 60%;\n }\n .embla__slide:nth-child(2) {\n flex: 0 0 40%;\n }\n .embla__slide:nth-child(3) {\n flex: 0 0 30%;\n }\n .embla__slide:nth-child(4) {\n flex: 0 0 90%;\n }\n .embla__slide:nth-child(5) {\n flex: 0 0 35%;\n }\n .embla__slide:nth-child(6) {\n flex: 0 0 55%;\n }\n .embla__slide:nth-child(7) {\n flex: 0 0 85%;\n }\n .embla__slide:nth-child(8) {\n flex: 0 0 50%;\n }\n .embla__slide:nth-child(9) {\n flex: 0 0 35%;\n }\n`\n\nexport const CONTROLS_STYLES = css`\n .embla__controls {\n display: grid;\n grid-template-columns: auto 1fr;\n justify-content: space-between;\n gap: ${SPACINGS.TWO};\n margin-top: ${CAROUSEL_CONTROLS_SPACING};\n }\n`\n\nexport const ARROWS_STYLES = css`\n .embla__buttons {\n display: grid;\n grid-template-columns: repeat(2, 1fr);\n gap: ${SPACINGS.ONE};\n align-items: center;\n }\n\n .embla__button {\n ${CAROUSEL_BUTTON_BASE_STYLES};\n ${CAROUSEL_BORDER_SHADOW_STYLES};\n ${createSquareSizeStyles(CAROUSEL_NAV_BUTTON_SIZE)}\n z-index: ${LAYERS.STEP};\n border-radius: ${BORDER_RADIUSES.CIRCLE};\n color: ${COLORS.TEXT_BODY};\n display: flex;\n align-items: center;\n justify-content: center;\n }\n\n .embla__button:disabled {\n color: ${COLORS.DETAIL_HIGH_CONTRAST};\n }\n\n .embla__button__svg {\n ${createSquareSizeStyles('35%')}\n }\n`\n\nexport const DOTS_STYLES = css`\n .embla__dots {\n display: flex;\n flex-wrap: wrap;\n justify-content: flex-end;\n align-items: center;\n margin-right: calc((2.6rem - 1.4rem) / 2 * -1);\n }\n\n .embla__dot {\n ${CAROUSEL_BUTTON_BASE_STYLES};\n ${createSquareSizeStyles('2.6rem')}\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: ${BORDER_RADIUSES.CIRCLE};\n }\n\n .embla__dot:after {\n ${CAROUSEL_BORDER_SHADOW_STYLES};\n ${createSquareSizeStyles('1.4rem')}\n border-radius: ${BORDER_RADIUSES.CIRCLE};\n display: flex;\n align-items: center;\n content: '';\n }\n\n .embla__dot--selected:after {\n box-shadow: inset 0 0 0 ${BORDER_SIZES.OUTLINE} ${COLORS.TEXT_BODY};\n }\n`\n\nexport const SNAP_DISPLAY_STYLES = css`\n .embla__selected-snap-display {\n justify-self: flex-end;\n align-self: center;\n color: ${COLORS.TEXT_LOW_CONTRAST};\n font-weight: ${FONT_WEIGHTS.SEMI_BOLD};\n }\n`\n\nexport const PLAY_BUTTON_STYLES = css`\n .embla__play {\n ${CAROUSEL_BUTTON_BASE_STYLES};\n ${CAROUSEL_BORDER_SHADOW_STYLES};\n ${CAROUSEL_SLIDE_RADIUS_STYLES};\n display: flex;\n align-items: center;\n justify-content: center;\n justify-self: flex-end;\n color: ${COLORS.TEXT_BODY};\n font-weight: ${FONT_WEIGHTS.BOLD};\n font-size: ${FONT_SIZES.COMPLEMENTARY};\n padding: 0 ${SPACINGS.FOUR};\n min-width: ${SPACINGS.FOURTEEN};\n }\n`\n\nexport const THUMBS_STYLES = css`\n .embla-thumbs {\n --thumbs-slide-spacing: ${CAROUSEL_THUMB_SLIDES_SPACING};\n --thumbs-slide-height: ${CAROUSEL_THUMB_SLIDES_HEIGHT};\n margin-top: var(--thumbs-slide-spacing);\n }\n\n .embla-thumbs__viewport {\n overflow: hidden;\n }\n\n .embla-thumbs__container {\n display: flex;\n flex-direction: row;\n margin-left: calc(var(--thumbs-slide-spacing) * -1);\n }\n\n .embla-thumbs__slide {\n flex: 0 0 22%;\n min-__replace-axis-size__: 0;\n padding-left: var(--thumbs-slide-spacing);\n }\n\n ${MEDIA.MIN_XS} {\n .embla-thumbs__slide {\n flex: 0 0 15%;\n }\n }\n\n .embla-thumbs__slide__number {\n ${CAROUSEL_SLIDE_RADIUS_STYLES};\n ${CAROUSEL_BUTTON_BASE_STYLES};\n ${CAROUSEL_BORDER_SHADOW_STYLES};\n font-size: ${FONT_SIZES.H4};\n font-weight: ${FONT_WEIGHTS.SEMI_BOLD};\n color: ${COLORS.DETAIL_HIGH_CONTRAST};\n display: flex;\n align-items: center;\n justify-content: center;\n height: var(--thumbs-slide-height);\n width: 100%;\n }\n\n .embla-thumbs__slide--selected .embla-thumbs__slide__number {\n color: ${COLORS.TEXT_BODY};\n }\n`\n\nexport const PROGRESS_STYLES = css`\n .embla__progress {\n ${CAROUSEL_SLIDE_RADIUS_STYLES};\n ${CAROUSEL_BORDER_SHADOW_STYLES};\n background-color: ${COLORS.BACKGROUND_SITE};\n position: relative;\n height: 0.6rem;\n justify-self: flex-end;\n align-self: center;\n width: 13rem;\n max-width: 90%;\n overflow: hidden;\n }\n\n .embla__progress__bar {\n background-color: ${COLORS.TEXT_BODY};\n position: absolute;\n width: 100%;\n top: 0;\n bottom: 0;\n left: -100%;\n }\n`\n\nexport const PARALLAX_STYLES = css`\n .embla__parallax {\n ${CAROUSEL_SLIDE_RADIUS_STYLES};\n height: 100%;\n overflow: hidden;\n }\n\n .embla__parallax__layer {\n position: relative;\n height: 100%;\n width: 100%;\n display: flex;\n justify-content: center;\n }\n\n .embla__parallax__img {\n max-width: none;\n flex: 0 0 calc(115% + (var(--slide-spacing) * 2));\n object-fit: cover;\n }\n`\n\nconst SCALE_STYLES = css`\n .embla__slide__number {\n backface-visibility: hidden;\n }\n`\n\nconst LAZY_LOAD_STYLES = css`\n .embla__lazy-load {\n position: relative;\n height: 100%;\n }\n\n .embla__lazy-load__spinner {\n border: ${BORDER_SIZES.ACCENT_VERTICAL} solid\n rgba(${COLORS.TEXT_HIGH_CONTRAST_RGB_VALUE}, 0.2);\n border-left: ${BORDER_SIZES.ACCENT_VERTICAL} solid\n ${COLORS.TEXT_HIGH_CONTRAST};\n font-size: 1rem;\n display: inline-flex;\n position: absolute;\n top: 0;\n left: 0;\n bottom: 0;\n right: 0;\n margin: auto;\n text-indent: -9999em;\n animation: loading 1.1s infinite linear;\n border-radius: ${BORDER_RADIUSES.CIRCLE};\n ${createSquareSizeStyles('5rem')}\n }\n\n .embla__lazy-load__spinner:after {\n border-radius: inherit;\n ${createSquareSizeStyles('5rem')}\n }\n\n .embla__lazy-load__img {\n opacity: 0;\n transition: opacity 0.2s ease-in-out;\n }\n\n .embla__lazy-load--has-loaded .embla__lazy-load__img {\n opacity: 1;\n }\n\n @keyframes loading {\n 0% {\n transform: rotate(0deg);\n }\n 100% {\n transform: rotate(360deg);\n }\n }\n`\n\nexport const AUTO_HEIGHT_STYLES = css`\n .embla__container {\n align-items: flex-start;\n }\n\n .embla__slide:nth-child(1) > .embla__slide__number {\n height: ${CAROUSEL_DEFAULT_HEIGHT};\n }\n .embla__slide:nth-child(2) > .embla__slide__number {\n height: calc(${CAROUSEL_DEFAULT_HEIGHT} + 4rem);\n }\n .embla__slide:nth-child(3) > .embla__slide__number {\n height: calc(${CAROUSEL_DEFAULT_HEIGHT} - 2rem);\n }\n .embla__slide:nth-child(4) > .embla__slide__number {\n height: calc(${CAROUSEL_DEFAULT_HEIGHT} + 2rem);\n }\n .embla__slide:nth-child(5) > .embla__slide__number {\n height: ${CAROUSEL_DEFAULT_HEIGHT};\n }\n`\n\nconst CLASS_NAMES_STYLES = css`\n .embla__slide {\n transition: opacity 0.2s ease-in-out;\n }\n\n .embla__slide:not(.is-snapped) {\n opacity: 0.16;\n }\n`\n\nconst FADE_STYLES = css`\n .embla__slide__img {\n user-select: none;\n }\n`\n\nexport const INFINITE_SCROLL_STYLES = css`\n .embla-infinite-scroll {\n position: relative;\n flex: 0 0 15rem;\n min-__replace-axis-size__: 0;\n height: var(--slide-height);\n display: flex;\n align-items: center;\n justify-content: center;\n }\n\n .embla-infinite-scroll__spinner {\n display: none;\n border: ${BORDER_SIZES.ACCENT_VERTICAL} solid\n rgba(${COLORS.TEXT_HIGH_CONTRAST_RGB_VALUE}, 0.2);\n border-left: ${BORDER_SIZES.ACCENT_VERTICAL} solid\n ${COLORS.TEXT_HIGH_CONTRAST};\n font-size: 1rem;\n position: absolute;\n top: 0;\n left: 0;\n bottom: 0;\n right: 0;\n margin: auto;\n text-indent: -9999em;\n animation: loading 1.1s infinite linear;\n border-radius: ${BORDER_RADIUSES.CIRCLE};\n ${createSquareSizeStyles('5rem')}\n }\n\n .embla-infinite-scroll__spinner:after {\n border-radius: inherit;\n ${createSquareSizeStyles('5rem')}\n }\n\n .embla-infinite-scroll--loading-more > .embla-infinite-scroll__spinner {\n display: inline-flex;\n }\n\n @keyframes loading {\n 0% {\n transform: rotate(0deg);\n }\n 100% {\n transform: rotate(360deg);\n }\n }\n`\n\nexport const IOS_PICKER_STYLES = css`\n .embla {\n position: relative;\n display: flex;\n width: 100%;\n height: ${CAROUSEL_IOS_PICKER_HEIGHT};\n max-width: 30rem;\n margin-left: auto;\n margin-right: auto;\n }\n\n .embla:before,\n .embla:after {\n position: absolute;\n left: 0;\n right: 0;\n content: '';\n display: block;\n height: calc(50% - 32px / 2);\n z-index: ${LAYERS.STEP};\n pointer-events: none;\n }\n\n .embla:before {\n top: -0.5px;\n border-bottom: 0.5px solid rgba(${COLORS.TEXT_HIGH_CONTRAST_RGB_VALUE}, 0.3);\n background: linear-gradient(\n to top,\n rgba(${COLORS.BACKGROUND_SITE_RGB_VALUE}, 0.65) 0%,\n rgba(${COLORS.BACKGROUND_SITE_RGB_VALUE}, 1) 100%\n );\n }\n\n .embla:after {\n bottom: -0.5px;\n border-top: 0.5px solid rgba(${COLORS.TEXT_HIGH_CONTRAST_RGB_VALUE}, 0.3);\n background: linear-gradient(\n to bottom,\n rgba(${COLORS.BACKGROUND_SITE_RGB_VALUE}, 0.65) 0%,\n rgba(${COLORS.BACKGROUND_SITE_RGB_VALUE}, 1) 100%\n );\n }\n\n .embla__ios-picker {\n height: 100%;\n display: flex;\n align-items: center;\n min-width: 50%;\n justify-content: center;\n line-height: 1;\n font-size: 1.8rem;\n }\n\n .embla__ios-picker__scene {\n min-width: 100%;\n height: 100%;\n overflow: hidden;\n display: flex;\n align-items: center;\n touch-action: pan-x;\n }\n\n .embla__ios-picker__viewport {\n height: 32px;\n width: 100%;\n perspective: 1000px;\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n -webkit-touch-callout: none;\n -khtml-user-select: none;\n -webkit-tap-highlight-color: transparent;\n }\n\n .embla__ios-picker__viewport--perspective-left {\n perspective-origin: calc(50% + 130px) 50%;\n transform: translateX(27px);\n }\n\n .embla__ios-picker__viewport--perspective-right {\n perspective-origin: calc(50% - 130px) 50%;\n transform: translateX(-27px);\n }\n\n .embla__ios-picker__container {\n height: 100%;\n width: 100%;\n transform-style: preserve-3d;\n will-change: transform;\n }\n\n .embla__ios-picker__slide {\n width: 100%;\n height: 100%;\n font-size: 19px;\n text-align: center;\n display: flex;\n align-items: center;\n justify-content: center;\n backface-visibility: hidden;\n opacity: 0;\n }\n\n .embla__ios-picker__label {\n font-weight: ${FONT_WEIGHTS.BOLD};\n transform: translateX(-55px);\n pointer-events: none;\n }\n`\n\nexport const examplesCarouselDefaultStyles = (\n slideSize: string = '100%',\n spacingSize: string = CAROUSEL_SLIDES_SPACING,\n axis: EmblaOptionsType['axis'] = 'x',\n customStyles: string = '',\n baseStyles: string = styledComponentsStylesToString(BASE_STYLES)\n): string => {\n const horizontal = axis === 'x'\n const flexDirection = horizontal ? '' : 'flex-direction: column;'\n const spacingDirection = horizontal ? 'left' : 'top'\n const panDirection = `pan-${horizontal ? 'y' : 'x'} pinch-zoom`\n const sizeDimention = horizontal ? 'width' : 'height'\n const slideHeight = horizontal ? 'var(--slide-height)' : '100%'\n const containerHeight = horizontal\n ? ''\n : 'height: calc(var(--slide-spacing) + var(--slide-height));'\n\n const mergedStyles = baseStyles + customStyles\n\n return mergedStyles\n .replace(/__replace_axis_flex__/gi, flexDirection)\n .replace(/__replace-axis-size__/gi, sizeDimention)\n .replace(/__replace-axis-touch_action__/gi, panDirection)\n .replace(/__replace_axis_spacing__/gi, spacingDirection)\n .replace(/__replace_axis_spacing_amount__/gi, spacingSize)\n .replace(/__replace_axis_height__/gi, containerHeight)\n .replace(/__replace_slide_height__/gi, slideHeight)\n .replace(/__replace_slide_size__/gi, slideSize)\n}\n\nexport const examplesCarouselDragFreeStyles = (\n slideSize?: string,\n spacingSize?: string,\n axis?: EmblaOptionsType['axis']\n): string => {\n return examplesCarouselDefaultStyles(\n slideSize,\n spacingSize,\n axis,\n styledComponentsStylesToString(\n SLIDE_NUMBER_STYLES,\n CONTROLS_STYLES,\n ARROWS_STYLES,\n SNAP_DISPLAY_STYLES\n )\n )\n}\n\nexport const examplesCarouselVariableWidthStyles = (\n slideSize?: string,\n spacingSize?: string,\n axis?: EmblaOptionsType['axis']\n): string => {\n return examplesCarouselDefaultStyles(\n slideSize,\n spacingSize,\n axis,\n styledComponentsStylesToString(\n VARIABLE_WIDTH_STYLES,\n SLIDE_NUMBER_STYLES,\n CONTROLS_STYLES,\n ARROWS_STYLES,\n SNAP_DISPLAY_STYLES\n )\n )\n}\n\nexport const examplesCarouselSlidesPerViewStyles = (\n slideSize?: string,\n spacingSize?: string,\n axis?: EmblaOptionsType['axis']\n): string => {\n return examplesCarouselDefaultStyles(\n slideSize,\n spacingSize,\n axis,\n styledComponentsStylesToString(\n SLIDE_NUMBER_STYLES,\n CONTROLS_STYLES,\n ARROWS_STYLES,\n DOTS_STYLES\n ),\n styledComponentsStylesToString(SLIDES_PER_VIEW_STYLES)\n )\n}\n\nexport const examplesCarouselThumbsStyles = (\n slideSize?: string,\n spacingSize?: string,\n axis?: EmblaOptionsType['axis']\n): string => {\n return examplesCarouselDefaultStyles(\n slideSize,\n spacingSize,\n axis,\n styledComponentsStylesToString(SLIDE_NUMBER_STYLES, THUMBS_STYLES)\n )\n}\n\nexport const examplesCarouselProgressStyles = (\n slideSize?: string,\n spacingSize?: string,\n axis?: EmblaOptionsType['axis']\n): string => {\n return examplesCarouselDefaultStyles(\n slideSize,\n spacingSize,\n axis,\n styledComponentsStylesToString(\n SLIDE_NUMBER_STYLES,\n CONTROLS_STYLES,\n ARROWS_STYLES,\n PROGRESS_STYLES\n )\n )\n}\n\nexport const examplesCarouselParallaxStyles = (\n slideSize?: string,\n spacingSize?: string,\n axis?: EmblaOptionsType['axis']\n): string => {\n return examplesCarouselDefaultStyles(\n slideSize,\n spacingSize,\n axis,\n styledComponentsStylesToString(\n IMAGE_STYLES,\n CONTROLS_STYLES,\n ARROWS_STYLES,\n DOTS_STYLES,\n PARALLAX_STYLES\n )\n )\n}\n\nexport const examplesCarouselScaleStyles = (\n slideSize?: string,\n spacingSize?: string,\n axis?: EmblaOptionsType['axis']\n): string => {\n return examplesCarouselDefaultStyles(\n slideSize,\n spacingSize,\n axis,\n styledComponentsStylesToString(\n SLIDE_NUMBER_STYLES,\n CONTROLS_STYLES,\n ARROWS_STYLES,\n DOTS_STYLES,\n SCALE_STYLES\n )\n )\n}\n\nexport const examplesCarouselOpacityStyles = (\n slideSize?: string,\n spacingSize?: string,\n axis?: EmblaOptionsType['axis']\n): string => {\n return examplesCarouselDefaultStyles(\n slideSize,\n spacingSize,\n axis,\n styledComponentsStylesToString(\n IMAGE_STYLES,\n CONTROLS_STYLES,\n ARROWS_STYLES,\n DOTS_STYLES\n )\n )\n}\n\nexport const examplesCarouselAutoplayStyles = (\n slideSize?: string,\n spacingSize?: string,\n axis?: EmblaOptionsType['axis']\n): string => {\n return examplesCarouselDefaultStyles(\n slideSize,\n spacingSize,\n axis,\n styledComponentsStylesToString(\n SLIDE_NUMBER_STYLES,\n CONTROLS_STYLES,\n ARROWS_STYLES,\n PLAY_BUTTON_STYLES\n )\n )\n}\n\nexport const examplesCarouselAutoHeightStyles = (\n slideSize?: string,\n spacingSize?: string,\n axis?: EmblaOptionsType['axis']\n): string => {\n return examplesCarouselDefaultStyles(\n slideSize,\n spacingSize,\n axis,\n styledComponentsStylesToString(\n SLIDE_NUMBER_STYLES,\n CONTROLS_STYLES,\n ARROWS_STYLES,\n DOTS_STYLES,\n AUTO_HEIGHT_STYLES\n )\n )\n}\n\nexport const examplesCarouselClassNamesStyles = (\n slideSize?: string,\n spacingSize?: string,\n axis?: EmblaOptionsType['axis']\n): string => {\n return examplesCarouselDefaultStyles(\n slideSize,\n spacingSize,\n axis,\n styledComponentsStylesToString(\n IMAGE_STYLES,\n CONTROLS_STYLES,\n ARROWS_STYLES,\n DOTS_STYLES,\n CLASS_NAMES_STYLES\n )\n )\n}\n\nexport const examplesCarouselFadeStyles = (\n slideSize?: string,\n spacingSize?: string,\n axis?: EmblaOptionsType['axis']\n): string => {\n return examplesCarouselDefaultStyles(\n slideSize,\n spacingSize,\n axis,\n styledComponentsStylesToString(\n IMAGE_STYLES,\n CONTROLS_STYLES,\n ARROWS_STYLES,\n DOTS_STYLES,\n FADE_STYLES\n )\n )\n}\n\nexport const examplesCarouselLazyLoadStyles = (\n slideSize?: string,\n spacingSize?: string,\n axis?: EmblaOptionsType['axis']\n): string => {\n return examplesCarouselDefaultStyles(\n slideSize,\n spacingSize,\n axis,\n styledComponentsStylesToString(\n IMAGE_STYLES,\n CONTROLS_STYLES,\n ARROWS_STYLES,\n DOTS_STYLES,\n LAZY_LOAD_STYLES\n )\n )\n}\n\nexport const examplesCarouselInfiniteScrollStyles = (\n slideSize?: string,\n spacingSize?: string,\n axis?: EmblaOptionsType['axis']\n): string => {\n return examplesCarouselDefaultStyles(\n slideSize,\n spacingSize,\n axis,\n styledComponentsStylesToString(\n SLIDE_NUMBER_STYLES,\n CONTROLS_STYLES,\n ARROWS_STYLES,\n SNAP_DISPLAY_STYLES,\n INFINITE_SCROLL_STYLES\n )\n )\n}\n\nexport const examplesCarouselIosPickerStyles = (): string => {\n return styledComponentsStylesToString(IOS_PICKER_STYLES)\n}\n","import React, { Fragment } from 'react'\nimport styled, { css } from 'styled-components'\nimport { LinkBare } from 'components/Link/LinkBare'\nimport { useRouteBreadcrumbs } from 'hooks/useRoutes'\nimport { Icon } from 'components/Icon/Icon'\nimport { COLORS } from 'consts/themes'\nimport { FONT_SIZES } from 'consts/fontSizes'\nimport { SPACINGS } from 'consts/spacings'\n\nconst PageBreadcrumbsWrapper = styled.nav`\n display: flex;\n align-items: center;\n font-size: ${FONT_SIZES.COMPLEMENTARY};\n margin-bottom: ${SPACINGS.THREE};\n`\n\nconst itemStyles = css`\n color: ${COLORS.TEXT_LOW_CONTRAST};\n padding: ${SPACINGS.ONE} 0;\n`\n\nconst Link = styled(LinkBare)`\n ${itemStyles};\n`\n\nconst ActiveTitle = styled.span`\n ${itemStyles};\n`\n\nconst Separator = styled(Icon)`\n color: ${COLORS.TEXT_LOW_CONTRAST};\n margin: 0 ${SPACINGS.ONE};\n`\n\ntype PropType = { id: string }\n\nexport const PageBreadcrumbs = (props: PropType) => {\n const { id } = props\n const breadcrumbs = useRouteBreadcrumbs(id)\n\n if (breadcrumbs.length === 0) return null\n\n return (\n \n {breadcrumbs.map(({ id, slug, title }, index) =>\n index !== breadcrumbs.length - 1 ? (\n \n {title}\n \n \n ) : (\n {title}\n )\n )}\n \n )\n}\n","import React from 'react'\nimport styled from 'styled-components'\nimport { LinkBare } from 'components/Link/LinkBare'\nimport { COLORS } from 'consts/themes'\nimport { FONT_SIZES } from 'consts/fontSizes'\nimport { SPACINGS } from 'consts/spacings'\nimport { URLS } from 'consts/urls'\nimport { IconWithText } from 'components/Icon/IconWithText'\n\nconst PageEditThisPageWrapper = styled(LinkBare)`\n display: inline-flex;\n align-items: center;\n text-decoration: none;\n font-size: ${FONT_SIZES.COMPLEMENTARY};\n padding-top: ${SPACINGS.ONE};\n padding-bottom: ${SPACINGS.ONE};\n margin-top: ${SPACINGS.EIGHT};\n color: ${COLORS.TEXT_LOW_CONTRAST};\n`\n\ntype PropType = {\n pageUrl: string\n}\n\nexport const PageEditThisPage = (props: PropType) => {\n const { pageUrl } = props\n const url = `${URLS.GITHUB_DOCUMENTATION}/${pageUrl}`\n\n return (\n \n \n Edit this page on GitHub\n \n \n )\n}\n","import React from 'react'\nimport styled from 'styled-components'\nimport { PropType as PageDefaultType } from 'templates/Default'\nimport { LinkBare } from 'components/Link/LinkBare'\nimport { BRAND_GRADIENT_TEXT_STYLES } from 'consts/gradients'\nimport { COLORS } from 'consts/themes'\nimport { SPACINGS } from 'consts/spacings'\nimport { FONT_WEIGHTS } from 'consts/fontSizes'\nimport { IconWithText, IconWithTextText } from 'components/Icon/IconWithText'\nimport { createGapStyles } from 'utils/createGapStyles'\n\nconst ITEM_SPACING = SPACINGS.FOUR\n\nconst PagePaginationWrapper = styled.nav`\n ${createGapStyles(ITEM_SPACING, '', 'div')};\n display: flex;\n justify-content: space-between;\n margin-top: ${SPACINGS.EIGHT};\n`\n\nconst Item = styled.div`\n > a {\n color: ${COLORS.BRAND_PRIMARY};\n }\n\n &:nth-child(2) > a {\n text-align: right;\n color: ${COLORS.BRAND_SECONDARY};\n }\n`\n\nconst ItemLabel = styled.div`\n color: ${COLORS.TEXT_LOW_CONTRAST};\n padding-bottom: ${SPACINGS.ONE};\n`\n\nconst ItemTitle = styled.div`\n display: inline-flex;\n align-items: center;\n font-weight: ${FONT_WEIGHTS.MEDIUM};\n\n ${IconWithTextText} {\n ${BRAND_GRADIENT_TEXT_STYLES};\n }\n`\n\ntype PropType = {\n next: PageDefaultType['pageContext']['next']\n previous: PageDefaultType['pageContext']['previous']\n}\n\nexport const PagePagination = (props: PropType) => {\n const { next, previous } = props\n\n return (\n \n \n {previous && (\n \n Previous\n \n {previous.title}\n \n \n )}\n \n \n {next && (\n \n Next\n \n \n {next.title}\n \n \n \n )}\n \n \n )\n}\n","import { THEME_PREFIX } from 'consts/themes'\nimport { getThemeFromDocument } from 'utils/getThemeFromDocument'\nimport { kebabCaseToPascalCase } from 'utils/stringCasing'\nimport { SANDBOX_REGEX_THEME, SANDBOX_REGEX_TITLE } from 'consts/sandbox'\n\nexport const createSandboxReactIndexHtml = async (\n id: string\n): Promise => {\n const indexHTML = await import(\n '!!raw-loader!components/Sandbox/React/SandboxFilesDist/index.html'\n )\n const theme = THEME_PREFIX + getThemeFromDocument()\n const title = kebabCaseToPascalCase(id, ' ')\n return indexHTML.default\n .replace(SANDBOX_REGEX_THEME, theme)\n .replace(SANDBOX_REGEX_TITLE, title)\n}\n","import { EmblaOptionsType } from 'embla-carousel'\nimport { SandboxModuleType, SandboxReactExtensionType } from 'consts/sandbox'\nimport { sandboxInjectIosPickerLoop, sandboxInjectOptions } from 'utils/sandbox'\nimport {\n SANDBOX_REGEX_IOS_PICKER_LOOP,\n SANDBOX_REGEX_OPTIONS\n} from 'consts/sandbox'\n\nconst CAROUSEL_IMPORT_REGEX = /import\\sEmblaCarousel\\sfrom\\s'(.*)'/\nconst SLIDE_COUNT_REGEX = /const\\sSLIDE_COUNT\\s=\\s\\d{1,}/\nconst CAROUSEL_IMPORT_REPLACE = 'import EmblaCarousel from \"./EmblaCarousel\"'\n\nexport const createSandboxReactDefaultEntry = async (\n reactScriptExtension: SandboxReactExtensionType,\n slides: number[],\n options: EmblaOptionsType\n): Promise => {\n const slideCount = slides.length.toString()\n const entry: SandboxModuleType = await import(\n `!!raw-loader!components/Sandbox/React/SandboxFilesDist/CarouselDefaultEntry.${reactScriptExtension}`\n )\n return entry.default\n .replace(CAROUSEL_IMPORT_REGEX, CAROUSEL_IMPORT_REPLACE)\n .replace(SANDBOX_REGEX_OPTIONS, sandboxInjectOptions(options))\n .replace(SLIDE_COUNT_REGEX, (match) => match.replace(/\\d{1,}/, slideCount))\n}\n\nexport const createSandboxReactIosPickerEntry = async (\n reactScriptExtension: SandboxReactExtensionType,\n loop: boolean\n): Promise => {\n const entry: SandboxModuleType = await import(\n `!!raw-loader!components/Sandbox/React/SandboxFilesDist/CarouselIosPickerEntry.${reactScriptExtension}`\n )\n return entry.default\n .replace(CAROUSEL_IMPORT_REGEX, CAROUSEL_IMPORT_REPLACE)\n .replace(SANDBOX_REGEX_IOS_PICKER_LOOP, sandboxInjectIosPickerLoop(loop))\n}\n\nexport const createSandboxReactEntry = async (\n reactScriptExtension: SandboxReactExtensionType,\n slides: number[],\n options: EmblaOptionsType,\n id: string\n): Promise => {\n if (id === 'embla-carousel-ios-style-picker') {\n return createSandboxReactIosPickerEntry(\n reactScriptExtension,\n !!options.loop\n )\n }\n return createSandboxReactDefaultEntry(reactScriptExtension, slides, options)\n}\n","const IMAGES_IMPORT_REGEX = /import\\s{\\ssandboxImages\\s}\\sfrom\\s'(.*)/\nconst IMAGES_FUNCTION_REGEX = /sandboxImages\\(index\\)/\n\nexport const createSandboxReactImagePaths = (\n carouselScript: string\n): string => {\n return carouselScript\n .replace(IMAGES_IMPORT_REGEX, '')\n .replace(\n IMAGES_FUNCTION_REGEX,\n '`https://picsum.photos/600/350?v=${index}`'\n )\n}\n","import { kebabCaseToPascalCase } from 'utils/stringCasing'\nimport { SandboxModuleType, SandboxReactExtensionType } from 'consts/sandbox'\nimport { SANDBOX_REGEX_TITLE } from 'consts/sandbox'\n\nexport const createSandboxReactHeader = async (\n reactScriptExtension: SandboxReactExtensionType,\n id: string\n): Promise => {\n const header: SandboxModuleType = await import(\n `!!raw-loader!components/Sandbox/React/SandboxFilesDist/Header.${reactScriptExtension}`\n )\n const formattedTitle = kebabCaseToPascalCase(id, ' ')\n return header.default.replace(SANDBOX_REGEX_TITLE, formattedTitle)\n}\n","import { URLS } from 'consts/urls'\nimport { SandboxModuleType, SandboxReactExtensionType } from 'consts/sandbox'\nimport { SANDBOX_REGEX_REPOSITORY_URL } from 'consts/sandbox'\n\nexport const createSandboxReactFooter = async (\n reactScriptExtension: SandboxReactExtensionType\n): Promise => {\n const footer: SandboxModuleType = await import(\n `!!raw-loader!components/Sandbox/React/SandboxFilesDist/Footer.${reactScriptExtension}`\n )\n return footer.default.replace(SANDBOX_REGEX_REPOSITORY_URL, URLS.GITHUB_ROOT)\n}\n","import { getParameters } from 'codesandbox/lib/api/define'\nimport { SANDBOX_BASE_CSS, SANDBOX_CSS } from 'components/Sandbox/sandboxStyles'\nimport { SANDBOX_REACT_FOLDERS } from './sandboxReactFolders'\nimport { loadPrettier } from 'utils/loadPrettier'\nimport { createSandboxReactPackageJson } from './createSandboxReactPackageJson'\nimport { createSandboxReactIndexHtml } from './createSandboxReactIndexHtml'\nimport { createSandboxReactEntry } from './createSandboxReactEntry'\nimport { createSandboxReactImagePaths } from './createSandboxReactImagePaths'\nimport { createSandboxReactHeader } from './createSandboxReactHeader'\nimport { createSandboxReactFooter } from './createSandboxReactFooter'\nimport { createSandboxReactTsConfig } from './createSandboxReactTsConfig'\nimport { sandboxLanguageUtils } from 'utils/sandbox'\nimport {\n SandboxConfigType,\n SandboxReactCreateType,\n SANDBOX_LANGUAGES\n} from 'consts/sandbox'\n\nexport const createSandboxReact = async (\n config: SandboxReactCreateType\n): Promise => {\n const {\n id,\n carouselScript,\n slides,\n options,\n styles,\n plugins,\n sandboxOverrides,\n language = SANDBOX_LANGUAGES.JAVASCRIPT\n } = config\n const title = `${id}-react`\n const { prettierConfig, formatCss } = await loadPrettier()\n const { isTypeScript, reactScriptExtension, formatScript } =\n await sandboxLanguageUtils(language)\n const packageJson = await createSandboxReactPackageJson(\n language,\n title,\n plugins\n )\n const tsConfig = createSandboxReactTsConfig()\n const carouselScriptWithImages = createSandboxReactImagePaths(carouselScript)\n const [entryHtml, entryScript, headerScript, footerScript] =\n await Promise.all([\n createSandboxReactIndexHtml(title),\n createSandboxReactEntry(reactScriptExtension, slides, options, id),\n createSandboxReactHeader(reactScriptExtension, title),\n createSandboxReactFooter(reactScriptExtension)\n ])\n\n const sandboxConfig: SandboxConfigType['files'] = {\n [`.prettierrc`]: {\n isBinary: false,\n content: JSON.stringify(prettierConfig, null, '\\t')\n },\n [`package.json`]: {\n isBinary: false,\n content: JSON.stringify(packageJson, null, '\\t')\n },\n [`${SANDBOX_REACT_FOLDERS.PUBLIC}/index.html`]: {\n isBinary: false,\n content: entryHtml\n },\n [`${SANDBOX_REACT_FOLDERS.CSS}/base.css`]: {\n isBinary: false,\n content: formatCss(SANDBOX_BASE_CSS)\n },\n [`${SANDBOX_REACT_FOLDERS.CSS}/sandbox.css`]: {\n isBinary: false,\n content: formatCss(SANDBOX_CSS)\n },\n [`${SANDBOX_REACT_FOLDERS.CSS}/embla.css`]: {\n isBinary: false,\n content: formatCss(styles)\n },\n [`${SANDBOX_REACT_FOLDERS.JS}/index.${reactScriptExtension}`]: {\n isBinary: false,\n content: formatScript(entryScript)\n },\n [`${SANDBOX_REACT_FOLDERS.JS}/Header.${reactScriptExtension}`]: {\n isBinary: false,\n content: formatScript(headerScript)\n },\n [`${SANDBOX_REACT_FOLDERS.JS}/Footer.${reactScriptExtension}`]: {\n isBinary: false,\n content: formatScript(footerScript)\n },\n [`${SANDBOX_REACT_FOLDERS.JS}/EmblaCarousel.${reactScriptExtension}`]: {\n isBinary: false,\n content: formatScript(carouselScriptWithImages)\n }\n }\n\n if (isTypeScript) {\n Object.assign(sandboxConfig, {\n [`tsconfig.json`]: {\n isBinary: false,\n content: JSON.stringify(tsConfig, null, '\\t')\n }\n })\n }\n\n return getParameters({\n files: Object.assign({}, sandboxConfig, sandboxOverrides)\n })\n}\n","import docsPackageJson from 'embla-carousel-docs/package.json'\nimport { SANDBOX_REACT_FOLDERS } from './sandboxReactFolders'\nimport { kebabCaseToPascalCase } from 'utils/stringCasing'\nimport { sandboxLanguageUtils } from 'utils/sandbox'\nimport {\n SandboxLanguageType,\n SandboxPluginsType,\n PackageJsonType\n} from 'consts/sandbox'\n\nexport const createSandboxReactPackageJson = async (\n language: SandboxLanguageType,\n id: string,\n plugins?: SandboxPluginsType\n): Promise => {\n const { dependencies, devDependencies } = docsPackageJson\n const { isJavaScript, reactScriptExtension } = await sandboxLanguageUtils(\n language\n )\n\n return {\n name: id,\n version: '1.0.0',\n description: `${kebabCaseToPascalCase(id, ' ')} Example`,\n main: `${SANDBOX_REACT_FOLDERS.JS}/index.${reactScriptExtension}`,\n scripts: {\n start: 'react-scripts start',\n build: 'react-scripts build',\n test: 'react-scripts test --env=jsdom',\n eject: 'react-scripts eject'\n },\n dependencies: {\n react: dependencies.react,\n 'react-dom': dependencies['react-dom'],\n 'react-scripts': '4.0.0',\n 'embla-carousel-react': dependencies['embla-carousel-react'],\n 'embla-carousel': dependencies['embla-carousel'],\n ...(plugins && plugins)\n },\n devDependencies: isJavaScript\n ? { '@babel/runtime': '7.13.8' }\n : {\n '@types/react': devDependencies['@types/react'],\n '@types/react-dom': devDependencies['@types/react-dom'],\n typescript: devDependencies.typescript\n },\n browserslist: ['>0.2%', 'not dead', 'not ie <= 11', 'not op_mini all']\n }\n}\n","import { TsConfigType } from 'consts/sandbox'\n\nexport const createSandboxReactTsConfig = (): TsConfigType => {\n return {\n include: ['./src/**/*'],\n compilerOptions: {\n strict: true,\n esModuleInterop: true,\n lib: ['es6', 'dom'],\n jsx: 'react-jsx'\n }\n }\n}\n","export const SANDBOX_REACT_FOLDERS = {\n PUBLIC: 'public',\n CSS: 'src/css',\n JS: 'src/js'\n}\n","import { THEME_PREFIX } from 'consts/themes'\nimport { URLS } from 'consts/urls'\nimport { SANDBOX_VANILLA_FOLDERS } from './sandboxVanillaFolders'\nimport { getThemeFromDocument } from 'utils/getThemeFromDocument'\nimport { kebabCaseToPascalCase } from 'utils/stringCasing'\nimport { SandboxVanillaExtensionType } from 'consts/sandbox'\nimport {\n SANDBOX_REGEX_THEME,\n SANDBOX_REGEX_TITLE,\n SANDBOX_REGEX_REPOSITORY_URL\n} from 'consts/sandbox'\n\nconst SANDBOX_SCRIPT_SRC_REGEX = /__replace_sandbox_script_src__/g\nconst SANDBOX_CODE_REGEX = /__replace_sandbox_code__/g\n\nexport const createSandboxVanillaEntry = async (\n id: string,\n languageExtension: SandboxVanillaExtensionType,\n carouselHtml: string\n): Promise => {\n const indexHTML = await import(\n '!!raw-loader!components/Sandbox/Vanilla/SandboxFilesDist/index.html'\n )\n const theme = THEME_PREFIX + getThemeFromDocument()\n const title = kebabCaseToPascalCase(id, ' ')\n const scriptSrc = `${SANDBOX_VANILLA_FOLDERS.JS}/index.${languageExtension}`\n return indexHTML.default\n .replace(SANDBOX_REGEX_THEME, theme)\n .replace(SANDBOX_REGEX_TITLE, title)\n .replace(SANDBOX_SCRIPT_SRC_REGEX, scriptSrc)\n .replace(SANDBOX_REGEX_REPOSITORY_URL, URLS.GITHUB_ROOT)\n .replace(SANDBOX_CODE_REGEX, carouselHtml)\n}\n","const IMG_SRC_WITH_HASH_REGEX = /\\/static\\/slide-\\d{1,}-.+?\\.jpg/g\nconst IMG_SLIDE_WITH_NUMBER_REGEX = /slide-\\d{1,}/\nconst IMG_NUMBER_REGEX = /slide-/\n\nexport const createSandboxVanillaImagePaths = (\n carouselHtml: string\n): string => {\n return carouselHtml.replace(IMG_SRC_WITH_HASH_REGEX, (match) => {\n const slideWithNumber = match.match(IMG_SLIDE_WITH_NUMBER_REGEX) || ['']\n const index = slideWithNumber[0].replace(IMG_NUMBER_REGEX, '')\n return `https://picsum.photos/600/350?v=${index}`\n })\n}\n","import { getParameters } from 'codesandbox/lib/api/define'\nimport { SANDBOX_BASE_CSS, SANDBOX_CSS } from '../sandboxStyles'\nimport { SANDBOX_VANILLA_FOLDERS } from './sandboxVanillaFolders'\nimport { loadPrettier } from 'utils/loadPrettier'\nimport { createSandboxVanillaPackageJson } from './createSandboxVanillaPackageJson'\nimport { createSandboxVanillaTsConfig } from './createSandboxVanillaTsConfig'\nimport { createSandboxVanillaEntry } from './createSandboxVanillaEntry'\nimport { createSandboxVanillaImagePaths } from './createSandboxVanillaImagePaths'\nimport { createSandboxVanillaOptions } from './createSandboxVanillaOptions'\nimport { sandboxLanguageUtils } from 'utils/sandbox'\nimport {\n SandboxVanillaCreateType,\n SandboxConfigType,\n SANDBOX_LANGUAGES\n} from 'consts/sandbox'\n\nexport const createSandboxVanilla = async (\n config: SandboxVanillaCreateType\n): Promise => {\n const {\n id,\n carouselScript,\n carouselHtml,\n options,\n styles,\n plugins,\n sandboxOverrides,\n language = SANDBOX_LANGUAGES.JAVASCRIPT\n } = config\n const title = `${id}-vanilla`\n const { prettierConfig, formatHtml, formatCss } = await loadPrettier()\n const { isTypeScript, vanillaScriptExtension, formatScript } =\n await sandboxLanguageUtils(language)\n const packageJson = await createSandboxVanillaPackageJson(\n language,\n title,\n plugins\n )\n const tsConfig = createSandboxVanillaTsConfig()\n const entryScript = createSandboxVanillaOptions(carouselScript, options)\n const entryHtml = await createSandboxVanillaEntry(\n title,\n vanillaScriptExtension,\n createSandboxVanillaImagePaths(carouselHtml)\n )\n\n const sandboxConfig: SandboxConfigType['files'] = {\n [`.prettierrc`]: {\n isBinary: false,\n content: JSON.stringify(prettierConfig, null, '\\t')\n },\n [`package.json`]: {\n isBinary: false,\n content: JSON.stringify(packageJson, null, '\\t')\n },\n [`index.html`]: {\n isBinary: false,\n content: formatHtml(entryHtml)\n },\n [`${SANDBOX_VANILLA_FOLDERS.CSS}/base.css`]: {\n isBinary: false,\n content: formatCss(SANDBOX_BASE_CSS)\n },\n [`${SANDBOX_VANILLA_FOLDERS.CSS}/sandbox.css`]: {\n isBinary: false,\n content: formatCss(SANDBOX_CSS)\n },\n [`${SANDBOX_VANILLA_FOLDERS.CSS}/embla.css`]: {\n isBinary: false,\n content: formatCss(styles)\n },\n [`${SANDBOX_VANILLA_FOLDERS.JS}/index.${vanillaScriptExtension}`]: {\n isBinary: false,\n content: formatScript(entryScript)\n }\n }\n\n if (isTypeScript) {\n Object.assign(sandboxConfig, {\n [`tsconfig.json`]: {\n isBinary: false,\n content: JSON.stringify(tsConfig, null, '\\t')\n }\n })\n }\n\n return getParameters({\n files: Object.assign({}, sandboxConfig, sandboxOverrides)\n })\n}\n","import docsPackageJson from 'embla-carousel-docs/package.json'\nimport { kebabCaseToPascalCase } from 'utils/stringCasing'\nimport { sandboxLanguageUtils } from 'utils/sandbox'\nimport {\n PackageJsonType,\n SandboxLanguageType,\n SandboxPluginsType\n} from 'consts/sandbox'\n\nexport const createSandboxVanillaPackageJson = async (\n language: SandboxLanguageType,\n id: string,\n plugins?: SandboxPluginsType\n): Promise => {\n const { isJavaScript } = await sandboxLanguageUtils(language)\n const { dependencies, devDependencies } = docsPackageJson\n\n return {\n name: id,\n version: '1.0.0',\n description: `${kebabCaseToPascalCase(id, ' ')} Example`,\n main: 'index.html',\n scripts: {\n start: 'parcel index.html --open',\n build: 'parcel build index.html'\n },\n dependencies: {\n 'parcel-bundler': '^1.6.1',\n 'embla-carousel': dependencies['embla-carousel-react'],\n ...(plugins && plugins)\n },\n devDependencies: isJavaScript\n ? { '@babel/core': '7.2.0' }\n : {\n typescript: devDependencies.typescript\n },\n resolutions: {\n '@babel/preset-env': '7.13.8'\n }\n }\n}\n","import { TsConfigType } from 'consts/sandbox'\n\nexport const createSandboxVanillaTsConfig = (): TsConfigType => {\n return {\n include: ['./src/**/*'],\n compilerOptions: {\n strict: true,\n module: 'commonjs',\n jsx: 'preserve',\n esModuleInterop: true,\n sourceMap: true,\n allowJs: true,\n lib: ['es6', 'dom'],\n rootDir: 'src',\n moduleResolution: 'node'\n }\n }\n}\n","import { EmblaOptionsType } from 'embla-carousel'\nimport { sandboxInjectIosPickerLoop, sandboxInjectOptions } from 'utils/sandbox'\nimport {\n SANDBOX_REGEX_IOS_PICKER_LOOP,\n SANDBOX_REGEX_OPTIONS\n} from 'consts/sandbox'\n\nexport const createSandboxVanillaOptions = (\n carouselScript: string,\n options: EmblaOptionsType\n): string => {\n const loop = options?.loop\n return carouselScript\n .replace(SANDBOX_REGEX_OPTIONS, sandboxInjectOptions(options))\n .replace(SANDBOX_REGEX_IOS_PICKER_LOOP, sandboxInjectIosPickerLoop(loop))\n}\n","export const SANDBOX_VANILLA_FOLDERS = {\n CSS: 'src/css',\n JS: 'src/js'\n}\n","const IMPORT_LOCAL_MODULE_REGEX = /from\\s'.\\/EmblaCarousel(.*)'/g\nconst MODULE_LOCAL_NAME_REGEX = /.+?(?=EmblaCarousel)/\n\nexport const sandboxStaticFindLocalModules = (\n carouselScript: string\n): string[] => {\n const modulesMatch = carouselScript.match(IMPORT_LOCAL_MODULE_REGEX) || []\n return modulesMatch.map((match) =>\n match.replace(MODULE_LOCAL_NAME_REGEX, '').replace(/'/, '')\n )\n}\n\nconst IMPORT_SHARED_MODULE_REGEX = /from\\s'..\\/EmblaCarousel(.*)'/g\nconst MODULE_SHARED_NAME_REGEX = /.+?(?=EmblaCarousel)/\n\nexport const sandboxStaticFindSharedModules = (\n carouselScript: string\n): string[] => {\n const modulesMatch = carouselScript.match(IMPORT_SHARED_MODULE_REGEX) || []\n return modulesMatch.map((match) =>\n match.replace(MODULE_SHARED_NAME_REGEX, '').replace(/'/, '')\n )\n}\n","import { sandboxLanguageUtils } from 'utils/sandbox'\nimport { SandboxLanguageType, SandboxModuleType } from 'consts/sandbox'\nimport {\n sandboxStaticFindLocalModules,\n sandboxStaticFindSharedModules\n} from './sandboxStaticFindModules'\n\ntype ModuleScriptType = {\n script: SandboxModuleType\n name: string\n}\n\nexport const sandboxStaticExtractVanillaModules = async (\n language: SandboxLanguageType,\n carouselScript: string,\n path: string\n): Promise => {\n const { vanillaScriptExtension } = await sandboxLanguageUtils(language)\n const localModules = sandboxStaticFindLocalModules(carouselScript)\n const sharedModules = sandboxStaticFindSharedModules(carouselScript)\n const modules = [...localModules, ...sharedModules]\n\n const localModulesPromises: Promise[] = localModules.map(\n (module) => {\n return import(\n `!!raw-loader!components/Sandbox/Vanilla/SandboxFilesDist/${path}/${module}.${vanillaScriptExtension}`\n )\n }\n )\n const sharedModulesPromises: Promise[] = sharedModules.map(\n (module) => {\n return import(\n `!!raw-loader!components/Sandbox/Vanilla/SandboxFilesDist/${module}.${vanillaScriptExtension}`\n )\n }\n )\n\n const promises = [...localModulesPromises, ...sharedModulesPromises]\n const resolvedPromises = await Promise.all(promises)\n const moduleScripts = resolvedPromises.map((script, index) => ({\n script,\n name: modules[index]\n }))\n\n return new Promise((resolve) => resolve(moduleScripts))\n}\n\nexport const sandboxStaticExtractReactModules = async (\n language: SandboxLanguageType,\n carouselScript: string,\n path: string\n): Promise => {\n const { reactScriptExtension } = await sandboxLanguageUtils(language)\n const localModules = sandboxStaticFindLocalModules(carouselScript)\n const sharedModules = sandboxStaticFindSharedModules(carouselScript)\n const modules = [...localModules, ...sharedModules]\n\n const localModulesPromises: Promise[] = localModules.map(\n (module) => {\n return import(\n `!!raw-loader!components/Sandbox/React/SandboxFilesDist/${path}/${module}.${reactScriptExtension}`\n )\n }\n )\n const sharedModulesPromises: Promise[] = sharedModules.map(\n (module) => {\n return import(\n `!!raw-loader!components/Sandbox/React/SandboxFilesDist/${module}.${reactScriptExtension}`\n )\n }\n )\n\n const promises = [...localModulesPromises, ...sharedModulesPromises]\n const resolvedPromises = await Promise.all(promises)\n const moduleScripts = resolvedPromises.map((script, index) => ({\n script,\n name: modules[index]\n }))\n\n return new Promise((resolve) => resolve(moduleScripts))\n}\n","import { SandboxPluginsType, SANDBOX_PLUGINS } from 'consts/sandbox'\nimport { addSandboxPlugins } from 'utils/sandbox'\n\nexport const sandboxStaticExtractPlugins = (\n carouselScript: string\n): SandboxPluginsType | undefined => {\n const pluginList = Object.values(SANDBOX_PLUGINS).filter((pluginName) => {\n return carouselScript.match(`from '${pluginName}'`)\n })\n\n return addSandboxPlugins(pluginList).plugins\n}\n","import { css } from 'styled-components'\nimport { styledComponentsStylesToString } from 'utils/styledComponentStylesToString'\nimport { FONT_SIZES, FONT_WEIGHTS } from 'consts/fontSizes'\nimport { COLORS, THEME_STYLES } from 'consts/themes'\nimport { BASE_FONT_STYLES } from 'components/Layout/GlobalStyles/base'\n\nconst SANDBOX_BASE_STYLES = css`\n @import url('https://fonts.googleapis.com/css2?family=Inter:wght@100..900&display=swap');\n\n html {\n -webkit-text-size-adjust: 100%;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n box-sizing: border-box;\n line-height: 1.15;\n\n background-color: ${COLORS.BACKGROUND_SITE};\n font-size: ${BASE_FONT_STYLES};\n\n font-family: Inter, 'system-ui', -apple-system, BlinkMacSystemFont,\n 'Segoe UI', Roboto, Helvetica, Arial, sans-serif, 'Apple Color Emoji',\n 'Segoe UI Emoji', 'Segoe UI Symbol';\n }\n\n *,\n *::before,\n *::after {\n box-sizing: inherit;\n }\n\n body {\n background-color: ${COLORS.BACKGROUND_SITE};\n color: ${COLORS.TEXT_HIGH_CONTRAST};\n font-size: ${FONT_SIZES.BODY};\n line-height: 1.65;\n }\n`\n\nconst SANDBOX_HEADER_STYLES = css`\n .header {\n font-size: 2rem;\n font-weight: ${FONT_WEIGHTS.BOLD};\n text-align: center;\n padding: 4rem 2rem 2rem 2rem;\n margin: 0;\n }\n`\n\nconst SANDBOX_FOOTER_STYLES = css`\n .footer {\n display: flex;\n justify-content: center;\n padding: 2rem 2rem 4rem 2rem;\n }\n\n .footer__link {\n display: flex;\n align-items: center;\n background-color: transparent;\n text-decoration: none;\n text-align: center;\n font-weight: ${FONT_WEIGHTS.SEMI_BOLD};\n color: ${COLORS.TEXT_LOW_CONTRAST};\n font-size: 1.4rem;\n }\n\n .footer__link__svg {\n display: block;\n width: 2rem;\n height: 2rem;\n margin-right: 1rem;\n fill: currentColor;\n }\n`\n\nexport const SANDBOX_BASE_CSS = styledComponentsStylesToString(\n SANDBOX_BASE_STYLES,\n THEME_STYLES\n)\n\nexport const SANDBOX_CSS = styledComponentsStylesToString(\n SANDBOX_HEADER_STYLES,\n SANDBOX_FOOTER_STYLES\n)\n","import React, { PropsWithChildren } from 'react'\nimport { useSiteMetadata } from 'hooks/useSiteMetadata'\nimport { removeProtocol } from 'utils/removeProtocol'\nimport { kebabCaseToPascalCase } from 'utils/stringCasing'\n\ntype PropType = PropsWithChildren<{\n title: string\n description?: string\n lang?: string\n url: string\n}>\n\nexport const Seo = (props: PropType) => {\n const { title, description, lang = 'en', url, children } = props\n const siteMetadata = useSiteMetadata()\n const pageTitle = `${title} | ${kebabCaseToPascalCase(siteMetadata.title)}`\n const metaDescription = description || siteMetadata.description\n\n return (\n <>\n \n {pageTitle}\n \n \n \n \n \n \n \n \n \n \n \n \n\n {children}\n \n )\n}\n","import { EmblaOptionsType } from 'embla-carousel'\nimport { OptionsType } from 'embla-carousel/components/Options'\nimport { SPACINGS } from 'consts/spacings'\nimport {\n PackageJson as BasePackageJsonType,\n TsConfigJson as TsConfigType\n} from 'type-fest'\n\nexport type PackageJsonType = BasePackageJsonType & {\n browserslist?: string[]\n}\n\nexport type { TsConfigType }\n\nexport type SandboxConfigType = {\n files: {\n [key: string]: {\n content: string\n isBinary: boolean\n }\n }\n}\n\nexport type SandboxModuleType = { default: string }\n\nexport type SandboxVanillaExtensionType = 'js' | 'ts'\n\nexport type SandboxReactExtensionType = 'jsx' | 'tsx'\n\nexport type SandboxPluginNameType =\n (typeof SANDBOX_PLUGINS)[keyof typeof SANDBOX_PLUGINS]\n\nexport type SandboxLanguageType =\n (typeof SANDBOX_LANGUAGES)[keyof typeof SANDBOX_LANGUAGES]\n\nexport type SandboxPluginsType = {\n [key in SandboxPluginNameType]?: string\n}\n\nexport type SandboxSharedCreateType = {\n id: string\n options: EmblaOptionsType\n styles: string\n plugins?: SandboxPluginsType\n language?: SandboxLanguageType\n sandboxOverrides?: SandboxConfigType['files']\n}\n\nexport type SandboxVanillaCreateType = SandboxSharedCreateType & {\n carouselScript: string\n carouselHtml: string\n}\n\nexport type SandboxReactCreateType = SandboxSharedCreateType & {\n carouselScript: string\n slides: number[]\n}\n\nexport type SandboxStaticSettingsType = {\n id: string\n options: EmblaOptionsType\n styles: string\n language?: SandboxLanguageType\n slides: number[]\n}\n\nexport type SandboxGeneratorSettingsType = OptionsType & {\n id: string\n framework: SandboxLabelKeyType | ''\n slideList: number[]\n accessibility: boolean\n slideSize: string\n slideGapSize: string\n edgeGap: string\n navigationPrevNextButtons: boolean\n navigationDots: boolean\n selectedSnapDisplay: boolean\n autoplay: boolean\n classNames: boolean\n wheelGestures: boolean\n styles?: string\n}\n\nexport type SandboxModuleScriptType = {\n script: SandboxModuleType\n name: string\n}\n\nexport type SandboxSelectionType = {\n key: SandboxLabelKeyType\n label: SandboxLabelValueType\n createSandbox: (settings?: SettingsType) => Promise\n}\n\nexport type SandboxLabelValueType = (typeof SANDBOX_LABELS)[SandboxLabelKeyType]\nexport type SandboxLabelKeyType = keyof typeof SANDBOX_LABELS\nexport type SandboxCreateFunctionType =\n SandboxSelectionType['createSandbox']\n\nexport const SANDBOX_LABELS = {\n VANILLA_JS: 'Vanilla',\n VANILLA_TS: 'Vanilla + TypeScript',\n REACT_TS: 'React + TypeScript',\n REACT_JS: 'React'\n} as const\n\nexport const SANDBOX_LANGUAGES = {\n JAVASCRIPT: 'javascript',\n TYPESCRIPT: 'typescript'\n} as const\n\nexport const SANDBOX_PLUGINS = {\n AUTOPLAY: 'embla-carousel-autoplay',\n AUTO_SCROLL: 'embla-carousel-auto-scroll',\n AUTO_HEIGHT: 'embla-carousel-auto-height',\n CLASS_NAMES: 'embla-carousel-class-names',\n FADE: 'embla-carousel-fade'\n} as const\n\nexport const SANDBOX_GENERATOR_FORM_FIELDS = {\n FRAMEWORK: 'framework',\n LOOP: 'loop',\n DRAG_FREE: 'dragFree',\n AXIS: 'axis',\n DIRECTION: 'direction',\n ACCESSIBILITY: 'accessibility',\n SLIDE_SIZE: 'slideSize',\n SLIDE_GAP_SIZE: 'slideGapSize',\n EDGE_GAP: 'edgeGap',\n ALIGN: 'align',\n CONTAIN_SCROLL: 'containScroll',\n SLIDES_TO_SCROLL: 'slidesToScroll',\n NAVIGATION_PREV_NEXT_BUTTONS: 'navigationPrevNextButtons',\n NAVIGATION_DOTS: 'navigationDots',\n AUTOPLAY: 'autoplay',\n WHEEL_GESTURES: 'wheelGestures'\n} as const\n\nexport const SANDBOX_GENERATOR_FORM_PREFIX = 'carousel-generator-form'\n\nexport const SANDBOX_SELECTION_SPACING = SPACINGS.ONE\n\nexport const SANDBOX_REGEX_REPOSITORY_URL =\n /__replace_sandbox_repository_url__/g\n\nexport const SANDBOX_REGEX_TITLE = /__replace_sandbox_title__/g\n\nexport const SANDBOX_REGEX_THEME = /__replace_sandbox_theme__/g\n\nexport const SANDBOX_REGEX_OPTIONS = /const\\sOPTIONS(.*)/\n\nexport const SANDBOX_REGEX_IOS_PICKER_LOOP = /const\\sLOOP\\s=\\sfalse/\n","export const arrayFromNumber = (number: number): number[] =>\n Array.from(Array(number).keys())\n","import { ThemeKeyType, THEME_KEYS, THEME_PREFIX } from 'consts/themes'\nimport { isBrowser } from 'utils/isBrowser'\n\nexport const getThemeFromDocument = (): ThemeKeyType => {\n if (!isBrowser) return THEME_KEYS.LIGHT\n\n const lightThemeClass = THEME_PREFIX + THEME_KEYS.LIGHT\n return document.documentElement.classList.contains(lightThemeClass)\n ? THEME_KEYS.LIGHT\n : THEME_KEYS.DARK\n}\n","import prettierrc from '../../.prettierrc'\nimport { Options as PretterOptions } from 'prettier'\n\ntype LoadPrettierType = {\n prettierConfig: PretterOptions\n formatHtml: (html: string) => string\n formatCss: (css: string) => string\n formatJs: (js: string) => string\n formatTs: (ts: string) => string\n}\n\nconst PRETTIER_CONFIG = prettierrc\n\nexport const loadPrettier = async (): Promise => {\n const [prettier, htmlParser, cssParser, babelParser] = await Promise.all([\n import('prettier'),\n import('prettier/parser-html'),\n import('prettier/parser-postcss'),\n import('prettier/parser-babel')\n ])\n\n const prettierHtmlParser: PretterOptions = {\n ...PRETTIER_CONFIG,\n parser: 'html',\n plugins: [htmlParser]\n }\n\n const prettierCssParser: PretterOptions = {\n ...PRETTIER_CONFIG,\n parser: 'css',\n plugins: [cssParser]\n }\n\n const prettierBabelParser: PretterOptions = {\n ...PRETTIER_CONFIG,\n parser: 'babel',\n plugins: [babelParser]\n }\n\n const prettierBabeTsParser: PretterOptions = {\n ...PRETTIER_CONFIG,\n parser: 'babel-ts',\n plugins: [babelParser]\n }\n\n const prettierFormatSafe = (\n subject: string,\n parser: PretterOptions\n ): string => {\n let formattedString = ''\n try {\n formattedString = prettier.format(subject, parser)\n } catch (error) {\n console.warn('Prettier was not able to format file', error) // eslint-disable-line no-console\n }\n return formattedString\n }\n\n const formatHtml = (html: string): string =>\n prettierFormatSafe(html, prettierHtmlParser)\n\n const formatCss = (css: string): string =>\n prettierFormatSafe(css, prettierCssParser)\n\n const formatJs = (js: string): string =>\n prettierFormatSafe(js, prettierBabelParser)\n\n const formatTs = (ts: string): string =>\n prettierFormatSafe(ts, prettierBabeTsParser)\n\n return {\n prettierConfig: PRETTIER_CONFIG,\n formatHtml,\n formatCss,\n formatJs,\n formatTs\n }\n}\n","export const removeProtocol = (url: string): string =>\n url.replace(/(^\\w+:|^)\\/\\//, '')\n","import docsPackageJson from 'embla-carousel-docs/package.json'\nimport { EmblaOptionsType } from 'embla-carousel'\nimport { loadPrettier } from 'utils/loadPrettier'\nimport { camelOrPascalToKebabCase } from 'utils/stringCasing'\nimport {\n SandboxCreateFunctionType,\n SandboxLabelKeyType,\n SandboxSelectionType,\n SANDBOX_LABELS,\n SandboxLanguageType,\n SandboxReactExtensionType,\n SandboxVanillaExtensionType,\n SANDBOX_LANGUAGES,\n SandboxSharedCreateType,\n SandboxPluginNameType,\n SandboxGeneratorSettingsType,\n SANDBOX_GENERATOR_FORM_PREFIX\n} from 'consts/sandbox'\n\ntype SandboxLanguageUtilsType = {\n isJavaScript: boolean\n isTypeScript: boolean\n vanillaScriptExtension: SandboxVanillaExtensionType\n reactScriptExtension: SandboxReactExtensionType\n formatScript: (jsOrTs: string) => string\n}\n\nexport const sandboxLanguageUtils = async (\n language: SandboxLanguageType\n): Promise => {\n const { formatTs, formatJs } = await loadPrettier()\n const isTypeScript = language === SANDBOX_LANGUAGES.TYPESCRIPT\n const isJavaScript = !isTypeScript\n const formatScript = isTypeScript ? formatTs : formatJs\n const reactScriptExtension = isJavaScript ? 'jsx' : 'tsx'\n const vanillaScriptExtension = isJavaScript ? 'js' : 'ts'\n\n return {\n isJavaScript,\n isTypeScript,\n vanillaScriptExtension,\n reactScriptExtension,\n formatScript\n }\n}\n\ntype SandboxCreateType = {\n [key in SandboxLabelKeyType]: SandboxCreateFunctionType\n}\n\nexport const createSandboxFunctionsWithLabels = (\n createSandboxFunction: Partial>\n): SandboxSelectionType[] => {\n return Object.keys(createSandboxFunction).map((sandboxLabelKey) => {\n const key = sandboxLabelKey\n const createSandbox = >(\n createSandboxFunction[key]\n )\n const label = SANDBOX_LABELS[key]\n\n return { key, label, createSandbox }\n })\n}\n\ntype SandboxAddPluginsType = Pick\n\nexport const addSandboxPlugins = (\n pluginNames: SandboxPluginNameType | SandboxPluginNameType[]\n): SandboxAddPluginsType => {\n const pluginsArray = Array.isArray(pluginNames) ? pluginNames : [pluginNames]\n\n return {\n plugins: {\n ...pluginsArray.reduce(\n (allPlugins, pluginName) => ({\n ...allPlugins,\n [pluginName]: docsPackageJson.dependencies[pluginName]\n }),\n {}\n )\n }\n }\n}\n\nexport const sandboxInjectOptions = (\n options: EmblaOptionsType\n): ((match: string) => string) => {\n return (match: string) => match.replace('{}', JSON.stringify(options))\n}\n\nexport const sandboxInjectIosPickerLoop = (\n loop: boolean = false\n): ((match: string) => string) => {\n return (match) => match.replace('false', loop.toString())\n}\n\ntype SandboxGeneratorInputIdType<\n Key extends keyof SandboxGeneratorSettingsType\n> = {\n ID: string\n FIELD_NAME: Key\n}\n\nexport type SandboxGeneratorRadioType<\n Key extends keyof SandboxGeneratorSettingsType\n> = SandboxGeneratorInputIdType & {\n OPTIONS: {\n LABEL: string\n VALUE: SandboxGeneratorSettingsType[Key]\n }[]\n}\n\nexport type SandboxGeneratorCheckboxType<\n Key extends keyof SandboxGeneratorSettingsType\n> = SandboxGeneratorInputIdType & {\n LABEL: string\n}\n\nexport type SandboxGeneratorInputTextType<\n Key extends keyof SandboxGeneratorSettingsType\n> = SandboxGeneratorInputIdType & {\n LABEL: string\n}\n\nexport const createSandboxGeneratorInputId = <\n Key extends keyof SandboxGeneratorSettingsType\n>(\n fieldName: Key\n): SandboxGeneratorInputIdType => {\n return {\n FIELD_NAME: fieldName,\n ID: `${SANDBOX_GENERATOR_FORM_PREFIX}-${camelOrPascalToKebabCase(\n fieldName\n )}`\n }\n}\n","import { FlattenSimpleInterpolation } from 'styled-components'\n\nexport const styledComponentsStylesToString = (\n ...stylesList: FlattenSimpleInterpolation[]\n): string => {\n return stylesList.reduce(\n (allStyles, styles) => allStyles + styles.join(''),\n ''\n )\n}\n","module.exports = require('../../.prettierrc.js')\n","import { EmblaPluginType } from 'embla-carousel'\n\nexport function isObject(subject: unknown): subject is Record {\n return Object.prototype.toString.call(subject) === '[object Object]'\n}\n\nexport function isRecord(\n subject: unknown\n): subject is Record {\n return isObject(subject) || Array.isArray(subject)\n}\n\nexport function canUseDOM(): boolean {\n return !!(\n typeof window !== 'undefined' &&\n window.document &&\n window.document.createElement\n )\n}\n\nexport function areOptionsEqual(\n optionsA: Record,\n optionsB: Record\n): boolean {\n const optionsAKeys = Object.keys(optionsA)\n const optionsBKeys = Object.keys(optionsB)\n\n if (optionsAKeys.length !== optionsBKeys.length) return false\n\n const breakpointsA = JSON.stringify(Object.keys(optionsA.breakpoints || {}))\n const breakpointsB = JSON.stringify(Object.keys(optionsB.breakpoints || {}))\n\n if (breakpointsA !== breakpointsB) return false\n\n return optionsAKeys.every((key) => {\n const valueA = optionsA[key]\n const valueB = optionsB[key]\n if (typeof valueA === 'function') return `${valueA}` === `${valueB}`\n if (!isRecord(valueA) || !isRecord(valueB)) return valueA === valueB\n return areOptionsEqual(valueA, valueB)\n })\n}\n\nexport function sortAndMapPluginToOptions(\n plugins: EmblaPluginType[]\n): EmblaPluginType['options'][] {\n return plugins\n .concat()\n .sort((a, b) => (a.name > b.name ? 1 : -1))\n .map((plugin) => plugin.options)\n}\n\nexport function arePluginsEqual(\n pluginsA: EmblaPluginType[],\n pluginsB: EmblaPluginType[]\n): boolean {\n if (pluginsA.length !== pluginsB.length) return false\n\n const optionsA = sortAndMapPluginToOptions(pluginsA)\n const optionsB = sortAndMapPluginToOptions(pluginsB)\n\n return optionsA.every((optionA, index) => {\n const optionB = optionsB[index]\n return areOptionsEqual(optionA, optionB)\n })\n}\n","import { isString } from './utils'\n\nexport type AlignmentOptionType =\n | 'start'\n | 'center'\n | 'end'\n | ((viewSize: number, snapSize: number, index: number) => number)\n\nexport type AlignmentType = {\n measure: (n: number, index: number) => number\n}\n\nexport function Alignment(\n align: AlignmentOptionType,\n viewSize: number\n): AlignmentType {\n const predefined = { start, center, end }\n\n function start(): number {\n return 0\n }\n\n function center(n: number): number {\n return end(n) / 2\n }\n\n function end(n: number): number {\n return viewSize - n\n }\n\n function measure(n: number, index: number): number {\n if (isString(align)) return predefined[align](n)\n return align(viewSize, n, index)\n }\n\n const self: AlignmentType = {\n measure\n }\n return self\n}\n","type EventNameType = keyof DocumentEventMap | keyof WindowEventMap\ntype EventHandlerType = (evt: any) => void\ntype EventOptionsType = boolean | AddEventListenerOptions | undefined\ntype EventRemoverType = () => void\n\nexport type EventStoreType = {\n add: (\n node: EventTarget,\n type: EventNameType,\n handler: EventHandlerType,\n options?: EventOptionsType\n ) => EventStoreType\n clear: () => void\n}\n\nexport function EventStore(): EventStoreType {\n let listeners: EventRemoverType[] = []\n\n function add(\n node: EventTarget,\n type: EventNameType,\n handler: EventHandlerType,\n options: EventOptionsType = { passive: true }\n ): EventStoreType {\n let removeListener: EventRemoverType\n\n if ('addEventListener' in node) {\n node.addEventListener(type, handler, options)\n removeListener = () => node.removeEventListener(type, handler, options)\n } else {\n const legacyMediaQueryList = node\n legacyMediaQueryList.addListener(handler)\n removeListener = () => legacyMediaQueryList.removeListener(handler)\n }\n\n listeners.push(removeListener)\n return self\n }\n\n function clear(): void {\n listeners = listeners.filter((remove) => remove())\n }\n\n const self: EventStoreType = {\n add,\n clear\n }\n return self\n}\n","import { EngineType } from './Engine'\nimport { EventStore } from './EventStore'\nimport { mathAbs, WindowType } from './utils'\n\nexport type AnimationsUpdateType = (engine: EngineType) => void\nexport type AnimationsRenderType = (\n engine: EngineType,\n lagOffset: number\n) => void\n\nexport type AnimationsType = {\n init: () => void\n destroy: () => void\n start: () => void\n stop: () => void\n update: () => void\n render: (lagOffset: number) => void\n}\n\nexport function Animations(\n ownerDocument: Document,\n ownerWindow: WindowType,\n update: AnimationsType['update'],\n render: AnimationsType['render']\n): AnimationsType {\n const documentVisibleHandler = EventStore()\n const timeStep = 1000 / 60\n let lastTimeStamp: number | null = null\n let lag = 0\n let animationFrame = 0\n\n function init(): void {\n documentVisibleHandler.add(ownerDocument, 'visibilitychange', () => {\n if (ownerDocument.hidden) reset()\n })\n }\n\n function destroy(): void {\n stop()\n documentVisibleHandler.clear()\n }\n\n function animate(timeStamp: DOMHighResTimeStamp): void {\n if (!animationFrame) return\n if (!lastTimeStamp) lastTimeStamp = timeStamp\n\n const elapsed = timeStamp - lastTimeStamp\n lastTimeStamp = timeStamp\n lag += elapsed\n\n while (lag >= timeStep) {\n update()\n lag -= timeStep\n }\n\n const lagOffset = mathAbs(lag / timeStep)\n render(lagOffset)\n\n if (animationFrame) ownerWindow.requestAnimationFrame(animate)\n }\n\n function start(): void {\n if (animationFrame) return\n\n animationFrame = ownerWindow.requestAnimationFrame(animate)\n }\n\n function stop(): void {\n ownerWindow.cancelAnimationFrame(animationFrame)\n lastTimeStamp = null\n lag = 0\n animationFrame = 0\n }\n\n function reset(): void {\n lastTimeStamp = null\n lag = 0\n }\n\n const self: AnimationsType = {\n init,\n destroy,\n start,\n stop,\n update,\n render\n }\n return self\n}\n","import { NodeRectType } from './NodeRects'\n\nexport type AxisOptionType = 'x' | 'y'\nexport type AxisDirectionOptionType = 'ltr' | 'rtl'\ntype AxisEdgeType = 'top' | 'right' | 'bottom' | 'left'\n\nexport type AxisType = {\n scroll: AxisOptionType\n cross: AxisOptionType\n startEdge: AxisEdgeType\n endEdge: AxisEdgeType\n measureSize: (nodeRect: NodeRectType) => number\n direction: (n: number) => number\n}\n\nexport function Axis(\n axis: AxisOptionType,\n contentDirection: AxisDirectionOptionType\n): AxisType {\n const isRightToLeft = contentDirection === 'rtl'\n const isVertical = axis === 'y'\n const scroll = isVertical ? 'y' : 'x'\n const cross = isVertical ? 'x' : 'y'\n const sign = !isVertical && isRightToLeft ? -1 : 1\n const startEdge = getStartEdge()\n const endEdge = getEndEdge()\n\n function measureSize(nodeRect: NodeRectType): number {\n const { height, width } = nodeRect\n return isVertical ? height : width\n }\n\n function getStartEdge(): AxisEdgeType {\n if (isVertical) return 'top'\n return isRightToLeft ? 'right' : 'left'\n }\n\n function getEndEdge(): AxisEdgeType {\n if (isVertical) return 'bottom'\n return isRightToLeft ? 'left' : 'right'\n }\n\n function direction(n: number): number {\n return n * sign\n }\n\n const self: AxisType = {\n scroll,\n cross,\n startEdge,\n endEdge,\n measureSize,\n direction\n }\n return self\n}\n","import { mathAbs } from './utils'\n\nexport type LimitType = {\n min: number\n max: number\n length: number\n constrain: (n: number) => number\n reachedAny: (n: number) => boolean\n reachedMax: (n: number) => boolean\n reachedMin: (n: number) => boolean\n removeOffset: (n: number) => number\n}\n\nexport function Limit(min: number = 0, max: number = 0): LimitType {\n const length = mathAbs(min - max)\n\n function reachedMin(n: number): boolean {\n return n < min\n }\n\n function reachedMax(n: number): boolean {\n return n > max\n }\n\n function reachedAny(n: number): boolean {\n return reachedMin(n) || reachedMax(n)\n }\n\n function constrain(n: number): number {\n if (!reachedAny(n)) return n\n return reachedMin(n) ? min : max\n }\n\n function removeOffset(n: number): number {\n if (!length) return n\n return n - length * Math.ceil((n - max) / length)\n }\n\n const self: LimitType = {\n length,\n max,\n min,\n constrain,\n reachedAny,\n reachedMax,\n reachedMin,\n removeOffset\n }\n return self\n}\n","import { Limit } from './Limit'\nimport { mathAbs } from './utils'\n\nexport type CounterType = {\n get: () => number\n set: (n: number) => CounterType\n add: (n: number) => CounterType\n clone: () => CounterType\n}\n\nexport function Counter(\n max: number,\n start: number,\n loop: boolean\n): CounterType {\n const { constrain } = Limit(0, max)\n const loopEnd = max + 1\n let counter = withinLimit(start)\n\n function withinLimit(n: number): number {\n return !loop ? constrain(n) : mathAbs((loopEnd + n) % loopEnd)\n }\n\n function get(): number {\n return counter\n }\n\n function set(n: number): CounterType {\n counter = withinLimit(n)\n return self\n }\n\n function add(n: number): CounterType {\n return clone().set(get() + n)\n }\n\n function clone(): CounterType {\n return Counter(max, get(), loop)\n }\n\n const self: CounterType = {\n get,\n set,\n add,\n clone\n }\n return self\n}\n","import { EmblaCarouselType } from './EmblaCarousel'\nimport { AnimationsType } from './Animations'\nimport { CounterType } from './Counter'\nimport { DragTrackerType, PointerEventType } from './DragTracker'\nimport { EventHandlerType } from './EventHandler'\nimport { AxisType } from './Axis'\nimport { EventStore } from './EventStore'\nimport { ScrollBodyType } from './ScrollBody'\nimport { ScrollTargetType } from './ScrollTarget'\nimport { ScrollToType } from './ScrollTo'\nimport { Vector1DType } from './Vector1d'\nimport { PercentOfViewType } from './PercentOfView'\nimport { Limit } from './Limit'\nimport {\n deltaAbs,\n factorAbs,\n isBoolean,\n isMouseEvent,\n mathAbs,\n mathSign,\n WindowType\n} from './utils'\n\ntype DragHandlerCallbackType = (\n emblaApi: EmblaCarouselType,\n evt: PointerEventType\n) => boolean | void\n\nexport type DragHandlerOptionType = boolean | DragHandlerCallbackType\n\nexport type DragHandlerType = {\n init: (emblaApi: EmblaCarouselType) => void\n destroy: () => void\n pointerDown: () => boolean\n}\n\nexport function DragHandler(\n axis: AxisType,\n rootNode: HTMLElement,\n ownerDocument: Document,\n ownerWindow: WindowType,\n target: Vector1DType,\n dragTracker: DragTrackerType,\n location: Vector1DType,\n animation: AnimationsType,\n scrollTo: ScrollToType,\n scrollBody: ScrollBodyType,\n scrollTarget: ScrollTargetType,\n index: CounterType,\n eventHandler: EventHandlerType,\n percentOfView: PercentOfViewType,\n dragFree: boolean,\n dragThreshold: number,\n skipSnaps: boolean,\n baseFriction: number,\n watchDrag: DragHandlerOptionType\n): DragHandlerType {\n const { cross: crossAxis, direction } = axis\n const focusNodes = ['INPUT', 'SELECT', 'TEXTAREA']\n const nonPassiveEvent = { passive: false }\n const initEvents = EventStore()\n const dragEvents = EventStore()\n const goToNextThreshold = Limit(50, 225).constrain(percentOfView.measure(20))\n const snapForceBoost = { mouse: 300, touch: 400 }\n const freeForceBoost = { mouse: 500, touch: 600 }\n const baseSpeed = dragFree ? 43 : 25\n\n let isMoving = false\n let startScroll = 0\n let startCross = 0\n let pointerIsDown = false\n let preventScroll = false\n let preventClick = false\n let isMouse = false\n\n function init(emblaApi: EmblaCarouselType): void {\n if (!watchDrag) return\n\n function downIfAllowed(evt: PointerEventType): void {\n if (isBoolean(watchDrag) || watchDrag(emblaApi, evt)) down(evt)\n }\n\n const node = rootNode\n initEvents\n .add(node, 'dragstart', (evt) => evt.preventDefault(), nonPassiveEvent)\n .add(node, 'touchmove', () => undefined, nonPassiveEvent)\n .add(node, 'touchend', () => undefined)\n .add(node, 'touchstart', downIfAllowed)\n .add(node, 'mousedown', downIfAllowed)\n .add(node, 'touchcancel', up)\n .add(node, 'contextmenu', up)\n .add(node, 'click', click, true)\n }\n\n function destroy(): void {\n initEvents.clear()\n dragEvents.clear()\n }\n\n function addDragEvents(): void {\n const node = isMouse ? ownerDocument : rootNode\n dragEvents\n .add(node, 'touchmove', move, nonPassiveEvent)\n .add(node, 'touchend', up)\n .add(node, 'mousemove', move, nonPassiveEvent)\n .add(node, 'mouseup', up)\n }\n\n function isFocusNode(node: Element): boolean {\n const nodeName = node.nodeName || ''\n return focusNodes.includes(nodeName)\n }\n\n function forceBoost(): number {\n const boost = dragFree ? freeForceBoost : snapForceBoost\n const type = isMouse ? 'mouse' : 'touch'\n return boost[type]\n }\n\n function allowedForce(force: number, targetChanged: boolean): number {\n const next = index.add(mathSign(force) * -1)\n const baseForce = scrollTarget.byDistance(force, !dragFree).distance\n\n if (dragFree || mathAbs(force) < goToNextThreshold) return baseForce\n if (skipSnaps && targetChanged) return baseForce * 0.5\n\n return scrollTarget.byIndex(next.get(), 0).distance\n }\n\n function down(evt: PointerEventType): void {\n const isMouseEvt = isMouseEvent(evt, ownerWindow)\n isMouse = isMouseEvt\n preventClick = dragFree && isMouseEvt && !evt.buttons && isMoving\n isMoving = deltaAbs(target.get(), location.get()) >= 2\n\n if (isMouseEvt && evt.button !== 0) return\n if (isFocusNode(evt.target as Element)) return\n\n pointerIsDown = true\n dragTracker.pointerDown(evt)\n scrollBody.useFriction(0).useDuration(0)\n target.set(location)\n addDragEvents()\n startScroll = dragTracker.readPoint(evt)\n startCross = dragTracker.readPoint(evt, crossAxis)\n eventHandler.emit('pointerDown')\n }\n\n function move(evt: PointerEventType): void {\n const isTouchEvt = !isMouseEvent(evt, ownerWindow)\n if (isTouchEvt && evt.touches.length >= 2) return up(evt)\n\n const lastScroll = dragTracker.readPoint(evt)\n const lastCross = dragTracker.readPoint(evt, crossAxis)\n const diffScroll = deltaAbs(lastScroll, startScroll)\n const diffCross = deltaAbs(lastCross, startCross)\n\n if (!preventScroll && !isMouse) {\n if (!evt.cancelable) return up(evt)\n preventScroll = diffScroll > diffCross\n if (!preventScroll) return up(evt)\n }\n const diff = dragTracker.pointerMove(evt)\n if (diffScroll > dragThreshold) preventClick = true\n\n scrollBody.useFriction(0.3).useDuration(0.75)\n animation.start()\n target.add(direction(diff))\n evt.preventDefault()\n }\n\n function up(evt: PointerEventType): void {\n const currentLocation = scrollTarget.byDistance(0, false)\n const targetChanged = currentLocation.index !== index.get()\n const rawForce = dragTracker.pointerUp(evt) * forceBoost()\n const force = allowedForce(direction(rawForce), targetChanged)\n const forceFactor = factorAbs(rawForce, force)\n const speed = baseSpeed - 10 * forceFactor\n const friction = baseFriction + forceFactor / 50\n\n preventScroll = false\n pointerIsDown = false\n dragEvents.clear()\n scrollBody.useDuration(speed).useFriction(friction)\n scrollTo.distance(force, !dragFree)\n isMouse = false\n eventHandler.emit('pointerUp')\n }\n\n function click(evt: MouseEvent): void {\n if (preventClick) {\n evt.stopPropagation()\n evt.preventDefault()\n preventClick = false\n }\n }\n\n function pointerDown(): boolean {\n return pointerIsDown\n }\n\n const self: DragHandlerType = {\n init,\n destroy,\n pointerDown\n }\n return self\n}\n","import { AxisOptionType, AxisType } from './Axis'\nimport { isMouseEvent, mathAbs, WindowType } from './utils'\n\ntype PointerCoordType = keyof Touch | keyof MouseEvent\nexport type PointerEventType = TouchEvent | MouseEvent\n\nexport type DragTrackerType = {\n pointerDown: (evt: PointerEventType) => number\n pointerMove: (evt: PointerEventType) => number\n pointerUp: (evt: PointerEventType) => number\n readPoint: (evt: PointerEventType, evtAxis?: AxisOptionType) => number\n}\n\nexport function DragTracker(\n axis: AxisType,\n ownerWindow: WindowType\n): DragTrackerType {\n const logInterval = 170\n\n let startEvent: PointerEventType\n let lastEvent: PointerEventType\n\n function readTime(evt: PointerEventType): number {\n return evt.timeStamp\n }\n\n function readPoint(evt: PointerEventType, evtAxis?: AxisOptionType): number {\n const property = evtAxis || axis.scroll\n const coord: PointerCoordType = `client${property === 'x' ? 'X' : 'Y'}`\n return (isMouseEvent(evt, ownerWindow) ? evt : evt.touches[0])[coord]\n }\n\n function pointerDown(evt: PointerEventType): number {\n startEvent = evt\n lastEvent = evt\n return readPoint(evt)\n }\n\n function pointerMove(evt: PointerEventType): number {\n const diff = readPoint(evt) - readPoint(lastEvent)\n const expired = readTime(evt) - readTime(startEvent) > logInterval\n\n lastEvent = evt\n if (expired) startEvent = evt\n return diff\n }\n\n function pointerUp(evt: PointerEventType): number {\n if (!startEvent || !lastEvent) return 0\n const diffDrag = readPoint(lastEvent) - readPoint(startEvent)\n const diffTime = readTime(evt) - readTime(startEvent)\n const expired = readTime(evt) - readTime(lastEvent) > logInterval\n const force = diffDrag / diffTime\n const isFlick = diffTime && !expired && mathAbs(force) > 0.1\n\n return isFlick ? force : 0\n }\n\n const self: DragTrackerType = {\n pointerDown,\n pointerMove,\n pointerUp,\n readPoint\n }\n return self\n}\n","import { AxisType } from './Axis'\nimport { EmblaCarouselType } from './EmblaCarousel'\nimport { EventHandlerType } from './EventHandler'\nimport { NodeRectsType } from './NodeRects'\nimport { isBoolean, mathAbs, WindowType } from './utils'\n\ntype ResizeHandlerCallbackType = (\n emblaApi: EmblaCarouselType,\n entries: ResizeObserverEntry[]\n) => boolean | void\n\nexport type ResizeHandlerOptionType = boolean | ResizeHandlerCallbackType\n\nexport type ResizeHandlerType = {\n init: (emblaApi: EmblaCarouselType) => void\n destroy: () => void\n}\n\nexport function ResizeHandler(\n container: HTMLElement,\n eventHandler: EventHandlerType,\n ownerWindow: WindowType,\n slides: HTMLElement[],\n axis: AxisType,\n watchResize: ResizeHandlerOptionType,\n nodeRects: NodeRectsType\n): ResizeHandlerType {\n let resizeObserver: ResizeObserver\n let containerSize: number\n let slideSizes: number[] = []\n let destroyed = false\n\n function readSize(node: HTMLElement): number {\n return axis.measureSize(nodeRects.measure(node))\n }\n\n function init(emblaApi: EmblaCarouselType): void {\n if (!watchResize) return\n\n containerSize = readSize(container)\n slideSizes = slides.map(readSize)\n\n function defaultCallback(entries: ResizeObserverEntry[]): void {\n for (const entry of entries) {\n const isContainer = entry.target === container\n const slideIndex = slides.indexOf(entry.target)\n const lastSize = isContainer ? containerSize : slideSizes[slideIndex]\n const newSize = readSize(isContainer ? container : slides[slideIndex])\n const diffSize = mathAbs(newSize - lastSize)\n\n if (diffSize >= 0.5) {\n ownerWindow.requestAnimationFrame(() => {\n emblaApi.reInit()\n eventHandler.emit('resize')\n })\n break\n }\n }\n }\n\n resizeObserver = new ResizeObserver((entries) => {\n if (destroyed) return\n if (isBoolean(watchResize) || watchResize(emblaApi, entries)) {\n defaultCallback(entries)\n }\n })\n\n const observeNodes = [container].concat(slides)\n observeNodes.forEach((node) => resizeObserver.observe(node))\n }\n\n function destroy(): void {\n if (resizeObserver) resizeObserver.disconnect()\n destroyed = true\n }\n\n const self: ResizeHandlerType = {\n init,\n destroy\n }\n return self\n}\n","import { Limit, LimitType } from './Limit'\nimport { ScrollBodyType } from './ScrollBody'\nimport { Vector1DType } from './Vector1d'\nimport { mathAbs } from './utils'\nimport { PercentOfViewType } from './PercentOfView'\n\nexport type ScrollBoundsType = {\n shouldConstrain: () => boolean\n constrain: (pointerDown: boolean) => void\n toggleActive: (active: boolean) => void\n}\n\nexport function ScrollBounds(\n limit: LimitType,\n offsetLocation: Vector1DType,\n target: Vector1DType,\n scrollBody: ScrollBodyType,\n percentOfView: PercentOfViewType\n): ScrollBoundsType {\n const pullBackThreshold = percentOfView.measure(10)\n const edgeOffsetTolerance = percentOfView.measure(50)\n const frictionLimit = Limit(0.1, 0.99)\n let disabled = false\n\n function shouldConstrain(): boolean {\n if (disabled) return false\n if (!limit.reachedAny(target.get())) return false\n if (!limit.reachedAny(offsetLocation.get())) return false\n return true\n }\n\n function constrain(pointerDown: boolean): void {\n if (!shouldConstrain()) return\n const edge = limit.reachedMin(offsetLocation.get()) ? 'min' : 'max'\n const diffToEdge = mathAbs(limit[edge] - offsetLocation.get())\n const diffToTarget = target.get() - offsetLocation.get()\n const friction = frictionLimit.constrain(diffToEdge / edgeOffsetTolerance)\n\n target.subtract(diffToTarget * friction)\n\n if (!pointerDown && mathAbs(diffToTarget) < pullBackThreshold) {\n target.set(limit.constrain(target.get()))\n scrollBody.useDuration(25).useBaseFriction()\n }\n }\n\n function toggleActive(active: boolean): void {\n disabled = !active\n }\n\n const self: ScrollBoundsType = {\n shouldConstrain,\n constrain,\n toggleActive\n }\n return self\n}\n","import { Limit, LimitType } from './Limit'\nimport { Vector1DType } from './Vector1d'\n\nexport type ScrollLooperType = {\n loop: (direction: number) => void\n}\n\nexport function ScrollLooper(\n contentSize: number,\n limit: LimitType,\n offsetLocation: Vector1DType,\n vectors: Vector1DType[]\n): ScrollLooperType {\n const jointSafety = 0.1\n const min = limit.min + jointSafety\n const max = limit.max + jointSafety\n const { reachedMin, reachedMax } = Limit(min, max)\n\n function shouldLoop(direction: number): boolean {\n if (direction === 1) return reachedMax(offsetLocation.get())\n if (direction === -1) return reachedMin(offsetLocation.get())\n return false\n }\n\n function loop(direction: number): void {\n if (!shouldLoop(direction)) return\n\n const loopDistance = contentSize * (direction * -1)\n vectors.forEach((v) => v.add(loopDistance))\n }\n\n const self: ScrollLooperType = {\n loop\n }\n return self\n}\n","import { LimitType } from './Limit'\nimport { Vector1DType } from './Vector1d'\nimport { arrayLast, mathAbs, mathSign } from './utils'\n\nexport type TargetType = {\n distance: number\n index: number\n}\n\nexport type ScrollTargetType = {\n byIndex: (target: number, direction: number) => TargetType\n byDistance: (force: number, snap: boolean) => TargetType\n shortcut: (target: number, direction: number) => number\n}\n\nexport function ScrollTarget(\n loop: boolean,\n scrollSnaps: number[],\n contentSize: number,\n limit: LimitType,\n targetVector: Vector1DType\n): ScrollTargetType {\n const { reachedAny, removeOffset, constrain } = limit\n\n function minDistance(distances: number[]): number {\n return distances.concat().sort((a, b) => mathAbs(a) - mathAbs(b))[0]\n }\n\n function findTargetSnap(target: number): TargetType {\n const distance = loop ? removeOffset(target) : constrain(target)\n const ascDiffsToSnaps = scrollSnaps\n .map((snap, index) => ({ diff: shortcut(snap - distance, 0), index }))\n .sort((d1, d2) => mathAbs(d1.diff) - mathAbs(d2.diff))\n\n const { index } = ascDiffsToSnaps[0]\n return { index, distance }\n }\n\n function shortcut(target: number, direction: number): number {\n const targets = [target, target + contentSize, target - contentSize]\n\n if (!loop) return target\n if (!direction) return minDistance(targets)\n\n const matchingTargets = targets.filter((t) => mathSign(t) === direction)\n if (matchingTargets.length) return minDistance(matchingTargets)\n return arrayLast(targets) - contentSize\n }\n\n function byIndex(index: number, direction: number): TargetType {\n const diffToSnap = scrollSnaps[index] - targetVector.get()\n const distance = shortcut(diffToSnap, direction)\n return { index, distance }\n }\n\n function byDistance(distance: number, snap: boolean): TargetType {\n const target = targetVector.get() + distance\n const { index, distance: targetSnapDistance } = findTargetSnap(target)\n const reachedBound = !loop && reachedAny(target)\n\n if (!snap || reachedBound) return { index, distance }\n\n const diffToSnap = scrollSnaps[index] - targetSnapDistance\n const snapDistance = distance + shortcut(diffToSnap, 0)\n\n return { index, distance: snapDistance }\n }\n\n const self: ScrollTargetType = {\n byDistance,\n byIndex,\n shortcut\n }\n return self\n}\n","import { isNumber } from './utils'\n\nexport type Vector1DType = {\n get: () => number\n set: (n: Vector1DType | number) => void\n add: (n: Vector1DType | number) => void\n subtract: (n: Vector1DType | number) => void\n}\n\nexport function Vector1D(initialValue: number): Vector1DType {\n let value = initialValue\n\n function get(): number {\n return value\n }\n\n function set(n: Vector1DType | number): void {\n value = normalizeInput(n)\n }\n\n function add(n: Vector1DType | number): void {\n value += normalizeInput(n)\n }\n\n function subtract(n: Vector1DType | number): void {\n value -= normalizeInput(n)\n }\n\n function normalizeInput(n: Vector1DType | number): number {\n return isNumber(n) ? n : n.get()\n }\n\n const self: Vector1DType = {\n get,\n set,\n add,\n subtract\n }\n return self\n}\n","import { AxisType } from './Axis'\n\nexport type TranslateType = {\n clear: () => void\n to: (target: number) => void\n toggleActive: (active: boolean) => void\n}\n\nexport function Translate(\n axis: AxisType,\n container: HTMLElement\n): TranslateType {\n const translate = axis.scroll === 'x' ? x : y\n const containerStyle = container.style\n let disabled = false\n\n function x(n: number): string {\n return `translate3d(${n}px,0px,0px)`\n }\n\n function y(n: number): string {\n return `translate3d(0px,${n}px,0px)`\n }\n\n function to(target: number): void {\n if (disabled) return\n containerStyle.transform = translate(axis.direction(target))\n }\n\n function toggleActive(active: boolean): void {\n disabled = !active\n }\n\n function clear(): void {\n if (disabled) return\n containerStyle.transform = ''\n if (!container.getAttribute('style')) container.removeAttribute('style')\n }\n\n const self: TranslateType = {\n clear,\n to,\n toggleActive\n }\n return self\n}\n","import { AxisType } from './Axis'\nimport { arrayKeys } from './utils'\nimport { Vector1D, Vector1DType } from './Vector1d'\nimport { Translate, TranslateType } from './Translate'\n\ntype SlideBoundType = {\n start: number\n end: number\n}\n\ntype LoopPointType = {\n loopPoint: number\n index: number\n translate: TranslateType\n slideLocation: Vector1DType\n target: () => number\n}\n\nexport type SlideLooperType = {\n canLoop: () => boolean\n clear: () => void\n loop: () => void\n loopPoints: LoopPointType[]\n}\n\nexport function SlideLooper(\n axis: AxisType,\n viewSize: number,\n contentSize: number,\n slideSizes: number[],\n slideSizesWithGaps: number[],\n snaps: number[],\n scrollSnaps: number[],\n offsetLocation: Vector1DType,\n slides: HTMLElement[]\n): SlideLooperType {\n const roundingSafety = 0.5\n const ascItems = arrayKeys(slideSizesWithGaps)\n const descItems = arrayKeys(slideSizesWithGaps).reverse()\n const loopPoints = startPoints().concat(endPoints())\n\n function removeSlideSizes(indexes: number[], from: number): number {\n return indexes.reduce((a: number, i) => {\n return a - slideSizesWithGaps[i]\n }, from)\n }\n\n function slidesInGap(indexes: number[], gap: number): number[] {\n return indexes.reduce((a: number[], i) => {\n const remainingGap = removeSlideSizes(a, gap)\n return remainingGap > 0 ? a.concat([i]) : a\n }, [])\n }\n\n function findSlideBounds(offset: number): SlideBoundType[] {\n return snaps.map((snap, index) => ({\n start: snap - slideSizes[index] + roundingSafety + offset,\n end: snap + viewSize - roundingSafety + offset\n }))\n }\n\n function findLoopPoints(\n indexes: number[],\n offset: number,\n isEndEdge: boolean\n ): LoopPointType[] {\n const slideBounds = findSlideBounds(offset)\n\n return indexes.map((index) => {\n const initial = isEndEdge ? 0 : -contentSize\n const altered = isEndEdge ? contentSize : 0\n const boundEdge = isEndEdge ? 'end' : 'start'\n const loopPoint = slideBounds[index][boundEdge]\n\n return {\n index,\n loopPoint,\n slideLocation: Vector1D(-1),\n translate: Translate(axis, slides[index]),\n target: () => (offsetLocation.get() > loopPoint ? initial : altered)\n }\n })\n }\n\n function startPoints(): LoopPointType[] {\n const gap = scrollSnaps[0]\n const indexes = slidesInGap(descItems, gap)\n return findLoopPoints(indexes, contentSize, false)\n }\n\n function endPoints(): LoopPointType[] {\n const gap = viewSize - scrollSnaps[0] - 1\n const indexes = slidesInGap(ascItems, gap)\n return findLoopPoints(indexes, -contentSize, true)\n }\n\n function canLoop(): boolean {\n return loopPoints.every(({ index }) => {\n const otherIndexes = ascItems.filter((i) => i !== index)\n return removeSlideSizes(otherIndexes, viewSize) <= 0.1\n })\n }\n\n function loop(): void {\n loopPoints.forEach((loopPoint) => {\n const { target, translate, slideLocation } = loopPoint\n const shiftLocation = target()\n if (shiftLocation === slideLocation.get()) return\n translate.to(shiftLocation)\n slideLocation.set(shiftLocation)\n })\n }\n\n function clear(): void {\n loopPoints.forEach((loopPoint) => loopPoint.translate.clear())\n }\n\n const self: SlideLooperType = {\n canLoop,\n clear,\n loop,\n loopPoints\n }\n return self\n}\n","import { EmblaCarouselType } from './EmblaCarousel'\nimport { EventHandlerType } from './EventHandler'\nimport { isBoolean } from './utils'\n\ntype SlidesHandlerCallbackType = (\n emblaApi: EmblaCarouselType,\n mutations: MutationRecord[]\n) => boolean | void\n\nexport type SlidesHandlerOptionType = boolean | SlidesHandlerCallbackType\n\nexport type SlidesHandlerType = {\n init: (emblaApi: EmblaCarouselType) => void\n destroy: () => void\n}\n\nexport function SlidesHandler(\n container: HTMLElement,\n eventHandler: EventHandlerType,\n watchSlides: SlidesHandlerOptionType\n): SlidesHandlerType {\n let mutationObserver: MutationObserver\n let destroyed = false\n\n function init(emblaApi: EmblaCarouselType): void {\n if (!watchSlides) return\n\n function defaultCallback(mutations: MutationRecord[]): void {\n for (const mutation of mutations) {\n if (mutation.type === 'childList') {\n emblaApi.reInit()\n eventHandler.emit('slidesChanged')\n break\n }\n }\n }\n\n mutationObserver = new MutationObserver((mutations) => {\n if (destroyed) return\n if (isBoolean(watchSlides) || watchSlides(emblaApi, mutations)) {\n defaultCallback(mutations)\n }\n })\n\n mutationObserver.observe(container, { childList: true })\n }\n\n function destroy(): void {\n if (mutationObserver) mutationObserver.disconnect()\n destroyed = true\n }\n\n const self: SlidesHandlerType = {\n init,\n destroy\n }\n return self\n}\n","import { EventHandlerType } from './EventHandler'\nimport { objectKeys } from './utils'\n\ntype IntersectionEntryMapType = {\n [key: number]: IntersectionObserverEntry\n}\n\nexport type SlidesInViewOptionsType = IntersectionObserverInit['threshold']\n\nexport type SlidesInViewType = {\n init: () => void\n destroy: () => void\n get: (inView?: boolean) => number[]\n}\n\nexport function SlidesInView(\n container: HTMLElement,\n slides: HTMLElement[],\n eventHandler: EventHandlerType,\n threshold: SlidesInViewOptionsType\n): SlidesInViewType {\n const intersectionEntryMap: IntersectionEntryMapType = {}\n let inViewCache: number[] | null = null\n let notInViewCache: number[] | null = null\n let intersectionObserver: IntersectionObserver\n let destroyed = false\n\n function init(): void {\n intersectionObserver = new IntersectionObserver(\n (entries) => {\n if (destroyed) return\n\n entries.forEach((entry) => {\n const index = slides.indexOf(entry.target)\n intersectionEntryMap[index] = entry\n })\n\n inViewCache = null\n notInViewCache = null\n eventHandler.emit('slidesInView')\n },\n {\n root: container.parentElement,\n threshold\n }\n )\n\n slides.forEach((slide) => intersectionObserver.observe(slide))\n }\n\n function destroy(): void {\n if (intersectionObserver) intersectionObserver.disconnect()\n destroyed = true\n }\n\n function createInViewList(inView: boolean): number[] {\n return objectKeys(intersectionEntryMap).reduce(\n (list: number[], slideIndex) => {\n const index = parseInt(slideIndex)\n const { isIntersecting } = intersectionEntryMap[index]\n const inViewMatch = inView && isIntersecting\n const notInViewMatch = !inView && !isIntersecting\n\n if (inViewMatch || notInViewMatch) list.push(index)\n return list\n },\n []\n )\n }\n\n function get(inView: boolean = true): number[] {\n if (inView && inViewCache) return inViewCache\n if (!inView && notInViewCache) return notInViewCache\n\n const slideIndexes = createInViewList(inView)\n\n if (inView) inViewCache = slideIndexes\n if (!inView) notInViewCache = slideIndexes\n\n return slideIndexes\n }\n\n const self: SlidesInViewType = {\n init,\n destroy,\n get\n }\n\n return self\n}\n","import { AxisType } from './Axis'\nimport { NodeRectType } from './NodeRects'\nimport { arrayIsLastIndex, arrayLast, mathAbs, WindowType } from './utils'\n\nexport type SlideSizesType = {\n slideSizes: number[]\n slideSizesWithGaps: number[]\n startGap: number\n endGap: number\n}\n\nexport function SlideSizes(\n axis: AxisType,\n containerRect: NodeRectType,\n slideRects: NodeRectType[],\n slides: HTMLElement[],\n readEdgeGap: boolean,\n ownerWindow: WindowType\n): SlideSizesType {\n const { measureSize, startEdge, endEdge } = axis\n const withEdgeGap = slideRects[0] && readEdgeGap\n const startGap = measureStartGap()\n const endGap = measureEndGap()\n const slideSizes = slideRects.map(measureSize)\n const slideSizesWithGaps = measureWithGaps()\n\n function measureStartGap(): number {\n if (!withEdgeGap) return 0\n const slideRect = slideRects[0]\n return mathAbs(containerRect[startEdge] - slideRect[startEdge])\n }\n\n function measureEndGap(): number {\n if (!withEdgeGap) return 0\n const style = ownerWindow.getComputedStyle(arrayLast(slides))\n return parseFloat(style.getPropertyValue(`margin-${endEdge}`))\n }\n\n function measureWithGaps(): number[] {\n return slideRects\n .map((rect, index, rects) => {\n const isFirst = !index\n const isLast = arrayIsLastIndex(rects, index)\n if (isFirst) return slideSizes[index] + startGap\n if (isLast) return slideSizes[index] + endGap\n return rects[index + 1][startEdge] - rect[startEdge]\n })\n .map(mathAbs)\n }\n\n const self: SlideSizesType = {\n slideSizes,\n slideSizesWithGaps,\n startGap,\n endGap\n }\n return self\n}\n","import { AxisType } from './Axis'\nimport { NodeRectType } from './NodeRects'\nimport {\n arrayKeys,\n arrayLast,\n arrayLastIndex,\n isNumber,\n mathAbs\n} from './utils'\n\nexport type SlidesToScrollOptionType = 'auto' | number\n\nexport type SlidesToScrollType = {\n groupSlides: (array: Type[]) => Type[][]\n}\n\nexport function SlidesToScroll(\n axis: AxisType,\n viewSize: number,\n slidesToScroll: SlidesToScrollOptionType,\n loop: boolean,\n containerRect: NodeRectType,\n slideRects: NodeRectType[],\n startGap: number,\n endGap: number,\n pixelTolerance: number\n): SlidesToScrollType {\n const { startEdge, endEdge, direction } = axis\n const groupByNumber = isNumber(slidesToScroll)\n\n function byNumber(array: Type[], groupSize: number): Type[][] {\n return arrayKeys(array)\n .filter((i) => i % groupSize === 0)\n .map((i) => array.slice(i, i + groupSize))\n }\n\n function bySize(array: Type[]): Type[][] {\n if (!array.length) return []\n\n return arrayKeys(array)\n .reduce((groups: number[], rectB, index) => {\n const rectA = arrayLast(groups) || 0\n const isFirst = rectA === 0\n const isLast = rectB === arrayLastIndex(array)\n\n const edgeA = containerRect[startEdge] - slideRects[rectA][startEdge]\n const edgeB = containerRect[startEdge] - slideRects[rectB][endEdge]\n const gapA = !loop && isFirst ? direction(startGap) : 0\n const gapB = !loop && isLast ? direction(endGap) : 0\n const chunkSize = mathAbs(edgeB - gapB - (edgeA + gapA))\n\n if (index && chunkSize > viewSize + pixelTolerance) groups.push(rectB)\n if (isLast) groups.push(array.length)\n return groups\n }, [])\n .map((currentSize, index, groups) => {\n const previousSize = Math.max(groups[index - 1] || 0)\n return array.slice(previousSize, currentSize)\n })\n }\n\n function groupSlides(array: Type[]): Type[][] {\n return groupByNumber ? byNumber(array, slidesToScroll) : bySize(array)\n }\n\n const self: SlidesToScrollType = {\n groupSlides\n }\n return self\n}\n","import { Alignment } from './Alignment'\nimport {\n Animations,\n AnimationsType,\n AnimationsUpdateType,\n AnimationsRenderType\n} from './Animations'\nimport { Axis, AxisType } from './Axis'\nimport { Counter, CounterType } from './Counter'\nimport { DragHandler, DragHandlerType } from './DragHandler'\nimport { DragTracker } from './DragTracker'\nimport { EventHandlerType } from './EventHandler'\nimport { EventStore, EventStoreType } from './EventStore'\nimport { LimitType } from './Limit'\nimport { NodeRectType, NodeRects } from './NodeRects'\nimport { OptionsType } from './Options'\nimport { PercentOfView, PercentOfViewType } from './PercentOfView'\nimport { ResizeHandler, ResizeHandlerType } from './ResizeHandler'\nimport { ScrollBody, ScrollBodyType } from './ScrollBody'\nimport { ScrollBounds, ScrollBoundsType } from './ScrollBounds'\nimport { ScrollContain } from './ScrollContain'\nimport { ScrollLimit } from './ScrollLimit'\nimport { ScrollLooper, ScrollLooperType } from './ScrollLooper'\nimport { ScrollProgress, ScrollProgressType } from './ScrollProgress'\nimport { ScrollSnaps } from './ScrollSnaps'\nimport { SlideRegistry, SlideRegistryType } from './SlideRegistry'\nimport { ScrollTarget, ScrollTargetType } from './ScrollTarget'\nimport { ScrollTo, ScrollToType } from './ScrollTo'\nimport { SlideFocus, SlideFocusType } from './SlideFocus'\nimport { SlideLooper, SlideLooperType } from './SlideLooper'\nimport { SlidesHandler, SlidesHandlerType } from './SlidesHandler'\nimport { SlidesInView, SlidesInViewType } from './SlidesInView'\nimport { SlideSizes } from './SlideSizes'\nimport { SlidesToScroll, SlidesToScrollType } from './SlidesToScroll'\nimport { Translate, TranslateType } from './Translate'\nimport { arrayKeys, arrayLast, arrayLastIndex, WindowType } from './utils'\nimport { Vector1D, Vector1DType } from './Vector1d'\n\nexport type EngineType = {\n ownerDocument: Document\n ownerWindow: WindowType\n eventHandler: EventHandlerType\n axis: AxisType\n animation: AnimationsType\n scrollBounds: ScrollBoundsType\n scrollLooper: ScrollLooperType\n scrollProgress: ScrollProgressType\n index: CounterType\n indexPrevious: CounterType\n limit: LimitType\n location: Vector1DType\n offsetLocation: Vector1DType\n options: OptionsType\n percentOfView: PercentOfViewType\n scrollBody: ScrollBodyType\n dragHandler: DragHandlerType\n eventStore: EventStoreType\n slideLooper: SlideLooperType\n slidesInView: SlidesInViewType\n slidesToScroll: SlidesToScrollType\n target: Vector1DType\n translate: TranslateType\n resizeHandler: ResizeHandlerType\n slidesHandler: SlidesHandlerType\n scrollTo: ScrollToType\n scrollTarget: ScrollTargetType\n scrollSnapList: number[]\n scrollSnaps: number[]\n slideIndexes: number[]\n slideFocus: SlideFocusType\n slideRegistry: SlideRegistryType['slideRegistry']\n containerRect: NodeRectType\n slideRects: NodeRectType[]\n}\n\nexport function Engine(\n root: HTMLElement,\n container: HTMLElement,\n slides: HTMLElement[],\n ownerDocument: Document,\n ownerWindow: WindowType,\n options: OptionsType,\n eventHandler: EventHandlerType\n): EngineType {\n // Options\n const {\n align,\n axis: scrollAxis,\n direction,\n startIndex,\n loop,\n duration,\n dragFree,\n dragThreshold,\n inViewThreshold,\n slidesToScroll: groupSlides,\n skipSnaps,\n containScroll,\n watchResize,\n watchSlides,\n watchDrag\n } = options\n\n // Measurements\n const pixelTolerance = 2\n const nodeRects = NodeRects()\n const containerRect = nodeRects.measure(container)\n const slideRects = slides.map(nodeRects.measure)\n const axis = Axis(scrollAxis, direction)\n const viewSize = axis.measureSize(containerRect)\n const percentOfView = PercentOfView(viewSize)\n const alignment = Alignment(align, viewSize)\n const containSnaps = !loop && !!containScroll\n const readEdgeGap = loop || !!containScroll\n const { slideSizes, slideSizesWithGaps, startGap, endGap } = SlideSizes(\n axis,\n containerRect,\n slideRects,\n slides,\n readEdgeGap,\n ownerWindow\n )\n const slidesToScroll = SlidesToScroll(\n axis,\n viewSize,\n groupSlides,\n loop,\n containerRect,\n slideRects,\n startGap,\n endGap,\n pixelTolerance\n )\n const { snaps, snapsAligned } = ScrollSnaps(\n axis,\n alignment,\n containerRect,\n slideRects,\n slidesToScroll\n )\n const contentSize = -arrayLast(snaps) + arrayLast(slideSizesWithGaps)\n const { snapsContained, scrollContainLimit } = ScrollContain(\n viewSize,\n contentSize,\n snapsAligned,\n containScroll,\n pixelTolerance\n )\n const scrollSnaps = containSnaps ? snapsContained : snapsAligned\n const { limit } = ScrollLimit(contentSize, scrollSnaps, loop)\n\n // Indexes\n const index = Counter(arrayLastIndex(scrollSnaps), startIndex, loop)\n const indexPrevious = index.clone()\n const slideIndexes = arrayKeys(slides)\n\n // Animation\n const update: AnimationsUpdateType = ({\n dragHandler,\n scrollBody,\n scrollBounds,\n options: { loop }\n }) => {\n if (!loop) scrollBounds.constrain(dragHandler.pointerDown())\n scrollBody.seek()\n }\n\n const render: AnimationsRenderType = (\n {\n scrollBody,\n translate,\n location,\n offsetLocation,\n scrollLooper,\n slideLooper,\n dragHandler,\n animation,\n eventHandler,\n scrollBounds,\n options: { loop }\n },\n lagOffset\n ) => {\n const velocity = scrollBody.velocity()\n const shouldSettle = scrollBody.settled()\n const withinBounds = !scrollBounds.shouldConstrain()\n const hasSettled = loop ? shouldSettle : shouldSettle && withinBounds\n\n if (hasSettled && !dragHandler.pointerDown()) {\n animation.stop()\n eventHandler.emit('settle')\n }\n if (!hasSettled) eventHandler.emit('scroll')\n\n offsetLocation.set(location.get() - velocity + velocity * lagOffset)\n\n if (loop) {\n scrollLooper.loop(scrollBody.direction())\n slideLooper.loop()\n }\n\n translate.to(offsetLocation.get())\n }\n const animation = Animations(\n ownerDocument,\n ownerWindow,\n () => update(engine),\n (lagOffset: number) => render(engine, lagOffset)\n )\n\n // Shared\n const friction = 0.68\n const startLocation = scrollSnaps[index.get()]\n const location = Vector1D(startLocation)\n const offsetLocation = Vector1D(startLocation)\n const target = Vector1D(startLocation)\n const scrollBody = ScrollBody(\n location,\n offsetLocation,\n target,\n duration,\n friction\n )\n const scrollTarget = ScrollTarget(\n loop,\n scrollSnaps,\n contentSize,\n limit,\n target\n )\n const scrollTo = ScrollTo(\n animation,\n index,\n indexPrevious,\n scrollBody,\n scrollTarget,\n target,\n eventHandler\n )\n const scrollProgress = ScrollProgress(limit)\n const eventStore = EventStore()\n const slidesInView = SlidesInView(\n container,\n slides,\n eventHandler,\n inViewThreshold\n )\n const { slideRegistry } = SlideRegistry(\n containSnaps,\n containScroll,\n scrollSnaps,\n scrollContainLimit,\n slidesToScroll,\n slideIndexes\n )\n const slideFocus = SlideFocus(\n root,\n slides,\n slideRegistry,\n scrollTo,\n scrollBody,\n eventStore,\n eventHandler\n )\n\n // Engine\n const engine: EngineType = {\n ownerDocument,\n ownerWindow,\n eventHandler,\n containerRect,\n slideRects,\n animation,\n axis,\n dragHandler: DragHandler(\n axis,\n root,\n ownerDocument,\n ownerWindow,\n target,\n DragTracker(axis, ownerWindow),\n location,\n animation,\n scrollTo,\n scrollBody,\n scrollTarget,\n index,\n eventHandler,\n percentOfView,\n dragFree,\n dragThreshold,\n skipSnaps,\n friction,\n watchDrag\n ),\n eventStore,\n percentOfView,\n index,\n indexPrevious,\n limit,\n location,\n offsetLocation,\n options,\n resizeHandler: ResizeHandler(\n container,\n eventHandler,\n ownerWindow,\n slides,\n axis,\n watchResize,\n nodeRects\n ),\n scrollBody,\n scrollBounds: ScrollBounds(\n limit,\n offsetLocation,\n target,\n scrollBody,\n percentOfView\n ),\n scrollLooper: ScrollLooper(contentSize, limit, offsetLocation, [\n location,\n offsetLocation,\n target\n ]),\n scrollProgress,\n scrollSnapList: scrollSnaps.map(scrollProgress.get),\n scrollSnaps,\n scrollTarget,\n scrollTo,\n slideLooper: SlideLooper(\n axis,\n viewSize,\n contentSize,\n slideSizes,\n slideSizesWithGaps,\n snaps,\n scrollSnaps,\n offsetLocation,\n slides\n ),\n slideFocus,\n slidesHandler: SlidesHandler(container, eventHandler, watchSlides),\n slidesInView,\n slideIndexes,\n slideRegistry,\n slidesToScroll,\n target,\n translate: Translate(axis, container)\n }\n\n return engine\n}\n","export type NodeRectType = {\n top: number\n right: number\n bottom: number\n left: number\n width: number\n height: number\n}\n\nexport type NodeRectsType = {\n measure: (node: HTMLElement) => NodeRectType\n}\n\nexport function NodeRects(): NodeRectsType {\n function measure(node: HTMLElement): NodeRectType {\n const { offsetTop, offsetLeft, offsetWidth, offsetHeight } = node\n const offset: NodeRectType = {\n top: offsetTop,\n right: offsetLeft + offsetWidth,\n bottom: offsetTop + offsetHeight,\n left: offsetLeft,\n width: offsetWidth,\n height: offsetHeight\n }\n\n return offset\n }\n\n const self: NodeRectsType = {\n measure\n }\n return self\n}\n","export type PercentOfViewType = {\n measure: (n: number) => number\n}\n\nexport function PercentOfView(viewSize: number): PercentOfViewType {\n function measure(n: number): number {\n return viewSize * (n / 100)\n }\n\n const self: PercentOfViewType = {\n measure\n }\n return self\n}\n","import { AlignmentType } from './Alignment'\nimport { AxisType } from './Axis'\nimport { NodeRectType } from './NodeRects'\nimport { SlidesToScrollType } from './SlidesToScroll'\nimport { arrayLast, mathAbs } from './utils'\n\nexport type ScrollSnapsType = {\n snaps: number[]\n snapsAligned: number[]\n}\n\nexport function ScrollSnaps(\n axis: AxisType,\n alignment: AlignmentType,\n containerRect: NodeRectType,\n slideRects: NodeRectType[],\n slidesToScroll: SlidesToScrollType\n): ScrollSnapsType {\n const { startEdge, endEdge } = axis\n const { groupSlides } = slidesToScroll\n const alignments = measureSizes().map(alignment.measure)\n const snaps = measureUnaligned()\n const snapsAligned = measureAligned()\n\n function measureSizes(): number[] {\n return groupSlides(slideRects)\n .map((rects) => arrayLast(rects)[endEdge] - rects[0][startEdge])\n .map(mathAbs)\n }\n\n function measureUnaligned(): number[] {\n return slideRects\n .map((rect) => containerRect[startEdge] - rect[startEdge])\n .map((snap) => -mathAbs(snap))\n }\n\n function measureAligned(): number[] {\n return groupSlides(snaps)\n .map((g) => g[0])\n .map((snap, index) => snap + alignments[index])\n }\n\n const self: ScrollSnapsType = {\n snaps,\n snapsAligned\n }\n return self\n}\n","import { Limit, LimitType } from './Limit'\nimport { arrayIsLastIndex, arrayLast, deltaAbs } from './utils'\n\nexport type ScrollContainOptionType = false | 'trimSnaps' | 'keepSnaps'\n\nexport type ScrollContainType = {\n snapsContained: number[]\n scrollContainLimit: LimitType\n}\n\nexport function ScrollContain(\n viewSize: number,\n contentSize: number,\n snapsAligned: number[],\n containScroll: ScrollContainOptionType,\n pixelTolerance: number\n): ScrollContainType {\n const scrollBounds = Limit(-contentSize + viewSize, 0)\n const snapsBounded = measureBounded()\n const scrollContainLimit = findScrollContainLimit()\n const snapsContained = measureContained()\n\n function usePixelTolerance(bound: number, snap: number): boolean {\n return deltaAbs(bound, snap) < 1\n }\n\n function findScrollContainLimit(): LimitType {\n const startSnap = snapsBounded[0]\n const endSnap = arrayLast(snapsBounded)\n const min = snapsBounded.lastIndexOf(startSnap)\n const max = snapsBounded.indexOf(endSnap) + 1\n return Limit(min, max)\n }\n\n function measureBounded(): number[] {\n return snapsAligned\n .map((snapAligned, index) => {\n const { min, max } = scrollBounds\n const snap = scrollBounds.constrain(snapAligned)\n const isFirst = !index\n const isLast = arrayIsLastIndex(snapsAligned, index)\n if (isFirst) return max\n if (isLast) return min\n if (usePixelTolerance(min, snap)) return min\n if (usePixelTolerance(max, snap)) return max\n return snap\n })\n .map((scrollBound) => parseFloat(scrollBound.toFixed(3)))\n }\n\n function measureContained(): number[] {\n if (contentSize <= viewSize + pixelTolerance) return [scrollBounds.max]\n if (containScroll === 'keepSnaps') return snapsBounded\n const { min, max } = scrollContainLimit\n return snapsBounded.slice(min, max)\n }\n\n const self: ScrollContainType = {\n snapsContained,\n scrollContainLimit\n }\n return self\n}\n","import { Limit, LimitType } from './Limit'\nimport { arrayLast } from './utils'\n\nexport type ScrollLimitType = {\n limit: LimitType\n}\n\nexport function ScrollLimit(\n contentSize: number,\n scrollSnaps: number[],\n loop: boolean\n): ScrollLimitType {\n const max = scrollSnaps[0]\n const min = loop ? max - contentSize : arrayLast(scrollSnaps)\n const limit = Limit(min, max)\n\n const self: ScrollLimitType = {\n limit\n }\n return self\n}\n","import { mathSign, mathAbs } from './utils'\nimport { Vector1DType } from './Vector1d'\n\nexport type ScrollBodyType = {\n direction: () => number\n duration: () => number\n velocity: () => number\n seek: () => ScrollBodyType\n settled: () => boolean\n useBaseFriction: () => ScrollBodyType\n useBaseDuration: () => ScrollBodyType\n useFriction: (n: number) => ScrollBodyType\n useDuration: (n: number) => ScrollBodyType\n}\n\nexport function ScrollBody(\n location: Vector1DType,\n offsetLocation: Vector1DType,\n target: Vector1DType,\n baseDuration: number,\n baseFriction: number\n): ScrollBodyType {\n let bodyVelocity = 0\n let scrollDirection = 0\n let scrollDuration = baseDuration\n let scrollFriction = baseFriction\n let rawLocation = location.get()\n let rawLocationPrevious = 0\n\n function seek(): ScrollBodyType {\n const diff = target.get() - location.get()\n const isInstant = !scrollDuration\n let directionDiff = 0\n\n if (isInstant) {\n bodyVelocity = 0\n location.set(target)\n\n directionDiff = diff\n } else {\n bodyVelocity += diff / scrollDuration\n bodyVelocity *= scrollFriction\n rawLocation += bodyVelocity\n location.add(bodyVelocity)\n\n directionDiff = rawLocation - rawLocationPrevious\n }\n\n scrollDirection = mathSign(directionDiff)\n rawLocationPrevious = rawLocation\n return self\n }\n\n function settled(): boolean {\n const diff = target.get() - offsetLocation.get()\n return mathAbs(diff) < 0.001\n }\n\n function duration(): number {\n return scrollDuration\n }\n\n function direction(): number {\n return scrollDirection\n }\n\n function velocity(): number {\n return bodyVelocity\n }\n\n function useBaseDuration(): ScrollBodyType {\n return useDuration(baseDuration)\n }\n\n function useBaseFriction(): ScrollBodyType {\n return useFriction(baseFriction)\n }\n\n function useDuration(n: number): ScrollBodyType {\n scrollDuration = n\n return self\n }\n\n function useFriction(n: number): ScrollBodyType {\n scrollFriction = n\n return self\n }\n\n const self: ScrollBodyType = {\n direction,\n duration,\n velocity,\n seek,\n settled,\n useBaseFriction,\n useBaseDuration,\n useFriction,\n useDuration\n }\n return self\n}\n","import { AnimationsType } from './Animations'\nimport { CounterType } from './Counter'\nimport { EventHandlerType } from './EventHandler'\nimport { ScrollBodyType } from './ScrollBody'\nimport { ScrollTargetType, TargetType } from './ScrollTarget'\nimport { Vector1DType } from './Vector1d'\n\nexport type ScrollToType = {\n distance: (n: number, snap: boolean) => void\n index: (n: number, direction: number) => void\n}\n\nexport function ScrollTo(\n animation: AnimationsType,\n indexCurrent: CounterType,\n indexPrevious: CounterType,\n scrollBody: ScrollBodyType,\n scrollTarget: ScrollTargetType,\n targetVector: Vector1DType,\n eventHandler: EventHandlerType\n): ScrollToType {\n function scrollTo(target: TargetType): void {\n const distanceDiff = target.distance\n const indexDiff = target.index !== indexCurrent.get()\n\n targetVector.add(distanceDiff)\n\n if (distanceDiff) {\n if (scrollBody.duration()) {\n animation.start()\n } else {\n animation.update()\n animation.render(1)\n animation.update()\n }\n }\n\n if (indexDiff) {\n indexPrevious.set(indexCurrent.get())\n indexCurrent.set(target.index)\n eventHandler.emit('select')\n }\n }\n\n function distance(n: number, snap: boolean): void {\n const target = scrollTarget.byDistance(n, snap)\n scrollTo(target)\n }\n\n function index(n: number, direction: number): void {\n const targetIndex = indexCurrent.clone().set(n)\n const target = scrollTarget.byIndex(targetIndex.get(), direction)\n scrollTo(target)\n }\n\n const self: ScrollToType = {\n distance,\n index\n }\n return self\n}\n","import { LimitType } from './Limit'\n\nexport type ScrollProgressType = {\n get: (n: number) => number\n}\n\nexport function ScrollProgress(limit: LimitType): ScrollProgressType {\n const { max, length } = limit\n\n function get(n: number): number {\n const currentLocation = n - max\n return length ? currentLocation / -length : 0\n }\n\n const self: ScrollProgressType = {\n get\n }\n return self\n}\n","import { LimitType } from './Limit'\nimport { ScrollContainOptionType } from './ScrollContain'\nimport { SlidesToScrollType } from './SlidesToScroll'\nimport {\n arrayFromNumber,\n arrayIsLastIndex,\n arrayLast,\n arrayLastIndex\n} from './utils'\n\nexport type SlideRegistryType = {\n slideRegistry: number[][]\n}\n\nexport function SlideRegistry(\n containSnaps: boolean,\n containScroll: ScrollContainOptionType,\n scrollSnaps: number[],\n scrollContainLimit: LimitType,\n slidesToScroll: SlidesToScrollType,\n slideIndexes: number[]\n): SlideRegistryType {\n const { groupSlides } = slidesToScroll\n const { min, max } = scrollContainLimit\n const slideRegistry = createSlideRegistry()\n\n function createSlideRegistry(): number[][] {\n const groupedSlideIndexes = groupSlides(slideIndexes)\n const doNotContain = !containSnaps || containScroll === 'keepSnaps'\n\n if (scrollSnaps.length === 1) return [slideIndexes]\n if (doNotContain) return groupedSlideIndexes\n\n return groupedSlideIndexes.slice(min, max).map((group, index, groups) => {\n const isFirst = !index\n const isLast = arrayIsLastIndex(groups, index)\n\n if (isFirst) {\n const range = arrayLast(groups[0]) + 1\n return arrayFromNumber(range)\n }\n if (isLast) {\n const range = arrayLastIndex(slideIndexes) - arrayLast(groups)[0] + 1\n return arrayFromNumber(range, arrayLast(groups)[0])\n }\n return group\n })\n }\n\n const self: SlideRegistryType = {\n slideRegistry\n }\n return self\n}\n","import { EventHandlerType } from './EventHandler'\nimport { EventStoreType } from './EventStore'\nimport { ScrollBodyType } from './ScrollBody'\nimport { ScrollToType } from './ScrollTo'\nimport { SlideRegistryType } from './SlideRegistry'\nimport { isNumber } from './utils'\n\nexport type SlideFocusType = {\n init: () => void\n}\n\nexport function SlideFocus(\n root: HTMLElement,\n slides: HTMLElement[],\n slideRegistry: SlideRegistryType['slideRegistry'],\n scrollTo: ScrollToType,\n scrollBody: ScrollBodyType,\n eventStore: EventStoreType,\n eventHandler: EventHandlerType\n): SlideFocusType {\n let lastTabPressTime = 0\n\n function init(): void {\n eventStore.add(document, 'keydown', registerTabPress, false)\n slides.forEach(addSlideFocusEvent)\n }\n\n function registerTabPress(event: KeyboardEvent): void {\n if (event.code === 'Tab') lastTabPressTime = new Date().getTime()\n }\n\n function addSlideFocusEvent(slide: HTMLElement): void {\n const focus = (): void => {\n const nowTime = new Date().getTime()\n const diffTime = nowTime - lastTabPressTime\n\n if (diffTime > 10) return\n\n root.scrollLeft = 0\n const index = slides.indexOf(slide)\n const group = slideRegistry.findIndex((group) => group.includes(index))\n\n if (!isNumber(group)) return\n\n scrollBody.useDuration(0)\n scrollTo.index(group, 0)\n eventHandler.emit('slideFocus')\n }\n\n eventStore.add(slide, 'focus', focus, {\n passive: true,\n capture: true\n })\n }\n\n const self: SlideFocusType = {\n init\n }\n return self\n}\n","import { AlignmentOptionType } from './Alignment'\nimport { AxisDirectionOptionType, AxisOptionType } from './Axis'\nimport { SlidesToScrollOptionType } from './SlidesToScroll'\nimport { ScrollContainOptionType } from './ScrollContain'\nimport { DragHandlerOptionType } from './DragHandler'\nimport { ResizeHandlerOptionType } from './ResizeHandler'\nimport { SlidesHandlerOptionType } from './SlidesHandler'\nimport { SlidesInViewOptionsType } from './SlidesInView'\n\nexport type LooseOptionsType = {\n [key: string]: unknown\n}\n\nexport type CreateOptionsType = Type & {\n active: boolean\n breakpoints: {\n [key: string]: Omit>, 'breakpoints'>\n }\n}\n\nexport type OptionsType = CreateOptionsType<{\n align: AlignmentOptionType\n axis: AxisOptionType\n container: string | HTMLElement | null\n slides: string | HTMLElement[] | NodeListOf | null\n containScroll: ScrollContainOptionType\n direction: AxisDirectionOptionType\n slidesToScroll: SlidesToScrollOptionType\n dragFree: boolean\n dragThreshold: number\n inViewThreshold: SlidesInViewOptionsType\n loop: boolean\n skipSnaps: boolean\n duration: number\n startIndex: number\n watchDrag: DragHandlerOptionType\n watchResize: ResizeHandlerOptionType\n watchSlides: SlidesHandlerOptionType\n}>\n\nexport const defaultOptions: OptionsType = {\n align: 'center',\n axis: 'x',\n container: null,\n slides: null,\n containScroll: 'trimSnaps',\n direction: 'ltr',\n slidesToScroll: 1,\n inViewThreshold: 0,\n breakpoints: {},\n dragFree: false,\n dragThreshold: 10,\n loop: false,\n skipSnaps: false,\n duration: 25,\n startIndex: 0,\n active: true,\n watchDrag: true,\n watchResize: true,\n watchSlides: true\n}\n\nexport type EmblaOptionsType = Partial\n","import { LooseOptionsType, CreateOptionsType } from './Options'\nimport { objectKeys, objectsMergeDeep, WindowType } from './utils'\n\ntype OptionsType = Partial>\n\nexport type OptionsHandlerType = {\n mergeOptions: (\n optionsA: TypeA,\n optionsB?: TypeB\n ) => TypeA\n optionsAtMedia: (options: Type) => Type\n optionsMediaQueries: (optionsList: OptionsType[]) => MediaQueryList[]\n}\n\nexport function OptionsHandler(ownerWindow: WindowType): OptionsHandlerType {\n function mergeOptions(\n optionsA: TypeA,\n optionsB?: TypeB\n ): TypeA {\n return objectsMergeDeep(optionsA, optionsB || {})\n }\n\n function optionsAtMedia(options: Type): Type {\n const optionsAtMedia = options.breakpoints || {}\n const matchedMediaOptions = objectKeys(optionsAtMedia)\n .filter((media) => ownerWindow.matchMedia(media).matches)\n .map((media) => optionsAtMedia[media])\n .reduce((a, mediaOption) => mergeOptions(a, mediaOption), {})\n\n return mergeOptions(options, matchedMediaOptions)\n }\n\n function optionsMediaQueries(optionsList: OptionsType[]): MediaQueryList[] {\n return optionsList\n .map((options) => objectKeys(options.breakpoints || {}))\n .reduce((acc, mediaQueries) => acc.concat(mediaQueries), [])\n .map(ownerWindow.matchMedia)\n }\n\n const self: OptionsHandlerType = {\n mergeOptions,\n optionsAtMedia,\n optionsMediaQueries\n }\n return self\n}\n","import { Engine, EngineType } from './Engine'\nimport { EventStore } from './EventStore'\nimport { EventHandler, EventHandlerType } from './EventHandler'\nimport { defaultOptions, EmblaOptionsType, OptionsType } from './Options'\nimport { OptionsHandler } from './OptionsHandler'\nimport { PluginsHandler } from './PluginsHandler'\nimport { EmblaPluginsType, EmblaPluginType } from './Plugins'\nimport { isString, WindowType } from './utils'\n\nexport type EmblaCarouselType = {\n canScrollNext: () => boolean\n canScrollPrev: () => boolean\n containerNode: () => HTMLElement\n internalEngine: () => EngineType\n destroy: () => void\n off: EventHandlerType['off']\n on: EventHandlerType['on']\n emit: EventHandlerType['emit']\n plugins: () => EmblaPluginsType\n previousScrollSnap: () => number\n reInit: (options?: EmblaOptionsType, plugins?: EmblaPluginType[]) => void\n rootNode: () => HTMLElement\n scrollNext: (jump?: boolean) => void\n scrollPrev: (jump?: boolean) => void\n scrollProgress: () => number\n scrollSnapList: () => number[]\n scrollTo: (index: number, jump?: boolean) => void\n selectedScrollSnap: () => number\n slideNodes: () => HTMLElement[]\n slidesInView: () => number[]\n slidesNotInView: () => number[]\n}\n\nfunction EmblaCarousel(\n root: HTMLElement,\n userOptions?: EmblaOptionsType,\n userPlugins?: EmblaPluginType[]\n): EmblaCarouselType {\n const ownerDocument = root.ownerDocument\n const ownerWindow = ownerDocument.defaultView\n const optionsHandler = OptionsHandler(ownerWindow)\n const pluginsHandler = PluginsHandler(optionsHandler)\n const mediaHandlers = EventStore()\n const eventHandler = EventHandler()\n const { mergeOptions, optionsAtMedia, optionsMediaQueries } = optionsHandler\n const { on, off, emit } = eventHandler\n const reInit = reActivate\n\n let destroyed = false\n let engine: EngineType\n let optionsBase = mergeOptions(defaultOptions, EmblaCarousel.globalOptions)\n let options = mergeOptions(optionsBase)\n let pluginList: EmblaPluginType[] = []\n let pluginApis: EmblaPluginsType\n\n let container: HTMLElement\n let slides: HTMLElement[]\n\n function storeElements(): void {\n const { container: userContainer, slides: userSlides } = options\n\n const customContainer = isString(userContainer)\n ? root.querySelector(userContainer)\n : userContainer\n container = (customContainer || root.children[0])\n\n const customSlides = isString(userSlides)\n ? container.querySelectorAll(userSlides)\n : userSlides\n slides = [].slice.call(customSlides || container.children)\n }\n\n function createEngine(options: OptionsType): EngineType {\n const engine = Engine(\n root,\n container,\n slides,\n ownerDocument,\n ownerWindow,\n options,\n eventHandler\n )\n\n if (options.loop && !engine.slideLooper.canLoop()) {\n const optionsWithoutLoop = Object.assign({}, options, { loop: false })\n return createEngine(optionsWithoutLoop)\n }\n return engine\n }\n\n function activate(\n withOptions?: EmblaOptionsType,\n withPlugins?: EmblaPluginType[]\n ): void {\n if (destroyed) return\n\n optionsBase = mergeOptions(optionsBase, withOptions)\n options = optionsAtMedia(optionsBase)\n pluginList = withPlugins || pluginList\n\n storeElements()\n\n engine = createEngine(options)\n\n optionsMediaQueries([\n optionsBase,\n ...pluginList.map(({ options }) => options)\n ]).forEach((query) => mediaHandlers.add(query, 'change', reActivate))\n\n if (!options.active) return\n\n engine.translate.to(engine.location.get())\n engine.animation.init()\n engine.slidesInView.init()\n engine.slideFocus.init()\n engine.eventHandler.init(self)\n engine.resizeHandler.init(self)\n engine.slidesHandler.init(self)\n\n if (engine.options.loop) engine.slideLooper.loop()\n if (container.offsetParent && slides.length) engine.dragHandler.init(self)\n\n pluginApis = pluginsHandler.init(self, pluginList)\n }\n\n function reActivate(\n withOptions?: EmblaOptionsType,\n withPlugins?: EmblaPluginType[]\n ): void {\n const startIndex = selectedScrollSnap()\n deActivate()\n activate(mergeOptions({ startIndex }, withOptions), withPlugins)\n eventHandler.emit('reInit')\n }\n\n function deActivate(): void {\n engine.dragHandler.destroy()\n engine.eventStore.clear()\n engine.translate.clear()\n engine.slideLooper.clear()\n engine.resizeHandler.destroy()\n engine.slidesHandler.destroy()\n engine.slidesInView.destroy()\n engine.animation.destroy()\n pluginsHandler.destroy()\n mediaHandlers.clear()\n }\n\n function destroy(): void {\n if (destroyed) return\n destroyed = true\n mediaHandlers.clear()\n deActivate()\n eventHandler.emit('destroy')\n eventHandler.clear()\n }\n\n function scrollTo(index: number, jump?: boolean, direction?: number): void {\n if (!options.active || destroyed) return\n engine.scrollBody\n .useBaseFriction()\n .useDuration(jump === true ? 0 : options.duration)\n engine.scrollTo.index(index, direction || 0)\n }\n\n function scrollNext(jump?: boolean): void {\n const next = engine.index.add(1).get()\n scrollTo(next, jump, -1)\n }\n\n function scrollPrev(jump?: boolean): void {\n const prev = engine.index.add(-1).get()\n scrollTo(prev, jump, 1)\n }\n\n function canScrollNext(): boolean {\n const next = engine.index.add(1).get()\n return next !== selectedScrollSnap()\n }\n\n function canScrollPrev(): boolean {\n const prev = engine.index.add(-1).get()\n return prev !== selectedScrollSnap()\n }\n\n function scrollSnapList(): number[] {\n return engine.scrollSnapList\n }\n\n function scrollProgress(): number {\n return engine.scrollProgress.get(engine.location.get())\n }\n\n function selectedScrollSnap(): number {\n return engine.index.get()\n }\n\n function previousScrollSnap(): number {\n return engine.indexPrevious.get()\n }\n\n function slidesInView(): number[] {\n return engine.slidesInView.get()\n }\n\n function slidesNotInView(): number[] {\n return engine.slidesInView.get(false)\n }\n\n function plugins(): EmblaPluginsType {\n return pluginApis\n }\n\n function internalEngine(): EngineType {\n return engine\n }\n\n function rootNode(): HTMLElement {\n return root\n }\n\n function containerNode(): HTMLElement {\n return container\n }\n\n function slideNodes(): HTMLElement[] {\n return slides\n }\n\n const self: EmblaCarouselType = {\n canScrollNext,\n canScrollPrev,\n containerNode,\n internalEngine,\n destroy,\n off,\n on,\n emit,\n plugins,\n previousScrollSnap,\n reInit,\n rootNode,\n scrollNext,\n scrollPrev,\n scrollProgress,\n scrollSnapList,\n scrollTo,\n selectedScrollSnap,\n slideNodes,\n slidesInView,\n slidesNotInView\n }\n\n activate(userOptions, userPlugins)\n setTimeout(() => eventHandler.emit('init'), 0)\n return self\n}\n\ndeclare namespace EmblaCarousel {\n let globalOptions: EmblaOptionsType | undefined\n}\n\nEmblaCarousel.globalOptions = undefined\n\nexport default EmblaCarousel\n","import { EmblaCarouselType } from './EmblaCarousel'\nimport { OptionsHandlerType } from './OptionsHandler'\nimport { EmblaPluginsType, EmblaPluginType } from './Plugins'\n\nexport type PluginsHandlerType = {\n init: (\n emblaApi: EmblaCarouselType,\n plugins: EmblaPluginType[]\n ) => EmblaPluginsType\n destroy: () => void\n}\n\nexport function PluginsHandler(\n optionsHandler: OptionsHandlerType\n): PluginsHandlerType {\n let activePlugins: EmblaPluginType[] = []\n\n function init(\n emblaApi: EmblaCarouselType,\n plugins: EmblaPluginType[]\n ): EmblaPluginsType {\n activePlugins = plugins.filter(\n ({ options }) => optionsHandler.optionsAtMedia(options).active !== false\n )\n activePlugins.forEach((plugin) => plugin.init(emblaApi, optionsHandler))\n\n return plugins.reduce(\n (map, plugin) => Object.assign(map, { [plugin.name]: plugin }),\n {}\n )\n }\n\n function destroy(): void {\n activePlugins = activePlugins.filter((plugin) => plugin.destroy())\n }\n\n const self: PluginsHandlerType = {\n init,\n destroy\n }\n return self\n}\n","import { EmblaCarouselType } from './EmblaCarousel'\n\ntype CallbackType = (emblaApi: EmblaCarouselType, evt: EmblaEventType) => void\ntype ListenersType = Partial<{ [key in EmblaEventType]: CallbackType[] }>\n\nexport type EmblaEventType = EmblaEventListType[keyof EmblaEventListType]\n\nexport interface EmblaEventListType {\n init: 'init'\n pointerDown: 'pointerDown'\n pointerUp: 'pointerUp'\n slidesChanged: 'slidesChanged'\n slidesInView: 'slidesInView'\n scroll: 'scroll'\n select: 'select'\n settle: 'settle'\n destroy: 'destroy'\n reInit: 'reInit'\n resize: 'resize'\n slideFocus: 'slideFocus'\n}\n\nexport type EventHandlerType = {\n init: (emblaApi: EmblaCarouselType) => void\n emit: (evt: EmblaEventType) => EventHandlerType\n on: (evt: EmblaEventType, cb: CallbackType) => EventHandlerType\n off: (evt: EmblaEventType, cb: CallbackType) => EventHandlerType\n clear: () => void\n}\n\nexport function EventHandler(): EventHandlerType {\n let listeners: ListenersType = {}\n let api: EmblaCarouselType\n\n function init(emblaApi: EmblaCarouselType): void {\n api = emblaApi\n }\n\n function getListeners(evt: EmblaEventType): CallbackType[] {\n return listeners[evt] || []\n }\n\n function emit(evt: EmblaEventType): EventHandlerType {\n getListeners(evt).forEach((e) => e(api, evt))\n return self\n }\n\n function on(evt: EmblaEventType, cb: CallbackType): EventHandlerType {\n listeners[evt] = getListeners(evt).concat([cb])\n return self\n }\n\n function off(evt: EmblaEventType, cb: CallbackType): EventHandlerType {\n listeners[evt] = getListeners(evt).filter((e) => e !== cb)\n return self\n }\n\n function clear(): void {\n listeners = {}\n }\n\n const self: EventHandlerType = {\n init,\n emit,\n off,\n on,\n clear\n }\n return self\n}\n","import { useRef, useEffect, useState, useCallback } from 'react'\nimport {\n areOptionsEqual,\n arePluginsEqual,\n canUseDOM\n} from 'embla-carousel-reactive-utils'\nimport EmblaCarousel, {\n EmblaCarouselType,\n EmblaOptionsType,\n EmblaPluginType\n} from 'embla-carousel'\n\ntype EmblaViewportRefType = (\n instance: ViewportElement | null\n) => void\n\nexport type UseEmblaCarouselType = [\n EmblaViewportRefType,\n EmblaCarouselType | undefined\n]\n\nfunction useEmblaCarousel(\n options: EmblaOptionsType = {},\n plugins: EmblaPluginType[] = []\n): UseEmblaCarouselType {\n const storedOptions = useRef(options)\n const storedPlugins = useRef(plugins)\n const [emblaApi, setEmblaApi] = useState()\n const [viewport, setViewport] = useState()\n\n const reInit = useCallback(() => {\n if (emblaApi) emblaApi.reInit(storedOptions.current, storedPlugins.current)\n }, [emblaApi])\n\n useEffect(() => {\n if (canUseDOM() && viewport) {\n EmblaCarousel.globalOptions = useEmblaCarousel.globalOptions\n const newEmblaApi = EmblaCarousel(\n viewport,\n storedOptions.current,\n storedPlugins.current\n )\n setEmblaApi(newEmblaApi)\n return () => newEmblaApi.destroy()\n } else {\n setEmblaApi(undefined)\n }\n }, [viewport, setEmblaApi])\n\n useEffect(() => {\n if (areOptionsEqual(storedOptions.current, options)) return\n storedOptions.current = options\n reInit()\n }, [options, reInit])\n\n useEffect(() => {\n if (arePluginsEqual(storedPlugins.current, plugins)) return\n storedPlugins.current = plugins\n reInit()\n }, [plugins, reInit])\n\n return [setViewport, emblaApi]\n}\n\ndeclare namespace useEmblaCarousel {\n let globalOptions: EmblaOptionsType | undefined\n}\n\nuseEmblaCarousel.globalOptions = undefined\n\nexport default useEmblaCarousel\n","// Copyright (c) 2013 Pieroxy \n// This work is free. You can redistribute it and/or modify it\n// under the terms of the WTFPL, Version 2\n// For more information see LICENSE.txt or http://www.wtfpl.net/\n//\n// For more information, the home page:\n// http://pieroxy.net/blog/pages/lz-string/testing.html\n//\n// LZ-based compression algorithm, version 1.4.5\nvar LZString = (function() {\n\n// private property\nvar f = String.fromCharCode;\nvar keyStrBase64 = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\";\nvar keyStrUriSafe = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+-$\";\nvar baseReverseDic = {};\n\nfunction getBaseValue(alphabet, character) {\n if (!baseReverseDic[alphabet]) {\n baseReverseDic[alphabet] = {};\n for (var i=0 ; i>> 8;\n buf[i*2+1] = current_value % 256;\n }\n return buf;\n },\n\n //decompress from uint8array (UCS-2 big endian format)\n decompressFromUint8Array:function (compressed) {\n if (compressed===null || compressed===undefined){\n return LZString.decompress(compressed);\n } else {\n var buf=new Array(compressed.length/2); // 2 bytes per character\n for (var i=0, TotalLen=buf.length; i> 1;\n }\n } else {\n value = 1;\n for (i=0 ; i> 1;\n }\n }\n context_enlargeIn--;\n if (context_enlargeIn == 0) {\n context_enlargeIn = Math.pow(2, context_numBits);\n context_numBits++;\n }\n delete context_dictionaryToCreate[context_w];\n } else {\n value = context_dictionary[context_w];\n for (i=0 ; i> 1;\n }\n\n\n }\n context_enlargeIn--;\n if (context_enlargeIn == 0) {\n context_enlargeIn = Math.pow(2, context_numBits);\n context_numBits++;\n }\n // Add wc to the dictionary.\n context_dictionary[context_wc] = context_dictSize++;\n context_w = String(context_c);\n }\n }\n\n // Output the code for w.\n if (context_w !== \"\") {\n if (Object.prototype.hasOwnProperty.call(context_dictionaryToCreate,context_w)) {\n if (context_w.charCodeAt(0)<256) {\n for (i=0 ; i> 1;\n }\n } else {\n value = 1;\n for (i=0 ; i> 1;\n }\n }\n context_enlargeIn--;\n if (context_enlargeIn == 0) {\n context_enlargeIn = Math.pow(2, context_numBits);\n context_numBits++;\n }\n delete context_dictionaryToCreate[context_w];\n } else {\n value = context_dictionary[context_w];\n for (i=0 ; i> 1;\n }\n\n\n }\n context_enlargeIn--;\n if (context_enlargeIn == 0) {\n context_enlargeIn = Math.pow(2, context_numBits);\n context_numBits++;\n }\n }\n\n // Mark the end of the stream\n value = 2;\n for (i=0 ; i> 1;\n }\n\n // Flush the last char\n while (true) {\n context_data_val = (context_data_val << 1);\n if (context_data_position == bitsPerChar-1) {\n context_data.push(getCharFromInt(context_data_val));\n break;\n }\n else context_data_position++;\n }\n return context_data.join('');\n },\n\n decompress: function (compressed) {\n if (compressed == null) return \"\";\n if (compressed == \"\") return null;\n return LZString._decompress(compressed.length, 32768, function(index) { return compressed.charCodeAt(index); });\n },\n\n _decompress: function (length, resetValue, getNextValue) {\n var dictionary = [],\n next,\n enlargeIn = 4,\n dictSize = 4,\n numBits = 3,\n entry = \"\",\n result = [],\n i,\n w,\n bits, resb, maxpower, power,\n c,\n data = {val:getNextValue(0), position:resetValue, index:1};\n\n for (i = 0; i < 3; i += 1) {\n dictionary[i] = i;\n }\n\n bits = 0;\n maxpower = Math.pow(2,2);\n power=1;\n while (power!=maxpower) {\n resb = data.val & data.position;\n data.position >>= 1;\n if (data.position == 0) {\n data.position = resetValue;\n data.val = getNextValue(data.index++);\n }\n bits |= (resb>0 ? 1 : 0) * power;\n power <<= 1;\n }\n\n switch (next = bits) {\n case 0:\n bits = 0;\n maxpower = Math.pow(2,8);\n power=1;\n while (power!=maxpower) {\n resb = data.val & data.position;\n data.position >>= 1;\n if (data.position == 0) {\n data.position = resetValue;\n data.val = getNextValue(data.index++);\n }\n bits |= (resb>0 ? 1 : 0) * power;\n power <<= 1;\n }\n c = f(bits);\n break;\n case 1:\n bits = 0;\n maxpower = Math.pow(2,16);\n power=1;\n while (power!=maxpower) {\n resb = data.val & data.position;\n data.position >>= 1;\n if (data.position == 0) {\n data.position = resetValue;\n data.val = getNextValue(data.index++);\n }\n bits |= (resb>0 ? 1 : 0) * power;\n power <<= 1;\n }\n c = f(bits);\n break;\n case 2:\n return \"\";\n }\n dictionary[3] = c;\n w = c;\n result.push(c);\n while (true) {\n if (data.index > length) {\n return \"\";\n }\n\n bits = 0;\n maxpower = Math.pow(2,numBits);\n power=1;\n while (power!=maxpower) {\n resb = data.val & data.position;\n data.position >>= 1;\n if (data.position == 0) {\n data.position = resetValue;\n data.val = getNextValue(data.index++);\n }\n bits |= (resb>0 ? 1 : 0) * power;\n power <<= 1;\n }\n\n switch (c = bits) {\n case 0:\n bits = 0;\n maxpower = Math.pow(2,8);\n power=1;\n while (power!=maxpower) {\n resb = data.val & data.position;\n data.position >>= 1;\n if (data.position == 0) {\n data.position = resetValue;\n data.val = getNextValue(data.index++);\n }\n bits |= (resb>0 ? 1 : 0) * power;\n power <<= 1;\n }\n\n dictionary[dictSize++] = f(bits);\n c = dictSize-1;\n enlargeIn--;\n break;\n case 1:\n bits = 0;\n maxpower = Math.pow(2,16);\n power=1;\n while (power!=maxpower) {\n resb = data.val & data.position;\n data.position >>= 1;\n if (data.position == 0) {\n data.position = resetValue;\n data.val = getNextValue(data.index++);\n }\n bits |= (resb>0 ? 1 : 0) * power;\n power <<= 1;\n }\n dictionary[dictSize++] = f(bits);\n c = dictSize-1;\n enlargeIn--;\n break;\n case 2:\n return result.join('');\n }\n\n if (enlargeIn == 0) {\n enlargeIn = Math.pow(2, numBits);\n numBits++;\n }\n\n if (dictionary[c]) {\n entry = dictionary[c];\n } else {\n if (c === dictSize) {\n entry = w + w.charAt(0);\n } else {\n return null;\n }\n }\n result.push(entry);\n\n // Add w+entry[0] to the dictionary.\n dictionary[dictSize++] = w + entry.charAt(0);\n enlargeIn--;\n\n w = entry;\n\n if (enlargeIn == 0) {\n enlargeIn = Math.pow(2, numBits);\n numBits++;\n }\n\n }\n }\n};\n return LZString;\n})();\n\nif (typeof define === 'function' && define.amd) {\n define(function () { return LZString; });\n} else if( typeof module !== 'undefined' && module != null ) {\n module.exports = LZString\n} else if( typeof angular !== 'undefined' && angular != null ) {\n angular.module('LZString', [])\n .factory('LZString', function () {\n return LZString;\n });\n}\n","export default __webpack_public_path__ + \"static/maskable-36b9e327abc26d5d02e9350d184a058f.png\";","var map = {\n\t\"./AutoHeight/EmblaCarousel\": [\n\t\t4439,\n\t\t4439\n\t],\n\t\"./AutoHeight/EmblaCarousel.jsx\": [\n\t\t4439,\n\t\t4439\n\t],\n\t\"./AutoHeight/EmblaCarousel.tsx\": [\n\t\t3405,\n\t\t3405\n\t],\n\t\"./AutoScroll/EmblaCarousel\": [\n\t\t2885,\n\t\t2885\n\t],\n\t\"./AutoScroll/EmblaCarousel.jsx\": [\n\t\t2885,\n\t\t2885\n\t],\n\t\"./AutoScroll/EmblaCarousel.tsx\": [\n\t\t6831,\n\t\t6831\n\t],\n\t\"./Autoplay/EmblaCarousel\": [\n\t\t6652,\n\t\t6652\n\t],\n\t\"./Autoplay/EmblaCarousel.jsx\": [\n\t\t6652,\n\t\t6652\n\t],\n\t\"./Autoplay/EmblaCarousel.tsx\": [\n\t\t6158,\n\t\t6158\n\t],\n\t\"./CarouselDefaultEntry\": [\n\t\t5566,\n\t\t5566\n\t],\n\t\"./CarouselDefaultEntry.jsx\": [\n\t\t5566,\n\t\t5566\n\t],\n\t\"./CarouselDefaultEntry.tsx\": [\n\t\t460,\n\t\t460\n\t],\n\t\"./CarouselGenerator/EmblaCarousel\": [\n\t\t4910,\n\t\t4910\n\t],\n\t\"./CarouselGenerator/EmblaCarousel.jsx\": [\n\t\t4910,\n\t\t4910\n\t],\n\t\"./CarouselGenerator/EmblaCarousel.tsx\": [\n\t\t5404,\n\t\t5404\n\t],\n\t\"./CarouselGenerator/EmblaCarouselArrowButtons\": [\n\t\t4720,\n\t\t4720\n\t],\n\t\"./CarouselGenerator/EmblaCarouselArrowButtons.jsx\": [\n\t\t4720,\n\t\t4720\n\t],\n\t\"./CarouselGenerator/EmblaCarouselArrowButtons.tsx\": [\n\t\t2682,\n\t\t2682\n\t],\n\t\"./CarouselGenerator/EmblaCarouselDotButton\": [\n\t\t893,\n\t\t893\n\t],\n\t\"./CarouselGenerator/EmblaCarouselDotButton.jsx\": [\n\t\t893,\n\t\t893\n\t],\n\t\"./CarouselGenerator/EmblaCarouselDotButton.tsx\": [\n\t\t8855,\n\t\t8855\n\t],\n\t\"./CarouselGenerator/EmblaCarouselSelectedSnapDisplay\": [\n\t\t6807,\n\t\t6807\n\t],\n\t\"./CarouselGenerator/EmblaCarouselSelectedSnapDisplay.jsx\": [\n\t\t6807,\n\t\t6807\n\t],\n\t\"./CarouselGenerator/EmblaCarouselSelectedSnapDisplay.tsx\": [\n\t\t9421,\n\t\t9421\n\t],\n\t\"./CarouselIosPickerEntry\": [\n\t\t7700,\n\t\t7700\n\t],\n\t\"./CarouselIosPickerEntry.jsx\": [\n\t\t7700,\n\t\t7700\n\t],\n\t\"./CarouselIosPickerEntry.tsx\": [\n\t\t6,\n\t\t6\n\t],\n\t\"./ClassNames/EmblaCarousel\": [\n\t\t5223,\n\t\t5223\n\t],\n\t\"./ClassNames/EmblaCarousel.jsx\": [\n\t\t5223,\n\t\t5223\n\t],\n\t\"./ClassNames/EmblaCarousel.tsx\": [\n\t\t6429,\n\t\t6429\n\t],\n\t\"./EmblaCarouselArrowButtons\": [\n\t\t1920,\n\t\t1920\n\t],\n\t\"./EmblaCarouselArrowButtons.jsx\": [\n\t\t1920,\n\t\t1920\n\t],\n\t\"./EmblaCarouselArrowButtons.tsx\": [\n\t\t6458,\n\t\t6458\n\t],\n\t\"./EmblaCarouselDotButton\": [\n\t\t6237,\n\t\t6237\n\t],\n\t\"./EmblaCarouselDotButton.jsx\": [\n\t\t6237,\n\t\t6237\n\t],\n\t\"./EmblaCarouselDotButton.tsx\": [\n\t\t5207,\n\t\t5207\n\t],\n\t\"./EmblaCarouselSelectedSnapDisplay\": [\n\t\t6356,\n\t\t3975\n\t],\n\t\"./EmblaCarouselSelectedSnapDisplay.jsx\": [\n\t\t6356,\n\t\t3975\n\t],\n\t\"./EmblaCarouselSelectedSnapDisplay.tsx\": [\n\t\t6013,\n\t\t6013\n\t],\n\t\"./Fade/EmblaCarousel\": [\n\t\t221,\n\t\t221\n\t],\n\t\"./Fade/EmblaCarousel.jsx\": [\n\t\t221,\n\t\t221\n\t],\n\t\"./Fade/EmblaCarousel.tsx\": [\n\t\t8183,\n\t\t8183\n\t],\n\t\"./Footer\": [\n\t\t8728,\n\t\t8728\n\t],\n\t\"./Footer.jsx\": [\n\t\t8728,\n\t\t8728\n\t],\n\t\"./Footer.tsx\": [\n\t\t9474,\n\t\t9474\n\t],\n\t\"./Header\": [\n\t\t5266,\n\t\t5266\n\t],\n\t\"./Header.jsx\": [\n\t\t5266,\n\t\t5266\n\t],\n\t\"./Header.tsx\": [\n\t\t3400,\n\t\t3400\n\t],\n\t\"./InfiniteScroll/EmblaCarousel\": [\n\t\t7032,\n\t\t7032\n\t],\n\t\"./InfiniteScroll/EmblaCarousel.jsx\": [\n\t\t7032,\n\t\t7032\n\t],\n\t\"./InfiniteScroll/EmblaCarousel.tsx\": [\n\t\t8898,\n\t\t8898\n\t],\n\t\"./IosPicker/EmblaCarousel\": [\n\t\t6958,\n\t\t6958\n\t],\n\t\"./IosPicker/EmblaCarousel.jsx\": [\n\t\t6958,\n\t\t6958\n\t],\n\t\"./IosPicker/EmblaCarousel.tsx\": [\n\t\t1852,\n\t\t1852\n\t],\n\t\"./IosPicker/EmblaCarouselIosPickerItem\": [\n\t\t3348,\n\t\t3348\n\t],\n\t\"./IosPicker/EmblaCarouselIosPickerItem.jsx\": [\n\t\t3348,\n\t\t3348\n\t],\n\t\"./IosPicker/EmblaCarouselIosPickerItem.tsx\": [\n\t\t7142,\n\t\t7142\n\t],\n\t\"./LazyLoad/EmblaCarousel\": [\n\t\t1897,\n\t\t1897\n\t],\n\t\"./LazyLoad/EmblaCarousel.jsx\": [\n\t\t1897,\n\t\t1897\n\t],\n\t\"./LazyLoad/EmblaCarousel.tsx\": [\n\t\t8683,\n\t\t8683\n\t],\n\t\"./LazyLoad/EmblaCarouselLazyLoadImage\": [\n\t\t3376,\n\t\t3376\n\t],\n\t\"./LazyLoad/EmblaCarouselLazyLoadImage.jsx\": [\n\t\t3376,\n\t\t3376\n\t],\n\t\"./LazyLoad/EmblaCarouselLazyLoadImage.tsx\": [\n\t\t4618,\n\t\t4618\n\t],\n\t\"./Opacity/EmblaCarousel\": [\n\t\t2260,\n\t\t2260\n\t],\n\t\"./Opacity/EmblaCarousel.jsx\": [\n\t\t2260,\n\t\t2260\n\t],\n\t\"./Opacity/EmblaCarousel.tsx\": [\n\t\t7862,\n\t\t7862\n\t],\n\t\"./Parallax/EmblaCarousel\": [\n\t\t3862,\n\t\t3862\n\t],\n\t\"./Parallax/EmblaCarousel.jsx\": [\n\t\t3862,\n\t\t3862\n\t],\n\t\"./Parallax/EmblaCarousel.tsx\": [\n\t\t9844,\n\t\t9844\n\t],\n\t\"./Progress/EmblaCarousel\": [\n\t\t3146,\n\t\t3146\n\t],\n\t\"./Progress/EmblaCarousel.jsx\": [\n\t\t3146,\n\t\t3146\n\t],\n\t\"./Progress/EmblaCarousel.tsx\": [\n\t\t9360,\n\t\t9360\n\t],\n\t\"./Scale/EmblaCarousel\": [\n\t\t3734,\n\t\t3734\n\t],\n\t\"./Scale/EmblaCarousel.jsx\": [\n\t\t3734,\n\t\t3734\n\t],\n\t\"./Scale/EmblaCarousel.tsx\": [\n\t\t7387,\n\t\t7387\n\t],\n\t\"./Thumbs/EmblaCarousel\": [\n\t\t72,\n\t\t72\n\t],\n\t\"./Thumbs/EmblaCarousel.jsx\": [\n\t\t72,\n\t\t72\n\t],\n\t\"./Thumbs/EmblaCarousel.tsx\": [\n\t\t9122,\n\t\t9122\n\t],\n\t\"./Thumbs/EmblaCarouselThumbsButton\": [\n\t\t2875,\n\t\t2875\n\t],\n\t\"./Thumbs/EmblaCarouselThumbsButton.jsx\": [\n\t\t2875,\n\t\t2875\n\t],\n\t\"./Thumbs/EmblaCarouselThumbsButton.tsx\": [\n\t\t6841,\n\t\t6841\n\t],\n\t\"./index.html\": [\n\t\t8269,\n\t\t8269\n\t]\n};\nfunction webpackAsyncContext(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\treturn Promise.resolve().then(function() {\n\t\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\t\te.code = 'MODULE_NOT_FOUND';\n\t\t\tthrow e;\n\t\t});\n\t}\n\n\tvar ids = map[req], id = ids[0];\n\treturn __webpack_require__.e(ids[1]).then(function() {\n\t\treturn __webpack_require__(id);\n\t});\n}\nwebpackAsyncContext.keys = function() { return Object.keys(map); };\nwebpackAsyncContext.id = 1735;\nmodule.exports = webpackAsyncContext;","var map = {\n\t\"./CarouselDefaultEntry.jsx\": [\n\t\t5566,\n\t\t5566\n\t],\n\t\"./CarouselDefaultEntry.tsx\": [\n\t\t460,\n\t\t460\n\t]\n};\nfunction webpackAsyncContext(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\treturn Promise.resolve().then(function() {\n\t\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\t\te.code = 'MODULE_NOT_FOUND';\n\t\t\tthrow e;\n\t\t});\n\t}\n\n\tvar ids = map[req], id = ids[0];\n\treturn __webpack_require__.e(ids[1]).then(function() {\n\t\treturn __webpack_require__(id);\n\t});\n}\nwebpackAsyncContext.keys = function() { return Object.keys(map); };\nwebpackAsyncContext.id = 7182;\nmodule.exports = webpackAsyncContext;","var map = {\n\t\"./CarouselIosPickerEntry.jsx\": [\n\t\t7700,\n\t\t7700\n\t],\n\t\"./CarouselIosPickerEntry.tsx\": [\n\t\t6,\n\t\t6\n\t]\n};\nfunction webpackAsyncContext(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\treturn Promise.resolve().then(function() {\n\t\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\t\te.code = 'MODULE_NOT_FOUND';\n\t\t\tthrow e;\n\t\t});\n\t}\n\n\tvar ids = map[req], id = ids[0];\n\treturn __webpack_require__.e(ids[1]).then(function() {\n\t\treturn __webpack_require__(id);\n\t});\n}\nwebpackAsyncContext.keys = function() { return Object.keys(map); };\nwebpackAsyncContext.id = 348;\nmodule.exports = webpackAsyncContext;","var map = {\n\t\"./Footer.jsx\": [\n\t\t8728,\n\t\t8728\n\t],\n\t\"./Footer.tsx\": [\n\t\t9474,\n\t\t9474\n\t]\n};\nfunction webpackAsyncContext(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\treturn Promise.resolve().then(function() {\n\t\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\t\te.code = 'MODULE_NOT_FOUND';\n\t\t\tthrow e;\n\t\t});\n\t}\n\n\tvar ids = map[req], id = ids[0];\n\treturn __webpack_require__.e(ids[1]).then(function() {\n\t\treturn __webpack_require__(id);\n\t});\n}\nwebpackAsyncContext.keys = function() { return Object.keys(map); };\nwebpackAsyncContext.id = 2804;\nmodule.exports = webpackAsyncContext;","var map = {\n\t\"./Header.jsx\": [\n\t\t5266,\n\t\t5266\n\t],\n\t\"./Header.tsx\": [\n\t\t3400,\n\t\t3400\n\t]\n};\nfunction webpackAsyncContext(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\treturn Promise.resolve().then(function() {\n\t\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\t\te.code = 'MODULE_NOT_FOUND';\n\t\t\tthrow e;\n\t\t});\n\t}\n\n\tvar ids = map[req], id = ids[0];\n\treturn __webpack_require__.e(ids[1]).then(function() {\n\t\treturn __webpack_require__(id);\n\t});\n}\nwebpackAsyncContext.keys = function() { return Object.keys(map); };\nwebpackAsyncContext.id = 4502;\nmodule.exports = webpackAsyncContext;","var map = {\n\t\"./AutoHeight/EmblaCarousel\": [\n\t\t9361,\n\t\t9361\n\t],\n\t\"./AutoHeight/EmblaCarousel.js\": [\n\t\t9361,\n\t\t9361\n\t],\n\t\"./AutoHeight/EmblaCarousel.ts\": [\n\t\t6827,\n\t\t6827\n\t],\n\t\"./AutoScroll/EmblaCarousel\": [\n\t\t7419,\n\t\t7419\n\t],\n\t\"./AutoScroll/EmblaCarousel.js\": [\n\t\t7419,\n\t\t7419\n\t],\n\t\"./AutoScroll/EmblaCarousel.ts\": [\n\t\t8193,\n\t\t8193\n\t],\n\t\"./AutoScroll/EmblaCarouselAutoScroll\": [\n\t\t3165,\n\t\t3165\n\t],\n\t\"./AutoScroll/EmblaCarouselAutoScroll.js\": [\n\t\t3165,\n\t\t3165\n\t],\n\t\"./AutoScroll/EmblaCarouselAutoScroll.ts\": [\n\t\t8591,\n\t\t8591\n\t],\n\t\"./Autoplay/EmblaCarousel\": [\n\t\t6200,\n\t\t6200\n\t],\n\t\"./Autoplay/EmblaCarousel.js\": [\n\t\t6200,\n\t\t6200\n\t],\n\t\"./Autoplay/EmblaCarousel.ts\": [\n\t\t374,\n\t\t374\n\t],\n\t\"./Autoplay/EmblaCarouselAutoplay\": [\n\t\t3325,\n\t\t3325\n\t],\n\t\"./Autoplay/EmblaCarouselAutoplay.js\": [\n\t\t3325,\n\t\t3325\n\t],\n\t\"./Autoplay/EmblaCarouselAutoplay.ts\": [\n\t\t5743,\n\t\t5743\n\t],\n\t\"./CarouselGenerator/EmblaCarousel\": [\n\t\t6518,\n\t\t6518\n\t],\n\t\"./CarouselGenerator/EmblaCarousel.js\": [\n\t\t6518,\n\t\t6518\n\t],\n\t\"./CarouselGenerator/EmblaCarousel.ts\": [\n\t\t6040,\n\t\t6040\n\t],\n\t\"./CarouselGenerator/EmblaCarouselArrowButtons\": [\n\t\t8692,\n\t\t8692\n\t],\n\t\"./CarouselGenerator/EmblaCarouselArrowButtons.js\": [\n\t\t8692,\n\t\t8692\n\t],\n\t\"./CarouselGenerator/EmblaCarouselArrowButtons.ts\": [\n\t\t9178,\n\t\t9178\n\t],\n\t\"./CarouselGenerator/EmblaCarouselDotButton\": [\n\t\t83,\n\t\t83\n\t],\n\t\"./CarouselGenerator/EmblaCarouselDotButton.js\": [\n\t\t83,\n\t\t83\n\t],\n\t\"./CarouselGenerator/EmblaCarouselDotButton.ts\": [\n\t\t1353,\n\t\t1353\n\t],\n\t\"./CarouselGenerator/EmblaCarouselSelectedSnapDisplay\": [\n\t\t6825,\n\t\t6825\n\t],\n\t\"./CarouselGenerator/EmblaCarouselSelectedSnapDisplay.js\": [\n\t\t6825,\n\t\t6825\n\t],\n\t\"./CarouselGenerator/EmblaCarouselSelectedSnapDisplay.ts\": [\n\t\t5555,\n\t\t5555\n\t],\n\t\"./CarouselGenerator/embla-carousel.html\": [\n\t\t7673,\n\t\t7673\n\t],\n\t\"./CarouselGenerator/slide.html\": [\n\t\t2548,\n\t\t2548\n\t],\n\t\"./ClassNames/EmblaCarousel\": [\n\t\t9105,\n\t\t9105\n\t],\n\t\"./ClassNames/EmblaCarousel.js\": [\n\t\t9105,\n\t\t9105\n\t],\n\t\"./ClassNames/EmblaCarousel.ts\": [\n\t\t4987,\n\t\t4987\n\t],\n\t\"./EmblaCarouselArrowButtons\": [\n\t\t3676,\n\t\t3676\n\t],\n\t\"./EmblaCarouselArrowButtons.js\": [\n\t\t3676,\n\t\t3676\n\t],\n\t\"./EmblaCarouselArrowButtons.ts\": [\n\t\t1650,\n\t\t1650\n\t],\n\t\"./EmblaCarouselDotButton\": [\n\t\t5259,\n\t\t5259\n\t],\n\t\"./EmblaCarouselDotButton.js\": [\n\t\t5259,\n\t\t5259\n\t],\n\t\"./EmblaCarouselDotButton.ts\": [\n\t\t9377,\n\t\t9377\n\t],\n\t\"./Fade/EmblaCarousel\": [\n\t\t8939,\n\t\t8939\n\t],\n\t\"./Fade/EmblaCarousel.js\": [\n\t\t8939,\n\t\t8939\n\t],\n\t\"./Fade/EmblaCarousel.ts\": [\n\t\t6065,\n\t\t6065\n\t],\n\t\"./InfiniteScroll/EmblaCarousel\": [\n\t\t7340,\n\t\t7340\n\t],\n\t\"./InfiniteScroll/EmblaCarousel.js\": [\n\t\t7340,\n\t\t7340\n\t],\n\t\"./InfiniteScroll/EmblaCarousel.ts\": [\n\t\t1618,\n\t\t1618\n\t],\n\t\"./InfiniteScroll/EmblaCarouselInfiniteScroll\": [\n\t\t2709,\n\t\t2709\n\t],\n\t\"./InfiniteScroll/EmblaCarouselInfiniteScroll.js\": [\n\t\t2709,\n\t\t2709\n\t],\n\t\"./InfiniteScroll/EmblaCarouselInfiniteScroll.ts\": [\n\t\t5917,\n\t\t679\n\t],\n\t\"./IosPicker/EmblaCarousel\": [\n\t\t7238,\n\t\t7238\n\t],\n\t\"./IosPicker/EmblaCarousel.js\": [\n\t\t7238,\n\t\t7238\n\t],\n\t\"./IosPicker/EmblaCarousel.ts\": [\n\t\t4824,\n\t\t2443\n\t],\n\t\"./IosPicker/EmblaCarouselIosPicker\": [\n\t\t7787,\n\t\t7787\n\t],\n\t\"./IosPicker/EmblaCarouselIosPicker.js\": [\n\t\t7787,\n\t\t7787\n\t],\n\t\"./IosPicker/EmblaCarouselIosPicker.ts\": [\n\t\t4913,\n\t\t4913\n\t],\n\t\"./LazyLoad/EmblaCarousel\": [\n\t\t7703,\n\t\t7703\n\t],\n\t\"./LazyLoad/EmblaCarousel.js\": [\n\t\t7703,\n\t\t7703\n\t],\n\t\"./LazyLoad/EmblaCarousel.ts\": [\n\t\t6677,\n\t\t6677\n\t],\n\t\"./LazyLoad/EmblaCarouselLazyLoad\": [\n\t\t9157,\n\t\t9157\n\t],\n\t\"./LazyLoad/EmblaCarouselLazyLoad.js\": [\n\t\t9157,\n\t\t9157\n\t],\n\t\"./LazyLoad/EmblaCarouselLazyLoad.ts\": [\n\t\t8071,\n\t\t8071\n\t],\n\t\"./Opacity/EmblaCarousel\": [\n\t\t4776,\n\t\t4776\n\t],\n\t\"./Opacity/EmblaCarousel.js\": [\n\t\t4776,\n\t\t4776\n\t],\n\t\"./Opacity/EmblaCarousel.ts\": [\n\t\t8950,\n\t\t8950\n\t],\n\t\"./Opacity/EmblaCarouselTweenOpacity\": [\n\t\t5804,\n\t\t5804\n\t],\n\t\"./Opacity/EmblaCarouselTweenOpacity.js\": [\n\t\t5804,\n\t\t5804\n\t],\n\t\"./Opacity/EmblaCarouselTweenOpacity.ts\": [\n\t\t6786,\n\t\t6786\n\t],\n\t\"./Parallax/EmblaCarousel\": [\n\t\t3590,\n\t\t3590\n\t],\n\t\"./Parallax/EmblaCarousel.js\": [\n\t\t3590,\n\t\t3590\n\t],\n\t\"./Parallax/EmblaCarousel.ts\": [\n\t\t2443,\n\t\t4824\n\t],\n\t\"./Parallax/EmblaCarouselTweenParallax\": [\n\t\t1288,\n\t\t1288\n\t],\n\t\"./Parallax/EmblaCarouselTweenParallax.js\": [\n\t\t1288,\n\t\t1288\n\t],\n\t\"./Parallax/EmblaCarouselTweenParallax.ts\": [\n\t\t3878,\n\t\t3878\n\t],\n\t\"./Progress/EmblaCarousel\": [\n\t\t6397,\n\t\t8778\n\t],\n\t\"./Progress/EmblaCarousel.js\": [\n\t\t6397,\n\t\t8778\n\t],\n\t\"./Progress/EmblaCarousel.ts\": [\n\t\t4596,\n\t\t4596\n\t],\n\t\"./Progress/EmblaCarouselProgressBar\": [\n\t\t4032,\n\t\t4032\n\t],\n\t\"./Progress/EmblaCarouselProgressBar.js\": [\n\t\t4032,\n\t\t4032\n\t],\n\t\"./Progress/EmblaCarouselProgressBar.ts\": [\n\t\t334,\n\t\t334\n\t],\n\t\"./Scale/EmblaCarousel\": [\n\t\t3615,\n\t\t3615\n\t],\n\t\"./Scale/EmblaCarousel.js\": [\n\t\t3615,\n\t\t3615\n\t],\n\t\"./Scale/EmblaCarousel.ts\": [\n\t\t1485,\n\t\t1485\n\t],\n\t\"./Scale/EmblaCarouselTweenScale\": [\n\t\t7892,\n\t\t7892\n\t],\n\t\"./Scale/EmblaCarouselTweenScale.js\": [\n\t\t7892,\n\t\t7892\n\t],\n\t\"./Scale/EmblaCarouselTweenScale.ts\": [\n\t\t8378,\n\t\t8378\n\t],\n\t\"./Thumbs/EmblaCarousel\": [\n\t\t8804,\n\t\t8804\n\t],\n\t\"./Thumbs/EmblaCarousel.js\": [\n\t\t8804,\n\t\t8804\n\t],\n\t\"./Thumbs/EmblaCarousel.ts\": [\n\t\t9290,\n\t\t9290\n\t],\n\t\"./Thumbs/EmblaCarouselThumbsButton\": [\n\t\t1797,\n\t\t1797\n\t],\n\t\"./Thumbs/EmblaCarouselThumbsButton.js\": [\n\t\t1797,\n\t\t1797\n\t],\n\t\"./Thumbs/EmblaCarouselThumbsButton.ts\": [\n\t\t711,\n\t\t711\n\t],\n\t\"./index.html\": [\n\t\t7265,\n\t\t7265\n\t]\n};\nfunction webpackAsyncContext(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\treturn Promise.resolve().then(function() {\n\t\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\t\te.code = 'MODULE_NOT_FOUND';\n\t\t\tthrow e;\n\t\t});\n\t}\n\n\tvar ids = map[req], id = ids[0];\n\treturn __webpack_require__.e(ids[1]).then(function() {\n\t\treturn __webpack_require__(id);\n\t});\n}\nwebpackAsyncContext.keys = function() { return Object.keys(map); };\nwebpackAsyncContext.id = 2351;\nmodule.exports = webpackAsyncContext;"],"names":["Object","defineProperty","exports","value","LZString","getParameters","parameters","input","JSON","stringify","compressToBase64","replace","define_1","module","bracketSpacing","printWidth","semi","singleQuote","trailingComma","tabWidth","useTabs","CAROUSEL_DEFAULT_HEIGHT","CAROUSEL_THUMB_SLIDES_HEIGHT","CAROUSEL_THUMB_SLIDES_SPACING","CAROUSEL_IOS_PICKER_HEIGHT","CAROUSEL_NAV_BUTTON_SIZE","SPACINGS","SIX","CAROUSEL_CONTROLS_SPACING","THREE","CAROUSEL_SLIDE_RADIUS_STYLES","css","BORDER_RADIUSES","SOFT","CAROUSEL_BORDER_SHADOW_STYLES","BORDER_SIZES","OUTLINE","COLORS","DETAIL_MEDIUM_CONTRAST","CAROUSEL_BUTTON_BASE_STYLES","TAP_HIGHLIGHT_STYLES","BASE_STYLES","SLIDES_PER_VIEW_STYLES","MEDIA","MIN_SM","MIN_LG","SLIDE_NUMBER_STYLES","FONT_SIZES","CUSTOM","FONT_WEIGHTS","SEMI_BOLD","IMAGE_STYLES","VARIABLE_WIDTH_STYLES","CONTROLS_STYLES","TWO","ARROWS_STYLES","ONE","createSquareSizeStyles","LAYERS","STEP","CIRCLE","TEXT_BODY","DETAIL_HIGH_CONTRAST","DOTS_STYLES","SNAP_DISPLAY_STYLES","TEXT_LOW_CONTRAST","PLAY_BUTTON_STYLES","BOLD","COMPLEMENTARY","FOUR","FOURTEEN","THUMBS_STYLES","MIN_XS","H4","PROGRESS_STYLES","BACKGROUND_SITE","PARALLAX_STYLES","SCALE_STYLES","LAZY_LOAD_STYLES","ACCENT_VERTICAL","TEXT_HIGH_CONTRAST_RGB_VALUE","TEXT_HIGH_CONTRAST","AUTO_HEIGHT_STYLES","CLASS_NAMES_STYLES","FADE_STYLES","INFINITE_SCROLL_STYLES","IOS_PICKER_STYLES","BACKGROUND_SITE_RGB_VALUE","examplesCarouselDefaultStyles","slideSize","spacingSize","axis","customStyles","baseStyles","styledComponentsStylesToString","horizontal","spacingDirection","panDirection","sizeDimention","slideHeight","containerHeight","examplesCarouselDragFreeStyles","examplesCarouselVariableWidthStyles","examplesCarouselSlidesPerViewStyles","examplesCarouselThumbsStyles","examplesCarouselProgressStyles","examplesCarouselParallaxStyles","examplesCarouselScaleStyles","examplesCarouselOpacityStyles","examplesCarouselAutoplayStyles","examplesCarouselAutoHeightStyles","examplesCarouselClassNamesStyles","examplesCarouselFadeStyles","examplesCarouselLazyLoadStyles","examplesCarouselInfiniteScrollStyles","examplesCarouselIosPickerStyles","PageBreadcrumbsWrapper","styled","nav","withConfig","displayName","componentId","itemStyles","Link","LinkBare","ActiveTitle","span","Separator","Icon","PageBreadcrumbs","props","id","breadcrumbs","useRouteBreadcrumbs","length","React","map","_ref","index","slug","title","Fragment","key","to","size","svg","role","PageEditThisPageWrapper","EIGHT","PageEditThisPage","pageUrl","url","URLS","GITHUB_DOCUMENTATION","IconWithText","iconSvg","iconSize","ITEM_SPACING","PagePaginationWrapper","createGapStyles","Item","div","BRAND_PRIMARY","BRAND_SECONDARY","ItemLabel","ItemTitle","MEDIUM","IconWithTextText","BRAND_GRADIENT_TEXT_STYLES","PagePagination","next","previous","iconSide","createSandboxReactIndexHtml","async","indexHTML","theme","THEME_PREFIX","getThemeFromDocument","kebabCaseToPascalCase","default","SANDBOX_REGEX_THEME","SANDBOX_REGEX_TITLE","CAROUSEL_IMPORT_REGEX","SLIDE_COUNT_REGEX","CAROUSEL_IMPORT_REPLACE","createSandboxReactEntry","reactScriptExtension","slides","options","loop","SANDBOX_REGEX_IOS_PICKER_LOOP","sandboxInjectIosPickerLoop","createSandboxReactIosPickerEntry","slideCount","toString","SANDBOX_REGEX_OPTIONS","sandboxInjectOptions","match","createSandboxReactDefaultEntry","IMAGES_IMPORT_REGEX","IMAGES_FUNCTION_REGEX","createSandboxReactHeader","header","formattedTitle","createSandboxReactFooter","SANDBOX_REGEX_REPOSITORY_URL","GITHUB_ROOT","createSandboxReact","carouselScript","styles","plugins","sandboxOverrides","language","SANDBOX_LANGUAGES","JAVASCRIPT","config","prettierConfig","formatCss","loadPrettier","isTypeScript","formatScript","sandboxLanguageUtils","packageJson","dependencies","devDependencies","docsPackageJson","isJavaScript","name","version","description","main","SANDBOX_REACT_FOLDERS","JS","scripts","start","build","test","eject","react","typescript","browserslist","createSandboxReactPackageJson","tsConfig","include","compilerOptions","strict","esModuleInterop","lib","jsx","carouselScriptWithImages","createSandboxReactImagePaths","entryHtml","entryScript","headerScript","footerScript","Promise","all","sandboxConfig","isBinary","content","PUBLIC","CSS","SANDBOX_BASE_CSS","SANDBOX_CSS","assign","files","SANDBOX_SCRIPT_SRC_REGEX","SANDBOX_CODE_REGEX","IMG_SRC_WITH_HASH_REGEX","IMG_SLIDE_WITH_NUMBER_REGEX","IMG_NUMBER_REGEX","createSandboxVanilla","carouselHtml","formatHtml","vanillaScriptExtension","resolutions","createSandboxVanillaPackageJson","sourceMap","allowJs","rootDir","moduleResolution","createSandboxVanillaOptions","languageExtension","scriptSrc","SANDBOX_VANILLA_FOLDERS","createSandboxVanillaEntry","createSandboxVanillaImagePaths","IMPORT_LOCAL_MODULE_REGEX","MODULE_LOCAL_NAME_REGEX","sandboxStaticFindLocalModules","IMPORT_SHARED_MODULE_REGEX","MODULE_SHARED_NAME_REGEX","sandboxStaticFindSharedModules","sandboxStaticExtractVanillaModules","path","localModules","sharedModules","modules","concat","_toConsumableArray","localModulesPromises","sharedModulesPromises","promises","moduleScripts","script","resolve","sandboxStaticExtractReactModules","sandboxStaticExtractPlugins","pluginList","values","SANDBOX_PLUGINS","filter","pluginName","addSandboxPlugins","SANDBOX_BASE_STYLES","BASE_FONT_STYLES","BODY","SANDBOX_HEADER_STYLES","SANDBOX_FOOTER_STYLES","THEME_STYLES","Seo","lang","children","siteMetadata","useSiteMetadata","pageTitle","metaDescription","rel","href","removeProtocol","siteUrl","author","SANDBOX_LABELS","VANILLA_JS","VANILLA_TS","REACT_TS","REACT_JS","TYPESCRIPT","AUTOPLAY","AUTO_SCROLL","AUTO_HEIGHT","CLASS_NAMES","FADE","SANDBOX_GENERATOR_FORM_FIELDS","FRAMEWORK","LOOP","DRAG_FREE","AXIS","DIRECTION","ACCESSIBILITY","SLIDE_SIZE","SLIDE_GAP_SIZE","EDGE_GAP","ALIGN","CONTAIN_SCROLL","SLIDES_TO_SCROLL","NAVIGATION_PREV_NEXT_BUTTONS","NAVIGATION_DOTS","WHEEL_GESTURES","SANDBOX_GENERATOR_FORM_PREFIX","SANDBOX_SELECTION_SPACING","arrayFromNumber","number","Array","from","keys","isBrowser","THEME_KEYS","LIGHT","lightThemeClass","document","documentElement","classList","contains","DARK","PRETTIER_CONFIG","prettierrc","prettier","htmlParser","cssParser","babelParser","prettierHtmlParser","parser","prettierCssParser","prettierBabelParser","prettierBabeTsParser","prettierFormatSafe","subject","formattedString","format","error","console","warn","html","formatJs","js","formatTs","ts","createSandboxFunctionsWithLabels","createSandboxFunction","sandboxLabelKey","createSandbox","label","pluginNames","isArray","reduce","allPlugins","createSandboxGeneratorInputId","fieldName","FIELD_NAME","ID","camelOrPascalToKebabCase","_len","arguments","stylesList","_key","allStyles","join","isRecord","prototype","call","isObject","areOptionsEqual","optionsA","optionsB","optionsAKeys","optionsBKeys","breakpoints","every","valueA","valueB","sortAndMapPluginToOptions","sort","a","b","plugin","isNumber","isString","isBoolean","mathAbs","n","Math","abs","mathSign","sign","deltaAbs","arrayKeys","array","objectKeys","Number","arrayLast","arrayLastIndex","max","arrayIsLastIndex","startAt","_","i","object","objectsMergeDeep","objectA","objectB","mergedObjects","currentObject","forEach","areObjects","isMouseEvent","evt","ownerWindow","MouseEvent","EventStore","listeners","self","add","node","type","handler","removeListener","passive","addEventListener","removeEventListener","legacyMediaQueryList","addListener","push","clear","remove","Animations","ownerDocument","update","render","documentVisibleHandler","timeStep","lastTimeStamp","lag","animationFrame","animate","timeStamp","elapsed","lagOffset","requestAnimationFrame","stop","cancelAnimationFrame","init","hidden","destroy","Limit","min","reachedMin","reachedMax","reachedAny","constrain","removeOffset","ceil","Counter","loopEnd","counter","withinLimit","get","clone","set","DragHandler","rootNode","target","dragTracker","location","animation","scrollTo","scrollBody","scrollTarget","eventHandler","percentOfView","dragFree","dragThreshold","skipSnaps","baseFriction","watchDrag","cross","crossAxis","direction","focusNodes","nonPassiveEvent","initEvents","dragEvents","goToNextThreshold","measure","snapForceBoost","mouse","touch","freeForceBoost","baseSpeed","isMoving","startScroll","startCross","pointerIsDown","preventScroll","preventClick","isMouse","move","touches","up","lastScroll","readPoint","lastCross","diffScroll","diffCross","cancelable","diff","pointerMove","useFriction","useDuration","preventDefault","targetChanged","byDistance","rawForce","pointerUp","force","baseForce","distance","byIndex","allowedForce","forceFactor","factorAbs","speed","friction","emit","click","stopPropagation","emblaApi","downIfAllowed","isMouseEvt","buttons","button","nodeName","includes","isFocusNode","pointerDown","addDragEvents","down","DragTracker","startEvent","lastEvent","readTime","evtAxis","coord","scroll","expired","diffDrag","diffTime","ResizeHandler","container","watchResize","nodeRects","resizeObserver","containerSize","slideSizes","destroyed","readSize","measureSize","ResizeObserver","entries","entry","isContainer","slideIndex","indexOf","lastSize","reInit","defaultCallback","observe","disconnect","ScrollBounds","limit","offsetLocation","pullBackThreshold","edgeOffsetTolerance","frictionLimit","disabled","shouldConstrain","edge","diffToEdge","diffToTarget","subtract","useBaseFriction","toggleActive","active","ScrollLooper","contentSize","vectors","shouldLoop","loopDistance","v","ScrollTarget","scrollSnaps","targetVector","minDistance","distances","shortcut","targets","matchingTargets","t","snap","targetSnapDistance","ascDiffsToSnaps","d1","d2","findTargetSnap","reachedBound","Vector1D","initialValue","normalizeInput","Translate","translate","containerStyle","style","transform","getAttribute","removeAttribute","SlideLooper","viewSize","slideSizesWithGaps","snaps","roundingSafety","ascItems","descItems","reverse","loopPoints","gap","findLoopPoints","slidesInGap","startPoints","endPoints","removeSlideSizes","indexes","offset","isEndEdge","slideBounds","end","findSlideBounds","initial","altered","boundEdge","loopPoint","slideLocation","canLoop","shiftLocation","SlidesHandler","watchSlides","mutationObserver","MutationObserver","mutations","mutation","childList","SlidesInView","threshold","intersectionEntryMap","intersectionObserver","inViewCache","notInViewCache","IntersectionObserver","root","parentElement","slide","inView","slideIndexes","list","parseInt","isIntersecting","createInViewList","SlidesToScroll","slidesToScroll","containerRect","slideRects","startGap","endGap","pixelTolerance","startEdge","endEdge","groupByNumber","groupSlides","groupSize","slice","byNumber","groups","rectB","rectA","isFirst","isLast","edgeA","edgeB","gapA","chunkSize","currentSize","previousSize","bySize","Engine","align","scrollAxis","startIndex","duration","inViewThreshold","containScroll","offsetTop","offsetLeft","offsetWidth","offsetHeight","top","right","bottom","left","width","height","contentDirection","isRightToLeft","isVertical","nodeRect","Axis","PercentOfView","alignment","predefined","center","Alignment","containSnaps","readEdgeGap","withEdgeGap","slideRect","measureStartGap","getComputedStyle","parseFloat","getPropertyValue","measureEndGap","rect","rects","SlideSizes","snapsAligned","alignments","g","ScrollSnaps","snapsContained","scrollContainLimit","scrollBounds","snapsBounded","snapAligned","usePixelTolerance","scrollBound","toFixed","startSnap","endSnap","lastIndexOf","findScrollContainLimit","bound","measureContained","ScrollContain","ScrollLimit","indexPrevious","_ref2","dragHandler","seek","engine","_ref3","scrollLooper","slideLooper","velocity","shouldSettle","settled","withinBounds","hasSettled","startLocation","baseDuration","bodyVelocity","scrollDirection","scrollDuration","scrollFriction","rawLocation","rawLocationPrevious","directionDiff","useBaseDuration","ScrollBody","indexCurrent","distanceDiff","indexDiff","targetIndex","ScrollTo","scrollProgress","ScrollProgress","eventStore","slidesInView","slideRegistry","groupedSlideIndexes","doNotContain","group","createSlideRegistry","SlideRegistry","slideFocus","lastTabPressTime","registerTabPress","event","code","Date","getTime","addSlideFocusEvent","focus","scrollLeft","findIndex","capture","SlideFocus","resizeHandler","scrollSnapList","slidesHandler","defaultOptions","OptionsHandler","mergeOptions","optionsAtMedia","matchedMediaOptions","media","matchMedia","matches","mediaOption","optionsMediaQueries","optionsList","acc","mediaQueries","EmblaCarousel","userOptions","userPlugins","defaultView","optionsHandler","pluginsHandler","activePlugins","_ref4","PluginsHandler","mediaHandlers","api","getListeners","e","off","cb","on","EventHandler","reActivate","pluginApis","optionsBase","globalOptions","createEngine","activate","withOptions","withPlugins","userContainer","userSlides","customContainer","querySelector","customSlides","querySelectorAll","storeElements","_ref5","query","offsetParent","selectedScrollSnap","deActivate","jump","canScrollNext","canScrollPrev","containerNode","internalEngine","previousScrollSnap","scrollNext","scrollPrev","slideNodes","slidesNotInView","setTimeout","useEmblaCarousel","storedOptions","useRef","storedPlugins","setEmblaApi","useState","viewport","setViewport","useCallback","current","useEffect","window","createElement","newEmblaApi","undefined","pluginsA","pluginsB","optionA","arePluginsEqual","f","String","fromCharCode","keyStrBase64","keyStrUriSafe","baseReverseDic","getBaseValue","alphabet","character","charAt","res","_compress","decompressFromBase64","_decompress","compressToUTF16","decompressFromUTF16","compressed","charCodeAt","compressToUint8Array","uncompressed","compress","buf","Uint8Array","TotalLen","current_value","decompressFromUint8Array","decompress","result","c","compressToEncodedURIComponent","decompressFromEncodedURIComponent","bitsPerChar","getCharFromInt","ii","context_dictionary","context_dictionaryToCreate","context_c","context_wc","context_w","context_enlargeIn","context_dictSize","context_numBits","context_data","context_data_val","context_data_position","hasOwnProperty","pow","resetValue","getNextValue","w","bits","resb","maxpower","power","dictionary","enlargeIn","dictSize","numBits","data","val","position","webpackAsyncContext","req","__webpack_require__","o","then","Error","ids"],"sourceRoot":""} \ No newline at end of file diff --git a/docs/_gatsby/slices/_gatsby-scripts-1.html b/docs/_gatsby/slices/_gatsby-scripts-1.html index 038ca5093..e45753a3d 100644 --- a/docs/_gatsby/slices/_gatsby-scripts-1.html +++ b/docs/_gatsby/slices/_gatsby-scripts-1.html @@ -2,6 +2,6 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/docs/api/events/index.html b/docs/api/events/index.html index 2bc2fac7a..b1d88c4bf 100644 --- a/docs/api/events/index.html +++ b/docs/api/events/index.html @@ -15,19 +15,23 @@ .kZMUZb{color:currentColor;width:0.6rem;height:0.6rem;}/*!sc*/ .jkLZAf{color:currentColor;width:1.5rem;height:1.5rem;}/*!sc*/ data-styled.g14[id="icons-sc-nsvk8i-0"]{content:"kJUjin,jRMYBH,eoSUgL,izZxfj,kZMUZb,jkLZAf,"}/*!sc*/ -.grVbTO{width:100%;position:relative;}/*!sc*/ -.grVbTO:before{content:'';display:block;padding-bottom:100%;width:100%;}/*!sc*/ -data-styled.g15[id="SiteLogo__SiteLogoWrapper-sc-1by5cek-0"]{content:"grVbTO,"}/*!sc*/ -.fRVpEJ{position:absolute;top:0;left:0;right:0;bottom:0;width:100%;height:100%;z-index:1;}/*!sc*/ -data-styled.g17[id="SiteLogo__LogoLightIcon-sc-1by5cek-2"]{content:"fRVpEJ,"}/*!sc*/ -.khuYEq{position:absolute;top:0;left:0;right:0;bottom:0;width:100%;height:100%;z-index:1;}/*!sc*/ -data-styled.g18[id="SiteLogo__LogoDarkIcon-sc-1by5cek-3"]{content:"khuYEq,"}/*!sc*/ -.jYOvXV{width:4rem;height:4rem;z-index:1;color:var(--text-high-contrast);position:relative;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;margin-right:calc((4rem - 2.5rem) / 2 * -1);margin-left:calc((4rem - 2.5rem) / 2 * -1);}/*!sc*/ -data-styled.g19[id="ThemeToggle__ThemeToggleWrapper-sc-1ezo9zi-0"]{content:"jYOvXV,"}/*!sc*/ +.dvzjVQ{width:4rem;height:4rem;color:var(--text-high-contrast);display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;margin-right:calc((4rem - 2.5rem) / 2 * -1);margin-left:calc((4rem - 2.5rem) / 2 * -1);}/*!sc*/ +data-styled.g15[id="ThemeToggle__ThemeToggleWrapper-sc-1ezo9zi-0"]{content:"dvzjVQ,"}/*!sc*/ .jybllC{position:absolute;-webkit-transform:translate(-50%,-50%);-ms-transform:translate(-50%,-50%);transform:translate(-50%,-50%);top:50%;left:50%;}/*!sc*/ -data-styled.g20[id="ThemeToggle__LightThemeSvg-sc-1ezo9zi-1"]{content:"jybllC,"}/*!sc*/ +data-styled.g16[id="ThemeToggle__LightThemeSvg-sc-1ezo9zi-1"]{content:"jybllC,"}/*!sc*/ .iAwzpn{position:absolute;-webkit-transform:translate(-50%,-50%);-ms-transform:translate(-50%,-50%);transform:translate(-50%,-50%);top:50%;left:50%;}/*!sc*/ -data-styled.g21[id="ThemeToggle__DarkThemeSvg-sc-1ezo9zi-2"]{content:"iAwzpn,"}/*!sc*/ +data-styled.g17[id="ThemeToggle__DarkThemeSvg-sc-1ezo9zi-2"]{content:"iAwzpn,"}/*!sc*/ +.grVbTO{width:100%;position:relative;}/*!sc*/ +.grVbTO:before{content:'';display:block;padding-bottom:100%;width:100%;}/*!sc*/ +data-styled.g18[id="SiteLogo__SiteLogoWrapper-sc-1by5cek-0"]{content:"grVbTO,"}/*!sc*/ +.hsoHuW{position:absolute;top:0;left:0;right:0;bottom:0;width:100%;height:100%;text-indent:100%;white-space:nowrap;overflow:hidden;z-index:1;}/*!sc*/ +data-styled.g19[id="SiteLogo__LogoLightImage-sc-1by5cek-1"]{content:"hsoHuW,"}/*!sc*/ +.ezAxcz{position:absolute;top:0;left:0;right:0;bottom:0;width:100%;height:100%;text-indent:100%;white-space:nowrap;overflow:hidden;z-index:1;}/*!sc*/ +data-styled.g20[id="SiteLogo__LogoDarkImage-sc-1by5cek-2"]{content:"ezAxcz,"}/*!sc*/ +.fbdSDH{position:absolute;top:0;left:0;right:0;bottom:0;width:100%;height:100%;text-indent:100%;white-space:nowrap;overflow:hidden;z-index:1;opacity:1;-webkit-transition:opacity 1s;transition:opacity 1s;}/*!sc*/ +data-styled.g21[id="SiteLogo__LogoLightIcon-sc-1by5cek-3"]{content:"fbdSDH,"}/*!sc*/ +.eYUXjC{position:absolute;top:0;left:0;right:0;bottom:0;width:100%;height:100%;text-indent:100%;white-space:nowrap;overflow:hidden;z-index:1;opacity:1;-webkit-transition:opacity 1s;transition:opacity 1s;}/*!sc*/ +data-styled.g22[id="SiteLogo__LogoDarkIcon-sc-1by5cek-4"]{content:"eYUXjC,"}/*!sc*/ html{font-family:'system-ui',-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Helvetica,Arial,sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol';-webkit-letter-spacing:-0.02rem;-moz-letter-spacing:-0.02rem;-ms-letter-spacing:-0.02rem;letter-spacing:-0.02rem;}/*!sc*/ html{font-family:'Inter var','system-ui',-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Helvetica,Arial,sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol';}/*!sc*/ html{box-sizing:border-box;line-height:1.15;-webkit-text-size-adjust:100%;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;}/*!sc*/ @@ -52,213 +56,127 @@ html{background-color:var(--background-site);font-size:62.5%;}/*!sc*/ body{background-color:var(--background-site);color:var(--text-high-contrast);font-size:1.6rem;line-height:1.65;}/*!sc*/ .theme-light{color-scheme:light;}/*!sc*/ -.theme-light .SiteLogo__LogoDarkIcon-sc-1by5cek-3,.theme-light .ThemeToggle__LightThemeSvg-sc-1ezo9zi-1{display:none;}/*!sc*/ +.theme-light .SiteLogo__LogoDarkIcon-sc-1by5cek-4,.theme-light .SiteLogo__LogoDarkImage-sc-1by5cek-2,.theme-light .ThemeToggle__LightThemeSvg-sc-1ezo9zi-1{display:none;}/*!sc*/ .theme-dark{color-scheme:dark;}/*!sc*/ -.theme-dark .SiteLogo__LogoLightIcon-sc-1by5cek-2,.theme-dark .ThemeToggle__DarkThemeSvg-sc-1ezo9zi-2{display:none;}/*!sc*/ -data-styled.g22[id="sc-global-dAorGo1"]{content:"sc-global-dAorGo1,"}/*!sc*/ +.theme-dark .SiteLogo__LogoLightIcon-sc-1by5cek-3,.theme-dark .SiteLogo__LogoLightImage-sc-1by5cek-1,.theme-dark .ThemeToggle__DarkThemeSvg-sc-1ezo9zi-2{display:none;}/*!sc*/ +data-styled.g23[id="sc-global-isqsKj1"]{content:"sc-global-isqsKj1,"}/*!sc*/ .VJxvo{margin-left:auto;margin-right:auto;padding-left:2.4rem;padding-right:2.4rem;max-width:144rem;width:100%;}/*!sc*/ -data-styled.g23[id="PageFrame__PageFrameWrapper-sc-1wyjdd4-0"]{content:"VJxvo,"}/*!sc*/ +data-styled.g24[id="PageFrame__PageFrameWrapper-sc-1wyjdd4-0"]{content:"VJxvo,"}/*!sc*/ .bYovFT{width:4rem;height:4rem;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;padding:0;margin-left:calc((4rem - 2.35rem) / 2 * -1);margin-right:calc((4rem - 2.35rem) / 2 * -1);}/*!sc*/ @media (min-width:992px){.bYovFT{display:none;}}/*!sc*/ -data-styled.g24[id="SiteNavigationToggle__SiteNavigationToggleWrapper-sc-1s6pnzu-0"]{content:"bYovFT,"}/*!sc*/ +data-styled.g25[id="SiteNavigationToggle__SiteNavigationToggleWrapper-sc-1s6pnzu-0"]{content:"bYovFT,"}/*!sc*/ .jFQrdI{position:relative;}/*!sc*/ .jFQrdI > span{background-color:var(--text-high-contrast);display:block;height:0.2rem;border-radius:0.2rem;position:relative;width:2.35rem;}/*!sc*/ .jFQrdI > span:before,.jFQrdI > span:after{background-color:var(--text-high-contrast);position:absolute;content:"";border-radius:0.2rem;display:block;height:100%;width:100%;}/*!sc*/ .jFQrdI > span:before{-webkit-transform:translateY(0.8rem);-ms-transform:translateY(0.8rem);transform:translateY(0.8rem);}/*!sc*/ .jFQrdI > span:after{-webkit-transform:translateY(-0.8rem);-ms-transform:translateY(-0.8rem);transform:translateY(-0.8rem);}/*!sc*/ -data-styled.g25[id="SiteNavigationToggle__Burger-sc-1s6pnzu-1"]{content:"jFQrdI,"}/*!sc*/ +data-styled.g26[id="SiteNavigationToggle__Burger-sc-1s6pnzu-1"]{content:"jFQrdI,"}/*!sc*/ .jyTvZQ{position:relative;display:-webkit-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}/*!sc*/ -data-styled.g26[id="LinkNavigation__LinkNavigationWrapper-sc-s1px90-0"]{content:"jyTvZQ,"}/*!sc*/ +data-styled.g27[id="LinkNavigation__LinkNavigationWrapper-sc-s1px90-0"]{content:"jyTvZQ,"}/*!sc*/ .fnBiqY{color:var(--text-medium-contrast);opacity:1;-webkit-transform:translateY(-50%);-ms-transform:translateY(-50%);transform:translateY(-50%);position:absolute;top:50%;left:0;right:0;}/*!sc*/ .fnBiqZ{color:var(--text-medium-contrast);opacity:0;-webkit-transform:translateY(-50%);-ms-transform:translateY(-50%);transform:translateY(-50%);position:absolute;top:50%;left:0;right:0;}/*!sc*/ -data-styled.g27[id="LinkNavigation__InactiveText-sc-s1px90-1"]{content:"fnBiqY,fnBiqZ,"}/*!sc*/ +data-styled.g28[id="LinkNavigation__InactiveText-sc-s1px90-1"]{content:"fnBiqY,fnBiqZ,"}/*!sc*/ .dMwfTH{opacity:0;font-weight:500;color:var(--brand-primary);background-image:linear-gradient( 45deg,var(--brand-primary),var(--brand-secondary) );background-clip:text;-webkit-background-clip:text;-webkit-text-fill-color:transparent;}/*!sc*/ .dMwfTG{opacity:1;font-weight:500;color:var(--brand-primary);background-image:linear-gradient( 45deg,var(--brand-primary),var(--brand-secondary) );background-clip:text;-webkit-background-clip:text;-webkit-text-fill-color:transparent;}/*!sc*/ -data-styled.g28[id="LinkNavigation__ActiveText-sc-s1px90-2"]{content:"dMwfTH,dMwfTG,"}/*!sc*/ -.eOqFPv{color:var(--brand-primary);background-image:linear-gradient( 45deg,var(--brand-primary),var(--brand-secondary) );background-clip:text;-webkit-background-clip:text;-webkit-text-fill-color:transparent;display:inline-block;font-weight:500;}/*!sc*/ -data-styled.g29[id="LinkContent__LinkContentWrapper-sc-1wcim9r-0"]{content:"eOqFPv,"}/*!sc*/ -.DocSearch-Container{z-index:30;position:fixed;top:0;right:0;bottom:0;left:0;}/*!sc*/ -.DocSearch-Container:before{position:absolute;opacity:0.9;background-color:var(--background-site);top:0;right:0;bottom:0;left:0;pointer-events:none;content:'';display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;}/*!sc*/ -.DocSearch-Container a{-webkit-text-decoration:none;text-decoration:none;}/*!sc*/ -.DocSearch-Modal{padding:1.2rem;box-shadow:0 0 0 0.1rem var(--detail-low-contrast);background-color:var(--background-site);z-index:1;position:relative;width:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;height:100vh;}/*!sc*/ -@media (min-width:992px){.DocSearch-Modal{border-radius:1.8rem;max-width:56rem;margin:6rem auto;height:calc(100vh - 6rem * 2);}}/*!sc*/ -.DocSearch-SearchBar{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex:0 0 auto;-ms-flex:0 0 auto;flex:0 0 auto;}/*!sc*/ -.DocSearch-Form{padding:0.2rem;position:relative;width:100%;border-radius:0.4rem;background-image:linear-gradient( 45deg,var(--brand-primary),var(--brand-secondary) );}/*!sc*/ -.DocSearch-NoResults,.DocSearch-StartScreen,.DocSearch-ErrorScreen{color:var(--text-low-contrast);padding:3.6rem 0;font-size:1.4rem;margin:0 auto;text-align:center;width:80%;}/*!sc*/ -.DocSearch-Screen-Icon{color:var(--detail-high-contrast);padding-bottom:1.2rem;}/*!sc*/ -.DocSearch-Screen-Icon > svg{width:4rem;height:4rem;}/*!sc*/ -.DocSearch-Title{color:var(--text-high-contrast);margin-bottom:1.8rem;font-size:1.8rem;}/*!sc*/ -.DocSearch-Help a{color:var(--brand-primary);background-image:linear-gradient( 45deg,var(--brand-primary),var(--brand-secondary) );background-clip:text;-webkit-background-clip:text;-webkit-text-fill-color:transparent;display:inline-block;font-weight:500;}/*!sc*/ -.DocSearch-Help a:focus{outline:0;}/*!sc*/ -.DocSearch-Dropdown{overflow-y:auto;overflow-x:hidden;-webkit-flex:1 1 0;-ms-flex:1 1 0;flex:1 1 0;}/*!sc*/ -.DocSearch-Help{font-size:1.4rem;margin:0;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;}/*!sc*/ -.DocSearch-Hits mark{color:var(--brand-primary);background-image:linear-gradient( 45deg,var(--brand-primary),var(--brand-secondary) );background-clip:text;-webkit-background-clip:text;-webkit-text-fill-color:transparent;}/*!sc*/ -.DocSearch-HitsFooter{color:var(--text-low-contrast);font-size:1.4rem;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;}/*!sc*/ -.DocSearch-HitsFooter a{padding-top:1.2rem;margin-bottom:1.2rem;border-bottom:0.1rem solid;color:inherit;display:-webkit-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-flex;}/*!sc*/ -.DocSearch-Hit{padding-bottom:0.4rem;border-radius:0.4rem;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;position:relative;}/*!sc*/ -@media screen and (prefers-reduced-motion:reduce){.DocSearch-Hit--deleting{-webkit-transition:none;transition:none;}}/*!sc*/ -.DocSearch-Hit--deleting{opacity:0;-webkit-transition:all 250ms linear;transition:all 250ms linear;}/*!sc*/ -@media screen and (prefers-reduced-motion:reduce){.DocSearch-Hit--favoriting{-webkit-transition:none;transition:none;}}/*!sc*/ -.DocSearch-Hit--favoriting{-webkit-transform:scale(0);-ms-transform:scale(0);transform:scale(0);-webkit-transform-origin:top center;-ms-transform-origin:top center;transform-origin:top center;-webkit-transition:all 250ms linear;transition:all 250ms linear;-webkit-transition-delay:250ms;transition-delay:250ms;}/*!sc*/ -.DocSearch-Hit a{outline-offset:-0.2rem;background-color:var(--background-code);padding-left:1.2rem;border-radius:0.4rem;display:block;width:100%;}/*!sc*/ -.DocSearch-Hit a:focus{outline:0;}/*!sc*/ -.DocSearch-Hit-source{background-color:var(--background-site);color:var(--text-high-contrast);margin:0 -0.4rem;padding:0.8rem 0.4rem 0;font-size:1.4rem;font-weight:600;line-height:3.2rem;position:-webkit-sticky;position:sticky;top:0;z-index:10;}/*!sc*/ -@media (max-width:991px){.DocSearch-Hit-Tree{display:none;}}/*!sc*/ -@media (min-width:992px){.DocSearch-Hit-Tree{color:var(--detail-high-contrast);height:5.4rem;opacity:0.5;stroke-width:0.14rem;width:2.4rem;}}/*!sc*/ -.DocSearch-Hit[aria-selected='true'] a{position:relative;display:block;}/*!sc*/ -.DocSearch-Hit[aria-selected='true'] a:before,.DocSearch-Hit[aria-selected='true'] a:after{content:'';position:absolute;pointer-events:none;top:0;bottom:0;left:0;background-image:linear-gradient( 45deg,var(--brand-primary),var(--brand-secondary) );}/*!sc*/ -.DocSearch-Hit[aria-selected='true'] a:before{width:0.4rem;}/*!sc*/ -.DocSearch-Hit[aria-selected='true'] a:after{border-radius:0.4rem;right:0;opacity:0.07;}/*!sc*/ -.DocSearch-Hit-Container{color:var(--text-medium-contrast);height:5.4rem;padding:0 1.2rem 0 0;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;}/*!sc*/ -.DocSearch-Hit-icon{width:2rem;height:2rem;color:var(--detail-high-contrast);stroke-width:0.14rem;}/*!sc*/ -.DocSearch-Hit-action{width:2.2rem;height:2.2rem;color:var(--detail-high-contrast);stroke-width:0.14rem;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;}/*!sc*/ -.DocSearch-Hit-action > svg{width:1.8rem;height:1.8rem;display:block;}/*!sc*/ -.DocSearch-Hit-action + .DocSearch-Hit-action{margin-left:0.6rem;}/*!sc*/ -.DocSearch-Hit-action-button{-webkit-tap-highlight-color:rgba( var(--text-high-contrast-rgb-value),0.5 );color:var(--text-body);outline-offset:-0.2rem;-webkit-appearance:none;-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:transparent;touch-action:manipulation;display:-webkit-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-flex;-webkit-text-decoration:none;text-decoration:none;cursor:pointer;border:0;padding:0;margin:0;color:inherit;padding:0.2rem;}/*!sc*/ -.DocSearch-Hit-action-button:focus{outline:0;}/*!sc*/ -svg.DocSearch-Hit-Select-Icon{display:none;}/*!sc*/ -.DocSearch-Hit[aria-selected='true'] .DocSearch-Hit-Select-Icon{display:block;}/*!sc*/ -.DocSearch-Hit-action-button:hover path,.DocSearch-Hit-action-button:focus path{fill:var(--text-medium-contrast);}/*!sc*/ -.DocSearch-Hit-content-wrapper{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex:1 1 auto;-ms-flex:1 1 auto;flex:1 1 auto;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;font-weight:500;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;line-height:1.2em;margin:0 0.8rem;overflow-x:hidden;position:relative;text-overflow:ellipsis;white-space:nowrap;width:80%;}/*!sc*/ -.DocSearch-Hit-title{font-size:1.44rem;}/*!sc*/ -.DocSearch-Hit-path{color:var(--text-low-contrast);font-size:1.2rem;}/*!sc*/ -.DocSearch-Hit[aria-selected='true'] .DocSearch-Hit-title,.DocSearch-Hit[aria-selected='true'] mark,.DocSearch-Hit[aria-selected='true'] .DocSearch-Hit-text,.DocSearch-Hit[aria-selected='true'] .DocSearch-Hit-path,.DocSearch-Hit[aria-selected='true'] .DocSearch-Hit-icon,.DocSearch-Hit[aria-selected='true'] .DocSearch-Hit-action,.DocSearch-Hit[aria-selected='true'] .DocSearch-Hit-Tree{color:var(--text-high-contrast) !important;}/*!sc*/ -.DocSearch-NoResults-Prefill-List{padding-bottom:1.8rem;}/*!sc*/ -.DocSearch-NoResults-Prefill-List > ul{padding-top:0.6rem;font-size:1.4rem;display:inline-block;}/*!sc*/ -.DocSearch-NoResults-Prefill-List li{color:var(--text-high-contrast);list-style-position:inside;list-style-type:'» ';text-align:left;}/*!sc*/ -.DocSearch-Prefill{-webkit-tap-highlight-color:rgba( var(--text-high-contrast-rgb-value),0.5 );color:var(--text-body);outline-offset:-0.2rem;-webkit-appearance:none;-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:transparent;touch-action:manipulation;display:-webkit-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-flex;-webkit-text-decoration:none;text-decoration:none;cursor:pointer;border:0;padding:0;margin:0;color:var(--brand-primary);background-image:linear-gradient( 45deg,var(--brand-primary),var(--brand-secondary) );background-clip:text;-webkit-background-clip:text;-webkit-text-fill-color:transparent;display:inline-block;font-weight:500;padding-top:0.6rem;padding-bottom:0.6rem;}/*!sc*/ -.DocSearch-Prefill:focus{outline:0;}/*!sc*/ -.DocSearch-Footer{-webkit-flex:0 0 auto;-ms-flex:0 0 auto;flex:0 0 auto;padding-top:1.2rem;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row-reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse;-webkit-flex-shrink:0;-ms-flex-negative:0;flex-shrink:0;width:100%;-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}/*!sc*/ -.DocSearch-Logo a{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;}/*!sc*/ -.DocSearch-Logo a:focus{outline:0;}/*!sc*/ -.DocSearch-Logo svg{color:#5468ff;margin-left:0.8rem;}/*!sc*/ -.DocSearch-Label{color:var(--text-low-contrast);font-size:1.2rem;line-height:1.9rem;}/*!sc*/ -.DocSearch-Commands{color:var(--text-low-contrast);display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;list-style:none;margin:0;padding:0;}/*!sc*/ -@media (max-width:991px){.DocSearch-Commands{display:none;}}/*!sc*/ -.DocSearch-Commands li{-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;}/*!sc*/ -.DocSearch-Commands li:not(:last-of-type){margin-right:0.8rem;}/*!sc*/ -.DocSearch-Commands-Key{-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;border-radius:0.2rem;background:linear-gradient( -225deg,var(--detail-medium-contrast) 0%,var(--detail-high-contrast) 100% );box-shadow:inset 0 -0.2rem 0 0 var(--detail-low-contrast);,inset 0 0 0.1rem 0.1rem var(--detail-medium-contrast),0 0.1rem 0.2rem 0.1rem rgba(var(--detail-high-contrast-rgb-value),0.4);display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;height:1.8rem;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;margin-right:0.4em;padding-bottom:0.1rem;width:2rem;}/*!sc*/ -.theme-light .DocSearch-Commands-Key{background:linear-gradient( -225deg,var(--detail-high-contrast) 0%,var(--detail-medium-contrast) 100% );box-shadow:inset 0 -0.2rem 0 0 var(--detail-high-contrast),inset 0 0 0.1rem 0.1rem var(--detail-medium-contrast),0 0.1rem 0.2rem 0.1rem rgba(var(--detail-low-contrast-rgb-value),0.4);}/*!sc*/ -.theme-dark .DocSearch-Commands-Key{background:linear-gradient( -225deg,var(--detail-medium-contrast) 0%,var(--detail-high-contrast) 100% );box-shadow:inset 0 -0.2rem 0 0 var(--detail-low-contrast);,inset 0 0 0.1rem 0.1rem var(--detail-medium-contrast),0 0.1rem 0.2rem 0.1rem rgba(var(--detail-high-contrast-rgb-value),0.4);}/*!sc*/ -.DocSearch-Input{height:calc(5.4rem - (0.2rem * 2));padding-left:4.8rem;padding-right:4.8rem;-webkit-appearance:none;-webkit-appearance:none;-moz-appearance:none;appearance:none;border-radius:0.4rem;width:100%;font-size:1.8rem;background-color:var(--background-site);color:var(--text-body);border:0;}/*!sc*/ -.DocSearch-Input::-webkit-input-placeholder{color:var(--text-low-contrast);}/*!sc*/ -.DocSearch-Input:-moz-placeholder{color:var(--text-low-contrast);opacity:1;}/*!sc*/ -.DocSearch-Input::-moz-placeholder{color:var(--text-low-contrast);opacity:1;}/*!sc*/ -.DocSearch-Input:-ms-input-placeholder{color:var(--text-low-contrast);}/*!sc*/ -.DocSearch-Input::-ms-input-placeholder{color:var(--text-low-contrast);}/*!sc*/ -.DocSearch-Input::-webkit-input-placeholder{color:var(--text-low-contrast);}/*!sc*/ -.DocSearch-Input::-moz-placeholder{color:var(--text-low-contrast);}/*!sc*/ -.DocSearch-Input:-ms-input-placeholder{color:var(--text-low-contrast);}/*!sc*/ -.DocSearch-Input::placeholder{color:var(--text-low-contrast);}/*!sc*/ -.DocSearch-Input:focus{outline:0;}/*!sc*/ -.DocSearch-Input::-ms-clear{display:none;width:0;height:0;}/*!sc*/ -.DocSearch-Input::-ms-reveal{display:none;width:0;height:0;}/*!sc*/ -.DocSearch-Input::-webkit-search-decoration,.DocSearch-Input::-webkit-search-cancel-button,.DocSearch-Input::-webkit-search-results-button,.DocSearch-Input::-webkit-search-results-decoration{display:none;}/*!sc*/ -.DocSearch-VisuallyHiddenForAccessibility{border:0;padding:0;-webkit-clip:rect(0 0 0 0);clip:rect(0 0 0 0);width:1px;height:1px;margin:-1px;overflow:hidden;position:absolute;}/*!sc*/ -.DocSearch-Button{width:4rem;height:4rem;-webkit-tap-highlight-color:rgba( var(--text-high-contrast-rgb-value),0.5 );color:var(--text-body);outline-offset:-0.2rem;-webkit-appearance:none;-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:transparent;touch-action:manipulation;display:-webkit-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-flex;-webkit-text-decoration:none;text-decoration:none;cursor:pointer;border:0;padding:0;margin:0;border-radius:0;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;margin-right:-0.75rem;margin-left:-0.75rem;}/*!sc*/ -.DocSearch-Button:focus{outline:0;}/*!sc*/ -.DocSearch-Button:hover{box-shadow:none;}/*!sc*/ -.DocSearch-Button-Placeholder,.DocSearch-Button-Keys{border:0;padding:0;-webkit-clip:rect(0 0 0 0);clip:rect(0 0 0 0);width:1px;height:1px;margin:-1px;overflow:hidden;position:absolute;}/*!sc*/ -.DocSearch-Search-Icon{width:2.35rem;height:2.35rem;color:var(--text-high-contrast);stroke-width:0.2rem;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;}/*!sc*/ -.DocSearch-MagnifierLabel{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;width:4.8rem;top:0.2rem;bottom:0.2rem;position:absolute;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;}/*!sc*/ -.DocSearch-MagnifierLabel > svg{width:2.35rem;height:2.35rem;}/*!sc*/ -.DocSearch-Container--Stalled .DocSearch-MagnifierLabel{display:none;}/*!sc*/ -.DocSearch-Reset{-webkit-tap-highlight-color:rgba( var(--text-high-contrast-rgb-value),0.5 );color:var(--text-body);outline-offset:-0.2rem;-webkit-appearance:none;-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:transparent;touch-action:manipulation;display:-webkit-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-flex;-webkit-text-decoration:none;text-decoration:none;cursor:pointer;border:0;padding:0;margin:0;width:4.8rem;top:0.2rem;bottom:0.2rem;right:0.2rem;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;position:absolute;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;stroke-width:0.2rem;color:var(--text-high-contrast);}/*!sc*/ -.DocSearch-Reset:focus{outline:0;}/*!sc*/ -.DocSearch-Reset > svg{width:2.35rem;height:2.35rem;}/*!sc*/ -.DocSearch-Reset[hidden]{display:none;}/*!sc*/ -.DocSearch-Cancel{-webkit-tap-highlight-color:rgba( var(--text-high-contrast-rgb-value),0.5 );color:var(--text-body);outline-offset:-0.2rem;-webkit-appearance:none;-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:transparent;touch-action:manipulation;display:-webkit-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-flex;-webkit-text-decoration:none;text-decoration:none;cursor:pointer;border:0;padding:0;margin:0;color:var(--text-body);height:5.4rem;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin-left:1rem;}/*!sc*/ -.DocSearch-Cancel:focus{outline:0;}/*!sc*/ -.DocSearch-LoadingIndicator{width:4.8rem;top:0.2rem;bottom:0.2rem;position:absolute;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;color:var(--text-high-contrast);display:none;}/*!sc*/ -.DocSearch-LoadingIndicator > svg{width:2.35rem;height:2.35rem;}/*!sc*/ -.DocSearch-Container--Stalled .DocSearch-LoadingIndicator{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;}/*!sc*/ -data-styled.g30[id="sc-global-ktinNA1"]{content:"sc-global-ktinNA1,"}/*!sc*/ +data-styled.g29[id="LinkNavigation__ActiveText-sc-s1px90-2"]{content:"dMwfTH,dMwfTG,"}/*!sc*/ +.efrqJt{width:4rem;height:4rem;-webkit-tap-highlight-color:rgba( var(--text-high-contrast-rgb-value),0.5 );color:var(--text-body);outline-offset:-0.2rem;-webkit-appearance:none;-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:transparent;touch-action:manipulation;display:-webkit-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-flex;-webkit-text-decoration:none;text-decoration:none;cursor:pointer;border:0;padding:0;margin:0;border-radius:0;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;margin-right:-0.75rem;margin-left:-0.75rem;}/*!sc*/ +.efrqJt:focus{outline:0;}/*!sc*/ +data-styled.g30[id="SearchButton-sc-81avqx-0"]{content:"efrqJt,"}/*!sc*/ +.gENBSh{width:2.35rem;height:2.35rem;color:var(--text-high-contrast);stroke-width:0.2rem;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;}/*!sc*/ +data-styled.g31[id="SearchButton__SearchButtonIcon-sc-81avqx-1"]{content:"gENBSh,"}/*!sc*/ .fHRfHW{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;line-height:1.65;}/*!sc*/ @media (min-width:992px){.fHRfHW{margin-left:-2.8rem;}.fHRfHW > li{padding-left:2.8rem;}}/*!sc*/ -data-styled.g31[id="HeaderActions__HeaderActionsWrapper-sc-1t1xtjg-0"]{content:"fHRfHW,"}/*!sc*/ +data-styled.g32[id="HeaderActions__HeaderActionsWrapper-sc-1t1xtjg-0"]{content:"fHRfHW,"}/*!sc*/ .inoOYA{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}/*!sc*/ @media (max-width:991px){.inoOYA{display:none;}}/*!sc*/ .jtPVpq{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}/*!sc*/ -data-styled.g32[id="HeaderActions__Item-sc-1t1xtjg-1"]{content:"inoOYA,jtPVpq,"}/*!sc*/ +data-styled.g33[id="HeaderActions__Item-sc-1t1xtjg-1"]{content:"inoOYA,jtPVpq,"}/*!sc*/ .fbzQRa{color:var(--text-medium-contrast);display:-webkit-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-flex;text-align:center;padding:0.6rem 0;}/*!sc*/ -data-styled.g33[id="HeaderActions__Link-sc-1t1xtjg-2"]{content:"fbzQRa,"}/*!sc*/ +data-styled.g34[id="HeaderActions__Link-sc-1t1xtjg-2"]{content:"fbzQRa,"}/*!sc*/ .jzZdsp{color:var(--text-high-contrast);font-size:1.8rem;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-text-decoration:none;text-decoration:none;line-height:1;font-weight:900;}/*!sc*/ @media (min-width:350px){.jzZdsp{font-size:2rem;}}/*!sc*/ -data-styled.g34[id="HeaderLogo__HeaderLogoWrapper-sc-uplq8s-0"]{content:"jzZdsp,"}/*!sc*/ -.cZXjI{width:4rem;height:4rem;border:0.1rem solid var(--detail-low-contrast);border-radius:50%;margin-right:0.8rem;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;}/*!sc*/ -@media (min-width:350px){.cZXjI{width:4.4rem;height:4.4rem;}}/*!sc*/ -.cZXjI > .SiteLogo__LogoImage-sc-1by5cek-1,.cZXjI > .SiteLogo__LogoLightIcon-sc-1by5cek-2,.cZXjI > .SiteLogo__LogoDarkIcon-sc-1by5cek-3{width:100%;height:100%;padding:0.6rem;}/*!sc*/ -data-styled.g35[id="HeaderLogo__HeaderLogoImage-sc-uplq8s-1"]{content:"cZXjI,"}/*!sc*/ +data-styled.g35[id="HeaderLogo__HeaderLogoWrapper-sc-uplq8s-0"]{content:"jzZdsp,"}/*!sc*/ +.fLTAlZ{width:4rem;height:4rem;border:0.1rem solid var(--detail-low-contrast);border-radius:50%;margin-right:0.8rem;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;}/*!sc*/ +@media (min-width:350px){.fLTAlZ{width:4.4rem;height:4.4rem;}}/*!sc*/ +.fLTAlZ > .SiteLogo__LogoLightImage-sc-1by5cek-1,.fLTAlZ > .SiteLogo__LogoDarkImage-sc-1by5cek-2,.fLTAlZ > .SiteLogo__LogoLightIcon-sc-1by5cek-3,.fLTAlZ > .SiteLogo__LogoDarkIcon-sc-1by5cek-4{width:100%;height:100%;padding:0.6rem;}/*!sc*/ +data-styled.g36[id="HeaderLogo__HeaderLogoImage-sc-uplq8s-1"]{content:"fLTAlZ,"}/*!sc*/ +.klWFXk{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;}/*!sc*/ +data-styled.g37[id="HeaderLogo__HeaderLogoText-sc-uplq8s-2"]{content:"klWFXk,"}/*!sc*/ .ktrKyg{height:6rem;}/*!sc*/ -data-styled.g36[id="Header__HeaderWrapper-sc-gjabfz-0"]{content:"ktrKyg,"}/*!sc*/ +data-styled.g38[id="Header__HeaderWrapper-sc-gjabfz-0"]{content:"ktrKyg,"}/*!sc*/ .bxlpFx{height:6rem;z-index:20;background-color:rgba(var(--background-site-rgb-value),0.8);border-bottom:0.1rem solid var(--detail-low-contrast);-webkit-backdrop-filter:saturate(180%) blur(5px);backdrop-filter:saturate(180%) blur(5px);position:fixed;top:0;left:0;right:0;}/*!sc*/ @media (min-width:992px){.bxlpFx{z-index:11;}}/*!sc*/ -data-styled.g37[id="Header__Fixed-sc-gjabfz-1"]{content:"bxlpFx,"}/*!sc*/ +data-styled.g39[id="Header__Fixed-sc-gjabfz-1"]{content:"bxlpFx,"}/*!sc*/ .hUHISz{height:6rem;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between;}/*!sc*/ -data-styled.g38[id="Header__Content-sc-gjabfz-2"]{content:"hUHISz,"}/*!sc*/ +data-styled.g40[id="Header__Content-sc-gjabfz-2"]{content:"hUHISz,"}/*!sc*/ .bxxOvm{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:flex-start;-webkit-box-align:flex-start;-ms-flex-align:flex-start;align-items:flex-start;text-align:left;}/*!sc*/ .bxxOvm > :first-child{margin-right:1rem;}/*!sc*/ .kbZvVW{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:flex-start;-webkit-box-align:flex-start;-ms-flex-align:flex-start;align-items:flex-start;text-align:left;}/*!sc*/ .kbZvVW > :first-child{margin-right:1.2rem;}/*!sc*/ .kbZxwH{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:flex-start;-webkit-box-align:flex-start;-ms-flex-align:flex-start;align-items:flex-start;text-align:left;}/*!sc*/ .kbZxwH > :first-child{margin-right:0.6rem;}/*!sc*/ -data-styled.g39[id="IconWithText__IconWithTextWrapper-sc-1vm2nih-0"]{content:"bxxOvm,kbZvVW,kbZxwH,"}/*!sc*/ +data-styled.g41[id="IconWithText__IconWithTextWrapper-sc-1vm2nih-0"]{content:"bxxOvm,kbZvVW,kbZxwH,"}/*!sc*/ .izCUwE{position:relative;width:1.8rem;}/*!sc*/ .izCUwE:before{width:1.8rem;content:'-';display:inline-block;line-height:inherit;opacity:0;}/*!sc*/ .jdFcCg{position:relative;width:1.5rem;}/*!sc*/ .jdFcCg:before{width:1.5rem;content:'-';display:inline-block;line-height:inherit;opacity:0;}/*!sc*/ -data-styled.g40[id="IconWithText__IconWrapper-sc-1vm2nih-1"]{content:"izCUwE,jdFcCg,"}/*!sc*/ +data-styled.g42[id="IconWithText__IconWrapper-sc-1vm2nih-1"]{content:"izCUwE,jdFcCg,"}/*!sc*/ .kffCIb{position:absolute;top:50%;left:50%;-webkit-transform:translate(-50%,-50%);-ms-transform:translate(-50%,-50%);transform:translate(-50%,-50%);}/*!sc*/ -data-styled.g41[id="IconWithText__IconWithTextIcon-sc-1vm2nih-2"]{content:"kffCIb,"}/*!sc*/ +data-styled.g43[id="IconWithText__IconWithTextIcon-sc-1vm2nih-2"]{content:"kffCIb,"}/*!sc*/ .filkrT{margin-left:-3rem;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;}/*!sc*/ .filkrT > li{padding-left:3rem;}/*!sc*/ -data-styled.g43[id="FooterLinks__FooterLinksWrapper-sc-os18h2-0"]{content:"filkrT,"}/*!sc*/ +data-styled.g45[id="FooterLinks__FooterLinksWrapper-sc-os18h2-0"]{content:"filkrT,"}/*!sc*/ .bABRhQ{margin-right:-0.2rem;padding:0.6rem 0.2rem;outline-offset:-0.2rem;color:var(--text-low-contrast);display:-webkit-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}/*!sc*/ -data-styled.g44[id="FooterLinks__Link-sc-os18h2-1"]{content:"bABRhQ,"}/*!sc*/ +data-styled.g46[id="FooterLinks__Link-sc-os18h2-1"]{content:"bABRhQ,"}/*!sc*/ .kTknvC{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;line-height:1.65;}/*!sc*/ @media (max-width:991px){.kTknvC{border-bottom:0.1rem solid var(--detail-medium-contrast);}}/*!sc*/ -data-styled.g45[id="SiteNavigationSubMenu__SiteNavigationSubMenuWrapper-sc-3daay4-0"]{content:"kTknvC,"}/*!sc*/ +data-styled.g47[id="SiteNavigationSubMenu__SiteNavigationSubMenuWrapper-sc-3daay4-0"]{content:"kTknvC,"}/*!sc*/ .gLdewK{font-weight:600;color:var(--text-body);padding:0.6rem 0 0.6rem calc(0.8rem + 1.2rem);margin:0 0;position:relative;line-height:inherit;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;text-align:left;width:100%;text-transform:uppercase;}/*!sc*/ @media (max-width:991px){.gLdewK{padding:1.2rem 0 1.2rem calc(0.8rem + 1.2rem);}}/*!sc*/ .hJCacM{font-weight:600;color:var(--text-body);padding:0.6rem 0 0.6rem calc(0.8rem + 1.2rem);margin:0 0;position:relative;line-height:inherit;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;text-align:left;width:100%;text-transform:uppercase;}/*!sc*/ .hJCacM > span{color:var(--brand-primary);background-image:linear-gradient( 45deg,var(--brand-primary),var(--brand-secondary) );background-clip:text;-webkit-background-clip:text;-webkit-text-fill-color:transparent;}/*!sc*/ @media (max-width:991px){.hJCacM{padding:1.2rem 0 1.2rem calc(0.8rem + 1.2rem);}}/*!sc*/ -data-styled.g46[id="SiteNavigationSubMenu__Toggle-sc-3daay4-1"]{content:"gLdewK,hJCacM,"}/*!sc*/ +data-styled.g48[id="SiteNavigationSubMenu__Toggle-sc-3daay4-1"]{content:"gLdewK,hJCacM,"}/*!sc*/ .jdBnBv{color:var(--text-low-contrast);position:absolute;left:0;top:0;bottom:0;margin:auto;}/*!sc*/ .dgfeQo{-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg);color:var(--text-low-contrast);position:absolute;left:0;top:0;bottom:0;margin:auto;}/*!sc*/ -data-styled.g47[id="SiteNavigationSubMenu__ToggleSvg-sc-3daay4-2"]{content:"jdBnBv,dgfeQo,"}/*!sc*/ +data-styled.g49[id="SiteNavigationSubMenu__ToggleSvg-sc-3daay4-2"]{content:"jdBnBv,dgfeQo,"}/*!sc*/ .flpdXM{height:0px;overflow:hidden;visibility:hidden;padding-left:calc(0.8rem + 2.4rem);position:relative;}/*!sc*/ @media (max-width:991px){}/*!sc*/ @media (min-width:992px){.flpdXM:before{content:'';position:absolute;top:0;left:0.3rem;width:0.1rem;bottom:0;background-color:var(--detail-medium-contrast);}}/*!sc*/ .jANcOA{padding-left:calc(0.8rem + 2.4rem);position:relative;}/*!sc*/ @media (max-width:991px){.jANcOA{margin-top:-0.6rem;padding-bottom:1.2rem;}}/*!sc*/ @media (min-width:992px){.jANcOA:before{content:'';position:absolute;top:0;left:0.3rem;width:0.1rem;bottom:0;background-color:var(--detail-medium-contrast);}}/*!sc*/ -data-styled.g48[id="SiteNavigationSubMenu__Menu-sc-3daay4-3"]{content:"flpdXM,jANcOA,"}/*!sc*/ +data-styled.g50[id="SiteNavigationSubMenu__Menu-sc-3daay4-3"]{content:"flpdXM,jANcOA,"}/*!sc*/ .cNsKeQ{margin:0 0;text-align:left;padding:0.6rem 0;}/*!sc*/ .cNsKeQ > .LinkNavigation__InactiveText-sc-s1px90-1{color:var(--text-low-contrast);}/*!sc*/ -data-styled.g49[id="SiteNavigationSubMenu__Link-sc-3daay4-4"]{content:"cNsKeQ,"}/*!sc*/ +data-styled.g51[id="SiteNavigationSubMenu__Link-sc-3daay4-4"]{content:"cNsKeQ,"}/*!sc*/ .dQSFRC{background-color:var(--background-site);position:relative;height:100%;}/*!sc*/ .dQSFRC:before,.dQSFRC:after{position:absolute;z-index:1;left:-2.4rem;right:-2.4rem;content:'';}/*!sc*/ .dQSFRC:before{height:3.2rem;box-shadow:0 1.2rem 1.6rem var(--background-site);pointer-events:none;top:-3.2rem;}/*!sc*/ .dQSFRC:after{height:3.2rem;box-shadow:0 -1.2rem 1.6rem var(--background-site);pointer-events:none;bottom:-3.2rem;}/*!sc*/ @media (max-width:991px){.dQSFRC{display:none;}}/*!sc*/ -data-styled.g50[id="SiteNavigationMenuDesktop__SiteNavigationMenuDesktopWrapper-sc-cnmu2w-0"]{content:"dQSFRC,"}/*!sc*/ +data-styled.g52[id="SiteNavigationMenuDesktop__SiteNavigationMenuDesktopWrapper-sc-cnmu2w-0"]{content:"dQSFRC,"}/*!sc*/ .kehVgt{padding-top:2.4rem;padding-bottom:2.4rem;overflow:auto;max-height:100%;}/*!sc*/ .kehVgt::-webkit-scrollbar-thumb{background-color:transparent;border-radius:0.4rem;}/*!sc*/ .kehVgt::-webkit-scrollbar-track{background-color:transparent;}/*!sc*/ .kehVgt::-webkit-scrollbar{width:0.6rem;}/*!sc*/ .kehVgt:hover::-webkit-scrollbar-thumb{background-color:var(--detail-medium-contrast);}/*!sc*/ @media (hover:none),(hover:on-demand){.kehVgt:hover::-webkit-scrollbar-thumb{background-color:transparent;}.kehVgt::-webkit-scrollbar{width:0;}}/*!sc*/ -data-styled.g51[id="SiteNavigationMenuDesktop__ScrollArea-sc-cnmu2w-1"]{content:"kehVgt,"}/*!sc*/ +data-styled.g53[id="SiteNavigationMenuDesktop__ScrollArea-sc-cnmu2w-1"]{content:"kehVgt,"}/*!sc*/ .iIIXKy{padding-top:1.8rem;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;}/*!sc*/ -data-styled.g52[id="SiteNavigationMenuDesktop__MiscLinks-sc-cnmu2w-2"]{content:"iIIXKy,"}/*!sc*/ +data-styled.g54[id="SiteNavigationMenuDesktop__MiscLinks-sc-cnmu2w-2"]{content:"iIIXKy,"}/*!sc*/ +.gOCpwb{position:fixed;}/*!sc*/ +@media (max-width:991px){.gOCpwb{z-index:10;top:0;right:0;bottom:0;left:0;-webkit-transform:translateX(-100%);-ms-transform:translateX(-100%);transform:translateX(-100%);visibility:hidden;}}/*!sc*/ +@media (min-width:992px){.gOCpwb{width:inherit;max-width:inherit;top:6rem;bottom:0;}}/*!sc*/ +@media (min-width:1200px){.gOCpwb{padding-right:4.2rem;}}/*!sc*/ +data-styled.g55[id="SiteNavigation__SiteNavigationWrapper-sc-d38nhn-0"]{content:"gOCpwb,"}/*!sc*/ .fEopPh{padding-top:0.2rem;padding-bottom:0.2rem;outline-offset:-0.2rem;}/*!sc*/ .hJAMlH{padding-top:0.2rem;padding-bottom:0.2rem;outline-offset:-0.2rem;}/*!sc*/ .hJAMlH > .LinkNavigation__InactiveText-sc-s1px90-1{color:var(--text-low-contrast);}/*!sc*/ -data-styled.g53[id="TableOfContentsMenuItem__Link-sc-1c5uz5d-0"]{content:"fEopPh,hJAMlH,"}/*!sc*/ +data-styled.g56[id="TableOfContentsMenuItem__Link-sc-1c5uz5d-0"]{content:"fEopPh,hJAMlH,"}/*!sc*/ .cqONOa{padding-left:0;list-style:none;}/*!sc*/ .jyGdXV{padding-left:1.6rem;list-style:none;}/*!sc*/ -data-styled.g54[id="TableOfContentsMenuItems__TableOfContentsMenuItemsWrapper-sc-1btg4j2-0"]{content:"cqONOa,jyGdXV,"}/*!sc*/ +data-styled.g57[id="TableOfContentsMenuItems__TableOfContentsMenuItemsWrapper-sc-1btg4j2-0"]{content:"cqONOa,jyGdXV,"}/*!sc*/ .gjfqFR{overflow:auto;position:relative;max-height:100%;}/*!sc*/ .gjfqFR::-webkit-scrollbar-thumb{background-color:transparent;border-radius:0.4rem;}/*!sc*/ .gjfqFR::-webkit-scrollbar-track{background-color:transparent;}/*!sc*/ @@ -266,142 +184,108 @@ .gjfqFR:hover::-webkit-scrollbar-thumb{background-color:var(--detail-medium-contrast);}/*!sc*/ @media (hover:none),(hover:on-demand){.gjfqFR:hover::-webkit-scrollbar-thumb{background-color:transparent;}.gjfqFR::-webkit-scrollbar{width:0;}}/*!sc*/ @media (min-width:992px){.gjfqFR{padding-top:2.4rem;padding-bottom:2.4rem;}}/*!sc*/ -data-styled.g55[id="TableOfContentsMenu__TableOfContentsMenuWrapper-sc-1op87za-0"]{content:"gjfqFR,"}/*!sc*/ +data-styled.g58[id="TableOfContentsMenu__TableOfContentsMenuWrapper-sc-1op87za-0"]{content:"gjfqFR,"}/*!sc*/ .fQMncW{color:var(--text-body);padding-top:0.6rem;padding-bottom:1.2rem;font-weight:600;text-transform:uppercase;}/*!sc*/ @media (max-width:991px){.fQMncW{padding-top:1.2rem;border-bottom:0.1rem solid var(--detail-low-contrast);margin-bottom:1.2rem;}}/*!sc*/ -data-styled.g56[id="TableOfContentsMenu__Heading-sc-1op87za-1"]{content:"fQMncW,"}/*!sc*/ +data-styled.g59[id="TableOfContentsMenu__Heading-sc-1op87za-1"]{content:"fQMncW,"}/*!sc*/ @media (min-width:992px){.ebOUHg{position:fixed;z-index:10;top:6rem;bottom:0;width:inherit;max-width:inherit;}}/*!sc*/ @media (min-width:1200px){.ebOUHg{padding-left:4.2rem;}}/*!sc*/ -data-styled.g57[id="TableOfContents__TableOfContentsWrapper-sc-11n47el-0"]{content:"ebOUHg,"}/*!sc*/ +data-styled.g60[id="TableOfContents__TableOfContentsWrapper-sc-11n47el-0"]{content:"ebOUHg,"}/*!sc*/ .ieAuIB{height:100%;}/*!sc*/ @media (min-width:992px){.ieAuIB:before,.ieAuIB:after{position:absolute;z-index:1;left:-2.4rem;right:-2.4rem;content:'';}.ieAuIB:before{height:3.2rem;box-shadow:0 1.2rem 1.6rem var(--background-site);pointer-events:none;top:-3.2rem;}.ieAuIB:after{height:3.2rem;box-shadow:0 -1.2rem 1.6rem var(--background-site);pointer-events:none;bottom:-3.2rem;}}/*!sc*/ -data-styled.g58[id="TableOfContents__MenuWrapper-sc-11n47el-1"]{content:"ieAuIB,"}/*!sc*/ -.eHxtzy:focus{outline:0;}/*!sc*/ -data-styled.g59[id="TabsPanel__TabsPanelWrapper-sc-1ihsh9r-0"]{content:"eHxtzy,"}/*!sc*/ -.hgrjbP{padding:1.2rem 1.2rem;position:relative;display:-webkit-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;position:relative;}/*!sc*/ -.hgrjbP:disabled > .ButtonBare__ButtonBareText-sc-1pf4eqw-1 > .LinkNavigation__InactiveText-sc-s1px90-1{color:var(--detail-high-contrast);}/*!sc*/ -.hgrjbP:after{background-image:linear-gradient( 45deg,var(--brand-primary),var(--brand-secondary) );z-index:1;content:'';position:absolute;left:0;right:0;bottom:0;height:0.3rem;pointer-events:none;}/*!sc*/ -.cseKhV{padding:1.2rem 1.2rem;position:relative;display:-webkit-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;position:relative;}/*!sc*/ -.cseKhV:disabled > .ButtonBare__ButtonBareText-sc-1pf4eqw-1 > .LinkNavigation__InactiveText-sc-s1px90-1{color:var(--detail-high-contrast);}/*!sc*/ -data-styled.g60[id="TabsButton__TabsButtonWrapper-sc-1e7ypyu-0"]{content:"hgrjbP,cseKhV,"}/*!sc*/ -.fA-dda{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;position:relative;margin-bottom:calc(2.4rem - 0.6rem);overflow:hidden;}/*!sc*/ -.fA-dda:after{position:absolute;content:'';height:0.1rem;background-color:var(--detail-low-contrast);width:100%;display:block;bottom:calc(0.6rem - 0.1rem);z-index:1;}/*!sc*/ -@media (hover:none),(hover:on-demand){.fA-dda:after{bottom:0.6rem;}}/*!sc*/ -data-styled.g61[id="TabsList__TabsListWrapper-sc-24zz0a-0"]{content:"fA-dda,"}/*!sc*/ -.kziDQQ{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;width:100%;overflow-x:scroll;}/*!sc*/ -.kziDQQ::-webkit-scrollbar-thumb{background-color:transparent;border-radius:0.4rem;}/*!sc*/ -.kziDQQ::-webkit-scrollbar-track{background-color:transparent;}/*!sc*/ -.kziDQQ::-webkit-scrollbar{height:0.6rem;}/*!sc*/ -.kziDQQ:hover::-webkit-scrollbar-thumb{background-color:var(--detail-medium-contrast);}/*!sc*/ -@media (hover:none),(hover:on-demand){.kziDQQ:hover::-webkit-scrollbar-thumb{background-color:transparent;}.kziDQQ::-webkit-scrollbar{height:0;}}/*!sc*/ -@media (hover:none),(hover:on-demand){.kziDQQ{overflow-x:auto;padding-bottom:0.6rem;}}/*!sc*/ -.kziDQQ:before,.kziDQQ:after{z-index:1;width:2.4rem;display:block;position:absolute;content:'';top:0;bottom:0;}/*!sc*/ -.kziDQQ:before{width:3.2rem;box-shadow:1.2rem 0 1.6rem var(--background-site);pointer-events:none;left:-4rem;}/*!sc*/ -.kziDQQ:after{width:3.2rem;box-shadow:-1.2rem 0 1.6rem var(--background-site);pointer-events:none;right:-4rem;}/*!sc*/ -data-styled.g62[id="TabsList__TabsListScrollArea-sc-24zz0a-1"]{content:"kziDQQ,"}/*!sc*/ -.keDqsN{background-color:var(--background-site);position:relative;height:100%;z-index:1;padding-right:2.4rem;padding-left:2.4rem;padding-bottom:6rem;padding-top:6rem;}/*!sc*/ -@media (min-width:992px){.keDqsN{display:none;}}/*!sc*/ -data-styled.g64[id="SiteNavigationMenuCompact__SiteNavigationMenuCompactWrapper-sc-16s07xy-0"]{content:"keDqsN,"}/*!sc*/ -.kjAIwA{height:100%;}/*!sc*/ -.kjAIwA .TabsList__TabsListWrapper-sc-24zz0a-0{height:6rem;z-index:2;position:absolute;bottom:0;left:0;right:0;padding-left:2.4rem;padding-right:2.4rem;margin-bottom:0;background-color:var(--background-site);border-top:0.1rem solid var(--detail-low-contrast);border-bottom:0;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;}/*!sc*/ -.kjAIwA .TabsList__TabsListWrapper-sc-24zz0a-0:before,.kjAIwA .TabsList__TabsListWrapper-sc-24zz0a-0:after{display:none;}/*!sc*/ -.kjAIwA .TabsList__TabsListScrollArea-sc-24zz0a-1{max-width:36rem;overflow:visible;padding-bottom:0;}/*!sc*/ -.kjAIwA .TabsList__TabsListScrollArea-sc-24zz0a-1:before,.kjAIwA .TabsList__TabsListScrollArea-sc-24zz0a-1:after{display:none;}/*!sc*/ -.kjAIwA .TabsPanel__TabsPanelWrapper-sc-1ihsh9r-0{position:relative;height:100%;outline-offset:-0.2rem;overflow:hidden;}/*!sc*/ -.kjAIwA .TabsPanel__TabsPanelWrapper-sc-1ihsh9r-0:before,.kjAIwA .TabsPanel__TabsPanelWrapper-sc-1ihsh9r-0:after{position:absolute;z-index:1;left:-2.4rem;right:-2.4rem;content:'';}/*!sc*/ -.kjAIwA .TabsPanel__TabsPanelWrapper-sc-1ihsh9r-0:before{height:3.2rem;box-shadow:0 1.2rem 1.6rem var(--background-site);pointer-events:none;top:-3.2rem;}/*!sc*/ -.kjAIwA .TabsPanel__TabsPanelWrapper-sc-1ihsh9r-0:after{height:3.2rem;box-shadow:0 -1.2rem 1.6rem var(--background-site);pointer-events:none;bottom:-3.2rem;}/*!sc*/ -.kjAIwA .TabsPanel__TabsPanelWrapper-sc-1ihsh9r-0:focus{z-index:20;}/*!sc*/ -.kjAIwA .TabsButton__TabsButtonWrapper-sc-1e7ypyu-0{-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;max-width:calc(36rem / 2);}/*!sc*/ -data-styled.g65[id="SiteNavigationMenuCompact__MenuTabs-sc-16s07xy-1"]{content:"kjAIwA,"}/*!sc*/ -.lbtsTK{padding-top:1.2rem;padding-bottom:2.4rem;max-width:36rem;overflow:auto;-webkit-scrollbar-gutter:stable both-edges;-moz-scrollbar-gutter:stable both-edges;-ms-scrollbar-gutter:stable both-edges;scrollbar-gutter:stable both-edges;position:relative;max-height:100%;margin-left:auto;margin-right:auto;}/*!sc*/ -.lbtsTK::-webkit-scrollbar-thumb{background-color:transparent;border-radius:0.4rem;}/*!sc*/ -.lbtsTK::-webkit-scrollbar-track{background-color:transparent;}/*!sc*/ -.lbtsTK::-webkit-scrollbar{width:0.6rem;}/*!sc*/ -.lbtsTK:hover::-webkit-scrollbar-thumb{background-color:var(--detail-medium-contrast);}/*!sc*/ -@media (hover:none),(hover:on-demand){.lbtsTK:hover::-webkit-scrollbar-thumb{background-color:transparent;}.lbtsTK::-webkit-scrollbar{width:0;}}/*!sc*/ -data-styled.g66[id="SiteNavigationMenuCompact__ScrollArea-sc-16s07xy-2"]{content:"lbtsTK,"}/*!sc*/ -.bqtAoR{background-color:var(--background-code);width:100%;-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between;padding:1.8rem 2rem;margin-top:2.4rem;height:auto;margin-right:0;margin-left:0;border-radius:0.4rem;overflow:hidden;}/*!sc*/ -.bqtAoR .ThemeToggle__LightThemeSvg-sc-1ezo9zi-1,.bqtAoR .ThemeToggle__DarkThemeSvg-sc-1ezo9zi-2{left:auto;right:2rem;-webkit-transform:translateY(-50%);-ms-transform:translateY(-50%);transform:translateY(-50%);}/*!sc*/ -data-styled.g67[id="SiteNavigationMenuCompact__ThemeToggleButton-sc-16s07xy-3"]{content:"bqtAoR,"}/*!sc*/ -.dgPEkb{color:var(--text-medium-contrast);}/*!sc*/ -data-styled.g68[id="SiteNavigationMenuCompact__ThemeToggleText-sc-16s07xy-4"]{content:"dgPEkb,"}/*!sc*/ -.dKIiKW{padding-top:1.8rem;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;}/*!sc*/ -data-styled.g69[id="SiteNavigationMenuCompact__MiscLinks-sc-16s07xy-5"]{content:"dKIiKW,"}/*!sc*/ -.gOCpwb{position:fixed;}/*!sc*/ -@media (max-width:991px){.gOCpwb{z-index:10;top:0;right:0;bottom:0;left:0;-webkit-transform:translateX(-100%);-ms-transform:translateX(-100%);transform:translateX(-100%);visibility:hidden;}}/*!sc*/ -@media (min-width:992px){.gOCpwb{width:inherit;max-width:inherit;top:6rem;bottom:0;}}/*!sc*/ -@media (min-width:1200px){.gOCpwb{padding-right:4.2rem;}}/*!sc*/ -data-styled.g70[id="SiteNavigation__SiteNavigationWrapper-sc-d38nhn-0"]{content:"gOCpwb,"}/*!sc*/ +data-styled.g61[id="TableOfContents__MenuWrapper-sc-11n47el-1"]{content:"ieAuIB,"}/*!sc*/ .dNPbz{position:relative;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;padding-top:2.4rem;padding-bottom:2.4rem;}/*!sc*/ -data-styled.g71[id="PageGrid__PageGridWrapper-sc-nw069y-0"]{content:"dNPbz,"}/*!sc*/ +data-styled.g62[id="PageGrid__PageGridWrapper-sc-nw069y-0"]{content:"dNPbz,"}/*!sc*/ .hbzHhE{-webkit-flex:1;-ms-flex:1;flex:1;min-width:0;max-width:100%;position:relative;z-index:1;}/*!sc*/ @media (min-width:992px){.hbzHhE{padding-right:4.2rem;padding-left:4.2rem;}}/*!sc*/ -data-styled.g72[id="PageGrid__Main-sc-nw069y-1"]{content:"hbzHhE,"}/*!sc*/ +data-styled.g63[id="PageGrid__Main-sc-nw069y-1"]{content:"hbzHhE,"}/*!sc*/ .hRRKNH{min-width:0;-webkit-flex:0 0 auto;-ms-flex:0 0 auto;flex:0 0 auto;}/*!sc*/ @media (min-width:992px){.hRRKNH{width:21rem;max-width:21rem;}}/*!sc*/ @media (min-width:1200px){.hRRKNH{width:28rem;max-width:28rem;}}/*!sc*/ @media (min-width:992px){}/*!sc*/ -data-styled.g73[id="PageGrid__SiteNavigationWrapper-sc-nw069y-2"]{content:"hRRKNH,"}/*!sc*/ +data-styled.g64[id="PageGrid__SiteNavigationWrapper-sc-nw069y-2"]{content:"hRRKNH,"}/*!sc*/ .cfYzhK{min-width:0;-webkit-flex:0 0 auto;-ms-flex:0 0 auto;flex:0 0 auto;}/*!sc*/ @media (min-width:992px){.cfYzhK{width:21rem;max-width:21rem;}}/*!sc*/ @media (min-width:1200px){.cfYzhK{width:28rem;max-width:28rem;}}/*!sc*/ @media (max-width:991px){.cfYzhK{display:none;}}/*!sc*/ -data-styled.g74[id="PageGrid__TableOfContentsWrapper-sc-nw069y-3"]{content:"cfYzhK,"}/*!sc*/ +data-styled.g65[id="PageGrid__TableOfContentsWrapper-sc-nw069y-3"]{content:"cfYzhK,"}/*!sc*/ .bxhcOP{z-index:11;top:6rem;height:0.3rem;left:0;right:0;position:fixed;pointer-events:none;overflow:hidden;}/*!sc*/ @media (min-width:992px){.bxhcOP{top:0;}}/*!sc*/ -data-styled.g75[id="RoutesLoading__RoutesLoadingWrapper-sc-hlxlb9-0"]{content:"bxhcOP,"}/*!sc*/ +data-styled.g66[id="RoutesLoading__RoutesLoadingWrapper-sc-hlxlb9-0"]{content:"bxhcOP,"}/*!sc*/ .ivHxqj{background-image:linear-gradient( 45deg,var(--brand-primary),var(--brand-secondary) );z-index:1;height:0.3rem;width:100%;opacity:1;-webkit-animation-duration:1s;animation-duration:1s;-webkit-animation-name:progress;animation-name:progress;-webkit-animation-fill-mode:forwards;animation-fill-mode:forwards;-webkit-animation-timing-function:linear;animation-timing-function:linear;-webkit-transition:opacity 0.6s;transition:opacity 0.6s;pointer-events:none;}/*!sc*/ @-webkit-keyframes progress{0%{-webkit-transform:translateX(-100%);-ms-transform:translateX(-100%);transform:translateX(-100%);}100%{-webkit-transform:translateX(0%);-ms-transform:translateX(0%);transform:translateX(0%);}}/*!sc*/ @keyframes progress{0%{-webkit-transform:translateX(-100%);-ms-transform:translateX(-100%);transform:translateX(-100%);}100%{-webkit-transform:translateX(0%);-ms-transform:translateX(0%);transform:translateX(0%);}}/*!sc*/ -data-styled.g76[id="RoutesLoading__ProgressBar-sc-hlxlb9-1"]{content:"ivHxqj,"}/*!sc*/ +data-styled.g67[id="RoutesLoading__ProgressBar-sc-hlxlb9-1"]{content:"ivHxqj,"}/*!sc*/ .cWrofw{padding-top:2.4rem;padding-bottom:2.4rem;}/*!sc*/ -data-styled.g77[id="Footer__FooterWrapper-sc-bbv95y-0"]{content:"cWrofw,"}/*!sc*/ +data-styled.g68[id="Footer__FooterWrapper-sc-bbv95y-0"]{content:"cWrofw,"}/*!sc*/ .AXbzO{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;}/*!sc*/ -data-styled.g78[id="Footer__Content-sc-bbv95y-1"]{content:"AXbzO,"}/*!sc*/ +data-styled.g69[id="Footer__Content-sc-bbv95y-1"]{content:"AXbzO,"}/*!sc*/ .jHSzLS{display:-webkit-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-text-decoration:none;text-decoration:none;font-size:1.4rem;padding-top:0.6rem;padding-bottom:0.6rem;margin-top:4.8rem;color:var(--text-low-contrast);}/*!sc*/ -data-styled.g104[id="PageEditThisPage__PageEditThisPageWrapper-sc-15acsrz-0"]{content:"jHSzLS,"}/*!sc*/ +data-styled.g71[id="PageEditThisPage__PageEditThisPageWrapper-sc-15acsrz-0"]{content:"jHSzLS,"}/*!sc*/ .jilTWK{margin-left:-2.4rem;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between;margin-top:4.8rem;}/*!sc*/ .jilTWK > div{padding-left:2.4rem;}/*!sc*/ -data-styled.g105[id="PagePagination__PagePaginationWrapper-sc-3ejrow-0"]{content:"jilTWK,"}/*!sc*/ +data-styled.g72[id="PagePagination__PagePaginationWrapper-sc-3ejrow-0"]{content:"jilTWK,"}/*!sc*/ .cCRIPp > a{color:var(--brand-primary);}/*!sc*/ .cCRIPp:nth-child(2) > a{text-align:right;color:var(--brand-secondary);}/*!sc*/ -data-styled.g106[id="PagePagination__Item-sc-3ejrow-1"]{content:"cCRIPp,"}/*!sc*/ +data-styled.g73[id="PagePagination__Item-sc-3ejrow-1"]{content:"cCRIPp,"}/*!sc*/ .jWvAkD{color:var(--text-low-contrast);padding-bottom:0.6rem;}/*!sc*/ -data-styled.g107[id="PagePagination__ItemLabel-sc-3ejrow-2"]{content:"jWvAkD,"}/*!sc*/ +data-styled.g74[id="PagePagination__ItemLabel-sc-3ejrow-2"]{content:"jWvAkD,"}/*!sc*/ .lmzbII{display:-webkit-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;font-weight:500;}/*!sc*/ .lmzbII .IconWithText__IconWithTextText-sc-1vm2nih-3{color:var(--brand-primary);background-image:linear-gradient( 45deg,var(--brand-primary),var(--brand-secondary) );background-clip:text;-webkit-background-clip:text;-webkit-text-fill-color:transparent;}/*!sc*/ -data-styled.g108[id="PagePagination__ItemTitle-sc-3ejrow-3"]{content:"lmzbII,"}/*!sc*/ +data-styled.g75[id="PagePagination__ItemTitle-sc-3ejrow-3"]{content:"lmzbII,"}/*!sc*/ .eTIFYO{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;font-size:1.4rem;margin-bottom:1.8rem;}/*!sc*/ -data-styled.g109[id="PageBreadcrumbs__PageBreadcrumbsWrapper-sc-1mlty1z-0"]{content:"eTIFYO,"}/*!sc*/ +data-styled.g76[id="PageBreadcrumbs__PageBreadcrumbsWrapper-sc-1mlty1z-0"]{content:"eTIFYO,"}/*!sc*/ .cazgfu{color:var(--text-low-contrast);padding:0.6rem 0;}/*!sc*/ -data-styled.g110[id="PageBreadcrumbs__Link-sc-1mlty1z-1"]{content:"cazgfu,"}/*!sc*/ +data-styled.g77[id="PageBreadcrumbs__Link-sc-1mlty1z-1"]{content:"cazgfu,"}/*!sc*/ .hLaHtl{color:var(--text-low-contrast);padding:0.6rem 0;}/*!sc*/ -data-styled.g111[id="PageBreadcrumbs__ActiveTitle-sc-1mlty1z-2"]{content:"hLaHtl,"}/*!sc*/ +data-styled.g78[id="PageBreadcrumbs__ActiveTitle-sc-1mlty1z-2"]{content:"hLaHtl,"}/*!sc*/ .flvYLV{color:var(--text-low-contrast);margin:0 0.6rem;}/*!sc*/ -data-styled.g112[id="PageBreadcrumbs__Separator-sc-1mlty1z-3"]{content:"flvYLV,"}/*!sc*/ +data-styled.g79[id="PageBreadcrumbs__Separator-sc-1mlty1z-3"]{content:"flvYLV,"}/*!sc*/ +.eHxtzy:focus{outline:0;}/*!sc*/ +data-styled.g80[id="TabsPanel__TabsPanelWrapper-sc-1ihsh9r-0"]{content:"eHxtzy,"}/*!sc*/ +.hgrjbP{padding:1.2rem 1.2rem;position:relative;display:-webkit-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;position:relative;}/*!sc*/ +.hgrjbP:disabled > .ButtonBare__ButtonBareText-sc-1pf4eqw-1 > .LinkNavigation__InactiveText-sc-s1px90-1{color:var(--detail-high-contrast);}/*!sc*/ +.hgrjbP:after{background-image:linear-gradient( 45deg,var(--brand-primary),var(--brand-secondary) );z-index:1;content:'';position:absolute;left:0;right:0;bottom:0;height:0.3rem;pointer-events:none;}/*!sc*/ +.cseKhV{padding:1.2rem 1.2rem;position:relative;display:-webkit-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;position:relative;}/*!sc*/ +.cseKhV:disabled > .ButtonBare__ButtonBareText-sc-1pf4eqw-1 > .LinkNavigation__InactiveText-sc-s1px90-1{color:var(--detail-high-contrast);}/*!sc*/ +data-styled.g81[id="TabsButton__TabsButtonWrapper-sc-1e7ypyu-0"]{content:"hgrjbP,cseKhV,"}/*!sc*/ +.fA-dda{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;position:relative;margin-bottom:calc(2.4rem - 0.6rem);overflow:hidden;}/*!sc*/ +.fA-dda:after{position:absolute;content:'';height:0.1rem;background-color:var(--detail-low-contrast);width:100%;display:block;bottom:calc(0.6rem - 0.1rem);z-index:1;}/*!sc*/ +@media (hover:none),(hover:on-demand){.fA-dda:after{bottom:0.6rem;}}/*!sc*/ +data-styled.g82[id="TabsList__TabsListWrapper-sc-24zz0a-0"]{content:"fA-dda,"}/*!sc*/ +.kziDQQ{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;width:100%;overflow-x:scroll;}/*!sc*/ +.kziDQQ::-webkit-scrollbar-thumb{background-color:transparent;border-radius:0.4rem;}/*!sc*/ +.kziDQQ::-webkit-scrollbar-track{background-color:transparent;}/*!sc*/ +.kziDQQ::-webkit-scrollbar{height:0.6rem;}/*!sc*/ +.kziDQQ:hover::-webkit-scrollbar-thumb{background-color:var(--detail-medium-contrast);}/*!sc*/ +@media (hover:none),(hover:on-demand){.kziDQQ:hover::-webkit-scrollbar-thumb{background-color:transparent;}.kziDQQ::-webkit-scrollbar{height:0;}}/*!sc*/ +@media (hover:none),(hover:on-demand){.kziDQQ{overflow-x:auto;padding-bottom:0.6rem;}}/*!sc*/ +.kziDQQ:before,.kziDQQ:after{z-index:1;width:2.4rem;display:block;position:absolute;content:'';top:0;bottom:0;}/*!sc*/ +.kziDQQ:before{width:3.2rem;box-shadow:1.2rem 0 1.6rem var(--background-site);pointer-events:none;left:-4rem;}/*!sc*/ +.kziDQQ:after{width:3.2rem;box-shadow:-1.2rem 0 1.6rem var(--background-site);pointer-events:none;right:-4rem;}/*!sc*/ +data-styled.g83[id="TabsList__TabsListScrollArea-sc-24zz0a-1"]{content:"kziDQQ,"}/*!sc*/ .fQYGLQ{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;padding:1.2rem;border-top-right-radius:0.4rem;border-bottom-right-radius:0.4rem;position:relative;border-left:0.4rem solid var(--admonition-warning);background-color:rgba(var(--admonition-warning-rgb-value),0.07);}/*!sc*/ .fQYGLQ .IconWithText__IconWithTextIcon-sc-1vm2nih-2{color:var(--admonition-warning);}/*!sc*/ -data-styled.g113[id="Admonition__AdmonitionWrapper-sc-1cc944d-0"]{content:"fQYGLQ,"}/*!sc*/ +data-styled.g85[id="Admonition__AdmonitionWrapper-sc-1cc944d-0"]{content:"fQYGLQ,"}/*!sc*/ .jpooTL{position:relative;overflow:hidden;font-size:1.36rem;background-color:var(--background-code);}/*!sc*/ @media (min-width:576px){.jpooTL{border-radius:0.4rem;border:0.1rem solid var(--detail-low-contrast);}}/*!sc*/ @media (max-width:575px){.jpooTL{border-top:0.1rem solid var(--detail-low-contrast);border-bottom:0.1rem solid var(--detail-low-contrast);}}/*!sc*/ .jpooTL:before,.jpooTL:after{z-index:1;width:2.4rem;display:block;position:absolute;content:'';top:0;bottom:0;}/*!sc*/ .jpooTL:before{width:3.2rem;box-shadow:1.2rem 0 1.6rem var(--background-code);pointer-events:none;left:-3.2rem;}/*!sc*/ .jpooTL:after{width:3.2rem;box-shadow:-1.2rem 0 1.6rem var(--background-code);pointer-events:none;right:-3.2rem;}/*!sc*/ -data-styled.g115[id="PrismSyntaxFrame__PrismSyntaxFrameWrapper-sc-1idvpim-0"]{content:"jpooTL,"}/*!sc*/ +data-styled.g87[id="PrismSyntaxFrame__PrismSyntaxFrameWrapper-sc-1idvpim-0"]{content:"jpooTL,"}/*!sc*/ .iZkNFi{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:end;-webkit-justify-content:flex-end;-ms-flex-pack:end;justify-content:flex-end;height:0;}/*!sc*/ -data-styled.g116[id="PrismSyntaxFrame__CopyCode-sc-1idvpim-1"]{content:"iZkNFi,"}/*!sc*/ +data-styled.g88[id="PrismSyntaxFrame__CopyCode-sc-1idvpim-1"]{content:"iZkNFi,"}/*!sc*/ .HWgcX{position:relative;z-index:2;margin-right:calc(2.4rem - 0.8rem);color:var(--text-low-contrast);padding:0 0.8rem;height:2.4rem;line-height:2.4rem;font-size:1.2rem;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}/*!sc*/ .HWgcX:before{content:'';visibility:hidden;position:absolute;top:0;right:0;bottom:0;left:0;border-radius:0.4rem;background-image:linear-gradient( 45deg,var(--brand-primary),var(--brand-secondary) );}/*!sc*/ .HWgcX:hover{color:var(--background-site);}/*!sc*/ .HWgcX:hover:before{visibility:visible;}/*!sc*/ @media (hover:none),(hover:on-demand){.HWgcX:hover{color:var(--text-low-contrast);}.HWgcX:hover:before{display:none;}}/*!sc*/ -data-styled.g117[id="PrismSyntaxFrame__CopyCodeButton-sc-1idvpim-2"]{content:"HWgcX,"}/*!sc*/ +data-styled.g89[id="PrismSyntaxFrame__CopyCodeButton-sc-1idvpim-2"]{content:"HWgcX,"}/*!sc*/ .kJLDeQ{border:0;padding:0;-webkit-clip:rect(0 0 0 0);clip:rect(0 0 0 0);width:1px;height:1px;margin:-1px;overflow:hidden;position:absolute;}/*!sc*/ -data-styled.g118[id="PrismSyntaxFrame__ButtonStatus-sc-1idvpim-3"]{content:"kJLDeQ,"}/*!sc*/ +data-styled.g90[id="PrismSyntaxFrame__ButtonStatus-sc-1idvpim-3"]{content:"kJLDeQ,"}/*!sc*/ .cWVXFV{position:relative;z-index:1;}/*!sc*/ -data-styled.g119[id="PrismSyntaxFrame__ButtonText-sc-1idvpim-4"]{content:"cWVXFV,"}/*!sc*/ +data-styled.g91[id="PrismSyntaxFrame__ButtonText-sc-1idvpim-4"]{content:"cWVXFV,"}/*!sc*/ .fhEhjC{color:var(--text-body);}/*!sc*/ .fhEhjC .code-highlight{background-color:var(--background-code);border-radius:0.4rem;border:0.1rem solid var(--detail-low-contrast);padding:0.3rem 0.6rem;font-size:1.44rem;box-sizing:border-box;}/*!sc*/ .fhEhjC .Admonition__AdmonitionWrapper-sc-1cc944d-0 .code-highlight{background-color:var(--background-site);border-color:var(--detail-medium-contrast);}/*!sc*/ @@ -461,19 +345,21 @@ .fhEhjC .TabsPanel__TabsPanelWrapper-sc-1ihsh9r-0 > h1,.fhEhjC .Admonition__AdmonitionContent-sc-1cc944d-1 > h1,.fhEhjC > h1,.fhEhjC .TabsPanel__TabsPanelWrapper-sc-1ihsh9r-0 > h2,.fhEhjC .Admonition__AdmonitionContent-sc-1cc944d-1 > h2,.fhEhjC > h2,.fhEhjC .TabsPanel__TabsPanelWrapper-sc-1ihsh9r-0 > h3,.fhEhjC .Admonition__AdmonitionContent-sc-1cc944d-1 > h3,.fhEhjC > h3,.fhEhjC .TabsPanel__TabsPanelWrapper-sc-1ihsh9r-0 > h4,.fhEhjC .Admonition__AdmonitionContent-sc-1cc944d-1 > h4,.fhEhjC > h4,.fhEhjC .TabsPanel__TabsPanelWrapper-sc-1ihsh9r-0 > h5,.fhEhjC .Admonition__AdmonitionContent-sc-1cc944d-1 > h5,.fhEhjC > h5,.fhEhjC .TabsPanel__TabsPanelWrapper-sc-1ihsh9r-0 > h6,.fhEhjC .Admonition__AdmonitionContent-sc-1cc944d-1 > h6,.fhEhjC > h6,.fhEhjC .TabsPanel__TabsPanelWrapper-sc-1ihsh9r-0 > ul,.fhEhjC .Admonition__AdmonitionContent-sc-1cc944d-1 > ul,.fhEhjC > ul,.fhEhjC .TabsPanel__TabsPanelWrapper-sc-1ihsh9r-0 > ol,.fhEhjC .Admonition__AdmonitionContent-sc-1cc944d-1 > ol,.fhEhjC > ol,.fhEhjC .TabsPanel__TabsPanelWrapper-sc-1ihsh9r-0 > dl,.fhEhjC .Admonition__AdmonitionContent-sc-1cc944d-1 > dl,.fhEhjC > dl,.fhEhjC .TabsPanel__TabsPanelWrapper-sc-1ihsh9r-0 > p,.fhEhjC .Admonition__AdmonitionContent-sc-1cc944d-1 > p,.fhEhjC > p,.fhEhjC .TabsPanel__TabsPanelWrapper-sc-1ihsh9r-0 > hgroup,.fhEhjC .Admonition__AdmonitionContent-sc-1cc944d-1 > hgroup,.fhEhjC > hgroup,.fhEhjC .TabsPanel__TabsPanelWrapper-sc-1ihsh9r-0 > address,.fhEhjC .Admonition__AdmonitionContent-sc-1cc944d-1 > address,.fhEhjC > address,.fhEhjC .TabsPanel__TabsPanelWrapper-sc-1ihsh9r-0 > table,.fhEhjC .Admonition__AdmonitionContent-sc-1cc944d-1 > table,.fhEhjC > table,.fhEhjC .TabsPanel__TabsPanelWrapper-sc-1ihsh9r-0 > fieldset,.fhEhjC .Admonition__AdmonitionContent-sc-1cc944d-1 > fieldset,.fhEhjC > fieldset,.fhEhjC .TabsPanel__TabsPanelWrapper-sc-1ihsh9r-0 > figure,.fhEhjC .Admonition__AdmonitionContent-sc-1cc944d-1 > figure,.fhEhjC > figure,.fhEhjC .TabsPanel__TabsPanelWrapper-sc-1ihsh9r-0 > pre,.fhEhjC .Admonition__AdmonitionContent-sc-1cc944d-1 > pre,.fhEhjC > pre,.fhEhjC .TabsPanel__TabsPanelWrapper-sc-1ihsh9r-0 > dd,.fhEhjC .Admonition__AdmonitionContent-sc-1cc944d-1 > dd,.fhEhjC > dd,.fhEhjC .TabsPanel__TabsPanelWrapper-sc-1ihsh9r-0 > blockquote,.fhEhjC .Admonition__AdmonitionContent-sc-1cc944d-1 > blockquote,.fhEhjC > blockquote,.fhEhjC .TabsPanel__TabsPanelWrapper-sc-1ihsh9r-0 > blockquote code,.fhEhjC .Admonition__AdmonitionContent-sc-1cc944d-1 > blockquote code,.fhEhjC > blockquote code,.fhEhjC .TabsPanel__TabsPanelWrapper-sc-1ihsh9r-0 > kbd,.fhEhjC .Admonition__AdmonitionContent-sc-1cc944d-1 > kbd,.fhEhjC > kbd,.fhEhjC .TabsPanel__TabsPanelWrapper-sc-1ihsh9r-0 > samp,.fhEhjC .Admonition__AdmonitionContent-sc-1cc944d-1 > samp,.fhEhjC > samp,.fhEhjC .TabsPanel__TabsPanelWrapper-sc-1ihsh9r-0 > .prism-highlight,.fhEhjC .Admonition__AdmonitionContent-sc-1cc944d-1 > .prism-highlight,.fhEhjC > .prism-highlight,.fhEhjC .TabsPanel__TabsPanelWrapper-sc-1ihsh9r-0 > .Tabs__TabsWrapper-sc-1wvkykc-0,.fhEhjC .Admonition__AdmonitionContent-sc-1cc944d-1 > .Tabs__TabsWrapper-sc-1wvkykc-0,.fhEhjC > .Tabs__TabsWrapper-sc-1wvkykc-0,.fhEhjC .TabsPanel__TabsPanelWrapper-sc-1ihsh9r-0 > .Admonition__AdmonitionWrapper-sc-1cc944d-0,.fhEhjC .Admonition__AdmonitionContent-sc-1cc944d-1 > .Admonition__AdmonitionWrapper-sc-1cc944d-0,.fhEhjC > .Admonition__AdmonitionWrapper-sc-1cc944d-0{margin-bottom:2.4rem;}/*!sc*/ .fhEhjC .TabsPanel__TabsPanelWrapper-sc-1ihsh9r-0 > *:first-child,.fhEhjC .Admonition__AdmonitionContent-sc-1cc944d-1 > *:first-child,.fhEhjC > *:first-child{margin-top:0;}/*!sc*/ .fhEhjC .TabsPanel__TabsPanelWrapper-sc-1ihsh9r-0 > *:last-child,.fhEhjC .Admonition__AdmonitionContent-sc-1cc944d-1 > *:last-child,.fhEhjC > *:last-child{margin-bottom:0;}/*!sc*/ -data-styled.g120[id="Styles__MdxStyles-sc-18i58cr-0"]{content:"fhEhjC,"}/*!sc*/ +data-styled.g92[id="Styles__MdxStyles-sc-18i58cr-0"]{content:"fhEhjC,"}/*!sc*/ +.eOqFPv{color:var(--brand-primary);background-image:linear-gradient( 45deg,var(--brand-primary),var(--brand-secondary) );background-clip:text;-webkit-background-clip:text;-webkit-text-fill-color:transparent;display:inline-block;font-weight:500;}/*!sc*/ +data-styled.g93[id="LinkContent__LinkContentWrapper-sc-1wcim9r-0"]{content:"eOqFPv,"}/*!sc*/ .bNscHq .code-highlight > span{color:var(--brand-primary);background-image:linear-gradient( 45deg,var(--brand-primary),var(--brand-secondary) );background-clip:text;-webkit-background-clip:text;-webkit-text-fill-color:transparent;}/*!sc*/ -data-styled.g121[id="Link__LinkContentStyled-sc-1x8mt22-0"]{content:"bNscHq,"}/*!sc*/ +data-styled.g94[id="Link__LinkContentStyled-sc-1x8mt22-0"]{content:"bNscHq,"}/*!sc*/ .gvcnfR{border-top:0;border-right:0;border-left:0;border-bottom:0.1rem solid var(--detail-medium-contrast);margin-top:4.8rem;margin-bottom:4.8rem;width:5rem;background-color:var(--detail-medium-contrast);}/*!sc*/ -data-styled.g122[id="Hr-sc-utr0so-0"]{content:"gvcnfR,"}/*!sc*/ +data-styled.g95[id="Hr-sc-utr0so-0"]{content:"gvcnfR,"}/*!sc*/ .jgctsE{display:block;width:100%;}/*!sc*/ -data-styled.g123[id="H1__Text-sc-1ov938g-0"]{content:"jgctsE,"}/*!sc*/ +data-styled.g96[id="H1__Text-sc-1ov938g-0"]{content:"jgctsE,"}/*!sc*/ .cYbjpM{display:block;font-size:0;}/*!sc*/ -data-styled.g124[id="H1__DecorationWrapper-sc-1ov938g-1"]{content:"cYbjpM,"}/*!sc*/ +data-styled.g97[id="H1__DecorationWrapper-sc-1ov938g-1"]{content:"cYbjpM,"}/*!sc*/ .bnSdak{background-image:linear-gradient( 45deg,var(--brand-primary),var(--brand-secondary) );margin-top:2.4rem;height:0.3rem;width:5rem;max-width:100%;display:-webkit-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-flex;}/*!sc*/ -data-styled.g125[id="H1__Decoration-sc-1ov938g-2"]{content:"bnSdak,"}/*!sc*/ +data-styled.g98[id="H1__Decoration-sc-1ov938g-2"]{content:"bnSdak,"}/*!sc*/ .fYWOaI{color:var(--brand-primary);}/*!sc*/ -data-styled.g134[id="ColoredText-sc-18wn26v-0"]{content:"fYWOaI,"}/*!sc*/ +data-styled.g107[id="ColoredText-sc-18wn26v-0"]{content:"fYWOaI,"}/*!sc*/

Events

+

Events

Embla Carousel exposes events that you can listen to in order to react to changes in the carousel.


Usage

You need an initialized carousel in order to make use of events. Events will only be fired during the lifecycle of a carousel and added event listeners will persist even when you hard reset the carousel with the reInit method.

Adding event listeners

After initializing a carousel, we're going to subscribe to the slidesInView event in the following example:

-
import EmblaCarousel from 'embla-carousel'
+
import EmblaCarousel from 'embla-carousel'
 const emblaNode = document.querySelector('.embla')const emblaApi = EmblaCarousel(emblaNode)
 function logSlidesInView(emblaApi) {  console.log(emblaApi.slidesInView())}
-emblaApi.on('slidesInView', logSlidesInView)

Removing event listeners

In order to remove an event listener, you'll have to call the off method and make sure to pass the same callback reference you passed to the on method:

-
import EmblaCarousel from 'embla-carousel'
+
import EmblaCarousel from 'embla-carousel'
 const emblaNode = document.querySelector('.embla')const emblaApi = EmblaCarousel(emblaNode)
 function logSlidesInViewOnce(emblaApi) {  console.log(emblaApi.slidesInView())  emblaApi.off('slidesInView', logSlidesInViewOnce)}
-emblaApi.on('slidesInView', logSlidesInViewOnce)

TypeScript

The EmblaEventType is obtained directly from the core package embla-carousel and used like so:

-
import EmblaCarousel, {  EmblaCarouselType,  EmblaEventType} from 'embla-carousel'
+
import EmblaCarousel, {  EmblaCarouselType,  EmblaEventType} from 'embla-carousel'
 const emblaNode = document.querySelector('.embla')const emblaApi = EmblaCarousel(emblaNode)
 function logEmblaEvent(  emblaApi: EmblaCarouselType,  eventName: EmblaEventType): void {  console.log(`Embla just triggered ${eventName}!`)}
-emblaApi.on('slidesInView', logEmblaEvent)