@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,237 @@
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 _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
13
+
14
+ var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
15
+
16
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
17
+
18
+ var _mobxStateTree = require("mobx-state-tree");
19
+
20
+ var _mobx = require("mobx");
21
+
22
+ var _configuration = require("@jbrowse/core/configuration");
23
+
24
+ var _pluginWiggle = require("@jbrowse/plugin-wiggle");
25
+
26
+ var _util = require("@jbrowse/core/util");
27
+
28
+ var _Tooltip = _interopRequireDefault(require("../components/Tooltip"));
29
+
30
+ var _shared = require("../../shared");
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
+ // using a map because it preserves order
37
+ var rendererTypes = new Map([['snpcoverage', 'SNPCoverageRenderer']]);
38
+
39
+ var stateModelFactory = function stateModelFactory(pluginManager, configSchema) {
40
+ return _mobxStateTree.types.compose('LinearSNPCoverageDisplay', (0, _pluginWiggle.linearWiggleDisplayModelFactory)(pluginManager, configSchema), _mobxStateTree.types.model({
41
+ type: _mobxStateTree.types.literal('LinearSNPCoverageDisplay'),
42
+ drawInterbaseCounts: _mobxStateTree.types.maybe(_mobxStateTree.types["boolean"]),
43
+ drawIndicators: _mobxStateTree.types.maybe(_mobxStateTree.types["boolean"]),
44
+ drawArcs: _mobxStateTree.types.maybe(_mobxStateTree.types["boolean"]),
45
+ filterBy: _mobxStateTree.types.optional(_mobxStateTree.types.model({
46
+ flagInclude: _mobxStateTree.types.optional(_mobxStateTree.types.number, 0),
47
+ flagExclude: _mobxStateTree.types.optional(_mobxStateTree.types.number, 1540),
48
+ readName: _mobxStateTree.types.maybe(_mobxStateTree.types.string),
49
+ tagFilter: _mobxStateTree.types.maybe(_mobxStateTree.types.model({
50
+ tag: _mobxStateTree.types.string,
51
+ value: _mobxStateTree.types.string
52
+ }))
53
+ }), {}),
54
+ colorBy: _mobxStateTree.types.maybe(_mobxStateTree.types.model({
55
+ type: _mobxStateTree.types.string,
56
+ tag: _mobxStateTree.types.maybe(_mobxStateTree.types.string)
57
+ }))
58
+ }))["volatile"](function () {
59
+ return {
60
+ modificationTagMap: _mobx.observable.map({})
61
+ };
62
+ }).actions(function (self) {
63
+ return {
64
+ setConfig: function setConfig(configuration) {
65
+ self.configuration = configuration;
66
+ },
67
+ setFilterBy: function setFilterBy(filter) {
68
+ self.filterBy = (0, _mobxStateTree.cast)(filter);
69
+ },
70
+ setColorBy: function setColorBy(colorBy) {
71
+ self.colorBy = (0, _mobxStateTree.cast)(colorBy);
72
+ },
73
+ updateModificationColorMap: function updateModificationColorMap(uniqueModifications) {
74
+ var colorPalette = ['red', 'blue', 'green', 'orange', 'purple'];
75
+ var i = 0;
76
+ uniqueModifications.forEach(function (value) {
77
+ if (!self.modificationTagMap.has(value)) {
78
+ var newColor = colorPalette[i++];
79
+ self.modificationTagMap.set(value, newColor);
80
+ }
81
+ });
82
+ }
83
+ };
84
+ }).views(function (self) {
85
+ var superRenderProps = self.renderProps;
86
+ return {
87
+ get rendererConfig() {
88
+ var configBlob = (0, _configuration.getConf)(self, ['renderers', self.rendererTypeName]) || {};
89
+ return self.rendererType.configSchema.create(_objectSpread(_objectSpread({}, configBlob), {}, {
90
+ drawInterbaseCounts: self.drawInterbaseCounts === undefined ? configBlob.drawInterbaseCounts : self.drawInterbaseCounts,
91
+ drawIndicators: self.drawIndicators === undefined ? configBlob.drawIndicators : self.drawIndicators,
92
+ drawArcs: self.drawArcs === undefined ? configBlob.drawArcs : self.drawArcs
93
+ }), (0, _mobxStateTree.getEnv)(self));
94
+ },
95
+
96
+ get drawArcsSetting() {
97
+ return self.drawArcs !== undefined ? self.drawArcs : (0, _configuration.readConfObject)(this.rendererConfig, 'drawArcs');
98
+ },
99
+
100
+ get drawInterbaseCountsSetting() {
101
+ return self.drawInterbaseCounts !== undefined ? self.drawInterbaseCounts : (0, _configuration.readConfObject)(this.rendererConfig, 'drawInterbaseCounts');
102
+ },
103
+
104
+ get drawIndicatorsSetting() {
105
+ return self.drawIndicators !== undefined ? self.drawIndicators : (0, _configuration.readConfObject)(this.rendererConfig, 'drawIndicators');
106
+ },
107
+
108
+ get modificationsReady() {
109
+ var _self$colorBy;
110
+
111
+ return ((_self$colorBy = self.colorBy) === null || _self$colorBy === void 0 ? void 0 : _self$colorBy.type) === 'modifications' ? Object.keys(JSON.parse(JSON.stringify(self.modificationTagMap))).length > 0 : true;
112
+ },
113
+
114
+ renderProps: function renderProps() {
115
+ var superProps = superRenderProps();
116
+ return _objectSpread(_objectSpread({}, superProps), {}, {
117
+ notReady: superProps.notReady || !this.modificationsReady,
118
+ modificationTagMap: JSON.parse(JSON.stringify(self.modificationTagMap)),
119
+ // must use getSnapshot because otherwise changes to e.g. just the
120
+ // colorBy.type are not read
121
+ colorBy: self.colorBy ? (0, _mobxStateTree.getSnapshot)(self.colorBy) : undefined,
122
+ filterBy: self.filterBy
123
+ });
124
+ }
125
+ };
126
+ }).actions(function (self) {
127
+ return {
128
+ toggleDrawIndicators: function toggleDrawIndicators() {
129
+ self.drawIndicators = !self.drawIndicatorsSetting;
130
+ },
131
+ toggleDrawInterbaseCounts: function toggleDrawInterbaseCounts() {
132
+ self.drawInterbaseCounts = !self.drawInterbaseCountsSetting;
133
+ },
134
+ toggleDrawArcs: function toggleDrawArcs() {
135
+ self.drawArcs = !self.drawArcsSetting;
136
+ },
137
+ afterAttach: function afterAttach() {
138
+ (0, _mobxStateTree.addDisposer)(self, (0, _mobx.autorun)( /*#__PURE__*/(0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee() {
139
+ var colorBy, _ref2, staticBlocks, vals;
140
+
141
+ return _regenerator["default"].wrap(function _callee$(_context) {
142
+ while (1) {
143
+ switch (_context.prev = _context.next) {
144
+ case 0:
145
+ _context.prev = 0;
146
+ colorBy = self.colorBy;
147
+ _ref2 = (0, _util.getContainingView)(self), staticBlocks = _ref2.staticBlocks;
148
+
149
+ if (!((colorBy === null || colorBy === void 0 ? void 0 : colorBy.type) === 'modifications')) {
150
+ _context.next = 8;
151
+ break;
152
+ }
153
+
154
+ _context.next = 6;
155
+ return (0, _shared.getUniqueModificationValues)(self, (0, _configuration.getConf)(self.parentTrack, 'adapter'), colorBy, staticBlocks);
156
+
157
+ case 6:
158
+ vals = _context.sent;
159
+ self.updateModificationColorMap(vals);
160
+
161
+ case 8:
162
+ _context.next = 14;
163
+ break;
164
+
165
+ case 10:
166
+ _context.prev = 10;
167
+ _context.t0 = _context["catch"](0);
168
+ console.error(_context.t0);
169
+ self.setError(_context.t0);
170
+
171
+ case 14:
172
+ case "end":
173
+ return _context.stop();
174
+ }
175
+ }
176
+ }, _callee, null, [[0, 10]]);
177
+ })), {
178
+ delay: 1000
179
+ }));
180
+ }
181
+ };
182
+ }).views(function (self) {
183
+ var superTrackMenuItems = self.trackMenuItems;
184
+ return {
185
+ get TooltipComponent() {
186
+ return _Tooltip["default"];
187
+ },
188
+
189
+ get adapterConfig() {
190
+ var subadapter = (0, _configuration.getConf)(self.parentTrack, 'adapter');
191
+ return {
192
+ type: 'SNPCoverageAdapter',
193
+ subadapter: subadapter
194
+ };
195
+ },
196
+
197
+ get rendererTypeName() {
198
+ return rendererTypes.get('snpcoverage');
199
+ },
200
+
201
+ get needsScalebar() {
202
+ return true;
203
+ },
204
+
205
+ contextMenuItems: function contextMenuItems() {
206
+ return [];
207
+ },
208
+ trackMenuItems: function trackMenuItems() {
209
+ return [].concat((0, _toConsumableArray2["default"])(superTrackMenuItems()), [{
210
+ label: 'Draw insertion/clipping indicators',
211
+ type: 'checkbox',
212
+ checked: self.drawIndicatorsSetting,
213
+ onClick: function onClick() {
214
+ self.toggleDrawIndicators();
215
+ }
216
+ }, {
217
+ label: 'Draw insertion/clipping counts',
218
+ type: 'checkbox',
219
+ checked: self.drawInterbaseCountsSetting,
220
+ onClick: function onClick() {
221
+ self.toggleDrawInterbaseCounts();
222
+ }
223
+ }, {
224
+ label: 'Draw arcs',
225
+ type: 'checkbox',
226
+ checked: self.drawArcsSetting,
227
+ onClick: function onClick() {
228
+ self.toggleDrawArcs();
229
+ }
230
+ }]);
231
+ }
232
+ };
233
+ });
234
+ };
235
+
236
+ var _default = stateModelFactory;
237
+ exports["default"] = _default;
@@ -1,14 +1,14 @@
1
- export default class NestedFrequencyTable {
2
- categories: {
3
- [key: string]: any;
4
- };
5
- constructor(initialData?: {});
6
- total(): number;
7
- decrement(slotName: string, amount: number): any;
8
- increment(slotName: string, amount: number): any;
9
- get(slotName: string): any;
10
- getNested(path: string | string[]): any;
11
- toString(): string;
12
- valueOf(): number;
13
- forEach(func: Function, ctx: any): void;
14
- }
1
+ export default class NestedFrequencyTable {
2
+ categories: {
3
+ [key: string]: any;
4
+ };
5
+ constructor(initialData?: {});
6
+ total(): number;
7
+ decrement(slotName: string, amount: number): any;
8
+ increment(slotName: string, amount: number): any;
9
+ get(slotName: string): any;
10
+ getNested(path: string | string[]): any;
11
+ toString(): string;
12
+ valueOf(): number;
13
+ forEach(func: Function, ctx: any): void;
14
+ }
@@ -0,0 +1,152 @@
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 _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
11
+
12
+ var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
13
+
14
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
15
+
16
+ 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; }
17
+
18
+ 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; }
19
+
20
+ /* eslint-disable @typescript-eslint/no-explicit-any */
21
+ // see perf results on object.keys vs for-in loop
22
+ // https://jsperf.com/object-keys-vs-hasownproperty/55
23
+ var NestedFrequencyTable = /*#__PURE__*/function () {
24
+ function NestedFrequencyTable() {
25
+ var initialData = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
26
+ (0, _classCallCheck2["default"])(this, NestedFrequencyTable);
27
+ (0, _defineProperty2["default"])(this, "categories", void 0);
28
+ this.categories = _objectSpread({}, initialData);
29
+ } // get the sum of all the category counts
30
+
31
+
32
+ (0, _createClass2["default"])(NestedFrequencyTable, [{
33
+ key: "total",
34
+ value: function total() {
35
+ // calculate total if necessary
36
+ var t = 0;
37
+
38
+ for (var k in this.categories) {
39
+ var v = this.categories[k];
40
+ t += v.total ? v.total() : v;
41
+ }
42
+
43
+ return t;
44
+ } // decrement the count for the given category
45
+
46
+ }, {
47
+ key: "decrement",
48
+ value: function decrement(slotName, amount) {
49
+ if (!amount) {
50
+ amount = 1;
51
+ }
52
+
53
+ if (!slotName) {
54
+ slotName = 'default';
55
+ } else {
56
+ slotName = slotName.toString();
57
+ }
58
+
59
+ if (this.categories[slotName]) {
60
+ this.categories[slotName] = Math.max(0, this.categories[slotName] - amount);
61
+ return this.categories[slotName];
62
+ }
63
+
64
+ return 0;
65
+ } // increment the count for the given category
66
+
67
+ }, {
68
+ key: "increment",
69
+ value: function increment(slotName, amount) {
70
+ if (!amount) {
71
+ amount = 1;
72
+ }
73
+
74
+ if (!slotName) {
75
+ slotName = 'default';
76
+ } else {
77
+ slotName = slotName.toString();
78
+ }
79
+
80
+ this.categories[slotName] = (this.categories[slotName] || 0) + amount;
81
+ return this.categories[slotName];
82
+ } // get the value of the given category. may be a number or a
83
+ // frequency table.
84
+
85
+ }, {
86
+ key: "get",
87
+ value: function get(slotName) {
88
+ return this.categories[slotName] || 0;
89
+ } // get a given category as a frequency table
90
+
91
+ }, {
92
+ key: "getNested",
93
+ value: function getNested(path) {
94
+ if (typeof path === 'string') {
95
+ path = path.split('/');
96
+ }
97
+
98
+ if (!path.length) {
99
+ return this;
100
+ }
101
+
102
+ var slotName = path[0].toString();
103
+ var slot = this.categories[slotName];
104
+
105
+ if (!slot || !slot.categories) {
106
+ this.categories[slotName] = new NestedFrequencyTable(slot ? {
107
+ "default": slot + 0
108
+ } : {});
109
+ }
110
+
111
+ slot = this.categories[slotName];
112
+
113
+ if (path.length > 1) {
114
+ return slot.getNested(path.slice(1));
115
+ }
116
+
117
+ return slot;
118
+ }
119
+ }, {
120
+ key: "toString",
121
+ value: function toString() {
122
+ return this.total().toPrecision(6).toString().replace(/\.?0+$/, '');
123
+ }
124
+ }, {
125
+ key: "valueOf",
126
+ value: function valueOf() {
127
+ return this.total();
128
+ } // iterate through the categories and counts, call like:
129
+ //
130
+ // tbl.forEach( function( count, categoryName ) {
131
+ // // do something
132
+ // }, this );
133
+ //
134
+
135
+ }, {
136
+ key: "forEach",
137
+ value: function forEach(func, ctx) {
138
+ if (ctx) {
139
+ for (var slotName in this.categories) {
140
+ func.call(ctx, this.categories[slotName], slotName);
141
+ }
142
+ } else {
143
+ for (var _slotName in this.categories) {
144
+ func(this.categories[_slotName], _slotName);
145
+ }
146
+ }
147
+ }
148
+ }]);
149
+ return NestedFrequencyTable;
150
+ }();
151
+
152
+ exports["default"] = NestedFrequencyTable;
@@ -1,34 +1,34 @@
1
- import RpcMethodType from '@jbrowse/core/pluggableElementTypes/RpcMethodType';
2
- import { RenderArgs } from '@jbrowse/core/rpc/coreRpcMethods';
3
- import { Region } from '@jbrowse/core/util/types';
4
- import { RemoteAbortSignal } from '@jbrowse/core/rpc/remoteAbortSignals';
5
- export declare class PileupGetGlobalValueForTag extends RpcMethodType {
6
- name: string;
7
- serializeArguments(args: RenderArgs & {
8
- signal?: AbortSignal;
9
- statusCallback?: Function;
10
- }, rpcDriverClassName: string): Promise<{}>;
11
- execute(args: {
12
- adapterConfig: {};
13
- signal?: RemoteAbortSignal;
14
- headers?: Record<string, string>;
15
- regions: Region[];
16
- sessionId: string;
17
- tag: string;
18
- }, rpcDriverClassName: string): Promise<string[]>;
19
- }
20
- export declare class PileupGetVisibleModifications extends RpcMethodType {
21
- name: string;
22
- serializeArguments(args: RenderArgs & {
23
- signal?: AbortSignal;
24
- statusCallback?: Function;
25
- }, rpcDriverClassName: string): Promise<{}>;
26
- execute(args: {
27
- adapterConfig: {};
28
- signal?: RemoteAbortSignal;
29
- headers?: Record<string, string>;
30
- regions: Region[];
31
- sessionId: string;
32
- tag: string;
33
- }, rpcDriverClassName: string): Promise<string[]>;
34
- }
1
+ import RpcMethodType from '@jbrowse/core/pluggableElementTypes/RpcMethodType';
2
+ import { RenderArgs } from '@jbrowse/core/rpc/coreRpcMethods';
3
+ import { Region } from '@jbrowse/core/util/types';
4
+ import { RemoteAbortSignal } from '@jbrowse/core/rpc/remoteAbortSignals';
5
+ export declare class PileupGetGlobalValueForTag extends RpcMethodType {
6
+ name: string;
7
+ serializeArguments(args: RenderArgs & {
8
+ signal?: AbortSignal;
9
+ statusCallback?: Function;
10
+ }, rpcDriverClassName: string): Promise<{}>;
11
+ execute(args: {
12
+ adapterConfig: {};
13
+ signal?: RemoteAbortSignal;
14
+ headers?: Record<string, string>;
15
+ regions: Region[];
16
+ sessionId: string;
17
+ tag: string;
18
+ }, rpcDriverClassName: string): Promise<string[]>;
19
+ }
20
+ export declare class PileupGetVisibleModifications extends RpcMethodType {
21
+ name: string;
22
+ serializeArguments(args: RenderArgs & {
23
+ signal?: AbortSignal;
24
+ statusCallback?: Function;
25
+ }, rpcDriverClassName: string): Promise<{}>;
26
+ execute(args: {
27
+ adapterConfig: {};
28
+ signal?: RemoteAbortSignal;
29
+ headers?: Record<string, string>;
30
+ regions: Region[];
31
+ sessionId: string;
32
+ tag: string;
33
+ }, rpcDriverClassName: string): Promise<string[]>;
34
+ }