@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,250 @@
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 _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
11
+
12
+ var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
13
+
14
+ var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
15
+
16
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
17
+
18
+ var _react = _interopRequireDefault(require("react"));
19
+
20
+ var _configuration = require("@jbrowse/core/configuration");
21
+
22
+ var _models = require("@jbrowse/core/pluggableElementTypes/models");
23
+
24
+ var _mobx = require("mobx");
25
+
26
+ var _mobxStateTree = require("mobx-state-tree");
27
+
28
+ var _util = require("@jbrowse/core/util");
29
+
30
+ var _fastDeepEqual = _interopRequireDefault(require("fast-deep-equal"));
31
+
32
+ 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; }
33
+
34
+ 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; }
35
+
36
+ var minDisplayHeight = 20;
37
+
38
+ var stateModelFactory = function stateModelFactory(pluginManager, configSchema) {
39
+ return _mobxStateTree.types.compose('LinearAlignmentsDisplay', _models.BaseDisplay, _mobxStateTree.types.model({
40
+ PileupDisplay: _mobxStateTree.types.maybe(pluginManager.getDisplayType('LinearPileupDisplay').stateModel),
41
+ SNPCoverageDisplay: _mobxStateTree.types.maybe(pluginManager.getDisplayType('LinearSNPCoverageDisplay').stateModel),
42
+ snpCovHeight: 45,
43
+ type: _mobxStateTree.types.literal('LinearAlignmentsDisplay'),
44
+ configuration: (0, _configuration.ConfigurationReference)(configSchema),
45
+ height: 250,
46
+ showCoverage: true,
47
+ showPileup: true,
48
+ userFeatureScreenDensity: _mobxStateTree.types.maybe(_mobxStateTree.types.number)
49
+ }))["volatile"](function () {
50
+ return {
51
+ scrollTop: 0
52
+ };
53
+ }).actions(function (self) {
54
+ return {
55
+ toggleCoverage: function toggleCoverage() {
56
+ self.showCoverage = !self.showCoverage;
57
+ },
58
+ togglePileup: function togglePileup() {
59
+ self.showPileup = !self.showPileup;
60
+ },
61
+ setScrollTop: function setScrollTop(scrollTop) {
62
+ self.scrollTop = scrollTop;
63
+ },
64
+ setSNPCoverageHeight: function setSNPCoverageHeight(n) {
65
+ self.snpCovHeight = n;
66
+ }
67
+ };
68
+ }).views(function (self) {
69
+ var superTrackMenuItems = self.trackMenuItems;
70
+ return {
71
+ get pileupDisplayConfig() {
72
+ var conf = (0, _configuration.getConf)(self, 'pileupDisplay');
73
+ var track = (0, _util.getContainingTrack)(self);
74
+ return _objectSpread(_objectSpread({}, conf), {}, {
75
+ type: 'LinearPileupDisplay',
76
+ name: "".concat((0, _configuration.getConf)(track, 'name'), " pileup"),
77
+ displayId: "".concat(self.configuration.displayId, "_pileup_xyz") // xyz to avoid someone accidentally naming the displayId similar to this
78
+
79
+ });
80
+ },
81
+
82
+ getFeatureByID: function getFeatureByID(blockKey, id) {
83
+ return self.PileupDisplay.getFeatureByID(blockKey, id);
84
+ },
85
+ searchFeatureByID: function searchFeatureByID(id) {
86
+ return self.PileupDisplay.searchFeatureByID(id);
87
+ },
88
+
89
+ get features() {
90
+ return self.PileupDisplay.features;
91
+ },
92
+
93
+ get DisplayBlurb() {
94
+ var _self$PileupDisplay;
95
+
96
+ return (_self$PileupDisplay = self.PileupDisplay) === null || _self$PileupDisplay === void 0 ? void 0 : _self$PileupDisplay.DisplayBlurb;
97
+ },
98
+
99
+ get sortedBy() {
100
+ return self.PileupDisplay.sortedBy;
101
+ },
102
+
103
+ get sortedByPosition() {
104
+ return self.PileupDisplay.sortedByPosition;
105
+ },
106
+
107
+ get sortedByRefName() {
108
+ return self.PileupDisplay.sortedByRefName;
109
+ },
110
+
111
+ get snpCoverageDisplayConfig() {
112
+ var conf = (0, _configuration.getConf)(self, 'snpCoverageDisplay');
113
+ var track = (0, _util.getContainingTrack)(self);
114
+ return _objectSpread(_objectSpread({}, conf), {}, {
115
+ type: 'LinearSNPCoverageDisplay',
116
+ name: "".concat((0, _configuration.getConf)(track, 'name'), " snp coverage"),
117
+ displayId: "".concat(self.configuration.displayId, "_snpcoverage_xyz") // xyz to avoid someone accidentally naming the displayId similar to this
118
+
119
+ });
120
+ },
121
+
122
+ trackMenuItems: function trackMenuItems() {
123
+ return [].concat((0, _toConsumableArray2["default"])(superTrackMenuItems()), [{
124
+ type: 'subMenu',
125
+ label: 'Pileup settings',
126
+ subMenu: self.PileupDisplay.trackMenuItems()
127
+ }, {
128
+ type: 'subMenu',
129
+ label: 'SNPCoverage settings',
130
+ subMenu: self.SNPCoverageDisplay.trackMenuItems()
131
+ }]);
132
+ }
133
+ };
134
+ }).actions(function (self) {
135
+ return {
136
+ setSNPCoverageDisplay: function setSNPCoverageDisplay(displayConfig) {
137
+ self.SNPCoverageDisplay = {
138
+ type: 'LinearSNPCoverageDisplay',
139
+ configuration: displayConfig,
140
+ height: self.snpCovHeight
141
+ };
142
+ },
143
+ setUserFeatureScreenDensity: function setUserFeatureScreenDensity(limit) {
144
+ self.PileupDisplay.setUserFeatureScreenDensity(limit);
145
+ self.SNPCoverageDisplay.setUserFeatureScreenDensity(limit);
146
+ },
147
+ setPileupDisplay: function setPileupDisplay(displayConfig) {
148
+ self.PileupDisplay = {
149
+ type: 'LinearPileupDisplay',
150
+ configuration: displayConfig
151
+ };
152
+ },
153
+ setHeight: function setHeight(displayHeight) {
154
+ if (displayHeight > minDisplayHeight) {
155
+ self.height = displayHeight;
156
+ } else {
157
+ self.height = minDisplayHeight;
158
+ }
159
+
160
+ return self.height;
161
+ },
162
+ resizeHeight: function resizeHeight(distance) {
163
+ var oldHeight = self.height;
164
+ var newHeight = this.setHeight(self.height + distance);
165
+ return newHeight - oldHeight;
166
+ }
167
+ };
168
+ }).actions(function (self) {
169
+ return {
170
+ afterAttach: function afterAttach() {
171
+ (0, _mobxStateTree.addDisposer)(self, (0, _mobx.autorun)(function () {
172
+ if (!self.SNPCoverageDisplay) {
173
+ self.setSNPCoverageDisplay(self.snpCoverageDisplayConfig);
174
+ } else if (!(0, _fastDeepEqual["default"])(self.snpCoverageDisplayConfig, (0, _mobxStateTree.getSnapshot)(self.SNPCoverageDisplay.configuration))) {
175
+ self.SNPCoverageDisplay.setHeight(self.snpCovHeight);
176
+ self.SNPCoverageDisplay.setConfig(self.snpCoverageDisplayConfig);
177
+ }
178
+
179
+ if (!self.PileupDisplay) {
180
+ self.setPileupDisplay(self.pileupDisplayConfig);
181
+ } else if (!(0, _fastDeepEqual["default"])(self.pileupDisplayConfig, (0, _mobxStateTree.getSnapshot)(self.PileupDisplay.configuration))) {
182
+ self.PileupDisplay.setConfig(self.pileupDisplayConfig);
183
+ } // propagate the filterBy setting from pileupdisplay to snpcoverage
184
+ // note: the snpcoverage display is not able to control filterBy
185
+ // itself
186
+
187
+
188
+ if (self.PileupDisplay.filterBy && !(0, _fastDeepEqual["default"])((0, _mobxStateTree.getSnapshot)(self.PileupDisplay.filterBy), (0, _mobxStateTree.getSnapshot)(self.SNPCoverageDisplay.filterBy))) {
189
+ self.SNPCoverageDisplay.setFilterBy((0, _mobxStateTree.getSnapshot)(self.PileupDisplay.filterBy));
190
+ }
191
+
192
+ if (self.PileupDisplay.colorBy && !(0, _fastDeepEqual["default"])((0, _mobxStateTree.getSnapshot)(self.PileupDisplay.colorBy), self.SNPCoverageDisplay.colorBy ? (0, _mobxStateTree.getSnapshot)(self.SNPCoverageDisplay.colorBy) : {})) {
193
+ self.SNPCoverageDisplay.setColorBy((0, _mobxStateTree.getSnapshot)(self.PileupDisplay.colorBy));
194
+ }
195
+ }));
196
+ (0, _mobxStateTree.addDisposer)(self, (0, _mobx.autorun)(function () {
197
+ self.setSNPCoverageHeight(self.SNPCoverageDisplay.height);
198
+ }));
199
+ },
200
+ renderSvg: function renderSvg(opts) {
201
+ return (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee() {
202
+ var pileupHeight;
203
+ return _regenerator["default"].wrap(function _callee$(_context) {
204
+ while (1) {
205
+ switch (_context.prev = _context.next) {
206
+ case 0:
207
+ pileupHeight = self.height - self.SNPCoverageDisplay.height;
208
+ _context.next = 3;
209
+ return (0, _mobx.when)(function () {
210
+ return self.PileupDisplay.ready;
211
+ });
212
+
213
+ case 3:
214
+ _context.t0 = _react["default"];
215
+ _context.t1 = _react["default"].Fragment;
216
+ _context.t2 = _react["default"];
217
+ _context.next = 8;
218
+ return self.SNPCoverageDisplay.renderSvg(opts);
219
+
220
+ case 8:
221
+ _context.t3 = _context.sent;
222
+ _context.t4 = _context.t2.createElement.call(_context.t2, "g", null, _context.t3);
223
+ _context.t5 = _react["default"];
224
+ _context.t6 = {
225
+ transform: "translate(0 ".concat(self.SNPCoverageDisplay.height, ")")
226
+ };
227
+ _context.next = 14;
228
+ return self.PileupDisplay.renderSvg(_objectSpread(_objectSpread({}, opts), {}, {
229
+ overrideHeight: pileupHeight
230
+ }));
231
+
232
+ case 14:
233
+ _context.t7 = _context.sent;
234
+ _context.t8 = _context.t5.createElement.call(_context.t5, "g", _context.t6, _context.t7);
235
+ return _context.abrupt("return", _context.t0.createElement.call(_context.t0, _context.t1, null, _context.t4, _context.t8));
236
+
237
+ case 17:
238
+ case "end":
239
+ return _context.stop();
240
+ }
241
+ }
242
+ }, _callee);
243
+ }))();
244
+ }
245
+ };
246
+ });
247
+ };
248
+
249
+ var _default = stateModelFactory;
250
+ exports["default"] = _default;
@@ -1,14 +1,14 @@
1
- /// <reference types="react" />
2
- import { ObservableMap } from 'mobx';
3
- declare function ColorByTagDlg(props: {
4
- model: {
5
- setColorScheme: Function;
6
- modificationTagMap: ObservableMap<string, string>;
7
- colorBy?: {
8
- type: string;
9
- };
10
- };
11
- handleClose: () => void;
12
- }): JSX.Element;
13
- declare const _default: typeof ColorByTagDlg;
14
- export default _default;
1
+ /// <reference types="react" />
2
+ import { ObservableMap } from 'mobx';
3
+ declare function ColorByTagDlg(props: {
4
+ model: {
5
+ setColorScheme: Function;
6
+ modificationTagMap: ObservableMap<string, string>;
7
+ colorBy?: {
8
+ type: string;
9
+ };
10
+ };
11
+ handleClose: () => void;
12
+ }): JSX.Element;
13
+ declare const _default: typeof ColorByTagDlg;
14
+ export default _default;
@@ -0,0 +1,123 @@
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 _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
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 _core = require("@material-ui/core");
19
+
20
+ var _Close = _interopRequireDefault(require("@material-ui/icons/Close"));
21
+
22
+ var useStyles = (0, _core.makeStyles)(function (theme) {
23
+ return {
24
+ closeButton: {
25
+ position: 'absolute',
26
+ right: theme.spacing(1),
27
+ top: theme.spacing(1),
28
+ color: theme.palette.grey[500]
29
+ },
30
+ table: {
31
+ border: '1px solid #888',
32
+ margin: theme.spacing(4),
33
+ '& td': {
34
+ padding: theme.spacing(1)
35
+ }
36
+ }
37
+ };
38
+ });
39
+
40
+ function ModificationTable(_ref) {
41
+ var modifications = _ref.modifications;
42
+ var classes = useStyles();
43
+ return /*#__PURE__*/_react["default"].createElement("table", {
44
+ className: classes.table
45
+ }, /*#__PURE__*/_react["default"].createElement("tbody", null, modifications.map(function (_ref2) {
46
+ var _ref3 = (0, _slicedToArray2["default"])(_ref2, 2),
47
+ key = _ref3[0],
48
+ value = _ref3[1];
49
+
50
+ return /*#__PURE__*/_react["default"].createElement("tr", {
51
+ key: key
52
+ }, /*#__PURE__*/_react["default"].createElement("td", null, key), /*#__PURE__*/_react["default"].createElement("td", null, value), /*#__PURE__*/_react["default"].createElement("td", {
53
+ style: {
54
+ width: '1em',
55
+ background: value
56
+ }
57
+ }));
58
+ })));
59
+ }
60
+
61
+ function ColorByTagDlg(props) {
62
+ var classes = useStyles();
63
+ var model = props.model,
64
+ handleClose = props.handleClose;
65
+ var colorBy = model.colorBy,
66
+ modificationTagMap = model.modificationTagMap;
67
+ var modifications = (0, _toConsumableArray2["default"])(modificationTagMap.entries());
68
+ return /*#__PURE__*/_react["default"].createElement(_core.Dialog, {
69
+ open: true,
70
+ onClose: handleClose
71
+ }, /*#__PURE__*/_react["default"].createElement(_core.DialogTitle, null, "Color by modifications", /*#__PURE__*/_react["default"].createElement(_core.IconButton, {
72
+ "aria-label": "close",
73
+ className: classes.closeButton,
74
+ onClick: handleClose
75
+ }, /*#__PURE__*/_react["default"].createElement(_Close["default"], null))), /*#__PURE__*/_react["default"].createElement(_core.DialogContent, null, /*#__PURE__*/_react["default"].createElement(_core.Typography, null, "You can choose to color the modifications in the BAM/CRAM MM/ML specification using this dialog. Choosing modifications colors the modified positions and can color multiple modification types. Choosing the methylation setting colors methylated and unmethylated CpG."), /*#__PURE__*/_react["default"].createElement(_core.Typography, null, "Note: you can revisit this dialog to see the current mapping of colors to modification type for the modification coloring mode"), /*#__PURE__*/_react["default"].createElement("div", {
76
+ style: {
77
+ margin: 20
78
+ }
79
+ }, (colorBy === null || colorBy === void 0 ? void 0 : colorBy.type) === 'modifications' ? /*#__PURE__*/_react["default"].createElement("div", null, modifications.length ? /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, "Current modification-type-to-color mapping", /*#__PURE__*/_react["default"].createElement(ModificationTable, {
80
+ modifications: (0, _toConsumableArray2["default"])(modificationTagMap.entries())
81
+ })) : /*#__PURE__*/_react["default"].createElement("div", null, /*#__PURE__*/_react["default"].createElement(_core.Typography, null, "Note: color by modifications is already enabled. Loading current modifications..."), /*#__PURE__*/_react["default"].createElement(_core.CircularProgress, {
82
+ size: 15
83
+ }))) : null, (colorBy === null || colorBy === void 0 ? void 0 : colorBy.type) === 'methylation' ? /*#__PURE__*/_react["default"].createElement(ModificationTable, {
84
+ modifications: [['methylated', 'red'], ['unmethylated', 'blue']]
85
+ }) : null), /*#__PURE__*/_react["default"].createElement(_core.DialogActions, null, /*#__PURE__*/_react["default"].createElement(_core.Button, {
86
+ variant: "contained",
87
+ color: "primary",
88
+ style: {
89
+ margin: 5
90
+ },
91
+ onClick: function onClick() {
92
+ model.setColorScheme({
93
+ type: 'modifications'
94
+ });
95
+ handleClose();
96
+ }
97
+ }, "Modifications"), /*#__PURE__*/_react["default"].createElement(_core.Button, {
98
+ variant: "contained",
99
+ color: "primary",
100
+ style: {
101
+ margin: 5
102
+ },
103
+ onClick: function onClick() {
104
+ model.setColorScheme({
105
+ type: 'methylation'
106
+ });
107
+ handleClose();
108
+ }
109
+ }, "Methylation"), /*#__PURE__*/_react["default"].createElement(_core.Button, {
110
+ variant: "contained",
111
+ color: "secondary",
112
+ style: {
113
+ margin: 5
114
+ },
115
+ onClick: function onClick() {
116
+ return handleClose();
117
+ }
118
+ }, "Cancel"))));
119
+ }
120
+
121
+ var _default = (0, _mobxReact.observer)(ColorByTagDlg);
122
+
123
+ exports["default"] = _default;
@@ -1,9 +1,9 @@
1
- /// <reference types="react" />
2
- declare function ColorByTagDlg(props: {
3
- model: {
4
- setColorScheme: Function;
5
- };
6
- handleClose: () => void;
7
- }): JSX.Element;
8
- declare const _default: typeof ColorByTagDlg;
9
- export default _default;
1
+ /// <reference types="react" />
2
+ declare function ColorByTagDlg(props: {
3
+ model: {
4
+ setColorScheme: Function;
5
+ };
6
+ handleClose: () => void;
7
+ }): JSX.Element;
8
+ declare const _default: typeof ColorByTagDlg;
9
+ export default _default;
@@ -0,0 +1,98 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ var _typeof = require("@babel/runtime/helpers/typeof");
6
+
7
+ Object.defineProperty(exports, "__esModule", {
8
+ value: true
9
+ });
10
+ exports["default"] = void 0;
11
+
12
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
13
+
14
+ var _react = _interopRequireWildcard(require("react"));
15
+
16
+ var _mobxReact = require("mobx-react");
17
+
18
+ var _core = require("@material-ui/core");
19
+
20
+ var _Close = _interopRequireDefault(require("@material-ui/icons/Close"));
21
+
22
+ 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); }
23
+
24
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
25
+
26
+ var useStyles = (0, _core.makeStyles)(function (theme) {
27
+ return {
28
+ root: {
29
+ width: 300
30
+ },
31
+ closeButton: {
32
+ position: 'absolute',
33
+ right: theme.spacing(1),
34
+ top: theme.spacing(1),
35
+ color: theme.palette.grey[500]
36
+ }
37
+ };
38
+ });
39
+
40
+ function ColorByTagDlg(props) {
41
+ var classes = useStyles();
42
+ var model = props.model,
43
+ handleClose = props.handleClose;
44
+
45
+ var _useState = (0, _react.useState)(''),
46
+ _useState2 = (0, _slicedToArray2["default"])(_useState, 2),
47
+ tag = _useState2[0],
48
+ setTag = _useState2[1];
49
+
50
+ var validTag = tag.match(/^[A-Za-z][A-Za-z0-9]$/);
51
+ return /*#__PURE__*/_react["default"].createElement(_core.Dialog, {
52
+ open: true,
53
+ onClose: handleClose
54
+ }, /*#__PURE__*/_react["default"].createElement(_core.DialogTitle, null, "Color by tag", /*#__PURE__*/_react["default"].createElement(_core.IconButton, {
55
+ "aria-label": "close",
56
+ className: classes.closeButton,
57
+ onClick: handleClose
58
+ }, /*#__PURE__*/_react["default"].createElement(_Close["default"], null))), /*#__PURE__*/_react["default"].createElement(_core.DialogContent, {
59
+ style: {
60
+ overflowX: 'hidden'
61
+ }
62
+ }, /*#__PURE__*/_react["default"].createElement(_core.Typography, null, "Enter tag to color by: "), /*#__PURE__*/_react["default"].createElement(_core.Typography, {
63
+ color: "textSecondary"
64
+ }, "Examples: XS or TS for RNA-seq inferred read strand, ts (lower-case) for minimap2 read strand, HP for haplotype, RG for read group, etc."), /*#__PURE__*/_react["default"].createElement(_core.TextField, {
65
+ value: tag,
66
+ onChange: function onChange(event) {
67
+ return setTag(event.target.value);
68
+ },
69
+ placeholder: "Enter tag name",
70
+ inputProps: {
71
+ maxLength: 2,
72
+ 'data-testid': 'color-tag-name-input'
73
+ },
74
+ error: tag.length === 2 && !validTag,
75
+ helperText: tag.length === 2 && !validTag ? 'Not a valid tag' : '',
76
+ autoComplete: "off",
77
+ "data-testid": "color-tag-name"
78
+ }), /*#__PURE__*/_react["default"].createElement(_core.DialogActions, null, /*#__PURE__*/_react["default"].createElement(_core.Button, {
79
+ variant: "contained",
80
+ color: "primary",
81
+ onClick: function onClick() {
82
+ model.setColorScheme({
83
+ type: 'tag',
84
+ tag: tag
85
+ });
86
+ handleClose();
87
+ },
88
+ disabled: !validTag
89
+ }, "Submit"), /*#__PURE__*/_react["default"].createElement(_core.Button, {
90
+ variant: "contained",
91
+ color: "secondary",
92
+ onClick: handleClose
93
+ }, "Cancel"))));
94
+ }
95
+
96
+ var _default = (0, _mobxReact.observer)(ColorByTagDlg);
97
+
98
+ exports["default"] = _default;
@@ -1,18 +1,18 @@
1
- /// <reference types="react" />
2
- declare function FilterByTagDlg(props: {
3
- model: {
4
- filterBy?: {
5
- flagExclude: number;
6
- flagInclude: number;
7
- readName?: string;
8
- tagFilter?: {
9
- tag: string;
10
- value: string;
11
- };
12
- };
13
- setFilterBy: Function;
14
- };
15
- handleClose: () => void;
16
- }): JSX.Element;
17
- declare const _default: typeof FilterByTagDlg;
18
- export default _default;
1
+ /// <reference types="react" />
2
+ declare function FilterByTagDlg(props: {
3
+ model: {
4
+ filterBy?: {
5
+ flagExclude: number;
6
+ flagInclude: number;
7
+ readName?: string;
8
+ tagFilter?: {
9
+ tag: string;
10
+ value: string;
11
+ };
12
+ };
13
+ setFilterBy: Function;
14
+ };
15
+ handleClose: () => void;
16
+ }): JSX.Element;
17
+ declare const _default: typeof FilterByTagDlg;
18
+ export default _default;