react-msaview 9.1.0 → 9.1.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/bundle/index.js +111 -115
- package/bundle/index.js.map +4 -4
- package/dist/blosum62.d.ts +3 -0
- package/dist/blosum62.js +43 -0
- package/dist/blosum62.js.map +1 -0
- package/dist/colorSchemes.js +1 -0
- package/dist/colorSchemes.js.map +1 -1
- package/dist/components/Loading.d.ts +3 -2
- package/dist/components/Loading.js +2 -2
- package/dist/components/Loading.js.map +1 -1
- package/dist/components/MSAView.d.ts +3 -2
- package/dist/components/MSAView.js +7 -4
- package/dist/components/MSAView.js.map +1 -1
- package/dist/components/MSAViewer.d.ts +62 -12
- package/dist/components/MetadataTable.d.ts +4 -1
- package/dist/components/MetadataTable.js +55 -16
- package/dist/components/MetadataTable.js.map +1 -1
- package/dist/components/Track.js +6 -0
- package/dist/components/Track.js.map +1 -1
- package/dist/components/controls.js +2 -1
- package/dist/components/controls.js.map +1 -1
- package/dist/components/dialogs/AnnotationFileDialog.js +7 -2
- package/dist/components/dialogs/AnnotationFileDialog.js.map +1 -1
- package/dist/components/dialogs/FeatureDialog.js +2 -2
- package/dist/components/dialogs/FeatureDialog.js.map +1 -1
- package/dist/components/{header/MSASettingsMenu.d.ts → dialogs/GapThresholdDialog.d.ts} +3 -2
- package/dist/components/dialogs/GapThresholdDialog.js +15 -0
- package/dist/components/dialogs/GapThresholdDialog.js.map +1 -0
- package/dist/components/{header → dialogs}/GappynessSlider.d.ts +1 -1
- package/dist/components/{header → dialogs}/GappynessSlider.js +3 -10
- package/dist/components/dialogs/GappynessSlider.js.map +1 -0
- package/dist/components/{header → dialogs}/GoToBox.d.ts +4 -2
- package/dist/components/dialogs/GoToBox.js +48 -0
- package/dist/components/dialogs/GoToBox.js.map +1 -0
- package/dist/components/dialogs/GoToDialog.d.ts +6 -0
- package/dist/components/dialogs/GoToDialog.js +10 -0
- package/dist/components/dialogs/GoToDialog.js.map +1 -0
- package/dist/components/dialogs/MetadataDialog.js +11 -3
- package/dist/components/dialogs/MetadataDialog.js.map +1 -1
- package/dist/components/dialogs/goTo.d.ts +5 -0
- package/dist/components/{header → dialogs}/goTo.js +1 -1
- package/dist/components/dialogs/goTo.js.map +1 -0
- package/dist/components/dialogs/metadataLabels.d.ts +4 -0
- package/dist/components/dialogs/metadataLabels.js +52 -0
- package/dist/components/dialogs/metadataLabels.js.map +1 -0
- package/dist/components/dialogs/metadataRecord.d.ts +1 -0
- package/dist/components/dialogs/metadataRecord.js +38 -0
- package/dist/components/dialogs/metadataRecord.js.map +1 -0
- package/dist/components/header/Header.d.ts +6 -2
- package/dist/components/header/Header.js +30 -32
- package/dist/components/header/Header.js.map +1 -1
- package/dist/components/header/{TreeSettingsMenu.d.ts → HiddenColumnsChip.d.ts} +2 -2
- package/dist/components/header/HiddenColumnsChip.js +15 -0
- package/dist/components/header/HiddenColumnsChip.js.map +1 -0
- package/dist/components/header/MenuBar.d.ts +6 -0
- package/dist/components/header/MenuBar.js +33 -0
- package/dist/components/header/MenuBar.js.map +1 -0
- package/dist/components/header/ScrollZoomCheckbox.d.ts +7 -0
- package/dist/components/header/ScrollZoomCheckbox.js +19 -0
- package/dist/components/header/ScrollZoomCheckbox.js.map +1 -0
- package/dist/components/header/ZoomControls.js +10 -30
- package/dist/components/header/ZoomControls.js.map +1 -1
- package/dist/components/header/colorSchemeMenuItems.d.ts +4 -0
- package/dist/components/header/colorSchemeMenuItems.js +106 -0
- package/dist/components/header/colorSchemeMenuItems.js.map +1 -0
- package/dist/components/header/getAnnotationsMenu.d.ts +3 -30
- package/dist/components/header/getAnnotationsMenu.js +48 -54
- package/dist/components/header/getAnnotationsMenu.js.map +1 -1
- package/dist/components/header/menuBarItems.d.ts +11 -0
- package/dist/components/header/menuBarItems.js +277 -0
- package/dist/components/header/menuBarItems.js.map +1 -0
- package/dist/components/import/ImportForm.js +12 -6
- package/dist/components/import/ImportForm.js.map +1 -1
- package/dist/components/minimap/Minimap.js +7 -3
- package/dist/components/minimap/Minimap.js.map +1 -1
- package/dist/components/minimap/MinimapSVG.js +2 -1
- package/dist/components/minimap/MinimapSVG.js.map +1 -1
- package/dist/components/minimap/minimapLayout.d.ts +12 -0
- package/dist/components/minimap/minimapLayout.js +20 -0
- package/dist/components/minimap/minimapLayout.js.map +1 -1
- package/dist/components/msa/MSACanvas.js +26 -9
- package/dist/components/msa/MSACanvas.js.map +1 -1
- package/dist/components/msa/MSACanvasBlock.js +15 -11
- package/dist/components/msa/MSACanvasBlock.js.map +1 -1
- package/dist/components/msa/MSAMouseoverCanvas.js +2 -2
- package/dist/components/msa/MSAMouseoverCanvas.js.map +1 -1
- package/dist/components/msa/WheelZoomHint.d.ts +7 -0
- package/dist/components/msa/WheelZoomHint.js +38 -0
- package/dist/components/msa/WheelZoomHint.js.map +1 -0
- package/dist/components/msa/msaKeys.js +3 -0
- package/dist/components/msa/msaKeys.js.map +1 -1
- package/dist/components/msa/msaRaster.d.ts +4 -5
- package/dist/components/msa/msaRaster.js +5 -5
- package/dist/components/msa/msaRaster.js.map +1 -1
- package/dist/components/msa/renderBoxFeatureCanvasBlock.js +22 -2
- package/dist/components/msa/renderBoxFeatureCanvasBlock.js.map +1 -1
- package/dist/components/msa/renderHighlights.d.ts +0 -3
- package/dist/components/msa/renderHighlights.js +3 -3
- package/dist/components/msa/renderHighlights.js.map +1 -1
- package/dist/components/msa/renderMSABlock.d.ts +6 -1
- package/dist/components/msa/renderMSABlock.js +44 -17
- package/dist/components/msa/renderMSABlock.js.map +1 -1
- package/dist/components/msa/tileColor.js +7 -0
- package/dist/components/msa/tileColor.js.map +1 -1
- package/dist/components/rowpanels/RowPanelBlock.js +2 -2
- package/dist/components/rowpanels/RowPanelBlock.js.map +1 -1
- package/dist/components/settings/MenuItemsForm.d.ts +10 -0
- package/dist/components/settings/MenuItemsForm.js +80 -0
- package/dist/components/settings/MenuItemsForm.js.map +1 -0
- package/dist/components/settings/SettingsPanel.d.ts +12 -0
- package/dist/components/settings/SettingsPanel.js +92 -0
- package/dist/components/settings/SettingsPanel.js.map +1 -0
- package/dist/components/{header/FileMenu.d.ts → settings/TrackList.d.ts} +2 -2
- package/dist/components/settings/TrackList.js +55 -0
- package/dist/components/settings/TrackList.js.map +1 -0
- package/dist/components/tracks/TrackBlocks.js +2 -2
- package/dist/components/tracks/TrackBlocks.js.map +1 -1
- package/dist/components/tree/TreeCanvasBlock.js +2 -2
- package/dist/components/tree/TreeCanvasBlock.js.map +1 -1
- package/dist/components/tree/TreeMenu.js +4 -6
- package/dist/components/tree/TreeMenu.js.map +1 -1
- package/dist/components/tree/TreeOverview.js +2 -2
- package/dist/components/tree/TreeOverview.js.map +1 -1
- package/dist/constants.d.ts +4 -1
- package/dist/constants.js +7 -1
- package/dist/constants.js.map +1 -1
- package/dist/darkReader.d.ts +7 -0
- package/dist/darkReader.js +42 -0
- package/dist/darkReader.js.map +1 -0
- package/dist/element.js +22 -47
- package/dist/element.js.map +1 -1
- package/dist/featurePanels.d.ts +37 -0
- package/dist/featurePanels.js +187 -0
- package/dist/featurePanels.js.map +1 -0
- package/dist/filehandleLoader.d.ts +41 -0
- package/dist/filehandleLoader.js +99 -0
- package/dist/filehandleLoader.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/model/treeModel.d.ts +9 -0
- package/dist/model/treeModel.js +12 -1
- package/dist/model/treeModel.js.map +1 -1
- package/dist/model.d.ts +142 -32
- package/dist/model.js +268 -569
- package/dist/model.js.map +1 -1
- package/dist/neighborJoining.js +1 -40
- package/dist/neighborJoining.js.map +1 -1
- package/dist/renderToSvg.js +1 -13
- package/dist/renderToSvg.js.map +1 -1
- package/dist/rerootTree.d.ts +1 -0
- package/dist/rerootTree.js +7 -6
- package/dist/rerootTree.js.map +1 -1
- package/dist/schemeResidueColor.d.ts +12 -0
- package/dist/schemeResidueColor.js +33 -0
- package/dist/schemeResidueColor.js.map +1 -0
- package/dist/similarityColors.d.ts +11 -0
- package/dist/similarityColors.js +90 -0
- package/dist/similarityColors.js.map +1 -0
- package/dist/svgTestUtil.d.ts +62 -12
- package/dist/treeDisplay.d.ts +37 -0
- package/dist/treeDisplay.js +209 -0
- package/dist/treeDisplay.js.map +1 -0
- package/dist/types.d.ts +6 -2
- package/dist/useWheelScroll.d.ts +3 -1
- package/dist/useWheelScroll.js +36 -17
- package/dist/useWheelScroll.js.map +1 -1
- package/dist/util.d.ts +2 -0
- package/dist/util.js +2 -0
- package/dist/util.js.map +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/dist/wheelZoom.d.ts +8 -3
- package/dist/wheelZoom.js +44 -32
- package/dist/wheelZoom.js.map +1 -1
- package/dist/zoomSnapshot.d.ts +29 -0
- package/dist/zoomSnapshot.js +47 -0
- package/dist/zoomSnapshot.js.map +1 -0
- package/package.json +11 -11
- package/src/blosum62.ts +45 -0
- package/src/colorSchemes.ts +1 -0
- package/src/components/Loading.tsx +6 -2
- package/src/components/MSAView.tsx +22 -5
- package/src/components/MetadataTable.tsx +83 -26
- package/src/components/Track.tsx +13 -0
- package/src/components/controls.ts +2 -1
- package/src/components/dialogs/AnnotationFileDialog.tsx +12 -1
- package/src/components/dialogs/FeatureDialog.tsx +2 -5
- package/src/components/dialogs/GapThresholdDialog.tsx +36 -0
- package/src/components/{header → dialogs}/GappynessSlider.tsx +3 -10
- package/src/components/{header → dialogs}/GoToBox.tsx +36 -10
- package/src/components/dialogs/GoToDialog.tsx +30 -0
- package/src/components/dialogs/MetadataDialog.tsx +32 -4
- package/src/components/{header → dialogs}/goTo.ts +1 -1
- package/src/components/dialogs/metadataLabels.ts +54 -0
- package/src/components/dialogs/metadataRecord.tsx +61 -0
- package/src/components/header/Header.tsx +75 -42
- package/src/components/header/HiddenColumnsChip.tsx +39 -0
- package/src/components/header/MenuBar.tsx +64 -0
- package/src/components/header/ScrollZoomCheckbox.tsx +46 -0
- package/src/components/header/ZoomControls.tsx +20 -35
- package/src/components/header/colorSchemeMenuItems.ts +121 -0
- package/src/components/header/getAnnotationsMenu.ts +52 -56
- package/src/components/header/menuBarItems.ts +357 -0
- package/src/components/import/ImportForm.tsx +19 -7
- package/src/components/minimap/Minimap.tsx +11 -3
- package/src/components/minimap/MinimapSVG.tsx +17 -1
- package/src/components/minimap/minimapLayout.ts +27 -0
- package/src/components/msa/MSACanvas.tsx +22 -3
- package/src/components/msa/MSACanvasBlock.tsx +18 -11
- package/src/components/msa/MSAMouseoverCanvas.tsx +2 -2
- package/src/components/msa/WheelZoomHint.tsx +56 -0
- package/src/components/msa/msaKeys.ts +3 -0
- package/src/components/msa/msaRaster.ts +6 -8
- package/src/components/msa/renderBoxFeatureCanvasBlock.ts +28 -5
- package/src/components/msa/renderHighlights.ts +3 -3
- package/src/components/msa/renderMSABlock.ts +51 -15
- package/src/components/msa/tileColor.ts +7 -0
- package/src/components/rowpanels/RowPanelBlock.tsx +2 -2
- package/src/components/settings/MenuItemsForm.tsx +225 -0
- package/src/components/settings/SettingsPanel.tsx +156 -0
- package/src/components/settings/TrackList.tsx +119 -0
- package/src/components/tracks/TrackBlocks.tsx +2 -2
- package/src/components/tree/TreeCanvasBlock.tsx +2 -2
- package/src/components/tree/TreeMenu.tsx +4 -6
- package/src/components/tree/TreeOverview.tsx +2 -2
- package/src/constants.ts +9 -1
- package/src/darkReader.ts +57 -0
- package/src/element.ts +34 -57
- package/src/featurePanels.ts +269 -0
- package/src/filehandleLoader.ts +136 -0
- package/src/index.ts +4 -0
- package/src/model/treeModel.ts +13 -0
- package/src/model.ts +345 -748
- package/src/neighborJoining.ts +1 -42
- package/src/renderToSvg.tsx +1 -13
- package/src/rerootTree.ts +7 -6
- package/src/schemeResidueColor.ts +37 -0
- package/src/similarityColors.ts +112 -0
- package/src/treeDisplay.ts +278 -0
- package/src/types.ts +6 -3
- package/src/useWheelScroll.ts +43 -22
- package/src/util.ts +3 -0
- package/src/version.ts +1 -1
- package/src/wheelZoom.ts +55 -33
- package/src/zoomSnapshot.ts +80 -0
- package/dist/components/header/ColorSchemeMenu.d.ts +0 -12
- package/dist/components/header/ColorSchemeMenu.js +0 -37
- package/dist/components/header/ColorSchemeMenu.js.map +0 -1
- package/dist/components/header/FileMenu.js +0 -92
- package/dist/components/header/FileMenu.js.map +0 -1
- package/dist/components/header/GappynessSlider.js.map +0 -1
- package/dist/components/header/GoToBox.js +0 -31
- package/dist/components/header/GoToBox.js.map +0 -1
- package/dist/components/header/MSASettingsMenu.js +0 -11
- package/dist/components/header/MSASettingsMenu.js.map +0 -1
- package/dist/components/header/ScrollZoomIcons.d.ts +0 -6
- package/dist/components/header/ScrollZoomIcons.js +0 -35
- package/dist/components/header/ScrollZoomIcons.js.map +0 -1
- package/dist/components/header/TreeSettingsMenu.js +0 -11
- package/dist/components/header/TreeSettingsMenu.js.map +0 -1
- package/dist/components/header/goTo.d.ts +0 -20
- package/dist/components/header/goTo.js.map +0 -1
- package/dist/components/header/settingsMenuItems.d.ts +0 -5
- package/dist/components/header/settingsMenuItems.js +0 -171
- package/dist/components/header/settingsMenuItems.js.map +0 -1
- package/src/components/header/ColorSchemeMenu.tsx +0 -56
- package/src/components/header/FileMenu.tsx +0 -107
- package/src/components/header/MSASettingsMenu.tsx +0 -26
- package/src/components/header/ScrollZoomIcons.tsx +0 -52
- package/src/components/header/TreeSettingsMenu.tsx +0 -30
- package/src/components/header/settingsMenuItems.ts +0 -216
|
@@ -1,29 +1,68 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import { makeStyles } from '@jbrowse/core/util/tss-react';
|
|
3
|
-
|
|
4
|
-
|
|
3
|
+
const useStyles = makeStyles()(theme => ({
|
|
4
|
+
list: {
|
|
5
|
+
display: 'grid',
|
|
6
|
+
gridTemplateColumns: 'minmax(8em, max-content) minmax(0, 1fr)',
|
|
7
|
+
columnGap: theme.spacing(3),
|
|
8
|
+
margin: 0,
|
|
9
|
+
},
|
|
10
|
+
row: {
|
|
11
|
+
display: 'contents',
|
|
12
|
+
},
|
|
5
13
|
key: {
|
|
6
|
-
fontWeight:
|
|
7
|
-
|
|
14
|
+
fontWeight: 600,
|
|
15
|
+
padding: theme.spacing(0.75, 0),
|
|
16
|
+
borderTop: `1px solid ${theme.palette.divider}`,
|
|
17
|
+
},
|
|
18
|
+
code: {
|
|
19
|
+
marginLeft: theme.spacing(1),
|
|
20
|
+
fontWeight: 400,
|
|
21
|
+
fontSize: '0.75em',
|
|
22
|
+
fontFamily: 'monospace',
|
|
23
|
+
color: theme.palette.text.secondary,
|
|
8
24
|
},
|
|
9
25
|
value: {
|
|
26
|
+
margin: 0,
|
|
27
|
+
padding: theme.spacing(0.75, 0),
|
|
28
|
+
borderTop: `1px solid ${theme.palette.divider}`,
|
|
10
29
|
whiteSpace: 'pre-wrap',
|
|
11
|
-
|
|
30
|
+
overflowWrap: 'anywhere',
|
|
31
|
+
},
|
|
32
|
+
mono: {
|
|
33
|
+
fontFamily: 'monospace',
|
|
34
|
+
fontSize: '0.85em',
|
|
35
|
+
maxHeight: '8em',
|
|
36
|
+
overflow: 'auto',
|
|
37
|
+
},
|
|
38
|
+
nested: {
|
|
39
|
+
'& > dl': {
|
|
40
|
+
paddingLeft: theme.spacing(2),
|
|
41
|
+
borderLeft: `2px solid ${theme.palette.divider}`,
|
|
42
|
+
},
|
|
12
43
|
},
|
|
13
|
-
});
|
|
14
|
-
function isRecord(value) {
|
|
15
|
-
return typeof value === 'object' &&
|
|
44
|
+
}));
|
|
45
|
+
export function isRecord(value) {
|
|
46
|
+
return (typeof value === 'object' &&
|
|
47
|
+
value !== null &&
|
|
48
|
+
!Array.isArray(value) &&
|
|
49
|
+
!React.isValidElement(value));
|
|
16
50
|
}
|
|
17
51
|
export function isEmpty(value) {
|
|
18
52
|
return isRecord(value) && Object.keys(value).length === 0;
|
|
19
53
|
}
|
|
20
|
-
export default function MetadataTable({ record, }) {
|
|
21
|
-
const { classes } = useStyles();
|
|
22
|
-
return (React.createElement(
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
54
|
+
export default function MetadataTable({ record, labels = {}, monospaceKeys, }) {
|
|
55
|
+
const { classes, cx } = useStyles();
|
|
56
|
+
return (React.createElement("dl", { className: classes.list }, Object.entries(record)
|
|
57
|
+
.filter(([, value]) => value != null && !isEmpty(value))
|
|
58
|
+
.map(([key, value]) => {
|
|
59
|
+
const label = labels[key];
|
|
60
|
+
const nested = isRecord(value);
|
|
61
|
+
return (React.createElement("div", { key: key, className: classes.row },
|
|
62
|
+
React.createElement("dt", { className: classes.key },
|
|
63
|
+
label ?? key,
|
|
64
|
+
label && label !== key ? (React.createElement("span", { className: classes.code }, key)) : null),
|
|
65
|
+
React.createElement("dd", { className: cx(classes.value, nested && classes.nested, monospaceKeys?.has(key) && classes.mono) }, nested ? (React.createElement(MetadataTable, { record: value, labels: labels, monospaceKeys: monospaceKeys })) : Array.isArray(value) ? (value.join('\n')) : React.isValidElement(value) ? (value) : (String(value)))));
|
|
66
|
+
})));
|
|
28
67
|
}
|
|
29
68
|
//# sourceMappingURL=MetadataTable.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MetadataTable.js","sourceRoot":"","sources":["../../src/components/MetadataTable.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,OAAO,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAA;
|
|
1
|
+
{"version":3,"file":"MetadataTable.js","sourceRoot":"","sources":["../../src/components/MetadataTable.tsx"],"names":[],"mappings":"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"}
|
package/dist/components/Track.js
CHANGED
|
@@ -2,6 +2,7 @@ import React, { lazy, useCallback, useRef, useState } from 'react';
|
|
|
2
2
|
import BaseTooltip from '@jbrowse/core/ui/BaseTooltip';
|
|
3
3
|
import { makeStyles } from '@jbrowse/core/util/tss-react';
|
|
4
4
|
import ArrowDropDownIcon from '@mui/icons-material/ArrowDropDown';
|
|
5
|
+
import CloseIcon from '@mui/icons-material/Close';
|
|
5
6
|
import { IconButton, Menu, MenuItem } from '@mui/material';
|
|
6
7
|
import { observer } from 'mobx-react';
|
|
7
8
|
import { useWheelScroll } from '../useWheelScroll.js';
|
|
@@ -35,6 +36,7 @@ const TrackLabel = observer(function TrackLabel({ model, track, }) {
|
|
|
35
36
|
const { model: { name, height }, } = track;
|
|
36
37
|
const { classes } = useStyles();
|
|
37
38
|
const trackLabelHeight = Math.min(height, fontSize);
|
|
39
|
+
const closeSize = Math.min(height, Math.max(fontSize, 16));
|
|
38
40
|
return (React.createElement("div", { style: {
|
|
39
41
|
width,
|
|
40
42
|
height,
|
|
@@ -50,6 +52,10 @@ const TrackLabel = observer(function TrackLabel({ model, track, }) {
|
|
|
50
52
|
textOverflow: 'ellipsis',
|
|
51
53
|
whiteSpace: 'nowrap',
|
|
52
54
|
} }, drawLabels ? name : ''),
|
|
55
|
+
React.createElement(IconButton, { className: classes.button, "aria-label": `Hide ${name} track`, title: "Hide track", style: { width: closeSize, height: closeSize, flexShrink: 0 }, onClick: () => {
|
|
56
|
+
model.toggleTrack(track.model.id);
|
|
57
|
+
} },
|
|
58
|
+
React.createElement(CloseIcon, { style: { fontSize: closeSize * 0.8 } })),
|
|
53
59
|
React.createElement(IconButton, { className: classes.button, "aria-label": `${name} track menu`, style: {
|
|
54
60
|
width: trackLabelHeight,
|
|
55
61
|
height: trackLabelHeight,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Track.js","sourceRoot":"","sources":["../../src/components/Track.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AAElE,OAAO,WAAW,MAAM,8BAA8B,CAAA;AACtD,OAAO,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAA;AACzD,OAAO,iBAAiB,MAAM,mCAAmC,CAAA;AACjE,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AAC1D,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AAErC,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AACrD,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAA;AAC3C,OAAO,WAAW,MAAM,yBAA0B,CAAA;AAClD,OAAO,mBAAmB,MAAM,iCAAkC,CAAA;AAClE,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAA;AAKzD,MAAM,eAAe,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,8BAA+B,CAAC,CAAC,CAAA;AAE3E,MAAM,SAAS,GAAG,UAAU,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IACvC,MAAM,EAAE;QACN,OAAO,EAAE,CAAC;KACX;IACD,0EAA0E;IAC1E,2EAA2E;IAC3E,6EAA6E;IAC7E,4EAA4E;IAC5E,8DAA8D;IAC9D,GAAG,EAAE;QACH,OAAO,EAAE,MAAM;QACf,oBAAoB,EAAE;YACpB,SAAS,EAAE,kBAAkB,KAAK,CAAC,OAAO,CAAC,OAAO,EAAE;SACrD;KACF;CACF,CAAC,CAAC,CAAA;AAEH,MAAM,UAAU,GAAG,QAAQ,CAAC,SAAS,UAAU,CAAC,EAC9C,KAAK,EACL,KAAK,GAIN;IACC,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,QAAQ,EAAqB,CAAA;IAC7D,MAAM,SAAS,GAAG,GAAG,EAAE;QACrB,WAAW,CAAC,SAAS,CAAC,CAAA;IACxB,CAAC,CAAA;IACD,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,sBAAsB,EAAE,KAAK,EAAE,GAAG,KAAK,CAAA;IACrE,MAAM,EACJ,KAAK,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,GACxB,GAAG,KAAK,CAAA;IACT,MAAM,EAAE,OAAO,EAAE,GAAG,SAAS,EAAE,CAAA;IAC/B,MAAM,gBAAgB,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAA;
|
|
1
|
+
{"version":3,"file":"Track.js","sourceRoot":"","sources":["../../src/components/Track.tsx"],"names":[],"mappings":"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"}
|
|
@@ -8,6 +8,7 @@ export const keyboardControls = [
|
|
|
8
8
|
shiftKey: true,
|
|
9
9
|
},
|
|
10
10
|
{ label: '+ and -', action: 'Zoom in and out', keys: ['+', '=', '-'] },
|
|
11
|
+
{ label: '0', action: 'Reset to the default cell size', keys: ['0'] },
|
|
11
12
|
{
|
|
12
13
|
label: 'Home and End',
|
|
13
14
|
action: 'Jump to the first and last column',
|
|
@@ -23,7 +24,7 @@ export const mouseControls = [
|
|
|
23
24
|
{ label: 'Drag', action: 'Pan the alignment' },
|
|
24
25
|
{
|
|
25
26
|
label: 'Wheel',
|
|
26
|
-
action: 'Scroll, or zoom
|
|
27
|
+
action: 'Scroll, or zoom with Zoom on scroll checked',
|
|
27
28
|
},
|
|
28
29
|
{ label: 'Ctrl + wheel', action: 'Zoom at the cursor' },
|
|
29
30
|
selectCells,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"controls.js","sourceRoot":"","sources":["../../src/components/controls.ts"],"names":[],"mappings":"AAUA,MAAM,MAAM,GAAG,CAAC,WAAW,EAAE,YAAY,EAAE,SAAS,EAAE,WAAW,CAAC,CAAA;AAElE,MAAM,CAAC,MAAM,gBAAgB,GAAiB;IAC5C,EAAE,KAAK,EAAE,YAAY,EAAE,MAAM,EAAE,iBAAiB,EAAE,IAAI,EAAE,MAAM,EAAE;IAChE;QACE,KAAK,EAAE,oBAAoB;QAC3B,MAAM,EAAE,iBAAiB;QACzB,IAAI,EAAE,MAAM;QACZ,QAAQ,EAAE,IAAI;KACf;IACD,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,iBAAiB,EAAE,IAAI,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE;IACtE;QACE,KAAK,EAAE,cAAc;QACrB,MAAM,EAAE,mCAAmC;QAC3C,IAAI,EAAE,CAAC,MAAM,EAAE,KAAK,CAAC;KACtB;IACD,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,qBAAqB,EAAE,IAAI,EAAE,CAAC,QAAQ,CAAC,EAAE;CACrE,CAAA;AAED,MAAM,WAAW,GAAY;IAC3B,KAAK,EAAE,cAAc;IACrB,MAAM,EAAE,yBAAyB;CAClC,CAAA;AAED,MAAM,CAAC,MAAM,aAAa,GAAc;IACtC,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,mBAAmB,EAAE;IAC9C;QACE,KAAK,EAAE,OAAO;QACd,MAAM,EAAE,
|
|
1
|
+
{"version":3,"file":"controls.js","sourceRoot":"","sources":["../../src/components/controls.ts"],"names":[],"mappings":"AAUA,MAAM,MAAM,GAAG,CAAC,WAAW,EAAE,YAAY,EAAE,SAAS,EAAE,WAAW,CAAC,CAAA;AAElE,MAAM,CAAC,MAAM,gBAAgB,GAAiB;IAC5C,EAAE,KAAK,EAAE,YAAY,EAAE,MAAM,EAAE,iBAAiB,EAAE,IAAI,EAAE,MAAM,EAAE;IAChE;QACE,KAAK,EAAE,oBAAoB;QAC3B,MAAM,EAAE,iBAAiB;QACzB,IAAI,EAAE,MAAM;QACZ,QAAQ,EAAE,IAAI;KACf;IACD,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,iBAAiB,EAAE,IAAI,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE;IACtE,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,gCAAgC,EAAE,IAAI,EAAE,CAAC,GAAG,CAAC,EAAE;IACrE;QACE,KAAK,EAAE,cAAc;QACrB,MAAM,EAAE,mCAAmC;QAC3C,IAAI,EAAE,CAAC,MAAM,EAAE,KAAK,CAAC;KACtB;IACD,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,qBAAqB,EAAE,IAAI,EAAE,CAAC,QAAQ,CAAC,EAAE;CACrE,CAAA;AAED,MAAM,WAAW,GAAY;IAC3B,KAAK,EAAE,cAAc;IACrB,MAAM,EAAE,yBAAyB;CAClC,CAAA;AAED,MAAM,CAAC,MAAM,aAAa,GAAc;IACtC,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,mBAAmB,EAAE;IAC9C;QACE,KAAK,EAAE,OAAO;QACd,MAAM,EAAE,6CAA6C;KACtD;IACD,EAAE,KAAK,EAAE,cAAc,EAAE,MAAM,EAAE,oBAAoB,EAAE;IACvD,WAAW;IACX;QACE,KAAK,EAAE,oBAAoB;QAC3B,MAAM,EAAE,4CAA4C;KACrD;IACD;QACE,KAAK,EAAE,mBAAmB;QAC1B,MAAM,EAAE,kDAAkD;KAC3D;IACD;QACE,KAAK,EAAE,yBAAyB;QAChC,MAAM,EAAE,uCAAuC;KAChD;IACD,EAAE,KAAK,EAAE,gBAAgB,EAAE,MAAM,EAAE,iCAAiC,EAAE;CACvE,CAAA;AAED,MAAM,CAAC,MAAM,kBAAkB,GAAG;IAChC,WAAW;IACX,GAAG,CAAC,GAAG,gBAAgB,EAAE,WAAW,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,MAAM,EAAE,CAAC;CAC1E,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA"}
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import React, { useState } from 'react';
|
|
2
2
|
import { Dialog, ErrorMessage } from '@jbrowse/core/ui';
|
|
3
|
-
import { Button, DialogActions, DialogContent, FormControl, FormControlLabel, Radio, RadioGroup, TextField, Typography, } from '@mui/material';
|
|
3
|
+
import { Button, DialogActions, DialogContent, FormControl, FormControlLabel, Link, Radio, RadioGroup, TextField, Typography, } from '@mui/material';
|
|
4
4
|
import { observer } from 'mobx-react';
|
|
5
5
|
import { annotationTextToGFF } from 'msa-parsers';
|
|
6
|
+
const domainsTutorial = 'https://gmod.org/JBrowseMSA/tutorials/protein_family';
|
|
6
7
|
async function fetchText(url) {
|
|
7
8
|
const response = await fetch(url);
|
|
8
9
|
if (!response.ok) {
|
|
@@ -25,7 +26,10 @@ const AnnotationFileDialog = observer(function ({ handleClose, model, }) {
|
|
|
25
26
|
}, open: true },
|
|
26
27
|
React.createElement(DialogContent, null,
|
|
27
28
|
error ? React.createElement(ErrorMessage, { error: error }) : null,
|
|
28
|
-
React.createElement(Typography, null,
|
|
29
|
+
React.createElement(Typography, null,
|
|
30
|
+
"Open a GFF3 file of annotations, such as the one `react-msaview-cli interpro` writes, or the JSON an InterProScan run returns.",
|
|
31
|
+
' ',
|
|
32
|
+
React.createElement(Link, { href: domainsTutorial, target: "_blank", rel: "noopener noreferrer" }, "How to make one")),
|
|
29
33
|
React.createElement("div", { style: { display: 'flex', margin: 30 } },
|
|
30
34
|
React.createElement(FormControl, { component: "fieldset" },
|
|
31
35
|
React.createElement(RadioGroup, { value: choice, onChange: event => {
|
|
@@ -65,6 +69,7 @@ const AnnotationFileDialog = observer(function ({ handleClose, model, }) {
|
|
|
65
69
|
model.setGFFFilehandle(undefined);
|
|
66
70
|
model.setGFF(annotationTextToGFF(text));
|
|
67
71
|
model.setShowDomains(true);
|
|
72
|
+
model.setCellFill('domain');
|
|
68
73
|
handleClose();
|
|
69
74
|
}
|
|
70
75
|
catch (e) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AnnotationFileDialog.js","sourceRoot":"","sources":["../../../src/components/dialogs/AnnotationFileDialog.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AAEvC,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAA;AACvD,OAAO,EACL,MAAM,EACN,aAAa,EACb,aAAa,EACb,WAAW,EACX,gBAAgB,EAChB,KAAK,EACL,UAAU,EACV,SAAS,EACT,UAAU,GACX,MAAM,eAAe,CAAA;AACtB,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AACrC,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAA;AAIjD,KAAK,UAAU,SAAS,CAAC,GAAW;IAClC,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,CAAA;IACjC,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QACjB,MAAM,IAAI,KAAK,CACb,QAAQ,QAAQ,CAAC,MAAM,aAAa,GAAG,IAAI,MAAM,QAAQ,CAAC,IAAI,EAAE,EAAE,CACnE,CAAA;IACH,CAAC;IACD,OAAO,QAAQ,CAAC,IAAI,EAAE,CAAA;AACxB,CAAC;AAED,MAAM,oBAAoB,GAAG,QAAQ,CAAC,UAAU,EAC9C,WAAW,EACX,KAAK,GAIN;IACC,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,QAAQ,EAAQ,CAAA;IACxC,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAA;IAC5C,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAA;IAClC,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,EAAW,CAAA;IAC7C,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAA;IAE7C,2EAA2E;IAC3E,4EAA4E;IAC5E,yEAAyE;IACzE,oCAAoC;IACpC,OAAO,CACL,oBAAC,MAAM,IACL,QAAQ,EAAC,IAAI,EACb,KAAK,EAAC,sBAAsB,EAC5B,OAAO,EAAE,GAAG,EAAE;YACZ,WAAW,EAAE,CAAA;QACf,CAAC,EACD,IAAI;QAEJ,oBAAC,aAAa;YACX,KAAK,CAAC,CAAC,CAAC,oBAAC,YAAY,IAAC,KAAK,EAAE,KAAK,GAAI,CAAC,CAAC,CAAC,IAAI;YAC9C,oBAAC,UAAU,
|
|
1
|
+
{"version":3,"file":"AnnotationFileDialog.js","sourceRoot":"","sources":["../../../src/components/dialogs/AnnotationFileDialog.tsx"],"names":[],"mappings":"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"}
|
|
@@ -49,8 +49,8 @@ const FeatureTable = observer(function ({ model }) {
|
|
|
49
49
|
React.createElement(TableCell, null, "description"))),
|
|
50
50
|
React.createElement(TableBody, null, types.map(({ accession, name, description }) => (React.createElement(TableRow, { key: accession },
|
|
51
51
|
React.createElement(TableCell, { padding: "checkbox" },
|
|
52
|
-
React.createElement(Checkbox, { checked: !model.
|
|
53
|
-
model.setFilter(accession,
|
|
52
|
+
React.createElement(Checkbox, { checked: !model.featureOff(accession), onChange: () => {
|
|
53
|
+
model.setFilter(accession, model.featureOff(accession));
|
|
54
54
|
} })),
|
|
55
55
|
React.createElement(TableCell, null,
|
|
56
56
|
React.createElement("div", { style: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FeatureDialog.js","sourceRoot":"","sources":["../../../src/components/dialogs/FeatureDialog.tsx"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"FeatureDialog.js","sourceRoot":"","sources":["../../../src/components/dialogs/FeatureDialog.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import type { MsaViewModel } from '../../model.ts';
|
|
3
|
-
declare const
|
|
3
|
+
declare const GapThresholdDialog: ({ model, onClose, }: {
|
|
4
4
|
model: MsaViewModel;
|
|
5
|
+
onClose: () => void;
|
|
5
6
|
}) => React.JSX.Element;
|
|
6
|
-
export default
|
|
7
|
+
export default GapThresholdDialog;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { Dialog } from '@jbrowse/core/ui';
|
|
3
|
+
import { Button, DialogActions, DialogContent, Typography } from '@mui/material';
|
|
4
|
+
import { observer } from 'mobx-react';
|
|
5
|
+
import GappynessSlider from './GappynessSlider.js';
|
|
6
|
+
const GapThresholdDialog = observer(function ({ model, onClose, }) {
|
|
7
|
+
return (React.createElement(Dialog, { open: true, onClose: onClose, title: "Hide gappy columns" },
|
|
8
|
+
React.createElement(DialogContent, null,
|
|
9
|
+
React.createElement(Typography, { variant: "body2", sx: { mb: 2 } }, "The viewer hides each column where at least this share of the rows has a gap."),
|
|
10
|
+
React.createElement(GappynessSlider, { model: model })),
|
|
11
|
+
React.createElement(DialogActions, null,
|
|
12
|
+
React.createElement(Button, { variant: "contained", onClick: onClose }, "Close"))));
|
|
13
|
+
});
|
|
14
|
+
export default GapThresholdDialog;
|
|
15
|
+
//# sourceMappingURL=GapThresholdDialog.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"GapThresholdDialog.js","sourceRoot":"","sources":["../../../src/components/dialogs/GapThresholdDialog.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAA;AACzC,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AAChF,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AAErC,OAAO,eAAe,MAAM,sBAAuB,CAAA;AAInD,MAAM,kBAAkB,GAAG,QAAQ,CAAC,UAAU,EAC5C,KAAK,EACL,OAAO,GAIR;IACC,OAAO,CACL,oBAAC,MAAM,IAAC,IAAI,QAAC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAC,oBAAoB;QACvD,oBAAC,aAAa;YACZ,oBAAC,UAAU,IAAC,OAAO,EAAC,OAAO,EAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,oFAG5B;YACb,oBAAC,eAAe,IAAC,KAAK,EAAE,KAAK,GAAI,CACnB;QAChB,oBAAC,aAAa;YACZ,oBAAC,MAAM,IAAC,OAAO,EAAC,WAAW,EAAC,OAAO,EAAE,OAAO,YAEnC,CACK,CACT,CACV,CAAA;AACH,CAAC,CAAC,CAAA;AAEF,eAAe,kBAAkB,CAAA"}
|
|
@@ -2,15 +2,11 @@ import React, { useState } from 'react';
|
|
|
2
2
|
import { Slider, Typography } from '@mui/material';
|
|
3
3
|
import { observer } from 'mobx-react';
|
|
4
4
|
const GappynessSlider = observer(function GappynessSlider({ model, }) {
|
|
5
|
-
const { hideGaps, allowedGappyness } = model;
|
|
6
5
|
const [dragValue, setDragValue] = useState();
|
|
7
|
-
const value = dragValue ?? allowedGappyness;
|
|
8
|
-
if (!hideGaps) {
|
|
9
|
-
return null;
|
|
10
|
-
}
|
|
6
|
+
const value = dragValue ?? model.allowedGappyness;
|
|
11
7
|
return (React.createElement("div", { style: { display: 'flex', alignItems: 'center', gap: 8 } },
|
|
12
8
|
React.createElement(Typography, { style: { whiteSpace: 'nowrap' } },
|
|
13
|
-
"
|
|
9
|
+
"\u2265",
|
|
14
10
|
value,
|
|
15
11
|
"% gaps"),
|
|
16
12
|
React.createElement(Slider
|
|
@@ -25,10 +21,7 @@ const GappynessSlider = observer(function GappynessSlider({ model, }) {
|
|
|
25
21
|
// The thumb follows local state while dragging and the model takes the
|
|
26
22
|
// value on release, since each write recomputes the gap columns over
|
|
27
23
|
// the whole alignment.
|
|
28
|
-
|
|
29
|
-
// The thumb centers on the track's ends, so the margin keeps its
|
|
30
|
-
// overhang off the label and the row search beside it.
|
|
31
|
-
, { "data-testid": "gappyness_slider", style: { width: 100, marginInline: 10 }, min: 1, max: 100, value: value, onChange: (_, val) => {
|
|
24
|
+
, { "data-testid": "gappyness_slider", style: { width: 200, marginInline: 10 }, min: 1, max: 100, value: value, onChange: (_, val) => {
|
|
32
25
|
setDragValue(val);
|
|
33
26
|
}, onChangeCommitted: (_, val) => {
|
|
34
27
|
model.setAllowedGappyness(val);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"GappynessSlider.js","sourceRoot":"","sources":["../../../src/components/dialogs/GappynessSlider.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AAEvC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AAClD,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AAIrC,MAAM,eAAe,GAAG,QAAQ,CAAC,SAAS,eAAe,CAAC,EACxD,KAAK,GAGN;IACC,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,QAAQ,EAAU,CAAA;IACpD,MAAM,KAAK,GAAG,SAAS,IAAI,KAAK,CAAC,gBAAgB,CAAA;IACjD,OAAO,CACL,6BAAK,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,EAAE;QAI3D,oBAAC,UAAU,IAAC,KAAK,EAAE,EAAE,UAAU,EAAE,QAAQ,EAAE;;YACpC,KAAK;qBACC;QACb,oBAAC,MAAM;QACL,qEAAqE;QACrE,6DAA6D;QAC7D,wEAAwE;QACxE,yCAAyC;QACzC,EAAE;QACF,sEAAsE;QACtE,0DAA0D;QAC1D,EAAE;QACF,uEAAuE;QACvE,qEAAqE;QACrE,uBAAuB;2BACX,kBAAkB,EAC9B,KAAK,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,YAAY,EAAE,EAAE,EAAE,EACvC,GAAG,EAAE,CAAC,EACN,GAAG,EAAE,GAAG,EACR,KAAK,EAAE,KAAK,EACZ,QAAQ,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE;gBACnB,YAAY,CAAC,GAAG,CAAC,CAAA;YACnB,CAAC,EACD,iBAAiB,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE;gBAC5B,KAAK,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAA;gBAC9B,YAAY,CAAC,SAAS,CAAC,CAAA;YACzB,CAAC,GACD,CACE,CACP,CAAA;AACH,CAAC,CAAC,CAAA;AAEF,eAAe,eAAe,CAAA"}
|
|
@@ -332,7 +332,9 @@ export declare function labelledInput(params: AutocompleteRenderInputParams): {
|
|
|
332
332
|
'aria-label': string;
|
|
333
333
|
};
|
|
334
334
|
};
|
|
335
|
-
declare
|
|
335
|
+
export declare function canGoTo(model: MsaViewModel): boolean;
|
|
336
|
+
declare const GoToBox: ({ model, onFound, }: {
|
|
336
337
|
model: MsaViewModel;
|
|
337
|
-
|
|
338
|
+
onFound?: () => void;
|
|
339
|
+
}) => React.JSX.Element;
|
|
338
340
|
export default GoToBox;
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import React, { useState } from 'react';
|
|
2
|
+
import { Autocomplete, TextField } from '@mui/material';
|
|
3
|
+
import { observer } from 'mobx-react';
|
|
4
|
+
import { findableRowNames, goTo, rowNameSuggestions } from './goTo.js';
|
|
5
|
+
const label = 'Go to row or column';
|
|
6
|
+
// MUI 9 hands renderInput `slotProps`; MUI 7, which every released JBrowse host
|
|
7
|
+
// serves, hands it `inputProps` and no `slotProps` at all
|
|
8
|
+
export function labelledInput(params) {
|
|
9
|
+
const { slotProps, inputProps } = params;
|
|
10
|
+
return slotProps
|
|
11
|
+
? {
|
|
12
|
+
slotProps: {
|
|
13
|
+
...slotProps,
|
|
14
|
+
htmlInput: { ...slotProps.htmlInput, 'aria-label': label },
|
|
15
|
+
},
|
|
16
|
+
}
|
|
17
|
+
: { inputProps: { ...inputProps, 'aria-label': label } };
|
|
18
|
+
}
|
|
19
|
+
// the menu that opens the dialog hands focus back to its button as it closes,
|
|
20
|
+
// after an autoFocus input would have taken it
|
|
21
|
+
function focusNextFrame(el) {
|
|
22
|
+
if (el) {
|
|
23
|
+
requestAnimationFrame(() => {
|
|
24
|
+
el.focus();
|
|
25
|
+
});
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
export function canGoTo(model) {
|
|
29
|
+
return findableRowNames(model).length > 1 || model.numColumns > 0;
|
|
30
|
+
}
|
|
31
|
+
const GoToBox = observer(function ({ model, onFound, }) {
|
|
32
|
+
const [missed, setMissed] = useState(false);
|
|
33
|
+
return (React.createElement(Autocomplete, { freeSolo: true, options: findableRowNames(model), filterOptions: (options, { inputValue }) => rowNameSuggestions(options, inputValue), value: null, blurOnSelect: true, onInputChange: () => {
|
|
34
|
+
setMissed(false);
|
|
35
|
+
}, onChange: (_, text) => {
|
|
36
|
+
if (text) {
|
|
37
|
+
const found = goTo(model, text);
|
|
38
|
+
setMissed(!found);
|
|
39
|
+
if (found) {
|
|
40
|
+
onFound?.();
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
}, renderInput: params => (React.createElement(TextField, { ...params, inputRef: focusNextFrame, error: missed, placeholder: "Row name or column number", helperText: missed
|
|
44
|
+
? 'No row or column matches'
|
|
45
|
+
: 'Or name:N for residue N of that row', ...labelledInput(params) })) }));
|
|
46
|
+
});
|
|
47
|
+
export default GoToBox;
|
|
48
|
+
//# sourceMappingURL=GoToBox.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"GoToBox.js","sourceRoot":"","sources":["../../../src/components/dialogs/GoToBox.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AAEvC,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,eAAe,CAAA;AACvD,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AAErC,OAAO,EAAE,gBAAgB,EAAE,IAAI,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAA;AAKtE,MAAM,KAAK,GAAG,qBAAqB,CAAA;AAEnC,gFAAgF;AAChF,0DAA0D;AAC1D,MAAM,UAAU,aAAa,CAAC,MAAqC;IACjE,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,GAAG,MAEjC,CAAA;IACD,OAAO,SAAS;QACd,CAAC,CAAC;YACE,SAAS,EAAE;gBACT,GAAG,SAAS;gBACZ,SAAS,EAAE,EAAE,GAAG,SAAS,CAAC,SAAS,EAAE,YAAY,EAAE,KAAK,EAAE;aAC3D;SACF;QACH,CAAC,CAAC,EAAE,UAAU,EAAE,EAAE,GAAG,UAAU,EAAE,YAAY,EAAE,KAAK,EAAE,EAAE,CAAA;AAC5D,CAAC;AAED,8EAA8E;AAC9E,+CAA+C;AAC/C,SAAS,cAAc,CAAC,EAA2B;IACjD,IAAI,EAAE,EAAE,CAAC;QACP,qBAAqB,CAAC,GAAG,EAAE;YACzB,EAAE,CAAC,KAAK,EAAE,CAAA;QACZ,CAAC,CAAC,CAAA;IACJ,CAAC;AACH,CAAC;AAED,MAAM,UAAU,OAAO,CAAC,KAAmB;IACzC,OAAO,gBAAgB,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,CAAC,IAAI,KAAK,CAAC,UAAU,GAAG,CAAC,CAAA;AACnE,CAAC;AAED,MAAM,OAAO,GAAG,QAAQ,CAAC,UAAU,EACjC,KAAK,EACL,OAAO,GAIR;IACC,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAA;IAC3C,OAAO,CACL,oBAAC,YAAY,IACX,QAAQ,QACR,OAAO,EAAE,gBAAgB,CAAC,KAAK,CAAC,EAChC,aAAa,EAAE,CAAC,OAAO,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE,CACzC,kBAAkB,CAAC,OAAO,EAAE,UAAU,CAAC,EAEzC,KAAK,EAAE,IAAI,EACX,YAAY,QACZ,aAAa,EAAE,GAAG,EAAE;YAClB,SAAS,CAAC,KAAK,CAAC,CAAA;QAClB,CAAC,EACD,QAAQ,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE;YACpB,IAAI,IAAI,EAAE,CAAC;gBACT,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CAAA;gBAC/B,SAAS,CAAC,CAAC,KAAK,CAAC,CAAA;gBACjB,IAAI,KAAK,EAAE,CAAC;oBACV,OAAO,EAAE,EAAE,CAAA;gBACb,CAAC;YACH,CAAC;QACH,CAAC,EACD,WAAW,EAAE,MAAM,CAAC,EAAE,CAAC,CACrB,oBAAC,SAAS,OACJ,MAAM,EACV,QAAQ,EAAE,cAAc,EACxB,KAAK,EAAE,MAAM,EACb,WAAW,EAAC,2BAA2B,EACvC,UAAU,EACR,MAAM;gBACJ,CAAC,CAAC,0BAA0B;gBAC5B,CAAC,CAAC,qCAAqC,KAEvC,aAAa,CAAC,MAAM,CAAC,GACzB,CACH,GACD,CACH,CAAA;AACH,CAAC,CAAC,CAAA;AAEF,eAAe,OAAO,CAAA"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { Dialog } from '@jbrowse/core/ui';
|
|
3
|
+
import { DialogContent } from '@mui/material';
|
|
4
|
+
import GoToBox from './GoToBox.js';
|
|
5
|
+
export default function GoToDialog({ model, onClose, }) {
|
|
6
|
+
return (React.createElement(Dialog, { open: true, onClose: onClose, title: "Go to row or column", maxWidth: "xs", fullWidth: true },
|
|
7
|
+
React.createElement(DialogContent, null,
|
|
8
|
+
React.createElement(GoToBox, { model: model, onFound: onClose }))));
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=GoToDialog.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"GoToDialog.js","sourceRoot":"","sources":["../../../src/components/dialogs/GoToDialog.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAA;AACzC,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAA;AAE7C,OAAO,OAAO,MAAM,cAAe,CAAA;AAInC,MAAM,CAAC,OAAO,UAAU,UAAU,CAAC,EACjC,KAAK,EACL,OAAO,GAIR;IACC,OAAO,CACL,oBAAC,MAAM,IACL,IAAI,QACJ,OAAO,EAAE,OAAO,EAChB,KAAK,EAAC,qBAAqB,EAC3B,QAAQ,EAAC,IAAI,EACb,SAAS;QAET,oBAAC,aAAa;YACZ,oBAAC,OAAO,IAAC,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,GAAI,CAC7B,CACT,CACV,CAAA;AACH,CAAC"}
|
|
@@ -2,15 +2,23 @@ import React from 'react';
|
|
|
2
2
|
import { Dialog } from '@jbrowse/core/ui';
|
|
3
3
|
import { DialogContent, Typography } from '@mui/material';
|
|
4
4
|
import { observer } from 'mobx-react';
|
|
5
|
-
import MetadataTable, { isEmpty } from '../MetadataTable.js';
|
|
5
|
+
import MetadataTable, { isEmpty, isRecord } from '../MetadataTable.js';
|
|
6
6
|
import SequenceTextArea from '../SequenceTextArea.js';
|
|
7
|
+
import { gfLabels, monospaceKeys, sectionLabels } from './metadataLabels.js';
|
|
8
|
+
import { groupGeneral } from './metadataRecord.js';
|
|
7
9
|
const MetadataDialog = observer(function ({ model, onClose, }) {
|
|
8
|
-
const
|
|
10
|
+
const entries = Object.entries(model.header).filter(([, value]) => value != null && !isEmpty(value));
|
|
11
|
+
const fields = Object.fromEntries(entries.filter(([, value]) => !isRecord(value)));
|
|
12
|
+
const sections = entries.filter(([, value]) => isRecord(value));
|
|
9
13
|
return (React.createElement(Dialog, { onClose: () => {
|
|
10
14
|
onClose();
|
|
11
15
|
}, open: true, title: "Metadata", maxWidth: "xl" },
|
|
12
16
|
React.createElement(DialogContent, null,
|
|
13
|
-
|
|
17
|
+
entries.length === 0 ? (React.createElement(Typography, null, "This alignment has no metadata.")) : (React.createElement(React.Fragment, null,
|
|
18
|
+
Object.keys(fields).length > 0 ? (React.createElement(MetadataTable, { record: fields })) : null,
|
|
19
|
+
sections.map(([section, value]) => (React.createElement("div", { key: section },
|
|
20
|
+
React.createElement(Typography, { variant: "h6" }, sectionLabels[section] ?? section),
|
|
21
|
+
section === 'General' ? (React.createElement(MetadataTable, { record: groupGeneral(value), labels: gfLabels, monospaceKeys: monospaceKeys })) : (React.createElement(MetadataTable, { record: value }))))))),
|
|
14
22
|
React.createElement(Typography, { variant: "h6" }, "Sequences"),
|
|
15
23
|
React.createElement(SequenceTextArea, { str: model.rows }))));
|
|
16
24
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MetadataDialog.js","sourceRoot":"","sources":["../../../src/components/dialogs/MetadataDialog.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAA;AACzC,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AACzD,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AAErC,OAAO,aAAa,EAAE,EAAE,OAAO,EAAE,MAAM,qBAAsB,CAAA;
|
|
1
|
+
{"version":3,"file":"MetadataDialog.js","sourceRoot":"","sources":["../../../src/components/dialogs/MetadataDialog.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAA;AACzC,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AACzD,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AAErC,OAAO,aAAa,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAsB,CAAA;AACvE,OAAO,gBAAgB,MAAM,wBAAyB,CAAA;AACtD,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AAC5E,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAsB,CAAA;AAInD,MAAM,cAAc,GAAG,QAAQ,CAAC,UAAU,EACxC,KAAK,EACL,OAAO,GAIR;IACC,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,MAAM,CACjD,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,KAAK,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAChD,CAAA;IACD,MAAM,MAAM,GAAG,MAAM,CAAC,WAAW,CAC/B,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAChD,CAAA;IACD,MAAM,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAA;IAC/D,OAAO,CACL,oBAAC,MAAM,IACL,OAAO,EAAE,GAAG,EAAE;YACZ,OAAO,EAAE,CAAA;QACX,CAAC,EACD,IAAI,QACJ,KAAK,EAAC,UAAU,EAChB,QAAQ,EAAC,IAAI;QAEb,oBAAC,aAAa;YACX,OAAO,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,CACtB,oBAAC,UAAU,0CAA6C,CACzD,CAAC,CAAC,CAAC,CACF;gBACG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAChC,oBAAC,aAAa,IAAC,MAAM,EAAE,MAAM,GAAI,CAClC,CAAC,CAAC,CAAC,IAAI;gBACP,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAClC,6BAAK,GAAG,EAAE,OAAO;oBACf,oBAAC,UAAU,IAAC,OAAO,EAAC,IAAI,IACrB,aAAa,CAAC,OAAO,CAAC,IAAI,OAAO,CACvB;oBACZ,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,CACvB,oBAAC,aAAa,IACZ,MAAM,EAAE,YAAY,CAAC,KAAK,CAAC,EAC3B,MAAM,EAAE,QAAQ,EAChB,aAAa,EAAE,aAAa,GAC5B,CACH,CAAC,CAAC,CAAC,CACF,oBAAC,aAAa,IAAC,MAAM,EAAE,KAAgC,GAAI,CAC5D,CACG,CACP,CAAC,CACD,CACJ;YACD,oBAAC,UAAU,IAAC,OAAO,EAAC,IAAI,gBAAuB;YAC/C,oBAAC,gBAAgB,IAAC,GAAG,EAAE,KAAK,CAAC,IAAI,GAAI,CACvB,CACT,CACV,CAAA;AACH,CAAC,CAAC,CAAA;AAEF,eAAe,cAAc,CAAA"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { MsaViewModel } from '../../model.ts';
|
|
2
|
+
export declare function findableRowNames(model: MsaViewModel): string[];
|
|
3
|
+
export declare function rowNameSuggestions(names: string[], input: string, limit?: number): string[];
|
|
4
|
+
/** centers the view on the entry's target and lights it; false if none */
|
|
5
|
+
export declare function goTo(model: MsaViewModel, text: string): boolean;
|
|
@@ -17,7 +17,7 @@ export function rowNameSuggestions(names, input, limit = 50) {
|
|
|
17
17
|
* column the ruler numbers N, or residue N of a row written `name:N`. A name
|
|
18
18
|
* is tried whole first, so a row called `chr1:100` stays reachable.
|
|
19
19
|
*/
|
|
20
|
-
|
|
20
|
+
function resolveGoTo(model, text) {
|
|
21
21
|
const query = text.trim();
|
|
22
22
|
const row = model.rowNamesSet.get(query);
|
|
23
23
|
if (row !== undefined) {
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"goTo.js","sourceRoot":"","sources":["../../../src/components/dialogs/goTo.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
export const sectionLabels = {
|
|
2
|
+
General: 'Alignment',
|
|
3
|
+
Accessions: 'Row accessions',
|
|
4
|
+
Dbxref: 'Row cross-references',
|
|
5
|
+
};
|
|
6
|
+
export const gfLabels = {
|
|
7
|
+
ID: 'Identifier',
|
|
8
|
+
AC: 'Accession',
|
|
9
|
+
DE: 'Description',
|
|
10
|
+
AU: 'Authors',
|
|
11
|
+
SE: 'Source of seed',
|
|
12
|
+
SS: 'Source of structure',
|
|
13
|
+
BM: 'Build method',
|
|
14
|
+
SM: 'Search method',
|
|
15
|
+
GA: 'Gathering threshold',
|
|
16
|
+
TC: 'Trusted cutoff',
|
|
17
|
+
NC: 'Noise cutoff',
|
|
18
|
+
TP: 'Family type',
|
|
19
|
+
CL: 'Clan',
|
|
20
|
+
MB: 'Clan members',
|
|
21
|
+
PI: 'Previous identifiers',
|
|
22
|
+
DR: 'Database references',
|
|
23
|
+
CC: 'Comment',
|
|
24
|
+
WK: 'Wikipedia',
|
|
25
|
+
NE: 'Pfam family nested in this one',
|
|
26
|
+
NL: 'Nesting location',
|
|
27
|
+
NH: 'Tree (Newick)',
|
|
28
|
+
SQ: 'Number of sequences',
|
|
29
|
+
RC: 'Reference comment',
|
|
30
|
+
RN: 'Reference number',
|
|
31
|
+
RM: 'PubMed ID',
|
|
32
|
+
RT: 'Reference title',
|
|
33
|
+
RA: 'Reference authors',
|
|
34
|
+
RL: 'Reference journal',
|
|
35
|
+
CB: 'Curation: build',
|
|
36
|
+
DC: 'Database comment',
|
|
37
|
+
DW: 'Database web link',
|
|
38
|
+
OS: 'Organism',
|
|
39
|
+
OC: 'Organism classification',
|
|
40
|
+
AM: 'Alignment method',
|
|
41
|
+
FT: 'Feature',
|
|
42
|
+
SO: 'Sequence Ontology term',
|
|
43
|
+
};
|
|
44
|
+
export const referenceFieldLabels = {
|
|
45
|
+
RT: 'Title',
|
|
46
|
+
RA: 'Authors',
|
|
47
|
+
RL: 'Journal',
|
|
48
|
+
RM: 'PubMed',
|
|
49
|
+
RC: 'Comment',
|
|
50
|
+
};
|
|
51
|
+
export const monospaceKeys = new Set(['NH']);
|
|
52
|
+
//# sourceMappingURL=metadataLabels.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"metadataLabels.js","sourceRoot":"","sources":["../../../src/components/dialogs/metadataLabels.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,aAAa,GAA2B;IACnD,OAAO,EAAE,WAAW;IACpB,UAAU,EAAE,gBAAgB;IAC5B,MAAM,EAAE,sBAAsB;CAC/B,CAAA;AAED,MAAM,CAAC,MAAM,QAAQ,GAA2B;IAC9C,EAAE,EAAE,YAAY;IAChB,EAAE,EAAE,WAAW;IACf,EAAE,EAAE,aAAa;IACjB,EAAE,EAAE,SAAS;IACb,EAAE,EAAE,gBAAgB;IACpB,EAAE,EAAE,qBAAqB;IACzB,EAAE,EAAE,cAAc;IAClB,EAAE,EAAE,eAAe;IACnB,EAAE,EAAE,qBAAqB;IACzB,EAAE,EAAE,gBAAgB;IACpB,EAAE,EAAE,cAAc;IAClB,EAAE,EAAE,aAAa;IACjB,EAAE,EAAE,MAAM;IACV,EAAE,EAAE,cAAc;IAClB,EAAE,EAAE,sBAAsB;IAC1B,EAAE,EAAE,qBAAqB;IACzB,EAAE,EAAE,SAAS;IACb,EAAE,EAAE,WAAW;IACf,EAAE,EAAE,gCAAgC;IACpC,EAAE,EAAE,kBAAkB;IACtB,EAAE,EAAE,eAAe;IACnB,EAAE,EAAE,qBAAqB;IACzB,EAAE,EAAE,mBAAmB;IACvB,EAAE,EAAE,kBAAkB;IACtB,EAAE,EAAE,WAAW;IACf,EAAE,EAAE,iBAAiB;IACrB,EAAE,EAAE,mBAAmB;IACvB,EAAE,EAAE,mBAAmB;IACvB,EAAE,EAAE,iBAAiB;IACrB,EAAE,EAAE,kBAAkB;IACtB,EAAE,EAAE,mBAAmB;IACvB,EAAE,EAAE,UAAU;IACd,EAAE,EAAE,yBAAyB;IAC7B,EAAE,EAAE,kBAAkB;IACtB,EAAE,EAAE,SAAS;IACb,EAAE,EAAE,wBAAwB;CAC7B,CAAA;AAED,MAAM,CAAC,MAAM,oBAAoB,GAA2B;IAC1D,EAAE,EAAE,OAAO;IACX,EAAE,EAAE,SAAS;IACb,EAAE,EAAE,SAAS;IACb,EAAE,EAAE,QAAQ;IACZ,EAAE,EAAE,SAAS;CACd,CAAA;AAED,MAAM,CAAC,MAAM,aAAa,GAAG,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function groupGeneral(general: unknown): Record<string, unknown>;
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { referenceFieldLabels } from './metadataLabels.js';
|
|
3
|
+
const referenceTags = ['RM', 'RT', 'RA', 'RL', 'RC'];
|
|
4
|
+
function pubmed(id) {
|
|
5
|
+
return /^\d+$/.test(id) ? (React.createElement("a", { href: `https://pubmed.ncbi.nlm.nih.gov/${id}/`, target: "_blank", rel: "noreferrer" }, id)) : (id);
|
|
6
|
+
}
|
|
7
|
+
function groupReferences(general) {
|
|
8
|
+
const numbers = general.RN;
|
|
9
|
+
if (!Array.isArray(numbers) || numbers.length === 0) {
|
|
10
|
+
return general;
|
|
11
|
+
}
|
|
12
|
+
const present = referenceTags.filter(tag => general[tag] != null);
|
|
13
|
+
const aligned = present.every(tag => {
|
|
14
|
+
const values = general[tag];
|
|
15
|
+
return Array.isArray(values) && values.length === numbers.length;
|
|
16
|
+
});
|
|
17
|
+
if (!aligned) {
|
|
18
|
+
return general;
|
|
19
|
+
}
|
|
20
|
+
const rest = Object.fromEntries(Object.entries(general).filter(([tag]) => tag !== 'RN' && !referenceTags.includes(tag)));
|
|
21
|
+
const references = Object.fromEntries(numbers.map((number, i) => [
|
|
22
|
+
number,
|
|
23
|
+
Object.fromEntries(present.map(tag => {
|
|
24
|
+
const value = general[tag][i];
|
|
25
|
+
return [
|
|
26
|
+
referenceFieldLabels[tag],
|
|
27
|
+
tag === 'RM' ? pubmed(value) : value,
|
|
28
|
+
];
|
|
29
|
+
})),
|
|
30
|
+
]));
|
|
31
|
+
return { ...rest, References: references };
|
|
32
|
+
}
|
|
33
|
+
export function groupGeneral(general) {
|
|
34
|
+
return general && typeof general === 'object'
|
|
35
|
+
? groupReferences(general)
|
|
36
|
+
: {};
|
|
37
|
+
}
|
|
38
|
+
//# sourceMappingURL=metadataRecord.js.map
|