@jbrowse/plugin-wiggle 2.4.2 → 2.6.1

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