{"version":3,"sources":["../../../src/components/ScrollArea/index.tsx","../../../src/components/ScrollArea/styles.css.ts"],"sourcesContent":["import { ScrollArea as BaseScrollArea } from \"@base-ui/react/scroll-area\";\nimport type React from \"react\";\nimport { type CSSProperties, forwardRef, useCallback, useRef } from \"react\";\nimport {\n  scrollAreaRootClass,\n  scrollAreaScrollbarClass,\n  scrollAreaThumbClass,\n  scrollAreaViewportClass,\n  scrollAreaViewportDraggableClass,\n} from \"./styles.css\";\n\ninterface ScrollAreaProps {\n  children: React.ReactNode;\n  className?: string;\n  style?: CSSProperties;\n  maxHeight?: string | number;\n  draggable?: boolean;\n}\n\nexport const ScrollArea = forwardRef<HTMLDivElement, ScrollAreaProps>(\n  function ScrollArea(\n    { children, className, style, maxHeight, draggable = false },\n    ref,\n  ) {\n    const viewportRef = useRef<HTMLDivElement | null>(null);\n    const dragState = useRef({\n      active: false,\n      startX: 0,\n      startY: 0,\n      scrollLeft: 0,\n      scrollTop: 0,\n      moved: false,\n    });\n\n    const onPointerDown = useCallback(\n      (e: React.PointerEvent<HTMLDivElement>) => {\n        if (!draggable) return;\n        if (e.pointerType === \"touch\") return;\n        const el = viewportRef.current;\n        if (!el) return;\n        dragState.current = {\n          active: true,\n          startX: e.clientX,\n          startY: e.clientY,\n          scrollLeft: el.scrollLeft,\n          scrollTop: el.scrollTop,\n          moved: false,\n        };\n        el.setPointerCapture(e.pointerId);\n      },\n      [draggable],\n    );\n\n    const onPointerMove = useCallback(\n      (e: React.PointerEvent<HTMLDivElement>) => {\n        const s = dragState.current;\n        if (!s.active) return;\n        const el = viewportRef.current;\n        if (!el) return;\n        const dx = e.clientX - s.startX;\n        const dy = e.clientY - s.startY;\n        if (!s.moved && Math.hypot(dx, dy) > 3) s.moved = true;\n        el.scrollLeft = s.scrollLeft - dx;\n        el.scrollTop = s.scrollTop - dy;\n      },\n      [],\n    );\n\n    const onPointerUp = useCallback((e: React.PointerEvent<HTMLDivElement>) => {\n      const s = dragState.current;\n      if (!s.active) return;\n      s.active = false;\n      viewportRef.current?.releasePointerCapture(e.pointerId);\n      if (s.moved) {\n        // Swallow the click that follows so drag doesn't trigger buttons/links underneath\n        const stopClick = (ev: MouseEvent) => {\n          ev.stopPropagation();\n          ev.preventDefault();\n        };\n        const el = viewportRef.current;\n        el?.addEventListener(\"click\", stopClick, { capture: true, once: true });\n        setTimeout(() => el?.removeEventListener(\"click\", stopClick, true), 0);\n      }\n    }, []);\n\n    return (\n      <BaseScrollArea.Root\n        ref={ref}\n        className={`${scrollAreaRootClass}${className ? ` ${className}` : \"\"}`}\n        style={{\n          maxHeight:\n            typeof maxHeight === \"number\" ? `${maxHeight}px` : maxHeight,\n          ...style,\n        }}\n      >\n        <BaseScrollArea.Viewport\n          ref={viewportRef}\n          className={`${scrollAreaViewportClass}${draggable ? ` ${scrollAreaViewportDraggableClass}` : \"\"}`}\n          onPointerDown={draggable ? onPointerDown : undefined}\n          onPointerMove={draggable ? onPointerMove : undefined}\n          onPointerUp={draggable ? onPointerUp : undefined}\n          onPointerCancel={draggable ? onPointerUp : undefined}\n        >\n          {children}\n        </BaseScrollArea.Viewport>\n        <BaseScrollArea.Scrollbar\n          orientation=\"vertical\"\n          className={scrollAreaScrollbarClass}\n        >\n          <BaseScrollArea.Thumb className={scrollAreaThumbClass} />\n        </BaseScrollArea.Scrollbar>\n        <BaseScrollArea.Scrollbar\n          orientation=\"horizontal\"\n          className={scrollAreaScrollbarClass}\n        >\n          <BaseScrollArea.Thumb className={scrollAreaThumbClass} />\n        </BaseScrollArea.Scrollbar>\n      </BaseScrollArea.Root>\n    );\n  },\n);\n\nScrollArea.displayName = \"ScrollArea\";\n","import 'src/theme/theme.css.ts.vanilla.css?source=#H4sIAAAAAAAAA-1d247buhV9P19BHL80QBzofjtPMxkEzVvRFuhjQEmUrRlZ8kjy2J6i_15QtiVeNmlppiiKghEmQaK1Nvfa2hJphQv-1m_JjvzKSYEPVf_34S-_bC_ddt5b4KJ__obQep01VdN2631b7nB7XlflZtuTrh-BVoJWxMc29v5Q49sRbidolacBCR01fAQ7FGy7heeD4GviI9xN0CqLbNdOYThuX0asl6BV7FmxVSixTNZ-glaBbTlWwKFbkssFCeCCTNgpbAgXY4SOwAguBAWKRYjhIgxQtgAYLsANx2SZwuLPpKqao6w_S9CqKEiaRWr4FDwf0HkUe0r0iCUDNvMDG8KKhSgGdOo6BYhma7GhNcuizM5VUCbjLS1cHIRC4TYtIbVcjTJBqzQjbk6U6Cn0c4JWUZzHmTL0CH1J0MqPsyKzAahYiipBK4dkcRpCYLYSuwSt7DwOokiBZLKtE7SyisD1MYdNqwOR69AMVcuLolCBp8B72nBBpsaOyNcErVw3BZFiEVqaro1hLFuDbgBGWZbBQCbTfoAGcRxz0KbF9QYowiFBqx8_nqLHJzV8Cv42oB_j6EGJHrHHARs_-iGEFUtxGtDhk-OBaLYY5wStvn_3f9hKKJPx-3CRPc_iy9GRrKnzX4o7xKYzyIP_PXz4cY_FTCN0HgnDx6fo8Q5potDZxHt6dIIHNUWslE3nFCd8iLzvGhJbMJvOLHYQ-q6jZ7Bq6PxiPXiOzadWk0Pf4mp93Jb9NDXbwfBkK8ROvqHlCtN5pgjooSEw6dDphuT0UOMn9DDjBPQA0VJJ6cwTYnrAeK6adPLxPXoowWzmdPJxhl8gPK1wxgSnk481_OLQRXkiuVh0Ahf9ghXiFkLcbovz5tjJhd4kyNqfhh_n-ueVaP_4OvzVlk853h9A2Cno9m5Q-s_enaDSZSvvhqUho3thuav7fDcmjWcHM4KyZX2Zwgr5uO61rMOQviJuf943mxbvt-d1gXdlJS817SpBv_-l2e_Luvv9K-pwTe_wtiykAEdCrw5dWG0OFWaS3CXIuzUIgN-RvDzsJnidIF8D78iuTJsqnwhNggINgQfvExQC4C7DFVnnZbev8HldNHX_t_KduSleE-R4-9MdXlXW5M-Eb9I2QU50l0lH_IfA7HSpbgnOy3oDpNonyLGUA954UKoHrUh2RDHVN12qaZNDJT0myFaPNpCgJE9aeeNYYoZnuAkvrAzv-7KpgSTfE2Q7ytFuPCBPx0qG23nGiEKqjg3fABdit8NVJSfqOMlwq2tZUJqu9ipMo4lJekw9uz3OaGecTt0E8BM0xh0BzPkgQZF4njkdsuW7nZ-eEk7E9urtfDWdjxPkOtL4DABTARKARaQJ8sYUW5yXh47NMGMEXs8y-eWMvOtZJjRh2-p6mh26YNXfzrOADSef7HDdl9matG0zPXidrfAJecR1hywjHaOlFD43jciyLpoJ9ix8shhhR9zWZb2ZkC_CZ9L3n3VOTuu8bfZ5c6wnYEX79tZIV9SuyTGjdZcg2xYgfdNUfbmfQDWtqATCzOLQaRJkuzfIrrncfxxinyDbt3YdB6mbdsem85og1xJBXdUcJ0g73ME3SNbs9k1N6p4uokiV_6yLZryD1znpXvqGUdKxvaHn9jitCJN_z97Md6hNT5h2PbANxzDLen_o1xVOSaVJ-W0Ju8LthnlwHZdwhbWCc1IIBsnDw2zinhV1Brlipem8EC0ji8m71hLl1xi8BtdeFIK75K7DTqSzuJICd1EVhhCCAE8r4PK7su9cX3v5BTbfd26whCsKD5eQBcmRtu8ErtB3brykXoq-wx-IIWhIF4Xg-y7TNg3ElRTki4cXBZAZEbbDkkfuuoJdOei5Qs9t5jNFyVt2PaOnClJLdqmgZ4rd9syugOZQpbRf5iuGO62ar1vos12C_JmXGO6yeoF6qMeaGdrTps1J-9fLCk_qtD2ziJwTQGi314V0sQDtQr6gv2MWyHPoYvf1Mx6UQABJxmGhDLgR35aq4btRv8xR8SUtp6VaoMY83w-yx_nwYV9qyfdkfFM1KwDfkp61kC7o9-zhKtzvixufV-45ye3d3Sy20JGeuzB7uCE97ypiYRhBi7-wFHxDesFVyyK6JCX8UBRBSaRR0pGKZOp-9GJNLQWueDXxAipfu1STcHroe-ZVklSxTLF0FHlCjXLFw1CkCfcbmTmaWJtC8biCeZLIzTK6oHU7N2n-qqgWOiBNSvl5EVvI-CVBjubqgKtBr1KsD3iSmOdOsSDiWUJ-tV4cvPzzGsUCCGJJee5nqYMb4HWWRuHyt4r1HkCSku3mKYUufa_Xyc2D656cmPoeEmRprwtPLrNmenHmvd3IyNLea3ICD3X-kwt1XBjqUj1BzIkG0T2iBDav5nxjIwucndUZSGrel4W6vOLmtPhWsoTLKfHtKxdZ4HpRObqow3cWBbreSLwOd26DXdm8Em9hWzApSGL8j8WCOs0P5nYaH4QXFy7rEjkfSWL0oYhQ-8Uz248LwcvDH2keTTOmy-IND0peVDa7FwcyLydf2j5jApIS8qFQYCMWsxuRjcEr2yzsGjEbSd_2IwGhLizndiETgdf2_IGm0fTgy6xwmhcifqVfROtehvg7-EMzROVXCH4NvzmAmMIKzG8WJAyvw3zFOyRNBCH91wXpcysyv12SPbQu87sFyQOLM7_X8mm3Ah-a_IN-tTzSxGzfFP-jIvKEJFWvhkSa2BynmWkqGuM8M1u4K97nJs21RGAlyJ1NE1MObP3nAoHNZxw4t404__rt29UPgNsXwQzgLTADuLkVWPz2YZ0ZANhZrjYD6Hbsf9IMoPMZyGYA3a590QwAFERlBtB5DEZgpNm5_wkzgMpfIJsBAPE6M4CHHSLssNSYAYLAzTXoEUv3Y8Yk8GDsJ80ARZG7IRxYNgMUBYkwX2CNGcAKXMuBdtdDZgBge73KDKDetf8pM4DaYyCbAQDrgtoMQPdierEKzJsBgC32CjOAct_-Z8wASoeBbAYAbAs6M4Cb22IDa8wAwNZ6pRkgy_xCsWcfMAMURZjPNAMURZwqXAayGaAo0jji-3eGGcAKbF94YN43A1jYc-x7Q00UZ84ufdgMgCMv05AkM4CXp06gyQwyA4Rhmkf8M0VjBrByeoBo2AxgB_TQEAQzgF3QQ42f0HTGcTE9QDRoBogwPWC8ZAbQOQ0AM4DGxgCYAZQb_P-LZgD7uimd_rSbFP_J8f2vtx_rmxV8kZ0BA876OhzffP8LMNI0znbZOKxZgBsnsIRxVJaBeyOFX2T_AD-SqAh0EcwdhrMUcOOEkiLYWHBvpOgL5DLgh7pJMl4D4zWYmMZrYLwGxmswIozXwHgNjNfAeA2M18B4DYzXwHgNblzjNTBeA-M1MF4D4zWYEcB4DYzXwHgNjNfAeA2M18B4DYzXwHgNjNfAeA2M18B4DS4xjNfAeA2M18B4DWbQjNfgP-w1SEmPBa-Bv8BrkBXEL2A_AOQ1iHEW6-DTfy7Snc8pjhRgyGtg41DcDqj0GtieX6Szv3jAyt0i4jcJmy8eMF88YL54wHzxgPnigQvYfPGA-eIBCW2-eMB88YD54gFjBjBmAGMGMGYAYwb4_zQDsO8djBnAmAGMGcCYARaEMGYAYwYwZoD7TGMGuAQwZoAFAYwZwJgBjBnAmAGMGcCYAS40YwYwZgBjBjBmAGMGMGYAYwYwZgBjBjBmAGMGmEM1ZoBrAGMGUNGMGWAG-3_QDPBvr-DT6oiQAAA';\nimport 'src/components/ScrollArea/styles.css.ts.vanilla.css?source=#H4sIAAAAAAAAA6VUXWvbMBR9z68QhdIEpuBk6cdUBhvbL9jGXsYIsnVti8q65kpOmo389yHLaut1WRr6YnQu8jnn6h5p7vzOgFu7gtCYjwTyC6L_ZKRz6zW25mZznbHfE8ZadNprtIIRGOn1Bm4njOEGqDS4FazWSoENta1WvhZskWXnAdagq9onvJ_Mnyl-17Btkcaqi171v1yP8nwnmOw8jmr3T01FtVwSHygtWjjFjhB8C_md9vyBqneotGuN3L2E8DPJqpK5gRHzsqcpOnJIglUk87-7SJ11Dog7MFD4V8gJWYTpPVPNta3-Tfg1NTwiejtuvzRwf8AkYx67ouZBOAQoVR8jJXOHpvPD3lawLKwoDrtf5-g9NgMYRnjV9oqtVErbSrBlxJ6kTcT9TpbNl-6k1n4o6SWvwxC0rX4-jeJNEDmZCkmD9TKYen9RI-lfaL00F5HaQOmP9dwfS0rC4CXBdC2uDnn7VndNPvK16oXD0ARb9GKyuKsIO6t4gSaEYiNpyiNw3ELnSRpugtJ6vVjltVttFu9m0SgpIE5S6c6lHyPi7mHzspjdHnhIXuhZiBxKpCG7aD1YL9jZ2ZEwXcbHIp7yAPqQlEiNiEsjPUz5ZXb-hoXv7OhDxlijbXpMVqsYvVBK22JtP_nQgNKSTVuCEshxAtUVoHiD6RQCnvU9nXb3xlFPt2o_2f8B_m6lEtUFAAA';\nexport var scrollAreaRootClass = 'styles_scrollAreaRootClass__opl8v70';\nexport var scrollAreaScrollbarClass = 'styles_scrollAreaScrollbarClass__opl8v73';\nexport var scrollAreaThumbClass = 'styles_scrollAreaThumbClass__opl8v74';\nexport var scrollAreaViewportClass = 'styles_scrollAreaViewportClass__opl8v71';\nexport var scrollAreaViewportDraggableClass = 'styles_scrollAreaViewportDraggableClass__opl8v72';"],"mappings":"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","names":["ScrollArea","BaseScrollArea"]}