@jbrowse/plugin-wiggle 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 (33) hide show
  1. package/dist/BigWigAdapter/BigWigAdapter.js +288 -0
  2. package/dist/BigWigAdapter/BigWigAdapter.test.js +157 -0
  3. package/dist/BigWigAdapter/configSchema.js +22 -0
  4. package/dist/BigWigAdapter/index.js +15 -0
  5. package/dist/DensityRenderer/DensityRenderer.test.js +84 -0
  6. package/dist/DensityRenderer/index.js +137 -0
  7. package/dist/LinePlotRenderer/LinePlotRenderer.js +171 -0
  8. package/dist/LinePlotRenderer/configSchema.js +70 -0
  9. package/dist/LinePlotRenderer/index.js +34 -0
  10. package/dist/LinearWiggleDisplay/components/SetColorDialog.js +111 -0
  11. package/dist/LinearWiggleDisplay/components/SetMinMaxDialog.js +112 -0
  12. package/dist/LinearWiggleDisplay/components/Tooltip.js +167 -0
  13. package/dist/LinearWiggleDisplay/components/WiggleDisplayComponent.js +52 -0
  14. package/dist/LinearWiggleDisplay/components/YScaleBar.js +33 -0
  15. package/dist/LinearWiggleDisplay/index.js +43 -0
  16. package/dist/LinearWiggleDisplay/models/configSchema.js +71 -0
  17. package/dist/LinearWiggleDisplay/models/model.js +706 -0
  18. package/dist/WiggleBaseRenderer.js +131 -0
  19. package/dist/WiggleRPC/rpcMethods.js +295 -0
  20. package/dist/WiggleRendering.js +109 -0
  21. package/dist/WiggleRendering.test.js +52 -0
  22. package/dist/XYPlotRenderer/XYPlotRenderer.js +199 -0
  23. package/dist/XYPlotRenderer/XYPlotRenderer.test.js +83 -0
  24. package/dist/XYPlotRenderer/index.js +34 -0
  25. package/dist/configSchema.js +75 -0
  26. package/dist/declare.d.js +1 -0
  27. package/dist/index.js +251 -6
  28. package/dist/index.test.js +24 -0
  29. package/dist/util.js +178 -0
  30. package/dist/util.test.js +66 -0
  31. package/package.json +3 -6
  32. package/src/LinearWiggleDisplay/models/model.tsx +2 -2
  33. package/src/WiggleBaseRenderer.tsx +1 -0
@@ -0,0 +1,131 @@
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 _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
13
+
14
+ var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
15
+
16
+ var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
17
+
18
+ var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
19
+
20
+ var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));
21
+
22
+ var _get2 = _interopRequireDefault(require("@babel/runtime/helpers/get"));
23
+
24
+ var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
25
+
26
+ var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
27
+
28
+ var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
29
+
30
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
31
+
32
+ var _FeatureRendererType2 = _interopRequireDefault(require("@jbrowse/core/pluggableElementTypes/renderers/FeatureRendererType"));
33
+
34
+ var _offscreenCanvasUtils = require("@jbrowse/core/util/offscreenCanvasUtils");
35
+
36
+ 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; }
37
+
38
+ 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; }
39
+
40
+ 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); }; }
41
+
42
+ 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; } }
43
+
44
+ var WiggleBaseRenderer = /*#__PURE__*/function (_FeatureRendererType) {
45
+ (0, _inherits2["default"])(WiggleBaseRenderer, _FeatureRendererType);
46
+
47
+ var _super = _createSuper(WiggleBaseRenderer);
48
+
49
+ function WiggleBaseRenderer() {
50
+ var _this;
51
+
52
+ (0, _classCallCheck2["default"])(this, WiggleBaseRenderer);
53
+
54
+ for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
55
+ args[_key] = arguments[_key];
56
+ }
57
+
58
+ _this = _super.call.apply(_super, [this].concat(args));
59
+ (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "supportsSVG", true);
60
+ return _this;
61
+ }
62
+
63
+ (0, _createClass2["default"])(WiggleBaseRenderer, [{
64
+ key: "render",
65
+ value: function () {
66
+ var _render = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee(renderProps) {
67
+ var _this2 = this;
68
+
69
+ var features, height, regions, bpPerPx, _regions, region, width, res, results;
70
+
71
+ return _regenerator["default"].wrap(function _callee$(_context) {
72
+ while (1) {
73
+ switch (_context.prev = _context.next) {
74
+ case 0:
75
+ _context.next = 2;
76
+ return this.getFeatures(renderProps);
77
+
78
+ case 2:
79
+ features = _context.sent;
80
+ height = renderProps.height, regions = renderProps.regions, bpPerPx = renderProps.bpPerPx;
81
+ _regions = (0, _slicedToArray2["default"])(regions, 1), region = _regions[0];
82
+ width = (region.end - region.start) / bpPerPx;
83
+ _context.next = 8;
84
+ return (0, _offscreenCanvasUtils.renderToAbstractCanvas)(width, height, renderProps, function (ctx) {
85
+ return _this2.draw(ctx, _objectSpread(_objectSpread({}, renderProps), {}, {
86
+ features: features
87
+ }));
88
+ });
89
+
90
+ case 8:
91
+ res = _context.sent;
92
+ _context.next = 11;
93
+ return (0, _get2["default"])((0, _getPrototypeOf2["default"])(WiggleBaseRenderer.prototype), "render", this).call(this, _objectSpread(_objectSpread(_objectSpread({}, renderProps), res), {}, {
94
+ features: features,
95
+ height: height,
96
+ width: width
97
+ }));
98
+
99
+ case 11:
100
+ results = _context.sent;
101
+ return _context.abrupt("return", _objectSpread(_objectSpread(_objectSpread({}, results), res), {}, {
102
+ features: features,
103
+ containsNoTransferables: true,
104
+ height: height,
105
+ width: width
106
+ }));
107
+
108
+ case 13:
109
+ case "end":
110
+ return _context.stop();
111
+ }
112
+ }
113
+ }, _callee, this);
114
+ }));
115
+
116
+ function render(_x) {
117
+ return _render.apply(this, arguments);
118
+ }
119
+
120
+ return render;
121
+ }()
122
+ /*
123
+ * draw features to context given props, to be used by derived renderer
124
+ * classes
125
+ */
126
+
127
+ }]);
128
+ return WiggleBaseRenderer;
129
+ }(_FeatureRendererType2["default"]);
130
+
131
+ exports["default"] = WiggleBaseRenderer;
@@ -0,0 +1,295 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.WiggleGetMultiRegionStats = exports.WiggleGetGlobalStats = void 0;
9
+
10
+ var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
11
+
12
+ var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
13
+
14
+ var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
15
+
16
+ var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
17
+
18
+ var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));
19
+
20
+ var _get2 = _interopRequireDefault(require("@babel/runtime/helpers/get"));
21
+
22
+ var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
23
+
24
+ var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
25
+
26
+ var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
27
+
28
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
29
+
30
+ var _dataAdapterCache = require("@jbrowse/core/data_adapters/dataAdapterCache");
31
+
32
+ var _RpcMethodType3 = _interopRequireDefault(require("@jbrowse/core/pluggableElementTypes/RpcMethodType"));
33
+
34
+ var _util = require("@jbrowse/core/util");
35
+
36
+ var _BaseAdapter = require("@jbrowse/core/data_adapters/BaseAdapter");
37
+
38
+ var _serializableFilterChain = _interopRequireDefault(require("@jbrowse/core/pluggableElementTypes/renderers/util/serializableFilterChain"));
39
+
40
+ 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; }
41
+
42
+ 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; }
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
+ var WiggleGetGlobalStats = /*#__PURE__*/function (_RpcMethodType) {
49
+ (0, _inherits2["default"])(WiggleGetGlobalStats, _RpcMethodType);
50
+
51
+ var _super = _createSuper(WiggleGetGlobalStats);
52
+
53
+ function WiggleGetGlobalStats() {
54
+ var _this;
55
+
56
+ (0, _classCallCheck2["default"])(this, WiggleGetGlobalStats);
57
+
58
+ for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
59
+ args[_key] = arguments[_key];
60
+ }
61
+
62
+ _this = _super.call.apply(_super, [this].concat(args));
63
+ (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "name", 'WiggleGetGlobalStats');
64
+ return _this;
65
+ }
66
+
67
+ (0, _createClass2["default"])(WiggleGetGlobalStats, [{
68
+ key: "deserializeArguments",
69
+ value: // eslint-disable-next-line @typescript-eslint/no-explicit-any
70
+ function () {
71
+ var _deserializeArguments = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee(args, rpcDriverClassName) {
72
+ var l;
73
+ return _regenerator["default"].wrap(function _callee$(_context) {
74
+ while (1) {
75
+ switch (_context.prev = _context.next) {
76
+ case 0:
77
+ _context.next = 2;
78
+ return (0, _get2["default"])((0, _getPrototypeOf2["default"])(WiggleGetGlobalStats.prototype), "deserializeArguments", this).call(this, args, rpcDriverClassName);
79
+
80
+ case 2:
81
+ l = _context.sent;
82
+ return _context.abrupt("return", _objectSpread(_objectSpread({}, l), {}, {
83
+ filters: args.filters ? new _serializableFilterChain["default"]({
84
+ filters: args.filters
85
+ }) : undefined
86
+ }));
87
+
88
+ case 4:
89
+ case "end":
90
+ return _context.stop();
91
+ }
92
+ }
93
+ }, _callee, this);
94
+ }));
95
+
96
+ function deserializeArguments(_x, _x2) {
97
+ return _deserializeArguments.apply(this, arguments);
98
+ }
99
+
100
+ return deserializeArguments;
101
+ }()
102
+ }, {
103
+ key: "execute",
104
+ value: function () {
105
+ var _execute = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee2(args, rpcDriverClassName) {
106
+ var deserializedArgs, adapterConfig, sessionId, _yield$getAdapter, dataAdapter;
107
+
108
+ return _regenerator["default"].wrap(function _callee2$(_context2) {
109
+ while (1) {
110
+ switch (_context2.prev = _context2.next) {
111
+ case 0:
112
+ _context2.next = 2;
113
+ return this.deserializeArguments(args, rpcDriverClassName);
114
+
115
+ case 2:
116
+ deserializedArgs = _context2.sent;
117
+ adapterConfig = deserializedArgs.adapterConfig, sessionId = deserializedArgs.sessionId;
118
+ _context2.next = 6;
119
+ return (0, _dataAdapterCache.getAdapter)(this.pluginManager, sessionId, adapterConfig);
120
+
121
+ case 6:
122
+ _yield$getAdapter = _context2.sent;
123
+ dataAdapter = _yield$getAdapter.dataAdapter;
124
+ return _context2.abrupt("return", dataAdapter.getGlobalStats(deserializedArgs));
125
+
126
+ case 9:
127
+ case "end":
128
+ return _context2.stop();
129
+ }
130
+ }
131
+ }, _callee2, this);
132
+ }));
133
+
134
+ function execute(_x3, _x4) {
135
+ return _execute.apply(this, arguments);
136
+ }
137
+
138
+ return execute;
139
+ }()
140
+ }]);
141
+ return WiggleGetGlobalStats;
142
+ }(_RpcMethodType3["default"]);
143
+
144
+ exports.WiggleGetGlobalStats = WiggleGetGlobalStats;
145
+
146
+ var WiggleGetMultiRegionStats = /*#__PURE__*/function (_RpcMethodType2) {
147
+ (0, _inherits2["default"])(WiggleGetMultiRegionStats, _RpcMethodType2);
148
+
149
+ var _super2 = _createSuper(WiggleGetMultiRegionStats);
150
+
151
+ function WiggleGetMultiRegionStats() {
152
+ var _this2;
153
+
154
+ (0, _classCallCheck2["default"])(this, WiggleGetMultiRegionStats);
155
+
156
+ for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
157
+ args[_key2] = arguments[_key2];
158
+ }
159
+
160
+ _this2 = _super2.call.apply(_super2, [this].concat(args));
161
+ (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this2), "name", 'WiggleGetMultiRegionStats');
162
+ return _this2;
163
+ }
164
+
165
+ (0, _createClass2["default"])(WiggleGetMultiRegionStats, [{
166
+ key: "deserializeArguments",
167
+ value: // eslint-disable-next-line @typescript-eslint/no-explicit-any
168
+ function () {
169
+ var _deserializeArguments2 = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee3(args, rpcDriverClassName) {
170
+ var l;
171
+ return _regenerator["default"].wrap(function _callee3$(_context3) {
172
+ while (1) {
173
+ switch (_context3.prev = _context3.next) {
174
+ case 0:
175
+ _context3.next = 2;
176
+ return (0, _get2["default"])((0, _getPrototypeOf2["default"])(WiggleGetMultiRegionStats.prototype), "deserializeArguments", this).call(this, args, rpcDriverClassName);
177
+
178
+ case 2:
179
+ l = _context3.sent;
180
+ return _context3.abrupt("return", _objectSpread(_objectSpread({}, l), {}, {
181
+ filters: args.filters ? new _serializableFilterChain["default"]({
182
+ filters: args.filters
183
+ }) : undefined
184
+ }));
185
+
186
+ case 4:
187
+ case "end":
188
+ return _context3.stop();
189
+ }
190
+ }
191
+ }, _callee3, this);
192
+ }));
193
+
194
+ function deserializeArguments(_x5, _x6) {
195
+ return _deserializeArguments2.apply(this, arguments);
196
+ }
197
+
198
+ return deserializeArguments;
199
+ }()
200
+ }, {
201
+ key: "serializeArguments",
202
+ value: function () {
203
+ var _serializeArguments = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee4(args, rpcDriverClassName) {
204
+ var _this$pluginManager$r, _this$pluginManager$r2;
205
+
206
+ var assemblyManager, renamedArgs;
207
+ return _regenerator["default"].wrap(function _callee4$(_context4) {
208
+ while (1) {
209
+ switch (_context4.prev = _context4.next) {
210
+ case 0:
211
+ assemblyManager = (_this$pluginManager$r = this.pluginManager.rootModel) === null || _this$pluginManager$r === void 0 ? void 0 : (_this$pluginManager$r2 = _this$pluginManager$r.session) === null || _this$pluginManager$r2 === void 0 ? void 0 : _this$pluginManager$r2.assemblyManager;
212
+
213
+ if (assemblyManager) {
214
+ _context4.next = 3;
215
+ break;
216
+ }
217
+
218
+ return _context4.abrupt("return", args);
219
+
220
+ case 3:
221
+ _context4.next = 5;
222
+ return (0, _util.renameRegionsIfNeeded)(assemblyManager, _objectSpread(_objectSpread({}, args), {}, {
223
+ filters: args.filters && args.filters.toJSON().filters
224
+ }));
225
+
226
+ case 5:
227
+ renamedArgs = _context4.sent;
228
+ return _context4.abrupt("return", (0, _get2["default"])((0, _getPrototypeOf2["default"])(WiggleGetMultiRegionStats.prototype), "serializeArguments", this).call(this, renamedArgs, rpcDriverClassName));
229
+
230
+ case 7:
231
+ case "end":
232
+ return _context4.stop();
233
+ }
234
+ }
235
+ }, _callee4, this);
236
+ }));
237
+
238
+ function serializeArguments(_x7, _x8) {
239
+ return _serializeArguments.apply(this, arguments);
240
+ }
241
+
242
+ return serializeArguments;
243
+ }()
244
+ }, {
245
+ key: "execute",
246
+ value: function () {
247
+ var _execute2 = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee5(args, rpcDriverClassName) {
248
+ var deserializedArgs, regions, adapterConfig, sessionId, _yield$getAdapter2, dataAdapter;
249
+
250
+ return _regenerator["default"].wrap(function _callee5$(_context5) {
251
+ while (1) {
252
+ switch (_context5.prev = _context5.next) {
253
+ case 0:
254
+ _context5.next = 2;
255
+ return this.deserializeArguments(args, rpcDriverClassName);
256
+
257
+ case 2:
258
+ deserializedArgs = _context5.sent;
259
+ regions = deserializedArgs.regions, adapterConfig = deserializedArgs.adapterConfig, sessionId = deserializedArgs.sessionId;
260
+ _context5.next = 6;
261
+ return (0, _dataAdapterCache.getAdapter)(this.pluginManager, sessionId, adapterConfig);
262
+
263
+ case 6:
264
+ _yield$getAdapter2 = _context5.sent;
265
+ dataAdapter = _yield$getAdapter2.dataAdapter;
266
+
267
+ if (!(dataAdapter instanceof _BaseAdapter.BaseFeatureDataAdapter)) {
268
+ _context5.next = 10;
269
+ break;
270
+ }
271
+
272
+ return _context5.abrupt("return", dataAdapter.getMultiRegionStats(regions, deserializedArgs));
273
+
274
+ case 10:
275
+ throw new Error('Data adapter not found');
276
+
277
+ case 11:
278
+ case "end":
279
+ return _context5.stop();
280
+ }
281
+ }
282
+ }, _callee5, this);
283
+ }));
284
+
285
+ function execute(_x9, _x10) {
286
+ return _execute2.apply(this, arguments);
287
+ }
288
+
289
+ return execute;
290
+ }()
291
+ }]);
292
+ return WiggleGetMultiRegionStats;
293
+ }(_RpcMethodType3["default"]);
294
+
295
+ exports.WiggleGetMultiRegionStats = WiggleGetMultiRegionStats;
@@ -0,0 +1,109 @@
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 _mobxReact = require("mobx-react");
15
+
16
+ var _react = _interopRequireWildcard(require("react"));
17
+
18
+ var _ui = require("@jbrowse/core/ui");
19
+
20
+ 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); }
21
+
22
+ 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; }
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 WiggleRendering(props) {
31
+ var regions = props.regions,
32
+ features = props.features,
33
+ bpPerPx = props.bpPerPx,
34
+ width = props.width,
35
+ height = props.height,
36
+ _props$onMouseLeave = props.onMouseLeave,
37
+ _onMouseLeave = _props$onMouseLeave === void 0 ? function () {} : _props$onMouseLeave,
38
+ _props$onMouseMove = props.onMouseMove,
39
+ _onMouseMove = _props$onMouseMove === void 0 ? function () {} : _props$onMouseMove,
40
+ _props$onFeatureClick = props.onFeatureClick,
41
+ onFeatureClick = _props$onFeatureClick === void 0 ? function () {} : _props$onFeatureClick;
42
+
43
+ var _regions = (0, _slicedToArray2["default"])(regions, 1),
44
+ region = _regions[0];
45
+
46
+ var ref = (0, _react.useRef)(null);
47
+
48
+ function getFeatureUnderMouse(eventClientX) {
49
+ // calculates feature under mouse
50
+ var offset = 0;
51
+
52
+ if (ref.current) {
53
+ offset = ref.current.getBoundingClientRect().left;
54
+ }
55
+
56
+ var offsetX = eventClientX - offset;
57
+ var px = region.reversed ? width - offsetX : offsetX;
58
+ var clientBp = region.start + bpPerPx * px;
59
+ var featureUnderMouse;
60
+
61
+ var _iterator = _createForOfIteratorHelper(features.values()),
62
+ _step;
63
+
64
+ try {
65
+ for (_iterator.s(); !(_step = _iterator.n()).done;) {
66
+ var feature = _step.value;
67
+
68
+ if (clientBp <= feature.get('end') && clientBp >= feature.get('start')) {
69
+ featureUnderMouse = feature;
70
+ break;
71
+ }
72
+ }
73
+ } catch (err) {
74
+ _iterator.e(err);
75
+ } finally {
76
+ _iterator.f();
77
+ }
78
+
79
+ return featureUnderMouse;
80
+ }
81
+
82
+ return /*#__PURE__*/_react["default"].createElement("div", {
83
+ ref: ref,
84
+ "data-testid": "wiggle-rendering-test",
85
+ onMouseMove: function onMouseMove(event) {
86
+ var featureUnderMouse = getFeatureUnderMouse(event.clientX);
87
+
88
+ _onMouseMove(event, featureUnderMouse ? featureUnderMouse.id() : undefined);
89
+ },
90
+ onClick: function onClick(event) {
91
+ var featureUnderMouse = getFeatureUnderMouse(event.clientX);
92
+ onFeatureClick(event, featureUnderMouse ? featureUnderMouse.id() : undefined);
93
+ },
94
+ onMouseLeave: function onMouseLeave(event) {
95
+ return _onMouseLeave(event);
96
+ },
97
+ role: "presentation",
98
+ className: "WiggleRendering",
99
+ style: {
100
+ overflow: 'visible',
101
+ position: 'relative',
102
+ height: height
103
+ }
104
+ }, /*#__PURE__*/_react["default"].createElement(_ui.PrerenderedCanvas, props));
105
+ }
106
+
107
+ var _default = (0, _mobxReact.observer)(WiggleRendering);
108
+
109
+ exports["default"] = _default;
@@ -0,0 +1,52 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
6
+
7
+ var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
8
+
9
+ var _react = _interopRequireDefault(require("react"));
10
+
11
+ var _react2 = require("@testing-library/react");
12
+
13
+ var _WiggleRendering = _interopRequireDefault(require("./WiggleRendering"));
14
+
15
+ // these tests do very little, let's try to expand them at some point
16
+ test('one', /*#__PURE__*/(0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee() {
17
+ var _render, container, getByTestId, test;
18
+
19
+ return _regenerator["default"].wrap(function _callee$(_context) {
20
+ while (1) {
21
+ switch (_context.prev = _context.next) {
22
+ case 0:
23
+ _render = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_WiggleRendering["default"], {
24
+ width: 500,
25
+ height: 500,
26
+ features: new Map(),
27
+ highResolutionScaling: 1,
28
+ regions: [{
29
+ refName: 'chr1',
30
+ start: 1,
31
+ end: 3
32
+ }],
33
+ bpPerPx: 3,
34
+ config: {
35
+ type: 'DummyRenderer'
36
+ }
37
+ })), container = _render.container, getByTestId = _render.getByTestId;
38
+ _context.next = 3;
39
+ return getByTestId('wiggle-rendering-test');
40
+
41
+ case 3:
42
+ test = _context.sent;
43
+ expect(_react2.fireEvent.click(test)).toBeTruthy();
44
+ expect(container.firstChild).toMatchSnapshot();
45
+
46
+ case 6:
47
+ case "end":
48
+ return _context.stop();
49
+ }
50
+ }
51
+ }, _callee);
52
+ })));