@jbrowse/plugin-alignments 1.6.9 → 1.7.3

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 (131) hide show
  1. package/dist/AlignmentsFeatureDetail/AlignmentsFeatureDetail.d.ts +6 -6
  2. package/dist/AlignmentsFeatureDetail/AlignmentsFeatureDetail.js +216 -0
  3. package/dist/AlignmentsFeatureDetail/index.d.ts +13 -13
  4. package/dist/AlignmentsFeatureDetail/index.js +63 -0
  5. package/dist/AlignmentsFeatureDetail/index.test.js +60 -0
  6. package/dist/AlignmentsTrack/index.d.ts +2 -2
  7. package/dist/AlignmentsTrack/index.js +37 -0
  8. package/dist/BamAdapter/BamAdapter.d.ts +40 -30
  9. package/dist/BamAdapter/BamAdapter.js +598 -0
  10. package/dist/BamAdapter/BamAdapter.test.js +177 -0
  11. package/dist/BamAdapter/BamSlightlyLazyFeature.d.ts +33 -33
  12. package/dist/BamAdapter/BamSlightlyLazyFeature.js +176 -0
  13. package/dist/BamAdapter/MismatchParser.d.ts +28 -28
  14. package/dist/BamAdapter/MismatchParser.js +384 -0
  15. package/dist/BamAdapter/MismatchParser.test.js +259 -0
  16. package/dist/BamAdapter/configSchema.d.ts +2 -2
  17. package/dist/BamAdapter/configSchema.js +48 -0
  18. package/dist/BamAdapter/index.d.ts +3 -3
  19. package/dist/BamAdapter/index.js +36 -0
  20. package/dist/CramAdapter/CramAdapter.d.ts +52 -43
  21. package/dist/CramAdapter/CramAdapter.js +660 -0
  22. package/dist/CramAdapter/CramAdapter.test.js +138 -0
  23. package/dist/CramAdapter/CramSlightlyLazyFeature.d.ts +49 -49
  24. package/dist/CramAdapter/CramSlightlyLazyFeature.js +447 -0
  25. package/dist/CramAdapter/CramTestAdapters.d.ts +29 -29
  26. package/dist/CramAdapter/CramTestAdapters.js +234 -0
  27. package/dist/CramAdapter/configSchema.d.ts +3 -3
  28. package/dist/CramAdapter/configSchema.js +40 -0
  29. package/dist/CramAdapter/index.d.ts +3 -3
  30. package/dist/CramAdapter/index.js +36 -0
  31. package/dist/HtsgetBamAdapter/HtsgetBamAdapter.d.ts +9 -9
  32. package/dist/HtsgetBamAdapter/HtsgetBamAdapter.js +97 -0
  33. package/dist/HtsgetBamAdapter/configSchema.d.ts +2 -2
  34. package/dist/HtsgetBamAdapter/configSchema.js +31 -0
  35. package/dist/HtsgetBamAdapter/index.d.ts +3 -3
  36. package/dist/HtsgetBamAdapter/index.js +42 -0
  37. package/dist/LinearAlignmentsDisplay/components/AlignmentsDisplay.d.ts +7 -7
  38. package/dist/LinearAlignmentsDisplay/components/AlignmentsDisplay.js +69 -0
  39. package/dist/LinearAlignmentsDisplay/index.d.ts +2 -2
  40. package/dist/LinearAlignmentsDisplay/index.js +31 -0
  41. package/dist/LinearAlignmentsDisplay/models/configSchema.d.ts +4 -4
  42. package/dist/LinearAlignmentsDisplay/models/configSchema.js +25 -0
  43. package/dist/LinearAlignmentsDisplay/models/configSchema.test.js +83 -0
  44. package/dist/LinearAlignmentsDisplay/models/model.d.ts +105 -105
  45. package/dist/LinearAlignmentsDisplay/models/model.js +250 -0
  46. package/dist/LinearPileupDisplay/components/ColorByModifications.d.ts +14 -14
  47. package/dist/LinearPileupDisplay/components/ColorByModifications.js +123 -0
  48. package/dist/LinearPileupDisplay/components/ColorByTag.d.ts +9 -9
  49. package/dist/LinearPileupDisplay/components/ColorByTag.js +98 -0
  50. package/dist/LinearPileupDisplay/components/FilterByTag.d.ts +18 -18
  51. package/dist/LinearPileupDisplay/components/FilterByTag.js +203 -0
  52. package/dist/LinearPileupDisplay/components/LinearPileupDisplayBlurb.d.ts +13 -13
  53. package/dist/LinearPileupDisplay/components/LinearPileupDisplayBlurb.js +32 -0
  54. package/dist/LinearPileupDisplay/components/SetFeatureHeight.d.ts +16 -16
  55. package/dist/LinearPileupDisplay/components/SetFeatureHeight.js +99 -0
  56. package/dist/LinearPileupDisplay/components/SetMaxHeight.d.ts +10 -10
  57. package/dist/LinearPileupDisplay/components/SetMaxHeight.js +90 -0
  58. package/dist/LinearPileupDisplay/components/SortByTag.d.ts +9 -9
  59. package/dist/LinearPileupDisplay/components/SortByTag.js +95 -0
  60. package/dist/LinearPileupDisplay/configSchema.d.ts +6 -6
  61. package/dist/LinearPileupDisplay/configSchema.js +47 -0
  62. package/dist/LinearPileupDisplay/configSchema.test.js +92 -0
  63. package/dist/LinearPileupDisplay/index.d.ts +2 -2
  64. package/dist/LinearPileupDisplay/index.js +30 -0
  65. package/dist/LinearPileupDisplay/model.d.ts +319 -321
  66. package/dist/LinearPileupDisplay/model.js +602 -0
  67. package/dist/LinearSNPCoverageDisplay/components/Tooltip.d.ts +10 -10
  68. package/dist/LinearSNPCoverageDisplay/components/Tooltip.js +63 -0
  69. package/dist/LinearSNPCoverageDisplay/index.d.ts +2 -2
  70. package/dist/LinearSNPCoverageDisplay/index.js +30 -0
  71. package/dist/LinearSNPCoverageDisplay/models/configSchema.d.ts +2 -2
  72. package/dist/LinearSNPCoverageDisplay/models/configSchema.js +57 -0
  73. package/dist/LinearSNPCoverageDisplay/models/configSchema.test.js +62 -0
  74. package/dist/LinearSNPCoverageDisplay/models/model.d.ts +346 -96
  75. package/dist/LinearSNPCoverageDisplay/models/model.js +237 -0
  76. package/dist/NestedFrequencyTable.d.ts +14 -14
  77. package/dist/NestedFrequencyTable.js +152 -0
  78. package/dist/PileupRPC/rpcMethods.d.ts +34 -34
  79. package/dist/PileupRPC/rpcMethods.js +285 -0
  80. package/dist/PileupRenderer/PileupLayoutSession.d.ts +29 -29
  81. package/dist/PileupRenderer/PileupLayoutSession.js +79 -0
  82. package/dist/PileupRenderer/PileupRenderer.d.ts +125 -125
  83. package/dist/PileupRenderer/PileupRenderer.js +1220 -0
  84. package/dist/PileupRenderer/components/PileupRendering.d.ts +23 -23
  85. package/dist/PileupRenderer/components/PileupRendering.js +270 -0
  86. package/dist/PileupRenderer/components/PileupRendering.test.js +36 -0
  87. package/dist/PileupRenderer/configSchema.d.ts +2 -2
  88. package/dist/PileupRenderer/configSchema.js +72 -0
  89. package/dist/PileupRenderer/index.d.ts +2 -2
  90. package/dist/PileupRenderer/index.js +25 -0
  91. package/dist/PileupRenderer/sortUtil.d.ts +8 -8
  92. package/dist/PileupRenderer/sortUtil.js +112 -0
  93. package/dist/SNPCoverageAdapter/SNPCoverageAdapter.d.ts +67 -71
  94. package/dist/SNPCoverageAdapter/SNPCoverageAdapter.js +606 -0
  95. package/dist/SNPCoverageAdapter/configSchema.d.ts +3 -3
  96. package/dist/SNPCoverageAdapter/configSchema.js +22 -0
  97. package/dist/SNPCoverageAdapter/index.d.ts +3 -3
  98. package/dist/SNPCoverageAdapter/index.js +45 -0
  99. package/dist/SNPCoverageRenderer/SNPCoverageRenderer.d.ts +20 -20
  100. package/dist/SNPCoverageRenderer/SNPCoverageRenderer.js +296 -0
  101. package/dist/SNPCoverageRenderer/configSchema.d.ts +2 -2
  102. package/dist/SNPCoverageRenderer/configSchema.js +40 -0
  103. package/dist/SNPCoverageRenderer/index.d.ts +3 -3
  104. package/dist/SNPCoverageRenderer/index.js +34 -0
  105. package/dist/declare.d.js +1 -0
  106. package/dist/index.d.ts +10 -10
  107. package/dist/index.js +154 -6
  108. package/dist/index.test.js +26 -0
  109. package/dist/shared.d.ts +25 -25
  110. package/dist/shared.js +96 -0
  111. package/dist/util.d.ts +19 -19
  112. package/dist/util.js +135 -0
  113. package/package.json +5 -8
  114. package/src/BamAdapter/BamAdapter.ts +35 -8
  115. package/src/CramAdapter/CramAdapter.ts +42 -15
  116. package/src/LinearPileupDisplay/components/SetMaxHeight.tsx +1 -1
  117. package/src/LinearPileupDisplay/model.ts +2 -22
  118. package/src/LinearSNPCoverageDisplay/models/model.ts +6 -36
  119. package/src/PileupRenderer/PileupRenderer.tsx +3 -6
  120. package/src/SNPCoverageAdapter/SNPCoverageAdapter.ts +11 -17
  121. package/dist/AlignmentsFeatureDetail/index.test.d.ts +0 -1
  122. package/dist/LinearAlignmentsDisplay/models/configSchema.test.d.ts +0 -1
  123. package/dist/LinearPileupDisplay/configSchema.test.d.ts +0 -1
  124. package/dist/LinearSNPCoverageDisplay/models/configSchema.test.d.ts +0 -1
  125. package/dist/PileupRenderer/components/PileupRendering.test.d.ts +0 -1
  126. package/dist/plugin-alignments.cjs.development.js +0 -8438
  127. package/dist/plugin-alignments.cjs.development.js.map +0 -1
  128. package/dist/plugin-alignments.cjs.production.min.js +0 -2
  129. package/dist/plugin-alignments.cjs.production.min.js.map +0 -1
  130. package/dist/plugin-alignments.esm.js +0 -8430
  131. package/dist/plugin-alignments.esm.js.map +0 -1
@@ -0,0 +1,602 @@
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
+ }
175
+ };
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, sortedBy, colorBy, view, uniqueTagSet, uniqueModificationsSet, pos, refName, assemblyName, region;
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
+ sortedBy = self.sortedBy, colorBy = self.colorBy;
189
+ view = (0, _util.getContainingView)(self); // continually generate the vc pairing, set and rerender if any
190
+ // new values seen
191
+
192
+ if (!(colorBy !== null && colorBy !== void 0 && colorBy.tag)) {
193
+ _context.next = 9;
194
+ break;
195
+ }
196
+
197
+ _context.next = 7;
198
+ return (0, _shared.getUniqueTagValues)(self, colorBy, view.staticBlocks);
199
+
200
+ case 7:
201
+ uniqueTagSet = _context.sent;
202
+ self.updateColorTagMap(uniqueTagSet);
203
+
204
+ case 9:
205
+ if (!((colorBy === null || colorBy === void 0 ? void 0 : colorBy.type) === 'modifications')) {
206
+ _context.next = 14;
207
+ break;
208
+ }
209
+
210
+ _context.next = 12;
211
+ return (0, _shared.getUniqueModificationValues)(self, (0, _configuration.getConf)(self.parentTrack, ['adapter']), colorBy, view.staticBlocks);
212
+
213
+ case 12:
214
+ uniqueModificationsSet = _context.sent;
215
+ self.updateModificationColorMap(uniqueModificationsSet);
216
+
217
+ case 14:
218
+ if (!sortedBy) {
219
+ _context.next = 23;
220
+ break;
221
+ }
222
+
223
+ pos = sortedBy.pos, refName = sortedBy.refName, assemblyName = sortedBy.assemblyName;
224
+ region = {
225
+ start: pos,
226
+ end: pos + 1,
227
+ refName: refName,
228
+ assemblyName: assemblyName
229
+ }; // render just the sorted region first
230
+
231
+ _context.next = 19;
232
+ return self.rendererType.renderInClient(rpcManager, _objectSpread({
233
+ assemblyName: assemblyName,
234
+ regions: [region],
235
+ adapterConfig: self.adapterConfig,
236
+ rendererType: self.rendererType.name,
237
+ sessionId: (0, _tracks.getRpcSessionId)(self),
238
+ timeout: 1000000
239
+ }, self.renderProps()));
240
+
241
+ case 19:
242
+ self.setReady(true);
243
+ self.setCurrBpPerPx(view.bpPerPx);
244
+ _context.next = 24;
245
+ break;
246
+
247
+ case 23:
248
+ self.setReady(true);
249
+
250
+ case 24:
251
+ _context.next = 30;
252
+ break;
253
+
254
+ case 26:
255
+ _context.prev = 26;
256
+ _context.t0 = _context["catch"](0);
257
+ console.error(_context.t0);
258
+ self.setError(_context.t0);
259
+
260
+ case 30:
261
+ case "end":
262
+ return _context.stop();
263
+ }
264
+ }
265
+ }, _callee, null, [[0, 26]]);
266
+ })), {
267
+ delay: 1000
268
+ }));
269
+ },
270
+ selectFeature: function selectFeature(feature) {
271
+ var session = (0, _util.getSession)(self);
272
+
273
+ if ((0, _util.isSessionModelWithWidgets)(session)) {
274
+ var featureWidget = session.addWidget('AlignmentsFeatureWidget', 'alignmentFeature', {
275
+ featureData: feature.toJSON(),
276
+ view: (0, _util.getContainingView)(self)
277
+ });
278
+ session.showWidget(featureWidget);
279
+ }
280
+
281
+ session.setSelection(feature);
282
+ },
283
+ clearSelected: function clearSelected() {
284
+ self.sortedBy = undefined;
285
+ },
286
+ // uses copy-to-clipboard and generates notification
287
+ copyFeatureToClipboard: function copyFeatureToClipboard(feature) {
288
+ var _feature$toJSON = feature.toJSON(),
289
+ uniqueId = _feature$toJSON.uniqueId,
290
+ rest = (0, _objectWithoutProperties2["default"])(_feature$toJSON, _excluded);
291
+
292
+ var session = (0, _util.getSession)(self);
293
+ (0, _copyToClipboard["default"])(JSON.stringify(rest, null, 4));
294
+ session.notify('Copied to clipboard', 'success');
295
+ },
296
+ toggleSoftClipping: function toggleSoftClipping() {
297
+ self.showSoftClipping = !self.showSoftClipping;
298
+ },
299
+ toggleMismatchAlpha: function toggleMismatchAlpha() {
300
+ self.mismatchAlpha = !self.mismatchAlpha;
301
+ },
302
+ setConfig: function setConfig(configuration) {
303
+ self.configuration = configuration;
304
+ },
305
+ setSortedBy: function setSortedBy(type, tag) {
306
+ var _ref2 = (0, _util.getContainingView)(self),
307
+ centerLineInfo = _ref2.centerLineInfo;
308
+
309
+ if (!centerLineInfo) {
310
+ return;
311
+ }
312
+
313
+ var refName = centerLineInfo.refName,
314
+ assemblyName = centerLineInfo.assemblyName,
315
+ offset = centerLineInfo.offset;
316
+ var centerBp = Math.round(offset) + 1;
317
+ var centerRefName = refName;
318
+
319
+ if (centerBp < 0) {
320
+ return;
321
+ }
322
+
323
+ self.sortedBy = {
324
+ type: type,
325
+ pos: centerBp,
326
+ refName: centerRefName,
327
+ assemblyName: assemblyName,
328
+ tag: tag
329
+ };
330
+ self.ready = false;
331
+ },
332
+ setFilterBy: function setFilterBy(filter) {
333
+ self.filterBy = (0, _mobxStateTree.cast)(filter);
334
+ }
335
+ };
336
+ }).actions(function (self) {
337
+ // resets the sort object and refresh whole display on reload
338
+ var superReload = self.reload;
339
+ return {
340
+ reload: function reload() {
341
+ self.clearSelected();
342
+ superReload();
343
+ }
344
+ };
345
+ }).views(function (self) {
346
+ return {
347
+ get maxHeight() {
348
+ var conf = (0, _configuration.getConf)(self, ['renderers', self.rendererTypeName]) || {};
349
+ return self.trackMaxHeight !== undefined ? self.trackMaxHeight : conf.maxHeight;
350
+ },
351
+
352
+ get rendererConfig() {
353
+ var configBlob = (0, _configuration.getConf)(self, ['renderers', self.rendererTypeName]) || {};
354
+ return self.rendererType.configSchema.create(_objectSpread(_objectSpread({}, configBlob), {}, {
355
+ height: self.featureHeight,
356
+ noSpacing: self.noSpacing,
357
+ maxHeight: this.maxHeight,
358
+ mismatchAlpha: self.mismatchAlpha
359
+ }), (0, _mobxStateTree.getEnv)(self));
360
+ },
361
+
362
+ get featureHeightSetting() {
363
+ return self.featureHeight || (0, _configuration.readConfObject)(this.rendererConfig, 'height');
364
+ },
365
+
366
+ get mismatchAlphaSetting() {
367
+ return self.mismatchAlpha !== undefined ? self.mismatchAlpha : (0, _configuration.readConfObject)(this.rendererConfig, 'mismatchAlpha');
368
+ }
369
+
370
+ };
371
+ }).views(function (self) {
372
+ var superTrackMenuItems = self.trackMenuItems,
373
+ superRenderProps = self.renderProps;
374
+ return {
375
+ get rendererTypeName() {
376
+ var viewName = (0, _configuration.getConf)(self, 'defaultRendering');
377
+ var rendererType = rendererTypes.get(viewName);
378
+
379
+ if (!rendererType) {
380
+ throw new Error("unknown alignments view name ".concat(viewName));
381
+ }
382
+
383
+ return rendererType;
384
+ },
385
+
386
+ contextMenuItems: function contextMenuItems() {
387
+ var feat = self.contextMenuFeature;
388
+ var contextMenuItems = feat ? [{
389
+ label: 'Open feature details',
390
+ icon: _MenuOpen["default"],
391
+ onClick: function onClick() {
392
+ self.clearFeatureSelection();
393
+
394
+ if (feat) {
395
+ self.selectFeature(feat);
396
+ }
397
+ }
398
+ }, {
399
+ label: 'Copy info to clipboard',
400
+ icon: _Icons.ContentCopy,
401
+ onClick: function onClick() {
402
+ if (feat) {
403
+ self.copyFeatureToClipboard(feat);
404
+ }
405
+ }
406
+ }] : [];
407
+ return contextMenuItems;
408
+ },
409
+
410
+ get DisplayBlurb() {
411
+ return _LinearPileupDisplayBlurb["default"];
412
+ },
413
+
414
+ renderProps: function renderProps() {
415
+ var view = (0, _util.getContainingView)(self);
416
+ var colorTagMap = self.colorTagMap,
417
+ modificationTagMap = self.modificationTagMap,
418
+ sortedBy = self.sortedBy,
419
+ colorBy = self.colorBy,
420
+ filterBy = self.filterBy,
421
+ rpcDriverName = self.rpcDriverName;
422
+ var superProps = superRenderProps();
423
+ return _objectSpread(_objectSpread({}, superProps), {}, {
424
+ notReady: superProps.notReady || !self.ready || sortedBy && self.currBpPerPx !== view.bpPerPx,
425
+ rpcDriverName: rpcDriverName,
426
+ displayModel: self,
427
+ sortedBy: sortedBy,
428
+ colorBy: colorBy,
429
+ filterBy: filterBy,
430
+ colorTagMap: JSON.parse(JSON.stringify(colorTagMap)),
431
+ modificationTagMap: JSON.parse(JSON.stringify(modificationTagMap)),
432
+ showSoftClip: self.showSoftClipping,
433
+ config: self.rendererConfig
434
+ });
435
+ },
436
+ trackMenuItems: function trackMenuItems() {
437
+ return [].concat((0, _toConsumableArray2["default"])(superTrackMenuItems()), [{
438
+ label: 'Show soft clipping',
439
+ icon: _Visibility["default"],
440
+ type: 'checkbox',
441
+ checked: self.showSoftClipping,
442
+ onClick: function onClick() {
443
+ self.toggleSoftClipping(); // if toggling from off to on, will break sort for this track
444
+ // so clear it
445
+
446
+ if (self.showSoftClipping) {
447
+ self.clearSelected();
448
+ }
449
+ }
450
+ }, {
451
+ label: 'Sort by',
452
+ icon: _Sort["default"],
453
+ disabled: self.showSoftClipping,
454
+ subMenu: [].concat((0, _toConsumableArray2["default"])(['Start location', 'Read strand', 'Base pair'].map(function (option) {
455
+ return {
456
+ label: option,
457
+ onClick: function onClick() {
458
+ return self.setSortedBy(option);
459
+ }
460
+ };
461
+ })), [{
462
+ label: 'Sort by tag...',
463
+ onClick: function onClick() {
464
+ (0, _util.getSession)(self).queueDialog(function (doneCallback) {
465
+ return [SortByTagDlg, {
466
+ model: self,
467
+ handleClose: doneCallback
468
+ }];
469
+ });
470
+ }
471
+ }, {
472
+ label: 'Clear sort',
473
+ onClick: function onClick() {
474
+ return self.clearSelected();
475
+ }
476
+ }])
477
+ }, {
478
+ label: 'Color scheme',
479
+ icon: _Palette["default"],
480
+ subMenu: [{
481
+ label: 'Normal',
482
+ onClick: function onClick() {
483
+ self.setColorScheme({
484
+ type: 'normal'
485
+ });
486
+ }
487
+ }, {
488
+ label: 'Mapping quality',
489
+ onClick: function onClick() {
490
+ self.setColorScheme({
491
+ type: 'mappingQuality'
492
+ });
493
+ }
494
+ }, {
495
+ label: 'Strand',
496
+ onClick: function onClick() {
497
+ self.setColorScheme({
498
+ type: 'strand'
499
+ });
500
+ }
501
+ }, {
502
+ label: 'Pair orientation',
503
+ onClick: function onClick() {
504
+ self.setColorScheme({
505
+ type: 'pairOrientation'
506
+ });
507
+ }
508
+ }, {
509
+ label: 'Per-base quality',
510
+ onClick: function onClick() {
511
+ self.setColorScheme({
512
+ type: 'perBaseQuality'
513
+ });
514
+ }
515
+ }, {
516
+ label: 'Per-base lettering',
517
+ onClick: function onClick() {
518
+ self.setColorScheme({
519
+ type: 'perBaseLettering'
520
+ });
521
+ }
522
+ }, {
523
+ label: 'Modifications or methylation',
524
+ onClick: function onClick() {
525
+ (0, _util.getSession)(self).queueDialog(function (doneCallback) {
526
+ return [ModificationsDlg, {
527
+ model: self,
528
+ handleClose: doneCallback
529
+ }];
530
+ });
531
+ }
532
+ }, {
533
+ label: 'Insert size',
534
+ onClick: function onClick() {
535
+ self.setColorScheme({
536
+ type: 'insertSize'
537
+ });
538
+ }
539
+ }, {
540
+ label: 'Stranded paired-end',
541
+ onClick: function onClick() {
542
+ self.setColorScheme({
543
+ type: 'reverseTemplate'
544
+ });
545
+ }
546
+ }, {
547
+ label: 'Color by tag...',
548
+ onClick: function onClick() {
549
+ (0, _util.getSession)(self).queueDialog(function (doneCallback) {
550
+ return [ColorByTagDlg, {
551
+ model: self,
552
+ handleClose: doneCallback
553
+ }];
554
+ });
555
+ }
556
+ }]
557
+ }, {
558
+ label: 'Filter by',
559
+ icon: _ClearAll["default"],
560
+ onClick: function onClick() {
561
+ (0, _util.getSession)(self).queueDialog(function (doneCallback) {
562
+ return [FilterByTagDlg, {
563
+ model: self,
564
+ handleClose: doneCallback
565
+ }];
566
+ });
567
+ }
568
+ }, {
569
+ label: 'Set feature height',
570
+ onClick: function onClick() {
571
+ (0, _util.getSession)(self).queueDialog(function (doneCallback) {
572
+ return [SetFeatureHeightDlg, {
573
+ model: self,
574
+ handleClose: doneCallback
575
+ }];
576
+ });
577
+ }
578
+ }, {
579
+ label: 'Set max height',
580
+ onClick: function onClick() {
581
+ (0, _util.getSession)(self).queueDialog(function (doneCallback) {
582
+ return [SetMaxHeightDlg, {
583
+ model: self,
584
+ handleClose: doneCallback
585
+ }];
586
+ });
587
+ }
588
+ }, {
589
+ label: 'Fade mismatches by quality',
590
+ type: 'checkbox',
591
+ checked: self.mismatchAlphaSetting,
592
+ onClick: function onClick() {
593
+ self.toggleMismatchAlpha();
594
+ }
595
+ }]);
596
+ }
597
+ };
598
+ });
599
+ };
600
+
601
+ var _default = stateModelFactory;
602
+ exports["default"] = _default;
@@ -1,10 +1,10 @@
1
- /// <reference types="react" />
2
- declare type Coord = [number, number];
3
- declare const SNPCoverageTooltip: (props: {
4
- model: any;
5
- height: number;
6
- offsetMouseCoord: Coord;
7
- clientMouseCoord: Coord;
8
- clientRect?: DOMRect;
9
- }) => JSX.Element | null;
10
- export default SNPCoverageTooltip;
1
+ /// <reference types="react" />
2
+ declare type Coord = [number, number];
3
+ declare const SNPCoverageTooltip: (props: {
4
+ model: any;
5
+ height: number;
6
+ offsetMouseCoord: Coord;
7
+ clientMouseCoord: Coord;
8
+ clientRect?: DOMRect;
9
+ }) => JSX.Element | null;
10
+ export default SNPCoverageTooltip;
@@ -0,0 +1,63 @@
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 _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
11
+
12
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
13
+
14
+ var _react = _interopRequireDefault(require("react"));
15
+
16
+ var _mobxReact = require("mobx-react");
17
+
18
+ var _pluginWiggle = require("@jbrowse/plugin-wiggle");
19
+
20
+ /* eslint-disable @typescript-eslint/no-explicit-any */
21
+ var en = function en(n) {
22
+ return n.toLocaleString('en-US');
23
+ };
24
+
25
+ var TooltipContents = /*#__PURE__*/_react["default"].forwardRef(function (_ref, ref) {
26
+ var feature = _ref.feature;
27
+ var start = feature.get('start');
28
+ var end = feature.get('end');
29
+ var name = feature.get('refName');
30
+ var info = feature.get('snpinfo');
31
+ var loc = [name, start === end ? en(start) : "".concat(en(start), "..").concat(en(end))].filter(function (f) {
32
+ return !!f;
33
+ }).join(':');
34
+ var total = info === null || info === void 0 ? void 0 : info.total;
35
+ return /*#__PURE__*/_react["default"].createElement("div", {
36
+ ref: ref
37
+ }, /*#__PURE__*/_react["default"].createElement("table", null, /*#__PURE__*/_react["default"].createElement("caption", null, loc), /*#__PURE__*/_react["default"].createElement("thead", null, /*#__PURE__*/_react["default"].createElement("tr", null, /*#__PURE__*/_react["default"].createElement("th", null, "Base"), /*#__PURE__*/_react["default"].createElement("th", null, "Count"), /*#__PURE__*/_react["default"].createElement("th", null, "% of Total"), /*#__PURE__*/_react["default"].createElement("th", null, "Strands"), /*#__PURE__*/_react["default"].createElement("th", null, "Source"))), /*#__PURE__*/_react["default"].createElement("tbody", null, /*#__PURE__*/_react["default"].createElement("tr", null, /*#__PURE__*/_react["default"].createElement("td", null, "Total"), /*#__PURE__*/_react["default"].createElement("td", null, total), /*#__PURE__*/_react["default"].createElement("td", null)), Object.entries(info).map(function (_ref2) {
38
+ var _ref3 = (0, _slicedToArray2["default"])(_ref2, 2),
39
+ key = _ref3[0],
40
+ entry = _ref3[1];
41
+
42
+ return Object.entries(entry).map(function (_ref4) {
43
+ var _ref5 = (0, _slicedToArray2["default"])(_ref4, 2),
44
+ base = _ref5[0],
45
+ score = _ref5[1];
46
+
47
+ var strands = score.strands;
48
+ return /*#__PURE__*/_react["default"].createElement("tr", {
49
+ key: base
50
+ }, /*#__PURE__*/_react["default"].createElement("td", null, base.toUpperCase()), /*#__PURE__*/_react["default"].createElement("td", null, score.total), /*#__PURE__*/_react["default"].createElement("td", null, base === 'total' || base === 'skip' ? '---' : "".concat(Math.floor(score.total / (total || score.total || 1) * 100), "%")), /*#__PURE__*/_react["default"].createElement("td", null, strands['-1'] ? "".concat(strands['-1'], "(-)") : '', strands['1'] ? "".concat(strands['1'], "(+)") : ''), /*#__PURE__*/_react["default"].createElement("td", null, key));
51
+ });
52
+ }))));
53
+ });
54
+
55
+ var SNPCoverageTooltip = (0, _mobxReact.observer)(function (props) {
56
+ var model = props.model;
57
+ var feat = model.featureUnderMouse;
58
+ return feat && feat.get('type') === 'skip' ? null : /*#__PURE__*/_react["default"].createElement(_pluginWiggle.Tooltip, (0, _extends2["default"])({
59
+ TooltipContents: TooltipContents
60
+ }, props));
61
+ });
62
+ var _default = SNPCoverageTooltip;
63
+ exports["default"] = _default;
@@ -1,2 +1,2 @@
1
- import PluginManager from '@jbrowse/core/PluginManager';
2
- export default function register(pluginManager: PluginManager): void;
1
+ import PluginManager from '@jbrowse/core/PluginManager';
2
+ export default function register(pluginManager: PluginManager): void;