@jbrowse/plugin-sequence 1.6.9 → 1.7.3

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 (63) hide show
  1. package/dist/BgzipFastaAdapter/BgzipFastaAdapter.d.ts +7 -7
  2. package/dist/BgzipFastaAdapter/BgzipFastaAdapter.js +70 -0
  3. package/dist/BgzipFastaAdapter/BgzipFastaAdapter.test.js +64 -0
  4. package/dist/BgzipFastaAdapter/configSchema.d.ts +2 -2
  5. package/dist/BgzipFastaAdapter/configSchema.js +36 -0
  6. package/dist/BgzipFastaAdapter/index.d.ts +1 -1
  7. package/dist/BgzipFastaAdapter/index.js +15 -0
  8. package/dist/ChromSizesAdapter/ChromSizesAdapter.d.ts +19 -19
  9. package/dist/ChromSizesAdapter/ChromSizesAdapter.js +170 -0
  10. package/dist/ChromSizesAdapter/ChromSizesAdapter.test.js +46 -0
  11. package/dist/ChromSizesAdapter/configSchema.d.ts +2 -2
  12. package/dist/ChromSizesAdapter/configSchema.js +22 -0
  13. package/dist/ChromSizesAdapter/index.d.ts +1 -1
  14. package/dist/ChromSizesAdapter/index.js +15 -0
  15. package/dist/DivSequenceRenderer/components/DivSequenceRendering.d.ts +21 -21
  16. package/dist/DivSequenceRenderer/components/DivSequenceRendering.js +239 -0
  17. package/dist/DivSequenceRenderer/components/DivSequenceRendering.test.js +245 -0
  18. package/dist/DivSequenceRenderer/configSchema.d.ts +2 -2
  19. package/dist/DivSequenceRenderer/configSchema.js +20 -0
  20. package/dist/DivSequenceRenderer/index.d.ts +2 -2
  21. package/dist/DivSequenceRenderer/index.js +23 -0
  22. package/dist/GCContentAdapter/GCContentAdapter.d.ts +23 -23
  23. package/dist/GCContentAdapter/GCContentAdapter.js +261 -0
  24. package/dist/GCContentAdapter/configSchema.d.ts +3 -3
  25. package/dist/GCContentAdapter/configSchema.js +18 -0
  26. package/dist/GCContentAdapter/index.d.ts +6 -6
  27. package/dist/GCContentAdapter/index.js +31 -0
  28. package/dist/IndexedFastaAdapter/IndexedFastaAdapter.d.ts +25 -25
  29. package/dist/IndexedFastaAdapter/IndexedFastaAdapter.js +228 -0
  30. package/dist/IndexedFastaAdapter/IndexedFastaAdapter.test.js +71 -0
  31. package/dist/IndexedFastaAdapter/configSchema.d.ts +2 -2
  32. package/dist/IndexedFastaAdapter/configSchema.js +29 -0
  33. package/dist/IndexedFastaAdapter/index.d.ts +1 -1
  34. package/dist/IndexedFastaAdapter/index.js +15 -0
  35. package/dist/LinearReferenceSequenceDisplay/configSchema.d.ts +1 -1
  36. package/dist/LinearReferenceSequenceDisplay/configSchema.js +18 -0
  37. package/dist/LinearReferenceSequenceDisplay/index.d.ts +2 -2
  38. package/dist/LinearReferenceSequenceDisplay/index.js +21 -0
  39. package/dist/LinearReferenceSequenceDisplay/model.d.ts +208 -208
  40. package/dist/LinearReferenceSequenceDisplay/model.js +102 -0
  41. package/dist/TwoBitAdapter/TwoBitAdapter.d.ts +26 -26
  42. package/dist/TwoBitAdapter/TwoBitAdapter.js +289 -0
  43. package/dist/TwoBitAdapter/TwoBitAdapter.test.js +94 -0
  44. package/dist/TwoBitAdapter/configSchema.d.ts +2 -2
  45. package/dist/TwoBitAdapter/configSchema.js +30 -0
  46. package/dist/TwoBitAdapter/index.d.ts +1 -1
  47. package/dist/TwoBitAdapter/index.js +15 -0
  48. package/dist/declare.d.js +1 -0
  49. package/dist/index.d.ts +6 -6
  50. package/dist/index.js +325 -6
  51. package/dist/index.test.js +29 -0
  52. package/dist/referenceSeqTrackConfig.d.ts +2 -2
  53. package/dist/referenceSeqTrackConfig.js +88 -0
  54. package/package.json +5 -7
  55. package/src/index.ts +7 -8
  56. package/dist/DivSequenceRenderer/components/DivSequenceRendering.test.d.ts +0 -1
  57. package/dist/index.test.d.ts +0 -1
  58. package/dist/plugin-sequence.cjs.development.js +0 -2567
  59. package/dist/plugin-sequence.cjs.development.js.map +0 -1
  60. package/dist/plugin-sequence.cjs.production.min.js +0 -2
  61. package/dist/plugin-sequence.cjs.production.min.js.map +0 -1
  62. package/dist/plugin-sequence.esm.js +0 -2561
  63. package/dist/plugin-sequence.esm.js.map +0 -1
@@ -0,0 +1,239 @@
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 _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
11
+
12
+ var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
13
+
14
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
15
+
16
+ var _react = _interopRequireDefault(require("react"));
17
+
18
+ var _color = require("@jbrowse/core/util/color");
19
+
20
+ var _ui = require("@jbrowse/core/ui");
21
+
22
+ var _mobxReact = require("mobx-react");
23
+
24
+ var _util = require("@jbrowse/core/util");
25
+
26
+ /* eslint-disable @typescript-eslint/no-explicit-any */
27
+ function Translation(props) {
28
+ var codonTable = props.codonTable,
29
+ seq = props.seq,
30
+ frame = props.frame,
31
+ bpPerPx = props.bpPerPx,
32
+ region = props.region,
33
+ height = props.height,
34
+ y = props.y,
35
+ _props$reverse = props.reverse,
36
+ reverse = _props$reverse === void 0 ? false : _props$reverse,
37
+ theme = props.theme;
38
+ var scale = bpPerPx; // the tilt variable normalizes the frame to where we are starting from,
39
+ // which increases consistency across blocks
40
+
41
+ var tilt = 3 - region.start % 3; // the effectiveFrame incorporates tilt and the frame to say what the
42
+ // effective frame that is plotted. The +3 is for when frame is -2 and this
43
+ // can otherwise result in effectiveFrame -1
44
+
45
+ var effectiveFrame = (frame + tilt + 3) % 3;
46
+ var seqSliced = seq.slice(effectiveFrame);
47
+ var translated = [];
48
+
49
+ for (var i = 0; i < seqSliced.length; i += 3) {
50
+ var codon = seqSliced.slice(i, i + 3);
51
+ var normalizedCodon = reverse ? (0, _util.revcom)(codon) : codon;
52
+ var aminoAcid = codonTable[normalizedCodon] || '';
53
+ translated.push({
54
+ letter: aminoAcid,
55
+ codon: normalizedCodon.toUpperCase()
56
+ });
57
+ }
58
+
59
+ var w = 1 / scale * 3;
60
+ var drop = region.start === 0 ? 0 : w;
61
+ var render = 1 / bpPerPx >= 12;
62
+ var width = (region.end - region.start) / bpPerPx;
63
+ var map = ['#d8d8d8', '#adadad', '#8f8f8f'].reverse();
64
+ return /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, translated.map(function (element, index) {
65
+ var x = region.reversed ? width - (w * (index + 1) + effectiveFrame / scale - drop) : w * index + effectiveFrame / scale - drop;
66
+ var letter = element.letter,
67
+ codon = element.codon;
68
+ return /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, {
69
+ key: "".concat(index, "-").concat(letter)
70
+ }, /*#__PURE__*/_react["default"].createElement("rect", {
71
+ x: x,
72
+ y: y,
73
+ width: render ? w : w + 0.7
74
+ /* small fudge factor when zoomed out*/
75
+ ,
76
+ height: height,
77
+ stroke: render ? '#555' : 'none',
78
+ fill: _util.defaultStarts.includes(codon) ? theme.palette.startCodon : _util.defaultStops.includes(codon) ? theme.palette.stopCodon : map[Math.abs(frame)]
79
+ }), render ? /*#__PURE__*/_react["default"].createElement("text", {
80
+ x: x + w / 2,
81
+ y: y + height / 2,
82
+ dominantBaseline: "middle",
83
+ textAnchor: "middle"
84
+ }, letter) : null);
85
+ }));
86
+ }
87
+
88
+ function DNA(props) {
89
+ var bpPerPx = props.bpPerPx,
90
+ region = props.region,
91
+ feature = props.feature,
92
+ theme = props.theme,
93
+ height = props.height,
94
+ seq = props.seq,
95
+ y = props.y;
96
+ var render = 1 / bpPerPx >= 12;
97
+
98
+ var _bpSpanPx = (0, _util.bpSpanPx)(feature.get('start'), feature.get('end'), region, bpPerPx),
99
+ _bpSpanPx2 = (0, _slicedToArray2["default"])(_bpSpanPx, 2),
100
+ leftPx = _bpSpanPx2[0],
101
+ rightPx = _bpSpanPx2[1];
102
+
103
+ var reverse = region.reversed;
104
+ var len = feature.get('end') - feature.get('start');
105
+ var w = Math.max((rightPx - leftPx) / len, 0.8);
106
+ return /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, seq.split('').map(function (letter, index) {
107
+ var color = theme.palette.bases[letter.toUpperCase()];
108
+ var x = reverse ? rightPx - (index + 1) * w : leftPx + index * w;
109
+ return /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, {
110
+ key: index
111
+ }, /*#__PURE__*/_react["default"].createElement("rect", {
112
+ x: x,
113
+ y: y,
114
+ width: w,
115
+ height: height,
116
+ fill: color ? color.main : '#aaa',
117
+ stroke: render ? '#555' : 'none'
118
+ }), render ? /*#__PURE__*/_react["default"].createElement("text", {
119
+ x: x + w / 2,
120
+ y: y + height / 2,
121
+ dominantBaseline: "middle",
122
+ textAnchor: "middle",
123
+ fill: color ? (0, _color.contrastingTextColor)(color.main) : 'black'
124
+ }, letter) : null);
125
+ }));
126
+ }
127
+
128
+ var SequenceSVG = function SequenceSVG(_ref) {
129
+ var regions = _ref.regions,
130
+ configTheme = _ref.theme,
131
+ _ref$features = _ref.features,
132
+ features = _ref$features === void 0 ? new Map() : _ref$features,
133
+ showReverse = _ref.showReverse,
134
+ showForward = _ref.showForward,
135
+ showTranslation = _ref.showTranslation,
136
+ bpPerPx = _ref.bpPerPx;
137
+
138
+ var _regions = (0, _slicedToArray2["default"])(regions, 1),
139
+ region = _regions[0];
140
+
141
+ var theme = (0, _ui.createJBrowseTheme)(configTheme);
142
+ var codonTable = (0, _util.generateCodonTable)(_util.defaultCodonTable);
143
+ var height = 20;
144
+
145
+ var _ref2 = (0, _toConsumableArray2["default"])(features.values()),
146
+ feature = _ref2[0];
147
+
148
+ if (!feature) {
149
+ return null;
150
+ }
151
+
152
+ var seq = feature.get('seq');
153
+
154
+ if (!seq) {
155
+ return null;
156
+ } // incrementer for the y-position of the current sequence being rendered
157
+ // (applies to both translation rows and dna rows)
158
+
159
+
160
+ var currY = -20;
161
+ return /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, showTranslation && (region.reversed ? showReverse : showForward) ? [2, 1, 0].map(function (index) {
162
+ return /*#__PURE__*/_react["default"].createElement(Translation, {
163
+ key: "translation-".concat(index),
164
+ seq: seq,
165
+ y: currY += 20,
166
+ codonTable: codonTable,
167
+ frame: index,
168
+ bpPerPx: bpPerPx,
169
+ region: region,
170
+ theme: theme,
171
+ height: height,
172
+ reverse: region.reversed
173
+ });
174
+ }) : null, showForward ? /*#__PURE__*/_react["default"].createElement(DNA, {
175
+ height: height,
176
+ y: currY += 20,
177
+ feature: feature,
178
+ region: region,
179
+ seq: region.reversed ? (0, _util.complement)(seq) : seq,
180
+ bpPerPx: bpPerPx,
181
+ theme: theme
182
+ }) : null, showReverse ? /*#__PURE__*/_react["default"].createElement(DNA, {
183
+ height: height,
184
+ y: currY += 20,
185
+ feature: feature,
186
+ region: region,
187
+ seq: region.reversed ? seq : (0, _util.complement)(seq),
188
+ bpPerPx: bpPerPx,
189
+ theme: theme
190
+ }) : null, showTranslation && (region.reversed ? showForward : showReverse) ? [0, -1, -2].map(function (index) {
191
+ return /*#__PURE__*/_react["default"].createElement(Translation, {
192
+ key: "rev-translation-".concat(index),
193
+ seq: seq,
194
+ y: currY += 20,
195
+ codonTable: codonTable,
196
+ frame: index,
197
+ bpPerPx: bpPerPx,
198
+ region: region,
199
+ theme: theme,
200
+ height: height,
201
+ reverse: !region.reversed
202
+ });
203
+ }) : null);
204
+ };
205
+
206
+ var Wrapper = function Wrapper(_ref3) {
207
+ var exportSVG = _ref3.exportSVG,
208
+ width = _ref3.width,
209
+ totalHeight = _ref3.totalHeight,
210
+ children = _ref3.children;
211
+ return exportSVG ? /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, children) : /*#__PURE__*/_react["default"].createElement("svg", {
212
+ "data-testid": "sequence_track",
213
+ width: width,
214
+ height: totalHeight,
215
+ style: {
216
+ width: width,
217
+ height: totalHeight
218
+ }
219
+ }, children);
220
+ };
221
+
222
+ function Sequence(props) {
223
+ var regions = props.regions,
224
+ bpPerPx = props.bpPerPx;
225
+
226
+ var _regions2 = (0, _slicedToArray2["default"])(regions, 1),
227
+ region = _regions2[0];
228
+
229
+ var width = (region.end - region.start) / bpPerPx;
230
+ var totalHeight = 200;
231
+ return /*#__PURE__*/_react["default"].createElement(Wrapper, (0, _extends2["default"])({}, props, {
232
+ totalHeight: totalHeight,
233
+ width: width
234
+ }), /*#__PURE__*/_react["default"].createElement(SequenceSVG, props));
235
+ }
236
+
237
+ var _default = (0, _mobxReact.observer)(Sequence);
238
+
239
+ exports["default"] = _default;
@@ -0,0 +1,245 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
6
+
7
+ var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
8
+
9
+ var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
10
+
11
+ var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
12
+
13
+ var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
14
+
15
+ var _react = _interopRequireDefault(require("react"));
16
+
17
+ var _propTypes = _interopRequireDefault(require("prop-types"));
18
+
19
+ var _react2 = require("@testing-library/react");
20
+
21
+ var _ui = require("@jbrowse/core/ui");
22
+
23
+ var _PrecomputedLayout = _interopRequireDefault(require("@jbrowse/core/util/layouts/PrecomputedLayout"));
24
+
25
+ var _simpleFeature = _interopRequireDefault(require("@jbrowse/core/util/simpleFeature"));
26
+
27
+ var _core = require("@material-ui/core");
28
+
29
+ var _DivSequenceRendering = _interopRequireDefault(require("./DivSequenceRendering"));
30
+
31
+ var _configSchema = _interopRequireDefault(require("../configSchema"));
32
+
33
+ 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); }; }
34
+
35
+ 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; } }
36
+
37
+ function Rendering(props) {
38
+ return /*#__PURE__*/_react["default"].createElement(_core.ThemeProvider, {
39
+ theme: (0, _ui.createJBrowseTheme)()
40
+ }, /*#__PURE__*/_react["default"].createElement(_DivSequenceRendering["default"], props));
41
+ }
42
+
43
+ var ErrorCatcher = /*#__PURE__*/function (_React$Component) {
44
+ (0, _inherits2["default"])(ErrorCatcher, _React$Component);
45
+
46
+ var _super = _createSuper(ErrorCatcher);
47
+
48
+ function ErrorCatcher(props) {
49
+ var _this;
50
+
51
+ (0, _classCallCheck2["default"])(this, ErrorCatcher);
52
+ _this = _super.call(this, props);
53
+ _this.state = {
54
+ hasError: false,
55
+ errorText: ''
56
+ };
57
+ return _this;
58
+ }
59
+
60
+ (0, _createClass2["default"])(ErrorCatcher, [{
61
+ key: "render",
62
+ value: function render() {
63
+ var _this$state = this.state,
64
+ hasError = _this$state.hasError,
65
+ errorText = _this$state.errorText;
66
+
67
+ if (hasError) {
68
+ // You can render any custom fallback UI
69
+ return /*#__PURE__*/_react["default"].createElement("h1", {
70
+ className: "error"
71
+ }, errorText);
72
+ }
73
+
74
+ var children = this.props.children;
75
+ return children;
76
+ }
77
+ }], [{
78
+ key: "getDerivedStateFromError",
79
+ value: function getDerivedStateFromError(error) {
80
+ // Update state so the next render will show the fallback UI.
81
+ return {
82
+ hasError: true,
83
+ errorText: String(error)
84
+ };
85
+ }
86
+ }]);
87
+ return ErrorCatcher;
88
+ }(_react["default"].Component);
89
+
90
+ ErrorCatcher.propTypes = {
91
+ children: _propTypes["default"].node.isRequired
92
+ };
93
+ describe('<DivSequenceRendering />', function () {
94
+ // This just keeps our testing logs clean by not displaying `console.error`s
95
+ // from errors we intentionally throw in our tests. Hopefully React will
96
+ // someday provide a way for error boundaries to prevent error logging so we
97
+ // won't have to do this: https://github.com/facebook/react/issues/15069
98
+ var originalError = console.error;
99
+ beforeAll(function () {
100
+ console.error = function () {
101
+ for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
102
+ args[_key] = arguments[_key];
103
+ }
104
+
105
+ if (args[0].includes('feature one did not contain a valid `seq` attribute') || args[0].includes('The above error occurred in the <SequenceDivs> component')) {
106
+ return;
107
+ }
108
+
109
+ originalError.call.apply(originalError, [console].concat(args));
110
+ };
111
+ });
112
+ afterAll(function () {
113
+ console.error = originalError;
114
+ });
115
+ it('renders with no features', function () {
116
+ var _render = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(Rendering, {
117
+ width: 500,
118
+ height: 500,
119
+ regions: [{
120
+ refName: 'zonk',
121
+ start: 0,
122
+ end: 300
123
+ }],
124
+ layout: new _PrecomputedLayout["default"]({
125
+ rectangles: {},
126
+ totalHeight: 20
127
+ }),
128
+ config: _configSchema["default"].create(),
129
+ bpPerPx: 3
130
+ })),
131
+ container = _render.container;
132
+
133
+ expect(container).toMatchSnapshot();
134
+ });
135
+ it('renders with one, zoomed way out', function () {
136
+ var _render2 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(Rendering, {
137
+ width: 500,
138
+ height: 500,
139
+ regions: [{
140
+ refName: 'zonk',
141
+ start: 0,
142
+ end: 1000
143
+ }],
144
+ features: new Map([['one', new _simpleFeature["default"]({
145
+ uniqueId: 'one',
146
+ start: 1,
147
+ end: 3,
148
+ seq: 'AB'
149
+ })]]),
150
+ config: _configSchema["default"].create({}),
151
+ bpPerPx: 3
152
+ })),
153
+ container = _render2.container;
154
+
155
+ expect(container).toMatchSnapshot();
156
+ });
157
+ it('renders with one feature with no seq, zoomed in, should throw', function () {
158
+ var _render3 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(ErrorCatcher, null, /*#__PURE__*/_react["default"].createElement(Rendering, {
159
+ width: 500,
160
+ height: 500,
161
+ regions: [{
162
+ refName: 'zonk',
163
+ start: 0,
164
+ end: 1000
165
+ }],
166
+ features: new Map([['one', new _simpleFeature["default"]({
167
+ uniqueId: 'one',
168
+ start: 1,
169
+ end: 3
170
+ })]]),
171
+ config: _configSchema["default"].create({}),
172
+ bpPerPx: 0.05
173
+ }))),
174
+ container = _render3.container;
175
+
176
+ expect(container).toMatchSnapshot();
177
+ });
178
+ it('renders with one feature with an incorrect seq, zoomed in, should throw', function () {
179
+ var _render4 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(ErrorCatcher, null, /*#__PURE__*/_react["default"].createElement(Rendering, {
180
+ width: 500,
181
+ height: 500,
182
+ regions: [{
183
+ refName: 'zonk',
184
+ start: 0,
185
+ end: 1000
186
+ }],
187
+ features: new Map([['one', new _simpleFeature["default"]({
188
+ uniqueId: 'one',
189
+ start: 1,
190
+ end: 3,
191
+ seq: 'ABC'
192
+ })]]),
193
+ config: _configSchema["default"].create({}),
194
+ bpPerPx: 0.05
195
+ }))),
196
+ container = _render4.container;
197
+
198
+ expect(container).toMatchSnapshot();
199
+ });
200
+ it('renders with one feature with a correct seq, zoomed in, should render nicely', function () {
201
+ var _render5 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(Rendering, {
202
+ width: 500,
203
+ height: 500,
204
+ regions: [{
205
+ refName: 'zonk',
206
+ start: 0,
207
+ end: 1000
208
+ }],
209
+ features: new Map([['one', new _simpleFeature["default"]({
210
+ uniqueId: 'one',
211
+ start: 1,
212
+ end: 10,
213
+ seq: 'ABCDEFGHI'
214
+ })]]),
215
+ config: _configSchema["default"].create({}),
216
+ bpPerPx: 0.05
217
+ })),
218
+ container = _render5.container;
219
+
220
+ expect(container).toMatchSnapshot();
221
+ });
222
+ it('renders with one feature reversed with a correct seq, zoomed in, should render nicely', function () {
223
+ var _render6 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(Rendering, {
224
+ width: 500,
225
+ height: 500,
226
+ regions: [{
227
+ refName: 'zonk',
228
+ start: 0,
229
+ end: 1000,
230
+ reversed: true
231
+ }],
232
+ features: new Map([['one', new _simpleFeature["default"]({
233
+ uniqueId: 'one',
234
+ start: 1,
235
+ end: 10,
236
+ seq: 'ABCDEFGHI'
237
+ })]]),
238
+ config: _configSchema["default"].create({}),
239
+ bpPerPx: 0.05
240
+ })),
241
+ container = _render6.container;
242
+
243
+ expect(container).toMatchSnapshot();
244
+ });
245
+ });
@@ -1,2 +1,2 @@
1
- declare const _default: import("@jbrowse/core/configuration").AnyConfigurationSchemaType;
2
- export default _default;
1
+ declare const _default: import("@jbrowse/core/configuration").AnyConfigurationSchemaType;
2
+ export default _default;
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports["default"] = void 0;
7
+
8
+ var _configuration = require("@jbrowse/core/configuration");
9
+
10
+ var _default = (0, _configuration.ConfigurationSchema)('DivSequenceRenderer', {
11
+ height: {
12
+ type: 'number',
13
+ description: 'height in pixels of each line of sequence',
14
+ defaultValue: 16
15
+ }
16
+ }, {
17
+ explicitlyTyped: true
18
+ });
19
+
20
+ exports["default"] = _default;
@@ -1,2 +1,2 @@
1
- export { default as ReactComponent } from './components/DivSequenceRendering';
2
- export { default as configSchema } from './configSchema';
1
+ export { default as ReactComponent } from './components/DivSequenceRendering';
2
+ export { default as configSchema } from './configSchema';
@@ -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, "ReactComponent", {
9
+ enumerable: true,
10
+ get: function get() {
11
+ return _DivSequenceRendering["default"];
12
+ }
13
+ });
14
+ Object.defineProperty(exports, "configSchema", {
15
+ enumerable: true,
16
+ get: function get() {
17
+ return _configSchema["default"];
18
+ }
19
+ });
20
+
21
+ var _DivSequenceRendering = _interopRequireDefault(require("./components/DivSequenceRendering"));
22
+
23
+ var _configSchema = _interopRequireDefault(require("./configSchema"));
@@ -1,23 +1,23 @@
1
- import { BaseFeatureDataAdapter, BaseOptions } from '@jbrowse/core/data_adapters/BaseAdapter';
2
- import { Region } from '@jbrowse/core/util/types';
3
- import { Feature } from '@jbrowse/core/util/simpleFeature';
4
- export default class extends BaseFeatureDataAdapter {
5
- private windowSize;
6
- private windowDelta;
7
- private gcMode;
8
- static capabilities: string[];
9
- configure(): Promise<BaseFeatureDataAdapter>;
10
- getRefNames(): Promise<string[]>;
11
- /**
12
- * Fetch features for a certain region
13
- * @param param -
14
- * @returns Observable of Feature objects in the region
15
- */
16
- getFeatures(query: Region, opts: BaseOptions): import("rxjs").Observable<Feature>;
17
- /**
18
- * called to provide a hint that data tied to a certain region
19
- * will not be needed for the forseeable future and can be purged
20
- * from caches, etc
21
- */
22
- freeResources(): void;
23
- }
1
+ import { BaseFeatureDataAdapter, BaseOptions } from '@jbrowse/core/data_adapters/BaseAdapter';
2
+ import { Region } from '@jbrowse/core/util/types';
3
+ import { Feature } from '@jbrowse/core/util/simpleFeature';
4
+ export default class extends BaseFeatureDataAdapter {
5
+ private windowSize;
6
+ private windowDelta;
7
+ private gcMode;
8
+ static capabilities: string[];
9
+ configure(): Promise<BaseFeatureDataAdapter>;
10
+ getRefNames(): Promise<string[]>;
11
+ /**
12
+ * Fetch features for a certain region
13
+ * @param param -
14
+ * @returns Observable of Feature objects in the region
15
+ */
16
+ getFeatures(query: Region, opts: BaseOptions): import("rxjs").Observable<Feature>;
17
+ /**
18
+ * called to provide a hint that data tied to a certain region
19
+ * will not be needed for the forseeable future and can be purged
20
+ * from caches, etc
21
+ */
22
+ freeResources(): void;
23
+ }