@jbrowse/plugin-linear-genome-view 3.7.0 → 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 (396) 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 +12 -8
  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 +9 -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 -1
  21. package/esm/BaseLinearDisplay/components/LinearBlocks.js +4 -6
  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 +3 -2
  25. package/esm/BaseLinearDisplay/components/MaxHeightReachedIndicator.js +5 -3
  26. package/esm/BaseLinearDisplay/components/MenuPage.d.ts +2 -2
  27. package/esm/BaseLinearDisplay/components/MenuPage.js +1 -1
  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 +4 -1
  31. package/esm/BaseLinearDisplay/components/RenderedBlocks.js +4 -4
  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 +1 -0
  36. package/esm/BaseLinearDisplay/components/Tooltip.js +6 -6
  37. package/esm/BaseLinearDisplay/components/util.d.ts +21 -0
  38. package/esm/BaseLinearDisplay/components/util.js +116 -0
  39. package/esm/BaseLinearDisplay/index.d.ts +17 -8
  40. package/esm/BaseLinearDisplay/index.js +13 -6
  41. package/esm/BaseLinearDisplay/model.d.ts +954 -101
  42. package/esm/BaseLinearDisplay/model.js +211 -88
  43. package/esm/BaseLinearDisplay/models/FeatureDensityMixin.d.ts +5 -5
  44. package/esm/BaseLinearDisplay/models/FeatureDensityMixin.js +11 -14
  45. package/esm/BaseLinearDisplay/models/NonBlockCanvasDisplayMixin.d.ts +21 -0
  46. package/esm/BaseLinearDisplay/models/NonBlockCanvasDisplayMixin.js +46 -0
  47. package/esm/BaseLinearDisplay/models/TrackHeightMixin.d.ts +3 -3
  48. package/esm/BaseLinearDisplay/models/TrackHeightMixin.js +2 -3
  49. package/esm/BaseLinearDisplay/models/autorunFeatureDensityStats.d.ts +1 -1
  50. package/esm/BaseLinearDisplay/models/autorunFeatureDensityStats.js +2 -3
  51. package/esm/BaseLinearDisplay/models/calculateLabelPositions.d.ts +24 -0
  52. package/esm/BaseLinearDisplay/models/calculateLabelPositions.js +60 -0
  53. package/esm/BaseLinearDisplay/models/configSchema.d.ts +2 -2
  54. package/esm/BaseLinearDisplay/models/configSchema.js +2 -2
  55. package/esm/BaseLinearDisplay/models/renderSvg.d.ts +3 -7
  56. package/esm/BaseLinearDisplay/models/renderSvg.js +22 -11
  57. package/esm/BaseLinearDisplay/models/serverSideRenderedBlock.d.ts +37 -19
  58. package/esm/BaseLinearDisplay/models/serverSideRenderedBlock.js +151 -135
  59. package/esm/BaseLinearDisplay/models/util.d.ts +4 -4
  60. package/esm/BaseLinearDisplay/models/util.js +16 -13
  61. package/esm/BaseLinearDisplay/renderSvg.d.ts +3 -0
  62. package/esm/BaseLinearDisplay/renderSvg.js +59 -0
  63. package/esm/BaseLinearDisplay/types.d.ts +47 -0
  64. package/esm/BaseLinearDisplay/types.js +3 -0
  65. package/esm/BaseLinearDisplay/util.d.ts +15 -0
  66. package/esm/BaseLinearDisplay/util.js +61 -0
  67. package/esm/BasicTrack/configSchema.d.ts +16 -11
  68. package/esm/BasicTrack/index.js +1 -1
  69. package/esm/FeatureTrack/configSchema.d.ts +16 -11
  70. package/esm/FeatureTrack/index.js +1 -1
  71. package/esm/LaunchLinearGenomeView/index.js +12 -62
  72. package/esm/LinearBareDisplay/configSchema.d.ts +4 -4
  73. package/esm/LinearBareDisplay/configSchema.js +1 -1
  74. package/esm/LinearBareDisplay/index.d.ts +2 -2
  75. package/esm/LinearBareDisplay/index.js +5 -5
  76. package/esm/LinearBareDisplay/model.d.ts +957 -105
  77. package/esm/LinearBareDisplay/model.js +3 -6
  78. package/esm/LinearBasicDisplay/components/LinearBasicDisplayComponent.d.ts +5 -0
  79. package/esm/LinearBasicDisplay/components/LinearBasicDisplayComponent.js +9 -0
  80. package/esm/LinearBasicDisplay/configSchema.d.ts +4 -4
  81. package/esm/LinearBasicDisplay/configSchema.js +1 -1
  82. package/esm/LinearBasicDisplay/index.d.ts +2 -2
  83. package/esm/LinearBasicDisplay/index.js +6 -6
  84. package/esm/LinearBasicDisplay/model.d.ts +1132 -135
  85. package/esm/LinearBasicDisplay/model.js +116 -116
  86. package/esm/{LinearBasicDisplay → LinearFeatureDisplay}/components/AddFiltersDialog.js +2 -2
  87. package/esm/{LinearBasicDisplay → LinearFeatureDisplay}/components/SetMaxHeightDialog.js +3 -3
  88. package/{dist/LinearBasicDisplay → esm/LinearFeatureDisplay}/configSchema.d.ts +4 -4
  89. package/esm/LinearFeatureDisplay/configSchema.js +11 -0
  90. package/esm/LinearFeatureDisplay/index.d.ts +3 -0
  91. package/esm/LinearFeatureDisplay/index.js +2 -0
  92. package/esm/LinearFeatureDisplay/model.d.ts +1415 -0
  93. package/esm/LinearFeatureDisplay/model.js +265 -0
  94. package/esm/LinearGenomeView/SVGErrorBox.d.ts +5 -0
  95. package/esm/LinearGenomeView/SVGErrorBox.js +4 -0
  96. package/esm/LinearGenomeView/afterAttach.d.ts +5 -0
  97. package/esm/LinearGenomeView/afterAttach.js +95 -0
  98. package/esm/LinearGenomeView/components/CenterLine.js +6 -4
  99. package/esm/LinearGenomeView/components/Cytobands.js +4 -4
  100. package/esm/LinearGenomeView/components/ExportSvgDialog.d.ts +1 -1
  101. package/esm/LinearGenomeView/components/ExportSvgDialog.js +5 -1
  102. package/esm/LinearGenomeView/components/GetSequenceDialog.d.ts +8 -2
  103. package/esm/LinearGenomeView/components/GetSequenceDialog.js +13 -16
  104. package/esm/LinearGenomeView/components/Gridlines.js +18 -15
  105. package/esm/LinearGenomeView/components/Header.js +9 -9
  106. package/esm/LinearGenomeView/components/HeaderPanControls.js +2 -2
  107. package/esm/LinearGenomeView/components/HeaderRegionWidth.js +4 -5
  108. package/esm/LinearGenomeView/components/HeaderTrackSelectorButton.js +2 -2
  109. package/esm/LinearGenomeView/components/HeaderZoomControls.js +3 -3
  110. package/esm/LinearGenomeView/components/Highlight.d.ts +1 -1
  111. package/esm/LinearGenomeView/components/Highlight.js +6 -6
  112. package/esm/LinearGenomeView/components/ImportForm.d.ts +1 -1
  113. package/esm/LinearGenomeView/components/ImportForm.js +14 -12
  114. package/esm/LinearGenomeView/components/ImportFormRefNameAutocomplete.js +3 -3
  115. package/esm/LinearGenomeView/components/LinearGenomeView.js +7 -7
  116. package/esm/LinearGenomeView/components/LinearGenomeViewContainer.js +7 -8
  117. package/esm/LinearGenomeView/components/MiniControls.js +6 -6
  118. package/esm/LinearGenomeView/components/NoTracksActiveButton.js +2 -2
  119. package/esm/LinearGenomeView/components/OverviewHighlight.d.ts +1 -1
  120. package/esm/LinearGenomeView/components/OverviewHighlight.js +5 -5
  121. package/esm/LinearGenomeView/components/OverviewRubberband.js +4 -4
  122. package/esm/LinearGenomeView/components/OverviewRubberbandHoverTooltip.js +9 -5
  123. package/esm/LinearGenomeView/components/OverviewScalebar.js +36 -28
  124. package/esm/LinearGenomeView/components/OverviewScalebarPolygon.js +5 -5
  125. package/esm/LinearGenomeView/components/OverviewScalebarTickLabels.js +7 -7
  126. package/esm/LinearGenomeView/components/RefNameAutocomplete/EndAdornment.js +1 -1
  127. package/esm/LinearGenomeView/components/RefNameAutocomplete/index.d.ts +1 -1
  128. package/esm/LinearGenomeView/components/RefNameAutocomplete/index.js +10 -10
  129. package/esm/LinearGenomeView/components/RegionWidthEditorDialog.d.ts +1 -1
  130. package/esm/LinearGenomeView/components/RegionWidthEditorDialog.js +6 -4
  131. package/esm/LinearGenomeView/components/Rubberband.js +9 -7
  132. package/esm/LinearGenomeView/components/RubberbandSpan.js +4 -5
  133. package/esm/LinearGenomeView/components/Scalebar.js +8 -10
  134. package/esm/LinearGenomeView/components/ScalebarCoordinateLabels.d.ts +1 -1
  135. package/esm/LinearGenomeView/components/ScalebarCoordinateLabels.js +50 -17
  136. package/esm/LinearGenomeView/components/ScalebarRefNameLabels.d.ts +1 -1
  137. package/esm/LinearGenomeView/components/ScalebarRefNameLabels.js +13 -11
  138. package/esm/LinearGenomeView/components/SearchBox.d.ts +1 -1
  139. package/esm/LinearGenomeView/components/SearchBox.js +8 -9
  140. package/esm/LinearGenomeView/components/SearchResultsDialog.d.ts +1 -1
  141. package/esm/LinearGenomeView/components/SearchResultsDialog.js +2 -2
  142. package/esm/LinearGenomeView/components/SearchResultsTable.d.ts +1 -1
  143. package/esm/LinearGenomeView/components/SearchResultsTable.js +4 -6
  144. package/esm/LinearGenomeView/components/SequenceSearchDialog.js +5 -5
  145. package/esm/LinearGenomeView/components/TrackContainer.js +25 -17
  146. package/esm/LinearGenomeView/components/TrackLabel.js +10 -11
  147. package/esm/LinearGenomeView/components/TrackLabelContainer.js +7 -8
  148. package/esm/LinearGenomeView/components/TrackLabelDragHandle.js +1 -1
  149. package/esm/LinearGenomeView/components/TrackLabelMenu.js +80 -68
  150. package/esm/LinearGenomeView/components/TrackRenderingContainer.d.ts +1 -2
  151. package/esm/LinearGenomeView/components/TrackRenderingContainer.js +5 -5
  152. package/esm/LinearGenomeView/components/TracksContainer.js +18 -15
  153. package/esm/LinearGenomeView/components/VerticalGuide.js +5 -3
  154. package/esm/LinearGenomeView/components/fetchSequence.d.ts +7 -2
  155. package/esm/LinearGenomeView/components/useRangeSelect.d.ts +27 -2
  156. package/esm/LinearGenomeView/components/useRangeSelect.js +19 -9
  157. package/esm/LinearGenomeView/components/useWheelScroll.js +22 -12
  158. package/esm/LinearGenomeView/components/util.d.ts +2 -13
  159. package/esm/LinearGenomeView/components/util.js +12 -31
  160. package/esm/LinearGenomeView/index.d.ts +1 -1
  161. package/esm/LinearGenomeView/index.js +3 -3
  162. package/esm/LinearGenomeView/keyboardHandler.d.ts +2 -0
  163. package/esm/LinearGenomeView/keyboardHandler.js +29 -0
  164. package/esm/LinearGenomeView/menuItems.d.ts +7 -0
  165. package/esm/LinearGenomeView/menuItems.js +299 -0
  166. package/esm/LinearGenomeView/model.d.ts +92 -89
  167. package/esm/LinearGenomeView/model.js +166 -414
  168. package/esm/LinearGenomeView/svgExportUtil.d.ts +9 -0
  169. package/esm/LinearGenomeView/svgExportUtil.js +6 -0
  170. package/{dist/LinearGenomeView/svgcomponents/SVGRegionSeparators.d.ts → esm/LinearGenomeView/svgcomponents/SVGGridlines.d.ts} +2 -2
  171. package/esm/LinearGenomeView/svgcomponents/SVGGridlines.js +20 -0
  172. package/esm/LinearGenomeView/svgcomponents/SVGHeader.js +5 -5
  173. package/esm/LinearGenomeView/svgcomponents/SVGLinearGenomeView.d.ts +4 -3
  174. package/esm/LinearGenomeView/svgcomponents/SVGLinearGenomeView.js +24 -12
  175. package/esm/LinearGenomeView/svgcomponents/SVGRuler.js +13 -5
  176. package/esm/LinearGenomeView/svgcomponents/SVGTracks.js +2 -2
  177. package/esm/LinearGenomeView/types.d.ts +5 -1
  178. package/esm/LinearGenomeView/util.d.ts +2 -2
  179. package/esm/LinearGenomeView/util.js +7 -5
  180. package/esm/index.d.ts +973 -107
  181. package/esm/index.js +37 -38
  182. package/esm/searchUtils.d.ts +1 -1
  183. package/esm/searchUtils.js +6 -4
  184. package/package.json +28 -33
  185. package/dist/BaseLinearDisplay/components/BaseLinearDisplay.d.ts +0 -8
  186. package/dist/BaseLinearDisplay/components/BaseLinearDisplay.js +0 -57
  187. package/dist/BaseLinearDisplay/components/Block.d.ts +0 -14
  188. package/dist/BaseLinearDisplay/components/Block.js +0 -50
  189. package/dist/BaseLinearDisplay/components/BlockErrorMessage.d.ts +0 -7
  190. package/dist/BaseLinearDisplay/components/BlockErrorMessage.js +0 -27
  191. package/dist/BaseLinearDisplay/components/BlockLoadingMessage.d.ts +0 -6
  192. package/dist/BaseLinearDisplay/components/BlockLoadingMessage.js +0 -26
  193. package/dist/BaseLinearDisplay/components/BlockMsg.d.ts +0 -6
  194. package/dist/BaseLinearDisplay/components/BlockMsg.js +0 -22
  195. package/dist/BaseLinearDisplay/components/LinearBlocks.d.ts +0 -5
  196. package/dist/BaseLinearDisplay/components/LinearBlocks.js +0 -28
  197. package/dist/BaseLinearDisplay/components/MaxHeightReachedIndicator.d.ts +0 -3
  198. package/dist/BaseLinearDisplay/components/MaxHeightReachedIndicator.js +0 -27
  199. package/dist/BaseLinearDisplay/components/MenuPage.d.ts +0 -8
  200. package/dist/BaseLinearDisplay/components/MenuPage.js +0 -26
  201. package/dist/BaseLinearDisplay/components/RenderedBlocks.d.ts +0 -9
  202. package/dist/BaseLinearDisplay/components/RenderedBlocks.js +0 -27
  203. package/dist/BaseLinearDisplay/components/ServerSideRenderedBlockContent.d.ts +0 -11
  204. package/dist/BaseLinearDisplay/components/ServerSideRenderedBlockContent.js +0 -59
  205. package/dist/BaseLinearDisplay/components/TooLargeMessage.d.ts +0 -10
  206. package/dist/BaseLinearDisplay/components/TooLargeMessage.js +0 -25
  207. package/dist/BaseLinearDisplay/components/Tooltip.d.ts +0 -12
  208. package/dist/BaseLinearDisplay/components/Tooltip.js +0 -27
  209. package/dist/BaseLinearDisplay/components/types.d.ts +0 -1
  210. package/dist/BaseLinearDisplay/components/types.js +0 -2
  211. package/dist/BaseLinearDisplay/index.d.ts +0 -8
  212. package/dist/BaseLinearDisplay/index.js +0 -20
  213. package/dist/BaseLinearDisplay/model.d.ts +0 -324
  214. package/dist/BaseLinearDisplay/model.js +0 -340
  215. package/dist/BaseLinearDisplay/models/FeatureDensityMixin.d.ts +0 -32
  216. package/dist/BaseLinearDisplay/models/FeatureDensityMixin.js +0 -122
  217. package/dist/BaseLinearDisplay/models/TrackHeightMixin.d.ts +0 -11
  218. package/dist/BaseLinearDisplay/models/TrackHeightMixin.js +0 -35
  219. package/dist/BaseLinearDisplay/models/autorunFeatureDensityStats.d.ts +0 -2
  220. package/dist/BaseLinearDisplay/models/autorunFeatureDensityStats.js +0 -33
  221. package/dist/BaseLinearDisplay/models/configSchema.d.ts +0 -29
  222. package/dist/BaseLinearDisplay/models/configSchema.js +0 -35
  223. package/dist/BaseLinearDisplay/models/renderSvg.d.ts +0 -7
  224. package/dist/BaseLinearDisplay/models/renderSvg.js +0 -80
  225. package/dist/BaseLinearDisplay/models/serverSideRenderedBlock.d.ts +0 -78
  226. package/dist/BaseLinearDisplay/models/serverSideRenderedBlock.js +0 -229
  227. package/dist/BaseLinearDisplay/models/util.d.ts +0 -22
  228. package/dist/BaseLinearDisplay/models/util.js +0 -45
  229. package/dist/BasicTrack/configSchema.d.ts +0 -80
  230. package/dist/BasicTrack/configSchema.js +0 -10
  231. package/dist/BasicTrack/index.d.ts +0 -2
  232. package/dist/BasicTrack/index.js +0 -18
  233. package/dist/FeatureTrack/configSchema.d.ts +0 -80
  234. package/dist/FeatureTrack/configSchema.js +0 -10
  235. package/dist/FeatureTrack/index.d.ts +0 -2
  236. package/dist/FeatureTrack/index.js +0 -19
  237. package/dist/LaunchLinearGenomeView/index.d.ts +0 -2
  238. package/dist/LaunchLinearGenomeView/index.js +0 -70
  239. package/dist/LinearBareDisplay/configSchema.d.ts +0 -32
  240. package/dist/LinearBareDisplay/configSchema.js +0 -13
  241. package/dist/LinearBareDisplay/index.d.ts +0 -4
  242. package/dist/LinearBareDisplay/index.js +0 -26
  243. package/dist/LinearBareDisplay/model.d.ts +0 -324
  244. package/dist/LinearBareDisplay/model.js +0 -38
  245. package/dist/LinearBasicDisplay/components/AddFiltersDialog.js +0 -61
  246. package/dist/LinearBasicDisplay/components/SetMaxHeightDialog.js +0 -28
  247. package/dist/LinearBasicDisplay/configSchema.js +0 -13
  248. package/dist/LinearBasicDisplay/index.d.ts +0 -4
  249. package/dist/LinearBasicDisplay/index.js +0 -29
  250. package/dist/LinearBasicDisplay/model.d.ts +0 -361
  251. package/dist/LinearBasicDisplay/model.js +0 -192
  252. package/dist/LinearGenomeView/components/CenterLine.d.ts +0 -6
  253. package/dist/LinearGenomeView/components/CenterLine.js +0 -38
  254. package/dist/LinearGenomeView/components/Cytobands.d.ts +0 -9
  255. package/dist/LinearGenomeView/components/Cytobands.js +0 -89
  256. package/dist/LinearGenomeView/components/ExportSvgDialog.d.ts +0 -7
  257. package/dist/LinearGenomeView/components/ExportSvgDialog.js +0 -57
  258. package/dist/LinearGenomeView/components/GetSequenceDialog.d.ts +0 -6
  259. package/dist/LinearGenomeView/components/GetSequenceDialog.js +0 -109
  260. package/dist/LinearGenomeView/components/Gridlines.d.ts +0 -7
  261. package/dist/LinearGenomeView/components/Gridlines.js +0 -70
  262. package/dist/LinearGenomeView/components/Header.d.ts +0 -5
  263. package/dist/LinearGenomeView/components/Header.js +0 -38
  264. package/dist/LinearGenomeView/components/HeaderPanControls.d.ts +0 -6
  265. package/dist/LinearGenomeView/components/HeaderPanControls.js +0 -27
  266. package/dist/LinearGenomeView/components/HeaderRegionWidth.d.ts +0 -5
  267. package/dist/LinearGenomeView/components/HeaderRegionWidth.js +0 -21
  268. package/dist/LinearGenomeView/components/HeaderTrackSelectorButton.d.ts +0 -5
  269. package/dist/LinearGenomeView/components/HeaderTrackSelectorButton.js +0 -19
  270. package/dist/LinearGenomeView/components/HeaderZoomControls.d.ts +0 -5
  271. package/dist/LinearGenomeView/components/HeaderZoomControls.js +0 -109
  272. package/dist/LinearGenomeView/components/Highlight.d.ts +0 -12
  273. package/dist/LinearGenomeView/components/Highlight.js +0 -95
  274. package/dist/LinearGenomeView/components/ImportForm.d.ts +0 -6
  275. package/dist/LinearGenomeView/components/ImportForm.js +0 -80
  276. package/dist/LinearGenomeView/components/ImportFormRefNameAutocomplete.d.ts +0 -11
  277. package/dist/LinearGenomeView/components/ImportFormRefNameAutocomplete.js +0 -32
  278. package/dist/LinearGenomeView/components/LinearGenomeView.d.ts +0 -5
  279. package/dist/LinearGenomeView/components/LinearGenomeView.js +0 -57
  280. package/dist/LinearGenomeView/components/LinearGenomeViewContainer.d.ts +0 -5
  281. package/dist/LinearGenomeView/components/LinearGenomeViewContainer.js +0 -98
  282. package/dist/LinearGenomeView/components/MiniControls.d.ts +0 -5
  283. package/dist/LinearGenomeView/components/MiniControls.js +0 -36
  284. package/dist/LinearGenomeView/components/NoTracksActiveButton.d.ts +0 -5
  285. package/dist/LinearGenomeView/components/NoTracksActiveButton.js +0 -23
  286. package/dist/LinearGenomeView/components/OverviewHighlight.d.ts +0 -8
  287. package/dist/LinearGenomeView/components/OverviewHighlight.js +0 -50
  288. package/dist/LinearGenomeView/components/OverviewRubberband.d.ts +0 -9
  289. package/dist/LinearGenomeView/components/OverviewRubberband.js +0 -113
  290. package/dist/LinearGenomeView/components/OverviewRubberbandHoverTooltip.d.ts +0 -10
  291. package/dist/LinearGenomeView/components/OverviewRubberbandHoverTooltip.js +0 -28
  292. package/dist/LinearGenomeView/components/OverviewScalebar.d.ts +0 -7
  293. package/dist/LinearGenomeView/components/OverviewScalebar.js +0 -146
  294. package/dist/LinearGenomeView/components/OverviewScalebarPolygon.d.ts +0 -8
  295. package/dist/LinearGenomeView/components/OverviewScalebarPolygon.js +0 -41
  296. package/dist/LinearGenomeView/components/OverviewScalebarTickLabels.d.ts +0 -10
  297. package/dist/LinearGenomeView/components/OverviewScalebarTickLabels.js +0 -37
  298. package/dist/LinearGenomeView/components/RefNameAutocomplete/AutocompleteTextField.d.ts +0 -8
  299. package/dist/LinearGenomeView/components/RefNameAutocomplete/AutocompleteTextField.js +0 -18
  300. package/dist/LinearGenomeView/components/RefNameAutocomplete/EndAdornment.d.ts +0 -3
  301. package/dist/LinearGenomeView/components/RefNameAutocomplete/EndAdornment.js +0 -56
  302. package/dist/LinearGenomeView/components/RefNameAutocomplete/HelpDialog.d.ts +0 -3
  303. package/dist/LinearGenomeView/components/RefNameAutocomplete/HelpDialog.js +0 -11
  304. package/dist/LinearGenomeView/components/RefNameAutocomplete/index.d.ts +0 -16
  305. package/dist/LinearGenomeView/components/RefNameAutocomplete/index.js +0 -127
  306. package/dist/LinearGenomeView/components/RefNameAutocomplete/util.d.ts +0 -10
  307. package/dist/LinearGenomeView/components/RefNameAutocomplete/util.js +0 -53
  308. package/dist/LinearGenomeView/components/RegionWidthEditorDialog.d.ts +0 -6
  309. package/dist/LinearGenomeView/components/RegionWidthEditorDialog.js +0 -30
  310. package/dist/LinearGenomeView/components/Rubberband.d.ts +0 -7
  311. package/dist/LinearGenomeView/components/Rubberband.js +0 -35
  312. package/dist/LinearGenomeView/components/RubberbandSpan.d.ts +0 -15
  313. package/dist/LinearGenomeView/components/RubberbandSpan.js +0 -39
  314. package/dist/LinearGenomeView/components/RubberbandTooltip.d.ts +0 -5
  315. package/dist/LinearGenomeView/components/RubberbandTooltip.js +0 -20
  316. package/dist/LinearGenomeView/components/Scalebar.d.ts +0 -10
  317. package/dist/LinearGenomeView/components/Scalebar.js +0 -40
  318. package/dist/LinearGenomeView/components/ScalebarCoordinateLabels.d.ts +0 -6
  319. package/dist/LinearGenomeView/components/ScalebarCoordinateLabels.js +0 -29
  320. package/dist/LinearGenomeView/components/ScalebarCoordinateTicks.d.ts +0 -6
  321. package/dist/LinearGenomeView/components/ScalebarCoordinateTicks.js +0 -38
  322. package/dist/LinearGenomeView/components/ScalebarRefNameLabels.d.ts +0 -6
  323. package/dist/LinearGenomeView/components/ScalebarRefNameLabels.js +0 -46
  324. package/dist/LinearGenomeView/components/SearchBox.d.ts +0 -6
  325. package/dist/LinearGenomeView/components/SearchBox.js +0 -88
  326. package/dist/LinearGenomeView/components/SearchResultsDialog.d.ts +0 -9
  327. package/dist/LinearGenomeView/components/SearchResultsDialog.js +0 -15
  328. package/dist/LinearGenomeView/components/SearchResultsTable.d.ts +0 -8
  329. package/dist/LinearGenomeView/components/SearchResultsTable.js +0 -74
  330. package/dist/LinearGenomeView/components/SequenceSearchDialog.d.ts +0 -8
  331. package/dist/LinearGenomeView/components/SequenceSearchDialog.js +0 -67
  332. package/dist/LinearGenomeView/components/TrackContainer.d.ts +0 -8
  333. package/dist/LinearGenomeView/components/TrackContainer.js +0 -55
  334. package/dist/LinearGenomeView/components/TrackLabel.d.ts +0 -7
  335. package/dist/LinearGenomeView/components/TrackLabel.js +0 -49
  336. package/dist/LinearGenomeView/components/TrackLabelContainer.d.ts +0 -8
  337. package/dist/LinearGenomeView/components/TrackLabelContainer.js +0 -31
  338. package/dist/LinearGenomeView/components/TrackLabelDragHandle.d.ts +0 -8
  339. package/dist/LinearGenomeView/components/TrackLabelDragHandle.js +0 -32
  340. package/dist/LinearGenomeView/components/TrackLabelMenu.d.ts +0 -5
  341. package/dist/LinearGenomeView/components/TrackLabelMenu.js +0 -93
  342. package/dist/LinearGenomeView/components/TrackRenderingContainer.d.ts +0 -9
  343. package/dist/LinearGenomeView/components/TrackRenderingContainer.js +0 -50
  344. package/dist/LinearGenomeView/components/TracksContainer.d.ts +0 -7
  345. package/dist/LinearGenomeView/components/TracksContainer.js +0 -84
  346. package/dist/LinearGenomeView/components/VerticalGuide.d.ts +0 -7
  347. package/dist/LinearGenomeView/components/VerticalGuide.js +0 -31
  348. package/dist/LinearGenomeView/components/fetchSequence.d.ts +0 -4
  349. package/dist/LinearGenomeView/components/fetchSequence.js +0 -29
  350. package/dist/LinearGenomeView/components/useRangeSelect.d.ts +0 -59
  351. package/dist/LinearGenomeView/components/useRangeSelect.js +0 -127
  352. package/dist/LinearGenomeView/components/useSideScroll.d.ts +0 -6
  353. package/dist/LinearGenomeView/components/useSideScroll.js +0 -60
  354. package/dist/LinearGenomeView/components/useWheelScroll.d.ts +0 -7
  355. package/dist/LinearGenomeView/components/useWheelScroll.js +0 -62
  356. package/dist/LinearGenomeView/components/util.d.ts +0 -25
  357. package/dist/LinearGenomeView/components/util.js +0 -49
  358. package/dist/LinearGenomeView/consts.d.ts +0 -7
  359. package/dist/LinearGenomeView/consts.js +0 -10
  360. package/dist/LinearGenomeView/index.d.ts +0 -3
  361. package/dist/LinearGenomeView/index.js +0 -53
  362. package/dist/LinearGenomeView/model.d.ts +0 -268
  363. package/dist/LinearGenomeView/model.js +0 -1109
  364. package/dist/LinearGenomeView/svgcomponents/SVGBackground.d.ts +0 -5
  365. package/dist/LinearGenomeView/svgcomponents/SVGBackground.js +0 -10
  366. package/dist/LinearGenomeView/svgcomponents/SVGHeader.d.ts +0 -7
  367. package/dist/LinearGenomeView/svgcomponents/SVGHeader.js +0 -47
  368. package/dist/LinearGenomeView/svgcomponents/SVGLinearGenomeView.d.ts +0 -6
  369. package/dist/LinearGenomeView/svgcomponents/SVGLinearGenomeView.js +0 -42
  370. package/dist/LinearGenomeView/svgcomponents/SVGRegionSeparators.js +0 -8
  371. package/dist/LinearGenomeView/svgcomponents/SVGRuler.d.ts +0 -7
  372. package/dist/LinearGenomeView/svgcomponents/SVGRuler.js +0 -39
  373. package/dist/LinearGenomeView/svgcomponents/SVGScalebar.d.ts +0 -7
  374. package/dist/LinearGenomeView/svgcomponents/SVGScalebar.js +0 -17
  375. package/dist/LinearGenomeView/svgcomponents/SVGTrackLabel.d.ts +0 -7
  376. package/dist/LinearGenomeView/svgcomponents/SVGTrackLabel.js +0 -14
  377. package/dist/LinearGenomeView/svgcomponents/SVGTracks.d.ts +0 -21
  378. package/dist/LinearGenomeView/svgcomponents/SVGTracks.js +0 -32
  379. package/dist/LinearGenomeView/svgcomponents/util.d.ts +0 -8
  380. package/dist/LinearGenomeView/svgcomponents/util.js +0 -8
  381. package/dist/LinearGenomeView/types.d.ts +0 -43
  382. package/dist/LinearGenomeView/types.js +0 -2
  383. package/dist/LinearGenomeView/util.d.ts +0 -26
  384. package/dist/LinearGenomeView/util.js +0 -138
  385. package/dist/index.d.ts +0 -368
  386. package/dist/index.js +0 -120
  387. package/dist/searchUtils.d.ts +0 -26
  388. package/dist/searchUtils.js +0 -80
  389. package/esm/BaseLinearDisplay/components/BlockLoadingMessage.d.ts +0 -6
  390. package/esm/BaseLinearDisplay/components/BlockLoadingMessage.js +0 -24
  391. package/esm/LinearBasicDisplay/components/AddFiltersDialog.d.ts +0 -9
  392. package/esm/LinearBasicDisplay/components/SetMaxHeightDialog.d.ts +0 -8
  393. package/esm/LinearGenomeView/components/ScalebarCoordinateTicks.d.ts +0 -6
  394. package/esm/LinearGenomeView/components/ScalebarCoordinateTicks.js +0 -36
  395. /package/{dist/LinearBasicDisplay → esm/LinearFeatureDisplay}/components/AddFiltersDialog.d.ts +0 -0
  396. /package/{dist/LinearBasicDisplay → esm/LinearFeatureDisplay}/components/SetMaxHeightDialog.d.ts +0 -0
@@ -1,8 +1,10 @@
1
1
  import { useEffect, useRef } from 'react';
2
2
  import { sum } from '@jbrowse/core/util';
3
3
  export function useWheelScroll(ref, model) {
4
- const delta = useRef(0);
4
+ const zoomDelta = useRef(0);
5
+ const scrollDelta = useRef(0);
5
6
  const timeout = useRef(null);
7
+ const rafId = useRef(0);
6
8
  const scheduled = useRef(false);
7
9
  useEffect(() => {
8
10
  let samples = [];
@@ -19,17 +21,19 @@ export function useWheelScroll(ref, model) {
19
21
  ? 500
20
22
  : 150
21
23
  : 75;
22
- delta.current += event.deltaY / normalizer;
23
- model.setScaleFactor(delta.current < 0 ? 1 - delta.current : 1 / (1 + delta.current));
24
+ zoomDelta.current += event.deltaY / normalizer;
25
+ model.setScaleFactor(zoomDelta.current < 0
26
+ ? 1 - zoomDelta.current
27
+ : 1 / (1 + zoomDelta.current));
24
28
  if (timeout.current) {
25
29
  clearTimeout(timeout.current);
26
30
  }
27
31
  timeout.current = setTimeout(() => {
28
32
  model.setScaleFactor(1);
29
- model.zoomTo(delta.current > 0
30
- ? model.bpPerPx * (1 + delta.current)
31
- : model.bpPerPx / (1 - delta.current), event.clientX - ((curr === null || curr === void 0 ? void 0 : curr.getBoundingClientRect().left) || 0));
32
- delta.current = 0;
33
+ model.zoomTo(zoomDelta.current > 0
34
+ ? model.bpPerPx * (1 + zoomDelta.current)
35
+ : model.bpPerPx / (1 - zoomDelta.current), event.clientX - (curr?.getBoundingClientRect().left || 0));
36
+ zoomDelta.current = 0;
33
37
  samples = [];
34
38
  }, 300);
35
39
  }
@@ -37,21 +41,27 @@ export function useWheelScroll(ref, model) {
37
41
  if (Math.abs(event.deltaX) > Math.abs(2 * event.deltaY)) {
38
42
  event.preventDefault();
39
43
  }
40
- delta.current += event.deltaX;
44
+ scrollDelta.current += event.deltaX;
41
45
  if (!scheduled.current) {
42
46
  scheduled.current = true;
43
- window.requestAnimationFrame(() => {
44
- model.horizontalScroll(delta.current);
45
- delta.current = 0;
47
+ rafId.current = window.requestAnimationFrame(() => {
48
+ model.horizontalScroll(scrollDelta.current);
49
+ scrollDelta.current = 0;
46
50
  scheduled.current = false;
47
51
  });
48
52
  }
49
53
  }
50
54
  }
51
55
  if (curr) {
52
- curr.addEventListener('wheel', onWheel);
56
+ curr.addEventListener('wheel', onWheel, { passive: false });
53
57
  return () => {
54
58
  curr.removeEventListener('wheel', onWheel);
59
+ if (timeout.current) {
60
+ clearTimeout(timeout.current);
61
+ }
62
+ if (rafId.current) {
63
+ cancelAnimationFrame(rafId.current);
64
+ }
55
65
  };
56
66
  }
57
67
  return () => { };
@@ -1,17 +1,5 @@
1
- import BaseResult from '@jbrowse/core/TextSearch/BaseResults';
2
- import type { SearchScope } from '@jbrowse/core/TextSearch/TextSearchManager';
3
1
  import type { Assembly } from '@jbrowse/core/assemblyManager/assembly';
4
- import type { SearchType } from '@jbrowse/core/data_adapters/BaseAdapter';
5
- import type { TextSearchManager } from '@jbrowse/core/util';
6
- export declare function fetchResults({ queryString, searchType, searchScope, rankSearchResults, textSearchManager, assembly, }: {
7
- queryString: string;
8
- searchScope: SearchScope;
9
- rankSearchResults: (results: BaseResult[]) => BaseResult[];
10
- searchType?: SearchType;
11
- textSearchManager?: TextSearchManager;
12
- assembly?: Assembly;
13
- }): Promise<BaseResult[]>;
14
- export declare function splitLast(str: string, split: string): [string, string];
2
+ export { fetchResults, splitLast } from '../../searchUtils.ts';
15
3
  export declare function getRelativeX(event: {
16
4
  clientX: number;
17
5
  target: EventTarget | null;
@@ -23,3 +11,4 @@ export declare function getCytobands(assembly: Assembly | undefined, refName: st
23
11
  type: string;
24
12
  name: any;
25
13
  }[];
14
+ export declare function shouldSwapTracks(lastSwapY: number | undefined, currentY: number, movingDown: boolean): boolean;
@@ -1,40 +1,21 @@
1
- import BaseResult from '@jbrowse/core/TextSearch/BaseResults';
2
- import { dedupe } from '@jbrowse/core/util';
3
- export async function fetchResults({ queryString, searchType, searchScope, rankSearchResults, textSearchManager, assembly, }) {
4
- var _a;
5
- if (!textSearchManager) {
6
- console.warn('No text search manager');
7
- }
8
- const textSearchResults = (await (textSearchManager === null || textSearchManager === void 0 ? void 0 : textSearchManager.search({
9
- queryString,
10
- searchType,
11
- }, searchScope, rankSearchResults))) || [];
12
- const refNameResults = ((_a = assembly === null || assembly === void 0 ? void 0 : assembly.allRefNames) === null || _a === void 0 ? void 0 : _a.filter(ref => ref.toLowerCase().startsWith(queryString.toLowerCase())).slice(0, 10).map(r => new BaseResult({
13
- label: r,
14
- }))) || [];
15
- return dedupe([...refNameResults, ...textSearchResults], elt => elt.getId());
16
- }
17
- export function splitLast(str, split) {
18
- const lastIndex = str.lastIndexOf(split);
19
- if (lastIndex === -1) {
20
- return [str, ''];
21
- }
22
- else {
23
- const before = str.slice(0, lastIndex);
24
- const after = str.slice(lastIndex + 1);
25
- return [before, after];
26
- }
27
- }
1
+ export { fetchResults, splitLast } from "../../searchUtils.js";
28
2
  export function getRelativeX(event, element) {
29
- return event.clientX - ((element === null || element === void 0 ? void 0 : element.getBoundingClientRect().left) || 0);
3
+ return event.clientX - (element?.getBoundingClientRect().left || 0);
30
4
  }
31
5
  export function getCytobands(assembly, refName) {
32
- var _a;
33
- return (((_a = assembly === null || assembly === void 0 ? void 0 : assembly.cytobands) === null || _a === void 0 ? void 0 : _a.map(f => ({
6
+ return (assembly?.cytobands
7
+ ?.map(f => ({
34
8
  refName: assembly.getCanonicalRefName(f.get('refName')) || f.get('refName'),
35
9
  start: f.get('start'),
36
10
  end: f.get('end'),
37
11
  type: f.get('gieStain'),
38
12
  name: f.get('name'),
39
- })).filter(f => f.refName === refName)) || []);
13
+ }))
14
+ .filter(f => f.refName === refName) || []);
15
+ }
16
+ const MIN_DRAG_DISTANCE = 30;
17
+ export function shouldSwapTracks(lastSwapY, currentY, movingDown) {
18
+ return (lastSwapY === undefined ||
19
+ (movingDown && currentY > lastSwapY + MIN_DRAG_DISTANCE) ||
20
+ (!movingDown && currentY < lastSwapY - MIN_DRAG_DISTANCE));
40
21
  }
@@ -1,3 +1,3 @@
1
1
  import type PluginManager from '@jbrowse/core/PluginManager';
2
2
  export default function LinearGenomeViewF(pluginManager: PluginManager): void;
3
- export * from './model';
3
+ export * from './model.ts';
@@ -1,14 +1,14 @@
1
1
  import { lazy } from 'react';
2
2
  import { ViewType } from '@jbrowse/core/pluggableElementTypes';
3
- import { stateModelFactory } from './model';
3
+ import { stateModelFactory } from "./model.js";
4
4
  export default function LinearGenomeViewF(pluginManager) {
5
5
  pluginManager.addViewType(() => {
6
6
  return new ViewType({
7
7
  name: 'LinearGenomeView',
8
8
  displayName: 'Linear genome view',
9
9
  stateModel: stateModelFactory(pluginManager),
10
- ReactComponent: lazy(() => import('./components/LinearGenomeView')),
10
+ ReactComponent: lazy(() => import("./components/LinearGenomeView.js")),
11
11
  });
12
12
  });
13
13
  }
14
- export * from './model';
14
+ export * from "./model.js";
@@ -0,0 +1,2 @@
1
+ import type { LinearGenomeViewModel } from './model.ts';
2
+ export declare function setupKeyboardHandler(self: LinearGenomeViewModel): void;
@@ -0,0 +1,29 @@
1
+ import { getSession } from '@jbrowse/core/util';
2
+ import { addDisposer } from '@jbrowse/mobx-state-tree';
3
+ export function setupKeyboardHandler(self) {
4
+ function handler(e) {
5
+ const session = getSession(self);
6
+ if (session.focusedViewId === self.id && (e.ctrlKey || e.metaKey)) {
7
+ if (e.code === 'ArrowLeft') {
8
+ e.preventDefault();
9
+ self.slide(-0.9);
10
+ }
11
+ else if (e.code === 'ArrowRight') {
12
+ e.preventDefault();
13
+ self.slide(0.9);
14
+ }
15
+ else if (e.code === 'ArrowUp') {
16
+ e.preventDefault();
17
+ self.zoom(self.bpPerPx / 2);
18
+ }
19
+ else if (e.code === 'ArrowDown') {
20
+ e.preventDefault();
21
+ self.zoom(self.bpPerPx * 2);
22
+ }
23
+ }
24
+ }
25
+ document.addEventListener('keydown', handler);
26
+ addDisposer(self, () => {
27
+ document.removeEventListener('keydown', handler);
28
+ });
29
+ }
@@ -0,0 +1,7 @@
1
+ import type { LinearGenomeViewModel } from './model.ts';
2
+ import type { BpOffset } from './types.ts';
3
+ import type { MenuItem } from '@jbrowse/core/ui';
4
+ export declare function rewriteOnClicks(self: LinearGenomeViewModel, trackType: string, viewMenuActions: MenuItem[]): void;
5
+ export declare function buildMenuItems(self: LinearGenomeViewModel): MenuItem[];
6
+ export declare function buildRubberBandMenuItems(self: LinearGenomeViewModel): MenuItem[];
7
+ export declare function buildRubberbandClickMenuItems(self: LinearGenomeViewModel, clickOffset: BpOffset): MenuItem[];
@@ -0,0 +1,299 @@
1
+ import { lazy } from 'react';
2
+ import { TrackSelector as TrackSelectorIcon } from '@jbrowse/core/ui/Icons';
3
+ import { getSession, isSessionWithAddTracks, toLocale, } from '@jbrowse/core/util';
4
+ import CenterFocusStrongIcon from '@mui/icons-material/CenterFocusStrong';
5
+ import ContentCopyIcon from '@mui/icons-material/ContentCopy';
6
+ import FolderOpenIcon from '@mui/icons-material/FolderOpen';
7
+ import LabelIcon from '@mui/icons-material/Label';
8
+ import MenuOpenIcon from '@mui/icons-material/MenuOpen';
9
+ import PaletteIcon from '@mui/icons-material/Palette';
10
+ import PhotoCameraIcon from '@mui/icons-material/PhotoCamera';
11
+ import SearchIcon from '@mui/icons-material/Search';
12
+ import SyncAltIcon from '@mui/icons-material/SyncAlt';
13
+ import VisibilityIcon from '@mui/icons-material/Visibility';
14
+ import ZoomInIcon from '@mui/icons-material/ZoomIn';
15
+ const ReturnToImportFormDialog = lazy(() => import('@jbrowse/core/ui/ReturnToImportFormDialog'));
16
+ const SequenceSearchDialog = lazy(() => import("./components/SequenceSearchDialog.js"));
17
+ const ExportSvgDialog = lazy(() => import("./components/ExportSvgDialog.js"));
18
+ const GetSequenceDialog = lazy(() => import("./components/GetSequenceDialog.js"));
19
+ function toLocaleRounded(n) {
20
+ return toLocale(Math.round(n));
21
+ }
22
+ export function rewriteOnClicks(self, trackType, viewMenuActions) {
23
+ for (const action of viewMenuActions) {
24
+ if ('subMenu' in action) {
25
+ rewriteOnClicks(self, trackType, action.subMenu);
26
+ }
27
+ if ('onClick' in action) {
28
+ const holdOnClick = action.onClick;
29
+ action.onClick = (...args) => {
30
+ for (const track of self.tracks) {
31
+ if (track.type === trackType) {
32
+ holdOnClick.apply(track, [track, ...args]);
33
+ }
34
+ }
35
+ };
36
+ }
37
+ }
38
+ }
39
+ export function buildMenuItems(self) {
40
+ if (!self.hasDisplayedRegions) {
41
+ return [];
42
+ }
43
+ const { canShowCytobands, showCytobands } = self;
44
+ const session = getSession(self);
45
+ const menuItems = [
46
+ {
47
+ label: 'Return to import form',
48
+ onClick: () => {
49
+ session.queueDialog(handleClose => [
50
+ ReturnToImportFormDialog,
51
+ {
52
+ model: self,
53
+ handleClose,
54
+ },
55
+ ]);
56
+ },
57
+ icon: FolderOpenIcon,
58
+ },
59
+ ...(isSessionWithAddTracks(session)
60
+ ? [
61
+ {
62
+ label: 'Sequence search',
63
+ icon: SearchIcon,
64
+ onClick: () => {
65
+ session.queueDialog(handleClose => [
66
+ SequenceSearchDialog,
67
+ {
68
+ model: self,
69
+ handleClose,
70
+ },
71
+ ]);
72
+ },
73
+ },
74
+ ]
75
+ : []),
76
+ {
77
+ label: 'Export SVG',
78
+ icon: PhotoCameraIcon,
79
+ onClick: () => {
80
+ session.queueDialog(handleClose => [
81
+ ExportSvgDialog,
82
+ {
83
+ model: self,
84
+ handleClose,
85
+ },
86
+ ]);
87
+ },
88
+ },
89
+ {
90
+ label: 'Open track selector',
91
+ onClick: self.activateTrackSelector,
92
+ icon: TrackSelectorIcon,
93
+ },
94
+ {
95
+ label: 'Horizontally flip',
96
+ icon: SyncAltIcon,
97
+ onClick: self.horizontallyFlip,
98
+ },
99
+ {
100
+ label: 'Color by CDS and draw amino acids',
101
+ type: 'checkbox',
102
+ checked: self.colorByCDS,
103
+ icon: PaletteIcon,
104
+ onClick: () => {
105
+ self.setColorByCDS(!self.colorByCDS);
106
+ },
107
+ },
108
+ {
109
+ label: 'Show...',
110
+ icon: VisibilityIcon,
111
+ subMenu: [
112
+ {
113
+ label: 'Show all regions in assembly',
114
+ onClick: self.showAllRegionsInAssembly,
115
+ },
116
+ {
117
+ label: 'Show center line',
118
+ type: 'checkbox',
119
+ checked: self.showCenterLine,
120
+ onClick: () => {
121
+ self.setShowCenterLine(!self.showCenterLine);
122
+ },
123
+ },
124
+ {
125
+ label: 'Show header',
126
+ type: 'checkbox',
127
+ checked: !self.hideHeader,
128
+ onClick: () => {
129
+ self.setHideHeader(!self.hideHeader);
130
+ },
131
+ },
132
+ {
133
+ label: 'Show track outlines',
134
+ type: 'checkbox',
135
+ checked: self.showTrackOutlines,
136
+ onClick: () => {
137
+ self.setShowTrackOutlines(!self.showTrackOutlines);
138
+ },
139
+ },
140
+ {
141
+ label: 'Show header overview',
142
+ type: 'checkbox',
143
+ checked: !self.hideHeaderOverview,
144
+ onClick: () => {
145
+ self.setHideHeaderOverview(!self.hideHeaderOverview);
146
+ },
147
+ disabled: self.hideHeader,
148
+ },
149
+ {
150
+ label: 'Show no tracks active button',
151
+ type: 'checkbox',
152
+ checked: !self.hideNoTracksActive,
153
+ onClick: () => {
154
+ self.setHideNoTracksActive(!self.hideNoTracksActive);
155
+ },
156
+ },
157
+ {
158
+ label: 'Show guidelines',
159
+ type: 'checkbox',
160
+ checked: self.showGridlines,
161
+ onClick: () => {
162
+ self.setShowGridlines(!self.showGridlines);
163
+ },
164
+ },
165
+ ...(canShowCytobands
166
+ ? [
167
+ {
168
+ label: 'Show ideogram',
169
+ type: 'checkbox',
170
+ checked: self.showCytobands,
171
+ onClick: () => {
172
+ self.setShowCytobands(!showCytobands);
173
+ },
174
+ },
175
+ ]
176
+ : []),
177
+ ],
178
+ },
179
+ {
180
+ label: 'Track labels',
181
+ icon: LabelIcon,
182
+ subMenu: [
183
+ {
184
+ label: 'Overlapping',
185
+ icon: VisibilityIcon,
186
+ type: 'radio',
187
+ checked: self.trackLabelsSetting === 'overlapping',
188
+ onClick: () => {
189
+ self.setTrackLabels('overlapping');
190
+ },
191
+ },
192
+ {
193
+ label: 'Offset',
194
+ icon: VisibilityIcon,
195
+ type: 'radio',
196
+ checked: self.trackLabelsSetting === 'offset',
197
+ onClick: () => {
198
+ self.setTrackLabels('offset');
199
+ },
200
+ },
201
+ {
202
+ label: 'Hidden',
203
+ icon: VisibilityIcon,
204
+ type: 'radio',
205
+ checked: self.trackLabelsSetting === 'hidden',
206
+ onClick: () => {
207
+ self.setTrackLabels('hidden');
208
+ },
209
+ },
210
+ ],
211
+ },
212
+ ];
213
+ for (const [key, value] of self.trackTypeActions.entries()) {
214
+ if (value.length) {
215
+ menuItems.push({
216
+ type: 'divider',
217
+ }, {
218
+ type: 'subHeader',
219
+ label: key,
220
+ });
221
+ for (const action of value) {
222
+ menuItems.push(action);
223
+ }
224
+ }
225
+ }
226
+ return menuItems;
227
+ }
228
+ export function buildRubberBandMenuItems(self) {
229
+ const { leftOffset, rightOffset } = self;
230
+ const leftRef = leftOffset?.refName ?? '';
231
+ const rightRef = rightOffset?.refName ?? '';
232
+ const leftCoord = toLocaleRounded((leftOffset?.coord ?? 0) + 1);
233
+ const rightCoord = toLocaleRounded(rightOffset?.coord ?? 0);
234
+ const rangeString = leftRef === rightRef
235
+ ? `${leftRef}:${leftCoord}-${rightCoord}`
236
+ : `${leftRef}:${leftCoord}..${rightRef}:${rightCoord}`;
237
+ return [
238
+ {
239
+ label: 'Zoom to region',
240
+ icon: ZoomInIcon,
241
+ onClick: () => {
242
+ self.moveTo(self.leftOffset, self.rightOffset);
243
+ },
244
+ },
245
+ {
246
+ label: 'Get sequence',
247
+ icon: MenuOpenIcon,
248
+ onClick: () => {
249
+ getSession(self).queueDialog(handleClose => [
250
+ GetSequenceDialog,
251
+ {
252
+ model: self,
253
+ handleClose,
254
+ },
255
+ ]);
256
+ },
257
+ },
258
+ {
259
+ label: 'Copy range',
260
+ icon: ContentCopyIcon,
261
+ onClick: async () => {
262
+ const { default: copy } = await import('copy-to-clipboard');
263
+ copy(rangeString);
264
+ },
265
+ },
266
+ ];
267
+ }
268
+ export function buildRubberbandClickMenuItems(self, clickOffset) {
269
+ const { coord, refName } = clickOffset;
270
+ if (coord === undefined || refName === undefined) {
271
+ return [];
272
+ }
273
+ const locString = `${refName}:${toLocaleRounded(coord + 1)}`;
274
+ return [
275
+ {
276
+ label: 'Center view here',
277
+ icon: CenterFocusStrongIcon,
278
+ onClick: () => {
279
+ self.centerAt(coord, refName);
280
+ },
281
+ },
282
+ {
283
+ label: 'Zoom to base level',
284
+ icon: ZoomInIcon,
285
+ onClick: () => {
286
+ self.centerAt(coord, refName);
287
+ self.zoomTo(self.minBpPerPx);
288
+ },
289
+ },
290
+ {
291
+ label: `Copy coordinate (${locString})`,
292
+ icon: ContentCopyIcon,
293
+ onClick: async () => {
294
+ const { default: copy } = await import('copy-to-clipboard');
295
+ copy(locString);
296
+ },
297
+ },
298
+ ];
299
+ }