@jbrowse/plugin-wiggle 2.1.0 → 2.1.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 (141) hide show
  1. package/dist/BigWigAdapter/BigWigAdapter.js +74 -200
  2. package/dist/BigWigAdapter/BigWigAdapter.js.map +1 -1
  3. package/dist/BigWigAdapter/configSchema.js +1 -1
  4. package/dist/BigWigAdapter/configSchema.js.map +1 -1
  5. package/dist/BigWigAdapter/index.js +14 -16
  6. package/dist/BigWigAdapter/index.js.map +1 -1
  7. package/dist/CreateMultiWiggleExtension/ConfirmDialog.js +12 -29
  8. package/dist/CreateMultiWiggleExtension/ConfirmDialog.js.map +1 -1
  9. package/dist/CreateMultiWiggleExtension/index.js +23 -57
  10. package/dist/CreateMultiWiggleExtension/index.js.map +1 -1
  11. package/dist/DensityRenderer/DensityRenderer.js +6 -66
  12. package/dist/DensityRenderer/DensityRenderer.js.map +1 -1
  13. package/dist/DensityRenderer/configSchema.js +3 -3
  14. package/dist/DensityRenderer/configSchema.js.map +1 -1
  15. package/dist/DensityRenderer/index.js +11 -13
  16. package/dist/DensityRenderer/index.js.map +1 -1
  17. package/dist/LinePlotRenderer/LinePlotRenderer.js +11 -78
  18. package/dist/LinePlotRenderer/LinePlotRenderer.js.map +1 -1
  19. package/dist/LinePlotRenderer/configSchema.js +3 -3
  20. package/dist/LinePlotRenderer/configSchema.js.map +1 -1
  21. package/dist/LinePlotRenderer/index.js +11 -13
  22. package/dist/LinePlotRenderer/index.js.map +1 -1
  23. package/dist/LinearWiggleDisplay/components/SetColorDialog.js +18 -35
  24. package/dist/LinearWiggleDisplay/components/SetColorDialog.js.map +1 -1
  25. package/dist/LinearWiggleDisplay/components/SetMinMaxDialog.js +16 -32
  26. package/dist/LinearWiggleDisplay/components/SetMinMaxDialog.js.map +1 -1
  27. package/dist/LinearWiggleDisplay/components/Tooltip.js +15 -26
  28. package/dist/LinearWiggleDisplay/components/Tooltip.js.map +1 -1
  29. package/dist/LinearWiggleDisplay/components/WiggleDisplayComponent.js +15 -26
  30. package/dist/LinearWiggleDisplay/components/WiggleDisplayComponent.js.map +1 -1
  31. package/dist/LinearWiggleDisplay/components/YScaleBar.js +6 -18
  32. package/dist/LinearWiggleDisplay/components/YScaleBar.js.map +1 -1
  33. package/dist/LinearWiggleDisplay/index.js +12 -12
  34. package/dist/LinearWiggleDisplay/index.js.map +1 -1
  35. package/dist/LinearWiggleDisplay/models/configSchema.js +6 -6
  36. package/dist/LinearWiggleDisplay/models/configSchema.js.map +1 -1
  37. package/dist/LinearWiggleDisplay/models/model.js +378 -451
  38. package/dist/LinearWiggleDisplay/models/model.js.map +1 -1
  39. package/dist/MultiDensityRenderer/MultiDensityRenderer.js +32 -125
  40. package/dist/MultiDensityRenderer/MultiDensityRenderer.js.map +1 -1
  41. package/dist/MultiDensityRenderer/configSchema.js +3 -3
  42. package/dist/MultiDensityRenderer/configSchema.js.map +1 -1
  43. package/dist/MultiDensityRenderer/index.js +11 -13
  44. package/dist/MultiDensityRenderer/index.js.map +1 -1
  45. package/dist/MultiLineRenderer/MultiLineRenderer.js +21 -114
  46. package/dist/MultiLineRenderer/MultiLineRenderer.js.map +1 -1
  47. package/dist/MultiLineRenderer/configSchema.js +4 -4
  48. package/dist/MultiLineRenderer/configSchema.js.map +1 -1
  49. package/dist/MultiLineRenderer/index.js +11 -13
  50. package/dist/MultiLineRenderer/index.js.map +1 -1
  51. package/dist/MultiLinearWiggleDisplay/components/SetColorDialog.js +72 -120
  52. package/dist/MultiLinearWiggleDisplay/components/SetColorDialog.js.map +1 -1
  53. package/dist/MultiLinearWiggleDisplay/components/SetMinMaxDialog.js +16 -32
  54. package/dist/MultiLinearWiggleDisplay/components/SetMinMaxDialog.js.map +1 -1
  55. package/dist/MultiLinearWiggleDisplay/components/Tooltip.js +21 -50
  56. package/dist/MultiLinearWiggleDisplay/components/Tooltip.js.map +1 -1
  57. package/dist/MultiLinearWiggleDisplay/components/WiggleDisplayComponent.d.ts +2 -2
  58. package/dist/MultiLinearWiggleDisplay/components/WiggleDisplayComponent.js +53 -92
  59. package/dist/MultiLinearWiggleDisplay/components/WiggleDisplayComponent.js.map +1 -1
  60. package/dist/MultiLinearWiggleDisplay/components/YScaleBar.js +6 -18
  61. package/dist/MultiLinearWiggleDisplay/components/YScaleBar.js.map +1 -1
  62. package/dist/MultiLinearWiggleDisplay/components/util.js +16 -18
  63. package/dist/MultiLinearWiggleDisplay/components/util.js.map +1 -1
  64. package/dist/MultiLinearWiggleDisplay/index.js +9 -9
  65. package/dist/MultiLinearWiggleDisplay/index.js.map +1 -1
  66. package/dist/MultiLinearWiggleDisplay/models/configSchema.js +8 -8
  67. package/dist/MultiLinearWiggleDisplay/models/configSchema.js.map +1 -1
  68. package/dist/MultiLinearWiggleDisplay/models/model.js +489 -566
  69. package/dist/MultiLinearWiggleDisplay/models/model.js.map +1 -1
  70. package/dist/MultiQuantitativeTrack/index.js +8 -8
  71. package/dist/MultiQuantitativeTrack/index.js.map +1 -1
  72. package/dist/MultiRowLineRenderer/MultiRowLineRenderer.js +29 -121
  73. package/dist/MultiRowLineRenderer/MultiRowLineRenderer.js.map +1 -1
  74. package/dist/MultiRowLineRenderer/configSchema.js +4 -4
  75. package/dist/MultiRowLineRenderer/configSchema.js.map +1 -1
  76. package/dist/MultiRowLineRenderer/index.js +11 -13
  77. package/dist/MultiRowLineRenderer/index.js.map +1 -1
  78. package/dist/MultiRowXYPlotRenderer/MultiRowXYPlotRenderer.js +35 -131
  79. package/dist/MultiRowXYPlotRenderer/MultiRowXYPlotRenderer.js.map +1 -1
  80. package/dist/MultiRowXYPlotRenderer/configSchema.js +4 -4
  81. package/dist/MultiRowXYPlotRenderer/configSchema.js.map +1 -1
  82. package/dist/MultiRowXYPlotRenderer/index.js +11 -13
  83. package/dist/MultiRowXYPlotRenderer/index.js.map +1 -1
  84. package/dist/MultiWiggleAdapter/MultiWiggleAdapter.d.ts +1 -0
  85. package/dist/MultiWiggleAdapter/MultiWiggleAdapter.js +80 -232
  86. package/dist/MultiWiggleAdapter/MultiWiggleAdapter.js.map +1 -1
  87. package/dist/MultiWiggleAdapter/configSchema.js +1 -1
  88. package/dist/MultiWiggleAdapter/configSchema.js.map +1 -1
  89. package/dist/MultiWiggleAdapter/index.js +14 -18
  90. package/dist/MultiWiggleAdapter/index.js.map +1 -1
  91. package/dist/MultiWiggleAddTrackWidget/AddTrackWorkflow.js +30 -56
  92. package/dist/MultiWiggleAddTrackWidget/AddTrackWorkflow.js.map +1 -1
  93. package/dist/MultiWiggleAddTrackWidget/index.js +10 -12
  94. package/dist/MultiWiggleAddTrackWidget/index.js.map +1 -1
  95. package/dist/MultiWiggleRendering.js +45 -109
  96. package/dist/MultiWiggleRendering.js.map +1 -1
  97. package/dist/MultiXYPlotRenderer/MultiXYPlotRenderer.js +24 -120
  98. package/dist/MultiXYPlotRenderer/MultiXYPlotRenderer.js.map +1 -1
  99. package/dist/MultiXYPlotRenderer/configSchema.js +4 -4
  100. package/dist/MultiXYPlotRenderer/configSchema.js.map +1 -1
  101. package/dist/MultiXYPlotRenderer/index.js +11 -13
  102. package/dist/MultiXYPlotRenderer/index.js.map +1 -1
  103. package/dist/QuantitativeTrack/index.js +8 -8
  104. package/dist/QuantitativeTrack/index.js.map +1 -1
  105. package/dist/Tooltip.js +26 -54
  106. package/dist/Tooltip.js.map +1 -1
  107. package/dist/WiggleBaseRenderer.d.ts +6 -6
  108. package/dist/WiggleBaseRenderer.js +34 -125
  109. package/dist/WiggleBaseRenderer.js.map +1 -1
  110. package/dist/WiggleRPC/rpcMethods.d.ts +2 -2
  111. package/dist/WiggleRPC/rpcMethods.js +101 -244
  112. package/dist/WiggleRPC/rpcMethods.js.map +1 -1
  113. package/dist/WiggleRendering.js +20 -69
  114. package/dist/WiggleRendering.js.map +1 -1
  115. package/dist/XYPlotRenderer/XYPlotRenderer.js +24 -121
  116. package/dist/XYPlotRenderer/XYPlotRenderer.js.map +1 -1
  117. package/dist/XYPlotRenderer/configSchema.js +4 -4
  118. package/dist/XYPlotRenderer/configSchema.js.map +1 -1
  119. package/dist/XYPlotRenderer/index.js +11 -13
  120. package/dist/XYPlotRenderer/index.js.map +1 -1
  121. package/dist/configSchema.js +2 -2
  122. package/dist/configSchema.js.map +1 -1
  123. package/dist/drawxy.js +192 -311
  124. package/dist/drawxy.js.map +1 -1
  125. package/dist/index.js +44 -62
  126. package/dist/index.js.map +1 -1
  127. package/dist/util.js +105 -168
  128. package/dist/util.js.map +1 -1
  129. package/esm/MultiWiggleAdapter/MultiWiggleAdapter.d.ts +1 -0
  130. package/esm/MultiWiggleAdapter/MultiWiggleAdapter.js +5 -3
  131. package/esm/MultiWiggleAdapter/MultiWiggleAdapter.js.map +1 -1
  132. package/esm/WiggleBaseRenderer.d.ts +6 -6
  133. package/esm/WiggleBaseRenderer.js +4 -3
  134. package/esm/WiggleBaseRenderer.js.map +1 -1
  135. package/esm/WiggleRPC/rpcMethods.d.ts +2 -2
  136. package/esm/WiggleRPC/rpcMethods.js.map +1 -1
  137. package/package.json +2 -3
  138. package/src/MultiWiggleAdapter/MultiWiggleAdapter.ts +7 -3
  139. package/src/WiggleBaseRenderer.tsx +4 -3
  140. package/src/WiggleRPC/rpcMethods.ts +8 -2
  141. package/src/declare.d.ts +0 -2
@@ -1,15 +1,4 @@
1
1
  "use strict";
2
- var __assign = (this && this.__assign) || function () {
3
- __assign = Object.assign || function(t) {
4
- for (var s, i = 1, n = arguments.length; i < n; i++) {
5
- s = arguments[i];
6
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
7
- t[p] = s[p];
8
- }
9
- return t;
10
- };
11
- return __assign.apply(this, arguments);
12
- };
13
2
  var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
14
3
  if (k2 === undefined) k2 = k;
15
4
  var desc = Object.getOwnPropertyDescriptor(m, k);
@@ -33,518 +22,456 @@ var __importStar = (this && this.__importStar) || function (mod) {
33
22
  __setModuleDefault(result, mod);
34
23
  return result;
35
24
  };
36
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
37
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
38
- return new (P || (P = Promise))(function (resolve, reject) {
39
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
40
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
41
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
42
- step((generator = generator.apply(thisArg, _arguments || [])).next());
43
- });
44
- };
45
- var __generator = (this && this.__generator) || function (thisArg, body) {
46
- var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
47
- return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
48
- function verb(n) { return function (v) { return step([n, v]); }; }
49
- function step(op) {
50
- if (f) throw new TypeError("Generator is already executing.");
51
- while (_) try {
52
- if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
53
- if (y = 0, t) op = [op[0] & 2, t.value];
54
- switch (op[0]) {
55
- case 0: case 1: t = op; break;
56
- case 4: _.label++; return { value: op[1], done: false };
57
- case 5: _.label++; y = op[1]; op = [0]; continue;
58
- case 7: op = _.ops.pop(); _.trys.pop(); continue;
59
- default:
60
- if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
61
- if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
62
- if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
63
- if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
64
- if (t[2]) _.ops.pop();
65
- _.trys.pop(); continue;
66
- }
67
- op = body.call(thisArg, _);
68
- } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
69
- if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
70
- }
71
- };
72
- var __read = (this && this.__read) || function (o, n) {
73
- var m = typeof Symbol === "function" && o[Symbol.iterator];
74
- if (!m) return o;
75
- var i = m.call(o), r, ar = [], e;
76
- try {
77
- while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
78
- }
79
- catch (error) { e = { error: error }; }
80
- finally {
81
- try {
82
- if (r && !r.done && (m = i["return"])) m.call(i);
83
- }
84
- finally { if (e) throw e.error; }
85
- }
86
- return ar;
87
- };
88
- var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
89
- if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
90
- if (ar || !(i in from)) {
91
- if (!ar) ar = Array.prototype.slice.call(from, 0, i);
92
- ar[i] = from[i];
93
- }
94
- }
95
- return to.concat(ar || Array.prototype.slice.call(from));
96
- };
97
25
  var __importDefault = (this && this.__importDefault) || function (mod) {
98
26
  return (mod && mod.__esModule) ? mod : { "default": mod };
99
27
  };
100
28
  Object.defineProperty(exports, "__esModule", { value: true });
101
- var react_1 = __importStar(require("react"));
102
- var configuration_1 = require("@jbrowse/core/configuration");
103
- var util_1 = require("@jbrowse/core/util");
104
- var plugin_linear_genome_view_1 = require("@jbrowse/plugin-linear-genome-view");
105
- var mobx_1 = require("mobx");
106
- var mobx_state_tree_1 = require("mobx-state-tree");
107
- var react_d3_axis_mod_1 = require("react-d3-axis-mod");
108
- var util_2 = require("../../util");
109
- var Tooltip_1 = __importDefault(require("../components/Tooltip"));
110
- var WiggleDisplayComponent_1 = require("../components/WiggleDisplayComponent");
111
- var SetMinMaxDlg = (0, react_1.lazy)(function () { return Promise.resolve().then(function () { return __importStar(require('../components/SetMinMaxDialog')); }); });
112
- var SetColorDlg = (0, react_1.lazy)(function () { return Promise.resolve().then(function () { return __importStar(require('../components/SetColorDialog')); }); });
29
+ const react_1 = __importStar(require("react"));
30
+ const configuration_1 = require("@jbrowse/core/configuration");
31
+ const util_1 = require("@jbrowse/core/util");
32
+ const plugin_linear_genome_view_1 = require("@jbrowse/plugin-linear-genome-view");
33
+ const mobx_1 = require("mobx");
34
+ const mobx_state_tree_1 = require("mobx-state-tree");
35
+ const react_d3_axis_mod_1 = require("react-d3-axis-mod");
36
+ const util_2 = require("../../util");
37
+ const Tooltip_1 = __importDefault(require("../components/Tooltip"));
38
+ const WiggleDisplayComponent_1 = require("../components/WiggleDisplayComponent");
39
+ const SetMinMaxDlg = (0, react_1.lazy)(() => Promise.resolve().then(() => __importStar(require('../components/SetMinMaxDialog'))));
40
+ const SetColorDlg = (0, react_1.lazy)(() => Promise.resolve().then(() => __importStar(require('../components/SetColorDialog'))));
113
41
  // using a map because it preserves order
114
- var rendererTypes = new Map([
42
+ const rendererTypes = new Map([
115
43
  ['xyplot', 'XYPlotRenderer'],
116
44
  ['density', 'DensityRenderer'],
117
45
  ['line', 'LinePlotRenderer'],
118
46
  ]);
119
- var stateModelFactory = function (pluginManager, configSchema) {
120
- return mobx_state_tree_1.types
121
- .compose('LinearWiggleDisplay', plugin_linear_genome_view_1.BaseLinearDisplay, mobx_state_tree_1.types.model({
122
- type: mobx_state_tree_1.types.literal('LinearWiggleDisplay'),
123
- configuration: (0, configuration_1.ConfigurationReference)(configSchema),
124
- selectedRendering: mobx_state_tree_1.types.optional(mobx_state_tree_1.types.string, ''),
125
- resolution: mobx_state_tree_1.types.optional(mobx_state_tree_1.types.number, 1),
126
- fill: mobx_state_tree_1.types.maybe(mobx_state_tree_1.types.boolean),
127
- minSize: mobx_state_tree_1.types.maybe(mobx_state_tree_1.types.number),
128
- color: mobx_state_tree_1.types.maybe(mobx_state_tree_1.types.string),
129
- posColor: mobx_state_tree_1.types.maybe(mobx_state_tree_1.types.string),
130
- negColor: mobx_state_tree_1.types.maybe(mobx_state_tree_1.types.string),
131
- summaryScoreMode: mobx_state_tree_1.types.maybe(mobx_state_tree_1.types.string),
132
- rendererTypeNameState: mobx_state_tree_1.types.maybe(mobx_state_tree_1.types.string),
133
- scale: mobx_state_tree_1.types.maybe(mobx_state_tree_1.types.string),
134
- autoscale: mobx_state_tree_1.types.maybe(mobx_state_tree_1.types.string),
135
- displayCrossHatches: mobx_state_tree_1.types.maybe(mobx_state_tree_1.types.boolean),
136
- constraints: mobx_state_tree_1.types.optional(mobx_state_tree_1.types.model({
137
- max: mobx_state_tree_1.types.maybe(mobx_state_tree_1.types.number),
138
- min: mobx_state_tree_1.types.maybe(mobx_state_tree_1.types.number),
139
- }), {}),
140
- }))
141
- .volatile(function () { return ({
142
- statsReady: false,
143
- message: undefined,
144
- stats: { scoreMin: 0, scoreMax: 50 },
145
- statsFetchInProgress: undefined,
146
- }); })
147
- .actions(function (self) { return ({
148
- updateStats: function (stats) {
149
- var scoreMin = stats.scoreMin, scoreMax = stats.scoreMax;
150
- var EPSILON = 0.000001;
151
- if (Math.abs(self.stats.scoreMax - scoreMax) > EPSILON ||
152
- Math.abs(self.stats.scoreMin - scoreMin) > EPSILON) {
153
- self.stats = { scoreMin: scoreMin, scoreMax: scoreMax };
154
- self.statsReady = true;
155
- }
156
- },
157
- setColor: function (color) {
158
- self.color = color;
159
- },
160
- setPosColor: function (color) {
161
- self.posColor = color;
162
- },
163
- setNegColor: function (color) {
164
- self.negColor = color;
165
- },
166
- setLoading: function (aborter) {
167
- var statsFetch = self.statsFetchInProgress;
168
- if (statsFetch !== undefined && !statsFetch.signal.aborted) {
169
- statsFetch.abort();
170
- }
171
- self.statsFetchInProgress = aborter;
172
- },
173
- // this overrides the BaseLinearDisplayModel to avoid popping up a
174
- // feature detail display, but still sets the feature selection on the
175
- // model so listeners can detect a click
176
- selectFeature: function (feature) {
177
- var session = (0, util_1.getSession)(self);
178
- if ((0, util_1.isSelectionContainer)(session)) {
179
- session.setSelection(feature);
180
- }
181
- },
182
- setResolution: function (res) {
183
- self.resolution = res;
47
+ const stateModelFactory = (pluginManager, configSchema) => mobx_state_tree_1.types
48
+ .compose('LinearWiggleDisplay', plugin_linear_genome_view_1.BaseLinearDisplay, mobx_state_tree_1.types.model({
49
+ type: mobx_state_tree_1.types.literal('LinearWiggleDisplay'),
50
+ configuration: (0, configuration_1.ConfigurationReference)(configSchema),
51
+ selectedRendering: mobx_state_tree_1.types.optional(mobx_state_tree_1.types.string, ''),
52
+ resolution: mobx_state_tree_1.types.optional(mobx_state_tree_1.types.number, 1),
53
+ fill: mobx_state_tree_1.types.maybe(mobx_state_tree_1.types.boolean),
54
+ minSize: mobx_state_tree_1.types.maybe(mobx_state_tree_1.types.number),
55
+ color: mobx_state_tree_1.types.maybe(mobx_state_tree_1.types.string),
56
+ posColor: mobx_state_tree_1.types.maybe(mobx_state_tree_1.types.string),
57
+ negColor: mobx_state_tree_1.types.maybe(mobx_state_tree_1.types.string),
58
+ summaryScoreMode: mobx_state_tree_1.types.maybe(mobx_state_tree_1.types.string),
59
+ rendererTypeNameState: mobx_state_tree_1.types.maybe(mobx_state_tree_1.types.string),
60
+ scale: mobx_state_tree_1.types.maybe(mobx_state_tree_1.types.string),
61
+ autoscale: mobx_state_tree_1.types.maybe(mobx_state_tree_1.types.string),
62
+ displayCrossHatches: mobx_state_tree_1.types.maybe(mobx_state_tree_1.types.boolean),
63
+ constraints: mobx_state_tree_1.types.optional(mobx_state_tree_1.types.model({
64
+ max: mobx_state_tree_1.types.maybe(mobx_state_tree_1.types.number),
65
+ min: mobx_state_tree_1.types.maybe(mobx_state_tree_1.types.number),
66
+ }), {}),
67
+ }))
68
+ .volatile(() => ({
69
+ statsReady: false,
70
+ message: undefined,
71
+ stats: { scoreMin: 0, scoreMax: 50 },
72
+ statsFetchInProgress: undefined,
73
+ }))
74
+ .actions(self => ({
75
+ updateStats(stats) {
76
+ const { scoreMin, scoreMax } = stats;
77
+ const EPSILON = 0.000001;
78
+ if (Math.abs(self.stats.scoreMax - scoreMax) > EPSILON ||
79
+ Math.abs(self.stats.scoreMin - scoreMin) > EPSILON) {
80
+ self.stats = { scoreMin, scoreMax };
81
+ self.statsReady = true;
82
+ }
83
+ },
84
+ setColor(color) {
85
+ self.color = color;
86
+ },
87
+ setPosColor(color) {
88
+ self.posColor = color;
89
+ },
90
+ setNegColor(color) {
91
+ self.negColor = color;
92
+ },
93
+ setLoading(aborter) {
94
+ const { statsFetchInProgress: statsFetch } = self;
95
+ if (statsFetch !== undefined && !statsFetch.signal.aborted) {
96
+ statsFetch.abort();
97
+ }
98
+ self.statsFetchInProgress = aborter;
99
+ },
100
+ // this overrides the BaseLinearDisplayModel to avoid popping up a
101
+ // feature detail display, but still sets the feature selection on the
102
+ // model so listeners can detect a click
103
+ selectFeature(feature) {
104
+ const session = (0, util_1.getSession)(self);
105
+ if ((0, util_1.isSelectionContainer)(session)) {
106
+ session.setSelection(feature);
107
+ }
108
+ },
109
+ setResolution(res) {
110
+ self.resolution = res;
111
+ },
112
+ setFill(fill) {
113
+ if (fill === 0) {
114
+ self.fill = true;
115
+ self.minSize = 0;
116
+ }
117
+ else if (fill === 1) {
118
+ self.fill = false;
119
+ self.minSize = 1;
120
+ }
121
+ else if (fill === 2) {
122
+ self.fill = false;
123
+ self.minSize = 2;
124
+ }
125
+ },
126
+ toggleLogScale() {
127
+ if (self.scale !== 'log') {
128
+ self.scale = 'log';
129
+ }
130
+ else {
131
+ self.scale = 'linear';
132
+ }
133
+ },
134
+ setScaleType(scale) {
135
+ self.scale = scale;
136
+ },
137
+ setSummaryScoreMode(val) {
138
+ self.summaryScoreMode = val;
139
+ },
140
+ setAutoscale(val) {
141
+ self.autoscale = val;
142
+ },
143
+ setMaxScore(val) {
144
+ self.constraints.max = val;
145
+ },
146
+ setRendererType(val) {
147
+ self.rendererTypeNameState = val;
148
+ },
149
+ setMinScore(val) {
150
+ self.constraints.min = val;
151
+ },
152
+ toggleCrossHatches() {
153
+ self.displayCrossHatches = !self.displayCrossHatches;
154
+ },
155
+ setCrossHatches(cross) {
156
+ self.displayCrossHatches = cross;
157
+ },
158
+ }))
159
+ .views(self => ({
160
+ get TooltipComponent() {
161
+ return Tooltip_1.default;
162
+ },
163
+ get adapterTypeName() {
164
+ return self.adapterConfig.type;
165
+ },
166
+ get rendererTypeNameSimple() {
167
+ return self.rendererTypeNameState || (0, configuration_1.getConf)(self, 'defaultRendering');
168
+ },
169
+ get rendererTypeName() {
170
+ const name = this.rendererTypeNameSimple;
171
+ const rendererType = rendererTypes.get(name);
172
+ if (!rendererType) {
173
+ throw new Error(`unknown renderer ${name}`);
174
+ }
175
+ return rendererType;
176
+ },
177
+ // subclasses can define these, as snpcoverage track does
178
+ get filters() {
179
+ return undefined;
180
+ },
181
+ get scaleType() {
182
+ return self.scale || (0, configuration_1.getConf)(self, 'scaleType');
183
+ },
184
+ get maxScore() {
185
+ var _a;
186
+ return (_a = self.constraints.max) !== null && _a !== void 0 ? _a : (0, configuration_1.getConf)(self, 'maxScore');
187
+ },
188
+ get minScore() {
189
+ var _a;
190
+ return (_a = self.constraints.min) !== null && _a !== void 0 ? _a : (0, configuration_1.getConf)(self, 'minScore');
191
+ },
192
+ }))
193
+ .views(self => ({
194
+ get rendererConfig() {
195
+ const configBlob = (0, configuration_1.getConf)(self, ['renderers', self.rendererTypeName]) || {};
196
+ const { color, displayCrossHatches, fill, minSize, negColor, posColor, summaryScoreMode, scaleType, } = self;
197
+ return self.rendererType.configSchema.create({
198
+ ...configBlob,
199
+ ...(scaleType ? { scaleType } : {}),
200
+ ...(fill !== undefined ? { filled: fill } : {}),
201
+ ...(displayCrossHatches !== undefined
202
+ ? { displayCrossHatches }
203
+ : {}),
204
+ ...(summaryScoreMode !== undefined ? { summaryScoreMode } : {}),
205
+ ...(color !== undefined ? { color } : {}),
206
+ ...(negColor !== undefined ? { negColor } : {}),
207
+ ...(posColor !== undefined ? { posColor } : {}),
208
+ ...(minSize !== undefined ? { minSize } : {}),
209
+ }, (0, mobx_state_tree_1.getEnv)(self));
210
+ },
211
+ }))
212
+ .views(self => {
213
+ let oldDomain = [0, 0];
214
+ return {
215
+ get filled() {
216
+ const { fill, rendererConfig: conf } = self;
217
+ return fill !== null && fill !== void 0 ? fill : (0, configuration_1.readConfObject)(conf, 'filled');
184
218
  },
185
- setFill: function (fill) {
186
- if (fill === 0) {
187
- self.fill = true;
188
- self.minSize = 0;
189
- }
190
- else if (fill === 1) {
191
- self.fill = false;
192
- self.minSize = 1;
193
- }
194
- else if (fill === 2) {
195
- self.fill = false;
196
- self.minSize = 2;
197
- }
219
+ get summaryScoreModeSetting() {
220
+ const { summaryScoreMode, rendererConfig: conf } = self;
221
+ return summaryScoreMode !== null && summaryScoreMode !== void 0 ? summaryScoreMode : (0, configuration_1.readConfObject)(conf, 'summaryScoreMode');
198
222
  },
199
- toggleLogScale: function () {
200
- if (self.scale !== 'log') {
201
- self.scale = 'log';
223
+ get domain() {
224
+ const { stats, scaleType, minScore, maxScore } = self;
225
+ const ret = (0, util_2.getNiceDomain)({
226
+ domain: [stats.scoreMin, stats.scoreMax],
227
+ bounds: [minScore, maxScore],
228
+ scaleType,
229
+ });
230
+ // avoid weird scalebar if log value and empty region displayed
231
+ if (scaleType === 'log' && ret[1] === Number.MIN_VALUE) {
232
+ return [0, Number.MIN_VALUE];
202
233
  }
203
- else {
204
- self.scale = 'linear';
234
+ // avoid returning a new object if it matches the old value
235
+ if (JSON.stringify(oldDomain) !== JSON.stringify(ret)) {
236
+ oldDomain = ret;
205
237
  }
238
+ return oldDomain;
206
239
  },
207
- setScaleType: function (scale) {
208
- self.scale = scale;
209
- },
210
- setSummaryScoreMode: function (val) {
211
- self.summaryScoreMode = val;
212
- },
213
- setAutoscale: function (val) {
214
- self.autoscale = val;
240
+ get needsScalebar() {
241
+ return (self.rendererTypeName === 'XYPlotRenderer' ||
242
+ self.rendererTypeName === 'LinePlotRenderer');
215
243
  },
216
- setMaxScore: function (val) {
217
- self.constraints.max = val;
244
+ get scaleOpts() {
245
+ return {
246
+ domain: this.domain,
247
+ stats: self.stats,
248
+ autoscaleType: this.autoscaleType,
249
+ scaleType: self.scaleType,
250
+ inverted: (0, configuration_1.getConf)(self, 'inverted'),
251
+ };
218
252
  },
219
- setRendererType: function (val) {
220
- self.rendererTypeNameState = val;
253
+ get canHaveFill() {
254
+ return self.rendererTypeName === 'XYPlotRenderer';
221
255
  },
222
- setMinScore: function (val) {
223
- self.constraints.min = val;
224
- },
225
- toggleCrossHatches: function () {
226
- self.displayCrossHatches = !self.displayCrossHatches;
256
+ get autoscaleType() {
257
+ var _a;
258
+ return (_a = self.autoscale) !== null && _a !== void 0 ? _a : (0, configuration_1.getConf)(self, 'autoscale');
227
259
  },
228
- setCrossHatches: function (cross) {
229
- self.displayCrossHatches = cross;
260
+ get displayCrossHatchesSetting() {
261
+ const { displayCrossHatches: hatches, rendererConfig: conf } = self;
262
+ return hatches !== null && hatches !== void 0 ? hatches : (0, configuration_1.readConfObject)(conf, 'displayCrossHatches');
230
263
  },
231
- }); })
232
- .views(function (self) { return ({
233
- get TooltipComponent() {
234
- return Tooltip_1.default;
264
+ };
265
+ })
266
+ .views(self => ({
267
+ get ticks() {
268
+ const { scaleType, domain, height } = self;
269
+ const minimalTicks = (0, configuration_1.getConf)(self, 'minimalTicks');
270
+ const inverted = (0, configuration_1.getConf)(self, 'inverted');
271
+ const range = [height - util_2.YSCALEBAR_LABEL_OFFSET, util_2.YSCALEBAR_LABEL_OFFSET];
272
+ const scale = (0, util_2.getScale)({
273
+ scaleType,
274
+ domain,
275
+ range,
276
+ inverted,
277
+ });
278
+ const ticks = (0, react_d3_axis_mod_1.axisPropsFromTickScale)(scale, 4);
279
+ return height < 100 || minimalTicks
280
+ ? { ...ticks, values: domain }
281
+ : ticks;
282
+ },
283
+ get adapterCapabilities() {
284
+ return pluginManager.getAdapterType(self.adapterTypeName)
285
+ .adapterCapabilities;
286
+ },
287
+ }))
288
+ .views(self => {
289
+ const { renderProps: superRenderProps } = self;
290
+ return {
291
+ renderProps() {
292
+ const superProps = superRenderProps();
293
+ const { filters, ticks, height, resolution, scaleOpts } = self;
294
+ return {
295
+ ...superProps,
296
+ notReady: superProps.notReady || !self.statsReady,
297
+ rpcDriverName: self.rpcDriverName,
298
+ displayModel: self,
299
+ config: self.rendererConfig,
300
+ displayCrossHatches: self.displayCrossHatchesSetting,
301
+ scaleOpts,
302
+ resolution,
303
+ height,
304
+ ticks,
305
+ filters,
306
+ };
235
307
  },
236
- get adapterTypeName() {
237
- return self.adapterConfig.type;
308
+ get hasResolution() {
309
+ return self.adapterCapabilities.includes('hasResolution');
238
310
  },
239
- get rendererTypeNameSimple() {
240
- return self.rendererTypeNameState || (0, configuration_1.getConf)(self, 'defaultRendering');
311
+ get hasGlobalStats() {
312
+ return self.adapterCapabilities.includes('hasGlobalStats');
241
313
  },
242
- get rendererTypeName() {
243
- var name = this.rendererTypeNameSimple;
244
- var rendererType = rendererTypes.get(name);
245
- if (!rendererType) {
246
- throw new Error("unknown renderer ".concat(name));
314
+ get fillSetting() {
315
+ if (self.filled) {
316
+ return 0;
317
+ }
318
+ else if (!self.filled && self.minSize === 1) {
319
+ return 1;
320
+ }
321
+ else {
322
+ return 2;
247
323
  }
248
- return rendererType;
249
- },
250
- // subclasses can define these, as snpcoverage track does
251
- get filters() {
252
- return undefined;
253
- },
254
- get scaleType() {
255
- return self.scale || (0, configuration_1.getConf)(self, 'scaleType');
256
- },
257
- get maxScore() {
258
- var _a;
259
- return (_a = self.constraints.max) !== null && _a !== void 0 ? _a : (0, configuration_1.getConf)(self, 'maxScore');
260
- },
261
- get minScore() {
262
- var _a;
263
- return (_a = self.constraints.min) !== null && _a !== void 0 ? _a : (0, configuration_1.getConf)(self, 'minScore');
264
- },
265
- }); })
266
- .views(function (self) { return ({
267
- get rendererConfig() {
268
- var configBlob = (0, configuration_1.getConf)(self, ['renderers', self.rendererTypeName]) || {};
269
- var color = self.color, displayCrossHatches = self.displayCrossHatches, fill = self.fill, minSize = self.minSize, negColor = self.negColor, posColor = self.posColor, summaryScoreMode = self.summaryScoreMode, scaleType = self.scaleType;
270
- return self.rendererType.configSchema.create(__assign(__assign(__assign(__assign(__assign(__assign(__assign(__assign(__assign({}, configBlob), (scaleType ? { scaleType: scaleType } : {})), (fill !== undefined ? { filled: fill } : {})), (displayCrossHatches !== undefined
271
- ? { displayCrossHatches: displayCrossHatches }
272
- : {})), (summaryScoreMode !== undefined ? { summaryScoreMode: summaryScoreMode } : {})), (color !== undefined ? { color: color } : {})), (negColor !== undefined ? { negColor: negColor } : {})), (posColor !== undefined ? { posColor: posColor } : {})), (minSize !== undefined ? { minSize: minSize } : {})), (0, mobx_state_tree_1.getEnv)(self));
273
- },
274
- }); })
275
- .views(function (self) {
276
- var oldDomain = [0, 0];
277
- return {
278
- get filled() {
279
- var fill = self.fill, conf = self.rendererConfig;
280
- return fill !== null && fill !== void 0 ? fill : (0, configuration_1.readConfObject)(conf, 'filled');
281
- },
282
- get summaryScoreModeSetting() {
283
- var summaryScoreMode = self.summaryScoreMode, conf = self.rendererConfig;
284
- return summaryScoreMode !== null && summaryScoreMode !== void 0 ? summaryScoreMode : (0, configuration_1.readConfObject)(conf, 'summaryScoreMode');
285
- },
286
- get domain() {
287
- var stats = self.stats, scaleType = self.scaleType, minScore = self.minScore, maxScore = self.maxScore;
288
- var ret = (0, util_2.getNiceDomain)({
289
- domain: [stats.scoreMin, stats.scoreMax],
290
- bounds: [minScore, maxScore],
291
- scaleType: scaleType,
292
- });
293
- // avoid weird scalebar if log value and empty region displayed
294
- if (scaleType === 'log' && ret[1] === Number.MIN_VALUE) {
295
- return [0, Number.MIN_VALUE];
296
- }
297
- // avoid returning a new object if it matches the old value
298
- if (JSON.stringify(oldDomain) !== JSON.stringify(ret)) {
299
- oldDomain = ret;
300
- }
301
- return oldDomain;
302
- },
303
- get needsScalebar() {
304
- return (self.rendererTypeName === 'XYPlotRenderer' ||
305
- self.rendererTypeName === 'LinePlotRenderer');
306
- },
307
- get scaleOpts() {
308
- return {
309
- domain: this.domain,
310
- stats: self.stats,
311
- autoscaleType: this.autoscaleType,
312
- scaleType: self.scaleType,
313
- inverted: (0, configuration_1.getConf)(self, 'inverted'),
314
- };
315
- },
316
- get canHaveFill() {
317
- return self.rendererTypeName === 'XYPlotRenderer';
318
- },
319
- get autoscaleType() {
320
- var _a;
321
- return (_a = self.autoscale) !== null && _a !== void 0 ? _a : (0, configuration_1.getConf)(self, 'autoscale');
322
- },
323
- get displayCrossHatchesSetting() {
324
- var hatches = self.displayCrossHatches, conf = self.rendererConfig;
325
- return hatches !== null && hatches !== void 0 ? hatches : (0, configuration_1.readConfObject)(conf, 'displayCrossHatches');
326
- },
327
- };
328
- })
329
- .views(function (self) { return ({
330
- get ticks() {
331
- var scaleType = self.scaleType, domain = self.domain, height = self.height;
332
- var minimalTicks = (0, configuration_1.getConf)(self, 'minimalTicks');
333
- var inverted = (0, configuration_1.getConf)(self, 'inverted');
334
- var range = [height - util_2.YSCALEBAR_LABEL_OFFSET, util_2.YSCALEBAR_LABEL_OFFSET];
335
- var scale = (0, util_2.getScale)({
336
- scaleType: scaleType,
337
- domain: domain,
338
- range: range,
339
- inverted: inverted,
340
- });
341
- var ticks = (0, react_d3_axis_mod_1.axisPropsFromTickScale)(scale, 4);
342
- return height < 100 || minimalTicks
343
- ? __assign(__assign({}, ticks), { values: domain }) : ticks;
344
- },
345
- get adapterCapabilities() {
346
- return pluginManager.getAdapterType(self.adapterTypeName)
347
- .adapterCapabilities;
348
324
  },
349
- }); })
350
- .views(function (self) {
351
- var superRenderProps = self.renderProps;
352
- return {
353
- renderProps: function () {
354
- var superProps = superRenderProps();
355
- var filters = self.filters, ticks = self.ticks, height = self.height, resolution = self.resolution, scaleOpts = self.scaleOpts;
356
- return __assign(__assign({}, superProps), { notReady: superProps.notReady || !self.statsReady, rpcDriverName: self.rpcDriverName, displayModel: self, config: self.rendererConfig, displayCrossHatches: self.displayCrossHatchesSetting, scaleOpts: scaleOpts, resolution: resolution, height: height, ticks: ticks, filters: filters });
357
- },
358
- get hasResolution() {
359
- return self.adapterCapabilities.includes('hasResolution');
360
- },
361
- get hasGlobalStats() {
362
- return self.adapterCapabilities.includes('hasGlobalStats');
363
- },
364
- get fillSetting() {
365
- if (self.filled) {
366
- return 0;
367
- }
368
- else if (!self.filled && self.minSize === 1) {
369
- return 1;
370
- }
371
- else {
372
- return 2;
373
- }
374
- },
375
- };
376
- })
377
- .views(function (self) {
378
- var superTrackMenuItems = self.trackMenuItems;
379
- var hasRenderings = (0, configuration_1.getConf)(self, 'defaultRendering');
380
- return {
381
- trackMenuItems: function () {
382
- return __spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray([], __read(superTrackMenuItems()), false), __read((self.hasResolution
325
+ };
326
+ })
327
+ .views(self => {
328
+ const { trackMenuItems: superTrackMenuItems } = self;
329
+ const hasRenderings = (0, configuration_1.getConf)(self, 'defaultRendering');
330
+ return {
331
+ trackMenuItems() {
332
+ return [
333
+ ...superTrackMenuItems(),
334
+ ...(self.hasResolution
383
335
  ? [
384
336
  {
385
337
  label: 'Resolution',
386
338
  subMenu: [
387
339
  {
388
340
  label: 'Finer resolution',
389
- onClick: function () { return self.setResolution(self.resolution * 5); },
341
+ onClick: () => self.setResolution(self.resolution * 5),
390
342
  },
391
343
  {
392
344
  label: 'Coarser resolution',
393
- onClick: function () { return self.setResolution(self.resolution / 5); },
345
+ onClick: () => self.setResolution(self.resolution / 5),
394
346
  },
395
347
  ],
396
348
  },
397
349
  {
398
350
  label: 'Summary score mode',
399
- subMenu: ['min', 'max', 'avg', 'whiskers'].map(function (elt) { return ({
351
+ subMenu: ['min', 'max', 'avg', 'whiskers'].map(elt => ({
400
352
  label: elt,
401
353
  type: 'radio',
402
354
  checked: self.summaryScoreModeSetting === elt,
403
- onClick: function () { return self.setSummaryScoreMode(elt); },
404
- }); }),
355
+ onClick: () => self.setSummaryScoreMode(elt),
356
+ })),
405
357
  },
406
358
  ]
407
- : [])), false), __read((self.canHaveFill
359
+ : []),
360
+ ...(self.canHaveFill
408
361
  ? [
409
362
  {
410
363
  label: 'Fill mode',
411
- subMenu: ['filled', 'no fill', 'no fill w/ emphasis'].map(function (elt, idx) { return ({
364
+ subMenu: ['filled', 'no fill', 'no fill w/ emphasis'].map((elt, idx) => ({
412
365
  label: elt,
413
366
  type: 'radio',
414
367
  checked: self.fillSetting === idx,
415
- onClick: function () { return self.setFill(idx); },
416
- }); }),
368
+ onClick: () => self.setFill(idx),
369
+ })),
417
370
  },
418
371
  ]
419
- : [])), false), [
420
- {
421
- label: self.scaleType === 'log' ? 'Set linear scale' : 'Set log scale',
422
- onClick: function () { return self.toggleLogScale(); },
423
- }
424
- ], false), __read((self.needsScalebar
372
+ : []),
373
+ {
374
+ label: self.scaleType === 'log' ? 'Set linear scale' : 'Set log scale',
375
+ onClick: () => self.toggleLogScale(),
376
+ },
377
+ ...(self.needsScalebar
425
378
  ? [
426
379
  {
427
380
  type: 'checkbox',
428
381
  label: 'Draw cross hatches',
429
382
  checked: self.displayCrossHatchesSetting,
430
- onClick: function () { return self.toggleCrossHatches(); },
383
+ onClick: () => self.toggleCrossHatches(),
431
384
  },
432
385
  ]
433
- : [])), false), __read((hasRenderings
386
+ : []),
387
+ ...(hasRenderings
434
388
  ? [
435
389
  {
436
390
  label: 'Renderer type',
437
- subMenu: ['xyplot', 'density', 'line'].map(function (key) { return ({
391
+ subMenu: ['xyplot', 'density', 'line'].map(key => ({
438
392
  label: key,
439
393
  type: 'radio',
440
394
  checked: self.rendererTypeNameSimple === key,
441
- onClick: function () { return self.setRendererType(key); },
442
- }); }),
395
+ onClick: () => self.setRendererType(key),
396
+ })),
443
397
  },
444
398
  ]
445
- : [])), false), [
446
- {
447
- label: 'Autoscale type',
448
- subMenu: __spreadArray(__spreadArray([
449
- ['local', 'Local']
450
- ], __read((self.hasGlobalStats
399
+ : []),
400
+ {
401
+ label: 'Autoscale type',
402
+ subMenu: [
403
+ ['local', 'Local'],
404
+ ...(self.hasGlobalStats
451
405
  ? [
452
406
  ['global', 'Global'],
453
407
  ['globalsd', 'Global ± 3σ'],
454
408
  ]
455
- : [])), false), [
456
- ['localsd', 'Local ± 3σ'],
457
- ], false).map(function (_a) {
458
- var _b = __read(_a, 2), val = _b[0], label = _b[1];
459
- return ({
460
- label: label,
461
- type: 'radio',
462
- checked: self.autoscaleType === val,
463
- onClick: function () { return self.setAutoscale(val); },
464
- });
465
- }),
466
- },
467
- {
468
- label: 'Set min/max score',
469
- onClick: function () {
470
- (0, util_1.getSession)(self).queueDialog(function (handleClose) { return [
471
- SetMinMaxDlg,
472
- { model: self, handleClose: handleClose },
473
- ]; });
474
- },
409
+ : []),
410
+ ['localsd', 'Local ± 3σ'],
411
+ ].map(([val, label]) => ({
412
+ label,
413
+ type: 'radio',
414
+ checked: self.autoscaleType === val,
415
+ onClick: () => self.setAutoscale(val),
416
+ })),
417
+ },
418
+ {
419
+ label: 'Set min/max score',
420
+ onClick: () => {
421
+ (0, util_1.getSession)(self).queueDialog(handleClose => [
422
+ SetMinMaxDlg,
423
+ { model: self, handleClose },
424
+ ]);
475
425
  },
476
- {
477
- label: 'Set color',
478
- onClick: function () {
479
- (0, util_1.getSession)(self).queueDialog(function (handleClose) { return [
480
- SetColorDlg,
481
- { model: self, handleClose: handleClose },
482
- ]; });
483
- },
426
+ },
427
+ {
428
+ label: 'Set color',
429
+ onClick: () => {
430
+ (0, util_1.getSession)(self).queueDialog(handleClose => [
431
+ SetColorDlg,
432
+ { model: self, handleClose },
433
+ ]);
484
434
  },
485
- ], false);
486
- },
487
- };
488
- })
489
- .actions(function (self) {
490
- var superReload = self.reload, superRenderSvg = self.renderSvg;
491
- return {
492
- // re-runs stats and refresh whole display on reload
493
- reload: function () {
494
- return __awaiter(this, void 0, void 0, function () {
495
- var aborter, stats, e_1;
496
- return __generator(this, function (_a) {
497
- switch (_a.label) {
498
- case 0:
499
- self.setError();
500
- aborter = new AbortController();
501
- self.setLoading(aborter);
502
- _a.label = 1;
503
- case 1:
504
- _a.trys.push([1, 3, , 4]);
505
- return [4 /*yield*/, (0, util_2.getStats)(self, __assign({ signal: aborter.signal }, self.renderProps()))];
506
- case 2:
507
- stats = _a.sent();
508
- if ((0, mobx_state_tree_1.isAlive)(self)) {
509
- self.updateStats(stats);
510
- superReload();
511
- }
512
- return [3 /*break*/, 4];
513
- case 3:
514
- e_1 = _a.sent();
515
- self.setError(e_1);
516
- return [3 /*break*/, 4];
517
- case 4: return [2 /*return*/];
518
- }
519
- });
520
- });
521
- },
522
- afterAttach: function () {
523
- (0, util_2.statsAutorun)(self);
524
- },
525
- renderSvg: function (opts) {
526
- return __awaiter(this, void 0, void 0, function () {
527
- var needsScalebar, stats, offsetPx, _a, _b, _c, _d, _e, _f;
528
- return __generator(this, function (_g) {
529
- switch (_g.label) {
530
- case 0: return [4 /*yield*/, (0, mobx_1.when)(function () { return self.statsReady && !!self.regionCannotBeRenderedText; })];
531
- case 1:
532
- _g.sent();
533
- needsScalebar = self.needsScalebar, stats = self.stats;
534
- offsetPx = (0, util_1.getContainingView)(self).offsetPx;
535
- _b = (_a = react_1.default).createElement;
536
- _c = [react_1.default.Fragment, null];
537
- _e = (_d = react_1.default).createElement;
538
- _f = ["g", { id: "snpcov" }];
539
- return [4 /*yield*/, superRenderSvg(opts)];
540
- case 2: return [2 /*return*/, (_b.apply(_a, _c.concat([_e.apply(_d, _f.concat([_g.sent()])), needsScalebar && stats ? (react_1.default.createElement("g", { transform: "translate(".concat(Math.max(-offsetPx, 0), ")") },
541
- react_1.default.createElement(WiggleDisplayComponent_1.YScaleBar, { model: self, orientation: "left" }))) : null])))];
542
- }
543
- });
435
+ },
436
+ ];
437
+ },
438
+ };
439
+ })
440
+ .actions(self => {
441
+ const { reload: superReload, renderSvg: superRenderSvg } = self;
442
+ return {
443
+ // re-runs stats and refresh whole display on reload
444
+ async reload() {
445
+ self.setError();
446
+ const aborter = new AbortController();
447
+ self.setLoading(aborter);
448
+ try {
449
+ const stats = await (0, util_2.getStats)(self, {
450
+ signal: aborter.signal,
451
+ ...self.renderProps(),
544
452
  });
545
- },
546
- };
547
- });
548
- };
453
+ if ((0, mobx_state_tree_1.isAlive)(self)) {
454
+ self.updateStats(stats);
455
+ superReload();
456
+ }
457
+ }
458
+ catch (e) {
459
+ self.setError(e);
460
+ }
461
+ },
462
+ afterAttach() {
463
+ (0, util_2.statsAutorun)(self);
464
+ },
465
+ async renderSvg(opts) {
466
+ await (0, mobx_1.when)(() => self.statsReady && !!self.regionCannotBeRenderedText);
467
+ const { needsScalebar, stats } = self;
468
+ const { offsetPx } = (0, util_1.getContainingView)(self);
469
+ return (react_1.default.createElement(react_1.default.Fragment, null,
470
+ react_1.default.createElement("g", { id: "snpcov" }, await superRenderSvg(opts)),
471
+ needsScalebar && stats ? (react_1.default.createElement("g", { transform: `translate(${Math.max(-offsetPx, 0)})` },
472
+ react_1.default.createElement(WiggleDisplayComponent_1.YScaleBar, { model: self, orientation: "left" }))) : null));
473
+ },
474
+ };
475
+ });
549
476
  exports.default = stateModelFactory;
550
477
  //# sourceMappingURL=model.js.map