@jbrowse/plugin-menus 2.17.0 → 3.0.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.
Files changed (59) hide show
  1. package/dist/AboutWidget/components/AboutWidget.d.ts +2 -3
  2. package/dist/AboutWidget/components/AboutWidget.js +12 -34
  3. package/dist/AboutWidget/index.d.ts +2 -5
  4. package/dist/AboutWidget/index.js +49 -3
  5. package/dist/HelpWidget/components/HelpWidget.d.ts +2 -3
  6. package/dist/HelpWidget/components/HelpWidget.js +4 -19
  7. package/dist/HelpWidget/index.d.ts +2 -5
  8. package/dist/HelpWidget/index.js +49 -3
  9. package/dist/ImportSessionWidget/components/ImportError.d.ts +1 -2
  10. package/dist/ImportSessionWidget/components/ImportError.js +3 -9
  11. package/dist/ImportSessionWidget/components/ImportSessionWidget.d.ts +2 -3
  12. package/dist/ImportSessionWidget/components/ImportSessionWidget.js +7 -42
  13. package/dist/ImportSessionWidget/index.d.ts +2 -5
  14. package/dist/ImportSessionWidget/index.js +49 -3
  15. package/dist/SessionManager/components/SessionManager.d.ts +2 -3
  16. package/dist/SessionManager/components/SessionManager.js +93 -6
  17. package/dist/SessionManager/components/util.d.ts +18 -7
  18. package/dist/SessionManager/index.d.ts +2 -0
  19. package/dist/SessionManager/index.js +47 -0
  20. package/dist/index.d.ts +1 -1
  21. package/dist/index.js +8 -65
  22. package/esm/AboutWidget/components/AboutWidget.d.ts +2 -3
  23. package/esm/AboutWidget/components/AboutWidget.js +12 -31
  24. package/esm/AboutWidget/index.d.ts +2 -5
  25. package/esm/AboutWidget/index.js +15 -2
  26. package/esm/HelpWidget/components/HelpWidget.d.ts +2 -3
  27. package/esm/HelpWidget/components/HelpWidget.js +4 -16
  28. package/esm/HelpWidget/index.d.ts +2 -5
  29. package/esm/HelpWidget/index.js +15 -2
  30. package/esm/ImportSessionWidget/components/ImportError.d.ts +1 -2
  31. package/esm/ImportSessionWidget/components/ImportError.js +3 -9
  32. package/esm/ImportSessionWidget/components/ImportSessionWidget.d.ts +2 -3
  33. package/esm/ImportSessionWidget/components/ImportSessionWidget.js +7 -19
  34. package/esm/ImportSessionWidget/index.d.ts +2 -5
  35. package/esm/ImportSessionWidget/index.js +15 -2
  36. package/esm/SessionManager/components/SessionManager.d.ts +2 -3
  37. package/esm/SessionManager/components/SessionManager.js +93 -6
  38. package/esm/SessionManager/components/util.d.ts +18 -7
  39. package/esm/SessionManager/index.d.ts +2 -0
  40. package/esm/SessionManager/index.js +13 -0
  41. package/esm/index.d.ts +1 -1
  42. package/esm/index.js +8 -42
  43. package/package.json +3 -2
  44. package/dist/SessionManager/components/AutosavedSessionsList.d.ts +0 -6
  45. package/dist/SessionManager/components/AutosavedSessionsList.js +0 -25
  46. package/dist/SessionManager/components/DeleteSavedSessionDialog.d.ts +0 -6
  47. package/dist/SessionManager/components/DeleteSavedSessionDialog.js +0 -21
  48. package/dist/SessionManager/components/RegularSavedSessionsList.d.ts +0 -6
  49. package/dist/SessionManager/components/RegularSavedSessionsList.js +0 -67
  50. package/dist/SessionManager/components/SessionListItem.d.ts +0 -10
  51. package/dist/SessionManager/components/SessionListItem.js +0 -25
  52. package/esm/SessionManager/components/AutosavedSessionsList.d.ts +0 -6
  53. package/esm/SessionManager/components/AutosavedSessionsList.js +0 -20
  54. package/esm/SessionManager/components/DeleteSavedSessionDialog.d.ts +0 -6
  55. package/esm/SessionManager/components/DeleteSavedSessionDialog.js +0 -15
  56. package/esm/SessionManager/components/RegularSavedSessionsList.d.ts +0 -6
  57. package/esm/SessionManager/components/RegularSavedSessionsList.js +0 -39
  58. package/esm/SessionManager/components/SessionListItem.d.ts +0 -10
  59. package/esm/SessionManager/components/SessionListItem.js +0 -20
@@ -1,4 +1,6 @@
1
+ import { lazy } from 'react';
1
2
  import { ConfigurationSchema } from '@jbrowse/core/configuration';
3
+ import { WidgetType } from '@jbrowse/core/pluggableElementTypes';
2
4
  import { ElementId } from '@jbrowse/core/util/types/mst';
3
5
  import { types } from 'mobx-state-tree';
4
6
  export const configSchema = ConfigurationSchema('SessionManager', {});
@@ -6,3 +8,14 @@ export const stateModel = types.model('SessionManager', {
6
8
  id: ElementId,
7
9
  type: types.literal('SessionManager'),
8
10
  });
11
+ export default function SessionManagerF(pluginManager) {
12
+ pluginManager.addWidgetType(() => {
13
+ return new WidgetType({
14
+ name: 'SessionManager',
15
+ heading: 'Recent sessions',
16
+ configSchema,
17
+ stateModel,
18
+ ReactComponent: lazy(() => import('./components/SessionManager')),
19
+ });
20
+ });
21
+ }
package/esm/index.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import Plugin from '@jbrowse/core/Plugin';
2
- import PluginManager from '@jbrowse/core/PluginManager';
2
+ import type PluginManager from '@jbrowse/core/PluginManager';
3
3
  export default class MenusPlugin extends Plugin {
4
4
  name: string;
5
5
  install(pluginManager: PluginManager): void;
package/esm/index.js CHANGED
@@ -1,55 +1,21 @@
1
- import { lazy } from 'react';
2
- import WidgetType from '@jbrowse/core/pluggableElementTypes/WidgetType';
3
1
  import Plugin from '@jbrowse/core/Plugin';
4
2
  import { isAbstractMenuManager } from '@jbrowse/core/util';
5
3
  import HelpIcon from '@mui/icons-material/Help';
6
4
  import InfoIcon from '@mui/icons-material/Info';
7
- import { configSchema as aboutConfigSchema, stateModel as aboutStateModel, } from './AboutWidget';
8
- import { configSchema as helpConfigSchema, stateModel as helpStateModel, } from './HelpWidget';
9
- import { configSchema as importSessionConfigSchema, stateModel as importSessionStateModel, } from './ImportSessionWidget';
10
- import { configSchema as sessionManagerConfigSchema, stateModel as sessionManagerStateModel, } from './SessionManager';
5
+ import AboutWidgetF from './AboutWidget';
6
+ import HelpWidgetF from './HelpWidget';
7
+ import ImportSessionWidgetF from './ImportSessionWidget';
8
+ import SessionManagerF from './SessionManager';
11
9
  export default class MenusPlugin extends Plugin {
12
10
  constructor() {
13
11
  super(...arguments);
14
12
  this.name = 'MenusPlugin';
15
13
  }
16
14
  install(pluginManager) {
17
- pluginManager.addWidgetType(() => {
18
- return new WidgetType({
19
- name: 'AboutWidget',
20
- heading: 'About',
21
- configSchema: aboutConfigSchema,
22
- stateModel: aboutStateModel,
23
- ReactComponent: lazy(() => import('./AboutWidget/components/AboutWidget')),
24
- });
25
- });
26
- pluginManager.addWidgetType(() => {
27
- return new WidgetType({
28
- name: 'HelpWidget',
29
- heading: 'Help',
30
- configSchema: helpConfigSchema,
31
- stateModel: helpStateModel,
32
- ReactComponent: lazy(() => import('./HelpWidget/components/HelpWidget')),
33
- });
34
- });
35
- pluginManager.addWidgetType(() => {
36
- return new WidgetType({
37
- name: 'ImportSessionWidget',
38
- heading: 'Import session',
39
- configSchema: importSessionConfigSchema,
40
- stateModel: importSessionStateModel,
41
- ReactComponent: lazy(() => import('./ImportSessionWidget/components/ImportSessionWidget')),
42
- });
43
- });
44
- pluginManager.addWidgetType(() => {
45
- return new WidgetType({
46
- name: 'SessionManager',
47
- heading: 'Sessions',
48
- configSchema: sessionManagerConfigSchema,
49
- stateModel: sessionManagerStateModel,
50
- ReactComponent: lazy(() => import('./SessionManager/components/SessionManager')),
51
- });
52
- });
15
+ AboutWidgetF(pluginManager);
16
+ HelpWidgetF(pluginManager);
17
+ ImportSessionWidgetF(pluginManager);
18
+ SessionManagerF(pluginManager);
53
19
  }
54
20
  configure(pluginManager) {
55
21
  if (isAbstractMenuManager(pluginManager.rootModel)) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@jbrowse/plugin-menus",
3
- "version": "2.17.0",
3
+ "version": "3.0.0",
4
4
  "description": "JBrowse 2 basic menus",
5
5
  "keywords": [
6
6
  "jbrowse",
@@ -37,6 +37,7 @@
37
37
  },
38
38
  "dependencies": {
39
39
  "@mui/icons-material": "^6.0.0",
40
+ "date-fns": "^4.1.0",
40
41
  "pluralize": "^8.0.0",
41
42
  "react-dropzone": "^14.2.1"
42
43
  },
@@ -56,5 +57,5 @@
56
57
  "publishConfig": {
57
58
  "access": "public"
58
59
  },
59
- "gitHead": "eed30b5e671f8f7823652d7cecc51aa89226de46"
60
+ "gitHead": "2c6897f1fa732b1db5b094d1dca197e333e95319"
60
61
  }
@@ -1,6 +0,0 @@
1
- import React from 'react';
2
- import { SessionModel } from './util';
3
- declare const AutosaveSessionsList: ({ session, }: {
4
- session: SessionModel;
5
- }) => React.JSX.Element | null;
6
- export default AutosaveSessionsList;
@@ -1,25 +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 react_1 = __importDefault(require("react"));
7
- const material_1 = require("@mui/material");
8
- const mui_1 = require("tss-react/mui");
9
- const mobx_react_1 = require("mobx-react");
10
- const SessionListItem_1 = __importDefault(require("./SessionListItem"));
11
- const useStyles = (0, mui_1.makeStyles)()(theme => ({
12
- root: {
13
- margin: theme.spacing(1),
14
- },
15
- }));
16
- const AutosaveSessionsList = (0, mobx_react_1.observer)(function ({ session, }) {
17
- const { classes } = useStyles();
18
- const autosavedSession = JSON.parse(localStorage.getItem(session.previousAutosaveId) || '{}').session;
19
- return autosavedSession ? (react_1.default.createElement(material_1.Paper, { className: classes.root },
20
- react_1.default.createElement(material_1.List, { subheader: react_1.default.createElement(material_1.ListSubheader, null, "Previous autosaved entry") },
21
- react_1.default.createElement(SessionListItem_1.default, { session: session, sessionSnapshot: autosavedSession, onClick: () => {
22
- session.loadAutosaveSession();
23
- } })))) : null;
24
- });
25
- exports.default = AutosaveSessionsList;
@@ -1,6 +0,0 @@
1
- import React from 'react';
2
- export default function DeleteSavedSessionDialog({ open, sessionNameToDelete, handleClose, }: {
3
- sessionNameToDelete: string;
4
- open: boolean;
5
- handleClose: (arg?: boolean) => void;
6
- }): React.JSX.Element;
@@ -1,21 +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
- exports.default = DeleteSavedSessionDialog;
7
- const react_1 = __importDefault(require("react"));
8
- const material_1 = require("@mui/material");
9
- const ui_1 = require("@jbrowse/core/ui");
10
- function DeleteSavedSessionDialog({ open, sessionNameToDelete, handleClose, }) {
11
- return (react_1.default.createElement(ui_1.Dialog, { open: open, title: `Delete session "${sessionNameToDelete}"?` },
12
- react_1.default.createElement(material_1.DialogContent, null,
13
- react_1.default.createElement(material_1.DialogContentText, null, "This action cannot be undone")),
14
- react_1.default.createElement(material_1.DialogActions, null,
15
- react_1.default.createElement(material_1.Button, { onClick: () => {
16
- handleClose();
17
- }, color: "primary" }, "Cancel"),
18
- react_1.default.createElement(material_1.Button, { onClick: () => {
19
- handleClose(true);
20
- }, color: "primary", autoFocus: true }, "Delete"))));
21
- }
@@ -1,6 +0,0 @@
1
- import React from 'react';
2
- import { SessionModel } from './util';
3
- declare const RegularSavedSessionsList: ({ session, }: {
4
- session: SessionModel;
5
- }) => React.JSX.Element;
6
- export default RegularSavedSessionsList;
@@ -1,67 +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 (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 mui_1 = require("tss-react/mui");
32
- const mobx_react_1 = require("mobx-react");
33
- // icons
34
- const Delete_1 = __importDefault(require("@mui/icons-material/Delete"));
35
- const DeleteSavedSessionDialog_1 = __importDefault(require("./DeleteSavedSessionDialog"));
36
- const SessionListItem_1 = __importDefault(require("./SessionListItem"));
37
- const useStyles = (0, mui_1.makeStyles)()(theme => ({
38
- root: {
39
- margin: theme.spacing(1),
40
- },
41
- message: {
42
- padding: theme.spacing(3),
43
- },
44
- }));
45
- const RegularSavedSessionsList = (0, mobx_react_1.observer)(function ({ session, }) {
46
- const { classes } = useStyles();
47
- const [sessionIndexToDelete, setSessionIndexToDelete] = (0, react_1.useState)();
48
- function handleDialogClose(deleteSession = false) {
49
- if (deleteSession && sessionIndexToDelete !== undefined) {
50
- session.removeSavedSession(session.savedSessions[sessionIndexToDelete]);
51
- }
52
- setSessionIndexToDelete(undefined);
53
- }
54
- const sessionNameToDelete = sessionIndexToDelete !== undefined
55
- ? session.savedSessions[sessionIndexToDelete].name
56
- : '';
57
- return (react_1.default.createElement(material_1.Paper, { className: classes.root },
58
- react_1.default.createElement(material_1.List, { subheader: react_1.default.createElement(material_1.ListSubheader, null, "Saved sessions") }, session.savedSessions.length ? (session.savedSessions.map((sessionSnapshot, idx) => (react_1.default.createElement(SessionListItem_1.default, { onClick: () => {
59
- session.activateSession(sessionSnapshot.name);
60
- }, sessionSnapshot: sessionSnapshot, session: session, key: sessionSnapshot.name, secondaryAction: react_1.default.createElement(material_1.IconButton, { edge: "end", disabled: session.name === sessionSnapshot.name, onClick: () => {
61
- setSessionIndexToDelete(idx);
62
- } },
63
- react_1.default.createElement(Delete_1.default, null)) })))) : (react_1.default.createElement(material_1.Typography, { className: classes.message }, "No saved sessions found"))),
64
- sessionNameToDelete ? (react_1.default.createElement(react_1.default.Suspense, { fallback: null },
65
- react_1.default.createElement(DeleteSavedSessionDialog_1.default, { open: true, sessionNameToDelete: sessionNameToDelete, handleClose: handleDialogClose }))) : null));
66
- });
67
- exports.default = RegularSavedSessionsList;
@@ -1,10 +0,0 @@
1
- import React from 'react';
2
- import { AbstractSessionModel } from '@jbrowse/core/util';
3
- import { SessionSnap } from './util';
4
- declare const SessionListItem: ({ session, sessionSnapshot, onClick, secondaryAction, }: {
5
- sessionSnapshot: SessionSnap;
6
- session: AbstractSessionModel;
7
- onClick: () => void;
8
- secondaryAction?: React.ReactNode;
9
- }) => React.JSX.Element;
10
- export default SessionListItem;
@@ -1,25 +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 react_1 = __importDefault(require("react"));
7
- const material_1 = require("@mui/material");
8
- const mobx_react_1 = require("mobx-react");
9
- const pluralize_1 = __importDefault(require("pluralize"));
10
- // icons
11
- const ViewList_1 = __importDefault(require("@mui/icons-material/ViewList"));
12
- const util_1 = require("@jbrowse/core/util");
13
- const SessionListItem = (0, mobx_react_1.observer)(function ({ session, sessionSnapshot, onClick, secondaryAction, }) {
14
- const { views = [] } = sessionSnapshot;
15
- const totalTracks = (0, util_1.sum)(views.map(view => { var _a, _b; return (_b = (_a = view.tracks) === null || _a === void 0 ? void 0 : _a.length) !== null && _b !== void 0 ? _b : 0; }));
16
- const n = views.length;
17
- return (react_1.default.createElement(material_1.ListItem, { secondaryAction: secondaryAction },
18
- react_1.default.createElement(material_1.ListItemButton, { onClick: onClick },
19
- react_1.default.createElement(material_1.ListItemIcon, null,
20
- react_1.default.createElement(ViewList_1.default, null)),
21
- react_1.default.createElement(material_1.ListItemText, { primary: sessionSnapshot.name, secondary: session.name === sessionSnapshot.name
22
- ? 'Currently open'
23
- : `${n} ${(0, pluralize_1.default)('view', n)}; ${totalTracks} open ${(0, pluralize_1.default)('track', totalTracks)}` }))));
24
- });
25
- exports.default = SessionListItem;
@@ -1,6 +0,0 @@
1
- import React from 'react';
2
- import { SessionModel } from './util';
3
- declare const AutosaveSessionsList: ({ session, }: {
4
- session: SessionModel;
5
- }) => React.JSX.Element | null;
6
- export default AutosaveSessionsList;
@@ -1,20 +0,0 @@
1
- import React from 'react';
2
- import { List, ListSubheader, Paper } from '@mui/material';
3
- import { makeStyles } from 'tss-react/mui';
4
- import { observer } from 'mobx-react';
5
- import SessionListItem from './SessionListItem';
6
- const useStyles = makeStyles()(theme => ({
7
- root: {
8
- margin: theme.spacing(1),
9
- },
10
- }));
11
- const AutosaveSessionsList = observer(function ({ session, }) {
12
- const { classes } = useStyles();
13
- const autosavedSession = JSON.parse(localStorage.getItem(session.previousAutosaveId) || '{}').session;
14
- return autosavedSession ? (React.createElement(Paper, { className: classes.root },
15
- React.createElement(List, { subheader: React.createElement(ListSubheader, null, "Previous autosaved entry") },
16
- React.createElement(SessionListItem, { session: session, sessionSnapshot: autosavedSession, onClick: () => {
17
- session.loadAutosaveSession();
18
- } })))) : null;
19
- });
20
- export default AutosaveSessionsList;
@@ -1,6 +0,0 @@
1
- import React from 'react';
2
- export default function DeleteSavedSessionDialog({ open, sessionNameToDelete, handleClose, }: {
3
- sessionNameToDelete: string;
4
- open: boolean;
5
- handleClose: (arg?: boolean) => void;
6
- }): React.JSX.Element;
@@ -1,15 +0,0 @@
1
- import React from 'react';
2
- import { Button, DialogActions, DialogContent, DialogContentText, } from '@mui/material';
3
- import { Dialog } from '@jbrowse/core/ui';
4
- export default function DeleteSavedSessionDialog({ open, sessionNameToDelete, handleClose, }) {
5
- return (React.createElement(Dialog, { open: open, title: `Delete session "${sessionNameToDelete}"?` },
6
- React.createElement(DialogContent, null,
7
- React.createElement(DialogContentText, null, "This action cannot be undone")),
8
- React.createElement(DialogActions, null,
9
- React.createElement(Button, { onClick: () => {
10
- handleClose();
11
- }, color: "primary" }, "Cancel"),
12
- React.createElement(Button, { onClick: () => {
13
- handleClose(true);
14
- }, color: "primary", autoFocus: true }, "Delete"))));
15
- }
@@ -1,6 +0,0 @@
1
- import React from 'react';
2
- import { SessionModel } from './util';
3
- declare const RegularSavedSessionsList: ({ session, }: {
4
- session: SessionModel;
5
- }) => React.JSX.Element;
6
- export default RegularSavedSessionsList;
@@ -1,39 +0,0 @@
1
- import React, { useState } from 'react';
2
- import { IconButton, List, ListSubheader, Paper, Typography, } from '@mui/material';
3
- import { makeStyles } from 'tss-react/mui';
4
- import { observer } from 'mobx-react';
5
- // icons
6
- import DeleteIcon from '@mui/icons-material/Delete';
7
- import DeleteSavedSessionDialog from './DeleteSavedSessionDialog';
8
- import SessionListItem from './SessionListItem';
9
- const useStyles = makeStyles()(theme => ({
10
- root: {
11
- margin: theme.spacing(1),
12
- },
13
- message: {
14
- padding: theme.spacing(3),
15
- },
16
- }));
17
- const RegularSavedSessionsList = observer(function ({ session, }) {
18
- const { classes } = useStyles();
19
- const [sessionIndexToDelete, setSessionIndexToDelete] = useState();
20
- function handleDialogClose(deleteSession = false) {
21
- if (deleteSession && sessionIndexToDelete !== undefined) {
22
- session.removeSavedSession(session.savedSessions[sessionIndexToDelete]);
23
- }
24
- setSessionIndexToDelete(undefined);
25
- }
26
- const sessionNameToDelete = sessionIndexToDelete !== undefined
27
- ? session.savedSessions[sessionIndexToDelete].name
28
- : '';
29
- return (React.createElement(Paper, { className: classes.root },
30
- React.createElement(List, { subheader: React.createElement(ListSubheader, null, "Saved sessions") }, session.savedSessions.length ? (session.savedSessions.map((sessionSnapshot, idx) => (React.createElement(SessionListItem, { onClick: () => {
31
- session.activateSession(sessionSnapshot.name);
32
- }, sessionSnapshot: sessionSnapshot, session: session, key: sessionSnapshot.name, secondaryAction: React.createElement(IconButton, { edge: "end", disabled: session.name === sessionSnapshot.name, onClick: () => {
33
- setSessionIndexToDelete(idx);
34
- } },
35
- React.createElement(DeleteIcon, null)) })))) : (React.createElement(Typography, { className: classes.message }, "No saved sessions found"))),
36
- sessionNameToDelete ? (React.createElement(React.Suspense, { fallback: null },
37
- React.createElement(DeleteSavedSessionDialog, { open: true, sessionNameToDelete: sessionNameToDelete, handleClose: handleDialogClose }))) : null));
38
- });
39
- export default RegularSavedSessionsList;
@@ -1,10 +0,0 @@
1
- import React from 'react';
2
- import { AbstractSessionModel } from '@jbrowse/core/util';
3
- import { SessionSnap } from './util';
4
- declare const SessionListItem: ({ session, sessionSnapshot, onClick, secondaryAction, }: {
5
- sessionSnapshot: SessionSnap;
6
- session: AbstractSessionModel;
7
- onClick: () => void;
8
- secondaryAction?: React.ReactNode;
9
- }) => React.JSX.Element;
10
- export default SessionListItem;
@@ -1,20 +0,0 @@
1
- import React from 'react';
2
- import { ListItem, ListItemButton, ListItemIcon, ListItemText, } from '@mui/material';
3
- import { observer } from 'mobx-react';
4
- import pluralize from 'pluralize';
5
- // icons
6
- import ViewListIcon from '@mui/icons-material/ViewList';
7
- import { sum } from '@jbrowse/core/util';
8
- const SessionListItem = observer(function ({ session, sessionSnapshot, onClick, secondaryAction, }) {
9
- const { views = [] } = sessionSnapshot;
10
- const totalTracks = sum(views.map(view => { var _a, _b; return (_b = (_a = view.tracks) === null || _a === void 0 ? void 0 : _a.length) !== null && _b !== void 0 ? _b : 0; }));
11
- const n = views.length;
12
- return (React.createElement(ListItem, { secondaryAction: secondaryAction },
13
- React.createElement(ListItemButton, { onClick: onClick },
14
- React.createElement(ListItemIcon, null,
15
- React.createElement(ViewListIcon, null)),
16
- React.createElement(ListItemText, { primary: sessionSnapshot.name, secondary: session.name === sessionSnapshot.name
17
- ? 'Currently open'
18
- : `${n} ${pluralize('view', n)}; ${totalTracks} open ${pluralize('track', totalTracks)}` }))));
19
- });
20
- export default SessionListItem;