@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,501 +22,469 @@ 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 mobx_state_tree_1 = require("mobx-state-tree");
103
- var mobx_1 = require("mobx");
104
- var react_d3_axis_mod_1 = require("react-d3-axis-mod");
105
- var fast_deep_equal_1 = __importDefault(require("fast-deep-equal"));
29
+ const react_1 = __importStar(require("react"));
30
+ const mobx_state_tree_1 = require("mobx-state-tree");
31
+ const mobx_1 = require("mobx");
32
+ const react_d3_axis_mod_1 = require("react-d3-axis-mod");
33
+ const fast_deep_equal_1 = __importDefault(require("fast-deep-equal"));
106
34
  // jbrowse imports
107
- var configuration_1 = require("@jbrowse/core/configuration");
108
- var util_1 = require("@jbrowse/core/util");
109
- var tracks_1 = require("@jbrowse/core/util/tracks");
110
- var colors_1 = require("@jbrowse/core/ui/colors");
111
- var plugin_linear_genome_view_1 = require("@jbrowse/plugin-linear-genome-view");
35
+ const configuration_1 = require("@jbrowse/core/configuration");
36
+ const util_1 = require("@jbrowse/core/util");
37
+ const tracks_1 = require("@jbrowse/core/util/tracks");
38
+ const colors_1 = require("@jbrowse/core/ui/colors");
39
+ const plugin_linear_genome_view_1 = require("@jbrowse/plugin-linear-genome-view");
112
40
  // locals
113
- var util_2 = require("../../util");
114
- var Tooltip_1 = __importDefault(require("../components/Tooltip"));
115
- var WiggleDisplayComponent_1 = require("../components/WiggleDisplayComponent");
116
- var randomColor = function () {
117
- return '#000000'.replace(/0/g, function () { return (~~(Math.random() * 16)).toString(16); });
118
- };
41
+ const util_2 = require("../../util");
42
+ const Tooltip_1 = __importDefault(require("../components/Tooltip"));
43
+ const WiggleDisplayComponent_1 = require("../components/WiggleDisplayComponent");
44
+ const randomColor = () => '#000000'.replace(/0/g, () => (~~(Math.random() * 16)).toString(16));
119
45
  // lazt components
120
- var SetMinMaxDlg = (0, react_1.lazy)(function () { return Promise.resolve().then(function () { return __importStar(require('../components/SetMinMaxDialog')); }); });
121
- var SetColorDlg = (0, react_1.lazy)(function () { return Promise.resolve().then(function () { return __importStar(require('../components/SetColorDialog')); }); });
46
+ const SetMinMaxDlg = (0, react_1.lazy)(() => Promise.resolve().then(() => __importStar(require('../components/SetMinMaxDialog'))));
47
+ const SetColorDlg = (0, react_1.lazy)(() => Promise.resolve().then(() => __importStar(require('../components/SetColorDialog'))));
122
48
  // using a map because it preserves order
123
- var rendererTypes = new Map([
49
+ const rendererTypes = new Map([
124
50
  ['xyplot', 'MultiXYPlotRenderer'],
125
51
  ['multirowxy', 'MultiRowXYPlotRenderer'],
126
52
  ['multirowdensity', 'MultiDensityRenderer'],
127
53
  ['multiline', 'MultiLineRenderer'],
128
54
  ['multirowline', 'MultiRowLineRenderer'],
129
55
  ]);
130
- var stateModelFactory = function (pluginManager, configSchema) {
131
- return mobx_state_tree_1.types
132
- .compose('MultiLinearWiggleDisplay', plugin_linear_genome_view_1.BaseLinearDisplay, mobx_state_tree_1.types.model({
133
- type: mobx_state_tree_1.types.literal('MultiLinearWiggleDisplay'),
134
- configuration: (0, configuration_1.ConfigurationReference)(configSchema),
135
- selectedRendering: mobx_state_tree_1.types.optional(mobx_state_tree_1.types.string, ''),
136
- resolution: mobx_state_tree_1.types.optional(mobx_state_tree_1.types.number, 1),
137
- fill: mobx_state_tree_1.types.maybe(mobx_state_tree_1.types.boolean),
138
- minSize: mobx_state_tree_1.types.maybe(mobx_state_tree_1.types.number),
139
- height: 200,
140
- color: mobx_state_tree_1.types.maybe(mobx_state_tree_1.types.string),
141
- posColor: mobx_state_tree_1.types.maybe(mobx_state_tree_1.types.string),
142
- negColor: mobx_state_tree_1.types.maybe(mobx_state_tree_1.types.string),
143
- summaryScoreMode: mobx_state_tree_1.types.maybe(mobx_state_tree_1.types.string),
144
- rendererTypeNameState: mobx_state_tree_1.types.maybe(mobx_state_tree_1.types.string),
145
- scale: mobx_state_tree_1.types.maybe(mobx_state_tree_1.types.string),
146
- autoscale: mobx_state_tree_1.types.maybe(mobx_state_tree_1.types.string),
147
- displayCrossHatches: mobx_state_tree_1.types.maybe(mobx_state_tree_1.types.boolean),
148
- layout: mobx_state_tree_1.types.optional(mobx_state_tree_1.types.frozen(), []),
149
- constraints: mobx_state_tree_1.types.optional(mobx_state_tree_1.types.model({
150
- max: mobx_state_tree_1.types.maybe(mobx_state_tree_1.types.number),
151
- min: mobx_state_tree_1.types.maybe(mobx_state_tree_1.types.number),
152
- }), {}),
153
- }))
154
- .volatile(function () { return ({
155
- statsReady: false,
156
- message: undefined,
157
- stats: { scoreMin: 0, scoreMax: 50 },
158
- statsRegion: undefined,
159
- statsFetchInProgress: undefined,
160
- featureUnderMouseVolatile: undefined,
161
- sourcesVolatile: undefined,
162
- }); })
163
- .actions(function (self) { return ({
164
- setLayout: function (layout) {
165
- self.layout = layout;
166
- },
167
- clearLayout: function () {
168
- self.layout = [];
169
- },
170
- updateStats: function (stats) {
171
- var scoreMin = stats.scoreMin, scoreMax = stats.scoreMax;
172
- var EPSILON = 0.000001;
173
- if (Math.abs(self.stats.scoreMax - scoreMax) > EPSILON ||
174
- Math.abs(self.stats.scoreMin - scoreMin) > EPSILON) {
175
- self.stats = { scoreMin: scoreMin, scoreMax: scoreMax };
176
- self.statsReady = true;
56
+ const stateModelFactory = (pluginManager, configSchema) => mobx_state_tree_1.types
57
+ .compose('MultiLinearWiggleDisplay', plugin_linear_genome_view_1.BaseLinearDisplay, mobx_state_tree_1.types.model({
58
+ type: mobx_state_tree_1.types.literal('MultiLinearWiggleDisplay'),
59
+ configuration: (0, configuration_1.ConfigurationReference)(configSchema),
60
+ selectedRendering: mobx_state_tree_1.types.optional(mobx_state_tree_1.types.string, ''),
61
+ resolution: mobx_state_tree_1.types.optional(mobx_state_tree_1.types.number, 1),
62
+ fill: mobx_state_tree_1.types.maybe(mobx_state_tree_1.types.boolean),
63
+ minSize: mobx_state_tree_1.types.maybe(mobx_state_tree_1.types.number),
64
+ height: 200,
65
+ color: mobx_state_tree_1.types.maybe(mobx_state_tree_1.types.string),
66
+ posColor: mobx_state_tree_1.types.maybe(mobx_state_tree_1.types.string),
67
+ negColor: mobx_state_tree_1.types.maybe(mobx_state_tree_1.types.string),
68
+ summaryScoreMode: mobx_state_tree_1.types.maybe(mobx_state_tree_1.types.string),
69
+ rendererTypeNameState: mobx_state_tree_1.types.maybe(mobx_state_tree_1.types.string),
70
+ scale: mobx_state_tree_1.types.maybe(mobx_state_tree_1.types.string),
71
+ autoscale: mobx_state_tree_1.types.maybe(mobx_state_tree_1.types.string),
72
+ displayCrossHatches: mobx_state_tree_1.types.maybe(mobx_state_tree_1.types.boolean),
73
+ layout: mobx_state_tree_1.types.optional(mobx_state_tree_1.types.frozen(), []),
74
+ constraints: mobx_state_tree_1.types.optional(mobx_state_tree_1.types.model({
75
+ max: mobx_state_tree_1.types.maybe(mobx_state_tree_1.types.number),
76
+ min: mobx_state_tree_1.types.maybe(mobx_state_tree_1.types.number),
77
+ }), {}),
78
+ }))
79
+ .volatile(() => ({
80
+ statsReady: false,
81
+ message: undefined,
82
+ stats: { scoreMin: 0, scoreMax: 50 },
83
+ statsRegion: undefined,
84
+ statsFetchInProgress: undefined,
85
+ featureUnderMouseVolatile: undefined,
86
+ sourcesVolatile: undefined,
87
+ }))
88
+ .actions(self => ({
89
+ setLayout(layout) {
90
+ self.layout = layout;
91
+ },
92
+ clearLayout() {
93
+ self.layout = [];
94
+ },
95
+ updateStats(stats) {
96
+ const { scoreMin, scoreMax } = stats;
97
+ const EPSILON = 0.000001;
98
+ if (Math.abs(self.stats.scoreMax - scoreMax) > EPSILON ||
99
+ Math.abs(self.stats.scoreMin - scoreMin) > EPSILON) {
100
+ self.stats = { scoreMin, scoreMax };
101
+ self.statsReady = true;
102
+ }
103
+ },
104
+ setSources(sources) {
105
+ if (!(0, fast_deep_equal_1.default)(sources, self.sourcesVolatile)) {
106
+ self.sourcesVolatile = sources;
107
+ }
108
+ },
109
+ setColor(color) {
110
+ self.color = color;
111
+ },
112
+ setPosColor(color) {
113
+ self.posColor = color;
114
+ },
115
+ setNegColor(color) {
116
+ self.negColor = color;
117
+ },
118
+ setLoading(aborter) {
119
+ const { statsFetchInProgress: statsFetch } = self;
120
+ if (statsFetch !== undefined && !statsFetch.signal.aborted) {
121
+ statsFetch.abort();
122
+ }
123
+ self.statsFetchInProgress = aborter;
124
+ },
125
+ // this overrides the BaseLinearDisplayModel to avoid popping up a
126
+ // feature detail display, but still sets the feature selection on the
127
+ // model so listeners can detect a click
128
+ selectFeature(feature) {
129
+ const session = (0, util_1.getSession)(self);
130
+ if ((0, util_1.isSelectionContainer)(session)) {
131
+ session.setSelection(feature);
132
+ }
133
+ },
134
+ setFeatureUnderMouse(f) {
135
+ self.featureUnderMouseVolatile = f;
136
+ },
137
+ setResolution(res) {
138
+ self.resolution = res;
139
+ },
140
+ setFill(fill) {
141
+ if (fill === 0) {
142
+ self.fill = true;
143
+ self.minSize = 0;
144
+ }
145
+ else if (fill === 1) {
146
+ self.fill = false;
147
+ self.minSize = 1;
148
+ }
149
+ else if (fill === 2) {
150
+ self.fill = false;
151
+ self.minSize = 2;
152
+ }
153
+ },
154
+ toggleLogScale() {
155
+ if (self.scale !== 'log') {
156
+ self.scale = 'log';
157
+ }
158
+ else {
159
+ self.scale = 'linear';
160
+ }
161
+ },
162
+ setScaleType(scale) {
163
+ self.scale = scale;
164
+ },
165
+ setSummaryScoreMode(val) {
166
+ self.summaryScoreMode = val;
167
+ },
168
+ setAutoscale(val) {
169
+ self.autoscale = val;
170
+ },
171
+ setMaxScore(val) {
172
+ self.constraints.max = val;
173
+ },
174
+ setRendererType(val) {
175
+ self.rendererTypeNameState = val;
176
+ },
177
+ setMinScore(val) {
178
+ self.constraints.min = val;
179
+ },
180
+ toggleCrossHatches() {
181
+ self.displayCrossHatches = !self.displayCrossHatches;
182
+ },
183
+ setCrossHatches(cross) {
184
+ self.displayCrossHatches = cross;
185
+ },
186
+ }))
187
+ .views(self => ({
188
+ get featureUnderMouse() {
189
+ return self.featureUnderMouseVolatile;
190
+ },
191
+ get TooltipComponent() {
192
+ return Tooltip_1.default;
193
+ },
194
+ get adapterTypeName() {
195
+ return self.adapterConfig.type;
196
+ },
197
+ get rendererTypeNameSimple() {
198
+ return self.rendererTypeNameState || (0, configuration_1.getConf)(self, 'defaultRendering');
199
+ },
200
+ get rendererTypeName() {
201
+ const name = this.rendererTypeNameSimple;
202
+ const rendererType = rendererTypes.get(name);
203
+ if (!rendererType) {
204
+ throw new Error(`unknown renderer ${name}`);
205
+ }
206
+ return rendererType;
207
+ },
208
+ // subclasses can define these, as snpcoverage track does
209
+ get filters() {
210
+ return undefined;
211
+ },
212
+ get scaleType() {
213
+ var _a;
214
+ return (_a = self.scale) !== null && _a !== void 0 ? _a : (0, configuration_1.getConf)(self, 'scaleType');
215
+ },
216
+ get maxScore() {
217
+ var _a;
218
+ return (_a = self.constraints.max) !== null && _a !== void 0 ? _a : (0, configuration_1.getConf)(self, 'maxScore');
219
+ },
220
+ get minScore() {
221
+ var _a;
222
+ return (_a = self.constraints.min) !== null && _a !== void 0 ? _a : (0, configuration_1.getConf)(self, 'minScore');
223
+ },
224
+ }))
225
+ .views(self => ({
226
+ get rendererConfig() {
227
+ const configBlob = (0, configuration_1.getConf)(self, ['renderers', self.rendererTypeName]) || {};
228
+ const { color, displayCrossHatches, fill, minSize, negColor, posColor, summaryScoreMode, scaleType, } = self;
229
+ return self.rendererType.configSchema.create({
230
+ ...configBlob,
231
+ ...(scaleType ? { scaleType } : {}),
232
+ ...(fill !== undefined ? { filled: fill } : {}),
233
+ ...(displayCrossHatches !== undefined
234
+ ? { displayCrossHatches }
235
+ : {}),
236
+ ...(summaryScoreMode !== undefined ? { summaryScoreMode } : {}),
237
+ ...(color !== undefined ? { color } : {}),
238
+ ...(negColor !== undefined ? { negColor } : {}),
239
+ ...(posColor !== undefined ? { posColor } : {}),
240
+ ...(minSize !== undefined ? { minSize } : {}),
241
+ }, (0, mobx_state_tree_1.getEnv)(self));
242
+ },
243
+ }))
244
+ .views(self => ({
245
+ // everything except density gets a numerical scalebar
246
+ get needsScalebar() {
247
+ return (self.rendererTypeName === 'MultiXYPlotRenderer' ||
248
+ self.rendererTypeName === 'MultiRowXYPlotRenderer' ||
249
+ self.rendererTypeName === 'MultiLineRenderer' ||
250
+ self.rendererTypeName === 'MultiRowLineRenderer');
251
+ },
252
+ get needsFullHeightScalebar() {
253
+ return (self.rendererTypeName === 'MultiXYPlotRenderer' ||
254
+ self.rendererTypeName === 'MultiLineRenderer');
255
+ },
256
+ get isMultiRow() {
257
+ return (self.rendererTypeName === 'MultiRowXYPlotRenderer' ||
258
+ self.rendererTypeName === 'MultiRowLineRenderer' ||
259
+ self.rendererTypeName === 'MultiDensityRenderer');
260
+ },
261
+ // can be used to give it a "color scale" like a R heatmap, not
262
+ // implemented like this yet but flag can be used for this
263
+ get needsCustomLegend() {
264
+ return self.rendererTypeName === 'MultiDensityRenderer';
265
+ },
266
+ get canHaveFill() {
267
+ return (self.rendererTypeName === 'MultiXYPlotRenderer' ||
268
+ self.rendererTypeName === 'MultiRowXYPlotRenderer');
269
+ },
270
+ // the multirowxy and multiline don't need to use colors on the legend
271
+ // boxes since their track is drawn with the color. sort of a stylistic choice
272
+ get renderColorBoxes() {
273
+ return !(self.rendererTypeName === 'MultiRowLineRenderer' ||
274
+ self.rendererTypeName === 'MultiRowXYPlotRenderer');
275
+ },
276
+ // positions multi-row below the tracklabel even if using overlap
277
+ // tracklabels for everything else
278
+ get prefersOffset() {
279
+ return this.isMultiRow;
280
+ },
281
+ get sources() {
282
+ var _a;
283
+ const sources = Object.fromEntries(((_a = self.sourcesVolatile) === null || _a === void 0 ? void 0 : _a.map(s => [s.name, s])) || []);
284
+ const iter = self.layout.length ? self.layout : self.sourcesVolatile;
285
+ return iter === null || iter === void 0 ? void 0 : iter.map(s => ({
286
+ ...sources[s.name],
287
+ ...s,
288
+ })).map((s, i) => ({
289
+ ...s,
290
+ color: s.color ||
291
+ (!this.isMultiRow ? colors_1.set1[i] || randomColor() : 'blue'),
292
+ }));
293
+ },
294
+ }))
295
+ .views(self => {
296
+ let oldDomain = [0, 0];
297
+ return {
298
+ get filled() {
299
+ const { fill, rendererConfig } = self;
300
+ return fill !== null && fill !== void 0 ? fill : (0, configuration_1.readConfObject)(rendererConfig, 'filled');
301
+ },
302
+ get summaryScoreModeSetting() {
303
+ const { summaryScoreMode: scoreMode, rendererConfig } = self;
304
+ return scoreMode !== null && scoreMode !== void 0 ? scoreMode : (0, configuration_1.readConfObject)(rendererConfig, 'summaryScoreMode');
305
+ },
306
+ get domain() {
307
+ const { stats, scaleType, minScore, maxScore } = self;
308
+ const { scoreMin, scoreMax } = stats;
309
+ const ret = (0, util_2.getNiceDomain)({
310
+ domain: [scoreMin, scoreMax],
311
+ bounds: [minScore, maxScore],
312
+ scaleType,
313
+ });
314
+ // avoid weird scalebar if log value and empty region displayed
315
+ if (scaleType === 'log' && ret[1] === Number.MIN_VALUE) {
316
+ return [0, Number.MIN_VALUE];
177
317
  }
178
- },
179
- setSources: function (sources) {
180
- if (!(0, fast_deep_equal_1.default)(sources, self.sourcesVolatile)) {
181
- self.sourcesVolatile = sources;
318
+ // avoid returning a new object if it matches the old value
319
+ if (!(0, fast_deep_equal_1.default)(oldDomain, ret)) {
320
+ oldDomain = ret;
182
321
  }
322
+ return oldDomain;
323
+ },
324
+ get scaleOpts() {
325
+ const { scaleType, stats } = self;
326
+ return {
327
+ autoscaleType: this.autoscaleType,
328
+ domain: this.domain,
329
+ stats,
330
+ scaleType,
331
+ inverted: (0, configuration_1.getConf)(self, 'inverted'),
332
+ };
183
333
  },
184
- setColor: function (color) {
185
- self.color = color;
334
+ get autoscaleType() {
335
+ var _a;
336
+ return (_a = self.autoscale) !== null && _a !== void 0 ? _a : (0, configuration_1.getConf)(self, 'autoscale');
186
337
  },
187
- setPosColor: function (color) {
188
- self.posColor = color;
338
+ get displayCrossHatchesSetting() {
339
+ const { displayCrossHatches, rendererConfig } = self;
340
+ return (displayCrossHatches !== null && displayCrossHatches !== void 0 ? displayCrossHatches : (0, configuration_1.readConfObject)(rendererConfig, 'displayCrossHatches'));
189
341
  },
190
- setNegColor: function (color) {
191
- self.negColor = color;
342
+ get rowHeight() {
343
+ const { sources, height, isMultiRow } = self;
344
+ return isMultiRow ? height / ((sources === null || sources === void 0 ? void 0 : sources.length) || 1) : height;
192
345
  },
193
- setLoading: function (aborter) {
194
- var statsFetch = self.statsFetchInProgress;
195
- if (statsFetch !== undefined && !statsFetch.signal.aborted) {
196
- statsFetch.abort();
197
- }
198
- self.statsFetchInProgress = aborter;
346
+ get rowHeightTooSmallForScalebar() {
347
+ return this.rowHeight < 70;
199
348
  },
200
- // this overrides the BaseLinearDisplayModel to avoid popping up a
201
- // feature detail display, but still sets the feature selection on the
202
- // model so listeners can detect a click
203
- selectFeature: function (feature) {
204
- var session = (0, util_1.getSession)(self);
205
- if ((0, util_1.isSelectionContainer)(session)) {
206
- session.setSelection(feature);
207
- }
349
+ get useMinimalTicks() {
350
+ return ((0, configuration_1.getConf)(self, 'minimalTicks') || this.rowHeightTooSmallForScalebar);
208
351
  },
209
- setFeatureUnderMouse: function (f) {
210
- self.featureUnderMouseVolatile = f;
211
- },
212
- setResolution: function (res) {
213
- self.resolution = res;
214
- },
215
- setFill: function (fill) {
216
- if (fill === 0) {
217
- self.fill = true;
218
- self.minSize = 0;
219
- }
220
- else if (fill === 1) {
221
- self.fill = false;
222
- self.minSize = 1;
223
- }
224
- else if (fill === 2) {
225
- self.fill = false;
226
- self.minSize = 2;
352
+ };
353
+ })
354
+ .views(self => ({
355
+ get ticks() {
356
+ const { scaleType, domain, isMultiRow, rowHeight, useMinimalTicks } = self;
357
+ const offset = isMultiRow ? 0 : util_2.YSCALEBAR_LABEL_OFFSET;
358
+ const ticks = (0, react_d3_axis_mod_1.axisPropsFromTickScale)((0, util_2.getScale)({
359
+ scaleType,
360
+ domain,
361
+ range: [rowHeight - offset, offset],
362
+ inverted: (0, configuration_1.getConf)(self, 'inverted'),
363
+ }), 4);
364
+ return useMinimalTicks ? { ...ticks, values: domain } : ticks;
365
+ },
366
+ get colors() {
367
+ return [
368
+ 'red',
369
+ 'blue',
370
+ 'green',
371
+ 'orange',
372
+ 'purple',
373
+ 'cyan',
374
+ 'pink',
375
+ 'darkblue',
376
+ 'darkred',
377
+ 'pink',
378
+ ];
379
+ },
380
+ get adapterCapabilities() {
381
+ const { adapterTypeName } = self;
382
+ return pluginManager.getAdapterType(adapterTypeName).adapterCapabilities;
383
+ },
384
+ }))
385
+ .views(self => {
386
+ const { renderProps: superRenderProps } = self;
387
+ return {
388
+ renderProps() {
389
+ const superProps = superRenderProps();
390
+ const { displayCrossHatches, filters, height, resolution, rpcDriverName, scaleOpts, sources, statsReady, ticks, rendererConfig: config, } = self;
391
+ return {
392
+ ...superProps,
393
+ notReady: superProps.notReady || !sources || !statsReady,
394
+ displayModel: self,
395
+ config,
396
+ displayCrossHatches,
397
+ filters,
398
+ height,
399
+ resolution,
400
+ rpcDriverName,
401
+ scaleOpts,
402
+ sources,
403
+ ticks,
404
+ onMouseMove: (_, f) => self.setFeatureUnderMouse(f),
405
+ onMouseLeave: () => self.setFeatureUnderMouse(undefined),
406
+ };
407
+ },
408
+ get hasResolution() {
409
+ return self.adapterCapabilities.includes('hasResolution');
410
+ },
411
+ get hasGlobalStats() {
412
+ return self.adapterCapabilities.includes('hasGlobalStats');
413
+ },
414
+ get fillSetting() {
415
+ if (self.filled) {
416
+ return 0;
227
417
  }
228
- },
229
- toggleLogScale: function () {
230
- if (self.scale !== 'log') {
231
- self.scale = 'log';
418
+ else if (!self.filled && self.minSize === 1) {
419
+ return 1;
232
420
  }
233
421
  else {
234
- self.scale = 'linear';
422
+ return 2;
235
423
  }
236
424
  },
237
- setScaleType: function (scale) {
238
- self.scale = scale;
239
- },
240
- setSummaryScoreMode: function (val) {
241
- self.summaryScoreMode = val;
242
- },
243
- setAutoscale: function (val) {
244
- self.autoscale = val;
245
- },
246
- setMaxScore: function (val) {
247
- self.constraints.max = val;
248
- },
249
- setRendererType: function (val) {
250
- self.rendererTypeNameState = val;
251
- },
252
- setMinScore: function (val) {
253
- self.constraints.min = val;
254
- },
255
- toggleCrossHatches: function () {
256
- self.displayCrossHatches = !self.displayCrossHatches;
257
- },
258
- setCrossHatches: function (cross) {
259
- self.displayCrossHatches = cross;
260
- },
261
- }); })
262
- .views(function (self) { return ({
263
- get featureUnderMouse() {
264
- return self.featureUnderMouseVolatile;
265
- },
266
- get TooltipComponent() {
267
- return Tooltip_1.default;
268
- },
269
- get adapterTypeName() {
270
- return self.adapterConfig.type;
271
- },
272
- get rendererTypeNameSimple() {
273
- return self.rendererTypeNameState || (0, configuration_1.getConf)(self, 'defaultRendering');
274
- },
275
- get rendererTypeName() {
276
- var name = this.rendererTypeNameSimple;
277
- var rendererType = rendererTypes.get(name);
278
- if (!rendererType) {
279
- throw new Error("unknown renderer ".concat(name));
280
- }
281
- return rendererType;
282
- },
283
- // subclasses can define these, as snpcoverage track does
284
- get filters() {
285
- return undefined;
286
- },
287
- get scaleType() {
288
- var _a;
289
- return (_a = self.scale) !== null && _a !== void 0 ? _a : (0, configuration_1.getConf)(self, 'scaleType');
290
- },
291
- get maxScore() {
292
- var _a;
293
- return (_a = self.constraints.max) !== null && _a !== void 0 ? _a : (0, configuration_1.getConf)(self, 'maxScore');
294
- },
295
- get minScore() {
296
- var _a;
297
- return (_a = self.constraints.min) !== null && _a !== void 0 ? _a : (0, configuration_1.getConf)(self, 'minScore');
298
- },
299
- }); })
300
- .views(function (self) { return ({
301
- get rendererConfig() {
302
- var configBlob = (0, configuration_1.getConf)(self, ['renderers', self.rendererTypeName]) || {};
303
- 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;
304
- return self.rendererType.configSchema.create(__assign(__assign(__assign(__assign(__assign(__assign(__assign(__assign(__assign({}, configBlob), (scaleType ? { scaleType: scaleType } : {})), (fill !== undefined ? { filled: fill } : {})), (displayCrossHatches !== undefined
305
- ? { displayCrossHatches: displayCrossHatches }
306
- : {})), (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));
307
- },
308
- }); })
309
- .views(function (self) { return ({
310
- // everything except density gets a numerical scalebar
311
- get needsScalebar() {
312
- return (self.rendererTypeName === 'MultiXYPlotRenderer' ||
313
- self.rendererTypeName === 'MultiRowXYPlotRenderer' ||
314
- self.rendererTypeName === 'MultiLineRenderer' ||
315
- self.rendererTypeName === 'MultiRowLineRenderer');
316
- },
317
- get needsFullHeightScalebar() {
318
- return (self.rendererTypeName === 'MultiXYPlotRenderer' ||
319
- self.rendererTypeName === 'MultiLineRenderer');
320
- },
321
- get isMultiRow() {
322
- return (self.rendererTypeName === 'MultiRowXYPlotRenderer' ||
323
- self.rendererTypeName === 'MultiRowLineRenderer' ||
324
- self.rendererTypeName === 'MultiDensityRenderer');
325
- },
326
- // can be used to give it a "color scale" like a R heatmap, not
327
- // implemented like this yet but flag can be used for this
328
- get needsCustomLegend() {
329
- return self.rendererTypeName === 'MultiDensityRenderer';
330
- },
331
- get canHaveFill() {
332
- return (self.rendererTypeName === 'MultiXYPlotRenderer' ||
333
- self.rendererTypeName === 'MultiRowXYPlotRenderer');
334
- },
335
- // the multirowxy and multiline don't need to use colors on the legend
336
- // boxes since their track is drawn with the color. sort of a stylistic choice
337
- get renderColorBoxes() {
338
- return !(self.rendererTypeName === 'MultiRowLineRenderer' ||
339
- self.rendererTypeName === 'MultiRowXYPlotRenderer');
340
- },
341
- // positions multi-row below the tracklabel even if using overlap
342
- // tracklabels for everything else
343
- get prefersOffset() {
344
- return this.isMultiRow;
345
- },
346
- get sources() {
347
- var _this = this;
348
- var _a;
349
- var sources = Object.fromEntries(((_a = self.sourcesVolatile) === null || _a === void 0 ? void 0 : _a.map(function (s) { return [s.name, s]; })) || []);
350
- var iter = self.layout.length ? self.layout : self.sourcesVolatile;
351
- return iter === null || iter === void 0 ? void 0 : iter.map(function (s) { return (__assign(__assign({}, sources[s.name]), s)); }).map(function (s, i) { return (__assign(__assign({}, s), { color: s.color ||
352
- (!_this.isMultiRow ? colors_1.set1[i] || randomColor() : 'blue') })); });
353
- },
354
- }); })
355
- .views(function (self) {
356
- var oldDomain = [0, 0];
357
- return {
358
- get filled() {
359
- var fill = self.fill, rendererConfig = self.rendererConfig;
360
- return fill !== null && fill !== void 0 ? fill : (0, configuration_1.readConfObject)(rendererConfig, 'filled');
361
- },
362
- get summaryScoreModeSetting() {
363
- var scoreMode = self.summaryScoreMode, rendererConfig = self.rendererConfig;
364
- return scoreMode !== null && scoreMode !== void 0 ? scoreMode : (0, configuration_1.readConfObject)(rendererConfig, 'summaryScoreMode');
365
- },
366
- get domain() {
367
- var stats = self.stats, scaleType = self.scaleType, minScore = self.minScore, maxScore = self.maxScore;
368
- var scoreMin = stats.scoreMin, scoreMax = stats.scoreMax;
369
- var ret = (0, util_2.getNiceDomain)({
370
- domain: [scoreMin, scoreMax],
371
- bounds: [minScore, maxScore],
372
- scaleType: scaleType,
373
- });
374
- // avoid weird scalebar if log value and empty region displayed
375
- if (scaleType === 'log' && ret[1] === Number.MIN_VALUE) {
376
- return [0, Number.MIN_VALUE];
377
- }
378
- // avoid returning a new object if it matches the old value
379
- if (!(0, fast_deep_equal_1.default)(oldDomain, ret)) {
380
- oldDomain = ret;
381
- }
382
- return oldDomain;
383
- },
384
- get scaleOpts() {
385
- var scaleType = self.scaleType, stats = self.stats;
386
- return {
387
- autoscaleType: this.autoscaleType,
388
- domain: this.domain,
389
- stats: stats,
390
- scaleType: scaleType,
391
- inverted: (0, configuration_1.getConf)(self, 'inverted'),
392
- };
393
- },
394
- get autoscaleType() {
395
- var _a;
396
- return (_a = self.autoscale) !== null && _a !== void 0 ? _a : (0, configuration_1.getConf)(self, 'autoscale');
397
- },
398
- get displayCrossHatchesSetting() {
399
- var displayCrossHatches = self.displayCrossHatches, rendererConfig = self.rendererConfig;
400
- return (displayCrossHatches !== null && displayCrossHatches !== void 0 ? displayCrossHatches : (0, configuration_1.readConfObject)(rendererConfig, 'displayCrossHatches'));
401
- },
402
- get rowHeight() {
403
- var sources = self.sources, height = self.height, isMultiRow = self.isMultiRow;
404
- return isMultiRow ? height / ((sources === null || sources === void 0 ? void 0 : sources.length) || 1) : height;
405
- },
406
- get rowHeightTooSmallForScalebar() {
407
- return this.rowHeight < 70;
408
- },
409
- get useMinimalTicks() {
410
- return ((0, configuration_1.getConf)(self, 'minimalTicks') || this.rowHeightTooSmallForScalebar);
411
- },
412
- };
413
- })
414
- .views(function (self) { return ({
415
- get ticks() {
416
- var scaleType = self.scaleType, domain = self.domain, isMultiRow = self.isMultiRow, rowHeight = self.rowHeight, useMinimalTicks = self.useMinimalTicks;
417
- var offset = isMultiRow ? 0 : util_2.YSCALEBAR_LABEL_OFFSET;
418
- var ticks = (0, react_d3_axis_mod_1.axisPropsFromTickScale)((0, util_2.getScale)({
419
- scaleType: scaleType,
420
- domain: domain,
421
- range: [rowHeight - offset, offset],
422
- inverted: (0, configuration_1.getConf)(self, 'inverted'),
423
- }), 4);
424
- return useMinimalTicks ? __assign(__assign({}, ticks), { values: domain }) : ticks;
425
- },
426
- get colors() {
425
+ };
426
+ })
427
+ .views(self => {
428
+ const { trackMenuItems: superTrackMenuItems } = self;
429
+ const hasRenderings = (0, configuration_1.getConf)(self, 'defaultRendering');
430
+ return {
431
+ trackMenuItems() {
427
432
  return [
428
- 'red',
429
- 'blue',
430
- 'green',
431
- 'orange',
432
- 'purple',
433
- 'cyan',
434
- 'pink',
435
- 'darkblue',
436
- 'darkred',
437
- 'pink',
438
- ];
439
- },
440
- get adapterCapabilities() {
441
- var adapterTypeName = self.adapterTypeName;
442
- return pluginManager.getAdapterType(adapterTypeName).adapterCapabilities;
443
- },
444
- }); })
445
- .views(function (self) {
446
- var superRenderProps = self.renderProps;
447
- return {
448
- renderProps: function () {
449
- var superProps = superRenderProps();
450
- var displayCrossHatches = self.displayCrossHatches, filters = self.filters, height = self.height, resolution = self.resolution, rpcDriverName = self.rpcDriverName, scaleOpts = self.scaleOpts, sources = self.sources, statsReady = self.statsReady, ticks = self.ticks, config = self.rendererConfig;
451
- return __assign(__assign({}, superProps), { notReady: superProps.notReady || !sources || !statsReady, displayModel: self, config: config, displayCrossHatches: displayCrossHatches, filters: filters, height: height, resolution: resolution, rpcDriverName: rpcDriverName, scaleOpts: scaleOpts, sources: sources, ticks: ticks, onMouseMove: function (_, f) {
452
- return self.setFeatureUnderMouse(f);
453
- }, onMouseLeave: function () { return self.setFeatureUnderMouse(undefined); } });
454
- },
455
- get hasResolution() {
456
- return self.adapterCapabilities.includes('hasResolution');
457
- },
458
- get hasGlobalStats() {
459
- return self.adapterCapabilities.includes('hasGlobalStats');
460
- },
461
- get fillSetting() {
462
- if (self.filled) {
463
- return 0;
464
- }
465
- else if (!self.filled && self.minSize === 1) {
466
- return 1;
467
- }
468
- else {
469
- return 2;
470
- }
471
- },
472
- };
473
- })
474
- .views(function (self) {
475
- var superTrackMenuItems = self.trackMenuItems;
476
- var hasRenderings = (0, configuration_1.getConf)(self, 'defaultRendering');
477
- return {
478
- trackMenuItems: function () {
479
- return __spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray([], __read(superTrackMenuItems()), false), __read((self.hasResolution
433
+ ...superTrackMenuItems(),
434
+ ...(self.hasResolution
480
435
  ? [
481
436
  {
482
437
  label: 'Resolution',
483
438
  subMenu: [
484
439
  {
485
440
  label: 'Finer resolution',
486
- onClick: function () { return self.setResolution(self.resolution * 5); },
441
+ onClick: () => self.setResolution(self.resolution * 5),
487
442
  },
488
443
  {
489
444
  label: 'Coarser resolution',
490
- onClick: function () { return self.setResolution(self.resolution / 5); },
445
+ onClick: () => self.setResolution(self.resolution / 5),
491
446
  },
492
447
  ],
493
448
  },
494
449
  {
495
450
  label: 'Summary score mode',
496
- subMenu: ['min', 'max', 'avg', 'whiskers'].map(function (elt) { return ({
451
+ subMenu: ['min', 'max', 'avg', 'whiskers'].map(elt => ({
497
452
  label: elt,
498
453
  type: 'radio',
499
454
  checked: self.summaryScoreModeSetting === elt,
500
- onClick: function () { return self.setSummaryScoreMode(elt); },
501
- }); }),
455
+ onClick: () => self.setSummaryScoreMode(elt),
456
+ })),
502
457
  },
503
458
  ]
504
- : [])), false), __read((self.canHaveFill
459
+ : []),
460
+ ...(self.canHaveFill
505
461
  ? [
506
462
  {
507
463
  label: 'Fill mode',
508
- subMenu: ['filled', 'no fill', 'no fill w/ emphasis'].map(function (elt, idx) { return ({
464
+ subMenu: ['filled', 'no fill', 'no fill w/ emphasis'].map((elt, idx) => ({
509
465
  label: elt,
510
466
  type: 'radio',
511
467
  checked: self.fillSetting === idx,
512
- onClick: function () { return self.setFill(idx); },
513
- }); }),
468
+ onClick: () => self.setFill(idx),
469
+ })),
514
470
  },
515
471
  ]
516
- : [])), false), [
517
- {
518
- label: self.scaleType === 'log' ? 'Set linear scale' : 'Set log scale',
519
- onClick: function () { return self.toggleLogScale(); },
520
- }
521
- ], false), __read((self.needsScalebar
472
+ : []),
473
+ {
474
+ label: self.scaleType === 'log' ? 'Set linear scale' : 'Set log scale',
475
+ onClick: () => self.toggleLogScale(),
476
+ },
477
+ ...(self.needsScalebar
522
478
  ? [
523
479
  {
524
480
  type: 'checkbox',
525
481
  label: 'Draw cross hatches',
526
482
  checked: self.displayCrossHatchesSetting,
527
- onClick: function () { return self.toggleCrossHatches(); },
483
+ onClick: () => self.toggleCrossHatches(),
528
484
  },
529
485
  ]
530
- : [])), false), __read((hasRenderings
486
+ : []),
487
+ ...(hasRenderings
531
488
  ? [
532
489
  {
533
490
  label: 'Renderer type',
@@ -537,139 +494,105 @@ var stateModelFactory = function (pluginManager, configSchema) {
537
494
  'multirowdensity',
538
495
  'multiline',
539
496
  'multirowline',
540
- ].map(function (key) { return ({
497
+ ].map(key => ({
541
498
  label: key,
542
499
  type: 'radio',
543
500
  checked: self.rendererTypeNameSimple === key,
544
- onClick: function () { return self.setRendererType(key); },
545
- }); }),
501
+ onClick: () => self.setRendererType(key),
502
+ })),
546
503
  },
547
504
  ]
548
- : [])), false), [
549
- {
550
- label: 'Autoscale type',
551
- subMenu: __spreadArray(__spreadArray([
552
- ['local', 'Local']
553
- ], __read((self.hasGlobalStats
505
+ : []),
506
+ {
507
+ label: 'Autoscale type',
508
+ subMenu: [
509
+ ['local', 'Local'],
510
+ ...(self.hasGlobalStats
554
511
  ? [
555
512
  ['global', 'Global'],
556
513
  ['globalsd', 'Global ± 3σ'],
557
514
  ]
558
- : [])), false), [
559
- ['localsd', 'Local ± 3σ'],
560
- ], false).map(function (_a) {
561
- var _b = __read(_a, 2), val = _b[0], label = _b[1];
562
- return {
563
- label: label,
564
- type: 'radio',
565
- checked: self.autoscaleType === val,
566
- onClick: function () { return self.setAutoscale(val); },
567
- };
568
- }),
569
- },
570
- {
571
- label: 'Set min/max score...',
572
- onClick: function () {
573
- var session = (0, util_1.getSession)(self);
574
- session.queueDialog(function (handleClose) { return [
575
- SetMinMaxDlg,
576
- { model: self, handleClose: handleClose },
577
- ]; });
578
- },
515
+ : []),
516
+ ['localsd', 'Local ± 3σ'],
517
+ ].map(([val, label]) => {
518
+ return {
519
+ label,
520
+ type: 'radio',
521
+ checked: self.autoscaleType === val,
522
+ onClick: () => self.setAutoscale(val),
523
+ };
524
+ }),
525
+ },
526
+ {
527
+ label: 'Set min/max score...',
528
+ onClick: () => {
529
+ const session = (0, util_1.getSession)(self);
530
+ session.queueDialog(handleClose => [
531
+ SetMinMaxDlg,
532
+ { model: self, handleClose },
533
+ ]);
579
534
  },
580
- {
581
- label: 'Edit colors/arrangement...',
582
- onClick: function () {
583
- (0, util_1.getSession)(self).queueDialog(function (handleClose) { return [
584
- SetColorDlg,
585
- { model: self, handleClose: handleClose },
586
- ]; });
587
- },
535
+ },
536
+ {
537
+ label: 'Edit colors/arrangement...',
538
+ onClick: () => {
539
+ (0, util_1.getSession)(self).queueDialog(handleClose => [
540
+ SetColorDlg,
541
+ { model: self, handleClose },
542
+ ]);
588
543
  },
589
- ], false);
590
- },
591
- };
592
- })
593
- .actions(function (self) {
594
- var superReload = self.reload, superRenderSvg = self.renderSvg;
595
- return {
596
- // re-runs stats and refresh whole display on reload
597
- reload: function () {
598
- return __awaiter(this, void 0, void 0, function () {
599
- var aborter, stats, e_1;
600
- return __generator(this, function (_a) {
601
- switch (_a.label) {
602
- case 0:
603
- self.setError();
604
- aborter = new AbortController();
605
- _a.label = 1;
606
- case 1:
607
- _a.trys.push([1, 3, , 4]);
608
- self.setLoading(aborter);
609
- return [4 /*yield*/, (0, util_2.getStats)(self, __assign({ signal: aborter.signal }, self.renderProps()))];
610
- case 2:
611
- stats = _a.sent();
612
- if ((0, mobx_state_tree_1.isAlive)(self)) {
613
- self.updateStats(stats);
614
- superReload();
615
- }
616
- return [3 /*break*/, 4];
617
- case 3:
618
- e_1 = _a.sent();
619
- self.setError(e_1);
620
- return [3 /*break*/, 4];
621
- case 4: return [2 /*return*/];
622
- }
623
- });
624
- });
625
- },
626
- afterAttach: function () {
627
- var _this = this;
628
- (0, util_2.statsAutorun)(self);
629
- (0, mobx_state_tree_1.addDisposer)(self, (0, mobx_1.autorun)(function () { return __awaiter(_this, void 0, void 0, function () {
630
- var rpcManager, adapterConfig, sessionId, sources;
631
- return __generator(this, function (_a) {
632
- switch (_a.label) {
633
- case 0:
634
- rpcManager = (0, util_1.getSession)(self).rpcManager;
635
- adapterConfig = self.adapterConfig;
636
- sessionId = (0, tracks_1.getRpcSessionId)(self);
637
- return [4 /*yield*/, rpcManager.call(sessionId, 'MultiWiggleGetSources', {
638
- sessionId: sessionId,
639
- adapterConfig: adapterConfig,
640
- })];
641
- case 1:
642
- sources = (_a.sent());
643
- if ((0, mobx_state_tree_1.isAlive)(self)) {
644
- self.setSources(sources);
645
- }
646
- return [2 /*return*/];
647
- }
648
- });
649
- }); }));
650
- },
651
- renderSvg: function (opts) {
652
- return __awaiter(this, void 0, void 0, function () {
653
- var offsetPx, _a, _b, _c, _d, _e, _f;
654
- return __generator(this, function (_g) {
655
- switch (_g.label) {
656
- case 0: return [4 /*yield*/, (0, mobx_1.when)(function () { return self.statsReady && !!self.regionCannotBeRenderedText; })];
657
- case 1:
658
- _g.sent();
659
- offsetPx = (0, util_1.getContainingView)(self).offsetPx;
660
- _b = (_a = react_1.default).createElement;
661
- _c = [react_1.default.Fragment, null];
662
- _e = (_d = react_1.default).createElement;
663
- _f = ["g", { id: "snpcov" }];
664
- return [4 /*yield*/, superRenderSvg(opts)];
665
- case 2: return [2 /*return*/, (_b.apply(_a, _c.concat([_e.apply(_d, _f.concat([_g.sent()])), react_1.default.createElement("g", { transform: "translate(".concat(Math.max(-offsetPx, 0), ")") },
666
- react_1.default.createElement(WiggleDisplayComponent_1.StatBars, { model: self, orientation: "left", exportSVG: true }))])))];
667
- }
668
- });
544
+ },
545
+ ];
546
+ },
547
+ };
548
+ })
549
+ .actions(self => {
550
+ const { reload: superReload, renderSvg: superRenderSvg } = self;
551
+ return {
552
+ // re-runs stats and refresh whole display on reload
553
+ async reload() {
554
+ self.setError();
555
+ const aborter = new AbortController();
556
+ let stats;
557
+ try {
558
+ self.setLoading(aborter);
559
+ stats = await (0, util_2.getStats)(self, {
560
+ signal: aborter.signal,
561
+ ...self.renderProps(),
669
562
  });
670
- },
671
- };
672
- });
673
- };
563
+ if ((0, mobx_state_tree_1.isAlive)(self)) {
564
+ self.updateStats(stats);
565
+ superReload();
566
+ }
567
+ }
568
+ catch (e) {
569
+ self.setError(e);
570
+ }
571
+ },
572
+ afterAttach() {
573
+ (0, util_2.statsAutorun)(self);
574
+ (0, mobx_state_tree_1.addDisposer)(self, (0, mobx_1.autorun)(async () => {
575
+ const { rpcManager } = (0, util_1.getSession)(self);
576
+ const { adapterConfig } = self;
577
+ const sessionId = (0, tracks_1.getRpcSessionId)(self);
578
+ const sources = (await rpcManager.call(sessionId, 'MultiWiggleGetSources', {
579
+ sessionId,
580
+ adapterConfig,
581
+ }));
582
+ if ((0, mobx_state_tree_1.isAlive)(self)) {
583
+ self.setSources(sources);
584
+ }
585
+ }));
586
+ },
587
+ async renderSvg(opts) {
588
+ await (0, mobx_1.when)(() => self.statsReady && !!self.regionCannotBeRenderedText);
589
+ const { offsetPx } = (0, util_1.getContainingView)(self);
590
+ return (react_1.default.createElement(react_1.default.Fragment, null,
591
+ react_1.default.createElement("g", { id: "snpcov" }, await superRenderSvg(opts)),
592
+ react_1.default.createElement("g", { transform: `translate(${Math.max(-offsetPx, 0)})` },
593
+ react_1.default.createElement(WiggleDisplayComponent_1.StatBars, { model: self, orientation: "left", exportSVG: true }))));
594
+ },
595
+ };
596
+ });
674
597
  exports.default = stateModelFactory;
675
598
  //# sourceMappingURL=model.js.map