@jbrowse/plugin-menus 2.17.0 → 2.18.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 (57) hide show
  1. package/dist/AboutWidget/components/AboutWidget.d.ts +1 -1
  2. package/dist/AboutWidget/components/AboutWidget.js +2 -2
  3. package/dist/AboutWidget/index.d.ts +2 -5
  4. package/dist/AboutWidget/index.js +39 -3
  5. package/dist/HelpWidget/components/HelpWidget.d.ts +1 -1
  6. package/dist/HelpWidget/components/HelpWidget.js +2 -2
  7. package/dist/HelpWidget/index.d.ts +2 -5
  8. package/dist/HelpWidget/index.js +39 -3
  9. package/dist/ImportSessionWidget/components/ImportError.js +1 -2
  10. package/dist/ImportSessionWidget/components/ImportSessionWidget.d.ts +1 -1
  11. package/dist/ImportSessionWidget/components/ImportSessionWidget.js +4 -9
  12. package/dist/ImportSessionWidget/index.d.ts +2 -5
  13. package/dist/ImportSessionWidget/index.js +39 -3
  14. package/dist/SessionManager/components/SessionManager.d.ts +1 -1
  15. package/dist/SessionManager/components/SessionManager.js +101 -5
  16. package/dist/SessionManager/components/util.d.ts +18 -7
  17. package/dist/SessionManager/index.d.ts +2 -0
  18. package/dist/SessionManager/index.js +37 -0
  19. package/dist/index.d.ts +1 -1
  20. package/dist/index.js +8 -65
  21. package/esm/AboutWidget/components/AboutWidget.d.ts +1 -1
  22. package/esm/AboutWidget/components/AboutWidget.js +2 -2
  23. package/esm/AboutWidget/index.d.ts +2 -5
  24. package/esm/AboutWidget/index.js +15 -2
  25. package/esm/HelpWidget/components/HelpWidget.d.ts +1 -1
  26. package/esm/HelpWidget/components/HelpWidget.js +2 -2
  27. package/esm/HelpWidget/index.d.ts +2 -5
  28. package/esm/HelpWidget/index.js +15 -2
  29. package/esm/ImportSessionWidget/components/ImportError.js +1 -2
  30. package/esm/ImportSessionWidget/components/ImportSessionWidget.d.ts +1 -1
  31. package/esm/ImportSessionWidget/components/ImportSessionWidget.js +4 -9
  32. package/esm/ImportSessionWidget/index.d.ts +2 -5
  33. package/esm/ImportSessionWidget/index.js +15 -2
  34. package/esm/SessionManager/components/SessionManager.d.ts +1 -1
  35. package/esm/SessionManager/components/SessionManager.js +101 -5
  36. package/esm/SessionManager/components/util.d.ts +18 -7
  37. package/esm/SessionManager/index.d.ts +2 -0
  38. package/esm/SessionManager/index.js +13 -0
  39. package/esm/index.d.ts +1 -1
  40. package/esm/index.js +8 -42
  41. package/package.json +3 -2
  42. package/dist/SessionManager/components/AutosavedSessionsList.d.ts +0 -6
  43. package/dist/SessionManager/components/AutosavedSessionsList.js +0 -25
  44. package/dist/SessionManager/components/DeleteSavedSessionDialog.d.ts +0 -6
  45. package/dist/SessionManager/components/DeleteSavedSessionDialog.js +0 -21
  46. package/dist/SessionManager/components/RegularSavedSessionsList.d.ts +0 -6
  47. package/dist/SessionManager/components/RegularSavedSessionsList.js +0 -67
  48. package/dist/SessionManager/components/SessionListItem.d.ts +0 -10
  49. package/dist/SessionManager/components/SessionListItem.js +0 -25
  50. package/esm/SessionManager/components/AutosavedSessionsList.d.ts +0 -6
  51. package/esm/SessionManager/components/AutosavedSessionsList.js +0 -20
  52. package/esm/SessionManager/components/DeleteSavedSessionDialog.d.ts +0 -6
  53. package/esm/SessionManager/components/DeleteSavedSessionDialog.js +0 -15
  54. package/esm/SessionManager/components/RegularSavedSessionsList.d.ts +0 -6
  55. package/esm/SessionManager/components/RegularSavedSessionsList.js +0 -39
  56. package/esm/SessionManager/components/SessionListItem.d.ts +0 -10
  57. package/esm/SessionManager/components/SessionListItem.js +0 -20
@@ -1,5 +1,5 @@
1
1
  import React from 'react';
2
- import { IAnyStateTreeNode } from 'mobx-state-tree';
2
+ import type { IAnyStateTreeNode } from 'mobx-state-tree';
3
3
  declare const AboutWidget: ({ model, }: {
4
4
  model: IAnyStateTreeNode;
5
5
  }) => React.JSX.Element;
@@ -4,10 +4,10 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  const react_1 = __importDefault(require("react"));
7
- const mobx_react_1 = require("mobx-react");
8
- const mobx_state_tree_1 = require("mobx-state-tree");
9
7
  const util_1 = require("@jbrowse/core/util");
10
8
  const material_1 = require("@mui/material");
9
+ const mobx_react_1 = require("mobx-react");
10
+ const mobx_state_tree_1 = require("mobx-state-tree");
11
11
  const mui_1 = require("tss-react/mui");
12
12
  const useStyles = (0, mui_1.makeStyles)()(theme => ({
13
13
  root: {
@@ -1,5 +1,2 @@
1
- export declare const configSchema: import("@jbrowse/core/configuration/configurationSchema").ConfigurationSchemaType<{}, import("@jbrowse/core/configuration/configurationSchema").ConfigurationSchemaOptions<undefined, undefined>>;
2
- export declare const stateModel: import("mobx-state-tree").IModelType<{
3
- id: import("mobx-state-tree").IOptionalIType<import("mobx-state-tree").ISimpleType<string>, [undefined]>;
4
- type: import("mobx-state-tree").ISimpleType<"AboutWidget">;
5
- }, {}, import("mobx-state-tree")._NotCustomized, import("mobx-state-tree")._NotCustomized>;
1
+ import type PluginManager from '@jbrowse/core/PluginManager';
2
+ export default function AboutWidgetF(pluginManager: PluginManager): void;
@@ -1,11 +1,47 @@
1
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
+ };
2
25
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.stateModel = exports.configSchema = void 0;
26
+ exports.default = AboutWidgetF;
27
+ const react_1 = require("react");
4
28
  const configuration_1 = require("@jbrowse/core/configuration");
29
+ const pluggableElementTypes_1 = require("@jbrowse/core/pluggableElementTypes");
5
30
  const mst_1 = require("@jbrowse/core/util/types/mst");
6
31
  const mobx_state_tree_1 = require("mobx-state-tree");
7
- exports.configSchema = (0, configuration_1.ConfigurationSchema)('AboutWidget', {});
8
- exports.stateModel = mobx_state_tree_1.types.model('AboutWidget', {
32
+ const configSchema = (0, configuration_1.ConfigurationSchema)('AboutWidget', {});
33
+ const stateModel = mobx_state_tree_1.types.model('AboutWidget', {
9
34
  id: mst_1.ElementId,
10
35
  type: mobx_state_tree_1.types.literal('AboutWidget'),
11
36
  });
37
+ function AboutWidgetF(pluginManager) {
38
+ pluginManager.addWidgetType(() => {
39
+ return new pluggableElementTypes_1.WidgetType({
40
+ name: 'AboutWidget',
41
+ heading: 'About',
42
+ configSchema,
43
+ stateModel,
44
+ ReactComponent: (0, react_1.lazy)(() => Promise.resolve().then(() => __importStar(require('./components/AboutWidget')))),
45
+ });
46
+ });
47
+ }
@@ -1,5 +1,5 @@
1
1
  import React from 'react';
2
- import { IAnyStateTreeNode } from 'mobx-state-tree';
2
+ import type { IAnyStateTreeNode } from 'mobx-state-tree';
3
3
  declare const HelpWidget: ({ model, }: {
4
4
  model?: IAnyStateTreeNode;
5
5
  }) => React.JSX.Element;
@@ -4,10 +4,10 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  const react_1 = __importDefault(require("react"));
7
- const mobx_react_1 = require("mobx-react");
8
7
  const util_1 = require("@jbrowse/core/util");
9
- const mui_1 = require("tss-react/mui");
10
8
  const material_1 = require("@mui/material");
9
+ const mobx_react_1 = require("mobx-react");
10
+ const mui_1 = require("tss-react/mui");
11
11
  const useStyles = (0, mui_1.makeStyles)()(theme => ({
12
12
  root: {
13
13
  margin: theme.spacing(2),
@@ -1,5 +1,2 @@
1
- export declare const configSchema: import("@jbrowse/core/configuration/configurationSchema").ConfigurationSchemaType<{}, import("@jbrowse/core/configuration/configurationSchema").ConfigurationSchemaOptions<undefined, undefined>>;
2
- export declare const stateModel: import("mobx-state-tree").IModelType<{
3
- id: import("mobx-state-tree").IOptionalIType<import("mobx-state-tree").ISimpleType<string>, [undefined]>;
4
- type: import("mobx-state-tree").ISimpleType<"HelpWidget">;
5
- }, {}, import("mobx-state-tree")._NotCustomized, import("mobx-state-tree")._NotCustomized>;
1
+ import type PluginManager from '@jbrowse/core/PluginManager';
2
+ export default function HelpWidgetF(pluginManager: PluginManager): void;
@@ -1,11 +1,47 @@
1
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
+ };
2
25
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.stateModel = exports.configSchema = void 0;
26
+ exports.default = HelpWidgetF;
27
+ const react_1 = require("react");
4
28
  const configuration_1 = require("@jbrowse/core/configuration");
29
+ const pluggableElementTypes_1 = require("@jbrowse/core/pluggableElementTypes");
5
30
  const mst_1 = require("@jbrowse/core/util/types/mst");
6
31
  const mobx_state_tree_1 = require("mobx-state-tree");
7
- exports.configSchema = (0, configuration_1.ConfigurationSchema)('HelpWidget', {});
8
- exports.stateModel = mobx_state_tree_1.types.model('HelpWidget', {
32
+ const configSchema = (0, configuration_1.ConfigurationSchema)('HelpWidget', {});
33
+ const stateModel = mobx_state_tree_1.types.model('HelpWidget', {
9
34
  id: mst_1.ElementId,
10
35
  type: mobx_state_tree_1.types.literal('HelpWidget'),
11
36
  });
37
+ function HelpWidgetF(pluginManager) {
38
+ pluginManager.addWidgetType(() => {
39
+ return new pluggableElementTypes_1.WidgetType({
40
+ name: 'HelpWidget',
41
+ heading: 'Help',
42
+ configSchema,
43
+ stateModel,
44
+ ReactComponent: (0, react_1.lazy)(() => Promise.resolve().then(() => __importStar(require('./components/HelpWidget')))),
45
+ });
46
+ });
47
+ }
@@ -5,10 +5,9 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.default = ImportError;
7
7
  const react_1 = __importDefault(require("react"));
8
+ const Error_1 = __importDefault(require("@mui/icons-material/Error"));
8
9
  const material_1 = require("@mui/material");
9
10
  const mui_1 = require("tss-react/mui");
10
- // icons
11
- const Error_1 = __importDefault(require("@mui/icons-material/Error"));
12
11
  const useStyles = (0, mui_1.makeStyles)()(theme => ({
13
12
  error: {
14
13
  margin: theme.spacing(2),
@@ -1,5 +1,5 @@
1
1
  import React from 'react';
2
- import { IAnyStateTreeNode } from 'mobx-state-tree';
2
+ import type { IAnyStateTreeNode } from 'mobx-state-tree';
3
3
  declare const ImportSessionWidget: ({ model, }: {
4
4
  model: IAnyStateTreeNode;
5
5
  }) => React.JSX.Element;
@@ -27,20 +27,17 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
27
27
  };
28
28
  Object.defineProperty(exports, "__esModule", { value: true });
29
29
  const react_1 = __importStar(require("react"));
30
- const material_1 = require("@mui/material");
31
30
  const util_1 = require("@jbrowse/core/util");
32
- const mui_1 = require("tss-react/mui");
31
+ const CloudUpload_1 = __importDefault(require("@mui/icons-material/CloudUpload"));
32
+ const material_1 = require("@mui/material");
33
33
  const mobx_react_1 = require("mobx-react");
34
34
  const react_dropzone_1 = require("react-dropzone");
35
- // icons
36
- const CloudUpload_1 = __importDefault(require("@mui/icons-material/CloudUpload"));
37
- // locals
35
+ const mui_1 = require("tss-react/mui");
38
36
  const ImportError_1 = __importDefault(require("./ImportError"));
39
- const MAX_FILE_SIZE = 512 * 1024 ** 2; // 512 MiB
37
+ const MAX_FILE_SIZE = 512 * 1024 ** 2;
40
38
  function styledBy(property, mapping) {
41
39
  return (props) => mapping[props[property]];
42
40
  }
43
- // @ts-expect-error
44
41
  const useStyles = (0, mui_1.makeStyles)()(theme => ({
45
42
  root: {
46
43
  margin: theme.spacing(1),
@@ -77,7 +74,6 @@ const useStyles = (0, mui_1.makeStyles)()(theme => ({
77
74
  const ImportSessionWidget = (0, mobx_react_1.observer)(function ({ model, }) {
78
75
  const [error, setError] = (0, react_1.useState)();
79
76
  const { getRootProps, getInputProps, isDragActive } = (0, react_dropzone_1.useDropzone)({
80
- // @ts-expect-error
81
77
  accept: 'application/json',
82
78
  maxSize: MAX_FILE_SIZE,
83
79
  multiple: false,
@@ -96,7 +92,6 @@ const ImportSessionWidget = (0, mobx_react_1.observer)(function ({ model, }) {
96
92
  }
97
93
  },
98
94
  });
99
- // @ts-expect-error
100
95
  const { classes } = useStyles({ isDragActive });
101
96
  return (react_1.default.createElement("div", { className: classes.root },
102
97
  react_1.default.createElement(material_1.Paper, { className: classes.paper },
@@ -1,5 +1,2 @@
1
- export declare const configSchema: import("@jbrowse/core/configuration/configurationSchema").ConfigurationSchemaType<{}, import("@jbrowse/core/configuration/configurationSchema").ConfigurationSchemaOptions<undefined, undefined>>;
2
- export declare const stateModel: import("mobx-state-tree").IModelType<{
3
- id: import("mobx-state-tree").IOptionalIType<import("mobx-state-tree").ISimpleType<string>, [undefined]>;
4
- type: import("mobx-state-tree").ISimpleType<"ImportSessionWidget">;
5
- }, {}, import("mobx-state-tree")._NotCustomized, import("mobx-state-tree")._NotCustomized>;
1
+ import type PluginManager from '@jbrowse/core/PluginManager';
2
+ export default function ImportSessionWidgetF(pluginManager: PluginManager): void;
@@ -1,11 +1,47 @@
1
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
+ };
2
25
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.stateModel = exports.configSchema = void 0;
26
+ exports.default = ImportSessionWidgetF;
27
+ const react_1 = require("react");
4
28
  const configuration_1 = require("@jbrowse/core/configuration");
29
+ const pluggableElementTypes_1 = require("@jbrowse/core/pluggableElementTypes");
5
30
  const mst_1 = require("@jbrowse/core/util/types/mst");
6
31
  const mobx_state_tree_1 = require("mobx-state-tree");
7
- exports.configSchema = (0, configuration_1.ConfigurationSchema)('ImportSessionWidget', {});
8
- exports.stateModel = mobx_state_tree_1.types.model('ImportSessionWidget', {
32
+ const configSchema = (0, configuration_1.ConfigurationSchema)('ImportSessionWidget', {});
33
+ const stateModel = mobx_state_tree_1.types.model('ImportSessionWidget', {
9
34
  id: mst_1.ElementId,
10
35
  type: mobx_state_tree_1.types.literal('ImportSessionWidget'),
11
36
  });
37
+ function ImportSessionWidgetF(pluginManager) {
38
+ pluginManager.addWidgetType(() => {
39
+ return new pluggableElementTypes_1.WidgetType({
40
+ name: 'ImportSessionWidget',
41
+ heading: 'Import session',
42
+ configSchema,
43
+ stateModel,
44
+ ReactComponent: (0, react_1.lazy)(() => Promise.resolve().then(() => __importStar(require('./components/ImportSessionWidget')))),
45
+ });
46
+ });
47
+ }
@@ -1,5 +1,5 @@
1
1
  import React from 'react';
2
- import { SessionModel } from './util';
2
+ import type { SessionModel } from './util';
3
3
  declare const SessionManager: ({ session, }: {
4
4
  session: SessionModel;
5
5
  }) => React.JSX.Element;
@@ -4,12 +4,108 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  const react_1 = __importDefault(require("react"));
7
+ const util_1 = require("@jbrowse/core/util");
8
+ const Delete_1 = __importDefault(require("@mui/icons-material/Delete"));
9
+ const Star_1 = __importDefault(require("@mui/icons-material/Star"));
10
+ const StarBorder_1 = __importDefault(require("@mui/icons-material/StarBorder"));
11
+ const material_1 = require("@mui/material");
12
+ const x_data_grid_1 = require("@mui/x-data-grid");
13
+ const date_fns_1 = require("date-fns");
7
14
  const mobx_react_1 = require("mobx-react");
8
- const AutosavedSessionsList_1 = __importDefault(require("./AutosavedSessionsList"));
9
- const RegularSavedSessionsList_1 = __importDefault(require("./RegularSavedSessionsList"));
15
+ const mui_1 = require("tss-react/mui");
16
+ const useStyles = (0, mui_1.makeStyles)()(theme => ({
17
+ mb: {
18
+ margin: theme.spacing(1),
19
+ marginBottom: theme.spacing(4),
20
+ },
21
+ }));
10
22
  const SessionManager = (0, mobx_react_1.observer)(function ({ session, }) {
11
- return (react_1.default.createElement(react_1.default.Fragment, null,
12
- react_1.default.createElement(AutosavedSessionsList_1.default, { session: session }),
13
- react_1.default.createElement(RegularSavedSessionsList_1.default, { session: session })));
23
+ var _a;
24
+ const { classes } = useStyles();
25
+ const [showOnlyFavs, setShowOnlyFavs] = (0, util_1.useLocalStorage)('sessionManager-showOnlyFavs', false);
26
+ const rows = (_a = session.savedSessionMetadata) === null || _a === void 0 ? void 0 : _a.map(r => ({
27
+ id: r.id,
28
+ name: r.name,
29
+ createdAt: r.createdAt,
30
+ fav: r.favorite,
31
+ })).filter(f => (showOnlyFavs ? f.fav : true));
32
+ return (react_1.default.createElement("div", null,
33
+ react_1.default.createElement("div", { className: classes.mb },
34
+ react_1.default.createElement(material_1.FormControlLabel, { control: react_1.default.createElement(material_1.Checkbox, { checked: showOnlyFavs, onChange: () => {
35
+ setShowOnlyFavs(val => !val);
36
+ } }), label: "Show only favorites?" }),
37
+ react_1.default.createElement(material_1.Button, { variant: "contained", onClick: () => {
38
+ var _a;
39
+ let i = 0;
40
+ (_a = session.savedSessionMetadata) === null || _a === void 0 ? void 0 : _a.forEach(elt => {
41
+ if ((0, date_fns_1.differenceInDays)(+Date.now(), elt.createdAt) > 1 &&
42
+ !elt.favorite) {
43
+ session.deleteSavedSession(elt.id);
44
+ i++;
45
+ }
46
+ });
47
+ session.notify(`${i} sessions deleted`, 'info');
48
+ } }, "Delete non-fav sessions older than 7 days?")),
49
+ rows ? (react_1.default.createElement("div", { style: { display: 'flex', flexDirection: 'column' } },
50
+ react_1.default.createElement(x_data_grid_1.DataGrid, { disableRowSelectionOnClick: true, columnHeaderHeight: 35, rowHeight: 25, hideFooter: rows.length < 100, slotProps: {
51
+ toolbar: {
52
+ showQuickFilter: true,
53
+ },
54
+ }, rows: rows, columns: [
55
+ {
56
+ field: 'fav',
57
+ headerName: 'Fav',
58
+ width: 20,
59
+ renderCell: ({ row }) => {
60
+ return (react_1.default.createElement(material_1.IconButton, { onClick: () => {
61
+ if (row.fav) {
62
+ session.unfavoriteSavedSession(row.id);
63
+ }
64
+ else {
65
+ session.favoriteSavedSession(row.id);
66
+ }
67
+ } }, row.fav ? react_1.default.createElement(Star_1.default, null) : react_1.default.createElement(StarBorder_1.default, null)));
68
+ },
69
+ },
70
+ {
71
+ field: 'name',
72
+ headerName: 'Name',
73
+ editable: true,
74
+ width: (0, util_1.measureGridWidth)(rows.map(r => r.name)),
75
+ renderCell: ({ row }) => {
76
+ return (react_1.default.createElement(react_1.default.Fragment, null,
77
+ react_1.default.createElement(material_1.Link, { href: "#", onClick: event => {
78
+ event.preventDefault();
79
+ session.activateSession(row.id);
80
+ } }, row.name),
81
+ session.id === row.id ? ' (current)' : ''));
82
+ },
83
+ },
84
+ {
85
+ headerName: 'Created at',
86
+ field: 'createdAt',
87
+ renderCell: ({ row }) => {
88
+ return (react_1.default.createElement(material_1.Tooltip, { disableInteractive: true, slotProps: {
89
+ transition: {
90
+ timeout: 0,
91
+ },
92
+ }, title: row.createdAt.toLocaleString() },
93
+ react_1.default.createElement("div", null, (0, date_fns_1.formatDistanceToNow)(row.createdAt, {
94
+ addSuffix: true,
95
+ }))));
96
+ },
97
+ },
98
+ {
99
+ field: 'delete',
100
+ width: 10,
101
+ headerName: 'Delete',
102
+ renderCell: ({ row }) => {
103
+ return (react_1.default.createElement(material_1.IconButton, { onClick: () => {
104
+ session.deleteSavedSession(row.id);
105
+ } },
106
+ react_1.default.createElement(Delete_1.default, null)));
107
+ },
108
+ },
109
+ ] }))) : (react_1.default.createElement("div", null, "No sessions loaded"))));
14
110
  });
15
111
  exports.default = SessionManager;
@@ -1,13 +1,24 @@
1
- import { AbstractSessionModel } from '@jbrowse/core/util';
2
- export interface SessionSnap {
1
+ import type { AbstractSessionModel } from '@jbrowse/core/util';
2
+ export interface SessionMetadata {
3
+ id: string;
3
4
  name: string;
4
- views?: {
5
- tracks?: unknown[];
6
- }[];
7
- [key: string]: unknown;
5
+ createdAt: Date;
6
+ configPath: string;
7
+ favorite: boolean;
8
+ }
9
+ export interface SessionSnap {
10
+ createdAt: Date;
11
+ session: {
12
+ name: string;
13
+ id: string;
14
+ views?: {
15
+ tracks?: unknown[];
16
+ }[];
17
+ [key: string]: unknown;
18
+ };
8
19
  }
9
20
  export interface SessionModel extends AbstractSessionModel {
10
- savedSessions: SessionSnap[];
21
+ savedSessionMetadata?: SessionMetadata[];
11
22
  removeSavedSession: (arg: SessionSnap) => void;
12
23
  activateSession: (arg: string) => void;
13
24
  loadAutosaveSession: () => void;
@@ -1,5 +1,7 @@
1
+ import type PluginManager from '@jbrowse/core/PluginManager';
1
2
  export declare const configSchema: import("@jbrowse/core/configuration/configurationSchema").ConfigurationSchemaType<{}, import("@jbrowse/core/configuration/configurationSchema").ConfigurationSchemaOptions<undefined, undefined>>;
2
3
  export declare const stateModel: import("mobx-state-tree").IModelType<{
3
4
  id: import("mobx-state-tree").IOptionalIType<import("mobx-state-tree").ISimpleType<string>, [undefined]>;
4
5
  type: import("mobx-state-tree").ISimpleType<"SessionManager">;
5
6
  }, {}, import("mobx-state-tree")._NotCustomized, import("mobx-state-tree")._NotCustomized>;
7
+ export default function SessionManagerF(pluginManager: PluginManager): void;
@@ -1,7 +1,33 @@
1
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
+ };
2
25
  Object.defineProperty(exports, "__esModule", { value: true });
3
26
  exports.stateModel = exports.configSchema = void 0;
27
+ exports.default = SessionManagerF;
28
+ const react_1 = require("react");
4
29
  const configuration_1 = require("@jbrowse/core/configuration");
30
+ const pluggableElementTypes_1 = require("@jbrowse/core/pluggableElementTypes");
5
31
  const mst_1 = require("@jbrowse/core/util/types/mst");
6
32
  const mobx_state_tree_1 = require("mobx-state-tree");
7
33
  exports.configSchema = (0, configuration_1.ConfigurationSchema)('SessionManager', {});
@@ -9,3 +35,14 @@ exports.stateModel = mobx_state_tree_1.types.model('SessionManager', {
9
35
  id: mst_1.ElementId,
10
36
  type: mobx_state_tree_1.types.literal('SessionManager'),
11
37
  });
38
+ function SessionManagerF(pluginManager) {
39
+ pluginManager.addWidgetType(() => {
40
+ return new pluggableElementTypes_1.WidgetType({
41
+ name: 'SessionManager',
42
+ heading: 'Recent sessions',
43
+ configSchema: exports.configSchema,
44
+ stateModel: exports.stateModel,
45
+ ReactComponent: (0, react_1.lazy)(() => Promise.resolve().then(() => __importStar(require('./components/SessionManager')))),
46
+ });
47
+ });
48
+ }
package/dist/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/dist/index.js CHANGED
@@ -1,83 +1,26 @@
1
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
2
  var __importDefault = (this && this.__importDefault) || function (mod) {
26
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
27
4
  };
28
5
  Object.defineProperty(exports, "__esModule", { value: true });
29
- const react_1 = require("react");
30
- const WidgetType_1 = __importDefault(require("@jbrowse/core/pluggableElementTypes/WidgetType"));
31
6
  const Plugin_1 = __importDefault(require("@jbrowse/core/Plugin"));
32
7
  const util_1 = require("@jbrowse/core/util");
33
8
  const Help_1 = __importDefault(require("@mui/icons-material/Help"));
34
9
  const Info_1 = __importDefault(require("@mui/icons-material/Info"));
35
- const AboutWidget_1 = require("./AboutWidget");
36
- const HelpWidget_1 = require("./HelpWidget");
37
- const ImportSessionWidget_1 = require("./ImportSessionWidget");
38
- const SessionManager_1 = require("./SessionManager");
10
+ const AboutWidget_1 = __importDefault(require("./AboutWidget"));
11
+ const HelpWidget_1 = __importDefault(require("./HelpWidget"));
12
+ const ImportSessionWidget_1 = __importDefault(require("./ImportSessionWidget"));
13
+ const SessionManager_1 = __importDefault(require("./SessionManager"));
39
14
  class MenusPlugin extends Plugin_1.default {
40
15
  constructor() {
41
16
  super(...arguments);
42
17
  this.name = 'MenusPlugin';
43
18
  }
44
19
  install(pluginManager) {
45
- pluginManager.addWidgetType(() => {
46
- return new WidgetType_1.default({
47
- name: 'AboutWidget',
48
- heading: 'About',
49
- configSchema: AboutWidget_1.configSchema,
50
- stateModel: AboutWidget_1.stateModel,
51
- ReactComponent: (0, react_1.lazy)(() => Promise.resolve().then(() => __importStar(require('./AboutWidget/components/AboutWidget')))),
52
- });
53
- });
54
- pluginManager.addWidgetType(() => {
55
- return new WidgetType_1.default({
56
- name: 'HelpWidget',
57
- heading: 'Help',
58
- configSchema: HelpWidget_1.configSchema,
59
- stateModel: HelpWidget_1.stateModel,
60
- ReactComponent: (0, react_1.lazy)(() => Promise.resolve().then(() => __importStar(require('./HelpWidget/components/HelpWidget')))),
61
- });
62
- });
63
- pluginManager.addWidgetType(() => {
64
- return new WidgetType_1.default({
65
- name: 'ImportSessionWidget',
66
- heading: 'Import session',
67
- configSchema: ImportSessionWidget_1.configSchema,
68
- stateModel: ImportSessionWidget_1.stateModel,
69
- ReactComponent: (0, react_1.lazy)(() => Promise.resolve().then(() => __importStar(require('./ImportSessionWidget/components/ImportSessionWidget')))),
70
- });
71
- });
72
- pluginManager.addWidgetType(() => {
73
- return new WidgetType_1.default({
74
- name: 'SessionManager',
75
- heading: 'Sessions',
76
- configSchema: SessionManager_1.configSchema,
77
- stateModel: SessionManager_1.stateModel,
78
- ReactComponent: (0, react_1.lazy)(() => Promise.resolve().then(() => __importStar(require('./SessionManager/components/SessionManager')))),
79
- });
80
- });
20
+ (0, AboutWidget_1.default)(pluginManager);
21
+ (0, HelpWidget_1.default)(pluginManager);
22
+ (0, ImportSessionWidget_1.default)(pluginManager);
23
+ (0, SessionManager_1.default)(pluginManager);
81
24
  }
82
25
  configure(pluginManager) {
83
26
  if ((0, util_1.isAbstractMenuManager)(pluginManager.rootModel)) {
@@ -1,5 +1,5 @@
1
1
  import React from 'react';
2
- import { IAnyStateTreeNode } from 'mobx-state-tree';
2
+ import type { IAnyStateTreeNode } from 'mobx-state-tree';
3
3
  declare const AboutWidget: ({ model, }: {
4
4
  model: IAnyStateTreeNode;
5
5
  }) => React.JSX.Element;
@@ -1,8 +1,8 @@
1
1
  import React from 'react';
2
+ import { getSession } from '@jbrowse/core/util';
3
+ import { Link, Typography } from '@mui/material';
2
4
  import { observer } from 'mobx-react';
3
5
  import { getEnv } from 'mobx-state-tree';
4
- import { getSession } from '@jbrowse/core/util';
5
- import { Typography, Link } from '@mui/material';
6
6
  import { makeStyles } from 'tss-react/mui';
7
7
  const useStyles = makeStyles()(theme => ({
8
8
  root: {
@@ -1,5 +1,2 @@
1
- export declare const configSchema: import("@jbrowse/core/configuration/configurationSchema").ConfigurationSchemaType<{}, import("@jbrowse/core/configuration/configurationSchema").ConfigurationSchemaOptions<undefined, undefined>>;
2
- export declare const stateModel: import("mobx-state-tree").IModelType<{
3
- id: import("mobx-state-tree").IOptionalIType<import("mobx-state-tree").ISimpleType<string>, [undefined]>;
4
- type: import("mobx-state-tree").ISimpleType<"AboutWidget">;
5
- }, {}, import("mobx-state-tree")._NotCustomized, import("mobx-state-tree")._NotCustomized>;
1
+ import type PluginManager from '@jbrowse/core/PluginManager';
2
+ export default function AboutWidgetF(pluginManager: PluginManager): void;