@grafana/ui
Version:
Grafana Components Library
1 lines • 4.21 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 try {\n // JSON may refer to itself, which errors on stringify\n displayValue = JSON.stringify(value, null, ' ');\n } catch {\n displayValue = undefined; // if it won't stringify, mark undefined\n }\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,KAAA,EAAoC;AAXjE,EAAA,IAAA,EAAA;AAYE,EAAA,MAAM,EAAE,IAAA,EAAM,WAAA,EAAa,SAAA,EAAW,KAAA,EAAO,KAAI,GAAI,KAAA;AACrD,EAAA,MAAM,iBAAiB,OAAA,CAAA,CAAQ,EAAA,GAAA,KAAA,CAAM,MAAA,CAAO,MAAA,KAAb,mBAAqB,OAAO,CAAA;AAC3D,EAAA,MAAM,MAAM,GAAA,CAAI;AAAA,IACd,MAAA,EAAQ,SAAA;AAAA,IACR,UAAA,EAAY;AAAA,GACb,CAAA;AAED,EAAA,IAAI,QAAQ,IAAA,CAAK,KAAA;AACjB,EAAA,IAAI,YAAA,GAAe,KAAA;AAEnB,EAAA,IAAI,QAAA,CAAS,KAAK,CAAA,EAAG;AACnB,IAAA,IAAI;AACF,MAAA,KAAA,GAAQ,IAAA,CAAK,MAAM,KAAK,CAAA;AAAA,IAC1B,CAAA,CAAA,OAAQ,CAAA,EAAA;AAAA,IAAC;AAAA,EACX,CAAA,MAAO;AACL,IAAA,IAAI;AAEF,MAAA,YAAA,GAAe,IAAA,CAAK,SAAA,CAAU,KAAA,EAAO,IAAA,EAAM,GAAG,CAAA;AAAA,IAChD,CAAA,CAAA,OAAQ,CAAA,EAAA;AACN,MAAA,YAAA,GAAe,KAAA,CAAA;AAAA,IACjB;AAAA,EACF;AAEA,EAAA,MAAM,KAAA,GAAQ,YAAA,CAAa,KAAA,EAAO,GAAG,KAAK,EAAC;AAE3C,EAAA,MAAM,CAAC,aAAA,EAAe,gBAAgB,CAAA,GAAI,QAAA,EAAwC;AAClF,EAAA,MAAM,EAAE,cAAA,EAAgB,yBAAA,EAA0B,GAAI,gCAAgC,KAAK,CAAA;AAC3F,EAAA,MAAM,iBAAA,GAAoB,6BAA6B,aAAA,KAAkB,KAAA,CAAA;AAEzE,EAAA,uBACE,IAAA,CAAC,SAAK,GAAG,SAAA,EAAW,WAAW,cAAA,GAAiB,WAAA,CAAY,uBAAA,GAA0B,WAAA,CAAY,aAAA,EAEhG,QAAA,EAAA;AAAA,oBAAA,GAAA,CAAC,SAAI,SAAA,EAAW,EAAA,CAAG,YAAY,QAAA,EAAU,GAAG,GAAG,OAAA,EAAS,qBAAA,CAAsB,gBAAgB,CAAA,EAC3F,2BACC,gBAAA,CAAiB,KAAA,CAAM,CAAC,CAAA,EAAG,YAAY,IACrC,iBAAA,mBACF,GAAA;AAAA,MAAC,uBAAA;AAAA,MAAA;AAAA,QACC,KAAA;AAAA,QACA,KAAA,EAAO,YAAA;AAAA,QACP,MAAA,EAAQ,aAAA;AAAA,QACR,cAAA,EAAgB,MAAM,gBAAA,CAAiB,KAAA,CAAS;AAAA;AAAA,wBAGlD,GAAA,CAAC,KAAA,EAAA,EAAI,WAAW,WAAA,CAAY,QAAA,EAAW,wBAAa,CAAA,EAExD,CAAA;AAAA,IACC,kCAAkB,GAAA,CAAC,WAAA,EAAA,EAAa,GAAG,KAAA,EAAO,WAAA,EAAa,uBAAuB,IAAA,EAAM;AAAA,GAAA,EACvF,CAAA;AAEJ;;;;"}