@jbrowse/plugin-linear-genome-view 1.7.8 → 1.7.11

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.
Files changed (53) hide show
  1. package/dist/BaseLinearDisplay/components/BaseLinearDisplay.d.ts +1 -5
  2. package/dist/BaseLinearDisplay/components/BaseLinearDisplay.js +32 -120
  3. package/dist/BaseLinearDisplay/components/Tooltip.d.ts +8 -0
  4. package/dist/BaseLinearDisplay/components/Tooltip.js +125 -0
  5. package/dist/BaseLinearDisplay/models/BaseLinearDisplayModel.d.ts +4 -4
  6. package/dist/BaseLinearDisplay/models/BaseLinearDisplayModel.js +3 -2
  7. package/dist/LinearBareDisplay/model.d.ts +1 -1
  8. package/dist/LinearBasicDisplay/model.d.ts +1 -2
  9. package/dist/LinearBasicDisplay/model.js +2 -2
  10. package/dist/LinearGenomeView/components/ExportSvgDialog.js +35 -25
  11. package/dist/LinearGenomeView/components/Header.d.ts +0 -1
  12. package/dist/LinearGenomeView/components/Header.js +3 -1
  13. package/dist/LinearGenomeView/components/HelpDialog.js +2 -3
  14. package/dist/LinearGenomeView/components/ImportForm.d.ts +0 -1
  15. package/dist/LinearGenomeView/components/ImportForm.js +40 -70
  16. package/dist/LinearGenomeView/components/LinearGenomeView.js +6 -2
  17. package/dist/LinearGenomeView/components/LinearGenomeView.test.js +2 -2
  18. package/dist/LinearGenomeView/components/OverviewScaleBar.d.ts +21 -5
  19. package/dist/LinearGenomeView/components/OverviewScaleBar.js +25 -18
  20. package/dist/LinearGenomeView/components/ScaleBar.d.ts +6 -2
  21. package/dist/LinearGenomeView/components/ScaleBar.js +8 -3
  22. package/dist/LinearGenomeView/components/SearchBox.js +36 -72
  23. package/dist/LinearGenomeView/components/SearchResultsDialog.d.ts +1 -1
  24. package/dist/LinearGenomeView/components/SearchResultsDialog.js +0 -1
  25. package/dist/LinearGenomeView/components/TrackLabel.js +25 -41
  26. package/dist/LinearGenomeView/components/util.d.ts +12 -0
  27. package/dist/LinearGenomeView/components/util.js +59 -0
  28. package/dist/LinearGenomeView/index.d.ts +7 -11
  29. package/dist/LinearGenomeView/index.js +60 -33
  30. package/dist/LinearGenomeView/index.test.js +22 -5
  31. package/dist/index.d.ts +3 -3
  32. package/dist/index.js +22 -11
  33. package/package.json +3 -2
  34. package/src/BaseLinearDisplay/components/BaseLinearDisplay.tsx +4 -89
  35. package/src/BaseLinearDisplay/components/Tooltip.tsx +97 -0
  36. package/src/BaseLinearDisplay/models/BaseLinearDisplayModel.tsx +11 -4
  37. package/src/LinearBasicDisplay/model.ts +2 -4
  38. package/src/LinearGenomeView/components/ExportSvgDialog.tsx +24 -11
  39. package/src/LinearGenomeView/components/Header.tsx +2 -1
  40. package/src/LinearGenomeView/components/HelpDialog.tsx +5 -4
  41. package/src/LinearGenomeView/components/ImportForm.tsx +18 -25
  42. package/src/LinearGenomeView/components/LinearGenomeView.test.js +2 -2
  43. package/src/LinearGenomeView/components/LinearGenomeView.tsx +16 -10
  44. package/src/LinearGenomeView/components/OverviewScaleBar.tsx +42 -34
  45. package/src/LinearGenomeView/components/ScaleBar.tsx +6 -9
  46. package/src/LinearGenomeView/components/SearchBox.tsx +18 -29
  47. package/src/LinearGenomeView/components/SearchResultsDialog.tsx +0 -1
  48. package/src/LinearGenomeView/components/TrackLabel.tsx +25 -28
  49. package/src/LinearGenomeView/components/__snapshots__/LinearGenomeView.test.js.snap +4 -21
  50. package/src/LinearGenomeView/components/util.ts +43 -0
  51. package/src/LinearGenomeView/index.test.ts +20 -5
  52. package/src/LinearGenomeView/index.tsx +56 -27
  53. package/src/index.ts +35 -30
@@ -11,8 +11,6 @@ var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"))
11
11
 
12
12
  var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
13
13
 
14
- var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
15
-
16
14
  var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
17
15
 
18
16
  var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
@@ -35,6 +33,8 @@ var _Close = _interopRequireDefault(require("@material-ui/icons/Close"));
35
33
 
36
34
  var _RefNameAutocomplete = _interopRequireDefault(require("./RefNameAutocomplete"));
37
35
 
36
+ var _util2 = require("./util");
37
+
38
38
  var _ = require("..");
39
39
 
40
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); }
@@ -98,106 +98,68 @@ var ImportForm = (0, _mobxReact.observer)(function (_ref) {
98
98
 
99
99
  var option = new _BaseResults.default({
100
100
  label: value
101
- });
102
-
103
- function fetchResults(_x, _x2) {
104
- return _fetchResults.apply(this, arguments);
105
- } // gets a string as input, or use stored option results from previous query,
101
+ }); // gets a string as input, or use stored option results from previous query,
106
102
  // then re-query and
107
103
  // 1) if it has multiple results: pop a dialog
108
104
  // 2) if it's a single result navigate to it
109
105
  // 3) else assume it's a locstring and navigate to it
110
106
 
111
-
112
- function _fetchResults() {
113
- _fetchResults = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(query, searchType) {
114
- var _assembly$allRefNames;
115
-
116
- var textSearchResults, refNameResults;
117
- return _regenerator.default.wrap(function _callee$(_context) {
118
- while (1) {
119
- switch (_context.prev = _context.next) {
120
- case 0:
121
- if (!textSearchManager) {
122
- console.warn('No text search manager');
123
- }
124
-
125
- _context.next = 3;
126
- return textSearchManager === null || textSearchManager === void 0 ? void 0 : textSearchManager.search({
127
- queryString: query,
128
- searchType: searchType
129
- }, searchScope, rankSearchResults);
130
-
131
- case 3:
132
- textSearchResults = _context.sent;
133
- refNameResults = assembly === null || assembly === void 0 ? void 0 : (_assembly$allRefNames = assembly.allRefNames) === null || _assembly$allRefNames === void 0 ? void 0 : _assembly$allRefNames.filter(function (refName) {
134
- return refName.startsWith(query);
135
- }).map(function (r) {
136
- return new _BaseResults.default({
137
- label: r
138
- });
139
- }).slice(0, 10);
140
- return _context.abrupt("return", [].concat((0, _toConsumableArray2.default)(refNameResults || []), (0, _toConsumableArray2.default)(textSearchResults || [])));
141
-
142
- case 6:
143
- case "end":
144
- return _context.stop();
145
- }
146
- }
147
- }, _callee);
148
- }));
149
- return _fetchResults.apply(this, arguments);
150
- }
151
-
152
- function handleSelectedRegion(_x3) {
107
+ function handleSelectedRegion(_x) {
153
108
  return _handleSelectedRegion.apply(this, arguments);
154
109
  }
155
110
 
156
111
  function _handleSelectedRegion() {
157
- _handleSelectedRegion = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2(input) {
112
+ _handleSelectedRegion = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(input) {
158
113
  var trackId, location, _location$split, _location$split2, ref, rest, allRefs, results;
159
114
 
160
- return _regenerator.default.wrap(function _callee2$(_context2) {
115
+ return _regenerator.default.wrap(function _callee$(_context) {
161
116
  while (1) {
162
- switch (_context2.prev = _context2.next) {
117
+ switch (_context.prev = _context.next) {
163
118
  case 0:
164
119
  if (option) {
165
- _context2.next = 2;
120
+ _context.next = 2;
166
121
  break;
167
122
  }
168
123
 
169
- return _context2.abrupt("return");
124
+ return _context.abrupt("return");
170
125
 
171
126
  case 2:
172
127
  trackId = option.getTrackId();
173
128
  location = input || option.getLocation() || '';
174
129
  _location$split = location.split(':'), _location$split2 = (0, _slicedToArray2.default)(_location$split, 2), ref = _location$split2[0], rest = _location$split2[1];
175
130
  allRefs = (assembly === null || assembly === void 0 ? void 0 : assembly.allRefNames) || [];
176
- _context2.prev = 6;
131
+ _context.prev = 6;
177
132
 
178
133
  if (!(allRefs.includes(location) || allRefs.includes(ref) && rest !== undefined && !Number.isNaN(parseInt(rest, 10)))) {
179
- _context2.next = 11;
134
+ _context.next = 11;
180
135
  break;
181
136
  }
182
137
 
183
138
  model.navToLocString(location, selectedAsm);
184
- _context2.next = 22;
139
+ _context.next = 22;
185
140
  break;
186
141
 
187
142
  case 11:
188
- _context2.next = 13;
189
- return fetchResults(input, 'exact');
143
+ _context.next = 13;
144
+ return (0, _util2.fetchResults)({
145
+ queryString: input,
146
+ searchType: 'exact',
147
+ searchScope: searchScope,
148
+ rankSearchResults: rankSearchResults,
149
+ textSearchManager: textSearchManager,
150
+ assembly: assembly
151
+ });
190
152
 
191
153
  case 13:
192
- results = _context2.sent;
154
+ results = _context.sent;
193
155
 
194
156
  if (!(results.length > 1)) {
195
- _context2.next = 19;
157
+ _context.next = 19;
196
158
  break;
197
159
  }
198
160
 
199
161
  model.setSearchResults(results, input.toLowerCase());
200
- return _context2.abrupt("return");
162
+ return _context.abrupt("return");
201
163
 
202
164
  case 19:
203
165
  if (results.length === 1) {
@@ -213,21 +175,21 @@ var ImportForm = (0, _mobxReact.observer)(function (_ref) {
213
175
  }
214
176
 
215
177
  case 22:
216
- _context2.next = 28;
178
+ _context.next = 28;
217
179
  break;
218
180
 
219
181
  case 24:
220
- _context2.prev = 24;
221
- _context2.t0 = _context2["catch"](6);
222
- console.error(_context2.t0);
223
- session.notify("".concat(_context2.t0), 'warning');
182
+ _context.prev = 24;
183
+ _context.t0 = _context["catch"](6);
184
+ console.error(_context.t0);
185
+ session.notify("".concat(_context.t0), 'warning');
224
186
 
225
187
  case 28:
226
188
  case "end":
227
- return _context2.stop();
189
+ return _context.stop();
228
190
  }
229
191
  }
230
- }, _callee2, null, [[6, 24]]);
192
+ }, _callee, null, [[6, 24]]);
231
193
  }));
232
194
  return _handleSelectedRegion.apply(this, arguments);
233
195
  }
@@ -276,7 +238,15 @@ var ImportForm = (0, _mobxReact.observer)(function (_ref) {
276
238
  color: 'red'
277
239
  }
278
240
  }) : value ? /*#__PURE__*/_react.default.createElement(_RefNameAutocomplete.default, {
279
- fetchResults: fetchResults,
241
+ fetchResults: function fetchResults(queryString) {
242
+ return (0, _util2.fetchResults)({
243
+ queryString: queryString,
244
+ assembly: assembly,
245
+ textSearchManager: textSearchManager,
246
+ rankSearchResults: rankSearchResults,
247
+ searchScope: searchScope
248
+ });
249
+ },
280
250
  model: model,
281
251
  assemblyName: assemblyError ? undefined : selectedAsm,
282
252
  value: value // note: minWidth 270 accomodates full width of helperText
@@ -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")) : tracks.map(function (track) {
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('100 bp');
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('798 bp');
218
+ return findByText('798bp');
219
219
 
220
220
  case 12:
221
221
  _context3.next = 14;
@@ -18,7 +18,10 @@ declare const Cytobands: ({ overview, block, assembly, }: {
18
18
  error: Error | undefined;
19
19
  regions: import("@jbrowse/core/assemblyManager/assembly").BasicRegion[] | undefined;
20
20
  refNameAliases: {
21
- [key: string]: string;
21
+ [x: string]: string;
22
+ } | undefined;
23
+ lowerCaseRefNameAliases: {
24
+ [x: string]: string;
22
25
  } | undefined;
23
26
  cytobands: import("@jbrowse/core/util").Feature[] | undefined;
24
27
  } & {
@@ -37,17 +40,22 @@ declare const Cytobands: ({ overview, block, assembly, }: {
37
40
  isValidRefName(refName: string): boolean;
38
41
  } & {
39
42
  setLoading(): void;
40
- setLoaded({ adapterRegionsWithAssembly, refNameAliases, cytobands, }: {
43
+ setLoaded({ adapterRegionsWithAssembly, refNameAliases, lowerCaseRefNameAliases, cytobands, }: {
41
44
  adapterRegionsWithAssembly: import("@jbrowse/core/util").Region[];
42
45
  refNameAliases: {
43
46
  [x: string]: string;
44
47
  };
48
+ lowerCaseRefNameAliases: {
49
+ [x: string]: string;
50
+ };
45
51
  cytobands: import("@jbrowse/core/util").Feature[];
46
52
  }): void;
47
53
  setError(e: Error): void;
48
54
  setRegions(regions: import("@jbrowse/core/util").Region[]): void;
49
55
  setRefNameAliases(refNameAliases: {
50
56
  [x: string]: string;
57
+ }, lowerCaseRefNameAliases: {
58
+ [x: string]: string;
51
59
  }): void;
52
60
  setCytobands(cytobands: import("@jbrowse/core/util").Feature[]): void;
53
61
  afterAttach(): void;
@@ -72,7 +80,10 @@ declare const Cytobands: ({ overview, block, assembly, }: {
72
80
  error: Error | undefined;
73
81
  regions: import("@jbrowse/core/assemblyManager/assembly").BasicRegion[] | undefined;
74
82
  refNameAliases: {
75
- [key: string]: string;
83
+ [x: string]: string;
84
+ } | undefined;
85
+ lowerCaseRefNameAliases: {
86
+ [x: string]: string;
76
87
  } | undefined;
77
88
  cytobands: import("@jbrowse/core/util").Feature[] | undefined;
78
89
  } & {
@@ -91,17 +102,22 @@ declare const Cytobands: ({ overview, block, assembly, }: {
91
102
  isValidRefName(refName: string): boolean;
92
103
  } & {
93
104
  setLoading(): void;
94
- setLoaded({ adapterRegionsWithAssembly, refNameAliases, cytobands, }: {
105
+ setLoaded({ adapterRegionsWithAssembly, refNameAliases, lowerCaseRefNameAliases, cytobands, }: {
95
106
  adapterRegionsWithAssembly: import("@jbrowse/core/util").Region[];
96
107
  refNameAliases: {
97
108
  [x: string]: string;
98
109
  };
110
+ lowerCaseRefNameAliases: {
111
+ [x: string]: string;
112
+ };
99
113
  cytobands: import("@jbrowse/core/util").Feature[];
100
114
  }): void;
101
115
  setError(e: Error): void;
102
116
  setRegions(regions: import("@jbrowse/core/util").Region[]): void;
103
117
  setRefNameAliases(refNameAliases: {
104
118
  [x: string]: string;
119
+ }, lowerCaseRefNameAliases: {
120
+ [x: string]: string;
105
121
  }): void;
106
122
  setCytobands(cytobands: import("@jbrowse/core/util").Feature[]): void;
107
123
  afterAttach(): void;
@@ -122,7 +138,7 @@ declare const Cytobands: ({ overview, block, assembly, }: {
122
138
  }>;
123
139
  }, import("mobx-state-tree")._NotCustomized, import("mobx-state-tree")._NotCustomized>>) | undefined;
124
140
  block: ContentBlock;
125
- }) => JSX.Element | null;
141
+ }) => JSX.Element;
126
142
  declare function OverviewScaleBar({ model, children, }: {
127
143
  model: LGV;
128
144
  children: React.ReactNode;
@@ -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',
@@ -151,15 +150,11 @@ var colorMap = {
151
150
  stalk: 'rgb(127,127,127)',
152
151
  acen: '#800'
153
152
  };
154
- var Cytobands = (0, _mobxReact.observer)(function (_ref2) {
153
+
154
+ function getCytobands(assembly, refName) {
155
155
  var _assembly$cytobands;
156
156
 
157
- var overview = _ref2.overview,
158
- block = _ref2.block,
159
- assembly = _ref2.assembly;
160
- var offsetPx = block.offsetPx,
161
- reversed = block.reversed;
162
- var cytobands = assembly === null || assembly === void 0 ? void 0 : (_assembly$cytobands = assembly.cytobands) === null || _assembly$cytobands === void 0 ? void 0 : _assembly$cytobands.map(function (f) {
157
+ return (assembly === null || assembly === void 0 ? void 0 : (_assembly$cytobands = assembly.cytobands) === null || _assembly$cytobands === void 0 ? void 0 : _assembly$cytobands.map(function (f) {
163
158
  return {
164
159
  refName: assembly.getCanonicalRefName(f.get('refName')),
165
160
  start: f.get('start'),
@@ -167,8 +162,18 @@ var Cytobands = (0, _mobxReact.observer)(function (_ref2) {
167
162
  type: f.get('type')
168
163
  };
169
164
  }).filter(function (f) {
170
- return f.refName === block.refName;
171
- }).map(function (f) {
165
+ return f.refName === refName;
166
+ })) || [];
167
+ }
168
+
169
+ var Cytobands = (0, _mobxReact.observer)(function (_ref2) {
170
+ var overview = _ref2.overview,
171
+ block = _ref2.block,
172
+ assembly = _ref2.assembly;
173
+ var offsetPx = block.offsetPx,
174
+ reversed = block.reversed;
175
+ var cytobands = getCytobands(assembly, block.refName);
176
+ var coords = cytobands.map(function (f) {
172
177
  var refName = f.refName,
173
178
  start = f.start,
174
179
  end = f.end,
@@ -185,9 +190,9 @@ var Cytobands = (0, _mobxReact.observer)(function (_ref2) {
185
190
  var lcap = reversed ? arr.length - 1 : 0;
186
191
  var rcap = reversed ? 0 : arr.length - 1;
187
192
  var firstCent = true;
188
- return cytobands ? /*#__PURE__*/_react.default.createElement("g", {
193
+ return /*#__PURE__*/_react.default.createElement("g", {
189
194
  transform: "translate(-".concat(offsetPx, ")")
190
- }, cytobands.map(function (_ref3, index) {
195
+ }, coords.map(function (_ref3, index) {
191
196
  var _ref4 = (0, _slicedToArray2.default)(_ref3, 3),
192
197
  start = _ref4[0],
193
198
  end = _ref4[1],
@@ -234,7 +239,7 @@ var Cytobands = (0, _mobxReact.observer)(function (_ref2) {
234
239
  fill: colorMap[type]
235
240
  });
236
241
  }
237
- })) : null;
242
+ }));
238
243
  });
239
244
  exports.Cytobands = Cytobands;
240
245
  var OverviewBox = (0, _mobxReact.observer)(function (_ref5) {
@@ -244,6 +249,7 @@ var OverviewBox = (0, _mobxReact.observer)(function (_ref5) {
244
249
  overview = _ref5.overview;
245
250
  var classes = useStyles();
246
251
  var cytobandOffset = model.cytobandOffset,
252
+ bpPerPx = model.bpPerPx,
247
253
  showCytobands = model.showCytobands;
248
254
  var start = block.start,
249
255
  end = block.end,
@@ -266,20 +272,21 @@ var OverviewBox = (0, _mobxReact.observer)(function (_ref5) {
266
272
  tickLabels.push(reversed ? end - offsetLabel : start + offsetLabel);
267
273
  }
268
274
 
275
+ var canDisplayCytobands = showCytobands && getCytobands(assembly, block.refName).length;
269
276
  return /*#__PURE__*/_react.default.createElement("div", null, /*#__PURE__*/_react.default.createElement(_core.Typography, {
270
277
  style: {
271
278
  left: block.offsetPx + 3,
272
- color: showCytobands ? 'black' : refNameColor
279
+ color: canDisplayCytobands ? 'black' : refNameColor
273
280
  },
274
281
  className: classes.scaleBarRefName
275
282
  }, refName), /*#__PURE__*/_react.default.createElement("div", {
276
- className: (0, _clsx.default)(classes.scaleBarContig, showCytobands ? undefined : reversed ? classes.scaleBarContigReverse : classes.scaleBarContigForward, !showCytobands ? classes.scaleBarBorder : undefined),
283
+ className: (0, _clsx.default)(classes.scaleBarContig, canDisplayCytobands ? undefined : reversed ? classes.scaleBarContigReverse : classes.scaleBarContigForward, !canDisplayCytobands ? classes.scaleBarBorder : undefined),
277
284
  style: {
278
285
  left: block.offsetPx + cytobandOffset,
279
286
  width: block.widthPx,
280
287
  borderColor: refNameColor
281
288
  }
282
- }, !showCytobands ? tickLabels.map(function (tickLabel, labelIdx) {
289
+ }, !canDisplayCytobands ? tickLabels.map(function (tickLabel, labelIdx) {
283
290
  return /*#__PURE__*/_react.default.createElement(_core.Typography, {
284
291
  key: "".concat(JSON.stringify(block), "-").concat(tickLabel, "-").concat(labelIdx),
285
292
  className: classes.scaleBarLabel,
@@ -289,8 +296,8 @@ var OverviewBox = (0, _mobxReact.observer)(function (_ref5) {
289
296
  pointerEvents: 'none',
290
297
  color: refNameColor
291
298
  }
292
- }, tickLabel.toLocaleString('en-US'));
293
- }) : null, showCytobands ? /*#__PURE__*/_react.default.createElement("svg", {
299
+ }, (0, _util.getTickDisplayStr)(tickLabel, bpPerPx));
300
+ }) : null, canDisplayCytobands ? /*#__PURE__*/_react.default.createElement("svg", {
294
301
  style: {
295
302
  width: '100%'
296
303
  }
@@ -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;
@@ -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;
@@ -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 ticks = (0, _util.makeTicks)(block.start, block.end, model.bpPerPx, true, false);
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 = (tick.base + 1).toLocaleString('en-US');
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;