{"version":3,"file":"TableNG.cjs","sources":["../../../../../src/components/Table/TableNG/TableNG.tsx"],"sourcesContent":["import '@grafana/react-data-grid/lib/styles.css';\n\nimport { clsx } from 'clsx';\nimport memoize from 'micro-memoize';\nimport {\n  type CSSProperties,\n  type JSX,\n  type Key,\n  type ReactNode,\n  Suspense,\n  useCallback,\n  useEffect,\n  useId,\n  useMemo,\n  useRef,\n  useState,\n} from 'react';\n\nimport {\n  type DataFrame,\n  DataHoverClearEvent,\n  DataHoverEvent,\n  FALLBACK_COLOR,\n  type Field,\n  FieldType,\n  getDisplayProcessor,\n} from '@grafana/data';\nimport { t, Trans } from '@grafana/i18n';\nimport {\n  Cell,\n  type CellRendererProps,\n  DataGrid,\n  type DataGridHandle,\n  type DataGridProps,\n  type RenderCellProps,\n  type Renderers,\n  type RenderRowProps,\n  Row,\n  type SortColumn,\n} from '@grafana/react-data-grid';\nimport { FieldColorModeId, TableCellTooltipPlacement, type TableFooterOptions } from '@grafana/schema';\n\nimport { useStyles2, useTheme2 } from '../../../themes/ThemeContext';\nimport { getTextColorForBackground as _getTextColorForBackground } from '../../../utils/colors';\nimport { Pagination } from '../../Pagination/Pagination';\nimport { type PanelContext, usePanelContext } from '../../PanelChrome';\nimport { DataLinksActionsTooltip } from '../DataLinksActionsTooltip';\nimport { TableCellInspector, TableCellInspectorMode } from '../TableCellInspector';\nimport { type DataLinksActionsTooltipState } from '../cellUtils';\nimport { hasGeoCell, LazyOpenLayersProvider } from '../geo';\nimport { TableCellDisplayMode } from '../types';\n\nimport { getCellRenderer, getCellSpecificStyles } from './Cells/renderers';\nimport { EmptyTablePlaceholder } from './components/EmptyTablePlaceholder';\nimport { HeaderCell } from './components/HeaderCell';\nimport { RowExpander } from './components/RowExpander';\nimport { SummaryCell } from './components/SummaryCell';\nimport { TableCellActions } from './components/TableCellActions';\nimport { TableCellTooltip } from './components/TableCellTooltip';\nimport { COLUMN, TABLE } from './constants';\nimport {\n  useColumnResize,\n  useColWidths,\n  useFilteredRows,\n  useHeaderHeight,\n  useManagedSort,\n  useNestedColWidths,\n  useNestedRows,\n  usePaginatedRows,\n  useRowHeight,\n  useScrollbarWidth,\n  useSortedRows,\n} from './hooks';\nimport {\n  getCellActionStyles,\n  getDefaultCellStyles,\n  getGridStyles,\n  getHeaderCellStyles,\n  getLinkStyles,\n  getMaxHeightCellStyles,\n  getTooltipStyles,\n} from './styles';\nimport {\n  type CellRootRenderer,\n  type FromFieldsResult,\n  type InspectCellProps,\n  type TableCellStyleOptions,\n  type TableColumn,\n  type TableNGProps,\n  type TableRow,\n  type TableSummaryRow,\n} from './types';\nimport {\n  calculateFooterHeight,\n  canFieldBeColorized,\n  compileFrameToRecordsV1,\n  compileFrameToRecordsV2,\n  createTypographyContext,\n  displayJsonValue,\n  extractPixelValue,\n  getAlignment,\n  getApplyToRowBgFn,\n  getCellColorInlineStylesFactory,\n  getCellLinks,\n  getCellOptions,\n  getDefaultRowHeight,\n  getDisplayName,\n  getIsNestedTable,\n  getJustifyContent,\n  getStableRowKey,\n  getSummaryCellTextAlign,\n  getVisibleFields,\n  IS_SAFARI_26,\n  isCellInspectEnabled,\n  parseStyleJson,\n  predicateByName,\n  rowKeyGetter,\n  shouldTextOverflow,\n  shouldTextWrap,\n} from './utils';\n\nconst EXPANDED_COLUMN_KEY = 'expanded';\ntype OnCellClick = NonNullable<DataGridProps<TableRow, TableSummaryRow>['onCellClick']>;\n\nexport function TableNG(props: TableNGProps) {\n  const {\n    cellHeight,\n    data,\n    disableKeyboardEvents,\n    disableSanitizeHtml,\n    enablePagination = false,\n    enableSharedCrosshair = false,\n    enableVirtualization,\n    frozenColumns: _frozenColumns = 0,\n    getActions = () => [],\n    height,\n    maxRowHeight: _maxRowHeight,\n    noHeader,\n    noValue,\n    onCellFilterAdded,\n    onColumnResize,\n    onSortByChange,\n    protoParserEnabled,\n    showTypeIcons,\n    structureRev,\n    timeRange,\n    transparent,\n    width,\n    initialRowIndex,\n    sortBy,\n    sortByBehavior = 'initial',\n  } = props;\n  const uniqueId = useId();\n  const theme = useTheme2();\n\n  const panelContext = usePanelContext();\n  const userCanExecuteActions = useMemo(() => panelContext.canExecuteActions?.() ?? false, [panelContext]);\n\n  const getCellActions = useCallback(\n    (field: Field, rowIdx: number) => {\n      if (!userCanExecuteActions) {\n        return [];\n      }\n      return getActions(data, field, rowIdx);\n    },\n    [getActions, data, userCanExecuteActions]\n  );\n\n  const visibleFields = useMemo(() => getVisibleFields(data.fields), [data.fields]);\n  const hasHeader = !noHeader;\n  const hasFooter = useMemo(\n    () => visibleFields.some((field) => Boolean(field.config.custom?.footer?.reducers?.length)),\n    [visibleFields]\n  );\n  const footerHeight = useMemo(\n    () => (hasFooter ? calculateFooterHeight(visibleFields) : 0),\n    [hasFooter, visibleFields]\n  );\n\n  const resizeHandler = useColumnResize(onColumnResize);\n  const nestedResizeHandler = useColumnResize(onColumnResize, 'nested');\n\n  const hasNestedFrames = useMemo(() => getIsNestedTable(data.fields), [data]);\n  const tableHasGeoCell = useMemo(() => hasGeoCell(data), [data]);\n  const nestedFramesFieldName = useMemo(() => {\n    if (!hasNestedFrames) {\n      return;\n    }\n    const firstNestedField = data.fields.find((f) => f.type === FieldType.nestedFrames);\n    if (!firstNestedField) {\n      return;\n    }\n    return getDisplayName(firstNestedField);\n  }, [data, hasNestedFrames]);\n  const frameToRecords = useMemo(\n    () =>\n      protoParserEnabled\n        ? compileFrameToRecordsV2(data, nestedFramesFieldName)\n        : compileFrameToRecordsV1(data, nestedFramesFieldName),\n    [data, nestedFramesFieldName, protoParserEnabled]\n  );\n  const rows = useMemo(() => frameToRecords(data), [frameToRecords, data]);\n\n  const nestedData = useMemo(\n    (): DataFrame[] | undefined =>\n      hasNestedFrames\n        ? data.fields.find((f) => getDisplayName(f) === nestedFramesFieldName)?.values.map((v) => v[0])\n        : undefined,\n    [data, nestedFramesFieldName, hasNestedFrames]\n  );\n\n  // Returns a stable string key for a row based on the groupBy field values stored in the nested\n  // subframe's meta. Falls back to the string index when no stable key is available (non-grouped data).\n  const getStableRowKeyForRowIdx = useCallback(\n    (rowIdx: number): string => getStableRowKey(rowIdx, nestedData?.[rowIdx]),\n    [nestedData]\n  );\n\n  const firstRowNestedData = useMemo(\n    () => (hasNestedFrames && nestedData ? nestedData[0] : undefined),\n    [nestedData, hasNestedFrames]\n  );\n  const nestedFields = useMemo(() => firstRowNestedData?.fields ?? [], [firstRowNestedData]);\n  const nestedVisibleFields = useMemo(() => getVisibleFields(nestedFields), [nestedFields]);\n  const nestedHasFooter = useMemo(\n    () => nestedVisibleFields.some((field) => Boolean(field.config.custom?.footer?.reducers?.length)),\n    [nestedVisibleFields]\n  );\n  const nestedFooterHeight = useMemo(\n    () => (nestedHasFooter ? calculateFooterHeight(nestedVisibleFields) : 0),\n    [nestedHasFooter, nestedVisibleFields]\n  );\n\n  const { rows: filteredRows, filter, setFilter, filterResult } = useFilteredRows(rows, data.fields, hasNestedFrames);\n\n  const {\n    rows: sortedRows,\n    sortColumns,\n    setSortColumns,\n  } = useSortedRows(filteredRows, data.fields, nestedFields, { hasNestedFrames, initialSortBy: sortBy });\n\n  useManagedSort({ sortByBehavior, setSortColumns, sortBy });\n\n  const nestedRows = useNestedRows(rows, nestedData, hasNestedFrames, nestedFramesFieldName, filter, sortColumns);\n\n  const [inspectCell, setInspectCell] = useState<InspectCellProps | null>(null);\n  const [tooltipState, setTooltipState] = useState<DataLinksActionsTooltipState>();\n  const onCellClick: OnCellClick = useCallback(\n    ({ column, row }, ev) => {\n      // we attach field to the column, but it doesn't\n      // eslint-disable-next-line @typescript-eslint/consistent-type-assertions\n      const field = (column as unknown as TableColumn).field;\n\n      // let the click event through for the expander column, since it has its own click handler for expanding/collapsing rows.\n      if (column.key === EXPANDED_COLUMN_KEY) {\n        return;\n      }\n\n      if (\n        ev.target instanceof HTMLElement &&\n        // this walks up the tree to find either a faux link wrapper or the cell root\n        // it then only proceeds if we matched the faux link wrapper\n        ev.target.closest('a[aria-haspopup], .rdg-cell')?.matches('a')\n      ) {\n        const rowIdx = row.__index;\n        setTooltipState({\n          coords: {\n            clientX: ev.clientX,\n            clientY: ev.clientY,\n          },\n          links: getCellLinks(field, rowIdx),\n          actions: getCellActions(field, rowIdx),\n        });\n        ev.preventGridDefault();\n      }\n    },\n    [getCellActions]\n  );\n  const [expandedRows, setExpandedRows] = useState<Set<string>>(() => {\n    if (data.meta?.custom?.expandAllRows) {\n      const nestedField = data.fields.find((f) => f.type === FieldType.nestedFrames);\n      return new Set(Array.from({ length: data.length }, (_, i) => getStableRowKey(i, nestedField?.values[i]?.[0])));\n    }\n    return new Set();\n  });\n  const [selectedRows, setSelectedRows] = useState((): ReadonlySet<string> => new Set());\n\n  // vt scrollbar accounting for column auto-sizing\n  const gridRef = useRef<DataGridHandle>(null);\n  const scrollbarWidth = useScrollbarWidth(gridRef, height);\n  const availableWidth = useMemo(\n    () => (hasNestedFrames ? width - COLUMN.EXPANDER_WIDTH : width) - scrollbarWidth,\n    [width, hasNestedFrames, scrollbarWidth]\n  );\n  const getCellColorInlineStyles = useMemo(() => getCellColorInlineStylesFactory(theme), [theme]);\n  const applyToRowBgFn = useMemo(\n    () => getApplyToRowBgFn(data.fields, getCellColorInlineStyles) ?? undefined,\n    [data.fields, getCellColorInlineStyles]\n  );\n  const getTextColorForBackground = useMemo(() => memoize(_getTextColorForBackground, { maxSize: 1000 }), []);\n\n  const typographyCtx = useMemo(\n    () =>\n      createTypographyContext(\n        theme.typography.fontSize,\n        theme.typography.fontFamily,\n        extractPixelValue(theme.typography.body.letterSpacing!) * theme.typography.fontSize\n      ),\n    [theme]\n  );\n\n  // https://github.com/grafana/grafana/issues/118984: nested tables don't support frozen columns yet.\n  const frozenColumns = useMemo(() => (hasNestedFrames ? 0 : _frozenColumns), [hasNestedFrames, _frozenColumns]);\n  const configuredWidthCount = visibleFields.reduce(\n    (count, field) => count + (field.config.custom?.width != null ? 1 : 0),\n    0\n  );\n  const prevConfiguredWidthCount = useRef(configuredWidthCount);\n  const widthConfigResetKey = configuredWidthCount < prevConfiguredWidthCount.current ? Symbol() : undefined;\n  const resetColumnWidths = widthConfigResetKey != null ? new Map() : undefined;\n\n  prevConfiguredWidthCount.current = configuredWidthCount;\n\n  const [widths, numFrozenColsFullyInView] = useColWidths(\n    visibleFields,\n    availableWidth,\n    frozenColumns,\n    widthConfigResetKey\n  );\n\n  const headerHeight = useHeaderHeight({\n    columnWidths: widths,\n    fields: visibleFields,\n    enabled: hasHeader,\n    sortColumns,\n    showTypeIcons: showTypeIcons ?? false,\n    typographyCtx,\n  });\n  // the minimum max row height we should honor is a single line of text.\n  const maxRowHeight = _maxRowHeight != null ? Math.max(TABLE.LINE_HEIGHT, _maxRowHeight) : undefined;\n  const visibleNestedRowCounts = useMemo(\n    () => nestedRows.map((row, idx) => (expandedRows.has(getStableRowKeyForRowIdx(idx)) ? row.final.length : null)),\n    [nestedRows, expandedRows, getStableRowKeyForRowIdx]\n  );\n\n  const { nestedFieldWidths, nestedColWidths, handleNestedColumnWidthsChange } = useNestedColWidths({\n    nestedVisibleFields,\n    availableWidth,\n    structureRev,\n  });\n\n  const hasNestedHeaders = useMemo(() => firstRowNestedData?.meta?.custom?.noHeader !== true, [firstRowNestedData]);\n  const nestedHeaderHeight = useHeaderHeight({\n    columnWidths: nestedFieldWidths,\n    fields: nestedVisibleFields,\n    enabled: hasNestedHeaders,\n    sortColumns,\n    showTypeIcons: showTypeIcons ?? false,\n    typographyCtx,\n  });\n\n  const defaultRowHeight = useMemo(\n    () => getDefaultRowHeight(theme, visibleFields, cellHeight),\n    [theme, visibleFields, cellHeight]\n  );\n  const defaultNestedRowHeight = useMemo(\n    () => getDefaultRowHeight(theme, nestedVisibleFields, cellHeight),\n    [theme, nestedVisibleFields, cellHeight]\n  );\n\n  const rowHeight = useRowHeight({\n    columnWidths: widths,\n    fields: visibleFields,\n    hasNestedFrames,\n    defaultHeight: defaultRowHeight,\n    defaultNestedHeight: defaultNestedRowHeight,\n    visibleNestedRowCounts,\n    typographyCtx,\n    maxHeight: maxRowHeight,\n    nestedColWidths: nestedFieldWidths,\n    nestedFields: nestedVisibleFields,\n    nestedRows,\n    nestedFooterHeight,\n  });\n\n  const {\n    rows: paginatedRows,\n    page,\n    setPage,\n    numPages,\n    numRows,\n    pageRangeStart,\n    pageRangeEnd,\n    smallPagination,\n  } = usePaginatedRows(sortedRows, {\n    enabled: enablePagination,\n    width: availableWidth,\n    height,\n    footerHeight,\n    headerHeight: hasHeader ? headerHeight : 0,\n    rowHeight,\n    hasNestedFrames,\n  });\n\n  const showPagination = enablePagination && numRows > 0;\n  const styles = useStyles2(getGridStyles, showPagination, transparent);\n\n  const [scrollToIndex, setScrollToIndex] = useState(initialRowIndex);\n  useEffect(() => {\n    if (scrollToIndex !== undefined && sortedRows && gridRef.current?.scrollToCell) {\n      const rowIdx = sortedRows.findIndex((row) => row.__index === scrollToIndex);\n      gridRef.current.scrollToCell({\n        rowIdx,\n      });\n      setScrollToIndex(undefined);\n      setSelectedRows(new Set<string>([rowKeyGetter(sortedRows[rowIdx])]));\n    }\n  }, [scrollToIndex, sortedRows]);\n\n  // normalize the row height into a function which returns a number, so we avoid a bunch of conditionals during rendering.\n  const rowHeightFn = useMemo((): ((row: TableRow) => number) => {\n    if (typeof defaultNestedRowHeight === 'string') {\n      return (row: TableRow) => (expandedRows.has(getStableRowKeyForRowIdx(row.__index)) ? TABLE.MAX_CELL_HEIGHT : 0);\n    }\n    if (typeof rowHeight === 'function') {\n      // this is safe because we only return a (row: TableRow) => string function when defaultNestedRowHeight is a string.\n      // eslint-disable-next-line @typescript-eslint/consistent-type-assertions\n      return rowHeight as unknown as (row: TableRow) => number;\n    }\n    if (typeof rowHeight === 'string') {\n      return () => TABLE.MAX_CELL_HEIGHT;\n    }\n    return () => rowHeight;\n  }, [rowHeight, defaultNestedRowHeight, expandedRows, getStableRowKeyForRowIdx]);\n\n  const renderRow = useMemo(\n    () => renderRowFactory(data.fields, panelContext, expandedRows, enableSharedCrosshair, getStableRowKeyForRowIdx),\n    [data.fields, panelContext, expandedRows, enableSharedCrosshair, getStableRowKeyForRowIdx]\n  );\n\n  const commonDataGridProps = useMemo(\n    () =>\n      ({\n        enableVirtualization: !IS_SAFARI_26 && enableVirtualization !== false && typeof rowHeight !== 'string',\n        defaultColumnOptions: {\n          minWidth: 50,\n          resizable: true,\n          sortable: true,\n          // draggable: true,\n        },\n        onSortColumnsChange: (newSortColumns: SortColumn[]) => {\n          setSortColumns(newSortColumns);\n          onSortByChange?.(\n            newSortColumns.map(({ columnKey, direction }) => ({\n              displayName: columnKey,\n              desc: direction === 'DESC',\n            }))\n          );\n        },\n        sortColumns,\n        rowHeight,\n        bottomSummaryRows: hasFooter ? [{}] : undefined,\n        summaryRowHeight: footerHeight,\n        headerRowClass: styles.headerRow,\n        headerRowHeight: noHeader ? 0 : headerHeight,\n      }) satisfies Partial<DataGridProps<TableRow, TableSummaryRow>>,\n    [\n      enableVirtualization,\n      hasFooter,\n      sortColumns,\n      rowHeight,\n      styles.headerRow,\n      noHeader,\n      setSortColumns,\n      onSortByChange,\n      footerHeight,\n      headerHeight,\n    ]\n  );\n\n  const buildNestedTableExpanderColumn = useCallback(\n    (\n      nestedColumnsMatrix: FromFieldsResult[],\n      hasNestedHeaders: boolean,\n      nestedHeaderHeightPx: number,\n      hasNestedFooter: boolean,\n      nestedFooterHeightPx: number,\n      renderers: Renderers<TableRow, TableSummaryRow>\n    ): TableColumn => ({\n      key: EXPANDED_COLUMN_KEY,\n      sortable: false,\n      resizable: false,\n      name: t('grafana-ui.table.nested-table.expander-column-name', 'Expand nested rows'),\n      field: {\n        name: '',\n        type: FieldType.other,\n        config: {},\n        values: [],\n      },\n      cellClass(row) {\n        if (row.__depth !== 0) {\n          return styles.cellNested;\n        }\n        return;\n      },\n      colSpan(args) {\n        return args.type === 'ROW' && args.row.__depth === 1 ? data.fields.length : 1;\n      },\n      renderCell: ({ row }) => {\n        const rowId = `${uniqueId}-nested-table-${row.__index}`;\n\n        if (row.__depth === 0) {\n          const rowIdx = row.__index;\n          const stableKey = getStableRowKeyForRowIdx(rowIdx);\n\n          return (\n            <RowExpander\n              rowId={rowId}\n              isExpanded={expandedRows.has(stableKey)}\n              onCellExpand={() => {\n                setExpandedRows((er) => {\n                  if (er.has(stableKey)) {\n                    er.delete(stableKey);\n                  } else {\n                    er.add(stableKey);\n                  }\n                  return new Set(er);\n                });\n              }}\n            />\n          );\n        }\n\n        const expandedRecords = nestedRows[row.__index]?.final ?? [];\n        if (!expandedRecords.length) {\n          return (\n            <div className={styles.noDataNested}>\n              <Trans i18nKey=\"grafana-ui.table.nested-table.no-data\">No data</Trans>\n            </div>\n          );\n        }\n\n        const nestedColumns = nestedColumnsMatrix[row.__index].columns;\n\n        return (\n          <div id={rowId}>\n            <DataGrid<TableRow, TableSummaryRow>\n              {...commonDataGridProps}\n              className={clsx(styles.grid, styles.gridNested)}\n              headerRowClass={clsx(styles.headerRow, hasNestedHeaders ? '' : styles.displayNone)}\n              headerRowHeight={hasNestedHeaders ? nestedHeaderHeightPx : 0}\n              bottomSummaryRows={hasNestedFooter ? [{}] : undefined}\n              summaryRowHeight={nestedFooterHeightPx}\n              onColumnResize={nestedResizeHandler}\n              columns={nestedColumns}\n              rows={expandedRecords}\n              renderers={{ ...renderers, noRowsFallback: <EmptyTablePlaceholder noValue={noValue} /> }}\n              onCellClick={onCellClick}\n              columnWidths={nestedColWidths}\n              onColumnWidthsChange={handleNestedColumnWidthsChange}\n            />\n          </div>\n        );\n      },\n      renderHeaderCell(props) {\n        return <div className=\"sr-only\">{props.column.name}</div>;\n      },\n      width: COLUMN.EXPANDER_WIDTH,\n      minWidth: COLUMN.EXPANDER_WIDTH,\n    }),\n    [\n      styles.cellNested,\n      styles.grid,\n      styles.gridNested,\n      styles.headerRow,\n      styles.displayNone,\n      styles.noDataNested,\n      data.fields.length,\n      commonDataGridProps,\n      expandedRows,\n      getStableRowKeyForRowIdx,\n      nestedRows,\n      noValue,\n      onCellClick,\n      uniqueId,\n      nestedColWidths,\n      nestedResizeHandler,\n      handleNestedColumnWidthsChange,\n    ]\n  );\n\n  const fromFields = useCallback(\n    (\n      f: Field[],\n      widths: number[],\n      frame: DataFrame,\n      rawRows: TableRow[],\n      visibleRows: TableRow[]\n    ): FromFieldsResult => {\n      const result: FromFieldsResult = {\n        columns: [],\n        cellRootRenderers: {},\n      };\n\n      // Derive footer config from the fields being processed so nested tables use\n      // their own footer configuration rather than the top-level table's.\n      const fieldFooters: Array<TableFooterOptions | undefined> = [];\n      let isFieldUniformFooter = true;\n      let firstFooterReducers: string[] | undefined;\n      for (const field of f) {\n        const footer = field.config?.custom?.footer;\n        const reducers: string[] | undefined = footer?.reducers;\n\n        fieldFooters.push(footer);\n\n        // if reducers are undefined or empty on the footer, don't retain them for comparison.\n        if (reducers === undefined || reducers.length === 0) {\n          continue;\n        }\n\n        // first time we encounter a viable footer config, store it and move on.\n        if (firstFooterReducers === undefined) {\n          firstFooterReducers = reducers;\n          continue;\n        }\n\n        // for all other viable footer configs, check to see if the reducers match the first one we encountered.\n        if (\n          reducers.length !== firstFooterReducers.length ||\n          reducers.some((r, idx) => firstFooterReducers?.[idx] !== r)\n        ) {\n          isFieldUniformFooter = false;\n          break;\n        }\n      }\n\n      // Reuse pre-computed filter results — no re-scanning of rows needed.\n      // Top-level tables use filterResult from useFilteredRows; nested tables use the\n      // filterResult stored on their NestedRowEntry by useNestedRows.\n      const parentIndex = visibleRows[0]?.__parentIndex;\n      const { crossFilterRows, crossFilterTailRows } =\n        parentIndex == null ? filterResult : nestedRows[parentIndex].filterResult;\n\n      let lastRowIdx = -1;\n      // shared when whole row will be styled by a single cell's color\n      let rowCellStyle: Partial<CSSProperties> = {\n        color: undefined,\n        background: undefined,\n      };\n\n      for (let i = 0; i < f.length; i++) {\n        let field = f[i];\n        const cellOptions = getCellOptions(field);\n        const cellType = cellOptions.type;\n\n        // make sure we use mappings exclusively if they exist, ignore default thresholds mode\n        // we hack this by using the single color mode calculator\n        if (cellType === TableCellDisplayMode.Pill && (field.config.mappings?.length ?? 0 > 0)) {\n          field = {\n            ...field,\n            config: {\n              ...field.config,\n              color: {\n                ...field.config.color,\n                mode: FieldColorModeId.Fixed,\n                fixedColor: field.config.color?.fixedColor ?? FALLBACK_COLOR,\n              },\n            },\n          };\n          field.display = getDisplayProcessor({ field, theme });\n        }\n\n        // attach JSONCell custom display function to JSONView cell type\n        if (cellType === TableCellDisplayMode.JSONView || field.type === FieldType.other) {\n          field.display = displayJsonValue(field);\n        }\n\n        // For some cells, \"aligning\" the cell will mean aligning the inline contents of the cell with\n        // the text-align css property, and for others, we'll use justify-content to align the cell\n        // contents with flexbox. We always just get both and provide both when styling the cell.\n        const textAlign = getAlignment(field);\n        const justifyContent = getJustifyContent(textAlign);\n        const displayName = getDisplayName(field);\n        const headerCellClass = getHeaderCellStyles(theme, justifyContent);\n        const CellType = getCellRenderer(field, cellOptions);\n\n        const cellInspect = isCellInspectEnabled(field);\n        const showFilters = Boolean(field.config.filterable && onCellFilterAdded != null);\n        const showActions = cellInspect || showFilters;\n        const width = widths[i];\n\n        // helps us avoid string cx and emotion per-cell\n        const cellActionClassName = showActions\n          ? clsx('table-cell-actions', getCellActionStyles(theme, textAlign))\n          : undefined;\n\n        const shouldOverflow =\n          !IS_SAFARI_26 && typeof rowHeight !== 'string' && (shouldTextOverflow(field) || Boolean(maxRowHeight));\n        const textWrap = typeof rowHeight === 'string' || shouldTextWrap(field);\n        const canBeColorized = canFieldBeColorized(cellType, applyToRowBgFn);\n        const cellStyleOptions: TableCellStyleOptions = {\n          textAlign,\n          textWrap,\n          shouldOverflow,\n          maxHeight: maxRowHeight,\n        };\n\n        const defaultCellStyles = getDefaultCellStyles(theme, cellStyleOptions);\n        const cellSpecificStyles = getCellSpecificStyles(cellType, field, theme, cellStyleOptions);\n        const linkStyles = getLinkStyles(theme, canBeColorized);\n        const cellParentStyles = clsx(defaultCellStyles, linkStyles);\n        const maxHeightClassName = maxRowHeight ? getMaxHeightCellStyles(theme, cellStyleOptions) : undefined;\n        const styleFieldValue = field.config.custom?.styleField;\n        const styleField = styleFieldValue ? frame.fields.find(predicateByName(styleFieldValue)) : undefined;\n        const styleFieldName = styleField ? getDisplayName(styleField) : undefined;\n        const hasValidStyleField = Boolean(styleFieldName);\n\n        // TODO: in future extend this to ensure a non-classic color scheme is set with AutoCell\n\n        // this fires first\n        const renderCellRoot = (key: Key, props: CellRendererProps<TableRow, TableSummaryRow>): ReactNode => {\n          const rowIdx = props.row.__index;\n\n          // meh, this should be cached by the renderRow() call?\n          if (rowIdx !== lastRowIdx) {\n            lastRowIdx = rowIdx;\n\n            rowCellStyle.color = undefined;\n            rowCellStyle.background = undefined;\n\n            // generate shared styles for whole row\n            if (applyToRowBgFn != null) {\n              rowCellStyle = { ...rowCellStyle, ...applyToRowBgFn(rowIdx) };\n            }\n          }\n\n          let style: CSSProperties = { ...rowCellStyle };\n          if (canBeColorized) {\n            const value = props.row[props.column.key];\n            const displayValue = field.display!(value); // this fires here to get colors, then again to get rendered value?\n            const cellColorStyles = getCellColorInlineStyles(cellOptions, displayValue, applyToRowBgFn != null);\n            Object.assign(style, cellColorStyles);\n          }\n          if (hasValidStyleField) {\n            style = { ...style, ...parseStyleJson(props.row[styleFieldName!]) };\n          }\n\n          return (\n            <Cell\n              key={key}\n              {...props}\n              className={clsx(\n                props.className,\n                cellParentStyles,\n                cellSpecificStyles != null && maxRowHeight == null ? cellSpecificStyles : ''\n              )}\n              style={style}\n            />\n          );\n        };\n\n        result.cellRootRenderers[displayName] = renderCellRoot;\n\n        const renderBasicCellContent = (props: RenderCellProps<TableRow, TableSummaryRow>): JSX.Element => {\n          const rowIdx = props.row.__index;\n          const value = props.row[props.column.key];\n          // TODO: it would be nice to get rid of passing height down as a prop. but this value\n          // is cached so the cost of calling for every cell is low.\n          // NOTE: some cell types still require a height to be passed down, so that's why string-based\n          // cell types are going to just pass down the max cell height as a numeric height for those cells.\n          const height = rowHeightFn(props.row);\n\n          let result = (\n            <>\n              <CellType\n                cellOptions={cellOptions}\n                frame={frame}\n                field={field}\n                height={height}\n                rowIdx={rowIdx}\n                theme={theme}\n                value={value}\n                width={width}\n                timeRange={timeRange}\n                cellInspect={cellInspect}\n                showFilters={showFilters}\n                getActions={getCellActions}\n                disableSanitizeHtml={disableSanitizeHtml}\n                getTextColorForBackground={getTextColorForBackground}\n              />\n              {showActions && (\n                <TableCellActions\n                  field={field}\n                  value={value}\n                  displayName={displayName}\n                  cellInspect={cellInspect}\n                  showFilters={showFilters}\n                  className={cellActionClassName}\n                  setInspectCell={setInspectCell}\n                  onCellFilterAdded={onCellFilterAdded}\n                />\n              )}\n            </>\n          );\n\n          if (maxRowHeight != null) {\n            result = <div className={clsx(maxHeightClassName, cellSpecificStyles)}>{result}</div>;\n          }\n\n          return result;\n        };\n\n        // renderCellContent fires second.\n        let renderCellContent = renderBasicCellContent;\n\n        const tooltipFieldName = field.config.custom?.tooltip?.field;\n        if (tooltipFieldName) {\n          const tooltipField = frame.fields.find(predicateByName(tooltipFieldName));\n          if (tooltipField) {\n            const tooltipDisplayName = getDisplayName(tooltipField);\n            const tooltipCellOptions = getCellOptions(tooltipField);\n            const tooltipFieldRenderer = getCellRenderer(tooltipField, tooltipCellOptions);\n\n            const tooltipCellStyleOptions = {\n              textAlign: getAlignment(tooltipField),\n              textWrap: shouldTextWrap(tooltipField),\n              shouldOverflow: false,\n              maxHeight: maxRowHeight,\n            } satisfies TableCellStyleOptions;\n            const tooltipCanBeColorized = canFieldBeColorized(tooltipCellOptions.type, applyToRowBgFn);\n            const tooltipDefaultStyles = getDefaultCellStyles(theme, tooltipCellStyleOptions);\n            const tooltipSpecificStyles = getCellSpecificStyles(\n              tooltipCellOptions.type,\n              tooltipField,\n              theme,\n              tooltipCellStyleOptions\n            );\n            const tooltipLinkStyles = getLinkStyles(theme, tooltipCanBeColorized);\n            const tooltipClasses = getTooltipStyles(theme, textAlign);\n\n            const placement = field.config.custom?.tooltip?.placement ?? TableCellTooltipPlacement.Auto;\n            const tooltipWidth =\n              placement === TableCellTooltipPlacement.Left || placement === TableCellTooltipPlacement.Right\n                ? tooltipField.config.custom?.width\n                : width;\n\n            const tooltipProps = {\n              cellOptions: tooltipCellOptions,\n              classes: tooltipClasses,\n              className: clsx(\n                tooltipClasses.tooltipContent,\n                tooltipDefaultStyles,\n                tooltipSpecificStyles,\n                tooltipLinkStyles\n              ),\n              data: frame,\n              disableSanitizeHtml,\n              field: tooltipField,\n              getActions: getCellActions,\n              getTextColorForBackground,\n              gridRef,\n              placement,\n              renderer: tooltipFieldRenderer,\n              tooltipField,\n              theme,\n              width: tooltipWidth,\n            } satisfies Partial<React.ComponentProps<typeof TableCellTooltip>>;\n\n            renderCellContent = (props: RenderCellProps<TableRow, TableSummaryRow>): JSX.Element => {\n              // cached so we don't care about multiple calls.\n              const tooltipHeight = rowHeightFn(props.row);\n              let tooltipStyle: CSSProperties = { ...rowCellStyle };\n              if (tooltipCanBeColorized) {\n                const tooltipDisplayValue = tooltipField.display!(props.row[tooltipDisplayName]);\n                const tooltipCellColorStyles = getCellColorInlineStyles(\n                  tooltipCellOptions,\n                  tooltipDisplayValue,\n                  applyToRowBgFn != null\n                );\n                Object.assign(tooltipStyle, tooltipCellColorStyles);\n              }\n\n              return (\n                <TableCellTooltip\n                  {...tooltipProps}\n                  height={tooltipHeight}\n                  rowIdx={props.row.__index}\n                  style={tooltipStyle}\n                >\n                  {renderBasicCellContent(props)}\n                </TableCellTooltip>\n              );\n            };\n          }\n        }\n\n        result.columns.push({\n          field,\n          key: displayName,\n          name: displayName,\n          width,\n          headerCellClass,\n          frozen: Math.min(frozenColumns, numFrozenColsFullyInView) > i,\n          renderCell: renderCellContent,\n          renderHeaderCell: ({ column, sortDirection }) => (\n            <HeaderCell\n              column={column}\n              rows={rawRows}\n              field={field}\n              filter={filter}\n              setFilter={setFilter}\n              disableKeyboardEvents={disableKeyboardEvents}\n              direction={sortDirection}\n              showTypeIcons={showTypeIcons}\n              parentIndex={parentIndex}\n              crossFilterRows={crossFilterRows}\n              crossFilterTailRows={crossFilterTailRows}\n              selectFirstCell={() => {\n                gridRef.current?.selectCell({ rowIdx: 0, idx: 0 });\n              }}\n            />\n          ),\n          renderSummaryCell: () => (\n            <SummaryCell\n              rows={visibleRows}\n              footers={fieldFooters}\n              field={field}\n              colIdx={i}\n              textAlign={getSummaryCellTextAlign(textAlign, cellType)}\n              rowLabel={isFieldUniformFooter && i === 0}\n              hideLabel={isFieldUniformFooter && i !== 0}\n            />\n          ),\n        });\n      }\n\n      return result;\n    },\n    [\n      applyToRowBgFn,\n      disableKeyboardEvents,\n      disableSanitizeHtml,\n      filter,\n      filterResult,\n      frozenColumns,\n      getCellActions,\n      getCellColorInlineStyles,\n      getTextColorForBackground,\n      maxRowHeight,\n      nestedRows,\n      numFrozenColsFullyInView,\n      onCellFilterAdded,\n      rowHeight,\n      rowHeightFn,\n      setFilter,\n      showTypeIcons,\n      theme,\n      timeRange,\n    ]\n  );\n\n  const nestedColumnsMatrix = useMemo(() => {\n    const result: FromFieldsResult[] = [];\n    if (!hasNestedFrames) {\n      return result;\n    }\n    for (const row of rows) {\n      if (row.__depth > 0) {\n        const rowNestedFrame = nestedData![row.__index]!;\n        result.push(\n          fromFields(\n            getVisibleFields(rowNestedFrame.fields),\n            nestedFieldWidths,\n            rowNestedFrame,\n            nestedRows[row.__index].raw,\n            nestedRows[row.__index].final\n          )\n        );\n      }\n    }\n    return result;\n  }, [rows, hasNestedFrames, nestedData, nestedRows, nestedFieldWidths, fromFields]);\n\n  const { columns, cellRootRenderers } = useMemo(() => {\n    const result = fromFields(visibleFields, widths, data, rows, sortedRows);\n\n    // if nested frames are present, augment the columns to include the nested table expander column.\n    if (!firstRowNestedData) {\n      return result;\n    }\n\n    // pre-calculate renderRow and expandedColumns based on the first nested frame's fields.\n    const renderRow = renderRowFactory(\n      firstRowNestedData.fields,\n      panelContext,\n      expandedRows,\n      enableSharedCrosshair,\n      getStableRowKeyForRowIdx\n    );\n\n    const expanderCellRenderer: CellRootRenderer = (key, props) => <Cell key={key} {...props} />;\n    result.cellRootRenderers[EXPANDED_COLUMN_KEY] = expanderCellRenderer;\n\n    // If we have nested frames, we need to add a column for the row expansion\n    result.columns.unshift(\n      buildNestedTableExpanderColumn(\n        nestedColumnsMatrix,\n        hasNestedHeaders,\n        nestedHeaderHeight,\n        nestedHasFooter,\n        nestedFooterHeight,\n        {\n          renderRow,\n          renderCell: (key, props) =>\n            nestedColumnsMatrix[props.row.__parentIndex!].cellRootRenderers[props.column.key](key, props),\n        }\n      )\n    );\n\n    return result;\n  }, [\n    buildNestedTableExpanderColumn,\n    data,\n    enableSharedCrosshair,\n    expandedRows,\n    firstRowNestedData,\n    fromFields,\n    getStableRowKeyForRowIdx,\n    hasNestedHeaders,\n    nestedColumnsMatrix,\n    nestedFooterHeight,\n    nestedHasFooter,\n    nestedHeaderHeight,\n    panelContext,\n    rows,\n    sortedRows,\n    visibleFields,\n    widths,\n  ]);\n\n  // invalidate columns on every structureRev change. this supports width editing in the fieldConfig.\n  // eslint-disable-next-line react-hooks/exhaustive-deps\n  const structureRevColumns = useMemo(() => columns, [columns, structureRev]);\n  const renderCellRoot: CellRootRenderer = useCallback(\n    (key, props) => cellRootRenderers[props.column.key](key, props),\n    [cellRootRenderers]\n  );\n\n  // we need to have variables with these exact names for the localization to work properly\n  const itemsRangeStart = pageRangeStart;\n  const displayedEnd = pageRangeEnd;\n\n  let rendered = (\n    <>\n      <DataGrid<TableRow, TableSummaryRow, string>\n        {...commonDataGridProps}\n        role={hasNestedFrames ? 'treegrid' : 'grid'}\n        ref={gridRef}\n        className={styles.grid}\n        columns={structureRevColumns}\n        rows={paginatedRows}\n        rowKeyGetter={rowKeyGetter}\n        isRowSelectionDisabled={() => initialRowIndex !== undefined}\n        selectedRows={selectedRows}\n        onSelectedRowsChange={setSelectedRows}\n        headerRowClass={clsx(styles.headerRow, noHeader ? styles.displayNone : '')}\n        headerRowHeight={headerHeight}\n        columnWidths={resetColumnWidths}\n        onColumnWidthsChange={resetColumnWidths != null ? () => {} : undefined}\n        onColumnResize={resizeHandler}\n        onCellClick={onCellClick}\n        onCellKeyDown={({ column, row }, event) => {\n          // if top-left cell, use default browser tabbing\n          if (column.key === columns[0].key && row.__index === 0 && event.shiftKey && event.key === 'Tab') {\n            event.preventGridDefault();\n            gridRef.current?.selectCell({ rowIdx: -1, idx: columns.length - 1 }); // select the far right cell of the header\n            return;\n          }\n\n          if (\n            disableKeyboardEvents ||\n            (hasNestedFrames && event.isDefaultPrevented()) // skip parent grid keyboard navigation if nested grid handled it\n          ) {\n            event.preventGridDefault();\n          }\n        }}\n        renderers={{\n          renderRow,\n          renderCell: renderCellRoot,\n          noRowsFallback: <EmptyTablePlaceholder noValue={noValue} />,\n        }}\n      />\n\n      {enablePagination && numRows > 0 && (\n        <div className={styles.paginationContainer}>\n          <Pagination\n            className=\"table-ng-pagination\"\n            currentPage={page + 1}\n            numberOfPages={numPages}\n            showSmallVersion={smallPagination}\n            onNavigate={(toPage) => {\n              setPage(toPage - 1);\n            }}\n          />\n          {!smallPagination && (\n            <div className={styles.paginationSummary}>\n              {/* TODO: once TableRT is deprecated, we can update the localiziation\n                    string with the more consistent variable names */}\n              <Trans i18nKey=\"grafana-ui.table.pagination-summary\">\n                {{ itemsRangeStart }} - {{ displayedEnd }} of {{ numRows }} rows\n              </Trans>\n            </div>\n          )}\n        </div>\n      )}\n\n      {tooltipState && (\n        <DataLinksActionsTooltip\n          links={tooltipState.links ?? []}\n          actions={tooltipState.actions}\n          coords={tooltipState.coords}\n          onTooltipClose={() => setTooltipState(undefined)}\n        />\n      )}\n\n      {inspectCell && (\n        <TableCellInspector\n          mode={inspectCell.mode ?? TableCellInspectorMode.text}\n          value={inspectCell.value}\n          onDismiss={() => setInspectCell(null)}\n        />\n      )}\n    </>\n  );\n\n  if (IS_SAFARI_26) {\n    rendered = <div className={styles.safariWrapper}>{rendered}</div>;\n  }\n\n  if (!tableHasGeoCell) {\n    return rendered;\n  }\n\n  return (\n    <Suspense fallback={rendered}>\n      <LazyOpenLayersProvider>{rendered}</LazyOpenLayersProvider>\n    </Suspense>\n  );\n}\n\n/**\n * this is passed to the top-level `renderRow` prop on DataGrid. applies aria attributes and custom event handlers.\n */\nconst renderRowFactory =\n  (\n    fields: Field[],\n    panelContext: PanelContext,\n    expandedRows: Set<string>,\n    enableSharedCrosshair: boolean,\n    getStableKey: (rowIdx: number) => string\n  ) =>\n  // eslint-disable-next-line react/display-name\n  (key: React.Key, props: RenderRowProps<TableRow, TableSummaryRow>): React.ReactNode => {\n    const { row } = props;\n    const rowIdx = row.__index;\n    const isExpanded = expandedRows.has(getStableKey(rowIdx));\n\n    // Don't render non expanded child rows\n    if (row.__depth === 1) {\n      if (!isExpanded) {\n        return null;\n      }\n\n      // Add aria-expanded and aria-level to parent rows that have nested data\n      return <Row key={key} aria-level={row.__index + 1} aria-expanded={isExpanded} {...props} />;\n    }\n\n    const handlers: Partial<typeof props> = {};\n    if (enableSharedCrosshair) {\n      const timeField = fields.find((f) => f.type === FieldType.time);\n      if (timeField) {\n        handlers.onMouseEnter = () => {\n          panelContext.eventBus.publish(\n            new DataHoverEvent({\n              point: {\n                time: timeField?.values[rowIdx],\n              },\n            })\n          );\n        };\n        handlers.onMouseLeave = () => {\n          panelContext.eventBus.publish(new DataHoverClearEvent());\n        };\n      }\n    }\n\n    return <Row key={key} {...props} {...handlers} />;\n  };\n"],"names":["data","useId","useTheme2","usePanelContext","useMemo","_a","_b","useCallback","getVisibleFields","calculateFooterHeight","useColumnResize","getIsNestedTable","hasGeoCell","FieldType","getDisplayName","compileFrameToRecordsV2","compileFrameToRecordsV1","getStableRowKey","useFilteredRows","useSortedRows","useManagedSort","useNestedRows","useState","getCellLinks","useRef","useScrollbarWidth","COLUMN","getCellColorInlineStylesFactory","getApplyToRowBgFn","memoize","_getTextColorForBackground","createTypographyContext","extractPixelValue","useColWidths","useHeaderHeight","TABLE","useNestedColWidths","getDefaultRowHeight","useRowHeight","usePaginatedRows","styles","useStyles2","getGridStyles","useEffect","rowKeyGetter","IS_SAFARI_26","nestedColumnsMatrix","hasNestedHeaders","t","jsx","RowExpander","Trans","DataGrid","clsx","EmptyTablePlaceholder","props","widths","getCellOptions","TableCellDisplayMode","FieldColorModeId","FALLBACK_COLOR","getDisplayProcessor","displayJsonValue","getAlignment","getJustifyContent","getHeaderCellStyles","getCellRenderer","isCellInspectEnabled","width","getCellActionStyles","shouldTextOverflow","shouldTextWrap","canFieldBeColorized","getDefaultCellStyles","getCellSpecificStyles","getLinkStyles","getMaxHeightCellStyles","predicateByName","renderCellRoot","parseStyleJson","Cell","height","result","jsxs","Fragment","TableCellActions","getTooltipStyles","TableCellTooltipPlacement","TableCellTooltip","HeaderCell","SummaryCell","getSummaryCellTextAlign","renderRow","Pagination","DataLinksActionsTooltip","TableCellInspector","TableCellInspectorMode","Suspense","LazyOpenLayersProvider","Row","DataHoverEvent","DataHoverClearEvent"],"mappings":"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"}