@jbrowse/plugin-linear-genome-view 2.5.0 → 2.6.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 (279) hide show
  1. package/dist/BaseLinearDisplay/components/BaseLinearDisplay.d.ts +1 -1
  2. package/dist/BaseLinearDisplay/components/Block.d.ts +3 -3
  3. package/dist/BaseLinearDisplay/components/BlockMsg.d.ts +1 -1
  4. package/dist/BaseLinearDisplay/components/LinearBlocks.d.ts +3 -2
  5. package/dist/BaseLinearDisplay/components/TooLargeMessage.d.ts +2 -1
  6. package/dist/BaseLinearDisplay/components/Tooltip.d.ts +2 -1
  7. package/dist/BaseLinearDisplay/index.d.ts +5 -2
  8. package/dist/BaseLinearDisplay/index.js +7 -1
  9. package/dist/BaseLinearDisplay/index.js.map +1 -1
  10. package/dist/BaseLinearDisplay/models/BaseLinearDisplayModel.d.ts +62 -142
  11. package/dist/BaseLinearDisplay/models/BaseLinearDisplayModel.js +34 -355
  12. package/dist/BaseLinearDisplay/models/BaseLinearDisplayModel.js.map +1 -1
  13. package/dist/BaseLinearDisplay/models/FeatureDensityMixin.d.ts +99 -0
  14. package/dist/BaseLinearDisplay/models/FeatureDensityMixin.js +190 -0
  15. package/dist/BaseLinearDisplay/models/FeatureDensityMixin.js.map +1 -0
  16. package/dist/BaseLinearDisplay/models/TrackHeightMixin.d.ts +30 -0
  17. package/dist/BaseLinearDisplay/models/TrackHeightMixin.js +56 -0
  18. package/dist/BaseLinearDisplay/models/TrackHeightMixin.js.map +1 -0
  19. package/dist/BaseLinearDisplay/models/autorunFeatureDensityStats.d.ts +2 -0
  20. package/dist/BaseLinearDisplay/models/autorunFeatureDensityStats.js +42 -0
  21. package/dist/BaseLinearDisplay/models/autorunFeatureDensityStats.js.map +1 -0
  22. package/dist/BaseLinearDisplay/models/configSchema.js +1 -0
  23. package/dist/BaseLinearDisplay/models/configSchema.js.map +1 -1
  24. package/dist/BaseLinearDisplay/models/renderSvg.d.ts +8 -0
  25. package/dist/BaseLinearDisplay/models/renderSvg.js +83 -0
  26. package/dist/BaseLinearDisplay/models/renderSvg.js.map +1 -0
  27. package/dist/BaseLinearDisplay/models/serverSideRenderedBlock.js +20 -16
  28. package/dist/BaseLinearDisplay/models/serverSideRenderedBlock.js.map +1 -1
  29. package/dist/BasicTrack/configSchema.js +1 -0
  30. package/dist/BasicTrack/configSchema.js.map +1 -1
  31. package/dist/FeatureTrack/configSchema.d.ts +1 -3
  32. package/dist/FeatureTrack/configSchema.js +1 -0
  33. package/dist/FeatureTrack/configSchema.js.map +1 -1
  34. package/dist/LinearBareDisplay/configSchema.d.ts +1 -0
  35. package/dist/LinearBareDisplay/configSchema.js +1 -0
  36. package/dist/LinearBareDisplay/configSchema.js.map +1 -1
  37. package/dist/LinearBareDisplay/model.d.ts +52 -39
  38. package/dist/LinearBareDisplay/model.js +1 -0
  39. package/dist/LinearBareDisplay/model.js.map +1 -1
  40. package/dist/LinearBasicDisplay/components/SetMaxHeight.d.ts +2 -1
  41. package/dist/LinearBasicDisplay/configSchema.d.ts +1 -0
  42. package/dist/LinearBasicDisplay/configSchema.js +1 -0
  43. package/dist/LinearBasicDisplay/configSchema.js.map +1 -1
  44. package/dist/LinearBasicDisplay/model.d.ts +67 -66
  45. package/dist/LinearBasicDisplay/model.js +1 -0
  46. package/dist/LinearBasicDisplay/model.js.map +1 -1
  47. package/dist/LinearGenomeView/components/CenterLine.d.ts +2 -1
  48. package/dist/LinearGenomeView/components/Cytobands.d.ts +2 -1
  49. package/dist/LinearGenomeView/components/ExportSvgDialog.d.ts +2 -1
  50. package/dist/LinearGenomeView/components/GetSequenceDialog.d.ts +2 -1
  51. package/dist/LinearGenomeView/components/Gridlines.d.ts +2 -1
  52. package/dist/LinearGenomeView/components/Header.d.ts +2 -1
  53. package/dist/LinearGenomeView/components/ImportForm.d.ts +2 -1
  54. package/dist/LinearGenomeView/components/LinearGenomeView.d.ts +2 -1
  55. package/dist/LinearGenomeView/components/LinearGenomeView.js +28 -4
  56. package/dist/LinearGenomeView/components/LinearGenomeView.js.map +1 -1
  57. package/dist/LinearGenomeView/components/MiniControls.d.ts +3 -2
  58. package/dist/LinearGenomeView/components/MiniControls.js +20 -40
  59. package/dist/LinearGenomeView/components/MiniControls.js.map +1 -1
  60. package/dist/LinearGenomeView/components/OverviewRubberband.d.ts +1 -1
  61. package/dist/LinearGenomeView/components/OverviewScalebar.d.ts +2 -2
  62. package/dist/LinearGenomeView/components/OverviewScalebar.js +10 -4
  63. package/dist/LinearGenomeView/components/OverviewScalebar.js.map +1 -1
  64. package/dist/LinearGenomeView/components/RefNameAutocomplete/AutocompleteTextField.d.ts +10 -0
  65. package/dist/LinearGenomeView/components/RefNameAutocomplete/AutocompleteTextField.js +22 -0
  66. package/dist/LinearGenomeView/components/RefNameAutocomplete/AutocompleteTextField.js.map +1 -0
  67. package/dist/LinearGenomeView/components/RefNameAutocomplete/EndAdornment.d.ts +5 -0
  68. package/dist/LinearGenomeView/components/RefNameAutocomplete/EndAdornment.js +52 -0
  69. package/dist/LinearGenomeView/components/RefNameAutocomplete/EndAdornment.js.map +1 -0
  70. package/dist/LinearGenomeView/components/{HelpDialog.d.ts → RefNameAutocomplete/HelpDialog.d.ts} +2 -1
  71. package/dist/LinearGenomeView/components/RefNameAutocomplete/HelpDialog.js.map +1 -0
  72. package/dist/LinearGenomeView/components/RefNameAutocomplete/index.d.ts +18 -0
  73. package/dist/LinearGenomeView/components/RefNameAutocomplete/index.js +111 -0
  74. package/dist/LinearGenomeView/components/RefNameAutocomplete/index.js.map +1 -0
  75. package/dist/LinearGenomeView/components/RefNameAutocomplete/util.d.ts +12 -0
  76. package/dist/LinearGenomeView/components/RefNameAutocomplete/util.js +59 -0
  77. package/dist/LinearGenomeView/components/RefNameAutocomplete/util.js.map +1 -0
  78. package/dist/LinearGenomeView/components/Rubberband.d.ts +1 -1
  79. package/dist/LinearGenomeView/components/RubberbandSpan.d.ts +2 -1
  80. package/dist/LinearGenomeView/components/SearchBox.d.ts +2 -1
  81. package/dist/LinearGenomeView/components/SearchResultsDialog.d.ts +2 -1
  82. package/dist/LinearGenomeView/components/SearchResultsTable.d.ts +2 -1
  83. package/dist/LinearGenomeView/components/SequenceSearchDialog.d.ts +2 -1
  84. package/dist/LinearGenomeView/components/TrackContainer.d.ts +3 -3
  85. package/dist/LinearGenomeView/components/TrackContainer.js +12 -68
  86. package/dist/LinearGenomeView/components/TrackContainer.js.map +1 -1
  87. package/dist/LinearGenomeView/components/TrackLabel.js +6 -10
  88. package/dist/LinearGenomeView/components/TrackLabel.js.map +1 -1
  89. package/dist/LinearGenomeView/components/TrackLabelContainer.d.ts +9 -0
  90. package/dist/LinearGenomeView/components/TrackLabelContainer.js +32 -0
  91. package/dist/LinearGenomeView/components/TrackLabelContainer.js.map +1 -0
  92. package/dist/LinearGenomeView/components/TrackRenderingContainer.d.ts +10 -0
  93. package/dist/LinearGenomeView/components/TrackRenderingContainer.js +74 -0
  94. package/dist/LinearGenomeView/components/TrackRenderingContainer.js.map +1 -0
  95. package/dist/LinearGenomeView/components/TracksContainer.d.ts +1 -1
  96. package/dist/LinearGenomeView/components/TracksContainer.js +2 -2
  97. package/dist/LinearGenomeView/components/TracksContainer.js.map +1 -1
  98. package/dist/LinearGenomeView/components/VerticalGuide.d.ts +2 -1
  99. package/dist/LinearGenomeView/components/ZoomControls.d.ts +2 -1
  100. package/dist/LinearGenomeView/model.d.ts +13 -12
  101. package/dist/LinearGenomeView/model.js +25 -25
  102. package/dist/LinearGenomeView/model.js.map +1 -1
  103. package/dist/LinearGenomeView/svgcomponents/SVGBackground.d.ts +2 -1
  104. package/dist/LinearGenomeView/svgcomponents/SVGHeader.d.ts +3 -4
  105. package/dist/LinearGenomeView/svgcomponents/SVGHeader.js +7 -2
  106. package/dist/LinearGenomeView/svgcomponents/SVGHeader.js.map +1 -1
  107. package/dist/LinearGenomeView/svgcomponents/SVGLinearGenomeView.js +1 -1
  108. package/dist/LinearGenomeView/svgcomponents/SVGLinearGenomeView.js.map +1 -1
  109. package/dist/LinearGenomeView/svgcomponents/SVGRegionSeparators.d.ts +2 -1
  110. package/dist/LinearGenomeView/svgcomponents/SVGRuler.d.ts +2 -1
  111. package/dist/LinearGenomeView/svgcomponents/SVGScalebar.d.ts +2 -1
  112. package/dist/LinearGenomeView/svgcomponents/SVGTrackLabel.d.ts +2 -1
  113. package/dist/LinearGenomeView/svgcomponents/SVGTracks.d.ts +2 -1
  114. package/dist/LinearGenomeView/util.d.ts +2 -2
  115. package/dist/index.d.ts +160 -134
  116. package/dist/index.js +6 -3
  117. package/dist/index.js.map +1 -1
  118. package/esm/BaseLinearDisplay/components/BaseLinearDisplay.d.ts +1 -1
  119. package/esm/BaseLinearDisplay/components/Block.d.ts +3 -3
  120. package/esm/BaseLinearDisplay/components/BlockMsg.d.ts +1 -1
  121. package/esm/BaseLinearDisplay/components/LinearBlocks.d.ts +3 -2
  122. package/esm/BaseLinearDisplay/components/TooLargeMessage.d.ts +2 -1
  123. package/esm/BaseLinearDisplay/components/Tooltip.d.ts +2 -1
  124. package/esm/BaseLinearDisplay/index.d.ts +5 -2
  125. package/esm/BaseLinearDisplay/index.js +3 -0
  126. package/esm/BaseLinearDisplay/index.js.map +1 -1
  127. package/esm/BaseLinearDisplay/models/BaseLinearDisplayModel.d.ts +62 -142
  128. package/esm/BaseLinearDisplay/models/BaseLinearDisplayModel.js +36 -334
  129. package/esm/BaseLinearDisplay/models/BaseLinearDisplayModel.js.map +1 -1
  130. package/esm/BaseLinearDisplay/models/FeatureDensityMixin.d.ts +99 -0
  131. package/esm/BaseLinearDisplay/models/FeatureDensityMixin.js +184 -0
  132. package/esm/BaseLinearDisplay/models/FeatureDensityMixin.js.map +1 -0
  133. package/esm/BaseLinearDisplay/models/TrackHeightMixin.d.ts +30 -0
  134. package/esm/BaseLinearDisplay/models/TrackHeightMixin.js +53 -0
  135. package/esm/BaseLinearDisplay/models/TrackHeightMixin.js.map +1 -0
  136. package/esm/BaseLinearDisplay/models/autorunFeatureDensityStats.d.ts +2 -0
  137. package/esm/BaseLinearDisplay/models/autorunFeatureDensityStats.js +39 -0
  138. package/esm/BaseLinearDisplay/models/autorunFeatureDensityStats.js.map +1 -0
  139. package/esm/BaseLinearDisplay/models/configSchema.js +1 -0
  140. package/esm/BaseLinearDisplay/models/configSchema.js.map +1 -1
  141. package/esm/BaseLinearDisplay/models/renderSvg.d.ts +8 -0
  142. package/esm/BaseLinearDisplay/models/renderSvg.js +54 -0
  143. package/esm/BaseLinearDisplay/models/renderSvg.js.map +1 -0
  144. package/esm/BaseLinearDisplay/models/serverSideRenderedBlock.js +20 -16
  145. package/esm/BaseLinearDisplay/models/serverSideRenderedBlock.js.map +1 -1
  146. package/esm/BasicTrack/configSchema.js +1 -0
  147. package/esm/BasicTrack/configSchema.js.map +1 -1
  148. package/esm/FeatureTrack/configSchema.d.ts +1 -3
  149. package/esm/FeatureTrack/configSchema.js +1 -0
  150. package/esm/FeatureTrack/configSchema.js.map +1 -1
  151. package/esm/LinearBareDisplay/configSchema.d.ts +1 -0
  152. package/esm/LinearBareDisplay/configSchema.js +1 -0
  153. package/esm/LinearBareDisplay/configSchema.js.map +1 -1
  154. package/esm/LinearBareDisplay/model.d.ts +52 -39
  155. package/esm/LinearBareDisplay/model.js +1 -0
  156. package/esm/LinearBareDisplay/model.js.map +1 -1
  157. package/esm/LinearBasicDisplay/components/SetMaxHeight.d.ts +2 -1
  158. package/esm/LinearBasicDisplay/configSchema.d.ts +1 -0
  159. package/esm/LinearBasicDisplay/configSchema.js +1 -0
  160. package/esm/LinearBasicDisplay/configSchema.js.map +1 -1
  161. package/esm/LinearBasicDisplay/model.d.ts +67 -66
  162. package/esm/LinearBasicDisplay/model.js +1 -0
  163. package/esm/LinearBasicDisplay/model.js.map +1 -1
  164. package/esm/LinearGenomeView/components/CenterLine.d.ts +2 -1
  165. package/esm/LinearGenomeView/components/Cytobands.d.ts +2 -1
  166. package/esm/LinearGenomeView/components/ExportSvgDialog.d.ts +2 -1
  167. package/esm/LinearGenomeView/components/GetSequenceDialog.d.ts +2 -1
  168. package/esm/LinearGenomeView/components/Gridlines.d.ts +2 -1
  169. package/esm/LinearGenomeView/components/Header.d.ts +2 -1
  170. package/esm/LinearGenomeView/components/ImportForm.d.ts +2 -1
  171. package/esm/LinearGenomeView/components/LinearGenomeView.d.ts +2 -1
  172. package/esm/LinearGenomeView/components/LinearGenomeView.js +4 -3
  173. package/esm/LinearGenomeView/components/LinearGenomeView.js.map +1 -1
  174. package/esm/LinearGenomeView/components/MiniControls.d.ts +3 -2
  175. package/esm/LinearGenomeView/components/MiniControls.js +20 -17
  176. package/esm/LinearGenomeView/components/MiniControls.js.map +1 -1
  177. package/esm/LinearGenomeView/components/OverviewRubberband.d.ts +1 -1
  178. package/esm/LinearGenomeView/components/OverviewScalebar.d.ts +2 -2
  179. package/esm/LinearGenomeView/components/OverviewScalebar.js +10 -4
  180. package/esm/LinearGenomeView/components/OverviewScalebar.js.map +1 -1
  181. package/esm/LinearGenomeView/components/RefNameAutocomplete/AutocompleteTextField.d.ts +10 -0
  182. package/esm/LinearGenomeView/components/RefNameAutocomplete/AutocompleteTextField.js +16 -0
  183. package/esm/LinearGenomeView/components/RefNameAutocomplete/AutocompleteTextField.js.map +1 -0
  184. package/esm/LinearGenomeView/components/RefNameAutocomplete/EndAdornment.d.ts +5 -0
  185. package/esm/LinearGenomeView/components/RefNameAutocomplete/EndAdornment.js +23 -0
  186. package/esm/LinearGenomeView/components/RefNameAutocomplete/EndAdornment.js.map +1 -0
  187. package/esm/LinearGenomeView/components/{HelpDialog.d.ts → RefNameAutocomplete/HelpDialog.d.ts} +2 -1
  188. package/esm/LinearGenomeView/components/RefNameAutocomplete/HelpDialog.js.map +1 -0
  189. package/esm/LinearGenomeView/components/RefNameAutocomplete/index.d.ts +18 -0
  190. package/esm/LinearGenomeView/components/RefNameAutocomplete/index.js +83 -0
  191. package/esm/LinearGenomeView/components/RefNameAutocomplete/index.js.map +1 -0
  192. package/esm/LinearGenomeView/components/RefNameAutocomplete/util.d.ts +12 -0
  193. package/esm/LinearGenomeView/components/RefNameAutocomplete/util.js +50 -0
  194. package/esm/LinearGenomeView/components/RefNameAutocomplete/util.js.map +1 -0
  195. package/esm/LinearGenomeView/components/Rubberband.d.ts +1 -1
  196. package/esm/LinearGenomeView/components/RubberbandSpan.d.ts +2 -1
  197. package/esm/LinearGenomeView/components/SearchBox.d.ts +2 -1
  198. package/esm/LinearGenomeView/components/SearchResultsDialog.d.ts +2 -1
  199. package/esm/LinearGenomeView/components/SearchResultsTable.d.ts +2 -1
  200. package/esm/LinearGenomeView/components/SequenceSearchDialog.d.ts +2 -1
  201. package/esm/LinearGenomeView/components/TrackContainer.d.ts +3 -3
  202. package/esm/LinearGenomeView/components/TrackContainer.js +13 -69
  203. package/esm/LinearGenomeView/components/TrackContainer.js.map +1 -1
  204. package/esm/LinearGenomeView/components/TrackLabel.js +6 -10
  205. package/esm/LinearGenomeView/components/TrackLabel.js.map +1 -1
  206. package/esm/LinearGenomeView/components/TrackLabelContainer.d.ts +9 -0
  207. package/esm/LinearGenomeView/components/TrackLabelContainer.js +27 -0
  208. package/esm/LinearGenomeView/components/TrackLabelContainer.js.map +1 -0
  209. package/esm/LinearGenomeView/components/TrackRenderingContainer.d.ts +10 -0
  210. package/esm/LinearGenomeView/components/TrackRenderingContainer.js +49 -0
  211. package/esm/LinearGenomeView/components/TrackRenderingContainer.js.map +1 -0
  212. package/esm/LinearGenomeView/components/TracksContainer.d.ts +1 -1
  213. package/esm/LinearGenomeView/components/TracksContainer.js +2 -2
  214. package/esm/LinearGenomeView/components/TracksContainer.js.map +1 -1
  215. package/esm/LinearGenomeView/components/VerticalGuide.d.ts +2 -1
  216. package/esm/LinearGenomeView/components/ZoomControls.d.ts +2 -1
  217. package/esm/LinearGenomeView/model.d.ts +13 -12
  218. package/esm/LinearGenomeView/model.js +21 -21
  219. package/esm/LinearGenomeView/model.js.map +1 -1
  220. package/esm/LinearGenomeView/svgcomponents/SVGBackground.d.ts +2 -1
  221. package/esm/LinearGenomeView/svgcomponents/SVGHeader.d.ts +3 -4
  222. package/esm/LinearGenomeView/svgcomponents/SVGHeader.js +7 -2
  223. package/esm/LinearGenomeView/svgcomponents/SVGHeader.js.map +1 -1
  224. package/esm/LinearGenomeView/svgcomponents/SVGLinearGenomeView.js +1 -1
  225. package/esm/LinearGenomeView/svgcomponents/SVGLinearGenomeView.js.map +1 -1
  226. package/esm/LinearGenomeView/svgcomponents/SVGRegionSeparators.d.ts +2 -1
  227. package/esm/LinearGenomeView/svgcomponents/SVGRuler.d.ts +2 -1
  228. package/esm/LinearGenomeView/svgcomponents/SVGScalebar.d.ts +2 -1
  229. package/esm/LinearGenomeView/svgcomponents/SVGTrackLabel.d.ts +2 -1
  230. package/esm/LinearGenomeView/svgcomponents/SVGTracks.d.ts +2 -1
  231. package/esm/LinearGenomeView/util.d.ts +2 -2
  232. package/esm/index.d.ts +160 -134
  233. package/esm/index.js +1 -1
  234. package/esm/index.js.map +1 -1
  235. package/package.json +2 -2
  236. package/src/BaseLinearDisplay/index.ts +5 -1
  237. package/src/BaseLinearDisplay/models/BaseLinearDisplayModel.tsx +46 -407
  238. package/src/BaseLinearDisplay/models/FeatureDensityMixin.tsx +213 -0
  239. package/src/BaseLinearDisplay/models/TrackHeightMixin.tsx +59 -0
  240. package/src/BaseLinearDisplay/models/autorunFeatureDensityStats.ts +46 -0
  241. package/src/BaseLinearDisplay/models/configSchema.ts +1 -0
  242. package/src/BaseLinearDisplay/models/renderSvg.tsx +101 -0
  243. package/src/BaseLinearDisplay/models/serverSideRenderedBlock.ts +21 -19
  244. package/src/BasicTrack/configSchema.ts +1 -0
  245. package/src/FeatureTrack/configSchema.ts +1 -0
  246. package/src/LinearBareDisplay/configSchema.ts +1 -0
  247. package/src/LinearBareDisplay/model.ts +1 -0
  248. package/src/LinearBasicDisplay/configSchema.ts +1 -0
  249. package/src/LinearBasicDisplay/model.ts +1 -0
  250. package/src/LinearGenomeView/components/LinearGenomeView.test.tsx +3 -3
  251. package/src/LinearGenomeView/components/LinearGenomeView.tsx +6 -3
  252. package/src/LinearGenomeView/components/MiniControls.tsx +37 -38
  253. package/src/LinearGenomeView/components/OverviewScalebar.tsx +11 -5
  254. package/src/LinearGenomeView/components/RefNameAutocomplete/AutocompleteTextField.tsx +53 -0
  255. package/src/LinearGenomeView/components/RefNameAutocomplete/EndAdornment.tsx +44 -0
  256. package/src/LinearGenomeView/components/RefNameAutocomplete/index.tsx +160 -0
  257. package/src/LinearGenomeView/components/RefNameAutocomplete/util.ts +65 -0
  258. package/src/LinearGenomeView/components/TrackContainer.tsx +16 -104
  259. package/src/LinearGenomeView/components/TrackLabel.tsx +7 -27
  260. package/src/LinearGenomeView/components/TrackLabelContainer.tsx +48 -0
  261. package/src/LinearGenomeView/components/TrackRenderingContainer.tsx +96 -0
  262. package/src/LinearGenomeView/components/TracksContainer.tsx +2 -2
  263. package/src/LinearGenomeView/components/__snapshots__/LinearGenomeView.test.tsx.snap +3 -3
  264. package/src/LinearGenomeView/model.ts +29 -28
  265. package/src/LinearGenomeView/svgcomponents/SVGHeader.tsx +8 -6
  266. package/src/LinearGenomeView/svgcomponents/SVGLinearGenomeView.tsx +1 -1
  267. package/src/index.ts +11 -5
  268. package/dist/LinearGenomeView/components/HelpDialog.js.map +0 -1
  269. package/dist/LinearGenomeView/components/RefNameAutocomplete.d.ts +0 -23
  270. package/dist/LinearGenomeView/components/RefNameAutocomplete.js +0 -189
  271. package/dist/LinearGenomeView/components/RefNameAutocomplete.js.map +0 -1
  272. package/esm/LinearGenomeView/components/HelpDialog.js.map +0 -1
  273. package/esm/LinearGenomeView/components/RefNameAutocomplete.d.ts +0 -23
  274. package/esm/LinearGenomeView/components/RefNameAutocomplete.js +0 -161
  275. package/esm/LinearGenomeView/components/RefNameAutocomplete.js.map +0 -1
  276. package/src/LinearGenomeView/components/RefNameAutocomplete.tsx +0 -321
  277. /package/dist/LinearGenomeView/components/{HelpDialog.js → RefNameAutocomplete/HelpDialog.js} +0 -0
  278. /package/esm/LinearGenomeView/components/{HelpDialog.js → RefNameAutocomplete/HelpDialog.js} +0 -0
  279. /package/src/LinearGenomeView/components/{HelpDialog.tsx → RefNameAutocomplete/HelpDialog.tsx} +0 -0
package/esm/index.js CHANGED
@@ -44,7 +44,7 @@ export default class LinearGenomeViewPlugin extends Plugin {
44
44
  }
45
45
  }
46
46
  export { configSchemaFactory as linearBareDisplayConfigSchemaFactory } from './LinearBareDisplay';
47
- export { BlockMsg, baseLinearDisplayConfigSchema, BaseLinearDisplayComponent, BaseLinearDisplay, } from './BaseLinearDisplay';
47
+ export { baseLinearDisplayConfigSchema, BaseLinearDisplay, BlockMsg, BaseLinearDisplayComponent, TrackHeightMixin, FeatureDensityMixin, TooLargeMessage, } from './BaseLinearDisplay';
48
48
  export { RefNameAutocomplete, SearchBox, } from './LinearGenomeView';
49
49
  export { renderToSvg, SVGTracks, totalHeight, SVGRuler, } from './LinearGenomeView/svgcomponents/SVGLinearGenomeView';
50
50
  export { configSchema as linearBasicDisplayConfigSchemaFactory, modelFactory as linearBasicDisplayModelFactory, } from './LinearBasicDisplay';
package/esm/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,sBAAsB,CAAA;AAEzC,OAAO,EAAwB,qBAAqB,EAAE,MAAM,oBAAoB,CAAA;AAEhF,QAAQ;AACR,OAAO,aAAa,MAAM,+BAA+B,CAAA;AAEzD,SAAS;AACT,OAAO,EACL,iBAAiB,EACjB,0BAA0B,EAC1B,6BAA6B,GAC9B,MAAM,qBAAqB,CAAA;AAC5B,OAAO,kBAAkB,MAAM,qBAAqB,CAAA;AACpD,OAAO,iBAAiB,EAAE,EACxB,SAAS,EACT,YAAY,EACZ,gBAAgB,GACjB,MAAM,oBAAoB,CAAA;AAE3B,OAAO,mBAAmB,MAAM,sBAAsB,CAAA;AAEtD,OAAO,aAAa,MAAM,gBAAgB,CAAA;AAC1C,OAAO,WAAW,MAAM,cAAc,CAAA;AACtC,OAAO,uBAAuB,MAAM,0BAA0B,CAAA;AAE9D,MAAM,CAAC,OAAO,OAAO,sBAAuB,SAAQ,MAAM;IAA1D;;QACE,SAAI,GAAG,wBAAwB,CAAA;QAE/B,YAAO,GAAG;YACR,0BAA0B;YAC1B,iBAAiB;YACjB,6BAA6B;YAC7B,SAAS;YACT,YAAY;YACZ,gBAAgB;SACjB,CAAA;IAsBH,CAAC;IApBC,OAAO,CAAC,aAA4B;QAClC,aAAa,CAAC,aAAa,CAAC,CAAA;QAC5B,WAAW,CAAC,aAAa,CAAC,CAAA;QAC1B,mBAAmB,CAAC,aAAa,CAAC,CAAA;QAClC,iBAAiB,CAAC,aAAa,CAAC,CAAA;QAChC,kBAAkB,CAAC,aAAa,CAAC,CAAA;QACjC,uBAAuB,CAAC,aAAa,CAAC,CAAA;IACxC,CAAC;IAED,SAAS,CAAC,aAA4B;QACpC,IAAI,qBAAqB,CAAC,aAAa,CAAC,SAAS,CAAC,EAAE;YAClD,aAAa,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC,KAAK,CAAC,EAAE;gBAC/C,KAAK,EAAE,oBAAoB;gBAC3B,IAAI,EAAE,aAAa;gBACnB,OAAO,EAAE,CAAC,OAA6B,EAAE,EAAE;oBACzC,OAAO,CAAC,OAAO,CAAC,kBAAkB,EAAE,EAAE,CAAC,CAAA;gBACzC,CAAC;aACF,CAAC,CAAA;SACH;IACH,CAAC;CACF;AAID,OAAO,EAAE,mBAAmB,IAAI,oCAAoC,EAAE,MAAM,qBAAqB,CAAA;AACjG,OAAO,EACL,QAAQ,EACR,6BAA6B,EAC7B,0BAA0B,EAC1B,iBAAiB,GAClB,MAAM,qBAAqB,CAAA;AAC5B,OAAO,EAEL,mBAAmB,EAEnB,SAAS,GACV,MAAM,oBAAoB,CAAA;AAC3B,OAAO,EACL,WAAW,EACX,SAAS,EACT,WAAW,EACX,QAAQ,GACT,MAAM,sDAAsD,CAAA;AAC7D,OAAO,EACL,YAAY,IAAI,qCAAqC,EACrD,YAAY,IAAI,8BAA8B,GAC/C,MAAM,sBAAsB,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,sBAAsB,CAAA;AAEzC,OAAO,EAAwB,qBAAqB,EAAE,MAAM,oBAAoB,CAAA;AAEhF,QAAQ;AACR,OAAO,aAAa,MAAM,+BAA+B,CAAA;AAEzD,SAAS;AACT,OAAO,EACL,iBAAiB,EACjB,0BAA0B,EAC1B,6BAA6B,GAC9B,MAAM,qBAAqB,CAAA;AAC5B,OAAO,kBAAkB,MAAM,qBAAqB,CAAA;AACpD,OAAO,iBAAiB,EAAE,EACxB,SAAS,EACT,YAAY,EACZ,gBAAgB,GACjB,MAAM,oBAAoB,CAAA;AAE3B,OAAO,mBAAmB,MAAM,sBAAsB,CAAA;AACtD,OAAO,aAAa,MAAM,gBAAgB,CAAA;AAC1C,OAAO,WAAW,MAAM,cAAc,CAAA;AACtC,OAAO,uBAAuB,MAAM,0BAA0B,CAAA;AAE9D,MAAM,CAAC,OAAO,OAAO,sBAAuB,SAAQ,MAAM;IAA1D;;QACE,SAAI,GAAG,wBAAwB,CAAA;QAE/B,YAAO,GAAG;YACR,0BAA0B;YAC1B,iBAAiB;YACjB,6BAA6B;YAC7B,SAAS;YACT,YAAY;YACZ,gBAAgB;SACjB,CAAA;IAsBH,CAAC;IApBC,OAAO,CAAC,aAA4B;QAClC,aAAa,CAAC,aAAa,CAAC,CAAA;QAC5B,WAAW,CAAC,aAAa,CAAC,CAAA;QAC1B,mBAAmB,CAAC,aAAa,CAAC,CAAA;QAClC,iBAAiB,CAAC,aAAa,CAAC,CAAA;QAChC,kBAAkB,CAAC,aAAa,CAAC,CAAA;QACjC,uBAAuB,CAAC,aAAa,CAAC,CAAA;IACxC,CAAC;IAED,SAAS,CAAC,aAA4B;QACpC,IAAI,qBAAqB,CAAC,aAAa,CAAC,SAAS,CAAC,EAAE;YAClD,aAAa,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC,KAAK,CAAC,EAAE;gBAC/C,KAAK,EAAE,oBAAoB;gBAC3B,IAAI,EAAE,aAAa;gBACnB,OAAO,EAAE,CAAC,OAA6B,EAAE,EAAE;oBACzC,OAAO,CAAC,OAAO,CAAC,kBAAkB,EAAE,EAAE,CAAC,CAAA;gBACzC,CAAC;aACF,CAAC,CAAA;SACH;IACH,CAAC;CACF;AAQD,OAAO,EAAE,mBAAmB,IAAI,oCAAoC,EAAE,MAAM,qBAAqB,CAAA;AACjG,OAAO,EACL,6BAA6B,EAC7B,iBAAiB,EACjB,QAAQ,EACR,0BAA0B,EAC1B,gBAAgB,EAChB,mBAAmB,EACnB,eAAe,GAChB,MAAM,qBAAqB,CAAA;AAC5B,OAAO,EAGL,mBAAmB,EACnB,SAAS,GACV,MAAM,oBAAoB,CAAA;AAC3B,OAAO,EACL,WAAW,EACX,SAAS,EACT,WAAW,EACX,QAAQ,GACT,MAAM,sDAAsD,CAAA;AAC7D,OAAO,EACL,YAAY,IAAI,qCAAqC,EACrD,YAAY,IAAI,8BAA8B,GAC/C,MAAM,sBAAsB,CAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@jbrowse/plugin-linear-genome-view",
3
- "version": "2.5.0",
3
+ "version": "2.6.1",
4
4
  "description": "JBrowse 2 linear genome view",
5
5
  "keywords": [
6
6
  "jbrowse",
@@ -66,5 +66,5 @@
66
66
  "access": "public"
67
67
  },
68
68
  "module": "esm/index.js",
69
- "gitHead": "d1ca073996d008f0fe9a52f7c1a47ae649dcfdaf"
69
+ "gitHead": "1cbe7ba097fb2d2763c776e5e429e4670cdd583c"
70
70
  }
@@ -1,7 +1,8 @@
1
1
  export { default as baseLinearDisplayConfigSchema } from './models/configSchema'
2
- export { BaseLinearDisplay } from './models/BaseLinearDisplayModel'
3
2
  export type { BlockModel } from './models/serverSideRenderedBlock'
3
+ export { BaseLinearDisplay } from './models/BaseLinearDisplayModel'
4
4
  export type {
5
+ ExportSvgDisplayOptions,
5
6
  BaseLinearDisplayModel,
6
7
  BaseLinearDisplayStateModel,
7
8
  } from './models/BaseLinearDisplayModel'
@@ -10,3 +11,6 @@ export {
10
11
  Tooltip,
11
12
  BlockMsg,
12
13
  } from './components/BaseLinearDisplay'
14
+ export { default as TrackHeightMixin } from './models/TrackHeightMixin'
15
+ export { default as FeatureDensityMixin } from './models/FeatureDensityMixin'
16
+ export { default as TooLargeMessage } from './components/TooLargeMessage'
@@ -2,23 +2,18 @@
2
2
  import React from 'react'
3
3
  import { ThemeOptions } from '@mui/material'
4
4
  import { BaseDisplay } from '@jbrowse/core/pluggableElementTypes/models'
5
- import { ConfigurationReference, getConf } from '@jbrowse/core/configuration'
5
+ import { ConfigurationReference } from '@jbrowse/core/configuration'
6
6
  import { MenuItem } from '@jbrowse/core/ui'
7
7
  import {
8
- isAbortException,
9
8
  getContainingView,
10
9
  getContainingTrack,
11
10
  getSession,
12
- getViewParams,
13
11
  isSelectionContainer,
14
12
  isSessionModelWithWidgets,
15
13
  isFeature,
16
14
  Feature,
17
- ReactRendering,
18
15
  } from '@jbrowse/core/util'
19
- import { FeatureDensityStats } from '@jbrowse/core/data_adapters/BaseAdapter'
20
16
  import { BaseBlock } from '@jbrowse/core/util/blockTypes'
21
- import { Region } from '@jbrowse/core/util/types'
22
17
  import CompositeMap from '@jbrowse/core/util/compositeMap'
23
18
  import { getParentRenderProps } from '@jbrowse/core/util/tracks'
24
19
  import { autorun } from 'mobx'
@@ -30,10 +25,11 @@ import MenuOpenIcon from '@mui/icons-material/MenuOpen'
30
25
  // locals
31
26
  import { LinearGenomeViewModel, ExportSvgOptions } from '../../LinearGenomeView'
32
27
  import { Tooltip } from '../components/BaseLinearDisplay'
33
- import TooLargeMessage from '../components/TooLargeMessage'
34
- import BlockState, { renderBlockData } from './serverSideRenderedBlock'
35
- import { getId, getDisplayStr, getFeatureDensityStatsPre } from './util'
28
+ import BlockState from './serverSideRenderedBlock'
36
29
  import configSchema from './configSchema'
30
+ import renderBaseLinearDisplaySvg from './renderSvg'
31
+ import TrackHeightMixin from './TrackHeightMixin'
32
+ import FeatureDensityMixin from './FeatureDensityMixin'
37
33
 
38
34
  type LGV = LinearGenomeViewModel
39
35
 
@@ -47,10 +43,14 @@ export interface Layout {
47
43
 
48
44
  type LayoutRecord = [number, number, number, number]
49
45
 
50
- const minDisplayHeight = 20
46
+ export interface ExportSvgDisplayOptions extends ExportSvgOptions {
47
+ overrideHeight: number
48
+ theme: ThemeOptions
49
+ }
51
50
 
52
51
  /**
53
52
  * #stateModel BaseLinearDisplay
53
+ * #category display
54
54
  * extends `BaseDisplay`
55
55
  */
56
56
  function stateModelFactory() {
@@ -58,30 +58,14 @@ function stateModelFactory() {
58
58
  .compose(
59
59
  'BaseLinearDisplay',
60
60
  BaseDisplay,
61
+ TrackHeightMixin(),
62
+ FeatureDensityMixin(),
61
63
  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
64
  /**
73
65
  * #property
74
66
  * updated via autorun
75
67
  */
76
68
  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
69
  /**
86
70
  * #property
87
71
  */
@@ -89,20 +73,10 @@ function stateModelFactory() {
89
73
  }),
90
74
  )
91
75
  .volatile(() => ({
92
- currBpPerPx: 0,
93
- scrollTop: 0,
94
- message: '',
95
76
  featureIdUnderMouse: undefined as undefined | string,
96
77
  contextMenuFeature: undefined as undefined | Feature,
97
- featureDensityStatsP: undefined as
98
- | undefined
99
- | Promise<FeatureDensityStats>,
100
- featureDensityStats: undefined as undefined | FeatureDensityStats,
101
78
  }))
102
79
  .views(self => ({
103
- get height() {
104
- return self.heightPreConfig ?? (getConf(self, 'height') as number)
105
- },
106
80
  /**
107
81
  * #getter
108
82
  */
@@ -113,12 +87,11 @@ function stateModelFactory() {
113
87
  * #getter
114
88
  */
115
89
  get blockDefinitions() {
116
- const { blockType } = this
117
90
  const view = getContainingView(self) as LGV
118
91
  if (!view.initialized) {
119
92
  throw new Error('view not initialized yet')
120
93
  }
121
- return view[blockType]
94
+ return view[this.blockType]
122
95
  },
123
96
  }))
124
97
  .views(self => ({
@@ -217,152 +190,9 @@ function stateModelFactory() {
217
190
  })
218
191
  return ret
219
192
  },
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
193
  }))
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
194
 
195
+ .actions(self => ({
366
196
  /**
367
197
  * #action
368
198
  */
@@ -375,12 +205,7 @@ function stateModelFactory() {
375
205
  }),
376
206
  )
377
207
  },
378
- /**
379
- * #action
380
- */
381
- setCurrBpPerPx(n: number) {
382
- self.currBpPerPx = n
383
- },
208
+
384
209
  /**
385
210
  * #action
386
211
  */
@@ -421,12 +246,7 @@ function stateModelFactory() {
421
246
  setFeatureIdUnderMouse(feature?: string) {
422
247
  self.featureIdUnderMouse = feature
423
248
  },
424
- /**
425
- * #action
426
- */
427
- reload() {
428
- ;[...self.blockState.values()].map(val => val.doReload())
429
- },
249
+
430
250
  /**
431
251
  * #action
432
252
  */
@@ -434,45 +254,7 @@ function stateModelFactory() {
434
254
  self.contextMenuFeature = feature
435
255
  },
436
256
  }))
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
257
 
471
- return req && req > max
472
- ? `Requested too much data (${getDisplayStr(req)})`
473
- : ''
474
- },
475
- }))
476
258
  .actions(self => {
477
259
  const { reload: superReload } = self
478
260
 
@@ -482,99 +264,15 @@ function stateModelFactory() {
482
264
  */
483
265
  async reload() {
484
266
  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
- }
267
+ self.setCurrStatsBpPerPx(0)
268
+ self.clearFeatureDensityStats()
269
+ ;[...self.blockState.values()].map(val => val.doReload())
270
+ superReload()
504
271
  },
505
272
  }
506
273
  })
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
274
 
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
275
  .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
276
  /**
579
277
  * #method
580
278
  */
@@ -606,11 +304,9 @@ function stateModelFactory() {
606
304
  * #method
607
305
  */
608
306
  renderProps() {
609
- const view = getContainingView(self) as LGV
610
307
  return {
611
308
  ...getParentRenderProps(self),
612
- notReady:
613
- self.currBpPerPx !== view.bpPerPx || !self.featureDensityStatsReady,
309
+ notReady: !self.featureDensityStatsReady,
614
310
  rpcDriverName: self.rpcDriverName,
615
311
  displayModel: self,
616
312
  onFeatureClick(_: unknown, featureId?: string) {
@@ -657,91 +353,34 @@ function stateModelFactory() {
657
353
  /**
658
354
  * #method
659
355
  */
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
356
+ async renderSvg(opts: ExportSvgDisplayOptions) {
357
+ return renderBaseLinearDisplaySvg(self as BaseLinearDisplayModel, opts)
358
+ },
359
+ afterAttach() {
360
+ // watch the parent's blocks to update our block state when they change,
361
+ // then we recreate the blocks on our own model (creating and deleting to
362
+ // match the parent blocks)
363
+ addDisposer(
364
+ self,
365
+ autorun(() => {
366
+ const blocksPresent: { [key: string]: boolean } = {}
367
+ const view = getContainingView(self) as LGV
368
+ if (!view.initialized) {
369
+ return
698
370
  }
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
371
+ self.blockDefinitions.contentBlocks.forEach(block => {
372
+ blocksPresent[block.key] = true
373
+ if (!self.blockState.has(block.key)) {
374
+ self.addBlock(block.key, block)
375
+ }
376
+ })
377
+ self.blockState.forEach((_, key) => {
378
+ if (!blocksPresent[key]) {
379
+ self.deleteBlock(key)
380
+ }
381
+ })
713
382
  }),
714
383
  )
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
384
  },
746
385
  }))
747
386
  .preProcessSnapshot(snap => {