diff --git a/docs/1905-4fa9f08465231eb2728b.js b/docs/1905-4fa9f08465231eb2728b.js new file mode 100644 index 00000000..ee5e4d04 --- /dev/null +++ b/docs/1905-4fa9f08465231eb2728b.js @@ -0,0 +1,2 @@ +"use strict";(self.webpackChunkembla_carousel_docs=self.webpackChunkembla_carousel_docs||[]).push([[1905],{1905:function(t,e,n){n.r(e),n.d(e,{default:function(){return r}});var o=n(4041),i=n(7154);const l={direction:"forward",speed:2,startDelay:1e3,active:!0,breakpoints:{},playOnInit:!0,stopOnFocusIn:!0,stopOnInteraction:!0,stopOnMouseEnter:!1,rootNode:null};function s(t){let e,n,o,i;void 0===t&&(t={});let a,r=0,c=!1,u=!1;function d(){if(o)return;if(c)return;n.emit("autoscroll:play",null);const t=n.internalEngine(),{ownerWindow:l}=t;r=l.setTimeout((()=>{t.scrollBody=function(t){const{location:o,previousLocation:i,offsetLocation:l,target:s,scrollTarget:a,index:r,indexPrevious:c,limit:{reachedMin:u,reachedMax:d,constrain:f},options:{loop:m}}=t,v="forward"===e.direction?-1:1,b=()=>N;let g=0,y=0,E=o.get(),_=0,O=!1;function k(){let t=0;i.set(o),g=v*e.speed,E+=g,o.add(g),s.set(o),t=E-_,y=Math.sign(t),_=E;const b=a.byDistance(0,!1).index;r.get()!==b&&(c.set(r.get()),r.set(b),n.emit("select",null));const k="forward"===e.direction?u(l.get()):d(l.get());if(!m&&k){O=!0;const t=f(o.get());o.set(t),s.set(o),p()}return N}const N={direction:()=>y,duration:()=>-1,velocity:()=>g,settled:()=>O,seek:k,useBaseFriction:b,useBaseDuration:b,useFriction:b,useDuration:b};return N}(t),t.animation.start()}),i),c=!0}function p(){if(o)return;if(!c)return;n.emit("autoscroll:stop",null);const t=n.internalEngine(),{ownerWindow:e}=t;t.scrollBody=a,e.clearTimeout(r),r=0,c=!1}function f(){u||p()}function m(){u||y()}function v(){u=!0,p()}function b(){u=!1,d()}function g(){n.off("settle",g),d()}function y(){n.on("settle",g)}return{name:"autoScroll",options:t,init:function(r,c){n=r;const{mergeOptions:u,optionsAtMedia:g}=c,y=u(l,s.globalOptions),E=u(y,t);if(e=g(E),n.scrollSnapList().length<=1)return;i=e.startDelay,o=!1,a=n.internalEngine().scrollBody;const{eventStore:_}=n.internalEngine(),O=n.internalEngine().options.draggable,k=function(t,e){const n=t.rootNode();return e&&e(n)||n}(n,e.rootNode);O&&n.on("pointerdown",f),O&&!e.stopOnInteraction&&n.on("pointerup",m),e.stopOnMouseEnter&&_.add(k,"mouseenter",v),e.stopOnMouseEnter&&!e.stopOnInteraction&&_.add(k,"mouseleave",b),e.stopOnFocusIn&&n.on("slidefocusstart",p),e.stopOnFocusIn&&!e.stopOnInteraction&&_.add(n.containerNode(),"focusout",d),e.playOnInit&&d()},destroy:function(){n.off("pointerdown",f).off("pointerup",m).off("slidefocusstart",p).off("settle",g),p(),o=!0,c=!1},play:function(t){void 0!==t&&(i=t),d()},stop:function(){c&&p()},reset:function(){c&&(p(),y())},isPlaying:function(){return c}}}s.globalOptions=void 0;var a=n(7105);var r=t=>{const{slides:e,options:n}=t,[l,r]=(0,i.A)(n,[s({playOnInit:!1})]),{0:c,1:u}=(0,o.useState)(!1),{prevBtnDisabled:d,nextBtnDisabled:p,onPrevButtonClick:f,onNextButtonClick:m}=(0,a.Hd)(r),v=(0,o.useCallback)((t=>{var e;const n=null==r||null===(e=r.plugins())||void 0===e?void 0:e.autoScroll;if(!n)return;(!1===n.options.stopOnInteraction?n.reset:n.stop)(),t()}),[r]),b=(0,o.useCallback)((()=>{var t;const e=null==r||null===(t=r.plugins())||void 0===t?void 0:t.autoScroll;if(!e)return;(e.isPlaying()?e.stop:e.play)()}),[r]);return(0,o.useEffect)((()=>{var t;const e=null==r||null===(t=r.plugins())||void 0===t?void 0:t.autoScroll;e&&(u(e.isPlaying()),r.on("autoScroll:play",(()=>u(!0))).on("autoScroll:stop",(()=>u(!1))).on("reInit",(()=>u(e.isPlaying()))))}),[r]),o.createElement("div",{className:"embla"},o.createElement("div",{className:"embla__viewport",ref:l},o.createElement("div",{className:"embla__container"},e.map((t=>o.createElement("div",{className:"embla__slide",key:t},o.createElement("div",{className:"embla__slide__number"},o.createElement("span",null,t+1))))))),o.createElement("div",{className:"embla__controls"},o.createElement("div",{className:"embla__buttons"},o.createElement(a.U1,{onClick:()=>v(f),disabled:d}),o.createElement(a.WE,{onClick:()=>v(m),disabled:p})),o.createElement("button",{className:"embla__play",onClick:b,type:"button"},c?"Stop":"Start")))}}}]); +//# sourceMappingURL=1905-4fa9f08465231eb2728b.js.map \ No newline at end of file diff --git a/docs/1905-4fa9f08465231eb2728b.js.map b/docs/1905-4fa9f08465231eb2728b.js.map new file mode 100644 index 00000000..a3641ff9 --- /dev/null +++ b/docs/1905-4fa9f08465231eb2728b.js.map @@ -0,0 +1 @@ +{"version":3,"file":"1905-4fa9f08465231eb2728b.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/utils.ts","webpack://embla-carousel-docs/./src/components/Sandbox/React/SandboxFilesSrc/AutoScroll/EmblaCarousel.tsx"],"sourcesContent":["import { CreateOptionsType } from 'embla-carousel'\n\nexport type RootNodeType =\n | null\n | ((emblaRoot: HTMLElement) => HTMLElement | null)\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: RootNodeType\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 { getAutoScrollRootNode } from './utils'\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 'autoscroll:play': 'autoscroll:play'\n 'autoscroll:stop': 'autoscroll:stop'\n }\n\n interface EmblaEventDetailType {\n 'autoscroll:play': null\n 'autoscroll:stop': null\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 startDelay: number\n let timerId = 0\n let autoScrollActive = false\n let mouseIsOver = false\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 isDraggable = emblaApi.internalEngine().options.draggable\n const root = getAutoScrollRootNode(emblaApi, options.rootNode)\n\n if (isDraggable) {\n emblaApi.on('pointerdown', onPointerDown)\n }\n\n if (isDraggable && !options.stopOnInteraction) {\n emblaApi.on('pointerup', onPointerUp)\n }\n\n if (options.stopOnMouseEnter) {\n eventStore.add(root, 'mouseenter', onMouseEnter)\n }\n\n if (options.stopOnMouseEnter && !options.stopOnInteraction) {\n eventStore.add(root, 'mouseleave', onMouseLeave)\n }\n\n if (options.stopOnFocusIn) {\n emblaApi.on('slidefocusstart', stopAutoScroll)\n }\n\n if (options.stopOnFocusIn && !options.stopOnInteraction) {\n eventStore.add(emblaApi.containerNode(), 'focusout', startAutoScroll)\n }\n\n if (options.playOnInit) startAutoScroll()\n }\n\n function destroy(): void {\n emblaApi\n .off('pointerdown', onPointerDown)\n .off('pointerup', onPointerUp)\n .off('slidefocusstart', stopAutoScroll)\n .off('settle', settle)\n\n stopAutoScroll()\n destroyed = true\n autoScrollActive = false\n }\n\n function startAutoScroll(): void {\n if (destroyed) return\n if (autoScrollActive) return\n emblaApi.emit('autoscroll:play', null)\n\n const engine = emblaApi.internalEngine()\n const { ownerWindow } = engine\n\n timerId = ownerWindow.setTimeout(() => {\n engine.scrollBody = createAutoScrollBehaviour(engine)\n engine.animation.start()\n }, startDelay)\n\n autoScrollActive = true\n }\n\n function stopAutoScroll(): void {\n if (destroyed) return\n if (!autoScrollActive) return\n emblaApi.emit('autoscroll:stop', null)\n\n const engine = emblaApi.internalEngine()\n const { ownerWindow } = engine\n\n engine.scrollBody = defaultScrollBehaviour\n ownerWindow.clearTimeout(timerId)\n timerId = 0\n\n autoScrollActive = false\n }\n\n function createAutoScrollBehaviour(engine: EngineType): ScrollBodyType {\n const {\n location,\n previousLocation,\n offsetLocation,\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 previousLocation.set(location)\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', null)\n }\n\n const reachedEnd =\n options.direction === 'forward'\n ? reachedMin(offsetLocation.get())\n : reachedMax(offsetLocation.get())\n\n if (!loop && reachedEnd) {\n hasSettled = true\n const constrainedLocation = constrain(location.get())\n location.set(constrainedLocation)\n target.set(location)\n stopAutoScroll()\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 onPointerDown(): void {\n if (!mouseIsOver) stopAutoScroll()\n }\n\n function onPointerUp(): void {\n if (!mouseIsOver) startAutoScrollOnSettle()\n }\n\n function onMouseEnter(): void {\n mouseIsOver = true\n stopAutoScroll()\n }\n\n function onMouseLeave(): void {\n mouseIsOver = false\n startAutoScroll()\n }\n\n function settle(): void {\n emblaApi.off('settle', settle)\n startAutoScroll()\n }\n\n function startAutoScrollOnSettle(): void {\n emblaApi.on('settle', settle)\n }\n\n function play(startDelayOverride?: number): void {\n if (typeof startDelayOverride !== 'undefined') {\n startDelay = startDelayOverride\n }\n startAutoScroll()\n }\n\n function stop(): void {\n if (autoScrollActive) stopAutoScroll()\n }\n\n function reset(): void {\n if (autoScrollActive) {\n stopAutoScroll()\n startAutoScrollOnSettle()\n }\n }\n\n function isPlaying(): boolean {\n return autoScrollActive\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 { EmblaCarouselType } from 'embla-carousel/components/EmblaCarousel'\nimport { RootNodeType } from './Options'\n\nexport function getAutoScrollRootNode(\n emblaApi: EmblaCarouselType,\n rootNode: RootNodeType\n): HTMLElement {\n const emblaRootNode = emblaApi.rootNode()\n return (rootNode && rootNode(emblaRootNode)) || emblaRootNode\n}\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","timerId","autoScrollActive","mouseIsOver","startAutoScroll","emit","engine","internalEngine","ownerWindow","setTimeout","scrollBody","location","previousLocation","offsetLocation","target","scrollTarget","index","indexPrevious","limit","reachedMin","reachedMax","constrain","loop","directionSign","noop","self","bodyVelocity","scrollDirection","rawLocation","get","rawLocationPrevious","hasSettled","seek","directionDiff","set","add","Math","sign","currentIndex","byDistance","reachedEnd","constrainedLocation","stopAutoScroll","duration","velocity","settled","useBaseFriction","useBaseDuration","useFriction","useDuration","createAutoScrollBehaviour","animation","start","clearTimeout","onPointerDown","onPointerUp","startAutoScrollOnSettle","onMouseEnter","onMouseLeave","settle","off","on","name","init","emblaApiInstance","optionsHandler","mergeOptions","optionsAtMedia","optionsBase","globalOptions","allOptions","scrollSnapList","length","eventStore","isDraggable","draggable","root","emblaRootNode","getAutoScrollRootNode","containerNode","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/1905-e1d22eac1c5e93f7c1be.js b/docs/1905-e1d22eac1c5e93f7c1be.js deleted file mode 100644 index da729c75..00000000 --- a/docs/1905-e1d22eac1c5e93f7c1be.js +++ /dev/null @@ -1,2 +0,0 @@ -"use strict";(self.webpackChunkembla_carousel_docs=self.webpackChunkembla_carousel_docs||[]).push([[1905],{1905:function(t,e,n){n.r(e),n.d(e,{default:function(){return r}});var o=n(4041),i=n(7154);const s={direction:"forward",speed:2,startDelay:1e3,active:!0,breakpoints:{},playOnInit:!0,stopOnFocusIn:!0,stopOnInteraction:!0,stopOnMouseEnter:!1,rootNode:null};function l(t){let e,n,o,i;void 0===t&&(t={});let a,r=0,c=!1,u=!1;function d(){if(o)return;if(c)return;n.emit("autoScroll:play");const t=n.internalEngine(),{ownerWindow:s}=t;r=s.setTimeout((()=>{t.scrollBody=function(t){const{location:o,previousLocation:i,offsetLocation:s,target:l,scrollTarget:a,index:r,indexPrevious:c,limit:{reachedMin:u,reachedMax:d,constrain:f},options:{loop:m}}=t,v="forward"===e.direction?-1:1,b=()=>k;let g=0,y=0,E=o.get(),_=0,O=!1;function S(){let t=0;i.set(o),g=v*e.speed,E+=g,o.add(g),l.set(o),t=E-_,y=Math.sign(t),_=E;const b=a.byDistance(0,!1).index;r.get()!==b&&(c.set(r.get()),r.set(b),n.emit("select"));const S="forward"===e.direction?u(s.get()):d(s.get());if(!m&&S){O=!0;const t=f(o.get());o.set(t),l.set(o),p()}return k}const k={direction:()=>y,duration:()=>-1,velocity:()=>g,settled:()=>O,seek:S,useBaseFriction:b,useBaseDuration:b,useFriction:b,useDuration:b};return k}(t),t.animation.start()}),i),c=!0}function p(){if(o)return;if(!c)return;n.emit("autoScroll:stop");const t=n.internalEngine(),{ownerWindow:e}=t;t.scrollBody=a,e.clearTimeout(r),r=0,c=!1}function f(){u||p()}function m(){u||y()}function v(){u=!0,p()}function b(){u=!1,d()}function g(){n.off("settle",g),d()}function y(){n.on("settle",g)}return{name:"autoScroll",options:t,init:function(r,c){n=r;const{mergeOptions:u,optionsAtMedia:g}=c,y=u(s,l.globalOptions),E=u(y,t);if(e=g(E),n.scrollSnapList().length<=1)return;i=e.startDelay,o=!1,a=n.internalEngine().scrollBody;const{eventStore:_}=n.internalEngine(),O=!!n.internalEngine().options.watchDrag,S=function(t,e){const n=t.rootNode();return e&&e(n)||n}(n,e.rootNode);O&&n.on("pointerDown",f),O&&!e.stopOnInteraction&&n.on("pointerUp",m),e.stopOnMouseEnter&&_.add(S,"mouseenter",v),e.stopOnMouseEnter&&!e.stopOnInteraction&&_.add(S,"mouseleave",b),e.stopOnFocusIn&&n.on("slideFocusStart",p),e.stopOnFocusIn&&!e.stopOnInteraction&&_.add(n.containerNode(),"focusout",d),e.playOnInit&&d()},destroy:function(){n.off("pointerDown",f).off("pointerUp",m).off("slideFocusStart",p).off("settle",g),p(),o=!0,c=!1},play:function(t){void 0!==t&&(i=t),d()},stop:function(){c&&p()},reset:function(){c&&(p(),y())},isPlaying:function(){return c}}}l.globalOptions=void 0;var a=n(7105);var r=t=>{const{slides:e,options:n}=t,[s,r]=(0,i.A)(n,[l({playOnInit:!1})]),{0:c,1:u}=(0,o.useState)(!1),{prevBtnDisabled:d,nextBtnDisabled:p,onPrevButtonClick:f,onNextButtonClick:m}=(0,a.Hd)(r),v=(0,o.useCallback)((t=>{var e;const n=null==r||null===(e=r.plugins())||void 0===e?void 0:e.autoScroll;if(!n)return;(!1===n.options.stopOnInteraction?n.reset:n.stop)(),t()}),[r]),b=(0,o.useCallback)((()=>{var t;const e=null==r||null===(t=r.plugins())||void 0===t?void 0:t.autoScroll;if(!e)return;(e.isPlaying()?e.stop:e.play)()}),[r]);return(0,o.useEffect)((()=>{var t;const e=null==r||null===(t=r.plugins())||void 0===t?void 0:t.autoScroll;e&&(u(e.isPlaying()),r.on("autoScroll:play",(()=>u(!0))).on("autoScroll:stop",(()=>u(!1))).on("reInit",(()=>u(e.isPlaying()))))}),[r]),o.createElement("div",{className:"embla"},o.createElement("div",{className:"embla__viewport",ref:s},o.createElement("div",{className:"embla__container"},e.map((t=>o.createElement("div",{className:"embla__slide",key:t},o.createElement("div",{className:"embla__slide__number"},o.createElement("span",null,t+1))))))),o.createElement("div",{className:"embla__controls"},o.createElement("div",{className:"embla__buttons"},o.createElement(a.U1,{onClick:()=>v(f),disabled:d}),o.createElement(a.WE,{onClick:()=>v(m),disabled:p})),o.createElement("button",{className:"embla__play",onClick:b,type:"button"},c?"Stop":"Start")))}}}]); -//# sourceMappingURL=1905-e1d22eac1c5e93f7c1be.js.map \ No newline at end of file diff --git a/docs/1905-e1d22eac1c5e93f7c1be.js.map b/docs/1905-e1d22eac1c5e93f7c1be.js.map deleted file mode 100644 index 34f2713f..00000000 --- a/docs/1905-e1d22eac1c5e93f7c1be.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"1905-e1d22eac1c5e93f7c1be.js","mappings":"qMAiBO,MAAMA,EAA8B,CACzCC,UAAW,UACXC,MAAO,EACPC,WAAY,IACZC,QAAQ,EACRC,YAAa,CAAC,EACdC,YAAY,EACZC,eAAe,EACfC,mBAAmB,EACnBC,kBAAkB,EAClBC,SAAU,MCMZ,SAASC,EAAWC,GAClB,IAAIC,EACAC,EACAC,EACAZ,OAJc,IAAAS,IAAAA,EAAqC,CAAC,GAKxD,IAGII,EAHAC,EAAU,EACVC,GAAmB,EACnBC,GAAc,EA+DlB,SAASC,IACP,GAAIL,EAAW,OACf,GAAIG,EAAkB,OACtBJ,EAASO,KAAK,mBAEd,MAAMC,EAASR,EAASS,kBAClB,YAAEC,GAAgBF,EAExBL,EAAUO,EAAYC,YAAW,KAC/BH,EAAOI,WAsBX,SAAmCJ,GACjC,MAAM,SACJK,EAAQ,iBACRC,EAAgB,eAChBC,EAAc,OACdC,EAAM,aACNC,EAAY,MACZC,EAAK,cACLC,EACAC,OAAO,WAAEC,EAAU,WAAEC,EAAU,UAAEC,GACjCxB,SAAS,KAAEyB,IACThB,EACEiB,EAAsC,YAAtB1B,EAAQZ,WAA2B,EAAI,EACvDuC,EAAOA,IAAsBC,EAEnC,IAAIC,EAAe,EACfC,EAAkB,EAClBC,EAAcjB,EAASkB,MACvBC,EAAsB,EACtBC,GAAa,EAEjB,SAASC,IACP,IAAIC,EAAgB,EAEpBrB,EAAiBsB,IAAIvB,GAErBe,EAAeH,EAAgB1B,EAAQX,MACvC0C,GAAeF,EACff,EAASwB,IAAIT,GACbZ,EAAOoB,IAAIvB,GAEXsB,EAAgBL,EAAcE,EAC9BH,EAAkBS,KAAKC,KAAKJ,GAC5BH,EAAsBF,EAEtB,MAAMU,EAAevB,EAAawB,WAAW,GAAG,GAAOvB,MAEnDA,EAAMa,QAAUS,IAClBrB,EAAciB,IAAIlB,EAAMa,OACxBb,EAAMkB,IAAII,GACVxC,EAASO,KAAK,WAGhB,MAAMmC,EACkB,YAAtB3C,EAAQZ,UACJkC,EAAWN,EAAegB,OAC1BT,EAAWP,EAAegB,OAEhC,IAAKP,GAAQkB,EAAY,CACvBT,GAAa,EACb,MAAMU,EAAsBpB,EAAUV,EAASkB,OAC/ClB,EAASuB,IAAIO,GACb3B,EAAOoB,IAAIvB,GACX+B,GACF,CAEA,OAAOjB,CACT,CAEA,MAAMA,EAAuB,CAC3BxC,UAAWA,IAAM0C,EACjBgB,SAAUA,KAAO,EACjBC,SAAUA,IAAMlB,EAChBmB,QAASA,IAAMd,EACfC,OACAc,gBAAiBtB,EACjBuB,gBAAiBvB,EACjBwB,YAAaxB,EACbyB,YAAazB,GAEf,OAAOC,CACT,CA7FwByB,CAA0B5C,GAC9CA,EAAO6C,UAAUC,OAAO,GACvBjE,GAEHe,GAAmB,CACrB,CAEA,SAASwC,IACP,GAAI3C,EAAW,OACf,IAAKG,EAAkB,OACvBJ,EAASO,KAAK,mBAEd,MAAMC,EAASR,EAASS,kBAClB,YAAEC,GAAgBF,EAExBA,EAAOI,WAAaV,EACpBQ,EAAY6C,aAAapD,GACzBA,EAAU,EAEVC,GAAmB,CACrB,CA2EA,SAASoD,IACFnD,GAAauC,GACpB,CAEA,SAASa,IACFpD,GAAaqD,GACpB,CAEA,SAASC,IACPtD,GAAc,EACduC,GACF,CAEA,SAASgB,IACPvD,GAAc,EACdC,GACF,CAEA,SAASuD,IACP7D,EAAS8D,IAAI,SAAUD,GACvBvD,GACF,CAEA,SAASoD,IACP1D,EAAS+D,GAAG,SAAUF,EACxB,CAkCA,MAV6B,CAC3BG,KAAM,aACNjE,QAASD,EACTmE,KAxNF,SACEC,EACAC,GAEAnE,EAAWkE,EAEX,MAAM,aAAEE,EAAY,eAAEC,GAAmBF,EACnCG,EAAcF,EAAalF,EAAgBW,EAAW0E,eACtDC,EAAaJ,EAAaE,EAAaxE,GAG7C,GAFAC,EAAUsE,EAAeG,GAErBxE,EAASyE,iBAAiBC,QAAU,EAAG,OAE3CrF,EAAaU,EAAQV,WACrBY,GAAY,EACZC,EAAyBF,EAASS,iBAAiBG,WAEnD,MAAM,WAAE+D,GAAe3E,EAASS,iBAC1BmE,IAAgB5E,EAASS,iBAAiBV,QAAQ8E,UAClDC,EC3DM,SACd9E,EACAJ,GAEA,MAAMmF,EAAgB/E,EAASJ,WAC/B,OAAQA,GAAYA,EAASmF,IAAmBA,CAClD,CDqDiBC,CAAsBhF,EAAUD,EAAQH,UAEjDgF,GACF5E,EAAS+D,GAAG,cAAeP,GAGzBoB,IAAgB7E,EAAQL,mBAC1BM,EAAS+D,GAAG,YAAaN,GAGvB1D,EAAQJ,kBACVgF,EAAWtC,IAAIyC,EAAM,aAAcnB,GAGjC5D,EAAQJ,mBAAqBI,EAAQL,mBACvCiF,EAAWtC,IAAIyC,EAAM,aAAclB,GAGjC7D,EAAQN,eACVO,EAAS+D,GAAG,kBAAmBnB,GAG7B7C,EAAQN,gBAAkBM,EAAQL,mBACpCiF,EAAWtC,IAAIrC,EAASiF,gBAAiB,WAAY3E,GAGnDP,EAAQP,YAAYc,GAC1B,EA2KE4E,QAzKF,WACElF,EACG8D,IAAI,cAAeN,GACnBM,IAAI,YAAaL,GACjBK,IAAI,kBAAmBlB,GACvBkB,IAAI,SAAUD,GAEjBjB,IACA3C,GAAY,EACZG,GAAmB,CACrB,EAgKE+E,KA3BF,SAAcC,QACsB,IAAvBA,IACT/F,EAAa+F,GAEf9E,GACF,EAuBE+E,KArBF,WACMjF,GAAkBwC,GACxB,EAoBE0C,MAlBF,WACMlF,IACFwC,IACAc,IAEJ,EAcE6B,UAZF,WACE,OAAOnF,CACT,EAaF,CAMAP,EAAW0E,mBAAgBiB,E,cE7K3B,MArF2CC,IACzC,MAAM,OAAEC,EAAM,QAAE3F,GAAY0F,GACrBE,EAAU3F,IAAY4F,EAAAA,EAAAA,GAAiB7F,EAAS,CACrDF,EAAW,CAAEL,YAAY,OAErB,EAAC+F,EAAU,EAACM,IAAgBC,EAAAA,EAAAA,WAAS,IAErC,gBACJC,EAAe,gBACfC,EAAe,kBACfC,EAAiB,kBACjBC,IACEC,EAAAA,EAAAA,IAAmBnG,GAEjBoG,GAAwBC,EAAAA,EAAAA,cAC3BC,IAA0B,IAADC,EACxB,MAAMC,EAAaxG,SAAmB,QAAXuG,EAARvG,EAAUyG,iBAAS,IAAAF,OAAX,EAARA,EAAqBC,WACxC,IAAKA,EAAY,SAG0B,IAAzCA,EAAWzG,QAAQL,kBACf8G,EAAWlB,MACXkB,EAAWnB,QAGjBiB,GAAU,GAEZ,CAACtG,IAGG0G,GAAiBL,EAAAA,EAAAA,cAAY,KAAO,IAADM,EACvC,MAAMH,EAAaxG,SAAmB,QAAX2G,EAAR3G,EAAUyG,iBAAS,IAAAE,OAAX,EAARA,EAAqBH,WACxC,IAAKA,EAAY,QAEEA,EAAWjB,YAC1BiB,EAAWnB,KACXmB,EAAWrB,OACH,GACX,CAACnF,IAaJ,OAXA4G,EAAAA,EAAAA,YAAU,KAAO,IAADC,EACd,MAAML,EAAaxG,SAAmB,QAAX6G,EAAR7G,EAAUyG,iBAAS,IAAAI,OAAX,EAARA,EAAqBL,WACnCA,IAELX,EAAaW,EAAWjB,aACxBvF,EACG+D,GAAG,mBAAmB,IAAM8B,GAAa,KACzC9B,GAAG,mBAAmB,IAAM8B,GAAa,KACzC9B,GAAG,UAAU,IAAM8B,EAAaW,EAAWjB,eAAa,GAC1D,CAACvF,IAGF8G,EAAAA,cAAA,OAAKC,UAAU,SACbD,EAAAA,cAAA,OAAKC,UAAU,kBAAkBC,IAAKrB,GACpCmB,EAAAA,cAAA,OAAKC,UAAU,oBACZrB,EAAOuB,KAAK/F,GACX4F,EAAAA,cAAA,OAAKC,UAAU,eAAeG,IAAKhG,GACjC4F,EAAAA,cAAA,OAAKC,UAAU,wBACbD,EAAAA,cAAA,YAAO5F,EAAQ,SAOzB4F,EAAAA,cAAA,OAAKC,UAAU,mBACbD,EAAAA,cAAA,OAAKC,UAAU,kBACbD,EAAAA,cAACK,EAAAA,GAAU,CACTC,QAASA,IAAMhB,EAAsBH,GACrCoB,SAAUtB,IAEZe,EAAAA,cAACQ,EAAAA,GAAU,CACTF,QAASA,IAAMhB,EAAsBF,GACrCmB,SAAUrB,KAIdc,EAAAA,cAAA,UAAQC,UAAU,cAAcK,QAASV,EAAgBa,KAAK,UAC3DhC,EAAY,OAAS,UAGtB,C","sources":["webpack://embla-carousel-docs/../src/components/Options.ts","webpack://embla-carousel-docs/../src/components/AutoScroll.ts","webpack://embla-carousel-docs/../src/components/utils.ts","webpack://embla-carousel-docs/./src/components/Sandbox/React/SandboxFilesSrc/AutoScroll/EmblaCarousel.tsx"],"sourcesContent":["import { CreateOptionsType } from 'embla-carousel'\n\nexport type RootNodeType =\n | null\n | ((emblaRoot: HTMLElement) => HTMLElement | null)\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: RootNodeType\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 { getAutoScrollRootNode } from './utils'\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 startDelay: number\n let timerId = 0\n let autoScrollActive = false\n let mouseIsOver = false\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 isDraggable = !!emblaApi.internalEngine().options.watchDrag\n const root = getAutoScrollRootNode(emblaApi, options.rootNode)\n\n if (isDraggable) {\n emblaApi.on('pointerDown', pointerDown)\n }\n\n if (isDraggable && !options.stopOnInteraction) {\n emblaApi.on('pointerUp', pointerUp)\n }\n\n if (options.stopOnMouseEnter) {\n eventStore.add(root, 'mouseenter', mouseEnter)\n }\n\n if (options.stopOnMouseEnter && !options.stopOnInteraction) {\n eventStore.add(root, 'mouseleave', mouseLeave)\n }\n\n if (options.stopOnFocusIn) {\n emblaApi.on('slideFocusStart', stopAutoScroll)\n }\n\n if (options.stopOnFocusIn && !options.stopOnInteraction) {\n eventStore.add(emblaApi.containerNode(), 'focusout', startAutoScroll)\n }\n\n if (options.playOnInit) startAutoScroll()\n }\n\n function destroy(): void {\n emblaApi\n .off('pointerDown', pointerDown)\n .off('pointerUp', pointerUp)\n .off('slideFocusStart', stopAutoScroll)\n .off('settle', settle)\n\n stopAutoScroll()\n destroyed = true\n autoScrollActive = false\n }\n\n function startAutoScroll(): void {\n if (destroyed) return\n if (autoScrollActive) return\n emblaApi.emit('autoScroll:play')\n\n const engine = emblaApi.internalEngine()\n const { ownerWindow } = engine\n\n timerId = ownerWindow.setTimeout(() => {\n engine.scrollBody = createAutoScrollBehaviour(engine)\n engine.animation.start()\n }, startDelay)\n\n autoScrollActive = true\n }\n\n function stopAutoScroll(): void {\n if (destroyed) return\n if (!autoScrollActive) return\n emblaApi.emit('autoScroll:stop')\n\n const engine = emblaApi.internalEngine()\n const { ownerWindow } = engine\n\n engine.scrollBody = defaultScrollBehaviour\n ownerWindow.clearTimeout(timerId)\n timerId = 0\n\n autoScrollActive = false\n }\n\n function createAutoScrollBehaviour(engine: EngineType): ScrollBodyType {\n const {\n location,\n previousLocation,\n offsetLocation,\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 previousLocation.set(location)\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(offsetLocation.get())\n : reachedMax(offsetLocation.get())\n\n if (!loop && reachedEnd) {\n hasSettled = true\n const constrainedLocation = constrain(location.get())\n location.set(constrainedLocation)\n target.set(location)\n stopAutoScroll()\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 pointerDown(): void {\n if (!mouseIsOver) stopAutoScroll()\n }\n\n function pointerUp(): void {\n if (!mouseIsOver) startAutoScrollOnSettle()\n }\n\n function mouseEnter(): void {\n mouseIsOver = true\n stopAutoScroll()\n }\n\n function mouseLeave(): void {\n mouseIsOver = false\n startAutoScroll()\n }\n\n function settle(): void {\n emblaApi.off('settle', settle)\n startAutoScroll()\n }\n\n function startAutoScrollOnSettle(): void {\n emblaApi.on('settle', settle)\n }\n\n function play(startDelayOverride?: number): void {\n if (typeof startDelayOverride !== 'undefined') {\n startDelay = startDelayOverride\n }\n startAutoScroll()\n }\n\n function stop(): void {\n if (autoScrollActive) stopAutoScroll()\n }\n\n function reset(): void {\n if (autoScrollActive) {\n stopAutoScroll()\n startAutoScrollOnSettle()\n }\n }\n\n function isPlaying(): boolean {\n return autoScrollActive\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 { EmblaCarouselType } from 'embla-carousel/components/EmblaCarousel'\nimport { RootNodeType } from './Options'\n\nexport function getAutoScrollRootNode(\n emblaApi: EmblaCarouselType,\n rootNode: RootNodeType\n): HTMLElement {\n const emblaRootNode = emblaApi.rootNode()\n return (rootNode && rootNode(emblaRootNode)) || emblaRootNode\n}\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","timerId","autoScrollActive","mouseIsOver","startAutoScroll","emit","engine","internalEngine","ownerWindow","setTimeout","scrollBody","location","previousLocation","offsetLocation","target","scrollTarget","index","indexPrevious","limit","reachedMin","reachedMax","constrain","loop","directionSign","noop","self","bodyVelocity","scrollDirection","rawLocation","get","rawLocationPrevious","hasSettled","seek","directionDiff","set","add","Math","sign","currentIndex","byDistance","reachedEnd","constrainedLocation","stopAutoScroll","duration","velocity","settled","useBaseFriction","useBaseDuration","useFriction","useDuration","createAutoScrollBehaviour","animation","start","clearTimeout","pointerDown","pointerUp","startAutoScrollOnSettle","mouseEnter","mouseLeave","settle","off","on","name","init","emblaApiInstance","optionsHandler","mergeOptions","optionsAtMedia","optionsBase","globalOptions","allOptions","scrollSnapList","length","eventStore","isDraggable","watchDrag","root","emblaRootNode","getAutoScrollRootNode","containerNode","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/2900-e240e5fd56030fc9c01e.js b/docs/2900-214a7fec38ece908cc5a.js similarity index 87% rename from docs/2900-e240e5fd56030fc9c01e.js rename to docs/2900-214a7fec38ece908cc5a.js index b79e9163..7bf60f9e 100644 --- a/docs/2900-e240e5fd56030fc9c01e.js +++ b/docs/2900-214a7fec38ece908cc5a.js @@ -1,2 +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(){const{slideRegistry:e}=t.internalEngine(),l=e[t.selectedScrollSnap()];return l?l.map((e=>n[e])).reduce(((e,t)=>Math.max(e,t)),0):null}function c(){null!==a()&&(t.containerNode().style.height=`${a()}px`)}return{name:"autoHeight",options:e,init:function(e){t=e;const{options:{axis:a},slideRects:s}=t.internalEngine();"y"!==a&&(n=s.map((e=>e.height)),l.forEach((e=>t.on(e,c))),c())},destroy:function(){l.forEach((e=>t.off(e,c)));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-e240e5fd56030fc9c01e.js.map \ No newline at end of file +"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(){const{slideRegistry:e}=t.internalEngine(),l=e[t.selectedScrollSnap()];return l?l.map((e=>n[e])).reduce(((e,t)=>Math.max(e,t)),0):null}function c(){null!==a()&&(t.containerNode().style.height=`${a()}px`)}return{name:"autoHeight",options:e,init:function(e){t=e;const{options:{axis:a},slideRects:s}=t.internalEngine();"y"!==a&&(n=s.map((e=>e.height)),l.forEach((e=>t.on(e,c))),c())},destroy:function(){l.forEach((e=>t.off(e,c)));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:f,onNextButtonClick:p}=(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:f,disabled:b}),l.createElement(s.WE,{onClick:p,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-214a7fec38ece908cc5a.js.map \ No newline at end of file diff --git a/docs/2900-e240e5fd56030fc9c01e.js.map b/docs/2900-214a7fec38ece908cc5a.js.map similarity index 98% rename from docs/2900-e240e5fd56030fc9c01e.js.map rename to docs/2900-214a7fec38ece908cc5a.js.map index a7f11f99..a1bc2259 100644 --- a/docs/2900-e240e5fd56030fc9c01e.js.map +++ b/docs/2900-214a7fec38ece908cc5a.js.map @@ -1 +1 @@ -{"version":3,"file":"2900-e240e5fd56030fc9c01e.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 | null {\n const { slideRegistry } = emblaApi.internalEngine()\n const selectedIndexes = slideRegistry[emblaApi.selectedScrollSnap()]\n\n if (!selectedIndexes) return null\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 const height = highestInView()\n if (height === null) return\n\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","highestInView","slideRegistry","internalEngine","selectedIndexes","selectedScrollSnap","map","index","reduce","a","b","Math","max","setContainerHeight","containerNode","style","height","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 +{"version":3,"file":"2900-214a7fec38ece908cc5a.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 | null {\n const { slideRegistry } = emblaApi.internalEngine()\n const selectedIndexes = slideRegistry[emblaApi.selectedScrollSnap()]\n\n if (!selectedIndexes) return null\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 const height = highestInView()\n if (height === null) return\n\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","highestInView","slideRegistry","internalEngine","selectedIndexes","selectedScrollSnap","map","index","reduce","a","b","Math","max","setContainerHeight","containerNode","style","height","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/3602-a755b8527cf29124ec87.js b/docs/3602-8d8cbfa5eb5898fd20e9.js similarity index 50% rename from docs/3602-a755b8527cf29124ec87.js rename to docs/3602-8d8cbfa5eb5898fd20e9.js index 330540ab..8557b5b6 100644 --- a/docs/3602-a755b8527cf29124ec87.js +++ b/docs/3602-8d8cbfa5eb5898fd20e9.js @@ -1,2 +1,2 @@ -"use strict";(self.webpackChunkembla_carousel_docs=self.webpackChunkembla_carousel_docs||[]).push([[3602],{3602:function(e,n,t){t.r(n),t.d(n,{default:function(){return p}});var o=t(4041);const a=e=>{const{children:n,...t}=e;return o.createElement("button",Object.assign({type:"button"},t),n)},l=e=>{const{children:n,...t}=e;return o.createElement("button",Object.assign({className:"embla__button embla__button--prev",type:"button"},t),o.createElement("svg",{className:"embla__button__svg",viewBox:"0 0 532 532"},o.createElement("path",{fill:"currentColor",d:"M176.34 520.646c-13.793 13.805-36.208 13.805-50.001 0-13.785-13.804-13.785-36.238 0-50.034L330.78 266 126.34 61.391c-13.785-13.805-13.785-36.239 0-50.044 13.793-13.796 36.208-13.796 50.002 0 22.928 22.947 206.395 206.507 229.332 229.454a35.065 35.065 0 0 1 10.326 25.126c0 9.2-3.393 18.26-10.326 25.2-45.865 45.901-206.404 206.564-229.332 229.52Z"}),o.createElement("path",{fill:"currentColor",d:"M355.66 11.354c13.793-13.805 36.208-13.805 50.001 0 13.785 13.804 13.785 36.238 0 50.034L201.22 266l204.442 204.61c13.785 13.805 13.785 36.239 0 50.044-13.793 13.796-36.208 13.796-50.002 0a5994246.277 5994246.277 0 0 0-229.332-229.454 35.065 35.065 0 0 1-10.326-25.126c0-9.2 3.393-18.26 10.326-25.2C172.192 194.973 332.731 34.31 355.66 11.354Z"}),o.createElement("path",{fill:"currentColor",d:"M520.646 355.66c13.805 13.793 13.805 36.208 0 50.001-13.804 13.785-36.238 13.785-50.034 0L266 201.22 61.391 405.66c-13.805 13.785-36.239 13.785-50.044 0-13.796-13.793-13.796-36.208 0-50.002 22.947-22.928 206.507-206.395 229.454-229.332a35.065 35.065 0 0 1 25.126-10.326c9.2 0 18.26 3.393 25.2 10.326 45.901 45.865 206.564 206.404 229.52 229.332Z"})),n)},s=e=>{const{children:n,...t}=e;return o.createElement("button",Object.assign({className:"embla__button embla__button--next",type:"button"},t),o.createElement("svg",{className:"embla__button__svg",viewBox:"0 0 532 532"},o.createElement("path",{fill:"currentColor",d:"M355.66 11.354c13.793-13.805 36.208-13.805 50.001 0 13.785 13.804 13.785 36.238 0 50.034L201.22 266l204.442 204.61c13.785 13.805 13.785 36.239 0 50.044-13.793 13.796-36.208 13.796-50.002 0a5994246.277 5994246.277 0 0 0-229.332-229.454 35.065 35.065 0 0 1-10.326-25.126c0-9.2 3.393-18.26 10.326-25.2C172.192 194.973 332.731 34.31 355.66 11.354Z"}),o.createElement("path",{fill:"currentColor",d:"M176.34 520.646c-13.793 13.805-36.208 13.805-50.001 0-13.785-13.804-13.785-36.238 0-50.034L330.78 266 126.34 61.391c-13.785-13.805-13.785-36.239 0-50.044 13.793-13.796 36.208-13.796 50.002 0 22.928 22.947 206.395 206.507 229.332 229.454a35.065 35.065 0 0 1 10.326 25.126c0 9.2-3.393 18.26-10.326 25.2-45.865 45.901-206.404 206.564-229.332 229.52Z"}),o.createElement("path",{fill:"currentColor",d:"M11.354 176.34c-13.805-13.793-13.805-36.208 0-50.001 13.804-13.785 36.238-13.785 50.034 0L266 330.78l204.61-204.442c13.805-13.785 36.239-13.785 50.044 0 13.796 13.793 13.796 36.208 0 50.002a5994246.277 5994246.277 0 0 0-229.454 229.332 35.065 35.065 0 0 1-25.126 10.326c-9.2 0-18.26-3.393-25.2-10.326C194.973 359.808 34.31 199.269 11.354 176.34Z"})),n)},c=e=>{const{selectedSnap:n,snapCount:t}=e;return o.createElement("div",{className:"embla__selected-snap-display"},n+1," / ",t)};var i=t(3710),r=t(2380),u=t(7154);var p=e=>{const{slides:n,options:t}=e,[p,d]=(0,u.A)(t,[(0,i.A)(),(0,r.A)()]),m=(0,o.useCallback)((e=>{var n;const t=null==e||null===(n=e.plugins())||void 0===n?void 0:n.autoplay;if(!t)return;(!1===t.options.stopOnInteraction?t.reset:t.stop)()}),[]),{selectedIndex:f,scrollSnaps:g,onDotButtonClick:b}=((e,n)=>{const{0:t,1:a}=(0,o.useState)(0),{0:l,1:s}=(0,o.useState)([]),c=(0,o.useCallback)((t=>{e&&(e.scrollTo(t),n&&n(e))}),[e,n]),i=(0,o.useCallback)((e=>{s(e.scrollSnapList())}),[]),r=(0,o.useCallback)((e=>{a(e.selectedScrollSnap())}),[]);return(0,o.useEffect)((()=>{e&&(i(e),r(e),e.on("reInit",i).on("reInit",r).on("select",r))}),[e,i,r]),{selectedIndex:t,scrollSnaps:l,onDotButtonClick:c}})(d,m),{prevBtnDisabled:E,nextBtnDisabled:v,onPrevButtonClick:_,onNextButtonClick:S}=((e,n)=>{const{0:t,1:a}=(0,o.useState)(!0),{0:l,1:s}=(0,o.useState)(!0),c=(0,o.useCallback)((()=>{e&&(e.scrollPrev(),n&&n(e))}),[e,n]),i=(0,o.useCallback)((()=>{e&&(e.scrollNext(),n&&n(e))}),[e,n]),r=(0,o.useCallback)((e=>{a(!e.canScrollPrev()),s(!e.canScrollNext())}),[]);return(0,o.useEffect)((()=>{e&&(r(e),e.on("reInit",r).on("select",r))}),[e,r]),{prevBtnDisabled:t,nextBtnDisabled:l,onPrevButtonClick:c,onNextButtonClick:i}})(d,m),{selectedSnap:C,snapCount:y}=(e=>{const{0:n,1:t}=(0,o.useState)(0),{0:a,1:l}=(0,o.useState)(0),s=(0,o.useCallback)((e=>{l(e.scrollSnapList().length),t(e.selectedScrollSnap())}),[]);return(0,o.useEffect)((()=>{e&&(s(e),e.on("select",s),e.on("reInit",s))}),[e,s]),{selectedSnap:n,snapCount:a}})(d);return o.createElement("section",{className:"embla",dir:"rtl"},o.createElement("div",{className:"embla__viewport",ref:p},o.createElement("div",{className:"embla__container"},n.map((e=>o.createElement("div",{className:"embla__slide",key:e},o.createElement("div",{className:"embla__slide__number"},e+1)))))),o.createElement("div",{className:"embla__controls"},o.createElement("div",{className:"embla__buttons"},o.createElement(l,{onClick:_,disabled:E}),o.createElement(s,{onClick:S,disabled:v})),o.createElement("div",{className:"embla__dots"},g.map(((e,n)=>o.createElement(a,{key:n,onClick:()=>b(n),className:"embla__dot".concat(n===f?" embla__dot--selected":"")})))),o.createElement(c,{selectedSnap:C,snapCount:y})))}},3710:function(e,n,t){t.d(n,{A:function(){return a}});const o={active:!0,breakpoints:{},delay:4e3,jump:!1,playOnInit:!0,stopOnFocusIn:!0,stopOnInteraction:!0,stopOnMouseEnter:!1,stopOnLastSnap:!1,rootNode:null};function a(e){let n,t,l,s;void 0===e&&(e={});let c=null,i=0,r=!1,u=!1,p=!1;function d(){l||(r||t.emit("autoplay:play"),function(){const{ownerWindow:e}=t.internalEngine();e.clearTimeout(i),i=e.setTimeout(b,s[t.selectedScrollSnap()]),c=(new Date).getTime(),t.emit("autoplay:timerset")}(),r=!0)}function m(){l||(r&&t.emit("autoplay:stop"),function(){const{ownerWindow:e}=t.internalEngine();e.clearTimeout(i),i=0,c=null,t.emit("autoplay:timerstopped")}(),r=!1)}function f(){if(g())return u=r,m();u&&d()}function g(){const{ownerDocument:e}=t.internalEngine();return"hidden"===e.visibilityState}function b(){const{index:e}=t.internalEngine(),o=e.clone().add(1).get(),a=t.scrollSnapList().length-1,l=n.stopOnLastSnap&&o===a;if(t.canScrollNext()?t.scrollNext(p):t.scrollTo(0,p),t.emit("autoplay:select"),l)return m();d()}return{name:"autoplay",options:e,init:function(c,i){t=c;const{mergeOptions:r,optionsAtMedia:u}=i,b=r(o,a.globalOptions),E=r(b,e);if(n=u(E),t.scrollSnapList().length<=1)return;p=n.jump,l=!1,s=function(e,n){const t=e.scrollSnapList();return"number"==typeof n?t.map((()=>n)):n(t,e)}(t,n.delay);const{eventStore:v,ownerDocument:_}=t.internalEngine(),S=!!t.internalEngine().options.watchDrag&&!n.stopOnMouseEnter,C=function(e,n){const t=e.rootNode();return n&&n(t)||t}(t,n.rootNode);v.add(_,"visibilitychange",f),S&&t.on("pointerDown",m),S&&!n.stopOnInteraction&&t.on("pointerUp",d),n.stopOnMouseEnter&&v.add(C,"mouseenter",m),n.stopOnMouseEnter&&!n.stopOnInteraction&&v.add(C,"mouseleave",d),n.stopOnFocusIn&&t.on("slideFocusStart",m),n.stopOnFocusIn&&!n.stopOnInteraction&&v.add(t.containerNode(),"focusout",d),n.playOnInit&&!g()&&d()},destroy:function(){t.off("pointerDown",m).off("pointerUp",d).off("slideFocusStart",m),m(),l=!0,r=!1},play:function(e){void 0!==e&&(p=e),d()},stop:function(){r&&m()},reset:function(){r&&d()},isPlaying:function(){return r},timeUntilNext:function(){return c?s[t.selectedScrollSnap()]-((new Date).getTime()-c):null}}}a.globalOptions=void 0},2380:function(e,n,t){t.d(n,{A:function(){return i}});var o=t(107);const a={active:!0,breakpoints:{},snapped:"is-snapped",inView:"is-in-view",draggable:"is-draggable",dragging:"is-dragging",loop:"is-loop"};function l(e){return(Array.isArray(e)?e:[e]).filter(Boolean)}function s(e,n){var t;e&&n.length&&(t=e.classList).remove.apply(t,(0,o.A)(n))}function c(e,n){var t;e&&n.length&&(t=e.classList).add.apply(t,(0,o.A)(n))}function i(e){let n,t,o,r;void 0===e&&(e={});let u=[],p=[];const d=["select"],m=["pointerDown","pointerUp"],f=["slidesInView"],g={snapped:[],inView:[],draggable:[],dragging:[],loop:[]};function b(e,n){("pointerDown"===n?c:s)(o,g.dragging)}function E(e,n,t){void 0===e&&(e=[]),void 0===n&&(n=[]);const o=n.map((e=>r[e])),a=e.map((e=>r[e]));return o.forEach((e=>s(e,t))),a.forEach((e=>c(e,t))),e}function v(){const{slideRegistry:e}=t.internalEngine(),n=e[t.selectedScrollSnap()];u=E(n,u,g.snapped)}function _(){const e=t.slidesInView();p=E(e,p,g.inView)}return{name:"classNames",options:e,init:function(s,u){t=s;const{mergeOptions:p,optionsAtMedia:E}=u,S=p(a,i.globalOptions),C=p(S,e);n=E(C),o=t.rootNode(),r=t.slideNodes();const{watchDrag:y,loop:h}=t.internalEngine().options,w=!!y;n.loop&&h&&(g.loop=l(n.loop),c(o,g.loop)),n.draggable&&w&&(g.draggable=l(n.draggable),c(o,g.draggable)),n.dragging&&(g.dragging=l(n.dragging),m.forEach((e=>t.on(e,b)))),n.snapped&&(g.snapped=l(n.snapped),d.forEach((e=>t.on(e,v))),v()),n.inView&&(g.inView=l(n.inView),f.forEach((e=>t.on(e,_))),_())},destroy:function(){m.forEach((e=>t.off(e,b))),d.forEach((e=>t.off(e,v))),f.forEach((e=>t.off(e,_))),s(o,g.loop),s(o,g.draggable),s(o,g.dragging),E([],u,g.snapped),E([],p,g.inView)}}}i.globalOptions=void 0}}]); -//# sourceMappingURL=3602-a755b8527cf29124ec87.js.map \ No newline at end of file +"use strict";(self.webpackChunkembla_carousel_docs=self.webpackChunkembla_carousel_docs||[]).push([[3602],{3602:function(e,n,t){t.r(n),t.d(n,{default:function(){return p}});var o=t(4041);const a=e=>{const{children:n,...t}=e;return o.createElement("button",Object.assign({type:"button"},t),n)},l=e=>{const{children:n,...t}=e;return o.createElement("button",Object.assign({className:"embla__button embla__button--prev",type:"button"},t),o.createElement("svg",{className:"embla__button__svg",viewBox:"0 0 532 532"},o.createElement("path",{fill:"currentColor",d:"M176.34 520.646c-13.793 13.805-36.208 13.805-50.001 0-13.785-13.804-13.785-36.238 0-50.034L330.78 266 126.34 61.391c-13.785-13.805-13.785-36.239 0-50.044 13.793-13.796 36.208-13.796 50.002 0 22.928 22.947 206.395 206.507 229.332 229.454a35.065 35.065 0 0 1 10.326 25.126c0 9.2-3.393 18.26-10.326 25.2-45.865 45.901-206.404 206.564-229.332 229.52Z"}),o.createElement("path",{fill:"currentColor",d:"M355.66 11.354c13.793-13.805 36.208-13.805 50.001 0 13.785 13.804 13.785 36.238 0 50.034L201.22 266l204.442 204.61c13.785 13.805 13.785 36.239 0 50.044-13.793 13.796-36.208 13.796-50.002 0a5994246.277 5994246.277 0 0 0-229.332-229.454 35.065 35.065 0 0 1-10.326-25.126c0-9.2 3.393-18.26 10.326-25.2C172.192 194.973 332.731 34.31 355.66 11.354Z"}),o.createElement("path",{fill:"currentColor",d:"M520.646 355.66c13.805 13.793 13.805 36.208 0 50.001-13.804 13.785-36.238 13.785-50.034 0L266 201.22 61.391 405.66c-13.805 13.785-36.239 13.785-50.044 0-13.796-13.793-13.796-36.208 0-50.002 22.947-22.928 206.507-206.395 229.454-229.332a35.065 35.065 0 0 1 25.126-10.326c9.2 0 18.26 3.393 25.2 10.326 45.901 45.865 206.564 206.404 229.52 229.332Z"})),n)},c=e=>{const{children:n,...t}=e;return o.createElement("button",Object.assign({className:"embla__button embla__button--next",type:"button"},t),o.createElement("svg",{className:"embla__button__svg",viewBox:"0 0 532 532"},o.createElement("path",{fill:"currentColor",d:"M355.66 11.354c13.793-13.805 36.208-13.805 50.001 0 13.785 13.804 13.785 36.238 0 50.034L201.22 266l204.442 204.61c13.785 13.805 13.785 36.239 0 50.044-13.793 13.796-36.208 13.796-50.002 0a5994246.277 5994246.277 0 0 0-229.332-229.454 35.065 35.065 0 0 1-10.326-25.126c0-9.2 3.393-18.26 10.326-25.2C172.192 194.973 332.731 34.31 355.66 11.354Z"}),o.createElement("path",{fill:"currentColor",d:"M176.34 520.646c-13.793 13.805-36.208 13.805-50.001 0-13.785-13.804-13.785-36.238 0-50.034L330.78 266 126.34 61.391c-13.785-13.805-13.785-36.239 0-50.044 13.793-13.796 36.208-13.796 50.002 0 22.928 22.947 206.395 206.507 229.332 229.454a35.065 35.065 0 0 1 10.326 25.126c0 9.2-3.393 18.26-10.326 25.2-45.865 45.901-206.404 206.564-229.332 229.52Z"}),o.createElement("path",{fill:"currentColor",d:"M11.354 176.34c-13.805-13.793-13.805-36.208 0-50.001 13.804-13.785 36.238-13.785 50.034 0L266 330.78l204.61-204.442c13.805-13.785 36.239-13.785 50.044 0 13.796 13.793 13.796 36.208 0 50.002a5994246.277 5994246.277 0 0 0-229.454 229.332 35.065 35.065 0 0 1-25.126 10.326c-9.2 0-18.26-3.393-25.2-10.326C194.973 359.808 34.31 199.269 11.354 176.34Z"})),n)},s=e=>{const{selectedSnap:n,snapCount:t}=e;return o.createElement("div",{className:"embla__selected-snap-display"},n+1," / ",t)};var i=t(3710),r=t(2380),u=t(7154);var p=e=>{const{slides:n,options:t}=e,[p,d]=(0,u.A)(t,[(0,i.A)(),(0,r.A)()]),m=(0,o.useCallback)((e=>{var n;const t=null==e||null===(n=e.plugins())||void 0===n?void 0:n.autoplay;if(!t)return;(!1===t.options.stopOnInteraction?t.reset:t.stop)()}),[]),{selectedIndex:f,scrollSnaps:g,onDotButtonClick:b}=((e,n)=>{const{0:t,1:a}=(0,o.useState)(0),{0:l,1:c}=(0,o.useState)([]),s=(0,o.useCallback)((t=>{e&&(e.scrollTo(t),n&&n(e))}),[e,n]),i=(0,o.useCallback)((e=>{c(e.scrollSnapList())}),[]),r=(0,o.useCallback)((e=>{a(e.selectedScrollSnap())}),[]);return(0,o.useEffect)((()=>{e&&(i(e),r(e),e.on("reInit",i).on("reInit",r).on("select",r))}),[e,i,r]),{selectedIndex:t,scrollSnaps:l,onDotButtonClick:s}})(d,m),{prevBtnDisabled:v,nextBtnDisabled:E,onPrevButtonClick:_,onNextButtonClick:S}=((e,n)=>{const{0:t,1:a}=(0,o.useState)(!0),{0:l,1:c}=(0,o.useState)(!0),s=(0,o.useCallback)((()=>{e&&(e.scrollPrev(),n&&n(e))}),[e,n]),i=(0,o.useCallback)((()=>{e&&(e.scrollNext(),n&&n(e))}),[e,n]),r=(0,o.useCallback)((e=>{a(!e.canScrollPrev()),c(!e.canScrollNext())}),[]);return(0,o.useEffect)((()=>{e&&(r(e),e.on("reInit",r).on("select",r))}),[e,r]),{prevBtnDisabled:t,nextBtnDisabled:l,onPrevButtonClick:s,onNextButtonClick:i}})(d,m),{selectedSnap:C,snapCount:y}=(e=>{const{0:n,1:t}=(0,o.useState)(0),{0:a,1:l}=(0,o.useState)(0),c=(0,o.useCallback)((e=>{l(e.scrollSnapList().length),t(e.selectedScrollSnap())}),[]);return(0,o.useEffect)((()=>{e&&(c(e),e.on("select",c),e.on("reInit",c))}),[e,c]),{selectedSnap:n,snapCount:a}})(d);return o.createElement("section",{className:"embla",dir:"rtl"},o.createElement("div",{className:"embla__viewport",ref:p},o.createElement("div",{className:"embla__container"},n.map((e=>o.createElement("div",{className:"embla__slide",key:e},o.createElement("div",{className:"embla__slide__number"},e+1)))))),o.createElement("div",{className:"embla__controls"},o.createElement("div",{className:"embla__buttons"},o.createElement(l,{onClick:_,disabled:v}),o.createElement(c,{onClick:S,disabled:E})),o.createElement("div",{className:"embla__dots"},g.map(((e,n)=>o.createElement(a,{key:n,onClick:()=>b(n),className:"embla__dot".concat(n===f?" embla__dot--selected":"")})))),o.createElement(s,{selectedSnap:C,snapCount:y})))}},3710:function(e,n,t){t.d(n,{A:function(){return a}});const o={active:!0,breakpoints:{},delay:4e3,jump:!1,playOnInit:!0,stopOnFocusIn:!0,stopOnInteraction:!0,stopOnMouseEnter:!1,stopOnLastSnap:!1,rootNode:null};function a(e){let n,t,l,c;void 0===e&&(e={});let s=null,i=0,r=!1,u=!1,p=!1,d=!1;function m(){l||(b()?p=!0:(r||t.emit("autoplay:play"),r=!0,function(){const{ownerWindow:e}=t.internalEngine();e.clearTimeout(i),i=e.setTimeout(C,c[t.selectedScrollSnap()]),s=(new Date).getTime(),t.emit("autoplay:timerset")}()))}function f(){l||(r&&t.emit("autoplay:stop"),r=!1,function(){const{ownerWindow:e}=t.internalEngine();e.clearTimeout(i),i=0,s=null,t.emit("autoplay:timerstopped")}())}function g(){if(b())return p=r,f();p&&m()}function b(){const{ownerDocument:e}=t.internalEngine();return"hidden"===e.visibilityState}function v(){u||f()}function E(){u||m()}function _(){u=!0,f()}function S(){u=!1,m()}function C(){const{index:e}=t.internalEngine(),o=e.clone().add(1).get(),a=t.scrollSnapList().length-1,l=n.stopOnLastSnap&&o===a;if(t.canScrollNext()?t.scrollNext(d):t.scrollTo(0,d),t.emit("autoplay:select"),l)return f();m()}return{name:"autoplay",options:e,init:function(s,i){t=s;const{mergeOptions:r,optionsAtMedia:u}=i,p=r(o,a.globalOptions),b=r(p,e);if(n=u(b),t.scrollSnapList().length<=1)return;d=n.jump,l=!1,c=function(e,n){const t=e.scrollSnapList();return"number"==typeof n?t.map((()=>n)):n(t,e)}(t,n.delay);const{eventStore:C,ownerDocument:y}=t.internalEngine(),h=!!t.internalEngine().options.watchDrag,w=function(e,n){const t=e.rootNode();return n&&n(t)||t}(t,n.rootNode);C.add(y,"visibilitychange",g),h&&t.on("pointerDown",v),h&&!n.stopOnInteraction&&t.on("pointerUp",E),n.stopOnMouseEnter&&C.add(w,"mouseenter",_),n.stopOnMouseEnter&&!n.stopOnInteraction&&C.add(w,"mouseleave",S),n.stopOnFocusIn&&t.on("slideFocusStart",f),n.stopOnFocusIn&&!n.stopOnInteraction&&C.add(t.containerNode(),"focusout",m),n.playOnInit&&m()},destroy:function(){t.off("pointerDown",v).off("pointerUp",E).off("slideFocusStart",f),f(),l=!0,r=!1},play:function(e){void 0!==e&&(d=e),m()},stop:function(){r&&f()},reset:function(){r&&m()},isPlaying:function(){return r},timeUntilNext:function(){return s?c[t.selectedScrollSnap()]-((new Date).getTime()-s):null}}}a.globalOptions=void 0},2380:function(e,n,t){t.d(n,{A:function(){return i}});var o=t(107);const a={active:!0,breakpoints:{},snapped:"is-snapped",inView:"is-in-view",draggable:"is-draggable",dragging:"is-dragging",loop:"is-loop"};function l(e){return(Array.isArray(e)?e:[e]).filter(Boolean)}function c(e,n){var t;e&&n.length&&(t=e.classList).remove.apply(t,(0,o.A)(n))}function s(e,n){var t;e&&n.length&&(t=e.classList).add.apply(t,(0,o.A)(n))}function i(e){let n,t,o,r;void 0===e&&(e={});let u=[],p=[];const d=["select"],m=["pointerdown","pointerup"],f=["slidesinview"],g={snapped:[],inView:[],draggable:[],dragging:[],loop:[]};function b(e,n){("pointerdown"===n?s:c)(o,g.dragging)}function v(e,n,t){void 0===e&&(e=[]),void 0===n&&(n=[]);const o=n.map((e=>r[e])),a=e.map((e=>r[e]));return o.forEach((e=>c(e,t))),a.forEach((e=>s(e,t))),e}function E(){const{slideRegistry:e}=t.internalEngine(),n=e[t.selectedScrollSnap()];u=v(n,u,g.snapped)}function _(){const e=t.slidesInView();p=v(e,p,g.inView)}return{name:"classNames",options:e,init:function(c,u){t=c;const{mergeOptions:p,optionsAtMedia:v}=u,S=p(a,i.globalOptions),C=p(S,e);n=v(C),o=t.rootNode(),r=t.slideNodes();const y=t.internalEngine().options;n.loop&&y.loop&&(g.loop=l(n.loop),s(o,g.loop)),n.draggable&&y.draggable&&(g.draggable=l(n.draggable),s(o,g.draggable)),n.dragging&&(g.dragging=l(n.dragging),m.forEach((e=>t.on(e,b)))),n.snapped&&(g.snapped=l(n.snapped),d.forEach((e=>t.on(e,E))),E()),n.inView&&(g.inView=l(n.inView),f.forEach((e=>t.on(e,_))),_())},destroy:function(){m.forEach((e=>t.off(e,b))),d.forEach((e=>t.off(e,E))),f.forEach((e=>t.off(e,_))),c(o,g.loop),c(o,g.draggable),c(o,g.dragging),v([],u,g.snapped),v([],p,g.inView),Object.keys(g).forEach((e=>{g[e]=[]}))}}}i.globalOptions=void 0}}]); +//# sourceMappingURL=3602-8d8cbfa5eb5898fd20e9.js.map \ No newline at end of file diff --git a/docs/3602-8d8cbfa5eb5898fd20e9.js.map b/docs/3602-8d8cbfa5eb5898fd20e9.js.map new file mode 100644 index 00000000..438f77b4 --- /dev/null +++ b/docs/3602-8d8cbfa5eb5898fd20e9.js.map @@ -0,0 +1 @@ +{"version":3,"file":"3602-8d8cbfa5eb5898fd20e9.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, EmblaCarouselType } from 'embla-carousel'\n\nexport type DelayOptionType =\n | number\n | ((scrollSnaps: number[], emblaApi: EmblaCarouselType) => number[])\n\nexport type RootNodeType =\n | null\n | ((emblaRoot: HTMLElement) => HTMLElement | null)\n\nexport type OptionsType = CreateOptionsType<{\n delay: DelayOptionType\n jump: boolean\n playOnInit: boolean\n stopOnFocusIn: boolean\n stopOnInteraction: boolean\n stopOnMouseEnter: boolean\n stopOnLastSnap: boolean\n rootNode: RootNodeType\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 { getAutoplayRootNode, normalizeDelay } from './utils'\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 autoplaySelect: 'autoplay:select'\n autoplayTimerSet: 'autoplay:timerset'\n autoplayTimerStopped: 'autoplay:timerstopped'\n }\n}\n\nexport type AutoplayType = CreatePluginType<\n {\n play: (jump?: boolean) => void\n stop: () => void\n reset: () => void\n isPlaying: () => boolean\n timeUntilNext: () => number | null\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 delay: ReturnType\n let timerStartTime: null | number = null\n let timerId = 0\n let autoplayActive = false\n let mouseIsOver = false\n let playOnDocumentVisible = false\n let jump = false\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 delay = normalizeDelay(emblaApi, options.delay)\n\n const { eventStore, ownerDocument } = emblaApi.internalEngine()\n const isDraggable = !!emblaApi.internalEngine().options.watchDrag\n const root = getAutoplayRootNode(emblaApi, options.rootNode)\n\n eventStore.add(ownerDocument, 'visibilitychange', visibilityChange)\n\n if (isDraggable) {\n emblaApi.on('pointerDown', pointerDown)\n }\n\n if (isDraggable && !options.stopOnInteraction) {\n emblaApi.on('pointerUp', pointerUp)\n }\n\n if (options.stopOnMouseEnter) {\n eventStore.add(root, 'mouseenter', mouseEnter)\n }\n\n if (options.stopOnMouseEnter && !options.stopOnInteraction) {\n eventStore.add(root, 'mouseleave', mouseLeave)\n }\n\n if (options.stopOnFocusIn) {\n emblaApi.on('slideFocusStart', stopAutoplay)\n }\n\n if (options.stopOnFocusIn && !options.stopOnInteraction) {\n eventStore.add(emblaApi.containerNode(), 'focusout', startAutoplay)\n }\n\n if (options.playOnInit) startAutoplay()\n }\n\n function destroy(): void {\n emblaApi\n .off('pointerDown', pointerDown)\n .off('pointerUp', pointerUp)\n .off('slideFocusStart', stopAutoplay)\n\n stopAutoplay()\n destroyed = true\n autoplayActive = false\n }\n\n function setTimer(): void {\n const { ownerWindow } = emblaApi.internalEngine()\n ownerWindow.clearTimeout(timerId)\n timerId = ownerWindow.setTimeout(next, delay[emblaApi.selectedScrollSnap()])\n timerStartTime = new Date().getTime()\n emblaApi.emit('autoplay:timerset')\n }\n\n function clearTimer(): void {\n const { ownerWindow } = emblaApi.internalEngine()\n ownerWindow.clearTimeout(timerId)\n timerId = 0\n timerStartTime = null\n emblaApi.emit('autoplay:timerstopped')\n }\n\n function startAutoplay(): void {\n if (destroyed) return\n if (documentIsHidden()) {\n playOnDocumentVisible = true\n return\n }\n if (!autoplayActive) emblaApi.emit('autoplay:play')\n\n autoplayActive = true\n setTimer()\n }\n\n function stopAutoplay(): void {\n if (destroyed) return\n if (autoplayActive) emblaApi.emit('autoplay:stop')\n\n autoplayActive = false\n clearTimer()\n }\n\n function visibilityChange(): void {\n if (documentIsHidden()) {\n playOnDocumentVisible = autoplayActive\n return stopAutoplay()\n }\n\n if (playOnDocumentVisible) startAutoplay()\n }\n\n function documentIsHidden(): boolean {\n const { ownerDocument } = emblaApi.internalEngine()\n return ownerDocument.visibilityState === 'hidden'\n }\n\n function pointerDown(): void {\n if (!mouseIsOver) stopAutoplay()\n }\n\n function pointerUp(): void {\n if (!mouseIsOver) startAutoplay()\n }\n\n function mouseEnter(): void {\n mouseIsOver = true\n stopAutoplay()\n }\n\n function mouseLeave(): void {\n mouseIsOver = false\n startAutoplay()\n }\n\n function play(jumpOverride?: boolean): void {\n if (typeof jumpOverride !== 'undefined') jump = jumpOverride\n startAutoplay()\n }\n\n function stop(): void {\n if (autoplayActive) stopAutoplay()\n }\n\n function reset(): void {\n if (autoplayActive) startAutoplay()\n }\n\n function isPlaying(): boolean {\n return autoplayActive\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 (emblaApi.canScrollNext()) {\n emblaApi.scrollNext(jump)\n } else {\n emblaApi.scrollTo(0, jump)\n }\n\n emblaApi.emit('autoplay:select')\n\n if (kill) return stopAutoplay()\n startAutoplay()\n }\n\n function timeUntilNext(): number | null {\n if (!timerStartTime) return null\n const currentDelay = delay[emblaApi.selectedScrollSnap()]\n const timePastSinceStart = new Date().getTime() - timerStartTime\n return currentDelay - timePastSinceStart\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 timeUntilNext\n }\n return self\n}\n\ndeclare namespace Autoplay {\n let globalOptions: AutoplayOptionsType | undefined\n}\n\nAutoplay.globalOptions = undefined\n\nexport default Autoplay\n","import { EmblaCarouselType } from 'embla-carousel/components/EmblaCarousel'\nimport { DelayOptionType, RootNodeType } from './Options'\n\nexport function normalizeDelay(\n emblaApi: EmblaCarouselType,\n delay: DelayOptionType\n): number[] {\n const scrollSnaps = emblaApi.scrollSnapList()\n\n if (typeof delay === 'number') {\n return scrollSnaps.map(() => delay)\n }\n return delay(scrollSnaps, emblaApi)\n}\n\nexport function getAutoplayRootNode(\n emblaApi: EmblaCarouselType,\n rootNode: RootNodeType\n): HTMLElement {\n const emblaRootNode = emblaApi.rootNode()\n return (rootNode && rootNode(emblaRootNode)) || emblaRootNode\n}\n","import { defaultOptions, OptionsType, ClassNamesListType } from './Options'\nimport { addClass, normalizeClassNames, 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 let snappedIndexes: number[] = []\n let inViewIndexes: number[] = []\n\n const selectedEvents: EmblaEventType[] = ['select']\n const draggingEvents: EmblaEventType[] = ['pointerdown', 'pointerup']\n const inViewEvents: EmblaEventType[] = ['slidesinview']\n const classNames: ClassNamesListType = {\n snapped: [],\n inView: [],\n draggable: [],\n dragging: [],\n loop: []\n }\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\n const coreOptions = emblaApi.internalEngine().options\n\n if (options.loop && coreOptions.loop) {\n classNames.loop = normalizeClassNames(options.loop)\n addClass(root, classNames.loop)\n }\n\n if (options.draggable && coreOptions.draggable) {\n classNames.draggable = normalizeClassNames(options.draggable)\n addClass(root, classNames.draggable)\n }\n\n if (options.dragging) {\n classNames.dragging = normalizeClassNames(options.dragging)\n draggingEvents.forEach((evt) => emblaApi.on(evt, toggleDraggingClass))\n }\n\n if (options.snapped) {\n classNames.snapped = normalizeClassNames(options.snapped)\n selectedEvents.forEach((evt) => emblaApi.on(evt, toggleSnappedClasses))\n toggleSnappedClasses()\n }\n\n if (options.inView) {\n classNames.inView = normalizeClassNames(options.inView)\n inViewEvents.forEach((evt) => emblaApi.on(evt, toggleInViewClasses))\n toggleInViewClasses()\n }\n }\n\n function destroy(): void {\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\n removeClass(root, classNames.loop)\n removeClass(root, classNames.draggable)\n removeClass(root, classNames.dragging)\n toggleSlideClasses([], snappedIndexes, classNames.snapped)\n toggleSlideClasses([], inViewIndexes, classNames.inView)\n\n Object.keys(classNames).forEach((classNameKey) => {\n const key = classNameKey\n classNames[key] = []\n })\n }\n\n function toggleDraggingClass(\n _: EmblaCarouselType,\n evt: EmblaEventType\n ): void {\n const toggleClass = evt === 'pointerdown' ? addClass : removeClass\n toggleClass(root, classNames.dragging)\n }\n\n function toggleSlideClasses(\n addClassIndexes: number[] = [],\n removeClassIndexes: number[] = [],\n classNames: string[]\n ): number[] {\n const removeClassSlides = removeClassIndexes.map((index) => slides[index])\n const addClassSlides = addClassIndexes.map((index) => slides[index])\n\n removeClassSlides.forEach((slide) => removeClass(slide, classNames))\n addClassSlides.forEach((slide) => addClass(slide, classNames))\n\n return addClassIndexes\n }\n\n function toggleSnappedClasses(): void {\n const { slideRegistry } = emblaApi.internalEngine()\n const newSnappedIndexes = slideRegistry[emblaApi.selectedScrollSnap()]\n\n snappedIndexes = toggleSlideClasses(\n newSnappedIndexes,\n snappedIndexes,\n classNames.snapped\n )\n }\n\n function toggleInViewClasses(): void {\n const newInViewIndexes = emblaApi.slidesInView()\n\n inViewIndexes = toggleSlideClasses(\n newInViewIndexes,\n inViewIndexes,\n classNames.inView\n )\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","timerStartTime","timerId","autoplayActive","mouseIsOver","playOnDocumentVisible","startAutoplay","documentIsHidden","emit","ownerWindow","internalEngine","clearTimeout","setTimeout","next","Date","getTime","setTimer","stopAutoplay","clearTimer","visibilityChange","ownerDocument","visibilityState","pointerDown","pointerUp","mouseEnter","mouseLeave","nextIndex","clone","add","get","lastIndex","kill","name","init","emblaApiInstance","optionsHandler","mergeOptions","optionsAtMedia","optionsBase","globalOptions","allOptions","normalizeDelay","eventStore","isDraggable","watchDrag","root","emblaRootNode","getAutoplayRootNode","containerNode","destroy","off","play","jumpOverride","isPlaying","timeUntilNext","undefined","snapped","inView","draggable","dragging","loop","normalizeClassNames","classNames","Array","isArray","filter","Boolean","removeClass","node","_node$classList","classList","remove","apply","_toConsumableArray","addClass","_node$classList2","snappedIndexes","inViewIndexes","selectedEvents","draggingEvents","inViewEvents","toggleDraggingClass","evt","toggleSlideClasses","addClassIndexes","removeClassIndexes","removeClassSlides","addClassSlides","forEach","slide","toggleSnappedClasses","slideRegistry","newSnappedIndexes","toggleInViewClasses","newInViewIndexes","slidesInView","slideNodes","coreOptions","keys","classNameKey"],"sourceRoot":""} \ No newline at end of file diff --git a/docs/3602-a755b8527cf29124ec87.js.map b/docs/3602-a755b8527cf29124ec87.js.map deleted file mode 100644 index 7dbb32a6..00000000 --- a/docs/3602-a755b8527cf29124ec87.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"3602-a755b8527cf29124ec87.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'\nimport { getAutoplayRootNode, normalizeDelay } from './utils'\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 autoplaySelect: 'autoplay:select'\n autoplayTimerSet: 'autoplay:timerset'\n autoplayTimerStopped: 'autoplay:timerstopped'\n }\n}\n\nexport type AutoplayType = CreatePluginType<\n {\n play: (jump?: boolean) => void\n stop: () => void\n reset: () => void\n isPlaying: () => boolean\n timeUntilNext: () => number | null\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 delay: ReturnType\n let timerStartTime: null | number = null\n let timerId = 0\n let autoplayActive = false\n let playOnDocumentVisible = false\n let jump = false\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 delay = normalizeDelay(emblaApi, options.delay)\n\n const { eventStore, ownerDocument } = emblaApi.internalEngine()\n const isDraggable = !!emblaApi.internalEngine().options.watchDrag\n const stopOnPointerDown = isDraggable && !options.stopOnMouseEnter\n const root = getAutoplayRootNode(emblaApi, options.rootNode)\n\n eventStore.add(ownerDocument, 'visibilitychange', visibilityChange)\n\n if (stopOnPointerDown) {\n emblaApi.on('pointerDown', stopAutoplay)\n }\n\n if (stopOnPointerDown && !options.stopOnInteraction) {\n emblaApi.on('pointerUp', startAutoplay)\n }\n\n if (options.stopOnMouseEnter) {\n eventStore.add(root, 'mouseenter', stopAutoplay)\n }\n\n if (options.stopOnMouseEnter && !options.stopOnInteraction) {\n eventStore.add(root, 'mouseleave', startAutoplay)\n }\n\n if (options.stopOnFocusIn) {\n emblaApi.on('slideFocusStart', stopAutoplay)\n }\n\n if (options.stopOnFocusIn && !options.stopOnInteraction) {\n eventStore.add(emblaApi.containerNode(), 'focusout', startAutoplay)\n }\n\n if (options.playOnInit && !documentIsHidden()) startAutoplay()\n }\n\n function destroy(): void {\n emblaApi\n .off('pointerDown', stopAutoplay)\n .off('pointerUp', startAutoplay)\n .off('slideFocusStart', stopAutoplay)\n stopAutoplay()\n destroyed = true\n autoplayActive = false\n }\n\n function setTimer(): void {\n const { ownerWindow } = emblaApi.internalEngine()\n ownerWindow.clearTimeout(timerId)\n timerId = ownerWindow.setTimeout(next, delay[emblaApi.selectedScrollSnap()])\n timerStartTime = new Date().getTime()\n emblaApi.emit('autoplay:timerset')\n }\n\n function clearTimer(): void {\n const { ownerWindow } = emblaApi.internalEngine()\n ownerWindow.clearTimeout(timerId)\n timerId = 0\n timerStartTime = null\n emblaApi.emit('autoplay:timerstopped')\n }\n\n function startAutoplay(): void {\n if (destroyed) return\n if (!autoplayActive) emblaApi.emit('autoplay:play')\n\n setTimer()\n autoplayActive = true\n }\n\n function stopAutoplay(): void {\n if (destroyed) return\n if (autoplayActive) emblaApi.emit('autoplay:stop')\n\n clearTimer()\n autoplayActive = false\n }\n\n function visibilityChange(): void {\n if (documentIsHidden()) {\n playOnDocumentVisible = autoplayActive\n return stopAutoplay()\n }\n\n if (playOnDocumentVisible) startAutoplay()\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 startAutoplay()\n }\n\n function stop(): void {\n if (autoplayActive) stopAutoplay()\n }\n\n function reset(): void {\n if (autoplayActive) startAutoplay()\n }\n\n function isPlaying(): boolean {\n return autoplayActive\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 (emblaApi.canScrollNext()) {\n emblaApi.scrollNext(jump)\n } else {\n emblaApi.scrollTo(0, jump)\n }\n\n emblaApi.emit('autoplay:select')\n\n if (kill) return stopAutoplay()\n startAutoplay()\n }\n\n function timeUntilNext(): number | null {\n if (!timerStartTime) return null\n const currentDelay = delay[emblaApi.selectedScrollSnap()]\n const timePastSinceStart = new Date().getTime() - timerStartTime\n return currentDelay - timePastSinceStart\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 timeUntilNext\n }\n return self\n}\n\ndeclare namespace Autoplay {\n let globalOptions: AutoplayOptionsType | undefined\n}\n\nAutoplay.globalOptions = undefined\n\nexport default Autoplay\n","import { EmblaCarouselType } from 'embla-carousel/components/EmblaCarousel'\nimport { DelayOptionType, RootNodeType } from './Options'\n\nexport function normalizeDelay(\n emblaApi: EmblaCarouselType,\n delay: DelayOptionType\n): number[] {\n const scrollSnaps = emblaApi.scrollSnapList()\n\n if (typeof delay === 'number') {\n return scrollSnaps.map(() => delay)\n }\n return delay(scrollSnaps, emblaApi)\n}\n\nexport function getAutoplayRootNode(\n emblaApi: EmblaCarouselType,\n rootNode: RootNodeType\n) {\n const emblaRootNode = emblaApi.rootNode()\n return (rootNode && rootNode(emblaRootNode)) || emblaRootNode\n}\n","import {\n ClassNameOptionType,\n ClassNamesListType,\n defaultOptions,\n OptionsType\n} from './Options'\nimport { addClass, normalizeClassNames, 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 let snappedIndexes: number[] = []\n let inViewIndexes: number[] = []\n const selectedEvents: EmblaEventType[] = ['select']\n const draggingEvents: EmblaEventType[] = ['pointerDown', 'pointerUp']\n const inViewEvents: EmblaEventType[] = ['slidesInView']\n const classNames: { [K in keyof ClassNamesListType]: string[] } = {\n snapped: [],\n inView: [],\n draggable: [],\n dragging: [],\n loop: []\n }\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\n const { watchDrag, loop } = emblaApi.internalEngine().options\n const isDraggable = !!watchDrag\n\n if (options.loop && loop) {\n classNames.loop = normalizeClassNames(options.loop)\n addClass(root, classNames.loop)\n }\n if (options.draggable && isDraggable) {\n classNames.draggable = normalizeClassNames(options.draggable)\n addClass(root, classNames.draggable)\n }\n if (options.dragging) {\n classNames.dragging = normalizeClassNames(options.dragging)\n draggingEvents.forEach((evt) => emblaApi.on(evt, toggleDraggingClass))\n }\n if (options.snapped) {\n classNames.snapped = normalizeClassNames(options.snapped)\n selectedEvents.forEach((evt) => emblaApi.on(evt, toggleSnappedClasses))\n toggleSnappedClasses()\n }\n if (options.inView) {\n classNames.inView = normalizeClassNames(options.inView)\n inViewEvents.forEach((evt) => emblaApi.on(evt, toggleInViewClasses))\n toggleInViewClasses()\n }\n }\n\n function destroy(): void {\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\n removeClass(root, classNames.loop)\n removeClass(root, classNames.draggable)\n removeClass(root, classNames.dragging)\n toggleSlideClasses([], snappedIndexes, classNames.snapped)\n toggleSlideClasses([], inViewIndexes, classNames.inView)\n }\n\n function toggleDraggingClass(\n _: EmblaCarouselType,\n evt: EmblaEventType\n ): void {\n const toggleClass = evt === 'pointerDown' ? addClass : removeClass\n toggleClass(root, classNames.dragging)\n }\n\n function toggleSlideClasses(\n addClassIndexes: number[] = [],\n removeClassIndexes: number[] = [],\n classNames: string[]\n ): number[] {\n const removeClassSlides = removeClassIndexes.map((index) => slides[index])\n const addClassSlides = addClassIndexes.map((index) => slides[index])\n\n removeClassSlides.forEach((slide) => removeClass(slide, classNames))\n addClassSlides.forEach((slide) => addClass(slide, classNames))\n\n return addClassIndexes\n }\n\n function toggleSnappedClasses(): void {\n const { slideRegistry } = emblaApi.internalEngine()\n const newSnappedIndexes = slideRegistry[emblaApi.selectedScrollSnap()]\n\n snappedIndexes = toggleSlideClasses(\n newSnappedIndexes,\n snappedIndexes,\n classNames.snapped\n )\n }\n\n function toggleInViewClasses(): void {\n const newInViewIndexes = emblaApi.slidesInView()\n\n inViewIndexes = toggleSlideClasses(\n newInViewIndexes,\n inViewIndexes,\n classNames.inView\n )\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","timerStartTime","timerId","autoplayActive","playOnDocumentVisible","startAutoplay","emit","ownerWindow","internalEngine","clearTimeout","setTimeout","next","Date","getTime","setTimer","stopAutoplay","clearTimer","visibilityChange","documentIsHidden","ownerDocument","visibilityState","nextIndex","clone","add","get","lastIndex","kill","name","init","emblaApiInstance","optionsHandler","mergeOptions","optionsAtMedia","optionsBase","globalOptions","allOptions","normalizeDelay","eventStore","stopOnPointerDown","watchDrag","root","emblaRootNode","getAutoplayRootNode","containerNode","destroy","off","play","jumpOverride","isPlaying","timeUntilNext","undefined","snapped","inView","draggable","dragging","loop","normalizeClassNames","classNames","Array","isArray","filter","Boolean","removeClass","node","_node$classList","classList","remove","apply","_toConsumableArray","addClass","_node$classList2","snappedIndexes","inViewIndexes","selectedEvents","draggingEvents","inViewEvents","toggleDraggingClass","evt","toggleSlideClasses","addClassIndexes","removeClassIndexes","removeClassSlides","addClassSlides","forEach","slide","toggleSnappedClasses","slideRegistry","newSnappedIndexes","toggleInViewClasses","newInViewIndexes","slidesInView","slideNodes","isDraggable"],"sourceRoot":""} \ No newline at end of file diff --git a/docs/404.html b/docs/404.html index 60e8fc49..87bb86e0 100644 --- a/docs/404.html +++ b/docs/404.html @@ -185,6 +185,6 @@ - \ 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 5aed888c..13c24214 100644 --- a/docs/404/index.html +++ b/docs/404/index.html @@ -185,6 +185,6 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/docs/5029-465f0d86594ce0dfeb53.js b/docs/5029-b8fc13447d4c74a8a2b8.js similarity index 95% rename from docs/5029-465f0d86594ce0dfeb53.js rename to docs/5029-b8fc13447d4c74a8a2b8.js index 30dbbfb9..2f90a14d 100644 --- a/docs/5029-465f0d86594ce0dfeb53.js +++ b/docs/5029-b8fc13447d4c74a8a2b8.js @@ -1,2 +1,2 @@ -"use strict";(self.webpackChunkembla_carousel_docs=self.webpackChunkembla_carousel_docs||[]).push([[5029],{642:function(e,t,n){n.d(t,{R:function(){return l},c:function(){return s}});var o=n(4041);const l=(e,t)=>{const{0:n,1:l}=(0,o.useState)(0),{0:s,1:c}=(0,o.useState)([]),a=(0,o.useCallback)((n=>{e&&(e.scrollTo(n),t&&t(e))}),[e,t]),r=(0,o.useCallback)((e=>{c(e.scrollSnapList())}),[]),i=(0,o.useCallback)((e=>{l(e.selectedScrollSnap())}),[]);return(0,o.useEffect)((()=>{e&&(r(e),i(e),e.on("reInit",r).on("reInit",i).on("select",i))}),[e,r,i]),{selectedIndex:n,scrollSnaps:s,onDotButtonClick:a}},s=e=>{const{children:t,...n}=e;return o.createElement("button",Object.assign({type:"button"},n),t)}},5029:function(e,t,n){n.r(t),n.d(t,{default:function(){return u}});var o=n(4041),l=n(7154);function s(e,t,n){return Math.min(Math.max(e,t),n)}function c(e){return"number"==typeof e&&!isNaN(e)}function a(e){void 0===e&&(e={});const t=1,n=0,o=.68;let l,a,r,i,d=[],u=0,f=0,p=0,m=!1;function g(){_(l.selectedScrollSnap(),t)}function b(){m=!1}function E(){m=!1,u=0,f=0}function S(){const e=l.internalEngine().scrollBody.duration();f=e?0:t,m=!0,e||g()}function v(e){const{scrollSnaps:t,location:n,target:o}=l.internalEngine();!c(e)||d[e]<.5||(n.set(t[e]),o.set(n))}function _(e,o){l.scrollSnapList().forEach(((c,a)=>{const r=Math.abs(o),i=d[a],f=a===e,g=s(f?i+r:i-r,n,t);d[a]=g;const b=f&&m,E=l.previousScrollSnap();b&&(d[E]=1-g),f&&function(e,t){const{index:n,dragHandler:o,scrollSnaps:s}=l.internalEngine(),c=o.pointerDown(),a=1/(s.length-1);let r=e,i=c?l.selectedScrollSnap():l.previousScrollSnap();if(c&&r===i){const e=-1*Math.sign(u);r=i,i=n.clone().set(i).add(e).get()}const d=i*a,f=(r-i)*a;p=d+f*t}(e,g),function(e){const t=l.internalEngine().slideRegistry[e],{scrollSnaps:o,containerRect:s}=l.internalEngine(),c=d[e];t.forEach((t=>{const a=l.slideNodes()[t].style,r=parseFloat(c.toFixed(2)),i=r>n,d=function(e){const{axis:t}=l.internalEngine();return`translate${t.scroll.toUpperCase()}(${t.direction(e)}px)`}(i?o[e]:s.width+2);i&&(a.transform=d),a.opacity=r.toString(),a.pointerEvents=c>.5?"auto":"none",i||(a.transform=d)}))}(a)}))}function h(){const{dragHandler:e,index:t,scrollBody:n}=l.internalEngine(),o=l.selectedScrollSnap();if(!e.pointerDown())return o;const s=Math.sign(n.velocity()),c=Math.sign(u),a=t.clone().set(o).add(-1*s).get();return s&&c?c===s?a:o:null}function y(){const{target:e,location:n}=l.internalEngine(),s=e.get()-n.get(),r=Math.abs(s)>=1,i=h(),p=!c(i);return function(e){const{dragHandler:n,scrollBody:l}=e.internalEngine(),s=n.pointerDown(),r=l.velocity(),i=l.duration(),p=h(),m=!c(p);if(s){if(!r)return;u+=r,f=Math.abs(r/a),v(p)}if(!s){if(!i||m)return;f+=(t-d[p])/i,f*=o}m||_(p,f)}(l),!p&&!r&&d[i]>.999}function k(){return p}return{name:"fade",options:e,init:function(e){l=e;const o=l.selectedScrollSnap(),{scrollBody:c,containerRect:u,axis:f}=l.internalEngine(),p=f.measureSize(u);a=s(.75*p,200,500),m=!1,d=l.scrollSnapList().map(((e,l)=>l===o?t:n)),r=c.settled,i=l.scrollProgress,c.settled=y,l.scrollProgress=k,l.on("select",S).on("slideFocus",g).on("pointerDown",E).on("pointerUp",b),function(){const{translate:e,slideLooper:t}=l.internalEngine();e.clear(),e.toggleActive(!1),t.loopPoints.forEach((e=>{let{translate:t}=e;t.clear(),t.toggleActive(!1)}))}(),g()},destroy:function(){const{scrollBody:e}=l.internalEngine();e.settled=r,l.scrollProgress=i,l.off("select",S).off("slideFocus",g).off("pointerDown",E).off("pointerUp",b),l.slideNodes().forEach((e=>{const t=e.style;t.opacity="",t.transform="",t.pointerEvents="",e.getAttribute("style")||e.removeAttribute("style")}))}}}a.globalOptions=void 0;var r=n(7105),i=n(642),d=n(6448);var u=e=>{const{slides:t,options:n}=e,[s,c]=(0,l.A)(n,[a()]),{selectedIndex:u,scrollSnaps:f,onDotButtonClick:p}=(0,i.R)(c),{prevBtnDisabled:m,nextBtnDisabled:g,onPrevButtonClick:b,onNextButtonClick:E}=(0,r.Hd)(c);return o.createElement("div",{className:"embla"},o.createElement("div",{className:"embla__viewport",ref:s},o.createElement("div",{className:"embla__container"},t.map((e=>o.createElement("div",{className:"embla__slide",key:e},o.createElement("img",{className:"embla__slide__img",src:(0,d.u)(e),alt:"Your alt text"})))))),o.createElement("div",{className:"embla__controls"},o.createElement("div",{className:"embla__buttons"},o.createElement(r.U1,{onClick:b,disabled:m}),o.createElement(r.WE,{onClick:E,disabled:g})),o.createElement("div",{className:"embla__dots"},f.map(((e,t)=>o.createElement(i.c,{key:t,onClick:()=>p(t),className:"embla__dot".concat(t===u?" embla__dot--selected":"")}))))))}},6448:function(e,t,n){n.d(t,{u:function(){return l}});const o=[n.p+"static/slide-1-47ed6052f4455272d8f76db16447d760.jpg",n.p+"static/slide-2-dc15cfe63eb4aeb8c9c09823179ee64c.jpg",n.p+"static/slide-3-6362505742d23d7cd240880140151a95.jpg",n.p+"static/slide-4-ebad84cfea5ff9481504ded363c22003.jpg",n.p+"static/slide-5-2d88e98502aa565d6269834d7a7be406.jpg"],l=e=>o[e%o.length]}}]); -//# sourceMappingURL=5029-465f0d86594ce0dfeb53.js.map \ No newline at end of file +"use strict";(self.webpackChunkembla_carousel_docs=self.webpackChunkembla_carousel_docs||[]).push([[5029],{642:function(e,t,n){n.d(t,{R:function(){return l},c:function(){return s}});var o=n(4041);const l=(e,t)=>{const{0:n,1:l}=(0,o.useState)(0),{0:s,1:c}=(0,o.useState)([]),a=(0,o.useCallback)((n=>{e&&(e.scrollTo(n),t&&t(e))}),[e,t]),r=(0,o.useCallback)((e=>{c(e.scrollSnapList())}),[]),i=(0,o.useCallback)((e=>{l(e.selectedScrollSnap())}),[]);return(0,o.useEffect)((()=>{e&&(r(e),i(e),e.on("reInit",r).on("reInit",i).on("select",i))}),[e,r,i]),{selectedIndex:n,scrollSnaps:s,onDotButtonClick:a}},s=e=>{const{children:t,...n}=e;return o.createElement("button",Object.assign({type:"button"},n),t)}},5029:function(e,t,n){n.r(t),n.d(t,{default:function(){return u}});var o=n(4041),l=n(7154);function s(e,t,n){return Math.min(Math.max(e,t),n)}function c(e){return"number"==typeof e&&!isNaN(e)}function a(e){void 0===e&&(e={});const t=1,n=0,o=.68;let l,a,r,i,d=[],u=0,f=0,p=0,m=!1;function g(){_(l.selectedScrollSnap(),t)}function b(){m=!1}function E(){m=!1,u=0,f=0}function S(){const e=l.internalEngine().scrollBody.duration();f=e?0:t,m=!0,e||g()}function v(e){const{scrollSnaps:t,location:n,target:o}=l.internalEngine();!c(e)||d[e]<.5||(n.set(t[e]),o.set(n))}function _(e,o){l.scrollSnapList().forEach(((c,a)=>{const r=Math.abs(o),i=d[a],f=a===e,g=s(f?i+r:i-r,n,t);d[a]=g;const b=f&&m,E=l.previousScrollSnap();b&&(d[E]=1-g),f&&function(e,t){const{index:n,dragHandler:o,scrollSnaps:s}=l.internalEngine(),c=o.pointerDown(),a=1/(s.length-1);let r=e,i=c?l.selectedScrollSnap():l.previousScrollSnap();if(c&&r===i){const e=-1*Math.sign(u);r=i,i=n.clone().set(i).add(e).get()}const d=i*a,f=(r-i)*a;p=d+f*t}(e,g),function(e){const t=l.internalEngine().slideRegistry[e],{scrollSnaps:o,containerRect:s}=l.internalEngine(),c=d[e];t.forEach((t=>{const a=l.slideNodes()[t].style,r=parseFloat(c.toFixed(2)),i=r>n,d=function(e){const{axis:t}=l.internalEngine();return`translate${t.scroll.toUpperCase()}(${t.direction(e)}px)`}(i?o[e]:s.width+2);i&&(a.transform=d),a.opacity=r.toString(),a.pointerEvents=c>.5?"auto":"none",i||(a.transform=d)}))}(a)}))}function h(){const{dragHandler:e,index:t,scrollBody:n}=l.internalEngine(),o=l.selectedScrollSnap();if(!e.pointerDown())return o;const s=Math.sign(n.velocity()),c=Math.sign(u),a=t.clone().set(o).add(-1*s).get();return s&&c?c===s?a:o:null}function y(){const{target:e,location:n}=l.internalEngine(),s=e.get()-n.get(),r=Math.abs(s)>=1,i=h(),p=!c(i);return function(e){const{dragHandler:n,scrollBody:l}=e.internalEngine(),s=n.pointerDown(),r=l.velocity(),i=l.duration(),p=h(),m=!c(p);if(s){if(!r)return;u+=r,f=Math.abs(r/a),v(p)}if(!s){if(!i||m)return;f+=(t-d[p])/i,f*=o}m||_(p,f)}(l),!p&&!r&&d[i]>.999}function k(){return p}return{name:"fade",options:e,init:function(e){l=e;const o=l.selectedScrollSnap(),{scrollBody:c,containerRect:u,axis:f}=l.internalEngine(),p=f.measureSize(u);a=s(.75*p,200,500),m=!1,d=l.scrollSnapList().map(((e,l)=>l===o?t:n)),r=c.settled,i=l.scrollProgress,c.settled=y,l.scrollProgress=k,l.on("select",S).on("slidefocus",g).on("pointerdown",E).on("pointerup",b),function(){const{translate:e,slideLooper:t}=l.internalEngine();e.clear(),e.toggleActive(!1),t.loopPoints.forEach((e=>{let{translate:t}=e;t.clear(),t.toggleActive(!1)}))}(),g()},destroy:function(){const{scrollBody:e}=l.internalEngine();e.settled=r,l.scrollProgress=i,l.off("select",S).off("slidefocus",g).off("pointerdown",E).off("pointerup",b),l.slideNodes().forEach((e=>{const t=e.style;t.opacity="",t.transform="",t.pointerEvents="",e.getAttribute("style")||e.removeAttribute("style")}))}}}a.globalOptions=void 0;var r=n(7105),i=n(642),d=n(6448);var u=e=>{const{slides:t,options:n}=e,[s,c]=(0,l.A)(n,[a()]),{selectedIndex:u,scrollSnaps:f,onDotButtonClick:p}=(0,i.R)(c),{prevBtnDisabled:m,nextBtnDisabled:g,onPrevButtonClick:b,onNextButtonClick:E}=(0,r.Hd)(c);return o.createElement("div",{className:"embla"},o.createElement("div",{className:"embla__viewport",ref:s},o.createElement("div",{className:"embla__container"},t.map((e=>o.createElement("div",{className:"embla__slide",key:e},o.createElement("img",{className:"embla__slide__img",src:(0,d.u)(e),alt:"Your alt text"})))))),o.createElement("div",{className:"embla__controls"},o.createElement("div",{className:"embla__buttons"},o.createElement(r.U1,{onClick:b,disabled:m}),o.createElement(r.WE,{onClick:E,disabled:g})),o.createElement("div",{className:"embla__dots"},f.map(((e,t)=>o.createElement(i.c,{key:t,onClick:()=>p(t),className:"embla__dot".concat(t===u?" embla__dot--selected":"")}))))))}},6448:function(e,t,n){n.d(t,{u:function(){return l}});const o=[n.p+"static/slide-1-47ed6052f4455272d8f76db16447d760.jpg",n.p+"static/slide-2-dc15cfe63eb4aeb8c9c09823179ee64c.jpg",n.p+"static/slide-3-6362505742d23d7cd240880140151a95.jpg",n.p+"static/slide-4-ebad84cfea5ff9481504ded363c22003.jpg",n.p+"static/slide-5-2d88e98502aa565d6269834d7a7be406.jpg"],l=e=>o[e%o.length]}}]); +//# sourceMappingURL=5029-b8fc13447d4c74a8a2b8.js.map \ No newline at end of file diff --git a/docs/5029-465f0d86594ce0dfeb53.js.map b/docs/5029-b8fc13447d4c74a8a2b8.js.map similarity index 97% rename from docs/5029-465f0d86594ce0dfeb53.js.map rename to docs/5029-b8fc13447d4c74a8a2b8.js.map index c996552f..61917165 100644 --- a/docs/5029-465f0d86594ce0dfeb53.js.map +++ b/docs/5029-b8fc13447d4c74a8a2b8.js.map @@ -1 +1 @@ -{"version":3,"file":"5029-465f0d86594ce0dfeb53.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\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 function 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","fadeFriction","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","settled","diffToTarget","notReachedTarget","noFadeIndex","fade","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-b8fc13447d4c74a8a2b8.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\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 function 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","fadeFriction","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","settled","diffToTarget","notReachedTarget","noFadeIndex","fade","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/6128-c5fc044a884df4651b47.js b/docs/6128-bcd9703a6f79eb1255e0.js similarity index 67% rename from docs/6128-c5fc044a884df4651b47.js rename to docs/6128-bcd9703a6f79eb1255e0.js index c80f0e78..a85dd60c 100644 --- a/docs/6128-c5fc044a884df4651b47.js +++ b/docs/6128-bcd9703a6f79eb1255e0.js @@ -1,2 +1,2 @@ -"use strict";(self.webpackChunkembla_carousel_docs=self.webpackChunkembla_carousel_docs||[]).push([[6128],{6128:function(e,n,t){t.r(n);var a=t(4041),o=t(7154),l=t(2380),s=t(7105),i=t(642),c=t(6448);n.default=e=>{const{slides:n,options:t}=e,[r,d]=(0,o.A)(t,[(0,l.A)()]),{selectedIndex:p,scrollSnaps:g,onDotButtonClick:u}=(0,i.R)(d),{prevBtnDisabled:f,nextBtnDisabled:m,onPrevButtonClick:b,onNextButtonClick:E}=(0,s.Hd)(d);return a.createElement("div",{className:"embla"},a.createElement("div",{className:"embla__viewport",ref:r},a.createElement("div",{className:"embla__container"},n.map((e=>a.createElement("div",{className:"embla__slide",key:e},a.createElement("img",{className:"embla__slide__img",src:(0,c.u)(e),alt:"Your alt text"})))))),a.createElement("div",{className:"embla__controls"},a.createElement("div",{className:"embla__buttons"},a.createElement(s.U1,{onClick:b,disabled:f}),a.createElement(s.WE,{onClick:E,disabled:m})),a.createElement("div",{className:"embla__dots"},g.map(((e,n)=>a.createElement(i.c,{key:n,onClick:()=>u(n),className:"embla__dot".concat(n===p?" embla__dot--selected":"")}))))))}},642:function(e,n,t){t.d(n,{R:function(){return o},c:function(){return l}});var a=t(4041);const o=(e,n)=>{const{0:t,1:o}=(0,a.useState)(0),{0:l,1:s}=(0,a.useState)([]),i=(0,a.useCallback)((t=>{e&&(e.scrollTo(t),n&&n(e))}),[e,n]),c=(0,a.useCallback)((e=>{s(e.scrollSnapList())}),[]),r=(0,a.useCallback)((e=>{o(e.selectedScrollSnap())}),[]);return(0,a.useEffect)((()=>{e&&(c(e),r(e),e.on("reInit",c).on("reInit",r).on("select",r))}),[e,c,r]),{selectedIndex:t,scrollSnaps:l,onDotButtonClick:i}},l=e=>{const{children:n,...t}=e;return a.createElement("button",Object.assign({type:"button"},t),n)}},6448:function(e,n,t){t.d(n,{u:function(){return o}});const a=[t.p+"static/slide-1-47ed6052f4455272d8f76db16447d760.jpg",t.p+"static/slide-2-dc15cfe63eb4aeb8c9c09823179ee64c.jpg",t.p+"static/slide-3-6362505742d23d7cd240880140151a95.jpg",t.p+"static/slide-4-ebad84cfea5ff9481504ded363c22003.jpg",t.p+"static/slide-5-2d88e98502aa565d6269834d7a7be406.jpg"],o=e=>a[e%a.length]},2380:function(e,n,t){t.d(n,{A:function(){return c}});var a=t(107);const o={active:!0,breakpoints:{},snapped:"is-snapped",inView:"is-in-view",draggable:"is-draggable",dragging:"is-dragging",loop:"is-loop"};function l(e){return(Array.isArray(e)?e:[e]).filter(Boolean)}function s(e,n){var t;e&&n.length&&(t=e.classList).remove.apply(t,(0,a.A)(n))}function i(e,n){var t;e&&n.length&&(t=e.classList).add.apply(t,(0,a.A)(n))}function c(e){let n,t,a,r;void 0===e&&(e={});let d=[],p=[];const g=["select"],u=["pointerDown","pointerUp"],f=["slidesInView"],m={snapped:[],inView:[],draggable:[],dragging:[],loop:[]};function b(e,n){("pointerDown"===n?i:s)(a,m.dragging)}function E(e,n,t){void 0===e&&(e=[]),void 0===n&&(n=[]);const a=n.map((e=>r[e])),o=e.map((e=>r[e]));return a.forEach((e=>s(e,t))),o.forEach((e=>i(e,t))),e}function _(){const{slideRegistry:e}=t.internalEngine(),n=e[t.selectedScrollSnap()];d=E(n,d,m.snapped)}function v(){const e=t.slidesInView();p=E(e,p,m.inView)}return{name:"classNames",options:e,init:function(s,d){t=s;const{mergeOptions:p,optionsAtMedia:E}=d,k=p(o,c.globalOptions),h=p(k,e);n=E(h),a=t.rootNode(),r=t.slideNodes();const{watchDrag:w,loop:N}=t.internalEngine().options,C=!!w;n.loop&&N&&(m.loop=l(n.loop),i(a,m.loop)),n.draggable&&C&&(m.draggable=l(n.draggable),i(a,m.draggable)),n.dragging&&(m.dragging=l(n.dragging),u.forEach((e=>t.on(e,b)))),n.snapped&&(m.snapped=l(n.snapped),g.forEach((e=>t.on(e,_))),_()),n.inView&&(m.inView=l(n.inView),f.forEach((e=>t.on(e,v))),v())},destroy:function(){u.forEach((e=>t.off(e,b))),g.forEach((e=>t.off(e,_))),f.forEach((e=>t.off(e,v))),s(a,m.loop),s(a,m.draggable),s(a,m.dragging),E([],d,m.snapped),E([],p,m.inView)}}}c.globalOptions=void 0}}]); -//# sourceMappingURL=6128-c5fc044a884df4651b47.js.map \ No newline at end of file +"use strict";(self.webpackChunkembla_carousel_docs=self.webpackChunkembla_carousel_docs||[]).push([[6128],{6128:function(e,n,t){t.r(n);var a=t(4041),o=t(7154),l=t(2380),s=t(7105),i=t(642),c=t(6448);n.default=e=>{const{slides:n,options:t}=e,[r,d]=(0,o.A)(t,[(0,l.A)()]),{selectedIndex:p,scrollSnaps:g,onDotButtonClick:u}=(0,i.R)(d),{prevBtnDisabled:f,nextBtnDisabled:b,onPrevButtonClick:m,onNextButtonClick:E}=(0,s.Hd)(d);return a.createElement("div",{className:"embla"},a.createElement("div",{className:"embla__viewport",ref:r},a.createElement("div",{className:"embla__container"},n.map((e=>a.createElement("div",{className:"embla__slide",key:e},a.createElement("img",{className:"embla__slide__img",src:(0,c.u)(e),alt:"Your alt text"})))))),a.createElement("div",{className:"embla__controls"},a.createElement("div",{className:"embla__buttons"},a.createElement(s.U1,{onClick:m,disabled:f}),a.createElement(s.WE,{onClick:E,disabled:b})),a.createElement("div",{className:"embla__dots"},g.map(((e,n)=>a.createElement(i.c,{key:n,onClick:()=>u(n),className:"embla__dot".concat(n===p?" embla__dot--selected":"")}))))))}},642:function(e,n,t){t.d(n,{R:function(){return o},c:function(){return l}});var a=t(4041);const o=(e,n)=>{const{0:t,1:o}=(0,a.useState)(0),{0:l,1:s}=(0,a.useState)([]),i=(0,a.useCallback)((t=>{e&&(e.scrollTo(t),n&&n(e))}),[e,n]),c=(0,a.useCallback)((e=>{s(e.scrollSnapList())}),[]),r=(0,a.useCallback)((e=>{o(e.selectedScrollSnap())}),[]);return(0,a.useEffect)((()=>{e&&(c(e),r(e),e.on("reInit",c).on("reInit",r).on("select",r))}),[e,c,r]),{selectedIndex:t,scrollSnaps:l,onDotButtonClick:i}},l=e=>{const{children:n,...t}=e;return a.createElement("button",Object.assign({type:"button"},t),n)}},6448:function(e,n,t){t.d(n,{u:function(){return o}});const a=[t.p+"static/slide-1-47ed6052f4455272d8f76db16447d760.jpg",t.p+"static/slide-2-dc15cfe63eb4aeb8c9c09823179ee64c.jpg",t.p+"static/slide-3-6362505742d23d7cd240880140151a95.jpg",t.p+"static/slide-4-ebad84cfea5ff9481504ded363c22003.jpg",t.p+"static/slide-5-2d88e98502aa565d6269834d7a7be406.jpg"],o=e=>a[e%a.length]},2380:function(e,n,t){t.d(n,{A:function(){return c}});var a=t(107);const o={active:!0,breakpoints:{},snapped:"is-snapped",inView:"is-in-view",draggable:"is-draggable",dragging:"is-dragging",loop:"is-loop"};function l(e){return(Array.isArray(e)?e:[e]).filter(Boolean)}function s(e,n){var t;e&&n.length&&(t=e.classList).remove.apply(t,(0,a.A)(n))}function i(e,n){var t;e&&n.length&&(t=e.classList).add.apply(t,(0,a.A)(n))}function c(e){let n,t,a,r;void 0===e&&(e={});let d=[],p=[];const g=["select"],u=["pointerdown","pointerup"],f=["slidesinview"],b={snapped:[],inView:[],draggable:[],dragging:[],loop:[]};function m(e,n){("pointerdown"===n?i:s)(a,b.dragging)}function E(e,n,t){void 0===e&&(e=[]),void 0===n&&(n=[]);const a=n.map((e=>r[e])),o=e.map((e=>r[e]));return a.forEach((e=>s(e,t))),o.forEach((e=>i(e,t))),e}function _(){const{slideRegistry:e}=t.internalEngine(),n=e[t.selectedScrollSnap()];d=E(n,d,b.snapped)}function v(){const e=t.slidesInView();p=E(e,p,b.inView)}return{name:"classNames",options:e,init:function(s,d){t=s;const{mergeOptions:p,optionsAtMedia:E}=d,k=p(o,c.globalOptions),h=p(k,e);n=E(h),a=t.rootNode(),r=t.slideNodes();const w=t.internalEngine().options;n.loop&&w.loop&&(b.loop=l(n.loop),i(a,b.loop)),n.draggable&&w.draggable&&(b.draggable=l(n.draggable),i(a,b.draggable)),n.dragging&&(b.dragging=l(n.dragging),u.forEach((e=>t.on(e,m)))),n.snapped&&(b.snapped=l(n.snapped),g.forEach((e=>t.on(e,_))),_()),n.inView&&(b.inView=l(n.inView),f.forEach((e=>t.on(e,v))),v())},destroy:function(){u.forEach((e=>t.off(e,m))),g.forEach((e=>t.off(e,_))),f.forEach((e=>t.off(e,v))),s(a,b.loop),s(a,b.draggable),s(a,b.dragging),E([],d,b.snapped),E([],p,b.inView),Object.keys(b).forEach((e=>{b[e]=[]}))}}}c.globalOptions=void 0}}]); +//# sourceMappingURL=6128-bcd9703a6f79eb1255e0.js.map \ No newline at end of file diff --git a/docs/6128-bcd9703a6f79eb1255e0.js.map b/docs/6128-bcd9703a6f79eb1255e0.js.map new file mode 100644 index 00000000..8bd5baab --- /dev/null +++ b/docs/6128-bcd9703a6f79eb1255e0.js.map @@ -0,0 +1 @@ +{"version":3,"file":"6128-bcd9703a6f79eb1255e0.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 ClassNameOptionType = string | string[]\n\nexport type ClassNamesListType = {\n snapped: string[]\n inView: string[]\n draggable: string[]\n dragging: string[]\n loop: string[]\n}\n\nexport type OptionsType = CreateOptionsType<{\n [Key in keyof ClassNamesListType]: ClassNameOptionType\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 loop: 'is-loop'\n}\n","import { ClassNameOptionType } from './Options'\n\nexport function normalizeClassNames(classNames: ClassNameOptionType): string[] {\n const normalized = Array.isArray(classNames) ? classNames : [classNames]\n return normalized.filter(Boolean)\n}\n\nexport function removeClass(node: HTMLElement, classNames: string[]): void {\n if (!node || !classNames.length) return\n node.classList.remove(...classNames)\n}\n\nexport function addClass(node: HTMLElement, classNames: string[]): void {\n if (!node || !classNames.length) return\n node.classList.add(...classNames)\n}\n","import { defaultOptions, OptionsType, ClassNamesListType } from './Options'\nimport { addClass, normalizeClassNames, 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 let snappedIndexes: number[] = []\n let inViewIndexes: number[] = []\n\n const selectedEvents: EmblaEventType[] = ['select']\n const draggingEvents: EmblaEventType[] = ['pointerdown', 'pointerup']\n const inViewEvents: EmblaEventType[] = ['slidesinview']\n const classNames: ClassNamesListType = {\n snapped: [],\n inView: [],\n draggable: [],\n dragging: [],\n loop: []\n }\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\n const coreOptions = emblaApi.internalEngine().options\n\n if (options.loop && coreOptions.loop) {\n classNames.loop = normalizeClassNames(options.loop)\n addClass(root, classNames.loop)\n }\n\n if (options.draggable && coreOptions.draggable) {\n classNames.draggable = normalizeClassNames(options.draggable)\n addClass(root, classNames.draggable)\n }\n\n if (options.dragging) {\n classNames.dragging = normalizeClassNames(options.dragging)\n draggingEvents.forEach((evt) => emblaApi.on(evt, toggleDraggingClass))\n }\n\n if (options.snapped) {\n classNames.snapped = normalizeClassNames(options.snapped)\n selectedEvents.forEach((evt) => emblaApi.on(evt, toggleSnappedClasses))\n toggleSnappedClasses()\n }\n\n if (options.inView) {\n classNames.inView = normalizeClassNames(options.inView)\n inViewEvents.forEach((evt) => emblaApi.on(evt, toggleInViewClasses))\n toggleInViewClasses()\n }\n }\n\n function destroy(): void {\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\n removeClass(root, classNames.loop)\n removeClass(root, classNames.draggable)\n removeClass(root, classNames.dragging)\n toggleSlideClasses([], snappedIndexes, classNames.snapped)\n toggleSlideClasses([], inViewIndexes, classNames.inView)\n\n Object.keys(classNames).forEach((classNameKey) => {\n const key = classNameKey\n classNames[key] = []\n })\n }\n\n function toggleDraggingClass(\n _: EmblaCarouselType,\n evt: EmblaEventType\n ): void {\n const toggleClass = evt === 'pointerdown' ? addClass : removeClass\n toggleClass(root, classNames.dragging)\n }\n\n function toggleSlideClasses(\n addClassIndexes: number[] = [],\n removeClassIndexes: number[] = [],\n classNames: string[]\n ): number[] {\n const removeClassSlides = removeClassIndexes.map((index) => slides[index])\n const addClassSlides = addClassIndexes.map((index) => slides[index])\n\n removeClassSlides.forEach((slide) => removeClass(slide, classNames))\n addClassSlides.forEach((slide) => addClass(slide, classNames))\n\n return addClassIndexes\n }\n\n function toggleSnappedClasses(): void {\n const { slideRegistry } = emblaApi.internalEngine()\n const newSnappedIndexes = slideRegistry[emblaApi.selectedScrollSnap()]\n\n snappedIndexes = toggleSlideClasses(\n newSnappedIndexes,\n snappedIndexes,\n classNames.snapped\n )\n }\n\n function toggleInViewClasses(): void {\n const newInViewIndexes = emblaApi.slidesInView()\n\n inViewIndexes = toggleSlideClasses(\n newInViewIndexes,\n inViewIndexes,\n classNames.inView\n )\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","loop","normalizeClassNames","classNames","Array","isArray","filter","Boolean","removeClass","node","_node$classList","classList","remove","apply","_toConsumableArray","addClass","_node$classList2","add","userOptions","root","snappedIndexes","inViewIndexes","selectedEvents","draggingEvents","inViewEvents","toggleDraggingClass","evt","toggleSlideClasses","addClassIndexes","removeClassIndexes","removeClassSlides","addClassSlides","forEach","slide","toggleSnappedClasses","slideRegistry","internalEngine","newSnappedIndexes","toggleInViewClasses","newInViewIndexes","slidesInView","name","init","emblaApiInstance","optionsHandler","mergeOptions","optionsAtMedia","optionsBase","globalOptions","allOptions","rootNode","slideNodes","coreOptions","destroy","off","keys","classNameKey","undefined"],"sourceRoot":""} \ No newline at end of file diff --git a/docs/6128-c5fc044a884df4651b47.js.map b/docs/6128-c5fc044a884df4651b47.js.map deleted file mode 100644 index e316f2fa..00000000 --- a/docs/6128-c5fc044a884df4651b47.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"6128-c5fc044a884df4651b47.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 ClassNameOptionType = string | string[]\n\nexport type ClassNamesListType = {\n [K in keyof Omit]: string[]\n}\n\nexport type OptionsType = CreateOptionsType<{\n snapped: ClassNameOptionType\n inView: ClassNameOptionType\n draggable: ClassNameOptionType\n dragging: ClassNameOptionType\n loop: ClassNameOptionType\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 loop: 'is-loop'\n}\n","import { ClassNameOptionType } from './Options'\n\nexport function normalizeClassNames(classNames: ClassNameOptionType): string[] {\n const normalized = Array.isArray(classNames) ? classNames : [classNames]\n return normalized.filter(Boolean)\n}\n\nexport function removeClass(node: HTMLElement, classNames: string[]): void {\n if (!node || !classNames.length) return\n node.classList.remove(...classNames)\n}\n\nexport function addClass(node: HTMLElement, classNames: string[]): void {\n if (!node || !classNames.length) return\n\n node.classList.add(...classNames)\n}\n","import {\n ClassNameOptionType,\n ClassNamesListType,\n defaultOptions,\n OptionsType\n} from './Options'\nimport { addClass, normalizeClassNames, 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 let snappedIndexes: number[] = []\n let inViewIndexes: number[] = []\n const selectedEvents: EmblaEventType[] = ['select']\n const draggingEvents: EmblaEventType[] = ['pointerDown', 'pointerUp']\n const inViewEvents: EmblaEventType[] = ['slidesInView']\n const classNames: { [K in keyof ClassNamesListType]: string[] } = {\n snapped: [],\n inView: [],\n draggable: [],\n dragging: [],\n loop: []\n }\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\n const { watchDrag, loop } = emblaApi.internalEngine().options\n const isDraggable = !!watchDrag\n\n if (options.loop && loop) {\n classNames.loop = normalizeClassNames(options.loop)\n addClass(root, classNames.loop)\n }\n if (options.draggable && isDraggable) {\n classNames.draggable = normalizeClassNames(options.draggable)\n addClass(root, classNames.draggable)\n }\n if (options.dragging) {\n classNames.dragging = normalizeClassNames(options.dragging)\n draggingEvents.forEach((evt) => emblaApi.on(evt, toggleDraggingClass))\n }\n if (options.snapped) {\n classNames.snapped = normalizeClassNames(options.snapped)\n selectedEvents.forEach((evt) => emblaApi.on(evt, toggleSnappedClasses))\n toggleSnappedClasses()\n }\n if (options.inView) {\n classNames.inView = normalizeClassNames(options.inView)\n inViewEvents.forEach((evt) => emblaApi.on(evt, toggleInViewClasses))\n toggleInViewClasses()\n }\n }\n\n function destroy(): void {\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\n removeClass(root, classNames.loop)\n removeClass(root, classNames.draggable)\n removeClass(root, classNames.dragging)\n toggleSlideClasses([], snappedIndexes, classNames.snapped)\n toggleSlideClasses([], inViewIndexes, classNames.inView)\n }\n\n function toggleDraggingClass(\n _: EmblaCarouselType,\n evt: EmblaEventType\n ): void {\n const toggleClass = evt === 'pointerDown' ? addClass : removeClass\n toggleClass(root, classNames.dragging)\n }\n\n function toggleSlideClasses(\n addClassIndexes: number[] = [],\n removeClassIndexes: number[] = [],\n classNames: string[]\n ): number[] {\n const removeClassSlides = removeClassIndexes.map((index) => slides[index])\n const addClassSlides = addClassIndexes.map((index) => slides[index])\n\n removeClassSlides.forEach((slide) => removeClass(slide, classNames))\n addClassSlides.forEach((slide) => addClass(slide, classNames))\n\n return addClassIndexes\n }\n\n function toggleSnappedClasses(): void {\n const { slideRegistry } = emblaApi.internalEngine()\n const newSnappedIndexes = slideRegistry[emblaApi.selectedScrollSnap()]\n\n snappedIndexes = toggleSlideClasses(\n newSnappedIndexes,\n snappedIndexes,\n classNames.snapped\n )\n }\n\n function toggleInViewClasses(): void {\n const newInViewIndexes = emblaApi.slidesInView()\n\n inViewIndexes = toggleSlideClasses(\n newInViewIndexes,\n inViewIndexes,\n classNames.inView\n )\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","loop","normalizeClassNames","classNames","Array","isArray","filter","Boolean","removeClass","node","_node$classList","classList","remove","apply","_toConsumableArray","addClass","_node$classList2","add","userOptions","root","snappedIndexes","inViewIndexes","selectedEvents","draggingEvents","inViewEvents","toggleDraggingClass","evt","toggleSlideClasses","addClassIndexes","removeClassIndexes","removeClassSlides","addClassSlides","forEach","slide","toggleSnappedClasses","slideRegistry","internalEngine","newSnappedIndexes","toggleInViewClasses","newInViewIndexes","slidesInView","name","init","emblaApiInstance","optionsHandler","mergeOptions","optionsAtMedia","optionsBase","globalOptions","allOptions","rootNode","slideNodes","watchDrag","isDraggable","destroy","off","undefined"],"sourceRoot":""} \ No newline at end of file diff --git a/docs/7159-c90f5533f18ecef65cd1.js b/docs/7159-c90f5533f18ecef65cd1.js deleted file mode 100644 index 9d882a18..00000000 --- a/docs/7159-c90f5533f18ecef65cd1.js +++ /dev/null @@ -1,2 +0,0 @@ -"use strict";(self.webpackChunkembla_carousel_docs=self.webpackChunkembla_carousel_docs||[]).push([[7159],{7159:function(e,t,n){n.r(t),n.d(t,{default:function(){return s}});var o=n(4041),a=n(7154),l=n(3710);var i=n(7105);var s=e=>{const{slides:t,options:n}=e,s=(0,o.useRef)(null),[r,u]=(0,a.A)(n,[(0,l.A)({playOnInit:!1,delay:3e3})]),{prevBtnDisabled:c,nextBtnDisabled:p,onPrevButtonClick:m,onNextButtonClick:d}=(0,i.Hd)(u),{autoplayIsPlaying:f,toggleAutoplay:y,onAutoplayButtonClick:g}=(e=>{const{0:t,1:n}=(0,o.useState)(!1),a=(0,o.useCallback)((t=>{var n;const o=null==e||null===(n=e.plugins())||void 0===n?void 0:n.autoplay;o&&((!1===o.options.stopOnInteraction?o.reset:o.stop)(),t())}),[e]),l=(0,o.useCallback)((()=>{var t;const n=null==e||null===(t=e.plugins())||void 0===t?void 0:t.autoplay;n&&(n.isPlaying()?n.stop:n.play)()}),[e]);return(0,o.useEffect)((()=>{var t;const o=null==e||null===(t=e.plugins())||void 0===t?void 0:t.autoplay;o&&(n(o.isPlaying()),e.on("autoplay:play",(()=>n(!0))).on("autoplay:stop",(()=>n(!1))).on("reInit",(()=>n(o.isPlaying()))))}),[e]),{autoplayIsPlaying:t,toggleAutoplay:l,onAutoplayButtonClick:a}})(u),{showAutoplayProgress:v}=((e,t)=>{const{0:n,1:a}=(0,o.useState)(!1),l=(0,o.useRef)(""),i=(0,o.useRef)(0),s=(0,o.useRef)(0),r=(0,o.useCallback)((e=>{const n=t.current;if(n&&null!==e){if(!l.current){const e=window.getComputedStyle(n);l.current=e.animationName}n.style.animationName="none",n.style.transform="translate3d(0,0,0)",s.current=window.requestAnimationFrame((()=>{i.current=window.setTimeout((()=>{n.style.animationName=l.current,n.style.animationDuration=`${e}ms`}),0)})),a(!0)}}),[]);return(0,o.useEffect)((()=>{var t;const n=null==e||null===(t=e.plugins())||void 0===t?void 0:t.autoplay;n&&e.on("autoplay:timerset",(()=>r(n.timeUntilNext()))).on("autoplay:timerstopped",(()=>a(!1)))}),[e]),(0,o.useEffect)((()=>()=>{cancelAnimationFrame(s.current),clearTimeout(i.current)}),[]),{showAutoplayProgress:n}})(u,s);return o.createElement("div",{className:"embla"},o.createElement("div",{className:"embla__viewport",ref:r},o.createElement("div",{className:"embla__container"},t.map((e=>o.createElement("div",{className:"embla__slide",key:e},o.createElement("div",{className:"embla__slide__number"},o.createElement("span",null,e+1))))))),o.createElement("div",{className:"embla__controls"},o.createElement("div",{className:"embla__buttons"},o.createElement(i.U1,{onClick:()=>g(m),disabled:c}),o.createElement(i.WE,{onClick:()=>g(d),disabled:p})),o.createElement("div",{className:"embla__progress".concat(v?"":" embla__progress--hidden")},o.createElement("div",{className:"embla__progress__bar",ref:s})),o.createElement("button",{className:"embla__play",onClick:y,type:"button"},f?"Stop":"Start")))}},3710:function(e,t,n){n.d(t,{A:function(){return a}});const o={active:!0,breakpoints:{},delay:4e3,jump:!1,playOnInit:!0,stopOnFocusIn:!0,stopOnInteraction:!0,stopOnMouseEnter:!1,stopOnLastSnap:!1,rootNode:null};function a(e){let t,n,l,i;void 0===e&&(e={});let s=null,r=0,u=!1,c=!1,p=!1;function m(){l||(u||n.emit("autoplay:play"),function(){const{ownerWindow:e}=n.internalEngine();e.clearTimeout(r),r=e.setTimeout(g,i[n.selectedScrollSnap()]),s=(new Date).getTime(),n.emit("autoplay:timerset")}(),u=!0)}function d(){l||(u&&n.emit("autoplay:stop"),function(){const{ownerWindow:e}=n.internalEngine();e.clearTimeout(r),r=0,s=null,n.emit("autoplay:timerstopped")}(),u=!1)}function f(){if(y())return c=u,d();c&&m()}function y(){const{ownerDocument:e}=n.internalEngine();return"hidden"===e.visibilityState}function g(){const{index:e}=n.internalEngine(),o=e.clone().add(1).get(),a=n.scrollSnapList().length-1,l=t.stopOnLastSnap&&o===a;if(n.canScrollNext()?n.scrollNext(p):n.scrollTo(0,p),n.emit("autoplay:select"),l)return d();m()}return{name:"autoplay",options:e,init:function(s,r){n=s;const{mergeOptions:u,optionsAtMedia:c}=r,g=u(o,a.globalOptions),v=u(g,e);if(t=c(v),n.scrollSnapList().length<=1)return;p=t.jump,l=!1,i=function(e,t){const n=e.scrollSnapList();return"number"==typeof t?n.map((()=>t)):t(n,e)}(n,t.delay);const{eventStore:b,ownerDocument:_}=n.internalEngine(),E=!!n.internalEngine().options.watchDrag&&!t.stopOnMouseEnter,w=function(e,t){const n=e.rootNode();return t&&t(n)||n}(n,t.rootNode);b.add(_,"visibilitychange",f),E&&n.on("pointerDown",d),E&&!t.stopOnInteraction&&n.on("pointerUp",m),t.stopOnMouseEnter&&b.add(w,"mouseenter",d),t.stopOnMouseEnter&&!t.stopOnInteraction&&b.add(w,"mouseleave",m),t.stopOnFocusIn&&n.on("slideFocusStart",d),t.stopOnFocusIn&&!t.stopOnInteraction&&b.add(n.containerNode(),"focusout",m),t.playOnInit&&!y()&&m()},destroy:function(){n.off("pointerDown",d).off("pointerUp",m).off("slideFocusStart",d),d(),l=!0,u=!1},play:function(e){void 0!==e&&(p=e),m()},stop:function(){u&&d()},reset:function(){u&&m()},isPlaying:function(){return u},timeUntilNext:function(){return s?i[n.selectedScrollSnap()]-((new Date).getTime()-s):null}}}a.globalOptions=void 0}}]); -//# sourceMappingURL=7159-c90f5533f18ecef65cd1.js.map \ No newline at end of file diff --git a/docs/7159-c90f5533f18ecef65cd1.js.map b/docs/7159-c90f5533f18ecef65cd1.js.map deleted file mode 100644 index 7ef69c0e..00000000 --- a/docs/7159-c90f5533f18ecef65cd1.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"7159-c90f5533f18ecef65cd1.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/Sandbox/React/SandboxFilesSrc/Autoplay/EmblaCarouselAutoplay.tsx","webpack://embla-carousel-docs/./src/components/Sandbox/React/SandboxFilesSrc/Autoplay/EmblaCarouselAutoplayProgress.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"],"sourcesContent":["import React, { useRef } from 'react'\nimport { EmblaOptionsType } from 'embla-carousel'\nimport useEmblaCarousel from 'embla-carousel-react'\nimport Autoplay from 'embla-carousel-autoplay'\nimport { useAutoplay } from './EmblaCarouselAutoplay'\nimport { useAutoplayProgress } from './EmblaCarouselAutoplayProgress'\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 progressNode = useRef(null)\n const [emblaRef, emblaApi] = useEmblaCarousel(options, [\n Autoplay({ playOnInit: false, delay: 3000 })\n ])\n\n const {\n prevBtnDisabled,\n nextBtnDisabled,\n onPrevButtonClick,\n onNextButtonClick\n } = usePrevNextButtons(emblaApi)\n\n const { autoplayIsPlaying, toggleAutoplay, onAutoplayButtonClick } =\n useAutoplay(emblaApi)\n\n const { showAutoplayProgress } = useAutoplayProgress(emblaApi, progressNode)\n\n return (\n
\n
\n
\n {slides.map((index) => (\n
\n
\n {index + 1}\n
\n
\n ))}\n
\n
\n\n
\n
\n onAutoplayButtonClick(onPrevButtonClick)}\n disabled={prevBtnDisabled}\n />\n onAutoplayButtonClick(onNextButtonClick)}\n disabled={nextBtnDisabled}\n />\n
\n\n \n
\n
\n\n \n
\n
\n )\n}\n\nexport default EmblaCarousel\n","import { useCallback, useEffect, useState } from 'react'\nimport { EmblaCarouselType } from 'embla-carousel'\n\ntype UseAutoplayType = {\n autoplayIsPlaying: boolean\n toggleAutoplay: () => void\n onAutoplayButtonClick: (callback: () => void) => void\n}\n\nexport const useAutoplay = (\n emblaApi: EmblaCarouselType | undefined\n): UseAutoplayType => {\n const [autoplayIsPlaying, setAutoplayIsPlaying] = useState(false)\n\n const onAutoplayButtonClick = 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 setAutoplayIsPlaying(autoplay.isPlaying())\n emblaApi\n .on('autoplay:play', () => setAutoplayIsPlaying(true))\n .on('autoplay:stop', () => setAutoplayIsPlaying(false))\n .on('reInit', () => setAutoplayIsPlaying(autoplay.isPlaying()))\n }, [emblaApi])\n\n return {\n autoplayIsPlaying,\n toggleAutoplay,\n onAutoplayButtonClick\n }\n}\n","import { useCallback, useEffect, useRef, useState } from 'react'\nimport { EmblaCarouselType } from 'embla-carousel'\n\ntype UseAutoplayProgressType = {\n showAutoplayProgress: boolean\n}\n\nexport const useAutoplayProgress = (\n emblaApi: EmblaCarouselType | undefined,\n progressNode: React.RefObject\n): UseAutoplayProgressType => {\n const [showAutoplayProgress, setShowAutoplayProgress] = useState(false)\n const animationName = useRef('')\n const timeoutId = useRef(0)\n const rafId = useRef(0)\n\n const startProgress = useCallback((timeUntilNext: number | null) => {\n const node = progressNode.current\n\n if (!node) return\n if (timeUntilNext === null) return\n\n if (!animationName.current) {\n const style = window.getComputedStyle(node)\n animationName.current = style.animationName\n }\n\n node.style.animationName = 'none'\n node.style.transform = 'translate3d(0,0,0)'\n\n rafId.current = window.requestAnimationFrame(() => {\n timeoutId.current = window.setTimeout(() => {\n node.style.animationName = animationName.current\n node.style.animationDuration = `${timeUntilNext}ms`\n }, 0)\n })\n\n setShowAutoplayProgress(true)\n }, [])\n\n useEffect(() => {\n const autoplay = emblaApi?.plugins()?.autoplay\n if (!autoplay) return\n\n emblaApi\n .on('autoplay:timerset', () => startProgress(autoplay.timeUntilNext()))\n .on('autoplay:timerstopped', () => setShowAutoplayProgress(false))\n }, [emblaApi])\n\n useEffect(() => {\n return () => {\n cancelAnimationFrame(rafId.current)\n clearTimeout(timeoutId.current)\n }\n }, [])\n\n return {\n showAutoplayProgress\n }\n}\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'\nimport { getAutoplayRootNode, normalizeDelay } from './utils'\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 autoplaySelect: 'autoplay:select'\n autoplayTimerSet: 'autoplay:timerset'\n autoplayTimerStopped: 'autoplay:timerstopped'\n }\n}\n\nexport type AutoplayType = CreatePluginType<\n {\n play: (jump?: boolean) => void\n stop: () => void\n reset: () => void\n isPlaying: () => boolean\n timeUntilNext: () => number | null\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 delay: ReturnType\n let timerStartTime: null | number = null\n let timerId = 0\n let autoplayActive = false\n let playOnDocumentVisible = false\n let jump = false\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 delay = normalizeDelay(emblaApi, options.delay)\n\n const { eventStore, ownerDocument } = emblaApi.internalEngine()\n const isDraggable = !!emblaApi.internalEngine().options.watchDrag\n const stopOnPointerDown = isDraggable && !options.stopOnMouseEnter\n const root = getAutoplayRootNode(emblaApi, options.rootNode)\n\n eventStore.add(ownerDocument, 'visibilitychange', visibilityChange)\n\n if (stopOnPointerDown) {\n emblaApi.on('pointerDown', stopAutoplay)\n }\n\n if (stopOnPointerDown && !options.stopOnInteraction) {\n emblaApi.on('pointerUp', startAutoplay)\n }\n\n if (options.stopOnMouseEnter) {\n eventStore.add(root, 'mouseenter', stopAutoplay)\n }\n\n if (options.stopOnMouseEnter && !options.stopOnInteraction) {\n eventStore.add(root, 'mouseleave', startAutoplay)\n }\n\n if (options.stopOnFocusIn) {\n emblaApi.on('slideFocusStart', stopAutoplay)\n }\n\n if (options.stopOnFocusIn && !options.stopOnInteraction) {\n eventStore.add(emblaApi.containerNode(), 'focusout', startAutoplay)\n }\n\n if (options.playOnInit && !documentIsHidden()) startAutoplay()\n }\n\n function destroy(): void {\n emblaApi\n .off('pointerDown', stopAutoplay)\n .off('pointerUp', startAutoplay)\n .off('slideFocusStart', stopAutoplay)\n stopAutoplay()\n destroyed = true\n autoplayActive = false\n }\n\n function setTimer(): void {\n const { ownerWindow } = emblaApi.internalEngine()\n ownerWindow.clearTimeout(timerId)\n timerId = ownerWindow.setTimeout(next, delay[emblaApi.selectedScrollSnap()])\n timerStartTime = new Date().getTime()\n emblaApi.emit('autoplay:timerset')\n }\n\n function clearTimer(): void {\n const { ownerWindow } = emblaApi.internalEngine()\n ownerWindow.clearTimeout(timerId)\n timerId = 0\n timerStartTime = null\n emblaApi.emit('autoplay:timerstopped')\n }\n\n function startAutoplay(): void {\n if (destroyed) return\n if (!autoplayActive) emblaApi.emit('autoplay:play')\n\n setTimer()\n autoplayActive = true\n }\n\n function stopAutoplay(): void {\n if (destroyed) return\n if (autoplayActive) emblaApi.emit('autoplay:stop')\n\n clearTimer()\n autoplayActive = false\n }\n\n function visibilityChange(): void {\n if (documentIsHidden()) {\n playOnDocumentVisible = autoplayActive\n return stopAutoplay()\n }\n\n if (playOnDocumentVisible) startAutoplay()\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 startAutoplay()\n }\n\n function stop(): void {\n if (autoplayActive) stopAutoplay()\n }\n\n function reset(): void {\n if (autoplayActive) startAutoplay()\n }\n\n function isPlaying(): boolean {\n return autoplayActive\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 (emblaApi.canScrollNext()) {\n emblaApi.scrollNext(jump)\n } else {\n emblaApi.scrollTo(0, jump)\n }\n\n emblaApi.emit('autoplay:select')\n\n if (kill) return stopAutoplay()\n startAutoplay()\n }\n\n function timeUntilNext(): number | null {\n if (!timerStartTime) return null\n const currentDelay = delay[emblaApi.selectedScrollSnap()]\n const timePastSinceStart = new Date().getTime() - timerStartTime\n return currentDelay - timePastSinceStart\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 timeUntilNext\n }\n return self\n}\n\ndeclare namespace Autoplay {\n let globalOptions: AutoplayOptionsType | undefined\n}\n\nAutoplay.globalOptions = undefined\n\nexport default Autoplay\n","import { EmblaCarouselType } from 'embla-carousel/components/EmblaCarousel'\nimport { DelayOptionType, RootNodeType } from './Options'\n\nexport function normalizeDelay(\n emblaApi: EmblaCarouselType,\n delay: DelayOptionType\n): number[] {\n const scrollSnaps = emblaApi.scrollSnapList()\n\n if (typeof delay === 'number') {\n return scrollSnaps.map(() => delay)\n }\n return delay(scrollSnaps, emblaApi)\n}\n\nexport function getAutoplayRootNode(\n emblaApi: EmblaCarouselType,\n rootNode: RootNodeType\n) {\n const emblaRootNode = emblaApi.rootNode()\n return (rootNode && rootNode(emblaRootNode)) || emblaRootNode\n}\n"],"names":["props","slides","options","progressNode","useRef","emblaRef","emblaApi","useEmblaCarousel","Autoplay","playOnInit","delay","prevBtnDisabled","nextBtnDisabled","onPrevButtonClick","onNextButtonClick","usePrevNextButtons","autoplayIsPlaying","toggleAutoplay","onAutoplayButtonClick","setAutoplayIsPlaying","useState","useCallback","callback","_emblaApi$plugins","autoplay","plugins","stopOnInteraction","reset","stop","_emblaApi$plugins2","isPlaying","play","useEffect","_emblaApi$plugins3","on","useAutoplay","showAutoplayProgress","useAutoplayProgress","setShowAutoplayProgress","animationName","timeoutId","rafId","startProgress","timeUntilNext","node","current","style","window","getComputedStyle","transform","requestAnimationFrame","setTimeout","animationDuration","cancelAnimationFrame","clearTimeout","React","className","ref","map","index","key","PrevButton","onClick","disabled","NextButton","concat","type","defaultOptions","active","breakpoints","jump","stopOnFocusIn","stopOnMouseEnter","stopOnLastSnap","rootNode","userOptions","destroyed","timerStartTime","timerId","autoplayActive","playOnDocumentVisible","startAutoplay","emit","ownerWindow","internalEngine","next","selectedScrollSnap","Date","getTime","setTimer","stopAutoplay","clearTimer","visibilityChange","documentIsHidden","ownerDocument","visibilityState","nextIndex","clone","add","get","lastIndex","scrollSnapList","length","kill","canScrollNext","scrollNext","scrollTo","name","init","emblaApiInstance","optionsHandler","mergeOptions","optionsAtMedia","optionsBase","globalOptions","allOptions","scrollSnaps","normalizeDelay","eventStore","stopOnPointerDown","watchDrag","root","emblaRootNode","getAutoplayRootNode","containerNode","destroy","off","jumpOverride","undefined"],"sourceRoot":""} \ No newline at end of file diff --git a/docs/7159-fc8f2ab67403766ea38e.js b/docs/7159-fc8f2ab67403766ea38e.js new file mode 100644 index 00000000..3e6c6f1b --- /dev/null +++ b/docs/7159-fc8f2ab67403766ea38e.js @@ -0,0 +1,2 @@ +"use strict";(self.webpackChunkembla_carousel_docs=self.webpackChunkembla_carousel_docs||[]).push([[7159],{7159:function(t,e,n){n.r(e),n.d(e,{default:function(){return s}});var o=n(4041),a=n(7154),l=n(3710);var i=n(7105);var s=t=>{const{slides:e,options:n}=t,s=(0,o.useRef)(null),[r,u]=(0,a.A)(n,[(0,l.A)({playOnInit:!1,delay:3e3})]),{prevBtnDisabled:c,nextBtnDisabled:p,onPrevButtonClick:m,onNextButtonClick:d}=(0,i.Hd)(u),{autoplayIsPlaying:f,toggleAutoplay:y,onAutoplayButtonClick:g}=(t=>{const{0:e,1:n}=(0,o.useState)(!1),a=(0,o.useCallback)((e=>{var n;const o=null==t||null===(n=t.plugins())||void 0===n?void 0:n.autoplay;o&&((!1===o.options.stopOnInteraction?o.reset:o.stop)(),e())}),[t]),l=(0,o.useCallback)((()=>{var e;const n=null==t||null===(e=t.plugins())||void 0===e?void 0:e.autoplay;n&&(n.isPlaying()?n.stop:n.play)()}),[t]);return(0,o.useEffect)((()=>{var e;const o=null==t||null===(e=t.plugins())||void 0===e?void 0:e.autoplay;o&&(n(o.isPlaying()),t.on("autoplay:play",(()=>n(!0))).on("autoplay:stop",(()=>n(!1))).on("reInit",(()=>n(o.isPlaying()))))}),[t]),{autoplayIsPlaying:e,toggleAutoplay:l,onAutoplayButtonClick:a}})(u),{showAutoplayProgress:v}=((t,e)=>{const{0:n,1:a}=(0,o.useState)(!1),l=(0,o.useRef)(""),i=(0,o.useRef)(0),s=(0,o.useRef)(0),r=(0,o.useCallback)((t=>{const n=e.current;if(n&&null!==t){if(!l.current){const t=window.getComputedStyle(n);l.current=t.animationName}n.style.animationName="none",n.style.transform="translate3d(0,0,0)",s.current=window.requestAnimationFrame((()=>{i.current=window.setTimeout((()=>{n.style.animationName=l.current,n.style.animationDuration=`${t}ms`}),0)})),a(!0)}}),[]);return(0,o.useEffect)((()=>{var e;const n=null==t||null===(e=t.plugins())||void 0===e?void 0:e.autoplay;n&&t.on("autoplay:timerset",(()=>r(n.timeUntilNext()))).on("autoplay:timerstopped",(()=>a(!1)))}),[t]),(0,o.useEffect)((()=>()=>{cancelAnimationFrame(s.current),clearTimeout(i.current)}),[]),{showAutoplayProgress:n}})(u,s);return o.createElement("div",{className:"embla"},o.createElement("div",{className:"embla__viewport",ref:r},o.createElement("div",{className:"embla__container"},e.map((t=>o.createElement("div",{className:"embla__slide",key:t},o.createElement("div",{className:"embla__slide__number"},o.createElement("span",null,t+1))))))),o.createElement("div",{className:"embla__controls"},o.createElement("div",{className:"embla__buttons"},o.createElement(i.U1,{onClick:()=>g(m),disabled:c}),o.createElement(i.WE,{onClick:()=>g(d),disabled:p})),o.createElement("div",{className:"embla__progress".concat(v?"":" embla__progress--hidden")},o.createElement("div",{className:"embla__progress__bar",ref:s})),o.createElement("button",{className:"embla__play",onClick:y,type:"button"},f?"Stop":"Start")))}},3710:function(t,e,n){n.d(e,{A:function(){return a}});const o={active:!0,breakpoints:{},delay:4e3,jump:!1,playOnInit:!0,stopOnFocusIn:!0,stopOnInteraction:!0,stopOnMouseEnter:!1,stopOnLastSnap:!1,rootNode:null};function a(t){let e,n,l,i;void 0===t&&(t={});let s=null,r=0,u=!1,c=!1,p=!1,m=!1;function d(){l||(g()?p=!0:(u||n.emit("autoplay:play"),u=!0,function(){const{ownerWindow:t}=n.internalEngine();t.clearTimeout(r),r=t.setTimeout(w,i[n.selectedScrollSnap()]),s=(new Date).getTime(),n.emit("autoplay:timerset")}()))}function f(){l||(u&&n.emit("autoplay:stop"),u=!1,function(){const{ownerWindow:t}=n.internalEngine();t.clearTimeout(r),r=0,s=null,n.emit("autoplay:timerstopped")}())}function y(){if(g())return p=u,f();p&&d()}function g(){const{ownerDocument:t}=n.internalEngine();return"hidden"===t.visibilityState}function v(){c||f()}function b(){c||d()}function _(){c=!0,f()}function E(){c=!1,d()}function w(){const{index:t}=n.internalEngine(),o=t.clone().add(1).get(),a=n.scrollSnapList().length-1,l=e.stopOnLastSnap&&o===a;if(n.canScrollNext()?n.scrollNext(m):n.scrollTo(0,m),n.emit("autoplay:select"),l)return f();d()}return{name:"autoplay",options:t,init:function(s,r){n=s;const{mergeOptions:u,optionsAtMedia:c}=r,p=u(o,a.globalOptions),g=u(p,t);if(e=c(g),n.scrollSnapList().length<=1)return;m=e.jump,l=!1,i=function(t,e){const n=t.scrollSnapList();return"number"==typeof e?n.map((()=>e)):e(n,t)}(n,e.delay);const{eventStore:w,ownerDocument:N}=n.internalEngine(),O=!!n.internalEngine().options.watchDrag,S=function(t,e){const n=t.rootNode();return e&&e(n)||n}(n,e.rootNode);w.add(N,"visibilitychange",y),O&&n.on("pointerDown",v),O&&!e.stopOnInteraction&&n.on("pointerUp",b),e.stopOnMouseEnter&&w.add(S,"mouseenter",_),e.stopOnMouseEnter&&!e.stopOnInteraction&&w.add(S,"mouseleave",E),e.stopOnFocusIn&&n.on("slideFocusStart",f),e.stopOnFocusIn&&!e.stopOnInteraction&&w.add(n.containerNode(),"focusout",d),e.playOnInit&&d()},destroy:function(){n.off("pointerDown",v).off("pointerUp",b).off("slideFocusStart",f),f(),l=!0,u=!1},play:function(t){void 0!==t&&(m=t),d()},stop:function(){u&&f()},reset:function(){u&&d()},isPlaying:function(){return u},timeUntilNext:function(){return s?i[n.selectedScrollSnap()]-((new Date).getTime()-s):null}}}a.globalOptions=void 0}}]); +//# sourceMappingURL=7159-fc8f2ab67403766ea38e.js.map \ No newline at end of file diff --git a/docs/7159-fc8f2ab67403766ea38e.js.map b/docs/7159-fc8f2ab67403766ea38e.js.map new file mode 100644 index 00000000..3e46f46e --- /dev/null +++ b/docs/7159-fc8f2ab67403766ea38e.js.map @@ -0,0 +1 @@ +{"version":3,"file":"7159-fc8f2ab67403766ea38e.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/Sandbox/React/SandboxFilesSrc/Autoplay/EmblaCarouselAutoplay.tsx","webpack://embla-carousel-docs/./src/components/Sandbox/React/SandboxFilesSrc/Autoplay/EmblaCarouselAutoplayProgress.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"],"sourcesContent":["import React, { useRef } from 'react'\nimport { EmblaOptionsType } from 'embla-carousel'\nimport useEmblaCarousel from 'embla-carousel-react'\nimport Autoplay from 'embla-carousel-autoplay'\nimport { useAutoplay } from './EmblaCarouselAutoplay'\nimport { useAutoplayProgress } from './EmblaCarouselAutoplayProgress'\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 progressNode = useRef(null)\n const [emblaRef, emblaApi] = useEmblaCarousel(options, [\n Autoplay({ playOnInit: false, delay: 3000 })\n ])\n\n const {\n prevBtnDisabled,\n nextBtnDisabled,\n onPrevButtonClick,\n onNextButtonClick\n } = usePrevNextButtons(emblaApi)\n\n const { autoplayIsPlaying, toggleAutoplay, onAutoplayButtonClick } =\n useAutoplay(emblaApi)\n\n const { showAutoplayProgress } = useAutoplayProgress(emblaApi, progressNode)\n\n return (\n
\n
\n
\n {slides.map((index) => (\n
\n
\n {index + 1}\n
\n
\n ))}\n
\n
\n\n
\n
\n onAutoplayButtonClick(onPrevButtonClick)}\n disabled={prevBtnDisabled}\n />\n onAutoplayButtonClick(onNextButtonClick)}\n disabled={nextBtnDisabled}\n />\n
\n\n \n
\n
\n\n \n
\n
\n )\n}\n\nexport default EmblaCarousel\n","import { useCallback, useEffect, useState } from 'react'\nimport { EmblaCarouselType } from 'embla-carousel'\n\ntype UseAutoplayType = {\n autoplayIsPlaying: boolean\n toggleAutoplay: () => void\n onAutoplayButtonClick: (callback: () => void) => void\n}\n\nexport const useAutoplay = (\n emblaApi: EmblaCarouselType | undefined\n): UseAutoplayType => {\n const [autoplayIsPlaying, setAutoplayIsPlaying] = useState(false)\n\n const onAutoplayButtonClick = 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 setAutoplayIsPlaying(autoplay.isPlaying())\n emblaApi\n .on('autoplay:play', () => setAutoplayIsPlaying(true))\n .on('autoplay:stop', () => setAutoplayIsPlaying(false))\n .on('reInit', () => setAutoplayIsPlaying(autoplay.isPlaying()))\n }, [emblaApi])\n\n return {\n autoplayIsPlaying,\n toggleAutoplay,\n onAutoplayButtonClick\n }\n}\n","import { useCallback, useEffect, useRef, useState } from 'react'\nimport { EmblaCarouselType } from 'embla-carousel'\n\ntype UseAutoplayProgressType = {\n showAutoplayProgress: boolean\n}\n\nexport const useAutoplayProgress = (\n emblaApi: EmblaCarouselType | undefined,\n progressNode: React.RefObject\n): UseAutoplayProgressType => {\n const [showAutoplayProgress, setShowAutoplayProgress] = useState(false)\n const animationName = useRef('')\n const timeoutId = useRef(0)\n const rafId = useRef(0)\n\n const startProgress = useCallback((timeUntilNext: number | null) => {\n const node = progressNode.current\n\n if (!node) return\n if (timeUntilNext === null) return\n\n if (!animationName.current) {\n const style = window.getComputedStyle(node)\n animationName.current = style.animationName\n }\n\n node.style.animationName = 'none'\n node.style.transform = 'translate3d(0,0,0)'\n\n rafId.current = window.requestAnimationFrame(() => {\n timeoutId.current = window.setTimeout(() => {\n node.style.animationName = animationName.current\n node.style.animationDuration = `${timeUntilNext}ms`\n }, 0)\n })\n\n setShowAutoplayProgress(true)\n }, [])\n\n useEffect(() => {\n const autoplay = emblaApi?.plugins()?.autoplay\n if (!autoplay) return\n\n emblaApi\n .on('autoplay:timerset', () => startProgress(autoplay.timeUntilNext()))\n .on('autoplay:timerstopped', () => setShowAutoplayProgress(false))\n }, [emblaApi])\n\n useEffect(() => {\n return () => {\n cancelAnimationFrame(rafId.current)\n clearTimeout(timeoutId.current)\n }\n }, [])\n\n return {\n showAutoplayProgress\n }\n}\n","import { CreateOptionsType, EmblaCarouselType } from 'embla-carousel'\n\nexport type DelayOptionType =\n | number\n | ((scrollSnaps: number[], emblaApi: EmblaCarouselType) => number[])\n\nexport type RootNodeType =\n | null\n | ((emblaRoot: HTMLElement) => HTMLElement | null)\n\nexport type OptionsType = CreateOptionsType<{\n delay: DelayOptionType\n jump: boolean\n playOnInit: boolean\n stopOnFocusIn: boolean\n stopOnInteraction: boolean\n stopOnMouseEnter: boolean\n stopOnLastSnap: boolean\n rootNode: RootNodeType\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 { getAutoplayRootNode, normalizeDelay } from './utils'\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 autoplaySelect: 'autoplay:select'\n autoplayTimerSet: 'autoplay:timerset'\n autoplayTimerStopped: 'autoplay:timerstopped'\n }\n}\n\nexport type AutoplayType = CreatePluginType<\n {\n play: (jump?: boolean) => void\n stop: () => void\n reset: () => void\n isPlaying: () => boolean\n timeUntilNext: () => number | null\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 delay: ReturnType\n let timerStartTime: null | number = null\n let timerId = 0\n let autoplayActive = false\n let mouseIsOver = false\n let playOnDocumentVisible = false\n let jump = false\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 delay = normalizeDelay(emblaApi, options.delay)\n\n const { eventStore, ownerDocument } = emblaApi.internalEngine()\n const isDraggable = !!emblaApi.internalEngine().options.watchDrag\n const root = getAutoplayRootNode(emblaApi, options.rootNode)\n\n eventStore.add(ownerDocument, 'visibilitychange', visibilityChange)\n\n if (isDraggable) {\n emblaApi.on('pointerDown', pointerDown)\n }\n\n if (isDraggable && !options.stopOnInteraction) {\n emblaApi.on('pointerUp', pointerUp)\n }\n\n if (options.stopOnMouseEnter) {\n eventStore.add(root, 'mouseenter', mouseEnter)\n }\n\n if (options.stopOnMouseEnter && !options.stopOnInteraction) {\n eventStore.add(root, 'mouseleave', mouseLeave)\n }\n\n if (options.stopOnFocusIn) {\n emblaApi.on('slideFocusStart', stopAutoplay)\n }\n\n if (options.stopOnFocusIn && !options.stopOnInteraction) {\n eventStore.add(emblaApi.containerNode(), 'focusout', startAutoplay)\n }\n\n if (options.playOnInit) startAutoplay()\n }\n\n function destroy(): void {\n emblaApi\n .off('pointerDown', pointerDown)\n .off('pointerUp', pointerUp)\n .off('slideFocusStart', stopAutoplay)\n\n stopAutoplay()\n destroyed = true\n autoplayActive = false\n }\n\n function setTimer(): void {\n const { ownerWindow } = emblaApi.internalEngine()\n ownerWindow.clearTimeout(timerId)\n timerId = ownerWindow.setTimeout(next, delay[emblaApi.selectedScrollSnap()])\n timerStartTime = new Date().getTime()\n emblaApi.emit('autoplay:timerset')\n }\n\n function clearTimer(): void {\n const { ownerWindow } = emblaApi.internalEngine()\n ownerWindow.clearTimeout(timerId)\n timerId = 0\n timerStartTime = null\n emblaApi.emit('autoplay:timerstopped')\n }\n\n function startAutoplay(): void {\n if (destroyed) return\n if (documentIsHidden()) {\n playOnDocumentVisible = true\n return\n }\n if (!autoplayActive) emblaApi.emit('autoplay:play')\n\n autoplayActive = true\n setTimer()\n }\n\n function stopAutoplay(): void {\n if (destroyed) return\n if (autoplayActive) emblaApi.emit('autoplay:stop')\n\n autoplayActive = false\n clearTimer()\n }\n\n function visibilityChange(): void {\n if (documentIsHidden()) {\n playOnDocumentVisible = autoplayActive\n return stopAutoplay()\n }\n\n if (playOnDocumentVisible) startAutoplay()\n }\n\n function documentIsHidden(): boolean {\n const { ownerDocument } = emblaApi.internalEngine()\n return ownerDocument.visibilityState === 'hidden'\n }\n\n function pointerDown(): void {\n if (!mouseIsOver) stopAutoplay()\n }\n\n function pointerUp(): void {\n if (!mouseIsOver) startAutoplay()\n }\n\n function mouseEnter(): void {\n mouseIsOver = true\n stopAutoplay()\n }\n\n function mouseLeave(): void {\n mouseIsOver = false\n startAutoplay()\n }\n\n function play(jumpOverride?: boolean): void {\n if (typeof jumpOverride !== 'undefined') jump = jumpOverride\n startAutoplay()\n }\n\n function stop(): void {\n if (autoplayActive) stopAutoplay()\n }\n\n function reset(): void {\n if (autoplayActive) startAutoplay()\n }\n\n function isPlaying(): boolean {\n return autoplayActive\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 (emblaApi.canScrollNext()) {\n emblaApi.scrollNext(jump)\n } else {\n emblaApi.scrollTo(0, jump)\n }\n\n emblaApi.emit('autoplay:select')\n\n if (kill) return stopAutoplay()\n startAutoplay()\n }\n\n function timeUntilNext(): number | null {\n if (!timerStartTime) return null\n const currentDelay = delay[emblaApi.selectedScrollSnap()]\n const timePastSinceStart = new Date().getTime() - timerStartTime\n return currentDelay - timePastSinceStart\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 timeUntilNext\n }\n return self\n}\n\ndeclare namespace Autoplay {\n let globalOptions: AutoplayOptionsType | undefined\n}\n\nAutoplay.globalOptions = undefined\n\nexport default Autoplay\n","import { EmblaCarouselType } from 'embla-carousel/components/EmblaCarousel'\nimport { DelayOptionType, RootNodeType } from './Options'\n\nexport function normalizeDelay(\n emblaApi: EmblaCarouselType,\n delay: DelayOptionType\n): number[] {\n const scrollSnaps = emblaApi.scrollSnapList()\n\n if (typeof delay === 'number') {\n return scrollSnaps.map(() => delay)\n }\n return delay(scrollSnaps, emblaApi)\n}\n\nexport function getAutoplayRootNode(\n emblaApi: EmblaCarouselType,\n rootNode: RootNodeType\n): HTMLElement {\n const emblaRootNode = emblaApi.rootNode()\n return (rootNode && rootNode(emblaRootNode)) || emblaRootNode\n}\n"],"names":["props","slides","options","progressNode","useRef","emblaRef","emblaApi","useEmblaCarousel","Autoplay","playOnInit","delay","prevBtnDisabled","nextBtnDisabled","onPrevButtonClick","onNextButtonClick","usePrevNextButtons","autoplayIsPlaying","toggleAutoplay","onAutoplayButtonClick","setAutoplayIsPlaying","useState","useCallback","callback","_emblaApi$plugins","autoplay","plugins","stopOnInteraction","reset","stop","_emblaApi$plugins2","isPlaying","play","useEffect","_emblaApi$plugins3","on","useAutoplay","showAutoplayProgress","useAutoplayProgress","setShowAutoplayProgress","animationName","timeoutId","rafId","startProgress","timeUntilNext","node","current","style","window","getComputedStyle","transform","requestAnimationFrame","setTimeout","animationDuration","cancelAnimationFrame","clearTimeout","React","className","ref","map","index","key","PrevButton","onClick","disabled","NextButton","concat","type","defaultOptions","active","breakpoints","jump","stopOnFocusIn","stopOnMouseEnter","stopOnLastSnap","rootNode","userOptions","destroyed","timerStartTime","timerId","autoplayActive","mouseIsOver","playOnDocumentVisible","startAutoplay","documentIsHidden","emit","ownerWindow","internalEngine","next","selectedScrollSnap","Date","getTime","setTimer","stopAutoplay","clearTimer","visibilityChange","ownerDocument","visibilityState","pointerDown","pointerUp","mouseEnter","mouseLeave","nextIndex","clone","add","get","lastIndex","scrollSnapList","length","kill","canScrollNext","scrollNext","scrollTo","name","init","emblaApiInstance","optionsHandler","mergeOptions","optionsAtMedia","optionsBase","globalOptions","allOptions","scrollSnaps","normalizeDelay","eventStore","isDraggable","watchDrag","root","emblaRootNode","getAutoplayRootNode","containerNode","destroy","off","jumpOverride","undefined"],"sourceRoot":""} \ No newline at end of file diff --git a/docs/95da5ec31316267b433b7b2e2bbaca0a1c0b9c0a-2e7e9fff43ab5ea20ef4.js b/docs/95da5ec31316267b433b7b2e2bbaca0a1c0b9c0a-2e7e9fff43ab5ea20ef4.js new file mode 100644 index 00000000..2ef2fe41 --- /dev/null +++ b/docs/95da5ec31316267b433b7b2e2bbaca0a1c0b9c0a-2e7e9fff43ab5ea20ef4.js @@ -0,0 +1,2 @@ +(self.webpackChunkembla_carousel_docs=self.webpackChunkembla_carousel_docs||[]).push([[6075],{2220:function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n=r(683);t.getParameters=function(e){return t=JSON.stringify(e),n.compressToBase64(t).replace(/\+/g,"-").replace(/\//g,"_").replace(/=+$/,"");var t}},4274:function(e,t,r){"use strict";t.b=void 0;var n=r(2220);t.b=n.getParameters},3211:function(e){e.exports={bracketSpacing:!0,printWidth:80,semi:!1,singleQuote:!0,trailingComma:"none",tabWidth:2,useTabs:!1}},7736:function(e,t,r){"use strict";r.d(t,{EW:function(){return j},F6:function(){return v},Fc:function(){return ae},Gb:function(){return Z},MD:function(){return O},N$:function(){return ne},N1:function(){return Q},QR:function(){return q},RW:function(){return W},Tk:function(){return X},U3:function(){return E},Wr:function(){return _},Yl:function(){return re},Z4:function(){return f},br:function(){return b},cM:function(){return ee},cm:function(){return J},dJ:function(){return K},kk:function(){return w},lN:function(){return p},mh:function(){return $},mn:function(){return g},pS:function(){return Y},qV:function(){return V},uk:function(){return te},zw:function(){return H}});var n=r(3057),a=r(1801),o=r(6341),s=r(4393),i=r(1381),l=r(5335),c=r(4702),u=r(382),m=r(1664),d=r(9204);const f="19rem",p="6rem",b="0.8rem",_="22.2rem",g=s.F.SIX,E=s.F.THREE,h=(0,n.css)(["border-radius:",";"],i.Y.SOFT),C=(0,n.css)(["box-shadow:inset 0 0 0 "," ",";"],i.C.OUTLINE,o.lm.DETAIL_MEDIUM_CONTRAST),x=(0,n.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;"],d.Q),y=(0,n.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{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{transform:translate3d(0,0,0);flex:0 0 var(--slide-size);min-__replace-axis-size__:0;padding-__replace_axis_spacing__:var(--slide-spacing);}"],"48rem",f),S=(0,n.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),v=(0,n.css)([".embla__slide__number{",";",";font-size:",";font-weight:",";display:flex;align-items:center;justify-content:center;height:__replace_slide_height__;user-select:none;}"],C,h,c.$.CUSTOM((()=>4)),c.s.SEMI_BOLD),A=(0,n.css)([".embla__slide__img{",";display:block;height:__replace_slide_height__;width:100%;object-fit:cover;}"],h),T=(0,n.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%;}"]),j=(0,n.css)([".embla__controls{display:grid;grid-template-columns:auto 1fr;justify-content:space-between;gap:",";margin-top:",";}"],s.F.TWO,E),w=(0,n.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{","}"],s.F.ONE,x,C,(0,u.P)(g),a.R.STEP,i.Y.CIRCLE,o.lm.TEXT_BODY,o.lm.DETAIL_HIGH_CONTRAST,(0,u.P)("35%")),O=(0,n.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 "," ",";}"],x,(0,u.P)("2.6rem"),i.Y.CIRCLE,C,(0,u.P)("1.4rem"),i.Y.CIRCLE,i.C.OUTLINE,o.lm.TEXT_BODY),I=(0,n.css)([".embla__selected-snap-display{justify-self:flex-end;align-self:center;color:",";font-weight:",";}"],o.lm.TEXT_LOW_CONTRAST,c.s.SEMI_BOLD),P=(0,n.css)([".embla__play{",";",";",";display:flex;align-items:center;justify-content:center;justify-self:flex-end;color:",";font-weight:",";font-size:",";padding:0 ",";min-width:",";}"],x,C,h,o.lm.TEXT_BODY,c.s.BOLD,c.$.COMPLEMENTARY,s.F.FOUR,s.F.FOURTEEN),L=(0,n.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,h,x,C,c.$.H4,c.s.SEMI_BOLD,o.lm.DETAIL_HIGH_CONTRAST,o.lm.TEXT_BODY),k=(0,n.css)([".embla__controls{grid-template-columns:auto 1fr auto;}.embla__progress{justify-self:center;transition:opacity 0.3s ease-in-out;width:8rem;}.embla__progress--hidden{opacity:0;}.embla__progress__bar{animation-name:autoplay-progress;animation-timing-function:linear;animation-iteration-count:1;}.embla__progress--hidden .embla__progress__bar{animation-play-state:paused;}@keyframes autoplay-progress{0%{transform:translate3d(0,0,0);}100%{transform:translate3d(100%,0,0);}}"]),N=(0,n.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%;}"],h,C,o.lm.BACKGROUND_SITE,o.lm.TEXT_BODY),B=(0,n.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;}"],h),D=(0,n.css)([".embla__slide__number{backface-visibility:hidden;}"]),R=(0,n.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);}}"],i.C.ACCENT_VERTICAL,o.lm.TEXT_HIGH_CONTRAST_RGB_VALUE,i.C.ACCENT_VERTICAL,o.lm.TEXT_HIGH_CONTRAST,i.Y.CIRCLE,(0,u.P)("5rem"),(0,u.P)("5rem")),z=(0,n.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),G=(0,n.css)([".embla__slide{transition:opacity 0.2s ease-in-out;}.embla__slide:not(.is-snapped){opacity:0.16;}"]),F=(0,n.css)([".embla__slide__img{user-select:none;}"]),M=(0,n.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);}}"],i.C.ACCENT_VERTICAL,o.lm.TEXT_HIGH_CONTRAST_RGB_VALUE,i.C.ACCENT_VERTICAL,o.lm.TEXT_HIGH_CONTRAST,i.Y.CIRCLE,(0,u.P)("5rem"),(0,u.P)("5rem")),U=(0,n.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;}"],_,a.R.STEP,o.lm.TEXT_HIGH_CONTRAST_RGB_VALUE,o.lm.BACKGROUND_SITE_RGB_VALUE,o.lm.BACKGROUND_SITE_RGB_VALUE,o.lm.TEXT_HIGH_CONTRAST_RGB_VALUE,o.lm.BACKGROUND_SITE_RGB_VALUE,o.lm.BACKGROUND_SITE_RGB_VALUE,c.s.BOLD),H=function(e,t,r,n,a){void 0===e&&(e="100%"),void 0===t&&(t="1rem"),void 0===r&&(r="x"),void 0===n&&(n=""),void 0===a&&(a=(0,m.i)(y));const o="x"===r,s=o?"left":"top",i=`pan-${o?"y":"x"} pinch-zoom`,l=o?"width":"height",c=o?"var(--slide-height)":"100%",u=o?"":"height: calc(var(--slide-spacing) + var(--slide-height));";return(a+n).replace(/__replace_axis_flex__/gi,o?"":"flex-direction: column;").replace(/__replace-axis-size__/gi,l).replace(/__replace-axis-touch_action__/gi,i).replace(/__replace_axis_spacing__/gi,s).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)},$=(e,t,r)=>H(e,t,r,(0,m.i)(v,j,w,I)),V=(e,t,r)=>H(e,t,r,(0,m.i)(T,v,j,w,I)),J=(e,t,r)=>H(e,t,r,(0,m.i)(v,j,w,O),(0,m.i)(S)),X=(e,t,r)=>H(e,t,r,(0,m.i)(v,L)),Y=(e,t,r)=>H(e,t,r,(0,m.i)(v,j,w,N)),W=(e,t,r)=>H(e,t,r,(0,m.i)(A,j,w,O,B)),q=(e,t,r)=>H(e,t,r,(0,m.i)(v,j,w,O,D)),K=(e,t,r)=>H(e,t,r,(0,m.i)(A,j,w,O)),Q=(e,t,r)=>H(e,t,r,(0,m.i)(v,j,w,P,N,k)),Z=(e,t,r)=>H(e,t,r,(0,m.i)(v,j,w,O,z)),ee=(e,t,r)=>H(e,t,r,(0,m.i)(A,j,w,O,G)),te=(e,t,r)=>H(e,t,r,(0,m.i)(A,j,w,O,F)),re=(e,t,r)=>H(e,t,r,(0,m.i)(A,j,w,O,R)),ne=(e,t,r)=>H(e,t,r,(0,m.i)(v,j,w,I,M)),ae=()=>(0,m.i)(U)},2272:function(e,t,r){"use strict";r.d(t,{Q:function(){return _}});var n=r(4041),a=r(3057),o=r(7286),s=r(3724),i=r(3214),l=r(6341),c=r(4702),u=r(4393);const m=a.default.nav.withConfig({displayName:"PageBreadcrumbs__PageBreadcrumbsWrapper",componentId:"sc-1mlty1z-0"})(["display:flex;align-items:center;font-size:",";margin-bottom:",";"],c.$.COMPLEMENTARY,u.F.THREE),d=(0,a.css)(["color:",";padding:"," 0;"],l.lm.TEXT_LOW_CONTRAST,u.F.ONE),f=(0,a.default)(o.l).withConfig({displayName:"PageBreadcrumbs__Link",componentId:"sc-1mlty1z-1"})(["",";"],d),p=a.default.span.withConfig({displayName:"PageBreadcrumbs__ActiveTitle",componentId:"sc-1mlty1z-2"})(["",";"],d),b=(0,a.default)(i.I).withConfig({displayName:"PageBreadcrumbs__Separator",componentId:"sc-1mlty1z-3"})(["color:",";margin:0 ",";"],l.lm.TEXT_LOW_CONTRAST,u.F.ONE),_=e=>{const{id:t}=e,r=(0,s.rx)(t);return 0===r.length?null:n.createElement(m,{"aria-label":"Breadcrumb Navigation"},r.map(((e,t)=>{let{id:a,slug:o,title:s}=e;return t!==r.length-1?n.createElement(n.Fragment,{key:a},n.createElement(f,{to:o},s),n.createElement(b,{size:"0.6rem",svg:"chevronRight",role:"presentation","aria-hidden":"false"})):n.createElement(p,{key:a},s)})))}},6169:function(e,t,r){"use strict";r.d(t,{R:function(){return d}});var n=r(4041),a=r(3057),o=r(7286),s=r(6341),i=r(4702),l=r(4393),c=r(8893),u=r(405);const m=(0,a.default)(o.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:",";"],i.$.COMPLEMENTARY,l.F.ONE,l.F.ONE,l.F.EIGHT,s.lm.TEXT_LOW_CONTRAST),d=e=>{const{pageUrl:t}=e,r=`${c.t.GITHUB_DOCUMENTATION}/${t}`;return n.createElement(m,{to:r},n.createElement(u.vK,{iconSvg:"pen",iconSize:"1.5rem"},"Edit this page on GitHub"))}},8324:function(e,t,r){"use strict";r.d(t,{o:function(){return g}});var n=r(4041),a=r(3057),o=r(7286),s=r(4906),i=r(6341),l=r(4393),c=r(4702),u=r(405),m=r(4094);const d=l.F.FOUR,f=a.default.nav.withConfig({displayName:"PagePagination__PagePaginationWrapper",componentId:"sc-3ejrow-0"})(["",";display:flex;justify-content:space-between;margin-top:",";"],(0,m.F)(d,"","div"),l.F.EIGHT),p=a.default.div.withConfig({displayName:"PagePagination__Item",componentId:"sc-3ejrow-1"})(["> a{color:",";}&:nth-child(2) > a{text-align:right;color:",";}"],i.lm.BRAND_PRIMARY,i.lm.BRAND_SECONDARY),b=a.default.div.withConfig({displayName:"PagePagination__ItemLabel",componentId:"sc-3ejrow-2"})(["color:",";padding-bottom:",";"],i.lm.TEXT_LOW_CONTRAST,l.F.ONE),_=a.default.div.withConfig({displayName:"PagePagination__ItemTitle",componentId:"sc-3ejrow-3"})(["display:inline-flex;align-items:center;font-weight:",";","{",";}"],c.s.MEDIUM,u.eU,s.y),g=e=>{const{next:t,previous:r}=e;return n.createElement(f,{"aria-label":"Pagination Navigation"},n.createElement(p,null,r&&n.createElement(o.l,{to:r.slug},n.createElement(b,null,"Previous"),n.createElement(_,null,n.createElement(u.vK,{iconSvg:"arrowLeft"},r.title)))),n.createElement(p,null,t&&n.createElement(o.l,{to:t.slug},n.createElement(b,null,"Next"),n.createElement(_,null,n.createElement(u.vK,{iconSvg:"arrowRight",iconSide:"right"},t.title)))))}},1528:function(e,t,r){"use strict";r.d(t,{$:function(){return S}});var n=r(4274),a=r(5378),o=r(3160),s=r(3525),i=r(8330),l=r(7564),c=r(5399);var u=r(6341),m=r(9874),d=r(1672);const f=async e=>{const t=await r.e(8269).then(r.bind(r,8269)),n=u.tv+(0,m.b)(),a=(0,l.fq)(e," ");return t.default.replace(d.Ug,n).replace(d.R6,a)},p=/import\sEmblaCarousel\sfrom\s'(.*)'/,b=/const\sSLIDE_COUNT\s=\s\d{1,}/,_='import EmblaCarousel from "./EmblaCarousel"',g=async(e,t,n,a)=>"embla-carousel-ios-style-picker"===a?(async(e,t)=>(await r(348)(`./CarouselIosPickerEntry.${e}`)).default.replace(p,_).replace(d.Ap,(0,c.Wb)(t)))(e,!!n.loop):(async(e,t,n)=>{const a=t.length.toString();return(await r(7182)(`./CarouselDefaultEntry.${e}`)).default.replace(p,_).replace(d.$b,(0,c.rf)(n)).replace(b,(e=>e.replace(/\d{1,}/,a)))})(e,t,n),E=/import\s{\ssandboxImages\s}\sfrom\s'(.*)/,h=/sandboxImages\(index\)/,C=async(e,t)=>{const n=await r(4502)(`./Header.${e}`),a=(0,l.fq)(t," ");return n.default.replace(d.R6,a)};var x=r(8893);const y=async e=>(await r(2804)(`./Footer.${e}`)).default.replace(d.HC,x.t.GITHUB_ROOT),S=async e=>{const{id:t,carouselScript:r,slides:u,options:m,styles:p,plugins:b,sandboxOverrides:_,language:x=d.uq.JAVASCRIPT}=e,S=`${t}-react`,{prettierConfig:v,formatCss:A}=await(0,s.g)(),{isTypeScript:T,reactScriptExtension:j,formatScript:w}=await(0,c.Bz)(x),O=await(async(e,t,r)=>{const{El:n,rh:a}=i,{isJavaScript:s,reactScriptExtension:u}=await(0,c.Bz)(e);return{name:t,version:"1.0.0",description:`${(0,l.fq)(t," ")} Example`,main:`${o.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:n.react,"react-dom":n["react-dom"],"react-scripts":"4.0.0","embla-carousel-react":n["embla-carousel-react"],"embla-carousel":n["embla-carousel"],...r&&r},devDependencies:s?{"@babel/runtime":"7.13.8"}:{"@types/react":a["@types/react"],"@types/react-dom":a["@types/react-dom"],typescript:a.typescript},browserslist:[">0.2%","not dead","not ie <= 11","not op_mini all"]}})(x,S,b),I={include:["./src/**/*"],compilerOptions:{strict:!0,esModuleInterop:!0,lib:["es6","dom"],jsx:"react-jsx"}},P=(e=>e.replace(E,"").replace(h,"`https://picsum.photos/600/350?v=${index}`"))(r),[L,k,N,B]=await Promise.all([f(S),g(j,u,m,t),C(j,S),y(j)]),D={".prettierrc":{isBinary:!1,content:JSON.stringify(v,null,"\t")},"package.json":{isBinary:!1,content:JSON.stringify(O,null,"\t")},[`${o.c.PUBLIC}/index.html`]:{isBinary:!1,content:L},[`${o.c.CSS}/base.css`]:{isBinary:!1,content:A(a.y)},[`${o.c.CSS}/sandbox.css`]:{isBinary:!1,content:A(a.c)},[`${o.c.CSS}/embla.css`]:{isBinary:!1,content:A(p)},[`${o.c.JS}/index.${j}`]:{isBinary:!1,content:w(k)},[`${o.c.JS}/Header.${j}`]:{isBinary:!1,content:w(N)},[`${o.c.JS}/Footer.${j}`]:{isBinary:!1,content:w(B)},[`${o.c.JS}/EmblaCarousel.${j}`]:{isBinary:!1,content:w(P)}};return T&&Object.assign(D,{"tsconfig.json":{isBinary:!1,content:JSON.stringify(I,null,"\t")}}),(0,n.b)({files:Object.assign({},D,_)})}},3160:function(e,t,r){"use strict";r.d(t,{c:function(){return n}});const n={PUBLIC:"public",CSS:"src/css",JS:"src/js"}},5435:function(e,t,r){"use strict";r.d(t,{F:function(){return h}});var n=r(4274),a=r(5378),o=r(6052),s=r(3525),i=r(8330),l=r(7564),c=r(5399);var u=r(6341),m=r(8893),d=r(9874),f=r(1672);const p=/__replace_sandbox_script_src__/g,b=/__replace_sandbox_code__/g,_=/\/static\/slide-\d{1,}-.+?\.jpg/g,g=/slide-\d{1,}/,E=/slide-/,h=async e=>{const{id:t,carouselScript:h,carouselHtml:C,options:x,styles:y,plugins:S,sandboxOverrides:v,language:A=f.uq.JAVASCRIPT}=e,T=`${t}-vanilla`,{prettierConfig:j,formatHtml:w,formatCss:O}=await(0,s.g)(),{isTypeScript:I,vanillaScriptExtension:P,formatScript:L}=await(0,c.Bz)(A),k=await(async(e,t,r)=>{const{isJavaScript:n}=await(0,c.Bz)(e),{El:a,rh:o}=i;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":a["embla-carousel-react"],...r&&r},devDependencies:n?{"@babel/core":"7.2.0"}:{typescript:o.typescript},resolutions:{"@babel/preset-env":"7.13.8"}}})(A,T,S),N={include:["./src/**/*"],compilerOptions:{strict:!0,module:"commonjs",jsx:"preserve",esModuleInterop:!0,sourceMap:!0,allowJs:!0,lib:["es6","dom"],rootDir:"src",moduleResolution:"node"}},B=((e,t)=>{const r=null==t?void 0:t.loop;return e.replace(f.$b,(0,c.rf)(t)).replace(f.Ap,(0,c.Wb)(r))})(h,x),D=await(async(e,t,n)=>{const a=await r.e(7265).then(r.bind(r,7265)),s=u.tv+(0,d.b)(),i=(0,l.fq)(e," "),c=`${o.i.JS}/index.${t}`;return a.default.replace(f.Ug,s).replace(f.R6,i).replace(p,c).replace(f.HC,m.t.GITHUB_ROOT).replace(b,n)})(T,P,(e=>e.replace(_,(e=>`https://picsum.photos/600/350?v=${(e.match(g)||[""])[0].replace(E,"")}`)))(C)),R={".prettierrc":{isBinary:!1,content:JSON.stringify(j,null,"\t")},"package.json":{isBinary:!1,content:JSON.stringify(k,null,"\t")},"index.html":{isBinary:!1,content:w(D)},[`${o.i.CSS}/base.css`]:{isBinary:!1,content:O(a.y)},[`${o.i.CSS}/sandbox.css`]:{isBinary:!1,content:O(a.c)},[`${o.i.CSS}/embla.css`]:{isBinary:!1,content:O(y)},[`${o.i.JS}/index.${P}`]:{isBinary:!1,content:L(B)}};return I&&Object.assign(R,{"tsconfig.json":{isBinary:!1,content:JSON.stringify(N,null,"\t")}}),(0,n.b)({files:Object.assign({},R,v)})}},6052:function(e,t,r){"use strict";r.d(t,{i:function(){return n}});const n={CSS:"src/css",JS:"src/js"}},2168:function(e,t,r){"use strict";r.d(t,{r:function(){return d},Z:function(){return m}});var n=r(107),a=r(5399);const o=/from\s'.\/EmblaCarousel(.*)'/g,s=/.+?(?=EmblaCarousel)/,i=e=>(e.match(o)||[]).map((e=>e.replace(s,"").replace(/'/,""))),l=/from\s'..\/EmblaCarousel(.*)'/g,c=/.+?(?=EmblaCarousel)/,u=e=>(e.match(l)||[]).map((e=>e.replace(c,"").replace(/'/,""))),m=async(e,t,o)=>{const{vanillaScriptExtension:s}=await(0,a.Bz)(e),l=i(t),c=u(t),m=[].concat((0,n.A)(l),(0,n.A)(c)),d=l.map((e=>r(9382)(`./${o}/${e}.${s}`))),f=c.map((e=>r(3765)(`./${e}.${s}`))),p=[].concat((0,n.A)(d),(0,n.A)(f)),b=(await Promise.all(p)).map(((e,t)=>({script:e,name:m[t]})));return new Promise((e=>e(b)))},d=async(e,t,o)=>{const{reactScriptExtension:s}=await(0,a.Bz)(e),l=i(t),c=u(t),m=[].concat((0,n.A)(l),(0,n.A)(c)),d=l.map((e=>r(4142)(`./${o}/${e}.${s}`))),f=c.map((e=>r(8861)(`./${e}.${s}`))),p=[].concat((0,n.A)(d),(0,n.A)(f)),b=(await Promise.all(p)).map(((e,t)=>({script:e,name:m[t]})));return new Promise((e=>e(b)))}},3125:function(e,t,r){"use strict";r.d(t,{R:function(){return o}});var n=r(1672),a=r(5399);const o=e=>{const t=Object.values(n.LC).filter((t=>e.match(`from '${t}'`)));return(0,a.rJ)(t).plugins}},5378:function(e,t,r){"use strict";r.d(t,{c:function(){return d},y:function(){return m}});var n=r(3057),a=r(1664),o=r(4702),s=r(6341),i=r(8237);const l=(0,n.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;}"],s.lm.BACKGROUND_SITE,i.X,s.lm.BACKGROUND_SITE,s.lm.TEXT_HIGH_CONTRAST,o.$.BODY),c=(0,n.css)([".header{font-size:2rem;font-weight:",";text-align:center;padding:4rem 2rem 2rem 2rem;margin:0;}"],o.s.BOLD),u=(0,n.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;}"],o.s.SEMI_BOLD,s.lm.TEXT_LOW_CONTRAST),m=(0,a.i)(l,s.Zy),d=(0,a.i)(c,u)},352:function(e,t,r){"use strict";r.d(t,{G:function(){return i}});var n=r(4041),a=r(408),o=r(3594),s=r(7564);const i=e=>{const{title:t,description:r,lang:i="en",url:l,children:c}=e,u=(0,a.Q)(),m=`${t} | ${(0,s.fq)(u.title)}`,d=r||u.description;return n.createElement(n.Fragment,null,n.createElement("html",{lang:i}),n.createElement("title",null,m),n.createElement("link",{rel:"canonical",href:l}),n.createElement("meta",{name:"description",content:d}),n.createElement("meta",{name:"og:title",content:t}),n.createElement("meta",{name:"og:description",content:d}),n.createElement("meta",{name:"og:type",content:"article"}),n.createElement("meta",{name:"og:locale",content:"en_EN"}),n.createElement("meta",{name:"og:url",content:l}),n.createElement("meta",{name:"og:site_name",content:(0,o.b)(u.siteUrl)}),n.createElement("meta",{name:"twitter:card",content:"summary"}),n.createElement("meta",{name:"twitter:creator",content:u.author}),n.createElement("meta",{name:"twitter:title",content:t}),n.createElement("meta",{name:"twitter:description",content:d}),c)}},1672:function(e,t,r){"use strict";r.d(t,{$b:function(){return f},Ap:function(){return p},HC:function(){return u},HQ:function(){return i},KH:function(){return a},LC:function(){return s},R6:function(){return m},Ug:function(){return d},gc:function(){return l},hz:function(){return c},uq:function(){return o}});var n=r(4393);const a={VANILLA_JS:"Vanilla",VANILLA_TS:"Vanilla + TypeScript",REACT_TS:"React + TypeScript",REACT_JS:"React"},o={JAVASCRIPT:"javascript",TYPESCRIPT:"typescript"},s={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"},i={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=n.F.ONE,u=/__replace_sandbox_repository_url__/g,m=/__replace_sandbox_title__/g,d=/__replace_sandbox_theme__/g,f=/const\sOPTIONS(.*)/,p=/const\sLOOP\s=\sfalse/},8312:function(e,t,r){"use strict";r.d(t,{F:function(){return n}});const n=e=>Array.from(Array(e).keys())},9874:function(e,t,r){"use strict";r.d(t,{b:function(){return o}});var n=r(6341),a=r(8988);const o=()=>{if(!a.B)return n.$.LIGHT;const e=n.tv+n.$.LIGHT;return document.documentElement.classList.contains(e)?n.$.LIGHT:n.$.DARK}},3525:function(e,t,r){"use strict";r.d(t,{g:function(){return o}});var n=r(4620);const a=r.n(n)(),o=async()=>{const[e,t,n,o]=await Promise.all([r.e(4832).then(r.t.bind(r,2406,23)),r.e(775).then(r.t.bind(r,6242,23)),r.e(7190).then(r.t.bind(r,7190,23)),r.e(4858).then(r.t.bind(r,3975,23))]),s={...a,parser:"html",plugins:[t]},i={...a,parser:"css",plugins:[n]},l={...a,parser:"babel",plugins:[o]},c={...a,parser:"babel-ts",plugins:[o]},u=(t,r)=>{let n="";try{n=e.format(t,r)}catch(a){console.warn("Prettier was not able to format file",a)}return n};return{prettierConfig:a,formatHtml:e=>u(e,s),formatCss:e=>u(e,i),formatJs:e=>u(e,l),formatTs:e=>u(e,c)}}},3594:function(e,t,r){"use strict";r.d(t,{b:function(){return n}});const n=e=>e.replace(/(^\w+:|^)\/\//,"")},5399:function(e,t,r){"use strict";r.d(t,{Bz:function(){return i},M8:function(){return d},Wb:function(){return m},Yy:function(){return l},rJ:function(){return c},rf:function(){return u}});var n=r(8330),a=r(3525),o=r(7564),s=r(1672);const i=async e=>{const{formatTs:t,formatJs:r}=await(0,a.g)(),n=e===s.uq.TYPESCRIPT,o=!n;return{isJavaScript:o,isTypeScript:n,vanillaScriptExtension:o?"js":"ts",reactScriptExtension:o?"jsx":"tsx",formatScript:n?t:r}},l=e=>Object.keys(e).map((t=>{const r=t,n=e[r];return{key:r,label:s.KH[r],createSandbox:n}})),c=e=>({plugins:{...(Array.isArray(e)?e:[e]).reduce(((e,t)=>({...e,[t]:n.El[t]})),{})}}),u=e=>t=>t.replace("{}",JSON.stringify(e)),m=function(e){return void 0===e&&(e=!1),t=>t.replace("false",e.toString())},d=e=>({FIELD_NAME:e,ID:`${s.gc}-${(0,o.QA)(e)}`})},1664:function(e,t,r){"use strict";r.d(t,{i:function(){return n}});const n=function(){for(var e=arguments.length,t=new Array(e),r=0;re+t.join("")),"")}},4620:function(e,t,r){e.exports=r(3211)},7154:function(e,t,r){"use strict";r.d(t,{A:function(){return $}});var n=r(4041);function a(e){return function(e){return"[object Object]"===Object.prototype.toString.call(e)}(e)||Array.isArray(e)}function o(e,t){const r=Object.keys(e),n=Object.keys(t);if(r.length!==n.length)return!1;return JSON.stringify(Object.keys(e.breakpoints||{}))===JSON.stringify(Object.keys(t.breakpoints||{}))&&r.every((r=>{const n=e[r],s=t[r];return"function"==typeof n?`${n}`==`${s}`:a(n)&&a(s)?o(n,s):n===s}))}function s(e){return e.concat().sort(((e,t)=>e.name>t.name?1:-1)).map((e=>e.options))}var i=r(107);function l(e){return"number"==typeof e}function c(e){return"string"==typeof e}function u(e){return"boolean"==typeof e}function m(e){return"[object Object]"===Object.prototype.toString.call(e)}function d(e){return Math.abs(e)}function f(e){return Math.sign(e)}function p(e,t){return d(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 E(e,t){return t===g(e)}function h(e,t){return void 0===t&&(t=0),Array.from(Array(e),((e,r)=>t+r))}function C(e){return Object.keys(e)}function x(e,t){return[e,t].reduce(((e,t)=>(C(t).forEach((r=>{const n=e[r],a=t[r],o=m(n)&&m(a);e[r]=o?x(n,a):a})),e)),{})}function y(e,t){return void 0!==t.MouseEvent&&e instanceof t.MouseEvent}function S(){let e=[];const t={add:function(r,n,a,o){let s;if(void 0===o&&(o={passive:!0}),"addEventListener"in r)r.addEventListener(n,a,o),s=()=>r.removeEventListener(n,a,o);else{const e=r;e.addListener(a),s=()=>e.removeListener(a)}return e.push(s),t},clear:function(){e=e.filter((e=>e()))}};return t}function v(e,t,r,n){const a=S(),o=1e3/60;let s=null,i=0,l=0;function c(e){if(!l)return;s||(s=e,r(),r());const a=e-s;for(s=e,i+=a;i>=o;)r(),i-=o;n(i/o),l&&(l=t.requestAnimationFrame(c))}function u(){t.cancelAnimationFrame(l),s=null,i=0,l=0}return{init:function(){a.add(e,"visibilitychange",(()=>{e.hidden&&(s=null,i=0)}))},destroy:function(){u(),a.clear()},start:function(){l||(l=t.requestAnimationFrame(c))},stop:u,update:r,render:n}}function A(e,t){void 0===e&&(e=0),void 0===t&&(t=0);const r=d(e-t);function n(t){return tt}function o(e){return n(e)||a(e)}return{length:r,max:t,min:e,constrain:function(r){return o(r)?n(r)?e:t:r},reachedAny:o,reachedMax:a,reachedMin:n,removeOffset:function(e){return r?e-r*Math.ceil((e-t)/r):e}}}function T(e,t,r){const{constrain:n}=A(0,e),a=e+1;let o=s(t);function s(e){return r?d((a+e)%a):n(e)}function i(){return o}function l(){return T(e,i(),r)}const c={get:i,set:function(e){return o=s(e),c},add:function(e){return l().set(i()+e)},clone:l};return c}function j(e,t,r,n,a,o,s,i,l,c,m,b,_,g,E,h,C,x,v){const{cross:T,direction:j}=e,w=["INPUT","SELECT","TEXTAREA"],O={passive:!1},I=S(),P=S(),L=A(50,225).constrain(g.measure(20)),k={mouse:300,touch:400},N={mouse:500,touch:600},B=E?43:25;let D=!1,R=0,z=0,G=!1,F=!1,M=!1,U=!1;function H(e){if(!y(e,n)&&e.touches.length>=2)return $(e);const t=o.readPoint(e),r=o.readPoint(e,T),s=p(t,R),l=p(r,z);if(!F&&!U){if(!e.cancelable)return $(e);if(F=s>l,!F)return $(e)}const u=o.pointerMove(e);s>h&&(M=!0),c.useFriction(.3).useDuration(.75),i.start(),a.add(j(u)),e.preventDefault()}function $(e){const t=m.byDistance(0,!1).index!==b.get(),r=o.pointerUp(e)*(E?N:k)[U?"mouse":"touch"],n=function(e,t){const r=b.add(-1*f(e)),n=m.byDistance(e,!E).distance;return E||d(e)=2,i&&0!==e.button)return;if(function(e){const t=e.nodeName||"";return w.includes(t)}(e.target))return;G=!0,o.pointerDown(e),c.useFriction(0).useDuration(0),a.set(s),function(){const e=U?r:t;P.add(e,"touchmove",H,O).add(e,"touchend",$).add(e,"mousemove",H,O).add(e,"mouseup",$)}(),R=o.readPoint(e),z=o.readPoint(e,T),_.emit("pointerDown")}(i)}const l=t;I.add(l,"dragstart",(e=>e.preventDefault()),O).add(l,"touchmove",(()=>{}),O).add(l,"touchend",(()=>{})).add(l,"touchstart",i).add(l,"mousedown",i).add(l,"touchcancel",$).add(l,"contextmenu",$).add(l,"click",V,!0)},destroy:function(){I.clear(),P.clear()},pointerDown:function(){return G}}}function w(e,t){let r,n;function a(e){return e.timeStamp}function o(r,n){const a="client"+("x"===(n||e.scroll)?"X":"Y");return(y(r,t)?r:r.touches[0])[a]}return{pointerDown:function(e){return r=e,n=e,o(e)},pointerMove:function(e){const t=o(e)-o(n),s=a(e)-a(r)>170;return n=e,s&&(r=e),t},pointerUp:function(e){if(!r||!n)return 0;const t=o(n)-o(r),s=a(e)-a(r),i=a(e)-a(n)>170,l=t/s;return s&&!i&&d(l)>.1?l:0},readPoint:o}}function O(e,t,r,n,a,o,s){const i=[e].concat(n);let l,c,m=[],f=!1;function p(e){return a.measureSize(s.measure(e))}return{init:function(a){o&&(c=p(e),m=n.map(p),l=new ResizeObserver((r=>{(u(o)||o(a,r))&&function(r){for(const o of r){if(f)return;const r=o.target===e,s=n.indexOf(o.target),i=r?c:m[s];if(d(p(r?e:n[s])-i)>=.5){a.reInit(),t.emit("resize");break}}}(r)})),r.requestAnimationFrame((()=>{i.forEach((e=>l.observe(e)))})))},destroy:function(){f=!0,l&&l.disconnect()}}}function I(e,t,r,n,a){const o=a.measure(10),s=a.measure(50),i=A(.1,.99);let l=!1;function c(){return!l&&(!!e.reachedAny(r.get())&&!!e.reachedAny(t.get()))}return{shouldConstrain:c,constrain:function(a){if(!c())return;const l=e.reachedMin(t.get())?"min":"max",u=d(e[l]-t.get()),m=r.get()-t.get(),f=i.constrain(u/s);r.subtract(m*f),!a&&d(m)e.add(a)))}}}function L(e,t,r,n,a){const{reachedAny:o,removeOffset:s,constrain:i}=n;function l(e){return e.concat().sort(((e,t)=>d(e)-d(t)))[0]}function c(t,n){const a=[t,t+r,t-r];if(!e)return t;if(!n)return l(a);const o=a.filter((e=>f(e)===n));return o.length?l(o):_(a)-r}return{byDistance:function(r,n){const l=a.get()+r,{index:u,distance:m}=function(r){const n=e?s(r):i(r),a=t.map(((e,t)=>({diff:c(e-n,0),index:t}))).sort(((e,t)=>d(e.diff)-d(t.diff))),{index:o}=a[0];return{index:o,distance:n}}(l),f=!e&&o(l);return!n||f?{index:u,distance:r}:{index:u,distance:r+c(t[u]-m,0)}},byIndex:function(e,r){return{index:e,distance:c(t[e]-a.get(),r)}},shortcut:c}}function k(e,t,r,n,a,o,s,i){const c={passive:!0,capture:!0};let m=0;function d(e){"Tab"===e.code&&(m=(new Date).getTime())}return{init:function(f){i&&(o.add(document,"keydown",d,!1),t.forEach(((t,d)=>{o.add(t,"focus",(t=>{(u(i)||i(f,t))&&function(t){if((new Date).getTime()-m>10)return;s.emit("slideFocusStart"),e.scrollLeft=0;const o=r.findIndex((e=>e.includes(t)));l(o)&&(a.useDuration(0),n.index(o,0),s.emit("slideFocus"))}(d)}),c)})))}}}function N(e){let t=e;function r(e){return l(e)?e:e.get()}return{get:function(){return t},set:function(e){t=r(e)},add:function(e){t+=r(e)},subtract:function(e){t-=r(e)}}}function B(e,t){const r="x"===e.scroll?function(e){return`translate3d(${e}px,0px,0px)`}:function(e){return`translate3d(0px,${e}px,0px)`},n=t.style;let a=null,o=!1;return{clear:function(){o||(n.transform="",t.getAttribute("style")||t.removeAttribute("style"))},to:function(t){if(o)return;const s=(i=e.direction(t),Math.round(100*i)/100);var i;s!==a&&(n.transform=r(s),a=s)},toggleActive:function(e){o=!e}}}function D(e,t,r,n,a,o,s,i,l){const c=.5,u=b(a),m=b(a).reverse(),d=function(){const e=s[0];return _(p(m,e),r,!1)}().concat(function(){const e=t-s[0]-1;return _(p(u,e),-r,!0)}());function f(e,t){return e.reduce(((e,t)=>e-a[t]),t)}function p(e,t){return e.reduce(((e,r)=>f(e,t)>0?e.concat([r]):e),[])}function _(a,s,u){const m=function(e){return o.map(((r,a)=>({start:r-n[a]+c+e,end:r+t-c+e})))}(s);return a.map((t=>{const n=u?0:-r,a=u?r:0,o=u?"end":"start",s=m[t][o];return{index:t,loopPoint:s,slideLocation:N(-1),translate:B(e,l[t]),target:()=>i.get()>s?n:a}}))}return{canLoop:function(){return d.every((e=>{let{index:r}=e;return f(u.filter((e=>e!==r)),t)<=.1}))},clear:function(){d.forEach((e=>e.translate.clear()))},loop:function(){d.forEach((e=>{const{target:t,translate:r,slideLocation:n}=e,a=t();a!==n.get()&&(r.to(a),n.set(a))}))},loopPoints:d}}function R(e,t,r){let n,a=!1;return{init:function(o){r&&(n=new MutationObserver((e=>{a||(u(r)||r(o,e))&&function(e){for(const r of e)if("childList"===r.type){o.reInit(),t.emit("slidesChanged");break}}(e)})),n.observe(e,{childList:!0}))},destroy:function(){n&&n.disconnect(),a=!0}}}function z(e,t,r,n){const a={};let o,s=null,i=null,l=!1;return{init:function(){o=new IntersectionObserver((e=>{l||(e.forEach((e=>{const r=t.indexOf(e.target);a[r]=e})),s=null,i=null,r.emit("slidesInView"))}),{root:e.parentElement,threshold:n}),t.forEach((e=>o.observe(e)))},destroy:function(){o&&o.disconnect(),l=!0},get:function(e){if(void 0===e&&(e=!0),e&&s)return s;if(!e&&i)return i;const t=function(e){return C(a).reduce(((t,r)=>{const n=parseInt(r),{isIntersecting:o}=a[n];return(e&&o||!e&&!o)&&t.push(n),t}),[])}(e);return e&&(s=t),e||(i=t),t}}}function G(e,t,r,n,a,o,s,i,c){const{startEdge:u,endEdge:m,direction:f}=e,p=l(r);return{groupSlides:function(e){return p?function(e,t){return b(e).filter((e=>e%t==0)).map((r=>e.slice(r,r+t)))}(e,r):function(e){return e.length?b(e).reduce(((r,l,p)=>{const b=_(r)||0,E=0===b,h=l===g(e),C=a[u]-o[b][u],x=a[u]-o[l][m],y=!n&&E?f(s):0,S=d(x-(!n&&h?f(i):0)-(C+y));return p&&S>t+c&&r.push(l),h&&r.push(e.length),r}),[]).map(((t,r,n)=>{const a=Math.max(n[r-1]||0);return e.slice(a,t)})):[]}(e)}}}function F(e,t,r,n,a,o,s){const{align:i,axis:l,direction:u,startIndex:m,loop:C,duration:x,dragFree:y,dragThreshold:F,inViewThreshold:M,slidesToScroll:U,skipSnaps:H,containScroll:$,watchResize:V,watchSlides:J,watchDrag:X,watchFocus:Y}=o,W={measure:function(e){const{offsetTop:t,offsetLeft:r,offsetWidth:n,offsetHeight:a}=e;return{top:t,right:r+n,bottom:t+a,left:r,width:n,height:a}}},q=W.measure(t),K=r.map(W.measure),Q=function(e,t){const r="rtl"===t,n="y"===e,a=!n&&r?-1:1;return{scroll:n?"y":"x",cross:n?"x":"y",startEdge:n?"top":r?"right":"left",endEdge:n?"bottom":r?"left":"right",measureSize:function(e){const{height:t,width:r}=e;return n?t:r},direction:function(e){return e*a}}}(l,u),Z=Q.measureSize(q),ee=function(e){return{measure:function(t){return e*(t/100)}}}(Z),te=function(e,t){const r={start:function(){return 0},center:function(e){return n(e)/2},end:n};function n(e){return t-e}return{measure:function(n,a){return c(e)?r[e](n):e(t,n,a)}}}(i,Z),re=!C&&!!$,ne=C||!!$,{slideSizes:ae,slideSizesWithGaps:oe,startGap:se,endGap:ie}=function(e,t,r,n,a,o){const{measureSize:s,startEdge:i,endEdge:l}=e,c=r[0]&&a,u=function(){if(!c)return 0;const e=r[0];return d(t[i]-e[i])}(),m=function(){if(!c)return 0;const e=o.getComputedStyle(_(n));return parseFloat(e.getPropertyValue(`margin-${l}`))}(),f=r.map(s),p=r.map(((e,t,r)=>{const n=!t,a=E(r,t);return n?f[t]+u:a?f[t]+m:r[t+1][i]-e[i]})).map(d);return{slideSizes:f,slideSizesWithGaps:p,startGap:u,endGap:m}}(Q,q,K,r,ne,a),le=G(Q,Z,U,C,q,K,se,ie,2),{snaps:ce,snapsAligned:ue}=function(e,t,r,n,a){const{startEdge:o,endEdge:s}=e,{groupSlides:i}=a,l=i(n).map((e=>_(e)[s]-e[0][o])).map(d).map(t.measure),c=n.map((e=>r[o]-e[o])).map((e=>-d(e))),u=i(c).map((e=>e[0])).map(((e,t)=>e+l[t]));return{snaps:c,snapsAligned:u}}(Q,te,q,K,le),me=-_(ce)+_(oe),{snapsContained:de,scrollContainLimit:fe}=function(e,t,r,n,a){const o=A(-t+e,0),s=r.map(((e,t)=>{const{min:n,max:a}=o,s=o.constrain(e),i=!t,c=E(r,t);return i?a:c||l(n,s)?n:l(a,s)?a:s})).map((e=>parseFloat(e.toFixed(3)))),i=function(){const e=s[0],t=_(s);return A(s.lastIndexOf(e),s.indexOf(t)+1)}();function l(e,t){return p(e,t)<=1}return{snapsContained:function(){if(t<=e+a)return[o.max];if("keepSnaps"===n)return s;const{min:r,max:l}=i;return s.slice(r,l)}(),scrollContainLimit:i}}(Z,me,ue,$,2),pe=re?de:ue,{limit:be}=function(e,t,r){const n=t[0];return{limit:A(r?n-e:_(t),n)}}(me,pe,C),_e=T(g(pe),m,C),ge=_e.clone(),Ee=b(r),he=v(n,a,(()=>(e=>{let{dragHandler:t,scrollBody:r,scrollBounds:n,options:{loop:a}}=e;a||n.constrain(t.pointerDown()),r.seek()})(ke)),(e=>((e,t)=>{let{scrollBody:r,translate:n,location:a,offsetLocation:o,previousLocation:s,scrollLooper:i,slideLooper:l,dragHandler:c,animation:u,eventHandler:m,scrollBounds:d,options:{loop:f}}=e;const p=r.settled(),b=!d.shouldConstrain(),_=f?p:p&&b;_&&!c.pointerDown()&&(u.stop(),m.emit("settle")),_||m.emit("scroll");const g=a.get()*t+s.get()*(1-t);o.set(g),f&&(i.loop(r.direction()),l.loop()),n.to(o.get())})(ke,e))),Ce=pe[_e.get()],xe=N(Ce),ye=N(Ce),Se=N(Ce),ve=N(Ce),Ae=function(e,t,r,n,a,o){let s=0,i=0,l=a,c=o,u=e.get(),m=0;function p(e){return l=e,_}function b(e){return c=e,_}const _={direction:function(){return i},duration:function(){return l},velocity:function(){return s},seek:function(){const t=n.get()-e.get();let a=0;return l?(r.set(e),s+=t/l,s*=c,u+=s,e.add(s),a=u-m):(s=0,r.set(n),e.set(n),a=t),i=f(a),m=u,_},settled:function(){return d(n.get()-t.get())<.001},useBaseFriction:function(){return b(o)},useBaseDuration:function(){return p(a)},useFriction:b,useDuration:p};return _}(xe,Se,ye,ve,x,.68),Te=L(C,pe,me,be,ve),je=function(e,t,r,n,a,o,s){function i(a){const i=a.distance,l=a.index!==t.get();o.add(i),i&&(n.duration()?e.start():(e.update(),e.render(1),e.update())),l&&(r.set(t.get()),t.set(a.index),s.emit("select"))}return{distance:function(e,t){i(a.byDistance(e,t))},index:function(e,r){const n=t.clone().set(e);i(a.byIndex(n.get(),r))}}}(he,_e,ge,Ae,Te,ve,s),we=function(e){const{max:t,length:r}=e;return{get:function(e){return r?(e-t)/-r:0}}}(be),Oe=S(),Ie=z(t,r,s,M),{slideRegistry:Pe}=function(e,t,r,n,a,o){const{groupSlides:s}=a,{min:i,max:l}=n;return{slideRegistry:function(){const n=s(o),a=!e||"keepSnaps"===t;return 1===r.length?[o]:a?n:n.slice(i,l).map(((e,t,r)=>{const n=!t,a=E(r,t);return n?h(_(r[0])+1):a?h(g(o)-_(r)[0]+1,_(r)[0]):e}))}()}}(re,$,pe,fe,le,Ee),Le=k(e,r,Pe,je,Ae,Oe,s,Y),ke={ownerDocument:n,ownerWindow:a,eventHandler:s,containerRect:q,slideRects:K,animation:he,axis:Q,dragHandler:j(Q,e,n,a,ve,w(Q,a),xe,he,je,Ae,Te,_e,s,ee,y,F,H,.68,X),eventStore:Oe,percentOfView:ee,index:_e,indexPrevious:ge,limit:be,location:xe,offsetLocation:Se,previousLocation:ye,options:o,resizeHandler:O(t,s,a,r,Q,V,W),scrollBody:Ae,scrollBounds:I(be,Se,ve,Ae,ee),scrollLooper:P(me,be,Se,[xe,Se,ye,ve]),scrollProgress:we,scrollSnapList:pe.map(we.get),scrollSnaps:pe,scrollTarget:Te,scrollTo:je,slideLooper:D(Q,Z,me,ae,oe,ce,pe,Se,r),slideFocus:Le,slidesHandler:R(t,s,J),slidesInView:Ie,slideIndexes:Ee,slideRegistry:Pe,slidesToScroll:le,target:ve,translate:B(Q,t)};return ke}const M={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,watchFocus:!0};function U(e){function t(e,t){return x(e,t||{})}const r={mergeOptions:t,optionsAtMedia:function(r){const n=r.breakpoints||{},a=C(n).filter((t=>e.matchMedia(t).matches)).map((e=>n[e])).reduce(((e,r)=>t(e,r)),{});return t(r,a)},optionsMediaQueries:function(t){return t.map((e=>C(e.breakpoints||{}))).reduce(((e,t)=>e.concat(t)),[]).map(e.matchMedia)}};return r}function H(e,t,r){const n=e.ownerDocument,a=n.defaultView,o=U(a),s=function(e){let t=[];return{init:function(r,n){return t=n.filter((t=>{let{options:r}=t;return!1!==e.optionsAtMedia(r).active})),t.forEach((t=>t.init(r,e))),n.reduce(((e,t)=>Object.assign(e,{[t.name]:t})),{})},destroy:function(){t=t.filter((e=>e.destroy()))}}}(o),l=S(),u=function(){let e,t={};function r(e){return t[e]||[]}const n={init:function(t){e=t},emit:function(t){return r(t).forEach((r=>r(e,t))),n},off:function(e,a){return t[e]=r(e).filter((e=>e!==a)),n},on:function(e,a){return t[e]=r(e).concat([a]),n},clear:function(){t={}}};return n}(),{mergeOptions:m,optionsAtMedia:d,optionsMediaQueries:f}=o,{on:p,off:b,emit:_}=u,g=O;let E,h,C,x,y=!1,v=m(M,H.globalOptions),A=m(v),T=[];function j(t){const r=F(e,C,x,n,a,t,u);if(t.loop&&!r.slideLooper.canLoop()){return j(Object.assign({},t,{loop:!1}))}return r}function w(t,r){y||(v=m(v,t),A=d(v),T=r||T,function(){const{container:t,slides:r}=A,n=c(t)?e.querySelector(t):t;C=n||e.children[0];const a=c(r)?C.querySelectorAll(r):r;x=[].slice.call(a||C.children)}(),E=j(A),f([v].concat((0,i.A)(T.map((e=>{let{options:t}=e;return t}))))).forEach((e=>l.add(e,"change",O))),A.active&&(E.translate.to(E.location.get()),E.animation.init(),E.slidesInView.init(),E.slideFocus.init(k),E.eventHandler.init(k),E.resizeHandler.init(k),E.slidesHandler.init(k),E.options.loop&&E.slideLooper.loop(),C.offsetParent&&x.length&&E.dragHandler.init(k),h=s.init(k,T)))}function O(e,t){const r=L();I(),w(m({startIndex:r},e),t),u.emit("reInit")}function I(){E.dragHandler.destroy(),E.eventStore.clear(),E.translate.clear(),E.slideLooper.clear(),E.resizeHandler.destroy(),E.slidesHandler.destroy(),E.slidesInView.destroy(),E.animation.destroy(),s.destroy(),l.clear()}function P(e,t,r){A.active&&!y&&(E.scrollBody.useBaseFriction().useDuration(!0===t?0:A.duration),E.scrollTo.index(e,r||0))}function L(){return E.index.get()}const k={canScrollNext:function(){return E.index.add(1).get()!==L()},canScrollPrev:function(){return E.index.add(-1).get()!==L()},containerNode:function(){return C},internalEngine:function(){return E},destroy:function(){y||(y=!0,l.clear(),I(),u.emit("destroy"),u.clear())},off:b,on:p,emit:_,plugins:function(){return h},previousScrollSnap:function(){return E.indexPrevious.get()},reInit:g,rootNode:function(){return e},scrollNext:function(e){P(E.index.add(1).get(),e,-1)},scrollPrev:function(e){P(E.index.add(-1).get(),e,1)},scrollProgress:function(){return E.scrollProgress.get(E.location.get())},scrollSnapList:function(){return E.scrollSnapList},scrollTo:P,selectedScrollSnap:L,slideNodes:function(){return x},slidesInView:function(){return E.slidesInView.get()},slidesNotInView:function(){return E.slidesInView.get(!1)}};return w(t,r),setTimeout((()=>u.emit("init")),0),k}function $(e,t){void 0===e&&(e={}),void 0===t&&(t=[]);const r=(0,n.useRef)(e),a=(0,n.useRef)(t),{0:i,1:l}=(0,n.useState)(),{0:c,1:u}=(0,n.useState)(),m=(0,n.useCallback)((()=>{i&&i.reInit(r.current,a.current)}),[i]);return(0,n.useEffect)((()=>{o(r.current,e)||(r.current=e,m())}),[e,m]),(0,n.useEffect)((()=>{(function(e,t){if(e.length!==t.length)return!1;const r=s(e),n=s(t);return r.every(((e,t)=>o(e,n[t])))})(a.current,t)||(a.current=t,m())}),[t,m]),(0,n.useEffect)((()=>{if("undefined"!=typeof window&&window.document&&window.document.createElement&&c){H.globalOptions=$.globalOptions;const e=H(c,r.current,a.current);return l(e),()=>e.destroy()}l(void 0)}),[c,l]),[u,i]}H.globalOptions=void 0,$.globalOptions=void 0},683:function(e,t,r){var n,a=function(){var e=String.fromCharCode,t="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",r="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+-$",n={};function a(e,t){if(!n[e]){n[e]={};for(var r=0;r>>8,r[2*n+1]=s%256}return r},decompressFromUint8Array:function(t){if(null==t)return o.decompress(t);for(var r=new Array(t.length/2),n=0,a=r.length;n>=1}else{for(a=1,n=0;n>=1}0==--m&&(m=Math.pow(2,f),f++),delete i[u]}else for(a=s[u],n=0;n>=1;0==--m&&(m=Math.pow(2,f),f++),s[c]=d++,u=String(l)}if(""!==u){if(Object.prototype.hasOwnProperty.call(i,u)){if(u.charCodeAt(0)<256){for(n=0;n>=1}else{for(a=1,n=0;n>=1}0==--m&&(m=Math.pow(2,f),f++),delete i[u]}else for(a=s[u],n=0;n>=1;0==--m&&(m=Math.pow(2,f),f++)}for(a=2,n=0;n>=1;for(;;){if(b<<=1,_==t-1){p.push(r(b));break}_++}return p.join("")},decompress:function(e){return null==e?"":""==e?null:o._decompress(e.length,32768,(function(t){return e.charCodeAt(t)}))},_decompress:function(t,r,n){var a,o,s,i,l,c,u,m=[],d=4,f=4,p=3,b="",_=[],g={val:n(0),position:r,index:1};for(a=0;a<3;a+=1)m[a]=a;for(s=0,l=Math.pow(2,2),c=1;c!=l;)i=g.val&g.position,g.position>>=1,0==g.position&&(g.position=r,g.val=n(g.index++)),s|=(i>0?1:0)*c,c<<=1;switch(s){case 0:for(s=0,l=Math.pow(2,8),c=1;c!=l;)i=g.val&g.position,g.position>>=1,0==g.position&&(g.position=r,g.val=n(g.index++)),s|=(i>0?1:0)*c,c<<=1;u=e(s);break;case 1:for(s=0,l=Math.pow(2,16),c=1;c!=l;)i=g.val&g.position,g.position>>=1,0==g.position&&(g.position=r,g.val=n(g.index++)),s|=(i>0?1:0)*c,c<<=1;u=e(s);break;case 2:return""}for(m[3]=u,o=u,_.push(u);;){if(g.index>t)return"";for(s=0,l=Math.pow(2,p),c=1;c!=l;)i=g.val&g.position,g.position>>=1,0==g.position&&(g.position=r,g.val=n(g.index++)),s|=(i>0?1:0)*c,c<<=1;switch(u=s){case 0:for(s=0,l=Math.pow(2,8),c=1;c!=l;)i=g.val&g.position,g.position>>=1,0==g.position&&(g.position=r,g.val=n(g.index++)),s|=(i>0?1:0)*c,c<<=1;m[f++]=e(s),u=f-1,d--;break;case 1:for(s=0,l=Math.pow(2,16),c=1;c!=l;)i=g.val&g.position,g.position>>=1,0==g.position&&(g.position=r,g.val=n(g.index++)),s|=(i>0?1:0)*c,c<<=1;m[f++]=e(s),u=f-1,d--;break;case 2:return _.join("")}if(0==d&&(d=Math.pow(2,p),p++),m[u])b=m[u];else{if(u!==f)return null;b=o+o.charAt(0)}_.push(b),m[f++]=o+b.charAt(0),o=b,0==--d&&(d=Math.pow(2,p),p++)}}};return o}();void 0===(n=function(){return a}.call(t,r,t,e))||(e.exports=n)},824:function(e,t,r){"use strict";t.A=r.p+"static/maskable-36b9e327abc26d5d02e9350d184a058f.png"},8861:function(e,t,r){var n={"./AutoHeight/EmblaCarousel.jsx":[4439,4439],"./AutoHeight/EmblaCarousel.tsx":[3405,3405],"./AutoScroll/EmblaCarousel.jsx":[2885,2885],"./AutoScroll/EmblaCarousel.tsx":[6831,6831],"./Autoplay/EmblaCarousel.jsx":[6652,6652],"./Autoplay/EmblaCarousel.tsx":[6158,6158],"./Autoplay/EmblaCarouselAutoplay.jsx":[6651,6651],"./Autoplay/EmblaCarouselAutoplay.tsx":[4265,4265],"./Autoplay/EmblaCarouselAutoplayProgress.jsx":[5350,5350],"./Autoplay/EmblaCarouselAutoplayProgress.tsx":[6676,6676],"./CarouselDefaultEntry.jsx":[5566,5566],"./CarouselDefaultEntry.tsx":[460,460],"./CarouselGenerator/EmblaCarousel.jsx":[4910,4910],"./CarouselGenerator/EmblaCarousel.tsx":[5404,5404],"./CarouselGenerator/EmblaCarouselArrowButtons.jsx":[4720,4720],"./CarouselGenerator/EmblaCarouselArrowButtons.tsx":[2682,2682],"./CarouselGenerator/EmblaCarouselDotButton.jsx":[893,893],"./CarouselGenerator/EmblaCarouselDotButton.tsx":[8855,8855],"./CarouselGenerator/EmblaCarouselSelectedSnapDisplay.jsx":[6807,6807],"./CarouselGenerator/EmblaCarouselSelectedSnapDisplay.tsx":[9421,9421],"./CarouselIosPickerEntry.jsx":[7700,7700],"./CarouselIosPickerEntry.tsx":[6,6],"./ClassNames/EmblaCarousel.jsx":[5223,5223],"./ClassNames/EmblaCarousel.tsx":[6429,6429],"./EmblaCarouselArrowButtons.jsx":[1920,1920],"./EmblaCarouselArrowButtons.tsx":[6458,6458],"./EmblaCarouselDotButton.jsx":[6237,6237],"./EmblaCarouselDotButton.tsx":[5207,5207],"./EmblaCarouselSelectedSnapDisplay.jsx":[6356,3975],"./EmblaCarouselSelectedSnapDisplay.tsx":[6013,6013],"./Fade/EmblaCarousel.jsx":[221,221],"./Fade/EmblaCarousel.tsx":[8183,8183],"./Footer.jsx":[8728,8728],"./Footer.tsx":[9474,9474],"./Header.jsx":[5266,5266],"./Header.tsx":[3400,3400],"./InfiniteScroll/EmblaCarousel.jsx":[7032,7032],"./InfiniteScroll/EmblaCarousel.tsx":[8898,8898],"./IosPicker/EmblaCarousel.jsx":[6958,6958],"./IosPicker/EmblaCarousel.tsx":[1852,1852],"./IosPicker/EmblaCarouselIosPickerItem.jsx":[3348,3348],"./IosPicker/EmblaCarouselIosPickerItem.tsx":[7142,7142],"./LazyLoad/EmblaCarousel.jsx":[1897,1897],"./LazyLoad/EmblaCarousel.tsx":[8683,8683],"./LazyLoad/EmblaCarouselLazyLoadImage.jsx":[3376,3376],"./LazyLoad/EmblaCarouselLazyLoadImage.tsx":[4618,4618],"./Opacity/EmblaCarousel.jsx":[2260,2260],"./Opacity/EmblaCarousel.tsx":[7862,7862],"./Parallax/EmblaCarousel.jsx":[3862,3862],"./Parallax/EmblaCarousel.tsx":[9844,9844],"./Progress/EmblaCarousel.jsx":[3146,3146],"./Progress/EmblaCarousel.tsx":[9360,9360],"./Scale/EmblaCarousel.jsx":[3734,3734],"./Scale/EmblaCarousel.tsx":[7387,7387],"./Thumbs/EmblaCarousel.jsx":[72,72],"./Thumbs/EmblaCarousel.tsx":[9122,9122],"./Thumbs/EmblaCarouselThumbsButton.jsx":[2875,2875],"./Thumbs/EmblaCarouselThumbsButton.tsx":[6841,6841],"./index.html":[8269,8269]};function a(e){if(!r.o(n,e))return Promise.resolve().then((function(){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}));var t=n[e],a=t[0];return r.e(t[1]).then((function(){return r(a)}))}a.keys=function(){return Object.keys(n)},a.id=8861,e.exports=a},4142:function(e,t,r){var n={"./AutoHeight/EmblaCarousel.jsx":[4439,4439],"./AutoHeight/EmblaCarousel.tsx":[3405,3405],"./AutoScroll/EmblaCarousel.jsx":[2885,2885],"./AutoScroll/EmblaCarousel.tsx":[6831,6831],"./Autoplay/EmblaCarousel.jsx":[6652,6652],"./Autoplay/EmblaCarousel.tsx":[6158,6158],"./Autoplay/EmblaCarouselAutoplay.jsx":[6651,6651],"./Autoplay/EmblaCarouselAutoplay.tsx":[4265,4265],"./Autoplay/EmblaCarouselAutoplayProgress.jsx":[5350,5350],"./Autoplay/EmblaCarouselAutoplayProgress.tsx":[6676,6676],"./CarouselGenerator/EmblaCarousel.jsx":[4910,4910],"./CarouselGenerator/EmblaCarousel.tsx":[5404,5404],"./CarouselGenerator/EmblaCarouselArrowButtons.jsx":[4720,4720],"./CarouselGenerator/EmblaCarouselArrowButtons.tsx":[2682,2682],"./CarouselGenerator/EmblaCarouselDotButton.jsx":[893,893],"./CarouselGenerator/EmblaCarouselDotButton.tsx":[8855,8855],"./CarouselGenerator/EmblaCarouselSelectedSnapDisplay.jsx":[6807,6807],"./CarouselGenerator/EmblaCarouselSelectedSnapDisplay.tsx":[9421,9421],"./ClassNames/EmblaCarousel.jsx":[5223,5223],"./ClassNames/EmblaCarousel.tsx":[6429,6429],"./Fade/EmblaCarousel.jsx":[221,221],"./Fade/EmblaCarousel.tsx":[8183,8183],"./InfiniteScroll/EmblaCarousel.jsx":[7032,7032],"./InfiniteScroll/EmblaCarousel.tsx":[8898,8898],"./IosPicker/EmblaCarousel.jsx":[6958,6958],"./IosPicker/EmblaCarousel.tsx":[1852,1852],"./IosPicker/EmblaCarouselIosPickerItem.jsx":[3348,3348],"./IosPicker/EmblaCarouselIosPickerItem.tsx":[7142,7142],"./LazyLoad/EmblaCarousel.jsx":[1897,1897],"./LazyLoad/EmblaCarousel.tsx":[8683,8683],"./LazyLoad/EmblaCarouselLazyLoadImage.jsx":[3376,3376],"./LazyLoad/EmblaCarouselLazyLoadImage.tsx":[4618,4618],"./Opacity/EmblaCarousel.jsx":[2260,2260],"./Opacity/EmblaCarousel.tsx":[7862,7862],"./Parallax/EmblaCarousel.jsx":[3862,3862],"./Parallax/EmblaCarousel.tsx":[9844,9844],"./Progress/EmblaCarousel.jsx":[3146,3146],"./Progress/EmblaCarousel.tsx":[9360,9360],"./Scale/EmblaCarousel.jsx":[3734,3734],"./Scale/EmblaCarousel.tsx":[7387,7387],"./Thumbs/EmblaCarousel.jsx":[72,72],"./Thumbs/EmblaCarousel.tsx":[9122,9122],"./Thumbs/EmblaCarouselThumbsButton.jsx":[2875,2875],"./Thumbs/EmblaCarouselThumbsButton.tsx":[6841,6841]};function a(e){if(!r.o(n,e))return Promise.resolve().then((function(){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}));var t=n[e],a=t[0];return r.e(t[1]).then((function(){return r(a)}))}a.keys=function(){return Object.keys(n)},a.id=4142,e.exports=a},8141:function(e,t,r){var n={"./AutoHeight/EmblaCarousel.jsx":[4439,4439],"./AutoHeight/EmblaCarousel.tsx":[3405,3405],"./AutoScroll/EmblaCarousel.jsx":[2885,2885],"./AutoScroll/EmblaCarousel.tsx":[6831,6831],"./Autoplay/EmblaCarousel.jsx":[6652,6652],"./Autoplay/EmblaCarousel.tsx":[6158,6158],"./CarouselGenerator/EmblaCarousel.jsx":[4910,4910],"./CarouselGenerator/EmblaCarousel.tsx":[5404,5404],"./ClassNames/EmblaCarousel.jsx":[5223,5223],"./ClassNames/EmblaCarousel.tsx":[6429,6429],"./Fade/EmblaCarousel.jsx":[221,221],"./Fade/EmblaCarousel.tsx":[8183,8183],"./InfiniteScroll/EmblaCarousel.jsx":[7032,7032],"./InfiniteScroll/EmblaCarousel.tsx":[8898,8898],"./IosPicker/EmblaCarousel.jsx":[6958,6958],"./IosPicker/EmblaCarousel.tsx":[1852,1852],"./LazyLoad/EmblaCarousel.jsx":[1897,1897],"./LazyLoad/EmblaCarousel.tsx":[8683,8683],"./Opacity/EmblaCarousel.jsx":[2260,2260],"./Opacity/EmblaCarousel.tsx":[7862,7862],"./Parallax/EmblaCarousel.jsx":[3862,3862],"./Parallax/EmblaCarousel.tsx":[9844,9844],"./Progress/EmblaCarousel.jsx":[3146,3146],"./Progress/EmblaCarousel.tsx":[9360,9360],"./Scale/EmblaCarousel.jsx":[3734,3734],"./Scale/EmblaCarousel.tsx":[7387,7387],"./Thumbs/EmblaCarousel.jsx":[72,72],"./Thumbs/EmblaCarousel.tsx":[9122,9122]};function a(e){if(!r.o(n,e))return Promise.resolve().then((function(){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}));var t=n[e],a=t[0];return r.e(t[1]).then((function(){return r(a)}))}a.keys=function(){return Object.keys(n)},a.id=8141,e.exports=a},7182:function(e,t,r){var n={"./CarouselDefaultEntry.jsx":[5566,5566],"./CarouselDefaultEntry.tsx":[460,460]};function a(e){if(!r.o(n,e))return Promise.resolve().then((function(){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}));var t=n[e],a=t[0];return r.e(t[1]).then((function(){return r(a)}))}a.keys=function(){return Object.keys(n)},a.id=7182,e.exports=a},348:function(e,t,r){var n={"./CarouselIosPickerEntry.jsx":[7700,7700],"./CarouselIosPickerEntry.tsx":[6,6]};function a(e){if(!r.o(n,e))return Promise.resolve().then((function(){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}));var t=n[e],a=t[0];return r.e(t[1]).then((function(){return r(a)}))}a.keys=function(){return Object.keys(n)},a.id=348,e.exports=a},2804:function(e,t,r){var n={"./Footer.jsx":[8728,8728],"./Footer.tsx":[9474,9474]};function a(e){if(!r.o(n,e))return Promise.resolve().then((function(){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}));var t=n[e],a=t[0];return r.e(t[1]).then((function(){return r(a)}))}a.keys=function(){return Object.keys(n)},a.id=2804,e.exports=a},4502:function(e,t,r){var n={"./Header.jsx":[5266,5266],"./Header.tsx":[3400,3400]};function a(e){if(!r.o(n,e))return Promise.resolve().then((function(){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}));var t=n[e],a=t[0];return r.e(t[1]).then((function(){return r(a)}))}a.keys=function(){return Object.keys(n)},a.id=4502,e.exports=a},3765:function(e,t,r){var n={"./AutoHeight/EmblaCarousel.js":[9361,9361],"./AutoHeight/EmblaCarousel.ts":[6827,6827],"./AutoScroll/EmblaCarousel.js":[7419,7419],"./AutoScroll/EmblaCarousel.ts":[8193,8193],"./AutoScroll/EmblaCarouselAutoScroll.js":[3165,3165],"./AutoScroll/EmblaCarouselAutoScroll.ts":[8591,8591],"./Autoplay/EmblaCarousel.js":[6200,6200],"./Autoplay/EmblaCarousel.ts":[374,374],"./Autoplay/EmblaCarouselAutoplay.js":[3325,3325],"./Autoplay/EmblaCarouselAutoplay.ts":[5743,5743],"./Autoplay/EmblaCarouselAutoplayProgress.js":[2350,2350],"./Autoplay/EmblaCarouselAutoplayProgress.ts":[7632,7632],"./CarouselGenerator/EmblaCarousel.js":[6518,6518],"./CarouselGenerator/EmblaCarousel.ts":[6040,6040],"./CarouselGenerator/EmblaCarouselArrowButtons.js":[8692,8692],"./CarouselGenerator/EmblaCarouselArrowButtons.ts":[9178,9178],"./CarouselGenerator/EmblaCarouselDotButton.js":[83,83],"./CarouselGenerator/EmblaCarouselDotButton.ts":[1353,1353],"./CarouselGenerator/EmblaCarouselSelectedSnapDisplay.js":[6825,6825],"./CarouselGenerator/EmblaCarouselSelectedSnapDisplay.ts":[5555,5555],"./CarouselGenerator/embla-carousel.html":[7673,7673],"./CarouselGenerator/slide.html":[2548,2548],"./ClassNames/EmblaCarousel.js":[9105,9105],"./ClassNames/EmblaCarousel.ts":[4987,4987],"./EmblaCarouselArrowButtons.js":[3676,3676],"./EmblaCarouselArrowButtons.ts":[1650,1650],"./EmblaCarouselDotButton.js":[5259,5259],"./EmblaCarouselDotButton.ts":[9377,9377],"./Fade/EmblaCarousel.js":[8939,8939],"./Fade/EmblaCarousel.ts":[6065,6065],"./InfiniteScroll/EmblaCarousel.js":[7340,7340],"./InfiniteScroll/EmblaCarousel.ts":[1618,1618],"./InfiniteScroll/EmblaCarouselInfiniteScroll.js":[2709,2709],"./InfiniteScroll/EmblaCarouselInfiniteScroll.ts":[5917,679],"./IosPicker/EmblaCarousel.js":[7238,7238],"./IosPicker/EmblaCarousel.ts":[4824,2443],"./IosPicker/EmblaCarouselIosPicker.js":[7787,7787],"./IosPicker/EmblaCarouselIosPicker.ts":[4913,4913],"./LazyLoad/EmblaCarousel.js":[7703,7703],"./LazyLoad/EmblaCarousel.ts":[6677,6677],"./LazyLoad/EmblaCarouselLazyLoad.js":[9157,9157],"./LazyLoad/EmblaCarouselLazyLoad.ts":[8071,8071],"./Opacity/EmblaCarousel.js":[4776,4776],"./Opacity/EmblaCarousel.ts":[8950,8950],"./Opacity/EmblaCarouselTweenOpacity.js":[5804,5804],"./Opacity/EmblaCarouselTweenOpacity.ts":[6786,6786],"./Parallax/EmblaCarousel.js":[3590,3590],"./Parallax/EmblaCarousel.ts":[2443,4824],"./Parallax/EmblaCarouselTweenParallax.js":[1288,1288],"./Parallax/EmblaCarouselTweenParallax.ts":[3878,3878],"./Progress/EmblaCarousel.js":[6397,8778],"./Progress/EmblaCarousel.ts":[4596,4596],"./Progress/EmblaCarouselProgressBar.js":[4032,4032],"./Progress/EmblaCarouselProgressBar.ts":[334,334],"./Scale/EmblaCarousel.js":[3615,3615],"./Scale/EmblaCarousel.ts":[1485,1485],"./Scale/EmblaCarouselTweenScale.js":[7892,7892],"./Scale/EmblaCarouselTweenScale.ts":[8378,8378],"./Thumbs/EmblaCarousel.js":[8804,8804],"./Thumbs/EmblaCarousel.ts":[9290,9290],"./Thumbs/EmblaCarouselThumbsButton.js":[1797,1797],"./Thumbs/EmblaCarouselThumbsButton.ts":[711,711],"./index.html":[7265,7265]};function a(e){if(!r.o(n,e))return Promise.resolve().then((function(){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}));var t=n[e],a=t[0];return r.e(t[1]).then((function(){return r(a)}))}a.keys=function(){return Object.keys(n)},a.id=3765,e.exports=a},9382:function(e,t,r){var n={"./AutoHeight/EmblaCarousel.js":[9361,9361],"./AutoHeight/EmblaCarousel.ts":[6827,6827],"./AutoScroll/EmblaCarousel.js":[7419,7419],"./AutoScroll/EmblaCarousel.ts":[8193,8193],"./AutoScroll/EmblaCarouselAutoScroll.js":[3165,3165],"./AutoScroll/EmblaCarouselAutoScroll.ts":[8591,8591],"./Autoplay/EmblaCarousel.js":[6200,6200],"./Autoplay/EmblaCarousel.ts":[374,374],"./Autoplay/EmblaCarouselAutoplay.js":[3325,3325],"./Autoplay/EmblaCarouselAutoplay.ts":[5743,5743],"./Autoplay/EmblaCarouselAutoplayProgress.js":[2350,2350],"./Autoplay/EmblaCarouselAutoplayProgress.ts":[7632,7632],"./CarouselGenerator/EmblaCarousel.js":[6518,6518],"./CarouselGenerator/EmblaCarousel.ts":[6040,6040],"./CarouselGenerator/EmblaCarouselArrowButtons.js":[8692,8692],"./CarouselGenerator/EmblaCarouselArrowButtons.ts":[9178,9178],"./CarouselGenerator/EmblaCarouselDotButton.js":[83,83],"./CarouselGenerator/EmblaCarouselDotButton.ts":[1353,1353],"./CarouselGenerator/EmblaCarouselSelectedSnapDisplay.js":[6825,6825],"./CarouselGenerator/EmblaCarouselSelectedSnapDisplay.ts":[5555,5555],"./CarouselGenerator/embla-carousel.html":[7673,7673],"./CarouselGenerator/slide.html":[2548,2548],"./ClassNames/EmblaCarousel.js":[9105,9105],"./ClassNames/EmblaCarousel.ts":[4987,4987],"./Fade/EmblaCarousel.js":[8939,8939],"./Fade/EmblaCarousel.ts":[6065,6065],"./InfiniteScroll/EmblaCarousel.js":[7340,7340],"./InfiniteScroll/EmblaCarousel.ts":[1618,1618],"./InfiniteScroll/EmblaCarouselInfiniteScroll.js":[2709,2709],"./InfiniteScroll/EmblaCarouselInfiniteScroll.ts":[5917,679],"./IosPicker/EmblaCarousel.js":[7238,7238],"./IosPicker/EmblaCarousel.ts":[4824,2443],"./IosPicker/EmblaCarouselIosPicker.js":[7787,7787],"./IosPicker/EmblaCarouselIosPicker.ts":[4913,4913],"./LazyLoad/EmblaCarousel.js":[7703,7703],"./LazyLoad/EmblaCarousel.ts":[6677,6677],"./LazyLoad/EmblaCarouselLazyLoad.js":[9157,9157],"./LazyLoad/EmblaCarouselLazyLoad.ts":[8071,8071],"./Opacity/EmblaCarousel.js":[4776,4776],"./Opacity/EmblaCarousel.ts":[8950,8950],"./Opacity/EmblaCarouselTweenOpacity.js":[5804,5804],"./Opacity/EmblaCarouselTweenOpacity.ts":[6786,6786],"./Parallax/EmblaCarousel.js":[3590,3590],"./Parallax/EmblaCarousel.ts":[2443,4824],"./Parallax/EmblaCarouselTweenParallax.js":[1288,1288],"./Parallax/EmblaCarouselTweenParallax.ts":[3878,3878],"./Progress/EmblaCarousel.js":[6397,8778],"./Progress/EmblaCarousel.ts":[4596,4596],"./Progress/EmblaCarouselProgressBar.js":[4032,4032],"./Progress/EmblaCarouselProgressBar.ts":[334,334],"./Scale/EmblaCarousel.js":[3615,3615],"./Scale/EmblaCarousel.ts":[1485,1485],"./Scale/EmblaCarouselTweenScale.js":[7892,7892],"./Scale/EmblaCarouselTweenScale.ts":[8378,8378],"./Thumbs/EmblaCarousel.js":[8804,8804],"./Thumbs/EmblaCarousel.ts":[9290,9290],"./Thumbs/EmblaCarouselThumbsButton.js":[1797,1797],"./Thumbs/EmblaCarouselThumbsButton.ts":[711,711]};function a(e){if(!r.o(n,e))return Promise.resolve().then((function(){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}));var t=n[e],a=t[0];return r.e(t[1]).then((function(){return r(a)}))}a.keys=function(){return Object.keys(n)},a.id=9382,e.exports=a},1125:function(e,t,r){var n={"./AutoHeight/EmblaCarousel.js":[9361,9361],"./AutoHeight/EmblaCarousel.ts":[6827,6827],"./AutoScroll/EmblaCarousel.js":[7419,7419],"./AutoScroll/EmblaCarousel.ts":[8193,8193],"./Autoplay/EmblaCarousel.js":[6200,6200],"./Autoplay/EmblaCarousel.ts":[374,374],"./CarouselGenerator/EmblaCarousel.js":[6518,6518],"./CarouselGenerator/EmblaCarousel.ts":[6040,6040],"./ClassNames/EmblaCarousel.js":[9105,9105],"./ClassNames/EmblaCarousel.ts":[4987,4987],"./Fade/EmblaCarousel.js":[8939,8939],"./Fade/EmblaCarousel.ts":[6065,6065],"./InfiniteScroll/EmblaCarousel.js":[7340,7340],"./InfiniteScroll/EmblaCarousel.ts":[1618,1618],"./IosPicker/EmblaCarousel.js":[7238,7238],"./IosPicker/EmblaCarousel.ts":[4824,2443],"./LazyLoad/EmblaCarousel.js":[7703,7703],"./LazyLoad/EmblaCarousel.ts":[6677,6677],"./Opacity/EmblaCarousel.js":[4776,4776],"./Opacity/EmblaCarousel.ts":[8950,8950],"./Parallax/EmblaCarousel.js":[3590,3590],"./Parallax/EmblaCarousel.ts":[2443,4824],"./Progress/EmblaCarousel.js":[6397,8778],"./Progress/EmblaCarousel.ts":[4596,4596],"./Scale/EmblaCarousel.js":[3615,3615],"./Scale/EmblaCarousel.ts":[1485,1485],"./Thumbs/EmblaCarousel.js":[8804,8804],"./Thumbs/EmblaCarousel.ts":[9290,9290]};function a(e){if(!r.o(n,e))return Promise.resolve().then((function(){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}));var t=n[e],a=t[0];return r.e(t[1]).then((function(){return r(a)}))}a.keys=function(){return Object.keys(n)},a.id=1125,e.exports=a}}]); +//# sourceMappingURL=95da5ec31316267b433b7b2e2bbaca0a1c0b9c0a-2e7e9fff43ab5ea20ef4.js.map \ No newline at end of file diff --git a/docs/95da5ec31316267b433b7b2e2bbaca0a1c0b9c0a-2e7e9fff43ab5ea20ef4.js.map b/docs/95da5ec31316267b433b7b2e2bbaca0a1c0b9c0a-2e7e9fff43ab5ea20ef4.js.map new file mode 100644 index 00000000..e293a545 --- /dev/null +++ b/docs/95da5ec31316267b433b7b2e2bbaca0a1c0b9c0a-2e7e9fff43ab5ea20ef4.js.map @@ -0,0 +1 @@ +{"version":3,"file":"95da5ec31316267b433b7b2e2bbaca0a1c0b9c0a-2e7e9fff43ab5ea20ef4.js","mappings":"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GAA+BrD,IAItB+D,EAA+BA,CAC1Cf,EACAC,EACAC,IAEOH,EACLC,EACAC,EACAC,GACAG,EAAAA,EAAAA,GAA+BjD,EAAqByB,IAI3CmC,EAAiCA,CAC5ChB,EACAC,EACAC,IAEOH,EACLC,EACAC,EACAC,GACAG,EAAAA,EAAAA,GACEjD,EACAO,EACAE,EACAoB,IAKOgC,EAAiCA,CAC5CjB,EACAC,EACAC,IAEOH,EACLC,EACAC,EACAC,GACAG,EAAAA,EAAAA,GACE5C,EACAE,EACAE,EACAQ,EACAc,IAKO+B,EAA8BA,CACzClB,EACAC,EACAC,IAEOH,EACLC,EACAC,EACAC,GACAG,EAAAA,EAAAA,GACEjD,EACAO,EACAE,EACAQ,EACAe,IAKO+B,EAAgCA,CAC3CnB,EACAC,EACAC,IAEOH,EACLC,EACAC,EACAC,GACAG,EAAAA,EAAAA,GACE5C,EACAE,EACAE,EACAQ,IAKO+C,EAAiCA,CAC5CpB,EACAC,EACAC,IAEOH,EACLC,EACAC,EACAC,GACAG,EAAAA,EAAAA,GACEjD,EACAO,EACAE,EACAW,EACAS,EACAD,IAKOqC,EAAmCA,CAC9CrB,EACAC,EACAC,IAEOH,EACLC,EACAC,EACAC,GACAG,EAAAA,EAAAA,GACEjD,EACAO,EACAE,EACAQ,EACAoB,IAKO6B,GAAmCA,CAC9CtB,EACAC,EACAC,IAEOH,EACLC,EACAC,EACAC,GACAG,EAAAA,EAAAA,GACE5C,EACAE,EACAE,EACAQ,EACAqB,IAKO6B,GAA6BA,CACxCvB,EACAC,EACAC,IAEOH,EACLC,EACAC,EACAC,GACAG,EAAAA,EAAAA,GACE5C,EACAE,EACAE,EACAQ,EACAsB,IAKO6B,GAAiCA,CAC5CxB,EACAC,EACAC,IAEOH,EACLC,EACAC,EACAC,GACAG,EAAAA,EAAAA,GACE5C,EACAE,EACAE,EACAQ,EACAgB,IAKOoC,GAAuCA,CAClDzB,EACAC,EACAC,IAEOH,EACLC,EACAC,EACAC,GACAG,EAAAA,EAAAA,GACEjD,EACAO,EACAE,EACAS,EACAsB,IAKO8B,GAAkCA,KACtCrB,EAAAA,E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AK,WACzC,OAAOF,EAAoBv3B,EAC5B,GACD,CACAq3B,EAAoB1oB,KAAO,WAAa,OAAO/W,OAAO+W,KAAKtO,EAAM,EACjEg3B,EAAoBr3B,GAAK,KACzBvH,EAAOX,QAAUu/B,C,uBC9QjB,IAAIh3B,EAAM,CACT,gCAAiC,CAChC,KACA,MAED,gCAAiC,CAChC,KACA,MAED,gCAAiC,CAChC,KACA,MAED,gCAAiC,CAChC,KACA,MAED,0CAA2C,CAC1C,KACA,MAED,0CAA2C,CAC1C,KACA,MAED,8BAA+B,CAC9B,KACA,MAED,8BAA+B,CAC9B,IACA,KAED,sCAAuC,CACtC,KACA,MAED,sCAAuC,CACtC,KACA,MAED,8CAA+C,CAC9C,KACA,MAED,8CAA+C,CAC9C,KACA,MAED,uCAAwC,CACvC,KACA,MAED,uCAAwC,CACvC,KACA,MAED,mDAAoD,CACnD,KACA,MAED,mDAAoD,CACnD,KACA,MAED,gDAAiD,CAChD,GACA,IAED,gDAAiD,CAChD,KACA,MAED,0DAA2D,CAC1D,KACA,MAED,0DAA2D,CAC1D,KACA,MAED,0CAA2C,CAC1C,KACA,MAED,iCAAkC,CACjC,KACA,MAED,gCAAiC,CAChC,KACA,MAED,gCAAiC,CAChC,KACA,MAED,0BAA2B,CAC1B,KACA,MAED,0BAA2B,CAC1B,KACA,MAED,oCAAqC,CACpC,KACA,MAED,oCAAqC,CACpC,KACA,MAED,kDAAmD,CAClD,KACA,MAED,kDAAmD,CAClD,KACA,KAED,+BAAgC,CAC/B,KACA,MAED,+BAAgC,CAC/B,KACA,MAED,wCAAyC,CACxC,KACA,MAED,wCAAyC,CACxC,KACA,MAED,8BAA+B,CAC9B,KACA,MAED,8BAA+B,CAC9B,KACA,MAED,sCAAuC,CACtC,KACA,MAED,sCAAuC,CACtC,KACA,MAED,6BAA8B,CAC7B,KACA,MAED,6BAA8B,CAC7B,KACA,MAED,yCAA0C,CACzC,KACA,MAED,yCAA0C,CACzC,KACA,MAED,8BAA+B,CAC9B,KACA,MAED,8BAA+B,CAC9B,KACA,MAED,2CAA4C,CAC3C,KACA,MAED,2CAA4C,CAC3C,KACA,MAED,8BAA+B,CAC9B,KACA,MAED,8BAA+B,CAC9B,KACA,MAED,yCAA0C,CACzC,KACA,MAED,yCAA0C,CACzC,IACA,KAED,2BAA4B,CAC3B,KACA,MAED,2BAA4B,CAC3B,KACA,MAED,qCAAsC,CACrC,KACA,MAED,qCAAsC,CACrC,KACA,MAED,4BAA6B,CAC5B,KACA,MAED,4BAA6B,CAC5B,KACA,MAED,wCAAyC,CACxC,KACA,MAED,wCAAyC,CACxC,IACA,MAGF,SAASg3B,EAAoBC,GAC5B,IAAIC,EAAoBC,EAAEn3B,EAAKi3B,GAC9B,OAAOzvB,QAAQkD,UAAU0sB,MAAK,WAC7B,IAAIxH,EAAI,IAAIyH,MAAM,uBAAyBJ,EAAM,KAEjD,MADArH,EAAEjO,KAAO,mBACHiO,CACP,IAGD,IAAI0H,EAAMt3B,EAAIi3B,GAAMt3B,EAAK23B,EAAI,GAC7B,OAAOJ,EAAoBtH,EAAE0H,EAAI,IAAIF,MAAK,WACzC,OAAOF,EAAoBv3B,EAC5B,GACD,CACAq3B,EAAoB1oB,KAAO,WAAa,OAAO/W,OAAO+W,KAAKtO,EAAM,EACjEg3B,EAAoBr3B,GAAK,KACzBvH,EAAOX,QAAUu/B,C,uBC1PjB,IAAIh3B,EAAM,CACT,gCAAiC,CAChC,KACA,MAED,gCAAiC,CAChC,KACA,MAED,gCAAiC,CAChC,KACA,MAED,gCAAiC,CAChC,KACA,MAED,8BAA+B,CAC9B,KACA,MAED,8BAA+B,CAC9B,IACA,KAED,uCAAwC,CACvC,KACA,MAED,uCAAwC,CACvC,KACA,MAED,gCAAiC,CAChC,KACA,MAED,gCAAiC,CAChC,KACA,MAED,0BAA2B,CAC1B,KACA,MAED,0BAA2B,CAC1B,KACA,MAED,oCAAqC,CACpC,KACA,MAED,oCAAqC,CACpC,KACA,MAED,+BAAgC,CAC/B,KACA,MAED,+BAAgC,CAC/B,KACA,MAED,8BAA+B,CAC9B,KACA,MAED,8BAA+B,CAC9B,KACA,MAED,6BAA8B,CAC7B,KACA,MAED,6BAA8B,CAC7B,KACA,MAED,8BAA+B,CAC9B,KACA,MAED,8BAA+B,CAC9B,KACA,MAED,8BAA+B,CAC9B,KACA,MAED,8BAA+B,CAC9B,KACA,MAED,2BAA4B,CAC3B,KACA,MAED,2BAA4B,CAC3B,KACA,MAED,4BAA6B,CAC5B,KACA,MAED,4BAA6B,CAC5B,KACA,OAGF,SAASg3B,EAAoBC,GAC5B,IAAIC,EAAoBC,EAAEn3B,EAAKi3B,GAC9B,OAAOzvB,QAAQkD,UAAU0sB,MAAK,WAC7B,IAAIxH,EAAI,IAAIyH,MAAM,uBAAyBJ,EAAM,KAEjD,MADArH,EAAEjO,KAAO,mBACHiO,CACP,IAGD,IAAI0H,EAAMt3B,EAAIi3B,GAAMt3B,EAAK23B,EAAI,GAC7B,OAAOJ,EAAoBtH,EAAE0H,EAAI,IAAIF,MAAK,WACzC,OAAOF,EAAoBv3B,EAC5B,GACD,CACAq3B,EAAoB1oB,KAAO,WAAa,OAAO/W,OAAO+W,KAAKtO,EAAM,EACjEg3B,EAAoBr3B,GAAK,KACzBvH,EAAOX,QAAUu/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/ScrollTo.ts","webpack://embla-carousel-docs/../src/components/SlideFocus.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/ScrollProgress.ts","webpack://embla-carousel-docs/../src/components/SlideRegistry.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/ ^\\.\\/.*\\/.*\\..*$ namespace object","webpack://embla-carousel-docs/ ^\\.\\/.*\\/EmblaCarousel\\..*$ 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?d4f9","webpack://embla-carousel-docs/ ^\\.\\/.*\\/.*\\..*$ namespace object?9216","webpack://embla-carousel-docs/ ^\\.\\/.*\\/EmblaCarousel\\..*$ namespace object?baf3"],"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 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 transform: translate3d(0, 0, 0);\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 user-select: none;\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 AUTOPLAY_STYLES = css`\n .embla__controls {\n grid-template-columns: auto 1fr auto;\n }\n\n .embla__progress {\n justify-self: center;\n transition: opacity 0.3s ease-in-out;\n width: 8rem;\n }\n\n .embla__progress--hidden {\n opacity: 0;\n }\n\n .embla__progress__bar {\n animation-name: autoplay-progress;\n animation-timing-function: linear;\n animation-iteration-count: 1;\n }\n\n .embla__progress--hidden .embla__progress__bar {\n animation-play-state: paused;\n }\n\n @keyframes autoplay-progress {\n 0% {\n transform: translate3d(0, 0, 0);\n }\n 100% {\n transform: translate3d(100%, 0, 0);\n }\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 PROGRESS_STYLES,\n AUTOPLAY_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 { WindowType } from './utils'\n\nexport type AnimationsUpdateType = (engine: EngineType) => void\nexport type AnimationsRenderType = (engine: EngineType, alpha: number) => void\n\nexport type AnimationsType = {\n init: () => void\n destroy: () => void\n start: () => void\n stop: () => void\n update: () => void\n render: (alpha: number) => void\n}\n\nexport function Animations(\n ownerDocument: Document,\n ownerWindow: WindowType,\n update: () => void,\n render: (alpha: number) => void\n): AnimationsType {\n const documentVisibleHandler = EventStore()\n const fixedTimeStep = 1000 / 60\n\n let lastTimeStamp: number | null = null\n let accumulatedTime = 0\n let animationId = 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 (!animationId) return\n if (!lastTimeStamp) {\n lastTimeStamp = timeStamp\n update()\n update()\n }\n\n const timeElapsed = timeStamp - lastTimeStamp\n lastTimeStamp = timeStamp\n accumulatedTime += timeElapsed\n\n while (accumulatedTime >= fixedTimeStep) {\n update()\n accumulatedTime -= fixedTimeStep\n }\n\n const alpha = accumulatedTime / fixedTimeStep\n render(alpha)\n\n if (animationId) {\n animationId = ownerWindow.requestAnimationFrame(animate)\n }\n }\n\n function start(): void {\n if (animationId) return\n animationId = ownerWindow.requestAnimationFrame(animate)\n }\n\n function stop(): void {\n ownerWindow.cancelAnimationFrame(animationId)\n lastTimeStamp = null\n accumulatedTime = 0\n animationId = 0\n }\n\n function reset(): void {\n lastTimeStamp = null\n accumulatedTime = 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 const observeNodes = [container].concat(slides)\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 if (destroyed) return\n\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 emblaApi.reInit()\n eventHandler.emit('resize')\n\n break\n }\n }\n }\n\n resizeObserver = new ResizeObserver((entries) => {\n if (isBoolean(watchResize) || watchResize(emblaApi, entries)) {\n defaultCallback(entries)\n }\n })\n\n ownerWindow.requestAnimationFrame(() => {\n observeNodes.forEach((node) => resizeObserver.observe(node))\n })\n }\n\n function destroy(): void {\n destroyed = true\n if (resizeObserver) resizeObserver.disconnect()\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 location: 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(location.get())) return false\n return true\n }\n\n function constrain(pointerDown: boolean): void {\n if (!shouldConstrain()) return\n const edge = limit.reachedMin(location.get()) ? 'min' : 'max'\n const diffToEdge = mathAbs(limit[edge] - location.get())\n const diffToTarget = target.get() - location.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 location: 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(location.get())\n if (direction === -1) return reachedMin(location.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 { 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 { EmblaCarouselType } from './EmblaCarousel'\nimport { EventHandlerType } from './EventHandler'\nimport { EventStoreType } from './EventStore'\nimport { ScrollBodyType } from './ScrollBody'\nimport { ScrollToType } from './ScrollTo'\nimport { SlideRegistryType } from './SlideRegistry'\nimport { isBoolean, isNumber } from './utils'\n\ntype FocusHandlerCallbackType = (\n emblaApi: EmblaCarouselType,\n evt: FocusEvent\n) => boolean | void\n\nexport type FocusHandlerOptionType = boolean | FocusHandlerCallbackType\n\nexport type SlideFocusType = {\n init: (emblaApi: EmblaCarouselType) => 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 watchFocus: FocusHandlerOptionType\n): SlideFocusType {\n const focusListenerOptions = { passive: true, capture: true }\n let lastTabPressTime = 0\n\n function init(emblaApi: EmblaCarouselType): void {\n if (!watchFocus) return\n\n function defaultCallback(index: number): void {\n const nowTime = new Date().getTime()\n const diffTime = nowTime - lastTabPressTime\n\n if (diffTime > 10) return\n\n eventHandler.emit('slideFocusStart')\n root.scrollLeft = 0\n\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\n eventHandler.emit('slideFocus')\n }\n\n eventStore.add(document, 'keydown', registerTabPress, false)\n\n slides.forEach((slide, slideIndex) => {\n eventStore.add(\n slide,\n 'focus',\n (evt: FocusEvent) => {\n if (isBoolean(watchFocus) || watchFocus(emblaApi, evt)) {\n defaultCallback(slideIndex)\n }\n },\n focusListenerOptions\n )\n })\n }\n\n function registerTabPress(event: KeyboardEvent): void {\n if (event.code === 'Tab') lastTabPressTime = new Date().getTime()\n }\n\n const self: SlideFocusType = {\n init\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'\nimport { roundToTwoDecimals } from './utils'\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 previousTarget: number | null = null\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\n const newTarget = roundToTwoDecimals(axis.direction(target))\n if (newTarget === previousTarget) return\n\n containerStyle.transform = translate(newTarget)\n previousTarget = newTarget\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 location: 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: () => (location.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 previousLocation: 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 watchFocus\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 previousLocation,\n scrollLooper,\n slideLooper,\n dragHandler,\n animation,\n eventHandler,\n scrollBounds,\n options: { loop }\n },\n alpha\n ) => {\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 const interpolatedLocation =\n location.get() * alpha + previousLocation.get() * (1 - alpha)\n\n offsetLocation.set(interpolatedLocation)\n\n if (loop) {\n scrollLooper.loop(scrollBody.direction())\n slideLooper.loop()\n }\n\n translate.to(offsetLocation.get())\n }\n\n const animation = Animations(\n ownerDocument,\n ownerWindow,\n () => update(engine),\n (alpha: number) => render(engine, alpha)\n )\n\n // Shared\n const friction = 0.68\n const startLocation = scrollSnaps[index.get()]\n const location = Vector1D(startLocation)\n const previousLocation = Vector1D(startLocation)\n const offsetLocation = Vector1D(startLocation)\n const target = Vector1D(startLocation)\n const scrollBody = ScrollBody(\n location,\n offsetLocation,\n previousLocation,\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 watchFocus\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 previousLocation,\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 previousLocation,\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 previousLocation: Vector1DType,\n target: Vector1DType,\n baseDuration: number,\n baseFriction: number\n): ScrollBodyType {\n let scrollVelocity = 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 displacement = target.get() - location.get()\n const isInstant = !scrollDuration\n let scrollDistance = 0\n\n if (isInstant) {\n scrollVelocity = 0\n previousLocation.set(target)\n location.set(target)\n\n scrollDistance = displacement\n } else {\n previousLocation.set(location)\n\n scrollVelocity += displacement / scrollDuration\n scrollVelocity *= scrollFriction\n rawLocation += scrollVelocity\n location.add(scrollVelocity)\n\n scrollDistance = rawLocation - rawLocationPrevious\n }\n\n scrollDirection = mathSign(scrollDistance)\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 scrollVelocity\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 { 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 { 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'\nimport { FocusHandlerOptionType } from './SlideFocus'\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 watchFocus: FocusHandlerOptionType\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 watchFocus: 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(self)\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 slideFocusStart: 'slideFocusStart'\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\nexport type 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 (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 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 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.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.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.jsx\": [\n\t\t6652,\n\t\t6652\n\t],\n\t\"./Autoplay/EmblaCarousel.tsx\": [\n\t\t6158,\n\t\t6158\n\t],\n\t\"./Autoplay/EmblaCarouselAutoplay.jsx\": [\n\t\t6651,\n\t\t6651\n\t],\n\t\"./Autoplay/EmblaCarouselAutoplay.tsx\": [\n\t\t4265,\n\t\t4265\n\t],\n\t\"./Autoplay/EmblaCarouselAutoplayProgress.jsx\": [\n\t\t5350,\n\t\t5350\n\t],\n\t\"./Autoplay/EmblaCarouselAutoplayProgress.tsx\": [\n\t\t6676,\n\t\t6676\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.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.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.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.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.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.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.jsx\": [\n\t\t1920,\n\t\t1920\n\t],\n\t\"./EmblaCarouselArrowButtons.tsx\": [\n\t\t6458,\n\t\t6458\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.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.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.jsx\": [\n\t\t8728,\n\t\t8728\n\t],\n\t\"./Footer.tsx\": [\n\t\t9474,\n\t\t9474\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.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.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.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.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.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.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.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.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.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.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.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 = 8861;\nmodule.exports = webpackAsyncContext;","var map = {\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.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.jsx\": [\n\t\t6652,\n\t\t6652\n\t],\n\t\"./Autoplay/EmblaCarousel.tsx\": [\n\t\t6158,\n\t\t6158\n\t],\n\t\"./Autoplay/EmblaCarouselAutoplay.jsx\": [\n\t\t6651,\n\t\t6651\n\t],\n\t\"./Autoplay/EmblaCarouselAutoplay.tsx\": [\n\t\t4265,\n\t\t4265\n\t],\n\t\"./Autoplay/EmblaCarouselAutoplayProgress.jsx\": [\n\t\t5350,\n\t\t5350\n\t],\n\t\"./Autoplay/EmblaCarouselAutoplayProgress.tsx\": [\n\t\t6676,\n\t\t6676\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.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.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.jsx\": [\n\t\t6807,\n\t\t6807\n\t],\n\t\"./CarouselGenerator/EmblaCarouselSelectedSnapDisplay.tsx\": [\n\t\t9421,\n\t\t9421\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\"./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\"./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.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.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.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.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.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.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.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.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.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.jsx\": [\n\t\t2875,\n\t\t2875\n\t],\n\t\"./Thumbs/EmblaCarouselThumbsButton.tsx\": [\n\t\t6841,\n\t\t6841\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 = 4142;\nmodule.exports = webpackAsyncContext;","var map = {\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.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.jsx\": [\n\t\t6652,\n\t\t6652\n\t],\n\t\"./Autoplay/EmblaCarousel.tsx\": [\n\t\t6158,\n\t\t6158\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\"./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\"./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\"./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.jsx\": [\n\t\t6958,\n\t\t6958\n\t],\n\t\"./IosPicker/EmblaCarousel.tsx\": [\n\t\t1852,\n\t\t1852\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\"./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.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.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.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.jsx\": [\n\t\t72,\n\t\t72\n\t],\n\t\"./Thumbs/EmblaCarousel.tsx\": [\n\t\t9122,\n\t\t9122\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 = 8141;\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.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.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.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.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.js\": [\n\t\t3325,\n\t\t3325\n\t],\n\t\"./Autoplay/EmblaCarouselAutoplay.ts\": [\n\t\t5743,\n\t\t5743\n\t],\n\t\"./Autoplay/EmblaCarouselAutoplayProgress.js\": [\n\t\t2350,\n\t\t2350\n\t],\n\t\"./Autoplay/EmblaCarouselAutoplayProgress.ts\": [\n\t\t7632,\n\t\t7632\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.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.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.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.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.js\": [\n\t\t3676,\n\t\t3676\n\t],\n\t\"./EmblaCarouselArrowButtons.ts\": [\n\t\t1650,\n\t\t1650\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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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 = 3765;\nmodule.exports = webpackAsyncContext;","var map = {\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.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.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.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.js\": [\n\t\t3325,\n\t\t3325\n\t],\n\t\"./Autoplay/EmblaCarouselAutoplay.ts\": [\n\t\t5743,\n\t\t5743\n\t],\n\t\"./Autoplay/EmblaCarouselAutoplayProgress.js\": [\n\t\t2350,\n\t\t2350\n\t],\n\t\"./Autoplay/EmblaCarouselAutoplayProgress.ts\": [\n\t\t7632,\n\t\t7632\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.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.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.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.js\": [\n\t\t9105,\n\t\t9105\n\t],\n\t\"./ClassNames/EmblaCarousel.ts\": [\n\t\t4987,\n\t\t4987\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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.js\": [\n\t\t1797,\n\t\t1797\n\t],\n\t\"./Thumbs/EmblaCarouselThumbsButton.ts\": [\n\t\t711,\n\t\t711\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 = 9382;\nmodule.exports = webpackAsyncContext;","var map = {\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.js\": [\n\t\t7419,\n\t\t7419\n\t],\n\t\"./AutoScroll/EmblaCarousel.ts\": [\n\t\t8193,\n\t\t8193\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\"./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\"./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\"./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.js\": [\n\t\t7340,\n\t\t7340\n\t],\n\t\"./InfiniteScroll/EmblaCarousel.ts\": [\n\t\t1618,\n\t\t1618\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\"./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\"./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\"./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\"./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\"./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\"./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};\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 = 1125;\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","AUTOPLAY_STYLES","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","fixedTimeStep","lastTimeStamp","accumulatedTime","animationId","animate","timeStamp","timeElapsed","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","observeNodes","resizeObserver","containerSize","slideSizes","destroyed","readSize","measureSize","ResizeObserver","entries","entry","isContainer","slideIndex","indexOf","lastSize","reInit","defaultCallback","observe","disconnect","ScrollBounds","limit","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","SlideFocus","root","slideRegistry","eventStore","watchFocus","focusListenerOptions","capture","lastTabPressTime","registerTabPress","event","code","Date","getTime","slide","scrollLeft","group","findIndex","Vector1D","initialValue","normalizeInput","Translate","translate","containerStyle","style","previousTarget","transform","getAttribute","removeAttribute","newTarget","num","round","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","parentElement","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","alpha","_ref3","offsetLocation","previousLocation","scrollLooper","slideLooper","shouldSettle","settled","withinBounds","hasSettled","interpolatedLocation","startLocation","baseDuration","scrollVelocity","scrollDirection","scrollDuration","scrollFriction","rawLocation","rawLocationPrevious","velocity","displacement","scrollDistance","useBaseDuration","ScrollBody","indexCurrent","distanceDiff","indexDiff","targetIndex","ScrollTo","scrollProgress","ScrollProgress","slidesInView","groupedSlideIndexes","doNotContain","createSlideRegistry","SlideRegistry","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","pluginsA","pluginsB","optionA","arePluginsEqual","window","createElement","newEmblaApi","undefined","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-73bd739840db7bc033bd.js b/docs/95da5ec31316267b433b7b2e2bbaca0a1c0b9c0a-73bd739840db7bc033bd.js deleted file mode 100644 index 1f24745f..00000000 --- a/docs/95da5ec31316267b433b7b2e2bbaca0a1c0b9c0a-73bd739840db7bc033bd.js +++ /dev/null @@ -1,2 +0,0 @@ -(self.webpackChunkembla_carousel_docs=self.webpackChunkembla_carousel_docs||[]).push([[6075],{2220:function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n=r(683);t.getParameters=function(e){return t=JSON.stringify(e),n.compressToBase64(t).replace(/\+/g,"-").replace(/\//g,"_").replace(/=+$/,"");var t}},4274:function(e,t,r){"use strict";t.b=void 0;var n=r(2220);t.b=n.getParameters},3211:function(e){e.exports={bracketSpacing:!0,printWidth:80,semi:!1,singleQuote:!0,trailingComma:"none",tabWidth:2,useTabs:!1}},7736:function(e,t,r){"use strict";r.d(t,{EW:function(){return j},F6:function(){return v},Fc:function(){return ae},Gb:function(){return Z},MD:function(){return O},N$:function(){return ne},N1:function(){return Q},QR:function(){return q},RW:function(){return W},Tk:function(){return X},U3:function(){return E},Wr:function(){return _},Yl:function(){return re},Z4:function(){return f},br:function(){return b},cM:function(){return ee},cm:function(){return J},dJ:function(){return K},kk:function(){return w},lN:function(){return p},mh:function(){return $},mn:function(){return g},pS:function(){return Y},qV:function(){return V},uk:function(){return te},zw:function(){return H}});var n=r(3057),a=r(1801),o=r(6341),s=r(4393),i=r(1381),l=r(5335),c=r(4702),u=r(382),m=r(1664),d=r(9204);const f="19rem",p="6rem",b="0.8rem",_="22.2rem",g=s.F.SIX,E=s.F.THREE,h=(0,n.css)(["border-radius:",";"],i.Y.SOFT),C=(0,n.css)(["box-shadow:inset 0 0 0 "," ",";"],i.C.OUTLINE,o.lm.DETAIL_MEDIUM_CONTRAST),x=(0,n.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;"],d.Q),y=(0,n.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{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{transform:translate3d(0,0,0);flex:0 0 var(--slide-size);min-__replace-axis-size__:0;padding-__replace_axis_spacing__:var(--slide-spacing);}"],"48rem",f),S=(0,n.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),v=(0,n.css)([".embla__slide__number{",";",";font-size:",";font-weight:",";display:flex;align-items:center;justify-content:center;height:__replace_slide_height__;user-select:none;}"],C,h,c.$.CUSTOM((()=>4)),c.s.SEMI_BOLD),A=(0,n.css)([".embla__slide__img{",";display:block;height:__replace_slide_height__;width:100%;object-fit:cover;}"],h),T=(0,n.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%;}"]),j=(0,n.css)([".embla__controls{display:grid;grid-template-columns:auto 1fr;justify-content:space-between;gap:",";margin-top:",";}"],s.F.TWO,E),w=(0,n.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{","}"],s.F.ONE,x,C,(0,u.P)(g),a.R.STEP,i.Y.CIRCLE,o.lm.TEXT_BODY,o.lm.DETAIL_HIGH_CONTRAST,(0,u.P)("35%")),O=(0,n.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 "," ",";}"],x,(0,u.P)("2.6rem"),i.Y.CIRCLE,C,(0,u.P)("1.4rem"),i.Y.CIRCLE,i.C.OUTLINE,o.lm.TEXT_BODY),I=(0,n.css)([".embla__selected-snap-display{justify-self:flex-end;align-self:center;color:",";font-weight:",";}"],o.lm.TEXT_LOW_CONTRAST,c.s.SEMI_BOLD),P=(0,n.css)([".embla__play{",";",";",";display:flex;align-items:center;justify-content:center;justify-self:flex-end;color:",";font-weight:",";font-size:",";padding:0 ",";min-width:",";}"],x,C,h,o.lm.TEXT_BODY,c.s.BOLD,c.$.COMPLEMENTARY,s.F.FOUR,s.F.FOURTEEN),L=(0,n.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,h,x,C,c.$.H4,c.s.SEMI_BOLD,o.lm.DETAIL_HIGH_CONTRAST,o.lm.TEXT_BODY),k=(0,n.css)([".embla__controls{grid-template-columns:auto 1fr auto;}.embla__progress{justify-self:center;transition:opacity 0.3s ease-in-out;width:8rem;}.embla__progress--hidden{opacity:0;}.embla__progress__bar{animation-name:autoplay-progress;animation-timing-function:linear;animation-iteration-count:1;}.embla__progress--hidden .embla__progress__bar{animation-play-state:paused;}@keyframes autoplay-progress{0%{transform:translate3d(0,0,0);}100%{transform:translate3d(100%,0,0);}}"]),N=(0,n.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%;}"],h,C,o.lm.BACKGROUND_SITE,o.lm.TEXT_BODY),B=(0,n.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;}"],h),D=(0,n.css)([".embla__slide__number{backface-visibility:hidden;}"]),R=(0,n.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);}}"],i.C.ACCENT_VERTICAL,o.lm.TEXT_HIGH_CONTRAST_RGB_VALUE,i.C.ACCENT_VERTICAL,o.lm.TEXT_HIGH_CONTRAST,i.Y.CIRCLE,(0,u.P)("5rem"),(0,u.P)("5rem")),z=(0,n.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),G=(0,n.css)([".embla__slide{transition:opacity 0.2s ease-in-out;}.embla__slide:not(.is-snapped){opacity:0.16;}"]),F=(0,n.css)([".embla__slide__img{user-select:none;}"]),M=(0,n.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);}}"],i.C.ACCENT_VERTICAL,o.lm.TEXT_HIGH_CONTRAST_RGB_VALUE,i.C.ACCENT_VERTICAL,o.lm.TEXT_HIGH_CONTRAST,i.Y.CIRCLE,(0,u.P)("5rem"),(0,u.P)("5rem")),U=(0,n.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;}"],_,a.R.STEP,o.lm.TEXT_HIGH_CONTRAST_RGB_VALUE,o.lm.BACKGROUND_SITE_RGB_VALUE,o.lm.BACKGROUND_SITE_RGB_VALUE,o.lm.TEXT_HIGH_CONTRAST_RGB_VALUE,o.lm.BACKGROUND_SITE_RGB_VALUE,o.lm.BACKGROUND_SITE_RGB_VALUE,c.s.BOLD),H=function(e,t,r,n,a){void 0===e&&(e="100%"),void 0===t&&(t="1rem"),void 0===r&&(r="x"),void 0===n&&(n=""),void 0===a&&(a=(0,m.i)(y));const o="x"===r,s=o?"left":"top",i=`pan-${o?"y":"x"} pinch-zoom`,l=o?"width":"height",c=o?"var(--slide-height)":"100%",u=o?"":"height: calc(var(--slide-spacing) + var(--slide-height));";return(a+n).replace(/__replace_axis_flex__/gi,o?"":"flex-direction: column;").replace(/__replace-axis-size__/gi,l).replace(/__replace-axis-touch_action__/gi,i).replace(/__replace_axis_spacing__/gi,s).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)},$=(e,t,r)=>H(e,t,r,(0,m.i)(v,j,w,I)),V=(e,t,r)=>H(e,t,r,(0,m.i)(T,v,j,w,I)),J=(e,t,r)=>H(e,t,r,(0,m.i)(v,j,w,O),(0,m.i)(S)),X=(e,t,r)=>H(e,t,r,(0,m.i)(v,L)),Y=(e,t,r)=>H(e,t,r,(0,m.i)(v,j,w,N)),W=(e,t,r)=>H(e,t,r,(0,m.i)(A,j,w,O,B)),q=(e,t,r)=>H(e,t,r,(0,m.i)(v,j,w,O,D)),K=(e,t,r)=>H(e,t,r,(0,m.i)(A,j,w,O)),Q=(e,t,r)=>H(e,t,r,(0,m.i)(v,j,w,P,N,k)),Z=(e,t,r)=>H(e,t,r,(0,m.i)(v,j,w,O,z)),ee=(e,t,r)=>H(e,t,r,(0,m.i)(A,j,w,O,G)),te=(e,t,r)=>H(e,t,r,(0,m.i)(A,j,w,O,F)),re=(e,t,r)=>H(e,t,r,(0,m.i)(A,j,w,O,R)),ne=(e,t,r)=>H(e,t,r,(0,m.i)(v,j,w,I,M)),ae=()=>(0,m.i)(U)},2272:function(e,t,r){"use strict";r.d(t,{Q:function(){return _}});var n=r(4041),a=r(3057),o=r(7286),s=r(3724),i=r(3214),l=r(6341),c=r(4702),u=r(4393);const m=a.default.nav.withConfig({displayName:"PageBreadcrumbs__PageBreadcrumbsWrapper",componentId:"sc-1mlty1z-0"})(["display:flex;align-items:center;font-size:",";margin-bottom:",";"],c.$.COMPLEMENTARY,u.F.THREE),d=(0,a.css)(["color:",";padding:"," 0;"],l.lm.TEXT_LOW_CONTRAST,u.F.ONE),f=(0,a.default)(o.l).withConfig({displayName:"PageBreadcrumbs__Link",componentId:"sc-1mlty1z-1"})(["",";"],d),p=a.default.span.withConfig({displayName:"PageBreadcrumbs__ActiveTitle",componentId:"sc-1mlty1z-2"})(["",";"],d),b=(0,a.default)(i.I).withConfig({displayName:"PageBreadcrumbs__Separator",componentId:"sc-1mlty1z-3"})(["color:",";margin:0 ",";"],l.lm.TEXT_LOW_CONTRAST,u.F.ONE),_=e=>{const{id:t}=e,r=(0,s.rx)(t);return 0===r.length?null:n.createElement(m,{"aria-label":"Breadcrumb Navigation"},r.map(((e,t)=>{let{id:a,slug:o,title:s}=e;return t!==r.length-1?n.createElement(n.Fragment,{key:a},n.createElement(f,{to:o},s),n.createElement(b,{size:"0.6rem",svg:"chevronRight",role:"presentation","aria-hidden":"false"})):n.createElement(p,{key:a},s)})))}},6169:function(e,t,r){"use strict";r.d(t,{R:function(){return d}});var n=r(4041),a=r(3057),o=r(7286),s=r(6341),i=r(4702),l=r(4393),c=r(8893),u=r(405);const m=(0,a.default)(o.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:",";"],i.$.COMPLEMENTARY,l.F.ONE,l.F.ONE,l.F.EIGHT,s.lm.TEXT_LOW_CONTRAST),d=e=>{const{pageUrl:t}=e,r=`${c.t.GITHUB_DOCUMENTATION}/${t}`;return n.createElement(m,{to:r},n.createElement(u.vK,{iconSvg:"pen",iconSize:"1.5rem"},"Edit this page on GitHub"))}},8324:function(e,t,r){"use strict";r.d(t,{o:function(){return g}});var n=r(4041),a=r(3057),o=r(7286),s=r(4906),i=r(6341),l=r(4393),c=r(4702),u=r(405),m=r(4094);const d=l.F.FOUR,f=a.default.nav.withConfig({displayName:"PagePagination__PagePaginationWrapper",componentId:"sc-3ejrow-0"})(["",";display:flex;justify-content:space-between;margin-top:",";"],(0,m.F)(d,"","div"),l.F.EIGHT),p=a.default.div.withConfig({displayName:"PagePagination__Item",componentId:"sc-3ejrow-1"})(["> a{color:",";}&:nth-child(2) > a{text-align:right;color:",";}"],i.lm.BRAND_PRIMARY,i.lm.BRAND_SECONDARY),b=a.default.div.withConfig({displayName:"PagePagination__ItemLabel",componentId:"sc-3ejrow-2"})(["color:",";padding-bottom:",";"],i.lm.TEXT_LOW_CONTRAST,l.F.ONE),_=a.default.div.withConfig({displayName:"PagePagination__ItemTitle",componentId:"sc-3ejrow-3"})(["display:inline-flex;align-items:center;font-weight:",";","{",";}"],c.s.MEDIUM,u.eU,s.y),g=e=>{const{next:t,previous:r}=e;return n.createElement(f,{"aria-label":"Pagination Navigation"},n.createElement(p,null,r&&n.createElement(o.l,{to:r.slug},n.createElement(b,null,"Previous"),n.createElement(_,null,n.createElement(u.vK,{iconSvg:"arrowLeft"},r.title)))),n.createElement(p,null,t&&n.createElement(o.l,{to:t.slug},n.createElement(b,null,"Next"),n.createElement(_,null,n.createElement(u.vK,{iconSvg:"arrowRight",iconSide:"right"},t.title)))))}},1528:function(e,t,r){"use strict";r.d(t,{$:function(){return S}});var n=r(4274),a=r(5378),o=r(3160),s=r(3525),i=r(8330),l=r(7564),c=r(5399);var u=r(6341),m=r(9874),d=r(1672);const f=async e=>{const t=await r.e(8269).then(r.bind(r,8269)),n=u.tv+(0,m.b)(),a=(0,l.fq)(e," ");return t.default.replace(d.Ug,n).replace(d.R6,a)},p=/import\sEmblaCarousel\sfrom\s'(.*)'/,b=/const\sSLIDE_COUNT\s=\s\d{1,}/,_='import EmblaCarousel from "./EmblaCarousel"',g=async(e,t,n,a)=>"embla-carousel-ios-style-picker"===a?(async(e,t)=>(await r(348)(`./CarouselIosPickerEntry.${e}`)).default.replace(p,_).replace(d.Ap,(0,c.Wb)(t)))(e,!!n.loop):(async(e,t,n)=>{const a=t.length.toString();return(await r(7182)(`./CarouselDefaultEntry.${e}`)).default.replace(p,_).replace(d.$b,(0,c.rf)(n)).replace(b,(e=>e.replace(/\d{1,}/,a)))})(e,t,n),E=/import\s{\ssandboxImages\s}\sfrom\s'(.*)/,h=/sandboxImages\(index\)/,C=async(e,t)=>{const n=await r(4502)(`./Header.${e}`),a=(0,l.fq)(t," ");return n.default.replace(d.R6,a)};var x=r(8893);const y=async e=>(await r(2804)(`./Footer.${e}`)).default.replace(d.HC,x.t.GITHUB_ROOT),S=async e=>{const{id:t,carouselScript:r,slides:u,options:m,styles:p,plugins:b,sandboxOverrides:_,language:x=d.uq.JAVASCRIPT}=e,S=`${t}-react`,{prettierConfig:v,formatCss:A}=await(0,s.g)(),{isTypeScript:T,reactScriptExtension:j,formatScript:w}=await(0,c.Bz)(x),O=await(async(e,t,r)=>{const{El:n,rh:a}=i,{isJavaScript:s,reactScriptExtension:u}=await(0,c.Bz)(e);return{name:t,version:"1.0.0",description:`${(0,l.fq)(t," ")} Example`,main:`${o.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:n.react,"react-dom":n["react-dom"],"react-scripts":"4.0.0","embla-carousel-react":n["embla-carousel-react"],"embla-carousel":n["embla-carousel"],...r&&r},devDependencies:s?{"@babel/runtime":"7.13.8"}:{"@types/react":a["@types/react"],"@types/react-dom":a["@types/react-dom"],typescript:a.typescript},browserslist:[">0.2%","not dead","not ie <= 11","not op_mini all"]}})(x,S,b),I={include:["./src/**/*"],compilerOptions:{strict:!0,esModuleInterop:!0,lib:["es6","dom"],jsx:"react-jsx"}},P=(e=>e.replace(E,"").replace(h,"`https://picsum.photos/600/350?v=${index}`"))(r),[L,k,N,B]=await Promise.all([f(S),g(j,u,m,t),C(j,S),y(j)]),D={".prettierrc":{isBinary:!1,content:JSON.stringify(v,null,"\t")},"package.json":{isBinary:!1,content:JSON.stringify(O,null,"\t")},[`${o.c.PUBLIC}/index.html`]:{isBinary:!1,content:L},[`${o.c.CSS}/base.css`]:{isBinary:!1,content:A(a.y)},[`${o.c.CSS}/sandbox.css`]:{isBinary:!1,content:A(a.c)},[`${o.c.CSS}/embla.css`]:{isBinary:!1,content:A(p)},[`${o.c.JS}/index.${j}`]:{isBinary:!1,content:w(k)},[`${o.c.JS}/Header.${j}`]:{isBinary:!1,content:w(N)},[`${o.c.JS}/Footer.${j}`]:{isBinary:!1,content:w(B)},[`${o.c.JS}/EmblaCarousel.${j}`]:{isBinary:!1,content:w(P)}};return T&&Object.assign(D,{"tsconfig.json":{isBinary:!1,content:JSON.stringify(I,null,"\t")}}),(0,n.b)({files:Object.assign({},D,_)})}},3160:function(e,t,r){"use strict";r.d(t,{c:function(){return n}});const n={PUBLIC:"public",CSS:"src/css",JS:"src/js"}},5435:function(e,t,r){"use strict";r.d(t,{F:function(){return h}});var n=r(4274),a=r(5378),o=r(6052),s=r(3525),i=r(8330),l=r(7564),c=r(5399);var u=r(6341),m=r(8893),d=r(9874),f=r(1672);const p=/__replace_sandbox_script_src__/g,b=/__replace_sandbox_code__/g,_=/\/static\/slide-\d{1,}-.+?\.jpg/g,g=/slide-\d{1,}/,E=/slide-/,h=async e=>{const{id:t,carouselScript:h,carouselHtml:C,options:x,styles:y,plugins:S,sandboxOverrides:v,language:A=f.uq.JAVASCRIPT}=e,T=`${t}-vanilla`,{prettierConfig:j,formatHtml:w,formatCss:O}=await(0,s.g)(),{isTypeScript:I,vanillaScriptExtension:P,formatScript:L}=await(0,c.Bz)(A),k=await(async(e,t,r)=>{const{isJavaScript:n}=await(0,c.Bz)(e),{El:a,rh:o}=i;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":a["embla-carousel-react"],...r&&r},devDependencies:n?{"@babel/core":"7.2.0"}:{typescript:o.typescript},resolutions:{"@babel/preset-env":"7.13.8"}}})(A,T,S),N={include:["./src/**/*"],compilerOptions:{strict:!0,module:"commonjs",jsx:"preserve",esModuleInterop:!0,sourceMap:!0,allowJs:!0,lib:["es6","dom"],rootDir:"src",moduleResolution:"node"}},B=((e,t)=>{const r=null==t?void 0:t.loop;return e.replace(f.$b,(0,c.rf)(t)).replace(f.Ap,(0,c.Wb)(r))})(h,x),D=await(async(e,t,n)=>{const a=await r.e(7265).then(r.bind(r,7265)),s=u.tv+(0,d.b)(),i=(0,l.fq)(e," "),c=`${o.i.JS}/index.${t}`;return a.default.replace(f.Ug,s).replace(f.R6,i).replace(p,c).replace(f.HC,m.t.GITHUB_ROOT).replace(b,n)})(T,P,(e=>e.replace(_,(e=>`https://picsum.photos/600/350?v=${(e.match(g)||[""])[0].replace(E,"")}`)))(C)),R={".prettierrc":{isBinary:!1,content:JSON.stringify(j,null,"\t")},"package.json":{isBinary:!1,content:JSON.stringify(k,null,"\t")},"index.html":{isBinary:!1,content:w(D)},[`${o.i.CSS}/base.css`]:{isBinary:!1,content:O(a.y)},[`${o.i.CSS}/sandbox.css`]:{isBinary:!1,content:O(a.c)},[`${o.i.CSS}/embla.css`]:{isBinary:!1,content:O(y)},[`${o.i.JS}/index.${P}`]:{isBinary:!1,content:L(B)}};return I&&Object.assign(R,{"tsconfig.json":{isBinary:!1,content:JSON.stringify(N,null,"\t")}}),(0,n.b)({files:Object.assign({},R,v)})}},6052:function(e,t,r){"use strict";r.d(t,{i:function(){return n}});const n={CSS:"src/css",JS:"src/js"}},2168:function(e,t,r){"use strict";r.d(t,{r:function(){return d},Z:function(){return m}});var n=r(107),a=r(5399);const o=/from\s'.\/EmblaCarousel(.*)'/g,s=/.+?(?=EmblaCarousel)/,i=e=>(e.match(o)||[]).map((e=>e.replace(s,"").replace(/'/,""))),l=/from\s'..\/EmblaCarousel(.*)'/g,c=/.+?(?=EmblaCarousel)/,u=e=>(e.match(l)||[]).map((e=>e.replace(c,"").replace(/'/,""))),m=async(e,t,o)=>{const{vanillaScriptExtension:s}=await(0,a.Bz)(e),l=i(t),c=u(t),m=[].concat((0,n.A)(l),(0,n.A)(c)),d=l.map((e=>r(9382)(`./${o}/${e}.${s}`))),f=c.map((e=>r(3765)(`./${e}.${s}`))),p=[].concat((0,n.A)(d),(0,n.A)(f)),b=(await Promise.all(p)).map(((e,t)=>({script:e,name:m[t]})));return new Promise((e=>e(b)))},d=async(e,t,o)=>{const{reactScriptExtension:s}=await(0,a.Bz)(e),l=i(t),c=u(t),m=[].concat((0,n.A)(l),(0,n.A)(c)),d=l.map((e=>r(4142)(`./${o}/${e}.${s}`))),f=c.map((e=>r(8861)(`./${e}.${s}`))),p=[].concat((0,n.A)(d),(0,n.A)(f)),b=(await Promise.all(p)).map(((e,t)=>({script:e,name:m[t]})));return new Promise((e=>e(b)))}},3125:function(e,t,r){"use strict";r.d(t,{R:function(){return o}});var n=r(1672),a=r(5399);const o=e=>{const t=Object.values(n.LC).filter((t=>e.match(`from '${t}'`)));return(0,a.rJ)(t).plugins}},5378:function(e,t,r){"use strict";r.d(t,{c:function(){return d},y:function(){return m}});var n=r(3057),a=r(1664),o=r(4702),s=r(6341),i=r(8237);const l=(0,n.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;}"],s.lm.BACKGROUND_SITE,i.X,s.lm.BACKGROUND_SITE,s.lm.TEXT_HIGH_CONTRAST,o.$.BODY),c=(0,n.css)([".header{font-size:2rem;font-weight:",";text-align:center;padding:4rem 2rem 2rem 2rem;margin:0;}"],o.s.BOLD),u=(0,n.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;}"],o.s.SEMI_BOLD,s.lm.TEXT_LOW_CONTRAST),m=(0,a.i)(l,s.Zy),d=(0,a.i)(c,u)},352:function(e,t,r){"use strict";r.d(t,{G:function(){return i}});var n=r(4041),a=r(408),o=r(3594),s=r(7564);const i=e=>{const{title:t,description:r,lang:i="en",url:l,children:c}=e,u=(0,a.Q)(),m=`${t} | ${(0,s.fq)(u.title)}`,d=r||u.description;return n.createElement(n.Fragment,null,n.createElement("html",{lang:i}),n.createElement("title",null,m),n.createElement("link",{rel:"canonical",href:l}),n.createElement("meta",{name:"description",content:d}),n.createElement("meta",{name:"og:title",content:t}),n.createElement("meta",{name:"og:description",content:d}),n.createElement("meta",{name:"og:type",content:"article"}),n.createElement("meta",{name:"og:locale",content:"en_EN"}),n.createElement("meta",{name:"og:url",content:l}),n.createElement("meta",{name:"og:site_name",content:(0,o.b)(u.siteUrl)}),n.createElement("meta",{name:"twitter:card",content:"summary"}),n.createElement("meta",{name:"twitter:creator",content:u.author}),n.createElement("meta",{name:"twitter:title",content:t}),n.createElement("meta",{name:"twitter:description",content:d}),c)}},1672:function(e,t,r){"use strict";r.d(t,{$b:function(){return f},Ap:function(){return p},HC:function(){return u},HQ:function(){return i},KH:function(){return a},LC:function(){return s},R6:function(){return m},Ug:function(){return d},gc:function(){return l},hz:function(){return c},uq:function(){return o}});var n=r(4393);const a={VANILLA_JS:"Vanilla",VANILLA_TS:"Vanilla + TypeScript",REACT_TS:"React + TypeScript",REACT_JS:"React"},o={JAVASCRIPT:"javascript",TYPESCRIPT:"typescript"},s={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"},i={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=n.F.ONE,u=/__replace_sandbox_repository_url__/g,m=/__replace_sandbox_title__/g,d=/__replace_sandbox_theme__/g,f=/const\sOPTIONS(.*)/,p=/const\sLOOP\s=\sfalse/},8312:function(e,t,r){"use strict";r.d(t,{F:function(){return n}});const n=e=>Array.from(Array(e).keys())},9874:function(e,t,r){"use strict";r.d(t,{b:function(){return o}});var n=r(6341),a=r(8988);const o=()=>{if(!a.B)return n.$.LIGHT;const e=n.tv+n.$.LIGHT;return document.documentElement.classList.contains(e)?n.$.LIGHT:n.$.DARK}},3525:function(e,t,r){"use strict";r.d(t,{g:function(){return o}});var n=r(4620);const a=r.n(n)(),o=async()=>{const[e,t,n,o]=await Promise.all([r.e(4832).then(r.t.bind(r,2406,23)),r.e(775).then(r.t.bind(r,6242,23)),r.e(7190).then(r.t.bind(r,7190,23)),r.e(4858).then(r.t.bind(r,3975,23))]),s={...a,parser:"html",plugins:[t]},i={...a,parser:"css",plugins:[n]},l={...a,parser:"babel",plugins:[o]},c={...a,parser:"babel-ts",plugins:[o]},u=(t,r)=>{let n="";try{n=e.format(t,r)}catch(a){console.warn("Prettier was not able to format file",a)}return n};return{prettierConfig:a,formatHtml:e=>u(e,s),formatCss:e=>u(e,i),formatJs:e=>u(e,l),formatTs:e=>u(e,c)}}},3594:function(e,t,r){"use strict";r.d(t,{b:function(){return n}});const n=e=>e.replace(/(^\w+:|^)\/\//,"")},5399:function(e,t,r){"use strict";r.d(t,{Bz:function(){return i},M8:function(){return d},Wb:function(){return m},Yy:function(){return l},rJ:function(){return c},rf:function(){return u}});var n=r(8330),a=r(3525),o=r(7564),s=r(1672);const i=async e=>{const{formatTs:t,formatJs:r}=await(0,a.g)(),n=e===s.uq.TYPESCRIPT,o=!n;return{isJavaScript:o,isTypeScript:n,vanillaScriptExtension:o?"js":"ts",reactScriptExtension:o?"jsx":"tsx",formatScript:n?t:r}},l=e=>Object.keys(e).map((t=>{const r=t,n=e[r];return{key:r,label:s.KH[r],createSandbox:n}})),c=e=>({plugins:{...(Array.isArray(e)?e:[e]).reduce(((e,t)=>({...e,[t]:n.El[t]})),{})}}),u=e=>t=>t.replace("{}",JSON.stringify(e)),m=function(e){return void 0===e&&(e=!1),t=>t.replace("false",e.toString())},d=e=>({FIELD_NAME:e,ID:`${s.gc}-${(0,o.QA)(e)}`})},1664:function(e,t,r){"use strict";r.d(t,{i:function(){return n}});const n=function(){for(var e=arguments.length,t=new Array(e),r=0;re+t.join("")),"")}},4620:function(e,t,r){e.exports=r(3211)},7154:function(e,t,r){"use strict";r.d(t,{A:function(){return $}});var n=r(4041);function a(e){return function(e){return"[object Object]"===Object.prototype.toString.call(e)}(e)||Array.isArray(e)}function o(e,t){const r=Object.keys(e),n=Object.keys(t);if(r.length!==n.length)return!1;return JSON.stringify(Object.keys(e.breakpoints||{}))===JSON.stringify(Object.keys(t.breakpoints||{}))&&r.every((r=>{const n=e[r],s=t[r];return"function"==typeof n?`${n}`==`${s}`:a(n)&&a(s)?o(n,s):n===s}))}function s(e){return e.concat().sort(((e,t)=>e.name>t.name?1:-1)).map((e=>e.options))}var i=r(107);function l(e){return"number"==typeof e}function c(e){return"string"==typeof e}function u(e){return"boolean"==typeof e}function m(e){return"[object Object]"===Object.prototype.toString.call(e)}function d(e){return Math.abs(e)}function f(e){return Math.sign(e)}function p(e,t){return d(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 E(e,t){return t===g(e)}function h(e,t){return void 0===t&&(t=0),Array.from(Array(e),((e,r)=>t+r))}function C(e){return Object.keys(e)}function x(e,t){return[e,t].reduce(((e,t)=>(C(t).forEach((r=>{const n=e[r],a=t[r],o=m(n)&&m(a);e[r]=o?x(n,a):a})),e)),{})}function y(e,t){return void 0!==t.MouseEvent&&e instanceof t.MouseEvent}function S(){let e=[];const t={add:function(r,n,a,o){let s;if(void 0===o&&(o={passive:!0}),"addEventListener"in r)r.addEventListener(n,a,o),s=()=>r.removeEventListener(n,a,o);else{const e=r;e.addListener(a),s=()=>e.removeListener(a)}return e.push(s),t},clear:function(){e=e.filter((e=>e()))}};return t}function v(e,t,r,n){const a=S(),o=1e3/60;let s=null,i=0,l=0;function c(e){if(!l)return;s||(s=e);const a=e-s;for(s=e,i+=a;i>=o;)r(),i-=o;n(i/o),l&&(l=t.requestAnimationFrame(c))}function u(){t.cancelAnimationFrame(l),s=null,i=0,l=0}return{init:function(){a.add(e,"visibilitychange",(()=>{e.hidden&&(s=null,i=0)}))},destroy:function(){u(),a.clear()},start:function(){l||(l=t.requestAnimationFrame(c))},stop:u,update:r,render:n}}function A(e,t){void 0===e&&(e=0),void 0===t&&(t=0);const r=d(e-t);function n(t){return tt}function o(e){return n(e)||a(e)}return{length:r,max:t,min:e,constrain:function(r){return o(r)?n(r)?e:t:r},reachedAny:o,reachedMax:a,reachedMin:n,removeOffset:function(e){return r?e-r*Math.ceil((e-t)/r):e}}}function T(e,t,r){const{constrain:n}=A(0,e),a=e+1;let o=s(t);function s(e){return r?d((a+e)%a):n(e)}function i(){return o}function l(){return T(e,i(),r)}const c={get:i,set:function(e){return o=s(e),c},add:function(e){return l().set(i()+e)},clone:l};return c}function j(e,t,r,n,a,o,s,i,l,c,m,b,_,g,E,h,C,x,v){const{cross:T,direction:j}=e,w=["INPUT","SELECT","TEXTAREA"],O={passive:!1},I=S(),P=S(),L=A(50,225).constrain(g.measure(20)),k={mouse:300,touch:400},N={mouse:500,touch:600},B=E?43:25;let D=!1,R=0,z=0,G=!1,F=!1,M=!1,U=!1;function H(e){if(!y(e,n)&&e.touches.length>=2)return $(e);const t=o.readPoint(e),r=o.readPoint(e,T),s=p(t,R),l=p(r,z);if(!F&&!U){if(!e.cancelable)return $(e);if(F=s>l,!F)return $(e)}const u=o.pointerMove(e);s>h&&(M=!0),c.useFriction(.3).useDuration(.75),i.start(),a.add(j(u)),e.preventDefault()}function $(e){const t=m.byDistance(0,!1).index!==b.get(),r=o.pointerUp(e)*(E?N:k)[U?"mouse":"touch"],n=function(e,t){const r=b.add(-1*f(e)),n=m.byDistance(e,!E).distance;return E||d(e)=2,i&&0!==e.button)return;if(function(e){const t=e.nodeName||"";return w.includes(t)}(e.target))return;G=!0,o.pointerDown(e),c.useFriction(0).useDuration(0),a.set(s),function(){const e=U?r:t;P.add(e,"touchmove",H,O).add(e,"touchend",$).add(e,"mousemove",H,O).add(e,"mouseup",$)}(),R=o.readPoint(e),z=o.readPoint(e,T),_.emit("pointerDown")}(i)}const l=t;I.add(l,"dragstart",(e=>e.preventDefault()),O).add(l,"touchmove",(()=>{}),O).add(l,"touchend",(()=>{})).add(l,"touchstart",i).add(l,"mousedown",i).add(l,"touchcancel",$).add(l,"contextmenu",$).add(l,"click",V,!0)},destroy:function(){I.clear(),P.clear()},pointerDown:function(){return G}}}function w(e,t){let r,n;function a(e){return e.timeStamp}function o(r,n){const a="client"+("x"===(n||e.scroll)?"X":"Y");return(y(r,t)?r:r.touches[0])[a]}return{pointerDown:function(e){return r=e,n=e,o(e)},pointerMove:function(e){const t=o(e)-o(n),s=a(e)-a(r)>170;return n=e,s&&(r=e),t},pointerUp:function(e){if(!r||!n)return 0;const t=o(n)-o(r),s=a(e)-a(r),i=a(e)-a(n)>170,l=t/s;return s&&!i&&d(l)>.1?l:0},readPoint:o}}function O(e,t,r,n,a,o,s){const i=[e].concat(n);let l,c,m=[],f=!1;function p(e){return a.measureSize(s.measure(e))}return{init:function(a){o&&(c=p(e),m=n.map(p),l=new ResizeObserver((r=>{(u(o)||o(a,r))&&function(r){for(const o of r){if(f)return;const r=o.target===e,s=n.indexOf(o.target),i=r?c:m[s];if(d(p(r?e:n[s])-i)>=.5){a.reInit(),t.emit("resize");break}}}(r)})),r.requestAnimationFrame((()=>{i.forEach((e=>l.observe(e)))})))},destroy:function(){f=!0,l&&l.disconnect()}}}function I(e,t,r,n,a){const o=a.measure(10),s=a.measure(50),i=A(.1,.99);let l=!1;function c(){return!l&&(!!e.reachedAny(r.get())&&!!e.reachedAny(t.get()))}return{shouldConstrain:c,constrain:function(a){if(!c())return;const l=e.reachedMin(t.get())?"min":"max",u=d(e[l]-t.get()),m=r.get()-t.get(),f=i.constrain(u/s);r.subtract(m*f),!a&&d(m)e.add(a)))}}}function L(e,t,r,n,a){const{reachedAny:o,removeOffset:s,constrain:i}=n;function l(e){return e.concat().sort(((e,t)=>d(e)-d(t)))[0]}function c(t,n){const a=[t,t+r,t-r];if(!e)return t;if(!n)return l(a);const o=a.filter((e=>f(e)===n));return o.length?l(o):_(a)-r}return{byDistance:function(r,n){const l=a.get()+r,{index:u,distance:m}=function(r){const n=e?s(r):i(r),a=t.map(((e,t)=>({diff:c(e-n,0),index:t}))).sort(((e,t)=>d(e.diff)-d(t.diff))),{index:o}=a[0];return{index:o,distance:n}}(l),f=!e&&o(l);return!n||f?{index:u,distance:r}:{index:u,distance:r+c(t[u]-m,0)}},byIndex:function(e,r){return{index:e,distance:c(t[e]-a.get(),r)}},shortcut:c}}function k(e,t,r,n,a,o,s,i){const c={passive:!0,capture:!0};let m=0;function d(e){"Tab"===e.code&&(m=(new Date).getTime())}return{init:function(f){i&&(o.add(document,"keydown",d,!1),t.forEach(((t,d)=>{o.add(t,"focus",(t=>{(u(i)||i(f,t))&&function(t){if((new Date).getTime()-m>10)return;s.emit("slideFocusStart"),e.scrollLeft=0;const o=r.findIndex((e=>e.includes(t)));l(o)&&(a.useDuration(0),n.index(o,0),s.emit("slideFocus"))}(d)}),c)})))}}}function N(e){let t=e;function r(e){return l(e)?e:e.get()}return{get:function(){return t},set:function(e){t=r(e)},add:function(e){t+=r(e)},subtract:function(e){t-=r(e)}}}function B(e,t){const r="x"===e.scroll?function(e){return`translate3d(${e}px,0px,0px)`}:function(e){return`translate3d(0px,${e}px,0px)`},n=t.style;let a=null,o=!1;return{clear:function(){o||(n.transform="",t.getAttribute("style")||t.removeAttribute("style"))},to:function(t){if(o)return;const s=(i=e.direction(t),Math.round(100*i)/100);var i;s!==a&&(n.transform=r(s),a=s)},toggleActive:function(e){o=!e}}}function D(e,t,r,n,a,o,s,i,l){const c=.5,u=b(a),m=b(a).reverse(),d=function(){const e=s[0];return _(p(m,e),r,!1)}().concat(function(){const e=t-s[0]-1;return _(p(u,e),-r,!0)}());function f(e,t){return e.reduce(((e,t)=>e-a[t]),t)}function p(e,t){return e.reduce(((e,r)=>f(e,t)>0?e.concat([r]):e),[])}function _(a,s,u){const m=function(e){return o.map(((r,a)=>({start:r-n[a]+c+e,end:r+t-c+e})))}(s);return a.map((t=>{const n=u?0:-r,a=u?r:0,o=u?"end":"start",s=m[t][o];return{index:t,loopPoint:s,slideLocation:N(-1),translate:B(e,l[t]),target:()=>i.get()>s?n:a}}))}return{canLoop:function(){return d.every((e=>{let{index:r}=e;return f(u.filter((e=>e!==r)),t)<=.1}))},clear:function(){d.forEach((e=>e.translate.clear()))},loop:function(){d.forEach((e=>{const{target:t,translate:r,slideLocation:n}=e,a=t();a!==n.get()&&(r.to(a),n.set(a))}))},loopPoints:d}}function R(e,t,r){let n,a=!1;return{init:function(o){r&&(n=new MutationObserver((e=>{a||(u(r)||r(o,e))&&function(e){for(const r of e)if("childList"===r.type){o.reInit(),t.emit("slidesChanged");break}}(e)})),n.observe(e,{childList:!0}))},destroy:function(){n&&n.disconnect(),a=!0}}}function z(e,t,r,n){const a={};let o,s=null,i=null,l=!1;return{init:function(){o=new IntersectionObserver((e=>{l||(e.forEach((e=>{const r=t.indexOf(e.target);a[r]=e})),s=null,i=null,r.emit("slidesInView"))}),{root:e.parentElement,threshold:n}),t.forEach((e=>o.observe(e)))},destroy:function(){o&&o.disconnect(),l=!0},get:function(e){if(void 0===e&&(e=!0),e&&s)return s;if(!e&&i)return i;const t=function(e){return C(a).reduce(((t,r)=>{const n=parseInt(r),{isIntersecting:o}=a[n];return(e&&o||!e&&!o)&&t.push(n),t}),[])}(e);return e&&(s=t),e||(i=t),t}}}function G(e,t,r,n,a,o,s,i,c){const{startEdge:u,endEdge:m,direction:f}=e,p=l(r);return{groupSlides:function(e){return p?function(e,t){return b(e).filter((e=>e%t==0)).map((r=>e.slice(r,r+t)))}(e,r):function(e){return e.length?b(e).reduce(((r,l,p)=>{const b=_(r)||0,E=0===b,h=l===g(e),C=a[u]-o[b][u],x=a[u]-o[l][m],y=!n&&E?f(s):0,S=d(x-(!n&&h?f(i):0)-(C+y));return p&&S>t+c&&r.push(l),h&&r.push(e.length),r}),[]).map(((t,r,n)=>{const a=Math.max(n[r-1]||0);return e.slice(a,t)})):[]}(e)}}}function F(e,t,r,n,a,o,s){const{align:i,axis:l,direction:u,startIndex:m,loop:C,duration:x,dragFree:y,dragThreshold:F,inViewThreshold:M,slidesToScroll:U,skipSnaps:H,containScroll:$,watchResize:V,watchSlides:J,watchDrag:X,watchFocus:Y}=o,W={measure:function(e){const{offsetTop:t,offsetLeft:r,offsetWidth:n,offsetHeight:a}=e;return{top:t,right:r+n,bottom:t+a,left:r,width:n,height:a}}},q=W.measure(t),K=r.map(W.measure),Q=function(e,t){const r="rtl"===t,n="y"===e,a=!n&&r?-1:1;return{scroll:n?"y":"x",cross:n?"x":"y",startEdge:n?"top":r?"right":"left",endEdge:n?"bottom":r?"left":"right",measureSize:function(e){const{height:t,width:r}=e;return n?t:r},direction:function(e){return e*a}}}(l,u),Z=Q.measureSize(q),ee=function(e){return{measure:function(t){return e*(t/100)}}}(Z),te=function(e,t){const r={start:function(){return 0},center:function(e){return n(e)/2},end:n};function n(e){return t-e}return{measure:function(n,a){return c(e)?r[e](n):e(t,n,a)}}}(i,Z),re=!C&&!!$,ne=C||!!$,{slideSizes:ae,slideSizesWithGaps:oe,startGap:se,endGap:ie}=function(e,t,r,n,a,o){const{measureSize:s,startEdge:i,endEdge:l}=e,c=r[0]&&a,u=function(){if(!c)return 0;const e=r[0];return d(t[i]-e[i])}(),m=function(){if(!c)return 0;const e=o.getComputedStyle(_(n));return parseFloat(e.getPropertyValue(`margin-${l}`))}(),f=r.map(s),p=r.map(((e,t,r)=>{const n=!t,a=E(r,t);return n?f[t]+u:a?f[t]+m:r[t+1][i]-e[i]})).map(d);return{slideSizes:f,slideSizesWithGaps:p,startGap:u,endGap:m}}(Q,q,K,r,ne,a),le=G(Q,Z,U,C,q,K,se,ie,2),{snaps:ce,snapsAligned:ue}=function(e,t,r,n,a){const{startEdge:o,endEdge:s}=e,{groupSlides:i}=a,l=i(n).map((e=>_(e)[s]-e[0][o])).map(d).map(t.measure),c=n.map((e=>r[o]-e[o])).map((e=>-d(e))),u=i(c).map((e=>e[0])).map(((e,t)=>e+l[t]));return{snaps:c,snapsAligned:u}}(Q,te,q,K,le),me=-_(ce)+_(oe),{snapsContained:de,scrollContainLimit:fe}=function(e,t,r,n,a){const o=A(-t+e,0),s=r.map(((e,t)=>{const{min:n,max:a}=o,s=o.constrain(e),i=!t,c=E(r,t);return i?a:c||l(n,s)?n:l(a,s)?a:s})).map((e=>parseFloat(e.toFixed(3)))),i=function(){const e=s[0],t=_(s);return A(s.lastIndexOf(e),s.indexOf(t)+1)}();function l(e,t){return p(e,t)<1}return{snapsContained:function(){if(t<=e+a)return[o.max];if("keepSnaps"===n)return s;const{min:r,max:l}=i;return s.slice(r,l)}(),scrollContainLimit:i}}(Z,me,ue,$,2),pe=re?de:ue,{limit:be}=function(e,t,r){const n=t[0];return{limit:A(r?n-e:_(t),n)}}(me,pe,C),_e=T(g(pe),m,C),ge=_e.clone(),Ee=b(r),he=v(n,a,(()=>(e=>{let{dragHandler:t,scrollBody:r,scrollBounds:n,options:{loop:a}}=e;a||n.constrain(t.pointerDown()),r.seek()})(ke)),(e=>((e,t)=>{let{scrollBody:r,translate:n,location:a,offsetLocation:o,previousLocation:s,scrollLooper:i,slideLooper:l,dragHandler:c,animation:u,eventHandler:m,scrollBounds:d,options:{loop:f}}=e;const p=r.settled(),b=!d.shouldConstrain(),_=f?p:p&&b;_&&!c.pointerDown()&&(u.stop(),m.emit("settle")),_||m.emit("scroll");const g=a.get()*t+s.get()*(1-t);o.set(g),f&&(i.loop(r.direction()),l.loop()),n.to(o.get())})(ke,e))),Ce=pe[_e.get()],xe=N(Ce),ye=N(Ce),Se=N(Ce),ve=N(Ce),Ae=function(e,t,r,n,a,o){let s=0,i=0,l=a,c=o,u=e.get(),m=0;function p(e){return l=e,_}function b(e){return c=e,_}const _={direction:function(){return i},duration:function(){return l},velocity:function(){return s},seek:function(){const t=n.get()-e.get();let a=0;return l?(r.set(e),s+=t/l,s*=c,u+=s,e.add(s),a=u-m):(s=0,r.set(n),e.set(n),a=t),i=f(a),m=u,_},settled:function(){return d(n.get()-t.get())<.001},useBaseFriction:function(){return b(o)},useBaseDuration:function(){return p(a)},useFriction:b,useDuration:p};return _}(xe,Se,ye,ve,x,.68),Te=L(C,pe,me,be,ve),je=function(e,t,r,n,a,o,s){function i(a){const i=a.distance,l=a.index!==t.get();o.add(i),i&&(n.duration()?e.start():(e.update(),e.render(1),e.update())),l&&(r.set(t.get()),t.set(a.index),s.emit("select"))}return{distance:function(e,t){i(a.byDistance(e,t))},index:function(e,r){const n=t.clone().set(e);i(a.byIndex(n.get(),r))}}}(he,_e,ge,Ae,Te,ve,s),we=function(e){const{max:t,length:r}=e;return{get:function(e){return r?(e-t)/-r:0}}}(be),Oe=S(),Ie=z(t,r,s,M),{slideRegistry:Pe}=function(e,t,r,n,a,o){const{groupSlides:s}=a,{min:i,max:l}=n;return{slideRegistry:function(){const n=s(o),a=!e||"keepSnaps"===t;return 1===r.length?[o]:a?n:n.slice(i,l).map(((e,t,r)=>{const n=!t,a=E(r,t);return n?h(_(r[0])+1):a?h(g(o)-_(r)[0]+1,_(r)[0]):e}))}()}}(re,$,pe,fe,le,Ee),Le=k(e,r,Pe,je,Ae,Oe,s,Y),ke={ownerDocument:n,ownerWindow:a,eventHandler:s,containerRect:q,slideRects:K,animation:he,axis:Q,dragHandler:j(Q,e,n,a,ve,w(Q,a),xe,he,je,Ae,Te,_e,s,ee,y,F,H,.68,X),eventStore:Oe,percentOfView:ee,index:_e,indexPrevious:ge,limit:be,location:xe,offsetLocation:Se,previousLocation:ye,options:o,resizeHandler:O(t,s,a,r,Q,V,W),scrollBody:Ae,scrollBounds:I(be,Se,ve,Ae,ee),scrollLooper:P(me,be,Se,[xe,Se,ye,ve]),scrollProgress:we,scrollSnapList:pe.map(we.get),scrollSnaps:pe,scrollTarget:Te,scrollTo:je,slideLooper:D(Q,Z,me,ae,oe,ce,pe,Se,r),slideFocus:Le,slidesHandler:R(t,s,J),slidesInView:Ie,slideIndexes:Ee,slideRegistry:Pe,slidesToScroll:le,target:ve,translate:B(Q,t)};return ke}const M={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,watchFocus:!0};function U(e){function t(e,t){return x(e,t||{})}const r={mergeOptions:t,optionsAtMedia:function(r){const n=r.breakpoints||{},a=C(n).filter((t=>e.matchMedia(t).matches)).map((e=>n[e])).reduce(((e,r)=>t(e,r)),{});return t(r,a)},optionsMediaQueries:function(t){return t.map((e=>C(e.breakpoints||{}))).reduce(((e,t)=>e.concat(t)),[]).map(e.matchMedia)}};return r}function H(e,t,r){const n=e.ownerDocument,a=n.defaultView,o=U(a),s=function(e){let t=[];return{init:function(r,n){return t=n.filter((t=>{let{options:r}=t;return!1!==e.optionsAtMedia(r).active})),t.forEach((t=>t.init(r,e))),n.reduce(((e,t)=>Object.assign(e,{[t.name]:t})),{})},destroy:function(){t=t.filter((e=>e.destroy()))}}}(o),l=S(),u=function(){let e,t={};function r(e){return t[e]||[]}const n={init:function(t){e=t},emit:function(t){return r(t).forEach((r=>r(e,t))),n},off:function(e,a){return t[e]=r(e).filter((e=>e!==a)),n},on:function(e,a){return t[e]=r(e).concat([a]),n},clear:function(){t={}}};return n}(),{mergeOptions:m,optionsAtMedia:d,optionsMediaQueries:f}=o,{on:p,off:b,emit:_}=u,g=O;let E,h,C,x,y=!1,v=m(M,H.globalOptions),A=m(v),T=[];function j(t){const r=F(e,C,x,n,a,t,u);if(t.loop&&!r.slideLooper.canLoop()){return j(Object.assign({},t,{loop:!1}))}return r}function w(t,r){y||(v=m(v,t),A=d(v),T=r||T,function(){const{container:t,slides:r}=A,n=c(t)?e.querySelector(t):t;C=n||e.children[0];const a=c(r)?C.querySelectorAll(r):r;x=[].slice.call(a||C.children)}(),E=j(A),f([v].concat((0,i.A)(T.map((e=>{let{options:t}=e;return t}))))).forEach((e=>l.add(e,"change",O))),A.active&&(E.translate.to(E.location.get()),E.animation.init(),E.slidesInView.init(),E.slideFocus.init(k),E.eventHandler.init(k),E.resizeHandler.init(k),E.slidesHandler.init(k),E.options.loop&&E.slideLooper.loop(),C.offsetParent&&x.length&&E.dragHandler.init(k),h=s.init(k,T)))}function O(e,t){const r=L();I(),w(m({startIndex:r},e),t),u.emit("reInit")}function I(){E.dragHandler.destroy(),E.eventStore.clear(),E.translate.clear(),E.slideLooper.clear(),E.resizeHandler.destroy(),E.slidesHandler.destroy(),E.slidesInView.destroy(),E.animation.destroy(),s.destroy(),l.clear()}function P(e,t,r){A.active&&!y&&(E.scrollBody.useBaseFriction().useDuration(!0===t?0:A.duration),E.scrollTo.index(e,r||0))}function L(){return E.index.get()}const k={canScrollNext:function(){return E.index.add(1).get()!==L()},canScrollPrev:function(){return E.index.add(-1).get()!==L()},containerNode:function(){return C},internalEngine:function(){return E},destroy:function(){y||(y=!0,l.clear(),I(),u.emit("destroy"),u.clear())},off:b,on:p,emit:_,plugins:function(){return h},previousScrollSnap:function(){return E.indexPrevious.get()},reInit:g,rootNode:function(){return e},scrollNext:function(e){P(E.index.add(1).get(),e,-1)},scrollPrev:function(e){P(E.index.add(-1).get(),e,1)},scrollProgress:function(){return E.scrollProgress.get(E.location.get())},scrollSnapList:function(){return E.scrollSnapList},scrollTo:P,selectedScrollSnap:L,slideNodes:function(){return x},slidesInView:function(){return E.slidesInView.get()},slidesNotInView:function(){return E.slidesInView.get(!1)}};return w(t,r),setTimeout((()=>u.emit("init")),0),k}function $(e,t){void 0===e&&(e={}),void 0===t&&(t=[]);const r=(0,n.useRef)(e),a=(0,n.useRef)(t),{0:i,1:l}=(0,n.useState)(),{0:c,1:u}=(0,n.useState)(),m=(0,n.useCallback)((()=>{i&&i.reInit(r.current,a.current)}),[i]);return(0,n.useEffect)((()=>{o(r.current,e)||(r.current=e,m())}),[e,m]),(0,n.useEffect)((()=>{(function(e,t){if(e.length!==t.length)return!1;const r=s(e),n=s(t);return r.every(((e,t)=>o(e,n[t])))})(a.current,t)||(a.current=t,m())}),[t,m]),(0,n.useEffect)((()=>{if("undefined"!=typeof window&&window.document&&window.document.createElement&&c){H.globalOptions=$.globalOptions;const e=H(c,r.current,a.current);return l(e),()=>e.destroy()}l(void 0)}),[c,l]),[u,i]}H.globalOptions=void 0,$.globalOptions=void 0},683:function(e,t,r){var n,a=function(){var e=String.fromCharCode,t="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",r="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+-$",n={};function a(e,t){if(!n[e]){n[e]={};for(var r=0;r>>8,r[2*n+1]=s%256}return r},decompressFromUint8Array:function(t){if(null==t)return o.decompress(t);for(var r=new Array(t.length/2),n=0,a=r.length;n>=1}else{for(a=1,n=0;n>=1}0==--m&&(m=Math.pow(2,f),f++),delete i[u]}else for(a=s[u],n=0;n>=1;0==--m&&(m=Math.pow(2,f),f++),s[c]=d++,u=String(l)}if(""!==u){if(Object.prototype.hasOwnProperty.call(i,u)){if(u.charCodeAt(0)<256){for(n=0;n>=1}else{for(a=1,n=0;n>=1}0==--m&&(m=Math.pow(2,f),f++),delete i[u]}else for(a=s[u],n=0;n>=1;0==--m&&(m=Math.pow(2,f),f++)}for(a=2,n=0;n>=1;for(;;){if(b<<=1,_==t-1){p.push(r(b));break}_++}return p.join("")},decompress:function(e){return null==e?"":""==e?null:o._decompress(e.length,32768,(function(t){return e.charCodeAt(t)}))},_decompress:function(t,r,n){var a,o,s,i,l,c,u,m=[],d=4,f=4,p=3,b="",_=[],g={val:n(0),position:r,index:1};for(a=0;a<3;a+=1)m[a]=a;for(s=0,l=Math.pow(2,2),c=1;c!=l;)i=g.val&g.position,g.position>>=1,0==g.position&&(g.position=r,g.val=n(g.index++)),s|=(i>0?1:0)*c,c<<=1;switch(s){case 0:for(s=0,l=Math.pow(2,8),c=1;c!=l;)i=g.val&g.position,g.position>>=1,0==g.position&&(g.position=r,g.val=n(g.index++)),s|=(i>0?1:0)*c,c<<=1;u=e(s);break;case 1:for(s=0,l=Math.pow(2,16),c=1;c!=l;)i=g.val&g.position,g.position>>=1,0==g.position&&(g.position=r,g.val=n(g.index++)),s|=(i>0?1:0)*c,c<<=1;u=e(s);break;case 2:return""}for(m[3]=u,o=u,_.push(u);;){if(g.index>t)return"";for(s=0,l=Math.pow(2,p),c=1;c!=l;)i=g.val&g.position,g.position>>=1,0==g.position&&(g.position=r,g.val=n(g.index++)),s|=(i>0?1:0)*c,c<<=1;switch(u=s){case 0:for(s=0,l=Math.pow(2,8),c=1;c!=l;)i=g.val&g.position,g.position>>=1,0==g.position&&(g.position=r,g.val=n(g.index++)),s|=(i>0?1:0)*c,c<<=1;m[f++]=e(s),u=f-1,d--;break;case 1:for(s=0,l=Math.pow(2,16),c=1;c!=l;)i=g.val&g.position,g.position>>=1,0==g.position&&(g.position=r,g.val=n(g.index++)),s|=(i>0?1:0)*c,c<<=1;m[f++]=e(s),u=f-1,d--;break;case 2:return _.join("")}if(0==d&&(d=Math.pow(2,p),p++),m[u])b=m[u];else{if(u!==f)return null;b=o+o.charAt(0)}_.push(b),m[f++]=o+b.charAt(0),o=b,0==--d&&(d=Math.pow(2,p),p++)}}};return o}();void 0===(n=function(){return a}.call(t,r,t,e))||(e.exports=n)},824:function(e,t,r){"use strict";t.A=r.p+"static/maskable-36b9e327abc26d5d02e9350d184a058f.png"},8861:function(e,t,r){var n={"./AutoHeight/EmblaCarousel.jsx":[4439,4439],"./AutoHeight/EmblaCarousel.tsx":[3405,3405],"./AutoScroll/EmblaCarousel.jsx":[2885,2885],"./AutoScroll/EmblaCarousel.tsx":[6831,6831],"./Autoplay/EmblaCarousel.jsx":[6652,6652],"./Autoplay/EmblaCarousel.tsx":[6158,6158],"./Autoplay/EmblaCarouselAutoplay.jsx":[6651,6651],"./Autoplay/EmblaCarouselAutoplay.tsx":[4265,4265],"./Autoplay/EmblaCarouselAutoplayProgress.jsx":[5350,5350],"./Autoplay/EmblaCarouselAutoplayProgress.tsx":[6676,6676],"./CarouselDefaultEntry.jsx":[5566,5566],"./CarouselDefaultEntry.tsx":[460,460],"./CarouselGenerator/EmblaCarousel.jsx":[4910,4910],"./CarouselGenerator/EmblaCarousel.tsx":[5404,5404],"./CarouselGenerator/EmblaCarouselArrowButtons.jsx":[4720,4720],"./CarouselGenerator/EmblaCarouselArrowButtons.tsx":[2682,2682],"./CarouselGenerator/EmblaCarouselDotButton.jsx":[893,893],"./CarouselGenerator/EmblaCarouselDotButton.tsx":[8855,8855],"./CarouselGenerator/EmblaCarouselSelectedSnapDisplay.jsx":[6807,6807],"./CarouselGenerator/EmblaCarouselSelectedSnapDisplay.tsx":[9421,9421],"./CarouselIosPickerEntry.jsx":[7700,7700],"./CarouselIosPickerEntry.tsx":[6,6],"./ClassNames/EmblaCarousel.jsx":[5223,5223],"./ClassNames/EmblaCarousel.tsx":[6429,6429],"./EmblaCarouselArrowButtons.jsx":[1920,1920],"./EmblaCarouselArrowButtons.tsx":[6458,6458],"./EmblaCarouselDotButton.jsx":[6237,6237],"./EmblaCarouselDotButton.tsx":[5207,5207],"./EmblaCarouselSelectedSnapDisplay.jsx":[6356,3975],"./EmblaCarouselSelectedSnapDisplay.tsx":[6013,6013],"./Fade/EmblaCarousel.jsx":[221,221],"./Fade/EmblaCarousel.tsx":[8183,8183],"./Footer.jsx":[8728,8728],"./Footer.tsx":[9474,9474],"./Header.jsx":[5266,5266],"./Header.tsx":[3400,3400],"./InfiniteScroll/EmblaCarousel.jsx":[7032,7032],"./InfiniteScroll/EmblaCarousel.tsx":[8898,8898],"./IosPicker/EmblaCarousel.jsx":[6958,6958],"./IosPicker/EmblaCarousel.tsx":[1852,1852],"./IosPicker/EmblaCarouselIosPickerItem.jsx":[3348,3348],"./IosPicker/EmblaCarouselIosPickerItem.tsx":[7142,7142],"./LazyLoad/EmblaCarousel.jsx":[1897,1897],"./LazyLoad/EmblaCarousel.tsx":[8683,8683],"./LazyLoad/EmblaCarouselLazyLoadImage.jsx":[3376,3376],"./LazyLoad/EmblaCarouselLazyLoadImage.tsx":[4618,4618],"./Opacity/EmblaCarousel.jsx":[2260,2260],"./Opacity/EmblaCarousel.tsx":[7862,7862],"./Parallax/EmblaCarousel.jsx":[3862,3862],"./Parallax/EmblaCarousel.tsx":[9844,9844],"./Progress/EmblaCarousel.jsx":[3146,3146],"./Progress/EmblaCarousel.tsx":[9360,9360],"./Scale/EmblaCarousel.jsx":[3734,3734],"./Scale/EmblaCarousel.tsx":[7387,7387],"./Thumbs/EmblaCarousel.jsx":[72,72],"./Thumbs/EmblaCarousel.tsx":[9122,9122],"./Thumbs/EmblaCarouselThumbsButton.jsx":[2875,2875],"./Thumbs/EmblaCarouselThumbsButton.tsx":[6841,6841],"./index.html":[8269,8269]};function a(e){if(!r.o(n,e))return Promise.resolve().then((function(){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}));var t=n[e],a=t[0];return r.e(t[1]).then((function(){return r(a)}))}a.keys=function(){return Object.keys(n)},a.id=8861,e.exports=a},4142:function(e,t,r){var n={"./AutoHeight/EmblaCarousel.jsx":[4439,4439],"./AutoHeight/EmblaCarousel.tsx":[3405,3405],"./AutoScroll/EmblaCarousel.jsx":[2885,2885],"./AutoScroll/EmblaCarousel.tsx":[6831,6831],"./Autoplay/EmblaCarousel.jsx":[6652,6652],"./Autoplay/EmblaCarousel.tsx":[6158,6158],"./Autoplay/EmblaCarouselAutoplay.jsx":[6651,6651],"./Autoplay/EmblaCarouselAutoplay.tsx":[4265,4265],"./Autoplay/EmblaCarouselAutoplayProgress.jsx":[5350,5350],"./Autoplay/EmblaCarouselAutoplayProgress.tsx":[6676,6676],"./CarouselGenerator/EmblaCarousel.jsx":[4910,4910],"./CarouselGenerator/EmblaCarousel.tsx":[5404,5404],"./CarouselGenerator/EmblaCarouselArrowButtons.jsx":[4720,4720],"./CarouselGenerator/EmblaCarouselArrowButtons.tsx":[2682,2682],"./CarouselGenerator/EmblaCarouselDotButton.jsx":[893,893],"./CarouselGenerator/EmblaCarouselDotButton.tsx":[8855,8855],"./CarouselGenerator/EmblaCarouselSelectedSnapDisplay.jsx":[6807,6807],"./CarouselGenerator/EmblaCarouselSelectedSnapDisplay.tsx":[9421,9421],"./ClassNames/EmblaCarousel.jsx":[5223,5223],"./ClassNames/EmblaCarousel.tsx":[6429,6429],"./Fade/EmblaCarousel.jsx":[221,221],"./Fade/EmblaCarousel.tsx":[8183,8183],"./InfiniteScroll/EmblaCarousel.jsx":[7032,7032],"./InfiniteScroll/EmblaCarousel.tsx":[8898,8898],"./IosPicker/EmblaCarousel.jsx":[6958,6958],"./IosPicker/EmblaCarousel.tsx":[1852,1852],"./IosPicker/EmblaCarouselIosPickerItem.jsx":[3348,3348],"./IosPicker/EmblaCarouselIosPickerItem.tsx":[7142,7142],"./LazyLoad/EmblaCarousel.jsx":[1897,1897],"./LazyLoad/EmblaCarousel.tsx":[8683,8683],"./LazyLoad/EmblaCarouselLazyLoadImage.jsx":[3376,3376],"./LazyLoad/EmblaCarouselLazyLoadImage.tsx":[4618,4618],"./Opacity/EmblaCarousel.jsx":[2260,2260],"./Opacity/EmblaCarousel.tsx":[7862,7862],"./Parallax/EmblaCarousel.jsx":[3862,3862],"./Parallax/EmblaCarousel.tsx":[9844,9844],"./Progress/EmblaCarousel.jsx":[3146,3146],"./Progress/EmblaCarousel.tsx":[9360,9360],"./Scale/EmblaCarousel.jsx":[3734,3734],"./Scale/EmblaCarousel.tsx":[7387,7387],"./Thumbs/EmblaCarousel.jsx":[72,72],"./Thumbs/EmblaCarousel.tsx":[9122,9122],"./Thumbs/EmblaCarouselThumbsButton.jsx":[2875,2875],"./Thumbs/EmblaCarouselThumbsButton.tsx":[6841,6841]};function a(e){if(!r.o(n,e))return Promise.resolve().then((function(){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}));var t=n[e],a=t[0];return r.e(t[1]).then((function(){return r(a)}))}a.keys=function(){return Object.keys(n)},a.id=4142,e.exports=a},8141:function(e,t,r){var n={"./AutoHeight/EmblaCarousel.jsx":[4439,4439],"./AutoHeight/EmblaCarousel.tsx":[3405,3405],"./AutoScroll/EmblaCarousel.jsx":[2885,2885],"./AutoScroll/EmblaCarousel.tsx":[6831,6831],"./Autoplay/EmblaCarousel.jsx":[6652,6652],"./Autoplay/EmblaCarousel.tsx":[6158,6158],"./CarouselGenerator/EmblaCarousel.jsx":[4910,4910],"./CarouselGenerator/EmblaCarousel.tsx":[5404,5404],"./ClassNames/EmblaCarousel.jsx":[5223,5223],"./ClassNames/EmblaCarousel.tsx":[6429,6429],"./Fade/EmblaCarousel.jsx":[221,221],"./Fade/EmblaCarousel.tsx":[8183,8183],"./InfiniteScroll/EmblaCarousel.jsx":[7032,7032],"./InfiniteScroll/EmblaCarousel.tsx":[8898,8898],"./IosPicker/EmblaCarousel.jsx":[6958,6958],"./IosPicker/EmblaCarousel.tsx":[1852,1852],"./LazyLoad/EmblaCarousel.jsx":[1897,1897],"./LazyLoad/EmblaCarousel.tsx":[8683,8683],"./Opacity/EmblaCarousel.jsx":[2260,2260],"./Opacity/EmblaCarousel.tsx":[7862,7862],"./Parallax/EmblaCarousel.jsx":[3862,3862],"./Parallax/EmblaCarousel.tsx":[9844,9844],"./Progress/EmblaCarousel.jsx":[3146,3146],"./Progress/EmblaCarousel.tsx":[9360,9360],"./Scale/EmblaCarousel.jsx":[3734,3734],"./Scale/EmblaCarousel.tsx":[7387,7387],"./Thumbs/EmblaCarousel.jsx":[72,72],"./Thumbs/EmblaCarousel.tsx":[9122,9122]};function a(e){if(!r.o(n,e))return Promise.resolve().then((function(){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}));var t=n[e],a=t[0];return r.e(t[1]).then((function(){return r(a)}))}a.keys=function(){return Object.keys(n)},a.id=8141,e.exports=a},7182:function(e,t,r){var n={"./CarouselDefaultEntry.jsx":[5566,5566],"./CarouselDefaultEntry.tsx":[460,460]};function a(e){if(!r.o(n,e))return Promise.resolve().then((function(){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}));var t=n[e],a=t[0];return r.e(t[1]).then((function(){return r(a)}))}a.keys=function(){return Object.keys(n)},a.id=7182,e.exports=a},348:function(e,t,r){var n={"./CarouselIosPickerEntry.jsx":[7700,7700],"./CarouselIosPickerEntry.tsx":[6,6]};function a(e){if(!r.o(n,e))return Promise.resolve().then((function(){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}));var t=n[e],a=t[0];return r.e(t[1]).then((function(){return r(a)}))}a.keys=function(){return Object.keys(n)},a.id=348,e.exports=a},2804:function(e,t,r){var n={"./Footer.jsx":[8728,8728],"./Footer.tsx":[9474,9474]};function a(e){if(!r.o(n,e))return Promise.resolve().then((function(){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}));var t=n[e],a=t[0];return r.e(t[1]).then((function(){return r(a)}))}a.keys=function(){return Object.keys(n)},a.id=2804,e.exports=a},4502:function(e,t,r){var n={"./Header.jsx":[5266,5266],"./Header.tsx":[3400,3400]};function a(e){if(!r.o(n,e))return Promise.resolve().then((function(){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}));var t=n[e],a=t[0];return r.e(t[1]).then((function(){return r(a)}))}a.keys=function(){return Object.keys(n)},a.id=4502,e.exports=a},3765:function(e,t,r){var n={"./AutoHeight/EmblaCarousel.js":[9361,9361],"./AutoHeight/EmblaCarousel.ts":[6827,6827],"./AutoScroll/EmblaCarousel.js":[7419,7419],"./AutoScroll/EmblaCarousel.ts":[8193,8193],"./AutoScroll/EmblaCarouselAutoScroll.js":[3165,3165],"./AutoScroll/EmblaCarouselAutoScroll.ts":[8591,8591],"./Autoplay/EmblaCarousel.js":[6200,6200],"./Autoplay/EmblaCarousel.ts":[374,374],"./Autoplay/EmblaCarouselAutoplay.js":[3325,3325],"./Autoplay/EmblaCarouselAutoplay.ts":[5743,5743],"./Autoplay/EmblaCarouselAutoplayProgress.js":[2350,2350],"./Autoplay/EmblaCarouselAutoplayProgress.ts":[7632,7632],"./CarouselGenerator/EmblaCarousel.js":[6518,6518],"./CarouselGenerator/EmblaCarousel.ts":[6040,6040],"./CarouselGenerator/EmblaCarouselArrowButtons.js":[8692,8692],"./CarouselGenerator/EmblaCarouselArrowButtons.ts":[9178,9178],"./CarouselGenerator/EmblaCarouselDotButton.js":[83,83],"./CarouselGenerator/EmblaCarouselDotButton.ts":[1353,1353],"./CarouselGenerator/EmblaCarouselSelectedSnapDisplay.js":[6825,6825],"./CarouselGenerator/EmblaCarouselSelectedSnapDisplay.ts":[5555,5555],"./CarouselGenerator/embla-carousel.html":[7673,7673],"./CarouselGenerator/slide.html":[2548,2548],"./ClassNames/EmblaCarousel.js":[9105,9105],"./ClassNames/EmblaCarousel.ts":[4987,4987],"./EmblaCarouselArrowButtons.js":[3676,3676],"./EmblaCarouselArrowButtons.ts":[1650,1650],"./EmblaCarouselDotButton.js":[5259,5259],"./EmblaCarouselDotButton.ts":[9377,9377],"./Fade/EmblaCarousel.js":[8939,8939],"./Fade/EmblaCarousel.ts":[6065,6065],"./InfiniteScroll/EmblaCarousel.js":[7340,7340],"./InfiniteScroll/EmblaCarousel.ts":[1618,1618],"./InfiniteScroll/EmblaCarouselInfiniteScroll.js":[2709,2709],"./InfiniteScroll/EmblaCarouselInfiniteScroll.ts":[5917,679],"./IosPicker/EmblaCarousel.js":[7238,7238],"./IosPicker/EmblaCarousel.ts":[4824,2443],"./IosPicker/EmblaCarouselIosPicker.js":[7787,7787],"./IosPicker/EmblaCarouselIosPicker.ts":[4913,4913],"./LazyLoad/EmblaCarousel.js":[7703,7703],"./LazyLoad/EmblaCarousel.ts":[6677,6677],"./LazyLoad/EmblaCarouselLazyLoad.js":[9157,9157],"./LazyLoad/EmblaCarouselLazyLoad.ts":[8071,8071],"./Opacity/EmblaCarousel.js":[4776,4776],"./Opacity/EmblaCarousel.ts":[8950,8950],"./Opacity/EmblaCarouselTweenOpacity.js":[5804,5804],"./Opacity/EmblaCarouselTweenOpacity.ts":[6786,6786],"./Parallax/EmblaCarousel.js":[3590,3590],"./Parallax/EmblaCarousel.ts":[2443,4824],"./Parallax/EmblaCarouselTweenParallax.js":[1288,1288],"./Parallax/EmblaCarouselTweenParallax.ts":[3878,3878],"./Progress/EmblaCarousel.js":[6397,8778],"./Progress/EmblaCarousel.ts":[4596,4596],"./Progress/EmblaCarouselProgressBar.js":[4032,4032],"./Progress/EmblaCarouselProgressBar.ts":[334,334],"./Scale/EmblaCarousel.js":[3615,3615],"./Scale/EmblaCarousel.ts":[1485,1485],"./Scale/EmblaCarouselTweenScale.js":[7892,7892],"./Scale/EmblaCarouselTweenScale.ts":[8378,8378],"./Thumbs/EmblaCarousel.js":[8804,8804],"./Thumbs/EmblaCarousel.ts":[9290,9290],"./Thumbs/EmblaCarouselThumbsButton.js":[1797,1797],"./Thumbs/EmblaCarouselThumbsButton.ts":[711,711],"./index.html":[7265,7265]};function a(e){if(!r.o(n,e))return Promise.resolve().then((function(){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}));var t=n[e],a=t[0];return r.e(t[1]).then((function(){return r(a)}))}a.keys=function(){return Object.keys(n)},a.id=3765,e.exports=a},9382:function(e,t,r){var n={"./AutoHeight/EmblaCarousel.js":[9361,9361],"./AutoHeight/EmblaCarousel.ts":[6827,6827],"./AutoScroll/EmblaCarousel.js":[7419,7419],"./AutoScroll/EmblaCarousel.ts":[8193,8193],"./AutoScroll/EmblaCarouselAutoScroll.js":[3165,3165],"./AutoScroll/EmblaCarouselAutoScroll.ts":[8591,8591],"./Autoplay/EmblaCarousel.js":[6200,6200],"./Autoplay/EmblaCarousel.ts":[374,374],"./Autoplay/EmblaCarouselAutoplay.js":[3325,3325],"./Autoplay/EmblaCarouselAutoplay.ts":[5743,5743],"./Autoplay/EmblaCarouselAutoplayProgress.js":[2350,2350],"./Autoplay/EmblaCarouselAutoplayProgress.ts":[7632,7632],"./CarouselGenerator/EmblaCarousel.js":[6518,6518],"./CarouselGenerator/EmblaCarousel.ts":[6040,6040],"./CarouselGenerator/EmblaCarouselArrowButtons.js":[8692,8692],"./CarouselGenerator/EmblaCarouselArrowButtons.ts":[9178,9178],"./CarouselGenerator/EmblaCarouselDotButton.js":[83,83],"./CarouselGenerator/EmblaCarouselDotButton.ts":[1353,1353],"./CarouselGenerator/EmblaCarouselSelectedSnapDisplay.js":[6825,6825],"./CarouselGenerator/EmblaCarouselSelectedSnapDisplay.ts":[5555,5555],"./CarouselGenerator/embla-carousel.html":[7673,7673],"./CarouselGenerator/slide.html":[2548,2548],"./ClassNames/EmblaCarousel.js":[9105,9105],"./ClassNames/EmblaCarousel.ts":[4987,4987],"./Fade/EmblaCarousel.js":[8939,8939],"./Fade/EmblaCarousel.ts":[6065,6065],"./InfiniteScroll/EmblaCarousel.js":[7340,7340],"./InfiniteScroll/EmblaCarousel.ts":[1618,1618],"./InfiniteScroll/EmblaCarouselInfiniteScroll.js":[2709,2709],"./InfiniteScroll/EmblaCarouselInfiniteScroll.ts":[5917,679],"./IosPicker/EmblaCarousel.js":[7238,7238],"./IosPicker/EmblaCarousel.ts":[4824,2443],"./IosPicker/EmblaCarouselIosPicker.js":[7787,7787],"./IosPicker/EmblaCarouselIosPicker.ts":[4913,4913],"./LazyLoad/EmblaCarousel.js":[7703,7703],"./LazyLoad/EmblaCarousel.ts":[6677,6677],"./LazyLoad/EmblaCarouselLazyLoad.js":[9157,9157],"./LazyLoad/EmblaCarouselLazyLoad.ts":[8071,8071],"./Opacity/EmblaCarousel.js":[4776,4776],"./Opacity/EmblaCarousel.ts":[8950,8950],"./Opacity/EmblaCarouselTweenOpacity.js":[5804,5804],"./Opacity/EmblaCarouselTweenOpacity.ts":[6786,6786],"./Parallax/EmblaCarousel.js":[3590,3590],"./Parallax/EmblaCarousel.ts":[2443,4824],"./Parallax/EmblaCarouselTweenParallax.js":[1288,1288],"./Parallax/EmblaCarouselTweenParallax.ts":[3878,3878],"./Progress/EmblaCarousel.js":[6397,8778],"./Progress/EmblaCarousel.ts":[4596,4596],"./Progress/EmblaCarouselProgressBar.js":[4032,4032],"./Progress/EmblaCarouselProgressBar.ts":[334,334],"./Scale/EmblaCarousel.js":[3615,3615],"./Scale/EmblaCarousel.ts":[1485,1485],"./Scale/EmblaCarouselTweenScale.js":[7892,7892],"./Scale/EmblaCarouselTweenScale.ts":[8378,8378],"./Thumbs/EmblaCarousel.js":[8804,8804],"./Thumbs/EmblaCarousel.ts":[9290,9290],"./Thumbs/EmblaCarouselThumbsButton.js":[1797,1797],"./Thumbs/EmblaCarouselThumbsButton.ts":[711,711]};function a(e){if(!r.o(n,e))return Promise.resolve().then((function(){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}));var t=n[e],a=t[0];return r.e(t[1]).then((function(){return r(a)}))}a.keys=function(){return Object.keys(n)},a.id=9382,e.exports=a},1125:function(e,t,r){var n={"./AutoHeight/EmblaCarousel.js":[9361,9361],"./AutoHeight/EmblaCarousel.ts":[6827,6827],"./AutoScroll/EmblaCarousel.js":[7419,7419],"./AutoScroll/EmblaCarousel.ts":[8193,8193],"./Autoplay/EmblaCarousel.js":[6200,6200],"./Autoplay/EmblaCarousel.ts":[374,374],"./CarouselGenerator/EmblaCarousel.js":[6518,6518],"./CarouselGenerator/EmblaCarousel.ts":[6040,6040],"./ClassNames/EmblaCarousel.js":[9105,9105],"./ClassNames/EmblaCarousel.ts":[4987,4987],"./Fade/EmblaCarousel.js":[8939,8939],"./Fade/EmblaCarousel.ts":[6065,6065],"./InfiniteScroll/EmblaCarousel.js":[7340,7340],"./InfiniteScroll/EmblaCarousel.ts":[1618,1618],"./IosPicker/EmblaCarousel.js":[7238,7238],"./IosPicker/EmblaCarousel.ts":[4824,2443],"./LazyLoad/EmblaCarousel.js":[7703,7703],"./LazyLoad/EmblaCarousel.ts":[6677,6677],"./Opacity/EmblaCarousel.js":[4776,4776],"./Opacity/EmblaCarousel.ts":[8950,8950],"./Parallax/EmblaCarousel.js":[3590,3590],"./Parallax/EmblaCarousel.ts":[2443,4824],"./Progress/EmblaCarousel.js":[6397,8778],"./Progress/EmblaCarousel.ts":[4596,4596],"./Scale/EmblaCarousel.js":[3615,3615],"./Scale/EmblaCarousel.ts":[1485,1485],"./Thumbs/EmblaCarousel.js":[8804,8804],"./Thumbs/EmblaCarousel.ts":[9290,9290]};function a(e){if(!r.o(n,e))return Promise.resolve().then((function(){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}));var t=n[e],a=t[0];return r.e(t[1]).then((function(){return r(a)}))}a.keys=function(){return Object.keys(n)},a.id=1125,e.exports=a}}]); -//# sourceMappingURL=95da5ec31316267b433b7b2e2bbaca0a1c0b9c0a-73bd739840db7bc033bd.js.map \ No newline at end of file diff --git a/docs/95da5ec31316267b433b7b2e2bbaca0a1c0b9c0a-73bd739840db7bc033bd.js.map b/docs/95da5ec31316267b433b7b2e2bbaca0a1c0b9c0a-73bd739840db7bc033bd.js.map deleted file mode 100644 index 398249f5..00000000 --- a/docs/95da5ec31316267b433b7b2e2bbaca0a1c0b9c0a-73bd739840db7bc033bd.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"95da5ec31316267b433b7b2e2bbaca0a1c0b9c0a-73bd739840db7bc033bd.js","mappings":"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GAA+BrD,IAItB+D,EAA+BA,CAC1Cf,EACAC,EACAC,IAEOH,EACLC,EACAC,EACAC,GACAG,EAAAA,EAAAA,GAA+BjD,EAAqByB,IAI3CmC,EAAiCA,CAC5ChB,EACAC,EACAC,IAEOH,EACLC,EACAC,EACAC,GACAG,EAAAA,EAAAA,GACEjD,EACAO,EACAE,EACAoB,IAKOgC,EAAiCA,CAC5CjB,EACAC,EACAC,IAEOH,EACLC,EACAC,EACAC,GACAG,EAAAA,EAAAA,GACE5C,EACAE,EACAE,EACAQ,EACAc,IAKO+B,EAA8BA,CACzClB,EACAC,EACAC,IAEOH,EACLC,EACAC,EACAC,GACAG,EAAAA,EAAAA,GACEjD,EACAO,EACAE,EACAQ,EACAe,IAKO+B,EAAgCA,CAC3CnB,EACAC,EACAC,IAEOH,EACLC,EACAC,EACAC,GACAG,EAAAA,EAAAA,GACE5C,EACAE,EACAE,EACAQ,IAKO+C,EAAiCA,CAC5CpB,EACAC,EACAC,IAEOH,EACLC,EACAC,EACAC,GACAG,EAAAA,EAAAA,GACEjD,EACAO,EACAE,EACAW,EACAS,EACAD,IAKOqC,EAAmCA,CAC9CrB,EACAC,EACAC,IAEOH,EACLC,EACAC,EACAC,GACAG,EAAAA,EAAAA,GACEjD,EACAO,EACAE,EACAQ,EACAoB,IAKO6B,GAAmCA,CAC9CtB,EACAC,EACAC,IAEOH,EACLC,EACAC,EACAC,GACAG,EAAAA,EAAAA,GACE5C,EACAE,EACAE,EACAQ,EACAqB,IAKO6B,GAA6BA,CACxCvB,EACAC,EACAC,IAEOH,EACLC,EACAC,EACAC,GACAG,EAAAA,EAAAA,GACE5C,EACAE,EACAE,EACAQ,EACAsB,IAKO6B,GAAiCA,CAC5CxB,EACAC,EACAC,IAEOH,EACLC,EACAC,EACAC,GACAG,EAAAA,EAAAA,GACE5C,EACAE,EACAE,EACAQ,EACAgB,IAKOoC,GAAuCA,CAClDzB,EACAC,EACAC,IAEOH,EACLC,EACAC,EACAC,GACAG,EAAAA,EAAAA,GACEjD,EACAO,EACAE,EACAS,EACAsB,IAKO8B,GAAkCA,KACtCrB,EAAAA,E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OF,EAAoBv3B,EAC5B,GACD,CACAq3B,EAAoB1oB,KAAO,WAAa,OAAO/W,OAAO+W,KAAKtO,EAAM,EACjEg3B,EAAoBr3B,GAAK,KACzBvH,EAAOX,QAAUu/B,C,uBC9QjB,IAAIh3B,EAAM,CACT,gCAAiC,CAChC,KACA,MAED,gCAAiC,CAChC,KACA,MAED,gCAAiC,CAChC,KACA,MAED,gCAAiC,CAChC,KACA,MAED,0CAA2C,CAC1C,KACA,MAED,0CAA2C,CAC1C,KACA,MAED,8BAA+B,CAC9B,KACA,MAED,8BAA+B,CAC9B,IACA,KAED,sCAAuC,CACtC,KACA,MAED,sCAAuC,CACtC,KACA,MAED,8CAA+C,CAC9C,KACA,MAED,8CAA+C,CAC9C,KACA,MAED,uCAAwC,CACvC,KACA,MAED,uCAAwC,CACvC,KACA,MAED,mDAAoD,CACnD,KACA,MAED,mDAAoD,CACnD,KACA,MAED,gDAAiD,CAChD,GACA,IAED,gDAAiD,CAChD,KACA,MAED,0DAA2D,CAC1D,KACA,MAED,0DAA2D,CAC1D,KACA,MAED,0CAA2C,CAC1C,KACA,MAED,iCAAkC,CACjC,KACA,MAED,gCAAiC,CAChC,KACA,MAED,gCAAiC,CAChC,KACA,MAED,0BAA2B,CAC1B,KACA,MAED,0BAA2B,CAC1B,KACA,MAED,oCAAqC,CACpC,KACA,MAED,oCAAqC,CACpC,KACA,MAED,kDAAmD,CAClD,KACA,MAED,kDAAmD,CAClD,KACA,KAED,+BAAgC,CAC/B,KACA,MAED,+BAAgC,CAC/B,KACA,MAED,wCAAyC,CACxC,KACA,MAED,wCAAyC,CACxC,KACA,MAED,8BAA+B,CAC9B,KACA,MAED,8BAA+B,CAC9B,KACA,MAED,sCAAuC,CACtC,KACA,MAED,sCAAuC,CACtC,KACA,MAED,6BAA8B,CAC7B,KACA,MAED,6BAA8B,CAC7B,KACA,MAED,yCAA0C,CACzC,KACA,MAED,yCAA0C,CACzC,KACA,MAED,8BAA+B,CAC9B,KACA,MAED,8BAA+B,CAC9B,KACA,MAED,2CAA4C,CAC3C,KACA,MAED,2CAA4C,CAC3C,KACA,MAED,8BAA+B,CAC9B,KACA,MAED,8BAA+B,CAC9B,KACA,MAED,yCAA0C,CACzC,KACA,MAED,yCAA0C,CACzC,IACA,KAED,2BAA4B,CAC3B,KACA,MAED,2BAA4B,CAC3B,KACA,MAED,qCAAsC,CACrC,KACA,MAED,qCAAsC,CACrC,KACA,MAED,4BAA6B,CAC5B,KACA,MAED,4BAA6B,CAC5B,KACA,MAED,wCAAyC,CACxC,KACA,MAED,wCAAyC,CACxC,IACA,MAGF,SAASg3B,EAAoBC,GAC5B,IAAIC,EAAoBC,EAAEn3B,EAAKi3B,GAC9B,OAAOzvB,QAAQkD,UAAU0sB,MAAK,WAC7B,IAAIxH,EAAI,IAAIyH,MAAM,uBAAyBJ,EAAM,KAEjD,MADArH,EAAEjO,KAAO,mBACHiO,CACP,IAGD,IAAI0H,EAAMt3B,EAAIi3B,GAAMt3B,EAAK23B,EAAI,GAC7B,OAAOJ,EAAoBtH,EAAE0H,EAAI,IAAIF,MAAK,WACzC,OAAOF,EAAoBv3B,EAC5B,GACD,CACAq3B,EAAoB1oB,KAAO,WAAa,OAAO/W,OAAO+W,KAAKtO,EAAM,EACjEg3B,EAAoBr3B,GAAK,KACzBvH,EAAOX,QAAUu/B,C,uBC1PjB,IAAIh3B,EAAM,CACT,gCAAiC,CAChC,KACA,MAED,gCAAiC,CAChC,KACA,MAED,gCAAiC,CAChC,KACA,MAED,gCAAiC,CAChC,KACA,MAED,8BAA+B,CAC9B,KACA,MAED,8BAA+B,CAC9B,IACA,KAED,uCAAwC,CACvC,KACA,MAED,uCAAwC,CACvC,KACA,MAED,gCAAiC,CAChC,KACA,MAED,gCAAiC,CAChC,KACA,MAED,0BAA2B,CAC1B,KACA,MAED,0BAA2B,CAC1B,KACA,MAED,oCAAqC,CACpC,KACA,MAED,oCAAqC,CACpC,KACA,MAED,+BAAgC,CAC/B,KACA,MAED,+BAAgC,CAC/B,KACA,MAED,8BAA+B,CAC9B,KACA,MAED,8BAA+B,CAC9B,KACA,MAED,6BAA8B,CAC7B,KACA,MAED,6BAA8B,CAC7B,KACA,MAED,8BAA+B,CAC9B,KACA,MAED,8BAA+B,CAC9B,KACA,MAED,8BAA+B,CAC9B,KACA,MAED,8BAA+B,CAC9B,KACA,MAED,2BAA4B,CAC3B,KACA,MAED,2BAA4B,CAC3B,KACA,MAED,4BAA6B,CAC5B,KACA,MAED,4BAA6B,CAC5B,KACA,OAGF,SAASg3B,EAAoBC,GAC5B,IAAIC,EAAoBC,EAAEn3B,EAAKi3B,GAC9B,OAAOzvB,QAAQkD,UAAU0sB,MAAK,WAC7B,IAAIxH,EAAI,IAAIyH,MAAM,uBAAyBJ,EAAM,KAEjD,MADArH,EAAEjO,KAAO,mBACHiO,CACP,IAGD,IAAI0H,EAAMt3B,EAAIi3B,GAAMt3B,EAAK23B,EAAI,GAC7B,OAAOJ,EAAoBtH,EAAE0H,EAAI,IAAIF,MAAK,WACzC,OAAOF,EAAoBv3B,EAC5B,GACD,CACAq3B,EAAoB1oB,KAAO,WAAa,OAAO/W,OAAO+W,KAAKtO,EAAM,EACjEg3B,EAAoBr3B,GAAK,KACzBvH,EAAOX,QAAUu/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/ScrollTo.ts","webpack://embla-carousel-docs/../src/components/SlideFocus.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/ScrollProgress.ts","webpack://embla-carousel-docs/../src/components/SlideRegistry.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/ ^\\.\\/.*\\/.*\\..*$ namespace object","webpack://embla-carousel-docs/ ^\\.\\/.*\\/EmblaCarousel\\..*$ 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?d4f9","webpack://embla-carousel-docs/ ^\\.\\/.*\\/.*\\..*$ namespace object?9216","webpack://embla-carousel-docs/ ^\\.\\/.*\\/EmblaCarousel\\..*$ namespace object?baf3"],"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 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 transform: translate3d(0, 0, 0);\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 user-select: none;\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 AUTOPLAY_STYLES = css`\n .embla__controls {\n grid-template-columns: auto 1fr auto;\n }\n\n .embla__progress {\n justify-self: center;\n transition: opacity 0.3s ease-in-out;\n width: 8rem;\n }\n\n .embla__progress--hidden {\n opacity: 0;\n }\n\n .embla__progress__bar {\n animation-name: autoplay-progress;\n animation-timing-function: linear;\n animation-iteration-count: 1;\n }\n\n .embla__progress--hidden .embla__progress__bar {\n animation-play-state: paused;\n }\n\n @keyframes autoplay-progress {\n 0% {\n transform: translate3d(0, 0, 0);\n }\n 100% {\n transform: translate3d(100%, 0, 0);\n }\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 PROGRESS_STYLES,\n AUTOPLAY_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 { WindowType } from './utils'\n\nexport type AnimationsUpdateType = (engine: EngineType) => void\nexport type AnimationsRenderType = (\n engine: EngineType,\n accumulatedTimeOffset: number\n) => void\n\nexport type AnimationsType = {\n init: () => void\n destroy: () => void\n start: () => void\n stop: () => void\n update: () => void\n render: (accumulatedTimeOffset: number) => void\n}\n\nexport function Animations(\n ownerDocument: Document,\n ownerWindow: WindowType,\n update: () => void,\n render: (accumulatedTimeOffset: number) => void\n): AnimationsType {\n const documentVisibleHandler = EventStore()\n const fixedTimeStep = 1000 / 60\n let lastTimeStamp: number | null = null\n let accumulatedTime = 0\n let animationId = 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 (!animationId) return\n if (!lastTimeStamp) lastTimeStamp = timeStamp\n\n const timeElapsed = timeStamp - lastTimeStamp\n lastTimeStamp = timeStamp\n accumulatedTime += timeElapsed\n\n while (accumulatedTime >= fixedTimeStep) {\n update()\n accumulatedTime -= fixedTimeStep\n }\n\n const alpha = accumulatedTime / fixedTimeStep\n render(alpha)\n\n if (animationId) {\n animationId = ownerWindow.requestAnimationFrame(animate)\n }\n }\n\n function start(): void {\n if (animationId) return\n\n animationId = ownerWindow.requestAnimationFrame(animate)\n }\n\n function stop(): void {\n ownerWindow.cancelAnimationFrame(animationId)\n lastTimeStamp = null\n accumulatedTime = 0\n animationId = 0\n }\n\n function reset(): void {\n lastTimeStamp = null\n accumulatedTime = 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 const observeNodes = [container].concat(slides)\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 if (destroyed) return\n\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 emblaApi.reInit()\n eventHandler.emit('resize')\n\n break\n }\n }\n }\n\n resizeObserver = new ResizeObserver((entries) => {\n if (isBoolean(watchResize) || watchResize(emblaApi, entries)) {\n defaultCallback(entries)\n }\n })\n\n ownerWindow.requestAnimationFrame(() => {\n observeNodes.forEach((node) => resizeObserver.observe(node))\n })\n }\n\n function destroy(): void {\n destroyed = true\n if (resizeObserver) resizeObserver.disconnect()\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 location: 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(location.get())) return false\n return true\n }\n\n function constrain(pointerDown: boolean): void {\n if (!shouldConstrain()) return\n const edge = limit.reachedMin(location.get()) ? 'min' : 'max'\n const diffToEdge = mathAbs(limit[edge] - location.get())\n const diffToTarget = target.get() - location.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 location: 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(location.get())\n if (direction === -1) return reachedMin(location.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 { 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 { EmblaCarouselType } from './EmblaCarousel'\nimport { EventHandlerType } from './EventHandler'\nimport { EventStoreType } from './EventStore'\nimport { ScrollBodyType } from './ScrollBody'\nimport { ScrollToType } from './ScrollTo'\nimport { SlideRegistryType } from './SlideRegistry'\nimport { isBoolean, isNumber } from './utils'\n\ntype FocusHandlerCallbackType = (\n emblaApi: EmblaCarouselType,\n evt: FocusEvent\n) => boolean | void\n\nexport type FocusHandlerOptionType = boolean | FocusHandlerCallbackType\n\nexport type SlideFocusType = {\n init: (emblaApi: EmblaCarouselType) => 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 watchFocus: FocusHandlerOptionType\n): SlideFocusType {\n const focusListenerOptions = { passive: true, capture: true }\n let lastTabPressTime = 0\n\n function init(emblaApi: EmblaCarouselType): void {\n if (!watchFocus) return\n\n function defaultCallback(index: number): void {\n const nowTime = new Date().getTime()\n const diffTime = nowTime - lastTabPressTime\n\n if (diffTime > 10) return\n\n eventHandler.emit('slideFocusStart')\n root.scrollLeft = 0\n\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\n eventHandler.emit('slideFocus')\n }\n\n eventStore.add(document, 'keydown', registerTabPress, false)\n\n slides.forEach((slide, slideIndex) => {\n eventStore.add(\n slide,\n 'focus',\n (evt: FocusEvent) => {\n if (isBoolean(watchFocus) || watchFocus(emblaApi, evt)) {\n defaultCallback(slideIndex)\n }\n },\n focusListenerOptions\n )\n })\n }\n\n function registerTabPress(event: KeyboardEvent): void {\n if (event.code === 'Tab') lastTabPressTime = new Date().getTime()\n }\n\n const self: SlideFocusType = {\n init\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'\nimport { roundToTwoDecimals } from './utils'\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 previousTarget: number | null = null\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\n const newTarget = roundToTwoDecimals(axis.direction(target))\n if (newTarget === previousTarget) return\n\n containerStyle.transform = translate(newTarget)\n previousTarget = newTarget\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 location: 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: () => (location.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 previousLocation: 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 watchFocus\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 previousLocation,\n scrollLooper,\n slideLooper,\n dragHandler,\n animation,\n eventHandler,\n scrollBounds,\n options: { loop }\n },\n alpha\n ) => {\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 const interpolatedLocation =\n location.get() * alpha + previousLocation.get() * (1 - alpha)\n\n offsetLocation.set(interpolatedLocation)\n\n if (loop) {\n scrollLooper.loop(scrollBody.direction())\n slideLooper.loop()\n }\n\n translate.to(offsetLocation.get())\n }\n\n const animation = Animations(\n ownerDocument,\n ownerWindow,\n () => update(engine),\n (alpha: number) => render(engine, alpha)\n )\n\n // Shared\n const friction = 0.68\n const startLocation = scrollSnaps[index.get()]\n const location = Vector1D(startLocation)\n const previousLocation = Vector1D(startLocation)\n const offsetLocation = Vector1D(startLocation)\n const target = Vector1D(startLocation)\n const scrollBody = ScrollBody(\n location,\n offsetLocation,\n previousLocation,\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 watchFocus\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 previousLocation,\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 previousLocation,\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 previousLocation: Vector1DType,\n target: Vector1DType,\n baseDuration: number,\n baseFriction: number\n): ScrollBodyType {\n let scrollVelocity = 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 displacement = target.get() - location.get()\n const isInstant = !scrollDuration\n let scrollDistance = 0\n\n if (isInstant) {\n scrollVelocity = 0\n previousLocation.set(target)\n location.set(target)\n\n scrollDistance = displacement\n } else {\n previousLocation.set(location)\n\n scrollVelocity += displacement / scrollDuration\n scrollVelocity *= scrollFriction\n rawLocation += scrollVelocity\n location.add(scrollVelocity)\n\n scrollDistance = rawLocation - rawLocationPrevious\n }\n\n scrollDirection = mathSign(scrollDistance)\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 scrollVelocity\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 { 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 { 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'\nimport { FocusHandlerOptionType } from './SlideFocus'\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 watchFocus: FocusHandlerOptionType\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 watchFocus: 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(self)\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 slideFocusStart: 'slideFocusStart'\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\nexport type 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 (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 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 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.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.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.jsx\": [\n\t\t6652,\n\t\t6652\n\t],\n\t\"./Autoplay/EmblaCarousel.tsx\": [\n\t\t6158,\n\t\t6158\n\t],\n\t\"./Autoplay/EmblaCarouselAutoplay.jsx\": [\n\t\t6651,\n\t\t6651\n\t],\n\t\"./Autoplay/EmblaCarouselAutoplay.tsx\": [\n\t\t4265,\n\t\t4265\n\t],\n\t\"./Autoplay/EmblaCarouselAutoplayProgress.jsx\": [\n\t\t5350,\n\t\t5350\n\t],\n\t\"./Autoplay/EmblaCarouselAutoplayProgress.tsx\": [\n\t\t6676,\n\t\t6676\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.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.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.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.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.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.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.jsx\": [\n\t\t1920,\n\t\t1920\n\t],\n\t\"./EmblaCarouselArrowButtons.tsx\": [\n\t\t6458,\n\t\t6458\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.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.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.jsx\": [\n\t\t8728,\n\t\t8728\n\t],\n\t\"./Footer.tsx\": [\n\t\t9474,\n\t\t9474\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.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.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.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.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.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.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.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.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.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.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.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 = 8861;\nmodule.exports = webpackAsyncContext;","var map = {\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.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.jsx\": [\n\t\t6652,\n\t\t6652\n\t],\n\t\"./Autoplay/EmblaCarousel.tsx\": [\n\t\t6158,\n\t\t6158\n\t],\n\t\"./Autoplay/EmblaCarouselAutoplay.jsx\": [\n\t\t6651,\n\t\t6651\n\t],\n\t\"./Autoplay/EmblaCarouselAutoplay.tsx\": [\n\t\t4265,\n\t\t4265\n\t],\n\t\"./Autoplay/EmblaCarouselAutoplayProgress.jsx\": [\n\t\t5350,\n\t\t5350\n\t],\n\t\"./Autoplay/EmblaCarouselAutoplayProgress.tsx\": [\n\t\t6676,\n\t\t6676\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.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.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.jsx\": [\n\t\t6807,\n\t\t6807\n\t],\n\t\"./CarouselGenerator/EmblaCarouselSelectedSnapDisplay.tsx\": [\n\t\t9421,\n\t\t9421\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\"./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\"./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.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.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.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.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.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.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.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.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.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.jsx\": [\n\t\t2875,\n\t\t2875\n\t],\n\t\"./Thumbs/EmblaCarouselThumbsButton.tsx\": [\n\t\t6841,\n\t\t6841\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 = 4142;\nmodule.exports = webpackAsyncContext;","var map = {\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.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.jsx\": [\n\t\t6652,\n\t\t6652\n\t],\n\t\"./Autoplay/EmblaCarousel.tsx\": [\n\t\t6158,\n\t\t6158\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\"./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\"./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\"./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.jsx\": [\n\t\t6958,\n\t\t6958\n\t],\n\t\"./IosPicker/EmblaCarousel.tsx\": [\n\t\t1852,\n\t\t1852\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\"./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.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.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.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.jsx\": [\n\t\t72,\n\t\t72\n\t],\n\t\"./Thumbs/EmblaCarousel.tsx\": [\n\t\t9122,\n\t\t9122\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 = 8141;\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.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.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.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.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.js\": [\n\t\t3325,\n\t\t3325\n\t],\n\t\"./Autoplay/EmblaCarouselAutoplay.ts\": [\n\t\t5743,\n\t\t5743\n\t],\n\t\"./Autoplay/EmblaCarouselAutoplayProgress.js\": [\n\t\t2350,\n\t\t2350\n\t],\n\t\"./Autoplay/EmblaCarouselAutoplayProgress.ts\": [\n\t\t7632,\n\t\t7632\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.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.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.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.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.js\": [\n\t\t3676,\n\t\t3676\n\t],\n\t\"./EmblaCarouselArrowButtons.ts\": [\n\t\t1650,\n\t\t1650\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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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 = 3765;\nmodule.exports = webpackAsyncContext;","var map = {\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.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.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.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.js\": [\n\t\t3325,\n\t\t3325\n\t],\n\t\"./Autoplay/EmblaCarouselAutoplay.ts\": [\n\t\t5743,\n\t\t5743\n\t],\n\t\"./Autoplay/EmblaCarouselAutoplayProgress.js\": [\n\t\t2350,\n\t\t2350\n\t],\n\t\"./Autoplay/EmblaCarouselAutoplayProgress.ts\": [\n\t\t7632,\n\t\t7632\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.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.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.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.js\": [\n\t\t9105,\n\t\t9105\n\t],\n\t\"./ClassNames/EmblaCarousel.ts\": [\n\t\t4987,\n\t\t4987\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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.js\": [\n\t\t1797,\n\t\t1797\n\t],\n\t\"./Thumbs/EmblaCarouselThumbsButton.ts\": [\n\t\t711,\n\t\t711\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 = 9382;\nmodule.exports = webpackAsyncContext;","var map = {\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.js\": [\n\t\t7419,\n\t\t7419\n\t],\n\t\"./AutoScroll/EmblaCarousel.ts\": [\n\t\t8193,\n\t\t8193\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\"./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\"./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\"./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.js\": [\n\t\t7340,\n\t\t7340\n\t],\n\t\"./InfiniteScroll/EmblaCarousel.ts\": [\n\t\t1618,\n\t\t1618\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\"./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\"./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\"./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\"./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\"./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\"./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};\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 = 1125;\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","AUTOPLAY_STYLES","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","fixedTimeStep","lastTimeStamp","accumulatedTime","animationId","animate","timeStamp","timeElapsed","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","observeNodes","resizeObserver","containerSize","slideSizes","destroyed","readSize","measureSize","ResizeObserver","entries","entry","isContainer","slideIndex","indexOf","lastSize","reInit","defaultCallback","observe","disconnect","ScrollBounds","limit","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","SlideFocus","root","slideRegistry","eventStore","watchFocus","focusListenerOptions","capture","lastTabPressTime","registerTabPress","event","code","Date","getTime","slide","scrollLeft","group","findIndex","Vector1D","initialValue","normalizeInput","Translate","translate","containerStyle","style","previousTarget","transform","getAttribute","removeAttribute","newTarget","num","round","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","parentElement","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","alpha","_ref3","offsetLocation","previousLocation","scrollLooper","slideLooper","shouldSettle","settled","withinBounds","hasSettled","interpolatedLocation","startLocation","baseDuration","scrollVelocity","scrollDirection","scrollDuration","scrollFriction","rawLocation","rawLocationPrevious","velocity","displacement","scrollDistance","useBaseDuration","ScrollBody","indexCurrent","distanceDiff","indexDiff","targetIndex","ScrollTo","scrollProgress","ScrollProgress","slidesInView","groupedSlideIndexes","doNotContain","createSlideRegistry","SlideRegistry","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","pluginsA","pluginsB","optionA","arePluginsEqual","window","createElement","newEmblaApi","undefined","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 f5f0dfe1..08f8527c 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 15a2294b..012c4804 100644 --- a/docs/api/events/index.html +++ b/docs/api/events/index.html @@ -596,6 +596,6 @@

- window.___chunkMapping="{\"app\":[\"/app-c91f697334524453e2e7.js\"],\"component---src-templates-404-tsx-content-file-path-src-content-pages-404-md\":[\"/component---src-templates-404-tsx-content-file-path-src-content-pages-404-md-d075a5176048fe2bf5a7.js\"],\"component---src-templates-default-tsx-content-file-path-src-content-pages-api-events-mdx\":[\"/component---src-templates-default-tsx-content-file-path-src-content-pages-api-events-mdx-30463c48f98c5c8c9599.js\"],\"component---src-templates-default-tsx-content-file-path-src-content-pages-api-index-mdx\":[\"/component---src-templates-default-tsx-content-file-path-src-content-pages-api-index-mdx-976d158708f5577a3510.js\"],\"component---src-templates-default-tsx-content-file-path-src-content-pages-api-methods-mdx\":[\"/component---src-templates-default-tsx-content-file-path-src-content-pages-api-methods-mdx-a752f7a61304b39771dd.js\"],\"component---src-templates-default-tsx-content-file-path-src-content-pages-api-options-mdx\":[\"/component---src-templates-default-tsx-content-file-path-src-content-pages-api-options-mdx-80d2e1dc2e8f244b3d6a.js\"],\"component---src-templates-default-tsx-content-file-path-src-content-pages-api-plugins-mdx\":[\"/component---src-templates-default-tsx-content-file-path-src-content-pages-api-plugins-mdx-e514241f9c6eca756891.js\"],\"component---src-templates-default-tsx-content-file-path-src-content-pages-examples-index-mdx\":[\"/component---src-templates-default-tsx-content-file-path-src-content-pages-examples-index-mdx-06f0ea6d9148840d009f.js\"],\"component---src-templates-default-tsx-content-file-path-src-content-pages-examples-predefined-mdx\":[\"/component---src-templates-default-tsx-content-file-path-src-content-pages-examples-predefined-mdx-ec9dce04ae7b9f123a54.js\"],\"component---src-templates-default-tsx-content-file-path-src-content-pages-get-started-cdn-mdx\":[\"/component---src-templates-default-tsx-content-file-path-src-content-pages-get-started-cdn-mdx-80540590adeb408bcfe2.js\"],\"component---src-templates-default-tsx-content-file-path-src-content-pages-get-started-index-mdx\":[\"/component---src-templates-default-tsx-content-file-path-src-content-pages-get-started-index-mdx-11d5b4b88f3178d7cfe7.js\"],\"component---src-templates-default-tsx-content-file-path-src-content-pages-get-started-module-mdx\":[\"/component---src-templates-default-tsx-content-file-path-src-content-pages-get-started-module-mdx-98c3966425dc6c8dd94a.js\"],\"component---src-templates-default-tsx-content-file-path-src-content-pages-get-started-react-mdx\":[\"/component---src-templates-default-tsx-content-file-path-src-content-pages-get-started-react-mdx-fd8a7988f080037f7746.js\"],\"component---src-templates-default-tsx-content-file-path-src-content-pages-get-started-solid-mdx\":[\"/component---src-templates-default-tsx-content-file-path-src-content-pages-get-started-solid-mdx-2aa84c64f58c366becd2.js\"],\"component---src-templates-default-tsx-content-file-path-src-content-pages-get-started-svelte-mdx\":[\"/component---src-templates-default-tsx-content-file-path-src-content-pages-get-started-svelte-mdx-a6a6bf587e5bfc515e50.js\"],\"component---src-templates-default-tsx-content-file-path-src-content-pages-get-started-vue-mdx\":[\"/component---src-templates-default-tsx-content-file-path-src-content-pages-get-started-vue-mdx-abe08626b87df02a9c82.js\"],\"component---src-templates-default-tsx-content-file-path-src-content-pages-guides-breakpoints-md\":[\"/component---src-templates-default-tsx-content-file-path-src-content-pages-guides-breakpoints-md-53ccac1d516cc4de92f2.js\"],\"component---src-templates-default-tsx-content-file-path-src-content-pages-guides-index-mdx\":[\"/component---src-templates-default-tsx-content-file-path-src-content-pages-guides-index-mdx-1eef666abdd00ae4156b.js\"],\"component---src-templates-default-tsx-content-file-path-src-content-pages-guides-previous-and-next-buttons-md\":[\"/component---src-templates-default-tsx-content-file-path-src-content-pages-guides-previous-and-next-buttons-md-17e957406cb565dd97ae.js\"],\"component---src-templates-default-tsx-content-file-path-src-content-pages-guides-slide-container-md\":[\"/component---src-templates-default-tsx-content-file-path-src-content-pages-guides-slide-container-md-d724ea35f45c807cb28f.js\"],\"component---src-templates-default-tsx-content-file-path-src-content-pages-guides-slide-gaps-md\":[\"/component---src-templates-default-tsx-content-file-path-src-content-pages-guides-slide-gaps-md-589e9407481f196b00fd.js\"],\"component---src-templates-default-tsx-content-file-path-src-content-pages-guides-slide-sizes-md\":[\"/component---src-templates-default-tsx-content-file-path-src-content-pages-guides-slide-sizes-md-b1a722b4488dfeccc8a4.js\"],\"component---src-templates-default-tsx-content-file-path-src-content-pages-plugins-auto-height-mdx\":[\"/component---src-templates-default-tsx-content-file-path-src-content-pages-plugins-auto-height-mdx-f83d13bbe5cdff942b9c.js\"],\"component---src-templates-default-tsx-content-file-path-src-content-pages-plugins-auto-scroll-mdx\":[\"/component---src-templates-default-tsx-content-file-path-src-content-pages-plugins-auto-scroll-mdx-7ef83f31b095fe4d4279.js\"],\"component---src-templates-default-tsx-content-file-path-src-content-pages-plugins-autoplay-mdx\":[\"/component---src-templates-default-tsx-content-file-path-src-content-pages-plugins-autoplay-mdx-059b08521b2e6af88737.js\"],\"component---src-templates-default-tsx-content-file-path-src-content-pages-plugins-class-names-mdx\":[\"/component---src-templates-default-tsx-content-file-path-src-content-pages-plugins-class-names-mdx-19eaecf3150aa35c6f5a.js\"],\"component---src-templates-default-tsx-content-file-path-src-content-pages-plugins-fade-mdx\":[\"/component---src-templates-default-tsx-content-file-path-src-content-pages-plugins-fade-mdx-4b14c02f477ed0d48cbc.js\"],\"component---src-templates-default-tsx-content-file-path-src-content-pages-plugins-index-mdx\":[\"/component---src-templates-default-tsx-content-file-path-src-content-pages-plugins-index-mdx-b4a2cee573f7407eb76a.js\"],\"component---src-templates-default-tsx-content-file-path-src-content-pages-plugins-wheel-gestures-mdx\":[\"/component---src-templates-default-tsx-content-file-path-src-content-pages-plugins-wheel-gestures-mdx-f03f088a14c47d7110be.js\"],\"component---src-templates-generator-tsx-content-file-path-src-content-pages-examples-generator-mdx\":[\"/component---src-templates-generator-tsx-content-file-path-src-content-pages-examples-generator-mdx-0a34bca29e8d591166dc.js\"],\"component---src-templates-home-tsx-content-file-path-src-content-pages-index-md\":[\"/component---src-templates-home-tsx-content-file-path-src-content-pages-index-md-96e9f9e19407e1639d2f.js\"]}"; + window.___chunkMapping="{\"app\":[\"/app-3bce4d91acb1509fefa4.js\"],\"component---src-templates-404-tsx-content-file-path-src-content-pages-404-md\":[\"/component---src-templates-404-tsx-content-file-path-src-content-pages-404-md-d075a5176048fe2bf5a7.js\"],\"component---src-templates-default-tsx-content-file-path-src-content-pages-api-events-mdx\":[\"/component---src-templates-default-tsx-content-file-path-src-content-pages-api-events-mdx-30463c48f98c5c8c9599.js\"],\"component---src-templates-default-tsx-content-file-path-src-content-pages-api-index-mdx\":[\"/component---src-templates-default-tsx-content-file-path-src-content-pages-api-index-mdx-976d158708f5577a3510.js\"],\"component---src-templates-default-tsx-content-file-path-src-content-pages-api-methods-mdx\":[\"/component---src-templates-default-tsx-content-file-path-src-content-pages-api-methods-mdx-a752f7a61304b39771dd.js\"],\"component---src-templates-default-tsx-content-file-path-src-content-pages-api-options-mdx\":[\"/component---src-templates-default-tsx-content-file-path-src-content-pages-api-options-mdx-80d2e1dc2e8f244b3d6a.js\"],\"component---src-templates-default-tsx-content-file-path-src-content-pages-api-plugins-mdx\":[\"/component---src-templates-default-tsx-content-file-path-src-content-pages-api-plugins-mdx-e514241f9c6eca756891.js\"],\"component---src-templates-default-tsx-content-file-path-src-content-pages-examples-index-mdx\":[\"/component---src-templates-default-tsx-content-file-path-src-content-pages-examples-index-mdx-06f0ea6d9148840d009f.js\"],\"component---src-templates-default-tsx-content-file-path-src-content-pages-examples-predefined-mdx\":[\"/component---src-templates-default-tsx-content-file-path-src-content-pages-examples-predefined-mdx-53d707f730425c8df9e3.js\"],\"component---src-templates-default-tsx-content-file-path-src-content-pages-get-started-cdn-mdx\":[\"/component---src-templates-default-tsx-content-file-path-src-content-pages-get-started-cdn-mdx-80540590adeb408bcfe2.js\"],\"component---src-templates-default-tsx-content-file-path-src-content-pages-get-started-index-mdx\":[\"/component---src-templates-default-tsx-content-file-path-src-content-pages-get-started-index-mdx-11d5b4b88f3178d7cfe7.js\"],\"component---src-templates-default-tsx-content-file-path-src-content-pages-get-started-module-mdx\":[\"/component---src-templates-default-tsx-content-file-path-src-content-pages-get-started-module-mdx-98c3966425dc6c8dd94a.js\"],\"component---src-templates-default-tsx-content-file-path-src-content-pages-get-started-react-mdx\":[\"/component---src-templates-default-tsx-content-file-path-src-content-pages-get-started-react-mdx-fd8a7988f080037f7746.js\"],\"component---src-templates-default-tsx-content-file-path-src-content-pages-get-started-solid-mdx\":[\"/component---src-templates-default-tsx-content-file-path-src-content-pages-get-started-solid-mdx-2aa84c64f58c366becd2.js\"],\"component---src-templates-default-tsx-content-file-path-src-content-pages-get-started-svelte-mdx\":[\"/component---src-templates-default-tsx-content-file-path-src-content-pages-get-started-svelte-mdx-a6a6bf587e5bfc515e50.js\"],\"component---src-templates-default-tsx-content-file-path-src-content-pages-get-started-vue-mdx\":[\"/component---src-templates-default-tsx-content-file-path-src-content-pages-get-started-vue-mdx-abe08626b87df02a9c82.js\"],\"component---src-templates-default-tsx-content-file-path-src-content-pages-guides-breakpoints-md\":[\"/component---src-templates-default-tsx-content-file-path-src-content-pages-guides-breakpoints-md-53ccac1d516cc4de92f2.js\"],\"component---src-templates-default-tsx-content-file-path-src-content-pages-guides-index-mdx\":[\"/component---src-templates-default-tsx-content-file-path-src-content-pages-guides-index-mdx-1eef666abdd00ae4156b.js\"],\"component---src-templates-default-tsx-content-file-path-src-content-pages-guides-previous-and-next-buttons-md\":[\"/component---src-templates-default-tsx-content-file-path-src-content-pages-guides-previous-and-next-buttons-md-17e957406cb565dd97ae.js\"],\"component---src-templates-default-tsx-content-file-path-src-content-pages-guides-slide-container-md\":[\"/component---src-templates-default-tsx-content-file-path-src-content-pages-guides-slide-container-md-d724ea35f45c807cb28f.js\"],\"component---src-templates-default-tsx-content-file-path-src-content-pages-guides-slide-gaps-md\":[\"/component---src-templates-default-tsx-content-file-path-src-content-pages-guides-slide-gaps-md-589e9407481f196b00fd.js\"],\"component---src-templates-default-tsx-content-file-path-src-content-pages-guides-slide-sizes-md\":[\"/component---src-templates-default-tsx-content-file-path-src-content-pages-guides-slide-sizes-md-b1a722b4488dfeccc8a4.js\"],\"component---src-templates-default-tsx-content-file-path-src-content-pages-plugins-auto-height-mdx\":[\"/component---src-templates-default-tsx-content-file-path-src-content-pages-plugins-auto-height-mdx-9f49071a8e6829b1f8ab.js\"],\"component---src-templates-default-tsx-content-file-path-src-content-pages-plugins-auto-scroll-mdx\":[\"/component---src-templates-default-tsx-content-file-path-src-content-pages-plugins-auto-scroll-mdx-ef46403bb66cf0c67358.js\"],\"component---src-templates-default-tsx-content-file-path-src-content-pages-plugins-autoplay-mdx\":[\"/component---src-templates-default-tsx-content-file-path-src-content-pages-plugins-autoplay-mdx-304cc914eb72250fdace.js\"],\"component---src-templates-default-tsx-content-file-path-src-content-pages-plugins-class-names-mdx\":[\"/component---src-templates-default-tsx-content-file-path-src-content-pages-plugins-class-names-mdx-5d616985393c59804180.js\"],\"component---src-templates-default-tsx-content-file-path-src-content-pages-plugins-fade-mdx\":[\"/component---src-templates-default-tsx-content-file-path-src-content-pages-plugins-fade-mdx-76778fcdc39a49e9f3f8.js\"],\"component---src-templates-default-tsx-content-file-path-src-content-pages-plugins-index-mdx\":[\"/component---src-templates-default-tsx-content-file-path-src-content-pages-plugins-index-mdx-b4a2cee573f7407eb76a.js\"],\"component---src-templates-default-tsx-content-file-path-src-content-pages-plugins-wheel-gestures-mdx\":[\"/component---src-templates-default-tsx-content-file-path-src-content-pages-plugins-wheel-gestures-mdx-f03f088a14c47d7110be.js\"],\"component---src-templates-generator-tsx-content-file-path-src-content-pages-examples-generator-mdx\":[\"/component---src-templates-generator-tsx-content-file-path-src-content-pages-examples-generator-mdx-0a34bca29e8d591166dc.js\"],\"component---src-templates-home-tsx-content-file-path-src-content-pages-index-md\":[\"/component---src-templates-home-tsx-content-file-path-src-content-pages-index-md-96e9f9e19407e1639d2f.js\"]}"; - \ No newline at end of file + \ No newline at end of file diff --git a/docs/api/index.html b/docs/api/index.html index c5ed8922..c546ca55 100644 --- a/docs/api/index.html +++ b/docs/api/index.html @@ -430,6 +430,6 @@

- window.___chunkMapping="{\"app\":[\"/app-c91f697334524453e2e7.js\"],\"component---src-templates-404-tsx-content-file-path-src-content-pages-404-md\":[\"/component---src-templates-404-tsx-content-file-path-src-content-pages-404-md-d075a5176048fe2bf5a7.js\"],\"component---src-templates-default-tsx-content-file-path-src-content-pages-api-events-mdx\":[\"/component---src-templates-default-tsx-content-file-path-src-content-pages-api-events-mdx-30463c48f98c5c8c9599.js\"],\"component---src-templates-default-tsx-content-file-path-src-content-pages-api-index-mdx\":[\"/component---src-templates-default-tsx-content-file-path-src-content-pages-api-index-mdx-976d158708f5577a3510.js\"],\"component---src-templates-default-tsx-content-file-path-src-content-pages-api-methods-mdx\":[\"/component---src-templates-default-tsx-content-file-path-src-content-pages-api-methods-mdx-a752f7a61304b39771dd.js\"],\"component---src-templates-default-tsx-content-file-path-src-content-pages-api-options-mdx\":[\"/component---src-templates-default-tsx-content-file-path-src-content-pages-api-options-mdx-80d2e1dc2e8f244b3d6a.js\"],\"component---src-templates-default-tsx-content-file-path-src-content-pages-api-plugins-mdx\":[\"/component---src-templates-default-tsx-content-file-path-src-content-pages-api-plugins-mdx-e514241f9c6eca756891.js\"],\"component---src-templates-default-tsx-content-file-path-src-content-pages-examples-index-mdx\":[\"/component---src-templates-default-tsx-content-file-path-src-content-pages-examples-index-mdx-06f0ea6d9148840d009f.js\"],\"component---src-templates-default-tsx-content-file-path-src-content-pages-examples-predefined-mdx\":[\"/component---src-templates-default-tsx-content-file-path-src-content-pages-examples-predefined-mdx-ec9dce04ae7b9f123a54.js\"],\"component---src-templates-default-tsx-content-file-path-src-content-pages-get-started-cdn-mdx\":[\"/component---src-templates-default-tsx-content-file-path-src-content-pages-get-started-cdn-mdx-80540590adeb408bcfe2.js\"],\"component---src-templates-default-tsx-content-file-path-src-content-pages-get-started-index-mdx\":[\"/component---src-templates-default-tsx-content-file-path-src-content-pages-get-started-index-mdx-11d5b4b88f3178d7cfe7.js\"],\"component---src-templates-default-tsx-content-file-path-src-content-pages-get-started-module-mdx\":[\"/component---src-templates-default-tsx-content-file-path-src-content-pages-get-started-module-mdx-98c3966425dc6c8dd94a.js\"],\"component---src-templates-default-tsx-content-file-path-src-content-pages-get-started-react-mdx\":[\"/component---src-templates-default-tsx-content-file-path-src-content-pages-get-started-react-mdx-fd8a7988f080037f7746.js\"],\"component---src-templates-default-tsx-content-file-path-src-content-pages-get-started-solid-mdx\":[\"/component---src-templates-default-tsx-content-file-path-src-content-pages-get-started-solid-mdx-2aa84c64f58c366becd2.js\"],\"component---src-templates-default-tsx-content-file-path-src-content-pages-get-started-svelte-mdx\":[\"/component---src-templates-default-tsx-content-file-path-src-content-pages-get-started-svelte-mdx-a6a6bf587e5bfc515e50.js\"],\"component---src-templates-default-tsx-content-file-path-src-content-pages-get-started-vue-mdx\":[\"/component---src-templates-default-tsx-content-file-path-src-content-pages-get-started-vue-mdx-abe08626b87df02a9c82.js\"],\"component---src-templates-default-tsx-content-file-path-src-content-pages-guides-breakpoints-md\":[\"/component---src-templates-default-tsx-content-file-path-src-content-pages-guides-breakpoints-md-53ccac1d516cc4de92f2.js\"],\"component---src-templates-default-tsx-content-file-path-src-content-pages-guides-index-mdx\":[\"/component---src-templates-default-tsx-content-file-path-src-content-pages-guides-index-mdx-1eef666abdd00ae4156b.js\"],\"component---src-templates-default-tsx-content-file-path-src-content-pages-guides-previous-and-next-buttons-md\":[\"/component---src-templates-default-tsx-content-file-path-src-content-pages-guides-previous-and-next-buttons-md-17e957406cb565dd97ae.js\"],\"component---src-templates-default-tsx-content-file-path-src-content-pages-guides-slide-container-md\":[\"/component---src-templates-default-tsx-content-file-path-src-content-pages-guides-slide-container-md-d724ea35f45c807cb28f.js\"],\"component---src-templates-default-tsx-content-file-path-src-content-pages-guides-slide-gaps-md\":[\"/component---src-templates-default-tsx-content-file-path-src-content-pages-guides-slide-gaps-md-589e9407481f196b00fd.js\"],\"component---src-templates-default-tsx-content-file-path-src-content-pages-guides-slide-sizes-md\":[\"/component---src-templates-default-tsx-content-file-path-src-content-pages-guides-slide-sizes-md-b1a722b4488dfeccc8a4.js\"],\"component---src-templates-default-tsx-content-file-path-src-content-pages-plugins-auto-height-mdx\":[\"/component---src-templates-default-tsx-content-file-path-src-content-pages-plugins-auto-height-mdx-f83d13bbe5cdff942b9c.js\"],\"component---src-templates-default-tsx-content-file-path-src-content-pages-plugins-auto-scroll-mdx\":[\"/component---src-templates-default-tsx-content-file-path-src-content-pages-plugins-auto-scroll-mdx-7ef83f31b095fe4d4279.js\"],\"component---src-templates-default-tsx-content-file-path-src-content-pages-plugins-autoplay-mdx\":[\"/component---src-templates-default-tsx-content-file-path-src-content-pages-plugins-autoplay-mdx-059b08521b2e6af88737.js\"],\"component---src-templates-default-tsx-content-file-path-src-content-pages-plugins-class-names-mdx\":[\"/component---src-templates-default-tsx-content-file-path-src-content-pages-plugins-class-names-mdx-19eaecf3150aa35c6f5a.js\"],\"component---src-templates-default-tsx-content-file-path-src-content-pages-plugins-fade-mdx\":[\"/component---src-templates-default-tsx-content-file-path-src-content-pages-plugins-fade-mdx-4b14c02f477ed0d48cbc.js\"],\"component---src-templates-default-tsx-content-file-path-src-content-pages-plugins-index-mdx\":[\"/component---src-templates-default-tsx-content-file-path-src-content-pages-plugins-index-mdx-b4a2cee573f7407eb76a.js\"],\"component---src-templates-default-tsx-content-file-path-src-content-pages-plugins-wheel-gestures-mdx\":[\"/component---src-templates-default-tsx-content-file-path-src-content-pages-plugins-wheel-gestures-mdx-f03f088a14c47d7110be.js\"],\"component---src-templates-generator-tsx-content-file-path-src-content-pages-examples-generator-mdx\":[\"/component---src-templates-generator-tsx-content-file-path-src-content-pages-examples-generator-mdx-0a34bca29e8d591166dc.js\"],\"component---src-templates-home-tsx-content-file-path-src-content-pages-index-md\":[\"/component---src-templates-home-tsx-content-file-path-src-content-pages-index-md-96e9f9e19407e1639d2f.js\"]}"; + window.___chunkMapping="{\"app\":[\"/app-3bce4d91acb1509fefa4.js\"],\"component---src-templates-404-tsx-content-file-path-src-content-pages-404-md\":[\"/component---src-templates-404-tsx-content-file-path-src-content-pages-404-md-d075a5176048fe2bf5a7.js\"],\"component---src-templates-default-tsx-content-file-path-src-content-pages-api-events-mdx\":[\"/component---src-templates-default-tsx-content-file-path-src-content-pages-api-events-mdx-30463c48f98c5c8c9599.js\"],\"component---src-templates-default-tsx-content-file-path-src-content-pages-api-index-mdx\":[\"/component---src-templates-default-tsx-content-file-path-src-content-pages-api-index-mdx-976d158708f5577a3510.js\"],\"component---src-templates-default-tsx-content-file-path-src-content-pages-api-methods-mdx\":[\"/component---src-templates-default-tsx-content-file-path-src-content-pages-api-methods-mdx-a752f7a61304b39771dd.js\"],\"component---src-templates-default-tsx-content-file-path-src-content-pages-api-options-mdx\":[\"/component---src-templates-default-tsx-content-file-path-src-content-pages-api-options-mdx-80d2e1dc2e8f244b3d6a.js\"],\"component---src-templates-default-tsx-content-file-path-src-content-pages-api-plugins-mdx\":[\"/component---src-templates-default-tsx-content-file-path-src-content-pages-api-plugins-mdx-e514241f9c6eca756891.js\"],\"component---src-templates-default-tsx-content-file-path-src-content-pages-examples-index-mdx\":[\"/component---src-templates-default-tsx-content-file-path-src-content-pages-examples-index-mdx-06f0ea6d9148840d009f.js\"],\"component---src-templates-default-tsx-content-file-path-src-content-pages-examples-predefined-mdx\":[\"/component---src-templates-default-tsx-content-file-path-src-content-pages-examples-predefined-mdx-53d707f730425c8df9e3.js\"],\"component---src-templates-default-tsx-content-file-path-src-content-pages-get-started-cdn-mdx\":[\"/component---src-templates-default-tsx-content-file-path-src-content-pages-get-started-cdn-mdx-80540590adeb408bcfe2.js\"],\"component---src-templates-default-tsx-content-file-path-src-content-pages-get-started-index-mdx\":[\"/component---src-templates-default-tsx-content-file-path-src-content-pages-get-started-index-mdx-11d5b4b88f3178d7cfe7.js\"],\"component---src-templates-default-tsx-content-file-path-src-content-pages-get-started-module-mdx\":[\"/component---src-templates-default-tsx-content-file-path-src-content-pages-get-started-module-mdx-98c3966425dc6c8dd94a.js\"],\"component---src-templates-default-tsx-content-file-path-src-content-pages-get-started-react-mdx\":[\"/component---src-templates-default-tsx-content-file-path-src-content-pages-get-started-react-mdx-fd8a7988f080037f7746.js\"],\"component---src-templates-default-tsx-content-file-path-src-content-pages-get-started-solid-mdx\":[\"/component---src-templates-default-tsx-content-file-path-src-content-pages-get-started-solid-mdx-2aa84c64f58c366becd2.js\"],\"component---src-templates-default-tsx-content-file-path-src-content-pages-get-started-svelte-mdx\":[\"/component---src-templates-default-tsx-content-file-path-src-content-pages-get-started-svelte-mdx-a6a6bf587e5bfc515e50.js\"],\"component---src-templates-default-tsx-content-file-path-src-content-pages-get-started-vue-mdx\":[\"/component---src-templates-default-tsx-content-file-path-src-content-pages-get-started-vue-mdx-abe08626b87df02a9c82.js\"],\"component---src-templates-default-tsx-content-file-path-src-content-pages-guides-breakpoints-md\":[\"/component---src-templates-default-tsx-content-file-path-src-content-pages-guides-breakpoints-md-53ccac1d516cc4de92f2.js\"],\"component---src-templates-default-tsx-content-file-path-src-content-pages-guides-index-mdx\":[\"/component---src-templates-default-tsx-content-file-path-src-content-pages-guides-index-mdx-1eef666abdd00ae4156b.js\"],\"component---src-templates-default-tsx-content-file-path-src-content-pages-guides-previous-and-next-buttons-md\":[\"/component---src-templates-default-tsx-content-file-path-src-content-pages-guides-previous-and-next-buttons-md-17e957406cb565dd97ae.js\"],\"component---src-templates-default-tsx-content-file-path-src-content-pages-guides-slide-container-md\":[\"/component---src-templates-default-tsx-content-file-path-src-content-pages-guides-slide-container-md-d724ea35f45c807cb28f.js\"],\"component---src-templates-default-tsx-content-file-path-src-content-pages-guides-slide-gaps-md\":[\"/component---src-templates-default-tsx-content-file-path-src-content-pages-guides-slide-gaps-md-589e9407481f196b00fd.js\"],\"component---src-templates-default-tsx-content-file-path-src-content-pages-guides-slide-sizes-md\":[\"/component---src-templates-default-tsx-content-file-path-src-content-pages-guides-slide-sizes-md-b1a722b4488dfeccc8a4.js\"],\"component---src-templates-default-tsx-content-file-path-src-content-pages-plugins-auto-height-mdx\":[\"/component---src-templates-default-tsx-content-file-path-src-content-pages-plugins-auto-height-mdx-9f49071a8e6829b1f8ab.js\"],\"component---src-templates-default-tsx-content-file-path-src-content-pages-plugins-auto-scroll-mdx\":[\"/component---src-templates-default-tsx-content-file-path-src-content-pages-plugins-auto-scroll-mdx-ef46403bb66cf0c67358.js\"],\"component---src-templates-default-tsx-content-file-path-src-content-pages-plugins-autoplay-mdx\":[\"/component---src-templates-default-tsx-content-file-path-src-content-pages-plugins-autoplay-mdx-304cc914eb72250fdace.js\"],\"component---src-templates-default-tsx-content-file-path-src-content-pages-plugins-class-names-mdx\":[\"/component---src-templates-default-tsx-content-file-path-src-content-pages-plugins-class-names-mdx-5d616985393c59804180.js\"],\"component---src-templates-default-tsx-content-file-path-src-content-pages-plugins-fade-mdx\":[\"/component---src-templates-default-tsx-content-file-path-src-content-pages-plugins-fade-mdx-76778fcdc39a49e9f3f8.js\"],\"component---src-templates-default-tsx-content-file-path-src-content-pages-plugins-index-mdx\":[\"/component---src-templates-default-tsx-content-file-path-src-content-pages-plugins-index-mdx-b4a2cee573f7407eb76a.js\"],\"component---src-templates-default-tsx-content-file-path-src-content-pages-plugins-wheel-gestures-mdx\":[\"/component---src-templates-default-tsx-content-file-path-src-content-pages-plugins-wheel-gestures-mdx-f03f088a14c47d7110be.js\"],\"component---src-templates-generator-tsx-content-file-path-src-content-pages-examples-generator-mdx\":[\"/component---src-templates-generator-tsx-content-file-path-src-content-pages-examples-generator-mdx-0a34bca29e8d591166dc.js\"],\"component---src-templates-home-tsx-content-file-path-src-content-pages-index-md\":[\"/component---src-templates-home-tsx-content-file-path-src-content-pages-index-md-96e9f9e19407e1639d2f.js\"]}"; - \ No newline at end of file + \ No newline at end of file diff --git a/docs/api/methods/index.html b/docs/api/methods/index.html index 25fec053..2883ef93 100644 --- a/docs/api/methods/index.html +++ b/docs/api/methods/index.html @@ -632,6 +632,6 @@

- window.___chunkMapping="{\"app\":[\"/app-c91f697334524453e2e7.js\"],\"component---src-templates-404-tsx-content-file-path-src-content-pages-404-md\":[\"/component---src-templates-404-tsx-content-file-path-src-content-pages-404-md-d075a5176048fe2bf5a7.js\"],\"component---src-templates-default-tsx-content-file-path-src-content-pages-api-events-mdx\":[\"/component---src-templates-default-tsx-content-file-path-src-content-pages-api-events-mdx-30463c48f98c5c8c9599.js\"],\"component---src-templates-default-tsx-content-file-path-src-content-pages-api-index-mdx\":[\"/component---src-templates-default-tsx-content-file-path-src-content-pages-api-index-mdx-976d158708f5577a3510.js\"],\"component---src-templates-default-tsx-content-file-path-src-content-pages-api-methods-mdx\":[\"/component---src-templates-default-tsx-content-file-path-src-content-pages-api-methods-mdx-a752f7a61304b39771dd.js\"],\"component---src-templates-default-tsx-content-file-path-src-content-pages-api-options-mdx\":[\"/component---src-templates-default-tsx-content-file-path-src-content-pages-api-options-mdx-80d2e1dc2e8f244b3d6a.js\"],\"component---src-templates-default-tsx-content-file-path-src-content-pages-api-plugins-mdx\":[\"/component---src-templates-default-tsx-content-file-path-src-content-pages-api-plugins-mdx-e514241f9c6eca756891.js\"],\"component---src-templates-default-tsx-content-file-path-src-content-pages-examples-index-mdx\":[\"/component---src-templates-default-tsx-content-file-path-src-content-pages-examples-index-mdx-06f0ea6d9148840d009f.js\"],\"component---src-templates-default-tsx-content-file-path-src-content-pages-examples-predefined-mdx\":[\"/component---src-templates-default-tsx-content-file-path-src-content-pages-examples-predefined-mdx-ec9dce04ae7b9f123a54.js\"],\"component---src-templates-default-tsx-content-file-path-src-content-pages-get-started-cdn-mdx\":[\"/component---src-templates-default-tsx-content-file-path-src-content-pages-get-started-cdn-mdx-80540590adeb408bcfe2.js\"],\"component---src-templates-default-tsx-content-file-path-src-content-pages-get-started-index-mdx\":[\"/component---src-templates-default-tsx-content-file-path-src-content-pages-get-started-index-mdx-11d5b4b88f3178d7cfe7.js\"],\"component---src-templates-default-tsx-content-file-path-src-content-pages-get-started-module-mdx\":[\"/component---src-templates-default-tsx-content-file-path-src-content-pages-get-started-module-mdx-98c3966425dc6c8dd94a.js\"],\"component---src-templates-default-tsx-content-file-path-src-content-pages-get-started-react-mdx\":[\"/component---src-templates-default-tsx-content-file-path-src-content-pages-get-started-react-mdx-fd8a7988f080037f7746.js\"],\"component---src-templates-default-tsx-content-file-path-src-content-pages-get-started-solid-mdx\":[\"/component---src-templates-default-tsx-content-file-path-src-content-pages-get-started-solid-mdx-2aa84c64f58c366becd2.js\"],\"component---src-templates-default-tsx-content-file-path-src-content-pages-get-started-svelte-mdx\":[\"/component---src-templates-default-tsx-content-file-path-src-content-pages-get-started-svelte-mdx-a6a6bf587e5bfc515e50.js\"],\"component---src-templates-default-tsx-content-file-path-src-content-pages-get-started-vue-mdx\":[\"/component---src-templates-default-tsx-content-file-path-src-content-pages-get-started-vue-mdx-abe08626b87df02a9c82.js\"],\"component---src-templates-default-tsx-content-file-path-src-content-pages-guides-breakpoints-md\":[\"/component---src-templates-default-tsx-content-file-path-src-content-pages-guides-breakpoints-md-53ccac1d516cc4de92f2.js\"],\"component---src-templates-default-tsx-content-file-path-src-content-pages-guides-index-mdx\":[\"/component---src-templates-default-tsx-content-file-path-src-content-pages-guides-index-mdx-1eef666abdd00ae4156b.js\"],\"component---src-templates-default-tsx-content-file-path-src-content-pages-guides-previous-and-next-buttons-md\":[\"/component---src-templates-default-tsx-content-file-path-src-content-pages-guides-previous-and-next-buttons-md-17e957406cb565dd97ae.js\"],\"component---src-templates-default-tsx-content-file-path-src-content-pages-guides-slide-container-md\":[\"/component---src-templates-default-tsx-content-file-path-src-content-pages-guides-slide-container-md-d724ea35f45c807cb28f.js\"],\"component---src-templates-default-tsx-content-file-path-src-content-pages-guides-slide-gaps-md\":[\"/component---src-templates-default-tsx-content-file-path-src-content-pages-guides-slide-gaps-md-589e9407481f196b00fd.js\"],\"component---src-templates-default-tsx-content-file-path-src-content-pages-guides-slide-sizes-md\":[\"/component---src-templates-default-tsx-content-file-path-src-content-pages-guides-slide-sizes-md-b1a722b4488dfeccc8a4.js\"],\"component---src-templates-default-tsx-content-file-path-src-content-pages-plugins-auto-height-mdx\":[\"/component---src-templates-default-tsx-content-file-path-src-content-pages-plugins-auto-height-mdx-f83d13bbe5cdff942b9c.js\"],\"component---src-templates-default-tsx-content-file-path-src-content-pages-plugins-auto-scroll-mdx\":[\"/component---src-templates-default-tsx-content-file-path-src-content-pages-plugins-auto-scroll-mdx-7ef83f31b095fe4d4279.js\"],\"component---src-templates-default-tsx-content-file-path-src-content-pages-plugins-autoplay-mdx\":[\"/component---src-templates-default-tsx-content-file-path-src-content-pages-plugins-autoplay-mdx-059b08521b2e6af88737.js\"],\"component---src-templates-default-tsx-content-file-path-src-content-pages-plugins-class-names-mdx\":[\"/component---src-templates-default-tsx-content-file-path-src-content-pages-plugins-class-names-mdx-19eaecf3150aa35c6f5a.js\"],\"component---src-templates-default-tsx-content-file-path-src-content-pages-plugins-fade-mdx\":[\"/component---src-templates-default-tsx-content-file-path-src-content-pages-plugins-fade-mdx-4b14c02f477ed0d48cbc.js\"],\"component---src-templates-default-tsx-content-file-path-src-content-pages-plugins-index-mdx\":[\"/component---src-templates-default-tsx-content-file-path-src-content-pages-plugins-index-mdx-b4a2cee573f7407eb76a.js\"],\"component---src-templates-default-tsx-content-file-path-src-content-pages-plugins-wheel-gestures-mdx\":[\"/component---src-templates-default-tsx-content-file-path-src-content-pages-plugins-wheel-gestures-mdx-f03f088a14c47d7110be.js\"],\"component---src-templates-generator-tsx-content-file-path-src-content-pages-examples-generator-mdx\":[\"/component---src-templates-generator-tsx-content-file-path-src-content-pages-examples-generator-mdx-0a34bca29e8d591166dc.js\"],\"component---src-templates-home-tsx-content-file-path-src-content-pages-index-md\":[\"/component---src-templates-home-tsx-content-file-path-src-content-pages-index-md-96e9f9e19407e1639d2f.js\"]}"; + window.___chunkMapping="{\"app\":[\"/app-3bce4d91acb1509fefa4.js\"],\"component---src-templates-404-tsx-content-file-path-src-content-pages-404-md\":[\"/component---src-templates-404-tsx-content-file-path-src-content-pages-404-md-d075a5176048fe2bf5a7.js\"],\"component---src-templates-default-tsx-content-file-path-src-content-pages-api-events-mdx\":[\"/component---src-templates-default-tsx-content-file-path-src-content-pages-api-events-mdx-30463c48f98c5c8c9599.js\"],\"component---src-templates-default-tsx-content-file-path-src-content-pages-api-index-mdx\":[\"/component---src-templates-default-tsx-content-file-path-src-content-pages-api-index-mdx-976d158708f5577a3510.js\"],\"component---src-templates-default-tsx-content-file-path-src-content-pages-api-methods-mdx\":[\"/component---src-templates-default-tsx-content-file-path-src-content-pages-api-methods-mdx-a752f7a61304b39771dd.js\"],\"component---src-templates-default-tsx-content-file-path-src-content-pages-api-options-mdx\":[\"/component---src-templates-default-tsx-content-file-path-src-content-pages-api-options-mdx-80d2e1dc2e8f244b3d6a.js\"],\"component---src-templates-default-tsx-content-file-path-src-content-pages-api-plugins-mdx\":[\"/component---src-templates-default-tsx-content-file-path-src-content-pages-api-plugins-mdx-e514241f9c6eca756891.js\"],\"component---src-templates-default-tsx-content-file-path-src-content-pages-examples-index-mdx\":[\"/component---src-templates-default-tsx-content-file-path-src-content-pages-examples-index-mdx-06f0ea6d9148840d009f.js\"],\"component---src-templates-default-tsx-content-file-path-src-content-pages-examples-predefined-mdx\":[\"/component---src-templates-default-tsx-content-file-path-src-content-pages-examples-predefined-mdx-53d707f730425c8df9e3.js\"],\"component---src-templates-default-tsx-content-file-path-src-content-pages-get-started-cdn-mdx\":[\"/component---src-templates-default-tsx-content-file-path-src-content-pages-get-started-cdn-mdx-80540590adeb408bcfe2.js\"],\"component---src-templates-default-tsx-content-file-path-src-content-pages-get-started-index-mdx\":[\"/component---src-templates-default-tsx-content-file-path-src-content-pages-get-started-index-mdx-11d5b4b88f3178d7cfe7.js\"],\"component---src-templates-default-tsx-content-file-path-src-content-pages-get-started-module-mdx\":[\"/component---src-templates-default-tsx-content-file-path-src-content-pages-get-started-module-mdx-98c3966425dc6c8dd94a.js\"],\"component---src-templates-default-tsx-content-file-path-src-content-pages-get-started-react-mdx\":[\"/component---src-templates-default-tsx-content-file-path-src-content-pages-get-started-react-mdx-fd8a7988f080037f7746.js\"],\"component---src-templates-default-tsx-content-file-path-src-content-pages-get-started-solid-mdx\":[\"/component---src-templates-default-tsx-content-file-path-src-content-pages-get-started-solid-mdx-2aa84c64f58c366becd2.js\"],\"component---src-templates-default-tsx-content-file-path-src-content-pages-get-started-svelte-mdx\":[\"/component---src-templates-default-tsx-content-file-path-src-content-pages-get-started-svelte-mdx-a6a6bf587e5bfc515e50.js\"],\"component---src-templates-default-tsx-content-file-path-src-content-pages-get-started-vue-mdx\":[\"/component---src-templates-default-tsx-content-file-path-src-content-pages-get-started-vue-mdx-abe08626b87df02a9c82.js\"],\"component---src-templates-default-tsx-content-file-path-src-content-pages-guides-breakpoints-md\":[\"/component---src-templates-default-tsx-content-file-path-src-content-pages-guides-breakpoints-md-53ccac1d516cc4de92f2.js\"],\"component---src-templates-default-tsx-content-file-path-src-content-pages-guides-index-mdx\":[\"/component---src-templates-default-tsx-content-file-path-src-content-pages-guides-index-mdx-1eef666abdd00ae4156b.js\"],\"component---src-templates-default-tsx-content-file-path-src-content-pages-guides-previous-and-next-buttons-md\":[\"/component---src-templates-default-tsx-content-file-path-src-content-pages-guides-previous-and-next-buttons-md-17e957406cb565dd97ae.js\"],\"component---src-templates-default-tsx-content-file-path-src-content-pages-guides-slide-container-md\":[\"/component---src-templates-default-tsx-content-file-path-src-content-pages-guides-slide-container-md-d724ea35f45c807cb28f.js\"],\"component---src-templates-default-tsx-content-file-path-src-content-pages-guides-slide-gaps-md\":[\"/component---src-templates-default-tsx-content-file-path-src-content-pages-guides-slide-gaps-md-589e9407481f196b00fd.js\"],\"component---src-templates-default-tsx-content-file-path-src-content-pages-guides-slide-sizes-md\":[\"/component---src-templates-default-tsx-content-file-path-src-content-pages-guides-slide-sizes-md-b1a722b4488dfeccc8a4.js\"],\"component---src-templates-default-tsx-content-file-path-src-content-pages-plugins-auto-height-mdx\":[\"/component---src-templates-default-tsx-content-file-path-src-content-pages-plugins-auto-height-mdx-9f49071a8e6829b1f8ab.js\"],\"component---src-templates-default-tsx-content-file-path-src-content-pages-plugins-auto-scroll-mdx\":[\"/component---src-templates-default-tsx-content-file-path-src-content-pages-plugins-auto-scroll-mdx-ef46403bb66cf0c67358.js\"],\"component---src-templates-default-tsx-content-file-path-src-content-pages-plugins-autoplay-mdx\":[\"/component---src-templates-default-tsx-content-file-path-src-content-pages-plugins-autoplay-mdx-304cc914eb72250fdace.js\"],\"component---src-templates-default-tsx-content-file-path-src-content-pages-plugins-class-names-mdx\":[\"/component---src-templates-default-tsx-content-file-path-src-content-pages-plugins-class-names-mdx-5d616985393c59804180.js\"],\"component---src-templates-default-tsx-content-file-path-src-content-pages-plugins-fade-mdx\":[\"/component---src-templates-default-tsx-content-file-path-src-content-pages-plugins-fade-mdx-76778fcdc39a49e9f3f8.js\"],\"component---src-templates-default-tsx-content-file-path-src-content-pages-plugins-index-mdx\":[\"/component---src-templates-default-tsx-content-file-path-src-content-pages-plugins-index-mdx-b4a2cee573f7407eb76a.js\"],\"component---src-templates-default-tsx-content-file-path-src-content-pages-plugins-wheel-gestures-mdx\":[\"/component---src-templates-default-tsx-content-file-path-src-content-pages-plugins-wheel-gestures-mdx-f03f088a14c47d7110be.js\"],\"component---src-templates-generator-tsx-content-file-path-src-content-pages-examples-generator-mdx\":[\"/component---src-templates-generator-tsx-content-file-path-src-content-pages-examples-generator-mdx-0a34bca29e8d591166dc.js\"],\"component---src-templates-home-tsx-content-file-path-src-content-pages-index-md\":[\"/component---src-templates-home-tsx-content-file-path-src-content-pages-index-md-96e9f9e19407e1639d2f.js\"]}"; - \ No newline at end of file + \ No newline at end of file diff --git a/docs/api/options/index.html b/docs/api/options/index.html index afc011f2..550569ac 100644 --- a/docs/api/options/index.html +++ b/docs/api/options/index.html @@ -471,30 +471,30 @@

constructor options and/or global options. If both are provided, they will be merged, and if any options are in conflict, the constructor option has precedence and will override global options.

Constructor options

The constructor options is the default way of providing options to Embla Carousel. In the following example, the carousel loop option is set to true:

-
import EmblaCarousel from 'embla-carousel'
-const emblaNode = document.querySelector('.embla')const emblaApi = EmblaCarousel(emblaNode, { loop: true })