@jbrowse/plugin-variants 2.4.2 → 2.6.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/ChordVariantDisplay/models/configSchema.d.ts +13 -1
- package/dist/ChordVariantDisplay/models/stateModelFactory.d.ts +20 -4
- package/dist/LinearVariantDisplay/configSchema.d.ts +25 -1
- package/dist/LinearVariantDisplay/model.d.ts +75 -43
- package/dist/StructuralVariantChordRenderer/Chord.d.ts +2 -2
- package/dist/StructuralVariantChordRenderer/ReactComponent.d.ts +2 -2
- package/dist/StructuralVariantChordRenderer/configSchema.d.ts +29 -1
- package/dist/VariantFeatureWidget/AnnotGrid.d.ts +5 -4
- package/dist/VariantFeatureWidget/AnnotGrid.js +34 -14
- package/dist/VariantFeatureWidget/AnnotGrid.js.map +1 -1
- package/dist/VariantFeatureWidget/BreakendOptionDialog.d.ts +3 -4
- package/dist/VariantFeatureWidget/BreakendOptionDialog.js +4 -5
- package/dist/VariantFeatureWidget/BreakendOptionDialog.js.map +1 -1
- package/dist/VariantFeatureWidget/BreakendPanel.d.ts +2 -2
- package/dist/VariantFeatureWidget/VariantAnnotationTable.d.ts +6 -0
- package/dist/VariantFeatureWidget/VariantAnnotationTable.js +17 -0
- package/dist/VariantFeatureWidget/VariantAnnotationTable.js.map +1 -0
- package/dist/VariantFeatureWidget/VariantFeatureWidget.d.ts +8 -2
- package/dist/VariantFeatureWidget/VariantFeatureWidget.js +26 -14
- package/dist/VariantFeatureWidget/VariantFeatureWidget.js.map +1 -1
- package/dist/VariantFeatureWidget/VariantSampleGrid.d.ts +9 -3
- package/dist/VariantFeatureWidget/VariantSampleGrid.js +12 -11
- package/dist/VariantFeatureWidget/VariantSampleGrid.js.map +1 -1
- package/dist/VariantFeatureWidget/index.d.ts +4 -1
- package/dist/VariantTrack/configSchema.d.ts +73 -1
- package/dist/VcfAdapter/VcfAdapter.js +1 -1
- package/dist/VcfAdapter/VcfAdapter.js.map +1 -1
- package/dist/VcfAdapter/configSchema.d.ts +12 -1
- package/dist/VcfTabixAdapter/configSchema.d.ts +32 -1
- package/esm/ChordVariantDisplay/models/configSchema.d.ts +13 -1
- package/esm/ChordVariantDisplay/models/stateModelFactory.d.ts +20 -4
- package/esm/LinearVariantDisplay/configSchema.d.ts +25 -1
- package/esm/LinearVariantDisplay/model.d.ts +75 -43
- package/esm/StructuralVariantChordRenderer/Chord.d.ts +2 -2
- package/esm/StructuralVariantChordRenderer/ReactComponent.d.ts +2 -2
- package/esm/StructuralVariantChordRenderer/configSchema.d.ts +29 -1
- package/esm/VariantFeatureWidget/AnnotGrid.d.ts +5 -4
- package/esm/VariantFeatureWidget/AnnotGrid.js +13 -13
- package/esm/VariantFeatureWidget/AnnotGrid.js.map +1 -1
- package/esm/VariantFeatureWidget/BreakendOptionDialog.d.ts +3 -4
- package/esm/VariantFeatureWidget/BreakendOptionDialog.js +4 -5
- package/esm/VariantFeatureWidget/BreakendOptionDialog.js.map +1 -1
- package/esm/VariantFeatureWidget/BreakendPanel.d.ts +2 -2
- package/esm/VariantFeatureWidget/VariantAnnotationTable.d.ts +6 -0
- package/esm/VariantFeatureWidget/VariantAnnotationTable.js +11 -0
- package/esm/VariantFeatureWidget/VariantAnnotationTable.js.map +1 -0
- package/esm/VariantFeatureWidget/VariantFeatureWidget.d.ts +8 -2
- package/esm/VariantFeatureWidget/VariantFeatureWidget.js +26 -14
- package/esm/VariantFeatureWidget/VariantFeatureWidget.js.map +1 -1
- package/esm/VariantFeatureWidget/VariantSampleGrid.d.ts +9 -3
- package/esm/VariantFeatureWidget/VariantSampleGrid.js +13 -12
- package/esm/VariantFeatureWidget/VariantSampleGrid.js.map +1 -1
- package/esm/VariantFeatureWidget/index.d.ts +4 -1
- package/esm/VariantTrack/configSchema.d.ts +73 -1
- package/esm/VcfAdapter/VcfAdapter.js +2 -1
- package/esm/VcfAdapter/VcfAdapter.js.map +1 -1
- package/esm/VcfAdapter/configSchema.d.ts +12 -1
- package/esm/VcfTabixAdapter/configSchema.d.ts +32 -1
- package/package.json +3 -3
- package/src/VariantFeatureWidget/AnnotGrid.tsx +41 -18
- package/src/VariantFeatureWidget/BreakendOptionDialog.tsx +4 -5
- package/src/VariantFeatureWidget/VariantAnnotationTable.tsx +27 -0
- package/src/VariantFeatureWidget/VariantFeatureWidget.tsx +61 -16
- package/src/VariantFeatureWidget/VariantSampleGrid.tsx +52 -48
- package/src/VariantFeatureWidget/__snapshots__/VariantFeatureWidget.test.tsx.snap +1 -2
- package/dist/VariantFeatureWidget/VariantAnnPanel.d.ts +0 -5
- package/dist/VariantFeatureWidget/VariantAnnPanel.js +0 -25
- package/dist/VariantFeatureWidget/VariantAnnPanel.js.map +0 -1
- package/dist/VariantFeatureWidget/VariantCsqPanel.d.ts +0 -5
- package/dist/VariantFeatureWidget/VariantCsqPanel.js +0 -25
- package/dist/VariantFeatureWidget/VariantCsqPanel.js.map +0 -1
- package/esm/VariantFeatureWidget/VariantAnnPanel.d.ts +0 -5
- package/esm/VariantFeatureWidget/VariantAnnPanel.js +0 -19
- package/esm/VariantFeatureWidget/VariantAnnPanel.js.map +0 -1
- package/esm/VariantFeatureWidget/VariantCsqPanel.d.ts +0 -5
- package/esm/VariantFeatureWidget/VariantCsqPanel.js +0 -19
- package/esm/VariantFeatureWidget/VariantCsqPanel.js.map +0 -1
- package/src/VariantFeatureWidget/VariantAnnPanel.tsx +0 -31
- package/src/VariantFeatureWidget/VariantCsqPanel.tsx +0 -31
|
@@ -13,6 +13,13 @@ export default function stateModelFactory(configSchema: AnyConfigurationSchemaTy
|
|
|
13
13
|
rpcDriverName: import("mobx-state-tree").IMaybe<import("mobx-state-tree").ISimpleType<string>>;
|
|
14
14
|
} & {
|
|
15
15
|
heightPreConfig: import("mobx-state-tree").IMaybe<import("mobx-state-tree").ISimpleType<number>>;
|
|
16
|
+
} & {
|
|
17
|
+
/**
|
|
18
|
+
* #property
|
|
19
|
+
*/
|
|
20
|
+
userBpPerPxLimit: import("mobx-state-tree").IMaybe<import("mobx-state-tree").ISimpleType<number>>;
|
|
21
|
+
userByteSizeLimit: import("mobx-state-tree").IMaybe<import("mobx-state-tree").ISimpleType<number>>;
|
|
22
|
+
} & {
|
|
16
23
|
blockState: import("mobx-state-tree").IMapType<import("mobx-state-tree").IModelType<{
|
|
17
24
|
key: import("mobx-state-tree").ISimpleType<string>;
|
|
18
25
|
region: import("mobx-state-tree").IModelType<{
|
|
@@ -59,17 +66,36 @@ export default function stateModelFactory(configSchema: AnyConfigurationSchemaTy
|
|
|
59
66
|
reload(): void;
|
|
60
67
|
beforeDestroy(): void;
|
|
61
68
|
}, import("mobx-state-tree")._NotCustomized, import("mobx-state-tree")._NotCustomized>>;
|
|
62
|
-
|
|
63
|
-
|
|
69
|
+
configuration: import("@jbrowse/core/configuration/configurationSchema").ConfigurationSchemaType<{
|
|
70
|
+
maxFeatureScreenDensity: {
|
|
71
|
+
type: string;
|
|
72
|
+
description: string;
|
|
73
|
+
defaultValue: number;
|
|
74
|
+
};
|
|
75
|
+
fetchSizeLimit: {
|
|
76
|
+
type: string;
|
|
77
|
+
defaultValue: number;
|
|
78
|
+
description: string;
|
|
79
|
+
};
|
|
80
|
+
height: {
|
|
81
|
+
type: string;
|
|
82
|
+
defaultValue: number;
|
|
83
|
+
description: string;
|
|
84
|
+
};
|
|
85
|
+
mouseover: {
|
|
86
|
+
type: string;
|
|
87
|
+
description: string;
|
|
88
|
+
defaultValue: string;
|
|
89
|
+
contextVariable: string[];
|
|
90
|
+
};
|
|
91
|
+
}, import("@jbrowse/core/configuration/configurationSchema").ConfigurationSchemaOptions<undefined, "displayId">>;
|
|
64
92
|
} & {
|
|
65
93
|
type: import("mobx-state-tree").ISimpleType<"LinearBasicDisplay">;
|
|
66
94
|
trackShowLabels: import("mobx-state-tree").IMaybe<import("mobx-state-tree").ISimpleType<boolean>>;
|
|
67
|
-
trackShowDescriptions: import("mobx-state-tree").IMaybe<import("mobx-state-tree").ISimpleType<boolean>>;
|
|
68
|
-
* #action
|
|
69
|
-
*/
|
|
95
|
+
trackShowDescriptions: import("mobx-state-tree").IMaybe<import("mobx-state-tree").ISimpleType<boolean>>;
|
|
70
96
|
trackDisplayMode: import("mobx-state-tree").IMaybe<import("mobx-state-tree").ISimpleType<string>>;
|
|
71
97
|
trackMaxHeight: import("mobx-state-tree").IMaybe<import("mobx-state-tree").ISimpleType<number>>;
|
|
72
|
-
configuration:
|
|
98
|
+
configuration: AnyConfigurationSchemaType;
|
|
73
99
|
} & {
|
|
74
100
|
/**
|
|
75
101
|
* #property
|
|
@@ -78,10 +104,11 @@ export default function stateModelFactory(configSchema: AnyConfigurationSchemaTy
|
|
|
78
104
|
/**
|
|
79
105
|
* #property
|
|
80
106
|
*/
|
|
81
|
-
configuration:
|
|
107
|
+
configuration: AnyConfigurationSchemaType;
|
|
82
108
|
}, {
|
|
83
109
|
rendererTypeName: string;
|
|
84
110
|
error: unknown;
|
|
111
|
+
message: string | undefined;
|
|
85
112
|
} & {
|
|
86
113
|
readonly RenderingComponent: import("react").FC<{
|
|
87
114
|
model: {
|
|
@@ -91,6 +118,7 @@ export default function stateModelFactory(configSchema: AnyConfigurationSchemaTy
|
|
|
91
118
|
} & import("mobx-state-tree/dist/internal").NonEmptyObject & {
|
|
92
119
|
rendererTypeName: string;
|
|
93
120
|
error: unknown;
|
|
121
|
+
message: string | undefined;
|
|
94
122
|
} & import("mobx-state-tree").IStateTreeNode<import("mobx-state-tree").IModelType<{
|
|
95
123
|
id: import("mobx-state-tree").IOptionalIType<import("mobx-state-tree").ISimpleType<string>, [undefined]>;
|
|
96
124
|
type: import("mobx-state-tree").ISimpleType<string>;
|
|
@@ -98,6 +126,7 @@ export default function stateModelFactory(configSchema: AnyConfigurationSchemaTy
|
|
|
98
126
|
}, {
|
|
99
127
|
rendererTypeName: string;
|
|
100
128
|
error: unknown;
|
|
129
|
+
message: string | undefined;
|
|
101
130
|
}, import("mobx-state-tree")._NotCustomized, import("mobx-state-tree")._NotCustomized>>;
|
|
102
131
|
onHorizontalScroll?: Function | undefined;
|
|
103
132
|
blockState?: Record<string, any> | undefined;
|
|
@@ -110,6 +139,7 @@ export default function stateModelFactory(configSchema: AnyConfigurationSchemaTy
|
|
|
110
139
|
} & import("mobx-state-tree/dist/internal").NonEmptyObject & {
|
|
111
140
|
rendererTypeName: string;
|
|
112
141
|
error: unknown;
|
|
142
|
+
message: string | undefined;
|
|
113
143
|
} & import("mobx-state-tree").IStateTreeNode<import("mobx-state-tree").IModelType<{
|
|
114
144
|
id: import("mobx-state-tree").IOptionalIType<import("mobx-state-tree").ISimpleType<string>, [undefined]>;
|
|
115
145
|
type: import("mobx-state-tree").ISimpleType<string>;
|
|
@@ -117,6 +147,7 @@ export default function stateModelFactory(configSchema: AnyConfigurationSchemaTy
|
|
|
117
147
|
}, {
|
|
118
148
|
rendererTypeName: string;
|
|
119
149
|
error: unknown;
|
|
150
|
+
message: string | undefined;
|
|
120
151
|
}, import("mobx-state-tree")._NotCustomized, import("mobx-state-tree")._NotCustomized>>;
|
|
121
152
|
}> | null;
|
|
122
153
|
readonly adapterConfig: any;
|
|
@@ -126,21 +157,49 @@ export default function stateModelFactory(configSchema: AnyConfigurationSchemaTy
|
|
|
126
157
|
readonly DisplayMessageComponent: import("react").FC<any> | undefined;
|
|
127
158
|
trackMenuItems(): import("@jbrowse/core/ui").MenuItem[];
|
|
128
159
|
readonly viewMenuActions: import("@jbrowse/core/ui").MenuItem[];
|
|
129
|
-
regionCannotBeRendered():
|
|
160
|
+
regionCannotBeRendered(): null;
|
|
130
161
|
} & {
|
|
162
|
+
setMessage(arg?: string | undefined): void;
|
|
131
163
|
setError(error?: unknown): void;
|
|
132
164
|
setRpcDriverName(rpcDriverName: string): void;
|
|
133
165
|
reload(): void;
|
|
134
166
|
} & {
|
|
135
|
-
currBpPerPx: number;
|
|
136
167
|
scrollTop: number;
|
|
137
|
-
|
|
168
|
+
} & {
|
|
169
|
+
readonly height: number;
|
|
170
|
+
} & {
|
|
171
|
+
setScrollTop(scrollTop: number): void;
|
|
172
|
+
setHeight(displayHeight: number): number;
|
|
173
|
+
resizeHeight(distance: number): number;
|
|
174
|
+
} & {
|
|
175
|
+
featureDensityStatsP: Promise<import("@jbrowse/core/data_adapters/BaseAdapter").FeatureDensityStats> | undefined;
|
|
176
|
+
featureDensityStats: import("@jbrowse/core/data_adapters/BaseAdapter").FeatureDensityStats | undefined;
|
|
177
|
+
currStatsBpPerPx: number;
|
|
178
|
+
} & {
|
|
179
|
+
readonly currentBytesRequested: number;
|
|
180
|
+
readonly currentFeatureScreenDensity: number;
|
|
181
|
+
readonly maxFeatureScreenDensity: any;
|
|
182
|
+
readonly featureDensityStatsReady: boolean;
|
|
183
|
+
readonly maxAllowableBytes: number;
|
|
184
|
+
} & {
|
|
185
|
+
afterAttach(): void;
|
|
186
|
+
} & {
|
|
187
|
+
setCurrStatsBpPerPx(n: number): void;
|
|
188
|
+
setFeatureDensityStatsLimit(stats?: import("@jbrowse/core/data_adapters/BaseAdapter").FeatureDensityStats | undefined): void;
|
|
189
|
+
getFeatureDensityStats(): Promise<import("@jbrowse/core/data_adapters/BaseAdapter").FeatureDensityStats>;
|
|
190
|
+
setFeatureDensityStatsP(arg: any): void;
|
|
191
|
+
setFeatureDensityStats(featureDensityStats?: import("@jbrowse/core/data_adapters/BaseAdapter").FeatureDensityStats | undefined): void;
|
|
192
|
+
clearFeatureDensityStats(): void;
|
|
193
|
+
} & {
|
|
194
|
+
readonly regionTooLarge: boolean;
|
|
195
|
+
readonly regionTooLargeReason: string;
|
|
196
|
+
} & {
|
|
197
|
+
regionCannotBeRenderedText(_region: import("@jbrowse/core/util").Region): "" | "Force load to see features";
|
|
198
|
+
regionCannotBeRendered(_region: import("@jbrowse/core/util").Region): import("react").JSX.Element | null;
|
|
199
|
+
} & {
|
|
138
200
|
featureIdUnderMouse: string | undefined;
|
|
139
201
|
contextMenuFeature: Feature | undefined;
|
|
140
|
-
estimatedRegionsStatsP: Promise<import("@jbrowse/core/data_adapters/BaseAdapter").Stats> | undefined;
|
|
141
|
-
estimatedRegionsStats: import("@jbrowse/core/data_adapters/BaseAdapter").Stats | undefined;
|
|
142
202
|
} & {
|
|
143
|
-
readonly height: number;
|
|
144
203
|
readonly blockType: "dynamicBlocks" | "staticBlocks";
|
|
145
204
|
readonly blockDefinitions: import("@jbrowse/core/util/blockTypes").BlockSet;
|
|
146
205
|
} & {
|
|
@@ -154,49 +213,22 @@ export default function stateModelFactory(configSchema: AnyConfigurationSchemaTy
|
|
|
154
213
|
getFeatureOverlapping(blockKey: string, x: number, y: number): string | undefined;
|
|
155
214
|
getFeatureByID(blockKey: string, id: string): [number, number, number, number] | undefined;
|
|
156
215
|
searchFeatureByID(id: string): [number, number, number, number] | undefined;
|
|
157
|
-
readonly currentBytesRequested: number;
|
|
158
|
-
readonly currentFeatureScreenDensity: number;
|
|
159
|
-
readonly maxFeatureScreenDensity: any;
|
|
160
|
-
readonly estimatedStatsReady: boolean;
|
|
161
|
-
readonly maxAllowableBytes: number;
|
|
162
216
|
} & {
|
|
163
|
-
setMessage(message: string): void;
|
|
164
|
-
} & {
|
|
165
|
-
afterAttach(): void;
|
|
166
|
-
estimateRegionsStats(): Promise<import("@jbrowse/core/data_adapters/BaseAdapter").Stats>;
|
|
167
|
-
setRegionsStatsP(arg: any): void;
|
|
168
|
-
setRegionsStats(estimatedRegionsStats?: import("@jbrowse/core/data_adapters/BaseAdapter").Stats | undefined): void;
|
|
169
|
-
clearRegionsStats(): void;
|
|
170
|
-
setHeight(displayHeight: number): number;
|
|
171
|
-
resizeHeight(distance: number): number;
|
|
172
|
-
setScrollTop(scrollTop: number): void;
|
|
173
|
-
updateStatsLimit(stats?: import("@jbrowse/core/data_adapters/BaseAdapter").Stats | undefined): void;
|
|
174
217
|
addBlock(key: string, block: import("@jbrowse/core/util/blockTypes").BaseBlock): void;
|
|
175
|
-
setCurrBpPerPx(n: number): void;
|
|
176
218
|
deleteBlock(key: string): void;
|
|
177
219
|
selectFeature(feature: Feature): void;
|
|
178
220
|
clearFeatureSelection(): void;
|
|
179
|
-
setFeatureIdUnderMouse(feature
|
|
180
|
-
reload(): void;
|
|
221
|
+
setFeatureIdUnderMouse(feature?: string | undefined): void;
|
|
181
222
|
setContextMenuFeature(feature?: Feature | undefined): void;
|
|
182
|
-
} & {
|
|
183
|
-
readonly regionTooLarge: boolean;
|
|
184
|
-
readonly regionTooLargeReason: string;
|
|
185
223
|
} & {
|
|
186
224
|
reload(): Promise<void>;
|
|
187
225
|
} & {
|
|
188
|
-
afterAttach(): void;
|
|
189
|
-
} & {
|
|
190
|
-
regionCannotBeRenderedText(_region: import("@jbrowse/core/util").Region): "" | "Force load to see features";
|
|
191
|
-
regionCannotBeRendered(_region: import("@jbrowse/core/util").Region): JSX.Element | null;
|
|
192
226
|
trackMenuItems(): import("@jbrowse/core/ui").MenuItem[];
|
|
193
227
|
contextMenuItems(): import("@jbrowse/core/ui").MenuItem[];
|
|
194
228
|
renderProps(): any;
|
|
195
229
|
} & {
|
|
196
|
-
renderSvg(opts: import("@jbrowse/plugin-linear-genome-view
|
|
197
|
-
|
|
198
|
-
theme: import("@mui/material").ThemeOptions;
|
|
199
|
-
}): Promise<JSX.Element>;
|
|
230
|
+
renderSvg(opts: import("@jbrowse/plugin-linear-genome-view").ExportSvgDisplayOptions): Promise<import("react").JSX.Element>;
|
|
231
|
+
afterAttach(): void;
|
|
200
232
|
} & {
|
|
201
233
|
readonly rendererTypeName: any;
|
|
202
234
|
readonly showLabels: any;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
|
|
1
|
+
import React from 'react';
|
|
2
2
|
import { Feature } from '@jbrowse/core/util';
|
|
3
3
|
import { AnyConfigurationModel } from '@jbrowse/core/configuration';
|
|
4
4
|
export interface Region {
|
|
@@ -28,5 +28,5 @@ declare const Chord: ({ feature, blocksForRefs, radius, config, bezierRadius, se
|
|
|
28
28
|
bezierRadius: number;
|
|
29
29
|
selected: boolean;
|
|
30
30
|
onClick: (feature: Feature, reg: AnyRegion, endBlock: AnyRegion, evt: unknown) => void;
|
|
31
|
-
}) => JSX.Element | null;
|
|
31
|
+
}) => React.JSX.Element | null;
|
|
32
32
|
export default Chord;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
|
|
1
|
+
import React from 'react';
|
|
2
2
|
import { Feature } from '@jbrowse/core/util';
|
|
3
3
|
import { AnyConfigurationModel } from '@jbrowse/core/configuration';
|
|
4
4
|
import { Block, AnyRegion } from './Chord';
|
|
@@ -13,5 +13,5 @@ declare const _default: ({ features, config, displayModel, blockDefinitions, rad
|
|
|
13
13
|
blockDefinitions: Block[];
|
|
14
14
|
bezierRadius: number;
|
|
15
15
|
onChordClick: (feature: Feature, reg: AnyRegion, endBlock: AnyRegion, evt: unknown) => void;
|
|
16
|
-
}) => JSX.Element;
|
|
16
|
+
}) => React.JSX.Element;
|
|
17
17
|
export default _default;
|
|
@@ -1,2 +1,30 @@
|
|
|
1
|
-
declare const configSchema: import("@jbrowse/core/configuration").
|
|
1
|
+
declare const configSchema: import("@jbrowse/core/configuration/configurationSchema").ConfigurationSchemaType<{
|
|
2
|
+
/**
|
|
3
|
+
* #slot
|
|
4
|
+
*/
|
|
5
|
+
strokeColor: {
|
|
6
|
+
type: string;
|
|
7
|
+
description: string;
|
|
8
|
+
defaultValue: string;
|
|
9
|
+
contextVariable: string[];
|
|
10
|
+
};
|
|
11
|
+
/**
|
|
12
|
+
* #slot
|
|
13
|
+
*/
|
|
14
|
+
strokeColorSelected: {
|
|
15
|
+
type: string;
|
|
16
|
+
description: string;
|
|
17
|
+
defaultValue: string;
|
|
18
|
+
contextVariable: string[];
|
|
19
|
+
};
|
|
20
|
+
/**
|
|
21
|
+
* #slot
|
|
22
|
+
*/
|
|
23
|
+
strokeColorHover: {
|
|
24
|
+
type: string;
|
|
25
|
+
description: string;
|
|
26
|
+
defaultValue: string;
|
|
27
|
+
contextVariable: string[];
|
|
28
|
+
};
|
|
29
|
+
}, import("@jbrowse/core/configuration/configurationSchema").ConfigurationSchemaOptions<undefined, undefined>>;
|
|
2
30
|
export default configSchema;
|
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { GridColDef, GridValidRowModel } from '@mui/x-data-grid';
|
|
2
3
|
export default function VariantAnnotPanel({ rows, columns, }: {
|
|
3
|
-
rows:
|
|
4
|
-
columns:
|
|
5
|
-
}): JSX.Element | null;
|
|
4
|
+
rows: GridValidRowModel[];
|
|
5
|
+
columns: GridColDef[];
|
|
6
|
+
}): React.JSX.Element | null;
|
|
@@ -1,16 +1,16 @@
|
|
|
1
|
-
|
|
2
|
-
import
|
|
3
|
-
import {
|
|
1
|
+
import React, { useState } from 'react';
|
|
2
|
+
import { DataGrid, GridToolbar, } from '@mui/x-data-grid';
|
|
3
|
+
import { Checkbox, FormControlLabel, Typography } from '@mui/material';
|
|
4
|
+
import ResizeBar, { useResizeBar } from '@jbrowse/core/ui/ResizeBar';
|
|
5
|
+
import { measureGridWidth } from '@jbrowse/core/util';
|
|
4
6
|
export default function VariantAnnotPanel({ rows, columns, }) {
|
|
5
|
-
const
|
|
6
|
-
const
|
|
7
|
-
const
|
|
8
|
-
return rows.length ? (React.createElement("div", {
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
width:
|
|
13
|
-
} },
|
|
14
|
-
React.createElement(DataGrid, { rowHeight: rowHeight, rows: rows, columns: columns }))) : null;
|
|
7
|
+
const { ref, scrollLeft } = useResizeBar();
|
|
8
|
+
const [checked, setChecked] = useState(false);
|
|
9
|
+
const [widths, setWidths] = useState(columns.map(e => measureGridWidth(rows.map(r => r[e.field]))));
|
|
10
|
+
return rows.length ? (React.createElement("div", { ref: ref },
|
|
11
|
+
React.createElement(FormControlLabel, { control: React.createElement(Checkbox, { checked: checked, onChange: event => setChecked(event.target.checked) }), label: React.createElement(Typography, { variant: "body2" }, "Show options") }),
|
|
12
|
+
React.createElement("div", { ref: ref },
|
|
13
|
+
React.createElement(ResizeBar, { widths: widths, setWidths: setWidths, scrollLeft: scrollLeft }),
|
|
14
|
+
React.createElement(DataGrid, { rowHeight: 25, rows: rows, columns: columns.map((c, i) => ({ ...c, width: widths[i] })), slots: { toolbar: checked ? GridToolbar : null } })))) : null;
|
|
15
15
|
}
|
|
16
16
|
//# sourceMappingURL=AnnotGrid.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AnnotGrid.js","sourceRoot":"","sources":["../../src/VariantFeatureWidget/AnnotGrid.tsx"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"AnnotGrid.js","sourceRoot":"","sources":["../../src/VariantFeatureWidget/AnnotGrid.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AACvC,OAAO,EACL,QAAQ,EAER,WAAW,GAEZ,MAAM,kBAAkB,CAAA;AACzB,OAAO,EAAE,QAAQ,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AACtE,OAAO,SAAS,EAAE,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAA;AACpE,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAA;AAErD,MAAM,CAAC,OAAO,UAAU,iBAAiB,CAAC,EACxC,IAAI,EACJ,OAAO,GAIR;IACC,MAAM,EAAE,GAAG,EAAE,UAAU,EAAE,GAAG,YAAY,EAAE,CAAA;IAC1C,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAA;IAC7C,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,QAAQ,CAClC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,gBAAgB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAC9D,CAAA;IAED,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CACnB,6BAAK,GAAG,EAAE,GAAG;QACX,oBAAC,gBAAgB,IACf,OAAO,EACL,oBAAC,QAAQ,IACP,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,KAAK,CAAC,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,GACnD,EAEJ,KAAK,EAAE,oBAAC,UAAU,IAAC,OAAO,EAAC,OAAO,mBAA0B,GAC5D;QACF,6BAAK,GAAG,EAAE,GAAG;YACX,oBAAC,SAAS,IACR,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,SAAS,EACpB,UAAU,EAAE,UAAU,GACtB;YACF,oBAAC,QAAQ,IACP,SAAS,EAAE,EAAE,EACb,IAAI,EAAE,IAAI,EACV,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAC5D,KAAK,EAAE,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,EAAE,GAChD,CACE,CACF,CACP,CAAC,CAAC,CAAC,IAAI,CAAA;AACV,CAAC"}
|
|
@@ -1,10 +1,9 @@
|
|
|
1
|
-
|
|
1
|
+
import React from 'react';
|
|
2
2
|
import { Feature } from '@jbrowse/core/util';
|
|
3
|
-
declare
|
|
3
|
+
declare const _default: ({ model, handleClose, feature, viewType, }: {
|
|
4
4
|
model: any;
|
|
5
5
|
handleClose: () => void;
|
|
6
6
|
feature: Feature;
|
|
7
7
|
viewType: any;
|
|
8
|
-
})
|
|
9
|
-
declare const _default: typeof BreakendOptionDialog;
|
|
8
|
+
}) => React.JSX.Element;
|
|
10
9
|
export default _default;
|
|
@@ -12,14 +12,14 @@ const useStyles = makeStyles()({
|
|
|
12
12
|
display: 'block',
|
|
13
13
|
},
|
|
14
14
|
});
|
|
15
|
-
function BreakendOptionDialog({ model, handleClose, feature, viewType, }) {
|
|
15
|
+
export default observer(function BreakendOptionDialog({ model, handleClose, feature, viewType, }) {
|
|
16
16
|
const { classes } = useStyles();
|
|
17
17
|
const [copyTracks, setCopyTracks] = useState(true);
|
|
18
18
|
const [mirrorTracks, setMirrorTracks] = useState(true);
|
|
19
19
|
return (React.createElement(Dialog, { open: true, onClose: handleClose, title: "Breakpoint split view options" },
|
|
20
20
|
React.createElement(DialogContent, null,
|
|
21
|
-
React.createElement(FormControlLabel, { className: classes.block, control: React.createElement(Checkbox, { checked: copyTracks, onChange:
|
|
22
|
-
React.createElement(FormControlLabel, { className: classes.block, control: React.createElement(Checkbox, { checked: mirrorTracks, onChange:
|
|
21
|
+
React.createElement(FormControlLabel, { className: classes.block, control: React.createElement(Checkbox, { checked: copyTracks, onChange: event => setCopyTracks(event.target.checked) }), label: "Copy tracks into the new view" }),
|
|
22
|
+
React.createElement(FormControlLabel, { className: classes.block, control: React.createElement(Checkbox, { checked: mirrorTracks, onChange: event => setMirrorTracks(event.target.checked) }), label: "Mirror tracks vertically in vertically stacked view" })),
|
|
23
23
|
React.createElement(DialogActions, null,
|
|
24
24
|
React.createElement(Button, { onClick: () => {
|
|
25
25
|
const { view } = model;
|
|
@@ -48,6 +48,5 @@ function BreakendOptionDialog({ model, handleClose, feature, viewType, }) {
|
|
|
48
48
|
handleClose();
|
|
49
49
|
}, variant: "contained", color: "primary", autoFocus: true }, "OK"),
|
|
50
50
|
React.createElement(Button, { onClick: () => handleClose(), color: "secondary", variant: "contained" }, "Cancel"))));
|
|
51
|
-
}
|
|
52
|
-
export default observer(BreakendOptionDialog);
|
|
51
|
+
});
|
|
53
52
|
//# sourceMappingURL=BreakendOptionDialog.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BreakendOptionDialog.js","sourceRoot":"","sources":["../../src/VariantFeatureWidget/BreakendOptionDialog.tsx"],"names":[],"mappings":"AAAA,uDAAuD;AACvD,OAAO,KAAK,EAAE,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AACvC,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AACrC,OAAO,EACL,MAAM,EACN,QAAQ,EACR,aAAa,EACb,aAAa,EACb,gBAAgB,GACjB,MAAM,eAAe,CAAA;AACtB,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AAC1C,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA;AAC7C,UAAU;AACV,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAA;AACzC,OAAO,EAAE,UAAU,EAAW,MAAM,oBAAoB,CAAA;AAExD,MAAM,SAAS,GAAG,UAAU,EAAE,CAAC;IAC7B,KAAK,EAAE;QACL,OAAO,EAAE,OAAO;KACjB;CACF,CAAC,CAAA;AAEF,SAAS,oBAAoB,CAAC,
|
|
1
|
+
{"version":3,"file":"BreakendOptionDialog.js","sourceRoot":"","sources":["../../src/VariantFeatureWidget/BreakendOptionDialog.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
|
|
1
|
+
import React from 'react';
|
|
2
2
|
import { SimpleFeatureSerialized } from '@jbrowse/core/util/simpleFeature';
|
|
3
3
|
export default function BreakendPanel(props: {
|
|
4
4
|
locStrings: string[];
|
|
5
5
|
model: any;
|
|
6
6
|
feature: SimpleFeatureSerialized;
|
|
7
|
-
}): JSX.Element;
|
|
7
|
+
}): React.JSX.Element;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { BaseCard } from '@jbrowse/core/BaseFeatureWidget/BaseFeatureDetail';
|
|
3
|
+
import AnnotGrid from './AnnotGrid';
|
|
4
|
+
export default function VariantAnnotationTable({ data, fields, title, }) {
|
|
5
|
+
return data.length ? (React.createElement(BaseCard, { title: title },
|
|
6
|
+
React.createElement(AnnotGrid, { rows: data.map((elt, id) => ({
|
|
7
|
+
id,
|
|
8
|
+
...Object.fromEntries(elt.split('|').map((e, i) => [fields[i], e])),
|
|
9
|
+
})) || [], columns: fields.map(c => ({ field: c })) }))) : null;
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=VariantAnnotationTable.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"VariantAnnotationTable.js","sourceRoot":"","sources":["../../src/VariantFeatureWidget/VariantAnnotationTable.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,EAAE,QAAQ,EAAE,MAAM,mDAAmD,CAAA;AAC5E,OAAO,SAAS,MAAM,aAAa,CAAA;AAEnC,MAAM,CAAC,OAAO,UAAU,sBAAsB,CAAC,EAC7C,IAAI,EACJ,MAAM,EACN,KAAK,GAKN;IACC,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CACnB,oBAAC,QAAQ,IAAC,KAAK,EAAE,KAAK;QACpB,oBAAC,SAAS,IACR,IAAI,EACF,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;gBACrB,EAAE;gBACF,GAAG,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;aACpE,CAAC,CAAC,IAAI,EAAE,EAEX,OAAO,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,GACxC,CACO,CACZ,CAAC,CAAC,CAAC,IAAI,CAAA;AACV,CAAC"}
|
|
@@ -1,4 +1,10 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { SimpleFeatureSerialized } from '@jbrowse/core/util';
|
|
3
|
+
declare function VariantFeatureDetails(props: {
|
|
4
|
+
model: {
|
|
5
|
+
featureData: SimpleFeatureSerialized;
|
|
6
|
+
descriptions: Record<string, string>;
|
|
7
|
+
};
|
|
8
|
+
}): React.JSX.Element;
|
|
3
9
|
declare const _default: typeof VariantFeatureDetails;
|
|
4
10
|
export default _default;
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
2
1
|
import React from 'react';
|
|
3
2
|
import { observer } from 'mobx-react';
|
|
4
3
|
import { Divider, Paper } from '@mui/material';
|
|
@@ -6,33 +5,46 @@ import { FeatureDetails } from '@jbrowse/core/BaseFeatureWidget/BaseFeatureDetai
|
|
|
6
5
|
import { parseBreakend } from '@gmod/vcf';
|
|
7
6
|
// locals
|
|
8
7
|
import VariantSampleGrid from './VariantSampleGrid';
|
|
9
|
-
import VariantCsqPanel from './VariantCsqPanel';
|
|
10
|
-
import VariantAnnPanel from './VariantAnnPanel';
|
|
11
8
|
import BreakendPanel from './BreakendPanel';
|
|
9
|
+
import VariantAnnotationTable from './VariantAnnotationTable';
|
|
10
|
+
const basicDescriptions = {
|
|
11
|
+
CHROM: 'chromosome: An identifier from the reference genome',
|
|
12
|
+
POS: 'position: The reference position, with the 1st base having position 1',
|
|
13
|
+
ID: 'identifier: Semi-colon separated list of unique identifiers where available',
|
|
14
|
+
REF: 'reference base(s): Each base must be one of A,C,G,T,N (case insensitive).',
|
|
15
|
+
ALT: 'alternate base(s): Comma-separated list of alternate non-reference alleles',
|
|
16
|
+
QUAL: 'quality: Phred-scaled quality score for the assertion made in ALT',
|
|
17
|
+
FILTER: 'filter status: PASS if this position has passed all filters, otherwise a semicolon-separated list of codes for filters that fail',
|
|
18
|
+
};
|
|
12
19
|
function VariantFeatureDetails(props) {
|
|
13
20
|
const { model } = props;
|
|
14
21
|
const { featureData, descriptions } = model;
|
|
15
22
|
const feat = JSON.parse(JSON.stringify(featureData));
|
|
16
23
|
const { samples, ...rest } = feat;
|
|
17
|
-
const basicDescriptions = {
|
|
18
|
-
CHROM: 'chromosome: An identifier from the reference genome',
|
|
19
|
-
POS: 'position: The reference position, with the 1st base having position 1',
|
|
20
|
-
ID: 'identifier: Semi-colon separated list of unique identifiers where available',
|
|
21
|
-
REF: 'reference base(s): Each base must be one of A,C,G,T,N (case insensitive).',
|
|
22
|
-
ALT: 'alternate base(s): Comma-separated list of alternate non-reference alleles',
|
|
23
|
-
QUAL: 'quality: Phred-scaled quality score for the assertion made in ALT',
|
|
24
|
-
FILTER: 'filter status: PASS if this position has passed all filters, otherwise a semicolon-separated list of codes for filters that fail',
|
|
25
|
-
};
|
|
26
24
|
return (React.createElement(Paper, { "data-testid": "variant-side-drawer" },
|
|
27
25
|
React.createElement(FeatureDetails, { feature: rest, descriptions: { ...basicDescriptions, ...descriptions }, ...props }),
|
|
28
26
|
React.createElement(Divider, null),
|
|
29
|
-
React.createElement(
|
|
27
|
+
React.createElement(CsqPanel, { feature: rest, descriptions: descriptions }),
|
|
30
28
|
React.createElement(Divider, null),
|
|
31
|
-
React.createElement(
|
|
29
|
+
React.createElement(AnnPanel, { feature: rest, descriptions: descriptions }),
|
|
32
30
|
React.createElement(Divider, null),
|
|
33
31
|
feat.type === 'breakend' ? (React.createElement(BreakendPanel, { feature: feat, locStrings: feat.ALT.map((alt) => { var _a; return ((_a = parseBreakend(alt)) === null || _a === void 0 ? void 0 : _a.MatePosition) || ''; }), model: model })) : null,
|
|
34
32
|
feat.type === 'translocation' ? (React.createElement(BreakendPanel, { feature: feat, model: model, locStrings: [`${feat.INFO.CHR2[0]}:${feat.INFO.END}`] })) : null,
|
|
35
33
|
React.createElement(VariantSampleGrid, { feature: feat, ...props, descriptions: descriptions })));
|
|
36
34
|
}
|
|
35
|
+
function AnnPanel({ descriptions, feature, }) {
|
|
36
|
+
var _a, _b, _c, _d;
|
|
37
|
+
const annDesc = (_b = (_a = descriptions === null || descriptions === void 0 ? void 0 : descriptions.INFO) === null || _a === void 0 ? void 0 : _a.ANN) === null || _b === void 0 ? void 0 : _b.Description;
|
|
38
|
+
const annFields = ((_c = annDesc === null || annDesc === void 0 ? void 0 : annDesc.match(/.*Functional annotations:'(.*)'$/)) === null || _c === void 0 ? void 0 : _c[1].split('|')) || [];
|
|
39
|
+
const ann = ((_d = feature.INFO) === null || _d === void 0 ? void 0 : _d.ANN) || [];
|
|
40
|
+
return (React.createElement(VariantAnnotationTable, { fields: annFields, data: ann, title: "Variant ANN field" }));
|
|
41
|
+
}
|
|
42
|
+
function CsqPanel({ descriptions, feature, }) {
|
|
43
|
+
var _a, _b, _c, _d;
|
|
44
|
+
const csqDescription = (_b = (_a = descriptions === null || descriptions === void 0 ? void 0 : descriptions.INFO) === null || _a === void 0 ? void 0 : _a.CSQ) === null || _b === void 0 ? void 0 : _b.Description;
|
|
45
|
+
const csqFields = ((_c = csqDescription === null || csqDescription === void 0 ? void 0 : csqDescription.match(/.*Format: (.*)/)) === null || _c === void 0 ? void 0 : _c[1].split('|')) || [];
|
|
46
|
+
const csq = ((_d = feature.INFO) === null || _d === void 0 ? void 0 : _d.CSQ) || [];
|
|
47
|
+
return (React.createElement(VariantAnnotationTable, { fields: csqFields, data: csq, title: "Variant CSQ field" }));
|
|
48
|
+
}
|
|
37
49
|
export default observer(VariantFeatureDetails);
|
|
38
50
|
//# sourceMappingURL=VariantFeatureWidget.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VariantFeatureWidget.js","sourceRoot":"","sources":["../../src/VariantFeatureWidget/VariantFeatureWidget.tsx"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"VariantFeatureWidget.js","sourceRoot":"","sources":["../../src/VariantFeatureWidget/VariantFeatureWidget.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,12 @@
|
|
|
1
|
-
|
|
1
|
+
import React from 'react';
|
|
2
2
|
import { SimpleFeatureSerialized } from '@jbrowse/core/util';
|
|
3
3
|
export default function VariantSamples(props: {
|
|
4
4
|
feature: SimpleFeatureSerialized;
|
|
5
|
-
descriptions:
|
|
6
|
-
|
|
5
|
+
descriptions: {
|
|
6
|
+
FORMAT?: {
|
|
7
|
+
[key: string]: {
|
|
8
|
+
Description?: string;
|
|
9
|
+
};
|
|
10
|
+
};
|
|
11
|
+
};
|
|
12
|
+
}): React.JSX.Element | null;
|
|
@@ -1,16 +1,13 @@
|
|
|
1
1
|
import React, { useState } from 'react';
|
|
2
2
|
import { FormControlLabel, Checkbox, TextField, Typography, } from '@mui/material';
|
|
3
|
-
import { DataGrid } from '@mui/x-data-grid';
|
|
3
|
+
import { DataGrid, GridToolbar } from '@mui/x-data-grid';
|
|
4
4
|
import { BaseCard } from '@jbrowse/core/BaseFeatureWidget/BaseFeatureDetail';
|
|
5
5
|
import { measureGridWidth } from '@jbrowse/core/util';
|
|
6
6
|
import ResizeBar, { useResizeBar } from '@jbrowse/core/ui/ResizeBar';
|
|
7
7
|
function SampleFilters({ columns, filter, setFilter, }) {
|
|
8
|
-
const [showFilters, setShowFilters] = useState(false);
|
|
9
8
|
return (React.createElement(React.Fragment, null,
|
|
10
|
-
React.createElement(
|
|
11
|
-
|
|
12
|
-
React.createElement(Typography, null, "These filters can use a plain text search or regex style query, e.g. in the genotype field, entering 1 will query for all genotypes that include the first alternate allele e.g. 0|1 or 1|1, entering [1-9]\\d* will find any non-zero allele e.g. 0|2 or 2/33"),
|
|
13
|
-
columns.map(({ field }) => (React.createElement(TextField, { key: `filter-${field}`, placeholder: `Filter ${field}`, value: filter[field] || '', onChange: event => setFilter({ ...filter, [field]: event.target.value }) }))))) : null));
|
|
9
|
+
React.createElement(Typography, null, "These filters can use a plain text search or regex style query, e.g. in the genotype field, entering 1 will query for all genotypes that include the first alternate allele e.g. 0|1 or 1|1, entering [1-9]\\d* will find any non-zero allele e.g. 0|2 or 2/33"),
|
|
10
|
+
columns.map(({ field }) => (React.createElement(TextField, { key: `filter-${field}`, placeholder: `Filter ${field}`, value: filter[field] || '', onChange: event => setFilter({ ...filter, [field]: event.target.value }) })))));
|
|
14
11
|
}
|
|
15
12
|
export default function VariantSamples(props) {
|
|
16
13
|
var _a;
|
|
@@ -36,9 +33,10 @@ export default function VariantSamples(props) {
|
|
|
36
33
|
})
|
|
37
34
|
.filter(row => filters.length
|
|
38
35
|
? filters.every(key => {
|
|
39
|
-
const val = row[key];
|
|
40
36
|
const currFilter = filter[key];
|
|
41
|
-
return currFilter
|
|
37
|
+
return currFilter
|
|
38
|
+
? row[key].match(new RegExp(currFilter, 'i'))
|
|
39
|
+
: true;
|
|
42
40
|
})
|
|
43
41
|
: true);
|
|
44
42
|
}
|
|
@@ -46,6 +44,7 @@ export default function VariantSamples(props) {
|
|
|
46
44
|
error = e;
|
|
47
45
|
}
|
|
48
46
|
const keys = ['sample', ...Object.keys(((_a = preFilteredRows[0]) === null || _a === void 0 ? void 0 : _a[1]) || {})];
|
|
47
|
+
const [checked, setChecked] = useState(false);
|
|
49
48
|
const [widths, setWidths] = useState(keys.map(e => measureGridWidth(rows.map(r => r[e]))));
|
|
50
49
|
const columns = keys.map((field, index) => {
|
|
51
50
|
var _a, _b;
|
|
@@ -55,14 +54,16 @@ export default function VariantSamples(props) {
|
|
|
55
54
|
width: widths[index],
|
|
56
55
|
});
|
|
57
56
|
});
|
|
58
|
-
//
|
|
57
|
+
// disableRowSelectionOnClick helps avoid
|
|
59
58
|
// https://github.com/mui-org/material-ui-x/issues/1197
|
|
60
59
|
return !preFilteredRows.length ? null : (React.createElement(BaseCard, { ...props, title: "Samples" },
|
|
61
60
|
error ? React.createElement(Typography, { color: "error" }, `${error}`) : null,
|
|
62
|
-
React.createElement(
|
|
61
|
+
React.createElement(FormControlLabel, { control: React.createElement(Checkbox, { checked: checked, onChange: event => setChecked(event.target.checked) }), label: React.createElement(Typography, { variant: "body2" }, "Show options") }),
|
|
62
|
+
checked ? (React.createElement(SampleFilters, { setFilter: setFilter, columns: columns, filter: filter })) : null,
|
|
63
63
|
React.createElement("div", { ref: ref },
|
|
64
64
|
React.createElement(ResizeBar, { widths: widths, setWidths: setWidths, scrollLeft: scrollLeft }),
|
|
65
|
-
React.createElement(
|
|
66
|
-
|
|
65
|
+
React.createElement(DataGrid, { rows: rows, hideFooter: rows.length < 100, columns: columns, disableRowSelectionOnClick: true, rowHeight: 25, columnHeaderHeight: 35, disableColumnMenu: true, slots: { toolbar: checked ? GridToolbar : null }, slotProps: {
|
|
66
|
+
toolbar: { printOptions: { disableToolbarButton: true } },
|
|
67
|
+
} }))));
|
|
67
68
|
}
|
|
68
69
|
//# sourceMappingURL=VariantSampleGrid.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VariantSampleGrid.js","sourceRoot":"","sources":["../../src/VariantFeatureWidget/VariantSampleGrid.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AAEvC,OAAO,EACL,gBAAgB,EAChB,QAAQ,EACR,SAAS,EACT,UAAU,GACX,MAAM,eAAe,CAAA;AAEtB,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAA;
|
|
1
|
+
{"version":3,"file":"VariantSampleGrid.js","sourceRoot":"","sources":["../../src/VariantFeatureWidget/VariantSampleGrid.tsx"],"names":[],"mappings":"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"}
|