@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.
@@ -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.jsx)("div", { children: (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
+ 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,5 @@
1
+ import type { BreakpointViewModel } from '../model';
2
+ declare const Header: ({ model }: {
3
+ model: BreakpointViewModel;
4
+ }) => import("react/jsx-runtime").JSX.Element;
5
+ export default Header;
@@ -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,5 @@
1
+ import type { LinearGenomeViewModel } from '@jbrowse/plugin-linear-genome-view';
2
+ declare const HeaderSearchBoxes: ({ view, }: {
3
+ view: LinearGenomeViewModel;
4
+ }) => import("react/jsx-runtime").JSX.Element;
5
+ export default HeaderSearchBoxes;
@@ -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: import("@jbrowse/core/util").AbstractViewModel | undefined;
68
- readonly stickyViewHeaders: boolean | undefined;
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 (_jsx("div", { children: _jsxs("div", { className: classes.container, children: [_jsx(BreakpointSplitViewLevels, { model: model }), _jsx(BreakpointSplitViewOverlay, { model: model })] }) }));
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,5 @@
1
+ import type { BreakpointViewModel } from '../model';
2
+ declare const Header: ({ model }: {
3
+ model: BreakpointViewModel;
4
+ }) => import("react/jsx-runtime").JSX.Element;
5
+ export default Header;
@@ -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,5 @@
1
+ import type { LinearGenomeViewModel } from '@jbrowse/plugin-linear-genome-view';
2
+ declare const HeaderSearchBoxes: ({ view, }: {
3
+ view: LinearGenomeViewModel;
4
+ }) => import("react/jsx-runtime").JSX.Element;
5
+ export default HeaderSearchBoxes;
@@ -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: import("@jbrowse/core/util").AbstractViewModel | undefined;
68
- readonly stickyViewHeaders: boolean | undefined;
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.6.4",
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.6.4",
41
- "@jbrowse/plugin-linear-genome-view": "^3.6.4",
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": "3db8e50ce2bd9c081efbf6c2e7ae5f342380a25a"
61
+ "gitHead": "85bdd0d58286b7adbfd408146b15847676317635"
62
62
  }