react-msaview 4.4.2 → 4.4.4

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 (145) hide show
  1. package/bundle/index.js +10 -10
  2. package/bundle/index.js.LICENSE.txt +5 -5
  3. package/bundle/index.js.map +1 -1
  4. package/dist/DataModel.d.ts +34 -0
  5. package/dist/DataModel.js +46 -0
  6. package/dist/DataModel.js.map +1 -0
  7. package/dist/DialogQueue.d.ts +25 -0
  8. package/dist/DialogQueue.js +44 -0
  9. package/dist/DialogQueue.js.map +1 -0
  10. package/dist/SelectedStructuresMixin.d.ts +46 -0
  11. package/dist/SelectedStructuresMixin.js +52 -0
  12. package/dist/SelectedStructuresMixin.js.map +1 -0
  13. package/dist/StructureModel.d.ts +9 -0
  14. package/dist/StructureModel.js +11 -0
  15. package/dist/StructureModel.js.map +1 -0
  16. package/dist/UniprotTrack.d.ts +27 -0
  17. package/dist/UniprotTrack.js +53 -0
  18. package/dist/UniprotTrack.js.map +1 -0
  19. package/dist/components/BoxTrack.d.ts +7 -0
  20. package/dist/components/BoxTrack.js +15 -0
  21. package/dist/components/BoxTrack.js.map +1 -0
  22. package/dist/components/BoxTrackBlock.d.ts +8 -0
  23. package/dist/components/BoxTrackBlock.js +136 -0
  24. package/dist/components/BoxTrackBlock.js.map +1 -0
  25. package/dist/components/ExportSVGDialog.d.ts +6 -0
  26. package/dist/components/ExportSVGDialog.js +39 -0
  27. package/dist/components/ExportSVGDialog.js.map +1 -0
  28. package/dist/components/Header.d.ts +6 -0
  29. package/dist/components/Header.js +62 -0
  30. package/dist/components/Header.js.map +1 -0
  31. package/dist/components/HeaderInfoArea.d.ts +6 -0
  32. package/dist/components/HeaderInfoArea.js +12 -0
  33. package/dist/components/HeaderInfoArea.js.map +1 -0
  34. package/dist/components/ImportForm/ImportFormExamples.d.ts +6 -0
  35. package/dist/components/ImportForm/ImportFormExamples.js +50 -0
  36. package/dist/components/ImportForm/ImportFormExamples.js.map +1 -0
  37. package/dist/components/ImportForm/data/seq2.d.ts +3 -0
  38. package/dist/components/ImportForm/data/seq2.js +33 -0
  39. package/dist/components/ImportForm/data/seq2.js.map +1 -0
  40. package/dist/components/ImportForm/index.d.ts +6 -0
  41. package/dist/components/ImportForm/index.js +31 -0
  42. package/dist/components/ImportForm/index.js.map +1 -0
  43. package/dist/components/ImportForm/util.d.ts +3 -0
  44. package/dist/components/ImportForm/util.js +16 -0
  45. package/dist/components/ImportForm/util.js.map +1 -0
  46. package/dist/components/MSACanvas.d.ts +6 -0
  47. package/dist/components/MSACanvas.js +141 -0
  48. package/dist/components/MSACanvas.js.map +1 -0
  49. package/dist/components/MSAPanel/Loading.d.ts +2 -0
  50. package/dist/components/MSAPanel/Loading.js +12 -0
  51. package/dist/components/MSAPanel/Loading.js.map +1 -0
  52. package/dist/components/MSAPanel/MSABlock.d.ts +8 -0
  53. package/dist/components/MSAPanel/MSABlock.js +62 -0
  54. package/dist/components/MSAPanel/MSABlock.js.map +1 -0
  55. package/dist/components/MSAPanel/MSACanvas.d.ts +7 -0
  56. package/dist/components/MSAPanel/MSACanvas.js +69 -0
  57. package/dist/components/MSAPanel/MSACanvas.js.map +1 -0
  58. package/dist/components/MSAPanel/MSAMouseoverCanvas.d.ts +6 -0
  59. package/dist/components/MSAPanel/MSAMouseoverCanvas.js +27 -0
  60. package/dist/components/MSAPanel/MSAMouseoverCanvas.js.map +1 -0
  61. package/dist/components/MSAPanel/index.d.ts +5 -0
  62. package/dist/components/MSAPanel/index.js +9 -0
  63. package/dist/components/MSAPanel/index.js.map +1 -0
  64. package/dist/components/MSAPanel/renderMSABlock.d.ts +9 -0
  65. package/dist/components/MSAPanel/renderMSABlock.js +89 -0
  66. package/dist/components/MSAPanel/renderMSABlock.js.map +1 -0
  67. package/dist/components/MSAPanel/renderMSABlock_BACKUP_139826.d.ts +9 -0
  68. package/dist/components/MSAPanel/renderMSABlock_BACKUP_139826.js +89 -0
  69. package/dist/components/MSAPanel/renderMSABlock_BACKUP_139826.js.map +1 -0
  70. package/dist/components/MSAPanel/renderMSABlock_BASE_139826.d.ts +13 -0
  71. package/dist/components/MSAPanel/renderMSABlock_BASE_139826.js +82 -0
  72. package/dist/components/MSAPanel/renderMSABlock_BASE_139826.js.map +1 -0
  73. package/dist/components/MSAPanel/renderMSABlock_LOCAL_139826.d.ts +9 -0
  74. package/dist/components/MSAPanel/renderMSABlock_LOCAL_139826.js +89 -0
  75. package/dist/components/MSAPanel/renderMSABlock_LOCAL_139826.js.map +1 -0
  76. package/dist/components/MSAPanel/renderMSABlock_REMOTE_139826.d.ts +0 -0
  77. package/dist/components/MSAPanel/renderMSABlock_REMOTE_139826.js +2 -0
  78. package/dist/components/MSAPanel/renderMSABlock_REMOTE_139826.js.map +1 -0
  79. package/dist/components/MSAPanel/renderMSAMouseover.d.ts +5 -0
  80. package/dist/components/MSAPanel/renderMSAMouseover.js +30 -0
  81. package/dist/components/MSAPanel/renderMSAMouseover.js.map +1 -0
  82. package/dist/components/Minimap.d.ts +6 -0
  83. package/dist/components/Minimap.js +72 -0
  84. package/dist/components/Minimap.js.map +1 -0
  85. package/dist/components/MinimapSVG.d.ts +6 -0
  86. package/dist/components/MinimapSVG.js +25 -0
  87. package/dist/components/MinimapSVG.js.map +1 -0
  88. package/dist/components/MultiAlignmentSelector.d.ts +6 -0
  89. package/dist/components/MultiAlignmentSelector.js +13 -0
  90. package/dist/components/MultiAlignmentSelector.js.map +1 -0
  91. package/dist/components/TreePanel/TreeBranchMenu.d.ts +14 -0
  92. package/dist/components/TreePanel/TreeBranchMenu.js +26 -0
  93. package/dist/components/TreePanel/TreeBranchMenu.js.map +1 -0
  94. package/dist/components/TreePanel/TreeCanvas.d.ts +6 -0
  95. package/dist/components/TreePanel/TreeCanvas.js +100 -0
  96. package/dist/components/TreePanel/TreeCanvas.js.map +1 -0
  97. package/dist/components/TreePanel/TreeCanvasBlock.d.ts +7 -0
  98. package/dist/components/TreePanel/TreeCanvasBlock.js +118 -0
  99. package/dist/components/TreePanel/TreeCanvasBlock.js.map +1 -0
  100. package/dist/components/TreePanel/TreeNodeMenu.d.ts +13 -0
  101. package/dist/components/TreePanel/TreeNodeMenu.js +74 -0
  102. package/dist/components/TreePanel/TreeNodeMenu.js.map +1 -0
  103. package/dist/components/TreePanel/TreeRuler.d.ts +6 -0
  104. package/dist/components/TreePanel/TreeRuler.js +8 -0
  105. package/dist/components/TreePanel/TreeRuler.js.map +1 -0
  106. package/dist/components/TreePanel/dialogs/TreeNodeInfoDialog.d.ts +9 -0
  107. package/dist/components/TreePanel/dialogs/TreeNodeInfoDialog.js +16 -0
  108. package/dist/components/TreePanel/dialogs/TreeNodeInfoDialog.js.map +1 -0
  109. package/dist/components/TreePanel/index.d.ts +6 -0
  110. package/dist/components/TreePanel/index.js +10 -0
  111. package/dist/components/TreePanel/index.js.map +1 -0
  112. package/dist/components/TreePanel/renderTreeCanvas.d.ts +46 -0
  113. package/dist/components/TreePanel/renderTreeCanvas.js +180 -0
  114. package/dist/components/TreePanel/renderTreeCanvas.js.map +1 -0
  115. package/dist/components/VerticalGuide.d.ts +7 -0
  116. package/dist/components/VerticalGuide.js +30 -0
  117. package/dist/components/VerticalGuide.js.map +1 -0
  118. package/dist/components/ZoomControls.d.ts +6 -0
  119. package/dist/components/ZoomControls.js +59 -0
  120. package/dist/components/ZoomControls.js.map +1 -0
  121. package/dist/components/header/Header.js +1 -1
  122. package/dist/components/header/Header.js.map +1 -1
  123. package/dist/components/header/SettingsMenu.js +1 -1
  124. package/dist/components/header/SettingsMenu.js.map +1 -1
  125. package/dist/components/msa/MSACanvas_BACKUP_139826.d.ts +7 -0
  126. package/dist/components/msa/MSACanvas_BACKUP_139826.js +68 -0
  127. package/dist/components/msa/MSACanvas_BACKUP_139826.js.map +1 -0
  128. package/dist/components/msa/MSACanvas_BASE_139826.d.ts +6 -0
  129. package/dist/components/msa/MSACanvas_BASE_139826.js +107 -0
  130. package/dist/components/msa/MSACanvas_BASE_139826.js.map +1 -0
  131. package/dist/components/msa/MSACanvas_LOCAL_139826.d.ts +7 -0
  132. package/dist/components/msa/MSACanvas_LOCAL_139826.js +69 -0
  133. package/dist/components/msa/MSACanvas_LOCAL_139826.js.map +1 -0
  134. package/dist/components/msa/MSACanvas_REMOTE_139826.d.ts +6 -0
  135. package/dist/components/msa/MSACanvas_REMOTE_139826.js +106 -0
  136. package/dist/components/msa/MSACanvas_REMOTE_139826.js.map +1 -0
  137. package/dist/sansserif.d.ts +3 -0
  138. package/dist/sansserif.js +1583 -0
  139. package/dist/sansserif.js.map +1 -0
  140. package/dist/version.d.ts +1 -1
  141. package/dist/version.js +1 -1
  142. package/package.json +7 -2
  143. package/src/components/header/Header.tsx +1 -1
  144. package/src/components/header/SettingsMenu.tsx +1 -1
  145. package/src/version.ts +1 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Minimap.js","sourceRoot":"","sources":["../../src/components/Minimap.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import React from 'react';
2
+ import { MsaViewModel } from '../model';
3
+ declare const MinimapSVG: ({ model }: {
4
+ model: MsaViewModel;
5
+ }) => React.JSX.Element;
6
+ export default MinimapSVG;
@@ -0,0 +1,25 @@
1
+ import React from 'react';
2
+ import { observer } from 'mobx-react';
3
+ const MinimapSVG = observer(function ({ model }) {
4
+ const { scrollX, msaAreaWidth: W, minimapHeight: H, colWidth, numColumns, } = model;
5
+ const BAR_HEIGHT = 12;
6
+ const H2 = H - 12;
7
+ const unit = W / numColumns / colWidth;
8
+ const left = -scrollX;
9
+ const right = left + W;
10
+ const s = left * unit;
11
+ const e = right * unit;
12
+ const fill = 'rgba(66, 119, 127, 0.3)';
13
+ return (React.createElement(React.Fragment, null,
14
+ React.createElement("rect", { x: 0, y: 0, width: W, height: BAR_HEIGHT, stroke: "#555", fill: "none" }),
15
+ React.createElement("rect", { x: Math.max(0, s), y: 0, width: e - s, height: BAR_HEIGHT, fill: fill, stroke: "#555" }),
16
+ React.createElement("g", { transform: `translate(0 ${BAR_HEIGHT})` },
17
+ React.createElement("polygon", { fill: fill, points: [
18
+ [e, 0],
19
+ [s, 0],
20
+ [0, H2],
21
+ [W, H2],
22
+ ].toString() }))));
23
+ });
24
+ export default MinimapSVG;
25
+ //# sourceMappingURL=MinimapSVG.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MinimapSVG.js","sourceRoot":"","sources":["../../src/components/MinimapSVG.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AAGrC,MAAM,UAAU,GAAG,QAAQ,CAAC,UAAU,EAAE,KAAK,EAA2B;IACtE,MAAM,EACJ,OAAO,EACP,YAAY,EAAE,CAAC,EACf,aAAa,EAAE,CAAC,EAChB,QAAQ,EACR,UAAU,GACX,GAAG,KAAK,CAAA;IAET,MAAM,UAAU,GAAG,EAAE,CAAA;IACrB,MAAM,EAAE,GAAG,CAAC,GAAG,EAAE,CAAA;IAEjB,MAAM,IAAI,GAAG,CAAC,GAAG,UAAU,GAAG,QAAQ,CAAA;IACtC,MAAM,IAAI,GAAG,CAAC,OAAO,CAAA;IACrB,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,CAAA;IACtB,MAAM,CAAC,GAAG,IAAI,GAAG,IAAI,CAAA;IACrB,MAAM,CAAC,GAAG,KAAK,GAAG,IAAI,CAAA;IACtB,MAAM,IAAI,GAAG,yBAAyB,CAAA;IAEtC,OAAO,CACL;QACE,8BACE,CAAC,EAAE,CAAC,EACJ,CAAC,EAAE,CAAC,EACJ,KAAK,EAAE,CAAC,EACR,MAAM,EAAE,UAAU,EAClB,MAAM,EAAC,MAAM,EACb,IAAI,EAAC,MAAM,GACX;QACF,8BACE,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,EACjB,CAAC,EAAE,CAAC,EACJ,KAAK,EAAE,CAAC,GAAG,CAAC,EACZ,MAAM,EAAE,UAAU,EAClB,IAAI,EAAE,IAAI,EACV,MAAM,EAAC,MAAM,GACb;QACF,2BAAG,SAAS,EAAE,eAAe,UAAU,GAAG;YACxC,iCACE,IAAI,EAAE,IAAI,EACV,MAAM,EAAE;oBACN,CAAC,CAAC,EAAE,CAAC,CAAC;oBACN,CAAC,CAAC,EAAE,CAAC,CAAC;oBACN,CAAC,CAAC,EAAE,EAAE,CAAC;oBACP,CAAC,CAAC,EAAE,EAAE,CAAC;iBACR,CAAC,QAAQ,EAAE,GACZ,CACA,CACH,CACJ,CAAA;AACH,CAAC,CAAC,CAAA;AAEF,eAAe,UAAU,CAAA"}
@@ -0,0 +1,6 @@
1
+ import React from 'react';
2
+ import { MsaViewModel } from '../model';
3
+ declare const MultiAlignmentSelector: ({ model, }: {
4
+ model: MsaViewModel;
5
+ }) => React.JSX.Element | null;
6
+ export default MultiAlignmentSelector;
@@ -0,0 +1,13 @@
1
+ import React from 'react';
2
+ import { observer } from 'mobx-react';
3
+ import { Select } from '@mui/material';
4
+ const MultiAlignmentSelector = observer(function ({ model, }) {
5
+ const { currentAlignment, alignmentNames } = model;
6
+ return alignmentNames.length > 0 ? (React.createElement(Select, { native: true, value: currentAlignment, size: "small", onChange: event => {
7
+ model.setCurrentAlignment(+event.target.value);
8
+ model.setScrollX(0);
9
+ model.setScrollY(0);
10
+ } }, alignmentNames.map((option, index) => (React.createElement("option", { key: `${option}-${index}`, value: index }, option))))) : null;
11
+ });
12
+ export default MultiAlignmentSelector;
13
+ //# sourceMappingURL=MultiAlignmentSelector.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MultiAlignmentSelector.js","sourceRoot":"","sources":["../../src/components/MultiAlignmentSelector.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AACrC,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAA;AAKtC,MAAM,sBAAsB,GAAG,QAAQ,CAAC,UAAU,EAChD,KAAK,GAGN;IACC,MAAM,EAAE,gBAAgB,EAAE,cAAc,EAAE,GAAG,KAAK,CAAA;IAClD,OAAO,cAAc,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CACjC,oBAAC,MAAM,IACL,MAAM,QACN,KAAK,EAAE,gBAAgB,EACvB,IAAI,EAAC,OAAO,EACZ,QAAQ,EAAE,KAAK,CAAC,EAAE;YAChB,KAAK,CAAC,mBAAmB,CAAC,CAAE,KAAK,CAAC,MAAM,CAAC,KAAgB,CAAC,CAAA;YAC1D,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,CAAA;YACnB,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,CAAA;QACrB,CAAC,IAEA,cAAc,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC,CACrC,gCAAQ,GAAG,EAAE,GAAG,MAAM,IAAI,KAAK,EAAE,EAAE,KAAK,EAAE,KAAK,IAC5C,MAAM,CACA,CACV,CAAC,CACK,CACV,CAAC,CAAC,CAAC,IAAI,CAAA;AACV,CAAC,CAAC,CAAA;AACF,eAAe,sBAAsB,CAAA"}
@@ -0,0 +1,14 @@
1
+ import React from 'react';
2
+ import { MsaViewModel } from '../../model';
3
+ interface Node {
4
+ x: number;
5
+ y: number;
6
+ name: string;
7
+ id: string;
8
+ }
9
+ declare const TreeBranchMenu: ({ node, model, onClose, }: {
10
+ node: Node;
11
+ model: MsaViewModel;
12
+ onClose: () => void;
13
+ }) => React.JSX.Element;
14
+ export default TreeBranchMenu;
@@ -0,0 +1,26 @@
1
+ import React from 'react';
2
+ import { Menu, MenuItem } from '@mui/material';
3
+ import { observer } from 'mobx-react';
4
+ const TreeBranchMenu = observer(function ({ node, model, onClose, }) {
5
+ return (React.createElement(Menu, { anchorReference: "anchorPosition", anchorPosition: {
6
+ left: node.x,
7
+ top: node.y,
8
+ }, transitionDuration: 0, keepMounted: true, open: Boolean(node), onClose: onClose },
9
+ React.createElement(MenuItem, { dense: true, disabled: true }, node.name),
10
+ React.createElement(MenuItem, { dense: true, onClick: () => {
11
+ model.toggleCollapsed(node.id);
12
+ onClose();
13
+ } }, model.collapsed.includes(node.id)
14
+ ? 'Expand this node'
15
+ : 'Collapse this node'),
16
+ React.createElement(MenuItem, { dense: true, onClick: () => {
17
+ model.showOnly === node.id
18
+ ? model.setShowOnly(undefined)
19
+ : model.setShowOnly(node.id);
20
+ onClose();
21
+ } }, model.showOnly === node.id
22
+ ? 'Disable show only this node'
23
+ : 'Show only this node')));
24
+ });
25
+ export default TreeBranchMenu;
26
+ //# sourceMappingURL=TreeBranchMenu.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TreeBranchMenu.js","sourceRoot":"","sources":["../../../src/components/TreePanel/TreeBranchMenu.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AAC9C,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AAYrC,MAAM,cAAc,GAAG,QAAQ,CAAC,UAAU,EACxC,IAAI,EACJ,KAAK,EACL,OAAO,GAKR;IACC,OAAO,CACL,oBAAC,IAAI,IACH,eAAe,EAAC,gBAAgB,EAChC,cAAc,EAAE;YACd,IAAI,EAAE,IAAI,CAAC,CAAC;YACZ,GAAG,EAAE,IAAI,CAAC,CAAC;SACZ,EACD,kBAAkB,EAAE,CAAC,EACrB,WAAW,QACX,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,EACnB,OAAO,EAAE,OAAO;QAEhB,oBAAC,QAAQ,IAAC,KAAK,QAAC,QAAQ,UACrB,IAAI,CAAC,IAAI,CACD;QACX,oBAAC,QAAQ,IACP,KAAK,QACL,OAAO,EAAE,GAAG,EAAE;gBACZ,KAAK,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;gBAC9B,OAAO,EAAE,CAAA;YACX,CAAC,IAEA,KAAK,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;YAChC,CAAC,CAAC,kBAAkB;YACpB,CAAC,CAAC,oBAAoB,CACf;QACX,oBAAC,QAAQ,IACP,KAAK,QACL,OAAO,EAAE,GAAG,EAAE;gBACZ,KAAK,CAAC,QAAQ,KAAK,IAAI,CAAC,EAAE;oBACxB,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,SAAS,CAAC;oBAC9B,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;gBAC9B,OAAO,EAAE,CAAA;YACX,CAAC,IAEA,KAAK,CAAC,QAAQ,KAAK,IAAI,CAAC,EAAE;YACzB,CAAC,CAAC,6BAA6B;YAC/B,CAAC,CAAC,qBAAqB,CAChB,CACN,CACR,CAAA;AACH,CAAC,CAAC,CAAA;AAEF,eAAe,cAAc,CAAA"}
@@ -0,0 +1,6 @@
1
+ import React from 'react';
2
+ import { MsaViewModel } from '../../model';
3
+ declare const TreeCanvas: ({ model }: {
4
+ model: MsaViewModel;
5
+ }) => React.JSX.Element;
6
+ export default TreeCanvas;
@@ -0,0 +1,100 @@
1
+ import React, { useEffect, useRef, useState } from 'react';
2
+ import normalizeWheel from 'normalize-wheel';
3
+ import { observer } from 'mobx-react';
4
+ import TreeCanvasBlock from './TreeCanvasBlock';
5
+ import { padding } from './renderTreeCanvas';
6
+ const TreeCanvas = observer(function ({ model }) {
7
+ const ref = useRef(null);
8
+ const scheduled = useRef(false);
9
+ const deltaY = useRef(0);
10
+ const prevY = useRef(0);
11
+ const { treeWidth, height, blocksY } = model;
12
+ const [mouseDragging, setMouseDragging] = useState(false);
13
+ useEffect(() => {
14
+ const curr = ref.current;
15
+ if (!curr) {
16
+ return;
17
+ }
18
+ function onWheel(origEvent) {
19
+ const event = normalizeWheel(origEvent);
20
+ deltaY.current += event.pixelY;
21
+ if (!scheduled.current) {
22
+ scheduled.current = true;
23
+ requestAnimationFrame(() => {
24
+ model.doScrollY(-deltaY.current);
25
+ deltaY.current = 0;
26
+ scheduled.current = false;
27
+ });
28
+ }
29
+ origEvent.preventDefault();
30
+ }
31
+ curr.addEventListener('wheel', onWheel);
32
+ return () => {
33
+ curr.removeEventListener('wheel', onWheel);
34
+ };
35
+ }, [model]);
36
+ useEffect(() => {
37
+ let cleanup = () => { };
38
+ function globalMouseMove(event) {
39
+ event.preventDefault();
40
+ const currY = event.clientY;
41
+ const distanceY = currY - prevY.current;
42
+ if (distanceY) {
43
+ // use rAF to make it so multiple event handlers aren't fired per-frame
44
+ // see https://calendar.perfplanet.com/2013/the-runtime-performance-checklist/
45
+ if (!scheduled.current) {
46
+ scheduled.current = true;
47
+ window.requestAnimationFrame(() => {
48
+ model.doScrollY(distanceY);
49
+ scheduled.current = false;
50
+ prevY.current = event.clientY;
51
+ });
52
+ }
53
+ }
54
+ }
55
+ function globalMouseUp() {
56
+ prevY.current = 0;
57
+ if (mouseDragging) {
58
+ setMouseDragging(false);
59
+ }
60
+ }
61
+ if (mouseDragging) {
62
+ window.addEventListener('mousemove', globalMouseMove, true);
63
+ window.addEventListener('mouseup', globalMouseUp, true);
64
+ cleanup = () => {
65
+ window.removeEventListener('mousemove', globalMouseMove, true);
66
+ window.removeEventListener('mouseup', globalMouseUp, true);
67
+ };
68
+ }
69
+ return cleanup;
70
+ }, [model, mouseDragging]);
71
+ function mouseDown(event) {
72
+ // check if clicking a draggable element or a resize handle
73
+ const target = event.target;
74
+ if (target.draggable || target.dataset.resizer) {
75
+ return;
76
+ }
77
+ // otherwise do click and drag scroll
78
+ if (event.button === 0) {
79
+ prevY.current = event.clientY;
80
+ setMouseDragging(true);
81
+ }
82
+ }
83
+ // this local mouseup is used in addition to the global because sometimes
84
+ // the global add/remove are not called in time, resulting in issue #533
85
+ function mouseUp(event) {
86
+ event.preventDefault();
87
+ setMouseDragging(false);
88
+ }
89
+ function mouseLeave(event) {
90
+ event.preventDefault();
91
+ }
92
+ return (React.createElement("div", { ref: ref, onMouseDown: mouseDown, onMouseUp: mouseUp, onMouseLeave: mouseLeave, style: {
93
+ height,
94
+ position: 'relative',
95
+ overflow: 'hidden',
96
+ width: treeWidth + padding,
97
+ } }, blocksY.map(block => (React.createElement(TreeCanvasBlock, { key: block, model: model, offsetY: block })))));
98
+ });
99
+ export default TreeCanvas;
100
+ //# sourceMappingURL=TreeCanvas.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TreeCanvas.js","sourceRoot":"","sources":["../../../src/components/TreePanel/TreeCanvas.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import React from 'react';
2
+ import { MsaViewModel } from '../../model';
3
+ declare const TreeCanvasBlock: ({ model, offsetY, }: {
4
+ model: MsaViewModel;
5
+ offsetY: number;
6
+ }) => React.JSX.Element;
7
+ export default TreeCanvasBlock;
@@ -0,0 +1,118 @@
1
+ import React, { useCallback, useEffect, useRef, useState } from 'react';
2
+ import { autorun } from 'mobx';
3
+ import { observer } from 'mobx-react';
4
+ import { useTheme } from '@mui/material';
5
+ import RBush from 'rbush';
6
+ import TreeNodeMenu from './TreeNodeMenu';
7
+ import TreeBranchMenu from './TreeBranchMenu';
8
+ import { padding, renderTreeCanvas } from './renderTreeCanvas';
9
+ const TreeCanvasBlock = observer(function ({ model, offsetY, }) {
10
+ const theme = useTheme();
11
+ const ref = useRef();
12
+ const clickMap = useRef(new RBush());
13
+ const mouseoverRef = useRef(null);
14
+ const [branchMenu, setBranchMenu] = useState();
15
+ const [toggleNodeMenu, setToggleNodeMenu] = useState();
16
+ const [hoverElt, setHoverElt] = useState();
17
+ const { scrollY, treeAreaWidth, blockSize, highResScaleFactor } = model;
18
+ const width = treeAreaWidth + padding;
19
+ const height = blockSize;
20
+ const w2 = width * highResScaleFactor;
21
+ const h2 = height * highResScaleFactor;
22
+ const vref = useCallback((arg) => {
23
+ model.incrementRef();
24
+ ref.current = arg;
25
+ },
26
+ // eslint-disable-next-line react-hooks/exhaustive-deps
27
+ [model, height, width]);
28
+ useEffect(() => {
29
+ const ctx = ref.current?.getContext('2d');
30
+ if (!ctx) {
31
+ return;
32
+ }
33
+ return autorun(() => {
34
+ renderTreeCanvas({
35
+ ctx,
36
+ model,
37
+ offsetY,
38
+ clickMap: clickMap.current,
39
+ theme,
40
+ });
41
+ });
42
+ }, [model, offsetY, theme]);
43
+ useEffect(() => {
44
+ const ctx = mouseoverRef.current?.getContext('2d');
45
+ if (!ctx) {
46
+ return;
47
+ }
48
+ ctx.resetTransform();
49
+ ctx.clearRect(0, 0, treeAreaWidth + padding, blockSize);
50
+ ctx.translate(0, -offsetY);
51
+ if (hoverElt) {
52
+ const { minX, maxX, minY, maxY } = hoverElt;
53
+ ctx.fillStyle = 'rgba(0,0,0,0.1)';
54
+ ctx.fillRect(minX, minY, maxX - minX, maxY - minY);
55
+ }
56
+ }, [hoverElt, offsetY, blockSize, treeAreaWidth]);
57
+ function hoverBranchClickMap(event) {
58
+ const x = event.nativeEvent.offsetX;
59
+ const y = event.nativeEvent.offsetY;
60
+ const [entry] = clickMap.current.search({
61
+ minX: x,
62
+ maxX: x + 1,
63
+ minY: y + offsetY,
64
+ maxY: y + 1 + offsetY,
65
+ });
66
+ return entry && entry.branch
67
+ ? { ...entry, x: event.clientX, y: event.clientY }
68
+ : undefined;
69
+ }
70
+ function hoverNameClickMap(event) {
71
+ const x = event.nativeEvent.offsetX;
72
+ const y = event.nativeEvent.offsetY;
73
+ const [entry] = clickMap.current.search({
74
+ minX: x,
75
+ maxX: x + 1,
76
+ minY: y + offsetY,
77
+ maxY: y + 1 + offsetY,
78
+ });
79
+ return entry && !entry.branch
80
+ ? { ...entry, x: event.clientX, y: event.clientY }
81
+ : undefined;
82
+ }
83
+ const style = {
84
+ width,
85
+ height,
86
+ top: scrollY + offsetY,
87
+ left: 0,
88
+ position: 'absolute',
89
+ };
90
+ return (React.createElement(React.Fragment, null,
91
+ branchMenu?.id ? (React.createElement(TreeBranchMenu, { node: branchMenu, model: model, onClose: () => setBranchMenu(undefined) })) : null,
92
+ toggleNodeMenu?.id ? (React.createElement(TreeNodeMenu, { node: toggleNodeMenu, model: model, onClose: () => setToggleNodeMenu(undefined) })) : null,
93
+ React.createElement("canvas", { width: w2, height: h2, style: style, onMouseMove: event => {
94
+ if (!ref.current) {
95
+ return;
96
+ }
97
+ const ret = hoverNameClickMap(event) || hoverBranchClickMap(event);
98
+ ref.current.style.cursor = ret ? 'pointer' : 'default';
99
+ setHoverElt(hoverNameClickMap(event));
100
+ }, onClick: event => {
101
+ const { clientX: x, clientY: y } = event;
102
+ const data = hoverBranchClickMap(event);
103
+ if (data?.id) {
104
+ setBranchMenu({ ...data, x, y });
105
+ }
106
+ const data2 = hoverNameClickMap(event);
107
+ if (data2?.id) {
108
+ setToggleNodeMenu({ ...data2, x, y });
109
+ }
110
+ }, onMouseLeave: () => setHoverElt(undefined), ref: vref }),
111
+ React.createElement("canvas", { style: {
112
+ ...style,
113
+ pointerEvents: 'none',
114
+ zIndex: 100,
115
+ }, width: width, height: height, ref: mouseoverRef })));
116
+ });
117
+ export default TreeCanvasBlock;
118
+ //# sourceMappingURL=TreeCanvasBlock.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TreeCanvasBlock.js","sourceRoot":"","sources":["../../../src/components/TreePanel/TreeCanvasBlock.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ import React from 'react';
2
+ import { MsaViewModel } from '../../model';
3
+ declare const TreeMenu: ({ node, onClose, model, }: {
4
+ node: {
5
+ x: number;
6
+ y: number;
7
+ name: string;
8
+ id: string;
9
+ };
10
+ model: MsaViewModel;
11
+ onClose: () => void;
12
+ }) => React.JSX.Element;
13
+ export default TreeMenu;
@@ -0,0 +1,74 @@
1
+ import React, { lazy } from 'react';
2
+ import { Menu, MenuItem } from '@mui/material';
3
+ import { observer } from 'mobx-react';
4
+ // lazies
5
+ const TreeNodeInfoDialog = lazy(() => import('./dialogs/TreeNodeInfoDialog'));
6
+ const TreeMenu = observer(function ({ node, onClose, model, }) {
7
+ const { selectedStructures, collapsed, collapsed2, structures } = model;
8
+ const nodeDetails = node ? model.getRowData(node.name) : undefined;
9
+ return (React.createElement(Menu, { anchorReference: "anchorPosition", anchorPosition: {
10
+ top: node.y,
11
+ left: node.x,
12
+ }, transitionDuration: 0, keepMounted: true, open: Boolean(node), onClose: onClose },
13
+ React.createElement(MenuItem, { dense: true, disabled: true }, node.name),
14
+ React.createElement(MenuItem, { dense: true, onClick: () => {
15
+ model.queueDialog(onClose => [
16
+ TreeNodeInfoDialog,
17
+ {
18
+ info: model.getRowData(node.name),
19
+ model,
20
+ nodeName: node.name,
21
+ onClose,
22
+ },
23
+ ]);
24
+ onClose();
25
+ } }, "More info..."),
26
+ React.createElement(MenuItem, { dense: true, onClick: () => {
27
+ if (collapsed.includes(node.id)) {
28
+ model.toggleCollapsed(node.id);
29
+ }
30
+ else {
31
+ if (node.id.endsWith('-leafnode')) {
32
+ model.toggleCollapsed2(`${node.id}`);
33
+ }
34
+ else {
35
+ model.toggleCollapsed2(`${node.id}-leafnode`);
36
+ }
37
+ }
38
+ onClose();
39
+ } }, collapsed.includes(node.id) || collapsed2.includes(node.id)
40
+ ? 'Show node'
41
+ : 'Hide node'),
42
+ structures[node.name]?.map(entry => !selectedStructures.some(n => n.id === node.name) ? (React.createElement(MenuItem, { key: JSON.stringify(entry), dense: true, onClick: () => {
43
+ model.addStructureToSelection({
44
+ structure: entry,
45
+ id: node.name,
46
+ });
47
+ onClose();
48
+ } },
49
+ "Add PDB to selection (",
50
+ entry.pdb,
51
+ ")")) : (React.createElement(MenuItem, { key: JSON.stringify(entry), dense: true, onClick: () => {
52
+ model.removeStructureFromSelection({
53
+ structure: entry,
54
+ id: node.name,
55
+ });
56
+ onClose();
57
+ } },
58
+ "Remove PDB from selection (",
59
+ entry.pdb,
60
+ ")"))), // @ts-expect-error
61
+ nodeDetails?.data.accession?.map(accession => (React.createElement(MenuItem, { dense: true, key: accession, onClick: () => {
62
+ model.addUniprotTrack({
63
+ // @ts-expect-error
64
+ name: nodeDetails?.data.name,
65
+ accession,
66
+ });
67
+ onClose();
68
+ } },
69
+ "Open UniProt track (",
70
+ accession,
71
+ ")")))));
72
+ });
73
+ export default TreeMenu;
74
+ //# sourceMappingURL=TreeNodeMenu.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TreeNodeMenu.js","sourceRoot":"","sources":["../../../src/components/TreePanel/TreeNodeMenu.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import React from 'react';
2
+ import { MsaViewModel } from '../../model';
3
+ declare const TreeRuler: ({ model }: {
4
+ model: MsaViewModel;
5
+ }) => React.JSX.Element;
6
+ export default TreeRuler;
@@ -0,0 +1,8 @@
1
+ import React from 'react';
2
+ import { observer } from 'mobx-react';
3
+ const TreeRuler = observer(({ model }) => {
4
+ const { treeAreaWidth } = model;
5
+ return React.createElement("div", { style: { flexShrink: 0, width: treeAreaWidth } });
6
+ });
7
+ export default TreeRuler;
8
+ //# sourceMappingURL=TreeRuler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TreeRuler.js","sourceRoot":"","sources":["../../../src/components/TreePanel/TreeRuler.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AAKrC,MAAM,SAAS,GAAG,QAAQ,CAAC,CAAC,EAAE,KAAK,EAA2B,EAAE,EAAE;IAChE,MAAM,EAAE,aAAa,EAAE,GAAG,KAAK,CAAA;IAC/B,OAAO,6BAAK,KAAK,EAAE,EAAE,UAAU,EAAE,CAAC,EAAE,KAAK,EAAE,aAAa,EAAE,GAAI,CAAA;AAChE,CAAC,CAAC,CAAA;AAEF,eAAe,SAAS,CAAA"}
@@ -0,0 +1,9 @@
1
+ import React from 'react';
2
+ import { MsaViewModel } from '../../../model';
3
+ declare const _default: ({ info, model, nodeName, onClose, }: {
4
+ info: Record<string, unknown>;
5
+ model: MsaViewModel;
6
+ nodeName: string;
7
+ onClose: () => void;
8
+ }) => React.JSX.Element;
9
+ export default _default;
@@ -0,0 +1,16 @@
1
+ import React from 'react';
2
+ import { Dialog } from '@jbrowse/core/ui';
3
+ import { DialogContent } from '@mui/material';
4
+ import { observer } from 'mobx-react';
5
+ import { Attributes, BaseCard, } from '@jbrowse/core/BaseFeatureWidget/BaseFeatureDetail';
6
+ export default observer(function ({ info, model, nodeName, onClose, }) {
7
+ const { treeMetadata } = model;
8
+ const metadata = treeMetadata[nodeName];
9
+ return (React.createElement(Dialog, { onClose: () => onClose(), open: true, title: "Tree node info" },
10
+ React.createElement(DialogContent, null,
11
+ React.createElement(BaseCard, { title: "Attributes" },
12
+ React.createElement(Attributes, { attributes: { nodeName, ...info } })),
13
+ metadata ? (React.createElement(BaseCard, { title: "Extra metadata" },
14
+ React.createElement(Attributes, { attributes: metadata }))) : null)));
15
+ });
16
+ //# sourceMappingURL=TreeNodeInfoDialog.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TreeNodeInfoDialog.js","sourceRoot":"","sources":["../../../../src/components/TreePanel/dialogs/TreeNodeInfoDialog.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAA;AACzC,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAA;AAC7C,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AACrC,OAAO,EACL,UAAU,EACV,QAAQ,GACT,MAAM,mDAAmD,CAAA;AAG1D,eAAe,QAAQ,CAAC,UAAU,EAChC,IAAI,EACJ,KAAK,EACL,QAAQ,EACR,OAAO,GAMR;IACC,MAAM,EAAE,YAAY,EAAE,GAAG,KAAK,CAAA;IAC9B,MAAM,QAAQ,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAA;IACvC,OAAO,CACL,oBAAC,MAAM,IAAC,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,EAAE,EAAE,IAAI,QAAC,KAAK,EAAC,gBAAgB;QAC3D,oBAAC,aAAa;YACZ,oBAAC,QAAQ,IAAC,KAAK,EAAC,YAAY;gBAC1B,oBAAC,UAAU,IAAC,UAAU,EAAE,EAAE,QAAQ,EAAE,GAAG,IAAI,EAAE,GAAI,CACxC;YACV,QAAQ,CAAC,CAAC,CAAC,CACV,oBAAC,QAAQ,IAAC,KAAK,EAAC,gBAAgB;gBAC9B,oBAAC,UAAU,IAAC,UAAU,EAAE,QAAQ,GAAI,CAC3B,CACZ,CAAC,CAAC,CAAC,IAAI,CACM,CACT,CACV,CAAA;AACH,CAAC,CAAC,CAAA"}
@@ -0,0 +1,6 @@
1
+ import React from 'react';
2
+ import { MsaViewModel } from '../../model';
3
+ declare const TreePanel: ({ model }: {
4
+ model: MsaViewModel;
5
+ }) => React.JSX.Element;
6
+ export default TreePanel;
@@ -0,0 +1,10 @@
1
+ import React from 'react';
2
+ import { observer } from 'mobx-react';
3
+ import TreeCanvas from './TreeCanvas';
4
+ const TreePanel = observer(function ({ model }) {
5
+ const { treeAreaWidth } = model;
6
+ return (React.createElement("div", { style: { flexShrink: 0, width: treeAreaWidth } },
7
+ React.createElement(TreeCanvas, { model: model })));
8
+ });
9
+ export default TreePanel;
10
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/TreePanel/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AAGrC,OAAO,UAAU,MAAM,cAAc,CAAA;AAErC,MAAM,SAAS,GAAG,QAAQ,CAAC,UAAU,EAAE,KAAK,EAA2B;IACrE,MAAM,EAAE,aAAa,EAAE,GAAG,KAAK,CAAA;IAC/B,OAAO,CACL,6BAAK,KAAK,EAAE,EAAE,UAAU,EAAE,CAAC,EAAE,KAAK,EAAE,aAAa,EAAE;QACjD,oBAAC,UAAU,IAAC,KAAK,EAAE,KAAK,GAAI,CACxB,CACP,CAAA;AACH,CAAC,CAAC,CAAA;AAEF,eAAe,SAAS,CAAA"}
@@ -0,0 +1,46 @@
1
+ import RBush from 'rbush';
2
+ import { Theme } from '@mui/material';
3
+ import { MsaViewModel } from '../../model';
4
+ export declare const padding = 600;
5
+ interface ClickEntry {
6
+ name: string;
7
+ id: string;
8
+ branch?: boolean;
9
+ minX: number;
10
+ maxX: number;
11
+ minY: number;
12
+ maxY: number;
13
+ }
14
+ export declare function renderTree({ offsetY, ctx, model, theme, blockSizeYOverride, }: {
15
+ offsetY: number;
16
+ ctx: CanvasRenderingContext2D;
17
+ model: MsaViewModel;
18
+ theme: Theme;
19
+ blockSizeYOverride?: number;
20
+ }): void;
21
+ export declare function renderNodeBubbles({ ctx, clickMap, offsetY, model, blockSizeYOverride, }: {
22
+ ctx: CanvasRenderingContext2D;
23
+ clickMap?: RBush<ClickEntry>;
24
+ offsetY: number;
25
+ model: MsaViewModel;
26
+ theme: Theme;
27
+ blockSizeYOverride?: number;
28
+ }): void;
29
+ export declare function renderTreeLabels({ theme, model, offsetY, ctx, clickMap, blockSizeYOverride, }: {
30
+ model: MsaViewModel;
31
+ offsetY: number;
32
+ ctx: CanvasRenderingContext2D;
33
+ clickMap?: RBush<ClickEntry>;
34
+ theme: Theme;
35
+ blockSizeYOverride?: number;
36
+ }): void;
37
+ export declare function renderTreeCanvas({ model, clickMap, ctx, offsetY, theme, highResScaleFactorOverride, blockSizeYOverride, }: {
38
+ model: MsaViewModel;
39
+ offsetY: number;
40
+ ctx: CanvasRenderingContext2D;
41
+ clickMap?: RBush<ClickEntry>;
42
+ theme: Theme;
43
+ highResScaleFactorOverride?: number;
44
+ blockSizeYOverride?: number;
45
+ }): void;
46
+ export {};