{"version":3,"file":"ScrollContainer.mjs","sources":["../../../../src/components/ScrollContainer/ScrollContainer.tsx"],"sourcesContent":["import { css } from '@emotion/css';\nimport { Property } from 'csstype';\nimport { forwardRef, PropsWithChildren, UIEventHandler } from 'react';\n\nimport { GrafanaTheme2 } from '@grafana/data';\n\nimport { useStyles2 } from '../../themes';\nimport { Box, BoxProps } from '../Layout/Box/Box';\n\nimport { ScrollIndicators } from './ScrollIndicators';\n\ninterface Props extends Omit<BoxProps, 'display' | 'direction' | 'element' | 'flex' | 'position'> {\n  showScrollIndicators?: boolean;\n  onScroll?: UIEventHandler<HTMLDivElement>;\n  overflowX?: Property.OverflowX;\n  overflowY?: Property.OverflowY;\n  scrollbarWidth?: Property.ScrollbarWidth;\n}\n\nexport const ScrollContainer = forwardRef<HTMLDivElement, PropsWithChildren<Props>>(\n  (\n    {\n      children,\n      showScrollIndicators = false,\n      onScroll,\n      overflowX = 'auto',\n      overflowY = 'auto',\n      scrollbarWidth = 'thin',\n      ...rest\n    },\n    ref\n  ) => {\n    const styles = useStyles2(getStyles, scrollbarWidth, overflowY, overflowX);\n    const defaults: Partial<BoxProps> = {\n      maxHeight: '100%',\n      minHeight: 0,\n      minWidth: 0,\n    };\n    const boxProps = { ...defaults, ...rest };\n\n    return (\n      <Box {...boxProps} display=\"flex\" direction=\"column\" flex={1} position=\"relative\">\n        <div onScroll={onScroll} className={styles.scroller} ref={ref}>\n          {showScrollIndicators ? <ScrollIndicators>{children}</ScrollIndicators> : children}\n        </div>\n      </Box>\n    );\n  }\n);\nScrollContainer.displayName = 'ScrollContainer';\n\nconst getStyles = (\n  theme: GrafanaTheme2,\n  scrollbarWidth: Props['scrollbarWidth'],\n  overflowY: Props['overflowY'],\n  overflowX: Props['overflowX']\n) => ({\n  scroller: css({\n    display: 'flex',\n    flex: 1,\n    flexDirection: 'column',\n    overflowX,\n    overflowY,\n    scrollbarWidth,\n  }),\n});\n"],"names":[],"mappings":";;;;;;;;;;;;AAmBO,MAAM,eAAkB,GAAA,UAAA;AAAA,EAC7B,CACE;AAAA,IACE,QAAA;AAAA,IACA,oBAAuB,GAAA,KAAA;AAAA,IACvB,QAAA;AAAA,IACA,SAAY,GAAA,MAAA;AAAA,IACZ,SAAY,GAAA,MAAA;AAAA,IACZ,cAAiB,GAAA,MAAA;AAAA,IACjB,GAAG;AAAA,KAEL,GACG,KAAA;AACH,IAAA,MAAM,MAAS,GAAA,UAAA,CAAW,SAAW,EAAA,cAAA,EAAgB,WAAW,SAAS,CAAA;AACzE,IAAA,MAAM,QAA8B,GAAA;AAAA,MAClC,SAAW,EAAA,MAAA;AAAA,MACX,SAAW,EAAA,CAAA;AAAA,MACX,QAAU,EAAA;AAAA,KACZ;AACA,IAAA,MAAM,QAAW,GAAA,EAAE,GAAG,QAAA,EAAU,GAAG,IAAK,EAAA;AAExC,IACE,uBAAA,GAAA,CAAC,GAAK,EAAA,EAAA,GAAG,QAAU,EAAA,OAAA,EAAQ,QAAO,SAAU,EAAA,QAAA,EAAS,IAAM,EAAA,CAAA,EAAG,QAAS,EAAA,UAAA,EACrE,8BAAC,KAAI,EAAA,EAAA,QAAA,EAAoB,SAAW,EAAA,MAAA,CAAO,QAAU,EAAA,GAAA,EAClD,QAAuB,EAAA,oBAAA,mBAAA,GAAA,CAAC,gBAAkB,EAAA,EAAA,QAAA,EAAS,CAAsB,GAAA,QAAA,EAC5E,CACF,EAAA,CAAA;AAAA;AAGN;AACA,eAAA,CAAgB,WAAc,GAAA,iBAAA;AAE9B,MAAM,SAAY,GAAA,CAChB,KACA,EAAA,cAAA,EACA,WACA,SACI,MAAA;AAAA,EACJ,UAAU,GAAI,CAAA;AAAA,IACZ,OAAS,EAAA,MAAA;AAAA,IACT,IAAM,EAAA,CAAA;AAAA,IACN,aAAe,EAAA,QAAA;AAAA,IACf,SAAA;AAAA,IACA,SAAA;AAAA,IACA;AAAA,GACD;AACH,CAAA,CAAA;;;;"}