@jbrowse/plugin-alignments 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/AlignmentsFeatureDetail/AlignmentsFeatureDetail.js +216 -0
- package/dist/AlignmentsFeatureDetail/index.js +63 -0
- package/dist/AlignmentsFeatureDetail/index.test.js +60 -0
- package/dist/AlignmentsTrack/index.js +37 -0
- package/dist/BamAdapter/BamAdapter.js +598 -0
- package/dist/BamAdapter/BamAdapter.test.js +177 -0
- package/dist/BamAdapter/BamSlightlyLazyFeature.d.ts +1 -10
- package/dist/BamAdapter/BamSlightlyLazyFeature.js +176 -0
- package/dist/BamAdapter/MismatchParser.d.ts +3 -5
- package/dist/BamAdapter/MismatchParser.js +384 -0
- package/dist/BamAdapter/MismatchParser.test.js +259 -0
- package/dist/BamAdapter/configSchema.js +48 -0
- package/dist/BamAdapter/index.js +36 -0
- package/dist/CramAdapter/CramAdapter.js +660 -0
- package/dist/CramAdapter/CramAdapter.test.js +138 -0
- package/dist/CramAdapter/CramSlightlyLazyFeature.d.ts +1 -2
- package/dist/CramAdapter/CramSlightlyLazyFeature.js +447 -0
- package/dist/CramAdapter/CramTestAdapters.js +234 -0
- package/dist/CramAdapter/configSchema.js +40 -0
- package/dist/CramAdapter/index.js +36 -0
- package/dist/HtsgetBamAdapter/HtsgetBamAdapter.js +97 -0
- package/dist/HtsgetBamAdapter/configSchema.js +31 -0
- package/dist/HtsgetBamAdapter/index.js +42 -0
- package/dist/LinearAlignmentsDisplay/components/AlignmentsDisplay.js +69 -0
- package/dist/LinearAlignmentsDisplay/index.js +31 -0
- package/dist/LinearAlignmentsDisplay/models/configSchema.js +25 -0
- package/dist/LinearAlignmentsDisplay/models/configSchema.test.js +83 -0
- package/dist/LinearAlignmentsDisplay/models/model.js +250 -0
- package/dist/LinearPileupDisplay/components/ColorByModifications.js +123 -0
- package/dist/LinearPileupDisplay/components/ColorByTag.js +98 -0
- package/dist/LinearPileupDisplay/components/FilterByTag.js +203 -0
- package/dist/LinearPileupDisplay/components/LinearPileupDisplayBlurb.js +32 -0
- package/dist/LinearPileupDisplay/components/SetFeatureHeight.js +99 -0
- package/dist/LinearPileupDisplay/components/SetMaxHeight.js +90 -0
- package/dist/LinearPileupDisplay/components/SortByTag.js +95 -0
- package/dist/LinearPileupDisplay/configSchema.js +47 -0
- package/dist/LinearPileupDisplay/configSchema.test.js +92 -0
- package/dist/LinearPileupDisplay/index.js +30 -0
- package/dist/LinearPileupDisplay/model.js +602 -0
- package/dist/LinearSNPCoverageDisplay/components/Tooltip.js +63 -0
- package/dist/LinearSNPCoverageDisplay/index.js +30 -0
- package/dist/LinearSNPCoverageDisplay/models/configSchema.js +57 -0
- package/dist/LinearSNPCoverageDisplay/models/configSchema.test.js +62 -0
- package/dist/LinearSNPCoverageDisplay/models/model.d.ts +2 -2
- package/dist/LinearSNPCoverageDisplay/models/model.js +237 -0
- package/dist/NestedFrequencyTable.js +152 -0
- package/dist/PileupRPC/rpcMethods.js +285 -0
- package/dist/PileupRenderer/PileupLayoutSession.js +79 -0
- package/dist/PileupRenderer/PileupRenderer.d.ts +20 -6
- package/dist/PileupRenderer/PileupRenderer.js +1220 -0
- package/dist/PileupRenderer/components/PileupRendering.js +270 -0
- package/dist/PileupRenderer/components/PileupRendering.test.js +36 -0
- package/dist/PileupRenderer/configSchema.js +72 -0
- package/dist/PileupRenderer/index.js +25 -0
- package/dist/PileupRenderer/sortUtil.js +112 -0
- package/dist/SNPCoverageAdapter/SNPCoverageAdapter.d.ts +3 -11
- package/dist/SNPCoverageAdapter/SNPCoverageAdapter.js +606 -0
- package/dist/SNPCoverageAdapter/configSchema.js +22 -0
- package/dist/SNPCoverageAdapter/index.js +45 -0
- package/dist/SNPCoverageRenderer/SNPCoverageRenderer.js +296 -0
- package/dist/SNPCoverageRenderer/configSchema.js +40 -0
- package/dist/SNPCoverageRenderer/index.js +34 -0
- package/dist/declare.d.js +1 -0
- package/dist/index.js +154 -6
- package/dist/index.test.js +26 -0
- package/dist/plugin-alignments.cjs.development.js +591 -552
- package/dist/plugin-alignments.cjs.development.js.map +1 -1
- package/dist/plugin-alignments.cjs.production.min.js +1 -1
- package/dist/plugin-alignments.cjs.production.min.js.map +1 -1
- package/dist/plugin-alignments.esm.js +594 -555
- package/dist/plugin-alignments.esm.js.map +1 -1
- package/dist/shared.js +96 -0
- package/dist/util.d.ts +4 -0
- package/dist/util.js +135 -0
- package/package.json +5 -9
- package/src/BamAdapter/BamAdapter.ts +45 -15
- package/src/BamAdapter/BamSlightlyLazyFeature.ts +11 -79
- package/src/BamAdapter/MismatchParser.test.ts +53 -297
- package/src/BamAdapter/MismatchParser.ts +54 -116
- package/src/BamAdapter/configSchema.ts +0 -4
- package/src/CramAdapter/CramAdapter.ts +42 -15
- package/src/CramAdapter/CramSlightlyLazyFeature.ts +3 -10
- package/src/LinearPileupDisplay/components/ColorByModifications.tsx +76 -80
- package/src/LinearPileupDisplay/components/ColorByTag.tsx +24 -23
- package/src/LinearPileupDisplay/components/FilterByTag.tsx +73 -68
- package/src/LinearPileupDisplay/components/SetFeatureHeight.tsx +28 -26
- package/src/LinearPileupDisplay/components/SetMaxHeight.tsx +24 -13
- package/src/LinearPileupDisplay/components/SortByTag.tsx +29 -21
- package/src/LinearPileupDisplay/model.ts +8 -22
- package/src/LinearSNPCoverageDisplay/models/model.ts +6 -36
- package/src/PileupRenderer/PileupRenderer.tsx +178 -60
- package/src/SNPCoverageAdapter/SNPCoverageAdapter.ts +189 -244
- package/src/SNPCoverageRenderer/SNPCoverageRenderer.ts +12 -11
- package/src/util.ts +25 -0
|
@@ -0,0 +1,203 @@
|
|
|
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
|
+
paper: {
|
|
29
|
+
padding: theme.spacing(2),
|
|
30
|
+
margin: theme.spacing(2)
|
|
31
|
+
},
|
|
32
|
+
closeButton: {
|
|
33
|
+
position: 'absolute',
|
|
34
|
+
right: theme.spacing(1),
|
|
35
|
+
top: theme.spacing(1),
|
|
36
|
+
color: theme.palette.grey[500]
|
|
37
|
+
},
|
|
38
|
+
field: {
|
|
39
|
+
margin: theme.spacing(2)
|
|
40
|
+
}
|
|
41
|
+
};
|
|
42
|
+
});
|
|
43
|
+
var flagNames = ['read paired', 'read mapped in proper pair', 'read unmapped', 'mate unmapped', 'read reverse strand', 'mate reverse strand', 'first in pair', 'second in pair', 'not primary alignment', 'read fails platform/vendor quality checks', 'read is PCR or optical duplicate', 'supplementary alignment'];
|
|
44
|
+
|
|
45
|
+
function Bitmask(props) {
|
|
46
|
+
var _props$flag = props.flag,
|
|
47
|
+
flag = _props$flag === void 0 ? 0 : _props$flag,
|
|
48
|
+
setFlag = props.setFlag;
|
|
49
|
+
return /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, /*#__PURE__*/_react["default"].createElement(_core.TextField, {
|
|
50
|
+
type: "number",
|
|
51
|
+
value: flag,
|
|
52
|
+
onChange: function onChange(event) {
|
|
53
|
+
return setFlag(+event.target.value);
|
|
54
|
+
}
|
|
55
|
+
}), flagNames.map(function (name, index) {
|
|
56
|
+
var val = flag & 1 << index;
|
|
57
|
+
var key = "".concat(name, "_").concat(val);
|
|
58
|
+
return /*#__PURE__*/_react["default"].createElement("div", {
|
|
59
|
+
key: key
|
|
60
|
+
}, /*#__PURE__*/_react["default"].createElement("input", {
|
|
61
|
+
type: "checkbox",
|
|
62
|
+
checked: Boolean(val),
|
|
63
|
+
onChange: function onChange(event) {
|
|
64
|
+
if (event.target.checked) {
|
|
65
|
+
setFlag(flag | 1 << index);
|
|
66
|
+
} else {
|
|
67
|
+
setFlag(flag & ~(1 << index));
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
}), /*#__PURE__*/_react["default"].createElement("label", {
|
|
71
|
+
htmlFor: key
|
|
72
|
+
}, name));
|
|
73
|
+
}));
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
function FilterByTagDlg(props) {
|
|
77
|
+
var _filterBy$tagFilter, _filterBy$tagFilter2;
|
|
78
|
+
|
|
79
|
+
var model = props.model,
|
|
80
|
+
handleClose = props.handleClose;
|
|
81
|
+
var classes = useStyles();
|
|
82
|
+
var filterBy = model.filterBy;
|
|
83
|
+
|
|
84
|
+
var _useState = (0, _react.useState)(filterBy === null || filterBy === void 0 ? void 0 : filterBy.flagInclude),
|
|
85
|
+
_useState2 = (0, _slicedToArray2["default"])(_useState, 2),
|
|
86
|
+
flagInclude = _useState2[0],
|
|
87
|
+
setFlagInclude = _useState2[1];
|
|
88
|
+
|
|
89
|
+
var _useState3 = (0, _react.useState)(filterBy === null || filterBy === void 0 ? void 0 : filterBy.flagExclude),
|
|
90
|
+
_useState4 = (0, _slicedToArray2["default"])(_useState3, 2),
|
|
91
|
+
flagExclude = _useState4[0],
|
|
92
|
+
setFlagExclude = _useState4[1];
|
|
93
|
+
|
|
94
|
+
var _useState5 = (0, _react.useState)((filterBy === null || filterBy === void 0 ? void 0 : (_filterBy$tagFilter = filterBy.tagFilter) === null || _filterBy$tagFilter === void 0 ? void 0 : _filterBy$tagFilter.tag) || ''),
|
|
95
|
+
_useState6 = (0, _slicedToArray2["default"])(_useState5, 2),
|
|
96
|
+
tag = _useState6[0],
|
|
97
|
+
setTag = _useState6[1];
|
|
98
|
+
|
|
99
|
+
var _useState7 = (0, _react.useState)((filterBy === null || filterBy === void 0 ? void 0 : (_filterBy$tagFilter2 = filterBy.tagFilter) === null || _filterBy$tagFilter2 === void 0 ? void 0 : _filterBy$tagFilter2.value) || ''),
|
|
100
|
+
_useState8 = (0, _slicedToArray2["default"])(_useState7, 2),
|
|
101
|
+
tagValue = _useState8[0],
|
|
102
|
+
setTagValue = _useState8[1];
|
|
103
|
+
|
|
104
|
+
var _useState9 = (0, _react.useState)((filterBy === null || filterBy === void 0 ? void 0 : filterBy.readName) || ''),
|
|
105
|
+
_useState10 = (0, _slicedToArray2["default"])(_useState9, 2),
|
|
106
|
+
readName = _useState10[0],
|
|
107
|
+
setReadName = _useState10[1];
|
|
108
|
+
|
|
109
|
+
var validTag = tag.match(/^[A-Za-z][A-Za-z0-9]$/);
|
|
110
|
+
var site = 'https://broadinstitute.github.io/picard/explain-flags.html';
|
|
111
|
+
return /*#__PURE__*/_react["default"].createElement(_core.Dialog, {
|
|
112
|
+
open: true,
|
|
113
|
+
onClose: handleClose
|
|
114
|
+
}, /*#__PURE__*/_react["default"].createElement(_core.DialogTitle, null, "Filter options", /*#__PURE__*/_react["default"].createElement(_core.IconButton, {
|
|
115
|
+
"aria-label": "close",
|
|
116
|
+
className: classes.closeButton,
|
|
117
|
+
onClick: handleClose
|
|
118
|
+
}, /*#__PURE__*/_react["default"].createElement(_Close["default"], null))), /*#__PURE__*/_react["default"].createElement(_core.DialogContent, null, /*#__PURE__*/_react["default"].createElement(_core.Typography, null, "Set filter bitmask options. Refer to ", /*#__PURE__*/_react["default"].createElement(_core.Link, {
|
|
119
|
+
href: site
|
|
120
|
+
}, site), ' ', "for details"), /*#__PURE__*/_react["default"].createElement(_core.Paper, {
|
|
121
|
+
className: classes.paper,
|
|
122
|
+
variant: "outlined"
|
|
123
|
+
}, /*#__PURE__*/_react["default"].createElement("div", {
|
|
124
|
+
style: {
|
|
125
|
+
display: 'flex'
|
|
126
|
+
}
|
|
127
|
+
}, /*#__PURE__*/_react["default"].createElement("div", null, /*#__PURE__*/_react["default"].createElement(_core.Typography, null, "Read must have ALL these flags"), /*#__PURE__*/_react["default"].createElement(Bitmask, {
|
|
128
|
+
flag: flagInclude,
|
|
129
|
+
setFlag: setFlagInclude
|
|
130
|
+
})), /*#__PURE__*/_react["default"].createElement("div", null, /*#__PURE__*/_react["default"].createElement(_core.Typography, null, "Read must have NONE of these flags"), /*#__PURE__*/_react["default"].createElement(Bitmask, {
|
|
131
|
+
flag: flagExclude,
|
|
132
|
+
setFlag: setFlagExclude
|
|
133
|
+
})))), /*#__PURE__*/_react["default"].createElement(_core.Paper, {
|
|
134
|
+
className: classes.paper,
|
|
135
|
+
variant: "outlined"
|
|
136
|
+
}, /*#__PURE__*/_react["default"].createElement(_core.Typography, null, "Filter by tag name and value. Use * in the value field to get all reads containing any value for that tag. Example: filter tag name SA with value * to get all split/supplementary reads. Other examples include HP for haplotype, or RG for read group"), /*#__PURE__*/_react["default"].createElement(_core.TextField, {
|
|
137
|
+
className: classes.field,
|
|
138
|
+
value: tag,
|
|
139
|
+
onChange: function onChange(event) {
|
|
140
|
+
setTag(event.target.value);
|
|
141
|
+
},
|
|
142
|
+
placeholder: "Enter tag name",
|
|
143
|
+
inputProps: {
|
|
144
|
+
maxLength: 2,
|
|
145
|
+
'data-testid': 'color-tag-name-input'
|
|
146
|
+
},
|
|
147
|
+
error: tag.length === 2 && !validTag,
|
|
148
|
+
helperText: tag.length === 2 && !validTag ? 'Not a valid tag' : '',
|
|
149
|
+
"data-testid": "color-tag-name"
|
|
150
|
+
}), /*#__PURE__*/_react["default"].createElement(_core.TextField, {
|
|
151
|
+
className: classes.field,
|
|
152
|
+
value: tagValue,
|
|
153
|
+
onChange: function onChange(event) {
|
|
154
|
+
setTagValue(event.target.value);
|
|
155
|
+
},
|
|
156
|
+
placeholder: "Enter tag value",
|
|
157
|
+
inputProps: {
|
|
158
|
+
'data-testid': 'color-tag-name-input'
|
|
159
|
+
},
|
|
160
|
+
"data-testid": "color-tag-value"
|
|
161
|
+
})), /*#__PURE__*/_react["default"].createElement(_core.Paper, {
|
|
162
|
+
className: classes.paper,
|
|
163
|
+
variant: "outlined"
|
|
164
|
+
}, /*#__PURE__*/_react["default"].createElement(_core.Typography, null, "Filter by read name"), /*#__PURE__*/_react["default"].createElement(_core.TextField, {
|
|
165
|
+
className: classes.field,
|
|
166
|
+
value: readName,
|
|
167
|
+
onChange: function onChange(event) {
|
|
168
|
+
setReadName(event.target.value);
|
|
169
|
+
},
|
|
170
|
+
placeholder: "Enter read name",
|
|
171
|
+
inputProps: {
|
|
172
|
+
'data-testid': 'color-tag-readname-input'
|
|
173
|
+
},
|
|
174
|
+
"data-testid": "color-tag-readname"
|
|
175
|
+
})), /*#__PURE__*/_react["default"].createElement(_core.DialogActions, null, /*#__PURE__*/_react["default"].createElement(_core.Button, {
|
|
176
|
+
variant: "contained",
|
|
177
|
+
color: "primary",
|
|
178
|
+
autoFocus: true,
|
|
179
|
+
type: "submit",
|
|
180
|
+
onClick: function onClick() {
|
|
181
|
+
model.setFilterBy({
|
|
182
|
+
flagInclude: flagInclude,
|
|
183
|
+
flagExclude: flagExclude,
|
|
184
|
+
readName: readName,
|
|
185
|
+
tagFilter: tag !== '' ? {
|
|
186
|
+
tag: tag,
|
|
187
|
+
value: tagValue
|
|
188
|
+
} : undefined
|
|
189
|
+
});
|
|
190
|
+
handleClose();
|
|
191
|
+
}
|
|
192
|
+
}, "Submit"), /*#__PURE__*/_react["default"].createElement(_core.Button, {
|
|
193
|
+
variant: "contained",
|
|
194
|
+
color: "secondary",
|
|
195
|
+
onClick: function onClick() {
|
|
196
|
+
return handleClose();
|
|
197
|
+
}
|
|
198
|
+
}, "Cancel"))));
|
|
199
|
+
}
|
|
200
|
+
|
|
201
|
+
var _default = (0, _mobxReact.observer)(FilterByTagDlg);
|
|
202
|
+
|
|
203
|
+
exports["default"] = _default;
|
|
@@ -0,0 +1,32 @@
|
|
|
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 _react = _interopRequireDefault(require("react"));
|
|
11
|
+
|
|
12
|
+
var _mobxReact = require("mobx-react");
|
|
13
|
+
|
|
14
|
+
var _Typography = _interopRequireDefault(require("@material-ui/core/Typography"));
|
|
15
|
+
|
|
16
|
+
function LinearPileupDisplayBlurb(props) {
|
|
17
|
+
var model = props.model;
|
|
18
|
+
var sortedBy = model.sortedBy;
|
|
19
|
+
return sortedBy ? /*#__PURE__*/_react["default"].createElement("div", {
|
|
20
|
+
"data-testid": "blurb-".concat(model.sortedBy),
|
|
21
|
+
style: {
|
|
22
|
+
backgroundColor: 'white'
|
|
23
|
+
}
|
|
24
|
+
}, /*#__PURE__*/_react["default"].createElement(_Typography["default"], {
|
|
25
|
+
color: "secondary",
|
|
26
|
+
variant: "caption"
|
|
27
|
+
}, model.sortedBy ? "Sorted by ".concat(sortedBy.type.toLowerCase(), " at ").concat(sortedBy.refName, ":").concat(sortedBy.pos) : null)) : null;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
var _default = (0, _mobxReact.observer)(LinearPileupDisplayBlurb);
|
|
31
|
+
|
|
32
|
+
exports["default"] = _default;
|
|
@@ -0,0 +1,99 @@
|
|
|
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
|
+
closeButton: {
|
|
29
|
+
position: 'absolute',
|
|
30
|
+
right: theme.spacing(1),
|
|
31
|
+
top: theme.spacing(1),
|
|
32
|
+
color: theme.palette.grey[500]
|
|
33
|
+
}
|
|
34
|
+
};
|
|
35
|
+
});
|
|
36
|
+
|
|
37
|
+
function SetFeatureHeightDlg(props) {
|
|
38
|
+
var classes = useStyles();
|
|
39
|
+
var model = props.model,
|
|
40
|
+
handleClose = props.handleClose;
|
|
41
|
+
var featureHeightSetting = model.featureHeightSetting,
|
|
42
|
+
noSpacingSetting = model.noSpacing;
|
|
43
|
+
|
|
44
|
+
var _useState = (0, _react.useState)("".concat(featureHeightSetting)),
|
|
45
|
+
_useState2 = (0, _slicedToArray2["default"])(_useState, 2),
|
|
46
|
+
height = _useState2[0],
|
|
47
|
+
setHeight = _useState2[1];
|
|
48
|
+
|
|
49
|
+
var _useState3 = (0, _react.useState)(noSpacingSetting),
|
|
50
|
+
_useState4 = (0, _slicedToArray2["default"])(_useState3, 2),
|
|
51
|
+
noSpacing = _useState4[0],
|
|
52
|
+
setNoSpacing = _useState4[1];
|
|
53
|
+
|
|
54
|
+
var ok = height !== '' && !Number.isNaN(+height);
|
|
55
|
+
return /*#__PURE__*/_react["default"].createElement(_core.Dialog, {
|
|
56
|
+
open: true,
|
|
57
|
+
onClose: handleClose
|
|
58
|
+
}, /*#__PURE__*/_react["default"].createElement(_core.DialogTitle, null, "Set feature height", /*#__PURE__*/_react["default"].createElement(_core.IconButton, {
|
|
59
|
+
className: classes.closeButton,
|
|
60
|
+
onClick: handleClose
|
|
61
|
+
}, /*#__PURE__*/_react["default"].createElement(_Close["default"], null))), /*#__PURE__*/_react["default"].createElement(_core.DialogContent, null, /*#__PURE__*/_react["default"].createElement(_core.Typography, null, "Adjust the feature height and whether there is any spacing between features. Setting feature height to 1 and removing spacing makes the display very compact."), /*#__PURE__*/_react["default"].createElement(_core.TextField, {
|
|
62
|
+
value: height,
|
|
63
|
+
helperText: "Feature height",
|
|
64
|
+
onChange: function onChange(event) {
|
|
65
|
+
setHeight(event.target.value);
|
|
66
|
+
}
|
|
67
|
+
}), /*#__PURE__*/_react["default"].createElement(_core.FormControlLabel, {
|
|
68
|
+
control: /*#__PURE__*/_react["default"].createElement(_core.Checkbox, {
|
|
69
|
+
checked: !!noSpacing,
|
|
70
|
+
onChange: function onChange() {
|
|
71
|
+
return setNoSpacing(function (val) {
|
|
72
|
+
return !val;
|
|
73
|
+
});
|
|
74
|
+
}
|
|
75
|
+
}),
|
|
76
|
+
label: "Remove spacing between features in y-direction?"
|
|
77
|
+
}), /*#__PURE__*/_react["default"].createElement(_core.DialogActions, null, /*#__PURE__*/_react["default"].createElement(_core.Button, {
|
|
78
|
+
variant: "contained",
|
|
79
|
+
color: "primary",
|
|
80
|
+
type: "submit",
|
|
81
|
+
autoFocus: true,
|
|
82
|
+
disabled: !ok,
|
|
83
|
+
onClick: function onClick() {
|
|
84
|
+
model.setFeatureHeight(height !== '' && !Number.isNaN(+height) ? +height : undefined);
|
|
85
|
+
model.setNoSpacing(noSpacing);
|
|
86
|
+
handleClose();
|
|
87
|
+
}
|
|
88
|
+
}, "Submit"), /*#__PURE__*/_react["default"].createElement(_core.Button, {
|
|
89
|
+
variant: "contained",
|
|
90
|
+
color: "secondary",
|
|
91
|
+
onClick: function onClick() {
|
|
92
|
+
return handleClose();
|
|
93
|
+
}
|
|
94
|
+
}, "Cancel"))));
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
var _default = (0, _mobxReact.observer)(SetFeatureHeightDlg);
|
|
98
|
+
|
|
99
|
+
exports["default"] = _default;
|
|
@@ -0,0 +1,90 @@
|
|
|
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
|
+
}, /*#__PURE__*/_react["default"].createElement(_core.DialogTitle, null, "Filter options", /*#__PURE__*/_react["default"].createElement(_core.IconButton, {
|
|
59
|
+
"aria-label": "close",
|
|
60
|
+
className: classes.closeButton,
|
|
61
|
+
onClick: handleClose
|
|
62
|
+
}, /*#__PURE__*/_react["default"].createElement(_Close["default"], null))), /*#__PURE__*/_react["default"].createElement(_core.DialogContent, {
|
|
63
|
+
className: classes.root
|
|
64
|
+
}, /*#__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, {
|
|
65
|
+
value: max,
|
|
66
|
+
onChange: function onChange(event) {
|
|
67
|
+
setMax(event.target.value);
|
|
68
|
+
},
|
|
69
|
+
placeholder: "Enter max height for layout"
|
|
70
|
+
}), /*#__PURE__*/_react["default"].createElement(_core.DialogActions, null, /*#__PURE__*/_react["default"].createElement(_core.Button, {
|
|
71
|
+
variant: "contained",
|
|
72
|
+
color: "primary",
|
|
73
|
+
type: "submit",
|
|
74
|
+
autoFocus: true,
|
|
75
|
+
onClick: function onClick() {
|
|
76
|
+
model.setMaxHeight(max !== '' && !Number.isNaN(+max) ? +max : undefined);
|
|
77
|
+
handleClose();
|
|
78
|
+
}
|
|
79
|
+
}, "Submit"), /*#__PURE__*/_react["default"].createElement(_core.Button, {
|
|
80
|
+
variant: "contained",
|
|
81
|
+
color: "secondary",
|
|
82
|
+
onClick: function onClick() {
|
|
83
|
+
return handleClose();
|
|
84
|
+
}
|
|
85
|
+
}, "Cancel"))));
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
var _default = (0, _mobxReact.observer)(SetMaxHeightDlg);
|
|
89
|
+
|
|
90
|
+
exports["default"] = _default;
|
|
@@ -0,0 +1,95 @@
|
|
|
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
|
+
margin: 0,
|
|
30
|
+
padding: theme.spacing(2)
|
|
31
|
+
},
|
|
32
|
+
closeButton: {
|
|
33
|
+
position: 'absolute',
|
|
34
|
+
right: theme.spacing(1),
|
|
35
|
+
top: theme.spacing(1),
|
|
36
|
+
color: theme.palette.grey[500]
|
|
37
|
+
}
|
|
38
|
+
};
|
|
39
|
+
});
|
|
40
|
+
|
|
41
|
+
function SortByTagDlg(props) {
|
|
42
|
+
var classes = useStyles();
|
|
43
|
+
var model = props.model,
|
|
44
|
+
handleClose = props.handleClose;
|
|
45
|
+
|
|
46
|
+
var _useState = (0, _react.useState)(''),
|
|
47
|
+
_useState2 = (0, _slicedToArray2["default"])(_useState, 2),
|
|
48
|
+
tag = _useState2[0],
|
|
49
|
+
setTag = _useState2[1];
|
|
50
|
+
|
|
51
|
+
var validTag = tag.match(/^[A-Za-z][A-Za-z0-9]$/);
|
|
52
|
+
return /*#__PURE__*/_react["default"].createElement(_core.Dialog, {
|
|
53
|
+
open: true,
|
|
54
|
+
onClose: handleClose
|
|
55
|
+
}, /*#__PURE__*/_react["default"].createElement(_core.DialogTitle, null, "Sort by tag", /*#__PURE__*/_react["default"].createElement(_core.IconButton, {
|
|
56
|
+
"aria-label": "close",
|
|
57
|
+
className: classes.closeButton,
|
|
58
|
+
onClick: handleClose
|
|
59
|
+
}, /*#__PURE__*/_react["default"].createElement(_Close["default"], null))), /*#__PURE__*/_react["default"].createElement(_core.DialogContent, null, /*#__PURE__*/_react["default"].createElement(_core.Typography, null, "Set the tag to sort by"), /*#__PURE__*/_react["default"].createElement(_core.Typography, {
|
|
60
|
+
color: "textSecondary"
|
|
61
|
+
}, "Examples: HP for haplotype, RG for read group, etc."), /*#__PURE__*/_react["default"].createElement(_core.TextField, {
|
|
62
|
+
value: tag,
|
|
63
|
+
onChange: function onChange(event) {
|
|
64
|
+
return setTag(event.target.value);
|
|
65
|
+
},
|
|
66
|
+
placeholder: "Enter tag name",
|
|
67
|
+
inputProps: {
|
|
68
|
+
maxLength: 2,
|
|
69
|
+
'data-testid': 'sort-tag-name-input'
|
|
70
|
+
},
|
|
71
|
+
error: tag.length === 2 && !validTag,
|
|
72
|
+
helperText: tag.length === 2 && !validTag ? 'Not a valid tag' : '',
|
|
73
|
+
autoComplete: "off",
|
|
74
|
+
"data-testid": "sort-tag-name"
|
|
75
|
+
}), /*#__PURE__*/_react["default"].createElement(_core.DialogActions, null, /*#__PURE__*/_react["default"].createElement(_core.Button, {
|
|
76
|
+
variant: "contained",
|
|
77
|
+
color: "primary",
|
|
78
|
+
type: "submit",
|
|
79
|
+
autoFocus: true,
|
|
80
|
+
onClick: function onClick() {
|
|
81
|
+
model.setSortedBy('tag', tag);
|
|
82
|
+
handleClose();
|
|
83
|
+
}
|
|
84
|
+
}, "Submit"), /*#__PURE__*/_react["default"].createElement(_core.Button, {
|
|
85
|
+
variant: "contained",
|
|
86
|
+
color: "secondary",
|
|
87
|
+
onClick: function onClick() {
|
|
88
|
+
return handleClose();
|
|
89
|
+
}
|
|
90
|
+
}, "Cancel"))));
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
var _default = (0, _mobxReact.observer)(SortByTagDlg);
|
|
94
|
+
|
|
95
|
+
exports["default"] = _default;
|
|
@@ -0,0 +1,47 @@
|
|
|
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 _pluginLinearGenomeView = require("@jbrowse/plugin-linear-genome-view");
|
|
11
|
+
|
|
12
|
+
var _mobxStateTree = require("mobx-state-tree");
|
|
13
|
+
|
|
14
|
+
function PileupConfigFactory(pluginManager) {
|
|
15
|
+
var PileupRendererConfigSchema = pluginManager.getRendererType('PileupRenderer').configSchema;
|
|
16
|
+
var SvgFeatureRendererConfigSchema = pluginManager.getRendererType('SvgFeatureRenderer').configSchema; // modify config schema to take in a sub coverage display
|
|
17
|
+
|
|
18
|
+
return (0, _configuration.ConfigurationSchema)('LinearPileupDisplay', {
|
|
19
|
+
defaultRendering: {
|
|
20
|
+
type: 'stringEnum',
|
|
21
|
+
model: _mobxStateTree.types.enumeration('Rendering', ['pileup', 'svg']),
|
|
22
|
+
defaultValue: 'pileup'
|
|
23
|
+
},
|
|
24
|
+
renderers: (0, _configuration.ConfigurationSchema)('RenderersConfiguration', {
|
|
25
|
+
PileupRenderer: PileupRendererConfigSchema,
|
|
26
|
+
SvgFeatureRenderer: SvgFeatureRendererConfigSchema
|
|
27
|
+
}),
|
|
28
|
+
renderer: '',
|
|
29
|
+
maxFeatureScreenDensity: {
|
|
30
|
+
type: 'number',
|
|
31
|
+
description: 'maximum features per pixel that is displayed in the view',
|
|
32
|
+
defaultValue: 5
|
|
33
|
+
},
|
|
34
|
+
colorScheme: {
|
|
35
|
+
type: 'stringEnum',
|
|
36
|
+
model: _mobxStateTree.types.enumeration('colorScheme', ['strand', 'normal', 'insertSize', 'insertSizeAndOrientation', 'mappingQuality', 'tag']),
|
|
37
|
+
description: 'color scheme to use',
|
|
38
|
+
defaultValue: 'normal'
|
|
39
|
+
}
|
|
40
|
+
}, {
|
|
41
|
+
baseConfiguration: (0, _pluginLinearGenomeView.linearBasicDisplayConfigSchemaFactory)(pluginManager),
|
|
42
|
+
explicitlyTyped: true
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
var _default = PileupConfigFactory;
|
|
47
|
+
exports["default"] = _default;
|
|
@@ -0,0 +1,92 @@
|
|
|
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 _Plugin3 = _interopRequireDefault(require("@jbrowse/core/Plugin"));
|
|
16
|
+
|
|
17
|
+
var _PluginManager = _interopRequireDefault(require("@jbrowse/core/PluginManager"));
|
|
18
|
+
|
|
19
|
+
var _BoxRendererType = _interopRequireDefault(require("@jbrowse/core/pluggableElementTypes/renderers/BoxRendererType"));
|
|
20
|
+
|
|
21
|
+
var _pluginSvg = require("@jbrowse/plugin-svg");
|
|
22
|
+
|
|
23
|
+
var _PileupRenderer = _interopRequireDefault(require("../PileupRenderer"));
|
|
24
|
+
|
|
25
|
+
var _configSchema = _interopRequireDefault(require("./configSchema"));
|
|
26
|
+
|
|
27
|
+
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); }; }
|
|
28
|
+
|
|
29
|
+
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; } }
|
|
30
|
+
|
|
31
|
+
// mock warnings to avoid unnecessary outputs
|
|
32
|
+
beforeEach(function () {
|
|
33
|
+
jest.spyOn(console, 'warn').mockImplementation(function () {});
|
|
34
|
+
});
|
|
35
|
+
afterEach(function () {
|
|
36
|
+
console.warn.mockRestore();
|
|
37
|
+
});
|
|
38
|
+
|
|
39
|
+
var PileupRendererPlugin = /*#__PURE__*/function (_Plugin) {
|
|
40
|
+
(0, _inherits2["default"])(PileupRendererPlugin, _Plugin);
|
|
41
|
+
|
|
42
|
+
var _super = _createSuper(PileupRendererPlugin);
|
|
43
|
+
|
|
44
|
+
function PileupRendererPlugin() {
|
|
45
|
+
(0, _classCallCheck2["default"])(this, PileupRendererPlugin);
|
|
46
|
+
return _super.apply(this, arguments);
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
(0, _createClass2["default"])(PileupRendererPlugin, [{
|
|
50
|
+
key: "install",
|
|
51
|
+
value: function install(pluginManager) {
|
|
52
|
+
(0, _PileupRenderer["default"])(pluginManager);
|
|
53
|
+
}
|
|
54
|
+
}]);
|
|
55
|
+
return PileupRendererPlugin;
|
|
56
|
+
}(_Plugin3["default"]);
|
|
57
|
+
|
|
58
|
+
var SvgFeatureRendererPlugin = /*#__PURE__*/function (_Plugin2) {
|
|
59
|
+
(0, _inherits2["default"])(SvgFeatureRendererPlugin, _Plugin2);
|
|
60
|
+
|
|
61
|
+
var _super2 = _createSuper(SvgFeatureRendererPlugin);
|
|
62
|
+
|
|
63
|
+
function SvgFeatureRendererPlugin() {
|
|
64
|
+
(0, _classCallCheck2["default"])(this, SvgFeatureRendererPlugin);
|
|
65
|
+
return _super2.apply(this, arguments);
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
(0, _createClass2["default"])(SvgFeatureRendererPlugin, [{
|
|
69
|
+
key: "install",
|
|
70
|
+
value: function install(pluginManager) {
|
|
71
|
+
pluginManager.addRendererType(function () {
|
|
72
|
+
return new _BoxRendererType["default"]({
|
|
73
|
+
name: 'SvgFeatureRenderer',
|
|
74
|
+
ReactComponent: _pluginSvg.SvgFeatureRendererReactComponent,
|
|
75
|
+
configSchema: _pluginSvg.svgFeatureRendererConfigSchema,
|
|
76
|
+
pluginManager: pluginManager
|
|
77
|
+
});
|
|
78
|
+
});
|
|
79
|
+
}
|
|
80
|
+
}]);
|
|
81
|
+
return SvgFeatureRendererPlugin;
|
|
82
|
+
}(_Plugin3["default"]);
|
|
83
|
+
|
|
84
|
+
test('has a type attr', function () {
|
|
85
|
+
var configSchema = (0, _configSchema["default"])(new _PluginManager["default"]([new PileupRendererPlugin(), new SvgFeatureRendererPlugin()]).createPluggableElements().configure());
|
|
86
|
+
var config = configSchema.create({
|
|
87
|
+
type: 'LinearPileupDisplay',
|
|
88
|
+
displayId: 'display0',
|
|
89
|
+
name: 'Zonker Display'
|
|
90
|
+
});
|
|
91
|
+
expect(config.type).toEqual('LinearPileupDisplay');
|
|
92
|
+
});
|