@jbrowse/plugin-variants 3.2.0 → 3.3.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.
Files changed (221) hide show
  1. package/dist/MultiLinearVariantDisplay/components/VariantDisplayComponent.js +3 -3
  2. package/dist/MultiLinearVariantDisplay/index.js +1 -1
  3. package/dist/MultiLinearVariantDisplay/model.d.ts +39 -3
  4. package/dist/MultiLinearVariantDisplay/model.js +0 -1
  5. package/dist/MultiLinearVariantDisplay/renderSvg.js +2 -2
  6. package/dist/MultiLinearVariantMatrixDisplay/components/LinesConnectingMatrixToGenomicPosition.js +15 -5
  7. package/dist/MultiLinearVariantMatrixDisplay/components/VariantDisplayComponent.js +3 -3
  8. package/dist/MultiLinearVariantMatrixDisplay/index.js +1 -1
  9. package/dist/MultiLinearVariantMatrixDisplay/model.d.ts +39 -2
  10. package/dist/MultiLinearVariantMatrixDisplay/model.js +1 -0
  11. package/dist/MultiLinearVariantMatrixDisplay/renderSvg.js +2 -2
  12. package/dist/MultiLinearVariantMatrixRenderer/{LinearVariantMatrixRenderer.d.ts → MultiLinearVariantMatrixRenderer.d.ts} +7 -3
  13. package/dist/MultiLinearVariantMatrixRenderer/components/MultiLinearVariantMatrixRendering.d.ts +8 -0
  14. package/dist/MultiLinearVariantMatrixRenderer/components/MultiLinearVariantMatrixRendering.js +41 -0
  15. package/dist/MultiLinearVariantMatrixRenderer/index.js +4 -4
  16. package/dist/MultiLinearVariantMatrixRenderer/makeImageData.d.ts +2 -2
  17. package/dist/MultiLinearVariantMatrixRenderer/makeImageData.js +12 -13
  18. package/dist/MultiLinearVariantMatrixRenderer/types.d.ts +2 -4
  19. package/dist/MultiLinearVariantRenderer/MultiVariantRenderer.d.ts +30 -1
  20. package/dist/MultiLinearVariantRenderer/MultiVariantRenderer.js +11 -5
  21. package/dist/MultiLinearVariantRenderer/components/{MultiVariantRendering.d.ts → MultiLinearVariantRendering.d.ts} +10 -4
  22. package/dist/MultiLinearVariantRenderer/{MultiVariantRendering.js → components/MultiLinearVariantRendering.js} +25 -7
  23. package/dist/MultiLinearVariantRenderer/components/util.d.ts +1 -0
  24. package/dist/MultiLinearVariantRenderer/components/util.js +15 -0
  25. package/dist/MultiLinearVariantRenderer/index.js +2 -2
  26. package/dist/MultiLinearVariantRenderer/makeImageData.d.ts +9 -0
  27. package/dist/MultiLinearVariantRenderer/makeImageData.js +60 -28
  28. package/dist/MultiLinearVariantRenderer/types.d.ts +1 -0
  29. package/dist/SplitVcfTabixAdapter/configSchema.js +4 -2
  30. package/dist/VariantFeatureWidget/AltFormatter.d.ts +4 -0
  31. package/dist/VariantFeatureWidget/AltFormatter.js +13 -0
  32. package/dist/VariantFeatureWidget/Checkbox2.js +1 -8
  33. package/dist/VariantFeatureWidget/Formatter.d.ts +3 -0
  34. package/dist/VariantFeatureWidget/Formatter.js +23 -0
  35. package/dist/VariantFeatureWidget/{VariantConsequenceDataGridWrapper.js → VariantConsequence/VariantConsequenceDataGridWrapper.js} +3 -5
  36. package/dist/VariantFeatureWidget/VariantFeatureWidget.js +7 -2
  37. package/dist/VariantFeatureWidget/VariantSampleGrid/VariantGenotypeFrequencyTable.d.ts +4 -0
  38. package/dist/VariantFeatureWidget/VariantSampleGrid/VariantGenotypeFrequencyTable.js +80 -0
  39. package/dist/VariantFeatureWidget/VariantSampleGrid/VariantSampleGrid.d.ts +3 -9
  40. package/dist/VariantFeatureWidget/VariantSampleGrid/VariantSampleGrid.js +41 -20
  41. package/dist/VariantFeatureWidget/VariantSampleGrid/types.d.ts +21 -0
  42. package/dist/VariantFeatureWidget/VariantSampleGrid/util.d.ts +1 -0
  43. package/dist/VariantFeatureWidget/VariantSampleGrid/util.js +14 -0
  44. package/dist/VariantRPC/MultiVariantClusterGenotypeMatrix.d.ts +2 -16
  45. package/dist/VariantRPC/MultiVariantClusterGenotypeMatrix.js +4 -7
  46. package/dist/VariantRPC/MultiVariantGetGenotypeMatrix.d.ts +2 -15
  47. package/dist/VariantRPC/MultiVariantGetSimplifiedFeatures.d.ts +3 -13
  48. package/dist/VariantRPC/MultiVariantGetSimplifiedFeatures.js +14 -8
  49. package/dist/VariantRPC/getGenotypeMatrix.js +10 -5
  50. package/dist/VariantRPC/types.d.ts +23 -0
  51. package/dist/VcfFeature/index.js +0 -1
  52. package/dist/VcfFeature/util.d.ts +2 -0
  53. package/dist/VcfFeature/util.js +123 -25
  54. package/dist/VcfTabixAdapter/VcfTabixAdapter.js +12 -7
  55. package/dist/getMultiVariantFeaturesAutorun.d.ts +2 -0
  56. package/dist/getMultiVariantFeaturesAutorun.js +9 -2
  57. package/dist/getMultiVariantSourcesAutorun.js +3 -2
  58. package/dist/shared/MultiVariantBaseModel.d.ts +40 -3
  59. package/dist/shared/MultiVariantBaseModel.js +69 -3
  60. package/dist/shared/components/AddFiltersDialog.d.ts +9 -0
  61. package/dist/shared/components/AddFiltersDialog.js +61 -0
  62. package/dist/shared/components/MultiVariantBaseDisplayComponent.d.ts +5 -0
  63. package/dist/shared/components/MultiVariantBaseDisplayComponent.js +29 -0
  64. package/dist/shared/components/{ClusterDialog → MultiVariantClusterDialog}/ClusterDialog.js +2 -2
  65. package/dist/shared/components/{ClusterDialog → MultiVariantClusterDialog}/ClusterDialogAuto.js +8 -3
  66. package/dist/shared/components/{ClusterDialog → MultiVariantClusterDialog}/ClusterDialogManual.js +29 -28
  67. package/dist/shared/components/{ClusterDialog → MultiVariantClusterDialog}/types.d.ts +1 -0
  68. package/dist/shared/components/MultiVariantClusterDialog/types.js +2 -0
  69. package/{esm/shared/components/ColorLegend.d.ts → dist/shared/components/MultiVariantColorLegend.d.ts} +2 -2
  70. package/dist/shared/components/{ColorLegend.js → MultiVariantColorLegend.js} +5 -3
  71. package/dist/shared/components/MultiVariantCrosshairs.d.ts +7 -0
  72. package/dist/shared/components/MultiVariantCrosshairs.js +40 -0
  73. package/dist/shared/components/MultiVariantLegendBar.d.ts +7 -0
  74. package/dist/shared/components/{LegendBar.js → MultiVariantLegendBar.js} +2 -2
  75. package/dist/shared/components/MultiVariantTooltip.d.ts +4 -0
  76. package/dist/shared/components/MultiVariantTooltip.js +3 -2
  77. package/dist/shared/components/RectBg.js +4 -2
  78. package/dist/shared/components/SetColorDialog.js +1 -1
  79. package/dist/shared/components/SourcesDataGrid.d.ts +2 -1
  80. package/dist/shared/components/SourcesDataGrid.js +40 -47
  81. package/dist/shared/components/SourcesGrid.js +1 -1
  82. package/dist/shared/components/SourcesGridHeader.d.ts +2 -1
  83. package/dist/shared/drawAlleleCount.d.ts +1 -1
  84. package/dist/shared/drawAlleleCount.js +29 -5
  85. package/dist/shared/drawPhased.d.ts +1 -1
  86. package/dist/shared/drawPhased.js +14 -10
  87. package/dist/shared/minorAlleleFrequencyUtils.d.ts +6 -1
  88. package/dist/shared/minorAlleleFrequencyUtils.js +4 -5
  89. package/dist/shared/sourcesGridUtils.d.ts +3 -2
  90. package/esm/MultiLinearVariantDisplay/components/VariantDisplayComponent.js +2 -2
  91. package/esm/MultiLinearVariantDisplay/index.js +1 -1
  92. package/esm/MultiLinearVariantDisplay/model.d.ts +39 -3
  93. package/esm/MultiLinearVariantDisplay/model.js +0 -1
  94. package/esm/MultiLinearVariantDisplay/renderSvg.js +1 -1
  95. package/esm/MultiLinearVariantMatrixDisplay/components/LinesConnectingMatrixToGenomicPosition.js +15 -8
  96. package/esm/MultiLinearVariantMatrixDisplay/components/VariantDisplayComponent.js +2 -2
  97. package/esm/MultiLinearVariantMatrixDisplay/index.js +1 -1
  98. package/esm/MultiLinearVariantMatrixDisplay/model.d.ts +39 -2
  99. package/esm/MultiLinearVariantMatrixDisplay/model.js +1 -0
  100. package/esm/MultiLinearVariantMatrixDisplay/renderSvg.js +1 -1
  101. package/esm/MultiLinearVariantMatrixRenderer/{LinearVariantMatrixRenderer.d.ts → MultiLinearVariantMatrixRenderer.d.ts} +7 -3
  102. package/esm/MultiLinearVariantMatrixRenderer/components/MultiLinearVariantMatrixRendering.d.ts +8 -0
  103. package/esm/MultiLinearVariantMatrixRenderer/components/MultiLinearVariantMatrixRendering.js +39 -0
  104. package/esm/MultiLinearVariantMatrixRenderer/index.js +4 -4
  105. package/esm/MultiLinearVariantMatrixRenderer/makeImageData.d.ts +2 -2
  106. package/esm/MultiLinearVariantMatrixRenderer/makeImageData.js +13 -14
  107. package/esm/MultiLinearVariantMatrixRenderer/types.d.ts +2 -4
  108. package/esm/MultiLinearVariantRenderer/MultiVariantRenderer.d.ts +30 -1
  109. package/esm/MultiLinearVariantRenderer/MultiVariantRenderer.js +11 -5
  110. package/esm/MultiLinearVariantRenderer/components/{MultiVariantRendering.d.ts → MultiLinearVariantRendering.d.ts} +10 -4
  111. package/esm/MultiLinearVariantRenderer/components/{MultiVariantRendering.js → MultiLinearVariantRendering.js} +25 -7
  112. package/esm/MultiLinearVariantRenderer/components/util.d.ts +1 -0
  113. package/esm/MultiLinearVariantRenderer/components/util.js +12 -0
  114. package/esm/MultiLinearVariantRenderer/index.js +1 -1
  115. package/esm/MultiLinearVariantRenderer/makeImageData.d.ts +9 -0
  116. package/esm/MultiLinearVariantRenderer/makeImageData.js +61 -29
  117. package/esm/MultiLinearVariantRenderer/types.d.ts +1 -0
  118. package/esm/SplitVcfTabixAdapter/configSchema.js +4 -2
  119. package/esm/VariantFeatureWidget/AltFormatter.d.ts +4 -0
  120. package/esm/VariantFeatureWidget/AltFormatter.js +10 -0
  121. package/esm/VariantFeatureWidget/Checkbox2.js +2 -9
  122. package/esm/VariantFeatureWidget/Formatter.d.ts +3 -0
  123. package/esm/VariantFeatureWidget/Formatter.js +17 -0
  124. package/esm/VariantFeatureWidget/{VariantConsequenceDataGridWrapper.js → VariantConsequence/VariantConsequenceDataGridWrapper.js} +4 -6
  125. package/esm/VariantFeatureWidget/VariantFeatureWidget.js +7 -2
  126. package/esm/VariantFeatureWidget/VariantSampleGrid/VariantGenotypeFrequencyTable.d.ts +4 -0
  127. package/esm/VariantFeatureWidget/VariantSampleGrid/VariantGenotypeFrequencyTable.js +74 -0
  128. package/esm/VariantFeatureWidget/VariantSampleGrid/VariantSampleGrid.d.ts +3 -9
  129. package/esm/VariantFeatureWidget/VariantSampleGrid/VariantSampleGrid.js +43 -22
  130. package/esm/VariantFeatureWidget/VariantSampleGrid/types.d.ts +21 -0
  131. package/esm/VariantFeatureWidget/VariantSampleGrid/util.d.ts +1 -0
  132. package/esm/VariantFeatureWidget/VariantSampleGrid/util.js +11 -0
  133. package/esm/VariantRPC/MultiVariantClusterGenotypeMatrix.d.ts +2 -16
  134. package/esm/VariantRPC/MultiVariantClusterGenotypeMatrix.js +4 -7
  135. package/esm/VariantRPC/MultiVariantGetGenotypeMatrix.d.ts +2 -15
  136. package/esm/VariantRPC/MultiVariantGetSimplifiedFeatures.d.ts +3 -13
  137. package/esm/VariantRPC/MultiVariantGetSimplifiedFeatures.js +14 -8
  138. package/esm/VariantRPC/getGenotypeMatrix.js +10 -5
  139. package/esm/VariantRPC/types.d.ts +23 -0
  140. package/esm/VcfFeature/index.js +0 -1
  141. package/esm/VcfFeature/util.d.ts +2 -0
  142. package/esm/VcfFeature/util.js +121 -25
  143. package/esm/VcfTabixAdapter/VcfTabixAdapter.js +13 -8
  144. package/esm/getMultiVariantFeaturesAutorun.d.ts +2 -0
  145. package/esm/getMultiVariantFeaturesAutorun.js +9 -2
  146. package/esm/getMultiVariantSourcesAutorun.js +3 -2
  147. package/esm/shared/MultiVariantBaseModel.d.ts +40 -3
  148. package/esm/shared/MultiVariantBaseModel.js +71 -5
  149. package/esm/shared/components/AddFiltersDialog.d.ts +9 -0
  150. package/esm/shared/components/AddFiltersDialog.js +59 -0
  151. package/esm/shared/components/MultiVariantBaseDisplayComponent.d.ts +5 -0
  152. package/esm/shared/components/MultiVariantBaseDisplayComponent.js +24 -0
  153. package/esm/shared/components/{ClusterDialog → MultiVariantClusterDialog}/ClusterDialog.js +2 -2
  154. package/esm/shared/components/{ClusterDialog → MultiVariantClusterDialog}/ClusterDialogAuto.js +9 -4
  155. package/esm/shared/components/{ClusterDialog → MultiVariantClusterDialog}/ClusterDialogManual.js +29 -28
  156. package/esm/shared/components/{ClusterDialog → MultiVariantClusterDialog}/types.d.ts +1 -0
  157. package/esm/shared/components/MultiVariantClusterDialog/types.js +1 -0
  158. package/{dist/shared/components/ColorLegend.d.ts → esm/shared/components/MultiVariantColorLegend.d.ts} +2 -2
  159. package/esm/shared/components/{ColorLegend.js → MultiVariantColorLegend.js} +6 -4
  160. package/esm/shared/components/MultiVariantCrosshairs.d.ts +7 -0
  161. package/esm/shared/components/MultiVariantCrosshairs.js +35 -0
  162. package/esm/shared/components/MultiVariantLegendBar.d.ts +7 -0
  163. package/esm/shared/components/{LegendBar.js → MultiVariantLegendBar.js} +1 -1
  164. package/esm/shared/components/MultiVariantTooltip.d.ts +4 -0
  165. package/esm/shared/components/MultiVariantTooltip.js +3 -2
  166. package/esm/shared/components/RectBg.js +4 -2
  167. package/esm/shared/components/SetColorDialog.js +1 -1
  168. package/esm/shared/components/SourcesDataGrid.d.ts +2 -1
  169. package/esm/shared/components/SourcesDataGrid.js +40 -47
  170. package/esm/shared/components/SourcesGrid.js +1 -1
  171. package/esm/shared/components/SourcesGridHeader.d.ts +2 -1
  172. package/esm/shared/drawAlleleCount.d.ts +1 -1
  173. package/esm/shared/drawAlleleCount.js +29 -5
  174. package/esm/shared/drawPhased.d.ts +1 -1
  175. package/esm/shared/drawPhased.js +14 -10
  176. package/esm/shared/minorAlleleFrequencyUtils.d.ts +6 -1
  177. package/esm/shared/minorAlleleFrequencyUtils.js +5 -6
  178. package/esm/shared/sourcesGridUtils.d.ts +3 -2
  179. package/package.json +10 -9
  180. package/dist/MultiLinearVariantDisplay/components/Crosshair.d.ts +0 -7
  181. package/dist/MultiLinearVariantDisplay/components/Crosshair.js +0 -35
  182. package/dist/MultiLinearVariantMatrixDisplay/components/Crosshair.d.ts +0 -7
  183. package/dist/MultiLinearVariantMatrixDisplay/components/Crosshair.js +0 -28
  184. package/dist/MultiLinearVariantMatrixRenderer/components/LinearVariantMatrixRendering.d.ts +0 -7
  185. package/dist/MultiLinearVariantMatrixRenderer/components/LinearVariantMatrixRendering.js +0 -38
  186. package/dist/MultiLinearVariantRenderer/MultiVariantRendering.d.ts +0 -22
  187. package/dist/MultiLinearVariantRenderer/components/MultiVariantRendering.js +0 -52
  188. package/dist/VariantFeatureWidget/VariantConsequencePanel.d.ts +0 -5
  189. package/dist/VariantFeatureWidget/VariantConsequencePanel.js +0 -15
  190. package/dist/VariantRPC/cluster.d.ts +0 -17
  191. package/dist/VariantRPC/cluster.js +0 -84
  192. package/dist/shared/components/LegendBar.d.ts +0 -18
  193. package/esm/MultiLinearVariantDisplay/components/Crosshair.d.ts +0 -7
  194. package/esm/MultiLinearVariantDisplay/components/Crosshair.js +0 -30
  195. package/esm/MultiLinearVariantMatrixDisplay/components/Crosshair.d.ts +0 -7
  196. package/esm/MultiLinearVariantMatrixDisplay/components/Crosshair.js +0 -23
  197. package/esm/MultiLinearVariantMatrixRenderer/components/LinearVariantMatrixRendering.d.ts +0 -7
  198. package/esm/MultiLinearVariantMatrixRenderer/components/LinearVariantMatrixRendering.js +0 -36
  199. package/esm/MultiLinearVariantRenderer/MultiVariantRendering.d.ts +0 -22
  200. package/esm/MultiLinearVariantRenderer/MultiVariantRendering.js +0 -47
  201. package/esm/VariantFeatureWidget/VariantConsequencePanel.d.ts +0 -5
  202. package/esm/VariantFeatureWidget/VariantConsequencePanel.js +0 -9
  203. package/esm/VariantRPC/cluster.d.ts +0 -17
  204. package/esm/VariantRPC/cluster.js +0 -79
  205. package/esm/shared/components/LegendBar.d.ts +0 -18
  206. /package/dist/MultiLinearVariantMatrixRenderer/{LinearVariantMatrixRenderer.js → MultiLinearVariantMatrixRenderer.js} +0 -0
  207. /package/dist/VariantFeatureWidget/{VariantConsequenceDataGrid.d.ts → VariantConsequence/VariantConsequenceDataGrid.d.ts} +0 -0
  208. /package/dist/VariantFeatureWidget/{VariantConsequenceDataGrid.js → VariantConsequence/VariantConsequenceDataGrid.js} +0 -0
  209. /package/dist/VariantFeatureWidget/{VariantConsequenceDataGridWrapper.d.ts → VariantConsequence/VariantConsequenceDataGridWrapper.d.ts} +0 -0
  210. /package/dist/{shared/components/ClusterDialog → VariantFeatureWidget/VariantSampleGrid}/types.js +0 -0
  211. /package/dist/shared/components/{ClusterDialog → MultiVariantClusterDialog}/ClusterDialog.d.ts +0 -0
  212. /package/dist/shared/components/{ClusterDialog → MultiVariantClusterDialog}/ClusterDialogAuto.d.ts +0 -0
  213. /package/dist/shared/components/{ClusterDialog → MultiVariantClusterDialog}/ClusterDialogManual.d.ts +0 -0
  214. /package/esm/MultiLinearVariantMatrixRenderer/{LinearVariantMatrixRenderer.js → MultiLinearVariantMatrixRenderer.js} +0 -0
  215. /package/esm/VariantFeatureWidget/{VariantConsequenceDataGrid.d.ts → VariantConsequence/VariantConsequenceDataGrid.d.ts} +0 -0
  216. /package/esm/VariantFeatureWidget/{VariantConsequenceDataGrid.js → VariantConsequence/VariantConsequenceDataGrid.js} +0 -0
  217. /package/esm/VariantFeatureWidget/{VariantConsequenceDataGridWrapper.d.ts → VariantConsequence/VariantConsequenceDataGridWrapper.d.ts} +0 -0
  218. /package/esm/{shared/components/ClusterDialog → VariantFeatureWidget/VariantSampleGrid}/types.js +0 -0
  219. /package/esm/shared/components/{ClusterDialog → MultiVariantClusterDialog}/ClusterDialog.d.ts +0 -0
  220. /package/esm/shared/components/{ClusterDialog → MultiVariantClusterDialog}/ClusterDialogAuto.d.ts +0 -0
  221. /package/esm/shared/components/{ClusterDialog → MultiVariantClusterDialog}/ClusterDialogManual.d.ts +0 -0
@@ -0,0 +1,39 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { useRef } from 'react';
3
+ import { PrerenderedCanvas } from '@jbrowse/core/ui';
4
+ import { observer } from 'mobx-react';
5
+ const MultiLinearVariantMatrixRendering = observer(function (props) {
6
+ const { arr, width, height, displayModel } = props;
7
+ const ref = useRef(null);
8
+ function getFeatureUnderMouse(eventClientX, eventClientY) {
9
+ var _a, _b, _c;
10
+ if (!ref.current) {
11
+ return;
12
+ }
13
+ const r = ref.current.getBoundingClientRect();
14
+ const offsetX = eventClientX - r.left;
15
+ const offsetY = eventClientY - r.top;
16
+ const dimY = arr.length;
17
+ const dimX = ((_a = arr[0]) === null || _a === void 0 ? void 0 : _a.length) || 0;
18
+ const name = (_b = displayModel.sources[Math.floor((offsetY / height) * dimX)]) === null || _b === void 0 ? void 0 : _b.name;
19
+ const genotype = (_c = arr[Math.floor((offsetX / width) * dimY)]) === null || _c === void 0 ? void 0 : _c[Math.floor((offsetY / height) * dimX)];
20
+ return genotype && name
21
+ ? {
22
+ name,
23
+ genotype,
24
+ }
25
+ : undefined;
26
+ }
27
+ return (_jsx("div", { ref: ref, onMouseMove: e => {
28
+ displayModel.setHoveredGenotype(getFeatureUnderMouse(e.clientX, e.clientY));
29
+ }, onMouseLeave: () => {
30
+ displayModel.setHoveredGenotype(undefined);
31
+ }, onMouseOut: () => {
32
+ displayModel.setHoveredGenotype(undefined);
33
+ }, style: {
34
+ overflow: 'visible',
35
+ position: 'relative',
36
+ height,
37
+ }, children: _jsx(PrerenderedCanvas, { ...props }) }));
38
+ });
39
+ export default MultiLinearVariantMatrixRendering;
@@ -1,12 +1,12 @@
1
- import LinearVariantMatrixRenderer from './LinearVariantMatrixRenderer';
2
- import PrerenderedCanvas from './components/LinearVariantMatrixRendering';
1
+ import MultiLinearVariantMatrixRenderer from './MultiLinearVariantMatrixRenderer';
2
+ import ReactComponent from './components/MultiLinearVariantMatrixRendering';
3
3
  import configSchema from './configSchema';
4
4
  export default function LinearVariantMatrixRendererF(pluginManager) {
5
5
  pluginManager.addRendererType(() => {
6
- return new LinearVariantMatrixRenderer({
6
+ return new MultiLinearVariantMatrixRenderer({
7
7
  name: 'LinearVariantMatrixRenderer',
8
8
  displayName: 'Linear variant matrix renderer',
9
- ReactComponent: PrerenderedCanvas,
9
+ ReactComponent,
10
10
  configSchema,
11
11
  pluginManager,
12
12
  });
@@ -1,9 +1,9 @@
1
- import type { RenderArgsDeserializedWithFeaturesAndLayout } from './types';
1
+ import type { RenderArgsDeserialized } from './types';
2
2
  export declare function makeImageData({ ctx, canvasWidth, canvasHeight, renderArgs, }: {
3
3
  ctx: CanvasRenderingContext2D;
4
4
  canvasWidth: number;
5
5
  canvasHeight: number;
6
- renderArgs: RenderArgsDeserializedWithFeaturesAndLayout;
6
+ renderArgs: RenderArgsDeserialized;
7
7
  }): Promise<{
8
8
  mafs: {
9
9
  feature: import("@jbrowse/core/util").Feature;
@@ -1,33 +1,32 @@
1
- import { updateStatus } from '@jbrowse/core/util';
1
+ import { forEachWithStopTokenCheck, updateStatus } from '@jbrowse/core/util';
2
2
  import { checkStopToken } from '@jbrowse/core/util/stopToken';
3
3
  import { f2 } from '../shared/constants';
4
4
  import { drawColorAlleleCount } from '../shared/drawAlleleCount';
5
5
  import { drawPhased } from '../shared/drawPhased';
6
6
  import { getFeaturesThatPassMinorAlleleFrequencyFilter } from '../shared/minorAlleleFrequencyUtils';
7
7
  export async function makeImageData({ ctx, canvasWidth, canvasHeight, renderArgs, }) {
8
- const { renderingMode: renderingMode, minorAlleleFrequencyFilter, sources, features, stopToken, } = renderArgs;
8
+ const { renderingMode, minorAlleleFrequencyFilter, sources, features, stopToken, lengthCutoffFilter, } = renderArgs;
9
9
  const { statusCallback = () => { } } = renderArgs;
10
10
  const h = canvasHeight / sources.length;
11
11
  checkStopToken(stopToken);
12
- const mafs = getFeaturesThatPassMinorAlleleFrequencyFilter(features.values(), minorAlleleFrequencyFilter);
12
+ const mafs = getFeaturesThatPassMinorAlleleFrequencyFilter({
13
+ stopToken,
14
+ features: features.values(),
15
+ minorAlleleFrequencyFilter,
16
+ lengthCutoffFilter,
17
+ });
13
18
  checkStopToken(stopToken);
14
19
  const arr = [];
15
20
  const m = mafs.length;
16
21
  const w = canvasWidth / m;
17
22
  await updateStatus('Drawing variant matrix', statusCallback, () => {
18
- var _a, _b, _c;
19
- let start = performance.now();
20
- for (let i = 0; i < m; i++) {
21
- if (performance.now() - start > 400) {
22
- checkStopToken(stopToken);
23
- start = performance.now();
24
- }
23
+ forEachWithStopTokenCheck(mafs, stopToken, ({ feature, mostFrequentAlt }, idx) => {
24
+ var _a, _b, _c;
25
25
  const arr2 = [];
26
- const { feature, mostFrequentAlt } = mafs[i];
27
26
  const hasPhaseSet = (_a = feature.get('FORMAT')) === null || _a === void 0 ? void 0 : _a.includes('PS');
28
27
  if (hasPhaseSet) {
29
28
  const samp = feature.get('samples');
30
- const x = (i / mafs.length) * canvasWidth;
29
+ const x = (idx / mafs.length) * canvasWidth;
31
30
  const sln = sources.length;
32
31
  for (let j = 0; j < sln; j++) {
33
32
  const y = (j / sln) * canvasHeight;
@@ -59,7 +58,7 @@ export async function makeImageData({ ctx, canvasWidth, canvasHeight, renderArgs
59
58
  }
60
59
  else {
61
60
  const samp = feature.get('genotypes');
62
- const x = (i / mafs.length) * canvasWidth;
61
+ const x = (idx / mafs.length) * canvasWidth;
63
62
  const sln = sources.length;
64
63
  for (let j = 0; j < sln; j++) {
65
64
  const y = (j / sln) * canvasHeight;
@@ -86,7 +85,7 @@ export async function makeImageData({ ctx, canvasWidth, canvasHeight, renderArgs
86
85
  }
87
86
  }
88
87
  arr.push(arr2);
89
- }
88
+ });
90
89
  });
91
90
  return {
92
91
  mafs,
@@ -6,11 +6,9 @@ export interface RenderArgsDeserialized extends BoxRenderArgsDeserialized {
6
6
  minorAlleleFrequencyFilter: number;
7
7
  highResolutionScaling: number;
8
8
  height: number;
9
- renderingMode: string;
10
- }
11
- export interface RenderArgsDeserializedWithFeaturesAndLayout extends RenderArgsDeserialized {
12
- sources: Source[];
13
9
  features: Map<string, Feature>;
14
10
  renderingMode: string;
15
11
  statusCallback?: (arg: string) => void;
12
+ lengthCutoffFilter: number;
13
+ stopToken: string;
16
14
  }
@@ -8,6 +8,16 @@ export default class MultiVariantBaseRenderer extends FeatureRendererType {
8
8
  height: number;
9
9
  width: number;
10
10
  containsNoTransferables: boolean;
11
+ rbush: any;
12
+ featureGenotypeMap: {
13
+ [k: string]: {
14
+ alt: any;
15
+ ref: any;
16
+ name: any;
17
+ description: any;
18
+ length: number;
19
+ };
20
+ };
11
21
  canvasRecordedData: any;
12
22
  reactElement?: React.ReactElement;
13
23
  html?: string;
@@ -16,6 +26,16 @@ export default class MultiVariantBaseRenderer extends FeatureRendererType {
16
26
  height: number;
17
27
  width: number;
18
28
  containsNoTransferables: boolean;
29
+ rbush: any;
30
+ featureGenotypeMap: {
31
+ [k: string]: {
32
+ alt: any;
33
+ ref: any;
34
+ name: any;
35
+ description: any;
36
+ length: number;
37
+ };
38
+ };
19
39
  reactElement: import("react/jsx-runtime").JSX.Element;
20
40
  html?: string;
21
41
  } | {
@@ -23,9 +43,18 @@ export default class MultiVariantBaseRenderer extends FeatureRendererType {
23
43
  height: number;
24
44
  width: number;
25
45
  containsNoTransferables: boolean;
46
+ rbush: any;
47
+ featureGenotypeMap: {
48
+ [k: string]: {
49
+ alt: any;
50
+ ref: any;
51
+ name: any;
52
+ description: any;
53
+ length: number;
54
+ };
55
+ };
26
56
  imageData: any;
27
57
  reactElement?: React.ReactElement;
28
58
  html?: string;
29
59
  }>;
30
60
  }
31
- export type { RenderArgsSerialized, RenderResults, ResultsDeserialized, ResultsSerialized, } from '@jbrowse/core/pluggableElementTypes/renderers/FeatureRendererType';
@@ -7,14 +7,20 @@ export default class MultiVariantBaseRenderer extends FeatureRendererType {
7
7
  }
8
8
  async render(renderProps) {
9
9
  const features = await this.getFeatures(renderProps);
10
- const { height, regions, bpPerPx } = renderProps;
10
+ const { height, referenceDrawingMode, regions, bpPerPx } = renderProps;
11
11
  const region = regions[0];
12
12
  const width = (region.end - region.start) / bpPerPx;
13
13
  const { makeImageData } = await import('./makeImageData');
14
- const rest = await renderToAbstractCanvas(width, height, renderProps, ctx => makeImageData(ctx, {
15
- ...renderProps,
16
- features,
17
- }));
14
+ const rest = await renderToAbstractCanvas(width, height, renderProps, ctx => {
15
+ if (referenceDrawingMode === 'skip') {
16
+ ctx.fillStyle = '#ccc';
17
+ ctx.fillRect(0, 0, width, height);
18
+ }
19
+ return makeImageData(ctx, {
20
+ ...renderProps,
21
+ features,
22
+ });
23
+ });
18
24
  const results = await super.render({
19
25
  ...renderProps,
20
26
  ...rest,
@@ -1,7 +1,14 @@
1
- import RBush from 'rbush';
2
1
  import type { Source } from '../../shared/types';
3
2
  import type { Feature } from '@jbrowse/core/util';
4
3
  import type { Region } from '@jbrowse/core/util/types';
4
+ type SerializedRBush = any;
5
+ interface MinimizedVariantRecord {
6
+ alt: string[];
7
+ ref: string;
8
+ name: string;
9
+ description: string;
10
+ length: number;
11
+ }
5
12
  declare const MultiVariantRendering: (props: {
6
13
  regions: Region[];
7
14
  features: Map<string, Feature>;
@@ -10,10 +17,9 @@ declare const MultiVariantRendering: (props: {
10
17
  height: number;
11
18
  sources: Source[];
12
19
  scrollTop: number;
20
+ featureGenotypeMap: Record<string, MinimizedVariantRecord>;
13
21
  totalHeight: number;
14
- rbush: RBush<{
15
- genotype: string;
16
- }>;
22
+ rbush: SerializedRBush;
17
23
  displayModel: any;
18
24
  onMouseLeave?: (event: React.MouseEvent) => void;
19
25
  onMouseMove?: (event: React.MouseEvent, arg?: Feature) => void;
@@ -1,29 +1,47 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
2
  import { useMemo, useRef } from 'react';
3
3
  import { PrerenderedCanvas } from '@jbrowse/core/ui';
4
+ import { getBpDisplayStr } from '@jbrowse/core/util';
4
5
  import { observer } from 'mobx-react';
5
6
  import RBush from 'rbush';
7
+ import { minElt } from './util';
8
+ import { makeSimpleAltString } from '../../VcfFeature/util';
6
9
  const MultiVariantRendering = observer(function (props) {
7
- const { totalHeight, scrollTop } = props;
10
+ const { featureGenotypeMap, totalHeight, scrollTop } = props;
8
11
  const { rbush, displayModel } = props;
9
12
  const ref = useRef(null);
10
13
  const rbush2 = useMemo(() => new RBush().fromJSON(rbush), [rbush]);
11
14
  function getFeatureUnderMouse(eventClientX, eventClientY) {
12
- var _a;
13
15
  let offsetX = 0;
14
16
  let offsetY = 0;
15
17
  if (ref.current) {
16
18
  const r = ref.current.getBoundingClientRect();
17
19
  offsetX = eventClientX - r.left;
18
- offsetY = eventClientY - r.top;
20
+ offsetY = eventClientY - r.top - ((displayModel === null || displayModel === void 0 ? void 0 : displayModel.scrollTop) || 0);
19
21
  }
20
- const ret = rbush2.search({
22
+ const x = rbush2.search({
21
23
  minX: offsetX,
22
- maxX: offsetX + 3,
24
+ maxX: offsetX + 1,
23
25
  minY: offsetY,
24
- maxY: offsetY + 3,
26
+ maxY: offsetY + 1,
25
27
  });
26
- return (_a = ret[0]) === null || _a === void 0 ? void 0 : _a.genotype;
28
+ if (x.length) {
29
+ const { minX, minY, maxX, maxY, genotype, featureId, ...rest } = minElt(x, elt => elt.maxX - elt.minX);
30
+ const ret = featureGenotypeMap[featureId];
31
+ if (ret) {
32
+ const { ref, alt, name, description, length } = ret;
33
+ const alleles = makeSimpleAltString(genotype, ref, alt);
34
+ return {
35
+ ...rest,
36
+ genotype,
37
+ alleles,
38
+ featureName: name,
39
+ description: alt.length >= 3 ? 'multiple ALT alleles' : description,
40
+ length: getBpDisplayStr(length),
41
+ };
42
+ }
43
+ }
44
+ return undefined;
27
45
  }
28
46
  return (_jsx("div", { ref: ref, onMouseMove: e => {
29
47
  var _a;
@@ -0,0 +1 @@
1
+ export declare function minElt<T>(arr: Iterable<T>, cb: (arg: T) => number): T | undefined;
@@ -0,0 +1,12 @@
1
+ export function minElt(arr, cb) {
2
+ let min = Infinity;
3
+ let minElement;
4
+ for (const entry of arr) {
5
+ const val = cb(entry);
6
+ if (val < min) {
7
+ min = val;
8
+ minElement = entry;
9
+ }
10
+ }
11
+ return minElement;
12
+ }
@@ -1,5 +1,5 @@
1
1
  import MultiVariantRenderer from './MultiVariantRenderer';
2
- import ReactComponent from './components/MultiVariantRendering';
2
+ import ReactComponent from './components/MultiLinearVariantRendering';
3
3
  import configSchema from './configSchema';
4
4
  export default function MultiVariantRendererF(pluginManager) {
5
5
  pluginManager.addRendererType(() => {
@@ -1,4 +1,13 @@
1
1
  import type { MultiRenderArgsDeserialized } from './types';
2
2
  export declare function makeImageData(ctx: CanvasRenderingContext2D, props: MultiRenderArgsDeserialized): Promise<{
3
3
  rbush: any;
4
+ featureGenotypeMap: {
5
+ [k: string]: {
6
+ alt: any;
7
+ ref: any;
8
+ name: any;
9
+ description: any;
10
+ length: number;
11
+ };
12
+ };
4
13
  }>;
@@ -1,4 +1,4 @@
1
- import { featureSpanPx } from '@jbrowse/core/util';
1
+ import { featureSpanPx, forEachWithStopTokenCheck } from '@jbrowse/core/util';
2
2
  import { checkStopToken } from '@jbrowse/core/util/stopToken';
3
3
  import RBush from 'rbush';
4
4
  import { f2 } from '../shared/constants';
@@ -6,56 +6,88 @@ import { drawColorAlleleCount } from '../shared/drawAlleleCount';
6
6
  import { drawPhased } from '../shared/drawPhased';
7
7
  import { getFeaturesThatPassMinorAlleleFrequencyFilter } from '../shared/minorAlleleFrequencyUtils';
8
8
  export async function makeImageData(ctx, props) {
9
- const { scrollTop, minorAlleleFrequencyFilter, sources, rowHeight, features, regions, bpPerPx, renderingMode, stopToken, } = props;
9
+ const { scrollTop, minorAlleleFrequencyFilter, sources, rowHeight, features, regions, bpPerPx, renderingMode, stopToken, lengthCutoffFilter, referenceDrawingMode, } = props;
10
10
  const region = regions[0];
11
11
  checkStopToken(stopToken);
12
- const mafs = getFeaturesThatPassMinorAlleleFrequencyFilter(features.values(), minorAlleleFrequencyFilter);
12
+ const mafs = getFeaturesThatPassMinorAlleleFrequencyFilter({
13
+ stopToken,
14
+ features: features.values(),
15
+ minorAlleleFrequencyFilter,
16
+ lengthCutoffFilter,
17
+ });
13
18
  checkStopToken(stopToken);
14
19
  const rbush = new RBush();
15
- let start = performance.now();
16
- for (const { mostFrequentAlt, feature } of mafs) {
17
- if (performance.now() - start > 400) {
18
- checkStopToken(stopToken);
19
- start = performance.now();
20
- }
20
+ forEachWithStopTokenCheck(mafs, stopToken, ({ mostFrequentAlt, feature }) => {
21
21
  const [leftPx, rightPx] = featureSpanPx(feature, region, bpPerPx);
22
22
  const w = Math.max(Math.round(rightPx - leftPx), 2);
23
23
  const samp = feature.get('genotypes');
24
24
  let y = -scrollTop;
25
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') {
26
+ if (renderingMode === 'phased') {
27
+ for (let j = 0; j < s; j++) {
28
+ const { name, HP } = sources[j];
29
+ const genotype = samp[name];
30
+ const x = Math.floor(leftPx);
31
+ const h = Math.max(rowHeight, 1);
32
+ if (genotype) {
33
+ const isPhased = genotype.includes('|');
41
34
  if (isPhased) {
42
35
  const alleles = genotype.split('|');
43
- drawPhased(alleles, ctx, x, y, w, h, HP);
36
+ if (drawPhased(alleles, ctx, x, y, w, h, HP, undefined, referenceDrawingMode === 'draw')) {
37
+ rbush.insert({
38
+ minX: x,
39
+ maxX: x + w,
40
+ minY: y,
41
+ maxY: y + h,
42
+ genotype,
43
+ name,
44
+ featureId: feature.id(),
45
+ });
46
+ }
44
47
  }
45
48
  else {
46
49
  ctx.fillStyle = 'black';
47
50
  ctx.fillRect(x - f2, y - f2, w + f2, h + f2);
48
51
  }
49
52
  }
50
- else {
53
+ y += rowHeight;
54
+ }
55
+ }
56
+ else {
57
+ for (let j = 0; j < s; j++) {
58
+ const { name } = sources[j];
59
+ const genotype = samp[name];
60
+ const x = Math.floor(leftPx);
61
+ const h = Math.max(rowHeight, 1);
62
+ if (genotype) {
51
63
  const alleles = genotype.split(/[/|]/);
52
- drawColorAlleleCount(alleles, ctx, x, y, w, h, mostFrequentAlt);
64
+ if (drawColorAlleleCount(alleles, ctx, x, y, w, h, mostFrequentAlt, referenceDrawingMode === 'draw', feature.get('type'), feature.get('strand'), 0.75)) {
65
+ rbush.insert({
66
+ minX: x,
67
+ maxX: x + w,
68
+ minY: y,
69
+ maxY: y + h,
70
+ genotype,
71
+ name,
72
+ featureId: feature.id(),
73
+ });
74
+ }
53
75
  }
76
+ y += rowHeight;
54
77
  }
55
- y += rowHeight;
56
78
  }
57
- }
79
+ });
58
80
  return {
59
81
  rbush: rbush.toJSON(),
82
+ featureGenotypeMap: Object.fromEntries(mafs.map(({ feature }) => [
83
+ feature.id(),
84
+ {
85
+ alt: feature.get('ALT'),
86
+ ref: feature.get('REF'),
87
+ name: feature.get('name'),
88
+ description: feature.get('description'),
89
+ length: feature.get('end') - feature.get('start'),
90
+ },
91
+ ])),
60
92
  };
61
93
  }
@@ -16,4 +16,5 @@ export interface MultiRenderArgsDeserialized extends RenderArgsDeserializedWithF
16
16
  rowHeight: number;
17
17
  scrollTop: number;
18
18
  minorAlleleFrequencyFilter: number;
19
+ lengthCutoffFilter: number;
19
20
  }
@@ -17,9 +17,11 @@ const SplitVcfTabixAdapter = ConfigurationSchema('SplitVcfTabixAdapter', {
17
17
  type: 'fileLocation',
18
18
  defaultValue: {
19
19
  uri: '/path/to/samples.tsv',
20
- description: 'tsv with header like name\tpopulation\tetc. where the first column is required, and is the sample names',
20
+ description: 'tsv with header like "name\tpopulation\tetc" where the first column is required, and corresponds to the sample names in the VCF files',
21
21
  locationType: 'UriLocation',
22
22
  },
23
23
  },
24
- }, { explicitlyTyped: true });
24
+ }, {
25
+ explicitlyTyped: true,
26
+ });
25
27
  export default SplitVcfTabixAdapter;
@@ -0,0 +1,4 @@
1
+ export default function AltFormatter({ value, ref, }: {
2
+ value: string;
3
+ ref: string;
4
+ }): string | import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,10 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useState } from 'react';
3
+ import { getMinimalDesc } from '../VcfFeature/util';
4
+ export default function AltFormatter({ value, ref, }) {
5
+ const [show, setShow] = useState(false);
6
+ const alt = getMinimalDesc(ref, value);
7
+ return alt !== value ? (_jsxs("div", { children: [_jsx("button", { onClick: () => {
8
+ setShow(!show);
9
+ }, children: show ? 'Show simplified ALT' : 'Show raw ALT' }), ' ', show ? value : getMinimalDesc(ref, value)] })) : (value);
10
+ }
@@ -1,12 +1,5 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
- import { Checkbox, FormControlLabel } from '@mui/material';
3
- import { makeStyles } from 'tss-react/mui';
4
- const useStyles = makeStyles()({
5
- block: {
6
- display: 'block',
7
- },
8
- });
2
+ import { Checkbox, FormControlLabel, Typography } from '@mui/material';
9
3
  export default function Checkbox2({ checked, disabled, label, onChange, }) {
10
- const { classes } = useStyles();
11
- return (_jsx(FormControlLabel, { disabled: disabled, className: classes.block, control: _jsx(Checkbox, { checked: checked, onChange: onChange }), label: label }));
4
+ return (_jsx(FormControlLabel, { disabled: disabled, control: _jsx(Checkbox, { checked: checked, onChange: onChange }), label: _jsx(Typography, { variant: "body2", children: label }) }));
12
5
  }
@@ -0,0 +1,3 @@
1
+ export default function Formatter({ value }: {
2
+ value: unknown;
3
+ }): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,17 @@
1
+ import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useState } from 'react';
3
+ import copy from 'copy-to-clipboard';
4
+ export default function Formatter({ value }) {
5
+ const [show, setShow] = useState(false);
6
+ const [copied, setCopied] = useState(false);
7
+ const display = String(value);
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 }));
17
+ }
@@ -2,16 +2,14 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { useState } from 'react';
3
3
  import { measureGridWidth } from '@jbrowse/core/util';
4
4
  import { Checkbox, FormControlLabel, Typography } from '@mui/material';
5
- import { DataGrid, GridToolbar } from '@mui/x-data-grid';
5
+ import { DataGrid } from '@mui/x-data-grid';
6
6
  export default function VariantConsequenceDataGridWrapper({ rows, columns, }) {
7
7
  const [checked, setChecked] = useState(false);
8
8
  const widths = columns.map(e => measureGridWidth(rows.map(r => r[e.field])));
9
- return rows.length ? (_jsxs("div", { children: [_jsx(FormControlLabel, { control: _jsx(Checkbox, { checked: checked, onChange: event => {
9
+ return rows.length ? (_jsxs("div", { children: [_jsx(FormControlLabel, { label: _jsx(Typography, { variant: "body2", children: "Show options" }), control: _jsx(Checkbox, { checked: checked, onChange: event => {
10
10
  setChecked(event.target.checked);
11
- } }), label: _jsx(Typography, { variant: "body2", children: "Show options" }) }), _jsx(DataGrid, { rowHeight: 25, rows: rows, columns: columns.map((c, i) => ({
11
+ } }) }), _jsx(DataGrid, { rowHeight: 25, hideFooter: rows.length < 100, rows: rows, showToolbar: checked, columns: columns.map((c, i) => ({
12
12
  ...c,
13
13
  width: widths[i],
14
- })), slots: {
15
- toolbar: checked ? GridToolbar : null,
16
- } })] })) : null;
14
+ })) })] })) : null;
17
15
  }
@@ -4,10 +4,12 @@ import { parseBreakend } from '@gmod/vcf';
4
4
  import FeatureDetails from '@jbrowse/core/BaseFeatureWidget/BaseFeatureDetail/FeatureDetails';
5
5
  import { Paper } from '@mui/material';
6
6
  import { observer } from 'mobx-react';
7
+ import AltFormatter from './AltFormatter';
8
+ import Formatter from './Formatter';
7
9
  import VariantSampleGrid from './VariantSampleGrid/VariantSampleGrid';
8
10
  import { variantFieldDescriptions } from './variantFieldDescriptions';
9
11
  const LaunchBreakendPanel = lazy(() => import('./LaunchBreakendPanel/LaunchBreakendPanel'));
10
- const VariantConsequenceDataGrid = lazy(() => import('./VariantConsequenceDataGrid'));
12
+ const VariantConsequenceDataGrid = lazy(() => import('./VariantConsequence/VariantConsequenceDataGrid'));
11
13
  function AnnPanel({ descriptions, feature, }) {
12
14
  var _a, _b, _c, _d, _e;
13
15
  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;
@@ -46,10 +48,13 @@ const VariantFeatureWidget = observer(function (props) {
46
48
  const { model } = props;
47
49
  const { featureData, descriptions } = model;
48
50
  const feat = JSON.parse(JSON.stringify(featureData));
49
- const { samples, ALT, ...rest } = feat;
51
+ const { samples, ...rest } = feat;
52
+ const { REF } = rest;
50
53
  return (_jsxs(Paper, { "data-testid": "variant-side-drawer", children: [_jsx(FeatureDetails, { feature: rest, descriptions: {
51
54
  ...variantFieldDescriptions,
52
55
  ...descriptions,
56
+ }, formatter: (value, key) => {
57
+ return key === 'ALT' ? (_jsx(AltFormatter, { value: `${value}`, ref: REF })) : (_jsx(Formatter, { value: value }));
53
58
  }, ...props }), _jsxs(Suspense, { fallback: null, children: [_jsx(CsqPanel, { feature: rest, descriptions: descriptions }), _jsx(AnnPanel, { feature: rest, descriptions: descriptions }), _jsx(LaunchBreakendWidgetArea, { model: model })] }), _jsx(VariantSampleGrid, { feature: feat, ...props, descriptions: descriptions })] }));
54
59
  });
55
60
  export default VariantFeatureWidget;
@@ -0,0 +1,4 @@
1
+ import type { VariantSampleGridRow } from './types';
2
+ export default function VariantGenotypeFrequencyTable({ rows, }: {
3
+ rows: VariantSampleGridRow[];
4
+ }): import("react/jsx-runtime").JSX.Element;