@jbrowse/core
Version:
JBrowse 2 core libraries used by plugins
39 lines (38 loc) • 2.32 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.default = ArrayValue;
const jsx_runtime_1 = require("react/jsx-runtime");
const mui_1 = require("tss-react/mui");
const Attributes_1 = __importDefault(require("./Attributes"));
const BasicValue_1 = __importDefault(require("./BasicValue"));
const FieldName_1 = __importDefault(require("./FieldName"));
const util_1 = require("../../util");
const useStyles = (0, mui_1.makeStyles)()(theme => ({
field: {
display: 'flex',
flexWrap: 'wrap',
},
fieldSubvalue: {
wordBreak: 'break-word',
maxHeight: 300,
padding: theme.spacing(0.5),
border: `1px solid ${theme.palette.action.selected}`,
boxSizing: 'border-box',
overflow: 'auto',
},
}));
function ArrayValue({ name, value, description, formatter, prefix = [], }) {
const { classes } = useStyles();
if (value.length === 1) {
return (0, util_1.isObject)(value[0]) ? ((0, jsx_runtime_1.jsx)(Attributes_1.default, { formatter: formatter, attributes: value[0], prefix: [...prefix, name] })) : ((0, jsx_runtime_1.jsxs)("div", { className: classes.field, children: [(0, jsx_runtime_1.jsx)(FieldName_1.default, { prefix: prefix, description: description, name: name }), (0, jsx_runtime_1.jsx)(BasicValue_1.default, { value: formatter ? formatter(value[0], name) : value[0] })] }));
}
else if (value.every(val => (0, util_1.isObject)(val))) {
return ((0, jsx_runtime_1.jsx)(jsx_runtime_1.Fragment, { children: value.map((val, i) => ((0, jsx_runtime_1.jsx)(Attributes_1.default, { formatter: formatter, attributes: val, prefix: [...prefix, `${name}-${i}`] }, `${JSON.stringify(val)}-${i}`))) }));
}
else {
return ((0, jsx_runtime_1.jsxs)("div", { className: classes.field, children: [(0, jsx_runtime_1.jsx)(FieldName_1.default, { prefix: prefix, description: description, name: name }), value.map((val, i) => ((0, jsx_runtime_1.jsx)("div", { className: classes.fieldSubvalue, children: (0, jsx_runtime_1.jsx)(BasicValue_1.default, { value: formatter ? formatter(val, name) : val }) }, `${JSON.stringify(val)}-${i}`)))] }));
}
}