{"version":3,"sources":["../../src/scrollarea/useScrollArea.ts","../../src/scrollarea/useScrollArea.props.ts"],"sourcesContent":["import { withHeadless } from '@primereact/core/headless';\nimport { useMountEffect, useUnmountEffect } from '@primereact/hooks';\nimport { useEventListener } from '@primereact/hooks/use-event-listener';\nimport { addClass, getHeight, removeClass } from '@primeuix/utils';\nimport * as React from 'react';\nimport { defaultProps } from './useScrollArea.props';\n\nexport const useScrollArea = withHeadless({\n    name: 'useScrollArea',\n    defaultProps,\n    setup({ props, elementRef }) {\n        const contentRef = React.useRef<HTMLDivElement>(null);\n        const thumbXRef = React.useRef<HTMLDivElement>(null);\n        const thumbYRef = React.useRef<HTMLDivElement>(null);\n        const [lastScrollLeft, setLastScrollLeft] = React.useState(0);\n        const [lastScrollTop, setLastScrollTop] = React.useState(0);\n        const isXBarClicked = React.useRef<boolean>(false);\n        const isYBarClicked = React.useRef<boolean>(false);\n        const lastPageX = React.useRef<number | null>(null);\n        const lastPageY = React.useRef<number | null>(null);\n        const scrollXRatio = React.useRef<number | null>(null);\n        const scrollYRatio = React.useRef<number | null>(null);\n        const frame = React.useRef<number | null>(null);\n        const initialized = React.useRef<boolean>(false);\n        const timer = React.useRef<ReturnType<typeof setTimeout> | null>(null);\n        const [orientationState, setOrientationState] = React.useState('vertical');\n\n        const state = {\n            orientationState\n        };\n\n        const calculateContainerHeight = () => {\n            if (!elementRef.current || !contentRef.current) return;\n\n            const containerStyles = getComputedStyle(elementRef.current);\n            const thumbXHeight = thumbXRef.current ? parseInt(getComputedStyle(thumbXRef.current).height, 10) : 0;\n            const pureContainerHeight = getHeight(elementRef.current) - thumbXHeight;\n\n            if (containerStyles.maxHeight !== 'none' && pureContainerHeight === 0) {\n                if (contentRef.current.offsetHeight + thumbXHeight > parseInt(containerStyles.maxHeight, 10)) {\n                    elementRef.current.style.height = containerStyles.maxHeight;\n                } else {\n                    elementRef.current.style.height =\n                        contentRef.current.offsetHeight + parseFloat(containerStyles.paddingTop) + parseFloat(containerStyles.paddingBottom) + parseFloat(containerStyles.borderTopWidth) + parseFloat(containerStyles.borderBottomWidth) + 'px';\n                }\n            }\n        };\n\n        const moveBar = () => {\n            if (!contentRef.current || !elementRef.current) return;\n\n            // horizontal scroll\n            const totalWidth = contentRef.current.scrollWidth;\n            const ownWidth = contentRef.current.clientWidth;\n            const bottom = (elementRef.current.clientHeight - (thumbXRef.current?.clientHeight || 0)) * -1;\n\n            scrollXRatio.current = ownWidth / totalWidth;\n\n            // vertical scroll\n            const totalHeight = contentRef.current.scrollHeight;\n            const ownHeight = contentRef.current.clientHeight;\n            const right = (elementRef.current.clientWidth - (thumbYRef.current?.clientWidth || 0)) * -1;\n\n            scrollYRatio.current = ownHeight / totalHeight;\n\n            const xRatio = scrollXRatio.current;\n            const yRatio = scrollYRatio.current;\n\n            frame.current = requestAnimationFrame(() => {\n                if (thumbXRef.current) {\n                    if (xRatio >= 1) {\n                        addClass(thumbXRef.current, 'p-scrollpanel-hidden');\n                    } else {\n                        removeClass(thumbXRef.current, 'p-scrollpanel-hidden');\n                        thumbXRef.current.style.width = Math.max(xRatio * 100, 10) + '%';\n                        thumbXRef.current.style.setProperty('inset-inline-start', ((contentRef.current?.scrollLeft || 0) / totalWidth) * 100 + '%');\n                        thumbXRef.current.style.bottom = bottom + 'px';\n                    }\n                }\n\n                if (thumbYRef.current) {\n                    if (yRatio >= 1) {\n                        addClass(thumbYRef.current, 'p-scrollpanel-hidden');\n                    } else {\n                        removeClass(thumbYRef.current, 'p-scrollpanel-hidden');\n\n                        thumbYRef.current.style.height = Math.max(yRatio * 100, 10) + '%';\n                        thumbYRef.current.style.top = `calc(${((contentRef.current?.scrollTop || 0) / totalHeight) * 100}% - ${thumbXRef.current?.clientHeight || 0}px)`;\n                        thumbYRef.current.style.setProperty('inset-inline-end', right + 'px');\n                    }\n                }\n            });\n        };\n\n        const onFocus = (event: React.FocusEvent<HTMLDivElement>) => {\n            if (thumbXRef.current && thumbXRef.current.isSameNode(event.target)) {\n                setOrientationState('horizontal');\n            } else if (thumbYRef.current && thumbYRef.current.isSameNode(event.target)) {\n                setOrientationState('vertical');\n            }\n        };\n\n        const onBlur = () => {\n            if (orientationState === 'horizontal') {\n                setOrientationState('vertical');\n            }\n        };\n\n        const onScroll = (event: React.UIEvent<HTMLDivElement>) => {\n            if (lastScrollLeft !== event.currentTarget.scrollLeft) {\n                setLastScrollLeft(event.currentTarget.scrollLeft);\n                setOrientationState('horizontal');\n            } else if (lastScrollTop !== event.currentTarget.scrollTop) {\n                setLastScrollTop(event.currentTarget.scrollTop);\n                setOrientationState('vertical');\n            }\n\n            moveBar();\n        };\n\n        const onDocumentMouseMove = (event: MouseEvent) => {\n            if (isXBarClicked.current) {\n                onMouseMoveForXBar(event);\n            } else if (isYBarClicked.current) {\n                onMouseMoveForYBar(event);\n            } else {\n                onMouseMoveForXBar(event);\n                onMouseMoveForYBar(event);\n            }\n        };\n\n        const onYBarMouseDown = (event: React.MouseEvent<HTMLDivElement>) => {\n            isYBarClicked.current = true;\n            lastPageY.current = event.pageY;\n\n            if (thumbYRef.current) {\n                addClass(thumbYRef.current, 'p-scrollpanel-grabbed');\n                thumbYRef.current.setAttribute('data-p-scrollpanel-grabbed', 'true');\n            }\n\n            addClass(document.body, 'p-scrollpanel-grabbed');\n            document.body.setAttribute('data-p-scrollpanel-grabbed', 'true');\n\n            bindMouseMoveListener();\n            unbindMouseUpListener();\n            event.preventDefault();\n        };\n\n        const onXBarMouseDown = (event: React.MouseEvent<HTMLDivElement>) => {\n            isXBarClicked.current = true;\n            lastPageX.current = event.pageX;\n\n            if (thumbXRef.current) {\n                addClass(thumbXRef.current, 'p-scrollpanel-grabbed');\n                addClass(thumbXRef.current, 'p-scrollpanel-grabbed');\n            }\n\n            addClass(document.body, 'p-scrollpanel-grabbed');\n            document.body.setAttribute('data-p-scrollpanel-grabbed', 'true');\n\n            bindMouseMoveListener();\n            bindMouseUpListener();\n            event.preventDefault();\n        };\n\n        const onMouseMoveForXBar = (event: MouseEvent) => {\n            if (!lastPageX.current || !scrollXRatio.current || !contentRef.current) return;\n\n            const deltaX = event.pageX - lastPageX.current;\n\n            lastPageX.current = event.pageX;\n\n            frame.current = window.requestAnimationFrame(() => {\n                if (contentRef.current && scrollXRatio.current !== null) {\n                    contentRef.current.scrollLeft += deltaX / scrollXRatio.current;\n                }\n            });\n        };\n\n        const onMouseMoveForYBar = (event: MouseEvent) => {\n            if (!lastPageY.current || !scrollYRatio.current || !contentRef.current) return;\n\n            const deltaY = event.pageY - lastPageY.current;\n\n            lastPageY.current = event.pageY;\n\n            frame.current = window.requestAnimationFrame(() => {\n                if (contentRef.current && scrollYRatio.current !== null) {\n                    contentRef.current.scrollTop += deltaY / scrollYRatio.current;\n                }\n            });\n        };\n\n        const onDocumentMouseUp = () => {\n            if (thumbYRef.current) {\n                removeClass(thumbYRef.current, 'p-scrollpanel-grabbed');\n                thumbYRef.current.setAttribute('data-p-scrollpanel-grabbed', 'false');\n            }\n\n            if (thumbXRef.current) {\n                removeClass(thumbXRef.current, 'p-scrollpanel-grabbed');\n                thumbXRef.current.setAttribute('data-p-scrollpanel-grabbed', 'false');\n            }\n\n            removeClass(document.body, 'p-scrollpanel-grabbed');\n            document.body.setAttribute('data-p-scrollpanel-grabbed', 'false');\n\n            unbindMouseMoveListener();\n            unbindMouseUpListener();\n            isXBarClicked.current = false;\n            isYBarClicked.current = false;\n        };\n\n        const onKeyDown = (event: React.KeyboardEvent<HTMLDivElement>) => {\n            if (orientationState === 'vertical') {\n                switch (event.code) {\n                    case 'ArrowDown': {\n                        setTimer('scrollTop', props.step as number);\n                        event.preventDefault();\n                        break;\n                    }\n\n                    case 'ArrowUp': {\n                        setTimer('scrollTop', (props.step as number) * -1);\n                        event.preventDefault();\n                        break;\n                    }\n\n                    case 'ArrowLeft':\n\n                    case 'ArrowRight': {\n                        event.preventDefault();\n                        break;\n                    }\n\n                    default:\n                        //no op\n                        break;\n                }\n            } else if (orientationState === 'horizontal') {\n                switch (event.code) {\n                    case 'ArrowRight': {\n                        setTimer('scrollLeft', props.step as number);\n                        event.preventDefault();\n                        break;\n                    }\n\n                    case 'ArrowLeft': {\n                        setTimer('scrollLeft', (props.step as number) * -1);\n                        event.preventDefault();\n                        break;\n                    }\n\n                    case 'ArrowDown':\n\n                    case 'ArrowUp': {\n                        event.preventDefault();\n                        break;\n                    }\n\n                    default:\n                        //no op\n                        break;\n                }\n            }\n        };\n\n        const onKeyUp = () => {\n            clearTimer();\n        };\n\n        const repeat = (bar: 'scrollTop' | 'scrollLeft', step: number) => {\n            if (contentRef.current) {\n                contentRef.current[bar] += step;\n                moveBar();\n            }\n        };\n\n        const setTimer = (bar: 'scrollTop' | 'scrollLeft', step: number) => {\n            clearTimer();\n            timer.current = setTimeout(() => {\n                repeat(bar, step);\n            }, 40);\n        };\n\n        const clearTimer = () => {\n            if (timer.current) {\n                clearTimeout(timer.current);\n                timer.current = null;\n            }\n        };\n\n        const [bindResizeListener, unbindResizeListener] = useEventListener({\n            target: 'window',\n            type: 'resize',\n            listener: () => {\n                moveBar();\n            }\n        });\n\n        const [bindMouseMoveListener, unbindMouseMoveListener] = useEventListener({\n            target: 'document',\n            type: 'mousemove',\n            listener: (event: Event) => {\n                onDocumentMouseMove(event as MouseEvent);\n            }\n        });\n\n        const [bindMouseUpListener, unbindMouseUpListener] = useEventListener({\n            target: 'document',\n            type: 'mouseup',\n            listener: () => {\n                onDocumentMouseUp();\n            }\n        });\n\n        useMountEffect(() => {\n            setTimeout(() => {\n                moveBar();\n                calculateContainerHeight();\n                initialized.current = true;\n            }, 0);\n\n            bindResizeListener();\n        });\n\n        useUnmountEffect(() => {\n            if (initialized.current) {\n                unbindResizeListener();\n            }\n\n            if (frame.current) {\n                window.cancelAnimationFrame(frame.current);\n            }\n\n            clearTimer();\n        });\n\n        return {\n            state,\n            contentRef,\n            thumbXRef,\n            thumbYRef,\n            lastScrollLeft,\n            lastScrollTop,\n            //methods\n            onScroll,\n            onXBarMouseDown,\n            onYBarMouseDown,\n            onFocus,\n            onBlur,\n            onKeyDown,\n            onKeyUp\n        };\n    }\n});\n","import type { useScrollAreaProps } from '@primereact/types/shared/scrollarea';\n\nexport const defaultProps: useScrollAreaProps = {\n    step: 5\n};\n"],"mappings":"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","names":["withHeadless","useMountEffect","useUnmountEffect","useEventListener","addClass","getHeight","removeClass","React","defaultProps","useScrollArea","withHeadless","defaultProps","props","elementRef","contentRef","thumbXRef","thumbYRef","lastScrollLeft","setLastScrollLeft","lastScrollTop","setLastScrollTop","isXBarClicked","isYBarClicked","lastPageX","lastPageY","scrollXRatio","scrollYRatio","frame","initialized","timer","orientationState","setOrientationState","state","calculateContainerHeight","containerStyles","thumbXHeight","pureContainerHeight","getHeight","moveBar","_a","_b","totalWidth","ownWidth","bottom","totalHeight","ownHeight","right","xRatio","yRatio","_c","addClass","removeClass","onFocus","event","onBlur","onScroll","onDocumentMouseMove","onMouseMoveForXBar","onMouseMoveForYBar","onYBarMouseDown","bindMouseMoveListener","unbindMouseUpListener","onXBarMouseDown","bindMouseUpListener","deltaX","deltaY","onDocumentMouseUp","unbindMouseMoveListener","onKeyDown","setTimer","onKeyUp","clearTimer","repeat","bar","step","bindResizeListener","unbindResizeListener","useEventListener","useMountEffect","useUnmountEffect"]}