react-msaview 5.6.3 → 5.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bundle/index.js +134 -140
- package/bundle/index.js.map +4 -4
- package/dist/colorSchemes.js +1 -1
- package/dist/components/ConservationTrack.js +3 -3
- package/dist/components/ConservationTrack.js.map +1 -1
- package/dist/components/Loading.js +3 -4
- package/dist/components/Loading.js.map +1 -1
- package/dist/components/MSAView.js +8 -8
- package/dist/components/MSAViewer.js +2 -2
- package/dist/components/ResizeHandles.js +1 -1
- package/dist/components/SequenceTextArea.js +2 -2
- package/dist/components/SequenceTextArea.js.map +1 -1
- package/dist/components/TextTrack.js +7 -6
- package/dist/components/TextTrack.js.map +1 -1
- package/dist/components/Track.js +2 -2
- package/dist/components/VerticalScrollbar.js +1 -1
- package/dist/components/dialogs/AboutDialog.js +1 -1
- package/dist/components/dialogs/DomainDialog.js +2 -2
- package/dist/components/dialogs/ExportSVGDialog.js +1 -1
- package/dist/components/dialogs/InterProScanDialog.js +1 -1
- package/dist/components/dialogs/MetadataDialog.js +1 -1
- package/dist/components/dialogs/TrackInfoDialog.js +1 -1
- package/dist/components/dialogs/UserProvidedDomainsDialog.js +1 -1
- package/dist/components/header/ColorSchemeMenu.js +1 -1
- package/dist/components/header/FileMenu.js +3 -3
- package/dist/components/header/Header.js +11 -11
- package/dist/components/header/MSASettingsMenu.js +1 -1
- package/dist/components/header/SettingsMenu.js +2 -2
- package/dist/components/header/SettingsMenu.js.map +1 -1
- package/dist/components/header/TreeSettingsMenu.js +1 -1
- package/dist/components/header/getDomainsMenu.d.ts +4 -4
- package/dist/components/header/getDomainsMenu.js +3 -3
- package/dist/components/import/ImportForm.js +2 -2
- package/dist/components/import/ImportFormExamples.js +2 -2
- package/dist/components/minimap/Minimap.js +2 -2
- package/dist/components/minimap/Minimap.js.map +1 -1
- package/dist/components/minimap/MinimapSVG.js +1 -1
- package/dist/components/msa/MSACanvas.js +4 -4
- package/dist/components/msa/MSACanvas.js.map +1 -1
- package/dist/components/msa/MSACanvasBlock.js +7 -7
- 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/MSAPanel.js +3 -3
- package/dist/components/msa/renderBoxFeatureCanvasBlock.js +2 -2
- package/dist/components/msa/renderMSABlock.js +4 -4
- package/dist/components/msa/renderMSABlock.js.map +1 -1
- package/dist/components/msa/renderMSAMouseover.js +1 -1
- package/dist/components/msa/useMsaBlockMouse.d.ts +1 -1
- package/dist/components/msa/useMsaBlockMouse.js +15 -6
- package/dist/components/msa/useMsaBlockMouse.js.map +1 -1
- package/dist/components/tracks/renderTracksSvg.d.ts +7 -3
- package/dist/components/tracks/renderTracksSvg.js +19 -12
- package/dist/components/tracks/renderTracksSvg.js.map +1 -1
- package/dist/components/tree/TreeCanvas.js +5 -5
- package/dist/components/tree/TreeCanvas.js.map +1 -1
- package/dist/components/tree/TreeCanvasBlock.js +5 -5
- package/dist/components/tree/TreeCanvasBlock.js.map +1 -1
- package/dist/components/tree/TreeNodeMenu.js +1 -1
- package/dist/components/tree/TreePanel.js +1 -1
- package/dist/components/tree/dialogs/TreeNodeInfoDialog.js +1 -1
- package/dist/components/tree/renderTreeCanvas.d.ts +1 -1
- package/dist/components/tree/renderTreeCanvas.js +3 -3
- package/dist/components/tree/useTreeHover.d.ts +2 -2
- package/dist/components/tree/useTreeHover.js +1 -1
- package/dist/components/tree/useTreeHover.js.map +1 -1
- package/dist/createPaletteMap.js +1 -1
- package/dist/fetchUtils.js.map +1 -1
- package/dist/index.js +4 -4
- package/dist/launchInterProScan.js +1 -1
- package/dist/measureTextCanvas.js +1 -1
- package/dist/model/msaModel.js +2 -2
- package/dist/model/treeModel.js +2 -2
- package/dist/model.d.ts +69 -64
- package/dist/model.js +44 -26
- package/dist/model.js.map +1 -1
- package/dist/propertyConservation.js +1 -1
- package/dist/renderToSvg.js +8 -9
- package/dist/renderToSvg.js.map +1 -1
- package/dist/rowCoordinateCalculations.js +1 -1
- package/dist/seqPosToGlobalCol.js +1 -1
- package/dist/umd.js +2 -2
- package/dist/useCanvasAutorun.js +1 -1
- package/dist/useCanvasAutorun.js.map +1 -1
- package/dist/useColorContrast.js +1 -1
- package/dist/useWheelScroll.js +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/dist/wheelZoom.d.ts +1 -1
- package/package.json +8 -7
- package/src/components/ConservationTrack.tsx +1 -1
- package/src/components/SequenceTextArea.tsx +1 -1
- package/src/components/TextTrack.tsx +3 -2
- package/src/components/header/SettingsMenu.tsx +1 -1
- package/src/components/minimap/Minimap.tsx +1 -1
- package/src/components/msa/MSACanvas.tsx +6 -1
- package/src/components/msa/MSACanvasBlock.tsx +3 -3
- package/src/components/msa/MSAMouseoverCanvas.tsx +1 -1
- package/src/components/msa/renderMSABlock.ts +1 -1
- package/src/components/msa/useMsaBlockMouse.ts +17 -8
- package/src/components/tracks/renderTracksSvg.ts +21 -7
- package/src/components/tree/TreeCanvas.tsx +2 -2
- package/src/components/tree/TreeCanvasBlock.tsx +1 -1
- package/src/components/tree/renderTreeCanvas.test.ts +1 -1
- package/src/components/tree/renderTreeCanvas.ts +1 -1
- package/src/components/tree/useTreeHover.ts +2 -2
- package/src/model.ts +25 -6
- package/src/renderToSvg.tsx +1 -1
- package/src/treeMetadata.test.ts +39 -0
- package/src/useCanvasAutorun.ts +3 -2
- package/src/version.ts +1 -1
package/dist/renderToSvg.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"renderToSvg.js","sourceRoot":"","sources":["../src/renderToSvg.tsx"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"renderToSvg.js","sourceRoot":"","sources":["../src/renderToSvg.tsx"],"names":[],"mappings":"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"}
|
package/dist/umd.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
|
-
export { default as MSAView } from
|
|
3
|
-
export { default as MSAModelF } from
|
|
2
|
+
export { default as MSAView } from './components/Loading.js';
|
|
3
|
+
export { default as MSAModelF } from './model.js';
|
|
4
4
|
export * from 'react-dom/client';
|
|
5
5
|
export { React };
|
|
6
6
|
//# sourceMappingURL=umd.js.map
|
package/dist/useCanvasAutorun.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useCanvasAutorun.js","sourceRoot":"","sources":["../src/useCanvasAutorun.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,OAAO,CAAA;
|
|
1
|
+
{"version":3,"file":"useCanvasAutorun.js","sourceRoot":"","sources":["../src/useCanvasAutorun.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,OAAO,CAAA;AAEzC,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAA;AAI9B,6EAA6E;AAC7E,gFAAgF;AAChF,0EAA0E;AAC1E,2EAA2E;AAC3E,8EAA8E;AAC9E,MAAM,UAAU,gBAAgB,CAC9B,IAA6C,EAC7C,IAA0B;IAE1B,MAAM,GAAG,GAAG,MAAM,CAAoB,IAAI,CAAC,CAAA;IAC3C,8EAA8E;IAC9E,oEAAoE;IACpE,SAAS,CAAC,GAAG,EAAE;QACb,MAAM,GAAG,GAAG,GAAG,CAAC,OAAO,EAAE,UAAU,CAAC,IAAI,CAAC,CAAA;QACzC,OAAO,GAAG;YACR,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE;gBACX,IAAI,CAAC,GAAG,CAAC,CAAA;YACX,CAAC,CAAC;YACJ,CAAC,CAAC,SAAS,CAAA;QACb,uDAAuD;IACzD,CAAC,EAAE,IAAI,CAAC,CAAA;IACR,OAAO,GAAG,CAAA;AACZ,CAAC"}
|
package/dist/useColorContrast.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { useMemo } from 'react';
|
|
2
2
|
import { useTheme } from '@mui/material';
|
|
3
|
-
import { colorContrast } from
|
|
3
|
+
import { colorContrast } from './util.js';
|
|
4
4
|
/**
|
|
5
5
|
* Resolves the current theme and a memoized contrast-color scheme for a given
|
|
6
6
|
* color scheme. Shared by the MSA and text-track canvas blocks.
|
package/dist/useWheelScroll.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { useEffect, useRef, useState } from 'react';
|
|
2
|
-
import { SCROLL_ZOOM_DIVISOR, getZoomNormalizer, normalizeWheelDelta, zoomFactorFromAccum, } from
|
|
2
|
+
import { SCROLL_ZOOM_DIVISOR, getZoomNormalizer, normalizeWheelDelta, zoomFactorFromAccum, } from './wheelZoom.js';
|
|
3
3
|
export function useWheelScroll({ ref, onScrollX, onScrollY, onZoom, scrollZoom, }) {
|
|
4
4
|
const scheduled = useRef(false);
|
|
5
5
|
const zoomScheduled = useRef(false);
|
package/dist/version.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const version = "5.
|
|
1
|
+
export declare const version = "5.7.0";
|
package/dist/version.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export const version = '5.
|
|
1
|
+
export const version = '5.7.0';
|
|
2
2
|
//# sourceMappingURL=version.js.map
|
package/dist/wheelZoom.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
export declare const SCROLL_ZOOM_DIVISOR = 500;
|
|
2
2
|
export declare function normalizeWheelDelta(delta: number, mode: number): number;
|
|
3
|
-
export declare function getZoomNormalizer(deltaY: number):
|
|
3
|
+
export declare function getZoomNormalizer(deltaY: number): 25 | 75 | 150 | 500;
|
|
4
4
|
export declare function zoomFactorFromAccum(zoomAccum: number, elapsedMs: number): number;
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "react-msaview",
|
|
3
3
|
"author": "Colin",
|
|
4
|
-
"version": "5.
|
|
4
|
+
"version": "5.7.0",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|
|
7
7
|
"repository": {
|
|
@@ -26,23 +26,24 @@
|
|
|
26
26
|
},
|
|
27
27
|
"peerDependencies": {
|
|
28
28
|
"@jbrowse/core": ">=2.0.0",
|
|
29
|
-
"@jbrowse/mobx-state-tree": "^
|
|
29
|
+
"@jbrowse/mobx-state-tree": "^6.0.0",
|
|
30
30
|
"@mui/icons-material": ">=5.0.0",
|
|
31
31
|
"@mui/material": ">=5.0.0",
|
|
32
|
-
"mobx": ">=
|
|
33
|
-
"mobx-react": ">=
|
|
32
|
+
"mobx": ">=7.0.0",
|
|
33
|
+
"mobx-react": ">=9.0.0",
|
|
34
34
|
"react": ">=16.8.0",
|
|
35
35
|
"react-dom": ">=16.8.0"
|
|
36
36
|
},
|
|
37
37
|
"devDependencies": {
|
|
38
|
-
"@
|
|
38
|
+
"@jbrowse/core": "file:vendor-jbrowse/jbrowse-core.tgz",
|
|
39
|
+
"@types/node": "^26.1.2",
|
|
39
40
|
"esbuild": "^0.28.1"
|
|
40
41
|
},
|
|
41
42
|
"dependencies": {
|
|
42
43
|
"colord": "^2.9.3",
|
|
43
44
|
"flatbush": "^4.6.2",
|
|
44
|
-
"@jbrowse/svgcanvas": "5.
|
|
45
|
-
"msa-parsers": "5.
|
|
45
|
+
"@jbrowse/svgcanvas": "5.7.0",
|
|
46
|
+
"msa-parsers": "5.7.0"
|
|
46
47
|
},
|
|
47
48
|
"scripts": {
|
|
48
49
|
"clean": "rimraf dist bundle",
|
|
@@ -2,8 +2,8 @@ import React from 'react'
|
|
|
2
2
|
|
|
3
3
|
import { observer } from 'mobx-react'
|
|
4
4
|
|
|
5
|
-
import { ConservationTrackResizeHandle } from './ResizeHandles.tsx'
|
|
6
5
|
import { useCanvasAutorun } from '../useCanvasAutorun.ts'
|
|
6
|
+
import { ConservationTrackResizeHandle } from './ResizeHandles.tsx'
|
|
7
7
|
import {
|
|
8
8
|
barTrackValues,
|
|
9
9
|
drawConservationBars,
|
|
@@ -3,8 +3,8 @@ import React, { useState } from 'react'
|
|
|
3
3
|
import { makeStyles } from '@jbrowse/core/util/tss-react'
|
|
4
4
|
import { Button, TextField } from '@mui/material'
|
|
5
5
|
|
|
6
|
-
import Checkbox2 from './Checkbox2.tsx'
|
|
7
6
|
import copy from '../vendor/copyToClipboard.ts'
|
|
7
|
+
import Checkbox2 from './Checkbox2.tsx'
|
|
8
8
|
|
|
9
9
|
const useStyles = makeStyles()({
|
|
10
10
|
textAreaFont: {
|
|
@@ -31,7 +31,7 @@ const AnnotationBlock = observer(function ({
|
|
|
31
31
|
} = track
|
|
32
32
|
|
|
33
33
|
const colorScheme = customColorScheme ?? modelColorScheme
|
|
34
|
-
const { contrastScheme } = useColorContrast(colorScheme)
|
|
34
|
+
const { theme, contrastScheme } = useColorContrast(colorScheme)
|
|
35
35
|
const ref = useCanvasAutorun(
|
|
36
36
|
ctx => {
|
|
37
37
|
const {
|
|
@@ -55,13 +55,14 @@ const AnnotationBlock = observer(function ({
|
|
|
55
55
|
colorScheme,
|
|
56
56
|
contrastScheme,
|
|
57
57
|
bgColor,
|
|
58
|
+
textColor: theme.palette.text.primary,
|
|
58
59
|
colWidth,
|
|
59
60
|
rowHeight,
|
|
60
61
|
offsetX,
|
|
61
62
|
blockSize,
|
|
62
63
|
})
|
|
63
64
|
},
|
|
64
|
-
[model, offsetX, contrastScheme, colorScheme, data],
|
|
65
|
+
[model, offsetX, theme, contrastScheme, colorScheme, data],
|
|
65
66
|
)
|
|
66
67
|
return (
|
|
67
68
|
<canvas
|
|
@@ -6,11 +6,11 @@ import Palette from '@mui/icons-material/Palette'
|
|
|
6
6
|
import Settings from '@mui/icons-material/Settings'
|
|
7
7
|
import { observer } from 'mobx-react'
|
|
8
8
|
|
|
9
|
+
import colorSchemes from '../../colorSchemes.ts'
|
|
9
10
|
import {
|
|
10
11
|
msaSettingsMenuItems,
|
|
11
12
|
treeSettingsMenuItems,
|
|
12
13
|
} from './settingsMenuItems.ts'
|
|
13
|
-
import colorSchemes from '../../colorSchemes.ts'
|
|
14
14
|
|
|
15
15
|
import type { MsaViewModel } from '../../model.ts'
|
|
16
16
|
|
|
@@ -2,8 +2,8 @@ import React, { useCallback, useState } from 'react'
|
|
|
2
2
|
|
|
3
3
|
import { observer } from 'mobx-react'
|
|
4
4
|
|
|
5
|
-
import { MINIMAP_BAR_HEIGHT, getMinimapLayout } from './minimapLayout.ts'
|
|
6
5
|
import { useDragScroll } from '../../useDragScroll.ts'
|
|
6
|
+
import { MINIMAP_BAR_HEIGHT, getMinimapLayout } from './minimapLayout.ts'
|
|
7
7
|
|
|
8
8
|
import type { MsaViewModel } from '../../model.ts'
|
|
9
9
|
|
|
@@ -2,9 +2,9 @@ import React, { useCallback, useRef } from 'react'
|
|
|
2
2
|
|
|
3
3
|
import { observer } from 'mobx-react'
|
|
4
4
|
|
|
5
|
+
import { useWheelScroll } from '../../useWheelScroll.ts'
|
|
5
6
|
import Loading from './Loading.tsx'
|
|
6
7
|
import MSACanvasBlock from './MSACanvasBlock.tsx'
|
|
7
|
-
import { useWheelScroll } from '../../useWheelScroll.ts'
|
|
8
8
|
|
|
9
9
|
import type { MsaViewModel } from '../../model.ts'
|
|
10
10
|
|
|
@@ -48,6 +48,11 @@ const MSACanvas = observer(function ({ model }: { model: MsaViewModel }) {
|
|
|
48
48
|
return (
|
|
49
49
|
<div
|
|
50
50
|
ref={ref}
|
|
51
|
+
// the MSA viewport: its rect is the origin every column/row offset is
|
|
52
|
+
// measured from (col*colWidth + scrollX, row*rowHeight + scrollY), which
|
|
53
|
+
// is what lets a screenshot callout anchor to an alignment column instead
|
|
54
|
+
// of a hand-measured pixel
|
|
55
|
+
data-testid="msa_canvas"
|
|
51
56
|
onMouseDown={onMouseDown}
|
|
52
57
|
onMouseUp={onMouseUp}
|
|
53
58
|
onMouseLeave={event => {
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
import React from 'react'
|
|
2
2
|
|
|
3
|
-
import
|
|
3
|
+
import BaseTooltip from '@jbrowse/core/ui/BaseTooltip'
|
|
4
4
|
import { observer } from 'mobx-react'
|
|
5
5
|
|
|
6
|
+
import { useCanvasAutorun } from '../../useCanvasAutorun.ts'
|
|
7
|
+
import { useColorContrast } from '../../useColorContrast.ts'
|
|
6
8
|
import ColumnStats from './ColumnStats.tsx'
|
|
7
9
|
import { renderBoxFeatureCanvasBlock } from './renderBoxFeatureCanvasBlock.ts'
|
|
8
10
|
import { renderMSABlock } from './renderMSABlock.ts'
|
|
9
11
|
import { useMsaBlockMouse } from './useMsaBlockMouse.ts'
|
|
10
|
-
import { useCanvasAutorun } from '../../useCanvasAutorun.ts'
|
|
11
|
-
import { useColorContrast } from '../../useColorContrast.ts'
|
|
12
12
|
|
|
13
13
|
import type { MsaViewModel } from '../../model.ts'
|
|
14
14
|
|
|
@@ -3,8 +3,8 @@ import React from 'react'
|
|
|
3
3
|
import { isAlive } from '@jbrowse/mobx-state-tree'
|
|
4
4
|
import { observer } from 'mobx-react'
|
|
5
5
|
|
|
6
|
-
import { renderMouseover } from './renderMSAMouseover.ts'
|
|
7
6
|
import { useCanvasAutorun } from '../../useCanvasAutorun.ts'
|
|
7
|
+
import { renderMouseover } from './renderMSAMouseover.ts'
|
|
8
8
|
|
|
9
9
|
import type { MsaViewModel } from '../../model.ts'
|
|
10
10
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { visibleColRange } from './visibleColRange.ts'
|
|
2
1
|
import { setFontSize } from '../../setFontSize.ts'
|
|
3
2
|
import { adjustColorForContrast } from '../../util.ts'
|
|
4
3
|
import { getVisibleLeaves } from '../getVisibleLeaves.ts'
|
|
4
|
+
import { visibleColRange } from './visibleColRange.ts'
|
|
5
5
|
|
|
6
6
|
import type { HierarchyNode } from '../../hierarchy.ts'
|
|
7
7
|
import type { MsaViewModel } from '../../model.ts'
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { useState } from 'react'
|
|
2
|
-
import type React from 'react'
|
|
3
2
|
|
|
4
3
|
import type { MsaViewModel } from '../../model.ts'
|
|
4
|
+
import type React from 'react'
|
|
5
5
|
|
|
6
6
|
function eventToColRow({
|
|
7
7
|
event,
|
|
@@ -49,11 +49,17 @@ export function useMsaBlockMouse({
|
|
|
49
49
|
return eventToColRow({ event, el, offsetX, offsetY, colWidth, rowHeight })
|
|
50
50
|
}
|
|
51
51
|
|
|
52
|
+
// a block can extend past the alignment (the last block is a full tile wide,
|
|
53
|
+
// and the panel is taller than the rows when there are few of them), so a
|
|
54
|
+
// pointer inside the block is not necessarily over a cell
|
|
55
|
+
function inBounds({ col, row }: { col: number; row: number }) {
|
|
56
|
+
return col >= 0 && col < model.numColumns && row >= 0 && row < model.numRows
|
|
57
|
+
}
|
|
58
|
+
|
|
52
59
|
function onMouseMove(event: React.MouseEvent, el: HTMLElement) {
|
|
53
|
-
const
|
|
54
|
-
const
|
|
55
|
-
|
|
56
|
-
model.setMousePos(inBounds ? col : undefined, inBounds ? row : undefined)
|
|
60
|
+
const pos = colRow(event, el)
|
|
61
|
+
const hit = inBounds(pos)
|
|
62
|
+
model.setMousePos(hit ? pos.col : undefined, hit ? pos.row : undefined)
|
|
57
63
|
|
|
58
64
|
const hasTooltip =
|
|
59
65
|
!!model.hoveredInsertion ||
|
|
@@ -65,11 +71,14 @@ export function useMsaBlockMouse({
|
|
|
65
71
|
}
|
|
66
72
|
|
|
67
73
|
function onClick(event: React.MouseEvent, el: HTMLElement) {
|
|
68
|
-
const
|
|
74
|
+
const pos = colRow(event, el)
|
|
75
|
+
const { col, row } = pos
|
|
69
76
|
const { mouseClickCol, mouseClickRow } = model
|
|
70
|
-
// clicking the same cell again clears the pinned crosshair
|
|
77
|
+
// clicking the same cell again clears the pinned crosshair, and so does
|
|
78
|
+
// clicking past the end of the alignment -- there is no cell to pin there
|
|
71
79
|
const same = col === mouseClickCol && row === mouseClickRow
|
|
72
|
-
|
|
80
|
+
const keep = inBounds(pos) && !same
|
|
81
|
+
model.setMouseClickPos(keep ? col : undefined, keep ? row : undefined)
|
|
73
82
|
}
|
|
74
83
|
|
|
75
84
|
function onMouseLeave() {
|
|
@@ -4,6 +4,7 @@ import { visibleColRange } from '../msa/visibleColRange.ts'
|
|
|
4
4
|
import type { MsaViewModel } from '../../model.ts'
|
|
5
5
|
import type { BasicTrack } from '../../types.ts'
|
|
6
6
|
import type { RenderCtx } from '../renderCtx.ts'
|
|
7
|
+
import type { Theme } from '@mui/material'
|
|
7
8
|
|
|
8
9
|
export function drawConservationBars({
|
|
9
10
|
ctx,
|
|
@@ -51,6 +52,7 @@ export function drawTextTrackContent({
|
|
|
51
52
|
colorScheme,
|
|
52
53
|
contrastScheme,
|
|
53
54
|
bgColor,
|
|
55
|
+
textColor,
|
|
54
56
|
colWidth,
|
|
55
57
|
rowHeight,
|
|
56
58
|
offsetX,
|
|
@@ -61,6 +63,7 @@ export function drawTextTrackContent({
|
|
|
61
63
|
colorScheme: Record<string, string>
|
|
62
64
|
contrastScheme: Record<string, string>
|
|
63
65
|
bgColor: boolean
|
|
66
|
+
textColor: string
|
|
64
67
|
colWidth: number
|
|
65
68
|
rowHeight: number
|
|
66
69
|
offsetX: number
|
|
@@ -72,18 +75,23 @@ export function drawTextTrackContent({
|
|
|
72
75
|
colWidth,
|
|
73
76
|
})
|
|
74
77
|
const str = data?.slice(xStart, xEnd)
|
|
78
|
+
const drawLetters = rowHeight >= 10 && colWidth >= rowHeight / 2
|
|
75
79
|
|
|
76
80
|
for (let i = 0; str && i < str.length; i++) {
|
|
77
81
|
const letter = str[i]!
|
|
78
82
|
const upper = letter.toUpperCase()
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
83
|
+
const color = colorScheme[upper]
|
|
84
|
+
const x = (xStart + i) * colWidth
|
|
85
|
+
const filled = bgColor && !!color
|
|
86
|
+
if (filled) {
|
|
87
|
+
ctx.fillStyle = color!
|
|
82
88
|
ctx.fillRect(x, 0, colWidth, rowHeight)
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
89
|
+
}
|
|
90
|
+
if (drawLetters) {
|
|
91
|
+
// a letter on a colored tile needs the tile's contrast color; otherwise it
|
|
92
|
+
// sits on the plain background and takes the theme's text color
|
|
93
|
+
ctx.fillStyle = filled ? (contrastScheme[upper] ?? 'black') : textColor
|
|
94
|
+
ctx.fillText(letter, x + colWidth / 2, rowHeight / 2 + 1)
|
|
87
95
|
}
|
|
88
96
|
}
|
|
89
97
|
}
|
|
@@ -135,6 +143,7 @@ export function renderTextTrack({
|
|
|
135
143
|
offsetX,
|
|
136
144
|
offsetY,
|
|
137
145
|
contrastScheme,
|
|
146
|
+
theme,
|
|
138
147
|
blockSizeXOverride,
|
|
139
148
|
highResScaleFactorOverride,
|
|
140
149
|
}: {
|
|
@@ -144,6 +153,7 @@ export function renderTextTrack({
|
|
|
144
153
|
offsetX: number
|
|
145
154
|
offsetY: number
|
|
146
155
|
contrastScheme: Record<string, string>
|
|
156
|
+
theme: Theme
|
|
147
157
|
blockSizeXOverride?: number
|
|
148
158
|
highResScaleFactorOverride?: number
|
|
149
159
|
}) {
|
|
@@ -174,6 +184,7 @@ export function renderTextTrack({
|
|
|
174
184
|
colorScheme,
|
|
175
185
|
contrastScheme,
|
|
176
186
|
bgColor,
|
|
187
|
+
textColor: theme.palette.text.primary,
|
|
177
188
|
colWidth,
|
|
178
189
|
rowHeight,
|
|
179
190
|
offsetX,
|
|
@@ -188,6 +199,7 @@ export function renderAllTracks({
|
|
|
188
199
|
ctx,
|
|
189
200
|
offsetX,
|
|
190
201
|
contrastScheme,
|
|
202
|
+
theme,
|
|
191
203
|
blockSizeXOverride,
|
|
192
204
|
highResScaleFactorOverride,
|
|
193
205
|
}: {
|
|
@@ -195,6 +207,7 @@ export function renderAllTracks({
|
|
|
195
207
|
ctx: RenderCtx
|
|
196
208
|
offsetX: number
|
|
197
209
|
contrastScheme: Record<string, string>
|
|
210
|
+
theme: Theme
|
|
198
211
|
blockSizeXOverride?: number
|
|
199
212
|
highResScaleFactorOverride?: number
|
|
200
213
|
}) {
|
|
@@ -223,6 +236,7 @@ export function renderAllTracks({
|
|
|
223
236
|
offsetX,
|
|
224
237
|
offsetY: currentY,
|
|
225
238
|
contrastScheme,
|
|
239
|
+
theme,
|
|
226
240
|
blockSizeXOverride,
|
|
227
241
|
highResScaleFactorOverride,
|
|
228
242
|
})
|
|
@@ -3,11 +3,11 @@ import React, { useCallback, useRef } from 'react'
|
|
|
3
3
|
import { isAlive } from '@jbrowse/mobx-state-tree'
|
|
4
4
|
import { observer } from 'mobx-react'
|
|
5
5
|
|
|
6
|
-
import TreeCanvasBlock from './TreeCanvasBlock.tsx'
|
|
7
|
-
import { padding } from './renderTreeCanvas.ts'
|
|
8
6
|
import { useCanvasAutorun } from '../../useCanvasAutorun.ts'
|
|
9
7
|
import { useWheelScroll } from '../../useWheelScroll.ts'
|
|
10
8
|
import { referenceColor, treeHoverColor } from '../overlayColors.ts'
|
|
9
|
+
import TreeCanvasBlock from './TreeCanvasBlock.tsx'
|
|
10
|
+
import { padding } from './renderTreeCanvas.ts'
|
|
11
11
|
|
|
12
12
|
import type { MsaViewModel } from '../../model.ts'
|
|
13
13
|
|
|
@@ -4,11 +4,11 @@ import { makeStyles } from '@jbrowse/core/util/tss-react'
|
|
|
4
4
|
import { useTheme } from '@mui/material'
|
|
5
5
|
import { observer } from 'mobx-react'
|
|
6
6
|
|
|
7
|
+
import { useCanvasAutorun } from '../../useCanvasAutorun.ts'
|
|
7
8
|
import TreeBranchMenu from './TreeBranchMenu.tsx'
|
|
8
9
|
import TreeNodeMenu from './TreeNodeMenu.tsx'
|
|
9
10
|
import { padding, renderTreeCanvas } from './renderTreeCanvas.ts'
|
|
10
11
|
import { useTreeHover } from './useTreeHover.ts'
|
|
11
|
-
import { useCanvasAutorun } from '../../useCanvasAutorun.ts'
|
|
12
12
|
|
|
13
13
|
import type { MsaViewModel } from '../../model.ts'
|
|
14
14
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { describe, expect, it } from 'vitest'
|
|
2
2
|
|
|
3
|
-
import { getNodeX } from './renderTreeCanvas.ts'
|
|
4
3
|
import { calcDepthToLeaf, findMaxBranchLen } from '../../hierarchy.ts'
|
|
4
|
+
import { getNodeX } from './renderTreeCanvas.ts'
|
|
5
5
|
|
|
6
6
|
import type { HierarchyNode } from '../../hierarchy.ts'
|
|
7
7
|
|
|
@@ -6,10 +6,10 @@ import {
|
|
|
6
6
|
import { setFontSize } from '../../setFontSize.ts'
|
|
7
7
|
import { getVisibleLeaves } from '../getVisibleLeaves.ts'
|
|
8
8
|
|
|
9
|
-
import type { ClickMapIndex } from './clickMap.ts'
|
|
10
9
|
import type { HierarchyNode } from '../../hierarchy.ts'
|
|
11
10
|
import type { MsaViewModel } from '../../model.ts'
|
|
12
11
|
import type { RenderCtx } from '../renderCtx.ts'
|
|
12
|
+
import type { ClickMapIndex } from './clickMap.ts'
|
|
13
13
|
import type { Theme } from '@mui/material'
|
|
14
14
|
|
|
15
15
|
export const padding = 600
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { useRef, useState } from 'react'
|
|
2
|
-
import type React from 'react'
|
|
3
2
|
|
|
4
3
|
import { ClickMapIndex } from './clickMap.ts'
|
|
5
4
|
|
|
6
|
-
import type { ClickEntry } from './clickMap.ts'
|
|
7
5
|
import type { MsaViewModel } from '../../model.ts'
|
|
6
|
+
import type { ClickEntry } from './clickMap.ts'
|
|
7
|
+
import type React from 'react'
|
|
8
8
|
|
|
9
9
|
export interface TreeHoverTarget extends ClickEntry {
|
|
10
10
|
clientX: number
|
package/src/model.ts
CHANGED
|
@@ -13,7 +13,6 @@ import {
|
|
|
13
13
|
parseNewick,
|
|
14
14
|
} from 'msa-parsers'
|
|
15
15
|
|
|
16
|
-
|
|
17
16
|
import { calculateBlocks } from './calculateBlocks.ts'
|
|
18
17
|
import { clustalXColumnColors } from './clustalX.ts'
|
|
19
18
|
import colorSchemes from './colorSchemes.ts'
|
|
@@ -280,7 +279,8 @@ function stateModelFactory() {
|
|
|
280
279
|
* #volatile
|
|
281
280
|
*/
|
|
282
281
|
status: undefined as
|
|
283
|
-
{ msg: string; url?: string; onCancel?: () => void }
|
|
282
|
+
| { msg: string; url?: string; onCancel?: () => void }
|
|
283
|
+
| undefined,
|
|
284
284
|
/**
|
|
285
285
|
* #volatile
|
|
286
286
|
* high resolution scale factor, helps make canvas look better on hi-dpi
|
|
@@ -343,7 +343,8 @@ function stateModelFactory() {
|
|
|
343
343
|
* the currently hovered tree node ID and its descendant leaf names
|
|
344
344
|
*/
|
|
345
345
|
hoveredTreeNode: undefined as
|
|
346
|
-
{ nodeId: string; descendantNames: string[] }
|
|
346
|
+
| { nodeId: string; descendantNames: string[] }
|
|
347
|
+
| undefined,
|
|
347
348
|
|
|
348
349
|
/**
|
|
349
350
|
* #volatile
|
|
@@ -376,7 +377,8 @@ function stateModelFactory() {
|
|
|
376
377
|
* #volatile
|
|
377
378
|
*/
|
|
378
379
|
interProAnnotations: undefined as
|
|
379
|
-
|
|
380
|
+
| undefined
|
|
381
|
+
| Record<string, InterProScanResults>,
|
|
380
382
|
}))
|
|
381
383
|
.actions(self => ({
|
|
382
384
|
/**
|
|
@@ -681,9 +683,26 @@ function stateModelFactory() {
|
|
|
681
683
|
},
|
|
682
684
|
/**
|
|
683
685
|
* #getter
|
|
686
|
+
* extra per-row attributes, keyed by row name. Parsed defensively: the
|
|
687
|
+
* source is a user-supplied document (treeMetadataFilehandle, or a
|
|
688
|
+
* session snapshot), and this computed is read by labelWidthMap on every
|
|
689
|
+
* layout, so a malformed file would otherwise throw out of rendering and
|
|
690
|
+
* take the whole view down over a decorative field.
|
|
684
691
|
*/
|
|
685
|
-
get treeMetadata() {
|
|
686
|
-
|
|
692
|
+
get treeMetadata(): Record<string, Record<string, string> | undefined> {
|
|
693
|
+
const text = self.data.treeMetadata
|
|
694
|
+
if (!text) {
|
|
695
|
+
return {}
|
|
696
|
+
}
|
|
697
|
+
try {
|
|
698
|
+
const parsed: unknown = JSON.parse(text)
|
|
699
|
+
return typeof parsed === 'object' && parsed !== null
|
|
700
|
+
? (parsed as Record<string, Record<string, string> | undefined>)
|
|
701
|
+
: {}
|
|
702
|
+
} catch (e) {
|
|
703
|
+
console.error('failed to parse treeMetadata', e)
|
|
704
|
+
return {}
|
|
705
|
+
}
|
|
687
706
|
},
|
|
688
707
|
/**
|
|
689
708
|
* #getter
|
package/src/renderToSvg.tsx
CHANGED
|
@@ -306,6 +306,7 @@ function TrackRendering({
|
|
|
306
306
|
model,
|
|
307
307
|
ctx,
|
|
308
308
|
contrastScheme,
|
|
309
|
+
theme,
|
|
309
310
|
offsetX,
|
|
310
311
|
blockSizeXOverride: msaAreaWidth,
|
|
311
312
|
highResScaleFactorOverride: 1,
|
|
@@ -348,7 +349,6 @@ function ClipGroup({
|
|
|
348
349
|
<g
|
|
349
350
|
clipPath={`url(#${clipId})`}
|
|
350
351
|
transform={transform}
|
|
351
|
-
// eslint-disable-next-line @eslint-react/dom-no-dangerously-set-innerhtml
|
|
352
352
|
dangerouslySetInnerHTML={{ __html: ctx.getSvg().innerHTML }}
|
|
353
353
|
/>
|
|
354
354
|
</>
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { expect, test, vi } from 'vitest'
|
|
2
|
+
|
|
3
|
+
import stateModelFactory from './model.ts'
|
|
4
|
+
|
|
5
|
+
const MsaView = stateModelFactory()
|
|
6
|
+
|
|
7
|
+
const msa = '>seq1\nACGT\n>seq2\nACCT\n'
|
|
8
|
+
|
|
9
|
+
test('treeMetadata is parsed and keyed by row name', () => {
|
|
10
|
+
const model = MsaView.create({ type: 'MsaView' })
|
|
11
|
+
model.setData({
|
|
12
|
+
msa,
|
|
13
|
+
treeMetadata: JSON.stringify({ seq1: { genome: 'Human' } }),
|
|
14
|
+
})
|
|
15
|
+
expect(model.treeMetadata.seq1?.genome).toBe('Human')
|
|
16
|
+
expect(model.treeMetadata.seq2).toBeUndefined()
|
|
17
|
+
expect(model.getRowData('seq1').treeMetadata).toEqual({ genome: 'Human' })
|
|
18
|
+
})
|
|
19
|
+
|
|
20
|
+
test('malformed treeMetadata degrades to empty rather than throwing', () => {
|
|
21
|
+
const model = MsaView.create({ type: 'MsaView' })
|
|
22
|
+
const spy = vi.spyOn(console, 'error').mockImplementation(() => {})
|
|
23
|
+
model.setData({ msa, treeMetadata: '{not json' })
|
|
24
|
+
|
|
25
|
+
// treeMetadata comes from a user-supplied file, and consumers of this
|
|
26
|
+
// computed run during layout/render (labelWidthMap measures every label), so
|
|
27
|
+
// a parse failure must not throw out of them
|
|
28
|
+
expect(model.treeMetadata).toEqual({})
|
|
29
|
+
expect(() => model.getRowData('seq1')).not.toThrow()
|
|
30
|
+
expect(spy).toHaveBeenCalled()
|
|
31
|
+
spy.mockRestore()
|
|
32
|
+
})
|
|
33
|
+
|
|
34
|
+
test('non-object treeMetadata degrades to empty', () => {
|
|
35
|
+
const model = MsaView.create({ type: 'MsaView' })
|
|
36
|
+
model.setData({ msa, treeMetadata: 'null' })
|
|
37
|
+
expect(model.treeMetadata).toEqual({})
|
|
38
|
+
expect(() => model.getRowData('seq1')).not.toThrow()
|
|
39
|
+
})
|
package/src/useCanvasAutorun.ts
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import { useEffect, useRef } from 'react'
|
|
2
|
-
import type React from 'react'
|
|
3
2
|
|
|
4
3
|
import { autorun } from 'mobx'
|
|
5
4
|
|
|
5
|
+
import type React from 'react'
|
|
6
|
+
|
|
6
7
|
// Wires a canvas ref to a mobx autorun: grabs the 2d context once the canvas
|
|
7
8
|
// mounts and re-runs `draw` whenever any observable it reads changes. Collapses
|
|
8
9
|
// the getContext/null-guard/autorun-dispose boilerplate repeated by every
|
|
@@ -22,7 +23,7 @@ export function useCanvasAutorun(
|
|
|
22
23
|
draw(ctx)
|
|
23
24
|
})
|
|
24
25
|
: undefined
|
|
25
|
-
// eslint-disable-next-line
|
|
26
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
26
27
|
}, deps)
|
|
27
28
|
return ref
|
|
28
29
|
}
|