@jbrowse/plugin-linear-comparative-view 2.15.4 → 2.16.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/LGVSyntenyDisplay/components/LaunchSyntenyViewDialog.d.ts +2 -1
- package/dist/LGVSyntenyDisplay/components/LaunchSyntenyViewDialog.js +4 -2
- package/dist/LGVSyntenyDisplay/components/util.d.ts +4 -1
- package/dist/LGVSyntenyDisplay/components/util.js +7 -15
- package/dist/LGVSyntenyDisplay/model.d.ts +26 -14
- package/dist/LGVSyntenyDisplay/model.js +23 -1
- package/dist/LaunchLinearSyntenyView.js +41 -11
- package/dist/LinearComparativeDisplay/stateModelFactory.d.ts +42 -14
- package/dist/LinearComparativeDisplay/stateModelFactory.js +20 -10
- package/dist/LinearComparativeView/components/Header.d.ts +2 -3
- package/dist/LinearComparativeView/components/Header.js +72 -62
- package/dist/LinearComparativeView/components/HeaderSearchBoxes.d.ts +6 -0
- package/dist/LinearComparativeView/components/HeaderSearchBoxes.js +34 -0
- package/dist/LinearComparativeView/components/LinearComparativeRenderArea.d.ts +6 -0
- package/dist/LinearComparativeView/components/LinearComparativeRenderArea.js +61 -0
- package/dist/LinearComparativeView/components/LinearComparativeView.d.ts +2 -4
- package/dist/LinearComparativeView/components/LinearComparativeView.js +3 -67
- package/dist/LinearComparativeView/components/Rubberband.js +1 -1
- package/dist/LinearComparativeView/index.js +3 -0
- package/dist/LinearComparativeView/model.d.ts +265 -12
- package/dist/LinearComparativeView/model.js +45 -75
- package/dist/LinearSyntenyDisplay/afterAttach.js +5 -4
- package/dist/LinearSyntenyDisplay/components/LinearSyntenyRendering.js +47 -32
- package/dist/LinearSyntenyDisplay/components/SyntenyContextMenu.js +10 -6
- package/dist/LinearSyntenyDisplay/components/util.d.ts +7 -2
- package/dist/LinearSyntenyDisplay/components/util.js +12 -14
- package/dist/LinearSyntenyDisplay/drawSynteny.d.ts +1 -1
- package/dist/LinearSyntenyDisplay/drawSynteny.js +29 -25
- package/dist/LinearSyntenyDisplay/index.js +1 -1
- package/dist/LinearSyntenyDisplay/model.d.ts +48 -10
- package/dist/LinearSyntenyDisplay/model.js +38 -15
- package/dist/LinearSyntenyView/components/ImportForm/{ImportCustomTrack.d.ts → AddCustomTrack.d.ts} +2 -3
- package/dist/LinearSyntenyView/components/ImportForm/{ImportCustomTrack.js → AddCustomTrack.js} +3 -3
- package/dist/LinearSyntenyView/components/ImportForm/LinearSyntenyImportForm.js +195 -0
- package/dist/LinearSyntenyView/components/ImportForm/Spacer.d.ts +2 -0
- package/dist/LinearSyntenyView/components/ImportForm/Spacer.js +10 -0
- package/dist/LinearSyntenyView/components/ImportForm/TrackSelector.d.ts +10 -0
- package/dist/LinearSyntenyView/components/ImportForm/{ImportSyntenyTrackSelector.js → TrackSelector.js} +15 -20
- package/dist/LinearSyntenyView/components/ImportForm/TrackSelectorUtil.d.ts +14 -0
- package/dist/LinearSyntenyView/components/ImportForm/TrackSelectorUtil.js +52 -0
- package/dist/LinearSyntenyView/components/LinearSyntenyView.js +3 -3
- package/dist/LinearSyntenyView/index.js +1 -1
- package/dist/LinearSyntenyView/model.d.ts +267 -9
- package/dist/LinearSyntenyView/model.js +2 -2
- package/dist/LinearSyntenyView/svgcomponents/SVGLinearGenomeView.d.ts +12 -0
- package/dist/LinearSyntenyView/svgcomponents/SVGLinearGenomeView.js +19 -0
- package/dist/LinearSyntenyView/svgcomponents/SVGLinearSyntenyView.d.ts +1 -3
- package/dist/LinearSyntenyView/svgcomponents/SVGLinearSyntenyView.js +36 -27
- package/dist/LinearSyntenyViewHelper/index.d.ts +2 -0
- package/dist/LinearSyntenyViewHelper/index.js +25 -0
- package/dist/LinearSyntenyViewHelper/stateModelFactory.d.ts +30 -0
- package/dist/LinearSyntenyViewHelper/stateModelFactory.js +105 -0
- package/dist/SyntenyFeatureDetail/SyntenyFeatureDetail.d.ts +14 -0
- package/dist/SyntenyFeatureDetail/SyntenyFeatureDetail.js +100 -0
- package/dist/SyntenyFeatureDetail/index.d.ts +2 -0
- package/dist/SyntenyFeatureDetail/index.js +56 -0
- package/dist/index.js +4 -0
- package/esm/LGVSyntenyDisplay/components/LaunchSyntenyViewDialog.d.ts +2 -1
- package/esm/LGVSyntenyDisplay/components/LaunchSyntenyViewDialog.js +4 -2
- package/esm/LGVSyntenyDisplay/components/util.d.ts +4 -1
- package/esm/LGVSyntenyDisplay/components/util.js +8 -16
- package/esm/LGVSyntenyDisplay/model.d.ts +26 -14
- package/esm/LGVSyntenyDisplay/model.js +25 -3
- package/esm/LaunchLinearSyntenyView.js +41 -11
- package/esm/LinearComparativeDisplay/stateModelFactory.d.ts +42 -14
- package/esm/LinearComparativeDisplay/stateModelFactory.js +21 -11
- package/esm/LinearComparativeView/components/Header.d.ts +2 -3
- package/esm/LinearComparativeView/components/Header.js +73 -63
- package/esm/LinearComparativeView/components/HeaderSearchBoxes.d.ts +6 -0
- package/esm/LinearComparativeView/components/HeaderSearchBoxes.js +29 -0
- package/esm/LinearComparativeView/components/LinearComparativeRenderArea.d.ts +6 -0
- package/esm/LinearComparativeView/components/LinearComparativeRenderArea.js +56 -0
- package/esm/LinearComparativeView/components/LinearComparativeView.d.ts +2 -4
- package/esm/LinearComparativeView/components/LinearComparativeView.js +3 -67
- package/esm/LinearComparativeView/components/Rubberband.js +1 -1
- package/esm/LinearComparativeView/index.js +3 -0
- package/esm/LinearComparativeView/model.d.ts +265 -12
- package/esm/LinearComparativeView/model.js +47 -77
- package/esm/LinearSyntenyDisplay/afterAttach.js +5 -4
- package/esm/LinearSyntenyDisplay/components/LinearSyntenyRendering.js +48 -33
- package/esm/LinearSyntenyDisplay/components/SyntenyContextMenu.js +10 -6
- package/esm/LinearSyntenyDisplay/components/util.d.ts +7 -2
- package/esm/LinearSyntenyDisplay/components/util.js +12 -14
- package/esm/LinearSyntenyDisplay/drawSynteny.d.ts +1 -1
- package/esm/LinearSyntenyDisplay/drawSynteny.js +29 -25
- package/esm/LinearSyntenyDisplay/index.js +1 -1
- package/esm/LinearSyntenyDisplay/model.d.ts +48 -10
- package/esm/LinearSyntenyDisplay/model.js +38 -15
- package/esm/LinearSyntenyView/components/ImportForm/{ImportCustomTrack.d.ts → AddCustomTrack.d.ts} +2 -3
- package/esm/LinearSyntenyView/components/ImportForm/{ImportCustomTrack.js → AddCustomTrack.js} +3 -3
- package/esm/LinearSyntenyView/components/ImportForm/LinearSyntenyImportForm.js +167 -0
- package/esm/LinearSyntenyView/components/ImportForm/Spacer.d.ts +2 -0
- package/esm/LinearSyntenyView/components/ImportForm/Spacer.js +4 -0
- package/esm/LinearSyntenyView/components/ImportForm/TrackSelector.d.ts +10 -0
- package/esm/LinearSyntenyView/components/ImportForm/{ImportSyntenyTrackSelector.js → TrackSelector.js} +15 -20
- package/esm/LinearSyntenyView/components/ImportForm/TrackSelectorUtil.d.ts +14 -0
- package/esm/LinearSyntenyView/components/ImportForm/TrackSelectorUtil.js +23 -0
- package/esm/LinearSyntenyView/components/LinearSyntenyView.js +3 -3
- package/esm/LinearSyntenyView/index.js +1 -1
- package/esm/LinearSyntenyView/model.d.ts +267 -9
- package/esm/LinearSyntenyView/model.js +2 -2
- package/esm/LinearSyntenyView/svgcomponents/SVGLinearGenomeView.d.ts +12 -0
- package/esm/LinearSyntenyView/svgcomponents/SVGLinearGenomeView.js +13 -0
- package/esm/LinearSyntenyView/svgcomponents/SVGLinearSyntenyView.d.ts +1 -3
- package/esm/LinearSyntenyView/svgcomponents/SVGLinearSyntenyView.js +38 -29
- package/esm/LinearSyntenyViewHelper/index.d.ts +2 -0
- package/esm/LinearSyntenyViewHelper/index.js +19 -0
- package/esm/LinearSyntenyViewHelper/stateModelFactory.d.ts +30 -0
- package/esm/LinearSyntenyViewHelper/stateModelFactory.js +102 -0
- package/esm/SyntenyFeatureDetail/SyntenyFeatureDetail.d.ts +14 -0
- package/esm/SyntenyFeatureDetail/SyntenyFeatureDetail.js +72 -0
- package/esm/SyntenyFeatureDetail/index.d.ts +2 -0
- package/esm/SyntenyFeatureDetail/index.js +27 -0
- package/esm/index.js +4 -0
- package/package.json +3 -3
- package/dist/LinearSyntenyView/components/ImportForm/ImportSyntenyTrackSelector.d.ts +0 -9
- package/dist/LinearSyntenyView/components/ImportForm/index.js +0 -138
- package/esm/LinearSyntenyView/components/ImportForm/ImportSyntenyTrackSelector.d.ts +0 -9
- package/esm/LinearSyntenyView/components/ImportForm/index.js +0 -110
- /package/dist/LinearSyntenyView/components/ImportForm/{index.d.ts → LinearSyntenyImportForm.d.ts} +0 -0
- /package/esm/LinearSyntenyView/components/ImportForm/{index.d.ts → LinearSyntenyImportForm.d.ts} +0 -0
|
@@ -27,76 +27,86 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
27
27
|
};
|
|
28
28
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
29
29
|
const react_1 = __importStar(require("react"));
|
|
30
|
+
const mobx_react_1 = require("mobx-react");
|
|
30
31
|
const material_1 = require("@mui/material");
|
|
31
32
|
const mui_1 = require("tss-react/mui");
|
|
32
|
-
const
|
|
33
|
-
const mobx_react_1 = require("mobx-react");
|
|
34
|
-
const ui_1 = require("@jbrowse/core/ui");
|
|
33
|
+
const CascadingMenuButton_1 = __importDefault(require("@jbrowse/core/ui/CascadingMenuButton"));
|
|
35
34
|
// icons
|
|
36
35
|
const MoreVert_1 = __importDefault(require("@mui/icons-material/MoreVert"));
|
|
36
|
+
const Search_1 = __importDefault(require("@mui/icons-material/Search"));
|
|
37
37
|
const Icons_1 = require("@jbrowse/core/ui/Icons");
|
|
38
|
-
const
|
|
39
|
-
const useStyles = (0, mui_1.makeStyles)()(
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
display: 'flex',
|
|
43
|
-
},
|
|
44
|
-
spacer: {
|
|
45
|
-
flexGrow: 1,
|
|
38
|
+
const HeaderSearchBoxes_1 = __importDefault(require("./HeaderSearchBoxes"));
|
|
39
|
+
const useStyles = (0, mui_1.makeStyles)()({
|
|
40
|
+
inline: {
|
|
41
|
+
display: 'inline-flex',
|
|
46
42
|
},
|
|
47
|
-
iconButton: {
|
|
48
|
-
margin: 5,
|
|
49
|
-
},
|
|
50
|
-
bp: {
|
|
51
|
-
display: 'flex',
|
|
52
|
-
alignItems: 'center',
|
|
53
|
-
marginLeft: 10,
|
|
54
|
-
},
|
|
55
|
-
searchContainer: {
|
|
56
|
-
marginLeft: 5,
|
|
57
|
-
},
|
|
58
|
-
searchBox: {
|
|
59
|
-
display: 'flex',
|
|
60
|
-
},
|
|
61
|
-
}));
|
|
62
|
-
const TrackSelector = (0, mobx_react_1.observer)(({ model }) => {
|
|
63
|
-
return (react_1.default.createElement(CascadingMenuButton_1.default, { menuItems: [
|
|
64
|
-
{
|
|
65
|
-
label: 'Synteny track selector',
|
|
66
|
-
onClick: () => model.activateTrackSelector(),
|
|
67
|
-
},
|
|
68
|
-
...model.views.map((view, idx) => ({
|
|
69
|
-
label: `View ${idx + 1} track selector`,
|
|
70
|
-
onClick: () => view.activateTrackSelector(),
|
|
71
|
-
})),
|
|
72
|
-
] },
|
|
73
|
-
react_1.default.createElement(Icons_1.TrackSelector, null)));
|
|
74
43
|
});
|
|
75
|
-
const Header = (0, mobx_react_1.observer)(function ({ model }) {
|
|
44
|
+
const Header = (0, mobx_react_1.observer)(function ({ model, }) {
|
|
76
45
|
const { classes } = useStyles();
|
|
77
|
-
const
|
|
78
|
-
const
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
react_1.default.createElement(
|
|
82
|
-
|
|
83
|
-
|
|
46
|
+
const { views } = model;
|
|
47
|
+
const [showSearchBoxes, setShowSearchBoxes] = (0, react_1.useState)(views.length <= 3);
|
|
48
|
+
const [sideBySide, setSideBySide] = (0, react_1.useState)(views.length <= 3);
|
|
49
|
+
return (react_1.default.createElement(material_1.FormGroup, { row: true },
|
|
50
|
+
react_1.default.createElement(CascadingMenuButton_1.default, { menuItems: [
|
|
51
|
+
{
|
|
52
|
+
label: 'Synteny track selectors',
|
|
53
|
+
type: 'subMenu',
|
|
54
|
+
subMenu: views.slice(0, -1).map((_, idx) => ({
|
|
55
|
+
label: `Row ${idx + 1}->${idx + 2} (${views[idx].assemblyNames.join(',')}->${views[idx + 1].assemblyNames.join(',')})`,
|
|
56
|
+
onClick: () => {
|
|
57
|
+
model.activateTrackSelector(idx);
|
|
58
|
+
},
|
|
59
|
+
})),
|
|
60
|
+
},
|
|
61
|
+
{
|
|
62
|
+
label: 'Row track selectors',
|
|
63
|
+
type: 'subMenu',
|
|
64
|
+
subMenu: views.map((view, idx) => ({
|
|
65
|
+
label: `Row ${idx + 1} track selector (${view.assemblyNames.join(',')})`,
|
|
66
|
+
onClick: () => view.activateTrackSelector(),
|
|
67
|
+
})),
|
|
68
|
+
},
|
|
69
|
+
] },
|
|
70
|
+
react_1.default.createElement(Icons_1.TrackSelector, null)),
|
|
71
|
+
react_1.default.createElement(CascadingMenuButton_1.default, { menuItems: [
|
|
72
|
+
{
|
|
73
|
+
label: 'Row view menus',
|
|
74
|
+
type: 'subMenu',
|
|
75
|
+
subMenu: views.map((view, idx) => ({
|
|
76
|
+
label: `View ${idx + 1} Menu`,
|
|
77
|
+
subMenu: view.menuItems(),
|
|
78
|
+
})),
|
|
79
|
+
},
|
|
80
|
+
...model.headerMenuItems(),
|
|
81
|
+
] },
|
|
84
82
|
react_1.default.createElement(MoreVert_1.default, null)),
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
83
|
+
react_1.default.createElement(CascadingMenuButton_1.default, { menuItems: [
|
|
84
|
+
{
|
|
85
|
+
label: 'Show search boxes',
|
|
86
|
+
type: 'checkbox',
|
|
87
|
+
checked: showSearchBoxes,
|
|
88
|
+
onClick: () => {
|
|
89
|
+
setShowSearchBoxes(!showSearchBoxes);
|
|
90
|
+
},
|
|
91
|
+
},
|
|
92
|
+
{
|
|
93
|
+
label: 'Orientation - Side-by-side',
|
|
94
|
+
type: 'radio',
|
|
95
|
+
checked: sideBySide,
|
|
96
|
+
onClick: () => {
|
|
97
|
+
setSideBySide(!sideBySide);
|
|
98
|
+
},
|
|
99
|
+
},
|
|
100
|
+
{
|
|
101
|
+
label: 'Orientation - Vertical',
|
|
102
|
+
type: 'radio',
|
|
103
|
+
checked: !sideBySide,
|
|
104
|
+
onClick: () => {
|
|
105
|
+
setSideBySide(!sideBySide);
|
|
106
|
+
},
|
|
107
|
+
},
|
|
108
|
+
] },
|
|
109
|
+
react_1.default.createElement(Search_1.default, null)),
|
|
110
|
+
showSearchBoxes ? (react_1.default.createElement("span", { className: sideBySide ? classes.inline : undefined }, views.map(view => (react_1.default.createElement(HeaderSearchBoxes_1.default, { key: view.id, view: view }))))) : null));
|
|
101
111
|
});
|
|
102
112
|
exports.default = Header;
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const react_1 = __importDefault(require("react"));
|
|
7
|
+
const mobx_react_1 = require("mobx-react");
|
|
8
|
+
const material_1 = require("@mui/material");
|
|
9
|
+
const mui_1 = require("tss-react/mui");
|
|
10
|
+
// jbrowse
|
|
11
|
+
const plugin_linear_genome_view_1 = require("@jbrowse/plugin-linear-genome-view");
|
|
12
|
+
const util_1 = require("@jbrowse/core/util");
|
|
13
|
+
const useStyles = (0, mui_1.makeStyles)()(() => ({
|
|
14
|
+
bp: {
|
|
15
|
+
display: 'flex',
|
|
16
|
+
alignItems: 'center',
|
|
17
|
+
marginLeft: 10,
|
|
18
|
+
},
|
|
19
|
+
searchBox: {
|
|
20
|
+
display: 'flex',
|
|
21
|
+
},
|
|
22
|
+
}));
|
|
23
|
+
const HeaderSearchBoxes = (0, mobx_react_1.observer)(function ({ view, }) {
|
|
24
|
+
const { classes } = useStyles();
|
|
25
|
+
const { assemblyNames, coarseTotalBp } = view;
|
|
26
|
+
return (react_1.default.createElement("span", { className: classes.searchBox },
|
|
27
|
+
react_1.default.createElement(plugin_linear_genome_view_1.SearchBox, { model: view, showHelp: false }),
|
|
28
|
+
react_1.default.createElement(material_1.Typography, { variant: "body2", color: "textSecondary", className: classes.bp },
|
|
29
|
+
assemblyNames.join(','),
|
|
30
|
+
" ",
|
|
31
|
+
(0, util_1.toLocale)(Math.round(coarseTotalBp)),
|
|
32
|
+
" bp")));
|
|
33
|
+
});
|
|
34
|
+
exports.default = HeaderSearchBoxes;
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const react_1 = __importDefault(require("react"));
|
|
7
|
+
const mui_1 = require("tss-react/mui");
|
|
8
|
+
const mobx_react_1 = require("mobx-react");
|
|
9
|
+
const util_1 = require("@jbrowse/core/util");
|
|
10
|
+
const ui_1 = require("@jbrowse/core/ui");
|
|
11
|
+
const configuration_1 = require("@jbrowse/core/configuration");
|
|
12
|
+
const useStyles = (0, mui_1.makeStyles)()({
|
|
13
|
+
container: {
|
|
14
|
+
display: 'grid',
|
|
15
|
+
},
|
|
16
|
+
overlay: {
|
|
17
|
+
zIndex: 100,
|
|
18
|
+
gridArea: '1/1',
|
|
19
|
+
},
|
|
20
|
+
resizeHandle: {
|
|
21
|
+
height: 4,
|
|
22
|
+
background: '#ccc',
|
|
23
|
+
},
|
|
24
|
+
});
|
|
25
|
+
function View({ view }) {
|
|
26
|
+
const { pluginManager } = (0, util_1.getEnv)(view);
|
|
27
|
+
const { ReactComponent } = pluginManager.getViewType(view.type);
|
|
28
|
+
return react_1.default.createElement(ReactComponent, { model: view });
|
|
29
|
+
}
|
|
30
|
+
const LinearComparativeRenderArea = (0, mobx_react_1.observer)(function ({ model, }) {
|
|
31
|
+
const { classes } = useStyles();
|
|
32
|
+
const { views, levels } = model;
|
|
33
|
+
const RenderList = [
|
|
34
|
+
react_1.default.createElement(View, { key: views[0].id, view: views[0] }),
|
|
35
|
+
];
|
|
36
|
+
for (let i = 1; i < views.length; i++) {
|
|
37
|
+
const view = views[i];
|
|
38
|
+
const level = levels[i - 1];
|
|
39
|
+
RenderList.push(react_1.default.createElement(react_1.default.Fragment, { key: view.id },
|
|
40
|
+
react_1.default.createElement("div", { className: classes.container },
|
|
41
|
+
react_1.default.createElement(Overlays, { model: model, level: i - 1 })),
|
|
42
|
+
react_1.default.createElement(ui_1.ResizeHandle, { onDrag: n => level === null || level === void 0 ? void 0 : level.setHeight(level.height + n), className: classes.resizeHandle }),
|
|
43
|
+
react_1.default.createElement(View, { view: view })));
|
|
44
|
+
}
|
|
45
|
+
return react_1.default.createElement("div", { className: classes.container }, RenderList);
|
|
46
|
+
});
|
|
47
|
+
const Overlays = (0, mobx_react_1.observer)(function ({ model, level, }) {
|
|
48
|
+
var _a;
|
|
49
|
+
const { classes } = useStyles();
|
|
50
|
+
return (react_1.default.createElement(react_1.default.Fragment, null, (_a = model.levels[level]) === null || _a === void 0 ? void 0 : _a.tracks.map(track => {
|
|
51
|
+
const [display] = track.displays;
|
|
52
|
+
const { RenderingComponent } = display;
|
|
53
|
+
const trackId = (0, configuration_1.getConf)(track, 'trackId');
|
|
54
|
+
return RenderingComponent ? (react_1.default.createElement("div", { className: classes.overlay, key: trackId, style: {
|
|
55
|
+
height: display.height,
|
|
56
|
+
overflow: 'hidden',
|
|
57
|
+
} },
|
|
58
|
+
react_1.default.createElement(RenderingComponent, { model: display }))) : null;
|
|
59
|
+
})));
|
|
60
|
+
});
|
|
61
|
+
exports.default = LinearComparativeRenderArea;
|
|
@@ -1,8 +1,6 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import { LinearComparativeViewModel } from '../model';
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
ExtraButtons?: React.ReactNode;
|
|
6
|
-
model: LCV;
|
|
3
|
+
declare const LinearComparativeView: ({ model, }: {
|
|
4
|
+
model: LinearComparativeViewModel;
|
|
7
5
|
}) => React.JSX.Element;
|
|
8
6
|
export default LinearComparativeView;
|
|
@@ -6,29 +6,10 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
6
6
|
const react_1 = __importDefault(require("react"));
|
|
7
7
|
const mui_1 = require("tss-react/mui");
|
|
8
8
|
const mobx_react_1 = require("mobx-react");
|
|
9
|
-
const configuration_1 = require("@jbrowse/core/configuration");
|
|
10
|
-
const util_1 = require("@jbrowse/core/util");
|
|
11
|
-
const ui_1 = require("@jbrowse/core/ui");
|
|
12
9
|
const Rubberband_1 = __importDefault(require("./Rubberband"));
|
|
13
10
|
const Header_1 = __importDefault(require("./Header"));
|
|
11
|
+
const LinearComparativeRenderArea_1 = __importDefault(require("./LinearComparativeRenderArea"));
|
|
14
12
|
const useStyles = (0, mui_1.makeStyles)()(theme => ({
|
|
15
|
-
container: {
|
|
16
|
-
display: 'grid',
|
|
17
|
-
},
|
|
18
|
-
overlay: {
|
|
19
|
-
zIndex: 100,
|
|
20
|
-
gridArea: '1/1',
|
|
21
|
-
},
|
|
22
|
-
content: {
|
|
23
|
-
gridArea: '1/1',
|
|
24
|
-
position: 'relative',
|
|
25
|
-
},
|
|
26
|
-
grid: {
|
|
27
|
-
display: 'grid',
|
|
28
|
-
},
|
|
29
|
-
relative: {
|
|
30
|
-
position: 'relative',
|
|
31
|
-
},
|
|
32
13
|
// this helps keep the vertical guide inside the parent view container,
|
|
33
14
|
// similar style exists in the single LGV's trackscontainer
|
|
34
15
|
rubberbandContainer: {
|
|
@@ -44,56 +25,11 @@ const useStyles = (0, mui_1.makeStyles)()(theme => ({
|
|
|
44
25
|
},
|
|
45
26
|
},
|
|
46
27
|
}));
|
|
47
|
-
const
|
|
28
|
+
const LinearComparativeView = (0, mobx_react_1.observer)(function ({ model, }) {
|
|
48
29
|
const { classes } = useStyles();
|
|
49
|
-
return (react_1.default.createElement(react_1.default.Fragment, null, model.tracks.map(track => {
|
|
50
|
-
const [display] = track.displays;
|
|
51
|
-
const { RenderingComponent } = display;
|
|
52
|
-
const trackId = (0, configuration_1.getConf)(track, 'trackId');
|
|
53
|
-
return RenderingComponent ? (react_1.default.createElement("div", { className: classes.overlay, key: trackId, style: {
|
|
54
|
-
height: model.middleComparativeHeight,
|
|
55
|
-
overflow: 'hidden',
|
|
56
|
-
} },
|
|
57
|
-
react_1.default.createElement(RenderingComponent, { model: display }))) : null;
|
|
58
|
-
})));
|
|
59
|
-
});
|
|
60
|
-
// The comparative is in the middle of the views
|
|
61
|
-
const MiddleComparativeView = (0, mobx_react_1.observer)(({ model }) => {
|
|
62
|
-
const { classes } = useStyles();
|
|
63
|
-
const { views } = model;
|
|
64
|
-
const { pluginManager } = (0, util_1.getEnv)(model);
|
|
65
|
-
const { ReactComponent } = pluginManager.getViewType(views[0].type);
|
|
66
30
|
return (react_1.default.createElement("div", { className: classes.rubberbandContainer },
|
|
67
31
|
react_1.default.createElement(Header_1.default, { model: model }),
|
|
68
32
|
react_1.default.createElement(Rubberband_1.default, { model: model, ControlComponent: react_1.default.createElement("div", { className: classes.rubberbandDiv }) }),
|
|
69
|
-
react_1.default.createElement(
|
|
70
|
-
react_1.default.createElement(ReactComponent, { model: views[0] }),
|
|
71
|
-
react_1.default.createElement("div", { className: classes.grid },
|
|
72
|
-
react_1.default.createElement(Overlays, { model: model })),
|
|
73
|
-
react_1.default.createElement(ui_1.ResizeHandle, { onDrag: n => model.setMiddleComparativeHeight(model.middleComparativeHeight + n), style: {
|
|
74
|
-
height: 4,
|
|
75
|
-
background: '#ccc',
|
|
76
|
-
} }),
|
|
77
|
-
react_1.default.createElement(ReactComponent, { model: views[1] }))));
|
|
78
|
-
});
|
|
79
|
-
const OverlayComparativeView = (0, mobx_react_1.observer)(({ model }) => {
|
|
80
|
-
const { classes } = useStyles();
|
|
81
|
-
const { views } = model;
|
|
82
|
-
const { pluginManager } = (0, util_1.getEnv)(model);
|
|
83
|
-
return (react_1.default.createElement("div", { className: classes.rubberbandContainer },
|
|
84
|
-
react_1.default.createElement(Header_1.default, { model: model }),
|
|
85
|
-
react_1.default.createElement(Rubberband_1.default, { model: model, ControlComponent: react_1.default.createElement("div", { className: classes.rubberbandDiv }) }),
|
|
86
|
-
react_1.default.createElement("div", { className: classes.container },
|
|
87
|
-
react_1.default.createElement("div", { className: classes.content },
|
|
88
|
-
react_1.default.createElement("div", { className: classes.relative }, views.map(view => {
|
|
89
|
-
const { ReactComponent } = pluginManager.getViewType(view.type);
|
|
90
|
-
return react_1.default.createElement(ReactComponent, { key: view.id, model: view });
|
|
91
|
-
})),
|
|
92
|
-
react_1.default.createElement(Overlays, { model: model })))));
|
|
93
|
-
});
|
|
94
|
-
const LinearComparativeView = (0, mobx_react_1.observer)(function (props) {
|
|
95
|
-
const { model } = props;
|
|
96
|
-
const middle = model.tracks.some(({ displays }) => displays.some((d) => (0, configuration_1.getConf)(d, 'middle')));
|
|
97
|
-
return middle ? (react_1.default.createElement(MiddleComparativeView, { ...props })) : (react_1.default.createElement(OverlayComparativeView, { ...props }));
|
|
33
|
+
react_1.default.createElement(LinearComparativeRenderArea_1.default, { model: model })));
|
|
98
34
|
});
|
|
99
35
|
exports.default = LinearComparativeView;
|
|
@@ -168,7 +168,7 @@ const LinearComparativeRubberband = (0, mobx_react_1.observer)(function Rubberba
|
|
|
168
168
|
react_1.default.createElement("div", { ref: controlsRef, className: classes.rubberbandControl, onMouseDown: mouseDown, onMouseOut: mouseOut, onMouseMove: mouseMove }, ControlComponent)));
|
|
169
169
|
}
|
|
170
170
|
const right = anchorPosition ? anchorPosition.offsetX : currentX || 0;
|
|
171
|
-
const left = right
|
|
171
|
+
const left = Math.min(right, startX);
|
|
172
172
|
const width = Math.abs(right - startX);
|
|
173
173
|
const { views } = model;
|
|
174
174
|
const leftBpOffset = views.map(view => view.pxToBp(left));
|
|
@@ -34,6 +34,9 @@ function LinearComparativeViewF(pluginManager) {
|
|
|
34
34
|
pluginManager.addViewType(() => {
|
|
35
35
|
return new ViewType_1.default({
|
|
36
36
|
name: 'LinearComparativeView',
|
|
37
|
+
viewMetadata: {
|
|
38
|
+
hiddenFromGUI: true,
|
|
39
|
+
},
|
|
37
40
|
displayName: 'Linear comparative view',
|
|
38
41
|
stateModel: (0, model_1.default)(pluginManager),
|
|
39
42
|
ReactComponent: (0, react_1.lazy)(() => Promise.resolve().then(() => __importStar(require('./components/LinearComparativeView')))),
|