@jbrowse/core 1.5.9 → 1.6.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.js +91 -78
- package/BaseFeatureWidget/SequenceFeatureDetails.js +64 -56
- package/BaseFeatureWidget/SequenceFeatureDetails.test.js +9 -9
- package/BaseFeatureWidget/index.js +1 -1
- package/BaseFeatureWidget/index.test.js +4 -4
- package/BaseFeatureWidget/util.js +13 -9
- package/CorePlugin.js +32 -20
- package/Plugin.js +13 -11
- package/PluginLoader.js +37 -32
- package/PluginManager.d.ts +8 -5
- package/PluginManager.js +142 -53
- package/ReExports/index.js +4 -4
- package/ReExports/list.js +2 -2
- package/ReExports/material-ui-colors.js +20 -20
- package/ReExports/modules.d.ts +7 -5
- package/ReExports/modules.js +51 -47
- package/TextSearch/BaseResults.js +34 -24
- package/TextSearch/BaseResults.test.js +7 -3
- package/TextSearch/TextSearchManager.js +16 -14
- package/assemblyManager/assembly.js +38 -33
- package/assemblyManager/assemblyConfigSchema.js +2 -2
- package/assemblyManager/assemblyManager.js +19 -15
- package/assemblyManager/index.js +3 -3
- package/babel.config.d.ts +15 -0
- package/babel.config.js +19 -0
- package/configuration/configurationSchema.js +19 -17
- package/configuration/configurationSlot.js +11 -11
- package/configuration/configurationSlot.test.js +5 -5
- package/configuration/index.d.ts +1 -0
- package/configuration/util.js +5 -5
- package/data_adapters/BaseAdapter.d.ts +15 -3
- package/data_adapters/BaseAdapter.js +215 -61
- package/data_adapters/BaseAdapter.test.js +29 -23
- package/data_adapters/CytobandAdapter.d.ts +1 -1
- package/data_adapters/CytobandAdapter.js +24 -18
- package/data_adapters/dataAdapterCache.js +8 -8
- package/package.json +3 -3
- package/pluggableElementTypes/AdapterType.js +30 -21
- package/pluggableElementTypes/ConnectionType.js +28 -18
- package/pluggableElementTypes/DisplayType.js +27 -17
- package/pluggableElementTypes/InternetAccountType.js +24 -14
- package/pluggableElementTypes/PluggableElementBase.js +10 -8
- package/pluggableElementTypes/RpcMethodType.d.ts +1 -1
- package/pluggableElementTypes/RpcMethodType.js +140 -117
- package/pluggableElementTypes/RpcMethodType.test.js +22 -16
- package/pluggableElementTypes/TextSearchAdapterType.js +25 -15
- package/pluggableElementTypes/TrackType.js +25 -15
- package/pluggableElementTypes/ViewType.js +25 -15
- package/pluggableElementTypes/WidgetType.js +27 -17
- package/pluggableElementTypes/index.js +11 -11
- package/pluggableElementTypes/models/BaseConnectionModelFactory.js +5 -5
- package/pluggableElementTypes/models/BaseDisplayModel.js +8 -5
- package/pluggableElementTypes/models/BaseTrackModel.js +11 -8
- package/pluggableElementTypes/models/BaseViewModel.js +3 -3
- package/pluggableElementTypes/models/InternetAccountModel.d.ts +1 -1
- package/pluggableElementTypes/models/InternetAccountModel.js +4 -4
- package/pluggableElementTypes/models/baseConnectionConfig.js +2 -2
- package/pluggableElementTypes/models/baseTrackConfig.js +7 -4
- package/pluggableElementTypes/models/index.js +4 -4
- package/pluggableElementTypes/renderers/BoxRendererType.js +48 -38
- package/pluggableElementTypes/renderers/CircularChordRendererType.js +18 -12
- package/pluggableElementTypes/renderers/ComparativeServerSideRendererType.js +34 -26
- package/pluggableElementTypes/renderers/FeatureRendererType.js +45 -35
- package/pluggableElementTypes/renderers/RendererType.js +30 -20
- package/pluggableElementTypes/renderers/ServerSideRenderedContent.js +12 -8
- package/pluggableElementTypes/renderers/ServerSideRendererType.d.ts +1 -1
- package/pluggableElementTypes/renderers/ServerSideRendererType.js +44 -32
- package/pluggableElementTypes/renderers/index.js +8 -8
- package/pluggableElementTypes/renderers/util/serializableFilterChain.js +10 -8
- package/pluggableElementTypes/renderers/util/serializableFilterChain.test.js +2 -2
- package/rpc/BaseRpcDriver.js +42 -37
- package/rpc/BaseRpcDriver.test.js +62 -48
- package/rpc/MainThreadRpcDriver.js +31 -21
- package/rpc/RpcManager.js +18 -16
- package/rpc/WebWorkerRpcDriver.js +37 -27
- package/rpc/configSchema.js +2 -2
- package/rpc/coreRpcMethods.d.ts +16 -0
- package/rpc/coreRpcMethods.js +247 -120
- package/rpc/remoteAbortSignals.js +3 -3
- package/ui/AboutDialog.js +20 -16
- package/ui/App.js +42 -38
- package/ui/AssemblySelector.d.ts +1 -1
- package/ui/AssemblySelector.js +6 -6
- package/ui/Drawer.js +7 -7
- package/ui/DrawerWidget.d.ts +1 -1
- package/ui/DrawerWidget.js +37 -33
- package/ui/DropDownMenu.js +21 -9
- package/ui/EditableTypography.js +30 -19
- package/ui/ErrorMessage.js +5 -5
- package/ui/FactoryResetDialog.js +8 -8
- package/ui/FatalErrorDialog.js +29 -12
- package/ui/FatalErrorDialog.test.js +10 -10
- package/ui/FileSelector/FileSelector.js +42 -32
- package/ui/FileSelector/LocalFileChooser.js +9 -9
- package/ui/FileSelector/UrlChooser.js +4 -4
- package/ui/FileSelector/index.js +4 -4
- package/ui/Icons.js +9 -9
- package/ui/Logo.js +19 -19
- package/ui/Menu.js +46 -35
- package/ui/NewSessionCards.js +29 -19
- package/ui/PrerenderedCanvas.js +27 -10
- package/ui/ResizeHandle.js +17 -10
- package/ui/SanitizedHTML.js +5 -5
- package/ui/SanitizedHTML.test.js +4 -4
- package/ui/Snackbar.js +16 -12
- package/ui/SnackbarModel.js +1 -1
- package/ui/Tooltip.js +11 -7
- package/ui/ViewContainer.d.ts +2 -5
- package/ui/ViewContainer.js +44 -49
- package/ui/index.d.ts +1 -0
- package/ui/index.js +26 -13
- package/ui/theme.js +15 -11
- package/util/Base1DViewModel.d.ts +14 -12
- package/util/Base1DViewModel.js +51 -55
- package/util/Base1DViewModel.test.js +5 -5
- package/util/QuickLRU.js +30 -26
- package/util/aborting.js +25 -15
- package/util/analytics.d.ts +1 -0
- package/util/analytics.js +14 -6
- package/util/blockTypes.js +48 -36
- package/util/calculateDynamicBlocks.js +4 -4
- package/util/calculateDynamicBlocks.test.js +14 -10
- package/util/calculateStaticBlocks.js +1 -1
- package/util/calculateStaticBlocks.test.js +15 -15
- package/util/compositeMap.js +30 -26
- package/util/idMaker.js +4 -4
- package/util/index.d.ts +23 -1
- package/util/index.js +130 -36
- package/util/index.test.js +11 -7
- package/util/io/RemoteFileWithRangeCache.js +40 -28
- package/util/io/index.js +5 -5
- package/util/jexl.js +5 -5
- package/util/jexlStrings.js +2 -2
- package/util/jexlStrings.test.js +2 -2
- package/util/layouts/GranularRectLayout.js +33 -27
- package/util/layouts/GranularRectLayout.test.js +10 -10
- package/util/layouts/MultiLayout.js +19 -13
- package/util/layouts/PrecomputedLayout.js +16 -14
- package/util/layouts/PrecomputedMultiLayout.js +23 -17
- package/util/layouts/SceneGraph.js +18 -12
- package/util/layouts/index.js +6 -6
- package/util/offscreenCanvasPonyfill.js +30 -28
- package/util/offscreenCanvasUtils.js +5 -5
- package/util/range.test.js +20 -20
- package/util/rxjs.js +2 -2
- package/util/simpleFeature.js +23 -18
- package/util/simpleFeature.test.js +3 -3
- package/util/stats.d.ts +1 -1
- package/util/stats.js +10 -6
- package/util/stats.test.js +15 -15
- package/util/tracks.js +1 -3
- package/util/types/index.d.ts +1 -1
- package/util/types/index.js +36 -31
- package/util/types/mst.js +19 -15
- package/util/when.js +5 -5
package/ui/ViewContainer.js
CHANGED
|
@@ -1,38 +1,46 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
4
|
|
|
5
|
-
var
|
|
5
|
+
var _typeof = require("@babel/runtime/helpers/typeof");
|
|
6
6
|
|
|
7
7
|
Object.defineProperty(exports, "__esModule", {
|
|
8
8
|
value: true
|
|
9
9
|
});
|
|
10
|
-
exports
|
|
10
|
+
exports.default = void 0;
|
|
11
11
|
|
|
12
|
-
var
|
|
12
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
13
13
|
|
|
14
|
-
var
|
|
14
|
+
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
|
15
15
|
|
|
16
|
-
var
|
|
17
|
-
|
|
18
|
-
var _Close = _interopRequireDefault(require("@material-ui/icons/Close"));
|
|
16
|
+
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
19
17
|
|
|
20
|
-
var
|
|
18
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
21
19
|
|
|
22
|
-
var
|
|
20
|
+
var _core = require("@material-ui/core");
|
|
23
21
|
|
|
24
22
|
var _mobxReact = require("mobx-react");
|
|
25
23
|
|
|
26
24
|
var _mobxStateTree = require("mobx-state-tree");
|
|
27
25
|
|
|
28
|
-
var
|
|
26
|
+
var _reactSizeme = require("react-sizeme");
|
|
27
|
+
|
|
28
|
+
var _Close = _interopRequireDefault(require("@material-ui/icons/Close"));
|
|
29
29
|
|
|
30
|
-
var
|
|
30
|
+
var _Menu = _interopRequireDefault(require("@material-ui/icons/Menu"));
|
|
31
31
|
|
|
32
32
|
var _EditableTypography = _interopRequireDefault(require("./EditableTypography"));
|
|
33
33
|
|
|
34
34
|
var _Menu2 = _interopRequireDefault(require("./Menu"));
|
|
35
35
|
|
|
36
|
+
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); }
|
|
37
|
+
|
|
38
|
+
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; }
|
|
39
|
+
|
|
40
|
+
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; }
|
|
41
|
+
|
|
42
|
+
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; }
|
|
43
|
+
|
|
36
44
|
var useStyles = (0, _core.makeStyles)(function (theme) {
|
|
37
45
|
return {
|
|
38
46
|
viewContainer: {
|
|
@@ -48,7 +56,7 @@ var useStyles = (0, _core.makeStyles)(function (theme) {
|
|
|
48
56
|
},
|
|
49
57
|
iconRoot: {
|
|
50
58
|
'&:hover': {
|
|
51
|
-
backgroundColor: (0,
|
|
59
|
+
backgroundColor: (0, _core.alpha)(theme.palette.secondary.contrastText, theme.palette.action.hoverOpacity),
|
|
52
60
|
'@media (hover: none)': {
|
|
53
61
|
backgroundColor: 'transparent'
|
|
54
62
|
}
|
|
@@ -78,14 +86,14 @@ var ViewMenu = (0, _mobxReact.observer)(function (_ref) {
|
|
|
78
86
|
IconProps = _ref.IconProps;
|
|
79
87
|
|
|
80
88
|
var _useState = (0, _react.useState)(),
|
|
81
|
-
_useState2 = (0, _slicedToArray2
|
|
89
|
+
_useState2 = (0, _slicedToArray2.default)(_useState, 2),
|
|
82
90
|
anchorEl = _useState2[0],
|
|
83
91
|
setAnchorEl = _useState2[1];
|
|
84
92
|
|
|
85
93
|
var menuItems = model.menuItems; // <=1.3.3 didn't use a function
|
|
86
94
|
|
|
87
95
|
var items = typeof menuItems === 'function' ? menuItems() : menuItems;
|
|
88
|
-
return items !== null && items !== void 0 && items.length ? /*#__PURE__*/_react
|
|
96
|
+
return items !== null && items !== void 0 && items.length ? /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_core.IconButton, (0, _extends2.default)({}, IconButtonProps, {
|
|
89
97
|
"aria-label": "more",
|
|
90
98
|
"aria-controls": "view-menu",
|
|
91
99
|
"aria-haspopup": "true",
|
|
@@ -93,7 +101,7 @@ var ViewMenu = (0, _mobxReact.observer)(function (_ref) {
|
|
|
93
101
|
setAnchorEl(event.currentTarget);
|
|
94
102
|
},
|
|
95
103
|
"data-testid": "view_menu_icon"
|
|
96
|
-
}), /*#__PURE__*/_react
|
|
104
|
+
}), /*#__PURE__*/_react.default.createElement(_Menu.default, IconProps)), /*#__PURE__*/_react.default.createElement(_Menu2.default, {
|
|
97
105
|
anchorEl: anchorEl,
|
|
98
106
|
open: Boolean(anchorEl),
|
|
99
107
|
onMenuItemClick: function onMenuItemClick(_event, callback) {
|
|
@@ -107,28 +115,18 @@ var ViewMenu = (0, _mobxReact.observer)(function (_ref) {
|
|
|
107
115
|
})) : null;
|
|
108
116
|
});
|
|
109
117
|
|
|
110
|
-
var _default = (0,
|
|
118
|
+
var _default = (0, _reactSizeme.withSize)()((0, _mobxReact.observer)(function (_ref2) {
|
|
111
119
|
var view = _ref2.view,
|
|
112
120
|
onClose = _ref2.onClose,
|
|
113
121
|
style = _ref2.style,
|
|
114
122
|
children = _ref2.children,
|
|
115
|
-
|
|
116
|
-
measureRef = _ref2.measureRef;
|
|
123
|
+
width = _ref2.size.width;
|
|
117
124
|
var classes = useStyles();
|
|
118
125
|
var theme = (0, _core.useTheme)();
|
|
119
126
|
var padWidth = theme.spacing(1);
|
|
120
|
-
var width = 0;
|
|
121
|
-
|
|
122
|
-
if (contentRect.bounds) {
|
|
123
|
-
;
|
|
124
|
-
width = contentRect.bounds.width;
|
|
125
|
-
}
|
|
126
|
-
|
|
127
127
|
(0, _react.useEffect)(function () {
|
|
128
|
-
if (width) {
|
|
129
|
-
|
|
130
|
-
view.setWidth(width - padWidth * 2);
|
|
131
|
-
}
|
|
128
|
+
if (width && (0, _mobxStateTree.isAlive)(view)) {
|
|
129
|
+
view.setWidth(width - padWidth * 2);
|
|
132
130
|
}
|
|
133
131
|
}, [padWidth, view, width]);
|
|
134
132
|
var scrollRef = (0, _react.useRef)(null); // scroll the view into view when first mounted
|
|
@@ -136,27 +134,24 @@ var _default = (0, _reactMeasure.withContentRect)('bounds')((0, _mobxReact.obser
|
|
|
136
134
|
// the empty array second param
|
|
137
135
|
|
|
138
136
|
(0, _react.useEffect)(function () {
|
|
139
|
-
var _scrollRef$current;
|
|
137
|
+
var _scrollRef$current, _scrollRef$current$sc;
|
|
140
138
|
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
});
|
|
145
|
-
}
|
|
139
|
+
(_scrollRef$current = scrollRef.current) === null || _scrollRef$current === void 0 ? void 0 : (_scrollRef$current$sc = _scrollRef$current.scrollIntoView) === null || _scrollRef$current$sc === void 0 ? void 0 : _scrollRef$current$sc.call(_scrollRef$current, {
|
|
140
|
+
block: 'center'
|
|
141
|
+
});
|
|
146
142
|
}, []);
|
|
147
|
-
return /*#__PURE__*/_react
|
|
143
|
+
return /*#__PURE__*/_react.default.createElement(_core.Paper, {
|
|
148
144
|
elevation: 12,
|
|
149
|
-
ref: measureRef,
|
|
150
145
|
className: classes.viewContainer,
|
|
151
|
-
style: (
|
|
146
|
+
style: _objectSpread(_objectSpread({}, style), {}, {
|
|
152
147
|
padding: "0px ".concat(padWidth, "px ").concat(padWidth, "px")
|
|
153
148
|
})
|
|
154
|
-
}, /*#__PURE__*/_react
|
|
149
|
+
}, /*#__PURE__*/_react.default.createElement("div", {
|
|
155
150
|
ref: scrollRef,
|
|
156
151
|
style: {
|
|
157
152
|
display: 'flex'
|
|
158
153
|
}
|
|
159
|
-
}, /*#__PURE__*/_react
|
|
154
|
+
}, /*#__PURE__*/_react.default.createElement(ViewMenu, {
|
|
160
155
|
model: view,
|
|
161
156
|
IconButtonProps: {
|
|
162
157
|
classes: {
|
|
@@ -167,12 +162,12 @@ var _default = (0, _reactMeasure.withContentRect)('bounds')((0, _mobxReact.obser
|
|
|
167
162
|
IconProps: {
|
|
168
163
|
className: classes.icon
|
|
169
164
|
}
|
|
170
|
-
}), /*#__PURE__*/_react
|
|
165
|
+
}), /*#__PURE__*/_react.default.createElement("div", {
|
|
171
166
|
className: classes.grow
|
|
172
|
-
}), /*#__PURE__*/_react
|
|
167
|
+
}), /*#__PURE__*/_react.default.createElement(_core.Tooltip, {
|
|
173
168
|
title: "Rename view",
|
|
174
169
|
arrow: true
|
|
175
|
-
}, /*#__PURE__*/_react
|
|
170
|
+
}, /*#__PURE__*/_react.default.createElement(_EditableTypography.default, {
|
|
176
171
|
value: view.displayName || ( // @ts-ignore
|
|
177
172
|
view.assemblyNames ? // @ts-ignore
|
|
178
173
|
view.assemblyNames.join(',') : 'Untitled view'),
|
|
@@ -186,18 +181,18 @@ var _default = (0, _reactMeasure.withContentRect)('bounds')((0, _mobxReact.obser
|
|
|
186
181
|
inputRoot: classes.inputRoot,
|
|
187
182
|
inputFocused: classes.inputFocused
|
|
188
183
|
}
|
|
189
|
-
})), /*#__PURE__*/_react
|
|
184
|
+
})), /*#__PURE__*/_react.default.createElement("div", {
|
|
190
185
|
className: classes.grow
|
|
191
|
-
}), /*#__PURE__*/_react
|
|
186
|
+
}), /*#__PURE__*/_react.default.createElement(_core.IconButton, {
|
|
192
187
|
"data-testid": "close_view",
|
|
193
188
|
classes: {
|
|
194
189
|
root: classes.iconRoot
|
|
195
190
|
},
|
|
196
191
|
edge: "end",
|
|
197
192
|
onClick: onClose
|
|
198
|
-
}, /*#__PURE__*/_react
|
|
193
|
+
}, /*#__PURE__*/_react.default.createElement(_Close.default, {
|
|
199
194
|
className: classes.icon
|
|
200
|
-
}))), /*#__PURE__*/_react
|
|
195
|
+
}))), /*#__PURE__*/_react.default.createElement(_core.Paper, null, children));
|
|
201
196
|
}));
|
|
202
197
|
|
|
203
|
-
exports
|
|
198
|
+
exports.default = _default;
|
package/ui/index.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
export * from './theme';
|
|
2
2
|
export { LogoFull, Logomark } from './Logo';
|
|
3
3
|
export { default as App } from './App';
|
|
4
|
+
export { default as ErrorMessage } from './ErrorMessage';
|
|
4
5
|
export { default as FileSelector } from './FileSelector';
|
|
5
6
|
export { default as PrerenderedCanvas } from './PrerenderedCanvas';
|
|
6
7
|
export { default as ResizeHandle } from './ResizeHandle';
|
package/ui/index.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
4
|
|
|
5
|
-
var
|
|
5
|
+
var _typeof = require("@babel/runtime/helpers/typeof");
|
|
6
6
|
|
|
7
7
|
Object.defineProperty(exports, "__esModule", {
|
|
8
8
|
value: true
|
|
@@ -11,6 +11,7 @@ var _exportNames = {
|
|
|
11
11
|
LogoFull: true,
|
|
12
12
|
Logomark: true,
|
|
13
13
|
App: true,
|
|
14
|
+
ErrorMessage: true,
|
|
14
15
|
FileSelector: true,
|
|
15
16
|
PrerenderedCanvas: true,
|
|
16
17
|
ResizeHandle: true,
|
|
@@ -24,31 +25,37 @@ var _exportNames = {
|
|
|
24
25
|
Object.defineProperty(exports, "App", {
|
|
25
26
|
enumerable: true,
|
|
26
27
|
get: function get() {
|
|
27
|
-
return _App
|
|
28
|
+
return _App.default;
|
|
28
29
|
}
|
|
29
30
|
});
|
|
30
31
|
Object.defineProperty(exports, "EditableTypography", {
|
|
31
32
|
enumerable: true,
|
|
32
33
|
get: function get() {
|
|
33
|
-
return _EditableTypography
|
|
34
|
+
return _EditableTypography.default;
|
|
35
|
+
}
|
|
36
|
+
});
|
|
37
|
+
Object.defineProperty(exports, "ErrorMessage", {
|
|
38
|
+
enumerable: true,
|
|
39
|
+
get: function get() {
|
|
40
|
+
return _ErrorMessage.default;
|
|
34
41
|
}
|
|
35
42
|
});
|
|
36
43
|
Object.defineProperty(exports, "FactoryResetDialog", {
|
|
37
44
|
enumerable: true,
|
|
38
45
|
get: function get() {
|
|
39
|
-
return _FactoryResetDialog
|
|
46
|
+
return _FactoryResetDialog.default;
|
|
40
47
|
}
|
|
41
48
|
});
|
|
42
49
|
Object.defineProperty(exports, "FatalErrorDialog", {
|
|
43
50
|
enumerable: true,
|
|
44
51
|
get: function get() {
|
|
45
|
-
return _FatalErrorDialog
|
|
52
|
+
return _FatalErrorDialog.default;
|
|
46
53
|
}
|
|
47
54
|
});
|
|
48
55
|
Object.defineProperty(exports, "FileSelector", {
|
|
49
56
|
enumerable: true,
|
|
50
57
|
get: function get() {
|
|
51
|
-
return _FileSelector
|
|
58
|
+
return _FileSelector.default;
|
|
52
59
|
}
|
|
53
60
|
});
|
|
54
61
|
Object.defineProperty(exports, "LogoFull", {
|
|
@@ -66,31 +73,31 @@ Object.defineProperty(exports, "Logomark", {
|
|
|
66
73
|
Object.defineProperty(exports, "Menu", {
|
|
67
74
|
enumerable: true,
|
|
68
75
|
get: function get() {
|
|
69
|
-
return _Menu
|
|
76
|
+
return _Menu.default;
|
|
70
77
|
}
|
|
71
78
|
});
|
|
72
79
|
Object.defineProperty(exports, "PrerenderedCanvas", {
|
|
73
80
|
enumerable: true,
|
|
74
81
|
get: function get() {
|
|
75
|
-
return _PrerenderedCanvas
|
|
82
|
+
return _PrerenderedCanvas.default;
|
|
76
83
|
}
|
|
77
84
|
});
|
|
78
85
|
Object.defineProperty(exports, "ResizeHandle", {
|
|
79
86
|
enumerable: true,
|
|
80
87
|
get: function get() {
|
|
81
|
-
return _ResizeHandle
|
|
88
|
+
return _ResizeHandle.default;
|
|
82
89
|
}
|
|
83
90
|
});
|
|
84
91
|
Object.defineProperty(exports, "SanitizedHTML", {
|
|
85
92
|
enumerable: true,
|
|
86
93
|
get: function get() {
|
|
87
|
-
return _SanitizedHTML
|
|
94
|
+
return _SanitizedHTML.default;
|
|
88
95
|
}
|
|
89
96
|
});
|
|
90
97
|
Object.defineProperty(exports, "Tooltip", {
|
|
91
98
|
enumerable: true,
|
|
92
99
|
get: function get() {
|
|
93
|
-
return _Tooltip
|
|
100
|
+
return _Tooltip.default;
|
|
94
101
|
}
|
|
95
102
|
});
|
|
96
103
|
|
|
@@ -112,6 +119,8 @@ var _Logo = require("./Logo");
|
|
|
112
119
|
|
|
113
120
|
var _App = _interopRequireDefault(require("./App"));
|
|
114
121
|
|
|
122
|
+
var _ErrorMessage = _interopRequireDefault(require("./ErrorMessage"));
|
|
123
|
+
|
|
115
124
|
var _FileSelector = _interopRequireDefault(require("./FileSelector"));
|
|
116
125
|
|
|
117
126
|
var _PrerenderedCanvas = _interopRequireDefault(require("./PrerenderedCanvas"));
|
|
@@ -140,4 +149,8 @@ Object.keys(_Menu).forEach(function (key) {
|
|
|
140
149
|
});
|
|
141
150
|
});
|
|
142
151
|
|
|
143
|
-
var _SanitizedHTML = _interopRequireDefault(require("./SanitizedHTML"));
|
|
152
|
+
var _SanitizedHTML = _interopRequireDefault(require("./SanitizedHTML"));
|
|
153
|
+
|
|
154
|
+
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); }
|
|
155
|
+
|
|
156
|
+
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; }
|
package/ui/theme.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault")
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
4
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", {
|
|
6
6
|
value: true
|
|
@@ -10,7 +10,7 @@ exports.createJBrowseDefaultProps = createJBrowseDefaultProps;
|
|
|
10
10
|
exports.createJBrowseTheme = createJBrowseTheme;
|
|
11
11
|
exports.jbrowseDefaultPalette = exports.jbrowseBaseTheme = void 0;
|
|
12
12
|
|
|
13
|
-
var
|
|
13
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
14
14
|
|
|
15
15
|
var _colors = require("@material-ui/core/colors");
|
|
16
16
|
|
|
@@ -20,6 +20,10 @@ var _createPalette = require("@material-ui/core/styles/createPalette");
|
|
|
20
20
|
|
|
21
21
|
var _deepmerge = _interopRequireDefault(require("deepmerge"));
|
|
22
22
|
|
|
23
|
+
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; }
|
|
24
|
+
|
|
25
|
+
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; }
|
|
26
|
+
|
|
23
27
|
var midnight = '#0D233F';
|
|
24
28
|
var grape = '#721E63';
|
|
25
29
|
var forest = '#135560';
|
|
@@ -111,7 +115,7 @@ createJBrowseDefaultProps() {
|
|
|
111
115
|
|
|
112
116
|
function createJBrowseDefaultOverrides() {
|
|
113
117
|
var palette = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
114
|
-
var generatedPalette = (0, _deepmerge
|
|
118
|
+
var generatedPalette = (0, _deepmerge.default)(jbrowseDefaultPalette, palette);
|
|
115
119
|
return {
|
|
116
120
|
MuiIconButton: {
|
|
117
121
|
colorSecondary: {
|
|
@@ -197,24 +201,24 @@ function createJBrowseTheme(theme) {
|
|
|
197
201
|
}
|
|
198
202
|
|
|
199
203
|
if ((_theme$palette = theme.palette) !== null && _theme$palette !== void 0 && _theme$palette.tertiary) {
|
|
200
|
-
theme = (
|
|
201
|
-
palette: (
|
|
204
|
+
theme = _objectSpread(_objectSpread({}, theme), {}, {
|
|
205
|
+
palette: _objectSpread(_objectSpread({}, theme.palette), {}, {
|
|
202
206
|
tertiary: refTheme.palette.augmentColor(theme.palette.tertiary)
|
|
203
207
|
})
|
|
204
208
|
});
|
|
205
209
|
}
|
|
206
210
|
|
|
207
211
|
if ((_theme$palette2 = theme.palette) !== null && _theme$palette2 !== void 0 && _theme$palette2.quaternary) {
|
|
208
|
-
theme = (
|
|
209
|
-
palette: (
|
|
212
|
+
theme = _objectSpread(_objectSpread({}, theme), {}, {
|
|
213
|
+
palette: _objectSpread(_objectSpread({}, theme.palette), {}, {
|
|
210
214
|
quaternary: refTheme.palette.augmentColor(theme.palette.quaternary)
|
|
211
215
|
})
|
|
212
216
|
});
|
|
213
217
|
}
|
|
214
218
|
|
|
215
|
-
theme = (
|
|
216
|
-
props: (0, _deepmerge
|
|
217
|
-
overrides: (0, _deepmerge
|
|
219
|
+
theme = _objectSpread(_objectSpread({}, theme), {}, {
|
|
220
|
+
props: (0, _deepmerge.default)(createJBrowseDefaultProps(), theme.props || {}),
|
|
221
|
+
overrides: (0, _deepmerge.default)(createJBrowseDefaultOverrides(theme.palette), theme.overrides || {})
|
|
218
222
|
});
|
|
219
|
-
return (0, _styles.createTheme)((0, _deepmerge
|
|
223
|
+
return (0, _styles.createTheme)((0, _deepmerge.default)(jbrowseBaseTheme, theme));
|
|
220
224
|
}
|
|
@@ -36,18 +36,6 @@ declare const Base1DView: import("mobx-state-tree").IModelType<{
|
|
|
36
36
|
readonly maxOffset: number;
|
|
37
37
|
readonly minOffset: number;
|
|
38
38
|
readonly totalBp: number;
|
|
39
|
-
/**
|
|
40
|
-
* calculates the Px at which coord is found.
|
|
41
|
-
*
|
|
42
|
-
* @param refName - string, refName of region
|
|
43
|
-
* @param coord - number, bp to be translated to Px
|
|
44
|
-
* @param regionNumber - number, index of displayedRegion in displayedRegions array
|
|
45
|
-
*/
|
|
46
|
-
bpToPx({ refName, coord, regionNumber, }: {
|
|
47
|
-
refName: string;
|
|
48
|
-
coord: number;
|
|
49
|
-
regionNumber?: number | undefined;
|
|
50
|
-
}): number | undefined;
|
|
51
39
|
pxToBp(px: number): {
|
|
52
40
|
oob: boolean;
|
|
53
41
|
coord: number;
|
|
@@ -72,6 +60,18 @@ declare const Base1DView: import("mobx-state-tree").IModelType<{
|
|
|
72
60
|
readonly dynamicBlocks: import("./blockTypes").BlockSet;
|
|
73
61
|
readonly staticBlocks: import("./blockTypes").BlockSet;
|
|
74
62
|
readonly currBp: number;
|
|
63
|
+
/**
|
|
64
|
+
* calculates the Px at which coord is found.
|
|
65
|
+
*
|
|
66
|
+
* @param refName - string, refName of region
|
|
67
|
+
* @param coord - number, bp to be translated to Px
|
|
68
|
+
* @param regionNumber - number, index of displayedRegion in displayedRegions array
|
|
69
|
+
*/
|
|
70
|
+
bpToPx({ refName, coord, regionNumber, }: {
|
|
71
|
+
refName: string;
|
|
72
|
+
coord: number;
|
|
73
|
+
regionNumber?: number | undefined;
|
|
74
|
+
}): number | undefined;
|
|
75
75
|
} & {
|
|
76
76
|
setFeatures(features: Feature[]): void;
|
|
77
77
|
zoomToDisplayedRegions(leftPx: BpOffset | undefined, rightPx: BpOffset | undefined): void;
|
|
@@ -87,6 +87,8 @@ declare const Base1DView: import("mobx-state-tree").IModelType<{
|
|
|
87
87
|
zoomOut(): void;
|
|
88
88
|
zoomIn(): void;
|
|
89
89
|
zoomTo(newBpPerPx: number, offset?: number): void;
|
|
90
|
+
scrollTo(offsetPx: number): number;
|
|
91
|
+
centerAt(bp: number, refName: string, regionIndex: number): void;
|
|
90
92
|
scroll(distance: number): number;
|
|
91
93
|
}, import("mobx-state-tree")._NotCustomized, import("mobx-state-tree")._NotCustomized>;
|
|
92
94
|
export declare type Base1DViewStateModel = typeof Base1DView;
|
package/util/Base1DViewModel.js
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault")
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
4
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", {
|
|
6
6
|
value: true
|
|
7
7
|
});
|
|
8
|
-
exports
|
|
8
|
+
exports.default = void 0;
|
|
9
9
|
|
|
10
|
-
var
|
|
10
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
11
11
|
|
|
12
12
|
var _mobxStateTree = require("mobx-state-tree");
|
|
13
13
|
|
|
@@ -19,13 +19,17 @@ var _calculateDynamicBlocks = _interopRequireDefault(require("./calculateDynamic
|
|
|
19
19
|
|
|
20
20
|
var _calculateStaticBlocks = _interopRequireDefault(require("./calculateStaticBlocks"));
|
|
21
21
|
|
|
22
|
+
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; }
|
|
23
|
+
|
|
24
|
+
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; }
|
|
25
|
+
|
|
22
26
|
var Base1DView = _mobxStateTree.types.model('Base1DView', {
|
|
23
27
|
displayedRegions: _mobxStateTree.types.array(_mst.Region),
|
|
24
28
|
bpPerPx: 0,
|
|
25
29
|
offsetPx: 0,
|
|
26
30
|
interRegionPaddingWidth: _mobxStateTree.types.optional(_mobxStateTree.types.number, 0),
|
|
27
31
|
minimumBlockWidth: _mobxStateTree.types.optional(_mobxStateTree.types.number, 0)
|
|
28
|
-
})
|
|
32
|
+
}).volatile(function () {
|
|
29
33
|
return {
|
|
30
34
|
features: undefined,
|
|
31
35
|
volatileWidth: 0
|
|
@@ -72,50 +76,6 @@ var Base1DView = _mobxStateTree.types.model('Base1DView', {
|
|
|
72
76
|
}, 0);
|
|
73
77
|
},
|
|
74
78
|
|
|
75
|
-
/**
|
|
76
|
-
* calculates the Px at which coord is found.
|
|
77
|
-
*
|
|
78
|
-
* @param refName - string, refName of region
|
|
79
|
-
* @param coord - number, bp to be translated to Px
|
|
80
|
-
* @param regionNumber - number, index of displayedRegion in displayedRegions array
|
|
81
|
-
*/
|
|
82
|
-
bpToPx: function bpToPx(_ref) {
|
|
83
|
-
var _this = this;
|
|
84
|
-
|
|
85
|
-
var refName = _ref.refName,
|
|
86
|
-
coord = _ref.coord,
|
|
87
|
-
regionNumber = _ref.regionNumber;
|
|
88
|
-
var offsetBp = 0;
|
|
89
|
-
var interRegionPaddingBp = self.interRegionPaddingWidth * self.bpPerPx;
|
|
90
|
-
var minimumBlockBp = self.minimumBlockWidth * self.bpPerPx;
|
|
91
|
-
var index = self.displayedRegions.findIndex(function (region, idx) {
|
|
92
|
-
var len = region.end - region.start;
|
|
93
|
-
|
|
94
|
-
if (refName === region.refName && coord >= region.start && coord <= region.end) {
|
|
95
|
-
if (regionNumber ? regionNumber === idx : true) {
|
|
96
|
-
offsetBp += region.reversed ? region.end - coord : coord - region.start;
|
|
97
|
-
return true;
|
|
98
|
-
}
|
|
99
|
-
} // add the interRegionPaddingWidth if the boundary is in the screen
|
|
100
|
-
// e.g. offset>0 && offset<width
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
if (region.end - region.start > minimumBlockBp && offsetBp / self.bpPerPx > 0 && offsetBp / self.bpPerPx < _this.width) {
|
|
104
|
-
offsetBp += len + interRegionPaddingBp;
|
|
105
|
-
} else {
|
|
106
|
-
offsetBp += len;
|
|
107
|
-
}
|
|
108
|
-
|
|
109
|
-
return false;
|
|
110
|
-
});
|
|
111
|
-
var foundRegion = self.displayedRegions[index];
|
|
112
|
-
|
|
113
|
-
if (foundRegion) {
|
|
114
|
-
return Math.round(offsetBp / self.bpPerPx);
|
|
115
|
-
}
|
|
116
|
-
|
|
117
|
-
return undefined;
|
|
118
|
-
},
|
|
119
79
|
pxToBp: function pxToBp(px) {
|
|
120
80
|
var bpSoFar = 0;
|
|
121
81
|
var bp = (self.offsetPx + px) * self.bpPerPx;
|
|
@@ -124,7 +84,7 @@ var Base1DView = _mobxStateTree.types.model('Base1DView', {
|
|
|
124
84
|
if (bp < 0) {
|
|
125
85
|
var region = self.displayedRegions[0];
|
|
126
86
|
var offset = bp;
|
|
127
|
-
return (
|
|
87
|
+
return _objectSpread(_objectSpread({}, (0, _mobxStateTree.getSnapshot)(region)), {}, {
|
|
128
88
|
oob: true,
|
|
129
89
|
coord: region.reversed ? Math.floor(region.end - offset) + 1 : Math.floor(region.start + offset) + 1,
|
|
130
90
|
offset: offset,
|
|
@@ -142,7 +102,7 @@ var Base1DView = _mobxStateTree.types.model('Base1DView', {
|
|
|
142
102
|
var _offset = bp - bpSoFar;
|
|
143
103
|
|
|
144
104
|
if (len + bpSoFar > bp && bpSoFar <= bp) {
|
|
145
|
-
return (
|
|
105
|
+
return _objectSpread(_objectSpread({}, (0, _mobxStateTree.getSnapshot)(_region)), {}, {
|
|
146
106
|
oob: false,
|
|
147
107
|
offset: _offset,
|
|
148
108
|
coord: _region.reversed ? Math.floor(_region.end - _offset) + 1 : Math.floor(_region.start + _offset) + 1,
|
|
@@ -166,7 +126,7 @@ var Base1DView = _mobxStateTree.types.model('Base1DView', {
|
|
|
166
126
|
|
|
167
127
|
var _offset2 = bp - bpSoFar + _len;
|
|
168
128
|
|
|
169
|
-
return (
|
|
129
|
+
return _objectSpread(_objectSpread({}, (0, _mobxStateTree.getSnapshot)(_region2)), {}, {
|
|
170
130
|
oob: true,
|
|
171
131
|
offset: _offset2,
|
|
172
132
|
coord: _region2.reversed ? Math.floor(_region2.end - _offset2) + 1 : Math.floor(_region2.start + _offset2) + 1,
|
|
@@ -189,11 +149,11 @@ var Base1DView = _mobxStateTree.types.model('Base1DView', {
|
|
|
189
149
|
}).views(function (self) {
|
|
190
150
|
return {
|
|
191
151
|
get dynamicBlocks() {
|
|
192
|
-
return (0, _calculateDynamicBlocks
|
|
152
|
+
return (0, _calculateDynamicBlocks.default)(self);
|
|
193
153
|
},
|
|
194
154
|
|
|
195
155
|
get staticBlocks() {
|
|
196
|
-
return (0, _calculateStaticBlocks
|
|
156
|
+
return (0, _calculateStaticBlocks.default)(self);
|
|
197
157
|
},
|
|
198
158
|
|
|
199
159
|
get currBp() {
|
|
@@ -202,8 +162,28 @@ var Base1DView = _mobxStateTree.types.model('Base1DView', {
|
|
|
202
162
|
}).reduce(function (a, b) {
|
|
203
163
|
return a + b;
|
|
204
164
|
}, 0);
|
|
205
|
-
}
|
|
165
|
+
},
|
|
206
166
|
|
|
167
|
+
/**
|
|
168
|
+
* calculates the Px at which coord is found.
|
|
169
|
+
*
|
|
170
|
+
* @param refName - string, refName of region
|
|
171
|
+
* @param coord - number, bp to be translated to Px
|
|
172
|
+
* @param regionNumber - number, index of displayedRegion in displayedRegions array
|
|
173
|
+
*/
|
|
174
|
+
bpToPx: function bpToPx(_ref) {
|
|
175
|
+
var _viewBpToPx;
|
|
176
|
+
|
|
177
|
+
var refName = _ref.refName,
|
|
178
|
+
coord = _ref.coord,
|
|
179
|
+
regionNumber = _ref.regionNumber;
|
|
180
|
+
return (_viewBpToPx = (0, _index.viewBpToPx)({
|
|
181
|
+
refName: refName,
|
|
182
|
+
coord: coord,
|
|
183
|
+
regionNumber: regionNumber,
|
|
184
|
+
self: self
|
|
185
|
+
})) === null || _viewBpToPx === void 0 ? void 0 : _viewBpToPx.offsetPx;
|
|
186
|
+
}
|
|
207
187
|
};
|
|
208
188
|
}).actions(function (self) {
|
|
209
189
|
return {
|
|
@@ -311,6 +291,22 @@ var Base1DView = _mobxStateTree.types.model('Base1DView', {
|
|
|
311
291
|
|
|
312
292
|
self.offsetPx = (0, _index.clamp)(Math.round((self.offsetPx + offset) * oldBpPerPx / bpPerPx - offset), self.minOffset, self.maxOffset);
|
|
313
293
|
},
|
|
294
|
+
scrollTo: function scrollTo(offsetPx) {
|
|
295
|
+
var newOffsetPx = (0, _index.clamp)(offsetPx, self.minOffset, self.maxOffset);
|
|
296
|
+
self.offsetPx = newOffsetPx;
|
|
297
|
+
return newOffsetPx;
|
|
298
|
+
},
|
|
299
|
+
centerAt: function centerAt(bp, refName, regionIndex) {
|
|
300
|
+
var centerPx = self.bpToPx({
|
|
301
|
+
refName: refName,
|
|
302
|
+
coord: bp,
|
|
303
|
+
regionNumber: regionIndex
|
|
304
|
+
});
|
|
305
|
+
|
|
306
|
+
if (centerPx) {
|
|
307
|
+
this.scrollTo(Math.round(centerPx - self.width / 2));
|
|
308
|
+
}
|
|
309
|
+
},
|
|
314
310
|
scroll: function scroll(distance) {
|
|
315
311
|
var oldOffsetPx = self.offsetPx; // the scroll is clamped to keep the linear genome on the main screen
|
|
316
312
|
|
|
@@ -322,4 +318,4 @@ var Base1DView = _mobxStateTree.types.model('Base1DView', {
|
|
|
322
318
|
});
|
|
323
319
|
|
|
324
320
|
var _default = Base1DView;
|
|
325
|
-
exports
|
|
321
|
+
exports.default = _default;
|