UNPKG

@grafana/ui

Version:
1 lines 5.28 kB
{"version":3,"file":"TableCellInspector.mjs","sources":["../../../../src/components/Table/TableCellInspector.tsx"],"sourcesContent":["import { isString } from 'lodash';\nimport { useState } from 'react';\n\nimport { t, Trans } from '@grafana/i18n';\n\nimport { ClipboardButton } from '../ClipboardButton/ClipboardButton';\nimport { Drawer } from '../Drawer/Drawer';\nimport { Stack } from '../Layout/Stack/Stack';\nimport { CodeEditor } from '../Monaco/CodeEditor';\nimport { Tab } from '../Tabs/Tab';\nimport { TabsBar } from '../Tabs/TabsBar';\n\nexport enum TableCellInspectorMode {\n code = 'code',\n text = 'text',\n}\n\ninterface TableCellInspectorProps {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n value: any;\n onDismiss: () => void;\n mode: TableCellInspectorMode;\n}\n\nexport function TableCellInspector({ value, onDismiss, mode }: TableCellInspectorProps) {\n let displayValue = value;\n const [currentMode, setMode] = useState(mode);\n\n if (isString(value)) {\n const trimmedValue = value.trim();\n // Exclude numeric strings like '123' from being displayed in code/JSON mode\n if (trimmedValue[0] === '{' || trimmedValue[0] === '[' || mode === 'code') {\n try {\n value = JSON.parse(value);\n displayValue = JSON.stringify(value, null, ' ');\n } catch (error: any) {\n // Display helpful error to help folks diagnose json errors\n console.log(\n 'Failed to parse JSON in Table cell inspector (this will cause JSON to not print nicely): ',\n error.message\n );\n }\n }\n } else {\n displayValue = JSON.stringify(value);\n }\n let text = displayValue;\n\n const tabs = [\n {\n label: 'Plain text',\n value: 'text',\n },\n {\n label: 'Code editor',\n value: 'code',\n },\n ];\n\n const changeTabs = () => {\n setMode(currentMode === TableCellInspectorMode.text ? TableCellInspectorMode.code : TableCellInspectorMode.text);\n };\n\n const tabBar = (\n <TabsBar>\n {tabs.map((t, index) => (\n <Tab key={`${t.value}-${index}`} label={t.label} active={t.value === currentMode} onChangeTab={changeTabs} />\n ))}\n </TabsBar>\n );\n\n return (\n <Drawer onClose={onDismiss} title={t('grafana-ui.table.inspect-drawer-title', 'Inspect value')} tabs={tabBar}>\n <Stack direction=\"column\" gap={2}>\n <ClipboardButton icon=\"copy\" getText={() => text} style={{ marginLeft: 'auto', width: '200px' }}>\n <Trans i18nKey=\"grafana-ui.table.copy\">Copy to Clipboard</Trans>\n </ClipboardButton>\n {currentMode === 'code' ? (\n <CodeEditor\n width=\"100%\"\n height={500}\n language=\"json\"\n showLineNumbers={true}\n showMiniMap={(text && text.length) > 100}\n value={text}\n readOnly={true}\n wordWrap={true}\n />\n ) : (\n <pre>{text}</pre>\n )}\n </Stack>\n </Drawer>\n );\n}\n"],"names":["TableCellInspectorMode","t"],"mappings":"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"}