@jbrowse/app-core 3.7.0 → 4.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.
Files changed (135) hide show
  1. package/esm/AppFocus/index.d.ts +3 -3
  2. package/esm/AppFocus/index.js +1 -1
  3. package/esm/Assemblies/SessionAssembliesMixin.d.ts +47 -22
  4. package/esm/Assemblies/SessionAssembliesMixin.js +11 -1
  5. package/esm/Assemblies/TemporaryAssembliesMixin.d.ts +5 -3
  6. package/esm/Assemblies/TemporaryAssembliesMixin.js +11 -1
  7. package/esm/Assemblies/index.d.ts +2 -2
  8. package/esm/Assemblies/index.js +2 -2
  9. package/esm/DockviewLayout/index.d.ts +26 -0
  10. package/esm/DockviewLayout/index.js +107 -0
  11. package/esm/HistoryManagement/index.d.ts +7 -7
  12. package/esm/HistoryManagement/index.js +5 -6
  13. package/esm/JBrowseConfig/RootConfiguration.d.ts +15 -15
  14. package/esm/JBrowseConfig/index.d.ts +35 -25
  15. package/esm/JBrowseConfig/index.js +3 -3
  16. package/esm/JBrowseModel/index.d.ts +52 -34
  17. package/esm/JBrowseModel/index.js +15 -6
  18. package/esm/RootMenu/index.d.ts +3 -3
  19. package/esm/RootMenu/index.js +1 -1
  20. package/esm/index.d.ts +9 -8
  21. package/esm/index.js +9 -8
  22. package/esm/ui/App/App.d.ts +1 -1
  23. package/esm/ui/App/App.js +8 -8
  24. package/esm/ui/App/AppFab.js +2 -2
  25. package/esm/ui/App/AppToolbar.d.ts +1 -1
  26. package/esm/ui/App/AppToolbar.js +17 -3
  27. package/esm/ui/App/ClassicViewsContainer.d.ts +12 -0
  28. package/esm/ui/App/ClassicViewsContainer.js +21 -0
  29. package/esm/ui/App/DialogQueue.d.ts +2 -2
  30. package/esm/ui/App/DialogQueue.js +1 -1
  31. package/esm/ui/App/DockviewContext.d.ts +15 -0
  32. package/esm/ui/App/DockviewContext.js +21 -0
  33. package/esm/ui/App/DockviewLeftHeaderActions.d.ts +2 -0
  34. package/esm/ui/App/DockviewLeftHeaderActions.js +58 -0
  35. package/esm/ui/App/DockviewRightHeaderActions.d.ts +2 -0
  36. package/esm/ui/App/DockviewRightHeaderActions.js +100 -0
  37. package/esm/ui/App/Drawer.js +4 -5
  38. package/esm/ui/App/DrawerControls.js +1 -1
  39. package/esm/ui/App/DrawerHeader.js +16 -8
  40. package/{dist/ui/App/Drawer.d.ts → esm/ui/App/DrawerHeaderHelpButton.d.ts} +3 -3
  41. package/esm/ui/App/DrawerHeaderHelpButton.js +18 -0
  42. package/esm/ui/App/DrawerHeaderHelpDialog.d.ts +4 -0
  43. package/esm/ui/App/DrawerHeaderHelpDialog.js +15 -0
  44. package/esm/ui/App/DrawerWidget.js +4 -4
  45. package/esm/ui/App/DrawerWidgetSelector.js +3 -3
  46. package/esm/ui/App/JBrowseTabMenu.d.ts +5 -0
  47. package/esm/ui/App/JBrowseTabMenu.js +39 -0
  48. package/esm/ui/App/JBrowseViewPanel.d.ts +8 -0
  49. package/esm/ui/App/JBrowseViewPanel.js +49 -0
  50. package/esm/ui/App/JBrowseViewTab.d.ts +8 -0
  51. package/esm/ui/App/JBrowseViewTab.js +106 -0
  52. package/esm/ui/App/ModalWidget.js +3 -3
  53. package/esm/ui/App/TiledViewsContainer.d.ts +7 -0
  54. package/esm/ui/App/TiledViewsContainer.js +251 -0
  55. package/{dist/ui/App/ViewHeader.d.ts → esm/ui/App/ViewButtons.d.ts} +2 -3
  56. package/esm/ui/App/ViewButtons.js +17 -0
  57. package/esm/ui/App/ViewContainer.js +7 -8
  58. package/esm/ui/App/ViewContainerTitle.js +3 -4
  59. package/esm/ui/App/ViewHeader.js +7 -16
  60. package/esm/ui/App/ViewLauncher.d.ts +1 -1
  61. package/esm/ui/App/ViewLauncher.js +3 -4
  62. package/esm/ui/App/ViewMenu.d.ts +1 -1
  63. package/esm/ui/App/ViewMenu.js +113 -54
  64. package/esm/ui/App/ViewWrapper.js +1 -1
  65. package/esm/ui/App/ViewsContainer.d.ts +2 -2
  66. package/esm/ui/App/ViewsContainer.js +8 -6
  67. package/esm/ui/App/copyView.d.ts +1 -0
  68. package/esm/ui/App/copyView.js +29 -0
  69. package/esm/ui/App/dockviewUtils.d.ts +44 -0
  70. package/esm/ui/App/dockviewUtils.js +45 -0
  71. package/esm/ui/App/index.d.ts +2 -1
  72. package/esm/ui/App/index.js +2 -1
  73. package/esm/ui/App/types.d.ts +7 -0
  74. package/esm/ui/App/types.js +1 -0
  75. package/esm/ui/index.d.ts +1 -1
  76. package/esm/ui/index.js +1 -1
  77. package/package.json +27 -32
  78. package/dist/AppFocus/index.d.ts +0 -5
  79. package/dist/AppFocus/index.js +0 -15
  80. package/dist/Assemblies/SessionAssembliesMixin.d.ts +0 -67
  81. package/dist/Assemblies/SessionAssembliesMixin.js +0 -46
  82. package/dist/Assemblies/TemporaryAssembliesMixin.d.ts +0 -8
  83. package/dist/Assemblies/TemporaryAssembliesMixin.js +0 -30
  84. package/dist/Assemblies/index.d.ts +0 -2
  85. package/dist/Assemblies/index.js +0 -18
  86. package/dist/HistoryManagement/index.d.ts +0 -23
  87. package/dist/HistoryManagement/index.js +0 -47
  88. package/dist/JBrowseConfig/RootConfiguration.d.ts +0 -102
  89. package/dist/JBrowseConfig/RootConfiguration.js +0 -46
  90. package/dist/JBrowseConfig/index.d.ts +0 -115
  91. package/dist/JBrowseConfig/index.js +0 -26
  92. package/dist/JBrowseModel/index.d.ts +0 -142
  93. package/dist/JBrowseModel/index.js +0 -101
  94. package/dist/RootMenu/index.d.ts +0 -13
  95. package/dist/RootMenu/index.js +0 -74
  96. package/dist/index.d.ts +0 -8
  97. package/dist/index.js +0 -24
  98. package/dist/menus.d.ts +0 -74
  99. package/dist/menus.js +0 -108
  100. package/dist/ui/App/App.d.ts +0 -18
  101. package/dist/ui/App/App.js +0 -82
  102. package/dist/ui/App/AppFab.d.ts +0 -5
  103. package/dist/ui/App/AppFab.js +0 -32
  104. package/dist/ui/App/AppToolbar.d.ts +0 -18
  105. package/dist/ui/App/AppToolbar.js +0 -44
  106. package/dist/ui/App/DialogQueue.d.ts +0 -5
  107. package/dist/ui/App/DialogQueue.js +0 -10
  108. package/dist/ui/App/Drawer.js +0 -51
  109. package/dist/ui/App/DrawerControls.d.ts +0 -5
  110. package/dist/ui/App/DrawerControls.js +0 -30
  111. package/dist/ui/App/DrawerHeader.d.ts +0 -7
  112. package/dist/ui/App/DrawerHeader.js +0 -37
  113. package/dist/ui/App/DrawerWidget.d.ts +0 -5
  114. package/dist/ui/App/DrawerWidget.js +0 -65
  115. package/dist/ui/App/DrawerWidgetSelector.d.ts +0 -5
  116. package/dist/ui/App/DrawerWidgetSelector.js +0 -52
  117. package/dist/ui/App/ModalWidget.d.ts +0 -6
  118. package/dist/ui/App/ModalWidget.js +0 -53
  119. package/dist/ui/App/ViewContainer.d.ts +0 -6
  120. package/dist/ui/App/ViewContainer.js +0 -55
  121. package/dist/ui/App/ViewContainerTitle.d.ts +0 -5
  122. package/dist/ui/App/ViewContainerTitle.js +0 -44
  123. package/dist/ui/App/ViewHeader.js +0 -60
  124. package/dist/ui/App/ViewLauncher.d.ts +0 -11
  125. package/dist/ui/App/ViewLauncher.js +0 -29
  126. package/dist/ui/App/ViewMenu.d.ts +0 -8
  127. package/dist/ui/App/ViewMenu.js +0 -74
  128. package/dist/ui/App/ViewWrapper.d.ts +0 -6
  129. package/dist/ui/App/ViewWrapper.js +0 -23
  130. package/dist/ui/App/ViewsContainer.d.ts +0 -12
  131. package/dist/ui/App/ViewsContainer.js +0 -57
  132. package/dist/ui/App/index.d.ts +0 -1
  133. package/dist/ui/App/index.js +0 -17
  134. package/dist/ui/index.d.ts +0 -1
  135. package/dist/ui/index.js +0 -17
package/dist/menus.js DELETED
@@ -1,108 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.appendMenu = appendMenu;
4
- exports.insertMenu = insertMenu;
5
- exports.appendToMenu = appendToMenu;
6
- exports.insertInMenu = insertInMenu;
7
- exports.appendToSubMenu = appendToSubMenu;
8
- exports.insertInSubMenu = insertInSubMenu;
9
- exports.processMutableMenuActions = processMutableMenuActions;
10
- function appendMenu({ menus, menuName, }) {
11
- return menus.push({ label: menuName, menuItems: [] });
12
- }
13
- function insertMenu({ menus, menuName, position, }) {
14
- menus.splice((position < 0 ? menus.length : 0) + position, 0, {
15
- label: menuName,
16
- menuItems: [],
17
- });
18
- return menus.length;
19
- }
20
- function appendToMenu({ menus, menuName, menuItem, }) {
21
- const menu = menus.find(m => m.label === menuName);
22
- if (!menu) {
23
- menus.push({ label: menuName, menuItems: [menuItem] });
24
- return 1;
25
- }
26
- return menu.menuItems.push(menuItem);
27
- }
28
- function insertInMenu({ menus, menuName, menuItem, position, }) {
29
- const menu = menus.find(m => m.label === menuName);
30
- if (!menu) {
31
- menus.push({ label: menuName, menuItems: [menuItem] });
32
- return 1;
33
- }
34
- const insertPosition = position < 0 ? menu.menuItems.length + position : position;
35
- menu.menuItems.splice(insertPosition, 0, menuItem);
36
- return menu.menuItems.length;
37
- }
38
- function appendToSubMenu({ menus, menuPath, menuItem, }) {
39
- let topMenu = menus.find(m => m.label === menuPath[0]);
40
- if (!topMenu) {
41
- const idx = appendMenu({ menus, menuName: menuPath[0] });
42
- topMenu = menus[idx - 1];
43
- }
44
- let { menuItems: subMenu } = topMenu;
45
- const pathSoFar = [menuPath[0]];
46
- for (const menuName of menuPath.slice(1)) {
47
- pathSoFar.push(menuName);
48
- let sm = subMenu.find(mi => 'label' in mi && mi.label === menuName);
49
- if (!sm) {
50
- const idx = subMenu.push({ label: menuName, subMenu: [] });
51
- sm = subMenu[idx - 1];
52
- }
53
- if (!('subMenu' in sm)) {
54
- throw new Error(`"${menuName}" in path "${pathSoFar}" is not a subMenu`);
55
- }
56
- subMenu = sm.subMenu;
57
- }
58
- return subMenu.push(menuItem);
59
- }
60
- function insertInSubMenu({ menus, menuPath, menuItem, position, }) {
61
- let topMenu = menus.find(m => m.label === menuPath[0]);
62
- if (!topMenu) {
63
- const idx = appendMenu({ menus, menuName: menuPath[0] });
64
- topMenu = menus[idx - 1];
65
- }
66
- let { menuItems: subMenu } = topMenu;
67
- const pathSoFar = [menuPath[0]];
68
- for (const menuName of menuPath.slice(1)) {
69
- pathSoFar.push(menuName);
70
- let sm = subMenu.find(mi => 'label' in mi && mi.label === menuName);
71
- if (!sm) {
72
- const idx = subMenu.push({ label: menuName, subMenu: [] });
73
- sm = subMenu[idx - 1];
74
- }
75
- if (!('subMenu' in sm)) {
76
- throw new Error(`"${menuName}" in path "${pathSoFar}" is not a subMenu`);
77
- }
78
- subMenu = sm.subMenu;
79
- }
80
- subMenu.splice(position, 0, menuItem);
81
- return subMenu.length;
82
- }
83
- function processMutableMenuActions(ret, actions) {
84
- for (const action of actions) {
85
- if (action.type === 'setMenus') {
86
- ret = action.newMenus;
87
- }
88
- else if (action.type === 'appendMenu') {
89
- appendMenu({ menus: ret, ...action });
90
- }
91
- else if (action.type === 'insertMenu') {
92
- insertMenu({ menus: ret, ...action });
93
- }
94
- else if (action.type === 'insertInSubMenu') {
95
- insertInSubMenu({ menus: ret, ...action });
96
- }
97
- else if (action.type === 'appendToSubMenu') {
98
- appendToSubMenu({ menus: ret, ...action });
99
- }
100
- else if (action.type === 'appendToMenu') {
101
- appendToMenu({ menus: ret, ...action });
102
- }
103
- else if (action.type === 'insertInMenu') {
104
- insertInMenu({ menus: ret, ...action });
105
- }
106
- }
107
- return ret;
108
- }
@@ -1,18 +0,0 @@
1
- import type { MenuItem as JBMenuItem } from '@jbrowse/core/ui/Menu';
2
- import type { SnackbarMessage } from '@jbrowse/core/ui/SnackbarModel';
3
- import type { SessionWithFocusedViewAndDrawerWidgets } from '@jbrowse/core/util';
4
- interface Menu {
5
- label: string;
6
- menuItems: JBMenuItem[];
7
- }
8
- interface Props {
9
- HeaderButtons?: React.ReactElement;
10
- session: SessionWithFocusedViewAndDrawerWidgets & {
11
- menus: () => Menu[];
12
- snackbarMessages: SnackbarMessage[];
13
- renameCurrentSession: (arg: string) => void;
14
- popSnackbarMessage: () => unknown;
15
- };
16
- }
17
- declare const App: (props: Props) => import("react/jsx-runtime").JSX.Element;
18
- export { App };
@@ -1,82 +0,0 @@
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 () {
19
- var ownKeys = function(o) {
20
- ownKeys = Object.getOwnPropertyNames || function (o) {
21
- var ar = [];
22
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
- return ar;
24
- };
25
- return ownKeys(o);
26
- };
27
- return function (mod) {
28
- if (mod && mod.__esModule) return mod;
29
- var result = {};
30
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
- __setModuleDefault(result, mod);
32
- return result;
33
- };
34
- })();
35
- var __importDefault = (this && this.__importDefault) || function (mod) {
36
- return (mod && mod.__esModule) ? mod : { "default": mod };
37
- };
38
- Object.defineProperty(exports, "__esModule", { value: true });
39
- exports.App = void 0;
40
- const jsx_runtime_1 = require("react/jsx-runtime");
41
- const react_1 = require("react");
42
- const Snackbar_1 = __importDefault(require("@jbrowse/core/ui/Snackbar"));
43
- const material_1 = require("@mui/material");
44
- const mobx_react_1 = require("mobx-react");
45
- const mui_1 = require("tss-react/mui");
46
- const AppFab_1 = __importDefault(require("./AppFab"));
47
- const AppToolbar_1 = __importDefault(require("./AppToolbar"));
48
- const DialogQueue_1 = __importDefault(require("./DialogQueue"));
49
- const ViewsContainer_1 = __importDefault(require("./ViewsContainer"));
50
- const DrawerWidget = (0, react_1.lazy)(() => Promise.resolve().then(() => __importStar(require('./DrawerWidget'))));
51
- const useStyles = (0, mui_1.makeStyles)()(theme => ({
52
- root: {
53
- display: 'grid',
54
- height: '100vh',
55
- width: '100%',
56
- colorScheme: theme.palette.mode,
57
- },
58
- appContainer: {
59
- gridColumn: 'main',
60
- display: 'grid',
61
- gridTemplateRows: '[menubar] min-content [components] auto',
62
- height: '100vh',
63
- },
64
- appBar: {
65
- flexGrow: 1,
66
- gridRow: 'menubar',
67
- },
68
- }));
69
- const LazyDrawerWidget = (0, mobx_react_1.observer)(function (props) {
70
- const { session } = props;
71
- return ((0, jsx_runtime_1.jsx)(react_1.Suspense, { fallback: null, children: (0, jsx_runtime_1.jsx)(DrawerWidget, { session: session }) }));
72
- });
73
- const App = (0, mobx_react_1.observer)(function (props) {
74
- const { session } = props;
75
- const { classes } = useStyles();
76
- const { minimized, visibleWidget, drawerWidth, drawerPosition } = session;
77
- const drawerVisible = visibleWidget && !minimized;
78
- const d = drawerVisible ? `[drawer] ${drawerWidth}px` : undefined;
79
- const grid = drawerPosition === 'right' ? ['[main] 1fr', d] : [d, '[main] 1fr'];
80
- return ((0, jsx_runtime_1.jsxs)("div", { className: classes.root, style: { gridTemplateColumns: grid.filter(f => !!f).join(' ') }, children: [drawerVisible && drawerPosition === 'left' ? ((0, jsx_runtime_1.jsx)(LazyDrawerWidget, { session: session })) : null, (0, jsx_runtime_1.jsx)(DialogQueue_1.default, { session: session }), (0, jsx_runtime_1.jsxs)("div", { className: classes.appContainer, children: [(0, jsx_runtime_1.jsx)(material_1.AppBar, { className: classes.appBar, position: "static", children: (0, jsx_runtime_1.jsx)(AppToolbar_1.default, { ...props }) }), (0, jsx_runtime_1.jsx)(ViewsContainer_1.default, { ...props })] }), (0, jsx_runtime_1.jsx)(AppFab_1.default, { session: session }), drawerVisible && drawerPosition === 'right' ? ((0, jsx_runtime_1.jsx)(LazyDrawerWidget, { session: session })) : null, (0, jsx_runtime_1.jsx)(Snackbar_1.default, { session: session })] }));
81
- });
82
- exports.App = App;
@@ -1,5 +0,0 @@
1
- import type { SessionWithDrawerWidgets } from '@jbrowse/core/util';
2
- declare const AppFab: ({ session, }: {
3
- session: SessionWithDrawerWidgets;
4
- }) => import("react/jsx-runtime").JSX.Element | null;
5
- export default AppFab;
@@ -1,32 +0,0 @@
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 Launch_1 = __importDefault(require("@mui/icons-material/Launch"));
8
- const material_1 = require("@mui/material");
9
- const mobx_react_1 = require("mobx-react");
10
- const mui_1 = require("tss-react/mui");
11
- const useStyles = (0, mui_1.makeStyles)()(theme => ({
12
- left: {
13
- zIndex: 10000,
14
- position: 'fixed',
15
- bottom: theme.spacing(2),
16
- left: theme.spacing(2),
17
- },
18
- right: {
19
- zIndex: 10000,
20
- position: 'fixed',
21
- bottom: theme.spacing(2),
22
- right: theme.spacing(2),
23
- },
24
- }));
25
- const AppFab = (0, mobx_react_1.observer)(function ({ session, }) {
26
- const { minimized, activeWidgets, drawerPosition } = session;
27
- const { classes } = useStyles();
28
- return activeWidgets.size > 0 && minimized ? ((0, jsx_runtime_1.jsx)(material_1.Tooltip, { title: "Open drawer widget", children: (0, jsx_runtime_1.jsx)(material_1.Fab, { className: drawerPosition === 'right' ? classes.right : classes.left, color: "primary", "data-testid": "drawer-maximize", onClick: () => {
29
- session.showWidgetDrawer();
30
- }, children: (0, jsx_runtime_1.jsx)(Launch_1.default, {}) }) })) : null;
31
- });
32
- exports.default = AppFab;
@@ -1,18 +0,0 @@
1
- import type { MenuItem as JBMenuItem } from '@jbrowse/core/ui/Menu';
2
- import type { SnackbarMessage } from '@jbrowse/core/ui/SnackbarModel';
3
- import type { SessionWithDrawerWidgets } from '@jbrowse/core/util';
4
- interface Menu {
5
- label: string;
6
- menuItems: JBMenuItem[];
7
- }
8
- type AppSession = SessionWithDrawerWidgets & {
9
- menus: () => Menu[];
10
- snackbarMessages: SnackbarMessage[];
11
- renameCurrentSession: (arg: string) => void;
12
- popSnackbarMessage: () => unknown;
13
- };
14
- declare const AppToolbar: ({ session, HeaderButtons, }: {
15
- HeaderButtons?: React.ReactElement;
16
- session: AppSession;
17
- }) => import("react/jsx-runtime").JSX.Element;
18
- export default AppToolbar;
@@ -1,44 +0,0 @@
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 AppLogo_1 = __importDefault(require("@jbrowse/core/ui/AppLogo"));
8
- const DropDownMenu_1 = __importDefault(require("@jbrowse/core/ui/DropDownMenu"));
9
- const EditableTypography_1 = __importDefault(require("@jbrowse/core/ui/EditableTypography"));
10
- const material_1 = require("@mui/material");
11
- const mobx_react_1 = require("mobx-react");
12
- const mui_1 = require("tss-react/mui");
13
- const useStyles = (0, mui_1.makeStyles)()(theme => ({
14
- grow: {
15
- flexGrow: 1,
16
- },
17
- inputBase: {
18
- color: theme.palette.primary.contrastText,
19
- },
20
- inputRoot: {
21
- '&:hover': {
22
- backgroundColor: theme.palette.primary.light,
23
- },
24
- },
25
- inputFocused: {
26
- borderColor: theme.palette.secondary.main,
27
- backgroundColor: theme.palette.primary.light,
28
- },
29
- }));
30
- const AppToolbar = (0, mobx_react_1.observer)(function ({ session, HeaderButtons = (0, jsx_runtime_1.jsx)("div", {}), }) {
31
- const { classes } = useStyles();
32
- const { name, menus } = session;
33
- return ((0, jsx_runtime_1.jsxs)(material_1.Toolbar, { children: [menus().map(menu => ((0, jsx_runtime_1.jsx)(DropDownMenu_1.default, { menuTitle: menu.label, menuItems: menu.menuItems, session: session }, menu.label))), (0, jsx_runtime_1.jsx)("div", { className: classes.grow }), (0, jsx_runtime_1.jsx)(material_1.Tooltip, { title: "Rename session", arrow: true, children: (0, jsx_runtime_1.jsx)(EditableTypography_1.default, { value: name, variant: "body1", classes: {
34
- inputBase: classes.inputBase,
35
- inputRoot: classes.inputRoot,
36
- inputFocused: classes.inputFocused,
37
- }, setValue: newName => {
38
- session.renameCurrentSession(newName);
39
- } }) }), HeaderButtons, (0, jsx_runtime_1.jsx)("div", { className: classes.grow }), (0, jsx_runtime_1.jsx)("div", { style: {
40
- width: 150,
41
- maxHeight: 48,
42
- }, children: (0, jsx_runtime_1.jsx)(AppLogo_1.default, { session: session }) })] }));
43
- });
44
- exports.default = AppToolbar;
@@ -1,5 +0,0 @@
1
- import type { SessionWithDrawerWidgets } from '@jbrowse/core/util';
2
- declare const DialogQueue: ({ session, }: {
3
- session: SessionWithDrawerWidgets;
4
- }) => import("react/jsx-runtime").JSX.Element | null;
5
- export default DialogQueue;
@@ -1,10 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const jsx_runtime_1 = require("react/jsx-runtime");
4
- const react_1 = require("react");
5
- const mobx_react_1 = require("mobx-react");
6
- const DialogQueue = (0, mobx_react_1.observer)(function ({ session, }) {
7
- const { DialogComponent, DialogProps } = session;
8
- return DialogComponent ? ((0, jsx_runtime_1.jsx)(react_1.Suspense, { fallback: null, children: (0, jsx_runtime_1.jsx)(DialogComponent, { ...DialogProps }) })) : null;
9
- });
10
- exports.default = DialogQueue;
@@ -1,51 +0,0 @@
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 ResizeHandle_1 = __importDefault(require("@jbrowse/core/ui/ResizeHandle"));
9
- const material_1 = require("@mui/material");
10
- const mobx_react_1 = require("mobx-react");
11
- const mui_1 = require("tss-react/mui");
12
- const useStyles = (0, mui_1.makeStyles)()(theme => ({
13
- paper: {
14
- overflowY: 'auto',
15
- height: '100%',
16
- position: 'relative',
17
- zIndex: theme.zIndex.drawer,
18
- outline: 'none',
19
- background: theme.palette.background.default,
20
- },
21
- resizeHandle: {
22
- width: 4,
23
- position: 'fixed',
24
- top: 0,
25
- zIndex: theme.zIndex.drawer + 1,
26
- },
27
- }));
28
- const Drawer = (0, mobx_react_1.observer)(function ({ children, session, }) {
29
- const { drawerPosition, drawerWidth } = session;
30
- const { classes } = useStyles();
31
- const ref = (0, react_1.useRef)(null);
32
- (0, react_1.useEffect)(() => {
33
- function handleSelectView(e) {
34
- var _a, _b, _c;
35
- if (e.target instanceof Element && ((_a = ref.current) === null || _a === void 0 ? void 0 : _a.contains(e.target))) {
36
- const visibleWidgetId = (_c = (_b = session.visibleWidget) === null || _b === void 0 ? void 0 : _b.view) === null || _c === void 0 ? void 0 : _c.id;
37
- if (visibleWidgetId) {
38
- session.setFocusedViewId(visibleWidgetId);
39
- }
40
- }
41
- }
42
- document.addEventListener('mousedown', handleSelectView);
43
- document.addEventListener('keydown', handleSelectView);
44
- return () => {
45
- document.removeEventListener('mousedown', handleSelectView);
46
- document.removeEventListener('keydown', handleSelectView);
47
- };
48
- }, [session]);
49
- return ((0, jsx_runtime_1.jsxs)(material_1.Paper, { ref: ref, className: classes.paper, elevation: 16, square: true, children: [drawerPosition === 'right' ? ((0, jsx_runtime_1.jsx)(ResizeHandle_1.default, { onDrag: session.resizeDrawer, className: classes.resizeHandle, vertical: true })) : null, children, drawerPosition === 'left' ? ((0, jsx_runtime_1.jsx)(ResizeHandle_1.default, { onDrag: session.resizeDrawer, className: classes.resizeHandle, style: { left: drawerWidth }, vertical: true })) : null] }));
50
- });
51
- exports.default = Drawer;
@@ -1,5 +0,0 @@
1
- import type { SessionWithFocusedViewAndDrawerWidgets } from '@jbrowse/core/util/types';
2
- declare const DrawerControls: ({ session, }: {
3
- session: SessionWithFocusedViewAndDrawerWidgets;
4
- }) => import("react/jsx-runtime").JSX.Element;
5
- export default DrawerControls;
@@ -1,30 +0,0 @@
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 Close_1 = __importDefault(require("@mui/icons-material/Close"));
9
- const Minimize_1 = __importDefault(require("@mui/icons-material/Minimize"));
10
- const MoreVert_1 = __importDefault(require("@mui/icons-material/MoreVert"));
11
- const material_1 = require("@mui/material");
12
- const mobx_react_1 = require("mobx-react");
13
- const DrawerControls = (0, mobx_react_1.observer)(function ({ session, }) {
14
- const [anchorEl, setAnchorEl] = (0, react_1.useState)(null);
15
- const { drawerPosition, visibleWidget } = session;
16
- return ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)(material_1.IconButton, { color: "inherit", onClick: event => {
17
- setAnchorEl(event.currentTarget);
18
- }, children: (0, jsx_runtime_1.jsx)(MoreVert_1.default, {}) }), (0, jsx_runtime_1.jsx)(material_1.Tooltip, { title: "Minimize drawer", children: (0, jsx_runtime_1.jsx)(material_1.IconButton, { "data-testid": "drawer-minimize", color: "inherit", onClick: () => {
19
- session.notify(`Drawer minimized, click button on ${drawerPosition} side of screen to re-open`, 'info');
20
- session.minimizeWidgetDrawer();
21
- }, children: (0, jsx_runtime_1.jsx)(Minimize_1.default, {}) }) }), (0, jsx_runtime_1.jsx)(material_1.Tooltip, { title: "Close drawer", children: (0, jsx_runtime_1.jsx)(material_1.IconButton, { color: "inherit", onClick: () => {
22
- session.hideWidget(visibleWidget);
23
- }, children: (0, jsx_runtime_1.jsx)(Close_1.default, {}) }) }), (0, jsx_runtime_1.jsx)(material_1.Menu, { anchorEl: anchorEl, open: Boolean(anchorEl), onClose: () => {
24
- setAnchorEl(null);
25
- }, children: ['left', 'right'].map(option => ((0, jsx_runtime_1.jsx)(material_1.MenuItem, { selected: drawerPosition === 'option', onClick: () => {
26
- session.setDrawerPosition(option);
27
- setAnchorEl(null);
28
- }, children: option }, option))) })] }));
29
- });
30
- exports.default = DrawerControls;
@@ -1,7 +0,0 @@
1
- import type { SessionWithFocusedViewAndDrawerWidgets } from '@jbrowse/core/util/types';
2
- declare const DrawerHeader: ({ session, setToolbarHeight, onPopoutDrawer, }: {
3
- session: SessionWithFocusedViewAndDrawerWidgets;
4
- setToolbarHeight: (arg: number) => void;
5
- onPopoutDrawer: () => void;
6
- }) => import("react/jsx-runtime").JSX.Element;
7
- export default DrawerHeader;
@@ -1,37 +0,0 @@
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 Launch_1 = __importDefault(require("@mui/icons-material/Launch"));
8
- const material_1 = require("@mui/material");
9
- const mobx_react_1 = require("mobx-react");
10
- const mui_1 = require("tss-react/mui");
11
- const DrawerControls_1 = __importDefault(require("./DrawerControls"));
12
- const DrawerWidgetSelector_1 = __importDefault(require("./DrawerWidgetSelector"));
13
- const useStyles = (0, mui_1.makeStyles)()(theme => ({
14
- spacer: {
15
- flexGrow: 1,
16
- },
17
- headerFocused: {
18
- background: theme.palette.secondary.main,
19
- },
20
- headerUnfocused: {
21
- background: theme.palette.secondary.dark,
22
- },
23
- }));
24
- const DrawerHeader = (0, mobx_react_1.observer)(function ({ session, setToolbarHeight, onPopoutDrawer, }) {
25
- var _a, _b;
26
- const { classes } = useStyles();
27
- const focusedViewId = session.focusedViewId;
28
- const viewWidgetId = (_b = (_a = session.visibleWidget) === null || _a === void 0 ? void 0 : _a.view) === null || _b === void 0 ? void 0 : _b.id;
29
- return ((0, jsx_runtime_1.jsx)(material_1.AppBar, { position: "sticky", className: focusedViewId === viewWidgetId
30
- ? classes.headerFocused
31
- : classes.headerUnfocused, ref: ref => {
32
- setToolbarHeight((ref === null || ref === void 0 ? void 0 : ref.getBoundingClientRect().height) || 0);
33
- }, children: (0, jsx_runtime_1.jsxs)(material_1.Toolbar, { disableGutters: true, children: [(0, jsx_runtime_1.jsx)(DrawerWidgetSelector_1.default, { session: session }), (0, jsx_runtime_1.jsx)(material_1.Tooltip, { title: "Open drawer in dialog", children: (0, jsx_runtime_1.jsx)(material_1.IconButton, { color: "inherit", onClick: () => {
34
- onPopoutDrawer();
35
- }, children: (0, jsx_runtime_1.jsx)(Launch_1.default, {}) }) }), (0, jsx_runtime_1.jsx)("div", { className: classes.spacer }), (0, jsx_runtime_1.jsx)(DrawerControls_1.default, { session: session })] }) }));
36
- });
37
- exports.default = DrawerHeader;
@@ -1,5 +0,0 @@
1
- import type { SessionWithFocusedViewAndDrawerWidgets } from '@jbrowse/core/util/types';
2
- declare const DrawerWidget: ({ session, }: {
3
- session: SessionWithFocusedViewAndDrawerWidgets;
4
- }) => import("react/jsx-runtime").JSX.Element;
5
- export default DrawerWidget;
@@ -1,65 +0,0 @@
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 () {
19
- var ownKeys = function(o) {
20
- ownKeys = Object.getOwnPropertyNames || function (o) {
21
- var ar = [];
22
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
- return ar;
24
- };
25
- return ownKeys(o);
26
- };
27
- return function (mod) {
28
- if (mod && mod.__esModule) return mod;
29
- var result = {};
30
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
- __setModuleDefault(result, mod);
32
- return result;
33
- };
34
- })();
35
- var __importDefault = (this && this.__importDefault) || function (mod) {
36
- return (mod && mod.__esModule) ? mod : { "default": mod };
37
- };
38
- Object.defineProperty(exports, "__esModule", { value: true });
39
- const jsx_runtime_1 = require("react/jsx-runtime");
40
- const react_1 = require("react");
41
- const ui_1 = require("@jbrowse/core/ui");
42
- const ErrorBoundary_1 = require("@jbrowse/core/ui/ErrorBoundary");
43
- const util_1 = require("@jbrowse/core/util");
44
- const mobx_react_1 = require("mobx-react");
45
- const Drawer_1 = __importDefault(require("./Drawer"));
46
- const DrawerHeader_1 = __importDefault(require("./DrawerHeader"));
47
- const ModalWidget = (0, react_1.lazy)(() => Promise.resolve().then(() => __importStar(require('./ModalWidget'))));
48
- const DrawerWidget = (0, mobx_react_1.observer)(function ({ session, }) {
49
- const { visibleWidget } = session;
50
- const { pluginManager } = (0, util_1.getEnv)(session);
51
- const DrawerComponent = visibleWidget
52
- ? pluginManager.evaluateExtensionPoint('Core-replaceWidget', pluginManager.getWidgetType(visibleWidget.type).ReactComponent, {
53
- session,
54
- model: visibleWidget,
55
- })
56
- : null;
57
- const [toolbarHeight, setToolbarHeight] = (0, react_1.useState)(0);
58
- const [popoutDrawer, setPopoutDrawer] = (0, react_1.useState)(false);
59
- return ((0, jsx_runtime_1.jsxs)(Drawer_1.default, { session: session, children: [(0, jsx_runtime_1.jsx)(DrawerHeader_1.default, { onPopoutDrawer: () => {
60
- setPopoutDrawer(true);
61
- }, session: session, setToolbarHeight: setToolbarHeight }), (0, jsx_runtime_1.jsx)(react_1.Suspense, { fallback: (0, jsx_runtime_1.jsx)(ui_1.LoadingEllipses, {}), children: (0, jsx_runtime_1.jsx)(ErrorBoundary_1.ErrorBoundary, { FallbackComponent: ({ error }) => (0, jsx_runtime_1.jsx)(ui_1.ErrorMessage, { error: error }), children: DrawerComponent ? (popoutDrawer ? ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)("div", { children: "Opened in dialog..." }), (0, jsx_runtime_1.jsx)(ModalWidget, { session: session, onClose: () => {
62
- setPopoutDrawer(false);
63
- } })] })) : ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)(DrawerComponent, { model: visibleWidget, session: session, toolbarHeight: toolbarHeight }), (0, jsx_runtime_1.jsx)("div", { style: { height: 300 } })] }))) : null }) })] }));
64
- });
65
- exports.default = DrawerWidget;
@@ -1,5 +0,0 @@
1
- import type { SessionWithFocusedViewAndDrawerWidgets } from '@jbrowse/core/util/types';
2
- declare const DrawerWidgetSelector: ({ session, }: {
3
- session: SessionWithFocusedViewAndDrawerWidgets;
4
- }) => import("react/jsx-runtime").JSX.Element;
5
- export default DrawerWidgetSelector;
@@ -1,52 +0,0 @@
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 util_1 = require("@jbrowse/core/util");
8
- const Delete_1 = __importDefault(require("@mui/icons-material/Delete"));
9
- const material_1 = require("@mui/material");
10
- const mobx_react_1 = require("mobx-react");
11
- const mui_1 = require("tss-react/mui");
12
- const useStyles = (0, mui_1.makeStyles)()(theme => ({
13
- formControl: {
14
- margin: 0,
15
- },
16
- drawerSelect: {
17
- margin: 0,
18
- color: theme.palette.secondary.contrastText,
19
- },
20
- dropDownIcon: {
21
- color: theme.palette.secondary.contrastText,
22
- },
23
- }));
24
- const DrawerWidgetSelector = (0, mobx_react_1.observer)(function ({ session, }) {
25
- const { visibleWidget, activeWidgets } = session;
26
- const { classes } = useStyles();
27
- const { pluginManager } = (0, util_1.getEnv)(session);
28
- return ((0, jsx_runtime_1.jsx)(material_1.FormControl, { className: classes.formControl, children: (0, jsx_runtime_1.jsx)(material_1.Select, { value: visibleWidget === null || visibleWidget === void 0 ? void 0 : visibleWidget.id, "data-testid": "widget-drawer-selects", className: classes.drawerSelect, classes: { icon: classes.dropDownIcon }, renderValue: widgetId => {
29
- const widget = session.activeWidgets.get(widgetId);
30
- if (!widget) {
31
- return ((0, jsx_runtime_1.jsx)(material_1.Typography, { variant: "h6", color: "inherit", children: "Unknown widget" }));
32
- }
33
- const widgetType = pluginManager.getWidgetType(widget.type);
34
- const { HeadingComponent, heading } = widgetType;
35
- return HeadingComponent ? ((0, jsx_runtime_1.jsx)(HeadingComponent, { model: widget })) : ((0, jsx_runtime_1.jsx)(material_1.Typography, { variant: "h6", color: "inherit", children: heading }));
36
- }, onChange: e => {
37
- const w = session.activeWidgets.get(e.target.value);
38
- if (w) {
39
- session.showWidget(w);
40
- }
41
- else {
42
- session.notify(`Widget not found ${e.target.value}`, 'warning');
43
- }
44
- }, children: [...activeWidgets.values()].map(widget => {
45
- const widgetType = pluginManager.getWidgetType(widget.type);
46
- const { HeadingComponent, heading } = widgetType;
47
- return ((0, jsx_runtime_1.jsxs)(material_1.MenuItem, { "data-testid": `widget-drawer-selects-item-${widget.type}`, value: widget.id, children: [HeadingComponent ? ((0, jsx_runtime_1.jsx)(HeadingComponent, { model: widget })) : ((0, jsx_runtime_1.jsx)(material_1.Typography, { variant: "h6", color: "inherit", children: heading })), (0, jsx_runtime_1.jsx)(material_1.IconButton, { "data-testid": `${widget.type}-drawer-delete`, color: "inherit", "aria-label": "Delete", onClick: () => {
48
- session.hideWidget(widget);
49
- }, children: (0, jsx_runtime_1.jsx)(Delete_1.default, {}) })] }, widget.id));
50
- }) }) }));
51
- });
52
- exports.default = DrawerWidgetSelector;
@@ -1,6 +0,0 @@
1
- import type { SessionWithWidgets } from '@jbrowse/core/util';
2
- declare const ModalWidget: ({ session, onClose, }: {
3
- session: SessionWithWidgets;
4
- onClose: () => void;
5
- }) => import("react/jsx-runtime").JSX.Element | null;
6
- export default ModalWidget;