@jbrowse/core
Version:
JBrowse 2 core libraries used by plugins
49 lines (48 loc) • 2.69 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.default = Attributes;
const jsx_runtime_1 = require("react/jsx-runtime");
const ArrayValue_1 = __importDefault(require("./ArrayValue"));
const DataGridDetails_1 = __importDefault(require("./DataGridDetails"));
const SimpleField_1 = __importDefault(require("./SimpleField"));
const UriField_1 = __importDefault(require("./UriField"));
const util_1 = require("./util");
const util_2 = require("../../util");
const MAX_FIELD_NAME_WIDTH = 170;
const globalOmit = [
'__jbrowsefmt',
'length',
'position',
'subfeatures',
'uniqueId',
'exonFrames',
'parentId',
'thickStart',
'thickEnd',
];
function Attributes(props) {
const { attributes, omit = [], omitSingleLevel = [], descriptions, formatter, hideUris, prefix = [], } = props;
const omits = new Set([...omit, ...globalOmit, ...omitSingleLevel]);
const { __jbrowsefmt, ...rest } = attributes;
const filteredFormattedAttributes = Object.entries({
...rest,
...__jbrowsefmt,
}).filter(([k, v]) => v != null && !omits.has(k));
const maxLabelWidth = (0, util_1.generateMaxWidth)(filteredFormattedAttributes, prefix);
return ((0, jsx_runtime_1.jsx)(jsx_runtime_1.Fragment, { children: filteredFormattedAttributes.map(([key, value]) => {
const description = (0, util_1.accessNested)([...prefix, key], descriptions);
if (Array.isArray(value)) {
return value.length > 1 && value.every(val => (0, util_2.isObject)(val)) ? ((0, jsx_runtime_1.jsx)(DataGridDetails_1.default, { name: key, prefix: prefix, value: value }, key)) : ((0, jsx_runtime_1.jsx)(ArrayValue_1.default, { name: key, value: value, formatter: formatter, description: description, prefix: prefix }, key));
}
else if ((0, util_2.isObject)(value)) {
const { omitSingleLevel, ...rest } = props;
return (0, util_2.isUriLocation)(value) ? (hideUris ? null : ((0, jsx_runtime_1.jsx)(UriField_1.default, { name: key, prefix: prefix, value: value }, key))) : ((0, jsx_runtime_1.jsx)(Attributes, { ...rest, formatter: formatter, attributes: value, descriptions: descriptions, prefix: [...prefix, key] }, key));
}
else {
return ((0, jsx_runtime_1.jsx)(SimpleField_1.default, { name: key, formatter: formatter, value: value, description: description, prefix: prefix, width: Math.min(maxLabelWidth, MAX_FIELD_NAME_WIDTH) }, key));
}
}) }));
}