{"version":3,"file":"scroll-area-v3WLDhPc.mjs","sources":["../../node_modules/@radix-ui/react-scroll-area/dist/index.mjs","../../node_modules/@radix-ui/number/dist/index.mjs","../../src/components/ui/scroll-area/scroll-area.tsx"],"sourcesContent":["\"use client\";\n\n// src/scroll-area.tsx\nimport * as React2 from \"react\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { Presence } from \"@radix-ui/react-presence\";\nimport { createContextScope } from \"@radix-ui/react-context\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { useCallbackRef } from \"@radix-ui/react-use-callback-ref\";\nimport { useDirection } from \"@radix-ui/react-direction\";\nimport { useLayoutEffect } from \"@radix-ui/react-use-layout-effect\";\nimport { clamp } from \"@radix-ui/number\";\nimport { composeEventHandlers } from \"@radix-ui/primitive\";\n\n// src/use-state-machine.ts\nimport * as React from \"react\";\nfunction useStateMachine(initialState, machine) {\n  return React.useReducer((state, event) => {\n    const nextState = machine[state][event];\n    return nextState ?? state;\n  }, initialState);\n}\n\n// src/scroll-area.tsx\nimport { Fragment, jsx, jsxs } from \"react/jsx-runtime\";\nvar SCROLL_AREA_NAME = \"ScrollArea\";\nvar [createScrollAreaContext, createScrollAreaScope] = createContextScope(SCROLL_AREA_NAME);\nvar [ScrollAreaProvider, useScrollAreaContext] = createScrollAreaContext(SCROLL_AREA_NAME);\nvar ScrollArea = React2.forwardRef(\n  (props, forwardedRef) => {\n    const {\n      __scopeScrollArea,\n      type = \"hover\",\n      dir,\n      scrollHideDelay = 600,\n      ...scrollAreaProps\n    } = props;\n    const [scrollArea, setScrollArea] = React2.useState(null);\n    const [viewport, setViewport] = React2.useState(null);\n    const [content, setContent] = React2.useState(null);\n    const [scrollbarX, setScrollbarX] = React2.useState(null);\n    const [scrollbarY, setScrollbarY] = React2.useState(null);\n    const [cornerWidth, setCornerWidth] = React2.useState(0);\n    const [cornerHeight, setCornerHeight] = React2.useState(0);\n    const [scrollbarXEnabled, setScrollbarXEnabled] = React2.useState(false);\n    const [scrollbarYEnabled, setScrollbarYEnabled] = React2.useState(false);\n    const composedRefs = useComposedRefs(forwardedRef, (node) => setScrollArea(node));\n    const direction = useDirection(dir);\n    return /* @__PURE__ */ jsx(\n      ScrollAreaProvider,\n      {\n        scope: __scopeScrollArea,\n        type,\n        dir: direction,\n        scrollHideDelay,\n        scrollArea,\n        viewport,\n        onViewportChange: setViewport,\n        content,\n        onContentChange: setContent,\n        scrollbarX,\n        onScrollbarXChange: setScrollbarX,\n        scrollbarXEnabled,\n        onScrollbarXEnabledChange: setScrollbarXEnabled,\n        scrollbarY,\n        onScrollbarYChange: setScrollbarY,\n        scrollbarYEnabled,\n        onScrollbarYEnabledChange: setScrollbarYEnabled,\n        onCornerWidthChange: setCornerWidth,\n        onCornerHeightChange: setCornerHeight,\n        children: /* @__PURE__ */ jsx(\n          Primitive.div,\n          {\n            dir: direction,\n            ...scrollAreaProps,\n            ref: composedRefs,\n            style: {\n              position: \"relative\",\n              // Pass corner sizes as CSS vars to reduce re-renders of context consumers\n              [\"--radix-scroll-area-corner-width\"]: cornerWidth + \"px\",\n              [\"--radix-scroll-area-corner-height\"]: cornerHeight + \"px\",\n              ...props.style\n            }\n          }\n        )\n      }\n    );\n  }\n);\nScrollArea.displayName = SCROLL_AREA_NAME;\nvar VIEWPORT_NAME = \"ScrollAreaViewport\";\nvar ScrollAreaViewport = React2.forwardRef(\n  (props, forwardedRef) => {\n    const { __scopeScrollArea, children, nonce, ...viewportProps } = props;\n    const context = useScrollAreaContext(VIEWPORT_NAME, __scopeScrollArea);\n    const ref = React2.useRef(null);\n    const composedRefs = useComposedRefs(forwardedRef, ref, context.onViewportChange);\n    return /* @__PURE__ */ jsxs(Fragment, { children: [\n      /* @__PURE__ */ jsx(\n        \"style\",\n        {\n          dangerouslySetInnerHTML: {\n            __html: `[data-radix-scroll-area-viewport]{scrollbar-width:none;-ms-overflow-style:none;-webkit-overflow-scrolling:touch;}[data-radix-scroll-area-viewport]::-webkit-scrollbar{display:none}`\n          },\n          nonce\n        }\n      ),\n      /* @__PURE__ */ jsx(\n        Primitive.div,\n        {\n          \"data-radix-scroll-area-viewport\": \"\",\n          ...viewportProps,\n          ref: composedRefs,\n          style: {\n            /**\n             * We don't support `visible` because the intention is to have at least one scrollbar\n             * if this component is used and `visible` will behave like `auto` in that case\n             * https://developer.mozilla.org/en-US/docs/Web/CSS/overflow#description\n             *\n             * We don't handle `auto` because the intention is for the native implementation\n             * to be hidden if using this component. We just want to ensure the node is scrollable\n             * so could have used either `scroll` or `auto` here. We picked `scroll` to prevent\n             * the browser from having to work out whether to render native scrollbars or not,\n             * we tell it to with the intention of hiding them in CSS.\n             */\n            overflowX: context.scrollbarXEnabled ? \"scroll\" : \"hidden\",\n            overflowY: context.scrollbarYEnabled ? \"scroll\" : \"hidden\",\n            ...props.style\n          },\n          children: /* @__PURE__ */ jsx(\"div\", { ref: context.onContentChange, style: { minWidth: \"100%\", display: \"table\" }, children })\n        }\n      )\n    ] });\n  }\n);\nScrollAreaViewport.displayName = VIEWPORT_NAME;\nvar SCROLLBAR_NAME = \"ScrollAreaScrollbar\";\nvar ScrollAreaScrollbar = React2.forwardRef(\n  (props, forwardedRef) => {\n    const { forceMount, ...scrollbarProps } = props;\n    const context = useScrollAreaContext(SCROLLBAR_NAME, props.__scopeScrollArea);\n    const { onScrollbarXEnabledChange, onScrollbarYEnabledChange } = context;\n    const isHorizontal = props.orientation === \"horizontal\";\n    React2.useEffect(() => {\n      isHorizontal ? onScrollbarXEnabledChange(true) : onScrollbarYEnabledChange(true);\n      return () => {\n        isHorizontal ? onScrollbarXEnabledChange(false) : onScrollbarYEnabledChange(false);\n      };\n    }, [isHorizontal, onScrollbarXEnabledChange, onScrollbarYEnabledChange]);\n    return context.type === \"hover\" ? /* @__PURE__ */ jsx(ScrollAreaScrollbarHover, { ...scrollbarProps, ref: forwardedRef, forceMount }) : context.type === \"scroll\" ? /* @__PURE__ */ jsx(ScrollAreaScrollbarScroll, { ...scrollbarProps, ref: forwardedRef, forceMount }) : context.type === \"auto\" ? /* @__PURE__ */ jsx(ScrollAreaScrollbarAuto, { ...scrollbarProps, ref: forwardedRef, forceMount }) : context.type === \"always\" ? /* @__PURE__ */ jsx(ScrollAreaScrollbarVisible, { ...scrollbarProps, ref: forwardedRef }) : null;\n  }\n);\nScrollAreaScrollbar.displayName = SCROLLBAR_NAME;\nvar ScrollAreaScrollbarHover = React2.forwardRef((props, forwardedRef) => {\n  const { forceMount, ...scrollbarProps } = props;\n  const context = useScrollAreaContext(SCROLLBAR_NAME, props.__scopeScrollArea);\n  const [visible, setVisible] = React2.useState(false);\n  React2.useEffect(() => {\n    const scrollArea = context.scrollArea;\n    let hideTimer = 0;\n    if (scrollArea) {\n      const handlePointerEnter = () => {\n        window.clearTimeout(hideTimer);\n        setVisible(true);\n      };\n      const handlePointerLeave = () => {\n        hideTimer = window.setTimeout(() => setVisible(false), context.scrollHideDelay);\n      };\n      scrollArea.addEventListener(\"pointerenter\", handlePointerEnter);\n      scrollArea.addEventListener(\"pointerleave\", handlePointerLeave);\n      return () => {\n        window.clearTimeout(hideTimer);\n        scrollArea.removeEventListener(\"pointerenter\", handlePointerEnter);\n        scrollArea.removeEventListener(\"pointerleave\", handlePointerLeave);\n      };\n    }\n  }, [context.scrollArea, context.scrollHideDelay]);\n  return /* @__PURE__ */ jsx(Presence, { present: forceMount || visible, children: /* @__PURE__ */ jsx(\n    ScrollAreaScrollbarAuto,\n    {\n      \"data-state\": visible ? \"visible\" : \"hidden\",\n      ...scrollbarProps,\n      ref: forwardedRef\n    }\n  ) });\n});\nvar ScrollAreaScrollbarScroll = React2.forwardRef((props, forwardedRef) => {\n  const { forceMount, ...scrollbarProps } = props;\n  const context = useScrollAreaContext(SCROLLBAR_NAME, props.__scopeScrollArea);\n  const isHorizontal = props.orientation === \"horizontal\";\n  const debounceScrollEnd = useDebounceCallback(() => send(\"SCROLL_END\"), 100);\n  const [state, send] = useStateMachine(\"hidden\", {\n    hidden: {\n      SCROLL: \"scrolling\"\n    },\n    scrolling: {\n      SCROLL_END: \"idle\",\n      POINTER_ENTER: \"interacting\"\n    },\n    interacting: {\n      SCROLL: \"interacting\",\n      POINTER_LEAVE: \"idle\"\n    },\n    idle: {\n      HIDE: \"hidden\",\n      SCROLL: \"scrolling\",\n      POINTER_ENTER: \"interacting\"\n    }\n  });\n  React2.useEffect(() => {\n    if (state === \"idle\") {\n      const hideTimer = window.setTimeout(() => send(\"HIDE\"), context.scrollHideDelay);\n      return () => window.clearTimeout(hideTimer);\n    }\n  }, [state, context.scrollHideDelay, send]);\n  React2.useEffect(() => {\n    const viewport = context.viewport;\n    const scrollDirection = isHorizontal ? \"scrollLeft\" : \"scrollTop\";\n    if (viewport) {\n      let prevScrollPos = viewport[scrollDirection];\n      const handleScroll = () => {\n        const scrollPos = viewport[scrollDirection];\n        const hasScrollInDirectionChanged = prevScrollPos !== scrollPos;\n        if (hasScrollInDirectionChanged) {\n          send(\"SCROLL\");\n          debounceScrollEnd();\n        }\n        prevScrollPos = scrollPos;\n      };\n      viewport.addEventListener(\"scroll\", handleScroll);\n      return () => viewport.removeEventListener(\"scroll\", handleScroll);\n    }\n  }, [context.viewport, isHorizontal, send, debounceScrollEnd]);\n  return /* @__PURE__ */ jsx(Presence, { present: forceMount || state !== \"hidden\", children: /* @__PURE__ */ jsx(\n    ScrollAreaScrollbarVisible,\n    {\n      \"data-state\": state === \"hidden\" ? \"hidden\" : \"visible\",\n      ...scrollbarProps,\n      ref: forwardedRef,\n      onPointerEnter: composeEventHandlers(props.onPointerEnter, () => send(\"POINTER_ENTER\")),\n      onPointerLeave: composeEventHandlers(props.onPointerLeave, () => send(\"POINTER_LEAVE\"))\n    }\n  ) });\n});\nvar ScrollAreaScrollbarAuto = React2.forwardRef((props, forwardedRef) => {\n  const context = useScrollAreaContext(SCROLLBAR_NAME, props.__scopeScrollArea);\n  const { forceMount, ...scrollbarProps } = props;\n  const [visible, setVisible] = React2.useState(false);\n  const isHorizontal = props.orientation === \"horizontal\";\n  const handleResize = useDebounceCallback(() => {\n    if (context.viewport) {\n      const isOverflowX = context.viewport.offsetWidth < context.viewport.scrollWidth;\n      const isOverflowY = context.viewport.offsetHeight < context.viewport.scrollHeight;\n      setVisible(isHorizontal ? isOverflowX : isOverflowY);\n    }\n  }, 10);\n  useResizeObserver(context.viewport, handleResize);\n  useResizeObserver(context.content, handleResize);\n  return /* @__PURE__ */ jsx(Presence, { present: forceMount || visible, children: /* @__PURE__ */ jsx(\n    ScrollAreaScrollbarVisible,\n    {\n      \"data-state\": visible ? \"visible\" : \"hidden\",\n      ...scrollbarProps,\n      ref: forwardedRef\n    }\n  ) });\n});\nvar ScrollAreaScrollbarVisible = React2.forwardRef((props, forwardedRef) => {\n  const { orientation = \"vertical\", ...scrollbarProps } = props;\n  const context = useScrollAreaContext(SCROLLBAR_NAME, props.__scopeScrollArea);\n  const thumbRef = React2.useRef(null);\n  const pointerOffsetRef = React2.useRef(0);\n  const [sizes, setSizes] = React2.useState({\n    content: 0,\n    viewport: 0,\n    scrollbar: { size: 0, paddingStart: 0, paddingEnd: 0 }\n  });\n  const thumbRatio = getThumbRatio(sizes.viewport, sizes.content);\n  const commonProps = {\n    ...scrollbarProps,\n    sizes,\n    onSizesChange: setSizes,\n    hasThumb: Boolean(thumbRatio > 0 && thumbRatio < 1),\n    onThumbChange: (thumb) => thumbRef.current = thumb,\n    onThumbPointerUp: () => pointerOffsetRef.current = 0,\n    onThumbPointerDown: (pointerPos) => pointerOffsetRef.current = pointerPos\n  };\n  function getScrollPosition(pointerPos, dir) {\n    return getScrollPositionFromPointer(pointerPos, pointerOffsetRef.current, sizes, dir);\n  }\n  if (orientation === \"horizontal\") {\n    return /* @__PURE__ */ jsx(\n      ScrollAreaScrollbarX,\n      {\n        ...commonProps,\n        ref: forwardedRef,\n        onThumbPositionChange: () => {\n          if (context.viewport && thumbRef.current) {\n            const scrollPos = context.viewport.scrollLeft;\n            const offset = getThumbOffsetFromScroll(scrollPos, sizes, context.dir);\n            thumbRef.current.style.transform = `translate3d(${offset}px, 0, 0)`;\n          }\n        },\n        onWheelScroll: (scrollPos) => {\n          if (context.viewport) context.viewport.scrollLeft = scrollPos;\n        },\n        onDragScroll: (pointerPos) => {\n          if (context.viewport) {\n            context.viewport.scrollLeft = getScrollPosition(pointerPos, context.dir);\n          }\n        }\n      }\n    );\n  }\n  if (orientation === \"vertical\") {\n    return /* @__PURE__ */ jsx(\n      ScrollAreaScrollbarY,\n      {\n        ...commonProps,\n        ref: forwardedRef,\n        onThumbPositionChange: () => {\n          if (context.viewport && thumbRef.current) {\n            const scrollPos = context.viewport.scrollTop;\n            const offset = getThumbOffsetFromScroll(scrollPos, sizes);\n            thumbRef.current.style.transform = `translate3d(0, ${offset}px, 0)`;\n          }\n        },\n        onWheelScroll: (scrollPos) => {\n          if (context.viewport) context.viewport.scrollTop = scrollPos;\n        },\n        onDragScroll: (pointerPos) => {\n          if (context.viewport) context.viewport.scrollTop = getScrollPosition(pointerPos);\n        }\n      }\n    );\n  }\n  return null;\n});\nvar ScrollAreaScrollbarX = React2.forwardRef((props, forwardedRef) => {\n  const { sizes, onSizesChange, ...scrollbarProps } = props;\n  const context = useScrollAreaContext(SCROLLBAR_NAME, props.__scopeScrollArea);\n  const [computedStyle, setComputedStyle] = React2.useState();\n  const ref = React2.useRef(null);\n  const composeRefs = useComposedRefs(forwardedRef, ref, context.onScrollbarXChange);\n  React2.useEffect(() => {\n    if (ref.current) setComputedStyle(getComputedStyle(ref.current));\n  }, [ref]);\n  return /* @__PURE__ */ jsx(\n    ScrollAreaScrollbarImpl,\n    {\n      \"data-orientation\": \"horizontal\",\n      ...scrollbarProps,\n      ref: composeRefs,\n      sizes,\n      style: {\n        bottom: 0,\n        left: context.dir === \"rtl\" ? \"var(--radix-scroll-area-corner-width)\" : 0,\n        right: context.dir === \"ltr\" ? \"var(--radix-scroll-area-corner-width)\" : 0,\n        [\"--radix-scroll-area-thumb-width\"]: getThumbSize(sizes) + \"px\",\n        ...props.style\n      },\n      onThumbPointerDown: (pointerPos) => props.onThumbPointerDown(pointerPos.x),\n      onDragScroll: (pointerPos) => props.onDragScroll(pointerPos.x),\n      onWheelScroll: (event, maxScrollPos) => {\n        if (context.viewport) {\n          const scrollPos = context.viewport.scrollLeft + event.deltaX;\n          props.onWheelScroll(scrollPos);\n          if (isScrollingWithinScrollbarBounds(scrollPos, maxScrollPos)) {\n            event.preventDefault();\n          }\n        }\n      },\n      onResize: () => {\n        if (ref.current && context.viewport && computedStyle) {\n          onSizesChange({\n            content: context.viewport.scrollWidth,\n            viewport: context.viewport.offsetWidth,\n            scrollbar: {\n              size: ref.current.clientWidth,\n              paddingStart: toInt(computedStyle.paddingLeft),\n              paddingEnd: toInt(computedStyle.paddingRight)\n            }\n          });\n        }\n      }\n    }\n  );\n});\nvar ScrollAreaScrollbarY = React2.forwardRef((props, forwardedRef) => {\n  const { sizes, onSizesChange, ...scrollbarProps } = props;\n  const context = useScrollAreaContext(SCROLLBAR_NAME, props.__scopeScrollArea);\n  const [computedStyle, setComputedStyle] = React2.useState();\n  const ref = React2.useRef(null);\n  const composeRefs = useComposedRefs(forwardedRef, ref, context.onScrollbarYChange);\n  React2.useEffect(() => {\n    if (ref.current) setComputedStyle(getComputedStyle(ref.current));\n  }, [ref]);\n  return /* @__PURE__ */ jsx(\n    ScrollAreaScrollbarImpl,\n    {\n      \"data-orientation\": \"vertical\",\n      ...scrollbarProps,\n      ref: composeRefs,\n      sizes,\n      style: {\n        top: 0,\n        right: context.dir === \"ltr\" ? 0 : void 0,\n        left: context.dir === \"rtl\" ? 0 : void 0,\n        bottom: \"var(--radix-scroll-area-corner-height)\",\n        [\"--radix-scroll-area-thumb-height\"]: getThumbSize(sizes) + \"px\",\n        ...props.style\n      },\n      onThumbPointerDown: (pointerPos) => props.onThumbPointerDown(pointerPos.y),\n      onDragScroll: (pointerPos) => props.onDragScroll(pointerPos.y),\n      onWheelScroll: (event, maxScrollPos) => {\n        if (context.viewport) {\n          const scrollPos = context.viewport.scrollTop + event.deltaY;\n          props.onWheelScroll(scrollPos);\n          if (isScrollingWithinScrollbarBounds(scrollPos, maxScrollPos)) {\n            event.preventDefault();\n          }\n        }\n      },\n      onResize: () => {\n        if (ref.current && context.viewport && computedStyle) {\n          onSizesChange({\n            content: context.viewport.scrollHeight,\n            viewport: context.viewport.offsetHeight,\n            scrollbar: {\n              size: ref.current.clientHeight,\n              paddingStart: toInt(computedStyle.paddingTop),\n              paddingEnd: toInt(computedStyle.paddingBottom)\n            }\n          });\n        }\n      }\n    }\n  );\n});\nvar [ScrollbarProvider, useScrollbarContext] = createScrollAreaContext(SCROLLBAR_NAME);\nvar ScrollAreaScrollbarImpl = React2.forwardRef((props, forwardedRef) => {\n  const {\n    __scopeScrollArea,\n    sizes,\n    hasThumb,\n    onThumbChange,\n    onThumbPointerUp,\n    onThumbPointerDown,\n    onThumbPositionChange,\n    onDragScroll,\n    onWheelScroll,\n    onResize,\n    ...scrollbarProps\n  } = props;\n  const context = useScrollAreaContext(SCROLLBAR_NAME, __scopeScrollArea);\n  const [scrollbar, setScrollbar] = React2.useState(null);\n  const composeRefs = useComposedRefs(forwardedRef, (node) => setScrollbar(node));\n  const rectRef = React2.useRef(null);\n  const prevWebkitUserSelectRef = React2.useRef(\"\");\n  const viewport = context.viewport;\n  const maxScrollPos = sizes.content - sizes.viewport;\n  const handleWheelScroll = useCallbackRef(onWheelScroll);\n  const handleThumbPositionChange = useCallbackRef(onThumbPositionChange);\n  const handleResize = useDebounceCallback(onResize, 10);\n  function handleDragScroll(event) {\n    if (rectRef.current) {\n      const x = event.clientX - rectRef.current.left;\n      const y = event.clientY - rectRef.current.top;\n      onDragScroll({ x, y });\n    }\n  }\n  React2.useEffect(() => {\n    const handleWheel = (event) => {\n      const element = event.target;\n      const isScrollbarWheel = scrollbar?.contains(element);\n      if (isScrollbarWheel) handleWheelScroll(event, maxScrollPos);\n    };\n    document.addEventListener(\"wheel\", handleWheel, { passive: false });\n    return () => document.removeEventListener(\"wheel\", handleWheel, { passive: false });\n  }, [viewport, scrollbar, maxScrollPos, handleWheelScroll]);\n  React2.useEffect(handleThumbPositionChange, [sizes, handleThumbPositionChange]);\n  useResizeObserver(scrollbar, handleResize);\n  useResizeObserver(context.content, handleResize);\n  return /* @__PURE__ */ jsx(\n    ScrollbarProvider,\n    {\n      scope: __scopeScrollArea,\n      scrollbar,\n      hasThumb,\n      onThumbChange: useCallbackRef(onThumbChange),\n      onThumbPointerUp: useCallbackRef(onThumbPointerUp),\n      onThumbPositionChange: handleThumbPositionChange,\n      onThumbPointerDown: useCallbackRef(onThumbPointerDown),\n      children: /* @__PURE__ */ jsx(\n        Primitive.div,\n        {\n          ...scrollbarProps,\n          ref: composeRefs,\n          style: { position: \"absolute\", ...scrollbarProps.style },\n          onPointerDown: composeEventHandlers(props.onPointerDown, (event) => {\n            const mainPointer = 0;\n            if (event.button === mainPointer) {\n              const element = event.target;\n              element.setPointerCapture(event.pointerId);\n              rectRef.current = scrollbar.getBoundingClientRect();\n              prevWebkitUserSelectRef.current = document.body.style.webkitUserSelect;\n              document.body.style.webkitUserSelect = \"none\";\n              if (context.viewport) context.viewport.style.scrollBehavior = \"auto\";\n              handleDragScroll(event);\n            }\n          }),\n          onPointerMove: composeEventHandlers(props.onPointerMove, handleDragScroll),\n          onPointerUp: composeEventHandlers(props.onPointerUp, (event) => {\n            const element = event.target;\n            if (element.hasPointerCapture(event.pointerId)) {\n              element.releasePointerCapture(event.pointerId);\n            }\n            document.body.style.webkitUserSelect = prevWebkitUserSelectRef.current;\n            if (context.viewport) context.viewport.style.scrollBehavior = \"\";\n            rectRef.current = null;\n          })\n        }\n      )\n    }\n  );\n});\nvar THUMB_NAME = \"ScrollAreaThumb\";\nvar ScrollAreaThumb = React2.forwardRef(\n  (props, forwardedRef) => {\n    const { forceMount, ...thumbProps } = props;\n    const scrollbarContext = useScrollbarContext(THUMB_NAME, props.__scopeScrollArea);\n    return /* @__PURE__ */ jsx(Presence, { present: forceMount || scrollbarContext.hasThumb, children: /* @__PURE__ */ jsx(ScrollAreaThumbImpl, { ref: forwardedRef, ...thumbProps }) });\n  }\n);\nvar ScrollAreaThumbImpl = React2.forwardRef(\n  (props, forwardedRef) => {\n    const { __scopeScrollArea, style, ...thumbProps } = props;\n    const scrollAreaContext = useScrollAreaContext(THUMB_NAME, __scopeScrollArea);\n    const scrollbarContext = useScrollbarContext(THUMB_NAME, __scopeScrollArea);\n    const { onThumbPositionChange } = scrollbarContext;\n    const composedRef = useComposedRefs(\n      forwardedRef,\n      (node) => scrollbarContext.onThumbChange(node)\n    );\n    const removeUnlinkedScrollListenerRef = React2.useRef(void 0);\n    const debounceScrollEnd = useDebounceCallback(() => {\n      if (removeUnlinkedScrollListenerRef.current) {\n        removeUnlinkedScrollListenerRef.current();\n        removeUnlinkedScrollListenerRef.current = void 0;\n      }\n    }, 100);\n    React2.useEffect(() => {\n      const viewport = scrollAreaContext.viewport;\n      if (viewport) {\n        const handleScroll = () => {\n          debounceScrollEnd();\n          if (!removeUnlinkedScrollListenerRef.current) {\n            const listener = addUnlinkedScrollListener(viewport, onThumbPositionChange);\n            removeUnlinkedScrollListenerRef.current = listener;\n            onThumbPositionChange();\n          }\n        };\n        onThumbPositionChange();\n        viewport.addEventListener(\"scroll\", handleScroll);\n        return () => viewport.removeEventListener(\"scroll\", handleScroll);\n      }\n    }, [scrollAreaContext.viewport, debounceScrollEnd, onThumbPositionChange]);\n    return /* @__PURE__ */ jsx(\n      Primitive.div,\n      {\n        \"data-state\": scrollbarContext.hasThumb ? \"visible\" : \"hidden\",\n        ...thumbProps,\n        ref: composedRef,\n        style: {\n          width: \"var(--radix-scroll-area-thumb-width)\",\n          height: \"var(--radix-scroll-area-thumb-height)\",\n          ...style\n        },\n        onPointerDownCapture: composeEventHandlers(props.onPointerDownCapture, (event) => {\n          const thumb = event.target;\n          const thumbRect = thumb.getBoundingClientRect();\n          const x = event.clientX - thumbRect.left;\n          const y = event.clientY - thumbRect.top;\n          scrollbarContext.onThumbPointerDown({ x, y });\n        }),\n        onPointerUp: composeEventHandlers(props.onPointerUp, scrollbarContext.onThumbPointerUp)\n      }\n    );\n  }\n);\nScrollAreaThumb.displayName = THUMB_NAME;\nvar CORNER_NAME = \"ScrollAreaCorner\";\nvar ScrollAreaCorner = React2.forwardRef(\n  (props, forwardedRef) => {\n    const context = useScrollAreaContext(CORNER_NAME, props.__scopeScrollArea);\n    const hasBothScrollbarsVisible = Boolean(context.scrollbarX && context.scrollbarY);\n    const hasCorner = context.type !== \"scroll\" && hasBothScrollbarsVisible;\n    return hasCorner ? /* @__PURE__ */ jsx(ScrollAreaCornerImpl, { ...props, ref: forwardedRef }) : null;\n  }\n);\nScrollAreaCorner.displayName = CORNER_NAME;\nvar ScrollAreaCornerImpl = React2.forwardRef((props, forwardedRef) => {\n  const { __scopeScrollArea, ...cornerProps } = props;\n  const context = useScrollAreaContext(CORNER_NAME, __scopeScrollArea);\n  const [width, setWidth] = React2.useState(0);\n  const [height, setHeight] = React2.useState(0);\n  const hasSize = Boolean(width && height);\n  useResizeObserver(context.scrollbarX, () => {\n    const height2 = context.scrollbarX?.offsetHeight || 0;\n    context.onCornerHeightChange(height2);\n    setHeight(height2);\n  });\n  useResizeObserver(context.scrollbarY, () => {\n    const width2 = context.scrollbarY?.offsetWidth || 0;\n    context.onCornerWidthChange(width2);\n    setWidth(width2);\n  });\n  return hasSize ? /* @__PURE__ */ jsx(\n    Primitive.div,\n    {\n      ...cornerProps,\n      ref: forwardedRef,\n      style: {\n        width,\n        height,\n        position: \"absolute\",\n        right: context.dir === \"ltr\" ? 0 : void 0,\n        left: context.dir === \"rtl\" ? 0 : void 0,\n        bottom: 0,\n        ...props.style\n      }\n    }\n  ) : null;\n});\nfunction toInt(value) {\n  return value ? parseInt(value, 10) : 0;\n}\nfunction getThumbRatio(viewportSize, contentSize) {\n  const ratio = viewportSize / contentSize;\n  return isNaN(ratio) ? 0 : ratio;\n}\nfunction getThumbSize(sizes) {\n  const ratio = getThumbRatio(sizes.viewport, sizes.content);\n  const scrollbarPadding = sizes.scrollbar.paddingStart + sizes.scrollbar.paddingEnd;\n  const thumbSize = (sizes.scrollbar.size - scrollbarPadding) * ratio;\n  return Math.max(thumbSize, 18);\n}\nfunction getScrollPositionFromPointer(pointerPos, pointerOffset, sizes, dir = \"ltr\") {\n  const thumbSizePx = getThumbSize(sizes);\n  const thumbCenter = thumbSizePx / 2;\n  const offset = pointerOffset || thumbCenter;\n  const thumbOffsetFromEnd = thumbSizePx - offset;\n  const minPointerPos = sizes.scrollbar.paddingStart + offset;\n  const maxPointerPos = sizes.scrollbar.size - sizes.scrollbar.paddingEnd - thumbOffsetFromEnd;\n  const maxScrollPos = sizes.content - sizes.viewport;\n  const scrollRange = dir === \"ltr\" ? [0, maxScrollPos] : [maxScrollPos * -1, 0];\n  const interpolate = linearScale([minPointerPos, maxPointerPos], scrollRange);\n  return interpolate(pointerPos);\n}\nfunction getThumbOffsetFromScroll(scrollPos, sizes, dir = \"ltr\") {\n  const thumbSizePx = getThumbSize(sizes);\n  const scrollbarPadding = sizes.scrollbar.paddingStart + sizes.scrollbar.paddingEnd;\n  const scrollbar = sizes.scrollbar.size - scrollbarPadding;\n  const maxScrollPos = sizes.content - sizes.viewport;\n  const maxThumbPos = scrollbar - thumbSizePx;\n  const scrollClampRange = dir === \"ltr\" ? [0, maxScrollPos] : [maxScrollPos * -1, 0];\n  const scrollWithoutMomentum = clamp(scrollPos, scrollClampRange);\n  const interpolate = linearScale([0, maxScrollPos], [0, maxThumbPos]);\n  return interpolate(scrollWithoutMomentum);\n}\nfunction linearScale(input, output) {\n  return (value) => {\n    if (input[0] === input[1] || output[0] === output[1]) return output[0];\n    const ratio = (output[1] - output[0]) / (input[1] - input[0]);\n    return output[0] + ratio * (value - input[0]);\n  };\n}\nfunction isScrollingWithinScrollbarBounds(scrollPos, maxScrollPos) {\n  return scrollPos > 0 && scrollPos < maxScrollPos;\n}\nvar addUnlinkedScrollListener = (node, handler = () => {\n}) => {\n  let prevPosition = { left: node.scrollLeft, top: node.scrollTop };\n  let rAF = 0;\n  (function loop() {\n    const position = { left: node.scrollLeft, top: node.scrollTop };\n    const isHorizontalScroll = prevPosition.left !== position.left;\n    const isVerticalScroll = prevPosition.top !== position.top;\n    if (isHorizontalScroll || isVerticalScroll) handler();\n    prevPosition = position;\n    rAF = window.requestAnimationFrame(loop);\n  })();\n  return () => window.cancelAnimationFrame(rAF);\n};\nfunction useDebounceCallback(callback, delay) {\n  const handleCallback = useCallbackRef(callback);\n  const debounceTimerRef = React2.useRef(0);\n  React2.useEffect(() => () => window.clearTimeout(debounceTimerRef.current), []);\n  return React2.useCallback(() => {\n    window.clearTimeout(debounceTimerRef.current);\n    debounceTimerRef.current = window.setTimeout(handleCallback, delay);\n  }, [handleCallback, delay]);\n}\nfunction useResizeObserver(element, onResize) {\n  const handleResize = useCallbackRef(onResize);\n  useLayoutEffect(() => {\n    let rAF = 0;\n    if (element) {\n      const resizeObserver = new ResizeObserver(() => {\n        cancelAnimationFrame(rAF);\n        rAF = window.requestAnimationFrame(handleResize);\n      });\n      resizeObserver.observe(element);\n      return () => {\n        window.cancelAnimationFrame(rAF);\n        resizeObserver.unobserve(element);\n      };\n    }\n  }, [element, handleResize]);\n}\nvar Root = ScrollArea;\nvar Viewport = ScrollAreaViewport;\nvar Scrollbar = ScrollAreaScrollbar;\nvar Thumb = ScrollAreaThumb;\nvar Corner = ScrollAreaCorner;\nexport {\n  Corner,\n  Root,\n  ScrollArea,\n  ScrollAreaCorner,\n  ScrollAreaScrollbar,\n  ScrollAreaThumb,\n  ScrollAreaViewport,\n  Scrollbar,\n  Thumb,\n  Viewport,\n  createScrollAreaScope\n};\n//# sourceMappingURL=index.mjs.map\n","// packages/core/number/src/number.ts\nfunction clamp(value, [min, max]) {\n  return Math.min(max, Math.max(min, value));\n}\nexport {\n  clamp\n};\n//# sourceMappingURL=index.mjs.map\n","import { cn } from \"@/lib/utils\";\nimport * as ScrollAreaPrimitive from \"@radix-ui/react-scroll-area\";\nimport React from \"react\";\n\nfunction ScrollArea({\n\tclassName,\n\tchildren,\n\t...props\n}: React.ComponentProps<typeof ScrollAreaPrimitive.Root>) {\n\treturn (\n\t\t<ScrollAreaPrimitive.Root\n\t\t\tdata-slot=\"scroll-area\"\n\t\t\tclassName={cn(\"relative\", className)}\n\t\t\t{...props}\n\t\t>\n\t\t\t<ScrollAreaPrimitive.Viewport\n\t\t\t\tdata-slot=\"scroll-area-viewport\"\n\t\t\t\tclassName=\"ring-ring/10 dark:ring-ring/20 dark:outline-ring/40 outline-ring/50 size-full rounded-[inherit] transition-[color,box-shadow] focus-visible:ring-4 focus-visible:outline-1\"\n\t\t\t>\n\t\t\t\t{children}\n\t\t\t</ScrollAreaPrimitive.Viewport>\n\t\t\t<ScrollBar />\n\t\t\t<ScrollAreaPrimitive.Corner />\n\t\t</ScrollAreaPrimitive.Root>\n\t);\n}\n\nfunction ScrollBar({\n\tclassName,\n\torientation = \"vertical\",\n\t...props\n}: React.ComponentProps<typeof ScrollAreaPrimitive.ScrollAreaScrollbar>) {\n\treturn (\n\t\t<ScrollAreaPrimitive.ScrollAreaScrollbar\n\t\t\tdata-slot=\"scroll-area-scrollbar\"\n\t\t\torientation={orientation}\n\t\t\tclassName={cn(\n\t\t\t\t\"flex touch-none p-px transition-colors select-none\",\n\t\t\t\torientation === \"vertical\" && \"h-full w-2.5 border-l border-l-transparent\",\n\t\t\t\torientation === \"horizontal\" && \"h-2.5 flex-col border-t border-t-transparent\",\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t\t{...props}\n\t\t>\n\t\t\t<ScrollAreaPrimitive.ScrollAreaThumb\n\t\t\t\tdata-slot=\"scroll-area-thumb\"\n\t\t\t\tclassName=\"bg-border relative flex-1 rounded-full\"\n\t\t\t/>\n\t\t</ScrollAreaPrimitive.ScrollAreaScrollbar>\n\t);\n}\n\nexport { ScrollArea, ScrollBar };\n"],"names":["SCROLL_AREA_NAME","createScrollAreaContext","createScrollAreaScope","createContextScope","ScrollAreaProvider","useScrollAreaContext","ScrollArea","React2","forwardRef","props","forwardedRef","__scopeScrollArea","type","dir","scrollHideDelay","scrollAreaProps","scrollArea","setScrollArea","useState","viewport","setViewport","content","setContent","scrollbarX","setScrollbarX","scrollbarY","setScrollbarY","cornerWidth","setCornerWidth","cornerHeight","setCornerHeight","scrollbarXEnabled","setScrollbarXEnabled","scrollbarYEnabled","setScrollbarYEnabled","composedRefs","useComposedRefs","node","direction","useDirection","jsx","scope","onViewportChange","onContentChange","onScrollbarXChange","onScrollbarXEnabledChange","onScrollbarYChange","onScrollbarYEnabledChange","onCornerWidthChange","onCornerHeightChange","children","Primitive","div","ref","style","position","displayName","VIEWPORT_NAME","ScrollAreaViewport","nonce","viewportProps","context","useRef","jsxs","Fragment","dangerouslySetInnerHTML","__html","overflowX","overflowY","minWidth","display","SCROLLBAR_NAME","ScrollAreaScrollbar","forceMount","scrollbarProps","isHorizontal","orientation","useEffect","ScrollAreaScrollbarHover","ScrollAreaScrollbarScroll","ScrollAreaScrollbarAuto","ScrollAreaScrollbarVisible","visible","setVisible","hideTimer","handlePointerEnter","window","clearTimeout","handlePointerLeave","setTimeout","addEventListener","removeEventListener","Presence","present","debounceScrollEnd","useDebounceCallback","send","state","hidden","SCROLL","scrolling","SCROLL_END","POINTER_ENTER","interacting","POINTER_LEAVE","idle","HIDE","scrollDirection","prevScrollPos","handleScroll","scrollPos","onPointerEnter","composeEventHandlers","onPointerLeave","handleResize","isOverflowX","offsetWidth","scrollWidth","isOverflowY","offsetHeight","scrollHeight","useResizeObserver","thumbRef","pointerOffsetRef","sizes","setSizes","scrollbar","size","paddingStart","paddingEnd","thumbRatio","getThumbRatio","commonProps","onSizesChange","hasThumb","Boolean","onThumbChange","thumb","current","onThumbPointerUp","onThumbPointerDown","pointerPos","getScrollPosition","pointerOffset","thumbSizePx","getThumbSize","thumbCenter","offset","thumbOffsetFromEnd","minPointerPos","maxPointerPos","maxScrollPos","scrollRange","linearScale","interpolate","getScrollPositionFromPointer","ScrollAreaScrollbarX","onThumbPositionChange","getThumbOffsetFromScroll","scrollLeft","transform","onWheelScroll","onDragScroll","ScrollAreaScrollbarY","scrollTop","computedStyle","setComputedStyle","composeRefs","getComputedStyle","ScrollAreaScrollbarImpl","bottom","left","right","x","event","deltaX","isScrollingWithinScrollbarBounds","preventDefault","onResize","clientWidth","toInt","paddingLeft","paddingRight","top","y","deltaY","clientHeight","paddingTop","paddingBottom","ScrollbarProvider","useScrollbarContext","setScrollbar","rectRef","prevWebkitUserSelectRef","handleWheelScroll","useCallbackRef","handleThumbPositionChange","handleDragScroll","clientX","clientY","handleWheel","element","target","isScrollbarWheel","contains","document","passive","onPointerDown","button","setPointerCapture","pointerId","getBoundingClientRect","body","webkitUserSelect","scrollBehavior","onPointerMove","onPointerUp","hasPointerCapture","releasePointerCapture","THUMB_NAME","ScrollAreaThumb","thumbProps","scrollbarContext","ScrollAreaThumbImpl","scrollAreaContext","composedRef","removeUnlinkedScrollListenerRef","listener","addUnlinkedScrollListener","width","height","onPointerDownCapture","thumbRect","CORNER_NAME","ScrollAreaCorner","hasBothScrollbarsVisible","ScrollAreaCornerImpl","cornerProps","setWidth","setHeight","hasSize","value","parseInt","viewportSize","contentSize","ratio","isNaN","scrollbarPadding","thumbSize","Math","max","maxThumbPos","scrollWithoutMomentum","min","clamp","input","output","handler","prevPosition","rAF","loop","isHorizontalScroll","isVerticalScroll","requestAnimationFrame","cancelAnimationFrame","callback","delay","handleCallback","debounceTimerRef","useCallback","useLayoutEffect","resizeObserver","ResizeObserver","observe","unobserve","Root","Viewport","Corner","className","React","createElement","ScrollAreaPrimitive","data-slot","cn","ScrollBar"],"mappings":"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","x_google_ignoreList":[0,1]}