{"version":3,"file":"HandleTooltip.cjs","sources":["../../../../src/components/Slider/HandleTooltip.tsx"],"sourcesContent":["import { css } from '@emotion/css';\nimport Tooltip, { TooltipRef } from '@rc-component/tooltip';\nimport { useEffect, useRef } from 'react';\nimport * as React from 'react';\n\nimport { GrafanaTheme2 } from '@grafana/data';\n\nimport { useStyles2 } from '../../themes/ThemeContext';\n\nconst HandleTooltip = (props: {\n  value: number;\n  children: React.ReactElement;\n  visible: boolean;\n  placement: 'top' | 'right';\n  tipFormatter?: () => React.ReactNode;\n}) => {\n  const { value, children, visible, placement, tipFormatter, ...restProps } = props;\n\n  const tooltipRef = useRef<TooltipRef>(null);\n  const rafRef = useRef<number | null>(null);\n  const styles = useStyles2(tooltipStyles);\n\n  function cancelKeepAlign() {\n    if (rafRef.current !== null) {\n      cancelAnimationFrame(rafRef.current);\n    }\n  }\n\n  function keepAlign() {\n    rafRef.current = requestAnimationFrame(() => {\n      tooltipRef.current?.forceAlign();\n    });\n  }\n\n  useEffect(() => {\n    if (visible) {\n      keepAlign();\n    } else {\n      cancelKeepAlign();\n    }\n\n    return cancelKeepAlign;\n  }, [value, visible]);\n\n  return (\n    <Tooltip\n      classNames={{\n        container: styles.container,\n        root: styles.tooltip,\n      }}\n      placement={placement}\n      overlay={tipFormatter ?? value}\n      ref={tooltipRef}\n      visible={visible}\n      {...restProps}\n    >\n      {children}\n    </Tooltip>\n  );\n};\n\nconst tooltipStyles = (theme: GrafanaTheme2) => {\n  return {\n    tooltip: css({\n      position: 'absolute',\n      display: 'block',\n      visibility: 'visible',\n      fontSize: theme.typography.bodySmall.fontSize,\n      opacity: 0.9,\n      padding: 3,\n      zIndex: theme.zIndex.tooltip,\n    }),\n    container: css({\n      minHeight: 'auto',\n    }),\n  };\n};\n\nexport default HandleTooltip;\n"],"names":["useRef","useStyles2","useEffect","jsx","Tooltip","css"],"mappings":";;;;;;;;;;;;;AASA,MAAM,aAAA,GAAgB,CAAC,KAAA,KAMjB;AACJ,EAAA,MAAM,EAAE,OAAO,QAAA,EAAU,OAAA,EAAS,WAAW,YAAA,EAAc,GAAG,WAAU,GAAI,KAAA;AAE5E,EAAA,MAAM,UAAA,GAAaA,aAAmB,IAAI,CAAA;AAC1C,EAAA,MAAM,MAAA,GAASA,aAAsB,IAAI,CAAA;AACzC,EAAA,MAAM,MAAA,GAASC,wBAAW,aAAa,CAAA;AAEvC,EAAA,SAAS,eAAA,GAAkB;AACzB,IAAA,IAAI,MAAA,CAAO,YAAY,IAAA,EAAM;AAC3B,MAAA,oBAAA,CAAqB,OAAO,OAAO,CAAA;AAAA,IACrC;AAAA,EACF;AAEA,EAAA,SAAS,SAAA,GAAY;AACnB,IAAA,MAAA,CAAO,OAAA,GAAU,sBAAsB,MAAM;AA7BjD,MAAA,IAAA,EAAA;AA8BM,MAAA,CAAA,EAAA,GAAA,UAAA,CAAW,YAAX,IAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAoB,UAAA,EAAA;AAAA,IACtB,CAAC,CAAA;AAAA,EACH;AAEA,EAAAC,eAAA,CAAU,MAAM;AACd,IAAA,IAAI,OAAA,EAAS;AACX,MAAA,SAAA,EAAU;AAAA,IACZ,CAAA,MAAO;AACL,MAAA,eAAA,EAAgB;AAAA,IAClB;AAEA,IAAA,OAAO,eAAA;AAAA,EACT,CAAA,EAAG,CAAC,KAAA,EAAO,OAAO,CAAC,CAAA;AAEnB,EAAA,uBACEC,cAAA;AAAA,IAACC,wBAAA;AAAA,IAAA;AAAA,MACC,UAAA,EAAY;AAAA,QACV,WAAW,MAAA,CAAO,SAAA;AAAA,QAClB,MAAM,MAAA,CAAO;AAAA,OACf;AAAA,MACA,SAAA;AAAA,MACA,SAAS,YAAA,IAAA,IAAA,GAAA,YAAA,GAAgB,KAAA;AAAA,MACzB,GAAA,EAAK,UAAA;AAAA,MACL,OAAA;AAAA,MACC,GAAG,SAAA;AAAA,MAEH;AAAA;AAAA,GACH;AAEJ;AAEA,MAAM,aAAA,GAAgB,CAAC,KAAA,KAAyB;AAC9C,EAAA,OAAO;AAAA,IACL,SAASC,OAAA,CAAI;AAAA,MACX,QAAA,EAAU,UAAA;AAAA,MACV,OAAA,EAAS,OAAA;AAAA,MACT,UAAA,EAAY,SAAA;AAAA,MACZ,QAAA,EAAU,KAAA,CAAM,UAAA,CAAW,SAAA,CAAU,QAAA;AAAA,MACrC,OAAA,EAAS,GAAA;AAAA,MACT,OAAA,EAAS,CAAA;AAAA,MACT,MAAA,EAAQ,MAAM,MAAA,CAAO;AAAA,KACtB,CAAA;AAAA,IACD,WAAWA,OAAA,CAAI;AAAA,MACb,SAAA,EAAW;AAAA,KACZ;AAAA,GACH;AACF,CAAA;;;;"}