-
-
Notifications
You must be signed in to change notification settings - Fork 193
/
2c8f1d14031690b3a7c730295b2f775c68c4b349-62ae881124b3d5032892.js.map
1 lines (1 loc) · 54 KB
/
2c8f1d14031690b3a7c730295b2f775c68c4b349-62ae881124b3d5032892.js.map
1
{"version":3,"file":"2c8f1d14031690b3a7c730295b2f775c68c4b349-62ae881124b3d5032892.js","mappings":"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","sources":["webpack://embla-carousel-docs/./src/components/Sandbox/React/SandboxFilesSrc/EmblaCarouselDotButton.tsx","webpack://embla-carousel-docs/./src/components/Sandbox/React/SandboxFilesSrc/InfiniteScroll/EmblaCarousel.tsx","webpack://embla-carousel-docs/./src/components/Sandbox/React/SandboxFilesSrc/IosPicker/EmblaCarouselIosPickerItem.tsx","webpack://embla-carousel-docs/./src/components/Sandbox/React/SandboxFilesSrc/IosPicker/EmblaCarousel.tsx","webpack://embla-carousel-docs/./src/components/Sandbox/React/SandboxFilesSrc/LazyLoad/EmblaCarouselLazyLoadImage.tsx","webpack://embla-carousel-docs/./src/components/Sandbox/React/SandboxFilesSrc/LazyLoad/EmblaCarousel.tsx","webpack://embla-carousel-docs/./src/components/Sandbox/React/SandboxFilesSrc/Opacity/EmblaCarousel.tsx","webpack://embla-carousel-docs/./src/components/Sandbox/React/SandboxFilesSrc/Parallax/EmblaCarousel.tsx","webpack://embla-carousel-docs/./src/components/Sandbox/React/SandboxFilesSrc/Progress/EmblaCarousel.tsx","webpack://embla-carousel-docs/./src/components/Sandbox/React/SandboxFilesSrc/Scale/EmblaCarousel.tsx","webpack://embla-carousel-docs/./src/components/Sandbox/React/SandboxFilesSrc/Thumbs/EmblaCarouselThumbsButton.tsx","webpack://embla-carousel-docs/./src/components/Sandbox/React/SandboxFilesSrc/Thumbs/EmblaCarousel.tsx","webpack://embla-carousel-docs/./src/components/Sandbox/sandboxImages.ts","webpack://embla-carousel-docs/./src/assets/images/slide-1.jpg","webpack://embla-carousel-docs/./src/assets/images/slide-2.jpg","webpack://embla-carousel-docs/./src/assets/images/slide-3.jpg","webpack://embla-carousel-docs/./src/assets/images/slide-4.jpg","webpack://embla-carousel-docs/./src/assets/images/slide-5.jpg"],"sourcesContent":["import React, {\n ComponentPropsWithRef,\n useCallback,\n useEffect,\n useState\n} from 'react'\nimport { EmblaCarouselType } from 'embla-carousel'\n\ntype UseDotButtonType = {\n selectedIndex: number\n scrollSnaps: number[]\n onDotButtonClick: (index: number) => void\n}\n\nexport const useDotButton = (\n emblaApi: EmblaCarouselType | undefined,\n onButtonClick?: (emblaApi: EmblaCarouselType) => void\n): UseDotButtonType => {\n const [selectedIndex, setSelectedIndex] = useState(0)\n const [scrollSnaps, setScrollSnaps] = useState<number[]>([])\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<PropType> = (props) => {\n const { children, ...restProps } = props\n\n return (\n <button type=\"button\" {...restProps}>\n {children}\n </button>\n )\n}\n","import React, { useCallback, useEffect, useRef, useState } from 'react'\nimport { EngineType } from 'embla-carousel/components/Engine'\nimport { EmblaCarouselType, EmblaOptionsType } from 'embla-carousel'\nimport useEmblaCarousel from 'embla-carousel-react'\nimport {\n NextButton,\n PrevButton,\n usePrevNextButtons\n} from '../EmblaCarouselArrowButtons'\n\nconst mockApiCall = (\n minWait: number,\n maxWait: number,\n callback: () => void\n): void => {\n const min = Math.ceil(minWait)\n const max = Math.floor(maxWait)\n const wait = Math.floor(Math.random() * (max - min + 1)) + min\n setTimeout(callback, wait)\n}\n\ntype PropType = {\n slides: number[]\n options?: EmblaOptionsType\n}\n\nconst EmblaCarousel: React.FC<PropType> = (props) => {\n const { options, slides: propSlides } = props\n const scrollListenerRef = useRef<() => void>(() => undefined)\n const listenForScrollRef = useRef(true)\n const hasMoreToLoadRef = useRef(true)\n const [slides, setSlides] = useState(propSlides)\n const [hasMoreToLoad, setHasMoreToLoad] = useState(true)\n const [loadingMore, setLoadingMore] = useState(false)\n\n const [emblaRef, emblaApi] = useEmblaCarousel({\n ...options,\n watchSlides: (emblaApi) => {\n const reloadEmbla = (): void => {\n const oldEngine = emblaApi.internalEngine()\n\n emblaApi.reInit()\n const newEngine = emblaApi.internalEngine()\n const copyEngineModules: (keyof EngineType)[] = [\n 'scrollBody',\n 'location',\n 'offsetLocation',\n 'previousLocation',\n 'target'\n ]\n copyEngineModules.forEach((engineModule) => {\n Object.assign(newEngine[engineModule], oldEngine[engineModule])\n })\n\n newEngine.translate.to(oldEngine.location.get())\n const { index } = newEngine.scrollTarget.byDistance(0, false)\n newEngine.index.set(index)\n newEngine.animation.start()\n\n setLoadingMore(false)\n listenForScrollRef.current = true\n }\n\n const reloadAfterPointerUp = (): void => {\n emblaApi.off('pointerUp', reloadAfterPointerUp)\n reloadEmbla()\n }\n\n const engine = emblaApi.internalEngine()\n\n if (hasMoreToLoadRef.current && engine.dragHandler.pointerDown()) {\n const boundsActive = engine.limit.reachedMax(engine.target.get())\n engine.scrollBounds.toggleActive(boundsActive)\n emblaApi.on('pointerUp', reloadAfterPointerUp)\n } else {\n reloadEmbla()\n }\n }\n })\n\n const {\n prevBtnDisabled,\n nextBtnDisabled,\n onPrevButtonClick,\n onNextButtonClick\n } = usePrevNextButtons(emblaApi)\n\n const onScroll = useCallback((emblaApi: EmblaCarouselType) => {\n if (!listenForScrollRef.current) return\n\n setLoadingMore((loadingMore) => {\n const lastSlide = emblaApi.slideNodes().length - 1\n const lastSlideInView = emblaApi.slidesInView().includes(lastSlide)\n const loadMore = !loadingMore && lastSlideInView\n\n if (loadMore) {\n listenForScrollRef.current = false\n\n mockApiCall(1000, 2000, () => {\n setSlides((currentSlides) => {\n if (currentSlides.length === 20) {\n setHasMoreToLoad(false)\n emblaApi.off('scroll', scrollListenerRef.current)\n return currentSlides\n }\n const newSlideCount = currentSlides.length + 5\n return Array.from(Array(newSlideCount).keys())\n })\n })\n }\n\n return loadingMore || lastSlideInView\n })\n }, [])\n\n const addScrollListener = useCallback(\n (emblaApi: EmblaCarouselType) => {\n scrollListenerRef.current = () => onScroll(emblaApi)\n emblaApi.on('scroll', scrollListenerRef.current)\n },\n [onScroll]\n )\n\n useEffect(() => {\n if (!emblaApi) return\n addScrollListener(emblaApi)\n\n const onResize = () => emblaApi.reInit()\n window.addEventListener('resize', onResize)\n emblaApi.on('destroy', () => window.removeEventListener('resize', onResize))\n }, [emblaApi, addScrollListener])\n\n useEffect(() => {\n hasMoreToLoadRef.current = hasMoreToLoad\n }, [hasMoreToLoad])\n\n return (\n <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 {hasMoreToLoad && (\n <div\n className={'embla-infinite-scroll'.concat(\n loadingMore ? ' embla-infinite-scroll--loading-more' : ''\n )}\n >\n <span className=\"embla-infinite-scroll__spinner\" />\n </div>\n )}\n </div>\n </div>\n\n <div className=\"embla__controls\">\n <div className=\"embla__buttons\">\n <PrevButton onClick={onPrevButtonClick} disabled={prevBtnDisabled} />\n <NextButton onClick={onNextButtonClick} disabled={nextBtnDisabled} />\n </div>\n </div>\n </div>\n )\n}\n\nexport default EmblaCarousel\n","import React, { useEffect, useState, useCallback, useRef } from 'react'\nimport { EmblaCarouselType } from 'embla-carousel'\nimport useEmblaCarousel from 'embla-carousel-react'\n\nconst CIRCLE_DEGREES = 360\nconst WHEEL_ITEM_SIZE = 32\nconst WHEEL_ITEM_COUNT = 18\nconst WHEEL_ITEMS_IN_VIEW = 4\n\nexport const WHEEL_ITEM_RADIUS = CIRCLE_DEGREES / WHEEL_ITEM_COUNT\nexport const IN_VIEW_DEGREES = WHEEL_ITEM_RADIUS * WHEEL_ITEMS_IN_VIEW\nexport const WHEEL_RADIUS = Math.round(\n WHEEL_ITEM_SIZE / 2 / Math.tan(Math.PI / WHEEL_ITEM_COUNT)\n)\n\nconst isInView = (wheelLocation: number, slidePosition: number): boolean =>\n Math.abs(wheelLocation - slidePosition) < IN_VIEW_DEGREES\n\nconst setSlideStyles = (\n emblaApi: EmblaCarouselType,\n index: number,\n loop: boolean,\n slideCount: number,\n totalRadius: number\n): void => {\n const slideNode = emblaApi.slideNodes()[index]\n const wheelLocation = emblaApi.scrollProgress() * totalRadius\n const positionDefault = emblaApi.scrollSnapList()[index] * totalRadius\n const positionLoopStart = positionDefault + totalRadius\n const positionLoopEnd = positionDefault - totalRadius\n\n let inView = false\n let angle = index * -WHEEL_ITEM_RADIUS\n\n if (isInView(wheelLocation, positionDefault)) {\n inView = true\n }\n\n if (loop && isInView(wheelLocation, positionLoopEnd)) {\n inView = true\n angle = -CIRCLE_DEGREES + (slideCount - index) * WHEEL_ITEM_RADIUS\n }\n\n if (loop && isInView(wheelLocation, positionLoopStart)) {\n inView = true\n angle = -(totalRadius % CIRCLE_DEGREES) - index * WHEEL_ITEM_RADIUS\n }\n\n if (inView) {\n slideNode.style.opacity = '1'\n slideNode.style.transform = `translateY(-${\n index * 100\n }%) rotateX(${angle}deg) translateZ(${WHEEL_RADIUS}px)`\n } else {\n slideNode.style.opacity = '0'\n slideNode.style.transform = 'none'\n }\n}\n\nexport const setContainerStyles = (\n emblaApi: EmblaCarouselType,\n wheelRotation: number\n): void => {\n emblaApi.containerNode().style.transform = `translateZ(${WHEEL_RADIUS}px) rotateX(${wheelRotation}deg)`\n}\n\ntype PropType = {\n loop?: boolean\n label: string\n slideCount: number\n perspective: 'left' | 'right'\n}\n\nexport const IosPickerItem: React.FC<PropType> = (props) => {\n const { slideCount, perspective, label, loop = false } = props\n const [emblaRef, emblaApi] = useEmblaCarousel({\n loop,\n axis: 'y',\n dragFree: true,\n containScroll: false,\n watchSlides: false\n })\n const rootNodeRef = useRef<HTMLDivElement>(null)\n const totalRadius = slideCount * WHEEL_ITEM_RADIUS\n const rotationOffset = loop ? 0 : WHEEL_ITEM_RADIUS\n const slides = Array.from(Array(slideCount).keys())\n\n const inactivateEmblaTransform = useCallback(\n (emblaApi: EmblaCarouselType) => {\n if (!emblaApi) return\n const { translate, slideLooper } = emblaApi.internalEngine()\n translate.clear()\n translate.toggleActive(false)\n slideLooper.loopPoints.forEach(({ translate }) => {\n translate.clear()\n translate.toggleActive(false)\n })\n },\n []\n )\n\n const rotateWheel = useCallback(\n (emblaApi: EmblaCarouselType) => {\n const rotation = slideCount * WHEEL_ITEM_RADIUS - rotationOffset\n const wheelRotation = rotation * emblaApi.scrollProgress()\n setContainerStyles(emblaApi, wheelRotation)\n emblaApi.slideNodes().forEach((_, index) => {\n setSlideStyles(emblaApi, index, loop, slideCount, totalRadius)\n })\n },\n [slideCount, rotationOffset, totalRadius]\n )\n\n useEffect(() => {\n if (!emblaApi) return\n\n emblaApi.on('pointerUp', (emblaApi) => {\n const { scrollTo, target, location } = emblaApi.internalEngine()\n const diffToTarget = target.get() - location.get()\n const factor = Math.abs(diffToTarget) < WHEEL_ITEM_SIZE / 2.5 ? 10 : 0.1\n const distance = diffToTarget * factor\n scrollTo.distance(distance, true)\n })\n\n emblaApi.on('scroll', rotateWheel)\n\n emblaApi.on('reInit', (emblaApi) => {\n inactivateEmblaTransform(emblaApi)\n rotateWheel(emblaApi)\n })\n\n inactivateEmblaTransform(emblaApi)\n rotateWheel(emblaApi)\n }, [emblaApi, inactivateEmblaTransform, rotateWheel])\n\n return (\n <div className=\"embla__ios-picker\">\n <div className=\"embla__ios-picker__scene\" ref={rootNodeRef}>\n <div\n className={`embla__ios-picker__viewport embla__ios-picker__viewport--perspective-${perspective}`}\n ref={emblaRef}\n >\n <div className=\"embla__ios-picker__container\">\n {slides.map((_, index) => (\n <div className=\"embla__ios-picker__slide\" key={index}>\n {index}\n </div>\n ))}\n </div>\n </div>\n </div>\n <div className=\"embla__ios-picker__label\">{label}</div>\n </div>\n )\n}\n","import React from 'react'\nimport { EmblaOptionsType } from 'embla-carousel'\nimport { IosPickerItem } from './EmblaCarouselIosPickerItem'\n\ntype PropType = {\n loop?: EmblaOptionsType['loop']\n}\n\nconst EmblaCarousel: React.FC<PropType> = (props) => {\n const { loop } = props\n\n return (\n <div className=\"embla\">\n <IosPickerItem\n slideCount={24}\n perspective=\"left\"\n loop={loop}\n label=\"hours\"\n />\n <IosPickerItem\n slideCount={60}\n perspective=\"right\"\n loop={loop}\n label=\"min\"\n />\n </div>\n )\n}\n\nexport default EmblaCarousel\n","import React, { useState, useCallback } from 'react'\n\nconst PLACEHOLDER_SRC = `data:image/gif;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs%3D`\n\ntype PropType = {\n imgSrc: string\n inView: boolean\n index: number\n}\n\nexport const LazyLoadImage: React.FC<PropType> = (props) => {\n const { imgSrc, inView } = props\n const [hasLoaded, setHasLoaded] = useState(false)\n\n const setLoaded = useCallback(() => {\n if (inView) setHasLoaded(true)\n }, [inView, setHasLoaded])\n\n return (\n <div className=\"embla__slide\">\n <div\n className={'embla__lazy-load'.concat(\n hasLoaded ? ' embla__lazy-load--has-loaded' : ''\n )}\n >\n {!hasLoaded && <span className=\"embla__lazy-load__spinner\" />}\n <img\n className=\"embla__slide__img embla__lazy-load__img\"\n onLoad={setLoaded}\n src={inView ? imgSrc : PLACEHOLDER_SRC}\n alt=\"Your alt text\"\n data-src={imgSrc}\n />\n </div>\n </div>\n )\n}\n","import React, { useCallback, useEffect, useState } from 'react'\nimport { EmblaCarouselType, EmblaOptionsType } from 'embla-carousel'\nimport useEmblaCarousel from 'embla-carousel-react'\nimport { LazyLoadImage } from './EmblaCarouselLazyLoadImage'\nimport {\n NextButton,\n PrevButton,\n usePrevNextButtons\n} from '../EmblaCarouselArrowButtons'\nimport { DotButton, useDotButton } from '../EmblaCarouselDotButton'\n\ntype PropType = {\n slides: number[]\n options?: EmblaOptionsType\n}\n\nconst EmblaCarousel: React.FC<PropType> = (props) => {\n const { slides, options } = props\n const [emblaRed, emblaApi] = useEmblaCarousel(options)\n const [slidesInView, setSlidesInView] = useState<number[]>([])\n\n const { selectedIndex, scrollSnaps, onDotButtonClick } =\n useDotButton(emblaApi)\n\n const {\n prevBtnDisabled,\n nextBtnDisabled,\n onPrevButtonClick,\n onNextButtonClick\n } = usePrevNextButtons(emblaApi)\n\n const updateSlidesInView = useCallback((emblaApi: EmblaCarouselType) => {\n setSlidesInView((slidesInView) => {\n if (slidesInView.length === emblaApi.slideNodes().length) {\n emblaApi.off('slidesInView', updateSlidesInView)\n }\n const inView = emblaApi\n .slidesInView()\n .filter((index) => !slidesInView.includes(index))\n return slidesInView.concat(inView)\n })\n }, [])\n\n useEffect(() => {\n if (!emblaApi) return\n\n updateSlidesInView(emblaApi)\n emblaApi.on('slidesInView', updateSlidesInView)\n emblaApi.on('reInit', updateSlidesInView)\n }, [emblaApi, updateSlidesInView])\n\n return (\n <div className=\"embla\">\n <div className=\"embla__viewport\" ref={emblaRed}>\n <div className=\"embla__container\">\n {slides.map((index) => (\n <LazyLoadImage\n key={index}\n index={index}\n imgSrc={`https://picsum.photos/600/350?v=${index}`}\n inView={slidesInView.indexOf(index) > -1}\n />\n ))}\n </div>\n </div>\n\n <div className=\"embla__controls\">\n <div className=\"embla__buttons\">\n <PrevButton onClick={onPrevButtonClick} disabled={prevBtnDisabled} />\n <NextButton onClick={onNextButtonClick} disabled={nextBtnDisabled} />\n </div>\n\n <div className=\"embla__dots\">\n {scrollSnaps.map((_, index) => (\n <DotButton\n key={index}\n onClick={() => onDotButtonClick(index)}\n className={'embla__dot'.concat(\n index === selectedIndex ? ' embla__dot--selected' : ''\n )}\n />\n ))}\n </div>\n </div>\n </div>\n )\n}\n\nexport default EmblaCarousel\n","import React, { useCallback, useEffect, useRef } from 'react'\nimport {\n EmblaCarouselType,\n EmblaEventType,\n EmblaOptionsType\n} from 'embla-carousel'\nimport useEmblaCarousel from 'embla-carousel-react'\nimport {\n NextButton,\n PrevButton,\n usePrevNextButtons\n} from '../EmblaCarouselArrowButtons'\nimport { DotButton, useDotButton } from '../EmblaCarouselDotButton'\nimport { sandboxImages } from 'components/Sandbox/sandboxImages'\n\nconst TWEEN_FACTOR_BASE = 0.84\n\nconst numberWithinRange = (number: number, min: number, max: number): number =>\n Math.min(Math.max(number, min), max)\n\ntype PropType = {\n slides: number[]\n options?: EmblaOptionsType\n}\n\nconst EmblaCarousel: React.FC<PropType> = (props) => {\n const { slides, options } = props\n const [emblaRef, emblaApi] = useEmblaCarousel(options)\n const tweenFactor = useRef(0)\n\n const { selectedIndex, scrollSnaps, onDotButtonClick } =\n useDotButton(emblaApi)\n\n const {\n prevBtnDisabled,\n nextBtnDisabled,\n onPrevButtonClick,\n onNextButtonClick\n } = usePrevNextButtons(emblaApi)\n\n const setTweenFactor = useCallback((emblaApi: EmblaCarouselType) => {\n tweenFactor.current = TWEEN_FACTOR_BASE * emblaApi.scrollSnapList().length\n }, [])\n\n const tweenOpacity = useCallback(\n (emblaApi: EmblaCarouselType, eventName?: EmblaEventType) => {\n const engine = emblaApi.internalEngine()\n const scrollProgress = emblaApi.scrollProgress()\n const slidesInView = emblaApi.slidesInView()\n const isScrollEvent = eventName === 'scroll'\n\n emblaApi.scrollSnapList().forEach((scrollSnap, snapIndex) => {\n let diffToTarget = scrollSnap - scrollProgress\n const slidesInSnap = engine.slideRegistry[snapIndex]\n\n slidesInSnap.forEach((slideIndex) => {\n if (isScrollEvent && !slidesInView.includes(slideIndex)) return\n\n if (engine.options.loop) {\n engine.slideLooper.loopPoints.forEach((loopItem) => {\n const target = loopItem.target()\n\n if (slideIndex === loopItem.index && target !== 0) {\n const sign = Math.sign(target)\n\n if (sign === -1) {\n diffToTarget = scrollSnap - (1 + scrollProgress)\n }\n if (sign === 1) {\n diffToTarget = scrollSnap + (1 - scrollProgress)\n }\n }\n })\n }\n\n const tweenValue = 1 - Math.abs(diffToTarget * tweenFactor.current)\n const opacity = numberWithinRange(tweenValue, 0, 1).toString()\n emblaApi.slideNodes()[slideIndex].style.opacity = opacity\n })\n })\n },\n []\n )\n\n useEffect(() => {\n if (!emblaApi) return\n\n setTweenFactor(emblaApi)\n tweenOpacity(emblaApi)\n emblaApi\n .on('reInit', setTweenFactor)\n .on('reInit', tweenOpacity)\n .on('scroll', tweenOpacity)\n .on('slideFocus', tweenOpacity)\n }, [emblaApi, tweenOpacity])\n\n return (\n <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 <img\n className=\"embla__slide__img\"\n src={sandboxImages(index)}\n alt=\"Your alt text\"\n />\n </div>\n ))}\n </div>\n </div>\n\n <div className=\"embla__controls\">\n <div className=\"embla__buttons\">\n <PrevButton onClick={onPrevButtonClick} disabled={prevBtnDisabled} />\n <NextButton onClick={onNextButtonClick} disabled={nextBtnDisabled} />\n </div>\n\n <div className=\"embla__dots\">\n {scrollSnaps.map((_, index) => (\n <DotButton\n key={index}\n onClick={() => onDotButtonClick(index)}\n className={'embla__dot'.concat(\n index === selectedIndex ? ' embla__dot--selected' : ''\n )}\n />\n ))}\n </div>\n </div>\n </div>\n )\n}\n\nexport default EmblaCarousel\n","import React, { useCallback, useEffect, useRef } from 'react'\nimport {\n EmblaCarouselType,\n EmblaEventType,\n EmblaOptionsType\n} from 'embla-carousel'\nimport useEmblaCarousel from 'embla-carousel-react'\nimport {\n NextButton,\n PrevButton,\n usePrevNextButtons\n} from '../EmblaCarouselArrowButtons'\nimport { DotButton, useDotButton } from '../EmblaCarouselDotButton'\nimport { sandboxImages } from 'components/Sandbox/sandboxImages'\n\nconst TWEEN_FACTOR_BASE = 0.2\n\ntype PropType = {\n slides: number[]\n options?: EmblaOptionsType\n}\n\nconst EmblaCarousel: React.FC<PropType> = (props) => {\n const { slides, options } = props\n const [emblaRef, emblaApi] = useEmblaCarousel(options)\n const tweenFactor = useRef(0)\n const tweenNodes = useRef<HTMLElement[]>([])\n\n const { selectedIndex, scrollSnaps, onDotButtonClick } =\n useDotButton(emblaApi)\n\n const {\n prevBtnDisabled,\n nextBtnDisabled,\n onPrevButtonClick,\n onNextButtonClick\n } = usePrevNextButtons(emblaApi)\n\n const setTweenNodes = useCallback((emblaApi: EmblaCarouselType): void => {\n tweenNodes.current = emblaApi.slideNodes().map((slideNode) => {\n return slideNode.querySelector('.embla__parallax__layer') as HTMLElement\n })\n }, [])\n\n const setTweenFactor = useCallback((emblaApi: EmblaCarouselType) => {\n tweenFactor.current = TWEEN_FACTOR_BASE * emblaApi.scrollSnapList().length\n }, [])\n\n const tweenParallax = useCallback(\n (emblaApi: EmblaCarouselType, eventName?: EmblaEventType) => {\n const engine = emblaApi.internalEngine()\n const scrollProgress = emblaApi.scrollProgress()\n const slidesInView = emblaApi.slidesInView()\n const isScrollEvent = eventName === 'scroll'\n\n emblaApi.scrollSnapList().forEach((scrollSnap, snapIndex) => {\n let diffToTarget = scrollSnap - scrollProgress\n const slidesInSnap = engine.slideRegistry[snapIndex]\n\n slidesInSnap.forEach((slideIndex) => {\n if (isScrollEvent && !slidesInView.includes(slideIndex)) return\n\n if (engine.options.loop) {\n engine.slideLooper.loopPoints.forEach((loopItem) => {\n const target = loopItem.target()\n\n if (slideIndex === loopItem.index && target !== 0) {\n const sign = Math.sign(target)\n\n if (sign === -1) {\n diffToTarget = scrollSnap - (1 + scrollProgress)\n }\n if (sign === 1) {\n diffToTarget = scrollSnap + (1 - scrollProgress)\n }\n }\n })\n }\n\n const translate = diffToTarget * (-1 * tweenFactor.current) * 100\n const tweenNode = tweenNodes.current[slideIndex]\n tweenNode.style.transform = `translateX(${translate}%)`\n })\n })\n },\n []\n )\n\n useEffect(() => {\n if (!emblaApi) return\n\n setTweenNodes(emblaApi)\n setTweenFactor(emblaApi)\n tweenParallax(emblaApi)\n\n emblaApi\n .on('reInit', setTweenNodes)\n .on('reInit', setTweenFactor)\n .on('reInit', tweenParallax)\n .on('scroll', tweenParallax)\n .on('slideFocus', tweenParallax)\n }, [emblaApi, tweenParallax])\n\n return (\n <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__parallax\">\n <div className=\"embla__parallax__layer\">\n <img\n className=\"embla__slide__img embla__parallax__img\"\n src={sandboxImages(index)}\n alt=\"Your alt text\"\n />\n </div>\n </div>\n </div>\n ))}\n </div>\n </div>\n\n <div className=\"embla__controls\">\n <div className=\"embla__buttons\">\n <PrevButton onClick={onPrevButtonClick} disabled={prevBtnDisabled} />\n <NextButton onClick={onNextButtonClick} disabled={nextBtnDisabled} />\n </div>\n\n <div className=\"embla__dots\">\n {scrollSnaps.map((_, index) => (\n <DotButton\n key={index}\n onClick={() => onDotButtonClick(index)}\n className={'embla__dot'.concat(\n index === selectedIndex ? ' embla__dot--selected' : ''\n )}\n />\n ))}\n </div>\n </div>\n </div>\n )\n}\n\nexport default EmblaCarousel\n","import React, { useCallback, useEffect, useState } from 'react'\nimport { EmblaCarouselType, EmblaOptionsType } from 'embla-carousel'\nimport useEmblaCarousel from 'embla-carousel-react'\nimport {\n NextButton,\n PrevButton,\n usePrevNextButtons\n} from '../EmblaCarouselArrowButtons'\n\ntype PropType = {\n slides: number[]\n options?: EmblaOptionsType\n}\n\nconst EmblaCarousel: React.FC<PropType> = (props) => {\n const { slides, options } = props\n const [emblaRef, emblaApi] = useEmblaCarousel(options)\n const [scrollProgress, setScrollProgress] = useState(0)\n\n const {\n prevBtnDisabled,\n nextBtnDisabled,\n onPrevButtonClick,\n onNextButtonClick\n } = usePrevNextButtons(emblaApi)\n\n const onScroll = useCallback((emblaApi: EmblaCarouselType) => {\n const progress = Math.max(0, Math.min(1, emblaApi.scrollProgress()))\n setScrollProgress(progress * 100)\n }, [])\n\n useEffect(() => {\n if (!emblaApi) return\n\n onScroll(emblaApi)\n emblaApi\n .on('reInit', onScroll)\n .on('scroll', onScroll)\n .on('slideFocus', onScroll)\n }, [emblaApi, onScroll])\n\n return (\n <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 onClick={onPrevButtonClick} disabled={prevBtnDisabled} />\n <NextButton onClick={onNextButtonClick} disabled={nextBtnDisabled} />\n </div>\n\n <div className=\"embla__progress\">\n <div\n className=\"embla__progress__bar\"\n style={{ transform: `translate3d(${scrollProgress}%,0px,0px)` }}\n />\n </div>\n </div>\n </div>\n )\n}\n\nexport default EmblaCarousel\n","import React, { useCallback, useEffect, useRef } from 'react'\nimport {\n EmblaCarouselType,\n EmblaEventType,\n EmblaOptionsType\n} from 'embla-carousel'\nimport useEmblaCarousel from 'embla-carousel-react'\nimport {\n NextButton,\n PrevButton,\n usePrevNextButtons\n} from '../EmblaCarouselArrowButtons'\nimport { DotButton, useDotButton } from '../EmblaCarouselDotButton'\n\nconst TWEEN_FACTOR_BASE = 0.52\n\nconst numberWithinRange = (number: number, min: number, max: number): number =>\n Math.min(Math.max(number, min), max)\n\ntype PropType = {\n slides: number[]\n options?: EmblaOptionsType\n}\n\nconst EmblaCarousel: React.FC<PropType> = (props) => {\n const { slides, options } = props\n const [emblaRef, emblaApi] = useEmblaCarousel(options)\n const tweenFactor = useRef(0)\n const tweenNodes = useRef<HTMLElement[]>([])\n\n const { selectedIndex, scrollSnaps, onDotButtonClick } =\n useDotButton(emblaApi)\n\n const {\n prevBtnDisabled,\n nextBtnDisabled,\n onPrevButtonClick,\n onNextButtonClick\n } = usePrevNextButtons(emblaApi)\n\n const setTweenNodes = useCallback((emblaApi: EmblaCarouselType): void => {\n tweenNodes.current = emblaApi.slideNodes().map((slideNode) => {\n return slideNode.querySelector('.embla__slide__number') as HTMLElement\n })\n }, [])\n\n const setTweenFactor = useCallback((emblaApi: EmblaCarouselType) => {\n tweenFactor.current = TWEEN_FACTOR_BASE * emblaApi.scrollSnapList().length\n }, [])\n\n const tweenScale = useCallback(\n (emblaApi: EmblaCarouselType, eventName?: EmblaEventType) => {\n const engine = emblaApi.internalEngine()\n const scrollProgress = emblaApi.scrollProgress()\n const slidesInView = emblaApi.slidesInView()\n const isScrollEvent = eventName === 'scroll'\n\n emblaApi.scrollSnapList().forEach((scrollSnap, snapIndex) => {\n let diffToTarget = scrollSnap - scrollProgress\n const slidesInSnap = engine.slideRegistry[snapIndex]\n\n slidesInSnap.forEach((slideIndex) => {\n if (isScrollEvent && !slidesInView.includes(slideIndex)) return\n\n if (engine.options.loop) {\n engine.slideLooper.loopPoints.forEach((loopItem) => {\n const target = loopItem.target()\n\n if (slideIndex === loopItem.index && target !== 0) {\n const sign = Math.sign(target)\n\n if (sign === -1) {\n diffToTarget = scrollSnap - (1 + scrollProgress)\n }\n if (sign === 1) {\n diffToTarget = scrollSnap + (1 - scrollProgress)\n }\n }\n })\n }\n\n const tweenValue = 1 - Math.abs(diffToTarget * tweenFactor.current)\n const scale = numberWithinRange(tweenValue, 0, 1).toString()\n const tweenNode = tweenNodes.current[slideIndex]\n tweenNode.style.transform = `scale(${scale})`\n })\n })\n },\n []\n )\n\n useEffect(() => {\n if (!emblaApi) return\n\n setTweenNodes(emblaApi)\n setTweenFactor(emblaApi)\n tweenScale(emblaApi)\n\n emblaApi\n .on('reInit', setTweenNodes)\n .on('reInit', setTweenFactor)\n .on('reInit', tweenScale)\n .on('scroll', tweenScale)\n .on('slideFocus', tweenScale)\n }, [emblaApi, tweenScale])\n\n return (\n <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\">{index + 1}</div>\n </div>\n ))}\n </div>\n </div>\n\n <div className=\"embla__controls\">\n <div className=\"embla__buttons\">\n <PrevButton onClick={onPrevButtonClick} disabled={prevBtnDisabled} />\n <NextButton onClick={onNextButtonClick} disabled={nextBtnDisabled} />\n </div>\n\n <div className=\"embla__dots\">\n {scrollSnaps.map((_, index) => (\n <DotButton\n key={index}\n onClick={() => onDotButtonClick(index)}\n className={'embla__dot'.concat(\n index === selectedIndex ? ' embla__dot--selected' : ''\n )}\n />\n ))}\n </div>\n </div>\n </div>\n )\n}\n\nexport default EmblaCarousel\n","import React from 'react'\n\ntype PropType = {\n selected: boolean\n index: number\n onClick: () => void\n}\n\nexport const Thumb: React.FC<PropType> = (props) => {\n const { selected, index, onClick } = props\n\n return (\n <div\n className={'embla-thumbs__slide'.concat(\n selected ? ' embla-thumbs__slide--selected' : ''\n )}\n >\n <button\n onClick={onClick}\n type=\"button\"\n className=\"embla-thumbs__slide__number\"\n >\n {index + 1}\n </button>\n </div>\n )\n}\n","import React, { useState, useEffect, useCallback } from 'react'\nimport { EmblaOptionsType } from 'embla-carousel'\nimport useEmblaCarousel from 'embla-carousel-react'\nimport { Thumb } from './EmblaCarouselThumbsButton'\n\ntype PropType = {\n slides: number[]\n options?: EmblaOptionsType\n}\n\nconst EmblaCarousel: React.FC<PropType> = (props) => {\n const { slides, options } = props\n const [selectedIndex, setSelectedIndex] = useState(0)\n const [emblaMainRef, emblaMainApi] = useEmblaCarousel(options)\n const [emblaThumbsRef, emblaThumbsApi] = useEmblaCarousel({\n containScroll: 'keepSnaps',\n dragFree: true\n })\n\n const onThumbClick = useCallback(\n (index: number) => {\n if (!emblaMainApi || !emblaThumbsApi) return\n emblaMainApi.scrollTo(index)\n },\n [emblaMainApi, emblaThumbsApi]\n )\n\n const onSelect = useCallback(() => {\n if (!emblaMainApi || !emblaThumbsApi) return\n setSelectedIndex(emblaMainApi.selectedScrollSnap())\n emblaThumbsApi.scrollTo(emblaMainApi.selectedScrollSnap())\n }, [emblaMainApi, emblaThumbsApi, setSelectedIndex])\n\n useEffect(() => {\n if (!emblaMainApi) return\n onSelect()\n\n emblaMainApi.on('select', onSelect).on('reInit', onSelect)\n }, [emblaMainApi, onSelect])\n\n return (\n <div className=\"embla\">\n <div className=\"embla__viewport\" ref={emblaMainRef}>\n <div className=\"embla__container\">\n {slides.map((index) => (\n <div className=\"embla__slide\" key={index}>\n <div className=\"embla__slide__number\">{index + 1}</div>\n </div>\n ))}\n </div>\n </div>\n\n <div className=\"embla-thumbs\">\n <div className=\"embla-thumbs__viewport\" ref={emblaThumbsRef}>\n <div className=\"embla-thumbs__container\">\n {slides.map((index) => (\n <Thumb\n key={index}\n onClick={() => onThumbClick(index)}\n selected={index === selectedIndex}\n index={index}\n />\n ))}\n </div>\n </div>\n </div>\n </div>\n )\n}\n\nexport default EmblaCarousel\n","import image1 from 'assets/images/slide-1.jpg'\nimport image2 from 'assets/images/slide-2.jpg'\nimport image3 from 'assets/images/slide-3.jpg'\nimport image4 from 'assets/images/slide-4.jpg'\nimport image5 from 'assets/images/slide-5.jpg'\n\nconst sandboxImageList: string[] = [image1, image2, image3, image4, image5]\n\nexport const sandboxImages = (index: number): string =>\n sandboxImageList[index % sandboxImageList.length]\n","export default __webpack_public_path__ + \"static/slide-1-47ed6052f4455272d8f76db16447d760.jpg\";","export default __webpack_public_path__ + \"static/slide-2-dc15cfe63eb4aeb8c9c09823179ee64c.jpg\";","export default __webpack_public_path__ + \"static/slide-3-6362505742d23d7cd240880140151a95.jpg\";","export default __webpack_public_path__ + \"static/slide-4-ebad84cfea5ff9481504ded363c22003.jpg\";","export default __webpack_public_path__ + \"static/slide-5-2d88e98502aa565d6269834d7a7be406.jpg\";"],"names":["useDotButton","emblaApi","onButtonClick","selectedIndex","setSelectedIndex","useState","scrollSnaps","setScrollSnaps","onDotButtonClick","useCallback","index","scrollTo","onInit","scrollSnapList","onSelect","selectedScrollSnap","useEffect","on","DotButton","props","children","restProps","React","Object","assign","type","options","slides","propSlides","scrollListenerRef","useRef","listenForScrollRef","hasMoreToLoadRef","setSlides","hasMoreToLoad","setHasMoreToLoad","loadingMore","setLoadingMore","emblaRef","useEmblaCarousel","watchSlides","reloadEmbla","oldEngine","internalEngine","reInit","newEngine","forEach","engineModule","translate","to","location","get","scrollTarget","byDistance","set","animation","start","current","reloadAfterPointerUp","off","engine","dragHandler","pointerDown","boundsActive","limit","reachedMax","target","scrollBounds","toggleActive","prevBtnDisabled","nextBtnDisabled","onPrevButtonClick","onNextButtonClick","usePrevNextButtons","onScroll","lastSlide","slideNodes","length","lastSlideInView","slidesInView","includes","mockApiCall","minWait","maxWait","callback","min","Math","ceil","max","floor","wait","random","setTimeout","currentSlides","newSlideCount","Array","from","keys","addScrollListener","onResize","window","addEventListener","removeEventListener","className","ref","map","key","concat","PrevButton","onClick","disabled","NextButton","WHEEL_ITEM_RADIUS","CIRCLE_DEGREES","WHEEL_RADIUS","round","WHEEL_ITEM_SIZE","tan","PI","isInView","wheelLocation","slidePosition","abs","IosPickerItem","slideCount","perspective","label","loop","axis","dragFree","containScroll","rootNodeRef","totalRadius","rotationOffset","inactivateEmblaTransform","slideLooper","clear","loopPoints","_ref","rotateWheel","wheelRotation","scrollProgress","setContainerStyles","containerNode","style","transform","_","setSlideStyles","slideNode","positionDefault","positionLoopStart","positionLoopEnd","inView","angle","opacity","diffToTarget","distance","LazyLoadImage","imgSrc","hasLoaded","setHasLoaded","setLoaded","onLoad","src","alt","emblaRed","setSlidesInView","updateSlidesInView","filter","indexOf","tweenFactor","setTweenFactor","tweenOpacity","eventName","isScrollEvent","scrollSnap","snapIndex","slideRegistry","slideIndex","loopItem","sign","tweenValue","number","toString","numberWithinRange","sandboxImages","tweenNodes","setTweenNodes","querySelector","tweenParallax","setScrollProgress","progress","tweenScale","scale","Thumb","selected","emblaMainRef","emblaMainApi","emblaThumbsRef","emblaThumbsApi","onThumbClick","sandboxImageList"],"sourceRoot":""}