@jbrowse/plugin-linear-genome-view 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 (271) hide show
  1. package/dist/BaseLinearDisplay/components/BaseLinearDisplay.js +119 -139
  2. package/dist/BaseLinearDisplay/components/BaseLinearDisplay.js.map +1 -0
  3. package/dist/BaseLinearDisplay/components/Block.js +53 -74
  4. package/dist/BaseLinearDisplay/components/Block.js.map +1 -0
  5. package/dist/BaseLinearDisplay/components/LinearBlocks.d.ts +11 -1
  6. package/dist/BaseLinearDisplay/components/LinearBlocks.js +64 -103
  7. package/dist/BaseLinearDisplay/components/LinearBlocks.js.map +1 -0
  8. package/dist/BaseLinearDisplay/components/ServerSideRenderedBlockContent.js +145 -175
  9. package/dist/BaseLinearDisplay/components/ServerSideRenderedBlockContent.js.map +1 -0
  10. package/dist/BaseLinearDisplay/components/Tooltip.js +109 -116
  11. package/dist/BaseLinearDisplay/components/Tooltip.js.map +1 -0
  12. package/dist/BaseLinearDisplay/index.js +13 -40
  13. package/dist/BaseLinearDisplay/index.js.map +1 -0
  14. package/dist/BaseLinearDisplay/models/BaseLinearDisplayModel.d.ts +20 -15
  15. package/dist/BaseLinearDisplay/models/BaseLinearDisplayModel.js +605 -684
  16. package/dist/BaseLinearDisplay/models/BaseLinearDisplayModel.js.map +1 -0
  17. package/dist/BaseLinearDisplay/models/baseLinearDisplayConfigSchema.js +15 -22
  18. package/dist/BaseLinearDisplay/models/baseLinearDisplayConfigSchema.js.map +1 -0
  19. package/dist/BaseLinearDisplay/models/serverSideRenderedBlock.d.ts +7 -8
  20. package/dist/BaseLinearDisplay/models/serverSideRenderedBlock.js +266 -312
  21. package/dist/BaseLinearDisplay/models/serverSideRenderedBlock.js.map +1 -0
  22. package/dist/LinearBareDisplay/configSchema.js +11 -17
  23. package/dist/LinearBareDisplay/configSchema.js.map +1 -0
  24. package/dist/LinearBareDisplay/index.js +7 -20
  25. package/dist/LinearBareDisplay/index.js.map +1 -0
  26. package/dist/LinearBareDisplay/model.d.ts +16 -14
  27. package/dist/LinearBareDisplay/model.js +36 -42
  28. package/dist/LinearBareDisplay/model.js.map +1 -0
  29. package/dist/LinearBasicDisplay/components/SetMaxHeight.d.ts +1 -1
  30. package/dist/LinearBasicDisplay/components/SetMaxHeight.js +76 -85
  31. package/dist/LinearBasicDisplay/components/SetMaxHeight.js.map +1 -0
  32. package/dist/LinearBasicDisplay/configSchema.js +15 -23
  33. package/dist/LinearBasicDisplay/configSchema.js.map +1 -0
  34. package/dist/LinearBasicDisplay/index.js +10 -22
  35. package/dist/LinearBasicDisplay/index.js.map +1 -0
  36. package/dist/LinearBasicDisplay/model.d.ts +20 -15
  37. package/dist/LinearBasicDisplay/model.js +180 -159
  38. package/dist/LinearBasicDisplay/model.js.map +1 -0
  39. package/dist/LinearGenomeView/components/CenterLine.d.ts +2 -8
  40. package/dist/LinearGenomeView/components/CenterLine.js +60 -74
  41. package/dist/LinearGenomeView/components/CenterLine.js.map +1 -0
  42. package/dist/LinearGenomeView/components/ExportSvgDialog.js +141 -141
  43. package/dist/LinearGenomeView/components/ExportSvgDialog.js.map +1 -0
  44. package/dist/LinearGenomeView/components/Gridlines.d.ts +8 -0
  45. package/dist/LinearGenomeView/components/Gridlines.js +78 -0
  46. package/dist/LinearGenomeView/components/Gridlines.js.map +1 -0
  47. package/dist/LinearGenomeView/components/Header.js +70 -126
  48. package/dist/LinearGenomeView/components/Header.js.map +1 -0
  49. package/dist/LinearGenomeView/components/HelpDialog.d.ts +0 -1
  50. package/dist/LinearGenomeView/components/HelpDialog.js +62 -44
  51. package/dist/LinearGenomeView/components/HelpDialog.js.map +1 -0
  52. package/dist/LinearGenomeView/components/ImportForm.js +223 -320
  53. package/dist/LinearGenomeView/components/ImportForm.js.map +1 -0
  54. package/dist/LinearGenomeView/components/LinearGenomeView.js +64 -124
  55. package/dist/LinearGenomeView/components/LinearGenomeView.js.map +1 -0
  56. package/dist/LinearGenomeView/components/LinearGenomeViewSvg.js +198 -337
  57. package/dist/LinearGenomeView/components/LinearGenomeViewSvg.js.map +1 -0
  58. package/dist/LinearGenomeView/components/MiniControls.js +64 -78
  59. package/dist/LinearGenomeView/components/MiniControls.js.map +1 -0
  60. package/dist/LinearGenomeView/components/OverviewRubberBand.js +229 -293
  61. package/dist/LinearGenomeView/components/OverviewRubberBand.js.map +1 -0
  62. package/dist/LinearGenomeView/components/OverviewScaleBar.d.ts +24 -8
  63. package/dist/LinearGenomeView/components/OverviewScaleBar.js +277 -365
  64. package/dist/LinearGenomeView/components/OverviewScaleBar.js.map +1 -0
  65. package/dist/LinearGenomeView/components/RefNameAutocomplete.d.ts +1 -1
  66. package/dist/LinearGenomeView/components/RefNameAutocomplete.js +237 -324
  67. package/dist/LinearGenomeView/components/RefNameAutocomplete.js.map +1 -0
  68. package/dist/LinearGenomeView/components/RubberBand.js +228 -296
  69. package/dist/LinearGenomeView/components/RubberBand.js.map +1 -0
  70. package/dist/LinearGenomeView/components/Ruler.js +45 -90
  71. package/dist/LinearGenomeView/components/Ruler.js.map +1 -0
  72. package/dist/LinearGenomeView/components/ScaleBar.d.ts +8 -403
  73. package/dist/LinearGenomeView/components/ScaleBar.js +121 -172
  74. package/dist/LinearGenomeView/components/ScaleBar.js.map +1 -0
  75. package/dist/LinearGenomeView/components/SearchBox.js +158 -205
  76. package/dist/LinearGenomeView/components/SearchBox.js.map +1 -0
  77. package/dist/LinearGenomeView/components/SearchResultsDialog.d.ts +0 -1
  78. package/dist/LinearGenomeView/components/SearchResultsDialog.js +105 -150
  79. package/dist/LinearGenomeView/components/SearchResultsDialog.js.map +1 -0
  80. package/dist/LinearGenomeView/components/SequenceDialog.js +219 -272
  81. package/dist/LinearGenomeView/components/SequenceDialog.js.map +1 -0
  82. package/dist/LinearGenomeView/components/TrackContainer.js +116 -156
  83. package/dist/LinearGenomeView/components/TrackContainer.js.map +1 -0
  84. package/dist/LinearGenomeView/components/TrackLabel.d.ts +6 -42
  85. package/dist/LinearGenomeView/components/TrackLabel.js +115 -134
  86. package/dist/LinearGenomeView/components/TrackLabel.js.map +1 -0
  87. package/dist/LinearGenomeView/components/TracksContainer.d.ts +1 -1
  88. package/dist/LinearGenomeView/components/TracksContainer.js +172 -199
  89. package/dist/LinearGenomeView/components/TracksContainer.js.map +1 -0
  90. package/dist/LinearGenomeView/components/ZoomControls.js +72 -87
  91. package/dist/LinearGenomeView/components/ZoomControls.js.map +1 -0
  92. package/dist/LinearGenomeView/components/util.d.ts +12 -0
  93. package/dist/LinearGenomeView/components/util.js +95 -13
  94. package/dist/LinearGenomeView/components/util.js.map +1 -0
  95. package/dist/LinearGenomeView/index.d.ts +64 -77
  96. package/dist/LinearGenomeView/index.js +1035 -1412
  97. package/dist/LinearGenomeView/index.js.map +1 -0
  98. package/dist/LinearGenomeView/util.js +76 -83
  99. package/dist/LinearGenomeView/util.js.map +1 -0
  100. package/dist/index.d.ts +101 -51
  101. package/dist/index.js +225 -295
  102. package/dist/index.js.map +1 -0
  103. package/esm/BaseLinearDisplay/components/BaseLinearDisplay.d.ts +9 -0
  104. package/esm/BaseLinearDisplay/components/BaseLinearDisplay.js +68 -0
  105. package/esm/BaseLinearDisplay/components/BaseLinearDisplay.js.map +1 -0
  106. package/esm/BaseLinearDisplay/components/Block.d.ts +15 -0
  107. package/esm/BaseLinearDisplay/components/Block.js +46 -0
  108. package/esm/BaseLinearDisplay/components/Block.js.map +1 -0
  109. package/esm/BaseLinearDisplay/components/LinearBlocks.d.ts +22 -0
  110. package/esm/BaseLinearDisplay/components/LinearBlocks.js +62 -0
  111. package/esm/BaseLinearDisplay/components/LinearBlocks.js.map +1 -0
  112. package/esm/BaseLinearDisplay/components/ServerSideRenderedBlockContent.d.ts +4 -0
  113. package/esm/BaseLinearDisplay/components/ServerSideRenderedBlockContent.js +113 -0
  114. package/esm/BaseLinearDisplay/components/ServerSideRenderedBlockContent.js.map +1 -0
  115. package/esm/BaseLinearDisplay/components/Tooltip.d.ts +8 -0
  116. package/esm/BaseLinearDisplay/components/Tooltip.js +64 -0
  117. package/esm/BaseLinearDisplay/components/Tooltip.js.map +1 -0
  118. package/esm/BaseLinearDisplay/index.d.ts +5 -0
  119. package/esm/BaseLinearDisplay/index.js +4 -0
  120. package/esm/BaseLinearDisplay/index.js.map +1 -0
  121. package/esm/BaseLinearDisplay/models/BaseLinearDisplayModel.d.ts +232 -0
  122. package/esm/BaseLinearDisplay/models/BaseLinearDisplayModel.js +541 -0
  123. package/esm/BaseLinearDisplay/models/BaseLinearDisplayModel.js.map +1 -0
  124. package/esm/BaseLinearDisplay/models/baseLinearDisplayConfigSchema.d.ts +1 -0
  125. package/esm/BaseLinearDisplay/models/baseLinearDisplayConfigSchema.js +14 -0
  126. package/esm/BaseLinearDisplay/models/baseLinearDisplayConfigSchema.js.map +1 -0
  127. package/esm/BaseLinearDisplay/models/serverSideRenderedBlock.d.ts +96 -0
  128. package/esm/BaseLinearDisplay/models/serverSideRenderedBlock.js +225 -0
  129. package/esm/BaseLinearDisplay/models/serverSideRenderedBlock.js.map +1 -0
  130. package/esm/LinearBareDisplay/configSchema.d.ts +2 -0
  131. package/esm/LinearBareDisplay/configSchema.js +9 -0
  132. package/esm/LinearBareDisplay/configSchema.js.map +1 -0
  133. package/esm/LinearBareDisplay/index.d.ts +2 -0
  134. package/esm/LinearBareDisplay/index.js +3 -0
  135. package/esm/LinearBareDisplay/index.js.map +1 -0
  136. package/esm/LinearBareDisplay/model.d.ts +194 -0
  137. package/esm/LinearBareDisplay/model.js +28 -0
  138. package/esm/LinearBareDisplay/model.js.map +1 -0
  139. package/esm/LinearBasicDisplay/components/SetMaxHeight.d.ts +10 -0
  140. package/esm/LinearBasicDisplay/components/SetMaxHeight.js +40 -0
  141. package/esm/LinearBasicDisplay/components/SetMaxHeight.js.map +1 -0
  142. package/esm/LinearBasicDisplay/configSchema.d.ts +2 -0
  143. package/esm/LinearBasicDisplay/configSchema.js +14 -0
  144. package/esm/LinearBasicDisplay/configSchema.js.map +1 -0
  145. package/esm/LinearBasicDisplay/index.d.ts +2 -0
  146. package/esm/LinearBasicDisplay/index.js +3 -0
  147. package/esm/LinearBasicDisplay/index.js.map +1 -0
  148. package/esm/LinearBasicDisplay/model.d.ts +218 -0
  149. package/esm/LinearBasicDisplay/model.js +127 -0
  150. package/esm/LinearBasicDisplay/model.js.map +1 -0
  151. package/esm/LinearGenomeView/components/CenterLine.d.ts +8 -0
  152. package/esm/LinearGenomeView/components/CenterLine.js +40 -0
  153. package/esm/LinearGenomeView/components/CenterLine.js.map +1 -0
  154. package/esm/LinearGenomeView/components/ExportSvgDialog.d.ts +6 -0
  155. package/esm/LinearGenomeView/components/ExportSvgDialog.js +52 -0
  156. package/esm/LinearGenomeView/components/ExportSvgDialog.js.map +1 -0
  157. package/esm/LinearGenomeView/components/Gridlines.d.ts +8 -0
  158. package/esm/LinearGenomeView/components/Gridlines.js +71 -0
  159. package/esm/LinearGenomeView/components/Gridlines.js.map +1 -0
  160. package/esm/LinearGenomeView/components/Header.d.ts +7 -0
  161. package/esm/LinearGenomeView/components/Header.js +81 -0
  162. package/esm/LinearGenomeView/components/Header.js.map +1 -0
  163. package/esm/LinearGenomeView/components/HelpDialog.d.ts +4 -0
  164. package/esm/LinearGenomeView/components/HelpDialog.js +58 -0
  165. package/esm/LinearGenomeView/components/HelpDialog.js.map +1 -0
  166. package/esm/LinearGenomeView/components/ImportForm.d.ts +7 -0
  167. package/esm/LinearGenomeView/components/ImportForm.js +141 -0
  168. package/esm/LinearGenomeView/components/ImportForm.js.map +1 -0
  169. package/esm/LinearGenomeView/components/LinearGenomeView.d.ts +7 -0
  170. package/esm/LinearGenomeView/components/LinearGenomeView.js +67 -0
  171. package/esm/LinearGenomeView/components/LinearGenomeView.js.map +1 -0
  172. package/esm/LinearGenomeView/components/LinearGenomeViewSvg.d.ts +4 -0
  173. package/esm/LinearGenomeView/components/LinearGenomeViewSvg.js +132 -0
  174. package/esm/LinearGenomeView/components/LinearGenomeViewSvg.js.map +1 -0
  175. package/esm/LinearGenomeView/components/MiniControls.d.ts +6 -0
  176. package/esm/LinearGenomeView/components/MiniControls.js +25 -0
  177. package/esm/LinearGenomeView/components/MiniControls.js.map +1 -0
  178. package/esm/LinearGenomeView/components/OverviewRubberBand.d.ts +22 -0
  179. package/esm/LinearGenomeView/components/OverviewRubberBand.js +197 -0
  180. package/esm/LinearGenomeView/components/OverviewRubberBand.js.map +1 -0
  181. package/esm/LinearGenomeView/components/OverviewScaleBar.d.ts +148 -0
  182. package/esm/LinearGenomeView/components/OverviewScaleBar.js +287 -0
  183. package/esm/LinearGenomeView/components/OverviewScaleBar.js.map +1 -0
  184. package/esm/LinearGenomeView/components/RefNameAutocomplete.d.ts +22 -0
  185. package/esm/LinearGenomeView/components/RefNameAutocomplete.js +136 -0
  186. package/esm/LinearGenomeView/components/RefNameAutocomplete.js.map +1 -0
  187. package/esm/LinearGenomeView/components/RubberBand.d.ts +9 -0
  188. package/esm/LinearGenomeView/components/RubberBand.js +197 -0
  189. package/esm/LinearGenomeView/components/RubberBand.js.map +1 -0
  190. package/esm/LinearGenomeView/components/Ruler.d.ts +27 -0
  191. package/esm/LinearGenomeView/components/Ruler.js +50 -0
  192. package/esm/LinearGenomeView/components/Ruler.js.map +1 -0
  193. package/esm/LinearGenomeView/components/ScaleBar.d.ts +10 -0
  194. package/esm/LinearGenomeView/components/ScaleBar.js +112 -0
  195. package/esm/LinearGenomeView/components/ScaleBar.js.map +1 -0
  196. package/esm/LinearGenomeView/components/SearchBox.d.ts +8 -0
  197. package/esm/LinearGenomeView/components/SearchBox.js +94 -0
  198. package/esm/LinearGenomeView/components/SearchBox.js.map +1 -0
  199. package/esm/LinearGenomeView/components/SearchResultsDialog.d.ts +7 -0
  200. package/esm/LinearGenomeView/components/SearchResultsDialog.js +107 -0
  201. package/esm/LinearGenomeView/components/SearchResultsDialog.js.map +1 -0
  202. package/esm/LinearGenomeView/components/SequenceDialog.d.ts +8 -0
  203. package/esm/LinearGenomeView/components/SequenceDialog.js +147 -0
  204. package/esm/LinearGenomeView/components/SequenceDialog.js.map +1 -0
  205. package/esm/LinearGenomeView/components/TrackContainer.d.ts +9 -0
  206. package/esm/LinearGenomeView/components/TrackContainer.js +109 -0
  207. package/esm/LinearGenomeView/components/TrackContainer.js.map +1 -0
  208. package/esm/LinearGenomeView/components/TrackLabel.d.ts +8 -0
  209. package/esm/LinearGenomeView/components/TrackLabel.js +89 -0
  210. package/esm/LinearGenomeView/components/TrackLabel.js.map +1 -0
  211. package/{dist/LinearGenomeView/components/VerticalGuides.d.ts → esm/LinearGenomeView/components/TracksContainer.d.ts} +4 -3
  212. package/esm/LinearGenomeView/components/TracksContainer.js +142 -0
  213. package/esm/LinearGenomeView/components/TracksContainer.js.map +1 -0
  214. package/esm/LinearGenomeView/components/ZoomControls.d.ts +7 -0
  215. package/esm/LinearGenomeView/components/ZoomControls.js +32 -0
  216. package/esm/LinearGenomeView/components/ZoomControls.js.map +1 -0
  217. package/esm/LinearGenomeView/components/util.d.ts +14 -0
  218. package/esm/LinearGenomeView/components/util.js +17 -0
  219. package/esm/LinearGenomeView/components/util.js.map +1 -0
  220. package/esm/LinearGenomeView/index.d.ts +275 -0
  221. package/esm/LinearGenomeView/index.js +978 -0
  222. package/esm/LinearGenomeView/index.js.map +1 -0
  223. package/esm/LinearGenomeView/util.d.ts +14 -0
  224. package/esm/LinearGenomeView/util.js +62 -0
  225. package/esm/LinearGenomeView/util.js.map +1 -0
  226. package/esm/index.d.ts +615 -0
  227. package/esm/index.js +127 -0
  228. package/esm/index.js.map +1 -0
  229. package/package.json +22 -15
  230. package/src/BaseLinearDisplay/components/BaseLinearDisplay.tsx +4 -3
  231. package/src/BaseLinearDisplay/components/Block.tsx +5 -5
  232. package/src/BaseLinearDisplay/components/LinearBlocks.tsx +4 -4
  233. package/src/BaseLinearDisplay/components/ServerSideRenderedBlockContent.tsx +7 -8
  234. package/src/BaseLinearDisplay/components/Tooltip.tsx +14 -4
  235. package/src/BaseLinearDisplay/models/BaseLinearDisplayModel.tsx +6 -4
  236. package/src/BaseLinearDisplay/models/serverSideRenderedBlock.ts +1 -1
  237. package/src/LinearBasicDisplay/components/SetMaxHeight.tsx +10 -7
  238. package/src/LinearBasicDisplay/model.ts +21 -15
  239. package/src/LinearGenomeView/components/CenterLine.tsx +6 -11
  240. package/src/LinearGenomeView/components/ExportSvgDialog.tsx +5 -5
  241. package/src/LinearGenomeView/components/{VerticalGuides.tsx → Gridlines.tsx} +9 -11
  242. package/src/LinearGenomeView/components/Header.tsx +13 -18
  243. package/src/LinearGenomeView/components/HelpDialog.tsx +5 -5
  244. package/src/LinearGenomeView/components/ImportForm.tsx +24 -37
  245. package/src/LinearGenomeView/components/LinearGenomeView.test.js +16 -6
  246. package/src/LinearGenomeView/components/LinearGenomeView.tsx +4 -3
  247. package/src/LinearGenomeView/components/MiniControls.tsx +29 -40
  248. package/src/LinearGenomeView/components/OverviewRubberBand.tsx +20 -29
  249. package/src/LinearGenomeView/components/OverviewScaleBar.tsx +100 -89
  250. package/src/LinearGenomeView/components/RefNameAutocomplete.tsx +13 -44
  251. package/src/LinearGenomeView/components/RubberBand.tsx +12 -18
  252. package/src/LinearGenomeView/components/Ruler.tsx +5 -11
  253. package/src/LinearGenomeView/components/ScaleBar.tsx +23 -27
  254. package/src/LinearGenomeView/components/SearchBox.tsx +22 -32
  255. package/src/LinearGenomeView/components/SearchResultsDialog.tsx +7 -7
  256. package/src/LinearGenomeView/components/SequenceDialog.tsx +10 -10
  257. package/src/LinearGenomeView/components/TrackContainer.tsx +12 -12
  258. package/src/LinearGenomeView/components/TrackLabel.tsx +21 -31
  259. package/src/LinearGenomeView/components/TracksContainer.tsx +10 -15
  260. package/src/LinearGenomeView/components/ZoomControls.tsx +12 -13
  261. package/src/LinearGenomeView/components/__snapshots__/LinearGenomeView.test.js.snap +500 -547
  262. package/src/LinearGenomeView/components/util.ts +43 -0
  263. package/src/LinearGenomeView/index.test.ts +14 -36
  264. package/src/LinearGenomeView/index.tsx +390 -564
  265. package/src/index.ts +1 -1
  266. package/dist/LinearBareDisplay/index.test.js +0 -33
  267. package/dist/LinearGenomeView/components/LinearGenomeView.test.js +0 -234
  268. package/dist/LinearGenomeView/components/ScaleBar.test.js +0 -180
  269. package/dist/LinearGenomeView/components/VerticalGuides.js +0 -116
  270. package/dist/LinearGenomeView/index.test.js +0 -1187
  271. package/dist/LinearGenomeView/util.test.js +0 -78
@@ -1,9 +1,10 @@
1
- /// <reference types="react" />
1
+ import React from 'react';
2
2
  import { Instance } from 'mobx-state-tree';
3
3
  import { LinearGenomeViewStateModel } from '..';
4
4
  declare type LGV = Instance<LinearGenomeViewStateModel>;
5
- declare function VerticalGuides({ model }: {
5
+ declare function TracksContainer({ children, model, }: {
6
+ children: React.ReactNode;
6
7
  model: LGV;
7
8
  }): JSX.Element;
8
- declare const _default: typeof VerticalGuides;
9
+ declare const _default: typeof TracksContainer;
9
10
  export default _default;
@@ -0,0 +1,142 @@
1
+ import React, { useEffect, useRef, useState } from 'react';
2
+ import { makeStyles } from 'tss-react/mui';
3
+ import { observer } from 'mobx-react';
4
+ import normalizeWheel from 'normalize-wheel';
5
+ import { SCALE_BAR_HEIGHT } from '..';
6
+ import RubberBand from './RubberBand';
7
+ import ScaleBar from './ScaleBar';
8
+ import Gridlines from './Gridlines';
9
+ import CenterLine from './CenterLine';
10
+ const useStyles = makeStyles()({
11
+ tracksContainer: {
12
+ position: 'relative',
13
+ overflow: 'hidden',
14
+ },
15
+ spacer: {
16
+ position: 'relative',
17
+ height: 3,
18
+ },
19
+ });
20
+ function TracksContainer({ children, model, }) {
21
+ const { classes } = useStyles();
22
+ // refs are to store these variables to avoid repeated rerenders associated
23
+ // with useState/setState
24
+ const delta = useRef(0);
25
+ const scheduled = useRef(false);
26
+ const timeout = useRef();
27
+ const ref = useRef(null);
28
+ const prevX = useRef(0);
29
+ const [mouseDragging, setMouseDragging] = useState(false);
30
+ useEffect(() => {
31
+ let cleanup = () => { };
32
+ function globalMouseMove(event) {
33
+ event.preventDefault();
34
+ const currX = event.clientX;
35
+ const distance = currX - prevX.current;
36
+ if (distance) {
37
+ // use rAF to make it so multiple event handlers aren't fired per-frame
38
+ // see https://calendar.perfplanet.com/2013/the-runtime-performance-checklist/
39
+ if (!scheduled.current) {
40
+ scheduled.current = true;
41
+ window.requestAnimationFrame(() => {
42
+ model.horizontalScroll(-distance);
43
+ scheduled.current = false;
44
+ prevX.current = event.clientX;
45
+ });
46
+ }
47
+ }
48
+ }
49
+ function globalMouseUp() {
50
+ prevX.current = 0;
51
+ if (mouseDragging) {
52
+ setMouseDragging(false);
53
+ }
54
+ }
55
+ if (mouseDragging) {
56
+ window.addEventListener('mousemove', globalMouseMove, true);
57
+ window.addEventListener('mouseup', globalMouseUp, true);
58
+ cleanup = () => {
59
+ window.removeEventListener('mousemove', globalMouseMove, true);
60
+ window.removeEventListener('mouseup', globalMouseUp, true);
61
+ };
62
+ }
63
+ return cleanup;
64
+ }, [model, mouseDragging, prevX]);
65
+ function mouseDown(event) {
66
+ // check if clicking a draggable element or a resize handle
67
+ const target = event.target;
68
+ if (target.draggable || target.dataset.resizer) {
69
+ return;
70
+ }
71
+ // otherwise do click and drag scroll
72
+ if (event.button === 0) {
73
+ prevX.current = event.clientX;
74
+ setMouseDragging(true);
75
+ }
76
+ }
77
+ // this local mouseup is used in addition to the global because sometimes
78
+ // the global add/remove are not called in time, resulting in issue #533
79
+ function mouseUp(event) {
80
+ event.preventDefault();
81
+ setMouseDragging(false);
82
+ }
83
+ function mouseLeave(event) {
84
+ event.preventDefault();
85
+ }
86
+ useEffect(() => {
87
+ const curr = ref.current;
88
+ // if ctrl is held down, zoom in with y-scroll
89
+ // else scroll horizontally with x-scroll
90
+ function onWheel(origEvent) {
91
+ const event = normalizeWheel(origEvent);
92
+ if (origEvent.ctrlKey === true) {
93
+ origEvent.preventDefault();
94
+ delta.current += event.pixelY / 500;
95
+ model.setScaleFactor(delta.current < 0 ? 1 - delta.current : 1 / (1 + delta.current));
96
+ if (timeout.current) {
97
+ clearTimeout(timeout.current);
98
+ }
99
+ timeout.current = setTimeout(() => {
100
+ model.setScaleFactor(1);
101
+ model.zoomTo(delta.current > 0
102
+ ? model.bpPerPx * (1 + delta.current)
103
+ : model.bpPerPx / (1 - delta.current));
104
+ delta.current = 0;
105
+ }, 300);
106
+ }
107
+ else {
108
+ // this is needed to stop the event from triggering "back button
109
+ // action" on MacOSX etc. but is a heuristic to avoid preventing the
110
+ // inner-track scroll behavior
111
+ if (Math.abs(event.pixelX) > Math.abs(2 * event.pixelY)) {
112
+ origEvent.preventDefault();
113
+ }
114
+ delta.current += event.pixelX;
115
+ if (!scheduled.current) {
116
+ // use rAF to make it so multiple event handlers aren't fired per-frame
117
+ // see https://calendar.perfplanet.com/2013/the-runtime-performance-checklist/
118
+ scheduled.current = true;
119
+ window.requestAnimationFrame(() => {
120
+ model.horizontalScroll(delta.current);
121
+ delta.current = 0;
122
+ scheduled.current = false;
123
+ });
124
+ }
125
+ }
126
+ }
127
+ if (curr) {
128
+ curr.addEventListener('wheel', onWheel);
129
+ return () => {
130
+ curr.removeEventListener('wheel', onWheel);
131
+ };
132
+ }
133
+ return () => { };
134
+ }, [model]);
135
+ return (React.createElement("div", { ref: ref, "data-testid": "trackContainer", className: classes.tracksContainer, onMouseDown: mouseDown, onMouseUp: mouseUp, onMouseLeave: mouseLeave },
136
+ model.showGridlines ? React.createElement(Gridlines, { model: model }) : null,
137
+ model.showCenterLine ? React.createElement(CenterLine, { model: model }) : null,
138
+ React.createElement(RubberBand, { model: model, ControlComponent: React.createElement(ScaleBar, { model: model, style: { height: SCALE_BAR_HEIGHT, boxSizing: 'border-box' } }) }),
139
+ children));
140
+ }
141
+ export default observer(TracksContainer);
142
+ //# sourceMappingURL=TracksContainer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TracksContainer.js","sourceRoot":"","sources":["../../../src/LinearGenomeView/components/TracksContainer.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ /// <reference types="react" />
2
+ import { LinearGenomeViewModel } from '..';
3
+ declare function ZoomControls({ model }: {
4
+ model: LinearGenomeViewModel;
5
+ }): JSX.Element;
6
+ declare const _default: typeof ZoomControls;
7
+ export default _default;
@@ -0,0 +1,32 @@
1
+ import React, { useState, useEffect } from 'react';
2
+ import { observer } from 'mobx-react';
3
+ import { Slider, IconButton } from '@mui/material';
4
+ import { makeStyles } from 'tss-react/mui';
5
+ import ZoomIn from '@mui/icons-material/ZoomIn';
6
+ import ZoomOut from '@mui/icons-material/ZoomOut';
7
+ const useStyles = makeStyles()({
8
+ container: {
9
+ display: 'flex',
10
+ flexDirection: 'row',
11
+ alignItems: 'center',
12
+ },
13
+ slider: {
14
+ width: 70,
15
+ },
16
+ });
17
+ function ZoomControls({ model }) {
18
+ const { classes } = useStyles();
19
+ const { maxBpPerPx, minBpPerPx, bpPerPx, scaleFactor } = model;
20
+ const [value, setValue] = useState(-Math.log2(bpPerPx) * 100);
21
+ useEffect(() => {
22
+ setValue(-Math.log2(bpPerPx) * 100);
23
+ }, [setValue, bpPerPx]);
24
+ return (React.createElement("div", { className: classes.container },
25
+ React.createElement(IconButton, { "data-testid": "zoom_out", onClick: () => model.zoom(bpPerPx * 2), disabled: bpPerPx >= maxBpPerPx - 0.0001 || scaleFactor !== 1, color: "secondary", size: "large" },
26
+ React.createElement(ZoomOut, null)),
27
+ React.createElement(Slider, { size: "small", className: classes.slider, value: value, min: -Math.log2(maxBpPerPx) * 100, max: -Math.log2(minBpPerPx) * 100, onChange: (_, val) => setValue(val), onChangeCommitted: () => model.zoomTo(2 ** (-value / 100)), disabled: scaleFactor !== 1 }),
28
+ React.createElement(IconButton, { "data-testid": "zoom_in", onClick: () => model.zoom(model.bpPerPx / 2), disabled: bpPerPx <= minBpPerPx + 0.0001 || scaleFactor !== 1, color: "secondary", size: "large" },
29
+ React.createElement(ZoomIn, null))));
30
+ }
31
+ export default observer(ZoomControls);
32
+ //# sourceMappingURL=ZoomControls.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ZoomControls.js","sourceRoot":"","sources":["../../../src/LinearGenomeView/components/ZoomControls.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAClD,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AACrC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AAClD,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AAC1C,OAAO,MAAM,MAAM,4BAA4B,CAAA;AAC/C,OAAO,OAAO,MAAM,6BAA6B,CAAA;AAGjD,MAAM,SAAS,GAAG,UAAU,EAAE,CAAC;IAC7B,SAAS,EAAE;QACT,OAAO,EAAE,MAAM;QACf,aAAa,EAAE,KAAK;QACpB,UAAU,EAAE,QAAQ;KACrB;IACD,MAAM,EAAE;QACN,KAAK,EAAE,EAAE;KACV;CACF,CAAC,CAAA;AAEF,SAAS,YAAY,CAAC,EAAE,KAAK,EAAoC;IAC/D,MAAM,EAAE,OAAO,EAAE,GAAG,SAAS,EAAE,CAAA;IAC/B,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,OAAO,EAAE,WAAW,EAAE,GAAG,KAAK,CAAA;IAC9D,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,GAAG,CAAC,CAAA;IAC7D,SAAS,CAAC,GAAG,EAAE;QACb,QAAQ,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,GAAG,CAAC,CAAA;IACrC,CAAC,EAAE,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAA;IAEvB,OAAO,CACL,6BAAK,SAAS,EAAE,OAAO,CAAC,SAAS;QAC/B,oBAAC,UAAU,mBACG,UAAU,EACtB,OAAO,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC,EACtC,QAAQ,EAAE,OAAO,IAAI,UAAU,GAAG,MAAM,IAAI,WAAW,KAAK,CAAC,EAC7D,KAAK,EAAC,WAAW,EACjB,IAAI,EAAC,OAAO;YAEZ,oBAAC,OAAO,OAAG,CACA;QAEb,oBAAC,MAAM,IACL,IAAI,EAAC,OAAO,EACZ,SAAS,EAAE,OAAO,CAAC,MAAM,EACzB,KAAK,EAAE,KAAK,EACZ,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,GAAG,EACjC,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,GAAG,EACjC,QAAQ,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC,QAAQ,CAAC,GAAa,CAAC,EAC7C,iBAAiB,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,GAAG,GAAG,CAAC,CAAC,EAC1D,QAAQ,EAAE,WAAW,KAAK,CAAC,GAC3B;QACF,oBAAC,UAAU,mBACG,SAAS,EACrB,OAAO,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,CAAC,CAAC,EAC5C,QAAQ,EAAE,OAAO,IAAI,UAAU,GAAG,MAAM,IAAI,WAAW,KAAK,CAAC,EAC7D,KAAK,EAAC,WAAW,EACjB,IAAI,EAAC,OAAO;YAEZ,oBAAC,MAAM,OAAG,CACC,CACT,CACP,CAAA;AACH,CAAC;AAED,eAAe,QAAQ,CAAC,YAAY,CAAC,CAAA"}
@@ -0,0 +1,14 @@
1
+ import { Assembly } from '@jbrowse/core/assemblyManager/assembly';
2
+ import { SearchType } from '@jbrowse/core/data_adapters/BaseAdapter';
3
+ import BaseResult from '@jbrowse/core/TextSearch/BaseResults';
4
+ import { SearchScope } from '@jbrowse/core/TextSearch/TextSearchManager';
5
+ import { TextSearchManager } from '@jbrowse/core/util';
6
+ export declare function dedupe(results: BaseResult[] | undefined, cb: (result: BaseResult) => string): BaseResult[];
7
+ export declare function fetchResults({ queryString, searchType, searchScope, rankSearchResults, textSearchManager, assembly, }: {
8
+ queryString: string;
9
+ searchScope: SearchScope;
10
+ rankSearchResults: (results: BaseResult[]) => BaseResult[];
11
+ searchType?: SearchType;
12
+ textSearchManager?: TextSearchManager;
13
+ assembly?: Assembly;
14
+ }): Promise<BaseResult[]>;
@@ -0,0 +1,17 @@
1
+ import BaseResult from '@jbrowse/core/TextSearch/BaseResults';
2
+ export function dedupe(results = [], cb) {
3
+ return results.filter((elt, idx, self) => idx === self.findIndex(t => cb(t) === cb(elt)));
4
+ }
5
+ export async function fetchResults({ queryString, searchType, searchScope, rankSearchResults, textSearchManager, assembly, }) {
6
+ var _a;
7
+ if (!textSearchManager) {
8
+ console.warn('No text search manager');
9
+ }
10
+ const textSearchResults = await (textSearchManager === null || textSearchManager === void 0 ? void 0 : textSearchManager.search({
11
+ queryString,
12
+ searchType,
13
+ }, searchScope, rankSearchResults));
14
+ const refNameResults = (_a = assembly === null || assembly === void 0 ? void 0 : assembly.allRefNames) === null || _a === void 0 ? void 0 : _a.filter(ref => ref.toLowerCase().startsWith(queryString.toLowerCase())).slice(0, 10).map(r => new BaseResult({ label: r }));
15
+ return dedupe([...(refNameResults || []), ...(textSearchResults || [])], elt => elt.getId());
16
+ }
17
+ //# sourceMappingURL=util.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"util.js","sourceRoot":"","sources":["../../../src/LinearGenomeView/components/util.ts"],"names":[],"mappings":"AAEA,OAAO,UAAU,MAAM,sCAAsC,CAAA;AAI7D,MAAM,UAAU,MAAM,CACpB,UAAwB,EAAE,EAC1B,EAAkC;IAElC,OAAO,OAAO,CAAC,MAAM,CACnB,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,CAAC,GAAG,KAAK,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,CAAC,CACnE,CAAA;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,EACjC,WAAW,EACX,UAAU,EACV,WAAW,EACX,iBAAiB,EACjB,iBAAiB,EACjB,QAAQ,GAQT;;IACC,IAAI,CAAC,iBAAiB,EAAE;QACtB,OAAO,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAA;KACvC;IAED,MAAM,iBAAiB,GAAG,MAAM,CAAA,iBAAiB,aAAjB,iBAAiB,uBAAjB,iBAAiB,CAAE,MAAM,CACvD;QACE,WAAW;QACX,UAAU;KACX,EACD,WAAW,EACX,iBAAiB,CAClB,CAAA,CAAA;IAED,MAAM,cAAc,GAAG,MAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,WAAW,0CACxC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC,WAAW,EAAE,CAAC,EACtE,KAAK,CAAC,CAAC,EAAE,EAAE,EACX,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,UAAU,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA;IAEzC,OAAO,MAAM,CACX,CAAC,GAAG,CAAC,cAAc,IAAI,EAAE,CAAC,EAAE,GAAG,CAAC,iBAAiB,IAAI,EAAE,CAAC,CAAC,EACzD,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,EAAE,CACnB,CAAA;AACH,CAAC"}
@@ -0,0 +1,275 @@
1
+ import { Region } from '@jbrowse/core/util/types';
2
+ import { MenuItem } from '@jbrowse/core/ui';
3
+ import BaseResult from '@jbrowse/core/TextSearch/BaseResults';
4
+ import { BlockSet, BaseBlock } from '@jbrowse/core/util/blockTypes';
5
+ import { Instance } from 'mobx-state-tree';
6
+ import PluginManager from '@jbrowse/core/PluginManager';
7
+ import { renderToSvg } from './components/LinearGenomeViewSvg';
8
+ import RefNameAutocomplete from './components/RefNameAutocomplete';
9
+ import SearchBox from './components/SearchBox';
10
+ export interface BpOffset {
11
+ refName?: string;
12
+ index: number;
13
+ offset: number;
14
+ start?: number;
15
+ end?: number;
16
+ coord?: number;
17
+ reversed?: boolean;
18
+ assemblyName?: string;
19
+ oob?: boolean;
20
+ }
21
+ export interface ExportSvgOptions {
22
+ rasterizeLayers?: boolean;
23
+ filename?: string;
24
+ }
25
+ export interface NavLocation {
26
+ refName: string;
27
+ start?: number;
28
+ end?: number;
29
+ assemblyName?: string;
30
+ }
31
+ export declare const HEADER_BAR_HEIGHT = 48;
32
+ export declare const HEADER_OVERVIEW_HEIGHT = 20;
33
+ export declare const SCALE_BAR_HEIGHT = 17;
34
+ export declare const RESIZE_HANDLE_HEIGHT = 3;
35
+ export declare const INTER_REGION_PADDING_WIDTH = 2;
36
+ export declare const SPACING = 7;
37
+ export declare const WIDGET_HEIGHT = 32;
38
+ export declare function stateModelFactory(pluginManager: PluginManager): import("mobx-state-tree").IModelType<{
39
+ id: import("mobx-state-tree").IOptionalIType<import("mobx-state-tree").ISimpleType<string>, [undefined]>;
40
+ displayName: import("mobx-state-tree").IMaybe<import("mobx-state-tree").ISimpleType<string>>;
41
+ } & {
42
+ id: import("mobx-state-tree").IOptionalIType<import("mobx-state-tree").ISimpleType<string>, [undefined]>;
43
+ type: import("mobx-state-tree").ISimpleType<"LinearGenomeView">;
44
+ offsetPx: import("mobx-state-tree").IType<number | undefined, number, number>;
45
+ bpPerPx: import("mobx-state-tree").IType<number | undefined, number, number>;
46
+ displayedRegions: import("mobx-state-tree").IArrayType<import("mobx-state-tree").IModelType<{
47
+ refName: import("mobx-state-tree").ISimpleType<string>;
48
+ start: import("mobx-state-tree").ISimpleType<number>;
49
+ end: import("mobx-state-tree").ISimpleType<number>;
50
+ reversed: import("mobx-state-tree").IOptionalIType<import("mobx-state-tree").ISimpleType<boolean>, [undefined]>;
51
+ } & {
52
+ assemblyName: import("mobx-state-tree").ISimpleType<string>;
53
+ }, {
54
+ setRefName(newRefName: string): void;
55
+ }, import("mobx-state-tree")._NotCustomized, import("mobx-state-tree")._NotCustomized>>;
56
+ tracks: import("mobx-state-tree").IArrayType<import("mobx-state-tree").IAnyType>;
57
+ hideHeader: import("mobx-state-tree").IType<boolean | undefined, boolean, boolean>;
58
+ hideHeaderOverview: import("mobx-state-tree").IType<boolean | undefined, boolean, boolean>;
59
+ hideNoTracksActive: import("mobx-state-tree").IType<boolean | undefined, boolean, boolean>;
60
+ trackSelectorType: import("mobx-state-tree").IOptionalIType<import("mobx-state-tree").ISimpleType<"hierarchical">, [undefined]>;
61
+ trackLabels: import("mobx-state-tree").IOptionalIType<import("mobx-state-tree").ISimpleType<string>, [undefined]>;
62
+ showCenterLine: import("mobx-state-tree").IOptionalIType<import("mobx-state-tree").ISimpleType<boolean>, [undefined]>;
63
+ showCytobandsSetting: import("mobx-state-tree").IOptionalIType<import("mobx-state-tree").ISimpleType<boolean>, [undefined]>;
64
+ showGridlines: import("mobx-state-tree").IType<boolean | undefined, boolean, boolean>;
65
+ }, {
66
+ width: number;
67
+ } & {
68
+ menuItems(): MenuItem[];
69
+ } & {
70
+ setDisplayName(name: string): void;
71
+ setWidth(newWidth: number): void;
72
+ } & {
73
+ volatileWidth: number | undefined;
74
+ minimumBlockWidth: number;
75
+ draggingTrackId: string | undefined;
76
+ volatileError: Error | undefined;
77
+ afterDisplayedRegionsSetCallbacks: Function[];
78
+ scaleFactor: number;
79
+ trackRefs: {
80
+ [key: string]: any;
81
+ };
82
+ coarseDynamicBlocks: BaseBlock[];
83
+ coarseTotalBp: number;
84
+ leftOffset: BpOffset | undefined;
85
+ rightOffset: BpOffset | undefined;
86
+ searchResults: BaseResult[] | undefined;
87
+ searchQuery: string | undefined;
88
+ seqDialogDisplayed: boolean;
89
+ } & {
90
+ readonly width: number;
91
+ readonly interRegionPaddingWidth: number;
92
+ readonly assemblyNames: string[];
93
+ } & {
94
+ readonly assemblyErrors: string;
95
+ readonly assembliesInitialized: boolean;
96
+ readonly initialized: boolean;
97
+ readonly hasDisplayedRegions: boolean;
98
+ readonly isSearchDialogDisplayed: boolean;
99
+ readonly scaleBarHeight: number;
100
+ readonly headerHeight: number;
101
+ readonly trackHeights: any;
102
+ readonly trackHeightsWithResizeHandles: any;
103
+ readonly height: any;
104
+ readonly totalBp: number;
105
+ readonly maxBpPerPx: number;
106
+ readonly minBpPerPx: number;
107
+ readonly error: string | Error;
108
+ readonly maxOffset: number;
109
+ readonly minOffset: number;
110
+ readonly displayedRegionsTotalPx: number;
111
+ renderProps(): any;
112
+ searchScope(assemblyName: string): {
113
+ assemblyName: string;
114
+ includeAggregateIndexes: boolean;
115
+ tracks: import("mobx-state-tree").IMSTArray<import("mobx-state-tree").IAnyType> & import("mobx-state-tree").IStateTreeNode<import("mobx-state-tree").IArrayType<import("mobx-state-tree").IAnyType>>;
116
+ };
117
+ getTrack(id: string): any;
118
+ rankSearchResults(results: BaseResult[]): BaseResult[];
119
+ rewriteOnClicks(trackType: string, viewMenuActions: MenuItem[]): void;
120
+ readonly trackTypeActions: Map<string, MenuItem[]>;
121
+ } & {
122
+ setShowCytobands(flag: boolean): void;
123
+ setWidth(newWidth: number): void;
124
+ setError(error: Error | undefined): void;
125
+ toggleHeader(): void;
126
+ toggleHeaderOverview(): void;
127
+ toggleNoTracksActive(): void;
128
+ toggleShowGridlines(): void;
129
+ scrollTo(offsetPx: number): number;
130
+ zoomTo(bpPerPx: number): number;
131
+ setOffsets(left: undefined | BpOffset, right: undefined | BpOffset): void;
132
+ setSearchResults(results: BaseResult[] | undefined, query: string | undefined): void;
133
+ setSequenceDialogOpen(open: boolean): void;
134
+ setNewView(bpPerPx: number, offsetPx: number): void;
135
+ horizontallyFlip(): void;
136
+ showTrack(trackId: string, initialSnapshot?: {}, displayInitialSnapshot?: {}): any;
137
+ hideTrack(trackId: string): number;
138
+ } & {
139
+ moveTrack(movingId: string, targetId: string): void;
140
+ closeView(): void;
141
+ toggleTrack(trackId: string): void;
142
+ setTrackLabels(setting: 'overlapping' | 'offset' | 'hidden'): void;
143
+ toggleCenterLine(): void;
144
+ setDisplayedRegions(regions: Region[]): void;
145
+ activateTrackSelector(): import("@jbrowse/core/util").Widget;
146
+ /**
147
+ * Helper method for the fetchSequence.
148
+ * Retrieves the corresponding regions that were selected by the rubberband
149
+ *
150
+ * @param leftOffset - `object as {start, end, index, offset}`, offset = start of user drag
151
+ * @param rightOffset - `object as {start, end, index, offset}`, offset = end of user drag
152
+ * @returns array of Region[]
153
+ */
154
+ getSelectedRegions(leftOffset?: BpOffset, rightOffset?: BpOffset): {
155
+ start: number;
156
+ end: number;
157
+ regionNumber?: number | undefined;
158
+ reversed?: boolean | undefined;
159
+ refName: string;
160
+ assemblyName: string;
161
+ key: string;
162
+ offsetPx: number;
163
+ widthPx: number;
164
+ variant?: string | undefined;
165
+ isLeftEndOfDisplayedRegion?: boolean | undefined;
166
+ }[];
167
+ afterDisplayedRegionsSet(cb: Function): void;
168
+ horizontalScroll(distance: number): number;
169
+ center(): void;
170
+ showAllRegions(): void;
171
+ showAllRegionsInAssembly(assemblyName?: string): void;
172
+ setDraggingTrackId(idx?: string): void;
173
+ setScaleFactor(factor: number): void;
174
+ } & {
175
+ slide: (viewWidths: number) => void;
176
+ } & {
177
+ zoom: (targetBpPerPx: number) => void;
178
+ } & {
179
+ readonly canShowCytobands: boolean;
180
+ readonly showCytobands: boolean;
181
+ readonly anyCytobandsExist: boolean;
182
+ readonly cytobandOffset: number;
183
+ } & {
184
+ menuItems(): MenuItem[];
185
+ } & {
186
+ readonly staticBlocks: BlockSet;
187
+ readonly dynamicBlocks: BlockSet;
188
+ readonly roundedDynamicBlocks: {
189
+ start: number;
190
+ end: number;
191
+ regionNumber?: number | undefined;
192
+ reversed?: boolean | undefined;
193
+ refName: string;
194
+ assemblyName: string;
195
+ key: string;
196
+ offsetPx: number;
197
+ widthPx: number;
198
+ variant?: string | undefined;
199
+ isLeftEndOfDisplayedRegion?: boolean | undefined;
200
+ }[];
201
+ readonly visibleLocStrings: string;
202
+ readonly coarseVisibleLocStrings: string;
203
+ } & {
204
+ clearView(): void;
205
+ setCoarseDynamicBlocks(blocks: BlockSet): void;
206
+ afterAttach(): void;
207
+ } & {
208
+ exportSvg(opts?: ExportSvgOptions): Promise<void>;
209
+ /**
210
+ * offset is the base-pair-offset in the displayed region, index is the index of the
211
+ * displayed region in the linear genome view
212
+ *
213
+ * @param start - object as `{start, end, offset, index}`
214
+ * @param end - object as `{start, end, offset, index}`
215
+ */
216
+ moveTo(start?: BpOffset, end?: BpOffset): void;
217
+ navToLocString(locString: string, optAssemblyName?: string): void;
218
+ /**
219
+ * Navigate to a location based on its refName and optionally start, end,
220
+ * and assemblyName. Can handle if there are multiple displayedRegions
221
+ * from same refName. Only navigates to a location if it is entirely
222
+ * within a displayedRegion. Navigates to the first matching location
223
+ * encountered.
224
+ *
225
+ * Throws an error if navigation was unsuccessful
226
+ *
227
+ * @param location - a proposed location to navigate to
228
+ */
229
+ navTo(query: NavLocation): void;
230
+ navToMultiple(locations: NavLocation[]): void;
231
+ } & {
232
+ rubberBandMenuItems(): MenuItem[];
233
+ bpToPx({ refName, coord, regionNumber, }: {
234
+ refName: string;
235
+ coord: number;
236
+ regionNumber?: number | undefined;
237
+ }): {
238
+ index: number;
239
+ offsetPx: number;
240
+ } | undefined;
241
+ /**
242
+ * scrolls the view to center on the given bp. if that is not in any
243
+ * of the displayed regions, does nothing
244
+ * @param coord - basepair at which you want to center the view
245
+ * @param refName - refName of the displayedRegion you are centering at
246
+ * @param regionNumber - index of the displayedRegion
247
+ */
248
+ centerAt(coord: number, refName: string, regionNumber: number): void;
249
+ pxToBp(px: number): {
250
+ coord: number;
251
+ index: number;
252
+ refName: string;
253
+ oob: boolean;
254
+ assemblyName: string;
255
+ offset: number;
256
+ start: number;
257
+ end: number;
258
+ reversed: boolean;
259
+ };
260
+ readonly centerLineInfo: {
261
+ coord: number;
262
+ index: number;
263
+ refName: string;
264
+ oob: boolean;
265
+ assemblyName: string;
266
+ offset: number;
267
+ start: number;
268
+ end: number;
269
+ reversed: boolean;
270
+ } | undefined;
271
+ }, import("mobx-state-tree")._NotCustomized, import("mobx-state-tree")._NotCustomized>;
272
+ export { renderToSvg, RefNameAutocomplete, SearchBox };
273
+ export declare type LinearGenomeViewStateModel = ReturnType<typeof stateModelFactory>;
274
+ export declare type LinearGenomeViewModel = Instance<LinearGenomeViewStateModel>;
275
+ export { default as ReactComponent } from './components/LinearGenomeView';