@grafana/ui
Version:
Grafana Components Library
201 lines (196 loc) • 7.46 kB
JavaScript
;
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');
;
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