{"version":3,"file":"ScrollbarX.cjs","sources":["../../../../src/components/ScrollArea/ScrollAreaScrollbar/ScrollbarX.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 ScrollAreaScrollbarX = forwardRef<HTMLDivElement, ScrollAreaScrollbarAxisProps>(\n  (props, forwardedRef) => {\n    const { sizes, onSizesChange, style, ...others } = props;\n    const ctx = useScrollAreaContext();\n    const [computedStyle, setComputedStyle] = useState<CSSStyleDeclaration>();\n    const ref = useRef<HTMLDivElement>(null);\n    const composeRefs = useMergedRef(forwardedRef, ref, ctx.onScrollbarXChange);\n\n    useEffect(() => {\n      if (ref.current) {\n        setComputedStyle(getComputedStyle(ref.current));\n      }\n    }, [ref]);\n\n    return (\n      <Scrollbar\n        data-orientation=\"horizontal\"\n        {...others}\n        ref={composeRefs}\n        sizes={sizes}\n        style={{\n          ...style,\n          ['--sa-thumb-width' as any]: `${getThumbSize(sizes)}px`,\n        }}\n        onThumbPointerDown={(pointerPos) => props.onThumbPointerDown(pointerPos.x)}\n        onDragScroll={(pointerPos) => props.onDragScroll(pointerPos.x)}\n        onWheelScroll={(event, maxScrollPos) => {\n          if (ctx.viewport) {\n            const scrollPos = ctx.viewport.scrollLeft + event.deltaX;\n            props.onWheelScroll(scrollPos);\n            if (isScrollingWithinScrollbarBounds(scrollPos, maxScrollPos)) {\n              event.preventDefault();\n            }\n          }\n        }}\n        onResize={() => {\n          if (ref.current && ctx.viewport && computedStyle) {\n            onSizesChange({\n              content: ctx.viewport.scrollWidth,\n              viewport: ctx.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);\n\nScrollAreaScrollbarX.displayName = '@raikou/core/ScrollAreaScrollbarX';\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,MAAMC,uCAAqB,EAAA;AACjC,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,IAAI,kBAAkB,CAAA;AAE1E,IAAAC,eAAA,CAAU,MAAM;AACd,MAAA,IAAI,IAAI,OAAS,EAAA;AACf,QAAiB,gBAAA,CAAA,gBAAA,CAAiB,GAAI,CAAA,OAAO,CAAC,CAAA;AAAA;AAChD,KACF,EAAG,CAAC,GAAG,CAAC,CAAA;AAER,IACE,uBAAAC,cAAA;AAAA,MAACC,mBAAA;AAAA,MAAA;AAAA,QACC,kBAAiB,EAAA,YAAA;AAAA,QAChB,GAAG,MAAA;AAAA,QACJ,GAAK,EAAA,WAAA;AAAA,QACL,KAAA;AAAA,QACA,KAAO,EAAA;AAAA,UACL,GAAG,KAAA;AAAA,UACH,CAAC,kBAAyB,GAAG,CAAG,EAAAC,yBAAA,CAAa,KAAK,CAAC,CAAA,EAAA;AAAA,SACrD;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,IAAI,QAAU,EAAA;AAChB,YAAA,MAAM,SAAY,GAAA,GAAA,CAAI,QAAS,CAAA,UAAA,GAAa,KAAM,CAAA,MAAA;AAClD,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,GAAI,CAAA,QAAA,IAAY,aAAe,EAAA;AAChD,YAAc,aAAA,CAAA;AAAA,cACZ,OAAA,EAAS,IAAI,QAAS,CAAA,WAAA;AAAA,cACtB,QAAA,EAAU,IAAI,QAAS,CAAA,WAAA;AAAA,cACvB,SAAW,EAAA;AAAA,gBACT,IAAA,EAAM,IAAI,OAAQ,CAAA,WAAA;AAAA,gBAClB,YAAA,EAAcC,WAAM,CAAA,aAAA,CAAc,WAAW,CAAA;AAAA,gBAC7C,UAAA,EAAYA,WAAM,CAAA,aAAA,CAAc,YAAY;AAAA;AAC9C,aACD,CAAA;AAAA;AACH;AACF;AAAA,KACF;AAAA;AAGN;AAEA,oBAAA,CAAqB,WAAc,GAAA,mCAAA;;;;"}