@jbrowse/core 1.7.10 → 2.0.1

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 (86) hide show
  1. package/BaseFeatureWidget/BaseFeatureDetail.d.ts +14 -4
  2. package/BaseFeatureWidget/BaseFeatureDetail.js +97 -63
  3. package/BaseFeatureWidget/SequenceFeatureDetails.js +21 -15
  4. package/BaseFeatureWidget/index.d.ts +2 -2
  5. package/BaseFeatureWidget/index.js +5 -3
  6. package/BaseFeatureWidget/index.test.js +48 -30
  7. package/BaseFeatureWidget/types.d.ts +1 -0
  8. package/PluginManager.d.ts +68 -104
  9. package/ReExports/Attributes.d.ts +2 -0
  10. package/ReExports/Attributes.js +12 -0
  11. package/ReExports/BaseCard.d.ts +2 -0
  12. package/ReExports/BaseCard.js +12 -0
  13. package/ReExports/DataGrid.d.ts +2 -0
  14. package/ReExports/DataGrid.js +13 -0
  15. package/ReExports/FeatureDetails.d.ts +2 -0
  16. package/ReExports/FeatureDetails.js +12 -0
  17. package/ReExports/list.js +1 -1
  18. package/ReExports/material-ui-colors.d.ts +1 -19
  19. package/ReExports/material-ui-colors.js +11 -152
  20. package/ReExports/modules.d.ts +69 -109
  21. package/ReExports/modules.js +683 -127
  22. package/TextSearch/TextSearchManager.d.ts +3 -1
  23. package/assemblyManager/assembly.d.ts +6 -7
  24. package/assemblyManager/assembly.js +27 -16
  25. package/assemblyManager/assemblyManager.d.ts +82 -24
  26. package/assemblyManager/assemblyManager.js +11 -9
  27. package/configuration/util.d.ts +1 -1
  28. package/package.json +14 -16
  29. package/pluggableElementTypes/models/BaseDisplayModel.d.ts +10 -10
  30. package/pluggableElementTypes/models/BaseTrackModel.d.ts +1 -1
  31. package/pluggableElementTypes/models/BaseTrackModel.js +24 -25
  32. package/pluggableElementTypes/renderers/FeatureRendererType.js +17 -8
  33. package/pluggableElementTypes/renderers/ServerSideRenderedContent.js +2 -2
  34. package/pluggableElementTypes/renderers/ServerSideRendererType.d.ts +2 -2
  35. package/pluggableElementTypes/renderers/ServerSideRendererType.js +1 -1
  36. package/rpc/BaseRpcDriver.js +1 -1
  37. package/rpc/coreRpcMethods.d.ts +1 -3
  38. package/rpc/coreRpcMethods.js +5 -5
  39. package/tsconfig.build.tsbuildinfo +1 -1
  40. package/ui/AboutDialog.js +15 -10
  41. package/ui/App.js +18 -37
  42. package/ui/AssemblySelector.d.ts +1 -1
  43. package/ui/AssemblySelector.js +10 -5
  44. package/ui/CascadingMenu.js +10 -14
  45. package/ui/Drawer.js +8 -5
  46. package/ui/DrawerWidget.js +39 -45
  47. package/ui/DropDownMenu.d.ts +0 -8
  48. package/ui/DropDownMenu.js +9 -15
  49. package/ui/EditableTypography.d.ts +1 -1
  50. package/ui/EditableTypography.js +42 -48
  51. package/ui/ErrorMessage.js +13 -23
  52. package/ui/FactoryResetDialog.js +6 -6
  53. package/ui/FatalErrorDialog.js +5 -5
  54. package/ui/FileSelector/FileSelector.js +19 -19
  55. package/ui/FileSelector/LocalFileChooser.js +12 -8
  56. package/ui/FileSelector/UrlChooser.js +2 -2
  57. package/ui/Icons.d.ts +1 -1
  58. package/ui/Icons.js +1 -1
  59. package/ui/Menu.d.ts +1 -1
  60. package/ui/Menu.js +28 -29
  61. package/ui/PrerenderedCanvas.js +10 -1
  62. package/ui/ResizeHandle.js +8 -6
  63. package/ui/ReturnToImportFormDialog.js +14 -10
  64. package/ui/SanitizedHTML.js +15 -21
  65. package/ui/Snackbar.js +11 -9
  66. package/ui/Tooltip.d.ts +3 -1
  67. package/ui/Tooltip.js +5 -3
  68. package/ui/ViewContainer.js +38 -25
  69. package/ui/theme.d.ts +279 -131
  70. package/ui/theme.js +174 -154
  71. package/ui/theme.test.js +56 -75
  72. package/util/Base1DUtils.d.ts +32 -0
  73. package/util/Base1DUtils.js +213 -0
  74. package/util/Base1DViewModel.d.ts +16 -37
  75. package/util/Base1DViewModel.js +34 -166
  76. package/util/color/index.js +6 -6
  77. package/util/index.d.ts +12 -21
  78. package/util/index.js +29 -90
  79. package/util/layouts/GranularRectLayout.js +1 -3
  80. package/util/layouts/PrecomputedLayout.js +1 -3
  81. package/util/offscreenCanvasPonyfill.js +10 -12
  82. package/util/tracks.js +4 -2
  83. package/util/types/index.d.ts +14 -4
  84. package/util/types/index.js +6 -0
  85. package/util/types/mst.d.ts +3 -3
  86. package/util/types/mst.js +11 -7
@@ -0,0 +1,213 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.bpToPx = bpToPx;
9
+ exports.moveTo = moveTo;
10
+ exports.pxToBp = pxToBp;
11
+
12
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
13
+
14
+ var _mobxStateTree = require("mobx-state-tree");
15
+
16
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
17
+
18
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
19
+
20
+ function lengthBetween(self, start, end) {
21
+ var bpSoFar = 0;
22
+ var displayedRegions = self.displayedRegions;
23
+
24
+ if (start.index === end.index) {
25
+ bpSoFar += end.offset - start.offset;
26
+ } else {
27
+ var s = displayedRegions[start.index];
28
+ bpSoFar += s.end - s.start - start.offset;
29
+
30
+ if (end.index - start.index >= 2) {
31
+ for (var i = start.index + 1; i < end.index; i++) {
32
+ var region = displayedRegions[i];
33
+ var len = region.end - region.start;
34
+ bpSoFar += len;
35
+ }
36
+ }
37
+
38
+ bpSoFar += end.offset;
39
+ }
40
+
41
+ return bpSoFar;
42
+ }
43
+
44
+ function moveTo(self, start, end) {
45
+ if (!start || !end) {
46
+ return;
47
+ }
48
+
49
+ var width = self.width,
50
+ interRegionPaddingWidth = self.interRegionPaddingWidth;
51
+ var len = lengthBetween(self, start, end);
52
+ var numBlocks = end.index - start.index;
53
+ var targetBpPerPx = len / (width - interRegionPaddingWidth * numBlocks);
54
+ var newBpPerPx = self.zoomTo(targetBpPerPx); // If our target bpPerPx was smaller than the allowed minBpPerPx, adjust
55
+ // the scroll so the requested range is in the middle of the screen
56
+
57
+ var extraBp = 0;
58
+
59
+ if (targetBpPerPx < newBpPerPx) {
60
+ extraBp = (newBpPerPx - targetBpPerPx) * self.width / 2;
61
+ }
62
+
63
+ var bpToStart = -extraBp;
64
+
65
+ for (var i = 0; i < self.displayedRegions.length; i += 1) {
66
+ var region = self.displayedRegions[i];
67
+
68
+ if (start.index === i) {
69
+ bpToStart += start.offset;
70
+ break;
71
+ } else {
72
+ bpToStart += region.end - region.start;
73
+ }
74
+ }
75
+
76
+ self.scrollTo(Math.round(bpToStart / self.bpPerPx));
77
+ } // manual return type since getSnapshot hard to infer here
78
+
79
+
80
+ function pxToBp(self, px) {
81
+ var bpSoFar = 0;
82
+ var bpPerPx = self.bpPerPx,
83
+ offsetPx = self.offsetPx,
84
+ displayedRegions = self.displayedRegions,
85
+ interRegionPaddingWidth = self.interRegionPaddingWidth,
86
+ staticBlocks = self.staticBlocks;
87
+ var blocks = staticBlocks.contentBlocks;
88
+ var bp = (offsetPx + px) * bpPerPx;
89
+
90
+ if (bp < 0) {
91
+ var region = displayedRegions[0];
92
+ var snap = (0, _mobxStateTree.getSnapshot)(region); // @ts-ignore
93
+
94
+ return _objectSpread(_objectSpread({}, snap), {}, {
95
+ oob: true,
96
+ coord: region.reversed ? Math.floor(region.end - bp) + 1 : Math.floor(region.start + bp) + 1,
97
+ offset: bp,
98
+ index: 0
99
+ });
100
+ }
101
+
102
+ var interRegionPaddingBp = interRegionPaddingWidth * bpPerPx;
103
+ var currBlock = 0;
104
+
105
+ for (var i = 0; i < displayedRegions.length; i++) {
106
+ var _blocks$currBlock;
107
+
108
+ var _region = displayedRegions[i];
109
+ var len = _region.end - _region.start;
110
+ var offset = bp - bpSoFar;
111
+
112
+ if (len + bpSoFar > bp && bpSoFar <= bp) {
113
+ var _snap = (0, _mobxStateTree.getSnapshot)(_region); // @ts-ignore
114
+
115
+
116
+ return _objectSpread(_objectSpread({}, _snap), {}, {
117
+ oob: false,
118
+ offset: offset,
119
+ coord: _region.reversed ? Math.floor(_region.end - offset) + 1 : Math.floor(_region.start + offset) + 1,
120
+ index: i
121
+ });
122
+ } // add the interRegionPaddingWidth if the boundary is in the screen e.g. in
123
+ // a static block
124
+
125
+
126
+ if (((_blocks$currBlock = blocks[currBlock]) === null || _blocks$currBlock === void 0 ? void 0 : _blocks$currBlock.regionNumber) === i) {
127
+ bpSoFar += len + interRegionPaddingBp;
128
+ currBlock++;
129
+ } else {
130
+ bpSoFar += len;
131
+ }
132
+ }
133
+
134
+ if (bp >= bpSoFar) {
135
+ var _region2 = displayedRegions[displayedRegions.length - 1];
136
+
137
+ var _len = _region2.end - _region2.start;
138
+
139
+ var _offset = bp - bpSoFar + _len;
140
+
141
+ var _snap2 = (0, _mobxStateTree.getSnapshot)(_region2); // @ts-ignore
142
+
143
+
144
+ return _objectSpread(_objectSpread({}, _snap2), {}, {
145
+ oob: true,
146
+ offset: _offset,
147
+ coord: _region2.reversed ? Math.floor(_region2.end - _offset) + 1 : Math.floor(_region2.start + _offset) + 1,
148
+ index: displayedRegions.length - 1
149
+ });
150
+ }
151
+
152
+ return {
153
+ coord: 0,
154
+ index: 0,
155
+ refName: '',
156
+ oob: true,
157
+ assemblyName: '',
158
+ offset: 0,
159
+ start: 0,
160
+ end: 0,
161
+ reversed: false
162
+ };
163
+ }
164
+
165
+ function bpToPx(_ref) {
166
+ var refName = _ref.refName,
167
+ coord = _ref.coord,
168
+ regionNumber = _ref.regionNumber,
169
+ self = _ref.self;
170
+ var bpSoFar = 0;
171
+ var interRegionPaddingWidth = self.interRegionPaddingWidth,
172
+ bpPerPx = self.bpPerPx,
173
+ displayedRegions = self.displayedRegions,
174
+ staticBlocks = self.staticBlocks;
175
+ var blocks = staticBlocks.contentBlocks;
176
+ var interRegionPaddingBp = interRegionPaddingWidth * bpPerPx;
177
+ var currBlock = 0;
178
+ var i = 0;
179
+
180
+ for (; i < displayedRegions.length; i++) {
181
+ var _blocks$currBlock2;
182
+
183
+ var region = displayedRegions[i];
184
+ var len = region.end - region.start;
185
+
186
+ if (refName === region.refName && coord >= region.start && coord <= region.end) {
187
+ if (regionNumber ? regionNumber === i : true) {
188
+ bpSoFar += region.reversed ? region.end - coord : coord - region.start;
189
+ break;
190
+ }
191
+ } // add the interRegionPaddingWidth if the boundary is in the screen e.g. in
192
+ // a static block
193
+
194
+
195
+ if (((_blocks$currBlock2 = blocks[currBlock]) === null || _blocks$currBlock2 === void 0 ? void 0 : _blocks$currBlock2.regionNumber) === i) {
196
+ bpSoFar += len + interRegionPaddingBp;
197
+ currBlock++;
198
+ } else {
199
+ bpSoFar += len;
200
+ }
201
+ }
202
+
203
+ var found = displayedRegions[i];
204
+
205
+ if (found) {
206
+ return {
207
+ index: i,
208
+ offsetPx: Math.round(bpSoFar / bpPerPx)
209
+ };
210
+ }
211
+
212
+ return undefined;
213
+ }
@@ -1,13 +1,7 @@
1
1
  import { Instance } from 'mobx-state-tree';
2
2
  import { Feature } from './simpleFeature';
3
3
  import { Region as IRegion } from './types';
4
- export interface BpOffset {
5
- refName?: string;
6
- index: number;
7
- offset: number;
8
- start?: number;
9
- end?: number;
10
- }
4
+ import { BpOffset } from './Base1DUtils';
11
5
  declare const Base1DView: import("mobx-state-tree").IModelType<{
12
6
  id: import("mobx-state-tree").IOptionalIType<import("mobx-state-tree").ISimpleType<string>, [undefined]>;
13
7
  displayedRegions: import("mobx-state-tree").IArrayType<import("mobx-state-tree").IModelType<{
@@ -38,37 +32,22 @@ declare const Base1DView: import("mobx-state-tree").IModelType<{
38
32
  readonly maxOffset: number;
39
33
  readonly minOffset: number;
40
34
  readonly totalBp: number;
35
+ } & {
36
+ readonly dynamicBlocks: import("./blockTypes").BlockSet;
37
+ readonly staticBlocks: import("./blockTypes").BlockSet;
38
+ readonly currBp: number;
39
+ } & {
41
40
  pxToBp(px: number): {
42
- oob: boolean;
43
41
  coord: number;
44
- offset: number;
45
42
  index: number;
46
43
  refName: string;
47
- start: number;
48
- end: number;
49
- reversed: boolean;
50
- assemblyName: string;
51
- } | {
52
- coord: number;
53
- index: number;
54
- start: number;
55
- refName: string;
56
44
  oob: boolean;
57
45
  assemblyName: string;
58
46
  offset: number;
47
+ start: number;
48
+ end: number;
59
49
  reversed: boolean;
60
50
  };
61
- } & {
62
- readonly dynamicBlocks: import("./blockTypes").BlockSet;
63
- readonly staticBlocks: import("./blockTypes").BlockSet;
64
- readonly currBp: number;
65
- /**
66
- * calculates the Px at which coord is found.
67
- *
68
- * @param refName - string, refName of region
69
- * @param coord - number, bp to be translated to Px
70
- * @param regionNumber - number, index of displayedRegion in displayedRegions array
71
- */
72
51
  bpToPx({ refName, coord, regionNumber, }: {
73
52
  refName: string;
74
53
  coord: number;
@@ -76,8 +55,14 @@ declare const Base1DView: import("mobx-state-tree").IModelType<{
76
55
  }): number | undefined;
77
56
  } & {
78
57
  setFeatures(features: Feature[]): void;
79
- zoomToDisplayedRegions(leftPx: BpOffset | undefined, rightPx: BpOffset | undefined): void;
80
58
  showAllRegions(): void;
59
+ zoomOut(): void;
60
+ zoomIn(): void;
61
+ zoomTo(newBpPerPx: number, offset?: number): number;
62
+ scrollTo(offsetPx: number): number;
63
+ centerAt(coord: number, refName: string | undefined, regionNumber: number): void;
64
+ scroll(distance: number): number;
65
+ } & {
81
66
  /**
82
67
  * offset is the base-pair-offset in the displayed region, index is the index of the
83
68
  * displayed region in the linear genome view
@@ -85,13 +70,7 @@ declare const Base1DView: import("mobx-state-tree").IModelType<{
85
70
  * @param start - object as `{start, end, offset, index}`
86
71
  * @param end - object as `{start, end, offset, index}`
87
72
  */
88
- moveTo(start: BpOffset, end: BpOffset): void;
89
- zoomOut(): void;
90
- zoomIn(): void;
91
- zoomTo(newBpPerPx: number, offset?: number): void;
92
- scrollTo(offsetPx: number): number;
93
- centerAt(bp: number, refName: string, regionIndex: number): void;
94
- scroll(distance: number): number;
73
+ moveTo(start?: BpOffset, end?: BpOffset): void;
95
74
  }, import("mobx-state-tree")._NotCustomized, import("mobx-state-tree")._NotCustomized>;
96
75
  export declare type Base1DViewStateModel = typeof Base1DView;
97
76
  export declare type Base1DViewModel = Instance<Base1DViewStateModel>;
@@ -7,8 +7,6 @@ Object.defineProperty(exports, "__esModule", {
7
7
  });
8
8
  exports.default = void 0;
9
9
 
10
- var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
11
-
12
10
  var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
13
11
 
14
12
  var _mobxStateTree = require("mobx-state-tree");
@@ -21,9 +19,7 @@ var _calculateDynamicBlocks = _interopRequireDefault(require("./calculateDynamic
21
19
 
22
20
  var _calculateStaticBlocks = _interopRequireDefault(require("./calculateStaticBlocks"));
23
21
 
24
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
25
-
26
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
22
+ var _Base1DUtils = require("./Base1DUtils");
27
23
 
28
24
  var Base1DView = _mobxStateTree.types.model('Base1DView', {
29
25
  id: _mst.ElementId,
@@ -83,77 +79,8 @@ var Base1DView = _mobxStateTree.types.model('Base1DView', {
83
79
  }).reduce(function (a, b) {
84
80
  return a + b;
85
81
  }, 0);
86
- },
87
-
88
- pxToBp: function pxToBp(px) {
89
- var bpSoFar = 0;
90
- var bp = (self.offsetPx + px) * self.bpPerPx;
91
- var n = self.displayedRegions.length;
92
-
93
- if (bp < 0) {
94
- var region = self.displayedRegions[0];
95
- var offset = bp;
96
- return _objectSpread(_objectSpread({}, (0, _mobxStateTree.getSnapshot)(region)), {}, {
97
- oob: true,
98
- coord: region.reversed ? Math.floor(region.end - offset) + 1 : Math.floor(region.start + offset) + 1,
99
- offset: offset,
100
- index: 0
101
- });
102
- }
103
-
104
- var interRegionPaddingBp = self.interRegionPaddingWidth * self.bpPerPx;
105
- var minimumBlockBp = self.minimumBlockWidth * self.bpPerPx;
106
-
107
- for (var index = 0; index < self.displayedRegions.length; index += 1) {
108
- var _region = self.displayedRegions[index];
109
- var len = _region.end - _region.start;
110
-
111
- var _offset = bp - bpSoFar;
112
-
113
- if (len + bpSoFar > bp && bpSoFar <= bp) {
114
- return _objectSpread(_objectSpread({}, (0, _mobxStateTree.getSnapshot)(_region)), {}, {
115
- oob: false,
116
- offset: _offset,
117
- coord: _region.reversed ? Math.floor(_region.end - _offset) + 1 : Math.floor(_region.start + _offset) + 1,
118
- index: index
119
- });
120
- } // add the interRegionPaddingWidth if the boundary is in the screen
121
- // e.g. offset>0 && offset<width
122
-
123
-
124
- if (_region.end - _region.start > minimumBlockBp && _offset / self.bpPerPx > 0 && _offset / self.bpPerPx < this.width) {
125
- bpSoFar += len + interRegionPaddingBp;
126
- } else {
127
- bpSoFar += len;
128
- }
129
- }
130
-
131
- if (bp >= bpSoFar) {
132
- var _region2 = self.displayedRegions[n - 1];
133
-
134
- var _len = _region2.end - _region2.start;
135
-
136
- var _offset2 = bp - bpSoFar + _len;
137
-
138
- return _objectSpread(_objectSpread({}, (0, _mobxStateTree.getSnapshot)(_region2)), {}, {
139
- oob: true,
140
- offset: _offset2,
141
- coord: _region2.reversed ? Math.floor(_region2.end - _offset2) + 1 : Math.floor(_region2.start + _offset2) + 1,
142
- index: n - 1
143
- });
144
- }
145
-
146
- return {
147
- coord: 0,
148
- index: 0,
149
- start: 0,
150
- refName: '',
151
- oob: true,
152
- assemblyName: '',
153
- offset: 0,
154
- reversed: false
155
- };
156
82
  }
83
+
157
84
  };
158
85
  }).views(function (self) {
159
86
  return {
@@ -171,27 +98,26 @@ var Base1DView = _mobxStateTree.types.model('Base1DView', {
171
98
  }).reduce(function (a, b) {
172
99
  return a + b;
173
100
  }, 0);
174
- },
101
+ }
175
102
 
176
- /**
177
- * calculates the Px at which coord is found.
178
- *
179
- * @param refName - string, refName of region
180
- * @param coord - number, bp to be translated to Px
181
- * @param regionNumber - number, index of displayedRegion in displayedRegions array
182
- */
103
+ };
104
+ }).views(function (self) {
105
+ return {
106
+ pxToBp: function pxToBp(px) {
107
+ return (0, _Base1DUtils.pxToBp)(self, px);
108
+ },
183
109
  bpToPx: function bpToPx(_ref) {
184
- var _viewBpToPx;
110
+ var _bpToPx2;
185
111
 
186
112
  var refName = _ref.refName,
187
113
  coord = _ref.coord,
188
114
  regionNumber = _ref.regionNumber;
189
- return (_viewBpToPx = (0, _index.viewBpToPx)({
115
+ return (_bpToPx2 = (0, _Base1DUtils.bpToPx)({
190
116
  refName: refName,
191
117
  coord: coord,
192
118
  regionNumber: regionNumber,
193
119
  self: self
194
- })) === null || _viewBpToPx === void 0 ? void 0 : _viewBpToPx.offsetPx;
120
+ })) === null || _bpToPx2 === void 0 ? void 0 : _bpToPx2.offsetPx;
195
121
  }
196
122
  };
197
123
  }).actions(function (self) {
@@ -199,88 +125,12 @@ var Base1DView = _mobxStateTree.types.model('Base1DView', {
199
125
  setFeatures: function setFeatures(features) {
200
126
  self.features = features;
201
127
  },
202
- zoomToDisplayedRegions: function zoomToDisplayedRegions(leftPx, rightPx) {
203
- if (leftPx === undefined || rightPx === undefined) {
204
- return;
205
- }
206
-
207
- var singleRefSeq = leftPx.refName === rightPx.refName && leftPx.index === rightPx.index; // zooming into one displayed Region
208
-
209
- if (singleRefSeq && rightPx.offset < leftPx.offset || leftPx.index > rightPx.index) {
210
- ;
211
- var _ref2 = [rightPx, leftPx];
212
- leftPx = _ref2[0];
213
- rightPx = _ref2[1];
214
- }
215
-
216
- var startOffset = {
217
- start: leftPx.start,
218
- end: leftPx.end,
219
- index: leftPx.index,
220
- offset: leftPx.offset
221
- };
222
- var endOffset = {
223
- start: rightPx.start,
224
- end: rightPx.end,
225
- index: rightPx.index,
226
- offset: rightPx.offset
227
- };
228
-
229
- if (startOffset && endOffset) {
230
- this.moveTo(startOffset, endOffset);
231
- } else {
232
- throw new Error('regions not found');
233
- }
234
- },
235
128
  // this makes a zoomed out view that shows all displayedRegions
236
129
  // that makes the overview bar square with the scale bar
237
130
  showAllRegions: function showAllRegions() {
238
131
  self.bpPerPx = self.totalBp / self.width;
239
132
  self.offsetPx = 0;
240
133
  },
241
-
242
- /**
243
- * offset is the base-pair-offset in the displayed region, index is the index of the
244
- * displayed region in the linear genome view
245
- *
246
- * @param start - object as `{start, end, offset, index}`
247
- * @param end - object as `{start, end, offset, index}`
248
- */
249
- moveTo: function moveTo(start, end) {
250
- // find locations in the modellist
251
- var bpSoFar = 0;
252
-
253
- if (start.index === end.index) {
254
- bpSoFar += end.offset - start.offset;
255
- } else {
256
- var s = self.displayedRegions[start.index];
257
- bpSoFar += s.end - s.start - start.offset;
258
-
259
- if (end.index - start.index >= 2) {
260
- for (var i = start.index + 1; i < end.index; i += 1) {
261
- bpSoFar += self.displayedRegions[i].end - self.displayedRegions[i].start;
262
- }
263
- }
264
-
265
- bpSoFar += end.offset;
266
- }
267
-
268
- this.zoomTo(bpSoFar / (self.width - self.interRegionPaddingWidth * (end.index - start.index)));
269
- var bpToStart = 0;
270
-
271
- for (var _i = 0; _i < self.displayedRegions.length; _i += 1) {
272
- var region = self.displayedRegions[_i];
273
-
274
- if (start.index === _i) {
275
- bpToStart += start.offset;
276
- break;
277
- } else {
278
- bpToStart += region.end - region.start;
279
- }
280
- }
281
-
282
- self.offsetPx = Math.round(bpToStart / self.bpPerPx) + self.interRegionPaddingWidth * start.index;
283
- },
284
134
  zoomOut: function zoomOut() {
285
135
  this.zoomTo(self.bpPerPx * 2);
286
136
  },
@@ -292,24 +142,29 @@ var Base1DView = _mobxStateTree.types.model('Base1DView', {
292
142
  var bpPerPx = newBpPerPx;
293
143
 
294
144
  if (bpPerPx === self.bpPerPx) {
295
- return;
145
+ return self.bpPerPx;
296
146
  }
297
147
 
298
148
  var oldBpPerPx = self.bpPerPx;
299
149
  self.bpPerPx = bpPerPx; // tweak the offset so that the center of the view remains at the same coordinate
300
150
 
301
151
  self.offsetPx = (0, _index.clamp)(Math.round((self.offsetPx + offset) * oldBpPerPx / bpPerPx - offset), self.minOffset, self.maxOffset);
152
+ return self.bpPerPx;
302
153
  },
303
154
  scrollTo: function scrollTo(offsetPx) {
304
155
  var newOffsetPx = (0, _index.clamp)(offsetPx, self.minOffset, self.maxOffset);
305
156
  self.offsetPx = newOffsetPx;
306
157
  return newOffsetPx;
307
158
  },
308
- centerAt: function centerAt(bp, refName, regionIndex) {
159
+ centerAt: function centerAt(coord, refName, regionNumber) {
160
+ if (!refName) {
161
+ return;
162
+ }
163
+
309
164
  var centerPx = self.bpToPx({
310
165
  refName: refName,
311
- coord: bp,
312
- regionNumber: regionIndex
166
+ coord: coord,
167
+ regionNumber: regionNumber
313
168
  });
314
169
 
315
170
  if (centerPx) {
@@ -324,6 +179,19 @@ var Base1DView = _mobxStateTree.types.model('Base1DView', {
324
179
  return newOffsetPx - oldOffsetPx;
325
180
  }
326
181
  };
182
+ }).actions(function (self) {
183
+ return {
184
+ /**
185
+ * offset is the base-pair-offset in the displayed region, index is the index of the
186
+ * displayed region in the linear genome view
187
+ *
188
+ * @param start - object as `{start, end, offset, index}`
189
+ * @param end - object as `{start, end, offset, index}`
190
+ */
191
+ moveTo: function moveTo(start, end) {
192
+ (0, _Base1DUtils.moveTo)(self, start, end);
193
+ }
194
+ };
327
195
  });
328
196
 
329
197
  var _default = Base1DView;
@@ -19,7 +19,7 @@ Object.defineProperty(exports, "namedColorToHex", {
19
19
  }
20
20
  });
21
21
 
22
- var _colorManipulator = require("@material-ui/core/styles/colorManipulator");
22
+ var _styles = require("@mui/material/styles");
23
23
 
24
24
  var _cssColorsLevel = require("./cssColorsLevel4");
25
25
 
@@ -51,7 +51,7 @@ function contrastingTextColor(color) {
51
51
 
52
52
  function getLuminance(color) {
53
53
  var convertedColor = (0, _cssColorsLevel.namedColorToHex)(color);
54
- return (0, _colorManipulator.getLuminance)(convertedColor || color);
54
+ return (0, _styles.getLuminance)(convertedColor || color);
55
55
  }
56
56
  /**
57
57
  * Darken or lighten a color, depending on its luminance.
@@ -68,7 +68,7 @@ function getLuminance(color) {
68
68
  function emphasize(color) {
69
69
  var coefficient = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0.15;
70
70
  var convertedColor = (0, _cssColorsLevel.namedColorToHex)(color);
71
- return (0, _colorManipulator.emphasize)(convertedColor || color, coefficient);
71
+ return (0, _styles.emphasize)(convertedColor || color, coefficient);
72
72
  }
73
73
 
74
74
  function makeContrasting(foreground) {
@@ -77,14 +77,14 @@ function makeContrasting(foreground) {
77
77
  var convertedForeground = (0, _cssColorsLevel.namedColorToHex)(foreground) || foreground;
78
78
  var convertedBackground = (0, _cssColorsLevel.namedColorToHex)(background) || background;
79
79
  var backgroundLuminance = getLuminance(convertedBackground);
80
- var contrastRatio = (0, _colorManipulator.getContrastRatio)(convertedForeground, convertedBackground);
80
+ var contrastRatio = (0, _styles.getContrastRatio)(convertedForeground, convertedBackground);
81
81
  var originalColor = convertedForeground;
82
82
  var coefficient = 0.05;
83
83
 
84
84
  while (contrastRatio < minContrastRatio) {
85
- convertedForeground = backgroundLuminance > 0.5 ? (0, _colorManipulator.darken)(originalColor, coefficient) : (0, _colorManipulator.lighten)(originalColor, coefficient);
85
+ convertedForeground = backgroundLuminance > 0.5 ? (0, _styles.darken)(originalColor, coefficient) : (0, _styles.lighten)(originalColor, coefficient);
86
86
  coefficient += 0.05;
87
- contrastRatio = (0, _colorManipulator.getContrastRatio)(convertedForeground, convertedBackground);
87
+ contrastRatio = (0, _styles.getContrastRatio)(convertedForeground, convertedBackground);
88
88
  }
89
89
 
90
90
  return convertedForeground;