@jbrowse/plugin-data-management 1.6.8 → 1.7.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (109) hide show
  1. package/dist/AddConnectionWidget/components/AddConnectionWidget.d.ts +9 -9
  2. package/dist/AddConnectionWidget/components/AddConnectionWidget.js +178 -0
  3. package/dist/AddConnectionWidget/components/AddConnectionWidget.test.js +270 -0
  4. package/dist/AddConnectionWidget/components/ConfigureConnection.d.ts +2 -2
  5. package/dist/AddConnectionWidget/components/ConfigureConnection.js +35 -0
  6. package/dist/AddConnectionWidget/components/ConnectionTypeSelect.d.ts +8 -8
  7. package/dist/AddConnectionWidget/components/ConnectionTypeSelect.js +70 -0
  8. package/dist/AddConnectionWidget/index.d.ts +2 -2
  9. package/dist/AddConnectionWidget/index.js +21 -0
  10. package/dist/AddConnectionWidget/model.d.ts +5 -5
  11. package/dist/AddConnectionWidget/model.js +17 -0
  12. package/dist/AddTrackWidget/components/AddTrackWidget.d.ts +7 -7
  13. package/dist/AddTrackWidget/components/AddTrackWidget.js +215 -0
  14. package/dist/AddTrackWidget/components/AddTrackWidget.test.js +218 -0
  15. package/dist/AddTrackWidget/components/ConfirmTrack.d.ts +7 -7
  16. package/dist/AddTrackWidget/components/ConfirmTrack.js +277 -0
  17. package/dist/AddTrackWidget/components/TrackSourceSelect.d.ts +7 -7
  18. package/dist/AddTrackWidget/components/TrackSourceSelect.js +60 -0
  19. package/dist/AddTrackWidget/index.d.ts +2 -2
  20. package/dist/AddTrackWidget/index.js +21 -0
  21. package/dist/AddTrackWidget/index.test.js +291 -0
  22. package/dist/AddTrackWidget/model.d.ts +42 -42
  23. package/dist/AddTrackWidget/model.js +167 -0
  24. package/dist/AssemblyManager/AssemblyAddForm.d.ts +6 -6
  25. package/dist/AssemblyManager/AssemblyAddForm.js +299 -0
  26. package/dist/AssemblyManager/AssemblyEditor.d.ts +5 -5
  27. package/dist/AssemblyManager/AssemblyEditor.js +25 -0
  28. package/dist/AssemblyManager/AssemblyManager.d.ts +6 -6
  29. package/dist/AssemblyManager/AssemblyManager.js +144 -0
  30. package/dist/AssemblyManager/AssemblyManager.test.js +113 -0
  31. package/dist/AssemblyManager/AssemblyTable.d.ts +13 -13
  32. package/dist/AssemblyManager/AssemblyTable.js +92 -0
  33. package/dist/AssemblyManager/index.d.ts +1 -1
  34. package/dist/AssemblyManager/index.js +15 -0
  35. package/dist/HierarchicalTrackSelectorWidget/components/CloseConnectionDialog.d.ts +7 -7
  36. package/dist/HierarchicalTrackSelectorWidget/components/CloseConnectionDialog.js +55 -0
  37. package/dist/HierarchicalTrackSelectorWidget/components/DeleteConnectionDialog.d.ts +13 -13
  38. package/dist/HierarchicalTrackSelectorWidget/components/DeleteConnectionDialog.js +46 -0
  39. package/dist/HierarchicalTrackSelectorWidget/components/HierarchicalTrackSelector.d.ts +6 -6
  40. package/dist/HierarchicalTrackSelectorWidget/components/HierarchicalTrackSelector.js +648 -0
  41. package/dist/HierarchicalTrackSelectorWidget/components/HierarchicalTrackSelector.test.js +191 -0
  42. package/dist/HierarchicalTrackSelectorWidget/components/ManageConnectionsDialog.d.ts +9 -9
  43. package/dist/HierarchicalTrackSelectorWidget/components/ManageConnectionsDialog.js +80 -0
  44. package/dist/HierarchicalTrackSelectorWidget/components/ToggleConnectionsDialog.d.ts +10 -10
  45. package/dist/HierarchicalTrackSelectorWidget/components/ToggleConnectionsDialog.js +98 -0
  46. package/dist/HierarchicalTrackSelectorWidget/index.d.ts +2 -2
  47. package/dist/HierarchicalTrackSelectorWidget/index.js +21 -0
  48. package/dist/HierarchicalTrackSelectorWidget/model.d.ts +37 -37
  49. package/dist/HierarchicalTrackSelectorWidget/model.js +306 -0
  50. package/dist/HierarchicalTrackSelectorWidget/model.test.js +28 -0
  51. package/dist/PluginStoreWidget/components/CustomPluginForm.d.ts +9 -9
  52. package/dist/PluginStoreWidget/components/CustomPluginForm.js +217 -0
  53. package/dist/PluginStoreWidget/components/InstalledPlugin.d.ts +11 -11
  54. package/dist/PluginStoreWidget/components/InstalledPlugin.js +138 -0
  55. package/dist/PluginStoreWidget/components/InstalledPluginsList.d.ts +9 -9
  56. package/dist/PluginStoreWidget/components/InstalledPluginsList.js +47 -0
  57. package/dist/PluginStoreWidget/components/PluginCard.d.ts +10 -10
  58. package/dist/PluginStoreWidget/components/PluginCard.js +121 -0
  59. package/dist/PluginStoreWidget/components/PluginStoreWidget.d.ts +7 -7
  60. package/dist/PluginStoreWidget/components/PluginStoreWidget.js +240 -0
  61. package/dist/PluginStoreWidget/components/PluginStoreWidget.test.js +201 -0
  62. package/dist/PluginStoreWidget/index.d.ts +3 -3
  63. package/dist/PluginStoreWidget/index.js +29 -0
  64. package/dist/PluginStoreWidget/model.d.ts +13 -13
  65. package/dist/PluginStoreWidget/model.js +28 -0
  66. package/dist/PluginStoreWidget/model.test.js +17 -0
  67. package/dist/SetDefaultSession/SetDefaultSession.d.ts +6 -6
  68. package/dist/SetDefaultSession/SetDefaultSession.js +64 -0
  69. package/dist/SetDefaultSession/SetDefaultSession.test.js +75 -0
  70. package/dist/SetDefaultSession/index.d.ts +1 -1
  71. package/dist/SetDefaultSession/index.js +15 -0
  72. package/dist/index.d.ts +27 -27
  73. package/dist/index.js +159 -6
  74. package/dist/index.test.js +56 -0
  75. package/dist/ucsc-trackhub/configSchema.d.ts +2 -2
  76. package/dist/ucsc-trackhub/configSchema.js +30 -0
  77. package/dist/ucsc-trackhub/index.d.ts +2 -2
  78. package/dist/ucsc-trackhub/index.js +23 -0
  79. package/dist/ucsc-trackhub/model.d.ts +15 -4
  80. package/dist/ucsc-trackhub/model.js +130 -0
  81. package/dist/ucsc-trackhub/ucscAssemblies.d.ts +2 -2
  82. package/dist/ucsc-trackhub/ucscAssemblies.js +13 -0
  83. package/dist/ucsc-trackhub/ucscTrackHub.d.ts +6 -6
  84. package/dist/ucsc-trackhub/ucscTrackHub.js +503 -0
  85. package/package.json +5 -7
  86. package/src/AddConnectionWidget/components/AddConnectionWidget.test.js +1 -0
  87. package/src/AddTrackWidget/components/AddTrackWidget.test.js +1 -0
  88. package/src/AddTrackWidget/components/AddTrackWidget.tsx +1 -1
  89. package/src/HierarchicalTrackSelectorWidget/components/HierarchicalTrackSelector.test.js +1 -0
  90. package/src/PluginStoreWidget/components/CustomPluginForm.tsx +1 -1
  91. package/src/PluginStoreWidget/components/InstalledPlugin.tsx +4 -2
  92. package/src/PluginStoreWidget/components/PluginCard.tsx +4 -2
  93. package/src/PluginStoreWidget/components/PluginStoreWidget.test.js +1 -0
  94. package/src/PluginStoreWidget/model.test.js +1 -0
  95. package/src/SetDefaultSession/SetDefaultSession.tsx +4 -3
  96. package/dist/AddConnectionWidget/components/AddConnectionWidget.test.d.ts +0 -1
  97. package/dist/AddTrackWidget/components/AddTrackWidget.test.d.ts +0 -1
  98. package/dist/AddTrackWidget/index.test.d.ts +0 -1
  99. package/dist/HierarchicalTrackSelectorWidget/components/HierarchicalTrackSelector.test.d.ts +0 -1
  100. package/dist/HierarchicalTrackSelectorWidget/model.test.d.ts +0 -1
  101. package/dist/PluginStoreWidget/components/PluginStoreWidget.test.d.ts +0 -1
  102. package/dist/PluginStoreWidget/model.test.d.ts +0 -1
  103. package/dist/index.test.d.ts +0 -1
  104. package/dist/plugin-data-management.cjs.development.js +0 -4856
  105. package/dist/plugin-data-management.cjs.development.js.map +0 -1
  106. package/dist/plugin-data-management.cjs.production.min.js +0 -2
  107. package/dist/plugin-data-management.cjs.production.min.js.map +0 -1
  108. package/dist/plugin-data-management.esm.js +0 -4829
  109. package/dist/plugin-data-management.esm.js.map +0 -1
@@ -0,0 +1,138 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ var _typeof = require("@babel/runtime/helpers/typeof");
6
+
7
+ Object.defineProperty(exports, "__esModule", {
8
+ value: true
9
+ });
10
+ exports["default"] = void 0;
11
+
12
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
13
+
14
+ var _react = _interopRequireWildcard(require("react"));
15
+
16
+ var _mobxReact = require("mobx-react");
17
+
18
+ var _mobxStateTree = require("mobx-state-tree");
19
+
20
+ var _core = require("@material-ui/core");
21
+
22
+ var _Close = _interopRequireDefault(require("@material-ui/icons/Close"));
23
+
24
+ var _Lock = _interopRequireDefault(require("@material-ui/icons/Lock"));
25
+
26
+ var _util = require("@jbrowse/core/util");
27
+
28
+ var _types = require("@jbrowse/core/util/types");
29
+
30
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
31
+
32
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
33
+
34
+ var useStyles = (0, _core.makeStyles)(function () {
35
+ return {
36
+ closeDialog: {
37
+ position: 'absolute',
38
+ right: 0,
39
+ top: 0
40
+ },
41
+ dialogContainer: {
42
+ margin: 15
43
+ },
44
+ lockedPluginTooltip: {
45
+ marginRight: '0.5rem'
46
+ }
47
+ };
48
+ });
49
+
50
+ function LockedPlugin() {
51
+ var classes = useStyles();
52
+ return /*#__PURE__*/_react["default"].createElement(_core.Tooltip, {
53
+ className: classes.lockedPluginTooltip,
54
+ title: "This plugin was installed by an administrator, you cannot remove it."
55
+ }, /*#__PURE__*/_react["default"].createElement(_Lock["default"], null));
56
+ }
57
+
58
+ function PluginDialog(_ref) {
59
+ var _onClose = _ref.onClose,
60
+ plugin = _ref.plugin;
61
+ var classes = useStyles();
62
+ return /*#__PURE__*/_react["default"].createElement(_core.Dialog, {
63
+ open: true,
64
+ onClose: function onClose() {
65
+ return _onClose();
66
+ }
67
+ }, /*#__PURE__*/_react["default"].createElement(_core.DialogTitle, null, /*#__PURE__*/_react["default"].createElement(_core.IconButton, {
68
+ className: classes.closeDialog,
69
+ "aria-label": "close-dialog",
70
+ onClick: function onClick() {
71
+ return _onClose();
72
+ }
73
+ }, /*#__PURE__*/_react["default"].createElement(_Close["default"], null))), /*#__PURE__*/_react["default"].createElement(_core.DialogContent, null, /*#__PURE__*/_react["default"].createElement(_core.Typography, null, "Please confirm that you want to remove ", plugin, ". Note: if any resources in this session still use this plugin, it may cause your session to crash"), /*#__PURE__*/_react["default"].createElement(_core.DialogActions, null, /*#__PURE__*/_react["default"].createElement(_core.Button, {
74
+ variant: "contained",
75
+ color: "primary",
76
+ onClick: function onClick() {
77
+ // avoid showing runtime plugin warning
78
+ window.setTimeout(function () {
79
+ _onClose(plugin);
80
+ }, 500);
81
+ }
82
+ }, "Confirm"), /*#__PURE__*/_react["default"].createElement(_core.Button, {
83
+ variant: "contained",
84
+ color: "secondary",
85
+ onClick: function onClick() {
86
+ _onClose();
87
+ }
88
+ }, "Cancel"))));
89
+ }
90
+
91
+ function InstalledPlugin(_ref2) {
92
+ var plugin = _ref2.plugin,
93
+ model = _ref2.model,
94
+ pluginManager = _ref2.pluginManager;
95
+
96
+ var _useState = (0, _react.useState)(),
97
+ _useState2 = (0, _slicedToArray2["default"])(_useState, 2),
98
+ dialogPlugin = _useState2[0],
99
+ setDialogPlugin = _useState2[1];
100
+
101
+ var session = (0, _util.getSession)(model);
102
+ var _ref3 = session,
103
+ sessionPlugins = _ref3.sessionPlugins;
104
+ var isSessionPlugin = sessionPlugins === null || sessionPlugins === void 0 ? void 0 : sessionPlugins.some(function (p) {
105
+ return pluginManager.pluginMetadata[plugin.name].url === p.url;
106
+ });
107
+ var rootModel = (0, _mobxStateTree.getParent)(model, 3);
108
+ var jbrowse = rootModel.jbrowse,
109
+ adminMode = rootModel.adminMode;
110
+ return /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, dialogPlugin ? /*#__PURE__*/_react["default"].createElement(PluginDialog, {
111
+ plugin: dialogPlugin,
112
+ onClose: function onClose(name) {
113
+ if (name) {
114
+ var pluginMetadata = pluginManager.pluginMetadata[plugin.name];
115
+
116
+ if (adminMode) {
117
+ jbrowse.removePlugin(pluginMetadata);
118
+ } else if ((0, _types.isSessionWithSessionPlugins)(session)) {
119
+ session.removeSessionPlugin(pluginMetadata);
120
+ }
121
+ }
122
+
123
+ setDialogPlugin(undefined);
124
+ }
125
+ }) : null, /*#__PURE__*/_react["default"].createElement(_core.ListItem, {
126
+ key: plugin.name
127
+ }, adminMode || isSessionPlugin ? /*#__PURE__*/_react["default"].createElement(_core.IconButton, {
128
+ "aria-label": "removePlugin",
129
+ "data-testid": "removePlugin-".concat(plugin.name),
130
+ onClick: function onClick() {
131
+ return setDialogPlugin(plugin.name);
132
+ }
133
+ }, /*#__PURE__*/_react["default"].createElement(_Close["default"], null)) : /*#__PURE__*/_react["default"].createElement(LockedPlugin, null), /*#__PURE__*/_react["default"].createElement(_core.Typography, null, plugin.name)));
134
+ }
135
+
136
+ var _default = (0, _mobxReact.observer)(InstalledPlugin);
137
+
138
+ exports["default"] = _default;
@@ -1,9 +1,9 @@
1
- /// <reference types="react" />
2
- import PluginManager from '@jbrowse/core/PluginManager';
3
- import { PluginStoreModel } from '../model';
4
- declare function InstalledPluginsList({ pluginManager, model, }: {
5
- pluginManager: PluginManager;
6
- model: PluginStoreModel;
7
- }): JSX.Element;
8
- declare const _default: typeof InstalledPluginsList;
9
- export default _default;
1
+ /// <reference types="react" />
2
+ import PluginManager from '@jbrowse/core/PluginManager';
3
+ import { PluginStoreModel } from '../model';
4
+ declare function InstalledPluginsList({ pluginManager, model, }: {
5
+ pluginManager: PluginManager;
6
+ model: PluginStoreModel;
7
+ }): JSX.Element;
8
+ declare const _default: typeof InstalledPluginsList;
9
+ export default _default;
@@ -0,0 +1,47 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports["default"] = void 0;
9
+
10
+ var _react = _interopRequireDefault(require("react"));
11
+
12
+ var _mobxReact = require("mobx-react");
13
+
14
+ var _core = require("@material-ui/core");
15
+
16
+ var _InstalledPlugin = _interopRequireDefault(require("./InstalledPlugin"));
17
+
18
+ function InstalledPluginsList(_ref) {
19
+ var pluginManager = _ref.pluginManager,
20
+ model = _ref.model;
21
+ var _ref2 = pluginManager,
22
+ plugins = _ref2.plugins;
23
+ var corePlugins = plugins.filter(function (p) {
24
+ var _pluginManager$plugin;
25
+
26
+ return (_pluginManager$plugin = pluginManager.pluginMetadata[p.name]) === null || _pluginManager$plugin === void 0 ? void 0 : _pluginManager$plugin.isCore;
27
+ }).map(function (p) {
28
+ return p.name;
29
+ });
30
+ var externalPlugins = plugins.filter(function (plugin) {
31
+ return !corePlugins.includes(plugin.name);
32
+ });
33
+ return /*#__PURE__*/_react["default"].createElement(_core.List, null, externalPlugins.length ? externalPlugins.filter(function (plugin) {
34
+ return plugin.name.toLowerCase().includes(model.filterText.toLowerCase());
35
+ }).map(function (plugin) {
36
+ return /*#__PURE__*/_react["default"].createElement(_InstalledPlugin["default"], {
37
+ key: plugin.name,
38
+ plugin: plugin,
39
+ model: model,
40
+ pluginManager: pluginManager
41
+ });
42
+ }) : /*#__PURE__*/_react["default"].createElement(_core.Typography, null, "No plugins currently installed"));
43
+ }
44
+
45
+ var _default = (0, _mobxReact.observer)(InstalledPluginsList);
46
+
47
+ exports["default"] = _default;
@@ -1,10 +1,10 @@
1
- /// <reference types="react" />
2
- import { JBrowsePlugin } from '@jbrowse/core/util/types';
3
- import { PluginStoreModel } from '../model';
4
- declare function PluginCard({ plugin, model, adminMode, }: {
5
- plugin: JBrowsePlugin;
6
- model: PluginStoreModel;
7
- adminMode: boolean;
8
- }): JSX.Element;
9
- declare const _default: typeof PluginCard;
10
- export default _default;
1
+ /// <reference types="react" />
2
+ import { JBrowsePlugin } from '@jbrowse/core/util/types';
3
+ import { PluginStoreModel } from '../model';
4
+ declare function PluginCard({ plugin, model, adminMode, }: {
5
+ plugin: JBrowsePlugin;
6
+ model: PluginStoreModel;
7
+ adminMode: boolean;
8
+ }): JSX.Element;
9
+ declare const _default: typeof PluginCard;
10
+ export default _default;
@@ -0,0 +1,121 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ var _typeof = require("@babel/runtime/helpers/typeof");
6
+
7
+ Object.defineProperty(exports, "__esModule", {
8
+ value: true
9
+ });
10
+ exports["default"] = void 0;
11
+
12
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
13
+
14
+ var _react = _interopRequireWildcard(require("react"));
15
+
16
+ var _mobxReact = require("mobx-react");
17
+
18
+ var _mobxStateTree = require("mobx-state-tree");
19
+
20
+ var _util = require("@jbrowse/core/util");
21
+
22
+ var _types = require("@jbrowse/core/util/types");
23
+
24
+ var _core = require("@material-ui/core");
25
+
26
+ var _Person = _interopRequireDefault(require("@material-ui/icons/Person"));
27
+
28
+ var _Add = _interopRequireDefault(require("@material-ui/icons/Add"));
29
+
30
+ var _Check = _interopRequireDefault(require("@material-ui/icons/Check"));
31
+
32
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
33
+
34
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
35
+
36
+ // icons
37
+ var useStyles = (0, _core.makeStyles)(function () {
38
+ return {
39
+ card: {
40
+ margin: '1em'
41
+ },
42
+ icon: {
43
+ marginLeft: '0.5em',
44
+ marginRight: '0.5em'
45
+ },
46
+ bold: {
47
+ fontWeight: 600
48
+ },
49
+ dataField: {
50
+ display: 'flex',
51
+ alignItems: 'center',
52
+ margin: '0.4em 0em'
53
+ }
54
+ };
55
+ });
56
+
57
+ function PluginCard(_ref) {
58
+ var plugin = _ref.plugin,
59
+ model = _ref.model,
60
+ adminMode = _ref.adminMode;
61
+ var classes = useStyles();
62
+ var session = (0, _util.getSession)(model);
63
+
64
+ var _ref2 = (0, _mobxStateTree.getEnv)(model),
65
+ pluginManager = _ref2.pluginManager;
66
+
67
+ var isInstalled = Boolean(pluginManager.runtimePluginDefinitions.find(function (pluginDefinition) {
68
+ return pluginDefinition.url === plugin.url;
69
+ }));
70
+
71
+ var _useState = (0, _react.useState)(false),
72
+ _useState2 = (0, _slicedToArray2["default"])(_useState, 2),
73
+ tempDisabled = _useState2[0],
74
+ setTempDisabled = _useState2[1];
75
+
76
+ var disableButton = isInstalled || tempDisabled;
77
+ var rootModel = (0, _mobxStateTree.getParent)(model, 3);
78
+ var jbrowse = rootModel.jbrowse;
79
+ return /*#__PURE__*/_react["default"].createElement(_core.Card, {
80
+ variant: "outlined",
81
+ key: plugin.name,
82
+ className: classes.card
83
+ }, /*#__PURE__*/_react["default"].createElement(_core.CardContent, null, /*#__PURE__*/_react["default"].createElement("div", {
84
+ className: classes.dataField
85
+ }, /*#__PURE__*/_react["default"].createElement(_core.Typography, {
86
+ variant: "h5"
87
+ }, /*#__PURE__*/_react["default"].createElement(_core.Link, {
88
+ href: "".concat(plugin.location, "#readme"),
89
+ target: "_blank",
90
+ rel: "noopener"
91
+ }, plugin.name))), /*#__PURE__*/_react["default"].createElement("div", {
92
+ className: classes.dataField
93
+ }, /*#__PURE__*/_react["default"].createElement(_Person["default"], {
94
+ style: {
95
+ marginRight: '0.5em'
96
+ }
97
+ }), /*#__PURE__*/_react["default"].createElement(_core.Typography, null, plugin.authors.join(', '))), /*#__PURE__*/_react["default"].createElement(_core.Typography, {
98
+ className: classes.bold
99
+ }, "Description:"), /*#__PURE__*/_react["default"].createElement(_core.Typography, null, plugin.description)), /*#__PURE__*/_react["default"].createElement(_core.CardActions, null, /*#__PURE__*/_react["default"].createElement(_core.Button, {
100
+ variant: "contained",
101
+ color: "primary",
102
+ disabled: disableButton,
103
+ startIcon: isInstalled ? /*#__PURE__*/_react["default"].createElement(_Check["default"], null) : /*#__PURE__*/_react["default"].createElement(_Add["default"], null),
104
+ onClick: function onClick() {
105
+ if (adminMode) {
106
+ jbrowse.addPlugin({
107
+ name: plugin.name,
108
+ url: plugin.url
109
+ });
110
+ } else if ((0, _types.isSessionWithSessionPlugins)(session)) {
111
+ session.addSessionPlugin(plugin);
112
+ }
113
+
114
+ setTempDisabled(true);
115
+ }
116
+ }, isInstalled ? 'Installed' : 'Install')));
117
+ }
118
+
119
+ var _default = (0, _mobxReact.observer)(PluginCard);
120
+
121
+ exports["default"] = _default;
@@ -1,7 +1,7 @@
1
- /// <reference types="react" />
2
- import { PluginStoreModel } from '../model';
3
- declare function PluginStoreWidget({ model }: {
4
- model: PluginStoreModel;
5
- }): JSX.Element;
6
- declare const _default: typeof PluginStoreWidget;
7
- export default _default;
1
+ /// <reference types="react" />
2
+ import { PluginStoreModel } from '../model';
3
+ declare function PluginStoreWidget({ model }: {
4
+ model: PluginStoreModel;
5
+ }): JSX.Element;
6
+ declare const _default: typeof PluginStoreWidget;
7
+ export default _default;
@@ -0,0 +1,240 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ var _typeof = require("@babel/runtime/helpers/typeof");
6
+
7
+ Object.defineProperty(exports, "__esModule", {
8
+ value: true
9
+ });
10
+ exports["default"] = void 0;
11
+
12
+ var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
13
+
14
+ var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
15
+
16
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
17
+
18
+ var _react = _interopRequireWildcard(require("react"));
19
+
20
+ var _mobxReact = require("mobx-react");
21
+
22
+ var _mobxStateTree = require("mobx-state-tree");
23
+
24
+ var _core = require("@material-ui/core");
25
+
26
+ var _util = require("@jbrowse/core/util");
27
+
28
+ var _ExpandMore = _interopRequireDefault(require("@material-ui/icons/ExpandMore"));
29
+
30
+ var _Clear = _interopRequireDefault(require("@material-ui/icons/Clear"));
31
+
32
+ var _InfoOutlined = _interopRequireDefault(require("@material-ui/icons/InfoOutlined"));
33
+
34
+ var _InstalledPluginsList = _interopRequireDefault(require("./InstalledPluginsList"));
35
+
36
+ var _PluginCard = _interopRequireDefault(require("./PluginCard"));
37
+
38
+ var _CustomPluginForm = _interopRequireDefault(require("./CustomPluginForm"));
39
+
40
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
41
+
42
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
43
+
44
+ // icons
45
+ // locals
46
+ var useStyles = (0, _core.makeStyles)(function (theme) {
47
+ return {
48
+ root: {
49
+ margin: theme.spacing(1)
50
+ },
51
+ expandIcon: {
52
+ color: '#fff'
53
+ },
54
+ adminBadge: {
55
+ margin: '0.5em',
56
+ borderRadius: 3,
57
+ // this is the quaternary color in JB2 palette
58
+ backgroundColor: '#FFB11D',
59
+ padding: '1em',
60
+ display: 'flex',
61
+ alignContent: 'center'
62
+ },
63
+ customPluginButton: {
64
+ margin: '0.5em',
65
+ display: 'flex',
66
+ justifyContent: 'center'
67
+ }
68
+ };
69
+ });
70
+
71
+ function PluginStoreWidget(_ref) {
72
+ var model = _ref.model;
73
+ var classes = useStyles();
74
+
75
+ var _useState = (0, _react.useState)(),
76
+ _useState2 = (0, _slicedToArray2["default"])(_useState, 2),
77
+ pluginArray = _useState2[0],
78
+ setPluginArray = _useState2[1];
79
+
80
+ var _useState3 = (0, _react.useState)(),
81
+ _useState4 = (0, _slicedToArray2["default"])(_useState3, 2),
82
+ error = _useState4[0],
83
+ setError = _useState4[1];
84
+
85
+ var _useState5 = (0, _react.useState)(false),
86
+ _useState6 = (0, _slicedToArray2["default"])(_useState5, 2),
87
+ customPluginFormOpen = _useState6[0],
88
+ setCustomPluginFormOpen = _useState6[1];
89
+
90
+ var _getSession = (0, _util.getSession)(model),
91
+ adminMode = _getSession.adminMode;
92
+
93
+ var _getEnv = (0, _mobxStateTree.getEnv)(model),
94
+ pluginManager = _getEnv.pluginManager;
95
+
96
+ (0, _react.useEffect)(function () {
97
+ var controller = new AbortController();
98
+ var signal = controller.signal;
99
+ (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee() {
100
+ var response, err, array;
101
+ return _regenerator["default"].wrap(function _callee$(_context) {
102
+ while (1) {
103
+ switch (_context.prev = _context.next) {
104
+ case 0:
105
+ _context.prev = 0;
106
+ _context.next = 3;
107
+ return fetch('https://jbrowse.org/plugin-store/plugins.json', {
108
+ signal: signal
109
+ });
110
+
111
+ case 3:
112
+ response = _context.sent;
113
+
114
+ if (response.ok) {
115
+ _context.next = 9;
116
+ break;
117
+ }
118
+
119
+ _context.next = 7;
120
+ return response.text();
121
+
122
+ case 7:
123
+ err = _context.sent;
124
+ throw new Error("Failed to fetch plugin data: ".concat(response.status, " ").concat(response.statusText, " ").concat(err));
125
+
126
+ case 9:
127
+ _context.next = 11;
128
+ return response.json();
129
+
130
+ case 11:
131
+ array = _context.sent;
132
+
133
+ if (!signal.aborted) {
134
+ setPluginArray(array.plugins);
135
+ }
136
+
137
+ _context.next = 19;
138
+ break;
139
+
140
+ case 15:
141
+ _context.prev = 15;
142
+ _context.t0 = _context["catch"](0);
143
+ console.error(_context.t0);
144
+ setError(_context.t0);
145
+
146
+ case 19:
147
+ case "end":
148
+ return _context.stop();
149
+ }
150
+ }
151
+ }, _callee, null, [[0, 15]]);
152
+ }))();
153
+ return function () {
154
+ controller.abort();
155
+ };
156
+ }, []);
157
+ return /*#__PURE__*/_react["default"].createElement("div", {
158
+ className: classes.root
159
+ }, adminMode && /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, !_util.isElectron && /*#__PURE__*/_react["default"].createElement("div", {
160
+ className: classes.adminBadge
161
+ }, /*#__PURE__*/_react["default"].createElement(_InfoOutlined["default"], {
162
+ style: {
163
+ marginRight: '0.3em'
164
+ }
165
+ }), /*#__PURE__*/_react["default"].createElement(_core.Typography, null, "You are using the ", /*#__PURE__*/_react["default"].createElement("code", null, "admin-server"), ". Any changes you make will be saved to your configuration file. You also have the ability to add custom plugins that are not in the store.")), /*#__PURE__*/_react["default"].createElement("div", {
166
+ className: classes.customPluginButton
167
+ }, /*#__PURE__*/_react["default"].createElement(_core.Button, {
168
+ variant: "contained",
169
+ color: "primary",
170
+ onClick: function onClick() {
171
+ return setCustomPluginFormOpen(true);
172
+ }
173
+ }, "Add custom plugin")), /*#__PURE__*/_react["default"].createElement(_CustomPluginForm["default"], {
174
+ open: customPluginFormOpen,
175
+ onClose: function onClose() {
176
+ return setCustomPluginFormOpen(false);
177
+ },
178
+ model: model
179
+ })), /*#__PURE__*/_react["default"].createElement(_core.TextField, {
180
+ label: "Filter plugins",
181
+ value: model.filterText,
182
+ onChange: function onChange(event) {
183
+ return model.setFilterText(event.target.value);
184
+ },
185
+ fullWidth: true,
186
+ InputProps: {
187
+ endAdornment: /*#__PURE__*/_react["default"].createElement(_core.InputAdornment, {
188
+ position: "end"
189
+ }, /*#__PURE__*/_react["default"].createElement(_core.IconButton, {
190
+ color: "secondary",
191
+ onClick: function onClick() {
192
+ return model.clearFilterText();
193
+ }
194
+ }, /*#__PURE__*/_react["default"].createElement(_Clear["default"], null)))
195
+ }
196
+ }), /*#__PURE__*/_react["default"].createElement(_core.Accordion, {
197
+ defaultExpanded: true
198
+ }, /*#__PURE__*/_react["default"].createElement(_core.AccordionSummary, {
199
+ expandIcon: /*#__PURE__*/_react["default"].createElement(_ExpandMore["default"], {
200
+ className: classes.expandIcon
201
+ })
202
+ }, /*#__PURE__*/_react["default"].createElement(_core.Typography, {
203
+ variant: "h5"
204
+ }, "Installed plugins")), /*#__PURE__*/_react["default"].createElement("div", {
205
+ style: {
206
+ margin: '1em'
207
+ }
208
+ }, /*#__PURE__*/_react["default"].createElement(_InstalledPluginsList["default"], {
209
+ pluginManager: pluginManager,
210
+ model: model
211
+ }))), /*#__PURE__*/_react["default"].createElement(_core.Accordion, {
212
+ defaultExpanded: true
213
+ }, /*#__PURE__*/_react["default"].createElement(_core.AccordionSummary, {
214
+ expandIcon: /*#__PURE__*/_react["default"].createElement(_ExpandMore["default"], {
215
+ className: classes.expandIcon
216
+ })
217
+ }, /*#__PURE__*/_react["default"].createElement(_core.Typography, {
218
+ variant: "h5"
219
+ }, "Available plugins")), error ? /*#__PURE__*/_react["default"].createElement(_core.Typography, {
220
+ color: "error"
221
+ }, "".concat(error)) : pluginArray ? pluginArray.filter(function (plugin) {
222
+ // If pugin only has cjsUrl, don't display outside desktop
223
+ if (!_util.isElectron && !(plugin.esmUrl || plugin.url || plugin.umdUrl)) {
224
+ return false;
225
+ }
226
+
227
+ return plugin.name.toLowerCase().includes(model.filterText.toLowerCase());
228
+ }).map(function (plugin) {
229
+ return /*#__PURE__*/_react["default"].createElement(_PluginCard["default"], {
230
+ key: plugin.name,
231
+ plugin: plugin,
232
+ model: model,
233
+ adminMode: !!adminMode
234
+ });
235
+ }) : /*#__PURE__*/_react["default"].createElement(_core.Typography, null, "Loading...")));
236
+ }
237
+
238
+ var _default = (0, _mobxReact.observer)(PluginStoreWidget);
239
+
240
+ exports["default"] = _default;