@radix-ui/react-scroll-area 1.0.5-rc.1 → 1.0.5-rc.10
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/index.d.mts +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
package/dist/index.d.mts
CHANGED
|
@@ -93,7 +93,7 @@ type ScrollAreaScrollbarImplPrivateProps = {
|
|
|
93
93
|
}): void;
|
|
94
94
|
onResize(): void;
|
|
95
95
|
};
|
|
96
|
-
interface ScrollAreaScrollbarImplProps extends PrimitiveDivProps, ScrollAreaScrollbarImplPrivateProps {
|
|
96
|
+
interface ScrollAreaScrollbarImplProps extends Omit<PrimitiveDivProps, keyof ScrollAreaScrollbarImplPrivateProps>, ScrollAreaScrollbarImplPrivateProps {
|
|
97
97
|
}
|
|
98
98
|
type ScrollAreaThumbElement = ScrollAreaThumbImplElement;
|
|
99
99
|
export interface ScrollAreaThumbProps extends ScrollAreaThumbImplProps {
|
package/dist/index.d.ts
CHANGED
|
@@ -93,7 +93,7 @@ type ScrollAreaScrollbarImplPrivateProps = {
|
|
|
93
93
|
}): void;
|
|
94
94
|
onResize(): void;
|
|
95
95
|
};
|
|
96
|
-
interface ScrollAreaScrollbarImplProps extends PrimitiveDivProps, ScrollAreaScrollbarImplPrivateProps {
|
|
96
|
+
interface ScrollAreaScrollbarImplProps extends Omit<PrimitiveDivProps, keyof ScrollAreaScrollbarImplPrivateProps>, ScrollAreaScrollbarImplPrivateProps {
|
|
97
97
|
}
|
|
98
98
|
type ScrollAreaThumbElement = ScrollAreaThumbImplElement;
|
|
99
99
|
export interface ScrollAreaThumbProps extends ScrollAreaThumbImplProps {
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"mappings":"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
|
|
1
|
+
{"mappings":"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","sources":["packages/react/scroll-area/src/packages/react/scroll-area/src/useStateMachine.ts","packages/react/scroll-area/src/packages/react/scroll-area/src/ScrollArea.tsx","packages/react/scroll-area/src/packages/react/scroll-area/src/index.ts","packages/react/scroll-area/src/index.ts"],"sourcesContent":[null,null,null,"export {\n createScrollAreaScope,\n //\n ScrollArea,\n ScrollAreaViewport,\n ScrollAreaScrollbar,\n ScrollAreaThumb,\n ScrollAreaCorner,\n //\n Root,\n Viewport,\n Scrollbar,\n Thumb,\n Corner,\n} from './ScrollArea';\nexport type {\n ScrollAreaProps,\n ScrollAreaViewportProps,\n ScrollAreaScrollbarProps,\n ScrollAreaThumbProps,\n ScrollAreaCornerProps,\n} from './ScrollArea';\n"],"names":[],"version":3,"file":"index.d.ts.map"}
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"mappings":"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","sources":["packages/react/scroll-area/src/index.ts","packages/react/scroll-area/src/ScrollArea.tsx","packages/react/scroll-area/src/useStateMachine.ts"],"sourcesContent":["export {\n createScrollAreaScope,\n //\n ScrollArea,\n ScrollAreaViewport,\n ScrollAreaScrollbar,\n ScrollAreaThumb,\n ScrollAreaCorner,\n //\n Root,\n Viewport,\n Scrollbar,\n Thumb,\n Corner,\n} from './ScrollArea';\nexport type {\n ScrollAreaProps,\n ScrollAreaViewportProps,\n ScrollAreaScrollbarProps,\n ScrollAreaThumbProps,\n ScrollAreaCornerProps,\n} from './ScrollArea';\n","/// <reference types=\"resize-observer-browser\" />\n\nimport * as React 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';\nimport { useStateMachine } from './useStateMachine';\n\nimport type * as Radix from '@radix-ui/react-primitive';\nimport type { Scope } from '@radix-ui/react-context';\n\ntype Direction = 'ltr' | 'rtl';\ntype Sizes = {\n content: number;\n viewport: number;\n scrollbar: {\n size: number;\n paddingStart: number;\n paddingEnd: number;\n };\n};\n\n/* -------------------------------------------------------------------------------------------------\n * ScrollArea\n * -----------------------------------------------------------------------------------------------*/\n\nconst SCROLL_AREA_NAME = 'ScrollArea';\n\ntype ScopedProps<P> = P & { __scopeScrollArea?: Scope };\nconst [createScrollAreaContext, createScrollAreaScope] = createContextScope(SCROLL_AREA_NAME);\n\ntype ScrollAreaContextValue = {\n type: 'auto' | 'always' | 'scroll' | 'hover';\n dir: Direction;\n scrollHideDelay: number;\n scrollArea: ScrollAreaElement | null;\n viewport: ScrollAreaViewportElement | null;\n onViewportChange(viewport: ScrollAreaViewportElement | null): void;\n content: HTMLDivElement | null;\n onContentChange(content: HTMLDivElement): void;\n scrollbarX: ScrollAreaScrollbarElement | null;\n onScrollbarXChange(scrollbar: ScrollAreaScrollbarElement | null): void;\n scrollbarXEnabled: boolean;\n onScrollbarXEnabledChange(rendered: boolean): void;\n scrollbarY: ScrollAreaScrollbarElement | null;\n onScrollbarYChange(scrollbar: ScrollAreaScrollbarElement | null): void;\n scrollbarYEnabled: boolean;\n onScrollbarYEnabledChange(rendered: boolean): void;\n onCornerWidthChange(width: number): void;\n onCornerHeightChange(height: number): void;\n};\n\nconst [ScrollAreaProvider, useScrollAreaContext] =\n createScrollAreaContext<ScrollAreaContextValue>(SCROLL_AREA_NAME);\n\ntype ScrollAreaElement = React.ElementRef<typeof Primitive.div>;\ntype PrimitiveDivProps = Radix.ComponentPropsWithoutRef<typeof Primitive.div>;\ninterface ScrollAreaProps extends PrimitiveDivProps {\n type?: ScrollAreaContextValue['type'];\n dir?: ScrollAreaContextValue['dir'];\n scrollHideDelay?: number;\n}\n\nconst ScrollArea = React.forwardRef<ScrollAreaElement, ScrollAreaProps>(\n (props: ScopedProps<ScrollAreaProps>, forwardedRef) => {\n const {\n __scopeScrollArea,\n type = 'hover',\n dir,\n scrollHideDelay = 600,\n ...scrollAreaProps\n } = props;\n const [scrollArea, setScrollArea] = React.useState<ScrollAreaElement | null>(null);\n const [viewport, setViewport] = React.useState<ScrollAreaViewportElement | null>(null);\n const [content, setContent] = React.useState<HTMLDivElement | null>(null);\n const [scrollbarX, setScrollbarX] = React.useState<ScrollAreaScrollbarElement | null>(null);\n const [scrollbarY, setScrollbarY] = React.useState<ScrollAreaScrollbarElement | null>(null);\n const [cornerWidth, setCornerWidth] = React.useState(0);\n const [cornerHeight, setCornerHeight] = React.useState(0);\n const [scrollbarXEnabled, setScrollbarXEnabled] = React.useState(false);\n const [scrollbarYEnabled, setScrollbarYEnabled] = React.useState(false);\n const composedRefs = useComposedRefs(forwardedRef, (node) => setScrollArea(node));\n const direction = useDirection(dir);\n\n return (\n <ScrollAreaProvider\n scope={__scopeScrollArea}\n type={type}\n dir={direction}\n scrollHideDelay={scrollHideDelay}\n scrollArea={scrollArea}\n viewport={viewport}\n onViewportChange={setViewport}\n content={content}\n onContentChange={setContent}\n scrollbarX={scrollbarX}\n onScrollbarXChange={setScrollbarX}\n scrollbarXEnabled={scrollbarXEnabled}\n onScrollbarXEnabledChange={setScrollbarXEnabled}\n scrollbarY={scrollbarY}\n onScrollbarYChange={setScrollbarY}\n scrollbarYEnabled={scrollbarYEnabled}\n onScrollbarYEnabledChange={setScrollbarYEnabled}\n onCornerWidthChange={setCornerWidth}\n onCornerHeightChange={setCornerHeight}\n >\n <Primitive.div\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' as any]: cornerWidth + 'px',\n ['--radix-scroll-area-corner-height' as any]: cornerHeight + 'px',\n ...props.style,\n }}\n />\n </ScrollAreaProvider>\n );\n }\n);\n\nScrollArea.displayName = SCROLL_AREA_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * ScrollAreaViewport\n * -----------------------------------------------------------------------------------------------*/\n\nconst VIEWPORT_NAME = 'ScrollAreaViewport';\n\ntype ScrollAreaViewportElement = React.ElementRef<typeof Primitive.div>;\ninterface ScrollAreaViewportProps extends PrimitiveDivProps {}\n\nconst ScrollAreaViewport = React.forwardRef<ScrollAreaViewportElement, ScrollAreaViewportProps>(\n (props: ScopedProps<ScrollAreaViewportProps>, forwardedRef) => {\n const { __scopeScrollArea, children, ...viewportProps } = props;\n const context = useScrollAreaContext(VIEWPORT_NAME, __scopeScrollArea);\n const ref = React.useRef<ScrollAreaViewportElement>(null);\n const composedRefs = useComposedRefs(forwardedRef, ref, context.onViewportChange);\n return (\n <>\n {/* Hide scrollbars cross-browser and enable momentum scroll for touch devices */}\n <style\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 />\n <Primitive.div\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/overflowed#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 >\n {/**\n * `display: table` ensures our content div will match the size of its children in both\n * horizontal and vertical axis so we can determine if scroll width/height changed and\n * recalculate thumb sizes. This doesn't account for children with *percentage*\n * widths that change. We'll wait to see what use-cases consumers come up with there\n * before trying to resolve it.\n */}\n <div ref={context.onContentChange} style={{ minWidth: '100%', display: 'table' }}>\n {children}\n </div>\n </Primitive.div>\n </>\n );\n }\n);\n\nScrollAreaViewport.displayName = VIEWPORT_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * ScrollAreaScrollbar\n * -----------------------------------------------------------------------------------------------*/\n\nconst SCROLLBAR_NAME = 'ScrollAreaScrollbar';\n\ntype ScrollAreaScrollbarElement = ScrollAreaScrollbarVisibleElement;\ninterface ScrollAreaScrollbarProps extends ScrollAreaScrollbarVisibleProps {\n forceMount?: true;\n}\n\nconst ScrollAreaScrollbar = React.forwardRef<ScrollAreaScrollbarElement, ScrollAreaScrollbarProps>(\n (props: ScopedProps<ScrollAreaScrollbarProps>, 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\n React.useEffect(() => {\n isHorizontal ? onScrollbarXEnabledChange(true) : onScrollbarYEnabledChange(true);\n return () => {\n isHorizontal ? onScrollbarXEnabledChange(false) : onScrollbarYEnabledChange(false);\n };\n }, [isHorizontal, onScrollbarXEnabledChange, onScrollbarYEnabledChange]);\n\n return context.type === 'hover' ? (\n <ScrollAreaScrollbarHover {...scrollbarProps} ref={forwardedRef} forceMount={forceMount} />\n ) : context.type === 'scroll' ? (\n <ScrollAreaScrollbarScroll {...scrollbarProps} ref={forwardedRef} forceMount={forceMount} />\n ) : context.type === 'auto' ? (\n <ScrollAreaScrollbarAuto {...scrollbarProps} ref={forwardedRef} forceMount={forceMount} />\n ) : context.type === 'always' ? (\n <ScrollAreaScrollbarVisible {...scrollbarProps} ref={forwardedRef} />\n ) : null;\n }\n);\n\nScrollAreaScrollbar.displayName = SCROLLBAR_NAME;\n\n/* -----------------------------------------------------------------------------------------------*/\n\ntype ScrollAreaScrollbarHoverElement = ScrollAreaScrollbarAutoElement;\ninterface ScrollAreaScrollbarHoverProps extends ScrollAreaScrollbarAutoProps {\n forceMount?: true;\n}\n\nconst ScrollAreaScrollbarHover = React.forwardRef<\n ScrollAreaScrollbarHoverElement,\n ScrollAreaScrollbarHoverProps\n>((props: ScopedProps<ScrollAreaScrollbarHoverProps>, forwardedRef) => {\n const { forceMount, ...scrollbarProps } = props;\n const context = useScrollAreaContext(SCROLLBAR_NAME, props.__scopeScrollArea);\n const [visible, setVisible] = React.useState(false);\n\n React.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\n return (\n <Presence present={forceMount || visible}>\n <ScrollAreaScrollbarAuto\n data-state={visible ? 'visible' : 'hidden'}\n {...scrollbarProps}\n ref={forwardedRef}\n />\n </Presence>\n );\n});\n\ntype ScrollAreaScrollbarScrollElement = ScrollAreaScrollbarVisibleElement;\ninterface ScrollAreaScrollbarScrollProps extends ScrollAreaScrollbarVisibleProps {\n forceMount?: true;\n}\n\nconst ScrollAreaScrollbarScroll = React.forwardRef<\n ScrollAreaScrollbarScrollElement,\n ScrollAreaScrollbarScrollProps\n>((props: ScopedProps<ScrollAreaScrollbarScrollProps>, 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\n React.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\n React.useEffect(() => {\n const viewport = context.viewport;\n const scrollDirection = isHorizontal ? 'scrollLeft' : 'scrollTop';\n\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\n return (\n <Presence present={forceMount || state !== 'hidden'}>\n <ScrollAreaScrollbarVisible\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 </Presence>\n );\n});\n\ntype ScrollAreaScrollbarAutoElement = ScrollAreaScrollbarVisibleElement;\ninterface ScrollAreaScrollbarAutoProps extends ScrollAreaScrollbarVisibleProps {\n forceMount?: true;\n}\n\nconst ScrollAreaScrollbarAuto = React.forwardRef<\n ScrollAreaScrollbarAutoElement,\n ScrollAreaScrollbarAutoProps\n>((props: ScopedProps<ScrollAreaScrollbarAutoProps>, forwardedRef) => {\n const context = useScrollAreaContext(SCROLLBAR_NAME, props.__scopeScrollArea);\n const { forceMount, ...scrollbarProps } = props;\n const [visible, setVisible] = React.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\n useResizeObserver(context.viewport, handleResize);\n useResizeObserver(context.content, handleResize);\n\n return (\n <Presence present={forceMount || visible}>\n <ScrollAreaScrollbarVisible\n data-state={visible ? 'visible' : 'hidden'}\n {...scrollbarProps}\n ref={forwardedRef}\n />\n </Presence>\n );\n});\n\n/* -----------------------------------------------------------------------------------------------*/\n\ntype ScrollAreaScrollbarVisibleElement = ScrollAreaScrollbarAxisElement;\ninterface ScrollAreaScrollbarVisibleProps\n extends Omit<ScrollAreaScrollbarAxisProps, keyof ScrollAreaScrollbarAxisPrivateProps> {\n orientation?: 'horizontal' | 'vertical';\n}\n\nconst ScrollAreaScrollbarVisible = React.forwardRef<\n ScrollAreaScrollbarVisibleElement,\n ScrollAreaScrollbarVisibleProps\n>((props: ScopedProps<ScrollAreaScrollbarVisibleProps>, forwardedRef) => {\n const { orientation = 'vertical', ...scrollbarProps } = props;\n const context = useScrollAreaContext(SCROLLBAR_NAME, props.__scopeScrollArea);\n const thumbRef = React.useRef<ScrollAreaThumbElement | null>(null);\n const pointerOffsetRef = React.useRef(0);\n const [sizes, setSizes] = React.useState<Sizes>({\n content: 0,\n viewport: 0,\n scrollbar: { size: 0, paddingStart: 0, paddingEnd: 0 },\n });\n const thumbRatio = getThumbRatio(sizes.viewport, sizes.content);\n\n type UncommonProps = 'onThumbPositionChange' | 'onDragScroll' | 'onWheelScroll';\n const commonProps: Omit<ScrollAreaScrollbarAxisPrivateProps, UncommonProps> = {\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\n function getScrollPosition(pointerPos: number, dir?: Direction) {\n return getScrollPositionFromPointer(pointerPos, pointerOffsetRef.current, sizes, dir);\n }\n\n if (orientation === 'horizontal') {\n return (\n <ScrollAreaScrollbarX\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\n if (orientation === 'vertical') {\n return (\n <ScrollAreaScrollbarY\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\n return null;\n});\n\n/* -----------------------------------------------------------------------------------------------*/\n\ntype ScrollAreaScrollbarAxisPrivateProps = {\n hasThumb: boolean;\n sizes: Sizes;\n onSizesChange(sizes: Sizes): void;\n onThumbChange(thumb: ScrollAreaThumbElement | null): void;\n onThumbPointerDown(pointerPos: number): void;\n onThumbPointerUp(): void;\n onThumbPositionChange(): void;\n onWheelScroll(scrollPos: number): void;\n onDragScroll(pointerPos: number): void;\n};\n\ntype ScrollAreaScrollbarAxisElement = ScrollAreaScrollbarImplElement;\ninterface ScrollAreaScrollbarAxisProps\n extends Omit<ScrollAreaScrollbarImplProps, keyof ScrollAreaScrollbarImplPrivateProps>,\n ScrollAreaScrollbarAxisPrivateProps {}\n\nconst ScrollAreaScrollbarX = React.forwardRef<\n ScrollAreaScrollbarAxisElement,\n ScrollAreaScrollbarAxisProps\n>((props: ScopedProps<ScrollAreaScrollbarAxisProps>, forwardedRef) => {\n const { sizes, onSizesChange, ...scrollbarProps } = props;\n const context = useScrollAreaContext(SCROLLBAR_NAME, props.__scopeScrollArea);\n const [computedStyle, setComputedStyle] = React.useState<CSSStyleDeclaration>();\n const ref = React.useRef<ScrollAreaScrollbarAxisElement>(null);\n const composeRefs = useComposedRefs(forwardedRef, ref, context.onScrollbarXChange);\n\n React.useEffect(() => {\n if (ref.current) setComputedStyle(getComputedStyle(ref.current));\n }, [ref]);\n\n return (\n <ScrollAreaScrollbarImpl\n data-orientation=\"horizontal\"\n {...scrollbarProps}\n ref={composeRefs}\n sizes={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' as any]: 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 // prevent window scroll when wheeling on scrollbar\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});\n\nconst ScrollAreaScrollbarY = React.forwardRef<\n ScrollAreaScrollbarAxisElement,\n ScrollAreaScrollbarAxisProps\n>((props: ScopedProps<ScrollAreaScrollbarAxisProps>, forwardedRef) => {\n const { sizes, onSizesChange, ...scrollbarProps } = props;\n const context = useScrollAreaContext(SCROLLBAR_NAME, props.__scopeScrollArea);\n const [computedStyle, setComputedStyle] = React.useState<CSSStyleDeclaration>();\n const ref = React.useRef<ScrollAreaScrollbarAxisElement>(null);\n const composeRefs = useComposedRefs(forwardedRef, ref, context.onScrollbarYChange);\n\n React.useEffect(() => {\n if (ref.current) setComputedStyle(getComputedStyle(ref.current));\n }, [ref]);\n\n return (\n <ScrollAreaScrollbarImpl\n data-orientation=\"vertical\"\n {...scrollbarProps}\n ref={composeRefs}\n sizes={sizes}\n style={{\n top: 0,\n right: context.dir === 'ltr' ? 0 : undefined,\n left: context.dir === 'rtl' ? 0 : undefined,\n bottom: 'var(--radix-scroll-area-corner-height)',\n ['--radix-scroll-area-thumb-height' as any]: 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 // prevent window scroll when wheeling on scrollbar\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});\n\n/* -----------------------------------------------------------------------------------------------*/\n\ntype ScrollbarContext = {\n hasThumb: boolean;\n scrollbar: ScrollAreaScrollbarElement | null;\n onThumbChange(thumb: ScrollAreaThumbElement | null): void;\n onThumbPointerUp(): void;\n onThumbPointerDown(pointerPos: { x: number; y: number }): void;\n onThumbPositionChange(): void;\n};\n\nconst [ScrollbarProvider, useScrollbarContext] =\n createScrollAreaContext<ScrollbarContext>(SCROLLBAR_NAME);\n\ntype ScrollAreaScrollbarImplElement = React.ElementRef<typeof Primitive.div>;\ntype ScrollAreaScrollbarImplPrivateProps = {\n sizes: Sizes;\n hasThumb: boolean;\n onThumbChange: ScrollbarContext['onThumbChange'];\n onThumbPointerUp: ScrollbarContext['onThumbPointerUp'];\n onThumbPointerDown: ScrollbarContext['onThumbPointerDown'];\n onThumbPositionChange: ScrollbarContext['onThumbPositionChange'];\n onWheelScroll(event: WheelEvent, maxScrollPos: number): void;\n onDragScroll(pointerPos: { x: number; y: number }): void;\n onResize(): void;\n};\ninterface ScrollAreaScrollbarImplProps\n extends PrimitiveDivProps,\n ScrollAreaScrollbarImplPrivateProps {}\n\nconst ScrollAreaScrollbarImpl = React.forwardRef<\n ScrollAreaScrollbarImplElement,\n ScrollAreaScrollbarImplProps\n>((props: ScopedProps<ScrollAreaScrollbarImplProps>, 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] = React.useState<ScrollAreaScrollbarElement | null>(null);\n const composeRefs = useComposedRefs(forwardedRef, (node) => setScrollbar(node));\n const rectRef = React.useRef<ClientRect | null>(null);\n const prevWebkitUserSelectRef = React.useRef<string>('');\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\n function handleDragScroll(event: React.PointerEvent<HTMLElement>) {\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\n /**\n * We bind wheel event imperatively so we can switch off passive\n * mode for document wheel event to allow it to be prevented\n */\n React.useEffect(() => {\n const handleWheel = (event: WheelEvent) => {\n const element = event.target as HTMLElement;\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 } as any);\n }, [viewport, scrollbar, maxScrollPos, handleWheelScroll]);\n\n /**\n * Update thumb position on sizes change\n */\n React.useEffect(handleThumbPositionChange, [sizes, handleThumbPositionChange]);\n\n useResizeObserver(scrollbar, handleResize);\n useResizeObserver(context.content, handleResize);\n\n return (\n <ScrollbarProvider\n scope={__scopeScrollArea}\n scrollbar={scrollbar}\n hasThumb={hasThumb}\n onThumbChange={useCallbackRef(onThumbChange)}\n onThumbPointerUp={useCallbackRef(onThumbPointerUp)}\n onThumbPositionChange={handleThumbPositionChange}\n onThumbPointerDown={useCallbackRef(onThumbPointerDown)}\n >\n <Primitive.div\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 as HTMLElement;\n element.setPointerCapture(event.pointerId);\n rectRef.current = scrollbar!.getBoundingClientRect();\n // pointer capture doesn't prevent text selection in Safari\n // so we remove text selection manually when scrolling\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 as HTMLElement;\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 </ScrollbarProvider>\n );\n});\n\n/* -------------------------------------------------------------------------------------------------\n * ScrollAreaThumb\n * -----------------------------------------------------------------------------------------------*/\n\nconst THUMB_NAME = 'ScrollAreaThumb';\n\ntype ScrollAreaThumbElement = ScrollAreaThumbImplElement;\ninterface ScrollAreaThumbProps extends ScrollAreaThumbImplProps {\n /**\n * Used to force mounting when more control is needed. Useful when\n * controlling animation with React animation libraries.\n */\n forceMount?: true;\n}\n\nconst ScrollAreaThumb = React.forwardRef<ScrollAreaThumbElement, ScrollAreaThumbProps>(\n (props: ScopedProps<ScrollAreaThumbProps>, forwardedRef) => {\n const { forceMount, ...thumbProps } = props;\n const scrollbarContext = useScrollbarContext(THUMB_NAME, props.__scopeScrollArea);\n return (\n <Presence present={forceMount || scrollbarContext.hasThumb}>\n <ScrollAreaThumbImpl ref={forwardedRef} {...thumbProps} />\n </Presence>\n );\n }\n);\n\ntype ScrollAreaThumbImplElement = React.ElementRef<typeof Primitive.div>;\ninterface ScrollAreaThumbImplProps extends PrimitiveDivProps {}\n\nconst ScrollAreaThumbImpl = React.forwardRef<ScrollAreaThumbImplElement, ScrollAreaThumbImplProps>(\n (props: ScopedProps<ScrollAreaThumbImplProps>, 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(forwardedRef, (node) =>\n scrollbarContext.onThumbChange(node)\n );\n const removeUnlinkedScrollListenerRef = React.useRef<() => void>();\n const debounceScrollEnd = useDebounceCallback(() => {\n if (removeUnlinkedScrollListenerRef.current) {\n removeUnlinkedScrollListenerRef.current();\n removeUnlinkedScrollListenerRef.current = undefined;\n }\n }, 100);\n\n React.useEffect(() => {\n const viewport = scrollAreaContext.viewport;\n if (viewport) {\n /**\n * We only bind to native scroll event so we know when scroll starts and ends.\n * When scroll starts we start a requestAnimationFrame loop that checks for\n * changes to scroll position. That rAF loop triggers our thumb position change\n * when relevant to avoid scroll-linked effects. We cancel the loop when scroll ends.\n * https://developer.mozilla.org/en-US/docs/Mozilla/Performance/Scroll-linked_effects\n */\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\n return (\n <Primitive.div\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 as HTMLElement;\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);\n\nScrollAreaThumb.displayName = THUMB_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * ScrollAreaCorner\n * -----------------------------------------------------------------------------------------------*/\n\nconst CORNER_NAME = 'ScrollAreaCorner';\n\ntype ScrollAreaCornerElement = ScrollAreaCornerImplElement;\ninterface ScrollAreaCornerProps extends ScrollAreaCornerImplProps {}\n\nconst ScrollAreaCorner = React.forwardRef<ScrollAreaCornerElement, ScrollAreaCornerProps>(\n (props: ScopedProps<ScrollAreaCornerProps>, 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 ? <ScrollAreaCornerImpl {...props} ref={forwardedRef} /> : null;\n }\n);\n\nScrollAreaCorner.displayName = CORNER_NAME;\n\n/* -----------------------------------------------------------------------------------------------*/\n\ntype ScrollAreaCornerImplElement = React.ElementRef<typeof Primitive.div>;\ninterface ScrollAreaCornerImplProps extends PrimitiveDivProps {}\n\nconst ScrollAreaCornerImpl = React.forwardRef<\n ScrollAreaCornerImplElement,\n ScrollAreaCornerImplProps\n>((props: ScopedProps<ScrollAreaCornerImplProps>, forwardedRef) => {\n const { __scopeScrollArea, ...cornerProps } = props;\n const context = useScrollAreaContext(CORNER_NAME, __scopeScrollArea);\n const [width, setWidth] = React.useState(0);\n const [height, setHeight] = React.useState(0);\n const hasSize = Boolean(width && height);\n\n useResizeObserver(context.scrollbarX, () => {\n const height = context.scrollbarX?.offsetHeight || 0;\n context.onCornerHeightChange(height);\n setHeight(height);\n });\n\n useResizeObserver(context.scrollbarY, () => {\n const width = context.scrollbarY?.offsetWidth || 0;\n context.onCornerWidthChange(width);\n setWidth(width);\n });\n\n return hasSize ? (\n <Primitive.div\n {...cornerProps}\n ref={forwardedRef}\n style={{\n width,\n height,\n position: 'absolute',\n right: context.dir === 'ltr' ? 0 : undefined,\n left: context.dir === 'rtl' ? 0 : undefined,\n bottom: 0,\n ...props.style,\n }}\n />\n ) : null;\n});\n\n/* -----------------------------------------------------------------------------------------------*/\n\nfunction toInt(value?: string) {\n return value ? parseInt(value, 10) : 0;\n}\n\nfunction getThumbRatio(viewportSize: number, contentSize: number) {\n const ratio = viewportSize / contentSize;\n return isNaN(ratio) ? 0 : ratio;\n}\n\nfunction getThumbSize(sizes: 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 // minimum of 18 matches macOS minimum\n return Math.max(thumbSize, 18);\n}\n\nfunction getScrollPositionFromPointer(\n pointerPos: number,\n pointerOffset: number,\n sizes: Sizes,\n dir: Direction = 'ltr'\n) {\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 as [number, number]);\n return interpolate(pointerPos);\n}\n\nfunction getThumbOffsetFromScroll(scrollPos: number, sizes: Sizes, dir: Direction = '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 as [number, number]);\n const interpolate = linearScale([0, maxScrollPos], [0, maxThumbPos]);\n return interpolate(scrollWithoutMomentum);\n}\n\n// https://github.com/tmcw-up-for-adoption/simple-linear-scale/blob/master/index.js\nfunction linearScale(input: readonly [number, number], output: readonly [number, number]) {\n return (value: number) => {\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}\n\nfunction isScrollingWithinScrollbarBounds(scrollPos: number, maxScrollPos: number) {\n return scrollPos > 0 && scrollPos < maxScrollPos;\n}\n\n// Custom scroll handler to avoid scroll-linked effects\n// https://developer.mozilla.org/en-US/docs/Mozilla/Performance/Scroll-linked_effects\nconst addUnlinkedScrollListener = (node: HTMLElement, handler = () => {}) => {\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};\n\nfunction useDebounceCallback(callback: () => void, delay: number) {\n const handleCallback = useCallbackRef(callback);\n const debounceTimerRef = React.useRef(0);\n React.useEffect(() => () => window.clearTimeout(debounceTimerRef.current), []);\n return React.useCallback(() => {\n window.clearTimeout(debounceTimerRef.current);\n debounceTimerRef.current = window.setTimeout(handleCallback, delay);\n }, [handleCallback, delay]);\n}\n\nfunction useResizeObserver(element: HTMLElement | null, onResize: () => void) {\n const handleResize = useCallbackRef(onResize);\n useLayoutEffect(() => {\n let rAF = 0;\n if (element) {\n /**\n * Resize Observer will throw an often benign error that says `ResizeObserver loop\n * completed with undelivered notifications`. This means that ResizeObserver was not\n * able to deliver all observations within a single animation frame, so we use\n * `requestAnimationFrame` to ensure we don't deliver unnecessary observations.\n * Further reading: https://github.com/WICG/resize-observer/issues/38\n */\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}\n\n/* -----------------------------------------------------------------------------------------------*/\n\nconst Root = ScrollArea;\nconst Viewport = ScrollAreaViewport;\nconst Scrollbar = ScrollAreaScrollbar;\nconst Thumb = ScrollAreaThumb;\nconst Corner = ScrollAreaCorner;\n\nexport {\n createScrollAreaScope,\n //\n ScrollArea,\n ScrollAreaViewport,\n ScrollAreaScrollbar,\n ScrollAreaThumb,\n ScrollAreaCorner,\n //\n Root,\n Viewport,\n Scrollbar,\n Thumb,\n Corner,\n};\nexport type {\n ScrollAreaProps,\n ScrollAreaViewportProps,\n ScrollAreaScrollbarProps,\n ScrollAreaThumbProps,\n ScrollAreaCornerProps,\n};\n","import * as React from 'react';\n\ntype Machine<S> = { [k: string]: { [k: string]: S } };\ntype MachineState<T> = keyof T;\ntype MachineEvent<T> = keyof UnionToIntersection<T[keyof T]>;\n\n// 🤯 https://fettblog.eu/typescript-union-to-intersection/\ntype UnionToIntersection<T> = (T extends any ? (x: T) => any : never) extends (x: infer R) => any\n ? R\n : never;\n\nexport function useStateMachine<M>(\n initialState: MachineState<M>,\n machine: M & Machine<MachineState<M>>\n) {\n return React.useReducer((state: MachineState<M>, event: MachineEvent<M>): MachineState<M> => {\n const nextState = (machine[state] as any)[event];\n return nextState ?? state;\n }, initialState);\n}\n"],"names":["createScrollAreaScope","ScrollArea","ScrollAreaViewport","ScrollAreaScrollbar","ScrollAreaThumb","ScrollAreaCorner","Root","Viewport","Scrollbar","Thumb","Corner","React","Primitive","Presence","createContextScope","useComposedRefs","useCallbackRef","useDirection","useLayoutEffect","clamp","composeEventHandlers","useStateMachine","SCROLL_AREA_NAME","createScrollAreaContext","ScrollAreaProvider","useScrollAreaContext","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","node","direction","position","style","VIEWPORT_NAME","children","viewportProps","context","ref","useRef","onViewportChange","__html","overflowX","overflowY","onContentChange","minWidth","display","SCROLLBAR_NAME","forceMount","scrollbarProps","onScrollbarXEnabledChange","onScrollbarYEnabledChange","isHorizontal","orientation","useEffect","ScrollAreaScrollbarHover","visible","setVisible","hideTimer","handlePointerEnter","window","clearTimeout","handlePointerLeave","setTimeout","addEventListener","removeEventListener","ScrollAreaScrollbarScroll","debounceScrollEnd","useDebounceCallback","send","state","hidden","SCROLL","scrolling","SCROLL_END","POINTER_ENTER","interacting","POINTER_LEAVE","idle","HIDE","scrollDirection","prevScrollPos","handleScroll","scrollPos","hasScrollInDirectionChanged","onPointerEnter","onPointerLeave","ScrollAreaScrollbarAuto","handleResize","isOverflowX","offsetWidth","scrollWidth","isOverflowY","offsetHeight","scrollHeight","useResizeObserver","ScrollAreaScrollbarVisible","thumbRef","pointerOffsetRef","sizes","setSizes","scrollbar","size","paddingStart","paddingEnd","thumbRatio","getThumbRatio","commonProps","onSizesChange","hasThumb","Boolean","onThumbChange","thumb","current","onThumbPointerUp","onThumbPointerDown","pointerPos","getScrollPosition","getScrollPositionFromPointer","scrollLeft","offset","getThumbOffsetFromScroll","transform","scrollTop","ScrollAreaScrollbarX","computedStyle","setComputedStyle","composeRefs","onScrollbarXChange","getComputedStyle","bottom","left","right","getThumbSize","x","onDragScroll","event","maxScrollPos","deltaX","onWheelScroll","isScrollingWithinScrollbarBounds","preventDefault","clientWidth","toInt","paddingLeft","paddingRight","ScrollAreaScrollbarY","onScrollbarYChange","top","undefined","y","deltaY","clientHeight","paddingTop","paddingBottom","ScrollbarProvider","useScrollbarContext","ScrollAreaScrollbarImpl","onThumbPositionChange","onResize","setScrollbar","rectRef","prevWebkitUserSelectRef","handleWheelScroll","handleThumbPositionChange","handleDragScroll","clientX","clientY","handleWheel","element","target","isScrollbarWheel","contains","document","passive","onPointerDown","mainPointer","button","setPointerCapture","pointerId","getBoundingClientRect","body","webkitUserSelect","scrollBehavior","onPointerMove","onPointerUp","hasPointerCapture","releasePointerCapture","THUMB_NAME","thumbProps","scrollbarContext","ScrollAreaThumbImpl","scrollAreaContext","composedRef","removeUnlinkedScrollListenerRef","listener","addUnlinkedScrollListener","width","height","onPointerDownCapture","thumbRect","CORNER_NAME","hasBothScrollbarsVisible","hasCorner","ScrollAreaCornerImpl","cornerProps","setWidth","setHeight","hasSize","onCornerHeightChange","onCornerWidthChange","value","parseInt","viewportSize","contentSize","ratio","isNaN","scrollbarPadding","thumbSize","Math","max","pointerOffset","thumbSizePx","thumbCenter","thumbOffsetFromEnd","minPointerPos","maxPointerPos","scrollRange","interpolate","linearScale","maxThumbPos","scrollClampRange","scrollWithoutMomentum","input","output","handler","prevPosition","rAF","loop","isHorizontalScroll","isVerticalScroll","requestAnimationFrame","cancelAnimationFrame","callback","delay","handleCallback","debounceTimerRef","useCallback","resizeObserver","ResizeObserver","observe","unobserve","initialState","machine","useReducer","nextState"],"version":3,"file":"index.js.map"}
|
|
1
|
+
{"mappings":"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","sources":["packages/react/scroll-area/src/index.ts","packages/react/scroll-area/src/ScrollArea.tsx","packages/react/scroll-area/src/useStateMachine.ts"],"sourcesContent":["export {\n createScrollAreaScope,\n //\n ScrollArea,\n ScrollAreaViewport,\n ScrollAreaScrollbar,\n ScrollAreaThumb,\n ScrollAreaCorner,\n //\n Root,\n Viewport,\n Scrollbar,\n Thumb,\n Corner,\n} from './ScrollArea';\nexport type {\n ScrollAreaProps,\n ScrollAreaViewportProps,\n ScrollAreaScrollbarProps,\n ScrollAreaThumbProps,\n ScrollAreaCornerProps,\n} from './ScrollArea';\n","/// <reference types=\"resize-observer-browser\" />\n\nimport * as React 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';\nimport { useStateMachine } from './useStateMachine';\n\nimport type * as Radix from '@radix-ui/react-primitive';\nimport type { Scope } from '@radix-ui/react-context';\n\ntype Direction = 'ltr' | 'rtl';\ntype Sizes = {\n content: number;\n viewport: number;\n scrollbar: {\n size: number;\n paddingStart: number;\n paddingEnd: number;\n };\n};\n\n/* -------------------------------------------------------------------------------------------------\n * ScrollArea\n * -----------------------------------------------------------------------------------------------*/\n\nconst SCROLL_AREA_NAME = 'ScrollArea';\n\ntype ScopedProps<P> = P & { __scopeScrollArea?: Scope };\nconst [createScrollAreaContext, createScrollAreaScope] = createContextScope(SCROLL_AREA_NAME);\n\ntype ScrollAreaContextValue = {\n type: 'auto' | 'always' | 'scroll' | 'hover';\n dir: Direction;\n scrollHideDelay: number;\n scrollArea: ScrollAreaElement | null;\n viewport: ScrollAreaViewportElement | null;\n onViewportChange(viewport: ScrollAreaViewportElement | null): void;\n content: HTMLDivElement | null;\n onContentChange(content: HTMLDivElement): void;\n scrollbarX: ScrollAreaScrollbarElement | null;\n onScrollbarXChange(scrollbar: ScrollAreaScrollbarElement | null): void;\n scrollbarXEnabled: boolean;\n onScrollbarXEnabledChange(rendered: boolean): void;\n scrollbarY: ScrollAreaScrollbarElement | null;\n onScrollbarYChange(scrollbar: ScrollAreaScrollbarElement | null): void;\n scrollbarYEnabled: boolean;\n onScrollbarYEnabledChange(rendered: boolean): void;\n onCornerWidthChange(width: number): void;\n onCornerHeightChange(height: number): void;\n};\n\nconst [ScrollAreaProvider, useScrollAreaContext] =\n createScrollAreaContext<ScrollAreaContextValue>(SCROLL_AREA_NAME);\n\ntype ScrollAreaElement = React.ElementRef<typeof Primitive.div>;\ntype PrimitiveDivProps = Radix.ComponentPropsWithoutRef<typeof Primitive.div>;\ninterface ScrollAreaProps extends PrimitiveDivProps {\n type?: ScrollAreaContextValue['type'];\n dir?: ScrollAreaContextValue['dir'];\n scrollHideDelay?: number;\n}\n\nconst ScrollArea = React.forwardRef<ScrollAreaElement, ScrollAreaProps>(\n (props: ScopedProps<ScrollAreaProps>, forwardedRef) => {\n const {\n __scopeScrollArea,\n type = 'hover',\n dir,\n scrollHideDelay = 600,\n ...scrollAreaProps\n } = props;\n const [scrollArea, setScrollArea] = React.useState<ScrollAreaElement | null>(null);\n const [viewport, setViewport] = React.useState<ScrollAreaViewportElement | null>(null);\n const [content, setContent] = React.useState<HTMLDivElement | null>(null);\n const [scrollbarX, setScrollbarX] = React.useState<ScrollAreaScrollbarElement | null>(null);\n const [scrollbarY, setScrollbarY] = React.useState<ScrollAreaScrollbarElement | null>(null);\n const [cornerWidth, setCornerWidth] = React.useState(0);\n const [cornerHeight, setCornerHeight] = React.useState(0);\n const [scrollbarXEnabled, setScrollbarXEnabled] = React.useState(false);\n const [scrollbarYEnabled, setScrollbarYEnabled] = React.useState(false);\n const composedRefs = useComposedRefs(forwardedRef, (node) => setScrollArea(node));\n const direction = useDirection(dir);\n\n return (\n <ScrollAreaProvider\n scope={__scopeScrollArea}\n type={type}\n dir={direction}\n scrollHideDelay={scrollHideDelay}\n scrollArea={scrollArea}\n viewport={viewport}\n onViewportChange={setViewport}\n content={content}\n onContentChange={setContent}\n scrollbarX={scrollbarX}\n onScrollbarXChange={setScrollbarX}\n scrollbarXEnabled={scrollbarXEnabled}\n onScrollbarXEnabledChange={setScrollbarXEnabled}\n scrollbarY={scrollbarY}\n onScrollbarYChange={setScrollbarY}\n scrollbarYEnabled={scrollbarYEnabled}\n onScrollbarYEnabledChange={setScrollbarYEnabled}\n onCornerWidthChange={setCornerWidth}\n onCornerHeightChange={setCornerHeight}\n >\n <Primitive.div\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' as any]: cornerWidth + 'px',\n ['--radix-scroll-area-corner-height' as any]: cornerHeight + 'px',\n ...props.style,\n }}\n />\n </ScrollAreaProvider>\n );\n }\n);\n\nScrollArea.displayName = SCROLL_AREA_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * ScrollAreaViewport\n * -----------------------------------------------------------------------------------------------*/\n\nconst VIEWPORT_NAME = 'ScrollAreaViewport';\n\ntype ScrollAreaViewportElement = React.ElementRef<typeof Primitive.div>;\ninterface ScrollAreaViewportProps extends PrimitiveDivProps {}\n\nconst ScrollAreaViewport = React.forwardRef<ScrollAreaViewportElement, ScrollAreaViewportProps>(\n (props: ScopedProps<ScrollAreaViewportProps>, forwardedRef) => {\n const { __scopeScrollArea, children, ...viewportProps } = props;\n const context = useScrollAreaContext(VIEWPORT_NAME, __scopeScrollArea);\n const ref = React.useRef<ScrollAreaViewportElement>(null);\n const composedRefs = useComposedRefs(forwardedRef, ref, context.onViewportChange);\n return (\n <>\n {/* Hide scrollbars cross-browser and enable momentum scroll for touch devices */}\n <style\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 />\n <Primitive.div\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/overflowed#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 >\n {/**\n * `display: table` ensures our content div will match the size of its children in both\n * horizontal and vertical axis so we can determine if scroll width/height changed and\n * recalculate thumb sizes. This doesn't account for children with *percentage*\n * widths that change. We'll wait to see what use-cases consumers come up with there\n * before trying to resolve it.\n */}\n <div ref={context.onContentChange} style={{ minWidth: '100%', display: 'table' }}>\n {children}\n </div>\n </Primitive.div>\n </>\n );\n }\n);\n\nScrollAreaViewport.displayName = VIEWPORT_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * ScrollAreaScrollbar\n * -----------------------------------------------------------------------------------------------*/\n\nconst SCROLLBAR_NAME = 'ScrollAreaScrollbar';\n\ntype ScrollAreaScrollbarElement = ScrollAreaScrollbarVisibleElement;\ninterface ScrollAreaScrollbarProps extends ScrollAreaScrollbarVisibleProps {\n forceMount?: true;\n}\n\nconst ScrollAreaScrollbar = React.forwardRef<ScrollAreaScrollbarElement, ScrollAreaScrollbarProps>(\n (props: ScopedProps<ScrollAreaScrollbarProps>, 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\n React.useEffect(() => {\n isHorizontal ? onScrollbarXEnabledChange(true) : onScrollbarYEnabledChange(true);\n return () => {\n isHorizontal ? onScrollbarXEnabledChange(false) : onScrollbarYEnabledChange(false);\n };\n }, [isHorizontal, onScrollbarXEnabledChange, onScrollbarYEnabledChange]);\n\n return context.type === 'hover' ? (\n <ScrollAreaScrollbarHover {...scrollbarProps} ref={forwardedRef} forceMount={forceMount} />\n ) : context.type === 'scroll' ? (\n <ScrollAreaScrollbarScroll {...scrollbarProps} ref={forwardedRef} forceMount={forceMount} />\n ) : context.type === 'auto' ? (\n <ScrollAreaScrollbarAuto {...scrollbarProps} ref={forwardedRef} forceMount={forceMount} />\n ) : context.type === 'always' ? (\n <ScrollAreaScrollbarVisible {...scrollbarProps} ref={forwardedRef} />\n ) : null;\n }\n);\n\nScrollAreaScrollbar.displayName = SCROLLBAR_NAME;\n\n/* -----------------------------------------------------------------------------------------------*/\n\ntype ScrollAreaScrollbarHoverElement = ScrollAreaScrollbarAutoElement;\ninterface ScrollAreaScrollbarHoverProps extends ScrollAreaScrollbarAutoProps {\n forceMount?: true;\n}\n\nconst ScrollAreaScrollbarHover = React.forwardRef<\n ScrollAreaScrollbarHoverElement,\n ScrollAreaScrollbarHoverProps\n>((props: ScopedProps<ScrollAreaScrollbarHoverProps>, forwardedRef) => {\n const { forceMount, ...scrollbarProps } = props;\n const context = useScrollAreaContext(SCROLLBAR_NAME, props.__scopeScrollArea);\n const [visible, setVisible] = React.useState(false);\n\n React.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\n return (\n <Presence present={forceMount || visible}>\n <ScrollAreaScrollbarAuto\n data-state={visible ? 'visible' : 'hidden'}\n {...scrollbarProps}\n ref={forwardedRef}\n />\n </Presence>\n );\n});\n\ntype ScrollAreaScrollbarScrollElement = ScrollAreaScrollbarVisibleElement;\ninterface ScrollAreaScrollbarScrollProps extends ScrollAreaScrollbarVisibleProps {\n forceMount?: true;\n}\n\nconst ScrollAreaScrollbarScroll = React.forwardRef<\n ScrollAreaScrollbarScrollElement,\n ScrollAreaScrollbarScrollProps\n>((props: ScopedProps<ScrollAreaScrollbarScrollProps>, 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\n React.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\n React.useEffect(() => {\n const viewport = context.viewport;\n const scrollDirection = isHorizontal ? 'scrollLeft' : 'scrollTop';\n\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\n return (\n <Presence present={forceMount || state !== 'hidden'}>\n <ScrollAreaScrollbarVisible\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 </Presence>\n );\n});\n\ntype ScrollAreaScrollbarAutoElement = ScrollAreaScrollbarVisibleElement;\ninterface ScrollAreaScrollbarAutoProps extends ScrollAreaScrollbarVisibleProps {\n forceMount?: true;\n}\n\nconst ScrollAreaScrollbarAuto = React.forwardRef<\n ScrollAreaScrollbarAutoElement,\n ScrollAreaScrollbarAutoProps\n>((props: ScopedProps<ScrollAreaScrollbarAutoProps>, forwardedRef) => {\n const context = useScrollAreaContext(SCROLLBAR_NAME, props.__scopeScrollArea);\n const { forceMount, ...scrollbarProps } = props;\n const [visible, setVisible] = React.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\n useResizeObserver(context.viewport, handleResize);\n useResizeObserver(context.content, handleResize);\n\n return (\n <Presence present={forceMount || visible}>\n <ScrollAreaScrollbarVisible\n data-state={visible ? 'visible' : 'hidden'}\n {...scrollbarProps}\n ref={forwardedRef}\n />\n </Presence>\n );\n});\n\n/* -----------------------------------------------------------------------------------------------*/\n\ntype ScrollAreaScrollbarVisibleElement = ScrollAreaScrollbarAxisElement;\ninterface ScrollAreaScrollbarVisibleProps\n extends Omit<ScrollAreaScrollbarAxisProps, keyof ScrollAreaScrollbarAxisPrivateProps> {\n orientation?: 'horizontal' | 'vertical';\n}\n\nconst ScrollAreaScrollbarVisible = React.forwardRef<\n ScrollAreaScrollbarVisibleElement,\n ScrollAreaScrollbarVisibleProps\n>((props: ScopedProps<ScrollAreaScrollbarVisibleProps>, forwardedRef) => {\n const { orientation = 'vertical', ...scrollbarProps } = props;\n const context = useScrollAreaContext(SCROLLBAR_NAME, props.__scopeScrollArea);\n const thumbRef = React.useRef<ScrollAreaThumbElement | null>(null);\n const pointerOffsetRef = React.useRef(0);\n const [sizes, setSizes] = React.useState<Sizes>({\n content: 0,\n viewport: 0,\n scrollbar: { size: 0, paddingStart: 0, paddingEnd: 0 },\n });\n const thumbRatio = getThumbRatio(sizes.viewport, sizes.content);\n\n type UncommonProps = 'onThumbPositionChange' | 'onDragScroll' | 'onWheelScroll';\n const commonProps: Omit<ScrollAreaScrollbarAxisPrivateProps, UncommonProps> = {\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\n function getScrollPosition(pointerPos: number, dir?: Direction) {\n return getScrollPositionFromPointer(pointerPos, pointerOffsetRef.current, sizes, dir);\n }\n\n if (orientation === 'horizontal') {\n return (\n <ScrollAreaScrollbarX\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\n if (orientation === 'vertical') {\n return (\n <ScrollAreaScrollbarY\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\n return null;\n});\n\n/* -----------------------------------------------------------------------------------------------*/\n\ntype ScrollAreaScrollbarAxisPrivateProps = {\n hasThumb: boolean;\n sizes: Sizes;\n onSizesChange(sizes: Sizes): void;\n onThumbChange(thumb: ScrollAreaThumbElement | null): void;\n onThumbPointerDown(pointerPos: number): void;\n onThumbPointerUp(): void;\n onThumbPositionChange(): void;\n onWheelScroll(scrollPos: number): void;\n onDragScroll(pointerPos: number): void;\n};\n\ntype ScrollAreaScrollbarAxisElement = ScrollAreaScrollbarImplElement;\ninterface ScrollAreaScrollbarAxisProps\n extends Omit<ScrollAreaScrollbarImplProps, keyof ScrollAreaScrollbarImplPrivateProps>,\n ScrollAreaScrollbarAxisPrivateProps {}\n\nconst ScrollAreaScrollbarX = React.forwardRef<\n ScrollAreaScrollbarAxisElement,\n ScrollAreaScrollbarAxisProps\n>((props: ScopedProps<ScrollAreaScrollbarAxisProps>, forwardedRef) => {\n const { sizes, onSizesChange, ...scrollbarProps } = props;\n const context = useScrollAreaContext(SCROLLBAR_NAME, props.__scopeScrollArea);\n const [computedStyle, setComputedStyle] = React.useState<CSSStyleDeclaration>();\n const ref = React.useRef<ScrollAreaScrollbarAxisElement>(null);\n const composeRefs = useComposedRefs(forwardedRef, ref, context.onScrollbarXChange);\n\n React.useEffect(() => {\n if (ref.current) setComputedStyle(getComputedStyle(ref.current));\n }, [ref]);\n\n return (\n <ScrollAreaScrollbarImpl\n data-orientation=\"horizontal\"\n {...scrollbarProps}\n ref={composeRefs}\n sizes={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' as any]: 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 // prevent window scroll when wheeling on scrollbar\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});\n\nconst ScrollAreaScrollbarY = React.forwardRef<\n ScrollAreaScrollbarAxisElement,\n ScrollAreaScrollbarAxisProps\n>((props: ScopedProps<ScrollAreaScrollbarAxisProps>, forwardedRef) => {\n const { sizes, onSizesChange, ...scrollbarProps } = props;\n const context = useScrollAreaContext(SCROLLBAR_NAME, props.__scopeScrollArea);\n const [computedStyle, setComputedStyle] = React.useState<CSSStyleDeclaration>();\n const ref = React.useRef<ScrollAreaScrollbarAxisElement>(null);\n const composeRefs = useComposedRefs(forwardedRef, ref, context.onScrollbarYChange);\n\n React.useEffect(() => {\n if (ref.current) setComputedStyle(getComputedStyle(ref.current));\n }, [ref]);\n\n return (\n <ScrollAreaScrollbarImpl\n data-orientation=\"vertical\"\n {...scrollbarProps}\n ref={composeRefs}\n sizes={sizes}\n style={{\n top: 0,\n right: context.dir === 'ltr' ? 0 : undefined,\n left: context.dir === 'rtl' ? 0 : undefined,\n bottom: 'var(--radix-scroll-area-corner-height)',\n ['--radix-scroll-area-thumb-height' as any]: 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 // prevent window scroll when wheeling on scrollbar\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});\n\n/* -----------------------------------------------------------------------------------------------*/\n\ntype ScrollbarContext = {\n hasThumb: boolean;\n scrollbar: ScrollAreaScrollbarElement | null;\n onThumbChange(thumb: ScrollAreaThumbElement | null): void;\n onThumbPointerUp(): void;\n onThumbPointerDown(pointerPos: { x: number; y: number }): void;\n onThumbPositionChange(): void;\n};\n\nconst [ScrollbarProvider, useScrollbarContext] =\n createScrollAreaContext<ScrollbarContext>(SCROLLBAR_NAME);\n\ntype ScrollAreaScrollbarImplElement = React.ElementRef<typeof Primitive.div>;\ntype ScrollAreaScrollbarImplPrivateProps = {\n sizes: Sizes;\n hasThumb: boolean;\n onThumbChange: ScrollbarContext['onThumbChange'];\n onThumbPointerUp: ScrollbarContext['onThumbPointerUp'];\n onThumbPointerDown: ScrollbarContext['onThumbPointerDown'];\n onThumbPositionChange: ScrollbarContext['onThumbPositionChange'];\n onWheelScroll(event: WheelEvent, maxScrollPos: number): void;\n onDragScroll(pointerPos: { x: number; y: number }): void;\n onResize(): void;\n};\ninterface ScrollAreaScrollbarImplProps\n extends Omit<PrimitiveDivProps, keyof ScrollAreaScrollbarImplPrivateProps>,\n ScrollAreaScrollbarImplPrivateProps {}\n\nconst ScrollAreaScrollbarImpl = React.forwardRef<\n ScrollAreaScrollbarImplElement,\n ScrollAreaScrollbarImplProps\n>((props: ScopedProps<ScrollAreaScrollbarImplProps>, 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] = React.useState<ScrollAreaScrollbarElement | null>(null);\n const composeRefs = useComposedRefs(forwardedRef, (node) => setScrollbar(node));\n const rectRef = React.useRef<ClientRect | null>(null);\n const prevWebkitUserSelectRef = React.useRef<string>('');\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\n function handleDragScroll(event: React.PointerEvent<HTMLElement>) {\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\n /**\n * We bind wheel event imperatively so we can switch off passive\n * mode for document wheel event to allow it to be prevented\n */\n React.useEffect(() => {\n const handleWheel = (event: WheelEvent) => {\n const element = event.target as HTMLElement;\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 } as any);\n }, [viewport, scrollbar, maxScrollPos, handleWheelScroll]);\n\n /**\n * Update thumb position on sizes change\n */\n React.useEffect(handleThumbPositionChange, [sizes, handleThumbPositionChange]);\n\n useResizeObserver(scrollbar, handleResize);\n useResizeObserver(context.content, handleResize);\n\n return (\n <ScrollbarProvider\n scope={__scopeScrollArea}\n scrollbar={scrollbar}\n hasThumb={hasThumb}\n onThumbChange={useCallbackRef(onThumbChange)}\n onThumbPointerUp={useCallbackRef(onThumbPointerUp)}\n onThumbPositionChange={handleThumbPositionChange}\n onThumbPointerDown={useCallbackRef(onThumbPointerDown)}\n >\n <Primitive.div\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 as HTMLElement;\n element.setPointerCapture(event.pointerId);\n rectRef.current = scrollbar!.getBoundingClientRect();\n // pointer capture doesn't prevent text selection in Safari\n // so we remove text selection manually when scrolling\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 as HTMLElement;\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 </ScrollbarProvider>\n );\n});\n\n/* -------------------------------------------------------------------------------------------------\n * ScrollAreaThumb\n * -----------------------------------------------------------------------------------------------*/\n\nconst THUMB_NAME = 'ScrollAreaThumb';\n\ntype ScrollAreaThumbElement = ScrollAreaThumbImplElement;\ninterface ScrollAreaThumbProps extends ScrollAreaThumbImplProps {\n /**\n * Used to force mounting when more control is needed. Useful when\n * controlling animation with React animation libraries.\n */\n forceMount?: true;\n}\n\nconst ScrollAreaThumb = React.forwardRef<ScrollAreaThumbElement, ScrollAreaThumbProps>(\n (props: ScopedProps<ScrollAreaThumbProps>, forwardedRef) => {\n const { forceMount, ...thumbProps } = props;\n const scrollbarContext = useScrollbarContext(THUMB_NAME, props.__scopeScrollArea);\n return (\n <Presence present={forceMount || scrollbarContext.hasThumb}>\n <ScrollAreaThumbImpl ref={forwardedRef} {...thumbProps} />\n </Presence>\n );\n }\n);\n\ntype ScrollAreaThumbImplElement = React.ElementRef<typeof Primitive.div>;\ninterface ScrollAreaThumbImplProps extends PrimitiveDivProps {}\n\nconst ScrollAreaThumbImpl = React.forwardRef<ScrollAreaThumbImplElement, ScrollAreaThumbImplProps>(\n (props: ScopedProps<ScrollAreaThumbImplProps>, 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(forwardedRef, (node) =>\n scrollbarContext.onThumbChange(node)\n );\n const removeUnlinkedScrollListenerRef = React.useRef<() => void>();\n const debounceScrollEnd = useDebounceCallback(() => {\n if (removeUnlinkedScrollListenerRef.current) {\n removeUnlinkedScrollListenerRef.current();\n removeUnlinkedScrollListenerRef.current = undefined;\n }\n }, 100);\n\n React.useEffect(() => {\n const viewport = scrollAreaContext.viewport;\n if (viewport) {\n /**\n * We only bind to native scroll event so we know when scroll starts and ends.\n * When scroll starts we start a requestAnimationFrame loop that checks for\n * changes to scroll position. That rAF loop triggers our thumb position change\n * when relevant to avoid scroll-linked effects. We cancel the loop when scroll ends.\n * https://developer.mozilla.org/en-US/docs/Mozilla/Performance/Scroll-linked_effects\n */\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\n return (\n <Primitive.div\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 as HTMLElement;\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);\n\nScrollAreaThumb.displayName = THUMB_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * ScrollAreaCorner\n * -----------------------------------------------------------------------------------------------*/\n\nconst CORNER_NAME = 'ScrollAreaCorner';\n\ntype ScrollAreaCornerElement = ScrollAreaCornerImplElement;\ninterface ScrollAreaCornerProps extends ScrollAreaCornerImplProps {}\n\nconst ScrollAreaCorner = React.forwardRef<ScrollAreaCornerElement, ScrollAreaCornerProps>(\n (props: ScopedProps<ScrollAreaCornerProps>, 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 ? <ScrollAreaCornerImpl {...props} ref={forwardedRef} /> : null;\n }\n);\n\nScrollAreaCorner.displayName = CORNER_NAME;\n\n/* -----------------------------------------------------------------------------------------------*/\n\ntype ScrollAreaCornerImplElement = React.ElementRef<typeof Primitive.div>;\ninterface ScrollAreaCornerImplProps extends PrimitiveDivProps {}\n\nconst ScrollAreaCornerImpl = React.forwardRef<\n ScrollAreaCornerImplElement,\n ScrollAreaCornerImplProps\n>((props: ScopedProps<ScrollAreaCornerImplProps>, forwardedRef) => {\n const { __scopeScrollArea, ...cornerProps } = props;\n const context = useScrollAreaContext(CORNER_NAME, __scopeScrollArea);\n const [width, setWidth] = React.useState(0);\n const [height, setHeight] = React.useState(0);\n const hasSize = Boolean(width && height);\n\n useResizeObserver(context.scrollbarX, () => {\n const height = context.scrollbarX?.offsetHeight || 0;\n context.onCornerHeightChange(height);\n setHeight(height);\n });\n\n useResizeObserver(context.scrollbarY, () => {\n const width = context.scrollbarY?.offsetWidth || 0;\n context.onCornerWidthChange(width);\n setWidth(width);\n });\n\n return hasSize ? (\n <Primitive.div\n {...cornerProps}\n ref={forwardedRef}\n style={{\n width,\n height,\n position: 'absolute',\n right: context.dir === 'ltr' ? 0 : undefined,\n left: context.dir === 'rtl' ? 0 : undefined,\n bottom: 0,\n ...props.style,\n }}\n />\n ) : null;\n});\n\n/* -----------------------------------------------------------------------------------------------*/\n\nfunction toInt(value?: string) {\n return value ? parseInt(value, 10) : 0;\n}\n\nfunction getThumbRatio(viewportSize: number, contentSize: number) {\n const ratio = viewportSize / contentSize;\n return isNaN(ratio) ? 0 : ratio;\n}\n\nfunction getThumbSize(sizes: 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 // minimum of 18 matches macOS minimum\n return Math.max(thumbSize, 18);\n}\n\nfunction getScrollPositionFromPointer(\n pointerPos: number,\n pointerOffset: number,\n sizes: Sizes,\n dir: Direction = 'ltr'\n) {\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 as [number, number]);\n return interpolate(pointerPos);\n}\n\nfunction getThumbOffsetFromScroll(scrollPos: number, sizes: Sizes, dir: Direction = '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 as [number, number]);\n const interpolate = linearScale([0, maxScrollPos], [0, maxThumbPos]);\n return interpolate(scrollWithoutMomentum);\n}\n\n// https://github.com/tmcw-up-for-adoption/simple-linear-scale/blob/master/index.js\nfunction linearScale(input: readonly [number, number], output: readonly [number, number]) {\n return (value: number) => {\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}\n\nfunction isScrollingWithinScrollbarBounds(scrollPos: number, maxScrollPos: number) {\n return scrollPos > 0 && scrollPos < maxScrollPos;\n}\n\n// Custom scroll handler to avoid scroll-linked effects\n// https://developer.mozilla.org/en-US/docs/Mozilla/Performance/Scroll-linked_effects\nconst addUnlinkedScrollListener = (node: HTMLElement, handler = () => {}) => {\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};\n\nfunction useDebounceCallback(callback: () => void, delay: number) {\n const handleCallback = useCallbackRef(callback);\n const debounceTimerRef = React.useRef(0);\n React.useEffect(() => () => window.clearTimeout(debounceTimerRef.current), []);\n return React.useCallback(() => {\n window.clearTimeout(debounceTimerRef.current);\n debounceTimerRef.current = window.setTimeout(handleCallback, delay);\n }, [handleCallback, delay]);\n}\n\nfunction useResizeObserver(element: HTMLElement | null, onResize: () => void) {\n const handleResize = useCallbackRef(onResize);\n useLayoutEffect(() => {\n let rAF = 0;\n if (element) {\n /**\n * Resize Observer will throw an often benign error that says `ResizeObserver loop\n * completed with undelivered notifications`. This means that ResizeObserver was not\n * able to deliver all observations within a single animation frame, so we use\n * `requestAnimationFrame` to ensure we don't deliver unnecessary observations.\n * Further reading: https://github.com/WICG/resize-observer/issues/38\n */\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}\n\n/* -----------------------------------------------------------------------------------------------*/\n\nconst Root = ScrollArea;\nconst Viewport = ScrollAreaViewport;\nconst Scrollbar = ScrollAreaScrollbar;\nconst Thumb = ScrollAreaThumb;\nconst Corner = ScrollAreaCorner;\n\nexport {\n createScrollAreaScope,\n //\n ScrollArea,\n ScrollAreaViewport,\n ScrollAreaScrollbar,\n ScrollAreaThumb,\n ScrollAreaCorner,\n //\n Root,\n Viewport,\n Scrollbar,\n Thumb,\n Corner,\n};\nexport type {\n ScrollAreaProps,\n ScrollAreaViewportProps,\n ScrollAreaScrollbarProps,\n ScrollAreaThumbProps,\n ScrollAreaCornerProps,\n};\n","import * as React from 'react';\n\ntype Machine<S> = { [k: string]: { [k: string]: S } };\ntype MachineState<T> = keyof T;\ntype MachineEvent<T> = keyof UnionToIntersection<T[keyof T]>;\n\n// 🤯 https://fettblog.eu/typescript-union-to-intersection/\ntype UnionToIntersection<T> = (T extends any ? (x: T) => any : never) extends (x: infer R) => any\n ? R\n : never;\n\nexport function useStateMachine<M>(\n initialState: MachineState<M>,\n machine: M & Machine<MachineState<M>>\n) {\n return React.useReducer((state: MachineState<M>, event: MachineEvent<M>): MachineState<M> => {\n const nextState = (machine[state] as any)[event];\n return nextState ?? state;\n }, initialState);\n}\n"],"names":["createScrollAreaScope","ScrollArea","ScrollAreaViewport","ScrollAreaScrollbar","ScrollAreaThumb","ScrollAreaCorner","Root","Viewport","Scrollbar","Thumb","Corner","React","Primitive","Presence","createContextScope","useComposedRefs","useCallbackRef","useDirection","useLayoutEffect","clamp","composeEventHandlers","useStateMachine","SCROLL_AREA_NAME","createScrollAreaContext","ScrollAreaProvider","useScrollAreaContext","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","node","direction","position","style","VIEWPORT_NAME","children","viewportProps","context","ref","useRef","onViewportChange","__html","overflowX","overflowY","onContentChange","minWidth","display","SCROLLBAR_NAME","forceMount","scrollbarProps","onScrollbarXEnabledChange","onScrollbarYEnabledChange","isHorizontal","orientation","useEffect","ScrollAreaScrollbarHover","visible","setVisible","hideTimer","handlePointerEnter","window","clearTimeout","handlePointerLeave","setTimeout","addEventListener","removeEventListener","ScrollAreaScrollbarScroll","debounceScrollEnd","useDebounceCallback","send","state","hidden","SCROLL","scrolling","SCROLL_END","POINTER_ENTER","interacting","POINTER_LEAVE","idle","HIDE","scrollDirection","prevScrollPos","handleScroll","scrollPos","hasScrollInDirectionChanged","onPointerEnter","onPointerLeave","ScrollAreaScrollbarAuto","handleResize","isOverflowX","offsetWidth","scrollWidth","isOverflowY","offsetHeight","scrollHeight","useResizeObserver","ScrollAreaScrollbarVisible","thumbRef","pointerOffsetRef","sizes","setSizes","scrollbar","size","paddingStart","paddingEnd","thumbRatio","getThumbRatio","commonProps","onSizesChange","hasThumb","Boolean","onThumbChange","thumb","current","onThumbPointerUp","onThumbPointerDown","pointerPos","getScrollPosition","getScrollPositionFromPointer","scrollLeft","offset","getThumbOffsetFromScroll","transform","scrollTop","ScrollAreaScrollbarX","computedStyle","setComputedStyle","composeRefs","onScrollbarXChange","getComputedStyle","bottom","left","right","getThumbSize","x","onDragScroll","event","maxScrollPos","deltaX","onWheelScroll","isScrollingWithinScrollbarBounds","preventDefault","clientWidth","toInt","paddingLeft","paddingRight","ScrollAreaScrollbarY","onScrollbarYChange","top","undefined","y","deltaY","clientHeight","paddingTop","paddingBottom","ScrollbarProvider","useScrollbarContext","ScrollAreaScrollbarImpl","onThumbPositionChange","onResize","setScrollbar","rectRef","prevWebkitUserSelectRef","handleWheelScroll","handleThumbPositionChange","handleDragScroll","clientX","clientY","handleWheel","element","target","isScrollbarWheel","contains","document","passive","onPointerDown","mainPointer","button","setPointerCapture","pointerId","getBoundingClientRect","body","webkitUserSelect","scrollBehavior","onPointerMove","onPointerUp","hasPointerCapture","releasePointerCapture","THUMB_NAME","thumbProps","scrollbarContext","ScrollAreaThumbImpl","scrollAreaContext","composedRef","removeUnlinkedScrollListenerRef","listener","addUnlinkedScrollListener","width","height","onPointerDownCapture","thumbRect","CORNER_NAME","hasBothScrollbarsVisible","hasCorner","ScrollAreaCornerImpl","cornerProps","setWidth","setHeight","hasSize","onCornerHeightChange","onCornerWidthChange","value","parseInt","viewportSize","contentSize","ratio","isNaN","scrollbarPadding","thumbSize","Math","max","pointerOffset","thumbSizePx","thumbCenter","thumbOffsetFromEnd","minPointerPos","maxPointerPos","scrollRange","interpolate","linearScale","maxThumbPos","scrollClampRange","scrollWithoutMomentum","input","output","handler","prevPosition","rAF","loop","isHorizontalScroll","isVerticalScroll","requestAnimationFrame","cancelAnimationFrame","callback","delay","handleCallback","debounceTimerRef","useCallback","resizeObserver","ResizeObserver","observe","unobserve","initialState","machine","useReducer","nextState"],"version":3,"file":"index.js.map"}
|
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"mappings":"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","sources":["packages/react/scroll-area/src/index.ts","packages/react/scroll-area/src/ScrollArea.tsx","packages/react/scroll-area/src/useStateMachine.ts"],"sourcesContent":["export {\n createScrollAreaScope,\n //\n ScrollArea,\n ScrollAreaViewport,\n ScrollAreaScrollbar,\n ScrollAreaThumb,\n ScrollAreaCorner,\n //\n Root,\n Viewport,\n Scrollbar,\n Thumb,\n Corner,\n} from './ScrollArea';\nexport type {\n ScrollAreaProps,\n ScrollAreaViewportProps,\n ScrollAreaScrollbarProps,\n ScrollAreaThumbProps,\n ScrollAreaCornerProps,\n} from './ScrollArea';\n","/// <reference types=\"resize-observer-browser\" />\n\nimport * as React 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';\nimport { useStateMachine } from './useStateMachine';\n\nimport type * as Radix from '@radix-ui/react-primitive';\nimport type { Scope } from '@radix-ui/react-context';\n\ntype Direction = 'ltr' | 'rtl';\ntype Sizes = {\n content: number;\n viewport: number;\n scrollbar: {\n size: number;\n paddingStart: number;\n paddingEnd: number;\n };\n};\n\n/* -------------------------------------------------------------------------------------------------\n * ScrollArea\n * -----------------------------------------------------------------------------------------------*/\n\nconst SCROLL_AREA_NAME = 'ScrollArea';\n\ntype ScopedProps<P> = P & { __scopeScrollArea?: Scope };\nconst [createScrollAreaContext, createScrollAreaScope] = createContextScope(SCROLL_AREA_NAME);\n\ntype ScrollAreaContextValue = {\n type: 'auto' | 'always' | 'scroll' | 'hover';\n dir: Direction;\n scrollHideDelay: number;\n scrollArea: ScrollAreaElement | null;\n viewport: ScrollAreaViewportElement | null;\n onViewportChange(viewport: ScrollAreaViewportElement | null): void;\n content: HTMLDivElement | null;\n onContentChange(content: HTMLDivElement): void;\n scrollbarX: ScrollAreaScrollbarElement | null;\n onScrollbarXChange(scrollbar: ScrollAreaScrollbarElement | null): void;\n scrollbarXEnabled: boolean;\n onScrollbarXEnabledChange(rendered: boolean): void;\n scrollbarY: ScrollAreaScrollbarElement | null;\n onScrollbarYChange(scrollbar: ScrollAreaScrollbarElement | null): void;\n scrollbarYEnabled: boolean;\n onScrollbarYEnabledChange(rendered: boolean): void;\n onCornerWidthChange(width: number): void;\n onCornerHeightChange(height: number): void;\n};\n\nconst [ScrollAreaProvider, useScrollAreaContext] =\n createScrollAreaContext<ScrollAreaContextValue>(SCROLL_AREA_NAME);\n\ntype ScrollAreaElement = React.ElementRef<typeof Primitive.div>;\ntype PrimitiveDivProps = Radix.ComponentPropsWithoutRef<typeof Primitive.div>;\ninterface ScrollAreaProps extends PrimitiveDivProps {\n type?: ScrollAreaContextValue['type'];\n dir?: ScrollAreaContextValue['dir'];\n scrollHideDelay?: number;\n}\n\nconst ScrollArea = React.forwardRef<ScrollAreaElement, ScrollAreaProps>(\n (props: ScopedProps<ScrollAreaProps>, forwardedRef) => {\n const {\n __scopeScrollArea,\n type = 'hover',\n dir,\n scrollHideDelay = 600,\n ...scrollAreaProps\n } = props;\n const [scrollArea, setScrollArea] = React.useState<ScrollAreaElement | null>(null);\n const [viewport, setViewport] = React.useState<ScrollAreaViewportElement | null>(null);\n const [content, setContent] = React.useState<HTMLDivElement | null>(null);\n const [scrollbarX, setScrollbarX] = React.useState<ScrollAreaScrollbarElement | null>(null);\n const [scrollbarY, setScrollbarY] = React.useState<ScrollAreaScrollbarElement | null>(null);\n const [cornerWidth, setCornerWidth] = React.useState(0);\n const [cornerHeight, setCornerHeight] = React.useState(0);\n const [scrollbarXEnabled, setScrollbarXEnabled] = React.useState(false);\n const [scrollbarYEnabled, setScrollbarYEnabled] = React.useState(false);\n const composedRefs = useComposedRefs(forwardedRef, (node) => setScrollArea(node));\n const direction = useDirection(dir);\n\n return (\n <ScrollAreaProvider\n scope={__scopeScrollArea}\n type={type}\n dir={direction}\n scrollHideDelay={scrollHideDelay}\n scrollArea={scrollArea}\n viewport={viewport}\n onViewportChange={setViewport}\n content={content}\n onContentChange={setContent}\n scrollbarX={scrollbarX}\n onScrollbarXChange={setScrollbarX}\n scrollbarXEnabled={scrollbarXEnabled}\n onScrollbarXEnabledChange={setScrollbarXEnabled}\n scrollbarY={scrollbarY}\n onScrollbarYChange={setScrollbarY}\n scrollbarYEnabled={scrollbarYEnabled}\n onScrollbarYEnabledChange={setScrollbarYEnabled}\n onCornerWidthChange={setCornerWidth}\n onCornerHeightChange={setCornerHeight}\n >\n <Primitive.div\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' as any]: cornerWidth + 'px',\n ['--radix-scroll-area-corner-height' as any]: cornerHeight + 'px',\n ...props.style,\n }}\n />\n </ScrollAreaProvider>\n );\n }\n);\n\nScrollArea.displayName = SCROLL_AREA_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * ScrollAreaViewport\n * -----------------------------------------------------------------------------------------------*/\n\nconst VIEWPORT_NAME = 'ScrollAreaViewport';\n\ntype ScrollAreaViewportElement = React.ElementRef<typeof Primitive.div>;\ninterface ScrollAreaViewportProps extends PrimitiveDivProps {}\n\nconst ScrollAreaViewport = React.forwardRef<ScrollAreaViewportElement, ScrollAreaViewportProps>(\n (props: ScopedProps<ScrollAreaViewportProps>, forwardedRef) => {\n const { __scopeScrollArea, children, ...viewportProps } = props;\n const context = useScrollAreaContext(VIEWPORT_NAME, __scopeScrollArea);\n const ref = React.useRef<ScrollAreaViewportElement>(null);\n const composedRefs = useComposedRefs(forwardedRef, ref, context.onViewportChange);\n return (\n <>\n {/* Hide scrollbars cross-browser and enable momentum scroll for touch devices */}\n <style\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 />\n <Primitive.div\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/overflowed#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 >\n {/**\n * `display: table` ensures our content div will match the size of its children in both\n * horizontal and vertical axis so we can determine if scroll width/height changed and\n * recalculate thumb sizes. This doesn't account for children with *percentage*\n * widths that change. We'll wait to see what use-cases consumers come up with there\n * before trying to resolve it.\n */}\n <div ref={context.onContentChange} style={{ minWidth: '100%', display: 'table' }}>\n {children}\n </div>\n </Primitive.div>\n </>\n );\n }\n);\n\nScrollAreaViewport.displayName = VIEWPORT_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * ScrollAreaScrollbar\n * -----------------------------------------------------------------------------------------------*/\n\nconst SCROLLBAR_NAME = 'ScrollAreaScrollbar';\n\ntype ScrollAreaScrollbarElement = ScrollAreaScrollbarVisibleElement;\ninterface ScrollAreaScrollbarProps extends ScrollAreaScrollbarVisibleProps {\n forceMount?: true;\n}\n\nconst ScrollAreaScrollbar = React.forwardRef<ScrollAreaScrollbarElement, ScrollAreaScrollbarProps>(\n (props: ScopedProps<ScrollAreaScrollbarProps>, 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\n React.useEffect(() => {\n isHorizontal ? onScrollbarXEnabledChange(true) : onScrollbarYEnabledChange(true);\n return () => {\n isHorizontal ? onScrollbarXEnabledChange(false) : onScrollbarYEnabledChange(false);\n };\n }, [isHorizontal, onScrollbarXEnabledChange, onScrollbarYEnabledChange]);\n\n return context.type === 'hover' ? (\n <ScrollAreaScrollbarHover {...scrollbarProps} ref={forwardedRef} forceMount={forceMount} />\n ) : context.type === 'scroll' ? (\n <ScrollAreaScrollbarScroll {...scrollbarProps} ref={forwardedRef} forceMount={forceMount} />\n ) : context.type === 'auto' ? (\n <ScrollAreaScrollbarAuto {...scrollbarProps} ref={forwardedRef} forceMount={forceMount} />\n ) : context.type === 'always' ? (\n <ScrollAreaScrollbarVisible {...scrollbarProps} ref={forwardedRef} />\n ) : null;\n }\n);\n\nScrollAreaScrollbar.displayName = SCROLLBAR_NAME;\n\n/* -----------------------------------------------------------------------------------------------*/\n\ntype ScrollAreaScrollbarHoverElement = ScrollAreaScrollbarAutoElement;\ninterface ScrollAreaScrollbarHoverProps extends ScrollAreaScrollbarAutoProps {\n forceMount?: true;\n}\n\nconst ScrollAreaScrollbarHover = React.forwardRef<\n ScrollAreaScrollbarHoverElement,\n ScrollAreaScrollbarHoverProps\n>((props: ScopedProps<ScrollAreaScrollbarHoverProps>, forwardedRef) => {\n const { forceMount, ...scrollbarProps } = props;\n const context = useScrollAreaContext(SCROLLBAR_NAME, props.__scopeScrollArea);\n const [visible, setVisible] = React.useState(false);\n\n React.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\n return (\n <Presence present={forceMount || visible}>\n <ScrollAreaScrollbarAuto\n data-state={visible ? 'visible' : 'hidden'}\n {...scrollbarProps}\n ref={forwardedRef}\n />\n </Presence>\n );\n});\n\ntype ScrollAreaScrollbarScrollElement = ScrollAreaScrollbarVisibleElement;\ninterface ScrollAreaScrollbarScrollProps extends ScrollAreaScrollbarVisibleProps {\n forceMount?: true;\n}\n\nconst ScrollAreaScrollbarScroll = React.forwardRef<\n ScrollAreaScrollbarScrollElement,\n ScrollAreaScrollbarScrollProps\n>((props: ScopedProps<ScrollAreaScrollbarScrollProps>, 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\n React.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\n React.useEffect(() => {\n const viewport = context.viewport;\n const scrollDirection = isHorizontal ? 'scrollLeft' : 'scrollTop';\n\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\n return (\n <Presence present={forceMount || state !== 'hidden'}>\n <ScrollAreaScrollbarVisible\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 </Presence>\n );\n});\n\ntype ScrollAreaScrollbarAutoElement = ScrollAreaScrollbarVisibleElement;\ninterface ScrollAreaScrollbarAutoProps extends ScrollAreaScrollbarVisibleProps {\n forceMount?: true;\n}\n\nconst ScrollAreaScrollbarAuto = React.forwardRef<\n ScrollAreaScrollbarAutoElement,\n ScrollAreaScrollbarAutoProps\n>((props: ScopedProps<ScrollAreaScrollbarAutoProps>, forwardedRef) => {\n const context = useScrollAreaContext(SCROLLBAR_NAME, props.__scopeScrollArea);\n const { forceMount, ...scrollbarProps } = props;\n const [visible, setVisible] = React.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\n useResizeObserver(context.viewport, handleResize);\n useResizeObserver(context.content, handleResize);\n\n return (\n <Presence present={forceMount || visible}>\n <ScrollAreaScrollbarVisible\n data-state={visible ? 'visible' : 'hidden'}\n {...scrollbarProps}\n ref={forwardedRef}\n />\n </Presence>\n );\n});\n\n/* -----------------------------------------------------------------------------------------------*/\n\ntype ScrollAreaScrollbarVisibleElement = ScrollAreaScrollbarAxisElement;\ninterface ScrollAreaScrollbarVisibleProps\n extends Omit<ScrollAreaScrollbarAxisProps, keyof ScrollAreaScrollbarAxisPrivateProps> {\n orientation?: 'horizontal' | 'vertical';\n}\n\nconst ScrollAreaScrollbarVisible = React.forwardRef<\n ScrollAreaScrollbarVisibleElement,\n ScrollAreaScrollbarVisibleProps\n>((props: ScopedProps<ScrollAreaScrollbarVisibleProps>, forwardedRef) => {\n const { orientation = 'vertical', ...scrollbarProps } = props;\n const context = useScrollAreaContext(SCROLLBAR_NAME, props.__scopeScrollArea);\n const thumbRef = React.useRef<ScrollAreaThumbElement | null>(null);\n const pointerOffsetRef = React.useRef(0);\n const [sizes, setSizes] = React.useState<Sizes>({\n content: 0,\n viewport: 0,\n scrollbar: { size: 0, paddingStart: 0, paddingEnd: 0 },\n });\n const thumbRatio = getThumbRatio(sizes.viewport, sizes.content);\n\n type UncommonProps = 'onThumbPositionChange' | 'onDragScroll' | 'onWheelScroll';\n const commonProps: Omit<ScrollAreaScrollbarAxisPrivateProps, UncommonProps> = {\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\n function getScrollPosition(pointerPos: number, dir?: Direction) {\n return getScrollPositionFromPointer(pointerPos, pointerOffsetRef.current, sizes, dir);\n }\n\n if (orientation === 'horizontal') {\n return (\n <ScrollAreaScrollbarX\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\n if (orientation === 'vertical') {\n return (\n <ScrollAreaScrollbarY\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\n return null;\n});\n\n/* -----------------------------------------------------------------------------------------------*/\n\ntype ScrollAreaScrollbarAxisPrivateProps = {\n hasThumb: boolean;\n sizes: Sizes;\n onSizesChange(sizes: Sizes): void;\n onThumbChange(thumb: ScrollAreaThumbElement | null): void;\n onThumbPointerDown(pointerPos: number): void;\n onThumbPointerUp(): void;\n onThumbPositionChange(): void;\n onWheelScroll(scrollPos: number): void;\n onDragScroll(pointerPos: number): void;\n};\n\ntype ScrollAreaScrollbarAxisElement = ScrollAreaScrollbarImplElement;\ninterface ScrollAreaScrollbarAxisProps\n extends Omit<ScrollAreaScrollbarImplProps, keyof ScrollAreaScrollbarImplPrivateProps>,\n ScrollAreaScrollbarAxisPrivateProps {}\n\nconst ScrollAreaScrollbarX = React.forwardRef<\n ScrollAreaScrollbarAxisElement,\n ScrollAreaScrollbarAxisProps\n>((props: ScopedProps<ScrollAreaScrollbarAxisProps>, forwardedRef) => {\n const { sizes, onSizesChange, ...scrollbarProps } = props;\n const context = useScrollAreaContext(SCROLLBAR_NAME, props.__scopeScrollArea);\n const [computedStyle, setComputedStyle] = React.useState<CSSStyleDeclaration>();\n const ref = React.useRef<ScrollAreaScrollbarAxisElement>(null);\n const composeRefs = useComposedRefs(forwardedRef, ref, context.onScrollbarXChange);\n\n React.useEffect(() => {\n if (ref.current) setComputedStyle(getComputedStyle(ref.current));\n }, [ref]);\n\n return (\n <ScrollAreaScrollbarImpl\n data-orientation=\"horizontal\"\n {...scrollbarProps}\n ref={composeRefs}\n sizes={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' as any]: 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 // prevent window scroll when wheeling on scrollbar\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});\n\nconst ScrollAreaScrollbarY = React.forwardRef<\n ScrollAreaScrollbarAxisElement,\n ScrollAreaScrollbarAxisProps\n>((props: ScopedProps<ScrollAreaScrollbarAxisProps>, forwardedRef) => {\n const { sizes, onSizesChange, ...scrollbarProps } = props;\n const context = useScrollAreaContext(SCROLLBAR_NAME, props.__scopeScrollArea);\n const [computedStyle, setComputedStyle] = React.useState<CSSStyleDeclaration>();\n const ref = React.useRef<ScrollAreaScrollbarAxisElement>(null);\n const composeRefs = useComposedRefs(forwardedRef, ref, context.onScrollbarYChange);\n\n React.useEffect(() => {\n if (ref.current) setComputedStyle(getComputedStyle(ref.current));\n }, [ref]);\n\n return (\n <ScrollAreaScrollbarImpl\n data-orientation=\"vertical\"\n {...scrollbarProps}\n ref={composeRefs}\n sizes={sizes}\n style={{\n top: 0,\n right: context.dir === 'ltr' ? 0 : undefined,\n left: context.dir === 'rtl' ? 0 : undefined,\n bottom: 'var(--radix-scroll-area-corner-height)',\n ['--radix-scroll-area-thumb-height' as any]: 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 // prevent window scroll when wheeling on scrollbar\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});\n\n/* -----------------------------------------------------------------------------------------------*/\n\ntype ScrollbarContext = {\n hasThumb: boolean;\n scrollbar: ScrollAreaScrollbarElement | null;\n onThumbChange(thumb: ScrollAreaThumbElement | null): void;\n onThumbPointerUp(): void;\n onThumbPointerDown(pointerPos: { x: number; y: number }): void;\n onThumbPositionChange(): void;\n};\n\nconst [ScrollbarProvider, useScrollbarContext] =\n createScrollAreaContext<ScrollbarContext>(SCROLLBAR_NAME);\n\ntype ScrollAreaScrollbarImplElement = React.ElementRef<typeof Primitive.div>;\ntype ScrollAreaScrollbarImplPrivateProps = {\n sizes: Sizes;\n hasThumb: boolean;\n onThumbChange: ScrollbarContext['onThumbChange'];\n onThumbPointerUp: ScrollbarContext['onThumbPointerUp'];\n onThumbPointerDown: ScrollbarContext['onThumbPointerDown'];\n onThumbPositionChange: ScrollbarContext['onThumbPositionChange'];\n onWheelScroll(event: WheelEvent, maxScrollPos: number): void;\n onDragScroll(pointerPos: { x: number; y: number }): void;\n onResize(): void;\n};\ninterface ScrollAreaScrollbarImplProps\n extends PrimitiveDivProps,\n ScrollAreaScrollbarImplPrivateProps {}\n\nconst ScrollAreaScrollbarImpl = React.forwardRef<\n ScrollAreaScrollbarImplElement,\n ScrollAreaScrollbarImplProps\n>((props: ScopedProps<ScrollAreaScrollbarImplProps>, 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] = React.useState<ScrollAreaScrollbarElement | null>(null);\n const composeRefs = useComposedRefs(forwardedRef, (node) => setScrollbar(node));\n const rectRef = React.useRef<ClientRect | null>(null);\n const prevWebkitUserSelectRef = React.useRef<string>('');\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\n function handleDragScroll(event: React.PointerEvent<HTMLElement>) {\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\n /**\n * We bind wheel event imperatively so we can switch off passive\n * mode for document wheel event to allow it to be prevented\n */\n React.useEffect(() => {\n const handleWheel = (event: WheelEvent) => {\n const element = event.target as HTMLElement;\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 } as any);\n }, [viewport, scrollbar, maxScrollPos, handleWheelScroll]);\n\n /**\n * Update thumb position on sizes change\n */\n React.useEffect(handleThumbPositionChange, [sizes, handleThumbPositionChange]);\n\n useResizeObserver(scrollbar, handleResize);\n useResizeObserver(context.content, handleResize);\n\n return (\n <ScrollbarProvider\n scope={__scopeScrollArea}\n scrollbar={scrollbar}\n hasThumb={hasThumb}\n onThumbChange={useCallbackRef(onThumbChange)}\n onThumbPointerUp={useCallbackRef(onThumbPointerUp)}\n onThumbPositionChange={handleThumbPositionChange}\n onThumbPointerDown={useCallbackRef(onThumbPointerDown)}\n >\n <Primitive.div\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 as HTMLElement;\n element.setPointerCapture(event.pointerId);\n rectRef.current = scrollbar!.getBoundingClientRect();\n // pointer capture doesn't prevent text selection in Safari\n // so we remove text selection manually when scrolling\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 as HTMLElement;\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 </ScrollbarProvider>\n );\n});\n\n/* -------------------------------------------------------------------------------------------------\n * ScrollAreaThumb\n * -----------------------------------------------------------------------------------------------*/\n\nconst THUMB_NAME = 'ScrollAreaThumb';\n\ntype ScrollAreaThumbElement = ScrollAreaThumbImplElement;\ninterface ScrollAreaThumbProps extends ScrollAreaThumbImplProps {\n /**\n * Used to force mounting when more control is needed. Useful when\n * controlling animation with React animation libraries.\n */\n forceMount?: true;\n}\n\nconst ScrollAreaThumb = React.forwardRef<ScrollAreaThumbElement, ScrollAreaThumbProps>(\n (props: ScopedProps<ScrollAreaThumbProps>, forwardedRef) => {\n const { forceMount, ...thumbProps } = props;\n const scrollbarContext = useScrollbarContext(THUMB_NAME, props.__scopeScrollArea);\n return (\n <Presence present={forceMount || scrollbarContext.hasThumb}>\n <ScrollAreaThumbImpl ref={forwardedRef} {...thumbProps} />\n </Presence>\n );\n }\n);\n\ntype ScrollAreaThumbImplElement = React.ElementRef<typeof Primitive.div>;\ninterface ScrollAreaThumbImplProps extends PrimitiveDivProps {}\n\nconst ScrollAreaThumbImpl = React.forwardRef<ScrollAreaThumbImplElement, ScrollAreaThumbImplProps>(\n (props: ScopedProps<ScrollAreaThumbImplProps>, 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(forwardedRef, (node) =>\n scrollbarContext.onThumbChange(node)\n );\n const removeUnlinkedScrollListenerRef = React.useRef<() => void>();\n const debounceScrollEnd = useDebounceCallback(() => {\n if (removeUnlinkedScrollListenerRef.current) {\n removeUnlinkedScrollListenerRef.current();\n removeUnlinkedScrollListenerRef.current = undefined;\n }\n }, 100);\n\n React.useEffect(() => {\n const viewport = scrollAreaContext.viewport;\n if (viewport) {\n /**\n * We only bind to native scroll event so we know when scroll starts and ends.\n * When scroll starts we start a requestAnimationFrame loop that checks for\n * changes to scroll position. That rAF loop triggers our thumb position change\n * when relevant to avoid scroll-linked effects. We cancel the loop when scroll ends.\n * https://developer.mozilla.org/en-US/docs/Mozilla/Performance/Scroll-linked_effects\n */\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\n return (\n <Primitive.div\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 as HTMLElement;\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);\n\nScrollAreaThumb.displayName = THUMB_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * ScrollAreaCorner\n * -----------------------------------------------------------------------------------------------*/\n\nconst CORNER_NAME = 'ScrollAreaCorner';\n\ntype ScrollAreaCornerElement = ScrollAreaCornerImplElement;\ninterface ScrollAreaCornerProps extends ScrollAreaCornerImplProps {}\n\nconst ScrollAreaCorner = React.forwardRef<ScrollAreaCornerElement, ScrollAreaCornerProps>(\n (props: ScopedProps<ScrollAreaCornerProps>, 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 ? <ScrollAreaCornerImpl {...props} ref={forwardedRef} /> : null;\n }\n);\n\nScrollAreaCorner.displayName = CORNER_NAME;\n\n/* -----------------------------------------------------------------------------------------------*/\n\ntype ScrollAreaCornerImplElement = React.ElementRef<typeof Primitive.div>;\ninterface ScrollAreaCornerImplProps extends PrimitiveDivProps {}\n\nconst ScrollAreaCornerImpl = React.forwardRef<\n ScrollAreaCornerImplElement,\n ScrollAreaCornerImplProps\n>((props: ScopedProps<ScrollAreaCornerImplProps>, forwardedRef) => {\n const { __scopeScrollArea, ...cornerProps } = props;\n const context = useScrollAreaContext(CORNER_NAME, __scopeScrollArea);\n const [width, setWidth] = React.useState(0);\n const [height, setHeight] = React.useState(0);\n const hasSize = Boolean(width && height);\n\n useResizeObserver(context.scrollbarX, () => {\n const height = context.scrollbarX?.offsetHeight || 0;\n context.onCornerHeightChange(height);\n setHeight(height);\n });\n\n useResizeObserver(context.scrollbarY, () => {\n const width = context.scrollbarY?.offsetWidth || 0;\n context.onCornerWidthChange(width);\n setWidth(width);\n });\n\n return hasSize ? (\n <Primitive.div\n {...cornerProps}\n ref={forwardedRef}\n style={{\n width,\n height,\n position: 'absolute',\n right: context.dir === 'ltr' ? 0 : undefined,\n left: context.dir === 'rtl' ? 0 : undefined,\n bottom: 0,\n ...props.style,\n }}\n />\n ) : null;\n});\n\n/* -----------------------------------------------------------------------------------------------*/\n\nfunction toInt(value?: string) {\n return value ? parseInt(value, 10) : 0;\n}\n\nfunction getThumbRatio(viewportSize: number, contentSize: number) {\n const ratio = viewportSize / contentSize;\n return isNaN(ratio) ? 0 : ratio;\n}\n\nfunction getThumbSize(sizes: 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 // minimum of 18 matches macOS minimum\n return Math.max(thumbSize, 18);\n}\n\nfunction getScrollPositionFromPointer(\n pointerPos: number,\n pointerOffset: number,\n sizes: Sizes,\n dir: Direction = 'ltr'\n) {\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 as [number, number]);\n return interpolate(pointerPos);\n}\n\nfunction getThumbOffsetFromScroll(scrollPos: number, sizes: Sizes, dir: Direction = '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 as [number, number]);\n const interpolate = linearScale([0, maxScrollPos], [0, maxThumbPos]);\n return interpolate(scrollWithoutMomentum);\n}\n\n// https://github.com/tmcw-up-for-adoption/simple-linear-scale/blob/master/index.js\nfunction linearScale(input: readonly [number, number], output: readonly [number, number]) {\n return (value: number) => {\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}\n\nfunction isScrollingWithinScrollbarBounds(scrollPos: number, maxScrollPos: number) {\n return scrollPos > 0 && scrollPos < maxScrollPos;\n}\n\n// Custom scroll handler to avoid scroll-linked effects\n// https://developer.mozilla.org/en-US/docs/Mozilla/Performance/Scroll-linked_effects\nconst addUnlinkedScrollListener = (node: HTMLElement, handler = () => {}) => {\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};\n\nfunction useDebounceCallback(callback: () => void, delay: number) {\n const handleCallback = useCallbackRef(callback);\n const debounceTimerRef = React.useRef(0);\n React.useEffect(() => () => window.clearTimeout(debounceTimerRef.current), []);\n return React.useCallback(() => {\n window.clearTimeout(debounceTimerRef.current);\n debounceTimerRef.current = window.setTimeout(handleCallback, delay);\n }, [handleCallback, delay]);\n}\n\nfunction useResizeObserver(element: HTMLElement | null, onResize: () => void) {\n const handleResize = useCallbackRef(onResize);\n useLayoutEffect(() => {\n let rAF = 0;\n if (element) {\n /**\n * Resize Observer will throw an often benign error that says `ResizeObserver loop\n * completed with undelivered notifications`. This means that ResizeObserver was not\n * able to deliver all observations within a single animation frame, so we use\n * `requestAnimationFrame` to ensure we don't deliver unnecessary observations.\n * Further reading: https://github.com/WICG/resize-observer/issues/38\n */\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}\n\n/* -----------------------------------------------------------------------------------------------*/\n\nconst Root = ScrollArea;\nconst Viewport = ScrollAreaViewport;\nconst Scrollbar = ScrollAreaScrollbar;\nconst Thumb = ScrollAreaThumb;\nconst Corner = ScrollAreaCorner;\n\nexport {\n createScrollAreaScope,\n //\n ScrollArea,\n ScrollAreaViewport,\n ScrollAreaScrollbar,\n ScrollAreaThumb,\n ScrollAreaCorner,\n //\n Root,\n Viewport,\n Scrollbar,\n Thumb,\n Corner,\n};\nexport type {\n ScrollAreaProps,\n ScrollAreaViewportProps,\n ScrollAreaScrollbarProps,\n ScrollAreaThumbProps,\n ScrollAreaCornerProps,\n};\n","import * as React from 'react';\n\ntype Machine<S> = { [k: string]: { [k: string]: S } };\ntype MachineState<T> = keyof T;\ntype MachineEvent<T> = keyof UnionToIntersection<T[keyof T]>;\n\n// 🤯 https://fettblog.eu/typescript-union-to-intersection/\ntype UnionToIntersection<T> = (T extends any ? (x: T) => any : never) extends (x: infer R) => any\n ? R\n : never;\n\nexport function useStateMachine<M>(\n initialState: MachineState<M>,\n machine: M & Machine<MachineState<M>>\n) {\n return React.useReducer((state: MachineState<M>, event: MachineEvent<M>): MachineState<M> => {\n const nextState = (machine[state] as any)[event];\n return nextState ?? state;\n }, initialState);\n}\n"],"names":["createScrollAreaScope","ScrollArea","ScrollAreaViewport","ScrollAreaScrollbar","ScrollAreaThumb","ScrollAreaCorner","Root","Viewport","Scrollbar","Thumb","Corner","React","Primitive","Presence","createContextScope","useComposedRefs","useCallbackRef","useDirection","useLayoutEffect","clamp","composeEventHandlers","useStateMachine","SCROLL_AREA_NAME","createScrollAreaContext","ScrollAreaProvider","useScrollAreaContext","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","node","direction","position","style","VIEWPORT_NAME","children","viewportProps","context","ref","useRef","onViewportChange","__html","overflowX","overflowY","onContentChange","minWidth","display","SCROLLBAR_NAME","forceMount","scrollbarProps","onScrollbarXEnabledChange","onScrollbarYEnabledChange","isHorizontal","orientation","useEffect","ScrollAreaScrollbarHover","visible","setVisible","hideTimer","handlePointerEnter","window","clearTimeout","handlePointerLeave","setTimeout","addEventListener","removeEventListener","ScrollAreaScrollbarScroll","debounceScrollEnd","useDebounceCallback","send","state","hidden","SCROLL","scrolling","SCROLL_END","POINTER_ENTER","interacting","POINTER_LEAVE","idle","HIDE","scrollDirection","prevScrollPos","handleScroll","scrollPos","hasScrollInDirectionChanged","onPointerEnter","onPointerLeave","ScrollAreaScrollbarAuto","handleResize","isOverflowX","offsetWidth","scrollWidth","isOverflowY","offsetHeight","scrollHeight","useResizeObserver","ScrollAreaScrollbarVisible","thumbRef","pointerOffsetRef","sizes","setSizes","scrollbar","size","paddingStart","paddingEnd","thumbRatio","getThumbRatio","commonProps","onSizesChange","hasThumb","Boolean","onThumbChange","thumb","current","onThumbPointerUp","onThumbPointerDown","pointerPos","getScrollPosition","getScrollPositionFromPointer","scrollLeft","offset","getThumbOffsetFromScroll","transform","scrollTop","ScrollAreaScrollbarX","computedStyle","setComputedStyle","composeRefs","onScrollbarXChange","getComputedStyle","bottom","left","right","getThumbSize","x","onDragScroll","event","maxScrollPos","deltaX","onWheelScroll","isScrollingWithinScrollbarBounds","preventDefault","clientWidth","toInt","paddingLeft","paddingRight","ScrollAreaScrollbarY","onScrollbarYChange","top","undefined","y","deltaY","clientHeight","paddingTop","paddingBottom","ScrollbarProvider","useScrollbarContext","ScrollAreaScrollbarImpl","onThumbPositionChange","onResize","setScrollbar","rectRef","prevWebkitUserSelectRef","handleWheelScroll","handleThumbPositionChange","handleDragScroll","clientX","clientY","handleWheel","element","target","isScrollbarWheel","contains","document","passive","onPointerDown","mainPointer","button","setPointerCapture","pointerId","getBoundingClientRect","body","webkitUserSelect","scrollBehavior","onPointerMove","onPointerUp","hasPointerCapture","releasePointerCapture","THUMB_NAME","thumbProps","scrollbarContext","ScrollAreaThumbImpl","scrollAreaContext","composedRef","removeUnlinkedScrollListenerRef","listener","addUnlinkedScrollListener","width","height","onPointerDownCapture","thumbRect","CORNER_NAME","hasBothScrollbarsVisible","hasCorner","ScrollAreaCornerImpl","cornerProps","setWidth","setHeight","hasSize","onCornerHeightChange","onCornerWidthChange","value","parseInt","viewportSize","contentSize","ratio","isNaN","scrollbarPadding","thumbSize","Math","max","pointerOffset","thumbSizePx","thumbCenter","thumbOffsetFromEnd","minPointerPos","maxPointerPos","scrollRange","interpolate","linearScale","maxThumbPos","scrollClampRange","scrollWithoutMomentum","input","output","handler","prevPosition","rAF","loop","isHorizontalScroll","isVerticalScroll","requestAnimationFrame","cancelAnimationFrame","callback","delay","handleCallback","debounceTimerRef","useCallback","resizeObserver","ResizeObserver","observe","unobserve","initialState","machine","useReducer","nextState"],"version":3,"file":"index.mjs.map"}
|
|
1
|
+
{"mappings":"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","sources":["packages/react/scroll-area/src/index.ts","packages/react/scroll-area/src/ScrollArea.tsx","packages/react/scroll-area/src/useStateMachine.ts"],"sourcesContent":["export {\n createScrollAreaScope,\n //\n ScrollArea,\n ScrollAreaViewport,\n ScrollAreaScrollbar,\n ScrollAreaThumb,\n ScrollAreaCorner,\n //\n Root,\n Viewport,\n Scrollbar,\n Thumb,\n Corner,\n} from './ScrollArea';\nexport type {\n ScrollAreaProps,\n ScrollAreaViewportProps,\n ScrollAreaScrollbarProps,\n ScrollAreaThumbProps,\n ScrollAreaCornerProps,\n} from './ScrollArea';\n","/// <reference types=\"resize-observer-browser\" />\n\nimport * as React 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';\nimport { useStateMachine } from './useStateMachine';\n\nimport type * as Radix from '@radix-ui/react-primitive';\nimport type { Scope } from '@radix-ui/react-context';\n\ntype Direction = 'ltr' | 'rtl';\ntype Sizes = {\n content: number;\n viewport: number;\n scrollbar: {\n size: number;\n paddingStart: number;\n paddingEnd: number;\n };\n};\n\n/* -------------------------------------------------------------------------------------------------\n * ScrollArea\n * -----------------------------------------------------------------------------------------------*/\n\nconst SCROLL_AREA_NAME = 'ScrollArea';\n\ntype ScopedProps<P> = P & { __scopeScrollArea?: Scope };\nconst [createScrollAreaContext, createScrollAreaScope] = createContextScope(SCROLL_AREA_NAME);\n\ntype ScrollAreaContextValue = {\n type: 'auto' | 'always' | 'scroll' | 'hover';\n dir: Direction;\n scrollHideDelay: number;\n scrollArea: ScrollAreaElement | null;\n viewport: ScrollAreaViewportElement | null;\n onViewportChange(viewport: ScrollAreaViewportElement | null): void;\n content: HTMLDivElement | null;\n onContentChange(content: HTMLDivElement): void;\n scrollbarX: ScrollAreaScrollbarElement | null;\n onScrollbarXChange(scrollbar: ScrollAreaScrollbarElement | null): void;\n scrollbarXEnabled: boolean;\n onScrollbarXEnabledChange(rendered: boolean): void;\n scrollbarY: ScrollAreaScrollbarElement | null;\n onScrollbarYChange(scrollbar: ScrollAreaScrollbarElement | null): void;\n scrollbarYEnabled: boolean;\n onScrollbarYEnabledChange(rendered: boolean): void;\n onCornerWidthChange(width: number): void;\n onCornerHeightChange(height: number): void;\n};\n\nconst [ScrollAreaProvider, useScrollAreaContext] =\n createScrollAreaContext<ScrollAreaContextValue>(SCROLL_AREA_NAME);\n\ntype ScrollAreaElement = React.ElementRef<typeof Primitive.div>;\ntype PrimitiveDivProps = Radix.ComponentPropsWithoutRef<typeof Primitive.div>;\ninterface ScrollAreaProps extends PrimitiveDivProps {\n type?: ScrollAreaContextValue['type'];\n dir?: ScrollAreaContextValue['dir'];\n scrollHideDelay?: number;\n}\n\nconst ScrollArea = React.forwardRef<ScrollAreaElement, ScrollAreaProps>(\n (props: ScopedProps<ScrollAreaProps>, forwardedRef) => {\n const {\n __scopeScrollArea,\n type = 'hover',\n dir,\n scrollHideDelay = 600,\n ...scrollAreaProps\n } = props;\n const [scrollArea, setScrollArea] = React.useState<ScrollAreaElement | null>(null);\n const [viewport, setViewport] = React.useState<ScrollAreaViewportElement | null>(null);\n const [content, setContent] = React.useState<HTMLDivElement | null>(null);\n const [scrollbarX, setScrollbarX] = React.useState<ScrollAreaScrollbarElement | null>(null);\n const [scrollbarY, setScrollbarY] = React.useState<ScrollAreaScrollbarElement | null>(null);\n const [cornerWidth, setCornerWidth] = React.useState(0);\n const [cornerHeight, setCornerHeight] = React.useState(0);\n const [scrollbarXEnabled, setScrollbarXEnabled] = React.useState(false);\n const [scrollbarYEnabled, setScrollbarYEnabled] = React.useState(false);\n const composedRefs = useComposedRefs(forwardedRef, (node) => setScrollArea(node));\n const direction = useDirection(dir);\n\n return (\n <ScrollAreaProvider\n scope={__scopeScrollArea}\n type={type}\n dir={direction}\n scrollHideDelay={scrollHideDelay}\n scrollArea={scrollArea}\n viewport={viewport}\n onViewportChange={setViewport}\n content={content}\n onContentChange={setContent}\n scrollbarX={scrollbarX}\n onScrollbarXChange={setScrollbarX}\n scrollbarXEnabled={scrollbarXEnabled}\n onScrollbarXEnabledChange={setScrollbarXEnabled}\n scrollbarY={scrollbarY}\n onScrollbarYChange={setScrollbarY}\n scrollbarYEnabled={scrollbarYEnabled}\n onScrollbarYEnabledChange={setScrollbarYEnabled}\n onCornerWidthChange={setCornerWidth}\n onCornerHeightChange={setCornerHeight}\n >\n <Primitive.div\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' as any]: cornerWidth + 'px',\n ['--radix-scroll-area-corner-height' as any]: cornerHeight + 'px',\n ...props.style,\n }}\n />\n </ScrollAreaProvider>\n );\n }\n);\n\nScrollArea.displayName = SCROLL_AREA_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * ScrollAreaViewport\n * -----------------------------------------------------------------------------------------------*/\n\nconst VIEWPORT_NAME = 'ScrollAreaViewport';\n\ntype ScrollAreaViewportElement = React.ElementRef<typeof Primitive.div>;\ninterface ScrollAreaViewportProps extends PrimitiveDivProps {}\n\nconst ScrollAreaViewport = React.forwardRef<ScrollAreaViewportElement, ScrollAreaViewportProps>(\n (props: ScopedProps<ScrollAreaViewportProps>, forwardedRef) => {\n const { __scopeScrollArea, children, ...viewportProps } = props;\n const context = useScrollAreaContext(VIEWPORT_NAME, __scopeScrollArea);\n const ref = React.useRef<ScrollAreaViewportElement>(null);\n const composedRefs = useComposedRefs(forwardedRef, ref, context.onViewportChange);\n return (\n <>\n {/* Hide scrollbars cross-browser and enable momentum scroll for touch devices */}\n <style\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 />\n <Primitive.div\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/overflowed#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 >\n {/**\n * `display: table` ensures our content div will match the size of its children in both\n * horizontal and vertical axis so we can determine if scroll width/height changed and\n * recalculate thumb sizes. This doesn't account for children with *percentage*\n * widths that change. We'll wait to see what use-cases consumers come up with there\n * before trying to resolve it.\n */}\n <div ref={context.onContentChange} style={{ minWidth: '100%', display: 'table' }}>\n {children}\n </div>\n </Primitive.div>\n </>\n );\n }\n);\n\nScrollAreaViewport.displayName = VIEWPORT_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * ScrollAreaScrollbar\n * -----------------------------------------------------------------------------------------------*/\n\nconst SCROLLBAR_NAME = 'ScrollAreaScrollbar';\n\ntype ScrollAreaScrollbarElement = ScrollAreaScrollbarVisibleElement;\ninterface ScrollAreaScrollbarProps extends ScrollAreaScrollbarVisibleProps {\n forceMount?: true;\n}\n\nconst ScrollAreaScrollbar = React.forwardRef<ScrollAreaScrollbarElement, ScrollAreaScrollbarProps>(\n (props: ScopedProps<ScrollAreaScrollbarProps>, 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\n React.useEffect(() => {\n isHorizontal ? onScrollbarXEnabledChange(true) : onScrollbarYEnabledChange(true);\n return () => {\n isHorizontal ? onScrollbarXEnabledChange(false) : onScrollbarYEnabledChange(false);\n };\n }, [isHorizontal, onScrollbarXEnabledChange, onScrollbarYEnabledChange]);\n\n return context.type === 'hover' ? (\n <ScrollAreaScrollbarHover {...scrollbarProps} ref={forwardedRef} forceMount={forceMount} />\n ) : context.type === 'scroll' ? (\n <ScrollAreaScrollbarScroll {...scrollbarProps} ref={forwardedRef} forceMount={forceMount} />\n ) : context.type === 'auto' ? (\n <ScrollAreaScrollbarAuto {...scrollbarProps} ref={forwardedRef} forceMount={forceMount} />\n ) : context.type === 'always' ? (\n <ScrollAreaScrollbarVisible {...scrollbarProps} ref={forwardedRef} />\n ) : null;\n }\n);\n\nScrollAreaScrollbar.displayName = SCROLLBAR_NAME;\n\n/* -----------------------------------------------------------------------------------------------*/\n\ntype ScrollAreaScrollbarHoverElement = ScrollAreaScrollbarAutoElement;\ninterface ScrollAreaScrollbarHoverProps extends ScrollAreaScrollbarAutoProps {\n forceMount?: true;\n}\n\nconst ScrollAreaScrollbarHover = React.forwardRef<\n ScrollAreaScrollbarHoverElement,\n ScrollAreaScrollbarHoverProps\n>((props: ScopedProps<ScrollAreaScrollbarHoverProps>, forwardedRef) => {\n const { forceMount, ...scrollbarProps } = props;\n const context = useScrollAreaContext(SCROLLBAR_NAME, props.__scopeScrollArea);\n const [visible, setVisible] = React.useState(false);\n\n React.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\n return (\n <Presence present={forceMount || visible}>\n <ScrollAreaScrollbarAuto\n data-state={visible ? 'visible' : 'hidden'}\n {...scrollbarProps}\n ref={forwardedRef}\n />\n </Presence>\n );\n});\n\ntype ScrollAreaScrollbarScrollElement = ScrollAreaScrollbarVisibleElement;\ninterface ScrollAreaScrollbarScrollProps extends ScrollAreaScrollbarVisibleProps {\n forceMount?: true;\n}\n\nconst ScrollAreaScrollbarScroll = React.forwardRef<\n ScrollAreaScrollbarScrollElement,\n ScrollAreaScrollbarScrollProps\n>((props: ScopedProps<ScrollAreaScrollbarScrollProps>, 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\n React.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\n React.useEffect(() => {\n const viewport = context.viewport;\n const scrollDirection = isHorizontal ? 'scrollLeft' : 'scrollTop';\n\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\n return (\n <Presence present={forceMount || state !== 'hidden'}>\n <ScrollAreaScrollbarVisible\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 </Presence>\n );\n});\n\ntype ScrollAreaScrollbarAutoElement = ScrollAreaScrollbarVisibleElement;\ninterface ScrollAreaScrollbarAutoProps extends ScrollAreaScrollbarVisibleProps {\n forceMount?: true;\n}\n\nconst ScrollAreaScrollbarAuto = React.forwardRef<\n ScrollAreaScrollbarAutoElement,\n ScrollAreaScrollbarAutoProps\n>((props: ScopedProps<ScrollAreaScrollbarAutoProps>, forwardedRef) => {\n const context = useScrollAreaContext(SCROLLBAR_NAME, props.__scopeScrollArea);\n const { forceMount, ...scrollbarProps } = props;\n const [visible, setVisible] = React.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\n useResizeObserver(context.viewport, handleResize);\n useResizeObserver(context.content, handleResize);\n\n return (\n <Presence present={forceMount || visible}>\n <ScrollAreaScrollbarVisible\n data-state={visible ? 'visible' : 'hidden'}\n {...scrollbarProps}\n ref={forwardedRef}\n />\n </Presence>\n );\n});\n\n/* -----------------------------------------------------------------------------------------------*/\n\ntype ScrollAreaScrollbarVisibleElement = ScrollAreaScrollbarAxisElement;\ninterface ScrollAreaScrollbarVisibleProps\n extends Omit<ScrollAreaScrollbarAxisProps, keyof ScrollAreaScrollbarAxisPrivateProps> {\n orientation?: 'horizontal' | 'vertical';\n}\n\nconst ScrollAreaScrollbarVisible = React.forwardRef<\n ScrollAreaScrollbarVisibleElement,\n ScrollAreaScrollbarVisibleProps\n>((props: ScopedProps<ScrollAreaScrollbarVisibleProps>, forwardedRef) => {\n const { orientation = 'vertical', ...scrollbarProps } = props;\n const context = useScrollAreaContext(SCROLLBAR_NAME, props.__scopeScrollArea);\n const thumbRef = React.useRef<ScrollAreaThumbElement | null>(null);\n const pointerOffsetRef = React.useRef(0);\n const [sizes, setSizes] = React.useState<Sizes>({\n content: 0,\n viewport: 0,\n scrollbar: { size: 0, paddingStart: 0, paddingEnd: 0 },\n });\n const thumbRatio = getThumbRatio(sizes.viewport, sizes.content);\n\n type UncommonProps = 'onThumbPositionChange' | 'onDragScroll' | 'onWheelScroll';\n const commonProps: Omit<ScrollAreaScrollbarAxisPrivateProps, UncommonProps> = {\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\n function getScrollPosition(pointerPos: number, dir?: Direction) {\n return getScrollPositionFromPointer(pointerPos, pointerOffsetRef.current, sizes, dir);\n }\n\n if (orientation === 'horizontal') {\n return (\n <ScrollAreaScrollbarX\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\n if (orientation === 'vertical') {\n return (\n <ScrollAreaScrollbarY\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\n return null;\n});\n\n/* -----------------------------------------------------------------------------------------------*/\n\ntype ScrollAreaScrollbarAxisPrivateProps = {\n hasThumb: boolean;\n sizes: Sizes;\n onSizesChange(sizes: Sizes): void;\n onThumbChange(thumb: ScrollAreaThumbElement | null): void;\n onThumbPointerDown(pointerPos: number): void;\n onThumbPointerUp(): void;\n onThumbPositionChange(): void;\n onWheelScroll(scrollPos: number): void;\n onDragScroll(pointerPos: number): void;\n};\n\ntype ScrollAreaScrollbarAxisElement = ScrollAreaScrollbarImplElement;\ninterface ScrollAreaScrollbarAxisProps\n extends Omit<ScrollAreaScrollbarImplProps, keyof ScrollAreaScrollbarImplPrivateProps>,\n ScrollAreaScrollbarAxisPrivateProps {}\n\nconst ScrollAreaScrollbarX = React.forwardRef<\n ScrollAreaScrollbarAxisElement,\n ScrollAreaScrollbarAxisProps\n>((props: ScopedProps<ScrollAreaScrollbarAxisProps>, forwardedRef) => {\n const { sizes, onSizesChange, ...scrollbarProps } = props;\n const context = useScrollAreaContext(SCROLLBAR_NAME, props.__scopeScrollArea);\n const [computedStyle, setComputedStyle] = React.useState<CSSStyleDeclaration>();\n const ref = React.useRef<ScrollAreaScrollbarAxisElement>(null);\n const composeRefs = useComposedRefs(forwardedRef, ref, context.onScrollbarXChange);\n\n React.useEffect(() => {\n if (ref.current) setComputedStyle(getComputedStyle(ref.current));\n }, [ref]);\n\n return (\n <ScrollAreaScrollbarImpl\n data-orientation=\"horizontal\"\n {...scrollbarProps}\n ref={composeRefs}\n sizes={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' as any]: 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 // prevent window scroll when wheeling on scrollbar\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});\n\nconst ScrollAreaScrollbarY = React.forwardRef<\n ScrollAreaScrollbarAxisElement,\n ScrollAreaScrollbarAxisProps\n>((props: ScopedProps<ScrollAreaScrollbarAxisProps>, forwardedRef) => {\n const { sizes, onSizesChange, ...scrollbarProps } = props;\n const context = useScrollAreaContext(SCROLLBAR_NAME, props.__scopeScrollArea);\n const [computedStyle, setComputedStyle] = React.useState<CSSStyleDeclaration>();\n const ref = React.useRef<ScrollAreaScrollbarAxisElement>(null);\n const composeRefs = useComposedRefs(forwardedRef, ref, context.onScrollbarYChange);\n\n React.useEffect(() => {\n if (ref.current) setComputedStyle(getComputedStyle(ref.current));\n }, [ref]);\n\n return (\n <ScrollAreaScrollbarImpl\n data-orientation=\"vertical\"\n {...scrollbarProps}\n ref={composeRefs}\n sizes={sizes}\n style={{\n top: 0,\n right: context.dir === 'ltr' ? 0 : undefined,\n left: context.dir === 'rtl' ? 0 : undefined,\n bottom: 'var(--radix-scroll-area-corner-height)',\n ['--radix-scroll-area-thumb-height' as any]: 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 // prevent window scroll when wheeling on scrollbar\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});\n\n/* -----------------------------------------------------------------------------------------------*/\n\ntype ScrollbarContext = {\n hasThumb: boolean;\n scrollbar: ScrollAreaScrollbarElement | null;\n onThumbChange(thumb: ScrollAreaThumbElement | null): void;\n onThumbPointerUp(): void;\n onThumbPointerDown(pointerPos: { x: number; y: number }): void;\n onThumbPositionChange(): void;\n};\n\nconst [ScrollbarProvider, useScrollbarContext] =\n createScrollAreaContext<ScrollbarContext>(SCROLLBAR_NAME);\n\ntype ScrollAreaScrollbarImplElement = React.ElementRef<typeof Primitive.div>;\ntype ScrollAreaScrollbarImplPrivateProps = {\n sizes: Sizes;\n hasThumb: boolean;\n onThumbChange: ScrollbarContext['onThumbChange'];\n onThumbPointerUp: ScrollbarContext['onThumbPointerUp'];\n onThumbPointerDown: ScrollbarContext['onThumbPointerDown'];\n onThumbPositionChange: ScrollbarContext['onThumbPositionChange'];\n onWheelScroll(event: WheelEvent, maxScrollPos: number): void;\n onDragScroll(pointerPos: { x: number; y: number }): void;\n onResize(): void;\n};\ninterface ScrollAreaScrollbarImplProps\n extends Omit<PrimitiveDivProps, keyof ScrollAreaScrollbarImplPrivateProps>,\n ScrollAreaScrollbarImplPrivateProps {}\n\nconst ScrollAreaScrollbarImpl = React.forwardRef<\n ScrollAreaScrollbarImplElement,\n ScrollAreaScrollbarImplProps\n>((props: ScopedProps<ScrollAreaScrollbarImplProps>, 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] = React.useState<ScrollAreaScrollbarElement | null>(null);\n const composeRefs = useComposedRefs(forwardedRef, (node) => setScrollbar(node));\n const rectRef = React.useRef<ClientRect | null>(null);\n const prevWebkitUserSelectRef = React.useRef<string>('');\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\n function handleDragScroll(event: React.PointerEvent<HTMLElement>) {\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\n /**\n * We bind wheel event imperatively so we can switch off passive\n * mode for document wheel event to allow it to be prevented\n */\n React.useEffect(() => {\n const handleWheel = (event: WheelEvent) => {\n const element = event.target as HTMLElement;\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 } as any);\n }, [viewport, scrollbar, maxScrollPos, handleWheelScroll]);\n\n /**\n * Update thumb position on sizes change\n */\n React.useEffect(handleThumbPositionChange, [sizes, handleThumbPositionChange]);\n\n useResizeObserver(scrollbar, handleResize);\n useResizeObserver(context.content, handleResize);\n\n return (\n <ScrollbarProvider\n scope={__scopeScrollArea}\n scrollbar={scrollbar}\n hasThumb={hasThumb}\n onThumbChange={useCallbackRef(onThumbChange)}\n onThumbPointerUp={useCallbackRef(onThumbPointerUp)}\n onThumbPositionChange={handleThumbPositionChange}\n onThumbPointerDown={useCallbackRef(onThumbPointerDown)}\n >\n <Primitive.div\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 as HTMLElement;\n element.setPointerCapture(event.pointerId);\n rectRef.current = scrollbar!.getBoundingClientRect();\n // pointer capture doesn't prevent text selection in Safari\n // so we remove text selection manually when scrolling\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 as HTMLElement;\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 </ScrollbarProvider>\n );\n});\n\n/* -------------------------------------------------------------------------------------------------\n * ScrollAreaThumb\n * -----------------------------------------------------------------------------------------------*/\n\nconst THUMB_NAME = 'ScrollAreaThumb';\n\ntype ScrollAreaThumbElement = ScrollAreaThumbImplElement;\ninterface ScrollAreaThumbProps extends ScrollAreaThumbImplProps {\n /**\n * Used to force mounting when more control is needed. Useful when\n * controlling animation with React animation libraries.\n */\n forceMount?: true;\n}\n\nconst ScrollAreaThumb = React.forwardRef<ScrollAreaThumbElement, ScrollAreaThumbProps>(\n (props: ScopedProps<ScrollAreaThumbProps>, forwardedRef) => {\n const { forceMount, ...thumbProps } = props;\n const scrollbarContext = useScrollbarContext(THUMB_NAME, props.__scopeScrollArea);\n return (\n <Presence present={forceMount || scrollbarContext.hasThumb}>\n <ScrollAreaThumbImpl ref={forwardedRef} {...thumbProps} />\n </Presence>\n );\n }\n);\n\ntype ScrollAreaThumbImplElement = React.ElementRef<typeof Primitive.div>;\ninterface ScrollAreaThumbImplProps extends PrimitiveDivProps {}\n\nconst ScrollAreaThumbImpl = React.forwardRef<ScrollAreaThumbImplElement, ScrollAreaThumbImplProps>(\n (props: ScopedProps<ScrollAreaThumbImplProps>, 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(forwardedRef, (node) =>\n scrollbarContext.onThumbChange(node)\n );\n const removeUnlinkedScrollListenerRef = React.useRef<() => void>();\n const debounceScrollEnd = useDebounceCallback(() => {\n if (removeUnlinkedScrollListenerRef.current) {\n removeUnlinkedScrollListenerRef.current();\n removeUnlinkedScrollListenerRef.current = undefined;\n }\n }, 100);\n\n React.useEffect(() => {\n const viewport = scrollAreaContext.viewport;\n if (viewport) {\n /**\n * We only bind to native scroll event so we know when scroll starts and ends.\n * When scroll starts we start a requestAnimationFrame loop that checks for\n * changes to scroll position. That rAF loop triggers our thumb position change\n * when relevant to avoid scroll-linked effects. We cancel the loop when scroll ends.\n * https://developer.mozilla.org/en-US/docs/Mozilla/Performance/Scroll-linked_effects\n */\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\n return (\n <Primitive.div\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 as HTMLElement;\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);\n\nScrollAreaThumb.displayName = THUMB_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * ScrollAreaCorner\n * -----------------------------------------------------------------------------------------------*/\n\nconst CORNER_NAME = 'ScrollAreaCorner';\n\ntype ScrollAreaCornerElement = ScrollAreaCornerImplElement;\ninterface ScrollAreaCornerProps extends ScrollAreaCornerImplProps {}\n\nconst ScrollAreaCorner = React.forwardRef<ScrollAreaCornerElement, ScrollAreaCornerProps>(\n (props: ScopedProps<ScrollAreaCornerProps>, 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 ? <ScrollAreaCornerImpl {...props} ref={forwardedRef} /> : null;\n }\n);\n\nScrollAreaCorner.displayName = CORNER_NAME;\n\n/* -----------------------------------------------------------------------------------------------*/\n\ntype ScrollAreaCornerImplElement = React.ElementRef<typeof Primitive.div>;\ninterface ScrollAreaCornerImplProps extends PrimitiveDivProps {}\n\nconst ScrollAreaCornerImpl = React.forwardRef<\n ScrollAreaCornerImplElement,\n ScrollAreaCornerImplProps\n>((props: ScopedProps<ScrollAreaCornerImplProps>, forwardedRef) => {\n const { __scopeScrollArea, ...cornerProps } = props;\n const context = useScrollAreaContext(CORNER_NAME, __scopeScrollArea);\n const [width, setWidth] = React.useState(0);\n const [height, setHeight] = React.useState(0);\n const hasSize = Boolean(width && height);\n\n useResizeObserver(context.scrollbarX, () => {\n const height = context.scrollbarX?.offsetHeight || 0;\n context.onCornerHeightChange(height);\n setHeight(height);\n });\n\n useResizeObserver(context.scrollbarY, () => {\n const width = context.scrollbarY?.offsetWidth || 0;\n context.onCornerWidthChange(width);\n setWidth(width);\n });\n\n return hasSize ? (\n <Primitive.div\n {...cornerProps}\n ref={forwardedRef}\n style={{\n width,\n height,\n position: 'absolute',\n right: context.dir === 'ltr' ? 0 : undefined,\n left: context.dir === 'rtl' ? 0 : undefined,\n bottom: 0,\n ...props.style,\n }}\n />\n ) : null;\n});\n\n/* -----------------------------------------------------------------------------------------------*/\n\nfunction toInt(value?: string) {\n return value ? parseInt(value, 10) : 0;\n}\n\nfunction getThumbRatio(viewportSize: number, contentSize: number) {\n const ratio = viewportSize / contentSize;\n return isNaN(ratio) ? 0 : ratio;\n}\n\nfunction getThumbSize(sizes: 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 // minimum of 18 matches macOS minimum\n return Math.max(thumbSize, 18);\n}\n\nfunction getScrollPositionFromPointer(\n pointerPos: number,\n pointerOffset: number,\n sizes: Sizes,\n dir: Direction = 'ltr'\n) {\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 as [number, number]);\n return interpolate(pointerPos);\n}\n\nfunction getThumbOffsetFromScroll(scrollPos: number, sizes: Sizes, dir: Direction = '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 as [number, number]);\n const interpolate = linearScale([0, maxScrollPos], [0, maxThumbPos]);\n return interpolate(scrollWithoutMomentum);\n}\n\n// https://github.com/tmcw-up-for-adoption/simple-linear-scale/blob/master/index.js\nfunction linearScale(input: readonly [number, number], output: readonly [number, number]) {\n return (value: number) => {\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}\n\nfunction isScrollingWithinScrollbarBounds(scrollPos: number, maxScrollPos: number) {\n return scrollPos > 0 && scrollPos < maxScrollPos;\n}\n\n// Custom scroll handler to avoid scroll-linked effects\n// https://developer.mozilla.org/en-US/docs/Mozilla/Performance/Scroll-linked_effects\nconst addUnlinkedScrollListener = (node: HTMLElement, handler = () => {}) => {\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};\n\nfunction useDebounceCallback(callback: () => void, delay: number) {\n const handleCallback = useCallbackRef(callback);\n const debounceTimerRef = React.useRef(0);\n React.useEffect(() => () => window.clearTimeout(debounceTimerRef.current), []);\n return React.useCallback(() => {\n window.clearTimeout(debounceTimerRef.current);\n debounceTimerRef.current = window.setTimeout(handleCallback, delay);\n }, [handleCallback, delay]);\n}\n\nfunction useResizeObserver(element: HTMLElement | null, onResize: () => void) {\n const handleResize = useCallbackRef(onResize);\n useLayoutEffect(() => {\n let rAF = 0;\n if (element) {\n /**\n * Resize Observer will throw an often benign error that says `ResizeObserver loop\n * completed with undelivered notifications`. This means that ResizeObserver was not\n * able to deliver all observations within a single animation frame, so we use\n * `requestAnimationFrame` to ensure we don't deliver unnecessary observations.\n * Further reading: https://github.com/WICG/resize-observer/issues/38\n */\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}\n\n/* -----------------------------------------------------------------------------------------------*/\n\nconst Root = ScrollArea;\nconst Viewport = ScrollAreaViewport;\nconst Scrollbar = ScrollAreaScrollbar;\nconst Thumb = ScrollAreaThumb;\nconst Corner = ScrollAreaCorner;\n\nexport {\n createScrollAreaScope,\n //\n ScrollArea,\n ScrollAreaViewport,\n ScrollAreaScrollbar,\n ScrollAreaThumb,\n ScrollAreaCorner,\n //\n Root,\n Viewport,\n Scrollbar,\n Thumb,\n Corner,\n};\nexport type {\n ScrollAreaProps,\n ScrollAreaViewportProps,\n ScrollAreaScrollbarProps,\n ScrollAreaThumbProps,\n ScrollAreaCornerProps,\n};\n","import * as React from 'react';\n\ntype Machine<S> = { [k: string]: { [k: string]: S } };\ntype MachineState<T> = keyof T;\ntype MachineEvent<T> = keyof UnionToIntersection<T[keyof T]>;\n\n// 🤯 https://fettblog.eu/typescript-union-to-intersection/\ntype UnionToIntersection<T> = (T extends any ? (x: T) => any : never) extends (x: infer R) => any\n ? R\n : never;\n\nexport function useStateMachine<M>(\n initialState: MachineState<M>,\n machine: M & Machine<MachineState<M>>\n) {\n return React.useReducer((state: MachineState<M>, event: MachineEvent<M>): MachineState<M> => {\n const nextState = (machine[state] as any)[event];\n return nextState ?? state;\n }, initialState);\n}\n"],"names":["createScrollAreaScope","ScrollArea","ScrollAreaViewport","ScrollAreaScrollbar","ScrollAreaThumb","ScrollAreaCorner","Root","Viewport","Scrollbar","Thumb","Corner","React","Primitive","Presence","createContextScope","useComposedRefs","useCallbackRef","useDirection","useLayoutEffect","clamp","composeEventHandlers","useStateMachine","SCROLL_AREA_NAME","createScrollAreaContext","ScrollAreaProvider","useScrollAreaContext","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","node","direction","position","style","VIEWPORT_NAME","children","viewportProps","context","ref","useRef","onViewportChange","__html","overflowX","overflowY","onContentChange","minWidth","display","SCROLLBAR_NAME","forceMount","scrollbarProps","onScrollbarXEnabledChange","onScrollbarYEnabledChange","isHorizontal","orientation","useEffect","ScrollAreaScrollbarHover","visible","setVisible","hideTimer","handlePointerEnter","window","clearTimeout","handlePointerLeave","setTimeout","addEventListener","removeEventListener","ScrollAreaScrollbarScroll","debounceScrollEnd","useDebounceCallback","send","state","hidden","SCROLL","scrolling","SCROLL_END","POINTER_ENTER","interacting","POINTER_LEAVE","idle","HIDE","scrollDirection","prevScrollPos","handleScroll","scrollPos","hasScrollInDirectionChanged","onPointerEnter","onPointerLeave","ScrollAreaScrollbarAuto","handleResize","isOverflowX","offsetWidth","scrollWidth","isOverflowY","offsetHeight","scrollHeight","useResizeObserver","ScrollAreaScrollbarVisible","thumbRef","pointerOffsetRef","sizes","setSizes","scrollbar","size","paddingStart","paddingEnd","thumbRatio","getThumbRatio","commonProps","onSizesChange","hasThumb","Boolean","onThumbChange","thumb","current","onThumbPointerUp","onThumbPointerDown","pointerPos","getScrollPosition","getScrollPositionFromPointer","scrollLeft","offset","getThumbOffsetFromScroll","transform","scrollTop","ScrollAreaScrollbarX","computedStyle","setComputedStyle","composeRefs","onScrollbarXChange","getComputedStyle","bottom","left","right","getThumbSize","x","onDragScroll","event","maxScrollPos","deltaX","onWheelScroll","isScrollingWithinScrollbarBounds","preventDefault","clientWidth","toInt","paddingLeft","paddingRight","ScrollAreaScrollbarY","onScrollbarYChange","top","undefined","y","deltaY","clientHeight","paddingTop","paddingBottom","ScrollbarProvider","useScrollbarContext","ScrollAreaScrollbarImpl","onThumbPositionChange","onResize","setScrollbar","rectRef","prevWebkitUserSelectRef","handleWheelScroll","handleThumbPositionChange","handleDragScroll","clientX","clientY","handleWheel","element","target","isScrollbarWheel","contains","document","passive","onPointerDown","mainPointer","button","setPointerCapture","pointerId","getBoundingClientRect","body","webkitUserSelect","scrollBehavior","onPointerMove","onPointerUp","hasPointerCapture","releasePointerCapture","THUMB_NAME","thumbProps","scrollbarContext","ScrollAreaThumbImpl","scrollAreaContext","composedRef","removeUnlinkedScrollListenerRef","listener","addUnlinkedScrollListener","width","height","onPointerDownCapture","thumbRect","CORNER_NAME","hasBothScrollbarsVisible","hasCorner","ScrollAreaCornerImpl","cornerProps","setWidth","setHeight","hasSize","onCornerHeightChange","onCornerWidthChange","value","parseInt","viewportSize","contentSize","ratio","isNaN","scrollbarPadding","thumbSize","Math","max","pointerOffset","thumbSizePx","thumbCenter","thumbOffsetFromEnd","minPointerPos","maxPointerPos","scrollRange","interpolate","linearScale","maxThumbPos","scrollClampRange","scrollWithoutMomentum","input","output","handler","prevPosition","rAF","loop","isHorizontalScroll","isVerticalScroll","requestAnimationFrame","cancelAnimationFrame","callback","delay","handleCallback","debounceTimerRef","useCallback","resizeObserver","ResizeObserver","observe","unobserve","initialState","machine","useReducer","nextState"],"version":3,"file":"index.mjs.map"}
|