@jbrowse/plugin-linear-genome-view 1.7.10 → 2.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (271) hide show
  1. package/dist/BaseLinearDisplay/components/BaseLinearDisplay.js +119 -139
  2. package/dist/BaseLinearDisplay/components/BaseLinearDisplay.js.map +1 -0
  3. package/dist/BaseLinearDisplay/components/Block.js +53 -74
  4. package/dist/BaseLinearDisplay/components/Block.js.map +1 -0
  5. package/dist/BaseLinearDisplay/components/LinearBlocks.d.ts +11 -1
  6. package/dist/BaseLinearDisplay/components/LinearBlocks.js +64 -103
  7. package/dist/BaseLinearDisplay/components/LinearBlocks.js.map +1 -0
  8. package/dist/BaseLinearDisplay/components/ServerSideRenderedBlockContent.js +145 -175
  9. package/dist/BaseLinearDisplay/components/ServerSideRenderedBlockContent.js.map +1 -0
  10. package/dist/BaseLinearDisplay/components/Tooltip.js +109 -116
  11. package/dist/BaseLinearDisplay/components/Tooltip.js.map +1 -0
  12. package/dist/BaseLinearDisplay/index.js +13 -40
  13. package/dist/BaseLinearDisplay/index.js.map +1 -0
  14. package/dist/BaseLinearDisplay/models/BaseLinearDisplayModel.d.ts +20 -15
  15. package/dist/BaseLinearDisplay/models/BaseLinearDisplayModel.js +605 -684
  16. package/dist/BaseLinearDisplay/models/BaseLinearDisplayModel.js.map +1 -0
  17. package/dist/BaseLinearDisplay/models/baseLinearDisplayConfigSchema.js +15 -22
  18. package/dist/BaseLinearDisplay/models/baseLinearDisplayConfigSchema.js.map +1 -0
  19. package/dist/BaseLinearDisplay/models/serverSideRenderedBlock.d.ts +7 -8
  20. package/dist/BaseLinearDisplay/models/serverSideRenderedBlock.js +266 -312
  21. package/dist/BaseLinearDisplay/models/serverSideRenderedBlock.js.map +1 -0
  22. package/dist/LinearBareDisplay/configSchema.js +11 -17
  23. package/dist/LinearBareDisplay/configSchema.js.map +1 -0
  24. package/dist/LinearBareDisplay/index.js +7 -20
  25. package/dist/LinearBareDisplay/index.js.map +1 -0
  26. package/dist/LinearBareDisplay/model.d.ts +16 -14
  27. package/dist/LinearBareDisplay/model.js +36 -42
  28. package/dist/LinearBareDisplay/model.js.map +1 -0
  29. package/dist/LinearBasicDisplay/components/SetMaxHeight.d.ts +1 -1
  30. package/dist/LinearBasicDisplay/components/SetMaxHeight.js +76 -85
  31. package/dist/LinearBasicDisplay/components/SetMaxHeight.js.map +1 -0
  32. package/dist/LinearBasicDisplay/configSchema.js +15 -23
  33. package/dist/LinearBasicDisplay/configSchema.js.map +1 -0
  34. package/dist/LinearBasicDisplay/index.js +10 -22
  35. package/dist/LinearBasicDisplay/index.js.map +1 -0
  36. package/dist/LinearBasicDisplay/model.d.ts +20 -15
  37. package/dist/LinearBasicDisplay/model.js +180 -159
  38. package/dist/LinearBasicDisplay/model.js.map +1 -0
  39. package/dist/LinearGenomeView/components/CenterLine.d.ts +2 -8
  40. package/dist/LinearGenomeView/components/CenterLine.js +60 -74
  41. package/dist/LinearGenomeView/components/CenterLine.js.map +1 -0
  42. package/dist/LinearGenomeView/components/ExportSvgDialog.js +141 -141
  43. package/dist/LinearGenomeView/components/ExportSvgDialog.js.map +1 -0
  44. package/dist/LinearGenomeView/components/Gridlines.d.ts +8 -0
  45. package/dist/LinearGenomeView/components/Gridlines.js +78 -0
  46. package/dist/LinearGenomeView/components/Gridlines.js.map +1 -0
  47. package/dist/LinearGenomeView/components/Header.js +70 -126
  48. package/dist/LinearGenomeView/components/Header.js.map +1 -0
  49. package/dist/LinearGenomeView/components/HelpDialog.d.ts +0 -1
  50. package/dist/LinearGenomeView/components/HelpDialog.js +62 -44
  51. package/dist/LinearGenomeView/components/HelpDialog.js.map +1 -0
  52. package/dist/LinearGenomeView/components/ImportForm.js +223 -320
  53. package/dist/LinearGenomeView/components/ImportForm.js.map +1 -0
  54. package/dist/LinearGenomeView/components/LinearGenomeView.js +64 -124
  55. package/dist/LinearGenomeView/components/LinearGenomeView.js.map +1 -0
  56. package/dist/LinearGenomeView/components/LinearGenomeViewSvg.js +198 -337
  57. package/dist/LinearGenomeView/components/LinearGenomeViewSvg.js.map +1 -0
  58. package/dist/LinearGenomeView/components/MiniControls.js +64 -78
  59. package/dist/LinearGenomeView/components/MiniControls.js.map +1 -0
  60. package/dist/LinearGenomeView/components/OverviewRubberBand.js +229 -293
  61. package/dist/LinearGenomeView/components/OverviewRubberBand.js.map +1 -0
  62. package/dist/LinearGenomeView/components/OverviewScaleBar.d.ts +24 -8
  63. package/dist/LinearGenomeView/components/OverviewScaleBar.js +277 -365
  64. package/dist/LinearGenomeView/components/OverviewScaleBar.js.map +1 -0
  65. package/dist/LinearGenomeView/components/RefNameAutocomplete.d.ts +1 -1
  66. package/dist/LinearGenomeView/components/RefNameAutocomplete.js +237 -324
  67. package/dist/LinearGenomeView/components/RefNameAutocomplete.js.map +1 -0
  68. package/dist/LinearGenomeView/components/RubberBand.js +228 -296
  69. package/dist/LinearGenomeView/components/RubberBand.js.map +1 -0
  70. package/dist/LinearGenomeView/components/Ruler.js +45 -90
  71. package/dist/LinearGenomeView/components/Ruler.js.map +1 -0
  72. package/dist/LinearGenomeView/components/ScaleBar.d.ts +8 -403
  73. package/dist/LinearGenomeView/components/ScaleBar.js +121 -172
  74. package/dist/LinearGenomeView/components/ScaleBar.js.map +1 -0
  75. package/dist/LinearGenomeView/components/SearchBox.js +158 -205
  76. package/dist/LinearGenomeView/components/SearchBox.js.map +1 -0
  77. package/dist/LinearGenomeView/components/SearchResultsDialog.d.ts +0 -1
  78. package/dist/LinearGenomeView/components/SearchResultsDialog.js +105 -150
  79. package/dist/LinearGenomeView/components/SearchResultsDialog.js.map +1 -0
  80. package/dist/LinearGenomeView/components/SequenceDialog.js +219 -272
  81. package/dist/LinearGenomeView/components/SequenceDialog.js.map +1 -0
  82. package/dist/LinearGenomeView/components/TrackContainer.js +116 -156
  83. package/dist/LinearGenomeView/components/TrackContainer.js.map +1 -0
  84. package/dist/LinearGenomeView/components/TrackLabel.d.ts +6 -42
  85. package/dist/LinearGenomeView/components/TrackLabel.js +115 -134
  86. package/dist/LinearGenomeView/components/TrackLabel.js.map +1 -0
  87. package/dist/LinearGenomeView/components/TracksContainer.d.ts +1 -1
  88. package/dist/LinearGenomeView/components/TracksContainer.js +172 -199
  89. package/dist/LinearGenomeView/components/TracksContainer.js.map +1 -0
  90. package/dist/LinearGenomeView/components/ZoomControls.js +72 -87
  91. package/dist/LinearGenomeView/components/ZoomControls.js.map +1 -0
  92. package/dist/LinearGenomeView/components/util.d.ts +12 -0
  93. package/dist/LinearGenomeView/components/util.js +95 -13
  94. package/dist/LinearGenomeView/components/util.js.map +1 -0
  95. package/dist/LinearGenomeView/index.d.ts +64 -77
  96. package/dist/LinearGenomeView/index.js +1035 -1412
  97. package/dist/LinearGenomeView/index.js.map +1 -0
  98. package/dist/LinearGenomeView/util.js +76 -83
  99. package/dist/LinearGenomeView/util.js.map +1 -0
  100. package/dist/index.d.ts +101 -51
  101. package/dist/index.js +225 -295
  102. package/dist/index.js.map +1 -0
  103. package/esm/BaseLinearDisplay/components/BaseLinearDisplay.d.ts +9 -0
  104. package/esm/BaseLinearDisplay/components/BaseLinearDisplay.js +68 -0
  105. package/esm/BaseLinearDisplay/components/BaseLinearDisplay.js.map +1 -0
  106. package/esm/BaseLinearDisplay/components/Block.d.ts +15 -0
  107. package/esm/BaseLinearDisplay/components/Block.js +46 -0
  108. package/esm/BaseLinearDisplay/components/Block.js.map +1 -0
  109. package/esm/BaseLinearDisplay/components/LinearBlocks.d.ts +22 -0
  110. package/esm/BaseLinearDisplay/components/LinearBlocks.js +62 -0
  111. package/esm/BaseLinearDisplay/components/LinearBlocks.js.map +1 -0
  112. package/esm/BaseLinearDisplay/components/ServerSideRenderedBlockContent.d.ts +4 -0
  113. package/esm/BaseLinearDisplay/components/ServerSideRenderedBlockContent.js +113 -0
  114. package/esm/BaseLinearDisplay/components/ServerSideRenderedBlockContent.js.map +1 -0
  115. package/esm/BaseLinearDisplay/components/Tooltip.d.ts +8 -0
  116. package/esm/BaseLinearDisplay/components/Tooltip.js +64 -0
  117. package/esm/BaseLinearDisplay/components/Tooltip.js.map +1 -0
  118. package/esm/BaseLinearDisplay/index.d.ts +5 -0
  119. package/esm/BaseLinearDisplay/index.js +4 -0
  120. package/esm/BaseLinearDisplay/index.js.map +1 -0
  121. package/esm/BaseLinearDisplay/models/BaseLinearDisplayModel.d.ts +232 -0
  122. package/esm/BaseLinearDisplay/models/BaseLinearDisplayModel.js +541 -0
  123. package/esm/BaseLinearDisplay/models/BaseLinearDisplayModel.js.map +1 -0
  124. package/esm/BaseLinearDisplay/models/baseLinearDisplayConfigSchema.d.ts +1 -0
  125. package/esm/BaseLinearDisplay/models/baseLinearDisplayConfigSchema.js +14 -0
  126. package/esm/BaseLinearDisplay/models/baseLinearDisplayConfigSchema.js.map +1 -0
  127. package/esm/BaseLinearDisplay/models/serverSideRenderedBlock.d.ts +96 -0
  128. package/esm/BaseLinearDisplay/models/serverSideRenderedBlock.js +225 -0
  129. package/esm/BaseLinearDisplay/models/serverSideRenderedBlock.js.map +1 -0
  130. package/esm/LinearBareDisplay/configSchema.d.ts +2 -0
  131. package/esm/LinearBareDisplay/configSchema.js +9 -0
  132. package/esm/LinearBareDisplay/configSchema.js.map +1 -0
  133. package/esm/LinearBareDisplay/index.d.ts +2 -0
  134. package/esm/LinearBareDisplay/index.js +3 -0
  135. package/esm/LinearBareDisplay/index.js.map +1 -0
  136. package/esm/LinearBareDisplay/model.d.ts +194 -0
  137. package/esm/LinearBareDisplay/model.js +28 -0
  138. package/esm/LinearBareDisplay/model.js.map +1 -0
  139. package/esm/LinearBasicDisplay/components/SetMaxHeight.d.ts +10 -0
  140. package/esm/LinearBasicDisplay/components/SetMaxHeight.js +40 -0
  141. package/esm/LinearBasicDisplay/components/SetMaxHeight.js.map +1 -0
  142. package/esm/LinearBasicDisplay/configSchema.d.ts +2 -0
  143. package/esm/LinearBasicDisplay/configSchema.js +14 -0
  144. package/esm/LinearBasicDisplay/configSchema.js.map +1 -0
  145. package/esm/LinearBasicDisplay/index.d.ts +2 -0
  146. package/esm/LinearBasicDisplay/index.js +3 -0
  147. package/esm/LinearBasicDisplay/index.js.map +1 -0
  148. package/esm/LinearBasicDisplay/model.d.ts +218 -0
  149. package/esm/LinearBasicDisplay/model.js +127 -0
  150. package/esm/LinearBasicDisplay/model.js.map +1 -0
  151. package/esm/LinearGenomeView/components/CenterLine.d.ts +8 -0
  152. package/esm/LinearGenomeView/components/CenterLine.js +40 -0
  153. package/esm/LinearGenomeView/components/CenterLine.js.map +1 -0
  154. package/esm/LinearGenomeView/components/ExportSvgDialog.d.ts +6 -0
  155. package/esm/LinearGenomeView/components/ExportSvgDialog.js +52 -0
  156. package/esm/LinearGenomeView/components/ExportSvgDialog.js.map +1 -0
  157. package/esm/LinearGenomeView/components/Gridlines.d.ts +8 -0
  158. package/esm/LinearGenomeView/components/Gridlines.js +71 -0
  159. package/esm/LinearGenomeView/components/Gridlines.js.map +1 -0
  160. package/esm/LinearGenomeView/components/Header.d.ts +7 -0
  161. package/esm/LinearGenomeView/components/Header.js +81 -0
  162. package/esm/LinearGenomeView/components/Header.js.map +1 -0
  163. package/esm/LinearGenomeView/components/HelpDialog.d.ts +4 -0
  164. package/esm/LinearGenomeView/components/HelpDialog.js +58 -0
  165. package/esm/LinearGenomeView/components/HelpDialog.js.map +1 -0
  166. package/esm/LinearGenomeView/components/ImportForm.d.ts +7 -0
  167. package/esm/LinearGenomeView/components/ImportForm.js +141 -0
  168. package/esm/LinearGenomeView/components/ImportForm.js.map +1 -0
  169. package/esm/LinearGenomeView/components/LinearGenomeView.d.ts +7 -0
  170. package/esm/LinearGenomeView/components/LinearGenomeView.js +67 -0
  171. package/esm/LinearGenomeView/components/LinearGenomeView.js.map +1 -0
  172. package/esm/LinearGenomeView/components/LinearGenomeViewSvg.d.ts +4 -0
  173. package/esm/LinearGenomeView/components/LinearGenomeViewSvg.js +132 -0
  174. package/esm/LinearGenomeView/components/LinearGenomeViewSvg.js.map +1 -0
  175. package/esm/LinearGenomeView/components/MiniControls.d.ts +6 -0
  176. package/esm/LinearGenomeView/components/MiniControls.js +25 -0
  177. package/esm/LinearGenomeView/components/MiniControls.js.map +1 -0
  178. package/esm/LinearGenomeView/components/OverviewRubberBand.d.ts +22 -0
  179. package/esm/LinearGenomeView/components/OverviewRubberBand.js +197 -0
  180. package/esm/LinearGenomeView/components/OverviewRubberBand.js.map +1 -0
  181. package/esm/LinearGenomeView/components/OverviewScaleBar.d.ts +148 -0
  182. package/esm/LinearGenomeView/components/OverviewScaleBar.js +287 -0
  183. package/esm/LinearGenomeView/components/OverviewScaleBar.js.map +1 -0
  184. package/esm/LinearGenomeView/components/RefNameAutocomplete.d.ts +22 -0
  185. package/esm/LinearGenomeView/components/RefNameAutocomplete.js +136 -0
  186. package/esm/LinearGenomeView/components/RefNameAutocomplete.js.map +1 -0
  187. package/esm/LinearGenomeView/components/RubberBand.d.ts +9 -0
  188. package/esm/LinearGenomeView/components/RubberBand.js +197 -0
  189. package/esm/LinearGenomeView/components/RubberBand.js.map +1 -0
  190. package/esm/LinearGenomeView/components/Ruler.d.ts +27 -0
  191. package/esm/LinearGenomeView/components/Ruler.js +50 -0
  192. package/esm/LinearGenomeView/components/Ruler.js.map +1 -0
  193. package/esm/LinearGenomeView/components/ScaleBar.d.ts +10 -0
  194. package/esm/LinearGenomeView/components/ScaleBar.js +112 -0
  195. package/esm/LinearGenomeView/components/ScaleBar.js.map +1 -0
  196. package/esm/LinearGenomeView/components/SearchBox.d.ts +8 -0
  197. package/esm/LinearGenomeView/components/SearchBox.js +94 -0
  198. package/esm/LinearGenomeView/components/SearchBox.js.map +1 -0
  199. package/esm/LinearGenomeView/components/SearchResultsDialog.d.ts +7 -0
  200. package/esm/LinearGenomeView/components/SearchResultsDialog.js +107 -0
  201. package/esm/LinearGenomeView/components/SearchResultsDialog.js.map +1 -0
  202. package/esm/LinearGenomeView/components/SequenceDialog.d.ts +8 -0
  203. package/esm/LinearGenomeView/components/SequenceDialog.js +147 -0
  204. package/esm/LinearGenomeView/components/SequenceDialog.js.map +1 -0
  205. package/esm/LinearGenomeView/components/TrackContainer.d.ts +9 -0
  206. package/esm/LinearGenomeView/components/TrackContainer.js +109 -0
  207. package/esm/LinearGenomeView/components/TrackContainer.js.map +1 -0
  208. package/esm/LinearGenomeView/components/TrackLabel.d.ts +8 -0
  209. package/esm/LinearGenomeView/components/TrackLabel.js +89 -0
  210. package/esm/LinearGenomeView/components/TrackLabel.js.map +1 -0
  211. package/{dist/LinearGenomeView/components/VerticalGuides.d.ts → esm/LinearGenomeView/components/TracksContainer.d.ts} +4 -3
  212. package/esm/LinearGenomeView/components/TracksContainer.js +142 -0
  213. package/esm/LinearGenomeView/components/TracksContainer.js.map +1 -0
  214. package/esm/LinearGenomeView/components/ZoomControls.d.ts +7 -0
  215. package/esm/LinearGenomeView/components/ZoomControls.js +32 -0
  216. package/esm/LinearGenomeView/components/ZoomControls.js.map +1 -0
  217. package/esm/LinearGenomeView/components/util.d.ts +14 -0
  218. package/esm/LinearGenomeView/components/util.js +17 -0
  219. package/esm/LinearGenomeView/components/util.js.map +1 -0
  220. package/esm/LinearGenomeView/index.d.ts +275 -0
  221. package/esm/LinearGenomeView/index.js +978 -0
  222. package/esm/LinearGenomeView/index.js.map +1 -0
  223. package/esm/LinearGenomeView/util.d.ts +14 -0
  224. package/esm/LinearGenomeView/util.js +62 -0
  225. package/esm/LinearGenomeView/util.js.map +1 -0
  226. package/esm/index.d.ts +615 -0
  227. package/esm/index.js +127 -0
  228. package/esm/index.js.map +1 -0
  229. package/package.json +22 -15
  230. package/src/BaseLinearDisplay/components/BaseLinearDisplay.tsx +4 -3
  231. package/src/BaseLinearDisplay/components/Block.tsx +5 -5
  232. package/src/BaseLinearDisplay/components/LinearBlocks.tsx +4 -4
  233. package/src/BaseLinearDisplay/components/ServerSideRenderedBlockContent.tsx +7 -8
  234. package/src/BaseLinearDisplay/components/Tooltip.tsx +14 -4
  235. package/src/BaseLinearDisplay/models/BaseLinearDisplayModel.tsx +6 -4
  236. package/src/BaseLinearDisplay/models/serverSideRenderedBlock.ts +1 -1
  237. package/src/LinearBasicDisplay/components/SetMaxHeight.tsx +10 -7
  238. package/src/LinearBasicDisplay/model.ts +21 -15
  239. package/src/LinearGenomeView/components/CenterLine.tsx +6 -11
  240. package/src/LinearGenomeView/components/ExportSvgDialog.tsx +5 -5
  241. package/src/LinearGenomeView/components/{VerticalGuides.tsx → Gridlines.tsx} +9 -11
  242. package/src/LinearGenomeView/components/Header.tsx +13 -18
  243. package/src/LinearGenomeView/components/HelpDialog.tsx +5 -5
  244. package/src/LinearGenomeView/components/ImportForm.tsx +24 -37
  245. package/src/LinearGenomeView/components/LinearGenomeView.test.js +16 -6
  246. package/src/LinearGenomeView/components/LinearGenomeView.tsx +4 -3
  247. package/src/LinearGenomeView/components/MiniControls.tsx +29 -40
  248. package/src/LinearGenomeView/components/OverviewRubberBand.tsx +20 -29
  249. package/src/LinearGenomeView/components/OverviewScaleBar.tsx +100 -89
  250. package/src/LinearGenomeView/components/RefNameAutocomplete.tsx +13 -44
  251. package/src/LinearGenomeView/components/RubberBand.tsx +12 -18
  252. package/src/LinearGenomeView/components/Ruler.tsx +5 -11
  253. package/src/LinearGenomeView/components/ScaleBar.tsx +23 -27
  254. package/src/LinearGenomeView/components/SearchBox.tsx +22 -32
  255. package/src/LinearGenomeView/components/SearchResultsDialog.tsx +7 -7
  256. package/src/LinearGenomeView/components/SequenceDialog.tsx +10 -10
  257. package/src/LinearGenomeView/components/TrackContainer.tsx +12 -12
  258. package/src/LinearGenomeView/components/TrackLabel.tsx +21 -31
  259. package/src/LinearGenomeView/components/TracksContainer.tsx +10 -15
  260. package/src/LinearGenomeView/components/ZoomControls.tsx +12 -13
  261. package/src/LinearGenomeView/components/__snapshots__/LinearGenomeView.test.js.snap +500 -547
  262. package/src/LinearGenomeView/components/util.ts +43 -0
  263. package/src/LinearGenomeView/index.test.ts +14 -36
  264. package/src/LinearGenomeView/index.tsx +390 -564
  265. package/src/index.ts +1 -1
  266. package/dist/LinearBareDisplay/index.test.js +0 -33
  267. package/dist/LinearGenomeView/components/LinearGenomeView.test.js +0 -234
  268. package/dist/LinearGenomeView/components/ScaleBar.test.js +0 -180
  269. package/dist/LinearGenomeView/components/VerticalGuides.js +0 -116
  270. package/dist/LinearGenomeView/index.test.js +0 -1187
  271. package/dist/LinearGenomeView/util.test.js +0 -78
@@ -0,0 +1,541 @@
1
+ /* eslint-disable @typescript-eslint/no-explicit-any */
2
+ import React from 'react';
3
+ import { Button, Typography } from '@mui/material';
4
+ import { BaseDisplay } from '@jbrowse/core/pluggableElementTypes/models';
5
+ import { getConf } from '@jbrowse/core/configuration';
6
+ import { isAbortException, getContainingView, getContainingTrack, getSession, getViewParams, isSelectionContainer, isSessionModelWithWidgets, } from '@jbrowse/core/util';
7
+ import CompositeMap from '@jbrowse/core/util/compositeMap';
8
+ import { isFeature } from '@jbrowse/core/util/simpleFeature';
9
+ import { getParentRenderProps, getRpcSessionId, } from '@jbrowse/core/util/tracks';
10
+ import { autorun } from 'mobx';
11
+ import { addDisposer, isAlive, types } from 'mobx-state-tree';
12
+ // icons
13
+ import MenuOpenIcon from '@mui/icons-material/MenuOpen';
14
+ import { Tooltip } from '../components/BaseLinearDisplay';
15
+ import BlockState, { renderBlockData } from './serverSideRenderedBlock';
16
+ // stabilize clipid under test for snapshot
17
+ function getId(id, index) {
18
+ const isJest = typeof jest === 'undefined';
19
+ return `clip-${isJest ? id : 'jest'}-${index}`;
20
+ }
21
+ function getDisplayStr(totalBytes) {
22
+ let displayBp;
23
+ if (Math.floor(totalBytes / 1000000) > 0) {
24
+ displayBp = `${parseFloat((totalBytes / 1000000).toPrecision(3))} Mb`;
25
+ }
26
+ else if (Math.floor(totalBytes / 1000) > 0) {
27
+ displayBp = `${parseFloat((totalBytes / 1000).toPrecision(3))} Kb`;
28
+ }
29
+ else {
30
+ displayBp = `${Math.floor(totalBytes)} bytes`;
31
+ }
32
+ return displayBp;
33
+ }
34
+ const minDisplayHeight = 20;
35
+ const defaultDisplayHeight = 100;
36
+ export const BaseLinearDisplay = types
37
+ .compose('BaseLinearDisplay', BaseDisplay, types.model({
38
+ height: types.optional(types.refinement('displayHeight', types.number, n => n >= minDisplayHeight), defaultDisplayHeight),
39
+ blockState: types.map(BlockState),
40
+ userBpPerPxLimit: types.maybe(types.number),
41
+ userByteSizeLimit: types.maybe(types.number),
42
+ }))
43
+ .volatile(() => ({
44
+ currBpPerPx: 0,
45
+ message: '',
46
+ featureIdUnderMouse: undefined,
47
+ contextMenuFeature: undefined,
48
+ scrollTop: 0,
49
+ estimatedRegionStatsP: undefined,
50
+ estimatedRegionStats: undefined,
51
+ }))
52
+ .views(self => ({
53
+ get blockType() {
54
+ return 'staticBlocks';
55
+ },
56
+ get blockDefinitions() {
57
+ const { blockType } = this;
58
+ const view = getContainingView(self);
59
+ if (!view.initialized) {
60
+ throw new Error('view not initialized yet');
61
+ }
62
+ return view[blockType];
63
+ },
64
+ }))
65
+ .views(self => ({
66
+ /**
67
+ * how many milliseconds to wait for the display to
68
+ * "settle" before re-rendering a block
69
+ */
70
+ get renderDelay() {
71
+ return 50;
72
+ },
73
+ get TooltipComponent() {
74
+ return Tooltip;
75
+ },
76
+ /**
77
+ * returns a string feature ID if the globally-selected object
78
+ * is probably a feature
79
+ */
80
+ get selectedFeatureId() {
81
+ if (isAlive(self)) {
82
+ const { selection } = getSession(self);
83
+ // does it quack like a feature?
84
+ if (isFeature(selection)) {
85
+ return selection.id();
86
+ }
87
+ }
88
+ return undefined;
89
+ },
90
+ /**
91
+ * if a display-level message should be displayed instead of the blocks,
92
+ * make this return a react component
93
+ */
94
+ get DisplayMessageComponent() {
95
+ return undefined;
96
+ },
97
+ }))
98
+ .views(self => ({
99
+ /**
100
+ * a CompositeMap of `featureId -> feature obj` that
101
+ * just looks in all the block data for that feature
102
+ */
103
+ get features() {
104
+ const featureMaps = [];
105
+ for (const block of self.blockState.values()) {
106
+ if (block && block.features) {
107
+ featureMaps.push(block.features);
108
+ }
109
+ }
110
+ return new CompositeMap(featureMaps);
111
+ },
112
+ get featureUnderMouse() {
113
+ const feat = self.featureIdUnderMouse;
114
+ return feat ? this.features.get(feat) : undefined;
115
+ },
116
+ getFeatureOverlapping(blockKey, x, y) {
117
+ var _a, _b;
118
+ return (_b = (_a = self.blockState.get(blockKey)) === null || _a === void 0 ? void 0 : _a.layout) === null || _b === void 0 ? void 0 : _b.getByCoord(x, y);
119
+ },
120
+ getFeatureByID(blockKey, id) {
121
+ var _a, _b;
122
+ return (_b = (_a = self.blockState.get(blockKey)) === null || _a === void 0 ? void 0 : _a.layout) === null || _b === void 0 ? void 0 : _b.getByID(id);
123
+ },
124
+ // if block key is not supplied, can look at all blocks
125
+ searchFeatureByID(id) {
126
+ let ret;
127
+ self.blockState.forEach(block => {
128
+ var _a;
129
+ const val = (_a = block === null || block === void 0 ? void 0 : block.layout) === null || _a === void 0 ? void 0 : _a.getByID(id);
130
+ if (val) {
131
+ ret = val;
132
+ }
133
+ });
134
+ return ret;
135
+ },
136
+ get currentBytesRequested() {
137
+ var _a;
138
+ return ((_a = self.estimatedRegionStats) === null || _a === void 0 ? void 0 : _a.bytes) || 0;
139
+ },
140
+ get currentFeatureScreenDensity() {
141
+ var _a;
142
+ const view = getContainingView(self);
143
+ return (((_a = self.estimatedRegionStats) === null || _a === void 0 ? void 0 : _a.featureDensity) || 0) * view.bpPerPx;
144
+ },
145
+ get maxFeatureScreenDensity() {
146
+ return getConf(self, 'maxFeatureScreenDensity');
147
+ },
148
+ get estimatedStatsReady() {
149
+ return !!self.estimatedRegionStats;
150
+ },
151
+ get maxAllowableBytes() {
152
+ var _a;
153
+ return (self.userByteSizeLimit ||
154
+ ((_a = self.estimatedRegionStats) === null || _a === void 0 ? void 0 : _a.fetchSizeLimit) ||
155
+ getConf(self, 'fetchSizeLimit'));
156
+ },
157
+ }))
158
+ .actions(self => ({
159
+ // base display reload does nothing, see specialized displays for details
160
+ setMessage(message) {
161
+ self.message = message;
162
+ },
163
+ afterAttach() {
164
+ // watch the parent's blocks to update our block state when they change,
165
+ // then we recreate the blocks on our own model (creating and deleting to
166
+ // match the parent blocks)
167
+ const blockWatchDisposer = autorun(() => {
168
+ const blocksPresent = {};
169
+ const view = getContainingView(self);
170
+ if (view.initialized) {
171
+ self.blockDefinitions.contentBlocks.forEach(block => {
172
+ blocksPresent[block.key] = true;
173
+ if (!self.blockState.has(block.key)) {
174
+ this.addBlock(block.key, block);
175
+ }
176
+ });
177
+ self.blockState.forEach((_, key) => {
178
+ if (!blocksPresent[key]) {
179
+ this.deleteBlock(key);
180
+ }
181
+ });
182
+ }
183
+ });
184
+ addDisposer(self, blockWatchDisposer);
185
+ },
186
+ estimateRegionsStats(regions, opts) {
187
+ if (self.estimatedRegionStatsP) {
188
+ return self.estimatedRegionStatsP;
189
+ }
190
+ const { rpcManager } = getSession(self);
191
+ const { adapterConfig } = self;
192
+ if (!adapterConfig) {
193
+ // A track extending the base track might not have an adapter config
194
+ // e.g. Apollo tracks don't use adapters
195
+ return Promise.resolve({});
196
+ }
197
+ const sessionId = getRpcSessionId(self);
198
+ const params = {
199
+ sessionId,
200
+ regions,
201
+ adapterConfig,
202
+ statusCallback: (message) => {
203
+ if (isAlive(self)) {
204
+ this.setMessage(message);
205
+ }
206
+ },
207
+ ...opts,
208
+ };
209
+ self.estimatedRegionStatsP = rpcManager
210
+ .call(sessionId, 'CoreEstimateRegionStats', params)
211
+ .catch(e => {
212
+ this.setRegionStatsP(undefined);
213
+ throw e;
214
+ });
215
+ return self.estimatedRegionStatsP;
216
+ },
217
+ setRegionStatsP(p) {
218
+ self.estimatedRegionStatsP = p;
219
+ },
220
+ setRegionStats(estimatedRegionStats) {
221
+ self.estimatedRegionStats = estimatedRegionStats;
222
+ },
223
+ clearRegionStats() {
224
+ self.estimatedRegionStatsP = undefined;
225
+ self.estimatedRegionStats = undefined;
226
+ },
227
+ setHeight(displayHeight) {
228
+ if (displayHeight > minDisplayHeight) {
229
+ self.height = displayHeight;
230
+ }
231
+ else {
232
+ self.height = minDisplayHeight;
233
+ }
234
+ return self.height;
235
+ },
236
+ resizeHeight(distance) {
237
+ const oldHeight = self.height;
238
+ const newHeight = this.setHeight(self.height + distance);
239
+ return newHeight - oldHeight;
240
+ },
241
+ setScrollTop(scrollTop) {
242
+ self.scrollTop = scrollTop;
243
+ },
244
+ updateStatsLimit(stats) {
245
+ const view = getContainingView(self);
246
+ if (stats.bytes) {
247
+ self.userByteSizeLimit = stats.bytes;
248
+ }
249
+ else {
250
+ self.userBpPerPxLimit = view.bpPerPx;
251
+ }
252
+ },
253
+ addBlock(key, block) {
254
+ self.blockState.set(key, BlockState.create({
255
+ key,
256
+ region: block.toRegion(),
257
+ }));
258
+ },
259
+ setCurrBpPerPx(n) {
260
+ self.currBpPerPx = n;
261
+ },
262
+ deleteBlock(key) {
263
+ self.blockState.delete(key);
264
+ },
265
+ selectFeature(feature) {
266
+ const session = getSession(self);
267
+ if (isSessionModelWithWidgets(session)) {
268
+ const featureWidget = session.addWidget('BaseFeatureWidget', 'baseFeature', {
269
+ view: getContainingView(self),
270
+ track: getContainingTrack(self),
271
+ featureData: feature.toJSON(),
272
+ });
273
+ session.showWidget(featureWidget);
274
+ }
275
+ if (isSelectionContainer(session)) {
276
+ session.setSelection(feature);
277
+ }
278
+ },
279
+ clearFeatureSelection() {
280
+ const session = getSession(self);
281
+ session.clearSelection();
282
+ },
283
+ setFeatureIdUnderMouse(feature) {
284
+ self.featureIdUnderMouse = feature;
285
+ },
286
+ reload() {
287
+ ;
288
+ [...self.blockState.values()].map(val => val.doReload());
289
+ },
290
+ setContextMenuFeature(feature) {
291
+ self.contextMenuFeature = feature;
292
+ },
293
+ }))
294
+ .views(self => ({
295
+ // region is too large if:
296
+ // - stats are ready
297
+ // - region is greater than 20kb (don't warn when zoomed in less than that)
298
+ // - and bytes > max allowed bytes || curr density>max density
299
+ get regionTooLarge() {
300
+ const view = getContainingView(self);
301
+ if (!self.estimatedStatsReady || view.dynamicBlocks.totalBp < 20000) {
302
+ return false;
303
+ }
304
+ const bpLimitOrDensity = self.userBpPerPxLimit
305
+ ? view.bpPerPx > self.userBpPerPxLimit
306
+ : self.currentFeatureScreenDensity > self.maxFeatureScreenDensity;
307
+ return (self.currentBytesRequested > self.maxAllowableBytes || bpLimitOrDensity);
308
+ },
309
+ // only shows a message of bytes requested is defined, the feature density
310
+ // based stats don't produce any helpful message besides to zoom in
311
+ get regionTooLargeReason() {
312
+ const req = self.currentBytesRequested;
313
+ const max = self.maxAllowableBytes;
314
+ return req && req > max
315
+ ? `Requested too much data (${getDisplayStr(req)})`
316
+ : '';
317
+ },
318
+ }))
319
+ .actions(self => {
320
+ const { reload: superReload } = self;
321
+ return {
322
+ async reload() {
323
+ self.setError();
324
+ const aborter = new AbortController();
325
+ const view = getContainingView(self);
326
+ // extra check for contentBlocks.length
327
+ // https://github.com/GMOD/jbrowse-components/issues/2694
328
+ if (!view.initialized || !view.staticBlocks.contentBlocks.length) {
329
+ return;
330
+ }
331
+ try {
332
+ self.estimatedRegionStatsP = self.estimateRegionsStats(view.staticBlocks.contentBlocks, { signal: aborter.signal });
333
+ const estimatedRegionStats = await self.estimatedRegionStatsP;
334
+ if (isAlive(self)) {
335
+ self.setRegionStats(estimatedRegionStats);
336
+ superReload();
337
+ }
338
+ else {
339
+ return;
340
+ }
341
+ }
342
+ catch (e) {
343
+ console.error(e);
344
+ self.setError(e);
345
+ }
346
+ },
347
+ afterAttach() {
348
+ // this autorun performs stats estimation
349
+ //
350
+ // the chain of events calls estimateRegionsStats against the data
351
+ // adapter which by default uses featureDensity, but can also respond
352
+ // with a byte size estimate and fetch size limit (data adapter can
353
+ // define what is too much data)
354
+ addDisposer(self, autorun(async () => {
355
+ var _a;
356
+ try {
357
+ const aborter = new AbortController();
358
+ const view = getContainingView(self);
359
+ // extra check for contentBlocks.length
360
+ // https://github.com/GMOD/jbrowse-components/issues/2694
361
+ if (!view.initialized ||
362
+ !view.staticBlocks.contentBlocks.length) {
363
+ return;
364
+ }
365
+ // don't re-estimate featureDensity even if zoom level changes,
366
+ // jbrowse1-style assume it's sort of representative
367
+ if (((_a = self.estimatedRegionStats) === null || _a === void 0 ? void 0 : _a.featureDensity) !== undefined) {
368
+ self.setCurrBpPerPx(view.bpPerPx);
369
+ return;
370
+ }
371
+ // we estimate stats once at a given zoom level
372
+ if (view.bpPerPx === self.currBpPerPx) {
373
+ return;
374
+ }
375
+ self.clearRegionStats();
376
+ self.setCurrBpPerPx(view.bpPerPx);
377
+ const statsP = self.estimateRegionsStats(view.staticBlocks.contentBlocks, { signal: aborter.signal });
378
+ self.setRegionStatsP(statsP);
379
+ const estimatedRegionStats = await statsP;
380
+ if (isAlive(self)) {
381
+ self.setRegionStats(estimatedRegionStats);
382
+ }
383
+ }
384
+ catch (e) {
385
+ if (!isAbortException(e) && isAlive(self)) {
386
+ console.error(e);
387
+ self.setError(e);
388
+ }
389
+ }
390
+ }, { delay: 500 }));
391
+ },
392
+ };
393
+ })
394
+ .views(self => ({
395
+ regionCannotBeRenderedText(_region) {
396
+ return self.regionTooLarge ? 'Force load to see features' : '';
397
+ },
398
+ /**
399
+ * @param region -
400
+ * @returns falsy if the region is fine to try rendering. Otherwise,
401
+ * return a react node + string of text.
402
+ * string of text describes why it cannot be rendered
403
+ * react node allows user to force load at current setting
404
+ */
405
+ regionCannotBeRendered(_region) {
406
+ const { regionTooLarge, regionTooLargeReason } = self;
407
+ if (regionTooLarge) {
408
+ return (React.createElement(React.Fragment, null,
409
+ React.createElement(Typography, { component: "span", variant: "body2" },
410
+ regionTooLargeReason ? regionTooLargeReason + '. ' : '',
411
+ "Zoom in to see features or",
412
+ ' '),
413
+ React.createElement(Button, { "data-testid": "force_reload_button", onClick: () => {
414
+ if (!self.estimatedRegionStats) {
415
+ console.error('No global stats?');
416
+ }
417
+ else {
418
+ self.updateStatsLimit(self.estimatedRegionStats);
419
+ self.reload();
420
+ }
421
+ }, variant: "outlined" }, "Force Load"),
422
+ React.createElement(Typography, { component: "span", variant: "body2" }, "(force load may be slow)")));
423
+ }
424
+ return undefined;
425
+ },
426
+ trackMenuItems() {
427
+ return [];
428
+ },
429
+ contextMenuItems() {
430
+ return self.contextMenuFeature
431
+ ? [
432
+ {
433
+ label: 'Open feature details',
434
+ icon: MenuOpenIcon,
435
+ onClick: () => {
436
+ if (self.contextMenuFeature) {
437
+ self.selectFeature(self.contextMenuFeature);
438
+ }
439
+ },
440
+ },
441
+ ]
442
+ : [];
443
+ },
444
+ renderProps() {
445
+ const view = getContainingView(self);
446
+ return {
447
+ ...getParentRenderProps(self),
448
+ notReady: self.currBpPerPx !== view.bpPerPx || !self.estimatedRegionStats,
449
+ rpcDriverName: self.rpcDriverName,
450
+ displayModel: self,
451
+ onFeatureClick(_, featureId) {
452
+ const f = featureId || self.featureIdUnderMouse;
453
+ if (!f) {
454
+ self.clearFeatureSelection();
455
+ }
456
+ else {
457
+ const feature = self.features.get(f);
458
+ if (feature) {
459
+ self.selectFeature(feature);
460
+ }
461
+ }
462
+ },
463
+ onClick() {
464
+ self.clearFeatureSelection();
465
+ },
466
+ // similar to click but opens a menu with further options
467
+ onFeatureContextMenu(_, featureId) {
468
+ const f = featureId || self.featureIdUnderMouse;
469
+ if (!f) {
470
+ self.clearFeatureSelection();
471
+ }
472
+ else {
473
+ // feature id under mouse passed to context menu
474
+ self.setContextMenuFeature(self.features.get(f));
475
+ }
476
+ },
477
+ onMouseMove(_, featureId) {
478
+ self.setFeatureIdUnderMouse(featureId);
479
+ },
480
+ onMouseLeave(_) {
481
+ self.setFeatureIdUnderMouse(undefined);
482
+ },
483
+ onContextMenu() {
484
+ self.setContextMenuFeature(undefined);
485
+ self.clearFeatureSelection();
486
+ },
487
+ };
488
+ },
489
+ }))
490
+ .actions(self => ({
491
+ async renderSvg(opts) {
492
+ const { height, id } = self;
493
+ const { overrideHeight } = opts;
494
+ const view = getContainingView(self);
495
+ const { offsetPx: viewOffsetPx, roundedDynamicBlocks, width } = view;
496
+ const renderings = await Promise.all(roundedDynamicBlocks.map(block => {
497
+ const blockState = BlockState.create({
498
+ key: block.key,
499
+ region: block,
500
+ });
501
+ // regionCannotBeRendered can return jsx so look for plaintext
502
+ // version, or just get the default if none available
503
+ const cannotBeRenderedReason = self.regionCannotBeRenderedText(block) ||
504
+ self.regionCannotBeRendered(block);
505
+ if (cannotBeRenderedReason) {
506
+ return {
507
+ reactElement: (React.createElement(React.Fragment, null,
508
+ React.createElement("rect", { x: 0, y: 0, width: width, height: 20, fill: "#aaa" }),
509
+ React.createElement("text", { x: 0, y: 15 }, cannotBeRenderedReason))),
510
+ };
511
+ }
512
+ const { rpcManager, renderArgs, renderProps, rendererType } = renderBlockData(blockState, self);
513
+ return rendererType.renderInClient(rpcManager, {
514
+ ...renderArgs,
515
+ ...renderProps,
516
+ viewParams: getViewParams(self, true),
517
+ exportSVG: opts,
518
+ });
519
+ }));
520
+ return (React.createElement(React.Fragment, null, renderings.map((rendering, index) => {
521
+ const { offsetPx } = roundedDynamicBlocks[index];
522
+ const offset = offsetPx - viewOffsetPx;
523
+ const clipid = getId(id, index);
524
+ return (React.createElement(React.Fragment, { key: `frag-${index}` },
525
+ React.createElement("defs", null,
526
+ React.createElement("clipPath", { id: clipid },
527
+ React.createElement("rect", { x: 0, y: 0, width: width, height: overrideHeight || height }))),
528
+ React.createElement("g", { transform: `translate(${offset} 0)` },
529
+ React.createElement("g", { clipPath: `url(#${clipid})` }, React.isValidElement(rendering.reactElement) ? (rendering.reactElement) : (
530
+ // eslint-disable-next-line react/no-danger
531
+ React.createElement("g", { dangerouslySetInnerHTML: { __html: rendering.html } }))))));
532
+ })));
533
+ },
534
+ }))
535
+ .postProcessSnapshot(self => {
536
+ // xref https://github.com/mobxjs/mobx-state-tree/issues/1524 for Omit
537
+ const r = self;
538
+ const { blockState, ...rest } = r;
539
+ return rest;
540
+ });
541
+ //# sourceMappingURL=BaseLinearDisplayModel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BaseLinearDisplayModel.js","sourceRoot":"","sources":["../../../src/BaseLinearDisplay/models/BaseLinearDisplayModel.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export declare const baseLinearDisplayConfigSchema: import("@jbrowse/core/configuration").AnyConfigurationSchemaType;
@@ -0,0 +1,14 @@
1
+ import { ConfigurationSchema } from '@jbrowse/core/configuration';
2
+ export const baseLinearDisplayConfigSchema = ConfigurationSchema('BaseLinearDisplay', {
3
+ maxFeatureScreenDensity: {
4
+ type: 'number',
5
+ description: 'maximum features per pixel that is displayed in the view, used if byte size estimates not available',
6
+ defaultValue: 0.3,
7
+ },
8
+ fetchSizeLimit: {
9
+ type: 'number',
10
+ defaultValue: 1000000,
11
+ description: "maximum data to attempt to download for a given track, used if adapter doesn't specify one",
12
+ },
13
+ }, { explicitIdentifier: 'displayId' });
14
+ //# sourceMappingURL=baseLinearDisplayConfigSchema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"baseLinearDisplayConfigSchema.js","sourceRoot":"","sources":["../../../src/BaseLinearDisplay/models/baseLinearDisplayConfigSchema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAA;AAEjE,MAAM,CAAC,MAAM,6BAA6B,GAAG,mBAAmB,CAC9D,mBAAmB,EACnB;IACE,uBAAuB,EAAE;QACvB,IAAI,EAAE,QAAQ;QACd,WAAW,EACT,qGAAqG;QACvG,YAAY,EAAE,GAAG;KAClB;IACD,cAAc,EAAE;QACd,IAAI,EAAE,QAAQ;QACd,YAAY,EAAE,OAAS;QACvB,WAAW,EACT,4FAA4F;KAC/F;CACF,EACD,EAAE,kBAAkB,EAAE,WAAW,EAAE,CACpC,CAAA"}