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.
- package/bundle/index.js +10 -10
- package/bundle/index.js.LICENSE.txt +5 -5
- package/bundle/index.js.map +1 -1
- package/dist/DataModel.d.ts +34 -0
- package/dist/DataModel.js +46 -0
- package/dist/DataModel.js.map +1 -0
- package/dist/DialogQueue.d.ts +25 -0
- package/dist/DialogQueue.js +44 -0
- package/dist/DialogQueue.js.map +1 -0
- package/dist/SelectedStructuresMixin.d.ts +46 -0
- package/dist/SelectedStructuresMixin.js +52 -0
- package/dist/SelectedStructuresMixin.js.map +1 -0
- package/dist/StructureModel.d.ts +9 -0
- package/dist/StructureModel.js +11 -0
- package/dist/StructureModel.js.map +1 -0
- package/dist/UniprotTrack.d.ts +27 -0
- package/dist/UniprotTrack.js +53 -0
- package/dist/UniprotTrack.js.map +1 -0
- package/dist/components/BoxTrack.d.ts +7 -0
- package/dist/components/BoxTrack.js +15 -0
- package/dist/components/BoxTrack.js.map +1 -0
- package/dist/components/BoxTrackBlock.d.ts +8 -0
- package/dist/components/BoxTrackBlock.js +136 -0
- package/dist/components/BoxTrackBlock.js.map +1 -0
- package/dist/components/ExportSVGDialog.d.ts +6 -0
- package/dist/components/ExportSVGDialog.js +39 -0
- package/dist/components/ExportSVGDialog.js.map +1 -0
- package/dist/components/Header.d.ts +6 -0
- package/dist/components/Header.js +62 -0
- package/dist/components/Header.js.map +1 -0
- package/dist/components/HeaderInfoArea.d.ts +6 -0
- package/dist/components/HeaderInfoArea.js +12 -0
- package/dist/components/HeaderInfoArea.js.map +1 -0
- package/dist/components/ImportForm/ImportFormExamples.d.ts +6 -0
- package/dist/components/ImportForm/ImportFormExamples.js +50 -0
- package/dist/components/ImportForm/ImportFormExamples.js.map +1 -0
- package/dist/components/ImportForm/data/seq2.d.ts +3 -0
- package/dist/components/ImportForm/data/seq2.js +33 -0
- package/dist/components/ImportForm/data/seq2.js.map +1 -0
- package/dist/components/ImportForm/index.d.ts +6 -0
- package/dist/components/ImportForm/index.js +31 -0
- package/dist/components/ImportForm/index.js.map +1 -0
- package/dist/components/ImportForm/util.d.ts +3 -0
- package/dist/components/ImportForm/util.js +16 -0
- package/dist/components/ImportForm/util.js.map +1 -0
- package/dist/components/MSACanvas.d.ts +6 -0
- package/dist/components/MSACanvas.js +141 -0
- package/dist/components/MSACanvas.js.map +1 -0
- package/dist/components/MSAPanel/Loading.d.ts +2 -0
- package/dist/components/MSAPanel/Loading.js +12 -0
- package/dist/components/MSAPanel/Loading.js.map +1 -0
- package/dist/components/MSAPanel/MSABlock.d.ts +8 -0
- package/dist/components/MSAPanel/MSABlock.js +62 -0
- package/dist/components/MSAPanel/MSABlock.js.map +1 -0
- package/dist/components/MSAPanel/MSACanvas.d.ts +7 -0
- package/dist/components/MSAPanel/MSACanvas.js +69 -0
- package/dist/components/MSAPanel/MSACanvas.js.map +1 -0
- package/dist/components/MSAPanel/MSAMouseoverCanvas.d.ts +6 -0
- package/dist/components/MSAPanel/MSAMouseoverCanvas.js +27 -0
- package/dist/components/MSAPanel/MSAMouseoverCanvas.js.map +1 -0
- package/dist/components/MSAPanel/index.d.ts +5 -0
- package/dist/components/MSAPanel/index.js +9 -0
- package/dist/components/MSAPanel/index.js.map +1 -0
- package/dist/components/MSAPanel/renderMSABlock.d.ts +9 -0
- package/dist/components/MSAPanel/renderMSABlock.js +89 -0
- package/dist/components/MSAPanel/renderMSABlock.js.map +1 -0
- package/dist/components/MSAPanel/renderMSABlock_BACKUP_139826.d.ts +9 -0
- package/dist/components/MSAPanel/renderMSABlock_BACKUP_139826.js +89 -0
- package/dist/components/MSAPanel/renderMSABlock_BACKUP_139826.js.map +1 -0
- package/dist/components/MSAPanel/renderMSABlock_BASE_139826.d.ts +13 -0
- package/dist/components/MSAPanel/renderMSABlock_BASE_139826.js +82 -0
- package/dist/components/MSAPanel/renderMSABlock_BASE_139826.js.map +1 -0
- package/dist/components/MSAPanel/renderMSABlock_LOCAL_139826.d.ts +9 -0
- package/dist/components/MSAPanel/renderMSABlock_LOCAL_139826.js +89 -0
- package/dist/components/MSAPanel/renderMSABlock_LOCAL_139826.js.map +1 -0
- package/dist/components/MSAPanel/renderMSABlock_REMOTE_139826.d.ts +0 -0
- package/dist/components/MSAPanel/renderMSABlock_REMOTE_139826.js +2 -0
- package/dist/components/MSAPanel/renderMSABlock_REMOTE_139826.js.map +1 -0
- package/dist/components/MSAPanel/renderMSAMouseover.d.ts +5 -0
- package/dist/components/MSAPanel/renderMSAMouseover.js +30 -0
- package/dist/components/MSAPanel/renderMSAMouseover.js.map +1 -0
- package/dist/components/Minimap.d.ts +6 -0
- package/dist/components/Minimap.js +72 -0
- package/dist/components/Minimap.js.map +1 -0
- package/dist/components/MinimapSVG.d.ts +6 -0
- package/dist/components/MinimapSVG.js +25 -0
- package/dist/components/MinimapSVG.js.map +1 -0
- package/dist/components/MultiAlignmentSelector.d.ts +6 -0
- package/dist/components/MultiAlignmentSelector.js +13 -0
- package/dist/components/MultiAlignmentSelector.js.map +1 -0
- package/dist/components/TreePanel/TreeBranchMenu.d.ts +14 -0
- package/dist/components/TreePanel/TreeBranchMenu.js +26 -0
- package/dist/components/TreePanel/TreeBranchMenu.js.map +1 -0
- package/dist/components/TreePanel/TreeCanvas.d.ts +6 -0
- package/dist/components/TreePanel/TreeCanvas.js +100 -0
- package/dist/components/TreePanel/TreeCanvas.js.map +1 -0
- package/dist/components/TreePanel/TreeCanvasBlock.d.ts +7 -0
- package/dist/components/TreePanel/TreeCanvasBlock.js +118 -0
- package/dist/components/TreePanel/TreeCanvasBlock.js.map +1 -0
- package/dist/components/TreePanel/TreeNodeMenu.d.ts +13 -0
- package/dist/components/TreePanel/TreeNodeMenu.js +74 -0
- package/dist/components/TreePanel/TreeNodeMenu.js.map +1 -0
- package/dist/components/TreePanel/TreeRuler.d.ts +6 -0
- package/dist/components/TreePanel/TreeRuler.js +8 -0
- package/dist/components/TreePanel/TreeRuler.js.map +1 -0
- package/dist/components/TreePanel/dialogs/TreeNodeInfoDialog.d.ts +9 -0
- package/dist/components/TreePanel/dialogs/TreeNodeInfoDialog.js +16 -0
- package/dist/components/TreePanel/dialogs/TreeNodeInfoDialog.js.map +1 -0
- package/dist/components/TreePanel/index.d.ts +6 -0
- package/dist/components/TreePanel/index.js +10 -0
- package/dist/components/TreePanel/index.js.map +1 -0
- package/dist/components/TreePanel/renderTreeCanvas.d.ts +46 -0
- package/dist/components/TreePanel/renderTreeCanvas.js +180 -0
- package/dist/components/TreePanel/renderTreeCanvas.js.map +1 -0
- package/dist/components/VerticalGuide.d.ts +7 -0
- package/dist/components/VerticalGuide.js +30 -0
- package/dist/components/VerticalGuide.js.map +1 -0
- package/dist/components/ZoomControls.d.ts +6 -0
- package/dist/components/ZoomControls.js +59 -0
- package/dist/components/ZoomControls.js.map +1 -0
- package/dist/components/header/Header.js +1 -1
- package/dist/components/header/Header.js.map +1 -1
- package/dist/components/header/SettingsMenu.js +1 -1
- package/dist/components/header/SettingsMenu.js.map +1 -1
- package/dist/components/msa/MSACanvas_BACKUP_139826.d.ts +7 -0
- package/dist/components/msa/MSACanvas_BACKUP_139826.js +68 -0
- package/dist/components/msa/MSACanvas_BACKUP_139826.js.map +1 -0
- package/dist/components/msa/MSACanvas_BASE_139826.d.ts +6 -0
- package/dist/components/msa/MSACanvas_BASE_139826.js +107 -0
- package/dist/components/msa/MSACanvas_BASE_139826.js.map +1 -0
- package/dist/components/msa/MSACanvas_LOCAL_139826.d.ts +7 -0
- package/dist/components/msa/MSACanvas_LOCAL_139826.js +69 -0
- package/dist/components/msa/MSACanvas_LOCAL_139826.js.map +1 -0
- package/dist/components/msa/MSACanvas_REMOTE_139826.d.ts +6 -0
- package/dist/components/msa/MSACanvas_REMOTE_139826.js +106 -0
- package/dist/components/msa/MSACanvas_REMOTE_139826.js.map +1 -0
- package/dist/sansserif.d.ts +3 -0
- package/dist/sansserif.js +1583 -0
- package/dist/sansserif.js.map +1 -0
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/package.json +7 -2
- package/src/components/header/Header.tsx +1 -1
- package/src/components/header/SettingsMenu.tsx +1 -1
- package/src/version.ts +1 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Minimap.js","sourceRoot":"","sources":["../../src/components/Minimap.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AAC1D,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AAGrC,MAAM,OAAO,GAAG,QAAQ,CAAC,UAAU,EAAE,KAAK,EAA2B;IACnE,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,QAAQ,EAGtC,CAAA;IACJ,MAAM,SAAS,GAAG,MAAM,CAAC,KAAK,CAAC,CAAA;IAC/B,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAA;IAC7C,MAAM,EACJ,OAAO,EACP,YAAY,EAAE,CAAC,EACf,aAAa,EAAE,CAAC,EAChB,QAAQ,EACR,UAAU,GACX,GAAG,KAAK,CAAA;IACT,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,SAAS,CAAC,GAAG,EAAE;QACb,SAAS,EAAE,CAAC,KAAiB;YAC3B,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;gBAC5B,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;oBACvB,SAAS,CAAC,OAAO,GAAG,IAAI,CAAA;oBACxB,MAAM,CAAC,qBAAqB,CAAC,GAAG,EAAE;wBAChC,KAAK,CAAC,UAAU,CACd,SAAS,CAAC,OAAO,GAAG,CAAC,KAAK,CAAC,OAAO,GAAG,SAAS,CAAC,OAAO,CAAC,GAAG,IAAI,CAC/D,CAAA;wBACD,SAAS,CAAC,OAAO,GAAG,KAAK,CAAA;oBAC3B,CAAC,CAAC,CAAA;gBACJ,CAAC;YACH,CAAC;QACH,CAAC;QACD,SAAS,GAAG;YACV,YAAY,CAAC,SAAS,CAAC,CAAA;QACzB,CAAC;QACD,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;YAC5B,QAAQ,CAAC,gBAAgB,CAAC,WAAW,EAAE,EAAE,CAAC,CAAA;YAC1C,QAAQ,CAAC,gBAAgB,CAAC,SAAS,EAAE,GAAG,CAAC,CAAA;YACzC,OAAO,GAAG,EAAE;gBACV,QAAQ,CAAC,mBAAmB,CAAC,WAAW,EAAE,EAAE,CAAC,CAAA;gBAC7C,QAAQ,CAAC,mBAAmB,CAAC,WAAW,EAAE,GAAG,CAAC,CAAA;YAChD,CAAC,CAAA;QACH,CAAC;IACH,CAAC,EAAE,CAAC,KAAK,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC,CAAA;IAE5B,MAAM,UAAU,GAAG,EAAE,CAAA;IACrB,MAAM,EAAE,GAAG,CAAC,GAAG,EAAE,CAAA;IACjB,OAAO,CACL,6BAAK,KAAK,EAAE,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE;QAC5D,6BACE,KAAK,EAAE;gBACL,SAAS,EAAE,YAAY;gBACvB,MAAM,EAAE,UAAU;gBAClB,MAAM,EAAE,gBAAgB;aACzB,GACD;QACF,6BACE,KAAK,EAAE;gBACL,QAAQ,EAAE,UAAU;gBACpB,GAAG,EAAE,CAAC;gBACN,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;gBACpB,UAAU,EAAE,OAAO,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,IAAI;gBACnD,MAAM,EAAE,SAAS;gBACjB,MAAM,EAAE,gBAAgB;gBACxB,SAAS,EAAE,YAAY;gBACvB,MAAM,EAAE,UAAU;gBAClB,KAAK,EAAE,CAAC,GAAG,CAAC;gBACZ,MAAM,EAAE,GAAG;aACZ,EACD,WAAW,EAAE,GAAG,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,EACnC,UAAU,EAAE,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,EACnC,WAAW,EAAE,KAAK,CAAC,EAAE;gBACnB,YAAY,CAAC;oBACX,OAAO,EAAE,KAAK,CAAC,OAAO;oBACtB,OAAO,EAAE,KAAK,CAAC,OAAO;iBACvB,CAAC,CAAA;YACJ,CAAC,GACD;QAEF,6BAAK,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE;YACvC,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,CACE,CACF,CACP,CAAA;AACH,CAAC,CAAC,CAAA;AAEF,eAAe,OAAO,CAAA"}
|
|
@@ -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,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,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,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,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,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 {};
|