@jbrowse/plugin-linear-genome-view 1.6.3 → 1.6.6

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/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 +3 -2
  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 +143 -250
  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 +145 -252
  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 +24 -39
  24. package/src/LinearGenomeView/components/TrackLabel.tsx +5 -5
  25. package/src/LinearGenomeView/components/__snapshots__/LinearGenomeView.test.js.snap +194 -191
  26. package/src/LinearGenomeView/index.test.ts +44 -42
  27. package/src/LinearGenomeView/index.tsx +176 -245
  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
@@ -58,13 +58,13 @@ var ArrowBackIcon = _interopDefault(require('@material-ui/icons/ArrowBack'));
58
58
  var IconButton = _interopDefault(require('@material-ui/core/IconButton'));
59
59
  var Slider = _interopDefault(require('@material-ui/core/Slider'));
60
60
  var ZoomOut = _interopDefault(require('@material-ui/icons/ZoomOut'));
61
- var Paper = _interopDefault(require('@material-ui/core/Paper'));
62
61
  var MoreVertIcon = _interopDefault(require('@material-ui/icons/MoreVert'));
63
62
  var DragIcon = _interopDefault(require('@material-ui/icons/DragIndicator'));
64
63
  var normalizeWheel = _interopDefault(require('normalize-wheel'));
65
64
  var colorManipulator = require('@material-ui/core/styles/colorManipulator');
66
65
  var Popover = _interopDefault(require('@material-ui/core/Popover'));
67
66
  var Tooltip$1 = _interopDefault(require('@material-ui/core/Tooltip'));
67
+ var Paper = _interopDefault(require('@material-ui/core/Paper'));
68
68
  var ErrorMessage = _interopDefault(require('@jbrowse/core/ui/ErrorMessage'));
69
69
  var AssemblySelector = _interopDefault(require('@jbrowse/core/ui/AssemblySelector'));
70
70
  var ArrowDown = _interopDefault(require('@material-ui/icons/KeyboardArrowDown'));
@@ -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,20 +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__*/core.makeStyles(function (theme) {
4729
4672
  return {
4730
4673
  root: {},
4731
4674
  resizeHandle: {
4732
4675
  height: RESIZE_HANDLE_HEIGHT,
4733
- boxSizing: 'border-box',
4734
- position: 'relative',
4735
4676
  zIndex: 2
4736
4677
  },
4737
4678
  overlay: {
@@ -4743,13 +4684,6 @@ var useStyles$d = /*#__PURE__*/styles.makeStyles(function (theme) {
4743
4684
  zIndex: 3,
4744
4685
  borderRadius: theme.shape.borderRadius
4745
4686
  },
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
4687
  trackLabel: {
4754
4688
  zIndex: 3,
4755
4689
  margin: theme.spacing(1)
@@ -4767,22 +4701,22 @@ var useStyles$d = /*#__PURE__*/styles.makeStyles(function (theme) {
4767
4701
  whiteSpace: 'nowrap',
4768
4702
  position: 'relative',
4769
4703
  background: 'none',
4770
- zIndex: 2,
4771
- boxSizing: 'content-box'
4704
+ zIndex: 2
4772
4705
  }
4773
4706
  };
4774
4707
  });
4775
4708
 
4776
- function TrackContainer(props) {
4777
- var classes = useStyles$d();
4778
- var model = props.model,
4779
- track = props.track;
4709
+ function TrackContainer(_ref) {
4710
+ var model = _ref.model,
4711
+ track = _ref.track;
4712
+ var classes = useStyles$c();
4780
4713
  var display = track.displays[0];
4781
- var horizontalScroll = model.horizontalScroll,
4714
+ var id = model.id,
4715
+ trackLabels = model.trackLabels,
4716
+ horizontalScroll = model.horizontalScroll,
4782
4717
  draggingTrackId = model.draggingTrackId,
4783
4718
  moveTrack = model.moveTrack;
4784
4719
  var height = display.height;
4785
- var view = util.getContainingView(display);
4786
4720
  var trackId = configuration.getConf(track, 'trackId');
4787
4721
  var ref = React.useRef(null);
4788
4722
  React.useEffect(function () {
@@ -4807,10 +4741,7 @@ function TrackContainer(props) {
4807
4741
  var dimmed = draggingTrackId !== undefined && draggingTrackId !== display.id;
4808
4742
  return /*#__PURE__*/React__default.createElement("div", {
4809
4743
  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, {
4744
+ }, /*#__PURE__*/React__default.createElement(core.Paper, {
4814
4745
  variant: "outlined",
4815
4746
  className: classes.trackRenderingContainer,
4816
4747
  style: {
@@ -4821,11 +4752,13 @@ function TrackContainer(props) {
4821
4752
  display.setScrollTop(target.scrollTop);
4822
4753
  },
4823
4754
  onDragEnter: debouncedOnDragEnter,
4824
- "data-testid": "trackRenderingContainer-".concat(view.id, "-").concat(trackId),
4755
+ "data-testid": "trackRenderingContainer-".concat(id, "-").concat(trackId),
4825
4756
  role: "presentation"
4826
- }, /*#__PURE__*/React__default.createElement("div", {
4757
+ }, trackLabels !== 'hidden' ? /*#__PURE__*/React__default.createElement(TrackLabel$1, {
4758
+ track: track,
4759
+ className: clsx(classes.trackLabel, trackLabels === 'overlapping' ? classes.trackLabelOverlap : classes.trackLabelInline)
4760
+ }) : null, /*#__PURE__*/React__default.createElement("div", {
4827
4761
  ref: ref,
4828
- className: classes.renderingComponentContainer,
4829
4762
  style: {
4830
4763
  transform: "scaleX(".concat(model.scaleFactor, ")")
4831
4764
  }
@@ -4839,7 +4772,7 @@ function TrackContainer(props) {
4839
4772
  left: 0,
4840
4773
  top: display.height - 20
4841
4774
  }
4842
- }, ' ', /*#__PURE__*/React__default.createElement(DisplayBlurb, {
4775
+ }, /*#__PURE__*/React__default.createElement(DisplayBlurb, {
4843
4776
  model: display
4844
4777
  })) : null), /*#__PURE__*/React__default.createElement("div", {
4845
4778
  className: classes.overlay,
@@ -4856,7 +4789,7 @@ function TrackContainer(props) {
4856
4789
 
4857
4790
  var TrackContainer$1 = /*#__PURE__*/mobxReact.observer(TrackContainer);
4858
4791
 
4859
- var useStyles$e = /*#__PURE__*/styles.makeStyles(function (theme) {
4792
+ var useStyles$d = /*#__PURE__*/styles.makeStyles(function (theme) {
4860
4793
  var background = theme.palette.tertiary ? colorManipulator.alpha(theme.palette.tertiary.main, 0.7) : colorManipulator.alpha(theme.palette.primary.main, 0.7);
4861
4794
  return {
4862
4795
  rubberBand: {
@@ -4895,7 +4828,7 @@ var useStyles$e = /*#__PURE__*/styles.makeStyles(function (theme) {
4895
4828
  var VerticalGuide = /*#__PURE__*/mobxReact.observer(function (_ref) {
4896
4829
  var model = _ref.model,
4897
4830
  coordX = _ref.coordX;
4898
- var classes = useStyles$e();
4831
+ var classes = useStyles$d();
4899
4832
  return /*#__PURE__*/React__default.createElement(Tooltip$1, {
4900
4833
  open: true,
4901
4834
  placement: "top",
@@ -4939,7 +4872,7 @@ function RubberBand(_ref2) {
4939
4872
 
4940
4873
  var controlsRef = React.useRef(null);
4941
4874
  var rubberBandRef = React.useRef(null);
4942
- var classes = useStyles$e();
4875
+ var classes = useStyles$d();
4943
4876
  var mouseDragging = startX !== undefined && anchorPosition === undefined;
4944
4877
  var setOffsets = model.setOffsets,
4945
4878
  pxToBp = model.pxToBp;
@@ -5142,7 +5075,7 @@ RubberBand.defaultProps = {
5142
5075
  var RubberBand$1 = /*#__PURE__*/mobxReact.observer(RubberBand);
5143
5076
 
5144
5077
  var _excluded$1 = ["model", "style", "className"];
5145
- var useStyles$f = /*#__PURE__*/styles.makeStyles(function (theme) {
5078
+ var useStyles$e = /*#__PURE__*/styles.makeStyles(function (theme) {
5146
5079
  return {
5147
5080
  scaleBarContainer: {
5148
5081
  overflow: 'hidden',
@@ -5186,7 +5119,7 @@ var useStyles$f = /*#__PURE__*/styles.makeStyles(function (theme) {
5186
5119
  });
5187
5120
  var RenderedRefNameLabels = /*#__PURE__*/mobxReact.observer(function (_ref) {
5188
5121
  var model = _ref.model;
5189
- var classes = useStyles$f(); // find the block that needs pinning to the left side for context
5122
+ var classes = useStyles$e(); // find the block that needs pinning to the left side for context
5190
5123
 
5191
5124
  var lastLeftBlock = 0;
5192
5125
  model.staticBlocks.forEach(function (block, i) {
@@ -5208,7 +5141,7 @@ var RenderedRefNameLabels = /*#__PURE__*/mobxReact.observer(function (_ref) {
5208
5141
  });
5209
5142
  var RenderedScaleBarLabels = /*#__PURE__*/mobxReact.observer(function (_ref2) {
5210
5143
  var model = _ref2.model;
5211
- var classes = useStyles$f();
5144
+ var classes = useStyles$e();
5212
5145
  return /*#__PURE__*/React__default.createElement(React__default.Fragment, null, model.staticBlocks.map(function (block, index) {
5213
5146
  if (block instanceof blockTypes.ContentBlock) {
5214
5147
  var ticks = makeTicks(block.start, block.end, model.bpPerPx, true, false);
@@ -5261,7 +5194,7 @@ var ScaleBar$2 = /*#__PURE__*/React__default.forwardRef(function (_ref3, ref) {
5261
5194
  className = _ref3.className,
5262
5195
  other = _objectWithoutProperties(_ref3, _excluded$1);
5263
5196
 
5264
- var classes = useStyles$f();
5197
+ var classes = useStyles$e();
5265
5198
  var offsetLeft = model.staticBlocks.offsetPx - model.offsetPx;
5266
5199
  return /*#__PURE__*/React__default.createElement(Paper, Object.assign({
5267
5200
  "data-resizer": "true" // used to avoid click-and-drag scrolls on trackscontainer
@@ -5289,7 +5222,7 @@ var ScaleBar$2 = /*#__PURE__*/React__default.forwardRef(function (_ref3, ref) {
5289
5222
  });
5290
5223
  var ScaleBar$3 = /*#__PURE__*/mobxReact.observer(ScaleBar$2);
5291
5224
 
5292
- var useStyles$g = /*#__PURE__*/styles.makeStyles(function (theme) {
5225
+ var useStyles$f = /*#__PURE__*/styles.makeStyles(function (theme) {
5293
5226
  return {
5294
5227
  verticalGuidesZoomContainer: {
5295
5228
  position: 'absolute',
@@ -5320,7 +5253,7 @@ var useStyles$g = /*#__PURE__*/styles.makeStyles(function (theme) {
5320
5253
  });
5321
5254
  var RenderedVerticalGuides = /*#__PURE__*/mobxReact.observer(function (_ref) {
5322
5255
  var model = _ref.model;
5323
- var classes = useStyles$g();
5256
+ var classes = useStyles$f();
5324
5257
  return /*#__PURE__*/React__default.createElement(React__default.Fragment, null, model.staticBlocks.map(function (block, index) {
5325
5258
  if (block instanceof blockTypes.ContentBlock) {
5326
5259
  var ticks = makeTicks(block.start, block.end, model.bpPerPx);
@@ -5360,7 +5293,7 @@ var RenderedVerticalGuides = /*#__PURE__*/mobxReact.observer(function (_ref) {
5360
5293
 
5361
5294
  function VerticalGuides(_ref2) {
5362
5295
  var model = _ref2.model;
5363
- var classes = useStyles$g(); // find the block that needs pinning to the left side for context
5296
+ var classes = useStyles$f(); // find the block that needs pinning to the left side for context
5364
5297
 
5365
5298
  var offsetLeft = model.staticBlocks.offsetPx - model.offsetPx;
5366
5299
  return /*#__PURE__*/React__default.createElement("div", {
@@ -5381,7 +5314,7 @@ function VerticalGuides(_ref2) {
5381
5314
 
5382
5315
  var VerticalGuides$1 = /*#__PURE__*/mobxReact.observer(VerticalGuides);
5383
5316
 
5384
- var useStyles$h = /*#__PURE__*/styles.makeStyles(function () {
5317
+ var useStyles$g = /*#__PURE__*/styles.makeStyles(function () {
5385
5318
  return {
5386
5319
  centerLineContainer: {
5387
5320
  background: 'transparent',
@@ -5410,7 +5343,7 @@ function CenterLine(_ref) {
5410
5343
  tracks = model.tracks,
5411
5344
  width = model.width;
5412
5345
  var ref = React.useRef(null);
5413
- var classes = useStyles$h();
5346
+ var classes = useStyles$g();
5414
5347
  var startingPosition = width / 2;
5415
5348
  return tracks.length ? /*#__PURE__*/React__default.createElement("div", {
5416
5349
  "data-testid": "centerline_container",
@@ -5437,7 +5370,7 @@ CenterLine.propTypes = {
5437
5370
  };
5438
5371
  var CenterLine$1 = /*#__PURE__*/mobxReact.observer(CenterLine);
5439
5372
 
5440
- var useStyles$i = /*#__PURE__*/styles.makeStyles(function (theme) {
5373
+ var useStyles$h = /*#__PURE__*/styles.makeStyles(function (theme) {
5441
5374
  return {
5442
5375
  tracksContainer: {
5443
5376
  position: 'relative',
@@ -5454,7 +5387,7 @@ var useStyles$i = /*#__PURE__*/styles.makeStyles(function (theme) {
5454
5387
  function TracksContainer(_ref) {
5455
5388
  var children = _ref.children,
5456
5389
  model = _ref.model;
5457
- var classes = useStyles$i(); // refs are to store these variables to avoid repeated rerenders associated
5390
+ var classes = useStyles$h(); // refs are to store these variables to avoid repeated rerenders associated
5458
5391
  // with useState/setState
5459
5392
 
5460
5393
  var delta = React.useRef(0);
@@ -5620,7 +5553,7 @@ var TracksContainer$1 = /*#__PURE__*/mobxReact.observer(TracksContainer);
5620
5553
  var SearchResultsDialog = /*#__PURE__*/React.lazy(function () {
5621
5554
  return Promise.resolve().then(function () { return SearchResultsDialog$2; });
5622
5555
  });
5623
- var useStyles$j = /*#__PURE__*/core.makeStyles(function (theme) {
5556
+ var useStyles$i = /*#__PURE__*/core.makeStyles(function (theme) {
5624
5557
  return {
5625
5558
  importFormContainer: {
5626
5559
  padding: theme.spacing(2)
@@ -5634,7 +5567,7 @@ var ImportForm = /*#__PURE__*/mobxReact.observer(function (_ref) {
5634
5567
  var _regions$;
5635
5568
 
5636
5569
  var model = _ref.model;
5637
- var classes = useStyles$j();
5570
+ var classes = useStyles$i();
5638
5571
  var session = util.getSession(model);
5639
5572
  var assemblyNames = session.assemblyNames,
5640
5573
  assemblyManager = session.assemblyManager,
@@ -5934,7 +5867,7 @@ var MiniControls = /*#__PURE__*/mobxReact.observer(function (props) {
5934
5867
  }));
5935
5868
  });
5936
5869
 
5937
- var useStyles$k = /*#__PURE__*/core.makeStyles(function (theme) {
5870
+ var useStyles$j = /*#__PURE__*/core.makeStyles(function (theme) {
5938
5871
  return {
5939
5872
  loadingMessage: {
5940
5873
  padding: theme.spacing(5)
@@ -6030,7 +5963,7 @@ function _fetchSequence() {
6030
5963
  function SequenceDialog(_ref) {
6031
5964
  var model = _ref.model,
6032
5965
  handleClose = _ref.handleClose;
6033
- var classes = useStyles$k();
5966
+ var classes = useStyles$j();
6034
5967
  var session = util.getSession(model);
6035
5968
 
6036
5969
  var _useState = React.useState(),
@@ -6195,7 +6128,7 @@ function SequenceDialog(_ref) {
6195
6128
 
6196
6129
  var SequenceDialog$1 = /*#__PURE__*/mobxReact.observer(SequenceDialog);
6197
6130
 
6198
- var useStyles$l = /*#__PURE__*/core.makeStyles(function (theme) {
6131
+ var useStyles$k = /*#__PURE__*/core.makeStyles(function (theme) {
6199
6132
  return {
6200
6133
  dialogContent: {
6201
6134
  width: '80em'
@@ -6214,7 +6147,7 @@ function SearchResultsDialog$1(_ref) {
6214
6147
  var model = _ref.model,
6215
6148
  optAssemblyName = _ref.optAssemblyName,
6216
6149
  handleClose = _ref.handleClose;
6217
- var classes = useStyles$l();
6150
+ var classes = useStyles$k();
6218
6151
  var session = util.getSession(model);
6219
6152
 
6220
6153
  var _getEnv = mobxStateTree.getEnv(session),
@@ -6335,11 +6268,11 @@ function SearchResultsDialog$1(_ref) {
6335
6268
 
6336
6269
  var SearchResultsDialog$2 = {
6337
6270
  __proto__: null,
6338
- useStyles: useStyles$l,
6271
+ useStyles: useStyles$k,
6339
6272
  'default': SearchResultsDialog$1
6340
6273
  };
6341
6274
 
6342
- var useStyles$m = /*#__PURE__*/core.makeStyles(function (theme) {
6275
+ var useStyles$l = /*#__PURE__*/core.makeStyles(function (theme) {
6343
6276
  return {
6344
6277
  note: {
6345
6278
  textAlign: 'center',
@@ -6375,7 +6308,7 @@ var LinearGenomeView = /*#__PURE__*/mobxReact.observer(function (_ref) {
6375
6308
  hideHeader = model.hideHeader,
6376
6309
  initialized = model.initialized,
6377
6310
  hasDisplayedRegions = model.hasDisplayedRegions;
6378
- var classes = useStyles$m();
6311
+ var classes = useStyles$l();
6379
6312
 
6380
6313
  if (!initialized && !error) {
6381
6314
  return /*#__PURE__*/React__default.createElement(core.Typography, {
@@ -6456,7 +6389,7 @@ function calculateVisibleLocStrings(contentBlocks) {
6456
6389
  assemblyName: isSingleAssemblyName ? undefined : block.assemblyName
6457
6390
  }));
6458
6391
  });
6459
- return locs.join(';');
6392
+ return locs.join(' ');
6460
6393
  }
6461
6394
 
6462
6395
  var HEADER_BAR_HEIGHT = 48;
@@ -6466,6 +6399,11 @@ var RESIZE_HANDLE_HEIGHT = 3;
6466
6399
  var INTER_REGION_PADDING_WIDTH = 2;
6467
6400
  var WIDGET_HEIGHT = 32;
6468
6401
  var SPACING = 7;
6402
+
6403
+ function localStorageGetItem(item) {
6404
+ return typeof localStorage !== 'undefined' ? localStorage.getItem(item) : undefined;
6405
+ }
6406
+
6469
6407
  function stateModelFactory$1(pluginManager) {
6470
6408
  return mobxStateTree.types.compose(models.BaseViewModel, mobxStateTree.types.model('LinearGenomeView', {
6471
6409
  id: mst.ElementId,
@@ -6480,15 +6418,15 @@ function stateModelFactory$1(pluginManager) {
6480
6418
  hideHeaderOverview: false,
6481
6419
  trackSelectorType: mobxStateTree.types.optional(mobxStateTree.types.enumeration(['hierarchical']), 'hierarchical'),
6482
6420
  trackLabels: mobxStateTree.types.optional(mobxStateTree.types.string, function () {
6483
- return localStorage.getItem('lgv-trackLabels') || 'overlapping';
6421
+ return localStorageGetItem('lgv-trackLabels') || 'overlapping';
6484
6422
  }),
6485
6423
  showCenterLine: mobxStateTree.types.optional(mobxStateTree.types["boolean"], function () {
6486
- var setting = localStorage.getItem('lgv-showCenterLine');
6487
- return setting !== undefined ? !!setting : false;
6424
+ var setting = localStorageGetItem('lgv-showCenterLine');
6425
+ return setting !== undefined && setting !== null ? !!+setting : false;
6488
6426
  }),
6489
6427
  showCytobandsSetting: mobxStateTree.types.optional(mobxStateTree.types["boolean"], function () {
6490
- var setting = localStorage.getItem('lgv-showCytobands');
6491
- return setting !== undefined ? !!setting : true;
6428
+ var setting = localStorageGetItem('lgv-showCytobands');
6429
+ return setting !== undefined && setting !== null ? !!+setting : true;
6492
6430
  })
6493
6431
  }))["volatile"](function () {
6494
6432
  return {
@@ -7015,100 +6953,73 @@ function stateModelFactory$1(pluginManager) {
7015
6953
  throw new Error("invalid track selector type ".concat(self.trackSelectorType));
7016
6954
  },
7017
6955
  navToLocString: function navToLocString(locString, optAssemblyName) {
6956
+ var assemblyNames = self.assemblyNames;
6957
+
7018
6958
  var _getSession3 = util.getSession(self),
7019
6959
  assemblyManager = _getSession3.assemblyManager;
7020
6960
 
7021
6961
  var isValidRefName = assemblyManager.isValidRefName;
7022
- var locStrings = locString.split(';');
7023
-
7024
- if (self.displayedRegions.length > 1) {
7025
- var locations = locStrings.map(function (ls) {
7026
- return util.parseLocString(ls, isValidRefName);
6962
+ var assemblyName = optAssemblyName || assemblyNames[0];
6963
+ var parsedLocStrings = locString.split(' ').filter(function (f) {
6964
+ return !!f.trim();
6965
+ }).map(function (l) {
6966
+ return util.parseLocString(l, function (ref) {
6967
+ return isValidRefName(ref, assemblyName);
7027
6968
  });
7028
- this.navToMultiple(locations);
7029
- return;
7030
- }
7031
-
7032
- var assemblyName = optAssemblyName;
7033
- var defaultRefName = '';
7034
-
7035
- if (self.displayedRegions.length !== 0) {
7036
- // defaults
7037
- assemblyName = self.displayedRegions[0].assemblyName;
7038
- defaultRefName = self.displayedRegions[0].refName;
7039
- }
7040
-
7041
- var assembly = assemblyName && assemblyManager.get(assemblyName);
7042
-
7043
- if (!assembly) {
7044
- throw new Error("Could not find assembly ".concat(assemblyName));
7045
- }
7046
-
7047
- var _assembly = assembly,
7048
- regions = _assembly.regions;
7049
-
7050
- if (!regions) {
7051
- throw new Error("Regions for assembly ".concat(assemblyName, " not yet loaded"));
7052
- }
7053
-
7054
- if (locStrings.length > 1) {
7055
- throw new Error('Navigating to multiple locations is not allowed when viewing a whole chromosome');
7056
- }
7057
-
7058
- var parsedLocString = util.parseLocString(locStrings[0], function (refName) {
7059
- return isValidRefName(refName, assemblyName);
7060
6969
  });
7061
- var changedAssembly = false;
6970
+ var locations = parsedLocStrings.map(function (region) {
6971
+ var asmName = region.assemblyName || assemblyName;
6972
+ var asm = assemblyManager.get(asmName);
6973
+ var refName = region.refName;
7062
6974
 
7063
- if (parsedLocString.assemblyName && parsedLocString.assemblyName !== assemblyName) {
7064
- var newAssembly = assemblyManager.get(parsedLocString.assemblyName);
7065
-
7066
- if (!newAssembly) {
7067
- throw new Error("Could not find assembly ".concat(parsedLocString.assemblyName));
6975
+ if (!asm) {
6976
+ throw new Error("assembly ".concat(asmName, " not found"));
7068
6977
  }
7069
6978
 
7070
- assembly = newAssembly;
7071
- changedAssembly = true;
7072
- var newRegions = newAssembly.regions;
6979
+ var regions = asm.regions;
7073
6980
 
7074
- if (!newRegions) {
7075
- throw new Error("Regions for assembly ".concat(parsedLocString.assemblyName, " not yet loaded"));
6981
+ if (!regions) {
6982
+ throw new Error("regions not loaded yet for ".concat(asmName));
7076
6983
  }
7077
6984
 
7078
- regions = newRegions;
7079
- }
7080
-
7081
- var canonicalRefName = assembly.getCanonicalRefName(parsedLocString.refName);
6985
+ var canonicalRefName = asm.getCanonicalRefName(region.refName);
7082
6986
 
7083
- if (!canonicalRefName) {
7084
- throw new Error("Could not find refName ".concat(parsedLocString.refName, " in ").concat(assembly.name));
7085
- }
6987
+ if (!canonicalRefName) {
6988
+ throw new Error("Could not find refName ".concat(refName, " in ").concat(asm.name));
6989
+ }
7086
6990
 
7087
- if (changedAssembly || canonicalRefName !== defaultRefName) {
7088
- var newDisplayedRegion = regions.find(function (region) {
6991
+ var parentRegion = regions.find(function (region) {
7089
6992
  return region.refName === canonicalRefName;
7090
6993
  });
7091
6994
 
7092
- if (newDisplayedRegion) {
7093
- this.setDisplayedRegions([newDisplayedRegion]);
7094
- } else {
7095
- throw new Error("Could not find refName ".concat(parsedLocString.refName, " in ").concat(assembly.name));
6995
+ if (!parentRegion) {
6996
+ throw new Error("Could not find refName ".concat(refName, " in ").concat(asmName));
7096
6997
  }
7097
- }
7098
6998
 
7099
- var displayedRegion = regions.find(function (region) {
7100
- return region.refName === canonicalRefName;
6999
+ return _objectSpread2(_objectSpread2({}, region), {}, {
7000
+ assemblyName: asmName,
7001
+ parentRegion: parentRegion
7002
+ });
7101
7003
  });
7102
7004
 
7103
- if (displayedRegion) {
7104
- var _parsedLocString$star, _parsedLocString$end;
7105
-
7106
- 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);
7107
- 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);
7108
- this.navTo(_objectSpread2(_objectSpread2({}, parsedLocString), {}, {
7109
- start: start,
7110
- end: end
7005
+ if (locations.length === 1) {
7006
+ var loc = locations[0];
7007
+ this.setDisplayedRegions([_objectSpread2({
7008
+ reversed: loc.reversed
7009
+ }, loc.parentRegion)]);
7010
+ var start = loc.start,
7011
+ end = loc.end,
7012
+ parentRegion = loc.parentRegion;
7013
+ this.navTo(_objectSpread2(_objectSpread2({}, loc), {}, {
7014
+ start: util.clamp(start !== null && start !== void 0 ? start : 0, 0, parentRegion.end),
7015
+ end: util.clamp(end !== null && end !== void 0 ? end : parentRegion.end, 0, parentRegion.end)
7016
+ }));
7017
+ } else {
7018
+ this.setDisplayedRegions( // @ts-ignore
7019
+ locations.map(function (r) {
7020
+ return r.start === undefined ? r.parentRegion : r;
7111
7021
  }));
7022
+ this.showAllRegions();
7112
7023
  }
7113
7024
  },
7114
7025
 
@@ -7230,26 +7141,6 @@ function stateModelFactory$1(pluginManager) {
7230
7141
  if (location.refName !== region.refName) {
7231
7142
  throw new Error("Entered location ".concat(util.assembleLocString(location), " does not match with displayed regions"));
7232
7143
  }
7233
-
7234
- if (locationIndex > 0) {
7235
- // does it reach the left side?
7236
- var matchesLeft = region.reversed ? locationEnd === region.end : locationStart === region.start;
7237
-
7238
- if (!matchesLeft) {
7239
- 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"));
7240
- }
7241
- }
7242
-
7243
- var isLast = locationIndex === locations.length - 1;
7244
-
7245
- if (!isLast) {
7246
- // does it reach the right side?
7247
- var matchesRight = region.reversed ? locationStart === region.start : locationEnd === region.end;
7248
-
7249
- if (!matchesRight) {
7250
- 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"));
7251
- }
7252
- }
7253
7144
  }
7254
7145
 
7255
7146
  locationIndex -= 1;
@@ -7537,8 +7428,6 @@ function stateModelFactory$1(pluginManager) {
7537
7428
 
7538
7429
  };
7539
7430
  }).views(function (self) {
7540
- var currentlyCalculatedStaticBlocks;
7541
- var stringifiedCurrentlyCalculatedStaticBlocks = '';
7542
7431
  return {
7543
7432
  menuItems: function menuItems() {
7544
7433
  var canShowCytobands = self.canShowCytobands,
@@ -7546,10 +7435,10 @@ function stateModelFactory$1(pluginManager) {
7546
7435
  var menuItems = [{
7547
7436
  label: 'Return to import form',
7548
7437
  onClick: function onClick() {
7549
- util.getSession(self).queueDialog(function (doneCallback) {
7550
- return [ReturnToImportFormDlg, {
7438
+ util.getSession(self).queueDialog(function (handleClose) {
7439
+ return [ui.ReturnToImportFormDialog, {
7551
7440
  model: self,
7552
- handleClose: doneCallback
7441
+ handleClose: handleClose
7553
7442
  }];
7554
7443
  });
7555
7444
  },
@@ -7558,10 +7447,10 @@ function stateModelFactory$1(pluginManager) {
7558
7447
  label: 'Export SVG',
7559
7448
  icon: PhotoCameraIcon,
7560
7449
  onClick: function onClick() {
7561
- util.getSession(self).queueDialog(function (doneCallback) {
7450
+ util.getSession(self).queueDialog(function (handleClose) {
7562
7451
  return [ExportSvgDlg, {
7563
7452
  model: self,
7564
- handleClose: doneCallback
7453
+ handleClose: handleClose
7565
7454
  }];
7566
7455
  });
7567
7456
  }
@@ -7661,8 +7550,12 @@ function stateModelFactory$1(pluginManager) {
7661
7550
  }
7662
7551
 
7663
7552
  return menuItems;
7664
- },
7665
-
7553
+ }
7554
+ };
7555
+ }).views(function (self) {
7556
+ var currentlyCalculatedStaticBlocks;
7557
+ var stringifiedCurrentlyCalculatedStaticBlocks = '';
7558
+ return {
7666
7559
  get staticBlocks() {
7667
7560
  var ret = calculateStaticBlocks(self);
7668
7561
  var sret = JSON.stringify(ret);
@@ -8084,7 +7977,7 @@ var LinearGenomeViewPlugin = /*#__PURE__*/function (_Plugin) {
8084
7977
  return LinearGenomeViewPlugin;
8085
7978
  }(Plugin);
8086
7979
 
8087
- var useStyles$n = /*#__PURE__*/core.makeStyles(function (theme) {
7980
+ var useStyles$m = /*#__PURE__*/core.makeStyles(function (theme) {
8088
7981
  return {
8089
7982
  closeButton: {
8090
7983
  position: 'absolute',
@@ -8096,7 +7989,7 @@ var useStyles$n = /*#__PURE__*/core.makeStyles(function (theme) {
8096
7989
  });
8097
7990
  function HelpDialog$1(_ref) {
8098
7991
  var handleClose = _ref.handleClose;
8099
- var classes = useStyles$n();
7992
+ var classes = useStyles$m();
8100
7993
  return /*#__PURE__*/React__default.createElement(core.Dialog, {
8101
7994
  open: true,
8102
7995
  maxWidth: "xl",
@@ -8107,7 +8000,7 @@ function HelpDialog$1(_ref) {
8107
8000
  onClick: function onClick() {
8108
8001
  handleClose();
8109
8002
  }
8110
- }, /*#__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, {
8003
+ }, /*#__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, {
8111
8004
  onClick: function onClick() {
8112
8005
  return handleClose();
8113
8006
  },
@@ -8117,11 +8010,11 @@ function HelpDialog$1(_ref) {
8117
8010
 
8118
8011
  var HelpDialog$2 = {
8119
8012
  __proto__: null,
8120
- useStyles: useStyles$n,
8013
+ useStyles: useStyles$m,
8121
8014
  'default': HelpDialog$1
8122
8015
  };
8123
8016
 
8124
- var useStyles$o = /*#__PURE__*/core.makeStyles(function (theme) {
8017
+ var useStyles$n = /*#__PURE__*/core.makeStyles(function (theme) {
8125
8018
  return {
8126
8019
  root: {
8127
8020
  width: 500
@@ -8141,7 +8034,7 @@ var useStyles$o = /*#__PURE__*/core.makeStyles(function (theme) {
8141
8034
  function SetMaxHeightDlg$1(props) {
8142
8035
  var model = props.model,
8143
8036
  handleClose = props.handleClose;
8144
- var classes = useStyles$o();
8037
+ var classes = useStyles$n();
8145
8038
  var _model$maxHeight = model.maxHeight,
8146
8039
  maxHeight = _model$maxHeight === void 0 ? '' : _model$maxHeight;
8147
8040