@jbrowse/plugin-linear-genome-view 2.5.0 → 2.6.2

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 (459) hide show
  1. package/dist/BaseLinearDisplay/components/BaseLinearDisplay.d.ts +1 -1
  2. package/dist/BaseLinearDisplay/components/BaseLinearDisplay.js +0 -1
  3. package/dist/BaseLinearDisplay/components/Block.d.ts +3 -3
  4. package/dist/BaseLinearDisplay/components/Block.js +0 -1
  5. package/dist/BaseLinearDisplay/components/BlockMsg.d.ts +1 -1
  6. package/dist/BaseLinearDisplay/components/BlockMsg.js +0 -1
  7. package/dist/BaseLinearDisplay/components/LinearBlocks.d.ts +3 -2
  8. package/dist/BaseLinearDisplay/components/LinearBlocks.js +0 -1
  9. package/dist/BaseLinearDisplay/components/ServerSideRenderedBlockContent.js +0 -1
  10. package/dist/BaseLinearDisplay/components/TooLargeMessage.d.ts +2 -1
  11. package/dist/BaseLinearDisplay/components/TooLargeMessage.js +0 -1
  12. package/dist/BaseLinearDisplay/components/Tooltip.d.ts +2 -1
  13. package/dist/BaseLinearDisplay/components/Tooltip.js +0 -1
  14. package/dist/BaseLinearDisplay/index.d.ts +5 -2
  15. package/dist/BaseLinearDisplay/index.js +7 -2
  16. package/dist/BaseLinearDisplay/models/BaseLinearDisplayModel.d.ts +62 -142
  17. package/dist/BaseLinearDisplay/models/BaseLinearDisplayModel.js +34 -356
  18. package/dist/BaseLinearDisplay/models/FeatureDensityMixin.d.ts +99 -0
  19. package/dist/BaseLinearDisplay/models/FeatureDensityMixin.js +189 -0
  20. package/dist/BaseLinearDisplay/models/TrackHeightMixin.d.ts +30 -0
  21. package/dist/BaseLinearDisplay/models/TrackHeightMixin.js +55 -0
  22. package/dist/BaseLinearDisplay/models/autorunFeatureDensityStats.d.ts +2 -0
  23. package/dist/BaseLinearDisplay/models/autorunFeatureDensityStats.js +41 -0
  24. package/dist/BaseLinearDisplay/models/configSchema.js +1 -1
  25. package/dist/BaseLinearDisplay/models/renderSvg.d.ts +8 -0
  26. package/dist/BaseLinearDisplay/models/renderSvg.js +82 -0
  27. package/dist/BaseLinearDisplay/models/serverSideRenderedBlock.js +20 -17
  28. package/dist/BaseLinearDisplay/models/util.js +0 -1
  29. package/dist/BasicTrack/configSchema.js +1 -1
  30. package/dist/BasicTrack/index.js +0 -1
  31. package/dist/FeatureTrack/configSchema.d.ts +1 -3
  32. package/dist/FeatureTrack/configSchema.js +1 -1
  33. package/dist/FeatureTrack/index.js +0 -1
  34. package/dist/LaunchLinearGenomeView/index.js +0 -1
  35. package/dist/LinearBareDisplay/configSchema.d.ts +1 -0
  36. package/dist/LinearBareDisplay/configSchema.js +1 -1
  37. package/dist/LinearBareDisplay/index.js +0 -1
  38. package/dist/LinearBareDisplay/model.d.ts +52 -39
  39. package/dist/LinearBareDisplay/model.js +1 -1
  40. package/dist/LinearBasicDisplay/components/SetMaxHeight.d.ts +2 -1
  41. package/dist/LinearBasicDisplay/components/SetMaxHeight.js +0 -1
  42. package/dist/LinearBasicDisplay/configSchema.d.ts +1 -0
  43. package/dist/LinearBasicDisplay/configSchema.js +1 -1
  44. package/dist/LinearBasicDisplay/index.js +0 -1
  45. package/dist/LinearBasicDisplay/model.d.ts +67 -66
  46. package/dist/LinearBasicDisplay/model.js +1 -1
  47. package/dist/LinearGenomeView/components/CenterLine.d.ts +2 -1
  48. package/dist/LinearGenomeView/components/CenterLine.js +0 -1
  49. package/dist/LinearGenomeView/components/Cytobands.d.ts +2 -1
  50. package/dist/LinearGenomeView/components/Cytobands.js +0 -1
  51. package/dist/LinearGenomeView/components/ExportSvgDialog.d.ts +2 -1
  52. package/dist/LinearGenomeView/components/ExportSvgDialog.js +0 -1
  53. package/dist/LinearGenomeView/components/GetSequenceDialog.d.ts +2 -1
  54. package/dist/LinearGenomeView/components/GetSequenceDialog.js +0 -1
  55. package/dist/LinearGenomeView/components/Gridlines.d.ts +2 -1
  56. package/dist/LinearGenomeView/components/Gridlines.js +0 -1
  57. package/dist/LinearGenomeView/components/Header.d.ts +2 -1
  58. package/dist/LinearGenomeView/components/Header.js +0 -1
  59. package/dist/LinearGenomeView/components/ImportForm.d.ts +2 -1
  60. package/dist/LinearGenomeView/components/ImportForm.js +0 -1
  61. package/dist/LinearGenomeView/components/LinearGenomeView.d.ts +2 -1
  62. package/dist/LinearGenomeView/components/LinearGenomeView.js +28 -5
  63. package/dist/LinearGenomeView/components/MiniControls.d.ts +3 -2
  64. package/dist/LinearGenomeView/components/MiniControls.js +20 -41
  65. package/dist/LinearGenomeView/components/OverviewRubberband.d.ts +1 -1
  66. package/dist/LinearGenomeView/components/OverviewRubberband.js +0 -1
  67. package/dist/LinearGenomeView/components/OverviewScalebar.d.ts +2 -2
  68. package/dist/LinearGenomeView/components/OverviewScalebar.js +10 -5
  69. package/dist/LinearGenomeView/components/RefNameAutocomplete/AutocompleteTextField.d.ts +10 -0
  70. package/dist/LinearGenomeView/components/RefNameAutocomplete/AutocompleteTextField.js +21 -0
  71. package/dist/LinearGenomeView/components/RefNameAutocomplete/EndAdornment.d.ts +5 -0
  72. package/dist/LinearGenomeView/components/RefNameAutocomplete/EndAdornment.js +51 -0
  73. package/dist/LinearGenomeView/components/{HelpDialog.d.ts → RefNameAutocomplete/HelpDialog.d.ts} +2 -1
  74. package/dist/LinearGenomeView/components/{HelpDialog.js → RefNameAutocomplete/HelpDialog.js} +0 -1
  75. package/dist/LinearGenomeView/components/RefNameAutocomplete/index.d.ts +18 -0
  76. package/dist/LinearGenomeView/components/RefNameAutocomplete/index.js +110 -0
  77. package/dist/LinearGenomeView/components/RefNameAutocomplete/util.d.ts +12 -0
  78. package/dist/LinearGenomeView/components/RefNameAutocomplete/util.js +58 -0
  79. package/dist/LinearGenomeView/components/Rubberband.d.ts +1 -1
  80. package/dist/LinearGenomeView/components/Rubberband.js +0 -1
  81. package/dist/LinearGenomeView/components/RubberbandSpan.d.ts +2 -1
  82. package/dist/LinearGenomeView/components/RubberbandSpan.js +0 -1
  83. package/dist/LinearGenomeView/components/Scalebar.js +0 -1
  84. package/dist/LinearGenomeView/components/SearchBox.d.ts +2 -1
  85. package/dist/LinearGenomeView/components/SearchBox.js +0 -1
  86. package/dist/LinearGenomeView/components/SearchResultsDialog.d.ts +2 -1
  87. package/dist/LinearGenomeView/components/SearchResultsDialog.js +0 -1
  88. package/dist/LinearGenomeView/components/SearchResultsTable.d.ts +2 -1
  89. package/dist/LinearGenomeView/components/SearchResultsTable.js +0 -1
  90. package/dist/LinearGenomeView/components/SequenceSearchDialog.d.ts +2 -1
  91. package/dist/LinearGenomeView/components/SequenceSearchDialog.js +0 -1
  92. package/dist/LinearGenomeView/components/TrackContainer.d.ts +3 -3
  93. package/dist/LinearGenomeView/components/TrackContainer.js +12 -69
  94. package/dist/LinearGenomeView/components/TrackLabel.js +7 -12
  95. package/dist/LinearGenomeView/components/TrackLabelContainer.d.ts +9 -0
  96. package/dist/LinearGenomeView/components/TrackLabelContainer.js +31 -0
  97. package/dist/LinearGenomeView/components/TrackRenderingContainer.d.ts +10 -0
  98. package/dist/LinearGenomeView/components/TrackRenderingContainer.js +73 -0
  99. package/dist/LinearGenomeView/components/TracksContainer.d.ts +1 -1
  100. package/dist/LinearGenomeView/components/TracksContainer.js +2 -3
  101. package/dist/LinearGenomeView/components/VerticalGuide.d.ts +2 -1
  102. package/dist/LinearGenomeView/components/VerticalGuide.js +0 -1
  103. package/dist/LinearGenomeView/components/ZoomControls.d.ts +2 -1
  104. package/dist/LinearGenomeView/components/ZoomControls.js +0 -1
  105. package/dist/LinearGenomeView/components/hooks.js +0 -1
  106. package/dist/LinearGenomeView/components/util.js +0 -1
  107. package/dist/LinearGenomeView/index.js +0 -1
  108. package/dist/LinearGenomeView/model.d.ts +13 -12
  109. package/dist/LinearGenomeView/model.js +25 -26
  110. package/dist/LinearGenomeView/svgcomponents/SVGBackground.d.ts +2 -1
  111. package/dist/LinearGenomeView/svgcomponents/SVGBackground.js +0 -1
  112. package/dist/LinearGenomeView/svgcomponents/SVGHeader.d.ts +3 -4
  113. package/dist/LinearGenomeView/svgcomponents/SVGHeader.js +7 -3
  114. package/dist/LinearGenomeView/svgcomponents/SVGLinearGenomeView.js +1 -2
  115. package/dist/LinearGenomeView/svgcomponents/SVGRegionSeparators.d.ts +2 -1
  116. package/dist/LinearGenomeView/svgcomponents/SVGRegionSeparators.js +0 -1
  117. package/dist/LinearGenomeView/svgcomponents/SVGRuler.d.ts +2 -1
  118. package/dist/LinearGenomeView/svgcomponents/SVGRuler.js +0 -1
  119. package/dist/LinearGenomeView/svgcomponents/SVGScalebar.d.ts +2 -1
  120. package/dist/LinearGenomeView/svgcomponents/SVGScalebar.js +0 -1
  121. package/dist/LinearGenomeView/svgcomponents/SVGTrackLabel.d.ts +2 -1
  122. package/dist/LinearGenomeView/svgcomponents/SVGTrackLabel.js +0 -1
  123. package/dist/LinearGenomeView/svgcomponents/SVGTracks.d.ts +2 -1
  124. package/dist/LinearGenomeView/svgcomponents/SVGTracks.js +0 -1
  125. package/dist/LinearGenomeView/util.d.ts +2 -2
  126. package/dist/LinearGenomeView/util.js +0 -1
  127. package/dist/index.d.ts +160 -134
  128. package/dist/index.js +6 -4
  129. package/esm/BaseLinearDisplay/components/BaseLinearDisplay.d.ts +1 -1
  130. package/esm/BaseLinearDisplay/components/BaseLinearDisplay.js +0 -1
  131. package/esm/BaseLinearDisplay/components/Block.d.ts +3 -3
  132. package/esm/BaseLinearDisplay/components/Block.js +0 -1
  133. package/esm/BaseLinearDisplay/components/BlockMsg.d.ts +1 -1
  134. package/esm/BaseLinearDisplay/components/BlockMsg.js +0 -1
  135. package/esm/BaseLinearDisplay/components/LinearBlocks.d.ts +3 -2
  136. package/esm/BaseLinearDisplay/components/LinearBlocks.js +0 -1
  137. package/esm/BaseLinearDisplay/components/ServerSideRenderedBlockContent.js +0 -1
  138. package/esm/BaseLinearDisplay/components/TooLargeMessage.d.ts +2 -1
  139. package/esm/BaseLinearDisplay/components/TooLargeMessage.js +0 -1
  140. package/esm/BaseLinearDisplay/components/Tooltip.d.ts +2 -1
  141. package/esm/BaseLinearDisplay/components/Tooltip.js +0 -1
  142. package/esm/BaseLinearDisplay/index.d.ts +5 -2
  143. package/esm/BaseLinearDisplay/index.js +3 -1
  144. package/esm/BaseLinearDisplay/models/BaseLinearDisplayModel.d.ts +62 -142
  145. package/esm/BaseLinearDisplay/models/BaseLinearDisplayModel.js +36 -335
  146. package/esm/BaseLinearDisplay/models/FeatureDensityMixin.d.ts +99 -0
  147. package/esm/BaseLinearDisplay/models/FeatureDensityMixin.js +183 -0
  148. package/esm/BaseLinearDisplay/models/TrackHeightMixin.d.ts +30 -0
  149. package/esm/BaseLinearDisplay/models/TrackHeightMixin.js +52 -0
  150. package/esm/BaseLinearDisplay/models/autorunFeatureDensityStats.d.ts +2 -0
  151. package/esm/BaseLinearDisplay/models/autorunFeatureDensityStats.js +38 -0
  152. package/esm/BaseLinearDisplay/models/configSchema.js +1 -1
  153. package/esm/BaseLinearDisplay/models/renderSvg.d.ts +8 -0
  154. package/esm/BaseLinearDisplay/models/renderSvg.js +53 -0
  155. package/esm/BaseLinearDisplay/models/serverSideRenderedBlock.js +20 -17
  156. package/esm/BaseLinearDisplay/models/util.js +0 -1
  157. package/esm/BasicTrack/configSchema.js +1 -1
  158. package/esm/BasicTrack/index.js +0 -1
  159. package/esm/FeatureTrack/configSchema.d.ts +1 -3
  160. package/esm/FeatureTrack/configSchema.js +1 -1
  161. package/esm/FeatureTrack/index.js +0 -1
  162. package/esm/LaunchLinearGenomeView/index.js +0 -1
  163. package/esm/LinearBareDisplay/configSchema.d.ts +1 -0
  164. package/esm/LinearBareDisplay/configSchema.js +1 -1
  165. package/esm/LinearBareDisplay/index.js +0 -1
  166. package/esm/LinearBareDisplay/model.d.ts +52 -39
  167. package/esm/LinearBareDisplay/model.js +1 -1
  168. package/esm/LinearBasicDisplay/components/SetMaxHeight.d.ts +2 -1
  169. package/esm/LinearBasicDisplay/components/SetMaxHeight.js +0 -1
  170. package/esm/LinearBasicDisplay/configSchema.d.ts +1 -0
  171. package/esm/LinearBasicDisplay/configSchema.js +1 -1
  172. package/esm/LinearBasicDisplay/index.js +0 -1
  173. package/esm/LinearBasicDisplay/model.d.ts +67 -66
  174. package/esm/LinearBasicDisplay/model.js +1 -1
  175. package/esm/LinearGenomeView/components/CenterLine.d.ts +2 -1
  176. package/esm/LinearGenomeView/components/CenterLine.js +0 -1
  177. package/esm/LinearGenomeView/components/Cytobands.d.ts +2 -1
  178. package/esm/LinearGenomeView/components/Cytobands.js +0 -1
  179. package/esm/LinearGenomeView/components/ExportSvgDialog.d.ts +2 -1
  180. package/esm/LinearGenomeView/components/ExportSvgDialog.js +0 -1
  181. package/esm/LinearGenomeView/components/GetSequenceDialog.d.ts +2 -1
  182. package/esm/LinearGenomeView/components/GetSequenceDialog.js +0 -1
  183. package/esm/LinearGenomeView/components/Gridlines.d.ts +2 -1
  184. package/esm/LinearGenomeView/components/Gridlines.js +0 -1
  185. package/esm/LinearGenomeView/components/Header.d.ts +2 -1
  186. package/esm/LinearGenomeView/components/Header.js +0 -1
  187. package/esm/LinearGenomeView/components/ImportForm.d.ts +2 -1
  188. package/esm/LinearGenomeView/components/ImportForm.js +0 -1
  189. package/esm/LinearGenomeView/components/LinearGenomeView.d.ts +2 -1
  190. package/esm/LinearGenomeView/components/LinearGenomeView.js +4 -4
  191. package/esm/LinearGenomeView/components/MiniControls.d.ts +3 -2
  192. package/esm/LinearGenomeView/components/MiniControls.js +20 -18
  193. package/esm/LinearGenomeView/components/OverviewRubberband.d.ts +1 -1
  194. package/esm/LinearGenomeView/components/OverviewRubberband.js +0 -1
  195. package/esm/LinearGenomeView/components/OverviewScalebar.d.ts +2 -2
  196. package/esm/LinearGenomeView/components/OverviewScalebar.js +10 -5
  197. package/esm/LinearGenomeView/components/RefNameAutocomplete/AutocompleteTextField.d.ts +10 -0
  198. package/esm/LinearGenomeView/components/RefNameAutocomplete/AutocompleteTextField.js +15 -0
  199. package/esm/LinearGenomeView/components/RefNameAutocomplete/EndAdornment.d.ts +5 -0
  200. package/esm/LinearGenomeView/components/RefNameAutocomplete/EndAdornment.js +22 -0
  201. package/esm/LinearGenomeView/components/{HelpDialog.d.ts → RefNameAutocomplete/HelpDialog.d.ts} +2 -1
  202. package/esm/LinearGenomeView/components/{HelpDialog.js → RefNameAutocomplete/HelpDialog.js} +0 -1
  203. package/esm/LinearGenomeView/components/RefNameAutocomplete/index.d.ts +18 -0
  204. package/esm/LinearGenomeView/components/RefNameAutocomplete/index.js +82 -0
  205. package/esm/LinearGenomeView/components/RefNameAutocomplete/util.d.ts +12 -0
  206. package/esm/LinearGenomeView/components/RefNameAutocomplete/util.js +49 -0
  207. package/esm/LinearGenomeView/components/Rubberband.d.ts +1 -1
  208. package/esm/LinearGenomeView/components/Rubberband.js +0 -1
  209. package/esm/LinearGenomeView/components/RubberbandSpan.d.ts +2 -1
  210. package/esm/LinearGenomeView/components/RubberbandSpan.js +0 -1
  211. package/esm/LinearGenomeView/components/Scalebar.js +0 -1
  212. package/esm/LinearGenomeView/components/SearchBox.d.ts +2 -1
  213. package/esm/LinearGenomeView/components/SearchBox.js +0 -1
  214. package/esm/LinearGenomeView/components/SearchResultsDialog.d.ts +2 -1
  215. package/esm/LinearGenomeView/components/SearchResultsDialog.js +0 -1
  216. package/esm/LinearGenomeView/components/SearchResultsTable.d.ts +2 -1
  217. package/esm/LinearGenomeView/components/SearchResultsTable.js +0 -1
  218. package/esm/LinearGenomeView/components/SequenceSearchDialog.d.ts +2 -1
  219. package/esm/LinearGenomeView/components/SequenceSearchDialog.js +0 -1
  220. package/esm/LinearGenomeView/components/TrackContainer.d.ts +3 -3
  221. package/esm/LinearGenomeView/components/TrackContainer.js +13 -70
  222. package/esm/LinearGenomeView/components/TrackLabel.js +7 -12
  223. package/esm/LinearGenomeView/components/TrackLabelContainer.d.ts +9 -0
  224. package/esm/LinearGenomeView/components/TrackLabelContainer.js +26 -0
  225. package/esm/LinearGenomeView/components/TrackRenderingContainer.d.ts +10 -0
  226. package/esm/LinearGenomeView/components/TrackRenderingContainer.js +48 -0
  227. package/esm/LinearGenomeView/components/TracksContainer.d.ts +1 -1
  228. package/esm/LinearGenomeView/components/TracksContainer.js +2 -3
  229. package/esm/LinearGenomeView/components/VerticalGuide.d.ts +2 -1
  230. package/esm/LinearGenomeView/components/VerticalGuide.js +0 -1
  231. package/esm/LinearGenomeView/components/ZoomControls.d.ts +2 -1
  232. package/esm/LinearGenomeView/components/ZoomControls.js +0 -1
  233. package/esm/LinearGenomeView/components/hooks.js +0 -1
  234. package/esm/LinearGenomeView/components/util.js +0 -1
  235. package/esm/LinearGenomeView/index.js +0 -1
  236. package/esm/LinearGenomeView/model.d.ts +13 -12
  237. package/esm/LinearGenomeView/model.js +21 -22
  238. package/esm/LinearGenomeView/svgcomponents/SVGBackground.d.ts +2 -1
  239. package/esm/LinearGenomeView/svgcomponents/SVGBackground.js +0 -1
  240. package/esm/LinearGenomeView/svgcomponents/SVGHeader.d.ts +3 -4
  241. package/esm/LinearGenomeView/svgcomponents/SVGHeader.js +7 -3
  242. package/esm/LinearGenomeView/svgcomponents/SVGLinearGenomeView.js +1 -2
  243. package/esm/LinearGenomeView/svgcomponents/SVGRegionSeparators.d.ts +2 -1
  244. package/esm/LinearGenomeView/svgcomponents/SVGRegionSeparators.js +0 -1
  245. package/esm/LinearGenomeView/svgcomponents/SVGRuler.d.ts +2 -1
  246. package/esm/LinearGenomeView/svgcomponents/SVGRuler.js +0 -1
  247. package/esm/LinearGenomeView/svgcomponents/SVGScalebar.d.ts +2 -1
  248. package/esm/LinearGenomeView/svgcomponents/SVGScalebar.js +0 -1
  249. package/esm/LinearGenomeView/svgcomponents/SVGTrackLabel.d.ts +2 -1
  250. package/esm/LinearGenomeView/svgcomponents/SVGTrackLabel.js +0 -1
  251. package/esm/LinearGenomeView/svgcomponents/SVGTracks.d.ts +2 -1
  252. package/esm/LinearGenomeView/svgcomponents/SVGTracks.js +0 -1
  253. package/esm/LinearGenomeView/util.d.ts +2 -2
  254. package/esm/LinearGenomeView/util.js +0 -1
  255. package/esm/index.d.ts +160 -134
  256. package/esm/index.js +1 -2
  257. package/package.json +3 -4
  258. package/dist/BaseLinearDisplay/components/BaseLinearDisplay.js.map +0 -1
  259. package/dist/BaseLinearDisplay/components/Block.js.map +0 -1
  260. package/dist/BaseLinearDisplay/components/BlockMsg.js.map +0 -1
  261. package/dist/BaseLinearDisplay/components/LinearBlocks.js.map +0 -1
  262. package/dist/BaseLinearDisplay/components/ServerSideRenderedBlockContent.js.map +0 -1
  263. package/dist/BaseLinearDisplay/components/TooLargeMessage.js.map +0 -1
  264. package/dist/BaseLinearDisplay/components/Tooltip.js.map +0 -1
  265. package/dist/BaseLinearDisplay/index.js.map +0 -1
  266. package/dist/BaseLinearDisplay/models/BaseLinearDisplayModel.js.map +0 -1
  267. package/dist/BaseLinearDisplay/models/configSchema.js.map +0 -1
  268. package/dist/BaseLinearDisplay/models/serverSideRenderedBlock.js.map +0 -1
  269. package/dist/BaseLinearDisplay/models/util.js.map +0 -1
  270. package/dist/BasicTrack/configSchema.js.map +0 -1
  271. package/dist/BasicTrack/index.js.map +0 -1
  272. package/dist/FeatureTrack/configSchema.js.map +0 -1
  273. package/dist/FeatureTrack/index.js.map +0 -1
  274. package/dist/LaunchLinearGenomeView/index.js.map +0 -1
  275. package/dist/LinearBareDisplay/configSchema.js.map +0 -1
  276. package/dist/LinearBareDisplay/index.js.map +0 -1
  277. package/dist/LinearBareDisplay/model.js.map +0 -1
  278. package/dist/LinearBasicDisplay/components/SetMaxHeight.js.map +0 -1
  279. package/dist/LinearBasicDisplay/configSchema.js.map +0 -1
  280. package/dist/LinearBasicDisplay/index.js.map +0 -1
  281. package/dist/LinearBasicDisplay/model.js.map +0 -1
  282. package/dist/LinearGenomeView/components/CenterLine.js.map +0 -1
  283. package/dist/LinearGenomeView/components/Cytobands.js.map +0 -1
  284. package/dist/LinearGenomeView/components/ExportSvgDialog.js.map +0 -1
  285. package/dist/LinearGenomeView/components/GetSequenceDialog.js.map +0 -1
  286. package/dist/LinearGenomeView/components/Gridlines.js.map +0 -1
  287. package/dist/LinearGenomeView/components/Header.js.map +0 -1
  288. package/dist/LinearGenomeView/components/HelpDialog.js.map +0 -1
  289. package/dist/LinearGenomeView/components/ImportForm.js.map +0 -1
  290. package/dist/LinearGenomeView/components/LinearGenomeView.js.map +0 -1
  291. package/dist/LinearGenomeView/components/MiniControls.js.map +0 -1
  292. package/dist/LinearGenomeView/components/OverviewRubberband.js.map +0 -1
  293. package/dist/LinearGenomeView/components/OverviewScalebar.js.map +0 -1
  294. package/dist/LinearGenomeView/components/RefNameAutocomplete.d.ts +0 -23
  295. package/dist/LinearGenomeView/components/RefNameAutocomplete.js +0 -189
  296. package/dist/LinearGenomeView/components/RefNameAutocomplete.js.map +0 -1
  297. package/dist/LinearGenomeView/components/Rubberband.js.map +0 -1
  298. package/dist/LinearGenomeView/components/RubberbandSpan.js.map +0 -1
  299. package/dist/LinearGenomeView/components/Scalebar.js.map +0 -1
  300. package/dist/LinearGenomeView/components/SearchBox.js.map +0 -1
  301. package/dist/LinearGenomeView/components/SearchResultsDialog.js.map +0 -1
  302. package/dist/LinearGenomeView/components/SearchResultsTable.js.map +0 -1
  303. package/dist/LinearGenomeView/components/SequenceSearchDialog.js.map +0 -1
  304. package/dist/LinearGenomeView/components/TrackContainer.js.map +0 -1
  305. package/dist/LinearGenomeView/components/TrackLabel.js.map +0 -1
  306. package/dist/LinearGenomeView/components/TracksContainer.js.map +0 -1
  307. package/dist/LinearGenomeView/components/VerticalGuide.js.map +0 -1
  308. package/dist/LinearGenomeView/components/ZoomControls.js.map +0 -1
  309. package/dist/LinearGenomeView/components/hooks.js.map +0 -1
  310. package/dist/LinearGenomeView/components/util.js.map +0 -1
  311. package/dist/LinearGenomeView/index.js.map +0 -1
  312. package/dist/LinearGenomeView/model.js.map +0 -1
  313. package/dist/LinearGenomeView/svgcomponents/SVGBackground.js.map +0 -1
  314. package/dist/LinearGenomeView/svgcomponents/SVGHeader.js.map +0 -1
  315. package/dist/LinearGenomeView/svgcomponents/SVGLinearGenomeView.js.map +0 -1
  316. package/dist/LinearGenomeView/svgcomponents/SVGRegionSeparators.js.map +0 -1
  317. package/dist/LinearGenomeView/svgcomponents/SVGRuler.js.map +0 -1
  318. package/dist/LinearGenomeView/svgcomponents/SVGScalebar.js.map +0 -1
  319. package/dist/LinearGenomeView/svgcomponents/SVGTrackLabel.js.map +0 -1
  320. package/dist/LinearGenomeView/svgcomponents/SVGTracks.js.map +0 -1
  321. package/dist/LinearGenomeView/util.js.map +0 -1
  322. package/dist/index.js.map +0 -1
  323. package/esm/BaseLinearDisplay/components/BaseLinearDisplay.js.map +0 -1
  324. package/esm/BaseLinearDisplay/components/Block.js.map +0 -1
  325. package/esm/BaseLinearDisplay/components/BlockMsg.js.map +0 -1
  326. package/esm/BaseLinearDisplay/components/LinearBlocks.js.map +0 -1
  327. package/esm/BaseLinearDisplay/components/ServerSideRenderedBlockContent.js.map +0 -1
  328. package/esm/BaseLinearDisplay/components/TooLargeMessage.js.map +0 -1
  329. package/esm/BaseLinearDisplay/components/Tooltip.js.map +0 -1
  330. package/esm/BaseLinearDisplay/index.js.map +0 -1
  331. package/esm/BaseLinearDisplay/models/BaseLinearDisplayModel.js.map +0 -1
  332. package/esm/BaseLinearDisplay/models/configSchema.js.map +0 -1
  333. package/esm/BaseLinearDisplay/models/serverSideRenderedBlock.js.map +0 -1
  334. package/esm/BaseLinearDisplay/models/util.js.map +0 -1
  335. package/esm/BasicTrack/configSchema.js.map +0 -1
  336. package/esm/BasicTrack/index.js.map +0 -1
  337. package/esm/FeatureTrack/configSchema.js.map +0 -1
  338. package/esm/FeatureTrack/index.js.map +0 -1
  339. package/esm/LaunchLinearGenomeView/index.js.map +0 -1
  340. package/esm/LinearBareDisplay/configSchema.js.map +0 -1
  341. package/esm/LinearBareDisplay/index.js.map +0 -1
  342. package/esm/LinearBareDisplay/model.js.map +0 -1
  343. package/esm/LinearBasicDisplay/components/SetMaxHeight.js.map +0 -1
  344. package/esm/LinearBasicDisplay/configSchema.js.map +0 -1
  345. package/esm/LinearBasicDisplay/index.js.map +0 -1
  346. package/esm/LinearBasicDisplay/model.js.map +0 -1
  347. package/esm/LinearGenomeView/components/CenterLine.js.map +0 -1
  348. package/esm/LinearGenomeView/components/Cytobands.js.map +0 -1
  349. package/esm/LinearGenomeView/components/ExportSvgDialog.js.map +0 -1
  350. package/esm/LinearGenomeView/components/GetSequenceDialog.js.map +0 -1
  351. package/esm/LinearGenomeView/components/Gridlines.js.map +0 -1
  352. package/esm/LinearGenomeView/components/Header.js.map +0 -1
  353. package/esm/LinearGenomeView/components/HelpDialog.js.map +0 -1
  354. package/esm/LinearGenomeView/components/ImportForm.js.map +0 -1
  355. package/esm/LinearGenomeView/components/LinearGenomeView.js.map +0 -1
  356. package/esm/LinearGenomeView/components/MiniControls.js.map +0 -1
  357. package/esm/LinearGenomeView/components/OverviewRubberband.js.map +0 -1
  358. package/esm/LinearGenomeView/components/OverviewScalebar.js.map +0 -1
  359. package/esm/LinearGenomeView/components/RefNameAutocomplete.d.ts +0 -23
  360. package/esm/LinearGenomeView/components/RefNameAutocomplete.js +0 -161
  361. package/esm/LinearGenomeView/components/RefNameAutocomplete.js.map +0 -1
  362. package/esm/LinearGenomeView/components/Rubberband.js.map +0 -1
  363. package/esm/LinearGenomeView/components/RubberbandSpan.js.map +0 -1
  364. package/esm/LinearGenomeView/components/Scalebar.js.map +0 -1
  365. package/esm/LinearGenomeView/components/SearchBox.js.map +0 -1
  366. package/esm/LinearGenomeView/components/SearchResultsDialog.js.map +0 -1
  367. package/esm/LinearGenomeView/components/SearchResultsTable.js.map +0 -1
  368. package/esm/LinearGenomeView/components/SequenceSearchDialog.js.map +0 -1
  369. package/esm/LinearGenomeView/components/TrackContainer.js.map +0 -1
  370. package/esm/LinearGenomeView/components/TrackLabel.js.map +0 -1
  371. package/esm/LinearGenomeView/components/TracksContainer.js.map +0 -1
  372. package/esm/LinearGenomeView/components/VerticalGuide.js.map +0 -1
  373. package/esm/LinearGenomeView/components/ZoomControls.js.map +0 -1
  374. package/esm/LinearGenomeView/components/hooks.js.map +0 -1
  375. package/esm/LinearGenomeView/components/util.js.map +0 -1
  376. package/esm/LinearGenomeView/index.js.map +0 -1
  377. package/esm/LinearGenomeView/model.js.map +0 -1
  378. package/esm/LinearGenomeView/svgcomponents/SVGBackground.js.map +0 -1
  379. package/esm/LinearGenomeView/svgcomponents/SVGHeader.js.map +0 -1
  380. package/esm/LinearGenomeView/svgcomponents/SVGLinearGenomeView.js.map +0 -1
  381. package/esm/LinearGenomeView/svgcomponents/SVGRegionSeparators.js.map +0 -1
  382. package/esm/LinearGenomeView/svgcomponents/SVGRuler.js.map +0 -1
  383. package/esm/LinearGenomeView/svgcomponents/SVGScalebar.js.map +0 -1
  384. package/esm/LinearGenomeView/svgcomponents/SVGTrackLabel.js.map +0 -1
  385. package/esm/LinearGenomeView/svgcomponents/SVGTracks.js.map +0 -1
  386. package/esm/LinearGenomeView/util.js.map +0 -1
  387. package/esm/index.js.map +0 -1
  388. package/src/BaseLinearDisplay/components/BaseLinearDisplay.tsx +0 -117
  389. package/src/BaseLinearDisplay/components/Block.tsx +0 -77
  390. package/src/BaseLinearDisplay/components/BlockMsg.tsx +0 -42
  391. package/src/BaseLinearDisplay/components/LinearBlocks.tsx +0 -119
  392. package/src/BaseLinearDisplay/components/ServerSideRenderedBlockContent.tsx +0 -69
  393. package/src/BaseLinearDisplay/components/TooLargeMessage.tsx +0 -36
  394. package/src/BaseLinearDisplay/components/Tooltip.tsx +0 -107
  395. package/src/BaseLinearDisplay/index.ts +0 -12
  396. package/src/BaseLinearDisplay/models/BaseLinearDisplayModel.tsx +0 -768
  397. package/src/BaseLinearDisplay/models/configSchema.ts +0 -59
  398. package/src/BaseLinearDisplay/models/serverSideRenderedBlock.ts +0 -318
  399. package/src/BaseLinearDisplay/models/util.ts +0 -67
  400. package/src/BasicTrack/configSchema.ts +0 -23
  401. package/src/BasicTrack/index.ts +0 -18
  402. package/src/FeatureTrack/configSchema.ts +0 -27
  403. package/src/FeatureTrack/index.ts +0 -18
  404. package/src/LaunchLinearGenomeView/index.ts +0 -66
  405. package/src/LinearBareDisplay/configSchema.ts +0 -27
  406. package/src/LinearBareDisplay/index.test.js +0 -34
  407. package/src/LinearBareDisplay/index.ts +0 -25
  408. package/src/LinearBareDisplay/model.ts +0 -53
  409. package/src/LinearBasicDisplay/components/SetMaxHeight.tsx +0 -73
  410. package/src/LinearBasicDisplay/configSchema.ts +0 -27
  411. package/src/LinearBasicDisplay/index.ts +0 -25
  412. package/src/LinearBasicDisplay/model.ts +0 -214
  413. package/src/LinearGenomeView/README.md +0 -9
  414. package/src/LinearGenomeView/components/CenterLine.tsx +0 -65
  415. package/src/LinearGenomeView/components/Cytobands.tsx +0 -154
  416. package/src/LinearGenomeView/components/ExportSvgDialog.tsx +0 -149
  417. package/src/LinearGenomeView/components/GetSequenceDialog.tsx +0 -269
  418. package/src/LinearGenomeView/components/Gridlines.tsx +0 -119
  419. package/src/LinearGenomeView/components/Header.tsx +0 -126
  420. package/src/LinearGenomeView/components/HelpDialog.tsx +0 -69
  421. package/src/LinearGenomeView/components/ImportForm.tsx +0 -217
  422. package/src/LinearGenomeView/components/LinearGenomeView.test.tsx +0 -167
  423. package/src/LinearGenomeView/components/LinearGenomeView.tsx +0 -72
  424. package/src/LinearGenomeView/components/MiniControls.tsx +0 -55
  425. package/src/LinearGenomeView/components/OverviewRubberband.tsx +0 -219
  426. package/src/LinearGenomeView/components/OverviewScalebar.tsx +0 -345
  427. package/src/LinearGenomeView/components/RefNameAutocomplete.tsx +0 -321
  428. package/src/LinearGenomeView/components/Rubberband.tsx +0 -89
  429. package/src/LinearGenomeView/components/RubberbandSpan.tsx +0 -99
  430. package/src/LinearGenomeView/components/Scalebar.test.tsx +0 -145
  431. package/src/LinearGenomeView/components/Scalebar.tsx +0 -199
  432. package/src/LinearGenomeView/components/SearchBox.tsx +0 -123
  433. package/src/LinearGenomeView/components/SearchResultsDialog.tsx +0 -57
  434. package/src/LinearGenomeView/components/SearchResultsTable.tsx +0 -121
  435. package/src/LinearGenomeView/components/SequenceSearchDialog.tsx +0 -136
  436. package/src/LinearGenomeView/components/TrackContainer.tsx +0 -180
  437. package/src/LinearGenomeView/components/TrackLabel.tsx +0 -143
  438. package/src/LinearGenomeView/components/TracksContainer.tsx +0 -114
  439. package/src/LinearGenomeView/components/VerticalGuide.tsx +0 -37
  440. package/src/LinearGenomeView/components/ZoomControls.tsx +0 -62
  441. package/src/LinearGenomeView/components/__snapshots__/LinearGenomeView.test.tsx.snap +0 -1520
  442. package/src/LinearGenomeView/components/hooks.ts +0 -306
  443. package/src/LinearGenomeView/components/util.ts +0 -76
  444. package/src/LinearGenomeView/hg38DisplayedRegions.json +0 -3187
  445. package/src/LinearGenomeView/index.test.ts +0 -993
  446. package/src/LinearGenomeView/index.ts +0 -17
  447. package/src/LinearGenomeView/model.ts +0 -1532
  448. package/src/LinearGenomeView/svgcomponents/SVGBackground.tsx +0 -21
  449. package/src/LinearGenomeView/svgcomponents/SVGHeader.tsx +0 -93
  450. package/src/LinearGenomeView/svgcomponents/SVGLinearGenomeView.tsx +0 -114
  451. package/src/LinearGenomeView/svgcomponents/SVGRegionSeparators.tsx +0 -31
  452. package/src/LinearGenomeView/svgcomponents/SVGRuler.tsx +0 -125
  453. package/src/LinearGenomeView/svgcomponents/SVGScalebar.tsx +0 -57
  454. package/src/LinearGenomeView/svgcomponents/SVGTrackLabel.tsx +0 -47
  455. package/src/LinearGenomeView/svgcomponents/SVGTracks.tsx +0 -67
  456. package/src/LinearGenomeView/util.test.ts +0 -33
  457. package/src/LinearGenomeView/util.ts +0 -182
  458. package/src/LinearGenomeView/volvoxDisplayedRegions.json +0 -16
  459. package/src/index.ts +0 -85
@@ -1,768 +0,0 @@
1
- /* eslint-disable @typescript-eslint/no-explicit-any */
2
- import React from 'react'
3
- import { ThemeOptions } from '@mui/material'
4
- import { BaseDisplay } from '@jbrowse/core/pluggableElementTypes/models'
5
- import { ConfigurationReference, getConf } from '@jbrowse/core/configuration'
6
- import { MenuItem } from '@jbrowse/core/ui'
7
- import {
8
- isAbortException,
9
- getContainingView,
10
- getContainingTrack,
11
- getSession,
12
- getViewParams,
13
- isSelectionContainer,
14
- isSessionModelWithWidgets,
15
- isFeature,
16
- Feature,
17
- ReactRendering,
18
- } from '@jbrowse/core/util'
19
- import { FeatureDensityStats } from '@jbrowse/core/data_adapters/BaseAdapter'
20
- import { BaseBlock } from '@jbrowse/core/util/blockTypes'
21
- import { Region } from '@jbrowse/core/util/types'
22
- import CompositeMap from '@jbrowse/core/util/compositeMap'
23
- import { getParentRenderProps } from '@jbrowse/core/util/tracks'
24
- import { autorun } from 'mobx'
25
- import { addDisposer, isAlive, types, Instance } from 'mobx-state-tree'
26
-
27
- // icons
28
- import MenuOpenIcon from '@mui/icons-material/MenuOpen'
29
-
30
- // locals
31
- import { LinearGenomeViewModel, ExportSvgOptions } from '../../LinearGenomeView'
32
- import { Tooltip } from '../components/BaseLinearDisplay'
33
- import TooLargeMessage from '../components/TooLargeMessage'
34
- import BlockState, { renderBlockData } from './serverSideRenderedBlock'
35
- import { getId, getDisplayStr, getFeatureDensityStatsPre } from './util'
36
- import configSchema from './configSchema'
37
-
38
- type LGV = LinearGenomeViewModel
39
-
40
- export interface Layout {
41
- minX: number
42
- minY: number
43
- maxX: number
44
- maxY: number
45
- name: string
46
- }
47
-
48
- type LayoutRecord = [number, number, number, number]
49
-
50
- const minDisplayHeight = 20
51
-
52
- /**
53
- * #stateModel BaseLinearDisplay
54
- * extends `BaseDisplay`
55
- */
56
- function stateModelFactory() {
57
- return types
58
- .compose(
59
- 'BaseLinearDisplay',
60
- BaseDisplay,
61
- types.model({
62
- /**
63
- * #property
64
- */
65
- heightPreConfig: types.maybe(
66
- types.refinement(
67
- 'displayHeight',
68
- types.number,
69
- n => n >= minDisplayHeight,
70
- ),
71
- ),
72
- /**
73
- * #property
74
- * updated via autorun
75
- */
76
- blockState: types.map(BlockState),
77
- /**
78
- * #property
79
- */
80
- userBpPerPxLimit: types.maybe(types.number),
81
- /**
82
- * #property
83
- */
84
- userByteSizeLimit: types.maybe(types.number),
85
- /**
86
- * #property
87
- */
88
- configuration: ConfigurationReference(configSchema),
89
- }),
90
- )
91
- .volatile(() => ({
92
- currBpPerPx: 0,
93
- scrollTop: 0,
94
- message: '',
95
- featureIdUnderMouse: undefined as undefined | string,
96
- contextMenuFeature: undefined as undefined | Feature,
97
- featureDensityStatsP: undefined as
98
- | undefined
99
- | Promise<FeatureDensityStats>,
100
- featureDensityStats: undefined as undefined | FeatureDensityStats,
101
- }))
102
- .views(self => ({
103
- get height() {
104
- return self.heightPreConfig ?? (getConf(self, 'height') as number)
105
- },
106
- /**
107
- * #getter
108
- */
109
- get blockType(): 'staticBlocks' | 'dynamicBlocks' {
110
- return 'staticBlocks'
111
- },
112
- /**
113
- * #getter
114
- */
115
- get blockDefinitions() {
116
- const { blockType } = this
117
- const view = getContainingView(self) as LGV
118
- if (!view.initialized) {
119
- throw new Error('view not initialized yet')
120
- }
121
- return view[blockType]
122
- },
123
- }))
124
- .views(self => ({
125
- /**
126
- * #getter
127
- * how many milliseconds to wait for the display to
128
- * "settle" before re-rendering a block
129
- */
130
- get renderDelay() {
131
- return 50
132
- },
133
-
134
- /**
135
- * #getter
136
- */
137
- get TooltipComponent(): React.FC<any> {
138
- return Tooltip as unknown as React.FC
139
- },
140
-
141
- /**
142
- * #getter
143
- * returns a string feature ID if the globally-selected object
144
- * is probably a feature
145
- */
146
- get selectedFeatureId() {
147
- if (isAlive(self)) {
148
- const { selection } = getSession(self)
149
- // does it quack like a feature?
150
- if (isFeature(selection)) {
151
- return selection.id()
152
- }
153
- }
154
- return undefined
155
- },
156
- /**
157
- * #getter
158
- * if a display-level message should be displayed instead of the blocks,
159
- * make this return a react component
160
- */
161
- get DisplayMessageComponent() {
162
- return undefined as undefined | React.FC<any>
163
- },
164
- }))
165
- .views(self => ({
166
- /**
167
- * #getter
168
- * a CompositeMap of `featureId -> feature obj` that
169
- * just looks in all the block data for that feature
170
- */
171
- get features() {
172
- const featureMaps = []
173
- for (const block of self.blockState.values()) {
174
- if (block?.features) {
175
- featureMaps.push(block.features)
176
- }
177
- }
178
- return new CompositeMap(featureMaps)
179
- },
180
-
181
- /**
182
- * #getter
183
- */
184
- get featureUnderMouse() {
185
- const feat = self.featureIdUnderMouse
186
- return feat ? this.features.get(feat) : undefined
187
- },
188
-
189
- /**
190
- * #getter
191
- */
192
- getFeatureOverlapping(
193
- blockKey: string,
194
- x: number,
195
- y: number,
196
- ): string | undefined {
197
- return self.blockState.get(blockKey)?.layout?.getByCoord(x, y)
198
- },
199
-
200
- /**
201
- * #getter
202
- */
203
- getFeatureByID(blockKey: string, id: string): LayoutRecord | undefined {
204
- return self.blockState.get(blockKey)?.layout?.getByID(id)
205
- },
206
-
207
- /**
208
- * #getter
209
- */
210
- searchFeatureByID(id: string): LayoutRecord | undefined {
211
- let ret
212
- self.blockState.forEach(block => {
213
- const val = block?.layout?.getByID(id)
214
- if (val) {
215
- ret = val
216
- }
217
- })
218
- return ret
219
- },
220
-
221
- /**
222
- * #getter
223
- */
224
- get currentBytesRequested() {
225
- return self.featureDensityStats?.bytes || 0
226
- },
227
-
228
- /**
229
- * #getter
230
- */
231
- get currentFeatureScreenDensity() {
232
- const view = getContainingView(self) as LGV
233
- return (self.featureDensityStats?.featureDensity || 0) * view.bpPerPx
234
- },
235
-
236
- /**
237
- * #getter
238
- */
239
- get maxFeatureScreenDensity() {
240
- return getConf(self, 'maxFeatureScreenDensity')
241
- },
242
- /**
243
- * #getter
244
- */
245
- get featureDensityStatsReady() {
246
- return !!self.featureDensityStats || !!self.userBpPerPxLimit
247
- },
248
-
249
- /**
250
- * #getter
251
- */
252
- get maxAllowableBytes() {
253
- return (
254
- self.userByteSizeLimit ||
255
- self.featureDensityStats?.fetchSizeLimit ||
256
- (getConf(self, 'fetchSizeLimit') as number)
257
- )
258
- },
259
- }))
260
- .actions(self => ({
261
- /**
262
- * #action
263
- */
264
- setMessage(message: string) {
265
- self.message = message
266
- },
267
- }))
268
- .actions(self => ({
269
- afterAttach() {
270
- // watch the parent's blocks to update our block state when they change,
271
- // then we recreate the blocks on our own model (creating and deleting to
272
- // match the parent blocks)
273
- addDisposer(
274
- self,
275
- autorun(() => {
276
- const blocksPresent: { [key: string]: boolean } = {}
277
- const view = getContainingView(self) as LGV
278
- if (view.initialized) {
279
- self.blockDefinitions.contentBlocks.forEach(block => {
280
- blocksPresent[block.key] = true
281
- if (!self.blockState.has(block.key)) {
282
- this.addBlock(block.key, block)
283
- }
284
- })
285
- self.blockState.forEach((_, key) => {
286
- if (!blocksPresent[key]) {
287
- this.deleteBlock(key)
288
- }
289
- })
290
- }
291
- }),
292
- )
293
- },
294
-
295
- /**
296
- * #action
297
- */
298
- async getFeatureDensityStats() {
299
- if (!self.featureDensityStatsP) {
300
- self.featureDensityStatsP = getFeatureDensityStatsPre(self).catch(
301
- e => {
302
- this.setFeatureDensityStatsP(undefined)
303
- throw e
304
- },
305
- )
306
- }
307
- return self.featureDensityStatsP
308
- },
309
-
310
- /**
311
- * #action
312
- */
313
- setFeatureDensityStatsP(arg: any) {
314
- self.featureDensityStatsP = arg
315
- },
316
-
317
- /**
318
- * #action
319
- */
320
- setFeatureDensityStats(featureDensityStats?: FeatureDensityStats) {
321
- self.featureDensityStats = featureDensityStats
322
- },
323
- /**
324
- * #action
325
- */
326
- clearFeatureDensityStats() {
327
- self.featureDensityStatsP = undefined
328
- self.featureDensityStats = undefined
329
- },
330
- /**
331
- * #action
332
- */
333
- setHeight(displayHeight: number) {
334
- self.heightPreConfig =
335
- displayHeight > minDisplayHeight ? displayHeight : minDisplayHeight
336
- return self.height
337
- },
338
- /**
339
- * #action
340
- */
341
- resizeHeight(distance: number) {
342
- const oldHeight = self.height
343
- const newHeight = this.setHeight(self.height + distance)
344
- return newHeight - oldHeight
345
- },
346
-
347
- /**
348
- * #action
349
- */
350
- setScrollTop(scrollTop: number) {
351
- self.scrollTop = scrollTop
352
- },
353
-
354
- /**
355
- * #action
356
- */
357
- setFeatureDensityStatsLimit(stats?: FeatureDensityStats) {
358
- const view = getContainingView(self) as LGV
359
- if (stats?.bytes) {
360
- self.userByteSizeLimit = stats.bytes
361
- } else {
362
- self.userBpPerPxLimit = view.bpPerPx
363
- }
364
- },
365
-
366
- /**
367
- * #action
368
- */
369
- addBlock(key: string, block: BaseBlock) {
370
- self.blockState.set(
371
- key,
372
- BlockState.create({
373
- key,
374
- region: block.toRegion(),
375
- }),
376
- )
377
- },
378
- /**
379
- * #action
380
- */
381
- setCurrBpPerPx(n: number) {
382
- self.currBpPerPx = n
383
- },
384
- /**
385
- * #action
386
- */
387
- deleteBlock(key: string) {
388
- self.blockState.delete(key)
389
- },
390
- /**
391
- * #action
392
- */
393
- selectFeature(feature: Feature) {
394
- const session = getSession(self)
395
- if (isSessionModelWithWidgets(session)) {
396
- const featureWidget = session.addWidget(
397
- 'BaseFeatureWidget',
398
- 'baseFeature',
399
- {
400
- view: getContainingView(self),
401
- track: getContainingTrack(self),
402
- featureData: feature.toJSON(),
403
- },
404
- )
405
-
406
- session.showWidget(featureWidget)
407
- }
408
- if (isSelectionContainer(session)) {
409
- session.setSelection(feature)
410
- }
411
- },
412
- /**
413
- * #action
414
- */
415
- clearFeatureSelection() {
416
- getSession(self).clearSelection()
417
- },
418
- /**
419
- * #action
420
- */
421
- setFeatureIdUnderMouse(feature?: string) {
422
- self.featureIdUnderMouse = feature
423
- },
424
- /**
425
- * #action
426
- */
427
- reload() {
428
- ;[...self.blockState.values()].map(val => val.doReload())
429
- },
430
- /**
431
- * #action
432
- */
433
- setContextMenuFeature(feature?: Feature) {
434
- self.contextMenuFeature = feature
435
- },
436
- }))
437
- .views(self => ({
438
- /**
439
- * #getter
440
- * region is too large if:
441
- * - stats are ready
442
- * - region is greater than 20kb (don't warn when zoomed in less than that)
443
- * - and bytes is greater than max allowed bytes or density greater than max
444
- * density
445
- */
446
- get regionTooLarge() {
447
- const view = getContainingView(self) as LGV
448
- if (
449
- !self.featureDensityStatsReady ||
450
- view.dynamicBlocks.totalBp < 20_000
451
- ) {
452
- return false
453
- }
454
- return (
455
- self.currentBytesRequested > self.maxAllowableBytes ||
456
- (self.userBpPerPxLimit
457
- ? view.bpPerPx > self.userBpPerPxLimit
458
- : self.currentFeatureScreenDensity > self.maxFeatureScreenDensity)
459
- )
460
- },
461
-
462
- /**
463
- * #getter
464
- * only shows a message of bytes requested is defined, the feature density
465
- * based stats don't produce any helpful message besides to zoom in
466
- */
467
- get regionTooLargeReason() {
468
- const req = self.currentBytesRequested
469
- const max = self.maxAllowableBytes
470
-
471
- return req && req > max
472
- ? `Requested too much data (${getDisplayStr(req)})`
473
- : ''
474
- },
475
- }))
476
- .actions(self => {
477
- const { reload: superReload } = self
478
-
479
- return {
480
- /**
481
- * #action
482
- */
483
- async reload() {
484
- self.setError()
485
- const view = getContainingView(self) as LGV
486
-
487
- // extra check for contentBlocks.length
488
- // https://github.com/GMOD/jbrowse-components/issues/2694
489
- if (!view.initialized || !view.staticBlocks.contentBlocks.length) {
490
- return
491
- }
492
-
493
- try {
494
- const featureDensityStats = await self.getFeatureDensityStats()
495
-
496
- if (isAlive(self)) {
497
- self.setFeatureDensityStats(featureDensityStats)
498
- superReload()
499
- }
500
- } catch (e) {
501
- console.error(e)
502
- self.setError(e)
503
- }
504
- },
505
- }
506
- })
507
- .actions(self => ({
508
- afterAttach() {
509
- // this autorun performs stats estimation
510
- //
511
- // the chain of events calls getFeatureDensityStats against the data
512
- // adapter which by default uses featureDensity, but can also respond
513
- // with a byte size estimate and fetch size limit (data adapter can
514
- // define what is too much data)
515
- addDisposer(
516
- self,
517
- autorun(async () => {
518
- try {
519
- const view = getContainingView(self) as LGV
520
-
521
- // extra check for contentBlocks.length
522
- // https://github.com/GMOD/jbrowse-components/issues/2694
523
- if (
524
- !view.initialized ||
525
- !view.staticBlocks.contentBlocks.length
526
- ) {
527
- return
528
- }
529
-
530
- // don't re-estimate featureDensity even if zoom level changes,
531
- // jbrowse1-style assume it's sort of representative
532
- if (self.featureDensityStats?.featureDensity !== undefined) {
533
- self.setCurrBpPerPx(view.bpPerPx)
534
- return
535
- }
536
-
537
- // we estimate stats once at a given zoom level
538
- if (view.bpPerPx === self.currBpPerPx) {
539
- return
540
- }
541
-
542
- self.clearFeatureDensityStats()
543
- self.setCurrBpPerPx(view.bpPerPx)
544
- const featureDensityStats = await self.getFeatureDensityStats()
545
- if (isAlive(self)) {
546
- self.setFeatureDensityStats(featureDensityStats)
547
- }
548
- } catch (e) {
549
- if (!isAbortException(e) && isAlive(self)) {
550
- console.error(e)
551
- self.setError(e)
552
- }
553
- }
554
- }),
555
- )
556
- },
557
- }))
558
- .views(self => ({
559
- /**
560
- * #method
561
- */
562
- regionCannotBeRenderedText(_region: Region) {
563
- return self.regionTooLarge ? 'Force load to see features' : ''
564
- },
565
-
566
- /**
567
- * #method
568
- * @param region -
569
- * @returns falsy if the region is fine to try rendering. Otherwise,
570
- * return a react node + string of text.
571
- * string of text describes why it cannot be rendered
572
- * react node allows user to force load at current setting
573
- */
574
- regionCannotBeRendered(_region: Region) {
575
- return self.regionTooLarge ? <TooLargeMessage model={self} /> : null
576
- },
577
-
578
- /**
579
- * #method
580
- */
581
- trackMenuItems(): MenuItem[] {
582
- return []
583
- },
584
-
585
- /**
586
- * #method
587
- */
588
- contextMenuItems(): MenuItem[] {
589
- return [
590
- ...(self.contextMenuFeature
591
- ? [
592
- {
593
- label: 'Open feature details',
594
- icon: MenuOpenIcon,
595
- onClick: () => {
596
- if (self.contextMenuFeature) {
597
- self.selectFeature(self.contextMenuFeature)
598
- }
599
- },
600
- },
601
- ]
602
- : []),
603
- ]
604
- },
605
- /**
606
- * #method
607
- */
608
- renderProps() {
609
- const view = getContainingView(self) as LGV
610
- return {
611
- ...getParentRenderProps(self),
612
- notReady:
613
- self.currBpPerPx !== view.bpPerPx || !self.featureDensityStatsReady,
614
- rpcDriverName: self.rpcDriverName,
615
- displayModel: self,
616
- onFeatureClick(_: unknown, featureId?: string) {
617
- const f = featureId || self.featureIdUnderMouse
618
- if (!f) {
619
- self.clearFeatureSelection()
620
- } else {
621
- const feature = self.features.get(f)
622
- if (feature) {
623
- self.selectFeature(feature)
624
- }
625
- }
626
- },
627
- onClick() {
628
- self.clearFeatureSelection()
629
- },
630
- // similar to click but opens a menu with further options
631
- onFeatureContextMenu(_: unknown, featureId?: string) {
632
- const f = featureId || self.featureIdUnderMouse
633
- if (!f) {
634
- self.clearFeatureSelection()
635
- } else {
636
- // feature id under mouse passed to context menu
637
- self.setContextMenuFeature(self.features.get(f))
638
- }
639
- },
640
-
641
- onMouseMove(_: unknown, featureId?: string) {
642
- self.setFeatureIdUnderMouse(featureId)
643
- },
644
-
645
- onMouseLeave(_: unknown) {
646
- self.setFeatureIdUnderMouse(undefined)
647
- },
648
-
649
- onContextMenu() {
650
- self.setContextMenuFeature(undefined)
651
- self.clearFeatureSelection()
652
- },
653
- }
654
- },
655
- }))
656
- .actions(self => ({
657
- /**
658
- * #method
659
- */
660
- async renderSvg(
661
- opts: ExportSvgOptions & {
662
- overrideHeight: number
663
- theme: ThemeOptions
664
- },
665
- ) {
666
- const { height, id } = self
667
- const { overrideHeight } = opts
668
- const view = getContainingView(self) as LGV
669
- const { offsetPx: viewOffsetPx, roundedDynamicBlocks, width } = view
670
-
671
- const renderings = await Promise.all(
672
- roundedDynamicBlocks.map(async block => {
673
- const blockState = BlockState.create({
674
- key: block.key,
675
- region: block,
676
- })
677
-
678
- // regionCannotBeRendered can return jsx so look for plaintext
679
- // version, or just get the default if none available
680
- const cannotBeRenderedReason =
681
- self.regionCannotBeRenderedText(block) ||
682
- self.regionCannotBeRendered(block)
683
-
684
- if (cannotBeRenderedReason) {
685
- return [
686
- block,
687
- {
688
- reactElement: (
689
- <>
690
- <rect x={0} y={0} width={width} height={20} fill="#aaa" />
691
- <text x={0} y={15}>
692
- {cannotBeRenderedReason}
693
- </text>
694
- </>
695
- ),
696
- },
697
- ] as const
698
- }
699
-
700
- const { rpcManager, renderArgs, renderProps, rendererType } =
701
- renderBlockData(blockState, self)
702
-
703
- return [
704
- block,
705
- await rendererType.renderInClient(rpcManager, {
706
- ...renderArgs,
707
- ...renderProps,
708
- viewParams: getViewParams(self, true),
709
- exportSVG: opts,
710
- theme: opts.theme || renderProps.theme,
711
- }),
712
- ] as const
713
- }),
714
- )
715
-
716
- return (
717
- <>
718
- {renderings.map(([block, rendering], index) => {
719
- const { offsetPx, widthPx } = block
720
- const offset = offsetPx - viewOffsetPx
721
- const clipid = getId(id, index)
722
-
723
- return (
724
- <React.Fragment key={`frag-${index}`}>
725
- <defs>
726
- <clipPath id={clipid}>
727
- <rect
728
- x={0}
729
- y={0}
730
- width={widthPx}
731
- height={overrideHeight || height}
732
- />
733
- </clipPath>
734
- </defs>
735
- <g transform={`translate(${offset} 0)`}>
736
- <g clipPath={`url(#${clipid})`}>
737
- <ReactRendering rendering={rendering} />
738
- </g>
739
- </g>
740
- </React.Fragment>
741
- )
742
- })}
743
- </>
744
- )
745
- },
746
- }))
747
- .preProcessSnapshot(snap => {
748
- if (!snap) {
749
- return snap
750
- }
751
- // rewrite "height" from older snapshots to "heightPreConfig", this allows
752
- // us to maintain a height "getter" going forward
753
- // @ts-expect-error
754
- const { height, ...rest } = snap
755
- return { heightPreConfig: height, ...rest }
756
- })
757
- .postProcessSnapshot(self => {
758
- // xref https://github.com/mobxjs/mobx-state-tree/issues/1524 for Omit
759
- const r = self as Omit<typeof self, symbol>
760
- const { blockState, ...rest } = r
761
- return rest
762
- })
763
- }
764
-
765
- export const BaseLinearDisplay = stateModelFactory()
766
-
767
- export type BaseLinearDisplayStateModel = typeof BaseLinearDisplay
768
- export type BaseLinearDisplayModel = Instance<BaseLinearDisplayStateModel>