@jbrowse/plugin-linear-genome-view 1.7.7 → 1.7.10
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/dist/BaseLinearDisplay/components/BaseLinearDisplay.d.ts +1 -5
- package/dist/BaseLinearDisplay/components/BaseLinearDisplay.js +32 -120
- package/dist/BaseLinearDisplay/components/Tooltip.d.ts +8 -0
- package/dist/BaseLinearDisplay/components/Tooltip.js +125 -0
- package/dist/BaseLinearDisplay/models/BaseLinearDisplayModel.d.ts +3 -3
- package/dist/BaseLinearDisplay/models/BaseLinearDisplayModel.js +3 -4
- package/dist/LinearGenomeView/components/ExportSvgDialog.js +35 -25
- package/dist/LinearGenomeView/components/Header.js +5 -2
- package/dist/LinearGenomeView/components/HelpDialog.js +2 -3
- package/dist/LinearGenomeView/components/ImportForm.js +47 -47
- package/dist/LinearGenomeView/components/LinearGenomeView.js +6 -2
- package/dist/LinearGenomeView/components/LinearGenomeView.test.js +2 -2
- package/dist/LinearGenomeView/components/OverviewScaleBar.js +2 -2
- package/dist/LinearGenomeView/components/RefNameAutocomplete.d.ts +3 -2
- package/dist/LinearGenomeView/components/RefNameAutocomplete.js +7 -5
- package/dist/LinearGenomeView/components/ScaleBar.d.ts +8 -4
- package/dist/LinearGenomeView/components/ScaleBar.js +8 -3
- package/dist/LinearGenomeView/components/SearchBox.js +31 -22
- package/dist/LinearGenomeView/components/TrackLabel.js +25 -41
- package/dist/LinearGenomeView/index.d.ts +7 -11
- package/dist/LinearGenomeView/index.js +60 -33
- package/dist/LinearGenomeView/index.test.js +22 -5
- package/dist/index.js +22 -11
- package/package.json +3 -2
- package/src/BaseLinearDisplay/components/BaseLinearDisplay.tsx +4 -89
- package/src/BaseLinearDisplay/components/Tooltip.tsx +97 -0
- package/src/BaseLinearDisplay/models/BaseLinearDisplayModel.tsx +11 -4
- package/src/LinearGenomeView/components/ExportSvgDialog.tsx +24 -11
- package/src/LinearGenomeView/components/Header.tsx +3 -2
- package/src/LinearGenomeView/components/HelpDialog.tsx +5 -4
- package/src/LinearGenomeView/components/ImportForm.tsx +37 -32
- package/src/LinearGenomeView/components/LinearGenomeView.test.js +2 -2
- package/src/LinearGenomeView/components/LinearGenomeView.tsx +16 -10
- package/src/LinearGenomeView/components/OverviewScaleBar.tsx +3 -4
- package/src/LinearGenomeView/components/RefNameAutocomplete.tsx +10 -5
- package/src/LinearGenomeView/components/ScaleBar.tsx +6 -9
- package/src/LinearGenomeView/components/SearchBox.tsx +20 -4
- package/src/LinearGenomeView/components/TrackLabel.tsx +25 -28
- package/src/LinearGenomeView/components/__snapshots__/LinearGenomeView.test.js.snap +4 -21
- package/src/LinearGenomeView/index.test.ts +20 -5
- package/src/LinearGenomeView/index.tsx +56 -27
- package/src/index.ts +35 -30
|
@@ -70,35 +70,35 @@ var ImportForm = (0, _mobxReact.observer)(function (_ref) {
|
|
|
70
70
|
textSearchManager = session.textSearchManager;
|
|
71
71
|
var rankSearchResults = model.rankSearchResults,
|
|
72
72
|
isSearchDialogDisplayed = model.isSearchDialogDisplayed,
|
|
73
|
-
|
|
73
|
+
error = model.error;
|
|
74
74
|
|
|
75
75
|
var _useState = (0, _react.useState)(assemblyNames[0]),
|
|
76
76
|
_useState2 = (0, _slicedToArray2.default)(_useState, 2),
|
|
77
77
|
selectedAsm = _useState2[0],
|
|
78
78
|
setSelectedAsm = _useState2[1];
|
|
79
79
|
|
|
80
|
-
var _useState3 = (0, _react.useState)(
|
|
80
|
+
var _useState3 = (0, _react.useState)(error),
|
|
81
81
|
_useState4 = (0, _slicedToArray2.default)(_useState3, 2),
|
|
82
|
-
|
|
83
|
-
|
|
82
|
+
importError = _useState4[0],
|
|
83
|
+
setImportError = _useState4[1];
|
|
84
84
|
|
|
85
85
|
var searchScope = model.searchScope(selectedAsm);
|
|
86
86
|
var assembly = assemblyManager.get(selectedAsm);
|
|
87
87
|
var assemblyError = assemblyNames.length ? assembly === null || assembly === void 0 ? void 0 : assembly.error : 'No configured assemblies';
|
|
88
88
|
var regions = (assembly === null || assembly === void 0 ? void 0 : assembly.regions) || [];
|
|
89
|
-
var err = assemblyError ||
|
|
89
|
+
var err = assemblyError || importError;
|
|
90
90
|
|
|
91
|
-
var _useState5 = (0, _react.useState)(),
|
|
91
|
+
var _useState5 = (0, _react.useState)(''),
|
|
92
92
|
_useState6 = (0, _slicedToArray2.default)(_useState5, 2),
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
// won't update in response to an observable
|
|
93
|
+
myVal = _useState6[0],
|
|
94
|
+
setValue = _useState6[1];
|
|
96
95
|
|
|
96
|
+
var value = myVal || ((_regions$ = regions[0]) === null || _regions$ === void 0 ? void 0 : _regions$.refName); // use this instead of useState initializer because the useState initializer
|
|
97
|
+
// won't update in response to an observable
|
|
97
98
|
|
|
98
|
-
var option =
|
|
99
|
-
label:
|
|
99
|
+
var option = new _BaseResults.default({
|
|
100
|
+
label: value
|
|
100
101
|
});
|
|
101
|
-
var selectedRegion = option === null || option === void 0 ? void 0 : option.getLocation();
|
|
102
102
|
|
|
103
103
|
function fetchResults(_x, _x2) {
|
|
104
104
|
return _fetchResults.apply(this, arguments);
|
|
@@ -155,7 +155,7 @@ var ImportForm = (0, _mobxReact.observer)(function (_ref) {
|
|
|
155
155
|
|
|
156
156
|
function _handleSelectedRegion() {
|
|
157
157
|
_handleSelectedRegion = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2(input) {
|
|
158
|
-
var trackId, location,
|
|
158
|
+
var trackId, location, _location$split, _location$split2, ref, rest, allRefs, results;
|
|
159
159
|
|
|
160
160
|
return _regenerator.default.wrap(function _callee2$(_context2) {
|
|
161
161
|
while (1) {
|
|
@@ -171,61 +171,63 @@ var ImportForm = (0, _mobxReact.observer)(function (_ref) {
|
|
|
171
171
|
case 2:
|
|
172
172
|
trackId = option.getTrackId();
|
|
173
173
|
location = input || option.getLocation() || '';
|
|
174
|
-
|
|
174
|
+
_location$split = location.split(':'), _location$split2 = (0, _slicedToArray2.default)(_location$split, 2), ref = _location$split2[0], rest = _location$split2[1];
|
|
175
|
+
allRefs = (assembly === null || assembly === void 0 ? void 0 : assembly.allRefNames) || [];
|
|
176
|
+
_context2.prev = 6;
|
|
175
177
|
|
|
176
|
-
if (!(
|
|
177
|
-
_context2.next =
|
|
178
|
+
if (!(allRefs.includes(location) || allRefs.includes(ref) && rest !== undefined && !Number.isNaN(parseInt(rest, 10)))) {
|
|
179
|
+
_context2.next = 11;
|
|
178
180
|
break;
|
|
179
181
|
}
|
|
180
182
|
|
|
181
183
|
model.navToLocString(location, selectedAsm);
|
|
182
|
-
_context2.next =
|
|
184
|
+
_context2.next = 22;
|
|
183
185
|
break;
|
|
184
186
|
|
|
185
|
-
case
|
|
186
|
-
_context2.next =
|
|
187
|
+
case 11:
|
|
188
|
+
_context2.next = 13;
|
|
187
189
|
return fetchResults(input, 'exact');
|
|
188
190
|
|
|
189
|
-
case
|
|
191
|
+
case 13:
|
|
190
192
|
results = _context2.sent;
|
|
191
193
|
|
|
192
|
-
if (!(results
|
|
193
|
-
_context2.next =
|
|
194
|
+
if (!(results.length > 1)) {
|
|
195
|
+
_context2.next = 19;
|
|
194
196
|
break;
|
|
195
197
|
}
|
|
196
198
|
|
|
197
199
|
model.setSearchResults(results, input.toLowerCase());
|
|
198
200
|
return _context2.abrupt("return");
|
|
199
201
|
|
|
200
|
-
case
|
|
201
|
-
if (
|
|
202
|
+
case 19:
|
|
203
|
+
if (results.length === 1) {
|
|
202
204
|
location = results[0].getLocation();
|
|
203
205
|
trackId = results[0].getTrackId();
|
|
204
206
|
}
|
|
205
207
|
|
|
206
|
-
case
|
|
208
|
+
case 20:
|
|
207
209
|
model.navToLocString(location, selectedAsm);
|
|
208
210
|
|
|
209
211
|
if (trackId) {
|
|
210
212
|
model.showTrack(trackId);
|
|
211
213
|
}
|
|
212
214
|
|
|
213
|
-
case
|
|
214
|
-
_context2.next =
|
|
215
|
+
case 22:
|
|
216
|
+
_context2.next = 28;
|
|
215
217
|
break;
|
|
216
218
|
|
|
217
|
-
case
|
|
218
|
-
_context2.prev =
|
|
219
|
-
_context2.t0 = _context2["catch"](
|
|
219
|
+
case 24:
|
|
220
|
+
_context2.prev = 24;
|
|
221
|
+
_context2.t0 = _context2["catch"](6);
|
|
220
222
|
console.error(_context2.t0);
|
|
221
223
|
session.notify("".concat(_context2.t0), 'warning');
|
|
222
224
|
|
|
223
|
-
case
|
|
225
|
+
case 28:
|
|
224
226
|
case "end":
|
|
225
227
|
return _context2.stop();
|
|
226
228
|
}
|
|
227
229
|
}
|
|
228
|
-
}, _callee2, null, [[
|
|
230
|
+
}, _callee2, null, [[6, 24]]);
|
|
229
231
|
}));
|
|
230
232
|
return _handleSelectedRegion.apply(this, arguments);
|
|
231
233
|
}
|
|
@@ -241,7 +243,12 @@ var ImportForm = (0, _mobxReact.observer)(function (_ref) {
|
|
|
241
243
|
className: classes.importFormContainer
|
|
242
244
|
}, /*#__PURE__*/_react.default.createElement("form", {
|
|
243
245
|
onSubmit: function onSubmit(event) {
|
|
244
|
-
|
|
246
|
+
event.preventDefault();
|
|
247
|
+
model.setError(undefined);
|
|
248
|
+
|
|
249
|
+
if (value) {
|
|
250
|
+
handleSelectedRegion(value);
|
|
251
|
+
}
|
|
245
252
|
}
|
|
246
253
|
}, /*#__PURE__*/_react.default.createElement(_core.Grid, {
|
|
247
254
|
container: true,
|
|
@@ -252,7 +259,7 @@ var ImportForm = (0, _mobxReact.observer)(function (_ref) {
|
|
|
252
259
|
item: true
|
|
253
260
|
}, /*#__PURE__*/_react.default.createElement(_AssemblySelector.default, {
|
|
254
261
|
onChange: function onChange(val) {
|
|
255
|
-
|
|
262
|
+
setImportError('');
|
|
256
263
|
setSelectedAsm(val);
|
|
257
264
|
},
|
|
258
265
|
session: session,
|
|
@@ -268,15 +275,15 @@ var ImportForm = (0, _mobxReact.observer)(function (_ref) {
|
|
|
268
275
|
style: {
|
|
269
276
|
color: 'red'
|
|
270
277
|
}
|
|
271
|
-
}) :
|
|
278
|
+
}) : value ? /*#__PURE__*/_react.default.createElement(_RefNameAutocomplete.default, {
|
|
272
279
|
fetchResults: fetchResults,
|
|
273
280
|
model: model,
|
|
274
281
|
assemblyName: assemblyError ? undefined : selectedAsm,
|
|
275
|
-
value:
|
|
282
|
+
value: value // note: minWidth 270 accomodates full width of helperText
|
|
276
283
|
,
|
|
277
284
|
minWidth: 270,
|
|
278
|
-
|
|
279
|
-
return
|
|
285
|
+
onChange: function onChange(str) {
|
|
286
|
+
return setValue(str);
|
|
280
287
|
},
|
|
281
288
|
TextFieldProps: {
|
|
282
289
|
variant: 'outlined',
|
|
@@ -298,19 +305,12 @@ var ImportForm = (0, _mobxReact.observer)(function (_ref) {
|
|
|
298
305
|
item: true
|
|
299
306
|
}, /*#__PURE__*/_react.default.createElement(_core.Button, {
|
|
300
307
|
type: "submit",
|
|
301
|
-
disabled: !
|
|
308
|
+
disabled: !value,
|
|
302
309
|
className: classes.button,
|
|
303
|
-
onClick: function onClick() {
|
|
304
|
-
model.setError(undefined);
|
|
305
|
-
|
|
306
|
-
if (selectedRegion) {
|
|
307
|
-
handleSelectedRegion(selectedRegion);
|
|
308
|
-
}
|
|
309
|
-
},
|
|
310
310
|
variant: "contained",
|
|
311
311
|
color: "primary"
|
|
312
312
|
}, "Open"), /*#__PURE__*/_react.default.createElement(_core.Button, {
|
|
313
|
-
disabled: !
|
|
313
|
+
disabled: !value,
|
|
314
314
|
className: classes.button,
|
|
315
315
|
onClick: function onClick() {
|
|
316
316
|
model.setError(undefined);
|
|
@@ -109,7 +109,7 @@ var LinearGenomeView = (0, _mobxReact.observer)(function (_ref) {
|
|
|
109
109
|
}, !tracks.length ? /*#__PURE__*/_react.default.createElement(_core.Paper, {
|
|
110
110
|
variant: "outlined",
|
|
111
111
|
className: classes.note
|
|
112
|
-
}, /*#__PURE__*/_react.default.createElement(_core.Typography, null, "No tracks active."), /*#__PURE__*/_react.default.createElement(_core.Button, {
|
|
112
|
+
}, !model.hideNoTracksActive ? /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_core.Typography, null, "No tracks active."), /*#__PURE__*/_react.default.createElement(_core.Button, {
|
|
113
113
|
variant: "contained",
|
|
114
114
|
color: "primary",
|
|
115
115
|
onClick: model.activateTrackSelector,
|
|
@@ -117,7 +117,11 @@ var LinearGenomeView = (0, _mobxReact.observer)(function (_ref) {
|
|
|
117
117
|
zIndex: 1000
|
|
118
118
|
},
|
|
119
119
|
startIcon: /*#__PURE__*/_react.default.createElement(_Icons.TrackSelector, null)
|
|
120
|
-
}, "Open track selector")) :
|
|
120
|
+
}, "Open track selector")) : /*#__PURE__*/_react.default.createElement("div", {
|
|
121
|
+
style: {
|
|
122
|
+
height: '48px'
|
|
123
|
+
}
|
|
124
|
+
})) : tracks.map(function (track) {
|
|
121
125
|
return /*#__PURE__*/_react.default.createElement(_TrackContainer.default, {
|
|
122
126
|
key: track.id,
|
|
123
127
|
model: model,
|
|
@@ -129,7 +129,7 @@ describe('<LinearGenomeView />', function () {
|
|
|
129
129
|
|
|
130
130
|
case 9:
|
|
131
131
|
_context2.next = 11;
|
|
132
|
-
return findByText('
|
|
132
|
+
return findByText('100bp');
|
|
133
133
|
|
|
134
134
|
case 11:
|
|
135
135
|
expect(container.firstChild).toMatchSnapshot();
|
|
@@ -215,7 +215,7 @@ describe('<LinearGenomeView />', function () {
|
|
|
215
215
|
|
|
216
216
|
case 10:
|
|
217
217
|
_context3.next = 12;
|
|
218
|
-
return findByText('
|
|
218
|
+
return findByText('798bp');
|
|
219
219
|
|
|
220
220
|
case 12:
|
|
221
221
|
_context3.next = 14;
|
|
@@ -66,7 +66,6 @@ var useStyles = (0, _core.makeStyles)(function (theme) {
|
|
|
66
66
|
},
|
|
67
67
|
scaleBarLabel: {
|
|
68
68
|
height: _.HEADER_OVERVIEW_HEIGHT,
|
|
69
|
-
width: 1,
|
|
70
69
|
position: 'absolute',
|
|
71
70
|
display: 'flex',
|
|
72
71
|
justifyContent: 'center',
|
|
@@ -244,6 +243,7 @@ var OverviewBox = (0, _mobxReact.observer)(function (_ref5) {
|
|
|
244
243
|
overview = _ref5.overview;
|
|
245
244
|
var classes = useStyles();
|
|
246
245
|
var cytobandOffset = model.cytobandOffset,
|
|
246
|
+
bpPerPx = model.bpPerPx,
|
|
247
247
|
showCytobands = model.showCytobands;
|
|
248
248
|
var start = block.start,
|
|
249
249
|
end = block.end,
|
|
@@ -289,7 +289,7 @@ var OverviewBox = (0, _mobxReact.observer)(function (_ref5) {
|
|
|
289
289
|
pointerEvents: 'none',
|
|
290
290
|
color: refNameColor
|
|
291
291
|
}
|
|
292
|
-
},
|
|
292
|
+
}, (0, _util.getTickDisplayStr)(tickLabel, bpPerPx));
|
|
293
293
|
}) : null, showCytobands ? /*#__PURE__*/_react.default.createElement("svg", {
|
|
294
294
|
style: {
|
|
295
295
|
width: '100%'
|
|
@@ -6,9 +6,10 @@ export interface Option {
|
|
|
6
6
|
group?: string;
|
|
7
7
|
result: BaseResult;
|
|
8
8
|
}
|
|
9
|
-
declare function RefNameAutocomplete({ model,
|
|
9
|
+
declare function RefNameAutocomplete({ model, onSelect, assemblyName, style, fetchResults, onChange, value, showHelp, minWidth, TextFieldProps, }: {
|
|
10
10
|
model: LinearGenomeViewModel;
|
|
11
|
-
onSelect
|
|
11
|
+
onSelect?: (region: BaseResult) => void;
|
|
12
|
+
onChange?: (val: string) => void;
|
|
12
13
|
assemblyName?: string;
|
|
13
14
|
value?: string;
|
|
14
15
|
fetchResults: (query: string) => Promise<BaseResult[]>;
|
|
@@ -80,13 +80,14 @@ var MyPopper = function MyPopper(props) {
|
|
|
80
80
|
|
|
81
81
|
function RefNameAutocomplete(_ref) {
|
|
82
82
|
var model = _ref.model,
|
|
83
|
-
_ref$showHelp = _ref.showHelp,
|
|
84
|
-
showHelp = _ref$showHelp === void 0 ? true : _ref$showHelp,
|
|
85
83
|
onSelect = _ref.onSelect,
|
|
86
84
|
assemblyName = _ref.assemblyName,
|
|
87
85
|
style = _ref.style,
|
|
88
86
|
fetchResults = _ref.fetchResults,
|
|
87
|
+
onChange = _ref.onChange,
|
|
89
88
|
value = _ref.value,
|
|
89
|
+
_ref$showHelp = _ref.showHelp,
|
|
90
|
+
showHelp = _ref$showHelp === void 0 ? true : _ref$showHelp,
|
|
90
91
|
_ref$minWidth = _ref.minWidth,
|
|
91
92
|
minWidth = _ref$minWidth === void 0 ? 200 : _ref$minWidth,
|
|
92
93
|
_ref$TextFieldProps = _ref.TextFieldProps,
|
|
@@ -223,7 +224,8 @@ function RefNameAutocomplete(_ref) {
|
|
|
223
224
|
loading: !loaded,
|
|
224
225
|
inputValue: inputValue,
|
|
225
226
|
onInputChange: function onInputChange(event, newInputValue) {
|
|
226
|
-
|
|
227
|
+
setInputValue(newInputValue);
|
|
228
|
+
onChange === null || onChange === void 0 ? void 0 : onChange(newInputValue);
|
|
227
229
|
},
|
|
228
230
|
loadingText: "loading results",
|
|
229
231
|
open: open,
|
|
@@ -246,11 +248,11 @@ function RefNameAutocomplete(_ref) {
|
|
|
246
248
|
|
|
247
249
|
if (typeof selectedOption === 'string') {
|
|
248
250
|
// handles string inputs on keyPress enter
|
|
249
|
-
onSelect(new _BaseResults.default({
|
|
251
|
+
onSelect === null || onSelect === void 0 ? void 0 : onSelect(new _BaseResults.default({
|
|
250
252
|
label: selectedOption
|
|
251
253
|
}));
|
|
252
254
|
} else {
|
|
253
|
-
onSelect(selectedOption.result);
|
|
255
|
+
onSelect === null || onSelect === void 0 ? void 0 : onSelect(selectedOption.result);
|
|
254
256
|
}
|
|
255
257
|
|
|
256
258
|
setInputValue(inputBoxVal);
|
|
@@ -21,6 +21,7 @@ declare const _default: React.ForwardRefExoticComponent<{
|
|
|
21
21
|
tracks: import("mobx-state-tree").IArrayType<import("mobx-state-tree").IAnyType>;
|
|
22
22
|
hideHeader: import("mobx-state-tree").IType<boolean | undefined, boolean, boolean>;
|
|
23
23
|
hideHeaderOverview: import("mobx-state-tree").IType<boolean | undefined, boolean, boolean>;
|
|
24
|
+
hideNoTracksActive: import("mobx-state-tree").IType<boolean | undefined, boolean, boolean>;
|
|
24
25
|
trackSelectorType: import("mobx-state-tree").IOptionalIType<import("mobx-state-tree").ISimpleType<"hierarchical">, [undefined]>;
|
|
25
26
|
trackLabels: import("mobx-state-tree").IOptionalIType<import("mobx-state-tree").ISimpleType<string>, [undefined]>;
|
|
26
27
|
showCenterLine: import("mobx-state-tree").IOptionalIType<import("mobx-state-tree").ISimpleType<boolean>, [undefined]>;
|
|
@@ -52,6 +53,7 @@ declare const _default: React.ForwardRefExoticComponent<{
|
|
|
52
53
|
} & {
|
|
53
54
|
readonly width: number;
|
|
54
55
|
readonly interRegionPaddingWidth: number;
|
|
56
|
+
readonly assemblyNames: string[];
|
|
55
57
|
} & {
|
|
56
58
|
readonly assemblyErrors: string;
|
|
57
59
|
readonly assembliesInitialized: boolean;
|
|
@@ -71,7 +73,6 @@ declare const _default: React.ForwardRefExoticComponent<{
|
|
|
71
73
|
readonly minOffset: number;
|
|
72
74
|
readonly displayedRegionsTotalPx: number;
|
|
73
75
|
renderProps(): any;
|
|
74
|
-
readonly assemblyNames: string[];
|
|
75
76
|
searchScope(assemblyName: string): {
|
|
76
77
|
assemblyName: string;
|
|
77
78
|
includeAggregateIndexes: boolean;
|
|
@@ -117,6 +118,7 @@ declare const _default: React.ForwardRefExoticComponent<{
|
|
|
117
118
|
setError(error: Error | undefined): void;
|
|
118
119
|
toggleHeader(): void;
|
|
119
120
|
toggleHeaderOverview(): void;
|
|
121
|
+
toggleNoTracksActive(): void;
|
|
120
122
|
scrollTo(offsetPx: number): number;
|
|
121
123
|
zoomTo(bpPerPx: number): number;
|
|
122
124
|
setOffsets(left: import("..").BpOffset | undefined, right: import("..").BpOffset | undefined): void;
|
|
@@ -130,7 +132,7 @@ declare const _default: React.ForwardRefExoticComponent<{
|
|
|
130
132
|
moveTrack(movingTrackId: string, targetTrackId: string): void;
|
|
131
133
|
closeView(): void;
|
|
132
134
|
toggleTrack(trackId: string): void;
|
|
133
|
-
setTrackLabels(setting: "
|
|
135
|
+
setTrackLabels(setting: "offset" | "hidden" | "overlapping"): void;
|
|
134
136
|
toggleCenterLine(): void;
|
|
135
137
|
setDisplayedRegions(regions: import("@jbrowse/core/util").Region[]): void;
|
|
136
138
|
activateTrackSelector(): import("@jbrowse/core/util").Widget;
|
|
@@ -218,6 +220,7 @@ declare const _default: React.ForwardRefExoticComponent<{
|
|
|
218
220
|
tracks: import("mobx-state-tree").IArrayType<import("mobx-state-tree").IAnyType>;
|
|
219
221
|
hideHeader: import("mobx-state-tree").IType<boolean | undefined, boolean, boolean>;
|
|
220
222
|
hideHeaderOverview: import("mobx-state-tree").IType<boolean | undefined, boolean, boolean>;
|
|
223
|
+
hideNoTracksActive: import("mobx-state-tree").IType<boolean | undefined, boolean, boolean>;
|
|
221
224
|
trackSelectorType: import("mobx-state-tree").IOptionalIType<import("mobx-state-tree").ISimpleType<"hierarchical">, [undefined]>;
|
|
222
225
|
trackLabels: import("mobx-state-tree").IOptionalIType<import("mobx-state-tree").ISimpleType<string>, [undefined]>;
|
|
223
226
|
showCenterLine: import("mobx-state-tree").IOptionalIType<import("mobx-state-tree").ISimpleType<boolean>, [undefined]>;
|
|
@@ -249,6 +252,7 @@ declare const _default: React.ForwardRefExoticComponent<{
|
|
|
249
252
|
} & {
|
|
250
253
|
readonly width: number;
|
|
251
254
|
readonly interRegionPaddingWidth: number;
|
|
255
|
+
readonly assemblyNames: string[];
|
|
252
256
|
} & {
|
|
253
257
|
readonly assemblyErrors: string;
|
|
254
258
|
readonly assembliesInitialized: boolean;
|
|
@@ -268,7 +272,6 @@ declare const _default: React.ForwardRefExoticComponent<{
|
|
|
268
272
|
readonly minOffset: number;
|
|
269
273
|
readonly displayedRegionsTotalPx: number;
|
|
270
274
|
renderProps(): any;
|
|
271
|
-
readonly assemblyNames: string[];
|
|
272
275
|
searchScope(assemblyName: string): {
|
|
273
276
|
assemblyName: string;
|
|
274
277
|
includeAggregateIndexes: boolean;
|
|
@@ -314,6 +317,7 @@ declare const _default: React.ForwardRefExoticComponent<{
|
|
|
314
317
|
setError(error: Error | undefined): void;
|
|
315
318
|
toggleHeader(): void;
|
|
316
319
|
toggleHeaderOverview(): void;
|
|
320
|
+
toggleNoTracksActive(): void;
|
|
317
321
|
scrollTo(offsetPx: number): number;
|
|
318
322
|
zoomTo(bpPerPx: number): number;
|
|
319
323
|
setOffsets(left: import("..").BpOffset | undefined, right: import("..").BpOffset | undefined): void;
|
|
@@ -327,7 +331,7 @@ declare const _default: React.ForwardRefExoticComponent<{
|
|
|
327
331
|
moveTrack(movingTrackId: string, targetTrackId: string): void;
|
|
328
332
|
closeView(): void;
|
|
329
333
|
toggleTrack(trackId: string): void;
|
|
330
|
-
setTrackLabels(setting: "
|
|
334
|
+
setTrackLabels(setting: "offset" | "hidden" | "overlapping"): void;
|
|
331
335
|
toggleCenterLine(): void;
|
|
332
336
|
setDisplayedRegions(regions: import("@jbrowse/core/util").Region[]): void;
|
|
333
337
|
activateTrackSelector(): import("@jbrowse/core/util").Widget;
|
|
@@ -27,6 +27,8 @@ var _Block = require("../../BaseLinearDisplay/components/Block");
|
|
|
27
27
|
|
|
28
28
|
var _util = require("../util");
|
|
29
29
|
|
|
30
|
+
var _util2 = require("@jbrowse/core/util");
|
|
31
|
+
|
|
30
32
|
var _excluded = ["model", "style", "className"];
|
|
31
33
|
|
|
32
34
|
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; }
|
|
@@ -100,16 +102,19 @@ var RenderedRefNameLabels = (0, _mobxReact.observer)(function (_ref) {
|
|
|
100
102
|
var RenderedScaleBarLabels = (0, _mobxReact.observer)(function (_ref2) {
|
|
101
103
|
var model = _ref2.model;
|
|
102
104
|
var classes = useStyles();
|
|
105
|
+
var bpPerPx = model.bpPerPx;
|
|
103
106
|
return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, model.staticBlocks.map(function (block, index) {
|
|
104
107
|
if (block instanceof _blockTypes.ContentBlock) {
|
|
105
|
-
var
|
|
108
|
+
var start = block.start,
|
|
109
|
+
end = block.end;
|
|
110
|
+
var ticks = (0, _util.makeTicks)(start, end, bpPerPx, true, false);
|
|
106
111
|
return /*#__PURE__*/_react.default.createElement(_Block.ContentBlock, {
|
|
107
112
|
key: "".concat(block.key, "-").concat(index),
|
|
108
113
|
block: block
|
|
109
114
|
}, ticks.map(function (tick) {
|
|
110
115
|
if (tick.type === 'major') {
|
|
111
116
|
var x = (block.reversed ? block.end - tick.base : tick.base - block.start) / model.bpPerPx;
|
|
112
|
-
var baseNumber =
|
|
117
|
+
var baseNumber = tick.base + 1;
|
|
113
118
|
return /*#__PURE__*/_react.default.createElement("div", {
|
|
114
119
|
key: tick.base,
|
|
115
120
|
className: classes.tick,
|
|
@@ -118,7 +123,7 @@ var RenderedScaleBarLabels = (0, _mobxReact.observer)(function (_ref2) {
|
|
|
118
123
|
}
|
|
119
124
|
}, baseNumber ? /*#__PURE__*/_react.default.createElement(_core.Typography, {
|
|
120
125
|
className: classes.majorTickLabel
|
|
121
|
-
}, baseNumber) : null);
|
|
126
|
+
}, (0, _util2.getTickDisplayStr)(baseNumber, bpPerPx)) : null);
|
|
122
127
|
}
|
|
123
128
|
|
|
124
129
|
return null;
|
|
@@ -9,6 +9,8 @@ exports.default = void 0;
|
|
|
9
9
|
|
|
10
10
|
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
|
|
11
11
|
|
|
12
|
+
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
13
|
+
|
|
12
14
|
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
|
|
13
15
|
|
|
14
16
|
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
|
|
@@ -54,7 +56,12 @@ function SearchBox(_ref) {
|
|
|
54
56
|
|
|
55
57
|
function fetchResults(_x, _x2) {
|
|
56
58
|
return _fetchResults.apply(this, arguments);
|
|
57
|
-
}
|
|
59
|
+
} // gets a string as input, or use stored option results from previous query,
|
|
60
|
+
// then re-query and
|
|
61
|
+
// 1) if it has multiple results: pop a dialog
|
|
62
|
+
// 2) if it's a single result navigate to it
|
|
63
|
+
// 3) else assume it's a locstring and navigate to it
|
|
64
|
+
|
|
58
65
|
|
|
59
66
|
function _fetchResults() {
|
|
60
67
|
_fetchResults = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(query, searchType) {
|
|
@@ -104,7 +111,7 @@ function SearchBox(_ref) {
|
|
|
104
111
|
|
|
105
112
|
function _handleSelectedRegion() {
|
|
106
113
|
_handleSelectedRegion = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2(option) {
|
|
107
|
-
var trackId, location, label,
|
|
114
|
+
var trackId, location, label, _location$split, _location$split2, ref, rest, allRefs, results;
|
|
108
115
|
|
|
109
116
|
return _regenerator.default.wrap(function _callee2$(_context2) {
|
|
110
117
|
while (1) {
|
|
@@ -113,61 +120,63 @@ function SearchBox(_ref) {
|
|
|
113
120
|
trackId = option.getTrackId();
|
|
114
121
|
location = option.getLocation();
|
|
115
122
|
label = option.getLabel();
|
|
116
|
-
|
|
123
|
+
_location$split = location.split(':'), _location$split2 = (0, _slicedToArray2.default)(_location$split, 2), ref = _location$split2[0], rest = _location$split2[1];
|
|
124
|
+
allRefs = (assembly === null || assembly === void 0 ? void 0 : assembly.allRefNames) || [];
|
|
125
|
+
_context2.prev = 5;
|
|
117
126
|
|
|
118
|
-
if (!(
|
|
119
|
-
_context2.next =
|
|
127
|
+
if (!(allRefs.includes(location) || allRefs.includes(ref) && rest !== undefined && !Number.isNaN(parseInt(rest, 10)))) {
|
|
128
|
+
_context2.next = 10;
|
|
120
129
|
break;
|
|
121
130
|
}
|
|
122
131
|
|
|
123
|
-
model.navToLocString(location);
|
|
124
|
-
_context2.next =
|
|
132
|
+
model.navToLocString(location, assemblyName);
|
|
133
|
+
_context2.next = 21;
|
|
125
134
|
break;
|
|
126
135
|
|
|
127
|
-
case
|
|
128
|
-
_context2.next =
|
|
136
|
+
case 10:
|
|
137
|
+
_context2.next = 12;
|
|
129
138
|
return fetchResults(label, 'exact');
|
|
130
139
|
|
|
131
|
-
case
|
|
140
|
+
case 12:
|
|
132
141
|
results = _context2.sent;
|
|
133
142
|
|
|
134
|
-
if (!(results
|
|
135
|
-
_context2.next =
|
|
143
|
+
if (!(results.length > 1)) {
|
|
144
|
+
_context2.next = 18;
|
|
136
145
|
break;
|
|
137
146
|
}
|
|
138
147
|
|
|
139
148
|
model.setSearchResults(results, label.toLowerCase());
|
|
140
149
|
return _context2.abrupt("return");
|
|
141
150
|
|
|
142
|
-
case
|
|
143
|
-
if (
|
|
151
|
+
case 18:
|
|
152
|
+
if (results.length === 1) {
|
|
144
153
|
location = results[0].getLocation();
|
|
145
154
|
trackId = results[0].getTrackId();
|
|
146
155
|
}
|
|
147
156
|
|
|
148
|
-
case
|
|
157
|
+
case 19:
|
|
149
158
|
model.navToLocString(location, assemblyName);
|
|
150
159
|
|
|
151
160
|
if (trackId) {
|
|
152
161
|
model.showTrack(trackId);
|
|
153
162
|
}
|
|
154
163
|
|
|
155
|
-
case
|
|
156
|
-
_context2.next =
|
|
164
|
+
case 21:
|
|
165
|
+
_context2.next = 27;
|
|
157
166
|
break;
|
|
158
167
|
|
|
159
|
-
case
|
|
160
|
-
_context2.prev =
|
|
161
|
-
_context2.t0 = _context2["catch"](
|
|
168
|
+
case 23:
|
|
169
|
+
_context2.prev = 23;
|
|
170
|
+
_context2.t0 = _context2["catch"](5);
|
|
162
171
|
console.error(_context2.t0);
|
|
163
172
|
session.notify("".concat(_context2.t0), 'warning');
|
|
164
173
|
|
|
165
|
-
case
|
|
174
|
+
case 27:
|
|
166
175
|
case "end":
|
|
167
176
|
return _context2.stop();
|
|
168
177
|
}
|
|
169
178
|
}
|
|
170
|
-
}, _callee2, null, [[
|
|
179
|
+
}, _callee2, null, [[5, 23]]);
|
|
171
180
|
}));
|
|
172
181
|
return _handleSelectedRegion.apply(this, arguments);
|
|
173
182
|
}
|