@jbrowse/plugin-alignments 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 (294) hide show
  1. package/dist/AlignmentsFeatureDetail/AlignmentsFeatureDetail.js +192 -207
  2. package/dist/AlignmentsFeatureDetail/AlignmentsFeatureDetail.js.map +1 -0
  3. package/dist/AlignmentsFeatureDetail/index.d.ts +28 -3
  4. package/dist/AlignmentsFeatureDetail/index.js +48 -55
  5. package/dist/AlignmentsFeatureDetail/index.js.map +1 -0
  6. package/dist/AlignmentsTrack/index.js +24 -32
  7. package/dist/AlignmentsTrack/index.js.map +1 -0
  8. package/dist/BamAdapter/BamAdapter.js +345 -585
  9. package/dist/BamAdapter/BamAdapter.js.map +1 -0
  10. package/dist/BamAdapter/BamSlightlyLazyFeature.js +143 -174
  11. package/dist/BamAdapter/BamSlightlyLazyFeature.js.map +1 -0
  12. package/dist/BamAdapter/MismatchParser.js +340 -416
  13. package/dist/BamAdapter/MismatchParser.js.map +1 -0
  14. package/dist/BamAdapter/configSchema.js +33 -46
  15. package/dist/BamAdapter/configSchema.js.map +1 -0
  16. package/dist/BamAdapter/index.js +36 -32
  17. package/dist/BamAdapter/index.js.map +1 -0
  18. package/dist/CramAdapter/CramAdapter.js +376 -644
  19. package/dist/CramAdapter/CramAdapter.js.map +1 -0
  20. package/dist/CramAdapter/CramSlightlyLazyFeature.js +374 -439
  21. package/dist/CramAdapter/CramSlightlyLazyFeature.js.map +1 -0
  22. package/dist/CramAdapter/CramTestAdapters.js +169 -227
  23. package/dist/CramAdapter/CramTestAdapters.js.map +1 -0
  24. package/dist/CramAdapter/configSchema.js +28 -38
  25. package/dist/CramAdapter/configSchema.js.map +1 -0
  26. package/dist/CramAdapter/index.js +37 -32
  27. package/dist/CramAdapter/index.js.map +1 -0
  28. package/dist/HtsgetBamAdapter/HtsgetBamAdapter.js +91 -93
  29. package/dist/HtsgetBamAdapter/HtsgetBamAdapter.js.map +1 -0
  30. package/dist/HtsgetBamAdapter/configSchema.js +19 -29
  31. package/dist/HtsgetBamAdapter/configSchema.js.map +1 -0
  32. package/dist/HtsgetBamAdapter/index.js +44 -38
  33. package/dist/HtsgetBamAdapter/index.js.map +1 -0
  34. package/dist/LinearAlignmentsDisplay/components/AlignmentsDisplay.js +36 -65
  35. package/dist/LinearAlignmentsDisplay/components/AlignmentsDisplay.js.map +1 -0
  36. package/dist/LinearAlignmentsDisplay/index.js +22 -28
  37. package/dist/LinearAlignmentsDisplay/index.js.map +1 -0
  38. package/dist/LinearAlignmentsDisplay/models/configSchema.js +12 -23
  39. package/dist/LinearAlignmentsDisplay/models/configSchema.js.map +1 -0
  40. package/dist/LinearAlignmentsDisplay/models/model.d.ts +10 -10
  41. package/dist/LinearAlignmentsDisplay/models/model.js +257 -245
  42. package/dist/LinearAlignmentsDisplay/models/model.js.map +1 -0
  43. package/dist/LinearPileupDisplay/components/ColorByModifications.js +98 -116
  44. package/dist/LinearPileupDisplay/components/ColorByModifications.js.map +1 -0
  45. package/dist/LinearPileupDisplay/components/ColorByTag.js +82 -91
  46. package/dist/LinearPileupDisplay/components/ColorByTag.js.map +1 -0
  47. package/dist/LinearPileupDisplay/components/FilterByTag.js +156 -192
  48. package/dist/LinearPileupDisplay/components/FilterByTag.js.map +1 -0
  49. package/dist/LinearPileupDisplay/components/LinearPileupDisplayBlurb.js +15 -29
  50. package/dist/LinearPileupDisplay/components/LinearPileupDisplayBlurb.js.map +1 -0
  51. package/dist/LinearPileupDisplay/components/SetFeatureHeight.js +79 -93
  52. package/dist/LinearPileupDisplay/components/SetFeatureHeight.js.map +1 -0
  53. package/dist/LinearPileupDisplay/components/SetMaxHeight.js +78 -81
  54. package/dist/LinearPileupDisplay/components/SetMaxHeight.js.map +1 -0
  55. package/dist/LinearPileupDisplay/components/SortByTag.js +80 -88
  56. package/dist/LinearPileupDisplay/components/SortByTag.js.map +1 -0
  57. package/dist/LinearPileupDisplay/configSchema.js +40 -42
  58. package/dist/LinearPileupDisplay/configSchema.js.map +1 -0
  59. package/dist/LinearPileupDisplay/index.js +21 -27
  60. package/dist/LinearPileupDisplay/index.js.map +1 -0
  61. package/dist/LinearPileupDisplay/model.d.ts +33 -20
  62. package/dist/LinearPileupDisplay/model.js +702 -716
  63. package/dist/LinearPileupDisplay/model.js.map +1 -0
  64. package/dist/LinearSNPCoverageDisplay/components/Tooltip.d.ts +1 -1
  65. package/dist/LinearSNPCoverageDisplay/components/Tooltip.js +105 -57
  66. package/dist/LinearSNPCoverageDisplay/components/Tooltip.js.map +1 -0
  67. package/dist/LinearSNPCoverageDisplay/index.js +21 -27
  68. package/dist/LinearSNPCoverageDisplay/index.js.map +1 -0
  69. package/dist/LinearSNPCoverageDisplay/models/configSchema.js +45 -55
  70. package/dist/LinearSNPCoverageDisplay/models/configSchema.js.map +1 -0
  71. package/dist/LinearSNPCoverageDisplay/models/model.d.ts +14 -12
  72. package/dist/LinearSNPCoverageDisplay/models/model.js +257 -230
  73. package/dist/LinearSNPCoverageDisplay/models/model.js.map +1 -0
  74. package/dist/NestedFrequencyTable.js +104 -139
  75. package/dist/NestedFrequencyTable.js.map +1 -0
  76. package/dist/PileupRPC/rpcMethods.js +199 -278
  77. package/dist/PileupRPC/rpcMethods.js.map +1 -0
  78. package/dist/PileupRenderer/PileupLayoutSession.js +56 -76
  79. package/dist/PileupRenderer/PileupLayoutSession.js.map +1 -0
  80. package/dist/PileupRenderer/PileupRenderer.d.ts +56 -11
  81. package/dist/PileupRenderer/PileupRenderer.js +942 -1134
  82. package/dist/PileupRenderer/PileupRenderer.js.map +1 -0
  83. package/dist/PileupRenderer/components/PileupRendering.d.ts +1 -1
  84. package/dist/PileupRenderer/components/PileupRendering.js +173 -253
  85. package/dist/PileupRenderer/components/PileupRendering.js.map +1 -0
  86. package/dist/PileupRenderer/configSchema.js +65 -71
  87. package/dist/PileupRenderer/configSchema.js.map +1 -0
  88. package/dist/PileupRenderer/index.js +17 -22
  89. package/dist/PileupRenderer/index.js.map +1 -0
  90. package/dist/PileupRenderer/sortUtil.js +83 -107
  91. package/dist/PileupRenderer/sortUtil.js.map +1 -0
  92. package/dist/SNPCoverageAdapter/SNPCoverageAdapter.d.ts +2 -0
  93. package/dist/SNPCoverageAdapter/SNPCoverageAdapter.js +436 -586
  94. package/dist/SNPCoverageAdapter/SNPCoverageAdapter.js.map +1 -0
  95. package/dist/SNPCoverageAdapter/configSchema.js +10 -20
  96. package/dist/SNPCoverageAdapter/configSchema.js.map +1 -0
  97. package/dist/SNPCoverageAdapter/index.js +46 -41
  98. package/dist/SNPCoverageAdapter/index.js.map +1 -0
  99. package/dist/SNPCoverageRenderer/SNPCoverageRenderer.d.ts +1 -1
  100. package/dist/SNPCoverageRenderer/SNPCoverageRenderer.js +265 -290
  101. package/dist/SNPCoverageRenderer/SNPCoverageRenderer.js.map +1 -0
  102. package/dist/SNPCoverageRenderer/configSchema.js +30 -39
  103. package/dist/SNPCoverageRenderer/configSchema.js.map +1 -0
  104. package/dist/SNPCoverageRenderer/index.js +19 -30
  105. package/dist/SNPCoverageRenderer/index.js.map +1 -0
  106. package/dist/index.js +135 -152
  107. package/dist/index.js.map +1 -0
  108. package/dist/shared.js +84 -92
  109. package/dist/shared.js.map +1 -0
  110. package/dist/util.js +130 -121
  111. package/dist/util.js.map +1 -0
  112. package/esm/AlignmentsFeatureDetail/AlignmentsFeatureDetail.d.ts +6 -0
  113. package/esm/AlignmentsFeatureDetail/AlignmentsFeatureDetail.js +145 -0
  114. package/esm/AlignmentsFeatureDetail/AlignmentsFeatureDetail.js.map +1 -0
  115. package/esm/AlignmentsFeatureDetail/index.d.ts +38 -0
  116. package/esm/AlignmentsFeatureDetail/index.js +23 -0
  117. package/esm/AlignmentsFeatureDetail/index.js.map +1 -0
  118. package/esm/AlignmentsTrack/index.d.ts +2 -0
  119. package/esm/AlignmentsTrack/index.js +23 -0
  120. package/esm/AlignmentsTrack/index.js.map +1 -0
  121. package/esm/BamAdapter/BamAdapter.d.ts +40 -0
  122. package/esm/BamAdapter/BamAdapter.js +173 -0
  123. package/esm/BamAdapter/BamAdapter.js.map +1 -0
  124. package/esm/BamAdapter/BamSlightlyLazyFeature.d.ts +33 -0
  125. package/esm/BamAdapter/BamSlightlyLazyFeature.js +107 -0
  126. package/esm/BamAdapter/BamSlightlyLazyFeature.js.map +1 -0
  127. package/esm/BamAdapter/MismatchParser.d.ts +25 -0
  128. package/esm/BamAdapter/MismatchParser.js +294 -0
  129. package/esm/BamAdapter/MismatchParser.js.map +1 -0
  130. package/esm/BamAdapter/configSchema.d.ts +2 -0
  131. package/esm/BamAdapter/configSchema.js +31 -0
  132. package/esm/BamAdapter/configSchema.js.map +1 -0
  133. package/esm/BamAdapter/index.d.ts +3 -0
  134. package/esm/BamAdapter/index.js +10 -0
  135. package/esm/BamAdapter/index.js.map +1 -0
  136. package/esm/CramAdapter/CramAdapter.d.ts +53 -0
  137. package/esm/CramAdapter/CramAdapter.js +228 -0
  138. package/esm/CramAdapter/CramAdapter.js.map +1 -0
  139. package/esm/CramAdapter/CramSlightlyLazyFeature.d.ts +49 -0
  140. package/esm/CramAdapter/CramSlightlyLazyFeature.js +349 -0
  141. package/esm/CramAdapter/CramSlightlyLazyFeature.js.map +1 -0
  142. package/esm/CramAdapter/CramTestAdapters.d.ts +29 -0
  143. package/esm/CramAdapter/CramTestAdapters.js +70 -0
  144. package/esm/CramAdapter/CramTestAdapters.js.map +1 -0
  145. package/esm/CramAdapter/configSchema.d.ts +3 -0
  146. package/esm/CramAdapter/configSchema.js +26 -0
  147. package/esm/CramAdapter/configSchema.js.map +1 -0
  148. package/esm/CramAdapter/index.d.ts +3 -0
  149. package/esm/CramAdapter/index.js +11 -0
  150. package/esm/CramAdapter/index.js.map +1 -0
  151. package/esm/HtsgetBamAdapter/HtsgetBamAdapter.d.ts +9 -0
  152. package/esm/HtsgetBamAdapter/HtsgetBamAdapter.js +27 -0
  153. package/esm/HtsgetBamAdapter/HtsgetBamAdapter.js.map +1 -0
  154. package/esm/HtsgetBamAdapter/configSchema.d.ts +2 -0
  155. package/esm/HtsgetBamAdapter/configSchema.js +17 -0
  156. package/esm/HtsgetBamAdapter/configSchema.js.map +1 -0
  157. package/esm/HtsgetBamAdapter/index.d.ts +3 -0
  158. package/esm/HtsgetBamAdapter/index.js +16 -0
  159. package/esm/HtsgetBamAdapter/index.js.map +1 -0
  160. package/esm/LinearAlignmentsDisplay/components/AlignmentsDisplay.d.ts +7 -0
  161. package/esm/LinearAlignmentsDisplay/components/AlignmentsDisplay.js +34 -0
  162. package/esm/LinearAlignmentsDisplay/components/AlignmentsDisplay.js.map +1 -0
  163. package/esm/LinearAlignmentsDisplay/index.d.ts +2 -0
  164. package/esm/LinearAlignmentsDisplay/index.js +19 -0
  165. package/esm/LinearAlignmentsDisplay/index.js.map +1 -0
  166. package/esm/LinearAlignmentsDisplay/models/configSchema.d.ts +4 -0
  167. package/esm/LinearAlignmentsDisplay/models/configSchema.js +12 -0
  168. package/esm/LinearAlignmentsDisplay/models/configSchema.js.map +1 -0
  169. package/esm/LinearAlignmentsDisplay/models/model.d.ts +105 -0
  170. package/esm/LinearAlignmentsDisplay/models/model.js +181 -0
  171. package/esm/LinearAlignmentsDisplay/models/model.js.map +1 -0
  172. package/esm/LinearPileupDisplay/components/ColorByModifications.d.ts +14 -0
  173. package/esm/LinearPileupDisplay/components/ColorByModifications.js +71 -0
  174. package/esm/LinearPileupDisplay/components/ColorByModifications.js.map +1 -0
  175. package/esm/LinearPileupDisplay/components/ColorByTag.d.ts +9 -0
  176. package/esm/LinearPileupDisplay/components/ColorByTag.js +45 -0
  177. package/esm/LinearPileupDisplay/components/ColorByTag.js.map +1 -0
  178. package/esm/LinearPileupDisplay/components/FilterByTag.d.ts +18 -0
  179. package/esm/LinearPileupDisplay/components/FilterByTag.js +123 -0
  180. package/esm/LinearPileupDisplay/components/FilterByTag.js.map +1 -0
  181. package/esm/LinearPileupDisplay/components/LinearPileupDisplayBlurb.d.ts +13 -0
  182. package/esm/LinearPileupDisplay/components/LinearPileupDisplayBlurb.js +13 -0
  183. package/esm/LinearPileupDisplay/components/LinearPileupDisplayBlurb.js.map +1 -0
  184. package/esm/LinearPileupDisplay/components/SetFeatureHeight.d.ts +16 -0
  185. package/esm/LinearPileupDisplay/components/SetFeatureHeight.js +41 -0
  186. package/esm/LinearPileupDisplay/components/SetFeatureHeight.js.map +1 -0
  187. package/esm/LinearPileupDisplay/components/SetMaxHeight.d.ts +10 -0
  188. package/esm/LinearPileupDisplay/components/SetMaxHeight.js +43 -0
  189. package/esm/LinearPileupDisplay/components/SetMaxHeight.js.map +1 -0
  190. package/esm/LinearPileupDisplay/components/SortByTag.d.ts +9 -0
  191. package/esm/LinearPileupDisplay/components/SortByTag.js +43 -0
  192. package/esm/LinearPileupDisplay/components/SortByTag.js.map +1 -0
  193. package/esm/LinearPileupDisplay/configSchema.d.ts +6 -0
  194. package/esm/LinearPileupDisplay/configSchema.js +41 -0
  195. package/esm/LinearPileupDisplay/configSchema.js.map +1 -0
  196. package/esm/LinearPileupDisplay/index.d.ts +2 -0
  197. package/esm/LinearPileupDisplay/index.js +18 -0
  198. package/esm/LinearPileupDisplay/index.js.map +1 -0
  199. package/esm/LinearPileupDisplay/model.d.ts +332 -0
  200. package/esm/LinearPileupDisplay/model.js +576 -0
  201. package/esm/LinearPileupDisplay/model.js.map +1 -0
  202. package/esm/LinearSNPCoverageDisplay/components/Tooltip.d.ts +10 -0
  203. package/esm/LinearSNPCoverageDisplay/components/Tooltip.js +57 -0
  204. package/esm/LinearSNPCoverageDisplay/components/Tooltip.js.map +1 -0
  205. package/esm/LinearSNPCoverageDisplay/index.d.ts +2 -0
  206. package/esm/LinearSNPCoverageDisplay/index.js +18 -0
  207. package/esm/LinearSNPCoverageDisplay/index.js.map +1 -0
  208. package/esm/LinearSNPCoverageDisplay/models/configSchema.d.ts +2 -0
  209. package/esm/LinearSNPCoverageDisplay/models/configSchema.js +44 -0
  210. package/esm/LinearSNPCoverageDisplay/models/configSchema.js.map +1 -0
  211. package/esm/LinearSNPCoverageDisplay/models/model.d.ts +348 -0
  212. package/esm/LinearSNPCoverageDisplay/models/model.js +185 -0
  213. package/esm/LinearSNPCoverageDisplay/models/model.js.map +1 -0
  214. package/esm/NestedFrequencyTable.d.ts +14 -0
  215. package/esm/NestedFrequencyTable.js +101 -0
  216. package/esm/NestedFrequencyTable.js.map +1 -0
  217. package/esm/PileupRPC/rpcMethods.d.ts +34 -0
  218. package/esm/PileupRPC/rpcMethods.js +70 -0
  219. package/esm/PileupRPC/rpcMethods.js.map +1 -0
  220. package/esm/PileupRenderer/PileupLayoutSession.d.ts +32 -0
  221. package/esm/PileupRenderer/PileupLayoutSession.js +32 -0
  222. package/esm/PileupRenderer/PileupLayoutSession.js.map +1 -0
  223. package/esm/PileupRenderer/PileupRenderer.d.ts +182 -0
  224. package/esm/PileupRenderer/PileupRenderer.js +830 -0
  225. package/esm/PileupRenderer/PileupRenderer.js.map +1 -0
  226. package/esm/PileupRenderer/components/PileupRendering.d.ts +23 -0
  227. package/esm/PileupRenderer/components/PileupRendering.js +138 -0
  228. package/esm/PileupRenderer/components/PileupRendering.js.map +1 -0
  229. package/esm/PileupRenderer/configSchema.d.ts +2 -0
  230. package/esm/PileupRenderer/configSchema.js +64 -0
  231. package/esm/PileupRenderer/configSchema.js.map +1 -0
  232. package/esm/PileupRenderer/index.d.ts +2 -0
  233. package/esm/PileupRenderer/index.js +12 -0
  234. package/esm/PileupRenderer/index.js.map +1 -0
  235. package/esm/PileupRenderer/sortUtil.d.ts +8 -0
  236. package/esm/PileupRenderer/sortUtil.js +80 -0
  237. package/esm/PileupRenderer/sortUtil.js.map +1 -0
  238. package/esm/SNPCoverageAdapter/SNPCoverageAdapter.d.ts +67 -0
  239. package/esm/SNPCoverageAdapter/SNPCoverageAdapter.js +259 -0
  240. package/esm/SNPCoverageAdapter/SNPCoverageAdapter.js.map +1 -0
  241. package/esm/SNPCoverageAdapter/configSchema.d.ts +3 -0
  242. package/esm/SNPCoverageAdapter/configSchema.js +6 -0
  243. package/esm/SNPCoverageAdapter/configSchema.js.map +1 -0
  244. package/esm/SNPCoverageAdapter/index.d.ts +3 -0
  245. package/esm/SNPCoverageAdapter/index.js +18 -0
  246. package/esm/SNPCoverageAdapter/index.js.map +1 -0
  247. package/esm/SNPCoverageRenderer/SNPCoverageRenderer.d.ts +20 -0
  248. package/esm/SNPCoverageRenderer/SNPCoverageRenderer.js +185 -0
  249. package/esm/SNPCoverageRenderer/SNPCoverageRenderer.js.map +1 -0
  250. package/esm/SNPCoverageRenderer/configSchema.d.ts +2 -0
  251. package/esm/SNPCoverageRenderer/configSchema.js +29 -0
  252. package/esm/SNPCoverageRenderer/configSchema.js.map +1 -0
  253. package/esm/SNPCoverageRenderer/index.d.ts +3 -0
  254. package/esm/SNPCoverageRenderer/index.js +14 -0
  255. package/esm/SNPCoverageRenderer/index.js.map +1 -0
  256. package/esm/index.d.ts +10 -0
  257. package/esm/index.js +91 -0
  258. package/esm/index.js.map +1 -0
  259. package/esm/shared.d.ts +25 -0
  260. package/esm/shared.js +28 -0
  261. package/esm/shared.js.map +1 -0
  262. package/esm/util.d.ts +19 -0
  263. package/esm/util.js +83 -0
  264. package/esm/util.js.map +1 -0
  265. package/package.json +19 -11
  266. package/src/AlignmentsFeatureDetail/AlignmentsFeatureDetail.tsx +16 -6
  267. package/src/AlignmentsFeatureDetail/__snapshots__/index.test.js.snap +321 -397
  268. package/src/AlignmentsFeatureDetail/index.ts +7 -17
  269. package/src/BamAdapter/MismatchParser.ts +1 -0
  270. package/src/LinearAlignmentsDisplay/components/AlignmentsDisplay.tsx +3 -3
  271. package/src/LinearPileupDisplay/components/ColorByModifications.tsx +7 -7
  272. package/src/LinearPileupDisplay/components/ColorByTag.tsx +5 -5
  273. package/src/LinearPileupDisplay/components/FilterByTag.tsx +5 -5
  274. package/src/LinearPileupDisplay/components/LinearPileupDisplayBlurb.tsx +1 -1
  275. package/src/LinearPileupDisplay/components/SetFeatureHeight.tsx +9 -9
  276. package/src/LinearPileupDisplay/components/SetMaxHeight.tsx +5 -5
  277. package/src/LinearPileupDisplay/components/SortByTag.tsx +5 -5
  278. package/src/LinearPileupDisplay/model.ts +90 -32
  279. package/src/LinearSNPCoverageDisplay/components/Tooltip.tsx +44 -30
  280. package/src/LinearSNPCoverageDisplay/models/model.ts +25 -25
  281. package/src/PileupRenderer/PileupRenderer.tsx +399 -198
  282. package/src/PileupRenderer/components/PileupRendering.tsx +11 -11
  283. package/src/SNPCoverageAdapter/SNPCoverageAdapter.ts +5 -0
  284. package/src/SNPCoverageRenderer/SNPCoverageRenderer.ts +7 -5
  285. package/dist/AlignmentsFeatureDetail/index.test.js +0 -60
  286. package/dist/BamAdapter/BamAdapter.test.js +0 -177
  287. package/dist/BamAdapter/MismatchParser.test.js +0 -251
  288. package/dist/CramAdapter/CramAdapter.test.js +0 -138
  289. package/dist/LinearAlignmentsDisplay/models/configSchema.test.js +0 -83
  290. package/dist/LinearPileupDisplay/configSchema.test.js +0 -92
  291. package/dist/LinearSNPCoverageDisplay/models/configSchema.test.js +0 -62
  292. package/dist/PileupRenderer/components/PileupRendering.test.js +0 -36
  293. package/dist/declare.d.js +0 -1
  294. package/dist/index.test.js +0 -26
@@ -1,728 +1,714 @@
1
1
  "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
- Object.defineProperty(exports, "__esModule", {
6
- value: true
7
- });
8
- exports.default = void 0;
9
-
10
- var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
11
-
12
- var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
13
-
14
- var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
15
-
16
- var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
17
-
18
- var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
19
-
20
- var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
21
-
22
- var _react = require("react");
23
-
24
- var _configuration = require("@jbrowse/core/configuration");
25
-
26
- var _tracks = require("@jbrowse/core/util/tracks");
27
-
28
- var _util = require("@jbrowse/core/util");
29
-
30
- var _Visibility = _interopRequireDefault(require("@material-ui/icons/Visibility"));
31
-
32
- var _Icons = require("@jbrowse/core/ui/Icons");
33
-
34
- var _pluginLinearGenomeView = require("@jbrowse/plugin-linear-genome-view");
35
-
36
- var _mobxStateTree = require("mobx-state-tree");
37
-
38
- var _copyToClipboard = _interopRequireDefault(require("copy-to-clipboard"));
39
-
40
- var _MenuOpen = _interopRequireDefault(require("@material-ui/icons/MenuOpen"));
41
-
42
- var _Sort = _interopRequireDefault(require("@material-ui/icons/Sort"));
43
-
44
- var _Palette = _interopRequireDefault(require("@material-ui/icons/Palette"));
45
-
46
- var _ClearAll = _interopRequireDefault(require("@material-ui/icons/ClearAll"));
47
-
48
- var _mobx = require("mobx");
49
-
50
- var _LinearPileupDisplayBlurb = _interopRequireDefault(require("./components/LinearPileupDisplayBlurb"));
51
-
52
- var _shared = require("../shared");
53
-
54
- var _excluded = ["uniqueId"];
55
-
56
- 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; }
57
-
58
- 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; }
59
-
60
- 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); }
61
-
62
- function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || (0, _typeof2.default)(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; }
63
-
64
- var ColorByTagDlg = /*#__PURE__*/(0, _react.lazy)(function () {
65
- return Promise.resolve().then(function () {
66
- return _interopRequireWildcard(require('./components/ColorByTag'));
67
- });
68
- });
69
- var FilterByTagDlg = /*#__PURE__*/(0, _react.lazy)(function () {
70
- return Promise.resolve().then(function () {
71
- return _interopRequireWildcard(require('./components/FilterByTag'));
72
- });
73
- });
74
- var SortByTagDlg = /*#__PURE__*/(0, _react.lazy)(function () {
75
- return Promise.resolve().then(function () {
76
- return _interopRequireWildcard(require('./components/SortByTag'));
77
- });
78
- });
79
- var SetFeatureHeightDlg = /*#__PURE__*/(0, _react.lazy)(function () {
80
- return Promise.resolve().then(function () {
81
- return _interopRequireWildcard(require('./components/SetFeatureHeight'));
82
- });
83
- });
84
- var SetMaxHeightDlg = /*#__PURE__*/(0, _react.lazy)(function () {
85
- return Promise.resolve().then(function () {
86
- return _interopRequireWildcard(require('./components/SetMaxHeight'));
87
- });
88
- });
89
- var ModificationsDlg = /*#__PURE__*/(0, _react.lazy)(function () {
90
- return Promise.resolve().then(function () {
91
- return _interopRequireWildcard(require('./components/ColorByModifications'));
92
- });
93
- }); // using a map because it preserves order
94
-
95
- var rendererTypes = new Map([['pileup', 'PileupRenderer'], ['svg', 'SvgFeatureRenderer']]);
96
-
97
- var stateModelFactory = function stateModelFactory(configSchema) {
98
- return _mobxStateTree.types.compose('LinearPileupDisplay', _pluginLinearGenomeView.BaseLinearDisplay, _mobxStateTree.types.model({
99
- type: _mobxStateTree.types.literal('LinearPileupDisplay'),
100
- configuration: (0, _configuration.ConfigurationReference)(configSchema),
101
- showSoftClipping: false,
102
- featureHeight: _mobxStateTree.types.maybe(_mobxStateTree.types.number),
103
- noSpacing: _mobxStateTree.types.maybe(_mobxStateTree.types.boolean),
104
- fadeLikelihood: _mobxStateTree.types.maybe(_mobxStateTree.types.boolean),
105
- trackMaxHeight: _mobxStateTree.types.maybe(_mobxStateTree.types.number),
106
- mismatchAlpha: _mobxStateTree.types.maybe(_mobxStateTree.types.boolean),
107
- sortedBy: _mobxStateTree.types.maybe(_mobxStateTree.types.model({
108
- type: _mobxStateTree.types.string,
109
- pos: _mobxStateTree.types.number,
110
- tag: _mobxStateTree.types.maybe(_mobxStateTree.types.string),
111
- refName: _mobxStateTree.types.string,
112
- assemblyName: _mobxStateTree.types.string
113
- })),
114
- colorBy: _mobxStateTree.types.maybe(_mobxStateTree.types.model({
115
- type: _mobxStateTree.types.string,
116
- tag: _mobxStateTree.types.maybe(_mobxStateTree.types.string),
117
- extra: _mobxStateTree.types.frozen()
118
- })),
119
- filterBy: _mobxStateTree.types.optional(_mobxStateTree.types.model({
120
- flagInclude: _mobxStateTree.types.optional(_mobxStateTree.types.number, 0),
121
- flagExclude: _mobxStateTree.types.optional(_mobxStateTree.types.number, 1540),
122
- readName: _mobxStateTree.types.maybe(_mobxStateTree.types.string),
123
- tagFilter: _mobxStateTree.types.maybe(_mobxStateTree.types.model({
124
- tag: _mobxStateTree.types.string,
125
- value: _mobxStateTree.types.string
126
- }))
127
- }), {})
128
- })).volatile(function () {
129
- return {
130
- colorTagMap: _mobx.observable.map({}),
131
- modificationTagMap: _mobx.observable.map({}),
132
- ready: false
133
- };
134
- }).actions(function (self) {
135
- return {
136
- setReady: function setReady(flag) {
137
- self.ready = flag;
138
- },
139
- setMaxHeight: function setMaxHeight(n) {
140
- self.trackMaxHeight = n;
141
- },
142
- setFeatureHeight: function setFeatureHeight(n) {
143
- self.featureHeight = n;
144
- },
145
- setNoSpacing: function setNoSpacing(flag) {
146
- self.noSpacing = flag;
147
- },
148
- setColorScheme: function setColorScheme(colorScheme) {
149
- self.colorTagMap = _mobx.observable.map({}); // clear existing mapping
150
-
151
- self.colorBy = (0, _mobxStateTree.cast)(colorScheme);
152
- self.ready = false;
153
- },
154
- updateModificationColorMap: function updateModificationColorMap(uniqueModifications) {
155
- var colorPalette = ['red', 'blue', 'green', 'orange', 'purple'];
156
- uniqueModifications.forEach(function (value) {
157
- if (!self.modificationTagMap.has(value)) {
158
- var totalKeys = (0, _toConsumableArray2.default)(self.modificationTagMap.keys()).length;
159
- var newColor = colorPalette[totalKeys];
160
- self.modificationTagMap.set(value, newColor);
161
- }
162
- });
163
- },
164
- updateColorTagMap: function updateColorTagMap(uniqueTag) {
165
- // pale color scheme https://cran.r-project.org/web/packages/khroma/vignettes/tol.html e.g. "tol_light"
166
- var colorPalette = ['#BBCCEE', 'pink', '#CCDDAA', '#EEEEBB', '#FFCCCC', 'lightblue', 'lightgreen', 'tan', '#CCEEFF', 'lightsalmon'];
167
- uniqueTag.forEach(function (value) {
168
- if (!self.colorTagMap.has(value)) {
169
- var totalKeys = (0, _toConsumableArray2.default)(self.colorTagMap.keys()).length;
170
- var newColor = colorPalette[totalKeys];
171
- self.colorTagMap.set(value, newColor);
172
- }
173
- });
174
- }
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;
175
10
  };
176
- }).actions(function (self) {
177
- return {
178
- afterAttach: function afterAttach() {
179
- (0, _mobxStateTree.addDisposer)(self, (0, _mobx.autorun)( /*#__PURE__*/(0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee() {
180
- var _getSession, rpcManager, view, sortedBy, colorBy, parentTrack, adapterConfig, rendererType, staticBlocks, bpPerPx, uniqueTagSet, adapter, pos, refName, assemblyName;
181
-
182
- return _regenerator.default.wrap(function _callee$(_context) {
183
- while (1) {
184
- switch (_context.prev = _context.next) {
185
- case 0:
186
- _context.prev = 0;
187
- _getSession = (0, _util.getSession)(self), rpcManager = _getSession.rpcManager;
188
- view = (0, _util.getContainingView)(self);
189
- sortedBy = self.sortedBy, colorBy = self.colorBy, parentTrack = self.parentTrack, adapterConfig = self.adapterConfig, rendererType = self.rendererType;
190
- staticBlocks = view.staticBlocks, bpPerPx = view.bpPerPx; // continually generate the vc pairing, set and rerender if any
191
- // new values seen
192
-
193
- if (!(colorBy !== null && colorBy !== void 0 && colorBy.tag)) {
194
- _context.next = 10;
195
- break;
196
- }
197
-
198
- _context.next = 8;
199
- return (0, _shared.getUniqueTagValues)(self, colorBy, staticBlocks);
200
-
201
- case 8:
202
- uniqueTagSet = _context.sent;
203
- self.updateColorTagMap(uniqueTagSet);
204
-
205
- case 10:
206
- if (!((colorBy === null || colorBy === void 0 ? void 0 : colorBy.type) === 'modifications')) {
207
- _context.next = 17;
208
- break;
209
- }
210
-
211
- adapter = (0, _configuration.getConf)(parentTrack, ['adapter']);
212
- _context.t0 = self;
213
- _context.next = 15;
214
- return (0, _shared.getUniqueModificationValues)(self, adapter, colorBy, staticBlocks);
215
-
216
- case 15:
217
- _context.t1 = _context.sent;
218
-
219
- _context.t0.updateModificationColorMap.call(_context.t0, _context.t1);
220
-
221
- case 17:
222
- if (!sortedBy) {
223
- _context.next = 25;
224
- break;
225
- }
226
-
227
- pos = sortedBy.pos, refName = sortedBy.refName, assemblyName = sortedBy.assemblyName; // render just the sorted region first
228
-
229
- _context.next = 21;
230
- return self.rendererType.renderInClient(rpcManager, _objectSpread({
231
- assemblyName: assemblyName,
232
- regions: [{
233
- start: pos,
234
- end: pos + 1,
235
- refName: refName,
236
- assemblyName: assemblyName
237
- }],
238
- adapterConfig: adapterConfig,
239
- rendererType: rendererType.name,
240
- sessionId: (0, _tracks.getRpcSessionId)(self),
241
- layoutId: view.id,
242
- timeout: 1000000
243
- }, self.renderProps()));
244
-
245
- case 21:
246
- self.setReady(true);
247
- self.setCurrBpPerPx(bpPerPx);
248
- _context.next = 26;
249
- break;
250
-
251
- case 25:
252
- self.setReady(true);
253
-
254
- case 26:
255
- _context.next = 32;
256
- break;
257
-
258
- case 28:
259
- _context.prev = 28;
260
- _context.t2 = _context["catch"](0);
261
- console.error(_context.t2);
262
- self.setError(_context.t2);
263
-
264
- case 32:
265
- case "end":
266
- return _context.stop();
267
- }
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;
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;
268
66
  }
269
- }, _callee, null, [[0, 28]]);
270
- })), {
271
- delay: 1000
272
- }));
273
- },
274
- selectFeature: function selectFeature(feature) {
275
- var session = (0, _util.getSession)(self);
276
-
277
- if ((0, _util.isSessionModelWithWidgets)(session)) {
278
- var featureWidget = session.addWidget('AlignmentsFeatureWidget', 'alignmentFeature', {
279
- featureData: feature.toJSON(),
280
- view: (0, _util.getContainingView)(self)
281
- });
282
- session.showWidget(featureWidget);
283
- }
284
-
285
- session.setSelection(feature);
286
- },
287
- clearSelected: function clearSelected() {
288
- self.sortedBy = undefined;
289
- },
290
- // uses copy-to-clipboard and generates notification
291
- copyFeatureToClipboard: function copyFeatureToClipboard(feature) {
292
- var _feature$toJSON = feature.toJSON(),
293
- uniqueId = _feature$toJSON.uniqueId,
294
- rest = (0, _objectWithoutProperties2.default)(_feature$toJSON, _excluded);
295
-
296
- var session = (0, _util.getSession)(self);
297
- (0, _copyToClipboard.default)(JSON.stringify(rest, null, 4));
298
- session.notify('Copied to clipboard', 'success');
299
- },
300
- toggleSoftClipping: function toggleSoftClipping() {
301
- self.showSoftClipping = !self.showSoftClipping;
302
- },
303
- toggleMismatchAlpha: function toggleMismatchAlpha() {
304
- self.mismatchAlpha = !self.mismatchAlpha;
305
- },
306
- setConfig: function setConfig(configuration) {
307
- self.configuration = configuration;
308
- },
309
- setSortedBy: function setSortedBy(type, tag) {
310
- var _ref2 = (0, _util.getContainingView)(self),
311
- centerLineInfo = _ref2.centerLineInfo;
312
-
313
- if (!centerLineInfo) {
314
- return;
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]];
315
80
  }
316
-
317
- var refName = centerLineInfo.refName,
318
- assemblyName = centerLineInfo.assemblyName,
319
- offset = centerLineInfo.offset;
320
- var centerBp = Math.round(offset) + 1;
321
- var centerRefName = refName;
322
-
323
- if (centerBp < 0) {
324
- return;
81
+ return t;
82
+ };
83
+ var __read = (this && this.__read) || function (o, n) {
84
+ var m = typeof Symbol === "function" && o[Symbol.iterator];
85
+ if (!m) return o;
86
+ var i = m.call(o), r, ar = [], e;
87
+ try {
88
+ while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
89
+ }
90
+ catch (error) { e = { error: error }; }
91
+ finally {
92
+ try {
93
+ if (r && !r.done && (m = i["return"])) m.call(i);
325
94
  }
326
-
327
- self.sortedBy = {
328
- type: type,
329
- pos: centerBp,
330
- refName: centerRefName,
331
- assemblyName: assemblyName,
332
- tag: tag
333
- };
334
- self.ready = false;
335
- },
336
- setFilterBy: function setFilterBy(filter) {
337
- self.filterBy = (0, _mobxStateTree.cast)(filter);
338
- }
339
- };
340
- }).actions(function (self) {
341
- // resets the sort object and refresh whole display on reload
342
- var superReload = self.reload;
343
- return {
344
- reload: function reload() {
345
- self.clearSelected();
346
- superReload();
347
- }
348
- };
349
- }).views(function (self) {
350
- return {
351
- get maxHeight() {
352
- var conf = (0, _configuration.getConf)(self, ['renderers', self.rendererTypeName]) || {};
353
- return self.trackMaxHeight !== undefined ? self.trackMaxHeight : conf.maxHeight;
354
- },
355
-
356
- get rendererConfig() {
357
- var configBlob = (0, _configuration.getConf)(self, ['renderers', self.rendererTypeName]) || {};
358
- return self.rendererType.configSchema.create(_objectSpread(_objectSpread({}, configBlob), {}, {
359
- height: self.featureHeight,
360
- noSpacing: self.noSpacing,
361
- maxHeight: this.maxHeight,
362
- mismatchAlpha: self.mismatchAlpha
363
- }), (0, _mobxStateTree.getEnv)(self));
364
- },
365
-
366
- get featureHeightSetting() {
367
- return self.featureHeight || (0, _configuration.readConfObject)(this.rendererConfig, 'height');
368
- },
369
-
370
- get mismatchAlphaSetting() {
371
- return self.mismatchAlpha !== undefined ? self.mismatchAlpha : (0, _configuration.readConfObject)(this.rendererConfig, 'mismatchAlpha');
372
- }
373
-
374
- };
375
- }).views(function (self) {
376
- var superTrackMenuItems = self.trackMenuItems,
377
- superRenderProps = self.renderProps;
378
- return {
379
- get rendererTypeName() {
380
- var viewName = (0, _configuration.getConf)(self, 'defaultRendering');
381
- var rendererType = rendererTypes.get(viewName);
382
-
383
- if (!rendererType) {
384
- throw new Error("unknown alignments view name ".concat(viewName));
95
+ finally { if (e) throw e.error; }
96
+ }
97
+ return ar;
98
+ };
99
+ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
100
+ if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
101
+ if (ar || !(i in from)) {
102
+ if (!ar) ar = Array.prototype.slice.call(from, 0, i);
103
+ ar[i] = from[i];
385
104
  }
386
-
387
- return rendererType;
388
- },
389
-
390
- contextMenuItems: function contextMenuItems() {
391
- var feat = self.contextMenuFeature;
392
- var contextMenuItems = feat ? [{
393
- label: 'Open feature details',
394
- icon: _MenuOpen.default,
395
- onClick: function onClick() {
396
- self.clearFeatureSelection();
397
-
398
- if (feat) {
399
- self.selectFeature(feat);
400
- }
401
- }
402
- }, {
403
- label: 'Copy info to clipboard',
404
- icon: _Icons.ContentCopy,
405
- onClick: function onClick() {
406
- if (feat) {
407
- self.copyFeatureToClipboard(feat);
408
- }
409
- }
410
- }] : [];
411
- return contextMenuItems;
412
- },
413
-
414
- get DisplayBlurb() {
415
- return _LinearPileupDisplayBlurb.default;
416
- },
417
-
418
- renderProps: function renderProps() {
419
- var view = (0, _util.getContainingView)(self);
420
- var colorTagMap = self.colorTagMap,
421
- modificationTagMap = self.modificationTagMap,
422
- sortedBy = self.sortedBy,
423
- colorBy = self.colorBy,
424
- filterBy = self.filterBy,
425
- rpcDriverName = self.rpcDriverName;
426
- var superProps = superRenderProps();
427
- return _objectSpread(_objectSpread({}, superProps), {}, {
428
- notReady: superProps.notReady || !self.ready || sortedBy && self.currBpPerPx !== view.bpPerPx,
429
- rpcDriverName: rpcDriverName,
430
- displayModel: self,
431
- sortedBy: sortedBy,
432
- colorBy: colorBy,
433
- filterBy: JSON.parse(JSON.stringify(filterBy)),
434
- colorTagMap: JSON.parse(JSON.stringify(colorTagMap)),
435
- modificationTagMap: JSON.parse(JSON.stringify(modificationTagMap)),
436
- showSoftClip: self.showSoftClipping,
437
- config: self.rendererConfig,
438
- onFeatureClick: function onFeatureClick(_, featureId) {
439
- return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2() {
440
- var session, rpcManager, f, sessionId, _ref3, feature;
441
-
442
- return _regenerator.default.wrap(function _callee2$(_context2) {
443
- while (1) {
444
- switch (_context2.prev = _context2.next) {
445
- case 0:
446
- session = (0, _util.getSession)(self);
447
- rpcManager = session.rpcManager;
448
- _context2.prev = 2;
449
- f = featureId || self.featureIdUnderMouse;
450
-
451
- if (f) {
452
- _context2.next = 8;
453
- break;
454
- }
455
-
456
- self.clearFeatureSelection();
457
- _context2.next = 14;
458
- break;
459
-
460
- case 8:
461
- sessionId = (0, _tracks.getRpcSessionId)(self);
462
- _context2.next = 11;
463
- return rpcManager.call(sessionId, 'CoreGetFeatureDetails', {
464
- featureId: f,
465
- sessionId: sessionId,
466
- layoutId: (0, _util.getContainingView)(self).id,
467
- rendererType: 'PileupRenderer'
468
- });
469
-
470
- case 11:
471
- _ref3 = _context2.sent;
472
- feature = _ref3.feature;
473
-
474
- if (feature) {
475
- // @ts-ignore
476
- self.selectFeature(new _util.SimpleFeature(feature));
477
- }
478
-
479
- case 14:
480
- _context2.next = 20;
481
- break;
482
-
483
- case 16:
484
- _context2.prev = 16;
485
- _context2.t0 = _context2["catch"](2);
486
- console.error(_context2.t0);
487
- session.notify("".concat(_context2.t0));
488
-
489
- case 20:
490
- case "end":
491
- return _context2.stop();
492
- }
105
+ }
106
+ return to.concat(ar || Array.prototype.slice.call(from));
107
+ };
108
+ var __importDefault = (this && this.__importDefault) || function (mod) {
109
+ return (mod && mod.__esModule) ? mod : { "default": mod };
110
+ };
111
+ Object.defineProperty(exports, "__esModule", { value: true });
112
+ var react_1 = require("react");
113
+ var mobx_1 = require("mobx");
114
+ var mobx_state_tree_1 = require("mobx-state-tree");
115
+ var copy_to_clipboard_1 = __importDefault(require("copy-to-clipboard"));
116
+ var configuration_1 = require("@jbrowse/core/configuration");
117
+ var tracks_1 = require("@jbrowse/core/util/tracks");
118
+ var util_1 = require("@jbrowse/core/util");
119
+ var plugin_linear_genome_view_1 = require("@jbrowse/plugin-linear-genome-view");
120
+ // icons
121
+ var Visibility_1 = __importDefault(require("@mui/icons-material/Visibility"));
122
+ var Icons_1 = require("@jbrowse/core/ui/Icons");
123
+ var MenuOpen_1 = __importDefault(require("@mui/icons-material/MenuOpen"));
124
+ var Sort_1 = __importDefault(require("@mui/icons-material/Sort"));
125
+ var Palette_1 = __importDefault(require("@mui/icons-material/Palette"));
126
+ var ClearAll_1 = __importDefault(require("@mui/icons-material/ClearAll"));
127
+ var LinearPileupDisplayBlurb_1 = __importDefault(require("./components/LinearPileupDisplayBlurb"));
128
+ var shared_1 = require("../shared");
129
+ // async
130
+ var ColorByTagDlg = (0, react_1.lazy)(function () { return Promise.resolve().then(function () { return __importStar(require('./components/ColorByTag')); }); });
131
+ var FilterByTagDlg = (0, react_1.lazy)(function () { return Promise.resolve().then(function () { return __importStar(require('./components/FilterByTag')); }); });
132
+ var SortByTagDlg = (0, react_1.lazy)(function () { return Promise.resolve().then(function () { return __importStar(require('./components/SortByTag')); }); });
133
+ var SetFeatureHeightDlg = (0, react_1.lazy)(function () { return Promise.resolve().then(function () { return __importStar(require('./components/SetFeatureHeight')); }); });
134
+ var SetMaxHeightDlg = (0, react_1.lazy)(function () { return Promise.resolve().then(function () { return __importStar(require('./components/SetMaxHeight')); }); });
135
+ var ModificationsDlg = (0, react_1.lazy)(function () { return Promise.resolve().then(function () { return __importStar(require('./components/ColorByModifications')); }); });
136
+ // using a map because it preserves order
137
+ var rendererTypes = new Map([
138
+ ['pileup', 'PileupRenderer'],
139
+ ['svg', 'SvgFeatureRenderer'],
140
+ ]);
141
+ var stateModelFactory = function (configSchema) {
142
+ return mobx_state_tree_1.types
143
+ .compose('LinearPileupDisplay', plugin_linear_genome_view_1.BaseLinearDisplay, mobx_state_tree_1.types.model({
144
+ type: mobx_state_tree_1.types.literal('LinearPileupDisplay'),
145
+ configuration: (0, configuration_1.ConfigurationReference)(configSchema),
146
+ showSoftClipping: false,
147
+ featureHeight: mobx_state_tree_1.types.maybe(mobx_state_tree_1.types.number),
148
+ noSpacing: mobx_state_tree_1.types.maybe(mobx_state_tree_1.types.boolean),
149
+ fadeLikelihood: mobx_state_tree_1.types.maybe(mobx_state_tree_1.types.boolean),
150
+ trackMaxHeight: mobx_state_tree_1.types.maybe(mobx_state_tree_1.types.number),
151
+ mismatchAlpha: mobx_state_tree_1.types.maybe(mobx_state_tree_1.types.boolean),
152
+ sortedBy: mobx_state_tree_1.types.maybe(mobx_state_tree_1.types.model({
153
+ type: mobx_state_tree_1.types.string,
154
+ pos: mobx_state_tree_1.types.number,
155
+ tag: mobx_state_tree_1.types.maybe(mobx_state_tree_1.types.string),
156
+ refName: mobx_state_tree_1.types.string,
157
+ assemblyName: mobx_state_tree_1.types.string,
158
+ })),
159
+ colorBy: mobx_state_tree_1.types.maybe(mobx_state_tree_1.types.model({
160
+ type: mobx_state_tree_1.types.string,
161
+ tag: mobx_state_tree_1.types.maybe(mobx_state_tree_1.types.string),
162
+ extra: mobx_state_tree_1.types.frozen(),
163
+ })),
164
+ filterBy: mobx_state_tree_1.types.optional(mobx_state_tree_1.types.model({
165
+ flagInclude: mobx_state_tree_1.types.optional(mobx_state_tree_1.types.number, 0),
166
+ flagExclude: mobx_state_tree_1.types.optional(mobx_state_tree_1.types.number, 1540),
167
+ readName: mobx_state_tree_1.types.maybe(mobx_state_tree_1.types.string),
168
+ tagFilter: mobx_state_tree_1.types.maybe(mobx_state_tree_1.types.model({ tag: mobx_state_tree_1.types.string, value: mobx_state_tree_1.types.string })),
169
+ }), {}),
170
+ }))
171
+ .volatile(function () { return ({
172
+ colorTagMap: mobx_1.observable.map({}),
173
+ modificationTagMap: mobx_1.observable.map({}),
174
+ featureUnderMouseVolatile: undefined,
175
+ ready: false,
176
+ }); })
177
+ .actions(function (self) { return ({
178
+ setReady: function (flag) {
179
+ self.ready = flag;
180
+ },
181
+ setMaxHeight: function (n) {
182
+ self.trackMaxHeight = n;
183
+ },
184
+ setFeatureHeight: function (n) {
185
+ self.featureHeight = n;
186
+ },
187
+ setNoSpacing: function (flag) {
188
+ self.noSpacing = flag;
189
+ },
190
+ setColorScheme: function (colorScheme) {
191
+ self.colorTagMap = mobx_1.observable.map({}); // clear existing mapping
192
+ self.colorBy = (0, mobx_state_tree_1.cast)(colorScheme);
193
+ self.ready = false;
194
+ },
195
+ updateModificationColorMap: function (uniqueModifications) {
196
+ var colorPalette = ['red', 'blue', 'green', 'orange', 'purple'];
197
+ uniqueModifications.forEach(function (value) {
198
+ if (!self.modificationTagMap.has(value)) {
199
+ var totalKeys = __spreadArray([], __read(self.modificationTagMap.keys()), false).length;
200
+ var newColor = colorPalette[totalKeys];
201
+ self.modificationTagMap.set(value, newColor);
493
202
  }
494
- }, _callee2, null, [[2, 16]]);
495
- }))();
496
- },
497
- onClick: function onClick() {
498
- self.clearFeatureSelection();
499
- },
500
- // similar to click but opens a menu with further options
501
- onFeatureContextMenu: function onFeatureContextMenu(_, featureId) {
502
- return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee3() {
503
- var session, rpcManager, f, sessionId, _ref4, feature;
504
-
505
- return _regenerator.default.wrap(function _callee3$(_context3) {
506
- while (1) {
507
- switch (_context3.prev = _context3.next) {
508
- case 0:
509
- session = (0, _util.getSession)(self);
510
- rpcManager = session.rpcManager;
511
- _context3.prev = 2;
512
- f = featureId || self.featureIdUnderMouse;
513
-
514
- if (f) {
515
- _context3.next = 8;
516
- break;
517
- }
518
-
519
- self.clearFeatureSelection();
520
- _context3.next = 14;
521
- break;
522
-
523
- case 8:
524
- sessionId = (0, _tracks.getRpcSessionId)(self);
525
- _context3.next = 11;
526
- return rpcManager.call(sessionId, 'CoreGetFeatureDetails', {
527
- featureId: f,
528
- sessionId: sessionId,
529
- layoutId: (0, _util.getContainingView)(self).id,
530
- rendererType: 'PileupRenderer'
531
- });
532
-
533
- case 11:
534
- _ref4 = _context3.sent;
535
- feature = _ref4.feature;
536
-
537
- if (feature) {
538
- // @ts-ignore
539
- self.setContextMenuFeature(new _util.SimpleFeature(feature));
540
- }
541
-
542
- case 14:
543
- _context3.next = 20;
544
- break;
545
-
546
- case 16:
547
- _context3.prev = 16;
548
- _context3.t0 = _context3["catch"](2);
549
- console.error(_context3.t0);
550
- session.notify("".concat(_context3.t0));
551
-
552
- case 20:
553
- case "end":
554
- return _context3.stop();
555
- }
203
+ });
204
+ },
205
+ updateColorTagMap: function (uniqueTag) {
206
+ // pale color scheme
207
+ // https://cran.r-project.org/web/packages/khroma/vignettes/tol.html
208
+ // e.g. "tol_light"
209
+ var colorPalette = [
210
+ '#BBCCEE',
211
+ 'pink',
212
+ '#CCDDAA',
213
+ '#EEEEBB',
214
+ '#FFCCCC',
215
+ 'lightblue',
216
+ 'lightgreen',
217
+ 'tan',
218
+ '#CCEEFF',
219
+ 'lightsalmon',
220
+ ];
221
+ uniqueTag.forEach(function (value) {
222
+ if (!self.colorTagMap.has(value)) {
223
+ var totalKeys = __spreadArray([], __read(self.colorTagMap.keys()), false).length;
224
+ var newColor = colorPalette[totalKeys];
225
+ self.colorTagMap.set(value, newColor);
556
226
  }
557
- }, _callee3, null, [[2, 16]]);
558
- }))();
559
- }
560
- });
561
- },
562
- trackMenuItems: function trackMenuItems() {
563
- return [].concat((0, _toConsumableArray2.default)(superTrackMenuItems()), [{
564
- label: 'Show soft clipping',
565
- icon: _Visibility.default,
566
- type: 'checkbox',
567
- checked: self.showSoftClipping,
568
- onClick: function onClick() {
569
- self.toggleSoftClipping(); // if toggling from off to on, will break sort for this track
570
- // so clear it
571
-
572
- if (self.showSoftClipping) {
573
- self.clearSelected();
574
- }
575
- }
576
- }, {
577
- label: 'Sort by',
578
- icon: _Sort.default,
579
- disabled: self.showSoftClipping,
580
- subMenu: [].concat((0, _toConsumableArray2.default)(['Start location', 'Read strand', 'Base pair'].map(function (option) {
581
- return {
582
- label: option,
583
- onClick: function onClick() {
584
- return self.setSortedBy(option);
585
- }
586
- };
587
- })), [{
588
- label: 'Sort by tag...',
589
- onClick: function onClick() {
590
- (0, _util.getSession)(self).queueDialog(function (doneCallback) {
591
- return [SortByTagDlg, {
592
- model: self,
593
- handleClose: doneCallback
594
- }];
595
- });
596
- }
597
- }, {
598
- label: 'Clear sort',
599
- onClick: function onClick() {
600
- return self.clearSelected();
601
- }
602
- }])
603
- }, {
604
- label: 'Color scheme',
605
- icon: _Palette.default,
606
- subMenu: [{
607
- label: 'Normal',
608
- onClick: function onClick() {
609
- self.setColorScheme({
610
- type: 'normal'
611
- });
612
- }
613
- }, {
614
- label: 'Mapping quality',
615
- onClick: function onClick() {
616
- self.setColorScheme({
617
- type: 'mappingQuality'
618
- });
619
- }
620
- }, {
621
- label: 'Strand',
622
- onClick: function onClick() {
623
- self.setColorScheme({
624
- type: 'strand'
625
- });
626
- }
627
- }, {
628
- label: 'Pair orientation',
629
- onClick: function onClick() {
630
- self.setColorScheme({
631
- type: 'pairOrientation'
632
- });
633
- }
634
- }, {
635
- label: 'Per-base quality',
636
- onClick: function onClick() {
637
- self.setColorScheme({
638
- type: 'perBaseQuality'
639
- });
640
- }
641
- }, {
642
- label: 'Per-base lettering',
643
- onClick: function onClick() {
644
- self.setColorScheme({
645
- type: 'perBaseLettering'
646
- });
647
- }
648
- }, {
649
- label: 'Modifications or methylation',
650
- onClick: function onClick() {
651
- (0, _util.getSession)(self).queueDialog(function (doneCallback) {
652
- return [ModificationsDlg, {
653
- model: self,
654
- handleClose: doneCallback
655
- }];
656
- });
657
- }
658
- }, {
659
- label: 'Insert size',
660
- onClick: function onClick() {
661
- self.setColorScheme({
662
- type: 'insertSize'
663
- });
227
+ });
228
+ },
229
+ setFeatureUnderMouse: function (feat) {
230
+ self.featureUnderMouseVolatile = feat;
231
+ },
232
+ }); })
233
+ .actions(function (self) { return ({
234
+ afterAttach: function () {
235
+ var _this = this;
236
+ (0, mobx_state_tree_1.addDisposer)(self, (0, mobx_1.autorun)(function () { return __awaiter(_this, void 0, void 0, function () {
237
+ var rpcManager, view, sortedBy, colorBy, parentTrack, adapterConfig, rendererType, staticBlocks, bpPerPx, uniqueTagSet, adapter, _a, _b, pos, refName, assemblyName, e_1;
238
+ return __generator(this, function (_c) {
239
+ switch (_c.label) {
240
+ case 0:
241
+ _c.trys.push([0, 8, , 9]);
242
+ rpcManager = (0, util_1.getSession)(self).rpcManager;
243
+ view = (0, util_1.getContainingView)(self);
244
+ sortedBy = self.sortedBy, colorBy = self.colorBy, parentTrack = self.parentTrack, adapterConfig = self.adapterConfig, rendererType = self.rendererType;
245
+ staticBlocks = view.staticBlocks, bpPerPx = view.bpPerPx;
246
+ if (!self.estimatedStatsReady) {
247
+ return [2 /*return*/];
248
+ }
249
+ if (self.regionTooLarge) {
250
+ return [2 /*return*/];
251
+ }
252
+ if (!(colorBy === null || colorBy === void 0 ? void 0 : colorBy.tag)) return [3 /*break*/, 2];
253
+ return [4 /*yield*/, (0, shared_1.getUniqueTagValues)(self, colorBy, staticBlocks)];
254
+ case 1:
255
+ uniqueTagSet = _c.sent();
256
+ self.updateColorTagMap(uniqueTagSet);
257
+ _c.label = 2;
258
+ case 2:
259
+ if (!((colorBy === null || colorBy === void 0 ? void 0 : colorBy.type) === 'modifications')) return [3 /*break*/, 4];
260
+ adapter = (0, configuration_1.getConf)(parentTrack, ['adapter']);
261
+ _b = (_a = self).updateModificationColorMap;
262
+ return [4 /*yield*/, (0, shared_1.getUniqueModificationValues)(self, adapter, colorBy, staticBlocks)];
263
+ case 3:
264
+ _b.apply(_a, [_c.sent()]);
265
+ _c.label = 4;
266
+ case 4:
267
+ if (!sortedBy) return [3 /*break*/, 6];
268
+ pos = sortedBy.pos, refName = sortedBy.refName, assemblyName = sortedBy.assemblyName;
269
+ // render just the sorted region first
270
+ return [4 /*yield*/, self.rendererType.renderInClient(rpcManager, __assign({ assemblyName: assemblyName, regions: [
271
+ {
272
+ start: pos,
273
+ end: pos + 1,
274
+ refName: refName,
275
+ assemblyName: assemblyName,
276
+ },
277
+ ], adapterConfig: adapterConfig, rendererType: rendererType.name, sessionId: (0, tracks_1.getRpcSessionId)(self), layoutId: view.id, timeout: 1000000 }, self.renderProps()))];
278
+ case 5:
279
+ // render just the sorted region first
280
+ _c.sent();
281
+ self.setReady(true);
282
+ self.setCurrBpPerPx(bpPerPx);
283
+ return [3 /*break*/, 7];
284
+ case 6:
285
+ self.setReady(true);
286
+ _c.label = 7;
287
+ case 7: return [3 /*break*/, 9];
288
+ case 8:
289
+ e_1 = _c.sent();
290
+ console.error(e_1);
291
+ self.setError(e_1);
292
+ return [3 /*break*/, 9];
293
+ case 9: return [2 /*return*/];
294
+ }
295
+ });
296
+ }); }, { delay: 1000 }));
297
+ // autorun synchronizes featureUnderMouse with featureIdUnderMouse
298
+ (0, mobx_state_tree_1.addDisposer)(self, (0, mobx_1.autorun)(function () { return __awaiter(_this, void 0, void 0, function () {
299
+ var session, featureId, sessionId, view, feature, e_2;
300
+ var _a;
301
+ return __generator(this, function (_b) {
302
+ switch (_b.label) {
303
+ case 0:
304
+ session = (0, util_1.getSession)(self);
305
+ _b.label = 1;
306
+ case 1:
307
+ _b.trys.push([1, 5, , 6]);
308
+ featureId = self.featureIdUnderMouse;
309
+ if (!(((_a = self.featureUnderMouse) === null || _a === void 0 ? void 0 : _a.id()) !== featureId)) return [3 /*break*/, 4];
310
+ if (!!featureId) return [3 /*break*/, 2];
311
+ self.setFeatureUnderMouse(undefined);
312
+ return [3 /*break*/, 4];
313
+ case 2:
314
+ sessionId = (0, tracks_1.getRpcSessionId)(self);
315
+ view = (0, util_1.getContainingView)(self);
316
+ return [4 /*yield*/, session.rpcManager.call(sessionId, 'CoreGetFeatureDetails', {
317
+ featureId: featureId,
318
+ sessionId: sessionId,
319
+ layoutId: view.id,
320
+ rendererType: 'PileupRenderer',
321
+ })];
322
+ case 3:
323
+ feature = (_b.sent()).feature;
324
+ // check featureIdUnderMouse is still the same as the
325
+ // feature.id that was returned e.g. that the user hasn't
326
+ // moused over to a new position during the async operation
327
+ // above
328
+ // @ts-ignore
329
+ if (self.featureIdUnderMouse === feature.uniqueId) {
330
+ // @ts-ignore
331
+ self.setFeatureUnderMouse(new util_1.SimpleFeature(feature));
332
+ }
333
+ _b.label = 4;
334
+ case 4: return [3 /*break*/, 6];
335
+ case 5:
336
+ e_2 = _b.sent();
337
+ console.error(e_2);
338
+ session.notify("".concat(e_2), 'error');
339
+ return [3 /*break*/, 6];
340
+ case 6: return [2 /*return*/];
341
+ }
342
+ });
343
+ }); }));
344
+ },
345
+ selectFeature: function (feature) {
346
+ var session = (0, util_1.getSession)(self);
347
+ if ((0, util_1.isSessionModelWithWidgets)(session)) {
348
+ var featureWidget = session.addWidget('AlignmentsFeatureWidget', 'alignmentFeature', { featureData: feature.toJSON(), view: (0, util_1.getContainingView)(self) });
349
+ session.showWidget(featureWidget);
664
350
  }
665
- }, {
666
- label: 'Stranded paired-end',
667
- onClick: function onClick() {
668
- self.setColorScheme({
669
- type: 'reverseTemplate'
670
- });
351
+ session.setSelection(feature);
352
+ },
353
+ clearSelected: function () {
354
+ self.sortedBy = undefined;
355
+ },
356
+ // uses copy-to-clipboard and generates notification
357
+ copyFeatureToClipboard: function (feature) {
358
+ var _a = feature.toJSON(), uniqueId = _a.uniqueId, rest = __rest(_a, ["uniqueId"]);
359
+ var session = (0, util_1.getSession)(self);
360
+ (0, copy_to_clipboard_1.default)(JSON.stringify(rest, null, 4));
361
+ session.notify('Copied to clipboard', 'success');
362
+ },
363
+ toggleSoftClipping: function () {
364
+ self.showSoftClipping = !self.showSoftClipping;
365
+ },
366
+ toggleMismatchAlpha: function () {
367
+ self.mismatchAlpha = !self.mismatchAlpha;
368
+ },
369
+ setConfig: function (configuration) {
370
+ self.configuration = configuration;
371
+ },
372
+ setSortedBy: function (type, tag) {
373
+ var centerLineInfo = (0, util_1.getContainingView)(self).centerLineInfo;
374
+ if (!centerLineInfo) {
375
+ return;
671
376
  }
672
- }, {
673
- label: 'Color by tag...',
674
- onClick: function onClick() {
675
- (0, _util.getSession)(self).queueDialog(function (doneCallback) {
676
- return [ColorByTagDlg, {
677
- model: self,
678
- handleClose: doneCallback
679
- }];
680
- });
377
+ var refName = centerLineInfo.refName, assemblyName = centerLineInfo.assemblyName, offset = centerLineInfo.offset;
378
+ var centerBp = Math.round(offset) + 1;
379
+ if (centerBp < 0 || !refName) {
380
+ return;
681
381
  }
682
- }]
683
- }, {
684
- label: 'Filter by',
685
- icon: _ClearAll.default,
686
- onClick: function onClick() {
687
- (0, _util.getSession)(self).queueDialog(function (doneCallback) {
688
- return [FilterByTagDlg, {
689
- model: self,
690
- handleClose: doneCallback
691
- }];
692
- });
693
- }
694
- }, {
695
- label: 'Set feature height',
696
- onClick: function onClick() {
697
- (0, _util.getSession)(self).queueDialog(function (doneCallback) {
698
- return [SetFeatureHeightDlg, {
699
- model: self,
700
- handleClose: doneCallback
701
- }];
702
- });
703
- }
704
- }, {
705
- label: 'Set max height',
706
- onClick: function onClick() {
707
- (0, _util.getSession)(self).queueDialog(function (doneCallback) {
708
- return [SetMaxHeightDlg, {
709
- model: self,
710
- handleClose: doneCallback
711
- }];
712
- });
713
- }
714
- }, {
715
- label: 'Fade mismatches by quality',
716
- type: 'checkbox',
717
- checked: self.mismatchAlphaSetting,
718
- onClick: function onClick() {
719
- self.toggleMismatchAlpha();
720
- }
721
- }]);
722
- }
723
- };
724
- });
382
+ self.sortedBy = {
383
+ type: type,
384
+ pos: centerBp,
385
+ refName: refName,
386
+ assemblyName: assemblyName,
387
+ tag: tag,
388
+ };
389
+ self.ready = false;
390
+ },
391
+ setFilterBy: function (filter) {
392
+ self.filterBy = (0, mobx_state_tree_1.cast)(filter);
393
+ },
394
+ }); })
395
+ .actions(function (self) {
396
+ // resets the sort object and refresh whole display on reload
397
+ var superReload = self.reload;
398
+ return {
399
+ reload: function () {
400
+ self.clearSelected();
401
+ superReload();
402
+ },
403
+ };
404
+ })
405
+ .views(function (self) { return ({
406
+ get maxHeight() {
407
+ var conf = (0, configuration_1.getConf)(self, ['renderers', self.rendererTypeName]) || {};
408
+ return self.trackMaxHeight !== undefined
409
+ ? self.trackMaxHeight
410
+ : conf.maxHeight;
411
+ },
412
+ get rendererConfig() {
413
+ var configBlob = (0, configuration_1.getConf)(self, ['renderers', self.rendererTypeName]) || {};
414
+ return self.rendererType.configSchema.create(__assign(__assign({}, configBlob), { height: self.featureHeight, noSpacing: self.noSpacing, maxHeight: this.maxHeight, mismatchAlpha: self.mismatchAlpha }), (0, mobx_state_tree_1.getEnv)(self));
415
+ },
416
+ get featureHeightSetting() {
417
+ return (self.featureHeight || (0, configuration_1.readConfObject)(this.rendererConfig, 'height'));
418
+ },
419
+ get mismatchAlphaSetting() {
420
+ return self.mismatchAlpha !== undefined
421
+ ? self.mismatchAlpha
422
+ : (0, configuration_1.readConfObject)(this.rendererConfig, 'mismatchAlpha');
423
+ },
424
+ get featureUnderMouse() {
425
+ return self.featureUnderMouseVolatile;
426
+ },
427
+ }); })
428
+ .views(function (self) {
429
+ var superTrackMenuItems = self.trackMenuItems, superRenderProps = self.renderProps;
430
+ return {
431
+ get rendererTypeName() {
432
+ var viewName = (0, configuration_1.getConf)(self, 'defaultRendering');
433
+ var rendererType = rendererTypes.get(viewName);
434
+ if (!rendererType) {
435
+ throw new Error("unknown alignments view name ".concat(viewName));
436
+ }
437
+ return rendererType;
438
+ },
439
+ contextMenuItems: function () {
440
+ var feat = self.contextMenuFeature;
441
+ var contextMenuItems = feat
442
+ ? [
443
+ {
444
+ label: 'Open feature details',
445
+ icon: MenuOpen_1.default,
446
+ onClick: function () {
447
+ self.clearFeatureSelection();
448
+ if (feat) {
449
+ self.selectFeature(feat);
450
+ }
451
+ },
452
+ },
453
+ {
454
+ label: 'Copy info to clipboard',
455
+ icon: Icons_1.ContentCopy,
456
+ onClick: function () {
457
+ if (feat) {
458
+ self.copyFeatureToClipboard(feat);
459
+ }
460
+ },
461
+ },
462
+ ]
463
+ : [];
464
+ return contextMenuItems;
465
+ },
466
+ get DisplayBlurb() {
467
+ return LinearPileupDisplayBlurb_1.default;
468
+ },
469
+ renderProps: function () {
470
+ var view = (0, util_1.getContainingView)(self);
471
+ var colorTagMap = self.colorTagMap, modificationTagMap = self.modificationTagMap, sortedBy = self.sortedBy, colorBy = self.colorBy, filterBy = self.filterBy, rpcDriverName = self.rpcDriverName, currBpPerPx = self.currBpPerPx, ready = self.ready;
472
+ var superProps = superRenderProps();
473
+ return __assign(__assign({}, superProps), { notReady: superProps.notReady ||
474
+ !ready ||
475
+ (sortedBy && currBpPerPx !== view.bpPerPx), rpcDriverName: rpcDriverName, displayModel: self, sortedBy: sortedBy, colorBy: colorBy, filterBy: JSON.parse(JSON.stringify(filterBy)), colorTagMap: Object.fromEntries(colorTagMap.toJSON()), modificationTagMap: Object.fromEntries(modificationTagMap.toJSON()), showSoftClip: self.showSoftClipping, config: self.rendererConfig, onFeatureClick: function (_, featureId) {
476
+ return __awaiter(this, void 0, void 0, function () {
477
+ var session, rpcManager, f, sessionId, feature, e_3;
478
+ return __generator(this, function (_a) {
479
+ switch (_a.label) {
480
+ case 0:
481
+ session = (0, util_1.getSession)(self);
482
+ rpcManager = session.rpcManager;
483
+ _a.label = 1;
484
+ case 1:
485
+ _a.trys.push([1, 5, , 6]);
486
+ f = featureId || self.featureIdUnderMouse;
487
+ if (!!f) return [3 /*break*/, 2];
488
+ self.clearFeatureSelection();
489
+ return [3 /*break*/, 4];
490
+ case 2:
491
+ sessionId = (0, tracks_1.getRpcSessionId)(self);
492
+ return [4 /*yield*/, rpcManager.call(sessionId, 'CoreGetFeatureDetails', {
493
+ featureId: f,
494
+ sessionId: sessionId,
495
+ layoutId: (0, util_1.getContainingView)(self).id,
496
+ rendererType: 'PileupRenderer',
497
+ })];
498
+ case 3:
499
+ feature = (_a.sent()).feature;
500
+ if (feature) {
501
+ // @ts-ignore
502
+ self.selectFeature(new util_1.SimpleFeature(feature));
503
+ }
504
+ _a.label = 4;
505
+ case 4: return [3 /*break*/, 6];
506
+ case 5:
507
+ e_3 = _a.sent();
508
+ console.error(e_3);
509
+ session.notify("".concat(e_3));
510
+ return [3 /*break*/, 6];
511
+ case 6: return [2 /*return*/];
512
+ }
513
+ });
514
+ });
515
+ }, onClick: function () {
516
+ self.clearFeatureSelection();
517
+ },
518
+ // similar to click but opens a menu with further options
519
+ onFeatureContextMenu: function (_, featureId) {
520
+ return __awaiter(this, void 0, void 0, function () {
521
+ var session, rpcManager, f, sessionId, feature, e_4;
522
+ return __generator(this, function (_a) {
523
+ switch (_a.label) {
524
+ case 0:
525
+ session = (0, util_1.getSession)(self);
526
+ rpcManager = session.rpcManager;
527
+ _a.label = 1;
528
+ case 1:
529
+ _a.trys.push([1, 5, , 6]);
530
+ f = featureId || self.featureIdUnderMouse;
531
+ if (!!f) return [3 /*break*/, 2];
532
+ self.clearFeatureSelection();
533
+ return [3 /*break*/, 4];
534
+ case 2:
535
+ sessionId = (0, tracks_1.getRpcSessionId)(self);
536
+ return [4 /*yield*/, rpcManager.call(sessionId, 'CoreGetFeatureDetails', {
537
+ featureId: f,
538
+ sessionId: sessionId,
539
+ layoutId: (0, util_1.getContainingView)(self).id,
540
+ rendererType: 'PileupRenderer',
541
+ })];
542
+ case 3:
543
+ feature = (_a.sent()).feature;
544
+ if (feature) {
545
+ // @ts-ignore
546
+ self.setContextMenuFeature(new util_1.SimpleFeature(feature));
547
+ }
548
+ _a.label = 4;
549
+ case 4: return [3 /*break*/, 6];
550
+ case 5:
551
+ e_4 = _a.sent();
552
+ console.error(e_4);
553
+ session.notify("".concat(e_4));
554
+ return [3 /*break*/, 6];
555
+ case 6: return [2 /*return*/];
556
+ }
557
+ });
558
+ });
559
+ } });
560
+ },
561
+ trackMenuItems: function () {
562
+ return __spreadArray(__spreadArray([], __read(superTrackMenuItems()), false), [
563
+ {
564
+ label: 'Show soft clipping',
565
+ icon: Visibility_1.default,
566
+ type: 'checkbox',
567
+ checked: self.showSoftClipping,
568
+ onClick: function () {
569
+ self.toggleSoftClipping();
570
+ // if toggling from off to on, will break sort for this track
571
+ // so clear it
572
+ if (self.showSoftClipping) {
573
+ self.clearSelected();
574
+ }
575
+ },
576
+ },
577
+ {
578
+ label: 'Sort by',
579
+ icon: Sort_1.default,
580
+ disabled: self.showSoftClipping,
581
+ subMenu: __spreadArray(__spreadArray([], __read(['Start location', 'Read strand', 'Base pair'].map(function (option) { return ({
582
+ label: option,
583
+ onClick: function () { return self.setSortedBy(option); },
584
+ }); })), false), [
585
+ {
586
+ label: 'Sort by tag...',
587
+ onClick: function () {
588
+ (0, util_1.getSession)(self).queueDialog(function (handleClose) { return [
589
+ SortByTagDlg,
590
+ { model: self, handleClose: handleClose },
591
+ ]; });
592
+ },
593
+ },
594
+ {
595
+ label: 'Clear sort',
596
+ onClick: function () { return self.clearSelected(); },
597
+ },
598
+ ], false),
599
+ },
600
+ {
601
+ label: 'Color scheme',
602
+ icon: Palette_1.default,
603
+ subMenu: [
604
+ {
605
+ label: 'Normal',
606
+ onClick: function () {
607
+ self.setColorScheme({ type: 'normal' });
608
+ },
609
+ },
610
+ {
611
+ label: 'Mapping quality',
612
+ onClick: function () {
613
+ self.setColorScheme({ type: 'mappingQuality' });
614
+ },
615
+ },
616
+ {
617
+ label: 'Strand',
618
+ onClick: function () {
619
+ self.setColorScheme({ type: 'strand' });
620
+ },
621
+ },
622
+ {
623
+ label: 'Pair orientation',
624
+ onClick: function () {
625
+ self.setColorScheme({ type: 'pairOrientation' });
626
+ },
627
+ },
628
+ {
629
+ label: 'Per-base quality',
630
+ onClick: function () {
631
+ self.setColorScheme({ type: 'perBaseQuality' });
632
+ },
633
+ },
634
+ {
635
+ label: 'Per-base lettering',
636
+ onClick: function () {
637
+ self.setColorScheme({ type: 'perBaseLettering' });
638
+ },
639
+ },
640
+ {
641
+ label: 'Modifications or methylation',
642
+ onClick: function () {
643
+ (0, util_1.getSession)(self).queueDialog(function (doneCallback) { return [
644
+ ModificationsDlg,
645
+ { model: self, handleClose: doneCallback },
646
+ ]; });
647
+ },
648
+ },
649
+ {
650
+ label: 'Insert size',
651
+ onClick: function () {
652
+ self.setColorScheme({ type: 'insertSize' });
653
+ },
654
+ },
655
+ {
656
+ label: 'Stranded paired-end',
657
+ onClick: function () {
658
+ self.setColorScheme({ type: 'reverseTemplate' });
659
+ },
660
+ },
661
+ {
662
+ label: 'Color by tag...',
663
+ onClick: function () {
664
+ (0, util_1.getSession)(self).queueDialog(function (doneCallback) { return [
665
+ ColorByTagDlg,
666
+ { model: self, handleClose: doneCallback },
667
+ ]; });
668
+ },
669
+ },
670
+ ],
671
+ },
672
+ {
673
+ label: 'Filter by',
674
+ icon: ClearAll_1.default,
675
+ onClick: function () {
676
+ (0, util_1.getSession)(self).queueDialog(function (doneCallback) { return [
677
+ FilterByTagDlg,
678
+ { model: self, handleClose: doneCallback },
679
+ ]; });
680
+ },
681
+ },
682
+ {
683
+ label: 'Set feature height',
684
+ onClick: function () {
685
+ (0, util_1.getSession)(self).queueDialog(function (doneCallback) { return [
686
+ SetFeatureHeightDlg,
687
+ { model: self, handleClose: doneCallback },
688
+ ]; });
689
+ },
690
+ },
691
+ {
692
+ label: 'Set max height',
693
+ onClick: function () {
694
+ (0, util_1.getSession)(self).queueDialog(function (doneCallback) { return [
695
+ SetMaxHeightDlg,
696
+ { model: self, handleClose: doneCallback },
697
+ ]; });
698
+ },
699
+ },
700
+ {
701
+ label: 'Fade mismatches by quality',
702
+ type: 'checkbox',
703
+ checked: self.mismatchAlphaSetting,
704
+ onClick: function () {
705
+ self.toggleMismatchAlpha();
706
+ },
707
+ },
708
+ ], false);
709
+ },
710
+ };
711
+ });
725
712
  };
726
-
727
- var _default = stateModelFactory;
728
- exports.default = _default;
713
+ exports.default = stateModelFactory;
714
+ //# sourceMappingURL=model.js.map