@jbrowse/plugin-linear-genome-view 1.7.9 → 2.0.0

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 (272) hide show
  1. package/dist/BaseLinearDisplay/components/BaseLinearDisplay.d.ts +1 -5
  2. package/dist/BaseLinearDisplay/components/BaseLinearDisplay.js +118 -226
  3. package/dist/BaseLinearDisplay/components/BaseLinearDisplay.js.map +1 -0
  4. package/dist/BaseLinearDisplay/components/Block.js +53 -74
  5. package/dist/BaseLinearDisplay/components/Block.js.map +1 -0
  6. package/dist/BaseLinearDisplay/components/LinearBlocks.d.ts +11 -1
  7. package/dist/BaseLinearDisplay/components/LinearBlocks.js +64 -103
  8. package/dist/BaseLinearDisplay/components/LinearBlocks.js.map +1 -0
  9. package/dist/BaseLinearDisplay/components/ServerSideRenderedBlockContent.js +145 -175
  10. package/dist/BaseLinearDisplay/components/ServerSideRenderedBlockContent.js.map +1 -0
  11. package/dist/BaseLinearDisplay/components/Tooltip.d.ts +8 -0
  12. package/dist/BaseLinearDisplay/components/Tooltip.js +118 -0
  13. package/dist/BaseLinearDisplay/components/Tooltip.js.map +1 -0
  14. package/dist/BaseLinearDisplay/index.js +13 -40
  15. package/dist/BaseLinearDisplay/index.js.map +1 -0
  16. package/dist/BaseLinearDisplay/models/BaseLinearDisplayModel.d.ts +20 -15
  17. package/dist/BaseLinearDisplay/models/BaseLinearDisplayModel.js +605 -683
  18. package/dist/BaseLinearDisplay/models/BaseLinearDisplayModel.js.map +1 -0
  19. package/dist/BaseLinearDisplay/models/baseLinearDisplayConfigSchema.js +15 -22
  20. package/dist/BaseLinearDisplay/models/baseLinearDisplayConfigSchema.js.map +1 -0
  21. package/dist/BaseLinearDisplay/models/serverSideRenderedBlock.d.ts +7 -8
  22. package/dist/BaseLinearDisplay/models/serverSideRenderedBlock.js +266 -312
  23. package/dist/BaseLinearDisplay/models/serverSideRenderedBlock.js.map +1 -0
  24. package/dist/LinearBareDisplay/configSchema.js +11 -17
  25. package/dist/LinearBareDisplay/configSchema.js.map +1 -0
  26. package/dist/LinearBareDisplay/index.js +7 -20
  27. package/dist/LinearBareDisplay/index.js.map +1 -0
  28. package/dist/LinearBareDisplay/model.d.ts +16 -14
  29. package/dist/LinearBareDisplay/model.js +36 -42
  30. package/dist/LinearBareDisplay/model.js.map +1 -0
  31. package/dist/LinearBasicDisplay/components/SetMaxHeight.d.ts +1 -1
  32. package/dist/LinearBasicDisplay/components/SetMaxHeight.js +76 -85
  33. package/dist/LinearBasicDisplay/components/SetMaxHeight.js.map +1 -0
  34. package/dist/LinearBasicDisplay/configSchema.js +15 -23
  35. package/dist/LinearBasicDisplay/configSchema.js.map +1 -0
  36. package/dist/LinearBasicDisplay/index.js +10 -22
  37. package/dist/LinearBasicDisplay/index.js.map +1 -0
  38. package/dist/LinearBasicDisplay/model.d.ts +20 -15
  39. package/dist/LinearBasicDisplay/model.js +180 -159
  40. package/dist/LinearBasicDisplay/model.js.map +1 -0
  41. package/dist/LinearGenomeView/components/CenterLine.d.ts +2 -8
  42. package/dist/LinearGenomeView/components/CenterLine.js +60 -74
  43. package/dist/LinearGenomeView/components/CenterLine.js.map +1 -0
  44. package/dist/LinearGenomeView/components/ExportSvgDialog.js +141 -141
  45. package/dist/LinearGenomeView/components/ExportSvgDialog.js.map +1 -0
  46. package/dist/LinearGenomeView/components/Header.js +70 -123
  47. package/dist/LinearGenomeView/components/Header.js.map +1 -0
  48. package/dist/LinearGenomeView/components/HelpDialog.d.ts +0 -1
  49. package/dist/LinearGenomeView/components/HelpDialog.js +62 -45
  50. package/dist/LinearGenomeView/components/HelpDialog.js.map +1 -0
  51. package/dist/LinearGenomeView/components/ImportForm.js +223 -320
  52. package/dist/LinearGenomeView/components/ImportForm.js.map +1 -0
  53. package/dist/LinearGenomeView/components/LinearGenomeView.js +64 -120
  54. package/dist/LinearGenomeView/components/LinearGenomeView.js.map +1 -0
  55. package/dist/LinearGenomeView/components/LinearGenomeViewSvg.js +198 -337
  56. package/dist/LinearGenomeView/components/LinearGenomeViewSvg.js.map +1 -0
  57. package/dist/LinearGenomeView/components/MiniControls.js +64 -78
  58. package/dist/LinearGenomeView/components/MiniControls.js.map +1 -0
  59. package/dist/LinearGenomeView/components/OverviewRubberBand.js +226 -293
  60. package/dist/LinearGenomeView/components/OverviewRubberBand.js.map +1 -0
  61. package/dist/LinearGenomeView/components/OverviewScaleBar.d.ts +24 -8
  62. package/dist/LinearGenomeView/components/OverviewScaleBar.js +277 -365
  63. package/dist/LinearGenomeView/components/OverviewScaleBar.js.map +1 -0
  64. package/dist/LinearGenomeView/components/RefNameAutocomplete.d.ts +1 -1
  65. package/dist/LinearGenomeView/components/RefNameAutocomplete.js +237 -324
  66. package/dist/LinearGenomeView/components/RefNameAutocomplete.js.map +1 -0
  67. package/dist/LinearGenomeView/components/RubberBand.js +229 -296
  68. package/dist/LinearGenomeView/components/RubberBand.js.map +1 -0
  69. package/dist/LinearGenomeView/components/Ruler.js +45 -90
  70. package/dist/LinearGenomeView/components/Ruler.js.map +1 -0
  71. package/dist/LinearGenomeView/components/ScaleBar.d.ts +8 -399
  72. package/dist/LinearGenomeView/components/ScaleBar.js +121 -167
  73. package/dist/LinearGenomeView/components/ScaleBar.js.map +1 -0
  74. package/dist/LinearGenomeView/components/SearchBox.js +158 -205
  75. package/dist/LinearGenomeView/components/SearchBox.js.map +1 -0
  76. package/dist/LinearGenomeView/components/SearchResultsDialog.d.ts +0 -1
  77. package/dist/LinearGenomeView/components/SearchResultsDialog.js +105 -150
  78. package/dist/LinearGenomeView/components/SearchResultsDialog.js.map +1 -0
  79. package/dist/LinearGenomeView/components/SequenceDialog.js +219 -272
  80. package/dist/LinearGenomeView/components/SequenceDialog.js.map +1 -0
  81. package/dist/LinearGenomeView/components/TrackContainer.js +116 -156
  82. package/dist/LinearGenomeView/components/TrackContainer.js.map +1 -0
  83. package/dist/LinearGenomeView/components/TrackLabel.d.ts +6 -42
  84. package/dist/LinearGenomeView/components/TrackLabel.js +115 -150
  85. package/dist/LinearGenomeView/components/TrackLabel.js.map +1 -0
  86. package/dist/LinearGenomeView/components/TracksContainer.d.ts +1 -1
  87. package/dist/LinearGenomeView/components/TracksContainer.js +172 -199
  88. package/dist/LinearGenomeView/components/TracksContainer.js.map +1 -0
  89. package/dist/LinearGenomeView/components/VerticalGuides.d.ts +2 -3
  90. package/dist/LinearGenomeView/components/VerticalGuides.js +66 -104
  91. package/dist/LinearGenomeView/components/VerticalGuides.js.map +1 -0
  92. package/dist/LinearGenomeView/components/ZoomControls.js +72 -87
  93. package/dist/LinearGenomeView/components/ZoomControls.js.map +1 -0
  94. package/dist/LinearGenomeView/components/util.d.ts +12 -0
  95. package/dist/LinearGenomeView/components/util.js +95 -13
  96. package/dist/LinearGenomeView/components/util.js.map +1 -0
  97. package/dist/LinearGenomeView/index.d.ts +6 -11
  98. package/dist/LinearGenomeView/index.js +1163 -1387
  99. package/dist/LinearGenomeView/index.js.map +1 -0
  100. package/dist/LinearGenomeView/util.js +76 -83
  101. package/dist/LinearGenomeView/util.js.map +1 -0
  102. package/dist/index.d.ts +101 -51
  103. package/dist/index.js +225 -284
  104. package/dist/index.js.map +1 -0
  105. package/esm/BaseLinearDisplay/components/BaseLinearDisplay.d.ts +9 -0
  106. package/esm/BaseLinearDisplay/components/BaseLinearDisplay.js +68 -0
  107. package/esm/BaseLinearDisplay/components/BaseLinearDisplay.js.map +1 -0
  108. package/esm/BaseLinearDisplay/components/Block.d.ts +15 -0
  109. package/esm/BaseLinearDisplay/components/Block.js +46 -0
  110. package/esm/BaseLinearDisplay/components/Block.js.map +1 -0
  111. package/esm/BaseLinearDisplay/components/LinearBlocks.d.ts +22 -0
  112. package/esm/BaseLinearDisplay/components/LinearBlocks.js +62 -0
  113. package/esm/BaseLinearDisplay/components/LinearBlocks.js.map +1 -0
  114. package/esm/BaseLinearDisplay/components/ServerSideRenderedBlockContent.d.ts +4 -0
  115. package/esm/BaseLinearDisplay/components/ServerSideRenderedBlockContent.js +113 -0
  116. package/esm/BaseLinearDisplay/components/ServerSideRenderedBlockContent.js.map +1 -0
  117. package/esm/BaseLinearDisplay/components/Tooltip.d.ts +8 -0
  118. package/esm/BaseLinearDisplay/components/Tooltip.js +64 -0
  119. package/esm/BaseLinearDisplay/components/Tooltip.js.map +1 -0
  120. package/esm/BaseLinearDisplay/index.d.ts +5 -0
  121. package/esm/BaseLinearDisplay/index.js +4 -0
  122. package/esm/BaseLinearDisplay/index.js.map +1 -0
  123. package/esm/BaseLinearDisplay/models/BaseLinearDisplayModel.d.ts +232 -0
  124. package/esm/BaseLinearDisplay/models/BaseLinearDisplayModel.js +541 -0
  125. package/esm/BaseLinearDisplay/models/BaseLinearDisplayModel.js.map +1 -0
  126. package/esm/BaseLinearDisplay/models/baseLinearDisplayConfigSchema.d.ts +1 -0
  127. package/esm/BaseLinearDisplay/models/baseLinearDisplayConfigSchema.js +14 -0
  128. package/esm/BaseLinearDisplay/models/baseLinearDisplayConfigSchema.js.map +1 -0
  129. package/esm/BaseLinearDisplay/models/serverSideRenderedBlock.d.ts +96 -0
  130. package/esm/BaseLinearDisplay/models/serverSideRenderedBlock.js +225 -0
  131. package/esm/BaseLinearDisplay/models/serverSideRenderedBlock.js.map +1 -0
  132. package/esm/LinearBareDisplay/configSchema.d.ts +2 -0
  133. package/esm/LinearBareDisplay/configSchema.js +9 -0
  134. package/esm/LinearBareDisplay/configSchema.js.map +1 -0
  135. package/esm/LinearBareDisplay/index.d.ts +2 -0
  136. package/esm/LinearBareDisplay/index.js +3 -0
  137. package/esm/LinearBareDisplay/index.js.map +1 -0
  138. package/esm/LinearBareDisplay/model.d.ts +194 -0
  139. package/esm/LinearBareDisplay/model.js +28 -0
  140. package/esm/LinearBareDisplay/model.js.map +1 -0
  141. package/esm/LinearBasicDisplay/components/SetMaxHeight.d.ts +10 -0
  142. package/esm/LinearBasicDisplay/components/SetMaxHeight.js +40 -0
  143. package/esm/LinearBasicDisplay/components/SetMaxHeight.js.map +1 -0
  144. package/esm/LinearBasicDisplay/configSchema.d.ts +2 -0
  145. package/esm/LinearBasicDisplay/configSchema.js +14 -0
  146. package/esm/LinearBasicDisplay/configSchema.js.map +1 -0
  147. package/esm/LinearBasicDisplay/index.d.ts +2 -0
  148. package/esm/LinearBasicDisplay/index.js +3 -0
  149. package/esm/LinearBasicDisplay/index.js.map +1 -0
  150. package/esm/LinearBasicDisplay/model.d.ts +218 -0
  151. package/esm/LinearBasicDisplay/model.js +127 -0
  152. package/esm/LinearBasicDisplay/model.js.map +1 -0
  153. package/esm/LinearGenomeView/components/CenterLine.d.ts +8 -0
  154. package/esm/LinearGenomeView/components/CenterLine.js +40 -0
  155. package/esm/LinearGenomeView/components/CenterLine.js.map +1 -0
  156. package/esm/LinearGenomeView/components/ExportSvgDialog.d.ts +6 -0
  157. package/esm/LinearGenomeView/components/ExportSvgDialog.js +52 -0
  158. package/esm/LinearGenomeView/components/ExportSvgDialog.js.map +1 -0
  159. package/esm/LinearGenomeView/components/Header.d.ts +7 -0
  160. package/esm/LinearGenomeView/components/Header.js +81 -0
  161. package/esm/LinearGenomeView/components/Header.js.map +1 -0
  162. package/esm/LinearGenomeView/components/HelpDialog.d.ts +4 -0
  163. package/esm/LinearGenomeView/components/HelpDialog.js +58 -0
  164. package/esm/LinearGenomeView/components/HelpDialog.js.map +1 -0
  165. package/esm/LinearGenomeView/components/ImportForm.d.ts +7 -0
  166. package/esm/LinearGenomeView/components/ImportForm.js +141 -0
  167. package/esm/LinearGenomeView/components/ImportForm.js.map +1 -0
  168. package/esm/LinearGenomeView/components/LinearGenomeView.d.ts +7 -0
  169. package/esm/LinearGenomeView/components/LinearGenomeView.js +67 -0
  170. package/esm/LinearGenomeView/components/LinearGenomeView.js.map +1 -0
  171. package/esm/LinearGenomeView/components/LinearGenomeViewSvg.d.ts +4 -0
  172. package/esm/LinearGenomeView/components/LinearGenomeViewSvg.js +132 -0
  173. package/esm/LinearGenomeView/components/LinearGenomeViewSvg.js.map +1 -0
  174. package/esm/LinearGenomeView/components/MiniControls.d.ts +6 -0
  175. package/esm/LinearGenomeView/components/MiniControls.js +25 -0
  176. package/esm/LinearGenomeView/components/MiniControls.js.map +1 -0
  177. package/esm/LinearGenomeView/components/OverviewRubberBand.d.ts +22 -0
  178. package/esm/LinearGenomeView/components/OverviewRubberBand.js +194 -0
  179. package/esm/LinearGenomeView/components/OverviewRubberBand.js.map +1 -0
  180. package/esm/LinearGenomeView/components/OverviewScaleBar.d.ts +148 -0
  181. package/esm/LinearGenomeView/components/OverviewScaleBar.js +287 -0
  182. package/esm/LinearGenomeView/components/OverviewScaleBar.js.map +1 -0
  183. package/esm/LinearGenomeView/components/RefNameAutocomplete.d.ts +22 -0
  184. package/esm/LinearGenomeView/components/RefNameAutocomplete.js +136 -0
  185. package/esm/LinearGenomeView/components/RefNameAutocomplete.js.map +1 -0
  186. package/esm/LinearGenomeView/components/RubberBand.d.ts +9 -0
  187. package/esm/LinearGenomeView/components/RubberBand.js +198 -0
  188. package/esm/LinearGenomeView/components/RubberBand.js.map +1 -0
  189. package/esm/LinearGenomeView/components/Ruler.d.ts +27 -0
  190. package/esm/LinearGenomeView/components/Ruler.js +50 -0
  191. package/esm/LinearGenomeView/components/Ruler.js.map +1 -0
  192. package/esm/LinearGenomeView/components/ScaleBar.d.ts +10 -0
  193. package/esm/LinearGenomeView/components/ScaleBar.js +112 -0
  194. package/esm/LinearGenomeView/components/ScaleBar.js.map +1 -0
  195. package/esm/LinearGenomeView/components/SearchBox.d.ts +8 -0
  196. package/esm/LinearGenomeView/components/SearchBox.js +94 -0
  197. package/esm/LinearGenomeView/components/SearchBox.js.map +1 -0
  198. package/esm/LinearGenomeView/components/SearchResultsDialog.d.ts +7 -0
  199. package/esm/LinearGenomeView/components/SearchResultsDialog.js +107 -0
  200. package/esm/LinearGenomeView/components/SearchResultsDialog.js.map +1 -0
  201. package/esm/LinearGenomeView/components/SequenceDialog.d.ts +8 -0
  202. package/esm/LinearGenomeView/components/SequenceDialog.js +147 -0
  203. package/esm/LinearGenomeView/components/SequenceDialog.js.map +1 -0
  204. package/esm/LinearGenomeView/components/TrackContainer.d.ts +9 -0
  205. package/esm/LinearGenomeView/components/TrackContainer.js +109 -0
  206. package/esm/LinearGenomeView/components/TrackContainer.js.map +1 -0
  207. package/esm/LinearGenomeView/components/TrackLabel.d.ts +8 -0
  208. package/esm/LinearGenomeView/components/TrackLabel.js +89 -0
  209. package/esm/LinearGenomeView/components/TrackLabel.js.map +1 -0
  210. package/esm/LinearGenomeView/components/TracksContainer.d.ts +10 -0
  211. package/esm/LinearGenomeView/components/TracksContainer.js +142 -0
  212. package/esm/LinearGenomeView/components/TracksContainer.js.map +1 -0
  213. package/esm/LinearGenomeView/components/VerticalGuides.d.ts +8 -0
  214. package/esm/LinearGenomeView/components/VerticalGuides.js +71 -0
  215. package/esm/LinearGenomeView/components/VerticalGuides.js.map +1 -0
  216. package/esm/LinearGenomeView/components/ZoomControls.d.ts +7 -0
  217. package/esm/LinearGenomeView/components/ZoomControls.js +32 -0
  218. package/esm/LinearGenomeView/components/ZoomControls.js.map +1 -0
  219. package/esm/LinearGenomeView/components/util.d.ts +14 -0
  220. package/esm/LinearGenomeView/components/util.js +17 -0
  221. package/esm/LinearGenomeView/components/util.js.map +1 -0
  222. package/esm/LinearGenomeView/index.d.ts +288 -0
  223. package/esm/LinearGenomeView/index.js +1124 -0
  224. package/esm/LinearGenomeView/index.js.map +1 -0
  225. package/esm/LinearGenomeView/util.d.ts +14 -0
  226. package/esm/LinearGenomeView/util.js +62 -0
  227. package/esm/LinearGenomeView/util.js.map +1 -0
  228. package/esm/index.d.ts +615 -0
  229. package/esm/index.js +127 -0
  230. package/esm/index.js.map +1 -0
  231. package/package.json +21 -13
  232. package/src/BaseLinearDisplay/components/BaseLinearDisplay.tsx +6 -90
  233. package/src/BaseLinearDisplay/components/Block.tsx +5 -5
  234. package/src/BaseLinearDisplay/components/LinearBlocks.tsx +4 -4
  235. package/src/BaseLinearDisplay/components/ServerSideRenderedBlockContent.tsx +7 -8
  236. package/src/BaseLinearDisplay/components/Tooltip.tsx +107 -0
  237. package/src/BaseLinearDisplay/models/BaseLinearDisplayModel.tsx +16 -8
  238. package/src/BaseLinearDisplay/models/serverSideRenderedBlock.ts +1 -1
  239. package/src/LinearBasicDisplay/components/SetMaxHeight.tsx +10 -7
  240. package/src/LinearBasicDisplay/model.ts +21 -15
  241. package/src/LinearGenomeView/components/CenterLine.tsx +6 -11
  242. package/src/LinearGenomeView/components/ExportSvgDialog.tsx +5 -5
  243. package/src/LinearGenomeView/components/Header.tsx +12 -16
  244. package/src/LinearGenomeView/components/HelpDialog.tsx +10 -9
  245. package/src/LinearGenomeView/components/ImportForm.tsx +24 -37
  246. package/src/LinearGenomeView/components/LinearGenomeView.test.js +18 -8
  247. package/src/LinearGenomeView/components/LinearGenomeView.tsx +20 -13
  248. package/src/LinearGenomeView/components/MiniControls.tsx +29 -40
  249. package/src/LinearGenomeView/components/OverviewRubberBand.tsx +6 -10
  250. package/src/LinearGenomeView/components/OverviewScaleBar.tsx +103 -93
  251. package/src/LinearGenomeView/components/RefNameAutocomplete.tsx +13 -44
  252. package/src/LinearGenomeView/components/RubberBand.tsx +12 -17
  253. package/src/LinearGenomeView/components/Ruler.tsx +5 -11
  254. package/src/LinearGenomeView/components/ScaleBar.tsx +27 -34
  255. package/src/LinearGenomeView/components/SearchBox.tsx +22 -32
  256. package/src/LinearGenomeView/components/SearchResultsDialog.tsx +7 -7
  257. package/src/LinearGenomeView/components/SequenceDialog.tsx +9 -9
  258. package/src/LinearGenomeView/components/TrackContainer.tsx +12 -12
  259. package/src/LinearGenomeView/components/TrackLabel.tsx +37 -50
  260. package/src/LinearGenomeView/components/TracksContainer.tsx +8 -13
  261. package/src/LinearGenomeView/components/VerticalGuides.tsx +9 -11
  262. package/src/LinearGenomeView/components/ZoomControls.tsx +12 -13
  263. package/src/LinearGenomeView/components/__snapshots__/LinearGenomeView.test.js.snap +504 -568
  264. package/src/LinearGenomeView/components/util.ts +43 -0
  265. package/src/LinearGenomeView/index.test.ts +21 -5
  266. package/src/LinearGenomeView/index.tsx +101 -88
  267. package/src/index.ts +36 -31
  268. package/dist/LinearBareDisplay/index.test.js +0 -33
  269. package/dist/LinearGenomeView/components/LinearGenomeView.test.js +0 -234
  270. package/dist/LinearGenomeView/components/ScaleBar.test.js +0 -180
  271. package/dist/LinearGenomeView/index.test.js +0 -1170
  272. package/dist/LinearGenomeView/util.test.js +0 -78
@@ -1,582 +1,555 @@
1
1
  "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
- var _typeof = require("@babel/runtime/helpers/typeof");
6
-
7
- Object.defineProperty(exports, "__esModule", {
8
- value: true
2
+ var __assign = (this && this.__assign) || function () {
3
+ __assign = Object.assign || function(t) {
4
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
5
+ s = arguments[i];
6
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
7
+ t[p] = s[p];
8
+ }
9
+ return t;
10
+ };
11
+ return __assign.apply(this, arguments);
12
+ };
13
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
14
+ if (k2 === undefined) k2 = k;
15
+ var desc = Object.getOwnPropertyDescriptor(m, k);
16
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
17
+ desc = { enumerable: true, get: function() { return m[k]; } };
18
+ }
19
+ Object.defineProperty(o, k2, desc);
20
+ }) : (function(o, m, k, k2) {
21
+ if (k2 === undefined) k2 = k;
22
+ o[k2] = m[k];
23
+ }));
24
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
25
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
26
+ }) : function(o, v) {
27
+ o["default"] = v;
9
28
  });
29
+ var __importStar = (this && this.__importStar) || function (mod) {
30
+ if (mod && mod.__esModule) return mod;
31
+ var result = {};
32
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
33
+ __setModuleDefault(result, mod);
34
+ return result;
35
+ };
36
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
37
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
38
+ return new (P || (P = Promise))(function (resolve, reject) {
39
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
40
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
41
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
42
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
43
+ });
44
+ };
45
+ var __generator = (this && this.__generator) || function (thisArg, body) {
46
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
47
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
48
+ function verb(n) { return function (v) { return step([n, v]); }; }
49
+ function step(op) {
50
+ if (f) throw new TypeError("Generator is already executing.");
51
+ while (_) try {
52
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
53
+ if (y = 0, t) op = [op[0] & 2, t.value];
54
+ switch (op[0]) {
55
+ case 0: case 1: t = op; break;
56
+ case 4: _.label++; return { value: op[1], done: false };
57
+ case 5: _.label++; y = op[1]; op = [0]; continue;
58
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
59
+ default:
60
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
61
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
62
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
63
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
64
+ if (t[2]) _.ops.pop();
65
+ _.trys.pop(); continue;
66
+ }
67
+ op = body.call(thisArg, _);
68
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
69
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
70
+ }
71
+ };
72
+ var __rest = (this && this.__rest) || function (s, e) {
73
+ var t = {};
74
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
75
+ t[p] = s[p];
76
+ if (s != null && typeof Object.getOwnPropertySymbols === "function")
77
+ for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
78
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
79
+ t[p[i]] = s[p[i]];
80
+ }
81
+ return t;
82
+ };
83
+ var __values = (this && this.__values) || function(o) {
84
+ var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
85
+ if (m) return m.call(o);
86
+ if (o && typeof o.length === "number") return {
87
+ next: function () {
88
+ if (o && i >= o.length) o = void 0;
89
+ return { value: o && o[i++], done: !o };
90
+ }
91
+ };
92
+ throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
93
+ };
94
+ var __read = (this && this.__read) || function (o, n) {
95
+ var m = typeof Symbol === "function" && o[Symbol.iterator];
96
+ if (!m) return o;
97
+ var i = m.call(o), r, ar = [], e;
98
+ try {
99
+ while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
100
+ }
101
+ catch (error) { e = { error: error }; }
102
+ finally {
103
+ try {
104
+ if (r && !r.done && (m = i["return"])) m.call(i);
105
+ }
106
+ finally { if (e) throw e.error; }
107
+ }
108
+ return ar;
109
+ };
110
+ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
111
+ if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
112
+ if (ar || !(i in from)) {
113
+ if (!ar) ar = Array.prototype.slice.call(from, 0, i);
114
+ ar[i] = from[i];
115
+ }
116
+ }
117
+ return to.concat(ar || Array.prototype.slice.call(from));
118
+ };
119
+ var __importDefault = (this && this.__importDefault) || function (mod) {
120
+ return (mod && mod.__esModule) ? mod : { "default": mod };
121
+ };
122
+ Object.defineProperty(exports, "__esModule", { value: true });
10
123
  exports.BaseLinearDisplay = void 0;
11
-
12
- var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
13
-
14
- var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
15
-
16
- var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
17
-
18
- var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
19
-
20
- var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
21
-
22
- var _react = _interopRequireDefault(require("react"));
23
-
24
- var _core = require("@material-ui/core");
25
-
26
- var _models = require("@jbrowse/core/pluggableElementTypes/models");
27
-
28
- var _configuration = require("@jbrowse/core/configuration");
29
-
30
- var _util = require("@jbrowse/core/util");
31
-
32
- var _compositeMap = _interopRequireDefault(require("@jbrowse/core/util/compositeMap"));
33
-
34
- var _simpleFeature = require("@jbrowse/core/util/simpleFeature");
35
-
36
- var _tracks = require("@jbrowse/core/util/tracks");
37
-
38
- var _mobx = require("mobx");
39
-
40
- var _mobxStateTree = require("mobx-state-tree");
41
-
42
- var _MenuOpen = _interopRequireDefault(require("@material-ui/icons/MenuOpen"));
43
-
44
- var _BaseLinearDisplay = require("../components/BaseLinearDisplay");
45
-
46
- var _serverSideRenderedBlock = _interopRequireWildcard(require("./serverSideRenderedBlock"));
47
-
48
- var _excluded = ["blockState"];
49
-
50
- function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
51
-
52
- function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
53
-
54
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
55
-
56
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
57
-
58
- function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }
59
-
60
- function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
61
-
62
- function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
63
-
124
+ /* eslint-disable @typescript-eslint/no-explicit-any */
125
+ var react_1 = __importDefault(require("react"));
126
+ var material_1 = require("@mui/material");
127
+ var models_1 = require("@jbrowse/core/pluggableElementTypes/models");
128
+ var configuration_1 = require("@jbrowse/core/configuration");
129
+ var util_1 = require("@jbrowse/core/util");
130
+ var compositeMap_1 = __importDefault(require("@jbrowse/core/util/compositeMap"));
131
+ var simpleFeature_1 = require("@jbrowse/core/util/simpleFeature");
132
+ var tracks_1 = require("@jbrowse/core/util/tracks");
133
+ var mobx_1 = require("mobx");
134
+ var mobx_state_tree_1 = require("mobx-state-tree");
135
+ // icons
136
+ var MenuOpen_1 = __importDefault(require("@mui/icons-material/MenuOpen"));
137
+ var BaseLinearDisplay_1 = require("../components/BaseLinearDisplay");
138
+ var serverSideRenderedBlock_1 = __importStar(require("./serverSideRenderedBlock"));
64
139
  // stabilize clipid under test for snapshot
65
140
  function getId(id, index) {
66
- var isJest = typeof jest === 'undefined';
67
- return "clip-".concat(isJest ? id : 'jest', "-").concat(index);
141
+ var isJest = typeof jest === 'undefined';
142
+ return "clip-".concat(isJest ? id : 'jest', "-").concat(index);
68
143
  }
69
-
70
144
  function getDisplayStr(totalBytes) {
71
- var displayBp;
72
-
73
- if (Math.floor(totalBytes / 1000000) > 0) {
74
- displayBp = "".concat(parseFloat((totalBytes / 1000000).toPrecision(3)), " Mb");
75
- } else if (Math.floor(totalBytes / 1000) > 0) {
76
- displayBp = "".concat(parseFloat((totalBytes / 1000).toPrecision(3)), " Kb");
77
- } else {
78
- displayBp = "".concat(Math.floor(totalBytes), " bytes");
79
- }
80
-
81
- return displayBp;
145
+ var displayBp;
146
+ if (Math.floor(totalBytes / 1000000) > 0) {
147
+ displayBp = "".concat(parseFloat((totalBytes / 1000000).toPrecision(3)), " Mb");
148
+ }
149
+ else if (Math.floor(totalBytes / 1000) > 0) {
150
+ displayBp = "".concat(parseFloat((totalBytes / 1000).toPrecision(3)), " Kb");
151
+ }
152
+ else {
153
+ displayBp = "".concat(Math.floor(totalBytes), " bytes");
154
+ }
155
+ return displayBp;
82
156
  }
83
-
84
157
  var minDisplayHeight = 20;
85
158
  var defaultDisplayHeight = 100;
86
-
87
- var BaseLinearDisplay = _mobxStateTree.types.compose('BaseLinearDisplay', _models.BaseDisplay, _mobxStateTree.types.model({
88
- height: _mobxStateTree.types.optional(_mobxStateTree.types.refinement('displayHeight', _mobxStateTree.types.number, function (n) {
89
- return n >= minDisplayHeight;
90
- }), defaultDisplayHeight),
91
- blockState: _mobxStateTree.types.map(_serverSideRenderedBlock.default),
92
- userBpPerPxLimit: _mobxStateTree.types.maybe(_mobxStateTree.types.number),
93
- userByteSizeLimit: _mobxStateTree.types.maybe(_mobxStateTree.types.number)
94
- })).volatile(function () {
95
- return {
159
+ exports.BaseLinearDisplay = mobx_state_tree_1.types
160
+ .compose('BaseLinearDisplay', models_1.BaseDisplay, mobx_state_tree_1.types.model({
161
+ height: mobx_state_tree_1.types.optional(mobx_state_tree_1.types.refinement('displayHeight', mobx_state_tree_1.types.number, function (n) { return n >= minDisplayHeight; }), defaultDisplayHeight),
162
+ blockState: mobx_state_tree_1.types.map(serverSideRenderedBlock_1.default),
163
+ userBpPerPxLimit: mobx_state_tree_1.types.maybe(mobx_state_tree_1.types.number),
164
+ userByteSizeLimit: mobx_state_tree_1.types.maybe(mobx_state_tree_1.types.number),
165
+ }))
166
+ .volatile(function () { return ({
96
167
  currBpPerPx: 0,
97
168
  message: '',
98
169
  featureIdUnderMouse: undefined,
99
170
  contextMenuFeature: undefined,
100
171
  scrollTop: 0,
101
172
  estimatedRegionStatsP: undefined,
102
- estimatedRegionStats: undefined
103
- };
104
- }).views(function (self) {
105
- return {
173
+ estimatedRegionStats: undefined,
174
+ }); })
175
+ .views(function (self) { return ({
106
176
  get blockType() {
107
- return 'staticBlocks';
177
+ return 'staticBlocks';
108
178
  },
109
-
110
179
  get blockDefinitions() {
111
- var blockType = this.blockType;
112
- var view = (0, _util.getContainingView)(self);
113
-
114
- if (!view.initialized) {
115
- throw new Error('view not initialized yet');
116
- }
117
-
118
- return view[blockType];
119
- }
120
-
121
- };
122
- }).views(function (self) {
123
- return {
180
+ var blockType = this.blockType;
181
+ var view = (0, util_1.getContainingView)(self);
182
+ if (!view.initialized) {
183
+ throw new Error('view not initialized yet');
184
+ }
185
+ return view[blockType];
186
+ },
187
+ }); })
188
+ .views(function (self) { return ({
124
189
  /**
125
190
  * how many milliseconds to wait for the display to
126
191
  * "settle" before re-rendering a block
127
192
  */
128
193
  get renderDelay() {
129
- return 50;
194
+ return 50;
130
195
  },
131
-
132
196
  get TooltipComponent() {
133
- return _BaseLinearDisplay.Tooltip;
197
+ return BaseLinearDisplay_1.Tooltip;
134
198
  },
135
-
136
199
  /**
137
200
  * returns a string feature ID if the globally-selected object
138
201
  * is probably a feature
139
202
  */
140
203
  get selectedFeatureId() {
141
- if ((0, _mobxStateTree.isAlive)(self)) {
142
- var _getSession = (0, _util.getSession)(self),
143
- selection = _getSession.selection; // does it quack like a feature?
144
-
145
-
146
- if ((0, _simpleFeature.isFeature)(selection)) {
147
- return selection.id();
204
+ if ((0, mobx_state_tree_1.isAlive)(self)) {
205
+ var selection = (0, util_1.getSession)(self).selection;
206
+ // does it quack like a feature?
207
+ if ((0, simpleFeature_1.isFeature)(selection)) {
208
+ return selection.id();
209
+ }
148
210
  }
149
- }
150
-
151
- return undefined;
211
+ return undefined;
152
212
  },
153
-
154
213
  /**
155
214
  * if a display-level message should be displayed instead of the blocks,
156
215
  * make this return a react component
157
216
  */
158
217
  get DisplayMessageComponent() {
159
- return undefined;
160
- }
161
-
162
- };
163
- }).views(function (self) {
164
- return {
218
+ return undefined;
219
+ },
220
+ }); })
221
+ .views(function (self) { return ({
165
222
  /**
166
223
  * a CompositeMap of `featureId -> feature obj` that
167
224
  * just looks in all the block data for that feature
168
225
  */
169
226
  get features() {
170
- var featureMaps = [];
171
-
172
- var _iterator = _createForOfIteratorHelper(self.blockState.values()),
173
- _step;
174
-
175
- try {
176
- for (_iterator.s(); !(_step = _iterator.n()).done;) {
177
- var block = _step.value;
178
-
179
- if (block && block.features) {
180
- featureMaps.push(block.features);
181
- }
227
+ var e_1, _a;
228
+ var featureMaps = [];
229
+ try {
230
+ for (var _b = __values(self.blockState.values()), _c = _b.next(); !_c.done; _c = _b.next()) {
231
+ var block = _c.value;
232
+ if (block && block.features) {
233
+ featureMaps.push(block.features);
234
+ }
235
+ }
236
+ }
237
+ catch (e_1_1) { e_1 = { error: e_1_1 }; }
238
+ finally {
239
+ try {
240
+ if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
241
+ }
242
+ finally { if (e_1) throw e_1.error; }
182
243
  }
183
- } catch (err) {
184
- _iterator.e(err);
185
- } finally {
186
- _iterator.f();
187
- }
188
-
189
- return new _compositeMap.default(featureMaps);
190
- },
191
-
244
+ return new compositeMap_1.default(featureMaps);
245
+ },
192
246
  get featureUnderMouse() {
193
- var feat = self.featureIdUnderMouse;
194
- return feat ? this.features.get(feat) : undefined;
247
+ var feat = self.featureIdUnderMouse;
248
+ return feat ? this.features.get(feat) : undefined;
195
249
  },
196
-
197
- getFeatureOverlapping: function getFeatureOverlapping(blockKey, x, y) {
198
- var _self$blockState$get, _self$blockState$get$;
199
-
200
- return (_self$blockState$get = self.blockState.get(blockKey)) === null || _self$blockState$get === void 0 ? void 0 : (_self$blockState$get$ = _self$blockState$get.layout) === null || _self$blockState$get$ === void 0 ? void 0 : _self$blockState$get$.getByCoord(x, y);
250
+ getFeatureOverlapping: function (blockKey, x, y) {
251
+ var _a, _b;
252
+ 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);
201
253
  },
202
- getFeatureByID: function getFeatureByID(blockKey, id) {
203
- var _self$blockState$get2, _self$blockState$get3;
204
-
205
- return (_self$blockState$get2 = self.blockState.get(blockKey)) === null || _self$blockState$get2 === void 0 ? void 0 : (_self$blockState$get3 = _self$blockState$get2.layout) === null || _self$blockState$get3 === void 0 ? void 0 : _self$blockState$get3.getByID(id);
254
+ getFeatureByID: function (blockKey, id) {
255
+ var _a, _b;
256
+ return (_b = (_a = self.blockState.get(blockKey)) === null || _a === void 0 ? void 0 : _a.layout) === null || _b === void 0 ? void 0 : _b.getByID(id);
206
257
  },
207
258
  // if block key is not supplied, can look at all blocks
208
- searchFeatureByID: function searchFeatureByID(id) {
209
- var ret;
210
- self.blockState.forEach(function (block) {
211
- var _block$layout;
212
-
213
- var val = block === null || block === void 0 ? void 0 : (_block$layout = block.layout) === null || _block$layout === void 0 ? void 0 : _block$layout.getByID(id);
214
-
215
- if (val) {
216
- ret = val;
217
- }
218
- });
219
- return ret;
259
+ searchFeatureByID: function (id) {
260
+ var ret;
261
+ self.blockState.forEach(function (block) {
262
+ var _a;
263
+ var val = (_a = block === null || block === void 0 ? void 0 : block.layout) === null || _a === void 0 ? void 0 : _a.getByID(id);
264
+ if (val) {
265
+ ret = val;
266
+ }
267
+ });
268
+ return ret;
220
269
  },
221
-
222
270
  get currentBytesRequested() {
223
- var _self$estimatedRegion;
224
-
225
- return ((_self$estimatedRegion = self.estimatedRegionStats) === null || _self$estimatedRegion === void 0 ? void 0 : _self$estimatedRegion.bytes) || 0;
271
+ var _a;
272
+ return ((_a = self.estimatedRegionStats) === null || _a === void 0 ? void 0 : _a.bytes) || 0;
226
273
  },
227
-
228
274
  get currentFeatureScreenDensity() {
229
- var _self$estimatedRegion2;
230
-
231
- var view = (0, _util.getContainingView)(self);
232
- return (((_self$estimatedRegion2 = self.estimatedRegionStats) === null || _self$estimatedRegion2 === void 0 ? void 0 : _self$estimatedRegion2.featureDensity) || 0) * view.bpPerPx;
275
+ var _a;
276
+ var view = (0, util_1.getContainingView)(self);
277
+ return (((_a = self.estimatedRegionStats) === null || _a === void 0 ? void 0 : _a.featureDensity) || 0) * view.bpPerPx;
233
278
  },
234
-
235
279
  get maxFeatureScreenDensity() {
236
- return (0, _configuration.getConf)(self, 'maxFeatureScreenDensity');
280
+ return (0, configuration_1.getConf)(self, 'maxFeatureScreenDensity');
237
281
  },
238
-
239
282
  get estimatedStatsReady() {
240
- return !!self.estimatedRegionStats;
283
+ return !!self.estimatedRegionStats;
241
284
  },
242
-
243
285
  get maxAllowableBytes() {
244
- var _self$estimatedRegion3;
245
-
246
- return self.userByteSizeLimit || ((_self$estimatedRegion3 = self.estimatedRegionStats) === null || _self$estimatedRegion3 === void 0 ? void 0 : _self$estimatedRegion3.fetchSizeLimit) || (0, _configuration.getConf)(self, 'fetchSizeLimit');
247
- }
248
-
249
- };
250
- }).actions(function (self) {
251
- return {
286
+ var _a;
287
+ return (self.userByteSizeLimit ||
288
+ ((_a = self.estimatedRegionStats) === null || _a === void 0 ? void 0 : _a.fetchSizeLimit) ||
289
+ (0, configuration_1.getConf)(self, 'fetchSizeLimit'));
290
+ },
291
+ }); })
292
+ .actions(function (self) { return ({
252
293
  // base display reload does nothing, see specialized displays for details
253
- setMessage: function setMessage(message) {
254
- self.message = message;
255
- },
256
- afterAttach: function afterAttach() {
257
- var _this = this;
258
-
259
- // watch the parent's blocks to update our block state when they change,
260
- // then we recreate the blocks on our own model (creating and deleting to
261
- // match the parent blocks)
262
- var blockWatchDisposer = (0, _mobx.autorun)(function () {
263
- var blocksPresent = {};
264
- var view = (0, _util.getContainingView)(self);
265
-
266
- if (view.initialized) {
267
- self.blockDefinitions.contentBlocks.forEach(function (block) {
268
- blocksPresent[block.key] = true;
269
-
270
- if (!self.blockState.has(block.key)) {
271
- _this.addBlock(block.key, block);
272
- }
273
- });
274
- self.blockState.forEach(function (_, key) {
275
- if (!blocksPresent[key]) {
276
- _this.deleteBlock(key);
294
+ setMessage: function (message) {
295
+ self.message = message;
296
+ },
297
+ afterAttach: function () {
298
+ var _this = this;
299
+ // watch the parent's blocks to update our block state when they change,
300
+ // then we recreate the blocks on our own model (creating and deleting to
301
+ // match the parent blocks)
302
+ var blockWatchDisposer = (0, mobx_1.autorun)(function () {
303
+ var blocksPresent = {};
304
+ var view = (0, util_1.getContainingView)(self);
305
+ if (view.initialized) {
306
+ self.blockDefinitions.contentBlocks.forEach(function (block) {
307
+ blocksPresent[block.key] = true;
308
+ if (!self.blockState.has(block.key)) {
309
+ _this.addBlock(block.key, block);
310
+ }
311
+ });
312
+ self.blockState.forEach(function (_, key) {
313
+ if (!blocksPresent[key]) {
314
+ _this.deleteBlock(key);
315
+ }
316
+ });
277
317
  }
278
- });
279
- }
280
- });
281
- (0, _mobxStateTree.addDisposer)(self, blockWatchDisposer);
318
+ });
319
+ (0, mobx_state_tree_1.addDisposer)(self, blockWatchDisposer);
282
320
  },
283
- estimateRegionsStats: function estimateRegionsStats(regions, opts) {
284
- var _this2 = this;
285
-
286
- if (self.estimatedRegionStatsP) {
287
- return self.estimatedRegionStatsP;
288
- }
289
-
290
- var _getSession2 = (0, _util.getSession)(self),
291
- rpcManager = _getSession2.rpcManager;
292
-
293
- var adapterConfig = self.adapterConfig;
294
-
295
- if (!adapterConfig) {
296
- // A track extending the base track might not have an adapter config
297
- // e.g. Apollo tracks don't use adapters
298
- return Promise.resolve({});
299
- }
300
-
301
- var sessionId = (0, _tracks.getRpcSessionId)(self);
302
-
303
- var params = _objectSpread({
304
- sessionId: sessionId,
305
- regions: regions,
306
- adapterConfig: adapterConfig,
307
- statusCallback: function statusCallback(message) {
308
- if ((0, _mobxStateTree.isAlive)(self)) {
309
- _this2.setMessage(message);
310
- }
321
+ estimateRegionsStats: function (regions, opts) {
322
+ var _this = this;
323
+ if (self.estimatedRegionStatsP) {
324
+ return self.estimatedRegionStatsP;
325
+ }
326
+ var rpcManager = (0, util_1.getSession)(self).rpcManager;
327
+ var adapterConfig = self.adapterConfig;
328
+ if (!adapterConfig) {
329
+ // A track extending the base track might not have an adapter config
330
+ // e.g. Apollo tracks don't use adapters
331
+ return Promise.resolve({});
311
332
  }
312
- }, opts);
313
-
314
- self.estimatedRegionStatsP = rpcManager.call(sessionId, 'CoreEstimateRegionStats', params).catch(function (e) {
315
- _this2.setRegionStatsP(undefined);
316
-
317
- throw e;
318
- });
319
- return self.estimatedRegionStatsP;
320
- },
321
- setRegionStatsP: function setRegionStatsP(p) {
322
- self.estimatedRegionStatsP = p;
323
- },
324
- setRegionStats: function setRegionStats(estimatedRegionStats) {
325
- self.estimatedRegionStats = estimatedRegionStats;
326
- },
327
- clearRegionStats: function clearRegionStats() {
328
- self.estimatedRegionStatsP = undefined;
329
- self.estimatedRegionStats = undefined;
330
- },
331
- setHeight: function setHeight(displayHeight) {
332
- if (displayHeight > minDisplayHeight) {
333
- self.height = displayHeight;
334
- } else {
335
- self.height = minDisplayHeight;
336
- }
337
-
338
- return self.height;
339
- },
340
- resizeHeight: function resizeHeight(distance) {
341
- var oldHeight = self.height;
342
- var newHeight = this.setHeight(self.height + distance);
343
- return newHeight - oldHeight;
344
- },
345
- setScrollTop: function setScrollTop(scrollTop) {
346
- self.scrollTop = scrollTop;
347
- },
348
- updateStatsLimit: function updateStatsLimit(stats) {
349
- var view = (0, _util.getContainingView)(self);
350
-
351
- if (stats.bytes) {
352
- self.userByteSizeLimit = stats.bytes;
353
- } else {
354
- self.userBpPerPxLimit = view.bpPerPx;
355
- }
356
- },
357
- addBlock: function addBlock(key, block) {
358
- self.blockState.set(key, _serverSideRenderedBlock.default.create({
359
- key: key,
360
- region: block.toRegion()
361
- }));
362
- },
363
- setCurrBpPerPx: function setCurrBpPerPx(n) {
364
- self.currBpPerPx = n;
365
- },
366
- deleteBlock: function deleteBlock(key) {
367
- self.blockState.delete(key);
368
- },
369
- selectFeature: function selectFeature(feature) {
370
- var session = (0, _util.getSession)(self);
371
-
372
- if ((0, _util.isSessionModelWithWidgets)(session)) {
373
- var featureWidget = session.addWidget('BaseFeatureWidget', 'baseFeature', {
374
- featureData: feature.toJSON(),
375
- view: (0, _util.getContainingView)(self)
333
+ var sessionId = (0, tracks_1.getRpcSessionId)(self);
334
+ var params = __assign({ sessionId: sessionId, regions: regions, adapterConfig: adapterConfig, statusCallback: function (message) {
335
+ if ((0, mobx_state_tree_1.isAlive)(self)) {
336
+ _this.setMessage(message);
337
+ }
338
+ } }, opts);
339
+ self.estimatedRegionStatsP = rpcManager
340
+ .call(sessionId, 'CoreEstimateRegionStats', params)
341
+ .catch(function (e) {
342
+ _this.setRegionStatsP(undefined);
343
+ throw e;
376
344
  });
377
- session.showWidget(featureWidget);
378
- }
379
-
380
- if ((0, _util.isSelectionContainer)(session)) {
381
- session.setSelection(feature);
382
- }
383
- },
384
- clearFeatureSelection: function clearFeatureSelection() {
385
- var session = (0, _util.getSession)(self);
386
- session.clearSelection();
387
- },
388
- setFeatureIdUnderMouse: function setFeatureIdUnderMouse(feature) {
389
- self.featureIdUnderMouse = feature;
390
- },
391
- reload: function reload() {
392
- ;
393
- (0, _toConsumableArray2.default)(self.blockState.values()).map(function (val) {
394
- return val.doReload();
395
- });
396
- },
397
- setContextMenuFeature: function setContextMenuFeature(feature) {
398
- self.contextMenuFeature = feature;
399
- }
400
- };
401
- }).views(function (self) {
402
- return {
345
+ return self.estimatedRegionStatsP;
346
+ },
347
+ setRegionStatsP: function (p) {
348
+ self.estimatedRegionStatsP = p;
349
+ },
350
+ setRegionStats: function (estimatedRegionStats) {
351
+ self.estimatedRegionStats = estimatedRegionStats;
352
+ },
353
+ clearRegionStats: function () {
354
+ self.estimatedRegionStatsP = undefined;
355
+ self.estimatedRegionStats = undefined;
356
+ },
357
+ setHeight: function (displayHeight) {
358
+ if (displayHeight > minDisplayHeight) {
359
+ self.height = displayHeight;
360
+ }
361
+ else {
362
+ self.height = minDisplayHeight;
363
+ }
364
+ return self.height;
365
+ },
366
+ resizeHeight: function (distance) {
367
+ var oldHeight = self.height;
368
+ var newHeight = this.setHeight(self.height + distance);
369
+ return newHeight - oldHeight;
370
+ },
371
+ setScrollTop: function (scrollTop) {
372
+ self.scrollTop = scrollTop;
373
+ },
374
+ updateStatsLimit: function (stats) {
375
+ var view = (0, util_1.getContainingView)(self);
376
+ if (stats.bytes) {
377
+ self.userByteSizeLimit = stats.bytes;
378
+ }
379
+ else {
380
+ self.userBpPerPxLimit = view.bpPerPx;
381
+ }
382
+ },
383
+ addBlock: function (key, block) {
384
+ self.blockState.set(key, serverSideRenderedBlock_1.default.create({
385
+ key: key,
386
+ region: block.toRegion(),
387
+ }));
388
+ },
389
+ setCurrBpPerPx: function (n) {
390
+ self.currBpPerPx = n;
391
+ },
392
+ deleteBlock: function (key) {
393
+ self.blockState.delete(key);
394
+ },
395
+ selectFeature: function (feature) {
396
+ var session = (0, util_1.getSession)(self);
397
+ if ((0, util_1.isSessionModelWithWidgets)(session)) {
398
+ var featureWidget = session.addWidget('BaseFeatureWidget', 'baseFeature', {
399
+ view: (0, util_1.getContainingView)(self),
400
+ track: (0, util_1.getContainingTrack)(self),
401
+ featureData: feature.toJSON(),
402
+ });
403
+ session.showWidget(featureWidget);
404
+ }
405
+ if ((0, util_1.isSelectionContainer)(session)) {
406
+ session.setSelection(feature);
407
+ }
408
+ },
409
+ clearFeatureSelection: function () {
410
+ var session = (0, util_1.getSession)(self);
411
+ session.clearSelection();
412
+ },
413
+ setFeatureIdUnderMouse: function (feature) {
414
+ self.featureIdUnderMouse = feature;
415
+ },
416
+ reload: function () {
417
+ ;
418
+ __spreadArray([], __read(self.blockState.values()), false).map(function (val) { return val.doReload(); });
419
+ },
420
+ setContextMenuFeature: function (feature) {
421
+ self.contextMenuFeature = feature;
422
+ },
423
+ }); })
424
+ .views(function (self) { return ({
403
425
  // region is too large if:
404
426
  // - stats are ready
405
427
  // - region is greater than 20kb (don't warn when zoomed in less than that)
406
428
  // - and bytes > max allowed bytes || curr density>max density
407
429
  get regionTooLarge() {
408
- var view = (0, _util.getContainingView)(self);
409
-
410
- if (!self.estimatedStatsReady || view.dynamicBlocks.totalBp < 20000) {
411
- return false;
412
- }
413
-
414
- var bpLimitOrDensity = self.userBpPerPxLimit ? view.bpPerPx > self.userBpPerPxLimit : self.currentFeatureScreenDensity > self.maxFeatureScreenDensity;
415
- return self.currentBytesRequested > self.maxAllowableBytes || bpLimitOrDensity;
416
- },
417
-
430
+ var view = (0, util_1.getContainingView)(self);
431
+ if (!self.estimatedStatsReady || view.dynamicBlocks.totalBp < 20000) {
432
+ return false;
433
+ }
434
+ var bpLimitOrDensity = self.userBpPerPxLimit
435
+ ? view.bpPerPx > self.userBpPerPxLimit
436
+ : self.currentFeatureScreenDensity > self.maxFeatureScreenDensity;
437
+ return (self.currentBytesRequested > self.maxAllowableBytes || bpLimitOrDensity);
438
+ },
418
439
  // only shows a message of bytes requested is defined, the feature density
419
440
  // based stats don't produce any helpful message besides to zoom in
420
441
  get regionTooLargeReason() {
421
- var req = self.currentBytesRequested;
422
- var max = self.maxAllowableBytes;
423
- return req && req > max ? "Requested too much data (".concat(getDisplayStr(req), ")") : '';
424
- }
425
-
426
- };
427
- }).actions(function (self) {
428
- var superReload = self.reload;
429
- return {
430
- reload: function reload() {
431
- return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee() {
432
- var aborter, view, estimatedRegionStats;
433
- return _regenerator.default.wrap(function _callee$(_context) {
434
- while (1) {
435
- switch (_context.prev = _context.next) {
436
- case 0:
437
- self.setError();
438
- aborter = new AbortController();
439
- view = (0, _util.getContainingView)(self); // extra check for contentBlocks.length
440
- // https://github.com/GMOD/jbrowse-components/issues/2694
441
-
442
- if (!(!view.initialized || !view.staticBlocks.contentBlocks.length)) {
443
- _context.next = 5;
444
- break;
445
- }
446
-
447
- return _context.abrupt("return");
448
-
449
- case 5:
450
- _context.prev = 5;
451
- self.estimatedRegionStatsP = self.estimateRegionsStats(view.staticBlocks.contentBlocks, {
452
- signal: aborter.signal
442
+ var req = self.currentBytesRequested;
443
+ var max = self.maxAllowableBytes;
444
+ return req && req > max
445
+ ? "Requested too much data (".concat(getDisplayStr(req), ")")
446
+ : '';
447
+ },
448
+ }); })
449
+ .actions(function (self) {
450
+ var superReload = self.reload;
451
+ return {
452
+ reload: function () {
453
+ return __awaiter(this, void 0, void 0, function () {
454
+ var aborter, view, estimatedRegionStats, e_2;
455
+ return __generator(this, function (_a) {
456
+ switch (_a.label) {
457
+ case 0:
458
+ self.setError();
459
+ aborter = new AbortController();
460
+ view = (0, util_1.getContainingView)(self);
461
+ // extra check for contentBlocks.length
462
+ // https://github.com/GMOD/jbrowse-components/issues/2694
463
+ if (!view.initialized || !view.staticBlocks.contentBlocks.length) {
464
+ return [2 /*return*/];
465
+ }
466
+ _a.label = 1;
467
+ case 1:
468
+ _a.trys.push([1, 3, , 4]);
469
+ self.estimatedRegionStatsP = self.estimateRegionsStats(view.staticBlocks.contentBlocks, { signal: aborter.signal });
470
+ return [4 /*yield*/, self.estimatedRegionStatsP];
471
+ case 2:
472
+ estimatedRegionStats = _a.sent();
473
+ if ((0, mobx_state_tree_1.isAlive)(self)) {
474
+ self.setRegionStats(estimatedRegionStats);
475
+ superReload();
476
+ }
477
+ else {
478
+ return [2 /*return*/];
479
+ }
480
+ return [3 /*break*/, 4];
481
+ case 3:
482
+ e_2 = _a.sent();
483
+ console.error(e_2);
484
+ self.setError(e_2);
485
+ return [3 /*break*/, 4];
486
+ case 4: return [2 /*return*/];
487
+ }
453
488
  });
454
- _context.next = 9;
455
- return self.estimatedRegionStatsP;
456
-
457
- case 9:
458
- estimatedRegionStats = _context.sent;
459
-
460
- if (!(0, _mobxStateTree.isAlive)(self)) {
461
- _context.next = 15;
462
- break;
463
- }
464
-
465
- self.setRegionStats(estimatedRegionStats);
466
- superReload();
467
- _context.next = 16;
468
- break;
469
-
470
- case 15:
471
- return _context.abrupt("return");
472
-
473
- case 16:
474
- _context.next = 22;
475
- break;
476
-
477
- case 18:
478
- _context.prev = 18;
479
- _context.t0 = _context["catch"](5);
480
- console.error(_context.t0);
481
- self.setError(_context.t0);
482
-
483
- case 22:
484
- case "end":
485
- return _context.stop();
486
- }
487
- }
488
- }, _callee, null, [[5, 18]]);
489
- }))();
490
- },
491
- afterAttach: function afterAttach() {
492
- // this autorun performs stats estimation
493
- //
494
- // the chain of events calls estimateRegionsStats against the data
495
- // adapter which by default uses featureDensity, but can also respond
496
- // with a byte size estimate and fetch size limit (data adapter can
497
- // define what is too much data)
498
- (0, _mobxStateTree.addDisposer)(self, (0, _mobx.autorun)( /*#__PURE__*/(0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2() {
499
- var _self$estimatedRegion4, aborter, view, statsP, estimatedRegionStats;
500
-
501
- return _regenerator.default.wrap(function _callee2$(_context2) {
502
- while (1) {
503
- switch (_context2.prev = _context2.next) {
504
- case 0:
505
- _context2.prev = 0;
506
- aborter = new AbortController();
507
- view = (0, _util.getContainingView)(self); // extra check for contentBlocks.length
508
- // https://github.com/GMOD/jbrowse-components/issues/2694
509
-
510
- if (!(!view.initialized || !view.staticBlocks.contentBlocks.length)) {
511
- _context2.next = 5;
512
- break;
513
- }
514
-
515
- return _context2.abrupt("return");
516
-
517
- case 5:
518
- if (!(((_self$estimatedRegion4 = self.estimatedRegionStats) === null || _self$estimatedRegion4 === void 0 ? void 0 : _self$estimatedRegion4.featureDensity) !== undefined)) {
519
- _context2.next = 8;
520
- break;
521
- }
522
-
523
- self.setCurrBpPerPx(view.bpPerPx);
524
- return _context2.abrupt("return");
525
-
526
- case 8:
527
- if (!(view.bpPerPx === self.currBpPerPx)) {
528
- _context2.next = 10;
529
- break;
530
- }
531
-
532
- return _context2.abrupt("return");
533
-
534
- case 10:
535
- self.clearRegionStats();
536
- self.setCurrBpPerPx(view.bpPerPx);
537
- statsP = self.estimateRegionsStats(view.staticBlocks.contentBlocks, {
538
- signal: aborter.signal
489
+ });
490
+ },
491
+ afterAttach: function () {
492
+ var _this = this;
493
+ // this autorun performs stats estimation
494
+ //
495
+ // the chain of events calls estimateRegionsStats against the data
496
+ // adapter which by default uses featureDensity, but can also respond
497
+ // with a byte size estimate and fetch size limit (data adapter can
498
+ // define what is too much data)
499
+ (0, mobx_state_tree_1.addDisposer)(self, (0, mobx_1.autorun)(function () { return __awaiter(_this, void 0, void 0, function () {
500
+ var aborter, view, statsP, estimatedRegionStats, e_3;
501
+ var _a;
502
+ return __generator(this, function (_b) {
503
+ switch (_b.label) {
504
+ case 0:
505
+ _b.trys.push([0, 2, , 3]);
506
+ aborter = new AbortController();
507
+ view = (0, util_1.getContainingView)(self);
508
+ // extra check for contentBlocks.length
509
+ // https://github.com/GMOD/jbrowse-components/issues/2694
510
+ if (!view.initialized ||
511
+ !view.staticBlocks.contentBlocks.length) {
512
+ return [2 /*return*/];
513
+ }
514
+ // don't re-estimate featureDensity even if zoom level changes,
515
+ // jbrowse1-style assume it's sort of representative
516
+ if (((_a = self.estimatedRegionStats) === null || _a === void 0 ? void 0 : _a.featureDensity) !== undefined) {
517
+ self.setCurrBpPerPx(view.bpPerPx);
518
+ return [2 /*return*/];
519
+ }
520
+ // we estimate stats once at a given zoom level
521
+ if (view.bpPerPx === self.currBpPerPx) {
522
+ return [2 /*return*/];
523
+ }
524
+ self.clearRegionStats();
525
+ self.setCurrBpPerPx(view.bpPerPx);
526
+ statsP = self.estimateRegionsStats(view.staticBlocks.contentBlocks, { signal: aborter.signal });
527
+ self.setRegionStatsP(statsP);
528
+ return [4 /*yield*/, statsP];
529
+ case 1:
530
+ estimatedRegionStats = _b.sent();
531
+ if ((0, mobx_state_tree_1.isAlive)(self)) {
532
+ self.setRegionStats(estimatedRegionStats);
533
+ }
534
+ return [3 /*break*/, 3];
535
+ case 2:
536
+ e_3 = _b.sent();
537
+ if (!(0, util_1.isAbortException)(e_3) && (0, mobx_state_tree_1.isAlive)(self)) {
538
+ console.error(e_3);
539
+ self.setError(e_3);
540
+ }
541
+ return [3 /*break*/, 3];
542
+ case 3: return [2 /*return*/];
543
+ }
539
544
  });
540
- self.setRegionStatsP(statsP);
541
- _context2.next = 16;
542
- return statsP;
543
-
544
- case 16:
545
- estimatedRegionStats = _context2.sent;
546
-
547
- if ((0, _mobxStateTree.isAlive)(self)) {
548
- self.setRegionStats(estimatedRegionStats);
549
- }
550
-
551
- _context2.next = 23;
552
- break;
553
-
554
- case 20:
555
- _context2.prev = 20;
556
- _context2.t0 = _context2["catch"](0);
557
-
558
- if (!(0, _util.isAbortException)(_context2.t0) && (0, _mobxStateTree.isAlive)(self)) {
559
- console.error(_context2.t0);
560
- self.setError(_context2.t0);
561
- }
562
-
563
- case 23:
564
- case "end":
565
- return _context2.stop();
566
- }
567
- }
568
- }, _callee2, null, [[0, 20]]);
569
- })), {
570
- delay: 500
571
- }));
572
- }
573
- };
574
- }).views(function (self) {
575
- return {
576
- regionCannotBeRenderedText: function regionCannotBeRenderedText(_region) {
577
- return self.regionTooLarge ? 'Force load to see features' : '';
545
+ }); }, { delay: 500 }));
546
+ },
547
+ };
548
+ })
549
+ .views(function (self) { return ({
550
+ regionCannotBeRenderedText: function (_region) {
551
+ return self.regionTooLarge ? 'Force load to see features' : '';
578
552
  },
579
-
580
553
  /**
581
554
  * @param region -
582
555
  * @returns falsy if the region is fine to try rendering. Otherwise,
@@ -584,186 +557,135 @@ var BaseLinearDisplay = _mobxStateTree.types.compose('BaseLinearDisplay', _model
584
557
  * string of text describes why it cannot be rendered
585
558
  * react node allows user to force load at current setting
586
559
  */
587
- regionCannotBeRendered: function regionCannotBeRendered(_region) {
588
- var regionTooLarge = self.regionTooLarge,
589
- regionTooLargeReason = self.regionTooLargeReason;
590
-
591
- if (regionTooLarge) {
592
- return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_core.Typography, {
593
- component: "span",
594
- variant: "body2"
595
- }, regionTooLargeReason ? regionTooLargeReason + '. ' : '', "Zoom in to see features or", ' '), /*#__PURE__*/_react.default.createElement(_core.Button, {
596
- "data-testid": "force_reload_button",
597
- onClick: function onClick() {
598
- if (!self.estimatedRegionStats) {
599
- console.error('No global stats?');
600
- } else {
601
- self.updateStatsLimit(self.estimatedRegionStats);
602
- self.reload();
603
- }
604
- },
605
- variant: "outlined"
606
- }, "Force Load"), /*#__PURE__*/_react.default.createElement(_core.Typography, {
607
- component: "span",
608
- variant: "body2"
609
- }, "(force load may be slow)"));
610
- }
611
-
612
- return undefined;
613
- },
614
- trackMenuItems: function trackMenuItems() {
615
- return [];
616
- },
617
- contextMenuItems: function contextMenuItems() {
618
- return self.contextMenuFeature ? [{
619
- label: 'Open feature details',
620
- icon: _MenuOpen.default,
621
- onClick: function onClick() {
622
- if (self.contextMenuFeature) {
623
- self.selectFeature(self.contextMenuFeature);
624
- }
625
- }
626
- }] : [];
627
- },
628
- renderProps: function renderProps() {
629
- var view = (0, _util.getContainingView)(self);
630
- return _objectSpread(_objectSpread({}, (0, _tracks.getParentRenderProps)(self)), {}, {
631
- notReady: self.currBpPerPx !== view.bpPerPx || !self.estimatedRegionStats,
632
- rpcDriverName: self.rpcDriverName,
633
- displayModel: self,
634
- onFeatureClick: function onFeatureClick(_, featureId) {
635
- var f = featureId || self.featureIdUnderMouse;
636
-
637
- if (!f) {
638
- self.clearFeatureSelection();
639
- } else {
640
- var feature = self.features.get(f);
641
-
642
- if (feature) {
643
- self.selectFeature(feature);
644
- }
645
- }
646
- },
647
- onClick: function onClick() {
648
- self.clearFeatureSelection();
649
- },
650
- // similar to click but opens a menu with further options
651
- onFeatureContextMenu: function onFeatureContextMenu(_, featureId) {
652
- var f = featureId || self.featureIdUnderMouse;
653
-
654
- if (!f) {
655
- self.clearFeatureSelection();
656
- } else {
657
- // feature id under mouse passed to context menu
658
- self.setContextMenuFeature(self.features.get(f));
659
- }
660
- },
661
- onMouseMove: function onMouseMove(_, featureId) {
662
- self.setFeatureIdUnderMouse(featureId);
663
- },
664
- onMouseLeave: function onMouseLeave(_) {
665
- self.setFeatureIdUnderMouse(undefined);
666
- },
667
- onContextMenu: function onContextMenu() {
668
- self.setContextMenuFeature(undefined);
669
- self.clearFeatureSelection();
560
+ regionCannotBeRendered: function (_region) {
561
+ var regionTooLarge = self.regionTooLarge, regionTooLargeReason = self.regionTooLargeReason;
562
+ if (regionTooLarge) {
563
+ return (react_1.default.createElement(react_1.default.Fragment, null,
564
+ react_1.default.createElement(material_1.Typography, { component: "span", variant: "body2" },
565
+ regionTooLargeReason ? regionTooLargeReason + '. ' : '',
566
+ "Zoom in to see features or",
567
+ ' '),
568
+ react_1.default.createElement(material_1.Button, { "data-testid": "force_reload_button", onClick: function () {
569
+ if (!self.estimatedRegionStats) {
570
+ console.error('No global stats?');
571
+ }
572
+ else {
573
+ self.updateStatsLimit(self.estimatedRegionStats);
574
+ self.reload();
575
+ }
576
+ }, variant: "outlined" }, "Force Load"),
577
+ react_1.default.createElement(material_1.Typography, { component: "span", variant: "body2" }, "(force load may be slow)")));
670
578
  }
671
- });
672
- }
673
- };
674
- }).actions(function (self) {
675
- return {
676
- renderSvg: function renderSvg(opts) {
677
- return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee3() {
678
- var height, id, overrideHeight, view, viewOffsetPx, roundedDynamicBlocks, width, renderings;
679
- return _regenerator.default.wrap(function _callee3$(_context3) {
680
- while (1) {
681
- switch (_context3.prev = _context3.next) {
682
- case 0:
683
- height = self.height, id = self.id;
684
- overrideHeight = opts.overrideHeight;
685
- view = (0, _util.getContainingView)(self);
686
- viewOffsetPx = view.offsetPx, roundedDynamicBlocks = view.roundedDynamicBlocks, width = view.width;
687
- _context3.next = 6;
688
- return Promise.all(roundedDynamicBlocks.map(function (block) {
689
- var blockState = _serverSideRenderedBlock.default.create({
690
- key: block.key,
691
- region: block
692
- }); // regionCannotBeRendered can return jsx so look for plaintext
693
- // version, or just get the default if none available
694
-
695
-
696
- var cannotBeRenderedReason = self.regionCannotBeRenderedText(block) || self.regionCannotBeRendered(block);
697
-
698
- if (cannotBeRenderedReason) {
699
- return {
700
- reactElement: /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement("rect", {
701
- x: 0,
702
- y: 0,
703
- width: width,
704
- height: 20,
705
- fill: "#aaa"
706
- }), /*#__PURE__*/_react.default.createElement("text", {
707
- x: 0,
708
- y: 15
709
- }, cannotBeRenderedReason))
710
- };
711
- }
712
-
713
- var _renderBlockData = (0, _serverSideRenderedBlock.renderBlockData)(blockState, self),
714
- rpcManager = _renderBlockData.rpcManager,
715
- renderArgs = _renderBlockData.renderArgs,
716
- renderProps = _renderBlockData.renderProps,
717
- rendererType = _renderBlockData.rendererType;
718
-
719
- return rendererType.renderInClient(rpcManager, _objectSpread(_objectSpread(_objectSpread({}, renderArgs), renderProps), {}, {
720
- viewParams: (0, _util.getViewParams)(self, true),
721
- exportSVG: opts
722
- }));
723
- }));
724
-
725
- case 6:
726
- renderings = _context3.sent;
727
- return _context3.abrupt("return", /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, renderings.map(function (rendering, index) {
728
- var offsetPx = roundedDynamicBlocks[index].offsetPx;
729
- var offset = offsetPx - viewOffsetPx;
730
- var clipid = getId(id, index);
731
- return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, {
732
- key: "frag-".concat(index)
733
- }, /*#__PURE__*/_react.default.createElement("defs", null, /*#__PURE__*/_react.default.createElement("clipPath", {
734
- id: clipid
735
- }, /*#__PURE__*/_react.default.createElement("rect", {
736
- x: 0,
737
- y: 0,
738
- width: width,
739
- height: overrideHeight || height
740
- }))), /*#__PURE__*/_react.default.createElement("g", {
741
- transform: "translate(".concat(offset, " 0)")
742
- }, /*#__PURE__*/_react.default.createElement("g", {
743
- clipPath: "url(#".concat(clipid, ")")
744
- }, /*#__PURE__*/_react.default.isValidElement(rendering.reactElement) ? rendering.reactElement :
745
- /*#__PURE__*/
746
- // eslint-disable-next-line react/no-danger
747
- _react.default.createElement("g", {
748
- dangerouslySetInnerHTML: {
749
- __html: rendering.html
579
+ return undefined;
580
+ },
581
+ trackMenuItems: function () {
582
+ return [];
583
+ },
584
+ contextMenuItems: function () {
585
+ return self.contextMenuFeature
586
+ ? [
587
+ {
588
+ label: 'Open feature details',
589
+ icon: MenuOpen_1.default,
590
+ onClick: function () {
591
+ if (self.contextMenuFeature) {
592
+ self.selectFeature(self.contextMenuFeature);
593
+ }
594
+ },
595
+ },
596
+ ]
597
+ : [];
598
+ },
599
+ renderProps: function () {
600
+ var view = (0, util_1.getContainingView)(self);
601
+ return __assign(__assign({}, (0, tracks_1.getParentRenderProps)(self)), { notReady: self.currBpPerPx !== view.bpPerPx || !self.estimatedRegionStats, rpcDriverName: self.rpcDriverName, displayModel: self, onFeatureClick: function (_, featureId) {
602
+ var f = featureId || self.featureIdUnderMouse;
603
+ if (!f) {
604
+ self.clearFeatureSelection();
605
+ }
606
+ else {
607
+ var feature = self.features.get(f);
608
+ if (feature) {
609
+ self.selectFeature(feature);
750
610
  }
751
- }))));
752
- })));
753
-
754
- case 8:
755
- case "end":
756
- return _context3.stop();
757
- }
758
- }
759
- }, _callee3);
760
- }))();
761
- }
762
- };
763
- }).postProcessSnapshot(function (self) {
764
- var blockState = self.blockState,
765
- rest = (0, _objectWithoutProperties2.default)(self, _excluded);
766
- return rest;
611
+ }
612
+ }, onClick: function () {
613
+ self.clearFeatureSelection();
614
+ },
615
+ // similar to click but opens a menu with further options
616
+ onFeatureContextMenu: function (_, featureId) {
617
+ var f = featureId || self.featureIdUnderMouse;
618
+ if (!f) {
619
+ self.clearFeatureSelection();
620
+ }
621
+ else {
622
+ // feature id under mouse passed to context menu
623
+ self.setContextMenuFeature(self.features.get(f));
624
+ }
625
+ }, onMouseMove: function (_, featureId) {
626
+ self.setFeatureIdUnderMouse(featureId);
627
+ }, onMouseLeave: function (_) {
628
+ self.setFeatureIdUnderMouse(undefined);
629
+ }, onContextMenu: function () {
630
+ self.setContextMenuFeature(undefined);
631
+ self.clearFeatureSelection();
632
+ } });
633
+ },
634
+ }); })
635
+ .actions(function (self) { return ({
636
+ renderSvg: function (opts) {
637
+ return __awaiter(this, void 0, void 0, function () {
638
+ var height, id, overrideHeight, view, viewOffsetPx, roundedDynamicBlocks, width, renderings;
639
+ return __generator(this, function (_a) {
640
+ switch (_a.label) {
641
+ case 0:
642
+ height = self.height, id = self.id;
643
+ overrideHeight = opts.overrideHeight;
644
+ view = (0, util_1.getContainingView)(self);
645
+ viewOffsetPx = view.offsetPx, roundedDynamicBlocks = view.roundedDynamicBlocks, width = view.width;
646
+ return [4 /*yield*/, Promise.all(roundedDynamicBlocks.map(function (block) {
647
+ var blockState = serverSideRenderedBlock_1.default.create({
648
+ key: block.key,
649
+ region: block,
650
+ });
651
+ // regionCannotBeRendered can return jsx so look for plaintext
652
+ // version, or just get the default if none available
653
+ var cannotBeRenderedReason = self.regionCannotBeRenderedText(block) ||
654
+ self.regionCannotBeRendered(block);
655
+ if (cannotBeRenderedReason) {
656
+ return {
657
+ reactElement: (react_1.default.createElement(react_1.default.Fragment, null,
658
+ react_1.default.createElement("rect", { x: 0, y: 0, width: width, height: 20, fill: "#aaa" }),
659
+ react_1.default.createElement("text", { x: 0, y: 15 }, cannotBeRenderedReason))),
660
+ };
661
+ }
662
+ var _a = (0, serverSideRenderedBlock_1.renderBlockData)(blockState, self), rpcManager = _a.rpcManager, renderArgs = _a.renderArgs, renderProps = _a.renderProps, rendererType = _a.rendererType;
663
+ return rendererType.renderInClient(rpcManager, __assign(__assign(__assign({}, renderArgs), renderProps), { viewParams: (0, util_1.getViewParams)(self, true), exportSVG: opts }));
664
+ }))];
665
+ case 1:
666
+ renderings = _a.sent();
667
+ return [2 /*return*/, (react_1.default.createElement(react_1.default.Fragment, null, renderings.map(function (rendering, index) {
668
+ var offsetPx = roundedDynamicBlocks[index].offsetPx;
669
+ var offset = offsetPx - viewOffsetPx;
670
+ var clipid = getId(id, index);
671
+ return (react_1.default.createElement(react_1.default.Fragment, { key: "frag-".concat(index) },
672
+ react_1.default.createElement("defs", null,
673
+ react_1.default.createElement("clipPath", { id: clipid },
674
+ react_1.default.createElement("rect", { x: 0, y: 0, width: width, height: overrideHeight || height }))),
675
+ react_1.default.createElement("g", { transform: "translate(".concat(offset, " 0)") },
676
+ react_1.default.createElement("g", { clipPath: "url(#".concat(clipid, ")") }, react_1.default.isValidElement(rendering.reactElement) ? (rendering.reactElement) : (
677
+ // eslint-disable-next-line react/no-danger
678
+ react_1.default.createElement("g", { dangerouslySetInnerHTML: { __html: rendering.html } }))))));
679
+ })))];
680
+ }
681
+ });
682
+ });
683
+ },
684
+ }); })
685
+ .postProcessSnapshot(function (self) {
686
+ // xref https://github.com/mobxjs/mobx-state-tree/issues/1524 for Omit
687
+ var r = self;
688
+ var blockState = r.blockState, rest = __rest(r, ["blockState"]);
689
+ return rest;
767
690
  });
768
-
769
- exports.BaseLinearDisplay = BaseLinearDisplay;
691
+ //# sourceMappingURL=BaseLinearDisplayModel.js.map