UNPKG

@grafana/ui

Version:
201 lines (196 loc) • 7.46 kB
'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); var jsxRuntime = require('react/jsx-runtime'); var clsx = require('clsx'); var React = require('react'); var data = require('@grafana/data'); require('../../types.cjs'); var utils = require('../utils.cjs'); var ActionsCell = require('./ActionsCell.cjs'); var AutoCell = require('./AutoCell.cjs'); var BarGaugeCell = require('./BarGaugeCell.cjs'); var DataLinksCell = require('./DataLinksCell.cjs'); var GeoCell = require('./GeoCell.cjs'); var ImageCell = require('./ImageCell.cjs'); var MarkdownCell = require('./MarkdownCell.cjs'); var PillCell = require('./PillCell.cjs'); var SparklineCell = require('./SparklineCell.cjs'); var schema = require('@grafana/schema'); "use strict"; const wrapComponentInMemo = (fn, name) => { const result = React.memo(fn); result.displayName = name; return result; }; const AutoCellRenderer = wrapComponentInMemo( (props) => /* @__PURE__ */ jsxRuntime.jsx(AutoCell.AutoCell, { value: props.value, field: props.field, rowIdx: props.rowIdx }), "AutoCellRenderer" ); function isCustomCellOptions(options) { return options.type === schema.TableCellDisplayMode.Custom; } function mixinAutoCellStyles(fn) { return (theme, options) => { const styles = fn(theme, options); return clsx.clsx(styles, AutoCell.getStyles(theme, options)); }; } const CELL_REGISTRY = { [schema.TableCellDisplayMode.Auto]: { renderer: AutoCellRenderer, getStyles: AutoCell.getStyles }, [schema.TableCellDisplayMode.ColorBackground]: { renderer: AutoCellRenderer, getStyles: AutoCell.getStyles }, [schema.TableCellDisplayMode.ColorText]: { renderer: AutoCellRenderer, getStyles: AutoCell.getStyles }, [schema.TableCellDisplayMode.JSONView]: { renderer: AutoCellRenderer, getStyles: mixinAutoCellStyles(AutoCell.getJsonCellStyles) }, [schema.TableCellDisplayMode.Actions]: { renderer: wrapComponentInMemo( (props) => { var _a; return /* @__PURE__ */ jsxRuntime.jsx(ActionsCell.ActionsCell, { field: props.field, rowIdx: props.rowIdx, getActions: (_a = props.getActions) != null ? _a : () => [] }); }, "ActionsCellRenderer" ), getStyles: ActionsCell.getStyles }, [schema.TableCellDisplayMode.DataLinks]: { renderer: wrapComponentInMemo( (props) => /* @__PURE__ */ jsxRuntime.jsx(DataLinksCell.DataLinksCell, { field: props.field, rowIdx: props.rowIdx }), "DataLinksCellRenderer" ), getStyles: DataLinksCell.getStyles }, [schema.TableCellDisplayMode.Gauge]: { renderer: wrapComponentInMemo( (props) => /* @__PURE__ */ jsxRuntime.jsx( BarGaugeCell.BarGaugeCell, { field: props.field, value: props.value, theme: props.theme, height: props.height, width: props.width, rowIdx: props.rowIdx } ), "BarGaugeCellRenderer" ) }, [schema.TableCellDisplayMode.Sparkline]: { // eslint-disable-next-line react/display-name renderer: wrapComponentInMemo( (props) => /* @__PURE__ */ jsxRuntime.jsx( SparklineCell.SparklineCell, { value: props.value, field: props.field, timeRange: props.timeRange, rowIdx: props.rowIdx, theme: props.theme, width: props.width } ), "SparklineCellRenderer" ), getStyles: SparklineCell.getStyles }, [schema.TableCellDisplayMode.Geo]: { renderer: wrapComponentInMemo( (props) => /* @__PURE__ */ jsxRuntime.jsx(GeoCell.GeoCell, { value: props.value, height: props.height }), "GeoCellRenderer" ), getStyles: GeoCell.getStyles }, [schema.TableCellDisplayMode.Image]: { renderer: wrapComponentInMemo( (props) => /* @__PURE__ */ jsxRuntime.jsx(ImageCell.ImageCell, { cellOptions: props.cellOptions, field: props.field, value: props.value, rowIdx: props.rowIdx }), "ImageCellRenderer" ), getStyles: ImageCell.getStyles }, [schema.TableCellDisplayMode.Pill]: { renderer: wrapComponentInMemo( (props) => /* @__PURE__ */ jsxRuntime.jsx( PillCell.PillCell, { rowIdx: props.rowIdx, field: props.field, theme: props.theme, getTextColorForBackground: props.getTextColorForBackground } ), "PillCellRenderer" ), getStyles: PillCell.getStyles, testField: (field) => field.type === data.FieldType.string || field.type === data.FieldType.other && field.values.some((val) => Array.isArray(val)) }, [schema.TableCellDisplayMode.Markdown]: { renderer: wrapComponentInMemo( (props) => /* @__PURE__ */ jsxRuntime.jsx(MarkdownCell.MarkdownCell, { field: props.field, rowIdx: props.rowIdx, disableSanitizeHtml: props.disableSanitizeHtml }), "MarkdownCellRenderer" ), getStyles: MarkdownCell.getStyles, testField: (field) => field.type === data.FieldType.string }, [schema.TableCellDisplayMode.Custom]: { renderer: wrapComponentInMemo((props) => { if (!isCustomCellOptions(props.cellOptions) || !props.cellOptions.cellComponent) { return null; } const CustomCellComponent = props.cellOptions.cellComponent; return /* @__PURE__ */ jsxRuntime.jsx(CustomCellComponent, { field: props.field, rowIndex: props.rowIdx, frame: props.frame, value: props.value }); }, "CustomCellRenderer") } }; function getCellRenderer(field, cellOptions = utils.getCellOptions(field)) { var _a, _b, _c, _d; const cellType = (_a = cellOptions == null ? void 0 : cellOptions.type) != null ? _a : schema.TableCellDisplayMode.Auto; if (cellType === schema.TableCellDisplayMode.Auto) { return CELL_REGISTRY[getAutoRendererDisplayMode(field)].renderer; } if (((_b = CELL_REGISTRY[cellType]) == null ? void 0 : _b.testField) && CELL_REGISTRY[cellType].testField(field) !== true) { return AutoCellRenderer; } return (_d = (_c = CELL_REGISTRY[cellType]) == null ? void 0 : _c.renderer) != null ? _d : AutoCellRenderer; } function getCellSpecificStyles(cellType, field, theme, options) { var _a, _b; if (cellType === schema.TableCellDisplayMode.Auto) { return getAutoRendererStyles(theme, options, field); } return (_b = (_a = CELL_REGISTRY[cellType]) == null ? void 0 : _a.getStyles) == null ? void 0 : _b.call(_a, theme, options); } function getAutoRendererStyles(theme, options, field) { var _a, _b; const impliedDisplayMode = getAutoRendererDisplayMode(field); if (impliedDisplayMode !== schema.TableCellDisplayMode.Auto) { return (_b = (_a = CELL_REGISTRY[impliedDisplayMode]) == null ? void 0 : _a.getStyles) == null ? void 0 : _b.call(_a, theme, options); } return AutoCell.getStyles(theme, options); } function getAutoRendererDisplayMode(field) { if (field.type === data.FieldType.geo) { return schema.TableCellDisplayMode.Geo; } if (field.type === data.FieldType.frame) { const firstValue = field.values[0]; if (data.isDataFrame(firstValue) && data.isTimeSeriesFrame(firstValue)) { return schema.TableCellDisplayMode.Sparkline; } } return schema.TableCellDisplayMode.Auto; } exports.AutoCellRenderer = AutoCellRenderer; exports.getAutoRendererDisplayMode = getAutoRendererDisplayMode; exports.getCellRenderer = getCellRenderer; exports.getCellSpecificStyles = getCellSpecificStyles; //# sourceMappingURL=renderers.cjs.map