@jbrowse/plugin-alignments 2.18.0 → 3.0.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/AlignmentsFeatureDetail/AlignmentsFeatureDetail.d.ts +1 -2
- package/dist/AlignmentsFeatureDetail/AlignmentsFeatureDetail.js +20 -13
- package/dist/AlignmentsFeatureDetail/Flags.d.ts +1 -2
- package/dist/AlignmentsFeatureDetail/Flags.js +6 -8
- package/dist/AlignmentsFeatureDetail/Formatter.d.ts +1 -2
- package/dist/AlignmentsFeatureDetail/Formatter.js +11 -36
- package/dist/AlignmentsFeatureDetail/LaunchPairedEndBreakpointSplitViewPanel.d.ts +1 -2
- package/dist/AlignmentsFeatureDetail/LaunchPairedEndBreakpointSplitViewPanel.js +44 -47
- package/dist/AlignmentsFeatureDetail/LaunchSupplementaryAlignmentBreakpointSplitViewPanel.d.ts +1 -2
- package/dist/AlignmentsFeatureDetail/LaunchSupplementaryAlignmentBreakpointSplitViewPanel.js +27 -31
- package/dist/AlignmentsFeatureDetail/LinkedPairedAlignments.d.ts +1 -2
- package/dist/AlignmentsFeatureDetail/LinkedPairedAlignments.js +2 -2
- package/dist/AlignmentsFeatureDetail/PairLink.d.ts +1 -2
- package/dist/AlignmentsFeatureDetail/PairLink.js +3 -6
- package/dist/AlignmentsFeatureDetail/SupplementaryAlignments.d.ts +1 -2
- package/dist/AlignmentsFeatureDetail/SupplementaryAlignments.js +2 -4
- package/dist/AlignmentsFeatureDetail/SupplementaryAlignmentsLocStrings.d.ts +1 -2
- package/dist/AlignmentsFeatureDetail/SupplementaryAlignmentsLocStrings.js +21 -27
- package/dist/AlignmentsFeatureDetail/index.js +17 -7
- package/dist/BamAdapter/index.js +17 -7
- package/dist/CramAdapter/CramAdapter.js +7 -2
- package/dist/CramAdapter/CramTestAdapters.d.ts +1 -1
- package/dist/CramAdapter/CramTestAdapters.js +2 -1
- package/dist/CramAdapter/index.js +17 -7
- package/dist/GuessAlignmentsTypes/index.js +19 -34
- package/dist/HtsgetBamAdapter/index.js +17 -7
- package/dist/LinearAlignmentsDisplay/components/AlignmentsDisplay.d.ts +1 -2
- package/dist/LinearAlignmentsDisplay/components/AlignmentsDisplay.js +8 -16
- package/dist/LinearAlignmentsDisplay/model.d.ts +1 -2
- package/dist/LinearAlignmentsDisplay/model.js +5 -7
- package/dist/LinearPileupDisplay/SharedLinearPileupDisplayMixin.d.ts +21 -7
- package/dist/LinearPileupDisplay/SharedLinearPileupDisplayMixin.js +40 -15
- package/dist/LinearPileupDisplay/components/ColorByTagDialog.d.ts +1 -2
- package/dist/LinearPileupDisplay/components/ColorByTagDialog.js +10 -39
- package/dist/LinearPileupDisplay/components/GroupByDialog.d.ts +1 -2
- package/dist/LinearPileupDisplay/components/GroupByDialog.js +82 -121
- package/dist/LinearPileupDisplay/components/LinearPileupDisplayBlurb.d.ts +1 -2
- package/dist/LinearPileupDisplay/components/LinearPileupDisplayBlurb.js +2 -6
- package/dist/LinearPileupDisplay/components/SetFeatureHeightDialog.d.ts +1 -2
- package/dist/LinearPileupDisplay/components/SetFeatureHeightDialog.js +13 -42
- package/dist/LinearPileupDisplay/components/SetMaxHeightDialog.d.ts +1 -2
- package/dist/LinearPileupDisplay/components/SetMaxHeightDialog.js +10 -38
- package/dist/LinearPileupDisplay/components/SortByTagDialog.d.ts +1 -2
- package/dist/LinearPileupDisplay/components/SortByTagDialog.js +15 -44
- package/dist/LinearPileupDisplay/model.d.ts +21 -7
- package/dist/LinearPileupDisplay/model.js +19 -8
- package/dist/LinearReadArcsDisplay/components/ReactComponent.d.ts +1 -2
- package/dist/LinearReadArcsDisplay/components/ReactComponent.js +4 -27
- package/dist/LinearReadArcsDisplay/index.js +17 -7
- package/dist/LinearReadArcsDisplay/model.d.ts +1 -1
- package/dist/LinearReadArcsDisplay/model.js +17 -7
- package/dist/LinearReadCloudDisplay/components/ReactComponent.d.ts +1 -2
- package/dist/LinearReadCloudDisplay/components/ReactComponent.js +4 -27
- package/dist/LinearReadCloudDisplay/index.js +17 -7
- package/dist/LinearReadCloudDisplay/model.d.ts +1 -1
- package/dist/LinearReadCloudDisplay/model.js +17 -7
- package/dist/LinearSNPCoverageDisplay/components/Tooltip.d.ts +1 -2
- package/dist/LinearSNPCoverageDisplay/components/Tooltip.js +15 -54
- package/dist/LinearSNPCoverageDisplay/model.d.ts +4 -4
- package/dist/LinearSNPCoverageDisplay/model.js +49 -35
- package/dist/MismatchParser/cigarToMismatches.d.ts +1 -2
- package/dist/MismatchParser/index.d.ts +1 -2
- package/dist/MismatchParser/mdToMismatches.d.ts +1 -2
- package/dist/PileupRenderer/PileupRenderer.d.ts +4 -4
- package/dist/PileupRenderer/PileupRenderer.js +17 -7
- package/dist/PileupRenderer/components/PileupRendering.d.ts +1 -2
- package/dist/PileupRenderer/components/PileupRendering.js +15 -40
- package/dist/PileupRenderer/configSchema.d.ts +5 -0
- package/dist/PileupRenderer/configSchema.js +5 -0
- package/dist/PileupRenderer/makeImageData.js +2 -0
- package/dist/PileupRenderer/renderMismatches.d.ts +2 -1
- package/dist/PileupRenderer/renderMismatches.js +18 -13
- package/dist/SNPCoverageAdapter/index.js +17 -7
- package/dist/SNPCoverageAdapter/processModifications.js +1 -1
- package/dist/SNPCoverageRenderer/SNPCoverageRenderer.d.ts +1 -18
- package/dist/SNPCoverageRenderer/SNPCoverageRenderer.js +35 -264
- package/dist/SNPCoverageRenderer/configSchema.d.ts +3 -3
- package/dist/SNPCoverageRenderer/configSchema.js +3 -3
- package/dist/SNPCoverageRenderer/makeImage.d.ts +2 -0
- package/dist/SNPCoverageRenderer/makeImage.js +270 -0
- package/dist/SNPCoverageRenderer/types.d.ts +19 -0
- package/dist/SNPCoverageRenderer/types.js +2 -0
- package/dist/index.js +17 -7
- package/dist/shared/components/BaseDisplayComponent.d.ts +1 -2
- package/dist/shared/components/BaseDisplayComponent.js +6 -13
- package/dist/shared/components/FilterByTagDialog.d.ts +1 -2
- package/dist/shared/components/FilterByTagDialog.js +42 -92
- package/dist/shared/renderSvgUtil.d.ts +1 -2
- package/dist/shared/renderSvgUtil.js +20 -17
- package/esm/AlignmentsFeatureDetail/AlignmentsFeatureDetail.d.ts +1 -2
- package/esm/AlignmentsFeatureDetail/AlignmentsFeatureDetail.js +3 -6
- package/esm/AlignmentsFeatureDetail/Flags.d.ts +1 -2
- package/esm/AlignmentsFeatureDetail/Flags.js +6 -8
- package/esm/AlignmentsFeatureDetail/Formatter.d.ts +1 -2
- package/esm/AlignmentsFeatureDetail/Formatter.js +11 -13
- package/esm/AlignmentsFeatureDetail/LaunchPairedEndBreakpointSplitViewPanel.d.ts +1 -2
- package/esm/AlignmentsFeatureDetail/LaunchPairedEndBreakpointSplitViewPanel.js +27 -40
- package/esm/AlignmentsFeatureDetail/LaunchSupplementaryAlignmentBreakpointSplitViewPanel.d.ts +1 -2
- package/esm/AlignmentsFeatureDetail/LaunchSupplementaryAlignmentBreakpointSplitViewPanel.js +10 -24
- package/esm/AlignmentsFeatureDetail/LinkedPairedAlignments.d.ts +1 -2
- package/esm/AlignmentsFeatureDetail/LinkedPairedAlignments.js +2 -2
- package/esm/AlignmentsFeatureDetail/PairLink.d.ts +1 -2
- package/esm/AlignmentsFeatureDetail/PairLink.js +3 -3
- package/esm/AlignmentsFeatureDetail/SupplementaryAlignments.d.ts +1 -2
- package/esm/AlignmentsFeatureDetail/SupplementaryAlignments.js +2 -4
- package/esm/AlignmentsFeatureDetail/SupplementaryAlignmentsLocStrings.d.ts +1 -2
- package/esm/AlignmentsFeatureDetail/SupplementaryAlignmentsLocStrings.js +21 -24
- package/esm/CramAdapter/CramAdapter.js +7 -2
- package/esm/CramAdapter/CramTestAdapters.d.ts +1 -1
- package/esm/CramAdapter/CramTestAdapters.js +2 -1
- package/esm/GuessAlignmentsTypes/index.js +19 -34
- package/esm/LinearAlignmentsDisplay/components/AlignmentsDisplay.d.ts +1 -2
- package/esm/LinearAlignmentsDisplay/components/AlignmentsDisplay.js +8 -13
- package/esm/LinearAlignmentsDisplay/model.d.ts +1 -2
- package/esm/LinearAlignmentsDisplay/model.js +5 -7
- package/esm/LinearPileupDisplay/SharedLinearPileupDisplayMixin.d.ts +21 -7
- package/esm/LinearPileupDisplay/SharedLinearPileupDisplayMixin.js +23 -8
- package/esm/LinearPileupDisplay/components/ColorByTagDialog.d.ts +1 -2
- package/esm/LinearPileupDisplay/components/ColorByTagDialog.js +10 -16
- package/esm/LinearPileupDisplay/components/GroupByDialog.d.ts +1 -2
- package/esm/LinearPileupDisplay/components/GroupByDialog.js +82 -98
- package/esm/LinearPileupDisplay/components/LinearPileupDisplayBlurb.d.ts +1 -2
- package/esm/LinearPileupDisplay/components/LinearPileupDisplayBlurb.js +2 -3
- package/esm/LinearPileupDisplay/components/SetFeatureHeightDialog.d.ts +1 -2
- package/esm/LinearPileupDisplay/components/SetFeatureHeightDialog.js +13 -19
- package/esm/LinearPileupDisplay/components/SetMaxHeightDialog.d.ts +1 -2
- package/esm/LinearPileupDisplay/components/SetMaxHeightDialog.js +10 -15
- package/esm/LinearPileupDisplay/components/SortByTagDialog.d.ts +1 -2
- package/esm/LinearPileupDisplay/components/SortByTagDialog.js +15 -21
- package/esm/LinearPileupDisplay/model.d.ts +21 -7
- package/esm/LinearPileupDisplay/model.js +2 -1
- package/esm/LinearReadArcsDisplay/components/ReactComponent.d.ts +1 -2
- package/esm/LinearReadArcsDisplay/components/ReactComponent.js +4 -4
- package/esm/LinearReadArcsDisplay/model.d.ts +1 -1
- package/esm/LinearReadCloudDisplay/components/ReactComponent.d.ts +1 -2
- package/esm/LinearReadCloudDisplay/components/ReactComponent.js +4 -4
- package/esm/LinearReadCloudDisplay/model.d.ts +1 -1
- package/esm/LinearSNPCoverageDisplay/components/Tooltip.d.ts +1 -2
- package/esm/LinearSNPCoverageDisplay/components/Tooltip.js +15 -51
- package/esm/LinearSNPCoverageDisplay/model.d.ts +4 -4
- package/esm/LinearSNPCoverageDisplay/model.js +32 -28
- package/esm/MismatchParser/cigarToMismatches.d.ts +1 -2
- package/esm/MismatchParser/index.d.ts +1 -2
- package/esm/MismatchParser/mdToMismatches.d.ts +1 -2
- package/esm/PileupRenderer/PileupRenderer.d.ts +4 -4
- package/esm/PileupRenderer/components/PileupRendering.d.ts +1 -2
- package/esm/PileupRenderer/components/PileupRendering.js +15 -17
- package/esm/PileupRenderer/configSchema.d.ts +5 -0
- package/esm/PileupRenderer/configSchema.js +5 -0
- package/esm/PileupRenderer/makeImageData.js +2 -0
- package/esm/PileupRenderer/renderMismatches.d.ts +2 -1
- package/esm/PileupRenderer/renderMismatches.js +18 -13
- package/esm/SNPCoverageAdapter/processModifications.js +1 -1
- package/esm/SNPCoverageRenderer/SNPCoverageRenderer.d.ts +1 -18
- package/esm/SNPCoverageRenderer/SNPCoverageRenderer.js +3 -265
- package/esm/SNPCoverageRenderer/configSchema.d.ts +3 -3
- package/esm/SNPCoverageRenderer/configSchema.js +3 -3
- package/esm/SNPCoverageRenderer/makeImage.d.ts +2 -0
- package/esm/SNPCoverageRenderer/makeImage.js +267 -0
- package/esm/SNPCoverageRenderer/types.d.ts +19 -0
- package/esm/SNPCoverageRenderer/types.js +1 -0
- package/esm/shared/components/BaseDisplayComponent.d.ts +1 -2
- package/esm/shared/components/BaseDisplayComponent.js +6 -10
- package/esm/shared/components/FilterByTagDialog.d.ts +1 -2
- package/esm/shared/components/FilterByTagDialog.js +42 -69
- package/esm/shared/renderSvgUtil.d.ts +1 -2
- package/esm/shared/renderSvgUtil.js +3 -7
- package/package.json +13 -13
|
@@ -15,19 +15,26 @@ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (
|
|
|
15
15
|
}) : function(o, v) {
|
|
16
16
|
o["default"] = v;
|
|
17
17
|
});
|
|
18
|
-
var __importStar = (this && this.__importStar) || function (
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
};
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
28
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
29
36
|
exports.renderSvg = renderSvg;
|
|
30
|
-
const
|
|
37
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
31
38
|
const util_1 = require("@jbrowse/core/util");
|
|
32
39
|
function getId(id) {
|
|
33
40
|
const isJest = typeof jest === 'undefined';
|
|
@@ -47,17 +54,13 @@ async function renderSvg(self, opts, cb) {
|
|
|
47
54
|
}
|
|
48
55
|
ctx.scale(2, 2);
|
|
49
56
|
cb(self, ctx, width, height);
|
|
50
|
-
return (
|
|
57
|
+
return ((0, jsx_runtime_1.jsx)("image", { width: width, height: height, xlinkHref: canvas.toDataURL('image/png') }));
|
|
51
58
|
}
|
|
52
59
|
else {
|
|
53
60
|
const C2S = await Promise.resolve().then(() => __importStar(require('canvas2svg')));
|
|
54
61
|
const ctx = new C2S.default(width, height);
|
|
55
62
|
cb(self, ctx, width, height);
|
|
56
63
|
const clipid = getId(self.id);
|
|
57
|
-
return (
|
|
58
|
-
react_1.default.createElement("defs", null,
|
|
59
|
-
react_1.default.createElement("clipPath", { id: clipid },
|
|
60
|
-
react_1.default.createElement("rect", { x: 0, y: 0, width: width, height: height }))),
|
|
61
|
-
react_1.default.createElement("g", { dangerouslySetInnerHTML: { __html: ctx.getSvg().innerHTML }, clipPath: `url(#${clipid})` })));
|
|
64
|
+
return ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)("defs", { children: (0, jsx_runtime_1.jsx)("clipPath", { id: clipid, children: (0, jsx_runtime_1.jsx)("rect", { x: 0, y: 0, width: width, height: height }) }) }), (0, jsx_runtime_1.jsx)("g", { dangerouslySetInnerHTML: { __html: ctx.getSvg().innerHTML }, clipPath: `url(#${clipid})` })] }));
|
|
62
65
|
}
|
|
63
66
|
}
|
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
1
|
import type { AlignmentFeatureWidgetModel } from './stateModelFactory';
|
|
3
2
|
declare const AlignmentsFeatureDetails: (props: {
|
|
4
3
|
model: AlignmentFeatureWidgetModel;
|
|
5
|
-
}) =>
|
|
4
|
+
}) => import("react/jsx-runtime").JSX.Element;
|
|
6
5
|
export default AlignmentsFeatureDetails;
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { lazy } from 'react';
|
|
2
3
|
import FeatureDetails from '@jbrowse/core/BaseFeatureWidget/BaseFeatureDetail/FeatureDetails';
|
|
3
4
|
import { Paper } from '@mui/material';
|
|
4
5
|
import { observer } from 'mobx-react';
|
|
@@ -15,10 +16,6 @@ const AlignmentsFeatureDetails = observer(function (props) {
|
|
|
15
16
|
const feat = structuredClone(featureData);
|
|
16
17
|
const SA = getTag('SA', feat);
|
|
17
18
|
const { flags } = feat;
|
|
18
|
-
return (
|
|
19
|
-
React.createElement(FeatureDetails, { ...props, descriptions: { tags }, feature: feat, formatter: (value, key) => key === 'next_segment_position' ? (React.createElement(PairLink, { model: model, locString: value })) : (React.createElement(Formatter, { value: value })) }),
|
|
20
|
-
SA !== undefined ? (React.createElement(SupplementaryAlignments, { model: model, tag: SA, feature: feat })) : null,
|
|
21
|
-
flags & 1 ? (React.createElement(LinkedPairedAlignments, { model: model, feature: feat })) : null,
|
|
22
|
-
flags !== undefined ? React.createElement(Flags, { feature: feat, ...props }) : null));
|
|
19
|
+
return (_jsxs(Paper, { "data-testid": "alignment-side-drawer", children: [_jsx(FeatureDetails, { ...props, descriptions: { tags }, feature: feat, formatter: (value, key) => key === 'next_segment_position' ? (_jsx(PairLink, { model: model, locString: value })) : (_jsx(Formatter, { value: value })) }), SA !== undefined ? (_jsx(SupplementaryAlignments, { model: model, tag: SA, feature: feat })) : null, flags & 1 ? (_jsx(LinkedPairedAlignments, { model: model, feature: feat })) : null, flags !== undefined ? _jsx(Flags, { feature: feat, ...props }) : null] }));
|
|
23
20
|
});
|
|
24
21
|
export default AlignmentsFeatureDetails;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
import BaseCard from '@jbrowse/core/BaseFeatureWidget/BaseFeatureDetail/BaseCard';
|
|
3
3
|
import SimpleField from '@jbrowse/core/BaseFeatureWidget/BaseFeatureDetail/SimpleField';
|
|
4
4
|
import { Checkbox, FormControlLabel, FormGroup } from '@mui/material';
|
|
@@ -28,11 +28,9 @@ export default function AlignmentFlags(props) {
|
|
|
28
28
|
const { classes } = useStyles();
|
|
29
29
|
const { feature } = props;
|
|
30
30
|
const { flags } = feature;
|
|
31
|
-
return (
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
return (React.createElement(FormControlLabel, { key: key, control: React.createElement(Checkbox, { className: classes.compact, checked: Boolean(val), name: name, readOnly: true }), label: name }));
|
|
37
|
-
}))));
|
|
31
|
+
return (_jsxs(BaseCard, { ...props, title: "Flags", children: [_jsx(SimpleField, { name: "Flag", value: flags }), _jsx(FormGroup, { children: flagNames.map((name, idx) => {
|
|
32
|
+
const val = flags & (1 << idx);
|
|
33
|
+
const key = `${name}_${val}`;
|
|
34
|
+
return (_jsx(FormControlLabel, { control: _jsx(Checkbox, { className: classes.compact, checked: Boolean(val), name: name, readOnly: true }), label: name }, key));
|
|
35
|
+
}) })] }));
|
|
38
36
|
}
|
|
@@ -1,19 +1,17 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { useState } from 'react';
|
|
2
3
|
import copy from 'copy-to-clipboard';
|
|
3
4
|
export default function Formatter({ value }) {
|
|
4
5
|
const [show, setShow] = useState(false);
|
|
5
6
|
const [copied, setCopied] = useState(false);
|
|
6
7
|
const display = String(value);
|
|
7
|
-
return display.length > 100 ? (
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
},
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
setShow(val => !val);
|
|
17
|
-
} }, show ? 'Show less' : 'Show more'),
|
|
18
|
-
React.createElement("div", null, show ? display : `${display.slice(0, 100)}...`))) : (React.createElement("div", null, display));
|
|
8
|
+
return display.length > 100 ? (_jsxs(_Fragment, { children: [_jsx("button", { type: "button", onClick: () => {
|
|
9
|
+
copy(display);
|
|
10
|
+
setCopied(true);
|
|
11
|
+
setTimeout(() => {
|
|
12
|
+
setCopied(false);
|
|
13
|
+
}, 700);
|
|
14
|
+
}, children: copied ? 'Copied to clipboard' : 'Copy' }), _jsx("button", { type: "button", onClick: () => {
|
|
15
|
+
setShow(val => !val);
|
|
16
|
+
}, children: show ? 'Show less' : 'Show more' }), _jsx("div", { children: show ? display : `${display.slice(0, 100)}...` })] })) : (_jsx("div", { children: display }));
|
|
19
17
|
}
|
|
@@ -1,7 +1,6 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
1
|
import type { AlignmentFeatureWidgetModel } from './stateModelFactory';
|
|
3
2
|
import type { SimpleFeatureSerialized } from '@jbrowse/core/util';
|
|
4
3
|
export default function LaunchPairedEndBreakpointSplitViewPanel({ model, feature, }: {
|
|
5
4
|
model: AlignmentFeatureWidgetModel;
|
|
6
5
|
feature: SimpleFeatureSerialized;
|
|
7
|
-
}):
|
|
6
|
+
}): import("react/jsx-runtime").JSX.Element;
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { lazy } from 'react';
|
|
2
3
|
import { SimpleFeature, getSession, toLocale } from '@jbrowse/core/util';
|
|
3
4
|
import { Link, Typography } from '@mui/material';
|
|
4
5
|
const BreakendMultiLevelOptionDialog = lazy(() => import('./BreakendMultiLevelOptionDialog'));
|
|
@@ -19,43 +20,29 @@ export default function LaunchPairedEndBreakpointSplitViewPanel({ model, feature
|
|
|
19
20
|
end: feature.next_pos + 1,
|
|
20
21
|
strand: feature.strand,
|
|
21
22
|
};
|
|
22
|
-
return (
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
' ',
|
|
48
|
-
React.createElement(Link, { href: "#", onClick: event => {
|
|
49
|
-
event.preventDefault();
|
|
50
|
-
session.queueDialog(handleClose => [
|
|
51
|
-
BreakendSingleLevelOptionDialog,
|
|
52
|
-
{
|
|
53
|
-
handleClose,
|
|
54
|
-
session,
|
|
55
|
-
feature: new SimpleFeature({ ...f1, mate: f2 }),
|
|
56
|
-
view: model.view,
|
|
57
|
-
assemblyName: model.view.displayedRegions[0].assemblyName,
|
|
58
|
-
},
|
|
59
|
-
]);
|
|
60
|
-
} }, "(single row)")))));
|
|
23
|
+
return (_jsxs("div", { children: [_jsx(Typography, { children: "Launch split view" }), _jsx("ul", { children: _jsxs("li", { children: [f1.refName, ":", toLocale(f1.start), " -> ", f2.refName, ":", toLocale(f2.start), ' ', _jsx(Link, { href: "#", onClick: event => {
|
|
24
|
+
event.preventDefault();
|
|
25
|
+
session.queueDialog(handleClose => [
|
|
26
|
+
BreakendMultiLevelOptionDialog,
|
|
27
|
+
{
|
|
28
|
+
handleClose,
|
|
29
|
+
session,
|
|
30
|
+
feature: new SimpleFeature({ ...f1, mate: f2 }),
|
|
31
|
+
view: model.view,
|
|
32
|
+
assemblyName: model.view.displayedRegions[0].assemblyName,
|
|
33
|
+
},
|
|
34
|
+
]);
|
|
35
|
+
}, children: "(top/bottom)" }), ' ', _jsx(Link, { href: "#", onClick: event => {
|
|
36
|
+
event.preventDefault();
|
|
37
|
+
session.queueDialog(handleClose => [
|
|
38
|
+
BreakendSingleLevelOptionDialog,
|
|
39
|
+
{
|
|
40
|
+
handleClose,
|
|
41
|
+
session,
|
|
42
|
+
feature: new SimpleFeature({ ...f1, mate: f2 }),
|
|
43
|
+
view: model.view,
|
|
44
|
+
assemblyName: model.view.displayedRegions[0].assemblyName,
|
|
45
|
+
},
|
|
46
|
+
]);
|
|
47
|
+
}, children: "(single row)" })] }) })] }));
|
|
61
48
|
}
|
package/esm/AlignmentsFeatureDetail/LaunchSupplementaryAlignmentBreakpointSplitViewPanel.d.ts
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
1
|
import type { AlignmentFeatureWidgetModel } from './stateModelFactory';
|
|
3
2
|
import type { SimpleFeatureSerialized } from '@jbrowse/core/util';
|
|
4
3
|
export default function LaunchBreakpointSplitViewPanel({ model, feature, }: {
|
|
5
4
|
model: AlignmentFeatureWidgetModel;
|
|
6
5
|
feature: SimpleFeatureSerialized;
|
|
7
|
-
}):
|
|
6
|
+
}): import("react/jsx-runtime").JSX.Element | null;
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { lazy, useEffect, useState } from 'react';
|
|
2
3
|
import { ErrorMessage } from '@jbrowse/core/ui';
|
|
3
4
|
import { SimpleFeature, getSession, toLocale } from '@jbrowse/core/util';
|
|
4
5
|
import { Link, Typography } from '@mui/material';
|
|
@@ -31,28 +32,13 @@ export default function LaunchBreakpointSplitViewPanel({ model, feature, }) {
|
|
|
31
32
|
ret.push([res[i], res[i + 1]]);
|
|
32
33
|
}
|
|
33
34
|
}
|
|
34
|
-
return ret.length ? (
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
const [f1, f2] = arg;
|
|
39
|
-
return (React.createElement("li", { key: `${JSON.stringify(arg)}-${index}` },
|
|
40
|
-
f1.refName,
|
|
41
|
-
":",
|
|
42
|
-
toLocale(f1.strand === 1 ? f1.end : f1.start),
|
|
43
|
-
" ->",
|
|
44
|
-
' ',
|
|
45
|
-
f2.refName,
|
|
46
|
-
":",
|
|
47
|
-
toLocale(f2.strand === 1 ? f2.start : f2.end),
|
|
48
|
-
' ',
|
|
49
|
-
React.createElement(TopBottomSplitViewLink, { model: model, f1: f1, f2: f2 }),
|
|
50
|
-
' ',
|
|
51
|
-
React.createElement(SideBySideViewLink, { model: model, f1: f1, f2: f2 })));
|
|
52
|
-
})))) : null;
|
|
35
|
+
return ret.length ? (_jsxs("div", { children: [_jsx(Typography, { children: "Launch split view" }), error ? _jsx(ErrorMessage, { error: error }) : null, _jsx("ul", { children: ret.map((arg, index) => {
|
|
36
|
+
const [f1, f2] = arg;
|
|
37
|
+
return (_jsxs("li", { children: [f1.refName, ":", toLocale(f1.strand === 1 ? f1.end : f1.start), " ->", ' ', f2.refName, ":", toLocale(f2.strand === 1 ? f2.start : f2.end), ' ', _jsx(TopBottomSplitViewLink, { model: model, f1: f1, f2: f2 }), ' ', _jsx(SideBySideViewLink, { model: model, f1: f1, f2: f2 })] }, `${JSON.stringify(arg)}-${index}`));
|
|
38
|
+
}) })] })) : null;
|
|
53
39
|
}
|
|
54
40
|
function TopBottomSplitViewLink({ model, f1, f2, }) {
|
|
55
|
-
return (
|
|
41
|
+
return (_jsx(Link, { href: "#", onClick: event => {
|
|
56
42
|
event.preventDefault();
|
|
57
43
|
const session = getSession(model);
|
|
58
44
|
session.queueDialog(handleClose => [
|
|
@@ -65,10 +51,10 @@ function TopBottomSplitViewLink({ model, f1, f2, }) {
|
|
|
65
51
|
assemblyName: model.view.displayedRegions[0].assemblyName,
|
|
66
52
|
},
|
|
67
53
|
]);
|
|
68
|
-
}
|
|
54
|
+
}, children: "(top/bottom)" }));
|
|
69
55
|
}
|
|
70
56
|
function SideBySideViewLink({ model, f1, f2, }) {
|
|
71
|
-
return (
|
|
57
|
+
return (_jsx(Link, { href: "#", onClick: event => {
|
|
72
58
|
event.preventDefault();
|
|
73
59
|
const session = getSession(model);
|
|
74
60
|
session.queueDialog(handleClose => [
|
|
@@ -81,5 +67,5 @@ function SideBySideViewLink({ model, f1, f2, }) {
|
|
|
81
67
|
assemblyName: model.view.displayedRegions[0].assemblyName,
|
|
82
68
|
},
|
|
83
69
|
]);
|
|
84
|
-
}
|
|
70
|
+
}, children: "(single row)" }));
|
|
85
71
|
}
|
|
@@ -1,7 +1,6 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
1
|
import type { AlignmentFeatureWidgetModel } from './stateModelFactory';
|
|
3
2
|
import type { SimpleFeatureSerialized } from '@jbrowse/core/util';
|
|
4
3
|
export default function SuppAlignments(props: {
|
|
5
4
|
model: AlignmentFeatureWidgetModel;
|
|
6
5
|
feature: SimpleFeatureSerialized;
|
|
7
|
-
}):
|
|
6
|
+
}): import("react/jsx-runtime").JSX.Element;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
2
|
import BaseCard from '@jbrowse/core/BaseFeatureWidget/BaseFeatureDetail/BaseCard';
|
|
3
3
|
import { getEnv, getSession } from '@jbrowse/core/util';
|
|
4
4
|
import LaunchPairedEndBreakpointSplitViewPanel from './LaunchPairedEndBreakpointSplitViewPanel';
|
|
@@ -12,5 +12,5 @@ export default function SuppAlignments(props) {
|
|
|
12
12
|
}
|
|
13
13
|
catch (e) {
|
|
14
14
|
}
|
|
15
|
-
return (
|
|
15
|
+
return (_jsx(BaseCard, { ...props, title: "Paired alignments", children: hasBreakendSplitView ? (_jsx(LaunchPairedEndBreakpointSplitViewPanel, { model: model, feature: feature })) : null }));
|
|
16
16
|
}
|
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
1
|
import type { AlignmentFeatureWidgetModel } from './stateModelFactory';
|
|
3
2
|
export default function PairLink({ locString, model, }: {
|
|
4
3
|
locString: string;
|
|
5
4
|
model: AlignmentFeatureWidgetModel;
|
|
6
|
-
}):
|
|
5
|
+
}): import("react/jsx-runtime").JSX.Element;
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
2
|
import { Link } from '@mui/material';
|
|
3
3
|
import { navToLoc } from './util';
|
|
4
4
|
export default function PairLink({ locString, model, }) {
|
|
5
|
-
return (
|
|
5
|
+
return (_jsx(Link, { onClick: event => {
|
|
6
6
|
event.preventDefault();
|
|
7
7
|
navToLoc(locString, model);
|
|
8
|
-
}, href: "#"
|
|
8
|
+
}, href: "#", children: locString }));
|
|
9
9
|
}
|
|
@@ -1,8 +1,7 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
1
|
import type { AlignmentFeatureWidgetModel } from './stateModelFactory';
|
|
3
2
|
import type { SimpleFeatureSerialized } from '@jbrowse/core/util';
|
|
4
3
|
export default function SupplementaryAlignments(props: {
|
|
5
4
|
tag: string;
|
|
6
5
|
model: AlignmentFeatureWidgetModel;
|
|
7
6
|
feature: SimpleFeatureSerialized;
|
|
8
|
-
}):
|
|
7
|
+
}): import("react/jsx-runtime").JSX.Element;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
import BaseCard from '@jbrowse/core/BaseFeatureWidget/BaseFeatureDetail/BaseCard';
|
|
3
3
|
import { getEnv, getSession } from '@jbrowse/core/util';
|
|
4
4
|
import LaunchBreakpointSplitViewPanel from './LaunchSupplementaryAlignmentBreakpointSplitViewPanel';
|
|
@@ -13,7 +13,5 @@ export default function SupplementaryAlignments(props) {
|
|
|
13
13
|
}
|
|
14
14
|
catch (e) {
|
|
15
15
|
}
|
|
16
|
-
return (
|
|
17
|
-
React.createElement(SupplementaryAlignmentsLocStrings, { model: model, tag: tag }),
|
|
18
|
-
hasBreakendSplitView ? (React.createElement(LaunchBreakpointSplitViewPanel, { model: model, feature: feature })) : null));
|
|
16
|
+
return (_jsxs(BaseCard, { ...props, title: "Supplementary alignments", children: [_jsx(SupplementaryAlignmentsLocStrings, { model: model, tag: tag }), hasBreakendSplitView ? (_jsx(LaunchBreakpointSplitViewPanel, { model: model, feature: feature })) : null] }));
|
|
19
17
|
}
|
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
1
|
import type { AlignmentFeatureWidgetModel } from './stateModelFactory';
|
|
3
2
|
export default function SupplementaryAlignmentsLocStrings({ tag, model, }: {
|
|
4
3
|
tag: string;
|
|
5
4
|
model: AlignmentFeatureWidgetModel;
|
|
6
|
-
}):
|
|
5
|
+
}): import("react/jsx-runtime").JSX.Element;
|
|
@@ -1,29 +1,26 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
import { Link, Typography } from '@mui/material';
|
|
3
3
|
import { getLengthOnRef } from '../MismatchParser';
|
|
4
4
|
import { navToLoc } from './util';
|
|
5
5
|
export default function SupplementaryAlignmentsLocStrings({ tag, model, }) {
|
|
6
|
-
return (
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
navToLoc(locString, model);
|
|
27
|
-
} }, displayString)));
|
|
28
|
-
}))));
|
|
6
|
+
return (_jsxs("div", { children: [_jsx(Typography, { children: "List of supplementary alignment locations" }), _jsx("ul", { children: tag
|
|
7
|
+
.split(';')
|
|
8
|
+
.filter(SA => !!SA)
|
|
9
|
+
.map((SA, idx) => {
|
|
10
|
+
const [saRef, saStart, saStrand, saCigar] = SA.split(',');
|
|
11
|
+
const saLength = getLengthOnRef(saCigar);
|
|
12
|
+
const extra = Math.floor(saLength / 5);
|
|
13
|
+
const start = +saStart;
|
|
14
|
+
const end = +saStart + saLength;
|
|
15
|
+
const sp = start - extra;
|
|
16
|
+
const ep = end + extra;
|
|
17
|
+
const locString = `${saRef}:${Math.max(1, sp)}-${ep}`;
|
|
18
|
+
const displayStart = start.toLocaleString('en-US');
|
|
19
|
+
const displayEnd = end.toLocaleString('en-US');
|
|
20
|
+
const displayString = `${saRef}:${displayStart}-${displayEnd} (${saStrand}) [${saLength}bp]`;
|
|
21
|
+
return (_jsx("li", { children: _jsx(Link, { href: "#", onClick: async (event) => {
|
|
22
|
+
event.preventDefault();
|
|
23
|
+
navToLoc(locString, model);
|
|
24
|
+
}, children: displayString }) }, `${locString}-${idx}`));
|
|
25
|
+
}) })] }));
|
|
29
26
|
}
|
|
@@ -24,7 +24,9 @@ export default class CramAdapter extends BaseFeatureDataAdapter {
|
|
|
24
24
|
const pm = this.pluginManager;
|
|
25
25
|
const cram = new IndexedCramFile({
|
|
26
26
|
cramFilehandle: openLocation(cramLocation, pm),
|
|
27
|
-
index: new CraiIndex({
|
|
27
|
+
index: new CraiIndex({
|
|
28
|
+
filehandle: openLocation(craiLocation, pm),
|
|
29
|
+
}),
|
|
28
30
|
seqFetch: (...args) => this.seqFetch(...args),
|
|
29
31
|
checkSequenceMD5: false,
|
|
30
32
|
});
|
|
@@ -110,7 +112,10 @@ export default class CramAdapter extends BaseFeatureDataAdapter {
|
|
|
110
112
|
.map(rgLine => { var _a; return (_a = rgLine.data.find(item => item.tag === 'ID')) === null || _a === void 0 ? void 0 : _a.value; });
|
|
111
113
|
const data = { idToName, nameToId, readGroups };
|
|
112
114
|
this.samHeader = data;
|
|
113
|
-
return {
|
|
115
|
+
return {
|
|
116
|
+
samHeader: data,
|
|
117
|
+
...conf,
|
|
118
|
+
};
|
|
114
119
|
});
|
|
115
120
|
}
|
|
116
121
|
async setup(opts) {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { BaseFeatureDataAdapter } from '@jbrowse/core/data_adapters/BaseAdapter';
|
|
2
2
|
import SimpleFeature from '@jbrowse/core/util/simpleFeature';
|
|
3
3
|
import { Observable } from 'rxjs';
|
|
4
|
-
import type { GenericFilehandle } from 'generic-
|
|
4
|
+
import type { GenericFilehandle } from 'generic-filehandle2';
|
|
5
5
|
export declare function parseSmallFasta(text: string): {
|
|
6
6
|
id: string;
|
|
7
7
|
description: string;
|
|
@@ -21,7 +21,8 @@ export function parseSmallFasta(text) {
|
|
|
21
21
|
export class FetchableSmallFasta {
|
|
22
22
|
constructor(filehandle) {
|
|
23
23
|
this.data = filehandle.readFile().then(buffer => {
|
|
24
|
-
const
|
|
24
|
+
const decoder = new TextDecoder('utf8');
|
|
25
|
+
const text = decoder.decode(buffer);
|
|
25
26
|
return parseSmallFasta(text);
|
|
26
27
|
});
|
|
27
28
|
}
|
|
@@ -1,45 +1,30 @@
|
|
|
1
|
+
import { testAdapter } from '@jbrowse/core/util';
|
|
1
2
|
import { getFileName, makeIndex, makeIndexType, } from '@jbrowse/core/util/tracks';
|
|
2
3
|
export default function GuessAlignmentsTypesF(pluginManager) {
|
|
3
4
|
pluginManager.addToExtensionPoint('Core-guessAdapterForLocation', (adapterGuesser) => {
|
|
4
5
|
return (file, index, adapterHint) => {
|
|
5
|
-
const regexGuess = /\.cram$/i;
|
|
6
|
-
const adapterName = 'CramAdapter';
|
|
7
|
-
const fileName = getFileName(file);
|
|
8
|
-
const obj = {
|
|
9
|
-
type: adapterName,
|
|
10
|
-
cramLocation: file,
|
|
11
|
-
craiLocation: index || makeIndex(file, '.crai'),
|
|
12
|
-
};
|
|
13
|
-
if (regexGuess.test(fileName) && !adapterHint) {
|
|
14
|
-
return obj;
|
|
15
|
-
}
|
|
16
|
-
if (adapterHint === adapterName) {
|
|
17
|
-
return obj;
|
|
18
|
-
}
|
|
19
|
-
return adapterGuesser(file, index, adapterHint);
|
|
20
|
-
};
|
|
21
|
-
});
|
|
22
|
-
pluginManager.addToExtensionPoint('Core-guessAdapterForLocation', (adapterGuesser) => {
|
|
23
|
-
return (file, index, adapterHint) => {
|
|
24
|
-
const regexGuess = /\.bam$/i;
|
|
25
|
-
const adapterName = 'BamAdapter';
|
|
26
6
|
const fileName = getFileName(file);
|
|
27
7
|
const indexName = index && getFileName(index);
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
8
|
+
if (testAdapter(fileName, /\.bam$/i, adapterHint, 'BamAdapter')) {
|
|
9
|
+
return {
|
|
10
|
+
type: 'BamAdapter',
|
|
11
|
+
bamLocation: file,
|
|
12
|
+
index: {
|
|
13
|
+
location: index || makeIndex(file, '.bai'),
|
|
14
|
+
indexType: makeIndexType(indexName, 'CSI', 'BAI'),
|
|
15
|
+
},
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
else if (testAdapter(fileName, /\.cram$/i, adapterHint, 'CramAdapter')) {
|
|
19
|
+
return {
|
|
20
|
+
type: 'CramAdapter',
|
|
21
|
+
cramLocation: file,
|
|
22
|
+
craiLocation: index || makeIndex(file, '.crai'),
|
|
23
|
+
};
|
|
38
24
|
}
|
|
39
|
-
|
|
40
|
-
return
|
|
25
|
+
else {
|
|
26
|
+
return adapterGuesser(file, index, adapterHint);
|
|
41
27
|
}
|
|
42
|
-
return adapterGuesser(file, index, adapterHint);
|
|
43
28
|
};
|
|
44
29
|
});
|
|
45
30
|
pluginManager.addToExtensionPoint('Core-guessTrackTypeForLocation', (trackTypeGuesser) => {
|
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
1
|
import type { LinearAlignmentsDisplayModel } from '../model';
|
|
3
2
|
declare const AlignmentsDisplay: ({ model, }: {
|
|
4
3
|
model: LinearAlignmentsDisplayModel;
|
|
5
|
-
}) =>
|
|
4
|
+
}) => import("react/jsx-runtime").JSX.Element | null;
|
|
6
5
|
export default AlignmentsDisplay;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
import { getConf } from '@jbrowse/core/configuration';
|
|
3
3
|
import { ResizeHandle } from '@jbrowse/core/ui';
|
|
4
4
|
import { observer } from 'mobx-react';
|
|
@@ -18,17 +18,12 @@ const AlignmentsDisplay = observer(function AlignmentsDisplay({ model, }) {
|
|
|
18
18
|
return null;
|
|
19
19
|
}
|
|
20
20
|
const top = (_a = SNPCoverageDisplay.height) !== null && _a !== void 0 ? _a : 100;
|
|
21
|
-
return (
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
React.createElement("div", { "data-testid": "Blockset-pileup", style: {
|
|
29
|
-
position: 'absolute',
|
|
30
|
-
top,
|
|
31
|
-
} },
|
|
32
|
-
React.createElement(PileupDisplay.RenderingComponent, { model: PileupDisplay }))));
|
|
21
|
+
return (_jsxs("div", { "data-testid": `display-${getConf(model, 'displayId')}`, style: { position: 'relative' }, children: [_jsx("div", { "data-testid": "Blockset-snpcoverage", children: _jsx(SNPCoverageDisplay.RenderingComponent, { model: SNPCoverageDisplay }) }), _jsx(ResizeHandle, { onDrag: delta => {
|
|
22
|
+
SNPCoverageDisplay.setHeight(SNPCoverageDisplay.height + delta);
|
|
23
|
+
return delta;
|
|
24
|
+
}, className: classes.resizeHandle, style: { top: top - 4 } }), _jsx("div", { "data-testid": "Blockset-pileup", style: {
|
|
25
|
+
position: 'absolute',
|
|
26
|
+
top,
|
|
27
|
+
}, children: _jsx(PileupDisplay.RenderingComponent, { model: PileupDisplay }) })] }));
|
|
33
28
|
});
|
|
34
29
|
export default AlignmentsDisplay;
|