@jbrowse/plugin-circular-view 2.0.0 → 2.1.2
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/BaseChordDisplay/components/BaseChordDisplay.js +6 -7
- package/dist/BaseChordDisplay/components/BaseChordDisplay.js.map +1 -1
- package/dist/BaseChordDisplay/components/DisplayError.js +6 -7
- package/dist/BaseChordDisplay/components/DisplayError.js.map +1 -1
- package/dist/BaseChordDisplay/components/Loading.js +14 -32
- package/dist/BaseChordDisplay/components/Loading.js.map +1 -1
- package/dist/BaseChordDisplay/components/RpcRenderedSvgGroup.js +14 -26
- package/dist/BaseChordDisplay/components/RpcRenderedSvgGroup.js.map +1 -1
- package/dist/BaseChordDisplay/models/BaseChordDisplayModel.js +59 -105
- package/dist/BaseChordDisplay/models/BaseChordDisplayModel.js.map +1 -1
- package/dist/BaseChordDisplay/models/baseChordDisplayConfig.js +2 -2
- package/dist/BaseChordDisplay/models/baseChordDisplayConfig.js.map +1 -1
- package/dist/BaseChordDisplay/models/renderReaction.js +34 -99
- package/dist/BaseChordDisplay/models/renderReaction.js.map +1 -1
- package/dist/CircularView/components/CircularView.js +34 -37
- package/dist/CircularView/components/CircularView.js.map +1 -1
- package/dist/CircularView/components/ImportForm.js +21 -38
- package/dist/CircularView/components/ImportForm.js.map +1 -1
- package/dist/CircularView/components/Ruler.js +53 -81
- package/dist/CircularView/components/Ruler.js.map +1 -1
- package/dist/CircularView/models/CircularView.js +104 -143
- package/dist/CircularView/models/CircularView.js.map +1 -1
- package/dist/CircularView/models/slices.js +20 -59
- package/dist/CircularView/models/slices.js.map +1 -1
- package/dist/CircularView/models/viewportVisibleRegion.js +25 -41
- package/dist/CircularView/models/viewportVisibleRegion.js.map +1 -1
- package/dist/index.js +35 -106
- package/dist/index.js.map +1 -1
- package/esm/BaseChordDisplay/components/Loading.js +0 -1
- package/esm/BaseChordDisplay/components/Loading.js.map +1 -1
- package/package.json +3 -4
- package/src/BaseChordDisplay/components/Loading.tsx +0 -1
|
@@ -1,76 +1,17 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __assign = (this && this.__assign) || function () {
|
|
3
|
-
__assign = Object.assign || function(t) {
|
|
4
|
-
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
5
|
-
s = arguments[i];
|
|
6
|
-
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
7
|
-
t[p] = s[p];
|
|
8
|
-
}
|
|
9
|
-
return t;
|
|
10
|
-
};
|
|
11
|
-
return __assign.apply(this, arguments);
|
|
12
|
-
};
|
|
13
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
14
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
15
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
16
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
17
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
18
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
19
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
20
|
-
});
|
|
21
|
-
};
|
|
22
|
-
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
23
|
-
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
|
24
|
-
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
25
|
-
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
26
|
-
function step(op) {
|
|
27
|
-
if (f) throw new TypeError("Generator is already executing.");
|
|
28
|
-
while (_) try {
|
|
29
|
-
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
30
|
-
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
31
|
-
switch (op[0]) {
|
|
32
|
-
case 0: case 1: t = op; break;
|
|
33
|
-
case 4: _.label++; return { value: op[1], done: false };
|
|
34
|
-
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
35
|
-
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
36
|
-
default:
|
|
37
|
-
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
38
|
-
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
39
|
-
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
40
|
-
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
41
|
-
if (t[2]) _.ops.pop();
|
|
42
|
-
_.trys.pop(); continue;
|
|
43
|
-
}
|
|
44
|
-
op = body.call(thisArg, _);
|
|
45
|
-
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
46
|
-
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
47
|
-
}
|
|
48
|
-
};
|
|
49
|
-
var __rest = (this && this.__rest) || function (s, e) {
|
|
50
|
-
var t = {};
|
|
51
|
-
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
|
52
|
-
t[p] = s[p];
|
|
53
|
-
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
|
54
|
-
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
55
|
-
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
|
56
|
-
t[p[i]] = s[p[i]];
|
|
57
|
-
}
|
|
58
|
-
return t;
|
|
59
|
-
};
|
|
60
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
61
|
-
exports.default = (
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
var getSession = jbrequire('@jbrowse/core/util').getSession;
|
|
3
|
+
exports.default = ({ jbrequire }) => {
|
|
4
|
+
const { getRpcSessionId } = jbrequire('@jbrowse/core/util/tracks');
|
|
5
|
+
const { getContainingView } = jbrequire('@jbrowse/core/util');
|
|
6
|
+
const { getSession } = jbrequire('@jbrowse/core/util');
|
|
66
7
|
function renderReactionData(self) {
|
|
67
8
|
var _a;
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
9
|
+
const view = getContainingView(self);
|
|
10
|
+
const { rendererType } = self;
|
|
11
|
+
const { rpcManager } = getSession(view);
|
|
71
12
|
return {
|
|
72
|
-
rendererType
|
|
73
|
-
rpcManager
|
|
13
|
+
rendererType,
|
|
14
|
+
rpcManager,
|
|
74
15
|
renderProps: self.renderProps(),
|
|
75
16
|
renderArgs: {
|
|
76
17
|
assemblyName: (_a = view.displayedRegions[0]) === null || _a === void 0 ? void 0 : _a.assemblyName,
|
|
@@ -83,37 +24,31 @@ exports.default = (function (_a) {
|
|
|
83
24
|
},
|
|
84
25
|
};
|
|
85
26
|
}
|
|
86
|
-
function renderReactionEffect(props, signal, self) {
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
}
|
|
109
|
-
return [4 /*yield*/, rendererType.renderInClient(rpcManager, __assign(__assign(__assign({}, renderArgs), renderProps), { signal: signal }))];
|
|
110
|
-
case 1:
|
|
111
|
-
_a = _b.sent(), html = _a.html, data = __rest(_a, ["html"]);
|
|
112
|
-
return [2 /*return*/, { html: html, data: data, renderingComponent: rendererType.ReactComponent }];
|
|
113
|
-
}
|
|
114
|
-
});
|
|
27
|
+
async function renderReactionEffect(props, signal, self) {
|
|
28
|
+
if (!props) {
|
|
29
|
+
throw new Error('cannot render with no props');
|
|
30
|
+
}
|
|
31
|
+
const { rendererType, rpcManager, cannotBeRenderedReason, renderArgs, renderProps, } = props;
|
|
32
|
+
if (cannotBeRenderedReason) {
|
|
33
|
+
return { message: cannotBeRenderedReason };
|
|
34
|
+
}
|
|
35
|
+
// don't try to render 0 or NaN radius or no regions
|
|
36
|
+
if (!props.renderProps.radius ||
|
|
37
|
+
!props.renderArgs.regions ||
|
|
38
|
+
!props.renderArgs.regions.length) {
|
|
39
|
+
return { message: 'Skipping render' };
|
|
40
|
+
}
|
|
41
|
+
// check renderertype compatibility
|
|
42
|
+
if (!self.isCompatibleWithRenderer(rendererType)) {
|
|
43
|
+
throw new Error(`renderer ${rendererType.name} is not compatible with this display type`);
|
|
44
|
+
}
|
|
45
|
+
const { html, ...data } = await rendererType.renderInClient(rpcManager, {
|
|
46
|
+
...renderArgs,
|
|
47
|
+
...renderProps,
|
|
48
|
+
signal,
|
|
115
49
|
});
|
|
50
|
+
return { html, data, renderingComponent: rendererType.ReactComponent };
|
|
116
51
|
}
|
|
117
|
-
return { renderReactionData
|
|
118
|
-
}
|
|
52
|
+
return { renderReactionData, renderReactionEffect };
|
|
53
|
+
};
|
|
119
54
|
//# sourceMappingURL=renderReaction.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"renderReaction.js","sourceRoot":"","sources":["../../../src/BaseChordDisplay/models/renderReaction.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"renderReaction.js","sourceRoot":"","sources":["../../../src/BaseChordDisplay/models/renderReaction.js"],"names":[],"mappings":";;AAAA,kBAAe,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE;IAC/B,MAAM,EAAE,eAAe,EAAE,GAAG,SAAS,CAAC,2BAA2B,CAAC,CAAA;IAClE,MAAM,EAAE,iBAAiB,EAAE,GAAG,SAAS,CAAC,oBAAoB,CAAC,CAAA;IAC7D,MAAM,EAAE,UAAU,EAAE,GAAG,SAAS,CAAC,oBAAoB,CAAC,CAAA;IAEtD,SAAS,kBAAkB,CAAC,IAAI;;QAC9B,MAAM,IAAI,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAA;QACpC,MAAM,EAAE,YAAY,EAAE,GAAG,IAAI,CAAA;QAC7B,MAAM,EAAE,UAAU,EAAE,GAAG,UAAU,CAAC,IAAI,CAAC,CAAA;QAEvC,OAAO;YACL,YAAY;YACZ,UAAU;YACV,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE;YAC/B,UAAU,EAAE;gBACV,YAAY,EAAE,MAAA,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,0CAAE,YAAY;gBACpD,aAAa,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;gBAC7D,YAAY,EAAE,YAAY,CAAC,IAAI;gBAC/B,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;gBAC1D,gBAAgB,EAAE,IAAI,CAAC,gBAAgB;gBACvC,SAAS,EAAE,eAAe,CAAC,IAAI,CAAC;gBAChC,OAAO,EAAE,OAAO;aACjB;SACF,CAAA;IACH,CAAC;IAED,KAAK,UAAU,oBAAoB,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI;QACrD,IAAI,CAAC,KAAK,EAAE;YACV,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAA;SAC/C;QAED,MAAM,EACJ,YAAY,EACZ,UAAU,EACV,sBAAsB,EACtB,UAAU,EACV,WAAW,GACZ,GAAG,KAAK,CAAA;QAET,IAAI,sBAAsB,EAAE;YAC1B,OAAO,EAAE,OAAO,EAAE,sBAAsB,EAAE,CAAA;SAC3C;QAED,oDAAoD;QACpD,IACE,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM;YACzB,CAAC,KAAK,CAAC,UAAU,CAAC,OAAO;YACzB,CAAC,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,MAAM,EAChC;YACA,OAAO,EAAE,OAAO,EAAE,iBAAiB,EAAE,CAAA;SACtC;QAED,mCAAmC;QACnC,IAAI,CAAC,IAAI,CAAC,wBAAwB,CAAC,YAAY,CAAC,EAAE;YAChD,MAAM,IAAI,KAAK,CACb,YAAY,YAAY,CAAC,IAAI,2CAA2C,CACzE,CAAA;SACF;QAED,MAAM,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,MAAM,YAAY,CAAC,cAAc,CAAC,UAAU,EAAE;YACtE,GAAG,UAAU;YACb,GAAG,WAAW;YACd,MAAM;SACP,CAAC,CAAA;QAEF,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,kBAAkB,EAAE,YAAY,CAAC,cAAc,EAAE,CAAA;IACxE,CAAC;IAED,OAAO,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,CAAA;AACrD,CAAC,CAAA"}
|
|
@@ -3,26 +3,26 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
6
|
+
const react_1 = __importDefault(require("react"));
|
|
7
|
+
const mobx_react_1 = require("mobx-react");
|
|
8
|
+
const ui_1 = require("@jbrowse/core/ui");
|
|
9
|
+
const util_1 = require("@jbrowse/core/util");
|
|
10
|
+
const material_1 = require("@mui/material");
|
|
11
|
+
const mui_1 = require("tss-react/mui");
|
|
12
|
+
const colors_1 = require("@mui/material/colors");
|
|
13
13
|
// icons
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
14
|
+
const ZoomOut_1 = __importDefault(require("@mui/icons-material/ZoomOut"));
|
|
15
|
+
const ZoomIn_1 = __importDefault(require("@mui/icons-material/ZoomIn"));
|
|
16
|
+
const RotateLeft_1 = __importDefault(require("@mui/icons-material/RotateLeft"));
|
|
17
|
+
const RotateRight_1 = __importDefault(require("@mui/icons-material/RotateRight"));
|
|
18
|
+
const LockOpen_1 = __importDefault(require("@mui/icons-material/LockOpen"));
|
|
19
|
+
const Lock_1 = __importDefault(require("@mui/icons-material/Lock"));
|
|
20
|
+
const Icons_1 = require("@jbrowse/core/ui/Icons");
|
|
21
21
|
// locals
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
22
|
+
const Ruler_1 = __importDefault(require("./Ruler"));
|
|
23
|
+
const ImportForm_1 = __importDefault(require("./ImportForm"));
|
|
24
|
+
const dragHandleHeight = 3;
|
|
25
|
+
const useStyles = (0, mui_1.makeStyles)()(theme => ({
|
|
26
26
|
root: {
|
|
27
27
|
position: 'relative',
|
|
28
28
|
marginBottom: theme.spacing(1),
|
|
@@ -56,19 +56,17 @@ var useStyles = (0, mui_1.makeStyles)()(function (theme) { return ({
|
|
|
56
56
|
importFormContainer: {
|
|
57
57
|
marginBottom: theme.spacing(4),
|
|
58
58
|
},
|
|
59
|
-
})
|
|
60
|
-
|
|
61
|
-
var model = _a.model;
|
|
59
|
+
}));
|
|
60
|
+
const Slices = (0, mobx_react_1.observer)(({ model }) => {
|
|
62
61
|
return (react_1.default.createElement(react_1.default.Fragment, null,
|
|
63
|
-
model.staticSlices.map(
|
|
64
|
-
model.tracks.map(
|
|
65
|
-
|
|
62
|
+
model.staticSlices.map(slice => (react_1.default.createElement(Ruler_1.default, { key: (0, util_1.assembleLocString)(slice.region.elided ? slice.region.regions[0] : slice.region), model: model, slice: slice }))),
|
|
63
|
+
model.tracks.map(track => {
|
|
64
|
+
const display = track.displays[0];
|
|
66
65
|
return (react_1.default.createElement(display.RenderingComponent, { key: display.id, display: display, view: model }));
|
|
67
66
|
})));
|
|
68
67
|
});
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
var classes = useStyles().classes;
|
|
68
|
+
const Controls = (0, mobx_react_1.observer)(({ model, showingFigure }) => {
|
|
69
|
+
const { classes } = useStyles();
|
|
72
70
|
return (react_1.default.createElement("div", { className: classes.controls },
|
|
73
71
|
react_1.default.createElement(material_1.IconButton, { onClick: model.zoomOutButton, className: classes.iconButton, title: model.lockedFitToWindow ? 'unlock to zoom out' : 'zoom out', disabled: !showingFigure || model.atMaxBpPerPx || model.lockedFitToWindow, color: "secondary" },
|
|
74
72
|
react_1.default.createElement(ZoomOut_1.default, null)),
|
|
@@ -84,12 +82,11 @@ var Controls = (0, mobx_react_1.observer)(function (_a) {
|
|
|
84
82
|
model.hideTrackSelectorButton ? null : (react_1.default.createElement(material_1.IconButton, { onClick: model.activateTrackSelector, title: "Open track selector", "data-testid": "circular_track_select", color: "secondary" },
|
|
85
83
|
react_1.default.createElement(Icons_1.TrackSelector, null)))));
|
|
86
84
|
});
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
var showFigure = initialized && !showImportForm;
|
|
85
|
+
const CircularView = (0, mobx_react_1.observer)(({ model }) => {
|
|
86
|
+
const { classes } = useStyles();
|
|
87
|
+
const initialized = !!model.displayedRegions.length && model.figureWidth && model.figureHeight;
|
|
88
|
+
const showImportForm = !initialized && !model.disableImportForm;
|
|
89
|
+
const showFigure = initialized && !showImportForm;
|
|
93
90
|
return (react_1.default.createElement("div", { className: classes.root, style: {
|
|
94
91
|
width: model.width,
|
|
95
92
|
height: model.height,
|
|
@@ -101,18 +98,18 @@ var CircularView = (0, mobx_react_1.observer)(function (_a) {
|
|
|
101
98
|
height: model.height,
|
|
102
99
|
} },
|
|
103
100
|
react_1.default.createElement("div", { className: classes.rotator, style: {
|
|
104
|
-
transform: [
|
|
101
|
+
transform: [`rotate(${model.offsetRadians}rad)`].join(' '),
|
|
105
102
|
transition: 'transform 0.5s',
|
|
106
103
|
transformOrigin: model.centerXY
|
|
107
|
-
.map(
|
|
104
|
+
.map(x => `${x}px`)
|
|
108
105
|
.join(' '),
|
|
109
106
|
} },
|
|
110
107
|
react_1.default.createElement("svg", { style: {
|
|
111
108
|
position: 'absolute',
|
|
112
109
|
left: 0,
|
|
113
110
|
top: 0,
|
|
114
|
-
}, className: classes.sliceRoot, width:
|
|
115
|
-
react_1.default.createElement("g", { transform:
|
|
111
|
+
}, className: classes.sliceRoot, width: `${model.figureWidth}px`, height: `${model.figureHeight}px`, version: "1.1" },
|
|
112
|
+
react_1.default.createElement("g", { transform: `translate(${model.centerXY})` },
|
|
116
113
|
react_1.default.createElement(Slices, { model: model })))))),
|
|
117
114
|
react_1.default.createElement(Controls, { model: model, showingFigure: showFigure }),
|
|
118
115
|
model.hideVerticalResizeHandle ? null : (react_1.default.createElement(ui_1.ResizeHandle, { onDrag: model.resizeHeight, style: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CircularView.js","sourceRoot":"","sources":["../../../src/CircularView/components/CircularView.js"],"names":[],"mappings":";;;;;AAAA,
|
|
1
|
+
{"version":3,"file":"CircularView.js","sourceRoot":"","sources":["../../../src/CircularView/components/CircularView.js"],"names":[],"mappings":"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"}
|
|
@@ -22,61 +22,44 @@ var __importStar = (this && this.__importStar) || function (mod) {
|
|
|
22
22
|
__setModuleDefault(result, mod);
|
|
23
23
|
return result;
|
|
24
24
|
};
|
|
25
|
-
var __read = (this && this.__read) || function (o, n) {
|
|
26
|
-
var m = typeof Symbol === "function" && o[Symbol.iterator];
|
|
27
|
-
if (!m) return o;
|
|
28
|
-
var i = m.call(o), r, ar = [], e;
|
|
29
|
-
try {
|
|
30
|
-
while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
|
|
31
|
-
}
|
|
32
|
-
catch (error) { e = { error: error }; }
|
|
33
|
-
finally {
|
|
34
|
-
try {
|
|
35
|
-
if (r && !r.done && (m = i["return"])) m.call(i);
|
|
36
|
-
}
|
|
37
|
-
finally { if (e) throw e.error; }
|
|
38
|
-
}
|
|
39
|
-
return ar;
|
|
40
|
-
};
|
|
41
25
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
26
|
+
const react_1 = __importStar(require("react"));
|
|
27
|
+
const material_1 = require("@mui/material");
|
|
28
|
+
const mui_1 = require("tss-react/mui");
|
|
29
|
+
const mobx_react_1 = require("mobx-react");
|
|
30
|
+
const util_1 = require("@jbrowse/core/util");
|
|
31
|
+
const ui_1 = require("@jbrowse/core/ui");
|
|
32
|
+
const useStyles = (0, mui_1.makeStyles)()(theme => ({
|
|
49
33
|
importFormContainer: {
|
|
50
34
|
marginBottom: theme.spacing(4),
|
|
51
35
|
},
|
|
52
|
-
})
|
|
36
|
+
}));
|
|
53
37
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
var assemblyError = assemblyNames.length
|
|
38
|
+
const ImportForm = (0, mobx_react_1.observer)(({ model }) => {
|
|
39
|
+
const { classes } = useStyles();
|
|
40
|
+
const session = (0, util_1.getSession)(model);
|
|
41
|
+
const { error: modelError } = model;
|
|
42
|
+
const { assemblyNames, assemblyManager } = session;
|
|
43
|
+
const [selectedAsm, setSelectedAsm] = (0, react_1.useState)(assemblyNames[0]);
|
|
44
|
+
const [error, setError] = (0, react_1.useState)(modelError);
|
|
45
|
+
const assembly = assemblyManager.get(selectedAsm);
|
|
46
|
+
const assemblyError = assemblyNames.length
|
|
64
47
|
? assembly === null || assembly === void 0 ? void 0 : assembly.error
|
|
65
48
|
: 'No configured assemblies';
|
|
66
|
-
|
|
67
|
-
|
|
49
|
+
const regions = (assembly === null || assembly === void 0 ? void 0 : assembly.regions) || [];
|
|
50
|
+
const err = assemblyError || error;
|
|
68
51
|
return (react_1.default.createElement(material_1.Container, { className: classes.importFormContainer },
|
|
69
52
|
err ? (react_1.default.createElement(material_1.Grid, { container: true, spacing: 1, justifyContent: "center", alignItems: "center" },
|
|
70
53
|
react_1.default.createElement(material_1.Grid, { item: true },
|
|
71
54
|
react_1.default.createElement(ui_1.ErrorMessage, { error: err })))) : null,
|
|
72
55
|
react_1.default.createElement(material_1.Grid, { container: true, spacing: 1, justifyContent: "center", alignItems: "center" },
|
|
73
56
|
react_1.default.createElement(material_1.Grid, { item: true },
|
|
74
|
-
react_1.default.createElement(ui_1.AssemblySelector, { onChange:
|
|
57
|
+
react_1.default.createElement(ui_1.AssemblySelector, { onChange: val => {
|
|
75
58
|
setError(undefined);
|
|
76
59
|
setSelectedAsm(val);
|
|
77
60
|
}, session: session, selected: selectedAsm })),
|
|
78
61
|
react_1.default.createElement(material_1.Grid, { item: true },
|
|
79
|
-
react_1.default.createElement(material_1.Button, { disabled: !(regions === null || regions === void 0 ? void 0 : regions.length), onClick:
|
|
62
|
+
react_1.default.createElement(material_1.Button, { disabled: !(regions === null || regions === void 0 ? void 0 : regions.length), onClick: () => model.setDisplayedRegions(regions), variant: "contained", color: "primary" }, regions.length ? 'Open' : 'Loading…')))));
|
|
80
63
|
});
|
|
81
64
|
exports.default = ImportForm;
|
|
82
65
|
//# sourceMappingURL=ImportForm.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ImportForm.js","sourceRoot":"","sources":["../../../src/CircularView/components/ImportForm.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ImportForm.js","sourceRoot":"","sources":["../../../src/CircularView/components/ImportForm.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAAA,+CAAuC;AACvC,4CAAuD;AACvD,uCAA0C;AAC1C,2CAAqC;AACrC,6CAA+C;AAC/C,yCAAiE;AAEjE,MAAM,SAAS,GAAG,IAAA,gBAAU,GAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IACvC,mBAAmB,EAAE;QACnB,YAAY,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;KAC/B;CACF,CAAC,CAAC,CAAA;AAEH,8DAA8D;AAC9D,MAAM,UAAU,GAAG,IAAA,qBAAQ,EAAC,CAAC,EAAE,KAAK,EAAkB,EAAE,EAAE;IACxD,MAAM,EAAE,OAAO,EAAE,GAAG,SAAS,EAAE,CAAA;IAC/B,MAAM,OAAO,GAAG,IAAA,iBAAU,EAAC,KAAK,CAAC,CAAA;IACjC,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,GAAG,KAAK,CAAA;IACnC,MAAM,EAAE,aAAa,EAAE,eAAe,EAAE,GAAG,OAAO,CAAA;IAClD,MAAM,CAAC,WAAW,EAAE,cAAc,CAAC,GAAG,IAAA,gBAAQ,EAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAA;IAChE,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,IAAA,gBAAQ,EAAoB,UAAU,CAAC,CAAA;IACjE,MAAM,QAAQ,GAAG,eAAe,CAAC,GAAG,CAAC,WAAW,CAAC,CAAA;IACjD,MAAM,aAAa,GAAG,aAAa,CAAC,MAAM;QACxC,CAAC,CAAC,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,KAAK;QACjB,CAAC,CAAC,0BAA0B,CAAA;IAC9B,MAAM,OAAO,GAAG,CAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,OAAO,KAAI,EAAE,CAAA;IACvC,MAAM,GAAG,GAAG,aAAa,IAAI,KAAK,CAAA;IAElC,OAAO,CACL,8BAAC,oBAAS,IAAC,SAAS,EAAE,OAAO,CAAC,mBAAmB;QAC9C,GAAG,CAAC,CAAC,CAAC,CACL,8BAAC,eAAI,IAAC,SAAS,QAAC,OAAO,EAAE,CAAC,EAAE,cAAc,EAAC,QAAQ,EAAC,UAAU,EAAC,QAAQ;YACrE,8BAAC,eAAI,IAAC,IAAI;gBACR,8BAAC,iBAAY,IAAC,KAAK,EAAE,GAAG,GAAI,CACvB,CACF,CACR,CAAC,CAAC,CAAC,IAAI;QACR,8BAAC,eAAI,IAAC,SAAS,QAAC,OAAO,EAAE,CAAC,EAAE,cAAc,EAAC,QAAQ,EAAC,UAAU,EAAC,QAAQ;YACrE,8BAAC,eAAI,IAAC,IAAI;gBACR,8BAAC,qBAAgB,IACf,QAAQ,EAAE,GAAG,CAAC,EAAE;wBACd,QAAQ,CAAC,SAAS,CAAC,CAAA;wBACnB,cAAc,CAAC,GAAG,CAAC,CAAA;oBACrB,CAAC,EACD,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,WAAW,GACrB,CACG;YAEP,8BAAC,eAAI,IAAC,IAAI;gBACR,8BAAC,iBAAM,IACL,QAAQ,EAAE,CAAC,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,MAAM,CAAA,EAC1B,OAAO,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,mBAAmB,CAAC,OAAO,CAAC,EACjD,OAAO,EAAC,WAAW,EACnB,KAAK,EAAC,SAAS,IAEd,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU,CAC9B,CACJ,CACF,CACG,CACb,CAAA;AACH,CAAC,CAAC,CAAA;AAEF,kBAAe,UAAU,CAAA"}
|
|
@@ -1,40 +1,15 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __read = (this && this.__read) || function (o, n) {
|
|
3
|
-
var m = typeof Symbol === "function" && o[Symbol.iterator];
|
|
4
|
-
if (!m) return o;
|
|
5
|
-
var i = m.call(o), r, ar = [], e;
|
|
6
|
-
try {
|
|
7
|
-
while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
|
|
8
|
-
}
|
|
9
|
-
catch (error) { e = { error: error }; }
|
|
10
|
-
finally {
|
|
11
|
-
try {
|
|
12
|
-
if (r && !r.done && (m = i["return"])) m.call(i);
|
|
13
|
-
}
|
|
14
|
-
finally { if (e) throw e.error; }
|
|
15
|
-
}
|
|
16
|
-
return ar;
|
|
17
|
-
};
|
|
18
|
-
var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
|
|
19
|
-
if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
|
|
20
|
-
if (ar || !(i in from)) {
|
|
21
|
-
if (!ar) ar = Array.prototype.slice.call(from, 0, i);
|
|
22
|
-
ar[i] = from[i];
|
|
23
|
-
}
|
|
24
|
-
}
|
|
25
|
-
return to.concat(ar || Array.prototype.slice.call(from));
|
|
26
|
-
};
|
|
27
2
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
28
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
29
4
|
};
|
|
30
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
6
|
+
const react_1 = __importDefault(require("react"));
|
|
7
|
+
const mobx_react_1 = require("mobx-react");
|
|
8
|
+
const util_1 = require("@jbrowse/core/util");
|
|
9
|
+
const color_1 = require("@jbrowse/core/util/color");
|
|
10
|
+
const styles_1 = require("@mui/material/styles");
|
|
11
|
+
const mui_1 = require("tss-react/mui");
|
|
12
|
+
const useStyles = (0, mui_1.makeStyles)()({
|
|
38
13
|
rulerLabel: {
|
|
39
14
|
fontSize: '0.8rem',
|
|
40
15
|
fontWeight: 500,
|
|
@@ -43,91 +18,89 @@ var useStyles = (0, mui_1.makeStyles)()({
|
|
|
43
18
|
},
|
|
44
19
|
});
|
|
45
20
|
function sliceArcPath(slice, radiusPx, startBase, endBase) {
|
|
46
|
-
var _a;
|
|
47
21
|
// A rx ry x-axis-rotation large-arc-flag sweep-flag x y
|
|
48
22
|
if (slice.flipped) {
|
|
49
23
|
;
|
|
50
|
-
|
|
24
|
+
[startBase, endBase] = [endBase, startBase];
|
|
51
25
|
}
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
return
|
|
57
|
-
'M'
|
|
58
|
-
|
|
26
|
+
const startXY = slice.bpToXY(startBase, radiusPx);
|
|
27
|
+
const endXY = slice.bpToXY(endBase, radiusPx);
|
|
28
|
+
const largeArc = Math.abs(endBase - startBase) / slice.bpPerRadian > Math.PI ? '1' : '0';
|
|
29
|
+
const sweepFlag = '1';
|
|
30
|
+
return [
|
|
31
|
+
'M',
|
|
32
|
+
...startXY,
|
|
59
33
|
'A',
|
|
60
34
|
radiusPx,
|
|
61
35
|
radiusPx,
|
|
62
36
|
'0',
|
|
63
37
|
largeArc,
|
|
64
|
-
sweepFlag
|
|
65
|
-
|
|
38
|
+
sweepFlag,
|
|
39
|
+
...endXY,
|
|
40
|
+
].join(' ');
|
|
66
41
|
}
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
var largeArc = endRadians - startRadians > Math.PI ? '1' : '0';
|
|
42
|
+
const ElisionRulerArc = (0, mobx_react_1.observer)(({ model, slice }) => {
|
|
43
|
+
const theme = (0, styles_1.useTheme)();
|
|
44
|
+
const { radiusPx: modelRadiusPx } = model;
|
|
45
|
+
const radiusPx = modelRadiusPx + 1;
|
|
46
|
+
const { endRadians, startRadians, region } = slice;
|
|
47
|
+
const startXY = (0, util_1.polarToCartesian)(radiusPx, startRadians);
|
|
48
|
+
const endXY = (0, util_1.polarToCartesian)(radiusPx, endRadians);
|
|
49
|
+
const widthPx = (endRadians - startRadians) * radiusPx;
|
|
50
|
+
const largeArc = endRadians - startRadians > Math.PI ? '1' : '0';
|
|
77
51
|
// TODO: draw the elision
|
|
78
|
-
|
|
79
|
-
|
|
52
|
+
const centerRadians = (endRadians + startRadians) / 2;
|
|
53
|
+
const regionCountString = `[${Number(region.regions.length).toLocaleString()}]`;
|
|
80
54
|
return (react_1.default.createElement(react_1.default.Fragment, null,
|
|
81
|
-
react_1.default.createElement(RulerLabel, { text: regionCountString, view: model, maxWidthPx: widthPx, radians: centerRadians, radiusPx: radiusPx, title:
|
|
82
|
-
react_1.default.createElement("path", { d:
|
|
83
|
-
'M'
|
|
84
|
-
|
|
55
|
+
react_1.default.createElement(RulerLabel, { text: regionCountString, view: model, maxWidthPx: widthPx, radians: centerRadians, radiusPx: radiusPx, title: `${Number(region.regions.length).toLocaleString()} more regions`, color: theme.palette.text.primary }),
|
|
56
|
+
react_1.default.createElement("path", { d: [
|
|
57
|
+
'M',
|
|
58
|
+
...startXY,
|
|
85
59
|
'A',
|
|
86
60
|
radiusPx,
|
|
87
61
|
radiusPx,
|
|
88
62
|
'0',
|
|
89
63
|
largeArc,
|
|
90
|
-
'1'
|
|
91
|
-
|
|
64
|
+
'1',
|
|
65
|
+
...endXY,
|
|
66
|
+
].join(' '), stroke: theme.palette.text.secondary, strokeWidth: 2, strokeDasharray: "2,2", fill: "none" })));
|
|
92
67
|
});
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
var textXY = (0, util_1.polarToCartesian)(radiusPx + 5, radians);
|
|
68
|
+
const RulerLabel = (0, mobx_react_1.observer)(({ view, text, maxWidthPx, radians, radiusPx, title, color }) => {
|
|
69
|
+
const { classes } = useStyles();
|
|
70
|
+
const textXY = (0, util_1.polarToCartesian)(radiusPx + 5, radians);
|
|
97
71
|
if (!text) {
|
|
98
72
|
return null;
|
|
99
73
|
}
|
|
100
74
|
if (text.length * 6.5 < maxWidthPx) {
|
|
101
75
|
// text is rotated parallel to the ruler arc
|
|
102
|
-
return (react_1.default.createElement("text", { x: 0, y: 0, className: classes.rulerLabel, textAnchor: "middle", dominantBaseline: "baseline", transform:
|
|
76
|
+
return (react_1.default.createElement("text", { x: 0, y: 0, className: classes.rulerLabel, textAnchor: "middle", dominantBaseline: "baseline", transform: `translate(${textXY}) rotate(${(0, util_1.radToDeg)(radians) + 90})`, style: { fill: color } },
|
|
103
77
|
text,
|
|
104
78
|
react_1.default.createElement("title", null, title || text)));
|
|
105
79
|
}
|
|
106
80
|
if (maxWidthPx > 4) {
|
|
107
81
|
// text is rotated perpendicular to the ruler arc
|
|
108
|
-
|
|
82
|
+
const overallRotation = (0, util_1.radToDeg)(radians + view.offsetRadians - Math.PI / 2);
|
|
109
83
|
if (overallRotation >= 180) {
|
|
110
|
-
return (react_1.default.createElement("text", { x: 0, y: 0, className: classes.rulerLabel, textAnchor: "start", dominantBaseline: "middle", transform:
|
|
84
|
+
return (react_1.default.createElement("text", { x: 0, y: 0, className: classes.rulerLabel, textAnchor: "start", dominantBaseline: "middle", transform: `translate(${textXY}) rotate(${(0, util_1.radToDeg)(radians)})`, style: { fill: color } },
|
|
111
85
|
text,
|
|
112
86
|
react_1.default.createElement("title", null, title || text)));
|
|
113
87
|
}
|
|
114
|
-
return (react_1.default.createElement("text", { x: 0, y: 0, className: classes.rulerLabel, textAnchor: "end", dominantBaseline: "middle", transform:
|
|
88
|
+
return (react_1.default.createElement("text", { x: 0, y: 0, className: classes.rulerLabel, textAnchor: "end", dominantBaseline: "middle", transform: `translate(${textXY}) rotate(${(0, util_1.radToDeg)(radians) + 180})`, style: { fill: color } },
|
|
115
89
|
text,
|
|
116
90
|
react_1.default.createElement("title", null, title || text)));
|
|
117
91
|
}
|
|
118
92
|
// if you get here there is no room for the text at all
|
|
119
93
|
return null;
|
|
120
94
|
});
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
var assembly = session.assemblyManager.get(slice.region.assemblyName);
|
|
95
|
+
const RegionRulerArc = (0, mobx_react_1.observer)(({ model, slice }) => {
|
|
96
|
+
const theme = (0, styles_1.useTheme)();
|
|
97
|
+
const { radiusPx } = model;
|
|
98
|
+
const { region, endRadians, startRadians } = slice;
|
|
99
|
+
const centerRadians = (endRadians + startRadians) / 2;
|
|
100
|
+
const widthPx = (endRadians - startRadians) * radiusPx;
|
|
101
|
+
const session = (0, util_1.getSession)(model);
|
|
102
|
+
let color;
|
|
103
|
+
const assembly = session.assemblyManager.get(slice.region.assemblyName);
|
|
131
104
|
if (assembly) {
|
|
132
105
|
color = assembly.getRefNameColor(region.refName);
|
|
133
106
|
}
|
|
@@ -148,8 +121,7 @@ var RegionRulerArc = (0, mobx_react_1.observer)(function (_a) {
|
|
|
148
121
|
react_1.default.createElement("path", { d: sliceArcPath(slice, radiusPx + 1, region.start, region.end), stroke: color, strokeWidth: 2, fill: "none" },
|
|
149
122
|
react_1.default.createElement("title", null, region.refName))));
|
|
150
123
|
});
|
|
151
|
-
|
|
152
|
-
var model = _a.model, slice = _a.slice;
|
|
124
|
+
const CircularRuler = (0, mobx_react_1.observer)(function Ruler({ model, slice }) {
|
|
153
125
|
if (slice.region.elided) {
|
|
154
126
|
return (react_1.default.createElement(ElisionRulerArc, { key: (0, util_1.assembleLocString)(slice.region.regions[0]), model: model, slice: slice }));
|
|
155
127
|
}
|