react-msaview 5.1.1 → 5.2.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 (190) hide show
  1. package/README.md +41 -8
  2. package/bundle/index.js +17 -17
  3. package/bundle/index.js.LICENSE.txt +1 -1
  4. package/bundle/index.js.map +1 -1
  5. package/dist/calculateBlocks.d.ts +4 -10
  6. package/dist/calculateBlocks.js +12 -20
  7. package/dist/calculateBlocks.js.map +1 -1
  8. package/dist/components/ConservationTrack.js +20 -37
  9. package/dist/components/ConservationTrack.js.map +1 -1
  10. package/dist/components/MSAView.js +8 -1
  11. package/dist/components/MSAView.js.map +1 -1
  12. package/dist/components/ResizeHandles.d.ts +3 -0
  13. package/dist/components/ResizeHandles.js +60 -105
  14. package/dist/components/ResizeHandles.js.map +1 -1
  15. package/dist/components/TextTrack.js +25 -34
  16. package/dist/components/TextTrack.js.map +1 -1
  17. package/dist/components/Track.js +1 -1
  18. package/dist/components/Track.js.map +1 -1
  19. package/dist/components/VerticalScrollbar.js +2 -2
  20. package/dist/components/VerticalScrollbar.js.map +1 -1
  21. package/dist/components/dialogs/ExportSVGDialog.js +20 -20
  22. package/dist/components/dialogs/ExportSVGDialog.js.map +1 -1
  23. package/dist/components/dialogs/InterProScanDialog.js +6 -1
  24. package/dist/components/dialogs/InterProScanDialog.js.map +1 -1
  25. package/dist/components/dialogs/UserProvidedDomainsDialog.js +1 -2
  26. package/dist/components/dialogs/UserProvidedDomainsDialog.js.map +1 -1
  27. package/dist/components/header/ColorSchemeMenu.js +1 -1
  28. package/dist/components/header/ColorSchemeMenu.js.map +1 -1
  29. package/dist/components/header/FileMenu.js +3 -2
  30. package/dist/components/header/FileMenu.js.map +1 -1
  31. package/dist/components/header/Header.js +1 -1
  32. package/dist/components/header/HeaderInfoArea.js +28 -8
  33. package/dist/components/header/HeaderInfoArea.js.map +1 -1
  34. package/dist/components/header/MSASettingsMenu.js +1 -1
  35. package/dist/components/header/MSASettingsMenu.js.map +1 -1
  36. package/dist/components/header/TreeSettingsMenu.js +1 -1
  37. package/dist/components/header/TreeSettingsMenu.js.map +1 -1
  38. package/dist/components/header/ZoomControls.js +7 -2
  39. package/dist/components/header/ZoomControls.js.map +1 -1
  40. package/dist/components/header/ZoomMenu.js +9 -0
  41. package/dist/components/header/ZoomMenu.js.map +1 -1
  42. package/dist/components/header/settingsMenuItems.js +24 -8
  43. package/dist/components/header/settingsMenuItems.js.map +1 -1
  44. package/dist/components/minimap/Minimap.js +6 -17
  45. package/dist/components/minimap/Minimap.js.map +1 -1
  46. package/dist/components/minimap/MinimapSVG.js +7 -17
  47. package/dist/components/minimap/MinimapSVG.js.map +1 -1
  48. package/dist/components/minimap/minimapLayout.d.ts +9 -0
  49. package/dist/components/minimap/minimapLayout.js +15 -0
  50. package/dist/components/minimap/minimapLayout.js.map +1 -0
  51. package/dist/components/msa/MSACanvas.js +6 -1
  52. package/dist/components/msa/MSACanvas.js.map +1 -1
  53. package/dist/components/msa/MSACanvasBlock.js +5 -1
  54. package/dist/components/msa/MSACanvasBlock.js.map +1 -1
  55. package/dist/components/msa/MSAMouseoverCanvas.js +2 -2
  56. package/dist/components/msa/MSAMouseoverCanvas.js.map +1 -1
  57. package/dist/components/msa/getVisibleLeaves.d.ts +6 -0
  58. package/dist/components/msa/getVisibleLeaves.js +9 -0
  59. package/dist/components/msa/getVisibleLeaves.js.map +1 -0
  60. package/dist/components/msa/renderBoxFeatureCanvasBlock.d.ts +2 -1
  61. package/dist/components/msa/renderBoxFeatureCanvasBlock.js +5 -6
  62. package/dist/components/msa/renderBoxFeatureCanvasBlock.js.map +1 -1
  63. package/dist/components/msa/renderMSABlock.d.ts +2 -1
  64. package/dist/components/msa/renderMSABlock.js +100 -88
  65. package/dist/components/msa/renderMSABlock.js.map +1 -1
  66. package/dist/components/msa/renderMSAMouseover.js +5 -4
  67. package/dist/components/msa/renderMSAMouseover.js.map +1 -1
  68. package/dist/components/msa/visibleColRange.d.ts +8 -0
  69. package/dist/components/msa/visibleColRange.js +10 -0
  70. package/dist/components/msa/visibleColRange.js.map +1 -0
  71. package/dist/components/renderCtx.d.ts +7 -0
  72. package/dist/components/renderCtx.js +2 -0
  73. package/dist/components/renderCtx.js.map +1 -0
  74. package/dist/components/tracks/renderTracksSvg.d.ts +6 -5
  75. package/dist/components/tracks/renderTracksSvg.js +13 -5
  76. package/dist/components/tracks/renderTracksSvg.js.map +1 -1
  77. package/dist/components/tree/TreeCanvas.js.map +1 -1
  78. package/dist/components/tree/TreeCanvasBlock.js +2 -10
  79. package/dist/components/tree/TreeCanvasBlock.js.map +1 -1
  80. package/dist/components/tree/renderTreeCanvas.d.ts +5 -4
  81. package/dist/components/tree/renderTreeCanvas.js +18 -26
  82. package/dist/components/tree/renderTreeCanvas.js.map +1 -1
  83. package/dist/components/util.d.ts +0 -14
  84. package/dist/components/util.js +0 -58
  85. package/dist/components/util.js.map +1 -1
  86. package/dist/constants.d.ts +4 -0
  87. package/dist/constants.js +7 -0
  88. package/dist/constants.js.map +1 -1
  89. package/dist/flatToTree.js +6 -0
  90. package/dist/flatToTree.js.map +1 -1
  91. package/dist/hierarchy.d.ts +3 -1
  92. package/dist/hierarchy.js +142 -89
  93. package/dist/hierarchy.js.map +1 -1
  94. package/dist/index.d.ts +1 -0
  95. package/dist/index.js +8 -0
  96. package/dist/index.js.map +1 -1
  97. package/dist/launchInterProScan.js +22 -9
  98. package/dist/launchInterProScan.js.map +1 -1
  99. package/dist/measureTextCanvas.js +2 -1
  100. package/dist/measureTextCanvas.js.map +1 -1
  101. package/dist/model.d.ts +234 -176
  102. package/dist/model.js +285 -259
  103. package/dist/model.js.map +1 -1
  104. package/dist/parseAsn1.js +8 -2
  105. package/dist/parseAsn1.js.map +1 -1
  106. package/dist/renderToSvg.d.ts +1 -1
  107. package/dist/renderToSvg.js +43 -46
  108. package/dist/renderToSvg.js.map +1 -1
  109. package/dist/rowCoordinateCalculations.d.ts +0 -9
  110. package/dist/rowCoordinateCalculations.js +0 -20
  111. package/dist/rowCoordinateCalculations.js.map +1 -1
  112. package/dist/setFontSize.d.ts +3 -0
  113. package/dist/setFontSize.js +14 -0
  114. package/dist/setFontSize.js.map +1 -0
  115. package/dist/useDevicePixelRatio.d.ts +1 -0
  116. package/dist/useDevicePixelRatio.js +27 -0
  117. package/dist/useDevicePixelRatio.js.map +1 -0
  118. package/dist/useWheelScroll.d.ts +3 -1
  119. package/dist/useWheelScroll.js +64 -22
  120. package/dist/useWheelScroll.js.map +1 -1
  121. package/dist/util.d.ts +5 -0
  122. package/dist/util.js +59 -1
  123. package/dist/util.js.map +1 -1
  124. package/dist/version.d.ts +1 -1
  125. package/dist/version.js +1 -1
  126. package/dist/webpack.js +0 -1
  127. package/dist/webpack.js.map +1 -1
  128. package/dist/wheelZoom.d.ts +4 -0
  129. package/dist/wheelZoom.js +43 -0
  130. package/dist/wheelZoom.js.map +1 -0
  131. package/package.json +5 -5
  132. package/src/calculateBlocks.ts +18 -51
  133. package/src/components/ConservationTrack.tsx +20 -45
  134. package/src/components/MSAView.tsx +10 -1
  135. package/src/components/ResizeHandles.tsx +101 -113
  136. package/src/components/TextTrack.tsx +31 -38
  137. package/src/components/Track.tsx +1 -1
  138. package/src/components/VerticalScrollbar.tsx +2 -2
  139. package/src/components/dialogs/ExportSVGDialog.tsx +27 -17
  140. package/src/components/dialogs/InterProScanDialog.tsx +6 -1
  141. package/src/components/dialogs/UserProvidedDomainsDialog.tsx +1 -2
  142. package/src/components/header/ColorSchemeMenu.tsx +1 -0
  143. package/src/components/header/FileMenu.tsx +3 -1
  144. package/src/components/header/Header.tsx +1 -1
  145. package/src/components/header/HeaderInfoArea.tsx +32 -7
  146. package/src/components/header/MSASettingsMenu.tsx +1 -0
  147. package/src/components/header/TreeSettingsMenu.tsx +1 -0
  148. package/src/components/header/ZoomControls.tsx +14 -1
  149. package/src/components/header/ZoomMenu.tsx +10 -0
  150. package/src/components/header/settingsMenuItems.ts +24 -8
  151. package/src/components/minimap/Minimap.tsx +6 -20
  152. package/src/components/minimap/MinimapSVG.tsx +10 -27
  153. package/src/components/minimap/minimapLayout.ts +17 -0
  154. package/src/components/msa/MSACanvas.tsx +9 -0
  155. package/src/components/msa/MSACanvasBlock.tsx +7 -1
  156. package/src/components/msa/MSAMouseoverCanvas.tsx +4 -3
  157. package/src/components/msa/getVisibleLeaves.ts +21 -0
  158. package/src/components/msa/renderBoxFeatureCanvasBlock.ts +9 -9
  159. package/src/components/msa/renderMSABlock.ts +123 -125
  160. package/src/components/msa/renderMSAMouseover.ts +5 -4
  161. package/src/components/msa/visibleColRange.ts +17 -0
  162. package/src/components/renderCtx.ts +29 -0
  163. package/src/components/tracks/renderTracksSvg.ts +20 -10
  164. package/src/components/tree/TreeCanvas.tsx +3 -1
  165. package/src/components/tree/TreeCanvasBlock.tsx +2 -12
  166. package/src/components/tree/renderTreeCanvas.ts +27 -30
  167. package/src/components/util.ts +0 -81
  168. package/src/constants.ts +8 -0
  169. package/src/flatToTree.test.ts +30 -0
  170. package/src/flatToTree.ts +10 -1
  171. package/src/hierarchy.test.ts +53 -1
  172. package/src/hierarchy.ts +153 -100
  173. package/src/index.ts +8 -0
  174. package/src/launchInterProScan.ts +33 -11
  175. package/src/measureTextCanvas.ts +3 -1
  176. package/src/model.ts +359 -306
  177. package/src/parseAsn1.test.ts +6 -0
  178. package/src/parseAsn1.ts +11 -3
  179. package/src/renderToSvg.tsx +99 -95
  180. package/src/rowCoordinateCalculations.test.ts +0 -51
  181. package/src/rowCoordinateCalculations.ts +0 -23
  182. package/src/setFontSize.test.ts +33 -0
  183. package/src/setFontSize.ts +20 -0
  184. package/src/useDevicePixelRatio.ts +29 -0
  185. package/src/useWheelScroll.ts +79 -21
  186. package/src/util.ts +60 -1
  187. package/src/version.ts +1 -1
  188. package/src/webpack.ts +0 -1
  189. package/src/wheelZoom.test.ts +46 -0
  190. package/src/wheelZoom.ts +47 -0
package/dist/hierarchy.js CHANGED
@@ -1,115 +1,149 @@
1
+ // All traversals below are iterative (explicit stack / reversed-preorder) rather
2
+ // than recursive: phylogenetic trees can be deeply unbalanced (a caterpillar tree
3
+ // has depth ~= leaf count), which overflows the JS call stack on recursion.
4
+ // Pre-order: every parent precedes all of its descendants. Iterating the result
5
+ // in reverse therefore yields a valid post-order (children before parents), which
6
+ // the accumulation helpers rely on.
7
+ export function descendants(node) {
8
+ const result = [];
9
+ const stack = [node];
10
+ while (stack.length > 0) {
11
+ const n = stack.pop();
12
+ result.push(n);
13
+ if (n.children) {
14
+ for (let i = n.children.length - 1; i >= 0; i--) {
15
+ stack.push(n.children[i]);
16
+ }
17
+ }
18
+ }
19
+ return result;
20
+ }
1
21
  function computeHeight(node) {
2
- let h = 0;
3
- if (node.children) {
4
- for (const child of node.children) {
5
- const ch = computeHeight(child) + 1;
6
- if (ch > h) {
7
- h = ch;
22
+ const nodes = descendants(node);
23
+ for (let i = nodes.length - 1; i >= 0; i--) {
24
+ const n = nodes[i];
25
+ let h = 0;
26
+ if (n.children) {
27
+ for (const child of n.children) {
28
+ if (child.height + 1 > h) {
29
+ h = child.height + 1;
30
+ }
8
31
  }
9
32
  }
33
+ n.height = h;
10
34
  }
11
- node.height = h;
12
- return h;
13
35
  }
14
- function wrap(data, childrenAccessor, parent, depth) {
15
- const kids = childrenAccessor(data);
16
- const node = {
36
+ export function hierarchy(data, childrenAccessor) {
37
+ const root = {
17
38
  data,
18
39
  children: null,
19
- parent,
20
- depth,
40
+ parent: null,
41
+ depth: 0,
21
42
  height: 0,
22
43
  };
23
- if (kids?.length) {
24
- node.children = kids.map(d => wrap(d, childrenAccessor, node, depth + 1));
44
+ const stack = [root];
45
+ while (stack.length > 0) {
46
+ const node = stack.pop();
47
+ const kids = childrenAccessor(node.data);
48
+ if (kids?.length) {
49
+ node.children = kids.map(d => ({
50
+ data: d,
51
+ children: null,
52
+ parent: node,
53
+ depth: node.depth + 1,
54
+ height: 0,
55
+ }));
56
+ for (const child of node.children) {
57
+ stack.push(child);
58
+ }
59
+ }
25
60
  }
26
- return node;
27
- }
28
- export function hierarchy(data, childrenAccessor) {
29
- const root = wrap(data, childrenAccessor, null, 0);
30
61
  computeHeight(root);
31
62
  return root;
32
63
  }
33
64
  export function sum(node, valueFn) {
34
- function visit(n) {
65
+ const nodes = descendants(node);
66
+ for (let i = nodes.length - 1; i >= 0; i--) {
67
+ const n = nodes[i];
35
68
  let s = valueFn(n.data);
36
69
  if (n.children) {
37
70
  for (const child of n.children) {
38
- s += visit(child);
71
+ s += child.value;
39
72
  }
40
73
  }
41
74
  n.value = s;
42
- return s;
43
75
  }
44
- visit(node);
45
76
  return node;
46
77
  }
47
78
  export function sort(node, compareFn) {
48
- function visit(n) {
79
+ const stack = [node];
80
+ while (stack.length > 0) {
81
+ const n = stack.pop();
49
82
  if (n.children) {
50
83
  n.children.sort(compareFn);
51
84
  for (const child of n.children) {
52
- visit(child);
85
+ stack.push(child);
53
86
  }
54
87
  }
55
88
  }
56
- visit(node);
57
89
  return node;
58
90
  }
59
91
  export function find(node, predicate) {
60
- if (predicate(node)) {
61
- return node;
62
- }
63
- if (node.children) {
64
- for (const child of node.children) {
65
- const result = find(child, predicate);
66
- if (result) {
67
- return result;
92
+ const stack = [node];
93
+ let found;
94
+ while (stack.length > 0 && found === undefined) {
95
+ const n = stack.pop();
96
+ if (predicate(n)) {
97
+ found = n;
98
+ }
99
+ else if (n.children) {
100
+ for (let i = n.children.length - 1; i >= 0; i--) {
101
+ stack.push(n.children[i]);
68
102
  }
69
103
  }
70
104
  }
71
- return undefined;
105
+ return found;
72
106
  }
73
107
  export function leaves(node) {
74
108
  const result = [];
75
- function visit(n) {
109
+ const stack = [node];
110
+ while (stack.length > 0) {
111
+ const n = stack.pop();
76
112
  if (n.children) {
77
- for (const child of n.children) {
78
- visit(child);
113
+ for (let i = n.children.length - 1; i >= 0; i--) {
114
+ stack.push(n.children[i]);
79
115
  }
80
116
  }
81
117
  else {
82
118
  result.push(n);
83
119
  }
84
120
  }
85
- visit(node);
86
121
  return result;
87
122
  }
88
- export function descendants(node) {
123
+ export function links(node) {
89
124
  const result = [];
90
- function visit(n) {
91
- result.push(n);
92
- if (n.children) {
93
- for (const child of n.children) {
94
- visit(child);
95
- }
96
- }
97
- }
98
- visit(node);
125
+ forEachLink(node, (source, target) => {
126
+ result.push({ source, target });
127
+ });
99
128
  return result;
100
129
  }
101
- export function links(node) {
102
- const result = [];
103
- function visit(n) {
130
+ export function forEachLink(node, cb) {
131
+ const stack = [node];
132
+ while (stack.length > 0) {
133
+ const n = stack.pop();
104
134
  if (n.children) {
105
- for (const child of n.children) {
106
- result.push({ source: n, target: child });
107
- visit(child);
135
+ for (let i = n.children.length - 1; i >= 0; i--) {
136
+ const child = n.children[i];
137
+ cb(n, child);
138
+ stack.push(child);
108
139
  }
109
140
  }
110
141
  }
111
- visit(node);
112
- return result;
142
+ }
143
+ export function forEachDescendant(node, cb) {
144
+ for (const n of descendants(node)) {
145
+ cb(n);
146
+ }
113
147
  }
114
148
  export function clusterLayout(root, sizeX, sizeY) {
115
149
  const leafNodes = leaves(root);
@@ -118,30 +152,30 @@ export function clusterLayout(root, sizeX, sizeY) {
118
152
  for (let i = 0; i < n; i++) {
119
153
  leafNodes[i].x = (i + 0.5) * step;
120
154
  }
121
- function assignX(node) {
122
- if (!node.children) {
123
- return;
124
- }
125
- for (const child of node.children) {
126
- assignX(child);
127
- }
128
- let sum = 0;
129
- for (const child of node.children) {
130
- sum += child.x;
155
+ // x of an internal node is the mean of its children's x, so process in
156
+ // post-order (children before parents)
157
+ const nodes = descendants(root);
158
+ for (let i = nodes.length - 1; i >= 0; i--) {
159
+ const node = nodes[i];
160
+ if (node.children) {
161
+ let sum = 0;
162
+ for (const child of node.children) {
163
+ sum += child.x;
164
+ }
165
+ node.x = sum / node.children.length;
131
166
  }
132
- node.x = sum / node.children.length;
133
167
  }
134
- assignX(root);
135
168
  const rootHeight = root.height;
136
- function assignY(node, depth) {
169
+ const stack = [{ node: root, depth: 0 }];
170
+ while (stack.length > 0) {
171
+ const { node, depth } = stack.pop();
137
172
  node.y = rootHeight === 0 ? sizeY : (depth / rootHeight) * sizeY;
138
173
  if (node.children) {
139
174
  for (const child of node.children) {
140
- assignY(child, depth + 1);
175
+ stack.push({ node: child, depth: depth + 1 });
141
176
  }
142
177
  }
143
178
  }
144
- assignY(root, 0);
145
179
  }
146
180
  export function collapse(node) {
147
181
  if (node.children) {
@@ -154,35 +188,54 @@ export function collapse(node) {
154
188
  // x. Memoizes onto node.depthToLeaf since the layout walks the tree repeatedly.
155
189
  // See https://github.com/emmanuelparadis/ape/blob/master/R/plot.phylo.R
156
190
  export function calcDepthToLeaf(node) {
157
- if (node.depthToLeaf === undefined) {
158
- let maxDepth = 0;
159
- if (node.children) {
160
- for (const child of node.children) {
161
- maxDepth = Math.max(maxDepth, 1 + calcDepthToLeaf(child));
191
+ const nodes = descendants(node);
192
+ for (let i = nodes.length - 1; i >= 0; i--) {
193
+ const n = nodes[i];
194
+ if (n.depthToLeaf === undefined) {
195
+ let maxDepth = 0;
196
+ if (n.children) {
197
+ for (const child of n.children) {
198
+ maxDepth = Math.max(maxDepth, 1 + child.depthToLeaf);
199
+ }
162
200
  }
201
+ n.depthToLeaf = maxDepth;
163
202
  }
164
- node.depthToLeaf = maxDepth;
165
203
  }
166
204
  return node.depthToLeaf;
167
205
  }
168
206
  export function findMaxBranchLen(node) {
169
- let maxLen = node.len || 0;
170
- if (node.children) {
171
- for (const child of node.children) {
172
- maxLen = Math.max(maxLen, findMaxBranchLen(child));
173
- }
207
+ let maxLen = 0;
208
+ for (const n of descendants(node)) {
209
+ maxLen = Math.max(maxLen, n.len || 0);
174
210
  }
175
211
  return maxLen;
176
212
  }
213
+ // Max root-to-leaf sum of branch lengths within the subtree at d
177
214
  export function maxLength(d) {
178
- return ((d.data.length || 0) +
179
- (d.children ? d.children.reduce((m, c) => Math.max(m, maxLength(c)), 0) : 0));
215
+ const nodes = descendants(d);
216
+ const pathLen = new Map();
217
+ for (let i = nodes.length - 1; i >= 0; i--) {
218
+ const n = nodes[i];
219
+ let childMax = 0;
220
+ if (n.children) {
221
+ for (const child of n.children) {
222
+ childMax = Math.max(childMax, pathLen.get(child));
223
+ }
224
+ }
225
+ pathLen.set(n, (n.data.length || 0) + childMax);
226
+ }
227
+ return pathLen.get(d);
180
228
  }
181
229
  export function setBrLength(d, y0, k) {
182
- d.len = (y0 += Math.max(d.data.length || 0, 0)) * k;
183
- if (d.children) {
184
- for (const child of d.children) {
185
- setBrLength(child, y0, k);
230
+ const stack = [{ node: d, y0 }];
231
+ while (stack.length > 0) {
232
+ const { node, y0: acc } = stack.pop();
233
+ const next = acc + Math.max(node.data.length || 0, 0);
234
+ node.len = next * k;
235
+ if (node.children) {
236
+ for (const child of node.children) {
237
+ stack.push({ node: child, y0: next });
238
+ }
186
239
  }
187
240
  }
188
241
  }
@@ -1 +1 @@
1
- {"version":3,"file":"hierarchy.js","sourceRoot":"","sources":["../src/hierarchy.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"hierarchy.js","sourceRoot":"","sources":["../src/hierarchy.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -1,3 +1,4 @@
1
+ export { renderToSvg } from './renderToSvg.tsx';
1
2
  export { default as MSAView } from './components/Loading.tsx';
2
3
  export { default as MSAViewer } from './components/MSAViewer.tsx';
3
4
  export { type MsaViewModel, default as MSAModelF } from './model.ts';
package/dist/index.js CHANGED
@@ -1,3 +1,11 @@
1
+ // PUBLIC API — consumed by external JBrowse 2 plugins. Changing or removing any
2
+ // export here is a breaking change for downstream repos:
3
+ // - jbrowse-plugin-msaview (wraps MSAModelF + MSAView into a JBrowse view)
4
+ // - jbrowse-plugin-protein3d (drives MSA<->structure hover/highlight sync)
5
+ // Those plugins also reach into the MsaViewModel instance at runtime; the model
6
+ // members they rely on (e.g. mouseCol/setMousePos, setHighlightedColumns,
7
+ // seqPosToVisibleCol/visibleColToSeqPos) are flagged inline in model.ts.
8
+ export { renderToSvg } from "./renderToSvg.js";
1
9
  export { default as MSAView } from "./components/Loading.js";
2
10
  export { default as MSAViewer } from "./components/MSAViewer.js";
3
11
  export { default as MSAModelF } from "./model.js";
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,yBAA0B,CAAA;AAC7D,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,2BAA4B,CAAA;AACjE,OAAO,EAAqB,OAAO,IAAI,SAAS,EAAE,MAAM,YAAY,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,gFAAgF;AAChF,yDAAyD;AACzD,+EAA+E;AAC/E,6EAA6E;AAC7E,gFAAgF;AAChF,0EAA0E;AAC1E,yEAAyE;AACzE,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAmB,CAAA;AAC/C,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,yBAA0B,CAAA;AAC7D,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,2BAA4B,CAAA;AACjE,OAAO,EAAqB,OAAO,IAAI,SAAS,EAAE,MAAM,YAAY,CAAA"}
@@ -24,21 +24,31 @@ function loadInterProScanResults(jobId, signal) {
24
24
  }
25
25
  async function wait({ onProgress, jobId, signal, }) {
26
26
  const url = `${base}/iprscan5/status/${jobId}`;
27
+ // EBI jobs run for minutes; cap polling so an unexpected/stuck status can't
28
+ // spin forever (the abort signal is the normal early exit). ~10s per check.
29
+ const maxChecks = 360;
27
30
  try {
28
- // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
29
- while (true) {
31
+ let finished = false;
32
+ for (let check = 0; check < maxChecks && !finished; check++) {
30
33
  for (let i = 0; i < 10; i++) {
31
34
  await timeout(1000, signal);
32
35
  onProgress({ msg: `Checking status ${10 - i}`, url });
33
36
  }
34
- const result = await textfetch(url, { signal });
35
- if (result.includes('FINISHED')) {
36
- break;
37
+ // status endpoint returns a bare status token; match exactly rather than
38
+ // substring so an error page mentioning "FINISHED" can't be a false hit
39
+ const status = (await textfetch(url, { signal })).trim();
40
+ if (status === 'FINISHED') {
41
+ finished = true;
37
42
  }
38
- if (result.includes('FAILURE')) {
39
- throw new Error(`Failed to run: jobId ${jobId}`);
43
+ else if (status === 'FAILURE' ||
44
+ status === 'ERROR' ||
45
+ status === 'NOT_FOUND') {
46
+ throw new Error(`InterProScan job ${jobId} ended with status: ${status}`);
40
47
  }
41
48
  }
49
+ if (!finished) {
50
+ throw new Error(`InterProScan job ${jobId} did not finish after ${maxChecks} status checks`);
51
+ }
42
52
  }
43
53
  finally {
44
54
  onProgress();
@@ -80,8 +90,11 @@ async function loadInterProScanResultsWithStatus({ jobId, model, onProgress, sig
80
90
  url: `https://www.ebi.ac.uk/Tools/services/rest/iprscan5/result/${jobId}/json`,
81
91
  });
82
92
  const ret = await loadInterProScanResults(jobId, signal);
83
- model.setInterProAnnotations(Object.fromEntries(ret.results.map(r => [r.xref[0].id, r])));
84
- model.setShowDomains(true);
93
+ // key each result by its xref id; skip any result lacking an xref entry
94
+ // rather than crashing the whole load on one malformed result
95
+ model.setDomains(Object.fromEntries(ret.results
96
+ .map(r => [r.xref[0]?.id, r])
97
+ .filter((e) => e[0] !== undefined)));
85
98
  getSession(model).notify(`Loaded interproscan ${jobId} results`, 'success');
86
99
  }
87
100
  catch (e) {
@@ -1 +1 @@
1
- {"version":3,"file":"launchInterProScan.js","sourceRoot":"","sources":["../src/launchInterProScan.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"launchInterProScan.js","sourceRoot":"","sources":["../src/launchInterProScan.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,4 @@
1
+ import { setFontSize } from "./setFontSize.js";
1
2
  let canvasHandle;
2
3
  export function measureTextCanvas(text, fontSize) {
3
4
  if (!canvasHandle) {
@@ -7,7 +8,7 @@ export function measureTextCanvas(text, fontSize) {
7
8
  if (!ctx) {
8
9
  throw new Error('no canvas context');
9
10
  }
10
- ctx.font = ctx.font.replace(/\d+px/, `${fontSize}px`);
11
+ setFontSize(ctx, fontSize);
11
12
  return ctx.measureText(text).width;
12
13
  }
13
14
  //# sourceMappingURL=measureTextCanvas.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"measureTextCanvas.js","sourceRoot":"","sources":["../src/measureTextCanvas.ts"],"names":[],"mappings":"AAAA,IAAI,YAA2C,CAAA;AAE/C,MAAM,UAAU,iBAAiB,CAAC,IAAY,EAAE,QAAgB;IAC9D,IAAI,CAAC,YAAY,EAAE,CAAC;QAClB,YAAY,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAA;IACjD,CAAC;IAED,MAAM,GAAG,GAAG,YAAY,CAAC,UAAU,CAAC,IAAI,CAAC,CAAA;IACzC,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAA;IACtC,CAAC;IACD,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,QAAQ,IAAI,CAAC,CAAA;IACrD,OAAO,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,KAAK,CAAA;AACpC,CAAC"}
1
+ {"version":3,"file":"measureTextCanvas.js","sourceRoot":"","sources":["../src/measureTextCanvas.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAE9C,IAAI,YAA2C,CAAA;AAE/C,MAAM,UAAU,iBAAiB,CAAC,IAAY,EAAE,QAAgB;IAC9D,IAAI,CAAC,YAAY,EAAE,CAAC;QAClB,YAAY,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAA;IACjD,CAAC;IAED,MAAM,GAAG,GAAG,YAAY,CAAC,UAAU,CAAC,IAAI,CAAC,CAAA;IACzC,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAA;IACtC,CAAC;IACD,WAAW,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAA;IAC1B,OAAO,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,KAAK,CAAA;AACpC,CAAC"}