@jbrowse/core 2.0.1 → 2.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/BaseFeatureWidget/BaseFeatureDetail.d.ts +6 -0
- package/BaseFeatureWidget/BaseFeatureDetail.js +313 -592
- package/BaseFeatureWidget/SequenceFeatureDetails.js +213 -479
- package/BaseFeatureWidget/index.js +88 -126
- package/BaseFeatureWidget/types.js +1 -4
- package/BaseFeatureWidget/util.js +40 -75
- package/CorePlugin.js +55 -94
- package/Plugin.js +9 -34
- package/PluginLoader.js +153 -422
- package/PluginManager.d.ts +17 -14
- package/PluginManager.js +377 -666
- package/ReExports/Attributes.js +3 -10
- package/ReExports/BaseCard.js +3 -10
- package/ReExports/DataGrid.js +5 -12
- package/ReExports/FeatureDetails.js +3 -10
- package/ReExports/index.js +6 -12
- package/ReExports/list.d.ts +5 -0
- package/ReExports/list.js +271 -7
- package/ReExports/material-ui-colors.js +15 -16
- package/ReExports/modules.d.ts +0 -1
- package/ReExports/modules.js +453 -798
- package/TextSearch/BaseResults.js +51 -123
- package/TextSearch/TextSearchManager.js +66 -144
- package/assemblyManager/assembly.js +280 -555
- package/assemblyManager/assemblyConfigSchema.js +47 -64
- package/assemblyManager/assemblyManager.js +126 -272
- package/assemblyManager/index.js +9 -22
- package/configuration/configurationSchema.js +167 -203
- package/configuration/configurationSlot.js +248 -326
- package/configuration/index.js +19 -35
- package/configuration/util.js +131 -173
- package/data_adapters/BaseAdapter.d.ts +2 -2
- package/data_adapters/BaseAdapter.js +132 -521
- package/data_adapters/CytobandAdapter.js +40 -126
- package/data_adapters/dataAdapterCache.js +77 -158
- package/package.json +4 -5
- package/pluggableElementTypes/AdapterType.js +24 -79
- package/pluggableElementTypes/AddTrackWorkflowType.d.ts +17 -0
- package/pluggableElementTypes/AddTrackWorkflowType.js +20 -0
- package/pluggableElementTypes/ConnectionType.js +22 -65
- package/pluggableElementTypes/DisplayType.js +35 -82
- package/pluggableElementTypes/InternetAccountType.js +23 -64
- package/pluggableElementTypes/PluggableElementBase.js +8 -20
- package/pluggableElementTypes/RpcMethodType.js +85 -427
- package/pluggableElementTypes/TextSearchAdapterType.js +16 -55
- package/pluggableElementTypes/TrackType.js +26 -70
- package/pluggableElementTypes/ViewType.js +21 -63
- package/pluggableElementTypes/WidgetType.js +21 -64
- package/pluggableElementTypes/index.d.ts +4 -3
- package/pluggableElementTypes/index.js +42 -125
- package/pluggableElementTypes/models/BaseConnectionModelFactory.js +28 -43
- package/pluggableElementTypes/models/BaseDisplayModel.js +58 -95
- package/pluggableElementTypes/models/BaseTrackModel.js +139 -199
- package/pluggableElementTypes/models/BaseViewModel.js +24 -40
- package/pluggableElementTypes/models/InternetAccountModel.js +116 -263
- package/pluggableElementTypes/models/baseConnectionConfig.js +14 -25
- package/pluggableElementTypes/models/baseInternetAccountConfig.js +29 -38
- package/pluggableElementTypes/models/baseTrackConfig.js +106 -133
- package/pluggableElementTypes/models/index.js +21 -70
- package/pluggableElementTypes/renderers/BoxRendererType.js +132 -291
- package/pluggableElementTypes/renderers/CircularChordRendererType.js +8 -38
- package/pluggableElementTypes/renderers/ComparativeServerSideRendererType.js +60 -192
- package/pluggableElementTypes/renderers/FeatureRendererType.d.ts +0 -2
- package/pluggableElementTypes/renderers/FeatureRendererType.js +89 -264
- package/pluggableElementTypes/renderers/RendererType.js +31 -105
- package/pluggableElementTypes/renderers/ServerSideRenderedContent.js +61 -72
- package/pluggableElementTypes/renderers/ServerSideRendererType.js +112 -265
- package/pluggableElementTypes/renderers/index.js +19 -62
- package/pluggableElementTypes/renderers/util/serializableFilterChain.js +27 -65
- package/rpc/BaseRpcDriver.js +169 -405
- package/rpc/MainThreadRpcDriver.js +27 -150
- package/rpc/RpcManager.js +58 -159
- package/rpc/WebWorkerRpcDriver.js +54 -171
- package/rpc/configSchema.js +25 -49
- package/rpc/coreRpcMethods.js +221 -959
- package/rpc/remoteAbortSignals.js +46 -70
- package/tsconfig.build.tsbuildinfo +1 -1
- package/ui/AboutDialog.js +106 -162
- package/ui/App.js +157 -242
- package/ui/AssemblySelector.js +59 -120
- package/ui/CascadingMenu.js +101 -196
- package/ui/ColorPicker.d.ts +16 -0
- package/ui/ColorPicker.js +97 -0
- package/ui/Drawer.js +28 -61
- package/ui/DrawerWidget.js +108 -202
- package/ui/DropDownMenu.js +60 -91
- package/ui/EditableTypography.js +87 -149
- package/ui/ErrorMessage.js +41 -56
- package/ui/FactoryResetDialog.js +24 -57
- package/ui/FatalErrorDialog.js +59 -91
- package/ui/FileSelector/FileSelector.js +123 -189
- package/ui/FileSelector/LocalFileChooser.js +44 -75
- package/ui/FileSelector/UrlChooser.js +17 -38
- package/ui/FileSelector/index.js +6 -12
- package/ui/Icons.js +45 -69
- package/ui/Logo.js +57 -110
- package/ui/Menu.js +232 -354
- package/ui/PrerenderedCanvas.js +63 -87
- package/ui/ResizeHandle.js +87 -116
- package/ui/ReturnToImportFormDialog.js +32 -63
- package/ui/SanitizedHTML.js +64 -47
- package/ui/Snackbar.js +74 -101
- package/ui/SnackbarModel.js +37 -51
- package/ui/Tooltip.js +49 -76
- package/ui/ViewContainer.js +113 -196
- package/ui/colors.d.ts +10 -0
- package/ui/colors.js +78 -0
- package/ui/index.js +51 -181
- package/ui/react-colorful.d.ts +17 -0
- package/ui/react-colorful.js +455 -0
- package/ui/theme.js +199 -247
- package/util/Base1DUtils.js +163 -202
- package/util/Base1DViewModel.js +121 -168
- package/util/QuickLRU.js +84 -332
- package/util/TimeTraveller.d.ts +19 -0
- package/util/TimeTraveller.js +86 -0
- package/util/aborting.js +49 -127
- package/util/analytics.js +91 -154
- package/util/blockTypes.js +106 -240
- package/util/calculateDynamicBlocks.js +98 -128
- package/util/calculateStaticBlocks.js +105 -125
- package/util/color/cssColorsLevel4.js +156 -160
- package/util/color/index.js +33 -55
- package/util/compositeMap.js +49 -333
- package/util/formatFastaStrings.js +9 -14
- package/util/idMaker.js +18 -31
- package/util/index.d.ts +7 -20
- package/util/index.js +742 -1188
- package/util/io/RemoteFileWithRangeCache.js +88 -257
- package/util/io/index.js +95 -169
- package/util/jexl.js +60 -115
- package/util/jexlStrings.js +24 -29
- package/util/layouts/BaseLayout.js +1 -4
- package/util/layouts/GranularRectLayout.js +388 -555
- package/util/layouts/MultiLayout.js +41 -109
- package/util/layouts/PrecomputedLayout.js +56 -112
- package/util/layouts/PrecomputedMultiLayout.js +22 -59
- package/util/layouts/SceneGraph.js +127 -197
- package/util/layouts/index.js +29 -66
- package/util/mst-reflection.js +55 -71
- package/util/offscreenCanvasPonyfill.js +66 -134
- package/util/offscreenCanvasUtils.d.ts +2 -7
- package/util/offscreenCanvasUtils.js +49 -146
- package/util/range.js +29 -40
- package/util/rxjs.js +20 -27
- package/util/simpleFeature.js +88 -152
- package/util/stats.js +91 -151
- package/util/tracks.js +130 -173
- package/util/types/index.js +110 -179
- package/util/types/mst.js +91 -146
- package/util/types/util.js +1 -4
- package/util/when.js +54 -101
- package/BaseFeatureWidget/SequenceFeatureDetails.test.js +0 -122
- package/BaseFeatureWidget/index.test.js +0 -69
- package/TextSearch/BaseResults.test.js +0 -42
- package/configuration/configurationSchema.test.js +0 -266
- package/configuration/configurationSlot.test.js +0 -69
- package/configuration/util.test.js +0 -39
- package/data_adapters/BaseAdapter.test.js +0 -200
- package/declare.d.js +0 -1
- package/pluggableElementTypes/RpcMethodType.test.js +0 -118
- package/pluggableElementTypes/renderers/declare.d.js +0 -1
- package/pluggableElementTypes/renderers/util/serializableFilterChain.test.js +0 -20
- package/rpc/BaseRpcDriver.test.js +0 -540
- package/rpc/declaration.d.js +0 -1
- package/ui/FatalErrorDialog.test.js +0 -82
- package/ui/SanitizedHTML.test.js +0 -36
- package/ui/theme.test.js +0 -92
- package/util/Base1DViewModel.test.js +0 -130
- package/util/calculateDynamicBlocks.test.js +0 -74
- package/util/calculateStaticBlocks.test.js +0 -297
- package/util/declare.d.js +0 -1
- package/util/formatFastaStrings.test.js +0 -40
- package/util/index.test.js +0 -213
- package/util/jexlStrings.test.js +0 -48
- package/util/layouts/GranularRectLayout.test.js +0 -99
- package/util/range.test.js +0 -64
- package/util/simpleFeature.test.js +0 -34
- package/util/stats.test.js +0 -172
|
@@ -1,131 +1,93 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
Object.defineProperty(exports, "__esModule", {
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
|
|
14
|
-
|
|
15
|
-
var _mobxStateTree = require("mobx-state-tree");
|
|
16
|
-
|
|
17
|
-
var _mobx = require("mobx");
|
|
18
|
-
|
|
19
|
-
var _configuration = require("../configuration");
|
|
20
|
-
|
|
21
|
-
var _clone = _interopRequireDefault(require("clone"));
|
|
22
|
-
|
|
23
|
-
var _mst = require("../util/types/mst");
|
|
24
|
-
|
|
25
|
-
var _excluded = ["featureData", "finalizedFeatureData"],
|
|
26
|
-
_excluded2 = ["unformattedFeatureData", "featureData"];
|
|
27
|
-
|
|
28
|
-
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
29
|
-
|
|
30
|
-
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
31
|
-
|
|
32
|
-
var configSchema = (0, _configuration.ConfigurationSchema)('BaseFeatureWidget', {});
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.stateModelFactory = exports.configSchema = void 0;
|
|
7
|
+
const mobx_state_tree_1 = require("mobx-state-tree");
|
|
8
|
+
const mobx_1 = require("mobx");
|
|
9
|
+
const configuration_1 = require("../configuration");
|
|
10
|
+
const clone_1 = __importDefault(require("clone"));
|
|
11
|
+
const mst_1 = require("../util/types/mst");
|
|
12
|
+
const configSchema = (0, configuration_1.ConfigurationSchema)('BaseFeatureWidget', {});
|
|
33
13
|
exports.configSchema = configSchema;
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
14
|
+
function formatSubfeatures(obj, depth, parse, currentDepth = 0, returnObj = {}) {
|
|
15
|
+
var _a;
|
|
16
|
+
if (depth <= currentDepth) {
|
|
17
|
+
return returnObj;
|
|
18
|
+
}
|
|
19
|
+
returnObj.subfeatures = (_a = obj.subfeatures) === null || _a === void 0 ? void 0 : _a.map(sub => {
|
|
20
|
+
formatSubfeatures(sub, depth, parse, currentDepth + 1, returnObj);
|
|
21
|
+
return parse(sub);
|
|
22
|
+
});
|
|
42
23
|
return returnObj;
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
returnObj.subfeatures = (_obj$subfeatures = obj.subfeatures) === null || _obj$subfeatures === void 0 ? void 0 : _obj$subfeatures.map(function (sub) {
|
|
46
|
-
formatSubfeatures(sub, depth, parse, currentDepth + 1, returnObj);
|
|
47
|
-
return parse(sub);
|
|
48
|
-
});
|
|
49
|
-
return returnObj;
|
|
50
24
|
}
|
|
51
|
-
|
|
52
25
|
function stateModelFactory(pluginManager) {
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
}
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
}
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
finalizedFeatureData
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
return _objectSpread({
|
|
122
|
-
// replacing undefined with null helps with allowing fields to be
|
|
123
|
-
// hidden, setting null is not allowed by jexl so we set it to
|
|
124
|
-
// undefined to hide. see config guide. this replacement happens both
|
|
125
|
-
// here and when displaying the featureData in base feature widget
|
|
126
|
-
finalizedFeatureData: JSON.parse(JSON.stringify(featureData, function (_, v) {
|
|
127
|
-
return typeof v === 'undefined' ? null : v;
|
|
128
|
-
}))
|
|
129
|
-
}, rest);
|
|
130
|
-
});
|
|
131
|
-
}
|
|
26
|
+
return mobx_state_tree_1.types
|
|
27
|
+
.model('BaseFeatureWidget', {
|
|
28
|
+
id: mst_1.ElementId,
|
|
29
|
+
type: mobx_state_tree_1.types.literal('BaseFeatureWidget'),
|
|
30
|
+
featureData: mobx_state_tree_1.types.frozen(),
|
|
31
|
+
formattedFields: mobx_state_tree_1.types.frozen(),
|
|
32
|
+
unformattedFeatureData: mobx_state_tree_1.types.frozen(),
|
|
33
|
+
view: mobx_state_tree_1.types.safeReference(pluginManager.pluggableMstType('view', 'stateModel')),
|
|
34
|
+
track: mobx_state_tree_1.types.safeReference(pluginManager.pluggableMstType('track', 'stateModel')),
|
|
35
|
+
})
|
|
36
|
+
.volatile(() => ({}))
|
|
37
|
+
.actions(self => ({
|
|
38
|
+
setFeatureData(featureData) {
|
|
39
|
+
self.unformattedFeatureData = featureData;
|
|
40
|
+
},
|
|
41
|
+
clearFeatureData() {
|
|
42
|
+
self.featureData = undefined;
|
|
43
|
+
},
|
|
44
|
+
setFormattedData(feat) {
|
|
45
|
+
self.featureData = feat;
|
|
46
|
+
},
|
|
47
|
+
}))
|
|
48
|
+
.actions(self => ({
|
|
49
|
+
afterCreate() {
|
|
50
|
+
(0, mobx_state_tree_1.addDisposer)(self, (0, mobx_1.autorun)(() => {
|
|
51
|
+
const { unformattedFeatureData, track } = self;
|
|
52
|
+
if (unformattedFeatureData) {
|
|
53
|
+
const feature = (0, clone_1.default)(unformattedFeatureData);
|
|
54
|
+
if (track) {
|
|
55
|
+
// eslint-disable-next-line no-underscore-dangle
|
|
56
|
+
feature.__jbrowsefmt = (0, configuration_1.getConf)(track, ['formatDetails', 'feature'], { feature });
|
|
57
|
+
const depth = (0, configuration_1.getConf)(track, ['formatDetails', 'depth']);
|
|
58
|
+
formatSubfeatures(feature, depth, subfeature => {
|
|
59
|
+
// eslint-disable-next-line no-underscore-dangle
|
|
60
|
+
subfeature.__jbrowsefmt = (0, configuration_1.getConf)(track, ['formatDetails', 'subfeatures'], { feature: subfeature });
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
|
+
self.setFormattedData(feature);
|
|
64
|
+
}
|
|
65
|
+
}));
|
|
66
|
+
},
|
|
67
|
+
}))
|
|
68
|
+
.preProcessSnapshot(snap => {
|
|
69
|
+
// @ts-ignore
|
|
70
|
+
const { featureData, finalizedFeatureData, ...rest } = snap;
|
|
71
|
+
return {
|
|
72
|
+
unformattedFeatureData: featureData,
|
|
73
|
+
featureData: finalizedFeatureData,
|
|
74
|
+
...rest,
|
|
75
|
+
};
|
|
76
|
+
})
|
|
77
|
+
.postProcessSnapshot(snap => {
|
|
78
|
+
// xref https://github.com/mobxjs/mobx-state-tree/issues/1524 for Omit
|
|
79
|
+
const { unformattedFeatureData, featureData, ...rest } = snap;
|
|
80
|
+
// finalizedFeatureData avoids running formatter twice if loading from
|
|
81
|
+
// snapshot
|
|
82
|
+
return {
|
|
83
|
+
// replacing undefined with null helps with allowing fields to be
|
|
84
|
+
// hidden, setting null is not allowed by jexl so we set it to
|
|
85
|
+
// undefined to hide. see config guide. this replacement happens both
|
|
86
|
+
// here and when displaying the featureData in base feature widget
|
|
87
|
+
finalizedFeatureData: JSON.parse(JSON.stringify(featureData, (_, v) => typeof v === 'undefined' ? null : v)),
|
|
88
|
+
...rest,
|
|
89
|
+
};
|
|
90
|
+
});
|
|
91
|
+
}
|
|
92
|
+
exports.default = stateModelFactory;
|
|
93
|
+
exports.stateModelFactory = stateModelFactory;
|
|
@@ -1,84 +1,49 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
Object.defineProperty(exports, "__esModule", {
|
|
6
|
-
value: true
|
|
7
|
-
});
|
|
8
|
-
exports.calculateUTRs = calculateUTRs;
|
|
9
|
-
exports.dedupe = dedupe;
|
|
10
|
-
exports.ellipses = ellipses;
|
|
11
|
-
exports.revlist = revlist;
|
|
12
|
-
exports.stitch = stitch;
|
|
13
|
-
|
|
14
|
-
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
|
|
15
|
-
|
|
16
|
-
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
17
|
-
|
|
18
|
-
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
19
|
-
|
|
20
|
-
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
21
|
-
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ellipses = exports.calculateUTRs = exports.revlist = exports.dedupe = exports.stitch = void 0;
|
|
22
4
|
function stitch(subfeats, sequence) {
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
5
|
+
return subfeats.map(sub => sequence.slice(sub.start, sub.end)).join('');
|
|
6
|
+
}
|
|
7
|
+
exports.stitch = stitch;
|
|
8
|
+
// filter items if they have the same "ID" or location
|
|
29
9
|
function getItemId(feat) {
|
|
30
|
-
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
|
|
10
|
+
return `${feat.start}-${feat.end}`;
|
|
11
|
+
}
|
|
12
|
+
// filters if successive elements share same start/end
|
|
34
13
|
function dedupe(list) {
|
|
35
|
-
|
|
36
|
-
return !pos || getItemId(item) !== getItemId(ary[pos - 1]);
|
|
37
|
-
});
|
|
14
|
+
return list.filter((item, pos, ary) => !pos || getItemId(item) !== getItemId(ary[pos - 1]));
|
|
38
15
|
}
|
|
39
|
-
|
|
16
|
+
exports.dedupe = dedupe;
|
|
40
17
|
function revlist(list, seqlen) {
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
18
|
+
return list
|
|
19
|
+
.map(sub => ({
|
|
20
|
+
...sub,
|
|
21
|
+
start: seqlen - sub.end,
|
|
22
|
+
end: seqlen - sub.start,
|
|
23
|
+
}))
|
|
24
|
+
.sort((a, b) => a.start - b.start);
|
|
25
|
+
}
|
|
26
|
+
exports.revlist = revlist;
|
|
27
|
+
// calculates UTRs using impliedUTRs logic
|
|
52
28
|
function calculateUTRs(cds, exons) {
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
return
|
|
68
|
-
type: 'five_prime_UTR'
|
|
69
|
-
});
|
|
70
|
-
});
|
|
71
|
-
var threeUTRs = [{
|
|
72
|
-
start: lastCds.end,
|
|
73
|
-
end: lastCdsExon.end
|
|
74
|
-
}].concat((0, _toConsumableArray2.default)(exons.slice(lastCdsIdx + 1))).map(function (elt) {
|
|
75
|
-
return _objectSpread(_objectSpread({}, elt), {}, {
|
|
76
|
-
type: 'three_prime_UTR'
|
|
77
|
-
});
|
|
78
|
-
});
|
|
79
|
-
return [].concat((0, _toConsumableArray2.default)(fiveUTRs), (0, _toConsumableArray2.default)(threeUTRs));
|
|
29
|
+
const firstCds = cds[0];
|
|
30
|
+
const lastCds = cds[cds.length - 1];
|
|
31
|
+
const firstCdsIdx = exons.findIndex(exon => exon.end >= firstCds.start && exon.start <= firstCds.start);
|
|
32
|
+
const lastCdsIdx = exons.findIndex(exon => exon.end >= lastCds.end && exon.start <= lastCds.end);
|
|
33
|
+
const lastCdsExon = exons[lastCdsIdx];
|
|
34
|
+
const firstCdsExon = exons[firstCdsIdx];
|
|
35
|
+
const fiveUTRs = [
|
|
36
|
+
...exons.slice(0, firstCdsIdx),
|
|
37
|
+
{ start: firstCdsExon.start, end: firstCds.start },
|
|
38
|
+
].map(elt => ({ ...elt, type: 'five_prime_UTR' }));
|
|
39
|
+
const threeUTRs = [
|
|
40
|
+
{ start: lastCds.end, end: lastCdsExon.end },
|
|
41
|
+
...exons.slice(lastCdsIdx + 1),
|
|
42
|
+
].map(elt => ({ ...elt, type: 'three_prime_UTR' }));
|
|
43
|
+
return [...fiveUTRs, ...threeUTRs];
|
|
80
44
|
}
|
|
81
|
-
|
|
45
|
+
exports.calculateUTRs = calculateUTRs;
|
|
82
46
|
function ellipses(slug) {
|
|
83
|
-
|
|
84
|
-
}
|
|
47
|
+
return slug.length > 20 ? `${slug.slice(0, 20)}...` : slug;
|
|
48
|
+
}
|
|
49
|
+
exports.ellipses = ellipses;
|
package/CorePlugin.js
CHANGED
|
@@ -1,103 +1,64 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
9
17
|
});
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
var
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
var _BaseFeatureWidget = require("./BaseFeatureWidget");
|
|
29
|
-
|
|
30
|
-
var _Plugin2 = _interopRequireDefault(require("./Plugin"));
|
|
31
|
-
|
|
32
|
-
var coreRpcMethods = _interopRequireWildcard(require("./rpc/coreRpcMethods"));
|
|
33
|
-
|
|
34
|
-
var _AdapterType = _interopRequireDefault(require("./pluggableElementTypes/AdapterType"));
|
|
35
|
-
|
|
36
|
-
var _WidgetType = _interopRequireDefault(require("./pluggableElementTypes/WidgetType"));
|
|
37
|
-
|
|
38
|
-
var _CytobandAdapter = require("./data_adapters/CytobandAdapter");
|
|
39
|
-
|
|
40
|
-
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
41
|
-
|
|
42
|
-
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
43
|
-
|
|
44
|
-
function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2.default)(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2.default)(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2.default)(this, result); }; }
|
|
45
|
-
|
|
46
|
-
function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
|
|
47
|
-
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
25
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
26
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
27
|
+
};
|
|
28
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
29
|
+
const react_1 = require("react");
|
|
30
|
+
const BaseFeatureWidget_1 = require("./BaseFeatureWidget");
|
|
31
|
+
const Plugin_1 = __importDefault(require("./Plugin"));
|
|
32
|
+
const coreRpcMethods = __importStar(require("./rpc/coreRpcMethods"));
|
|
33
|
+
const AdapterType_1 = __importDefault(require("./pluggableElementTypes/AdapterType"));
|
|
34
|
+
const WidgetType_1 = __importDefault(require("./pluggableElementTypes/WidgetType"));
|
|
35
|
+
const CytobandAdapter_1 = require("./data_adapters/CytobandAdapter");
|
|
48
36
|
// the core plugin, which registers types that ALL JBrowse applications are
|
|
49
37
|
// expected to need.
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
function CorePlugin() {
|
|
56
|
-
var _this;
|
|
57
|
-
|
|
58
|
-
(0, _classCallCheck2.default)(this, CorePlugin);
|
|
59
|
-
|
|
60
|
-
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
|
|
61
|
-
args[_key] = arguments[_key];
|
|
38
|
+
class CorePlugin extends Plugin_1.default {
|
|
39
|
+
constructor() {
|
|
40
|
+
super(...arguments);
|
|
41
|
+
this.name = 'CorePlugin';
|
|
62
42
|
}
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
}
|
|
68
|
-
|
|
69
|
-
(0, _createClass2.default)(CorePlugin, [{
|
|
70
|
-
key: "install",
|
|
71
|
-
value: function install(pluginManager) {
|
|
72
|
-
// register all our core rpc methods
|
|
73
|
-
Object.values(coreRpcMethods).forEach(function (RpcMethod) {
|
|
74
|
-
pluginManager.addRpcMethod(function () {
|
|
75
|
-
return new RpcMethod(pluginManager);
|
|
76
|
-
});
|
|
77
|
-
});
|
|
78
|
-
pluginManager.addAdapterType(function () {
|
|
79
|
-
return new _AdapterType.default({
|
|
80
|
-
name: 'CytobandAdapter',
|
|
81
|
-
configSchema: _CytobandAdapter.configSchema,
|
|
82
|
-
AdapterClass: _CytobandAdapter.DataAdapter
|
|
43
|
+
install(pluginManager) {
|
|
44
|
+
// register all our core rpc methods
|
|
45
|
+
Object.values(coreRpcMethods).forEach(RpcMethod => {
|
|
46
|
+
pluginManager.addRpcMethod(() => new RpcMethod(pluginManager));
|
|
83
47
|
});
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
48
|
+
pluginManager.addAdapterType(() => new AdapterType_1.default({
|
|
49
|
+
name: 'CytobandAdapter',
|
|
50
|
+
configSchema: CytobandAdapter_1.configSchema,
|
|
51
|
+
AdapterClass: CytobandAdapter_1.DataAdapter,
|
|
52
|
+
}));
|
|
53
|
+
pluginManager.addWidgetType(() => {
|
|
54
|
+
return new WidgetType_1.default({
|
|
55
|
+
name: 'BaseFeatureWidget',
|
|
56
|
+
heading: 'Feature details',
|
|
57
|
+
configSchema: BaseFeatureWidget_1.configSchema,
|
|
58
|
+
stateModel: (0, BaseFeatureWidget_1.stateModelFactory)(pluginManager),
|
|
59
|
+
ReactComponent: (0, react_1.lazy)(() => Promise.resolve().then(() => __importStar(require('./BaseFeatureWidget/BaseFeatureDetail')))),
|
|
94
60
|
});
|
|
95
|
-
})
|
|
96
61
|
});
|
|
97
|
-
});
|
|
98
62
|
}
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
}(_Plugin2.default);
|
|
102
|
-
|
|
103
|
-
exports.default = CorePlugin;
|
|
63
|
+
}
|
|
64
|
+
exports.default = CorePlugin;
|
package/Plugin.js
CHANGED
|
@@ -1,38 +1,13 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
|
|
3
|
-
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
-
|
|
5
|
-
Object.defineProperty(exports, "__esModule", {
|
|
6
|
-
value: true
|
|
7
|
-
});
|
|
8
|
-
exports.default = void 0;
|
|
9
|
-
|
|
10
|
-
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
|
11
|
-
|
|
12
|
-
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
|
13
|
-
|
|
14
|
-
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
15
|
-
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
16
3
|
/**
|
|
17
4
|
* base class for a JBrowse plugin
|
|
18
5
|
*/
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
(
|
|
24
|
-
(
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
(0, _createClass2.default)(Plugin, [{
|
|
29
|
-
key: "install",
|
|
30
|
-
value: function install(_pluginManager) {}
|
|
31
|
-
}, {
|
|
32
|
-
key: "configure",
|
|
33
|
-
value: function configure(_pluginManager) {}
|
|
34
|
-
}]);
|
|
35
|
-
return Plugin;
|
|
36
|
-
}();
|
|
37
|
-
|
|
38
|
-
exports.default = Plugin;
|
|
6
|
+
class Plugin {
|
|
7
|
+
constructor() {
|
|
8
|
+
this.configurationSchema = undefined;
|
|
9
|
+
}
|
|
10
|
+
install(_pluginManager) { }
|
|
11
|
+
configure(_pluginManager) { }
|
|
12
|
+
}
|
|
13
|
+
exports.default = Plugin;
|