@grafana/ui
Version:
Grafana Components Library
1 lines • 3.93 kB
Source Map (JSON)
{"version":3,"file":"JSONViewCell.mjs","sources":["../../../../../src/components/Table/Cells/JSONViewCell.tsx"],"sourcesContent":["import { css, cx } from '@emotion/css';\nimport { isString } from 'lodash';\nimport { useState } from 'react';\n\nimport { getCellLinks } from '../../../utils/table';\nimport { CellActions } from '../CellActions';\nimport { DataLinksActionsTooltip, renderSingleLink } from '../DataLinksActionsTooltip';\nimport { TableCellInspectorMode } from '../TableCellInspector';\nimport { TableCellProps } from '../types';\nimport { tooltipOnClickHandler, DataLinksActionsTooltipCoords, getDataLinksActionsTooltipUtils } from '../utils';\n\nexport function JSONViewCell(props: TableCellProps): JSX.Element {\n const { cell, tableStyles, cellProps, field, row } = props;\n const inspectEnabled = Boolean(field.config.custom?.inspect);\n const txt = css({\n cursor: 'pointer',\n fontFamily: 'monospace',\n });\n\n let value = cell.value;\n let displayValue = value;\n\n if (isString(value)) {\n try {\n value = JSON.parse(value);\n } catch {} // ignore errors\n } else {\n displayValue = JSON.stringify(value, null, ' ');\n }\n\n const links = getCellLinks(field, row) || [];\n\n const [tooltipCoords, setTooltipCoords] = useState<DataLinksActionsTooltipCoords>();\n const { shouldShowLink, hasMultipleLinksOrActions } = getDataLinksActionsTooltipUtils(links);\n const shouldShowTooltip = hasMultipleLinksOrActions && tooltipCoords !== undefined;\n\n return (\n <div {...cellProps} className={inspectEnabled ? tableStyles.cellContainerNoOverflow : tableStyles.cellContainer}>\n {/* eslint-disable-next-line jsx-a11y/click-events-have-key-events,jsx-a11y/no-static-element-interactions */}\n <div className={cx(tableStyles.cellText, txt)} onClick={tooltipOnClickHandler(setTooltipCoords)}>\n {shouldShowLink ? (\n renderSingleLink(links[0], displayValue)\n ) : shouldShowTooltip ? (\n <DataLinksActionsTooltip\n links={links}\n value={displayValue}\n coords={tooltipCoords}\n onTooltipClose={() => setTooltipCoords(undefined)}\n />\n ) : (\n <div className={tableStyles.cellText}>{displayValue}</div>\n )}\n </div>\n {inspectEnabled && <CellActions {...props} previewMode={TableCellInspectorMode.code} />}\n </div>\n );\n}\n"],"names":[],"mappings":";;;;;;;;;;AAWO,SAAS,aAAa,KAAoC,EAAA;AAXjE,EAAA,IAAA,EAAA;AAYE,EAAA,MAAM,EAAE,IAAM,EAAA,WAAA,EAAa,SAAW,EAAA,KAAA,EAAO,KAAQ,GAAA,KAAA;AACrD,EAAA,MAAM,iBAAiB,OAAQ,CAAA,CAAA,EAAA,GAAA,KAAA,CAAM,MAAO,CAAA,MAAA,KAAb,mBAAqB,OAAO,CAAA;AAC3D,EAAA,MAAM,MAAM,GAAI,CAAA;AAAA,IACd,MAAQ,EAAA,SAAA;AAAA,IACR,UAAY,EAAA;AAAA,GACb,CAAA;AAED,EAAA,IAAI,QAAQ,IAAK,CAAA,KAAA;AACjB,EAAA,IAAI,YAAe,GAAA,KAAA;AAEnB,EAAI,IAAA,QAAA,CAAS,KAAK,CAAG,EAAA;AACnB,IAAI,IAAA;AACF,MAAQ,KAAA,GAAA,IAAA,CAAK,MAAM,KAAK,CAAA;AAAA,KAClB,CAAA,OAAA,CAAA,EAAA;AAAA;AAAC,GACJ,MAAA;AACL,IAAA,YAAA,GAAe,IAAK,CAAA,SAAA,CAAU,KAAO,EAAA,IAAA,EAAM,GAAG,CAAA;AAAA;AAGhD,EAAA,MAAM,KAAQ,GAAA,YAAA,CAAa,KAAO,EAAA,GAAG,KAAK,EAAC;AAE3C,EAAA,MAAM,CAAC,aAAA,EAAe,gBAAgB,CAAA,GAAI,QAAwC,EAAA;AAClF,EAAA,MAAM,EAAE,cAAA,EAAgB,yBAA0B,EAAA,GAAI,gCAAgC,KAAK,CAAA;AAC3F,EAAM,MAAA,iBAAA,GAAoB,6BAA6B,aAAkB,KAAA,KAAA,CAAA;AAEzE,EACE,uBAAA,IAAA,CAAC,SAAK,GAAG,SAAA,EAAW,WAAW,cAAiB,GAAA,WAAA,CAAY,uBAA0B,GAAA,WAAA,CAAY,aAEhG,EAAA,QAAA,EAAA;AAAA,oBAAA,GAAA,CAAC,SAAI,SAAW,EAAA,EAAA,CAAG,YAAY,QAAU,EAAA,GAAG,GAAG,OAAS,EAAA,qBAAA,CAAsB,gBAAgB,CAAA,EAC3F,2BACC,gBAAiB,CAAA,KAAA,CAAM,CAAC,CAAG,EAAA,YAAY,IACrC,iBACF,mBAAA,GAAA;AAAA,MAAC,uBAAA;AAAA,MAAA;AAAA,QACC,KAAA;AAAA,QACA,KAAO,EAAA,YAAA;AAAA,QACP,MAAQ,EAAA,aAAA;AAAA,QACR,cAAA,EAAgB,MAAM,gBAAA,CAAiB,KAAS,CAAA;AAAA;AAAA,wBAGjD,GAAA,CAAA,KAAA,EAAA,EAAI,WAAW,WAAY,CAAA,QAAA,EAAW,wBAAa,CAExD,EAAA,CAAA;AAAA,IACC,kCAAmB,GAAA,CAAA,WAAA,EAAA,EAAa,GAAG,KAAO,EAAA,WAAA,EAAa,uBAAuB,IAAM,EAAA;AAAA,GACvF,EAAA,CAAA;AAEJ;;;;"}