@jbrowse/plugin-linear-genome-view 3.7.0 → 4.0.1

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
@@ -4,26 +4,33 @@ import { BaseDisplay } from '@jbrowse/core/pluggableElementTypes/models';
4
4
  import { getContainingTrack, getContainingView, getSession, isFeature, isSelectionContainer, isSessionModelWithWidgets, } from '@jbrowse/core/util';
5
5
  import CompositeMap from '@jbrowse/core/util/compositeMap';
6
6
  import { getParentRenderProps, getRpcSessionId, } from '@jbrowse/core/util/tracks';
7
+ import { addDisposer, flow, isAlive, types } from '@jbrowse/mobx-state-tree';
7
8
  import CenterFocusStrongIcon from '@mui/icons-material/CenterFocusStrong';
9
+ import CloseFullscreenIcon from '@mui/icons-material/CloseFullscreen';
8
10
  import ContentCopyIcon from '@mui/icons-material/ContentCopy';
9
11
  import MenuOpenIcon from '@mui/icons-material/MenuOpen';
10
- import copy from 'copy-to-clipboard';
11
12
  import { autorun } from 'mobx';
12
- import { addDisposer, isAlive, types } from 'mobx-state-tree';
13
- import FeatureDensityMixin from './models/FeatureDensityMixin';
14
- import TrackHeightMixin from './models/TrackHeightMixin';
15
- import configSchema from './models/configSchema';
16
- import BlockState from './models/serverSideRenderedBlock';
17
- const Tooltip = lazy(() => import('./components/Tooltip'));
13
+ import { deduplicateFeatureLabels } from "./components/util.js";
14
+ import { calculateSvgLegendWidth } from "./index.js";
15
+ import FeatureDensityMixin from "./models/FeatureDensityMixin.js";
16
+ import TrackHeightMixin from "./models/TrackHeightMixin.js";
17
+ import configSchema from "./models/configSchema.js";
18
+ import BlockState from "./models/serverSideRenderedBlock.js";
19
+ import { fetchFeatureByIdRpc, findSubfeatureById, getTranscripts, hasExonsOrCDS, } from "./util.js";
20
+ const Tooltip = lazy(() => import("./components/Tooltip.js"));
21
+ const CollapseIntronsDialog = lazy(() => import("./components/CollapseIntronsDialog/CollapseIntronsDialog.js"));
18
22
  function stateModelFactory() {
19
23
  return types
20
24
  .compose('BaseLinearDisplay', BaseDisplay, TrackHeightMixin(), FeatureDensityMixin(), types.model({
21
25
  blockState: types.map(BlockState),
22
26
  configuration: ConfigurationReference(configSchema),
27
+ showLegend: types.maybe(types.boolean),
28
+ showTooltips: types.maybe(types.boolean),
23
29
  }))
24
30
  .volatile(() => ({
25
31
  mouseoverExtraInformation: undefined,
26
32
  featureIdUnderMouse: undefined,
33
+ subfeatureIdUnderMouse: undefined,
27
34
  contextMenuFeature: undefined,
28
35
  }))
29
36
  .views(self => ({
@@ -48,6 +55,14 @@ function stateModelFactory() {
48
55
  get TooltipComponent() {
49
56
  return Tooltip;
50
57
  },
58
+ legendItems(_theme) {
59
+ return [];
60
+ },
61
+ svgLegendWidth(theme) {
62
+ return self.showLegend
63
+ ? calculateSvgLegendWidth(this.legendItems(theme))
64
+ : 0;
65
+ },
51
66
  get selectedFeatureId() {
52
67
  if (isAlive(self)) {
53
68
  const { selection } = getSession(self);
@@ -57,14 +72,17 @@ function stateModelFactory() {
57
72
  }
58
73
  return undefined;
59
74
  },
60
- copyInfoToClipboard(feature) {
61
- const { uniqueId, ...rest } = feature.toJSON();
62
- const session = getSession(self);
63
- copy(JSON.stringify(rest, null, 4));
64
- session.notify('Copied to clipboard', 'success');
75
+ get featureWidgetType() {
76
+ return {
77
+ type: 'BaseFeatureWidget',
78
+ id: 'baseFeature',
79
+ };
65
80
  },
66
81
  }))
67
82
  .views(self => ({
83
+ get showTooltipsEnabled() {
84
+ return self.showTooltips ?? true;
85
+ },
68
86
  get features() {
69
87
  const featureMaps = [];
70
88
  for (const block of self.blockState.values()) {
@@ -78,73 +96,93 @@ function stateModelFactory() {
78
96
  const feat = self.featureIdUnderMouse;
79
97
  return feat ? this.features.get(feat) : undefined;
80
98
  },
99
+ getFeatureById(featureId, parentFeatureId) {
100
+ const feature = this.features.get(featureId);
101
+ if (feature) {
102
+ return feature;
103
+ }
104
+ if (parentFeatureId) {
105
+ const parent = this.features.get(parentFeatureId);
106
+ if (parent) {
107
+ return findSubfeatureById(parent, featureId);
108
+ }
109
+ }
110
+ return undefined;
111
+ },
81
112
  get layoutFeatures() {
82
113
  const featureMaps = [];
83
114
  for (const block of self.blockState.values()) {
84
- if (block.layout) {
85
- featureMaps.push(block.layout.rectangles);
115
+ if (block.layout?.getRectangles) {
116
+ featureMaps.push(block.layout.getRectangles());
86
117
  }
87
118
  }
88
119
  return new CompositeMap(featureMaps);
89
120
  },
90
121
  getFeatureOverlapping(blockKey, x, y) {
91
- var _a, _b;
92
- return (_b = (_a = self.blockState.get(blockKey)) === null || _a === void 0 ? void 0 : _a.layout) === null || _b === void 0 ? void 0 : _b.getByCoord(x, y);
122
+ return self.blockState.get(blockKey)?.layout?.getByCoord(x, y);
93
123
  },
94
124
  getFeatureByID(blockKey, id) {
95
- var _a, _b;
96
- return (_b = (_a = self.blockState.get(blockKey)) === null || _a === void 0 ? void 0 : _a.layout) === null || _b === void 0 ? void 0 : _b.getByID(id);
125
+ return self.blockState.get(blockKey)?.layout?.getByID(id);
97
126
  },
98
127
  searchFeatureByID(id) {
99
- var _a;
100
- let ret;
101
128
  for (const block of self.blockState.values()) {
102
- const val = (_a = block.layout) === null || _a === void 0 ? void 0 : _a.getByID(id);
129
+ const val = block.layout?.getByID(id);
103
130
  if (val) {
104
- ret = val;
131
+ return val;
105
132
  }
106
133
  }
107
- return ret;
134
+ return undefined;
135
+ },
136
+ get floatingLabelData() {
137
+ const view = getContainingView(self);
138
+ const { assemblyManager } = getSession(self);
139
+ const assemblyName = view.assemblyNames[0];
140
+ const assembly = assemblyName
141
+ ? assemblyManager.get(assemblyName)
142
+ : undefined;
143
+ return deduplicateFeatureLabels(this.layoutFeatures, view, assembly, view.bpPerPx);
108
144
  },
109
145
  }))
110
146
  .actions(self => ({
111
147
  addBlock(key, block) {
112
- self.blockState.set(key, BlockState.create({
148
+ const blockInstance = BlockState.create({
113
149
  key,
114
150
  region: block.toRegion(),
115
- }));
151
+ });
152
+ blockInstance.setCachedDisplay(self);
153
+ self.blockState.set(key, blockInstance);
116
154
  },
117
155
  deleteBlock(key) {
118
156
  self.blockState.delete(key);
119
157
  },
120
158
  selectFeature(feature) {
121
159
  const session = getSession(self);
160
+ if (isSelectionContainer(session)) {
161
+ session.setSelection(feature);
162
+ }
122
163
  if (isSessionModelWithWidgets(session)) {
123
164
  const { rpcManager } = session;
124
165
  const sessionId = getRpcSessionId(self);
125
166
  const track = getContainingTrack(self);
126
167
  const view = getContainingView(self);
127
168
  const adapterConfig = getConf(track, 'adapter');
128
- (async () => {
129
- try {
130
- const descriptions = await rpcManager.call(sessionId, 'CoreGetMetadata', {
131
- adapterConfig,
132
- });
133
- session.showWidget(session.addWidget('BaseFeatureWidget', 'baseFeature', {
169
+ const { type, id } = self.featureWidgetType;
170
+ rpcManager
171
+ .call(sessionId, 'CoreGetMetadata', { adapterConfig })
172
+ .then(descriptions => {
173
+ if (isAlive(self)) {
174
+ session.showWidget(session.addWidget(type, id, {
134
175
  featureData: feature.toJSON(),
135
176
  view,
136
177
  track,
137
178
  descriptions,
138
179
  }));
139
180
  }
140
- catch (e) {
141
- console.error(e);
142
- getSession(e).notifyError(`${e}`, e);
143
- }
144
- })();
145
- }
146
- if (isSelectionContainer(session)) {
147
- session.setSelection(feature);
181
+ })
182
+ .catch((e) => {
183
+ console.error(e);
184
+ getSession(self).notifyError(`${e}`, e);
185
+ });
148
186
  }
149
187
  },
150
188
  navToFeature(feature) {
@@ -161,12 +199,21 @@ function stateModelFactory() {
161
199
  setFeatureIdUnderMouse(feature) {
162
200
  self.featureIdUnderMouse = feature;
163
201
  },
202
+ setSubfeatureIdUnderMouse(subfeatureId) {
203
+ self.subfeatureIdUnderMouse = subfeatureId;
204
+ },
164
205
  setContextMenuFeature(feature) {
165
206
  self.contextMenuFeature = feature;
166
207
  },
167
208
  setMouseoverExtraInformation(extra) {
168
209
  self.mouseoverExtraInformation = extra;
169
210
  },
211
+ setShowLegend(s) {
212
+ self.showLegend = s;
213
+ },
214
+ setShowTooltips(arg) {
215
+ self.showTooltips = arg;
216
+ },
170
217
  }))
171
218
  .actions(self => {
172
219
  const { reload: superReload } = self;
@@ -182,12 +229,71 @@ function stateModelFactory() {
182
229
  },
183
230
  };
184
231
  })
232
+ .actions(self => ({
233
+ selectFeatureById: flow(function* (featureId, parentFeatureId, topLevelFeatureId) {
234
+ const feature = self.getFeatureById(featureId, parentFeatureId);
235
+ if (feature) {
236
+ self.selectFeature(feature);
237
+ return;
238
+ }
239
+ const rpcParentId = topLevelFeatureId && topLevelFeatureId !== featureId
240
+ ? topLevelFeatureId
241
+ : parentFeatureId;
242
+ try {
243
+ const session = getSession(self);
244
+ const f = yield fetchFeatureByIdRpc({
245
+ rpcManager: session.rpcManager,
246
+ sessionId: getRpcSessionId(self),
247
+ trackId: getContainingTrack(self).id,
248
+ rendererType: self.rendererTypeName,
249
+ featureId,
250
+ parentFeatureId: rpcParentId,
251
+ });
252
+ if (f && isAlive(self)) {
253
+ self.selectFeature(f);
254
+ }
255
+ }
256
+ catch (e) {
257
+ console.error(e);
258
+ getSession(self).notifyError(`${e}`, e);
259
+ }
260
+ }),
261
+ setContextMenuFeatureById: flow(function* (featureId, parentFeatureId, topLevelFeatureId) {
262
+ const feature = self.getFeatureById(featureId, parentFeatureId);
263
+ if (feature) {
264
+ self.setContextMenuFeature(feature);
265
+ return;
266
+ }
267
+ const rpcParentId = topLevelFeatureId && topLevelFeatureId !== featureId
268
+ ? topLevelFeatureId
269
+ : parentFeatureId;
270
+ try {
271
+ const session = getSession(self);
272
+ const f = yield fetchFeatureByIdRpc({
273
+ rpcManager: session.rpcManager,
274
+ sessionId: getRpcSessionId(self),
275
+ trackId: getContainingTrack(self).id,
276
+ rendererType: self.rendererTypeName,
277
+ featureId,
278
+ parentFeatureId: rpcParentId,
279
+ });
280
+ if (f && isAlive(self)) {
281
+ self.setContextMenuFeature(f);
282
+ }
283
+ }
284
+ catch (e) {
285
+ console.error(e);
286
+ getSession(self).notifyError(`${e}`, e);
287
+ }
288
+ }),
289
+ }))
185
290
  .views(self => ({
186
291
  trackMenuItems() {
187
292
  return [];
188
293
  },
189
294
  contextMenuItems() {
190
295
  const feat = self.contextMenuFeature;
296
+ const transcripts = getTranscripts(feat);
191
297
  return feat
192
298
  ? [
193
299
  {
@@ -207,81 +313,97 @@ function stateModelFactory() {
207
313
  {
208
314
  label: 'Copy info to clipboard',
209
315
  icon: ContentCopyIcon,
210
- onClick: () => {
211
- self.copyInfoToClipboard(feat);
316
+ onClick: async () => {
317
+ const { uniqueId, ...rest } = feat.toJSON();
318
+ const session = getSession(self);
319
+ const { default: copy } = await import('copy-to-clipboard');
320
+ copy(JSON.stringify(rest, null, 4));
321
+ session.notify('Copied to clipboard', 'success');
212
322
  },
213
323
  },
324
+ ...(hasExonsOrCDS(transcripts)
325
+ ? [
326
+ {
327
+ label: 'Collapse introns',
328
+ icon: CloseFullscreenIcon,
329
+ onClick: () => {
330
+ const view = getContainingView(self);
331
+ const { assemblyManager } = getSession(self);
332
+ const assembly = assemblyManager.get(view.assemblyNames[0]);
333
+ if (assembly) {
334
+ getSession(self).queueDialog(handleClose => [
335
+ CollapseIntronsDialog,
336
+ {
337
+ view,
338
+ transcripts,
339
+ handleClose,
340
+ assembly,
341
+ },
342
+ ]);
343
+ }
344
+ },
345
+ },
346
+ ]
347
+ : []),
214
348
  ]
215
349
  : [];
216
350
  },
217
- renderProps() {
351
+ renderingProps() {
218
352
  return {
219
- ...getParentRenderProps(self),
220
- notReady: !self.featureDensityStatsReady,
221
- rpcDriverName: self.rpcDriverName,
222
353
  displayModel: self,
223
- onFeatureClick(_, featureId) {
224
- const f = featureId || self.featureIdUnderMouse;
225
- if (!f) {
226
- self.clearFeatureSelection();
227
- }
228
- else {
229
- const feature = self.features.get(f);
230
- if (feature) {
231
- self.selectFeature(feature);
232
- }
233
- }
234
- },
235
- onClick() {
236
- self.clearFeatureSelection();
237
- },
238
- onFeatureContextMenu(_, featureId) {
239
- const f = featureId || self.featureIdUnderMouse;
240
- if (!f) {
241
- self.clearFeatureSelection();
242
- }
243
- else {
244
- self.setContextMenuFeature(self.features.get(f));
245
- }
246
- },
247
- onMouseMove(_, featureId, extra) {
354
+ onMouseMove(_, featureId) {
248
355
  self.setFeatureIdUnderMouse(featureId);
249
- self.setMouseoverExtraInformation(extra);
250
356
  },
251
357
  onMouseLeave(_) {
252
358
  self.setFeatureIdUnderMouse(undefined);
253
- self.setMouseoverExtraInformation(undefined);
254
359
  },
255
- onContextMenu() {
360
+ onContextMenu(_) {
256
361
  self.setContextMenuFeature(undefined);
257
362
  self.clearFeatureSelection();
258
363
  },
259
364
  };
260
365
  },
366
+ renderProps() {
367
+ return {
368
+ ...getParentRenderProps(self),
369
+ notReady: !self.featureDensityStatsReady,
370
+ rpcDriverName: self.effectiveRpcDriverName,
371
+ };
372
+ },
261
373
  }))
262
374
  .actions(self => ({
263
375
  async renderSvg(opts) {
264
- const { renderBaseLinearDisplaySvg } = await import('./models/renderSvg');
376
+ const { renderBaseLinearDisplaySvg } = await import("./renderSvg.js");
265
377
  return renderBaseLinearDisplaySvg(self, opts);
266
378
  },
267
379
  afterAttach() {
268
- addDisposer(self, autorun(() => {
269
- const blocksPresent = {};
270
- const view = getContainingView(self);
271
- if (!view.initialized) {
272
- return;
273
- }
274
- for (const block of self.blockDefinitions.contentBlocks) {
275
- blocksPresent[block.key] = true;
276
- if (!self.blockState.has(block.key)) {
277
- self.addBlock(block.key, block);
380
+ addDisposer(self, autorun(function blockDefinitionsAutorun() {
381
+ try {
382
+ if (!isAlive(self)) {
383
+ return;
278
384
  }
279
- }
280
- for (const key of self.blockState.keys()) {
281
- if (!blocksPresent[key]) {
282
- self.deleteBlock(key);
385
+ const view = getContainingView(self);
386
+ if (!view.initialized) {
387
+ return;
388
+ }
389
+ const contentBlocks = self.blockDefinitions.contentBlocks;
390
+ const newKeys = new Set(contentBlocks.map(b => b.key));
391
+ for (const block of contentBlocks) {
392
+ if (!self.blockState.has(block.key)) {
393
+ self.addBlock(block.key, block);
394
+ }
395
+ }
396
+ for (const key of self.blockState.keys()) {
397
+ if (!newKeys.has(key)) {
398
+ self.deleteBlock(key);
399
+ }
283
400
  }
284
401
  }
402
+ catch (e) {
403
+ }
404
+ }, {
405
+ name: 'BaseLinearDisplayBlockDefinitions',
406
+ delay: 60,
285
407
  }));
286
408
  },
287
409
  }))
@@ -299,3 +421,4 @@ function stateModelFactory() {
299
421
  });
300
422
  }
301
423
  export const BaseLinearDisplay = stateModelFactory();
424
+ export {} from "./components/FloatingLegend.js";
@@ -1,8 +1,8 @@
1
1
  import type { FeatureDensityStats } from '@jbrowse/core/data_adapters/BaseAdapter';
2
2
  import type { Region } from '@jbrowse/core/util/types';
3
- export default function FeatureDensityMixin(): import("mobx-state-tree").IModelType<{
4
- userBpPerPxLimit: import("mobx-state-tree").IMaybe<import("mobx-state-tree").ISimpleType<number>>;
5
- userByteSizeLimit: import("mobx-state-tree").IMaybe<import("mobx-state-tree").ISimpleType<number>>;
3
+ export default function FeatureDensityMixin(): import("@jbrowse/mobx-state-tree").IModelType<{
4
+ userBpPerPxLimit: import("@jbrowse/mobx-state-tree").IMaybe<import("@jbrowse/mobx-state-tree").ISimpleType<number>>;
5
+ userByteSizeLimit: import("@jbrowse/mobx-state-tree").IMaybe<import("@jbrowse/mobx-state-tree").ISimpleType<number>>;
6
6
  }, {
7
7
  featureDensityStatsP: undefined | Promise<FeatureDensityStats>;
8
8
  featureDensityStats: undefined | FeatureDensityStats;
@@ -26,7 +26,7 @@ export default function FeatureDensityMixin(): import("mobx-state-tree").IModelT
26
26
  readonly regionTooLarge: boolean;
27
27
  readonly regionTooLargeReason: string;
28
28
  } & {
29
- readonly statsReadyAndRegionNotTooLarge: boolean;
29
+ readonly featureDensityStatsReadyAndRegionNotTooLarge: boolean;
30
30
  regionCannotBeRenderedText(_region: Region): "" | "Force load to see features";
31
31
  regionCannotBeRendered(_region: Region): import("react/jsx-runtime").JSX.Element | null;
32
- }, import("mobx-state-tree")._NotCustomized, import("mobx-state-tree")._NotCustomized>;
32
+ }, import("@jbrowse/mobx-state-tree")._NotCustomized, import("@jbrowse/mobx-state-tree")._NotCustomized>;
@@ -1,11 +1,11 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
2
  import { getConf } from '@jbrowse/core/configuration';
3
3
  import { getContainingView } from '@jbrowse/core/util';
4
+ import { addDisposer, isAlive, types } from '@jbrowse/mobx-state-tree';
4
5
  import { autorun } from 'mobx';
5
- import { addDisposer, isAlive, types } from 'mobx-state-tree';
6
- import autorunFeatureDensityStats from './autorunFeatureDensityStats';
7
- import { getDisplayStr, getFeatureDensityStatsPre } from './util';
8
- import TooLargeMessage from '../components/TooLargeMessage';
6
+ import autorunFeatureDensityStats from "./autorunFeatureDensityStats.js";
7
+ import { getDisplayStr, getFeatureDensityStatsPre } from "./util.js";
8
+ import TooLargeMessage from "../components/TooLargeMessage.js";
9
9
  export default function FeatureDensityMixin() {
10
10
  return types
11
11
  .model({
@@ -19,13 +19,11 @@ export default function FeatureDensityMixin() {
19
19
  }))
20
20
  .views(self => ({
21
21
  get currentBytesRequested() {
22
- var _a;
23
- return ((_a = self.featureDensityStats) === null || _a === void 0 ? void 0 : _a.bytes) || 0;
22
+ return self.featureDensityStats?.bytes || 0;
24
23
  },
25
24
  get currentFeatureScreenDensity() {
26
- var _a;
27
25
  const view = getContainingView(self);
28
- return (((_a = self.featureDensityStats) === null || _a === void 0 ? void 0 : _a.featureDensity) || 0) * view.bpPerPx;
26
+ return (self.featureDensityStats?.featureDensity || 0) * view.bpPerPx;
29
27
  },
30
28
  get maxFeatureScreenDensity() {
31
29
  return getConf(self, 'maxFeatureScreenDensity');
@@ -36,9 +34,8 @@ export default function FeatureDensityMixin() {
36
34
  (!!self.featureDensityStats || !!self.userBpPerPxLimit));
37
35
  },
38
36
  get maxAllowableBytes() {
39
- var _a;
40
37
  return (self.userByteSizeLimit ||
41
- ((_a = self.featureDensityStats) === null || _a === void 0 ? void 0 : _a.fetchSizeLimit) ||
38
+ self.featureDensityStats?.fetchSizeLimit ||
42
39
  getConf(self, 'fetchSizeLimit'));
43
40
  },
44
41
  }))
@@ -53,7 +50,7 @@ export default function FeatureDensityMixin() {
53
50
  },
54
51
  setFeatureDensityStatsLimit(stats) {
55
52
  const view = getContainingView(self);
56
- if (stats === null || stats === void 0 ? void 0 : stats.bytes) {
53
+ if (stats?.bytes) {
57
54
  self.userByteSizeLimit = stats.bytes;
58
55
  }
59
56
  else {
@@ -86,7 +83,7 @@ export default function FeatureDensityMixin() {
86
83
  get regionTooLarge() {
87
84
  const view = getContainingView(self);
88
85
  if (!self.featureDensityStatsReady ||
89
- view.dynamicBlocks.totalBp < 20000) {
86
+ view.dynamicBlocks.totalBp < 20_000) {
90
87
  return false;
91
88
  }
92
89
  return (self.currentBytesRequested > self.maxAllowableBytes ||
@@ -103,14 +100,14 @@ export default function FeatureDensityMixin() {
103
100
  },
104
101
  }))
105
102
  .views(self => ({
106
- get statsReadyAndRegionNotTooLarge() {
103
+ get featureDensityStatsReadyAndRegionNotTooLarge() {
107
104
  return self.featureDensityStatsReady && !self.regionTooLarge;
108
105
  },
109
106
  regionCannotBeRenderedText(_region) {
110
107
  return self.regionTooLarge ? 'Force load to see features' : '';
111
108
  },
112
109
  regionCannotBeRendered(_region) {
113
- return self.regionTooLarge ? (_jsx(TooLargeMessage, { model: self })) : null;
110
+ return self.regionTooLarge ? _jsx(TooLargeMessage, { model: self }) : null;
114
111
  },
115
112
  }));
116
113
  }
@@ -0,0 +1,21 @@
1
+ import type { StopToken } from '@jbrowse/core/util/stopToken';
2
+ export default function NonBlockCanvasDisplayMixin(): import("@jbrowse/mobx-state-tree").IModelType<{}, {
3
+ loading: boolean;
4
+ lastDrawnOffsetPx: number | undefined;
5
+ ref: HTMLCanvasElement | null;
6
+ renderingImageData: ImageBitmap | undefined;
7
+ renderingStopToken: StopToken | undefined;
8
+ statusMessage: string | undefined;
9
+ } & {
10
+ readonly drawn: boolean;
11
+ } & {
12
+ setLastDrawnOffsetPx(n: number): void;
13
+ setLoading(f: boolean): void;
14
+ setRef(ref: HTMLCanvasElement | null): void;
15
+ setRenderingImageData(imageData: ImageBitmap | undefined): void;
16
+ setRenderingStopToken(token?: StopToken): void;
17
+ setStatusMessage(msg?: string): void;
18
+ } & {
19
+ beforeDestroy(): void;
20
+ }, import("@jbrowse/mobx-state-tree")._NotCustomized, import("@jbrowse/mobx-state-tree")._NotCustomized>;
21
+ export type NonBlockCanvasDisplayMixinType = ReturnType<typeof NonBlockCanvasDisplayMixin>;
@@ -0,0 +1,46 @@
1
+ import { stopStopToken } from '@jbrowse/core/util/stopToken';
2
+ import { types } from '@jbrowse/mobx-state-tree';
3
+ export default function NonBlockCanvasDisplayMixin() {
4
+ return types
5
+ .model('NonBlockCanvasDisplayMixin', {})
6
+ .volatile(() => ({
7
+ loading: false,
8
+ lastDrawnOffsetPx: undefined,
9
+ ref: null,
10
+ renderingImageData: undefined,
11
+ renderingStopToken: undefined,
12
+ statusMessage: undefined,
13
+ }))
14
+ .views(self => ({
15
+ get drawn() {
16
+ return self.lastDrawnOffsetPx !== undefined;
17
+ },
18
+ }))
19
+ .actions(self => ({
20
+ setLastDrawnOffsetPx(n) {
21
+ self.lastDrawnOffsetPx = n;
22
+ },
23
+ setLoading(f) {
24
+ self.loading = f;
25
+ },
26
+ setRef(ref) {
27
+ self.ref = ref;
28
+ },
29
+ setRenderingImageData(imageData) {
30
+ self.renderingImageData = imageData;
31
+ },
32
+ setRenderingStopToken(token) {
33
+ self.renderingStopToken = token;
34
+ },
35
+ setStatusMessage(msg) {
36
+ self.statusMessage = msg;
37
+ },
38
+ }))
39
+ .actions(self => ({
40
+ beforeDestroy() {
41
+ if (self.renderingStopToken) {
42
+ stopStopToken(self.renderingStopToken);
43
+ }
44
+ },
45
+ }));
46
+ }
@@ -1,5 +1,5 @@
1
- export default function TrackHeightMixin(): import("mobx-state-tree").IModelType<{
2
- heightPreConfig: import("mobx-state-tree").IMaybe<import("mobx-state-tree").ISimpleType<number>>;
1
+ export default function TrackHeightMixin(): import("@jbrowse/mobx-state-tree").IModelType<{
2
+ heightPreConfig: import("@jbrowse/mobx-state-tree").IMaybe<import("@jbrowse/mobx-state-tree").ISimpleType<number>>;
3
3
  }, {
4
4
  scrollTop: number;
5
5
  } & {
@@ -8,4 +8,4 @@ export default function TrackHeightMixin(): import("mobx-state-tree").IModelType
8
8
  setScrollTop(scrollTop: number): void;
9
9
  setHeight(displayHeight: number): number;
10
10
  resizeHeight(distance: number): number;
11
- }, import("mobx-state-tree")._NotCustomized, import("mobx-state-tree")._NotCustomized>;
11
+ }, import("@jbrowse/mobx-state-tree")._NotCustomized, import("@jbrowse/mobx-state-tree")._NotCustomized>;
@@ -1,5 +1,5 @@
1
1
  import { getConf } from '@jbrowse/core/configuration';
2
- import { types } from 'mobx-state-tree';
2
+ import { types } from '@jbrowse/mobx-state-tree';
3
3
  const minDisplayHeight = 20;
4
4
  export default function TrackHeightMixin() {
5
5
  return types
@@ -11,8 +11,7 @@ export default function TrackHeightMixin() {
11
11
  }))
12
12
  .views(self => ({
13
13
  get height() {
14
- var _a;
15
- return (_a = self.heightPreConfig) !== null && _a !== void 0 ? _a : getConf(self, 'height');
14
+ return self.heightPreConfig ?? getConf(self, 'height');
16
15
  },
17
16
  }))
18
17
  .actions(self => ({
@@ -1,2 +1,2 @@
1
- import type { BaseLinearDisplayModel } from '../model';
1
+ import type { BaseLinearDisplayModel } from '../model.ts';
2
2
  export default function autorunFeatureDensityStats(self: BaseLinearDisplayModel): Promise<void>;
@@ -1,7 +1,6 @@
1
1
  import { getContainingView, isAbortException } from '@jbrowse/core/util';
2
- import { isAlive } from 'mobx-state-tree';
2
+ import { isAlive } from '@jbrowse/mobx-state-tree';
3
3
  export default async function autorunFeatureDensityStats(self) {
4
- var _a;
5
4
  try {
6
5
  const view = getContainingView(self);
7
6
  if (!view.initialized ||
@@ -10,7 +9,7 @@ export default async function autorunFeatureDensityStats(self) {
10
9
  self.error) {
11
10
  return;
12
11
  }
13
- if (((_a = self.featureDensityStats) === null || _a === void 0 ? void 0 : _a.featureDensity) !== undefined) {
12
+ if (self.featureDensityStats?.featureDensity !== undefined) {
14
13
  self.setCurrStatsBpPerPx(view.bpPerPx);
15
14
  return;
16
15
  }