@jbrowse/core
Version:
JBrowse 2 core libraries used by plugins
49 lines (48 loc) • 3.4 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.default = FeatureDetails;
const jsx_runtime_1 = require("react/jsx-runtime");
const ErrorBoundary_1 = require("@jbrowse/core/ui/ErrorBoundary");
const material_1 = require("@mui/material");
const util_1 = require("./util");
const SequenceFeatureDetails_1 = __importDefault(require("../SequenceFeatureDetails"));
const Attributes_1 = __importDefault(require("./Attributes"));
const BaseCard_1 = __importDefault(require("./BaseCard"));
const CoreDetails_1 = __importDefault(require("./CoreDetails"));
const ui_1 = require("../../ui");
const util_2 = require("../../util");
const coreDetails = [
'name',
'start',
'end',
'strand',
'refName',
'description',
'type',
];
function FeatureDetails(props) {
const { omit = [], model, feature, depth = 0 } = props;
const { maxDepth } = model;
const { mate, name = '', id = '', type = '', subfeatures, uniqueId } = feature;
const pm = (0, util_2.getEnv)(model).pluginManager;
const session = (0, util_2.getSession)(model);
const ExtraPanel = pm.evaluateExtensionPoint('Core-extraFeaturePanel', null, {
session,
feature,
model,
});
const m = mate;
return ((0, jsx_runtime_1.jsxs)(BaseCard_1.default, { title: (0, util_1.generateTitle)(name, id, type), children: [(0, jsx_runtime_1.jsx)(material_1.Typography, { children: "Core details" }), (0, jsx_runtime_1.jsx)(CoreDetails_1.default, { ...props }), m ? ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)(material_1.Divider, {}), (0, jsx_runtime_1.jsx)(material_1.Typography, { children: "Mate details" }), (0, jsx_runtime_1.jsx)(CoreDetails_1.default, { ...props, feature: {
...m,
start: m.start,
end: m.end,
refName: m.refName,
uniqueId: `${uniqueId}-mate`,
} })] })) : null, (0, jsx_runtime_1.jsx)(material_1.Divider, {}), (0, jsx_runtime_1.jsx)(material_1.Typography, { children: "Attributes" }), (0, jsx_runtime_1.jsx)(Attributes_1.default, { attributes: feature, ...props, omit: omit, omitSingleLevel: coreDetails }), (0, jsx_runtime_1.jsx)(ErrorBoundary_1.ErrorBoundary, { FallbackComponent: e => (0, jsx_runtime_1.jsx)(ui_1.ErrorMessage, { error: e.error }), children: (0, jsx_runtime_1.jsx)(SequenceFeatureDetails_1.default, { ...props }) }), ExtraPanel ? ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)(material_1.Divider, {}), (0, jsx_runtime_1.jsx)(BaseCard_1.default, { title: ExtraPanel.name, children: (0, jsx_runtime_1.jsx)(ExtraPanel.Component, { ...props }) })] })) : null, depth < maxDepth && (subfeatures === null || subfeatures === void 0 ? void 0 : subfeatures.length) ? ((0, jsx_runtime_1.jsx)(BaseCard_1.default, { title: "Subfeatures", defaultExpanded: depth < 1, children: subfeatures.map((sub, idx) => ((0, jsx_runtime_1.jsx)(FeatureDetails, { feature: {
...sub,
uniqueId: `${uniqueId}_${idx}`,
}, model: model, depth: depth + 1 }, JSON.stringify(sub)))) })) : null] }));
}