@jbrowse/plugin-data-management 1.6.9 → 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 (58) 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/ucsc-trackhub/configSchema.js +30 -0
  44. package/dist/ucsc-trackhub/index.js +23 -0
  45. package/dist/ucsc-trackhub/model.js +130 -0
  46. package/dist/ucsc-trackhub/ucscAssemblies.js +13 -0
  47. package/dist/ucsc-trackhub/ucscTrackHub.js +503 -0
  48. package/package.json +3 -6
  49. package/src/AddConnectionWidget/components/AddConnectionWidget.test.js +1 -0
  50. package/src/AddTrackWidget/components/AddTrackWidget.test.js +1 -0
  51. package/src/AddTrackWidget/components/AddTrackWidget.tsx +1 -1
  52. package/src/HierarchicalTrackSelectorWidget/components/HierarchicalTrackSelector.test.js +1 -0
  53. package/src/PluginStoreWidget/components/CustomPluginForm.tsx +1 -1
  54. package/src/PluginStoreWidget/components/InstalledPlugin.tsx +4 -2
  55. package/src/PluginStoreWidget/components/PluginCard.tsx +4 -2
  56. package/src/PluginStoreWidget/components/PluginStoreWidget.test.js +1 -0
  57. package/src/PluginStoreWidget/model.test.js +1 -0
  58. package/src/SetDefaultSession/SetDefaultSession.tsx +4 -3
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+
3
+ var _rootModel = require("@jbrowse/web/src/rootModel");
4
+
5
+ jest.mock('@jbrowse/web/src/makeWorkerInstance', function () {
6
+ return function () {};
7
+ });
8
+ describe('PluginStoreModel', function () {
9
+ it('filters plugins correctly', function () {
10
+ var session = (0, _rootModel.createTestSession)();
11
+ var model = session.addWidget('PluginStoreWidget', 'pluginStoreWidget');
12
+ model.setFilterText('Foo');
13
+ expect(model.filterText).toEqual('Foo');
14
+ model.clearFilterText();
15
+ expect(model.filterText).toEqual('');
16
+ });
17
+ });
@@ -0,0 +1,64 @@
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 _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
11
+
12
+ var _react = _interopRequireDefault(require("react"));
13
+
14
+ var _mobxReact = require("mobx-react");
15
+
16
+ var _core = require("@material-ui/core");
17
+
18
+ function canSetDefaultSession(obj) {
19
+ return (0, _typeof2["default"])(obj) === 'object' && !!obj && 'jbrowse' in obj;
20
+ }
21
+
22
+ var SetDefaultSession = (0, _mobxReact.observer)(function (_ref) {
23
+ var rootModel = _ref.rootModel,
24
+ onClose = _ref.onClose;
25
+
26
+ if (!rootModel) {
27
+ return null;
28
+ }
29
+
30
+ if (!canSetDefaultSession(rootModel)) {
31
+ console.error('Incorrect rootmodel');
32
+ return null;
33
+ }
34
+
35
+ var jbrowse = rootModel.jbrowse,
36
+ session = rootModel.session;
37
+ return /*#__PURE__*/_react["default"].createElement(_core.Dialog, {
38
+ open: true,
39
+ onClose: onClose
40
+ }, /*#__PURE__*/_react["default"].createElement(_core.DialogTitle, null, "Set default session"), /*#__PURE__*/_react["default"].createElement(_core.DialogContent, null, /*#__PURE__*/_react["default"].createElement(_core.Typography, null, "Select \"Set current session as default\" to make your current session saved to the config file. You can also hit \"Clear default session\", which would remove the default session from the config.")), /*#__PURE__*/_react["default"].createElement(_core.DialogActions, null, /*#__PURE__*/_react["default"].createElement(_core.Button, {
41
+ variant: "contained",
42
+ onClick: function onClick() {
43
+ jbrowse.setDefaultSessionConf({
44
+ name: "New session"
45
+ });
46
+ onClose();
47
+ }
48
+ }, "Clear default session"), /*#__PURE__*/_react["default"].createElement(_core.Button, {
49
+ color: "secondary",
50
+ variant: "contained",
51
+ onClick: function onClick() {
52
+ return onClose();
53
+ }
54
+ }, "Cancel"), /*#__PURE__*/_react["default"].createElement(_core.Button, {
55
+ color: "primary",
56
+ variant: "contained",
57
+ onClick: function onClick() {
58
+ jbrowse.setDefaultSessionConf(session);
59
+ onClose();
60
+ }
61
+ }, "Set current session as default")));
62
+ });
63
+ var _default = SetDefaultSession;
64
+ exports["default"] = _default;
@@ -0,0 +1,75 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
6
+
7
+ var _react = _interopRequireDefault(require("react"));
8
+
9
+ var _react2 = require("@testing-library/react");
10
+
11
+ var _SetDefaultSession = _interopRequireDefault(require("./SetDefaultSession"));
12
+
13
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
14
+
15
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
16
+
17
+ var mockRootModel = {
18
+ jbrowse: {
19
+ assemblies: [{
20
+ name: 'testAssembly',
21
+ sequence: {
22
+ type: 'testSequenceTrack',
23
+ trackId: '',
24
+ adapter: {
25
+ type: 'testSeqAdapter',
26
+ twoBitLocation: {
27
+ uri: 'test.2bit',
28
+ locationType: 'UriLocation'
29
+ }
30
+ }
31
+ }
32
+ }],
33
+ setDefaultSessionConf: jest.fn()
34
+ },
35
+ session: {
36
+ savedSessions: [],
37
+ notify: jest.fn()
38
+ }
39
+ };
40
+ describe('SetDefaultSession GUI', function () {
41
+ it('closes when the return button is clicked', function () {
42
+ var onClose = jest.fn();
43
+
44
+ var _render = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_SetDefaultSession["default"], {
45
+ rootModel: mockRootModel,
46
+ onClose: onClose
47
+ })),
48
+ getByText = _render.getByText;
49
+
50
+ _react2.fireEvent.click(getByText('Cancel'));
51
+
52
+ expect(onClose).toHaveBeenCalled();
53
+ });
54
+ it('unsets to the default session with reset button', function () {
55
+ var MockSession = _objectSpread(_objectSpread({}, mockRootModel), {}, {
56
+ session: _objectSpread(_objectSpread({}, mockRootModel.session), {}, {
57
+ name: "Moo session",
58
+ savedSessions: [],
59
+ notify: jest.fn()
60
+ })
61
+ });
62
+
63
+ var _render2 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_SetDefaultSession["default"], {
64
+ rootModel: MockSession,
65
+ onClose: function onClose() {}
66
+ })),
67
+ getByText = _render2.getByText;
68
+
69
+ _react2.fireEvent.click(getByText('Clear default session'));
70
+
71
+ expect(MockSession.jbrowse.setDefaultSessionConf).toHaveBeenCalledWith({
72
+ name: "New session"
73
+ });
74
+ });
75
+ });
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ Object.defineProperty(exports, "default", {
9
+ enumerable: true,
10
+ get: function get() {
11
+ return _SetDefaultSession["default"];
12
+ }
13
+ });
14
+
15
+ var _SetDefaultSession = _interopRequireDefault(require("./SetDefaultSession"));
package/dist/index.js CHANGED
@@ -1,8 +1,161 @@
1
+ "use strict";
1
2
 
2
- 'use strict'
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
3
4
 
4
- if (process.env.NODE_ENV === 'production') {
5
- module.exports = require('./plugin-data-management.cjs.production.min.js')
6
- } else {
7
- module.exports = require('./plugin-data-management.cjs.development.js')
8
- }
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports["default"] = exports.SetDefaultSession = exports.AssemblyManager = void 0;
9
+
10
+ var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
11
+
12
+ var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
13
+
14
+ var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
15
+
16
+ var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));
17
+
18
+ var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
19
+
20
+ var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
21
+
22
+ var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
23
+
24
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
25
+
26
+ var _react = require("react");
27
+
28
+ var _ConnectionType = _interopRequireDefault(require("@jbrowse/core/pluggableElementTypes/ConnectionType"));
29
+
30
+ var _WidgetType = _interopRequireDefault(require("@jbrowse/core/pluggableElementTypes/WidgetType"));
31
+
32
+ var _Plugin2 = _interopRequireDefault(require("@jbrowse/core/Plugin"));
33
+
34
+ var _ucscTrackhub = require("./ucsc-trackhub");
35
+
36
+ var _AddTrackWidget = require("./AddTrackWidget");
37
+
38
+ var _AddConnectionWidget = require("./AddConnectionWidget");
39
+
40
+ var _HierarchicalTrackSelectorWidget = require("./HierarchicalTrackSelectorWidget");
41
+
42
+ var _PluginStoreWidget = require("./PluginStoreWidget");
43
+
44
+ function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2["default"])(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2["default"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2["default"])(this, result); }; }
45
+
46
+ function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
47
+
48
+ 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); }
49
+
50
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || (0, _typeof2["default"])(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; }
51
+
52
+ var SetDefaultSession = /*#__PURE__*/(0, _react.lazy)(function () {
53
+ return Promise.resolve().then(function () {
54
+ return _interopRequireWildcard(require('./SetDefaultSession'));
55
+ });
56
+ });
57
+ exports.SetDefaultSession = SetDefaultSession;
58
+ var AssemblyManager = /*#__PURE__*/(0, _react.lazy)(function () {
59
+ return Promise.resolve().then(function () {
60
+ return _interopRequireWildcard(require('./AssemblyManager'));
61
+ });
62
+ });
63
+ exports.AssemblyManager = AssemblyManager;
64
+
65
+ var _default = /*#__PURE__*/function (_Plugin) {
66
+ (0, _inherits2["default"])(_default, _Plugin);
67
+
68
+ var _super = _createSuper(_default);
69
+
70
+ function _default() {
71
+ var _this;
72
+
73
+ (0, _classCallCheck2["default"])(this, _default);
74
+
75
+ for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
76
+ args[_key] = arguments[_key];
77
+ }
78
+
79
+ _this = _super.call.apply(_super, [this].concat(args));
80
+ (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "name", 'DataManagementPlugin');
81
+ (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "exports", {
82
+ AssemblyManager: AssemblyManager,
83
+ SetDefaultSession: SetDefaultSession
84
+ });
85
+ return _this;
86
+ }
87
+
88
+ (0, _createClass2["default"])(_default, [{
89
+ key: "install",
90
+ value: function install(pluginManager) {
91
+ pluginManager.addConnectionType(function () {
92
+ return new _ConnectionType["default"]({
93
+ name: 'UCSCTrackHubConnection',
94
+ configSchema: _ucscTrackhub.configSchema,
95
+ stateModel: (0, _ucscTrackhub.modelFactory)(pluginManager),
96
+ displayName: 'UCSC Track Hub',
97
+ description: 'A track or assembly hub in the Track Hub format',
98
+ url: '//genome.ucsc.edu/goldenPath/help/hgTrackHubHelp.html#Intro'
99
+ });
100
+ });
101
+ pluginManager.addWidgetType(function () {
102
+ return new _WidgetType["default"]({
103
+ name: 'HierarchicalTrackSelectorWidget',
104
+ heading: 'Available tracks',
105
+ configSchema: _HierarchicalTrackSelectorWidget.configSchema,
106
+ stateModel: (0, _HierarchicalTrackSelectorWidget.stateModelFactory)(pluginManager),
107
+ ReactComponent: /*#__PURE__*/(0, _react.lazy)(function () {
108
+ return Promise.resolve().then(function () {
109
+ return _interopRequireWildcard(require('./HierarchicalTrackSelectorWidget/components/HierarchicalTrackSelector'));
110
+ });
111
+ })
112
+ });
113
+ });
114
+ pluginManager.addWidgetType(function () {
115
+ return new _WidgetType["default"]({
116
+ name: 'AddTrackWidget',
117
+ heading: 'Add a track',
118
+ configSchema: _AddTrackWidget.configSchema,
119
+ stateModel: (0, _AddTrackWidget.stateModelFactory)(pluginManager),
120
+ ReactComponent: /*#__PURE__*/(0, _react.lazy)(function () {
121
+ return Promise.resolve().then(function () {
122
+ return _interopRequireWildcard(require('./AddTrackWidget/components/AddTrackWidget'));
123
+ });
124
+ })
125
+ });
126
+ });
127
+ pluginManager.addWidgetType(function () {
128
+ return new _WidgetType["default"]({
129
+ name: 'AddConnectionWidget',
130
+ heading: 'Add a connection',
131
+ configSchema: _AddConnectionWidget.configSchema,
132
+ stateModel: _AddConnectionWidget.stateModel,
133
+ ReactComponent: /*#__PURE__*/(0, _react.lazy)(function () {
134
+ return Promise.resolve().then(function () {
135
+ return _interopRequireWildcard(require('./AddConnectionWidget/components/AddConnectionWidget'));
136
+ });
137
+ })
138
+ });
139
+ });
140
+ pluginManager.addWidgetType(function () {
141
+ return new _WidgetType["default"]({
142
+ name: 'PluginStoreWidget',
143
+ heading: 'Plugin store',
144
+ configSchema: _PluginStoreWidget.configSchema,
145
+ stateModel: (0, _PluginStoreWidget.stateModelFactory)(pluginManager),
146
+ ReactComponent: /*#__PURE__*/(0, _react.lazy)(function () {
147
+ return Promise.resolve().then(function () {
148
+ return _interopRequireWildcard(require('./PluginStoreWidget/components/PluginStoreWidget'));
149
+ });
150
+ })
151
+ });
152
+ });
153
+ }
154
+ }, {
155
+ key: "configure",
156
+ value: function configure(pluginManager) {}
157
+ }]);
158
+ return _default;
159
+ }(_Plugin2["default"]);
160
+
161
+ exports["default"] = _default;
@@ -0,0 +1,56 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ var _PluginManager = _interopRequireDefault(require("@jbrowse/core/PluginManager"));
6
+
7
+ var _pluginConfig = _interopRequireDefault(require("@jbrowse/plugin-config"));
8
+
9
+ var _mobxStateTree = require("mobx-state-tree");
10
+
11
+ var _ = _interopRequireDefault(require("."));
12
+
13
+ describe('Data management', function () {
14
+ var pluginManager;
15
+ beforeAll(function () {
16
+ var originalConsoleWarn = console.warn;
17
+ console.warn = jest.fn();
18
+ pluginManager = new _PluginManager["default"]([new _["default"](), new _pluginConfig["default"]()]);
19
+ pluginManager.createPluggableElements();
20
+ pluginManager.configure();
21
+ console.warn = originalConsoleWarn;
22
+ });
23
+ it("won't add if already added", function () {
24
+ expect(function () {
25
+ return pluginManager.addPlugin(new _["default"]());
26
+ }).toThrow(/JBrowse already configured, cannot add plugins/);
27
+ });
28
+ it('adds track add widget', function () {
29
+ var AddTrackWidget = pluginManager.getWidgetType('AddTrackWidget');
30
+ var config = AddTrackWidget.configSchema.create({
31
+ type: 'AddTrackWidget'
32
+ });
33
+ expect((0, _mobxStateTree.getSnapshot)(config)).toMatchSnapshot();
34
+ });
35
+ it('adds config editor widget', function () {
36
+ var ConfigurationEditorWidget = pluginManager.getWidgetType('ConfigurationEditorWidget');
37
+ var config = ConfigurationEditorWidget.configSchema.create({
38
+ type: 'ConfigurationEditorWidget'
39
+ });
40
+ expect((0, _mobxStateTree.getSnapshot)(config)).toMatchSnapshot();
41
+ });
42
+ it('adds connection add widget', function () {
43
+ var AddConnectionWidget = pluginManager.getWidgetType('AddConnectionWidget');
44
+ var config = AddConnectionWidget.configSchema.create({
45
+ type: 'AddConnectionWidget'
46
+ });
47
+ expect((0, _mobxStateTree.getSnapshot)(config)).toMatchSnapshot();
48
+ });
49
+ it('adds hierarchical track selector', function () {
50
+ var HierarchicalTrackSelectorWidget = pluginManager.getWidgetType('HierarchicalTrackSelectorWidget');
51
+ var config = HierarchicalTrackSelectorWidget.configSchema.create({
52
+ type: 'HierarchicalTrackSelectorWidget'
53
+ });
54
+ expect((0, _mobxStateTree.getSnapshot)(config)).toMatchSnapshot();
55
+ });
56
+ });
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports["default"] = void 0;
7
+
8
+ var _models = require("@jbrowse/core/pluggableElementTypes/models");
9
+
10
+ var _configuration = require("@jbrowse/core/configuration");
11
+
12
+ var _default = (0, _configuration.ConfigurationSchema)('UCSCTrackHubConnection', {
13
+ hubTxtLocation: {
14
+ type: 'fileLocation',
15
+ defaultValue: {
16
+ uri: 'http://mysite.com/path/to/hub.txt',
17
+ locationType: 'UriLocation'
18
+ },
19
+ description: 'location of the hub file (usually called hub.txt)'
20
+ },
21
+ assemblyNames: {
22
+ type: 'stringArray',
23
+ defaultValue: [],
24
+ description: 'optional list of genomes to import from this track hub, if empty all genomes will be imported'
25
+ }
26
+ }, {
27
+ baseConfiguration: _models.baseConnectionConfig
28
+ });
29
+
30
+ exports["default"] = _default;
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ Object.defineProperty(exports, "configSchema", {
9
+ enumerable: true,
10
+ get: function get() {
11
+ return _configSchema["default"];
12
+ }
13
+ });
14
+ Object.defineProperty(exports, "modelFactory", {
15
+ enumerable: true,
16
+ get: function get() {
17
+ return _model["default"];
18
+ }
19
+ });
20
+
21
+ var _model = _interopRequireDefault(require("./model"));
22
+
23
+ var _configSchema = _interopRequireDefault(require("./configSchema"));
@@ -0,0 +1,130 @@
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"] = UCSCTrackHubConnection;
9
+
10
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
11
+
12
+ var _models = require("@jbrowse/core/pluggableElementTypes/models");
13
+
14
+ var _configuration = require("@jbrowse/core/configuration");
15
+
16
+ var _util = require("@jbrowse/core/util");
17
+
18
+ var _mobxStateTree = require("mobx-state-tree");
19
+
20
+ var _configSchema = _interopRequireDefault(require("./configSchema"));
21
+
22
+ var _ucscTrackHub = require("./ucscTrackHub");
23
+
24
+ function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; }
25
+
26
+ function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
27
+
28
+ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
29
+
30
+ function UCSCTrackHubConnection(pluginManager) {
31
+ return _mobxStateTree.types.compose('UCSCTrackHubConnection', (0, _models.BaseConnectionModelFactory)(pluginManager), _mobxStateTree.types.model({
32
+ configuration: (0, _configuration.ConfigurationReference)(_configSchema["default"]),
33
+ type: _mobxStateTree.types.literal('UCSCTrackHubConnection')
34
+ }).actions(function (self) {
35
+ return {
36
+ connect: function connect() {
37
+ var connectionName = (0, _configuration.getConf)(self, 'name');
38
+ var hubFileLocation = (0, _configuration.getConf)(self, 'hubTxtLocation');
39
+ var session = (0, _util.getSession)(self);
40
+ (0, _ucscTrackHub.fetchHubFile)(hubFileLocation).then(function (hubFile) {
41
+ var genomesFileLocation = hubFileLocation.uri ? {
42
+ uri: new URL(hubFile.get('genomesFile'), hubFileLocation.uri).href,
43
+ locationType: 'UriLocation'
44
+ } : {
45
+ localPath: hubFile.get('genomesFile'),
46
+ locationType: 'LocalPathLocation'
47
+ };
48
+ return Promise.all([hubFile, (0, _ucscTrackHub.fetchGenomesFile)(genomesFileLocation)]);
49
+ }).then(function (_ref) {
50
+ var _ref2 = (0, _slicedToArray2["default"])(_ref, 2),
51
+ hubFile = _ref2[0],
52
+ genomesFile = _ref2[1];
53
+
54
+ var trackDbData = [];
55
+
56
+ var _iterator = _createForOfIteratorHelper(genomesFile),
57
+ _step;
58
+
59
+ try {
60
+ var _loop = function _loop() {
61
+ var _step$value = (0, _slicedToArray2["default"])(_step.value, 2),
62
+ genomeName = _step$value[0],
63
+ genome = _step$value[1];
64
+
65
+ var assemblyNames = (0, _configuration.getConf)(self, 'assemblyNames');
66
+
67
+ if (assemblyNames.length > 0 && !assemblyNames.includes(genomeName)) {
68
+ return "break";
69
+ }
70
+
71
+ var assemblyConf = session.assemblies.find(function (assembly) {
72
+ return (0, _configuration.readConfObject)(assembly, 'name') === genomeName;
73
+ });
74
+
75
+ if (!assemblyConf) {
76
+ throw new Error("Cannot find assembly for \"".concat(genomeName, "\" from the genomes file for connection \"").concat(connectionName, "\""));
77
+ }
78
+
79
+ var trackDbFileLocation = hubFileLocation.uri ? {
80
+ uri: new URL(genome.get('trackDb'), new URL(hubFile.get('genomesFile'), hubFileLocation.uri)).href,
81
+ locationType: 'UriLocation'
82
+ } : {
83
+ localPath: genome.get('trackDb'),
84
+ locationType: 'LocalPathLocation'
85
+ };
86
+ trackDbData.push(Promise.all([trackDbFileLocation, (0, _ucscTrackHub.fetchTrackDbFile)(trackDbFileLocation), genomeName, assemblyConf]));
87
+ };
88
+
89
+ for (_iterator.s(); !(_step = _iterator.n()).done;) {
90
+ var _ret = _loop();
91
+
92
+ if (_ret === "break") break;
93
+ }
94
+ } catch (err) {
95
+ _iterator.e(err);
96
+ } finally {
97
+ _iterator.f();
98
+ }
99
+
100
+ return Promise.all([].concat(trackDbData));
101
+ }).then(function (trackDbData) {
102
+ var _iterator2 = _createForOfIteratorHelper(trackDbData),
103
+ _step2;
104
+
105
+ try {
106
+ for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
107
+ var _step2$value = (0, _slicedToArray2["default"])(_step2.value, 4),
108
+ trackDbFileLocation = _step2$value[0],
109
+ trackDbFile = _step2$value[1],
110
+ genomeName = _step2$value[2],
111
+ assemblyConf = _step2$value[3];
112
+
113
+ var sequenceAdapter = (0, _configuration.readConfObject)(assemblyConf, ['sequence', 'adapter']);
114
+ var tracks = (0, _ucscTrackHub.generateTracks)(trackDbFile, trackDbFileLocation, genomeName, sequenceAdapter);
115
+ self.addTrackConfs(tracks);
116
+ }
117
+ } catch (err) {
118
+ _iterator2.e(err);
119
+ } finally {
120
+ _iterator2.f();
121
+ }
122
+ })["catch"](function (error) {
123
+ console.error(error);
124
+ session.notify("There was a problem connecting to the UCSC Track Hub \"".concat(self.name, "\". Please make sure you have entered a valid hub.txt file. The error that was thrown is: \"").concat(error, "\""), 'error');
125
+ session.breakConnection(self.configuration);
126
+ });
127
+ }
128
+ };
129
+ }));
130
+ }
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports["default"] = void 0;
7
+
8
+ // These are the assemblies for which there is a sequence file located at
9
+ // http://hgdownload.soe.ucsc.edu/goldenPath/${assemblyName}/bigZips/${assemblyName}.2bit
10
+ // This list was generated by `getUcscAssemblies.js`
11
+ var _default = "ailMel1\nallMis1\nanoCar1\nanoCar2\nanoGam1\nanoGam3\napiMel1\napiMel2\naplCal1\naptMan1\naquChr2\nbalAcu1\nbisBis1\nbosTau2\nbosTau3\nbosTau4\nbosTau6\nbosTau7\nbosTau8\nbraFlo1\ncaeJap1\ncaePb1\ncaePb2\ncaeRem2\ncaeRem3\ncalJac1\ncalJac3\ncalMil1\ncanFam1\ncanFam3\ncavPor3\ncb3\nce10\nce11\nce2\nce4\nce6\ncerSim1\nchlSab2\nchoHof1\nchrPic1\nci1\nci2\nci3\ncriGri1\ncriGriChoV1\ndanRer10\ndanRer11\ndanRer3\ndanRer4\ndanRer5\ndanRer6\ndanRer7\ndasNov3\ndipOrd1\ndm1\ndm2\ndm3\ndm6\ndp2\ndp3\ndroAna1\ndroAna2\ndroEre1\ndroGri1\ndroMoj1\ndroMoj2\ndroPer1\ndroSec1\ndroSim1\ndroVir1\ndroVir2\ndroYak1\ndroYak2\neboVir3\nechTel1\nechTel2\nequCab1\nequCab2\neriEur1\neriEur2\nfelCat3\nfelCat4\nfelCat5\nfelCat8\nfr1\nfr2\nfr3\ngadMor1\ngalGal2\ngalGal3\ngalGal4\ngalGal5\ngalGal6\ngalVar1\ngasAcu1\ngeoFor1\ngorGor3\ngorGor4\ngorGor5\nhetGla1\nhetGla2\nhg16\nhg18\nhg19\nhg38\nlatCha1\nloxAfr3\nmacEug2\nmacFas5\nmanPen1\nmelGal1\nmelGal5\nmelUnd1\nmicMur1\nmicMur2\nmm10\nmm7\nmm8\nmm9\nmonDom2\nmonDom4\nmonDom5\nmusFur1\nmyoLuc2\nnanPar1\nnasLar1\nnomLeu1\nnomLeu2\nnomLeu3\nochPri2\nochPri3\noreNil2\nornAna1\nornAna2\noryCun2\noryLat2\notoGar3\noviAri1\noviAri3\noviAri4\npanPan1\npanPan2\npanTro1\npanTro2\npanTro3\npanTro4\npanTro5\npanTro6\npapAnu2\npapHam1\npetMar1\npetMar2\nponAbe2\nponAbe3\npriPac1\nproCap1\npteVam1\nrheMac2\nrheMac3\nrheMac8\nrhiRox1\nrn4\nrn5\nrn6\nsacCer1\nsacCer2\nsacCer3\nsaiBol1\nsarHar1\nsorAra1\nsorAra2\nspeTri2\nstrPur1\nstrPur2\nsusScr11\nsusScr2\nsusScr3\ntaeGut1\ntaeGut2\ntarSyr1\ntarSyr2\ntetNig1\ntetNig2\nthaSir1\ntriMan1\ntupBel1\nturTru2\nventer1\nvicPac1\nvicPac2\nxenLae2\nxenTro1\nxenTro2\nxenTro3\nxenTro7\nxenTro9".split(/\r?\n/);
12
+
13
+ exports["default"] = _default;