@jbrowse/plugin-linear-genome-view 1.6.5 → 1.6.8

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 (30) hide show
  1. package/dist/BaseLinearDisplay/models/baseLinearDisplayConfigSchema.d.ts +1 -1
  2. package/dist/LinearBareDisplay/configSchema.d.ts +1 -1
  3. package/dist/LinearBareDisplay/model.d.ts +7 -7
  4. package/dist/LinearBasicDisplay/configSchema.d.ts +1 -1
  5. package/dist/LinearBasicDisplay/model.d.ts +7 -7
  6. package/dist/LinearGenomeView/components/OverviewScaleBar.d.ts +6 -6
  7. package/dist/LinearGenomeView/components/TrackContainer.d.ts +1 -1
  8. package/dist/index.d.ts +22 -22
  9. package/dist/plugin-linear-genome-view.cjs.development.js +157 -242
  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 +158 -243
  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 +10 -13
  17. package/src/BaseLinearDisplay/models/BaseLinearDisplayModel.tsx +6 -1
  18. package/src/LinearBasicDisplay/components/SetMaxHeight.tsx +21 -12
  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 +34 -30
  24. package/src/LinearGenomeView/components/TracksContainer.tsx +0 -1
  25. package/src/LinearGenomeView/components/__snapshots__/LinearGenomeView.test.js.snap +32 -61
  26. package/src/LinearGenomeView/index.test.ts +44 -42
  27. package/src/LinearGenomeView/index.tsx +55 -131
  28. package/src/LinearGenomeView/volvoxDisplayedRegions.json +16 -0
  29. package/dist/LinearGenomeView/components/ReturnToImportFormDialog.d.ts +0 -9
  30. package/src/LinearGenomeView/components/ReturnToImportFormDialog.tsx +0 -83
@@ -21,8 +21,8 @@ var simpleFeature = require('@jbrowse/core/util/simpleFeature');
21
21
  var tracks = require('@jbrowse/core/util/tracks');
22
22
  var mobxStateTree = require('mobx-state-tree');
23
23
  var MenuOpenIcon = _interopDefault(require('@material-ui/icons/MenuOpen'));
24
- var ui = require('@jbrowse/core/ui');
25
24
  var mobxReact = require('mobx-react');
25
+ var ui = require('@jbrowse/core/ui');
26
26
  var reactPopper = require('react-popper');
27
27
  var styles = require('@material-ui/core/styles');
28
28
  var blockTypes = require('@jbrowse/core/util/blockTypes');
@@ -1349,7 +1349,7 @@ var useStyles$2 = /*#__PURE__*/core.makeStyles(function (theme) {
1349
1349
  color: theme.palette.common.white,
1350
1350
  fontFamily: theme.typography.fontFamily,
1351
1351
  padding: '4px 8px',
1352
- fontSize: theme.typography.pxToRem(10),
1352
+ fontSize: theme.typography.pxToRem(12),
1353
1353
  lineHeight: "".concat(round(14 / 10), "em"),
1354
1354
  maxWidth: 300,
1355
1355
  wordWrap: 'break-word'
@@ -1467,14 +1467,17 @@ var BaseLinearDisplay = /*#__PURE__*/mobxReact.observer(function (props) {
1467
1467
  }
1468
1468
  },
1469
1469
  onMouseMove: function onMouseMove(event) {
1470
- if (ref.current) {
1471
- var rect = ref.current.getBoundingClientRect();
1472
- setOffsetMouseCoord([event.clientX - rect.left, event.clientY - rect.top]);
1473
- setClientMouseCoord([event.clientX, event.clientY]);
1474
- setClientRect(rect);
1470
+ if (!ref.current) {
1471
+ return;
1475
1472
  }
1476
- },
1477
- role: "presentation"
1473
+
1474
+ var rect = ref.current.getBoundingClientRect();
1475
+ var left = rect.left,
1476
+ top = rect.top;
1477
+ setOffsetMouseCoord([event.clientX - left, event.clientY - top]);
1478
+ setClientMouseCoord([event.clientX, event.clientY]);
1479
+ setClientRect(rect);
1480
+ }
1478
1481
  }, DisplayMessageComponent ? /*#__PURE__*/React__default.createElement(DisplayMessageComponent, {
1479
1482
  model: model
1480
1483
  }) : /*#__PURE__*/React__default.createElement(LinearBlocks$1, Object.assign({}, props)), children, /*#__PURE__*/React__default.createElement(TooltipComponent, {
@@ -2394,9 +2397,10 @@ var BaseLinearDisplay$1 = /*#__PURE__*/mobxStateTree.types.compose('BaseLinearDi
2394
2397
  case 0:
2395
2398
  _context2.prev = 0;
2396
2399
  aborter = new AbortController();
2397
- view = util.getContainingView(self);
2400
+ view = util.getContainingView(self); // extra check for contentBlocks.length
2401
+ // https://github.com/GMOD/jbrowse-components/issues/2694
2398
2402
 
2399
- if (view.initialized) {
2403
+ if (!(!view.initialized || !view.staticBlocks.contentBlocks.length)) {
2400
2404
  _context2.next = 5;
2401
2405
  break;
2402
2406
  }
@@ -3245,7 +3249,8 @@ var Cytobands = /*#__PURE__*/mobxReact.observer(function (_ref2) {
3245
3249
  var overview = _ref2.overview,
3246
3250
  block = _ref2.block,
3247
3251
  assembly = _ref2.assembly;
3248
- var offsetPx = block.offsetPx;
3252
+ var offsetPx = block.offsetPx,
3253
+ reversed = block.reversed;
3249
3254
  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) {
3250
3255
  return {
3251
3256
  refName: assembly.getCanonicalRefName(f.get('refName')),
@@ -3268,6 +3273,9 @@ var Cytobands = /*#__PURE__*/mobxReact.observer(function (_ref2) {
3268
3273
  coord: end
3269
3274
  }), type];
3270
3275
  });
3276
+ var arr = cytobands || [];
3277
+ var lcap = reversed ? arr.length - 1 : 0;
3278
+ var rcap = reversed ? 0 : arr.length - 1;
3271
3279
  var firstCent = true;
3272
3280
  return cytobands ? /*#__PURE__*/React__default.createElement("g", {
3273
3281
  transform: "translate(-".concat(offsetPx, ")")
@@ -3296,13 +3304,13 @@ var Cytobands = /*#__PURE__*/mobxReact.observer(function (_ref2) {
3296
3304
  });
3297
3305
  }
3298
3306
 
3299
- if (index === 0) {
3307
+ if (lcap === index) {
3300
3308
  return /*#__PURE__*/React__default.createElement("path", {
3301
3309
  key: key,
3302
3310
  d: leftRoundedRect(Math.min(start, end), 0, Math.abs(end - start), HEADER_OVERVIEW_HEIGHT, 8),
3303
3311
  fill: colorMap[type]
3304
3312
  });
3305
- } else if (index === cytobands.length - 1) {
3313
+ } else if (rcap === index) {
3306
3314
  return /*#__PURE__*/React__default.createElement("path", {
3307
3315
  key: key,
3308
3316
  d: rightRoundedRect(Math.min(start, end), 0, Math.abs(end - start) - 2, HEADER_OVERVIEW_HEIGHT, 8),
@@ -3481,20 +3489,6 @@ function OverviewScaleBar(_ref7) {
3481
3489
 
3482
3490
  var OverviewScaleBar$1 = /*#__PURE__*/mobxReact.observer(OverviewScaleBar);
3483
3491
 
3484
- function getBpDisplayStr(totalBp) {
3485
- var displayBp;
3486
-
3487
- if (Math.floor(totalBp / 1000000) > 0) {
3488
- displayBp = "".concat(parseFloat((totalBp / 1000000).toPrecision(3)), "Mbp");
3489
- } else if (Math.floor(totalBp / 1000) > 0) {
3490
- displayBp = "".concat(parseFloat((totalBp / 1000).toPrecision(3)), "Kbp");
3491
- } else {
3492
- displayBp = "".concat(Math.floor(totalBp), "bp");
3493
- }
3494
-
3495
- return displayBp;
3496
- }
3497
-
3498
3492
  function ScaleBar$1(_ref) {
3499
3493
  var model = _ref.model,
3500
3494
  fontSize = _ref.fontSize;
@@ -3502,7 +3496,7 @@ function ScaleBar$1(_ref) {
3502
3496
  _model$dynamicBlocks = model.dynamicBlocks,
3503
3497
  totalWidthPx = _model$dynamicBlocks.totalWidthPxWithoutBorders,
3504
3498
  totalBp = _model$dynamicBlocks.totalBp;
3505
- var displayBp = getBpDisplayStr(totalBp);
3499
+ var displayBp = util.getBpDisplayStr(totalBp);
3506
3500
  var x0 = Math.max(-offsetPx, 0);
3507
3501
  var x1 = x0 + totalWidthPx;
3508
3502
  return /*#__PURE__*/React__default.createElement(React__default.Fragment, null, /*#__PURE__*/React__default.createElement("line", {
@@ -4377,51 +4371,7 @@ function ExportSvgDlg(_ref) {
4377
4371
  }, "Submit")));
4378
4372
  }
4379
4373
 
4380
- var useStyles$9 = /*#__PURE__*/styles.makeStyles(function (theme) {
4381
- return {
4382
- closeButton: {
4383
- position: 'absolute',
4384
- right: theme.spacing(1),
4385
- top: theme.spacing(1),
4386
- color: theme.palette.grey[500]
4387
- }
4388
- };
4389
- });
4390
-
4391
- function ReturnToImportFormDialog(_ref) {
4392
- var model = _ref.model,
4393
- handleClose = _ref.handleClose;
4394
- var classes = useStyles$9();
4395
- return /*#__PURE__*/React__default.createElement(core.Dialog, {
4396
- maxWidth: "xl",
4397
- open: true,
4398
- onClose: handleClose
4399
- }, /*#__PURE__*/React__default.createElement(core.DialogTitle, null, "Reference sequence", handleClose ? /*#__PURE__*/React__default.createElement(core.IconButton, {
4400
- className: classes.closeButton,
4401
- onClick: function onClick() {
4402
- handleClose();
4403
- }
4404
- }, /*#__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, {
4405
- onClick: function onClick() {
4406
- model.clearView();
4407
- handleClose();
4408
- },
4409
- variant: "contained",
4410
- color: "primary",
4411
- autoFocus: true
4412
- }, "OK"), /*#__PURE__*/React__default.createElement(core.Button, {
4413
- onClick: function onClick() {
4414
- handleClose();
4415
- },
4416
- color: "secondary",
4417
- variant: "contained",
4418
- autoFocus: true
4419
- }, "Cancel")));
4420
- }
4421
-
4422
- var ReturnToImportFormDlg = /*#__PURE__*/mobxReact.observer(ReturnToImportFormDialog);
4423
-
4424
- var useStyles$a = /*#__PURE__*/styles.makeStyles({
4374
+ var useStyles$9 = /*#__PURE__*/styles.makeStyles({
4425
4375
  container: {
4426
4376
  display: 'flex',
4427
4377
  flexDirection: 'row',
@@ -4434,7 +4384,7 @@ var useStyles$a = /*#__PURE__*/styles.makeStyles({
4434
4384
 
4435
4385
  function ZoomControls(_ref) {
4436
4386
  var model = _ref.model;
4437
- var classes = useStyles$a();
4387
+ var classes = useStyles$9();
4438
4388
  var maxBpPerPx = model.maxBpPerPx,
4439
4389
  minBpPerPx = model.minBpPerPx,
4440
4390
  bpPerPx = model.bpPerPx,
@@ -4481,7 +4431,7 @@ function ZoomControls(_ref) {
4481
4431
 
4482
4432
  var ZoomControls$1 = /*#__PURE__*/mobxReact.observer(ZoomControls);
4483
4433
 
4484
- var useStyles$b = /*#__PURE__*/core.makeStyles(function (theme) {
4434
+ var useStyles$a = /*#__PURE__*/core.makeStyles(function (theme) {
4485
4435
  return {
4486
4436
  headerBar: {
4487
4437
  height: HEADER_BAR_HEIGHT,
@@ -4516,7 +4466,7 @@ var useStyles$b = /*#__PURE__*/core.makeStyles(function (theme) {
4516
4466
  });
4517
4467
  var HeaderButtons = /*#__PURE__*/mobxReact.observer(function (_ref) {
4518
4468
  var model = _ref.model;
4519
- var classes = useStyles$b();
4469
+ var classes = useStyles$a();
4520
4470
  return /*#__PURE__*/React__default.createElement(core.Button, {
4521
4471
  onClick: model.activateTrackSelector,
4522
4472
  className: classes.toggleButton,
@@ -4530,7 +4480,7 @@ var HeaderButtons = /*#__PURE__*/mobxReact.observer(function (_ref) {
4530
4480
 
4531
4481
  function PanControls(_ref2) {
4532
4482
  var model = _ref2.model;
4533
- var classes = useStyles$b();
4483
+ var classes = useStyles$a();
4534
4484
  return /*#__PURE__*/React__default.createElement(React__default.Fragment, null, /*#__PURE__*/React__default.createElement(core.Button, {
4535
4485
  variant: "outlined",
4536
4486
  className: classes.panButton,
@@ -4548,7 +4498,7 @@ function PanControls(_ref2) {
4548
4498
 
4549
4499
  var RegionWidth = /*#__PURE__*/mobxReact.observer(function (_ref3) {
4550
4500
  var model = _ref3.model;
4551
- var classes = useStyles$b();
4501
+ var classes = useStyles$a();
4552
4502
  var coarseTotalBp = model.coarseTotalBp;
4553
4503
  return /*#__PURE__*/React__default.createElement(core.Typography, {
4554
4504
  variant: "body2",
@@ -4559,7 +4509,7 @@ var RegionWidth = /*#__PURE__*/mobxReact.observer(function (_ref3) {
4559
4509
 
4560
4510
  var Controls = function Controls(_ref4) {
4561
4511
  var model = _ref4.model;
4562
- var classes = useStyles$b();
4512
+ var classes = useStyles$a();
4563
4513
  return /*#__PURE__*/React__default.createElement("div", {
4564
4514
  className: classes.headerBar
4565
4515
  }, /*#__PURE__*/React__default.createElement(HeaderButtons, {
@@ -4593,7 +4543,7 @@ var LinearGenomeViewHeader = /*#__PURE__*/mobxReact.observer(function (_ref5) {
4593
4543
  }));
4594
4544
  });
4595
4545
 
4596
- var useStyles$c = /*#__PURE__*/core.makeStyles(function (theme) {
4546
+ var useStyles$b = /*#__PURE__*/core.makeStyles(function (theme) {
4597
4547
  return {
4598
4548
  root: {
4599
4549
  background: core.alpha(theme.palette.background.paper, 0.8),
@@ -4627,7 +4577,7 @@ var useStyles$c = /*#__PURE__*/core.makeStyles(function (theme) {
4627
4577
  var TrackLabel = /*#__PURE__*/React__default.forwardRef(function (props, ref) {
4628
4578
  var _session$getTrackActi;
4629
4579
 
4630
- var classes = useStyles$c();
4580
+ var classes = useStyles$b();
4631
4581
 
4632
4582
  var _React$useState = React__default.useState(null),
4633
4583
  _React$useState2 = _slicedToArray(_React$useState, 2),
@@ -4721,9 +4671,11 @@ var TrackLabel = /*#__PURE__*/React__default.forwardRef(function (props, ref) {
4721
4671
  });
4722
4672
  var TrackLabel$1 = /*#__PURE__*/mobxReact.observer(TrackLabel);
4723
4673
 
4724
- var useStyles$d = /*#__PURE__*/styles.makeStyles(function (theme) {
4674
+ var useStyles$c = /*#__PURE__*/styles.makeStyles(function (theme) {
4725
4675
  return {
4726
- root: {},
4676
+ root: {
4677
+ marginTop: 2
4678
+ },
4727
4679
  resizeHandle: {
4728
4680
  height: RESIZE_HANDLE_HEIGHT,
4729
4681
  boxSizing: 'border-box',
@@ -4739,6 +4691,11 @@ var useStyles$d = /*#__PURE__*/styles.makeStyles(function (theme) {
4739
4691
  zIndex: 3,
4740
4692
  borderRadius: theme.shape.borderRadius
4741
4693
  },
4694
+ trackLabel: {
4695
+ zIndex: 3
4696
+ },
4697
+ // aligns with block bounderies. check for example the breakpoint split view
4698
+ // demo to see if features align if wanting to change things
4742
4699
  renderingComponentContainer: {
4743
4700
  position: 'absolute',
4744
4701
  // -1 offset because of the 1px border of the Paper
@@ -4746,10 +4703,6 @@ var useStyles$d = /*#__PURE__*/styles.makeStyles(function (theme) {
4746
4703
  height: '100%',
4747
4704
  width: '100%'
4748
4705
  },
4749
- trackLabel: {
4750
- zIndex: 3,
4751
- margin: theme.spacing(1)
4752
- },
4753
4706
  trackLabelInline: {
4754
4707
  position: 'relative',
4755
4708
  display: 'inline-block'
@@ -4763,22 +4716,30 @@ var useStyles$d = /*#__PURE__*/styles.makeStyles(function (theme) {
4763
4716
  whiteSpace: 'nowrap',
4764
4717
  position: 'relative',
4765
4718
  background: 'none',
4766
- zIndex: 2,
4767
- boxSizing: 'content-box'
4719
+ zIndex: 2
4768
4720
  }
4769
4721
  };
4770
4722
  });
4723
+ var TrackContainerLabel = /*#__PURE__*/mobxReact.observer(function (_ref) {
4724
+ var model = _ref.model,
4725
+ view = _ref.view;
4726
+ var classes = useStyles$c();
4727
+ var labelStyle = view.trackLabels === 'overlapping' ? classes.trackLabelOverlap : classes.trackLabelInline;
4728
+ return view.trackLabels !== 'hidden' ? /*#__PURE__*/React__default.createElement(TrackLabel$1, {
4729
+ track: model,
4730
+ className: clsx(classes.trackLabel, labelStyle)
4731
+ }) : null;
4732
+ });
4771
4733
 
4772
- function TrackContainer(props) {
4773
- var classes = useStyles$d();
4774
- var model = props.model,
4775
- track = props.track;
4734
+ function TrackContainer(_ref2) {
4735
+ var model = _ref2.model,
4736
+ track = _ref2.track;
4737
+ var classes = useStyles$c();
4776
4738
  var display = track.displays[0];
4777
4739
  var horizontalScroll = model.horizontalScroll,
4778
4740
  draggingTrackId = model.draggingTrackId,
4779
4741
  moveTrack = model.moveTrack;
4780
4742
  var height = display.height;
4781
- var view = util.getContainingView(display);
4782
4743
  var trackId = configuration.getConf(track, 'trackId');
4783
4744
  var ref = React.useRef(null);
4784
4745
  React.useEffect(function () {
@@ -4801,13 +4762,13 @@ function TrackContainer(props) {
4801
4762
  var RenderingComponent = display.RenderingComponent,
4802
4763
  DisplayBlurb = display.DisplayBlurb;
4803
4764
  var dimmed = draggingTrackId !== undefined && draggingTrackId !== display.id;
4804
- return /*#__PURE__*/React__default.createElement("div", {
4805
- className: classes.root
4806
- }, view.trackLabels !== 'hidden' ? /*#__PURE__*/React__default.createElement(TrackLabel$1, {
4807
- track: track,
4808
- className: clsx(classes.trackLabel, view.trackLabels === 'overlapping' ? classes.trackLabelOverlap : classes.trackLabelInline)
4809
- }) : null, /*#__PURE__*/React__default.createElement(Paper, {
4810
- variant: "outlined",
4765
+ return /*#__PURE__*/React__default.createElement(Paper, {
4766
+ className: classes.root,
4767
+ variant: "outlined"
4768
+ }, /*#__PURE__*/React__default.createElement(TrackContainerLabel, {
4769
+ model: track,
4770
+ view: model
4771
+ }), /*#__PURE__*/React__default.createElement("div", {
4811
4772
  className: classes.trackRenderingContainer,
4812
4773
  style: {
4813
4774
  height: height
@@ -4817,7 +4778,7 @@ function TrackContainer(props) {
4817
4778
  display.setScrollTop(target.scrollTop);
4818
4779
  },
4819
4780
  onDragEnter: debouncedOnDragEnter,
4820
- "data-testid": "trackRenderingContainer-".concat(view.id, "-").concat(trackId),
4781
+ "data-testid": "trackRenderingContainer-".concat(model.id, "-").concat(trackId),
4821
4782
  role: "presentation"
4822
4783
  }, /*#__PURE__*/React__default.createElement("div", {
4823
4784
  ref: ref,
@@ -4827,7 +4788,6 @@ function TrackContainer(props) {
4827
4788
  }
4828
4789
  }, /*#__PURE__*/React__default.createElement(RenderingComponent, {
4829
4790
  model: display,
4830
- blockState: {},
4831
4791
  onHorizontalScroll: horizontalScroll
4832
4792
  })), DisplayBlurb ? /*#__PURE__*/React__default.createElement("div", {
4833
4793
  style: {
@@ -4835,7 +4795,7 @@ function TrackContainer(props) {
4835
4795
  left: 0,
4836
4796
  top: display.height - 20
4837
4797
  }
4838
- }, ' ', /*#__PURE__*/React__default.createElement(DisplayBlurb, {
4798
+ }, /*#__PURE__*/React__default.createElement(DisplayBlurb, {
4839
4799
  model: display
4840
4800
  })) : null), /*#__PURE__*/React__default.createElement("div", {
4841
4801
  className: classes.overlay,
@@ -4852,7 +4812,7 @@ function TrackContainer(props) {
4852
4812
 
4853
4813
  var TrackContainer$1 = /*#__PURE__*/mobxReact.observer(TrackContainer);
4854
4814
 
4855
- var useStyles$e = /*#__PURE__*/styles.makeStyles(function (theme) {
4815
+ var useStyles$d = /*#__PURE__*/styles.makeStyles(function (theme) {
4856
4816
  var background = theme.palette.tertiary ? colorManipulator.alpha(theme.palette.tertiary.main, 0.7) : colorManipulator.alpha(theme.palette.primary.main, 0.7);
4857
4817
  return {
4858
4818
  rubberBand: {
@@ -4891,7 +4851,7 @@ var useStyles$e = /*#__PURE__*/styles.makeStyles(function (theme) {
4891
4851
  var VerticalGuide = /*#__PURE__*/mobxReact.observer(function (_ref) {
4892
4852
  var model = _ref.model,
4893
4853
  coordX = _ref.coordX;
4894
- var classes = useStyles$e();
4854
+ var classes = useStyles$d();
4895
4855
  return /*#__PURE__*/React__default.createElement(Tooltip$1, {
4896
4856
  open: true,
4897
4857
  placement: "top",
@@ -4935,7 +4895,7 @@ function RubberBand(_ref2) {
4935
4895
 
4936
4896
  var controlsRef = React.useRef(null);
4937
4897
  var rubberBandRef = React.useRef(null);
4938
- var classes = useStyles$e();
4898
+ var classes = useStyles$d();
4939
4899
  var mouseDragging = startX !== undefined && anchorPosition === undefined;
4940
4900
  var setOffsets = model.setOffsets,
4941
4901
  pxToBp = model.pxToBp;
@@ -5138,7 +5098,7 @@ RubberBand.defaultProps = {
5138
5098
  var RubberBand$1 = /*#__PURE__*/mobxReact.observer(RubberBand);
5139
5099
 
5140
5100
  var _excluded$1 = ["model", "style", "className"];
5141
- var useStyles$f = /*#__PURE__*/styles.makeStyles(function (theme) {
5101
+ var useStyles$e = /*#__PURE__*/styles.makeStyles(function (theme) {
5142
5102
  return {
5143
5103
  scaleBarContainer: {
5144
5104
  overflow: 'hidden',
@@ -5182,7 +5142,7 @@ var useStyles$f = /*#__PURE__*/styles.makeStyles(function (theme) {
5182
5142
  });
5183
5143
  var RenderedRefNameLabels = /*#__PURE__*/mobxReact.observer(function (_ref) {
5184
5144
  var model = _ref.model;
5185
- var classes = useStyles$f(); // find the block that needs pinning to the left side for context
5145
+ var classes = useStyles$e(); // find the block that needs pinning to the left side for context
5186
5146
 
5187
5147
  var lastLeftBlock = 0;
5188
5148
  model.staticBlocks.forEach(function (block, i) {
@@ -5204,7 +5164,7 @@ var RenderedRefNameLabels = /*#__PURE__*/mobxReact.observer(function (_ref) {
5204
5164
  });
5205
5165
  var RenderedScaleBarLabels = /*#__PURE__*/mobxReact.observer(function (_ref2) {
5206
5166
  var model = _ref2.model;
5207
- var classes = useStyles$f();
5167
+ var classes = useStyles$e();
5208
5168
  return /*#__PURE__*/React__default.createElement(React__default.Fragment, null, model.staticBlocks.map(function (block, index) {
5209
5169
  if (block instanceof blockTypes.ContentBlock) {
5210
5170
  var ticks = makeTicks(block.start, block.end, model.bpPerPx, true, false);
@@ -5257,7 +5217,7 @@ var ScaleBar$2 = /*#__PURE__*/React__default.forwardRef(function (_ref3, ref) {
5257
5217
  className = _ref3.className,
5258
5218
  other = _objectWithoutProperties(_ref3, _excluded$1);
5259
5219
 
5260
- var classes = useStyles$f();
5220
+ var classes = useStyles$e();
5261
5221
  var offsetLeft = model.staticBlocks.offsetPx - model.offsetPx;
5262
5222
  return /*#__PURE__*/React__default.createElement(Paper, Object.assign({
5263
5223
  "data-resizer": "true" // used to avoid click-and-drag scrolls on trackscontainer
@@ -5285,7 +5245,7 @@ var ScaleBar$2 = /*#__PURE__*/React__default.forwardRef(function (_ref3, ref) {
5285
5245
  });
5286
5246
  var ScaleBar$3 = /*#__PURE__*/mobxReact.observer(ScaleBar$2);
5287
5247
 
5288
- var useStyles$g = /*#__PURE__*/styles.makeStyles(function (theme) {
5248
+ var useStyles$f = /*#__PURE__*/styles.makeStyles(function (theme) {
5289
5249
  return {
5290
5250
  verticalGuidesZoomContainer: {
5291
5251
  position: 'absolute',
@@ -5316,7 +5276,7 @@ var useStyles$g = /*#__PURE__*/styles.makeStyles(function (theme) {
5316
5276
  });
5317
5277
  var RenderedVerticalGuides = /*#__PURE__*/mobxReact.observer(function (_ref) {
5318
5278
  var model = _ref.model;
5319
- var classes = useStyles$g();
5279
+ var classes = useStyles$f();
5320
5280
  return /*#__PURE__*/React__default.createElement(React__default.Fragment, null, model.staticBlocks.map(function (block, index) {
5321
5281
  if (block instanceof blockTypes.ContentBlock) {
5322
5282
  var ticks = makeTicks(block.start, block.end, model.bpPerPx);
@@ -5356,7 +5316,7 @@ var RenderedVerticalGuides = /*#__PURE__*/mobxReact.observer(function (_ref) {
5356
5316
 
5357
5317
  function VerticalGuides(_ref2) {
5358
5318
  var model = _ref2.model;
5359
- var classes = useStyles$g(); // find the block that needs pinning to the left side for context
5319
+ var classes = useStyles$f(); // find the block that needs pinning to the left side for context
5360
5320
 
5361
5321
  var offsetLeft = model.staticBlocks.offsetPx - model.offsetPx;
5362
5322
  return /*#__PURE__*/React__default.createElement("div", {
@@ -5377,7 +5337,7 @@ function VerticalGuides(_ref2) {
5377
5337
 
5378
5338
  var VerticalGuides$1 = /*#__PURE__*/mobxReact.observer(VerticalGuides);
5379
5339
 
5380
- var useStyles$h = /*#__PURE__*/styles.makeStyles(function () {
5340
+ var useStyles$g = /*#__PURE__*/styles.makeStyles(function () {
5381
5341
  return {
5382
5342
  centerLineContainer: {
5383
5343
  background: 'transparent',
@@ -5406,7 +5366,7 @@ function CenterLine(_ref) {
5406
5366
  tracks = model.tracks,
5407
5367
  width = model.width;
5408
5368
  var ref = React.useRef(null);
5409
- var classes = useStyles$h();
5369
+ var classes = useStyles$g();
5410
5370
  var startingPosition = width / 2;
5411
5371
  return tracks.length ? /*#__PURE__*/React__default.createElement("div", {
5412
5372
  "data-testid": "centerline_container",
@@ -5433,7 +5393,7 @@ CenterLine.propTypes = {
5433
5393
  };
5434
5394
  var CenterLine$1 = /*#__PURE__*/mobxReact.observer(CenterLine);
5435
5395
 
5436
- var useStyles$i = /*#__PURE__*/styles.makeStyles(function (theme) {
5396
+ var useStyles$h = /*#__PURE__*/styles.makeStyles(function (theme) {
5437
5397
  return {
5438
5398
  tracksContainer: {
5439
5399
  position: 'relative',
@@ -5450,7 +5410,7 @@ var useStyles$i = /*#__PURE__*/styles.makeStyles(function (theme) {
5450
5410
  function TracksContainer(_ref) {
5451
5411
  var children = _ref.children,
5452
5412
  model = _ref.model;
5453
- var classes = useStyles$i(); // refs are to store these variables to avoid repeated rerenders associated
5413
+ var classes = useStyles$h(); // refs are to store these variables to avoid repeated rerenders associated
5454
5414
  // with useState/setState
5455
5415
 
5456
5416
  var delta = React.useRef(0);
@@ -5606,8 +5566,6 @@ function TracksContainer(_ref) {
5606
5566
  boxSizing: 'border-box'
5607
5567
  }
5608
5568
  })
5609
- }), /*#__PURE__*/React__default.createElement("div", {
5610
- className: classes.spacer
5611
5569
  }), children);
5612
5570
  }
5613
5571
 
@@ -5616,7 +5574,7 @@ var TracksContainer$1 = /*#__PURE__*/mobxReact.observer(TracksContainer);
5616
5574
  var SearchResultsDialog = /*#__PURE__*/React.lazy(function () {
5617
5575
  return Promise.resolve().then(function () { return SearchResultsDialog$2; });
5618
5576
  });
5619
- var useStyles$j = /*#__PURE__*/core.makeStyles(function (theme) {
5577
+ var useStyles$i = /*#__PURE__*/core.makeStyles(function (theme) {
5620
5578
  return {
5621
5579
  importFormContainer: {
5622
5580
  padding: theme.spacing(2)
@@ -5630,7 +5588,7 @@ var ImportForm = /*#__PURE__*/mobxReact.observer(function (_ref) {
5630
5588
  var _regions$;
5631
5589
 
5632
5590
  var model = _ref.model;
5633
- var classes = useStyles$j();
5591
+ var classes = useStyles$i();
5634
5592
  var session = util.getSession(model);
5635
5593
  var assemblyNames = session.assemblyNames,
5636
5594
  assemblyManager = session.assemblyManager,
@@ -5930,7 +5888,7 @@ var MiniControls = /*#__PURE__*/mobxReact.observer(function (props) {
5930
5888
  }));
5931
5889
  });
5932
5890
 
5933
- var useStyles$k = /*#__PURE__*/core.makeStyles(function (theme) {
5891
+ var useStyles$j = /*#__PURE__*/core.makeStyles(function (theme) {
5934
5892
  return {
5935
5893
  loadingMessage: {
5936
5894
  padding: theme.spacing(5)
@@ -6026,7 +5984,7 @@ function _fetchSequence() {
6026
5984
  function SequenceDialog(_ref) {
6027
5985
  var model = _ref.model,
6028
5986
  handleClose = _ref.handleClose;
6029
- var classes = useStyles$k();
5987
+ var classes = useStyles$j();
6030
5988
  var session = util.getSession(model);
6031
5989
 
6032
5990
  var _useState = React.useState(),
@@ -6191,7 +6149,7 @@ function SequenceDialog(_ref) {
6191
6149
 
6192
6150
  var SequenceDialog$1 = /*#__PURE__*/mobxReact.observer(SequenceDialog);
6193
6151
 
6194
- var useStyles$l = /*#__PURE__*/core.makeStyles(function (theme) {
6152
+ var useStyles$k = /*#__PURE__*/core.makeStyles(function (theme) {
6195
6153
  return {
6196
6154
  dialogContent: {
6197
6155
  width: '80em'
@@ -6210,7 +6168,7 @@ function SearchResultsDialog$1(_ref) {
6210
6168
  var model = _ref.model,
6211
6169
  optAssemblyName = _ref.optAssemblyName,
6212
6170
  handleClose = _ref.handleClose;
6213
- var classes = useStyles$l();
6171
+ var classes = useStyles$k();
6214
6172
  var session = util.getSession(model);
6215
6173
 
6216
6174
  var _getEnv = mobxStateTree.getEnv(session),
@@ -6331,11 +6289,11 @@ function SearchResultsDialog$1(_ref) {
6331
6289
 
6332
6290
  var SearchResultsDialog$2 = {
6333
6291
  __proto__: null,
6334
- useStyles: useStyles$l,
6292
+ useStyles: useStyles$k,
6335
6293
  'default': SearchResultsDialog$1
6336
6294
  };
6337
6295
 
6338
- var useStyles$m = /*#__PURE__*/core.makeStyles(function (theme) {
6296
+ var useStyles$l = /*#__PURE__*/core.makeStyles(function (theme) {
6339
6297
  return {
6340
6298
  note: {
6341
6299
  textAlign: 'center',
@@ -6371,7 +6329,7 @@ var LinearGenomeView = /*#__PURE__*/mobxReact.observer(function (_ref) {
6371
6329
  hideHeader = model.hideHeader,
6372
6330
  initialized = model.initialized,
6373
6331
  hasDisplayedRegions = model.hasDisplayedRegions;
6374
- var classes = useStyles$m();
6332
+ var classes = useStyles$l();
6375
6333
 
6376
6334
  if (!initialized && !error) {
6377
6335
  return /*#__PURE__*/React__default.createElement(core.Typography, {
@@ -6452,7 +6410,7 @@ function calculateVisibleLocStrings(contentBlocks) {
6452
6410
  assemblyName: isSingleAssemblyName ? undefined : block.assemblyName
6453
6411
  }));
6454
6412
  });
6455
- return locs.join(';');
6413
+ return locs.join(' ');
6456
6414
  }
6457
6415
 
6458
6416
  var HEADER_BAR_HEIGHT = 48;
@@ -7016,100 +6974,73 @@ function stateModelFactory$1(pluginManager) {
7016
6974
  throw new Error("invalid track selector type ".concat(self.trackSelectorType));
7017
6975
  },
7018
6976
  navToLocString: function navToLocString(locString, optAssemblyName) {
6977
+ var assemblyNames = self.assemblyNames;
6978
+
7019
6979
  var _getSession3 = util.getSession(self),
7020
6980
  assemblyManager = _getSession3.assemblyManager;
7021
6981
 
7022
6982
  var isValidRefName = assemblyManager.isValidRefName;
7023
- var locStrings = locString.split(';');
7024
-
7025
- if (self.displayedRegions.length > 1) {
7026
- var locations = locStrings.map(function (ls) {
7027
- return util.parseLocString(ls, isValidRefName);
6983
+ var assemblyName = optAssemblyName || assemblyNames[0];
6984
+ var parsedLocStrings = locString.split(' ').filter(function (f) {
6985
+ return !!f.trim();
6986
+ }).map(function (l) {
6987
+ return util.parseLocString(l, function (ref) {
6988
+ return isValidRefName(ref, assemblyName);
7028
6989
  });
7029
- this.navToMultiple(locations);
7030
- return;
7031
- }
7032
-
7033
- var assemblyName = optAssemblyName;
7034
- var defaultRefName = '';
7035
-
7036
- if (self.displayedRegions.length !== 0) {
7037
- // defaults
7038
- assemblyName = self.displayedRegions[0].assemblyName;
7039
- defaultRefName = self.displayedRegions[0].refName;
7040
- }
7041
-
7042
- var assembly = assemblyName && assemblyManager.get(assemblyName);
7043
-
7044
- if (!assembly) {
7045
- throw new Error("Could not find assembly ".concat(assemblyName));
7046
- }
7047
-
7048
- var _assembly = assembly,
7049
- regions = _assembly.regions;
7050
-
7051
- if (!regions) {
7052
- throw new Error("Regions for assembly ".concat(assemblyName, " not yet loaded"));
7053
- }
7054
-
7055
- if (locStrings.length > 1) {
7056
- throw new Error('Navigating to multiple locations is not allowed when viewing a whole chromosome');
7057
- }
7058
-
7059
- var parsedLocString = util.parseLocString(locStrings[0], function (refName) {
7060
- return isValidRefName(refName, assemblyName);
7061
6990
  });
7062
- var changedAssembly = false;
6991
+ var locations = parsedLocStrings.map(function (region) {
6992
+ var asmName = region.assemblyName || assemblyName;
6993
+ var asm = assemblyManager.get(asmName);
6994
+ var refName = region.refName;
7063
6995
 
7064
- if (parsedLocString.assemblyName && parsedLocString.assemblyName !== assemblyName) {
7065
- var newAssembly = assemblyManager.get(parsedLocString.assemblyName);
7066
-
7067
- if (!newAssembly) {
7068
- throw new Error("Could not find assembly ".concat(parsedLocString.assemblyName));
6996
+ if (!asm) {
6997
+ throw new Error("assembly ".concat(asmName, " not found"));
7069
6998
  }
7070
6999
 
7071
- assembly = newAssembly;
7072
- changedAssembly = true;
7073
- var newRegions = newAssembly.regions;
7000
+ var regions = asm.regions;
7074
7001
 
7075
- if (!newRegions) {
7076
- throw new Error("Regions for assembly ".concat(parsedLocString.assemblyName, " not yet loaded"));
7002
+ if (!regions) {
7003
+ throw new Error("regions not loaded yet for ".concat(asmName));
7077
7004
  }
7078
7005
 
7079
- regions = newRegions;
7080
- }
7081
-
7082
- var canonicalRefName = assembly.getCanonicalRefName(parsedLocString.refName);
7006
+ var canonicalRefName = asm.getCanonicalRefName(region.refName);
7083
7007
 
7084
- if (!canonicalRefName) {
7085
- throw new Error("Could not find refName ".concat(parsedLocString.refName, " in ").concat(assembly.name));
7086
- }
7008
+ if (!canonicalRefName) {
7009
+ throw new Error("Could not find refName ".concat(refName, " in ").concat(asm.name));
7010
+ }
7087
7011
 
7088
- if (changedAssembly || canonicalRefName !== defaultRefName) {
7089
- var newDisplayedRegion = regions.find(function (region) {
7012
+ var parentRegion = regions.find(function (region) {
7090
7013
  return region.refName === canonicalRefName;
7091
7014
  });
7092
7015
 
7093
- if (newDisplayedRegion) {
7094
- this.setDisplayedRegions([newDisplayedRegion]);
7095
- } else {
7096
- throw new Error("Could not find refName ".concat(parsedLocString.refName, " in ").concat(assembly.name));
7016
+ if (!parentRegion) {
7017
+ throw new Error("Could not find refName ".concat(refName, " in ").concat(asmName));
7097
7018
  }
7098
- }
7099
7019
 
7100
- var displayedRegion = regions.find(function (region) {
7101
- return region.refName === canonicalRefName;
7020
+ return _objectSpread2(_objectSpread2({}, region), {}, {
7021
+ assemblyName: asmName,
7022
+ parentRegion: parentRegion
7023
+ });
7102
7024
  });
7103
7025
 
7104
- if (displayedRegion) {
7105
- var _parsedLocString$star, _parsedLocString$end;
7106
-
7107
- 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);
7108
- 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);
7109
- this.navTo(_objectSpread2(_objectSpread2({}, parsedLocString), {}, {
7110
- start: start,
7111
- end: end
7026
+ if (locations.length === 1) {
7027
+ var loc = locations[0];
7028
+ this.setDisplayedRegions([_objectSpread2({
7029
+ reversed: loc.reversed
7030
+ }, loc.parentRegion)]);
7031
+ var start = loc.start,
7032
+ end = loc.end,
7033
+ parentRegion = loc.parentRegion;
7034
+ this.navTo(_objectSpread2(_objectSpread2({}, loc), {}, {
7035
+ start: util.clamp(start !== null && start !== void 0 ? start : 0, 0, parentRegion.end),
7036
+ end: util.clamp(end !== null && end !== void 0 ? end : parentRegion.end, 0, parentRegion.end)
7112
7037
  }));
7038
+ } else {
7039
+ this.setDisplayedRegions( // @ts-ignore
7040
+ locations.map(function (r) {
7041
+ return r.start === undefined ? r.parentRegion : r;
7042
+ }));
7043
+ this.showAllRegions();
7113
7044
  }
7114
7045
  },
7115
7046
 
@@ -7231,26 +7162,6 @@ function stateModelFactory$1(pluginManager) {
7231
7162
  if (location.refName !== region.refName) {
7232
7163
  throw new Error("Entered location ".concat(util.assembleLocString(location), " does not match with displayed regions"));
7233
7164
  }
7234
-
7235
- if (locationIndex > 0) {
7236
- // does it reach the left side?
7237
- var matchesLeft = region.reversed ? locationEnd === region.end : locationStart === region.start;
7238
-
7239
- if (!matchesLeft) {
7240
- 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"));
7241
- }
7242
- }
7243
-
7244
- var isLast = locationIndex === locations.length - 1;
7245
-
7246
- if (!isLast) {
7247
- // does it reach the right side?
7248
- var matchesRight = region.reversed ? locationStart === region.start : locationEnd === region.end;
7249
-
7250
- if (!matchesRight) {
7251
- 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"));
7252
- }
7253
- }
7254
7165
  }
7255
7166
 
7256
7167
  locationIndex -= 1;
@@ -7545,10 +7456,10 @@ function stateModelFactory$1(pluginManager) {
7545
7456
  var menuItems = [{
7546
7457
  label: 'Return to import form',
7547
7458
  onClick: function onClick() {
7548
- util.getSession(self).queueDialog(function (doneCallback) {
7549
- return [ReturnToImportFormDlg, {
7459
+ util.getSession(self).queueDialog(function (handleClose) {
7460
+ return [ui.ReturnToImportFormDialog, {
7550
7461
  model: self,
7551
- handleClose: doneCallback
7462
+ handleClose: handleClose
7552
7463
  }];
7553
7464
  });
7554
7465
  },
@@ -7557,10 +7468,10 @@ function stateModelFactory$1(pluginManager) {
7557
7468
  label: 'Export SVG',
7558
7469
  icon: PhotoCameraIcon,
7559
7470
  onClick: function onClick() {
7560
- util.getSession(self).queueDialog(function (doneCallback) {
7471
+ util.getSession(self).queueDialog(function (handleClose) {
7561
7472
  return [ExportSvgDlg, {
7562
7473
  model: self,
7563
- handleClose: doneCallback
7474
+ handleClose: handleClose
7564
7475
  }];
7565
7476
  });
7566
7477
  }
@@ -8087,7 +7998,7 @@ var LinearGenomeViewPlugin = /*#__PURE__*/function (_Plugin) {
8087
7998
  return LinearGenomeViewPlugin;
8088
7999
  }(Plugin);
8089
8000
 
8090
- var useStyles$n = /*#__PURE__*/core.makeStyles(function (theme) {
8001
+ var useStyles$m = /*#__PURE__*/core.makeStyles(function (theme) {
8091
8002
  return {
8092
8003
  closeButton: {
8093
8004
  position: 'absolute',
@@ -8099,7 +8010,7 @@ var useStyles$n = /*#__PURE__*/core.makeStyles(function (theme) {
8099
8010
  });
8100
8011
  function HelpDialog$1(_ref) {
8101
8012
  var handleClose = _ref.handleClose;
8102
- var classes = useStyles$n();
8013
+ var classes = useStyles$m();
8103
8014
  return /*#__PURE__*/React__default.createElement(core.Dialog, {
8104
8015
  open: true,
8105
8016
  maxWidth: "xl",
@@ -8110,7 +8021,7 @@ function HelpDialog$1(_ref) {
8110
8021
  onClick: function onClick() {
8111
8022
  handleClose();
8112
8023
  }
8113
- }, /*#__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, {
8024
+ }, /*#__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, {
8114
8025
  onClick: function onClick() {
8115
8026
  return handleClose();
8116
8027
  },
@@ -8120,11 +8031,11 @@ function HelpDialog$1(_ref) {
8120
8031
 
8121
8032
  var HelpDialog$2 = {
8122
8033
  __proto__: null,
8123
- useStyles: useStyles$n,
8034
+ useStyles: useStyles$m,
8124
8035
  'default': HelpDialog$1
8125
8036
  };
8126
8037
 
8127
- var useStyles$o = /*#__PURE__*/core.makeStyles(function (theme) {
8038
+ var useStyles$n = /*#__PURE__*/core.makeStyles(function (theme) {
8128
8039
  return {
8129
8040
  root: {
8130
8041
  width: 500
@@ -8144,7 +8055,7 @@ var useStyles$o = /*#__PURE__*/core.makeStyles(function (theme) {
8144
8055
  function SetMaxHeightDlg$1(props) {
8145
8056
  var model = props.model,
8146
8057
  handleClose = props.handleClose;
8147
- var classes = useStyles$o();
8058
+ var classes = useStyles$n();
8148
8059
  var _model$maxHeight = model.maxHeight,
8149
8060
  maxHeight = _model$maxHeight === void 0 ? '' : _model$maxHeight;
8150
8061
 
@@ -8164,26 +8075,30 @@ function SetMaxHeightDlg$1(props) {
8164
8075
  "aria-label": "close",
8165
8076
  className: classes.closeButton,
8166
8077
  onClick: handleClose
8167
- }, /*#__PURE__*/React__default.createElement(CloseIcon, null))), /*#__PURE__*/React__default.createElement(core.DialogContent, null, /*#__PURE__*/React__default.createElement("div", {
8078
+ }, /*#__PURE__*/React__default.createElement(CloseIcon, null))), /*#__PURE__*/React__default.createElement(core.DialogContent, {
8168
8079
  className: classes.root
8169
- }, /*#__PURE__*/React__default.createElement(core.Typography, null, "Set max height for the track"), /*#__PURE__*/React__default.createElement(core.TextField, {
8080
+ }, /*#__PURE__*/React__default.createElement(core.Typography, null, "Set max height for the track. For example, you can increase this if the layout says \"Max height reached\""), /*#__PURE__*/React__default.createElement(core.TextField, {
8170
8081
  value: max,
8171
8082
  onChange: function onChange(event) {
8172
- setMax(event.target.value);
8083
+ return setMax(event.target.value);
8173
8084
  },
8174
8085
  placeholder: "Enter max score"
8175
- }), /*#__PURE__*/React__default.createElement(core.Button, {
8086
+ }), /*#__PURE__*/React__default.createElement(core.DialogActions, null, /*#__PURE__*/React__default.createElement(core.Button, {
8176
8087
  variant: "contained",
8177
8088
  color: "primary",
8178
8089
  type: "submit",
8179
- style: {
8180
- marginLeft: 20
8181
- },
8090
+ autoFocus: true,
8182
8091
  onClick: function onClick() {
8183
8092
  model.setMaxHeight(max !== '' && !Number.isNaN(+max) ? +max : undefined);
8184
8093
  handleClose();
8185
8094
  }
8186
- }, "Submit"))));
8095
+ }, "Submit"), /*#__PURE__*/React__default.createElement(core.Button, {
8096
+ variant: "contained",
8097
+ color: "secondary",
8098
+ onClick: function onClick() {
8099
+ return handleClose();
8100
+ }
8101
+ }, "Cancel"))));
8187
8102
  }
8188
8103
 
8189
8104
  var SetMaxHeight = /*#__PURE__*/mobxReact.observer(SetMaxHeightDlg$1);