@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,45 @@
1
+ import React from 'react';
2
+ import { Button, Dialog, DialogTitle, DialogContent, DialogActions, IconButton, Tooltip, Typography, } from '@mui/material';
3
+ import { makeStyles } from 'tss-react/mui';
4
+ import CloseIcon from '@mui/icons-material/Close';
5
+ import { observer } from 'mobx-react';
6
+ import { readConfObject, } from '@jbrowse/core/configuration';
7
+ const useStyles = makeStyles()(theme => ({
8
+ closeButton: {
9
+ position: 'absolute',
10
+ right: theme.spacing(1),
11
+ top: theme.spacing(1),
12
+ color: theme.palette.grey[500],
13
+ },
14
+ connectionContainer: {
15
+ margin: theme.spacing(4),
16
+ width: 500,
17
+ },
18
+ }));
19
+ function ManageConnectionsDlg({ session, handleClose, breakConnection, }) {
20
+ const { classes } = useStyles();
21
+ const { adminMode, connections, sessionConnections } = session;
22
+ return (React.createElement(Dialog, { open: true, onClose: handleClose, maxWidth: "lg" },
23
+ React.createElement(DialogTitle, null,
24
+ "Delete connections",
25
+ React.createElement(IconButton, { className: classes.closeButton, onClick: () => handleClose() },
26
+ React.createElement(CloseIcon, null))),
27
+ React.createElement(DialogContent, null,
28
+ React.createElement(Typography, null, "Click the X icon to delete the connection from your config completely"),
29
+ React.createElement("div", { className: classes.connectionContainer },
30
+ connections.map(conf => {
31
+ const name = readConfObject(conf, 'name');
32
+ return (React.createElement("div", { key: `conn-${name}` },
33
+ React.createElement(Typography, null,
34
+ adminMode || (sessionConnections === null || sessionConnections === void 0 ? void 0 : sessionConnections.includes(conf)) ? (React.createElement(IconButton, { onClick: () => breakConnection(conf, true) },
35
+ React.createElement(CloseIcon, { color: "error" }))) : (React.createElement(Tooltip, { title: "Unable to delete connection in config file as non-admin user" },
36
+ React.createElement(IconButton, null,
37
+ React.createElement(CloseIcon, { color: "disabled" })))),
38
+ name)));
39
+ }),
40
+ !connections.length ? (React.createElement(Typography, null, "No connections found")) : null)),
41
+ React.createElement(DialogActions, null,
42
+ React.createElement(Button, { onClick: () => handleClose(), variant: "contained", color: "primary" }, "Close"))));
43
+ }
44
+ export default observer(ManageConnectionsDlg);
45
+ //# sourceMappingURL=ManageConnectionsDialog.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ManageConnectionsDialog.js","sourceRoot":"","sources":["../../../src/HierarchicalTrackSelectorWidget/components/ManageConnectionsDialog.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,EACL,MAAM,EACN,MAAM,EACN,WAAW,EACX,aAAa,EACb,aAAa,EACb,UAAU,EACV,OAAO,EACP,UAAU,GACX,MAAM,eAAe,CAAA;AACtB,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AAC1C,OAAO,SAAS,MAAM,2BAA2B,CAAA;AACjD,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AACrC,OAAO,EAEL,cAAc,GACf,MAAM,6BAA6B,CAAA;AAGpC,MAAM,SAAS,GAAG,UAAU,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IACvC,WAAW,EAAE;QACX,QAAQ,EAAE,UAAU;QACpB,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;QACvB,GAAG,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;QACrB,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC;KAC/B;IAED,mBAAmB,EAAE;QACnB,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;QACxB,KAAK,EAAE,GAAG;KACX;CACF,CAAC,CAAC,CAAA;AAEH,SAAS,oBAAoB,CAAC,EAC5B,OAAO,EACP,WAAW,EACX,eAAe,GAKhB;IACC,MAAM,EAAE,OAAO,EAAE,GAAG,SAAS,EAAE,CAAA;IAC/B,MAAM,EAAE,SAAS,EAAE,WAAW,EAAE,kBAAkB,EAAE,GAAG,OAAO,CAAA;IAC9D,OAAO,CACL,oBAAC,MAAM,IAAC,IAAI,QAAC,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAC,IAAI;QAC9C,oBAAC,WAAW;;YAEV,oBAAC,UAAU,IACT,SAAS,EAAE,OAAO,CAAC,WAAW,EAC9B,OAAO,EAAE,GAAG,EAAE,CAAC,WAAW,EAAE;gBAE5B,oBAAC,SAAS,OAAG,CACF,CACD;QACd,oBAAC,aAAa;YACZ,oBAAC,UAAU,gFAEE;YACb,6BAAK,SAAS,EAAE,OAAO,CAAC,mBAAmB;gBACxC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;oBACtB,MAAM,IAAI,GAAG,cAAc,CAAC,IAAI,EAAE,MAAM,CAAC,CAAA;oBACzC,OAAO,CACL,6BAAK,GAAG,EAAE,QAAQ,IAAI,EAAE;wBACtB,oBAAC,UAAU;4BACR,SAAS,KAAI,kBAAkB,aAAlB,kBAAkB,uBAAlB,kBAAkB,CAAE,QAAQ,CAAC,IAAI,CAAC,CAAA,CAAC,CAAC,CAAC,CACjD,oBAAC,UAAU,IAAC,OAAO,EAAE,GAAG,EAAE,CAAC,eAAe,CAAC,IAAI,EAAE,IAAI,CAAC;gCACpD,oBAAC,SAAS,IAAC,KAAK,EAAC,OAAO,GAAG,CAChB,CACd,CAAC,CAAC,CAAC,CACF,oBAAC,OAAO,IAAC,KAAK,EAAC,8DAA8D;gCAC3E,oBAAC,UAAU;oCACT,oBAAC,SAAS,IAAC,KAAK,EAAC,UAAU,GAAG,CACnB,CACL,CACX;4BACA,IAAI,CACM,CACT,CACP,CAAA;gBACH,CAAC,CAAC;gBACD,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,CACrB,oBAAC,UAAU,+BAAkC,CAC9C,CAAC,CAAC,CAAC,IAAI,CACJ,CACQ;QAChB,oBAAC,aAAa;YACZ,oBAAC,MAAM,IACL,OAAO,EAAE,GAAG,EAAE,CAAC,WAAW,EAAE,EAC5B,OAAO,EAAC,WAAW,EACnB,KAAK,EAAC,SAAS,YAGR,CACK,CACT,CACV,CAAA;AACH,CAAC;AAED,eAAe,QAAQ,CAAC,oBAAoB,CAAC,CAAA"}
@@ -0,0 +1,29 @@
1
+ /// <reference types="react" />
2
+ import { HierarchicalTrackSelectorModel, TreeNode } from '../model';
3
+ import { AnyConfigurationModel } from '@jbrowse/core/configuration';
4
+ export interface InfoArgs {
5
+ target: HTMLElement;
6
+ id: string;
7
+ conf: AnyConfigurationModel;
8
+ }
9
+ export default function Node(props: {
10
+ data: {
11
+ nestingLevel: number;
12
+ checked: boolean;
13
+ conf: AnyConfigurationModel;
14
+ drawerPosition: unknown;
15
+ id: string;
16
+ isLeaf: boolean;
17
+ name: string;
18
+ onChange: Function;
19
+ toggleCollapse: (arg: string) => void;
20
+ tree: TreeNode;
21
+ selected: boolean;
22
+ model: HierarchicalTrackSelectorModel;
23
+ };
24
+ isOpen: boolean;
25
+ style?: {
26
+ height: number;
27
+ };
28
+ setOpen: (arg: boolean) => void;
29
+ }): JSX.Element;
@@ -0,0 +1,149 @@
1
+ import React, { useState } from 'react';
2
+ import { Checkbox, FormControlLabel, IconButton, Tooltip, Typography, } from '@mui/material';
3
+ import { makeStyles } from 'tss-react/mui';
4
+ // icons
5
+ import ArrowDropDownIcon from '@mui/icons-material/ArrowDropDown';
6
+ import ArrowRightIcon from '@mui/icons-material/ArrowRight';
7
+ import MoreHorizIcon from '@mui/icons-material/MoreHoriz';
8
+ import JBrowseMenu from '@jbrowse/core/ui/Menu';
9
+ import { getSession } from '@jbrowse/core/util';
10
+ import { readConfObject, } from '@jbrowse/core/configuration';
11
+ import { getAllChildren } from './util';
12
+ const useStyles = makeStyles()(theme => {
13
+ var _a, _b;
14
+ return ({
15
+ compactCheckbox: {
16
+ padding: 0,
17
+ },
18
+ checkboxLabel: {
19
+ marginRight: 0,
20
+ '&:hover': {
21
+ backgroundColor: '#eee',
22
+ },
23
+ },
24
+ contrastColor: {
25
+ color: theme.palette.secondary.contrastText,
26
+ },
27
+ // this accordionBase element's small padding is used to give a margin to
28
+ // accordionColor it a "margin" because the virtualized elements can't really
29
+ // use margin in a conventional way (it doesn't affect layout)
30
+ accordionBase: {
31
+ display: 'flex',
32
+ },
33
+ accordionCard: {
34
+ padding: 3,
35
+ cursor: 'pointer',
36
+ display: 'flex',
37
+ },
38
+ nestingLevelMarker: {
39
+ position: 'absolute',
40
+ borderLeft: '1.5px solid #555',
41
+ },
42
+ // accordionColor set's display:flex so that the child accordionText use
43
+ // vertically centered text
44
+ accordionColor: {
45
+ // @ts-ignore
46
+ background: (_a = theme.palette.tertiary) === null || _a === void 0 ? void 0 : _a.main,
47
+ // @ts-ignore
48
+ color: (_b = theme.palette.tertiary) === null || _b === void 0 ? void 0 : _b.contrastText,
49
+ width: '100%',
50
+ display: 'flex',
51
+ paddingLeft: 5,
52
+ },
53
+ // margin:auto 0 to center text vertically
54
+ accordionText: {
55
+ margin: 'auto 0',
56
+ },
57
+ });
58
+ });
59
+ function treeToMap(tree, map = new Map()) {
60
+ if (tree.id && tree.children.length) {
61
+ map.set(tree.id, tree);
62
+ }
63
+ for (let i = 0; i < tree.children.length; i++) {
64
+ const node = tree.children[i];
65
+ treeToMap(node, map);
66
+ }
67
+ return map;
68
+ }
69
+ function isUnsupported(name = '') {
70
+ return name.endsWith('(Unsupported)') || name.endsWith('(Unknown)');
71
+ }
72
+ // An individual node in the track selector. Note: manually sets cursor:
73
+ // pointer improves usability for what can be clicked
74
+ export default function Node(props) {
75
+ var _a, _b;
76
+ const { data, isOpen, style, setOpen } = props;
77
+ const { checked, conf, drawerPosition, id, isLeaf, model, name, nestingLevel, onChange, selected, toggleCollapse, tree, } = data;
78
+ const { classes } = useStyles();
79
+ const width = 10;
80
+ const [menuEl, setMenuEl] = useState(null);
81
+ const [info, setInfo] = useState();
82
+ const marginLeft = nestingLevel * width + (isLeaf ? width : 0);
83
+ const description = (conf && readConfObject(conf, ['description'])) || '';
84
+ return (React.createElement("div", { style: style, className: !isLeaf ? classes.accordionBase : undefined },
85
+ new Array(nestingLevel).fill(0).map((_, idx) => (React.createElement("div", { key: `mark-${idx}`, style: { left: idx * width + 4, height: style === null || style === void 0 ? void 0 : style.height }, className: classes.nestingLevelMarker }))),
86
+ React.createElement("div", { className: !isLeaf ? classes.accordionCard : undefined, onClick: () => {
87
+ if (!menuEl) {
88
+ toggleCollapse(id);
89
+ setOpen(!isOpen);
90
+ }
91
+ }, style: {
92
+ marginLeft,
93
+ whiteSpace: 'nowrap',
94
+ width: '100%',
95
+ } },
96
+ React.createElement("div", { className: !isLeaf ? classes.accordionColor : undefined },
97
+ !isLeaf ? (React.createElement("div", { className: classes.accordionText },
98
+ React.createElement(Typography, null,
99
+ isOpen ? React.createElement(ArrowDropDownIcon, null) : React.createElement(ArrowRightIcon, null),
100
+ name,
101
+ React.createElement(IconButton, { onClick: event => {
102
+ setMenuEl(event.currentTarget);
103
+ event.stopPropagation();
104
+ }, className: classes.contrastColor },
105
+ React.createElement(MoreHorizIcon, null))))) : (React.createElement(React.Fragment, null,
106
+ React.createElement(Tooltip, { title: description + (selected ? ' (in selection)' : ''), placement: drawerPosition === 'left' ? 'right' : 'left' },
107
+ React.createElement(FormControlLabel, { className: classes.checkboxLabel, control: React.createElement(Checkbox, { className: classes.compactCheckbox, checked: checked, onChange: () => onChange(id), disabled: isUnsupported(name), inputProps: {
108
+ // @ts-ignore
109
+ 'data-testid': `htsTrackEntry-${id}`,
110
+ } }), label: React.createElement("div", { style: {
111
+ background: selected ? '#cccc' : undefined,
112
+ padding: 1,
113
+ } }, name) })),
114
+ React.createElement(IconButton, { onClick: e => setInfo({ target: e.currentTarget, id, conf }), style: { padding: 0 }, color: "secondary", "data-testid": `htsTrackEntryMenu-${id}` },
115
+ React.createElement(MoreHorizIcon, null)))),
116
+ menuEl ? (React.createElement(JBrowseMenu, { anchorEl: menuEl, menuItems: [
117
+ {
118
+ label: 'Add to selection',
119
+ onClick: () => model.addToSelection(getAllChildren(treeToMap(tree).get(id))),
120
+ },
121
+ {
122
+ label: 'Remove from selection',
123
+ onClick: () => model.removeFromSelection(getAllChildren(treeToMap(tree).get(id))),
124
+ },
125
+ ], onMenuItemClick: (_event, callback) => {
126
+ callback();
127
+ setMenuEl(null);
128
+ }, open: Boolean(menuEl), onClose: () => setMenuEl(null) })) : null,
129
+ info ? (React.createElement(JBrowseMenu, { anchorEl: info === null || info === void 0 ? void 0 : info.target, menuItems: [
130
+ ...(((_b = (_a = getSession(model)).getTrackActionMenuItems) === null || _b === void 0 ? void 0 : _b.call(_a, info.conf)) ||
131
+ []),
132
+ {
133
+ label: 'Add to selection',
134
+ onClick: () => model.addToSelection([info.conf]),
135
+ },
136
+ ...(selected
137
+ ? [
138
+ {
139
+ label: 'Remove from selection',
140
+ onClick: () => model.removeFromSelection([info.conf]),
141
+ },
142
+ ]
143
+ : []),
144
+ ], onMenuItemClick: (_event, callback) => {
145
+ callback();
146
+ setInfo(undefined);
147
+ }, open: Boolean(info), onClose: () => setInfo(undefined) })) : null))));
148
+ }
149
+ //# sourceMappingURL=Node.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Node.js","sourceRoot":"","sources":["../../../src/HierarchicalTrackSelectorWidget/components/Node.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ /// <reference types="react" />
2
+ import { AnyConfigurationModel } from '@jbrowse/core/configuration';
3
+ import { AbstractSessionModel } from '@jbrowse/core/util';
4
+ declare function ToggleConnectionDialog({ session, handleClose, assemblyName, breakConnection, }: {
5
+ handleClose: () => void;
6
+ session: AbstractSessionModel;
7
+ assemblyName: string;
8
+ breakConnection: (arg: AnyConfigurationModel) => void;
9
+ }): JSX.Element;
10
+ declare const _default: typeof ToggleConnectionDialog;
11
+ export default _default;
@@ -0,0 +1,57 @@
1
+ import React from 'react';
2
+ import { Button, Checkbox, Dialog, DialogTitle, DialogContent, DialogActions, FormControlLabel, IconButton, Typography, } from '@mui/material';
3
+ import { makeStyles } from 'tss-react/mui';
4
+ import CloseIcon from '@mui/icons-material/Close';
5
+ import { observer } from 'mobx-react';
6
+ import { readConfObject, } from '@jbrowse/core/configuration';
7
+ const useStyles = makeStyles()(theme => ({
8
+ closeButton: {
9
+ position: 'absolute',
10
+ right: theme.spacing(1),
11
+ top: theme.spacing(1),
12
+ color: theme.palette.grey[500],
13
+ },
14
+ connectionContainer: {
15
+ width: 500,
16
+ margin: theme.spacing(4),
17
+ },
18
+ }));
19
+ function ToggleConnectionDialog({ session, handleClose, assemblyName, breakConnection, }) {
20
+ const { classes } = useStyles();
21
+ const { connections, connectionInstances: instances = [] } = session;
22
+ const assemblySpecificConnections = connections.filter(c => {
23
+ const configAssemblyNames = readConfObject(c, 'assemblyNames');
24
+ if (configAssemblyNames.length === 0) {
25
+ return true;
26
+ }
27
+ return configAssemblyNames.includes(assemblyName);
28
+ });
29
+ return (React.createElement(Dialog, { open: true, onClose: handleClose, maxWidth: "lg" },
30
+ React.createElement(DialogTitle, null,
31
+ "Turn on/off connections",
32
+ React.createElement(IconButton, { className: classes.closeButton, onClick: () => handleClose() },
33
+ React.createElement(CloseIcon, null))),
34
+ React.createElement(DialogContent, null,
35
+ React.createElement(Typography, null, "Use the checkbox to turn on/off connections"),
36
+ React.createElement("div", { className: classes.connectionContainer },
37
+ assemblySpecificConnections.map(conf => {
38
+ const name = readConfObject(conf, 'name');
39
+ const found = instances.find(conn => name === conn.name);
40
+ return (React.createElement(FormControlLabel, { key: conf.connectionId, control: React.createElement(Checkbox, { checked: !!found, onChange: () => {
41
+ var _a;
42
+ if (found) {
43
+ breakConnection(conf);
44
+ }
45
+ else {
46
+ (_a = session.makeConnection) === null || _a === void 0 ? void 0 : _a.call(session, conf);
47
+ }
48
+ }, color: "primary" }), label: name }));
49
+ }),
50
+ !assemblySpecificConnections.length ? (React.createElement(Typography, null,
51
+ "No connections found for ",
52
+ assemblyName)) : null)),
53
+ React.createElement(DialogActions, null,
54
+ React.createElement(Button, { onClick: () => handleClose(), variant: "contained", color: "primary" }, "Close"))));
55
+ }
56
+ export default observer(ToggleConnectionDialog);
57
+ //# sourceMappingURL=ToggleConnectionsDialog.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ToggleConnectionsDialog.js","sourceRoot":"","sources":["../../../src/HierarchicalTrackSelectorWidget/components/ToggleConnectionsDialog.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { AnyConfigurationModel } from '@jbrowse/core/configuration';
2
+ import { TreeNode } from '../model';
3
+ export declare function getAllChildren(subtree?: TreeNode): AnyConfigurationModel[];
@@ -0,0 +1,5 @@
1
+ export function getAllChildren(subtree) {
2
+ // @ts-ignore
3
+ return ((subtree === null || subtree === void 0 ? void 0 : subtree.children.map(t => t.children.length ? getAllChildren(t) : t.conf)) || []).flat(Infinity);
4
+ }
5
+ //# sourceMappingURL=util.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"util.js","sourceRoot":"","sources":["../../../src/HierarchicalTrackSelectorWidget/components/util.ts"],"names":[],"mappings":"AAGA,MAAM,UAAU,cAAc,CAAC,OAAkB;IAC/C,aAAa;IACb,OAAO,CACL,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CACxB,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAE,CAAC,CAAC,IAA8B,CAC1E,KAAI,EAAE,CACR,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;AAClB,CAAC"}
@@ -0,0 +1,2 @@
1
+ declare const configSchema: import("@jbrowse/core/configuration").AnyConfigurationSchemaType;
2
+ export default configSchema;
@@ -0,0 +1,4 @@
1
+ import { ConfigurationSchema } from '@jbrowse/core/configuration';
2
+ const configSchema = ConfigurationSchema('HierarchicalTrackSelectorWidget', {});
3
+ export default configSchema;
4
+ //# sourceMappingURL=configSchema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"configSchema.js","sourceRoot":"","sources":["../../src/HierarchicalTrackSelectorWidget/configSchema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAA;AACjE,MAAM,YAAY,GAAG,mBAAmB,CAAC,iCAAiC,EAAE,EAAE,CAAC,CAAA;AAC/E,eAAe,YAAY,CAAA"}
@@ -0,0 +1,4 @@
1
+ import stateModelFactory, { HierarchicalTrackSelectorModel } from './model';
2
+ import configSchema from './configSchema';
3
+ export { stateModelFactory, configSchema };
4
+ export type { HierarchicalTrackSelectorModel };
@@ -0,0 +1,4 @@
1
+ import stateModelFactory from './model';
2
+ import configSchema from './configSchema';
3
+ export { stateModelFactory, configSchema };
4
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/HierarchicalTrackSelectorWidget/index.ts"],"names":[],"mappings":"AAAA,OAAO,iBAAqD,MAAM,SAAS,CAAA;AAC3E,OAAO,YAAY,MAAM,gBAAgB,CAAA;AAEzC,OAAO,EAAE,iBAAiB,EAAE,YAAY,EAAE,CAAA"}
@@ -0,0 +1,69 @@
1
+ import { Instance } from 'mobx-state-tree';
2
+ import { AnyConfigurationModel } from '@jbrowse/core/configuration';
3
+ import PluginManager from '@jbrowse/core/PluginManager';
4
+ export declare type TreeNode = {
5
+ name: string;
6
+ id: string;
7
+ conf?: AnyConfigurationModel;
8
+ checked?: boolean;
9
+ isOpenByDefault?: boolean;
10
+ children: TreeNode[];
11
+ };
12
+ export declare function generateHierarchy(model: HierarchicalTrackSelectorModel, trackConfigurations: AnyConfigurationModel[], collapsed: {
13
+ get: (arg: string) => boolean | undefined;
14
+ }): TreeNode[];
15
+ export default function stateTreeFactory(pluginManager: PluginManager): import("mobx-state-tree").IModelType<{
16
+ id: import("mobx-state-tree").IOptionalIType<import("mobx-state-tree").ISimpleType<string>, [undefined]>;
17
+ type: import("mobx-state-tree").ISimpleType<"HierarchicalTrackSelectorWidget">;
18
+ collapsed: import("mobx-state-tree").IMapType<import("mobx-state-tree").ISimpleType<boolean>>;
19
+ filterText: import("mobx-state-tree").IType<string | undefined, string, string>;
20
+ view: import("mobx-state-tree").IMaybe<import("mobx-state-tree").IReferenceType<import("mobx-state-tree").IAnyType>>;
21
+ }, {
22
+ selection: ({
23
+ [x: string]: any;
24
+ } & import("mobx-state-tree/dist/internal").NonEmptyObject & {
25
+ setSubschema(slotName: string, data: unknown): any;
26
+ } & import("mobx-state-tree").IStateTreeNode<import("@jbrowse/core/configuration").AnyConfigurationSchemaType>)[];
27
+ } & {
28
+ addToSelection(elt: AnyConfigurationModel[]): void;
29
+ removeFromSelection(elt: AnyConfigurationModel[]): void;
30
+ clearSelection(): void;
31
+ setView(view: unknown): void;
32
+ toggleCategory(pathName: string): void;
33
+ clearFilterText(): void;
34
+ setFilterText(newText: string): void;
35
+ } & {
36
+ getRefSeqTrackConf(assemblyName: string): any;
37
+ } & {
38
+ trackConfigurations(assemblyName: string): any[];
39
+ readonly assemblyNames: string[];
40
+ connectionTrackConfigurations(assemblyName: string, connection: {
41
+ tracks: AnyConfigurationModel[];
42
+ }): ({
43
+ [x: string]: any;
44
+ } & import("mobx-state-tree/dist/internal").NonEmptyObject & {
45
+ setSubschema(slotName: string, data: unknown): any;
46
+ } & import("mobx-state-tree").IStateTreeNode<import("@jbrowse/core/configuration").AnyConfigurationSchemaType>)[];
47
+ } & {
48
+ hierarchy(assemblyName: string): {
49
+ name: string;
50
+ id: string;
51
+ children: ({
52
+ id: any;
53
+ name: any;
54
+ children: TreeNode[];
55
+ state: {
56
+ expanded: boolean;
57
+ };
58
+ } | {
59
+ name: string;
60
+ id: string;
61
+ children: TreeNode[];
62
+ })[];
63
+ };
64
+ connectionHierarchy(assemblyName: string, connection: {
65
+ tracks: AnyConfigurationModel[];
66
+ }): TreeNode[];
67
+ }, import("mobx-state-tree")._NotCustomized, import("mobx-state-tree")._NotCustomized>;
68
+ export declare type HierarchicalTrackSelectorStateModel = ReturnType<typeof stateTreeFactory>;
69
+ export declare type HierarchicalTrackSelectorModel = Instance<HierarchicalTrackSelectorStateModel>;
@@ -0,0 +1,204 @@
1
+ import { types, getParent, getEnv } from 'mobx-state-tree';
2
+ import { getConf, readConfObject, } from '@jbrowse/core/configuration';
3
+ import { getSession } from '@jbrowse/core/util';
4
+ import { ElementId } from '@jbrowse/core/util/types/mst';
5
+ function hasAnyOverlap(a1 = [], a2 = []) {
6
+ return !!a1.find(value => a2.includes(value));
7
+ }
8
+ function passesFilter(filter, config) {
9
+ const categories = readConfObject(config, 'category');
10
+ const filterLower = filter.toLowerCase();
11
+ return (getTrackName(config).toLowerCase().includes(filterLower) ||
12
+ !!(categories === null || categories === void 0 ? void 0 : categories.filter(c => c.toLowerCase().includes(filterLower)).length));
13
+ }
14
+ function getTrackName(config) {
15
+ if (!config.trackId) {
16
+ throw new Error('not a track');
17
+ }
18
+ return (readConfObject(config, 'name') ||
19
+ `Reference sequence (${readConfObject(getParent(config), 'name')})`);
20
+ }
21
+ function filterTracks(tracks, self, assemblyName) {
22
+ const { assemblyManager } = getSession(self);
23
+ const { pluginManager } = getEnv(self);
24
+ const assembly = assemblyManager.get(assemblyName);
25
+ if (!assembly) {
26
+ return [];
27
+ }
28
+ return tracks
29
+ .filter(c => {
30
+ const trackConfAssemblies = readConfObject(c, 'assemblyNames');
31
+ const { allAliases } = assembly;
32
+ return hasAnyOverlap(allAliases, trackConfAssemblies);
33
+ })
34
+ .filter(c => {
35
+ const { displayTypes } = pluginManager.getViewType(self.view.type);
36
+ const compatDisplays = displayTypes.map((d) => d.name);
37
+ const trackDisplays = c.displays.map((d) => d.type);
38
+ return hasAnyOverlap(compatDisplays, trackDisplays);
39
+ });
40
+ }
41
+ export function generateHierarchy(model, trackConfigurations, collapsed) {
42
+ const hierarchy = { children: [] };
43
+ const { filterText, view } = model;
44
+ trackConfigurations
45
+ .filter(conf => passesFilter(filterText, conf))
46
+ .forEach(conf => {
47
+ // copy the categories since this array can be mutated downstream
48
+ const categories = [...(readConfObject(conf, 'category') || [])];
49
+ // silly thing where if trackId ends with sessionTrack, then push it to
50
+ // a category that starts with a space to force sort to the top...
51
+ // double whammy hackyness
52
+ if (conf.trackId.endsWith('sessionTrack')) {
53
+ categories.unshift(' Session tracks');
54
+ }
55
+ let currLevel = hierarchy;
56
+ // find existing category to put track into or create it
57
+ for (let i = 0; i < categories.length; i++) {
58
+ const category = categories[i];
59
+ const ret = currLevel.children.find(c => c.name === category);
60
+ const id = categories.slice(0, i + 1).join(',');
61
+ if (!ret) {
62
+ const n = {
63
+ children: [],
64
+ name: category,
65
+ id,
66
+ isOpenByDefault: !collapsed.get(id),
67
+ };
68
+ currLevel.children.push(n);
69
+ currLevel = n;
70
+ }
71
+ else {
72
+ currLevel = ret;
73
+ }
74
+ }
75
+ const tracks = view.tracks;
76
+ // using splice here tries to group leaf nodes above hierarchical nodes
77
+ currLevel.children.splice(currLevel.children.findIndex(elt => elt.children.length), 0, {
78
+ id: conf.trackId,
79
+ name: getTrackName(conf),
80
+ conf,
81
+ checked: !!tracks.find(f => f.configuration === conf),
82
+ children: [],
83
+ });
84
+ });
85
+ return hierarchy.children;
86
+ }
87
+ export default function stateTreeFactory(pluginManager) {
88
+ return types
89
+ .model('HierarchicalTrackSelectorWidget', {
90
+ id: ElementId,
91
+ type: types.literal('HierarchicalTrackSelectorWidget'),
92
+ collapsed: types.map(types.boolean),
93
+ filterText: '',
94
+ view: types.safeReference(pluginManager.pluggableMstType('view', 'stateModel')),
95
+ })
96
+ .volatile(() => ({
97
+ selection: [],
98
+ }))
99
+ .actions(self => ({
100
+ addToSelection(elt) {
101
+ self.selection = [...self.selection, ...elt];
102
+ },
103
+ removeFromSelection(elt) {
104
+ self.selection = self.selection.filter(f => !elt.includes(f));
105
+ },
106
+ clearSelection() {
107
+ self.selection = [];
108
+ },
109
+ setView(view) {
110
+ self.view = view;
111
+ },
112
+ toggleCategory(pathName) {
113
+ self.collapsed.set(pathName, !self.collapsed.get(pathName));
114
+ },
115
+ clearFilterText() {
116
+ self.filterText = '';
117
+ },
118
+ setFilterText(newText) {
119
+ self.filterText = newText;
120
+ },
121
+ }))
122
+ .views(self => ({
123
+ getRefSeqTrackConf(assemblyName) {
124
+ const { assemblyManager } = getSession(self);
125
+ const assembly = assemblyManager.get(assemblyName);
126
+ const trackConf = assembly === null || assembly === void 0 ? void 0 : assembly.configuration.sequence;
127
+ const viewType = pluginManager.getViewType(self.view.type);
128
+ if (!trackConf) {
129
+ return undefined;
130
+ }
131
+ for (const display of trackConf.displays) {
132
+ if (viewType.displayTypes.find(d => d.name === display.type)) {
133
+ return trackConf;
134
+ }
135
+ }
136
+ },
137
+ }))
138
+ .views(self => ({
139
+ trackConfigurations(assemblyName) {
140
+ if (!self.view) {
141
+ return [];
142
+ }
143
+ const { tracks, assemblyManager } = getSession(self);
144
+ const assembly = assemblyManager.get(assemblyName);
145
+ if (!assembly) {
146
+ return [];
147
+ }
148
+ const refseq = self.getRefSeqTrackConf(assemblyName);
149
+ // filter out tracks that don't match the current assembly (check all
150
+ // assembly aliases) and display types
151
+ return (refseq ? [refseq] : []).concat([
152
+ ...filterTracks(tracks, self, assemblyName),
153
+ ]);
154
+ },
155
+ get assemblyNames() {
156
+ var _a;
157
+ return ((_a = self.view) === null || _a === void 0 ? void 0 : _a.assemblyNames) || [];
158
+ },
159
+ connectionTrackConfigurations(assemblyName, connection) {
160
+ if (!self.view) {
161
+ return [];
162
+ }
163
+ // filter out tracks that don't match the current display types
164
+ return filterTracks(connection.tracks, self, assemblyName);
165
+ },
166
+ }))
167
+ .views(self => ({
168
+ hierarchy(assemblyName) {
169
+ const hier = generateHierarchy(
170
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
171
+ self, self.trackConfigurations(assemblyName), self.collapsed);
172
+ const session = getSession(self);
173
+ const { connections, connectionInstances } = session;
174
+ const conns = (connectionInstances === null || connectionInstances === void 0 ? void 0 : connectionInstances.filter(c => {
175
+ const names = getConf(c, 'assemblyNames');
176
+ return names.length === 0 ? true : names.includes(assemblyName);
177
+ }).map((conn, index) => {
178
+ const c = connections[index];
179
+ return {
180
+ id: c.connectionId,
181
+ name: readConfObject(c, 'name'),
182
+ children: this.connectionHierarchy(assemblyName, conn),
183
+ state: {
184
+ expanded: true,
185
+ },
186
+ };
187
+ })) || [];
188
+ return {
189
+ name: 'Root',
190
+ id: 'Root',
191
+ children: [
192
+ { name: 'Tracks', id: 'Tracks', children: hier },
193
+ ...conns,
194
+ ],
195
+ };
196
+ },
197
+ connectionHierarchy(assemblyName, connection) {
198
+ return generateHierarchy(
199
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
200
+ self, self.connectionTrackConfigurations(assemblyName, connection), self.collapsed);
201
+ },
202
+ }));
203
+ }
204
+ //# sourceMappingURL=model.js.map