@grafana/ui
Version:
Grafana Components Library
1 lines • 4.7 kB
Source Map (JSON)
{"version":3,"file":"TableCellInspector.mjs","sources":["../../../../src/components/Table/TableCellInspector.tsx"],"sourcesContent":["import { css } from '@emotion/css';\nimport { useState } from 'react';\n\nimport { GrafanaTheme2 } from '@grafana/data';\nimport { t, Trans } from '@grafana/i18n';\n\nimport { useStyles2 } from '../../themes/ThemeContext';\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: string;\n onDismiss: () => void;\n mode: TableCellInspectorMode;\n}\n\nexport function TableCellInspector({ value, onDismiss, mode }: TableCellInspectorProps) {\n const [currentMode, setMode] = useState(mode);\n const text = value.trim();\n const styles = useStyles2(getStyles);\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 : 0) > 100}\n value={text}\n readOnly={true}\n wordWrap={true}\n />\n ) : (\n <pre className={styles.textContainer}>{text}</pre>\n )}\n </Stack>\n </Drawer>\n );\n}\n\n// TODO: should we have different empty styles?\nconst getStyles = (theme: GrafanaTheme2) => ({\n textContainer: css({\n color: theme.colors.text.secondary,\n minHeight: 42,\n }),\n});\n"],"names":["TableCellInspectorMode","t"],"mappings":";;;;;;;;;;;;;AAcO,IAAK,sBAAA,qBAAAA,uBAAAA,KAAL;AACL,EAAAA,wBAAA,MAAA,CAAA,GAAO,MAAA;AACP,EAAAA,wBAAA,MAAA,CAAA,GAAO,MAAA;AAFG,EAAA,OAAAA,uBAAAA;AAAA,CAAA,EAAA,sBAAA,IAAA,EAAA;AAYL,SAAS,kBAAA,CAAmB,EAAE,KAAA,EAAO,SAAA,EAAW,MAAK,EAA4B;AACtF,EAAA,MAAM,CAAC,WAAA,EAAa,OAAO,CAAA,GAAI,SAAS,IAAI,CAAA;AAC5C,EAAA,MAAM,IAAA,GAAO,MAAM,IAAA,EAAK;AACxB,EAAA,MAAM,MAAA,GAAS,WAAW,SAAS,CAAA;AAEnC,EAAA,MAAM,IAAA,GAAO;AAAA,IACX;AAAA,MACE,KAAA,EAAO,YAAA;AAAA,MACP,KAAA,EAAO;AAAA,KACT;AAAA,IACA;AAAA,MACE,KAAA,EAAO,aAAA;AAAA,MACP,KAAA,EAAO;AAAA;AACT,GACF;AAEA,EAAA,MAAM,aAAa,MAAM;AACvB,IAAA,OAAA,CAAQ,WAAA,KAAgB,MAAA,cAA8B,MAAA,cAA8B,MAAA,YAA2B;AAAA,EACjH,CAAA;AAEA,EAAA,MAAM,MAAA,mBACJ,GAAA,CAAC,OAAA,EAAA,EACE,QAAA,EAAA,IAAA,CAAK,GAAA,CAAI,CAACC,EAAAA,EAAG,KAAA,qBACZ,GAAA,CAAC,GAAA,EAAA,EAAgC,KAAA,EAAOA,EAAAA,CAAE,KAAA,EAAO,QAAQA,EAAAA,CAAE,KAAA,KAAU,WAAA,EAAa,WAAA,EAAa,UAAA,EAAA,EAArF,CAAA,EAAGA,EAAAA,CAAE,KAAK,CAAA,CAAA,EAAI,KAAK,CAAA,CAA8E,CAC5G,CAAA,EACH,CAAA;AAGF,EAAA,2BACG,MAAA,EAAA,EAAO,OAAA,EAAS,SAAA,EAAW,KAAA,EAAO,EAAE,uCAAA,EAAyC,eAAe,CAAA,EAAG,IAAA,EAAM,QACpG,QAAA,kBAAA,IAAA,CAAC,KAAA,EAAA,EAAM,SAAA,EAAU,QAAA,EAAS,KAAK,CAAA,EAC7B,QAAA,EAAA;AAAA,oBAAA,GAAA,CAAC,mBAAgB,IAAA,EAAK,MAAA,EAAO,SAAS,MAAM,IAAA,EAAM,OAAO,EAAE,UAAA,EAAY,MAAA,EAAQ,KAAA,EAAO,SAAQ,EAC5F,QAAA,kBAAA,GAAA,CAAC,SAAM,OAAA,EAAQ,uBAAA,EAAwB,+BAAiB,CAAA,EAC1D,CAAA;AAAA,IACC,gBAAgB,MAAA,mBACf,GAAA;AAAA,MAAC,UAAA;AAAA,MAAA;AAAA,QACC,KAAA,EAAM,MAAA;AAAA,QACN,MAAA,EAAQ,GAAA;AAAA,QACR,QAAA,EAAS,MAAA;AAAA,QACT,eAAA,EAAiB,IAAA;AAAA,QACjB,WAAA,EAAA,CAAc,IAAA,GAAO,IAAA,CAAK,MAAA,GAAS,CAAA,IAAK,GAAA;AAAA,QACxC,KAAA,EAAO,IAAA;AAAA,QACP,QAAA,EAAU,IAAA;AAAA,QACV,QAAA,EAAU;AAAA;AAAA,wBAGZ,GAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,MAAA,CAAO,eAAgB,QAAA,EAAA,IAAA,EAAK;AAAA,GAAA,EAEhD,CAAA,EACF,CAAA;AAEJ;AAGA,MAAM,SAAA,GAAY,CAAC,KAAA,MAA0B;AAAA,EAC3C,eAAe,GAAA,CAAI;AAAA,IACjB,KAAA,EAAO,KAAA,CAAM,MAAA,CAAO,IAAA,CAAK,SAAA;AAAA,IACzB,SAAA,EAAW;AAAA,GACZ;AACH,CAAA,CAAA;;;;"}