@jbrowse/plugin-breakpoint-split-view 3.6.4 → 3.7.0
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/BreakpointSplitView/components/BreakpointSplitView.js +2 -1
- package/dist/BreakpointSplitView/components/Header.d.ts +5 -0
- package/dist/BreakpointSplitView/components/Header.js +52 -0
- package/dist/BreakpointSplitView/components/HeaderSearchBoxes.d.ts +5 -0
- package/dist/BreakpointSplitView/components/HeaderSearchBoxes.js +24 -0
- package/dist/BreakpointSplitView/model.d.ts +4 -2
- package/dist/BreakpointSplitView/model.js +12 -0
- package/esm/BreakpointSplitView/components/BreakpointSplitView.js +2 -1
- package/esm/BreakpointSplitView/components/Header.d.ts +5 -0
- package/esm/BreakpointSplitView/components/Header.js +47 -0
- package/esm/BreakpointSplitView/components/HeaderSearchBoxes.d.ts +5 -0
- package/esm/BreakpointSplitView/components/HeaderSearchBoxes.js +22 -0
- package/esm/BreakpointSplitView/model.d.ts +4 -2
- package/esm/BreakpointSplitView/model.js +12 -0
- package/package.json +4 -4
|
@@ -8,6 +8,7 @@ const util_1 = require("@jbrowse/core/util");
|
|
|
8
8
|
const mobx_react_1 = require("mobx-react");
|
|
9
9
|
const mui_1 = require("tss-react/mui");
|
|
10
10
|
const BreakpointSplitViewOverlay_1 = __importDefault(require("./BreakpointSplitViewOverlay"));
|
|
11
|
+
const Header_1 = __importDefault(require("./Header"));
|
|
11
12
|
const useStyles = (0, mui_1.makeStyles)()(theme => ({
|
|
12
13
|
viewDivider: {
|
|
13
14
|
background: theme.palette.secondary.main,
|
|
@@ -40,6 +41,6 @@ const BreakpointSplitViewLevels = (0, mobx_react_1.observer)(function ({ model,
|
|
|
40
41
|
});
|
|
41
42
|
const BreakpointSplitView = (0, mobx_react_1.observer)(function ({ model, }) {
|
|
42
43
|
const { classes } = useStyles();
|
|
43
|
-
return ((0, jsx_runtime_1.
|
|
44
|
+
return ((0, jsx_runtime_1.jsxs)("div", { children: [model.showHeader ? (0, jsx_runtime_1.jsx)(Header_1.default, { model: model }) : null, (0, jsx_runtime_1.jsxs)("div", { className: classes.container, children: [(0, jsx_runtime_1.jsx)(BreakpointSplitViewLevels, { model: model }), (0, jsx_runtime_1.jsx)(BreakpointSplitViewOverlay_1.default, { model: model })] })] }));
|
|
44
45
|
});
|
|
45
46
|
exports.default = BreakpointSplitView;
|
|
@@ -0,0 +1,52 @@
|
|
|
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 jsx_runtime_1 = require("react/jsx-runtime");
|
|
7
|
+
const react_1 = require("react");
|
|
8
|
+
const CascadingMenuButton_1 = __importDefault(require("@jbrowse/core/ui/CascadingMenuButton"));
|
|
9
|
+
const MoreVert_1 = __importDefault(require("@mui/icons-material/MoreVert"));
|
|
10
|
+
const Search_1 = __importDefault(require("@mui/icons-material/Search"));
|
|
11
|
+
const material_1 = require("@mui/material");
|
|
12
|
+
const mobx_react_1 = require("mobx-react");
|
|
13
|
+
const mui_1 = require("tss-react/mui");
|
|
14
|
+
const HeaderSearchBoxes_1 = __importDefault(require("./HeaderSearchBoxes"));
|
|
15
|
+
const useStyles = (0, mui_1.makeStyles)()({
|
|
16
|
+
inline: {
|
|
17
|
+
display: 'inline-flex',
|
|
18
|
+
},
|
|
19
|
+
});
|
|
20
|
+
const Header = (0, mobx_react_1.observer)(function ({ model }) {
|
|
21
|
+
const { classes } = useStyles();
|
|
22
|
+
const { views } = model;
|
|
23
|
+
const [showSearchBoxes, setShowSearchBoxes] = (0, react_1.useState)(views.length <= 3);
|
|
24
|
+
const [sideBySide, setSideBySide] = (0, react_1.useState)(views.length <= 3);
|
|
25
|
+
return ((0, jsx_runtime_1.jsxs)(material_1.FormGroup, { row: true, children: [(0, jsx_runtime_1.jsx)(CascadingMenuButton_1.default, { menuItems: model.menuItems(), children: (0, jsx_runtime_1.jsx)(MoreVert_1.default, {}) }), (0, jsx_runtime_1.jsx)(CascadingMenuButton_1.default, { menuItems: [
|
|
26
|
+
{
|
|
27
|
+
label: 'Show search boxes',
|
|
28
|
+
type: 'checkbox',
|
|
29
|
+
checked: showSearchBoxes,
|
|
30
|
+
onClick: () => {
|
|
31
|
+
setShowSearchBoxes(!showSearchBoxes);
|
|
32
|
+
},
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
label: 'Orientation - Side-by-side',
|
|
36
|
+
type: 'radio',
|
|
37
|
+
checked: sideBySide,
|
|
38
|
+
onClick: () => {
|
|
39
|
+
setSideBySide(!sideBySide);
|
|
40
|
+
},
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
label: 'Orientation - Vertical',
|
|
44
|
+
type: 'radio',
|
|
45
|
+
checked: !sideBySide,
|
|
46
|
+
onClick: () => {
|
|
47
|
+
setSideBySide(!sideBySide);
|
|
48
|
+
},
|
|
49
|
+
},
|
|
50
|
+
], children: (0, jsx_runtime_1.jsx)(Search_1.default, {}) }), showSearchBoxes ? ((0, jsx_runtime_1.jsx)("span", { className: sideBySide ? classes.inline : undefined, children: views.map(view => ((0, jsx_runtime_1.jsx)(HeaderSearchBoxes_1.default, { view: view }, view.id))) })) : null] }));
|
|
51
|
+
});
|
|
52
|
+
exports.default = Header;
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
4
|
+
const util_1 = require("@jbrowse/core/util");
|
|
5
|
+
const plugin_linear_genome_view_1 = require("@jbrowse/plugin-linear-genome-view");
|
|
6
|
+
const material_1 = require("@mui/material");
|
|
7
|
+
const mobx_react_1 = require("mobx-react");
|
|
8
|
+
const mui_1 = require("tss-react/mui");
|
|
9
|
+
const useStyles = (0, mui_1.makeStyles)()(() => ({
|
|
10
|
+
bp: {
|
|
11
|
+
display: 'flex',
|
|
12
|
+
alignItems: 'center',
|
|
13
|
+
marginLeft: 10,
|
|
14
|
+
},
|
|
15
|
+
searchBox: {
|
|
16
|
+
display: 'flex',
|
|
17
|
+
},
|
|
18
|
+
}));
|
|
19
|
+
const HeaderSearchBoxes = (0, mobx_react_1.observer)(function ({ view, }) {
|
|
20
|
+
const { classes } = useStyles();
|
|
21
|
+
const { assemblyDisplayNames, coarseTotalBp } = view;
|
|
22
|
+
return ((0, jsx_runtime_1.jsxs)("span", { className: classes.searchBox, children: [(0, jsx_runtime_1.jsx)(plugin_linear_genome_view_1.SearchBox, { model: view, showHelp: false }), (0, jsx_runtime_1.jsxs)(material_1.Typography, { variant: "body2", color: "textSecondary", className: classes.bp, children: [assemblyDisplayNames.join(','), " ", (0, util_1.getBpDisplayStr)(coarseTotalBp)] })] }));
|
|
23
|
+
});
|
|
24
|
+
exports.default = HeaderSearchBoxes;
|
|
@@ -13,6 +13,7 @@ export default function stateModelFactory(pluginManager: PluginManager): import(
|
|
|
13
13
|
showIntraviewLinks: import("mobx-state-tree").IType<boolean | undefined, boolean, boolean>;
|
|
14
14
|
linkViews: import("mobx-state-tree").IType<boolean | undefined, boolean, boolean>;
|
|
15
15
|
interactiveOverlay: import("mobx-state-tree").IType<boolean | undefined, boolean, boolean>;
|
|
16
|
+
showHeader: import("mobx-state-tree").IType<boolean | undefined, boolean, boolean>;
|
|
16
17
|
views: import("mobx-state-tree").IArrayType<import("mobx-state-tree").IModelType<{
|
|
17
18
|
id: import("mobx-state-tree").IOptionalIType<import("mobx-state-tree").ISimpleType<string>, [undefined]>;
|
|
18
19
|
displayName: import("mobx-state-tree").IMaybe<import("mobx-state-tree").ISimpleType<string>>;
|
|
@@ -64,8 +65,8 @@ export default function stateModelFactory(pluginManager: PluginManager): import(
|
|
|
64
65
|
readonly interRegionPaddingWidth: number;
|
|
65
66
|
readonly assemblyNames: string[];
|
|
66
67
|
readonly assemblyDisplayNames: string[];
|
|
67
|
-
readonly isTopLevelView:
|
|
68
|
-
readonly stickyViewHeaders: boolean
|
|
68
|
+
readonly isTopLevelView: boolean;
|
|
69
|
+
readonly stickyViewHeaders: boolean;
|
|
69
70
|
readonly rubberbandTop: number;
|
|
70
71
|
readonly pinnedTracksTop: number;
|
|
71
72
|
} & {
|
|
@@ -301,6 +302,7 @@ export default function stateModelFactory(pluginManager: PluginManager): import(
|
|
|
301
302
|
setInteractiveOverlay(arg: boolean): void;
|
|
302
303
|
setShowIntraviewLinks(arg: boolean): void;
|
|
303
304
|
setLinkViews(arg: boolean): void;
|
|
305
|
+
setShowHeader(arg: boolean): void;
|
|
304
306
|
setMatchedTrackFeatures(obj: Record<string, Feature[][]>): void;
|
|
305
307
|
reverseViewOrder(): void;
|
|
306
308
|
} & {
|
|
@@ -58,6 +58,7 @@ function stateModelFactory(pluginManager) {
|
|
|
58
58
|
showIntraviewLinks: true,
|
|
59
59
|
linkViews: false,
|
|
60
60
|
interactiveOverlay: true,
|
|
61
|
+
showHeader: false,
|
|
61
62
|
views: mobx_state_tree_1.types.array(pluginManager.getViewType('LinearGenomeView')
|
|
62
63
|
.stateModel),
|
|
63
64
|
}))
|
|
@@ -154,6 +155,9 @@ function stateModelFactory(pluginManager) {
|
|
|
154
155
|
setLinkViews(arg) {
|
|
155
156
|
self.linkViews = arg;
|
|
156
157
|
},
|
|
158
|
+
setShowHeader(arg) {
|
|
159
|
+
self.showHeader = arg;
|
|
160
|
+
},
|
|
157
161
|
setMatchedTrackFeatures(obj) {
|
|
158
162
|
self.matchedTrackFeatures = obj;
|
|
159
163
|
},
|
|
@@ -200,6 +204,14 @@ function stateModelFactory(pluginManager) {
|
|
|
200
204
|
},
|
|
201
205
|
]
|
|
202
206
|
: []),
|
|
207
|
+
{
|
|
208
|
+
label: 'Show header',
|
|
209
|
+
type: 'checkbox',
|
|
210
|
+
checked: self.showHeader,
|
|
211
|
+
onClick: () => {
|
|
212
|
+
self.setShowHeader(!self.showHeader);
|
|
213
|
+
},
|
|
214
|
+
},
|
|
203
215
|
{
|
|
204
216
|
label: 'Show intra-view links',
|
|
205
217
|
type: 'checkbox',
|
|
@@ -3,6 +3,7 @@ import { getEnv } from '@jbrowse/core/util';
|
|
|
3
3
|
import { observer } from 'mobx-react';
|
|
4
4
|
import { makeStyles } from 'tss-react/mui';
|
|
5
5
|
import BreakpointSplitViewOverlay from './BreakpointSplitViewOverlay';
|
|
6
|
+
import Header from './Header';
|
|
6
7
|
const useStyles = makeStyles()(theme => ({
|
|
7
8
|
viewDivider: {
|
|
8
9
|
background: theme.palette.secondary.main,
|
|
@@ -35,6 +36,6 @@ const BreakpointSplitViewLevels = observer(function ({ model, }) {
|
|
|
35
36
|
});
|
|
36
37
|
const BreakpointSplitView = observer(function ({ model, }) {
|
|
37
38
|
const { classes } = useStyles();
|
|
38
|
-
return (
|
|
39
|
+
return (_jsxs("div", { children: [model.showHeader ? _jsx(Header, { model: model }) : null, _jsxs("div", { className: classes.container, children: [_jsx(BreakpointSplitViewLevels, { model: model }), _jsx(BreakpointSplitViewOverlay, { model: model })] })] }));
|
|
39
40
|
});
|
|
40
41
|
export default BreakpointSplitView;
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { useState } from 'react';
|
|
3
|
+
import CascadingMenuButton from '@jbrowse/core/ui/CascadingMenuButton';
|
|
4
|
+
import MoreVertIcon from '@mui/icons-material/MoreVert';
|
|
5
|
+
import SearchIcon from '@mui/icons-material/Search';
|
|
6
|
+
import { FormGroup } from '@mui/material';
|
|
7
|
+
import { observer } from 'mobx-react';
|
|
8
|
+
import { makeStyles } from 'tss-react/mui';
|
|
9
|
+
import HeaderSearchBoxes from './HeaderSearchBoxes';
|
|
10
|
+
const useStyles = makeStyles()({
|
|
11
|
+
inline: {
|
|
12
|
+
display: 'inline-flex',
|
|
13
|
+
},
|
|
14
|
+
});
|
|
15
|
+
const Header = observer(function ({ model }) {
|
|
16
|
+
const { classes } = useStyles();
|
|
17
|
+
const { views } = model;
|
|
18
|
+
const [showSearchBoxes, setShowSearchBoxes] = useState(views.length <= 3);
|
|
19
|
+
const [sideBySide, setSideBySide] = useState(views.length <= 3);
|
|
20
|
+
return (_jsxs(FormGroup, { row: true, children: [_jsx(CascadingMenuButton, { menuItems: model.menuItems(), children: _jsx(MoreVertIcon, {}) }), _jsx(CascadingMenuButton, { menuItems: [
|
|
21
|
+
{
|
|
22
|
+
label: 'Show search boxes',
|
|
23
|
+
type: 'checkbox',
|
|
24
|
+
checked: showSearchBoxes,
|
|
25
|
+
onClick: () => {
|
|
26
|
+
setShowSearchBoxes(!showSearchBoxes);
|
|
27
|
+
},
|
|
28
|
+
},
|
|
29
|
+
{
|
|
30
|
+
label: 'Orientation - Side-by-side',
|
|
31
|
+
type: 'radio',
|
|
32
|
+
checked: sideBySide,
|
|
33
|
+
onClick: () => {
|
|
34
|
+
setSideBySide(!sideBySide);
|
|
35
|
+
},
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
label: 'Orientation - Vertical',
|
|
39
|
+
type: 'radio',
|
|
40
|
+
checked: !sideBySide,
|
|
41
|
+
onClick: () => {
|
|
42
|
+
setSideBySide(!sideBySide);
|
|
43
|
+
},
|
|
44
|
+
},
|
|
45
|
+
], children: _jsx(SearchIcon, {}) }), showSearchBoxes ? (_jsx("span", { className: sideBySide ? classes.inline : undefined, children: views.map(view => (_jsx(HeaderSearchBoxes, { view: view }, view.id))) })) : null] }));
|
|
46
|
+
});
|
|
47
|
+
export default Header;
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { getBpDisplayStr } from '@jbrowse/core/util';
|
|
3
|
+
import { SearchBox } from '@jbrowse/plugin-linear-genome-view';
|
|
4
|
+
import { Typography } from '@mui/material';
|
|
5
|
+
import { observer } from 'mobx-react';
|
|
6
|
+
import { makeStyles } from 'tss-react/mui';
|
|
7
|
+
const useStyles = makeStyles()(() => ({
|
|
8
|
+
bp: {
|
|
9
|
+
display: 'flex',
|
|
10
|
+
alignItems: 'center',
|
|
11
|
+
marginLeft: 10,
|
|
12
|
+
},
|
|
13
|
+
searchBox: {
|
|
14
|
+
display: 'flex',
|
|
15
|
+
},
|
|
16
|
+
}));
|
|
17
|
+
const HeaderSearchBoxes = observer(function ({ view, }) {
|
|
18
|
+
const { classes } = useStyles();
|
|
19
|
+
const { assemblyDisplayNames, coarseTotalBp } = view;
|
|
20
|
+
return (_jsxs("span", { className: classes.searchBox, children: [_jsx(SearchBox, { model: view, showHelp: false }), _jsxs(Typography, { variant: "body2", color: "textSecondary", className: classes.bp, children: [assemblyDisplayNames.join(','), " ", getBpDisplayStr(coarseTotalBp)] })] }));
|
|
21
|
+
});
|
|
22
|
+
export default HeaderSearchBoxes;
|
|
@@ -13,6 +13,7 @@ export default function stateModelFactory(pluginManager: PluginManager): import(
|
|
|
13
13
|
showIntraviewLinks: import("mobx-state-tree").IType<boolean | undefined, boolean, boolean>;
|
|
14
14
|
linkViews: import("mobx-state-tree").IType<boolean | undefined, boolean, boolean>;
|
|
15
15
|
interactiveOverlay: import("mobx-state-tree").IType<boolean | undefined, boolean, boolean>;
|
|
16
|
+
showHeader: import("mobx-state-tree").IType<boolean | undefined, boolean, boolean>;
|
|
16
17
|
views: import("mobx-state-tree").IArrayType<import("mobx-state-tree").IModelType<{
|
|
17
18
|
id: import("mobx-state-tree").IOptionalIType<import("mobx-state-tree").ISimpleType<string>, [undefined]>;
|
|
18
19
|
displayName: import("mobx-state-tree").IMaybe<import("mobx-state-tree").ISimpleType<string>>;
|
|
@@ -64,8 +65,8 @@ export default function stateModelFactory(pluginManager: PluginManager): import(
|
|
|
64
65
|
readonly interRegionPaddingWidth: number;
|
|
65
66
|
readonly assemblyNames: string[];
|
|
66
67
|
readonly assemblyDisplayNames: string[];
|
|
67
|
-
readonly isTopLevelView:
|
|
68
|
-
readonly stickyViewHeaders: boolean
|
|
68
|
+
readonly isTopLevelView: boolean;
|
|
69
|
+
readonly stickyViewHeaders: boolean;
|
|
69
70
|
readonly rubberbandTop: number;
|
|
70
71
|
readonly pinnedTracksTop: number;
|
|
71
72
|
} & {
|
|
@@ -301,6 +302,7 @@ export default function stateModelFactory(pluginManager: PluginManager): import(
|
|
|
301
302
|
setInteractiveOverlay(arg: boolean): void;
|
|
302
303
|
setShowIntraviewLinks(arg: boolean): void;
|
|
303
304
|
setLinkViews(arg: boolean): void;
|
|
305
|
+
setShowHeader(arg: boolean): void;
|
|
304
306
|
setMatchedTrackFeatures(obj: Record<string, Feature[][]>): void;
|
|
305
307
|
reverseViewOrder(): void;
|
|
306
308
|
} & {
|
|
@@ -19,6 +19,7 @@ export default function stateModelFactory(pluginManager) {
|
|
|
19
19
|
showIntraviewLinks: true,
|
|
20
20
|
linkViews: false,
|
|
21
21
|
interactiveOverlay: true,
|
|
22
|
+
showHeader: false,
|
|
22
23
|
views: types.array(pluginManager.getViewType('LinearGenomeView')
|
|
23
24
|
.stateModel),
|
|
24
25
|
}))
|
|
@@ -115,6 +116,9 @@ export default function stateModelFactory(pluginManager) {
|
|
|
115
116
|
setLinkViews(arg) {
|
|
116
117
|
self.linkViews = arg;
|
|
117
118
|
},
|
|
119
|
+
setShowHeader(arg) {
|
|
120
|
+
self.showHeader = arg;
|
|
121
|
+
},
|
|
118
122
|
setMatchedTrackFeatures(obj) {
|
|
119
123
|
self.matchedTrackFeatures = obj;
|
|
120
124
|
},
|
|
@@ -161,6 +165,14 @@ export default function stateModelFactory(pluginManager) {
|
|
|
161
165
|
},
|
|
162
166
|
]
|
|
163
167
|
: []),
|
|
168
|
+
{
|
|
169
|
+
label: 'Show header',
|
|
170
|
+
type: 'checkbox',
|
|
171
|
+
checked: self.showHeader,
|
|
172
|
+
onClick: () => {
|
|
173
|
+
self.setShowHeader(!self.showHeader);
|
|
174
|
+
},
|
|
175
|
+
},
|
|
164
176
|
{
|
|
165
177
|
label: 'Show intra-view links',
|
|
166
178
|
type: 'checkbox',
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@jbrowse/plugin-breakpoint-split-view",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.7.0",
|
|
4
4
|
"description": "JBrowse 2 breakpoint detail split view",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"jbrowse",
|
|
@@ -37,8 +37,8 @@
|
|
|
37
37
|
},
|
|
38
38
|
"dependencies": {
|
|
39
39
|
"@gmod/vcf": "^6.0.8",
|
|
40
|
-
"@jbrowse/core": "^3.
|
|
41
|
-
"@jbrowse/plugin-linear-genome-view": "^3.
|
|
40
|
+
"@jbrowse/core": "^3.7.0",
|
|
41
|
+
"@jbrowse/plugin-linear-genome-view": "^3.7.0",
|
|
42
42
|
"@mui/icons-material": "^7.0.0",
|
|
43
43
|
"@mui/material": "^7.0.0",
|
|
44
44
|
"@types/file-saver": "^2.0.1",
|
|
@@ -58,5 +58,5 @@
|
|
|
58
58
|
"publishConfig": {
|
|
59
59
|
"access": "public"
|
|
60
60
|
},
|
|
61
|
-
"gitHead": "
|
|
61
|
+
"gitHead": "85bdd0d58286b7adbfd408146b15847676317635"
|
|
62
62
|
}
|