@jbrowse/plugin-linear-genome-view 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.
- package/dist/BaseLinearDisplay/components/BaseLinearDisplay.js +232 -0
- package/dist/BaseLinearDisplay/components/Block.js +86 -0
- package/dist/BaseLinearDisplay/components/LinearBlocks.js +110 -0
- package/dist/BaseLinearDisplay/components/ServerSideRenderedBlockContent.js +192 -0
- package/dist/BaseLinearDisplay/index.js +41 -0
- package/dist/BaseLinearDisplay/models/BaseLinearDisplayModel.js +763 -0
- package/dist/BaseLinearDisplay/models/baseLinearDisplayConfigSchema.js +24 -0
- package/dist/BaseLinearDisplay/models/serverSideRenderedBlock.js +328 -0
- package/dist/LinearBareDisplay/configSchema.js +19 -0
- package/dist/LinearBareDisplay/index.js +21 -0
- package/dist/LinearBareDisplay/index.test.js +33 -0
- package/dist/LinearBareDisplay/model.d.ts +7 -7
- package/dist/LinearBareDisplay/model.js +44 -0
- package/dist/LinearBasicDisplay/components/SetMaxHeight.js +94 -0
- package/dist/LinearBasicDisplay/configSchema.js +25 -0
- package/dist/LinearBasicDisplay/index.js +23 -0
- package/dist/LinearBasicDisplay/model.d.ts +7 -7
- package/dist/LinearBasicDisplay/model.js +162 -0
- package/dist/LinearGenomeView/components/CenterLine.js +80 -0
- package/dist/LinearGenomeView/components/ExportSvgDialog.js +137 -0
- package/dist/LinearGenomeView/components/Header.js +144 -0
- package/dist/LinearGenomeView/components/HelpDialog.js +48 -0
- package/dist/LinearGenomeView/components/ImportForm.js +330 -0
- package/dist/LinearGenomeView/components/LinearGenomeView.js +129 -0
- package/dist/LinearGenomeView/components/LinearGenomeView.test.js +234 -0
- package/dist/LinearGenomeView/components/LinearGenomeViewSvg.js +349 -0
- package/dist/LinearGenomeView/components/MiniControls.js +83 -0
- package/dist/LinearGenomeView/components/OverviewRubberBand.js +310 -0
- package/dist/LinearGenomeView/components/OverviewScaleBar.d.ts +6 -6
- package/dist/LinearGenomeView/components/OverviewScaleBar.js +403 -0
- package/dist/LinearGenomeView/components/RefNameAutocomplete.js +331 -0
- package/dist/LinearGenomeView/components/RubberBand.js +309 -0
- package/dist/LinearGenomeView/components/Ruler.js +101 -0
- package/dist/LinearGenomeView/components/ScaleBar.js +184 -0
- package/dist/LinearGenomeView/components/ScaleBar.test.js +180 -0
- package/dist/LinearGenomeView/components/SearchBox.js +201 -0
- package/dist/LinearGenomeView/components/SearchResultsDialog.js +159 -0
- package/dist/LinearGenomeView/components/SequenceDialog.js +304 -0
- package/dist/LinearGenomeView/components/TrackContainer.js +179 -0
- package/dist/LinearGenomeView/components/TrackLabel.js +165 -0
- package/dist/LinearGenomeView/components/TracksContainer.js +214 -0
- package/dist/LinearGenomeView/components/VerticalGuides.js +116 -0
- package/dist/LinearGenomeView/components/ZoomControls.js +92 -0
- package/dist/LinearGenomeView/components/util.js +16 -0
- package/dist/LinearGenomeView/index.js +1418 -0
- package/dist/LinearGenomeView/index.test.js +1170 -0
- package/dist/LinearGenomeView/util.js +93 -0
- package/dist/LinearGenomeView/util.test.js +78 -0
- package/dist/index.d.ts +21 -21
- package/dist/index.js +293 -6
- package/dist/plugin-linear-genome-view.cjs.development.js +37 -22
- package/dist/plugin-linear-genome-view.cjs.development.js.map +1 -1
- package/dist/plugin-linear-genome-view.cjs.production.min.js +1 -1
- package/dist/plugin-linear-genome-view.cjs.production.min.js.map +1 -1
- package/dist/plugin-linear-genome-view.esm.js +37 -22
- package/dist/plugin-linear-genome-view.esm.js.map +1 -1
- package/package.json +4 -8
- package/src/BaseLinearDisplay/components/BaseLinearDisplay.tsx +9 -12
- package/src/BaseLinearDisplay/models/BaseLinearDisplayModel.tsx +2 -0
- package/src/BaseLinearDisplay/models/serverSideRenderedBlock.ts +10 -8
- package/src/LinearBasicDisplay/components/SetMaxHeight.tsx +21 -12
- package/src/LinearBasicDisplay/model.ts +17 -18
- package/src/LinearGenomeView/components/Header.tsx +1 -1
- package/src/LinearGenomeView/components/ImportForm.tsx +10 -4
- package/src/LinearGenomeView/components/LinearGenomeView.test.js +1 -0
- package/src/LinearGenomeView/components/OverviewScaleBar.tsx +2 -2
- package/src/LinearGenomeView/components/RubberBand.tsx +14 -24
- package/src/LinearGenomeView/components/ScaleBar.test.tsx +1 -0
- package/src/LinearGenomeView/components/ScaleBar.tsx +3 -6
- package/src/LinearGenomeView/components/SequenceDialog.tsx +1 -1
- package/src/LinearGenomeView/components/TrackContainer.tsx +31 -24
- package/src/LinearGenomeView/components/TrackLabel.tsx +1 -1
- package/src/LinearGenomeView/components/__snapshots__/LinearGenomeView.test.js.snap +23 -47
- package/src/LinearGenomeView/index.tsx +2 -3
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.baseLinearDisplayConfigSchema = void 0;
|
|
7
|
+
|
|
8
|
+
var _configuration = require("@jbrowse/core/configuration");
|
|
9
|
+
|
|
10
|
+
var baseLinearDisplayConfigSchema = (0, _configuration.ConfigurationSchema)('BaseLinearDisplay', {
|
|
11
|
+
maxFeatureScreenDensity: {
|
|
12
|
+
type: 'number',
|
|
13
|
+
description: 'maximum features per pixel that is displayed in the view, used if byte size estimates not available',
|
|
14
|
+
defaultValue: 0.3
|
|
15
|
+
},
|
|
16
|
+
fetchSizeLimit: {
|
|
17
|
+
type: 'number',
|
|
18
|
+
defaultValue: 1000000,
|
|
19
|
+
description: "maximum data to attempt to download for a given track, used if adapter doesn't specify one"
|
|
20
|
+
}
|
|
21
|
+
}, {
|
|
22
|
+
explicitIdentifier: 'displayId'
|
|
23
|
+
});
|
|
24
|
+
exports.baseLinearDisplayConfigSchema = baseLinearDisplayConfigSchema;
|
|
@@ -0,0 +1,328 @@
|
|
|
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
|
+
exports.renderBlockData = renderBlockData;
|
|
10
|
+
|
|
11
|
+
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
|
|
12
|
+
|
|
13
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
14
|
+
|
|
15
|
+
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
|
|
16
|
+
|
|
17
|
+
var _mobxStateTree = require("mobx-state-tree");
|
|
18
|
+
|
|
19
|
+
var _configuration = require("@jbrowse/core/configuration");
|
|
20
|
+
|
|
21
|
+
var _util = require("@jbrowse/core/util");
|
|
22
|
+
|
|
23
|
+
var _mst = require("@jbrowse/core/util/types/mst");
|
|
24
|
+
|
|
25
|
+
var _types = require("@jbrowse/core/util/types");
|
|
26
|
+
|
|
27
|
+
var _tracks = require("@jbrowse/core/util/tracks");
|
|
28
|
+
|
|
29
|
+
var _ServerSideRenderedBlockContent = _interopRequireDefault(require("../components/ServerSideRenderedBlockContent"));
|
|
30
|
+
|
|
31
|
+
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; }
|
|
32
|
+
|
|
33
|
+
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; }
|
|
34
|
+
|
|
35
|
+
// the MST state of a single server-side-rendered block in a display
|
|
36
|
+
var blockState = _mobxStateTree.types.model('BlockState', {
|
|
37
|
+
key: _mobxStateTree.types.string,
|
|
38
|
+
region: _mst.Region,
|
|
39
|
+
reloadFlag: 0,
|
|
40
|
+
isLeftEndOfDisplayedRegion: false,
|
|
41
|
+
isRightEndOfDisplayedRegion: false
|
|
42
|
+
}) // NOTE: all this volatile stuff has to be filled in at once, so that it stays consistent
|
|
43
|
+
["volatile"](function () {
|
|
44
|
+
return {
|
|
45
|
+
renderInProgress: undefined,
|
|
46
|
+
filled: false,
|
|
47
|
+
reactElement: undefined,
|
|
48
|
+
features: undefined,
|
|
49
|
+
layout: undefined,
|
|
50
|
+
status: '',
|
|
51
|
+
error: undefined,
|
|
52
|
+
message: undefined,
|
|
53
|
+
maxHeightReached: false,
|
|
54
|
+
ReactComponent: _ServerSideRenderedBlockContent["default"],
|
|
55
|
+
renderProps: undefined
|
|
56
|
+
};
|
|
57
|
+
}).actions(function (self) {
|
|
58
|
+
var renderInProgress;
|
|
59
|
+
return {
|
|
60
|
+
doReload: function doReload() {
|
|
61
|
+
self.reloadFlag = self.reloadFlag + 1;
|
|
62
|
+
},
|
|
63
|
+
afterAttach: function afterAttach() {
|
|
64
|
+
var display = (0, _util.getContainingDisplay)(self);
|
|
65
|
+
(0, _util.makeAbortableReaction)(self, renderBlockData, renderBlockEffect, // reaction doesn't expect async here
|
|
66
|
+
{
|
|
67
|
+
name: "".concat(display.id, "/").concat((0, _util.assembleLocString)(self.region), " rendering"),
|
|
68
|
+
delay: display.renderDelay,
|
|
69
|
+
fireImmediately: true
|
|
70
|
+
}, this.setLoading, this.setRendered, this.setError);
|
|
71
|
+
},
|
|
72
|
+
setStatus: function setStatus(message) {
|
|
73
|
+
self.status = message;
|
|
74
|
+
},
|
|
75
|
+
setLoading: function setLoading(abortController) {
|
|
76
|
+
if (renderInProgress !== undefined) {
|
|
77
|
+
if (!renderInProgress.signal.aborted) {
|
|
78
|
+
renderInProgress.abort();
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
self.filled = false;
|
|
83
|
+
self.message = undefined;
|
|
84
|
+
self.reactElement = undefined;
|
|
85
|
+
self.features = undefined;
|
|
86
|
+
self.layout = undefined;
|
|
87
|
+
self.error = undefined;
|
|
88
|
+
self.maxHeightReached = false;
|
|
89
|
+
self.renderProps = undefined;
|
|
90
|
+
renderInProgress = abortController;
|
|
91
|
+
},
|
|
92
|
+
setMessage: function setMessage(messageText) {
|
|
93
|
+
if (renderInProgress && !renderInProgress.signal.aborted) {
|
|
94
|
+
renderInProgress.abort();
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
self.filled = false;
|
|
98
|
+
self.message = messageText;
|
|
99
|
+
self.reactElement = undefined;
|
|
100
|
+
self.features = undefined;
|
|
101
|
+
self.layout = undefined;
|
|
102
|
+
self.error = undefined;
|
|
103
|
+
self.maxHeightReached = false;
|
|
104
|
+
self.renderProps = undefined;
|
|
105
|
+
renderInProgress = undefined;
|
|
106
|
+
},
|
|
107
|
+
setRendered: function setRendered(props) {
|
|
108
|
+
if (!props) {
|
|
109
|
+
return;
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
var reactElement = props.reactElement,
|
|
113
|
+
features = props.features,
|
|
114
|
+
layout = props.layout,
|
|
115
|
+
maxHeightReached = props.maxHeightReached,
|
|
116
|
+
renderProps = props.renderProps;
|
|
117
|
+
self.filled = true;
|
|
118
|
+
self.message = undefined;
|
|
119
|
+
self.reactElement = reactElement;
|
|
120
|
+
self.features = features;
|
|
121
|
+
self.layout = layout;
|
|
122
|
+
self.error = undefined;
|
|
123
|
+
self.maxHeightReached = maxHeightReached;
|
|
124
|
+
self.renderProps = renderProps;
|
|
125
|
+
renderInProgress = undefined;
|
|
126
|
+
},
|
|
127
|
+
setError: function setError(error) {
|
|
128
|
+
console.error(error);
|
|
129
|
+
|
|
130
|
+
if (renderInProgress && !renderInProgress.signal.aborted) {
|
|
131
|
+
renderInProgress.abort();
|
|
132
|
+
} // the rendering failed for some reason
|
|
133
|
+
|
|
134
|
+
|
|
135
|
+
self.filled = false;
|
|
136
|
+
self.message = undefined;
|
|
137
|
+
self.reactElement = undefined;
|
|
138
|
+
self.features = undefined;
|
|
139
|
+
self.layout = undefined;
|
|
140
|
+
self.maxHeightReached = false;
|
|
141
|
+
self.error = error;
|
|
142
|
+
self.renderProps = undefined;
|
|
143
|
+
renderInProgress = undefined;
|
|
144
|
+
|
|
145
|
+
if ((0, _types.isRetryException)(error)) {
|
|
146
|
+
this.reload();
|
|
147
|
+
}
|
|
148
|
+
},
|
|
149
|
+
reload: function reload() {
|
|
150
|
+
self.renderInProgress = undefined;
|
|
151
|
+
self.filled = false;
|
|
152
|
+
self.reactElement = undefined;
|
|
153
|
+
self.features = undefined;
|
|
154
|
+
self.layout = undefined;
|
|
155
|
+
self.error = undefined;
|
|
156
|
+
self.message = undefined;
|
|
157
|
+
self.maxHeightReached = false;
|
|
158
|
+
self.ReactComponent = _ServerSideRenderedBlockContent["default"];
|
|
159
|
+
self.renderProps = undefined;
|
|
160
|
+
(0, _mobxStateTree.getParent)(self, 2).reload();
|
|
161
|
+
},
|
|
162
|
+
beforeDestroy: function beforeDestroy() {
|
|
163
|
+
if (renderInProgress && !renderInProgress.signal.aborted) {
|
|
164
|
+
renderInProgress.abort();
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
var display = (0, _util.getContainingDisplay)(self);
|
|
168
|
+
|
|
169
|
+
var _getSession = (0, _util.getSession)(self),
|
|
170
|
+
rpcManager = _getSession.rpcManager;
|
|
171
|
+
|
|
172
|
+
var rendererType = display.rendererType;
|
|
173
|
+
|
|
174
|
+
var _renderBlockData = renderBlockData((0, _mobxStateTree.cast)(self)),
|
|
175
|
+
renderArgs = _renderBlockData.renderArgs; // renderArgs can be undefined if an error occured in this block
|
|
176
|
+
|
|
177
|
+
|
|
178
|
+
if (renderArgs) {
|
|
179
|
+
rendererType.freeResourcesInClient(rpcManager, JSON.parse(JSON.stringify(renderArgs)))["catch"](function (e) {
|
|
180
|
+
// just console.error if it's something while it's being destroyed
|
|
181
|
+
console.warn('Error while destroying block', e);
|
|
182
|
+
});
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
};
|
|
186
|
+
});
|
|
187
|
+
|
|
188
|
+
var _default = blockState;
|
|
189
|
+
exports["default"] = _default;
|
|
190
|
+
|
|
191
|
+
// calls the render worker to render the block content not using a flow for
|
|
192
|
+
// this, because the flow doesn't work with autorun
|
|
193
|
+
function renderBlockData(self, optDisplay) {
|
|
194
|
+
try {
|
|
195
|
+
var display = optDisplay || (0, _util.getContainingDisplay)(self);
|
|
196
|
+
|
|
197
|
+
var _getSession2 = (0, _util.getSession)(display),
|
|
198
|
+
assemblyManager = _getSession2.assemblyManager,
|
|
199
|
+
rpcManager = _getSession2.rpcManager;
|
|
200
|
+
|
|
201
|
+
var adapterConfig = display.adapterConfig,
|
|
202
|
+
rendererType = display.rendererType,
|
|
203
|
+
error = display.error,
|
|
204
|
+
parentTrack = display.parentTrack;
|
|
205
|
+
var assemblyNames = (0, _tracks.getTrackAssemblyNames)(parentTrack);
|
|
206
|
+
var regionAsm = self.region.assemblyName;
|
|
207
|
+
|
|
208
|
+
if (!assemblyNames.includes(regionAsm) && !assemblyNames.find(function (name) {
|
|
209
|
+
var _assemblyManager$get;
|
|
210
|
+
|
|
211
|
+
return (_assemblyManager$get = assemblyManager.get(name)) === null || _assemblyManager$get === void 0 ? void 0 : _assemblyManager$get.hasName(regionAsm);
|
|
212
|
+
})) {
|
|
213
|
+
throw new Error("region assembly (".concat(regionAsm, ") does not match track assemblies (").concat(assemblyNames, ")"));
|
|
214
|
+
}
|
|
215
|
+
|
|
216
|
+
var renderProps = display.renderProps();
|
|
217
|
+
var config = renderProps.config; // This line is to trigger the mobx reaction when the config changes
|
|
218
|
+
// It won't trigger the reaction if it doesn't think we're accessing it
|
|
219
|
+
|
|
220
|
+
(0, _configuration.readConfObject)(config);
|
|
221
|
+
var sessionId = (0, _tracks.getRpcSessionId)(display);
|
|
222
|
+
var cannotBeRenderedReason = display.regionCannotBeRendered(self.region);
|
|
223
|
+
return {
|
|
224
|
+
rendererType: rendererType,
|
|
225
|
+
rpcManager: rpcManager,
|
|
226
|
+
renderProps: renderProps,
|
|
227
|
+
cannotBeRenderedReason: cannotBeRenderedReason,
|
|
228
|
+
displayError: error,
|
|
229
|
+
renderArgs: {
|
|
230
|
+
statusCallback: function statusCallback(message) {
|
|
231
|
+
if ((0, _mobxStateTree.isAlive)(self)) {
|
|
232
|
+
self.setStatus(message);
|
|
233
|
+
}
|
|
234
|
+
},
|
|
235
|
+
assemblyName: self.region.assemblyName,
|
|
236
|
+
regions: [self.region],
|
|
237
|
+
adapterConfig: adapterConfig,
|
|
238
|
+
rendererType: rendererType.name,
|
|
239
|
+
sessionId: sessionId,
|
|
240
|
+
blockKey: self.key,
|
|
241
|
+
reloadFlag: self.reloadFlag,
|
|
242
|
+
timeout: 1000000 // 10000,
|
|
243
|
+
|
|
244
|
+
}
|
|
245
|
+
};
|
|
246
|
+
} catch (e) {
|
|
247
|
+
return {
|
|
248
|
+
displayError: e
|
|
249
|
+
};
|
|
250
|
+
}
|
|
251
|
+
}
|
|
252
|
+
|
|
253
|
+
function renderBlockEffect(_x, _x2, _x3) {
|
|
254
|
+
return _renderBlockEffect.apply(this, arguments);
|
|
255
|
+
}
|
|
256
|
+
|
|
257
|
+
function _renderBlockEffect() {
|
|
258
|
+
_renderBlockEffect = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee(props, signal, self) {
|
|
259
|
+
var _ref, rendererType, renderProps, rpcManager, renderArgs, cannotBeRenderedReason, displayError, _yield$rendererType$r, reactElement, features, layout, maxHeightReached;
|
|
260
|
+
|
|
261
|
+
return _regenerator["default"].wrap(function _callee$(_context) {
|
|
262
|
+
while (1) {
|
|
263
|
+
switch (_context.prev = _context.next) {
|
|
264
|
+
case 0:
|
|
265
|
+
_ref = props, rendererType = _ref.rendererType, renderProps = _ref.renderProps, rpcManager = _ref.rpcManager, renderArgs = _ref.renderArgs, cannotBeRenderedReason = _ref.cannotBeRenderedReason, displayError = _ref.displayError;
|
|
266
|
+
|
|
267
|
+
if ((0, _mobxStateTree.isAlive)(self)) {
|
|
268
|
+
_context.next = 3;
|
|
269
|
+
break;
|
|
270
|
+
}
|
|
271
|
+
|
|
272
|
+
return _context.abrupt("return", undefined);
|
|
273
|
+
|
|
274
|
+
case 3:
|
|
275
|
+
if (!displayError) {
|
|
276
|
+
_context.next = 6;
|
|
277
|
+
break;
|
|
278
|
+
}
|
|
279
|
+
|
|
280
|
+
self.setError(displayError);
|
|
281
|
+
return _context.abrupt("return", undefined);
|
|
282
|
+
|
|
283
|
+
case 6:
|
|
284
|
+
if (!cannotBeRenderedReason) {
|
|
285
|
+
_context.next = 9;
|
|
286
|
+
break;
|
|
287
|
+
}
|
|
288
|
+
|
|
289
|
+
self.setMessage(cannotBeRenderedReason);
|
|
290
|
+
return _context.abrupt("return", undefined);
|
|
291
|
+
|
|
292
|
+
case 9:
|
|
293
|
+
if (!renderProps.notReady) {
|
|
294
|
+
_context.next = 11;
|
|
295
|
+
break;
|
|
296
|
+
}
|
|
297
|
+
|
|
298
|
+
return _context.abrupt("return", undefined);
|
|
299
|
+
|
|
300
|
+
case 11:
|
|
301
|
+
_context.next = 13;
|
|
302
|
+
return rendererType.renderInClient(rpcManager, _objectSpread(_objectSpread(_objectSpread({}, renderArgs), renderProps), {}, {
|
|
303
|
+
viewParams: (0, _util.getViewParams)(self),
|
|
304
|
+
signal: signal
|
|
305
|
+
}));
|
|
306
|
+
|
|
307
|
+
case 13:
|
|
308
|
+
_yield$rendererType$r = _context.sent;
|
|
309
|
+
reactElement = _yield$rendererType$r.reactElement;
|
|
310
|
+
features = _yield$rendererType$r.features;
|
|
311
|
+
layout = _yield$rendererType$r.layout;
|
|
312
|
+
maxHeightReached = _yield$rendererType$r.maxHeightReached;
|
|
313
|
+
return _context.abrupt("return", {
|
|
314
|
+
reactElement: reactElement,
|
|
315
|
+
features: features,
|
|
316
|
+
layout: layout,
|
|
317
|
+
maxHeightReached: maxHeightReached
|
|
318
|
+
});
|
|
319
|
+
|
|
320
|
+
case 19:
|
|
321
|
+
case "end":
|
|
322
|
+
return _context.stop();
|
|
323
|
+
}
|
|
324
|
+
}
|
|
325
|
+
}, _callee);
|
|
326
|
+
}));
|
|
327
|
+
return _renderBlockEffect.apply(this, arguments);
|
|
328
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.configSchemaFactory = configSchemaFactory;
|
|
7
|
+
|
|
8
|
+
var _configuration = require("@jbrowse/core/configuration");
|
|
9
|
+
|
|
10
|
+
var _BaseLinearDisplay = require("../BaseLinearDisplay");
|
|
11
|
+
|
|
12
|
+
function configSchemaFactory(pluginManager) {
|
|
13
|
+
return (0, _configuration.ConfigurationSchema)('LinearBareDisplay', {
|
|
14
|
+
renderer: pluginManager.pluggableConfigSchemaType('renderer')
|
|
15
|
+
}, {
|
|
16
|
+
baseConfiguration: _BaseLinearDisplay.baseLinearDisplayConfigSchema,
|
|
17
|
+
explicitlyTyped: true
|
|
18
|
+
});
|
|
19
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
Object.defineProperty(exports, "configSchemaFactory", {
|
|
7
|
+
enumerable: true,
|
|
8
|
+
get: function get() {
|
|
9
|
+
return _configSchema.configSchemaFactory;
|
|
10
|
+
}
|
|
11
|
+
});
|
|
12
|
+
Object.defineProperty(exports, "stateModelFactory", {
|
|
13
|
+
enumerable: true,
|
|
14
|
+
get: function get() {
|
|
15
|
+
return _model.stateModelFactory;
|
|
16
|
+
}
|
|
17
|
+
});
|
|
18
|
+
|
|
19
|
+
var _configSchema = require("./configSchema");
|
|
20
|
+
|
|
21
|
+
var _model = require("./model");
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _mobxStateTree = require("mobx-state-tree");
|
|
4
|
+
|
|
5
|
+
var _configuration = require("@jbrowse/core/configuration");
|
|
6
|
+
|
|
7
|
+
var _ = require(".");
|
|
8
|
+
|
|
9
|
+
test('config schema renderer type', function () {
|
|
10
|
+
var stubPluginManager = {
|
|
11
|
+
pluggableConfigSchemaType: function pluggableConfigSchemaType(type) {
|
|
12
|
+
var one = (0, _configuration.ConfigurationSchema)("".concat(type, "_TypeOne"), {}, {
|
|
13
|
+
explicitlyTyped: true
|
|
14
|
+
});
|
|
15
|
+
var two = (0, _configuration.ConfigurationSchema)("".concat(type, "_TypeTwo"), {}, {
|
|
16
|
+
explicitlyTyped: true
|
|
17
|
+
});
|
|
18
|
+
var three = (0, _configuration.ConfigurationSchema)("".concat(type, "_TypeThree"), {}, {
|
|
19
|
+
explicitlyTyped: true
|
|
20
|
+
});
|
|
21
|
+
return _mobxStateTree.types.union(one, two, three);
|
|
22
|
+
}
|
|
23
|
+
};
|
|
24
|
+
var configSchema = (0, _.configSchemaFactory)(stubPluginManager);
|
|
25
|
+
var instance = configSchema.create({
|
|
26
|
+
type: 'LinearBareDisplay',
|
|
27
|
+
displayId: 'displayId0',
|
|
28
|
+
renderer: {
|
|
29
|
+
type: 'renderer_TypeTwo'
|
|
30
|
+
}
|
|
31
|
+
});
|
|
32
|
+
expect(instance.renderer.type).toBe('renderer_TypeTwo');
|
|
33
|
+
});
|
|
@@ -25,7 +25,7 @@ export declare function stateModelFactory(configSchema: AnyConfigurationSchemaTy
|
|
|
25
25
|
renderInProgress: AbortController | undefined;
|
|
26
26
|
filled: boolean;
|
|
27
27
|
reactElement: import("react").ReactElement<any, string | ((props: any) => import("react").ReactElement<any, any> | null) | (new (props: any) => import("react").Component<any, any, any>)> | undefined;
|
|
28
|
-
features: Map<string, import("@jbrowse/core/util
|
|
28
|
+
features: Map<string, import("@jbrowse/core/util").Feature> | undefined;
|
|
29
29
|
layout: any;
|
|
30
30
|
status: string;
|
|
31
31
|
error: unknown;
|
|
@@ -43,7 +43,7 @@ export declare function stateModelFactory(configSchema: AnyConfigurationSchemaTy
|
|
|
43
43
|
setMessage(messageText: string): void;
|
|
44
44
|
setRendered(props: {
|
|
45
45
|
reactElement: import("react").ReactElement<any, string | ((props: any) => import("react").ReactElement<any, any> | null) | (new (props: any) => import("react").Component<any, any, any>)>;
|
|
46
|
-
features: Map<string, import("@jbrowse/core/util
|
|
46
|
+
features: Map<string, import("@jbrowse/core/util").Feature>;
|
|
47
47
|
layout: any;
|
|
48
48
|
maxHeightReached: boolean;
|
|
49
49
|
renderProps: any;
|
|
@@ -113,7 +113,7 @@ export declare function stateModelFactory(configSchema: AnyConfigurationSchemaTy
|
|
|
113
113
|
currBpPerPx: number;
|
|
114
114
|
message: string;
|
|
115
115
|
featureIdUnderMouse: string | undefined;
|
|
116
|
-
contextMenuFeature: import("@jbrowse/core/util
|
|
116
|
+
contextMenuFeature: import("@jbrowse/core/util").Feature | undefined;
|
|
117
117
|
scrollTop: number;
|
|
118
118
|
estimatedRegionStatsP: Promise<import("@jbrowse/core/data_adapters/BaseAdapter").Stats> | undefined;
|
|
119
119
|
estimatedRegionStats: import("@jbrowse/core/data_adapters/BaseAdapter").Stats | undefined;
|
|
@@ -126,8 +126,8 @@ export declare function stateModelFactory(configSchema: AnyConfigurationSchemaTy
|
|
|
126
126
|
readonly selectedFeatureId: string | undefined;
|
|
127
127
|
readonly DisplayMessageComponent: import("react").FC<any> | undefined;
|
|
128
128
|
} & {
|
|
129
|
-
readonly features: import("@jbrowse/core/util/compositeMap").default<string, import("@jbrowse/core/util
|
|
130
|
-
readonly featureUnderMouse: import("@jbrowse/core/util
|
|
129
|
+
readonly features: import("@jbrowse/core/util/compositeMap").default<string, import("@jbrowse/core/util").Feature>;
|
|
130
|
+
readonly featureUnderMouse: import("@jbrowse/core/util").Feature | undefined;
|
|
131
131
|
getFeatureOverlapping(blockKey: string, x: number, y: number): any;
|
|
132
132
|
getFeatureByID(blockKey: string, id: string): [number, number, number, number] | undefined;
|
|
133
133
|
searchFeatureByID(id: string): [number, number, number, number] | undefined;
|
|
@@ -154,11 +154,11 @@ export declare function stateModelFactory(configSchema: AnyConfigurationSchemaTy
|
|
|
154
154
|
addBlock(key: string, block: import("@jbrowse/core/util/blockTypes").BaseBlock): void;
|
|
155
155
|
setCurrBpPerPx(n: number): void;
|
|
156
156
|
deleteBlock(key: string): void;
|
|
157
|
-
selectFeature(feature: import("@jbrowse/core/util
|
|
157
|
+
selectFeature(feature: import("@jbrowse/core/util").Feature): void;
|
|
158
158
|
clearFeatureSelection(): void;
|
|
159
159
|
setFeatureIdUnderMouse(feature: string | undefined): void;
|
|
160
160
|
reload(): void;
|
|
161
|
-
setContextMenuFeature(feature?: import("@jbrowse/core/util
|
|
161
|
+
setContextMenuFeature(feature?: import("@jbrowse/core/util").Feature | undefined): void;
|
|
162
162
|
} & {
|
|
163
163
|
readonly regionTooLarge: boolean;
|
|
164
164
|
readonly regionTooLargeReason: string;
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
|
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
|
6
|
+
value: true
|
|
7
|
+
});
|
|
8
|
+
exports.stateModelFactory = stateModelFactory;
|
|
9
|
+
|
|
10
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
11
|
+
|
|
12
|
+
var _configurationSchema = require("@jbrowse/core/configuration/configurationSchema");
|
|
13
|
+
|
|
14
|
+
var _tracks = require("@jbrowse/core/util/tracks");
|
|
15
|
+
|
|
16
|
+
var _mobxStateTree = require("mobx-state-tree");
|
|
17
|
+
|
|
18
|
+
var _BaseLinearDisplay = require("../BaseLinearDisplay");
|
|
19
|
+
|
|
20
|
+
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; }
|
|
21
|
+
|
|
22
|
+
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; }
|
|
23
|
+
|
|
24
|
+
function stateModelFactory(configSchema) {
|
|
25
|
+
return _mobxStateTree.types.compose('LinearBareDisplay', _BaseLinearDisplay.BaseLinearDisplay, _mobxStateTree.types.model({
|
|
26
|
+
type: _mobxStateTree.types.literal('LinearBareDisplay'),
|
|
27
|
+
configuration: (0, _configurationSchema.ConfigurationReference)(configSchema)
|
|
28
|
+
})).views(function (self) {
|
|
29
|
+
var superRenderProps = self.renderProps;
|
|
30
|
+
return {
|
|
31
|
+
renderProps: function renderProps() {
|
|
32
|
+
return _objectSpread(_objectSpread(_objectSpread({}, superRenderProps()), (0, _tracks.getParentRenderProps)(self)), {}, {
|
|
33
|
+
rpcDriverName: self.rpcDriverName,
|
|
34
|
+
config: self.configuration.renderer
|
|
35
|
+
});
|
|
36
|
+
},
|
|
37
|
+
|
|
38
|
+
get rendererTypeName() {
|
|
39
|
+
return self.configuration.renderer.type;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
};
|
|
43
|
+
});
|
|
44
|
+
}
|
|
@@ -0,0 +1,94 @@
|
|
|
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 _core = require("@material-ui/core");
|
|
19
|
+
|
|
20
|
+
var _Close = _interopRequireDefault(require("@material-ui/icons/Close"));
|
|
21
|
+
|
|
22
|
+
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); }
|
|
23
|
+
|
|
24
|
+
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; }
|
|
25
|
+
|
|
26
|
+
var useStyles = (0, _core.makeStyles)(function (theme) {
|
|
27
|
+
return {
|
|
28
|
+
root: {
|
|
29
|
+
width: 500
|
|
30
|
+
},
|
|
31
|
+
closeButton: {
|
|
32
|
+
position: 'absolute',
|
|
33
|
+
right: theme.spacing(1),
|
|
34
|
+
top: theme.spacing(1),
|
|
35
|
+
color: theme.palette.grey[500]
|
|
36
|
+
},
|
|
37
|
+
field: {
|
|
38
|
+
margin: theme.spacing(2)
|
|
39
|
+
}
|
|
40
|
+
};
|
|
41
|
+
});
|
|
42
|
+
|
|
43
|
+
function SetMaxHeightDlg(props) {
|
|
44
|
+
var model = props.model,
|
|
45
|
+
handleClose = props.handleClose;
|
|
46
|
+
var classes = useStyles();
|
|
47
|
+
var _model$maxHeight = model.maxHeight,
|
|
48
|
+
maxHeight = _model$maxHeight === void 0 ? '' : _model$maxHeight;
|
|
49
|
+
|
|
50
|
+
var _useState = (0, _react.useState)("".concat(maxHeight)),
|
|
51
|
+
_useState2 = (0, _slicedToArray2["default"])(_useState, 2),
|
|
52
|
+
max = _useState2[0],
|
|
53
|
+
setMax = _useState2[1];
|
|
54
|
+
|
|
55
|
+
return /*#__PURE__*/_react["default"].createElement(_core.Dialog, {
|
|
56
|
+
open: true,
|
|
57
|
+
onClose: handleClose,
|
|
58
|
+
"aria-labelledby": "alert-dialog-title",
|
|
59
|
+
"aria-describedby": "alert-dialog-description"
|
|
60
|
+
}, /*#__PURE__*/_react["default"].createElement(_core.DialogTitle, {
|
|
61
|
+
id: "alert-dialog-title"
|
|
62
|
+
}, "Filter options", /*#__PURE__*/_react["default"].createElement(_core.IconButton, {
|
|
63
|
+
"aria-label": "close",
|
|
64
|
+
className: classes.closeButton,
|
|
65
|
+
onClick: handleClose
|
|
66
|
+
}, /*#__PURE__*/_react["default"].createElement(_Close["default"], null))), /*#__PURE__*/_react["default"].createElement(_core.DialogContent, {
|
|
67
|
+
className: classes.root
|
|
68
|
+
}, /*#__PURE__*/_react["default"].createElement(_core.Typography, null, "Set max height for the track. For example, you can increase this if the layout says \"Max height reached\""), /*#__PURE__*/_react["default"].createElement(_core.TextField, {
|
|
69
|
+
value: max,
|
|
70
|
+
onChange: function onChange(event) {
|
|
71
|
+
return setMax(event.target.value);
|
|
72
|
+
},
|
|
73
|
+
placeholder: "Enter max score"
|
|
74
|
+
}), /*#__PURE__*/_react["default"].createElement(_core.DialogActions, null, /*#__PURE__*/_react["default"].createElement(_core.Button, {
|
|
75
|
+
variant: "contained",
|
|
76
|
+
color: "primary",
|
|
77
|
+
type: "submit",
|
|
78
|
+
autoFocus: true,
|
|
79
|
+
onClick: function onClick() {
|
|
80
|
+
model.setMaxHeight(max !== '' && !Number.isNaN(+max) ? +max : undefined);
|
|
81
|
+
handleClose();
|
|
82
|
+
}
|
|
83
|
+
}, "Submit"), /*#__PURE__*/_react["default"].createElement(_core.Button, {
|
|
84
|
+
variant: "contained",
|
|
85
|
+
color: "secondary",
|
|
86
|
+
onClick: function onClick() {
|
|
87
|
+
return handleClose();
|
|
88
|
+
}
|
|
89
|
+
}, "Cancel"))));
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
var _default = (0, _mobxReact.observer)(SetMaxHeightDlg);
|
|
93
|
+
|
|
94
|
+
exports["default"] = _default;
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports["default"] = configSchemaFactory;
|
|
7
|
+
|
|
8
|
+
var _configuration = require("@jbrowse/core/configuration");
|
|
9
|
+
|
|
10
|
+
var _BaseLinearDisplay = require("../BaseLinearDisplay");
|
|
11
|
+
|
|
12
|
+
function configSchemaFactory(pluginManager) {
|
|
13
|
+
return (0, _configuration.ConfigurationSchema)('LinearBasicDisplay', {
|
|
14
|
+
mouseover: {
|
|
15
|
+
type: 'string',
|
|
16
|
+
description: 'what to display in a given mouseover',
|
|
17
|
+
defaultValue: "jexl:get(feature,'name')",
|
|
18
|
+
contextVariable: ['feature']
|
|
19
|
+
},
|
|
20
|
+
renderer: pluginManager.pluggableConfigSchemaType('renderer')
|
|
21
|
+
}, {
|
|
22
|
+
baseConfiguration: _BaseLinearDisplay.baseLinearDisplayConfigSchema,
|
|
23
|
+
explicitlyTyped: true
|
|
24
|
+
});
|
|
25
|
+
}
|
|
@@ -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"));
|