@jbrowse/plugin-linear-genome-view 1.6.4 → 1.6.7

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 (31) hide show
  1. package/dist/BaseLinearDisplay/components/LinearBlocks.d.ts +0 -5
  2. package/dist/BaseLinearDisplay/models/baseLinearDisplayConfigSchema.d.ts +1 -1
  3. package/dist/LinearBareDisplay/configSchema.d.ts +1 -1
  4. package/dist/LinearBasicDisplay/configSchema.d.ts +1 -1
  5. package/dist/LinearGenomeView/components/ScaleBar.d.ts +2 -0
  6. package/dist/LinearGenomeView/components/TrackContainer.d.ts +1 -1
  7. package/dist/LinearGenomeView/index.d.ts +1 -0
  8. package/dist/index.d.ts +1 -1
  9. package/dist/plugin-linear-genome-view.cjs.development.js +147 -249
  10. package/dist/plugin-linear-genome-view.cjs.development.js.map +1 -1
  11. package/dist/plugin-linear-genome-view.cjs.production.min.js +1 -1
  12. package/dist/plugin-linear-genome-view.cjs.production.min.js.map +1 -1
  13. package/dist/plugin-linear-genome-view.esm.js +149 -251
  14. package/dist/plugin-linear-genome-view.esm.js.map +1 -1
  15. package/package.json +2 -2
  16. package/src/BaseLinearDisplay/components/BaseLinearDisplay.tsx +2 -4
  17. package/src/BaseLinearDisplay/components/LinearBlocks.tsx +4 -8
  18. package/src/BaseLinearDisplay/models/BaseLinearDisplayModel.tsx +11 -3
  19. package/src/LinearBasicDisplay/model.ts +1 -1
  20. package/src/LinearGenomeView/components/HelpDialog.tsx +14 -1
  21. package/src/LinearGenomeView/components/LinearGenomeViewSvg.tsx +1 -13
  22. package/src/LinearGenomeView/components/OverviewScaleBar.tsx +7 -3
  23. package/src/LinearGenomeView/components/TrackContainer.tsx +35 -38
  24. package/src/LinearGenomeView/components/TrackLabel.tsx +5 -5
  25. package/src/LinearGenomeView/components/TracksContainer.tsx +0 -1
  26. package/src/LinearGenomeView/components/__snapshots__/LinearGenomeView.test.js.snap +23 -26
  27. package/src/LinearGenomeView/index.test.ts +44 -42
  28. package/src/LinearGenomeView/index.tsx +167 -242
  29. package/src/LinearGenomeView/volvoxDisplayedRegions.json +16 -0
  30. package/dist/LinearGenomeView/components/ReturnToImportFormDialog.d.ts +0 -9
  31. package/src/LinearGenomeView/components/ReturnToImportFormDialog.tsx +0 -83
@@ -1313,8 +1313,7 @@ var RenderedBlocks = /*#__PURE__*/mobxReact.observer(function (_ref) {
1313
1313
  function LinearBlocks(_ref2) {
1314
1314
  var model = _ref2.model;
1315
1315
  var classes = useStyles$1();
1316
- var blockDefinitions = model.blockDefinitions; // eslint-disable-next-line @typescript-eslint/no-explicit-any
1317
-
1316
+ var blockDefinitions = model.blockDefinitions;
1318
1317
  var viewModel = util.getContainingView(model);
1319
1318
  return /*#__PURE__*/React__default.createElement("div", {
1320
1319
  "data-testid": "Blockset",
@@ -1326,10 +1325,6 @@ function LinearBlocks(_ref2) {
1326
1325
  model: model
1327
1326
  }));
1328
1327
  }
1329
-
1330
- LinearBlocks.propTypes = {
1331
- model: mobxReact.PropTypes.observableObject.isRequired
1332
- };
1333
1328
  var LinearBlocks$1 = /*#__PURE__*/mobxReact.observer(LinearBlocks);
1334
1329
 
1335
1330
  function round(value) {
@@ -1354,7 +1349,7 @@ var useStyles$2 = /*#__PURE__*/core.makeStyles(function (theme) {
1354
1349
  color: theme.palette.common.white,
1355
1350
  fontFamily: theme.typography.fontFamily,
1356
1351
  padding: '4px 8px',
1357
- fontSize: theme.typography.pxToRem(10),
1352
+ fontSize: theme.typography.pxToRem(12),
1358
1353
  lineHeight: "".concat(round(14 / 10), "em"),
1359
1354
  maxWidth: 300,
1360
1355
  wordWrap: 'break-word'
@@ -2332,9 +2327,10 @@ var BaseLinearDisplay$1 = /*#__PURE__*/mobxStateTree.types.compose('BaseLinearDi
2332
2327
  case 0:
2333
2328
  self.setError();
2334
2329
  aborter = new AbortController();
2335
- view = util.getContainingView(self);
2330
+ view = util.getContainingView(self); // extra check for contentBlocks.length
2331
+ // https://github.com/GMOD/jbrowse-components/issues/2694
2336
2332
 
2337
- if (view.initialized) {
2333
+ if (!(!view.initialized || !view.staticBlocks.contentBlocks.length)) {
2338
2334
  _context.next = 5;
2339
2335
  break;
2340
2336
  }
@@ -2385,7 +2381,7 @@ var BaseLinearDisplay$1 = /*#__PURE__*/mobxStateTree.types.compose('BaseLinearDi
2385
2381
  afterAttach: function afterAttach() {
2386
2382
  // this autorun performs stats estimation
2387
2383
  //
2388
- // the chain of events calls estimateRegionStats against the data
2384
+ // the chain of events calls estimateRegionsStats against the data
2389
2385
  // adapter which by default uses featureDensity, but can also respond
2390
2386
  // with a byte size estimate and fetch size limit (data adapter can
2391
2387
  // define what is too much data)
@@ -2398,9 +2394,10 @@ var BaseLinearDisplay$1 = /*#__PURE__*/mobxStateTree.types.compose('BaseLinearDi
2398
2394
  case 0:
2399
2395
  _context2.prev = 0;
2400
2396
  aborter = new AbortController();
2401
- view = util.getContainingView(self);
2397
+ view = util.getContainingView(self); // extra check for contentBlocks.length
2398
+ // https://github.com/GMOD/jbrowse-components/issues/2694
2402
2399
 
2403
- if (view.initialized) {
2400
+ if (!(!view.initialized || !view.staticBlocks.contentBlocks.length)) {
2404
2401
  _context2.next = 5;
2405
2402
  break;
2406
2403
  }
@@ -3249,7 +3246,8 @@ var Cytobands = /*#__PURE__*/mobxReact.observer(function (_ref2) {
3249
3246
  var overview = _ref2.overview,
3250
3247
  block = _ref2.block,
3251
3248
  assembly = _ref2.assembly;
3252
- var offsetPx = block.offsetPx;
3249
+ var offsetPx = block.offsetPx,
3250
+ reversed = block.reversed;
3253
3251
  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) {
3254
3252
  return {
3255
3253
  refName: assembly.getCanonicalRefName(f.get('refName')),
@@ -3272,6 +3270,9 @@ var Cytobands = /*#__PURE__*/mobxReact.observer(function (_ref2) {
3272
3270
  coord: end
3273
3271
  }), type];
3274
3272
  });
3273
+ var arr = cytobands || [];
3274
+ var lcap = reversed ? arr.length - 1 : 0;
3275
+ var rcap = reversed ? 0 : arr.length - 1;
3275
3276
  var firstCent = true;
3276
3277
  return cytobands ? /*#__PURE__*/React__default.createElement("g", {
3277
3278
  transform: "translate(-".concat(offsetPx, ")")
@@ -3300,13 +3301,13 @@ var Cytobands = /*#__PURE__*/mobxReact.observer(function (_ref2) {
3300
3301
  });
3301
3302
  }
3302
3303
 
3303
- if (index === 0) {
3304
+ if (lcap === index) {
3304
3305
  return /*#__PURE__*/React__default.createElement("path", {
3305
3306
  key: key,
3306
3307
  d: leftRoundedRect(Math.min(start, end), 0, Math.abs(end - start), HEADER_OVERVIEW_HEIGHT, 8),
3307
3308
  fill: colorMap[type]
3308
3309
  });
3309
- } else if (index === cytobands.length - 1) {
3310
+ } else if (rcap === index) {
3310
3311
  return /*#__PURE__*/React__default.createElement("path", {
3311
3312
  key: key,
3312
3313
  d: rightRoundedRect(Math.min(start, end), 0, Math.abs(end - start) - 2, HEADER_OVERVIEW_HEIGHT, 8),
@@ -3485,20 +3486,6 @@ function OverviewScaleBar(_ref7) {
3485
3486
 
3486
3487
  var OverviewScaleBar$1 = /*#__PURE__*/mobxReact.observer(OverviewScaleBar);
3487
3488
 
3488
- function getBpDisplayStr(totalBp) {
3489
- var displayBp;
3490
-
3491
- if (Math.floor(totalBp / 1000000) > 0) {
3492
- displayBp = "".concat(parseFloat((totalBp / 1000000).toPrecision(3)), "Mbp");
3493
- } else if (Math.floor(totalBp / 1000) > 0) {
3494
- displayBp = "".concat(parseFloat((totalBp / 1000).toPrecision(3)), "Kbp");
3495
- } else {
3496
- displayBp = "".concat(Math.floor(totalBp), "bp");
3497
- }
3498
-
3499
- return displayBp;
3500
- }
3501
-
3502
3489
  function ScaleBar$1(_ref) {
3503
3490
  var model = _ref.model,
3504
3491
  fontSize = _ref.fontSize;
@@ -3506,7 +3493,7 @@ function ScaleBar$1(_ref) {
3506
3493
  _model$dynamicBlocks = model.dynamicBlocks,
3507
3494
  totalWidthPx = _model$dynamicBlocks.totalWidthPxWithoutBorders,
3508
3495
  totalBp = _model$dynamicBlocks.totalBp;
3509
- var displayBp = getBpDisplayStr(totalBp);
3496
+ var displayBp = util.getBpDisplayStr(totalBp);
3510
3497
  var x0 = Math.max(-offsetPx, 0);
3511
3498
  var x1 = x0 + totalWidthPx;
3512
3499
  return /*#__PURE__*/React__default.createElement(React__default.Fragment, null, /*#__PURE__*/React__default.createElement("line", {
@@ -4381,51 +4368,7 @@ function ExportSvgDlg(_ref) {
4381
4368
  }, "Submit")));
4382
4369
  }
4383
4370
 
4384
- var useStyles$9 = /*#__PURE__*/styles.makeStyles(function (theme) {
4385
- return {
4386
- closeButton: {
4387
- position: 'absolute',
4388
- right: theme.spacing(1),
4389
- top: theme.spacing(1),
4390
- color: theme.palette.grey[500]
4391
- }
4392
- };
4393
- });
4394
-
4395
- function ReturnToImportFormDialog(_ref) {
4396
- var model = _ref.model,
4397
- handleClose = _ref.handleClose;
4398
- var classes = useStyles$9();
4399
- return /*#__PURE__*/React__default.createElement(core.Dialog, {
4400
- maxWidth: "xl",
4401
- open: true,
4402
- onClose: handleClose
4403
- }, /*#__PURE__*/React__default.createElement(core.DialogTitle, null, "Reference sequence", handleClose ? /*#__PURE__*/React__default.createElement(core.IconButton, {
4404
- className: classes.closeButton,
4405
- onClick: function onClick() {
4406
- handleClose();
4407
- }
4408
- }, /*#__PURE__*/React__default.createElement(CloseIcon, null)) : null), /*#__PURE__*/React__default.createElement(core.Divider, null), /*#__PURE__*/React__default.createElement(core.DialogContent, null, /*#__PURE__*/React__default.createElement(core.Typography, null, "Are you sure you want to return to the import form? This will lose your current view")), /*#__PURE__*/React__default.createElement(core.DialogActions, null, /*#__PURE__*/React__default.createElement(core.Button, {
4409
- onClick: function onClick() {
4410
- model.clearView();
4411
- handleClose();
4412
- },
4413
- variant: "contained",
4414
- color: "primary",
4415
- autoFocus: true
4416
- }, "OK"), /*#__PURE__*/React__default.createElement(core.Button, {
4417
- onClick: function onClick() {
4418
- handleClose();
4419
- },
4420
- color: "secondary",
4421
- variant: "contained",
4422
- autoFocus: true
4423
- }, "Cancel")));
4424
- }
4425
-
4426
- var ReturnToImportFormDlg = /*#__PURE__*/mobxReact.observer(ReturnToImportFormDialog);
4427
-
4428
- var useStyles$a = /*#__PURE__*/styles.makeStyles({
4371
+ var useStyles$9 = /*#__PURE__*/styles.makeStyles({
4429
4372
  container: {
4430
4373
  display: 'flex',
4431
4374
  flexDirection: 'row',
@@ -4438,7 +4381,7 @@ var useStyles$a = /*#__PURE__*/styles.makeStyles({
4438
4381
 
4439
4382
  function ZoomControls(_ref) {
4440
4383
  var model = _ref.model;
4441
- var classes = useStyles$a();
4384
+ var classes = useStyles$9();
4442
4385
  var maxBpPerPx = model.maxBpPerPx,
4443
4386
  minBpPerPx = model.minBpPerPx,
4444
4387
  bpPerPx = model.bpPerPx,
@@ -4485,7 +4428,7 @@ function ZoomControls(_ref) {
4485
4428
 
4486
4429
  var ZoomControls$1 = /*#__PURE__*/mobxReact.observer(ZoomControls);
4487
4430
 
4488
- var useStyles$b = /*#__PURE__*/core.makeStyles(function (theme) {
4431
+ var useStyles$a = /*#__PURE__*/core.makeStyles(function (theme) {
4489
4432
  return {
4490
4433
  headerBar: {
4491
4434
  height: HEADER_BAR_HEIGHT,
@@ -4520,7 +4463,7 @@ var useStyles$b = /*#__PURE__*/core.makeStyles(function (theme) {
4520
4463
  });
4521
4464
  var HeaderButtons = /*#__PURE__*/mobxReact.observer(function (_ref) {
4522
4465
  var model = _ref.model;
4523
- var classes = useStyles$b();
4466
+ var classes = useStyles$a();
4524
4467
  return /*#__PURE__*/React__default.createElement(core.Button, {
4525
4468
  onClick: model.activateTrackSelector,
4526
4469
  className: classes.toggleButton,
@@ -4534,7 +4477,7 @@ var HeaderButtons = /*#__PURE__*/mobxReact.observer(function (_ref) {
4534
4477
 
4535
4478
  function PanControls(_ref2) {
4536
4479
  var model = _ref2.model;
4537
- var classes = useStyles$b();
4480
+ var classes = useStyles$a();
4538
4481
  return /*#__PURE__*/React__default.createElement(React__default.Fragment, null, /*#__PURE__*/React__default.createElement(core.Button, {
4539
4482
  variant: "outlined",
4540
4483
  className: classes.panButton,
@@ -4552,7 +4495,7 @@ function PanControls(_ref2) {
4552
4495
 
4553
4496
  var RegionWidth = /*#__PURE__*/mobxReact.observer(function (_ref3) {
4554
4497
  var model = _ref3.model;
4555
- var classes = useStyles$b();
4498
+ var classes = useStyles$a();
4556
4499
  var coarseTotalBp = model.coarseTotalBp;
4557
4500
  return /*#__PURE__*/React__default.createElement(core.Typography, {
4558
4501
  variant: "body2",
@@ -4563,7 +4506,7 @@ var RegionWidth = /*#__PURE__*/mobxReact.observer(function (_ref3) {
4563
4506
 
4564
4507
  var Controls = function Controls(_ref4) {
4565
4508
  var model = _ref4.model;
4566
- var classes = useStyles$b();
4509
+ var classes = useStyles$a();
4567
4510
  return /*#__PURE__*/React__default.createElement("div", {
4568
4511
  className: classes.headerBar
4569
4512
  }, /*#__PURE__*/React__default.createElement(HeaderButtons, {
@@ -4597,7 +4540,7 @@ var LinearGenomeViewHeader = /*#__PURE__*/mobxReact.observer(function (_ref5) {
4597
4540
  }));
4598
4541
  });
4599
4542
 
4600
- var useStyles$c = /*#__PURE__*/core.makeStyles(function (theme) {
4543
+ var useStyles$b = /*#__PURE__*/core.makeStyles(function (theme) {
4601
4544
  return {
4602
4545
  root: {
4603
4546
  background: core.alpha(theme.palette.background.paper, 0.8),
@@ -4631,7 +4574,7 @@ var useStyles$c = /*#__PURE__*/core.makeStyles(function (theme) {
4631
4574
  var TrackLabel = /*#__PURE__*/React__default.forwardRef(function (props, ref) {
4632
4575
  var _session$getTrackActi;
4633
4576
 
4634
- var classes = useStyles$c();
4577
+ var classes = useStyles$b();
4635
4578
 
4636
4579
  var _React$useState = React__default.useState(null),
4637
4580
  _React$useState2 = _slicedToArray(_React$useState, 2),
@@ -4682,7 +4625,9 @@ var TrackLabel = /*#__PURE__*/React__default.forwardRef(function (props, ref) {
4682
4625
  handleClose();
4683
4626
  }
4684
4627
 
4685
- var items = track.trackMenuItems();
4628
+ var items = [].concat(_toConsumableArray((_session$getTrackActi = session.getTrackActionMenuItems) === null || _session$getTrackActi === void 0 ? void 0 : _session$getTrackActi.call(session, trackConf)), _toConsumableArray(track.trackMenuItems())).sort(function (a, b) {
4629
+ return (b.priority || 0) - (a.priority || 0);
4630
+ });
4686
4631
  return /*#__PURE__*/React__default.createElement(React__default.Fragment, null, /*#__PURE__*/React__default.createElement(core.Paper, {
4687
4632
  ref: ref,
4688
4633
  className: clsx(className, classes.root)
@@ -4718,16 +4663,16 @@ var TrackLabel = /*#__PURE__*/React__default.forwardRef(function (props, ref) {
4718
4663
  onMenuItemClick: handleMenuItemClick,
4719
4664
  open: Boolean(anchorEl),
4720
4665
  onClose: handleClose,
4721
- menuItems: [].concat(_toConsumableArray((_session$getTrackActi = session.getTrackActionMenuItems) === null || _session$getTrackActi === void 0 ? void 0 : _session$getTrackActi.call(session, trackConf)), _toConsumableArray(items)).sort(function (a, b) {
4722
- return (b.priority || 0) - (a.priority || 0);
4723
- })
4666
+ menuItems: items
4724
4667
  }));
4725
4668
  });
4726
4669
  var TrackLabel$1 = /*#__PURE__*/mobxReact.observer(TrackLabel);
4727
4670
 
4728
- var useStyles$d = /*#__PURE__*/styles.makeStyles(function (theme) {
4671
+ var useStyles$c = /*#__PURE__*/styles.makeStyles(function (theme) {
4729
4672
  return {
4730
- root: {},
4673
+ root: {
4674
+ margin: 2
4675
+ },
4731
4676
  resizeHandle: {
4732
4677
  height: RESIZE_HANDLE_HEIGHT,
4733
4678
  boxSizing: 'border-box',
@@ -4743,16 +4688,8 @@ var useStyles$d = /*#__PURE__*/styles.makeStyles(function (theme) {
4743
4688
  zIndex: 3,
4744
4689
  borderRadius: theme.shape.borderRadius
4745
4690
  },
4746
- renderingComponentContainer: {
4747
- position: 'absolute',
4748
- // -1 offset because of the 1px border of the Paper
4749
- left: -1,
4750
- height: '100%',
4751
- width: '100%'
4752
- },
4753
4691
  trackLabel: {
4754
- zIndex: 3,
4755
- margin: theme.spacing(1)
4692
+ zIndex: 3
4756
4693
  },
4757
4694
  trackLabelInline: {
4758
4695
  position: 'relative',
@@ -4773,16 +4710,26 @@ var useStyles$d = /*#__PURE__*/styles.makeStyles(function (theme) {
4773
4710
  };
4774
4711
  });
4775
4712
 
4776
- function TrackContainer(props) {
4777
- var classes = useStyles$d();
4778
- var model = props.model,
4779
- track = props.track;
4713
+ function TrackContainerLabel(_ref) {
4714
+ var model = _ref.model,
4715
+ view = _ref.view;
4716
+ var classes = useStyles$c();
4717
+ var labelStyle = view.trackLabels === 'overlapping' ? classes.trackLabelOverlap : classes.trackLabelInline;
4718
+ return view.trackLabels !== 'hidden' ? /*#__PURE__*/React__default.createElement(TrackLabel$1, {
4719
+ track: model,
4720
+ className: clsx(classes.trackLabel, labelStyle)
4721
+ }) : null;
4722
+ }
4723
+
4724
+ function TrackContainer(_ref2) {
4725
+ var model = _ref2.model,
4726
+ track = _ref2.track;
4727
+ var classes = useStyles$c();
4780
4728
  var display = track.displays[0];
4781
4729
  var horizontalScroll = model.horizontalScroll,
4782
4730
  draggingTrackId = model.draggingTrackId,
4783
4731
  moveTrack = model.moveTrack;
4784
4732
  var height = display.height;
4785
- var view = util.getContainingView(display);
4786
4733
  var trackId = configuration.getConf(track, 'trackId');
4787
4734
  var ref = React.useRef(null);
4788
4735
  React.useEffect(function () {
@@ -4805,13 +4752,13 @@ function TrackContainer(props) {
4805
4752
  var RenderingComponent = display.RenderingComponent,
4806
4753
  DisplayBlurb = display.DisplayBlurb;
4807
4754
  var dimmed = draggingTrackId !== undefined && draggingTrackId !== display.id;
4808
- return /*#__PURE__*/React__default.createElement("div", {
4809
- className: classes.root
4810
- }, view.trackLabels !== 'hidden' ? /*#__PURE__*/React__default.createElement(TrackLabel$1, {
4811
- track: track,
4812
- className: clsx(classes.trackLabel, view.trackLabels === 'overlapping' ? classes.trackLabelOverlap : classes.trackLabelInline)
4813
- }) : null, /*#__PURE__*/React__default.createElement(Paper, {
4814
- variant: "outlined",
4755
+ return /*#__PURE__*/React__default.createElement(Paper, {
4756
+ className: classes.root,
4757
+ variant: "outlined"
4758
+ }, /*#__PURE__*/React__default.createElement(TrackContainerLabel, {
4759
+ model: track,
4760
+ view: model
4761
+ }), /*#__PURE__*/React__default.createElement("div", {
4815
4762
  className: classes.trackRenderingContainer,
4816
4763
  style: {
4817
4764
  height: height
@@ -4821,17 +4768,15 @@ function TrackContainer(props) {
4821
4768
  display.setScrollTop(target.scrollTop);
4822
4769
  },
4823
4770
  onDragEnter: debouncedOnDragEnter,
4824
- "data-testid": "trackRenderingContainer-".concat(view.id, "-").concat(trackId),
4771
+ "data-testid": "trackRenderingContainer-".concat(model.id, "-").concat(trackId),
4825
4772
  role: "presentation"
4826
4773
  }, /*#__PURE__*/React__default.createElement("div", {
4827
4774
  ref: ref,
4828
- className: classes.renderingComponentContainer,
4829
4775
  style: {
4830
4776
  transform: "scaleX(".concat(model.scaleFactor, ")")
4831
4777
  }
4832
4778
  }, /*#__PURE__*/React__default.createElement(RenderingComponent, {
4833
4779
  model: display,
4834
- blockState: {},
4835
4780
  onHorizontalScroll: horizontalScroll
4836
4781
  })), DisplayBlurb ? /*#__PURE__*/React__default.createElement("div", {
4837
4782
  style: {
@@ -4839,7 +4784,7 @@ function TrackContainer(props) {
4839
4784
  left: 0,
4840
4785
  top: display.height - 20
4841
4786
  }
4842
- }, ' ', /*#__PURE__*/React__default.createElement(DisplayBlurb, {
4787
+ }, /*#__PURE__*/React__default.createElement(DisplayBlurb, {
4843
4788
  model: display
4844
4789
  })) : null), /*#__PURE__*/React__default.createElement("div", {
4845
4790
  className: classes.overlay,
@@ -4856,7 +4801,7 @@ function TrackContainer(props) {
4856
4801
 
4857
4802
  var TrackContainer$1 = /*#__PURE__*/mobxReact.observer(TrackContainer);
4858
4803
 
4859
- var useStyles$e = /*#__PURE__*/styles.makeStyles(function (theme) {
4804
+ var useStyles$d = /*#__PURE__*/styles.makeStyles(function (theme) {
4860
4805
  var background = theme.palette.tertiary ? colorManipulator.alpha(theme.palette.tertiary.main, 0.7) : colorManipulator.alpha(theme.palette.primary.main, 0.7);
4861
4806
  return {
4862
4807
  rubberBand: {
@@ -4895,7 +4840,7 @@ var useStyles$e = /*#__PURE__*/styles.makeStyles(function (theme) {
4895
4840
  var VerticalGuide = /*#__PURE__*/mobxReact.observer(function (_ref) {
4896
4841
  var model = _ref.model,
4897
4842
  coordX = _ref.coordX;
4898
- var classes = useStyles$e();
4843
+ var classes = useStyles$d();
4899
4844
  return /*#__PURE__*/React__default.createElement(Tooltip$1, {
4900
4845
  open: true,
4901
4846
  placement: "top",
@@ -4939,7 +4884,7 @@ function RubberBand(_ref2) {
4939
4884
 
4940
4885
  var controlsRef = React.useRef(null);
4941
4886
  var rubberBandRef = React.useRef(null);
4942
- var classes = useStyles$e();
4887
+ var classes = useStyles$d();
4943
4888
  var mouseDragging = startX !== undefined && anchorPosition === undefined;
4944
4889
  var setOffsets = model.setOffsets,
4945
4890
  pxToBp = model.pxToBp;
@@ -5142,7 +5087,7 @@ RubberBand.defaultProps = {
5142
5087
  var RubberBand$1 = /*#__PURE__*/mobxReact.observer(RubberBand);
5143
5088
 
5144
5089
  var _excluded$1 = ["model", "style", "className"];
5145
- var useStyles$f = /*#__PURE__*/styles.makeStyles(function (theme) {
5090
+ var useStyles$e = /*#__PURE__*/styles.makeStyles(function (theme) {
5146
5091
  return {
5147
5092
  scaleBarContainer: {
5148
5093
  overflow: 'hidden',
@@ -5186,7 +5131,7 @@ var useStyles$f = /*#__PURE__*/styles.makeStyles(function (theme) {
5186
5131
  });
5187
5132
  var RenderedRefNameLabels = /*#__PURE__*/mobxReact.observer(function (_ref) {
5188
5133
  var model = _ref.model;
5189
- var classes = useStyles$f(); // find the block that needs pinning to the left side for context
5134
+ var classes = useStyles$e(); // find the block that needs pinning to the left side for context
5190
5135
 
5191
5136
  var lastLeftBlock = 0;
5192
5137
  model.staticBlocks.forEach(function (block, i) {
@@ -5208,7 +5153,7 @@ var RenderedRefNameLabels = /*#__PURE__*/mobxReact.observer(function (_ref) {
5208
5153
  });
5209
5154
  var RenderedScaleBarLabels = /*#__PURE__*/mobxReact.observer(function (_ref2) {
5210
5155
  var model = _ref2.model;
5211
- var classes = useStyles$f();
5156
+ var classes = useStyles$e();
5212
5157
  return /*#__PURE__*/React__default.createElement(React__default.Fragment, null, model.staticBlocks.map(function (block, index) {
5213
5158
  if (block instanceof blockTypes.ContentBlock) {
5214
5159
  var ticks = makeTicks(block.start, block.end, model.bpPerPx, true, false);
@@ -5261,7 +5206,7 @@ var ScaleBar$2 = /*#__PURE__*/React__default.forwardRef(function (_ref3, ref) {
5261
5206
  className = _ref3.className,
5262
5207
  other = _objectWithoutProperties(_ref3, _excluded$1);
5263
5208
 
5264
- var classes = useStyles$f();
5209
+ var classes = useStyles$e();
5265
5210
  var offsetLeft = model.staticBlocks.offsetPx - model.offsetPx;
5266
5211
  return /*#__PURE__*/React__default.createElement(Paper, Object.assign({
5267
5212
  "data-resizer": "true" // used to avoid click-and-drag scrolls on trackscontainer
@@ -5289,7 +5234,7 @@ var ScaleBar$2 = /*#__PURE__*/React__default.forwardRef(function (_ref3, ref) {
5289
5234
  });
5290
5235
  var ScaleBar$3 = /*#__PURE__*/mobxReact.observer(ScaleBar$2);
5291
5236
 
5292
- var useStyles$g = /*#__PURE__*/styles.makeStyles(function (theme) {
5237
+ var useStyles$f = /*#__PURE__*/styles.makeStyles(function (theme) {
5293
5238
  return {
5294
5239
  verticalGuidesZoomContainer: {
5295
5240
  position: 'absolute',
@@ -5320,7 +5265,7 @@ var useStyles$g = /*#__PURE__*/styles.makeStyles(function (theme) {
5320
5265
  });
5321
5266
  var RenderedVerticalGuides = /*#__PURE__*/mobxReact.observer(function (_ref) {
5322
5267
  var model = _ref.model;
5323
- var classes = useStyles$g();
5268
+ var classes = useStyles$f();
5324
5269
  return /*#__PURE__*/React__default.createElement(React__default.Fragment, null, model.staticBlocks.map(function (block, index) {
5325
5270
  if (block instanceof blockTypes.ContentBlock) {
5326
5271
  var ticks = makeTicks(block.start, block.end, model.bpPerPx);
@@ -5360,7 +5305,7 @@ var RenderedVerticalGuides = /*#__PURE__*/mobxReact.observer(function (_ref) {
5360
5305
 
5361
5306
  function VerticalGuides(_ref2) {
5362
5307
  var model = _ref2.model;
5363
- var classes = useStyles$g(); // find the block that needs pinning to the left side for context
5308
+ var classes = useStyles$f(); // find the block that needs pinning to the left side for context
5364
5309
 
5365
5310
  var offsetLeft = model.staticBlocks.offsetPx - model.offsetPx;
5366
5311
  return /*#__PURE__*/React__default.createElement("div", {
@@ -5381,7 +5326,7 @@ function VerticalGuides(_ref2) {
5381
5326
 
5382
5327
  var VerticalGuides$1 = /*#__PURE__*/mobxReact.observer(VerticalGuides);
5383
5328
 
5384
- var useStyles$h = /*#__PURE__*/styles.makeStyles(function () {
5329
+ var useStyles$g = /*#__PURE__*/styles.makeStyles(function () {
5385
5330
  return {
5386
5331
  centerLineContainer: {
5387
5332
  background: 'transparent',
@@ -5410,7 +5355,7 @@ function CenterLine(_ref) {
5410
5355
  tracks = model.tracks,
5411
5356
  width = model.width;
5412
5357
  var ref = React.useRef(null);
5413
- var classes = useStyles$h();
5358
+ var classes = useStyles$g();
5414
5359
  var startingPosition = width / 2;
5415
5360
  return tracks.length ? /*#__PURE__*/React__default.createElement("div", {
5416
5361
  "data-testid": "centerline_container",
@@ -5437,7 +5382,7 @@ CenterLine.propTypes = {
5437
5382
  };
5438
5383
  var CenterLine$1 = /*#__PURE__*/mobxReact.observer(CenterLine);
5439
5384
 
5440
- var useStyles$i = /*#__PURE__*/styles.makeStyles(function (theme) {
5385
+ var useStyles$h = /*#__PURE__*/styles.makeStyles(function (theme) {
5441
5386
  return {
5442
5387
  tracksContainer: {
5443
5388
  position: 'relative',
@@ -5454,7 +5399,7 @@ var useStyles$i = /*#__PURE__*/styles.makeStyles(function (theme) {
5454
5399
  function TracksContainer(_ref) {
5455
5400
  var children = _ref.children,
5456
5401
  model = _ref.model;
5457
- var classes = useStyles$i(); // refs are to store these variables to avoid repeated rerenders associated
5402
+ var classes = useStyles$h(); // refs are to store these variables to avoid repeated rerenders associated
5458
5403
  // with useState/setState
5459
5404
 
5460
5405
  var delta = React.useRef(0);
@@ -5610,8 +5555,6 @@ function TracksContainer(_ref) {
5610
5555
  boxSizing: 'border-box'
5611
5556
  }
5612
5557
  })
5613
- }), /*#__PURE__*/React__default.createElement("div", {
5614
- className: classes.spacer
5615
5558
  }), children);
5616
5559
  }
5617
5560
 
@@ -5620,7 +5563,7 @@ var TracksContainer$1 = /*#__PURE__*/mobxReact.observer(TracksContainer);
5620
5563
  var SearchResultsDialog = /*#__PURE__*/React.lazy(function () {
5621
5564
  return Promise.resolve().then(function () { return SearchResultsDialog$2; });
5622
5565
  });
5623
- var useStyles$j = /*#__PURE__*/core.makeStyles(function (theme) {
5566
+ var useStyles$i = /*#__PURE__*/core.makeStyles(function (theme) {
5624
5567
  return {
5625
5568
  importFormContainer: {
5626
5569
  padding: theme.spacing(2)
@@ -5634,7 +5577,7 @@ var ImportForm = /*#__PURE__*/mobxReact.observer(function (_ref) {
5634
5577
  var _regions$;
5635
5578
 
5636
5579
  var model = _ref.model;
5637
- var classes = useStyles$j();
5580
+ var classes = useStyles$i();
5638
5581
  var session = util.getSession(model);
5639
5582
  var assemblyNames = session.assemblyNames,
5640
5583
  assemblyManager = session.assemblyManager,
@@ -5934,7 +5877,7 @@ var MiniControls = /*#__PURE__*/mobxReact.observer(function (props) {
5934
5877
  }));
5935
5878
  });
5936
5879
 
5937
- var useStyles$k = /*#__PURE__*/core.makeStyles(function (theme) {
5880
+ var useStyles$j = /*#__PURE__*/core.makeStyles(function (theme) {
5938
5881
  return {
5939
5882
  loadingMessage: {
5940
5883
  padding: theme.spacing(5)
@@ -6030,7 +5973,7 @@ function _fetchSequence() {
6030
5973
  function SequenceDialog(_ref) {
6031
5974
  var model = _ref.model,
6032
5975
  handleClose = _ref.handleClose;
6033
- var classes = useStyles$k();
5976
+ var classes = useStyles$j();
6034
5977
  var session = util.getSession(model);
6035
5978
 
6036
5979
  var _useState = React.useState(),
@@ -6195,7 +6138,7 @@ function SequenceDialog(_ref) {
6195
6138
 
6196
6139
  var SequenceDialog$1 = /*#__PURE__*/mobxReact.observer(SequenceDialog);
6197
6140
 
6198
- var useStyles$l = /*#__PURE__*/core.makeStyles(function (theme) {
6141
+ var useStyles$k = /*#__PURE__*/core.makeStyles(function (theme) {
6199
6142
  return {
6200
6143
  dialogContent: {
6201
6144
  width: '80em'
@@ -6214,7 +6157,7 @@ function SearchResultsDialog$1(_ref) {
6214
6157
  var model = _ref.model,
6215
6158
  optAssemblyName = _ref.optAssemblyName,
6216
6159
  handleClose = _ref.handleClose;
6217
- var classes = useStyles$l();
6160
+ var classes = useStyles$k();
6218
6161
  var session = util.getSession(model);
6219
6162
 
6220
6163
  var _getEnv = mobxStateTree.getEnv(session),
@@ -6335,11 +6278,11 @@ function SearchResultsDialog$1(_ref) {
6335
6278
 
6336
6279
  var SearchResultsDialog$2 = {
6337
6280
  __proto__: null,
6338
- useStyles: useStyles$l,
6281
+ useStyles: useStyles$k,
6339
6282
  'default': SearchResultsDialog$1
6340
6283
  };
6341
6284
 
6342
- var useStyles$m = /*#__PURE__*/core.makeStyles(function (theme) {
6285
+ var useStyles$l = /*#__PURE__*/core.makeStyles(function (theme) {
6343
6286
  return {
6344
6287
  note: {
6345
6288
  textAlign: 'center',
@@ -6375,7 +6318,7 @@ var LinearGenomeView = /*#__PURE__*/mobxReact.observer(function (_ref) {
6375
6318
  hideHeader = model.hideHeader,
6376
6319
  initialized = model.initialized,
6377
6320
  hasDisplayedRegions = model.hasDisplayedRegions;
6378
- var classes = useStyles$m();
6321
+ var classes = useStyles$l();
6379
6322
 
6380
6323
  if (!initialized && !error) {
6381
6324
  return /*#__PURE__*/React__default.createElement(core.Typography, {
@@ -6456,7 +6399,7 @@ function calculateVisibleLocStrings(contentBlocks) {
6456
6399
  assemblyName: isSingleAssemblyName ? undefined : block.assemblyName
6457
6400
  }));
6458
6401
  });
6459
- return locs.join(';');
6402
+ return locs.join(' ');
6460
6403
  }
6461
6404
 
6462
6405
  var HEADER_BAR_HEIGHT = 48;
@@ -6489,11 +6432,11 @@ function stateModelFactory$1(pluginManager) {
6489
6432
  }),
6490
6433
  showCenterLine: mobxStateTree.types.optional(mobxStateTree.types["boolean"], function () {
6491
6434
  var setting = localStorageGetItem('lgv-showCenterLine');
6492
- return setting !== undefined ? !!setting : false;
6435
+ return setting !== undefined && setting !== null ? !!+setting : false;
6493
6436
  }),
6494
6437
  showCytobandsSetting: mobxStateTree.types.optional(mobxStateTree.types["boolean"], function () {
6495
6438
  var setting = localStorageGetItem('lgv-showCytobands');
6496
- return setting !== undefined ? !!setting : true;
6439
+ return setting !== undefined && setting !== null ? !!+setting : true;
6497
6440
  })
6498
6441
  }))["volatile"](function () {
6499
6442
  return {
@@ -7020,100 +6963,73 @@ function stateModelFactory$1(pluginManager) {
7020
6963
  throw new Error("invalid track selector type ".concat(self.trackSelectorType));
7021
6964
  },
7022
6965
  navToLocString: function navToLocString(locString, optAssemblyName) {
6966
+ var assemblyNames = self.assemblyNames;
6967
+
7023
6968
  var _getSession3 = util.getSession(self),
7024
6969
  assemblyManager = _getSession3.assemblyManager;
7025
6970
 
7026
6971
  var isValidRefName = assemblyManager.isValidRefName;
7027
- var locStrings = locString.split(';');
7028
-
7029
- if (self.displayedRegions.length > 1) {
7030
- var locations = locStrings.map(function (ls) {
7031
- return util.parseLocString(ls, isValidRefName);
6972
+ var assemblyName = optAssemblyName || assemblyNames[0];
6973
+ var parsedLocStrings = locString.split(' ').filter(function (f) {
6974
+ return !!f.trim();
6975
+ }).map(function (l) {
6976
+ return util.parseLocString(l, function (ref) {
6977
+ return isValidRefName(ref, assemblyName);
7032
6978
  });
7033
- this.navToMultiple(locations);
7034
- return;
7035
- }
7036
-
7037
- var assemblyName = optAssemblyName;
7038
- var defaultRefName = '';
7039
-
7040
- if (self.displayedRegions.length !== 0) {
7041
- // defaults
7042
- assemblyName = self.displayedRegions[0].assemblyName;
7043
- defaultRefName = self.displayedRegions[0].refName;
7044
- }
7045
-
7046
- var assembly = assemblyName && assemblyManager.get(assemblyName);
7047
-
7048
- if (!assembly) {
7049
- throw new Error("Could not find assembly ".concat(assemblyName));
7050
- }
7051
-
7052
- var _assembly = assembly,
7053
- regions = _assembly.regions;
7054
-
7055
- if (!regions) {
7056
- throw new Error("Regions for assembly ".concat(assemblyName, " not yet loaded"));
7057
- }
7058
-
7059
- if (locStrings.length > 1) {
7060
- throw new Error('Navigating to multiple locations is not allowed when viewing a whole chromosome');
7061
- }
7062
-
7063
- var parsedLocString = util.parseLocString(locStrings[0], function (refName) {
7064
- return isValidRefName(refName, assemblyName);
7065
6979
  });
7066
- var changedAssembly = false;
6980
+ var locations = parsedLocStrings.map(function (region) {
6981
+ var asmName = region.assemblyName || assemblyName;
6982
+ var asm = assemblyManager.get(asmName);
6983
+ var refName = region.refName;
7067
6984
 
7068
- if (parsedLocString.assemblyName && parsedLocString.assemblyName !== assemblyName) {
7069
- var newAssembly = assemblyManager.get(parsedLocString.assemblyName);
7070
-
7071
- if (!newAssembly) {
7072
- throw new Error("Could not find assembly ".concat(parsedLocString.assemblyName));
6985
+ if (!asm) {
6986
+ throw new Error("assembly ".concat(asmName, " not found"));
7073
6987
  }
7074
6988
 
7075
- assembly = newAssembly;
7076
- changedAssembly = true;
7077
- var newRegions = newAssembly.regions;
6989
+ var regions = asm.regions;
7078
6990
 
7079
- if (!newRegions) {
7080
- throw new Error("Regions for assembly ".concat(parsedLocString.assemblyName, " not yet loaded"));
6991
+ if (!regions) {
6992
+ throw new Error("regions not loaded yet for ".concat(asmName));
7081
6993
  }
7082
6994
 
7083
- regions = newRegions;
7084
- }
7085
-
7086
- var canonicalRefName = assembly.getCanonicalRefName(parsedLocString.refName);
6995
+ var canonicalRefName = asm.getCanonicalRefName(region.refName);
7087
6996
 
7088
- if (!canonicalRefName) {
7089
- throw new Error("Could not find refName ".concat(parsedLocString.refName, " in ").concat(assembly.name));
7090
- }
6997
+ if (!canonicalRefName) {
6998
+ throw new Error("Could not find refName ".concat(refName, " in ").concat(asm.name));
6999
+ }
7091
7000
 
7092
- if (changedAssembly || canonicalRefName !== defaultRefName) {
7093
- var newDisplayedRegion = regions.find(function (region) {
7001
+ var parentRegion = regions.find(function (region) {
7094
7002
  return region.refName === canonicalRefName;
7095
7003
  });
7096
7004
 
7097
- if (newDisplayedRegion) {
7098
- this.setDisplayedRegions([newDisplayedRegion]);
7099
- } else {
7100
- throw new Error("Could not find refName ".concat(parsedLocString.refName, " in ").concat(assembly.name));
7005
+ if (!parentRegion) {
7006
+ throw new Error("Could not find refName ".concat(refName, " in ").concat(asmName));
7101
7007
  }
7102
- }
7103
7008
 
7104
- var displayedRegion = regions.find(function (region) {
7105
- return region.refName === canonicalRefName;
7009
+ return _objectSpread2(_objectSpread2({}, region), {}, {
7010
+ assemblyName: asmName,
7011
+ parentRegion: parentRegion
7012
+ });
7106
7013
  });
7107
7014
 
7108
- if (displayedRegion) {
7109
- var _parsedLocString$star, _parsedLocString$end;
7110
-
7111
- var start = util.clamp((_parsedLocString$star = parsedLocString === null || parsedLocString === void 0 ? void 0 : parsedLocString.start) !== null && _parsedLocString$star !== void 0 ? _parsedLocString$star : 0, 0, displayedRegion.end);
7112
- var end = util.clamp((_parsedLocString$end = parsedLocString === null || parsedLocString === void 0 ? void 0 : parsedLocString.end) !== null && _parsedLocString$end !== void 0 ? _parsedLocString$end : displayedRegion.end, 0, displayedRegion.end);
7113
- this.navTo(_objectSpread2(_objectSpread2({}, parsedLocString), {}, {
7114
- start: start,
7115
- end: end
7015
+ if (locations.length === 1) {
7016
+ var loc = locations[0];
7017
+ this.setDisplayedRegions([_objectSpread2({
7018
+ reversed: loc.reversed
7019
+ }, loc.parentRegion)]);
7020
+ var start = loc.start,
7021
+ end = loc.end,
7022
+ parentRegion = loc.parentRegion;
7023
+ this.navTo(_objectSpread2(_objectSpread2({}, loc), {}, {
7024
+ start: util.clamp(start !== null && start !== void 0 ? start : 0, 0, parentRegion.end),
7025
+ end: util.clamp(end !== null && end !== void 0 ? end : parentRegion.end, 0, parentRegion.end)
7026
+ }));
7027
+ } else {
7028
+ this.setDisplayedRegions( // @ts-ignore
7029
+ locations.map(function (r) {
7030
+ return r.start === undefined ? r.parentRegion : r;
7116
7031
  }));
7032
+ this.showAllRegions();
7117
7033
  }
7118
7034
  },
7119
7035
 
@@ -7235,26 +7151,6 @@ function stateModelFactory$1(pluginManager) {
7235
7151
  if (location.refName !== region.refName) {
7236
7152
  throw new Error("Entered location ".concat(util.assembleLocString(location), " does not match with displayed regions"));
7237
7153
  }
7238
-
7239
- if (locationIndex > 0) {
7240
- // does it reach the left side?
7241
- var matchesLeft = region.reversed ? locationEnd === region.end : locationStart === region.start;
7242
-
7243
- if (!matchesLeft) {
7244
- throw new Error("".concat(region.reversed ? 'End' : 'Start', " of region ").concat(util.assembleLocString(location), " should be ").concat((region.reversed ? region.end : region.start + 1).toLocaleString('en-US'), ", but it is not"));
7245
- }
7246
- }
7247
-
7248
- var isLast = locationIndex === locations.length - 1;
7249
-
7250
- if (!isLast) {
7251
- // does it reach the right side?
7252
- var matchesRight = region.reversed ? locationStart === region.start : locationEnd === region.end;
7253
-
7254
- if (!matchesRight) {
7255
- throw new Error("".concat(region.reversed ? 'Start' : 'End', " of region ").concat(util.assembleLocString(location), " should be ").concat((region.reversed ? region.start + 1 : region.end).toLocaleString('en-US'), ", but it is not"));
7256
- }
7257
- }
7258
7154
  }
7259
7155
 
7260
7156
  locationIndex -= 1;
@@ -7542,8 +7438,6 @@ function stateModelFactory$1(pluginManager) {
7542
7438
 
7543
7439
  };
7544
7440
  }).views(function (self) {
7545
- var currentlyCalculatedStaticBlocks;
7546
- var stringifiedCurrentlyCalculatedStaticBlocks = '';
7547
7441
  return {
7548
7442
  menuItems: function menuItems() {
7549
7443
  var canShowCytobands = self.canShowCytobands,
@@ -7551,10 +7445,10 @@ function stateModelFactory$1(pluginManager) {
7551
7445
  var menuItems = [{
7552
7446
  label: 'Return to import form',
7553
7447
  onClick: function onClick() {
7554
- util.getSession(self).queueDialog(function (doneCallback) {
7555
- return [ReturnToImportFormDlg, {
7448
+ util.getSession(self).queueDialog(function (handleClose) {
7449
+ return [ui.ReturnToImportFormDialog, {
7556
7450
  model: self,
7557
- handleClose: doneCallback
7451
+ handleClose: handleClose
7558
7452
  }];
7559
7453
  });
7560
7454
  },
@@ -7563,10 +7457,10 @@ function stateModelFactory$1(pluginManager) {
7563
7457
  label: 'Export SVG',
7564
7458
  icon: PhotoCameraIcon,
7565
7459
  onClick: function onClick() {
7566
- util.getSession(self).queueDialog(function (doneCallback) {
7460
+ util.getSession(self).queueDialog(function (handleClose) {
7567
7461
  return [ExportSvgDlg, {
7568
7462
  model: self,
7569
- handleClose: doneCallback
7463
+ handleClose: handleClose
7570
7464
  }];
7571
7465
  });
7572
7466
  }
@@ -7666,8 +7560,12 @@ function stateModelFactory$1(pluginManager) {
7666
7560
  }
7667
7561
 
7668
7562
  return menuItems;
7669
- },
7670
-
7563
+ }
7564
+ };
7565
+ }).views(function (self) {
7566
+ var currentlyCalculatedStaticBlocks;
7567
+ var stringifiedCurrentlyCalculatedStaticBlocks = '';
7568
+ return {
7671
7569
  get staticBlocks() {
7672
7570
  var ret = calculateStaticBlocks(self);
7673
7571
  var sret = JSON.stringify(ret);
@@ -8089,7 +7987,7 @@ var LinearGenomeViewPlugin = /*#__PURE__*/function (_Plugin) {
8089
7987
  return LinearGenomeViewPlugin;
8090
7988
  }(Plugin);
8091
7989
 
8092
- var useStyles$n = /*#__PURE__*/core.makeStyles(function (theme) {
7990
+ var useStyles$m = /*#__PURE__*/core.makeStyles(function (theme) {
8093
7991
  return {
8094
7992
  closeButton: {
8095
7993
  position: 'absolute',
@@ -8101,7 +7999,7 @@ var useStyles$n = /*#__PURE__*/core.makeStyles(function (theme) {
8101
7999
  });
8102
8000
  function HelpDialog$1(_ref) {
8103
8001
  var handleClose = _ref.handleClose;
8104
- var classes = useStyles$n();
8002
+ var classes = useStyles$m();
8105
8003
  return /*#__PURE__*/React__default.createElement(core.Dialog, {
8106
8004
  open: true,
8107
8005
  maxWidth: "xl",
@@ -8112,7 +8010,7 @@ function HelpDialog$1(_ref) {
8112
8010
  onClick: function onClick() {
8113
8011
  handleClose();
8114
8012
  }
8115
- }, /*#__PURE__*/React__default.createElement(CloseIcon, null)) : null), /*#__PURE__*/React__default.createElement(core.Divider, null), /*#__PURE__*/React__default.createElement(core.DialogContent, null, /*#__PURE__*/React__default.createElement("h3", null, "Searching"), /*#__PURE__*/React__default.createElement("ul", null, /*#__PURE__*/React__default.createElement("li", null, "Jump to a feature or reference sequence by typing its name in the location box and pressing Enter."), /*#__PURE__*/React__default.createElement("li", null, "Jump to a specific region by typing the region into the location box as: ", /*#__PURE__*/React__default.createElement("code", null, "ref:start..end"), " or ", /*#__PURE__*/React__default.createElement("code", null, "ref:start-end"), ". Commas are allowed in the start and end coordinates.")), /*#__PURE__*/React__default.createElement("h3", null, "Example Searches"), /*#__PURE__*/React__default.createElement("ul", null, /*#__PURE__*/React__default.createElement("li", null, /*#__PURE__*/React__default.createElement("code", null, "BRCA"), " - searches for the feature named BRCA"), /*#__PURE__*/React__default.createElement("li", null, /*#__PURE__*/React__default.createElement("code", null, "chr4"), " - jumps to chromosome 4"), /*#__PURE__*/React__default.createElement("li", null, /*#__PURE__*/React__default.createElement("code", null, "chr4:79,500,000..80,000,000"), " - jumps the region on chromosome 4 between 79.5Mb and 80Mb."))), /*#__PURE__*/React__default.createElement(core.Divider, null), /*#__PURE__*/React__default.createElement(core.DialogActions, null, /*#__PURE__*/React__default.createElement(core.Button, {
8013
+ }, /*#__PURE__*/React__default.createElement(CloseIcon, null)) : null), /*#__PURE__*/React__default.createElement(core.Divider, null), /*#__PURE__*/React__default.createElement(core.DialogContent, null, /*#__PURE__*/React__default.createElement("h3", null, "Searching"), /*#__PURE__*/React__default.createElement("ul", null, /*#__PURE__*/React__default.createElement("li", null, "Jump to a feature or reference sequence by typing its name in the location box and pressing Enter."), /*#__PURE__*/React__default.createElement("li", null, "Jump to a specific region by typing the region into the location box as: ", /*#__PURE__*/React__default.createElement("code", null, "ref:start..end"), " or ", /*#__PURE__*/React__default.createElement("code", null, "ref:start-end"), ". Commas are allowed in the start and end coordinates. A space-separated list of locstrings can be used to open up multiple chromosomes at a time")), /*#__PURE__*/React__default.createElement("h3", null, "Example Searches"), /*#__PURE__*/React__default.createElement("ul", null, /*#__PURE__*/React__default.createElement("li", null, /*#__PURE__*/React__default.createElement("code", null, "BRCA"), " - searches for the feature named BRCA"), /*#__PURE__*/React__default.createElement("li", null, /*#__PURE__*/React__default.createElement("code", null, "chr4"), " - jumps to chromosome 4"), /*#__PURE__*/React__default.createElement("li", null, /*#__PURE__*/React__default.createElement("code", null, "chr4:79,500,000..80,000,000"), " - jumps the region on chromosome 4 between 79.5Mb and 80Mb."), /*#__PURE__*/React__default.createElement("li", null, /*#__PURE__*/React__default.createElement("code", null, "chr1:1-100 chr2:1-100"), " - create a split view of chr1:1-100 and chr2:1-100"), /*#__PURE__*/React__default.createElement("li", null, /*#__PURE__*/React__default.createElement("code", null, "chr1 chr2 chr3"), " - open up multiple chromosomes at once"), /*#__PURE__*/React__default.createElement("li", null, /*#__PURE__*/React__default.createElement("code", null, "chr1:1-100[rev] chr2:1-100"), " - open up the first region in the horizontally flipped orientation"))), /*#__PURE__*/React__default.createElement(core.Divider, null), /*#__PURE__*/React__default.createElement(core.DialogActions, null, /*#__PURE__*/React__default.createElement(core.Button, {
8116
8014
  onClick: function onClick() {
8117
8015
  return handleClose();
8118
8016
  },
@@ -8122,11 +8020,11 @@ function HelpDialog$1(_ref) {
8122
8020
 
8123
8021
  var HelpDialog$2 = {
8124
8022
  __proto__: null,
8125
- useStyles: useStyles$n,
8023
+ useStyles: useStyles$m,
8126
8024
  'default': HelpDialog$1
8127
8025
  };
8128
8026
 
8129
- var useStyles$o = /*#__PURE__*/core.makeStyles(function (theme) {
8027
+ var useStyles$n = /*#__PURE__*/core.makeStyles(function (theme) {
8130
8028
  return {
8131
8029
  root: {
8132
8030
  width: 500
@@ -8146,7 +8044,7 @@ var useStyles$o = /*#__PURE__*/core.makeStyles(function (theme) {
8146
8044
  function SetMaxHeightDlg$1(props) {
8147
8045
  var model = props.model,
8148
8046
  handleClose = props.handleClose;
8149
- var classes = useStyles$o();
8047
+ var classes = useStyles$n();
8150
8048
  var _model$maxHeight = model.maxHeight,
8151
8049
  maxHeight = _model$maxHeight === void 0 ? '' : _model$maxHeight;
8152
8050