UNPKG

@jbrowse/core

Version:

JBrowse 2 core libraries used by plugins

82 lines (81 loc) 3.18 kB
"use strict"; 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'); })); }, })); }