react-msaview 4.4.4 → 4.4.5

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 (181) hide show
  1. package/bundle/index.js +111 -111
  2. package/bundle/index.js.LICENSE.txt +24 -6
  3. package/bundle/index.js.map +1 -1
  4. package/dist/components/dialogs/InterProScanDialog.js +1 -1
  5. package/dist/components/dialogs/InterProScanDialog.js.map +1 -1
  6. package/dist/components/dialogs/SettingsDialog.js +1 -1
  7. package/dist/components/dialogs/SettingsDialog.js.map +1 -1
  8. package/dist/components/msa/MSACanvasBlock.js +8 -1
  9. package/dist/components/msa/MSACanvasBlock.js.map +1 -1
  10. package/dist/components/msa/renderMSABlock.js +22 -4
  11. package/dist/components/msa/renderMSABlock.js.map +1 -1
  12. package/dist/components/msa/renderMSAMouseover.js +21 -1
  13. package/dist/components/msa/renderMSAMouseover.js.map +1 -1
  14. package/dist/components/tree/TreeCanvas.js +61 -2
  15. package/dist/components/tree/TreeCanvas.js.map +1 -1
  16. package/dist/components/tree/TreeCanvasBlock.js +56 -5
  17. package/dist/components/tree/TreeCanvasBlock.js.map +1 -1
  18. package/dist/components/tree/TreeNodeMenu.js +6 -2
  19. package/dist/components/tree/TreeNodeMenu.js.map +1 -1
  20. package/dist/components/tree/renderTreeCanvas.d.ts +14 -4
  21. package/dist/components/tree/renderTreeCanvas.js +3 -0
  22. package/dist/components/tree/renderTreeCanvas.js.map +1 -1
  23. package/dist/components/util.js +1 -1
  24. package/dist/components/util.js.map +1 -1
  25. package/dist/layout.d.ts +4 -1
  26. package/dist/layout.js +30 -8
  27. package/dist/layout.js.map +1 -1
  28. package/dist/model/treeModel.js +2 -2
  29. package/dist/model/treeModel.js.map +1 -1
  30. package/dist/model.d.ts +14 -79
  31. package/dist/model.js +94 -4
  32. package/dist/model.js.map +1 -1
  33. package/dist/version.d.ts +1 -1
  34. package/dist/version.js +1 -1
  35. package/package.json +3 -2
  36. package/src/components/dialogs/InterProScanDialog.tsx +1 -1
  37. package/src/components/dialogs/SettingsDialog.tsx +1 -1
  38. package/src/components/msa/MSACanvasBlock.tsx +8 -1
  39. package/src/components/msa/renderMSABlock.ts +32 -2
  40. package/src/components/msa/renderMSAMouseover.ts +26 -0
  41. package/src/components/tree/TreeCanvas.tsx +76 -1
  42. package/src/components/tree/TreeCanvasBlock.tsx +69 -5
  43. package/src/components/tree/TreeNodeMenu.tsx +12 -1
  44. package/src/components/tree/renderTreeCanvas.ts +20 -4
  45. package/src/components/util.ts +1 -1
  46. package/src/layout.ts +48 -8
  47. package/src/model/treeModel.ts +2 -2
  48. package/src/model.ts +108 -5
  49. package/src/version.ts +1 -1
  50. package/dist/DataModel.d.ts +0 -34
  51. package/dist/DataModel.js +0 -46
  52. package/dist/DataModel.js.map +0 -1
  53. package/dist/DialogQueue.d.ts +0 -25
  54. package/dist/DialogQueue.js +0 -44
  55. package/dist/DialogQueue.js.map +0 -1
  56. package/dist/SelectedStructuresMixin.d.ts +0 -46
  57. package/dist/SelectedStructuresMixin.js +0 -52
  58. package/dist/SelectedStructuresMixin.js.map +0 -1
  59. package/dist/StructureModel.d.ts +0 -9
  60. package/dist/StructureModel.js +0 -11
  61. package/dist/StructureModel.js.map +0 -1
  62. package/dist/UniprotTrack.d.ts +0 -27
  63. package/dist/UniprotTrack.js +0 -53
  64. package/dist/UniprotTrack.js.map +0 -1
  65. package/dist/components/BoxTrack.d.ts +0 -7
  66. package/dist/components/BoxTrack.js +0 -15
  67. package/dist/components/BoxTrack.js.map +0 -1
  68. package/dist/components/BoxTrackBlock.d.ts +0 -8
  69. package/dist/components/BoxTrackBlock.js +0 -136
  70. package/dist/components/BoxTrackBlock.js.map +0 -1
  71. package/dist/components/ExportSVGDialog.d.ts +0 -6
  72. package/dist/components/ExportSVGDialog.js +0 -39
  73. package/dist/components/ExportSVGDialog.js.map +0 -1
  74. package/dist/components/Header.d.ts +0 -6
  75. package/dist/components/Header.js +0 -62
  76. package/dist/components/Header.js.map +0 -1
  77. package/dist/components/HeaderInfoArea.d.ts +0 -6
  78. package/dist/components/HeaderInfoArea.js +0 -12
  79. package/dist/components/HeaderInfoArea.js.map +0 -1
  80. package/dist/components/ImportForm/ImportFormExamples.d.ts +0 -6
  81. package/dist/components/ImportForm/ImportFormExamples.js +0 -50
  82. package/dist/components/ImportForm/ImportFormExamples.js.map +0 -1
  83. package/dist/components/ImportForm/data/seq2.d.ts +0 -3
  84. package/dist/components/ImportForm/data/seq2.js +0 -33
  85. package/dist/components/ImportForm/data/seq2.js.map +0 -1
  86. package/dist/components/ImportForm/index.d.ts +0 -6
  87. package/dist/components/ImportForm/index.js +0 -31
  88. package/dist/components/ImportForm/index.js.map +0 -1
  89. package/dist/components/ImportForm/util.d.ts +0 -3
  90. package/dist/components/ImportForm/util.js +0 -16
  91. package/dist/components/ImportForm/util.js.map +0 -1
  92. package/dist/components/MSACanvas.d.ts +0 -6
  93. package/dist/components/MSACanvas.js +0 -141
  94. package/dist/components/MSACanvas.js.map +0 -1
  95. package/dist/components/MSAPanel/Loading.d.ts +0 -2
  96. package/dist/components/MSAPanel/Loading.js +0 -12
  97. package/dist/components/MSAPanel/Loading.js.map +0 -1
  98. package/dist/components/MSAPanel/MSABlock.d.ts +0 -8
  99. package/dist/components/MSAPanel/MSABlock.js +0 -62
  100. package/dist/components/MSAPanel/MSABlock.js.map +0 -1
  101. package/dist/components/MSAPanel/MSACanvas.d.ts +0 -7
  102. package/dist/components/MSAPanel/MSACanvas.js +0 -69
  103. package/dist/components/MSAPanel/MSACanvas.js.map +0 -1
  104. package/dist/components/MSAPanel/MSAMouseoverCanvas.d.ts +0 -6
  105. package/dist/components/MSAPanel/MSAMouseoverCanvas.js +0 -27
  106. package/dist/components/MSAPanel/MSAMouseoverCanvas.js.map +0 -1
  107. package/dist/components/MSAPanel/index.d.ts +0 -5
  108. package/dist/components/MSAPanel/index.js +0 -9
  109. package/dist/components/MSAPanel/index.js.map +0 -1
  110. package/dist/components/MSAPanel/renderMSABlock.d.ts +0 -9
  111. package/dist/components/MSAPanel/renderMSABlock.js +0 -89
  112. package/dist/components/MSAPanel/renderMSABlock.js.map +0 -1
  113. package/dist/components/MSAPanel/renderMSABlock_BACKUP_139826.d.ts +0 -9
  114. package/dist/components/MSAPanel/renderMSABlock_BACKUP_139826.js +0 -89
  115. package/dist/components/MSAPanel/renderMSABlock_BACKUP_139826.js.map +0 -1
  116. package/dist/components/MSAPanel/renderMSABlock_BASE_139826.d.ts +0 -13
  117. package/dist/components/MSAPanel/renderMSABlock_BASE_139826.js +0 -82
  118. package/dist/components/MSAPanel/renderMSABlock_BASE_139826.js.map +0 -1
  119. package/dist/components/MSAPanel/renderMSABlock_LOCAL_139826.d.ts +0 -9
  120. package/dist/components/MSAPanel/renderMSABlock_LOCAL_139826.js +0 -89
  121. package/dist/components/MSAPanel/renderMSABlock_LOCAL_139826.js.map +0 -1
  122. package/dist/components/MSAPanel/renderMSABlock_REMOTE_139826.d.ts +0 -0
  123. package/dist/components/MSAPanel/renderMSABlock_REMOTE_139826.js +0 -2
  124. package/dist/components/MSAPanel/renderMSABlock_REMOTE_139826.js.map +0 -1
  125. package/dist/components/MSAPanel/renderMSAMouseover.d.ts +0 -5
  126. package/dist/components/MSAPanel/renderMSAMouseover.js +0 -30
  127. package/dist/components/MSAPanel/renderMSAMouseover.js.map +0 -1
  128. package/dist/components/Minimap.d.ts +0 -6
  129. package/dist/components/Minimap.js +0 -72
  130. package/dist/components/Minimap.js.map +0 -1
  131. package/dist/components/MinimapSVG.d.ts +0 -6
  132. package/dist/components/MinimapSVG.js +0 -25
  133. package/dist/components/MinimapSVG.js.map +0 -1
  134. package/dist/components/MultiAlignmentSelector.d.ts +0 -6
  135. package/dist/components/MultiAlignmentSelector.js +0 -13
  136. package/dist/components/MultiAlignmentSelector.js.map +0 -1
  137. package/dist/components/TreePanel/TreeBranchMenu.d.ts +0 -14
  138. package/dist/components/TreePanel/TreeBranchMenu.js +0 -26
  139. package/dist/components/TreePanel/TreeBranchMenu.js.map +0 -1
  140. package/dist/components/TreePanel/TreeCanvas.d.ts +0 -6
  141. package/dist/components/TreePanel/TreeCanvas.js +0 -100
  142. package/dist/components/TreePanel/TreeCanvas.js.map +0 -1
  143. package/dist/components/TreePanel/TreeCanvasBlock.d.ts +0 -7
  144. package/dist/components/TreePanel/TreeCanvasBlock.js +0 -118
  145. package/dist/components/TreePanel/TreeCanvasBlock.js.map +0 -1
  146. package/dist/components/TreePanel/TreeNodeMenu.d.ts +0 -13
  147. package/dist/components/TreePanel/TreeNodeMenu.js +0 -74
  148. package/dist/components/TreePanel/TreeNodeMenu.js.map +0 -1
  149. package/dist/components/TreePanel/TreeRuler.d.ts +0 -6
  150. package/dist/components/TreePanel/TreeRuler.js +0 -8
  151. package/dist/components/TreePanel/TreeRuler.js.map +0 -1
  152. package/dist/components/TreePanel/dialogs/TreeNodeInfoDialog.d.ts +0 -9
  153. package/dist/components/TreePanel/dialogs/TreeNodeInfoDialog.js +0 -16
  154. package/dist/components/TreePanel/dialogs/TreeNodeInfoDialog.js.map +0 -1
  155. package/dist/components/TreePanel/index.d.ts +0 -6
  156. package/dist/components/TreePanel/index.js +0 -10
  157. package/dist/components/TreePanel/index.js.map +0 -1
  158. package/dist/components/TreePanel/renderTreeCanvas.d.ts +0 -46
  159. package/dist/components/TreePanel/renderTreeCanvas.js +0 -180
  160. package/dist/components/TreePanel/renderTreeCanvas.js.map +0 -1
  161. package/dist/components/VerticalGuide.d.ts +0 -7
  162. package/dist/components/VerticalGuide.js +0 -30
  163. package/dist/components/VerticalGuide.js.map +0 -1
  164. package/dist/components/ZoomControls.d.ts +0 -6
  165. package/dist/components/ZoomControls.js +0 -59
  166. package/dist/components/ZoomControls.js.map +0 -1
  167. package/dist/components/msa/MSACanvas_BACKUP_139826.d.ts +0 -7
  168. package/dist/components/msa/MSACanvas_BACKUP_139826.js +0 -68
  169. package/dist/components/msa/MSACanvas_BACKUP_139826.js.map +0 -1
  170. package/dist/components/msa/MSACanvas_BASE_139826.d.ts +0 -6
  171. package/dist/components/msa/MSACanvas_BASE_139826.js +0 -107
  172. package/dist/components/msa/MSACanvas_BASE_139826.js.map +0 -1
  173. package/dist/components/msa/MSACanvas_LOCAL_139826.d.ts +0 -7
  174. package/dist/components/msa/MSACanvas_LOCAL_139826.js +0 -69
  175. package/dist/components/msa/MSACanvas_LOCAL_139826.js.map +0 -1
  176. package/dist/components/msa/MSACanvas_REMOTE_139826.d.ts +0 -6
  177. package/dist/components/msa/MSACanvas_REMOTE_139826.js +0 -106
  178. package/dist/components/msa/MSACanvas_REMOTE_139826.js.map +0 -1
  179. package/dist/sansserif.d.ts +0 -3
  180. package/dist/sansserif.js +0 -1583
  181. package/dist/sansserif.js.map +0 -1
package/src/model.ts CHANGED
@@ -289,6 +289,14 @@ function stateModelFactory() {
289
289
  */
290
290
  mouseClickCol: undefined as number | undefined,
291
291
 
292
+ /**
293
+ * #volatile
294
+ * the currently hovered tree node ID and its descendant leaf names
295
+ */
296
+ hoveredTreeNode: undefined as
297
+ | { nodeId: string; descendantNames: string[] }
298
+ | undefined,
299
+
292
300
  /**
293
301
  * #volatile
294
302
  * a dummy variable that is incremented when ref changes so autorun for
@@ -327,7 +335,7 @@ function stateModelFactory() {
327
335
  /**
328
336
  * #action
329
337
  */
330
- drawRelativeTo(id: string) {
338
+ drawRelativeTo(id: string | undefined) {
331
339
  self.relativeTo = id
332
340
  },
333
341
  /**
@@ -396,6 +404,31 @@ function stateModelFactory() {
396
404
  self.mouseCol = col
397
405
  self.mouseRow = row
398
406
  },
407
+
408
+ /**
409
+ * #action
410
+ * set hovered tree node and its descendants
411
+ */
412
+ setHoveredTreeNode(nodeId?: string) {
413
+ if (!nodeId) {
414
+ self.hoveredTreeNode = undefined
415
+ return
416
+ }
417
+
418
+ // Find the node in the hierarchy
419
+ const node = (self as any).hierarchy.find(
420
+ (n: any) => n.data.id === nodeId,
421
+ )
422
+ if (!node) {
423
+ self.hoveredTreeNode = undefined
424
+ return
425
+ }
426
+
427
+ // Get all descendant leaf names
428
+ const descendantNames = node.leaves().map((leaf: any) => leaf.data.name)
429
+
430
+ self.hoveredTreeNode = { nodeId, descendantNames }
431
+ },
399
432
  /**
400
433
  * #action
401
434
  */
@@ -673,6 +706,7 @@ function stateModelFactory() {
673
706
  // todo: investigate whether needed, typescript says children always true
674
707
  // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
675
708
  .sum(d => (d.children ? 0 : 1))
709
+ // eslint-disable-next-line unicorn/no-array-sort
676
710
  .sort((a, b) => ascending(a.data.length || 1, b.data.length || 1))
677
711
 
678
712
  if (self.showOnly) {
@@ -911,7 +945,7 @@ function stateModelFactory() {
911
945
  * #getter
912
946
  */
913
947
  get maxScrollX() {
914
- return -self.totalWidth + (self.msaAreaWidth - 100)
948
+ return Math.min(-self.totalWidth + (self.msaAreaWidth - 100), 0)
915
949
  },
916
950
  /**
917
951
  * #getter
@@ -1009,7 +1043,7 @@ function stateModelFactory() {
1009
1043
  * #action
1010
1044
  */
1011
1045
  doScrollX(deltaX: number) {
1012
- self.scrollX = clamp(self.scrollX + deltaX, self.maxScrollX, 0)
1046
+ this.setScrollX(self.scrollX + deltaX)
1013
1047
  },
1014
1048
 
1015
1049
  /**
@@ -1243,7 +1277,7 @@ function stateModelFactory() {
1243
1277
  }
1244
1278
  }
1245
1279
  }
1246
- return ret.sort((a, b) => len(b) - len(a))
1280
+ return ret.toSorted((a, b) => len(b) - len(a))
1247
1281
  },
1248
1282
  /**
1249
1283
  * #getter
@@ -1525,6 +1559,75 @@ function stateModelFactory() {
1525
1559
  ...rest
1526
1560
  } = snap
1527
1561
 
1562
+ // Default values to filter out
1563
+ const defaults = {
1564
+ // Main model defaults
1565
+ showDomains: false,
1566
+ hideGaps: true,
1567
+ allowedGappyness: 100,
1568
+ contrastLettering: true,
1569
+ subFeatureRows: false,
1570
+ drawMsaLetters: true,
1571
+ height: 550,
1572
+ rowHeight: defaultRowHeight,
1573
+ scrollY: 0,
1574
+ scrollX: 0,
1575
+ colWidth: defaultColWidth,
1576
+ currentAlignment: 0,
1577
+ // MSA model defaults
1578
+ bgColor: true,
1579
+ colorSchemeName: 'maeditor',
1580
+ // Tree model defaults
1581
+ drawLabels: true,
1582
+ labelsAlignRight: false,
1583
+ treeAreaWidth: 400,
1584
+ treeWidth: 300,
1585
+ treeWidthMatchesArea: true,
1586
+ showBranchLen: true,
1587
+ drawTree: true,
1588
+ drawNodeBubbles: true,
1589
+ }
1590
+
1591
+ // Properties that should always be included even if they match defaults
1592
+ const alwaysInclude = new Set(['id', 'type', 'relativeTo'])
1593
+
1594
+ // Filter out properties that match default values
1595
+ function filterDefaults(obj: Record<string, any>): Record<string, any> {
1596
+ const filtered: Record<string, any> = {}
1597
+ for (const [key, value] of Object.entries(obj)) {
1598
+ // Always include essential properties
1599
+ if (alwaysInclude.has(key)) {
1600
+ filtered[key] = value
1601
+ continue
1602
+ }
1603
+
1604
+ // Skip if value matches default
1605
+ if (defaults[key as keyof typeof defaults] === value) {
1606
+ continue
1607
+ }
1608
+
1609
+ // Handle nested objects
1610
+ if (value && typeof value === 'object' && !Array.isArray(value)) {
1611
+ const filteredNested = filterDefaults(value)
1612
+ // Only include nested object if it has non-default properties
1613
+ if (Object.keys(filteredNested).length > 0) {
1614
+ filtered[key] = filteredNested
1615
+ }
1616
+ } else if (Array.isArray(value)) {
1617
+ // Only include arrays that aren't empty
1618
+ if (value.length > 0) {
1619
+ filtered[key] = value
1620
+ }
1621
+ } else {
1622
+ // Include non-default primitives
1623
+ filtered[key] = value
1624
+ }
1625
+ }
1626
+ return filtered
1627
+ }
1628
+
1629
+ const filteredRest = filterDefaults(rest)
1630
+
1528
1631
  // remove the MSA/tree data from the tree if the filehandle available in
1529
1632
  // which case it can be reloaded on refresh
1530
1633
  return {
@@ -1533,7 +1636,7 @@ function stateModelFactory() {
1533
1636
  ...(result.msaFilehandle ? {} : { msa }),
1534
1637
  ...(result.treeMetadataFilehandle ? {} : { treeMetadata }),
1535
1638
  },
1536
- ...rest,
1639
+ ...filteredRest,
1537
1640
  }
1538
1641
  })
1539
1642
  }
package/src/version.ts CHANGED
@@ -1 +1 @@
1
- export const version = '4.4.4'
1
+ export const version = '4.4.5'
@@ -1,34 +0,0 @@
1
- /**
2
- * #stateModel DataModel
3
- * the data stored for the model. this is sometimes temporary in the case that
4
- * e.g. msaFilehandle is available on the parent model, because then the msa
5
- * data will not be persisted in saved session snapshots, it will be fetched
6
- * from msaFilehandle at startup
7
- */
8
- export declare function DataModelF(): import("mobx-state-tree").IModelType<{
9
- /**
10
- * #property
11
- */
12
- tree: import("mobx-state-tree").IMaybe<import("mobx-state-tree").ISimpleType<string>>;
13
- /**
14
- * #property
15
- */
16
- msa: import("mobx-state-tree").IMaybe<import("mobx-state-tree").ISimpleType<string>>;
17
- /**
18
- * #property
19
- */
20
- treeMetadata: import("mobx-state-tree").IMaybe<import("mobx-state-tree").ISimpleType<string>>;
21
- }, {
22
- /**
23
- * #action
24
- */
25
- setTree(tree?: string): void;
26
- /**
27
- * #action
28
- */
29
- setMSA(msa?: string): void;
30
- /**
31
- * #action
32
- */
33
- setTreeMetadata(treeMetadata?: string): void;
34
- }, import("mobx-state-tree")._NotCustomized, import("mobx-state-tree")._NotCustomized>;
package/dist/DataModel.js DELETED
@@ -1,46 +0,0 @@
1
- import { types } from 'mobx-state-tree';
2
- /**
3
- * #stateModel DataModel
4
- * the data stored for the model. this is sometimes temporary in the case that
5
- * e.g. msaFilehandle is available on the parent model, because then the msa
6
- * data will not be persisted in saved session snapshots, it will be fetched
7
- * from msaFilehandle at startup
8
- */
9
- export function DataModelF() {
10
- return types
11
- .model({
12
- /**
13
- * #property
14
- */
15
- tree: types.maybe(types.string),
16
- /**
17
- * #property
18
- */
19
- msa: types.maybe(types.string),
20
- /**
21
- * #property
22
- */
23
- treeMetadata: types.maybe(types.string),
24
- })
25
- .actions(self => ({
26
- /**
27
- * #action
28
- */
29
- setTree(tree) {
30
- self.tree = tree;
31
- },
32
- /**
33
- * #action
34
- */
35
- setMSA(msa) {
36
- self.msa = msa;
37
- },
38
- /**
39
- * #action
40
- */
41
- setTreeMetadata(treeMetadata) {
42
- self.treeMetadata = treeMetadata;
43
- },
44
- }));
45
- }
46
- //# sourceMappingURL=DataModel.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"DataModel.js","sourceRoot":"","sources":["../src/DataModel.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAA;AAEvC;;;;;;GAMG;AACH,MAAM,UAAU,UAAU;IACxB,OAAO,KAAK;SACT,KAAK,CAAC;QACL;;WAEG;QACH,IAAI,EAAE,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC;QAC/B;;WAEG;QACH,GAAG,EAAE,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC;QAC9B;;WAEG;QACH,YAAY,EAAE,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC;KACxC,CAAC;SACD,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAChB;;WAEG;QACH,OAAO,CAAC,IAAa;YACnB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;QAClB,CAAC;QACD;;WAEG;QACH,MAAM,CAAC,GAAY;YACjB,IAAI,CAAC,GAAG,GAAG,GAAG,CAAA;QAChB,CAAC;QACD;;WAEG;QACH,eAAe,CAAC,YAAqB;YACnC,IAAI,CAAC,YAAY,GAAG,YAAY,CAAA;QAClC,CAAC;KACF,CAAC,CAAC,CAAA;AACP,CAAC"}
@@ -1,25 +0,0 @@
1
- import { DialogComponentType } from '@jbrowse/core/util';
2
- /**
3
- * #stateModel DialogQueueSessionMixin
4
- */
5
- export declare function DialogQueueSessionMixin(): import("mobx-state-tree").IModelType<{}, {
6
- queueOfDialogs: [DialogComponentType, any][];
7
- } & {
8
- /**
9
- * #getter
10
- */
11
- readonly DialogComponent: DialogComponentType;
12
- /**
13
- * #getter
14
- */
15
- readonly DialogProps: any;
16
- } & {
17
- /**
18
- * #action
19
- */
20
- removeActiveDialog(): void;
21
- /**
22
- * #action
23
- */
24
- queueDialog(cb: (doneCallback: () => void) => [DialogComponentType, unknown]): void;
25
- }, import("mobx-state-tree")._NotCustomized, import("mobx-state-tree")._NotCustomized>;
@@ -1,44 +0,0 @@
1
- import { types } from 'mobx-state-tree';
2
- /**
3
- * #stateModel DialogQueueSessionMixin
4
- */
5
- export function DialogQueueSessionMixin() {
6
- return types
7
- .model('DialogQueueSessionMixin', {})
8
- .volatile(() => ({
9
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
10
- queueOfDialogs: [],
11
- }))
12
- .views(self => ({
13
- /**
14
- * #getter
15
- */
16
- get DialogComponent() {
17
- return self.queueOfDialogs[0]?.[0];
18
- },
19
- /**
20
- * #getter
21
- */
22
- get DialogProps() {
23
- return self.queueOfDialogs[0]?.[1];
24
- },
25
- }))
26
- .actions(self => ({
27
- /**
28
- * #action
29
- */
30
- removeActiveDialog() {
31
- self.queueOfDialogs = self.queueOfDialogs.slice(1);
32
- },
33
- /**
34
- * #action
35
- */
36
- queueDialog(cb) {
37
- const [component, props] = cb(() => {
38
- this.removeActiveDialog();
39
- });
40
- self.queueOfDialogs = [...self.queueOfDialogs, [component, props]];
41
- },
42
- }));
43
- }
44
- //# sourceMappingURL=DialogQueue.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"DialogQueue.js","sourceRoot":"","sources":["../src/DialogQueue.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAA;AAEvC;;GAEG;AACH,MAAM,UAAU,uBAAuB;IACrC,OAAO,KAAK;SACT,KAAK,CAAC,yBAAyB,EAAE,EAAE,CAAC;SACpC,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC;QACf,8DAA8D;QAC9D,cAAc,EAAE,EAAkC;KACnD,CAAC,CAAC;SACF,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACd;;WAEG;QACH,IAAI,eAAe;YACjB,OAAO,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;QACpC,CAAC;QACD;;WAEG;QACH,IAAI,WAAW;YACb,OAAO,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;QACpC,CAAC;KACF,CAAC,CAAC;SACF,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAChB;;WAEG;QACH,kBAAkB;YAChB,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;QACpD,CAAC;QACD;;WAEG;QACH,WAAW,CACT,EAAgE;YAEhE,MAAM,CAAC,SAAS,EAAE,KAAK,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE;gBACjC,IAAI,CAAC,kBAAkB,EAAE,CAAA;YAC3B,CAAC,CAAC,CAAA;YACF,IAAI,CAAC,cAAc,GAAG,CAAC,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC,CAAA;QACpE,CAAC;KACF,CAAC,CAAC,CAAA;AACP,CAAC"}
@@ -1,46 +0,0 @@
1
- import { SnapshotIn } from 'mobx-state-tree';
2
- import { StructureModel } from './StructureModel';
3
- export type StructureSnap = SnapshotIn<typeof StructureModel>;
4
- export declare function SelectedStructuresMixin(): import("mobx-state-tree").IModelType<{
5
- /**
6
- * #property
7
- * currently "selected" structures, generally PDB 3-D protein structures
8
- */
9
- selectedStructures: import("mobx-state-tree").IArrayType<import("mobx-state-tree").IModelType<{
10
- id: import("mobx-state-tree").ISimpleType<string>;
11
- structure: import("mobx-state-tree").IModelType<{
12
- pdb: import("mobx-state-tree").ISimpleType<string>;
13
- startPos: import("mobx-state-tree").ISimpleType<number>;
14
- endPos: import("mobx-state-tree").ISimpleType<number>;
15
- }, {}, import("mobx-state-tree")._NotCustomized, import("mobx-state-tree")._NotCustomized>;
16
- range: import("mobx-state-tree").IMaybe<import("mobx-state-tree").ISimpleType<string>>;
17
- }, {}, import("mobx-state-tree")._NotCustomized, import("mobx-state-tree")._NotCustomized>>;
18
- }, {
19
- /**
20
- * #action
21
- * add to the selected structures
22
- */
23
- addStructureToSelection(elt: StructureSnap): void;
24
- /**
25
- * #action
26
- * remove from the selected structures
27
- */
28
- removeStructureFromSelection(elt: StructureSnap): void;
29
- /**
30
- * #action
31
- * toggle a structure from the selected structures list
32
- */
33
- toggleStructureSelection(elt: {
34
- id: string;
35
- structure: {
36
- startPos: number;
37
- endPos: number;
38
- pdb: string;
39
- };
40
- }): void;
41
- /**
42
- * #action
43
- * clear all selected structures
44
- */
45
- clearSelectedStructures(): void;
46
- }, import("mobx-state-tree")._NotCustomized, import("mobx-state-tree")._NotCustomized>;
@@ -1,52 +0,0 @@
1
- import { cast, types } from 'mobx-state-tree';
2
- import { StructureModel } from './StructureModel';
3
- export function SelectedStructuresMixin() {
4
- return types
5
- .model({
6
- /**
7
- * #property
8
- * currently "selected" structures, generally PDB 3-D protein structures
9
- */
10
- selectedStructures: types.array(StructureModel),
11
- })
12
- .actions(self => ({
13
- /**
14
- * #action
15
- * add to the selected structures
16
- */
17
- addStructureToSelection(elt) {
18
- self.selectedStructures.push(elt);
19
- },
20
- /**
21
- * #action
22
- * remove from the selected structures
23
- */
24
- removeStructureFromSelection(elt) {
25
- const r = self.selectedStructures.find(node => node.id === elt.id);
26
- if (r) {
27
- self.selectedStructures.remove(r);
28
- }
29
- },
30
- /**
31
- * #action
32
- * toggle a structure from the selected structures list
33
- */
34
- toggleStructureSelection(elt) {
35
- const r = self.selectedStructures.find(node => node.id === elt.id);
36
- if (r) {
37
- self.selectedStructures.remove(r);
38
- }
39
- else {
40
- self.selectedStructures.push(elt);
41
- }
42
- },
43
- /**
44
- * #action
45
- * clear all selected structures
46
- */
47
- clearSelectedStructures() {
48
- self.selectedStructures = cast([]);
49
- },
50
- }));
51
- }
52
- //# sourceMappingURL=SelectedStructuresMixin.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"SelectedStructuresMixin.js","sourceRoot":"","sources":["../src/SelectedStructuresMixin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,IAAI,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAA;AACzD,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AAIjD,MAAM,UAAU,uBAAuB;IACrC,OAAO,KAAK;SACT,KAAK,CAAC;QACL;;;WAGG;QACH,kBAAkB,EAAE,KAAK,CAAC,KAAK,CAAC,cAAc,CAAC;KAChD,CAAC;SACD,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAChB;;;WAGG;QACH,uBAAuB,CAAC,GAAkB;YACxC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;QACnC,CAAC;QAED;;;WAGG;QACH,4BAA4B,CAAC,GAAkB;YAC7C,MAAM,CAAC,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,KAAK,GAAG,CAAC,EAAE,CAAC,CAAA;YAClE,IAAI,CAAC,EAAE,CAAC;gBACN,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;YACnC,CAAC;QACH,CAAC;QAED;;;WAGG;QACH,wBAAwB,CAAC,GAGxB;YACC,MAAM,CAAC,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,KAAK,GAAG,CAAC,EAAE,CAAC,CAAA;YAClE,IAAI,CAAC,EAAE,CAAC;gBACN,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;YACnC,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;YACnC,CAAC;QACH,CAAC;QAED;;;WAGG;QACH,uBAAuB;YACrB,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,EAAE,CAAC,CAAA;QACpC,CAAC;KACF,CAAC,CAAC,CAAA;AACP,CAAC"}
@@ -1,9 +0,0 @@
1
- export declare const StructureModel: import("mobx-state-tree").IModelType<{
2
- id: import("mobx-state-tree").ISimpleType<string>;
3
- structure: import("mobx-state-tree").IModelType<{
4
- pdb: import("mobx-state-tree").ISimpleType<string>;
5
- startPos: import("mobx-state-tree").ISimpleType<number>;
6
- endPos: import("mobx-state-tree").ISimpleType<number>;
7
- }, {}, import("mobx-state-tree")._NotCustomized, import("mobx-state-tree")._NotCustomized>;
8
- range: import("mobx-state-tree").IMaybe<import("mobx-state-tree").ISimpleType<string>>;
9
- }, {}, import("mobx-state-tree")._NotCustomized, import("mobx-state-tree")._NotCustomized>;
@@ -1,11 +0,0 @@
1
- import { types } from 'mobx-state-tree';
2
- export const StructureModel = types.model({
3
- id: types.identifier,
4
- structure: types.model({
5
- pdb: types.string,
6
- startPos: types.number,
7
- endPos: types.number,
8
- }),
9
- range: types.maybe(types.string),
10
- });
11
- //# sourceMappingURL=StructureModel.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"StructureModel.js","sourceRoot":"","sources":["../src/StructureModel.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAA;AAEvC,MAAM,CAAC,MAAM,cAAc,GAAG,KAAK,CAAC,KAAK,CAAC;IACxC,EAAE,EAAE,KAAK,CAAC,UAAU;IACpB,SAAS,EAAE,KAAK,CAAC,KAAK,CAAC;QACrB,GAAG,EAAE,KAAK,CAAC,MAAM;QACjB,QAAQ,EAAE,KAAK,CAAC,MAAM;QACtB,MAAM,EAAE,KAAK,CAAC,MAAM;KACrB,CAAC;IACF,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC;CACjC,CAAC,CAAA"}
@@ -1,27 +0,0 @@
1
- export declare const UniprotTrack: import("mobx-state-tree").IModelType<{
2
- id: import("mobx-state-tree").ISimpleType<string>;
3
- accession: import("mobx-state-tree").ISimpleType<string>;
4
- name: import("mobx-state-tree").ISimpleType<string>;
5
- associatedRowName: import("mobx-state-tree").ISimpleType<string>;
6
- height: import("mobx-state-tree").IOptionalIType<import("mobx-state-tree").ISimpleType<number>, [undefined]>;
7
- }, {
8
- error: unknown;
9
- data: string | undefined;
10
- } & {
11
- setError(error: unknown): void;
12
- setData(data: string): void;
13
- } & {
14
- afterCreate(): void;
15
- } & {
16
- readonly loading: boolean;
17
- readonly features: {
18
- seq_id: string;
19
- source: string;
20
- type: string;
21
- start: number;
22
- end: number;
23
- score: number;
24
- strand: string;
25
- phase: string;
26
- }[] | undefined;
27
- }, import("mobx-state-tree")._NotCustomized, import("mobx-state-tree")._NotCustomized>;
@@ -1,53 +0,0 @@
1
- import { types, addDisposer } from 'mobx-state-tree';
2
- import { autorun } from 'mobx';
3
- // locals
4
- import { parseGFF } from './util';
5
- export const UniprotTrack = types
6
- .model({
7
- id: types.string,
8
- accession: types.string,
9
- name: types.string,
10
- associatedRowName: types.string,
11
- height: types.optional(types.number, 100),
12
- })
13
- .volatile(() => ({
14
- error: undefined,
15
- data: undefined,
16
- }))
17
- .actions(self => ({
18
- setError(error) {
19
- self.error = error;
20
- },
21
- setData(data) {
22
- self.data = data;
23
- },
24
- }))
25
- .actions(self => ({
26
- afterCreate() {
27
- addDisposer(self, autorun(async () => {
28
- try {
29
- const { accession } = self;
30
- const accessionSansVersion = accession?.replace(/\.[^/.]+$/, '');
31
- const url = `https://rest.uniprot.org/uniprotkb/${accessionSansVersion}.gff`;
32
- const res = await fetch(url);
33
- if (!res.ok) {
34
- throw new Error(`HTTP ${res.status} fetching ${url}: ${await res.text()}`);
35
- }
36
- self.setData(await res.text());
37
- }
38
- catch (e) {
39
- console.error(e);
40
- self.setError(e);
41
- }
42
- }));
43
- },
44
- }))
45
- .views(self => ({
46
- get loading() {
47
- return !self.data;
48
- },
49
- get features() {
50
- return parseGFF(self.data);
51
- },
52
- }));
53
- //# sourceMappingURL=UniprotTrack.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"UniprotTrack.js","sourceRoot":"","sources":["../src/UniprotTrack.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA;AACpD,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAA;AAE9B,SAAS;AACT,OAAO,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAA;AAEjC,MAAM,CAAC,MAAM,YAAY,GAAG,KAAK;KAC9B,KAAK,CAAC;IACL,EAAE,EAAE,KAAK,CAAC,MAAM;IAChB,SAAS,EAAE,KAAK,CAAC,MAAM;IACvB,IAAI,EAAE,KAAK,CAAC,MAAM;IAClB,iBAAiB,EAAE,KAAK,CAAC,MAAM;IAC/B,MAAM,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,EAAE,GAAG,CAAC;CAC1C,CAAC;KACD,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC;IACf,KAAK,EAAE,SAAoB;IAC3B,IAAI,EAAE,SAA+B;CACtC,CAAC,CAAC;KACF,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAChB,QAAQ,CAAC,KAAc;QACrB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAA;IACpB,CAAC;IACD,OAAO,CAAC,IAAY;QAClB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;IAClB,CAAC;CACF,CAAC,CAAC;KACF,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAChB,WAAW;QACT,WAAW,CACT,IAAI,EACJ,OAAO,CAAC,KAAK,IAAI,EAAE;YACjB,IAAI,CAAC;gBACH,MAAM,EAAE,SAAS,EAAE,GAAG,IAAI,CAAA;gBAC1B,MAAM,oBAAoB,GAAG,SAAS,EAAE,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC,CAAA;gBAChE,MAAM,GAAG,GAAG,sCAAsC,oBAAoB,MAAM,CAAA;gBAC5E,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,CAAA;gBAC5B,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;oBACZ,MAAM,IAAI,KAAK,CACb,QAAQ,GAAG,CAAC,MAAM,aAAa,GAAG,KAAK,MAAM,GAAG,CAAC,IAAI,EAAE,EAAE,CAC1D,CAAA;gBACH,CAAC;gBACD,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC,CAAA;YAChC,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;gBAChB,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAA;YAClB,CAAC;QACH,CAAC,CAAC,CACH,CAAA;IACH,CAAC;CACF,CAAC,CAAC;KACF,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACd,IAAI,OAAO;QACT,OAAO,CAAC,IAAI,CAAC,IAAI,CAAA;IACnB,CAAC;IAED,IAAI,QAAQ;QACV,OAAO,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IAC5B,CAAC;CACF,CAAC,CAAC,CAAA"}
@@ -1,7 +0,0 @@
1
- import React from 'react';
2
- import { IBoxTrack, MsaViewModel } from '../model';
3
- declare const BoxTrack: ({ model, track, }: {
4
- model: MsaViewModel;
5
- track: IBoxTrack;
6
- }) => React.JSX.Element;
7
- export default BoxTrack;
@@ -1,15 +0,0 @@
1
- import React from 'react';
2
- import { observer } from 'mobx-react';
3
- import BoxTrackBlock from './BoxTrackBlock';
4
- const BoxTrack = observer(function ({ model, track, }) {
5
- const { blocksX, msaAreaWidth } = model;
6
- const { height } = track.model;
7
- return (React.createElement("div", { style: {
8
- position: 'relative',
9
- height,
10
- width: msaAreaWidth,
11
- overflow: 'hidden',
12
- } }, blocksX.map(bx => (React.createElement(BoxTrackBlock, { track: track, key: bx, model: model, offsetX: bx })))));
13
- });
14
- export default BoxTrack;
15
- //# sourceMappingURL=BoxTrack.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"BoxTrack.js","sourceRoot":"","sources":["../../src/components/BoxTrack.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AAIrC,OAAO,aAAa,MAAM,iBAAiB,CAAA;AAE3C,MAAM,QAAQ,GAAG,QAAQ,CAAC,UAAU,EAClC,KAAK,EACL,KAAK,GAIN;IACC,MAAM,EAAE,OAAO,EAAE,YAAY,EAAE,GAAG,KAAK,CAAA;IACvC,MAAM,EAAE,MAAM,EAAE,GAAG,KAAK,CAAC,KAAK,CAAA;IAC9B,OAAO,CACL,6BACE,KAAK,EAAE;YACL,QAAQ,EAAE,UAAU;YACpB,MAAM;YACN,KAAK,EAAE,YAAY;YACnB,QAAQ,EAAE,QAAQ;SACnB,IAEA,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CACjB,oBAAC,aAAa,IAAC,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,GAAI,CACpE,CAAC,CACE,CACP,CAAA;AACH,CAAC,CAAC,CAAA;AAEF,eAAe,QAAQ,CAAA"}
@@ -1,8 +0,0 @@
1
- import React from 'react';
2
- import { IBoxTrack, MsaViewModel } from '../model';
3
- declare const BoxTrackBlock: ({ track, model, offsetX, }: {
4
- track: IBoxTrack;
5
- model: MsaViewModel;
6
- offsetX: number;
7
- }) => React.JSX.Element | null;
8
- export default BoxTrackBlock;