@grafana/ui
Version:
Grafana Components Library
1 lines • 3.32 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":";;;;;;;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,GAAa,OAAmB,IAAI,CAAA;AAC1C,EAAA,MAAM,MAAA,GAAS,OAAsB,IAAI,CAAA;AACzC,EAAA,MAAM,MAAA,GAAS,WAAW,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,EAAA,SAAA,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,uBACE,GAAA;AAAA,IAAC,OAAA;AAAA,IAAA;AAAA,MACC,kBAAkB,MAAA,CAAO,OAAA;AAAA,MACzB,SAAA;AAAA,MACA,SAAS,YAAA,IAAA,IAAA,GAAA,YAAA,GAAgB,KAAA;AAAA,MACzB,iBAAA,EAAmB,EAAE,SAAA,EAAW,MAAA,EAAO;AAAA,MACvC,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,SAAS,GAAA,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;AAAA,GACH;AACF,CAAA;;;;"}