@jbrowse/plugin-data-management 1.7.11 → 2.1.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 (267) hide show
  1. package/dist/AddConnectionWidget/components/AddConnectionWidget.js +115 -162
  2. package/dist/AddConnectionWidget/components/AddConnectionWidget.js.map +1 -0
  3. package/dist/AddConnectionWidget/components/ConfigureConnection.js +33 -32
  4. package/dist/AddConnectionWidget/components/ConfigureConnection.js.map +1 -0
  5. package/dist/AddConnectionWidget/components/ConnectionTypeSelect.js +48 -64
  6. package/dist/AddConnectionWidget/components/ConnectionTypeSelect.js.map +1 -0
  7. package/dist/AddConnectionWidget/index.js +10 -20
  8. package/dist/AddConnectionWidget/index.js.map +1 -0
  9. package/dist/AddConnectionWidget/model.js +7 -15
  10. package/dist/AddConnectionWidget/model.js.map +1 -0
  11. package/dist/AddTrackWidget/components/AddTrackWidget.d.ts +2 -2
  12. package/dist/AddTrackWidget/components/AddTrackWidget.js +51 -246
  13. package/dist/AddTrackWidget/components/AddTrackWidget.js.map +1 -0
  14. package/dist/AddTrackWidget/components/ConfirmTrack.js +267 -385
  15. package/dist/AddTrackWidget/components/ConfirmTrack.js.map +1 -0
  16. package/dist/AddTrackWidget/components/DefaultAddTrackWorkflow.d.ts +7 -0
  17. package/dist/AddTrackWidget/components/DefaultAddTrackWorkflow.js +222 -0
  18. package/dist/AddTrackWidget/components/DefaultAddTrackWorkflow.js.map +1 -0
  19. package/dist/AddTrackWidget/components/TrackSourceSelect.js +28 -55
  20. package/dist/AddTrackWidget/components/TrackSourceSelect.js.map +1 -0
  21. package/dist/AddTrackWidget/index.js +10 -20
  22. package/dist/AddTrackWidget/index.js.map +1 -0
  23. package/dist/AddTrackWidget/model.js +150 -174
  24. package/dist/AddTrackWidget/model.js.map +1 -0
  25. package/dist/AssemblyManager/AssemblyAddForm.js +162 -282
  26. package/dist/AssemblyManager/AssemblyAddForm.js.map +1 -0
  27. package/dist/AssemblyManager/AssemblyEditor.js +12 -23
  28. package/dist/AssemblyManager/AssemblyEditor.js.map +1 -0
  29. package/dist/AssemblyManager/AssemblyManager.js +102 -132
  30. package/dist/AssemblyManager/AssemblyManager.js.map +1 -0
  31. package/dist/AssemblyManager/AssemblyTable.d.ts +1 -1
  32. package/dist/AssemblyManager/AssemblyTable.js +60 -84
  33. package/dist/AssemblyManager/AssemblyTable.js.map +1 -0
  34. package/dist/AssemblyManager/index.js +8 -14
  35. package/dist/AssemblyManager/index.js.map +1 -0
  36. package/dist/HierarchicalTrackSelectorWidget/components/CloseConnectionDialog.js +49 -50
  37. package/dist/HierarchicalTrackSelectorWidget/components/CloseConnectionDialog.js.map +1 -0
  38. package/dist/HierarchicalTrackSelectorWidget/components/DeleteConnectionDialog.js +28 -44
  39. package/dist/HierarchicalTrackSelectorWidget/components/DeleteConnectionDialog.js.map +1 -0
  40. package/dist/HierarchicalTrackSelectorWidget/components/Header.d.ts +10 -0
  41. package/dist/HierarchicalTrackSelectorWidget/components/Header.js +209 -0
  42. package/dist/HierarchicalTrackSelectorWidget/components/Header.js.map +1 -0
  43. package/dist/HierarchicalTrackSelectorWidget/components/HierarchicalTrackSelector.d.ts +1 -0
  44. package/dist/HierarchicalTrackSelectorWidget/components/HierarchicalTrackSelector.js +217 -649
  45. package/dist/HierarchicalTrackSelectorWidget/components/HierarchicalTrackSelector.js.map +1 -0
  46. package/dist/HierarchicalTrackSelectorWidget/components/ManageConnectionsDialog.js +45 -74
  47. package/dist/HierarchicalTrackSelectorWidget/components/ManageConnectionsDialog.js.map +1 -0
  48. package/dist/HierarchicalTrackSelectorWidget/components/Node.d.ts +29 -0
  49. package/dist/HierarchicalTrackSelectorWidget/components/Node.js +207 -0
  50. package/dist/HierarchicalTrackSelectorWidget/components/Node.js.map +1 -0
  51. package/dist/HierarchicalTrackSelectorWidget/components/ToggleConnectionsDialog.js +57 -91
  52. package/dist/HierarchicalTrackSelectorWidget/components/ToggleConnectionsDialog.js.map +1 -0
  53. package/dist/HierarchicalTrackSelectorWidget/components/util.d.ts +3 -0
  54. package/dist/HierarchicalTrackSelectorWidget/components/util.js +11 -0
  55. package/dist/HierarchicalTrackSelectorWidget/components/util.js.map +1 -0
  56. package/dist/HierarchicalTrackSelectorWidget/configSchema.d.ts +2 -0
  57. package/dist/HierarchicalTrackSelectorWidget/configSchema.js +6 -0
  58. package/dist/HierarchicalTrackSelectorWidget/configSchema.js.map +1 -0
  59. package/dist/HierarchicalTrackSelectorWidget/index.d.ts +4 -2
  60. package/dist/HierarchicalTrackSelectorWidget/index.js +10 -20
  61. package/dist/HierarchicalTrackSelectorWidget/index.js.map +1 -0
  62. package/dist/HierarchicalTrackSelectorWidget/model.d.ts +13 -3
  63. package/dist/HierarchicalTrackSelectorWidget/model.js +250 -284
  64. package/dist/HierarchicalTrackSelectorWidget/model.js.map +1 -0
  65. package/dist/PluginStoreWidget/components/CustomPluginForm.js +140 -202
  66. package/dist/PluginStoreWidget/components/CustomPluginForm.js.map +1 -0
  67. package/dist/PluginStoreWidget/components/InstalledPlugin.js +112 -127
  68. package/dist/PluginStoreWidget/components/InstalledPlugin.js.map +1 -0
  69. package/dist/PluginStoreWidget/components/InstalledPluginsList.js +22 -45
  70. package/dist/PluginStoreWidget/components/InstalledPluginsList.js.map +1 -0
  71. package/dist/PluginStoreWidget/components/PluginCard.js +95 -110
  72. package/dist/PluginStoreWidget/components/PluginCard.js.map +1 -0
  73. package/dist/PluginStoreWidget/components/PluginStoreWidget.js +188 -227
  74. package/dist/PluginStoreWidget/components/PluginStoreWidget.js.map +1 -0
  75. package/dist/PluginStoreWidget/index.d.ts +0 -1
  76. package/dist/PluginStoreWidget/index.js +10 -28
  77. package/dist/PluginStoreWidget/index.js.map +1 -0
  78. package/dist/PluginStoreWidget/model.js +21 -26
  79. package/dist/PluginStoreWidget/model.js.map +1 -0
  80. package/dist/SetDefaultSession/SetDefaultSession.js +34 -58
  81. package/dist/SetDefaultSession/SetDefaultSession.js.map +1 -0
  82. package/dist/SetDefaultSession/index.js +8 -14
  83. package/dist/SetDefaultSession/index.js.map +1 -0
  84. package/dist/index.d.ts +4 -1
  85. package/dist/index.js +109 -147
  86. package/dist/index.js.map +1 -0
  87. package/dist/ucsc-trackhub/configSchema.js +18 -28
  88. package/dist/ucsc-trackhub/configSchema.js.map +1 -0
  89. package/dist/ucsc-trackhub/index.js +10 -22
  90. package/dist/ucsc-trackhub/index.js.map +1 -0
  91. package/dist/ucsc-trackhub/model.js +150 -128
  92. package/dist/ucsc-trackhub/model.js.map +1 -0
  93. package/dist/ucsc-trackhub/ucscAssemblies.js +3 -9
  94. package/dist/ucsc-trackhub/ucscAssemblies.js.map +1 -0
  95. package/dist/ucsc-trackhub/ucscTrackHub.js +458 -491
  96. package/dist/ucsc-trackhub/ucscTrackHub.js.map +1 -0
  97. package/esm/AddConnectionWidget/components/AddConnectionWidget.d.ts +9 -0
  98. package/esm/AddConnectionWidget/components/AddConnectionWidget.js +86 -0
  99. package/esm/AddConnectionWidget/components/AddConnectionWidget.js.map +1 -0
  100. package/esm/AddConnectionWidget/components/ConfigureConnection.d.ts +2 -0
  101. package/esm/AddConnectionWidget/components/ConfigureConnection.js +11 -0
  102. package/esm/AddConnectionWidget/components/ConfigureConnection.js.map +1 -0
  103. package/esm/AddConnectionWidget/components/ConnectionTypeSelect.d.ts +8 -0
  104. package/esm/AddConnectionWidget/components/ConnectionTypeSelect.js +24 -0
  105. package/esm/AddConnectionWidget/components/ConnectionTypeSelect.js.map +1 -0
  106. package/esm/AddConnectionWidget/index.d.ts +2 -0
  107. package/esm/AddConnectionWidget/index.js +4 -0
  108. package/esm/AddConnectionWidget/index.js.map +1 -0
  109. package/esm/AddConnectionWidget/model.d.ts +5 -0
  110. package/esm/AddConnectionWidget/model.js +7 -0
  111. package/esm/AddConnectionWidget/model.js.map +1 -0
  112. package/esm/AddTrackWidget/components/AddTrackWidget.d.ts +7 -0
  113. package/esm/AddTrackWidget/components/AddTrackWidget.js +26 -0
  114. package/esm/AddTrackWidget/components/AddTrackWidget.js.map +1 -0
  115. package/esm/AddTrackWidget/components/ConfirmTrack.d.ts +7 -0
  116. package/esm/AddTrackWidget/components/ConfirmTrack.js +246 -0
  117. package/esm/AddTrackWidget/components/ConfirmTrack.js.map +1 -0
  118. package/esm/AddTrackWidget/components/DefaultAddTrackWorkflow.d.ts +7 -0
  119. package/esm/AddTrackWidget/components/DefaultAddTrackWorkflow.js +134 -0
  120. package/esm/AddTrackWidget/components/DefaultAddTrackWorkflow.js.map +1 -0
  121. package/esm/AddTrackWidget/components/TrackSourceSelect.d.ts +7 -0
  122. package/esm/AddTrackWidget/components/TrackSourceSelect.js +27 -0
  123. package/esm/AddTrackWidget/components/TrackSourceSelect.js.map +1 -0
  124. package/esm/AddTrackWidget/index.d.ts +2 -0
  125. package/esm/AddTrackWidget/index.js +4 -0
  126. package/esm/AddTrackWidget/index.js.map +1 -0
  127. package/esm/AddTrackWidget/model.d.ts +51 -0
  128. package/esm/AddTrackWidget/model.js +154 -0
  129. package/esm/AddTrackWidget/model.js.map +1 -0
  130. package/esm/AssemblyManager/AssemblyAddForm.d.ts +6 -0
  131. package/esm/AssemblyManager/AssemblyAddForm.js +132 -0
  132. package/esm/AssemblyManager/AssemblyAddForm.js.map +1 -0
  133. package/esm/AssemblyManager/AssemblyEditor.d.ts +5 -0
  134. package/esm/AssemblyManager/AssemblyEditor.js +8 -0
  135. package/esm/AssemblyManager/AssemblyEditor.js.map +1 -0
  136. package/esm/AssemblyManager/AssemblyManager.d.ts +6 -0
  137. package/esm/AssemblyManager/AssemblyManager.js +69 -0
  138. package/esm/AssemblyManager/AssemblyManager.js.map +1 -0
  139. package/esm/AssemblyManager/AssemblyTable.d.ts +13 -0
  140. package/esm/AssemblyManager/AssemblyTable.js +62 -0
  141. package/esm/AssemblyManager/AssemblyTable.js.map +1 -0
  142. package/esm/AssemblyManager/index.d.ts +1 -0
  143. package/esm/AssemblyManager/index.js +2 -0
  144. package/esm/AssemblyManager/index.js.map +1 -0
  145. package/esm/HierarchicalTrackSelectorWidget/components/CloseConnectionDialog.d.ts +13 -0
  146. package/esm/HierarchicalTrackSelectorWidget/components/CloseConnectionDialog.js +26 -0
  147. package/esm/HierarchicalTrackSelectorWidget/components/CloseConnectionDialog.js.map +1 -0
  148. package/esm/HierarchicalTrackSelectorWidget/components/DeleteConnectionDialog.d.ts +13 -0
  149. package/esm/HierarchicalTrackSelectorWidget/components/DeleteConnectionDialog.js +24 -0
  150. package/esm/HierarchicalTrackSelectorWidget/components/DeleteConnectionDialog.js.map +1 -0
  151. package/esm/HierarchicalTrackSelectorWidget/components/Header.d.ts +10 -0
  152. package/esm/HierarchicalTrackSelectorWidget/components/Header.js +149 -0
  153. package/esm/HierarchicalTrackSelectorWidget/components/Header.js.map +1 -0
  154. package/esm/HierarchicalTrackSelectorWidget/components/HierarchicalTrackSelector.d.ts +11 -0
  155. package/esm/HierarchicalTrackSelectorWidget/components/HierarchicalTrackSelector.js +127 -0
  156. package/esm/HierarchicalTrackSelectorWidget/components/HierarchicalTrackSelector.js.map +1 -0
  157. package/esm/HierarchicalTrackSelectorWidget/components/ManageConnectionsDialog.d.ts +10 -0
  158. package/esm/HierarchicalTrackSelectorWidget/components/ManageConnectionsDialog.js +45 -0
  159. package/esm/HierarchicalTrackSelectorWidget/components/ManageConnectionsDialog.js.map +1 -0
  160. package/esm/HierarchicalTrackSelectorWidget/components/Node.d.ts +29 -0
  161. package/esm/HierarchicalTrackSelectorWidget/components/Node.js +149 -0
  162. package/esm/HierarchicalTrackSelectorWidget/components/Node.js.map +1 -0
  163. package/esm/HierarchicalTrackSelectorWidget/components/ToggleConnectionsDialog.d.ts +11 -0
  164. package/esm/HierarchicalTrackSelectorWidget/components/ToggleConnectionsDialog.js +57 -0
  165. package/esm/HierarchicalTrackSelectorWidget/components/ToggleConnectionsDialog.js.map +1 -0
  166. package/esm/HierarchicalTrackSelectorWidget/components/util.d.ts +3 -0
  167. package/esm/HierarchicalTrackSelectorWidget/components/util.js +5 -0
  168. package/esm/HierarchicalTrackSelectorWidget/components/util.js.map +1 -0
  169. package/esm/HierarchicalTrackSelectorWidget/configSchema.d.ts +2 -0
  170. package/esm/HierarchicalTrackSelectorWidget/configSchema.js +4 -0
  171. package/esm/HierarchicalTrackSelectorWidget/configSchema.js.map +1 -0
  172. package/esm/HierarchicalTrackSelectorWidget/index.d.ts +4 -0
  173. package/esm/HierarchicalTrackSelectorWidget/index.js +4 -0
  174. package/esm/HierarchicalTrackSelectorWidget/index.js.map +1 -0
  175. package/esm/HierarchicalTrackSelectorWidget/model.d.ts +69 -0
  176. package/esm/HierarchicalTrackSelectorWidget/model.js +204 -0
  177. package/esm/HierarchicalTrackSelectorWidget/model.js.map +1 -0
  178. package/esm/PluginStoreWidget/components/CustomPluginForm.d.ts +9 -0
  179. package/esm/PluginStoreWidget/components/CustomPluginForm.js +109 -0
  180. package/esm/PluginStoreWidget/components/CustomPluginForm.js.map +1 -0
  181. package/esm/PluginStoreWidget/components/InstalledPlugin.d.ts +11 -0
  182. package/esm/PluginStoreWidget/components/InstalledPlugin.js +77 -0
  183. package/esm/PluginStoreWidget/components/InstalledPlugin.js.map +1 -0
  184. package/esm/PluginStoreWidget/components/InstalledPluginsList.d.ts +9 -0
  185. package/esm/PluginStoreWidget/components/InstalledPluginsList.js +16 -0
  186. package/esm/PluginStoreWidget/components/InstalledPluginsList.js.map +1 -0
  187. package/esm/PluginStoreWidget/components/PluginCard.d.ts +10 -0
  188. package/esm/PluginStoreWidget/components/PluginCard.js +61 -0
  189. package/esm/PluginStoreWidget/components/PluginCard.js.map +1 -0
  190. package/esm/PluginStoreWidget/components/PluginStoreWidget.d.ts +7 -0
  191. package/esm/PluginStoreWidget/components/PluginStoreWidget.js +106 -0
  192. package/esm/PluginStoreWidget/components/PluginStoreWidget.js.map +1 -0
  193. package/esm/PluginStoreWidget/index.d.ts +2 -0
  194. package/esm/PluginStoreWidget/index.js +4 -0
  195. package/esm/PluginStoreWidget/index.js.map +1 -0
  196. package/esm/PluginStoreWidget/model.d.ts +13 -0
  197. package/esm/PluginStoreWidget/model.js +20 -0
  198. package/esm/PluginStoreWidget/model.js.map +1 -0
  199. package/esm/SetDefaultSession/SetDefaultSession.d.ts +6 -0
  200. package/esm/SetDefaultSession/SetDefaultSession.js +34 -0
  201. package/esm/SetDefaultSession/SetDefaultSession.js.map +1 -0
  202. package/esm/SetDefaultSession/index.d.ts +1 -0
  203. package/esm/SetDefaultSession/index.js +2 -0
  204. package/esm/SetDefaultSession/index.js.map +1 -0
  205. package/esm/index.d.ts +30 -0
  206. package/esm/index.js +70 -0
  207. package/esm/index.js.map +1 -0
  208. package/esm/ucsc-trackhub/configSchema.d.ts +2 -0
  209. package/esm/ucsc-trackhub/configSchema.js +18 -0
  210. package/esm/ucsc-trackhub/configSchema.js.map +1 -0
  211. package/esm/ucsc-trackhub/index.d.ts +2 -0
  212. package/esm/ucsc-trackhub/index.js +3 -0
  213. package/esm/ucsc-trackhub/index.js.map +1 -0
  214. package/esm/ucsc-trackhub/model.d.ts +15 -0
  215. package/esm/ucsc-trackhub/model.js +82 -0
  216. package/esm/ucsc-trackhub/model.js.map +1 -0
  217. package/esm/ucsc-trackhub/ucscAssemblies.d.ts +2 -0
  218. package/esm/ucsc-trackhub/ucscAssemblies.js +201 -0
  219. package/esm/ucsc-trackhub/ucscAssemblies.js.map +1 -0
  220. package/esm/ucsc-trackhub/ucscTrackHub.d.ts +6 -0
  221. package/esm/ucsc-trackhub/ucscTrackHub.js +348 -0
  222. package/esm/ucsc-trackhub/ucscTrackHub.js.map +1 -0
  223. package/package.json +21 -13
  224. package/src/AddConnectionWidget/components/AddConnectionWidget.js +14 -10
  225. package/src/AddConnectionWidget/components/ConnectionTypeSelect.tsx +2 -4
  226. package/src/AddConnectionWidget/components/__snapshots__/AddConnectionWidget.test.js.snap +63 -67
  227. package/src/AddTrackWidget/components/{AddTrackWidget.test.js → AddTrackWidget.test.tsx} +19 -34
  228. package/src/AddTrackWidget/components/AddTrackWidget.tsx +36 -200
  229. package/src/AddTrackWidget/components/ConfirmTrack.tsx +32 -32
  230. package/src/AddTrackWidget/components/DefaultAddTrackWorkflow.tsx +205 -0
  231. package/src/AddTrackWidget/components/TrackSourceSelect.tsx +9 -5
  232. package/src/AssemblyManager/AssemblyAddForm.tsx +5 -11
  233. package/src/AssemblyManager/AssemblyManager.tsx +8 -8
  234. package/src/AssemblyManager/AssemblyTable.tsx +10 -10
  235. package/src/HierarchicalTrackSelectorWidget/components/CloseConnectionDialog.tsx +1 -1
  236. package/src/HierarchicalTrackSelectorWidget/components/DeleteConnectionDialog.tsx +1 -1
  237. package/src/HierarchicalTrackSelectorWidget/components/Header.tsx +287 -0
  238. package/src/HierarchicalTrackSelectorWidget/components/HierarchicalTrackSelector.test.js +1 -1
  239. package/src/HierarchicalTrackSelectorWidget/components/HierarchicalTrackSelector.tsx +23 -440
  240. package/src/HierarchicalTrackSelectorWidget/components/ManageConnectionsDialog.tsx +6 -6
  241. package/src/HierarchicalTrackSelectorWidget/components/Node.tsx +284 -0
  242. package/src/HierarchicalTrackSelectorWidget/components/ToggleConnectionsDialog.tsx +7 -7
  243. package/src/HierarchicalTrackSelectorWidget/components/__snapshots__/HierarchicalTrackSelector.test.js.snap +122 -115
  244. package/src/HierarchicalTrackSelectorWidget/components/util.ts +11 -0
  245. package/src/HierarchicalTrackSelectorWidget/configSchema.ts +3 -0
  246. package/src/HierarchicalTrackSelectorWidget/index.ts +4 -6
  247. package/src/HierarchicalTrackSelectorWidget/model.ts +45 -41
  248. package/src/PluginStoreWidget/components/CustomPluginForm.tsx +11 -14
  249. package/src/PluginStoreWidget/components/InstalledPlugin.tsx +9 -8
  250. package/src/PluginStoreWidget/components/InstalledPluginsList.tsx +1 -1
  251. package/src/PluginStoreWidget/components/PluginCard.tsx +10 -11
  252. package/src/PluginStoreWidget/components/PluginStoreWidget.tsx +9 -9
  253. package/src/PluginStoreWidget/components/__snapshots__/PluginStoreWidget.test.js.snap +267 -217
  254. package/src/PluginStoreWidget/index.js +0 -1
  255. package/src/SetDefaultSession/SetDefaultSession.tsx +1 -1
  256. package/src/index.ts +4 -1
  257. package/dist/AddConnectionWidget/components/AddConnectionWidget.test.js +0 -279
  258. package/dist/AddTrackWidget/components/AddTrackWidget.test.js +0 -218
  259. package/dist/AddTrackWidget/index.test.js +0 -292
  260. package/dist/AssemblyManager/AssemblyManager.test.js +0 -113
  261. package/dist/HierarchicalTrackSelectorWidget/components/HierarchicalTrackSelector.test.js +0 -191
  262. package/dist/HierarchicalTrackSelectorWidget/model.test.js +0 -28
  263. package/dist/PluginStoreWidget/components/PluginStoreWidget.test.js +0 -201
  264. package/dist/PluginStoreWidget/model.test.js +0 -17
  265. package/dist/SetDefaultSession/SetDefaultSession.test.js +0 -75
  266. package/dist/index.test.js +0 -56
  267. package/src/AddTrackWidget/components/__snapshots__/AddTrackWidget.test.js.snap +0 -350
@@ -0,0 +1,284 @@
1
+ import React, { useState } from 'react'
2
+ import {
3
+ Checkbox,
4
+ FormControlLabel,
5
+ IconButton,
6
+ Tooltip,
7
+ Typography,
8
+ } from '@mui/material'
9
+ import { makeStyles } from 'tss-react/mui'
10
+
11
+ // icons
12
+ import ArrowDropDownIcon from '@mui/icons-material/ArrowDropDown'
13
+ import ArrowRightIcon from '@mui/icons-material/ArrowRight'
14
+ import MoreHorizIcon from '@mui/icons-material/MoreHoriz'
15
+
16
+ // other
17
+ import { HierarchicalTrackSelectorModel, TreeNode } from '../model'
18
+ import JBrowseMenu from '@jbrowse/core/ui/Menu'
19
+ import { getSession } from '@jbrowse/core/util'
20
+
21
+ import {
22
+ AnyConfigurationModel,
23
+ readConfObject,
24
+ } from '@jbrowse/core/configuration'
25
+ import { getAllChildren } from './util'
26
+
27
+ const useStyles = makeStyles()(theme => ({
28
+ compactCheckbox: {
29
+ padding: 0,
30
+ },
31
+
32
+ checkboxLabel: {
33
+ marginRight: 0,
34
+ '&:hover': {
35
+ backgroundColor: '#eee',
36
+ },
37
+ },
38
+
39
+ contrastColor: {
40
+ color: theme.palette.secondary.contrastText,
41
+ },
42
+
43
+ // this accordionBase element's small padding is used to give a margin to
44
+ // accordionColor it a "margin" because the virtualized elements can't really
45
+ // use margin in a conventional way (it doesn't affect layout)
46
+ accordionBase: {
47
+ display: 'flex',
48
+ },
49
+
50
+ accordionCard: {
51
+ padding: 3,
52
+ cursor: 'pointer',
53
+ display: 'flex',
54
+ },
55
+
56
+ nestingLevelMarker: {
57
+ position: 'absolute',
58
+ borderLeft: '1.5px solid #555',
59
+ },
60
+ // accordionColor set's display:flex so that the child accordionText use
61
+ // vertically centered text
62
+ accordionColor: {
63
+ // @ts-ignore
64
+ background: theme.palette.tertiary?.main,
65
+ // @ts-ignore
66
+ color: theme.palette.tertiary?.contrastText,
67
+ width: '100%',
68
+ display: 'flex',
69
+ paddingLeft: 5,
70
+ },
71
+
72
+ // margin:auto 0 to center text vertically
73
+ accordionText: {
74
+ margin: 'auto 0',
75
+ },
76
+ }))
77
+
78
+ export interface InfoArgs {
79
+ target: HTMLElement
80
+ id: string
81
+ conf: AnyConfigurationModel
82
+ }
83
+
84
+ function treeToMap(tree: TreeNode, map = new Map<string, TreeNode>()) {
85
+ if (tree.id && tree.children.length) {
86
+ map.set(tree.id, tree)
87
+ }
88
+ for (let i = 0; i < tree.children.length; i++) {
89
+ const node = tree.children[i]
90
+ treeToMap(node, map)
91
+ }
92
+ return map
93
+ }
94
+
95
+ function isUnsupported(name = '') {
96
+ return name.endsWith('(Unsupported)') || name.endsWith('(Unknown)')
97
+ }
98
+
99
+ // An individual node in the track selector. Note: manually sets cursor:
100
+ // pointer improves usability for what can be clicked
101
+ export default function Node(props: {
102
+ data: {
103
+ nestingLevel: number
104
+ checked: boolean
105
+ conf: AnyConfigurationModel
106
+ drawerPosition: unknown
107
+ id: string
108
+ isLeaf: boolean
109
+ name: string
110
+ onChange: Function
111
+ toggleCollapse: (arg: string) => void
112
+ tree: TreeNode
113
+ selected: boolean
114
+ model: HierarchicalTrackSelectorModel
115
+ }
116
+ isOpen: boolean
117
+ style?: { height: number }
118
+ setOpen: (arg: boolean) => void
119
+ }) {
120
+ const { data, isOpen, style, setOpen } = props
121
+ const {
122
+ checked,
123
+ conf,
124
+ drawerPosition,
125
+ id,
126
+ isLeaf,
127
+ model,
128
+ name,
129
+ nestingLevel,
130
+ onChange,
131
+ selected,
132
+ toggleCollapse,
133
+ tree,
134
+ } = data
135
+
136
+ const { classes } = useStyles()
137
+ const width = 10
138
+ const [menuEl, setMenuEl] = useState<HTMLElement | null>(null)
139
+ const [info, setInfo] = useState<InfoArgs>()
140
+ const marginLeft = nestingLevel * width + (isLeaf ? width : 0)
141
+ const description = (conf && readConfObject(conf, ['description'])) || ''
142
+
143
+ return (
144
+ <div style={style} className={!isLeaf ? classes.accordionBase : undefined}>
145
+ {new Array(nestingLevel).fill(0).map((_, idx) => (
146
+ <div
147
+ key={`mark-${idx}`}
148
+ style={{ left: idx * width + 4, height: style?.height }}
149
+ className={classes.nestingLevelMarker}
150
+ />
151
+ ))}
152
+ <div
153
+ className={!isLeaf ? classes.accordionCard : undefined}
154
+ onClick={() => {
155
+ if (!menuEl) {
156
+ toggleCollapse(id)
157
+ setOpen(!isOpen)
158
+ }
159
+ }}
160
+ style={{
161
+ marginLeft,
162
+ whiteSpace: 'nowrap',
163
+ width: '100%',
164
+ }}
165
+ >
166
+ <div className={!isLeaf ? classes.accordionColor : undefined}>
167
+ {!isLeaf ? (
168
+ <div className={classes.accordionText}>
169
+ <Typography>
170
+ {isOpen ? <ArrowDropDownIcon /> : <ArrowRightIcon />}
171
+ {name}
172
+ <IconButton
173
+ onClick={event => {
174
+ setMenuEl(event.currentTarget)
175
+ event.stopPropagation()
176
+ }}
177
+ className={classes.contrastColor}
178
+ >
179
+ <MoreHorizIcon />
180
+ </IconButton>
181
+ </Typography>
182
+ </div>
183
+ ) : (
184
+ <>
185
+ <Tooltip
186
+ title={description + (selected ? ' (in selection)' : '')}
187
+ placement={drawerPosition === 'left' ? 'right' : 'left'}
188
+ >
189
+ <FormControlLabel
190
+ className={classes.checkboxLabel}
191
+ control={
192
+ <Checkbox
193
+ className={classes.compactCheckbox}
194
+ checked={checked}
195
+ onChange={() => onChange(id)}
196
+ disabled={isUnsupported(name)}
197
+ inputProps={{
198
+ // @ts-ignore
199
+ 'data-testid': `htsTrackEntry-${id}`,
200
+ }}
201
+ />
202
+ }
203
+ label={
204
+ <div
205
+ style={{
206
+ background: selected ? '#cccc' : undefined,
207
+ padding: 1,
208
+ }}
209
+ >
210
+ {name}
211
+ </div>
212
+ }
213
+ />
214
+ </Tooltip>
215
+ <IconButton
216
+ onClick={e => setInfo({ target: e.currentTarget, id, conf })}
217
+ style={{ padding: 0 }}
218
+ color="secondary"
219
+ data-testid={`htsTrackEntryMenu-${id}`}
220
+ >
221
+ <MoreHorizIcon />
222
+ </IconButton>
223
+ </>
224
+ )}
225
+ {menuEl ? (
226
+ <JBrowseMenu
227
+ anchorEl={menuEl}
228
+ menuItems={[
229
+ {
230
+ label: 'Add to selection',
231
+ onClick: () =>
232
+ model.addToSelection(
233
+ getAllChildren(treeToMap(tree).get(id)),
234
+ ),
235
+ },
236
+ {
237
+ label: 'Remove from selection',
238
+ onClick: () =>
239
+ model.removeFromSelection(
240
+ getAllChildren(treeToMap(tree).get(id)),
241
+ ),
242
+ },
243
+ ]}
244
+ onMenuItemClick={(_event, callback) => {
245
+ callback()
246
+ setMenuEl(null)
247
+ }}
248
+ open={Boolean(menuEl)}
249
+ onClose={() => setMenuEl(null)}
250
+ />
251
+ ) : null}
252
+
253
+ {info ? (
254
+ <JBrowseMenu
255
+ anchorEl={info?.target}
256
+ menuItems={[
257
+ ...(getSession(model).getTrackActionMenuItems?.(info.conf) ||
258
+ []),
259
+ {
260
+ label: 'Add to selection',
261
+ onClick: () => model.addToSelection([info.conf]),
262
+ },
263
+ ...(selected
264
+ ? [
265
+ {
266
+ label: 'Remove from selection',
267
+ onClick: () => model.removeFromSelection([info.conf]),
268
+ },
269
+ ]
270
+ : []),
271
+ ]}
272
+ onMenuItemClick={(_event, callback) => {
273
+ callback()
274
+ setInfo(undefined)
275
+ }}
276
+ open={Boolean(info)}
277
+ onClose={() => setInfo(undefined)}
278
+ />
279
+ ) : null}
280
+ </div>
281
+ </div>
282
+ </div>
283
+ )
284
+ }
@@ -1,17 +1,17 @@
1
1
  import React from 'react'
2
2
  import {
3
+ Button,
4
+ Checkbox,
3
5
  Dialog,
4
6
  DialogTitle,
5
7
  DialogContent,
6
8
  DialogActions,
7
- Button,
8
9
  FormControlLabel,
9
- Checkbox,
10
10
  IconButton,
11
11
  Typography,
12
- makeStyles,
13
- } from '@material-ui/core'
14
- import CloseIcon from '@material-ui/icons/Close'
12
+ } from '@mui/material'
13
+ import { makeStyles } from 'tss-react/mui'
14
+ import CloseIcon from '@mui/icons-material/Close'
15
15
  import { observer } from 'mobx-react'
16
16
  import {
17
17
  AnyConfigurationModel,
@@ -19,7 +19,7 @@ import {
19
19
  } from '@jbrowse/core/configuration'
20
20
  import { AbstractSessionModel } from '@jbrowse/core/util'
21
21
 
22
- const useStyles = makeStyles(theme => ({
22
+ const useStyles = makeStyles()(theme => ({
23
23
  closeButton: {
24
24
  position: 'absolute',
25
25
  right: theme.spacing(1),
@@ -44,7 +44,7 @@ function ToggleConnectionDialog({
44
44
  assemblyName: string
45
45
  breakConnection: (arg: AnyConfigurationModel) => void
46
46
  }) {
47
- const classes = useStyles()
47
+ const { classes } = useStyles()
48
48
  const { connections, connectionInstances: instances = [] } = session
49
49
  const assemblySpecificConnections = connections.filter(c => {
50
50
  const configAssemblyNames = readConfObject(c, 'assemblyNames')
@@ -2,26 +2,23 @@
2
2
 
3
3
  exports[`HierarchicalTrackSelector widget renders nothing with no assembly 1`] = `
4
4
  <button
5
- class="MuiButtonBase-root MuiFab-root makeStyles-fab MuiFab-secondary"
5
+ class="MuiButtonBase-root MuiFab-root MuiFab-circular MuiFab-sizeLarge MuiFab-secondary tss-jdumxy-fab css-kznubb-MuiButtonBase-root-MuiFab-root"
6
6
  tabindex="0"
7
7
  type="button"
8
8
  >
9
- <span
10
- class="MuiFab-label"
9
+ <svg
10
+ aria-hidden="true"
11
+ class="MuiSvgIcon-root MuiSvgIcon-fontSizeMedium css-i4bv87-MuiSvgIcon-root"
12
+ data-testid="AddIcon"
13
+ focusable="false"
14
+ viewBox="0 0 24 24"
11
15
  >
12
- <svg
13
- aria-hidden="true"
14
- class="MuiSvgIcon-root"
15
- focusable="false"
16
- viewBox="0 0 24 24"
17
- >
18
- <path
19
- d="M19 13h-6v6h-2v-6H5v-2h6V5h2v6h6v2z"
20
- />
21
- </svg>
22
- </span>
16
+ <path
17
+ d="M19 13h-6v6h-2v-6H5v-2h6V5h2v6h6v2z"
18
+ />
19
+ </svg>
23
20
  <span
24
- class="MuiTouchRipple-root"
21
+ class="MuiTouchRipple-root css-8je8zh-MuiTouchRipple-root"
25
22
  />
26
23
  </button>
27
24
  `;
@@ -34,96 +31,101 @@ exports[`HierarchicalTrackSelector widget renders with a couple of categorized t
34
31
  style="display: flex;"
35
32
  >
36
33
  <button
37
- class="MuiButtonBase-root MuiIconButton-root makeStyles-menuIcon"
34
+ class="MuiButtonBase-root MuiIconButton-root MuiIconButton-sizeMedium tss-1imaff4-menuIcon css-78trlr-MuiButtonBase-root-MuiIconButton-root"
38
35
  tabindex="0"
39
36
  type="button"
40
37
  >
41
- <span
42
- class="MuiIconButton-label"
38
+ <svg
39
+ aria-hidden="true"
40
+ class="MuiSvgIcon-root MuiSvgIcon-fontSizeMedium css-i4bv87-MuiSvgIcon-root"
41
+ data-testid="MenuIcon"
42
+ focusable="false"
43
+ viewBox="0 0 24 24"
43
44
  >
44
- <svg
45
- aria-hidden="true"
46
- class="MuiSvgIcon-root"
47
- focusable="false"
48
- viewBox="0 0 24 24"
49
- >
50
- <path
51
- d="M3 18h18v-2H3v2zm0-5h18v-2H3v2zm0-7v2h18V6H3z"
52
- />
53
- </svg>
54
- </span>
45
+ <path
46
+ d="M3 18h18v-2H3v2zm0-5h18v-2H3v2zm0-7v2h18V6H3z"
47
+ />
48
+ </svg>
55
49
  <span
56
- class="MuiTouchRipple-root"
50
+ class="MuiTouchRipple-root css-8je8zh-MuiTouchRipple-root"
57
51
  />
58
52
  </button>
59
53
  <button
60
- class="MuiButtonBase-root MuiIconButton-root makeStyles-menuIcon"
54
+ class="MuiButtonBase-root MuiIconButton-root MuiIconButton-sizeMedium tss-1imaff4-menuIcon css-78trlr-MuiButtonBase-root-MuiIconButton-root"
61
55
  tabindex="0"
62
56
  type="button"
63
57
  >
64
- <span
65
- class="MuiIconButton-label"
58
+ <svg
59
+ aria-hidden="true"
60
+ class="MuiSvgIcon-root MuiSvgIcon-fontSizeMedium css-i4bv87-MuiSvgIcon-root"
61
+ focusable="false"
62
+ viewBox="0 0 24 24"
66
63
  >
67
- <svg
68
- aria-hidden="true"
69
- class="MuiSvgIcon-root"
70
- focusable="false"
71
- viewBox="0 0 24 24"
72
- >
73
- <path
74
- d="M20 5V4c0-.55-.45-1-1-1h-2c-.55 0-1 .45-1 1v1h-1v4c0 .55.45 1 1 1h1v7c0 1.1-.9 2-2 2s-2-.9-2-2V7c0-2.21-1.79-4-4-4S5 4.79 5 7v7H4c-.55 0-1 .45-1 1v4h1v1c0 .55.45 1 1 1h2c.55 0 1-.45 1-1v-1h1v-4c0-.55-.45-1-1-1H7V7c0-1.1.9-2 2-2s2 .9 2 2v10c0 2.21 1.79 4 4 4s4-1.79 4-4v-7h1c.55 0 1-.45 1-1V5h-1z"
75
- />
76
- </svg>
77
- </span>
64
+ <path
65
+ d="M20 5V4c0-.55-.45-1-1-1h-2c-.55 0-1 .45-1 1v1h-1v4c0 .55.45 1 1 1h1v7c0 1.1-.9 2-2 2s-2-.9-2-2V7c0-2.21-1.79-4-4-4S5 4.79 5 7v7H4c-.55 0-1 .45-1 1v4h1v1c0 .55.45 1 1 1h2c.55 0 1-.45 1-1v-1h1v-4c0-.55-.45-1-1-1H7V7c0-1.1.9-2 2-2s2 .9 2 2v10c0 2.21 1.79 4 4 4s4-1.79 4-4v-7h1c.55 0 1-.45 1-1V5h-1z"
66
+ />
67
+ </svg>
78
68
  <span
79
- class="MuiTouchRipple-root"
69
+ class="MuiTouchRipple-root css-8je8zh-MuiTouchRipple-root"
80
70
  />
81
71
  </button>
82
72
  <div
83
- class="MuiFormControl-root MuiTextField-root makeStyles-searchBox MuiFormControl-fullWidth"
73
+ class="MuiFormControl-root MuiFormControl-fullWidth MuiTextField-root tss-11q958z-searchBox css-wb57ya-MuiFormControl-root-MuiTextField-root"
84
74
  >
85
75
  <label
86
- class="MuiFormLabel-root MuiInputLabel-root MuiInputLabel-formControl MuiInputLabel-animated"
76
+ class="MuiInputLabel-root MuiInputLabel-formControl MuiInputLabel-animated MuiInputLabel-outlined MuiFormLabel-root MuiFormLabel-colorPrimary css-14s5rfu-MuiFormLabel-root-MuiInputLabel-root"
87
77
  data-shrink="false"
78
+ for="mui-5"
79
+ id="mui-5-label"
88
80
  >
89
81
  Filter tracks
90
82
  </label>
91
83
  <div
92
- class="MuiInputBase-root MuiInput-root MuiInput-underline MuiInputBase-fullWidth MuiInput-fullWidth MuiInputBase-formControl MuiInput-formControl MuiInputBase-adornedEnd"
84
+ class="MuiOutlinedInput-root MuiInputBase-root MuiInputBase-colorPrimary MuiInputBase-fullWidth MuiInputBase-formControl MuiInputBase-adornedEnd css-154xyx0-MuiInputBase-root-MuiOutlinedInput-root"
93
85
  >
94
86
  <input
95
87
  aria-invalid="false"
96
- class="MuiInputBase-input MuiInput-input MuiInputBase-inputAdornedEnd"
88
+ class="MuiOutlinedInput-input MuiInputBase-input MuiInputBase-inputAdornedEnd css-nxo287-MuiInputBase-input-MuiOutlinedInput-input"
89
+ id="mui-5"
97
90
  type="text"
98
91
  value=""
99
92
  />
100
93
  <div
101
- class="MuiInputAdornment-root MuiInputAdornment-positionEnd"
94
+ class="MuiInputAdornment-root MuiInputAdornment-positionEnd MuiInputAdornment-outlined MuiInputAdornment-sizeMedium css-1laqsz7-MuiInputAdornment-root"
102
95
  >
103
96
  <button
104
- class="MuiButtonBase-root MuiIconButton-root MuiIconButton-colorSecondary"
97
+ class="MuiButtonBase-root MuiIconButton-root MuiIconButton-colorSecondary MuiIconButton-sizeMedium css-1gws2xf-MuiButtonBase-root-MuiIconButton-root"
105
98
  tabindex="0"
106
99
  type="button"
107
100
  >
108
- <span
109
- class="MuiIconButton-label"
101
+ <svg
102
+ aria-hidden="true"
103
+ class="MuiSvgIcon-root MuiSvgIcon-fontSizeMedium css-i4bv87-MuiSvgIcon-root"
104
+ data-testid="ClearIcon"
105
+ focusable="false"
106
+ viewBox="0 0 24 24"
110
107
  >
111
- <svg
112
- aria-hidden="true"
113
- class="MuiSvgIcon-root"
114
- focusable="false"
115
- viewBox="0 0 24 24"
116
- >
117
- <path
118
- d="M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"
119
- />
120
- </svg>
121
- </span>
108
+ <path
109
+ d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"
110
+ />
111
+ </svg>
122
112
  <span
123
- class="MuiTouchRipple-root"
113
+ class="MuiTouchRipple-root css-8je8zh-MuiTouchRipple-root"
124
114
  />
125
115
  </button>
126
116
  </div>
117
+ <fieldset
118
+ aria-hidden="true"
119
+ class="MuiOutlinedInput-notchedOutline css-1d3z3hw-MuiOutlinedInput-notchedOutline"
120
+ >
121
+ <legend
122
+ class="css-1ftyaf0"
123
+ >
124
+ <span>
125
+ Filter tracks
126
+ </span>
127
+ </legend>
128
+ </fieldset>
127
129
  </div>
128
130
  </div>
129
131
  </div>
@@ -138,96 +140,101 @@ exports[`HierarchicalTrackSelector widget renders with a couple of uncategorized
138
140
  style="display: flex;"
139
141
  >
140
142
  <button
141
- class="MuiButtonBase-root MuiIconButton-root makeStyles-menuIcon"
143
+ class="MuiButtonBase-root MuiIconButton-root MuiIconButton-sizeMedium tss-1imaff4-menuIcon css-78trlr-MuiButtonBase-root-MuiIconButton-root"
142
144
  tabindex="0"
143
145
  type="button"
144
146
  >
145
- <span
146
- class="MuiIconButton-label"
147
+ <svg
148
+ aria-hidden="true"
149
+ class="MuiSvgIcon-root MuiSvgIcon-fontSizeMedium css-i4bv87-MuiSvgIcon-root"
150
+ data-testid="MenuIcon"
151
+ focusable="false"
152
+ viewBox="0 0 24 24"
147
153
  >
148
- <svg
149
- aria-hidden="true"
150
- class="MuiSvgIcon-root"
151
- focusable="false"
152
- viewBox="0 0 24 24"
153
- >
154
- <path
155
- d="M3 18h18v-2H3v2zm0-5h18v-2H3v2zm0-7v2h18V6H3z"
156
- />
157
- </svg>
158
- </span>
154
+ <path
155
+ d="M3 18h18v-2H3v2zm0-5h18v-2H3v2zm0-7v2h18V6H3z"
156
+ />
157
+ </svg>
159
158
  <span
160
- class="MuiTouchRipple-root"
159
+ class="MuiTouchRipple-root css-8je8zh-MuiTouchRipple-root"
161
160
  />
162
161
  </button>
163
162
  <button
164
- class="MuiButtonBase-root MuiIconButton-root makeStyles-menuIcon"
163
+ class="MuiButtonBase-root MuiIconButton-root MuiIconButton-sizeMedium tss-1imaff4-menuIcon css-78trlr-MuiButtonBase-root-MuiIconButton-root"
165
164
  tabindex="0"
166
165
  type="button"
167
166
  >
168
- <span
169
- class="MuiIconButton-label"
167
+ <svg
168
+ aria-hidden="true"
169
+ class="MuiSvgIcon-root MuiSvgIcon-fontSizeMedium css-i4bv87-MuiSvgIcon-root"
170
+ focusable="false"
171
+ viewBox="0 0 24 24"
170
172
  >
171
- <svg
172
- aria-hidden="true"
173
- class="MuiSvgIcon-root"
174
- focusable="false"
175
- viewBox="0 0 24 24"
176
- >
177
- <path
178
- d="M20 5V4c0-.55-.45-1-1-1h-2c-.55 0-1 .45-1 1v1h-1v4c0 .55.45 1 1 1h1v7c0 1.1-.9 2-2 2s-2-.9-2-2V7c0-2.21-1.79-4-4-4S5 4.79 5 7v7H4c-.55 0-1 .45-1 1v4h1v1c0 .55.45 1 1 1h2c.55 0 1-.45 1-1v-1h1v-4c0-.55-.45-1-1-1H7V7c0-1.1.9-2 2-2s2 .9 2 2v10c0 2.21 1.79 4 4 4s4-1.79 4-4v-7h1c.55 0 1-.45 1-1V5h-1z"
179
- />
180
- </svg>
181
- </span>
173
+ <path
174
+ d="M20 5V4c0-.55-.45-1-1-1h-2c-.55 0-1 .45-1 1v1h-1v4c0 .55.45 1 1 1h1v7c0 1.1-.9 2-2 2s-2-.9-2-2V7c0-2.21-1.79-4-4-4S5 4.79 5 7v7H4c-.55 0-1 .45-1 1v4h1v1c0 .55.45 1 1 1h2c.55 0 1-.45 1-1v-1h1v-4c0-.55-.45-1-1-1H7V7c0-1.1.9-2 2-2s2 .9 2 2v10c0 2.21 1.79 4 4 4s4-1.79 4-4v-7h1c.55 0 1-.45 1-1V5h-1z"
175
+ />
176
+ </svg>
182
177
  <span
183
- class="MuiTouchRipple-root"
178
+ class="MuiTouchRipple-root css-8je8zh-MuiTouchRipple-root"
184
179
  />
185
180
  </button>
186
181
  <div
187
- class="MuiFormControl-root MuiTextField-root makeStyles-searchBox MuiFormControl-fullWidth"
182
+ class="MuiFormControl-root MuiFormControl-fullWidth MuiTextField-root tss-11q958z-searchBox css-wb57ya-MuiFormControl-root-MuiTextField-root"
188
183
  >
189
184
  <label
190
- class="MuiFormLabel-root MuiInputLabel-root MuiInputLabel-formControl MuiInputLabel-animated"
185
+ class="MuiInputLabel-root MuiInputLabel-formControl MuiInputLabel-animated MuiInputLabel-outlined MuiFormLabel-root MuiFormLabel-colorPrimary css-14s5rfu-MuiFormLabel-root-MuiInputLabel-root"
191
186
  data-shrink="false"
187
+ for="mui-1"
188
+ id="mui-1-label"
192
189
  >
193
190
  Filter tracks
194
191
  </label>
195
192
  <div
196
- class="MuiInputBase-root MuiInput-root MuiInput-underline MuiInputBase-fullWidth MuiInput-fullWidth MuiInputBase-formControl MuiInput-formControl MuiInputBase-adornedEnd"
193
+ class="MuiOutlinedInput-root MuiInputBase-root MuiInputBase-colorPrimary MuiInputBase-fullWidth MuiInputBase-formControl MuiInputBase-adornedEnd css-154xyx0-MuiInputBase-root-MuiOutlinedInput-root"
197
194
  >
198
195
  <input
199
196
  aria-invalid="false"
200
- class="MuiInputBase-input MuiInput-input MuiInputBase-inputAdornedEnd"
197
+ class="MuiOutlinedInput-input MuiInputBase-input MuiInputBase-inputAdornedEnd css-nxo287-MuiInputBase-input-MuiOutlinedInput-input"
198
+ id="mui-1"
201
199
  type="text"
202
200
  value=""
203
201
  />
204
202
  <div
205
- class="MuiInputAdornment-root MuiInputAdornment-positionEnd"
203
+ class="MuiInputAdornment-root MuiInputAdornment-positionEnd MuiInputAdornment-outlined MuiInputAdornment-sizeMedium css-1laqsz7-MuiInputAdornment-root"
206
204
  >
207
205
  <button
208
- class="MuiButtonBase-root MuiIconButton-root MuiIconButton-colorSecondary"
206
+ class="MuiButtonBase-root MuiIconButton-root MuiIconButton-colorSecondary MuiIconButton-sizeMedium css-1gws2xf-MuiButtonBase-root-MuiIconButton-root"
209
207
  tabindex="0"
210
208
  type="button"
211
209
  >
212
- <span
213
- class="MuiIconButton-label"
210
+ <svg
211
+ aria-hidden="true"
212
+ class="MuiSvgIcon-root MuiSvgIcon-fontSizeMedium css-i4bv87-MuiSvgIcon-root"
213
+ data-testid="ClearIcon"
214
+ focusable="false"
215
+ viewBox="0 0 24 24"
214
216
  >
215
- <svg
216
- aria-hidden="true"
217
- class="MuiSvgIcon-root"
218
- focusable="false"
219
- viewBox="0 0 24 24"
220
- >
221
- <path
222
- d="M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"
223
- />
224
- </svg>
225
- </span>
217
+ <path
218
+ d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"
219
+ />
220
+ </svg>
226
221
  <span
227
- class="MuiTouchRipple-root"
222
+ class="MuiTouchRipple-root css-8je8zh-MuiTouchRipple-root"
228
223
  />
229
224
  </button>
230
225
  </div>
226
+ <fieldset
227
+ aria-hidden="true"
228
+ class="MuiOutlinedInput-notchedOutline css-1d3z3hw-MuiOutlinedInput-notchedOutline"
229
+ >
230
+ <legend
231
+ class="css-1ftyaf0"
232
+ >
233
+ <span>
234
+ Filter tracks
235
+ </span>
236
+ </legend>
237
+ </fieldset>
231
238
  </div>
232
239
  </div>
233
240
  </div>
@@ -0,0 +1,11 @@
1
+ import { AnyConfigurationModel } from '@jbrowse/core/configuration'
2
+ import { TreeNode } from '../model'
3
+
4
+ export function getAllChildren(subtree?: TreeNode): AnyConfigurationModel[] {
5
+ // @ts-ignore
6
+ return (
7
+ subtree?.children.map(t =>
8
+ t.children.length ? getAllChildren(t) : (t.conf as AnyConfigurationModel),
9
+ ) || []
10
+ ).flat(Infinity)
11
+ }
@@ -0,0 +1,3 @@
1
+ import { ConfigurationSchema } from '@jbrowse/core/configuration'
2
+ const configSchema = ConfigurationSchema('HierarchicalTrackSelectorWidget', {})
3
+ export default configSchema