@jbrowse/plugin-linear-genome-view 3.6.5 → 4.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (392) hide show
  1. package/esm/BaseLinearDisplay/SVGLegend.d.ts +6 -0
  2. package/esm/BaseLinearDisplay/SVGLegend.js +17 -0
  3. package/esm/BaseLinearDisplay/calculateSvgLegendWidth.d.ts +2 -0
  4. package/esm/BaseLinearDisplay/calculateSvgLegendWidth.js +11 -0
  5. package/esm/BaseLinearDisplay/components/BaseLinearDisplay.d.ts +3 -3
  6. package/esm/BaseLinearDisplay/components/BaseLinearDisplay.js +13 -24
  7. package/esm/BaseLinearDisplay/components/Block.js +2 -2
  8. package/esm/BaseLinearDisplay/components/BlockErrorMessage.js +2 -2
  9. package/esm/BaseLinearDisplay/components/BlockMsg.js +11 -2
  10. package/esm/BaseLinearDisplay/components/CollapseIntronsDialog/CollapseIntronsDialog.d.ts +9 -0
  11. package/esm/BaseLinearDisplay/components/CollapseIntronsDialog/CollapseIntronsDialog.js +42 -0
  12. package/esm/BaseLinearDisplay/components/CollapseIntronsDialog/TranscriptTable.d.ts +11 -0
  13. package/esm/BaseLinearDisplay/components/CollapseIntronsDialog/TranscriptTable.js +40 -0
  14. package/esm/BaseLinearDisplay/components/CollapseIntronsDialog/util.d.ts +19 -0
  15. package/esm/BaseLinearDisplay/components/CollapseIntronsDialog/util.js +45 -0
  16. package/esm/BaseLinearDisplay/components/FloatingLabels.d.ts +5 -0
  17. package/esm/BaseLinearDisplay/components/FloatingLabels.js +89 -0
  18. package/esm/BaseLinearDisplay/components/FloatingLegend.d.ts +8 -0
  19. package/esm/BaseLinearDisplay/components/FloatingLegend.js +43 -0
  20. package/esm/BaseLinearDisplay/components/LinearBlocks.d.ts +1 -5
  21. package/esm/BaseLinearDisplay/components/LinearBlocks.js +5 -42
  22. package/esm/BaseLinearDisplay/components/LoadingOverlay.d.ts +4 -0
  23. package/esm/BaseLinearDisplay/components/LoadingOverlay.js +49 -0
  24. package/esm/BaseLinearDisplay/components/MaxHeightReachedIndicator.d.ts +4 -0
  25. package/esm/BaseLinearDisplay/components/MaxHeightReachedIndicator.js +26 -0
  26. package/esm/BaseLinearDisplay/components/MenuPage.d.ts +8 -0
  27. package/esm/BaseLinearDisplay/components/MenuPage.js +24 -0
  28. package/esm/BaseLinearDisplay/components/NonBlockCanvasDisplayComponent.d.ts +19 -0
  29. package/esm/BaseLinearDisplay/components/NonBlockCanvasDisplayComponent.js +48 -0
  30. package/esm/BaseLinearDisplay/components/RenderedBlocks.d.ts +12 -0
  31. package/esm/BaseLinearDisplay/components/RenderedBlocks.js +22 -0
  32. package/esm/BaseLinearDisplay/components/ServerSideRenderedBlockContent.d.ts +4 -4
  33. package/esm/BaseLinearDisplay/components/ServerSideRenderedBlockContent.js +5 -8
  34. package/esm/BaseLinearDisplay/components/TooLargeMessage.js +3 -3
  35. package/esm/BaseLinearDisplay/components/Tooltip.d.ts +2 -0
  36. package/esm/BaseLinearDisplay/components/Tooltip.js +10 -7
  37. package/esm/BaseLinearDisplay/components/types.d.ts +1 -0
  38. package/esm/BaseLinearDisplay/components/types.js +1 -0
  39. package/esm/BaseLinearDisplay/components/util.d.ts +21 -0
  40. package/esm/BaseLinearDisplay/components/util.js +116 -0
  41. package/esm/BaseLinearDisplay/index.d.ts +17 -8
  42. package/esm/BaseLinearDisplay/index.js +13 -6
  43. package/esm/BaseLinearDisplay/model.d.ts +1177 -0
  44. package/esm/BaseLinearDisplay/model.js +424 -0
  45. package/esm/BaseLinearDisplay/models/FeatureDensityMixin.d.ts +5 -5
  46. package/esm/BaseLinearDisplay/models/FeatureDensityMixin.js +11 -14
  47. package/esm/BaseLinearDisplay/models/NonBlockCanvasDisplayMixin.d.ts +21 -0
  48. package/esm/BaseLinearDisplay/models/NonBlockCanvasDisplayMixin.js +46 -0
  49. package/esm/BaseLinearDisplay/models/TrackHeightMixin.d.ts +3 -3
  50. package/esm/BaseLinearDisplay/models/TrackHeightMixin.js +2 -3
  51. package/esm/BaseLinearDisplay/models/autorunFeatureDensityStats.d.ts +1 -1
  52. package/esm/BaseLinearDisplay/models/autorunFeatureDensityStats.js +2 -3
  53. package/esm/BaseLinearDisplay/models/calculateLabelPositions.d.ts +24 -0
  54. package/esm/BaseLinearDisplay/models/calculateLabelPositions.js +60 -0
  55. package/esm/BaseLinearDisplay/models/configSchema.d.ts +2 -2
  56. package/esm/BaseLinearDisplay/models/configSchema.js +3 -3
  57. package/esm/BaseLinearDisplay/models/renderSvg.d.ts +3 -7
  58. package/esm/BaseLinearDisplay/models/renderSvg.js +22 -11
  59. package/esm/BaseLinearDisplay/models/serverSideRenderedBlock.d.ts +37 -19
  60. package/esm/BaseLinearDisplay/models/serverSideRenderedBlock.js +151 -135
  61. package/esm/BaseLinearDisplay/models/util.d.ts +4 -4
  62. package/esm/BaseLinearDisplay/models/util.js +16 -13
  63. package/esm/BaseLinearDisplay/renderSvg.d.ts +3 -0
  64. package/esm/BaseLinearDisplay/renderSvg.js +59 -0
  65. package/esm/BaseLinearDisplay/types.d.ts +47 -0
  66. package/esm/BaseLinearDisplay/types.js +3 -0
  67. package/esm/BaseLinearDisplay/util.d.ts +15 -0
  68. package/esm/BaseLinearDisplay/util.js +61 -0
  69. package/esm/BasicTrack/configSchema.d.ts +16 -11
  70. package/esm/BasicTrack/index.js +1 -1
  71. package/esm/FeatureTrack/configSchema.d.ts +16 -11
  72. package/esm/FeatureTrack/index.js +1 -1
  73. package/esm/LaunchLinearGenomeView/index.js +12 -62
  74. package/esm/LinearBareDisplay/configSchema.d.ts +4 -4
  75. package/esm/LinearBareDisplay/configSchema.js +1 -1
  76. package/esm/LinearBareDisplay/index.d.ts +2 -2
  77. package/esm/LinearBareDisplay/index.js +5 -5
  78. package/esm/LinearBareDisplay/model.d.ts +959 -92
  79. package/esm/LinearBareDisplay/model.js +3 -6
  80. package/esm/LinearBasicDisplay/components/LinearBasicDisplayComponent.d.ts +5 -0
  81. package/esm/LinearBasicDisplay/components/LinearBasicDisplayComponent.js +9 -0
  82. package/esm/LinearBasicDisplay/configSchema.d.ts +4 -4
  83. package/esm/LinearBasicDisplay/configSchema.js +1 -1
  84. package/esm/LinearBasicDisplay/index.d.ts +2 -2
  85. package/esm/LinearBasicDisplay/index.js +6 -6
  86. package/esm/LinearBasicDisplay/model.d.ts +1134 -122
  87. package/esm/LinearBasicDisplay/model.js +116 -116
  88. package/esm/{LinearBasicDisplay → LinearFeatureDisplay}/components/AddFiltersDialog.js +2 -2
  89. package/esm/{LinearBasicDisplay → LinearFeatureDisplay}/components/SetMaxHeightDialog.js +3 -3
  90. package/{dist/LinearBasicDisplay → esm/LinearFeatureDisplay}/configSchema.d.ts +4 -4
  91. package/esm/LinearFeatureDisplay/configSchema.js +11 -0
  92. package/esm/LinearFeatureDisplay/index.d.ts +3 -0
  93. package/esm/LinearFeatureDisplay/index.js +2 -0
  94. package/esm/LinearFeatureDisplay/model.d.ts +1415 -0
  95. package/esm/LinearFeatureDisplay/model.js +265 -0
  96. package/esm/LinearGenomeView/SVGErrorBox.d.ts +5 -0
  97. package/esm/LinearGenomeView/SVGErrorBox.js +4 -0
  98. package/esm/LinearGenomeView/afterAttach.d.ts +5 -0
  99. package/esm/LinearGenomeView/afterAttach.js +95 -0
  100. package/esm/LinearGenomeView/components/CenterLine.js +6 -4
  101. package/esm/LinearGenomeView/components/Cytobands.js +4 -4
  102. package/esm/LinearGenomeView/components/ExportSvgDialog.d.ts +1 -1
  103. package/esm/LinearGenomeView/components/ExportSvgDialog.js +5 -1
  104. package/esm/LinearGenomeView/components/GetSequenceDialog.d.ts +8 -2
  105. package/esm/LinearGenomeView/components/GetSequenceDialog.js +13 -16
  106. package/esm/LinearGenomeView/components/Gridlines.js +18 -15
  107. package/esm/LinearGenomeView/components/Header.js +9 -9
  108. package/esm/LinearGenomeView/components/HeaderPanControls.js +2 -2
  109. package/esm/LinearGenomeView/components/HeaderRegionWidth.js +4 -5
  110. package/esm/LinearGenomeView/components/HeaderTrackSelectorButton.js +2 -2
  111. package/esm/LinearGenomeView/components/HeaderZoomControls.js +3 -3
  112. package/esm/LinearGenomeView/components/Highlight.d.ts +1 -1
  113. package/esm/LinearGenomeView/components/Highlight.js +6 -6
  114. package/esm/LinearGenomeView/components/ImportForm.d.ts +1 -1
  115. package/esm/LinearGenomeView/components/ImportForm.js +14 -12
  116. package/esm/LinearGenomeView/components/ImportFormRefNameAutocomplete.js +3 -3
  117. package/esm/LinearGenomeView/components/LinearGenomeView.js +7 -7
  118. package/esm/LinearGenomeView/components/LinearGenomeViewContainer.js +7 -8
  119. package/esm/LinearGenomeView/components/MiniControls.js +6 -6
  120. package/esm/LinearGenomeView/components/NoTracksActiveButton.js +2 -2
  121. package/esm/LinearGenomeView/components/OverviewHighlight.d.ts +1 -1
  122. package/esm/LinearGenomeView/components/OverviewHighlight.js +5 -5
  123. package/esm/LinearGenomeView/components/OverviewRubberband.js +4 -4
  124. package/esm/LinearGenomeView/components/OverviewRubberbandHoverTooltip.js +9 -5
  125. package/esm/LinearGenomeView/components/OverviewScalebar.js +36 -28
  126. package/esm/LinearGenomeView/components/OverviewScalebarPolygon.js +5 -5
  127. package/esm/LinearGenomeView/components/OverviewScalebarTickLabels.js +7 -7
  128. package/esm/LinearGenomeView/components/RefNameAutocomplete/EndAdornment.js +1 -1
  129. package/esm/LinearGenomeView/components/RefNameAutocomplete/index.d.ts +1 -1
  130. package/esm/LinearGenomeView/components/RefNameAutocomplete/index.js +10 -10
  131. package/esm/LinearGenomeView/components/RegionWidthEditorDialog.d.ts +1 -1
  132. package/esm/LinearGenomeView/components/RegionWidthEditorDialog.js +6 -4
  133. package/esm/LinearGenomeView/components/Rubberband.js +9 -7
  134. package/esm/LinearGenomeView/components/RubberbandSpan.js +4 -5
  135. package/esm/LinearGenomeView/components/Scalebar.js +8 -10
  136. package/esm/LinearGenomeView/components/ScalebarCoordinateLabels.d.ts +1 -1
  137. package/esm/LinearGenomeView/components/ScalebarCoordinateLabels.js +50 -17
  138. package/esm/LinearGenomeView/components/ScalebarRefNameLabels.d.ts +1 -1
  139. package/esm/LinearGenomeView/components/ScalebarRefNameLabels.js +13 -11
  140. package/esm/LinearGenomeView/components/SearchBox.d.ts +1 -1
  141. package/esm/LinearGenomeView/components/SearchBox.js +8 -9
  142. package/esm/LinearGenomeView/components/SearchResultsDialog.d.ts +1 -1
  143. package/esm/LinearGenomeView/components/SearchResultsDialog.js +2 -2
  144. package/esm/LinearGenomeView/components/SearchResultsTable.d.ts +1 -1
  145. package/esm/LinearGenomeView/components/SearchResultsTable.js +4 -6
  146. package/esm/LinearGenomeView/components/SequenceSearchDialog.js +6 -6
  147. package/esm/LinearGenomeView/components/TrackContainer.js +32 -20
  148. package/esm/LinearGenomeView/components/TrackLabel.js +10 -11
  149. package/esm/LinearGenomeView/components/TrackLabelContainer.js +7 -8
  150. package/esm/LinearGenomeView/components/TrackLabelDragHandle.js +1 -1
  151. package/esm/LinearGenomeView/components/TrackLabelMenu.js +80 -68
  152. package/esm/LinearGenomeView/components/TrackRenderingContainer.d.ts +1 -2
  153. package/esm/LinearGenomeView/components/TrackRenderingContainer.js +5 -5
  154. package/esm/LinearGenomeView/components/TracksContainer.js +18 -15
  155. package/esm/LinearGenomeView/components/VerticalGuide.js +5 -3
  156. package/esm/LinearGenomeView/components/fetchSequence.d.ts +7 -2
  157. package/esm/LinearGenomeView/components/useRangeSelect.d.ts +27 -2
  158. package/esm/LinearGenomeView/components/useRangeSelect.js +26 -20
  159. package/esm/LinearGenomeView/components/useWheelScroll.js +22 -12
  160. package/esm/LinearGenomeView/components/util.d.ts +2 -13
  161. package/esm/LinearGenomeView/components/util.js +12 -31
  162. package/esm/LinearGenomeView/index.d.ts +1 -1
  163. package/esm/LinearGenomeView/index.js +3 -3
  164. package/esm/LinearGenomeView/keyboardHandler.d.ts +2 -0
  165. package/esm/LinearGenomeView/keyboardHandler.js +29 -0
  166. package/esm/LinearGenomeView/menuItems.d.ts +7 -0
  167. package/esm/LinearGenomeView/menuItems.js +299 -0
  168. package/esm/LinearGenomeView/model.d.ts +92 -89
  169. package/esm/LinearGenomeView/model.js +166 -414
  170. package/esm/LinearGenomeView/svgExportUtil.d.ts +9 -0
  171. package/esm/LinearGenomeView/svgExportUtil.js +6 -0
  172. package/{dist/LinearGenomeView/svgcomponents/SVGRegionSeparators.d.ts → esm/LinearGenomeView/svgcomponents/SVGGridlines.d.ts} +2 -2
  173. package/esm/LinearGenomeView/svgcomponents/SVGGridlines.js +20 -0
  174. package/esm/LinearGenomeView/svgcomponents/SVGHeader.js +5 -5
  175. package/esm/LinearGenomeView/svgcomponents/SVGLinearGenomeView.d.ts +4 -3
  176. package/esm/LinearGenomeView/svgcomponents/SVGLinearGenomeView.js +24 -12
  177. package/esm/LinearGenomeView/svgcomponents/SVGRuler.js +13 -5
  178. package/esm/LinearGenomeView/svgcomponents/SVGTracks.js +2 -2
  179. package/esm/LinearGenomeView/types.d.ts +5 -1
  180. package/esm/LinearGenomeView/util.d.ts +2 -2
  181. package/esm/LinearGenomeView/util.js +8 -6
  182. package/esm/index.d.ts +975 -94
  183. package/esm/index.js +37 -38
  184. package/esm/searchUtils.d.ts +1 -1
  185. package/esm/searchUtils.js +6 -4
  186. package/package.json +28 -33
  187. package/dist/BaseLinearDisplay/components/BaseLinearDisplay.d.ts +0 -8
  188. package/dist/BaseLinearDisplay/components/BaseLinearDisplay.js +0 -72
  189. package/dist/BaseLinearDisplay/components/Block.d.ts +0 -14
  190. package/dist/BaseLinearDisplay/components/Block.js +0 -50
  191. package/dist/BaseLinearDisplay/components/BlockErrorMessage.d.ts +0 -7
  192. package/dist/BaseLinearDisplay/components/BlockErrorMessage.js +0 -27
  193. package/dist/BaseLinearDisplay/components/BlockLoadingMessage.d.ts +0 -6
  194. package/dist/BaseLinearDisplay/components/BlockLoadingMessage.js +0 -26
  195. package/dist/BaseLinearDisplay/components/BlockMsg.d.ts +0 -6
  196. package/dist/BaseLinearDisplay/components/BlockMsg.js +0 -20
  197. package/dist/BaseLinearDisplay/components/LinearBlocks.d.ts +0 -9
  198. package/dist/BaseLinearDisplay/components/LinearBlocks.js +0 -61
  199. package/dist/BaseLinearDisplay/components/ServerSideRenderedBlockContent.d.ts +0 -11
  200. package/dist/BaseLinearDisplay/components/ServerSideRenderedBlockContent.js +0 -59
  201. package/dist/BaseLinearDisplay/components/TooLargeMessage.d.ts +0 -10
  202. package/dist/BaseLinearDisplay/components/TooLargeMessage.js +0 -25
  203. package/dist/BaseLinearDisplay/components/Tooltip.d.ts +0 -11
  204. package/dist/BaseLinearDisplay/components/Tooltip.js +0 -24
  205. package/dist/BaseLinearDisplay/index.d.ts +0 -8
  206. package/dist/BaseLinearDisplay/index.js +0 -20
  207. package/dist/BaseLinearDisplay/models/BaseLinearDisplayModel.d.ts +0 -311
  208. package/dist/BaseLinearDisplay/models/BaseLinearDisplayModel.js +0 -325
  209. package/dist/BaseLinearDisplay/models/FeatureDensityMixin.d.ts +0 -32
  210. package/dist/BaseLinearDisplay/models/FeatureDensityMixin.js +0 -122
  211. package/dist/BaseLinearDisplay/models/TrackHeightMixin.d.ts +0 -11
  212. package/dist/BaseLinearDisplay/models/TrackHeightMixin.js +0 -35
  213. package/dist/BaseLinearDisplay/models/autorunFeatureDensityStats.d.ts +0 -2
  214. package/dist/BaseLinearDisplay/models/autorunFeatureDensityStats.js +0 -33
  215. package/dist/BaseLinearDisplay/models/configSchema.d.ts +0 -29
  216. package/dist/BaseLinearDisplay/models/configSchema.js +0 -35
  217. package/dist/BaseLinearDisplay/models/renderSvg.d.ts +0 -7
  218. package/dist/BaseLinearDisplay/models/renderSvg.js +0 -80
  219. package/dist/BaseLinearDisplay/models/serverSideRenderedBlock.d.ts +0 -78
  220. package/dist/BaseLinearDisplay/models/serverSideRenderedBlock.js +0 -229
  221. package/dist/BaseLinearDisplay/models/util.d.ts +0 -22
  222. package/dist/BaseLinearDisplay/models/util.js +0 -45
  223. package/dist/BasicTrack/configSchema.d.ts +0 -80
  224. package/dist/BasicTrack/configSchema.js +0 -10
  225. package/dist/BasicTrack/index.d.ts +0 -2
  226. package/dist/BasicTrack/index.js +0 -18
  227. package/dist/FeatureTrack/configSchema.d.ts +0 -80
  228. package/dist/FeatureTrack/configSchema.js +0 -10
  229. package/dist/FeatureTrack/index.d.ts +0 -2
  230. package/dist/FeatureTrack/index.js +0 -19
  231. package/dist/LaunchLinearGenomeView/index.d.ts +0 -2
  232. package/dist/LaunchLinearGenomeView/index.js +0 -70
  233. package/dist/LinearBareDisplay/configSchema.d.ts +0 -32
  234. package/dist/LinearBareDisplay/configSchema.js +0 -13
  235. package/dist/LinearBareDisplay/index.d.ts +0 -4
  236. package/dist/LinearBareDisplay/index.js +0 -26
  237. package/dist/LinearBareDisplay/model.d.ts +0 -309
  238. package/dist/LinearBareDisplay/model.js +0 -38
  239. package/dist/LinearBasicDisplay/components/AddFiltersDialog.js +0 -61
  240. package/dist/LinearBasicDisplay/components/SetMaxHeightDialog.js +0 -28
  241. package/dist/LinearBasicDisplay/configSchema.js +0 -13
  242. package/dist/LinearBasicDisplay/index.d.ts +0 -4
  243. package/dist/LinearBasicDisplay/index.js +0 -29
  244. package/dist/LinearBasicDisplay/model.d.ts +0 -346
  245. package/dist/LinearBasicDisplay/model.js +0 -192
  246. package/dist/LinearGenomeView/components/CenterLine.d.ts +0 -6
  247. package/dist/LinearGenomeView/components/CenterLine.js +0 -38
  248. package/dist/LinearGenomeView/components/Cytobands.d.ts +0 -9
  249. package/dist/LinearGenomeView/components/Cytobands.js +0 -89
  250. package/dist/LinearGenomeView/components/ExportSvgDialog.d.ts +0 -7
  251. package/dist/LinearGenomeView/components/ExportSvgDialog.js +0 -57
  252. package/dist/LinearGenomeView/components/GetSequenceDialog.d.ts +0 -6
  253. package/dist/LinearGenomeView/components/GetSequenceDialog.js +0 -109
  254. package/dist/LinearGenomeView/components/Gridlines.d.ts +0 -7
  255. package/dist/LinearGenomeView/components/Gridlines.js +0 -70
  256. package/dist/LinearGenomeView/components/Header.d.ts +0 -5
  257. package/dist/LinearGenomeView/components/Header.js +0 -38
  258. package/dist/LinearGenomeView/components/HeaderPanControls.d.ts +0 -6
  259. package/dist/LinearGenomeView/components/HeaderPanControls.js +0 -27
  260. package/dist/LinearGenomeView/components/HeaderRegionWidth.d.ts +0 -5
  261. package/dist/LinearGenomeView/components/HeaderRegionWidth.js +0 -21
  262. package/dist/LinearGenomeView/components/HeaderTrackSelectorButton.d.ts +0 -5
  263. package/dist/LinearGenomeView/components/HeaderTrackSelectorButton.js +0 -19
  264. package/dist/LinearGenomeView/components/HeaderZoomControls.d.ts +0 -5
  265. package/dist/LinearGenomeView/components/HeaderZoomControls.js +0 -109
  266. package/dist/LinearGenomeView/components/Highlight.d.ts +0 -12
  267. package/dist/LinearGenomeView/components/Highlight.js +0 -95
  268. package/dist/LinearGenomeView/components/ImportForm.d.ts +0 -6
  269. package/dist/LinearGenomeView/components/ImportForm.js +0 -80
  270. package/dist/LinearGenomeView/components/ImportFormRefNameAutocomplete.d.ts +0 -11
  271. package/dist/LinearGenomeView/components/ImportFormRefNameAutocomplete.js +0 -32
  272. package/dist/LinearGenomeView/components/LinearGenomeView.d.ts +0 -5
  273. package/dist/LinearGenomeView/components/LinearGenomeView.js +0 -57
  274. package/dist/LinearGenomeView/components/LinearGenomeViewContainer.d.ts +0 -5
  275. package/dist/LinearGenomeView/components/LinearGenomeViewContainer.js +0 -98
  276. package/dist/LinearGenomeView/components/MiniControls.d.ts +0 -5
  277. package/dist/LinearGenomeView/components/MiniControls.js +0 -36
  278. package/dist/LinearGenomeView/components/NoTracksActiveButton.d.ts +0 -5
  279. package/dist/LinearGenomeView/components/NoTracksActiveButton.js +0 -23
  280. package/dist/LinearGenomeView/components/OverviewHighlight.d.ts +0 -8
  281. package/dist/LinearGenomeView/components/OverviewHighlight.js +0 -50
  282. package/dist/LinearGenomeView/components/OverviewRubberband.d.ts +0 -9
  283. package/dist/LinearGenomeView/components/OverviewRubberband.js +0 -113
  284. package/dist/LinearGenomeView/components/OverviewRubberbandHoverTooltip.d.ts +0 -10
  285. package/dist/LinearGenomeView/components/OverviewRubberbandHoverTooltip.js +0 -28
  286. package/dist/LinearGenomeView/components/OverviewScalebar.d.ts +0 -7
  287. package/dist/LinearGenomeView/components/OverviewScalebar.js +0 -146
  288. package/dist/LinearGenomeView/components/OverviewScalebarPolygon.d.ts +0 -8
  289. package/dist/LinearGenomeView/components/OverviewScalebarPolygon.js +0 -41
  290. package/dist/LinearGenomeView/components/OverviewScalebarTickLabels.d.ts +0 -10
  291. package/dist/LinearGenomeView/components/OverviewScalebarTickLabels.js +0 -37
  292. package/dist/LinearGenomeView/components/RefNameAutocomplete/AutocompleteTextField.d.ts +0 -8
  293. package/dist/LinearGenomeView/components/RefNameAutocomplete/AutocompleteTextField.js +0 -18
  294. package/dist/LinearGenomeView/components/RefNameAutocomplete/EndAdornment.d.ts +0 -3
  295. package/dist/LinearGenomeView/components/RefNameAutocomplete/EndAdornment.js +0 -56
  296. package/dist/LinearGenomeView/components/RefNameAutocomplete/HelpDialog.d.ts +0 -3
  297. package/dist/LinearGenomeView/components/RefNameAutocomplete/HelpDialog.js +0 -11
  298. package/dist/LinearGenomeView/components/RefNameAutocomplete/index.d.ts +0 -16
  299. package/dist/LinearGenomeView/components/RefNameAutocomplete/index.js +0 -127
  300. package/dist/LinearGenomeView/components/RefNameAutocomplete/util.d.ts +0 -10
  301. package/dist/LinearGenomeView/components/RefNameAutocomplete/util.js +0 -53
  302. package/dist/LinearGenomeView/components/RegionWidthEditorDialog.d.ts +0 -6
  303. package/dist/LinearGenomeView/components/RegionWidthEditorDialog.js +0 -30
  304. package/dist/LinearGenomeView/components/Rubberband.d.ts +0 -7
  305. package/dist/LinearGenomeView/components/Rubberband.js +0 -35
  306. package/dist/LinearGenomeView/components/RubberbandSpan.d.ts +0 -15
  307. package/dist/LinearGenomeView/components/RubberbandSpan.js +0 -39
  308. package/dist/LinearGenomeView/components/RubberbandTooltip.d.ts +0 -5
  309. package/dist/LinearGenomeView/components/RubberbandTooltip.js +0 -20
  310. package/dist/LinearGenomeView/components/Scalebar.d.ts +0 -10
  311. package/dist/LinearGenomeView/components/Scalebar.js +0 -40
  312. package/dist/LinearGenomeView/components/ScalebarCoordinateLabels.d.ts +0 -6
  313. package/dist/LinearGenomeView/components/ScalebarCoordinateLabels.js +0 -29
  314. package/dist/LinearGenomeView/components/ScalebarCoordinateTicks.d.ts +0 -6
  315. package/dist/LinearGenomeView/components/ScalebarCoordinateTicks.js +0 -38
  316. package/dist/LinearGenomeView/components/ScalebarRefNameLabels.d.ts +0 -6
  317. package/dist/LinearGenomeView/components/ScalebarRefNameLabels.js +0 -46
  318. package/dist/LinearGenomeView/components/SearchBox.d.ts +0 -6
  319. package/dist/LinearGenomeView/components/SearchBox.js +0 -88
  320. package/dist/LinearGenomeView/components/SearchResultsDialog.d.ts +0 -9
  321. package/dist/LinearGenomeView/components/SearchResultsDialog.js +0 -15
  322. package/dist/LinearGenomeView/components/SearchResultsTable.d.ts +0 -8
  323. package/dist/LinearGenomeView/components/SearchResultsTable.js +0 -74
  324. package/dist/LinearGenomeView/components/SequenceSearchDialog.d.ts +0 -8
  325. package/dist/LinearGenomeView/components/SequenceSearchDialog.js +0 -67
  326. package/dist/LinearGenomeView/components/TrackContainer.d.ts +0 -8
  327. package/dist/LinearGenomeView/components/TrackContainer.js +0 -51
  328. package/dist/LinearGenomeView/components/TrackLabel.d.ts +0 -7
  329. package/dist/LinearGenomeView/components/TrackLabel.js +0 -49
  330. package/dist/LinearGenomeView/components/TrackLabelContainer.d.ts +0 -8
  331. package/dist/LinearGenomeView/components/TrackLabelContainer.js +0 -31
  332. package/dist/LinearGenomeView/components/TrackLabelDragHandle.d.ts +0 -8
  333. package/dist/LinearGenomeView/components/TrackLabelDragHandle.js +0 -32
  334. package/dist/LinearGenomeView/components/TrackLabelMenu.d.ts +0 -5
  335. package/dist/LinearGenomeView/components/TrackLabelMenu.js +0 -93
  336. package/dist/LinearGenomeView/components/TrackRenderingContainer.d.ts +0 -9
  337. package/dist/LinearGenomeView/components/TrackRenderingContainer.js +0 -50
  338. package/dist/LinearGenomeView/components/TracksContainer.d.ts +0 -7
  339. package/dist/LinearGenomeView/components/TracksContainer.js +0 -84
  340. package/dist/LinearGenomeView/components/VerticalGuide.d.ts +0 -7
  341. package/dist/LinearGenomeView/components/VerticalGuide.js +0 -31
  342. package/dist/LinearGenomeView/components/fetchSequence.d.ts +0 -4
  343. package/dist/LinearGenomeView/components/fetchSequence.js +0 -29
  344. package/dist/LinearGenomeView/components/useRangeSelect.d.ts +0 -59
  345. package/dist/LinearGenomeView/components/useRangeSelect.js +0 -131
  346. package/dist/LinearGenomeView/components/useSideScroll.d.ts +0 -6
  347. package/dist/LinearGenomeView/components/useSideScroll.js +0 -60
  348. package/dist/LinearGenomeView/components/useWheelScroll.d.ts +0 -7
  349. package/dist/LinearGenomeView/components/useWheelScroll.js +0 -62
  350. package/dist/LinearGenomeView/components/util.d.ts +0 -25
  351. package/dist/LinearGenomeView/components/util.js +0 -49
  352. package/dist/LinearGenomeView/consts.d.ts +0 -7
  353. package/dist/LinearGenomeView/consts.js +0 -10
  354. package/dist/LinearGenomeView/index.d.ts +0 -3
  355. package/dist/LinearGenomeView/index.js +0 -53
  356. package/dist/LinearGenomeView/model.d.ts +0 -268
  357. package/dist/LinearGenomeView/model.js +0 -1109
  358. package/dist/LinearGenomeView/svgcomponents/SVGBackground.d.ts +0 -5
  359. package/dist/LinearGenomeView/svgcomponents/SVGBackground.js +0 -10
  360. package/dist/LinearGenomeView/svgcomponents/SVGHeader.d.ts +0 -7
  361. package/dist/LinearGenomeView/svgcomponents/SVGHeader.js +0 -47
  362. package/dist/LinearGenomeView/svgcomponents/SVGLinearGenomeView.d.ts +0 -6
  363. package/dist/LinearGenomeView/svgcomponents/SVGLinearGenomeView.js +0 -42
  364. package/dist/LinearGenomeView/svgcomponents/SVGRegionSeparators.js +0 -8
  365. package/dist/LinearGenomeView/svgcomponents/SVGRuler.d.ts +0 -7
  366. package/dist/LinearGenomeView/svgcomponents/SVGRuler.js +0 -39
  367. package/dist/LinearGenomeView/svgcomponents/SVGScalebar.d.ts +0 -7
  368. package/dist/LinearGenomeView/svgcomponents/SVGScalebar.js +0 -17
  369. package/dist/LinearGenomeView/svgcomponents/SVGTrackLabel.d.ts +0 -7
  370. package/dist/LinearGenomeView/svgcomponents/SVGTrackLabel.js +0 -14
  371. package/dist/LinearGenomeView/svgcomponents/SVGTracks.d.ts +0 -21
  372. package/dist/LinearGenomeView/svgcomponents/SVGTracks.js +0 -32
  373. package/dist/LinearGenomeView/svgcomponents/util.d.ts +0 -8
  374. package/dist/LinearGenomeView/svgcomponents/util.js +0 -8
  375. package/dist/LinearGenomeView/types.d.ts +0 -43
  376. package/dist/LinearGenomeView/types.js +0 -2
  377. package/dist/LinearGenomeView/util.d.ts +0 -26
  378. package/dist/LinearGenomeView/util.js +0 -138
  379. package/dist/index.d.ts +0 -353
  380. package/dist/index.js +0 -120
  381. package/dist/searchUtils.d.ts +0 -26
  382. package/dist/searchUtils.js +0 -80
  383. package/esm/BaseLinearDisplay/components/BlockLoadingMessage.d.ts +0 -6
  384. package/esm/BaseLinearDisplay/components/BlockLoadingMessage.js +0 -24
  385. package/esm/BaseLinearDisplay/models/BaseLinearDisplayModel.d.ts +0 -311
  386. package/esm/BaseLinearDisplay/models/BaseLinearDisplayModel.js +0 -286
  387. package/esm/LinearBasicDisplay/components/AddFiltersDialog.d.ts +0 -9
  388. package/esm/LinearBasicDisplay/components/SetMaxHeightDialog.d.ts +0 -8
  389. package/esm/LinearGenomeView/components/ScalebarCoordinateTicks.d.ts +0 -6
  390. package/esm/LinearGenomeView/components/ScalebarCoordinateTicks.js +0 -36
  391. /package/{dist/LinearBasicDisplay → esm/LinearFeatureDisplay}/components/AddFiltersDialog.d.ts +0 -0
  392. /package/{dist/LinearBasicDisplay → esm/LinearFeatureDisplay}/components/SetMaxHeightDialog.d.ts +0 -0
@@ -2,45 +2,57 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { useRef } from 'react';
3
3
  import { ErrorMessage, ResizeHandle } from '@jbrowse/core/ui';
4
4
  import { ErrorBoundary } from '@jbrowse/core/ui/ErrorBoundary';
5
+ import { cx, makeStyles } from '@jbrowse/core/util/tss-react';
6
+ import { isAlive } from '@jbrowse/mobx-state-tree';
5
7
  import { Paper } from '@mui/material';
6
8
  import { observer } from 'mobx-react';
7
- import { isAlive } from 'mobx-state-tree';
8
- import { makeStyles } from 'tss-react/mui';
9
- import Gridlines from './Gridlines';
10
- import TrackLabelContainer from './TrackLabelContainer';
11
- import TrackRenderingContainer from './TrackRenderingContainer';
12
- const useStyles = makeStyles()({
9
+ import Gridlines from "./Gridlines.js";
10
+ import TrackLabelContainer from "./TrackLabelContainer.js";
11
+ import TrackRenderingContainer from "./TrackRenderingContainer.js";
12
+ import { shouldSwapTracks } from "./util.js";
13
+ const useStyles = makeStyles()(theme => ({
13
14
  root: {
14
15
  marginTop: 2,
15
16
  overflow: 'hidden',
16
17
  position: 'relative',
18
+ contain: 'layout style paint',
17
19
  },
18
20
  unpinnedTrack: {
19
21
  background: 'none',
20
22
  },
21
23
  resizeHandle: {
22
- height: 3,
24
+ height: 4,
23
25
  boxSizing: 'border-box',
24
26
  position: 'relative',
27
+ background: 'transparent',
28
+ '&:hover': {
29
+ background: theme.palette.divider,
30
+ },
25
31
  },
26
- });
27
- const TrackContainer = observer(function ({ model, track, }) {
28
- const { classes, cx } = useStyles();
32
+ }));
33
+ const TrackContainer = observer(function TrackContainer({ model, track, }) {
34
+ const { classes } = useStyles();
29
35
  const display = track.displays[0];
30
36
  const { draggingTrackId, showTrackOutlines } = model;
31
37
  const ref = useRef(null);
32
38
  return (_jsxs(Paper, { ref: ref, className: cx(classes.root, track.pinned ? null : classes.unpinnedTrack), variant: showTrackOutlines ? 'outlined' : undefined, elevation: showTrackOutlines ? undefined : 0, onClick: event => {
33
- var _a;
34
- if (event.detail === 2 && !track.displays[0].featureIdUnderMouse) {
35
- const left = ((_a = ref.current) === null || _a === void 0 ? void 0 : _a.getBoundingClientRect().left) || 0;
39
+ if (event.detail === 2 && !display.featureIdUnderMouse) {
40
+ const left = ref.current?.getBoundingClientRect().left || 0;
36
41
  model.zoomTo(model.bpPerPx / 2, event.clientX - left, true);
37
42
  }
38
- }, children: [track.pinned ? _jsx(Gridlines, { model: model, offset: 1 }) : null, _jsx(TrackLabelContainer, { track: track, view: model }), _jsx(ErrorBoundary, { FallbackComponent: e => _jsx(ErrorMessage, { error: e.error }), children: _jsx(TrackRenderingContainer, { model: model, track: track, onDragEnter: () => {
39
- if (isAlive(display) &&
40
- draggingTrackId !== undefined &&
41
- draggingTrackId !== display.id) {
42
- model.moveTrack(draggingTrackId, track.id);
43
- }
44
- } }) }), _jsx(ResizeHandle, { onDrag: display.resizeHeight, className: classes.resizeHandle })] }));
43
+ }, onDragOver: event => {
44
+ if (isAlive(display) &&
45
+ draggingTrackId !== undefined &&
46
+ draggingTrackId !== display.id) {
47
+ const draggingIdx = model.tracks.findIndex(t => t.id === draggingTrackId);
48
+ const targetIdx = model.tracks.findIndex(t => t.id === track.id);
49
+ const movingDown = targetIdx > draggingIdx;
50
+ const currentY = event.clientY;
51
+ if (shouldSwapTracks(model.lastTrackDragY, currentY, movingDown)) {
52
+ model.setLastTrackDragY(currentY);
53
+ model.moveTrack(draggingTrackId, track.id);
54
+ }
55
+ }
56
+ }, children: [track.pinned ? _jsx(Gridlines, { model: model, offset: 1 }) : null, _jsx(TrackLabelContainer, { track: track, view: model }), _jsx(ErrorBoundary, { FallbackComponent: e => _jsx(ErrorMessage, { error: e.error }), children: _jsx(TrackRenderingContainer, { model: model, track: track }) }), _jsx(ResizeHandle, { onDrag: display.resizeHeight, className: classes.resizeHandle })] }));
45
57
  });
46
58
  export default TrackContainer;
@@ -1,15 +1,14 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { forwardRef } from 'react';
3
- import { getConf } from '@jbrowse/core/configuration';
4
3
  import { SanitizedHTML } from '@jbrowse/core/ui';
5
4
  import { getContainingView, getSession } from '@jbrowse/core/util';
6
5
  import { getTrackName } from '@jbrowse/core/util/tracks';
6
+ import { cx, makeStyles } from '@jbrowse/core/util/tss-react';
7
7
  import CloseIcon from '@mui/icons-material/Close';
8
8
  import { IconButton, Paper, Typography, alpha } from '@mui/material';
9
9
  import { observer } from 'mobx-react';
10
- import { makeStyles } from 'tss-react/mui';
11
- import TrackLabelDragHandle from './TrackLabelDragHandle';
12
- import TrackLabelMenu from './TrackLabelMenu';
10
+ import TrackLabelDragHandle from "./TrackLabelDragHandle.js";
11
+ import TrackLabelMenu from "./TrackLabelMenu.js";
13
12
  const useStyles = makeStyles()(theme => ({
14
13
  root: {
15
14
  zIndex: 200,
@@ -19,25 +18,25 @@ const useStyles = makeStyles()(theme => ({
19
18
  },
20
19
  },
21
20
  trackName: {
21
+ margin: '0 auto',
22
+ width: '90%',
22
23
  fontSize: '0.8rem',
24
+ pointerEvents: 'none',
23
25
  },
24
26
  iconButton: {
25
27
  padding: theme.spacing(1),
26
28
  },
27
29
  }));
28
30
  const TrackLabel = observer(forwardRef(function TrackLabel2({ track, className }, ref) {
29
- const { classes, cx } = useStyles();
31
+ const { classes } = useStyles();
30
32
  const view = getContainingView(track);
31
33
  const session = getSession(track);
32
- const trackConf = track.configuration;
33
34
  const { minimized } = track;
34
- const trackId = getConf(track, 'trackId');
35
- const trackName = getTrackName(trackConf, session);
35
+ const trackId = track.trackId;
36
+ const trackName = getTrackName(track.configuration, session);
36
37
  return (_jsxs(Paper, { ref: ref, className: cx(className, classes.root), onClick: event => {
37
38
  event.stopPropagation();
38
- }, children: [_jsx(TrackLabelDragHandle, { track: track, trackId: trackId, view: view }), _jsx(IconButton, { onClick: () => view.hideTrack(trackId), className: classes.iconButton, title: "close this track", children: _jsx(CloseIcon, { fontSize: "small" }) }), _jsx(Typography, { variant: "body1", component: "span", className: classes.trackName, onMouseDown: event => {
39
- event.stopPropagation();
40
- }, children: _jsx(SanitizedHTML, { html: [trackName, minimized ? '(minimized)' : '']
39
+ }, children: [_jsx(TrackLabelDragHandle, { track: track, trackId: trackId, view: view }), _jsx(IconButton, { onClick: () => view.hideTrack(trackId), className: classes.iconButton, title: "close this track", children: _jsx(CloseIcon, { fontSize: "small" }) }), _jsx(Typography, { variant: "body1", component: "span", className: classes.trackName, children: _jsx(SanitizedHTML, { html: [trackName, minimized ? '(minimized)' : '']
41
40
  .filter(f => !!f)
42
41
  .join(' ') }) }), _jsx(TrackLabelMenu, { track: track })] }));
43
42
  }));
@@ -1,7 +1,7 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { cx, makeStyles } from '@jbrowse/core/util/tss-react';
2
3
  import { observer } from 'mobx-react';
3
- import { makeStyles } from 'tss-react/mui';
4
- import TrackLabel from './TrackLabel';
4
+ import TrackLabel from "./TrackLabel.js";
5
5
  const useStyles = makeStyles()({
6
6
  trackLabel: {
7
7
  zIndex: 2,
@@ -14,13 +14,12 @@ const useStyles = makeStyles()({
14
14
  position: 'absolute',
15
15
  },
16
16
  });
17
- const TrackLabelContainer = observer(function ({ track, view, }) {
18
- const { classes, cx } = useStyles();
17
+ const TrackLabelContainer = observer(function TrackLabelContainer({ track, view, }) {
18
+ const { classes } = useStyles();
19
19
  const display = track.displays[0];
20
- const { trackLabel, trackLabelOverlap, trackLabelOffset } = classes;
21
20
  const labelStyle = view.trackLabelsSetting !== 'overlapping' || display.prefersOffset
22
- ? trackLabelOffset
23
- : trackLabelOverlap;
24
- return view.trackLabelsSetting !== 'hidden' ? (_jsx(TrackLabel, { track: track, className: cx(trackLabel, labelStyle) })) : null;
21
+ ? classes.trackLabelOffset
22
+ : classes.trackLabelOverlap;
23
+ return view.trackLabelsSetting !== 'hidden' ? (_jsx(TrackLabel, { track: track, className: cx(classes.trackLabel, labelStyle) })) : null;
25
24
  });
26
25
  export default TrackLabelContainer;
@@ -1,6 +1,6 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { makeStyles } from '@jbrowse/core/util/tss-react';
2
3
  import DragIcon from '@mui/icons-material/DragIndicator';
3
- import { makeStyles } from 'tss-react/mui';
4
4
  const useStyles = makeStyles()({
5
5
  dragHandle: {
6
6
  cursor: 'grab',
@@ -1,4 +1,5 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { useCallback } from 'react';
2
3
  import CascadingMenuButton from '@jbrowse/core/ui/CascadingMenuButton';
3
4
  import { getContainingView, getSession } from '@jbrowse/core/util';
4
5
  import AddIcon from '@mui/icons-material/Add';
@@ -6,83 +7,94 @@ import KeyboardArrowDownIcon from '@mui/icons-material/KeyboardArrowDown';
6
7
  import KeyboardArrowUpIcon from '@mui/icons-material/KeyboardArrowUp';
7
8
  import KeyboardDoubleArrowDownIcon from '@mui/icons-material/KeyboardDoubleArrowDown';
8
9
  import KeyboardDoubleArrowUpIcon from '@mui/icons-material/KeyboardDoubleArrowUp';
10
+ import LowPriorityIcon from '@mui/icons-material/LowPriority';
9
11
  import MinimizeIcon from '@mui/icons-material/Minimize';
10
12
  import MoreVertIcon from '@mui/icons-material/MoreVert';
11
13
  import PushPinIcon from '@mui/icons-material/PushPin';
12
14
  import { observer } from 'mobx-react';
13
- const TrackLabelMenu = observer(function ({ track, }) {
14
- var _a;
15
+ const TrackLabelMenu = observer(function TrackLabelMenu({ track, }) {
15
16
  const view = getContainingView(track);
16
17
  const session = getSession(track);
17
- const trackConf = track.configuration;
18
- const minimized = track.minimized;
19
- const pinned = track.pinned;
20
- const { isTopLevelView } = view;
21
- const items = [
22
- ...(!isTopLevelView
23
- ? []
24
- : [
25
- {
26
- label: pinned ? 'Unpin track' : 'Pin track',
27
- icon: PushPinIcon,
28
- onClick: () => {
29
- track.setPinned(!pinned);
30
- },
31
- },
32
- ]),
33
- {
34
- label: 'Track order',
35
- type: 'subMenu',
36
- priority: 2000,
37
- subMenu: [
38
- {
39
- label: minimized ? 'Restore track' : 'Minimize track',
40
- icon: minimized ? AddIcon : MinimizeIcon,
41
- onClick: () => {
42
- track.setMinimized(!minimized);
43
- },
44
- },
45
- ...(view.tracks.length > 2
46
- ? [
47
- {
48
- label: 'Move track to top',
49
- icon: KeyboardDoubleArrowUpIcon,
50
- onClick: () => {
51
- view.moveTrackToTop(track.id);
18
+ const getMenuItems = useCallback(() => {
19
+ const trackConf = track.configuration;
20
+ const minimized = track.minimized;
21
+ const pinned = track.pinned;
22
+ const { isTopLevelView } = view;
23
+ const trackMenuItems = track.trackMenuItems();
24
+ const saveTrackData = trackMenuItems.find(item => 'label' in item && item.label === 'Save track data');
25
+ const remainingTrackMenuItems = trackMenuItems.filter(item => !('label' in item) || item.label !== 'Save track data');
26
+ const sessionItems = session.getTrackActionMenuItems?.(trackConf, saveTrackData ? [saveTrackData] : []) || [];
27
+ return [
28
+ {
29
+ label: 'Track order',
30
+ icon: LowPriorityIcon,
31
+ type: 'subMenu',
32
+ priority: 1000,
33
+ subMenu: [
34
+ ...(!isTopLevelView
35
+ ? []
36
+ : [
37
+ {
38
+ label: pinned ? 'Unpin track' : 'Pin track',
39
+ icon: PushPinIcon,
40
+ onClick: () => {
41
+ track.setPinned(!pinned);
42
+ },
52
43
  },
44
+ ]),
45
+ {
46
+ label: minimized ? 'Restore track' : 'Minimize track',
47
+ icon: minimized ? AddIcon : MinimizeIcon,
48
+ onClick: () => {
49
+ track.setMinimized(!minimized);
53
50
  },
54
- ]
55
- : []),
56
- {
57
- label: 'Move track up',
58
- icon: KeyboardArrowUpIcon,
59
- onClick: () => {
60
- view.moveTrackUp(track.id);
61
51
  },
62
- },
63
- {
64
- label: 'Move track down',
65
- icon: KeyboardArrowDownIcon,
66
- onClick: () => {
67
- view.moveTrackDown(track.id);
68
- },
69
- },
70
- ...(view.tracks.length > 2
71
- ? [
72
- {
73
- label: 'Move track to bottom',
74
- icon: KeyboardDoubleArrowDownIcon,
75
- onClick: () => {
76
- view.moveTrackToBottom(track.id);
52
+ ...(view.tracks.length > 2
53
+ ? [
54
+ {
55
+ label: 'Move track to top',
56
+ icon: KeyboardDoubleArrowUpIcon,
57
+ onClick: () => {
58
+ view.moveTrackToTop(track.id);
59
+ },
77
60
  },
78
- },
79
- ]
80
- : []),
81
- ],
82
- },
83
- ...(((_a = session.getTrackActionMenuItems) === null || _a === void 0 ? void 0 : _a.call(session, trackConf)) || []),
84
- ...track.trackMenuItems(),
85
- ].sort((a, b) => ((b === null || b === void 0 ? void 0 : b.priority) || 0) - ((a === null || a === void 0 ? void 0 : a.priority) || 0));
86
- return (_jsx(CascadingMenuButton, { menuItems: items, "data-testid": "track_menu_icon", children: _jsx(MoreVertIcon, { fontSize: "small" }) }));
61
+ ]
62
+ : []),
63
+ ...(view.tracks.length > 1
64
+ ? [
65
+ {
66
+ label: 'Move track up',
67
+ icon: KeyboardArrowUpIcon,
68
+ onClick: () => {
69
+ view.moveTrackUp(track.id);
70
+ },
71
+ },
72
+ {
73
+ label: 'Move track down',
74
+ icon: KeyboardArrowDownIcon,
75
+ onClick: () => {
76
+ view.moveTrackDown(track.id);
77
+ },
78
+ },
79
+ ]
80
+ : []),
81
+ ...(view.tracks.length > 2
82
+ ? [
83
+ {
84
+ label: 'Move track to bottom',
85
+ icon: KeyboardDoubleArrowDownIcon,
86
+ onClick: () => {
87
+ view.moveTrackToBottom(track.id);
88
+ },
89
+ },
90
+ ]
91
+ : []),
92
+ ],
93
+ },
94
+ ...sessionItems,
95
+ ...remainingTrackMenuItems,
96
+ ].sort((a, b) => (b.priority || 0) - (a.priority || 0));
97
+ }, [track, view, session]);
98
+ return (_jsx(CascadingMenuButton, { menuItems: getMenuItems, "data-testid": "track_menu_icon", children: _jsx(MoreVertIcon, { fontSize: "small" }) }));
87
99
  });
88
100
  export default TrackLabelMenu;
@@ -1,9 +1,8 @@
1
1
  import type { LinearGenomeViewModel } from '..';
2
2
  import type { BaseTrackModel } from '@jbrowse/core/pluggableElementTypes/models';
3
3
  type LGV = LinearGenomeViewModel;
4
- declare const TrackRenderingContainer: ({ model, track, onDragEnter, }: {
4
+ declare const TrackRenderingContainer: ({ model, track, }: {
5
5
  model: LGV;
6
6
  track: BaseTrackModel;
7
- onDragEnter: () => void;
8
7
  }) => import("react/jsx-runtime").JSX.Element;
9
8
  export default TrackRenderingContainer;
@@ -1,9 +1,8 @@
1
1
  import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { Suspense, useEffect, useRef } from 'react';
3
- import { getConf } from '@jbrowse/core/configuration';
4
3
  import { LoadingEllipses } from '@jbrowse/core/ui';
4
+ import { makeStyles } from '@jbrowse/core/util/tss-react';
5
5
  import { observer } from 'mobx-react';
6
- import { makeStyles } from 'tss-react/mui';
7
6
  const useStyles = makeStyles()({
8
7
  renderingComponentContainer: {
9
8
  position: 'absolute',
@@ -17,14 +16,15 @@ const useStyles = makeStyles()({
17
16
  whiteSpace: 'nowrap',
18
17
  position: 'relative',
19
18
  background: 'none',
19
+ contain: 'strict',
20
20
  },
21
21
  });
22
- const TrackRenderingContainer = observer(function ({ model, track, onDragEnter, }) {
22
+ const TrackRenderingContainer = observer(function TrackRenderingContainer({ model, track, }) {
23
23
  const { classes } = useStyles();
24
24
  const display = track.displays[0];
25
25
  const { height, RenderingComponent, DisplayBlurb } = display;
26
26
  const { trackRefs, id, scaleFactor } = model;
27
- const trackId = getConf(track, 'trackId');
27
+ const trackId = track.trackId;
28
28
  const ref = useRef(null);
29
29
  const minimized = track.minimized;
30
30
  useEffect(() => {
@@ -37,7 +37,7 @@ const TrackRenderingContainer = observer(function ({ model, track, onDragEnter,
37
37
  }, [trackRefs, trackId]);
38
38
  return (_jsx("div", { className: classes.trackRenderingContainer, style: {
39
39
  height: minimized ? 20 : height,
40
- }, onScroll: evt => display.setScrollTop(evt.currentTarget.scrollTop), onDragEnter: onDragEnter, "data-testid": `trackRenderingContainer-${id}-${trackId}`, children: !minimized ? (_jsxs(_Fragment, { children: [_jsx("div", { ref: ref, className: classes.renderingComponentContainer, style: {
40
+ }, onScroll: evt => display.setScrollTop(evt.currentTarget.scrollTop), "data-testid": `trackRenderingContainer-${id}-${trackId}`, children: !minimized ? (_jsxs(_Fragment, { children: [_jsx("div", { ref: ref, className: classes.renderingComponentContainer, style: {
41
41
  transform: scaleFactor !== 1 ? `scaleX(${scaleFactor})` : undefined,
42
42
  }, children: _jsx(Suspense, { fallback: _jsx(LoadingEllipses, {}), children: _jsx(RenderingComponent, { model: display, onHorizontalScroll: model.horizontalScroll }) }) }), DisplayBlurb ? (_jsx("div", { style: {
43
43
  position: 'absolute',
@@ -2,22 +2,23 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { Suspense, lazy, useRef } from 'react';
3
3
  import { Menu } from '@jbrowse/core/ui';
4
4
  import { getEnv } from '@jbrowse/core/util';
5
+ import { makeStyles } from '@jbrowse/core/util/tss-react';
5
6
  import { observer } from 'mobx-react';
6
- import { makeStyles } from 'tss-react/mui';
7
- import Gridlines from './Gridlines';
8
- import Rubberband from './Rubberband';
9
- import Scalebar from './Scalebar';
10
- import VerticalGuide from './VerticalGuide';
11
- import { SCALE_BAR_HEIGHT } from '../consts';
12
- import { useRangeSelect } from './useRangeSelect';
13
- import { useSideScroll } from './useSideScroll';
14
- import { useWheelScroll } from './useWheelScroll';
15
- const CenterLine = lazy(() => import('./CenterLine'));
16
- const Highlight = lazy(() => import('./Highlight'));
17
- const RubberbandSpan = lazy(() => import('./RubberbandSpan'));
7
+ import Gridlines from "./Gridlines.js";
8
+ import Rubberband from "./Rubberband.js";
9
+ import Scalebar from "./Scalebar.js";
10
+ import VerticalGuide from "./VerticalGuide.js";
11
+ import { SCALE_BAR_HEIGHT } from "../consts.js";
12
+ import { useRangeSelect } from "./useRangeSelect.js";
13
+ import { useSideScroll } from "./useSideScroll.js";
14
+ import { useWheelScroll } from "./useWheelScroll.js";
15
+ const CenterLine = lazy(() => import("./CenterLine.js"));
16
+ const Highlight = lazy(() => import("./Highlight.js"));
17
+ const RubberbandSpan = lazy(() => import("./RubberbandSpan.js"));
18
18
  const useStyles = makeStyles()({
19
19
  tracksContainer: {
20
20
  position: 'relative',
21
+ contain: 'layout style',
21
22
  },
22
23
  });
23
24
  const TracksContainer = observer(function TracksContainer({ children, model, }) {
@@ -26,16 +27,18 @@ const TracksContainer = observer(function TracksContainer({ children, model, })
26
27
  const { mouseDown: mouseDown1, mouseUp } = useSideScroll(model);
27
28
  const { stickyViewHeaders, rubberbandTop, showGridlines, showCenterLine } = model;
28
29
  const ref = useRef(null);
29
- const { guideX, rubberbandOn, leftBpOffset, rightBpOffset, numOfBpSelected, width, left, anchorPosition, open, handleMenuItemClick, handleClose, mouseMove, mouseDown: mouseDown2, } = useRangeSelect(ref, model, true);
30
+ const { guideX, rubberbandOn, leftBpOffset, rightBpOffset, numOfBpSelected, width, left, anchorPosition, open, isClick, clickBpOffset, handleMenuItemClick, handleClose, mouseMove, mouseDown: mouseDown2, } = useRangeSelect(ref, model, true);
30
31
  useWheelScroll(ref, model);
31
32
  const additional = pluginManager.evaluateExtensionPoint('LinearGenomeView-TracksContainerComponent', undefined, { model });
32
- return (_jsxs("div", { ref: ref, "data-testid": "tracksContainer", className: classes.tracksContainer, onMouseDown: event => {
33
+ return (_jsxs("div", { ref: ref, "data-testid": "tracksContainer", className: classes.tracksContainer, style: { '--offset-px': `${model.offsetPx}px` }, onMouseDown: event => {
33
34
  mouseDown1(event);
34
35
  mouseDown2(event);
35
36
  }, onMouseMove: mouseMove, onMouseUp: mouseUp, children: [showGridlines ? _jsx(Gridlines, { model: model }) : null, _jsx(Suspense, { fallback: null, children: showCenterLine ? _jsx(CenterLine, { model: model }) : null }), guideX !== undefined ? (_jsx(VerticalGuide, { model: model, coordX: guideX })) : rubberbandOn ? (_jsx(Suspense, { fallback: null, children: _jsx(RubberbandSpan, { leftBpOffset: leftBpOffset, rightBpOffset: rightBpOffset, numOfBpSelected: numOfBpSelected, width: width, left: left, top: rubberbandTop, sticky: stickyViewHeaders }) })) : null, anchorPosition ? (_jsx(Menu, { anchorReference: "anchorPosition", anchorPosition: {
36
37
  left: anchorPosition.clientX,
37
38
  top: anchorPosition.clientY,
38
- }, onMenuItemClick: handleMenuItemClick, open: open, onClose: handleClose, menuItems: model.rubberBandMenuItems() })) : null, _jsx(Rubberband, { model: model, ControlComponent: _jsx(Scalebar, { model: model, style: {
39
+ }, onMenuItemClick: handleMenuItemClick, open: open, onClose: handleClose, menuItems: isClick && clickBpOffset
40
+ ? model.rubberbandClickMenuItems(clickBpOffset)
41
+ : model.rubberBandMenuItems() })) : null, _jsx(Rubberband, { model: model, ControlComponent: _jsx(Scalebar, { model: model, style: {
39
42
  height: SCALE_BAR_HEIGHT,
40
43
  boxSizing: 'border-box',
41
44
  } }) }), _jsx(HighlightGroup, { model: model }), additional, children] }));
@@ -1,19 +1,21 @@
1
1
  import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { stringify } from '@jbrowse/core/util';
3
+ import { makeStyles } from '@jbrowse/core/util/tss-react';
3
4
  import { Tooltip } from '@mui/material';
4
5
  import { observer } from 'mobx-react';
5
- import { makeStyles } from 'tss-react/mui';
6
6
  const useStyles = makeStyles()({
7
7
  guide: {
8
8
  pointerEvents: 'none',
9
9
  height: '100%',
10
10
  width: 1,
11
11
  position: 'absolute',
12
+ left: 0,
12
13
  background: 'red',
13
14
  zIndex: 1001,
14
15
  },
15
16
  tooltipTarget: {
16
17
  position: 'sticky',
18
+ left: 0,
17
19
  width: 1,
18
20
  },
19
21
  });
@@ -21,9 +23,9 @@ const VerticalGuide = observer(function VerticalGuide({ model, coordX, }) {
21
23
  const { classes } = useStyles();
22
24
  const { stickyViewHeaders, rubberbandTop } = model;
23
25
  return (_jsxs(_Fragment, { children: [_jsx(Tooltip, { open: true, placement: "top", title: stringify(model.pxToBp(coordX)), arrow: true, children: _jsx("div", { className: classes.tooltipTarget, style: {
24
- left: coordX + 6,
26
+ transform: `translateX(${coordX + 6}px)`,
25
27
  top: rubberbandTop,
26
28
  position: stickyViewHeaders ? 'sticky' : undefined,
27
- } }) }), _jsx("div", { className: classes.guide, style: { left: coordX } })] }));
29
+ } }) }), _jsx("div", { className: classes.guide, style: { transform: `translateX(${coordX}px)` } })] }));
28
30
  });
29
31
  export default VerticalGuide;
@@ -1,4 +1,9 @@
1
- import type { LinearGenomeViewModel } from '../model';
1
+ import type { BpOffset } from '../types.ts';
2
2
  import type { Feature } from '@jbrowse/core/util';
3
3
  import type { Region } from '@jbrowse/core/util/types';
4
- export declare function fetchSequence(model: LinearGenomeViewModel, regions: Region[]): Promise<Feature[]>;
4
+ export declare function fetchSequence(model: {
5
+ leftOffset?: BpOffset;
6
+ rightOffset?: BpOffset;
7
+ getSelectedRegions: (left?: BpOffset, right?: BpOffset) => Region[];
8
+ setOffsets: (left?: BpOffset, right?: BpOffset) => void;
9
+ }, regions: Region[]): Promise<Feature[]>;
@@ -4,24 +4,49 @@ interface AnchorPosition {
4
4
  offsetX: number;
5
5
  clientX: number;
6
6
  clientY: number;
7
+ isClick?: boolean;
7
8
  }
8
9
  export declare function useRangeSelect(ref: React.RefObject<HTMLDivElement | null>, model: LinearGenomeViewModel, shiftOnly?: boolean): {
9
10
  open: boolean;
11
+ isClick: boolean | undefined;
12
+ clickBpOffset: {
13
+ coord: number;
14
+ index: number;
15
+ refName: string;
16
+ oob: boolean;
17
+ assemblyName: string;
18
+ offset: number;
19
+ start: number;
20
+ end: number;
21
+ reversed?: boolean;
22
+ } | undefined;
10
23
  guideX: number | undefined;
11
24
  mouseDown: (event: React.MouseEvent<HTMLDivElement>) => void;
12
25
  mouseMove: (event: React.MouseEvent<HTMLDivElement>) => void;
13
26
  mouseOut: () => void;
27
+ handleClose: () => void;
14
28
  handleMenuItemClick: (_: unknown, callback: () => void) => void;
29
+ anchorPosition: AnchorPosition | undefined;
15
30
  rubberbandOn?: undefined;
16
- handleClose?: undefined;
17
31
  leftBpOffset?: undefined;
18
32
  rightBpOffset?: undefined;
19
- anchorPosition?: undefined;
20
33
  numOfBpSelected?: undefined;
21
34
  width?: undefined;
22
35
  left?: undefined;
23
36
  } | {
24
37
  open: boolean;
38
+ isClick: boolean | undefined;
39
+ clickBpOffset: {
40
+ coord: number;
41
+ index: number;
42
+ refName: string;
43
+ oob: boolean;
44
+ assemblyName: string;
45
+ offset: number;
46
+ start: number;
47
+ end: number;
48
+ reversed?: boolean;
49
+ } | undefined;
25
50
  rubberbandOn: boolean;
26
51
  mouseDown: (event: React.MouseEvent<HTMLDivElement>) => void;
27
52
  mouseMove: (event: React.MouseEvent<HTMLDivElement>) => void;