{"version":3,"file":"BarGaugeCell.cjs","sources":["../../../../../src/components/Table/Cells/BarGaugeCell.tsx"],"sourcesContent":["import { isFunction } from 'lodash';\nimport { useState } from 'react';\n\nimport { ThresholdsConfig, ThresholdsMode, VizOrientation, getFieldConfigWithMinMax } from '@grafana/data';\nimport { BarGaugeDisplayMode, BarGaugeValueMode, TableCellDisplayMode } from '@grafana/schema';\n\nimport { BarGauge } from '../../BarGauge/BarGauge';\nimport { DataLinksActionsTooltip, renderSingleLink } from '../DataLinksActionsTooltip';\nimport { TableCellProps } from '../types';\nimport {\n  DataLinksActionsTooltipCoords,\n  getAlignmentFactor,\n  getCellOptions,\n  getDataLinksActionsTooltipUtils,\n} from '../utils';\n\nconst defaultScale: ThresholdsConfig = {\n  mode: ThresholdsMode.Absolute,\n  steps: [\n    {\n      color: 'blue',\n      value: -Infinity,\n    },\n    {\n      color: 'green',\n      value: 20,\n    },\n  ],\n};\n\nexport const BarGaugeCell = (props: TableCellProps) => {\n  const { field, innerWidth, tableStyles, cell, cellProps, row } = props;\n  const displayValue = field.display!(cell.value);\n  const cellOptions = getCellOptions(field);\n\n  let config = getFieldConfigWithMinMax(field, false);\n  if (!config.thresholds) {\n    config = {\n      ...config,\n      thresholds: defaultScale,\n    };\n  }\n\n  // Set default display mode and update if defined\n  // and update the valueMode if defined\n  let barGaugeMode: BarGaugeDisplayMode = BarGaugeDisplayMode.Gradient;\n  let valueDisplayMode: BarGaugeValueMode | undefined = undefined;\n\n  if (cellOptions.type === TableCellDisplayMode.Gauge) {\n    barGaugeMode = cellOptions.mode ?? BarGaugeDisplayMode.Gradient;\n    valueDisplayMode =\n      cellOptions.valueDisplayMode !== undefined ? cellOptions.valueDisplayMode : BarGaugeValueMode.Text;\n  }\n\n  const getLinks = () => {\n    if (!isFunction(field.getLinks)) {\n      return [];\n    }\n\n    return field.getLinks({ valueRowIndex: row.index });\n  };\n\n  const alignmentFactors = getAlignmentFactor(field, displayValue, cell.row.index);\n\n  const renderComponent = () => {\n    return (\n      <BarGauge\n        width={innerWidth}\n        height={tableStyles.cellHeightInner}\n        field={config}\n        display={field.display}\n        text={{ valueSize: 14 }}\n        value={displayValue}\n        orientation={VizOrientation.Horizontal}\n        theme={tableStyles.theme}\n        alignmentFactors={alignmentFactors}\n        itemSpacing={1}\n        lcdCellWidth={8}\n        displayMode={barGaugeMode}\n        valueDisplayMode={valueDisplayMode}\n      />\n    );\n  };\n\n  const [tooltipCoords, setTooltipCoords] = useState<DataLinksActionsTooltipCoords>();\n  const { shouldShowLink, hasMultipleLinksOrActions } = getDataLinksActionsTooltipUtils(getLinks());\n  const shouldShowTooltip = hasMultipleLinksOrActions && tooltipCoords !== undefined;\n\n  const links = getLinks();\n\n  return (\n    // eslint-disable-next-line jsx-a11y/click-events-have-key-events, jsx-a11y/no-static-element-interactions\n    <div\n      {...cellProps}\n      className={tableStyles.cellContainer}\n      style={{ ...cellProps.style, cursor: hasMultipleLinksOrActions ? 'context-menu' : 'auto' }}\n      onClick={({ clientX, clientY }) => {\n        setTooltipCoords({ clientX, clientY });\n      }}\n    >\n      {shouldShowLink ? (\n        renderSingleLink(links[0], renderComponent())\n      ) : shouldShowTooltip ? (\n        <DataLinksActionsTooltip\n          links={links}\n          value={renderComponent()}\n          coords={tooltipCoords}\n          onTooltipClose={() => setTooltipCoords(undefined)}\n        />\n      ) : (\n        renderComponent()\n      )}\n    </div>\n  );\n};\n"],"names":["ThresholdsMode","getCellOptions","getFieldConfigWithMinMax","BarGaugeDisplayMode","TableCellDisplayMode","BarGaugeValueMode","isFunction","getAlignmentFactor","jsx","BarGauge","VizOrientation","useState","getDataLinksActionsTooltipUtils","renderSingleLink","DataLinksActionsTooltip"],"mappings":"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"}