@jbrowse/plugin-data-management 2.3.2 → 2.3.4

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 (222) hide show
  1. package/dist/AddConnectionWidget/index.d.ts +3 -2
  2. package/dist/AddConnectionWidget/index.js +38 -4
  3. package/dist/AddConnectionWidget/index.js.map +1 -1
  4. package/dist/AddTrackWidget/components/DefaultAddTrackWorkflow.js +1 -4
  5. package/dist/AddTrackWidget/components/DefaultAddTrackWorkflow.js.map +1 -1
  6. package/dist/AddTrackWidget/components/TrackSourceSelect.js +1 -4
  7. package/dist/AddTrackWidget/components/TrackSourceSelect.js.map +1 -1
  8. package/dist/AddTrackWidget/index.d.ts +3 -2
  9. package/dist/AddTrackWidget/index.js +38 -4
  10. package/dist/AddTrackWidget/index.js.map +1 -1
  11. package/dist/HierarchicalTrackSelectorWidget/components/HierarchicalFab.d.ts +6 -0
  12. package/dist/HierarchicalTrackSelectorWidget/components/HierarchicalFab.js +71 -0
  13. package/dist/HierarchicalTrackSelectorWidget/components/HierarchicalFab.js.map +1 -0
  14. package/dist/HierarchicalTrackSelectorWidget/components/HierarchicalTrackSelector.js +10 -104
  15. package/dist/HierarchicalTrackSelectorWidget/components/HierarchicalTrackSelector.js.map +1 -1
  16. package/dist/HierarchicalTrackSelectorWidget/components/ShoppingCart.d.ts +6 -0
  17. package/dist/HierarchicalTrackSelectorWidget/components/ShoppingCart.js +70 -0
  18. package/dist/HierarchicalTrackSelectorWidget/components/ShoppingCart.js.map +1 -0
  19. package/dist/HierarchicalTrackSelectorWidget/components/{CloseConnectionDialog.d.ts → dialogs/CloseConnectionDialog.d.ts} +0 -0
  20. package/dist/HierarchicalTrackSelectorWidget/components/{CloseConnectionDialog.js → dialogs/CloseConnectionDialog.js} +0 -0
  21. package/dist/HierarchicalTrackSelectorWidget/components/dialogs/CloseConnectionDialog.js.map +1 -0
  22. package/dist/HierarchicalTrackSelectorWidget/components/{DeleteConnectionDialog.d.ts → dialogs/DeleteConnectionDialog.d.ts} +0 -0
  23. package/dist/HierarchicalTrackSelectorWidget/components/{DeleteConnectionDialog.js → dialogs/DeleteConnectionDialog.js} +0 -0
  24. package/dist/HierarchicalTrackSelectorWidget/components/dialogs/DeleteConnectionDialog.js.map +1 -0
  25. package/dist/HierarchicalTrackSelectorWidget/components/{ManageConnectionsDialog.d.ts → dialogs/ManageConnectionsDialog.d.ts} +0 -0
  26. package/dist/HierarchicalTrackSelectorWidget/components/{ManageConnectionsDialog.js → dialogs/ManageConnectionsDialog.js} +0 -0
  27. package/dist/HierarchicalTrackSelectorWidget/components/dialogs/ManageConnectionsDialog.js.map +1 -0
  28. package/dist/HierarchicalTrackSelectorWidget/components/{ToggleConnectionsDialog.d.ts → dialogs/ToggleConnectionsDialog.d.ts} +0 -0
  29. package/dist/HierarchicalTrackSelectorWidget/components/{ToggleConnectionsDialog.js → dialogs/ToggleConnectionsDialog.js} +0 -0
  30. package/dist/HierarchicalTrackSelectorWidget/components/dialogs/ToggleConnectionsDialog.js.map +1 -0
  31. package/dist/HierarchicalTrackSelectorWidget/components/faceted/FacetFilters.d.ts +13 -0
  32. package/dist/HierarchicalTrackSelectorWidget/components/faceted/FacetFilters.js +99 -0
  33. package/dist/HierarchicalTrackSelectorWidget/components/faceted/FacetFilters.js.map +1 -0
  34. package/dist/HierarchicalTrackSelectorWidget/components/faceted/FacetedDialog.d.ts +8 -0
  35. package/dist/HierarchicalTrackSelectorWidget/components/faceted/FacetedDialog.js +18 -0
  36. package/dist/HierarchicalTrackSelectorWidget/components/faceted/FacetedDialog.js.map +1 -0
  37. package/dist/HierarchicalTrackSelectorWidget/components/faceted/FacetedHeader.d.ts +11 -0
  38. package/dist/HierarchicalTrackSelectorWidget/components/faceted/FacetedHeader.js +71 -0
  39. package/dist/HierarchicalTrackSelectorWidget/components/faceted/FacetedHeader.js.map +1 -0
  40. package/dist/HierarchicalTrackSelectorWidget/components/faceted/FacetedSelector.d.ts +12 -0
  41. package/dist/HierarchicalTrackSelectorWidget/components/faceted/FacetedSelector.js +211 -0
  42. package/dist/HierarchicalTrackSelectorWidget/components/faceted/FacetedSelector.js.map +1 -0
  43. package/dist/HierarchicalTrackSelectorWidget/components/faceted/util.d.ts +1 -0
  44. package/dist/HierarchicalTrackSelectorWidget/components/faceted/util.js +10 -0
  45. package/dist/HierarchicalTrackSelectorWidget/components/faceted/util.js.map +1 -0
  46. package/dist/HierarchicalTrackSelectorWidget/components/tree/HamburgerMenu.d.ts +7 -0
  47. package/dist/HierarchicalTrackSelectorWidget/components/tree/HamburgerMenu.js +136 -0
  48. package/dist/HierarchicalTrackSelectorWidget/components/tree/HamburgerMenu.js.map +1 -0
  49. package/dist/HierarchicalTrackSelectorWidget/components/{Header.d.ts → tree/HierarchicalHeader.d.ts} +2 -3
  50. package/dist/HierarchicalTrackSelectorWidget/components/tree/HierarchicalHeader.js +65 -0
  51. package/dist/HierarchicalTrackSelectorWidget/components/tree/HierarchicalHeader.js.map +1 -0
  52. package/dist/HierarchicalTrackSelectorWidget/components/tree/HierarchicalTree.d.ts +8 -0
  53. package/dist/HierarchicalTrackSelectorWidget/components/tree/HierarchicalTree.js +91 -0
  54. package/dist/HierarchicalTrackSelectorWidget/components/tree/HierarchicalTree.js.map +1 -0
  55. package/dist/HierarchicalTrackSelectorWidget/components/tree/TrackCategory.d.ts +7 -0
  56. package/dist/HierarchicalTrackSelectorWidget/components/tree/TrackCategory.js +89 -0
  57. package/dist/HierarchicalTrackSelectorWidget/components/tree/TrackCategory.js.map +1 -0
  58. package/dist/HierarchicalTrackSelectorWidget/components/tree/TrackLabel.d.ts +11 -0
  59. package/dist/HierarchicalTrackSelectorWidget/components/tree/TrackLabel.js +86 -0
  60. package/dist/HierarchicalTrackSelectorWidget/components/tree/TrackLabel.js.map +1 -0
  61. package/dist/HierarchicalTrackSelectorWidget/components/tree/TrackListNode.d.ts +10 -0
  62. package/dist/HierarchicalTrackSelectorWidget/components/tree/TrackListNode.js +54 -0
  63. package/dist/HierarchicalTrackSelectorWidget/components/tree/TrackListNode.js.map +1 -0
  64. package/dist/HierarchicalTrackSelectorWidget/components/util.d.ts +17 -1
  65. package/dist/HierarchicalTrackSelectorWidget/components/util.js +16 -1
  66. package/dist/HierarchicalTrackSelectorWidget/components/util.js.map +1 -1
  67. package/dist/HierarchicalTrackSelectorWidget/index.d.ts +3 -0
  68. package/dist/HierarchicalTrackSelectorWidget/index.js +36 -0
  69. package/dist/HierarchicalTrackSelectorWidget/index.js.map +1 -1
  70. package/dist/HierarchicalTrackSelectorWidget/model.d.ts +4 -1
  71. package/dist/HierarchicalTrackSelectorWidget/model.js +12 -8
  72. package/dist/HierarchicalTrackSelectorWidget/model.js.map +1 -1
  73. package/dist/PluginStoreWidget/index.d.ts +3 -2
  74. package/dist/PluginStoreWidget/index.js +38 -4
  75. package/dist/PluginStoreWidget/index.js.map +1 -1
  76. package/dist/index.js +10 -51
  77. package/dist/index.js.map +1 -1
  78. package/dist/ucsc-trackhub/index.d.ts +3 -2
  79. package/dist/ucsc-trackhub/index.js +13 -5
  80. package/dist/ucsc-trackhub/index.js.map +1 -1
  81. package/esm/AddConnectionWidget/index.d.ts +3 -2
  82. package/esm/AddConnectionWidget/index.js +15 -2
  83. package/esm/AddConnectionWidget/index.js.map +1 -1
  84. package/esm/AddTrackWidget/components/DefaultAddTrackWorkflow.js +1 -4
  85. package/esm/AddTrackWidget/components/DefaultAddTrackWorkflow.js.map +1 -1
  86. package/esm/AddTrackWidget/components/TrackSourceSelect.js +1 -4
  87. package/esm/AddTrackWidget/components/TrackSourceSelect.js.map +1 -1
  88. package/esm/AddTrackWidget/index.d.ts +3 -2
  89. package/esm/AddTrackWidget/index.js +15 -2
  90. package/esm/AddTrackWidget/index.js.map +1 -1
  91. package/esm/HierarchicalTrackSelectorWidget/components/HierarchicalFab.d.ts +6 -0
  92. package/esm/HierarchicalTrackSelectorWidget/components/HierarchicalFab.js +43 -0
  93. package/esm/HierarchicalTrackSelectorWidget/components/HierarchicalFab.js.map +1 -0
  94. package/esm/HierarchicalTrackSelectorWidget/components/HierarchicalTrackSelector.js +9 -103
  95. package/esm/HierarchicalTrackSelectorWidget/components/HierarchicalTrackSelector.js.map +1 -1
  96. package/esm/HierarchicalTrackSelectorWidget/components/ShoppingCart.d.ts +6 -0
  97. package/esm/HierarchicalTrackSelectorWidget/components/ShoppingCart.js +42 -0
  98. package/esm/HierarchicalTrackSelectorWidget/components/ShoppingCart.js.map +1 -0
  99. package/esm/HierarchicalTrackSelectorWidget/components/{CloseConnectionDialog.d.ts → dialogs/CloseConnectionDialog.d.ts} +0 -0
  100. package/esm/HierarchicalTrackSelectorWidget/components/{CloseConnectionDialog.js → dialogs/CloseConnectionDialog.js} +0 -0
  101. package/esm/HierarchicalTrackSelectorWidget/components/dialogs/CloseConnectionDialog.js.map +1 -0
  102. package/esm/HierarchicalTrackSelectorWidget/components/{DeleteConnectionDialog.d.ts → dialogs/DeleteConnectionDialog.d.ts} +0 -0
  103. package/esm/HierarchicalTrackSelectorWidget/components/{DeleteConnectionDialog.js → dialogs/DeleteConnectionDialog.js} +0 -0
  104. package/esm/HierarchicalTrackSelectorWidget/components/dialogs/DeleteConnectionDialog.js.map +1 -0
  105. package/esm/HierarchicalTrackSelectorWidget/components/{ManageConnectionsDialog.d.ts → dialogs/ManageConnectionsDialog.d.ts} +0 -0
  106. package/esm/HierarchicalTrackSelectorWidget/components/{ManageConnectionsDialog.js → dialogs/ManageConnectionsDialog.js} +0 -0
  107. package/esm/HierarchicalTrackSelectorWidget/components/dialogs/ManageConnectionsDialog.js.map +1 -0
  108. package/esm/HierarchicalTrackSelectorWidget/components/{ToggleConnectionsDialog.d.ts → dialogs/ToggleConnectionsDialog.d.ts} +0 -0
  109. package/esm/HierarchicalTrackSelectorWidget/components/{ToggleConnectionsDialog.js → dialogs/ToggleConnectionsDialog.js} +0 -0
  110. package/esm/HierarchicalTrackSelectorWidget/components/dialogs/ToggleConnectionsDialog.js.map +1 -0
  111. package/esm/HierarchicalTrackSelectorWidget/components/faceted/FacetFilters.d.ts +13 -0
  112. package/esm/HierarchicalTrackSelectorWidget/components/faceted/FacetFilters.js +70 -0
  113. package/esm/HierarchicalTrackSelectorWidget/components/faceted/FacetFilters.js.map +1 -0
  114. package/esm/HierarchicalTrackSelectorWidget/components/faceted/FacetedDialog.d.ts +8 -0
  115. package/esm/HierarchicalTrackSelectorWidget/components/faceted/FacetedDialog.js +13 -0
  116. package/esm/HierarchicalTrackSelectorWidget/components/faceted/FacetedDialog.js.map +1 -0
  117. package/esm/HierarchicalTrackSelectorWidget/components/faceted/FacetedHeader.d.ts +11 -0
  118. package/esm/HierarchicalTrackSelectorWidget/components/faceted/FacetedHeader.js +42 -0
  119. package/esm/HierarchicalTrackSelectorWidget/components/faceted/FacetedHeader.js.map +1 -0
  120. package/esm/HierarchicalTrackSelectorWidget/components/faceted/FacetedSelector.d.ts +12 -0
  121. package/esm/HierarchicalTrackSelectorWidget/components/faceted/FacetedSelector.js +183 -0
  122. package/esm/HierarchicalTrackSelectorWidget/components/faceted/FacetedSelector.js.map +1 -0
  123. package/esm/HierarchicalTrackSelectorWidget/components/faceted/util.d.ts +1 -0
  124. package/esm/HierarchicalTrackSelectorWidget/components/faceted/util.js +6 -0
  125. package/esm/HierarchicalTrackSelectorWidget/components/faceted/util.js.map +1 -0
  126. package/esm/HierarchicalTrackSelectorWidget/components/tree/HamburgerMenu.d.ts +7 -0
  127. package/esm/HierarchicalTrackSelectorWidget/components/tree/HamburgerMenu.js +108 -0
  128. package/esm/HierarchicalTrackSelectorWidget/components/tree/HamburgerMenu.js.map +1 -0
  129. package/esm/HierarchicalTrackSelectorWidget/components/{Header.d.ts → tree/HierarchicalHeader.d.ts} +2 -3
  130. package/esm/HierarchicalTrackSelectorWidget/components/tree/HierarchicalHeader.js +37 -0
  131. package/esm/HierarchicalTrackSelectorWidget/components/tree/HierarchicalHeader.js.map +1 -0
  132. package/esm/HierarchicalTrackSelectorWidget/components/tree/HierarchicalTree.d.ts +8 -0
  133. package/esm/HierarchicalTrackSelectorWidget/components/tree/HierarchicalTree.js +63 -0
  134. package/esm/HierarchicalTrackSelectorWidget/components/tree/HierarchicalTree.js.map +1 -0
  135. package/esm/HierarchicalTrackSelectorWidget/components/tree/TrackCategory.d.ts +7 -0
  136. package/esm/HierarchicalTrackSelectorWidget/components/tree/TrackCategory.js +60 -0
  137. package/esm/HierarchicalTrackSelectorWidget/components/tree/TrackCategory.js.map +1 -0
  138. package/esm/HierarchicalTrackSelectorWidget/components/tree/TrackLabel.d.ts +11 -0
  139. package/esm/HierarchicalTrackSelectorWidget/components/tree/TrackLabel.js +57 -0
  140. package/esm/HierarchicalTrackSelectorWidget/components/tree/TrackLabel.js.map +1 -0
  141. package/esm/HierarchicalTrackSelectorWidget/components/tree/TrackListNode.d.ts +10 -0
  142. package/esm/HierarchicalTrackSelectorWidget/components/tree/TrackListNode.js +48 -0
  143. package/esm/HierarchicalTrackSelectorWidget/components/tree/TrackListNode.js.map +1 -0
  144. package/esm/HierarchicalTrackSelectorWidget/components/util.d.ts +17 -1
  145. package/esm/HierarchicalTrackSelectorWidget/components/util.js +13 -0
  146. package/esm/HierarchicalTrackSelectorWidget/components/util.js.map +1 -1
  147. package/esm/HierarchicalTrackSelectorWidget/index.d.ts +3 -0
  148. package/esm/HierarchicalTrackSelectorWidget/index.js +13 -0
  149. package/esm/HierarchicalTrackSelectorWidget/index.js.map +1 -1
  150. package/esm/HierarchicalTrackSelectorWidget/model.d.ts +4 -1
  151. package/esm/HierarchicalTrackSelectorWidget/model.js +10 -7
  152. package/esm/HierarchicalTrackSelectorWidget/model.js.map +1 -1
  153. package/esm/PluginStoreWidget/index.d.ts +3 -2
  154. package/esm/PluginStoreWidget/index.js +15 -2
  155. package/esm/PluginStoreWidget/index.js.map +1 -1
  156. package/esm/index.js +10 -51
  157. package/esm/index.js.map +1 -1
  158. package/esm/ucsc-trackhub/index.d.ts +3 -2
  159. package/esm/ucsc-trackhub/index.js +13 -2
  160. package/esm/ucsc-trackhub/index.js.map +1 -1
  161. package/package.json +3 -2
  162. package/src/AddConnectionWidget/components/{AddConnectionWidget.test.js → AddConnectionWidget.test.tsx} +17 -8
  163. package/src/AddConnectionWidget/components/__snapshots__/{AddConnectionWidget.test.js.snap → AddConnectionWidget.test.tsx.snap} +0 -0
  164. package/src/AddConnectionWidget/index.ts +17 -2
  165. package/src/AddTrackWidget/components/DefaultAddTrackWorkflow.tsx +1 -4
  166. package/src/AddTrackWidget/components/TrackSourceSelect.tsx +3 -5
  167. package/src/AddTrackWidget/{index.test.jsx → index.test.tsx} +34 -37
  168. package/src/AddTrackWidget/index.ts +17 -2
  169. package/src/HierarchicalTrackSelectorWidget/components/HierarchicalFab.tsx +94 -0
  170. package/src/HierarchicalTrackSelectorWidget/components/HierarchicalTrackSelector.test.tsx +124 -128
  171. package/src/HierarchicalTrackSelectorWidget/components/HierarchicalTrackSelector.tsx +47 -228
  172. package/src/HierarchicalTrackSelectorWidget/components/ShoppingCart.tsx +73 -0
  173. package/src/HierarchicalTrackSelectorWidget/components/__snapshots__/HierarchicalTrackSelector.test.tsx.snap +25 -43
  174. package/src/HierarchicalTrackSelectorWidget/components/{CloseConnectionDialog.tsx → dialogs/CloseConnectionDialog.tsx} +0 -0
  175. package/src/HierarchicalTrackSelectorWidget/components/{DeleteConnectionDialog.tsx → dialogs/DeleteConnectionDialog.tsx} +0 -0
  176. package/src/HierarchicalTrackSelectorWidget/components/{ManageConnectionsDialog.tsx → dialogs/ManageConnectionsDialog.tsx} +0 -0
  177. package/src/HierarchicalTrackSelectorWidget/components/{ToggleConnectionsDialog.tsx → dialogs/ToggleConnectionsDialog.tsx} +0 -0
  178. package/src/HierarchicalTrackSelectorWidget/components/faceted/FacetFilters.tsx +138 -0
  179. package/src/HierarchicalTrackSelectorWidget/components/faceted/FacetedDialog.tsx +29 -0
  180. package/src/HierarchicalTrackSelectorWidget/components/faceted/FacetedHeader.tsx +86 -0
  181. package/src/HierarchicalTrackSelectorWidget/components/faceted/FacetedSelector.tsx +339 -0
  182. package/src/HierarchicalTrackSelectorWidget/components/faceted/util.ts +5 -0
  183. package/src/HierarchicalTrackSelectorWidget/components/tree/HamburgerMenu.tsx +197 -0
  184. package/src/HierarchicalTrackSelectorWidget/components/tree/HierarchicalHeader.tsx +88 -0
  185. package/src/HierarchicalTrackSelectorWidget/components/tree/HierarchicalTree.tsx +101 -0
  186. package/src/HierarchicalTrackSelectorWidget/components/tree/TrackCategory.tsx +92 -0
  187. package/src/HierarchicalTrackSelectorWidget/components/tree/TrackLabel.tsx +107 -0
  188. package/src/HierarchicalTrackSelectorWidget/components/tree/TrackListNode.tsx +84 -0
  189. package/src/HierarchicalTrackSelectorWidget/components/util.ts +31 -1
  190. package/src/HierarchicalTrackSelectorWidget/index.ts +17 -0
  191. package/src/HierarchicalTrackSelectorWidget/model.ts +12 -9
  192. package/src/PluginStoreWidget/components/PluginStoreWidget.test.tsx +132 -0
  193. package/src/PluginStoreWidget/components/__snapshots__/{PluginStoreWidget.test.js.snap → PluginStoreWidget.test.tsx.snap} +2 -2
  194. package/src/PluginStoreWidget/index.ts +17 -2
  195. package/src/PluginStoreWidget/{model.test.js → model.test.tsx} +0 -0
  196. package/src/__snapshots__/index.test.ts.snap +9 -0
  197. package/src/index.test.ts +54 -0
  198. package/src/index.ts +10 -83
  199. package/src/ucsc-trackhub/index.ts +19 -2
  200. package/dist/HierarchicalTrackSelectorWidget/components/CloseConnectionDialog.js.map +0 -1
  201. package/dist/HierarchicalTrackSelectorWidget/components/DeleteConnectionDialog.js.map +0 -1
  202. package/dist/HierarchicalTrackSelectorWidget/components/Header.js +0 -174
  203. package/dist/HierarchicalTrackSelectorWidget/components/Header.js.map +0 -1
  204. package/dist/HierarchicalTrackSelectorWidget/components/ManageConnectionsDialog.js.map +0 -1
  205. package/dist/HierarchicalTrackSelectorWidget/components/Node.d.ts +0 -29
  206. package/dist/HierarchicalTrackSelectorWidget/components/Node.js +0 -173
  207. package/dist/HierarchicalTrackSelectorWidget/components/Node.js.map +0 -1
  208. package/dist/HierarchicalTrackSelectorWidget/components/ToggleConnectionsDialog.js.map +0 -1
  209. package/esm/HierarchicalTrackSelectorWidget/components/CloseConnectionDialog.js.map +0 -1
  210. package/esm/HierarchicalTrackSelectorWidget/components/DeleteConnectionDialog.js.map +0 -1
  211. package/esm/HierarchicalTrackSelectorWidget/components/Header.js +0 -146
  212. package/esm/HierarchicalTrackSelectorWidget/components/Header.js.map +0 -1
  213. package/esm/HierarchicalTrackSelectorWidget/components/ManageConnectionsDialog.js.map +0 -1
  214. package/esm/HierarchicalTrackSelectorWidget/components/Node.d.ts +0 -29
  215. package/esm/HierarchicalTrackSelectorWidget/components/Node.js +0 -144
  216. package/esm/HierarchicalTrackSelectorWidget/components/Node.js.map +0 -1
  217. package/esm/HierarchicalTrackSelectorWidget/components/ToggleConnectionsDialog.js.map +0 -1
  218. package/src/HierarchicalTrackSelectorWidget/components/Header.tsx +0 -286
  219. package/src/HierarchicalTrackSelectorWidget/components/Node.tsx +0 -282
  220. package/src/PluginStoreWidget/components/PluginStoreWidget.test.js +0 -123
  221. package/src/__snapshots__/index.test.js.snap +0 -9
  222. package/src/index.test.js +0 -61
@@ -1,6 +1,6 @@
1
1
  // Jest Snapshot v1, https://goo.gl/fbAQLP
2
2
 
3
- exports[`HierarchicalTrackSelector widget renders nothing with no assembly 1`] = `
3
+ exports[`renders nothing with no assembly 1`] = `
4
4
  <button
5
5
  class="MuiButtonBase-root MuiFab-root MuiFab-circular MuiFab-sizeSmall MuiFab-secondary MuiFab-root MuiFab-circular MuiFab-sizeSmall MuiFab-secondary css-15opis6-MuiButtonBase-root-MuiFab-root-fab"
6
6
  tabindex="0"
@@ -23,7 +23,7 @@ exports[`HierarchicalTrackSelector widget renders nothing with no assembly 1`] =
23
23
  </button>
24
24
  `;
25
25
 
26
- exports[`HierarchicalTrackSelector widget renders with a couple of categorized tracks 1`] = `
26
+ exports[`renders with a couple of categorized tracks 1`] = `
27
27
  <div
28
28
  data-testid="hierarchical_track_selector"
29
29
  >
@@ -50,25 +50,6 @@ exports[`HierarchicalTrackSelector widget renders with a couple of categorized t
50
50
  class="MuiTouchRipple-root css-8je8zh-MuiTouchRipple-root"
51
51
  />
52
52
  </button>
53
- <button
54
- class="MuiButtonBase-root MuiIconButton-root MuiIconButton-sizeSmall css-1m9x3cr-MuiButtonBase-root-MuiIconButton-root-menuIcon"
55
- tabindex="0"
56
- type="button"
57
- >
58
- <svg
59
- aria-hidden="true"
60
- class="MuiSvgIcon-root MuiSvgIcon-fontSizeMedium css-havevq-MuiSvgIcon-root"
61
- focusable="false"
62
- viewBox="0 0 24 24"
63
- >
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>
68
- <span
69
- class="MuiTouchRipple-root css-8je8zh-MuiTouchRipple-root"
70
- />
71
- </button>
72
53
  <div
73
54
  class="MuiFormControl-root MuiFormControl-marginDense MuiFormControl-fullWidth MuiTextField-root css-rlnh8o-MuiFormControl-root-MuiTextField-root-searchBox"
74
55
  >
@@ -81,7 +62,7 @@ exports[`HierarchicalTrackSelector widget renders with a couple of categorized t
81
62
  Filter tracks
82
63
  </label>
83
64
  <div
84
- class="MuiInputBase-root MuiInput-root MuiInput-underline MuiInputBase-colorPrimary MuiInputBase-fullWidth MuiInputBase-formControl MuiInputBase-sizeSmall MuiInputBase-adornedEnd css-1wz39fi-MuiInputBase-root-MuiInput-root"
65
+ class="MuiInputBase-root MuiInput-root MuiInput-underline MuiInputBase-colorPrimary MuiInputBase-fullWidth MuiInputBase-formControl MuiInputBase-sizeSmall MuiInputBase-adornedEnd css-1blad95-MuiInputBase-root-MuiInput-root"
85
66
  >
86
67
  <input
87
68
  aria-invalid="false"
@@ -116,11 +97,21 @@ exports[`HierarchicalTrackSelector widget renders with a couple of categorized t
116
97
  </div>
117
98
  </div>
118
99
  </div>
100
+ <button
101
+ class="MuiButtonBase-root MuiButton-root MuiButton-text MuiButton-textPrimary MuiButton-sizeSmall MuiButton-textSizeSmall MuiButton-root MuiButton-text MuiButton-textPrimary MuiButton-sizeSmall MuiButton-textSizeSmall css-1c8zr45-MuiButtonBase-root-MuiButton-root-menuIcon"
102
+ tabindex="0"
103
+ type="button"
104
+ >
105
+ Open faceted selector
106
+ <span
107
+ class="MuiTouchRipple-root css-8je8zh-MuiTouchRipple-root"
108
+ />
109
+ </button>
119
110
  </div>
120
111
  </div>
121
112
  `;
122
113
 
123
- exports[`HierarchicalTrackSelector widget renders with a couple of uncategorized tracks 1`] = `
114
+ exports[`renders with a couple of uncategorized tracks 1`] = `
124
115
  <div
125
116
  data-testid="hierarchical_track_selector"
126
117
  >
@@ -147,25 +138,6 @@ exports[`HierarchicalTrackSelector widget renders with a couple of uncategorized
147
138
  class="MuiTouchRipple-root css-8je8zh-MuiTouchRipple-root"
148
139
  />
149
140
  </button>
150
- <button
151
- class="MuiButtonBase-root MuiIconButton-root MuiIconButton-sizeSmall css-1m9x3cr-MuiButtonBase-root-MuiIconButton-root-menuIcon"
152
- tabindex="0"
153
- type="button"
154
- >
155
- <svg
156
- aria-hidden="true"
157
- class="MuiSvgIcon-root MuiSvgIcon-fontSizeMedium css-havevq-MuiSvgIcon-root"
158
- focusable="false"
159
- viewBox="0 0 24 24"
160
- >
161
- <path
162
- 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"
163
- />
164
- </svg>
165
- <span
166
- class="MuiTouchRipple-root css-8je8zh-MuiTouchRipple-root"
167
- />
168
- </button>
169
141
  <div
170
142
  class="MuiFormControl-root MuiFormControl-marginDense MuiFormControl-fullWidth MuiTextField-root css-rlnh8o-MuiFormControl-root-MuiTextField-root-searchBox"
171
143
  >
@@ -178,7 +150,7 @@ exports[`HierarchicalTrackSelector widget renders with a couple of uncategorized
178
150
  Filter tracks
179
151
  </label>
180
152
  <div
181
- class="MuiInputBase-root MuiInput-root MuiInput-underline MuiInputBase-colorPrimary MuiInputBase-fullWidth MuiInputBase-formControl MuiInputBase-sizeSmall MuiInputBase-adornedEnd css-1wz39fi-MuiInputBase-root-MuiInput-root"
153
+ class="MuiInputBase-root MuiInput-root MuiInput-underline MuiInputBase-colorPrimary MuiInputBase-fullWidth MuiInputBase-formControl MuiInputBase-sizeSmall MuiInputBase-adornedEnd css-1blad95-MuiInputBase-root-MuiInput-root"
182
154
  >
183
155
  <input
184
156
  aria-invalid="false"
@@ -213,6 +185,16 @@ exports[`HierarchicalTrackSelector widget renders with a couple of uncategorized
213
185
  </div>
214
186
  </div>
215
187
  </div>
188
+ <button
189
+ class="MuiButtonBase-root MuiButton-root MuiButton-text MuiButton-textPrimary MuiButton-sizeSmall MuiButton-textSizeSmall MuiButton-root MuiButton-text MuiButton-textPrimary MuiButton-sizeSmall MuiButton-textSizeSmall css-1c8zr45-MuiButtonBase-root-MuiButton-root-menuIcon"
190
+ tabindex="0"
191
+ type="button"
192
+ >
193
+ Open faceted selector
194
+ <span
195
+ class="MuiTouchRipple-root css-8je8zh-MuiTouchRipple-root"
196
+ />
197
+ </button>
216
198
  </div>
217
199
  </div>
218
200
  `;
@@ -0,0 +1,138 @@
1
+ import React, { useState } from 'react'
2
+ import {
3
+ Typography,
4
+ FormControl,
5
+ Select,
6
+ IconButton,
7
+ Tooltip,
8
+ } from '@mui/material'
9
+ import { makeStyles } from 'tss-react/mui'
10
+
11
+ // icon
12
+ import ClearIcon from '@mui/icons-material/Clear'
13
+ import MinimizeIcon from '@mui/icons-material/Minimize'
14
+ import AddIcon from '@mui/icons-material/Add'
15
+
16
+ const useStyles = makeStyles()(theme => ({
17
+ facet: {
18
+ margin: 0,
19
+ marginLeft: theme.spacing(2),
20
+ },
21
+ select: {
22
+ marginBottom: theme.spacing(2),
23
+ },
24
+ }))
25
+
26
+ function FacetFilter({
27
+ column,
28
+ vals,
29
+ width,
30
+ dispatch,
31
+ filters,
32
+ }: {
33
+ column: { field: string }
34
+ vals: [string, number][]
35
+ width: number
36
+ dispatch: (arg: { key: string; val: string[] }) => void
37
+ filters: Record<string, string[]>
38
+ }) {
39
+ const { classes } = useStyles()
40
+ const [visible, setVisible] = useState(true)
41
+ return (
42
+ <FormControl key={column.field} className={classes.facet} style={{ width }}>
43
+ <div style={{ display: 'flex' }}>
44
+ <Typography>{column.field}</Typography>
45
+ <Tooltip title="Clear selection on this facet filter">
46
+ <IconButton
47
+ onClick={() => {
48
+ dispatch({ key: column.field, val: [] })
49
+ }}
50
+ size="small"
51
+ >
52
+ <ClearIcon />
53
+ </IconButton>
54
+ </Tooltip>
55
+ <Tooltip title="Minimize/expand this facet filter">
56
+ <IconButton onClick={() => setVisible(!visible)} size="small">
57
+ {visible ? <MinimizeIcon /> : <AddIcon />}
58
+ </IconButton>
59
+ </Tooltip>
60
+ </div>
61
+ {visible ? (
62
+ <Select
63
+ multiple
64
+ native
65
+ className={classes.select}
66
+ value={filters[column.field]}
67
+ onChange={event => {
68
+ // @ts-ignore
69
+ const { options } = event.target
70
+ const val: string[] = []
71
+ const len = options.length
72
+ for (let i = 0; i < len; i++) {
73
+ if (options[i].selected) {
74
+ val.push(options[i].value)
75
+ }
76
+ }
77
+ dispatch({ key: column.field, val })
78
+ }}
79
+ >
80
+ {vals
81
+ .sort((a, b) => a[0].localeCompare(b[0]))
82
+ .map(([name, count]) => (
83
+ <option key={name} value={name}>
84
+ {name} ({count})
85
+ </option>
86
+ ))}
87
+ </Select>
88
+ ) : null}
89
+ </FormControl>
90
+ )
91
+ }
92
+
93
+ export default function FacetFilters({
94
+ rows,
95
+ columns,
96
+ dispatch,
97
+ filters,
98
+ width,
99
+ }: {
100
+ rows: Record<string, unknown>[]
101
+ filters: Record<string, string[]>
102
+ columns: { field: string }[]
103
+ dispatch: (arg: { key: string; val: string[] }) => void
104
+ width: number
105
+ }) {
106
+ const facets = columns.slice(1)
107
+ const uniqs = facets.map(() => new Map<string, number>())
108
+ rows.forEach(row => {
109
+ facets.forEach((column, index) => {
110
+ const elt = uniqs[index]
111
+ const key = `${row[column.field] || ''}`
112
+ const val = elt.get(key)
113
+ // we don't allow filtering on empty yet
114
+ if (key) {
115
+ if (val !== undefined) {
116
+ elt.set(key, val + 1)
117
+ } else {
118
+ elt.set(key, 1)
119
+ }
120
+ }
121
+ })
122
+ })
123
+
124
+ return (
125
+ <div>
126
+ {facets.map((column, index) => (
127
+ <FacetFilter
128
+ key={column.field}
129
+ vals={Array.from(uniqs[index])}
130
+ column={column}
131
+ width={width}
132
+ dispatch={dispatch}
133
+ filters={filters}
134
+ />
135
+ ))}
136
+ </div>
137
+ )
138
+ }
@@ -0,0 +1,29 @@
1
+ import React from 'react'
2
+ import { DialogContent } from '@mui/material'
3
+ import { Dialog } from '@jbrowse/core/ui'
4
+ import { observer } from 'mobx-react'
5
+
6
+ // locals
7
+ import { HierarchicalTrackSelectorModel } from '../../model'
8
+ import FacetedSelector from './FacetedSelector'
9
+
10
+ function FacetedDlg(props: {
11
+ handleClose: () => void
12
+ model: HierarchicalTrackSelectorModel
13
+ }) {
14
+ const { handleClose } = props
15
+ return (
16
+ <Dialog
17
+ open
18
+ onClose={handleClose}
19
+ maxWidth="xl"
20
+ title="Faceted track selector"
21
+ >
22
+ <DialogContent>
23
+ <FacetedSelector {...props} />
24
+ </DialogContent>
25
+ </Dialog>
26
+ )
27
+ }
28
+
29
+ export default observer(FacetedDlg)
@@ -0,0 +1,86 @@
1
+ import React, { useState } from 'react'
2
+ import { Grid, IconButton, InputAdornment, TextField } from '@mui/material'
3
+ import { Menu } from '@jbrowse/core/ui'
4
+
5
+ // icons
6
+ import ClearIcon from '@mui/icons-material/Clear'
7
+ import MoreVert from '@mui/icons-material/MoreVert'
8
+
9
+ // locals
10
+ import ShoppingCart from '../ShoppingCart'
11
+ import { HierarchicalTrackSelectorModel } from '../../model'
12
+
13
+ export default function FacetedHeader({
14
+ setFilterText,
15
+ setUseShoppingCart,
16
+ setHideSparse,
17
+ hideSparse,
18
+ useShoppingCart,
19
+ filterText,
20
+ model,
21
+ }: {
22
+ setFilterText: (arg: string) => void
23
+ setUseShoppingCart: (arg: boolean) => void
24
+ setHideSparse: (arg: boolean) => void
25
+ filterText: string
26
+ useShoppingCart: boolean
27
+ hideSparse: boolean
28
+ model: HierarchicalTrackSelectorModel
29
+ }) {
30
+ const [anchorEl, setAnchorEl] = useState<HTMLElement | null>(null)
31
+
32
+ return (
33
+ <>
34
+ <Grid container spacing={4} alignItems="center">
35
+ <Grid item>
36
+ <TextField
37
+ label="Search..."
38
+ value={filterText}
39
+ onChange={event => setFilterText(event.target.value)}
40
+ InputProps={{
41
+ endAdornment: (
42
+ <InputAdornment position="end">
43
+ <IconButton onClick={() => setFilterText('')}>
44
+ <ClearIcon />
45
+ </IconButton>
46
+ </InputAdornment>
47
+ ),
48
+ }}
49
+ />
50
+ </Grid>
51
+
52
+ <Grid item>
53
+ <IconButton onClick={event => setAnchorEl(event.currentTarget)}>
54
+ <MoreVert />
55
+ </IconButton>
56
+ </Grid>
57
+ <Grid item>
58
+ <ShoppingCart model={model} />
59
+ </Grid>
60
+ </Grid>
61
+ <Menu
62
+ anchorEl={anchorEl}
63
+ open={!!anchorEl}
64
+ onClose={() => setAnchorEl(null)}
65
+ onMenuItemClick={(_event, callback) => {
66
+ callback()
67
+ setAnchorEl(null)
68
+ }}
69
+ menuItems={[
70
+ {
71
+ label: 'Add tracks to selection instead of turning them on/off',
72
+ onClick: () => setUseShoppingCart(!useShoppingCart),
73
+ type: 'checkbox',
74
+ checked: useShoppingCart,
75
+ },
76
+ {
77
+ label: 'Hide sparse metadata columns',
78
+ onClick: () => setHideSparse(!hideSparse),
79
+ checked: hideSparse,
80
+ type: 'checkbox',
81
+ },
82
+ ]}
83
+ />
84
+ </>
85
+ )
86
+ }