forked from davidjerleke/embla-carousel
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy path1905-59b650c49833b84ed7eb.js.map
1 lines (1 loc) · 16 KB
/
1905-59b650c49833b84ed7eb.js.map
1
{"version":3,"file":"1905-59b650c49833b84ed7eb.js","mappings":"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","sources":["webpack://embla-carousel-docs/../src/components/Options.ts","webpack://embla-carousel-docs/../src/components/AutoScroll.ts","webpack://embla-carousel-docs/./src/components/Sandbox/React/SandboxFilesSrc/AutoScroll/EmblaCarousel.tsx"],"sourcesContent":["import { CreateOptionsType } from 'embla-carousel'\n\nexport type OptionsType = CreateOptionsType<{\n direction: 'forward' | 'backward'\n speed: number\n startDelay: number\n playOnInit: boolean\n stopOnFocusIn: boolean\n stopOnInteraction: boolean\n stopOnMouseEnter: boolean\n rootNode: ((emblaRoot: HTMLElement) => HTMLElement | null) | null\n}>\n\nexport const defaultOptions: OptionsType = {\n direction: 'forward',\n speed: 2,\n startDelay: 1000,\n active: true,\n breakpoints: {},\n playOnInit: true,\n stopOnFocusIn: true,\n stopOnInteraction: true,\n stopOnMouseEnter: false,\n rootNode: null\n}\n","import { OptionsType, defaultOptions } from './Options'\nimport {\n CreatePluginType,\n OptionsHandlerType,\n EmblaCarouselType,\n EngineType,\n ScrollBodyType\n} from 'embla-carousel'\n\ndeclare module 'embla-carousel' {\n interface EmblaPluginsType {\n autoScroll: AutoScrollType\n }\n\n interface EmblaEventListType {\n autoScrollPlay: 'autoScroll:play'\n autoScrollStop: 'autoScroll:stop'\n }\n}\n\nexport type AutoScrollType = CreatePluginType<\n {\n play: (delay?: number) => void\n stop: () => void\n reset: () => void\n isPlaying: () => boolean\n },\n OptionsType\n>\n\nexport type AutoScrollOptionsType = AutoScrollType['options']\n\nfunction AutoScroll(userOptions: AutoScrollOptionsType = {}): AutoScrollType {\n let options: OptionsType\n let emblaApi: EmblaCarouselType\n let destroyed: boolean\n let playing = false\n let resume = true\n let timer = 0\n let startDelay: number\n let defaultScrollBehaviour: ScrollBodyType\n\n function init(\n emblaApiInstance: EmblaCarouselType,\n optionsHandler: OptionsHandlerType\n ): void {\n emblaApi = emblaApiInstance\n\n const { mergeOptions, optionsAtMedia } = optionsHandler\n const optionsBase = mergeOptions(defaultOptions, AutoScroll.globalOptions)\n const allOptions = mergeOptions(optionsBase, userOptions)\n options = optionsAtMedia(allOptions)\n\n if (emblaApi.scrollSnapList().length <= 1) return\n\n startDelay = options.startDelay\n destroyed = false\n defaultScrollBehaviour = emblaApi.internalEngine().scrollBody\n\n const { eventStore } = emblaApi.internalEngine()\n const emblaRoot = emblaApi.rootNode()\n const root = (options.rootNode && options.rootNode(emblaRoot)) || emblaRoot\n const container = emblaApi.containerNode()\n\n emblaApi.on('pointerDown', stopScroll)\n\n if (!options.stopOnInteraction) {\n emblaApi.on('pointerUp', startScrollOnSettle)\n }\n\n if (options.stopOnMouseEnter) {\n eventStore.add(root, 'mouseenter', () => {\n resume = false\n stopScroll()\n })\n\n if (!options.stopOnInteraction) {\n eventStore.add(root, 'mouseleave', () => {\n resume = true\n startScroll()\n })\n }\n }\n\n if (options.stopOnFocusIn) {\n emblaApi.on('slideFocusStart', stopScroll)\n\n if (!options.stopOnInteraction) {\n eventStore.add(container, 'focusout', startScroll)\n }\n }\n\n if (options.playOnInit) startScroll()\n }\n\n function destroy(): void {\n emblaApi\n .off('pointerDown', stopScroll)\n .off('pointerUp', startScrollOnSettle)\n .off('slideFocusStart', stopScroll)\n .off('settle', onSettle)\n stopScroll()\n destroyed = true\n playing = false\n }\n\n function startScroll(): void {\n if (destroyed || playing) return\n if (!resume) return\n emblaApi.emit('autoScroll:play')\n\n const engine = emblaApi.internalEngine()\n const { ownerWindow } = engine\n\n timer = ownerWindow.setTimeout(() => {\n engine.scrollBody = createAutoScrollBehaviour(engine)\n engine.animation.start()\n }, startDelay)\n\n playing = true\n }\n\n function stopScroll(): void {\n if (destroyed || !playing) return\n emblaApi.emit('autoScroll:stop')\n\n const engine = emblaApi.internalEngine()\n const { ownerWindow } = engine\n\n engine.scrollBody = defaultScrollBehaviour\n ownerWindow.clearTimeout(timer)\n timer = 0\n\n playing = false\n }\n\n function onSettle(): void {\n if (resume) startScroll()\n emblaApi.off('settle', onSettle)\n }\n\n function startScrollOnSettle(): void {\n emblaApi.on('settle', onSettle)\n }\n\n function createAutoScrollBehaviour(engine: EngineType): ScrollBodyType {\n const {\n location,\n 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(timeStep: number): ScrollBodyType {\n const fixedDeltaTimeSeconds = timeStep / 1000\n let directionDiff = 0\n\n previousLocation.set(location)\n\n bodyVelocity = directionSign * options.speed * 55\n rawLocation += bodyVelocity\n location.add(bodyVelocity * fixedDeltaTimeSeconds)\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 stopScroll()\n }\n\n return self\n }\n\n const self: ScrollBodyType = {\n direction: () => scrollDirection,\n duration: () => -1,\n velocity: () => bodyVelocity,\n settled: () => hasSettled,\n seek,\n useBaseFriction: noop,\n useBaseDuration: noop,\n useFriction: noop,\n useDuration: noop\n }\n return self\n }\n\n function play(startDelayOverride?: number): void {\n if (typeof startDelayOverride !== 'undefined') {\n startDelay = startDelayOverride\n }\n resume = true\n startScroll()\n }\n\n function stop(): void {\n if (playing) stopScroll()\n }\n\n function reset(): void {\n if (playing) {\n stopScroll()\n startScrollOnSettle()\n }\n }\n\n function isPlaying(): boolean {\n return playing\n }\n\n const self: AutoScrollType = {\n name: 'autoScroll',\n options: userOptions,\n init,\n destroy,\n play,\n stop,\n reset,\n isPlaying\n }\n return self\n}\n\ndeclare namespace AutoScroll {\n let globalOptions: AutoScrollOptionsType | undefined\n}\n\nAutoScroll.globalOptions = undefined\n\nexport default AutoScroll\n","import React, { useCallback, useEffect, useState } from 'react'\nimport { EmblaOptionsType } from 'embla-carousel'\nimport useEmblaCarousel from 'embla-carousel-react'\nimport AutoScroll from 'embla-carousel-auto-scroll'\nimport {\n NextButton,\n PrevButton,\n usePrevNextButtons\n} from '../EmblaCarouselArrowButtons'\n\ntype PropType = {\n slides: number[]\n options?: EmblaOptionsType\n}\n\nconst EmblaCarousel: React.FC<PropType> = (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 <div className=\"embla\">\n <div className=\"embla__viewport\" ref={emblaRef}>\n <div className=\"embla__container\">\n {slides.map((index) => (\n <div className=\"embla__slide\" key={index}>\n <div className=\"embla__slide__number\">\n <span>{index + 1}</span>\n </div>\n </div>\n ))}\n </div>\n </div>\n\n <div className=\"embla__controls\">\n <div className=\"embla__buttons\">\n <PrevButton\n onClick={() => onButtonAutoplayClick(onPrevButtonClick)}\n disabled={prevBtnDisabled}\n />\n <NextButton\n onClick={() => onButtonAutoplayClick(onNextButtonClick)}\n disabled={nextBtnDisabled}\n />\n </div>\n\n <button className=\"embla__play\" onClick={toggleAutoplay} type=\"button\">\n {isPlaying ? 'Stop' : 'Start'}\n </button>\n </div>\n </div>\n )\n}\n\nexport default EmblaCarousel\n"],"names":["defaultOptions","direction","speed","startDelay","active","breakpoints","playOnInit","stopOnFocusIn","stopOnInteraction","stopOnMouseEnter","rootNode","AutoScroll","userOptions","options","emblaApi","destroyed","defaultScrollBehaviour","playing","resume","timer","startScroll","emit","engine","internalEngine","ownerWindow","setTimeout","scrollBody","location","previousLocation","offsetLocation","target","scrollTarget","index","indexPrevious","limit","reachedMin","reachedMax","constrain","loop","directionSign","noop","self","bodyVelocity","scrollDirection","rawLocation","get","rawLocationPrevious","hasSettled","seek","timeStep","fixedDeltaTimeSeconds","directionDiff","set","add","Math","sign","currentIndex","byDistance","reachedEnd","constrainedLocation","stopScroll","duration","velocity","settled","useBaseFriction","useBaseDuration","useFriction","useDuration","createAutoScrollBehaviour","animation","start","clearTimeout","onSettle","off","startScrollOnSettle","on","name","init","emblaApiInstance","optionsHandler","mergeOptions","optionsAtMedia","optionsBase","globalOptions","allOptions","scrollSnapList","length","eventStore","emblaRoot","root","container","containerNode","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":""}