@jbrowse/plugin-data-management 1.6.7 → 1.7.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 (66) hide show
  1. package/dist/AddConnectionWidget/components/AddConnectionWidget.js +178 -0
  2. package/dist/AddConnectionWidget/components/AddConnectionWidget.test.js +270 -0
  3. package/dist/AddConnectionWidget/components/ConfigureConnection.js +35 -0
  4. package/dist/AddConnectionWidget/components/ConnectionTypeSelect.js +70 -0
  5. package/dist/AddConnectionWidget/index.js +21 -0
  6. package/dist/AddConnectionWidget/model.js +17 -0
  7. package/dist/AddTrackWidget/components/AddTrackWidget.js +215 -0
  8. package/dist/AddTrackWidget/components/AddTrackWidget.test.js +218 -0
  9. package/dist/AddTrackWidget/components/ConfirmTrack.js +277 -0
  10. package/dist/AddTrackWidget/components/TrackSourceSelect.js +60 -0
  11. package/dist/AddTrackWidget/index.js +21 -0
  12. package/dist/AddTrackWidget/index.test.js +291 -0
  13. package/dist/AddTrackWidget/model.js +167 -0
  14. package/dist/AssemblyManager/AssemblyAddForm.js +299 -0
  15. package/dist/AssemblyManager/AssemblyEditor.js +25 -0
  16. package/dist/AssemblyManager/AssemblyManager.js +144 -0
  17. package/dist/AssemblyManager/AssemblyManager.test.js +113 -0
  18. package/dist/AssemblyManager/AssemblyTable.js +92 -0
  19. package/dist/AssemblyManager/index.js +15 -0
  20. package/dist/HierarchicalTrackSelectorWidget/components/CloseConnectionDialog.js +55 -0
  21. package/dist/HierarchicalTrackSelectorWidget/components/DeleteConnectionDialog.js +46 -0
  22. package/dist/HierarchicalTrackSelectorWidget/components/HierarchicalTrackSelector.js +648 -0
  23. package/dist/HierarchicalTrackSelectorWidget/components/HierarchicalTrackSelector.test.js +191 -0
  24. package/dist/HierarchicalTrackSelectorWidget/components/ManageConnectionsDialog.js +80 -0
  25. package/dist/HierarchicalTrackSelectorWidget/components/ToggleConnectionsDialog.js +98 -0
  26. package/dist/HierarchicalTrackSelectorWidget/index.js +21 -0
  27. package/dist/HierarchicalTrackSelectorWidget/model.js +306 -0
  28. package/dist/HierarchicalTrackSelectorWidget/model.test.js +28 -0
  29. package/dist/PluginStoreWidget/components/CustomPluginForm.js +217 -0
  30. package/dist/PluginStoreWidget/components/InstalledPlugin.js +138 -0
  31. package/dist/PluginStoreWidget/components/InstalledPluginsList.js +47 -0
  32. package/dist/PluginStoreWidget/components/PluginCard.js +121 -0
  33. package/dist/PluginStoreWidget/components/PluginStoreWidget.js +240 -0
  34. package/dist/PluginStoreWidget/components/PluginStoreWidget.test.js +201 -0
  35. package/dist/PluginStoreWidget/index.js +29 -0
  36. package/dist/PluginStoreWidget/model.js +28 -0
  37. package/dist/PluginStoreWidget/model.test.js +17 -0
  38. package/dist/SetDefaultSession/SetDefaultSession.js +64 -0
  39. package/dist/SetDefaultSession/SetDefaultSession.test.js +75 -0
  40. package/dist/SetDefaultSession/index.js +15 -0
  41. package/dist/index.js +159 -6
  42. package/dist/index.test.js +56 -0
  43. package/dist/plugin-data-management.cjs.development.js +29 -23
  44. package/dist/plugin-data-management.cjs.development.js.map +1 -1
  45. package/dist/plugin-data-management.cjs.production.min.js +1 -1
  46. package/dist/plugin-data-management.cjs.production.min.js.map +1 -1
  47. package/dist/plugin-data-management.esm.js +29 -23
  48. package/dist/plugin-data-management.esm.js.map +1 -1
  49. package/dist/ucsc-trackhub/configSchema.js +30 -0
  50. package/dist/ucsc-trackhub/index.js +23 -0
  51. package/dist/ucsc-trackhub/model.js +130 -0
  52. package/dist/ucsc-trackhub/ucscAssemblies.js +13 -0
  53. package/dist/ucsc-trackhub/ucscTrackHub.js +503 -0
  54. package/package.json +3 -6
  55. package/src/AddConnectionWidget/components/AddConnectionWidget.test.js +1 -0
  56. package/src/AddTrackWidget/components/AddTrackWidget.test.js +1 -0
  57. package/src/AddTrackWidget/components/AddTrackWidget.tsx +1 -1
  58. package/src/HierarchicalTrackSelectorWidget/components/HierarchicalTrackSelector.js +94 -89
  59. package/src/HierarchicalTrackSelectorWidget/components/HierarchicalTrackSelector.test.js +1 -0
  60. package/src/HierarchicalTrackSelectorWidget/components/__snapshots__/HierarchicalTrackSelector.test.js.snap +2 -2
  61. package/src/PluginStoreWidget/components/CustomPluginForm.tsx +1 -1
  62. package/src/PluginStoreWidget/components/InstalledPlugin.tsx +4 -2
  63. package/src/PluginStoreWidget/components/PluginCard.tsx +4 -2
  64. package/src/PluginStoreWidget/components/PluginStoreWidget.test.js +1 -0
  65. package/src/PluginStoreWidget/model.test.js +1 -0
  66. package/src/SetDefaultSession/SetDefaultSession.tsx +4 -3
@@ -0,0 +1,167 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports["default"] = f;
7
+
8
+ var _mobxStateTree = require("mobx-state-tree");
9
+
10
+ var _mst = require("@jbrowse/core/util/types/mst");
11
+
12
+ var _tracks = require("@jbrowse/core/util/tracks");
13
+
14
+ function isAbsoluteUrl() {
15
+ var url = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';
16
+
17
+ try {
18
+ new URL(url);
19
+ return true;
20
+ } catch (error) {
21
+ return url.startsWith('/');
22
+ }
23
+ }
24
+
25
+ function f(pluginManager) {
26
+ return _mobxStateTree.types.model('AddTrackModel', {
27
+ id: _mst.ElementId,
28
+ type: _mobxStateTree.types.literal('AddTrackWidget'),
29
+ view: _mobxStateTree.types.safeReference(pluginManager.pluggableMstType('view', 'stateModel'))
30
+ })["volatile"](function () {
31
+ return {
32
+ trackSource: 'fromFile',
33
+ trackData: undefined,
34
+ indexTrackData: undefined,
35
+ // alts
36
+ altAssemblyName: '',
37
+ altTrackName: '',
38
+ altTrackType: '',
39
+ adapterHint: ''
40
+ };
41
+ }).actions(function (self) {
42
+ return {
43
+ setAdapterHint: function setAdapterHint(obj) {
44
+ self.adapterHint = obj;
45
+ },
46
+ setTrackSource: function setTrackSource(str) {
47
+ self.trackSource = str;
48
+ },
49
+ setTrackData: function setTrackData(obj) {
50
+ self.trackData = obj;
51
+ },
52
+ setIndexTrackData: function setIndexTrackData(obj) {
53
+ self.indexTrackData = obj;
54
+ },
55
+ setAssembly: function setAssembly(str) {
56
+ self.altAssemblyName = str;
57
+ },
58
+ setTrackName: function setTrackName(str) {
59
+ self.altTrackName = str;
60
+ },
61
+ setTrackType: function setTrackType(str) {
62
+ self.altTrackType = str;
63
+ },
64
+ clearData: function clearData() {
65
+ self.trackSource = '';
66
+ self.altTrackName = '';
67
+ self.altTrackType = '';
68
+ self.altAssemblyName = '';
69
+ self.adapterHint = '';
70
+ self.indexTrackData = undefined;
71
+ self.trackData = undefined;
72
+ }
73
+ };
74
+ }).views(function (self) {
75
+ return {
76
+ get trackAdapter() {
77
+ var trackData = self.trackData,
78
+ indexTrackData = self.indexTrackData,
79
+ adapterHint = self.adapterHint;
80
+ return trackData ? (0, _tracks.guessAdapter)(trackData, indexTrackData, adapterHint, self) : undefined;
81
+ },
82
+
83
+ get trackName() {
84
+ return self.altTrackName || (self.trackData ? (0, _tracks.getFileName)(self.trackData) : '');
85
+ },
86
+
87
+ get isFtp() {
88
+ var _index$uri, _track$uri;
89
+
90
+ var track = self.trackData,
91
+ index = self.indexTrackData;
92
+ return !!( // @ts-ignore
93
+ index !== null && index !== void 0 && (_index$uri = index.uri) !== null && _index$uri !== void 0 && _index$uri.startsWith('ftp://') || track !== null && track !== void 0 && (_track$uri = track.uri) !== null && _track$uri !== void 0 && _track$uri.startsWith('ftp://'));
94
+ },
95
+
96
+ get isRelativeTrackUrl() {
97
+ var _self$trackData;
98
+
99
+ // @ts-ignore
100
+ var uri = (_self$trackData = self.trackData) === null || _self$trackData === void 0 ? void 0 : _self$trackData.uri;
101
+ return uri ? !isAbsoluteUrl(uri) : false;
102
+ },
103
+
104
+ get isRelativeIndexUrl() {
105
+ var _self$indexTrackData;
106
+
107
+ // @ts-ignore
108
+ var uri = (_self$indexTrackData = self.indexTrackData) === null || _self$indexTrackData === void 0 ? void 0 : _self$indexTrackData.uri;
109
+ return uri ? !isAbsoluteUrl(uri) : false;
110
+ },
111
+
112
+ get isRelativeUrl() {
113
+ return this.isRelativeIndexUrl || this.isRelativeTrackUrl;
114
+ },
115
+
116
+ get trackHttp() {
117
+ var _self$trackData2, _self$trackData2$uri;
118
+
119
+ // @ts-ignore
120
+ return (_self$trackData2 = self.trackData) === null || _self$trackData2 === void 0 ? void 0 : (_self$trackData2$uri = _self$trackData2.uri) === null || _self$trackData2$uri === void 0 ? void 0 : _self$trackData2$uri.startsWith('http://');
121
+ },
122
+
123
+ get indexHttp() {
124
+ var _self$indexTrackData2, _self$indexTrackData3;
125
+
126
+ // @ts-ignore
127
+ return (_self$indexTrackData2 = self.indexTrackData) === null || _self$indexTrackData2 === void 0 ? void 0 : (_self$indexTrackData3 = _self$indexTrackData2.uri) === null || _self$indexTrackData3 === void 0 ? void 0 : _self$indexTrackData3.startsWith('http://');
128
+ },
129
+
130
+ get wrongProtocol() {
131
+ return window.location.protocol === 'https:' && (this.trackHttp || this.indexHttp);
132
+ },
133
+
134
+ get unsupported() {
135
+ var _this$trackAdapter;
136
+
137
+ return ((_this$trackAdapter = this.trackAdapter) === null || _this$trackAdapter === void 0 ? void 0 : _this$trackAdapter.type) === _tracks.UNSUPPORTED;
138
+ },
139
+
140
+ get assembly() {
141
+ var _self$view$assemblyNa;
142
+
143
+ return self.altAssemblyName || ((_self$view$assemblyNa = self.view.assemblyNames) === null || _self$view$assemblyNa === void 0 ? void 0 : _self$view$assemblyNa[0]);
144
+ },
145
+
146
+ get trackType() {
147
+ return self.altTrackType || (this.trackAdapter ? (0, _tracks.guessTrackType)(this.trackAdapter.type, self) : '');
148
+ }
149
+
150
+ };
151
+ }).views(function (self) {
152
+ return {
153
+ get warningMessage() {
154
+ if (self.isFtp) {
155
+ return "Warning: JBrowse cannot access files using the ftp protocol";
156
+ } else if (self.isRelativeUrl) {
157
+ return "Warning: one or more of your files do not provide the protocol e.g.\n https://, please provide an absolute URL unless you are sure a\n relative URL is intended.";
158
+ } else if (self.wrongProtocol) {
159
+ return "Warning: You entered a http:// resources but we cannot access HTTP\n resources from JBrowse when it is running on https. Please use an\n https URL for your track, or access the JBrowse app from the http\n protocol";
160
+ }
161
+
162
+ return '';
163
+ }
164
+
165
+ };
166
+ });
167
+ }
@@ -0,0 +1,299 @@
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 _FileSelector = _interopRequireDefault(require("@jbrowse/core/ui/FileSelector"));
19
+
20
+ var _core = require("@material-ui/core");
21
+
22
+ var _Add = _interopRequireDefault(require("@material-ui/icons/Add"));
23
+
24
+ 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); }
25
+
26
+ 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; }
27
+
28
+ var useStyles = (0, _core.makeStyles)(function (theme) {
29
+ return {
30
+ root: {
31
+ flexGrow: 1,
32
+ overflow: 'hidden',
33
+ padding: theme.spacing(0, 3)
34
+ },
35
+ paper: {
36
+ margin: "".concat(theme.spacing(1), "px auto"),
37
+ padding: theme.spacing(2)
38
+ },
39
+ createButton: {
40
+ marginTop: '1em',
41
+ justifyContent: 'center'
42
+ },
43
+ paperContent: {
44
+ flex: 'auto',
45
+ margin: "".concat(theme.spacing(1), "px auto"),
46
+ padding: theme.spacing(1),
47
+ overflow: 'auto'
48
+ }
49
+ };
50
+ });
51
+ var AdapterSelector = (0, _mobxReact.observer)(function (_ref) {
52
+ var adapterSelection = _ref.adapterSelection,
53
+ setAdapterSelection = _ref.setAdapterSelection,
54
+ adapterTypes = _ref.adapterTypes;
55
+ return /*#__PURE__*/_react["default"].createElement(_core.TextField, {
56
+ value: adapterSelection,
57
+ label: "Type",
58
+ select: true,
59
+ helperText: "Type of adapter to use",
60
+ fullWidth: true,
61
+ onChange: function onChange(event) {
62
+ setAdapterSelection(event.target.value);
63
+ }
64
+ }, adapterTypes.map(function (str) {
65
+ return /*#__PURE__*/_react["default"].createElement(_core.MenuItem, {
66
+ key: str,
67
+ value: str
68
+ }, str);
69
+ }));
70
+ });
71
+ var AdapterInput = (0, _mobxReact.observer)(function (_ref2) {
72
+ var adapterSelection = _ref2.adapterSelection,
73
+ fastaLocation = _ref2.fastaLocation,
74
+ setFastaLocation = _ref2.setFastaLocation,
75
+ faiLocation = _ref2.faiLocation,
76
+ setFaiLocation = _ref2.setFaiLocation,
77
+ gziLocation = _ref2.gziLocation,
78
+ setGziLocation = _ref2.setGziLocation,
79
+ twoBitLocation = _ref2.twoBitLocation,
80
+ setTwoBitLocation = _ref2.setTwoBitLocation,
81
+ chromSizesLocation = _ref2.chromSizesLocation,
82
+ setChromSizesLocation = _ref2.setChromSizesLocation;
83
+
84
+ if (adapterSelection === 'IndexedFastaAdapter' || adapterSelection === 'BgzipFastaAdapter') {
85
+ return /*#__PURE__*/_react["default"].createElement(_core.Grid, {
86
+ container: true,
87
+ spacing: 2
88
+ }, /*#__PURE__*/_react["default"].createElement(_core.Grid, {
89
+ item: true
90
+ }, /*#__PURE__*/_react["default"].createElement(_FileSelector["default"], {
91
+ name: "fastaLocation",
92
+ location: fastaLocation,
93
+ setLocation: function setLocation(loc) {
94
+ return setFastaLocation(loc);
95
+ }
96
+ })), /*#__PURE__*/_react["default"].createElement(_core.Grid, {
97
+ item: true
98
+ }, /*#__PURE__*/_react["default"].createElement(_FileSelector["default"], {
99
+ name: "faiLocation",
100
+ location: faiLocation,
101
+ setLocation: function setLocation(loc) {
102
+ return setFaiLocation(loc);
103
+ }
104
+ })), adapterSelection === 'BgzipFastaAdapter' ? /*#__PURE__*/_react["default"].createElement(_core.Grid, {
105
+ item: true
106
+ }, /*#__PURE__*/_react["default"].createElement(_FileSelector["default"], {
107
+ name: "gziLocation",
108
+ location: gziLocation,
109
+ setLocation: function setLocation(loc) {
110
+ return setGziLocation(loc);
111
+ }
112
+ })) : null);
113
+ }
114
+
115
+ if (adapterSelection === 'TwoBitAdapter') {
116
+ return /*#__PURE__*/_react["default"].createElement(_core.Grid, {
117
+ container: true,
118
+ spacing: 2
119
+ }, /*#__PURE__*/_react["default"].createElement(_core.Grid, {
120
+ item: true
121
+ }, /*#__PURE__*/_react["default"].createElement(_FileSelector["default"], {
122
+ name: "twoBitLocation",
123
+ location: twoBitLocation,
124
+ setLocation: function setLocation(loc) {
125
+ return setTwoBitLocation(loc);
126
+ }
127
+ })), /*#__PURE__*/_react["default"].createElement(_core.Grid, {
128
+ item: true
129
+ }, /*#__PURE__*/_react["default"].createElement(_FileSelector["default"], {
130
+ name: "chromSizesLocation (optional, can be added to speed up loading 2bit files with many contigs)",
131
+ location: chromSizesLocation,
132
+ setLocation: function setLocation(loc) {
133
+ return setChromSizesLocation(loc);
134
+ }
135
+ })));
136
+ }
137
+
138
+ return null;
139
+ });
140
+ var blank = {
141
+ uri: ''
142
+ };
143
+ var AssemblyAddForm = (0, _mobxReact.observer)(function (_ref3) {
144
+ var rootModel = _ref3.rootModel,
145
+ setFormOpen = _ref3.setFormOpen;
146
+ var classes = useStyles();
147
+ var adapterTypes = ['IndexedFastaAdapter', 'BgzipFastaAdapter', 'TwoBitAdapter'];
148
+
149
+ var _useState = (0, _react.useState)(''),
150
+ _useState2 = (0, _slicedToArray2["default"])(_useState, 2),
151
+ assemblyName = _useState2[0],
152
+ setAssemblyName = _useState2[1];
153
+
154
+ var _useState3 = (0, _react.useState)(''),
155
+ _useState4 = (0, _slicedToArray2["default"])(_useState3, 2),
156
+ assemblyDisplayName = _useState4[0],
157
+ setAssemblyDisplayName = _useState4[1];
158
+
159
+ var _useState5 = (0, _react.useState)(adapterTypes[0]),
160
+ _useState6 = (0, _slicedToArray2["default"])(_useState5, 2),
161
+ adapterSelection = _useState6[0],
162
+ setAdapterSelection = _useState6[1];
163
+
164
+ var _useState7 = (0, _react.useState)(blank),
165
+ _useState8 = (0, _slicedToArray2["default"])(_useState7, 2),
166
+ fastaLocation = _useState8[0],
167
+ setFastaLocation = _useState8[1];
168
+
169
+ var _useState9 = (0, _react.useState)(blank),
170
+ _useState10 = (0, _slicedToArray2["default"])(_useState9, 2),
171
+ faiLocation = _useState10[0],
172
+ setFaiLocation = _useState10[1];
173
+
174
+ var _useState11 = (0, _react.useState)(blank),
175
+ _useState12 = (0, _slicedToArray2["default"])(_useState11, 2),
176
+ gziLocation = _useState12[0],
177
+ setGziLocation = _useState12[1];
178
+
179
+ var _useState13 = (0, _react.useState)(blank),
180
+ _useState14 = (0, _slicedToArray2["default"])(_useState13, 2),
181
+ twoBitLocation = _useState14[0],
182
+ setTwoBitLocation = _useState14[1];
183
+
184
+ var _useState15 = (0, _react.useState)(blank),
185
+ _useState16 = (0, _slicedToArray2["default"])(_useState15, 2),
186
+ chromSizesLocation = _useState16[0],
187
+ setChromSizesLocation = _useState16[1];
188
+
189
+ function createAssembly() {
190
+ if (assemblyName === '') {
191
+ rootModel.session.notify("Can't create an assembly without a name");
192
+ } else {
193
+ setFormOpen(false);
194
+ var newAssembly;
195
+
196
+ if (adapterSelection === 'IndexedFastaAdapter') {
197
+ newAssembly = {
198
+ name: assemblyName,
199
+ displayName: assemblyDisplayName,
200
+ sequence: {
201
+ adapter: {
202
+ type: 'IndexedFastaAdapter',
203
+ fastaLocation: fastaLocation,
204
+ faiLocation: faiLocation
205
+ }
206
+ }
207
+ };
208
+ } else if (adapterSelection === 'BgzipFastaAdapter') {
209
+ newAssembly = {
210
+ name: assemblyName,
211
+ displayName: assemblyDisplayName,
212
+ sequence: {
213
+ adapter: {
214
+ type: 'BgzipFastaAdapter',
215
+ fastaLocation: fastaLocation,
216
+ faiLocation: faiLocation,
217
+ gziLocation: gziLocation
218
+ }
219
+ }
220
+ };
221
+ } else if (adapterSelection === 'TwoBitAdapter') {
222
+ newAssembly = {
223
+ name: assemblyName,
224
+ displayName: assemblyDisplayName,
225
+ sequence: {
226
+ adapter: {
227
+ type: 'TwoBitAdapter',
228
+ twoBitLocation: twoBitLocation,
229
+ chromSizesLocation: chromSizesLocation
230
+ }
231
+ }
232
+ };
233
+ }
234
+
235
+ rootModel.jbrowse.addAssemblyConf(newAssembly);
236
+ rootModel.session.notify("Successfully added ".concat(assemblyName, " assembly to JBrowse 2"), 'success');
237
+ }
238
+ }
239
+
240
+ return /*#__PURE__*/_react["default"].createElement("div", {
241
+ className: classes.root
242
+ }, /*#__PURE__*/_react["default"].createElement(_core.Paper, {
243
+ className: classes.paper
244
+ }, /*#__PURE__*/_react["default"].createElement(_core.TextField, {
245
+ id: "assembly-name",
246
+ inputProps: {
247
+ 'data-testid': 'assembly-name'
248
+ },
249
+ label: "Assembly name",
250
+ helperText: "The assembly name e.g. hg38",
251
+ variant: "outlined",
252
+ value: assemblyName,
253
+ onChange: function onChange(event) {
254
+ return setAssemblyName(event.target.value);
255
+ }
256
+ }), /*#__PURE__*/_react["default"].createElement(_core.TextField, {
257
+ id: "assembly-name",
258
+ inputProps: {
259
+ 'data-testid': 'assembly-display-name'
260
+ },
261
+ label: "Assembly display name",
262
+ helperText: "A human readable display name for the assembly e.g. \"Homo sapiens (hg38)\"",
263
+ variant: "outlined",
264
+ value: assemblyDisplayName,
265
+ onChange: function onChange(event) {
266
+ return setAssemblyDisplayName(event.target.value);
267
+ }
268
+ }), /*#__PURE__*/_react["default"].createElement(AdapterSelector, {
269
+ adapterSelection: adapterSelection,
270
+ setAdapterSelection: setAdapterSelection,
271
+ adapterTypes: adapterTypes
272
+ }), /*#__PURE__*/_react["default"].createElement("div", {
273
+ className: classes.paperContent
274
+ }, /*#__PURE__*/_react["default"].createElement(AdapterInput, {
275
+ adapterSelection: adapterSelection,
276
+ fastaLocation: fastaLocation,
277
+ setFastaLocation: setFastaLocation,
278
+ faiLocation: faiLocation,
279
+ setFaiLocation: setFaiLocation,
280
+ gziLocation: gziLocation,
281
+ setGziLocation: setGziLocation,
282
+ twoBitLocation: twoBitLocation,
283
+ setTwoBitLocation: setTwoBitLocation,
284
+ chromSizesLocation: chromSizesLocation,
285
+ setChromSizesLocation: setChromSizesLocation
286
+ }))), /*#__PURE__*/_react["default"].createElement(_core.Grid, {
287
+ container: true,
288
+ className: classes.createButton
289
+ }, /*#__PURE__*/_react["default"].createElement(_core.Grid, {
290
+ item: true
291
+ }, /*#__PURE__*/_react["default"].createElement(_core.Button, {
292
+ variant: "contained",
293
+ color: "secondary",
294
+ startIcon: /*#__PURE__*/_react["default"].createElement(_Add["default"], null),
295
+ onClick: createAssembly
296
+ }, "Create new assembly"))));
297
+ });
298
+ var _default = AssemblyAddForm;
299
+ exports["default"] = _default;
@@ -0,0 +1,25 @@
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 _pluginConfig = require("@jbrowse/plugin-config");
15
+
16
+ var AssemblyEditor = (0, _mobxReact.observer)(function (_ref) {
17
+ var assembly = _ref.assembly;
18
+ return /*#__PURE__*/_react["default"].createElement(_pluginConfig.ConfigurationEditor, {
19
+ model: {
20
+ target: assembly
21
+ }
22
+ });
23
+ });
24
+ var _default = AssemblyEditor;
25
+ exports["default"] = _default;
@@ -0,0 +1,144 @@
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 _styles = require("@material-ui/core/styles");
19
+
20
+ var _core = require("@material-ui/core");
21
+
22
+ var _ArrowBackIos = _interopRequireDefault(require("@material-ui/icons/ArrowBackIos"));
23
+
24
+ var _Close = _interopRequireDefault(require("@material-ui/icons/Close"));
25
+
26
+ var _Add = _interopRequireDefault(require("@material-ui/icons/Add"));
27
+
28
+ var _AssemblyTable = _interopRequireDefault(require("./AssemblyTable"));
29
+
30
+ var _AssemblyAddForm = _interopRequireDefault(require("./AssemblyAddForm"));
31
+
32
+ var _AssemblyEditor = _interopRequireDefault(require("./AssemblyEditor"));
33
+
34
+ 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); }
35
+
36
+ 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; }
37
+
38
+ var useStyles = (0, _styles.makeStyles)(function (theme) {
39
+ return {
40
+ titleBox: {
41
+ color: '#fff',
42
+ backgroundColor: theme.palette.primary.main,
43
+ textAlign: 'center'
44
+ },
45
+ dialogContent: {
46
+ width: '100%'
47
+ },
48
+ backButton: {
49
+ color: '#fff',
50
+ position: 'absolute',
51
+ left: theme.spacing(4),
52
+ top: theme.spacing(4)
53
+ },
54
+ closeButton: {
55
+ position: 'absolute',
56
+ right: theme.spacing(1),
57
+ top: theme.spacing(1),
58
+ color: theme.palette.grey[500]
59
+ }
60
+ };
61
+ });
62
+ var AssemblyManager = (0, _mobxReact.observer)(function (_ref) {
63
+ var rootModel = _ref.rootModel,
64
+ _onClose = _ref.onClose;
65
+ var classes = useStyles();
66
+
67
+ var _useState = (0, _react.useState)(false),
68
+ _useState2 = (0, _slicedToArray2["default"])(_useState, 2),
69
+ isFormOpen = _useState2[0],
70
+ setFormOpen = _useState2[1];
71
+
72
+ var _useState3 = (0, _react.useState)(false),
73
+ _useState4 = (0, _slicedToArray2["default"])(_useState3, 2),
74
+ isAssemblyBeingEdited = _useState4[0],
75
+ setIsAssemblyBeingEdited = _useState4[1];
76
+
77
+ var _useState5 = (0, _react.useState)(),
78
+ _useState6 = (0, _slicedToArray2["default"])(_useState5, 2),
79
+ assemblyBeingEdited = _useState6[0],
80
+ setAssemblyBeingEdited = _useState6[1];
81
+
82
+ var showAssemblyTable = !isFormOpen && !isAssemblyBeingEdited;
83
+ return /*#__PURE__*/_react["default"].createElement(_core.Dialog, {
84
+ open: true,
85
+ onClose: function onClose() {
86
+ return _onClose(false);
87
+ }
88
+ }, /*#__PURE__*/_react["default"].createElement(_core.DialogTitle, {
89
+ className: classes.titleBox
90
+ }, showAssemblyTable ? 'Assembly manager' : null, isFormOpen ? /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, /*#__PURE__*/_react["default"].createElement(_core.IconButton, {
91
+ "aria-label": "back",
92
+ className: classes.backButton,
93
+ onClick: function onClick() {
94
+ return setFormOpen(false);
95
+ }
96
+ }, /*#__PURE__*/_react["default"].createElement(_ArrowBackIos["default"], null)), "Add new assembly") : null, isAssemblyBeingEdited ? /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, /*#__PURE__*/_react["default"].createElement(_core.IconButton, {
97
+ "aria-label": "back",
98
+ className: classes.backButton,
99
+ onClick: function onClick() {
100
+ return setIsAssemblyBeingEdited(false);
101
+ }
102
+ }, /*#__PURE__*/_react["default"].createElement(_ArrowBackIos["default"], null)), returnAssemblyName(assemblyBeingEdited)) : null, /*#__PURE__*/_react["default"].createElement(_core.IconButton, {
103
+ "aria-label": "close",
104
+ className: classes.closeButton,
105
+ onClick: function onClick() {
106
+ return _onClose(false);
107
+ }
108
+ }, /*#__PURE__*/_react["default"].createElement(_Close["default"], null))), /*#__PURE__*/_react["default"].createElement(_core.DialogContent, null, /*#__PURE__*/_react["default"].createElement("div", {
109
+ className: classes.dialogContent
110
+ }, showAssemblyTable ? /*#__PURE__*/_react["default"].createElement(_AssemblyTable["default"], {
111
+ rootModel: rootModel,
112
+ setIsAssemblyBeingEdited: setIsAssemblyBeingEdited,
113
+ setAssemblyBeingEdited: setAssemblyBeingEdited
114
+ }) : null, isAssemblyBeingEdited ? /*#__PURE__*/_react["default"].createElement(_AssemblyEditor["default"], {
115
+ assembly: assemblyBeingEdited
116
+ }) : null, isFormOpen ? /*#__PURE__*/_react["default"].createElement(_AssemblyAddForm["default"], {
117
+ rootModel: rootModel,
118
+ setFormOpen: setFormOpen
119
+ }) : null)), /*#__PURE__*/_react["default"].createElement(_core.DialogActions, null, showAssemblyTable ? /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, /*#__PURE__*/_react["default"].createElement(_core.Button, {
120
+ color: "secondary",
121
+ variant: "contained",
122
+ onClick: function onClick() {
123
+ return _onClose(false);
124
+ }
125
+ }, "Close"), /*#__PURE__*/_react["default"].createElement(_core.Button, {
126
+ variant: "contained",
127
+ color: "secondary",
128
+ startIcon: /*#__PURE__*/_react["default"].createElement(_Add["default"], null),
129
+ onClick: function onClick() {
130
+ return setFormOpen(true);
131
+ }
132
+ }, "Add new assembly")) : null));
133
+ }); // eslint-disable-next-line @typescript-eslint/no-explicit-any
134
+
135
+ function returnAssemblyName(assembly) {
136
+ if (assembly !== undefined) {
137
+ return assembly.name;
138
+ }
139
+
140
+ return null;
141
+ }
142
+
143
+ var _default = AssemblyManager;
144
+ exports["default"] = _default;