@jbrowse/plugin-linear-genome-view 1.7.10 → 2.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/dist/BaseLinearDisplay/components/BaseLinearDisplay.js +119 -139
- package/dist/BaseLinearDisplay/components/BaseLinearDisplay.js.map +1 -0
- package/dist/BaseLinearDisplay/components/Block.js +53 -74
- package/dist/BaseLinearDisplay/components/Block.js.map +1 -0
- package/dist/BaseLinearDisplay/components/LinearBlocks.d.ts +11 -1
- package/dist/BaseLinearDisplay/components/LinearBlocks.js +64 -103
- package/dist/BaseLinearDisplay/components/LinearBlocks.js.map +1 -0
- package/dist/BaseLinearDisplay/components/ServerSideRenderedBlockContent.js +145 -175
- package/dist/BaseLinearDisplay/components/ServerSideRenderedBlockContent.js.map +1 -0
- package/dist/BaseLinearDisplay/components/Tooltip.js +109 -116
- package/dist/BaseLinearDisplay/components/Tooltip.js.map +1 -0
- package/dist/BaseLinearDisplay/index.js +13 -40
- package/dist/BaseLinearDisplay/index.js.map +1 -0
- package/dist/BaseLinearDisplay/models/BaseLinearDisplayModel.d.ts +20 -15
- package/dist/BaseLinearDisplay/models/BaseLinearDisplayModel.js +605 -684
- package/dist/BaseLinearDisplay/models/BaseLinearDisplayModel.js.map +1 -0
- package/dist/BaseLinearDisplay/models/baseLinearDisplayConfigSchema.js +15 -22
- package/dist/BaseLinearDisplay/models/baseLinearDisplayConfigSchema.js.map +1 -0
- package/dist/BaseLinearDisplay/models/serverSideRenderedBlock.d.ts +7 -8
- package/dist/BaseLinearDisplay/models/serverSideRenderedBlock.js +266 -312
- package/dist/BaseLinearDisplay/models/serverSideRenderedBlock.js.map +1 -0
- package/dist/LinearBareDisplay/configSchema.js +11 -17
- package/dist/LinearBareDisplay/configSchema.js.map +1 -0
- package/dist/LinearBareDisplay/index.js +7 -20
- package/dist/LinearBareDisplay/index.js.map +1 -0
- package/dist/LinearBareDisplay/model.d.ts +16 -14
- package/dist/LinearBareDisplay/model.js +36 -42
- package/dist/LinearBareDisplay/model.js.map +1 -0
- package/dist/LinearBasicDisplay/components/SetMaxHeight.d.ts +1 -1
- package/dist/LinearBasicDisplay/components/SetMaxHeight.js +76 -85
- package/dist/LinearBasicDisplay/components/SetMaxHeight.js.map +1 -0
- package/dist/LinearBasicDisplay/configSchema.js +15 -23
- package/dist/LinearBasicDisplay/configSchema.js.map +1 -0
- package/dist/LinearBasicDisplay/index.js +10 -22
- package/dist/LinearBasicDisplay/index.js.map +1 -0
- package/dist/LinearBasicDisplay/model.d.ts +20 -15
- package/dist/LinearBasicDisplay/model.js +180 -159
- package/dist/LinearBasicDisplay/model.js.map +1 -0
- package/dist/LinearGenomeView/components/CenterLine.d.ts +2 -8
- package/dist/LinearGenomeView/components/CenterLine.js +60 -74
- package/dist/LinearGenomeView/components/CenterLine.js.map +1 -0
- package/dist/LinearGenomeView/components/ExportSvgDialog.js +141 -141
- package/dist/LinearGenomeView/components/ExportSvgDialog.js.map +1 -0
- package/dist/LinearGenomeView/components/Gridlines.d.ts +8 -0
- package/dist/LinearGenomeView/components/Gridlines.js +78 -0
- package/dist/LinearGenomeView/components/Gridlines.js.map +1 -0
- package/dist/LinearGenomeView/components/Header.js +70 -126
- package/dist/LinearGenomeView/components/Header.js.map +1 -0
- package/dist/LinearGenomeView/components/HelpDialog.d.ts +0 -1
- package/dist/LinearGenomeView/components/HelpDialog.js +62 -44
- package/dist/LinearGenomeView/components/HelpDialog.js.map +1 -0
- package/dist/LinearGenomeView/components/ImportForm.js +223 -320
- package/dist/LinearGenomeView/components/ImportForm.js.map +1 -0
- package/dist/LinearGenomeView/components/LinearGenomeView.js +64 -124
- package/dist/LinearGenomeView/components/LinearGenomeView.js.map +1 -0
- package/dist/LinearGenomeView/components/LinearGenomeViewSvg.js +198 -337
- package/dist/LinearGenomeView/components/LinearGenomeViewSvg.js.map +1 -0
- package/dist/LinearGenomeView/components/MiniControls.js +64 -78
- package/dist/LinearGenomeView/components/MiniControls.js.map +1 -0
- package/dist/LinearGenomeView/components/OverviewRubberBand.js +229 -293
- package/dist/LinearGenomeView/components/OverviewRubberBand.js.map +1 -0
- package/dist/LinearGenomeView/components/OverviewScaleBar.d.ts +24 -8
- package/dist/LinearGenomeView/components/OverviewScaleBar.js +277 -365
- package/dist/LinearGenomeView/components/OverviewScaleBar.js.map +1 -0
- package/dist/LinearGenomeView/components/RefNameAutocomplete.d.ts +1 -1
- package/dist/LinearGenomeView/components/RefNameAutocomplete.js +237 -324
- package/dist/LinearGenomeView/components/RefNameAutocomplete.js.map +1 -0
- package/dist/LinearGenomeView/components/RubberBand.js +228 -296
- package/dist/LinearGenomeView/components/RubberBand.js.map +1 -0
- package/dist/LinearGenomeView/components/Ruler.js +45 -90
- package/dist/LinearGenomeView/components/Ruler.js.map +1 -0
- package/dist/LinearGenomeView/components/ScaleBar.d.ts +8 -403
- package/dist/LinearGenomeView/components/ScaleBar.js +121 -172
- package/dist/LinearGenomeView/components/ScaleBar.js.map +1 -0
- package/dist/LinearGenomeView/components/SearchBox.js +158 -205
- package/dist/LinearGenomeView/components/SearchBox.js.map +1 -0
- package/dist/LinearGenomeView/components/SearchResultsDialog.d.ts +0 -1
- package/dist/LinearGenomeView/components/SearchResultsDialog.js +105 -150
- package/dist/LinearGenomeView/components/SearchResultsDialog.js.map +1 -0
- package/dist/LinearGenomeView/components/SequenceDialog.js +219 -272
- package/dist/LinearGenomeView/components/SequenceDialog.js.map +1 -0
- package/dist/LinearGenomeView/components/TrackContainer.js +116 -156
- package/dist/LinearGenomeView/components/TrackContainer.js.map +1 -0
- package/dist/LinearGenomeView/components/TrackLabel.d.ts +6 -42
- package/dist/LinearGenomeView/components/TrackLabel.js +115 -134
- package/dist/LinearGenomeView/components/TrackLabel.js.map +1 -0
- package/dist/LinearGenomeView/components/TracksContainer.d.ts +1 -1
- package/dist/LinearGenomeView/components/TracksContainer.js +172 -199
- package/dist/LinearGenomeView/components/TracksContainer.js.map +1 -0
- package/dist/LinearGenomeView/components/ZoomControls.js +72 -87
- package/dist/LinearGenomeView/components/ZoomControls.js.map +1 -0
- package/dist/LinearGenomeView/components/util.d.ts +12 -0
- package/dist/LinearGenomeView/components/util.js +95 -13
- package/dist/LinearGenomeView/components/util.js.map +1 -0
- package/dist/LinearGenomeView/index.d.ts +64 -77
- package/dist/LinearGenomeView/index.js +1035 -1412
- package/dist/LinearGenomeView/index.js.map +1 -0
- package/dist/LinearGenomeView/util.js +76 -83
- package/dist/LinearGenomeView/util.js.map +1 -0
- package/dist/index.d.ts +101 -51
- package/dist/index.js +225 -295
- package/dist/index.js.map +1 -0
- package/esm/BaseLinearDisplay/components/BaseLinearDisplay.d.ts +9 -0
- package/esm/BaseLinearDisplay/components/BaseLinearDisplay.js +68 -0
- package/esm/BaseLinearDisplay/components/BaseLinearDisplay.js.map +1 -0
- package/esm/BaseLinearDisplay/components/Block.d.ts +15 -0
- package/esm/BaseLinearDisplay/components/Block.js +46 -0
- package/esm/BaseLinearDisplay/components/Block.js.map +1 -0
- package/esm/BaseLinearDisplay/components/LinearBlocks.d.ts +22 -0
- package/esm/BaseLinearDisplay/components/LinearBlocks.js +62 -0
- package/esm/BaseLinearDisplay/components/LinearBlocks.js.map +1 -0
- package/esm/BaseLinearDisplay/components/ServerSideRenderedBlockContent.d.ts +4 -0
- package/esm/BaseLinearDisplay/components/ServerSideRenderedBlockContent.js +113 -0
- package/esm/BaseLinearDisplay/components/ServerSideRenderedBlockContent.js.map +1 -0
- package/esm/BaseLinearDisplay/components/Tooltip.d.ts +8 -0
- package/esm/BaseLinearDisplay/components/Tooltip.js +64 -0
- package/esm/BaseLinearDisplay/components/Tooltip.js.map +1 -0
- package/esm/BaseLinearDisplay/index.d.ts +5 -0
- package/esm/BaseLinearDisplay/index.js +4 -0
- package/esm/BaseLinearDisplay/index.js.map +1 -0
- package/esm/BaseLinearDisplay/models/BaseLinearDisplayModel.d.ts +232 -0
- package/esm/BaseLinearDisplay/models/BaseLinearDisplayModel.js +541 -0
- package/esm/BaseLinearDisplay/models/BaseLinearDisplayModel.js.map +1 -0
- package/esm/BaseLinearDisplay/models/baseLinearDisplayConfigSchema.d.ts +1 -0
- package/esm/BaseLinearDisplay/models/baseLinearDisplayConfigSchema.js +14 -0
- package/esm/BaseLinearDisplay/models/baseLinearDisplayConfigSchema.js.map +1 -0
- package/esm/BaseLinearDisplay/models/serverSideRenderedBlock.d.ts +96 -0
- package/esm/BaseLinearDisplay/models/serverSideRenderedBlock.js +225 -0
- package/esm/BaseLinearDisplay/models/serverSideRenderedBlock.js.map +1 -0
- package/esm/LinearBareDisplay/configSchema.d.ts +2 -0
- package/esm/LinearBareDisplay/configSchema.js +9 -0
- package/esm/LinearBareDisplay/configSchema.js.map +1 -0
- package/esm/LinearBareDisplay/index.d.ts +2 -0
- package/esm/LinearBareDisplay/index.js +3 -0
- package/esm/LinearBareDisplay/index.js.map +1 -0
- package/esm/LinearBareDisplay/model.d.ts +194 -0
- package/esm/LinearBareDisplay/model.js +28 -0
- package/esm/LinearBareDisplay/model.js.map +1 -0
- package/esm/LinearBasicDisplay/components/SetMaxHeight.d.ts +10 -0
- package/esm/LinearBasicDisplay/components/SetMaxHeight.js +40 -0
- package/esm/LinearBasicDisplay/components/SetMaxHeight.js.map +1 -0
- package/esm/LinearBasicDisplay/configSchema.d.ts +2 -0
- package/esm/LinearBasicDisplay/configSchema.js +14 -0
- package/esm/LinearBasicDisplay/configSchema.js.map +1 -0
- package/esm/LinearBasicDisplay/index.d.ts +2 -0
- package/esm/LinearBasicDisplay/index.js +3 -0
- package/esm/LinearBasicDisplay/index.js.map +1 -0
- package/esm/LinearBasicDisplay/model.d.ts +218 -0
- package/esm/LinearBasicDisplay/model.js +127 -0
- package/esm/LinearBasicDisplay/model.js.map +1 -0
- package/esm/LinearGenomeView/components/CenterLine.d.ts +8 -0
- package/esm/LinearGenomeView/components/CenterLine.js +40 -0
- package/esm/LinearGenomeView/components/CenterLine.js.map +1 -0
- package/esm/LinearGenomeView/components/ExportSvgDialog.d.ts +6 -0
- package/esm/LinearGenomeView/components/ExportSvgDialog.js +52 -0
- package/esm/LinearGenomeView/components/ExportSvgDialog.js.map +1 -0
- package/esm/LinearGenomeView/components/Gridlines.d.ts +8 -0
- package/esm/LinearGenomeView/components/Gridlines.js +71 -0
- package/esm/LinearGenomeView/components/Gridlines.js.map +1 -0
- package/esm/LinearGenomeView/components/Header.d.ts +7 -0
- package/esm/LinearGenomeView/components/Header.js +81 -0
- package/esm/LinearGenomeView/components/Header.js.map +1 -0
- package/esm/LinearGenomeView/components/HelpDialog.d.ts +4 -0
- package/esm/LinearGenomeView/components/HelpDialog.js +58 -0
- package/esm/LinearGenomeView/components/HelpDialog.js.map +1 -0
- package/esm/LinearGenomeView/components/ImportForm.d.ts +7 -0
- package/esm/LinearGenomeView/components/ImportForm.js +141 -0
- package/esm/LinearGenomeView/components/ImportForm.js.map +1 -0
- package/esm/LinearGenomeView/components/LinearGenomeView.d.ts +7 -0
- package/esm/LinearGenomeView/components/LinearGenomeView.js +67 -0
- package/esm/LinearGenomeView/components/LinearGenomeView.js.map +1 -0
- package/esm/LinearGenomeView/components/LinearGenomeViewSvg.d.ts +4 -0
- package/esm/LinearGenomeView/components/LinearGenomeViewSvg.js +132 -0
- package/esm/LinearGenomeView/components/LinearGenomeViewSvg.js.map +1 -0
- package/esm/LinearGenomeView/components/MiniControls.d.ts +6 -0
- package/esm/LinearGenomeView/components/MiniControls.js +25 -0
- package/esm/LinearGenomeView/components/MiniControls.js.map +1 -0
- package/esm/LinearGenomeView/components/OverviewRubberBand.d.ts +22 -0
- package/esm/LinearGenomeView/components/OverviewRubberBand.js +197 -0
- package/esm/LinearGenomeView/components/OverviewRubberBand.js.map +1 -0
- package/esm/LinearGenomeView/components/OverviewScaleBar.d.ts +148 -0
- package/esm/LinearGenomeView/components/OverviewScaleBar.js +287 -0
- package/esm/LinearGenomeView/components/OverviewScaleBar.js.map +1 -0
- package/esm/LinearGenomeView/components/RefNameAutocomplete.d.ts +22 -0
- package/esm/LinearGenomeView/components/RefNameAutocomplete.js +136 -0
- package/esm/LinearGenomeView/components/RefNameAutocomplete.js.map +1 -0
- package/esm/LinearGenomeView/components/RubberBand.d.ts +9 -0
- package/esm/LinearGenomeView/components/RubberBand.js +197 -0
- package/esm/LinearGenomeView/components/RubberBand.js.map +1 -0
- package/esm/LinearGenomeView/components/Ruler.d.ts +27 -0
- package/esm/LinearGenomeView/components/Ruler.js +50 -0
- package/esm/LinearGenomeView/components/Ruler.js.map +1 -0
- package/esm/LinearGenomeView/components/ScaleBar.d.ts +10 -0
- package/esm/LinearGenomeView/components/ScaleBar.js +112 -0
- package/esm/LinearGenomeView/components/ScaleBar.js.map +1 -0
- package/esm/LinearGenomeView/components/SearchBox.d.ts +8 -0
- package/esm/LinearGenomeView/components/SearchBox.js +94 -0
- package/esm/LinearGenomeView/components/SearchBox.js.map +1 -0
- package/esm/LinearGenomeView/components/SearchResultsDialog.d.ts +7 -0
- package/esm/LinearGenomeView/components/SearchResultsDialog.js +107 -0
- package/esm/LinearGenomeView/components/SearchResultsDialog.js.map +1 -0
- package/esm/LinearGenomeView/components/SequenceDialog.d.ts +8 -0
- package/esm/LinearGenomeView/components/SequenceDialog.js +147 -0
- package/esm/LinearGenomeView/components/SequenceDialog.js.map +1 -0
- package/esm/LinearGenomeView/components/TrackContainer.d.ts +9 -0
- package/esm/LinearGenomeView/components/TrackContainer.js +109 -0
- package/esm/LinearGenomeView/components/TrackContainer.js.map +1 -0
- package/esm/LinearGenomeView/components/TrackLabel.d.ts +8 -0
- package/esm/LinearGenomeView/components/TrackLabel.js +89 -0
- package/esm/LinearGenomeView/components/TrackLabel.js.map +1 -0
- package/{dist/LinearGenomeView/components/VerticalGuides.d.ts → esm/LinearGenomeView/components/TracksContainer.d.ts} +4 -3
- package/esm/LinearGenomeView/components/TracksContainer.js +142 -0
- package/esm/LinearGenomeView/components/TracksContainer.js.map +1 -0
- package/esm/LinearGenomeView/components/ZoomControls.d.ts +7 -0
- package/esm/LinearGenomeView/components/ZoomControls.js +32 -0
- package/esm/LinearGenomeView/components/ZoomControls.js.map +1 -0
- package/esm/LinearGenomeView/components/util.d.ts +14 -0
- package/esm/LinearGenomeView/components/util.js +17 -0
- package/esm/LinearGenomeView/components/util.js.map +1 -0
- package/esm/LinearGenomeView/index.d.ts +275 -0
- package/esm/LinearGenomeView/index.js +978 -0
- package/esm/LinearGenomeView/index.js.map +1 -0
- package/esm/LinearGenomeView/util.d.ts +14 -0
- package/esm/LinearGenomeView/util.js +62 -0
- package/esm/LinearGenomeView/util.js.map +1 -0
- package/esm/index.d.ts +615 -0
- package/esm/index.js +127 -0
- package/esm/index.js.map +1 -0
- package/package.json +22 -15
- package/src/BaseLinearDisplay/components/BaseLinearDisplay.tsx +4 -3
- package/src/BaseLinearDisplay/components/Block.tsx +5 -5
- package/src/BaseLinearDisplay/components/LinearBlocks.tsx +4 -4
- package/src/BaseLinearDisplay/components/ServerSideRenderedBlockContent.tsx +7 -8
- package/src/BaseLinearDisplay/components/Tooltip.tsx +14 -4
- package/src/BaseLinearDisplay/models/BaseLinearDisplayModel.tsx +6 -4
- package/src/BaseLinearDisplay/models/serverSideRenderedBlock.ts +1 -1
- package/src/LinearBasicDisplay/components/SetMaxHeight.tsx +10 -7
- package/src/LinearBasicDisplay/model.ts +21 -15
- package/src/LinearGenomeView/components/CenterLine.tsx +6 -11
- package/src/LinearGenomeView/components/ExportSvgDialog.tsx +5 -5
- package/src/LinearGenomeView/components/{VerticalGuides.tsx → Gridlines.tsx} +9 -11
- package/src/LinearGenomeView/components/Header.tsx +13 -18
- package/src/LinearGenomeView/components/HelpDialog.tsx +5 -5
- package/src/LinearGenomeView/components/ImportForm.tsx +24 -37
- package/src/LinearGenomeView/components/LinearGenomeView.test.js +16 -6
- package/src/LinearGenomeView/components/LinearGenomeView.tsx +4 -3
- package/src/LinearGenomeView/components/MiniControls.tsx +29 -40
- package/src/LinearGenomeView/components/OverviewRubberBand.tsx +20 -29
- package/src/LinearGenomeView/components/OverviewScaleBar.tsx +100 -89
- package/src/LinearGenomeView/components/RefNameAutocomplete.tsx +13 -44
- package/src/LinearGenomeView/components/RubberBand.tsx +12 -18
- package/src/LinearGenomeView/components/Ruler.tsx +5 -11
- package/src/LinearGenomeView/components/ScaleBar.tsx +23 -27
- package/src/LinearGenomeView/components/SearchBox.tsx +22 -32
- package/src/LinearGenomeView/components/SearchResultsDialog.tsx +7 -7
- package/src/LinearGenomeView/components/SequenceDialog.tsx +10 -10
- package/src/LinearGenomeView/components/TrackContainer.tsx +12 -12
- package/src/LinearGenomeView/components/TrackLabel.tsx +21 -31
- package/src/LinearGenomeView/components/TracksContainer.tsx +10 -15
- package/src/LinearGenomeView/components/ZoomControls.tsx +12 -13
- package/src/LinearGenomeView/components/__snapshots__/LinearGenomeView.test.js.snap +500 -547
- package/src/LinearGenomeView/components/util.ts +43 -0
- package/src/LinearGenomeView/index.test.ts +14 -36
- package/src/LinearGenomeView/index.tsx +390 -564
- package/src/index.ts +1 -1
- package/dist/LinearBareDisplay/index.test.js +0 -33
- package/dist/LinearGenomeView/components/LinearGenomeView.test.js +0 -234
- package/dist/LinearGenomeView/components/ScaleBar.test.js +0 -180
- package/dist/LinearGenomeView/components/VerticalGuides.js +0 -116
- package/dist/LinearGenomeView/index.test.js +0 -1187
- package/dist/LinearGenomeView/util.test.js +0 -78
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { observer } from 'mobx-react';
|
|
3
|
+
import { Button, FormGroup, Typography, alpha } from '@mui/material';
|
|
4
|
+
import { makeStyles } from 'tss-react/mui';
|
|
5
|
+
import { getBpDisplayStr } from '@jbrowse/core/util';
|
|
6
|
+
// icons
|
|
7
|
+
import { TrackSelector as TrackSelectorIcon } from '@jbrowse/core/ui/Icons';
|
|
8
|
+
import ArrowForwardIcon from '@mui/icons-material/ArrowForward';
|
|
9
|
+
import ArrowBackIcon from '@mui/icons-material/ArrowBack';
|
|
10
|
+
// locals
|
|
11
|
+
import { WIDGET_HEIGHT, SPACING, HEADER_BAR_HEIGHT, } from '..';
|
|
12
|
+
import OverviewScaleBar from './OverviewScaleBar';
|
|
13
|
+
import ZoomControls from './ZoomControls';
|
|
14
|
+
import SearchBox from './SearchBox';
|
|
15
|
+
const useStyles = makeStyles()(theme => ({
|
|
16
|
+
headerBar: {
|
|
17
|
+
height: HEADER_BAR_HEIGHT,
|
|
18
|
+
display: 'flex',
|
|
19
|
+
},
|
|
20
|
+
headerForm: {
|
|
21
|
+
flexWrap: 'nowrap',
|
|
22
|
+
marginRight: 7,
|
|
23
|
+
},
|
|
24
|
+
spacer: {
|
|
25
|
+
flexGrow: 1,
|
|
26
|
+
},
|
|
27
|
+
panButton: {
|
|
28
|
+
background: alpha(theme.palette.background.paper, 0.8),
|
|
29
|
+
height: WIDGET_HEIGHT,
|
|
30
|
+
margin: SPACING,
|
|
31
|
+
},
|
|
32
|
+
bp: {
|
|
33
|
+
display: 'flex',
|
|
34
|
+
alignItems: 'center',
|
|
35
|
+
marginLeft: 5,
|
|
36
|
+
},
|
|
37
|
+
toggleButton: {
|
|
38
|
+
height: 44,
|
|
39
|
+
border: 'none',
|
|
40
|
+
margin: theme.spacing(0.5),
|
|
41
|
+
},
|
|
42
|
+
buttonSpacer: {
|
|
43
|
+
marginRight: theme.spacing(2),
|
|
44
|
+
},
|
|
45
|
+
}));
|
|
46
|
+
const HeaderButtons = observer(({ model }) => {
|
|
47
|
+
const { classes } = useStyles();
|
|
48
|
+
return (React.createElement(Button, { onClick: model.activateTrackSelector, className: classes.toggleButton, title: "Open track selector", value: "track_select", color: "secondary" },
|
|
49
|
+
React.createElement(TrackSelectorIcon, { className: classes.buttonSpacer })));
|
|
50
|
+
});
|
|
51
|
+
function PanControls({ model }) {
|
|
52
|
+
const { classes } = useStyles();
|
|
53
|
+
return (React.createElement(React.Fragment, null,
|
|
54
|
+
React.createElement(Button, { variant: "outlined", className: classes.panButton, onClick: () => model.slide(-0.9) },
|
|
55
|
+
React.createElement(ArrowBackIcon, null)),
|
|
56
|
+
React.createElement(Button, { variant: "outlined", className: classes.panButton, onClick: () => model.slide(0.9) },
|
|
57
|
+
React.createElement(ArrowForwardIcon, null))));
|
|
58
|
+
}
|
|
59
|
+
const RegionWidth = observer(({ model }) => {
|
|
60
|
+
const { classes } = useStyles();
|
|
61
|
+
const { coarseTotalBp } = model;
|
|
62
|
+
return (React.createElement(Typography, { variant: "body2", color: "textSecondary", className: classes.bp }, getBpDisplayStr(coarseTotalBp)));
|
|
63
|
+
});
|
|
64
|
+
const Controls = ({ model }) => {
|
|
65
|
+
const { classes } = useStyles();
|
|
66
|
+
return (React.createElement("div", { className: classes.headerBar },
|
|
67
|
+
React.createElement(HeaderButtons, { model: model }),
|
|
68
|
+
React.createElement("div", { className: classes.spacer }),
|
|
69
|
+
React.createElement(FormGroup, { row: true, className: classes.headerForm },
|
|
70
|
+
React.createElement(PanControls, { model: model }),
|
|
71
|
+
React.createElement(SearchBox, { model: model })),
|
|
72
|
+
React.createElement(RegionWidth, { model: model }),
|
|
73
|
+
React.createElement(ZoomControls, { model: model }),
|
|
74
|
+
React.createElement("div", { className: classes.spacer })));
|
|
75
|
+
};
|
|
76
|
+
const LinearGenomeViewHeader = observer(({ model }) => {
|
|
77
|
+
return model.hideHeaderOverview ? (React.createElement(Controls, { model: model })) : (React.createElement(OverviewScaleBar, { model: model },
|
|
78
|
+
React.createElement(Controls, { model: model })));
|
|
79
|
+
});
|
|
80
|
+
export default LinearGenomeViewHeader;
|
|
81
|
+
//# sourceMappingURL=Header.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Header.js","sourceRoot":"","sources":["../../../src/LinearGenomeView/components/Header.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { Button, Dialog, DialogActions, DialogContent, DialogTitle, Divider, IconButton, } from '@mui/material';
|
|
3
|
+
import { makeStyles } from 'tss-react/mui';
|
|
4
|
+
import CloseIcon from '@mui/icons-material/Close';
|
|
5
|
+
const useStyles = makeStyles()(theme => ({
|
|
6
|
+
closeButton: {
|
|
7
|
+
position: 'absolute',
|
|
8
|
+
right: theme.spacing(1),
|
|
9
|
+
top: theme.spacing(1),
|
|
10
|
+
color: theme.palette.grey[500],
|
|
11
|
+
},
|
|
12
|
+
}));
|
|
13
|
+
export default function HelpDialog({ handleClose, }) {
|
|
14
|
+
const { classes } = useStyles();
|
|
15
|
+
return (React.createElement(Dialog, { open: true, maxWidth: "xl", onClose: handleClose },
|
|
16
|
+
React.createElement(DialogTitle, null,
|
|
17
|
+
"Using the search box",
|
|
18
|
+
handleClose ? (React.createElement(IconButton, { className: classes.closeButton, onClick: () => handleClose() },
|
|
19
|
+
React.createElement(CloseIcon, null))) : null),
|
|
20
|
+
React.createElement(Divider, null),
|
|
21
|
+
React.createElement(DialogContent, null,
|
|
22
|
+
React.createElement("h3", null, "Searching"),
|
|
23
|
+
React.createElement("ul", null,
|
|
24
|
+
React.createElement("li", null, "Jump to a feature or reference sequence by typing its name in the location box and pressing Enter."),
|
|
25
|
+
React.createElement("li", null,
|
|
26
|
+
"Jump to a specific region by typing the region into the location box as: ",
|
|
27
|
+
React.createElement("code", null, "ref:start..end"),
|
|
28
|
+
" or ",
|
|
29
|
+
React.createElement("code", null, "ref:start-end"),
|
|
30
|
+
". Commas are allowed in the start and end coordinates. A space-separated list of locstrings can be used to open up multiple chromosomes at a time")),
|
|
31
|
+
React.createElement("h3", null, "Example Searches"),
|
|
32
|
+
React.createElement("ul", null,
|
|
33
|
+
React.createElement("li", null,
|
|
34
|
+
React.createElement("code", null, "BRCA"),
|
|
35
|
+
" - searches for the feature named BRCA"),
|
|
36
|
+
React.createElement("li", null,
|
|
37
|
+
React.createElement("code", null, "chr4"),
|
|
38
|
+
" - jumps to chromosome 4"),
|
|
39
|
+
React.createElement("li", null,
|
|
40
|
+
React.createElement("code", null, "chr4:79,500,000..80,000,000"),
|
|
41
|
+
" - jumps the region on chromosome 4 between 79.5Mb and 80Mb."),
|
|
42
|
+
React.createElement("li", null,
|
|
43
|
+
React.createElement("code", null, "chr1:1-100 chr2:1-100"),
|
|
44
|
+
" - create a split view of chr1:1-100 and chr2:1-100"),
|
|
45
|
+
React.createElement("li", null,
|
|
46
|
+
React.createElement("code", null, "chr1 chr2 chr3"),
|
|
47
|
+
" - open up multiple chromosomes at once"),
|
|
48
|
+
React.createElement("li", null,
|
|
49
|
+
React.createElement("code", null, "chr1:1-100[rev] chr2:1-100"),
|
|
50
|
+
" - open up the first region in the horizontally flipped orientation"),
|
|
51
|
+
React.createElement("li", null,
|
|
52
|
+
React.createElement("code", null, "chr1 100 200"),
|
|
53
|
+
" - use whitespace separated refname, start, end"))),
|
|
54
|
+
React.createElement(Divider, null),
|
|
55
|
+
React.createElement(DialogActions, null,
|
|
56
|
+
React.createElement(Button, { onClick: () => handleClose(), color: "primary" }, "Close"))));
|
|
57
|
+
}
|
|
58
|
+
//# sourceMappingURL=HelpDialog.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"HelpDialog.js","sourceRoot":"","sources":["../../../src/LinearGenomeView/components/HelpDialog.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,EACL,MAAM,EACN,MAAM,EACN,aAAa,EACb,aAAa,EACb,WAAW,EACX,OAAO,EACP,UAAU,GACX,MAAM,eAAe,CAAA;AACtB,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AAC1C,OAAO,SAAS,MAAM,2BAA2B,CAAA;AAEjD,MAAM,SAAS,GAAG,UAAU,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IACvC,WAAW,EAAE;QACX,QAAQ,EAAE,UAAU;QACpB,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;QACvB,GAAG,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;QACrB,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC;KAC/B;CACF,CAAC,CAAC,CAAA;AAEH,MAAM,CAAC,OAAO,UAAU,UAAU,CAAC,EACjC,WAAW,GAGZ;IACC,MAAM,EAAE,OAAO,EAAE,GAAG,SAAS,EAAE,CAAA;IAC/B,OAAO,CACL,oBAAC,MAAM,IAAC,IAAI,QAAC,QAAQ,EAAC,IAAI,EAAC,OAAO,EAAE,WAAW;QAC7C,oBAAC,WAAW;;YAET,WAAW,CAAC,CAAC,CAAC,CACb,oBAAC,UAAU,IACT,SAAS,EAAE,OAAO,CAAC,WAAW,EAC9B,OAAO,EAAE,GAAG,EAAE,CAAC,WAAW,EAAE;gBAE5B,oBAAC,SAAS,OAAG,CACF,CACd,CAAC,CAAC,CAAC,IAAI,CACI;QACd,oBAAC,OAAO,OAAG;QACX,oBAAC,aAAa;YACZ,4CAAkB;YAClB;gBACE,qIAGK;gBACL;;oBAEM,mDAA2B;;oBAAI,kDAA0B;wKAI1D,CACF;YACL,mDAAyB;YACzB;gBACE;oBACE,yCAAiB;6DACd;gBACL;oBACE,yCAAiB;+CACd;gBACL;oBACE,gEAAwC;mFAErC;gBACL;oBACE,0DAAkC;0EAE/B;gBACL;oBACE,mDAA2B;8DACxB;gBACL;oBACE,+DAAuC;0FAEpC;gBACL;oBACE,iDAAyB;sEAEtB,CACF,CACS;QAChB,oBAAC,OAAO,OAAG;QACX,oBAAC,aAAa;YACZ,oBAAC,MAAM,IAAC,OAAO,EAAE,GAAG,EAAE,CAAC,WAAW,EAAE,EAAE,KAAK,EAAC,SAAS,YAE5C,CACK,CACT,CACV,CAAA;AACH,CAAC"}
|
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
import React, { useState, lazy } from 'react';
|
|
2
|
+
import { makeStyles } from 'tss-react/mui';
|
|
3
|
+
import { observer } from 'mobx-react';
|
|
4
|
+
import { getSession } from '@jbrowse/core/util';
|
|
5
|
+
import { Button, CircularProgress, Container, Grid } from '@mui/material';
|
|
6
|
+
import { ErrorMessage, AssemblySelector } from '@jbrowse/core/ui';
|
|
7
|
+
import BaseResult from '@jbrowse/core/TextSearch/BaseResults';
|
|
8
|
+
import CloseIcon from '@mui/icons-material/Close';
|
|
9
|
+
// locals
|
|
10
|
+
import RefNameAutocomplete from './RefNameAutocomplete';
|
|
11
|
+
import { fetchResults } from './util';
|
|
12
|
+
import { WIDGET_HEIGHT } from '..';
|
|
13
|
+
const SearchResultsDialog = lazy(() => import('./SearchResultsDialog'));
|
|
14
|
+
const useStyles = makeStyles()(theme => ({
|
|
15
|
+
importFormContainer: {
|
|
16
|
+
padding: theme.spacing(2),
|
|
17
|
+
},
|
|
18
|
+
button: {
|
|
19
|
+
margin: theme.spacing(2),
|
|
20
|
+
},
|
|
21
|
+
container: {
|
|
22
|
+
padding: theme.spacing(4),
|
|
23
|
+
},
|
|
24
|
+
}));
|
|
25
|
+
const ImportForm = observer(({ model }) => {
|
|
26
|
+
var _a;
|
|
27
|
+
const { classes } = useStyles();
|
|
28
|
+
const session = getSession(model);
|
|
29
|
+
const { assemblyNames, assemblyManager, textSearchManager } = session;
|
|
30
|
+
const { rankSearchResults, isSearchDialogDisplayed, error } = model;
|
|
31
|
+
const [selectedAsm, setSelectedAsm] = useState(assemblyNames[0]);
|
|
32
|
+
const [importError, setImportError] = useState(error);
|
|
33
|
+
const searchScope = model.searchScope(selectedAsm);
|
|
34
|
+
const assembly = assemblyManager.get(selectedAsm);
|
|
35
|
+
const assemblyError = assemblyNames.length
|
|
36
|
+
? assembly === null || assembly === void 0 ? void 0 : assembly.error
|
|
37
|
+
: 'No configured assemblies';
|
|
38
|
+
const regions = (assembly === null || assembly === void 0 ? void 0 : assembly.regions) || [];
|
|
39
|
+
const err = assemblyError || importError;
|
|
40
|
+
const [myVal, setValue] = useState('');
|
|
41
|
+
const value = myVal || ((_a = regions[0]) === null || _a === void 0 ? void 0 : _a.refName);
|
|
42
|
+
// use this instead of useState initializer because the useState initializer
|
|
43
|
+
// won't update in response to an observable
|
|
44
|
+
const option = new BaseResult({
|
|
45
|
+
label: value,
|
|
46
|
+
});
|
|
47
|
+
// gets a string as input, or use stored option results from previous query,
|
|
48
|
+
// then re-query and
|
|
49
|
+
// 1) if it has multiple results: pop a dialog
|
|
50
|
+
// 2) if it's a single result navigate to it
|
|
51
|
+
// 3) else assume it's a locstring and navigate to it
|
|
52
|
+
async function handleSelectedRegion(input) {
|
|
53
|
+
if (!option) {
|
|
54
|
+
return;
|
|
55
|
+
}
|
|
56
|
+
let trackId = option.getTrackId();
|
|
57
|
+
let location = input || option.getLocation() || '';
|
|
58
|
+
const [ref, rest] = location.split(':');
|
|
59
|
+
const allRefs = (assembly === null || assembly === void 0 ? void 0 : assembly.allRefNames) || [];
|
|
60
|
+
try {
|
|
61
|
+
// instead of querying text-index, first:
|
|
62
|
+
// - check if input matches a refname directly
|
|
63
|
+
// - or looks like locstring
|
|
64
|
+
// then just navigate as if it were a locstring
|
|
65
|
+
if (allRefs.includes(location) ||
|
|
66
|
+
(allRefs.includes(ref) &&
|
|
67
|
+
rest !== undefined &&
|
|
68
|
+
!Number.isNaN(parseInt(rest, 10)))) {
|
|
69
|
+
model.navToLocString(location, selectedAsm);
|
|
70
|
+
}
|
|
71
|
+
else {
|
|
72
|
+
const results = await fetchResults({
|
|
73
|
+
queryString: input,
|
|
74
|
+
searchType: 'exact',
|
|
75
|
+
searchScope,
|
|
76
|
+
rankSearchResults,
|
|
77
|
+
textSearchManager,
|
|
78
|
+
assembly,
|
|
79
|
+
});
|
|
80
|
+
if (results.length > 1) {
|
|
81
|
+
model.setSearchResults(results, input.toLowerCase());
|
|
82
|
+
return;
|
|
83
|
+
}
|
|
84
|
+
else if (results.length === 1) {
|
|
85
|
+
location = results[0].getLocation();
|
|
86
|
+
trackId = results[0].getTrackId();
|
|
87
|
+
}
|
|
88
|
+
model.navToLocString(location, selectedAsm);
|
|
89
|
+
if (trackId) {
|
|
90
|
+
model.showTrack(trackId);
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
catch (e) {
|
|
95
|
+
console.error(e);
|
|
96
|
+
session.notify(`${e}`, 'warning');
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
const height = WIDGET_HEIGHT + 5;
|
|
100
|
+
// implementation notes:
|
|
101
|
+
// having this wrapped in a form allows intuitive use of enter key to submit
|
|
102
|
+
return (React.createElement("div", { className: classes.container },
|
|
103
|
+
err ? React.createElement(ErrorMessage, { error: err }) : null,
|
|
104
|
+
React.createElement(Container, { className: classes.importFormContainer },
|
|
105
|
+
React.createElement("form", { onSubmit: event => {
|
|
106
|
+
event.preventDefault();
|
|
107
|
+
model.setError(undefined);
|
|
108
|
+
if (value) {
|
|
109
|
+
handleSelectedRegion(value);
|
|
110
|
+
}
|
|
111
|
+
} },
|
|
112
|
+
React.createElement(Grid, { container: true, spacing: 1, justifyContent: "center", alignItems: "center" },
|
|
113
|
+
React.createElement(Grid, { item: true },
|
|
114
|
+
React.createElement(AssemblySelector, { onChange: val => {
|
|
115
|
+
setImportError('');
|
|
116
|
+
setSelectedAsm(val);
|
|
117
|
+
}, session: session, selected: selectedAsm, InputProps: { style: { height } } })),
|
|
118
|
+
React.createElement(Grid, { item: true }, selectedAsm ? (err ? (React.createElement(CloseIcon, { style: { color: 'red' } })) : value ? (React.createElement(RefNameAutocomplete, { fetchResults: queryString => fetchResults({
|
|
119
|
+
queryString,
|
|
120
|
+
assembly,
|
|
121
|
+
textSearchManager,
|
|
122
|
+
rankSearchResults,
|
|
123
|
+
searchScope,
|
|
124
|
+
}), model: model, assemblyName: assemblyError ? undefined : selectedAsm, value: value,
|
|
125
|
+
// note: minWidth 270 accomodates full width of helperText
|
|
126
|
+
minWidth: 270, onChange: str => setValue(str), TextFieldProps: {
|
|
127
|
+
variant: 'outlined',
|
|
128
|
+
helperText: 'Enter sequence name, feature name, or location',
|
|
129
|
+
style: { minWidth: '175px' },
|
|
130
|
+
InputProps: { style: { height } },
|
|
131
|
+
} })) : (React.createElement(CircularProgress, { role: "progressbar", size: 20, disableShrink: true }))) : null),
|
|
132
|
+
React.createElement(Grid, { item: true },
|
|
133
|
+
React.createElement(Button, { type: "submit", disabled: !value, className: classes.button, variant: "contained", color: "primary" }, "Open"),
|
|
134
|
+
React.createElement(Button, { disabled: !value, className: classes.button, onClick: () => {
|
|
135
|
+
model.setError(undefined);
|
|
136
|
+
model.showAllRegionsInAssembly(selectedAsm);
|
|
137
|
+
}, variant: "contained", color: "secondary" }, "Show all regions in assembly"))))),
|
|
138
|
+
isSearchDialogDisplayed ? (React.createElement(SearchResultsDialog, { model: model, optAssemblyName: selectedAsm, handleClose: () => model.setSearchResults(undefined, undefined) })) : null));
|
|
139
|
+
});
|
|
140
|
+
export default ImportForm;
|
|
141
|
+
//# sourceMappingURL=ImportForm.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ImportForm.js","sourceRoot":"","sources":["../../../src/LinearGenomeView/components/ImportForm.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { Button, Paper, Typography } from '@mui/material';
|
|
3
|
+
import { makeStyles } from 'tss-react/mui';
|
|
4
|
+
import { TrackSelector as TrackSelectorIcon } from '@jbrowse/core/ui/Icons';
|
|
5
|
+
import { observer } from 'mobx-react';
|
|
6
|
+
import Header from './Header';
|
|
7
|
+
import TrackContainer from './TrackContainer';
|
|
8
|
+
import TracksContainer from './TracksContainer';
|
|
9
|
+
import ImportForm from './ImportForm';
|
|
10
|
+
import MiniControls from './MiniControls';
|
|
11
|
+
import SequenceDialog from './SequenceDialog';
|
|
12
|
+
import SearchResultsDialog from './SearchResultsDialog';
|
|
13
|
+
const useStyles = makeStyles()(theme => ({
|
|
14
|
+
note: {
|
|
15
|
+
textAlign: 'center',
|
|
16
|
+
paddingTop: theme.spacing(1),
|
|
17
|
+
paddingBottom: theme.spacing(1),
|
|
18
|
+
},
|
|
19
|
+
dots: {
|
|
20
|
+
'&::after': {
|
|
21
|
+
display: 'inline-block',
|
|
22
|
+
animation: '$ellipsis 1.5s infinite',
|
|
23
|
+
content: '"."',
|
|
24
|
+
width: '1em',
|
|
25
|
+
textAlign: 'left',
|
|
26
|
+
},
|
|
27
|
+
},
|
|
28
|
+
'@keyframes ellipsis': {
|
|
29
|
+
'0%': {
|
|
30
|
+
content: '"."',
|
|
31
|
+
},
|
|
32
|
+
'33%': {
|
|
33
|
+
content: '".."',
|
|
34
|
+
},
|
|
35
|
+
'66%': {
|
|
36
|
+
content: '"..."',
|
|
37
|
+
},
|
|
38
|
+
},
|
|
39
|
+
}));
|
|
40
|
+
const LinearGenomeView = observer(({ model }) => {
|
|
41
|
+
const { tracks, error, hideHeader, initialized, hasDisplayedRegions } = model;
|
|
42
|
+
const { classes } = useStyles();
|
|
43
|
+
if (!initialized && !error) {
|
|
44
|
+
return (React.createElement(Typography, { className: classes.dots, variant: "h5" }, "Loading"));
|
|
45
|
+
}
|
|
46
|
+
if (!hasDisplayedRegions || error) {
|
|
47
|
+
return React.createElement(ImportForm, { model: model });
|
|
48
|
+
}
|
|
49
|
+
return (React.createElement("div", { style: { position: 'relative' } },
|
|
50
|
+
model.seqDialogDisplayed ? (React.createElement(SequenceDialog, { model: model, handleClose: () => {
|
|
51
|
+
model.setSequenceDialogOpen(false);
|
|
52
|
+
} })) : null,
|
|
53
|
+
model.isSearchDialogDisplayed ? (React.createElement(SearchResultsDialog, { model: model, handleClose: () => {
|
|
54
|
+
model.setSearchResults(undefined, undefined);
|
|
55
|
+
} })) : null,
|
|
56
|
+
!hideHeader ? (React.createElement(Header, { model: model })) : (React.createElement("div", { style: {
|
|
57
|
+
position: 'absolute',
|
|
58
|
+
right: 0,
|
|
59
|
+
zIndex: 1001,
|
|
60
|
+
} },
|
|
61
|
+
React.createElement(MiniControls, { model: model }))),
|
|
62
|
+
React.createElement(TracksContainer, { model: model }, !tracks.length ? (React.createElement(Paper, { variant: "outlined", className: classes.note }, !model.hideNoTracksActive ? (React.createElement(React.Fragment, null,
|
|
63
|
+
React.createElement(Typography, null, "No tracks active."),
|
|
64
|
+
React.createElement(Button, { variant: "contained", color: "primary", onClick: model.activateTrackSelector, style: { zIndex: 1000 }, startIcon: React.createElement(TrackSelectorIcon, null) }, "Open track selector"))) : (React.createElement("div", { style: { height: '48px' } })))) : (tracks.map(track => (React.createElement(TrackContainer, { key: track.id, model: model, track: track })))))));
|
|
65
|
+
});
|
|
66
|
+
export default LinearGenomeView;
|
|
67
|
+
//# sourceMappingURL=LinearGenomeView.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LinearGenomeView.js","sourceRoot":"","sources":["../../../src/LinearGenomeView/components/LinearGenomeView.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { renderToStaticMarkup } from 'react-dom/server';
|
|
3
|
+
import { when } from 'mobx';
|
|
4
|
+
import { getParent } from 'mobx-state-tree';
|
|
5
|
+
import { getConf, readConfObject } from '@jbrowse/core/configuration';
|
|
6
|
+
import { getSession, getBpDisplayStr } from '@jbrowse/core/util';
|
|
7
|
+
import Base1DView from '@jbrowse/core/util/Base1DViewModel';
|
|
8
|
+
// locals
|
|
9
|
+
import Ruler from './Ruler';
|
|
10
|
+
import { HEADER_OVERVIEW_HEIGHT, } from '..';
|
|
11
|
+
import { Polygon, Cytobands } from './OverviewScaleBar';
|
|
12
|
+
function ScaleBar({ model, fontSize }) {
|
|
13
|
+
const { offsetPx, dynamicBlocks: { totalWidthPxWithoutBorders: totalWidthPx, totalBp }, } = model;
|
|
14
|
+
const displayBp = getBpDisplayStr(totalBp);
|
|
15
|
+
const x0 = Math.max(-offsetPx, 0);
|
|
16
|
+
const x1 = x0 + totalWidthPx;
|
|
17
|
+
return (React.createElement(React.Fragment, null,
|
|
18
|
+
React.createElement("line", { x1: x0, x2: x1, y1: 10, y2: 10, stroke: "black" }),
|
|
19
|
+
React.createElement("line", { x1: x0, x2: x0, y1: 5, y2: 15, stroke: "black" }),
|
|
20
|
+
React.createElement("line", { x1: x1, x2: x1, y1: 5, y2: 15, stroke: "black" }),
|
|
21
|
+
React.createElement("text", { x: x0 + (x1 - x0) / 2, y: fontSize * 2, textAnchor: "middle", fontSize: fontSize }, displayBp)));
|
|
22
|
+
}
|
|
23
|
+
function SVGRuler({ model, fontSize, width, }) {
|
|
24
|
+
const { dynamicBlocks: { contentBlocks }, offsetPx: viewOffsetPx, bpPerPx, } = model;
|
|
25
|
+
const renderRuler = contentBlocks.length < 5;
|
|
26
|
+
return (React.createElement(React.Fragment, null,
|
|
27
|
+
React.createElement("defs", null,
|
|
28
|
+
React.createElement("clipPath", { id: "clip-ruler" },
|
|
29
|
+
React.createElement("rect", { x: 0, y: 0, width: width, height: 20 }))),
|
|
30
|
+
contentBlocks.map(block => {
|
|
31
|
+
const { key, start, end, reversed, offsetPx, refName } = block;
|
|
32
|
+
const offsetLeft = offsetPx - viewOffsetPx;
|
|
33
|
+
return (React.createElement("g", { key: `${key}`, transform: `translate(${offsetLeft} 0)` },
|
|
34
|
+
React.createElement("text", { x: offsetLeft / bpPerPx, y: fontSize, fontSize: fontSize }, refName),
|
|
35
|
+
renderRuler ? (React.createElement("g", { transform: "translate(0 20)", clipPath: "url(#clip-ruler)" },
|
|
36
|
+
React.createElement(Ruler, { start: start, end: end, bpPerPx: bpPerPx, reversed: reversed }))) : (React.createElement("line", { strokeWidth: 1, stroke: "black", x1: start / bpPerPx, x2: end / bpPerPx, y1: 20, y2: 20 }))));
|
|
37
|
+
})));
|
|
38
|
+
}
|
|
39
|
+
const fontSize = 15;
|
|
40
|
+
const rulerHeight = 50;
|
|
41
|
+
const textHeight = fontSize + 5;
|
|
42
|
+
const paddingHeight = 20;
|
|
43
|
+
const headerHeight = textHeight + 20;
|
|
44
|
+
const cytobandHeightIfExists = 100;
|
|
45
|
+
const totalHeight = (tracks) => {
|
|
46
|
+
return tracks.reduce((accum, track) => {
|
|
47
|
+
const display = track.displays[0];
|
|
48
|
+
return accum + display.height + paddingHeight + textHeight;
|
|
49
|
+
}, 0);
|
|
50
|
+
};
|
|
51
|
+
// SVG component, ruler and assembly name
|
|
52
|
+
const SVGHeader = ({ model }) => {
|
|
53
|
+
const { width, assemblyNames, showCytobands, displayedRegions } = model;
|
|
54
|
+
const { assemblyManager } = getSession(model);
|
|
55
|
+
const assemblyName = assemblyNames.length > 1 ? '' : assemblyNames[0];
|
|
56
|
+
const assembly = assemblyManager.get(assemblyName);
|
|
57
|
+
const overview = Base1DView.create({
|
|
58
|
+
displayedRegions: JSON.parse(JSON.stringify(displayedRegions)),
|
|
59
|
+
interRegionPaddingWidth: 0,
|
|
60
|
+
minimumBlockWidth: model.minimumBlockWidth,
|
|
61
|
+
});
|
|
62
|
+
const visibleRegions = model.dynamicBlocks.contentBlocks;
|
|
63
|
+
overview.setVolatileWidth(width);
|
|
64
|
+
overview.showAllRegions();
|
|
65
|
+
const block = overview.dynamicBlocks.contentBlocks[0];
|
|
66
|
+
const first = visibleRegions[0];
|
|
67
|
+
const firstOverviewPx = overview.bpToPx({
|
|
68
|
+
...first,
|
|
69
|
+
coord: first.reversed ? first.end : first.start,
|
|
70
|
+
}) || 0;
|
|
71
|
+
const last = visibleRegions[visibleRegions.length - 1];
|
|
72
|
+
const lastOverviewPx = overview.bpToPx({
|
|
73
|
+
...last,
|
|
74
|
+
coord: last.reversed ? last.start : last.end,
|
|
75
|
+
}) || 0;
|
|
76
|
+
const cytobandHeight = showCytobands ? cytobandHeightIfExists : 0;
|
|
77
|
+
return (React.createElement("g", { id: "header" },
|
|
78
|
+
React.createElement("text", { x: 0, y: fontSize, fontSize: fontSize }, assemblyName),
|
|
79
|
+
showCytobands ? (React.createElement("g", { transform: `translate(0 ${rulerHeight})` },
|
|
80
|
+
React.createElement(Cytobands, { overview: overview, assembly: assembly, block: block }),
|
|
81
|
+
React.createElement("rect", { stroke: "red", fill: "rgb(255,0,0,0.1)", width: Math.max(lastOverviewPx - firstOverviewPx, 0.5), height: HEADER_OVERVIEW_HEIGHT - 1, x: firstOverviewPx, y: 0.5 }),
|
|
82
|
+
React.createElement("g", { transform: `translate(0,${HEADER_OVERVIEW_HEIGHT})` },
|
|
83
|
+
React.createElement(Polygon, { overview: overview, model: model, useOffset: false })))) : null,
|
|
84
|
+
React.createElement("g", { transform: `translate(0 ${fontSize + cytobandHeight})` },
|
|
85
|
+
React.createElement(ScaleBar, { model: model, fontSize: fontSize })),
|
|
86
|
+
React.createElement("g", { transform: `translate(0 ${rulerHeight + cytobandHeight})` },
|
|
87
|
+
React.createElement(SVGRuler, { model: model, fontSize: fontSize, width: width }))));
|
|
88
|
+
};
|
|
89
|
+
// SVG component, region separator
|
|
90
|
+
const SVGRegionSeparators = ({ model, height, }) => {
|
|
91
|
+
const { dynamicBlocks, offsetPx, interRegionPaddingWidth } = model;
|
|
92
|
+
return (React.createElement(React.Fragment, null, dynamicBlocks.contentBlocks.slice(1).map(block => (React.createElement("rect", { key: block.key, x: block.offsetPx - offsetPx - interRegionPaddingWidth, width: interRegionPaddingWidth, y: 0, height: height, stroke: "none", fill: "grey" })))));
|
|
93
|
+
};
|
|
94
|
+
// SVG component, tracks
|
|
95
|
+
function SVGTracks({ displayResults, model, offset, }) {
|
|
96
|
+
return (React.createElement(React.Fragment, null, displayResults.map(({ track, result }) => {
|
|
97
|
+
const current = offset;
|
|
98
|
+
const trackName = getConf(track, 'name') ||
|
|
99
|
+
`Reference sequence (${readConfObject(getParent(track.configuration), 'name')})`;
|
|
100
|
+
const display = track.displays[0];
|
|
101
|
+
offset += display.height + paddingHeight + textHeight;
|
|
102
|
+
return (React.createElement("g", { key: track.configuration.trackId, transform: `translate(0 ${current})` },
|
|
103
|
+
React.createElement("text", { fontSize: fontSize, x: Math.max(-model.offsetPx, 0) }, trackName),
|
|
104
|
+
React.createElement("g", { transform: `translate(0 ${textHeight})` },
|
|
105
|
+
result,
|
|
106
|
+
React.createElement(SVGRegionSeparators, { model: model, height: display.height }))));
|
|
107
|
+
})));
|
|
108
|
+
}
|
|
109
|
+
// render LGV to SVG
|
|
110
|
+
export async function renderToSvg(model, opts) {
|
|
111
|
+
await when(() => model.initialized);
|
|
112
|
+
const { width, tracks, showCytobands } = model;
|
|
113
|
+
const shift = 50;
|
|
114
|
+
const offset = headerHeight +
|
|
115
|
+
rulerHeight +
|
|
116
|
+
(showCytobands ? cytobandHeightIfExists : 0) +
|
|
117
|
+
20;
|
|
118
|
+
const height = totalHeight(tracks) + offset;
|
|
119
|
+
const displayResults = await Promise.all(tracks.map(async (track) => {
|
|
120
|
+
const display = track.displays[0];
|
|
121
|
+
await when(() => (display.ready !== undefined ? display.ready : true));
|
|
122
|
+
const result = await display.renderSvg(opts);
|
|
123
|
+
return { track, result };
|
|
124
|
+
}));
|
|
125
|
+
// the xlink namespace is used for rendering <image> tag
|
|
126
|
+
return renderToStaticMarkup(React.createElement("svg", { width: width, height: height, xmlns: "http://www.w3.org/2000/svg", xmlnsXlink: "http://www.w3.org/1999/xlink", viewBox: [0, 0, width + shift * 2, height].toString() },
|
|
127
|
+
React.createElement("rect", { width: width + shift * 2, height: height, fill: "white" }),
|
|
128
|
+
React.createElement("g", { stroke: "none", transform: `translate(${shift} ${fontSize})` },
|
|
129
|
+
React.createElement(SVGHeader, { model: model }),
|
|
130
|
+
React.createElement(SVGTracks, { model: model, displayResults: displayResults, offset: offset }))));
|
|
131
|
+
}
|
|
132
|
+
//# sourceMappingURL=LinearGenomeViewSvg.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LinearGenomeViewSvg.js","sourceRoot":"","sources":["../../../src/LinearGenomeView/components/LinearGenomeViewSvg.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import React, { useState } from 'react';
|
|
2
|
+
import { observer } from 'mobx-react';
|
|
3
|
+
import { IconButton, Paper } from '@mui/material';
|
|
4
|
+
import ZoomIn from '@mui/icons-material/ZoomIn';
|
|
5
|
+
import ZoomOut from '@mui/icons-material/ZoomOut';
|
|
6
|
+
import ArrowDown from '@mui/icons-material/KeyboardArrowDown';
|
|
7
|
+
import Menu from '@jbrowse/core/ui/Menu';
|
|
8
|
+
const MiniControls = observer((props) => {
|
|
9
|
+
const { model } = props;
|
|
10
|
+
const { bpPerPx, maxBpPerPx, minBpPerPx, scaleFactor } = model;
|
|
11
|
+
const [anchorEl, setAnchorEl] = useState();
|
|
12
|
+
return (React.createElement(Paper, { style: { background: '#aaa7' } },
|
|
13
|
+
React.createElement(IconButton, { color: "secondary", onClick: event => setAnchorEl(event.currentTarget) },
|
|
14
|
+
React.createElement(ArrowDown, { fontSize: "small" })),
|
|
15
|
+
React.createElement(IconButton, { "data-testid": "zoom_out", onClick: () => model.zoom(bpPerPx * 2), disabled: bpPerPx >= maxBpPerPx - 0.0001 || scaleFactor !== 1, color: "secondary" },
|
|
16
|
+
React.createElement(ZoomOut, { fontSize: "small" })),
|
|
17
|
+
React.createElement(IconButton, { "data-testid": "zoom_in", onClick: () => model.zoom(model.bpPerPx / 2), disabled: bpPerPx <= minBpPerPx + 0.0001 || scaleFactor !== 1, color: "secondary" },
|
|
18
|
+
React.createElement(ZoomIn, { fontSize: "small" })),
|
|
19
|
+
React.createElement(Menu, { anchorEl: anchorEl, open: Boolean(anchorEl), onMenuItemClick: (_, callback) => {
|
|
20
|
+
callback();
|
|
21
|
+
setAnchorEl(undefined);
|
|
22
|
+
}, onClose: () => setAnchorEl(undefined), menuItems: model.menuItems() })));
|
|
23
|
+
});
|
|
24
|
+
export default MiniControls;
|
|
25
|
+
//# sourceMappingURL=MiniControls.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MiniControls.js","sourceRoot":"","sources":["../../../src/LinearGenomeView/components/MiniControls.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AACvC,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AACrC,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,eAAe,CAAA;AACjD,OAAO,MAAM,MAAM,4BAA4B,CAAA;AAC/C,OAAO,OAAO,MAAM,6BAA6B,CAAA;AACjD,OAAO,SAAS,MAAM,uCAAuC,CAAA;AAC7D,OAAO,IAAI,MAAM,uBAAuB,CAAA;AAGxC,MAAM,YAAY,GAAG,QAAQ,CAAC,CAAC,KAAuC,EAAE,EAAE;IACxE,MAAM,EAAE,KAAK,EAAE,GAAG,KAAK,CAAA;IACvB,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,WAAW,EAAE,GAAG,KAAK,CAAA;IAC9D,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,QAAQ,EAAe,CAAA;IAEvD,OAAO,CACL,oBAAC,KAAK,IAAC,KAAK,EAAE,EAAE,UAAU,EAAE,OAAO,EAAE;QACnC,oBAAC,UAAU,IACT,KAAK,EAAC,WAAW,EACjB,OAAO,EAAE,KAAK,CAAC,EAAE,CAAC,WAAW,CAAC,KAAK,CAAC,aAAa,CAAC;YAElD,oBAAC,SAAS,IAAC,QAAQ,EAAC,OAAO,GAAG,CACnB;QAEb,oBAAC,UAAU,mBACG,UAAU,EACtB,OAAO,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC,EACtC,QAAQ,EAAE,OAAO,IAAI,UAAU,GAAG,MAAM,IAAI,WAAW,KAAK,CAAC,EAC7D,KAAK,EAAC,WAAW;YAEjB,oBAAC,OAAO,IAAC,QAAQ,EAAC,OAAO,GAAG,CACjB;QACb,oBAAC,UAAU,mBACG,SAAS,EACrB,OAAO,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,CAAC,CAAC,EAC5C,QAAQ,EAAE,OAAO,IAAI,UAAU,GAAG,MAAM,IAAI,WAAW,KAAK,CAAC,EAC7D,KAAK,EAAC,WAAW;YAEjB,oBAAC,MAAM,IAAC,QAAQ,EAAC,OAAO,GAAG,CAChB;QACb,oBAAC,IAAI,IACH,QAAQ,EAAE,QAAQ,EAClB,IAAI,EAAE,OAAO,CAAC,QAAQ,CAAC,EACvB,eAAe,EAAE,CAAC,CAAC,EAAE,QAAQ,EAAE,EAAE;gBAC/B,QAAQ,EAAE,CAAA;gBACV,WAAW,CAAC,SAAS,CAAC,CAAA;YACxB,CAAC,EACD,OAAO,EAAE,GAAG,EAAE,CAAC,WAAW,CAAC,SAAS,CAAC,EACrC,SAAS,EAAE,KAAK,CAAC,SAAS,EAAE,GAC5B,CACI,CACT,CAAA;AACH,CAAC,CAAC,CAAA;AAEF,eAAe,YAAY,CAAA"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import ReactPropTypes from 'prop-types';
|
|
3
|
+
import { Base1DViewModel } from '@jbrowse/core/util/Base1DViewModel';
|
|
4
|
+
import { LinearGenomeViewModel } from '..';
|
|
5
|
+
declare type LGV = LinearGenomeViewModel;
|
|
6
|
+
declare function OverviewRubberBand({ model, overview, ControlComponent, }: {
|
|
7
|
+
model: LGV;
|
|
8
|
+
overview: Base1DViewModel;
|
|
9
|
+
ControlComponent?: React.ReactElement;
|
|
10
|
+
}): JSX.Element;
|
|
11
|
+
declare namespace OverviewRubberBand {
|
|
12
|
+
var propTypes: {
|
|
13
|
+
model: ReactPropTypes.Validator<any>;
|
|
14
|
+
overview: ReactPropTypes.Validator<any>;
|
|
15
|
+
ControlComponent: ReactPropTypes.Requireable<ReactPropTypes.ReactNodeLike>;
|
|
16
|
+
};
|
|
17
|
+
var defaultProps: {
|
|
18
|
+
ControlComponent: JSX.Element;
|
|
19
|
+
};
|
|
20
|
+
}
|
|
21
|
+
declare const _default: typeof OverviewRubberBand;
|
|
22
|
+
export default _default;
|