@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,6 +1,5 @@
1
- import React from 'react';
2
- import { IAnyStateTreeNode } from 'mobx-state-tree';
1
+ import type { IAnyStateTreeNode } from 'mobx-state-tree';
3
2
  declare const AboutWidget: ({ model, }: {
4
3
  model: IAnyStateTreeNode;
5
- }) => React.JSX.Element;
4
+ }) => import("react/jsx-runtime").JSX.Element;
6
5
  export default AboutWidget;
@@ -1,13 +1,10 @@
1
1
  "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
2
  Object.defineProperty(exports, "__esModule", { value: true });
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");
3
+ const jsx_runtime_1 = require("react/jsx-runtime");
9
4
  const util_1 = require("@jbrowse/core/util");
10
5
  const material_1 = require("@mui/material");
6
+ const mobx_react_1 = require("mobx-react");
7
+ const mobx_state_tree_1 = require("mobx-state-tree");
11
8
  const mui_1 = require("tss-react/mui");
12
9
  const useStyles = (0, mui_1.makeStyles)()(theme => ({
13
10
  root: {
@@ -30,33 +27,14 @@ const AboutWidget = (0, mobx_react_1.observer)(function ({ model, }) {
30
27
  const corePlugins = new Set(plugins
31
28
  .filter(p => { var _a; return (_a = pluginManager.pluginMetadata[p.name]) === null || _a === void 0 ? void 0 : _a.isCore; })
32
29
  .map(p => p.name));
33
- return (react_1.default.createElement("div", { className: classes.root },
34
- react_1.default.createElement(material_1.Typography, { variant: "h4", align: "center" }, "JBrowse 2"),
35
- react_1.default.createElement(material_1.Typography, { variant: "h6", align: "center", className: classes.subtitle }, version),
36
- react_1.default.createElement(material_1.Typography, { align: "center" },
37
- "JBrowse is a",
38
- ' ',
39
- react_1.default.createElement(material_1.Link, { href: "http://gmod.org/", target: "_blank", rel: "noopener noreferrer" }, "GMOD"),
40
- ' ',
41
- "project"),
42
- react_1.default.createElement("br", null),
43
- react_1.default.createElement(material_1.Typography, { align: "center" }, "\u00A9 2019-2022 The Evolutionary Software Foundation"),
44
- react_1.default.createElement("div", { className: classes.pluginList },
45
- react_1.default.createElement(material_1.Typography, null, "External plugins loaded"),
46
- react_1.default.createElement("ul", null, plugins
47
- .filter(plugin => !corePlugins.has(plugin.name))
48
- .map(plugin => {
49
- const { url, name, version = '' } = plugin;
50
- const text = `${name} ${version || ''}`;
51
- return (react_1.default.createElement("li", { key: plugin.name }, plugin.url ? (react_1.default.createElement(material_1.Link, { target: "_blank", rel: "noopener noreferrer", href: url }, text)) : (react_1.default.createElement(material_1.Typography, null, text))));
52
- })),
53
- react_1.default.createElement(material_1.Typography, null, "Core plugins loaded"),
54
- react_1.default.createElement("ul", null, plugins
55
- .filter(plugin => corePlugins.has(plugin.name))
56
- .map(plugin => (react_1.default.createElement("li", { key: plugin.name },
57
- react_1.default.createElement(material_1.Typography, null,
58
- plugin.name,
59
- " ",
60
- plugin.version || ''))))))));
30
+ return ((0, jsx_runtime_1.jsxs)("div", { className: classes.root, children: [(0, jsx_runtime_1.jsx)(material_1.Typography, { variant: "h4", align: "center", children: "JBrowse 2" }), (0, jsx_runtime_1.jsx)(material_1.Typography, { variant: "h6", align: "center", className: classes.subtitle, children: version }), (0, jsx_runtime_1.jsxs)(material_1.Typography, { align: "center", children: ["JBrowse is a", ' ', (0, jsx_runtime_1.jsx)(material_1.Link, { href: "http://gmod.org/", target: "_blank", rel: "noopener noreferrer", children: "GMOD" }), ' ', "project"] }), (0, jsx_runtime_1.jsx)("br", {}), (0, jsx_runtime_1.jsx)(material_1.Typography, { align: "center", children: "\u00A9 2019-2022 The Evolutionary Software Foundation" }), (0, jsx_runtime_1.jsxs)("div", { className: classes.pluginList, children: [(0, jsx_runtime_1.jsx)(material_1.Typography, { children: "External plugins loaded" }), (0, jsx_runtime_1.jsx)("ul", { children: plugins
31
+ .filter(plugin => !corePlugins.has(plugin.name))
32
+ .map(plugin => {
33
+ const { url, name, version = '' } = plugin;
34
+ const text = `${name} ${version || ''}`;
35
+ return ((0, jsx_runtime_1.jsx)("li", { children: plugin.url ? ((0, jsx_runtime_1.jsx)(material_1.Link, { target: "_blank", rel: "noopener noreferrer", href: url, children: text })) : ((0, jsx_runtime_1.jsx)(material_1.Typography, { children: text })) }, plugin.name));
36
+ }) }), (0, jsx_runtime_1.jsx)(material_1.Typography, { children: "Core plugins loaded" }), (0, jsx_runtime_1.jsx)("ul", { children: plugins
37
+ .filter(plugin => corePlugins.has(plugin.name))
38
+ .map(plugin => ((0, jsx_runtime_1.jsx)("li", { children: (0, jsx_runtime_1.jsxs)(material_1.Typography, { children: [plugin.name, " ", plugin.version || ''] }) }, plugin.name))) })] })] }));
61
39
  });
62
40
  exports.default = AboutWidget;
@@ -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,57 @@
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 () {
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
+ })();
2
35
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.stateModel = exports.configSchema = void 0;
36
+ exports.default = AboutWidgetF;
37
+ const react_1 = require("react");
4
38
  const configuration_1 = require("@jbrowse/core/configuration");
39
+ const pluggableElementTypes_1 = require("@jbrowse/core/pluggableElementTypes");
5
40
  const mst_1 = require("@jbrowse/core/util/types/mst");
6
41
  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', {
42
+ const configSchema = (0, configuration_1.ConfigurationSchema)('AboutWidget', {});
43
+ const stateModel = mobx_state_tree_1.types.model('AboutWidget', {
9
44
  id: mst_1.ElementId,
10
45
  type: mobx_state_tree_1.types.literal('AboutWidget'),
11
46
  });
47
+ function AboutWidgetF(pluginManager) {
48
+ pluginManager.addWidgetType(() => {
49
+ return new pluggableElementTypes_1.WidgetType({
50
+ name: 'AboutWidget',
51
+ heading: 'About',
52
+ configSchema,
53
+ stateModel,
54
+ ReactComponent: (0, react_1.lazy)(() => Promise.resolve().then(() => __importStar(require('./components/AboutWidget')))),
55
+ });
56
+ });
57
+ }
@@ -1,6 +1,5 @@
1
- import React from 'react';
2
- import { IAnyStateTreeNode } from 'mobx-state-tree';
1
+ import type { IAnyStateTreeNode } from 'mobx-state-tree';
3
2
  declare const HelpWidget: ({ model, }: {
4
3
  model?: IAnyStateTreeNode;
5
- }) => React.JSX.Element;
4
+ }) => import("react/jsx-runtime").JSX.Element;
6
5
  export default HelpWidget;
@@ -1,13 +1,10 @@
1
1
  "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
2
  Object.defineProperty(exports, "__esModule", { value: true });
6
- const react_1 = __importDefault(require("react"));
7
- const mobx_react_1 = require("mobx-react");
3
+ const jsx_runtime_1 = require("react/jsx-runtime");
8
4
  const util_1 = require("@jbrowse/core/util");
9
- const mui_1 = require("tss-react/mui");
10
5
  const material_1 = require("@mui/material");
6
+ const mobx_react_1 = require("mobx-react");
7
+ const mui_1 = require("tss-react/mui");
11
8
  const useStyles = (0, mui_1.makeStyles)()(theme => ({
12
9
  root: {
13
10
  margin: theme.spacing(2),
@@ -19,18 +16,6 @@ const useStyles = (0, mui_1.makeStyles)()(theme => ({
19
16
  const HelpWidget = (0, mobx_react_1.observer)(function Help({ model, }) {
20
17
  const { classes } = useStyles();
21
18
  const root = model ? (0, util_1.getSession)(model) : { version: '' };
22
- return (react_1.default.createElement("div", { className: classes.root },
23
- react_1.default.createElement(material_1.Typography, { variant: "h4", align: "center" }, "JBrowse 2"),
24
- react_1.default.createElement(material_1.Typography, { variant: "h6", align: "center", className: classes.subtitle }, root.version),
25
- react_1.default.createElement(material_1.Typography, null, "Here are some resources to get help. Please report the version number above when asking questions. Thanks!"),
26
- react_1.default.createElement("ul", null,
27
- react_1.default.createElement("li", null,
28
- react_1.default.createElement(material_1.Link, { href: "https://github.com/GMOD/jbrowse-components/discussions", target: "_blank", rel: "noopener noreferrer" }, "Question & answer forum")),
29
- react_1.default.createElement("li", null,
30
- react_1.default.createElement(material_1.Link, { href: "https://github.com/GMOD/jbrowse-components/issues/new/choose", target: "_blank", rel: "noopener noreferrer" }, "Report a bug")),
31
- react_1.default.createElement("li", null,
32
- react_1.default.createElement(material_1.Link, { href: "https://jbrowse.org/jb2/docs/user_guide", target: "_blank", rel: "noopener noreferrer" }, "User guide")),
33
- react_1.default.createElement("li", null,
34
- react_1.default.createElement(material_1.Link, { href: "https://jbrowse.org/jb2/docs/", target: "_blank", rel: "noopener noreferrer" }, "Documentation")))));
19
+ return ((0, jsx_runtime_1.jsxs)("div", { className: classes.root, children: [(0, jsx_runtime_1.jsx)(material_1.Typography, { variant: "h4", align: "center", children: "JBrowse 2" }), (0, jsx_runtime_1.jsx)(material_1.Typography, { variant: "h6", align: "center", className: classes.subtitle, children: root.version }), (0, jsx_runtime_1.jsx)(material_1.Typography, { children: "Here are some resources to get help. Please report the version number above when asking questions. Thanks!" }), (0, jsx_runtime_1.jsxs)("ul", { children: [(0, jsx_runtime_1.jsx)("li", { children: (0, jsx_runtime_1.jsx)(material_1.Link, { href: "https://github.com/GMOD/jbrowse-components/discussions", target: "_blank", rel: "noopener noreferrer", children: "Question & answer forum" }) }), (0, jsx_runtime_1.jsx)("li", { children: (0, jsx_runtime_1.jsx)(material_1.Link, { href: "https://github.com/GMOD/jbrowse-components/issues/new/choose", target: "_blank", rel: "noopener noreferrer", children: "Report a bug" }) }), (0, jsx_runtime_1.jsx)("li", { children: (0, jsx_runtime_1.jsx)(material_1.Link, { href: "https://jbrowse.org/jb2/docs/user_guide", target: "_blank", rel: "noopener noreferrer", children: "User guide" }) }), (0, jsx_runtime_1.jsx)("li", { children: (0, jsx_runtime_1.jsx)(material_1.Link, { href: "https://jbrowse.org/jb2/docs/", target: "_blank", rel: "noopener noreferrer", children: "Documentation" }) })] })] }));
35
20
  });
36
21
  exports.default = HelpWidget;
@@ -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,57 @@
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 () {
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
+ })();
2
35
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.stateModel = exports.configSchema = void 0;
36
+ exports.default = HelpWidgetF;
37
+ const react_1 = require("react");
4
38
  const configuration_1 = require("@jbrowse/core/configuration");
39
+ const pluggableElementTypes_1 = require("@jbrowse/core/pluggableElementTypes");
5
40
  const mst_1 = require("@jbrowse/core/util/types/mst");
6
41
  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', {
42
+ const configSchema = (0, configuration_1.ConfigurationSchema)('HelpWidget', {});
43
+ const stateModel = mobx_state_tree_1.types.model('HelpWidget', {
9
44
  id: mst_1.ElementId,
10
45
  type: mobx_state_tree_1.types.literal('HelpWidget'),
11
46
  });
47
+ function HelpWidgetF(pluginManager) {
48
+ pluginManager.addWidgetType(() => {
49
+ return new pluggableElementTypes_1.WidgetType({
50
+ name: 'HelpWidget',
51
+ heading: 'Help',
52
+ configSchema,
53
+ stateModel,
54
+ ReactComponent: (0, react_1.lazy)(() => Promise.resolve().then(() => __importStar(require('./components/HelpWidget')))),
55
+ });
56
+ });
57
+ }
@@ -1,4 +1,3 @@
1
- import React from 'react';
2
1
  export default function ImportError({ error }: {
3
2
  error: unknown;
4
- }): React.JSX.Element;
3
+ }): import("react/jsx-runtime").JSX.Element;
@@ -4,11 +4,10 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.default = ImportError;
7
- const react_1 = __importDefault(require("react"));
7
+ const jsx_runtime_1 = require("react/jsx-runtime");
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),
@@ -25,10 +24,5 @@ const useStyles = (0, mui_1.makeStyles)()(theme => ({
25
24
  }));
26
25
  function ImportError({ error }) {
27
26
  const { classes } = useStyles();
28
- return (react_1.default.createElement(material_1.Paper, { className: classes.error },
29
- react_1.default.createElement("div", { className: classes.errorHeader },
30
- react_1.default.createElement(Error_1.default, { color: "inherit", fontSize: "large" }),
31
- react_1.default.createElement("div", null,
32
- react_1.default.createElement(material_1.Typography, { variant: "h6", color: "inherit", align: "center" }, "Import error"))),
33
- react_1.default.createElement(material_1.Typography, { className: classes.errorMessage }, `${error}`)));
27
+ return ((0, jsx_runtime_1.jsxs)(material_1.Paper, { className: classes.error, children: [(0, jsx_runtime_1.jsxs)("div", { className: classes.errorHeader, children: [(0, jsx_runtime_1.jsx)(Error_1.default, { color: "inherit", fontSize: "large" }), (0, jsx_runtime_1.jsx)("div", { children: (0, jsx_runtime_1.jsx)(material_1.Typography, { variant: "h6", color: "inherit", align: "center", children: "Import error" }) })] }), (0, jsx_runtime_1.jsx)(material_1.Typography, { className: classes.errorMessage, children: `${error}` })] }));
34
28
  }
@@ -1,6 +1,5 @@
1
- import React from 'react';
2
- import { IAnyStateTreeNode } from 'mobx-state-tree';
1
+ import type { IAnyStateTreeNode } from 'mobx-state-tree';
3
2
  declare const ImportSessionWidget: ({ model, }: {
4
3
  model: IAnyStateTreeNode;
5
- }) => React.JSX.Element;
4
+ }) => import("react/jsx-runtime").JSX.Element;
6
5
  export default ImportSessionWidget;
@@ -1,46 +1,21 @@
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 = __importStar(require("react"));
30
- const material_1 = require("@mui/material");
6
+ const jsx_runtime_1 = require("react/jsx-runtime");
7
+ const react_1 = require("react");
31
8
  const util_1 = require("@jbrowse/core/util");
32
- const mui_1 = require("tss-react/mui");
9
+ const CloudUpload_1 = __importDefault(require("@mui/icons-material/CloudUpload"));
10
+ const material_1 = require("@mui/material");
33
11
  const mobx_react_1 = require("mobx-react");
34
12
  const react_dropzone_1 = require("react-dropzone");
35
- // icons
36
- const CloudUpload_1 = __importDefault(require("@mui/icons-material/CloudUpload"));
37
- // locals
13
+ const mui_1 = require("tss-react/mui");
38
14
  const ImportError_1 = __importDefault(require("./ImportError"));
39
- const MAX_FILE_SIZE = 512 * 1024 ** 2; // 512 MiB
15
+ const MAX_FILE_SIZE = 512 * 1024 ** 2;
40
16
  function styledBy(property, mapping) {
41
17
  return (props) => mapping[props[property]];
42
18
  }
43
- // @ts-expect-error
44
19
  const useStyles = (0, mui_1.makeStyles)()(theme => ({
45
20
  root: {
46
21
  margin: theme.spacing(1),
@@ -77,7 +52,6 @@ const useStyles = (0, mui_1.makeStyles)()(theme => ({
77
52
  const ImportSessionWidget = (0, mobx_react_1.observer)(function ({ model, }) {
78
53
  const [error, setError] = (0, react_1.useState)();
79
54
  const { getRootProps, getInputProps, isDragActive } = (0, react_dropzone_1.useDropzone)({
80
- // @ts-expect-error
81
55
  accept: 'application/json',
82
56
  maxSize: MAX_FILE_SIZE,
83
57
  multiple: false,
@@ -96,16 +70,7 @@ const ImportSessionWidget = (0, mobx_react_1.observer)(function ({ model, }) {
96
70
  }
97
71
  },
98
72
  });
99
- // @ts-expect-error
100
73
  const { classes } = useStyles({ isDragActive });
101
- return (react_1.default.createElement("div", { className: classes.root },
102
- react_1.default.createElement(material_1.Paper, { className: classes.paper },
103
- react_1.default.createElement("div", { ...getRootProps({ className: classes.dropZone }) },
104
- react_1.default.createElement("input", { ...getInputProps() }),
105
- react_1.default.createElement(CloudUpload_1.default, { className: classes.uploadIcon, fontSize: "large" }),
106
- react_1.default.createElement(material_1.Typography, { color: "textSecondary", align: "center", variant: "body1" }, "Drag and drop files here"),
107
- react_1.default.createElement(material_1.Typography, { color: "textSecondary", align: "center", variant: "body2" }, "or"),
108
- react_1.default.createElement(material_1.Button, { color: "primary", variant: "contained" }, "Browse Files"))),
109
- error ? react_1.default.createElement(ImportError_1.default, { error: error }) : null));
74
+ return ((0, jsx_runtime_1.jsxs)("div", { className: classes.root, children: [(0, jsx_runtime_1.jsx)(material_1.Paper, { className: classes.paper, children: (0, jsx_runtime_1.jsxs)("div", { ...getRootProps({ className: classes.dropZone }), children: [(0, jsx_runtime_1.jsx)("input", { ...getInputProps() }), (0, jsx_runtime_1.jsx)(CloudUpload_1.default, { className: classes.uploadIcon, fontSize: "large" }), (0, jsx_runtime_1.jsx)(material_1.Typography, { color: "textSecondary", align: "center", variant: "body1", children: "Drag and drop files here" }), (0, jsx_runtime_1.jsx)(material_1.Typography, { color: "textSecondary", align: "center", variant: "body2", children: "or" }), (0, jsx_runtime_1.jsx)(material_1.Button, { color: "primary", variant: "contained", children: "Browse Files" })] }) }), error ? (0, jsx_runtime_1.jsx)(ImportError_1.default, { error: error }) : null] }));
110
75
  });
111
76
  exports.default = ImportSessionWidget;
@@ -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,57 @@
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 () {
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
+ })();
2
35
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.stateModel = exports.configSchema = void 0;
36
+ exports.default = ImportSessionWidgetF;
37
+ const react_1 = require("react");
4
38
  const configuration_1 = require("@jbrowse/core/configuration");
39
+ const pluggableElementTypes_1 = require("@jbrowse/core/pluggableElementTypes");
5
40
  const mst_1 = require("@jbrowse/core/util/types/mst");
6
41
  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', {
42
+ const configSchema = (0, configuration_1.ConfigurationSchema)('ImportSessionWidget', {});
43
+ const stateModel = mobx_state_tree_1.types.model('ImportSessionWidget', {
9
44
  id: mst_1.ElementId,
10
45
  type: mobx_state_tree_1.types.literal('ImportSessionWidget'),
11
46
  });
47
+ function ImportSessionWidgetF(pluginManager) {
48
+ pluginManager.addWidgetType(() => {
49
+ return new pluggableElementTypes_1.WidgetType({
50
+ name: 'ImportSessionWidget',
51
+ heading: 'Import session',
52
+ configSchema,
53
+ stateModel,
54
+ ReactComponent: (0, react_1.lazy)(() => Promise.resolve().then(() => __importStar(require('./components/ImportSessionWidget')))),
55
+ });
56
+ });
57
+ }
@@ -1,6 +1,5 @@
1
- import React from 'react';
2
- import { SessionModel } from './util';
1
+ import type { SessionModel } from './util';
3
2
  declare const SessionManager: ({ session, }: {
4
3
  session: SessionModel;
5
- }) => React.JSX.Element;
4
+ }) => import("react/jsx-runtime").JSX.Element;
6
5
  export default SessionManager;
@@ -3,13 +3,100 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- const react_1 = __importDefault(require("react"));
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 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 ((0, jsx_runtime_1.jsxs)("div", { children: [(0, jsx_runtime_1.jsxs)("div", { className: classes.mb, children: [(0, jsx_runtime_1.jsx)(material_1.FormControlLabel, { control: (0, jsx_runtime_1.jsx)(material_1.Checkbox, { checked: showOnlyFavs, onChange: () => {
33
+ setShowOnlyFavs(val => !val);
34
+ } }), label: "Show only favorites?" }), (0, jsx_runtime_1.jsx)(material_1.Button, { variant: "contained", onClick: () => {
35
+ var _a;
36
+ let i = 0;
37
+ (_a = session.savedSessionMetadata) === null || _a === void 0 ? void 0 : _a.forEach(elt => {
38
+ if ((0, date_fns_1.differenceInDays)(+Date.now(), elt.createdAt) > 1 &&
39
+ !elt.favorite) {
40
+ session.deleteSavedSession(elt.id);
41
+ i++;
42
+ }
43
+ });
44
+ session.notify(`${i} sessions deleted`, 'info');
45
+ }, children: "Delete non-fav sessions older than 7 days?" })] }), rows ? ((0, jsx_runtime_1.jsx)("div", { style: { display: 'flex', flexDirection: 'column' }, children: (0, jsx_runtime_1.jsx)(x_data_grid_1.DataGrid, { disableRowSelectionOnClick: true, columnHeaderHeight: 35, rowHeight: 25, hideFooter: rows.length < 100, slotProps: {
46
+ toolbar: {
47
+ showQuickFilter: true,
48
+ },
49
+ }, rows: rows, columns: [
50
+ {
51
+ field: 'fav',
52
+ headerName: 'Fav',
53
+ width: 20,
54
+ renderCell: ({ row }) => {
55
+ return ((0, jsx_runtime_1.jsx)(material_1.IconButton, { onClick: () => {
56
+ if (row.fav) {
57
+ session.unfavoriteSavedSession(row.id);
58
+ }
59
+ else {
60
+ session.favoriteSavedSession(row.id);
61
+ }
62
+ }, children: row.fav ? (0, jsx_runtime_1.jsx)(Star_1.default, {}) : (0, jsx_runtime_1.jsx)(StarBorder_1.default, {}) }));
63
+ },
64
+ },
65
+ {
66
+ field: 'name',
67
+ headerName: 'Name',
68
+ editable: true,
69
+ width: (0, util_1.measureGridWidth)(rows.map(r => r.name)),
70
+ renderCell: ({ row }) => {
71
+ return ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)(material_1.Link, { href: "#", onClick: event => {
72
+ event.preventDefault();
73
+ session.activateSession(row.id);
74
+ }, children: row.name }), session.id === row.id ? ' (current)' : ''] }));
75
+ },
76
+ },
77
+ {
78
+ headerName: 'Created at',
79
+ field: 'createdAt',
80
+ renderCell: ({ row }) => {
81
+ return ((0, jsx_runtime_1.jsx)(material_1.Tooltip, { disableInteractive: true, slotProps: {
82
+ transition: {
83
+ timeout: 0,
84
+ },
85
+ }, title: row.createdAt.toLocaleString(), children: (0, jsx_runtime_1.jsx)("div", { children: (0, date_fns_1.formatDistanceToNow)(row.createdAt, {
86
+ addSuffix: true,
87
+ }) }) }));
88
+ },
89
+ },
90
+ {
91
+ field: 'delete',
92
+ width: 10,
93
+ headerName: 'Delete',
94
+ renderCell: ({ row }) => {
95
+ return ((0, jsx_runtime_1.jsx)(material_1.IconButton, { onClick: () => {
96
+ session.deleteSavedSession(row.id);
97
+ }, children: (0, jsx_runtime_1.jsx)(Delete_1.default, {}) }));
98
+ },
99
+ },
100
+ ] }) })) : ((0, jsx_runtime_1.jsx)("div", { children: "No sessions loaded" }))] }));
14
101
  });
15
102
  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;