@jbrowse/core
Version:
JBrowse 2 core libraries used by plugins
82 lines (81 loc) • 3.18 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.SequenceFeatureDetailsF = SequenceFeatureDetailsF;
const mobx_1 = require("mobx");
const mobx_state_tree_1 = require("mobx-state-tree");
const util_1 = require("../../util");
function localStorageSetNumber(key, value) {
(0, util_1.localStorageSetItem)(key, JSON.stringify(value));
}
function localStorageSetBoolean(key, value) {
(0, util_1.localStorageSetItem)(key, JSON.stringify(value));
}
const p = 'sequenceFeatureDetails';
function SequenceFeatureDetailsF() {
return mobx_state_tree_1.types
.model('SequenceFeatureDetails')
.volatile(() => ({
showCoordinatesSetting: (0, util_1.localStorageGetItem)(`${p}-showCoordinatesSetting`) || 'none',
intronBp: (0, util_1.localStorageGetNumber)(`${p}-intronBp`, 10),
upDownBp: (0, util_1.localStorageGetNumber)(`${p}-upDownBp`, 100),
upperCaseCDS: (0, util_1.localStorageGetBoolean)(`${p}-upperCaseCDS`, true),
charactersPerRow: 100,
feature: undefined,
mode: '',
}))
.actions(self => ({
setFeature(f) {
self.feature = f;
},
setUpDownBp(f) {
self.upDownBp = f;
},
setIntronBp(f) {
self.intronBp = f;
},
setUpperCaseCDS(f) {
self.upperCaseCDS = f;
},
setShowCoordinates(f) {
self.showCoordinatesSetting = f;
},
setMode(mode) {
self.mode = mode;
},
}))
.views(self => ({
get showCoordinates() {
return self.showCoordinatesSetting !== 'none';
},
get showGenomicCoordsOption() {
return (self.mode === 'gene' ||
self.mode === 'gene_updownstream' ||
self.mode === 'genomic' ||
self.mode === 'genomic_sequence_updownstream');
},
get hasCDS() {
var _a, _b;
return (_b = (_a = self.feature) === null || _a === void 0 ? void 0 : _a.subfeatures) === null || _b === void 0 ? void 0 : _b.some(sub => sub.type === 'CDS');
},
get hasExon() {
var _a, _b;
return (_b = (_a = self.feature) === null || _a === void 0 ? void 0 : _a.subfeatures) === null || _b === void 0 ? void 0 : _b.some(sub => sub.type === 'exon');
},
get hasExonOrCDS() {
return this.hasExon || this.hasCDS;
},
}))
.actions(self => ({
afterAttach() {
(0, mobx_state_tree_1.addDisposer)(self, (0, mobx_1.autorun)(() => {
localStorageSetNumber(`${p}-upDownBp`, self.upDownBp);
localStorageSetNumber(`${p}-intronBp`, self.intronBp);
localStorageSetBoolean(`${p}-upperCaseCDS`, self.upperCaseCDS);
(0, util_1.localStorageSetItem)(`${p}-showCoordinatesSetting`, self.showCoordinatesSetting);
}));
(0, mobx_state_tree_1.addDisposer)(self, (0, mobx_1.autorun)(() => {
self.setMode(self.hasCDS ? 'cds' : self.hasExon ? 'cdna' : 'genomic');
}));
},
}));
}