@jbrowse/plugin-linear-genome-view 1.7.11 → 2.0.0

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 (270) 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 +19 -14
  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 +15 -13
  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 -14
  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/Header.d.ts +1 -0
  45. package/dist/LinearGenomeView/components/Header.js +70 -125
  46. package/dist/LinearGenomeView/components/Header.js.map +1 -0
  47. package/dist/LinearGenomeView/components/HelpDialog.d.ts +0 -1
  48. package/dist/LinearGenomeView/components/HelpDialog.js +62 -44
  49. package/dist/LinearGenomeView/components/HelpDialog.js.map +1 -0
  50. package/dist/LinearGenomeView/components/ImportForm.d.ts +1 -0
  51. package/dist/LinearGenomeView/components/ImportForm.js +222 -289
  52. package/dist/LinearGenomeView/components/ImportForm.js.map +1 -0
  53. package/dist/LinearGenomeView/components/LinearGenomeView.js +64 -124
  54. package/dist/LinearGenomeView/components/LinearGenomeView.js.map +1 -0
  55. package/dist/LinearGenomeView/components/LinearGenomeViewSvg.js +198 -337
  56. package/dist/LinearGenomeView/components/LinearGenomeViewSvg.js.map +1 -0
  57. package/dist/LinearGenomeView/components/MiniControls.js +64 -78
  58. package/dist/LinearGenomeView/components/MiniControls.js.map +1 -0
  59. package/dist/LinearGenomeView/components/OverviewRubberBand.js +226 -293
  60. package/dist/LinearGenomeView/components/OverviewRubberBand.js.map +1 -0
  61. package/dist/LinearGenomeView/components/OverviewScaleBar.d.ts +3 -3
  62. package/dist/LinearGenomeView/components/OverviewScaleBar.js +275 -370
  63. package/dist/LinearGenomeView/components/OverviewScaleBar.js.map +1 -0
  64. package/dist/LinearGenomeView/components/RefNameAutocomplete.d.ts +1 -1
  65. package/dist/LinearGenomeView/components/RefNameAutocomplete.js +237 -324
  66. package/dist/LinearGenomeView/components/RefNameAutocomplete.js.map +1 -0
  67. package/dist/LinearGenomeView/components/RubberBand.js +229 -296
  68. package/dist/LinearGenomeView/components/RubberBand.js.map +1 -0
  69. package/dist/LinearGenomeView/components/Ruler.js +45 -90
  70. package/dist/LinearGenomeView/components/Ruler.js.map +1 -0
  71. package/dist/LinearGenomeView/components/ScaleBar.d.ts +8 -403
  72. package/dist/LinearGenomeView/components/ScaleBar.js +121 -172
  73. package/dist/LinearGenomeView/components/ScaleBar.js.map +1 -0
  74. package/dist/LinearGenomeView/components/SearchBox.js +155 -166
  75. package/dist/LinearGenomeView/components/SearchBox.js.map +1 -0
  76. package/dist/LinearGenomeView/components/SearchResultsDialog.d.ts +0 -1
  77. package/dist/LinearGenomeView/components/SearchResultsDialog.js +105 -149
  78. package/dist/LinearGenomeView/components/SearchResultsDialog.js.map +1 -0
  79. package/dist/LinearGenomeView/components/SequenceDialog.js +219 -272
  80. package/dist/LinearGenomeView/components/SequenceDialog.js.map +1 -0
  81. package/dist/LinearGenomeView/components/TrackContainer.js +116 -156
  82. package/dist/LinearGenomeView/components/TrackContainer.js.map +1 -0
  83. package/dist/LinearGenomeView/components/TrackLabel.d.ts +6 -42
  84. package/dist/LinearGenomeView/components/TrackLabel.js +115 -134
  85. package/dist/LinearGenomeView/components/TrackLabel.js.map +1 -0
  86. package/dist/LinearGenomeView/components/TracksContainer.d.ts +1 -1
  87. package/dist/LinearGenomeView/components/TracksContainer.js +172 -199
  88. package/dist/LinearGenomeView/components/TracksContainer.js.map +1 -0
  89. package/dist/LinearGenomeView/components/VerticalGuides.d.ts +2 -3
  90. package/dist/LinearGenomeView/components/VerticalGuides.js +66 -104
  91. package/dist/LinearGenomeView/components/VerticalGuides.js.map +1 -0
  92. package/dist/LinearGenomeView/components/ZoomControls.js +72 -87
  93. package/dist/LinearGenomeView/components/ZoomControls.js.map +1 -0
  94. package/dist/LinearGenomeView/components/util.js +94 -71
  95. package/dist/LinearGenomeView/components/util.js.map +1 -0
  96. package/dist/LinearGenomeView/index.d.ts +3 -3
  97. package/dist/LinearGenomeView/index.js +1163 -1414
  98. package/dist/LinearGenomeView/index.js.map +1 -0
  99. package/dist/LinearGenomeView/util.js +76 -83
  100. package/dist/LinearGenomeView/util.js.map +1 -0
  101. package/dist/index.d.ts +98 -48
  102. package/dist/index.js +225 -295
  103. package/dist/index.js.map +1 -0
  104. package/esm/BaseLinearDisplay/components/BaseLinearDisplay.d.ts +9 -0
  105. package/esm/BaseLinearDisplay/components/BaseLinearDisplay.js +68 -0
  106. package/esm/BaseLinearDisplay/components/BaseLinearDisplay.js.map +1 -0
  107. package/esm/BaseLinearDisplay/components/Block.d.ts +15 -0
  108. package/esm/BaseLinearDisplay/components/Block.js +46 -0
  109. package/esm/BaseLinearDisplay/components/Block.js.map +1 -0
  110. package/esm/BaseLinearDisplay/components/LinearBlocks.d.ts +22 -0
  111. package/esm/BaseLinearDisplay/components/LinearBlocks.js +62 -0
  112. package/esm/BaseLinearDisplay/components/LinearBlocks.js.map +1 -0
  113. package/esm/BaseLinearDisplay/components/ServerSideRenderedBlockContent.d.ts +4 -0
  114. package/esm/BaseLinearDisplay/components/ServerSideRenderedBlockContent.js +113 -0
  115. package/esm/BaseLinearDisplay/components/ServerSideRenderedBlockContent.js.map +1 -0
  116. package/esm/BaseLinearDisplay/components/Tooltip.d.ts +8 -0
  117. package/esm/BaseLinearDisplay/components/Tooltip.js +64 -0
  118. package/esm/BaseLinearDisplay/components/Tooltip.js.map +1 -0
  119. package/esm/BaseLinearDisplay/index.d.ts +5 -0
  120. package/esm/BaseLinearDisplay/index.js +4 -0
  121. package/esm/BaseLinearDisplay/index.js.map +1 -0
  122. package/esm/BaseLinearDisplay/models/BaseLinearDisplayModel.d.ts +232 -0
  123. package/esm/BaseLinearDisplay/models/BaseLinearDisplayModel.js +541 -0
  124. package/esm/BaseLinearDisplay/models/BaseLinearDisplayModel.js.map +1 -0
  125. package/esm/BaseLinearDisplay/models/baseLinearDisplayConfigSchema.d.ts +1 -0
  126. package/esm/BaseLinearDisplay/models/baseLinearDisplayConfigSchema.js +14 -0
  127. package/esm/BaseLinearDisplay/models/baseLinearDisplayConfigSchema.js.map +1 -0
  128. package/esm/BaseLinearDisplay/models/serverSideRenderedBlock.d.ts +96 -0
  129. package/esm/BaseLinearDisplay/models/serverSideRenderedBlock.js +225 -0
  130. package/esm/BaseLinearDisplay/models/serverSideRenderedBlock.js.map +1 -0
  131. package/esm/LinearBareDisplay/configSchema.d.ts +2 -0
  132. package/esm/LinearBareDisplay/configSchema.js +9 -0
  133. package/esm/LinearBareDisplay/configSchema.js.map +1 -0
  134. package/esm/LinearBareDisplay/index.d.ts +2 -0
  135. package/esm/LinearBareDisplay/index.js +3 -0
  136. package/esm/LinearBareDisplay/index.js.map +1 -0
  137. package/esm/LinearBareDisplay/model.d.ts +194 -0
  138. package/esm/LinearBareDisplay/model.js +28 -0
  139. package/esm/LinearBareDisplay/model.js.map +1 -0
  140. package/esm/LinearBasicDisplay/components/SetMaxHeight.d.ts +10 -0
  141. package/esm/LinearBasicDisplay/components/SetMaxHeight.js +40 -0
  142. package/esm/LinearBasicDisplay/components/SetMaxHeight.js.map +1 -0
  143. package/esm/LinearBasicDisplay/configSchema.d.ts +2 -0
  144. package/esm/LinearBasicDisplay/configSchema.js +14 -0
  145. package/esm/LinearBasicDisplay/configSchema.js.map +1 -0
  146. package/esm/LinearBasicDisplay/index.d.ts +2 -0
  147. package/esm/LinearBasicDisplay/index.js +3 -0
  148. package/esm/LinearBasicDisplay/index.js.map +1 -0
  149. package/esm/LinearBasicDisplay/model.d.ts +218 -0
  150. package/esm/LinearBasicDisplay/model.js +127 -0
  151. package/esm/LinearBasicDisplay/model.js.map +1 -0
  152. package/esm/LinearGenomeView/components/CenterLine.d.ts +8 -0
  153. package/esm/LinearGenomeView/components/CenterLine.js +40 -0
  154. package/esm/LinearGenomeView/components/CenterLine.js.map +1 -0
  155. package/esm/LinearGenomeView/components/ExportSvgDialog.d.ts +6 -0
  156. package/esm/LinearGenomeView/components/ExportSvgDialog.js +52 -0
  157. package/esm/LinearGenomeView/components/ExportSvgDialog.js.map +1 -0
  158. package/esm/LinearGenomeView/components/Header.d.ts +7 -0
  159. package/esm/LinearGenomeView/components/Header.js +81 -0
  160. package/esm/LinearGenomeView/components/Header.js.map +1 -0
  161. package/esm/LinearGenomeView/components/HelpDialog.d.ts +4 -0
  162. package/esm/LinearGenomeView/components/HelpDialog.js +58 -0
  163. package/esm/LinearGenomeView/components/HelpDialog.js.map +1 -0
  164. package/esm/LinearGenomeView/components/ImportForm.d.ts +7 -0
  165. package/esm/LinearGenomeView/components/ImportForm.js +141 -0
  166. package/esm/LinearGenomeView/components/ImportForm.js.map +1 -0
  167. package/esm/LinearGenomeView/components/LinearGenomeView.d.ts +7 -0
  168. package/esm/LinearGenomeView/components/LinearGenomeView.js +67 -0
  169. package/esm/LinearGenomeView/components/LinearGenomeView.js.map +1 -0
  170. package/esm/LinearGenomeView/components/LinearGenomeViewSvg.d.ts +4 -0
  171. package/esm/LinearGenomeView/components/LinearGenomeViewSvg.js +132 -0
  172. package/esm/LinearGenomeView/components/LinearGenomeViewSvg.js.map +1 -0
  173. package/esm/LinearGenomeView/components/MiniControls.d.ts +6 -0
  174. package/esm/LinearGenomeView/components/MiniControls.js +25 -0
  175. package/esm/LinearGenomeView/components/MiniControls.js.map +1 -0
  176. package/esm/LinearGenomeView/components/OverviewRubberBand.d.ts +22 -0
  177. package/esm/LinearGenomeView/components/OverviewRubberBand.js +194 -0
  178. package/esm/LinearGenomeView/components/OverviewRubberBand.js.map +1 -0
  179. package/esm/LinearGenomeView/components/OverviewScaleBar.d.ts +148 -0
  180. package/esm/LinearGenomeView/components/OverviewScaleBar.js +287 -0
  181. package/esm/LinearGenomeView/components/OverviewScaleBar.js.map +1 -0
  182. package/esm/LinearGenomeView/components/RefNameAutocomplete.d.ts +22 -0
  183. package/esm/LinearGenomeView/components/RefNameAutocomplete.js +136 -0
  184. package/esm/LinearGenomeView/components/RefNameAutocomplete.js.map +1 -0
  185. package/esm/LinearGenomeView/components/RubberBand.d.ts +9 -0
  186. package/esm/LinearGenomeView/components/RubberBand.js +198 -0
  187. package/esm/LinearGenomeView/components/RubberBand.js.map +1 -0
  188. package/esm/LinearGenomeView/components/Ruler.d.ts +27 -0
  189. package/esm/LinearGenomeView/components/Ruler.js +50 -0
  190. package/esm/LinearGenomeView/components/Ruler.js.map +1 -0
  191. package/esm/LinearGenomeView/components/ScaleBar.d.ts +10 -0
  192. package/esm/LinearGenomeView/components/ScaleBar.js +112 -0
  193. package/esm/LinearGenomeView/components/ScaleBar.js.map +1 -0
  194. package/esm/LinearGenomeView/components/SearchBox.d.ts +8 -0
  195. package/esm/LinearGenomeView/components/SearchBox.js +94 -0
  196. package/esm/LinearGenomeView/components/SearchBox.js.map +1 -0
  197. package/esm/LinearGenomeView/components/SearchResultsDialog.d.ts +7 -0
  198. package/esm/LinearGenomeView/components/SearchResultsDialog.js +107 -0
  199. package/esm/LinearGenomeView/components/SearchResultsDialog.js.map +1 -0
  200. package/esm/LinearGenomeView/components/SequenceDialog.d.ts +8 -0
  201. package/esm/LinearGenomeView/components/SequenceDialog.js +147 -0
  202. package/esm/LinearGenomeView/components/SequenceDialog.js.map +1 -0
  203. package/esm/LinearGenomeView/components/TrackContainer.d.ts +9 -0
  204. package/esm/LinearGenomeView/components/TrackContainer.js +109 -0
  205. package/esm/LinearGenomeView/components/TrackContainer.js.map +1 -0
  206. package/esm/LinearGenomeView/components/TrackLabel.d.ts +8 -0
  207. package/esm/LinearGenomeView/components/TrackLabel.js +89 -0
  208. package/esm/LinearGenomeView/components/TrackLabel.js.map +1 -0
  209. package/esm/LinearGenomeView/components/TracksContainer.d.ts +10 -0
  210. package/esm/LinearGenomeView/components/TracksContainer.js +142 -0
  211. package/esm/LinearGenomeView/components/TracksContainer.js.map +1 -0
  212. package/esm/LinearGenomeView/components/VerticalGuides.d.ts +8 -0
  213. package/esm/LinearGenomeView/components/VerticalGuides.js +71 -0
  214. package/esm/LinearGenomeView/components/VerticalGuides.js.map +1 -0
  215. package/esm/LinearGenomeView/components/ZoomControls.d.ts +7 -0
  216. package/esm/LinearGenomeView/components/ZoomControls.js +32 -0
  217. package/esm/LinearGenomeView/components/ZoomControls.js.map +1 -0
  218. package/esm/LinearGenomeView/components/util.d.ts +14 -0
  219. package/esm/LinearGenomeView/components/util.js +17 -0
  220. package/esm/LinearGenomeView/components/util.js.map +1 -0
  221. package/esm/LinearGenomeView/index.d.ts +288 -0
  222. package/esm/LinearGenomeView/index.js +1124 -0
  223. package/esm/LinearGenomeView/index.js.map +1 -0
  224. package/esm/LinearGenomeView/util.d.ts +14 -0
  225. package/esm/LinearGenomeView/util.js +62 -0
  226. package/esm/LinearGenomeView/util.js.map +1 -0
  227. package/esm/index.d.ts +615 -0
  228. package/esm/index.js +127 -0
  229. package/esm/index.js.map +1 -0
  230. package/package.json +21 -14
  231. package/src/BaseLinearDisplay/components/BaseLinearDisplay.tsx +4 -3
  232. package/src/BaseLinearDisplay/components/Block.tsx +5 -5
  233. package/src/BaseLinearDisplay/components/LinearBlocks.tsx +4 -4
  234. package/src/BaseLinearDisplay/components/ServerSideRenderedBlockContent.tsx +7 -8
  235. package/src/BaseLinearDisplay/components/Tooltip.tsx +14 -4
  236. package/src/BaseLinearDisplay/models/BaseLinearDisplayModel.tsx +6 -4
  237. package/src/BaseLinearDisplay/models/serverSideRenderedBlock.ts +1 -1
  238. package/src/LinearBasicDisplay/components/SetMaxHeight.tsx +10 -7
  239. package/src/LinearBasicDisplay/model.ts +19 -11
  240. package/src/LinearGenomeView/components/CenterLine.tsx +6 -11
  241. package/src/LinearGenomeView/components/ExportSvgDialog.tsx +5 -5
  242. package/src/LinearGenomeView/components/Header.tsx +10 -15
  243. package/src/LinearGenomeView/components/HelpDialog.tsx +5 -5
  244. package/src/LinearGenomeView/components/ImportForm.tsx +6 -12
  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 +6 -10
  249. package/src/LinearGenomeView/components/OverviewScaleBar.tsx +61 -59
  250. package/src/LinearGenomeView/components/RefNameAutocomplete.tsx +13 -44
  251. package/src/LinearGenomeView/components/RubberBand.tsx +12 -17
  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 +4 -3
  255. package/src/LinearGenomeView/components/SearchResultsDialog.tsx +7 -6
  256. package/src/LinearGenomeView/components/SequenceDialog.tsx +9 -9
  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 +8 -13
  260. package/src/LinearGenomeView/components/VerticalGuides.tsx +9 -11
  261. package/src/LinearGenomeView/components/ZoomControls.tsx +12 -13
  262. package/src/LinearGenomeView/components/__snapshots__/LinearGenomeView.test.js.snap +500 -547
  263. package/src/LinearGenomeView/index.test.ts +1 -0
  264. package/src/LinearGenomeView/index.tsx +47 -62
  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/index.test.js +0 -1187
  270. package/dist/LinearGenomeView/util.test.js +0 -78
@@ -1,19 +1,13 @@
1
1
  import React from 'react'
2
2
  import { observer } from 'mobx-react'
3
- import {
4
- Button,
5
- FormGroup,
6
- Typography,
7
- makeStyles,
8
- alpha,
9
- } from '@material-ui/core'
3
+ import { Button, FormGroup, Typography, alpha } from '@mui/material'
4
+ import { makeStyles } from 'tss-react/mui'
10
5
  import { getBpDisplayStr } from '@jbrowse/core/util'
11
- import SearchBox from './SearchBox'
12
6
 
13
7
  // icons
14
8
  import { TrackSelector as TrackSelectorIcon } from '@jbrowse/core/ui/Icons'
15
- import ArrowForwardIcon from '@material-ui/icons/ArrowForward'
16
- import ArrowBackIcon from '@material-ui/icons/ArrowBack'
9
+ import ArrowForwardIcon from '@mui/icons-material/ArrowForward'
10
+ import ArrowBackIcon from '@mui/icons-material/ArrowBack'
17
11
 
18
12
  // locals
19
13
  import {
@@ -24,9 +18,10 @@ import {
24
18
  } from '..'
25
19
  import OverviewScaleBar from './OverviewScaleBar'
26
20
  import ZoomControls from './ZoomControls'
21
+ import SearchBox from './SearchBox'
27
22
 
28
23
  type LGV = LinearGenomeViewModel
29
- const useStyles = makeStyles(theme => ({
24
+ const useStyles = makeStyles()(theme => ({
30
25
  headerBar: {
31
26
  height: HEADER_BAR_HEIGHT,
32
27
  display: 'flex',
@@ -60,7 +55,7 @@ const useStyles = makeStyles(theme => ({
60
55
  }))
61
56
 
62
57
  const HeaderButtons = observer(({ model }: { model: LGV }) => {
63
- const classes = useStyles()
58
+ const { classes } = useStyles()
64
59
  return (
65
60
  <Button
66
61
  onClick={model.activateTrackSelector}
@@ -75,7 +70,7 @@ const HeaderButtons = observer(({ model }: { model: LGV }) => {
75
70
  })
76
71
 
77
72
  function PanControls({ model }: { model: LGV }) {
78
- const classes = useStyles()
73
+ const { classes } = useStyles()
79
74
  return (
80
75
  <>
81
76
  <Button
@@ -97,7 +92,7 @@ function PanControls({ model }: { model: LGV }) {
97
92
  }
98
93
 
99
94
  const RegionWidth = observer(({ model }: { model: LGV }) => {
100
- const classes = useStyles()
95
+ const { classes } = useStyles()
101
96
  const { coarseTotalBp } = model
102
97
  return (
103
98
  <Typography variant="body2" color="textSecondary" className={classes.bp}>
@@ -107,7 +102,7 @@ const RegionWidth = observer(({ model }: { model: LGV }) => {
107
102
  })
108
103
 
109
104
  const Controls = ({ model }: { model: LGV }) => {
110
- const classes = useStyles()
105
+ const { classes } = useStyles()
111
106
  return (
112
107
  <div className={classes.headerBar}>
113
108
  <HeaderButtons model={model} />
@@ -7,11 +7,11 @@ import {
7
7
  DialogTitle,
8
8
  Divider,
9
9
  IconButton,
10
- makeStyles,
11
- } from '@material-ui/core'
12
- import CloseIcon from '@material-ui/icons/Close'
10
+ } from '@mui/material'
11
+ import { makeStyles } from 'tss-react/mui'
12
+ import CloseIcon from '@mui/icons-material/Close'
13
13
 
14
- export const useStyles = makeStyles(theme => ({
14
+ const useStyles = makeStyles()(theme => ({
15
15
  closeButton: {
16
16
  position: 'absolute',
17
17
  right: theme.spacing(1),
@@ -25,7 +25,7 @@ export default function HelpDialog({
25
25
  }: {
26
26
  handleClose: () => void
27
27
  }) {
28
- const classes = useStyles()
28
+ const { classes } = useStyles()
29
29
  return (
30
30
  <Dialog open maxWidth="xl" onClose={handleClose}>
31
31
  <DialogTitle>
@@ -1,17 +1,11 @@
1
1
  import React, { useState, lazy } from 'react'
2
+ import { makeStyles } from 'tss-react/mui'
2
3
  import { observer } from 'mobx-react'
3
4
  import { getSession } from '@jbrowse/core/util'
4
- import {
5
- Button,
6
- CircularProgress,
7
- Container,
8
- Grid,
9
- makeStyles,
10
- } from '@material-ui/core'
11
- import ErrorMessage from '@jbrowse/core/ui/ErrorMessage'
5
+ import { Button, CircularProgress, Container, Grid } from '@mui/material'
6
+ import { ErrorMessage, AssemblySelector } from '@jbrowse/core/ui'
12
7
  import BaseResult from '@jbrowse/core/TextSearch/BaseResults'
13
- import AssemblySelector from '@jbrowse/core/ui/AssemblySelector'
14
- import CloseIcon from '@material-ui/icons/Close'
8
+ import CloseIcon from '@mui/icons-material/Close'
15
9
 
16
10
  // locals
17
11
  import RefNameAutocomplete from './RefNameAutocomplete'
@@ -19,7 +13,7 @@ import { fetchResults } from './util'
19
13
  import { LinearGenomeViewModel, WIDGET_HEIGHT } from '..'
20
14
  const SearchResultsDialog = lazy(() => import('./SearchResultsDialog'))
21
15
 
22
- const useStyles = makeStyles(theme => ({
16
+ const useStyles = makeStyles()(theme => ({
23
17
  importFormContainer: {
24
18
  padding: theme.spacing(2),
25
19
  },
@@ -34,7 +28,7 @@ const useStyles = makeStyles(theme => ({
34
28
  type LGV = LinearGenomeViewModel
35
29
 
36
30
  const ImportForm = observer(({ model }: { model: LGV }) => {
37
- const classes = useStyles()
31
+ const { classes } = useStyles()
38
32
  const session = getSession(model)
39
33
  const { assemblyNames, assemblyManager, textSearchManager } = session
40
34
  const { rankSearchResults, isSearchDialogDisplayed, error } = model
@@ -35,11 +35,12 @@ describe('<LinearGenomeView />', () => {
35
35
  model.setWidth(800)
36
36
  const { findByText } = render(<LinearGenomeView model={model} />)
37
37
  expect(model.displayedRegions.length).toEqual(0)
38
- fireEvent.click(await findByText('Open'))
39
- await waitFor(() => {
40
- expect(model.displayedRegions.length).toEqual(1)
41
- })
42
- })
38
+ const elt = await findByText('Open')
39
+ await waitFor(() => expect(elt.getAttribute('disabled')).toBe(null))
40
+ fireEvent.click(elt)
41
+ await waitFor(() => expect(model.displayedRegions.length).toEqual(1), 15000)
42
+ }, 15000)
43
+
43
44
  it('renders one track, one region', async () => {
44
45
  const session = createTestSession()
45
46
  session.addAssemblyConf(assemblyConf)
@@ -75,13 +76,22 @@ describe('<LinearGenomeView />', () => {
75
76
  })
76
77
  const model = session.views[0]
77
78
  model.setWidth(800)
78
- const { container, findByText } = render(<LinearGenomeView model={model} />)
79
+ const { container, getByPlaceholderText, findByText } = render(
80
+ <LinearGenomeView model={model} />,
81
+ )
79
82
  await findByText('Foo Track')
80
83
  // test needs to wait until it's updated to display 100 bp in the header to
81
84
  // make snapshot pass
82
85
  await findByText('100bp')
86
+
87
+ await waitFor(() => {
88
+ expect(getByPlaceholderText('Search for location').value).toEqual(
89
+ 'ctgA:1..100',
90
+ )
91
+ })
83
92
  expect(container.firstChild).toMatchSnapshot()
84
93
  })
94
+
85
95
  it('renders two tracks, two regions', async () => {
86
96
  const session = createTestSession()
87
97
  session.addAssemblyConf(assemblyConf)
@@ -1,5 +1,6 @@
1
1
  import React from 'react'
2
- import { Button, Paper, Typography, makeStyles } from '@material-ui/core'
2
+ import { Button, Paper, Typography } from '@mui/material'
3
+ import { makeStyles } from 'tss-react/mui'
3
4
  import { TrackSelector as TrackSelectorIcon } from '@jbrowse/core/ui/Icons'
4
5
  import { observer } from 'mobx-react'
5
6
 
@@ -15,7 +16,7 @@ import SearchResultsDialog from './SearchResultsDialog'
15
16
 
16
17
  type LGV = LinearGenomeViewModel
17
18
 
18
- const useStyles = makeStyles(theme => ({
19
+ const useStyles = makeStyles()(theme => ({
19
20
  note: {
20
21
  textAlign: 'center',
21
22
  paddingTop: theme.spacing(1),
@@ -45,7 +46,7 @@ const useStyles = makeStyles(theme => ({
45
46
 
46
47
  const LinearGenomeView = observer(({ model }: { model: LGV }) => {
47
48
  const { tracks, error, hideHeader, initialized, hasDisplayedRegions } = model
48
- const classes = useStyles()
49
+ const { classes } = useStyles()
49
50
 
50
51
  if (!initialized && !error) {
51
52
  return (
@@ -1,10 +1,9 @@
1
1
  import React, { useState } from 'react'
2
2
  import { observer } from 'mobx-react'
3
- import IconButton from '@material-ui/core/IconButton'
4
- import ZoomIn from '@material-ui/icons/ZoomIn'
5
- import ZoomOut from '@material-ui/icons/ZoomOut'
6
- import ArrowDown from '@material-ui/icons/KeyboardArrowDown'
7
- import Paper from '@material-ui/core/Paper'
3
+ import { IconButton, Paper } from '@mui/material'
4
+ import ZoomIn from '@mui/icons-material/ZoomIn'
5
+ import ZoomOut from '@mui/icons-material/ZoomOut'
6
+ import ArrowDown from '@mui/icons-material/KeyboardArrowDown'
8
7
  import Menu from '@jbrowse/core/ui/Menu'
9
8
  import { LinearGenomeViewModel } from '..'
10
9
 
@@ -14,38 +13,30 @@ const MiniControls = observer((props: { model: LinearGenomeViewModel }) => {
14
13
  const [anchorEl, setAnchorEl] = useState<HTMLElement>()
15
14
 
16
15
  return (
17
- <>
18
- <Paper style={{ background: '#aaa7' }}>
19
- <IconButton
20
- color="secondary"
21
- onClick={event => {
22
- setAnchorEl(event.currentTarget)
23
- }}
24
- >
25
- <ArrowDown />
26
- </IconButton>
16
+ <Paper style={{ background: '#aaa7' }}>
17
+ <IconButton
18
+ color="secondary"
19
+ onClick={event => setAnchorEl(event.currentTarget)}
20
+ >
21
+ <ArrowDown fontSize="small" />
22
+ </IconButton>
27
23
 
28
- <IconButton
29
- data-testid="zoom_out"
30
- onClick={() => {
31
- model.zoom(bpPerPx * 2)
32
- }}
33
- disabled={bpPerPx >= maxBpPerPx - 0.0001 || scaleFactor !== 1}
34
- color="secondary"
35
- >
36
- <ZoomOut />
37
- </IconButton>
38
- <IconButton
39
- data-testid="zoom_in"
40
- onClick={() => {
41
- model.zoom(model.bpPerPx / 2)
42
- }}
43
- disabled={bpPerPx <= minBpPerPx + 0.0001 || scaleFactor !== 1}
44
- color="secondary"
45
- >
46
- <ZoomIn />
47
- </IconButton>
48
- </Paper>
24
+ <IconButton
25
+ data-testid="zoom_out"
26
+ onClick={() => model.zoom(bpPerPx * 2)}
27
+ disabled={bpPerPx >= maxBpPerPx - 0.0001 || scaleFactor !== 1}
28
+ color="secondary"
29
+ >
30
+ <ZoomOut fontSize="small" />
31
+ </IconButton>
32
+ <IconButton
33
+ data-testid="zoom_in"
34
+ onClick={() => model.zoom(model.bpPerPx / 2)}
35
+ disabled={bpPerPx <= minBpPerPx + 0.0001 || scaleFactor !== 1}
36
+ color="secondary"
37
+ >
38
+ <ZoomIn fontSize="small" />
39
+ </IconButton>
49
40
  <Menu
50
41
  anchorEl={anchorEl}
51
42
  open={Boolean(anchorEl)}
@@ -53,12 +44,10 @@ const MiniControls = observer((props: { model: LinearGenomeViewModel }) => {
53
44
  callback()
54
45
  setAnchorEl(undefined)
55
46
  }}
56
- onClose={() => {
57
- setAnchorEl(undefined)
58
- }}
47
+ onClose={() => setAnchorEl(undefined)}
59
48
  menuItems={model.menuItems()}
60
49
  />
61
- </>
50
+ </Paper>
62
51
  )
63
52
  })
64
53
 
@@ -1,11 +1,6 @@
1
1
  import React, { useRef, useEffect, useState } from 'react'
2
- import {
3
- Popover,
4
- Tooltip,
5
- Typography,
6
- makeStyles,
7
- alpha,
8
- } from '@material-ui/core'
2
+ import { Popover, Tooltip, Typography, alpha } from '@mui/material'
3
+ import { makeStyles } from 'tss-react/mui'
9
4
  import { getSession, stringify } from '@jbrowse/core/util'
10
5
  import { observer, PropTypes as MobxPropTypes } from 'mobx-react'
11
6
  import ReactPropTypes from 'prop-types'
@@ -14,7 +9,8 @@ import { LinearGenomeViewModel, HEADER_OVERVIEW_HEIGHT } from '..'
14
9
 
15
10
  type LGV = LinearGenomeViewModel
16
11
 
17
- const useStyles = makeStyles(theme => {
12
+ const useStyles = makeStyles()(theme => {
13
+ // @ts-ignore
18
14
  const { tertiary, primary } = theme.palette
19
15
  const background = tertiary
20
16
  ? alpha(tertiary.main, 0.7)
@@ -66,7 +62,7 @@ const HoverTooltip = observer(
66
62
  guideX: number
67
63
  overview: Base1DViewModel
68
64
  }) => {
69
- const classes = useStyles()
65
+ const { classes } = useStyles()
70
66
  const { cytobandOffset } = model
71
67
  const { assemblyManager } = getSession(model)
72
68
 
@@ -112,7 +108,7 @@ function OverviewRubberBand({
112
108
  const [guideX, setGuideX] = useState<number>()
113
109
  const controlsRef = useRef<HTMLDivElement>(null)
114
110
  const rubberBandRef = useRef(null)
115
- const classes = useStyles()
111
+ const { classes } = useStyles()
116
112
  const mouseDragging = startX !== undefined
117
113
 
118
114
  useEffect(() => {
@@ -1,8 +1,8 @@
1
1
  import React from 'react'
2
- import { Typography, makeStyles, useTheme, alpha } from '@material-ui/core'
2
+ import { Typography, useTheme, alpha } from '@mui/material'
3
+ import { makeStyles } from 'tss-react/mui'
3
4
  import { observer } from 'mobx-react'
4
5
  import { Instance } from 'mobx-state-tree'
5
- import clsx from 'clsx'
6
6
 
7
7
  import Base1DView, { Base1DViewModel } from '@jbrowse/core/util/Base1DViewModel'
8
8
  import { getSession, getTickDisplayStr } from '@jbrowse/core/util'
@@ -20,59 +20,57 @@ import OverviewRubberBand from './OverviewRubberBand'
20
20
 
21
21
  const wholeSeqSpacer = 2
22
22
 
23
- const useStyles = makeStyles(theme => {
24
- return {
25
- scaleBar: {
26
- height: HEADER_OVERVIEW_HEIGHT,
27
- },
28
- scaleBarBorder: {
29
- border: '1px solid',
30
- },
31
- scaleBarContig: {
32
- backgroundColor: theme.palette.background.default,
33
- position: 'absolute',
34
- top: 0,
35
- height: HEADER_OVERVIEW_HEIGHT,
36
- },
37
- scaleBarContigForward: {
38
- backgroundImage: `url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 15 9'%3E%3Cpath d='M-.1 0L6 4.5L-.1 9' fill='none' stroke='%23ddd'/%3E%3C/svg%3E")`,
39
- backgroundRepeat: 'repeat',
40
- },
41
- scaleBarContigReverse: {
42
- backgroundImage: `url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 15 9'%3E%3Cpath d='M6 0L0 4.5L6 9' fill='none' stroke='%23ddd'/%3E%3C/svg%3E")`,
43
- backgroundRepeat: 'repeat',
44
- },
45
-
46
- scaleBarRefName: {
47
- position: 'absolute',
48
- fontWeight: 'bold',
49
- pointerEvents: 'none',
50
- zIndex: 100,
51
- },
52
- scaleBarLabel: {
53
- height: HEADER_OVERVIEW_HEIGHT,
54
- position: 'absolute',
55
- display: 'flex',
56
- justifyContent: 'center',
57
- pointerEvents: 'none',
58
- },
59
- scaleBarVisibleRegion: {
60
- position: 'absolute',
61
- height: HEADER_OVERVIEW_HEIGHT,
62
- pointerEvents: 'none',
63
- zIndex: 100,
64
- border: '1px solid',
65
- },
66
- overview: {
67
- height: HEADER_BAR_HEIGHT,
68
- position: 'relative',
69
- },
70
- overviewSvg: {
71
- width: '100%',
72
- position: 'absolute',
73
- },
74
- }
75
- })
23
+ const useStyles = makeStyles()(theme => ({
24
+ scaleBar: {
25
+ height: HEADER_OVERVIEW_HEIGHT,
26
+ },
27
+ scaleBarBorder: {
28
+ border: '1px solid',
29
+ },
30
+ scaleBarContig: {
31
+ backgroundColor: theme.palette.background.default,
32
+ position: 'absolute',
33
+ top: 0,
34
+ height: HEADER_OVERVIEW_HEIGHT,
35
+ },
36
+ scaleBarContigForward: {
37
+ backgroundImage: `url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 15 9'%3E%3Cpath d='M-.1 0L6 4.5L-.1 9' fill='none' stroke='%23ddd'/%3E%3C/svg%3E")`,
38
+ backgroundRepeat: 'repeat',
39
+ },
40
+ scaleBarContigReverse: {
41
+ backgroundImage: `url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 15 9'%3E%3Cpath d='M6 0L0 4.5L6 9' fill='none' stroke='%23ddd'/%3E%3C/svg%3E")`,
42
+ backgroundRepeat: 'repeat',
43
+ },
44
+
45
+ scaleBarRefName: {
46
+ position: 'absolute',
47
+ fontWeight: 'bold',
48
+ pointerEvents: 'none',
49
+ zIndex: 100,
50
+ },
51
+ scaleBarLabel: {
52
+ height: HEADER_OVERVIEW_HEIGHT,
53
+ position: 'absolute',
54
+ display: 'flex',
55
+ justifyContent: 'center',
56
+ pointerEvents: 'none',
57
+ },
58
+ scaleBarVisibleRegion: {
59
+ position: 'absolute',
60
+ height: HEADER_OVERVIEW_HEIGHT,
61
+ pointerEvents: 'none',
62
+ zIndex: 100,
63
+ border: '1px solid',
64
+ },
65
+ overview: {
66
+ height: HEADER_BAR_HEIGHT,
67
+ position: 'relative',
68
+ },
69
+ overviewSvg: {
70
+ width: '100%',
71
+ position: 'absolute',
72
+ },
73
+ }))
76
74
 
77
75
  const Polygon = observer(
78
76
  ({
@@ -89,6 +87,8 @@ const Polygon = observer(
89
87
  const { interRegionPaddingWidth, offsetPx, dynamicBlocks, cytobandOffset } =
90
88
  model
91
89
  const { contentBlocks, totalWidthPxWithoutBorders } = dynamicBlocks
90
+
91
+ // @ts-ignore
92
92
  const { tertiary, primary } = theme.palette
93
93
  const polygonColor = tertiary ? tertiary.light : primary.light
94
94
 
@@ -305,7 +305,7 @@ const OverviewBox = observer(
305
305
  block: ContentBlock
306
306
  overview: Base1DViewModel
307
307
  }) => {
308
- const classes = useStyles()
308
+ const { classes, cx } = useStyles()
309
309
  const { cytobandOffset, bpPerPx, showCytobands } = model
310
310
  const { start, end, reversed, refName, assemblyName } = block
311
311
  const { majorPitch } = chooseGridPitch(scale, 120, 15)
@@ -335,7 +335,7 @@ const OverviewBox = observer(
335
335
  {refName}
336
336
  </Typography>
337
337
  <div
338
- className={clsx(
338
+ className={cx(
339
339
  classes.scaleBarContig,
340
340
  canDisplayCytobands
341
341
  ? undefined
@@ -392,11 +392,13 @@ const ScaleBar = observer(
392
392
  overview: Base1DViewModel
393
393
  scale: number
394
394
  }) => {
395
- const classes = useStyles()
395
+ const { classes } = useStyles()
396
396
  const theme = useTheme()
397
397
  const { dynamicBlocks, showCytobands, cytobandOffset } = model
398
398
  const visibleRegions = dynamicBlocks.contentBlocks
399
399
  const overviewVisibleRegions = overview.dynamicBlocks
400
+
401
+ // @ts-ignore
400
402
  const { tertiary, primary } = theme.palette
401
403
  const scaleBarColor = tertiary ? tertiary.light : primary.light
402
404
 
@@ -467,7 +469,7 @@ function OverviewScaleBar({
467
469
  model: LGV
468
470
  children: React.ReactNode
469
471
  }) {
470
- const classes = useStyles()
472
+ const { classes } = useStyles()
471
473
  const { totalBp, width, cytobandOffset, displayedRegions } = model
472
474
 
473
475
  const overview = Base1DView.create({
@@ -5,20 +5,17 @@ import BaseResult, {
5
5
  RefSequenceResult,
6
6
  } from '@jbrowse/core/TextSearch/BaseResults'
7
7
  import {
8
+ Autocomplete,
8
9
  CircularProgress,
9
10
  IconButton,
10
11
  InputAdornment,
11
- Popper,
12
- PopperProps,
13
12
  TextField,
14
13
  TextFieldProps as TFP,
15
- Typography,
16
- } from '@material-ui/core'
14
+ } from '@mui/material'
17
15
 
18
16
  // icons
19
- import SearchIcon from '@material-ui/icons/Search'
20
- import Autocomplete from '@material-ui/lab/Autocomplete'
21
- import HelpIcon from '@material-ui/icons/Help'
17
+ import SearchIcon from '@mui/icons-material/Search'
18
+ import HelpIcon from '@mui/icons-material/Help'
22
19
 
23
20
  // locals
24
21
  import { LinearGenomeViewModel } from '..'
@@ -45,25 +42,6 @@ function filterOptions(options: Option[], searchQuery: string) {
45
42
  })
46
43
  }
47
44
 
48
- // MyPopper used to expand search results box wider if needed
49
- // xref https://stackoverflow.com/a/63583835/2129219
50
- const MyPopper = function (
51
- props: PopperProps & { style?: { width?: unknown } },
52
- ) {
53
- const { style } = props
54
- return (
55
- <Popper
56
- {...props}
57
- style={{
58
- width: 'fit-content',
59
- minWidth: Math.min(+(style?.width || 0), 200),
60
- background: 'white',
61
- }}
62
- placement="bottom-start"
63
- />
64
- )
65
- }
66
-
67
45
  function RefNameAutocomplete({
68
46
  model,
69
47
  onSelect,
@@ -164,7 +142,6 @@ function RefNameAutocomplete({
164
142
  data-testid="autocomplete"
165
143
  disableListWrap
166
144
  disableClearable
167
- PopperComponent={MyPopper}
168
145
  disabled={!assemblyName}
169
146
  freeSolo
170
147
  includeInputInList
@@ -226,11 +203,11 @@ function RefNameAutocomplete({
226
203
  const { helperText, InputProps = {} } = TextFieldProps
227
204
  return (
228
205
  <TextField
229
- onBlur={() => {
206
+ onBlur={() =>
230
207
  // this is used to restore a refName or the non-user-typed input
231
208
  // to the box on blurring
232
209
  setInputValue(inputBoxVal)
233
- }}
210
+ }
234
211
  {...params}
235
212
  {...TextFieldProps}
236
213
  helperText={helperText}
@@ -244,12 +221,13 @@ function RefNameAutocomplete({
244
221
  <CircularProgress color="inherit" size={20} />
245
222
  ) : (
246
223
  <InputAdornment position="end" style={{ marginRight: 7 }}>
247
- <SearchIcon />
224
+ <SearchIcon fontSize="small" />
248
225
  {showHelp ? (
249
226
  <IconButton
250
227
  onClick={() => setHelpDialogDisplayed(true)}
228
+ size="small"
251
229
  >
252
- <HelpIcon />
230
+ <HelpIcon fontSize="small" />
253
231
  </IconButton>
254
232
  ) : null}
255
233
  </InputAdornment>
@@ -259,23 +237,14 @@ function RefNameAutocomplete({
259
237
  ),
260
238
  }}
261
239
  placeholder="Search for location"
262
- onChange={e => {
263
- setCurrentSearch(e.target.value)
264
- }}
240
+ onChange={e => setCurrentSearch(e.target.value)}
265
241
  />
266
242
  )
267
243
  }}
268
- renderOption={option => {
269
- const { result } = option
270
- const component = result.getRenderingComponent()
271
- if (component && React.isValidElement(component)) {
272
- return component
273
- }
274
-
275
- return <Typography noWrap>{result.getDisplayString()}</Typography>
276
- }}
277
244
  getOptionLabel={option =>
278
- (typeof option === 'string' ? option : option.result.getLabel()) || ''
245
+ (typeof option === 'string'
246
+ ? option
247
+ : option.result.getDisplayString()) || ''
279
248
  }
280
249
  />
281
250
  {isHelpDialogDisplayed ? (