react-spring-carousel 3.0.0-beta002 → 3.0.0-beta005

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../src/modules/useThumbsModule.tsx","../../src/useSpringCarousel.tsx","../../src/modules/useEventsModule.ts","../../src/modules/useFullscreenModule.ts"],"sourcesContent":["import { useSpring } from \"@react-spring/web\";\nimport { useRef } from \"react\";\nimport {\n SpringCarouselWithThumbs,\n PrepareThumbsData,\n} from \"src/types/internals\";\n\ntype Props = {\n withThumbs?: boolean;\n thumbsSlideAxis: SpringCarouselWithThumbs[\"thumbsSlideAxis\"];\n prepareThumbsData?: PrepareThumbsData;\n items: SpringCarouselWithThumbs[\"items\"];\n};\n\nfunction isInViewport(el: HTMLElement) {\n const rect = el.getBoundingClientRect();\n return (\n rect.top >= 0 &&\n rect.left >= 0 &&\n rect.bottom <=\n (window.innerHeight || document.documentElement.clientHeight) &&\n rect.right <= (window.innerWidth || document.documentElement.clientWidth)\n );\n}\n\nexport function useThumbsModule({\n thumbsSlideAxis = \"x\",\n withThumbs = false,\n prepareThumbsData,\n items,\n}: Props) {\n const wrapperRef = useRef<HTMLDivElement | null>(null);\n const [spring, setSpring] = useSpring(() => ({\n val: 0,\n }));\n\n function getTotalScrollValue() {\n return Math.round(\n Number(\n wrapperRef.current?.[\n thumbsSlideAxis === \"x\" ? \"scrollWidth\" : \"scrollHeight\"\n ]\n ) -\n wrapperRef.current!.getBoundingClientRect()[\n thumbsSlideAxis === \"x\" ? \"width\" : \"height\"\n ]\n );\n }\n\n function handleScroll(activeItem: number) {\n function getThumbNode() {\n if (wrapperRef.current) {\n return wrapperRef.current.querySelector(\n `#thumb-item-${items[activeItem].id}`\n ) as HTMLElement;\n }\n return null;\n }\n\n const thumbNode = getThumbNode();\n if (thumbNode && wrapperRef.current) {\n if (!isInViewport(thumbNode)) {\n const offset = thumbNode.offsetLeft;\n const val =\n offset > getTotalScrollValue() ? getTotalScrollValue() : offset;\n\n setSpring.start({\n from: {\n val:\n wrapperRef.current?.[\n thumbsSlideAxis === \"x\" ? \"scrollLeft\" : \"scrollTop\"\n ] ?? 0,\n },\n to: {\n val,\n },\n onChange: ({ value }) => {\n if (wrapperRef.current) {\n wrapperRef.current[\n thumbsSlideAxis === \"x\" ? \"scrollLeft\" : \"scrollTop\"\n ] = Math.abs(value.val);\n }\n },\n });\n }\n }\n }\n\n function handlePrepareThumbsData() {\n function getPreparedItems(\n _items: ReturnType<PrepareThumbsData>\n ): ReturnType<PrepareThumbsData> {\n return _items.map((i) => ({\n id: i.id,\n renderThumb: i.renderThumb,\n }));\n }\n\n if (prepareThumbsData) {\n return prepareThumbsData(getPreparedItems(items));\n }\n return getPreparedItems(items);\n }\n\n const thumbsFragment = withThumbs ? (\n <div\n className=\"use-spring-carousel-thumbs-wrapper\"\n ref={wrapperRef}\n onWheel={() => spring.val.stop()}\n style={{\n display: \"flex\",\n flex: \"1\",\n position: \"relative\",\n width: \"100%\",\n height: \"100%\",\n flexDirection: thumbsSlideAxis === \"x\" ? \"row\" : \"column\",\n ...(thumbsSlideAxis === \"x\"\n ? { overflowX: \"auto\" }\n : {\n overflowY: \"auto\",\n maxHeight: \"100%\",\n }),\n }}\n >\n {handlePrepareThumbsData().map(({ id, renderThumb }) => {\n const thumbId = `thumb-item-${id}`;\n return (\n <div key={thumbId} id={thumbId} className=\"thumb-item\">\n {renderThumb}\n </div>\n );\n })}\n </div>\n ) : null;\n\n return {\n thumbsFragment,\n handleScroll,\n };\n}\n","import { config, useSpring } from \"@react-spring/web\";\nimport React, {\n createContext,\n useCallback,\n useContext,\n useEffect,\n useLayoutEffect,\n useRef,\n} from \"react\";\n\nimport { SlideActionType, SlideMode } from \"./types/common\";\nimport { useEventsModule } from \"./modules/useEventsModule\";\nimport { useDrag } from \"@use-gesture/react\";\nimport { useFullscreenModule } from \"./modules/useFullscreenModule\";\nimport { useThumbsModule } from \"./modules/useThumbsModule\";\nimport {\n UseSpringReturnType,\n UseSpringCarouselWithThumbs,\n UseSpringCarouselComplete,\n UseSpringCarouselWithNoThumbs,\n UseSpringCarouselWithFixedItems,\n UseSpringCarouselWithNoFixedItems,\n SpringCarouselWithThumbs,\n} from \"./types/internals\";\n\nfunction useSpringCarousel(\n props: UseSpringCarouselWithThumbs\n): UseSpringReturnType;\nfunction useSpringCarousel(\n props: UseSpringCarouselWithNoThumbs\n): UseSpringReturnType;\nfunction useSpringCarousel(\n props: UseSpringCarouselWithFixedItems\n): UseSpringReturnType;\nfunction useSpringCarousel(\n props: UseSpringCarouselWithNoFixedItems\n): UseSpringReturnType;\n\nfunction useSpringCarousel({\n items,\n init = true,\n withThumbs,\n thumbsSlideAxis = \"x\",\n itemsPerSlide = 1,\n slideType = \"fixed\",\n gutter = 0,\n withLoop = false,\n startEndGutter = 0,\n carouselSlideAxis = \"x\",\n disableGestures = false,\n draggingSlideTreshold: _draggingSlideTreshold,\n slideWhenThresholdIsReached = false,\n freeScroll,\n enableFreeScrollDrag,\n initialStartingPosition,\n prepareThumbsData,\n initialActiveItem = 0,\n}: UseSpringCarouselComplete) {\n const prevWindowWidth = useRef(0);\n const draggingSlideTreshold = useRef(_draggingSlideTreshold ?? 0);\n const slideActionType = useRef<SlideActionType>(\"initial\");\n const slideModeType = useRef<SlideMode>(\"initial\");\n const prevSlidedValue = useRef(0);\n const [spring, setSpring] = useSpring(() => ({\n val: 0,\n pause: !init,\n onChange({ value }) {\n if (freeScroll && mainCarouselWrapperRef.current) {\n setStartEndItemReachedOnFreeScroll();\n if (carouselSlideAxis === \"x\") {\n mainCarouselWrapperRef.current.scrollLeft = Math.abs(value.val);\n } else {\n mainCarouselWrapperRef.current.scrollTop = Math.abs(value.val);\n }\n } else if (carouselTrackWrapperRef.current) {\n if (carouselSlideAxis === \"x\") {\n carouselTrackWrapperRef.current.style.transform = `translate3d(${value.val}px, 0px,0px)`;\n } else {\n carouselTrackWrapperRef.current.style.transform = `translate3d(0px,${value.val}px,0px)`;\n }\n }\n },\n }));\n const activeItem = useRef(initialActiveItem);\n const firstItemReached = useRef(initialActiveItem === 0);\n const lastItemReached = useRef(false);\n const mainCarouselWrapperRef = useRef<HTMLDivElement | null>(null);\n const carouselTrackWrapperRef = useRef<HTMLDivElement | null>(null);\n\n const getItems = useCallback(() => {\n if (withLoop) {\n return [\n ...items.map((i) => ({\n ...i,\n id: `prev-repeated-item-${i.id}`,\n })),\n ...items,\n ...items.map((i) => ({\n ...i,\n id: `next-repeated-item-${i.id}`,\n })),\n ];\n }\n return [...items];\n }, [items, withLoop]);\n const internalItems = getItems();\n\n const { emitEvent, useListenToCustomEvent } = useEventsModule();\n const { thumbsFragment, handleScroll } = useThumbsModule({\n withThumbs: !!withThumbs,\n thumbsSlideAxis,\n prepareThumbsData,\n items: items as SpringCarouselWithThumbs[\"items\"],\n });\n const { enterFullscreen, exitFullscreen, getIsFullscreen } =\n useFullscreenModule({\n mainCarouselWrapperRef,\n emitEvent,\n handleResize: () => adjustCarouselWrapperPosition(),\n });\n\n function getItemStyles() {\n if (slideType === \"fixed\" && !freeScroll) {\n return {\n marginRight: `${gutter}px`,\n flex: `1 0 calc(100% / ${itemsPerSlide} - ${\n (gutter * (itemsPerSlide - 1)) / itemsPerSlide\n }px)`,\n };\n }\n return {\n ...{ marginRight: `${gutter}px` },\n };\n }\n\n function getSlideValue() {\n const carouselItem = mainCarouselWrapperRef.current?.querySelector(\n \".use-spring-carousel-item\"\n );\n\n if (!carouselItem) {\n throw Error(\"No carousel items available!\");\n }\n\n return (\n carouselItem.getBoundingClientRect()[\n carouselSlideAxis === \"x\" ? \"width\" : \"height\"\n ] + gutter\n );\n }\n\n type SlideToItem = {\n from: number;\n to: number;\n nextActiveItem?: number;\n immediate?: boolean;\n slideMode: \"click\" | \"drag\";\n };\n\n function slideToItem({\n from,\n to,\n nextActiveItem,\n immediate = false,\n slideMode,\n }: SlideToItem) {\n slideModeType.current = slideMode;\n\n if (typeof nextActiveItem === \"number\") {\n if (!freeScroll) {\n activeItem.current = nextActiveItem;\n }\n emitEvent({\n eventName: \"onSlideStartChange\",\n slideActionType: slideActionType.current,\n slideMode: slideModeType.current,\n nextItem: {\n startReached: firstItemReached.current,\n endReached: lastItemReached.current,\n index: freeScroll ? -1 : activeItem.current,\n id: freeScroll ? \"\" : items[activeItem.current].id,\n },\n });\n }\n\n prevSlidedValue.current = to;\n setSpring.start({\n immediate,\n from: {\n val: from,\n },\n to: {\n val: to,\n },\n config: {\n ...config.default,\n velocity: spring.val.velocity,\n },\n onRest(value) {\n if (!immediate && value.finished) {\n emitEvent({\n eventName: \"onSlideChange\",\n slideActionType: slideActionType.current,\n slideMode: slideModeType.current,\n currentItem: {\n startReached: firstItemReached.current,\n endReached: lastItemReached.current,\n index: freeScroll ? -1 : activeItem.current,\n id: freeScroll ? \"\" : items[activeItem.current].id,\n },\n });\n }\n },\n });\n if (withThumbs && !immediate) {\n handleScroll(activeItem.current);\n }\n }\n\n function getTotalScrollValue() {\n if (withLoop) {\n return getSlideValue() * items.length;\n }\n return Math.round(\n Number(\n carouselTrackWrapperRef.current?.[\n carouselSlideAxis === \"x\" ? \"scrollWidth\" : \"scrollHeight\"\n ]\n ) -\n carouselTrackWrapperRef.current!.getBoundingClientRect()[\n carouselSlideAxis === \"x\" ? \"width\" : \"height\"\n ]\n );\n }\n function getAnimatedWrapperStyles() {\n const percentValue = `calc(100% - ${startEndGutter * 2}px)`;\n return {\n width: carouselSlideAxis === \"x\" ? percentValue : \"100%\",\n height: carouselSlideAxis === \"y\" ? percentValue : \"100%\",\n };\n }\n\n function getCarouselItemWidth() {\n const carouselItem = carouselTrackWrapperRef.current?.querySelector(\n \".use-spring-carousel-item\"\n );\n if (!carouselItem) {\n throw Error(\"No carousel items available!\");\n }\n return (\n carouselItem.getBoundingClientRect()[\n carouselSlideAxis === \"x\" ? \"width\" : \"height\"\n ] + gutter\n );\n }\n function adjustCarouselWrapperPosition() {\n const positionProperty = carouselSlideAxis === \"x\" ? \"left\" : \"top\";\n\n function setPosition(v: number) {\n const ref = carouselTrackWrapperRef.current;\n if (!ref) return;\n\n if (withLoop) {\n ref.style.top = \"0px\";\n ref.style.left = \"0px\";\n ref.style[positionProperty] = `-${v - startEndGutter}px`;\n } else {\n ref.style.left = \"0px\";\n ref.style.top = \"0px\";\n }\n }\n\n const currentFromValue = Math.abs(getFromValue());\n\n if (currentFromValue < getTotalScrollValue() && lastItemReached.current) {\n lastItemReached.current = false;\n }\n if (currentFromValue > getTotalScrollValue()) {\n const val = -getTotalScrollValue();\n lastItemReached.current = true;\n prevSlidedValue.current = val;\n setSpring.start({\n immediate: true,\n val,\n });\n return;\n }\n\n if (initialStartingPosition === \"center\") {\n setPosition(\n getCarouselItemWidth() * items.length -\n getSlideValue() * Math.round((itemsPerSlide - 1) / 2)\n );\n } else if (initialStartingPosition === \"end\") {\n setPosition(\n getCarouselItemWidth() * items.length -\n getSlideValue() * Math.round(itemsPerSlide - 1)\n );\n } else {\n setPosition(getCarouselItemWidth() * items.length);\n }\n\n if (!freeScroll && slideType === \"fixed\") {\n const val = -(getSlideValue() * activeItem.current);\n prevSlidedValue.current = val;\n setSpring.start({\n immediate: true,\n val,\n });\n }\n }\n\n function getFromValue() {\n if (freeScroll && mainCarouselWrapperRef.current) {\n return mainCarouselWrapperRef.current[\n carouselSlideAxis === \"x\" ? \"scrollLeft\" : \"scrollTop\"\n ];\n }\n return spring.val.get();\n }\n function getToValue(type: \"next\" | \"prev\", index?: number) {\n if (freeScroll && type === \"next\") {\n const next = prevSlidedValue.current + getSlideValue();\n if (next > getTotalScrollValue()) {\n return getTotalScrollValue();\n }\n return next;\n }\n\n if (freeScroll && type === \"prev\") {\n const next = prevSlidedValue.current - getSlideValue();\n if (next < 0) {\n return 0;\n }\n return next;\n }\n\n if (type === \"next\") {\n if (index) {\n return -(index * getSlideValue());\n }\n return prevSlidedValue.current - getSlideValue();\n }\n\n if (index) {\n return -(index * getSlideValue());\n }\n return prevSlidedValue.current + getSlideValue();\n }\n function slideToPrevItem(\n type: Exclude<SlideMode, \"initial\"> = \"click\",\n index?: number\n ) {\n if (!init || (firstItemReached.current && !withLoop)) return;\n\n slideActionType.current = \"prev\";\n lastItemReached.current = false;\n\n const nextItem = index || activeItem.current - 1;\n\n if (!withLoop) {\n const nextItemWillExceed =\n getToValue(\"prev\", index) + getSlideValue() / 3 > 0;\n\n if (firstItemReached.current) return;\n if (nextItemWillExceed) {\n firstItemReached.current = true;\n lastItemReached.current = false;\n\n slideToItem({\n slideMode: type,\n from: getFromValue(),\n to: 0,\n nextActiveItem: 0,\n });\n return;\n }\n }\n if (withLoop && firstItemReached.current) {\n firstItemReached.current = false;\n lastItemReached.current = true;\n slideToItem({\n slideMode: type,\n from: getFromValue() - getSlideValue() * items.length,\n to: -(getSlideValue() * items.length) + getSlideValue(),\n nextActiveItem: items.length - 1,\n });\n return;\n }\n if (nextItem === 0) {\n firstItemReached.current = true;\n }\n if (nextItem === items.length - 1 || nextItem === -1) {\n lastItemReached.current = true;\n }\n slideToItem({\n slideMode: type,\n from: getFromValue(),\n to: getToValue(\"prev\", index),\n nextActiveItem: nextItem,\n });\n }\n function slideToNextItem(\n type: Exclude<SlideMode, \"initial\"> = \"click\",\n index?: number\n ) {\n if (!init || (lastItemReached.current && !withLoop)) return;\n\n slideActionType.current = \"next\";\n firstItemReached.current = false;\n\n const nextItem = index || activeItem.current + 1;\n\n if (!withLoop) {\n const nextItemWillExceed =\n Math.abs(getToValue(\"next\", index)) >\n getTotalScrollValue() - getSlideValue() / 3;\n\n if (lastItemReached.current) return;\n if (nextItemWillExceed) {\n firstItemReached.current = false;\n lastItemReached.current = true;\n\n slideToItem({\n slideMode: type,\n from: getFromValue(),\n to: -getTotalScrollValue(),\n nextActiveItem: nextItem,\n });\n return;\n }\n }\n if (withLoop && lastItemReached.current) {\n lastItemReached.current = false;\n firstItemReached.current = true;\n slideToItem({\n slideMode: type,\n from: getFromValue() + getSlideValue() * items.length,\n to: 0,\n nextActiveItem: 0,\n });\n return;\n }\n if (nextItem === 0) {\n firstItemReached.current = true;\n }\n if (nextItem === items.length - 1) {\n lastItemReached.current = true;\n }\n slideToItem({\n slideMode: type,\n from: getFromValue(),\n to: getToValue(\"next\", index),\n nextActiveItem: nextItem,\n });\n }\n\n useEffect(() => {\n prevWindowWidth.current = window.innerWidth;\n }, []);\n useEffect(() => {\n adjustCarouselWrapperPosition();\n }, [\n initialStartingPosition,\n itemsPerSlide,\n withLoop,\n startEndGutter,\n gutter,\n freeScroll,\n slideType,\n init,\n ]);\n useLayoutEffect(() => {\n /**\n * Set initial track position\n */\n if (carouselTrackWrapperRef.current) {\n adjustCarouselWrapperPosition();\n }\n }, []);\n useEffect(() => {\n if (_draggingSlideTreshold) {\n draggingSlideTreshold.current = _draggingSlideTreshold;\n } else {\n draggingSlideTreshold.current = Math.floor(getSlideValue() / 2 / 2);\n }\n }, [_draggingSlideTreshold]);\n useEffect(() => {\n function handleResize() {\n if (window.innerWidth === prevWindowWidth.current) return;\n prevWindowWidth.current = window.innerWidth;\n adjustCarouselWrapperPosition();\n }\n window.addEventListener(\"resize\", handleResize);\n return () => {\n window.removeEventListener(\"resize\", handleResize);\n };\n }, []);\n\n const bindDrag = useDrag(\n (state) => {\n const isDragging = state.dragging;\n const movement = state.offset[carouselSlideAxis === \"x\" ? 0 : 1];\n const currentMovement = state.movement[carouselSlideAxis === \"x\" ? 0 : 1];\n const direction = state.direction[carouselSlideAxis === \"x\" ? 0 : 1];\n\n const prevItemTreshold = currentMovement > draggingSlideTreshold.current;\n const nextItemTreshold = currentMovement < -draggingSlideTreshold.current;\n\n if (isDragging) {\n if (direction > 0) {\n slideActionType.current = \"prev\";\n } else {\n slideActionType.current = \"next\";\n }\n\n emitEvent({\n ...state,\n eventName: \"onDrag\",\n slideActionType: slideActionType.current,\n });\n\n if (freeScroll) {\n if (slideActionType.current === \"prev\" && movement > 0) {\n state.cancel();\n setSpring.start({\n from: {\n val: getFromValue(),\n },\n to: {\n val: 0,\n },\n config: {\n velocity: state.velocity,\n friction: 50,\n tension: 1000,\n },\n });\n return;\n }\n\n setSpring.start({\n from: {\n val: getFromValue(),\n },\n to: {\n val: -movement,\n },\n config: {\n velocity: state.velocity,\n friction: 50,\n tension: 1000,\n },\n });\n return;\n }\n\n setSpring.start({\n val: movement,\n config: {\n velocity: state.velocity,\n friction: 50,\n tension: 1000,\n },\n });\n\n if (slideWhenThresholdIsReached && nextItemTreshold) {\n slideToNextItem(\"drag\");\n state.cancel();\n } else if (slideWhenThresholdIsReached && prevItemTreshold) {\n slideToPrevItem(\"drag\");\n state.cancel();\n }\n return;\n }\n\n if (state.last && !state.canceled && freeScroll) {\n if (slideActionType.current === \"prev\") {\n slideToPrevItem(\"drag\");\n }\n if (slideActionType.current === \"next\") {\n slideToNextItem(\"drag\");\n }\n }\n\n if (state.last && !state.canceled && !freeScroll) {\n if (nextItemTreshold) {\n if (!withLoop && lastItemReached.current) {\n setSpring.start({\n val: -getTotalScrollValue(),\n config: {\n ...config.default,\n velocity: state.velocity,\n },\n });\n } else {\n slideToNextItem(\"drag\");\n }\n } else if (prevItemTreshold) {\n if (!withLoop && firstItemReached.current) {\n setSpring.start({\n val: 0,\n config: {\n ...config.default,\n velocity: state.velocity,\n },\n });\n } else {\n slideToPrevItem(\"drag\");\n }\n } else {\n setSpring.start({\n val: prevSlidedValue.current,\n config: {\n ...config.default,\n velocity: state.velocity,\n },\n });\n }\n }\n },\n {\n enabled:\n (init && !disableGestures && !freeScroll) ||\n (!!freeScroll && !!enableFreeScrollDrag),\n axis: carouselSlideAxis,\n from: () => {\n if (freeScroll && mainCarouselWrapperRef.current) {\n return [\n -mainCarouselWrapperRef.current.scrollLeft,\n -mainCarouselWrapperRef.current.scrollTop,\n ];\n }\n if (carouselSlideAxis === \"x\") {\n return [spring.val.get(), spring.val.get()];\n }\n return [spring.val.get(), spring.val.get()];\n },\n }\n );\n\n function getWrapperOverflowStyles() {\n if (freeScroll) {\n if (carouselSlideAxis === \"x\") {\n return {\n overflowX: \"auto\",\n };\n }\n return {\n overflowY: \"auto\",\n };\n }\n return {};\n }\n\n function setStartEndItemReachedOnFreeScroll() {\n if (mainCarouselWrapperRef.current) {\n prevSlidedValue.current =\n mainCarouselWrapperRef.current[\n carouselSlideAxis === \"x\" ? \"scrollLeft\" : \"scrollTop\"\n ];\n if (\n mainCarouselWrapperRef.current[\n carouselSlideAxis === \"x\" ? \"scrollLeft\" : \"scrollTop\"\n ] === 0\n ) {\n firstItemReached.current = true;\n lastItemReached.current = false;\n }\n if (\n mainCarouselWrapperRef.current[\n carouselSlideAxis === \"x\" ? \"scrollLeft\" : \"scrollTop\"\n ] > 0 &&\n mainCarouselWrapperRef.current[\n carouselSlideAxis === \"x\" ? \"scrollLeft\" : \"scrollTop\"\n ] < getTotalScrollValue()\n ) {\n firstItemReached.current = false;\n lastItemReached.current = false;\n }\n if (\n mainCarouselWrapperRef.current[\n carouselSlideAxis === \"x\" ? \"scrollLeft\" : \"scrollTop\"\n ] === getTotalScrollValue()\n ) {\n firstItemReached.current = false;\n lastItemReached.current = true;\n }\n }\n }\n function getScrollHandlers() {\n if (freeScroll) {\n return {\n onWheel() {\n spring.val.stop();\n setStartEndItemReachedOnFreeScroll();\n },\n };\n }\n return {};\n }\n function findItemIndex(id: string) {\n return items.findIndex((item) => item.id === id);\n }\n function findItemIndexById(id: string | number, error: string) {\n let itemIndex = 0;\n if (typeof id === \"string\") {\n itemIndex = items.findIndex((_item) => _item.id === id);\n } else {\n itemIndex = id;\n }\n\n if (itemIndex < 0 || itemIndex >= items.length) {\n throw new Error(error);\n }\n\n return itemIndex;\n }\n function internalSlideToItem(id: string | number) {\n if (!init) return;\n\n firstItemReached.current = false;\n lastItemReached.current = false;\n\n const itemIndex = findItemIndexById(\n id,\n \"The item you want to slide to doesn't exist; please check che item id or the index you're passing to.\"\n );\n\n if (itemIndex === activeItem.current) {\n return;\n }\n\n const currentItem = findItemIndex(items[activeItem.current].id);\n const newActiveItem = findItemIndex(items[itemIndex].id);\n\n if (newActiveItem > currentItem) {\n slideToNextItem(\"click\", newActiveItem);\n } else {\n slideToPrevItem(\"click\", newActiveItem);\n }\n }\n function getIsNextItem(id: string) {\n const itemIndex = findItemIndex(id);\n const _activeItem = activeItem.current;\n if (withLoop && _activeItem === items.length - 1) {\n return itemIndex === 0;\n }\n return itemIndex === _activeItem + 1;\n }\n function getIsPrevItem(id: string) {\n const itemIndex = findItemIndex(id);\n const _activeItem = activeItem.current;\n if (withLoop && _activeItem === 0) {\n return itemIndex === items.length - 1;\n }\n return itemIndex === _activeItem - 1;\n }\n\n const carouselFragment = (\n <div\n ref={mainCarouselWrapperRef}\n {...getScrollHandlers()}\n style={{\n display: \"flex\",\n position: \"relative\",\n width: \"100%\",\n height: \"100%\",\n ...(getWrapperOverflowStyles() as React.CSSProperties),\n }}\n >\n <div\n ref={carouselTrackWrapperRef}\n {...bindDrag()}\n style={{\n position: \"relative\",\n display: \"flex\",\n flexDirection: carouselSlideAxis === \"x\" ? \"row\" : \"column\",\n touchAction: \"none\",\n ...getAnimatedWrapperStyles(),\n }}\n >\n {internalItems.map((item, index) => {\n return (\n <div\n key={`${item.id}-${index}`}\n className=\"use-spring-carousel-item\"\n data-testid=\"use-spring-carousel-item-wrapper\"\n style={{\n display: \"flex\",\n position: \"relative\",\n flex: \"1\",\n ...getItemStyles(),\n }}\n >\n {item.renderItem}\n </div>\n );\n })}\n </div>\n </div>\n );\n\n return {\n useListenToCustomEvent,\n carouselFragment,\n enterFullscreen,\n exitFullscreen,\n getIsFullscreen,\n thumbsFragment,\n slideToItem: internalSlideToItem,\n getIsNextItem,\n getIsPrevItem,\n slideToPrevItem: () => slideToPrevItem(),\n slideToNextItem: () => slideToNextItem(),\n getIsActiveItem: (id: string | number) => {\n return (\n findItemIndexById(id, \"The item you want to check doesn't exist\") ===\n activeItem.current\n );\n },\n };\n}\n\nconst Context =\n createContext<\n Omit<UseSpringReturnType, \"carouselFragment\" | \"thumbsFragment\"> | undefined\n >(undefined);\n\nfunction useSpringCarouselContext() {\n const context = useContext(Context);\n if (!context) {\n throw new Error(\n \"useSpringCarouselContext must be used within the carousel.\"\n );\n }\n return context;\n}\n\nexport { useSpringCarousel, useSpringCarouselContext };\n","import { FullGestureState } from \"@use-gesture/react\";\nimport { useEffect, useRef } from \"react\";\nimport { SlideActionType, SlideMode } from \"../types/common\";\n\nconst eventLabel = \"RSC::Event\";\n\ntype OnSlideStartChange = {\n eventName: \"onSlideStartChange\";\n slideActionType: SlideActionType;\n slideMode: SlideMode;\n nextItem: {\n index: number;\n id: string;\n startReached: boolean;\n endReached: boolean;\n };\n};\ntype OnSlideChange = {\n eventName: \"onSlideChange\";\n slideActionType: SlideActionType;\n slideMode: SlideMode;\n currentItem: {\n index: number;\n id: string;\n startReached: boolean;\n endReached: boolean;\n };\n};\ntype OnFullscreenChange = {\n eventName: \"onFullscreenChange\";\n isFullscreen: boolean;\n};\ntype OnDrag = Omit<FullGestureState<\"drag\">, \"event\"> & {\n eventName: \"onDrag\";\n slideActionType: SlideActionType;\n};\n\ntype Events = OnSlideStartChange | OnSlideChange | OnDrag | OnFullscreenChange;\n\ntype EventHandler = (props: Events) => void;\n\nexport type EmitEvent = (event: Events) => void;\nexport type UseListenToCustomEvent = {\n useListenToCustomEvent: (eventHandler: EventHandler) => void;\n emitEvent: (event: Events) => void;\n};\n\nexport function useEventsModule() {\n const targetEvent = useRef<HTMLDivElement | null>(null);\n\n useEffect(() => {\n targetEvent.current = document.createElement(\"div\");\n }, []);\n\n function useListenToCustomEvent(eventHandler: EventHandler) {\n useEffect(() => {\n function handleEvent(event: CustomEvent<Events>) {\n eventHandler(event.detail);\n }\n\n if (targetEvent.current) {\n // @ts-ignore\n targetEvent.current.addEventListener(eventLabel, handleEvent, false);\n return () => {\n // @ts-ignore\n targetEvent.current?.removeEventListener(\n eventLabel,\n handleEvent,\n false\n );\n };\n }\n }, []);\n }\n function emitEvent(event: Events) {\n if (targetEvent.current) {\n const newEvent = new CustomEvent(eventLabel, {\n detail: event,\n });\n targetEvent.current.dispatchEvent(newEvent);\n }\n }\n\n return {\n useListenToCustomEvent,\n emitEvent,\n };\n}\n","import { useRef, MutableRefObject, useEffect } from \"react\";\nimport screenfull from \"screenfull\";\nimport { EmitEvent } from \"./useEventsModule\";\n\ntype FullscreenModule = {\n mainCarouselWrapperRef: MutableRefObject<HTMLDivElement | null>;\n emitEvent: EmitEvent;\n handleResize?(): void;\n};\n\nexport function useFullscreenModule({\n mainCarouselWrapperRef,\n emitEvent,\n handleResize,\n}: FullscreenModule) {\n const isFullscreen = useRef(false);\n\n useEffect(() => {\n function handleFullscreenChange() {\n if (document.fullscreenElement) {\n setIsFullscreen(true);\n emitEvent({\n eventName: \"onFullscreenChange\",\n isFullscreen: true,\n });\n\n handleResize && handleResize();\n }\n\n if (!document.fullscreenElement) {\n setIsFullscreen(false);\n emitEvent({\n eventName: \"onFullscreenChange\",\n isFullscreen: false,\n });\n handleResize && handleResize();\n }\n }\n\n if (screenfull.isEnabled) {\n screenfull.on(\"change\", handleFullscreenChange);\n return () => {\n if (screenfull.isEnabled) {\n screenfull.off(\"change\", handleFullscreenChange);\n }\n };\n }\n }, []);\n\n function setIsFullscreen(_isFullscreen: boolean) {\n isFullscreen.current = _isFullscreen;\n }\n\n function getIsFullscreen() {\n return isFullscreen.current;\n }\n\n function enterFullscreen(elementRef?: HTMLElement) {\n if (screenfull.isEnabled) {\n screenfull.request(\n (elementRef || mainCarouselWrapperRef.current) as Element\n );\n }\n }\n\n function exitFullscreen() {\n screenfull.isEnabled && screenfull.exit();\n }\n\n return {\n enterFullscreen,\n exitFullscreen,\n getIsFullscreen,\n };\n}\n"],"names":["useThumbsModule","thumbsSlideAxis","withThumbs","prepareThumbsData","items","wrapperRef","useRef","spring","setSpring","useSpring","val","getTotalScrollValue","Math","round","Number","_a","current","getBoundingClientRect","thumbsFragment","_jsx","jsx","Object","assign","className","ref","onWheel","stop","style","display","flex","position","width","height","flexDirection","overflowX","overflowY","maxHeight","children","getPreparedItems","_items","map","i","id","renderThumb","handlePrepareThumbsData","thumbId","handleScroll","activeItem","thumbNode","querySelector","el","rect","top","left","bottom","window","innerHeight","document","documentElement","clientHeight","right","innerWidth","clientWidth","isInViewport","offset","offsetLeft","start","from","to","onChange","value","abs","Context","createContext","undefined","init","itemsPerSlide","slideType","gutter","withLoop","startEndGutter","carouselSlideAxis","disableGestures","draggingSlideTreshold","_draggingSlideTreshold","slideWhenThresholdIsReached","freeScroll","enableFreeScrollDrag","initialStartingPosition","initialActiveItem","prevWindowWidth","slideActionType","slideModeType","prevSlidedValue","pause","mainCarouselWrapperRef","setStartEndItemReachedOnFreeScroll","scrollLeft","scrollTop","carouselTrackWrapperRef","transform","firstItemReached","lastItemReached","internalItems","useCallback","getItems","emitEvent","useListenToCustomEvent","targetEvent","useEffect","createElement","eventHandler","handleEvent","event","detail","addEventListener","removeEventListener","newEvent","CustomEvent","dispatchEvent","useEventsModule","enterFullscreen","exitFullscreen","getIsFullscreen","handleResize","isFullscreen","setIsFullscreen","_isFullscreen","handleFullscreenChange","fullscreenElement","eventName","screenfull","isEnabled","on","off","elementRef","request","exit","useFullscreenModule","adjustCarouselWrapperPosition","getSlideValue","carouselItem","Error","slideToItem","nextActiveItem","immediate","slideMode","nextItem","startReached","endReached","index","config","default","velocity","onRest","finished","currentItem","length","getCarouselItemWidth","positionProperty","setPosition","v","currentFromValue","getFromValue","get","getToValue","type","next","slideToPrevItem","nextItemWillExceed","slideToNextItem","useLayoutEffect","floor","bindDrag","useDrag","state","isDragging","dragging","movement","currentMovement","direction","prevItemTreshold","nextItemTreshold","cancel","friction","tension","last","canceled","enabled","axis","findItemIndex","findIndex","item","findItemIndexById","error","itemIndex","_item","carouselFragment","touchAction","percentValue","getAnimatedWrapperStyles","marginRight","renderItem","newActiveItem","getIsNextItem","_activeItem","getIsPrevItem","getIsActiveItem","context","useContext"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../../node_modules/@react-spring/rafz/dist/react-spring-rafz.esm.js","../../node_modules/@react-spring/shared/dist/react-spring-shared.esm.js","../../node_modules/@react-spring/animated/dist/react-spring-animated.esm.js","../../node_modules/@react-spring/core/dist/react-spring-core.esm.js","../../node_modules/@react-spring/web/dist/react-spring-web.esm.js","../../src/modules/useEventsModule.ts","../../src/modules/useFullscreenModule.ts","../../src/modules/useThumbsModule.tsx","../../src/useSpringCarousel.tsx"],"sourcesContent":["let updateQueue = makeQueue();\nconst raf = fn => schedule(fn, updateQueue);\nlet writeQueue = makeQueue();\n\nraf.write = fn => schedule(fn, writeQueue);\n\nlet onStartQueue = makeQueue();\n\nraf.onStart = fn => schedule(fn, onStartQueue);\n\nlet onFrameQueue = makeQueue();\n\nraf.onFrame = fn => schedule(fn, onFrameQueue);\n\nlet onFinishQueue = makeQueue();\n\nraf.onFinish = fn => schedule(fn, onFinishQueue);\n\nlet timeouts = [];\n\nraf.setTimeout = (handler, ms) => {\n let time = raf.now() + ms;\n\n let cancel = () => {\n let i = timeouts.findIndex(t => t.cancel == cancel);\n if (~i) timeouts.splice(i, 1);\n pendingCount -= ~i ? 1 : 0;\n };\n\n let timeout = {\n time,\n handler,\n cancel\n };\n timeouts.splice(findTimeout(time), 0, timeout);\n pendingCount += 1;\n start();\n return timeout;\n};\n\nlet findTimeout = time => ~(~timeouts.findIndex(t => t.time > time) || ~timeouts.length);\n\nraf.cancel = fn => {\n onStartQueue.delete(fn);\n onFrameQueue.delete(fn);\n onFinishQueue.delete(fn);\n updateQueue.delete(fn);\n writeQueue.delete(fn);\n};\n\nraf.sync = fn => {\n sync = true;\n raf.batchedUpdates(fn);\n sync = false;\n};\n\nraf.throttle = fn => {\n let lastArgs;\n\n function queuedFn() {\n try {\n fn(...lastArgs);\n } finally {\n lastArgs = null;\n }\n }\n\n function throttled(...args) {\n lastArgs = args;\n raf.onStart(queuedFn);\n }\n\n throttled.handler = fn;\n\n throttled.cancel = () => {\n onStartQueue.delete(queuedFn);\n lastArgs = null;\n };\n\n return throttled;\n};\n\nlet nativeRaf = typeof window != 'undefined' ? window.requestAnimationFrame : () => {};\n\nraf.use = impl => nativeRaf = impl;\n\nraf.now = typeof performance != 'undefined' ? () => performance.now() : Date.now;\n\nraf.batchedUpdates = fn => fn();\n\nraf.catch = console.error;\nraf.frameLoop = 'always';\n\nraf.advance = () => {\n if (raf.frameLoop !== 'demand') {\n console.warn('Cannot call the manual advancement of rafz whilst frameLoop is not set as demand');\n } else {\n update();\n }\n};\n\nlet ts = -1;\nlet pendingCount = 0;\nlet sync = false;\n\nfunction schedule(fn, queue) {\n if (sync) {\n queue.delete(fn);\n fn(0);\n } else {\n queue.add(fn);\n start();\n }\n}\n\nfunction start() {\n if (ts < 0) {\n ts = 0;\n\n if (raf.frameLoop !== 'demand') {\n nativeRaf(loop);\n }\n }\n}\n\nfunction stop() {\n ts = -1;\n}\n\nfunction loop() {\n if (~ts) {\n nativeRaf(loop);\n raf.batchedUpdates(update);\n }\n}\n\nfunction update() {\n let prevTs = ts;\n ts = raf.now();\n let count = findTimeout(ts);\n\n if (count) {\n eachSafely(timeouts.splice(0, count), t => t.handler());\n pendingCount -= count;\n }\n\n if (!pendingCount) {\n stop();\n return;\n }\n\n onStartQueue.flush();\n updateQueue.flush(prevTs ? Math.min(64, ts - prevTs) : 16.667);\n onFrameQueue.flush();\n writeQueue.flush();\n onFinishQueue.flush();\n}\n\nfunction makeQueue() {\n let next = new Set();\n let current = next;\n return {\n add(fn) {\n pendingCount += current == next && !next.has(fn) ? 1 : 0;\n next.add(fn);\n },\n\n delete(fn) {\n pendingCount -= current == next && next.has(fn) ? 1 : 0;\n return next.delete(fn);\n },\n\n flush(arg) {\n if (current.size) {\n next = new Set();\n pendingCount -= current.size;\n eachSafely(current, fn => fn(arg) && next.add(fn));\n pendingCount += next.size;\n current = next;\n }\n }\n\n };\n}\n\nfunction eachSafely(values, each) {\n values.forEach(value => {\n try {\n each(value);\n } catch (e) {\n raf.catch(e);\n }\n });\n}\n\nconst __raf = {\n count() {\n return pendingCount;\n },\n\n isRunning() {\n return ts >= 0;\n },\n\n clear() {\n ts = -1;\n timeouts = [];\n onStartQueue = makeQueue();\n updateQueue = makeQueue();\n onFrameQueue = makeQueue();\n writeQueue = makeQueue();\n onFinishQueue = makeQueue();\n pendingCount = 0;\n }\n\n};\n\nexport { __raf, raf };\n","import { raf } from '@react-spring/rafz';\nexport { raf } from '@react-spring/rafz';\nimport { useEffect, useLayoutEffect, useRef, useState } from 'react';\n\nfunction noop() {}\nconst defineHidden = (obj, key, value) => Object.defineProperty(obj, key, {\n value,\n writable: true,\n configurable: true\n});\nconst is = {\n arr: Array.isArray,\n obj: a => !!a && a.constructor.name === 'Object',\n fun: a => typeof a === 'function',\n str: a => typeof a === 'string',\n num: a => typeof a === 'number',\n und: a => a === undefined\n};\nfunction isEqual(a, b) {\n if (is.arr(a)) {\n if (!is.arr(b) || a.length !== b.length) return false;\n\n for (let i = 0; i < a.length; i++) {\n if (a[i] !== b[i]) return false;\n }\n\n return true;\n }\n\n return a === b;\n}\nconst each = (obj, fn) => obj.forEach(fn);\nfunction eachProp(obj, fn, ctx) {\n if (is.arr(obj)) {\n for (let i = 0; i < obj.length; i++) {\n fn.call(ctx, obj[i], `${i}`);\n }\n\n return;\n }\n\n for (const key in obj) {\n if (obj.hasOwnProperty(key)) {\n fn.call(ctx, obj[key], key);\n }\n }\n}\nconst toArray = a => is.und(a) ? [] : is.arr(a) ? a : [a];\nfunction flush(queue, iterator) {\n if (queue.size) {\n const items = Array.from(queue);\n queue.clear();\n each(items, iterator);\n }\n}\nconst flushCalls = (queue, ...args) => flush(queue, fn => fn(...args));\nconst isSSR = () => typeof window === 'undefined' || !window.navigator || /ServerSideRendering|^Deno\\//.test(window.navigator.userAgent);\n\nlet createStringInterpolator$1;\nlet to;\nlet colors$1 = null;\nlet skipAnimation = false;\nlet willAdvance = noop;\nconst assign = globals => {\n if (globals.to) to = globals.to;\n if (globals.now) raf.now = globals.now;\n if (globals.colors !== undefined) colors$1 = globals.colors;\n if (globals.skipAnimation != null) skipAnimation = globals.skipAnimation;\n if (globals.createStringInterpolator) createStringInterpolator$1 = globals.createStringInterpolator;\n if (globals.requestAnimationFrame) raf.use(globals.requestAnimationFrame);\n if (globals.batchedUpdates) raf.batchedUpdates = globals.batchedUpdates;\n if (globals.willAdvance) willAdvance = globals.willAdvance;\n if (globals.frameLoop) raf.frameLoop = globals.frameLoop;\n};\n\nvar globals = /*#__PURE__*/Object.freeze({\n __proto__: null,\n get createStringInterpolator () { return createStringInterpolator$1; },\n get to () { return to; },\n get colors () { return colors$1; },\n get skipAnimation () { return skipAnimation; },\n get willAdvance () { return willAdvance; },\n assign: assign\n});\n\nconst startQueue = new Set();\nlet currentFrame = [];\nlet prevFrame = [];\nlet priority = 0;\nconst frameLoop = {\n get idle() {\n return !startQueue.size && !currentFrame.length;\n },\n\n start(animation) {\n if (priority > animation.priority) {\n startQueue.add(animation);\n raf.onStart(flushStartQueue);\n } else {\n startSafely(animation);\n raf(advance);\n }\n },\n\n advance,\n\n sort(animation) {\n if (priority) {\n raf.onFrame(() => frameLoop.sort(animation));\n } else {\n const prevIndex = currentFrame.indexOf(animation);\n\n if (~prevIndex) {\n currentFrame.splice(prevIndex, 1);\n startUnsafely(animation);\n }\n }\n },\n\n clear() {\n currentFrame = [];\n startQueue.clear();\n }\n\n};\n\nfunction flushStartQueue() {\n startQueue.forEach(startSafely);\n startQueue.clear();\n raf(advance);\n}\n\nfunction startSafely(animation) {\n if (!currentFrame.includes(animation)) startUnsafely(animation);\n}\n\nfunction startUnsafely(animation) {\n currentFrame.splice(findIndex(currentFrame, other => other.priority > animation.priority), 0, animation);\n}\n\nfunction advance(dt) {\n const nextFrame = prevFrame;\n\n for (let i = 0; i < currentFrame.length; i++) {\n const animation = currentFrame[i];\n priority = animation.priority;\n\n if (!animation.idle) {\n willAdvance(animation);\n animation.advance(dt);\n\n if (!animation.idle) {\n nextFrame.push(animation);\n }\n }\n }\n\n priority = 0;\n prevFrame = currentFrame;\n prevFrame.length = 0;\n currentFrame = nextFrame;\n return currentFrame.length > 0;\n}\n\nfunction findIndex(arr, test) {\n const index = arr.findIndex(test);\n return index < 0 ? arr.length : index;\n}\n\nconst colors = {\n transparent: 0x00000000,\n aliceblue: 0xf0f8ffff,\n antiquewhite: 0xfaebd7ff,\n aqua: 0x00ffffff,\n aquamarine: 0x7fffd4ff,\n azure: 0xf0ffffff,\n beige: 0xf5f5dcff,\n bisque: 0xffe4c4ff,\n black: 0x000000ff,\n blanchedalmond: 0xffebcdff,\n blue: 0x0000ffff,\n blueviolet: 0x8a2be2ff,\n brown: 0xa52a2aff,\n burlywood: 0xdeb887ff,\n burntsienna: 0xea7e5dff,\n cadetblue: 0x5f9ea0ff,\n chartreuse: 0x7fff00ff,\n chocolate: 0xd2691eff,\n coral: 0xff7f50ff,\n cornflowerblue: 0x6495edff,\n cornsilk: 0xfff8dcff,\n crimson: 0xdc143cff,\n cyan: 0x00ffffff,\n darkblue: 0x00008bff,\n darkcyan: 0x008b8bff,\n darkgoldenrod: 0xb8860bff,\n darkgray: 0xa9a9a9ff,\n darkgreen: 0x006400ff,\n darkgrey: 0xa9a9a9ff,\n darkkhaki: 0xbdb76bff,\n darkmagenta: 0x8b008bff,\n darkolivegreen: 0x556b2fff,\n darkorange: 0xff8c00ff,\n darkorchid: 0x9932ccff,\n darkred: 0x8b0000ff,\n darksalmon: 0xe9967aff,\n darkseagreen: 0x8fbc8fff,\n darkslateblue: 0x483d8bff,\n darkslategray: 0x2f4f4fff,\n darkslategrey: 0x2f4f4fff,\n darkturquoise: 0x00ced1ff,\n darkviolet: 0x9400d3ff,\n deeppink: 0xff1493ff,\n deepskyblue: 0x00bfffff,\n dimgray: 0x696969ff,\n dimgrey: 0x696969ff,\n dodgerblue: 0x1e90ffff,\n firebrick: 0xb22222ff,\n floralwhite: 0xfffaf0ff,\n forestgreen: 0x228b22ff,\n fuchsia: 0xff00ffff,\n gainsboro: 0xdcdcdcff,\n ghostwhite: 0xf8f8ffff,\n gold: 0xffd700ff,\n goldenrod: 0xdaa520ff,\n gray: 0x808080ff,\n green: 0x008000ff,\n greenyellow: 0xadff2fff,\n grey: 0x808080ff,\n honeydew: 0xf0fff0ff,\n hotpink: 0xff69b4ff,\n indianred: 0xcd5c5cff,\n indigo: 0x4b0082ff,\n ivory: 0xfffff0ff,\n khaki: 0xf0e68cff,\n lavender: 0xe6e6faff,\n lavenderblush: 0xfff0f5ff,\n lawngreen: 0x7cfc00ff,\n lemonchiffon: 0xfffacdff,\n lightblue: 0xadd8e6ff,\n lightcoral: 0xf08080ff,\n lightcyan: 0xe0ffffff,\n lightgoldenrodyellow: 0xfafad2ff,\n lightgray: 0xd3d3d3ff,\n lightgreen: 0x90ee90ff,\n lightgrey: 0xd3d3d3ff,\n lightpink: 0xffb6c1ff,\n lightsalmon: 0xffa07aff,\n lightseagreen: 0x20b2aaff,\n lightskyblue: 0x87cefaff,\n lightslategray: 0x778899ff,\n lightslategrey: 0x778899ff,\n lightsteelblue: 0xb0c4deff,\n lightyellow: 0xffffe0ff,\n lime: 0x00ff00ff,\n limegreen: 0x32cd32ff,\n linen: 0xfaf0e6ff,\n magenta: 0xff00ffff,\n maroon: 0x800000ff,\n mediumaquamarine: 0x66cdaaff,\n mediumblue: 0x0000cdff,\n mediumorchid: 0xba55d3ff,\n mediumpurple: 0x9370dbff,\n mediumseagreen: 0x3cb371ff,\n mediumslateblue: 0x7b68eeff,\n mediumspringgreen: 0x00fa9aff,\n mediumturquoise: 0x48d1ccff,\n mediumvioletred: 0xc71585ff,\n midnightblue: 0x191970ff,\n mintcream: 0xf5fffaff,\n mistyrose: 0xffe4e1ff,\n moccasin: 0xffe4b5ff,\n navajowhite: 0xffdeadff,\n navy: 0x000080ff,\n oldlace: 0xfdf5e6ff,\n olive: 0x808000ff,\n olivedrab: 0x6b8e23ff,\n orange: 0xffa500ff,\n orangered: 0xff4500ff,\n orchid: 0xda70d6ff,\n palegoldenrod: 0xeee8aaff,\n palegreen: 0x98fb98ff,\n paleturquoise: 0xafeeeeff,\n palevioletred: 0xdb7093ff,\n papayawhip: 0xffefd5ff,\n peachpuff: 0xffdab9ff,\n peru: 0xcd853fff,\n pink: 0xffc0cbff,\n plum: 0xdda0ddff,\n powderblue: 0xb0e0e6ff,\n purple: 0x800080ff,\n rebeccapurple: 0x663399ff,\n red: 0xff0000ff,\n rosybrown: 0xbc8f8fff,\n royalblue: 0x4169e1ff,\n saddlebrown: 0x8b4513ff,\n salmon: 0xfa8072ff,\n sandybrown: 0xf4a460ff,\n seagreen: 0x2e8b57ff,\n seashell: 0xfff5eeff,\n sienna: 0xa0522dff,\n silver: 0xc0c0c0ff,\n skyblue: 0x87ceebff,\n slateblue: 0x6a5acdff,\n slategray: 0x708090ff,\n slategrey: 0x708090ff,\n snow: 0xfffafaff,\n springgreen: 0x00ff7fff,\n steelblue: 0x4682b4ff,\n tan: 0xd2b48cff,\n teal: 0x008080ff,\n thistle: 0xd8bfd8ff,\n tomato: 0xff6347ff,\n turquoise: 0x40e0d0ff,\n violet: 0xee82eeff,\n wheat: 0xf5deb3ff,\n white: 0xffffffff,\n whitesmoke: 0xf5f5f5ff,\n yellow: 0xffff00ff,\n yellowgreen: 0x9acd32ff\n};\n\nconst NUMBER = '[-+]?\\\\d*\\\\.?\\\\d+';\nconst PERCENTAGE = NUMBER + '%';\n\nfunction call(...parts) {\n return '\\\\(\\\\s*(' + parts.join(')\\\\s*,\\\\s*(') + ')\\\\s*\\\\)';\n}\n\nconst rgb = new RegExp('rgb' + call(NUMBER, NUMBER, NUMBER));\nconst rgba = new RegExp('rgba' + call(NUMBER, NUMBER, NUMBER, NUMBER));\nconst hsl = new RegExp('hsl' + call(NUMBER, PERCENTAGE, PERCENTAGE));\nconst hsla = new RegExp('hsla' + call(NUMBER, PERCENTAGE, PERCENTAGE, NUMBER));\nconst hex3 = /^#([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/;\nconst hex4 = /^#([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/;\nconst hex6 = /^#([0-9a-fA-F]{6})$/;\nconst hex8 = /^#([0-9a-fA-F]{8})$/;\n\nfunction normalizeColor(color) {\n let match;\n\n if (typeof color === 'number') {\n return color >>> 0 === color && color >= 0 && color <= 0xffffffff ? color : null;\n }\n\n if (match = hex6.exec(color)) return parseInt(match[1] + 'ff', 16) >>> 0;\n\n if (colors$1 && colors$1[color] !== undefined) {\n return colors$1[color];\n }\n\n if (match = rgb.exec(color)) {\n return (parse255(match[1]) << 24 | parse255(match[2]) << 16 | parse255(match[3]) << 8 | 0x000000ff) >>> 0;\n }\n\n if (match = rgba.exec(color)) {\n return (parse255(match[1]) << 24 | parse255(match[2]) << 16 | parse255(match[3]) << 8 | parse1(match[4])) >>> 0;\n }\n\n if (match = hex3.exec(color)) {\n return parseInt(match[1] + match[1] + match[2] + match[2] + match[3] + match[3] + 'ff', 16) >>> 0;\n }\n\n if (match = hex8.exec(color)) return parseInt(match[1], 16) >>> 0;\n\n if (match = hex4.exec(color)) {\n return parseInt(match[1] + match[1] + match[2] + match[2] + match[3] + match[3] + match[4] + match[4], 16) >>> 0;\n }\n\n if (match = hsl.exec(color)) {\n return (hslToRgb(parse360(match[1]), parsePercentage(match[2]), parsePercentage(match[3])) | 0x000000ff) >>> 0;\n }\n\n if (match = hsla.exec(color)) {\n return (hslToRgb(parse360(match[1]), parsePercentage(match[2]), parsePercentage(match[3])) | parse1(match[4])) >>> 0;\n }\n\n return null;\n}\n\nfunction hue2rgb(p, q, t) {\n if (t < 0) t += 1;\n if (t > 1) t -= 1;\n if (t < 1 / 6) return p + (q - p) * 6 * t;\n if (t < 1 / 2) return q;\n if (t < 2 / 3) return p + (q - p) * (2 / 3 - t) * 6;\n return p;\n}\n\nfunction hslToRgb(h, s, l) {\n const q = l < 0.5 ? l * (1 + s) : l + s - l * s;\n const p = 2 * l - q;\n const r = hue2rgb(p, q, h + 1 / 3);\n const g = hue2rgb(p, q, h);\n const b = hue2rgb(p, q, h - 1 / 3);\n return Math.round(r * 255) << 24 | Math.round(g * 255) << 16 | Math.round(b * 255) << 8;\n}\n\nfunction parse255(str) {\n const int = parseInt(str, 10);\n if (int < 0) return 0;\n if (int > 255) return 255;\n return int;\n}\n\nfunction parse360(str) {\n const int = parseFloat(str);\n return (int % 360 + 360) % 360 / 360;\n}\n\nfunction parse1(str) {\n const num = parseFloat(str);\n if (num < 0) return 0;\n if (num > 1) return 255;\n return Math.round(num * 255);\n}\n\nfunction parsePercentage(str) {\n const int = parseFloat(str);\n if (int < 0) return 0;\n if (int > 100) return 1;\n return int / 100;\n}\n\nfunction colorToRgba(input) {\n let int32Color = normalizeColor(input);\n if (int32Color === null) return input;\n int32Color = int32Color || 0;\n let r = (int32Color & 0xff000000) >>> 24;\n let g = (int32Color & 0x00ff0000) >>> 16;\n let b = (int32Color & 0x0000ff00) >>> 8;\n let a = (int32Color & 0x000000ff) / 255;\n return `rgba(${r}, ${g}, ${b}, ${a})`;\n}\n\nconst createInterpolator = (range, output, extrapolate) => {\n if (is.fun(range)) {\n return range;\n }\n\n if (is.arr(range)) {\n return createInterpolator({\n range,\n output: output,\n extrapolate\n });\n }\n\n if (is.str(range.output[0])) {\n return createStringInterpolator$1(range);\n }\n\n const config = range;\n const outputRange = config.output;\n const inputRange = config.range || [0, 1];\n const extrapolateLeft = config.extrapolateLeft || config.extrapolate || 'extend';\n const extrapolateRight = config.extrapolateRight || config.extrapolate || 'extend';\n\n const easing = config.easing || (t => t);\n\n return input => {\n const range = findRange(input, inputRange);\n return interpolate(input, inputRange[range], inputRange[range + 1], outputRange[range], outputRange[range + 1], easing, extrapolateLeft, extrapolateRight, config.map);\n };\n};\n\nfunction interpolate(input, inputMin, inputMax, outputMin, outputMax, easing, extrapolateLeft, extrapolateRight, map) {\n let result = map ? map(input) : input;\n\n if (result < inputMin) {\n if (extrapolateLeft === 'identity') return result;else if (extrapolateLeft === 'clamp') result = inputMin;\n }\n\n if (result > inputMax) {\n if (extrapolateRight === 'identity') return result;else if (extrapolateRight === 'clamp') result = inputMax;\n }\n\n if (outputMin === outputMax) return outputMin;\n if (inputMin === inputMax) return input <= inputMin ? outputMin : outputMax;\n if (inputMin === -Infinity) result = -result;else if (inputMax === Infinity) result = result - inputMin;else result = (result - inputMin) / (inputMax - inputMin);\n result = easing(result);\n if (outputMin === -Infinity) result = -result;else if (outputMax === Infinity) result = result + outputMin;else result = result * (outputMax - outputMin) + outputMin;\n return result;\n}\n\nfunction findRange(input, inputRange) {\n for (var i = 1; i < inputRange.length - 1; ++i) if (inputRange[i] >= input) break;\n\n return i - 1;\n}\n\nfunction _extends() {\n _extends = Object.assign ? Object.assign.bind() : function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n return _extends.apply(this, arguments);\n}\n\nconst $get = Symbol.for('FluidValue.get');\nconst $observers = Symbol.for('FluidValue.observers');\n\nconst hasFluidValue = arg => Boolean(arg && arg[$get]);\n\nconst getFluidValue = arg => arg && arg[$get] ? arg[$get]() : arg;\n\nconst getFluidObservers = target => target[$observers] || null;\n\nfunction callFluidObserver(observer, event) {\n if (observer.eventObserved) {\n observer.eventObserved(event);\n } else {\n observer(event);\n }\n}\n\nfunction callFluidObservers(target, event) {\n let observers = target[$observers];\n\n if (observers) {\n observers.forEach(observer => {\n callFluidObserver(observer, event);\n });\n }\n}\n\nclass FluidValue {\n constructor(get) {\n this[$get] = void 0;\n this[$observers] = void 0;\n\n if (!get && !(get = this.get)) {\n throw Error('Unknown getter');\n }\n\n setFluidGetter(this, get);\n }\n\n}\n\nconst setFluidGetter = (target, get) => setHidden(target, $get, get);\n\nfunction addFluidObserver(target, observer) {\n if (target[$get]) {\n let observers = target[$observers];\n\n if (!observers) {\n setHidden(target, $observers, observers = new Set());\n }\n\n if (!observers.has(observer)) {\n observers.add(observer);\n\n if (target.observerAdded) {\n target.observerAdded(observers.size, observer);\n }\n }\n }\n\n return observer;\n}\n\nfunction removeFluidObserver(target, observer) {\n let observers = target[$observers];\n\n if (observers && observers.has(observer)) {\n const count = observers.size - 1;\n\n if (count) {\n observers.delete(observer);\n } else {\n target[$observers] = null;\n }\n\n if (target.observerRemoved) {\n target.observerRemoved(count, observer);\n }\n }\n}\n\nconst setHidden = (target, key, value) => Object.defineProperty(target, key, {\n value,\n writable: true,\n configurable: true\n});\n\nconst numberRegex = /[+\\-]?(?:0|[1-9]\\d*)(?:\\.\\d*)?(?:[eE][+\\-]?\\d+)?/g;\nconst colorRegex = /(#(?:[0-9a-f]{2}){2,4}|(#[0-9a-f]{3})|(rgb|hsl)a?\\((-?\\d+%?[,\\s]+){2,3}\\s*[\\d\\.]+%?\\))/gi;\nconst unitRegex = new RegExp(`(${numberRegex.source})(%|[a-z]+)`, 'i');\nconst rgbaRegex = /rgba\\(([0-9\\.-]+), ([0-9\\.-]+), ([0-9\\.-]+), ([0-9\\.-]+)\\)/gi;\nconst cssVariableRegex = /var\\((--[a-zA-Z0-9-_]+),? ?([a-zA-Z0-9 ()%#.,-]+)?\\)/;\n\nconst variableToRgba = input => {\n const [token, fallback] = parseCSSVariable(input);\n\n if (!token || isSSR()) {\n return input;\n }\n\n const value = window.getComputedStyle(document.documentElement).getPropertyValue(token);\n\n if (value) {\n return value.trim();\n } else if (fallback && fallback.startsWith('--')) {\n const _value = window.getComputedStyle(document.documentElement).getPropertyValue(fallback);\n\n if (_value) {\n return _value;\n } else {\n return input;\n }\n } else if (fallback && cssVariableRegex.test(fallback)) {\n return variableToRgba(fallback);\n } else if (fallback) {\n return fallback;\n }\n\n return input;\n};\n\nconst parseCSSVariable = current => {\n const match = cssVariableRegex.exec(current);\n if (!match) return [,];\n const [, token, fallback] = match;\n return [token, fallback];\n};\n\nlet namedColorRegex;\n\nconst rgbaRound = (_, p1, p2, p3, p4) => `rgba(${Math.round(p1)}, ${Math.round(p2)}, ${Math.round(p3)}, ${p4})`;\n\nconst createStringInterpolator = config => {\n if (!namedColorRegex) namedColorRegex = colors$1 ? new RegExp(`(${Object.keys(colors$1).join('|')})(?!\\\\w)`, 'g') : /^\\b$/;\n const output = config.output.map(value => {\n return getFluidValue(value).replace(cssVariableRegex, variableToRgba).replace(colorRegex, colorToRgba).replace(namedColorRegex, colorToRgba);\n });\n const keyframes = output.map(value => value.match(numberRegex).map(Number));\n const outputRanges = keyframes[0].map((_, i) => keyframes.map(values => {\n if (!(i in values)) {\n throw Error('The arity of each \"output\" value must be equal');\n }\n\n return values[i];\n }));\n const interpolators = outputRanges.map(output => createInterpolator(_extends({}, config, {\n output\n })));\n return input => {\n var _output$find;\n\n const missingUnit = !unitRegex.test(output[0]) && ((_output$find = output.find(value => unitRegex.test(value))) == null ? void 0 : _output$find.replace(numberRegex, ''));\n let i = 0;\n return output[0].replace(numberRegex, () => `${interpolators[i++](input)}${missingUnit || ''}`).replace(rgbaRegex, rgbaRound);\n };\n};\n\nconst prefix = 'react-spring: ';\n\nconst once = fn => {\n const func = fn;\n let called = false;\n\n if (typeof func != 'function') {\n throw new TypeError(`${prefix}once requires a function parameter`);\n }\n\n return (...args) => {\n if (!called) {\n func(...args);\n called = true;\n }\n };\n};\n\nconst warnInterpolate = once(console.warn);\nfunction deprecateInterpolate() {\n warnInterpolate(`${prefix}The \"interpolate\" function is deprecated in v9 (use \"to\" instead)`);\n}\nconst warnDirectCall = once(console.warn);\nfunction deprecateDirectCall() {\n warnDirectCall(`${prefix}Directly calling start instead of using the api object is deprecated in v9 (use \".start\" instead), this will be removed in later 0.X.0 versions`);\n}\n\nfunction isAnimatedString(value) {\n return is.str(value) && (value[0] == '#' || /\\d/.test(value) || !isSSR() && cssVariableRegex.test(value) || value in (colors$1 || {}));\n}\n\nconst useIsomorphicLayoutEffect = isSSR() ? useEffect : useLayoutEffect;\n\nconst useIsMounted = () => {\n const isMounted = useRef(false);\n useIsomorphicLayoutEffect(() => {\n isMounted.current = true;\n return () => {\n isMounted.current = false;\n };\n }, []);\n return isMounted;\n};\n\nfunction useForceUpdate() {\n const update = useState()[1];\n const isMounted = useIsMounted();\n return () => {\n if (isMounted.current) {\n update(Math.random());\n }\n };\n}\n\nfunction useMemoOne(getResult, inputs) {\n const [initial] = useState(() => ({\n inputs,\n result: getResult()\n }));\n const committed = useRef();\n const prevCache = committed.current;\n let cache = prevCache;\n\n if (cache) {\n const useCache = Boolean(inputs && cache.inputs && areInputsEqual(inputs, cache.inputs));\n\n if (!useCache) {\n cache = {\n inputs,\n result: getResult()\n };\n }\n } else {\n cache = initial;\n }\n\n useEffect(() => {\n committed.current = cache;\n\n if (prevCache == initial) {\n initial.inputs = initial.result = undefined;\n }\n }, [cache]);\n return cache.result;\n}\n\nfunction areInputsEqual(next, prev) {\n if (next.length !== prev.length) {\n return false;\n }\n\n for (let i = 0; i < next.length; i++) {\n if (next[i] !== prev[i]) {\n return false;\n }\n }\n\n return true;\n}\n\nconst useOnce = effect => useEffect(effect, emptyDeps);\nconst emptyDeps = [];\n\nfunction usePrev(value) {\n const prevRef = useRef();\n useEffect(() => {\n prevRef.current = value;\n });\n return prevRef.current;\n}\n\nconst useReducedMotion = () => {\n const [reducedMotion, setReducedMotion] = useState(null);\n useIsomorphicLayoutEffect(() => {\n const mql = window.matchMedia('(prefers-reduced-motion)');\n\n const handleMediaChange = e => {\n setReducedMotion(e.matches);\n assign({\n skipAnimation: e.matches\n });\n };\n\n handleMediaChange(mql);\n mql.addEventListener('change', handleMediaChange);\n return () => {\n mql.removeEventListener('change', handleMediaChange);\n };\n }, []);\n return reducedMotion;\n};\n\nexport { FluidValue, globals as Globals, addFluidObserver, callFluidObserver, callFluidObservers, colorToRgba, colors, createInterpolator, createStringInterpolator, defineHidden, deprecateDirectCall, deprecateInterpolate, each, eachProp, flush, flushCalls, frameLoop, getFluidObservers, getFluidValue, hasFluidValue, hex3, hex4, hex6, hex8, hsl, hsla, is, isAnimatedString, isEqual, isSSR, noop, removeFluidObserver, rgb, rgba, setFluidGetter, toArray, useForceUpdate, useIsomorphicLayoutEffect, useMemoOne, useOnce, usePrev, useReducedMotion };\n","import { defineHidden, is, createInterpolator, eachProp, hasFluidValue, getFluidValue, each, isAnimatedString, useForceUpdate, useIsomorphicLayoutEffect, addFluidObserver, removeFluidObserver, raf, useOnce } from '@react-spring/shared';\nimport * as React from 'react';\nimport { forwardRef, useRef, useCallback, useEffect } from 'react';\n\nconst $node = Symbol.for('Animated:node');\nconst isAnimated = value => !!value && value[$node] === value;\nconst getAnimated = owner => owner && owner[$node];\nconst setAnimated = (owner, node) => defineHidden(owner, $node, node);\nconst getPayload = owner => owner && owner[$node] && owner[$node].getPayload();\nclass Animated {\n constructor() {\n this.payload = void 0;\n setAnimated(this, this);\n }\n\n getPayload() {\n return this.payload || [];\n }\n\n}\n\nclass AnimatedValue extends Animated {\n constructor(_value) {\n super();\n this.done = true;\n this.elapsedTime = void 0;\n this.lastPosition = void 0;\n this.lastVelocity = void 0;\n this.v0 = void 0;\n this.durationProgress = 0;\n this._value = _value;\n\n if (is.num(this._value)) {\n this.lastPosition = this._value;\n }\n }\n\n static create(value) {\n return new AnimatedValue(value);\n }\n\n getPayload() {\n return [this];\n }\n\n getValue() {\n return this._value;\n }\n\n setValue(value, step) {\n if (is.num(value)) {\n this.lastPosition = value;\n\n if (step) {\n value = Math.round(value / step) * step;\n\n if (this.done) {\n this.lastPosition = value;\n }\n }\n }\n\n if (this._value === value) {\n return false;\n }\n\n this._value = value;\n return true;\n }\n\n reset() {\n const {\n done\n } = this;\n this.done = false;\n\n if (is.num(this._value)) {\n this.elapsedTime = 0;\n this.durationProgress = 0;\n this.lastPosition = this._value;\n if (done) this.lastVelocity = null;\n this.v0 = null;\n }\n }\n\n}\n\nclass AnimatedString extends AnimatedValue {\n constructor(value) {\n super(0);\n this._string = null;\n this._toString = void 0;\n this._toString = createInterpolator({\n output: [value, value]\n });\n }\n\n static create(value) {\n return new AnimatedString(value);\n }\n\n getValue() {\n let value = this._string;\n return value == null ? this._string = this._toString(this._value) : value;\n }\n\n setValue(value) {\n if (is.str(value)) {\n if (value == this._string) {\n return false;\n }\n\n this._string = value;\n this._value = 1;\n } else if (super.setValue(value)) {\n this._string = null;\n } else {\n return false;\n }\n\n return true;\n }\n\n reset(goal) {\n if (goal) {\n this._toString = createInterpolator({\n output: [this.getValue(), goal]\n });\n }\n\n this._value = 0;\n super.reset();\n }\n\n}\n\nconst TreeContext = {\n dependencies: null\n};\n\nclass AnimatedObject extends Animated {\n constructor(source) {\n super();\n this.source = source;\n this.setValue(source);\n }\n\n getValue(animated) {\n const values = {};\n eachProp(this.source, (source, key) => {\n if (isAnimated(source)) {\n values[key] = source.getValue(animated);\n } else if (hasFluidValue(source)) {\n values[key] = getFluidValue(source);\n } else if (!animated) {\n values[key] = source;\n }\n });\n return values;\n }\n\n setValue(source) {\n this.source = source;\n this.payload = this._makePayload(source);\n }\n\n reset() {\n if (this.payload) {\n each(this.payload, node => node.reset());\n }\n }\n\n _makePayload(source) {\n if (source) {\n const payload = new Set();\n eachProp(source, this._addToPayload, payload);\n return Array.from(payload);\n }\n }\n\n _addToPayload(source) {\n if (TreeContext.dependencies && hasFluidValue(source)) {\n TreeContext.dependencies.add(source);\n }\n\n const payload = getPayload(source);\n\n if (payload) {\n each(payload, node => this.add(node));\n }\n }\n\n}\n\nclass AnimatedArray extends AnimatedObject {\n constructor(source) {\n super(source);\n }\n\n static create(source) {\n return new AnimatedArray(source);\n }\n\n getValue() {\n return this.source.map(node => node.getValue());\n }\n\n setValue(source) {\n const payload = this.getPayload();\n\n if (source.length == payload.length) {\n return payload.map((node, i) => node.setValue(source[i])).some(Boolean);\n }\n\n super.setValue(source.map(makeAnimated));\n return true;\n }\n\n}\n\nfunction makeAnimated(value) {\n const nodeType = isAnimatedString(value) ? AnimatedString : AnimatedValue;\n return nodeType.create(value);\n}\n\nfunction getAnimatedType(value) {\n const parentNode = getAnimated(value);\n return parentNode ? parentNode.constructor : is.arr(value) ? AnimatedArray : isAnimatedString(value) ? AnimatedString : AnimatedValue;\n}\n\nfunction _extends() {\n _extends = Object.assign ? Object.assign.bind() : function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n return _extends.apply(this, arguments);\n}\n\nconst withAnimated = (Component, host) => {\n const hasInstance = !is.fun(Component) || Component.prototype && Component.prototype.isReactComponent;\n return forwardRef((givenProps, givenRef) => {\n const instanceRef = useRef(null);\n const ref = hasInstance && useCallback(value => {\n instanceRef.current = updateRef(givenRef, value);\n }, [givenRef]);\n const [props, deps] = getAnimatedState(givenProps, host);\n const forceUpdate = useForceUpdate();\n\n const callback = () => {\n const instance = instanceRef.current;\n\n if (hasInstance && !instance) {\n return;\n }\n\n const didUpdate = instance ? host.applyAnimatedValues(instance, props.getValue(true)) : false;\n\n if (didUpdate === false) {\n forceUpdate();\n }\n };\n\n const observer = new PropsObserver(callback, deps);\n const observerRef = useRef();\n useIsomorphicLayoutEffect(() => {\n observerRef.current = observer;\n each(deps, dep => addFluidObserver(dep, observer));\n return () => {\n if (observerRef.current) {\n each(observerRef.current.deps, dep => removeFluidObserver(dep, observerRef.current));\n raf.cancel(observerRef.current.update);\n }\n };\n });\n useEffect(callback, []);\n useOnce(() => () => {\n const observer = observerRef.current;\n each(observer.deps, dep => removeFluidObserver(dep, observer));\n });\n const usedProps = host.getComponentProps(props.getValue());\n return React.createElement(Component, _extends({}, usedProps, {\n ref: ref\n }));\n });\n};\n\nclass PropsObserver {\n constructor(update, deps) {\n this.update = update;\n this.deps = deps;\n }\n\n eventObserved(event) {\n if (event.type == 'change') {\n raf.write(this.update);\n }\n }\n\n}\n\nfunction getAnimatedState(props, host) {\n const dependencies = new Set();\n TreeContext.dependencies = dependencies;\n if (props.style) props = _extends({}, props, {\n style: host.createAnimatedStyle(props.style)\n });\n props = new AnimatedObject(props);\n TreeContext.dependencies = null;\n return [props, dependencies];\n}\n\nfunction updateRef(ref, value) {\n if (ref) {\n if (is.fun(ref)) ref(value);else ref.current = value;\n }\n\n return value;\n}\n\nconst cacheKey = Symbol.for('AnimatedComponent');\nconst createHost = (components, {\n applyAnimatedValues: _applyAnimatedValues = () => false,\n createAnimatedStyle: _createAnimatedStyle = style => new AnimatedObject(style),\n getComponentProps: _getComponentProps = props => props\n} = {}) => {\n const hostConfig = {\n applyAnimatedValues: _applyAnimatedValues,\n createAnimatedStyle: _createAnimatedStyle,\n getComponentProps: _getComponentProps\n };\n\n const animated = Component => {\n const displayName = getDisplayName(Component) || 'Anonymous';\n\n if (is.str(Component)) {\n Component = animated[Component] || (animated[Component] = withAnimated(Component, hostConfig));\n } else {\n Component = Component[cacheKey] || (Component[cacheKey] = withAnimated(Component, hostConfig));\n }\n\n Component.displayName = `Animated(${displayName})`;\n return Component;\n };\n\n eachProp(components, (Component, key) => {\n if (is.arr(components)) {\n key = getDisplayName(Component);\n }\n\n animated[key] = animated(Component);\n });\n return {\n animated\n };\n};\n\nconst getDisplayName = arg => is.str(arg) ? arg : arg && is.str(arg.displayName) ? arg.displayName : is.fun(arg) && arg.name || null;\n\nexport { Animated, AnimatedArray, AnimatedObject, AnimatedString, AnimatedValue, createHost, getAnimated, getAnimatedType, getPayload, isAnimated, setAnimated };\n","import { eachProp, is, toArray, getFluidValue, isAnimatedString, Globals, useIsomorphicLayoutEffect, each, raf, flush, FluidValue, deprecateInterpolate, callFluidObservers, frameLoop, hasFluidValue, flushCalls, isEqual, getFluidObservers, addFluidObserver, removeFluidObserver, noop, useMemoOne, deprecateDirectCall, useForceUpdate, usePrev, useOnce, createInterpolator, createStringInterpolator } from '@react-spring/shared';\nexport { Globals, createInterpolator, useIsomorphicLayoutEffect, useReducedMotion } from '@react-spring/shared';\nimport * as React from 'react';\nimport { useContext, useMemo, useRef, useState } from 'react';\nimport { getAnimated, AnimatedValue, getPayload, AnimatedString, getAnimatedType, setAnimated } from '@react-spring/animated';\nexport * from '@react-spring/types/animated';\nexport * from '@react-spring/types/interpolation';\n\nfunction _extends() {\n _extends = Object.assign ? Object.assign.bind() : function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n return _extends.apply(this, arguments);\n}\n\nfunction callProp(value, ...args) {\n return is.fun(value) ? value(...args) : value;\n}\nconst matchProp = (value, key) => value === true || !!(key && value && (is.fun(value) ? value(key) : toArray(value).includes(key)));\nconst resolveProp = (prop, key) => is.obj(prop) ? key && prop[key] : prop;\nconst getDefaultProp = (props, key) => props.default === true ? props[key] : props.default ? props.default[key] : undefined;\n\nconst noopTransform = value => value;\n\nconst getDefaultProps = (props, transform = noopTransform) => {\n let keys = DEFAULT_PROPS;\n\n if (props.default && props.default !== true) {\n props = props.default;\n keys = Object.keys(props);\n }\n\n const defaults = {};\n\n for (const key of keys) {\n const value = transform(props[key], key);\n\n if (!is.und(value)) {\n defaults[key] = value;\n }\n }\n\n return defaults;\n};\nconst DEFAULT_PROPS = ['config', 'onProps', 'onStart', 'onChange', 'onPause', 'onResume', 'onRest'];\nconst RESERVED_PROPS = {\n config: 1,\n from: 1,\n to: 1,\n ref: 1,\n loop: 1,\n reset: 1,\n pause: 1,\n cancel: 1,\n reverse: 1,\n immediate: 1,\n default: 1,\n delay: 1,\n onProps: 1,\n onStart: 1,\n onChange: 1,\n onPause: 1,\n onResume: 1,\n onRest: 1,\n onResolve: 1,\n items: 1,\n trail: 1,\n sort: 1,\n expires: 1,\n initial: 1,\n enter: 1,\n update: 1,\n leave: 1,\n children: 1,\n onDestroyed: 1,\n keys: 1,\n callId: 1,\n parentId: 1\n};\n\nfunction getForwardProps(props) {\n const forward = {};\n let count = 0;\n eachProp(props, (value, prop) => {\n if (!RESERVED_PROPS[prop]) {\n forward[prop] = value;\n count++;\n }\n });\n\n if (count) {\n return forward;\n }\n}\n\nfunction inferTo(props) {\n const to = getForwardProps(props);\n\n if (to) {\n const out = {\n to\n };\n eachProp(props, (val, key) => key in to || (out[key] = val));\n return out;\n }\n\n return _extends({}, props);\n}\nfunction computeGoal(value) {\n value = getFluidValue(value);\n return is.arr(value) ? value.map(computeGoal) : isAnimatedString(value) ? Globals.createStringInterpolator({\n range: [0, 1],\n output: [value, value]\n })(1) : value;\n}\nfunction hasProps(props) {\n for (const _ in props) return true;\n\n return false;\n}\nfunction isAsyncTo(to) {\n return is.fun(to) || is.arr(to) && is.obj(to[0]);\n}\nfunction detachRefs(ctrl, ref) {\n var _ctrl$ref;\n\n (_ctrl$ref = ctrl.ref) == null ? void 0 : _ctrl$ref.delete(ctrl);\n ref == null ? void 0 : ref.delete(ctrl);\n}\nfunction replaceRef(ctrl, ref) {\n if (ref && ctrl.ref !== ref) {\n var _ctrl$ref2;\n\n (_ctrl$ref2 = ctrl.ref) == null ? void 0 : _ctrl$ref2.delete(ctrl);\n ref.add(ctrl);\n ctrl.ref = ref;\n }\n}\n\nfunction useChain(refs, timeSteps, timeFrame = 1000) {\n useIsomorphicLayoutEffect(() => {\n if (timeSteps) {\n let prevDelay = 0;\n each(refs, (ref, i) => {\n const controllers = ref.current;\n\n if (controllers.length) {\n let delay = timeFrame * timeSteps[i];\n if (isNaN(delay)) delay = prevDelay;else prevDelay = delay;\n each(controllers, ctrl => {\n each(ctrl.queue, props => {\n const memoizedDelayProp = props.delay;\n\n props.delay = key => delay + callProp(memoizedDelayProp || 0, key);\n });\n });\n ref.start();\n }\n });\n } else {\n let p = Promise.resolve();\n each(refs, ref => {\n const controllers = ref.current;\n\n if (controllers.length) {\n const queues = controllers.map(ctrl => {\n const q = ctrl.queue;\n ctrl.queue = [];\n return q;\n });\n p = p.then(() => {\n each(controllers, (ctrl, i) => each(queues[i] || [], update => ctrl.queue.push(update)));\n return Promise.all(ref.start());\n });\n }\n });\n }\n });\n}\n\nconst config = {\n default: {\n tension: 170,\n friction: 26\n },\n gentle: {\n tension: 120,\n friction: 14\n },\n wobbly: {\n tension: 180,\n friction: 12\n },\n stiff: {\n tension: 210,\n friction: 20\n },\n slow: {\n tension: 280,\n friction: 60\n },\n molasses: {\n tension: 280,\n friction: 120\n }\n};\nconst c1 = 1.70158;\nconst c2 = c1 * 1.525;\nconst c3 = c1 + 1;\nconst c4 = 2 * Math.PI / 3;\nconst c5 = 2 * Math.PI / 4.5;\n\nconst bounceOut = x => {\n const n1 = 7.5625;\n const d1 = 2.75;\n\n if (x < 1 / d1) {\n return n1 * x * x;\n } else if (x < 2 / d1) {\n return n1 * (x -= 1.5 / d1) * x + 0.75;\n } else if (x < 2.5 / d1) {\n return n1 * (x -= 2.25 / d1) * x + 0.9375;\n } else {\n return n1 * (x -= 2.625 / d1) * x + 0.984375;\n }\n};\n\nconst easings = {\n linear: x => x,\n easeInQuad: x => x * x,\n easeOutQuad: x => 1 - (1 - x) * (1 - x),\n easeInOutQuad: x => x < 0.5 ? 2 * x * x : 1 - Math.pow(-2 * x + 2, 2) / 2,\n easeInCubic: x => x * x * x,\n easeOutCubic: x => 1 - Math.pow(1 - x, 3),\n easeInOutCubic: x => x < 0.5 ? 4 * x * x * x : 1 - Math.pow(-2 * x + 2, 3) / 2,\n easeInQuart: x => x * x * x * x,\n easeOutQuart: x => 1 - Math.pow(1 - x, 4),\n easeInOutQuart: x => x < 0.5 ? 8 * x * x * x * x : 1 - Math.pow(-2 * x + 2, 4) / 2,\n easeInQuint: x => x * x * x * x * x,\n easeOutQuint: x => 1 - Math.pow(1 - x, 5),\n easeInOutQuint: x => x < 0.5 ? 16 * x * x * x * x * x : 1 - Math.pow(-2 * x + 2, 5) / 2,\n easeInSine: x => 1 - Math.cos(x * Math.PI / 2),\n easeOutSine: x => Math.sin(x * Math.PI / 2),\n easeInOutSine: x => -(Math.cos(Math.PI * x) - 1) / 2,\n easeInExpo: x => x === 0 ? 0 : Math.pow(2, 10 * x - 10),\n easeOutExpo: x => x === 1 ? 1 : 1 - Math.pow(2, -10 * x),\n easeInOutExpo: x => x === 0 ? 0 : x === 1 ? 1 : x < 0.5 ? Math.pow(2, 20 * x - 10) / 2 : (2 - Math.pow(2, -20 * x + 10)) / 2,\n easeInCirc: x => 1 - Math.sqrt(1 - Math.pow(x, 2)),\n easeOutCirc: x => Math.sqrt(1 - Math.pow(x - 1, 2)),\n easeInOutCirc: x => x < 0.5 ? (1 - Math.sqrt(1 - Math.pow(2 * x, 2))) / 2 : (Math.sqrt(1 - Math.pow(-2 * x + 2, 2)) + 1) / 2,\n easeInBack: x => c3 * x * x * x - c1 * x * x,\n easeOutBack: x => 1 + c3 * Math.pow(x - 1, 3) + c1 * Math.pow(x - 1, 2),\n easeInOutBack: x => x < 0.5 ? Math.pow(2 * x, 2) * ((c2 + 1) * 2 * x - c2) / 2 : (Math.pow(2 * x - 2, 2) * ((c2 + 1) * (x * 2 - 2) + c2) + 2) / 2,\n easeInElastic: x => x === 0 ? 0 : x === 1 ? 1 : -Math.pow(2, 10 * x - 10) * Math.sin((x * 10 - 10.75) * c4),\n easeOutElastic: x => x === 0 ? 0 : x === 1 ? 1 : Math.pow(2, -10 * x) * Math.sin((x * 10 - 0.75) * c4) + 1,\n easeInOutElastic: x => x === 0 ? 0 : x === 1 ? 1 : x < 0.5 ? -(Math.pow(2, 20 * x - 10) * Math.sin((20 * x - 11.125) * c5)) / 2 : Math.pow(2, -20 * x + 10) * Math.sin((20 * x - 11.125) * c5) / 2 + 1,\n easeInBounce: x => 1 - bounceOut(1 - x),\n easeOutBounce: bounceOut,\n easeInOutBounce: x => x < 0.5 ? (1 - bounceOut(1 - 2 * x)) / 2 : (1 + bounceOut(2 * x - 1)) / 2\n};\n\nconst defaults = _extends({}, config.default, {\n mass: 1,\n damping: 1,\n easing: easings.linear,\n clamp: false\n});\n\nclass AnimationConfig {\n constructor() {\n this.tension = void 0;\n this.friction = void 0;\n this.frequency = void 0;\n this.damping = void 0;\n this.mass = void 0;\n this.velocity = 0;\n this.restVelocity = void 0;\n this.precision = void 0;\n this.progress = void 0;\n this.duration = void 0;\n this.easing = void 0;\n this.clamp = void 0;\n this.bounce = void 0;\n this.decay = void 0;\n this.round = void 0;\n Object.assign(this, defaults);\n }\n\n}\nfunction mergeConfig(config, newConfig, defaultConfig) {\n if (defaultConfig) {\n defaultConfig = _extends({}, defaultConfig);\n sanitizeConfig(defaultConfig, newConfig);\n newConfig = _extends({}, defaultConfig, newConfig);\n }\n\n sanitizeConfig(config, newConfig);\n Object.assign(config, newConfig);\n\n for (const key in defaults) {\n if (config[key] == null) {\n config[key] = defaults[key];\n }\n }\n\n let {\n mass,\n frequency,\n damping\n } = config;\n\n if (!is.und(frequency)) {\n if (frequency < 0.01) frequency = 0.01;\n if (damping < 0) damping = 0;\n config.tension = Math.pow(2 * Math.PI / frequency, 2) * mass;\n config.friction = 4 * Math.PI * damping * mass / frequency;\n }\n\n return config;\n}\n\nfunction sanitizeConfig(config, props) {\n if (!is.und(props.decay)) {\n config.duration = undefined;\n } else {\n const isTensionConfig = !is.und(props.tension) || !is.und(props.friction);\n\n if (isTensionConfig || !is.und(props.frequency) || !is.und(props.damping) || !is.und(props.mass)) {\n config.duration = undefined;\n config.decay = undefined;\n }\n\n if (isTensionConfig) {\n config.frequency = undefined;\n }\n }\n}\n\nconst emptyArray = [];\nclass Animation {\n constructor() {\n this.changed = false;\n this.values = emptyArray;\n this.toValues = null;\n this.fromValues = emptyArray;\n this.to = void 0;\n this.from = void 0;\n this.config = new AnimationConfig();\n this.immediate = false;\n }\n\n}\n\nfunction scheduleProps(callId, {\n key,\n props,\n defaultProps,\n state,\n actions\n}) {\n return new Promise((resolve, reject) => {\n var _props$cancel;\n\n let delay;\n let timeout;\n let cancel = matchProp((_props$cancel = props.cancel) != null ? _props$cancel : defaultProps == null ? void 0 : defaultProps.cancel, key);\n\n if (cancel) {\n onStart();\n } else {\n if (!is.und(props.pause)) {\n state.paused = matchProp(props.pause, key);\n }\n\n let pause = defaultProps == null ? void 0 : defaultProps.pause;\n\n if (pause !== true) {\n pause = state.paused || matchProp(pause, key);\n }\n\n delay = callProp(props.delay || 0, key);\n\n if (pause) {\n state.resumeQueue.add(onResume);\n actions.pause();\n } else {\n actions.resume();\n onResume();\n }\n }\n\n function onPause() {\n state.resumeQueue.add(onResume);\n state.timeouts.delete(timeout);\n timeout.cancel();\n delay = timeout.time - raf.now();\n }\n\n function onResume() {\n if (delay > 0 && !Globals.skipAnimation) {\n state.delayed = true;\n timeout = raf.setTimeout(onStart, delay);\n state.pauseQueue.add(onPause);\n state.timeouts.add(timeout);\n } else {\n onStart();\n }\n }\n\n function onStart() {\n if (state.delayed) {\n state.delayed = false;\n }\n\n state.pauseQueue.delete(onPause);\n state.timeouts.delete(timeout);\n\n if (callId <= (state.cancelId || 0)) {\n cancel = true;\n }\n\n try {\n actions.start(_extends({}, props, {\n callId,\n cancel\n }), resolve);\n } catch (err) {\n reject(err);\n }\n }\n });\n}\n\nconst getCombinedResult = (target, results) => results.length == 1 ? results[0] : results.some(result => result.cancelled) ? getCancelledResult(target.get()) : results.every(result => result.noop) ? getNoopResult(target.get()) : getFinishedResult(target.get(), results.every(result => result.finished));\nconst getNoopResult = value => ({\n value,\n noop: true,\n finished: true,\n cancelled: false\n});\nconst getFinishedResult = (value, finished, cancelled = false) => ({\n value,\n finished,\n cancelled\n});\nconst getCancelledResult = value => ({\n value,\n cancelled: true,\n finished: false\n});\n\nfunction runAsync(to, props, state, target) {\n const {\n callId,\n parentId,\n onRest\n } = props;\n const {\n asyncTo: prevTo,\n promise: prevPromise\n } = state;\n\n if (!parentId && to === prevTo && !props.reset) {\n return prevPromise;\n }\n\n return state.promise = (async () => {\n state.asyncId = callId;\n state.asyncTo = to;\n const defaultProps = getDefaultProps(props, (value, key) => key === 'onRest' ? undefined : value);\n let preventBail;\n let bail;\n const bailPromise = new Promise((resolve, reject) => (preventBail = resolve, bail = reject));\n\n const bailIfEnded = bailSignal => {\n const bailResult = callId <= (state.cancelId || 0) && getCancelledResult(target) || callId !== state.asyncId && getFinishedResult(target, false);\n\n if (bailResult) {\n bailSignal.result = bailResult;\n bail(bailSignal);\n throw bailSignal;\n }\n };\n\n const animate = (arg1, arg2) => {\n const bailSignal = new BailSignal();\n const skipAnimationSignal = new SkipAniamtionSignal();\n return (async () => {\n if (Globals.skipAnimation) {\n stopAsync(state);\n skipAnimationSignal.result = getFinishedResult(target, false);\n bail(skipAnimationSignal);\n throw skipAnimationSignal;\n }\n\n bailIfEnded(bailSignal);\n const props = is.obj(arg1) ? _extends({}, arg1) : _extends({}, arg2, {\n to: arg1\n });\n props.parentId = callId;\n eachProp(defaultProps, (value, key) => {\n if (is.und(props[key])) {\n props[key] = value;\n }\n });\n const result = await target.start(props);\n bailIfEnded(bailSignal);\n\n if (state.paused) {\n await new Promise(resume => {\n state.resumeQueue.add(resume);\n });\n }\n\n return result;\n })();\n };\n\n let result;\n\n if (Globals.skipAnimation) {\n stopAsync(state);\n return getFinishedResult(target, false);\n }\n\n try {\n let animating;\n\n if (is.arr(to)) {\n animating = (async queue => {\n for (const props of queue) {\n await animate(props);\n }\n })(to);\n } else {\n animating = Promise.resolve(to(animate, target.stop.bind(target)));\n }\n\n await Promise.all([animating.then(preventBail), bailPromise]);\n result = getFinishedResult(target.get(), true, false);\n } catch (err) {\n if (err instanceof BailSignal) {\n result = err.result;\n } else if (err instanceof SkipAniamtionSignal) {\n result = err.result;\n } else {\n throw err;\n }\n } finally {\n if (callId == state.asyncId) {\n state.asyncId = parentId;\n state.asyncTo = parentId ? prevTo : undefined;\n state.promise = parentId ? prevPromise : undefined;\n }\n }\n\n if (is.fun(onRest)) {\n raf.batchedUpdates(() => {\n onRest(result, target, target.item);\n });\n }\n\n return result;\n })();\n}\nfunction stopAsync(state, cancelId) {\n flush(state.timeouts, t => t.cancel());\n state.pauseQueue.clear();\n state.resumeQueue.clear();\n state.asyncId = state.asyncTo = state.promise = undefined;\n if (cancelId) state.cancelId = cancelId;\n}\nclass BailSignal extends Error {\n constructor() {\n super('An async animation has been interrupted. You see this error because you ' + 'forgot to use `await` or `.catch(...)` on its returned promise.');\n this.result = void 0;\n }\n\n}\nclass SkipAniamtionSignal extends Error {\n constructor() {\n super('SkipAnimationSignal');\n this.result = void 0;\n }\n\n}\n\nconst isFrameValue = value => value instanceof FrameValue;\nlet nextId$1 = 1;\nclass FrameValue extends FluidValue {\n constructor(...args) {\n super(...args);\n this.id = nextId$1++;\n this.key = void 0;\n this._priority = 0;\n }\n\n get priority() {\n return this._priority;\n }\n\n set priority(priority) {\n if (this._priority != priority) {\n this._priority = priority;\n\n this._onPriorityChange(priority);\n }\n }\n\n get() {\n const node = getAnimated(this);\n return node && node.getValue();\n }\n\n to(...args) {\n return Globals.to(this, args);\n }\n\n interpolate(...args) {\n deprecateInterpolate();\n return Globals.to(this, args);\n }\n\n toJSON() {\n return this.get();\n }\n\n observerAdded(count) {\n if (count == 1) this._attach();\n }\n\n observerRemoved(count) {\n if (count == 0) this._detach();\n }\n\n _attach() {}\n\n _detach() {}\n\n _onChange(value, idle = false) {\n callFluidObservers(this, {\n type: 'change',\n parent: this,\n value,\n idle\n });\n }\n\n _onPriorityChange(priority) {\n if (!this.idle) {\n frameLoop.sort(this);\n }\n\n callFluidObservers(this, {\n type: 'priority',\n parent: this,\n priority\n });\n }\n\n}\n\nconst $P = Symbol.for('SpringPhase');\nconst HAS_ANIMATED = 1;\nconst IS_ANIMATING = 2;\nconst IS_PAUSED = 4;\nconst hasAnimated = target => (target[$P] & HAS_ANIMATED) > 0;\nconst isAnimating = target => (target[$P] & IS_ANIMATING) > 0;\nconst isPaused = target => (target[$P] & IS_PAUSED) > 0;\nconst setActiveBit = (target, active) => active ? target[$P] |= IS_ANIMATING | HAS_ANIMATED : target[$P] &= ~IS_ANIMATING;\nconst setPausedBit = (target, paused) => paused ? target[$P] |= IS_PAUSED : target[$P] &= ~IS_PAUSED;\n\nclass SpringValue extends FrameValue {\n constructor(arg1, arg2) {\n super();\n this.key = void 0;\n this.animation = new Animation();\n this.queue = void 0;\n this.defaultProps = {};\n this._state = {\n paused: false,\n delayed: false,\n pauseQueue: new Set(),\n resumeQueue: new Set(),\n timeouts: new Set()\n };\n this._pendingCalls = new Set();\n this._lastCallId = 0;\n this._lastToId = 0;\n this._memoizedDuration = 0;\n\n if (!is.und(arg1) || !is.und(arg2)) {\n const props = is.obj(arg1) ? _extends({}, arg1) : _extends({}, arg2, {\n from: arg1\n });\n\n if (is.und(props.default)) {\n props.default = true;\n }\n\n this.start(props);\n }\n }\n\n get idle() {\n return !(isAnimating(this) || this._state.asyncTo) || isPaused(this);\n }\n\n get goal() {\n return getFluidValue(this.animation.to);\n }\n\n get velocity() {\n const node = getAnimated(this);\n return node instanceof AnimatedValue ? node.lastVelocity || 0 : node.getPayload().map(node => node.lastVelocity || 0);\n }\n\n get hasAnimated() {\n return hasAnimated(this);\n }\n\n get isAnimating() {\n return isAnimating(this);\n }\n\n get isPaused() {\n return isPaused(this);\n }\n\n get isDelayed() {\n return this._state.delayed;\n }\n\n advance(dt) {\n let idle = true;\n let changed = false;\n const anim = this.animation;\n let {\n config,\n toValues\n } = anim;\n const payload = getPayload(anim.to);\n\n if (!payload && hasFluidValue(anim.to)) {\n toValues = toArray(getFluidValue(anim.to));\n }\n\n anim.values.forEach((node, i) => {\n if (node.done) return;\n const to = node.constructor == AnimatedString ? 1 : payload ? payload[i].lastPosition : toValues[i];\n let finished = anim.immediate;\n let position = to;\n\n if (!finished) {\n position = node.lastPosition;\n\n if (config.tension <= 0) {\n node.done = true;\n return;\n }\n\n let elapsed = node.elapsedTime += dt;\n const from = anim.fromValues[i];\n const v0 = node.v0 != null ? node.v0 : node.v0 = is.arr(config.velocity) ? config.velocity[i] : config.velocity;\n let velocity;\n const precision = config.precision || (from == to ? 0.005 : Math.min(1, Math.abs(to - from) * 0.001));\n\n if (!is.und(config.duration)) {\n let p = 1;\n\n if (config.duration > 0) {\n if (this._memoizedDuration !== config.duration) {\n this._memoizedDuration = config.duration;\n\n if (node.durationProgress > 0) {\n node.elapsedTime = config.duration * node.durationProgress;\n elapsed = node.elapsedTime += dt;\n }\n }\n\n p = (config.progress || 0) + elapsed / this._memoizedDuration;\n p = p > 1 ? 1 : p < 0 ? 0 : p;\n node.durationProgress = p;\n }\n\n position = from + config.easing(p) * (to - from);\n velocity = (position - node.lastPosition) / dt;\n finished = p == 1;\n } else if (config.decay) {\n const decay = config.decay === true ? 0.998 : config.decay;\n const e = Math.exp(-(1 - decay) * elapsed);\n position = from + v0 / (1 - decay) * (1 - e);\n finished = Math.abs(node.lastPosition - position) <= precision;\n velocity = v0 * e;\n } else {\n velocity = node.lastVelocity == null ? v0 : node.lastVelocity;\n const restVelocity = config.restVelocity || precision / 10;\n const bounceFactor = config.clamp ? 0 : config.bounce;\n const canBounce = !is.und(bounceFactor);\n const isGrowing = from == to ? node.v0 > 0 : from < to;\n let isMoving;\n let isBouncing = false;\n const step = 1;\n const numSteps = Math.ceil(dt / step);\n\n for (let n = 0; n < numSteps; ++n) {\n isMoving = Math.abs(velocity) > restVelocity;\n\n if (!isMoving) {\n finished = Math.abs(to - position) <= precision;\n\n if (finished) {\n break;\n }\n }\n\n if (canBounce) {\n isBouncing = position == to || position > to == isGrowing;\n\n if (isBouncing) {\n velocity = -velocity * bounceFactor;\n position = to;\n }\n }\n\n const springForce = -config.tension * 0.000001 * (position - to);\n const dampingForce = -config.friction * 0.001 * velocity;\n const acceleration = (springForce + dampingForce) / config.mass;\n velocity = velocity + acceleration * step;\n position = position + velocity * step;\n }\n }\n\n node.lastVelocity = velocity;\n\n if (Number.isNaN(position)) {\n console.warn(`Got NaN while animating:`, this);\n finished = true;\n }\n }\n\n if (payload && !payload[i].done) {\n finished = false;\n }\n\n if (finished) {\n node.done = true;\n } else {\n idle = false;\n }\n\n if (node.setValue(position, config.round)) {\n changed = true;\n }\n });\n const node = getAnimated(this);\n const currVal = node.getValue();\n\n if (idle) {\n const finalVal = getFluidValue(anim.to);\n\n if ((currVal !== finalVal || changed) && !config.decay) {\n node.setValue(finalVal);\n\n this._onChange(finalVal);\n } else if (changed && config.decay) {\n this._onChange(currVal);\n }\n\n this._stop();\n } else if (changed) {\n this._onChange(currVal);\n }\n }\n\n set(value) {\n raf.batchedUpdates(() => {\n this._stop();\n\n this._focus(value);\n\n this._set(value);\n });\n return this;\n }\n\n pause() {\n this._update({\n pause: true\n });\n }\n\n resume() {\n this._update({\n pause: false\n });\n }\n\n finish() {\n if (isAnimating(this)) {\n const {\n to,\n config\n } = this.animation;\n raf.batchedUpdates(() => {\n this._onStart();\n\n if (!config.decay) {\n this._set(to, false);\n }\n\n this._stop();\n });\n }\n\n return this;\n }\n\n update(props) {\n const queue = this.queue || (this.queue = []);\n queue.push(props);\n return this;\n }\n\n start(to, arg2) {\n let queue;\n\n if (!is.und(to)) {\n queue = [is.obj(to) ? to : _extends({}, arg2, {\n to\n })];\n } else {\n queue = this.queue || [];\n this.queue = [];\n }\n\n return Promise.all(queue.map(props => {\n const up = this._update(props);\n\n return up;\n })).then(results => getCombinedResult(this, results));\n }\n\n stop(cancel) {\n const {\n to\n } = this.animation;\n\n this._focus(this.get());\n\n stopAsync(this._state, cancel && this._lastCallId);\n raf.batchedUpdates(() => this._stop(to, cancel));\n return this;\n }\n\n reset() {\n this._update({\n reset: true\n });\n }\n\n eventObserved(event) {\n if (event.type == 'change') {\n this._start();\n } else if (event.type == 'priority') {\n this.priority = event.priority + 1;\n }\n }\n\n _prepareNode(props) {\n const key = this.key || '';\n let {\n to,\n from\n } = props;\n to = is.obj(to) ? to[key] : to;\n\n if (to == null || isAsyncTo(to)) {\n to = undefined;\n }\n\n from = is.obj(from) ? from[key] : from;\n\n if (from == null) {\n from = undefined;\n }\n\n const range = {\n to,\n from\n };\n\n if (!hasAnimated(this)) {\n if (props.reverse) [to, from] = [from, to];\n from = getFluidValue(from);\n\n if (!is.und(from)) {\n this._set(from);\n } else if (!getAnimated(this)) {\n this._set(to);\n }\n }\n\n return range;\n }\n\n _update(_ref, isLoop) {\n let props = _extends({}, _ref);\n\n const {\n key,\n defaultProps\n } = this;\n if (props.default) Object.assign(defaultProps, getDefaultProps(props, (value, prop) => /^on/.test(prop) ? resolveProp(value, key) : value));\n mergeActiveFn(this, props, 'onProps');\n sendEvent(this, 'onProps', props, this);\n\n const range = this._prepareNode(props);\n\n if (Object.isFrozen(this)) {\n throw Error('Cannot animate a `SpringValue` object that is frozen. ' + 'Did you forget to pass your component to `animated(...)` before animating its props?');\n }\n\n const state = this._state;\n return scheduleProps(++this._lastCallId, {\n key,\n props,\n defaultProps,\n state,\n actions: {\n pause: () => {\n if (!isPaused(this)) {\n setPausedBit(this, true);\n flushCalls(state.pauseQueue);\n sendEvent(this, 'onPause', getFinishedResult(this, checkFinished(this, this.animation.to)), this);\n }\n },\n resume: () => {\n if (isPaused(this)) {\n setPausedBit(this, false);\n\n if (isAnimating(this)) {\n this._resume();\n }\n\n flushCalls(state.resumeQueue);\n sendEvent(this, 'onResume', getFinishedResult(this, checkFinished(this, this.animation.to)), this);\n }\n },\n start: this._merge.bind(this, range)\n }\n }).then(result => {\n if (props.loop && result.finished && !(isLoop && result.noop)) {\n const nextProps = createLoopUpdate(props);\n\n if (nextProps) {\n return this._update(nextProps, true);\n }\n }\n\n return result;\n });\n }\n\n _merge(range, props, resolve) {\n if (props.cancel) {\n this.stop(true);\n return resolve(getCancelledResult(this));\n }\n\n const hasToProp = !is.und(range.to);\n const hasFromProp = !is.und(range.from);\n\n if (hasToProp || hasFromProp) {\n if (props.callId > this._lastToId) {\n this._lastToId = props.callId;\n } else {\n return resolve(getCancelledResult(this));\n }\n }\n\n const {\n key,\n defaultProps,\n animation: anim\n } = this;\n const {\n to: prevTo,\n from: prevFrom\n } = anim;\n let {\n to = prevTo,\n from = prevFrom\n } = range;\n\n if (hasFromProp && !hasToProp && (!props.default || is.und(to))) {\n to = from;\n }\n\n if (props.reverse) [to, from] = [from, to];\n const hasFromChanged = !isEqual(from, prevFrom);\n\n if (hasFromChanged) {\n anim.from = from;\n }\n\n from = getFluidValue(from);\n const hasToChanged = !isEqual(to, prevTo);\n\n if (hasToChanged) {\n this._focus(to);\n }\n\n const hasAsyncTo = isAsyncTo(props.to);\n const {\n config\n } = anim;\n const {\n decay,\n velocity\n } = config;\n\n if (hasToProp || hasFromProp) {\n config.velocity = 0;\n }\n\n if (props.config && !hasAsyncTo) {\n mergeConfig(config, callProp(props.config, key), props.config !== defaultProps.config ? callProp(defaultProps.config, key) : void 0);\n }\n\n let node = getAnimated(this);\n\n if (!node || is.und(to)) {\n return resolve(getFinishedResult(this, true));\n }\n\n const reset = is.und(props.reset) ? hasFromProp && !props.default : !is.und(from) && matchProp(props.reset, key);\n const value = reset ? from : this.get();\n const goal = computeGoal(to);\n const isAnimatable = is.num(goal) || is.arr(goal) || isAnimatedString(goal);\n const immediate = !hasAsyncTo && (!isAnimatable || matchProp(defaultProps.immediate || props.immediate, key));\n\n if (hasToChanged) {\n const nodeType = getAnimatedType(to);\n\n if (nodeType !== node.constructor) {\n if (immediate) {\n node = this._set(goal);\n } else throw Error(`Cannot animate between ${node.constructor.name} and ${nodeType.name}, as the \"to\" prop suggests`);\n }\n }\n\n const goalType = node.constructor;\n let started = hasFluidValue(to);\n let finished = false;\n\n if (!started) {\n const hasValueChanged = reset || !hasAnimated(this) && hasFromChanged;\n\n if (hasToChanged || hasValueChanged) {\n finished = isEqual(computeGoal(value), goal);\n started = !finished;\n }\n\n if (!isEqual(anim.immediate, immediate) && !immediate || !isEqual(config.decay, decay) || !isEqual(config.velocity, velocity)) {\n started = true;\n }\n }\n\n if (finished && isAnimating(this)) {\n if (anim.changed && !reset) {\n started = true;\n } else if (!started) {\n this._stop(prevTo);\n }\n }\n\n if (!hasAsyncTo) {\n if (started || hasFluidValue(prevTo)) {\n anim.values = node.getPayload();\n anim.toValues = hasFluidValue(to) ? null : goalType == AnimatedString ? [1] : toArray(goal);\n }\n\n if (anim.immediate != immediate) {\n anim.immediate = immediate;\n\n if (!immediate && !reset) {\n this._set(prevTo);\n }\n }\n\n if (started) {\n const {\n onRest\n } = anim;\n each(ACTIVE_EVENTS, type => mergeActiveFn(this, props, type));\n const result = getFinishedResult(this, checkFinished(this, prevTo));\n flushCalls(this._pendingCalls, result);\n\n this._pendingCalls.add(resolve);\n\n if (anim.changed) raf.batchedUpdates(() => {\n anim.changed = !reset;\n onRest == null ? void 0 : onRest(result, this);\n\n if (reset) {\n callProp(defaultProps.onRest, result);\n } else {\n anim.onStart == null ? void 0 : anim.onStart(result, this);\n }\n });\n }\n }\n\n if (reset) {\n this._set(value);\n }\n\n if (hasAsyncTo) {\n resolve(runAsync(props.to, props, this._state, this));\n } else if (started) {\n this._start();\n } else if (isAnimating(this) && !hasToChanged) {\n this._pendingCalls.add(resolve);\n } else {\n resolve(getNoopResult(value));\n }\n }\n\n _focus(value) {\n const anim = this.animation;\n\n if (value !== anim.to) {\n if (getFluidObservers(this)) {\n this._detach();\n }\n\n anim.to = value;\n\n if (getFluidObservers(this)) {\n this._attach();\n }\n }\n }\n\n _attach() {\n let priority = 0;\n const {\n to\n } = this.animation;\n\n if (hasFluidValue(to)) {\n addFluidObserver(to, this);\n\n if (isFrameValue(to)) {\n priority = to.priority + 1;\n }\n }\n\n this.priority = priority;\n }\n\n _detach() {\n const {\n to\n } = this.animation;\n\n if (hasFluidValue(to)) {\n removeFluidObserver(to, this);\n }\n }\n\n _set(arg, idle = true) {\n const value = getFluidValue(arg);\n\n if (!is.und(value)) {\n const oldNode = getAnimated(this);\n\n if (!oldNode || !isEqual(value, oldNode.getValue())) {\n const nodeType = getAnimatedType(value);\n\n if (!oldNode || oldNode.constructor != nodeType) {\n setAnimated(this, nodeType.create(value));\n } else {\n oldNode.setValue(value);\n }\n\n if (oldNode) {\n raf.batchedUpdates(() => {\n this._onChange(value, idle);\n });\n }\n }\n }\n\n return getAnimated(this);\n }\n\n _onStart() {\n const anim = this.animation;\n\n if (!anim.changed) {\n anim.changed = true;\n sendEvent(this, 'onStart', getFinishedResult(this, checkFinished(this, anim.to)), this);\n }\n }\n\n _onChange(value, idle) {\n if (!idle) {\n this._onStart();\n\n callProp(this.animation.onChange, value, this);\n }\n\n callProp(this.defaultProps.onChange, value, this);\n\n super._onChange(value, idle);\n }\n\n _start() {\n const anim = this.animation;\n getAnimated(this).reset(getFluidValue(anim.to));\n\n if (!anim.immediate) {\n anim.fromValues = anim.values.map(node => node.lastPosition);\n }\n\n if (!isAnimating(this)) {\n setActiveBit(this, true);\n\n if (!isPaused(this)) {\n this._resume();\n }\n }\n }\n\n _resume() {\n if (Globals.skipAnimation) {\n this.finish();\n } else {\n frameLoop.start(this);\n }\n }\n\n _stop(goal, cancel) {\n if (isAnimating(this)) {\n setActiveBit(this, false);\n const anim = this.animation;\n each(anim.values, node => {\n node.done = true;\n });\n\n if (anim.toValues) {\n anim.onChange = anim.onPause = anim.onResume = undefined;\n }\n\n callFluidObservers(this, {\n type: 'idle',\n parent: this\n });\n const result = cancel ? getCancelledResult(this.get()) : getFinishedResult(this.get(), checkFinished(this, goal != null ? goal : anim.to));\n flushCalls(this._pendingCalls, result);\n\n if (anim.changed) {\n anim.changed = false;\n sendEvent(this, 'onRest', result, this);\n }\n }\n }\n\n}\n\nfunction checkFinished(target, to) {\n const goal = computeGoal(to);\n const value = computeGoal(target.get());\n return isEqual(value, goal);\n}\n\nfunction createLoopUpdate(props, loop = props.loop, to = props.to) {\n let loopRet = callProp(loop);\n\n if (loopRet) {\n const overrides = loopRet !== true && inferTo(loopRet);\n const reverse = (overrides || props).reverse;\n const reset = !overrides || overrides.reset;\n return createUpdate(_extends({}, props, {\n loop,\n default: false,\n pause: undefined,\n to: !reverse || isAsyncTo(to) ? to : undefined,\n from: reset ? props.from : undefined,\n reset\n }, overrides));\n }\n}\nfunction createUpdate(props) {\n const {\n to,\n from\n } = props = inferTo(props);\n const keys = new Set();\n if (is.obj(to)) findDefined(to, keys);\n if (is.obj(from)) findDefined(from, keys);\n props.keys = keys.size ? Array.from(keys) : null;\n return props;\n}\nfunction declareUpdate(props) {\n const update = createUpdate(props);\n\n if (is.und(update.default)) {\n update.default = getDefaultProps(update);\n }\n\n return update;\n}\n\nfunction findDefined(values, keys) {\n eachProp(values, (value, key) => value != null && keys.add(key));\n}\n\nconst ACTIVE_EVENTS = ['onStart', 'onRest', 'onChange', 'onPause', 'onResume'];\n\nfunction mergeActiveFn(target, props, type) {\n target.animation[type] = props[type] !== getDefaultProp(props, type) ? resolveProp(props[type], target.key) : undefined;\n}\n\nfunction sendEvent(target, type, ...args) {\n var _target$animation$typ, _target$animation, _target$defaultProps$, _target$defaultProps;\n\n (_target$animation$typ = (_target$animation = target.animation)[type]) == null ? void 0 : _target$animation$typ.call(_target$animation, ...args);\n (_target$defaultProps$ = (_target$defaultProps = target.defaultProps)[type]) == null ? void 0 : _target$defaultProps$.call(_target$defaultProps, ...args);\n}\n\nconst BATCHED_EVENTS = ['onStart', 'onChange', 'onRest'];\nlet nextId = 1;\nclass Controller {\n constructor(props, flush) {\n this.id = nextId++;\n this.springs = {};\n this.queue = [];\n this.ref = void 0;\n this._flush = void 0;\n this._initialProps = void 0;\n this._lastAsyncId = 0;\n this._active = new Set();\n this._changed = new Set();\n this._started = false;\n this._item = void 0;\n this._state = {\n paused: false,\n pauseQueue: new Set(),\n resumeQueue: new Set(),\n timeouts: new Set()\n };\n this._events = {\n onStart: new Map(),\n onChange: new Map(),\n onRest: new Map()\n };\n this._onFrame = this._onFrame.bind(this);\n\n if (flush) {\n this._flush = flush;\n }\n\n if (props) {\n this.start(_extends({\n default: true\n }, props));\n }\n }\n\n get idle() {\n return !this._state.asyncTo && Object.values(this.springs).every(spring => {\n return spring.idle && !spring.isDelayed && !spring.isPaused;\n });\n }\n\n get item() {\n return this._item;\n }\n\n set item(item) {\n this._item = item;\n }\n\n get() {\n const values = {};\n this.each((spring, key) => values[key] = spring.get());\n return values;\n }\n\n set(values) {\n for (const key in values) {\n const value = values[key];\n\n if (!is.und(value)) {\n this.springs[key].set(value);\n }\n }\n }\n\n update(props) {\n if (props) {\n this.queue.push(createUpdate(props));\n }\n\n return this;\n }\n\n start(props) {\n let {\n queue\n } = this;\n\n if (props) {\n queue = toArray(props).map(createUpdate);\n } else {\n this.queue = [];\n }\n\n if (this._flush) {\n return this._flush(this, queue);\n }\n\n prepareKeys(this, queue);\n return flushUpdateQueue(this, queue);\n }\n\n stop(arg, keys) {\n if (arg !== !!arg) {\n keys = arg;\n }\n\n if (keys) {\n const springs = this.springs;\n each(toArray(keys), key => springs[key].stop(!!arg));\n } else {\n stopAsync(this._state, this._lastAsyncId);\n this.each(spring => spring.stop(!!arg));\n }\n\n return this;\n }\n\n pause(keys) {\n if (is.und(keys)) {\n this.start({\n pause: true\n });\n } else {\n const springs = this.springs;\n each(toArray(keys), key => springs[key].pause());\n }\n\n return this;\n }\n\n resume(keys) {\n if (is.und(keys)) {\n this.start({\n pause: false\n });\n } else {\n const springs = this.springs;\n each(toArray(keys), key => springs[key].resume());\n }\n\n return this;\n }\n\n each(iterator) {\n eachProp(this.springs, iterator);\n }\n\n _onFrame() {\n const {\n onStart,\n onChange,\n onRest\n } = this._events;\n const active = this._active.size > 0;\n const changed = this._changed.size > 0;\n\n if (active && !this._started || changed && !this._started) {\n this._started = true;\n flush(onStart, ([onStart, result]) => {\n result.value = this.get();\n onStart(result, this, this._item);\n });\n }\n\n const idle = !active && this._started;\n const values = changed || idle && onRest.size ? this.get() : null;\n\n if (changed && onChange.size) {\n flush(onChange, ([onChange, result]) => {\n result.value = values;\n onChange(result, this, this._item);\n });\n }\n\n if (idle) {\n this._started = false;\n flush(onRest, ([onRest, result]) => {\n result.value = values;\n onRest(result, this, this._item);\n });\n }\n }\n\n eventObserved(event) {\n if (event.type == 'change') {\n this._changed.add(event.parent);\n\n if (!event.idle) {\n this._active.add(event.parent);\n }\n } else if (event.type == 'idle') {\n this._active.delete(event.parent);\n } else return;\n\n raf.onFrame(this._onFrame);\n }\n\n}\nfunction flushUpdateQueue(ctrl, queue) {\n return Promise.all(queue.map(props => flushUpdate(ctrl, props))).then(results => getCombinedResult(ctrl, results));\n}\nasync function flushUpdate(ctrl, props, isLoop) {\n const {\n keys,\n to,\n from,\n loop,\n onRest,\n onResolve\n } = props;\n const defaults = is.obj(props.default) && props.default;\n\n if (loop) {\n props.loop = false;\n }\n\n if (to === false) props.to = null;\n if (from === false) props.from = null;\n const asyncTo = is.arr(to) || is.fun(to) ? to : undefined;\n\n if (asyncTo) {\n props.to = undefined;\n props.onRest = undefined;\n\n if (defaults) {\n defaults.onRest = undefined;\n }\n } else {\n each(BATCHED_EVENTS, key => {\n const handler = props[key];\n\n if (is.fun(handler)) {\n const queue = ctrl['_events'][key];\n\n props[key] = ({\n finished,\n cancelled\n }) => {\n const result = queue.get(handler);\n\n if (result) {\n if (!finished) result.finished = false;\n if (cancelled) result.cancelled = true;\n } else {\n queue.set(handler, {\n value: null,\n finished: finished || false,\n cancelled: cancelled || false\n });\n }\n };\n\n if (defaults) {\n defaults[key] = props[key];\n }\n }\n });\n }\n\n const state = ctrl['_state'];\n\n if (props.pause === !state.paused) {\n state.paused = props.pause;\n flushCalls(props.pause ? state.pauseQueue : state.resumeQueue);\n } else if (state.paused) {\n props.pause = true;\n }\n\n const promises = (keys || Object.keys(ctrl.springs)).map(key => ctrl.springs[key].start(props));\n const cancel = props.cancel === true || getDefaultProp(props, 'cancel') === true;\n\n if (asyncTo || cancel && state.asyncId) {\n promises.push(scheduleProps(++ctrl['_lastAsyncId'], {\n props,\n state,\n actions: {\n pause: noop,\n resume: noop,\n\n start(props, resolve) {\n if (cancel) {\n stopAsync(state, ctrl['_lastAsyncId']);\n resolve(getCancelledResult(ctrl));\n } else {\n props.onRest = onRest;\n resolve(runAsync(asyncTo, props, state, ctrl));\n }\n }\n\n }\n }));\n }\n\n if (state.paused) {\n await new Promise(resume => {\n state.resumeQueue.add(resume);\n });\n }\n\n const result = getCombinedResult(ctrl, await Promise.all(promises));\n\n if (loop && result.finished && !(isLoop && result.noop)) {\n const nextProps = createLoopUpdate(props, loop, to);\n\n if (nextProps) {\n prepareKeys(ctrl, [nextProps]);\n return flushUpdate(ctrl, nextProps, true);\n }\n }\n\n if (onResolve) {\n raf.batchedUpdates(() => onResolve(result, ctrl, ctrl.item));\n }\n\n return result;\n}\nfunction getSprings(ctrl, props) {\n const springs = _extends({}, ctrl.springs);\n\n if (props) {\n each(toArray(props), props => {\n if (is.und(props.keys)) {\n props = createUpdate(props);\n }\n\n if (!is.obj(props.to)) {\n props = _extends({}, props, {\n to: undefined\n });\n }\n\n prepareSprings(springs, props, key => {\n return createSpring(key);\n });\n });\n }\n\n setSprings(ctrl, springs);\n return springs;\n}\nfunction setSprings(ctrl, springs) {\n eachProp(springs, (spring, key) => {\n if (!ctrl.springs[key]) {\n ctrl.springs[key] = spring;\n addFluidObserver(spring, ctrl);\n }\n });\n}\n\nfunction createSpring(key, observer) {\n const spring = new SpringValue();\n spring.key = key;\n\n if (observer) {\n addFluidObserver(spring, observer);\n }\n\n return spring;\n}\n\nfunction prepareSprings(springs, props, create) {\n if (props.keys) {\n each(props.keys, key => {\n const spring = springs[key] || (springs[key] = create(key));\n spring['_prepareNode'](props);\n });\n }\n}\n\nfunction prepareKeys(ctrl, queue) {\n each(queue, props => {\n prepareSprings(ctrl.springs, props, key => {\n return createSpring(key, ctrl);\n });\n });\n}\n\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}\n\nconst _excluded$3 = [\"children\"];\nconst SpringContext = _ref => {\n let {\n children\n } = _ref,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$3);\n\n const inherited = useContext(ctx);\n const pause = props.pause || !!inherited.pause,\n immediate = props.immediate || !!inherited.immediate;\n props = useMemoOne(() => ({\n pause,\n immediate\n }), [pause, immediate]);\n const {\n Provider\n } = ctx;\n return React.createElement(Provider, {\n value: props\n }, children);\n};\nconst ctx = makeContext(SpringContext, {});\nSpringContext.Provider = ctx.Provider;\nSpringContext.Consumer = ctx.Consumer;\n\nfunction makeContext(target, init) {\n Object.assign(target, React.createContext(init));\n target.Provider._context = target;\n target.Consumer._context = target;\n return target;\n}\n\nconst SpringRef = () => {\n const current = [];\n\n const SpringRef = function SpringRef(props) {\n deprecateDirectCall();\n const results = [];\n each(current, (ctrl, i) => {\n if (is.und(props)) {\n results.push(ctrl.start());\n } else {\n const update = _getProps(props, ctrl, i);\n\n if (update) {\n results.push(ctrl.start(update));\n }\n }\n });\n return results;\n };\n\n SpringRef.current = current;\n\n SpringRef.add = function (ctrl) {\n if (!current.includes(ctrl)) {\n current.push(ctrl);\n }\n };\n\n SpringRef.delete = function (ctrl) {\n const i = current.indexOf(ctrl);\n if (~i) current.splice(i, 1);\n };\n\n SpringRef.pause = function () {\n each(current, ctrl => ctrl.pause(...arguments));\n return this;\n };\n\n SpringRef.resume = function () {\n each(current, ctrl => ctrl.resume(...arguments));\n return this;\n };\n\n SpringRef.set = function (values) {\n each(current, ctrl => ctrl.set(values));\n };\n\n SpringRef.start = function (props) {\n const results = [];\n each(current, (ctrl, i) => {\n if (is.und(props)) {\n results.push(ctrl.start());\n } else {\n const update = this._getProps(props, ctrl, i);\n\n if (update) {\n results.push(ctrl.start(update));\n }\n }\n });\n return results;\n };\n\n SpringRef.stop = function () {\n each(current, ctrl => ctrl.stop(...arguments));\n return this;\n };\n\n SpringRef.update = function (props) {\n each(current, (ctrl, i) => ctrl.update(this._getProps(props, ctrl, i)));\n return this;\n };\n\n const _getProps = function _getProps(arg, ctrl, index) {\n return is.fun(arg) ? arg(index, ctrl) : arg;\n };\n\n SpringRef._getProps = _getProps;\n return SpringRef;\n};\n\nfunction useSprings(length, props, deps) {\n const propsFn = is.fun(props) && props;\n if (propsFn && !deps) deps = [];\n const ref = useMemo(() => propsFn || arguments.length == 3 ? SpringRef() : void 0, []);\n const layoutId = useRef(0);\n const forceUpdate = useForceUpdate();\n const state = useMemo(() => ({\n ctrls: [],\n queue: [],\n\n flush(ctrl, updates) {\n const springs = getSprings(ctrl, updates);\n const canFlushSync = layoutId.current > 0 && !state.queue.length && !Object.keys(springs).some(key => !ctrl.springs[key]);\n return canFlushSync ? flushUpdateQueue(ctrl, updates) : new Promise(resolve => {\n setSprings(ctrl, springs);\n state.queue.push(() => {\n resolve(flushUpdateQueue(ctrl, updates));\n });\n forceUpdate();\n });\n }\n\n }), []);\n const ctrls = useRef([...state.ctrls]);\n const updates = [];\n const prevLength = usePrev(length) || 0;\n useMemo(() => {\n each(ctrls.current.slice(length, prevLength), ctrl => {\n detachRefs(ctrl, ref);\n ctrl.stop(true);\n });\n ctrls.current.length = length;\n declareUpdates(prevLength, length);\n }, [length]);\n useMemo(() => {\n declareUpdates(0, Math.min(prevLength, length));\n }, deps);\n\n function declareUpdates(startIndex, endIndex) {\n for (let i = startIndex; i < endIndex; i++) {\n const ctrl = ctrls.current[i] || (ctrls.current[i] = new Controller(null, state.flush));\n const update = propsFn ? propsFn(i, ctrl) : props[i];\n\n if (update) {\n updates[i] = declareUpdate(update);\n }\n }\n }\n\n const springs = ctrls.current.map((ctrl, i) => getSprings(ctrl, updates[i]));\n const context = useContext(SpringContext);\n const prevContext = usePrev(context);\n const hasContext = context !== prevContext && hasProps(context);\n useIsomorphicLayoutEffect(() => {\n layoutId.current++;\n state.ctrls = ctrls.current;\n const {\n queue\n } = state;\n\n if (queue.length) {\n state.queue = [];\n each(queue, cb => cb());\n }\n\n each(ctrls.current, (ctrl, i) => {\n ref == null ? void 0 : ref.add(ctrl);\n\n if (hasContext) {\n ctrl.start({\n default: context\n });\n }\n\n const update = updates[i];\n\n if (update) {\n replaceRef(ctrl, update.ref);\n\n if (ctrl.ref) {\n ctrl.queue.push(update);\n } else {\n ctrl.start(update);\n }\n }\n });\n });\n useOnce(() => () => {\n each(state.ctrls, ctrl => ctrl.stop(true));\n });\n const values = springs.map(x => _extends({}, x));\n return ref ? [values, ref] : values;\n}\n\nfunction useSpring(props, deps) {\n const isFn = is.fun(props);\n const [[values], ref] = useSprings(1, isFn ? props : [props], isFn ? deps || [] : deps);\n return isFn || arguments.length == 2 ? [values, ref] : values;\n}\n\nconst initSpringRef = () => SpringRef();\n\nconst useSpringRef = () => useState(initSpringRef)[0];\n\nfunction useTrail(length, propsArg, deps) {\n var _passedRef;\n\n const propsFn = is.fun(propsArg) && propsArg;\n if (propsFn && !deps) deps = [];\n let reverse = true;\n let passedRef = undefined;\n const result = useSprings(length, (i, ctrl) => {\n const props = propsFn ? propsFn(i, ctrl) : propsArg;\n passedRef = props.ref;\n reverse = reverse && props.reverse;\n return props;\n }, deps || [{}]);\n const ref = (_passedRef = passedRef) != null ? _passedRef : result[1];\n useIsomorphicLayoutEffect(() => {\n each(ref.current, (ctrl, i) => {\n const parent = ref.current[i + (reverse ? 1 : -1)];\n\n if (parent) {\n ctrl.start({\n to: parent.springs\n });\n } else {\n ctrl.start();\n }\n });\n }, deps);\n\n if (propsFn || arguments.length == 3) {\n ref['_getProps'] = (propsArg, ctrl, i) => {\n const props = is.fun(propsArg) ? propsArg(i, ctrl) : propsArg;\n\n if (props) {\n const parent = ref.current[i + (props.reverse ? 1 : -1)];\n if (parent) props.to = parent.springs;\n return props;\n }\n };\n\n return result;\n }\n\n ref['start'] = propsArg => {\n const results = [];\n each(ref.current, (ctrl, i) => {\n const props = is.fun(propsArg) ? propsArg(i, ctrl) : propsArg;\n const parent = ref.current[i + (reverse ? 1 : -1)];\n\n if (parent) {\n results.push(ctrl.start(_extends({}, props, {\n to: parent.springs\n })));\n } else {\n results.push(ctrl.start(_extends({}, props)));\n }\n });\n return results;\n };\n\n return result[0];\n}\n\nlet TransitionPhase;\n\n(function (TransitionPhase) {\n TransitionPhase[\"MOUNT\"] = \"mount\";\n TransitionPhase[\"ENTER\"] = \"enter\";\n TransitionPhase[\"UPDATE\"] = \"update\";\n TransitionPhase[\"LEAVE\"] = \"leave\";\n})(TransitionPhase || (TransitionPhase = {}));\n\nfunction useTransition(data, props, deps) {\n const propsFn = is.fun(props) && props;\n const {\n reset,\n sort,\n trail = 0,\n expires = true,\n exitBeforeEnter = false,\n onDestroyed,\n ref: propsRef,\n config: propsConfig\n } = propsFn ? propsFn() : props;\n const ref = useMemo(() => propsFn || arguments.length == 3 ? SpringRef() : void 0, []);\n const items = toArray(data);\n const transitions = [];\n const usedTransitions = useRef(null);\n const prevTransitions = reset ? null : usedTransitions.current;\n useIsomorphicLayoutEffect(() => {\n usedTransitions.current = transitions;\n });\n useOnce(() => {\n each(transitions, t => {\n ref == null ? void 0 : ref.add(t.ctrl);\n t.ctrl.ref = ref;\n });\n return () => {\n each(usedTransitions.current, t => {\n if (t.expired) {\n clearTimeout(t.expirationId);\n }\n\n detachRefs(t.ctrl, ref);\n t.ctrl.stop(true);\n });\n };\n });\n const keys = getKeys(items, propsFn ? propsFn() : props, prevTransitions);\n const expired = reset && usedTransitions.current || [];\n useIsomorphicLayoutEffect(() => each(expired, ({\n ctrl,\n item,\n key\n }) => {\n detachRefs(ctrl, ref);\n callProp(onDestroyed, item, key);\n }));\n const reused = [];\n if (prevTransitions) each(prevTransitions, (t, i) => {\n if (t.expired) {\n clearTimeout(t.expirationId);\n expired.push(t);\n } else {\n i = reused[i] = keys.indexOf(t.key);\n if (~i) transitions[i] = t;\n }\n });\n each(items, (item, i) => {\n if (!transitions[i]) {\n transitions[i] = {\n key: keys[i],\n item,\n phase: TransitionPhase.MOUNT,\n ctrl: new Controller()\n };\n transitions[i].ctrl.item = item;\n }\n });\n\n if (reused.length) {\n let i = -1;\n const {\n leave\n } = propsFn ? propsFn() : props;\n each(reused, (keyIndex, prevIndex) => {\n const t = prevTransitions[prevIndex];\n\n if (~keyIndex) {\n i = transitions.indexOf(t);\n transitions[i] = _extends({}, t, {\n item: items[keyIndex]\n });\n } else if (leave) {\n transitions.splice(++i, 0, t);\n }\n });\n }\n\n if (is.fun(sort)) {\n transitions.sort((a, b) => sort(a.item, b.item));\n }\n\n let delay = -trail;\n const forceUpdate = useForceUpdate();\n const defaultProps = getDefaultProps(props);\n const changes = new Map();\n const exitingTransitions = useRef(new Map());\n const forceChange = useRef(false);\n each(transitions, (t, i) => {\n const key = t.key;\n const prevPhase = t.phase;\n const p = propsFn ? propsFn() : props;\n let to;\n let phase;\n let propsDelay = callProp(p.delay || 0, key);\n\n if (prevPhase == TransitionPhase.MOUNT) {\n to = p.enter;\n phase = TransitionPhase.ENTER;\n } else {\n const isLeave = keys.indexOf(key) < 0;\n\n if (prevPhase != TransitionPhase.LEAVE) {\n if (isLeave) {\n to = p.leave;\n phase = TransitionPhase.LEAVE;\n } else if (to = p.update) {\n phase = TransitionPhase.UPDATE;\n } else return;\n } else if (!isLeave) {\n to = p.enter;\n phase = TransitionPhase.ENTER;\n } else return;\n }\n\n to = callProp(to, t.item, i);\n to = is.obj(to) ? inferTo(to) : {\n to\n };\n\n if (!to.config) {\n const config = propsConfig || defaultProps.config;\n to.config = callProp(config, t.item, i, phase);\n }\n\n delay += trail;\n\n const payload = _extends({}, defaultProps, {\n delay: propsDelay + delay,\n ref: propsRef,\n immediate: p.immediate,\n reset: false\n }, to);\n\n if (phase == TransitionPhase.ENTER && is.und(payload.from)) {\n const _p = propsFn ? propsFn() : props;\n\n const from = is.und(_p.initial) || prevTransitions ? _p.from : _p.initial;\n payload.from = callProp(from, t.item, i);\n }\n\n const {\n onResolve\n } = payload;\n\n payload.onResolve = result => {\n callProp(onResolve, result);\n const transitions = usedTransitions.current;\n const t = transitions.find(t => t.key === key);\n if (!t) return;\n\n if (result.cancelled && t.phase != TransitionPhase.UPDATE) {\n return;\n }\n\n if (t.ctrl.idle) {\n const idle = transitions.every(t => t.ctrl.idle);\n\n if (t.phase == TransitionPhase.LEAVE) {\n const expiry = callProp(expires, t.item);\n\n if (expiry !== false) {\n const expiryMs = expiry === true ? 0 : expiry;\n t.expired = true;\n\n if (!idle && expiryMs > 0) {\n if (expiryMs <= 0x7fffffff) t.expirationId = setTimeout(forceUpdate, expiryMs);\n return;\n }\n }\n }\n\n if (idle && transitions.some(t => t.expired)) {\n exitingTransitions.current.delete(t);\n\n if (exitBeforeEnter) {\n forceChange.current = true;\n }\n\n forceUpdate();\n }\n }\n };\n\n const springs = getSprings(t.ctrl, payload);\n\n if (phase === TransitionPhase.LEAVE && exitBeforeEnter) {\n exitingTransitions.current.set(t, {\n phase,\n springs,\n payload\n });\n } else {\n changes.set(t, {\n phase,\n springs,\n payload\n });\n }\n });\n const context = useContext(SpringContext);\n const prevContext = usePrev(context);\n const hasContext = context !== prevContext && hasProps(context);\n useIsomorphicLayoutEffect(() => {\n if (hasContext) {\n each(transitions, t => {\n t.ctrl.start({\n default: context\n });\n });\n }\n }, [context]);\n each(changes, (_, t) => {\n if (exitingTransitions.current.size) {\n const ind = transitions.findIndex(state => state.key === t.key);\n transitions.splice(ind, 1);\n }\n });\n useIsomorphicLayoutEffect(() => {\n each(exitingTransitions.current.size ? exitingTransitions.current : changes, ({\n phase,\n payload\n }, t) => {\n const {\n ctrl\n } = t;\n t.phase = phase;\n ref == null ? void 0 : ref.add(ctrl);\n\n if (hasContext && phase == TransitionPhase.ENTER) {\n ctrl.start({\n default: context\n });\n }\n\n if (payload) {\n replaceRef(ctrl, payload.ref);\n\n if ((ctrl.ref || ref) && !forceChange.current) {\n ctrl.update(payload);\n } else {\n ctrl.start(payload);\n\n if (forceChange.current) {\n forceChange.current = false;\n }\n }\n }\n });\n }, reset ? void 0 : deps);\n\n const renderTransitions = render => React.createElement(React.Fragment, null, transitions.map((t, i) => {\n const {\n springs\n } = changes.get(t) || t.ctrl;\n const elem = render(_extends({}, springs), t.item, t, i);\n return elem && elem.type ? React.createElement(elem.type, _extends({}, elem.props, {\n key: is.str(t.key) || is.num(t.key) ? t.key : t.ctrl.id,\n ref: elem.ref\n })) : elem;\n }));\n\n return ref ? [renderTransitions, ref] : renderTransitions;\n}\nlet nextKey = 1;\n\nfunction getKeys(items, {\n key,\n keys = key\n}, prevTransitions) {\n if (keys === null) {\n const reused = new Set();\n return items.map(item => {\n const t = prevTransitions && prevTransitions.find(t => t.item === item && t.phase !== TransitionPhase.LEAVE && !reused.has(t));\n\n if (t) {\n reused.add(t);\n return t.key;\n }\n\n return nextKey++;\n });\n }\n\n return is.und(keys) ? items : is.fun(keys) ? items.map(keys) : toArray(keys);\n}\n\nconst _excluded$2 = [\"children\"];\nfunction Spring(_ref) {\n let {\n children\n } = _ref,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$2);\n\n return children(useSpring(props));\n}\n\nconst _excluded$1 = [\"items\", \"children\"];\nfunction Trail(_ref) {\n let {\n items,\n children\n } = _ref,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$1);\n\n const trails = useTrail(items.length, props);\n return items.map((item, index) => {\n const result = children(item, index);\n return is.fun(result) ? result(trails[index]) : result;\n });\n}\n\nconst _excluded = [\"items\", \"children\"];\nfunction Transition(_ref) {\n let {\n items,\n children\n } = _ref,\n props = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n return useTransition(items, props)(children);\n}\n\nclass Interpolation extends FrameValue {\n constructor(source, args) {\n super();\n this.key = void 0;\n this.idle = true;\n this.calc = void 0;\n this._active = new Set();\n this.source = source;\n this.calc = createInterpolator(...args);\n\n const value = this._get();\n\n const nodeType = getAnimatedType(value);\n setAnimated(this, nodeType.create(value));\n }\n\n advance(_dt) {\n const value = this._get();\n\n const oldValue = this.get();\n\n if (!isEqual(value, oldValue)) {\n getAnimated(this).setValue(value);\n\n this._onChange(value, this.idle);\n }\n\n if (!this.idle && checkIdle(this._active)) {\n becomeIdle(this);\n }\n }\n\n _get() {\n const inputs = is.arr(this.source) ? this.source.map(getFluidValue) : toArray(getFluidValue(this.source));\n return this.calc(...inputs);\n }\n\n _start() {\n if (this.idle && !checkIdle(this._active)) {\n this.idle = false;\n each(getPayload(this), node => {\n node.done = false;\n });\n\n if (Globals.skipAnimation) {\n raf.batchedUpdates(() => this.advance());\n becomeIdle(this);\n } else {\n frameLoop.start(this);\n }\n }\n }\n\n _attach() {\n let priority = 1;\n each(toArray(this.source), source => {\n if (hasFluidValue(source)) {\n addFluidObserver(source, this);\n }\n\n if (isFrameValue(source)) {\n if (!source.idle) {\n this._active.add(source);\n }\n\n priority = Math.max(priority, source.priority + 1);\n }\n });\n this.priority = priority;\n\n this._start();\n }\n\n _detach() {\n each(toArray(this.source), source => {\n if (hasFluidValue(source)) {\n removeFluidObserver(source, this);\n }\n });\n\n this._active.clear();\n\n becomeIdle(this);\n }\n\n eventObserved(event) {\n if (event.type == 'change') {\n if (event.idle) {\n this.advance();\n } else {\n this._active.add(event.parent);\n\n this._start();\n }\n } else if (event.type == 'idle') {\n this._active.delete(event.parent);\n } else if (event.type == 'priority') {\n this.priority = toArray(this.source).reduce((highest, parent) => Math.max(highest, (isFrameValue(parent) ? parent.priority : 0) + 1), 0);\n }\n }\n\n}\n\nfunction isIdle(source) {\n return source.idle !== false;\n}\n\nfunction checkIdle(active) {\n return !active.size || Array.from(active).every(isIdle);\n}\n\nfunction becomeIdle(self) {\n if (!self.idle) {\n self.idle = true;\n each(getPayload(self), node => {\n node.done = true;\n });\n callFluidObservers(self, {\n type: 'idle',\n parent: self\n });\n }\n}\n\nconst to = (source, ...args) => new Interpolation(source, args);\nconst interpolate = (source, ...args) => (deprecateInterpolate(), new Interpolation(source, args));\n\nGlobals.assign({\n createStringInterpolator,\n to: (source, args) => new Interpolation(source, args)\n});\nconst update = frameLoop.advance;\n\nexport { BailSignal, Controller, FrameValue, Interpolation, Spring, SpringContext, SpringRef, SpringValue, Trail, Transition, config, easings, inferTo, interpolate, to, update, useChain, useSpring, useSpringRef, useSprings, useTrail, useTransition };\n","import { Globals } from '@react-spring/core';\nexport * from '@react-spring/core';\nimport { unstable_batchedUpdates } from 'react-dom';\nimport { eachProp, is, toArray, FluidValue, each, getFluidValue, hasFluidValue, addFluidObserver, removeFluidObserver, callFluidObservers, createStringInterpolator, colors } from '@react-spring/shared';\nimport { AnimatedObject, createHost } from '@react-spring/animated';\n\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}\n\nconst _excluded$2 = [\"style\", \"children\", \"scrollTop\", \"scrollLeft\"];\nconst isCustomPropRE = /^--/;\n\nfunction dangerousStyleValue(name, value) {\n if (value == null || typeof value === 'boolean' || value === '') return '';\n if (typeof value === 'number' && value !== 0 && !isCustomPropRE.test(name) && !(isUnitlessNumber.hasOwnProperty(name) && isUnitlessNumber[name])) return value + 'px';\n return ('' + value).trim();\n}\n\nconst attributeCache = {};\nfunction applyAnimatedValues(instance, props) {\n if (!instance.nodeType || !instance.setAttribute) {\n return false;\n }\n\n const isFilterElement = instance.nodeName === 'filter' || instance.parentNode && instance.parentNode.nodeName === 'filter';\n\n const _ref = props,\n {\n style,\n children,\n scrollTop,\n scrollLeft\n } = _ref,\n attributes = _objectWithoutPropertiesLoose(_ref, _excluded$2);\n\n const values = Object.values(attributes);\n const names = Object.keys(attributes).map(name => isFilterElement || instance.hasAttribute(name) ? name : attributeCache[name] || (attributeCache[name] = name.replace(/([A-Z])/g, n => '-' + n.toLowerCase())));\n\n if (children !== void 0) {\n instance.textContent = children;\n }\n\n for (let name in style) {\n if (style.hasOwnProperty(name)) {\n const value = dangerousStyleValue(name, style[name]);\n\n if (isCustomPropRE.test(name)) {\n instance.style.setProperty(name, value);\n } else {\n instance.style[name] = value;\n }\n }\n }\n\n names.forEach((name, i) => {\n instance.setAttribute(name, values[i]);\n });\n\n if (scrollTop !== void 0) {\n instance.scrollTop = scrollTop;\n }\n\n if (scrollLeft !== void 0) {\n instance.scrollLeft = scrollLeft;\n }\n}\nlet isUnitlessNumber = {\n animationIterationCount: true,\n borderImageOutset: true,\n borderImageSlice: true,\n borderImageWidth: true,\n boxFlex: true,\n boxFlexGroup: true,\n boxOrdinalGroup: true,\n columnCount: true,\n columns: true,\n flex: true,\n flexGrow: true,\n flexPositive: true,\n flexShrink: true,\n flexNegative: true,\n flexOrder: true,\n gridRow: true,\n gridRowEnd: true,\n gridRowSpan: true,\n gridRowStart: true,\n gridColumn: true,\n gridColumnEnd: true,\n gridColumnSpan: true,\n gridColumnStart: true,\n fontWeight: true,\n lineClamp: true,\n lineHeight: true,\n opacity: true,\n order: true,\n orphans: true,\n tabSize: true,\n widows: true,\n zIndex: true,\n zoom: true,\n fillOpacity: true,\n floodOpacity: true,\n stopOpacity: true,\n strokeDasharray: true,\n strokeDashoffset: true,\n strokeMiterlimit: true,\n strokeOpacity: true,\n strokeWidth: true\n};\n\nconst prefixKey = (prefix, key) => prefix + key.charAt(0).toUpperCase() + key.substring(1);\n\nconst prefixes = ['Webkit', 'Ms', 'Moz', 'O'];\nisUnitlessNumber = Object.keys(isUnitlessNumber).reduce((acc, prop) => {\n prefixes.forEach(prefix => acc[prefixKey(prefix, prop)] = acc[prop]);\n return acc;\n}, isUnitlessNumber);\n\nconst _excluded$1 = [\"x\", \"y\", \"z\"];\nconst domTransforms = /^(matrix|translate|scale|rotate|skew)/;\nconst pxTransforms = /^(translate)/;\nconst degTransforms = /^(rotate|skew)/;\n\nconst addUnit = (value, unit) => is.num(value) && value !== 0 ? value + unit : value;\n\nconst isValueIdentity = (value, id) => is.arr(value) ? value.every(v => isValueIdentity(v, id)) : is.num(value) ? value === id : parseFloat(value) === id;\n\nclass AnimatedStyle extends AnimatedObject {\n constructor(_ref) {\n let {\n x,\n y,\n z\n } = _ref,\n style = _objectWithoutPropertiesLoose(_ref, _excluded$1);\n\n const inputs = [];\n const transforms = [];\n\n if (x || y || z) {\n inputs.push([x || 0, y || 0, z || 0]);\n transforms.push(xyz => [`translate3d(${xyz.map(v => addUnit(v, 'px')).join(',')})`, isValueIdentity(xyz, 0)]);\n }\n\n eachProp(style, (value, key) => {\n if (key === 'transform') {\n inputs.push([value || '']);\n transforms.push(transform => [transform, transform === '']);\n } else if (domTransforms.test(key)) {\n delete style[key];\n if (is.und(value)) return;\n const unit = pxTransforms.test(key) ? 'px' : degTransforms.test(key) ? 'deg' : '';\n inputs.push(toArray(value));\n transforms.push(key === 'rotate3d' ? ([x, y, z, deg]) => [`rotate3d(${x},${y},${z},${addUnit(deg, unit)})`, isValueIdentity(deg, 0)] : input => [`${key}(${input.map(v => addUnit(v, unit)).join(',')})`, isValueIdentity(input, key.startsWith('scale') ? 1 : 0)]);\n }\n });\n\n if (inputs.length) {\n style.transform = new FluidTransform(inputs, transforms);\n }\n\n super(style);\n }\n\n}\n\nclass FluidTransform extends FluidValue {\n constructor(inputs, transforms) {\n super();\n this._value = null;\n this.inputs = inputs;\n this.transforms = transforms;\n }\n\n get() {\n return this._value || (this._value = this._get());\n }\n\n _get() {\n let transform = '';\n let identity = true;\n each(this.inputs, (input, i) => {\n const arg1 = getFluidValue(input[0]);\n const [t, id] = this.transforms[i](is.arr(arg1) ? arg1 : input.map(getFluidValue));\n transform += ' ' + t;\n identity = identity && id;\n });\n return identity ? 'none' : transform;\n }\n\n observerAdded(count) {\n if (count == 1) each(this.inputs, input => each(input, value => hasFluidValue(value) && addFluidObserver(value, this)));\n }\n\n observerRemoved(count) {\n if (count == 0) each(this.inputs, input => each(input, value => hasFluidValue(value) && removeFluidObserver(value, this)));\n }\n\n eventObserved(event) {\n if (event.type == 'change') {\n this._value = null;\n }\n\n callFluidObservers(this, event);\n }\n\n}\n\nconst primitives = ['a', 'abbr', 'address', 'area', 'article', 'aside', 'audio', 'b', 'base', 'bdi', 'bdo', 'big', 'blockquote', 'body', 'br', 'button', 'canvas', 'caption', 'cite', 'code', 'col', 'colgroup', 'data', 'datalist', 'dd', 'del', 'details', 'dfn', 'dialog', 'div', 'dl', 'dt', 'em', 'embed', 'fieldset', 'figcaption', 'figure', 'footer', 'form', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'head', 'header', 'hgroup', 'hr', 'html', 'i', 'iframe', 'img', 'input', 'ins', 'kbd', 'keygen', 'label', 'legend', 'li', 'link', 'main', 'map', 'mark', 'menu', 'menuitem', 'meta', 'meter', 'nav', 'noscript', 'object', 'ol', 'optgroup', 'option', 'output', 'p', 'param', 'picture', 'pre', 'progress', 'q', 'rp', 'rt', 'ruby', 's', 'samp', 'script', 'section', 'select', 'small', 'source', 'span', 'strong', 'style', 'sub', 'summary', 'sup', 'table', 'tbody', 'td', 'textarea', 'tfoot', 'th', 'thead', 'time', 'title', 'tr', 'track', 'u', 'ul', 'var', 'video', 'wbr', 'circle', 'clipPath', 'defs', 'ellipse', 'foreignObject', 'g', 'image', 'line', 'linearGradient', 'mask', 'path', 'pattern', 'polygon', 'polyline', 'radialGradient', 'rect', 'stop', 'svg', 'text', 'tspan'];\n\nconst _excluded = [\"scrollTop\", \"scrollLeft\"];\nGlobals.assign({\n batchedUpdates: unstable_batchedUpdates,\n createStringInterpolator,\n colors\n});\nconst host = createHost(primitives, {\n applyAnimatedValues,\n createAnimatedStyle: style => new AnimatedStyle(style),\n getComponentProps: _ref => {\n let props = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n return props;\n }\n});\nconst animated = host.animated;\n\nexport { animated as a, animated };\n","import { FullGestureState } from '@use-gesture/react'\nimport { useEffect, useRef } from 'react'\nimport { SlideActionType, SlideMode } from '../types/common'\n\nconst eventLabel = 'RSC::Event'\n\ntype OnSlideStartChange = {\n eventName: 'onSlideStartChange'\n slideActionType: SlideActionType\n slideMode: SlideMode\n nextItem: {\n index: number\n id: string\n startReached: boolean\n endReached: boolean\n }\n}\ntype OnSlideChange = {\n eventName: 'onSlideChange'\n slideActionType: SlideActionType\n slideMode: SlideMode\n currentItem: {\n index: number\n id: string\n startReached: boolean\n endReached: boolean\n }\n}\ntype OnFullscreenChange = {\n eventName: 'onFullscreenChange'\n isFullscreen: boolean\n}\ntype OnDrag = Omit<FullGestureState<'drag'>, 'event'> & {\n eventName: 'onDrag'\n slideActionType: SlideActionType\n}\n\ntype Events = OnSlideStartChange | OnSlideChange | OnDrag | OnFullscreenChange\n\ntype EventHandler = (props: Events) => void\n\nexport type EmitEvent = (event: Events) => void\nexport type UseListenToCustomEvent = {\n useListenToCustomEvent: (eventHandler: EventHandler) => void\n emitEvent: (event: Events) => void\n}\n\nexport function useEventsModule() {\n const targetEvent = useRef<HTMLDivElement | null>(null)\n\n useEffect(() => {\n targetEvent.current = document.createElement('div')\n }, [])\n\n function useListenToCustomEvent(eventHandler: EventHandler) {\n useEffect(() => {\n function handleEvent(event: CustomEvent<Events>) {\n eventHandler(event.detail)\n }\n\n if (targetEvent.current) {\n // @ts-ignore\n targetEvent.current.addEventListener(eventLabel, handleEvent, false)\n return () => {\n // @ts-ignore\n targetEvent.current?.removeEventListener(eventLabel, handleEvent, false)\n }\n }\n }, [])\n }\n function emitEvent(event: Events) {\n if (targetEvent.current) {\n const newEvent = new CustomEvent(eventLabel, {\n detail: event,\n })\n targetEvent.current.dispatchEvent(newEvent)\n }\n }\n\n return {\n useListenToCustomEvent,\n emitEvent,\n }\n}\n","import { useRef, MutableRefObject, useEffect } from 'react'\nimport screenfull from 'screenfull'\nimport { EmitEvent } from './useEventsModule'\n\ntype FullscreenModule = {\n mainCarouselWrapperRef: MutableRefObject<HTMLDivElement | null>\n emitEvent: EmitEvent\n handleResize?(): void\n}\n\nexport function useFullscreenModule({\n mainCarouselWrapperRef,\n emitEvent,\n handleResize,\n}: FullscreenModule) {\n const isFullscreen = useRef(false)\n\n useEffect(() => {\n function handleFullscreenChange() {\n if (document.fullscreenElement) {\n setIsFullscreen(true)\n emitEvent({\n eventName: 'onFullscreenChange',\n isFullscreen: true,\n })\n\n handleResize && handleResize()\n }\n\n if (!document.fullscreenElement) {\n setIsFullscreen(false)\n emitEvent({\n eventName: 'onFullscreenChange',\n isFullscreen: false,\n })\n handleResize && handleResize()\n }\n }\n\n if (screenfull.isEnabled) {\n screenfull.on('change', handleFullscreenChange)\n return () => {\n if (screenfull.isEnabled) {\n screenfull.off('change', handleFullscreenChange)\n }\n }\n }\n }, [])\n\n function setIsFullscreen(_isFullscreen: boolean) {\n isFullscreen.current = _isFullscreen\n }\n\n function getIsFullscreen() {\n return isFullscreen.current\n }\n\n function enterFullscreen(elementRef?: HTMLElement) {\n if (screenfull.isEnabled) {\n screenfull.request((elementRef || mainCarouselWrapperRef.current) as Element)\n }\n }\n\n function exitFullscreen() {\n screenfull.isEnabled && screenfull.exit()\n }\n\n return {\n enterFullscreen,\n exitFullscreen,\n getIsFullscreen,\n }\n}\n","import { useSpring } from '@react-spring/web'\nimport { useRef } from 'react'\nimport { SpringCarouselWithThumbs, PrepareThumbsData } from 'src/types/internals'\n\ntype Props = {\n withThumbs?: boolean\n thumbsSlideAxis: SpringCarouselWithThumbs['thumbsSlideAxis']\n prepareThumbsData?: PrepareThumbsData\n items: SpringCarouselWithThumbs['items']\n}\n\nfunction isInViewport(el: HTMLElement) {\n const rect = el.getBoundingClientRect()\n return (\n rect.top >= 0 &&\n rect.left >= 0 &&\n rect.bottom <= (window.innerHeight || document.documentElement.clientHeight) &&\n rect.right <= (window.innerWidth || document.documentElement.clientWidth)\n )\n}\n\nexport function useThumbsModule({\n thumbsSlideAxis = 'x',\n withThumbs = false,\n prepareThumbsData,\n items,\n}: Props) {\n const wrapperRef = useRef<HTMLDivElement | null>(null)\n const [spring, setSpring] = useSpring(() => ({\n val: 0,\n }))\n\n function getTotalScrollValue() {\n return Math.round(\n Number(\n wrapperRef.current?.[thumbsSlideAxis === 'x' ? 'scrollWidth' : 'scrollHeight'],\n ) -\n wrapperRef.current!.getBoundingClientRect()[\n thumbsSlideAxis === 'x' ? 'width' : 'height'\n ],\n )\n }\n\n function handleScroll(activeItem: number) {\n function getThumbNode() {\n if (wrapperRef.current) {\n return wrapperRef.current.querySelector(\n `#thumb-item-${items[activeItem].id}`,\n ) as HTMLElement\n }\n return null\n }\n\n const thumbNode = getThumbNode()\n if (thumbNode && wrapperRef.current) {\n if (!isInViewport(thumbNode)) {\n const offset = thumbNode.offsetLeft\n const val = offset > getTotalScrollValue() ? getTotalScrollValue() : offset\n\n setSpring.start({\n from: {\n val:\n wrapperRef.current?.[\n thumbsSlideAxis === 'x' ? 'scrollLeft' : 'scrollTop'\n ] ?? 0,\n },\n to: {\n val,\n },\n onChange: ({ value }) => {\n if (wrapperRef.current) {\n wrapperRef.current[thumbsSlideAxis === 'x' ? 'scrollLeft' : 'scrollTop'] =\n Math.abs(value.val)\n }\n },\n })\n }\n }\n }\n\n function handlePrepareThumbsData() {\n function getPreparedItems(\n _items: ReturnType<PrepareThumbsData>,\n ): ReturnType<PrepareThumbsData> {\n return _items.map(i => ({\n id: i.id,\n renderThumb: i.renderThumb,\n }))\n }\n\n if (prepareThumbsData) {\n return prepareThumbsData(getPreparedItems(items))\n }\n return getPreparedItems(items)\n }\n\n const thumbsFragment = withThumbs ? (\n <div\n className=\"use-spring-carousel-thumbs-wrapper\"\n ref={wrapperRef}\n onWheel={() => spring.val.stop()}\n style={{\n display: 'flex',\n flex: '1',\n position: 'relative',\n width: '100%',\n height: '100%',\n flexDirection: thumbsSlideAxis === 'x' ? 'row' : 'column',\n ...(thumbsSlideAxis === 'x'\n ? { overflowX: 'auto' }\n : {\n overflowY: 'auto',\n maxHeight: '100%',\n }),\n }}\n >\n {handlePrepareThumbsData().map(({ id, renderThumb }) => {\n const thumbId = `thumb-item-${id}`\n return (\n <div key={thumbId} id={thumbId} className=\"thumb-item\">\n {renderThumb}\n </div>\n )\n })}\n </div>\n ) : null\n\n return {\n thumbsFragment,\n handleScroll,\n }\n}\n","import { config, useSpring } from '@react-spring/web'\nimport React, {\n createContext,\n useCallback,\n useContext,\n useEffect,\n useLayoutEffect,\n useRef,\n} from 'react'\n\nimport { SlideActionType, SlideMode } from './types/common'\nimport { useEventsModule } from './modules/useEventsModule'\nimport { useDrag } from '@use-gesture/react'\nimport { useFullscreenModule } from './modules/useFullscreenModule'\nimport { useThumbsModule } from './modules/useThumbsModule'\nimport {\n UseSpringReturnType,\n UseSpringCarouselWithThumbs,\n UseSpringCarouselComplete,\n UseSpringCarouselWithNoThumbs,\n UseSpringCarouselWithFixedItems,\n UseSpringCarouselWithNoFixedItems,\n SpringCarouselWithThumbs,\n} from './types/internals'\n\nfunction useSpringCarousel(props: UseSpringCarouselWithThumbs): UseSpringReturnType\nfunction useSpringCarousel(props: UseSpringCarouselWithNoThumbs): UseSpringReturnType\nfunction useSpringCarousel(props: UseSpringCarouselWithFixedItems): UseSpringReturnType\nfunction useSpringCarousel(props: UseSpringCarouselWithNoFixedItems): UseSpringReturnType\n\nfunction useSpringCarousel({\n items,\n init = true,\n withThumbs,\n thumbsSlideAxis = 'x',\n itemsPerSlide = 1,\n slideType = 'fixed',\n gutter = 0,\n withLoop = false,\n startEndGutter = 0,\n carouselSlideAxis = 'x',\n disableGestures = false,\n draggingSlideTreshold: _draggingSlideTreshold,\n slideWhenThresholdIsReached = false,\n freeScroll,\n enableFreeScrollDrag,\n initialStartingPosition,\n prepareThumbsData,\n initialActiveItem = 0,\n}: UseSpringCarouselComplete) {\n const prevWindowWidth = useRef(0)\n const draggingSlideTreshold = useRef(_draggingSlideTreshold ?? 0)\n const slideActionType = useRef<SlideActionType>('initial')\n const slideModeType = useRef<SlideMode>('initial')\n const prevSlidedValue = useRef(0)\n const [spring, setSpring] = useSpring(() => ({\n val: 0,\n pause: !init,\n onChange({ value }) {\n if (freeScroll && mainCarouselWrapperRef.current) {\n setStartEndItemReachedOnFreeScroll()\n if (carouselSlideAxis === 'x') {\n mainCarouselWrapperRef.current.scrollLeft = Math.abs(value.val)\n } else {\n mainCarouselWrapperRef.current.scrollTop = Math.abs(value.val)\n }\n } else if (carouselTrackWrapperRef.current) {\n if (carouselSlideAxis === 'x') {\n carouselTrackWrapperRef.current.style.transform = `translate3d(${value.val}px, 0px,0px)`\n } else {\n carouselTrackWrapperRef.current.style.transform = `translate3d(0px,${value.val}px,0px)`\n }\n }\n },\n }))\n const activeItem = useRef(initialActiveItem)\n const firstItemReached = useRef(initialActiveItem === 0)\n const lastItemReached = useRef(false)\n const mainCarouselWrapperRef = useRef<HTMLDivElement | null>(null)\n const carouselTrackWrapperRef = useRef<HTMLDivElement | null>(null)\n\n const getItems = useCallback(() => {\n if (withLoop) {\n return [\n ...items.map(i => ({\n ...i,\n id: `prev-repeated-item-${i.id}`,\n })),\n ...items,\n ...items.map(i => ({\n ...i,\n id: `next-repeated-item-${i.id}`,\n })),\n ]\n }\n return [...items]\n }, [items, withLoop])\n const internalItems = getItems()\n\n const { emitEvent, useListenToCustomEvent } = useEventsModule()\n const { thumbsFragment, handleScroll } = useThumbsModule({\n withThumbs: !!withThumbs,\n thumbsSlideAxis,\n prepareThumbsData,\n items: items as SpringCarouselWithThumbs['items'],\n })\n const { enterFullscreen, exitFullscreen, getIsFullscreen } = useFullscreenModule({\n mainCarouselWrapperRef,\n emitEvent,\n handleResize: () => adjustCarouselWrapperPosition(),\n })\n\n function getItemStyles() {\n if (slideType === 'fixed' && !freeScroll) {\n return {\n marginRight: `${gutter}px`,\n flex: `1 0 calc(100% / ${itemsPerSlide} - ${\n (gutter * (itemsPerSlide - 1)) / itemsPerSlide\n }px)`,\n }\n }\n return {\n ...{ marginRight: `${gutter}px` },\n }\n }\n\n function getSlideValue() {\n const carouselItem = mainCarouselWrapperRef.current?.querySelector(\n '.use-spring-carousel-item',\n )\n\n if (!carouselItem) {\n throw Error('No carousel items available!')\n }\n\n return (\n carouselItem.getBoundingClientRect()[\n carouselSlideAxis === 'x' ? 'width' : 'height'\n ] + gutter\n )\n }\n\n type SlideToItem = {\n from: number\n to: number\n nextActiveItem?: number\n immediate?: boolean\n slideMode: 'click' | 'drag'\n }\n\n function slideToItem({\n from,\n to,\n nextActiveItem,\n immediate = false,\n slideMode,\n }: SlideToItem) {\n slideModeType.current = slideMode\n\n if (typeof nextActiveItem === 'number') {\n if (!freeScroll) {\n activeItem.current = nextActiveItem\n }\n emitEvent({\n eventName: 'onSlideStartChange',\n slideActionType: slideActionType.current,\n slideMode: slideModeType.current,\n nextItem: {\n startReached: firstItemReached.current,\n endReached: lastItemReached.current,\n index: freeScroll ? -1 : activeItem.current,\n id: freeScroll ? '' : items[activeItem.current].id,\n },\n })\n }\n\n prevSlidedValue.current = to\n setSpring.start({\n immediate,\n from: {\n val: from,\n },\n to: {\n val: to,\n },\n config: {\n ...config.default,\n velocity: spring.val.velocity,\n },\n onRest(value) {\n if (!immediate && value.finished) {\n emitEvent({\n eventName: 'onSlideChange',\n slideActionType: slideActionType.current,\n slideMode: slideModeType.current,\n currentItem: {\n startReached: firstItemReached.current,\n endReached: lastItemReached.current,\n index: freeScroll ? -1 : activeItem.current,\n id: freeScroll ? '' : items[activeItem.current].id,\n },\n })\n }\n },\n })\n if (withThumbs && !immediate) {\n handleScroll(activeItem.current)\n }\n }\n\n function getTotalScrollValue() {\n if (withLoop) {\n return getSlideValue() * items.length\n }\n return Math.round(\n Number(\n carouselTrackWrapperRef.current?.[\n carouselSlideAxis === 'x' ? 'scrollWidth' : 'scrollHeight'\n ],\n ) -\n carouselTrackWrapperRef.current!.getBoundingClientRect()[\n carouselSlideAxis === 'x' ? 'width' : 'height'\n ],\n )\n }\n function getAnimatedWrapperStyles() {\n const percentValue = `calc(100% - ${startEndGutter * 2}px)`\n return {\n width: carouselSlideAxis === 'x' ? percentValue : '100%',\n height: carouselSlideAxis === 'y' ? percentValue : '100%',\n }\n }\n\n function getCarouselItemWidth() {\n const carouselItem = carouselTrackWrapperRef.current?.querySelector(\n '.use-spring-carousel-item',\n )\n if (!carouselItem) {\n throw Error('No carousel items available!')\n }\n return (\n carouselItem.getBoundingClientRect()[\n carouselSlideAxis === 'x' ? 'width' : 'height'\n ] + gutter\n )\n }\n function adjustCarouselWrapperPosition() {\n const positionProperty = carouselSlideAxis === 'x' ? 'left' : 'top'\n\n function setPosition(v: number) {\n const ref = carouselTrackWrapperRef.current\n if (!ref) return\n\n if (withLoop) {\n ref.style.top = '0px'\n ref.style.left = '0px'\n ref.style[positionProperty] = `-${v - startEndGutter}px`\n } else {\n ref.style.left = '0px'\n ref.style.top = '0px'\n }\n }\n\n const currentFromValue = Math.abs(getFromValue())\n\n if (currentFromValue < getTotalScrollValue() && lastItemReached.current) {\n lastItemReached.current = false\n }\n if (currentFromValue > getTotalScrollValue()) {\n const val = -getTotalScrollValue()\n lastItemReached.current = true\n prevSlidedValue.current = val\n setSpring.start({\n immediate: true,\n val,\n })\n return\n }\n\n if (initialStartingPosition === 'center') {\n setPosition(\n getCarouselItemWidth() * items.length -\n getSlideValue() * Math.round((itemsPerSlide - 1) / 2),\n )\n } else if (initialStartingPosition === 'end') {\n setPosition(\n getCarouselItemWidth() * items.length -\n getSlideValue() * Math.round(itemsPerSlide - 1),\n )\n } else {\n setPosition(getCarouselItemWidth() * items.length)\n }\n\n if (!freeScroll && slideType === 'fixed') {\n const val = -(getSlideValue() * activeItem.current)\n prevSlidedValue.current = val\n setSpring.start({\n immediate: true,\n val,\n })\n }\n }\n\n function getFromValue() {\n if (freeScroll && mainCarouselWrapperRef.current) {\n return mainCarouselWrapperRef.current[\n carouselSlideAxis === 'x' ? 'scrollLeft' : 'scrollTop'\n ]\n }\n return spring.val.get()\n }\n function getToValue(type: 'next' | 'prev', index?: number) {\n if (freeScroll && type === 'next') {\n const next = prevSlidedValue.current + getSlideValue()\n if (next > getTotalScrollValue()) {\n return getTotalScrollValue()\n }\n return next\n }\n\n if (freeScroll && type === 'prev') {\n const next = prevSlidedValue.current - getSlideValue()\n if (next < 0) {\n return 0\n }\n return next\n }\n\n if (type === 'next') {\n if (index) {\n return -(index * getSlideValue())\n }\n return prevSlidedValue.current - getSlideValue()\n }\n\n if (index) {\n return -(index * getSlideValue())\n }\n return prevSlidedValue.current + getSlideValue()\n }\n function slideToPrevItem(\n type: Exclude<SlideMode, 'initial'> = 'click',\n index?: number,\n ) {\n if (!init || (firstItemReached.current && !withLoop)) return\n\n slideActionType.current = 'prev'\n lastItemReached.current = false\n\n const nextItem = index || activeItem.current - 1\n\n if (!withLoop) {\n const nextItemWillExceed = getToValue('prev', index) + getSlideValue() / 3 > 0\n\n if (firstItemReached.current) return\n if (nextItemWillExceed) {\n firstItemReached.current = true\n lastItemReached.current = false\n\n slideToItem({\n slideMode: type,\n from: getFromValue(),\n to: 0,\n nextActiveItem: 0,\n })\n return\n }\n }\n if (withLoop && firstItemReached.current) {\n firstItemReached.current = false\n lastItemReached.current = true\n slideToItem({\n slideMode: type,\n from: getFromValue() - getSlideValue() * items.length,\n to: -(getSlideValue() * items.length) + getSlideValue(),\n nextActiveItem: items.length - 1,\n })\n return\n }\n if (nextItem === 0) {\n firstItemReached.current = true\n }\n if (nextItem === items.length - 1 || nextItem === -1) {\n lastItemReached.current = true\n }\n slideToItem({\n slideMode: type,\n from: getFromValue(),\n to: getToValue('prev', index),\n nextActiveItem: nextItem,\n })\n }\n function slideToNextItem(\n type: Exclude<SlideMode, 'initial'> = 'click',\n index?: number,\n ) {\n if (!init || (lastItemReached.current && !withLoop)) return\n\n slideActionType.current = 'next'\n firstItemReached.current = false\n\n const nextItem = index || activeItem.current + 1\n\n if (!withLoop) {\n const nextItemWillExceed =\n Math.abs(getToValue('next', index)) > getTotalScrollValue() - getSlideValue() / 3\n\n if (lastItemReached.current) return\n if (nextItemWillExceed) {\n firstItemReached.current = false\n lastItemReached.current = true\n\n slideToItem({\n slideMode: type,\n from: getFromValue(),\n to: -getTotalScrollValue(),\n nextActiveItem: nextItem,\n })\n return\n }\n }\n if (withLoop && lastItemReached.current) {\n lastItemReached.current = false\n firstItemReached.current = true\n slideToItem({\n slideMode: type,\n from: getFromValue() + getSlideValue() * items.length,\n to: 0,\n nextActiveItem: 0,\n })\n return\n }\n if (nextItem === 0) {\n firstItemReached.current = true\n }\n if (nextItem === items.length - 1) {\n lastItemReached.current = true\n }\n slideToItem({\n slideMode: type,\n from: getFromValue(),\n to: getToValue('next', index),\n nextActiveItem: nextItem,\n })\n }\n\n useEffect(() => {\n prevWindowWidth.current = window.innerWidth\n }, [])\n useEffect(() => {\n adjustCarouselWrapperPosition()\n }, [\n initialStartingPosition,\n itemsPerSlide,\n withLoop,\n startEndGutter,\n gutter,\n freeScroll,\n slideType,\n init,\n ])\n useLayoutEffect(() => {\n /**\n * Set initial track position\n */\n if (carouselTrackWrapperRef.current) {\n adjustCarouselWrapperPosition()\n }\n }, [])\n useEffect(() => {\n if (_draggingSlideTreshold) {\n draggingSlideTreshold.current = _draggingSlideTreshold\n } else {\n draggingSlideTreshold.current = Math.floor(getSlideValue() / 2 / 2)\n }\n }, [_draggingSlideTreshold])\n useEffect(() => {\n function handleResize() {\n if (window.innerWidth === prevWindowWidth.current) return\n prevWindowWidth.current = window.innerWidth\n adjustCarouselWrapperPosition()\n }\n window.addEventListener('resize', handleResize)\n return () => {\n window.removeEventListener('resize', handleResize)\n }\n }, [])\n\n const bindDrag = useDrag(\n state => {\n const isDragging = state.dragging\n const movement = state.offset[carouselSlideAxis === 'x' ? 0 : 1]\n const currentMovement = state.movement[carouselSlideAxis === 'x' ? 0 : 1]\n const direction = state.direction[carouselSlideAxis === 'x' ? 0 : 1]\n\n const prevItemTreshold = currentMovement > draggingSlideTreshold.current\n const nextItemTreshold = currentMovement < -draggingSlideTreshold.current\n\n if (isDragging) {\n if (direction > 0) {\n slideActionType.current = 'prev'\n } else {\n slideActionType.current = 'next'\n }\n\n emitEvent({\n ...state,\n eventName: 'onDrag',\n slideActionType: slideActionType.current,\n })\n\n if (freeScroll) {\n if (slideActionType.current === 'prev' && movement > 0) {\n state.cancel()\n setSpring.start({\n from: {\n val: getFromValue(),\n },\n to: {\n val: 0,\n },\n config: {\n velocity: state.velocity,\n friction: 50,\n tension: 1000,\n },\n })\n return\n }\n\n setSpring.start({\n from: {\n val: getFromValue(),\n },\n to: {\n val: -movement,\n },\n config: {\n velocity: state.velocity,\n friction: 50,\n tension: 1000,\n },\n })\n return\n }\n\n setSpring.start({\n val: movement,\n config: {\n velocity: state.velocity,\n friction: 50,\n tension: 1000,\n },\n })\n\n if (slideWhenThresholdIsReached && nextItemTreshold) {\n slideToNextItem('drag')\n state.cancel()\n } else if (slideWhenThresholdIsReached && prevItemTreshold) {\n slideToPrevItem('drag')\n state.cancel()\n }\n return\n }\n\n if (state.last && !state.canceled && freeScroll) {\n if (slideActionType.current === 'prev') {\n slideToPrevItem('drag')\n }\n if (slideActionType.current === 'next') {\n slideToNextItem('drag')\n }\n }\n\n if (state.last && !state.canceled && !freeScroll) {\n if (nextItemTreshold) {\n if (!withLoop && lastItemReached.current) {\n setSpring.start({\n val: -getTotalScrollValue(),\n config: {\n ...config.default,\n velocity: state.velocity,\n },\n })\n } else {\n slideToNextItem('drag')\n }\n } else if (prevItemTreshold) {\n if (!withLoop && firstItemReached.current) {\n setSpring.start({\n val: 0,\n config: {\n ...config.default,\n velocity: state.velocity,\n },\n })\n } else {\n slideToPrevItem('drag')\n }\n } else {\n setSpring.start({\n val: prevSlidedValue.current,\n config: {\n ...config.default,\n velocity: state.velocity,\n },\n })\n }\n }\n },\n {\n enabled:\n (init && !disableGestures && !freeScroll) ||\n (!!freeScroll && !!enableFreeScrollDrag),\n axis: carouselSlideAxis,\n from: () => {\n if (freeScroll && mainCarouselWrapperRef.current) {\n return [\n -mainCarouselWrapperRef.current.scrollLeft,\n -mainCarouselWrapperRef.current.scrollTop,\n ]\n }\n if (carouselSlideAxis === 'x') {\n return [spring.val.get(), spring.val.get()]\n }\n return [spring.val.get(), spring.val.get()]\n },\n },\n )\n\n function getWrapperOverflowStyles() {\n if (freeScroll) {\n if (carouselSlideAxis === 'x') {\n return {\n overflowX: 'auto',\n }\n }\n return {\n overflowY: 'auto',\n }\n }\n return {}\n }\n\n function setStartEndItemReachedOnFreeScroll() {\n if (mainCarouselWrapperRef.current) {\n prevSlidedValue.current =\n mainCarouselWrapperRef.current[\n carouselSlideAxis === 'x' ? 'scrollLeft' : 'scrollTop'\n ]\n if (\n mainCarouselWrapperRef.current[\n carouselSlideAxis === 'x' ? 'scrollLeft' : 'scrollTop'\n ] === 0\n ) {\n firstItemReached.current = true\n lastItemReached.current = false\n }\n if (\n mainCarouselWrapperRef.current[\n carouselSlideAxis === 'x' ? 'scrollLeft' : 'scrollTop'\n ] > 0 &&\n mainCarouselWrapperRef.current[\n carouselSlideAxis === 'x' ? 'scrollLeft' : 'scrollTop'\n ] < getTotalScrollValue()\n ) {\n firstItemReached.current = false\n lastItemReached.current = false\n }\n if (\n mainCarouselWrapperRef.current[\n carouselSlideAxis === 'x' ? 'scrollLeft' : 'scrollTop'\n ] === getTotalScrollValue()\n ) {\n firstItemReached.current = false\n lastItemReached.current = true\n }\n }\n }\n function getScrollHandlers() {\n if (freeScroll) {\n return {\n onWheel() {\n spring.val.stop()\n setStartEndItemReachedOnFreeScroll()\n },\n }\n }\n return {}\n }\n function findItemIndex(id: string) {\n return items.findIndex(item => item.id === id)\n }\n function findItemIndexById(id: string | number, error: string) {\n let itemIndex = 0\n if (typeof id === 'string') {\n itemIndex = items.findIndex(_item => _item.id === id)\n } else {\n itemIndex = id\n }\n\n if (itemIndex < 0 || itemIndex >= items.length) {\n throw new Error(error)\n }\n\n return itemIndex\n }\n function internalSlideToItem(id: string | number) {\n if (!init) return\n\n firstItemReached.current = false\n lastItemReached.current = false\n\n const itemIndex = findItemIndexById(\n id,\n \"The item you want to slide to doesn't exist; please check che item id or the index you're passing to.\",\n )\n\n if (itemIndex === activeItem.current) {\n return\n }\n\n const currentItem = findItemIndex(items[activeItem.current].id)\n const newActiveItem = findItemIndex(items[itemIndex].id)\n\n if (newActiveItem > currentItem) {\n slideToNextItem('click', newActiveItem)\n } else {\n slideToPrevItem('click', newActiveItem)\n }\n }\n function getIsNextItem(id: string) {\n const itemIndex = findItemIndex(id)\n const _activeItem = activeItem.current\n if (withLoop && _activeItem === items.length - 1) {\n return itemIndex === 0\n }\n return itemIndex === _activeItem + 1\n }\n function getIsPrevItem(id: string) {\n const itemIndex = findItemIndex(id)\n const _activeItem = activeItem.current\n if (withLoop && _activeItem === 0) {\n return itemIndex === items.length - 1\n }\n return itemIndex === _activeItem - 1\n }\n\n const carouselFragment = (\n <div\n ref={mainCarouselWrapperRef}\n {...getScrollHandlers()}\n style={{\n display: 'flex',\n position: 'relative',\n width: '100%',\n height: '100%',\n ...(getWrapperOverflowStyles() as React.CSSProperties),\n }}\n >\n <div\n ref={carouselTrackWrapperRef}\n {...bindDrag()}\n style={{\n position: 'relative',\n display: 'flex',\n flexDirection: carouselSlideAxis === 'x' ? 'row' : 'column',\n touchAction: 'none',\n ...getAnimatedWrapperStyles(),\n }}\n >\n {internalItems.map((item, index) => {\n return (\n <div\n key={`${item.id}-${index}`}\n className=\"use-spring-carousel-item\"\n data-testid=\"use-spring-carousel-item-wrapper\"\n style={{\n display: 'flex',\n position: 'relative',\n flex: '1',\n ...getItemStyles(),\n }}\n >\n {item.renderItem}\n </div>\n )\n })}\n </div>\n </div>\n )\n\n return {\n useListenToCustomEvent,\n carouselFragment,\n enterFullscreen,\n exitFullscreen,\n getIsFullscreen,\n thumbsFragment,\n slideToItem: internalSlideToItem,\n getIsNextItem,\n getIsPrevItem,\n slideToPrevItem: () => slideToPrevItem(),\n slideToNextItem: () => slideToNextItem(),\n getIsActiveItem: (id: string | number) => {\n return (\n findItemIndexById(id, \"The item you want to check doesn't exist\") ===\n activeItem.current\n )\n },\n }\n}\n\nconst Context =\n createContext<\n Omit<UseSpringReturnType, 'carouselFragment' | 'thumbsFragment'> | undefined\n >(undefined)\n\nfunction useSpringCarouselContext() {\n const context = useContext(Context)\n if (!context) {\n throw new Error('useSpringCarouselContext must be used within the carousel.')\n }\n return context\n}\n\nexport { useSpringCarousel, useSpringCarouselContext }\n"],"names":["_extends","useEffect","useLayoutEffect","useRef","useState","forwardRef","useCallback","React","Globals","_objectWithoutPropertiesLoose","useContext","useMemo","unstable_batchedUpdates","_jsx","useDrag","createContext"],"mappings":"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"}