@jbrowse/core 2.3.4 → 2.4.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/BaseFeatureWidget/BaseFeatureDetail.d.ts +18 -19
- package/BaseFeatureWidget/BaseFeatureDetail.js +64 -61
- package/BaseFeatureWidget/SequenceBox.js +9 -3
- package/BaseFeatureWidget/SequenceFeatureDetails.js +70 -52
- package/BaseFeatureWidget/SequencePanel.d.ts +3 -3
- package/BaseFeatureWidget/SequencePanel.js +8 -5
- package/CorePlugin.js +2 -7
- package/PluginLoader.d.ts +1 -1
- package/PluginLoader.js +17 -21
- package/data_adapters/CytobandAdapter/CytobandAdapter.d.ts +8 -0
- package/data_adapters/CytobandAdapter/CytobandAdapter.js +40 -0
- package/data_adapters/CytobandAdapter/configSchema.d.ts +2 -0
- package/data_adapters/CytobandAdapter/configSchema.js +17 -0
- package/data_adapters/CytobandAdapter/index.d.ts +3 -0
- package/data_adapters/CytobandAdapter/index.js +37 -0
- package/package.json +5 -4
- package/pluggableElementTypes/PluggableElementBase.d.ts +1 -1
- package/pluggableElementTypes/PluggableElementBase.js +1 -2
- package/pluggableElementTypes/RpcMethodType.d.ts +5 -8
- package/pluggableElementTypes/RpcMethodType.js +22 -33
- package/pluggableElementTypes/renderers/CircularChordRendererType.d.ts +13 -2
- package/pluggableElementTypes/renderers/CircularChordRendererType.js +10 -2
- package/pluggableElementTypes/renderers/ComparativeServerSideRendererType.d.ts +6 -0
- package/pluggableElementTypes/renderers/ComparativeServerSideRendererType.js +9 -1
- package/pluggableElementTypes/renderers/ServerSideRendererType.js +2 -34
- package/tsconfig.build.tsbuildinfo +1 -1
- package/ui/App.js +3 -18
- package/ui/LoadingEllipses.js +6 -6
- package/ui/Menu.js +2 -2
- package/ui/ResizeBar.js +4 -5
- package/ui/SanitizedHTML.js +2 -0
- package/ui/ViewContainer.js +3 -38
- package/ui/ViewMenu.d.ts +9 -0
- package/ui/ViewMenu.js +69 -0
- package/ui/ViewPanel.d.ts +19 -0
- package/ui/ViewPanel.js +49 -0
- package/ui/theme.d.ts +10 -166
- package/ui/theme.js +260 -48
- package/util/index.d.ts +3 -2
- package/util/index.js +11 -5
- package/util/map-obj.d.ts +3 -0
- package/util/map-obj.js +33 -0
- package/util/offscreenCanvasUtils.d.ts +18 -4
- package/util/offscreenCanvasUtils.js +48 -7
- package/data_adapters/CytobandAdapter.d.ts +0 -8
- package/data_adapters/CytobandAdapter.js +0 -49
package/ui/App.js
CHANGED
|
@@ -30,24 +30,20 @@ const react_1 = __importStar(require("react"));
|
|
|
30
30
|
const material_1 = require("@mui/material");
|
|
31
31
|
const mui_1 = require("tss-react/mui");
|
|
32
32
|
const Launch_1 = __importDefault(require("@mui/icons-material/Launch"));
|
|
33
|
-
const react_error_boundary_1 = require("react-error-boundary");
|
|
34
33
|
const mobx_react_1 = require("mobx-react");
|
|
35
|
-
// locals
|
|
36
|
-
const util_1 = require("../util");
|
|
37
34
|
// ui elements
|
|
38
35
|
const DrawerWidget_1 = __importDefault(require("./DrawerWidget"));
|
|
39
36
|
const AppToolbar_1 = __importDefault(require("./AppToolbar"));
|
|
40
|
-
const ErrorMessage_1 = __importDefault(require("./ErrorMessage"));
|
|
41
|
-
const LoadingEllipses_1 = __importDefault(require("./LoadingEllipses"));
|
|
42
37
|
const Snackbar_1 = __importDefault(require("./Snackbar"));
|
|
43
|
-
const ViewContainer_1 = __importDefault(require("./ViewContainer"));
|
|
44
38
|
const ViewLauncher_1 = __importDefault(require("./ViewLauncher"));
|
|
39
|
+
const ViewPanel_1 = __importDefault(require("./ViewPanel"));
|
|
45
40
|
const useStyles = (0, mui_1.makeStyles)()(theme => ({
|
|
46
41
|
root: {
|
|
47
42
|
fontFamily: 'Roboto',
|
|
48
43
|
display: 'grid',
|
|
49
44
|
height: '100vh',
|
|
50
45
|
width: '100%',
|
|
46
|
+
colorScheme: theme.palette.mode,
|
|
51
47
|
},
|
|
52
48
|
fabLeft: {
|
|
53
49
|
zIndex: 10000,
|
|
@@ -78,17 +74,6 @@ const useStyles = (0, mui_1.makeStyles)()(theme => ({
|
|
|
78
74
|
flexGrow: 1,
|
|
79
75
|
},
|
|
80
76
|
}));
|
|
81
|
-
const ViewPanel = (0, mobx_react_1.observer)(function ({ view, session, }) {
|
|
82
|
-
const { pluginManager } = (0, util_1.getEnv)(session);
|
|
83
|
-
const viewType = pluginManager.getViewType(view.type);
|
|
84
|
-
if (!viewType) {
|
|
85
|
-
throw new Error(`unknown view type ${view.type}`);
|
|
86
|
-
}
|
|
87
|
-
const { ReactComponent } = viewType;
|
|
88
|
-
return (react_1.default.createElement(ViewContainer_1.default, { view: view, onClose: () => session.removeView(view), onMinimize: () => view.setMinimized(!view.minimized) }, !view.minimized ? (react_1.default.createElement(react_error_boundary_1.ErrorBoundary, { FallbackComponent: ({ error }) => react_1.default.createElement(ErrorMessage_1.default, { error: error }) },
|
|
89
|
-
react_1.default.createElement(react_1.Suspense, { fallback: react_1.default.createElement(LoadingEllipses_1.default, null) },
|
|
90
|
-
react_1.default.createElement(ReactComponent, { model: view, session: session })))) : (false)));
|
|
91
|
-
});
|
|
92
77
|
const App = (0, mobx_react_1.observer)(function (props) {
|
|
93
78
|
const { session } = props;
|
|
94
79
|
const { classes } = useStyles();
|
|
@@ -118,7 +103,7 @@ const App = (0, mobx_react_1.observer)(function (props) {
|
|
|
118
103
|
react_1.default.createElement(material_1.AppBar, { className: classes.appBar, position: "static" },
|
|
119
104
|
react_1.default.createElement(AppToolbar_1.default, { ...props }))),
|
|
120
105
|
react_1.default.createElement("div", { className: classes.components },
|
|
121
|
-
views.length ? (views.map(view => (react_1.default.createElement(
|
|
106
|
+
views.length ? (views.map(view => (react_1.default.createElement(ViewPanel_1.default, { key: `view-${view.id}`, view: view, session: session })))) : (react_1.default.createElement(ViewLauncher_1.default, { ...props })),
|
|
122
107
|
react_1.default.createElement("div", { style: { height: 300 } }))),
|
|
123
108
|
activeWidgets.size > 0 && minimized ? (react_1.default.createElement(material_1.Tooltip, { title: "Open drawer widget" },
|
|
124
109
|
react_1.default.createElement(material_1.Fab, { className: drawerPosition === 'right' ? classes.fabRight : classes.fabLeft, color: "primary", "data-testid": "drawer-maximize", onClick: () => session.showWidgetDrawer() },
|
package/ui/LoadingEllipses.js
CHANGED
|
@@ -16,22 +16,22 @@ const useStyles = (0, mui_1.makeStyles)()({
|
|
|
16
16
|
textAlign: 'left',
|
|
17
17
|
animation: `${(0, tss_react_1.keyframes) `
|
|
18
18
|
0% {
|
|
19
|
-
content: '';
|
|
19
|
+
content: '...';
|
|
20
20
|
}
|
|
21
21
|
25% {
|
|
22
|
-
content: '
|
|
22
|
+
content: '';
|
|
23
23
|
}
|
|
24
24
|
50% {
|
|
25
|
-
content: '
|
|
25
|
+
content: '.';
|
|
26
26
|
}
|
|
27
27
|
75% {
|
|
28
|
-
content: '
|
|
28
|
+
content: '..';
|
|
29
29
|
}
|
|
30
|
-
`} 1.
|
|
30
|
+
`} 1.2s infinite ease-in-out`,
|
|
31
31
|
},
|
|
32
32
|
},
|
|
33
33
|
});
|
|
34
|
-
function LoadingEllipses({ message
|
|
34
|
+
function LoadingEllipses({ message, variant = 'body2', ...rest }) {
|
|
35
35
|
const { classes } = useStyles();
|
|
36
36
|
return (react_1.default.createElement(material_1.Typography, { className: classes.dots, ...rest, variant: variant }, `${message || 'Loading'}`));
|
|
37
37
|
}
|
package/ui/Menu.js
CHANGED
|
@@ -74,7 +74,7 @@ function MenuItemEndDecoration(props) {
|
|
|
74
74
|
}
|
|
75
75
|
else if (type === 'checkbox') {
|
|
76
76
|
if (checked) {
|
|
77
|
-
const color = disabled ? 'inherit' :
|
|
77
|
+
const color = disabled ? 'inherit' : undefined;
|
|
78
78
|
icon = react_1.default.createElement(CheckBox_1.default, { color: color });
|
|
79
79
|
}
|
|
80
80
|
else {
|
|
@@ -83,7 +83,7 @@ function MenuItemEndDecoration(props) {
|
|
|
83
83
|
}
|
|
84
84
|
else if (type === 'radio') {
|
|
85
85
|
if (checked) {
|
|
86
|
-
const color = disabled ? 'inherit' :
|
|
86
|
+
const color = disabled ? 'inherit' : undefined;
|
|
87
87
|
icon = react_1.default.createElement(RadioButtonChecked_1.default, { color: color });
|
|
88
88
|
}
|
|
89
89
|
else {
|
package/ui/ResizeBar.js
CHANGED
|
@@ -31,9 +31,9 @@ const react_1 = __importStar(require("react"));
|
|
|
31
31
|
const mui_1 = require("tss-react/mui");
|
|
32
32
|
// locals
|
|
33
33
|
const ResizeHandle_1 = __importDefault(require("./ResizeHandle"));
|
|
34
|
-
const useStyles = (0, mui_1.makeStyles)()({
|
|
34
|
+
const useStyles = (0, mui_1.makeStyles)()(theme => ({
|
|
35
35
|
resizeBar: {
|
|
36
|
-
background:
|
|
36
|
+
background: theme.palette.action.disabledBackground,
|
|
37
37
|
height: 12,
|
|
38
38
|
position: 'relative',
|
|
39
39
|
overflow: 'hidden',
|
|
@@ -42,16 +42,15 @@ const useStyles = (0, mui_1.makeStyles)()({
|
|
|
42
42
|
position: 'absolute',
|
|
43
43
|
height: '100%',
|
|
44
44
|
pointerEvents: 'none',
|
|
45
|
-
background:
|
|
45
|
+
background: theme.palette.divider,
|
|
46
46
|
width: 1,
|
|
47
47
|
},
|
|
48
48
|
hiddenTick: {
|
|
49
49
|
position: 'absolute',
|
|
50
50
|
height: '100%',
|
|
51
|
-
background: 'lightgrey',
|
|
52
51
|
width: 5,
|
|
53
52
|
},
|
|
54
|
-
});
|
|
53
|
+
}));
|
|
55
54
|
function useResizeBar() {
|
|
56
55
|
const ref = (0, react_1.useRef)(null);
|
|
57
56
|
const [scrollLeft, setScrollLeft] = (0, react_1.useState)(0);
|
package/ui/SanitizedHTML.js
CHANGED
package/ui/ViewContainer.js
CHANGED
|
@@ -36,13 +36,8 @@ const react_use_measure_1 = __importDefault(require("react-use-measure"));
|
|
|
36
36
|
const Close_1 = __importDefault(require("@mui/icons-material/Close"));
|
|
37
37
|
const Minimize_1 = __importDefault(require("@mui/icons-material/Minimize"));
|
|
38
38
|
const Add_1 = __importDefault(require("@mui/icons-material/Add"));
|
|
39
|
-
const Menu_1 = __importDefault(require("@mui/icons-material/Menu"));
|
|
40
|
-
const ArrowDownward_1 = __importDefault(require("@mui/icons-material/ArrowDownward"));
|
|
41
|
-
const ArrowUpward_1 = __importDefault(require("@mui/icons-material/ArrowUpward"));
|
|
42
|
-
// locals
|
|
43
|
-
const util_1 = require("../util");
|
|
44
39
|
const EditableTypography_1 = __importDefault(require("./EditableTypography"));
|
|
45
|
-
const
|
|
40
|
+
const ViewMenu_1 = __importDefault(require("./ViewMenu"));
|
|
46
41
|
const useStyles = (0, mui_1.makeStyles)()(theme => ({
|
|
47
42
|
viewContainer: {
|
|
48
43
|
overflow: 'hidden',
|
|
@@ -72,37 +67,7 @@ const useStyles = (0, mui_1.makeStyles)()(theme => ({
|
|
|
72
67
|
backgroundColor: theme.palette.secondary.light,
|
|
73
68
|
},
|
|
74
69
|
}));
|
|
75
|
-
const
|
|
76
|
-
const [anchorEl, setAnchorEl] = (0, react_1.useState)();
|
|
77
|
-
const { menuItems } = model;
|
|
78
|
-
const session = (0, util_1.getSession)(model);
|
|
79
|
-
const items = [
|
|
80
|
-
...(session.views.length > 1
|
|
81
|
-
? [
|
|
82
|
-
{
|
|
83
|
-
label: 'Move view up',
|
|
84
|
-
icon: ArrowUpward_1.default,
|
|
85
|
-
onClick: () => session.moveViewUp(model.id),
|
|
86
|
-
},
|
|
87
|
-
{
|
|
88
|
-
label: 'Move view down',
|
|
89
|
-
icon: ArrowDownward_1.default,
|
|
90
|
-
onClick: () => session.moveViewDown(model.id),
|
|
91
|
-
},
|
|
92
|
-
]
|
|
93
|
-
: []),
|
|
94
|
-
// <=1.3.3 didn't use a function, so check as value also
|
|
95
|
-
...((typeof menuItems === 'function' ? menuItems() : menuItems) || []),
|
|
96
|
-
];
|
|
97
|
-
return (react_1.default.createElement(react_1.default.Fragment, null,
|
|
98
|
-
react_1.default.createElement(material_1.IconButton, { ...IconButtonProps, onClick: event => setAnchorEl(event.currentTarget), "data-testid": "view_menu_icon" },
|
|
99
|
-
react_1.default.createElement(Menu_1.default, { ...IconProps, fontSize: "small" })),
|
|
100
|
-
react_1.default.createElement(Menu_2.default, { anchorEl: anchorEl, open: Boolean(anchorEl), onMenuItemClick: (_event, callback) => {
|
|
101
|
-
callback();
|
|
102
|
-
setAnchorEl(undefined);
|
|
103
|
-
}, onClose: () => setAnchorEl(undefined), menuItems: items })));
|
|
104
|
-
});
|
|
105
|
-
const ViewContainer = (0, mobx_react_1.observer)(({ view, onClose, onMinimize, style, children, }) => {
|
|
70
|
+
const ViewContainer = (0, mobx_react_1.observer)(function ({ view, onClose, onMinimize, style, children, }) {
|
|
106
71
|
var _a;
|
|
107
72
|
const { classes } = useStyles();
|
|
108
73
|
const theme = (0, material_1.useTheme)();
|
|
@@ -123,7 +88,7 @@ const ViewContainer = (0, mobx_react_1.observer)(({ view, onClose, onMinimize, s
|
|
|
123
88
|
}, []);
|
|
124
89
|
return (react_1.default.createElement(material_1.Paper, { ref: ref, elevation: 12, className: classes.viewContainer, style: { ...style, padding: `0px ${padWidth} ${padWidth}` } },
|
|
125
90
|
react_1.default.createElement("div", { ref: scrollRef, style: { display: 'flex' } },
|
|
126
|
-
react_1.default.createElement(
|
|
91
|
+
react_1.default.createElement(ViewMenu_1.default, { model: view, IconProps: { className: classes.icon } }),
|
|
127
92
|
react_1.default.createElement("div", { className: classes.grow }),
|
|
128
93
|
react_1.default.createElement(material_1.Tooltip, { title: "Rename view", arrow: true },
|
|
129
94
|
react_1.default.createElement(EditableTypography_1.default, { value: (view.displayName ||
|
package/ui/ViewMenu.d.ts
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
import { SvgIconProps, IconButtonProps as IconButtonPropsType } from '@mui/material';
|
|
3
|
+
import { IBaseViewModel } from '../pluggableElementTypes/models';
|
|
4
|
+
declare const ViewMenu: ({ model, IconButtonProps, IconProps, }: {
|
|
5
|
+
model: IBaseViewModel;
|
|
6
|
+
IconButtonProps?: IconButtonPropsType<"button", {}> | undefined;
|
|
7
|
+
IconProps: SvgIconProps;
|
|
8
|
+
}) => JSX.Element;
|
|
9
|
+
export default ViewMenu;
|
package/ui/ViewMenu.js
ADDED
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
25
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
26
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
27
|
+
};
|
|
28
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
29
|
+
const react_1 = __importStar(require("react"));
|
|
30
|
+
const material_1 = require("@mui/material");
|
|
31
|
+
const mobx_react_1 = require("mobx-react");
|
|
32
|
+
// icons
|
|
33
|
+
const Menu_1 = __importDefault(require("@mui/icons-material/Menu"));
|
|
34
|
+
const ArrowDownward_1 = __importDefault(require("@mui/icons-material/ArrowDownward"));
|
|
35
|
+
const ArrowUpward_1 = __importDefault(require("@mui/icons-material/ArrowUpward"));
|
|
36
|
+
// locals
|
|
37
|
+
const util_1 = require("../util");
|
|
38
|
+
const Menu_2 = __importDefault(require("./Menu"));
|
|
39
|
+
const ViewMenu = (0, mobx_react_1.observer)(function ({ model, IconButtonProps, IconProps, }) {
|
|
40
|
+
const [anchorEl, setAnchorEl] = (0, react_1.useState)();
|
|
41
|
+
const { menuItems } = model;
|
|
42
|
+
const session = (0, util_1.getSession)(model);
|
|
43
|
+
const items = [
|
|
44
|
+
...(session.views.length > 1
|
|
45
|
+
? [
|
|
46
|
+
{
|
|
47
|
+
label: 'Move view up',
|
|
48
|
+
icon: ArrowUpward_1.default,
|
|
49
|
+
onClick: () => session.moveViewUp(model.id),
|
|
50
|
+
},
|
|
51
|
+
{
|
|
52
|
+
label: 'Move view down',
|
|
53
|
+
icon: ArrowDownward_1.default,
|
|
54
|
+
onClick: () => session.moveViewDown(model.id),
|
|
55
|
+
},
|
|
56
|
+
]
|
|
57
|
+
: []),
|
|
58
|
+
// <=1.3.3 didn't use a function, so check as value also
|
|
59
|
+
...((typeof menuItems === 'function' ? menuItems() : menuItems) || []),
|
|
60
|
+
];
|
|
61
|
+
return (react_1.default.createElement(react_1.default.Fragment, null,
|
|
62
|
+
react_1.default.createElement(material_1.IconButton, { ...IconButtonProps, onClick: event => setAnchorEl(event.currentTarget), "data-testid": "view_menu_icon" },
|
|
63
|
+
react_1.default.createElement(Menu_1.default, { ...IconProps, fontSize: "small" })),
|
|
64
|
+
react_1.default.createElement(Menu_2.default, { anchorEl: anchorEl, open: Boolean(anchorEl), onMenuItemClick: (_event, callback) => {
|
|
65
|
+
callback();
|
|
66
|
+
setAnchorEl(undefined);
|
|
67
|
+
}, onClose: () => setAnchorEl(undefined), menuItems: items })));
|
|
68
|
+
});
|
|
69
|
+
exports.default = ViewMenu;
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
import { AbstractViewModel, NotificationLevel, SessionWithDrawerWidgets, SnackAction } from '../util';
|
|
3
|
+
import { MenuItem as JBMenuItem } from './Menu';
|
|
4
|
+
type SnackbarMessage = [string, NotificationLevel, SnackAction];
|
|
5
|
+
type AppSession = SessionWithDrawerWidgets & {
|
|
6
|
+
savedSessionNames: string[];
|
|
7
|
+
menus: {
|
|
8
|
+
label: string;
|
|
9
|
+
menuItems: JBMenuItem[];
|
|
10
|
+
}[];
|
|
11
|
+
renameCurrentSession: (arg: string) => void;
|
|
12
|
+
snackbarMessages: SnackbarMessage[];
|
|
13
|
+
popSnackbarMessage: () => unknown;
|
|
14
|
+
};
|
|
15
|
+
declare const ViewPanel: ({ view, session, }: {
|
|
16
|
+
view: AbstractViewModel;
|
|
17
|
+
session: AppSession;
|
|
18
|
+
}) => JSX.Element;
|
|
19
|
+
export default ViewPanel;
|
package/ui/ViewPanel.js
ADDED
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
25
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
26
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
27
|
+
};
|
|
28
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
29
|
+
const react_1 = __importStar(require("react"));
|
|
30
|
+
const react_error_boundary_1 = require("react-error-boundary");
|
|
31
|
+
const mobx_react_1 = require("mobx-react");
|
|
32
|
+
// locals
|
|
33
|
+
const util_1 = require("../util");
|
|
34
|
+
// ui elements
|
|
35
|
+
const ErrorMessage_1 = __importDefault(require("./ErrorMessage"));
|
|
36
|
+
const LoadingEllipses_1 = __importDefault(require("./LoadingEllipses"));
|
|
37
|
+
const ViewContainer_1 = __importDefault(require("./ViewContainer"));
|
|
38
|
+
const ViewPanel = (0, mobx_react_1.observer)(function ({ view, session, }) {
|
|
39
|
+
const { pluginManager } = (0, util_1.getEnv)(session);
|
|
40
|
+
const viewType = pluginManager.getViewType(view.type);
|
|
41
|
+
if (!viewType) {
|
|
42
|
+
throw new Error(`unknown view type ${view.type}`);
|
|
43
|
+
}
|
|
44
|
+
const { ReactComponent } = viewType;
|
|
45
|
+
return (react_1.default.createElement(ViewContainer_1.default, { view: view, onClose: () => session.removeView(view), onMinimize: () => view.setMinimized(!view.minimized) }, !view.minimized ? (react_1.default.createElement(react_error_boundary_1.ErrorBoundary, { FallbackComponent: ({ error }) => react_1.default.createElement(ErrorMessage_1.default, { error: error }) },
|
|
46
|
+
react_1.default.createElement(react_1.Suspense, { fallback: react_1.default.createElement(LoadingEllipses_1.default, { variant: "h6" }) },
|
|
47
|
+
react_1.default.createElement(ReactComponent, { model: view, session: session })))) : (false)));
|
|
48
|
+
});
|
|
49
|
+
exports.default = ViewPanel;
|
package/ui/theme.d.ts
CHANGED
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import { ThemeOptions } from '@mui/material/styles';
|
|
2
|
-
import type { PaletteOptions } from '@mui/material/styles/createPalette';
|
|
3
2
|
declare module '@mui/material/styles/createPalette' {
|
|
4
3
|
interface Palette {
|
|
5
4
|
tertiary: Palette['primary'];
|
|
6
5
|
quaternary: Palette['primary'];
|
|
6
|
+
stopCodon?: string;
|
|
7
|
+
startCodon?: string;
|
|
7
8
|
bases: {
|
|
8
9
|
A: Palette['primary'];
|
|
9
10
|
C: Palette['primary'];
|
|
@@ -14,6 +15,8 @@ declare module '@mui/material/styles/createPalette' {
|
|
|
14
15
|
interface PaletteOptions {
|
|
15
16
|
tertiary?: PaletteOptions['primary'];
|
|
16
17
|
quaternary?: PaletteOptions['primary'];
|
|
18
|
+
stopCodon?: string;
|
|
19
|
+
startCodon?: string;
|
|
17
20
|
bases?: {
|
|
18
21
|
A?: PaletteOptions['primary'];
|
|
19
22
|
C?: PaletteOptions['primary'];
|
|
@@ -22,169 +25,10 @@ declare module '@mui/material/styles/createPalette' {
|
|
|
22
25
|
};
|
|
23
26
|
}
|
|
24
27
|
}
|
|
25
|
-
export declare const
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
secondary: {
|
|
30
|
-
main: string;
|
|
31
|
-
};
|
|
32
|
-
tertiary: import("@mui/material/styles").PaletteColor;
|
|
33
|
-
quaternary: import("@mui/material/styles").PaletteColor;
|
|
34
|
-
stopCodon: string;
|
|
35
|
-
startCodon: string;
|
|
36
|
-
bases: {
|
|
37
|
-
A: import("@mui/material/styles").PaletteColor;
|
|
38
|
-
C: import("@mui/material/styles").PaletteColor;
|
|
39
|
-
G: import("@mui/material/styles").PaletteColor;
|
|
40
|
-
T: import("@mui/material/styles").PaletteColor;
|
|
41
|
-
};
|
|
28
|
+
export declare const defaultThemes: ThemeMap;
|
|
29
|
+
export declare function createJBrowseBaseTheme(theme?: ThemeOptions): ThemeOptions;
|
|
30
|
+
type ThemeMap = {
|
|
31
|
+
[key: string]: ThemeOptions;
|
|
42
32
|
};
|
|
43
|
-
export declare function
|
|
44
|
-
|
|
45
|
-
MuiButton: {
|
|
46
|
-
defaultProps: {
|
|
47
|
-
size: "small";
|
|
48
|
-
};
|
|
49
|
-
};
|
|
50
|
-
MuiAccordion: {
|
|
51
|
-
defaultProps: {
|
|
52
|
-
disableGutters: boolean;
|
|
53
|
-
TransitionProps: {
|
|
54
|
-
timeout: number;
|
|
55
|
-
};
|
|
56
|
-
};
|
|
57
|
-
};
|
|
58
|
-
MuiFilledInput: {
|
|
59
|
-
defaultProps: {
|
|
60
|
-
margin: "dense";
|
|
61
|
-
};
|
|
62
|
-
};
|
|
63
|
-
MuiFormControl: {
|
|
64
|
-
defaultProps: {
|
|
65
|
-
margin: "dense";
|
|
66
|
-
size: "small";
|
|
67
|
-
};
|
|
68
|
-
};
|
|
69
|
-
MuiFormHelperText: {
|
|
70
|
-
defaultProps: {
|
|
71
|
-
margin: "dense";
|
|
72
|
-
};
|
|
73
|
-
};
|
|
74
|
-
MuiIconButton: {
|
|
75
|
-
defaultProps: {
|
|
76
|
-
size: "small";
|
|
77
|
-
};
|
|
78
|
-
};
|
|
79
|
-
MuiInputBase: {
|
|
80
|
-
defaultProps: {
|
|
81
|
-
margin: "dense";
|
|
82
|
-
};
|
|
83
|
-
};
|
|
84
|
-
MuiAutocomplete: {
|
|
85
|
-
defaultProps: {
|
|
86
|
-
size: "small";
|
|
87
|
-
};
|
|
88
|
-
};
|
|
89
|
-
MuiInputLabel: {
|
|
90
|
-
defaultProps: {
|
|
91
|
-
margin: "dense";
|
|
92
|
-
};
|
|
93
|
-
};
|
|
94
|
-
MuiToolbar: {
|
|
95
|
-
defaultProps: {
|
|
96
|
-
variant: "dense";
|
|
97
|
-
};
|
|
98
|
-
};
|
|
99
|
-
MuiListItem: {
|
|
100
|
-
defaultProps: {
|
|
101
|
-
dense: boolean;
|
|
102
|
-
};
|
|
103
|
-
};
|
|
104
|
-
MuiOutlinedInput: {
|
|
105
|
-
defaultProps: {
|
|
106
|
-
margin: "dense";
|
|
107
|
-
};
|
|
108
|
-
};
|
|
109
|
-
MuiFab: {
|
|
110
|
-
defaultProps: {
|
|
111
|
-
size: "small";
|
|
112
|
-
};
|
|
113
|
-
};
|
|
114
|
-
MuiTable: {
|
|
115
|
-
defaultProps: {
|
|
116
|
-
size: "small";
|
|
117
|
-
};
|
|
118
|
-
};
|
|
119
|
-
MuiPopover: {
|
|
120
|
-
defaultProps: {
|
|
121
|
-
transitionDuration: number;
|
|
122
|
-
};
|
|
123
|
-
};
|
|
124
|
-
MuiMenu: {
|
|
125
|
-
defaultProps: {
|
|
126
|
-
transitionDuration: number;
|
|
127
|
-
};
|
|
128
|
-
};
|
|
129
|
-
MuiMenuList: {
|
|
130
|
-
defaultProps: {
|
|
131
|
-
dense: boolean;
|
|
132
|
-
};
|
|
133
|
-
};
|
|
134
|
-
MuiMenuItem: {
|
|
135
|
-
defaultProps: {
|
|
136
|
-
dense: boolean;
|
|
137
|
-
};
|
|
138
|
-
};
|
|
139
|
-
MuiTextField: {
|
|
140
|
-
defaultProps: {
|
|
141
|
-
margin: "dense";
|
|
142
|
-
variant: "standard";
|
|
143
|
-
};
|
|
144
|
-
};
|
|
145
|
-
};
|
|
146
|
-
};
|
|
147
|
-
export declare function createJBrowseDefaultOverrides(palette?: PaletteOptions): {
|
|
148
|
-
components: {
|
|
149
|
-
MuiIconButton: {
|
|
150
|
-
styleOverrides: {
|
|
151
|
-
colorSecondary: {
|
|
152
|
-
color: string;
|
|
153
|
-
};
|
|
154
|
-
};
|
|
155
|
-
};
|
|
156
|
-
MuiButton: {
|
|
157
|
-
styleOverrides: {
|
|
158
|
-
textSecondary: {
|
|
159
|
-
color: string;
|
|
160
|
-
};
|
|
161
|
-
};
|
|
162
|
-
};
|
|
163
|
-
MuiFab: {
|
|
164
|
-
styleOverrides: {
|
|
165
|
-
secondary: {
|
|
166
|
-
backgroundColor: string;
|
|
167
|
-
};
|
|
168
|
-
};
|
|
169
|
-
};
|
|
170
|
-
MuiLink: {
|
|
171
|
-
styleOverrides: {
|
|
172
|
-
root: {
|
|
173
|
-
color: string;
|
|
174
|
-
};
|
|
175
|
-
};
|
|
176
|
-
};
|
|
177
|
-
MuiAccordionSummary: {
|
|
178
|
-
styleOverrides: {
|
|
179
|
-
root: {
|
|
180
|
-
backgroundColor: string;
|
|
181
|
-
};
|
|
182
|
-
content: {
|
|
183
|
-
color: string;
|
|
184
|
-
};
|
|
185
|
-
};
|
|
186
|
-
};
|
|
187
|
-
};
|
|
188
|
-
};
|
|
189
|
-
export declare function createJBrowseBaseTheme(palette?: PaletteOptions): ThemeOptions;
|
|
190
|
-
export declare function createJBrowseTheme(theme?: ThemeOptions): import("@mui/material/styles").Theme;
|
|
33
|
+
export declare function createJBrowseTheme(configTheme?: ThemeOptions, themes?: ThemeMap, themeName?: string): import("@mui/material/styles").Theme;
|
|
34
|
+
export {};
|