@jbrowse/plugin-variants 1.6.8 → 1.7.1
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/ChordVariantDisplay/index.d.ts +3 -3
- package/dist/ChordVariantDisplay/index.js +33 -0
- package/dist/ChordVariantDisplay/models/ChordVariantDisplay.d.ts +5 -5
- package/dist/ChordVariantDisplay/models/ChordVariantDisplay.js +76 -0
- package/dist/LinearVariantDisplay/configSchema.d.ts +5 -5
- package/dist/LinearVariantDisplay/configSchema.js +18 -0
- package/dist/LinearVariantDisplay/configSchema.test.js +92 -0
- package/dist/LinearVariantDisplay/index.d.ts +2 -2
- package/dist/LinearVariantDisplay/index.js +23 -0
- package/dist/LinearVariantDisplay/model.d.ts +207 -207
- package/dist/LinearVariantDisplay/model.js +75 -0
- package/dist/StructuralVariantChordRenderer/ReactComponent.d.ts +24 -24
- package/dist/StructuralVariantChordRenderer/ReactComponent.js +228 -0
- package/dist/StructuralVariantChordRenderer/index.d.ts +3 -3
- package/dist/StructuralVariantChordRenderer/index.js +48 -0
- package/dist/VariantFeatureWidget/BreakendOptionDialog.d.ts +10 -10
- package/dist/VariantFeatureWidget/BreakendOptionDialog.js +127 -0
- package/dist/VariantFeatureWidget/VariantFeatureWidget.d.ts +4 -4
- package/dist/VariantFeatureWidget/VariantFeatureWidget.js +251 -0
- package/dist/VariantFeatureWidget/VariantFeatureWidget.test.js +56 -0
- package/dist/VariantFeatureWidget/index.d.ts +11 -11
- package/dist/VariantFeatureWidget/index.js +35 -0
- package/dist/VcfAdapter/VcfAdapter.d.ts +24 -24
- package/dist/VcfAdapter/VcfAdapter.js +383 -0
- package/dist/VcfAdapter/VcfAdapter.test.js +55 -0
- package/dist/VcfAdapter/configSchema.d.ts +2 -2
- package/dist/VcfAdapter/configSchema.js +22 -0
- package/dist/VcfAdapter/index.d.ts +1 -1
- package/dist/VcfAdapter/index.js +15 -0
- package/dist/VcfTabixAdapter/VcfFeature.d.ts +59 -59
- package/dist/VcfTabixAdapter/VcfFeature.js +261 -0
- package/dist/VcfTabixAdapter/VcfFeature.test.js +106 -0
- package/dist/VcfTabixAdapter/VcfTabixAdapter.d.ts +35 -35
- package/dist/VcfTabixAdapter/VcfTabixAdapter.js +392 -0
- package/dist/VcfTabixAdapter/VcfTabixAdapter.test.js +99 -0
- package/dist/VcfTabixAdapter/configSchema.d.ts +2 -2
- package/dist/VcfTabixAdapter/configSchema.js +38 -0
- package/dist/VcfTabixAdapter/index.d.ts +1 -1
- package/dist/VcfTabixAdapter/index.js +15 -0
- package/dist/index.d.ts +7 -7
- package/dist/index.js +214 -6
- package/dist/index.test.js +37 -0
- package/package.json +5 -7
- package/dist/LinearVariantDisplay/configSchema.test.d.ts +0 -1
- package/dist/VariantFeatureWidget/VariantFeatureWidget.test.d.ts +0 -1
- package/dist/index.test.d.ts +0 -1
- package/dist/plugin-variants.cjs.development.js +0 -2897
- package/dist/plugin-variants.cjs.development.js.map +0 -1
- package/dist/plugin-variants.cjs.production.min.js +0 -2
- package/dist/plugin-variants.cjs.production.min.js.map +0 -1
- package/dist/plugin-variants.esm.js +0 -2889
- package/dist/plugin-variants.esm.js.map +0 -1
|
@@ -0,0 +1,228 @@
|
|
|
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 _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
|
|
13
|
+
|
|
14
|
+
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
15
|
+
|
|
16
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
17
|
+
|
|
18
|
+
var _mobxReact = require("mobx-react");
|
|
19
|
+
|
|
20
|
+
var _util = require("@jbrowse/core/util");
|
|
21
|
+
|
|
22
|
+
var _configuration = require("@jbrowse/core/configuration");
|
|
23
|
+
|
|
24
|
+
var _mst = require("@jbrowse/core/util/types/mst");
|
|
25
|
+
|
|
26
|
+
var _vcf = require("@gmod/vcf");
|
|
27
|
+
|
|
28
|
+
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
29
|
+
|
|
30
|
+
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); }
|
|
31
|
+
|
|
32
|
+
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; }
|
|
33
|
+
|
|
34
|
+
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; } } }; }
|
|
35
|
+
|
|
36
|
+
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); }
|
|
37
|
+
|
|
38
|
+
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; }
|
|
39
|
+
|
|
40
|
+
function bpToRadians(block, pos) {
|
|
41
|
+
var blockStart = block.region.elided ? 0 : block.region.start;
|
|
42
|
+
var blockEnd = block.region.elided ? 0 : block.region.end;
|
|
43
|
+
var bpOffset = block.flipped ? blockEnd - pos : pos - blockStart;
|
|
44
|
+
var radians = bpOffset / block.bpPerRadian + block.startRadians;
|
|
45
|
+
return radians;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
var Chord = (0, _mobxReact.observer)(function Chord(_ref) {
|
|
49
|
+
var _feature$get;
|
|
50
|
+
|
|
51
|
+
var feature = _ref.feature,
|
|
52
|
+
blocksForRefs = _ref.blocksForRefs,
|
|
53
|
+
radius = _ref.radius,
|
|
54
|
+
config = _ref.config,
|
|
55
|
+
bezierRadius = _ref.bezierRadius,
|
|
56
|
+
selected = _ref.selected,
|
|
57
|
+
_onClick = _ref.onClick;
|
|
58
|
+
// find the blocks that our start and end points belong to
|
|
59
|
+
var startBlock = blocksForRefs[feature.get('refName')];
|
|
60
|
+
|
|
61
|
+
if (!startBlock) {
|
|
62
|
+
return null;
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
var svType;
|
|
66
|
+
|
|
67
|
+
if (feature.get('INFO')) {
|
|
68
|
+
;
|
|
69
|
+
|
|
70
|
+
var _ref2 = feature.get('INFO').SVTYPE || [];
|
|
71
|
+
|
|
72
|
+
var _ref3 = (0, _slicedToArray2["default"])(_ref2, 1);
|
|
73
|
+
|
|
74
|
+
svType = _ref3[0];
|
|
75
|
+
} else if (feature.get('mate')) {
|
|
76
|
+
svType = 'mate';
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
var endPosition;
|
|
80
|
+
var endBlock;
|
|
81
|
+
var alt = (_feature$get = feature.get('ALT')) === null || _feature$get === void 0 ? void 0 : _feature$get[0];
|
|
82
|
+
var bnd = alt && (0, _vcf.parseBreakend)(alt);
|
|
83
|
+
|
|
84
|
+
if (bnd) {
|
|
85
|
+
// VCF BND
|
|
86
|
+
var matePosition = bnd.MatePosition.split(':');
|
|
87
|
+
endPosition = +matePosition[1];
|
|
88
|
+
endBlock = blocksForRefs[matePosition[0]];
|
|
89
|
+
} else if (alt === '<TRA>') {
|
|
90
|
+
var _feature$get2, _feature$get2$CHR, _feature$get3, _feature$get3$END;
|
|
91
|
+
|
|
92
|
+
// VCF TRA
|
|
93
|
+
var chr2 = (_feature$get2 = feature.get('INFO')) === null || _feature$get2 === void 0 ? void 0 : (_feature$get2$CHR = _feature$get2.CHR2) === null || _feature$get2$CHR === void 0 ? void 0 : _feature$get2$CHR[0];
|
|
94
|
+
var end = (_feature$get3 = feature.get('INFO')) === null || _feature$get3 === void 0 ? void 0 : (_feature$get3$END = _feature$get3.END) === null || _feature$get3$END === void 0 ? void 0 : _feature$get3$END[0];
|
|
95
|
+
endPosition = parseInt(end, 10);
|
|
96
|
+
endBlock = blocksForRefs[chr2];
|
|
97
|
+
} else if (svType === 'mate') {
|
|
98
|
+
// generic simplefeatures arcs
|
|
99
|
+
var mate = feature.get('mate');
|
|
100
|
+
var _chr = mate.refName;
|
|
101
|
+
endPosition = mate.start;
|
|
102
|
+
endBlock = blocksForRefs[_chr];
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
if (endBlock) {
|
|
106
|
+
var startPos = feature.get('start');
|
|
107
|
+
var startRadians = bpToRadians(startBlock, startPos);
|
|
108
|
+
var endRadians = bpToRadians(endBlock, endPosition);
|
|
109
|
+
var startXY = (0, _util.polarToCartesian)(radius, startRadians);
|
|
110
|
+
var endXY = (0, _util.polarToCartesian)(radius, endRadians);
|
|
111
|
+
var controlXY = (0, _util.polarToCartesian)(bezierRadius, (endRadians + startRadians) / 2);
|
|
112
|
+
var strokeColor = selected ? (0, _configuration.readConfObject)(config, 'strokeColorSelected', {
|
|
113
|
+
feature: feature
|
|
114
|
+
}) : (0, _configuration.readConfObject)(config, 'strokeColor', {
|
|
115
|
+
feature: feature
|
|
116
|
+
});
|
|
117
|
+
var hoverStrokeColor = (0, _configuration.readConfObject)(config, 'strokeColorHover', {
|
|
118
|
+
feature: feature
|
|
119
|
+
});
|
|
120
|
+
return /*#__PURE__*/_react["default"].createElement("path", {
|
|
121
|
+
"data-testid": "chord-".concat(feature.id()),
|
|
122
|
+
d: ['M'].concat((0, _toConsumableArray2["default"])(startXY), ['Q'], (0, _toConsumableArray2["default"])(controlXY), (0, _toConsumableArray2["default"])(endXY)).join(' '),
|
|
123
|
+
style: {
|
|
124
|
+
stroke: strokeColor
|
|
125
|
+
},
|
|
126
|
+
onClick: function onClick(evt) {
|
|
127
|
+
return _onClick(feature, startBlock.region, endBlock.region, evt);
|
|
128
|
+
},
|
|
129
|
+
onMouseOver: function onMouseOver(evt) {
|
|
130
|
+
if (!selected) {
|
|
131
|
+
evt.target.style.stroke = hoverStrokeColor;
|
|
132
|
+
evt.target.style.strokeWidth = 3;
|
|
133
|
+
}
|
|
134
|
+
},
|
|
135
|
+
onMouseOut: function onMouseOut(evt) {
|
|
136
|
+
if (!selected) {
|
|
137
|
+
evt.target.style.stroke = strokeColor;
|
|
138
|
+
evt.target.style.strokeWidth = 1;
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
});
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
return null;
|
|
145
|
+
});
|
|
146
|
+
|
|
147
|
+
function StructuralVariantChords(props) {
|
|
148
|
+
var features = props.features,
|
|
149
|
+
config = props.config,
|
|
150
|
+
displayModel = props.displayModel,
|
|
151
|
+
blockDefinitions = props.blockDefinitions,
|
|
152
|
+
radius = props.radius,
|
|
153
|
+
bezierRadius = props.bezierRadius,
|
|
154
|
+
selectedFeatureId = props.displayModel.selectedFeatureId,
|
|
155
|
+
onChordClick = props.onChordClick; // make a map of refName -> blockDefinition
|
|
156
|
+
|
|
157
|
+
var blocksForRefsMemo = (0, _react.useMemo)(function () {
|
|
158
|
+
var blocksForRefs = {};
|
|
159
|
+
blockDefinitions.forEach(function (block) {
|
|
160
|
+
var regions = block.region.elided ? block.region.regions : [block.region];
|
|
161
|
+
regions.forEach(function (region) {
|
|
162
|
+
blocksForRefs[region.refName] = block;
|
|
163
|
+
});
|
|
164
|
+
});
|
|
165
|
+
return blocksForRefs;
|
|
166
|
+
}, [blockDefinitions]); // console.log(blocksForRefs)
|
|
167
|
+
|
|
168
|
+
var chords = [];
|
|
169
|
+
|
|
170
|
+
var _iterator = _createForOfIteratorHelper(features),
|
|
171
|
+
_step;
|
|
172
|
+
|
|
173
|
+
try {
|
|
174
|
+
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
175
|
+
var _step$value = (0, _slicedToArray2["default"])(_step.value, 2),
|
|
176
|
+
id = _step$value[0],
|
|
177
|
+
feature = _step$value[1];
|
|
178
|
+
|
|
179
|
+
var selected = String(selectedFeatureId) === String(feature.id());
|
|
180
|
+
chords.push( /*#__PURE__*/_react["default"].createElement(Chord, {
|
|
181
|
+
key: id,
|
|
182
|
+
feature: feature,
|
|
183
|
+
config: config,
|
|
184
|
+
displayModel: displayModel,
|
|
185
|
+
radius: radius,
|
|
186
|
+
bezierRadius: bezierRadius,
|
|
187
|
+
blocksForRefs: blocksForRefsMemo,
|
|
188
|
+
selected: selected,
|
|
189
|
+
onClick: onChordClick
|
|
190
|
+
}));
|
|
191
|
+
}
|
|
192
|
+
} catch (err) {
|
|
193
|
+
_iterator.e(err);
|
|
194
|
+
} finally {
|
|
195
|
+
_iterator.f();
|
|
196
|
+
}
|
|
197
|
+
|
|
198
|
+
var trackStyleId = "chords-".concat(displayModel.id);
|
|
199
|
+
return /*#__PURE__*/_react["default"].createElement("g", {
|
|
200
|
+
id: trackStyleId,
|
|
201
|
+
"data-testid": "structuralVariantChordRenderer"
|
|
202
|
+
}, /*#__PURE__*/_react["default"].createElement("style", {
|
|
203
|
+
// eslint-disable-next-line react/no-danger
|
|
204
|
+
dangerouslySetInnerHTML: {
|
|
205
|
+
__html: "\n #".concat(trackStyleId, " > path {\n cursor: crosshair;\n fill: none;\n }\n")
|
|
206
|
+
}
|
|
207
|
+
}), chords);
|
|
208
|
+
}
|
|
209
|
+
|
|
210
|
+
StructuralVariantChords.propTypes = {
|
|
211
|
+
features: _propTypes["default"].instanceOf(Map).isRequired,
|
|
212
|
+
config: _mst.PropTypes.ConfigSchema.isRequired,
|
|
213
|
+
displayModel: _mobxReact.PropTypes.objectOrObservableObject,
|
|
214
|
+
blockDefinitions: _propTypes["default"].arrayOf(_mobxReact.PropTypes.objectOrObservableObject).isRequired,
|
|
215
|
+
radius: _propTypes["default"].number.isRequired,
|
|
216
|
+
bezierRadius: _propTypes["default"].number.isRequired,
|
|
217
|
+
selectedFeatureId: _propTypes["default"].string,
|
|
218
|
+
onChordClick: _propTypes["default"].oneOfType([_propTypes["default"].func, _propTypes["default"].string])
|
|
219
|
+
};
|
|
220
|
+
StructuralVariantChords.defaultProps = {
|
|
221
|
+
displayModel: undefined,
|
|
222
|
+
selectedFeatureId: '',
|
|
223
|
+
onChordClick: undefined
|
|
224
|
+
};
|
|
225
|
+
|
|
226
|
+
var _default = (0, _mobxReact.observer)(StructuralVariantChords);
|
|
227
|
+
|
|
228
|
+
exports["default"] = _default;
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
export default ChordRendererConfigF;
|
|
2
|
-
declare function ChordRendererConfigF(pluginManager: any): ChordRendererType;
|
|
3
|
-
import ChordRendererType from "@jbrowse/core/pluggableElementTypes/renderers/CircularChordRendererType";
|
|
1
|
+
export default ChordRendererConfigF;
|
|
2
|
+
declare function ChordRendererConfigF(pluginManager: any): ChordRendererType;
|
|
3
|
+
import ChordRendererType from "@jbrowse/core/pluggableElementTypes/renderers/CircularChordRendererType";
|
|
@@ -0,0 +1,48 @@
|
|
|
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 _CircularChordRendererType = _interopRequireDefault(require("@jbrowse/core/pluggableElementTypes/renderers/CircularChordRendererType"));
|
|
11
|
+
|
|
12
|
+
var _configuration = require("@jbrowse/core/configuration");
|
|
13
|
+
|
|
14
|
+
var _ReactComponent = _interopRequireDefault(require("./ReactComponent"));
|
|
15
|
+
|
|
16
|
+
var ChordRendererConfigF = function ChordRendererConfigF(pluginManager) {
|
|
17
|
+
var configSchema = (0, _configuration.ConfigurationSchema)('StructuralVariantChordRenderer', {
|
|
18
|
+
strokeColor: {
|
|
19
|
+
type: 'color',
|
|
20
|
+
description: 'the line color of each arc',
|
|
21
|
+
defaultValue: 'rgba(255,133,0,0.32)',
|
|
22
|
+
contextVariable: ['feature']
|
|
23
|
+
},
|
|
24
|
+
strokeColorSelected: {
|
|
25
|
+
type: 'color',
|
|
26
|
+
description: 'the line color of an arc that has been selected',
|
|
27
|
+
defaultValue: 'black',
|
|
28
|
+
contextVariable: ['feature']
|
|
29
|
+
},
|
|
30
|
+
strokeColorHover: {
|
|
31
|
+
type: 'color',
|
|
32
|
+
description: 'the line color of an arc that is being hovered over with the mouse',
|
|
33
|
+
defaultValue: '#555',
|
|
34
|
+
contextVariable: ['feature']
|
|
35
|
+
}
|
|
36
|
+
}, {
|
|
37
|
+
explicitlyTyped: true
|
|
38
|
+
});
|
|
39
|
+
return new _CircularChordRendererType["default"]({
|
|
40
|
+
name: 'StructuralVariantChordRenderer',
|
|
41
|
+
ReactComponent: _ReactComponent["default"],
|
|
42
|
+
configSchema: configSchema,
|
|
43
|
+
pluginManager: pluginManager
|
|
44
|
+
});
|
|
45
|
+
};
|
|
46
|
+
|
|
47
|
+
var _default = ChordRendererConfigF;
|
|
48
|
+
exports["default"] = _default;
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
/// <reference types="react" />
|
|
2
|
-
import { Feature } from '@jbrowse/core/util/simpleFeature';
|
|
3
|
-
declare function BreakendOptionDialog({ model, handleClose, feature, viewType, }: {
|
|
4
|
-
model: any;
|
|
5
|
-
handleClose: () => void;
|
|
6
|
-
feature: Feature;
|
|
7
|
-
viewType: any;
|
|
8
|
-
}): JSX.Element;
|
|
9
|
-
declare const _default: typeof BreakendOptionDialog;
|
|
10
|
-
export default _default;
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
import { Feature } from '@jbrowse/core/util/simpleFeature';
|
|
3
|
+
declare function BreakendOptionDialog({ model, handleClose, feature, viewType, }: {
|
|
4
|
+
model: any;
|
|
5
|
+
handleClose: () => void;
|
|
6
|
+
feature: Feature;
|
|
7
|
+
viewType: any;
|
|
8
|
+
}): JSX.Element;
|
|
9
|
+
declare const _default: typeof BreakendOptionDialog;
|
|
10
|
+
export default _default;
|
|
@@ -0,0 +1,127 @@
|
|
|
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
|
+
var _mobxStateTree = require("mobx-state-tree");
|
|
23
|
+
|
|
24
|
+
var _util = require("@jbrowse/core/util");
|
|
25
|
+
|
|
26
|
+
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); }
|
|
27
|
+
|
|
28
|
+
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; }
|
|
29
|
+
|
|
30
|
+
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
31
|
+
var useStyles = (0, _core.makeStyles)(function (theme) {
|
|
32
|
+
return {
|
|
33
|
+
closeButton: {
|
|
34
|
+
position: 'absolute',
|
|
35
|
+
right: theme.spacing(1),
|
|
36
|
+
top: theme.spacing(1),
|
|
37
|
+
color: theme.palette.grey[500]
|
|
38
|
+
},
|
|
39
|
+
block: {
|
|
40
|
+
display: 'block'
|
|
41
|
+
}
|
|
42
|
+
};
|
|
43
|
+
});
|
|
44
|
+
|
|
45
|
+
function BreakendOptionDialog(_ref) {
|
|
46
|
+
var model = _ref.model,
|
|
47
|
+
handleClose = _ref.handleClose,
|
|
48
|
+
feature = _ref.feature,
|
|
49
|
+
viewType = _ref.viewType;
|
|
50
|
+
var classes = useStyles();
|
|
51
|
+
|
|
52
|
+
var _useState = (0, _react.useState)(true),
|
|
53
|
+
_useState2 = (0, _slicedToArray2["default"])(_useState, 2),
|
|
54
|
+
copyTracks = _useState2[0],
|
|
55
|
+
setCopyTracks = _useState2[1];
|
|
56
|
+
|
|
57
|
+
var _useState3 = (0, _react.useState)(true),
|
|
58
|
+
_useState4 = (0, _slicedToArray2["default"])(_useState3, 2),
|
|
59
|
+
mirrorTracks = _useState4[0],
|
|
60
|
+
setMirrorTracks = _useState4[1];
|
|
61
|
+
|
|
62
|
+
return /*#__PURE__*/_react["default"].createElement(_core.Dialog, {
|
|
63
|
+
open: true,
|
|
64
|
+
onClose: handleClose
|
|
65
|
+
}, /*#__PURE__*/_react["default"].createElement(_core.DialogTitle, null, "Breakpoint split view options", handleClose ? /*#__PURE__*/_react["default"].createElement(_core.IconButton, {
|
|
66
|
+
className: classes.closeButton,
|
|
67
|
+
onClick: function onClick() {
|
|
68
|
+
return handleClose();
|
|
69
|
+
}
|
|
70
|
+
}, /*#__PURE__*/_react["default"].createElement(_Close["default"], null)) : null), /*#__PURE__*/_react["default"].createElement(_core.Divider, null), /*#__PURE__*/_react["default"].createElement(_core.DialogContent, null, /*#__PURE__*/_react["default"].createElement(_core.FormControlLabel, {
|
|
71
|
+
className: classes.block,
|
|
72
|
+
control: /*#__PURE__*/_react["default"].createElement(_core.Checkbox, {
|
|
73
|
+
checked: copyTracks,
|
|
74
|
+
onChange: function onChange() {
|
|
75
|
+
return setCopyTracks(function (val) {
|
|
76
|
+
return !val;
|
|
77
|
+
});
|
|
78
|
+
}
|
|
79
|
+
}),
|
|
80
|
+
label: "Copy tracks into the new view"
|
|
81
|
+
}), /*#__PURE__*/_react["default"].createElement(_core.FormControlLabel, {
|
|
82
|
+
className: classes.block,
|
|
83
|
+
control: /*#__PURE__*/_react["default"].createElement(_core.Checkbox, {
|
|
84
|
+
checked: mirrorTracks,
|
|
85
|
+
onChange: function onChange() {
|
|
86
|
+
return setMirrorTracks(function (val) {
|
|
87
|
+
return !val;
|
|
88
|
+
});
|
|
89
|
+
}
|
|
90
|
+
}),
|
|
91
|
+
label: "Mirror tracks vertically in vertically stacked view"
|
|
92
|
+
})), /*#__PURE__*/_react["default"].createElement(_core.DialogActions, null, /*#__PURE__*/_react["default"].createElement(_core.Button, {
|
|
93
|
+
onClick: function onClick() {
|
|
94
|
+
var view = model.view;
|
|
95
|
+
var session = (0, _util.getSession)(model);
|
|
96
|
+
|
|
97
|
+
try {
|
|
98
|
+
var viewSnapshot = viewType.snapshotFromBreakendFeature(feature, view);
|
|
99
|
+
viewSnapshot.views[0].offsetPx -= view.width / 2 + 100;
|
|
100
|
+
viewSnapshot.views[1].offsetPx -= view.width / 2 + 100;
|
|
101
|
+
viewSnapshot.featureData = feature;
|
|
102
|
+
var viewTracks = (0, _mobxStateTree.getSnapshot)(view.tracks);
|
|
103
|
+
viewSnapshot.views[0].tracks = viewTracks;
|
|
104
|
+
viewSnapshot.views[1].tracks = mirrorTracks ? viewTracks.slice().reverse() : viewTracks;
|
|
105
|
+
session.addView('BreakpointSplitView', viewSnapshot);
|
|
106
|
+
} catch (e) {
|
|
107
|
+
console.error(e);
|
|
108
|
+
session.notify("".concat(e));
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
handleClose();
|
|
112
|
+
},
|
|
113
|
+
variant: "contained",
|
|
114
|
+
color: "primary",
|
|
115
|
+
autoFocus: true
|
|
116
|
+
}, "OK"), /*#__PURE__*/_react["default"].createElement(_core.Button, {
|
|
117
|
+
onClick: function onClick() {
|
|
118
|
+
return handleClose();
|
|
119
|
+
},
|
|
120
|
+
color: "secondary",
|
|
121
|
+
variant: "contained"
|
|
122
|
+
}, "Cancel")));
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
var _default = (0, _mobxReact.observer)(BreakendOptionDialog);
|
|
126
|
+
|
|
127
|
+
exports["default"] = _default;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/// <reference types="react" />
|
|
2
|
-
declare function VariantFeatureDetails(props: any): JSX.Element;
|
|
3
|
-
declare const _default: typeof VariantFeatureDetails;
|
|
4
|
-
export default _default;
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
declare function VariantFeatureDetails(props: any): JSX.Element;
|
|
3
|
+
declare const _default: typeof VariantFeatureDetails;
|
|
4
|
+
export default _default;
|