{"version":3,"file":"SidebarResizer.cjs","sources":["../../../../src/components/Sidebar/SidebarResizer.tsx"],"sourcesContent":["import { css } from '@emotion/css';\nimport { useCallback, useContext, useRef } from 'react';\n\nimport { GrafanaTheme2 } from '@grafana/data';\n\nimport { useStyles2 } from '../../themes/ThemeContext';\n\nimport { SidebarContext } from './useSidebar';\n\nexport function SidebarResizer() {\n  const styles = useStyles2(getStyles);\n  const context = useContext(SidebarContext);\n  const resizerRef = useRef<HTMLDivElement | null>(null);\n  const dragStart = useRef<number | null>(null);\n\n  if (!context) {\n    throw new Error('Sidebar.Resizer must be used within a Sidebar component');\n  }\n\n  const { onResize, position } = context;\n\n  const onPointerDown = useCallback(\n    (e: React.PointerEvent<HTMLDivElement>) => {\n      if (resizerRef.current === null) {\n        return;\n      }\n\n      resizerRef.current.setPointerCapture(e.pointerId);\n      dragStart.current = e.clientX;\n    },\n    [resizerRef]\n  );\n\n  const onPointerMove = useCallback(\n    (e: React.PointerEvent<HTMLDivElement>) => {\n      if (dragStart.current === null) {\n        return;\n      }\n\n      // mouse is moving with no buttons pressed\n      if (!e.buttons) {\n        dragStart.current = null;\n        return;\n      }\n\n      const diff = e.clientX - dragStart.current;\n      dragStart.current = e.clientX;\n\n      onResize(position === 'right' ? -diff : diff);\n    },\n    [dragStart, onResize, position]\n  );\n\n  const onPointerUp = useCallback(\n    (e: React.PointerEvent<HTMLDivElement>) => {\n      dragStart.current = null;\n    },\n    [dragStart]\n  );\n\n  return (\n    <div\n      ref={resizerRef}\n      className={styles[context.position]}\n      onPointerDown={onPointerDown}\n      onPointerMove={onPointerMove}\n      onPointerUp={onPointerUp}\n    />\n  );\n}\n\nconst getStyles = (theme: GrafanaTheme2) => {\n  return {\n    right: css({\n      position: 'absolute',\n      width: theme.spacing.gridSize,\n      left: -theme.spacing.gridSize,\n      top: theme.shape.radius.default,\n      bottom: theme.shape.radius.default,\n      cursor: 'col-resize',\n      zIndex: 1,\n      '&:hover': {\n        borderRight: `1px solid ${theme.colors.primary.border}`,\n      },\n    }),\n    left: css({\n      position: 'absolute',\n      width: theme.spacing.gridSize,\n      right: -theme.spacing.gridSize,\n      top: theme.shape.radius.default,\n      bottom: theme.shape.radius.default,\n      cursor: 'col-resize',\n      zIndex: 1,\n      '&:hover': {\n        borderLeft: `1px solid ${theme.colors.primary.border}`,\n      },\n    }),\n  };\n};\n"],"names":["useStyles2","useContext","SidebarContext","useRef","useCallback","jsx","css"],"mappings":"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"}