react-msaview 2.1.5 → 3.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bundle/index.js +37 -255
- package/dist/DialogQueue.d.ts +25 -0
- package/dist/DialogQueue.js +46 -0
- package/dist/DialogQueue.js.map +1 -0
- package/dist/UniprotTrack.js.map +1 -1
- package/dist/colorSchemes.js.map +1 -1
- package/dist/components/BoxTrackBlock.js +3 -2
- package/dist/components/BoxTrackBlock.js.map +1 -1
- package/dist/components/Header.js +12 -20
- package/dist/components/Header.js.map +1 -1
- 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.js.map +1 -0
- package/dist/components/{ImportForm.d.ts → ImportForm/index.d.ts} +1 -1
- 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 +15 -0
- package/dist/components/ImportForm/util.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/{MSABlock.d.ts → MSAPanel/MSABlock.d.ts} +1 -1
- package/dist/components/MSAPanel/MSABlock.js +46 -0
- package/dist/components/MSAPanel/MSABlock.js.map +1 -0
- package/dist/components/{MSACanvas.d.ts → MSAPanel/MSACanvas.d.ts} +1 -1
- package/dist/components/{MSACanvas.js → MSAPanel/MSACanvas.js} +2 -4
- package/dist/components/MSAPanel/MSACanvas.js.map +1 -0
- package/dist/components/{MSAMouseoverCanvas.d.ts → MSAPanel/MSAMouseoverCanvas.d.ts} +1 -1
- package/dist/components/MSAPanel/MSAMouseoverCanvas.js +29 -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 +8 -0
- package/dist/components/MSAPanel/renderMSABlock.js +80 -0
- package/dist/components/MSAPanel/renderMSABlock.js.map +1 -0
- package/dist/components/MSAPanel/renderMSAMouseover.d.ts +5 -0
- package/dist/components/MSAPanel/renderMSAMouseover.js +24 -0
- package/dist/components/MSAPanel/renderMSAMouseover.js.map +1 -0
- package/dist/components/MSAView.d.ts +2 -2
- package/dist/components/MSAView.js +26 -31
- package/dist/components/MSAView.js.map +1 -1
- 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/ResizeHandles.js.map +1 -1
- package/dist/components/TextTrack.js +3 -2
- package/dist/components/TextTrack.js.map +1 -1
- package/dist/components/Track.js +5 -5
- package/dist/components/Track.js.map +1 -1
- package/dist/components/{TreeBranchMenu.d.ts → TreePanel/TreeBranchMenu.d.ts} +1 -1
- package/dist/components/TreePanel/TreeBranchMenu.js.map +1 -0
- package/dist/components/{TreeCanvas.d.ts → TreePanel/TreeCanvas.d.ts} +1 -1
- package/dist/components/{TreeCanvas.js → TreePanel/TreeCanvas.js} +1 -1
- package/dist/components/TreePanel/TreeCanvas.js.map +1 -0
- package/dist/components/{TreeCanvasBlock.d.ts → TreePanel/TreeCanvasBlock.d.ts} +1 -1
- package/dist/components/TreePanel/TreeCanvasBlock.js +121 -0
- package/dist/components/TreePanel/TreeCanvasBlock.js.map +1 -0
- package/dist/components/{TreeMenu.d.ts → TreePanel/TreeNodeMenu.d.ts} +2 -1
- package/dist/components/{TreeMenu.js → TreePanel/TreeNodeMenu.js} +16 -8
- package/dist/components/TreePanel/TreeNodeMenu.js.map +1 -0
- package/dist/components/{TreeRuler.d.ts → TreePanel/TreeRuler.d.ts} +1 -1
- package/dist/components/TreePanel/TreeRuler.js +8 -0
- package/dist/components/TreePanel/TreeRuler.js.map +1 -0
- package/dist/components/{dialogs/TreeNodeInfoDlg.d.ts → TreePanel/dialogs/TreeNodeInfoDialog.d.ts} +1 -1
- package/dist/components/{dialogs/TreeNodeInfoDlg.js → TreePanel/dialogs/TreeNodeInfoDialog.js} +2 -2
- 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 +41 -0
- package/dist/components/TreePanel/renderTreeCanvas.js +154 -0
- package/dist/components/TreePanel/renderTreeCanvas.js.map +1 -0
- package/dist/components/dialogs/{AboutDlg.js → AboutDialog.js} +1 -1
- package/dist/components/dialogs/AboutDialog.js.map +1 -0
- package/dist/components/dialogs/{AddTrackDlg.js → AddTrackDialog.js} +1 -1
- package/dist/components/dialogs/AddTrackDialog.js.map +1 -0
- package/dist/components/dialogs/{MetadataDlg.js → MetadataDialog.js} +1 -1
- package/dist/components/dialogs/MetadataDialog.js.map +1 -0
- package/dist/components/dialogs/SettingsDialog.js +63 -0
- package/dist/components/dialogs/SettingsDialog.js.map +1 -0
- package/dist/components/dialogs/{TrackInfoDlg.js → TrackInfoDialog.js} +1 -1
- package/dist/components/dialogs/TrackInfoDialog.js.map +1 -0
- package/dist/components/dialogs/{TracklistDlg.js → TracklistDialog.js} +1 -1
- package/dist/components/dialogs/TracklistDialog.js.map +1 -0
- package/dist/components/util.js.map +1 -1
- package/dist/layout.js.map +1 -1
- package/dist/model.d.ts +179 -88
- package/dist/model.js +287 -175
- package/dist/model.js.map +1 -1
- package/dist/parseNewick.js.map +1 -1
- package/dist/parsers/ClustalMSA.d.ts +1 -1
- package/dist/parsers/ClustalMSA.js +1 -1
- package/dist/parsers/ClustalMSA.js.map +1 -1
- package/dist/parsers/FastaMSA.d.ts +1 -1
- package/dist/parsers/FastaMSA.js +2 -2
- package/dist/parsers/FastaMSA.js.map +1 -1
- package/dist/parsers/StockholmMSA.d.ts +1 -1
- package/dist/parsers/StockholmMSA.js +2 -2
- package/dist/parsers/StockholmMSA.js.map +1 -1
- package/dist/util.d.ts +1 -0
- package/dist/util.js +15 -7
- package/dist/util.js.map +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/package.json +6 -4
- package/src/DialogQueue.ts +47 -0
- package/src/components/BoxTrackBlock.tsx +3 -1
- package/src/components/Header.tsx +13 -20
- package/src/components/HeaderInfoArea.tsx +21 -0
- package/src/components/ImportForm/ImportFormExamples.tsx +133 -0
- package/src/components/ImportForm/index.tsx +63 -0
- package/src/components/ImportForm/util.ts +20 -0
- package/src/components/MSAPanel/Loading.tsx +16 -0
- package/src/components/MSAPanel/MSABlock.tsx +81 -0
- package/src/components/{MSACanvas.tsx → MSAPanel/MSACanvas.tsx} +3 -6
- package/src/components/MSAPanel/MSAMouseoverCanvas.tsx +44 -0
- package/src/components/MSAPanel/index.tsx +13 -0
- package/src/components/MSAPanel/renderMSABlock.ts +158 -0
- package/src/components/MSAPanel/renderMSAMouseover.ts +51 -0
- package/src/components/MSAView.tsx +36 -56
- package/src/components/Minimap.tsx +102 -0
- package/src/components/TextTrack.tsx +3 -1
- package/src/components/Track.tsx +5 -5
- package/src/components/{TreeBranchMenu.tsx → TreePanel/TreeBranchMenu.tsx} +1 -1
- package/src/components/{TreeCanvas.tsx → TreePanel/TreeCanvas.tsx} +2 -3
- package/src/components/TreePanel/TreeCanvasBlock.tsx +195 -0
- package/src/components/{TreeMenu.tsx → TreePanel/TreeNodeMenu.tsx} +21 -8
- package/src/components/{TreeRuler.tsx → TreePanel/TreeRuler.tsx} +3 -3
- package/src/components/{dialogs/TreeNodeInfoDlg.tsx → TreePanel/dialogs/TreeNodeInfoDialog.tsx} +2 -2
- package/src/components/TreePanel/index.tsx +16 -0
- package/src/components/TreePanel/renderTreeCanvas.ts +254 -0
- package/src/components/dialogs/SettingsDialog.tsx +196 -0
- package/src/model.ts +414 -211
- package/src/parsers/ClustalMSA.ts +1 -1
- package/src/parsers/FastaMSA.ts +1 -1
- package/src/parsers/StockholmMSA.ts +1 -1
- package/src/util.ts +19 -6
- package/src/version.ts +1 -1
- package/dist/components/ImportForm.js +0 -84
- package/dist/components/ImportForm.js.map +0 -1
- package/dist/components/MSABlock.js +0 -103
- package/dist/components/MSABlock.js.map +0 -1
- package/dist/components/MSACanvas.js.map +0 -1
- package/dist/components/MSAMouseoverCanvas.js +0 -61
- package/dist/components/MSAMouseoverCanvas.js.map +0 -1
- package/dist/components/Rubberband.d.ts +0 -8
- package/dist/components/Rubberband.js +0 -173
- package/dist/components/Rubberband.js.map +0 -1
- package/dist/components/Ruler.d.ts +0 -6
- package/dist/components/Ruler.js +0 -52
- package/dist/components/Ruler.js.map +0 -1
- package/dist/components/TreeBranchMenu.js.map +0 -1
- package/dist/components/TreeCanvas.js.map +0 -1
- package/dist/components/TreeCanvasBlock.js +0 -255
- package/dist/components/TreeCanvasBlock.js.map +0 -1
- package/dist/components/TreeMenu.js.map +0 -1
- package/dist/components/TreeRuler.js +0 -8
- package/dist/components/TreeRuler.js.map +0 -1
- package/dist/components/data/seq2.js.map +0 -1
- package/dist/components/dialogs/AboutDlg.js.map +0 -1
- package/dist/components/dialogs/AddTrackDlg.js.map +0 -1
- package/dist/components/dialogs/AnnotationDlg.d.ts +0 -11
- package/dist/components/dialogs/AnnotationDlg.js +0 -65
- package/dist/components/dialogs/AnnotationDlg.js.map +0 -1
- package/dist/components/dialogs/MetadataDlg.js.map +0 -1
- package/dist/components/dialogs/SettingsDlg.js +0 -48
- package/dist/components/dialogs/SettingsDlg.js.map +0 -1
- package/dist/components/dialogs/TrackInfoDlg.js.map +0 -1
- package/dist/components/dialogs/TracklistDlg.js.map +0 -1
- package/dist/components/dialogs/TreeNodeInfoDlg.js.map +0 -1
- package/src/components/ImportForm.tsx +0 -192
- package/src/components/MSABlock.tsx +0 -164
- package/src/components/MSAMouseoverCanvas.tsx +0 -99
- package/src/components/Rubberband.tsx +0 -270
- package/src/components/Ruler.tsx +0 -123
- package/src/components/TreeCanvasBlock.tsx +0 -363
- package/src/components/dialogs/AnnotationDlg.tsx +0 -144
- package/src/components/dialogs/SettingsDlg.tsx +0 -154
- /package/dist/components/{data → ImportForm/data}/seq2.d.ts +0 -0
- /package/dist/components/{data → ImportForm/data}/seq2.js +0 -0
- /package/dist/components/{TreeBranchMenu.js → TreePanel/TreeBranchMenu.js} +0 -0
- /package/dist/components/dialogs/{AboutDlg.d.ts → AboutDialog.d.ts} +0 -0
- /package/dist/components/dialogs/{AddTrackDlg.d.ts → AddTrackDialog.d.ts} +0 -0
- /package/dist/components/dialogs/{MetadataDlg.d.ts → MetadataDialog.d.ts} +0 -0
- /package/dist/components/dialogs/{SettingsDlg.d.ts → SettingsDialog.d.ts} +0 -0
- /package/dist/components/dialogs/{TrackInfoDlg.d.ts → TrackInfoDialog.d.ts} +0 -0
- /package/dist/components/dialogs/{TracklistDlg.d.ts → TracklistDialog.d.ts} +0 -0
- /package/src/components/{data → ImportForm/data}/seq2.ts +0 -0
- /package/src/components/dialogs/{AboutDlg.tsx → AboutDialog.tsx} +0 -0
- /package/src/components/dialogs/{AddTrackDlg.tsx → AddTrackDialog.tsx} +0 -0
- /package/src/components/dialogs/{MetadataDlg.tsx → MetadataDialog.tsx} +0 -0
- /package/src/components/dialogs/{TrackInfoDlg.tsx → TrackInfoDialog.tsx} +0 -0
- /package/src/components/dialogs/{TracklistDlg.tsx → TracklistDialog.tsx} +0 -0
package/src/parsers/FastaMSA.ts
CHANGED
package/src/util.ts
CHANGED
|
@@ -109,21 +109,23 @@ export function skipBlanks(blanks: number[], arg: string | string[]) {
|
|
|
109
109
|
return s
|
|
110
110
|
}
|
|
111
111
|
|
|
112
|
+
// basically same as setRadius from https://observablehq.com/@d3/tree-of-life
|
|
112
113
|
export function setBrLength(
|
|
113
114
|
d: HierarchyNode<NodeWithIds>,
|
|
114
115
|
y0: number,
|
|
115
116
|
k: number,
|
|
116
117
|
) {
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
}
|
|
118
|
+
if (d.children) {
|
|
119
|
+
d.children.forEach(d => {
|
|
120
|
+
setBrLength(d, y0, k)
|
|
121
|
+
})
|
|
122
|
+
}
|
|
122
123
|
}
|
|
123
124
|
|
|
125
|
+
// basically same as maxLength from https://observablehq.com/@d3/tree-of-life
|
|
124
126
|
export function maxLength(d: HierarchyNode<NodeWithIds>): number {
|
|
125
127
|
return (
|
|
126
|
-
(d.data.length ||
|
|
128
|
+
(d.data.length || 0) + (d.children ? max(d.children, maxLength) || 0 : 0)
|
|
127
129
|
)
|
|
128
130
|
}
|
|
129
131
|
|
|
@@ -140,6 +142,17 @@ export function collapse(d: HierarchyNode<NodeWithIds>) {
|
|
|
140
142
|
}
|
|
141
143
|
}
|
|
142
144
|
|
|
145
|
+
// Collapse the node and all it's children, from
|
|
146
|
+
// https://bl.ocks.org/d3noob/43a860bc0024792f8803bba8ca0d5ecd
|
|
147
|
+
export function filterHiddenLeafNodes(
|
|
148
|
+
d: HierarchyNode<NodeWithIds> | null,
|
|
149
|
+
hiddenId?: string,
|
|
150
|
+
) {
|
|
151
|
+
if (d?.children) {
|
|
152
|
+
d.children = d.children.filter(f => f.id !== hiddenId)
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
|
|
143
156
|
export function clamp(min: number, num: number, max: number) {
|
|
144
157
|
return Math.min(Math.max(num, min), max)
|
|
145
158
|
}
|
package/src/version.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export const version = '
|
|
1
|
+
export const version = '3.0.1'
|
|
@@ -1,84 +0,0 @@
|
|
|
1
|
-
import React, { useState } from 'react';
|
|
2
|
-
import { Button, Container, Grid, Typography, Link } from '@mui/material';
|
|
3
|
-
import { observer } from 'mobx-react';
|
|
4
|
-
import { FileSelector } from '@jbrowse/core/ui';
|
|
5
|
-
import { smallTree, smallMSA, smallMSAOnly } from './data/seq2';
|
|
6
|
-
async function load(model, msaFile, treeFile) {
|
|
7
|
-
model.setError(undefined);
|
|
8
|
-
try {
|
|
9
|
-
if (msaFile) {
|
|
10
|
-
await model.setMSAFilehandle(msaFile);
|
|
11
|
-
}
|
|
12
|
-
if (treeFile) {
|
|
13
|
-
await model.setTreeFilehandle(treeFile);
|
|
14
|
-
}
|
|
15
|
-
}
|
|
16
|
-
catch (e) {
|
|
17
|
-
model.setError(e);
|
|
18
|
-
}
|
|
19
|
-
}
|
|
20
|
-
const ListItem = ({ onClick, model, children, }) => (React.createElement("li", null,
|
|
21
|
-
React.createElement(Link, { onClick: event => {
|
|
22
|
-
model.setError(undefined);
|
|
23
|
-
event.preventDefault();
|
|
24
|
-
onClick();
|
|
25
|
-
}, href: "#" },
|
|
26
|
-
React.createElement(Typography, { display: "inline" }, children))));
|
|
27
|
-
export default observer(({ model }) => {
|
|
28
|
-
const [msaFile, setMsaFile] = useState();
|
|
29
|
-
const [treeFile, setTreeFile] = useState();
|
|
30
|
-
const { error } = model;
|
|
31
|
-
return (React.createElement(Container, null,
|
|
32
|
-
React.createElement("div", { style: { width: '50%' } },
|
|
33
|
-
error ? (React.createElement("div", { style: { padding: 20 } },
|
|
34
|
-
React.createElement(Typography, { color: "error" },
|
|
35
|
-
"Error: ",
|
|
36
|
-
`${error}`))) : null,
|
|
37
|
-
React.createElement(Typography, null, "Open an MSA file (stockholm or clustal format) and/or a tree file (newick format)."),
|
|
38
|
-
React.createElement(Typography, { color: "error" }, "Note: you can open up just an MSA or just a tree, both are not required. Some MSA files e.g. stockholm format have an embedded tree also and this is fine, and opening a separate tree file is not required.")),
|
|
39
|
-
React.createElement(Grid, { container: true, spacing: 10, justifyContent: "center", alignItems: "center" },
|
|
40
|
-
React.createElement(Grid, { item: true },
|
|
41
|
-
React.createElement(Typography, null, "MSA file or URL"),
|
|
42
|
-
React.createElement(FileSelector, { location: msaFile, setLocation: setMsaFile }),
|
|
43
|
-
React.createElement(Typography, null, "Tree file or URL"),
|
|
44
|
-
React.createElement(FileSelector, { location: treeFile, setLocation: setTreeFile })),
|
|
45
|
-
React.createElement(Grid, { item: true },
|
|
46
|
-
React.createElement(Button, { onClick: () => load(model, msaFile, treeFile), variant: "contained", color: "primary", disabled: !msaFile && !treeFile }, "Open")),
|
|
47
|
-
React.createElement(Grid, { item: true },
|
|
48
|
-
React.createElement(Typography, null, "Examples"),
|
|
49
|
-
React.createElement("ul", null,
|
|
50
|
-
React.createElement(ListItem, { model: model, onClick: () => load(model, undefined, {
|
|
51
|
-
uri: 'https://jbrowse.org/genomes/newick_trees/sarscov2phylo.pub.ft.nh',
|
|
52
|
-
locationType: 'UriLocation',
|
|
53
|
-
}) }, "230k COVID-19 samples (tree only)"),
|
|
54
|
-
React.createElement(ListItem, { model: model, onClick: () => {
|
|
55
|
-
model.setData({ msa: smallMSA, tree: smallTree });
|
|
56
|
-
} }, "Small protein MSA+tree"),
|
|
57
|
-
React.createElement(ListItem, { model: model, onClick: () => {
|
|
58
|
-
model.setData({ msa: smallMSAOnly });
|
|
59
|
-
} }, "Small MSA only"),
|
|
60
|
-
React.createElement(ListItem, { model: model, onClick: () => load(model, {
|
|
61
|
-
uri: 'https://ihh.github.io/abrowse/build/pfam-cov2.stock',
|
|
62
|
-
locationType: 'UriLocation',
|
|
63
|
-
}) }, "PFAM SARS-CoV2 multi-stockholm"),
|
|
64
|
-
React.createElement(ListItem, { model: model, onClick: () => load(model, {
|
|
65
|
-
uri: 'https://jbrowse.org/genomes/multiple_sequence_alignments/Lysine.stock',
|
|
66
|
-
locationType: 'UriLocation',
|
|
67
|
-
}) }, "Lysine stockholm file"),
|
|
68
|
-
React.createElement(ListItem, { model: model, onClick: () => load(model, {
|
|
69
|
-
uri: 'https://jbrowse.org/genomes/multiple_sequence_alignments/PF01601_full.txt',
|
|
70
|
-
locationType: 'UriLocation',
|
|
71
|
-
}) }, "PF01601 stockholm file (SARS-CoV2 spike protein)"),
|
|
72
|
-
React.createElement(ListItem, { model: model, onClick: () => load(model, {
|
|
73
|
-
uri: 'https://jbrowse.org/genomes/multiple_sequence_alignments/europe_covid.fa',
|
|
74
|
-
locationType: 'UriLocation',
|
|
75
|
-
}) }, "Europe COVID full genomes (LR883044.1 and 199 other sequences)"),
|
|
76
|
-
React.createElement(ListItem, { model: model, onClick: () => load(model, {
|
|
77
|
-
uri: 'https://jbrowse.org/genomes/multiple_sequence_alignments/rhv_test-only.aligned_with_mafft_auto.fa',
|
|
78
|
-
locationType: 'UriLocation',
|
|
79
|
-
}, {
|
|
80
|
-
uri: 'https://jbrowse.org/genomes/multiple_sequence_alignments/rhv_test-only.aligned_with_mafft_auto.nh',
|
|
81
|
-
locationType: 'UriLocation',
|
|
82
|
-
}) }, "MAFFT+VeryFastTree(17.9k samples)"))))));
|
|
83
|
-
});
|
|
84
|
-
//# sourceMappingURL=ImportForm.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ImportForm.js","sourceRoot":"","sources":["../../src/components/ImportForm.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,103 +0,0 @@
|
|
|
1
|
-
import React, { useEffect, useRef, useMemo } from 'react';
|
|
2
|
-
import { useTheme } from '@mui/material';
|
|
3
|
-
import { observer } from 'mobx-react';
|
|
4
|
-
import { colorContrast } from '../util';
|
|
5
|
-
import { getClustalXColor, getPercentIdentityColor } from '../colorSchemes';
|
|
6
|
-
const MSABlock = observer(function ({ model, offsetX, offsetY, }) {
|
|
7
|
-
const { MSA, colWidth, bgColor, columns, rowHeight, scrollY, scrollX, hierarchy, colorScheme, colorSchemeName, blockSize, highResScaleFactor, colStats, } = model;
|
|
8
|
-
const theme = useTheme();
|
|
9
|
-
const contrastScheme = useMemo(() => colorContrast(colorScheme, theme), [colorScheme, theme]);
|
|
10
|
-
const ref = useRef(null);
|
|
11
|
-
useEffect(() => {
|
|
12
|
-
var _a, _b;
|
|
13
|
-
if (!ref.current) {
|
|
14
|
-
return;
|
|
15
|
-
}
|
|
16
|
-
const ctx = ref.current.getContext('2d');
|
|
17
|
-
if (!ctx) {
|
|
18
|
-
return;
|
|
19
|
-
}
|
|
20
|
-
ctx.resetTransform();
|
|
21
|
-
ctx.scale(highResScaleFactor, highResScaleFactor);
|
|
22
|
-
ctx.clearRect(0, 0, blockSize, blockSize);
|
|
23
|
-
ctx.translate(-offsetX, rowHeight / 2 - offsetY);
|
|
24
|
-
ctx.textAlign = 'center';
|
|
25
|
-
ctx.font = ctx.font.replace(/\d+px/, `${Math.max(8, rowHeight - 8)}px`);
|
|
26
|
-
const leaves = hierarchy.leaves();
|
|
27
|
-
const b = blockSize;
|
|
28
|
-
// slice vertical rows, e.g. tree leaves, avoid negative slice
|
|
29
|
-
const yStart = Math.max(0, Math.floor((offsetY - rowHeight) / rowHeight));
|
|
30
|
-
const yEnd = Math.max(0, Math.ceil((offsetY + b + rowHeight) / rowHeight));
|
|
31
|
-
// slice horizontal visible letters, avoid negative slice
|
|
32
|
-
const xStart = Math.max(0, Math.floor(offsetX / colWidth));
|
|
33
|
-
const xEnd = Math.max(0, Math.ceil((offsetX + b) / colWidth));
|
|
34
|
-
const visibleLeaves = leaves.slice(yStart, yEnd);
|
|
35
|
-
for (const node of visibleLeaves) {
|
|
36
|
-
const {
|
|
37
|
-
// @ts-expect-error
|
|
38
|
-
x: y, data: { name }, } = node;
|
|
39
|
-
const str = (_a = columns[name]) === null || _a === void 0 ? void 0 : _a.slice(xStart, xEnd);
|
|
40
|
-
for (let i = 0; i < (str === null || str === void 0 ? void 0 : str.length); i++) {
|
|
41
|
-
const letter = str[i];
|
|
42
|
-
const color = colorSchemeName === 'clustalx_protein_dynamic'
|
|
43
|
-
? getClustalXColor(colStats[xStart + i], model, name, xStart + i)
|
|
44
|
-
: colorSchemeName === 'percent_identity_dynamic'
|
|
45
|
-
? getPercentIdentityColor(colStats[xStart + i], model, name, xStart + i)
|
|
46
|
-
: colorScheme[letter.toUpperCase()];
|
|
47
|
-
if (bgColor) {
|
|
48
|
-
const x = i * colWidth + offsetX - (offsetX % colWidth);
|
|
49
|
-
ctx.fillStyle = color || 'white';
|
|
50
|
-
ctx.fillRect(x, y - rowHeight, colWidth, rowHeight);
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
if (rowHeight >= 5 && colWidth > rowHeight / 2) {
|
|
55
|
-
for (const node of visibleLeaves) {
|
|
56
|
-
const {
|
|
57
|
-
// @ts-expect-error
|
|
58
|
-
x: y, data: { name }, } = node;
|
|
59
|
-
const str = (_b = columns[name]) === null || _b === void 0 ? void 0 : _b.slice(xStart, xEnd);
|
|
60
|
-
for (let i = 0; i < (str === null || str === void 0 ? void 0 : str.length); i++) {
|
|
61
|
-
const letter = str[i];
|
|
62
|
-
const color = colorScheme[letter.toUpperCase()];
|
|
63
|
-
const contrast = contrastScheme[letter.toUpperCase()] || 'black';
|
|
64
|
-
const x = i * colWidth + offsetX - (offsetX % colWidth);
|
|
65
|
-
// note: -rowHeight/4 matches +rowHeight/4 in tree
|
|
66
|
-
ctx.fillStyle = bgColor ? contrast : color || 'black';
|
|
67
|
-
ctx.fillText(letter, x + colWidth / 2, y - rowHeight / 4);
|
|
68
|
-
}
|
|
69
|
-
}
|
|
70
|
-
}
|
|
71
|
-
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
72
|
-
}, [
|
|
73
|
-
MSA,
|
|
74
|
-
highResScaleFactor,
|
|
75
|
-
columns,
|
|
76
|
-
colorScheme,
|
|
77
|
-
contrastScheme,
|
|
78
|
-
bgColor,
|
|
79
|
-
rowHeight,
|
|
80
|
-
colWidth,
|
|
81
|
-
hierarchy,
|
|
82
|
-
offsetX,
|
|
83
|
-
offsetY,
|
|
84
|
-
blockSize,
|
|
85
|
-
]);
|
|
86
|
-
return (React.createElement("canvas", { ref: ref, onMouseMove: event => {
|
|
87
|
-
if (!ref.current) {
|
|
88
|
-
return;
|
|
89
|
-
}
|
|
90
|
-
const { left, top } = ref.current.getBoundingClientRect();
|
|
91
|
-
const mouseX = event.clientX - left + offsetX;
|
|
92
|
-
const mouseY = event.clientY - top + offsetY;
|
|
93
|
-
model.setMousePos(Math.floor(mouseX / colWidth) + 1, Math.floor(mouseY / rowHeight));
|
|
94
|
-
}, onMouseLeave: () => model.setMousePos(), width: blockSize * highResScaleFactor, height: blockSize * highResScaleFactor, style: {
|
|
95
|
-
position: 'absolute',
|
|
96
|
-
top: scrollY + offsetY,
|
|
97
|
-
left: scrollX + offsetX,
|
|
98
|
-
width: blockSize,
|
|
99
|
-
height: blockSize,
|
|
100
|
-
} }));
|
|
101
|
-
});
|
|
102
|
-
export default MSABlock;
|
|
103
|
-
//# sourceMappingURL=MSABlock.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"MSABlock.js","sourceRoot":"","sources":["../../src/components/MSABlock.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"MSACanvas.js","sourceRoot":"","sources":["../../src/components/MSACanvas.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,61 +0,0 @@
|
|
|
1
|
-
import React, { useEffect, useRef } from 'react';
|
|
2
|
-
import { observer } from 'mobx-react';
|
|
3
|
-
import { sum } from '@jbrowse/core/util';
|
|
4
|
-
const MSAMouseoverCanvas = observer(function ({ model, }) {
|
|
5
|
-
const ref = useRef(null);
|
|
6
|
-
const { height, width, treeAreaWidth, resizeHandleWidth, rulerHeight, turnedOnTracks, scrollX, scrollY, mouseCol,
|
|
7
|
-
// @ts-expect-error
|
|
8
|
-
mouseCol2, mouseRow, rowHeight, colWidth, } = model;
|
|
9
|
-
const totalTrackAreaHeight = sum(turnedOnTracks.map(r => r.model.height));
|
|
10
|
-
useEffect(() => {
|
|
11
|
-
if (!ref.current) {
|
|
12
|
-
return;
|
|
13
|
-
}
|
|
14
|
-
const ctx = ref.current.getContext('2d');
|
|
15
|
-
if (!ctx) {
|
|
16
|
-
return;
|
|
17
|
-
}
|
|
18
|
-
ctx.resetTransform();
|
|
19
|
-
ctx.clearRect(0, 0, width, height);
|
|
20
|
-
if (mouseCol !== undefined) {
|
|
21
|
-
ctx.fillStyle = 'rgba(0,0,0,0.15)';
|
|
22
|
-
const x = (mouseCol - 1) * colWidth + scrollX + treeAreaWidth + resizeHandleWidth;
|
|
23
|
-
ctx.fillRect(x, 0, colWidth, height);
|
|
24
|
-
}
|
|
25
|
-
if (mouseRow !== undefined) {
|
|
26
|
-
ctx.fillStyle = 'rgba(0,0,0,0.15)';
|
|
27
|
-
const y = mouseRow * rowHeight + scrollY + rulerHeight + totalTrackAreaHeight;
|
|
28
|
-
ctx.fillRect(treeAreaWidth + resizeHandleWidth, y, width, rowHeight);
|
|
29
|
-
}
|
|
30
|
-
if (mouseCol2 !== undefined) {
|
|
31
|
-
ctx.fillStyle = 'rgba(255,255,0,0.2)';
|
|
32
|
-
const x = (mouseCol2 - 1) * colWidth + scrollX + treeAreaWidth + resizeHandleWidth;
|
|
33
|
-
ctx.fillRect(x, 0, colWidth, height);
|
|
34
|
-
}
|
|
35
|
-
}, [
|
|
36
|
-
mouseCol,
|
|
37
|
-
mouseCol2,
|
|
38
|
-
colWidth,
|
|
39
|
-
scrollY,
|
|
40
|
-
totalTrackAreaHeight,
|
|
41
|
-
mouseRow,
|
|
42
|
-
rowHeight,
|
|
43
|
-
rulerHeight,
|
|
44
|
-
scrollX,
|
|
45
|
-
height,
|
|
46
|
-
resizeHandleWidth,
|
|
47
|
-
treeAreaWidth,
|
|
48
|
-
width,
|
|
49
|
-
]);
|
|
50
|
-
return (React.createElement("canvas", { ref: ref, width: width, height: height, style: {
|
|
51
|
-
position: 'absolute',
|
|
52
|
-
top: 0,
|
|
53
|
-
left: 0,
|
|
54
|
-
width,
|
|
55
|
-
height,
|
|
56
|
-
zIndex: 1000,
|
|
57
|
-
pointerEvents: 'none',
|
|
58
|
-
} }));
|
|
59
|
-
});
|
|
60
|
-
export default MSAMouseoverCanvas;
|
|
61
|
-
//# sourceMappingURL=MSAMouseoverCanvas.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"MSAMouseoverCanvas.js","sourceRoot":"","sources":["../../src/components/MSAMouseoverCanvas.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,OAAO,CAAA;AAChD,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AAIrC,OAAO,EAAE,GAAG,EAAE,MAAM,oBAAoB,CAAA;AAExC,MAAM,kBAAkB,GAAG,QAAQ,CAAC,UAAU,EAC5C,KAAK,GAGN;IACC,MAAM,GAAG,GAAG,MAAM,CAAoB,IAAI,CAAC,CAAA;IAC3C,MAAM,EACJ,MAAM,EACN,KAAK,EACL,aAAa,EACb,iBAAiB,EACjB,WAAW,EACX,cAAc,EACd,OAAO,EACP,OAAO,EACP,QAAQ;IACR,mBAAmB;IACnB,SAAS,EACT,QAAQ,EACR,SAAS,EACT,QAAQ,GACT,GAAG,KAAK,CAAA;IACT,MAAM,oBAAoB,GAAG,GAAG,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAA;IACzE,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE;YAChB,OAAM;SACP;QAED,MAAM,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,CAAA;QACxC,IAAI,CAAC,GAAG,EAAE;YACR,OAAM;SACP;QAED,GAAG,CAAC,cAAc,EAAE,CAAA;QACpB,GAAG,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,CAAA;QAElC,IAAI,QAAQ,KAAK,SAAS,EAAE;YAC1B,GAAG,CAAC,SAAS,GAAG,kBAAkB,CAAA;YAClC,MAAM,CAAC,GACL,CAAC,QAAQ,GAAG,CAAC,CAAC,GAAG,QAAQ,GAAG,OAAO,GAAG,aAAa,GAAG,iBAAiB,CAAA;YAEzE,GAAG,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAA;SACrC;QAED,IAAI,QAAQ,KAAK,SAAS,EAAE;YAC1B,GAAG,CAAC,SAAS,GAAG,kBAAkB,CAAA;YAClC,MAAM,CAAC,GACL,QAAQ,GAAG,SAAS,GAAG,OAAO,GAAG,WAAW,GAAG,oBAAoB,CAAA;YACrE,GAAG,CAAC,QAAQ,CAAC,aAAa,GAAG,iBAAiB,EAAE,CAAC,EAAE,KAAK,EAAE,SAAS,CAAC,CAAA;SACrE;QACD,IAAI,SAAS,KAAK,SAAS,EAAE;YAC3B,GAAG,CAAC,SAAS,GAAG,qBAAqB,CAAA;YACrC,MAAM,CAAC,GACL,CAAC,SAAS,GAAG,CAAC,CAAC,GAAG,QAAQ,GAAG,OAAO,GAAG,aAAa,GAAG,iBAAiB,CAAA;YAE1E,GAAG,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAA;SACrC;IACH,CAAC,EAAE;QACD,QAAQ;QACR,SAAS;QACT,QAAQ;QACR,OAAO;QACP,oBAAoB;QACpB,QAAQ;QACR,SAAS;QACT,WAAW;QACX,OAAO;QACP,MAAM;QACN,iBAAiB;QACjB,aAAa;QACb,KAAK;KACN,CAAC,CAAA;IAEF,OAAO,CACL,gCACE,GAAG,EAAE,GAAG,EACR,KAAK,EAAE,KAAK,EACZ,MAAM,EAAE,MAAM,EACd,KAAK,EAAE;YACL,QAAQ,EAAE,UAAU;YACpB,GAAG,EAAE,CAAC;YACN,IAAI,EAAE,CAAC;YACP,KAAK;YACL,MAAM;YACN,MAAM,EAAE,IAAI;YACZ,aAAa,EAAE,MAAM;SACtB,GACD,CACH,CAAA;AACH,CAAC,CAAC,CAAA;AAEF,eAAe,kBAAkB,CAAA"}
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
|
-
import { MsaViewModel } from '../model';
|
|
3
|
-
declare function Rubberband({ model, ControlComponent, }: {
|
|
4
|
-
model: MsaViewModel;
|
|
5
|
-
ControlComponent?: React.ReactElement;
|
|
6
|
-
}): React.JSX.Element;
|
|
7
|
-
declare const _default: typeof Rubberband;
|
|
8
|
-
export default _default;
|
|
@@ -1,173 +0,0 @@
|
|
|
1
|
-
import React, { useRef, useEffect, useState } from 'react';
|
|
2
|
-
import { observer } from 'mobx-react';
|
|
3
|
-
import { makeStyles } from 'tss-react/mui';
|
|
4
|
-
import { Popover, Typography, alpha } from '@mui/material';
|
|
5
|
-
import { Menu } from '@jbrowse/core/ui';
|
|
6
|
-
// icons
|
|
7
|
-
import AssignmentIcon from '@mui/icons-material/Assignment';
|
|
8
|
-
import VerticalGuide from './VerticalGuide';
|
|
9
|
-
const useStyles = makeStyles()(theme => {
|
|
10
|
-
const background = 'tertiary' in theme.palette && theme.palette.tertiary
|
|
11
|
-
? alpha(theme.palette.tertiary.main, 0.7)
|
|
12
|
-
: alpha(theme.palette.primary.main, 0.7);
|
|
13
|
-
return {
|
|
14
|
-
rubberband: {
|
|
15
|
-
height: '100%',
|
|
16
|
-
background,
|
|
17
|
-
position: 'absolute',
|
|
18
|
-
zIndex: 10,
|
|
19
|
-
textAlign: 'center',
|
|
20
|
-
overflow: 'hidden',
|
|
21
|
-
},
|
|
22
|
-
rubberbandControl: {
|
|
23
|
-
cursor: 'crosshair',
|
|
24
|
-
width: '100%',
|
|
25
|
-
minHeight: 8,
|
|
26
|
-
},
|
|
27
|
-
rubberbandText: {
|
|
28
|
-
color: theme.palette.tertiary
|
|
29
|
-
? theme.palette.tertiary.contrastText
|
|
30
|
-
: theme.palette.primary.contrastText,
|
|
31
|
-
},
|
|
32
|
-
popover: {
|
|
33
|
-
mouseEvents: 'none',
|
|
34
|
-
cursor: 'crosshair',
|
|
35
|
-
},
|
|
36
|
-
paper: {
|
|
37
|
-
paddingLeft: theme.spacing(1),
|
|
38
|
-
paddingRight: theme.spacing(1),
|
|
39
|
-
},
|
|
40
|
-
};
|
|
41
|
-
});
|
|
42
|
-
function Rubberband({ model, ControlComponent = React.createElement("div", null), }) {
|
|
43
|
-
const { treeAreaWidth } = model;
|
|
44
|
-
const [startX, setStartX] = useState();
|
|
45
|
-
const [currentX, setCurrentX] = useState();
|
|
46
|
-
// clientX and clientY used for anchorPosition for menu
|
|
47
|
-
// offsetX used for calculations about width of selection
|
|
48
|
-
const [anchorPosition, setAnchorPosition] = useState();
|
|
49
|
-
const [guideX, setGuideX] = useState();
|
|
50
|
-
const controlsRef = useRef(null);
|
|
51
|
-
const rubberbandRef = useRef(null);
|
|
52
|
-
const { classes } = useStyles();
|
|
53
|
-
const mouseDragging = startX !== undefined && anchorPosition === undefined;
|
|
54
|
-
useEffect(() => {
|
|
55
|
-
function globalMouseMove(event) {
|
|
56
|
-
if (controlsRef.current && mouseDragging) {
|
|
57
|
-
const relativeX = event.clientX - controlsRef.current.getBoundingClientRect().left;
|
|
58
|
-
setCurrentX(relativeX);
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
function globalMouseUp(event) {
|
|
62
|
-
if (startX !== undefined && controlsRef.current) {
|
|
63
|
-
const { clientX, clientY } = event;
|
|
64
|
-
const ref = controlsRef.current;
|
|
65
|
-
const offsetX = clientX - ref.getBoundingClientRect().left;
|
|
66
|
-
// as stated above, store both clientX/Y and offsetX for different
|
|
67
|
-
// purposes
|
|
68
|
-
setAnchorPosition({
|
|
69
|
-
offsetX,
|
|
70
|
-
clientX,
|
|
71
|
-
clientY,
|
|
72
|
-
});
|
|
73
|
-
setGuideX(undefined);
|
|
74
|
-
}
|
|
75
|
-
}
|
|
76
|
-
if (mouseDragging) {
|
|
77
|
-
window.addEventListener('mousemove', globalMouseMove);
|
|
78
|
-
window.addEventListener('mouseup', globalMouseUp);
|
|
79
|
-
return () => {
|
|
80
|
-
window.removeEventListener('mousemove', globalMouseMove);
|
|
81
|
-
window.removeEventListener('mouseup', globalMouseUp);
|
|
82
|
-
};
|
|
83
|
-
}
|
|
84
|
-
return () => { };
|
|
85
|
-
}, [startX, mouseDragging, anchorPosition]);
|
|
86
|
-
useEffect(() => {
|
|
87
|
-
if (!mouseDragging &&
|
|
88
|
-
currentX !== undefined &&
|
|
89
|
-
startX !== undefined &&
|
|
90
|
-
Math.abs(currentX - startX) <= 3) {
|
|
91
|
-
handleClose();
|
|
92
|
-
}
|
|
93
|
-
}, [mouseDragging, currentX, startX, model.colWidth]);
|
|
94
|
-
function mouseDown(event) {
|
|
95
|
-
event.preventDefault();
|
|
96
|
-
event.stopPropagation();
|
|
97
|
-
const relativeX = event.clientX -
|
|
98
|
-
event.target.getBoundingClientRect().left;
|
|
99
|
-
setStartX(relativeX);
|
|
100
|
-
setCurrentX(relativeX);
|
|
101
|
-
}
|
|
102
|
-
function mouseMove(event) {
|
|
103
|
-
const target = event.target;
|
|
104
|
-
setGuideX(event.clientX - target.getBoundingClientRect().left);
|
|
105
|
-
}
|
|
106
|
-
function mouseOut() {
|
|
107
|
-
setGuideX(undefined);
|
|
108
|
-
model.clearAnnotationClickBoundaries();
|
|
109
|
-
}
|
|
110
|
-
function handleClose() {
|
|
111
|
-
setAnchorPosition(undefined);
|
|
112
|
-
setStartX(undefined);
|
|
113
|
-
setCurrentX(undefined);
|
|
114
|
-
}
|
|
115
|
-
function handleMenuItemClick(_, callback) {
|
|
116
|
-
callback();
|
|
117
|
-
handleClose();
|
|
118
|
-
}
|
|
119
|
-
if (startX === undefined) {
|
|
120
|
-
return (React.createElement(React.Fragment, null,
|
|
121
|
-
guideX !== undefined ? (React.createElement(VerticalGuide, { model: model, coordX: guideX })) : null,
|
|
122
|
-
React.createElement("div", { "data-testid": "rubberband_controls", className: classes.rubberbandControl, role: "presentation", ref: controlsRef, onMouseDown: mouseDown, onMouseOut: mouseOut, onMouseMove: mouseMove }, ControlComponent)));
|
|
123
|
-
}
|
|
124
|
-
const right = anchorPosition ? anchorPosition.offsetX : currentX || 0;
|
|
125
|
-
const left = right < startX ? right : startX;
|
|
126
|
-
const width = Math.abs(right - startX);
|
|
127
|
-
const leftBpOffset = model.pxToBp(left);
|
|
128
|
-
const rightBpOffset = model.pxToBp(left + width);
|
|
129
|
-
const numOfBpSelected = Math.ceil(width / model.colWidth);
|
|
130
|
-
const menuItems = [
|
|
131
|
-
{
|
|
132
|
-
label: 'Create annotation',
|
|
133
|
-
icon: AssignmentIcon,
|
|
134
|
-
onClick: () => {
|
|
135
|
-
model.setAnnotationClickBoundaries(leftBpOffset, rightBpOffset);
|
|
136
|
-
handleClose();
|
|
137
|
-
},
|
|
138
|
-
},
|
|
139
|
-
];
|
|
140
|
-
return (React.createElement(React.Fragment, null,
|
|
141
|
-
rubberbandRef.current ? (React.createElement(React.Fragment, null,
|
|
142
|
-
React.createElement(Popover, { className: classes.popover, classes: {
|
|
143
|
-
paper: classes.paper,
|
|
144
|
-
}, open: true, anchorEl: rubberbandRef.current, anchorOrigin: {
|
|
145
|
-
vertical: 'top',
|
|
146
|
-
horizontal: 'left',
|
|
147
|
-
}, transformOrigin: {
|
|
148
|
-
vertical: 'bottom',
|
|
149
|
-
horizontal: 'right',
|
|
150
|
-
}, keepMounted: true, disableRestoreFocus: true },
|
|
151
|
-
React.createElement(Typography, null, leftBpOffset + 1)),
|
|
152
|
-
React.createElement(Popover, { className: classes.popover, classes: {
|
|
153
|
-
paper: classes.paper,
|
|
154
|
-
}, open: true, anchorEl: rubberbandRef.current, anchorOrigin: {
|
|
155
|
-
vertical: 'top',
|
|
156
|
-
horizontal: 'right',
|
|
157
|
-
}, transformOrigin: {
|
|
158
|
-
vertical: 'bottom',
|
|
159
|
-
horizontal: 'left',
|
|
160
|
-
}, keepMounted: true, disableRestoreFocus: true },
|
|
161
|
-
React.createElement(Typography, null, rightBpOffset + 1)))) : null,
|
|
162
|
-
React.createElement("div", { ref: rubberbandRef, className: classes.rubberband, style: { left: left + treeAreaWidth, width } },
|
|
163
|
-
React.createElement(Typography, { variant: "h6", className: classes.rubberbandText },
|
|
164
|
-
numOfBpSelected.toLocaleString('en-US'),
|
|
165
|
-
" bp")),
|
|
166
|
-
React.createElement("div", { "data-testid": "rubberband_controls", className: classes.rubberbandControl, role: "presentation", ref: controlsRef, onMouseDown: mouseDown, onMouseOut: mouseOut, onMouseMove: mouseMove }, ControlComponent),
|
|
167
|
-
anchorPosition ? (React.createElement(Menu, { anchorReference: "anchorPosition", anchorPosition: {
|
|
168
|
-
left: anchorPosition.clientX,
|
|
169
|
-
top: anchorPosition.clientY,
|
|
170
|
-
}, onMenuItemClick: handleMenuItemClick, open: Boolean(anchorPosition), onClose: handleClose, menuItems: menuItems })) : null));
|
|
171
|
-
}
|
|
172
|
-
export default observer(Rubberband);
|
|
173
|
-
//# sourceMappingURL=Rubberband.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Rubberband.js","sourceRoot":"","sources":["../../src/components/Rubberband.tsx"],"names":[],"mappings":"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"}
|
package/dist/components/Ruler.js
DELETED
|
@@ -1,52 +0,0 @@
|
|
|
1
|
-
import React, { useRef } from 'react';
|
|
2
|
-
import { makeStyles } from 'tss-react/mui';
|
|
3
|
-
import { observer } from 'mobx-react';
|
|
4
|
-
import { makeTicks, mathPower } from './util';
|
|
5
|
-
const useStyles = makeStyles()({
|
|
6
|
-
majorTickLabel: {
|
|
7
|
-
fontSize: '11px',
|
|
8
|
-
},
|
|
9
|
-
majorTick: {
|
|
10
|
-
stroke: '#555',
|
|
11
|
-
},
|
|
12
|
-
minorTick: {
|
|
13
|
-
stroke: '#999',
|
|
14
|
-
},
|
|
15
|
-
});
|
|
16
|
-
function RulerBlock({ start, end, bpPerPx, reversed, major, minor, }) {
|
|
17
|
-
const { classes } = useStyles();
|
|
18
|
-
const ticks = makeTicks(start, end, bpPerPx, major, minor);
|
|
19
|
-
return (React.createElement(React.Fragment, null,
|
|
20
|
-
ticks.map(tick => {
|
|
21
|
-
const x = (reversed ? end - tick.base : tick.base - start) / bpPerPx;
|
|
22
|
-
return (React.createElement("line", { key: tick.base, x1: x, x2: x, y1: 11, y2: tick.type === 'major' ? 11 + 6 : 11 + 4, strokeWidth: 1, stroke: tick.type === 'major' ? '#555' : '#999', className: tick.type === 'major' ? classes.majorTick : classes.minorTick, "data-bp": tick.base }));
|
|
23
|
-
}),
|
|
24
|
-
ticks
|
|
25
|
-
.filter(tick => tick.type === 'major')
|
|
26
|
-
.map(tick => {
|
|
27
|
-
const x = (reversed ? end - tick.base : tick.base - start) / bpPerPx;
|
|
28
|
-
return (React.createElement("text", { x: x, y: 10, key: `label-${tick.base}`, textAnchor: "middle", style: { fontSize: '11px' }, className: classes.majorTickLabel }, mathPower(tick.base + 1)));
|
|
29
|
-
})));
|
|
30
|
-
}
|
|
31
|
-
const Ruler = observer(function ({ model }) {
|
|
32
|
-
const { MSA, colWidth, msaAreaWidth, rulerHeight, resizeHandleWidth, scrollX, blocksX, blockSize, } = model;
|
|
33
|
-
const ref = useRef(null);
|
|
34
|
-
const offsetX = blocksX[0];
|
|
35
|
-
return !MSA ? null : (React.createElement("div", { ref: ref, style: {
|
|
36
|
-
position: 'relative',
|
|
37
|
-
width: msaAreaWidth,
|
|
38
|
-
cursor: 'crosshair',
|
|
39
|
-
overflow: 'hidden',
|
|
40
|
-
height: rulerHeight,
|
|
41
|
-
background: '#ccc',
|
|
42
|
-
} },
|
|
43
|
-
React.createElement("svg", { style: {
|
|
44
|
-
width: blocksX.length * blockSize,
|
|
45
|
-
position: 'absolute',
|
|
46
|
-
left: scrollX + offsetX + resizeHandleWidth,
|
|
47
|
-
pointerEvents: 'none',
|
|
48
|
-
} },
|
|
49
|
-
React.createElement(RulerBlock, { key: offsetX, start: offsetX / colWidth, end: offsetX / colWidth + (blockSize * blocksX.length) / colWidth, bpPerPx: 1 / colWidth }))));
|
|
50
|
-
});
|
|
51
|
-
export default Ruler;
|
|
52
|
-
//# sourceMappingURL=Ruler.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Ruler.js","sourceRoot":"","sources":["../../src/components/Ruler.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"TreeBranchMenu.js","sourceRoot":"","sources":["../../src/components/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"}
|