@jbrowse/plugin-variants 2.18.0 → 3.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/ChordVariantDisplay/models/stateModelFactory.d.ts +1 -1
- package/dist/LinearVariantDisplay/model.d.ts +5 -5
- package/dist/MultiLinearVariantDisplay/components/Crosshair.d.ts +7 -0
- package/dist/MultiLinearVariantDisplay/components/Crosshair.js +35 -0
- package/dist/MultiLinearVariantDisplay/components/VariantDisplayComponent.d.ts +1 -2
- package/dist/MultiLinearVariantDisplay/components/VariantDisplayComponent.js +5 -49
- package/dist/MultiLinearVariantDisplay/index.js +18 -8
- package/dist/MultiLinearVariantDisplay/model.d.ts +113 -40
- package/dist/MultiLinearVariantDisplay/model.js +24 -176
- package/dist/MultiLinearVariantDisplay/renderSvg.d.ts +1 -2
- package/dist/MultiLinearVariantDisplay/renderSvg.js +2 -5
- package/dist/MultiLinearVariantMatrixDisplay/components/Crosshair.d.ts +7 -0
- package/dist/MultiLinearVariantMatrixDisplay/components/Crosshair.js +28 -0
- package/dist/MultiLinearVariantMatrixDisplay/components/LinesConnectingMatrixToGenomicPosition.d.ts +1 -2
- package/dist/MultiLinearVariantMatrixDisplay/components/LinesConnectingMatrixToGenomicPosition.js +13 -16
- package/dist/MultiLinearVariantMatrixDisplay/components/VariantDisplayComponent.d.ts +1 -2
- package/dist/MultiLinearVariantMatrixDisplay/components/VariantDisplayComponent.js +6 -56
- package/dist/MultiLinearVariantMatrixDisplay/model.d.ts +109 -27
- package/dist/MultiLinearVariantMatrixDisplay/model.js +31 -136
- package/dist/MultiLinearVariantMatrixDisplay/renderSvg.d.ts +1 -2
- package/dist/MultiLinearVariantMatrixDisplay/renderSvg.js +3 -7
- package/dist/MultiLinearVariantMatrixRenderer/LinearVariantMatrixRenderer.d.ts +4 -32
- package/dist/MultiLinearVariantMatrixRenderer/LinearVariantMatrixRenderer.js +44 -63
- package/dist/MultiLinearVariantMatrixRenderer/components/LinearVariantMatrixRendering.d.ts +3 -2
- package/dist/MultiLinearVariantMatrixRenderer/components/LinearVariantMatrixRendering.js +31 -5
- package/dist/MultiLinearVariantMatrixRenderer/index.js +2 -2
- package/dist/MultiLinearVariantMatrixRenderer/makeImageData.d.ts +10 -0
- package/dist/MultiLinearVariantMatrixRenderer/makeImageData.js +100 -0
- package/dist/MultiLinearVariantMatrixRenderer/types.d.ts +15 -0
- package/dist/MultiLinearVariantMatrixRenderer/types.js +2 -0
- package/dist/MultiLinearVariantRenderer/MultiVariantRenderer.d.ts +4 -21
- package/dist/MultiLinearVariantRenderer/MultiVariantRenderer.js +38 -25
- package/dist/MultiLinearVariantRenderer/MultiVariantRendering.d.ts +7 -3
- package/dist/MultiLinearVariantRenderer/MultiVariantRendering.js +36 -27
- package/dist/MultiLinearVariantRenderer/configSchema.d.ts +1 -33
- package/dist/MultiLinearVariantRenderer/configSchema.js +0 -5
- package/dist/MultiLinearVariantRenderer/makeImageData.d.ts +4 -0
- package/dist/MultiLinearVariantRenderer/makeImageData.js +67 -0
- package/dist/MultiLinearVariantRenderer/types.d.ts +19 -0
- package/dist/MultiLinearVariantRenderer/types.js +2 -0
- package/dist/MultiVariantBaseRenderer.d.ts +4 -4
- package/dist/StructuralVariantChordRenderer/Chord.d.ts +2 -19
- package/dist/StructuralVariantChordRenderer/Chord.js +3 -25
- package/dist/StructuralVariantChordRenderer/ReactComponent.d.ts +2 -3
- package/dist/StructuralVariantChordRenderer/ReactComponent.js +7 -29
- package/dist/StructuralVariantChordRenderer/types.d.ts +17 -0
- package/dist/StructuralVariantChordRenderer/types.js +2 -0
- package/dist/Tooltip.d.ts +2 -2
- package/dist/Tooltip.js +6 -32
- package/dist/VariantFeatureWidget/Checkbox2.d.ts +1 -2
- package/dist/VariantFeatureWidget/Checkbox2.js +2 -5
- package/dist/VariantFeatureWidget/LaunchBreakendPanel.d.ts +2 -3
- package/dist/VariantFeatureWidget/LaunchBreakendPanel.js +66 -69
- package/dist/VariantFeatureWidget/LaunchBreakendWidgetArea.d.ts +4 -0
- package/dist/VariantFeatureWidget/LaunchBreakendWidgetArea.js +60 -0
- package/dist/VariantFeatureWidget/VariantConsequenceDataGrid.d.ts +5 -0
- package/dist/VariantFeatureWidget/VariantConsequenceDataGrid.js +15 -0
- package/dist/VariantFeatureWidget/VariantConsequenceDataGridWrapper.d.ts +5 -0
- package/dist/VariantFeatureWidget/VariantConsequenceDataGridWrapper.js +20 -0
- package/dist/VariantFeatureWidget/VariantConsequencePanel.d.ts +5 -0
- package/dist/VariantFeatureWidget/VariantConsequencePanel.js +15 -0
- package/dist/VariantFeatureWidget/VariantFeatureWidget.d.ts +1 -2
- package/dist/VariantFeatureWidget/VariantFeatureWidget.js +47 -36
- package/dist/VariantFeatureWidget/VariantSampleFilters.d.ts +9 -0
- package/dist/VariantFeatureWidget/VariantSampleFilters.js +10 -0
- package/dist/VariantFeatureWidget/VariantSampleGrid.d.ts +9 -7
- package/dist/VariantFeatureWidget/VariantSampleGrid.js +14 -44
- package/dist/VariantFeatureWidget/index.js +17 -7
- package/dist/VariantFeatureWidget/types.d.ts +16 -0
- package/dist/VariantFeatureWidget/types.js +2 -0
- package/dist/VariantRPC/MultiVariantGetGenotypeMatrix.js +10 -27
- package/dist/VariantRPC/MultiVariantGetSimplifiedFeatures.d.ts +12 -7
- package/dist/VariantRPC/MultiVariantGetSimplifiedFeatures.js +27 -37
- package/dist/VcfAdapter/VcfAdapter.d.ts +7 -0
- package/dist/VcfAdapter/VcfAdapter.js +29 -3
- package/dist/VcfAdapter/configSchema.d.ts +8 -0
- package/dist/VcfAdapter/configSchema.js +12 -1
- package/dist/VcfAdapter/index.js +17 -7
- package/dist/VcfFeature/index.js +2 -1
- package/dist/VcfFeature/util.js +3 -4
- package/dist/VcfTabixAdapter/VcfTabixAdapter.js +38 -12
- package/dist/VcfTabixAdapter/configSchema.d.ts +8 -0
- package/dist/VcfTabixAdapter/configSchema.js +8 -0
- package/dist/VcfTabixAdapter/index.js +17 -7
- package/dist/extensionPoints.js +21 -33
- package/dist/getMultiVariantFeaturesAutorun.d.ts +4 -7
- package/dist/getMultiVariantFeaturesAutorun.js +16 -15
- package/dist/getMultiVariantSourcesAutorun.d.ts +1 -6
- package/dist/shared/BulkEditPanel.d.ts +4 -5
- package/dist/shared/BulkEditPanel.js +69 -88
- package/dist/shared/ClusterDialog.d.ts +4 -5
- package/dist/shared/ClusterDialog.js +45 -86
- package/dist/shared/ColorLegend.d.ts +2 -3
- package/dist/shared/ColorLegend.js +8 -10
- package/dist/shared/HelpfulTips.d.ts +1 -0
- package/dist/shared/HelpfulTips.js +7 -0
- package/dist/shared/LegendBar.d.ts +3 -3
- package/dist/shared/LegendBar.js +6 -12
- package/dist/shared/MAFFilterDialog.d.ts +2 -3
- package/dist/shared/MAFFilterDialog.js +14 -42
- package/dist/shared/MultiVariantBaseModel.d.ts +341 -0
- package/dist/shared/MultiVariantBaseModel.js +316 -0
- package/dist/shared/MultiVariantTooltip.d.ts +6 -0
- package/dist/shared/MultiVariantTooltip.js +23 -0
- package/dist/shared/RectBg.d.ts +2 -3
- package/dist/shared/RectBg.js +3 -7
- package/dist/shared/RowPalettizer.d.ts +2 -3
- package/dist/shared/RowPalettizer.js +30 -28
- package/dist/shared/SetColorDialog.d.ts +2 -3
- package/dist/shared/SetColorDialog.js +26 -65
- package/dist/shared/SetMinMaxDialog.d.ts +1 -2
- package/dist/shared/SetMinMaxDialog.js +11 -41
- package/dist/shared/SetRowHeightDialog.d.ts +8 -0
- package/dist/shared/SetRowHeightDialog.js +18 -0
- package/dist/shared/SharedVariantMixin.d.ts +7 -7
- package/dist/shared/SourcesDataGrid.d.ts +6 -0
- package/dist/shared/SourcesDataGrid.js +68 -0
- package/dist/shared/SourcesGrid.d.ts +2 -3
- package/dist/shared/SourcesGrid.js +5 -134
- package/dist/shared/SourcesGridHeader.d.ts +7 -0
- package/dist/shared/SourcesGridHeader.js +41 -0
- package/dist/shared/multiVariantColor.d.ts +3 -0
- package/dist/shared/multiVariantColor.js +50 -0
- package/dist/types.d.ts +14 -0
- package/dist/types.js +2 -0
- package/dist/util.d.ts +6 -9
- package/dist/util.js +47 -14
- package/esm/ChordVariantDisplay/models/stateModelFactory.d.ts +1 -1
- package/esm/LinearVariantDisplay/model.d.ts +5 -5
- package/esm/MultiLinearVariantDisplay/components/Crosshair.d.ts +7 -0
- package/esm/MultiLinearVariantDisplay/components/Crosshair.js +30 -0
- package/esm/MultiLinearVariantDisplay/components/VariantDisplayComponent.d.ts +1 -2
- package/esm/MultiLinearVariantDisplay/components/VariantDisplayComponent.js +5 -26
- package/esm/MultiLinearVariantDisplay/index.js +1 -1
- package/esm/MultiLinearVariantDisplay/model.d.ts +113 -40
- package/esm/MultiLinearVariantDisplay/model.js +7 -169
- package/esm/MultiLinearVariantDisplay/renderSvg.d.ts +1 -2
- package/esm/MultiLinearVariantDisplay/renderSvg.js +2 -5
- package/esm/MultiLinearVariantMatrixDisplay/components/Crosshair.d.ts +7 -0
- package/esm/MultiLinearVariantMatrixDisplay/components/Crosshair.js +23 -0
- package/esm/MultiLinearVariantMatrixDisplay/components/LinesConnectingMatrixToGenomicPosition.d.ts +1 -2
- package/esm/MultiLinearVariantMatrixDisplay/components/LinesConnectingMatrixToGenomicPosition.js +13 -13
- package/esm/MultiLinearVariantMatrixDisplay/components/VariantDisplayComponent.d.ts +1 -2
- package/esm/MultiLinearVariantMatrixDisplay/components/VariantDisplayComponent.js +6 -33
- package/esm/MultiLinearVariantMatrixDisplay/model.d.ts +109 -27
- package/esm/MultiLinearVariantMatrixDisplay/model.js +14 -129
- package/esm/MultiLinearVariantMatrixDisplay/renderSvg.d.ts +1 -2
- package/esm/MultiLinearVariantMatrixDisplay/renderSvg.js +3 -7
- package/esm/MultiLinearVariantMatrixRenderer/LinearVariantMatrixRenderer.d.ts +4 -32
- package/esm/MultiLinearVariantMatrixRenderer/LinearVariantMatrixRenderer.js +11 -63
- package/esm/MultiLinearVariantMatrixRenderer/components/LinearVariantMatrixRendering.d.ts +3 -2
- package/esm/MultiLinearVariantMatrixRenderer/components/LinearVariantMatrixRendering.js +31 -2
- package/esm/MultiLinearVariantMatrixRenderer/index.js +1 -1
- package/esm/MultiLinearVariantMatrixRenderer/makeImageData.d.ts +10 -0
- package/esm/MultiLinearVariantMatrixRenderer/makeImageData.js +97 -0
- package/esm/MultiLinearVariantMatrixRenderer/types.d.ts +15 -0
- package/esm/MultiLinearVariantMatrixRenderer/types.js +1 -0
- package/esm/MultiLinearVariantRenderer/MultiVariantRenderer.d.ts +4 -21
- package/esm/MultiLinearVariantRenderer/MultiVariantRenderer.js +6 -26
- package/esm/MultiLinearVariantRenderer/MultiVariantRendering.d.ts +7 -3
- package/esm/MultiLinearVariantRenderer/MultiVariantRendering.js +34 -5
- package/esm/MultiLinearVariantRenderer/configSchema.d.ts +1 -33
- package/esm/MultiLinearVariantRenderer/configSchema.js +0 -2
- package/esm/MultiLinearVariantRenderer/makeImageData.d.ts +4 -0
- package/esm/MultiLinearVariantRenderer/makeImageData.js +61 -0
- package/esm/MultiLinearVariantRenderer/types.d.ts +19 -0
- package/esm/MultiLinearVariantRenderer/types.js +1 -0
- package/esm/MultiVariantBaseRenderer.d.ts +4 -4
- package/esm/StructuralVariantChordRenderer/Chord.d.ts +2 -19
- package/esm/StructuralVariantChordRenderer/Chord.js +3 -2
- package/esm/StructuralVariantChordRenderer/ReactComponent.d.ts +2 -3
- package/esm/StructuralVariantChordRenderer/ReactComponent.js +7 -6
- package/esm/StructuralVariantChordRenderer/types.d.ts +17 -0
- package/esm/StructuralVariantChordRenderer/types.js +1 -0
- package/esm/Tooltip.d.ts +2 -2
- package/esm/Tooltip.js +6 -9
- package/esm/VariantFeatureWidget/Checkbox2.d.ts +1 -2
- package/esm/VariantFeatureWidget/Checkbox2.js +2 -2
- package/esm/VariantFeatureWidget/LaunchBreakendPanel.d.ts +2 -3
- package/esm/VariantFeatureWidget/LaunchBreakendPanel.js +48 -61
- package/esm/VariantFeatureWidget/LaunchBreakendWidgetArea.d.ts +4 -0
- package/esm/VariantFeatureWidget/LaunchBreakendWidgetArea.js +24 -0
- package/esm/VariantFeatureWidget/VariantConsequenceDataGrid.d.ts +5 -0
- package/esm/VariantFeatureWidget/VariantConsequenceDataGrid.js +9 -0
- package/esm/VariantFeatureWidget/VariantConsequenceDataGridWrapper.d.ts +5 -0
- package/esm/VariantFeatureWidget/VariantConsequenceDataGridWrapper.js +17 -0
- package/esm/VariantFeatureWidget/VariantConsequencePanel.d.ts +5 -0
- package/esm/VariantFeatureWidget/VariantConsequencePanel.js +9 -0
- package/esm/VariantFeatureWidget/VariantFeatureWidget.d.ts +1 -2
- package/esm/VariantFeatureWidget/VariantFeatureWidget.js +30 -29
- package/esm/VariantFeatureWidget/VariantSampleFilters.d.ts +9 -0
- package/esm/VariantFeatureWidget/VariantSampleFilters.js +7 -0
- package/esm/VariantFeatureWidget/VariantSampleGrid.d.ts +9 -7
- package/esm/VariantFeatureWidget/VariantSampleGrid.js +15 -22
- package/esm/VariantFeatureWidget/types.d.ts +16 -0
- package/esm/VariantFeatureWidget/types.js +1 -0
- package/esm/VariantRPC/MultiVariantGetGenotypeMatrix.js +10 -27
- package/esm/VariantRPC/MultiVariantGetSimplifiedFeatures.d.ts +12 -7
- package/esm/VariantRPC/MultiVariantGetSimplifiedFeatures.js +27 -37
- package/esm/VcfAdapter/VcfAdapter.d.ts +7 -0
- package/esm/VcfAdapter/VcfAdapter.js +31 -5
- package/esm/VcfAdapter/configSchema.d.ts +8 -0
- package/esm/VcfAdapter/configSchema.js +12 -1
- package/esm/VcfFeature/index.js +2 -1
- package/esm/VcfFeature/util.js +3 -4
- package/esm/VcfTabixAdapter/VcfTabixAdapter.js +38 -12
- package/esm/VcfTabixAdapter/configSchema.d.ts +8 -0
- package/esm/VcfTabixAdapter/configSchema.js +8 -0
- package/esm/extensionPoints.js +21 -33
- package/esm/getMultiVariantFeaturesAutorun.d.ts +4 -7
- package/esm/getMultiVariantFeaturesAutorun.js +16 -15
- package/esm/getMultiVariantSourcesAutorun.d.ts +1 -6
- package/esm/shared/BulkEditPanel.d.ts +4 -5
- package/esm/shared/BulkEditPanel.js +70 -66
- package/esm/shared/ClusterDialog.d.ts +4 -5
- package/esm/shared/ClusterDialog.js +44 -62
- package/esm/shared/ColorLegend.d.ts +2 -3
- package/esm/shared/ColorLegend.js +8 -10
- package/esm/shared/HelpfulTips.d.ts +1 -0
- package/esm/shared/HelpfulTips.js +4 -0
- package/esm/shared/LegendBar.d.ts +3 -3
- package/esm/shared/LegendBar.js +7 -13
- package/esm/shared/MAFFilterDialog.d.ts +2 -3
- package/esm/shared/MAFFilterDialog.js +14 -19
- package/esm/shared/MultiVariantBaseModel.d.ts +341 -0
- package/esm/shared/MultiVariantBaseModel.js +277 -0
- package/esm/shared/MultiVariantTooltip.d.ts +6 -0
- package/esm/shared/MultiVariantTooltip.js +17 -0
- package/esm/shared/RectBg.d.ts +2 -3
- package/esm/shared/RectBg.js +3 -4
- package/esm/shared/RowPalettizer.d.ts +2 -3
- package/esm/shared/RowPalettizer.js +30 -25
- package/esm/shared/SetColorDialog.d.ts +2 -3
- package/esm/shared/SetColorDialog.js +26 -42
- package/esm/shared/SetMinMaxDialog.d.ts +1 -2
- package/esm/shared/SetMinMaxDialog.js +11 -18
- package/esm/shared/SetRowHeightDialog.d.ts +8 -0
- package/esm/shared/SetRowHeightDialog.js +15 -0
- package/esm/shared/SharedVariantMixin.d.ts +7 -7
- package/esm/shared/SourcesDataGrid.d.ts +6 -0
- package/esm/shared/SourcesDataGrid.js +62 -0
- package/esm/shared/SourcesGrid.d.ts +2 -3
- package/esm/shared/SourcesGrid.js +5 -111
- package/esm/shared/SourcesGridHeader.d.ts +7 -0
- package/esm/shared/SourcesGridHeader.js +35 -0
- package/esm/shared/multiVariantColor.d.ts +3 -0
- package/esm/shared/multiVariantColor.js +45 -0
- package/esm/types.d.ts +14 -0
- package/esm/types.js +1 -0
- package/esm/util.d.ts +6 -9
- package/esm/util.js +43 -13
- package/package.json +6 -7
- package/dist/VariantFeatureWidget/AnnotGrid.d.ts +0 -6
- package/dist/VariantFeatureWidget/AnnotGrid.js +0 -39
- package/dist/VariantFeatureWidget/VariantAnnotationTable.d.ts +0 -6
- package/dist/VariantFeatureWidget/VariantAnnotationTable.js +0 -16
- package/dist/configSchema.d.ts +0 -34
- package/dist/configSchema.js +0 -44
- package/dist/shared/DraggableDialog.d.ts +0 -6
- package/dist/shared/DraggableDialog.js +0 -62
- package/dist/shared/Tooltip.d.ts +0 -18
- package/dist/shared/Tooltip.js +0 -38
- package/esm/VariantFeatureWidget/AnnotGrid.d.ts +0 -6
- package/esm/VariantFeatureWidget/AnnotGrid.js +0 -13
- package/esm/VariantFeatureWidget/VariantAnnotationTable.d.ts +0 -6
- package/esm/VariantFeatureWidget/VariantAnnotationTable.js +0 -10
- package/esm/configSchema.d.ts +0 -34
- package/esm/configSchema.js +0 -42
- package/esm/shared/DraggableDialog.d.ts +0 -6
- package/esm/shared/DraggableDialog.js +0 -34
- package/esm/shared/Tooltip.d.ts +0 -18
- package/esm/shared/Tooltip.js +0 -33
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
import { getColorAlleleCount, getColorPhased, getColorPhasedWithPhaseSet, } from '../shared/multiVariantColor';
|
|
2
|
+
import { getFeaturesThatPassMinorAlleleFrequencyFilter } from '../util';
|
|
3
|
+
const fudgeFactor = 0.6;
|
|
4
|
+
const f2 = fudgeFactor / 2;
|
|
5
|
+
function drawColorAlleleCount(alleles, ctx, x, y, w, h) {
|
|
6
|
+
ctx.fillStyle = getColorAlleleCount(alleles);
|
|
7
|
+
ctx.fillRect(x - f2, y - f2, w + f2, h + f2);
|
|
8
|
+
}
|
|
9
|
+
function drawPhased(alleles, ctx, x, y, w, h, HP, PS) {
|
|
10
|
+
ctx.fillStyle =
|
|
11
|
+
PS !== undefined
|
|
12
|
+
? getColorPhasedWithPhaseSet(alleles, HP, PS)
|
|
13
|
+
: getColorPhased(alleles, HP);
|
|
14
|
+
ctx.fillRect(x - f2, y - f2, w + f2, h + f2);
|
|
15
|
+
}
|
|
16
|
+
export function makeImageData({ ctx, canvasWidth, canvasHeight, renderArgs, }) {
|
|
17
|
+
var _a, _b;
|
|
18
|
+
const { renderingMode: renderingMode, minorAlleleFrequencyFilter, sources, features, } = renderArgs;
|
|
19
|
+
const { statusCallback = () => { } } = renderArgs;
|
|
20
|
+
statusCallback('Drawing variant matrix');
|
|
21
|
+
const h = canvasHeight / sources.length;
|
|
22
|
+
const mafs = getFeaturesThatPassMinorAlleleFrequencyFilter(features.values(), minorAlleleFrequencyFilter);
|
|
23
|
+
const arr = [];
|
|
24
|
+
const m = mafs.length;
|
|
25
|
+
const w = canvasWidth / m;
|
|
26
|
+
for (let i = 0; i < m; i++) {
|
|
27
|
+
const arr2 = [];
|
|
28
|
+
const f = mafs[i];
|
|
29
|
+
const hasPhaseSet = f.get('format').includes('PS');
|
|
30
|
+
if (hasPhaseSet) {
|
|
31
|
+
const samp = f.get('samples');
|
|
32
|
+
const x = (i / mafs.length) * canvasWidth;
|
|
33
|
+
const sln = sources.length;
|
|
34
|
+
for (let j = 0; j < sln; j++) {
|
|
35
|
+
const y = (j / sln) * canvasHeight;
|
|
36
|
+
const { name, HP } = sources[j];
|
|
37
|
+
const s = samp[name];
|
|
38
|
+
if (s) {
|
|
39
|
+
const genotype = (_a = s.GT) === null || _a === void 0 ? void 0 : _a[0];
|
|
40
|
+
if (genotype) {
|
|
41
|
+
arr2.push(genotype);
|
|
42
|
+
const isPhased = genotype.includes('|');
|
|
43
|
+
if (renderingMode === 'phased') {
|
|
44
|
+
if (isPhased) {
|
|
45
|
+
const PS = (_b = s.PS) === null || _b === void 0 ? void 0 : _b[0];
|
|
46
|
+
const alleles = genotype.split('|');
|
|
47
|
+
drawPhased(alleles, ctx, x, y, w, h, HP, PS);
|
|
48
|
+
}
|
|
49
|
+
else {
|
|
50
|
+
ctx.fillStyle = 'black';
|
|
51
|
+
ctx.fillRect(x - f2, y - f2, w + f2, h + f2);
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
else {
|
|
55
|
+
const alleles = genotype.split(/[/|]/);
|
|
56
|
+
drawColorAlleleCount(alleles, ctx, x, y, w, h);
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
else {
|
|
63
|
+
const samp = f.get('genotypes');
|
|
64
|
+
const x = (i / mafs.length) * canvasWidth;
|
|
65
|
+
const sln = sources.length;
|
|
66
|
+
const arr2 = [];
|
|
67
|
+
for (let j = 0; j < sln; j++) {
|
|
68
|
+
const y = (j / sln) * canvasHeight;
|
|
69
|
+
const { name, HP } = sources[j];
|
|
70
|
+
const genotype = samp[name];
|
|
71
|
+
if (genotype) {
|
|
72
|
+
arr2.push(genotype);
|
|
73
|
+
const isPhased = genotype.includes('|');
|
|
74
|
+
if (renderingMode === 'phased') {
|
|
75
|
+
if (isPhased) {
|
|
76
|
+
const alleles = genotype.split('|');
|
|
77
|
+
drawPhased(alleles, ctx, x, y, w, h, HP);
|
|
78
|
+
}
|
|
79
|
+
else {
|
|
80
|
+
ctx.fillStyle = 'black';
|
|
81
|
+
ctx.fillRect(x - f2, y - f2, w + f2, h + f2);
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
else {
|
|
85
|
+
const alleles = genotype.split(/[/|]/);
|
|
86
|
+
drawColorAlleleCount(alleles, ctx, x, y, w, h);
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
arr.push(arr2);
|
|
92
|
+
}
|
|
93
|
+
return {
|
|
94
|
+
mafs,
|
|
95
|
+
arr,
|
|
96
|
+
};
|
|
97
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { Source } from '../types';
|
|
2
|
+
import type { RenderArgsDeserialized as BoxRenderArgsDeserialized } from '@jbrowse/core/pluggableElementTypes/renderers/BoxRendererType';
|
|
3
|
+
import type { Feature } from '@jbrowse/core/util';
|
|
4
|
+
export interface RenderArgsDeserialized extends BoxRenderArgsDeserialized {
|
|
5
|
+
sources: Source[];
|
|
6
|
+
minorAlleleFrequencyFilter: number;
|
|
7
|
+
highResolutionScaling: number;
|
|
8
|
+
height: number;
|
|
9
|
+
renderingMode: string;
|
|
10
|
+
}
|
|
11
|
+
export interface RenderArgsDeserializedWithFeaturesAndLayout extends RenderArgsDeserialized {
|
|
12
|
+
sources: Source[];
|
|
13
|
+
features: Map<string, Feature>;
|
|
14
|
+
renderingMode: string;
|
|
15
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -1,22 +1,6 @@
|
|
|
1
1
|
import FeatureRendererType from '@jbrowse/core/pluggableElementTypes/renderers/FeatureRendererType';
|
|
2
|
-
import type {
|
|
3
|
-
import type { RenderArgsDeserialized as FeatureRenderArgsDeserialized } from '@jbrowse/core/pluggableElementTypes/renderers/FeatureRendererType';
|
|
2
|
+
import type { MultiRenderArgsDeserialized } from './types';
|
|
4
3
|
import type { Feature } from '@jbrowse/core/util';
|
|
5
|
-
import type { ThemeOptions } from '@mui/material';
|
|
6
|
-
export interface RenderArgsDeserialized extends FeatureRenderArgsDeserialized {
|
|
7
|
-
bpPerPx: number;
|
|
8
|
-
height: number;
|
|
9
|
-
highResolutionScaling: number;
|
|
10
|
-
themeOptions: ThemeOptions;
|
|
11
|
-
}
|
|
12
|
-
export interface RenderArgsDeserializedWithFeatures extends RenderArgsDeserialized {
|
|
13
|
-
features: Map<string, Feature>;
|
|
14
|
-
}
|
|
15
|
-
export interface MultiRenderArgsDeserialized extends RenderArgsDeserializedWithFeatures {
|
|
16
|
-
sources: Source[];
|
|
17
|
-
rowHeight: number;
|
|
18
|
-
scrollTop: number;
|
|
19
|
-
}
|
|
20
4
|
export default class MultiVariantBaseRenderer extends FeatureRendererType {
|
|
21
5
|
supportsSVG: boolean;
|
|
22
6
|
render(renderProps: MultiRenderArgsDeserialized): Promise<{
|
|
@@ -25,14 +9,14 @@ export default class MultiVariantBaseRenderer extends FeatureRendererType {
|
|
|
25
9
|
width: number;
|
|
26
10
|
containsNoTransferables: boolean;
|
|
27
11
|
canvasRecordedData: any;
|
|
28
|
-
reactElement?:
|
|
12
|
+
reactElement?: React.ReactElement;
|
|
29
13
|
html?: string;
|
|
30
14
|
} | {
|
|
31
15
|
features: Map<string, Feature>;
|
|
32
16
|
height: number;
|
|
33
17
|
width: number;
|
|
34
18
|
containsNoTransferables: boolean;
|
|
35
|
-
reactElement:
|
|
19
|
+
reactElement: import("react/jsx-runtime").JSX.Element;
|
|
36
20
|
html?: string;
|
|
37
21
|
} | {
|
|
38
22
|
features: Map<string, Feature>;
|
|
@@ -40,9 +24,8 @@ export default class MultiVariantBaseRenderer extends FeatureRendererType {
|
|
|
40
24
|
width: number;
|
|
41
25
|
containsNoTransferables: boolean;
|
|
42
26
|
imageData: any;
|
|
43
|
-
reactElement?:
|
|
27
|
+
reactElement?: React.ReactElement;
|
|
44
28
|
html?: string;
|
|
45
29
|
}>;
|
|
46
|
-
draw(ctx: CanvasRenderingContext2D, props: MultiRenderArgsDeserialized): Promise<void>;
|
|
47
30
|
}
|
|
48
31
|
export type { RenderArgsSerialized, RenderResults, ResultsDeserialized, ResultsSerialized, } from '@jbrowse/core/pluggableElementTypes/renderers/FeatureRendererType';
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import FeatureRendererType from '@jbrowse/core/pluggableElementTypes/renderers/FeatureRendererType';
|
|
2
|
-
import {
|
|
3
|
-
import { getCol } from '../util';
|
|
2
|
+
import { renderToAbstractCanvas } from '@jbrowse/core/util';
|
|
4
3
|
export default class MultiVariantBaseRenderer extends FeatureRendererType {
|
|
5
4
|
constructor() {
|
|
6
5
|
super(...arguments);
|
|
@@ -11,13 +10,11 @@ export default class MultiVariantBaseRenderer extends FeatureRendererType {
|
|
|
11
10
|
const { height, regions, bpPerPx } = renderProps;
|
|
12
11
|
const region = regions[0];
|
|
13
12
|
const width = (region.end - region.start) / bpPerPx;
|
|
14
|
-
const
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
return undefined;
|
|
20
|
-
});
|
|
13
|
+
const { makeImageData } = await import('./makeImageData');
|
|
14
|
+
const rest = await renderToAbstractCanvas(width, height, renderProps, ctx => makeImageData(ctx, {
|
|
15
|
+
...renderProps,
|
|
16
|
+
features,
|
|
17
|
+
}));
|
|
21
18
|
const results = await super.render({
|
|
22
19
|
...renderProps,
|
|
23
20
|
...rest,
|
|
@@ -34,21 +31,4 @@ export default class MultiVariantBaseRenderer extends FeatureRendererType {
|
|
|
34
31
|
containsNoTransferables: true,
|
|
35
32
|
};
|
|
36
33
|
}
|
|
37
|
-
async draw(ctx, props) {
|
|
38
|
-
const { scrollTop, sources, rowHeight, features, regions, bpPerPx } = props;
|
|
39
|
-
const region = regions[0];
|
|
40
|
-
for (const feature of features.values()) {
|
|
41
|
-
if (feature.get('end') - feature.get('start') <= 10) {
|
|
42
|
-
const [leftPx, rightPx] = featureSpanPx(feature, region, bpPerPx);
|
|
43
|
-
const w = Math.max(Math.round(rightPx - leftPx), 2);
|
|
44
|
-
const genotypes = feature.get('genotypes');
|
|
45
|
-
let t = -scrollTop;
|
|
46
|
-
for (const { name } of sources) {
|
|
47
|
-
ctx.fillStyle = getCol(genotypes[name]);
|
|
48
|
-
ctx.fillRect(Math.floor(leftPx), t, w, Math.max(t + rowHeight, 1));
|
|
49
|
-
t += rowHeight;
|
|
50
|
-
}
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
34
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import
|
|
2
|
-
import type { Source } from '../
|
|
1
|
+
import RBush from 'rbush';
|
|
2
|
+
import type { Source } from '../types';
|
|
3
3
|
import type { Feature } from '@jbrowse/core/util';
|
|
4
4
|
import type { Region } from '@jbrowse/core/util/types';
|
|
5
5
|
declare const MultiVariantRendering: (props: {
|
|
@@ -11,8 +11,12 @@ declare const MultiVariantRendering: (props: {
|
|
|
11
11
|
sources: Source[];
|
|
12
12
|
scrollTop: number;
|
|
13
13
|
totalHeight: number;
|
|
14
|
+
rbush: RBush<{
|
|
15
|
+
genotype: string;
|
|
16
|
+
}>;
|
|
17
|
+
displayModel: any;
|
|
14
18
|
onMouseLeave?: (event: React.MouseEvent) => void;
|
|
15
19
|
onMouseMove?: (event: React.MouseEvent, arg?: Feature) => void;
|
|
16
20
|
onFeatureClick?: (event: React.MouseEvent, arg?: Feature) => void;
|
|
17
|
-
}) =>
|
|
21
|
+
}) => import("react/jsx-runtime").JSX.Element;
|
|
18
22
|
export default MultiVariantRendering;
|
|
@@ -1,18 +1,47 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { useMemo, useRef } from 'react';
|
|
2
3
|
import { PrerenderedCanvas } from '@jbrowse/core/ui';
|
|
3
4
|
import { observer } from 'mobx-react';
|
|
5
|
+
import RBush from 'rbush';
|
|
4
6
|
const MultiVariantRendering = observer(function (props) {
|
|
5
7
|
const { totalHeight, scrollTop } = props;
|
|
8
|
+
const { rbush, displayModel } = props;
|
|
6
9
|
const ref = useRef(null);
|
|
7
|
-
|
|
10
|
+
const rbush2 = useMemo(() => new RBush().fromJSON(rbush), [rbush]);
|
|
11
|
+
function getFeatureUnderMouse(eventClientX, eventClientY) {
|
|
12
|
+
var _a;
|
|
13
|
+
let offsetX = 0;
|
|
14
|
+
let offsetY = 0;
|
|
15
|
+
if (ref.current) {
|
|
16
|
+
const r = ref.current.getBoundingClientRect();
|
|
17
|
+
offsetX = eventClientX - r.left;
|
|
18
|
+
offsetY = eventClientY - r.top;
|
|
19
|
+
}
|
|
20
|
+
const ret = rbush2.search({
|
|
21
|
+
minX: offsetX,
|
|
22
|
+
maxX: offsetX + 3,
|
|
23
|
+
minY: offsetY,
|
|
24
|
+
maxY: offsetY + 3,
|
|
25
|
+
});
|
|
26
|
+
return (_a = ret[0]) === null || _a === void 0 ? void 0 : _a.genotype;
|
|
27
|
+
}
|
|
28
|
+
return (_jsx("div", { ref: ref, onMouseMove: e => {
|
|
29
|
+
var _a;
|
|
30
|
+
return (_a = displayModel.setHoveredGenotype) === null || _a === void 0 ? void 0 : _a.call(displayModel, getFeatureUnderMouse(e.clientX, e.clientY));
|
|
31
|
+
}, onMouseLeave: () => {
|
|
32
|
+
var _a;
|
|
33
|
+
(_a = displayModel.setHoveredGenotype) === null || _a === void 0 ? void 0 : _a.call(displayModel, undefined);
|
|
34
|
+
}, onMouseOut: () => {
|
|
35
|
+
var _a;
|
|
36
|
+
(_a = displayModel.setHoveredGenotype) === null || _a === void 0 ? void 0 : _a.call(displayModel, undefined);
|
|
37
|
+
}, style: {
|
|
8
38
|
overflow: 'visible',
|
|
9
39
|
position: 'relative',
|
|
10
40
|
height: totalHeight,
|
|
11
|
-
}
|
|
12
|
-
React.createElement(PrerenderedCanvas, { ...props, style: {
|
|
41
|
+
}, children: _jsx(PrerenderedCanvas, { ...props, style: {
|
|
13
42
|
position: 'absolute',
|
|
14
43
|
left: 0,
|
|
15
44
|
top: scrollTop,
|
|
16
|
-
} })));
|
|
45
|
+
} }) }));
|
|
17
46
|
});
|
|
18
47
|
export default MultiVariantRendering;
|
|
@@ -1,34 +1,2 @@
|
|
|
1
|
-
declare const configSchema: import("@jbrowse/core/configuration/configurationSchema").ConfigurationSchemaType<{}, import("@jbrowse/core/configuration/configurationSchema").ConfigurationSchemaOptions<
|
|
2
|
-
color: {
|
|
3
|
-
type: string;
|
|
4
|
-
description: string;
|
|
5
|
-
defaultValue: string;
|
|
6
|
-
};
|
|
7
|
-
posColor: {
|
|
8
|
-
type: string;
|
|
9
|
-
description: string;
|
|
10
|
-
defaultValue: string;
|
|
11
|
-
};
|
|
12
|
-
negColor: {
|
|
13
|
-
type: string;
|
|
14
|
-
description: string;
|
|
15
|
-
defaultValue: string;
|
|
16
|
-
};
|
|
17
|
-
clipColor: {
|
|
18
|
-
type: string;
|
|
19
|
-
description: string;
|
|
20
|
-
defaultValue: string;
|
|
21
|
-
};
|
|
22
|
-
bicolorPivot: {
|
|
23
|
-
type: string;
|
|
24
|
-
model: import("mobx-state-tree").ISimpleType<string>;
|
|
25
|
-
description: string;
|
|
26
|
-
defaultValue: string;
|
|
27
|
-
};
|
|
28
|
-
bicolorPivotValue: {
|
|
29
|
-
type: string;
|
|
30
|
-
defaultValue: number;
|
|
31
|
-
description: string;
|
|
32
|
-
};
|
|
33
|
-
}, import("@jbrowse/core/configuration/configurationSchema").ConfigurationSchemaOptions<undefined, undefined>>, undefined>>;
|
|
1
|
+
declare const configSchema: import("@jbrowse/core/configuration/configurationSchema").ConfigurationSchemaType<{}, import("@jbrowse/core/configuration/configurationSchema").ConfigurationSchemaOptions<undefined, undefined>>;
|
|
34
2
|
export default configSchema;
|
|
@@ -1,8 +1,6 @@
|
|
|
1
1
|
import { ConfigurationSchema } from '@jbrowse/core/configuration';
|
|
2
|
-
import baseWiggleRendererConfigSchema from '../configSchema';
|
|
3
2
|
function x() { }
|
|
4
3
|
const configSchema = ConfigurationSchema('MultiVariantRenderer', {}, {
|
|
5
|
-
baseConfiguration: baseWiggleRendererConfigSchema,
|
|
6
4
|
explicitlyTyped: true,
|
|
7
5
|
});
|
|
8
6
|
export default configSchema;
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import { featureSpanPx } from '@jbrowse/core/util';
|
|
2
|
+
import RBush from 'rbush';
|
|
3
|
+
import { getColorAlleleCount, getColorPhased, } from '../shared/multiVariantColor';
|
|
4
|
+
import { getFeaturesThatPassMinorAlleleFrequencyFilter } from '../util';
|
|
5
|
+
const fudgeFactor = 0.6;
|
|
6
|
+
const f2 = fudgeFactor / 2;
|
|
7
|
+
function drawColorAlleleCount(alleles, ctx, x, y, w, h) {
|
|
8
|
+
ctx.fillStyle = getColorAlleleCount(alleles);
|
|
9
|
+
ctx.fillRect(x - f2, y - f2, w + f2, h + f2);
|
|
10
|
+
}
|
|
11
|
+
function drawPhased(alleles, ctx, x, y, w, h, HP) {
|
|
12
|
+
ctx.fillStyle = getColorPhased(alleles, HP);
|
|
13
|
+
ctx.fillRect(x - f2, y - f2, w + f2, h + f2);
|
|
14
|
+
}
|
|
15
|
+
export async function makeImageData(ctx, props) {
|
|
16
|
+
const { scrollTop, minorAlleleFrequencyFilter, sources, rowHeight, features, regions, bpPerPx, renderingMode, } = props;
|
|
17
|
+
const region = regions[0];
|
|
18
|
+
const mafs = getFeaturesThatPassMinorAlleleFrequencyFilter(features.values(), minorAlleleFrequencyFilter);
|
|
19
|
+
const rbush = new RBush();
|
|
20
|
+
for (const feature of mafs) {
|
|
21
|
+
const [leftPx, rightPx] = featureSpanPx(feature, region, bpPerPx);
|
|
22
|
+
const w = Math.max(Math.round(rightPx - leftPx), 2);
|
|
23
|
+
const samp = feature.get('genotypes');
|
|
24
|
+
let y = -scrollTop;
|
|
25
|
+
const s = sources.length;
|
|
26
|
+
for (let j = 0; j < s; j++) {
|
|
27
|
+
const { name, HP } = sources[j];
|
|
28
|
+
const genotype = samp[name];
|
|
29
|
+
const x = Math.floor(leftPx);
|
|
30
|
+
const h = Math.max(rowHeight, 1);
|
|
31
|
+
if (genotype) {
|
|
32
|
+
rbush.insert({
|
|
33
|
+
minX: x - f2,
|
|
34
|
+
maxX: x + w + f2,
|
|
35
|
+
minY: y - f2,
|
|
36
|
+
maxY: y + h + f2,
|
|
37
|
+
genotype,
|
|
38
|
+
});
|
|
39
|
+
const isPhased = genotype.includes('|');
|
|
40
|
+
if (renderingMode === 'phased') {
|
|
41
|
+
if (isPhased) {
|
|
42
|
+
const alleles = genotype.split('|');
|
|
43
|
+
drawPhased(alleles, ctx, x, y, w, h, HP);
|
|
44
|
+
}
|
|
45
|
+
else {
|
|
46
|
+
ctx.fillStyle = 'black';
|
|
47
|
+
ctx.fillRect(x - f2, y - f2, w + f2, h + f2);
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
else {
|
|
51
|
+
const alleles = genotype.split(/[/|]/);
|
|
52
|
+
drawColorAlleleCount(alleles, ctx, x, y, w, h);
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
y += rowHeight;
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
return {
|
|
59
|
+
rbush: rbush.toJSON(),
|
|
60
|
+
};
|
|
61
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { Source } from '../types';
|
|
2
|
+
import type { RenderArgsDeserialized as FeatureRenderArgsDeserialized } from '@jbrowse/core/pluggableElementTypes/renderers/FeatureRendererType';
|
|
3
|
+
import type { Feature } from '@jbrowse/core/util';
|
|
4
|
+
import type { ThemeOptions } from '@mui/material';
|
|
5
|
+
export interface RenderArgsDeserialized extends FeatureRenderArgsDeserialized {
|
|
6
|
+
bpPerPx: number;
|
|
7
|
+
height: number;
|
|
8
|
+
highResolutionScaling: number;
|
|
9
|
+
themeOptions: ThemeOptions;
|
|
10
|
+
}
|
|
11
|
+
export interface RenderArgsDeserializedWithFeatures extends RenderArgsDeserialized {
|
|
12
|
+
features: Map<string, Feature>;
|
|
13
|
+
}
|
|
14
|
+
export interface MultiRenderArgsDeserialized extends RenderArgsDeserializedWithFeatures {
|
|
15
|
+
sources: Source[];
|
|
16
|
+
rowHeight: number;
|
|
17
|
+
scrollTop: number;
|
|
18
|
+
minorAlleleFrequencyFilter: number;
|
|
19
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import FeatureRendererType from '@jbrowse/core/pluggableElementTypes/renderers/FeatureRendererType';
|
|
2
|
-
import type { Source } from './
|
|
2
|
+
import type { Source } from './types';
|
|
3
3
|
import type { RenderArgsDeserialized as FeatureRenderArgsDeserialized } from '@jbrowse/core/pluggableElementTypes/renderers/FeatureRendererType';
|
|
4
4
|
import type { Feature } from '@jbrowse/core/util';
|
|
5
5
|
import type { ThemeOptions } from '@mui/material';
|
|
@@ -23,14 +23,14 @@ export default abstract class MultiVariantBaseRenderer extends FeatureRendererTy
|
|
|
23
23
|
width: number;
|
|
24
24
|
containsNoTransferables: boolean;
|
|
25
25
|
canvasRecordedData: any;
|
|
26
|
-
reactElement?:
|
|
26
|
+
reactElement?: React.ReactElement;
|
|
27
27
|
html?: string;
|
|
28
28
|
} | {
|
|
29
29
|
features: Map<string, Feature>;
|
|
30
30
|
height: number;
|
|
31
31
|
width: number;
|
|
32
32
|
containsNoTransferables: boolean;
|
|
33
|
-
reactElement:
|
|
33
|
+
reactElement: import("react/jsx-runtime").JSX.Element;
|
|
34
34
|
html?: string;
|
|
35
35
|
} | {
|
|
36
36
|
features: Map<string, Feature>;
|
|
@@ -38,7 +38,7 @@ export default abstract class MultiVariantBaseRenderer extends FeatureRendererTy
|
|
|
38
38
|
width: number;
|
|
39
39
|
containsNoTransferables: boolean;
|
|
40
40
|
imageData: any;
|
|
41
|
-
reactElement?:
|
|
41
|
+
reactElement?: React.ReactElement;
|
|
42
42
|
html?: string;
|
|
43
43
|
}>;
|
|
44
44
|
abstract draw<T extends RenderArgsDeserializedWithFeatures>(ctx: CanvasRenderingContext2D, props: T): Promise<Record<string, unknown> | undefined>;
|
|
@@ -1,23 +1,6 @@
|
|
|
1
|
-
import
|
|
1
|
+
import type { AnyRegion, Block } from './types';
|
|
2
2
|
import type { AnyConfigurationModel } from '@jbrowse/core/configuration';
|
|
3
3
|
import type { Feature } from '@jbrowse/core/util';
|
|
4
|
-
export interface Region {
|
|
5
|
-
end: number;
|
|
6
|
-
start: number;
|
|
7
|
-
refName: string;
|
|
8
|
-
elided?: false;
|
|
9
|
-
}
|
|
10
|
-
export interface ElidedRegion {
|
|
11
|
-
elided: true;
|
|
12
|
-
regions: Region[];
|
|
13
|
-
}
|
|
14
|
-
export type AnyRegion = Region | ElidedRegion;
|
|
15
|
-
export interface Block {
|
|
16
|
-
flipped: boolean;
|
|
17
|
-
bpPerRadian: number;
|
|
18
|
-
startRadians: number;
|
|
19
|
-
region: AnyRegion;
|
|
20
|
-
}
|
|
21
4
|
declare const Chord: ({ feature, blocksForRefs, radius, config, bezierRadius, selected, onClick, }: {
|
|
22
5
|
feature: Feature;
|
|
23
6
|
blocksForRefs: Record<string, Block>;
|
|
@@ -26,5 +9,5 @@ declare const Chord: ({ feature, blocksForRefs, radius, config, bezierRadius, se
|
|
|
26
9
|
bezierRadius: number;
|
|
27
10
|
selected: boolean;
|
|
28
11
|
onClick: (feat: Feature, reg: AnyRegion, end: AnyRegion, evt: unknown) => void;
|
|
29
|
-
}) =>
|
|
12
|
+
}) => import("react/jsx-runtime").JSX.Element | null;
|
|
30
13
|
export default Chord;
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { useState } from 'react';
|
|
2
3
|
import { parseBreakend } from '@gmod/vcf';
|
|
3
4
|
import { readConfObject } from '@jbrowse/core/configuration';
|
|
4
5
|
import { getStrokeProps, polarToCartesian } from '@jbrowse/core/util';
|
|
@@ -62,7 +63,7 @@ const Chord = observer(function Chord({ feature, blocksForRefs, radius, config,
|
|
|
62
63
|
const hoverStrokeColor = readConfObject(config, 'strokeColorHover', {
|
|
63
64
|
feature,
|
|
64
65
|
});
|
|
65
|
-
return (
|
|
66
|
+
return (_jsx("path", { "data-testid": `chord-${feature.id()}`, cursor: "crosshair", fill: "none", d: ['M', ...startXY, 'Q', ...controlXY, ...endXY].join(' '), ...getStrokeProps(hovered ? hoverStrokeColor : strokeColor), strokeWidth: hovered ? 3 : 1, onClick: evt => {
|
|
66
67
|
onClick(feature, startBlock.region, endBlock.region, evt);
|
|
67
68
|
}, onMouseOver: () => {
|
|
68
69
|
if (!selected) {
|
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
import
|
|
2
|
-
import type { AnyRegion, Block } from './Chord';
|
|
1
|
+
import type { AnyRegion, Block } from './types';
|
|
3
2
|
import type { AnyConfigurationModel } from '@jbrowse/core/configuration';
|
|
4
3
|
import type { Feature } from '@jbrowse/core/util';
|
|
5
4
|
declare const StructuralVariantChordsReactComponent: ({ features, config, blockDefinitions, radius, bezierRadius, displayModel, onChordClick, }: {
|
|
@@ -13,5 +12,5 @@ declare const StructuralVariantChordsReactComponent: ({ features, config, blockD
|
|
|
13
12
|
blockDefinitions: Block[];
|
|
14
13
|
bezierRadius: number;
|
|
15
14
|
onChordClick: (feature: Feature, reg: AnyRegion, endBlock: AnyRegion, evt: unknown) => void;
|
|
16
|
-
}) =>
|
|
15
|
+
}) => import("react/jsx-runtime").JSX.Element;
|
|
17
16
|
export default StructuralVariantChordsReactComponent;
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { useMemo } from 'react';
|
|
2
3
|
import { observer } from 'mobx-react';
|
|
3
4
|
import Chord from './Chord';
|
|
4
5
|
const StructuralVariantChordsReactComponent = observer(function ({ features, config, blockDefinitions, radius, bezierRadius, displayModel, onChordClick, }) {
|
|
@@ -15,10 +16,10 @@ const StructuralVariantChordsReactComponent = observer(function ({ features, con
|
|
|
15
16
|
}
|
|
16
17
|
return blocksForRefs;
|
|
17
18
|
}, [blockDefinitions]);
|
|
18
|
-
return (
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
19
|
+
return (_jsx("g", { "data-testid": "structuralVariantChordRenderer", children: [...features.values()].map(feature => {
|
|
20
|
+
const id = feature.id();
|
|
21
|
+
const selected = String(selectedFeatureId) === String(id);
|
|
22
|
+
return (_jsx(Chord, { feature: feature, config: config, radius: radius, bezierRadius: bezierRadius, blocksForRefs: blocksForRefsMemo, selected: selected, onClick: onChordClick }, id));
|
|
23
|
+
}) }));
|
|
23
24
|
});
|
|
24
25
|
export default StructuralVariantChordsReactComponent;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
export interface Region {
|
|
2
|
+
end: number;
|
|
3
|
+
start: number;
|
|
4
|
+
refName: string;
|
|
5
|
+
elided?: false;
|
|
6
|
+
}
|
|
7
|
+
export interface ElidedRegion {
|
|
8
|
+
elided: true;
|
|
9
|
+
regions: Region[];
|
|
10
|
+
}
|
|
11
|
+
export type AnyRegion = Region | ElidedRegion;
|
|
12
|
+
export interface Block {
|
|
13
|
+
flipped: boolean;
|
|
14
|
+
bpPerRadian: number;
|
|
15
|
+
startRadians: number;
|
|
16
|
+
region: AnyRegion;
|
|
17
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
package/esm/Tooltip.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import React from 'react';
|
|
1
|
+
import type React from 'react';
|
|
2
2
|
import type { Feature } from '@jbrowse/core/util';
|
|
3
3
|
type Coord = [number, number];
|
|
4
4
|
export type TooltipContentsComponent = React.ForwardRefExoticComponent<{
|
|
@@ -15,5 +15,5 @@ declare const Tooltip: ({ model, height, clientMouseCoord, offsetMouseCoord, cli
|
|
|
15
15
|
offsetMouseCoord: Coord;
|
|
16
16
|
clientRect?: DOMRect;
|
|
17
17
|
TooltipContents: TooltipContentsComponent;
|
|
18
|
-
}) =>
|
|
18
|
+
}) => import("react/jsx-runtime").JSX.Element | null;
|
|
19
19
|
export default Tooltip;
|
package/esm/Tooltip.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { Suspense } from 'react';
|
|
2
3
|
import BaseTooltip from '@jbrowse/core/ui/BaseTooltip';
|
|
3
4
|
import { observer } from 'mobx-react';
|
|
4
5
|
import { makeStyles } from 'tss-react/mui';
|
|
@@ -18,13 +19,9 @@ const Tooltip = observer(function Tooltip({ model, height, clientMouseCoord, off
|
|
|
18
19
|
const { classes } = useStyles();
|
|
19
20
|
const x = clientMouseCoord[0] + 5;
|
|
20
21
|
const y = useClientY ? clientMouseCoord[1] : (clientRect === null || clientRect === void 0 ? void 0 : clientRect.top) || 0;
|
|
21
|
-
return featureUnderMouse ? (
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
React.createElement("div", { className: classes.hoverVertical, style: {
|
|
26
|
-
left: offsetMouseCoord[0],
|
|
27
|
-
height: height,
|
|
28
|
-
} }))) : null;
|
|
22
|
+
return featureUnderMouse ? (_jsxs(_Fragment, { children: [_jsx(Suspense, { fallback: null, children: _jsx(BaseTooltip, { clientPoint: { x, y }, children: _jsx(TooltipContents, { model: model, feature: featureUnderMouse }) }) }), _jsx("div", { className: classes.hoverVertical, style: {
|
|
23
|
+
left: offsetMouseCoord[0],
|
|
24
|
+
height: height,
|
|
25
|
+
} })] })) : null;
|
|
29
26
|
});
|
|
30
27
|
export default Tooltip;
|
|
@@ -1,7 +1,6 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
1
|
export default function Checkbox2({ checked, disabled, label, onChange, }: {
|
|
3
2
|
checked: boolean;
|
|
4
3
|
disabled?: boolean;
|
|
5
4
|
label: string;
|
|
6
5
|
onChange: (event: React.ChangeEvent<HTMLInputElement>) => void;
|
|
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 { Checkbox, FormControlLabel } from '@mui/material';
|
|
3
3
|
import { makeStyles } from 'tss-react/mui';
|
|
4
4
|
const useStyles = makeStyles()({
|
|
@@ -8,5 +8,5 @@ const useStyles = makeStyles()({
|
|
|
8
8
|
});
|
|
9
9
|
export default function Checkbox2({ checked, disabled, label, onChange, }) {
|
|
10
10
|
const { classes } = useStyles();
|
|
11
|
-
return (
|
|
11
|
+
return (_jsx(FormControlLabel, { disabled: disabled, className: classes.block, control: _jsx(Checkbox, { checked: checked, onChange: onChange }), label: label }));
|
|
12
12
|
}
|
|
@@ -1,8 +1,7 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
1
|
import type { VariantFeatureWidgetModel } from './stateModelFactory';
|
|
3
2
|
import type { SimpleFeatureSerialized } from '@jbrowse/core/util';
|
|
4
|
-
export default function
|
|
3
|
+
export default function LaunchBreakendPanel(props: {
|
|
5
4
|
locStrings: string[];
|
|
6
5
|
model: VariantFeatureWidgetModel;
|
|
7
6
|
feature: SimpleFeatureSerialized;
|
|
8
|
-
}):
|
|
7
|
+
}): import("react/jsx-runtime").JSX.Element;
|