react-msaview 1.3.2 → 2.1.0

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 (245) hide show
  1. package/bundle/index.js +285 -97099
  2. package/dist/StructureModel.d.ts +9 -0
  3. package/dist/StructureModel.js +11 -0
  4. package/dist/StructureModel.js.map +1 -0
  5. package/dist/UniprotTrack.d.ts +27 -0
  6. package/dist/UniprotTrack.js +53 -0
  7. package/dist/UniprotTrack.js.map +1 -0
  8. package/dist/colorSchemes.d.ts +5 -11
  9. package/dist/colorSchemes.js +27 -32
  10. package/dist/colorSchemes.js.map +1 -0
  11. package/dist/components/BoxTrack.d.ts +6 -6
  12. package/dist/components/BoxTrack.js +9 -137
  13. package/dist/components/BoxTrack.js.map +1 -0
  14. package/dist/components/BoxTrackBlock.d.ts +8 -0
  15. package/dist/components/BoxTrackBlock.js +136 -0
  16. package/dist/components/BoxTrackBlock.js.map +1 -0
  17. package/dist/components/Header.d.ts +2 -2
  18. package/dist/components/Header.js +55 -48
  19. package/dist/components/Header.js.map +1 -0
  20. package/dist/components/ImportForm.d.ts +2 -2
  21. package/dist/components/ImportForm.js +59 -71
  22. package/dist/components/ImportForm.js.map +1 -0
  23. package/dist/components/MSABlock.d.ts +8 -0
  24. package/dist/components/MSABlock.js +103 -0
  25. package/dist/components/MSABlock.js.map +1 -0
  26. package/dist/components/MSACanvas.d.ts +2 -2
  27. package/dist/components/MSACanvas.js +32 -133
  28. package/dist/components/MSACanvas.js.map +1 -0
  29. package/dist/components/MSAMouseoverCanvas.d.ts +6 -0
  30. package/dist/components/MSAMouseoverCanvas.js +52 -0
  31. package/dist/components/MSAMouseoverCanvas.js.map +1 -0
  32. package/dist/components/MSAView.d.ts +2 -2
  33. package/dist/components/MSAView.js +17 -62
  34. package/dist/components/MSAView.js.map +1 -0
  35. package/dist/components/MultiAlignmentSelector.d.ts +6 -0
  36. package/dist/components/MultiAlignmentSelector.js +13 -0
  37. package/dist/components/MultiAlignmentSelector.js.map +1 -0
  38. package/dist/components/ResizeHandles.d.ts +5 -5
  39. package/dist/components/ResizeHandles.js +31 -32
  40. package/dist/components/ResizeHandles.js.map +1 -0
  41. package/dist/components/Rubberband.d.ts +3 -2
  42. package/dist/components/Rubberband.js +41 -64
  43. package/dist/components/Rubberband.js.map +1 -0
  44. package/dist/components/Ruler.d.ts +2 -16
  45. package/dist/components/Ruler.js +19 -88
  46. package/dist/components/Ruler.js.map +1 -0
  47. package/dist/components/TextTrack.d.ts +5 -5
  48. package/dist/components/TextTrack.js +23 -24
  49. package/dist/components/TextTrack.js.map +1 -0
  50. package/dist/components/Track.d.ts +5 -5
  51. package/dist/components/Track.js +41 -40
  52. package/dist/components/Track.js.map +1 -0
  53. package/dist/components/TreeBranchMenu.d.ts +14 -0
  54. package/dist/components/TreeBranchMenu.js +26 -0
  55. package/dist/components/TreeBranchMenu.js.map +1 -0
  56. package/dist/components/TreeCanvas.d.ts +2 -2
  57. package/dist/components/TreeCanvas.js +24 -356
  58. package/dist/components/TreeCanvas.js.map +1 -0
  59. package/dist/components/TreeCanvasBlock.d.ts +7 -0
  60. package/dist/components/TreeCanvasBlock.js +252 -0
  61. package/dist/components/TreeCanvasBlock.js.map +1 -0
  62. package/dist/components/TreeMenu.d.ts +12 -0
  63. package/dist/components/TreeMenu.js +56 -0
  64. package/dist/components/TreeMenu.js.map +1 -0
  65. package/dist/components/TreeRuler.d.ts +2 -2
  66. package/dist/components/TreeRuler.js +3 -3
  67. package/dist/components/TreeRuler.js.map +1 -0
  68. package/dist/components/VerticalGuide.d.ts +7 -0
  69. package/dist/components/VerticalGuide.js +30 -0
  70. package/dist/components/VerticalGuide.js.map +1 -0
  71. package/dist/components/ZoomControls.d.ts +6 -0
  72. package/dist/components/ZoomControls.js +58 -0
  73. package/dist/components/ZoomControls.js.map +1 -0
  74. package/dist/components/data/seq2.d.ts +3 -3
  75. package/dist/components/data/seq2.js +33 -3
  76. package/dist/components/data/seq2.js.map +1 -0
  77. package/dist/components/dialogs/AboutDlg.d.ts +4 -0
  78. package/dist/components/dialogs/AboutDlg.js +40 -0
  79. package/dist/components/dialogs/AboutDlg.js.map +1 -0
  80. package/{bundle/components → dist/components/dialogs}/AddTrackDlg.d.ts +3 -3
  81. package/dist/components/dialogs/AddTrackDlg.js +26 -0
  82. package/dist/components/dialogs/AddTrackDlg.js.map +1 -0
  83. package/dist/components/{AnnotationDlg.d.ts → dialogs/AnnotationDlg.d.ts} +3 -3
  84. package/dist/components/dialogs/AnnotationDlg.js +65 -0
  85. package/dist/components/dialogs/AnnotationDlg.js.map +1 -0
  86. package/dist/components/dialogs/DetailsDlg.d.ts +7 -0
  87. package/dist/components/dialogs/DetailsDlg.js +13 -0
  88. package/dist/components/dialogs/DetailsDlg.js.map +1 -0
  89. package/dist/components/dialogs/MoreInfoDlg.d.ts +6 -0
  90. package/dist/components/dialogs/MoreInfoDlg.js +11 -0
  91. package/dist/components/dialogs/MoreInfoDlg.js.map +1 -0
  92. package/dist/components/dialogs/SettingsDlg.d.ts +7 -0
  93. package/dist/components/dialogs/SettingsDlg.js +48 -0
  94. package/dist/components/dialogs/SettingsDlg.js.map +1 -0
  95. package/dist/components/dialogs/TrackInfoDlg.d.ts +9 -0
  96. package/{bundle/components → dist/components/dialogs}/TrackInfoDlg.js +12 -13
  97. package/dist/components/dialogs/TrackInfoDlg.js.map +1 -0
  98. package/dist/components/dialogs/TracklistDlg.d.ts +7 -0
  99. package/dist/components/dialogs/TracklistDlg.js +18 -0
  100. package/dist/components/dialogs/TracklistDlg.js.map +1 -0
  101. package/{bundle/components/Ruler.d.ts → dist/components/util.d.ts} +1 -6
  102. package/dist/components/util.js +68 -0
  103. package/dist/components/util.js.map +1 -0
  104. package/dist/index.d.ts +2 -4
  105. package/dist/index.js +3 -3
  106. package/dist/index.js.map +1 -0
  107. package/dist/layout.js +14 -20
  108. package/dist/layout.js.map +1 -0
  109. package/dist/model.d.ts +114 -97
  110. package/dist/model.js +248 -486
  111. package/dist/model.js.map +1 -0
  112. package/dist/parseNewick.d.ts +1 -5
  113. package/dist/parseNewick.js +11 -8
  114. package/dist/parseNewick.js.map +1 -0
  115. package/dist/parsers/ClustalMSA.d.ts +6 -18
  116. package/dist/parsers/ClustalMSA.js +55 -64
  117. package/dist/parsers/ClustalMSA.js.map +1 -0
  118. package/dist/parsers/FastaMSA.d.ts +5 -12
  119. package/dist/parsers/FastaMSA.js +55 -64
  120. package/dist/parsers/FastaMSA.js.map +1 -0
  121. package/dist/parsers/StockholmMSA.d.ts +10 -17
  122. package/dist/parsers/StockholmMSA.js +81 -110
  123. package/dist/parsers/StockholmMSA.js.map +1 -0
  124. package/dist/util.d.ts +34 -7
  125. package/dist/util.js +76 -24
  126. package/dist/util.js.map +1 -0
  127. package/dist/version.d.ts +1 -0
  128. package/dist/version.js +2 -0
  129. package/dist/version.js.map +1 -0
  130. package/package.json +34 -34
  131. package/src/StructureModel.ts +11 -0
  132. package/src/UniprotTrack.ts +59 -0
  133. package/src/colorSchemes.ts +520 -0
  134. package/src/components/BoxTrack.tsx +33 -0
  135. package/src/components/BoxTrackBlock.tsx +198 -0
  136. package/src/components/Header.tsx +106 -0
  137. package/src/components/ImportForm.tsx +192 -0
  138. package/src/components/MSABlock.tsx +164 -0
  139. package/src/components/MSACanvas.tsx +142 -0
  140. package/src/components/MSAMouseoverCanvas.tsx +87 -0
  141. package/src/components/MSAView.tsx +88 -0
  142. package/src/components/MultiAlignmentSelector.tsx +33 -0
  143. package/src/components/ResizeHandles.tsx +137 -0
  144. package/src/components/Rubberband.tsx +270 -0
  145. package/src/components/Ruler.tsx +123 -0
  146. package/src/components/TextTrack.tsx +120 -0
  147. package/src/components/Track.tsx +153 -0
  148. package/src/components/TreeBranchMenu.tsx +67 -0
  149. package/src/components/TreeCanvas.tsx +128 -0
  150. package/src/components/TreeCanvasBlock.tsx +359 -0
  151. package/src/components/TreeMenu.tsx +105 -0
  152. package/src/components/TreeRuler.tsx +12 -0
  153. package/src/components/VerticalGuide.tsx +50 -0
  154. package/src/components/ZoomControls.tsx +78 -0
  155. package/src/components/data/seq2.ts +35 -0
  156. package/src/components/dialogs/AboutDlg.tsx +58 -0
  157. package/src/components/dialogs/AddTrackDlg.tsx +74 -0
  158. package/src/components/dialogs/AnnotationDlg.tsx +144 -0
  159. package/src/components/dialogs/DetailsDlg.tsx +28 -0
  160. package/src/components/dialogs/MoreInfoDlg.tsx +21 -0
  161. package/src/components/dialogs/SettingsDlg.tsx +154 -0
  162. package/src/components/dialogs/TrackInfoDlg.tsx +59 -0
  163. package/src/components/dialogs/TracklistDlg.tsx +59 -0
  164. package/src/components/util.ts +93 -0
  165. package/src/declare.d.ts +1 -0
  166. package/src/index.ts +2 -0
  167. package/src/layout.ts +83 -0
  168. package/src/model.ts +793 -0
  169. package/{bundle/parseNewick.d.ts → src/parseNewick.ts} +35 -5
  170. package/src/parsers/ClustalMSA.ts +79 -0
  171. package/src/parsers/FastaMSA.ts +82 -0
  172. package/src/parsers/StockholmMSA.ts +137 -0
  173. package/src/util.ts +142 -0
  174. package/src/version.ts +1 -0
  175. package/bundle/colorSchemes.d.ts +0 -16
  176. package/bundle/colorSchemes.js +0 -455
  177. package/bundle/components/AboutDlg.d.ts +0 -5
  178. package/bundle/components/AboutDlg.js +0 -47
  179. package/bundle/components/AddTrackDlg.js +0 -26
  180. package/bundle/components/AnnotationDlg.d.ts +0 -11
  181. package/bundle/components/AnnotationDlg.js +0 -77
  182. package/bundle/components/BoxTrack.d.ts +0 -7
  183. package/bundle/components/BoxTrack.js +0 -143
  184. package/bundle/components/DetailsDlg.d.ts +0 -8
  185. package/bundle/components/DetailsDlg.js +0 -12
  186. package/bundle/components/Header.d.ts +0 -6
  187. package/bundle/components/Header.js +0 -63
  188. package/bundle/components/ImportForm.d.ts +0 -6
  189. package/bundle/components/ImportForm.js +0 -89
  190. package/bundle/components/MSACanvas.d.ts +0 -6
  191. package/bundle/components/MSACanvas.js +0 -210
  192. package/bundle/components/MSAView.d.ts +0 -6
  193. package/bundle/components/MSAView.js +0 -88
  194. package/bundle/components/MoreInfoDlg.d.ts +0 -6
  195. package/bundle/components/MoreInfoDlg.js +0 -11
  196. package/bundle/components/ResizeHandles.d.ts +0 -8
  197. package/bundle/components/ResizeHandles.js +0 -110
  198. package/bundle/components/Rubberband.d.ts +0 -7
  199. package/bundle/components/Rubberband.js +0 -196
  200. package/bundle/components/Ruler.js +0 -121
  201. package/bundle/components/SettingsDlg.d.ts +0 -8
  202. package/bundle/components/SettingsDlg.js +0 -40
  203. package/bundle/components/TextTrack.d.ts +0 -7
  204. package/bundle/components/TextTrack.js +0 -72
  205. package/bundle/components/Track.d.ts +0 -11
  206. package/bundle/components/Track.js +0 -81
  207. package/bundle/components/TrackInfoDlg.d.ts +0 -6
  208. package/bundle/components/TracklistDlg.d.ts +0 -8
  209. package/bundle/components/TracklistDlg.js +0 -18
  210. package/bundle/components/TreeCanvas.d.ts +0 -6
  211. package/bundle/components/TreeCanvas.js +0 -431
  212. package/bundle/components/TreeRuler.d.ts +0 -6
  213. package/bundle/components/TreeRuler.js +0 -8
  214. package/bundle/components/data/seq2.d.ts +0 -3
  215. package/bundle/components/data/seq2.js +0 -3
  216. package/bundle/index.d.ts +0 -4
  217. package/bundle/layout.d.ts +0 -23
  218. package/bundle/layout.js +0 -53
  219. package/bundle/model.d.ts +0 -364
  220. package/bundle/model.js +0 -894
  221. package/bundle/parseNewick.js +0 -94
  222. package/bundle/parsers/ClustalMSA.d.ts +0 -39
  223. package/bundle/parsers/ClustalMSA.js +0 -77
  224. package/bundle/parsers/FastaMSA.d.ts +0 -26
  225. package/bundle/parsers/FastaMSA.js +0 -78
  226. package/bundle/parsers/StockholmMSA.d.ts +0 -75
  227. package/bundle/parsers/StockholmMSA.js +0 -142
  228. package/bundle/util.d.ts +0 -17
  229. package/bundle/util.js +0 -33
  230. package/dist/components/AboutDlg.d.ts +0 -5
  231. package/dist/components/AboutDlg.js +0 -50
  232. package/dist/components/AddTrackDlg.d.ts +0 -8
  233. package/dist/components/AddTrackDlg.js +0 -26
  234. package/dist/components/AnnotationDlg.js +0 -77
  235. package/dist/components/DetailsDlg.d.ts +0 -8
  236. package/dist/components/DetailsDlg.js +0 -12
  237. package/dist/components/MoreInfoDlg.d.ts +0 -6
  238. package/dist/components/MoreInfoDlg.js +0 -11
  239. package/dist/components/SettingsDlg.d.ts +0 -8
  240. package/dist/components/SettingsDlg.js +0 -40
  241. package/dist/components/TrackInfoDlg.d.ts +0 -6
  242. package/dist/components/TrackInfoDlg.js +0 -33
  243. package/dist/components/TracklistDlg.d.ts +0 -8
  244. package/dist/components/TracklistDlg.js +0 -18
  245. package/dist/components/package.json +0 -62
package/dist/model.js CHANGED
@@ -1,210 +1,23 @@
1
- var __assign = (this && this.__assign) || function () {
2
- __assign = Object.assign || function(t) {
3
- for (var s, i = 1, n = arguments.length; i < n; i++) {
4
- s = arguments[i];
5
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
6
- t[p] = s[p];
7
- }
8
- return t;
9
- };
10
- return __assign.apply(this, arguments);
11
- };
12
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
13
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
14
- return new (P || (P = Promise))(function (resolve, reject) {
15
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
16
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
17
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
18
- step((generator = generator.apply(thisArg, _arguments || [])).next());
19
- });
20
- };
21
- var __generator = (this && this.__generator) || function (thisArg, body) {
22
- var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
23
- return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
24
- function verb(n) { return function (v) { return step([n, v]); }; }
25
- function step(op) {
26
- if (f) throw new TypeError("Generator is already executing.");
27
- while (_) try {
28
- 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;
29
- if (y = 0, t) op = [op[0] & 2, t.value];
30
- switch (op[0]) {
31
- case 0: case 1: t = op; break;
32
- case 4: _.label++; return { value: op[1], done: false };
33
- case 5: _.label++; y = op[1]; op = [0]; continue;
34
- case 7: op = _.ops.pop(); _.trys.pop(); continue;
35
- default:
36
- if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
37
- if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
38
- if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
39
- if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
40
- if (t[2]) _.ops.pop();
41
- _.trys.pop(); continue;
42
- }
43
- op = body.call(thisArg, _);
44
- } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
45
- if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
46
- }
47
- };
48
- var __rest = (this && this.__rest) || function (s, e) {
49
- var t = {};
50
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
51
- t[p] = s[p];
52
- if (s != null && typeof Object.getOwnPropertySymbols === "function")
53
- for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
54
- if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
55
- t[p[i]] = s[p[i]];
56
- }
57
- return t;
58
- };
59
- var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
60
- if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
61
- if (ar || !(i in from)) {
62
- if (!ar) ar = Array.prototype.slice.call(from, 0, i);
63
- ar[i] = from[i];
64
- }
65
- }
66
- return to.concat(ar || Array.prototype.slice.call(from));
67
- };
68
1
  import { cast, types, addDisposer } from 'mobx-state-tree';
69
2
  import { hierarchy, cluster } from 'd3-hierarchy';
70
- import { ascending, max } from 'd3-array';
3
+ import { ascending } from 'd3-array';
71
4
  import { FileLocation, ElementId } from '@jbrowse/core/util/types/mst';
72
5
  import { openLocation } from '@jbrowse/core/util/io';
73
6
  import { autorun } from 'mobx';
74
7
  import BaseViewModel from '@jbrowse/core/pluggableElementTypes/models/BaseViewModel';
75
8
  import Stockholm from 'stockholm-js';
9
+ // locals
10
+ import { collapse, generateNodeIds, maxLength, setBrLength, skipBlanks, clamp, } from './util';
11
+ import TextTrack from './components/TextTrack';
12
+ import BoxTrack from './components/BoxTrack';
76
13
  import ClustalMSA from './parsers/ClustalMSA';
77
14
  import StockholmMSA from './parsers/StockholmMSA';
78
15
  import FastaMSA from './parsers/FastaMSA';
79
16
  import parseNewick from './parseNewick';
80
17
  import colorSchemes from './colorSchemes';
81
- import { generateNodeIds } from './util';
82
- import TextTrack from './components/TextTrack';
83
- import BoxTrack from './components/BoxTrack';
84
- function skipBlanks(blanks, arg) {
85
- var s = '';
86
- var b = 0;
87
- for (var j = 0; j < arg.length; j++) {
88
- if (j === blanks[b]) {
89
- b++;
90
- }
91
- else {
92
- s += arg[j];
93
- }
94
- }
95
- return s;
96
- }
97
- function setBrLength(d, y0, k) {
98
- var _a;
99
- //@ts-ignore
100
- d.len = (y0 += Math.max(d.data.length || 0, 0)) * k;
101
- (_a = d.children) === null || _a === void 0 ? void 0 : _a.forEach(function (d) {
102
- setBrLength(d, y0, k);
103
- });
104
- }
105
- function maxLength(d) {
106
- return (d.data.length || 1) + (d.children ? max(d.children, maxLength) : 0);
107
- }
108
- // Collapse the node and all it's children, from
109
- // https://bl.ocks.org/d3noob/43a860bc0024792f8803bba8ca0d5ecd
110
- function collapse(d) {
111
- if (d.children) {
112
- //@ts-ignore
113
- d._children = d.children;
114
- //@ts-ignore
115
- d._children.forEach(collapse);
116
- //@ts-ignore
117
- d.children = null;
118
- }
119
- }
120
- function clamp(min, num, max) {
121
- return Math.min(Math.max(num, min), max);
122
- }
123
- var StructureModel = types.model({
124
- id: types.identifier,
125
- structure: types.model({
126
- pdb: types.string,
127
- startPos: types.number,
128
- endPos: types.number,
129
- }),
130
- range: types.maybe(types.string),
131
- });
132
- var UniprotTrack = types
133
- .model({
134
- id: types.string,
135
- accession: types.string,
136
- name: types.string,
137
- associatedRowName: types.string,
138
- height: types.optional(types.number, 100),
139
- })
140
- .volatile(function () { return ({
141
- error: undefined,
142
- data: undefined,
143
- }); })
144
- .actions(function (self) { return ({
145
- setError: function (error) {
146
- self.error = error;
147
- },
148
- setData: function (data) {
149
- self.data = data;
150
- },
151
- }); })
152
- .actions(function (self) { return ({
153
- afterCreate: function () {
154
- var _this = this;
155
- addDisposer(self, autorun(function () { return __awaiter(_this, void 0, void 0, function () {
156
- var accession, url, response, text, e_1;
157
- return __generator(this, function (_a) {
158
- switch (_a.label) {
159
- case 0:
160
- _a.trys.push([0, 3, , 4]);
161
- accession = self.accession;
162
- url = "https://www.uniprot.org/uniprot/".concat(accession, ".gff");
163
- return [4 /*yield*/, fetch(url)];
164
- case 1:
165
- response = _a.sent();
166
- if (!response.ok) {
167
- throw new Error("HTTP ".concat(response.status, " ").concat(response.statusText, " fetching ").concat(url));
168
- }
169
- return [4 /*yield*/, response.text()];
170
- case 2:
171
- text = _a.sent();
172
- self.setData(text);
173
- return [3 /*break*/, 4];
174
- case 3:
175
- e_1 = _a.sent();
176
- self.setError(e_1);
177
- return [3 /*break*/, 4];
178
- case 4: return [2 /*return*/];
179
- }
180
- });
181
- }); }));
182
- },
183
- }); })
184
- .views(function (self) { return ({
185
- get loading() {
186
- return !self.data;
187
- },
188
- get features() {
189
- var _a;
190
- return (_a = self.data) === null || _a === void 0 ? void 0 : _a.split('\n').map(function (f) { return f.trim(); }).filter(function (f) { return !!f; }).filter(function (f) { return !f.startsWith('#'); }).map(function (f) {
191
- var _a = f.split('\t'), seq_id = _a[0], source = _a[1], type = _a[2], start = _a[3], end = _a[4], score = _a[5], strand = _a[6], phase = _a[7], col9 = _a[8];
192
- return __assign({ seq_id: seq_id, source: source, type: type, start: +start, end: +end, score: +score, strand: strand, phase: phase }, Object.fromEntries(col9
193
- .split(';')
194
- .map(function (f) { return f.trim(); })
195
- .filter(function (f) { return !!f; })
196
- .map(function (f) { return f.split('='); })
197
- .map(function (_a) {
198
- var key = _a[0], val = _a[1];
199
- return [
200
- key.trim(),
201
- decodeURIComponent(val).trim().split(',').join(' '),
202
- ];
203
- })));
204
- });
205
- },
206
- }); });
207
- var MSAModel = types
18
+ import { UniprotTrack } from './UniprotTrack';
19
+ import { StructureModel } from './StructureModel';
20
+ const MSAModel = types
208
21
  .model('MsaView', {
209
22
  id: ElementId,
210
23
  type: types.literal('MsaView'),
@@ -244,45 +57,46 @@ var MSAModel = types
244
57
  tree: types.maybe(types.string),
245
58
  msa: types.maybe(types.string),
246
59
  })
247
- .actions(function (self) { return ({
248
- setTree: function (tree) {
60
+ .actions(self => ({
61
+ setTree(tree) {
249
62
  self.tree = tree;
250
63
  },
251
- setMSA: function (msa) {
64
+ setMSA(msa) {
252
65
  self.msa = msa;
253
66
  },
254
- }); }), { tree: '', msa: '' }),
67
+ })), { tree: '', msa: '' }),
255
68
  })
256
- .volatile(function () { return ({
69
+ .volatile(() => ({
70
+ rulerHeight: 20,
257
71
  error: undefined,
258
72
  margin: { left: 20, top: 20 },
259
- //eslint-disable-next-line @typescript-eslint/no-explicit-any
73
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
260
74
  DialogComponent: undefined,
261
- //eslint-disable-next-line @typescript-eslint/no-explicit-any
75
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
262
76
  DialogProps: undefined,
263
77
  // annotations
264
78
  annotPos: undefined,
265
- }); })
266
- .actions(function (self) { return ({
267
- //eslint-disable-next-line @typescript-eslint/no-explicit-any
268
- setDialogComponent: function (dlg, props) {
79
+ }))
80
+ .actions(self => ({
81
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
82
+ setDialogComponent(dlg, props) {
269
83
  self.DialogComponent = dlg;
270
84
  self.DialogProps = props;
271
85
  },
272
- setHeight: function (height) {
86
+ setHeight(height) {
273
87
  self.height = height;
274
88
  },
275
- addStructureToSelection: function (elt) {
89
+ addStructureToSelection(elt) {
276
90
  self.selectedStructures.push(elt);
277
91
  },
278
- removeStructureFromSelection: function (elt) {
279
- var r = self.selectedStructures.find(function (node) { return node.id === elt.id; });
92
+ removeStructureFromSelection(elt) {
93
+ const r = self.selectedStructures.find(node => node.id === elt.id);
280
94
  if (r) {
281
95
  self.selectedStructures.remove(r);
282
96
  }
283
97
  },
284
- toggleStructureSelection: function (elt) {
285
- var r = self.selectedStructures.find(function (node) { return node.id === elt.id; });
98
+ toggleStructureSelection(elt) {
99
+ const r = self.selectedStructures.find(node => node.id === elt.id);
286
100
  if (r) {
287
101
  self.selectedStructures.remove(r);
288
102
  }
@@ -290,51 +104,48 @@ var MSAModel = types
290
104
  self.selectedStructures.push(elt);
291
105
  }
292
106
  },
293
- clearSelectedStructures: function () {
294
- //@ts-ignore
107
+ clearSelectedStructures() {
108
+ // @ts-expect-error
295
109
  self.selectedStructures = [];
296
110
  },
297
- setError: function (error) {
298
- if (error) {
299
- console.error(error);
300
- }
111
+ setError(error) {
301
112
  self.error = error;
302
113
  },
303
- setMousePos: function (col, row) {
114
+ setMousePos(col, row) {
304
115
  self.mouseCol = col;
305
116
  self.mouseRow = row;
306
117
  },
307
- setRowHeight: function (n) {
118
+ setRowHeight(n) {
308
119
  self.rowHeight = n;
309
120
  },
310
- setColWidth: function (n) {
121
+ setColWidth(n) {
311
122
  self.colWidth = n;
312
123
  },
313
- setColorSchemeName: function (name) {
124
+ setColorSchemeName(name) {
314
125
  self.colorSchemeName = name;
315
126
  },
316
- setScrollY: function (n) {
127
+ setScrollY(n) {
317
128
  self.scrollY = n;
318
129
  },
319
- setScrollX: function (n) {
130
+ setScrollX(n) {
320
131
  self.scrollX = n;
321
132
  },
322
- setTreeAreaWidth: function (n) {
133
+ setTreeAreaWidth(n) {
323
134
  self.treeAreaWidth = n;
324
135
  },
325
- setTreeWidth: function (n) {
136
+ setTreeWidth(n) {
326
137
  self.treeWidth = n;
327
138
  },
328
- setCurrentAlignment: function (n) {
139
+ setCurrentAlignment(n) {
329
140
  self.currentAlignment = n;
330
141
  },
331
- toggleLabelsAlignRight: function () {
142
+ toggleLabelsAlignRight() {
332
143
  self.labelsAlignRight = !self.labelsAlignRight;
333
144
  },
334
- toggleDrawTree: function () {
145
+ toggleDrawTree() {
335
146
  self.drawTree = !self.drawTree;
336
147
  },
337
- toggleCollapsed: function (node) {
148
+ toggleCollapsed(node) {
338
149
  if (self.collapsed.includes(node)) {
339
150
  self.collapsed.remove(node);
340
151
  }
@@ -342,110 +153,71 @@ var MSAModel = types
342
153
  self.collapsed.push(node);
343
154
  }
344
155
  },
345
- setShowOnly: function (node) {
156
+ setShowOnly(node) {
346
157
  self.showOnly = node;
347
158
  },
348
- toggleBranchLen: function () {
159
+ toggleBranchLen() {
349
160
  self.showBranchLen = !self.showBranchLen;
350
161
  },
351
- toggleBgColor: function () {
162
+ toggleBgColor() {
352
163
  self.bgColor = !self.bgColor;
353
164
  },
354
- toggleNodeBubbles: function () {
165
+ toggleNodeBubbles() {
355
166
  self.drawNodeBubbles = !self.drawNodeBubbles;
356
167
  },
357
- setData: function (data) {
168
+ setData(data) {
358
169
  self.data = cast(data);
359
170
  },
360
- setMSAFilehandle: function (msaFilehandle) {
361
- return __awaiter(this, void 0, void 0, function () {
362
- return __generator(this, function (_a) {
363
- self.msaFilehandle = msaFilehandle;
364
- return [2 /*return*/];
365
- });
366
- });
171
+ async setMSAFilehandle(msaFilehandle) {
172
+ self.msaFilehandle = msaFilehandle;
367
173
  },
368
- setTreeFilehandle: function (treeFilehandle) {
369
- return __awaiter(this, void 0, void 0, function () {
370
- var r;
371
- return __generator(this, function (_a) {
372
- switch (_a.label) {
373
- case 0:
374
- if (!(treeFilehandle && 'blobId' in treeFilehandle)) return [3 /*break*/, 2];
375
- return [4 /*yield*/, openLocation(treeFilehandle).readFile('utf8')];
376
- case 1:
377
- r = (_a.sent());
378
- this.setTree(r);
379
- return [3 /*break*/, 3];
380
- case 2:
381
- self.treeFilehandle = treeFilehandle;
382
- _a.label = 3;
383
- case 3: return [2 /*return*/];
384
- }
385
- });
386
- });
174
+ async setTreeFilehandle(treeFilehandle) {
175
+ if (treeFilehandle && 'blobId' in treeFilehandle) {
176
+ const r = await openLocation(treeFilehandle).readFile('utf8');
177
+ this.setTree(r);
178
+ }
179
+ else {
180
+ self.treeFilehandle = treeFilehandle;
181
+ }
387
182
  },
388
- setMSA: function (result) {
183
+ setMSA(result) {
389
184
  self.data.setMSA(result);
390
185
  },
391
- setTree: function (result) {
186
+ setTree(result) {
392
187
  self.data.setTree(result);
393
188
  },
394
- afterCreate: function () {
395
- var _this = this;
396
- addDisposer(self, autorun(function () { return __awaiter(_this, void 0, void 0, function () {
397
- var treeFilehandle, _a, e_2;
398
- return __generator(this, function (_b) {
399
- switch (_b.label) {
400
- case 0:
401
- treeFilehandle = self.treeFilehandle;
402
- if (!treeFilehandle) return [3 /*break*/, 4];
403
- _b.label = 1;
404
- case 1:
405
- _b.trys.push([1, 3, , 4]);
406
- _a = this.setTree;
407
- return [4 /*yield*/, openLocation(treeFilehandle).readFile('utf8')];
408
- case 2:
409
- _a.apply(this, [(_b.sent())]);
410
- return [3 /*break*/, 4];
411
- case 3:
412
- e_2 = _b.sent();
413
- this.setError(e_2);
414
- return [3 /*break*/, 4];
415
- case 4: return [2 /*return*/];
189
+ afterCreate() {
190
+ addDisposer(self, autorun(async () => {
191
+ const { treeFilehandle } = self;
192
+ if (treeFilehandle) {
193
+ try {
194
+ this.setTree(await openLocation(treeFilehandle).readFile('utf8'));
416
195
  }
417
- });
418
- }); }));
419
- addDisposer(self, autorun(function () { return __awaiter(_this, void 0, void 0, function () {
420
- var msaFilehandle, _a, e_3;
421
- return __generator(this, function (_b) {
422
- switch (_b.label) {
423
- case 0:
424
- msaFilehandle = self.msaFilehandle;
425
- if (!msaFilehandle) return [3 /*break*/, 4];
426
- _b.label = 1;
427
- case 1:
428
- _b.trys.push([1, 3, , 4]);
429
- _a = this.setMSA;
430
- return [4 /*yield*/, openLocation(msaFilehandle).readFile('utf8')];
431
- case 2:
432
- _a.apply(this, [(_b.sent())]);
433
- return [3 /*break*/, 4];
434
- case 3:
435
- e_3 = _b.sent();
436
- this.setError(e_3);
437
- return [3 /*break*/, 4];
438
- case 4: return [2 /*return*/];
196
+ catch (e) {
197
+ console.error(e);
198
+ this.setError(e);
439
199
  }
440
- });
441
- }); }));
442
- },
443
- }); })
444
- .views(function (self) {
445
- var oldBlocksX = [];
446
- var oldBlocksY = [];
447
- var oldValX = 0;
448
- var oldValY = 0;
200
+ }
201
+ }));
202
+ addDisposer(self, autorun(async () => {
203
+ const { msaFilehandle } = self;
204
+ if (msaFilehandle) {
205
+ try {
206
+ this.setMSA(await openLocation(msaFilehandle).readFile('utf8'));
207
+ }
208
+ catch (e) {
209
+ console.error(e);
210
+ this.setError(e);
211
+ }
212
+ }
213
+ }));
214
+ },
215
+ }))
216
+ .views(self => {
217
+ let oldBlocksX = [];
218
+ let oldBlocksY = [];
219
+ let oldValX = 0;
220
+ let oldValY = 0;
449
221
  return {
450
222
  get initialized() {
451
223
  return ((self.data.msa ||
@@ -455,10 +227,10 @@ var MSAModel = types
455
227
  !self.error);
456
228
  },
457
229
  get blocksX() {
458
- var scrollX = self.scrollX, size = self.blockSize, colWidth = self.colWidth;
459
- var ret = -(size * Math.floor(scrollX / size)) - size;
460
- var b = [];
461
- for (var i = ret; i < ret + size * 3; i += size) {
230
+ const { scrollX, blockSize: size, colWidth } = self;
231
+ const ret = -(size * Math.floor(scrollX / size)) - size;
232
+ const b = [];
233
+ for (let i = ret; i < ret + size * 3; i += size) {
462
234
  if (i + size > 0) {
463
235
  b.push(i);
464
236
  }
@@ -471,10 +243,10 @@ var MSAModel = types
471
243
  return oldBlocksX;
472
244
  },
473
245
  get blocksY() {
474
- var scrollY = self.scrollY, size = self.blockSize, rowHeight = self.rowHeight;
475
- var ret = -(size * Math.floor(scrollY / size)) - 2 * size;
476
- var b = [];
477
- for (var i = ret; i < ret + size * 3; i += size) {
246
+ const { scrollY, blockSize: size, rowHeight } = self;
247
+ const ret = -(size * Math.floor(scrollY / size)) - 2 * size;
248
+ const b = [];
249
+ for (let i = ret; i < ret + size * 3; i += size) {
478
250
  if (i + size > 0) {
479
251
  b.push(i);
480
252
  }
@@ -488,9 +260,9 @@ var MSAModel = types
488
260
  },
489
261
  };
490
262
  })
491
- .views(function (self) { return ({
263
+ .views(self => ({
492
264
  get blocks2d() {
493
- return self.blocksY.map(function (by) { return self.blocksX.map(function (bx) { return [bx, by]; }); }).flat();
265
+ return self.blocksY.flatMap(by => self.blocksX.map(bx => [bx, by]));
494
266
  },
495
267
  get done() {
496
268
  return self.initialized && (self.data.msa || self.data.tree);
@@ -498,16 +270,17 @@ var MSAModel = types
498
270
  get colorScheme() {
499
271
  return colorSchemes[self.colorSchemeName];
500
272
  },
501
- get alignmentDetails() {
273
+ get header() {
502
274
  var _a;
503
- return ((_a = this.MSA) === null || _a === void 0 ? void 0 : _a.getDetails()) || {};
275
+ return ((_a = this.MSA) === null || _a === void 0 ? void 0 : _a.getHeader()) || {};
504
276
  },
505
- getRowDetails: function (name) {
506
- var _a, _b;
507
- //@ts-ignore
508
- var details = (_b = (_a = this.MSA) === null || _a === void 0 ? void 0 : _a.getRowDetails) === null || _b === void 0 ? void 0 : _b.call(_a, name);
509
- var matches = name.match(/\S+\/(\d+)-(\d+)/);
510
- return __assign(__assign({}, details), (matches && { range: { start: +matches[1], end: +matches[2] } }));
277
+ getRowData(name) {
278
+ var _a;
279
+ const matches = name.match(/\S+\/(\d+)-(\d+)/);
280
+ return {
281
+ data: ((_a = this.MSA) === null || _a === void 0 ? void 0 : _a.getRowData(name)) || {},
282
+ ...(matches && { range: { start: +matches[1], end: +matches[2] } }),
283
+ };
511
284
  },
512
285
  get currentAlignmentName() {
513
286
  return this.alignmentNames[self.currentAlignment];
@@ -523,7 +296,7 @@ var MSAModel = types
523
296
  return [];
524
297
  },
525
298
  get MSA() {
526
- var text = self.data.msa;
299
+ const text = self.data.msa;
527
300
  if (text) {
528
301
  if (Stockholm.sniff(text)) {
529
302
  return new StockholmMSA(text, self.currentAlignment);
@@ -545,38 +318,39 @@ var MSAModel = types
545
318
  var _a;
546
319
  return self.data.tree
547
320
  ? generateNodeIds(parseNewick(self.data.tree))
548
- : ((_a = this.MSA) === null || _a === void 0 ? void 0 : _a.getTree()) || { noTree: true };
321
+ : ((_a = this.MSA) === null || _a === void 0 ? void 0 : _a.getTree()) || {
322
+ noTree: true,
323
+ branchset: [],
324
+ id: 'empty',
325
+ name: 'empty',
326
+ };
549
327
  },
550
328
  get rowNames() {
551
- return this.hierarchy.leaves().map(function (node) { return node.data.name; });
329
+ return this.hierarchy.leaves().map(node => node.data.name);
552
330
  },
553
331
  get mouseOverRowName() {
554
332
  return self.mouseRow !== undefined
555
333
  ? this.rowNames[self.mouseRow]
556
334
  : undefined;
557
335
  },
558
- getMouseOverResidue: function (rowName) {
336
+ getMouseOverResidue(rowName) {
559
337
  return this.columns[rowName];
560
338
  },
561
339
  get root() {
562
- var hier = hierarchy(this.tree, function (d) { return d.branchset; })
563
- .sum(function (d) { return (d.branchset ? 0 : 1); })
564
- .sort(function (a, b) {
565
- return ascending(a.data.length || 1, b.data.length || 1);
566
- });
340
+ let hier = hierarchy(this.tree, d => d.branchset)
341
+ .sum(d => (d.branchset ? 0 : 1))
342
+ .sort((a, b) => ascending(a.data.length || 1, b.data.length || 1));
567
343
  if (self.showOnly) {
568
- var res = hier.find(function (node) { return node.data.id === self.showOnly; });
344
+ const res = hier.find(node => node.data.id === self.showOnly);
569
345
  if (res) {
570
346
  hier = res;
571
347
  }
572
348
  }
573
349
  if (self.collapsed.length) {
574
350
  self.collapsed
575
- .map(function (collapsedId) {
576
- return hier.find(function (node) { return node.data.id === collapsedId; });
577
- })
578
- .filter(function (f) { return !!f; })
579
- .map(function (node) { return collapse(node); });
351
+ .map(collapsedId => hier.find(node => node.data.id === collapsedId))
352
+ .filter((f) => !!f)
353
+ .map(node => collapse(node));
580
354
  }
581
355
  return hier;
582
356
  },
@@ -585,34 +359,23 @@ var MSAModel = types
585
359
  return ((_a = this.MSA) === null || _a === void 0 ? void 0 : _a.getStructures()) || {};
586
360
  },
587
361
  get inverseStructures() {
588
- var map = Object.entries(this.structures)
589
- .map(function (_a) {
590
- var key = _a[0], val = _a[1];
591
- return val.map(function (pdbEntry) { return [pdbEntry.pdb, { id: key }]; });
592
- })
593
- .flat();
594
- return Object.fromEntries(map);
362
+ return Object.fromEntries(Object.entries(this.structures).flatMap(([key, val]) => val.map(pdbEntry => [pdbEntry.pdb, { id: key }])));
595
363
  },
596
364
  get msaAreaWidth() {
597
- //@ts-ignore
365
+ // @ts-expect-error
598
366
  return self.width - self.treeAreaWidth;
599
367
  },
600
368
  get blanks() {
601
- var _this = this;
602
369
  var _a;
603
- var blanks = [];
604
- var strs = this.hierarchy
370
+ const blanks = [];
371
+ const strs = this.hierarchy
605
372
  .leaves()
606
- .map(function (_a) {
607
- var _b;
608
- var data = _a.data;
609
- return (_b = _this.MSA) === null || _b === void 0 ? void 0 : _b.getRow(data.name);
610
- })
611
- .filter(function (item) { return !!item; });
612
- for (var i = 0; i < ((_a = strs[0]) === null || _a === void 0 ? void 0 : _a.length); i++) {
613
- var counter = 0;
614
- for (var j = 0; j < strs.length; j++) {
615
- if (strs[j][i] === '-') {
373
+ .map(({ data }) => { var _a; return (_a = this.MSA) === null || _a === void 0 ? void 0 : _a.getRow(data.name); })
374
+ .filter((item) => !!item);
375
+ for (let i = 0; i < ((_a = strs[0]) === null || _a === void 0 ? void 0 : _a.length); i++) {
376
+ let counter = 0;
377
+ for (const str of strs) {
378
+ if (str[i] === '-') {
616
379
  counter++;
617
380
  }
618
381
  }
@@ -623,39 +386,27 @@ var MSAModel = types
623
386
  return blanks;
624
387
  },
625
388
  get rows() {
626
- var _this = this;
627
389
  return this.hierarchy
628
390
  .leaves()
629
- .map(function (_a) {
630
- var _b;
631
- var data = _a.data;
632
- return [data.name, (_b = _this.MSA) === null || _b === void 0 ? void 0 : _b.getRow(data.name)];
633
- })
634
- .filter(function (f) { return !!f[1]; });
391
+ .map(({ data }) => { var _a; return [data.name, (_a = this.MSA) === null || _a === void 0 ? void 0 : _a.getRow(data.name)]; })
392
+ .filter((f) => !!f[1]);
635
393
  },
636
394
  get columns() {
637
- var rows = this.rows;
638
- var cols = this.columns2d;
639
- return Object.fromEntries(rows.map(function (row, index) { return [row[0], cols[index]]; }));
395
+ return Object.fromEntries(this.rows.map((row, index) => [row[0], this.columns2d[index]]));
640
396
  },
641
397
  get columns2d() {
642
- var strs = this.rows.map(function (r) { return r[1]; });
643
- var ret = [];
644
- for (var i = 0; i < strs.length; i++) {
645
- ret.push(skipBlanks(this.blanks, strs[i]));
646
- }
647
- return ret;
398
+ return this.rows.map(r => r[1]).map(str => skipBlanks(this.blanks, str));
648
399
  },
649
400
  get colStats() {
650
- var r = [];
651
- var m = this.columns2d;
652
- for (var i = 0; i < m.length; i++) {
653
- for (var j = 0; j < m[i].length; j++) {
654
- var l = r[j] || {};
655
- if (!l[m[i][j]]) {
656
- l[m[i][j]] = 0;
401
+ const r = [];
402
+ const columns = this.columns2d;
403
+ for (const column of columns) {
404
+ for (let j = 0; j < column.length; j++) {
405
+ const l = r[j] || {};
406
+ if (!l[column[j]]) {
407
+ l[column[j]] = 0;
657
408
  }
658
- l[m[i][j]]++;
409
+ l[column[j]]++;
659
410
  r[j] = l;
660
411
  }
661
412
  }
@@ -663,43 +414,45 @@ var MSAModel = types
663
414
  },
664
415
  // generates a new tree that is clustered with x,y positions
665
416
  get hierarchy() {
666
- var root = this.root;
667
- var clust = cluster()
417
+ const root = this.root;
418
+ const clust = cluster()
668
419
  .size([this.totalHeight, self.treeWidth])
669
- .separation(function () { return 1; });
420
+ .separation(() => 1);
670
421
  clust(root);
671
- setBrLength(root,
672
- //@ts-ignore
673
- (root.data.length = 0), self.treeWidth / maxLength(root));
422
+ setBrLength(root, (root.data.length = 0), self.treeWidth / maxLength(root));
674
423
  return root;
675
424
  },
676
425
  get totalHeight() {
677
426
  return this.root.leaves().length * self.rowHeight;
678
427
  },
679
- }); })
680
- .actions(function (self) { return ({
681
- addUniprotTrack: function (node) {
682
- if (self.boxTracks.find(function (t) { return t.name === node.name; })) {
428
+ }))
429
+ .actions(self => ({
430
+ addUniprotTrack(node) {
431
+ if (self.boxTracks.some(t => t.name === node.name)) {
683
432
  if (self.turnedOffTracks.has(node.name)) {
684
433
  this.toggleTrack(node.name);
685
434
  }
686
435
  }
687
436
  else {
688
- self.boxTracks.push(__assign(__assign({}, node), { id: node.name, associatedRowName: node.name }));
437
+ self.boxTracks.push({
438
+ ...node,
439
+ id: node.name,
440
+ associatedRowName: node.name,
441
+ });
689
442
  }
690
443
  },
691
- doScrollY: function (deltaY) {
444
+ doScrollY(deltaY) {
692
445
  self.scrollY = clamp(-self.totalHeight + 10, self.scrollY + deltaY, 0);
693
446
  },
694
- doScrollX: function (deltaX) {
447
+ doScrollX(deltaX) {
695
448
  self.scrollX = clamp(-self.numColumns + (self.msaAreaWidth - 100), self.scrollX + deltaX, 0);
696
449
  },
697
- setMouseoveredColumn: function (n, chain, file) {
450
+ setMouseoveredColumn(n, chain, file) {
698
451
  var _a;
699
- var j = 0;
700
- var i = 0;
701
- var id = (self.inverseStructures[file.slice(0, -4)] || {}).id;
702
- var row = (_a = self.MSA) === null || _a === void 0 ? void 0 : _a.getRow(id);
452
+ let j = 0;
453
+ let i = 0;
454
+ const { id } = self.inverseStructures[file.slice(0, -4)] || {};
455
+ const row = (_a = self.MSA) === null || _a === void 0 ? void 0 : _a.getRow(id);
703
456
  if (row) {
704
457
  for (i = 0; i < row.length && j < n; i++) {
705
458
  if (row[i] !== '-') {
@@ -712,7 +465,7 @@ var MSAModel = types
712
465
  self.mouseCol = undefined;
713
466
  }
714
467
  },
715
- toggleTrack: function (id) {
468
+ toggleTrack(id) {
716
469
  if (self.turnedOffTracks.has(id)) {
717
470
  self.turnedOffTracks.delete(id);
718
471
  }
@@ -720,8 +473,8 @@ var MSAModel = types
720
473
  self.turnedOffTracks.set(id, true);
721
474
  }
722
475
  },
723
- }); })
724
- .views(function (self) { return ({
476
+ }))
477
+ .views(self => ({
725
478
  get secondaryStructureConsensus() {
726
479
  var _a;
727
480
  return (_a = self.MSA) === null || _a === void 0 ? void 0 : _a.secondaryStructureConsensus;
@@ -731,36 +484,39 @@ var MSAModel = types
731
484
  return (_a = self.MSA) === null || _a === void 0 ? void 0 : _a.seqConsensus;
732
485
  },
733
486
  get conservation() {
734
- var m = self.columns2d;
735
- if (m.length) {
736
- for (var i = 0; i < m[0].length; i++) {
737
- var col = [];
738
- for (var j = 0; j < m.length; j++) {
739
- col.push(m[j][i]);
487
+ if (self.columns2d.length) {
488
+ for (let i = 0; i < self.columns2d[0].length; i++) {
489
+ const col = [];
490
+ for (const column of self.columns2d) {
491
+ col.push(column[i]);
740
492
  }
741
493
  }
742
494
  }
743
495
  return ['a'];
744
496
  },
745
497
  get tracks() {
746
- var blanks = self.blanks;
747
- var adapterTracks = self.MSA
748
- ? self.MSA.tracks.map(function (track) {
749
- var data = track.data;
498
+ const blanks = self.blanks;
499
+ const adapterTracks = self.MSA
500
+ ? self.MSA.tracks.map(track => {
501
+ const { data } = track;
750
502
  return {
751
- model: __assign(__assign({}, track), { data: data ? skipBlanks(blanks, data) : undefined, height: self.rowHeight }),
503
+ model: {
504
+ ...track,
505
+ data: data ? skipBlanks(blanks, data) : undefined,
506
+ height: self.rowHeight,
507
+ },
752
508
  ReactComponent: TextTrack,
753
509
  };
754
510
  })
755
511
  : [];
756
- var boxTracks = self.boxTracks
512
+ const boxTracks = self.boxTracks
757
513
  // filter out tracks that are associated with hidden rows
758
- .filter(function (track) { return !!self.rows.find(function (row) { return row[0] === track.name; }); })
759
- .map(function (track) { return ({
514
+ .filter(track => !!self.rows.some(row => row[0] === track.name))
515
+ .map(track => ({
760
516
  model: track,
761
517
  ReactComponent: BoxTrack,
762
- }); });
763
- var annotationTracks = self.annotatedRegions.length > 0
518
+ }));
519
+ const annotationTracks = self.annotatedRegions.length > 0
764
520
  ? [
765
521
  {
766
522
  model: {
@@ -769,13 +525,10 @@ var MSAModel = types
769
525
  id: 'annotations',
770
526
  name: 'User-created annotations',
771
527
  data: self.annotatedRegions
772
- .map(function (region) {
773
- var attrs = region.attributes
528
+ .map(region => {
529
+ const attrs = region.attributes
774
530
  ? Object.entries(region.attributes)
775
- .map(function (_a) {
776
- var k = _a[0], v = _a[1];
777
- return "".concat(k, "=").concat(v.join(','));
778
- })
531
+ .map(([k, v]) => `${k}=${v.join(',')}`)
779
532
  .join(';')
780
533
  : '.';
781
534
  return [
@@ -796,69 +549,72 @@ var MSAModel = types
796
549
  },
797
550
  ]
798
551
  : [];
799
- return __spreadArray(__spreadArray(__spreadArray([], adapterTracks, true), boxTracks, true), annotationTracks, true);
552
+ return [...adapterTracks, ...boxTracks, ...annotationTracks];
800
553
  },
801
554
  get turnedOnTracks() {
802
- return this.tracks.filter(function (f) { return !self.turnedOffTracks.has(f.model.id); });
555
+ return this.tracks.filter(f => !self.turnedOffTracks.has(f.model.id));
803
556
  },
804
557
  // returns coordinate in the current relative coordinate scheme
805
- pxToBp: function (coord) {
558
+ pxToBp(coord) {
806
559
  return Math.floor((coord - self.scrollX) / self.colWidth);
807
560
  },
808
- rowSpecificBpToPx: function (rowName, position) {
561
+ rowSpecificBpToPx(rowName, position) {
809
562
  var _a;
810
- var rowNames = self.rowNames, rows = self.rows, blanks = self.blanks;
811
- var index = rowNames.indexOf(rowName);
812
- var row = rows[index][1];
813
- var details = self.getRowDetails(rowName);
814
- var offset = ((_a = details.range) === null || _a === void 0 ? void 0 : _a.start) || 0;
815
- var current = position - offset;
563
+ const { rowNames, rows, blanks } = self;
564
+ const index = rowNames.indexOf(rowName);
565
+ const row = rows[index][1];
566
+ const details = self.getRowData(rowName);
567
+ const offset = ((_a = details.range) === null || _a === void 0 ? void 0 : _a.start) || 0;
568
+ const current = position - offset;
816
569
  if (current < 0) {
817
570
  return 0;
818
571
  }
819
- var j = 0;
820
- var i = 0;
572
+ let j = 0;
573
+ let i = 0;
821
574
  for (; i < row.length; i++) {
822
575
  if (row[i] !== '-' && j++ === current) {
823
576
  break;
824
577
  }
825
578
  }
826
- var count = 0;
827
- for (var k = 0; k < row.length; k++) {
828
- if (blanks.indexOf(k) !== -1 && k < i + 1) {
579
+ let count = 0;
580
+ for (let k = 0; k < row.length; k++) {
581
+ if (blanks.includes(k) && k < i + 1) {
829
582
  count++;
830
583
  }
831
584
  }
832
585
  return i - count;
833
586
  },
834
- globalBpToPx: function (position) {
587
+ globalBpToPx(position) {
835
588
  var _a;
836
- var count = 0;
837
- for (var k = 0; k < ((_a = self.rows[0]) === null || _a === void 0 ? void 0 : _a[1].length); k++) {
838
- if (self.blanks.indexOf(k) !== -1 && k < position + 1) {
589
+ let count = 0;
590
+ for (let k = 0; k < ((_a = self.rows[0]) === null || _a === void 0 ? void 0 : _a[1].length); k++) {
591
+ if (self.blanks.includes(k) && k < position + 1) {
839
592
  count++;
840
593
  }
841
594
  }
842
595
  return position - count;
843
596
  },
844
- relativePxToBp: function (rowName, position) {
845
- var rowNames = self.rowNames, rows = self.rows;
846
- var index = rowNames.indexOf(rowName);
847
- var row = rows[index][1];
848
- var k = 0;
849
- for (var i = 0; i < position; i++) {
850
- if (row[i] !== '-') {
851
- k++;
852
- }
853
- else if (k >= position) {
854
- break;
597
+ relativePxToBp(rowName, position) {
598
+ const { rowNames, rows } = self;
599
+ const index = rowNames.indexOf(rowName);
600
+ if (index !== -1) {
601
+ const row = rows[index][1];
602
+ let k = 0;
603
+ for (let i = 0; i < position; i++) {
604
+ if (row[i] !== '-') {
605
+ k++;
606
+ }
607
+ else if (k >= position) {
608
+ break;
609
+ }
855
610
  }
611
+ return k;
856
612
  }
857
- return k;
613
+ return 0;
858
614
  },
859
- getPos: function (pos) {
860
- var j = 0;
861
- for (var i = 0, k = 0; i < pos; i++, j++) {
615
+ getPos(pos) {
616
+ let j = 0;
617
+ for (let i = 0, k = 0; i < pos; i++, j++) {
862
618
  while (j === self.blanks[k]) {
863
619
  k++;
864
620
  j++;
@@ -866,31 +622,37 @@ var MSAModel = types
866
622
  }
867
623
  return j;
868
624
  },
869
- }); })
870
- .actions(function (self) { return ({
871
- addAnnotation: function (start, end, attributes) {
625
+ }))
626
+ .actions(self => ({
627
+ addAnnotation(start, end, attributes) {
872
628
  self.annotatedRegions.push({
873
629
  start: self.getPos(start),
874
630
  end: self.getPos(end),
875
- attributes: attributes,
631
+ attributes,
876
632
  });
877
633
  },
878
- setOffsets: function (left, right) {
879
- self.annotPos = { left: left, right: right };
634
+ setOffsets(left, right) {
635
+ self.annotPos = { left, right };
880
636
  },
881
- clearAnnotPos: function () {
637
+ clearAnnotPos() {
882
638
  self.annotPos = undefined;
883
639
  },
884
- }); });
885
- var model = types.snapshotProcessor(types.compose(BaseViewModel, MSAModel), {
886
- postProcessor: function (result) {
887
- var _a = result.data, tree = _a.tree, msa = _a.msa, rest = __rest(result
888
- // remove the MSA/tree data from the tree if the filehandle available in
889
- // which case it can be reloaded on refresh
890
- , ["data"]);
640
+ }));
641
+ const model = types.snapshotProcessor(types.compose(BaseViewModel, MSAModel), {
642
+ postProcessor(result) {
643
+ const snap = result;
644
+ const { data: { tree, msa }, ...rest } = snap;
891
645
  // remove the MSA/tree data from the tree if the filehandle available in
892
646
  // which case it can be reloaded on refresh
893
- return __assign({ data: __assign(__assign({}, (!result.treeFilehandle && { tree: tree })), (!result.msaFilehandle && { msa: msa })) }, rest);
647
+ return {
648
+ data: {
649
+ // https://andreasimonecosta.dev/posts/the-shortest-way-to-conditionally-insert-properties-into-an-object-literal/
650
+ ...(!result.treeFilehandle && { tree }),
651
+ ...(!result.msaFilehandle && { msa }),
652
+ },
653
+ ...rest,
654
+ };
894
655
  },
895
656
  });
896
657
  export default model;
658
+ //# sourceMappingURL=model.js.map