@grafana/ui
Version:
Grafana Components Library
1 lines • 3.28 kB
Source Map (JSON)
{"version":3,"file":"HandleTooltip.mjs","sources":["../../../../src/components/Slider/HandleTooltip.tsx"],"sourcesContent":["import { css } from '@emotion/css';\nimport Tooltip, { TooltipRef } from 'rc-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 overlayClassName={styles.tooltip}\n placement={placement}\n overlay={tipFormatter ?? value}\n overlayInnerStyle={{ minHeight: 'auto' }}\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 };\n};\n\nexport default HandleTooltip;\n"],"names":[],"mappings":";;;;;;AASM,MAAA,aAAA,GAAgB,CAAC,KAMjB,KAAA;AACJ,EAAM,MAAA,EAAE,OAAO,QAAU,EAAA,OAAA,EAAS,WAAW,YAAc,EAAA,GAAG,WAAc,GAAA,KAAA;AAE5E,EAAM,MAAA,UAAA,GAAa,OAAmB,IAAI,CAAA;AAC1C,EAAM,MAAA,MAAA,GAAS,OAAsB,IAAI,CAAA;AACzC,EAAM,MAAA,MAAA,GAAS,WAAW,aAAa,CAAA;AAEvC,EAAA,SAAS,eAAkB,GAAA;AACzB,IAAI,IAAA,MAAA,CAAO,YAAY,IAAM,EAAA;AAC3B,MAAA,oBAAA,CAAqB,OAAO,OAAO,CAAA;AAAA;AACrC;AAGF,EAAA,SAAS,SAAY,GAAA;AACnB,IAAO,MAAA,CAAA,OAAA,GAAU,sBAAsB,MAAM;AA7BjD,MAAA,IAAA,EAAA;AA8BM,MAAA,CAAA,EAAA,GAAA,UAAA,CAAW,YAAX,IAAoB,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,UAAA,EAAA;AAAA,KACrB,CAAA;AAAA;AAGH,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,IAAI,OAAS,EAAA;AACX,MAAU,SAAA,EAAA;AAAA,KACL,MAAA;AACL,MAAgB,eAAA,EAAA;AAAA;AAGlB,IAAO,OAAA,eAAA;AAAA,GACN,EAAA,CAAC,KAAO,EAAA,OAAO,CAAC,CAAA;AAEnB,EACE,uBAAA,GAAA;AAAA,IAAC,OAAA;AAAA,IAAA;AAAA,MACC,kBAAkB,MAAO,CAAA,OAAA;AAAA,MACzB,SAAA;AAAA,MACA,SAAS,YAAgB,IAAA,IAAA,GAAA,YAAA,GAAA,KAAA;AAAA,MACzB,iBAAA,EAAmB,EAAE,SAAA,EAAW,MAAO,EAAA;AAAA,MACvC,GAAK,EAAA,UAAA;AAAA,MACL,OAAA;AAAA,MACC,GAAG,SAAA;AAAA,MAEH;AAAA;AAAA,GACH;AAEJ;AAEA,MAAM,aAAA,GAAgB,CAAC,KAAyB,KAAA;AAC9C,EAAO,OAAA;AAAA,IACL,SAAS,GAAI,CAAA;AAAA,MACX,QAAU,EAAA,UAAA;AAAA,MACV,OAAS,EAAA,OAAA;AAAA,MACT,UAAY,EAAA,SAAA;AAAA,MACZ,QAAA,EAAU,KAAM,CAAA,UAAA,CAAW,SAAU,CAAA,QAAA;AAAA,MACrC,OAAS,EAAA,GAAA;AAAA,MACT,OAAS,EAAA,CAAA;AAAA,MACT,MAAA,EAAQ,MAAM,MAAO,CAAA;AAAA,KACtB;AAAA,GACH;AACF,CAAA;;;;"}