UNPKG

@jbrowse/core

Version:

JBrowse 2 core libraries used by plugins

49 lines (48 loc) 2.69 kB
"use strict"; 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)); } }) })); }