@yamada-ui/carousel 1.0.28 → 1.0.29
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.
- package/dist/carousel-control.d.mts +8 -0
- package/dist/carousel-control.d.ts +8 -0
- package/dist/carousel-control.js +158 -0
- package/dist/carousel-control.js.map +1 -0
- package/dist/carousel-control.mjs +11 -0
- package/dist/carousel-control.mjs.map +1 -0
- package/dist/carousel-indicators.d.mts +17 -0
- package/dist/carousel-indicators.d.ts +17 -0
- package/dist/carousel-indicators.js +141 -0
- package/dist/carousel-indicators.js.map +1 -0
- package/dist/carousel-indicators.mjs +9 -0
- package/dist/carousel-indicators.mjs.map +1 -0
- package/dist/carousel-slide.d.mts +17 -0
- package/dist/carousel-slide.d.ts +17 -0
- package/dist/carousel-slide.js +106 -0
- package/dist/carousel-slide.js.map +1 -0
- package/dist/carousel-slide.mjs +9 -0
- package/dist/carousel-slide.mjs.map +1 -0
- package/dist/carousel.d.mts +144 -0
- package/dist/carousel.d.ts +144 -0
- package/dist/carousel.js +599 -0
- package/dist/carousel.js.map +1 -0
- package/dist/carousel.mjs +12 -0
- package/dist/carousel.mjs.map +1 -0
- package/dist/chunk-ABN4VJ2X.mjs +171 -0
- package/dist/chunk-ABN4VJ2X.mjs.map +1 -0
- package/dist/chunk-DDY7Q2IV.mjs +87 -0
- package/dist/chunk-DDY7Q2IV.mjs.map +1 -0
- package/dist/chunk-QQ2HS4J4.mjs +260 -0
- package/dist/chunk-QQ2HS4J4.mjs.map +1 -0
- package/dist/chunk-SDWORTZY.mjs +72 -0
- package/dist/chunk-SDWORTZY.mjs.map +1 -0
- package/dist/chunk-VQX7S5CU.mjs +50 -0
- package/dist/chunk-VQX7S5CU.mjs.map +1 -0
- package/dist/index.d.mts +9 -0
- package/dist/index.d.ts +9 -0
- package/dist/index.js +609 -0
- package/dist/index.js.map +1 -0
- package/dist/index.mjs +23 -0
- package/dist/index.mjs.map +1 -0
- package/dist/use-carousel.d.mts +176 -0
- package/dist/use-carousel.d.ts +176 -0
- package/dist/use-carousel.js +292 -0
- package/dist/use-carousel.js.map +1 -0
- package/dist/use-carousel.mjs +18 -0
- package/dist/use-carousel.mjs.map +1 -0
- package/package.json +3 -3
| @@ -0,0 +1 @@ | |
| 1 | 
            +
            {"version":3,"sources":["../src/carousel.tsx","../src/use-carousel.ts","../src/carousel-slide.tsx","../src/carousel-control.tsx","../src/carousel-indicators.tsx"],"sourcesContent":["import type {\n  HTMLUIProps,\n  ThemeProps,\n  CSSUIObject,\n  Token,\n  CSSUIProps,\n} from \"@yamada-ui/core\"\nimport {\n  ui,\n  forwardRef,\n  useMultiComponentStyle,\n  omitThemeProps,\n} from \"@yamada-ui/core\"\nimport { useToken } from \"@yamada-ui/use-token\"\nimport { useValue } from \"@yamada-ui/use-value\"\nimport {\n  calc,\n  cx,\n  filterUndefined,\n  findChildren,\n  getValidChildren,\n  omitChildren,\n  pickChildren,\n} from \"@yamada-ui/utils\"\nimport type { FC } from \"react\"\nimport { cloneElement } from \"react\"\nimport type { UseCarouselProps } from \"./use-carousel\"\nimport {\n  CarouselProvider,\n  useCarousel,\n  useCarouselContext,\n} from \"./use-carousel\"\nimport type { CarouselControlProps, CarouselIndicatorsProps } from \"./\"\nimport {\n  CarouselControlNext,\n  CarouselControlPrev,\n  CarouselIndicators,\n  CarouselSlide,\n} from \"./\"\n\ntype CarouselOptions = {\n  /**\n   * The orientation of the carousel.\n   *\n   * @default 'horizontal'\n   */\n  orientation?: Token<\"vertical\" | \"horizontal\">\n  /**\n   * The alignment of the carousel.\n   *\n   * @default 'center'\n   */\n  align?: Token<\"start\" | \"center\" | \"end\" | number>\n  /**\n   * Clear leading and trailing empty space that causes excessive scrolling.\n   * Use trimSnaps to only use snap points that trigger scrolling or keepSnaps to keep them.\n   *\n   * @default ''\n   */\n  containScroll?: Token<\"trimSnaps\" | \"keepSnaps\" | \"\">\n  /**\n   * The number of slides that should be scrolled with next or previous buttons.\n   *\n   * @default 1\n   */\n  slidesToScroll?: Token<number>\n  /**\n   * If `true`, momentum scrolling will be enabled.\n   *\n   * @default false\n   */\n  dragFree?: Token<boolean>\n  /**\n   * If `true`, carousel can be scrolled with mouse and touch interactions.\n   *\n   * @default true\n   */\n  draggable?: Token<boolean>\n  /**\n   * Choose a fraction representing the percentage portion of a slide that needs to be visible in order to be considered in view.\n   *\n   * @default 0\n   */\n  inViewThreshold?: Token<number>\n  /**\n   * If `true`, infinite looping.\n   * Automatically falls back to false if slide content isn't enough to loop.\n   *\n   * @default true\n   */\n  loop?: Token<boolean>\n  /**\n   * If `true`, allow the carousel to skip scroll snaps if it's dragged vigorously.\n   * Note that this option will be ignored if the dragFree option is set to true.\n   *\n   * @default false\n   */\n  skipSnaps?: Token<boolean>\n  /**\n   * Adjusts scroll speed when triggered by any of the methods.\n   * Higher numbers enables faster scrolling.\n   *\n   * @default 10\n   */\n  speed?: Token<number>\n  /**\n   * The number for the autoplay interval of the carousel.\n   *\n   * @default 4000\n   */\n  delay?: Token<number>\n  /**\n   * If `true`, the carousel will be autoplay.\n   *\n   * @default false\n   */\n  autoplay?: Token<boolean>\n  /**\n   * If `true`, autoplay will pause when the mouse entries over.\n   *\n   * @default true\n   */\n  stopMouseEnterAutoplay?: Token<boolean>\n  /**\n   * If `true`, gap will be treated as part of the carousel slide size.\n   *\n   * @default true\n   */\n  includeGapInSize?: Token<boolean>\n  /**\n   * The CSS `width` property.\n   */\n  slideSize?: CSSUIProps[\"width\"]\n  /**\n   * Props for carousel inner element.\n   */\n  innerProps?: HTMLUIProps<\"div\">\n  /**\n   * If `true`, display the carousel control buttons.\n   *\n   * @default true\n   */\n  withControls?: Token<boolean>\n  /**\n   * Props for carousel control element.\n   */\n  controlProps?: CarouselControlProps\n  /**\n   * Props for previous of the carousel control element.\n   */\n  controlPrevProps?: CarouselControlProps\n  /**\n   * Props for next of the carousel control element.\n   */\n  controlNextProps?: CarouselControlProps\n  /**\n   * If `true`, display the carousel indicator buttons.\n   *\n   * @default true\n   */\n  withIndicators?: Token<boolean>\n  /**\n   * Props for carousel indicators element.\n   */\n  indicatorsProps?: CarouselIndicatorsProps\n}\n\nexport type CarouselProps = ThemeProps<\"Carousel\"> &\n  Omit<HTMLUIProps<\"div\">, \"onChange\" | \"draggable\"> &\n  Pick<\n    UseCarouselProps,\n    \"index\" | \"defaultIndex\" | \"onChange\" | \"onScrollProgress\"\n  > &\n  CarouselOptions\n\n/**\n * `Carousel` is a component that displays multiple elements like a slideshow.\n *\n * @see Docs https://yamada-ui.com/components/data-display/carousel\n */\nexport const Carousel = forwardRef<CarouselProps, \"div\">(\n  ({ h, height, minH, minHeight, ...props }, ref) => {\n    const orientation = useValue(props.orientation)\n    const align = useValue(props.align)\n    const autoplay = useValue(props.autoplay)\n    const stopMouseEnterAutoplay = useValue(props.stopMouseEnterAutoplay)\n    const loop = useValue(props.loop)\n    const speed = useValue(props.speed)\n    const delay = useValue(props.delay)\n    const slidesToScroll = useValue(props.slidesToScroll)\n    const draggable = useValue(props.draggable)\n    const dragFree = useValue(props.dragFree)\n    const inViewThreshold = useValue(props.inViewThreshold)\n    const skipSnaps = useValue(props.skipSnaps)\n    const containScroll = useValue(props.containScroll)\n    const includeGapInSize = useValue(props.includeGapInSize)\n    const gap = useToken(\"spaces\", useValue(props.gap)) ?? useValue(props.gap)\n    const slideSize =\n      useToken(\"sizes\", useValue(props.slideSize)) ?? useValue(props.slideSize)\n\n    const [styles, mergedProps] = useMultiComponentStyle(\"Carousel\", {\n      ...props,\n      orientation,\n      align,\n      autoplay,\n      stopMouseEnterAutoplay,\n      loop,\n      speed,\n      delay,\n      slidesToScroll,\n      draggable,\n      dragFree,\n      inViewThreshold,\n      skipSnaps,\n      containScroll,\n      includeGapInSize,\n      gap,\n      slideSize,\n    })\n    const {\n      className,\n      innerProps,\n      withControls = true,\n      controlProps,\n      controlPrevProps,\n      controlNextProps,\n      withIndicators = true,\n      indicatorsProps,\n      ...computedProps\n    } = omitThemeProps(mergedProps)\n\n    const computedWithControls = useValue(withControls)\n    const computedWithIndicators = useValue(withIndicators)\n\n    const { getContainerProps, getSlidesProps, children, ...rest } =\n      useCarousel({\n        ...computedProps,\n      })\n\n    const validChildren = getValidChildren(children)\n\n    const [customCarouselControlPrev] = findChildren(\n      validChildren,\n      CarouselControlPrev,\n    )\n    const [customCarouselControlNext] = findChildren(\n      validChildren,\n      CarouselControlNext,\n    )\n    const [customCarouselIndicators] = findChildren(\n      validChildren,\n      CarouselIndicators,\n    )\n    const slideChildren = pickChildren(validChildren, CarouselSlide)\n    const otherChildren = omitChildren(\n      validChildren,\n      CarouselControlPrev,\n      CarouselControlNext,\n      CarouselIndicators,\n      CarouselSlide,\n    )\n\n    const cloneSlideChildren = slideChildren.map((child, index) =>\n      cloneElement(child, { index }),\n    )\n\n    h ??= height\n    minH ??= minHeight\n\n    return (\n      <CarouselProvider value={{ styles, ...rest }}>\n        <ui.div\n          className={cx(\"ui-carousel\", className)}\n          __css={{\n            position: \"relative\",\n            h: \"fit-content\",\n            ...styles.container,\n          }}\n          {...getContainerProps({}, ref)}\n        >\n          {customCarouselControlPrev ??\n            (computedWithControls ? (\n              <CarouselControlPrev {...controlProps} {...controlPrevProps} />\n            ) : null)}\n          {customCarouselControlNext ??\n            (computedWithControls ? (\n              <CarouselControlNext {...controlProps} {...controlNextProps} />\n            ) : null)}\n\n          <CarouselSlides\n            {...getSlidesProps({\n              ...filterUndefined({ h, minH }),\n              ...innerProps,\n            })}\n          >\n            {cloneSlideChildren}\n          </CarouselSlides>\n\n          {customCarouselIndicators ??\n            (computedWithIndicators ? (\n              <CarouselIndicators {...indicatorsProps} />\n            ) : null)}\n\n          {otherChildren}\n        </ui.div>\n      </CarouselProvider>\n    )\n  },\n)\n\ntype CarouselSlidesProps = HTMLUIProps<\"div\">\n\nconst CarouselSlides = forwardRef<CarouselSlidesProps, \"div\">(\n  ({ ...rest }, ref) => {\n    const css: CSSUIObject = { w: \"100%\", h: \"fit-content\", overflow: \"hidden\" }\n\n    return (\n      <ui.div ref={ref} className=\"ui-carousel__sliders\" __css={css}>\n        <CarouselSlidesInner {...rest} />\n      </ui.div>\n    )\n  },\n)\n\ntype CarouselSlidesInnerProps = HTMLUIProps<\"div\">\n\nconst CarouselSlidesInner: FC<CarouselSlidesInnerProps> = ({ ...rest }) => {\n  const { orientation, includeGapInSize, gap, styles } = useCarouselContext()\n\n  const css: CSSUIObject = {\n    display: \"flex\",\n    flexDirection: orientation === \"vertical\" ? \"column\" : \"row\",\n    ...styles.inner,\n    ...(includeGapInSize\n      ? {\n          var: [{ __prefix: \"ui\", name: \"gap\", token: \"spaces\", value: gap }],\n          [orientation === \"vertical\" ? \"mb\" : \"mr\"]:\n            calc.negate(\"var(--ui-gap)\"),\n        }\n      : {}),\n  }\n\n  return (\n    <ui.div className=\"ui-carousel__sliders__inner\" __css={css} {...rest} />\n  )\n}\n","import type { IconButtonProps } from \"@yamada-ui/button\"\nimport type {\n  CSSUIObject,\n  HTMLUIProps,\n  CSSUIProps,\n  UIPropGetter,\n  RequiredUIPropGetter,\n} from \"@yamada-ui/core\"\nimport { layoutStyleProperties } from \"@yamada-ui/core\"\nimport { useControllableState } from \"@yamada-ui/use-controllable-state\"\nimport {\n  createContext,\n  dataAttr,\n  handlerAll,\n  splitObject,\n  useUpdateEffect,\n} from \"@yamada-ui/utils\"\nimport type { EmblaCarouselType } from \"embla-carousel-react\"\nimport useEmblaCarousel from \"embla-carousel-react\"\nimport type { MouseEvent } from \"react\"\nimport { Children, useCallback, useEffect, useRef, useState } from \"react\"\n\ntype CarouselContext = {\n  carousel: EmblaCarouselType | undefined\n  indexes: number[]\n  selectedIndex: number\n  orientation: \"vertical\" | \"horizontal\"\n  includeGapInSize: boolean\n  slidesToScroll: number\n  slideSize: string | number\n  gap: CSSUIProps[\"gap\"]\n  styles: Record<string, CSSUIObject>\n}\n\nexport const [CarouselProvider, useCarouselContext] =\n  createContext<CarouselContext>({\n    name: \"CarouselContext\",\n    errorMessage: `useCarouselContext returned is 'undefined'. Seems you forgot to wrap the components in \"<Carousel />\"`,\n  })\n\nexport type UseCarouselProps = Omit<\n  HTMLUIProps<\"div\">,\n  \"onChange\" | \"draggable\" | \"gap\"\n> & {\n  /**\n   * The index of the carousel slide.\n   */\n  index?: number\n  /**\n   * The initial index of the carousel slide.\n   *\n   * @default 0\n   */\n  defaultIndex?: number\n  /**\n   * The callback invoked when carousel slide selected.\n   */\n  onChange?: (index: number) => void\n  /**\n   * The orientation of the carousel.\n   *\n   * @default 'horizontal'\n   */\n  orientation?: \"vertical\" | \"horizontal\"\n  /**\n   * The alignment of the carousel.\n   *\n   * @default 'center'\n   */\n  align?: \"start\" | \"center\" | \"end\" | number\n  /**\n   * Clear leading and trailing empty space that causes excessive scrolling.\n   * Use trimSnaps to only use snap points that trigger scrolling or keepSnaps to keep them.\n   *\n   * @default ''\n   */\n  containScroll?: \"trimSnaps\" | \"keepSnaps\" | \"\"\n  /**\n   * The number of slides that should be scrolled with next or previous buttons.\n   *\n   * @default 1\n   */\n  slidesToScroll?: number\n  /**\n   * If `true`, momentum scrolling will be enabled.\n   *\n   * @default false\n   */\n  dragFree?: boolean\n  /**\n   * If `true`, carousel can be scrolled with mouse and touch interactions.\n   *\n   * @default true\n   */\n  draggable?: boolean\n  /**\n   * Choose a fraction representing the percentage portion of a slide that needs to be visible in order to be considered in view.\n   *\n   * @default 0\n   */\n  inViewThreshold?: number\n  /**\n   * If `true`, infinite looping.\n   * Automatically falls back to false if slide content isn't enough to loop.\n   *\n   * @default true\n   */\n  loop?: boolean\n  /**\n   * If `true`, allow the carousel to skip scroll snaps if it's dragged vigorously.\n   * Note that this option will be ignored if the dragFree option is set to true.\n   *\n   * @default false\n   */\n  skipSnaps?: boolean\n  /**\n   * Adjusts scroll speed when triggered by any of the methods.\n   * Higher numbers enables faster scrolling.\n   *\n   * @default 10\n   */\n  speed?: number\n  /**\n   * The number for the autoplay interval of the carousel.\n   *\n   * @default 4000\n   */\n  delay?: number\n  /**\n   * If `true`, the carousel will be autoplay.\n   *\n   * @default false\n   */\n  autoplay?: boolean\n  /**\n   * If `true`, autoplay will pause when the mouse entries over.\n   *\n   * @default true\n   */\n  stopMouseEnterAutoplay?: boolean\n  /**\n   * If `true`, gap will be treated as part of the carousel slide size.\n   *\n   * @default true\n   */\n  includeGapInSize?: boolean\n  /**\n   * The CSS `gap` property.\n   *\n   * @default '4'\n   */\n  gap?: CSSUIProps[\"gap\"]\n  /**\n   * The carousel slide width.\n   *\n   * @default '100%'\n   */\n  slideSize?: string | number\n  /**\n   * A callback that return the current scroll amount when the carousel is scrolled.\n   */\n  onScrollProgress?: (progress: number) => void\n}\n\nexport const useCarousel = ({\n  index,\n  defaultIndex = 0,\n  onChange,\n  align = \"center\",\n  orientation = \"horizontal\",\n  autoplay = false,\n  stopMouseEnterAutoplay = true,\n  loop = true,\n  speed = 10,\n  delay = 4000,\n  gap = \"fallback(4, 1rem)\",\n  slidesToScroll = 1,\n  draggable = true,\n  dragFree = false,\n  inViewThreshold = 0,\n  skipSnaps = false,\n  containScroll = \"\",\n  slideSize = \"100%\",\n  includeGapInSize = true,\n  onScrollProgress,\n  children,\n  ...rest\n}: UseCarouselProps) => {\n  const computedProps = splitObject(rest, layoutStyleProperties)\n\n  const [selectedIndex, setSelectedIndex] = useControllableState({\n    value: index,\n    defaultValue: defaultIndex,\n    onChange,\n  })\n\n  const isVertical = orientation === \"vertical\"\n\n  const [carouselRef, carousel] = useEmblaCarousel({\n    axis: isVertical ? \"y\" : \"x\",\n    startIndex: defaultIndex,\n    loop,\n    align,\n    slidesToScroll,\n    draggable,\n    dragFree,\n    speed,\n    inViewThreshold,\n    skipSnaps,\n    containScroll,\n  })\n\n  const [indexes, setIndexes] = useState<number[]>([])\n  const [isMouseEnter, setIsMouseEnter] = useState<boolean>(false)\n\n  const timeoutId = useRef<any>(undefined)\n\n  const onScroll = useCallback(() => {\n    if (!carousel) return\n\n    const progress = Math.round(\n      Math.max(0, Math.min(1, carousel.scrollProgress())) * 100,\n    )\n\n    onScrollProgress?.(progress)\n  }, [carousel, onScrollProgress])\n\n  const onSelect = useCallback(() => {\n    if (!carousel) return\n\n    const index = carousel.selectedScrollSnap()\n\n    setSelectedIndex(index)\n  }, [carousel, setSelectedIndex])\n\n  useEffect(() => {\n    const isStop = isMouseEnter && stopMouseEnterAutoplay\n    const isLast = !carousel?.canScrollNext()\n\n    if (carousel && autoplay && !isStop && !isLast) {\n      timeoutId.current = setInterval(() => {\n        carousel.scrollNext()\n      }, delay)\n    } else {\n      if (timeoutId.current) clearInterval(timeoutId.current)\n\n      timeoutId.current = undefined\n    }\n\n    return () => {\n      if (timeoutId.current) clearInterval(timeoutId.current)\n    }\n  }, [\n    autoplay,\n    delay,\n    stopMouseEnterAutoplay,\n    carousel,\n    isMouseEnter,\n    loop,\n    selectedIndex,\n  ])\n\n  useUpdateEffect(() => {\n    if (!carousel) return\n\n    carousel.reInit()\n\n    const snapList = carousel.scrollSnapList()\n    const indexes = snapList.map((_, i) => i)\n\n    setIndexes(indexes)\n  }, [\n    Children.toArray(children).length,\n    align,\n    orientation,\n    loop,\n    speed,\n    gap,\n    slidesToScroll,\n    draggable,\n    dragFree,\n    inViewThreshold,\n    skipSnaps,\n    containScroll,\n    slideSize,\n    includeGapInSize,\n  ])\n\n  useUpdateEffect(() => {\n    if (!carousel) return\n\n    const snapList = carousel.scrollSnapList()\n    const indexes = snapList.map((_, i) => i)\n\n    setIndexes(indexes)\n  }, [carousel])\n\n  useUpdateEffect(() => {\n    if (carousel) {\n      carousel.on(\"select\", onSelect)\n      carousel.on(\"scroll\", onScroll)\n\n      onScroll()\n\n      return () => {\n        carousel.off(\"select\", onSelect)\n        carousel.off(\"scroll\", onScroll)\n      }\n    }\n  }, [carousel, onScroll])\n\n  const getContainerProps: UIPropGetter = useCallback(\n    (props = {}, ref = null) => ({\n      ...computedProps[0],\n      ...props,\n      ref,\n      onMouseEnter: handlerAll(props.onMouseEnter, () => {\n        setIsMouseEnter(true)\n      }),\n      onMouseLeave: handlerAll(props.onMouseLeave, () => {\n        setIsMouseEnter(false)\n      }),\n    }),\n    [computedProps],\n  )\n\n  const getSlidesProps: UIPropGetter = useCallback(\n    (props = {}) => ({\n      ...computedProps[1],\n      ...props,\n      ref: carouselRef,\n    }),\n    [computedProps, carouselRef],\n  )\n\n  return {\n    carousel,\n    children,\n    indexes,\n    selectedIndex,\n    orientation,\n    slideSize,\n    gap,\n    slidesToScroll,\n    includeGapInSize,\n    getContainerProps,\n    getSlidesProps,\n  }\n}\n\nexport type UseCarouselReturn = ReturnType<typeof useCarousel>\n\nexport type UseCarouselSlideProps = {\n  index?: number\n}\n\nexport const useCarouselSlide = ({ index }: UseCarouselSlideProps) => {\n  const { selectedIndex, slidesToScroll } = useCarouselContext()\n\n  index = Math.floor((index ?? 0) / (slidesToScroll ?? 1))\n\n  const isSelected = index === selectedIndex\n\n  const getSlideProps: UIPropGetter = useCallback(\n    (props = {}) => ({\n      ...props,\n      \"data-index\": index,\n      \"data-selected\": dataAttr(isSelected),\n    }),\n    [isSelected, index],\n  )\n\n  return { getSlideProps }\n}\n\nexport type UseCarouselSlideReturn = ReturnType<typeof useCarouselSlide>\n\nexport type UseCarouselControlProps = IconButtonProps & {\n  operation: \"prev\" | \"next\"\n}\n\nexport const useCarouselControl = ({\n  operation,\n  ...rest\n}: UseCarouselControlProps) => {\n  const { carousel } = useCarouselContext()\n\n  const isPrev = operation === \"prev\"\n\n  const disabled =\n    rest.disabled ??\n    rest.isDisabled ??\n    (isPrev ? !carousel?.canScrollPrev() : !carousel?.canScrollNext())\n\n  const onClick = useCallback(() => {\n    if (!carousel) return\n\n    if (isPrev) {\n      carousel.scrollPrev()\n    } else {\n      carousel.scrollNext()\n    }\n  }, [carousel, isPrev])\n\n  const getControlProps: UIPropGetter<\"button\"> = useCallback(\n    (props = {}, ref = null) => ({\n      ...props,\n      ref,\n      disabled,\n      onClick: handlerAll(props.onClick, onClick),\n    }),\n    [disabled, onClick],\n  )\n\n  return { getControlProps }\n}\n\nexport type UseCarouselControlReturn = ReturnType<typeof useCarouselControl>\n\nexport const useCarouselIndicators = () => {\n  const { selectedIndex, carousel, indexes } = useCarouselContext()\n\n  const onClick = useCallback(\n    (ev: MouseEvent, index: number) => {\n      if (!carousel) return\n\n      ev.stopPropagation()\n\n      carousel.scrollTo(index)\n    },\n    [carousel],\n  )\n\n  const getIndicatorProps: RequiredUIPropGetter<\"button\", { index: number }> =\n    useCallback(\n      ({ index, ...props }) => {\n        const isSelected = index === selectedIndex\n\n        return {\n          \"aria-label\": `Go to ${index + 1} slide`,\n          ...props,\n          key: index,\n          \"data-index\": index,\n          \"data-selected\": dataAttr(isSelected),\n          onClick: handlerAll(props.onClick, (ev) => onClick(ev, index)),\n        }\n      },\n      [onClick, selectedIndex],\n    )\n\n  return { indexes, getIndicatorProps }\n}\n\nexport type UseCarouselIndicatorsReturn = ReturnType<\n  typeof useCarouselIndicators\n>\n","import type { HTMLUIProps, CSSUIObject } from \"@yamada-ui/core\"\nimport { ui, forwardRef } from \"@yamada-ui/core\"\nimport { cx } from \"@yamada-ui/utils\"\nimport type { UseCarouselSlideProps } from \"./use-carousel\"\nimport { useCarouselContext, useCarouselSlide } from \"./use-carousel\"\n\ntype CarouselSlideOptions = {\n  /**\n   * The CSS `width` property.\n   */\n  size?: CSSUIObject[\"width\"]\n}\n\nexport type CarouselSlideProps = HTMLUIProps<\"div\"> &\n  UseCarouselSlideProps &\n  CarouselSlideOptions\n\nexport const CarouselSlide = forwardRef<CarouselSlideProps, \"div\">(\n  ({ className, size, ...rest }, ref) => {\n    const { slideSize, includeGapInSize, orientation, gap } =\n      useCarouselContext()\n\n    const { getSlideProps } = useCarouselSlide(rest)\n\n    size ??= slideSize\n\n    const css: CSSUIObject = {\n      position: \"relative\",\n      flex: `0 0 ${size}`,\n      ...(includeGapInSize\n        ? { [orientation === \"vertical\" ? \"pb\" : \"pr\"]: gap }\n        : { [orientation === \"vertical\" ? \"mb\" : \"mr\"]: gap }),\n    }\n\n    return (\n      <ui.div\n        className={cx(\"ui-carousel__slide\", className)}\n        __css={css}\n        {...getSlideProps({})}\n      >\n        <CarouselSlideInner ref={ref} {...rest} />\n      </ui.div>\n    )\n  },\n)\n\ntype CarouselSlideInnerProps = HTMLUIProps<\"div\">\n\nconst CarouselSlideInner = forwardRef<CarouselSlideInnerProps, \"div\">(\n  ({ ...rest }, ref) => {\n    return (\n      <ui.div\n        ref={ref}\n        className=\"ui-carousel__slide__inner\"\n        w=\"100%\"\n        h=\"100%\"\n        {...rest}\n      />\n    )\n  },\n)\n","import type { IconButtonProps } from \"@yamada-ui/button\"\nimport { IconButton } from \"@yamada-ui/button\"\nimport type { CSSUIObject } from \"@yamada-ui/core\"\nimport { forwardRef, useColorModeValue } from \"@yamada-ui/core\"\nimport { ChevronIcon } from \"@yamada-ui/icon\"\nimport { cx } from \"@yamada-ui/utils\"\nimport { useCarouselContext, useCarouselControl } from \"./use-carousel\"\n\nexport type CarouselControlProps = IconButtonProps\n\nexport const CarouselControlPrev = forwardRef<CarouselControlProps, \"button\">(\n  ({ className, ...rest }, ref) => {\n    const { orientation } = useCarouselContext()\n\n    const { getControlProps } = useCarouselControl({ operation: \"prev\" })\n\n    return (\n      <CarouselControl\n        operation=\"prev\"\n        className={cx(\"ui-carousel__control--prev\", className)}\n        aria-label=\"Go to previous slide\"\n        icon={\n          <ChevronIcon\n            __css={{\n              fontSize: \"1.5em\",\n              transform:\n                orientation === \"vertical\" ? \"rotate(180deg)\" : \"rotate(90deg)\",\n            }}\n          />\n        }\n        {...getControlProps(rest, ref)}\n      />\n    )\n  },\n)\n\nexport const CarouselControlNext = forwardRef<CarouselControlProps, \"button\">(\n  ({ className, ...rest }, ref) => {\n    const { orientation } = useCarouselContext()\n\n    const { getControlProps } = useCarouselControl({ operation: \"next\" })\n\n    return (\n      <CarouselControl\n        operation=\"next\"\n        className={cx(\"ui-carousel__control--next\", className)}\n        aria-label=\"Go to next slide\"\n        icon={\n          <ChevronIcon\n            __css={{\n              fontSize: \"1.5em\",\n              transform:\n                orientation === \"vertical\" ? \"rotate(0deg)\" : \"rotate(-90deg)\",\n            }}\n          />\n        }\n        {...getControlProps(rest, ref)}\n      />\n    )\n  },\n)\n\nconst CarouselControl = forwardRef<\n  CarouselControlProps & { operation: \"prev\" | \"next\" },\n  \"button\"\n>(({ className, operation, ...rest }, ref) => {\n  const { styles } = useCarouselContext()\n  const colorScheme = useColorModeValue(\"whiteAlpha\", \"blackAlpha\")\n\n  const css: CSSUIObject = {\n    position: \"absolute\",\n    zIndex: \"fallback(kurillin, 9)\",\n    ...styles.control,\n    ...styles[operation],\n  }\n\n  return (\n    <IconButton\n      ref={ref}\n      className={cx(\"ui-carousel__control\", className)}\n      colorScheme={colorScheme}\n      isRounded\n      __css={css}\n      {...rest}\n    />\n  )\n})\n","import type { HTMLUIProps, CSSUIObject } from \"@yamada-ui/core\"\nimport { ui, forwardRef } from \"@yamada-ui/core\"\nimport { cx } from \"@yamada-ui/utils\"\nimport type { FC, ReactElement } from \"react\"\nimport { cloneElement } from \"react\"\nimport { useCarouselContext, useCarouselIndicators } from \"./use-carousel\"\n\ntype CarouselIndicatorsOptions = {\n  /**\n   * The custom caroucel indicator to use.\n   */\n  component?: FC<{ index: number; isSelected: boolean }>\n}\n\nexport type CarouselIndicatorsProps = Omit<HTMLUIProps<\"div\">, \"children\"> &\n  CarouselIndicatorsOptions\n\nexport const CarouselIndicators = forwardRef<CarouselIndicatorsProps, \"div\">(\n  ({ className, component, ...rest }, ref) => {\n    const { selectedIndex, orientation, styles } = useCarouselContext()\n\n    const { indexes, getIndicatorProps } = useCarouselIndicators()\n\n    const css: CSSUIObject = {\n      position: \"absolute\",\n      zIndex: \"fallback(kurillin, 9)\",\n      display: \"flex\",\n      justifyContent: \"center\",\n      ...styles.indicators,\n      ...(orientation === \"vertical\"\n        ? { flexDirection: \"column\" }\n        : { flexDirection: \"row\" }),\n    }\n\n    return (\n      <ui.div\n        ref={ref}\n        className={cx(\"ui-carousel__indicators\", className)}\n        __css={css}\n        {...rest}\n      >\n        {indexes.map((index) => {\n          const isSelected = index === selectedIndex\n\n          if (typeof component === \"function\") {\n            const child = component({\n              index,\n              isSelected,\n            }) as ReactElement | null\n\n            if (!child) return null\n\n            const props = getIndicatorProps({ ...child.props, index })\n\n            return cloneElement(child as ReactElement, props)\n          } else {\n            const { key, ...props } = getIndicatorProps({ index })\n\n            return <CarouselIndicator key={key} {...props} />\n          }\n        })}\n      </ui.div>\n    )\n  },\n)\n\ntype CarouselIndicatorProps = HTMLUIProps<\"button\">\n\nconst CarouselIndicator: FC<CarouselIndicatorProps> = ({\n  className,\n  ...rest\n}) => {\n  const { styles } = useCarouselContext()\n\n  const css: CSSUIObject = { ...styles.indicator }\n\n  return (\n    <ui.button\n      type=\"button\"\n      tabIndex={-1}\n      className={cx(\"ui-carousel__indicators__indicator\", className)}\n      __css={css}\n      {...rest}\n    />\n  )\n}\n"],"mappings":"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","names":["import_core","import_utils","import_react","useEmblaCarousel","index","indexes","import_core","import_utils","import_core","import_utils","import_jsx_runtime","import_core","import_utils","import_react","import_jsx_runtime","import_jsx_runtime"]}
         | 
| @@ -0,0 +1,12 @@ | |
| 1 | 
            +
            "use client"
         | 
| 2 | 
            +
            import {
         | 
| 3 | 
            +
              Carousel
         | 
| 4 | 
            +
            } from "./chunk-ABN4VJ2X.mjs";
         | 
| 5 | 
            +
            import "./chunk-DDY7Q2IV.mjs";
         | 
| 6 | 
            +
            import "./chunk-SDWORTZY.mjs";
         | 
| 7 | 
            +
            import "./chunk-VQX7S5CU.mjs";
         | 
| 8 | 
            +
            import "./chunk-QQ2HS4J4.mjs";
         | 
| 9 | 
            +
            export {
         | 
| 10 | 
            +
              Carousel
         | 
| 11 | 
            +
            };
         | 
| 12 | 
            +
            //# sourceMappingURL=carousel.mjs.map
         | 
| @@ -0,0 +1 @@ | |
| 1 | 
            +
            {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
         | 
| @@ -0,0 +1,171 @@ | |
| 1 | 
            +
            "use client"
         | 
| 2 | 
            +
            import {
         | 
| 3 | 
            +
              CarouselControlNext,
         | 
| 4 | 
            +
              CarouselControlPrev
         | 
| 5 | 
            +
            } from "./chunk-DDY7Q2IV.mjs";
         | 
| 6 | 
            +
            import {
         | 
| 7 | 
            +
              CarouselIndicators
         | 
| 8 | 
            +
            } from "./chunk-SDWORTZY.mjs";
         | 
| 9 | 
            +
            import {
         | 
| 10 | 
            +
              CarouselSlide
         | 
| 11 | 
            +
            } from "./chunk-VQX7S5CU.mjs";
         | 
| 12 | 
            +
            import {
         | 
| 13 | 
            +
              CarouselProvider,
         | 
| 14 | 
            +
              useCarousel,
         | 
| 15 | 
            +
              useCarouselContext
         | 
| 16 | 
            +
            } from "./chunk-QQ2HS4J4.mjs";
         | 
| 17 | 
            +
             | 
| 18 | 
            +
            // src/carousel.tsx
         | 
| 19 | 
            +
            import {
         | 
| 20 | 
            +
              ui,
         | 
| 21 | 
            +
              forwardRef,
         | 
| 22 | 
            +
              useMultiComponentStyle,
         | 
| 23 | 
            +
              omitThemeProps
         | 
| 24 | 
            +
            } from "@yamada-ui/core";
         | 
| 25 | 
            +
            import { useToken } from "@yamada-ui/use-token";
         | 
| 26 | 
            +
            import { useValue } from "@yamada-ui/use-value";
         | 
| 27 | 
            +
            import {
         | 
| 28 | 
            +
              calc,
         | 
| 29 | 
            +
              cx,
         | 
| 30 | 
            +
              filterUndefined,
         | 
| 31 | 
            +
              findChildren,
         | 
| 32 | 
            +
              getValidChildren,
         | 
| 33 | 
            +
              omitChildren,
         | 
| 34 | 
            +
              pickChildren
         | 
| 35 | 
            +
            } from "@yamada-ui/utils";
         | 
| 36 | 
            +
            import { cloneElement } from "react";
         | 
| 37 | 
            +
            import { jsx, jsxs } from "react/jsx-runtime";
         | 
| 38 | 
            +
            var Carousel = forwardRef(
         | 
| 39 | 
            +
              ({ h, height, minH, minHeight, ...props }, ref) => {
         | 
| 40 | 
            +
                var _a, _b;
         | 
| 41 | 
            +
                const orientation = useValue(props.orientation);
         | 
| 42 | 
            +
                const align = useValue(props.align);
         | 
| 43 | 
            +
                const autoplay = useValue(props.autoplay);
         | 
| 44 | 
            +
                const stopMouseEnterAutoplay = useValue(props.stopMouseEnterAutoplay);
         | 
| 45 | 
            +
                const loop = useValue(props.loop);
         | 
| 46 | 
            +
                const speed = useValue(props.speed);
         | 
| 47 | 
            +
                const delay = useValue(props.delay);
         | 
| 48 | 
            +
                const slidesToScroll = useValue(props.slidesToScroll);
         | 
| 49 | 
            +
                const draggable = useValue(props.draggable);
         | 
| 50 | 
            +
                const dragFree = useValue(props.dragFree);
         | 
| 51 | 
            +
                const inViewThreshold = useValue(props.inViewThreshold);
         | 
| 52 | 
            +
                const skipSnaps = useValue(props.skipSnaps);
         | 
| 53 | 
            +
                const containScroll = useValue(props.containScroll);
         | 
| 54 | 
            +
                const includeGapInSize = useValue(props.includeGapInSize);
         | 
| 55 | 
            +
                const gap = (_a = useToken("spaces", useValue(props.gap))) != null ? _a : useValue(props.gap);
         | 
| 56 | 
            +
                const slideSize = (_b = useToken("sizes", useValue(props.slideSize))) != null ? _b : useValue(props.slideSize);
         | 
| 57 | 
            +
                const [styles, mergedProps] = useMultiComponentStyle("Carousel", {
         | 
| 58 | 
            +
                  ...props,
         | 
| 59 | 
            +
                  orientation,
         | 
| 60 | 
            +
                  align,
         | 
| 61 | 
            +
                  autoplay,
         | 
| 62 | 
            +
                  stopMouseEnterAutoplay,
         | 
| 63 | 
            +
                  loop,
         | 
| 64 | 
            +
                  speed,
         | 
| 65 | 
            +
                  delay,
         | 
| 66 | 
            +
                  slidesToScroll,
         | 
| 67 | 
            +
                  draggable,
         | 
| 68 | 
            +
                  dragFree,
         | 
| 69 | 
            +
                  inViewThreshold,
         | 
| 70 | 
            +
                  skipSnaps,
         | 
| 71 | 
            +
                  containScroll,
         | 
| 72 | 
            +
                  includeGapInSize,
         | 
| 73 | 
            +
                  gap,
         | 
| 74 | 
            +
                  slideSize
         | 
| 75 | 
            +
                });
         | 
| 76 | 
            +
                const {
         | 
| 77 | 
            +
                  className,
         | 
| 78 | 
            +
                  innerProps,
         | 
| 79 | 
            +
                  withControls = true,
         | 
| 80 | 
            +
                  controlProps,
         | 
| 81 | 
            +
                  controlPrevProps,
         | 
| 82 | 
            +
                  controlNextProps,
         | 
| 83 | 
            +
                  withIndicators = true,
         | 
| 84 | 
            +
                  indicatorsProps,
         | 
| 85 | 
            +
                  ...computedProps
         | 
| 86 | 
            +
                } = omitThemeProps(mergedProps);
         | 
| 87 | 
            +
                const computedWithControls = useValue(withControls);
         | 
| 88 | 
            +
                const computedWithIndicators = useValue(withIndicators);
         | 
| 89 | 
            +
                const { getContainerProps, getSlidesProps, children, ...rest } = useCarousel({
         | 
| 90 | 
            +
                  ...computedProps
         | 
| 91 | 
            +
                });
         | 
| 92 | 
            +
                const validChildren = getValidChildren(children);
         | 
| 93 | 
            +
                const [customCarouselControlPrev] = findChildren(
         | 
| 94 | 
            +
                  validChildren,
         | 
| 95 | 
            +
                  CarouselControlPrev
         | 
| 96 | 
            +
                );
         | 
| 97 | 
            +
                const [customCarouselControlNext] = findChildren(
         | 
| 98 | 
            +
                  validChildren,
         | 
| 99 | 
            +
                  CarouselControlNext
         | 
| 100 | 
            +
                );
         | 
| 101 | 
            +
                const [customCarouselIndicators] = findChildren(
         | 
| 102 | 
            +
                  validChildren,
         | 
| 103 | 
            +
                  CarouselIndicators
         | 
| 104 | 
            +
                );
         | 
| 105 | 
            +
                const slideChildren = pickChildren(validChildren, CarouselSlide);
         | 
| 106 | 
            +
                const otherChildren = omitChildren(
         | 
| 107 | 
            +
                  validChildren,
         | 
| 108 | 
            +
                  CarouselControlPrev,
         | 
| 109 | 
            +
                  CarouselControlNext,
         | 
| 110 | 
            +
                  CarouselIndicators,
         | 
| 111 | 
            +
                  CarouselSlide
         | 
| 112 | 
            +
                );
         | 
| 113 | 
            +
                const cloneSlideChildren = slideChildren.map(
         | 
| 114 | 
            +
                  (child, index) => cloneElement(child, { index })
         | 
| 115 | 
            +
                );
         | 
| 116 | 
            +
                h != null ? h : h = height;
         | 
| 117 | 
            +
                minH != null ? minH : minH = minHeight;
         | 
| 118 | 
            +
                return /* @__PURE__ */ jsx(CarouselProvider, { value: { styles, ...rest }, children: /* @__PURE__ */ jsxs(
         | 
| 119 | 
            +
                  ui.div,
         | 
| 120 | 
            +
                  {
         | 
| 121 | 
            +
                    className: cx("ui-carousel", className),
         | 
| 122 | 
            +
                    __css: {
         | 
| 123 | 
            +
                      position: "relative",
         | 
| 124 | 
            +
                      h: "fit-content",
         | 
| 125 | 
            +
                      ...styles.container
         | 
| 126 | 
            +
                    },
         | 
| 127 | 
            +
                    ...getContainerProps({}, ref),
         | 
| 128 | 
            +
                    children: [
         | 
| 129 | 
            +
                      customCarouselControlPrev != null ? customCarouselControlPrev : computedWithControls ? /* @__PURE__ */ jsx(CarouselControlPrev, { ...controlProps, ...controlPrevProps }) : null,
         | 
| 130 | 
            +
                      customCarouselControlNext != null ? customCarouselControlNext : computedWithControls ? /* @__PURE__ */ jsx(CarouselControlNext, { ...controlProps, ...controlNextProps }) : null,
         | 
| 131 | 
            +
                      /* @__PURE__ */ jsx(
         | 
| 132 | 
            +
                        CarouselSlides,
         | 
| 133 | 
            +
                        {
         | 
| 134 | 
            +
                          ...getSlidesProps({
         | 
| 135 | 
            +
                            ...filterUndefined({ h, minH }),
         | 
| 136 | 
            +
                            ...innerProps
         | 
| 137 | 
            +
                          }),
         | 
| 138 | 
            +
                          children: cloneSlideChildren
         | 
| 139 | 
            +
                        }
         | 
| 140 | 
            +
                      ),
         | 
| 141 | 
            +
                      customCarouselIndicators != null ? customCarouselIndicators : computedWithIndicators ? /* @__PURE__ */ jsx(CarouselIndicators, { ...indicatorsProps }) : null,
         | 
| 142 | 
            +
                      otherChildren
         | 
| 143 | 
            +
                    ]
         | 
| 144 | 
            +
                  }
         | 
| 145 | 
            +
                ) });
         | 
| 146 | 
            +
              }
         | 
| 147 | 
            +
            );
         | 
| 148 | 
            +
            var CarouselSlides = forwardRef(
         | 
| 149 | 
            +
              ({ ...rest }, ref) => {
         | 
| 150 | 
            +
                const css = { w: "100%", h: "fit-content", overflow: "hidden" };
         | 
| 151 | 
            +
                return /* @__PURE__ */ jsx(ui.div, { ref, className: "ui-carousel__sliders", __css: css, children: /* @__PURE__ */ jsx(CarouselSlidesInner, { ...rest }) });
         | 
| 152 | 
            +
              }
         | 
| 153 | 
            +
            );
         | 
| 154 | 
            +
            var CarouselSlidesInner = ({ ...rest }) => {
         | 
| 155 | 
            +
              const { orientation, includeGapInSize, gap, styles } = useCarouselContext();
         | 
| 156 | 
            +
              const css = {
         | 
| 157 | 
            +
                display: "flex",
         | 
| 158 | 
            +
                flexDirection: orientation === "vertical" ? "column" : "row",
         | 
| 159 | 
            +
                ...styles.inner,
         | 
| 160 | 
            +
                ...includeGapInSize ? {
         | 
| 161 | 
            +
                  var: [{ __prefix: "ui", name: "gap", token: "spaces", value: gap }],
         | 
| 162 | 
            +
                  [orientation === "vertical" ? "mb" : "mr"]: calc.negate("var(--ui-gap)")
         | 
| 163 | 
            +
                } : {}
         | 
| 164 | 
            +
              };
         | 
| 165 | 
            +
              return /* @__PURE__ */ jsx(ui.div, { className: "ui-carousel__sliders__inner", __css: css, ...rest });
         | 
| 166 | 
            +
            };
         | 
| 167 | 
            +
             | 
| 168 | 
            +
            export {
         | 
| 169 | 
            +
              Carousel
         | 
| 170 | 
            +
            };
         | 
| 171 | 
            +
            //# sourceMappingURL=chunk-ABN4VJ2X.mjs.map
         | 
| @@ -0,0 +1 @@ | |
| 1 | 
            +
            {"version":3,"sources":["../src/carousel.tsx"],"sourcesContent":["import type {\n  HTMLUIProps,\n  ThemeProps,\n  CSSUIObject,\n  Token,\n  CSSUIProps,\n} from \"@yamada-ui/core\"\nimport {\n  ui,\n  forwardRef,\n  useMultiComponentStyle,\n  omitThemeProps,\n} from \"@yamada-ui/core\"\nimport { useToken } from \"@yamada-ui/use-token\"\nimport { useValue } from \"@yamada-ui/use-value\"\nimport {\n  calc,\n  cx,\n  filterUndefined,\n  findChildren,\n  getValidChildren,\n  omitChildren,\n  pickChildren,\n} from \"@yamada-ui/utils\"\nimport type { FC } from \"react\"\nimport { cloneElement } from \"react\"\nimport type { UseCarouselProps } from \"./use-carousel\"\nimport {\n  CarouselProvider,\n  useCarousel,\n  useCarouselContext,\n} from \"./use-carousel\"\nimport type { CarouselControlProps, CarouselIndicatorsProps } from \"./\"\nimport {\n  CarouselControlNext,\n  CarouselControlPrev,\n  CarouselIndicators,\n  CarouselSlide,\n} from \"./\"\n\ntype CarouselOptions = {\n  /**\n   * The orientation of the carousel.\n   *\n   * @default 'horizontal'\n   */\n  orientation?: Token<\"vertical\" | \"horizontal\">\n  /**\n   * The alignment of the carousel.\n   *\n   * @default 'center'\n   */\n  align?: Token<\"start\" | \"center\" | \"end\" | number>\n  /**\n   * Clear leading and trailing empty space that causes excessive scrolling.\n   * Use trimSnaps to only use snap points that trigger scrolling or keepSnaps to keep them.\n   *\n   * @default ''\n   */\n  containScroll?: Token<\"trimSnaps\" | \"keepSnaps\" | \"\">\n  /**\n   * The number of slides that should be scrolled with next or previous buttons.\n   *\n   * @default 1\n   */\n  slidesToScroll?: Token<number>\n  /**\n   * If `true`, momentum scrolling will be enabled.\n   *\n   * @default false\n   */\n  dragFree?: Token<boolean>\n  /**\n   * If `true`, carousel can be scrolled with mouse and touch interactions.\n   *\n   * @default true\n   */\n  draggable?: Token<boolean>\n  /**\n   * Choose a fraction representing the percentage portion of a slide that needs to be visible in order to be considered in view.\n   *\n   * @default 0\n   */\n  inViewThreshold?: Token<number>\n  /**\n   * If `true`, infinite looping.\n   * Automatically falls back to false if slide content isn't enough to loop.\n   *\n   * @default true\n   */\n  loop?: Token<boolean>\n  /**\n   * If `true`, allow the carousel to skip scroll snaps if it's dragged vigorously.\n   * Note that this option will be ignored if the dragFree option is set to true.\n   *\n   * @default false\n   */\n  skipSnaps?: Token<boolean>\n  /**\n   * Adjusts scroll speed when triggered by any of the methods.\n   * Higher numbers enables faster scrolling.\n   *\n   * @default 10\n   */\n  speed?: Token<number>\n  /**\n   * The number for the autoplay interval of the carousel.\n   *\n   * @default 4000\n   */\n  delay?: Token<number>\n  /**\n   * If `true`, the carousel will be autoplay.\n   *\n   * @default false\n   */\n  autoplay?: Token<boolean>\n  /**\n   * If `true`, autoplay will pause when the mouse entries over.\n   *\n   * @default true\n   */\n  stopMouseEnterAutoplay?: Token<boolean>\n  /**\n   * If `true`, gap will be treated as part of the carousel slide size.\n   *\n   * @default true\n   */\n  includeGapInSize?: Token<boolean>\n  /**\n   * The CSS `width` property.\n   */\n  slideSize?: CSSUIProps[\"width\"]\n  /**\n   * Props for carousel inner element.\n   */\n  innerProps?: HTMLUIProps<\"div\">\n  /**\n   * If `true`, display the carousel control buttons.\n   *\n   * @default true\n   */\n  withControls?: Token<boolean>\n  /**\n   * Props for carousel control element.\n   */\n  controlProps?: CarouselControlProps\n  /**\n   * Props for previous of the carousel control element.\n   */\n  controlPrevProps?: CarouselControlProps\n  /**\n   * Props for next of the carousel control element.\n   */\n  controlNextProps?: CarouselControlProps\n  /**\n   * If `true`, display the carousel indicator buttons.\n   *\n   * @default true\n   */\n  withIndicators?: Token<boolean>\n  /**\n   * Props for carousel indicators element.\n   */\n  indicatorsProps?: CarouselIndicatorsProps\n}\n\nexport type CarouselProps = ThemeProps<\"Carousel\"> &\n  Omit<HTMLUIProps<\"div\">, \"onChange\" | \"draggable\"> &\n  Pick<\n    UseCarouselProps,\n    \"index\" | \"defaultIndex\" | \"onChange\" | \"onScrollProgress\"\n  > &\n  CarouselOptions\n\n/**\n * `Carousel` is a component that displays multiple elements like a slideshow.\n *\n * @see Docs https://yamada-ui.com/components/data-display/carousel\n */\nexport const Carousel = forwardRef<CarouselProps, \"div\">(\n  ({ h, height, minH, minHeight, ...props }, ref) => {\n    const orientation = useValue(props.orientation)\n    const align = useValue(props.align)\n    const autoplay = useValue(props.autoplay)\n    const stopMouseEnterAutoplay = useValue(props.stopMouseEnterAutoplay)\n    const loop = useValue(props.loop)\n    const speed = useValue(props.speed)\n    const delay = useValue(props.delay)\n    const slidesToScroll = useValue(props.slidesToScroll)\n    const draggable = useValue(props.draggable)\n    const dragFree = useValue(props.dragFree)\n    const inViewThreshold = useValue(props.inViewThreshold)\n    const skipSnaps = useValue(props.skipSnaps)\n    const containScroll = useValue(props.containScroll)\n    const includeGapInSize = useValue(props.includeGapInSize)\n    const gap = useToken(\"spaces\", useValue(props.gap)) ?? useValue(props.gap)\n    const slideSize =\n      useToken(\"sizes\", useValue(props.slideSize)) ?? useValue(props.slideSize)\n\n    const [styles, mergedProps] = useMultiComponentStyle(\"Carousel\", {\n      ...props,\n      orientation,\n      align,\n      autoplay,\n      stopMouseEnterAutoplay,\n      loop,\n      speed,\n      delay,\n      slidesToScroll,\n      draggable,\n      dragFree,\n      inViewThreshold,\n      skipSnaps,\n      containScroll,\n      includeGapInSize,\n      gap,\n      slideSize,\n    })\n    const {\n      className,\n      innerProps,\n      withControls = true,\n      controlProps,\n      controlPrevProps,\n      controlNextProps,\n      withIndicators = true,\n      indicatorsProps,\n      ...computedProps\n    } = omitThemeProps(mergedProps)\n\n    const computedWithControls = useValue(withControls)\n    const computedWithIndicators = useValue(withIndicators)\n\n    const { getContainerProps, getSlidesProps, children, ...rest } =\n      useCarousel({\n        ...computedProps,\n      })\n\n    const validChildren = getValidChildren(children)\n\n    const [customCarouselControlPrev] = findChildren(\n      validChildren,\n      CarouselControlPrev,\n    )\n    const [customCarouselControlNext] = findChildren(\n      validChildren,\n      CarouselControlNext,\n    )\n    const [customCarouselIndicators] = findChildren(\n      validChildren,\n      CarouselIndicators,\n    )\n    const slideChildren = pickChildren(validChildren, CarouselSlide)\n    const otherChildren = omitChildren(\n      validChildren,\n      CarouselControlPrev,\n      CarouselControlNext,\n      CarouselIndicators,\n      CarouselSlide,\n    )\n\n    const cloneSlideChildren = slideChildren.map((child, index) =>\n      cloneElement(child, { index }),\n    )\n\n    h ??= height\n    minH ??= minHeight\n\n    return (\n      <CarouselProvider value={{ styles, ...rest }}>\n        <ui.div\n          className={cx(\"ui-carousel\", className)}\n          __css={{\n            position: \"relative\",\n            h: \"fit-content\",\n            ...styles.container,\n          }}\n          {...getContainerProps({}, ref)}\n        >\n          {customCarouselControlPrev ??\n            (computedWithControls ? (\n              <CarouselControlPrev {...controlProps} {...controlPrevProps} />\n            ) : null)}\n          {customCarouselControlNext ??\n            (computedWithControls ? (\n              <CarouselControlNext {...controlProps} {...controlNextProps} />\n            ) : null)}\n\n          <CarouselSlides\n            {...getSlidesProps({\n              ...filterUndefined({ h, minH }),\n              ...innerProps,\n            })}\n          >\n            {cloneSlideChildren}\n          </CarouselSlides>\n\n          {customCarouselIndicators ??\n            (computedWithIndicators ? (\n              <CarouselIndicators {...indicatorsProps} />\n            ) : null)}\n\n          {otherChildren}\n        </ui.div>\n      </CarouselProvider>\n    )\n  },\n)\n\ntype CarouselSlidesProps = HTMLUIProps<\"div\">\n\nconst CarouselSlides = forwardRef<CarouselSlidesProps, \"div\">(\n  ({ ...rest }, ref) => {\n    const css: CSSUIObject = { w: \"100%\", h: \"fit-content\", overflow: \"hidden\" }\n\n    return (\n      <ui.div ref={ref} className=\"ui-carousel__sliders\" __css={css}>\n        <CarouselSlidesInner {...rest} />\n      </ui.div>\n    )\n  },\n)\n\ntype CarouselSlidesInnerProps = HTMLUIProps<\"div\">\n\nconst CarouselSlidesInner: FC<CarouselSlidesInnerProps> = ({ ...rest }) => {\n  const { orientation, includeGapInSize, gap, styles } = useCarouselContext()\n\n  const css: CSSUIObject = {\n    display: \"flex\",\n    flexDirection: orientation === \"vertical\" ? \"column\" : \"row\",\n    ...styles.inner,\n    ...(includeGapInSize\n      ? {\n          var: [{ __prefix: \"ui\", name: \"gap\", token: \"spaces\", value: gap }],\n          [orientation === \"vertical\" ? \"mb\" : \"mr\"]:\n            calc.negate(\"var(--ui-gap)\"),\n        }\n      : {}),\n  }\n\n  return (\n    <ui.div className=\"ui-carousel__sliders__inner\" __css={css} {...rest} />\n  )\n}\n"],"mappings":"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","names":[]}
         | 
| @@ -0,0 +1,87 @@ | |
| 1 | 
            +
            "use client"
         | 
| 2 | 
            +
            import {
         | 
| 3 | 
            +
              useCarouselContext,
         | 
| 4 | 
            +
              useCarouselControl
         | 
| 5 | 
            +
            } from "./chunk-QQ2HS4J4.mjs";
         | 
| 6 | 
            +
             | 
| 7 | 
            +
            // src/carousel-control.tsx
         | 
| 8 | 
            +
            import { IconButton } from "@yamada-ui/button";
         | 
| 9 | 
            +
            import { forwardRef, useColorModeValue } from "@yamada-ui/core";
         | 
| 10 | 
            +
            import { ChevronIcon } from "@yamada-ui/icon";
         | 
| 11 | 
            +
            import { cx } from "@yamada-ui/utils";
         | 
| 12 | 
            +
            import { jsx } from "react/jsx-runtime";
         | 
| 13 | 
            +
            var CarouselControlPrev = forwardRef(
         | 
| 14 | 
            +
              ({ className, ...rest }, ref) => {
         | 
| 15 | 
            +
                const { orientation } = useCarouselContext();
         | 
| 16 | 
            +
                const { getControlProps } = useCarouselControl({ operation: "prev" });
         | 
| 17 | 
            +
                return /* @__PURE__ */ jsx(
         | 
| 18 | 
            +
                  CarouselControl,
         | 
| 19 | 
            +
                  {
         | 
| 20 | 
            +
                    operation: "prev",
         | 
| 21 | 
            +
                    className: cx("ui-carousel__control--prev", className),
         | 
| 22 | 
            +
                    "aria-label": "Go to previous slide",
         | 
| 23 | 
            +
                    icon: /* @__PURE__ */ jsx(
         | 
| 24 | 
            +
                      ChevronIcon,
         | 
| 25 | 
            +
                      {
         | 
| 26 | 
            +
                        __css: {
         | 
| 27 | 
            +
                          fontSize: "1.5em",
         | 
| 28 | 
            +
                          transform: orientation === "vertical" ? "rotate(180deg)" : "rotate(90deg)"
         | 
| 29 | 
            +
                        }
         | 
| 30 | 
            +
                      }
         | 
| 31 | 
            +
                    ),
         | 
| 32 | 
            +
                    ...getControlProps(rest, ref)
         | 
| 33 | 
            +
                  }
         | 
| 34 | 
            +
                );
         | 
| 35 | 
            +
              }
         | 
| 36 | 
            +
            );
         | 
| 37 | 
            +
            var CarouselControlNext = forwardRef(
         | 
| 38 | 
            +
              ({ className, ...rest }, ref) => {
         | 
| 39 | 
            +
                const { orientation } = useCarouselContext();
         | 
| 40 | 
            +
                const { getControlProps } = useCarouselControl({ operation: "next" });
         | 
| 41 | 
            +
                return /* @__PURE__ */ jsx(
         | 
| 42 | 
            +
                  CarouselControl,
         | 
| 43 | 
            +
                  {
         | 
| 44 | 
            +
                    operation: "next",
         | 
| 45 | 
            +
                    className: cx("ui-carousel__control--next", className),
         | 
| 46 | 
            +
                    "aria-label": "Go to next slide",
         | 
| 47 | 
            +
                    icon: /* @__PURE__ */ jsx(
         | 
| 48 | 
            +
                      ChevronIcon,
         | 
| 49 | 
            +
                      {
         | 
| 50 | 
            +
                        __css: {
         | 
| 51 | 
            +
                          fontSize: "1.5em",
         | 
| 52 | 
            +
                          transform: orientation === "vertical" ? "rotate(0deg)" : "rotate(-90deg)"
         | 
| 53 | 
            +
                        }
         | 
| 54 | 
            +
                      }
         | 
| 55 | 
            +
                    ),
         | 
| 56 | 
            +
                    ...getControlProps(rest, ref)
         | 
| 57 | 
            +
                  }
         | 
| 58 | 
            +
                );
         | 
| 59 | 
            +
              }
         | 
| 60 | 
            +
            );
         | 
| 61 | 
            +
            var CarouselControl = forwardRef(({ className, operation, ...rest }, ref) => {
         | 
| 62 | 
            +
              const { styles } = useCarouselContext();
         | 
| 63 | 
            +
              const colorScheme = useColorModeValue("whiteAlpha", "blackAlpha");
         | 
| 64 | 
            +
              const css = {
         | 
| 65 | 
            +
                position: "absolute",
         | 
| 66 | 
            +
                zIndex: "fallback(kurillin, 9)",
         | 
| 67 | 
            +
                ...styles.control,
         | 
| 68 | 
            +
                ...styles[operation]
         | 
| 69 | 
            +
              };
         | 
| 70 | 
            +
              return /* @__PURE__ */ jsx(
         | 
| 71 | 
            +
                IconButton,
         | 
| 72 | 
            +
                {
         | 
| 73 | 
            +
                  ref,
         | 
| 74 | 
            +
                  className: cx("ui-carousel__control", className),
         | 
| 75 | 
            +
                  colorScheme,
         | 
| 76 | 
            +
                  isRounded: true,
         | 
| 77 | 
            +
                  __css: css,
         | 
| 78 | 
            +
                  ...rest
         | 
| 79 | 
            +
                }
         | 
| 80 | 
            +
              );
         | 
| 81 | 
            +
            });
         | 
| 82 | 
            +
             | 
| 83 | 
            +
            export {
         | 
| 84 | 
            +
              CarouselControlPrev,
         | 
| 85 | 
            +
              CarouselControlNext
         | 
| 86 | 
            +
            };
         | 
| 87 | 
            +
            //# sourceMappingURL=chunk-DDY7Q2IV.mjs.map
         | 
| @@ -0,0 +1 @@ | |
| 1 | 
            +
            {"version":3,"sources":["../src/carousel-control.tsx"],"sourcesContent":["import type { IconButtonProps } from \"@yamada-ui/button\"\nimport { IconButton } from \"@yamada-ui/button\"\nimport type { CSSUIObject } from \"@yamada-ui/core\"\nimport { forwardRef, useColorModeValue } from \"@yamada-ui/core\"\nimport { ChevronIcon } from \"@yamada-ui/icon\"\nimport { cx } from \"@yamada-ui/utils\"\nimport { useCarouselContext, useCarouselControl } from \"./use-carousel\"\n\nexport type CarouselControlProps = IconButtonProps\n\nexport const CarouselControlPrev = forwardRef<CarouselControlProps, \"button\">(\n  ({ className, ...rest }, ref) => {\n    const { orientation } = useCarouselContext()\n\n    const { getControlProps } = useCarouselControl({ operation: \"prev\" })\n\n    return (\n      <CarouselControl\n        operation=\"prev\"\n        className={cx(\"ui-carousel__control--prev\", className)}\n        aria-label=\"Go to previous slide\"\n        icon={\n          <ChevronIcon\n            __css={{\n              fontSize: \"1.5em\",\n              transform:\n                orientation === \"vertical\" ? \"rotate(180deg)\" : \"rotate(90deg)\",\n            }}\n          />\n        }\n        {...getControlProps(rest, ref)}\n      />\n    )\n  },\n)\n\nexport const CarouselControlNext = forwardRef<CarouselControlProps, \"button\">(\n  ({ className, ...rest }, ref) => {\n    const { orientation } = useCarouselContext()\n\n    const { getControlProps } = useCarouselControl({ operation: \"next\" })\n\n    return (\n      <CarouselControl\n        operation=\"next\"\n        className={cx(\"ui-carousel__control--next\", className)}\n        aria-label=\"Go to next slide\"\n        icon={\n          <ChevronIcon\n            __css={{\n              fontSize: \"1.5em\",\n              transform:\n                orientation === \"vertical\" ? \"rotate(0deg)\" : \"rotate(-90deg)\",\n            }}\n          />\n        }\n        {...getControlProps(rest, ref)}\n      />\n    )\n  },\n)\n\nconst CarouselControl = forwardRef<\n  CarouselControlProps & { operation: \"prev\" | \"next\" },\n  \"button\"\n>(({ className, operation, ...rest }, ref) => {\n  const { styles } = useCarouselContext()\n  const colorScheme = useColorModeValue(\"whiteAlpha\", \"blackAlpha\")\n\n  const css: CSSUIObject = {\n    position: \"absolute\",\n    zIndex: \"fallback(kurillin, 9)\",\n    ...styles.control,\n    ...styles[operation],\n  }\n\n  return (\n    <IconButton\n      ref={ref}\n      className={cx(\"ui-carousel__control\", className)}\n      colorScheme={colorScheme}\n      isRounded\n      __css={css}\n      {...rest}\n    />\n  )\n})\n"],"mappings":";;;;;;;AACA,SAAS,kBAAkB;AAE3B,SAAS,YAAY,yBAAyB;AAC9C,SAAS,mBAAmB;AAC5B,SAAS,UAAU;AAiBT;AAZH,IAAM,sBAAsB;AAAA,EACjC,CAAC,EAAE,WAAW,GAAG,KAAK,GAAG,QAAQ;AAC/B,UAAM,EAAE,YAAY,IAAI,mBAAmB;AAE3C,UAAM,EAAE,gBAAgB,IAAI,mBAAmB,EAAE,WAAW,OAAO,CAAC;AAEpE,WACE;AAAA,MAAC;AAAA;AAAA,QACC,WAAU;AAAA,QACV,WAAW,GAAG,8BAA8B,SAAS;AAAA,QACrD,cAAW;AAAA,QACX,MACE;AAAA,UAAC;AAAA;AAAA,YACC,OAAO;AAAA,cACL,UAAU;AAAA,cACV,WACE,gBAAgB,aAAa,mBAAmB;AAAA,YACpD;AAAA;AAAA,QACF;AAAA,QAED,GAAG,gBAAgB,MAAM,GAAG;AAAA;AAAA,IAC/B;AAAA,EAEJ;AACF;AAEO,IAAM,sBAAsB;AAAA,EACjC,CAAC,EAAE,WAAW,GAAG,KAAK,GAAG,QAAQ;AAC/B,UAAM,EAAE,YAAY,IAAI,mBAAmB;AAE3C,UAAM,EAAE,gBAAgB,IAAI,mBAAmB,EAAE,WAAW,OAAO,CAAC;AAEpE,WACE;AAAA,MAAC;AAAA;AAAA,QACC,WAAU;AAAA,QACV,WAAW,GAAG,8BAA8B,SAAS;AAAA,QACrD,cAAW;AAAA,QACX,MACE;AAAA,UAAC;AAAA;AAAA,YACC,OAAO;AAAA,cACL,UAAU;AAAA,cACV,WACE,gBAAgB,aAAa,iBAAiB;AAAA,YAClD;AAAA;AAAA,QACF;AAAA,QAED,GAAG,gBAAgB,MAAM,GAAG;AAAA;AAAA,IAC/B;AAAA,EAEJ;AACF;AAEA,IAAM,kBAAkB,WAGtB,CAAC,EAAE,WAAW,WAAW,GAAG,KAAK,GAAG,QAAQ;AAC5C,QAAM,EAAE,OAAO,IAAI,mBAAmB;AACtC,QAAM,cAAc,kBAAkB,cAAc,YAAY;AAEhE,QAAM,MAAmB;AAAA,IACvB,UAAU;AAAA,IACV,QAAQ;AAAA,IACR,GAAG,OAAO;AAAA,IACV,GAAG,OAAO,SAAS;AAAA,EACrB;AAEA,SACE;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA,WAAW,GAAG,wBAAwB,SAAS;AAAA,MAC/C;AAAA,MACA,WAAS;AAAA,MACT,OAAO;AAAA,MACN,GAAG;AAAA;AAAA,EACN;AAEJ,CAAC;","names":[]}
         | 
| @@ -0,0 +1,260 @@ | |
| 1 | 
            +
            "use client"
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            // src/use-carousel.ts
         | 
| 4 | 
            +
            import { layoutStyleProperties } from "@yamada-ui/core";
         | 
| 5 | 
            +
            import { useControllableState } from "@yamada-ui/use-controllable-state";
         | 
| 6 | 
            +
            import {
         | 
| 7 | 
            +
              createContext,
         | 
| 8 | 
            +
              dataAttr,
         | 
| 9 | 
            +
              handlerAll,
         | 
| 10 | 
            +
              splitObject,
         | 
| 11 | 
            +
              useUpdateEffect
         | 
| 12 | 
            +
            } from "@yamada-ui/utils";
         | 
| 13 | 
            +
            import useEmblaCarousel from "embla-carousel-react";
         | 
| 14 | 
            +
            import { Children, useCallback, useEffect, useRef, useState } from "react";
         | 
| 15 | 
            +
            var [CarouselProvider, useCarouselContext] = createContext({
         | 
| 16 | 
            +
              name: "CarouselContext",
         | 
| 17 | 
            +
              errorMessage: `useCarouselContext returned is 'undefined'. Seems you forgot to wrap the components in "<Carousel />"`
         | 
| 18 | 
            +
            });
         | 
| 19 | 
            +
            var useCarousel = ({
         | 
| 20 | 
            +
              index,
         | 
| 21 | 
            +
              defaultIndex = 0,
         | 
| 22 | 
            +
              onChange,
         | 
| 23 | 
            +
              align = "center",
         | 
| 24 | 
            +
              orientation = "horizontal",
         | 
| 25 | 
            +
              autoplay = false,
         | 
| 26 | 
            +
              stopMouseEnterAutoplay = true,
         | 
| 27 | 
            +
              loop = true,
         | 
| 28 | 
            +
              speed = 10,
         | 
| 29 | 
            +
              delay = 4e3,
         | 
| 30 | 
            +
              gap = "fallback(4, 1rem)",
         | 
| 31 | 
            +
              slidesToScroll = 1,
         | 
| 32 | 
            +
              draggable = true,
         | 
| 33 | 
            +
              dragFree = false,
         | 
| 34 | 
            +
              inViewThreshold = 0,
         | 
| 35 | 
            +
              skipSnaps = false,
         | 
| 36 | 
            +
              containScroll = "",
         | 
| 37 | 
            +
              slideSize = "100%",
         | 
| 38 | 
            +
              includeGapInSize = true,
         | 
| 39 | 
            +
              onScrollProgress,
         | 
| 40 | 
            +
              children,
         | 
| 41 | 
            +
              ...rest
         | 
| 42 | 
            +
            }) => {
         | 
| 43 | 
            +
              const computedProps = splitObject(rest, layoutStyleProperties);
         | 
| 44 | 
            +
              const [selectedIndex, setSelectedIndex] = useControllableState({
         | 
| 45 | 
            +
                value: index,
         | 
| 46 | 
            +
                defaultValue: defaultIndex,
         | 
| 47 | 
            +
                onChange
         | 
| 48 | 
            +
              });
         | 
| 49 | 
            +
              const isVertical = orientation === "vertical";
         | 
| 50 | 
            +
              const [carouselRef, carousel] = useEmblaCarousel({
         | 
| 51 | 
            +
                axis: isVertical ? "y" : "x",
         | 
| 52 | 
            +
                startIndex: defaultIndex,
         | 
| 53 | 
            +
                loop,
         | 
| 54 | 
            +
                align,
         | 
| 55 | 
            +
                slidesToScroll,
         | 
| 56 | 
            +
                draggable,
         | 
| 57 | 
            +
                dragFree,
         | 
| 58 | 
            +
                speed,
         | 
| 59 | 
            +
                inViewThreshold,
         | 
| 60 | 
            +
                skipSnaps,
         | 
| 61 | 
            +
                containScroll
         | 
| 62 | 
            +
              });
         | 
| 63 | 
            +
              const [indexes, setIndexes] = useState([]);
         | 
| 64 | 
            +
              const [isMouseEnter, setIsMouseEnter] = useState(false);
         | 
| 65 | 
            +
              const timeoutId = useRef(void 0);
         | 
| 66 | 
            +
              const onScroll = useCallback(() => {
         | 
| 67 | 
            +
                if (!carousel)
         | 
| 68 | 
            +
                  return;
         | 
| 69 | 
            +
                const progress = Math.round(
         | 
| 70 | 
            +
                  Math.max(0, Math.min(1, carousel.scrollProgress())) * 100
         | 
| 71 | 
            +
                );
         | 
| 72 | 
            +
                onScrollProgress == null ? void 0 : onScrollProgress(progress);
         | 
| 73 | 
            +
              }, [carousel, onScrollProgress]);
         | 
| 74 | 
            +
              const onSelect = useCallback(() => {
         | 
| 75 | 
            +
                if (!carousel)
         | 
| 76 | 
            +
                  return;
         | 
| 77 | 
            +
                const index2 = carousel.selectedScrollSnap();
         | 
| 78 | 
            +
                setSelectedIndex(index2);
         | 
| 79 | 
            +
              }, [carousel, setSelectedIndex]);
         | 
| 80 | 
            +
              useEffect(() => {
         | 
| 81 | 
            +
                const isStop = isMouseEnter && stopMouseEnterAutoplay;
         | 
| 82 | 
            +
                const isLast = !(carousel == null ? void 0 : carousel.canScrollNext());
         | 
| 83 | 
            +
                if (carousel && autoplay && !isStop && !isLast) {
         | 
| 84 | 
            +
                  timeoutId.current = setInterval(() => {
         | 
| 85 | 
            +
                    carousel.scrollNext();
         | 
| 86 | 
            +
                  }, delay);
         | 
| 87 | 
            +
                } else {
         | 
| 88 | 
            +
                  if (timeoutId.current)
         | 
| 89 | 
            +
                    clearInterval(timeoutId.current);
         | 
| 90 | 
            +
                  timeoutId.current = void 0;
         | 
| 91 | 
            +
                }
         | 
| 92 | 
            +
                return () => {
         | 
| 93 | 
            +
                  if (timeoutId.current)
         | 
| 94 | 
            +
                    clearInterval(timeoutId.current);
         | 
| 95 | 
            +
                };
         | 
| 96 | 
            +
              }, [
         | 
| 97 | 
            +
                autoplay,
         | 
| 98 | 
            +
                delay,
         | 
| 99 | 
            +
                stopMouseEnterAutoplay,
         | 
| 100 | 
            +
                carousel,
         | 
| 101 | 
            +
                isMouseEnter,
         | 
| 102 | 
            +
                loop,
         | 
| 103 | 
            +
                selectedIndex
         | 
| 104 | 
            +
              ]);
         | 
| 105 | 
            +
              useUpdateEffect(() => {
         | 
| 106 | 
            +
                if (!carousel)
         | 
| 107 | 
            +
                  return;
         | 
| 108 | 
            +
                carousel.reInit();
         | 
| 109 | 
            +
                const snapList = carousel.scrollSnapList();
         | 
| 110 | 
            +
                const indexes2 = snapList.map((_, i) => i);
         | 
| 111 | 
            +
                setIndexes(indexes2);
         | 
| 112 | 
            +
              }, [
         | 
| 113 | 
            +
                Children.toArray(children).length,
         | 
| 114 | 
            +
                align,
         | 
| 115 | 
            +
                orientation,
         | 
| 116 | 
            +
                loop,
         | 
| 117 | 
            +
                speed,
         | 
| 118 | 
            +
                gap,
         | 
| 119 | 
            +
                slidesToScroll,
         | 
| 120 | 
            +
                draggable,
         | 
| 121 | 
            +
                dragFree,
         | 
| 122 | 
            +
                inViewThreshold,
         | 
| 123 | 
            +
                skipSnaps,
         | 
| 124 | 
            +
                containScroll,
         | 
| 125 | 
            +
                slideSize,
         | 
| 126 | 
            +
                includeGapInSize
         | 
| 127 | 
            +
              ]);
         | 
| 128 | 
            +
              useUpdateEffect(() => {
         | 
| 129 | 
            +
                if (!carousel)
         | 
| 130 | 
            +
                  return;
         | 
| 131 | 
            +
                const snapList = carousel.scrollSnapList();
         | 
| 132 | 
            +
                const indexes2 = snapList.map((_, i) => i);
         | 
| 133 | 
            +
                setIndexes(indexes2);
         | 
| 134 | 
            +
              }, [carousel]);
         | 
| 135 | 
            +
              useUpdateEffect(() => {
         | 
| 136 | 
            +
                if (carousel) {
         | 
| 137 | 
            +
                  carousel.on("select", onSelect);
         | 
| 138 | 
            +
                  carousel.on("scroll", onScroll);
         | 
| 139 | 
            +
                  onScroll();
         | 
| 140 | 
            +
                  return () => {
         | 
| 141 | 
            +
                    carousel.off("select", onSelect);
         | 
| 142 | 
            +
                    carousel.off("scroll", onScroll);
         | 
| 143 | 
            +
                  };
         | 
| 144 | 
            +
                }
         | 
| 145 | 
            +
              }, [carousel, onScroll]);
         | 
| 146 | 
            +
              const getContainerProps = useCallback(
         | 
| 147 | 
            +
                (props = {}, ref = null) => ({
         | 
| 148 | 
            +
                  ...computedProps[0],
         | 
| 149 | 
            +
                  ...props,
         | 
| 150 | 
            +
                  ref,
         | 
| 151 | 
            +
                  onMouseEnter: handlerAll(props.onMouseEnter, () => {
         | 
| 152 | 
            +
                    setIsMouseEnter(true);
         | 
| 153 | 
            +
                  }),
         | 
| 154 | 
            +
                  onMouseLeave: handlerAll(props.onMouseLeave, () => {
         | 
| 155 | 
            +
                    setIsMouseEnter(false);
         | 
| 156 | 
            +
                  })
         | 
| 157 | 
            +
                }),
         | 
| 158 | 
            +
                [computedProps]
         | 
| 159 | 
            +
              );
         | 
| 160 | 
            +
              const getSlidesProps = useCallback(
         | 
| 161 | 
            +
                (props = {}) => ({
         | 
| 162 | 
            +
                  ...computedProps[1],
         | 
| 163 | 
            +
                  ...props,
         | 
| 164 | 
            +
                  ref: carouselRef
         | 
| 165 | 
            +
                }),
         | 
| 166 | 
            +
                [computedProps, carouselRef]
         | 
| 167 | 
            +
              );
         | 
| 168 | 
            +
              return {
         | 
| 169 | 
            +
                carousel,
         | 
| 170 | 
            +
                children,
         | 
| 171 | 
            +
                indexes,
         | 
| 172 | 
            +
                selectedIndex,
         | 
| 173 | 
            +
                orientation,
         | 
| 174 | 
            +
                slideSize,
         | 
| 175 | 
            +
                gap,
         | 
| 176 | 
            +
                slidesToScroll,
         | 
| 177 | 
            +
                includeGapInSize,
         | 
| 178 | 
            +
                getContainerProps,
         | 
| 179 | 
            +
                getSlidesProps
         | 
| 180 | 
            +
              };
         | 
| 181 | 
            +
            };
         | 
| 182 | 
            +
            var useCarouselSlide = ({ index }) => {
         | 
| 183 | 
            +
              const { selectedIndex, slidesToScroll } = useCarouselContext();
         | 
| 184 | 
            +
              index = Math.floor((index != null ? index : 0) / (slidesToScroll != null ? slidesToScroll : 1));
         | 
| 185 | 
            +
              const isSelected = index === selectedIndex;
         | 
| 186 | 
            +
              const getSlideProps = useCallback(
         | 
| 187 | 
            +
                (props = {}) => ({
         | 
| 188 | 
            +
                  ...props,
         | 
| 189 | 
            +
                  "data-index": index,
         | 
| 190 | 
            +
                  "data-selected": dataAttr(isSelected)
         | 
| 191 | 
            +
                }),
         | 
| 192 | 
            +
                [isSelected, index]
         | 
| 193 | 
            +
              );
         | 
| 194 | 
            +
              return { getSlideProps };
         | 
| 195 | 
            +
            };
         | 
| 196 | 
            +
            var useCarouselControl = ({
         | 
| 197 | 
            +
              operation,
         | 
| 198 | 
            +
              ...rest
         | 
| 199 | 
            +
            }) => {
         | 
| 200 | 
            +
              var _a, _b;
         | 
| 201 | 
            +
              const { carousel } = useCarouselContext();
         | 
| 202 | 
            +
              const isPrev = operation === "prev";
         | 
| 203 | 
            +
              const disabled = (_b = (_a = rest.disabled) != null ? _a : rest.isDisabled) != null ? _b : isPrev ? !(carousel == null ? void 0 : carousel.canScrollPrev()) : !(carousel == null ? void 0 : carousel.canScrollNext());
         | 
| 204 | 
            +
              const onClick = useCallback(() => {
         | 
| 205 | 
            +
                if (!carousel)
         | 
| 206 | 
            +
                  return;
         | 
| 207 | 
            +
                if (isPrev) {
         | 
| 208 | 
            +
                  carousel.scrollPrev();
         | 
| 209 | 
            +
                } else {
         | 
| 210 | 
            +
                  carousel.scrollNext();
         | 
| 211 | 
            +
                }
         | 
| 212 | 
            +
              }, [carousel, isPrev]);
         | 
| 213 | 
            +
              const getControlProps = useCallback(
         | 
| 214 | 
            +
                (props = {}, ref = null) => ({
         | 
| 215 | 
            +
                  ...props,
         | 
| 216 | 
            +
                  ref,
         | 
| 217 | 
            +
                  disabled,
         | 
| 218 | 
            +
                  onClick: handlerAll(props.onClick, onClick)
         | 
| 219 | 
            +
                }),
         | 
| 220 | 
            +
                [disabled, onClick]
         | 
| 221 | 
            +
              );
         | 
| 222 | 
            +
              return { getControlProps };
         | 
| 223 | 
            +
            };
         | 
| 224 | 
            +
            var useCarouselIndicators = () => {
         | 
| 225 | 
            +
              const { selectedIndex, carousel, indexes } = useCarouselContext();
         | 
| 226 | 
            +
              const onClick = useCallback(
         | 
| 227 | 
            +
                (ev, index) => {
         | 
| 228 | 
            +
                  if (!carousel)
         | 
| 229 | 
            +
                    return;
         | 
| 230 | 
            +
                  ev.stopPropagation();
         | 
| 231 | 
            +
                  carousel.scrollTo(index);
         | 
| 232 | 
            +
                },
         | 
| 233 | 
            +
                [carousel]
         | 
| 234 | 
            +
              );
         | 
| 235 | 
            +
              const getIndicatorProps = useCallback(
         | 
| 236 | 
            +
                ({ index, ...props }) => {
         | 
| 237 | 
            +
                  const isSelected = index === selectedIndex;
         | 
| 238 | 
            +
                  return {
         | 
| 239 | 
            +
                    "aria-label": `Go to ${index + 1} slide`,
         | 
| 240 | 
            +
                    ...props,
         | 
| 241 | 
            +
                    key: index,
         | 
| 242 | 
            +
                    "data-index": index,
         | 
| 243 | 
            +
                    "data-selected": dataAttr(isSelected),
         | 
| 244 | 
            +
                    onClick: handlerAll(props.onClick, (ev) => onClick(ev, index))
         | 
| 245 | 
            +
                  };
         | 
| 246 | 
            +
                },
         | 
| 247 | 
            +
                [onClick, selectedIndex]
         | 
| 248 | 
            +
              );
         | 
| 249 | 
            +
              return { indexes, getIndicatorProps };
         | 
| 250 | 
            +
            };
         | 
| 251 | 
            +
             | 
| 252 | 
            +
            export {
         | 
| 253 | 
            +
              CarouselProvider,
         | 
| 254 | 
            +
              useCarouselContext,
         | 
| 255 | 
            +
              useCarousel,
         | 
| 256 | 
            +
              useCarouselSlide,
         | 
| 257 | 
            +
              useCarouselControl,
         | 
| 258 | 
            +
              useCarouselIndicators
         | 
| 259 | 
            +
            };
         | 
| 260 | 
            +
            //# sourceMappingURL=chunk-QQ2HS4J4.mjs.map
         |