@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
@@ -0,0 +1,24 @@
1
+ import type { LinearGenomeViewModel } from '../../LinearGenomeView/index.ts';
2
+ import type { BaseLinearDisplayModel } from '../model.ts';
3
+ import type { Assembly } from '@jbrowse/core/assemblyManager/assembly';
4
+ export interface RenderProps {
5
+ rendererType: any;
6
+ renderArgs: Record<string, any>;
7
+ renderProps: Record<string, any>;
8
+ displayError: unknown;
9
+ rpcManager: {
10
+ call: (...args: unknown[]) => void;
11
+ };
12
+ cannotBeRenderedReason: string;
13
+ }
14
+ export interface LabelData {
15
+ key: string;
16
+ label: string;
17
+ description: string;
18
+ leftPos: number;
19
+ topPos: number;
20
+ }
21
+ export interface ErrorProps {
22
+ displayError: string;
23
+ }
24
+ export declare function calculateLabelPositions(model: BaseLinearDisplayModel, view: LinearGenomeViewModel, assembly: Assembly | undefined, offsetPx: number): LabelData[];
@@ -0,0 +1,60 @@
1
+ import { clamp, measureText } from '@jbrowse/core/util';
2
+ export function calculateLabelPositions(model, view, assembly, offsetPx) {
3
+ if (!assembly) {
4
+ return [];
5
+ }
6
+ const fontSize = 11;
7
+ const result = [];
8
+ for (const [key, val] of model.layoutFeatures.entries()) {
9
+ if (!val?.[4]) {
10
+ continue;
11
+ }
12
+ const [left, , right, bottom, feature] = val;
13
+ const { refName, description, label, totalLayoutWidth } = feature;
14
+ if (!label) {
15
+ continue;
16
+ }
17
+ const r0 = assembly.getCanonicalRefName2(refName);
18
+ const px1 = view.bpToPx({
19
+ refName: r0,
20
+ coord: left,
21
+ })?.offsetPx;
22
+ const px2 = view.bpToPx({
23
+ refName: r0,
24
+ coord: right,
25
+ })?.offsetPx;
26
+ if (px1 === undefined) {
27
+ continue;
28
+ }
29
+ const leftPx = px2 !== undefined ? Math.min(px1, px2) : px1;
30
+ const rightPx = px2 !== undefined ? Math.max(px1, px2) : px1;
31
+ const labelWidth = getCachedMeasureText(label, fontSize);
32
+ const effectiveRightPx = totalLayoutWidth !== undefined ? leftPx + totalLayoutWidth : rightPx;
33
+ const leftPos = clamp(0, leftPx - offsetPx, effectiveRightPx - offsetPx - labelWidth);
34
+ const topPos = bottom - 14 * (+!!description + +!!label);
35
+ result.push({
36
+ key,
37
+ label,
38
+ description: description || '',
39
+ leftPos,
40
+ topPos,
41
+ });
42
+ }
43
+ return result;
44
+ }
45
+ const textMeasureCache = new Map();
46
+ function getCachedMeasureText(text, fontSize) {
47
+ const key = `${text}:${fontSize}`;
48
+ let width = textMeasureCache.get(key);
49
+ if (width === undefined) {
50
+ width = measureText(text, fontSize);
51
+ if (textMeasureCache.size > 500) {
52
+ const firstKey = textMeasureCache.keys().next().value;
53
+ if (firstKey) {
54
+ textMeasureCache.delete(firstKey);
55
+ }
56
+ }
57
+ textMeasureCache.set(key, width);
58
+ }
59
+ return width;
60
+ }
@@ -1,4 +1,4 @@
1
- declare const baseLinearDisplayConfigSchema: import("@jbrowse/core/configuration/configurationSchema").ConfigurationSchemaType<{
1
+ declare const baseLinearDisplayConfigSchema: import("node_modules/@jbrowse/core/src/configuration/configurationSchema").ConfigurationSchemaType<{
2
2
  maxFeatureScreenDensity: {
3
3
  type: string;
4
4
  description: string;
@@ -25,5 +25,5 @@ declare const baseLinearDisplayConfigSchema: import("@jbrowse/core/configuration
25
25
  description: string;
26
26
  defaultValue: never[];
27
27
  };
28
- }, import("@jbrowse/core/configuration/configurationSchema").ConfigurationSchemaOptions<undefined, "displayId">>;
28
+ }, import("node_modules/@jbrowse/core/src/configuration/configurationSchema").ConfigurationSchemaOptions<undefined, "displayId">>;
29
29
  export default baseLinearDisplayConfigSchema;
@@ -8,7 +8,7 @@ const baseLinearDisplayConfigSchema = ConfigurationSchema('BaseLinearDisplay', {
8
8
  },
9
9
  fetchSizeLimit: {
10
10
  type: 'number',
11
- defaultValue: 1000000,
11
+ defaultValue: 1_000_000,
12
12
  description: "maximum data to attempt to download for a given track, used if adapter doesn't specify one",
13
13
  },
14
14
  height: {
@@ -19,7 +19,7 @@ const baseLinearDisplayConfigSchema = ConfigurationSchema('BaseLinearDisplay', {
19
19
  mouseover: {
20
20
  type: 'string',
21
21
  description: 'text to display when the cursor hovers over a feature',
22
- defaultValue: `jexl:join('<br/>',get(feature,'_mouseOver')||get(feature,'name')||get(feature,'id'),mouseoverExtraInformation||'')`,
22
+ defaultValue: `jexl:mouseoverExtraInformation||get(feature,'_mouseOver')||get(feature,'name')||get(feature,'id')`,
23
23
  contextVariable: ['feature', 'mouseoverExtraInformation'],
24
24
  },
25
25
  jexlFilters: {
@@ -1,7 +1,3 @@
1
- import type { ExportSvgOptions } from '../../LinearGenomeView/types';
2
- import type { BaseLinearDisplayModel } from '../model';
3
- import type { ThemeOptions } from '@mui/material';
4
- export declare function renderBaseLinearDisplaySvg(self: BaseLinearDisplayModel, opts: ExportSvgOptions & {
5
- overrideHeight: number;
6
- theme?: ThemeOptions;
7
- }): Promise<import("react/jsx-runtime").JSX.Element>;
1
+ import type { BaseLinearDisplayModel } from '../model.ts';
2
+ import type { ExportSvgDisplayOptions } from '../types.ts';
3
+ export declare function renderBaseLinearDisplaySvg(self: BaseLinearDisplayModel, opts: ExportSvgDisplayOptions): Promise<import("react/jsx-runtime").JSX.Element>;
@@ -1,13 +1,18 @@
1
1
  import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { Fragment } from 'react';
3
- import { ReactRendering, getContainingView, getViewParams, } from '@jbrowse/core/util';
4
- import BlockState, { renderBlockData } from './serverSideRenderedBlock';
5
- import { getId } from './util';
3
+ import { ReactRendering, getContainingView, getSession, } from '@jbrowse/core/util';
4
+ import { calculateLabelPositions } from "./calculateLabelPositions.js";
5
+ import BlockState, { renderBlockData } from "./serverSideRenderedBlock.js";
6
+ import { getId } from "./util.js";
7
+ import { ErrorBox } from "../../LinearGenomeView/SVGErrorBox.js";
6
8
  export async function renderBaseLinearDisplaySvg(self, opts) {
7
9
  const { height, id } = self;
8
10
  const { overrideHeight } = opts;
9
11
  const view = getContainingView(self);
10
12
  const { offsetPx: viewOffsetPx, roundedDynamicBlocks, width } = view;
13
+ if (self.error) {
14
+ return _jsx(ErrorBox, { error: self.error, width: width, height: height });
15
+ }
11
16
  const renderings = await Promise.all(roundedDynamicBlocks.map(async (block) => {
12
17
  const blockState = BlockState.create({
13
18
  key: block.key,
@@ -23,22 +28,28 @@ export async function renderBaseLinearDisplaySvg(self, opts) {
23
28
  },
24
29
  ];
25
30
  }
26
- const { rpcManager, renderArgs, renderProps, rendererType } = renderBlockData(blockState, self);
31
+ const { rpcManager, renderArgs, renderProps, renderingProps, rendererType, } = renderBlockData(blockState, self);
27
32
  return [
28
33
  block,
29
34
  await rendererType.renderInClient(rpcManager, {
30
35
  ...renderArgs,
31
36
  ...renderProps,
32
- viewParams: getViewParams(self, true),
37
+ renderingProps,
33
38
  exportSVG: opts,
34
39
  theme: opts.theme || renderProps.theme,
35
40
  }),
36
41
  ];
37
42
  }));
38
- return (_jsx(_Fragment, { children: renderings.map(([block, rendering], index) => {
39
- const { offsetPx, widthPx } = block;
40
- const offset = offsetPx - viewOffsetPx;
41
- const clipid = getId(id, index);
42
- return (_jsxs(Fragment, { children: [_jsx("defs", { children: _jsx("clipPath", { id: clipid, children: _jsx("rect", { x: 0, y: 0, width: widthPx, height: overrideHeight || height }) }) }), _jsx("g", { transform: `translate(${offset} 0)`, children: _jsx("g", { clipPath: `url(#${clipid})`, children: _jsx(ReactRendering, { rendering: rendering }) }) })] }, `frag-${index}`));
43
- }) }));
43
+ const { assemblyManager } = getSession(self);
44
+ const { offsetPx } = view;
45
+ const assemblyName = view.assemblyNames[0];
46
+ const assembly = assemblyName ? assemblyManager.get(assemblyName) : undefined;
47
+ const labelData = calculateLabelPositions(self, view, assembly, offsetPx);
48
+ const labelsClipId = getId(id, 'labels');
49
+ return (_jsxs(_Fragment, { children: [renderings.map(([block, rendering], index) => {
50
+ const { offsetPx, widthPx } = block;
51
+ const offset = offsetPx - viewOffsetPx;
52
+ const clipid = getId(id, index);
53
+ return (_jsxs(Fragment, { children: [_jsx("defs", { children: _jsx("clipPath", { id: clipid, children: _jsx("rect", { x: 0, y: 0, width: widthPx, height: overrideHeight || height }) }) }), _jsx("g", { transform: `translate(${offset} 0)`, children: _jsx("g", { clipPath: `url(#${clipid})`, children: _jsx(ReactRendering, { rendering: rendering }) }) })] }, `frag-${index}`));
54
+ }), _jsx("defs", { children: _jsx("clipPath", { id: labelsClipId, children: _jsx("rect", { x: 0, y: 0, width: width, height: overrideHeight || height }) }) }), _jsx("g", { clipPath: `url(#${labelsClipId})`, children: labelData.map(({ key, label, description, leftPos, topPos }) => (_jsxs("g", { transform: `translate(${leftPos}, ${topPos})`, children: [_jsx("text", { x: 0, y: 11, fontSize: 11, fill: "currentColor", style: { pointerEvents: 'none' }, children: label }), description ? (_jsx("text", { x: 0, y: 25, fontSize: 11, fill: "blue", style: { pointerEvents: 'none' }, children: description })) : null] }, `label-${key}`))) })] }));
44
55
  }
@@ -1,27 +1,29 @@
1
1
  import type React from 'react';
2
2
  import type { Feature } from '@jbrowse/core/util';
3
+ import type { StopToken } from '@jbrowse/core/util/stopToken';
3
4
  import type { AbstractDisplayModel, Region } from '@jbrowse/core/util/types';
4
- import type { Instance } from 'mobx-state-tree';
5
+ import type { Instance } from '@jbrowse/mobx-state-tree';
5
6
  export interface RenderedProps {
6
7
  reactElement: React.ReactElement;
7
8
  features: Map<string, Feature>;
8
9
  layout: any;
9
10
  maxHeightReached: boolean;
10
11
  renderProps: any;
12
+ renderArgs: Record<string, unknown>;
11
13
  }
12
- declare const blockState: import("mobx-state-tree").IModelType<{
13
- key: import("mobx-state-tree").ISimpleType<string>;
14
- region: import("mobx-state-tree").IType<Region, Region, Region>;
15
- reloadFlag: import("mobx-state-tree").IType<number | undefined, number, number>;
16
- isLeftEndOfDisplayedRegion: import("mobx-state-tree").IType<boolean | undefined, boolean, boolean>;
17
- isRightEndOfDisplayedRegion: import("mobx-state-tree").IType<boolean | undefined, boolean, boolean>;
14
+ declare const blockState: import("@jbrowse/mobx-state-tree").IModelType<{
15
+ key: import("@jbrowse/mobx-state-tree").ISimpleType<string>;
16
+ region: import("@jbrowse/mobx-state-tree").IType<Region, Region, Region>;
17
+ reloadFlag: import("@jbrowse/mobx-state-tree").IType<number | undefined, number, number>;
18
+ isLeftEndOfDisplayedRegion: import("@jbrowse/mobx-state-tree").IType<boolean | undefined, boolean, boolean>;
19
+ isRightEndOfDisplayedRegion: import("@jbrowse/mobx-state-tree").IType<boolean | undefined, boolean, boolean>;
18
20
  }, {
19
- stopToken: string | undefined;
21
+ stopToken: StopToken | undefined;
20
22
  filled: boolean;
21
23
  reactElement: React.ReactElement | undefined;
22
24
  features: Map<string, Feature> | undefined;
23
25
  layout: any;
24
- status: string;
26
+ blockStatusMessage: string;
25
27
  error: unknown;
26
28
  message: string | undefined;
27
29
  maxHeightReached: boolean;
@@ -29,24 +31,31 @@ declare const blockState: import("mobx-state-tree").IModelType<{
29
31
  model: {
30
32
  error?: unknown;
31
33
  reload: () => void;
32
- message: React.ReactNode;
33
- filled?: boolean;
34
- status?: string;
34
+ message?: React.ReactNode;
35
+ statusMessage?: string;
35
36
  reactElement?: React.ReactElement;
37
+ isRenderingPending?: boolean;
36
38
  };
37
- }) => import("react/jsx-runtime").JSX.Element | undefined;
39
+ }) => import("react/jsx-runtime").JSX.Element;
38
40
  renderProps: any;
41
+ renderArgs: Record<string, unknown> | undefined;
42
+ isRenderingPending: boolean;
43
+ cachedDisplay: AbstractDisplayModel | undefined;
39
44
  } & {
40
45
  doReload(): void;
41
- afterAttach(): void;
42
- setStatus(message: string): void;
43
- setLoading(newStopToken: string): void;
46
+ setStatusMessage(message: string): void;
47
+ setLoading(newStopToken: StopToken): void;
44
48
  setMessage(messageText: string): void;
45
49
  setRendered(props: RenderedProps | undefined): void;
46
50
  setError(error: unknown): void;
47
51
  reload(): void;
52
+ setCachedDisplay(display: AbstractDisplayModel): void;
48
53
  beforeDestroy(): void;
49
- }, import("mobx-state-tree")._NotCustomized, import("mobx-state-tree")._NotCustomized>;
54
+ } & {
55
+ readonly statusMessage: any;
56
+ } & {
57
+ afterAttach(): void;
58
+ }, import("@jbrowse/mobx-state-tree")._NotCustomized, import("@jbrowse/mobx-state-tree")._NotCustomized>;
50
59
  export default blockState;
51
60
  export type BlockStateModel = typeof blockState;
52
61
  export type BlockModel = Instance<BlockStateModel>;
@@ -54,16 +63,24 @@ export declare function renderBlockData(self: BlockModel, optDisplay?: AbstractD
54
63
  rendererType: any;
55
64
  rpcManager: import("@jbrowse/core/rpc/RpcManager").default;
56
65
  renderProps: any;
66
+ renderingProps: Record<string, unknown> | undefined;
57
67
  cannotBeRenderedReason: any;
58
68
  displayError: any;
59
69
  renderArgs: {
60
70
  statusCallback: (message: string) => void;
61
71
  assemblyName: string;
62
- regions: (Region & import("mobx-state-tree").IStateTreeNode<import("mobx-state-tree").IType<Region, Region, Region>>)[];
72
+ regions: {
73
+ seqAdapterRefName: string | undefined;
74
+ assemblyName: string;
75
+ refName: string;
76
+ start: number;
77
+ end: number;
78
+ reversed?: boolean | undefined;
79
+ }[];
63
80
  adapterConfig: any;
64
81
  rendererType: any;
65
82
  sessionId: string;
66
- layoutId: string;
83
+ trackInstanceId: any;
67
84
  blockKey: string;
68
85
  reloadFlag: number;
69
86
  timeout: number;
@@ -73,6 +90,7 @@ export declare function renderBlockData(self: BlockModel, optDisplay?: AbstractD
73
90
  rendererType?: undefined;
74
91
  rpcManager?: undefined;
75
92
  renderProps?: undefined;
93
+ renderingProps?: undefined;
76
94
  cannotBeRenderedReason?: undefined;
77
95
  renderArgs?: undefined;
78
96
  };
@@ -1,10 +1,10 @@
1
1
  import { readConfObject } from '@jbrowse/core/configuration';
2
- import { assembleLocString, getContainingDisplay, getContainingTrack, getSession, getViewParams, makeAbortableReaction, } from '@jbrowse/core/util';
2
+ import { assembleLocString, getContainingDisplay, getSession, makeAbortableReaction, } from '@jbrowse/core/util';
3
3
  import { stopStopToken } from '@jbrowse/core/util/stopToken';
4
4
  import { getRpcSessionId, getTrackAssemblyNames, } from '@jbrowse/core/util/tracks';
5
5
  import { isRetryException } from '@jbrowse/core/util/types';
6
- import { cast, getParent, isAlive, types } from 'mobx-state-tree';
7
- import ServerSideRenderedBlockContent from '../components/ServerSideRenderedBlockContent';
6
+ import { getParent, isAlive, types } from '@jbrowse/mobx-state-tree';
7
+ import ServerSideRenderedBlockContent from "../components/ServerSideRenderedBlockContent.js";
8
8
  const blockState = types
9
9
  .model('BlockState', {
10
10
  key: types.string,
@@ -19,205 +19,221 @@ const blockState = types
19
19
  reactElement: undefined,
20
20
  features: undefined,
21
21
  layout: undefined,
22
- status: '',
22
+ blockStatusMessage: '',
23
23
  error: undefined,
24
24
  message: undefined,
25
25
  maxHeightReached: false,
26
26
  ReactComponent: ServerSideRenderedBlockContent,
27
27
  renderProps: undefined,
28
+ renderArgs: undefined,
29
+ isRenderingPending: true,
30
+ cachedDisplay: undefined,
28
31
  }))
29
- .actions(self => ({
30
- doReload() {
31
- self.reloadFlag = self.reloadFlag + 1;
32
- },
33
- afterAttach() {
34
- const display = getContainingDisplay(self);
35
- setTimeout(() => {
36
- if (isAlive(self)) {
37
- makeAbortableReaction(self, renderBlockData, renderBlockEffect, {
38
- name: `${display.id}/${assembleLocString(self.region)} rendering`,
39
- delay: display.renderDelay,
40
- fireImmediately: true,
41
- }, this.setLoading, this.setRendered, this.setError);
42
- }
43
- }, display.renderDelay);
44
- },
45
- setStatus(message) {
46
- self.status = message;
47
- },
48
- setLoading(newStopToken) {
49
- if (self.stopToken !== undefined) {
50
- stopStopToken(self.stopToken);
51
- }
52
- self.filled = false;
53
- self.message = undefined;
54
- self.reactElement = undefined;
55
- self.features = undefined;
56
- self.layout = undefined;
57
- self.error = undefined;
58
- self.maxHeightReached = false;
59
- self.renderProps = undefined;
60
- self.stopToken = newStopToken;
61
- },
62
- setMessage(messageText) {
63
- if (self.stopToken !== undefined) {
64
- stopStopToken(self.stopToken);
65
- }
66
- self.filled = false;
67
- self.message = messageText;
68
- self.reactElement = undefined;
69
- self.features = undefined;
70
- self.layout = undefined;
71
- self.error = undefined;
72
- self.maxHeightReached = false;
73
- self.renderProps = undefined;
74
- self.stopToken = undefined;
75
- },
76
- setRendered(props) {
77
- if (!props) {
78
- return;
79
- }
80
- const { reactElement, features, layout, maxHeightReached, renderProps } = props;
81
- self.filled = true;
82
- self.message = undefined;
83
- self.reactElement = reactElement;
84
- self.features = features;
85
- self.layout = layout;
86
- self.error = undefined;
87
- self.maxHeightReached = maxHeightReached;
88
- self.renderProps = renderProps;
89
- self.stopToken = undefined;
90
- },
91
- setError(error) {
92
- console.error(error);
32
+ .actions(self => {
33
+ function stopCurrentToken() {
93
34
  if (self.stopToken !== undefined) {
94
35
  stopStopToken(self.stopToken);
36
+ self.stopToken = undefined;
95
37
  }
96
- self.filled = false;
97
- self.message = undefined;
98
- self.reactElement = undefined;
99
- self.features = undefined;
100
- self.layout = undefined;
101
- self.maxHeightReached = false;
102
- self.error = error;
103
- self.renderProps = undefined;
104
- self.stopToken = undefined;
105
- if (isRetryException(error)) {
106
- this.reload();
107
- }
108
- },
109
- reload() {
110
- self.stopToken = undefined;
38
+ }
39
+ function clearRenderState() {
111
40
  self.filled = false;
112
41
  self.reactElement = undefined;
113
42
  self.features = undefined;
114
43
  self.layout = undefined;
115
- self.error = undefined;
116
- self.message = undefined;
117
44
  self.maxHeightReached = false;
118
- self.ReactComponent = ServerSideRenderedBlockContent;
119
45
  self.renderProps = undefined;
120
- getParent(self, 2).reload();
121
- },
122
- beforeDestroy() {
123
- ;
124
- (async () => {
125
- try {
126
- if (self.stopToken !== undefined) {
127
- stopStopToken(self.stopToken);
46
+ self.renderArgs = undefined;
47
+ }
48
+ return {
49
+ doReload() {
50
+ self.reloadFlag = self.reloadFlag + 1;
51
+ },
52
+ setStatusMessage(message) {
53
+ self.blockStatusMessage = message;
54
+ },
55
+ setLoading(newStopToken) {
56
+ stopCurrentToken();
57
+ self.isRenderingPending = true;
58
+ self.error = undefined;
59
+ self.message = undefined;
60
+ self.stopToken = newStopToken;
61
+ },
62
+ setMessage(messageText) {
63
+ stopCurrentToken();
64
+ self.isRenderingPending = false;
65
+ self.message = messageText;
66
+ self.error = undefined;
67
+ clearRenderState();
68
+ },
69
+ setRendered(props) {
70
+ if (!props) {
71
+ return;
72
+ }
73
+ const { reactElement, features, layout, maxHeightReached, renderProps, renderArgs, } = props;
74
+ self.filled = true;
75
+ self.isRenderingPending = false;
76
+ self.message = undefined;
77
+ self.reactElement = reactElement;
78
+ self.features = features;
79
+ self.layout = layout;
80
+ self.error = undefined;
81
+ self.maxHeightReached = maxHeightReached;
82
+ self.renderProps = renderProps;
83
+ self.renderArgs = renderArgs;
84
+ self.stopToken = undefined;
85
+ },
86
+ setError(error) {
87
+ console.error(error);
88
+ stopCurrentToken();
89
+ self.isRenderingPending = false;
90
+ self.message = undefined;
91
+ self.error = error;
92
+ clearRenderState();
93
+ if (isRetryException(error)) {
94
+ this.reload();
95
+ }
96
+ },
97
+ reload() {
98
+ self.stopToken = undefined;
99
+ self.isRenderingPending = false;
100
+ self.error = undefined;
101
+ self.message = undefined;
102
+ self.ReactComponent = ServerSideRenderedBlockContent;
103
+ clearRenderState();
104
+ getParent(self, 2).reload();
105
+ },
106
+ setCachedDisplay(display) {
107
+ self.cachedDisplay = display;
108
+ },
109
+ beforeDestroy() {
110
+ ;
111
+ (async () => {
112
+ try {
113
+ stopCurrentToken();
114
+ if (self.renderArgs && self.cachedDisplay) {
115
+ const { rpcManager } = getSession(self);
116
+ const { rendererType } = self.cachedDisplay;
117
+ await rendererType.freeResourcesInClient(rpcManager, JSON.parse(JSON.stringify(self.renderArgs)));
118
+ }
128
119
  }
129
- const display = getContainingDisplay(self);
130
- const { rpcManager } = getSession(self);
131
- const { rendererType } = display;
132
- const { renderArgs } = renderBlockData(cast(self));
133
- if (renderArgs) {
134
- await rendererType.freeResourcesInClient(rpcManager, JSON.parse(JSON.stringify(renderArgs)));
120
+ catch (e) {
121
+ console.error('Error while destroying block', e);
135
122
  }
123
+ })();
124
+ },
125
+ };
126
+ })
127
+ .views(self => ({
128
+ get statusMessage() {
129
+ return self.isRenderingPending
130
+ ? self.blockStatusMessage ||
131
+ self.cachedDisplay?.statusMessage ||
132
+ 'Loading'
133
+ : undefined;
134
+ },
135
+ }))
136
+ .actions(self => ({
137
+ afterAttach() {
138
+ const display = self.cachedDisplay || getContainingDisplay(self);
139
+ setTimeout(() => {
140
+ if (isAlive(self)) {
141
+ makeAbortableReaction(self, renderBlockData, renderBlockEffect, {
142
+ name: `${display.id}/${assembleLocString(self.region)} rendering`,
143
+ delay: display.renderDelay,
144
+ fireImmediately: true,
145
+ }, self.setLoading, self.setRendered, self.setError);
136
146
  }
137
- catch (e) {
138
- console.error('Error while destroying block', e);
139
- }
140
- })();
147
+ }, display.renderDelay);
141
148
  },
142
149
  }));
143
150
  export default blockState;
144
151
  export function renderBlockData(self, optDisplay) {
145
152
  try {
146
- const display = optDisplay || getContainingDisplay(self);
153
+ const display = (optDisplay ||
154
+ self.cachedDisplay ||
155
+ getContainingDisplay(self));
147
156
  const { assemblyManager, rpcManager } = getSession(display);
148
157
  const { adapterConfig, rendererType, error, parentTrack } = display;
149
158
  const assemblyNames = getTrackAssemblyNames(parentTrack);
150
159
  const regionAsm = self.region.assemblyName;
151
160
  if (!assemblyNames.includes(regionAsm) &&
152
- !assemblyNames.some(name => { var _a; return (_a = assemblyManager.get(name)) === null || _a === void 0 ? void 0 : _a.hasName(regionAsm); })) {
161
+ !assemblyNames.some(name => assemblyManager.get(name)?.hasName(regionAsm))) {
153
162
  throw new Error(`region assembly (${regionAsm}) does not match track assemblies (${assemblyNames})`);
154
163
  }
155
164
  const renderProps = display.renderProps();
165
+ const renderingProps = display.renderingProps?.();
156
166
  const { config } = renderProps;
157
167
  readConfObject(config);
158
168
  const sessionId = getRpcSessionId(display);
159
- const layoutId = getContainingTrack(display).id;
169
+ const trackInstanceId = parentTrack.id;
160
170
  const cannotBeRenderedReason = display.regionCannotBeRendered(self.region);
171
+ const assembly = assemblyManager.get(self.region.assemblyName);
172
+ const seqAdapterRefName = assembly?.getSeqAdapterRefName(self.region.refName);
161
173
  return {
162
174
  rendererType,
163
175
  rpcManager,
164
176
  renderProps,
177
+ renderingProps,
165
178
  cannotBeRenderedReason,
166
179
  displayError: error,
167
180
  renderArgs: {
168
181
  statusCallback: (message) => {
169
182
  if (isAlive(self)) {
170
- self.setStatus(message);
183
+ self.setStatusMessage(message);
171
184
  }
172
185
  },
173
186
  assemblyName: self.region.assemblyName,
174
- regions: [self.region],
187
+ regions: [
188
+ {
189
+ ...self.region,
190
+ seqAdapterRefName,
191
+ },
192
+ ],
175
193
  adapterConfig,
176
194
  rendererType: rendererType.name,
177
195
  sessionId,
178
- layoutId,
196
+ trackInstanceId,
179
197
  blockKey: self.key,
180
198
  reloadFlag: self.reloadFlag,
181
- timeout: 1000000,
199
+ timeout: 1_000_000,
182
200
  },
183
201
  };
184
202
  }
185
203
  catch (e) {
186
- return { displayError: e };
204
+ return {
205
+ displayError: e,
206
+ };
187
207
  }
188
208
  }
189
209
  async function renderBlockEffect(props, stopToken, self) {
190
- if (!props) {
191
- return;
192
- }
193
- const { rendererType, renderProps, rpcManager, renderArgs, cannotBeRenderedReason, displayError, } = props;
194
- if (!isAlive(self)) {
210
+ if (!props || !isAlive(self)) {
195
211
  return undefined;
196
212
  }
197
- else if (displayError) {
213
+ const { rendererType, renderProps, renderingProps, rpcManager, renderArgs, cannotBeRenderedReason, displayError, } = props;
214
+ if (displayError) {
198
215
  self.setError(displayError);
199
216
  return undefined;
200
217
  }
201
- else if (cannotBeRenderedReason) {
218
+ if (cannotBeRenderedReason) {
202
219
  self.setMessage(cannotBeRenderedReason);
203
220
  return undefined;
204
221
  }
205
- else if (renderProps.notReady) {
222
+ if (renderProps.notReady || !renderArgs) {
206
223
  return undefined;
207
224
  }
208
- else {
209
- const { reactElement, features, layout, maxHeightReached } = await rendererType.renderInClient(rpcManager, {
210
- ...renderArgs,
211
- ...renderProps,
212
- viewParams: getViewParams(self),
213
- stopToken,
214
- });
215
- return {
216
- reactElement,
217
- features,
218
- layout,
219
- maxHeightReached,
220
- renderProps,
221
- };
222
- }
225
+ const { reactElement, features, layout, maxHeightReached } = await rendererType.renderInClient(rpcManager, {
226
+ ...renderArgs,
227
+ ...renderProps,
228
+ renderingProps,
229
+ stopToken,
230
+ });
231
+ return {
232
+ reactElement,
233
+ features,
234
+ layout,
235
+ maxHeightReached,
236
+ renderProps,
237
+ renderArgs,
238
+ };
223
239
  }