{"version":3,"file":"ScrollbarY.cjs","sources":["../../../../src/components/ScrollArea/ScrollAreaScrollbar/ScrollbarY.tsx"],"sourcesContent":["import { forwardRef, useEffect, useRef, useState } from 'react';\nimport { useMergedRef } from '@raikou/hooks';\nimport { useScrollAreaContext } from '../ScrollArea.context';\nimport { ScrollAreaScrollbarAxisProps } from '../ScrollArea.types';\nimport { getThumbSize, isScrollingWithinScrollbarBounds, toInt } from '../utils';\nimport { Scrollbar } from './Scrollbar';\n\nexport const ScrollAreaScrollbarY = forwardRef<HTMLDivElement, ScrollAreaScrollbarAxisProps>(\n  (props, forwardedRef) => {\n    const { sizes, onSizesChange, style, ...others } = props;\n    const context = useScrollAreaContext();\n    const [computedStyle, setComputedStyle] = useState<CSSStyleDeclaration>();\n    const ref = useRef<HTMLDivElement>(null);\n    const composeRefs = useMergedRef(forwardedRef, ref, context.onScrollbarYChange);\n\n    useEffect(() => {\n      if (ref.current) {\n        setComputedStyle(window.getComputedStyle(ref.current));\n      }\n    }, []);\n\n    return (\n      <Scrollbar\n        {...others}\n        data-orientation=\"vertical\"\n        ref={composeRefs}\n        sizes={sizes}\n        style={{\n          ['--sa-thumb-height' as any]: `${getThumbSize(sizes)}px`,\n          ...style,\n        }}\n        onThumbPointerDown={(pointerPos) => props.onThumbPointerDown(pointerPos.y)}\n        onDragScroll={(pointerPos) => props.onDragScroll(pointerPos.y)}\n        onWheelScroll={(event, maxScrollPos) => {\n          if (context.viewport) {\n            const scrollPos = context.viewport.scrollTop + event.deltaY;\n            props.onWheelScroll(scrollPos);\n            if (isScrollingWithinScrollbarBounds(scrollPos, maxScrollPos)) {\n              event.preventDefault();\n            }\n          }\n        }}\n        onResize={() => {\n          if (ref.current && context.viewport && computedStyle) {\n            onSizesChange({\n              content: context.viewport.scrollHeight,\n              viewport: context.viewport.offsetHeight,\n              scrollbar: {\n                size: ref.current.clientHeight,\n                paddingStart: toInt(computedStyle.paddingTop),\n                paddingEnd: toInt(computedStyle.paddingBottom),\n              },\n            });\n          }\n        }}\n      />\n    );\n  }\n);\n\nScrollAreaScrollbarY.displayName = '@raikou/core/ScrollAreaScrollbarY';\n"],"names":["forwardRef","useScrollAreaContext","useState","useRef","useMergedRef","useEffect","jsx","Scrollbar","getThumbSize","isScrollingWithinScrollbarBounds","toInt"],"mappings":";;;;;;;;;;;AAOO,MAAM,oBAAuB,GAAAA,gBAAA;AAAA,EAClC,CAAC,OAAO,YAAiB,KAAA;AACvB,IAAA,MAAM,EAAE,KAAO,EAAA,aAAA,EAAe,KAAO,EAAA,GAAG,QAAW,GAAA,KAAA;AACnD,IAAA,MAAM,UAAUC,uCAAqB,EAAA;AACrC,IAAA,MAAM,CAAC,aAAA,EAAe,gBAAgB,CAAA,GAAIC,cAA8B,EAAA;AACxE,IAAM,MAAA,GAAA,GAAMC,aAAuB,IAAI,CAAA;AACvC,IAAA,MAAM,WAAc,GAAAC,kBAAA,CAAa,YAAc,EAAA,GAAA,EAAK,QAAQ,kBAAkB,CAAA;AAE9E,IAAAC,eAAA,CAAU,MAAM;AACd,MAAA,IAAI,IAAI,OAAS,EAAA;AACf,QAAA,gBAAA,CAAiB,MAAO,CAAA,gBAAA,CAAiB,GAAI,CAAA,OAAO,CAAC,CAAA;AAAA;AACvD,KACF,EAAG,EAAE,CAAA;AAEL,IACE,uBAAAC,cAAA;AAAA,MAACC,mBAAA;AAAA,MAAA;AAAA,QACE,GAAG,MAAA;AAAA,QACJ,kBAAiB,EAAA,UAAA;AAAA,QACjB,GAAK,EAAA,WAAA;AAAA,QACL,KAAA;AAAA,QACA,KAAO,EAAA;AAAA,UACL,CAAC,mBAA0B,GAAG,CAAG,EAAAC,yBAAA,CAAa,KAAK,CAAC,CAAA,EAAA,CAAA;AAAA,UACpD,GAAG;AAAA,SACL;AAAA,QACA,oBAAoB,CAAC,UAAA,KAAe,KAAM,CAAA,kBAAA,CAAmB,WAAW,CAAC,CAAA;AAAA,QACzE,cAAc,CAAC,UAAA,KAAe,KAAM,CAAA,YAAA,CAAa,WAAW,CAAC,CAAA;AAAA,QAC7D,aAAA,EAAe,CAAC,KAAA,EAAO,YAAiB,KAAA;AACtC,UAAA,IAAI,QAAQ,QAAU,EAAA;AACpB,YAAA,MAAM,SAAY,GAAA,OAAA,CAAQ,QAAS,CAAA,SAAA,GAAY,KAAM,CAAA,MAAA;AACrD,YAAA,KAAA,CAAM,cAAc,SAAS,CAAA;AAC7B,YAAI,IAAAC,iEAAA,CAAiC,SAAW,EAAA,YAAY,CAAG,EAAA;AAC7D,cAAA,KAAA,CAAM,cAAe,EAAA;AAAA;AACvB;AACF,SACF;AAAA,QACA,UAAU,MAAM;AACd,UAAA,IAAI,GAAI,CAAA,OAAA,IAAW,OAAQ,CAAA,QAAA,IAAY,aAAe,EAAA;AACpD,YAAc,aAAA,CAAA;AAAA,cACZ,OAAA,EAAS,QAAQ,QAAS,CAAA,YAAA;AAAA,cAC1B,QAAA,EAAU,QAAQ,QAAS,CAAA,YAAA;AAAA,cAC3B,SAAW,EAAA;AAAA,gBACT,IAAA,EAAM,IAAI,OAAQ,CAAA,YAAA;AAAA,gBAClB,YAAA,EAAcC,WAAM,CAAA,aAAA,CAAc,UAAU,CAAA;AAAA,gBAC5C,UAAA,EAAYA,WAAM,CAAA,aAAA,CAAc,aAAa;AAAA;AAC/C,aACD,CAAA;AAAA;AACH;AACF;AAAA,KACF;AAAA;AAGN;AAEA,oBAAA,CAAqB,WAAc,GAAA,mCAAA;;;;"}