@jbrowse/core
Version:
JBrowse 2 core libraries used by plugins
42 lines (41 loc) • 2.65 kB
JavaScript
import { jsx as _jsx } from "react/jsx-runtime";
import { observer } from 'mobx-react';
import CDNASequence from "./seqtypes/CDNASequence.js";
import CDSSequence from "./seqtypes/CDSSequence.js";
import GenomicSequence from "./seqtypes/GenomicSequence.js";
import ProteinSequence from "./seqtypes/ProteinSequence.js";
import { useSequenceData } from "./useSequenceData.js";
import { defaultCodonTable, generateCodonTable } from "../../util/index.js";
function RenderedSequenceComponent({ mode, feature, model, sequenceData, }) {
const { seq, upstream, downstream, cds, exons, utr } = sequenceData;
switch (mode) {
case 'genomic':
return _jsx(GenomicSequence, { feature: feature, model: model, sequence: seq });
case 'genomic_sequence_updownstream':
return (_jsx(GenomicSequence, { model: model, feature: feature, sequence: seq, upstream: upstream, downstream: downstream }));
case 'cds':
return _jsx(CDSSequence, { model: model, cds: cds, sequence: seq });
case 'cdna':
return (_jsx(CDNASequence, { model: model, exons: exons, feature: feature, cds: cds, utr: utr, sequence: seq }));
case 'protein':
return (_jsx(ProteinSequence, { model: model, cds: cds, codonTable: generateCodonTable(defaultCodonTable), sequence: seq }));
case 'gene':
return (_jsx(CDNASequence, { model: model, exons: exons, feature: feature, cds: cds, utr: utr, sequence: seq, includeIntrons: true }));
case 'gene_collapsed_intron':
return (_jsx(CDNASequence, { model: model, exons: exons, feature: feature, cds: cds, sequence: seq, utr: utr, includeIntrons: true, collapseIntron: true }));
case 'gene_updownstream':
return (_jsx(CDNASequence, { model: model, exons: exons, feature: feature, cds: cds, sequence: seq, utr: utr, upstream: upstream, downstream: downstream, includeIntrons: true }));
case 'gene_updownstream_collapsed_intron':
return (_jsx(CDNASequence, { model: model, exons: exons, feature: feature, cds: cds, sequence: seq, utr: utr, upstream: upstream, downstream: downstream, includeIntrons: true, collapseIntron: true }));
default:
return _jsx("div", { children: "Unknown type" });
}
}
const SequenceContents = observer(function SequenceContents({ mode, feature, sequence, model, }) {
const sequenceData = useSequenceData({
feature,
sequence,
});
return sequenceData ? (_jsx(RenderedSequenceComponent, { mode: mode, feature: feature, model: model, sequenceData: sequenceData })) : null;
});
export default SequenceContents;