@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.
- package/dist/AddConnectionWidget/components/AddConnectionWidget.js +178 -0
- package/dist/AddConnectionWidget/components/AddConnectionWidget.test.js +270 -0
- package/dist/AddConnectionWidget/components/ConfigureConnection.js +35 -0
- package/dist/AddConnectionWidget/components/ConnectionTypeSelect.js +70 -0
- package/dist/AddConnectionWidget/index.js +21 -0
- package/dist/AddConnectionWidget/model.js +17 -0
- package/dist/AddTrackWidget/components/AddTrackWidget.js +215 -0
- package/dist/AddTrackWidget/components/AddTrackWidget.test.js +218 -0
- package/dist/AddTrackWidget/components/ConfirmTrack.js +277 -0
- package/dist/AddTrackWidget/components/TrackSourceSelect.js +60 -0
- package/dist/AddTrackWidget/index.js +21 -0
- package/dist/AddTrackWidget/index.test.js +291 -0
- package/dist/AddTrackWidget/model.js +167 -0
- package/dist/AssemblyManager/AssemblyAddForm.js +299 -0
- package/dist/AssemblyManager/AssemblyEditor.js +25 -0
- package/dist/AssemblyManager/AssemblyManager.js +144 -0
- package/dist/AssemblyManager/AssemblyManager.test.js +113 -0
- package/dist/AssemblyManager/AssemblyTable.js +92 -0
- package/dist/AssemblyManager/index.js +15 -0
- package/dist/HierarchicalTrackSelectorWidget/components/CloseConnectionDialog.js +55 -0
- package/dist/HierarchicalTrackSelectorWidget/components/DeleteConnectionDialog.js +46 -0
- package/dist/HierarchicalTrackSelectorWidget/components/HierarchicalTrackSelector.js +648 -0
- package/dist/HierarchicalTrackSelectorWidget/components/HierarchicalTrackSelector.test.js +191 -0
- package/dist/HierarchicalTrackSelectorWidget/components/ManageConnectionsDialog.js +80 -0
- package/dist/HierarchicalTrackSelectorWidget/components/ToggleConnectionsDialog.js +98 -0
- package/dist/HierarchicalTrackSelectorWidget/index.js +21 -0
- package/dist/HierarchicalTrackSelectorWidget/model.js +306 -0
- package/dist/HierarchicalTrackSelectorWidget/model.test.js +28 -0
- package/dist/PluginStoreWidget/components/CustomPluginForm.js +217 -0
- package/dist/PluginStoreWidget/components/InstalledPlugin.js +138 -0
- package/dist/PluginStoreWidget/components/InstalledPluginsList.js +47 -0
- package/dist/PluginStoreWidget/components/PluginCard.js +121 -0
- package/dist/PluginStoreWidget/components/PluginStoreWidget.js +240 -0
- package/dist/PluginStoreWidget/components/PluginStoreWidget.test.js +201 -0
- package/dist/PluginStoreWidget/index.js +29 -0
- package/dist/PluginStoreWidget/model.js +28 -0
- package/dist/PluginStoreWidget/model.test.js +17 -0
- package/dist/SetDefaultSession/SetDefaultSession.js +64 -0
- package/dist/SetDefaultSession/SetDefaultSession.test.js +75 -0
- package/dist/SetDefaultSession/index.js +15 -0
- package/dist/index.js +159 -6
- package/dist/index.test.js +56 -0
- package/dist/ucsc-trackhub/configSchema.js +30 -0
- package/dist/ucsc-trackhub/index.js +23 -0
- package/dist/ucsc-trackhub/model.js +130 -0
- package/dist/ucsc-trackhub/ucscAssemblies.js +13 -0
- package/dist/ucsc-trackhub/ucscTrackHub.js +503 -0
- package/package.json +3 -6
- package/src/AddConnectionWidget/components/AddConnectionWidget.test.js +1 -0
- package/src/AddTrackWidget/components/AddTrackWidget.test.js +1 -0
- package/src/AddTrackWidget/components/AddTrackWidget.tsx +1 -1
- package/src/HierarchicalTrackSelectorWidget/components/HierarchicalTrackSelector.test.js +1 -0
- package/src/PluginStoreWidget/components/CustomPluginForm.tsx +1 -1
- package/src/PluginStoreWidget/components/InstalledPlugin.tsx +4 -2
- package/src/PluginStoreWidget/components/PluginCard.tsx +4 -2
- package/src/PluginStoreWidget/components/PluginStoreWidget.test.js +1 -0
- package/src/PluginStoreWidget/model.test.js +1 -0
- package/src/SetDefaultSession/SetDefaultSession.tsx +4 -3
|
@@ -0,0 +1,648 @@
|
|
|
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 _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
|
|
11
|
+
|
|
12
|
+
var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
|
|
13
|
+
|
|
14
|
+
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
15
|
+
|
|
16
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
17
|
+
|
|
18
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
19
|
+
|
|
20
|
+
var _core = require("@material-ui/core");
|
|
21
|
+
|
|
22
|
+
var _Clear = _interopRequireDefault(require("@material-ui/icons/Clear"));
|
|
23
|
+
|
|
24
|
+
var _Add = _interopRequireDefault(require("@material-ui/icons/Add"));
|
|
25
|
+
|
|
26
|
+
var _ArrowDropDown = _interopRequireDefault(require("@material-ui/icons/ArrowDropDown"));
|
|
27
|
+
|
|
28
|
+
var _ArrowRight = _interopRequireDefault(require("@material-ui/icons/ArrowRight"));
|
|
29
|
+
|
|
30
|
+
var _Menu = _interopRequireDefault(require("@material-ui/icons/Menu"));
|
|
31
|
+
|
|
32
|
+
var _MoreHoriz = _interopRequireDefault(require("@material-ui/icons/MoreHoriz"));
|
|
33
|
+
|
|
34
|
+
var _Icons = require("@jbrowse/core/ui/Icons");
|
|
35
|
+
|
|
36
|
+
var _reactVirtualizedAutoSizer = _interopRequireDefault(require("react-virtualized-auto-sizer"));
|
|
37
|
+
|
|
38
|
+
var _Menu2 = _interopRequireDefault(require("@jbrowse/core/ui/Menu"));
|
|
39
|
+
|
|
40
|
+
var _util = require("@jbrowse/core/util");
|
|
41
|
+
|
|
42
|
+
var _configuration = require("@jbrowse/core/configuration");
|
|
43
|
+
|
|
44
|
+
var _mobxReact = require("mobx-react");
|
|
45
|
+
|
|
46
|
+
var _reactVtree = require("react-vtree");
|
|
47
|
+
|
|
48
|
+
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; }
|
|
49
|
+
|
|
50
|
+
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; }
|
|
51
|
+
|
|
52
|
+
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); }
|
|
53
|
+
|
|
54
|
+
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; }
|
|
55
|
+
|
|
56
|
+
var CloseConnectionDialog = /*#__PURE__*/(0, _react.lazy)(function () {
|
|
57
|
+
return Promise.resolve().then(function () {
|
|
58
|
+
return _interopRequireWildcard(require('./CloseConnectionDialog'));
|
|
59
|
+
});
|
|
60
|
+
});
|
|
61
|
+
var DeleteConnectionDialog = /*#__PURE__*/(0, _react.lazy)(function () {
|
|
62
|
+
return Promise.resolve().then(function () {
|
|
63
|
+
return _interopRequireWildcard(require('./DeleteConnectionDialog'));
|
|
64
|
+
});
|
|
65
|
+
});
|
|
66
|
+
var ManageConnectionsDialog = /*#__PURE__*/(0, _react.lazy)(function () {
|
|
67
|
+
return Promise.resolve().then(function () {
|
|
68
|
+
return _interopRequireWildcard(require('./ManageConnectionsDialog'));
|
|
69
|
+
});
|
|
70
|
+
});
|
|
71
|
+
var ToggleConnectionsDialog = /*#__PURE__*/(0, _react.lazy)(function () {
|
|
72
|
+
return Promise.resolve().then(function () {
|
|
73
|
+
return _interopRequireWildcard(require('./ToggleConnectionsDialog'));
|
|
74
|
+
});
|
|
75
|
+
});
|
|
76
|
+
var useStyles = (0, _core.makeStyles)(function (theme) {
|
|
77
|
+
var _theme$palette$tertia, _theme$palette$tertia2;
|
|
78
|
+
|
|
79
|
+
return {
|
|
80
|
+
searchBox: {
|
|
81
|
+
margin: theme.spacing(2)
|
|
82
|
+
},
|
|
83
|
+
menuIcon: {
|
|
84
|
+
marginRight: theme.spacing(1),
|
|
85
|
+
marginBottom: 0
|
|
86
|
+
},
|
|
87
|
+
fab: {
|
|
88
|
+
position: 'absolute',
|
|
89
|
+
bottom: theme.spacing(6),
|
|
90
|
+
right: theme.spacing(6)
|
|
91
|
+
},
|
|
92
|
+
compactCheckbox: {
|
|
93
|
+
padding: 0
|
|
94
|
+
},
|
|
95
|
+
checkboxLabel: {
|
|
96
|
+
marginRight: 0,
|
|
97
|
+
'&:hover': {
|
|
98
|
+
backgroundColor: '#eee'
|
|
99
|
+
}
|
|
100
|
+
},
|
|
101
|
+
// this accordionBase element's small padding is used to give a margin to
|
|
102
|
+
// accordionColor it a "margin" because the virtualized elements can't really
|
|
103
|
+
// use margin in a conventional way (it doesn't affect layout)
|
|
104
|
+
accordionBase: {
|
|
105
|
+
display: 'flex'
|
|
106
|
+
},
|
|
107
|
+
accordionCard: {
|
|
108
|
+
padding: 3,
|
|
109
|
+
cursor: 'pointer',
|
|
110
|
+
display: 'flex'
|
|
111
|
+
},
|
|
112
|
+
nestingLevelMarker: {
|
|
113
|
+
position: 'absolute',
|
|
114
|
+
borderLeft: '1.5px solid #555'
|
|
115
|
+
},
|
|
116
|
+
// accordionColor set's display:flex so that the child accordionText use
|
|
117
|
+
// vertically centered text
|
|
118
|
+
accordionColor: {
|
|
119
|
+
background: (_theme$palette$tertia = theme.palette.tertiary) === null || _theme$palette$tertia === void 0 ? void 0 : _theme$palette$tertia.main,
|
|
120
|
+
color: (_theme$palette$tertia2 = theme.palette.tertiary) === null || _theme$palette$tertia2 === void 0 ? void 0 : _theme$palette$tertia2.contrastText,
|
|
121
|
+
width: '100%',
|
|
122
|
+
display: 'flex',
|
|
123
|
+
paddingLeft: 5
|
|
124
|
+
},
|
|
125
|
+
// margin:auto 0 to center text vertically
|
|
126
|
+
accordionText: {
|
|
127
|
+
margin: 'auto 0'
|
|
128
|
+
}
|
|
129
|
+
};
|
|
130
|
+
}); // An individual node in the track selector. Note: manually sets cursor:
|
|
131
|
+
// pointer improves usability for what can be clicked
|
|
132
|
+
|
|
133
|
+
var Node = function Node(props) {
|
|
134
|
+
var data = props.data,
|
|
135
|
+
isOpen = props.isOpen,
|
|
136
|
+
style = props.style,
|
|
137
|
+
setOpen = props.setOpen;
|
|
138
|
+
var isLeaf = data.isLeaf,
|
|
139
|
+
nestingLevel = data.nestingLevel,
|
|
140
|
+
checked = data.checked,
|
|
141
|
+
id = data.id,
|
|
142
|
+
name = data.name,
|
|
143
|
+
_onChange = data.onChange,
|
|
144
|
+
toggleCollapse = data.toggleCollapse,
|
|
145
|
+
conf = data.conf,
|
|
146
|
+
onMoreInfo = data.onMoreInfo,
|
|
147
|
+
drawerPosition = data.drawerPosition;
|
|
148
|
+
var classes = useStyles();
|
|
149
|
+
var width = 10;
|
|
150
|
+
var marginLeft = nestingLevel * width + (isLeaf ? width : 0);
|
|
151
|
+
var unsupported = name && (name.endsWith('(Unsupported)') || name.endsWith('(Unknown)'));
|
|
152
|
+
var description = conf && (0, _configuration.readConfObject)(conf, ['description']) || '';
|
|
153
|
+
return /*#__PURE__*/_react["default"].createElement("div", {
|
|
154
|
+
style: style,
|
|
155
|
+
className: !isLeaf ? classes.accordionBase : undefined
|
|
156
|
+
}, new Array(nestingLevel).fill(0).map(function (_, idx) {
|
|
157
|
+
return /*#__PURE__*/_react["default"].createElement("div", {
|
|
158
|
+
key: "mark-".concat(idx),
|
|
159
|
+
style: {
|
|
160
|
+
left: idx * width + 4,
|
|
161
|
+
height: style.height
|
|
162
|
+
},
|
|
163
|
+
className: classes.nestingLevelMarker
|
|
164
|
+
});
|
|
165
|
+
}), /*#__PURE__*/_react["default"].createElement("div", {
|
|
166
|
+
className: !isLeaf ? classes.accordionCard : undefined,
|
|
167
|
+
onClick: function onClick() {
|
|
168
|
+
toggleCollapse(id);
|
|
169
|
+
setOpen(!isOpen);
|
|
170
|
+
},
|
|
171
|
+
style: {
|
|
172
|
+
marginLeft: marginLeft,
|
|
173
|
+
whiteSpace: 'nowrap',
|
|
174
|
+
width: '100%'
|
|
175
|
+
}
|
|
176
|
+
}, /*#__PURE__*/_react["default"].createElement("div", {
|
|
177
|
+
className: !isLeaf ? classes.accordionColor : undefined
|
|
178
|
+
}, !isLeaf ? /*#__PURE__*/_react["default"].createElement("div", {
|
|
179
|
+
className: classes.accordionText
|
|
180
|
+
}, /*#__PURE__*/_react["default"].createElement(_core.Typography, null, isOpen ? /*#__PURE__*/_react["default"].createElement(_ArrowDropDown["default"], null) : /*#__PURE__*/_react["default"].createElement(_ArrowRight["default"], null), name)) : /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, /*#__PURE__*/_react["default"].createElement(_core.Tooltip, {
|
|
181
|
+
title: description,
|
|
182
|
+
placement: drawerPosition === 'left' ? 'right' : 'left'
|
|
183
|
+
}, /*#__PURE__*/_react["default"].createElement(_core.FormControlLabel, {
|
|
184
|
+
className: classes.checkboxLabel,
|
|
185
|
+
control: /*#__PURE__*/_react["default"].createElement(_core.Checkbox, {
|
|
186
|
+
className: classes.compactCheckbox,
|
|
187
|
+
checked: checked,
|
|
188
|
+
onChange: function onChange() {
|
|
189
|
+
return _onChange(id);
|
|
190
|
+
},
|
|
191
|
+
color: "primary",
|
|
192
|
+
disabled: unsupported,
|
|
193
|
+
inputProps: {
|
|
194
|
+
'data-testid': "htsTrackEntry-".concat(id)
|
|
195
|
+
}
|
|
196
|
+
}),
|
|
197
|
+
label: name
|
|
198
|
+
})), /*#__PURE__*/_react["default"].createElement(_core.IconButton, {
|
|
199
|
+
onClick: function onClick(e) {
|
|
200
|
+
return onMoreInfo({
|
|
201
|
+
target: e.currentTarget,
|
|
202
|
+
id: id,
|
|
203
|
+
conf: conf
|
|
204
|
+
});
|
|
205
|
+
},
|
|
206
|
+
color: "secondary",
|
|
207
|
+
"data-testid": "htsTrackEntryMenu-".concat(id)
|
|
208
|
+
}, /*#__PURE__*/_react["default"].createElement(_MoreHoriz["default"], null))))));
|
|
209
|
+
};
|
|
210
|
+
|
|
211
|
+
var getNodeData = function getNodeData(node, nestingLevel, extra) {
|
|
212
|
+
var isLeaf = !!node.conf;
|
|
213
|
+
return {
|
|
214
|
+
data: _objectSpread(_objectSpread({
|
|
215
|
+
defaultHeight: isLeaf ? 22 : 40,
|
|
216
|
+
isLeaf: isLeaf,
|
|
217
|
+
isOpenByDefault: true,
|
|
218
|
+
nestingLevel: nestingLevel
|
|
219
|
+
}, node), extra),
|
|
220
|
+
nestingLevel: nestingLevel,
|
|
221
|
+
node: node
|
|
222
|
+
};
|
|
223
|
+
}; // this is the main tree component for the hierarchical track selector in note:
|
|
224
|
+
// in jbrowse-web the toolbar is position="sticky" which means the autosizer
|
|
225
|
+
// includes the height of the toolbar, so we subtract the given offsets
|
|
226
|
+
|
|
227
|
+
|
|
228
|
+
var HierarchicalTree = (0, _mobxReact.observer)(function (_ref) {
|
|
229
|
+
var _session$getTrackActi;
|
|
230
|
+
|
|
231
|
+
var height = _ref.height,
|
|
232
|
+
tree = _ref.tree,
|
|
233
|
+
model = _ref.model;
|
|
234
|
+
var filterText = model.filterText,
|
|
235
|
+
view = model.view;
|
|
236
|
+
var treeRef = (0, _react.useRef)(null);
|
|
237
|
+
|
|
238
|
+
var _useState = (0, _react.useState)(),
|
|
239
|
+
_useState2 = (0, _slicedToArray2["default"])(_useState, 2),
|
|
240
|
+
info = _useState2[0],
|
|
241
|
+
setMoreInfo = _useState2[1];
|
|
242
|
+
|
|
243
|
+
var session = (0, _util.getSession)(model);
|
|
244
|
+
var drawerPosition = session.drawerPosition;
|
|
245
|
+
var extra = (0, _react.useMemo)(function () {
|
|
246
|
+
return {
|
|
247
|
+
onChange: function onChange(trackId) {
|
|
248
|
+
return view.toggleTrack(trackId);
|
|
249
|
+
},
|
|
250
|
+
toggleCollapse: function toggleCollapse(pathName) {
|
|
251
|
+
return model.toggleCategory(pathName);
|
|
252
|
+
},
|
|
253
|
+
onMoreInfo: setMoreInfo,
|
|
254
|
+
drawerPosition: drawerPosition
|
|
255
|
+
};
|
|
256
|
+
}, [view, model, drawerPosition]);
|
|
257
|
+
var treeWalker = (0, _react.useCallback)( /*#__PURE__*/_regenerator["default"].mark(function treeWalker() {
|
|
258
|
+
var i, parentMeta, _i, curr;
|
|
259
|
+
|
|
260
|
+
return _regenerator["default"].wrap(function treeWalker$(_context) {
|
|
261
|
+
while (1) {
|
|
262
|
+
switch (_context.prev = _context.next) {
|
|
263
|
+
case 0:
|
|
264
|
+
i = 0;
|
|
265
|
+
|
|
266
|
+
case 1:
|
|
267
|
+
if (!(i < tree.children.length)) {
|
|
268
|
+
_context.next = 7;
|
|
269
|
+
break;
|
|
270
|
+
}
|
|
271
|
+
|
|
272
|
+
_context.next = 4;
|
|
273
|
+
return getNodeData(tree.children[i], 0, extra);
|
|
274
|
+
|
|
275
|
+
case 4:
|
|
276
|
+
i++;
|
|
277
|
+
_context.next = 1;
|
|
278
|
+
break;
|
|
279
|
+
|
|
280
|
+
case 7:
|
|
281
|
+
if (!true) {
|
|
282
|
+
_context.next = 21;
|
|
283
|
+
break;
|
|
284
|
+
}
|
|
285
|
+
|
|
286
|
+
_context.next = 10;
|
|
287
|
+
return;
|
|
288
|
+
|
|
289
|
+
case 10:
|
|
290
|
+
parentMeta = _context.sent;
|
|
291
|
+
_i = 0;
|
|
292
|
+
|
|
293
|
+
case 12:
|
|
294
|
+
if (!(_i < parentMeta.node.children.length)) {
|
|
295
|
+
_context.next = 19;
|
|
296
|
+
break;
|
|
297
|
+
}
|
|
298
|
+
|
|
299
|
+
curr = parentMeta.node.children[_i];
|
|
300
|
+
_context.next = 16;
|
|
301
|
+
return getNodeData(curr, parentMeta.nestingLevel + 1, extra);
|
|
302
|
+
|
|
303
|
+
case 16:
|
|
304
|
+
_i++;
|
|
305
|
+
_context.next = 12;
|
|
306
|
+
break;
|
|
307
|
+
|
|
308
|
+
case 19:
|
|
309
|
+
_context.next = 7;
|
|
310
|
+
break;
|
|
311
|
+
|
|
312
|
+
case 21:
|
|
313
|
+
case "end":
|
|
314
|
+
return _context.stop();
|
|
315
|
+
}
|
|
316
|
+
}
|
|
317
|
+
}, treeWalker);
|
|
318
|
+
}), [tree, extra]);
|
|
319
|
+
var conf = info === null || info === void 0 ? void 0 : info.conf;
|
|
320
|
+
var menuItems = conf && ((_session$getTrackActi = session.getTrackActionMenuItems) === null || _session$getTrackActi === void 0 ? void 0 : _session$getTrackActi.call(session, conf)) || [];
|
|
321
|
+
(0, _react.useEffect)(function () {
|
|
322
|
+
treeRef.current.recomputeTree({
|
|
323
|
+
refreshNodes: true,
|
|
324
|
+
useDefaultHeight: true
|
|
325
|
+
});
|
|
326
|
+
}, [tree, filterText]);
|
|
327
|
+
return /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, /*#__PURE__*/_react["default"].createElement(_reactVtree.VariableSizeTree, {
|
|
328
|
+
ref: treeRef,
|
|
329
|
+
treeWalker: treeWalker,
|
|
330
|
+
height: height
|
|
331
|
+
}, Node), /*#__PURE__*/_react["default"].createElement(_Menu2["default"], {
|
|
332
|
+
anchorEl: info === null || info === void 0 ? void 0 : info.target,
|
|
333
|
+
menuItems: menuItems,
|
|
334
|
+
onMenuItemClick: function onMenuItemClick(_event, callback) {
|
|
335
|
+
callback();
|
|
336
|
+
setMoreInfo(undefined);
|
|
337
|
+
},
|
|
338
|
+
open: Boolean(info),
|
|
339
|
+
onClose: function onClose() {
|
|
340
|
+
return setMoreInfo(undefined);
|
|
341
|
+
}
|
|
342
|
+
}));
|
|
343
|
+
}); // Don't use autosizer in jest and instead hardcode a height, otherwise fails
|
|
344
|
+
// jest tests
|
|
345
|
+
|
|
346
|
+
var AutoSizedHierarchicalTree = function AutoSizedHierarchicalTree(_ref2) {
|
|
347
|
+
var tree = _ref2.tree,
|
|
348
|
+
model = _ref2.model,
|
|
349
|
+
offset = _ref2.offset;
|
|
350
|
+
return typeof jest === 'undefined' ? /*#__PURE__*/_react["default"].createElement(_reactVirtualizedAutoSizer["default"], {
|
|
351
|
+
disableWidth: true
|
|
352
|
+
}, function (_ref3) {
|
|
353
|
+
var height = _ref3.height;
|
|
354
|
+
return /*#__PURE__*/_react["default"].createElement(HierarchicalTree, {
|
|
355
|
+
height: height - offset,
|
|
356
|
+
model: model,
|
|
357
|
+
tree: tree
|
|
358
|
+
});
|
|
359
|
+
}) : /*#__PURE__*/_react["default"].createElement(HierarchicalTree, {
|
|
360
|
+
height: 9000,
|
|
361
|
+
model: model,
|
|
362
|
+
tree: tree
|
|
363
|
+
});
|
|
364
|
+
};
|
|
365
|
+
|
|
366
|
+
var Wrapper = function Wrapper(_ref4) {
|
|
367
|
+
var overrideDimensions = _ref4.overrideDimensions,
|
|
368
|
+
children = _ref4.children;
|
|
369
|
+
return overrideDimensions ? /*#__PURE__*/_react["default"].createElement("div", {
|
|
370
|
+
style: _objectSpread({}, overrideDimensions)
|
|
371
|
+
}, children) : /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, children);
|
|
372
|
+
};
|
|
373
|
+
|
|
374
|
+
var HierarchicalTrackSelectorContainer = (0, _mobxReact.observer)(function (_ref5) {
|
|
375
|
+
var model = _ref5.model,
|
|
376
|
+
toolbarHeight = _ref5.toolbarHeight,
|
|
377
|
+
overrideDimensions = _ref5.overrideDimensions;
|
|
378
|
+
var classes = useStyles();
|
|
379
|
+
var session = (0, _util.getSession)(model);
|
|
380
|
+
|
|
381
|
+
var _useState3 = (0, _react.useState)(null),
|
|
382
|
+
_useState4 = (0, _slicedToArray2["default"])(_useState3, 2),
|
|
383
|
+
anchorEl = _useState4[0],
|
|
384
|
+
setAnchorEl = _useState4[1];
|
|
385
|
+
|
|
386
|
+
function handleFabClose() {
|
|
387
|
+
setAnchorEl(null);
|
|
388
|
+
}
|
|
389
|
+
|
|
390
|
+
return /*#__PURE__*/_react["default"].createElement(Wrapper, {
|
|
391
|
+
overrideDimensions: overrideDimensions
|
|
392
|
+
}, /*#__PURE__*/_react["default"].createElement(HierarchicalTrackSelector, {
|
|
393
|
+
model: model,
|
|
394
|
+
toolbarHeight: toolbarHeight,
|
|
395
|
+
overrideDimensions: overrideDimensions
|
|
396
|
+
}), session.addConnectionConf || session.addTrackConf ? /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, /*#__PURE__*/_react["default"].createElement(_core.Fab, {
|
|
397
|
+
color: "secondary",
|
|
398
|
+
className: classes.fab,
|
|
399
|
+
onClick: function onClick(event) {
|
|
400
|
+
setAnchorEl(event.currentTarget);
|
|
401
|
+
}
|
|
402
|
+
}, /*#__PURE__*/_react["default"].createElement(_Add["default"], null)), /*#__PURE__*/_react["default"].createElement(_core.Menu, {
|
|
403
|
+
anchorEl: anchorEl,
|
|
404
|
+
open: Boolean(anchorEl),
|
|
405
|
+
onClose: function onClose() {
|
|
406
|
+
return setAnchorEl(null);
|
|
407
|
+
}
|
|
408
|
+
}, session.addConnectionConf ? /*#__PURE__*/_react["default"].createElement(_core.MenuItem, {
|
|
409
|
+
onClick: function onClick() {
|
|
410
|
+
handleFabClose();
|
|
411
|
+
var widget = session.addWidget('AddConnectionWidget', 'addConnectionWidget');
|
|
412
|
+
session.showWidget(widget);
|
|
413
|
+
}
|
|
414
|
+
}, "Add connection") : null, session.addTrackConf ? /*#__PURE__*/_react["default"].createElement(_core.MenuItem, {
|
|
415
|
+
onClick: function onClick() {
|
|
416
|
+
handleFabClose();
|
|
417
|
+
var widget = session.addWidget('AddTrackWidget', 'addTrackWidget', {
|
|
418
|
+
view: model.view.id
|
|
419
|
+
});
|
|
420
|
+
session.showWidget(widget);
|
|
421
|
+
}
|
|
422
|
+
}, "Add track") : null)) : null);
|
|
423
|
+
});
|
|
424
|
+
var HierarchicalTrackSelectorHeader = (0, _mobxReact.observer)(function (_ref6) {
|
|
425
|
+
var model = _ref6.model,
|
|
426
|
+
setHeaderHeight = _ref6.setHeaderHeight,
|
|
427
|
+
setAssemblyIdx = _ref6.setAssemblyIdx,
|
|
428
|
+
assemblyIdx = _ref6.assemblyIdx;
|
|
429
|
+
var classes = useStyles();
|
|
430
|
+
var session = (0, _util.getSession)(model);
|
|
431
|
+
|
|
432
|
+
var _useState5 = (0, _react.useState)(),
|
|
433
|
+
_useState6 = (0, _slicedToArray2["default"])(_useState5, 2),
|
|
434
|
+
connectionAnchorEl = _useState6[0],
|
|
435
|
+
setConnectionAnchorEl = _useState6[1];
|
|
436
|
+
|
|
437
|
+
var _useState7 = (0, _react.useState)(),
|
|
438
|
+
_useState8 = (0, _slicedToArray2["default"])(_useState7, 2),
|
|
439
|
+
menuAnchorEl = _useState8[0],
|
|
440
|
+
setMenuAnchorEl = _useState8[1];
|
|
441
|
+
|
|
442
|
+
var _useState9 = (0, _react.useState)(),
|
|
443
|
+
_useState10 = (0, _slicedToArray2["default"])(_useState9, 2),
|
|
444
|
+
modalInfo = _useState10[0],
|
|
445
|
+
setModalInfo = _useState10[1];
|
|
446
|
+
|
|
447
|
+
var _useState11 = (0, _react.useState)(),
|
|
448
|
+
_useState12 = (0, _slicedToArray2["default"])(_useState11, 2),
|
|
449
|
+
deleteDialogDetails = _useState12[0],
|
|
450
|
+
setDeleteDialogDetails = _useState12[1];
|
|
451
|
+
|
|
452
|
+
var _useState13 = (0, _react.useState)(false),
|
|
453
|
+
_useState14 = (0, _slicedToArray2["default"])(_useState13, 2),
|
|
454
|
+
connectionManagerOpen = _useState14[0],
|
|
455
|
+
setConnectionManagerOpen = _useState14[1];
|
|
456
|
+
|
|
457
|
+
var _useState15 = (0, _react.useState)(false),
|
|
458
|
+
_useState16 = (0, _slicedToArray2["default"])(_useState15, 2),
|
|
459
|
+
connectionToggleOpen = _useState16[0],
|
|
460
|
+
setConnectionToggleOpen = _useState16[1];
|
|
461
|
+
|
|
462
|
+
var assemblyNames = model.assemblyNames;
|
|
463
|
+
var assemblyName = assemblyNames[assemblyIdx];
|
|
464
|
+
|
|
465
|
+
function breakConnection(connectionConf, deletingConnection) {
|
|
466
|
+
var name = (0, _configuration.readConfObject)(connectionConf, 'name');
|
|
467
|
+
var result = session.prepareToBreakConnection(connectionConf);
|
|
468
|
+
|
|
469
|
+
if (result) {
|
|
470
|
+
var _result = (0, _slicedToArray2["default"])(result, 2),
|
|
471
|
+
safelyBreakConnection = _result[0],
|
|
472
|
+
dereferenceTypeCount = _result[1];
|
|
473
|
+
|
|
474
|
+
if (Object.keys(dereferenceTypeCount).length > 0) {
|
|
475
|
+
setModalInfo({
|
|
476
|
+
connectionConf: connectionConf,
|
|
477
|
+
safelyBreakConnection: safelyBreakConnection,
|
|
478
|
+
dereferenceTypeCount: dereferenceTypeCount,
|
|
479
|
+
name: name
|
|
480
|
+
});
|
|
481
|
+
} else {
|
|
482
|
+
safelyBreakConnection();
|
|
483
|
+
}
|
|
484
|
+
}
|
|
485
|
+
|
|
486
|
+
if (deletingConnection) {
|
|
487
|
+
setDeleteDialogDetails({
|
|
488
|
+
name: name,
|
|
489
|
+
connectionConf: connectionConf
|
|
490
|
+
});
|
|
491
|
+
}
|
|
492
|
+
}
|
|
493
|
+
|
|
494
|
+
var connectionMenuItems = [{
|
|
495
|
+
label: 'Turn on/off connections...',
|
|
496
|
+
onClick: function onClick() {
|
|
497
|
+
return setConnectionToggleOpen(true);
|
|
498
|
+
}
|
|
499
|
+
}];
|
|
500
|
+
|
|
501
|
+
if (session.addConnectionConf) {
|
|
502
|
+
connectionMenuItems.unshift({
|
|
503
|
+
label: 'Add connection',
|
|
504
|
+
onClick: function onClick() {
|
|
505
|
+
session.showWidget(session.addWidget('AddConnectionWidget', 'addConnectionWidget'));
|
|
506
|
+
}
|
|
507
|
+
});
|
|
508
|
+
connectionMenuItems.push({
|
|
509
|
+
label: 'Delete connections...',
|
|
510
|
+
onClick: function onClick() {
|
|
511
|
+
return setConnectionManagerOpen(true);
|
|
512
|
+
}
|
|
513
|
+
});
|
|
514
|
+
}
|
|
515
|
+
|
|
516
|
+
var assemblyMenuItems = assemblyNames.length > 1 ? [{
|
|
517
|
+
label: 'Select assembly...',
|
|
518
|
+
subMenu: assemblyNames.map(function (name, idx) {
|
|
519
|
+
return {
|
|
520
|
+
label: name,
|
|
521
|
+
onClick: function onClick() {
|
|
522
|
+
setAssemblyIdx(idx);
|
|
523
|
+
}
|
|
524
|
+
};
|
|
525
|
+
})
|
|
526
|
+
}] : [];
|
|
527
|
+
var menuItems = [{
|
|
528
|
+
label: 'Add track...',
|
|
529
|
+
onClick: function onClick() {
|
|
530
|
+
session.showWidget(session.addWidget('AddTrackWidget', 'addTrackWidget', {
|
|
531
|
+
view: model.view.id
|
|
532
|
+
}));
|
|
533
|
+
}
|
|
534
|
+
}].concat(assemblyMenuItems);
|
|
535
|
+
return /*#__PURE__*/_react["default"].createElement("div", {
|
|
536
|
+
ref: function ref(_ref7) {
|
|
537
|
+
return setHeaderHeight((_ref7 === null || _ref7 === void 0 ? void 0 : _ref7.getBoundingClientRect().height) || 0);
|
|
538
|
+
},
|
|
539
|
+
"data-testid": "hierarchical_track_selector"
|
|
540
|
+
}, /*#__PURE__*/_react["default"].createElement("div", {
|
|
541
|
+
style: {
|
|
542
|
+
display: 'flex'
|
|
543
|
+
}
|
|
544
|
+
}, session.addTrackConf && /*#__PURE__*/_react["default"].createElement(_core.IconButton, {
|
|
545
|
+
className: classes.menuIcon,
|
|
546
|
+
onClick: function onClick(event) {
|
|
547
|
+
setMenuAnchorEl(event.currentTarget);
|
|
548
|
+
}
|
|
549
|
+
}, /*#__PURE__*/_react["default"].createElement(_Menu["default"], null)), session.makeConnection && /*#__PURE__*/_react["default"].createElement(_core.IconButton, {
|
|
550
|
+
className: classes.menuIcon,
|
|
551
|
+
onClick: function onClick(event) {
|
|
552
|
+
setConnectionAnchorEl(event.currentTarget);
|
|
553
|
+
}
|
|
554
|
+
}, /*#__PURE__*/_react["default"].createElement(_Icons.Cable, null)), /*#__PURE__*/_react["default"].createElement(_core.TextField, {
|
|
555
|
+
className: classes.searchBox,
|
|
556
|
+
label: "Filter tracks",
|
|
557
|
+
value: model.filterText,
|
|
558
|
+
onChange: function onChange(event) {
|
|
559
|
+
return model.setFilterText(event.target.value);
|
|
560
|
+
},
|
|
561
|
+
fullWidth: true,
|
|
562
|
+
InputProps: {
|
|
563
|
+
endAdornment: /*#__PURE__*/_react["default"].createElement(_core.InputAdornment, {
|
|
564
|
+
position: "end"
|
|
565
|
+
}, /*#__PURE__*/_react["default"].createElement(_core.IconButton, {
|
|
566
|
+
color: "secondary",
|
|
567
|
+
onClick: model.clearFilterText
|
|
568
|
+
}, /*#__PURE__*/_react["default"].createElement(_Clear["default"], null)))
|
|
569
|
+
}
|
|
570
|
+
})), /*#__PURE__*/_react["default"].createElement(_Menu2["default"], {
|
|
571
|
+
anchorEl: connectionAnchorEl,
|
|
572
|
+
open: Boolean(connectionAnchorEl),
|
|
573
|
+
onMenuItemClick: function onMenuItemClick(_, callback) {
|
|
574
|
+
callback();
|
|
575
|
+
setConnectionAnchorEl(undefined);
|
|
576
|
+
},
|
|
577
|
+
onClose: function onClose() {
|
|
578
|
+
return setConnectionAnchorEl(undefined);
|
|
579
|
+
},
|
|
580
|
+
menuItems: connectionMenuItems
|
|
581
|
+
}), /*#__PURE__*/_react["default"].createElement(_Menu2["default"], {
|
|
582
|
+
anchorEl: menuAnchorEl,
|
|
583
|
+
open: Boolean(menuAnchorEl),
|
|
584
|
+
onMenuItemClick: function onMenuItemClick(_, callback) {
|
|
585
|
+
callback();
|
|
586
|
+
setMenuAnchorEl(undefined);
|
|
587
|
+
},
|
|
588
|
+
onClose: function onClose() {
|
|
589
|
+
return setMenuAnchorEl(undefined);
|
|
590
|
+
},
|
|
591
|
+
menuItems: menuItems
|
|
592
|
+
}), /*#__PURE__*/_react["default"].createElement(_react.Suspense, {
|
|
593
|
+
fallback: /*#__PURE__*/_react["default"].createElement("div", null)
|
|
594
|
+
}, modalInfo ? /*#__PURE__*/_react["default"].createElement(CloseConnectionDialog, {
|
|
595
|
+
modalInfo: modalInfo,
|
|
596
|
+
setModalInfo: setModalInfo,
|
|
597
|
+
session: session
|
|
598
|
+
}) : deleteDialogDetails ? /*#__PURE__*/_react["default"].createElement(DeleteConnectionDialog, {
|
|
599
|
+
handleClose: function handleClose() {
|
|
600
|
+
return setDeleteDialogDetails(undefined);
|
|
601
|
+
},
|
|
602
|
+
deleteDialogDetails: deleteDialogDetails,
|
|
603
|
+
session: session
|
|
604
|
+
}) : null, connectionManagerOpen ? /*#__PURE__*/_react["default"].createElement(ManageConnectionsDialog, {
|
|
605
|
+
handleClose: function handleClose() {
|
|
606
|
+
return setConnectionManagerOpen(false);
|
|
607
|
+
},
|
|
608
|
+
breakConnection: breakConnection,
|
|
609
|
+
session: session
|
|
610
|
+
}) : null, connectionToggleOpen ? /*#__PURE__*/_react["default"].createElement(ToggleConnectionsDialog, {
|
|
611
|
+
handleClose: function handleClose() {
|
|
612
|
+
return setConnectionToggleOpen(false);
|
|
613
|
+
},
|
|
614
|
+
session: session,
|
|
615
|
+
breakConnection: breakConnection,
|
|
616
|
+
assemblyName: assemblyName
|
|
617
|
+
}) : null));
|
|
618
|
+
});
|
|
619
|
+
var HierarchicalTrackSelector = (0, _mobxReact.observer)(function (_ref8) {
|
|
620
|
+
var model = _ref8.model,
|
|
621
|
+
_ref8$toolbarHeight = _ref8.toolbarHeight,
|
|
622
|
+
toolbarHeight = _ref8$toolbarHeight === void 0 ? 0 : _ref8$toolbarHeight;
|
|
623
|
+
|
|
624
|
+
var _useState17 = (0, _react.useState)(0),
|
|
625
|
+
_useState18 = (0, _slicedToArray2["default"])(_useState17, 2),
|
|
626
|
+
assemblyIdx = _useState18[0],
|
|
627
|
+
setAssemblyIdx = _useState18[1];
|
|
628
|
+
|
|
629
|
+
var _useState19 = (0, _react.useState)(0),
|
|
630
|
+
_useState20 = (0, _slicedToArray2["default"])(_useState19, 2),
|
|
631
|
+
headerHeight = _useState20[0],
|
|
632
|
+
setHeaderHeight = _useState20[1];
|
|
633
|
+
|
|
634
|
+
var assemblyNames = model.assemblyNames;
|
|
635
|
+
var assemblyName = assemblyNames[assemblyIdx];
|
|
636
|
+
return assemblyName ? /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, /*#__PURE__*/_react["default"].createElement(HierarchicalTrackSelectorHeader, {
|
|
637
|
+
model: model,
|
|
638
|
+
setHeaderHeight: setHeaderHeight,
|
|
639
|
+
setAssemblyIdx: setAssemblyIdx,
|
|
640
|
+
assemblyIdx: assemblyIdx
|
|
641
|
+
}), /*#__PURE__*/_react["default"].createElement(AutoSizedHierarchicalTree, {
|
|
642
|
+
tree: model.hierarchy(assemblyName),
|
|
643
|
+
model: model,
|
|
644
|
+
offset: toolbarHeight + headerHeight
|
|
645
|
+
})) : null;
|
|
646
|
+
});
|
|
647
|
+
var _default = HierarchicalTrackSelectorContainer;
|
|
648
|
+
exports["default"] = _default;
|