@razorpay/blade 11.34.0 → 11.35.0

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.
Files changed (25) hide show
  1. package/build/lib/native/components/BottomSheet/BottomSheetStack.js +1 -1
  2. package/build/lib/native/components/BottomSheet/BottomSheetStack.js.map +1 -1
  3. package/build/lib/native/utils/useCallbackRef.js +6 -0
  4. package/build/lib/native/utils/useCallbackRef.js.map +1 -0
  5. package/build/lib/native/utils/useControllable.js +2 -1
  6. package/build/lib/native/utils/useControllable.js.map +1 -1
  7. package/build/lib/web/development/components/BottomSheet/BottomSheetStack.js +4 -0
  8. package/build/lib/web/development/components/BottomSheet/BottomSheetStack.js.map +1 -1
  9. package/build/lib/web/development/components/Carousel/Carousel.web.js +65 -57
  10. package/build/lib/web/development/components/Carousel/Carousel.web.js.map +1 -1
  11. package/build/lib/web/development/utils/useCallbackRef.js +31 -0
  12. package/build/lib/web/development/utils/useCallbackRef.js.map +1 -0
  13. package/build/lib/web/development/utils/useControllable.js +13 -5
  14. package/build/lib/web/development/utils/useControllable.js.map +1 -1
  15. package/build/lib/web/production/components/BottomSheet/BottomSheetStack.js +4 -0
  16. package/build/lib/web/production/components/BottomSheet/BottomSheetStack.js.map +1 -1
  17. package/build/lib/web/production/components/Carousel/Carousel.web.js +65 -57
  18. package/build/lib/web/production/components/Carousel/Carousel.web.js.map +1 -1
  19. package/build/lib/web/production/utils/useCallbackRef.js +31 -0
  20. package/build/lib/web/production/utils/useCallbackRef.js.map +1 -0
  21. package/build/lib/web/production/utils/useControllable.js +13 -5
  22. package/build/lib/web/production/utils/useControllable.js.map +1 -1
  23. package/build/types/components/index.d.ts +13 -2
  24. package/build/types/components/index.native.d.ts +12 -1
  25. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"Carousel.web.js","sources":["../../../../../../src/components/Carousel/Carousel.web.tsx"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-unnecessary-type-assertion */\n/* eslint-disable @typescript-eslint/prefer-nullish-coalescing */\n/* eslint-disable consistent-return */\n/* eslint-disable @typescript-eslint/restrict-plus-operands */\n/* eslint-disable @typescript-eslint/explicit-function-return-type */\n/* eslint-disable react/jsx-no-useless-fragment */\nimport type { CSSObject } from 'styled-components';\nimport styled from 'styled-components';\nimport React from 'react';\nimport { Indicators } from './Indicators/Indicators';\nimport { NavigationButton } from './NavigationButton';\nimport type { CarouselProps } from './types';\nimport type { CarouselContextProps } from './CarouselContext';\nimport { CarouselContext } from './CarouselContext';\nimport { getCarouselItemId } from './utils';\nimport { CAROUSEL_AUTOPLAY_INTERVAL, componentIds } from './constants';\nimport getIn from '~utils/lodashButBetter/get';\nimport throttle from '~utils/lodashButBetter/throttle';\nimport debounce from '~utils/lodashButBetter/debounce';\nimport { Box } from '~components/Box';\nimport BaseBox from '~components/Box/BaseBox';\nimport { castWebType, makeMotionTime, useInterval, usePrevious } from '~utils';\nimport { useId } from '~utils/useId';\nimport { makeAccessible } from '~utils/makeAccessible';\nimport { metaAttribute, MetaConstants } from '~utils/metaAttribute';\nimport { useVerifyAllowedChildren } from '~utils/useVerifyAllowedChildren/useVerifyAllowedChildren';\nimport { useTheme } from '~components/BladeProvider';\nimport { useFirstRender } from '~utils/useFirstRender';\nimport { getStyledProps } from '~components/Box/styledProps';\n\ntype ControlsProp = Required<\n Pick<\n CarouselProps,\n 'indicatorVariant' | 'showIndicators' | 'navigationButtonVariant' | 'navigationButtonPosition'\n >\n> & {\n activeIndicator: number;\n totalSlides: number;\n onIndicatorButtonClick: (index: number) => void;\n onNextButtonClick: () => void;\n onPreviousButtonClick: () => void;\n};\n\nconst Controls = ({\n showIndicators,\n navigationButtonPosition,\n activeIndicator,\n totalSlides,\n onIndicatorButtonClick,\n onNextButtonClick,\n onPreviousButtonClick,\n indicatorVariant,\n navigationButtonVariant,\n}: ControlsProp): React.ReactElement => {\n if (navigationButtonPosition === 'bottom') {\n return (\n <Box marginTop=\"spacing.7\" display=\"flex\" alignItems=\"center\" gap=\"spacing.4\">\n <NavigationButton\n type=\"previous\"\n variant={navigationButtonVariant}\n onClick={onPreviousButtonClick}\n />\n {showIndicators ? (\n <Indicators\n onClick={onIndicatorButtonClick}\n activeIndex={activeIndicator}\n totalItems={totalSlides}\n variant={indicatorVariant}\n />\n ) : null}\n <NavigationButton\n onClick={onNextButtonClick}\n type=\"next\"\n variant={navigationButtonVariant}\n />\n </Box>\n );\n }\n\n if (showIndicators && navigationButtonPosition === 'side') {\n return (\n <Box marginTop=\"spacing.7\">\n <Indicators\n onClick={onIndicatorButtonClick}\n activeIndex={activeIndicator}\n totalItems={totalSlides}\n variant={indicatorVariant}\n />\n </Box>\n );\n }\n\n return <></>;\n};\n\nconst CarouselContainer = styled(BaseBox)<{\n showOverlay?: boolean;\n scrollOverlayColor: CarouselProps['scrollOverlayColor'];\n isScrollAtStart: boolean;\n isScrollAtEnd: boolean;\n}>(({ theme, showOverlay, scrollOverlayColor, isScrollAtStart, isScrollAtEnd }) => {\n const gradientStop1: string = getIn(theme.colors, scrollOverlayColor!);\n const gradientStop2 = 'hsla(0, 0%, 100%, 0)';\n\n const overlayCommonStyle: CSSObject = {\n content: \"''\",\n position: 'absolute',\n top: 0,\n width: '100px',\n height: '100%',\n transitionDuration: castWebType(makeMotionTime(theme.motion.duration.gentle)),\n transitionTimingFunction: castWebType(theme.motion.easing.standard.effective),\n transitionProperty: 'opacity',\n };\n\n return {\n width: '100%',\n height: '100%',\n overflowX: 'scroll',\n display: 'flex',\n flexWrap: 'nowrap',\n scrollSnapType: 'x mandatory',\n scrollSnapPointsY: `repeat(100%)`,\n msOverflowStyle: 'none' /* IE and Edge */,\n scrollbarWidth: 'none' /* Firefox */,\n /* Needed to work on iOS Safari */\n webkitOverflowScrolling: 'touch',\n msScrollSnapType: 'mandatory',\n scrollSnapPointsX: 'repeat(100%)',\n msScrollSnapPointsX: 'repeat(100%)',\n '&::-webkit-scrollbar': {\n display: 'none',\n },\n ...(showOverlay && {\n '&::before': {\n ...overlayCommonStyle,\n background: `linear-gradient(to right, ${gradientStop1}, ${gradientStop2})`,\n left: -1,\n opacity: isScrollAtStart ? 0 : 1,\n pointerEvents: 'none',\n },\n '&::after': {\n ...overlayCommonStyle,\n background: `linear-gradient(to left, ${gradientStop1}, ${gradientStop2})`,\n right: -1,\n opacity: isScrollAtEnd ? 0 : 1,\n pointerEvents: 'none',\n },\n }),\n };\n});\n\ntype CarouselBodyProps = {\n children: React.ReactNode;\n totalSlides: number;\n shouldAddStartEndSpacing?: boolean;\n idPrefix: string;\n scrollOverlayColor: CarouselProps['scrollOverlayColor'];\n isScrollAtStart: boolean;\n isScrollAtEnd: boolean;\n carouselItemAlignment: CarouselProps['carouselItemAlignment'];\n accessibilityLabel?: string;\n startEndMargin: number;\n};\n\nconst CarouselBody = React.forwardRef<HTMLDivElement, CarouselBodyProps>(\n (\n {\n children,\n totalSlides,\n shouldAddStartEndSpacing,\n idPrefix,\n scrollOverlayColor,\n isScrollAtStart,\n isScrollAtEnd,\n carouselItemAlignment,\n accessibilityLabel,\n startEndMargin,\n },\n ref,\n ) => {\n return (\n <CarouselContainer\n tabIndex={0}\n ref={ref}\n showOverlay={Boolean(scrollOverlayColor)}\n scrollOverlayColor={scrollOverlayColor}\n gap={{ base: 'spacing.4', m: 'spacing.5' }}\n isScrollAtStart={isScrollAtStart}\n isScrollAtEnd={isScrollAtEnd}\n alignItems={carouselItemAlignment}\n {...makeAccessible({\n role: 'group',\n roleDescription: 'carousel',\n label: accessibilityLabel,\n })}\n >\n {React.Children.map(children, (child, index) => {\n const shouldHaveStartSpacing = shouldAddStartEndSpacing && index === 0;\n const shouldHaveEndSpacing = shouldAddStartEndSpacing && index === totalSlides - 1;\n const carouselItemNode: React.ReactElement = React.cloneElement(\n child as React.ReactElement,\n {\n index,\n id: `${idPrefix}-carousel-item-${index}`,\n shouldHaveStartSpacing,\n shouldHaveEndSpacing,\n },\n );\n\n // Safari doesn't include the margin in the bounding box calculation\n // Thus have to add an additional box to the end of the carousel to ensure we can scroll past the last item\n // https://stackoverflow.com/questions/75509058/safari-does-not-include-margins-to-the-scroll-width\n if (shouldHaveEndSpacing) {\n return (\n <>\n {carouselItemNode}\n {<BaseBox minWidth={`${startEndMargin}px`} />}\n </>\n );\n }\n return carouselItemNode;\n })}\n </CarouselContainer>\n );\n },\n);\n\n/**\n * A custom hook which syncs an effect with a state\n * While ignoring the first render & only running the effect when the state changes\n */\nfunction useSyncUpdateEffect<T>(\n effect: React.EffectCallback,\n stateToSyncWith: T,\n deps: React.DependencyList,\n) {\n const isFirst = useFirstRender();\n const prevState = usePrevious<T>(stateToSyncWith);\n\n React.useEffect(() => {\n if (!isFirst) {\n // if the state is the same as the previous state\n // we don't want to run the effect\n if (prevState === stateToSyncWith) return;\n return effect();\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [stateToSyncWith, ...deps]);\n}\n\nconst Carousel = ({\n autoPlay,\n visibleItems = 1,\n showIndicators = true,\n navigationButtonPosition = 'bottom',\n children,\n shouldAddStartEndSpacing = false,\n carouselItemWidth,\n scrollOverlayColor,\n accessibilityLabel,\n onChange,\n indicatorVariant = 'gray',\n navigationButtonVariant = 'filled',\n carouselItemAlignment = 'start',\n height,\n ...props\n}: CarouselProps): React.ReactElement => {\n const { platform } = useTheme();\n const [activeSlide, setActiveSlide] = React.useState(0);\n const [activeIndicator, setActiveIndicator] = React.useState(0);\n const [shouldPauseAutoplay, setShouldPauseAutoplay] = React.useState(false);\n const [startEndMargin, setStartEndMargin] = React.useState(0);\n const containerRef = React.useRef<HTMLDivElement>(null);\n const isMobile = platform === 'onMobile';\n const id = useId('carousel');\n\n useVerifyAllowedChildren({\n componentName: 'Carousel',\n allowedComponents: [componentIds.CarouselItem],\n children,\n });\n\n const [isScrollAtStart, setScrollStart] = React.useState(\n // on mobile we do not want to render the overlay\n isMobile ? true : !shouldAddStartEndSpacing,\n );\n const [isScrollAtEnd, setScrollEnd] = React.useState(isMobile);\n\n const isResponsive = visibleItems === 'autofit';\n let _visibleItems = visibleItems as 1 | 2 | 3;\n if (isMobile) {\n _visibleItems = 1;\n navigationButtonPosition = 'bottom';\n }\n if (isResponsive) {\n _visibleItems = 1;\n }\n\n // A special case where we hide the indicators when the carousel is responsive\n // Because indicators become useless since it's not aparent which carousel item is active\n // and how many carousel items are visible at a time\n if (isResponsive && !shouldAddStartEndSpacing && !isMobile) {\n showIndicators = false;\n }\n\n const isNavButtonsOnSide = !isResponsive && navigationButtonPosition === 'side';\n const shouldNavButtonsFloat = isResponsive && navigationButtonPosition === 'side';\n const totalNumberOfSlides = React.Children.count(children);\n const numberOfIndicators = Math.ceil(totalNumberOfSlides / _visibleItems);\n\n // hide next/prev button on reaching start/end when carousel is responsive\n // in non-responsive carousel we always show the next/prev buttons to allow looping\n const shouldShowPrevButton = isResponsive ? activeSlide !== 0 : true;\n const shouldShowNextButton = isResponsive ? activeSlide !== totalNumberOfSlides - 1 : true;\n\n // calculate the start/end margin so that we can\n // deduct that margin when scrolling to a carousel item with goToSlideIndex\n React.useLayoutEffect(() => {\n // Do not calculate if not needed\n if (!isResponsive && !shouldAddStartEndSpacing) return;\n if (!containerRef.current) return;\n\n const carouselItemId = getCarouselItemId(id, 0);\n const carouselItem = containerRef.current.querySelector(carouselItemId);\n if (!carouselItem) return;\n\n const carouselItemLeft = carouselItem.getBoundingClientRect().left ?? 0;\n const carouselContainerLeft = containerRef.current.getBoundingClientRect().left ?? 0;\n\n setStartEndMargin(carouselItemLeft - carouselContainerLeft);\n }, [id, isResponsive, shouldAddStartEndSpacing]);\n\n const goToSlideIndex = (slideIndex: number) => {\n if (!containerRef.current) return;\n\n const carouselItemId = getCarouselItemId(id, slideIndex * _visibleItems);\n const carouselItem = containerRef.current.querySelector(carouselItemId);\n if (!carouselItem) return;\n\n const carouselItemLeft =\n carouselItem.getBoundingClientRect().left -\n containerRef.current.getBoundingClientRect().left ?? 0;\n const left = containerRef.current.scrollLeft + carouselItemLeft;\n\n containerRef.current.scroll({\n left: left - startEndMargin,\n behavior: 'smooth',\n });\n setActiveSlide(slideIndex);\n setActiveIndicator(slideIndex);\n };\n\n const goToNextSlide = () => {\n let slideIndex = activeSlide + 1;\n if (slideIndex >= numberOfIndicators) {\n slideIndex = 0;\n }\n\n // an edge case where if carousel is responsive\n // and shouldHaveStartEndSpacing is set to false\n // there can be a case where numberOfIndicators is set to 10 but\n // visually there is 3 or 4 items, in those cases we want to check if we reached the\n // end of the scroll container if so we wrap around\n if (containerRef.current) {\n const container = containerRef.current;\n const scrollLeft = container.scrollLeft;\n const scrollWidth = container.scrollWidth - container.offsetWidth;\n if (scrollLeft === scrollWidth) {\n slideIndex = 0;\n }\n }\n\n goToSlideIndex(slideIndex);\n };\n\n const goToPreviousSlide = () => {\n let slideIndex = activeSlide - 1;\n if (activeSlide <= 0) {\n slideIndex = numberOfIndicators - 1;\n }\n goToSlideIndex(slideIndex);\n };\n\n // Scroll overlay gradient show/hide based on if scrolled to start or end\n React.useEffect(() => {\n // if shouldAddStartEndSpacing is true, we don't need to hide/show the overlay based on the scroll position\n // because the gap is there so it won't overlap with the card anyway\n if (shouldAddStartEndSpacing) return;\n if (isMobile) return;\n\n const carouselContainer = containerRef.current;\n if (!carouselContainer) return;\n\n const handleScroll = throttle(() => {\n const scrollWidth = carouselContainer?.scrollWidth - carouselContainer.offsetWidth;\n setScrollStart(carouselContainer?.scrollLeft === 0);\n setScrollEnd(carouselContainer?.scrollLeft === scrollWidth);\n }, 500);\n\n carouselContainer.addEventListener('scroll', handleScroll);\n\n return () => {\n carouselContainer?.removeEventListener('scroll', handleScroll);\n };\n }, [isMobile, shouldAddStartEndSpacing]);\n\n // Sync the indicators with scroll\n React.useEffect(() => {\n const carouselContainer = containerRef.current;\n if (!carouselContainer) return;\n\n const handleScroll = debounce(() => {\n // carousel bounding box\n const carouselBB = carouselContainer.getBoundingClientRect();\n // By default we check the far left side of the screen\n let xOffset = 0.1;\n // when the carousel is responsive & has spacing\n // we want to check the center of the screen\n if (isResponsive && shouldAddStartEndSpacing) {\n xOffset = 0.5;\n }\n\n const pointX = carouselBB.left + carouselBB.width * xOffset;\n const pointY = carouselBB.top + carouselBB.height * 0.5;\n const element = document.elementFromPoint(pointX, pointY);\n const carouselItem = element?.closest('[data-slide-index]');\n if (!carouselItem) {\n return;\n }\n\n const slideIndex = Number(carouselItem?.getAttribute('data-slide-index'));\n const goTo = Math.ceil(slideIndex / _visibleItems);\n setActiveIndicator(goTo);\n setActiveSlide(goTo);\n }, 50);\n\n carouselContainer.addEventListener('scroll', handleScroll);\n\n return () => {\n carouselContainer?.removeEventListener('scroll', handleScroll);\n };\n }, [_visibleItems, isMobile, isResponsive, shouldAddStartEndSpacing]);\n\n // auto play\n useInterval(\n () => {\n goToNextSlide();\n },\n {\n delay: CAROUSEL_AUTOPLAY_INTERVAL,\n // only enable if autoplay is true & user's intent isn't to interact with carousel\n enable: autoPlay && !shouldPauseAutoplay,\n },\n );\n\n const carouselContext = React.useMemo<CarouselContextProps>(() => {\n return {\n isResponsive,\n visibleItems: _visibleItems,\n carouselItemWidth,\n carouselContainerRef: containerRef,\n setActiveIndicator,\n carouselId: id,\n totalNumberOfSlides,\n activeSlide,\n startEndMargin,\n shouldAddStartEndSpacing,\n };\n }, [\n id,\n startEndMargin,\n isResponsive,\n _visibleItems,\n carouselItemWidth,\n totalNumberOfSlides,\n activeSlide,\n shouldAddStartEndSpacing,\n ]);\n\n useSyncUpdateEffect(\n () => {\n onChange?.(activeSlide);\n },\n activeSlide,\n [onChange],\n );\n\n return (\n <CarouselContext.Provider value={carouselContext}>\n <BaseBox\n {...metaAttribute({ name: MetaConstants.Carousel })}\n // stop autoplaying when any elements in carousel is in focus\n onFocus={(e: React.FocusEvent) => {\n if (!e.currentTarget.contains(e.relatedTarget)) {\n setShouldPauseAutoplay(true);\n }\n }}\n onBlur={(e: React.FocusEvent) => {\n if (!e.currentTarget.contains(e.relatedTarget)) {\n setShouldPauseAutoplay(false);\n }\n }}\n // stop autplay when user hover overs the carousel\n onMouseEnter={() => {\n setShouldPauseAutoplay(true);\n }}\n onMouseLeave={() => {\n setShouldPauseAutoplay(false);\n }}\n onTouchStart={() => {\n setShouldPauseAutoplay(true);\n }}\n onTouchEnd={() => {\n setShouldPauseAutoplay(false);\n }}\n display=\"flex\"\n alignItems=\"center\"\n flexDirection=\"column\"\n height={height}\n {...getStyledProps(props)}\n >\n <BaseBox\n width=\"100%\"\n position=\"relative\"\n display=\"flex\"\n alignItems=\"center\"\n gap=\"spacing.4\"\n flexDirection=\"row\"\n height=\"100%\"\n >\n {shouldShowPrevButton && shouldNavButtonsFloat ? (\n <BaseBox zIndex={2} position=\"absolute\" left=\"spacing.11\">\n <NavigationButton\n type=\"previous\"\n variant={navigationButtonVariant}\n onClick={goToPreviousSlide}\n />\n </BaseBox>\n ) : null}\n {isNavButtonsOnSide ? (\n <NavigationButton\n type=\"previous\"\n variant={navigationButtonVariant}\n onClick={goToPreviousSlide}\n />\n ) : null}\n <CarouselBody\n idPrefix={id}\n startEndMargin={startEndMargin}\n totalSlides={totalNumberOfSlides}\n shouldAddStartEndSpacing={shouldAddStartEndSpacing}\n scrollOverlayColor={scrollOverlayColor}\n isScrollAtStart={isScrollAtStart}\n isScrollAtEnd={isScrollAtEnd}\n ref={containerRef}\n carouselItemAlignment={carouselItemAlignment}\n accessibilityLabel={accessibilityLabel}\n >\n {children}\n </CarouselBody>\n {shouldShowNextButton && shouldNavButtonsFloat ? (\n <BaseBox zIndex={2} position=\"absolute\" right=\"spacing.11\">\n <NavigationButton\n onClick={goToNextSlide}\n type=\"next\"\n variant={navigationButtonVariant}\n />\n </BaseBox>\n ) : null}\n {isNavButtonsOnSide ? (\n <NavigationButton\n onClick={goToNextSlide}\n type=\"next\"\n variant={navigationButtonVariant}\n />\n ) : null}\n </BaseBox>\n <Controls\n totalSlides={numberOfIndicators}\n activeIndicator={activeIndicator}\n showIndicators={showIndicators}\n navigationButtonPosition={navigationButtonPosition}\n onIndicatorButtonClick={goToSlideIndex}\n onNextButtonClick={goToNextSlide}\n onPreviousButtonClick={goToPreviousSlide}\n indicatorVariant={indicatorVariant}\n navigationButtonVariant={navigationButtonVariant}\n />\n </BaseBox>\n </CarouselContext.Provider>\n );\n};\n\nexport { Carousel };\n"],"names":["Controls","_ref","showIndicators","navigationButtonPosition","activeIndicator","totalSlides","onIndicatorButtonClick","onNextButtonClick","onPreviousButtonClick","indicatorVariant","navigationButtonVariant","_jsxs","Box","marginTop","display","alignItems","gap","children","_jsx","NavigationButton","type","variant","onClick","Indicators","activeIndex","totalItems","_Fragment","CarouselContainer","styled","BaseBox","withConfig","displayName","componentId","_ref2","theme","showOverlay","scrollOverlayColor","isScrollAtStart","isScrollAtEnd","gradientStop1","getIn","colors","gradientStop2","overlayCommonStyle","content","position","top","width","height","transitionDuration","castWebType","makeMotionTime","motion","duration","gentle","transitionTimingFunction","easing","standard","effective","transitionProperty","_objectSpread","overflowX","flexWrap","scrollSnapType","scrollSnapPointsY","msOverflowStyle","scrollbarWidth","webkitOverflowScrolling","msScrollSnapType","scrollSnapPointsX","msScrollSnapPointsX","background","concat","left","opacity","pointerEvents","right","CarouselBody","React","forwardRef","_ref3","ref","shouldAddStartEndSpacing","idPrefix","carouselItemAlignment","accessibilityLabel","startEndMargin","tabIndex","Boolean","base","m","makeAccessible","role","roleDescription","label","Children","map","child","index","shouldHaveStartSpacing","shouldHaveEndSpacing","carouselItemNode","cloneElement","id","minWidth","useSyncUpdateEffect","effect","stateToSyncWith","deps","isFirst","useFirstRender","prevState","usePrevious","useEffect","_toConsumableArray","Carousel","_ref4","autoPlay","_ref4$visibleItems","visibleItems","_ref4$showIndicators","_ref4$navigationButto","_ref4$shouldAddStartE","carouselItemWidth","onChange","_ref4$indicatorVarian","_ref4$navigationButto2","_ref4$carouselItemAli","props","_objectWithoutProperties","_excluded","_useTheme","useTheme","platform","_React$useState","useState","_React$useState2","_slicedToArray","activeSlide","setActiveSlide","_React$useState3","_React$useState4","setActiveIndicator","_React$useState5","_React$useState6","shouldPauseAutoplay","setShouldPauseAutoplay","_React$useState7","_React$useState8","setStartEndMargin","containerRef","useRef","isMobile","useId","useVerifyAllowedChildren","componentName","allowedComponents","componentIds","CarouselItem","_React$useState9","_React$useState10","setScrollStart","_React$useState11","_React$useState12","setScrollEnd","isResponsive","_visibleItems","isNavButtonsOnSide","shouldNavButtonsFloat","totalNumberOfSlides","count","numberOfIndicators","Math","ceil","shouldShowPrevButton","shouldShowNextButton","useLayoutEffect","_carouselItem$getBoun","_containerRef$current","current","carouselItemId","getCarouselItemId","carouselItem","querySelector","carouselItemLeft","getBoundingClientRect","carouselContainerLeft","goToSlideIndex","slideIndex","_ref5","scrollLeft","scroll","behavior","goToNextSlide","container","scrollWidth","offsetWidth","goToPreviousSlide","carouselContainer","handleScroll","throttle","addEventListener","removeEventListener","debounce","carouselBB","xOffset","pointX","pointY","element","document","elementFromPoint","closest","Number","getAttribute","goTo","useInterval","delay","CAROUSEL_AUTOPLAY_INTERVAL","enable","carouselContext","useMemo","carouselContainerRef","carouselId","CarouselContext","Provider","value","metaAttribute","name","MetaConstants","onFocus","e","currentTarget","contains","relatedTarget","onBlur","onMouseEnter","onMouseLeave","onTouchStart","onTouchEnd","flexDirection","getStyledProps","zIndex"],"mappings":"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"}
1
+ {"version":3,"file":"Carousel.web.js","sources":["../../../../../../src/components/Carousel/Carousel.web.tsx"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-unnecessary-type-assertion */\n/* eslint-disable @typescript-eslint/prefer-nullish-coalescing */\n/* eslint-disable consistent-return */\n/* eslint-disable @typescript-eslint/restrict-plus-operands */\n/* eslint-disable @typescript-eslint/explicit-function-return-type */\n/* eslint-disable react/jsx-no-useless-fragment */\nimport type { CSSObject } from 'styled-components';\nimport styled from 'styled-components';\nimport React from 'react';\nimport { Indicators } from './Indicators/Indicators';\nimport { NavigationButton } from './NavigationButton';\nimport type { CarouselProps } from './types';\nimport type { CarouselContextProps } from './CarouselContext';\nimport { CarouselContext } from './CarouselContext';\nimport { getCarouselItemId } from './utils';\nimport { CAROUSEL_AUTOPLAY_INTERVAL, componentIds } from './constants';\nimport getIn from '~utils/lodashButBetter/get';\nimport throttle from '~utils/lodashButBetter/throttle';\nimport debounce from '~utils/lodashButBetter/debounce';\nimport { Box } from '~components/Box';\nimport BaseBox from '~components/Box/BaseBox';\nimport { castWebType, makeMotionTime, useInterval } from '~utils';\nimport { useId } from '~utils/useId';\nimport { makeAccessible } from '~utils/makeAccessible';\nimport { metaAttribute, MetaConstants } from '~utils/metaAttribute';\nimport { useVerifyAllowedChildren } from '~utils/useVerifyAllowedChildren/useVerifyAllowedChildren';\nimport { useTheme } from '~components/BladeProvider';\nimport { getStyledProps } from '~components/Box/styledProps';\nimport { useControllableState } from '~utils/useControllable';\nimport { useIsomorphicLayoutEffect } from '~utils/useIsomorphicLayoutEffect';\nimport { useDidUpdate } from '~utils/useDidUpdate';\n\ntype ControlsProp = Required<\n Pick<\n CarouselProps,\n 'indicatorVariant' | 'showIndicators' | 'navigationButtonVariant' | 'navigationButtonPosition'\n >\n> & {\n activeIndicator: number;\n totalSlides: number;\n onIndicatorButtonClick: (index: number) => void;\n onNextButtonClick: () => void;\n onPreviousButtonClick: () => void;\n};\n\nconst Controls = ({\n showIndicators,\n navigationButtonPosition,\n activeIndicator,\n totalSlides,\n onIndicatorButtonClick,\n onNextButtonClick,\n onPreviousButtonClick,\n indicatorVariant,\n navigationButtonVariant,\n}: ControlsProp): React.ReactElement => {\n if (navigationButtonPosition === 'bottom') {\n return (\n <Box marginTop=\"spacing.7\" display=\"flex\" alignItems=\"center\" gap=\"spacing.4\">\n <NavigationButton\n type=\"previous\"\n variant={navigationButtonVariant}\n onClick={onPreviousButtonClick}\n />\n {showIndicators ? (\n <Indicators\n onClick={onIndicatorButtonClick}\n activeIndex={activeIndicator}\n totalItems={totalSlides}\n variant={indicatorVariant}\n />\n ) : null}\n <NavigationButton\n onClick={onNextButtonClick}\n type=\"next\"\n variant={navigationButtonVariant}\n />\n </Box>\n );\n }\n\n if (showIndicators && navigationButtonPosition === 'side') {\n return (\n <Box marginTop=\"spacing.7\">\n <Indicators\n onClick={onIndicatorButtonClick}\n activeIndex={activeIndicator}\n totalItems={totalSlides}\n variant={indicatorVariant}\n />\n </Box>\n );\n }\n\n return <></>;\n};\n\nconst CarouselContainer = styled(BaseBox)<{\n showOverlay?: boolean;\n scrollOverlayColor: CarouselProps['scrollOverlayColor'];\n isScrollAtStart: boolean;\n isScrollAtEnd: boolean;\n}>(({ theme, showOverlay, scrollOverlayColor, isScrollAtStart, isScrollAtEnd }) => {\n const gradientStop1: string = getIn(theme.colors, scrollOverlayColor!);\n const gradientStop2 = 'hsla(0, 0%, 100%, 0)';\n\n const overlayCommonStyle: CSSObject = {\n content: \"''\",\n position: 'absolute',\n top: 0,\n width: '100px',\n height: '100%',\n transitionDuration: castWebType(makeMotionTime(theme.motion.duration.gentle)),\n transitionTimingFunction: castWebType(theme.motion.easing.standard.effective),\n transitionProperty: 'opacity',\n };\n\n return {\n width: '100%',\n height: '100%',\n overflowX: 'scroll',\n display: 'flex',\n flexWrap: 'nowrap',\n scrollSnapType: 'x mandatory',\n scrollSnapPointsY: `repeat(100%)`,\n msOverflowStyle: 'none' /* IE and Edge */,\n scrollbarWidth: 'none' /* Firefox */,\n /* Needed to work on iOS Safari */\n webkitOverflowScrolling: 'touch',\n msScrollSnapType: 'mandatory',\n scrollSnapPointsX: 'repeat(100%)',\n msScrollSnapPointsX: 'repeat(100%)',\n '&::-webkit-scrollbar': {\n display: 'none',\n },\n ...(showOverlay && {\n '&::before': {\n ...overlayCommonStyle,\n background: `linear-gradient(to right, ${gradientStop1}, ${gradientStop2})`,\n left: -1,\n opacity: isScrollAtStart ? 0 : 1,\n pointerEvents: 'none',\n },\n '&::after': {\n ...overlayCommonStyle,\n background: `linear-gradient(to left, ${gradientStop1}, ${gradientStop2})`,\n right: -1,\n opacity: isScrollAtEnd ? 0 : 1,\n pointerEvents: 'none',\n },\n }),\n };\n});\n\ntype CarouselBodyProps = {\n children: React.ReactNode;\n totalSlides: number;\n shouldAddStartEndSpacing?: boolean;\n idPrefix: string;\n scrollOverlayColor: CarouselProps['scrollOverlayColor'];\n isScrollAtStart: boolean;\n isScrollAtEnd: boolean;\n carouselItemAlignment: CarouselProps['carouselItemAlignment'];\n accessibilityLabel?: string;\n startEndMargin: number;\n};\n\nconst CarouselBody = React.forwardRef<HTMLDivElement, CarouselBodyProps>(\n (\n {\n children,\n totalSlides,\n shouldAddStartEndSpacing,\n idPrefix,\n scrollOverlayColor,\n isScrollAtStart,\n isScrollAtEnd,\n carouselItemAlignment,\n accessibilityLabel,\n startEndMargin,\n },\n ref,\n ) => {\n return (\n <CarouselContainer\n tabIndex={0}\n ref={ref}\n showOverlay={Boolean(scrollOverlayColor)}\n scrollOverlayColor={scrollOverlayColor}\n gap={{ base: 'spacing.4', m: 'spacing.5' }}\n isScrollAtStart={isScrollAtStart}\n isScrollAtEnd={isScrollAtEnd}\n alignItems={carouselItemAlignment}\n {...makeAccessible({\n role: 'group',\n roleDescription: 'carousel',\n label: accessibilityLabel,\n })}\n >\n {React.Children.map(children, (child, index) => {\n const shouldHaveStartSpacing = shouldAddStartEndSpacing && index === 0;\n const shouldHaveEndSpacing = shouldAddStartEndSpacing && index === totalSlides - 1;\n const carouselItemNode: React.ReactElement = React.cloneElement(\n child as React.ReactElement,\n {\n index,\n id: `${idPrefix}-carousel-item-${index}`,\n shouldHaveStartSpacing,\n shouldHaveEndSpacing,\n },\n );\n\n // Safari doesn't include the margin in the bounding box calculation\n // Thus have to add an additional box to the end of the carousel to ensure we can scroll past the last item\n // https://stackoverflow.com/questions/75509058/safari-does-not-include-margins-to-the-scroll-width\n if (shouldHaveEndSpacing) {\n return (\n <>\n {carouselItemNode}\n {<BaseBox minWidth={`${startEndMargin}px`} />}\n </>\n );\n }\n return carouselItemNode;\n })}\n </CarouselContainer>\n );\n },\n);\n\nconst Carousel = ({\n autoPlay,\n visibleItems = 1,\n showIndicators = true,\n navigationButtonPosition = 'bottom',\n children,\n shouldAddStartEndSpacing = false,\n carouselItemWidth,\n scrollOverlayColor,\n accessibilityLabel,\n onChange,\n indicatorVariant = 'gray',\n navigationButtonVariant = 'filled',\n carouselItemAlignment = 'start',\n height,\n defaultActiveSlide,\n activeSlide: activeSlideProp,\n ...props\n}: CarouselProps): React.ReactElement => {\n const { platform } = useTheme();\n const [activeIndicator, setActiveIndicator] = React.useState(0);\n const [activeSlide, setActiveSlide] = useControllableState({\n defaultValue: defaultActiveSlide ?? 0,\n value: activeSlideProp,\n onChange: (value) => {\n onChange?.(value);\n },\n });\n const [shouldPauseAutoplay, setShouldPauseAutoplay] = React.useState(false);\n const [startEndMargin, setStartEndMargin] = React.useState(0);\n const containerRef = React.useRef<HTMLDivElement>(null);\n const isMobile = platform === 'onMobile';\n const id = useId();\n const carouselId = `carousel-${id}`;\n\n useVerifyAllowedChildren({\n componentName: 'Carousel',\n allowedComponents: [componentIds.CarouselItem],\n children,\n });\n\n const [isScrollAtStart, setScrollStart] = React.useState(\n // on mobile we do not want to render the overlay\n isMobile ? true : !shouldAddStartEndSpacing,\n );\n const [isScrollAtEnd, setScrollEnd] = React.useState(isMobile);\n\n const isResponsive = visibleItems === 'autofit';\n let _visibleItems = visibleItems as 1 | 2 | 3;\n if (isMobile) {\n _visibleItems = 1;\n navigationButtonPosition = 'bottom';\n }\n if (isResponsive) {\n _visibleItems = 1;\n }\n\n // A special case where we hide the indicators when the carousel is responsive\n // Because indicators become useless since it's not aparent which carousel item is active\n // and how many carousel items are visible at a time\n if (isResponsive && !shouldAddStartEndSpacing && !isMobile) {\n showIndicators = false;\n }\n\n const isNavButtonsOnSide = !isResponsive && navigationButtonPosition === 'side';\n const shouldNavButtonsFloat = isResponsive && navigationButtonPosition === 'side';\n const totalNumberOfSlides = React.Children.count(children);\n const numberOfIndicators = Math.ceil(totalNumberOfSlides / _visibleItems);\n\n // hide next/prev button on reaching start/end when carousel is responsive\n // in non-responsive carousel we always show the next/prev buttons to allow looping\n const shouldShowPrevButton = isResponsive ? activeSlide !== 0 : true;\n const shouldShowNextButton = isResponsive ? activeSlide !== totalNumberOfSlides - 1 : true;\n\n // calculate the start/end margin so that we can\n // deduct that margin when scrolling to a carousel item with goToSlideIndex\n useIsomorphicLayoutEffect(() => {\n // Do not calculate if not needed\n if (!isResponsive && !shouldAddStartEndSpacing) return;\n if (!containerRef.current) return;\n\n const carouselItemId = getCarouselItemId(carouselId, 0);\n const carouselItem = containerRef.current.querySelector(carouselItemId);\n if (!carouselItem) return;\n\n const carouselItemLeft = carouselItem.getBoundingClientRect().left ?? 0;\n const carouselContainerLeft = containerRef.current.getBoundingClientRect().left ?? 0;\n\n setStartEndMargin(carouselItemLeft - carouselContainerLeft);\n }, [carouselId, isResponsive, shouldAddStartEndSpacing]);\n\n const scrollToSlide = (slideIndex: number, shouldAnimate = true) => {\n if (!containerRef.current) return;\n\n const carouselItemId = getCarouselItemId(carouselId, slideIndex * _visibleItems);\n const carouselItem = containerRef.current.querySelector(carouselItemId);\n if (!carouselItem) return;\n\n const carouselItemLeft =\n carouselItem.getBoundingClientRect().left -\n containerRef.current.getBoundingClientRect().left ?? 0;\n const left = containerRef.current.scrollLeft + carouselItemLeft;\n\n containerRef.current.scroll({\n left: left - startEndMargin,\n behavior: shouldAnimate ? 'smooth' : 'auto',\n });\n };\n\n const goToSlideIndex = (slideIndex: number) => {\n setActiveSlide(() => slideIndex);\n setActiveIndicator(slideIndex);\n };\n\n const goToNextSlide = () => {\n let slideIndex = activeSlide + 1;\n if (slideIndex >= numberOfIndicators) {\n slideIndex = 0;\n }\n\n // an edge case where if carousel is responsive\n // and shouldHaveStartEndSpacing is set to false\n // there can be a case where numberOfIndicators is set to 10 but\n // visually there is 3 or 4 items, in those cases we want to check if we reached the\n // end of the scroll container if so we wrap around\n if (containerRef.current) {\n const container = containerRef.current;\n const scrollLeft = container.scrollLeft;\n const scrollWidth = container.scrollWidth - container.offsetWidth;\n if (scrollLeft === scrollWidth) {\n slideIndex = 0;\n }\n }\n\n goToSlideIndex(slideIndex);\n };\n\n const goToPreviousSlide = () => {\n let slideIndex = activeSlide - 1;\n if (activeSlide <= 0) {\n slideIndex = numberOfIndicators - 1;\n }\n goToSlideIndex(slideIndex);\n };\n\n // Scroll overlay gradient show/hide based on if scrolled to start or end\n React.useEffect(() => {\n // if shouldAddStartEndSpacing is true, we don't need to hide/show the overlay based on the scroll position\n // because the gap is there so it won't overlap with the card anyway\n if (shouldAddStartEndSpacing) return;\n if (isMobile) return;\n\n const carouselContainer = containerRef.current;\n if (!carouselContainer) return;\n\n const handleScroll = throttle(() => {\n const scrollWidth = carouselContainer?.scrollWidth - carouselContainer.offsetWidth;\n setScrollStart(carouselContainer?.scrollLeft === 0);\n setScrollEnd(carouselContainer?.scrollLeft === scrollWidth);\n }, 500);\n\n carouselContainer.addEventListener('scroll', handleScroll);\n\n return () => {\n carouselContainer?.removeEventListener('scroll', handleScroll);\n };\n }, [isMobile, shouldAddStartEndSpacing]);\n\n // Sync the indicators with scroll\n React.useEffect(() => {\n const carouselContainer = containerRef.current;\n if (!carouselContainer) return;\n\n const handleScroll = debounce(() => {\n // carousel bounding box\n const carouselBB = carouselContainer.getBoundingClientRect();\n // By default we check the far left side of the screen\n let xOffset = 0.1;\n // when the carousel is responsive & has spacing\n // we want to check the center of the screen\n if (isResponsive && shouldAddStartEndSpacing) {\n xOffset = 0.5;\n }\n\n const pointX = carouselBB.left + carouselBB.width * xOffset;\n const pointY = carouselBB.top + carouselBB.height * 0.5;\n const element = document.elementFromPoint(pointX, pointY);\n const carouselItem = element?.closest('[data-slide-index]');\n if (!carouselItem) {\n return;\n }\n\n const slideIndex = Number(carouselItem?.getAttribute('data-slide-index'));\n const goTo = Math.ceil(slideIndex / _visibleItems);\n setActiveSlide(() => goTo);\n setActiveIndicator(goTo);\n }, 50);\n\n carouselContainer.addEventListener('scroll', handleScroll);\n\n return () => {\n carouselContainer?.removeEventListener('scroll', handleScroll);\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [_visibleItems, isMobile, isResponsive, shouldAddStartEndSpacing]);\n\n // auto play\n useInterval(\n () => {\n goToNextSlide();\n },\n {\n delay: CAROUSEL_AUTOPLAY_INTERVAL,\n // only enable if autoplay is true & user's intent isn't to interact with carousel\n enable: autoPlay && !shouldPauseAutoplay,\n },\n );\n\n // set initial active slide on mount\n useIsomorphicLayoutEffect(() => {\n if (!id) return;\n goToSlideIndex(activeSlide);\n scrollToSlide(activeSlide, false);\n }, [id]);\n\n // Scroll the carousel to the active slide\n useDidUpdate(() => {\n scrollToSlide(activeSlide);\n }, [activeSlide]);\n\n const carouselContext = React.useMemo<CarouselContextProps>(() => {\n return {\n isResponsive,\n visibleItems: _visibleItems,\n carouselItemWidth,\n carouselContainerRef: containerRef,\n setActiveIndicator,\n carouselId,\n totalNumberOfSlides,\n activeSlide,\n startEndMargin,\n shouldAddStartEndSpacing,\n };\n }, [\n carouselId,\n startEndMargin,\n isResponsive,\n _visibleItems,\n carouselItemWidth,\n totalNumberOfSlides,\n activeSlide,\n shouldAddStartEndSpacing,\n ]);\n\n return (\n <CarouselContext.Provider value={carouselContext}>\n <BaseBox\n {...metaAttribute({ name: MetaConstants.Carousel })}\n // stop autoplaying when any elements in carousel is in focus\n onFocus={(e: React.FocusEvent) => {\n if (!e.currentTarget.contains(e.relatedTarget)) {\n setShouldPauseAutoplay(true);\n }\n }}\n onBlur={(e: React.FocusEvent) => {\n if (!e.currentTarget.contains(e.relatedTarget)) {\n setShouldPauseAutoplay(false);\n }\n }}\n // stop autplay when user hover overs the carousel\n onMouseEnter={() => {\n setShouldPauseAutoplay(true);\n }}\n onMouseLeave={() => {\n setShouldPauseAutoplay(false);\n }}\n onTouchStart={() => {\n setShouldPauseAutoplay(true);\n }}\n onTouchEnd={() => {\n setShouldPauseAutoplay(false);\n }}\n display=\"flex\"\n alignItems=\"center\"\n flexDirection=\"column\"\n height={height}\n {...getStyledProps(props)}\n >\n <BaseBox\n width=\"100%\"\n position=\"relative\"\n display=\"flex\"\n alignItems=\"center\"\n gap=\"spacing.4\"\n flexDirection=\"row\"\n height=\"100%\"\n >\n {shouldShowPrevButton && shouldNavButtonsFloat ? (\n <BaseBox zIndex={2} position=\"absolute\" left=\"spacing.11\">\n <NavigationButton\n type=\"previous\"\n variant={navigationButtonVariant}\n onClick={goToPreviousSlide}\n />\n </BaseBox>\n ) : null}\n {isNavButtonsOnSide ? (\n <NavigationButton\n type=\"previous\"\n variant={navigationButtonVariant}\n onClick={goToPreviousSlide}\n />\n ) : null}\n <CarouselBody\n idPrefix={carouselId}\n startEndMargin={startEndMargin}\n totalSlides={totalNumberOfSlides}\n shouldAddStartEndSpacing={shouldAddStartEndSpacing}\n scrollOverlayColor={scrollOverlayColor}\n isScrollAtStart={isScrollAtStart}\n isScrollAtEnd={isScrollAtEnd}\n ref={containerRef}\n carouselItemAlignment={carouselItemAlignment}\n accessibilityLabel={accessibilityLabel}\n >\n {children}\n </CarouselBody>\n {shouldShowNextButton && shouldNavButtonsFloat ? (\n <BaseBox zIndex={2} position=\"absolute\" right=\"spacing.11\">\n <NavigationButton\n onClick={goToNextSlide}\n type=\"next\"\n variant={navigationButtonVariant}\n />\n </BaseBox>\n ) : null}\n {isNavButtonsOnSide ? (\n <NavigationButton\n onClick={goToNextSlide}\n type=\"next\"\n variant={navigationButtonVariant}\n />\n ) : null}\n </BaseBox>\n <Controls\n totalSlides={numberOfIndicators}\n activeIndicator={activeIndicator}\n showIndicators={showIndicators}\n navigationButtonPosition={navigationButtonPosition}\n onIndicatorButtonClick={goToSlideIndex}\n onNextButtonClick={goToNextSlide}\n onPreviousButtonClick={goToPreviousSlide}\n indicatorVariant={indicatorVariant}\n navigationButtonVariant={navigationButtonVariant}\n />\n </BaseBox>\n </CarouselContext.Provider>\n );\n};\n\nexport { Carousel };\n"],"names":["Controls","_ref","showIndicators","navigationButtonPosition","activeIndicator","totalSlides","onIndicatorButtonClick","onNextButtonClick","onPreviousButtonClick","indicatorVariant","navigationButtonVariant","_jsxs","Box","marginTop","display","alignItems","gap","children","_jsx","NavigationButton","type","variant","onClick","Indicators","activeIndex","totalItems","_Fragment","CarouselContainer","styled","BaseBox","withConfig","displayName","componentId","_ref2","theme","showOverlay","scrollOverlayColor","isScrollAtStart","isScrollAtEnd","gradientStop1","getIn","colors","gradientStop2","overlayCommonStyle","content","position","top","width","height","transitionDuration","castWebType","makeMotionTime","motion","duration","gentle","transitionTimingFunction","easing","standard","effective","transitionProperty","_objectSpread","overflowX","flexWrap","scrollSnapType","scrollSnapPointsY","msOverflowStyle","scrollbarWidth","webkitOverflowScrolling","msScrollSnapType","scrollSnapPointsX","msScrollSnapPointsX","background","concat","left","opacity","pointerEvents","right","CarouselBody","React","forwardRef","_ref3","ref","shouldAddStartEndSpacing","idPrefix","carouselItemAlignment","accessibilityLabel","startEndMargin","tabIndex","Boolean","base","m","makeAccessible","role","roleDescription","label","Children","map","child","index","shouldHaveStartSpacing","shouldHaveEndSpacing","carouselItemNode","cloneElement","id","minWidth","Carousel","_ref4","autoPlay","_ref4$visibleItems","visibleItems","_ref4$showIndicators","_ref4$navigationButto","_ref4$shouldAddStartE","carouselItemWidth","onChange","_ref4$indicatorVarian","_ref4$navigationButto2","_ref4$carouselItemAli","defaultActiveSlide","activeSlideProp","activeSlide","props","_objectWithoutProperties","_excluded","_useTheme","useTheme","platform","_React$useState","useState","_React$useState2","_slicedToArray","setActiveIndicator","_useControllableState","useControllableState","defaultValue","value","_useControllableState2","setActiveSlide","_React$useState3","_React$useState4","shouldPauseAutoplay","setShouldPauseAutoplay","_React$useState5","_React$useState6","setStartEndMargin","containerRef","useRef","isMobile","useId","carouselId","useVerifyAllowedChildren","componentName","allowedComponents","componentIds","CarouselItem","_React$useState7","_React$useState8","setScrollStart","_React$useState9","_React$useState10","setScrollEnd","isResponsive","_visibleItems","isNavButtonsOnSide","shouldNavButtonsFloat","totalNumberOfSlides","count","numberOfIndicators","Math","ceil","shouldShowPrevButton","shouldShowNextButton","useIsomorphicLayoutEffect","_carouselItem$getBoun","_containerRef$current","current","carouselItemId","getCarouselItemId","carouselItem","querySelector","carouselItemLeft","getBoundingClientRect","carouselContainerLeft","scrollToSlide","slideIndex","_ref5","shouldAnimate","arguments","length","undefined","scrollLeft","scroll","behavior","goToSlideIndex","goToNextSlide","container","scrollWidth","offsetWidth","goToPreviousSlide","useEffect","carouselContainer","handleScroll","throttle","addEventListener","removeEventListener","debounce","carouselBB","xOffset","pointX","pointY","element","document","elementFromPoint","closest","Number","getAttribute","goTo","useInterval","delay","CAROUSEL_AUTOPLAY_INTERVAL","enable","useDidUpdate","carouselContext","useMemo","carouselContainerRef","CarouselContext","Provider","metaAttribute","name","MetaConstants","onFocus","e","currentTarget","contains","relatedTarget","onBlur","onMouseEnter","onMouseLeave","onTouchStart","onTouchEnd","flexDirection","getStyledProps","zIndex"],"mappings":"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"}
@@ -0,0 +1,31 @@
1
+ import { useRef, useInsertionEffect, useCallback } from 'react';
2
+
3
+ /* eslint-disable @typescript-eslint/explicit-function-return-type */
4
+
5
+ /**
6
+ * This hook is user-land implementation of the experimental `useEffectEvent` hook.
7
+ * React docs: https://react.dev/learn/separating-events-from-effects#declaring-an-effect-event
8
+ *
9
+ * This hook is useful when you want to use a callback function inside a useEffect while keeping it "fresh" but you don't want to add it to the dependency array.
10
+ */
11
+ function useCallbackRef(callback) {
12
+ var deps = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
13
+ var callbackRef = useRef(function () {
14
+ throw new Error('Cannot call an event handler while rendering.');
15
+ });
16
+ useInsertionEffect(function () {
17
+ callbackRef.current = callback;
18
+ });
19
+
20
+ // eslint-disable-next-line react-hooks/exhaustive-deps
21
+ return useCallback(function () {
22
+ var _callbackRef$current;
23
+ for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
24
+ args[_key] = arguments[_key];
25
+ }
26
+ return (_callbackRef$current = callbackRef.current) === null || _callbackRef$current === void 0 ? void 0 : _callbackRef$current.call.apply(_callbackRef$current, [callbackRef].concat(args));
27
+ }, deps);
28
+ }
29
+
30
+ export { useCallbackRef };
31
+ //# sourceMappingURL=useCallbackRef.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useCallbackRef.js","sources":["../../../../../src/utils/useCallbackRef.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/explicit-function-return-type */\nimport { useCallback, useInsertionEffect, useRef } from 'react';\n\n/**\n * This hook is user-land implementation of the experimental `useEffectEvent` hook.\n * React docs: https://react.dev/learn/separating-events-from-effects#declaring-an-effect-event\n *\n * This hook is useful when you want to use a callback function inside a useEffect while keeping it \"fresh\" but you don't want to add it to the dependency array.\n */\nfunction useCallbackRef<Args extends unknown[], Return>(\n callback: ((...args: Args) => Return) | undefined,\n deps: React.DependencyList = [],\n) {\n const callbackRef = useRef<typeof callback>(() => {\n throw new Error('Cannot call an event handler while rendering.');\n });\n\n useInsertionEffect(() => {\n callbackRef.current = callback;\n });\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n return useCallback((...args: Args) => callbackRef.current?.(...args), deps);\n}\n\nexport { useCallbackRef };\n"],"names":["useCallbackRef","callback","deps","arguments","length","undefined","callbackRef","useRef","Error","useInsertionEffect","current","useCallback","_callbackRef$current","_len","args","Array","_key","call","apply","concat"],"mappings":";;AAAA;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA,SAASA,cAAcA,CACrBC,QAAiD,EAEjD;AAAA,EAAA,IADAC,IAA0B,GAAAC,SAAA,CAAAC,MAAA,GAAA,CAAA,IAAAD,SAAA,CAAA,CAAA,CAAA,KAAAE,SAAA,GAAAF,SAAA,CAAA,CAAA,CAAA,GAAG,EAAE,CAAA;AAE/B,EAAA,IAAMG,WAAW,GAAGC,MAAM,CAAkB,YAAM;AAChD,IAAA,MAAM,IAAIC,KAAK,CAAC,+CAA+C,CAAC,CAAA;AAClE,GAAC,CAAC,CAAA;AAEFC,EAAAA,kBAAkB,CAAC,YAAM;IACvBH,WAAW,CAACI,OAAO,GAAGT,QAAQ,CAAA;AAChC,GAAC,CAAC,CAAA;;AAEF;AACA,EAAA,OAAOU,WAAW,CAAC,YAAA;AAAA,IAAA,IAAAC,oBAAA,CAAA;AAAA,IAAA,KAAA,IAAAC,IAAA,GAAAV,SAAA,CAAAC,MAAA,EAAIU,IAAI,GAAAC,IAAAA,KAAA,CAAAF,IAAA,GAAAG,IAAA,GAAA,CAAA,EAAAA,IAAA,GAAAH,IAAA,EAAAG,IAAA,EAAA,EAAA;AAAJF,MAAAA,IAAI,CAAAE,IAAA,CAAAb,GAAAA,SAAA,CAAAa,IAAA,CAAA,CAAA;AAAA,KAAA;IAAA,OAAAJ,CAAAA,oBAAA,GAAWN,WAAW,CAACI,OAAO,MAAAE,IAAAA,IAAAA,oBAAA,uBAAnBA,oBAAA,CAAAK,IAAA,CAAAC,KAAA,CAAAN,oBAAA,EAAA,CAAAN,WAAW,CAAAa,CAAAA,MAAA,CAAcL,IAAI,CAAC,CAAA,CAAA;AAAA,GAAA,EAAEZ,IAAI,CAAC,CAAA;AAC7E;;;;"}
@@ -1,5 +1,6 @@
1
1
  import _slicedToArray from '@babel/runtime/helpers/slicedToArray';
2
2
  import * as React from 'react';
3
+ import { useCallbackRef } from './useCallbackRef.js';
3
4
 
4
5
  /**
5
6
  * React hook for using controlling component state.
@@ -14,7 +15,13 @@ import * as React from 'react';
14
15
  function useControllableState(props) {
15
16
  var valueProp = props.value,
16
17
  defaultValue = props.defaultValue,
17
- onChange = props.onChange;
18
+ onChange = props.onChange,
19
+ _props$shouldUpdate = props.shouldUpdate,
20
+ shouldUpdate = _props$shouldUpdate === void 0 ? function (prev, next) {
21
+ return prev !== next;
22
+ } : _props$shouldUpdate;
23
+ var onChangeProp = useCallbackRef(onChange);
24
+ var shouldUpdateProp = useCallbackRef(shouldUpdate);
18
25
  var _React$useState = React.useState(defaultValue),
19
26
  _React$useState2 = _slicedToArray(_React$useState, 2),
20
27
  valueState = _React$useState2[0],
@@ -22,14 +29,15 @@ function useControllableState(props) {
22
29
  var _React$useRef = React.useRef(valueProp !== undefined),
23
30
  isControlled = _React$useRef.current;
24
31
  var value = isControlled && typeof valueProp !== 'undefined' ? valueProp : valueState;
25
- var updateValue = React.useCallback(function (next) {
32
+ var updateValue = useCallbackRef(function (next) {
26
33
  var skipUpdate = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
27
34
  var nextValue = next(value);
28
35
  if (!isControlled) setValue(nextValue);
29
- // We don't want to call onChange if skipUpdate is true
36
+ // We don't want to call onChange if skipUpdate is true or if the value is not changed
37
+ if (!shouldUpdateProp(value, nextValue)) return;
30
38
  if (skipUpdate) return;
31
- onChange === null || onChange === void 0 ? void 0 : onChange(nextValue);
32
- }, [onChange, value]);
39
+ onChangeProp === null || onChangeProp === void 0 ? void 0 : onChangeProp(nextValue);
40
+ }, [isControlled, onChangeProp, value, shouldUpdateProp]);
33
41
  return [value, updateValue];
34
42
  }
35
43
 
@@ -1 +1 @@
1
- {"version":3,"file":"useControllable.js","sources":["../../../../../src/utils/useControllable.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/explicit-module-boundary-types */\n/* eslint-disable @typescript-eslint/explicit-function-return-type */\n/* eslint-disable react-hooks/exhaustive-deps */\nimport * as React from 'react';\n\ntype ControllableStateSetter<T> = (\n /**\n * Sets the state to the given value\n */\n next: (prevState: T) => T,\n /**\n * If `true`, `onChange` won't be called\n */\n skipUpdate?: boolean,\n) => void;\n\ntype UseControllableStateProps<T> = {\n /**\n * The value to used in controlled mode\n */\n value?: T;\n /**\n * The initial value to be used, in uncontrolled mode\n */\n defaultValue?: T | (() => T);\n /**\n * The callback fired when the value changes\n */\n onChange?: (value: T) => void;\n};\n\n/**\n * React hook for using controlling component state.\n *\n * It automatically handles controlled and uncontrolled state,\n * while internally giving us the state value so that we can react to the changes.\n *\n * @example\n * In checkbox we want to internally track the checked state to be able to render the correct Icon\n * but also want to provide controlled and uncontrolled behavior to user\n */\nexport function useControllableState<T>(props: UseControllableStateProps<T>) {\n const { value: valueProp, defaultValue, onChange } = props;\n\n const [valueState, setValue] = React.useState(defaultValue as T);\n const { current: isControlled } = React.useRef(valueProp !== undefined);\n const value = isControlled && typeof valueProp !== 'undefined' ? valueProp : valueState;\n\n const updateValue: ControllableStateSetter<T> = React.useCallback(\n (next, skipUpdate = false) => {\n const nextValue = next(value);\n if (!isControlled) setValue(nextValue);\n // We don't want to call onChange if skipUpdate is true\n if (skipUpdate) return;\n onChange?.(nextValue);\n },\n [onChange, value],\n );\n\n return [value, updateValue] as [T, ControllableStateSetter<T>];\n}\n\nexport type { ControllableStateSetter };\n"],"names":["useControllableState","props","valueProp","value","defaultValue","onChange","_React$useState","React","useState","_React$useState2","_slicedToArray","valueState","setValue","_React$useRef","useRef","undefined","isControlled","current","updateValue","useCallback","next","skipUpdate","arguments","length","nextValue"],"mappings":";;;AA+BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASA,oBAAoBA,CAAIC,KAAmC,EAAE;AAC3E,EAAA,IAAeC,SAAS,GAA6BD,KAAK,CAAlDE,KAAK;IAAaC,YAAY,GAAeH,KAAK,CAAhCG,YAAY;IAAEC,QAAQ,GAAKJ,KAAK,CAAlBI,QAAQ,CAAA;AAEhD,EAAA,IAAAC,eAAA,GAA+BC,KAAK,CAACC,QAAQ,CAACJ,YAAiB,CAAC;IAAAK,gBAAA,GAAAC,cAAA,CAAAJ,eAAA,EAAA,CAAA,CAAA;AAAzDK,IAAAA,UAAU,GAAAF,gBAAA,CAAA,CAAA,CAAA;AAAEG,IAAAA,QAAQ,GAAAH,gBAAA,CAAA,CAAA,CAAA,CAAA;EAC3B,IAAAI,aAAA,GAAkCN,KAAK,CAACO,MAAM,CAACZ,SAAS,KAAKa,SAAS,CAAC;IAAtDC,YAAY,GAAAH,aAAA,CAArBI,OAAO,CAAA;EACf,IAAMd,KAAK,GAAGa,YAAY,IAAI,OAAOd,SAAS,KAAK,WAAW,GAAGA,SAAS,GAAGS,UAAU,CAAA;EAEvF,IAAMO,WAAuC,GAAGX,KAAK,CAACY,WAAW,CAC/D,UAACC,IAAI,EAAyB;AAAA,IAAA,IAAvBC,UAAU,GAAAC,SAAA,CAAAC,MAAA,GAAA,CAAA,IAAAD,SAAA,CAAA,CAAA,CAAA,KAAAP,SAAA,GAAAO,SAAA,CAAA,CAAA,CAAA,GAAG,KAAK,CAAA;AACvB,IAAA,IAAME,SAAS,GAAGJ,IAAI,CAACjB,KAAK,CAAC,CAAA;AAC7B,IAAA,IAAI,CAACa,YAAY,EAAEJ,QAAQ,CAACY,SAAS,CAAC,CAAA;AACtC;AACA,IAAA,IAAIH,UAAU,EAAE,OAAA;AAChBhB,IAAAA,QAAQ,aAARA,QAAQ,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAARA,QAAQ,CAAGmB,SAAS,CAAC,CAAA;AACvB,GAAC,EACD,CAACnB,QAAQ,EAAEF,KAAK,CAClB,CAAC,CAAA;AAED,EAAA,OAAO,CAACA,KAAK,EAAEe,WAAW,CAAC,CAAA;AAC7B;;;;"}
1
+ {"version":3,"file":"useControllable.js","sources":["../../../../../src/utils/useControllable.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/explicit-module-boundary-types */\n/* eslint-disable @typescript-eslint/explicit-function-return-type */\n/* eslint-disable react-hooks/exhaustive-deps */\nimport * as React from 'react';\nimport { useCallbackRef } from './useCallbackRef';\n\ntype ControllableStateSetter<T> = (\n /**\n * Sets the state to the given value\n */\n next: (prevState: T) => T,\n /**\n * If `true`, `onChange` won't be called\n */\n skipUpdate?: boolean,\n) => void;\n\ntype UseControllableStateProps<T> = {\n /**\n * The value to used in controlled mode\n */\n value?: T;\n /**\n * The initial value to be used, in uncontrolled mode\n */\n defaultValue?: T | (() => T);\n /**\n * The callback fired when the value changes\n */\n onChange?: (value: T) => void;\n shouldUpdate?: (prev: T, next: T) => boolean;\n};\n\n/**\n * React hook for using controlling component state.\n *\n * It automatically handles controlled and uncontrolled state,\n * while internally giving us the state value so that we can react to the changes.\n *\n * @example\n * In checkbox we want to internally track the checked state to be able to render the correct Icon\n * but also want to provide controlled and uncontrolled behavior to user\n */\nfunction useControllableState<T>(props: UseControllableStateProps<T>) {\n const {\n value: valueProp,\n defaultValue,\n onChange,\n shouldUpdate = (prev, next) => prev !== next,\n } = props;\n\n const onChangeProp = useCallbackRef(onChange);\n const shouldUpdateProp = useCallbackRef(shouldUpdate);\n\n const [valueState, setValue] = React.useState(defaultValue as T);\n const { current: isControlled } = React.useRef(valueProp !== undefined);\n const value = isControlled && typeof valueProp !== 'undefined' ? valueProp : valueState;\n\n const updateValue: ControllableStateSetter<T> = useCallbackRef(\n (next, skipUpdate = false) => {\n const nextValue = next(value);\n if (!isControlled) setValue(nextValue);\n // We don't want to call onChange if skipUpdate is true or if the value is not changed\n if (!shouldUpdateProp(value, nextValue)) return;\n if (skipUpdate) return;\n onChangeProp?.(nextValue);\n },\n [isControlled, onChangeProp, value, shouldUpdateProp],\n );\n\n return [value, updateValue] as [T, ControllableStateSetter<T>];\n}\n\nexport { useControllableState };\nexport type { ControllableStateSetter };\n"],"names":["useControllableState","props","valueProp","value","defaultValue","onChange","_props$shouldUpdate","shouldUpdate","prev","next","onChangeProp","useCallbackRef","shouldUpdateProp","_React$useState","React","useState","_React$useState2","_slicedToArray","valueState","setValue","_React$useRef","useRef","undefined","isControlled","current","updateValue","skipUpdate","arguments","length","nextValue"],"mappings":";;;;AAiCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASA,oBAAoBA,CAAIC,KAAmC,EAAE;AACpE,EAAA,IACSC,SAAS,GAIdD,KAAK,CAJPE,KAAK;IACLC,YAAY,GAGVH,KAAK,CAHPG,YAAY;IACZC,QAAQ,GAENJ,KAAK,CAFPI,QAAQ;IAAAC,mBAAA,GAENL,KAAK,CADPM,YAAY;AAAZA,IAAAA,YAAY,GAAAD,mBAAA,KAAA,KAAA,CAAA,GAAG,UAACE,IAAI,EAAEC,IAAI,EAAA;MAAA,OAAKD,IAAI,KAAKC,IAAI,CAAA;AAAA,KAAA,GAAAH,mBAAA,CAAA;AAG9C,EAAA,IAAMI,YAAY,GAAGC,cAAc,CAACN,QAAQ,CAAC,CAAA;AAC7C,EAAA,IAAMO,gBAAgB,GAAGD,cAAc,CAACJ,YAAY,CAAC,CAAA;AAErD,EAAA,IAAAM,eAAA,GAA+BC,KAAK,CAACC,QAAQ,CAACX,YAAiB,CAAC;IAAAY,gBAAA,GAAAC,cAAA,CAAAJ,eAAA,EAAA,CAAA,CAAA;AAAzDK,IAAAA,UAAU,GAAAF,gBAAA,CAAA,CAAA,CAAA;AAAEG,IAAAA,QAAQ,GAAAH,gBAAA,CAAA,CAAA,CAAA,CAAA;EAC3B,IAAAI,aAAA,GAAkCN,KAAK,CAACO,MAAM,CAACnB,SAAS,KAAKoB,SAAS,CAAC;IAAtDC,YAAY,GAAAH,aAAA,CAArBI,OAAO,CAAA;EACf,IAAMrB,KAAK,GAAGoB,YAAY,IAAI,OAAOrB,SAAS,KAAK,WAAW,GAAGA,SAAS,GAAGgB,UAAU,CAAA;AAEvF,EAAA,IAAMO,WAAuC,GAAGd,cAAc,CAC5D,UAACF,IAAI,EAAyB;AAAA,IAAA,IAAvBiB,UAAU,GAAAC,SAAA,CAAAC,MAAA,GAAA,CAAA,IAAAD,SAAA,CAAA,CAAA,CAAA,KAAAL,SAAA,GAAAK,SAAA,CAAA,CAAA,CAAA,GAAG,KAAK,CAAA;AACvB,IAAA,IAAME,SAAS,GAAGpB,IAAI,CAACN,KAAK,CAAC,CAAA;AAC7B,IAAA,IAAI,CAACoB,YAAY,EAAEJ,QAAQ,CAACU,SAAS,CAAC,CAAA;AACtC;AACA,IAAA,IAAI,CAACjB,gBAAgB,CAACT,KAAK,EAAE0B,SAAS,CAAC,EAAE,OAAA;AACzC,IAAA,IAAIH,UAAU,EAAE,OAAA;AAChBhB,IAAAA,YAAY,aAAZA,YAAY,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAZA,YAAY,CAAGmB,SAAS,CAAC,CAAA;GAC1B,EACD,CAACN,YAAY,EAAEb,YAAY,EAAEP,KAAK,EAAES,gBAAgB,CACtD,CAAC,CAAA;AAED,EAAA,OAAO,CAACT,KAAK,EAAEsB,WAAW,CAAC,CAAA;AAC7B;;;;"}
@@ -5186,6 +5186,14 @@ type SurfaceTokens = DotNotationToken<Theme['colors']['surface']['background']>;
5186
5186
  type OverlayTokens = DotNotationToken<Theme['colors']['overlay']>;
5187
5187
  type OverlayColor = `interactive.background.${InteractiveTokens}` | `feedback.background.${FeedbackTokens}` | `surface.background.${SurfaceTokens}` | `overlay.${OverlayTokens}`;
5188
5188
  type CarouselProps = {
5189
+ /**
5190
+ * Sets the initial active slide index
5191
+ */
5192
+ defaultActiveSlide?: number;
5193
+ /**
5194
+ * Active slide index, if provided the carousel will be controlled
5195
+ */
5196
+ activeSlide?: number;
5189
5197
  /**
5190
5198
  * Accepts CarouselItem
5191
5199
  */
@@ -5260,7 +5268,7 @@ type CarouselProps = {
5260
5268
  */
5261
5269
  carouselItemAlignment?: BoxProps['alignItems'];
5262
5270
  /**
5263
- * Callback which gets fired everytime a slide changes, useful for analytic events (only runs on user interaction not on autoPlay)
5271
+ * Callback which gets fired everytime a slide changes, can be used to to make the carousel controlled
5264
5272
  *
5265
5273
  * @default undefined
5266
5274
  */
@@ -5271,10 +5279,13 @@ type CarouselProps = {
5271
5279
  * @default undefined
5272
5280
  */
5273
5281
  accessibilityLabel?: string;
5282
+ /**
5283
+ * Sets the height of the carousel
5284
+ */
5274
5285
  height?: BoxProps['height'];
5275
5286
  } & StyledPropsBlade;
5276
5287
 
5277
- declare const Carousel: ({ autoPlay, visibleItems, showIndicators, navigationButtonPosition, children, shouldAddStartEndSpacing, carouselItemWidth, scrollOverlayColor, accessibilityLabel, onChange, indicatorVariant, navigationButtonVariant, carouselItemAlignment, height, ...props }: CarouselProps) => React__default.ReactElement;
5288
+ declare const Carousel: ({ autoPlay, visibleItems, showIndicators, navigationButtonPosition, children, shouldAddStartEndSpacing, carouselItemWidth, scrollOverlayColor, accessibilityLabel, onChange, indicatorVariant, navigationButtonVariant, carouselItemAlignment, height, defaultActiveSlide, activeSlide: activeSlideProp, ...props }: CarouselProps) => React__default.ReactElement;
5278
5289
 
5279
5290
  type CarouselItemProps = {
5280
5291
  id?: string;
@@ -4277,6 +4277,14 @@ type SurfaceTokens = DotNotationToken<Theme['colors']['surface']['background']>;
4277
4277
  type OverlayTokens = DotNotationToken<Theme['colors']['overlay']>;
4278
4278
  type OverlayColor = `interactive.background.${InteractiveTokens}` | `feedback.background.${FeedbackTokens}` | `surface.background.${SurfaceTokens}` | `overlay.${OverlayTokens}`;
4279
4279
  type CarouselProps = {
4280
+ /**
4281
+ * Sets the initial active slide index
4282
+ */
4283
+ defaultActiveSlide?: number;
4284
+ /**
4285
+ * Active slide index, if provided the carousel will be controlled
4286
+ */
4287
+ activeSlide?: number;
4280
4288
  /**
4281
4289
  * Accepts CarouselItem
4282
4290
  */
@@ -4351,7 +4359,7 @@ type CarouselProps = {
4351
4359
  */
4352
4360
  carouselItemAlignment?: BoxProps['alignItems'];
4353
4361
  /**
4354
- * Callback which gets fired everytime a slide changes, useful for analytic events (only runs on user interaction not on autoPlay)
4362
+ * Callback which gets fired everytime a slide changes, can be used to to make the carousel controlled
4355
4363
  *
4356
4364
  * @default undefined
4357
4365
  */
@@ -4362,6 +4370,9 @@ type CarouselProps = {
4362
4370
  * @default undefined
4363
4371
  */
4364
4372
  accessibilityLabel?: string;
4373
+ /**
4374
+ * Sets the height of the carousel
4375
+ */
4365
4376
  height?: BoxProps['height'];
4366
4377
  } & StyledPropsBlade;
4367
4378
 
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@razorpay/blade",
3
3
  "description": "The Design System that powers Razorpay",
4
- "version": "11.34.0",
4
+ "version": "11.35.0",
5
5
  "license": "MIT",
6
6
  "engines": {
7
7
  "node": ">=18.12.1"