{"version":3,"file":"VizTooltipContent.mjs","sources":["../../../../src/components/VizTooltip/VizTooltipContent.tsx"],"sourcesContent":["import { css } from '@emotion/css';\nimport { type CSSProperties, type ReactNode } from 'react';\n\nimport { type GrafanaTheme2 } from '@grafana/data';\n\nimport { useStyles2 } from '../../themes/ThemeContext';\n\nimport { VizTooltipRow } from './VizTooltipRow';\nimport { type VizTooltipItem } from './types';\n\ninterface VizTooltipContentProps {\n  /** The rows to render, one per series or field. */\n  items: VizTooltipItem[];\n  children?: ReactNode;\n  /** When true the content area becomes vertically scrollable, constrained by `maxHeight`. */\n  scrollable?: boolean;\n  /**\n   * Whether the tooltip is currently pinned (locked open by the user).\n   * When pinned, label and value cells become clickable to copy their text to the clipboard.\n   * Defaults to `false`.\n   */\n  isPinned?: boolean;\n  /** Maximum height in pixels of the scrollable content area. Only applied when `scrollable` is true. */\n  maxHeight?: number;\n}\n\n/** @alpha */\nexport const VizTooltipContent = ({\n  items,\n  children,\n  isPinned = false,\n  scrollable = false,\n  maxHeight,\n}: VizTooltipContentProps) => {\n  const styles = useStyles2(getStyles);\n\n  const scrollableStyle: CSSProperties = scrollable\n    ? {\n        maxHeight: maxHeight,\n        overflowY: 'auto',\n      }\n    : {};\n\n  return (\n    <div className={styles.wrapper} style={scrollableStyle}>\n      {items.map(({ label, value, color, colorIndicator, colorPlacement, isActive, lineStyle, isHiddenFromViz }, i) => (\n        <VizTooltipRow\n          key={i}\n          label={label}\n          value={value}\n          color={color}\n          colorIndicator={colorIndicator}\n          colorPlacement={colorPlacement}\n          isActive={isActive}\n          isPinned={isPinned}\n          lineStyle={lineStyle}\n          showValueScroll={!scrollable}\n          isHiddenFromViz={isHiddenFromViz}\n        />\n      ))}\n      {children}\n    </div>\n  );\n};\n\nconst getStyles = (theme: GrafanaTheme2) => ({\n  wrapper: css({\n    display: 'flex',\n    flexDirection: 'column',\n    flex: 1,\n    gap: 2,\n    borderTop: `1px solid ${theme.colors.border.weak}`,\n    padding: theme.spacing(1),\n  }),\n});\n"],"names":[],"mappings":";;;;;;AA2BO,MAAM,oBAAoB,CAAC;AAAA,EAChC,KAAA;AAAA,EACA,QAAA;AAAA,EACA,QAAA,GAAW,KAAA;AAAA,EACX,UAAA,GAAa,KAAA;AAAA,EACb;AACF,CAAA,KAA8B;AAC5B,EAAA,MAAM,MAAA,GAAS,WAAW,SAAS,CAAA;AAEnC,EAAA,MAAM,kBAAiC,UAAA,GACnC;AAAA,IACE,SAAA;AAAA,IACA,SAAA,EAAW;AAAA,MAEb,EAAC;AAEL,EAAA,4BACG,KAAA,EAAA,EAAI,SAAA,EAAW,MAAA,CAAO,OAAA,EAAS,OAAO,eAAA,EACpC,QAAA,EAAA;AAAA,IAAA,KAAA,CAAM,GAAA,CAAI,CAAC,EAAE,KAAA,EAAO,KAAA,EAAO,KAAA,EAAO,cAAA,EAAgB,cAAA,EAAgB,QAAA,EAAU,SAAA,EAAW,eAAA,EAAgB,EAAG,CAAA,qBACzG,GAAA;AAAA,MAAC,aAAA;AAAA,MAAA;AAAA,QAEC,KAAA;AAAA,QACA,KAAA;AAAA,QACA,KAAA;AAAA,QACA,cAAA;AAAA,QACA,cAAA;AAAA,QACA,QAAA;AAAA,QACA,QAAA;AAAA,QACA,SAAA;AAAA,QACA,iBAAiB,CAAC,UAAA;AAAA,QAClB;AAAA,OAAA;AAAA,MAVK;AAAA,KAYR,CAAA;AAAA,IACA;AAAA,GAAA,EACH,CAAA;AAEJ;AAEA,MAAM,SAAA,GAAY,CAAC,KAAA,MAA0B;AAAA,EAC3C,SAAS,GAAA,CAAI;AAAA,IACX,OAAA,EAAS,MAAA;AAAA,IACT,aAAA,EAAe,QAAA;AAAA,IACf,IAAA,EAAM,CAAA;AAAA,IACN,GAAA,EAAK,CAAA;AAAA,IACL,SAAA,EAAW,CAAA,UAAA,EAAa,KAAA,CAAM,MAAA,CAAO,OAAO,IAAI,CAAA,CAAA;AAAA,IAChD,OAAA,EAAS,KAAA,CAAM,OAAA,CAAQ,CAAC;AAAA,GACzB;AACH,CAAA,CAAA;;;;"}