react-msaview 8.3.0 → 8.4.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 +77 -287
- package/bundle/index.js.map +4 -4
- package/dist/blockFasta.d.ts +6 -0
- package/dist/blockFasta.js +12 -0
- package/dist/blockFasta.js.map +1 -0
- package/dist/colorSchemes.d.ts +7 -0
- package/dist/colorSchemes.js +15 -0
- package/dist/colorSchemes.js.map +1 -1
- package/dist/components/MSAView.js +15 -9
- package/dist/components/MSAView.js.map +1 -1
- package/dist/components/MSAViewer.d.ts +28 -7
- package/dist/components/MSAViewer.js +61 -22
- package/dist/components/MSAViewer.js.map +1 -1
- package/dist/components/MetadataTable.d.ts +5 -0
- package/dist/components/MetadataTable.js +29 -0
- package/dist/components/MetadataTable.js.map +1 -0
- package/dist/components/Track.js +11 -2
- package/dist/components/Track.js.map +1 -1
- package/dist/components/dialogs/MetadataDialog.js +5 -6
- package/dist/components/dialogs/MetadataDialog.js.map +1 -1
- package/dist/components/header/ColorSchemeMenu.d.ts +6 -0
- package/dist/components/header/ColorSchemeMenu.js +23 -5
- package/dist/components/header/ColorSchemeMenu.js.map +1 -1
- package/dist/components/header/{RowSearch.d.ts → GoToBox.d.ts} +2 -2
- package/dist/components/header/GoToBox.js +21 -0
- package/dist/components/header/GoToBox.js.map +1 -0
- package/dist/components/header/Header.js +4 -2
- package/dist/components/header/Header.js.map +1 -1
- package/dist/components/header/SelectionMenu.d.ts +12 -0
- package/dist/components/header/SelectionMenu.js +72 -0
- package/dist/components/header/SelectionMenu.js.map +1 -0
- package/dist/components/header/goTo.d.ts +20 -0
- package/dist/components/header/goTo.js +69 -0
- package/dist/components/header/goTo.js.map +1 -0
- package/dist/components/msa/MSACanvas.js +13 -2
- package/dist/components/msa/MSACanvas.js.map +1 -1
- package/dist/components/msa/MSACanvasBlock.js +5 -1
- package/dist/components/msa/MSACanvasBlock.js.map +1 -1
- package/dist/components/msa/msaKeys.js +6 -0
- package/dist/components/msa/msaKeys.js.map +1 -1
- package/dist/components/msa/msaRaster.js +1 -0
- package/dist/components/msa/msaRaster.js.map +1 -1
- package/dist/components/msa/renderHighlights.d.ts +14 -3
- package/dist/components/msa/renderHighlights.js +29 -4
- package/dist/components/msa/renderHighlights.js.map +1 -1
- package/dist/components/msa/tileColor.js +9 -8
- package/dist/components/msa/tileColor.js.map +1 -1
- package/dist/components/msa/useMsaBlockMouse.d.ts +1 -1
- package/dist/components/msa/useMsaBlockMouse.js +18 -11
- package/dist/components/msa/useMsaBlockMouse.js.map +1 -1
- package/dist/components/overlayColors.d.ts +2 -0
- package/dist/components/overlayColors.js +3 -0
- package/dist/components/overlayColors.js.map +1 -1
- package/dist/components/selectionDrag.d.ts +17 -0
- package/dist/components/selectionDrag.js +30 -0
- package/dist/components/selectionDrag.js.map +1 -0
- package/dist/components/tracks/useTrackHover.d.ts +3 -1
- package/dist/components/tracks/useTrackHover.js +26 -6
- package/dist/components/tracks/useTrackHover.js.map +1 -1
- package/dist/components/tree/dialogs/TreeNodeInfoDialog.js +9 -8
- package/dist/components/tree/dialogs/TreeNodeInfoDialog.js.map +1 -1
- package/dist/constants.d.ts +1 -1
- package/dist/constants.js +6 -6
- package/dist/constants.js.map +1 -1
- package/dist/element.d.ts +7 -3
- package/dist/element.js +32 -4
- package/dist/element.js.map +1 -1
- package/dist/featuresLayer.d.ts +8 -0
- package/dist/featuresLayer.js +42 -0
- package/dist/featuresLayer.js.map +1 -0
- package/dist/index.d.ts +1 -1
- package/dist/model/DataModel.d.ts +1 -1
- package/dist/model/DataModel.js +3 -3
- package/dist/model/DataModel.js.map +1 -1
- package/dist/model/msaModel.d.ts +14 -1
- package/dist/model/msaModel.js +17 -1
- package/dist/model/msaModel.js.map +1 -1
- package/dist/model.d.ts +122 -11
- package/dist/model.js +260 -41
- package/dist/model.js.map +1 -1
- package/dist/svgTestUtil.d.ts +68 -8
- package/dist/types.d.ts +50 -0
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/package.json +3 -3
- package/src/blockFasta.ts +18 -0
- package/src/colorSchemes.ts +20 -0
- package/src/components/MSAView.tsx +16 -9
- package/src/components/MSAViewer.tsx +95 -26
- package/src/components/MetadataTable.tsx +55 -0
- package/src/components/Track.tsx +14 -1
- package/src/components/dialogs/MetadataDialog.tsx +9 -8
- package/src/components/header/ColorSchemeMenu.tsx +31 -12
- package/src/components/header/GoToBox.tsx +50 -0
- package/src/components/header/Header.tsx +6 -2
- package/src/components/header/SelectionMenu.tsx +117 -0
- package/src/components/header/goTo.ts +75 -0
- package/src/components/msa/MSACanvas.tsx +12 -2
- package/src/components/msa/MSACanvasBlock.tsx +5 -1
- package/src/components/msa/msaKeys.ts +6 -0
- package/src/components/msa/msaRaster.ts +1 -0
- package/src/components/msa/renderHighlights.ts +46 -4
- package/src/components/msa/tileColor.ts +9 -8
- package/src/components/msa/useMsaBlockMouse.ts +24 -27
- package/src/components/overlayColors.ts +4 -0
- package/src/components/selectionDrag.ts +42 -0
- package/src/components/tracks/useTrackHover.ts +28 -6
- package/src/components/tree/dialogs/TreeNodeInfoDialog.tsx +14 -16
- package/src/constants.ts +6 -6
- package/src/element.ts +45 -5
- package/src/featuresLayer.ts +48 -0
- package/src/index.ts +5 -0
- package/src/model/DataModel.ts +3 -3
- package/src/model/msaModel.ts +19 -1
- package/src/model.ts +309 -51
- package/src/types.ts +58 -0
- package/src/version.ts +1 -1
- package/dist/components/header/RowSearch.js +0 -15
- package/dist/components/header/RowSearch.js.map +0 -1
- package/dist/components/header/revealRow.d.ts +0 -3
- package/dist/components/header/revealRow.js +0 -15
- package/dist/components/header/revealRow.js.map +0 -1
- package/src/components/header/RowSearch.tsx +0 -34
- package/src/components/header/revealRow.ts +0 -17
|
@@ -2,12 +2,12 @@
|
|
|
2
2
|
// only the active scheme's column table leaves the other per-column table
|
|
3
3
|
// uncomputed.
|
|
4
4
|
export function tileColorFn(model) {
|
|
5
|
-
const {
|
|
6
|
-
if (
|
|
5
|
+
const { dynamicColorSchemeName } = model;
|
|
6
|
+
if (dynamicColorSchemeName === 'clustalx_protein_dynamic') {
|
|
7
7
|
const { colClustalX } = model;
|
|
8
8
|
return (col, letter) => colClustalX[col][letter];
|
|
9
9
|
}
|
|
10
|
-
if (
|
|
10
|
+
if (dynamicColorSchemeName === 'percent_identity_dynamic') {
|
|
11
11
|
const { colConsensus } = model;
|
|
12
12
|
return (col, letter) => {
|
|
13
13
|
const consensus = colConsensus[col];
|
|
@@ -17,14 +17,15 @@ export function tileColorFn(model) {
|
|
|
17
17
|
const { colorScheme } = model;
|
|
18
18
|
return (_col, letter) => colorScheme[letter];
|
|
19
19
|
}
|
|
20
|
-
// The
|
|
21
|
-
//
|
|
20
|
+
// The table the active scheme colors from: a dynamic scheme's per-column table,
|
|
21
|
+
// or the letter table of a static scheme or a `customColorScheme` map. A cache
|
|
22
|
+
// of rendered colors keys on its identity plus the scheme name.
|
|
22
23
|
export function tileColorTable(model) {
|
|
23
|
-
const {
|
|
24
|
-
if (
|
|
24
|
+
const { dynamicColorSchemeName } = model;
|
|
25
|
+
if (dynamicColorSchemeName === 'clustalx_protein_dynamic') {
|
|
25
26
|
return model.colClustalX;
|
|
26
27
|
}
|
|
27
|
-
if (
|
|
28
|
+
if (dynamicColorSchemeName === 'percent_identity_dynamic') {
|
|
28
29
|
return model.colConsensus;
|
|
29
30
|
}
|
|
30
31
|
return model.colorScheme;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tileColor.js","sourceRoot":"","sources":["../../../src/components/msa/tileColor.ts"],"names":[],"mappings":"AAEA,8EAA8E;AAC9E,0EAA0E;AAC1E,cAAc;AACd,MAAM,UAAU,WAAW,CAAC,KAAmB;IAC7C,MAAM,EAAE,
|
|
1
|
+
{"version":3,"file":"tileColor.js","sourceRoot":"","sources":["../../../src/components/msa/tileColor.ts"],"names":[],"mappings":"AAEA,8EAA8E;AAC9E,0EAA0E;AAC1E,cAAc;AACd,MAAM,UAAU,WAAW,CAAC,KAAmB;IAC7C,MAAM,EAAE,sBAAsB,EAAE,GAAG,KAAK,CAAA;IACxC,IAAI,sBAAsB,KAAK,0BAA0B,EAAE,CAAC;QAC1D,MAAM,EAAE,WAAW,EAAE,GAAG,KAAK,CAAA;QAC7B,OAAO,CAAC,GAAW,EAAE,MAAc,EAAE,EAAE,CAAC,WAAW,CAAC,GAAG,CAAE,CAAC,MAAM,CAAC,CAAA;IACnE,CAAC;IACD,IAAI,sBAAsB,KAAK,0BAA0B,EAAE,CAAC;QAC1D,MAAM,EAAE,YAAY,EAAE,GAAG,KAAK,CAAA;QAC9B,OAAO,CAAC,GAAW,EAAE,MAAc,EAAE,EAAE;YACrC,MAAM,SAAS,GAAG,YAAY,CAAC,GAAG,CAAE,CAAA;YACpC,OAAO,MAAM,KAAK,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAA;QAClE,CAAC,CAAA;IACH,CAAC;IACD,MAAM,EAAE,WAAW,EAAE,GAAG,KAAK,CAAA;IAC7B,OAAO,CAAC,IAAY,EAAE,MAAc,EAAE,EAAE,CAAC,WAAW,CAAC,MAAM,CAAC,CAAA;AAC9D,CAAC;AAED,gFAAgF;AAChF,+EAA+E;AAC/E,gEAAgE;AAChE,MAAM,UAAU,cAAc,CAAC,KAAmB;IAChD,MAAM,EAAE,sBAAsB,EAAE,GAAG,KAAK,CAAA;IACxC,IAAI,sBAAsB,KAAK,0BAA0B,EAAE,CAAC;QAC1D,OAAO,KAAK,CAAC,WAAW,CAAA;IAC1B,CAAC;IACD,IAAI,sBAAsB,KAAK,0BAA0B,EAAE,CAAC;QAC1D,OAAO,KAAK,CAAC,YAAY,CAAA;IAC3B,CAAC;IACD,OAAO,KAAK,CAAC,WAAW,CAAA;AAC1B,CAAC"}
|
|
@@ -17,7 +17,7 @@ export declare function useMsaBlockMouse({ model, offsetX, offsetY, }: {
|
|
|
17
17
|
}): {
|
|
18
18
|
anchor: import("../useHoverAnchor.ts").HoverAnchor<true> | undefined;
|
|
19
19
|
onMouseMove: (event: React.MouseEvent, el: HTMLElement) => void;
|
|
20
|
-
onMouseDown: (event: React.MouseEvent) => void;
|
|
20
|
+
onMouseDown: (event: React.MouseEvent, el: HTMLElement) => void;
|
|
21
21
|
onClick: (event: React.MouseEvent, el: HTMLElement) => void;
|
|
22
22
|
onMouseLeave: () => void;
|
|
23
23
|
};
|
|
@@ -1,13 +1,6 @@
|
|
|
1
1
|
import { useRef } from 'react';
|
|
2
|
+
import { dragSelection, maxClickTravel } from '../selectionDrag.js';
|
|
2
3
|
import { useHoverAnchor } from '../useHoverAnchor.js';
|
|
3
|
-
const maxClickTravel = 3;
|
|
4
|
-
function eventToColRow({ event, el, offsetX, offsetY, colWidth, rowHeight, }) {
|
|
5
|
-
const { left, top } = el.getBoundingClientRect();
|
|
6
|
-
return {
|
|
7
|
-
col: Math.floor((event.clientX - left + offsetX) / colWidth),
|
|
8
|
-
row: Math.floor((event.clientY - top + offsetY) / rowHeight),
|
|
9
|
-
};
|
|
10
|
-
}
|
|
11
4
|
/**
|
|
12
5
|
* Translates pointer events over one MSA block into model column/row hover and
|
|
13
6
|
* click state, and reports where a tooltip should be anchored.
|
|
@@ -21,9 +14,18 @@ function eventToColRow({ event, el, offsetX, offsetY, colWidth, rowHeight, }) {
|
|
|
21
14
|
export function useMsaBlockMouse({ model, offsetX, offsetY, }) {
|
|
22
15
|
const { anchor, hoverAt, clearAnchor } = useHoverAnchor();
|
|
23
16
|
const downAt = useRef(undefined);
|
|
17
|
+
// The block's rect places its cells on the page. A drag keeps the mapping
|
|
18
|
+
// it started with, so each point subtracts the scroll since then.
|
|
19
|
+
function cellMapper(el) {
|
|
20
|
+
const { left, top } = el.getBoundingClientRect();
|
|
21
|
+
const { scrollX, scrollY } = model;
|
|
22
|
+
return ({ clientX, clientY }) => ({
|
|
23
|
+
col: Math.floor((clientX - left + offsetX - (model.scrollX - scrollX)) / model.colWidth),
|
|
24
|
+
row: Math.floor((clientY - top + offsetY - (model.scrollY - scrollY)) / model.rowHeight),
|
|
25
|
+
});
|
|
26
|
+
}
|
|
24
27
|
function colRow(event, el) {
|
|
25
|
-
|
|
26
|
-
return eventToColRow({ event, el, offsetX, offsetY, colWidth, rowHeight });
|
|
28
|
+
return cellMapper(el)(event);
|
|
27
29
|
}
|
|
28
30
|
// a block can extend past the alignment (the last block is a full tile wide,
|
|
29
31
|
// and the panel is taller than the rows when there are few of them), so a
|
|
@@ -38,8 +40,13 @@ export function useMsaBlockMouse({ model, offsetX, offsetY, }) {
|
|
|
38
40
|
const hasTooltip = !!model.hoveredInsertion || model.mouseOverDomains.length > 0;
|
|
39
41
|
hoverAt(event, hasTooltip || undefined);
|
|
40
42
|
}
|
|
41
|
-
|
|
43
|
+
// shift+drag selects a block; MSACanvas leaves a shifted press out of its
|
|
44
|
+
// pan
|
|
45
|
+
function onMouseDown(event, el) {
|
|
42
46
|
downAt.current = { x: event.clientX, y: event.clientY };
|
|
47
|
+
if (event.shiftKey && event.button === 0) {
|
|
48
|
+
dragSelection(model, event, cellMapper(el));
|
|
49
|
+
}
|
|
43
50
|
}
|
|
44
51
|
function onClick(event, el) {
|
|
45
52
|
const down = downAt.current;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useMsaBlockMouse.js","sourceRoot":"","sources":["../../../src/components/msa/useMsaBlockMouse.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,OAAO,CAAA;AAE9B,OAAO,EAAE,cAAc,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"useMsaBlockMouse.js","sourceRoot":"","sources":["../../../src/components/msa/useMsaBlockMouse.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,3 +3,5 @@ export declare const treeHoverColor = "rgba(255,165,0,0.2)";
|
|
|
3
3
|
export declare const multiRowHoverColor = "rgba(255,165,0,0.15)";
|
|
4
4
|
export declare const hoverColor = "rgba(0,0,0,0.15)";
|
|
5
5
|
export declare const clickColor = "rgba(128,128,0,0.2)";
|
|
6
|
+
export declare const selectionFill = "rgba(25,118,210,0.22)";
|
|
7
|
+
export declare const selectionBorder = "rgba(25,118,210,0.95)";
|
|
@@ -13,4 +13,7 @@ export const multiRowHoverColor = 'rgba(255,165,0,0.15)';
|
|
|
13
13
|
// match or the crosshair appears to change color as it crosses the tracks.
|
|
14
14
|
export const hoverColor = 'rgba(0,0,0,0.15)';
|
|
15
15
|
export const clickColor = 'rgba(128,128,0,0.2)';
|
|
16
|
+
// the selected block, a blue that reads apart from the orange highlights
|
|
17
|
+
export const selectionFill = 'rgba(25,118,210,0.22)';
|
|
18
|
+
export const selectionBorder = 'rgba(25,118,210,0.95)';
|
|
16
19
|
//# sourceMappingURL=overlayColors.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"overlayColors.js","sourceRoot":"","sources":["../../src/components/overlayColors.ts"],"names":[],"mappings":"AAAA,iFAAiF;AACjF,gFAAgF;AAChF,gEAAgE;AAEhE,yEAAyE;AACzE,MAAM,CAAC,MAAM,cAAc,GAAG,qBAAqB,CAAA;AAEnD,+EAA+E;AAC/E,8EAA8E;AAC9E,gFAAgF;AAChF,MAAM,CAAC,MAAM,cAAc,GAAG,qBAAqB,CAAA;AACnD,MAAM,CAAC,MAAM,kBAAkB,GAAG,sBAAsB,CAAA;AAExD,gFAAgF;AAChF,4EAA4E;AAC5E,2EAA2E;AAC3E,MAAM,CAAC,MAAM,UAAU,GAAG,kBAAkB,CAAA;AAC5C,MAAM,CAAC,MAAM,UAAU,GAAG,qBAAqB,CAAA"}
|
|
1
|
+
{"version":3,"file":"overlayColors.js","sourceRoot":"","sources":["../../src/components/overlayColors.ts"],"names":[],"mappings":"AAAA,iFAAiF;AACjF,gFAAgF;AAChF,gEAAgE;AAEhE,yEAAyE;AACzE,MAAM,CAAC,MAAM,cAAc,GAAG,qBAAqB,CAAA;AAEnD,+EAA+E;AAC/E,8EAA8E;AAC9E,gFAAgF;AAChF,MAAM,CAAC,MAAM,cAAc,GAAG,qBAAqB,CAAA;AACnD,MAAM,CAAC,MAAM,kBAAkB,GAAG,sBAAsB,CAAA;AAExD,gFAAgF;AAChF,4EAA4E;AAC5E,2EAA2E;AAC3E,MAAM,CAAC,MAAM,UAAU,GAAG,kBAAkB,CAAA;AAC5C,MAAM,CAAC,MAAM,UAAU,GAAG,qBAAqB,CAAA;AAE/C,yEAAyE;AACzE,MAAM,CAAC,MAAM,aAAa,GAAG,uBAAuB,CAAA;AACpD,MAAM,CAAC,MAAM,eAAe,GAAG,uBAAuB,CAAA"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { MsaViewModel } from '../model.ts';
|
|
2
|
+
export declare const maxClickTravel = 3;
|
|
3
|
+
export interface ClientPoint {
|
|
4
|
+
clientX: number;
|
|
5
|
+
clientY: number;
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* Follows a press through the window until its release, selecting the block
|
|
9
|
+
* between the cell it started on and the cell under the pointer. The selection
|
|
10
|
+
* starts once the pointer travels past `maxClickTravel`, so a press that stays
|
|
11
|
+
* put reaches the click handlers unchanged. `cellAt` maps a client point to a
|
|
12
|
+
* visible column and row index, or a column alone to select across every row.
|
|
13
|
+
*/
|
|
14
|
+
export declare function dragSelection(model: MsaViewModel, start: ClientPoint, cellAt: (point: ClientPoint) => {
|
|
15
|
+
col: number;
|
|
16
|
+
row?: number;
|
|
17
|
+
}): void;
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { isAlive } from '@jbrowse/mobx-state-tree';
|
|
2
|
+
// a press that travels further than this, in px, is a drag and not a click
|
|
3
|
+
export const maxClickTravel = 3;
|
|
4
|
+
/**
|
|
5
|
+
* Follows a press through the window until its release, selecting the block
|
|
6
|
+
* between the cell it started on and the cell under the pointer. The selection
|
|
7
|
+
* starts once the pointer travels past `maxClickTravel`, so a press that stays
|
|
8
|
+
* put reaches the click handlers unchanged. `cellAt` maps a client point to a
|
|
9
|
+
* visible column and row index, or a column alone to select across every row.
|
|
10
|
+
*/
|
|
11
|
+
export function dragSelection(model, start, cellAt) {
|
|
12
|
+
const anchor = cellAt(start);
|
|
13
|
+
const { clientX, clientY } = start;
|
|
14
|
+
let dragging = false;
|
|
15
|
+
function onMove(event) {
|
|
16
|
+
dragging ||=
|
|
17
|
+
Math.hypot(event.clientX - clientX, event.clientY - clientY) >
|
|
18
|
+
maxClickTravel;
|
|
19
|
+
if (dragging && isAlive(model)) {
|
|
20
|
+
model.selectBlock(anchor, cellAt(event));
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
function onUp() {
|
|
24
|
+
window.removeEventListener('mousemove', onMove);
|
|
25
|
+
window.removeEventListener('mouseup', onUp);
|
|
26
|
+
}
|
|
27
|
+
window.addEventListener('mousemove', onMove);
|
|
28
|
+
window.addEventListener('mouseup', onUp);
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=selectionDrag.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"selectionDrag.js","sourceRoot":"","sources":["../../src/components/selectionDrag.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAA;AAIlD,2EAA2E;AAC3E,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,CAAA;AAO/B;;;;;;GAMG;AACH,MAAM,UAAU,aAAa,CAC3B,KAAmB,EACnB,KAAkB,EAClB,MAA6D;IAE7D,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAA;IAC5B,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,KAAK,CAAA;IAClC,IAAI,QAAQ,GAAG,KAAK,CAAA;IACpB,SAAS,MAAM,CAAC,KAAiB;QAC/B,QAAQ;YACN,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,GAAG,OAAO,EAAE,KAAK,CAAC,OAAO,GAAG,OAAO,CAAC;gBAC5D,cAAc,CAAA;QAChB,IAAI,QAAQ,IAAI,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YAC/B,KAAK,CAAC,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAA;QAC1C,CAAC;IACH,CAAC;IACD,SAAS,IAAI;QACX,MAAM,CAAC,mBAAmB,CAAC,WAAW,EAAE,MAAM,CAAC,CAAA;QAC/C,MAAM,CAAC,mBAAmB,CAAC,SAAS,EAAE,IAAI,CAAC,CAAA;IAC7C,CAAC;IACD,MAAM,CAAC,gBAAgB,CAAC,WAAW,EAAE,MAAM,CAAC,CAAA;IAC5C,MAAM,CAAC,gBAAgB,CAAC,SAAS,EAAE,IAAI,CAAC,CAAA;AAC1C,CAAC"}
|
|
@@ -3,7 +3,8 @@ import type React from 'react';
|
|
|
3
3
|
/**
|
|
4
4
|
* Translates pointer events over a track's row into the hovered column and a
|
|
5
5
|
* tooltip anchor. The track shares the alignment's columns, so hovering it sets
|
|
6
|
-
* the model's mouse column too and the alignment's hover band follows along.
|
|
6
|
+
* the model's mouse column too and the alignment's hover band follows along. A
|
|
7
|
+
* drag along the row selects the columns it covers across every row.
|
|
7
8
|
*
|
|
8
9
|
* `tooltip` off skips the anchor, so a track whose tooltip is turned off still
|
|
9
10
|
* drives the hover band without re-rendering on every mouse move.
|
|
@@ -14,5 +15,6 @@ export declare function useTrackHover({ model, tooltip, }: {
|
|
|
14
15
|
}): {
|
|
15
16
|
anchor: import("../useHoverAnchor.ts").HoverAnchor<number> | undefined;
|
|
16
17
|
onMouseMove: (event: React.MouseEvent, el: HTMLElement) => void;
|
|
18
|
+
onMouseDown: (event: React.MouseEvent, el: HTMLElement) => void;
|
|
17
19
|
onMouseLeave: () => void;
|
|
18
20
|
};
|
|
@@ -1,8 +1,10 @@
|
|
|
1
|
+
import { dragSelection } from '../selectionDrag.js';
|
|
1
2
|
import { useHoverAnchor } from '../useHoverAnchor.js';
|
|
2
3
|
/**
|
|
3
4
|
* Translates pointer events over a track's row into the hovered column and a
|
|
4
5
|
* tooltip anchor. The track shares the alignment's columns, so hovering it sets
|
|
5
|
-
* the model's mouse column too and the alignment's hover band follows along.
|
|
6
|
+
* the model's mouse column too and the alignment's hover band follows along. A
|
|
7
|
+
* drag along the row selects the columns it covers across every row.
|
|
6
8
|
*
|
|
7
9
|
* `tooltip` off skips the anchor, so a track whose tooltip is turned off still
|
|
8
10
|
* drives the hover band without re-rendering on every mouse move.
|
|
@@ -11,20 +13,38 @@ export function useTrackHover({ model, tooltip, }) {
|
|
|
11
13
|
const { anchor, hoverAt, clearAnchor } = useHoverAnchor();
|
|
12
14
|
// the blocks are laid out in column space and scrolled by a transform on
|
|
13
15
|
// their container, so the pointer's column comes off the untransformed row
|
|
16
|
+
function colAt(clientX, left) {
|
|
17
|
+
return Math.floor((clientX - left - model.scrollX) / model.colWidth);
|
|
18
|
+
}
|
|
14
19
|
function onMouseMove(event, el) {
|
|
15
|
-
const
|
|
16
|
-
const
|
|
17
|
-
const col = Math.floor((event.clientX - left - scrollX) / colWidth);
|
|
18
|
-
const hit = col >= 0 && col < numColumns;
|
|
20
|
+
const col = colAt(event.clientX, el.getBoundingClientRect().left);
|
|
21
|
+
const hit = col >= 0 && col < model.numColumns;
|
|
19
22
|
model.setMousePos(hit ? col : undefined, undefined);
|
|
20
23
|
if (tooltip) {
|
|
21
24
|
hoverAt(event, hit ? col : undefined);
|
|
22
25
|
}
|
|
23
26
|
}
|
|
27
|
+
// a press on a track's canvas, which leaves out the resize divider under it.
|
|
28
|
+
// The row takes the focus, so Escape reaches onMsaKey from there too
|
|
29
|
+
function onMouseDown(event, el) {
|
|
30
|
+
if (event.button === 0 && event.target instanceof HTMLCanvasElement) {
|
|
31
|
+
event.preventDefault();
|
|
32
|
+
el.focus({ preventScroll: true });
|
|
33
|
+
const { left } = el.getBoundingClientRect();
|
|
34
|
+
dragSelection(model, event, ({ clientX }) => ({
|
|
35
|
+
col: colAt(clientX, left),
|
|
36
|
+
}));
|
|
37
|
+
}
|
|
38
|
+
}
|
|
24
39
|
function onMouseLeave() {
|
|
25
40
|
clearAnchor();
|
|
26
41
|
model.setMousePos(undefined, undefined);
|
|
27
42
|
}
|
|
28
|
-
return {
|
|
43
|
+
return {
|
|
44
|
+
anchor: tooltip ? anchor : undefined,
|
|
45
|
+
onMouseMove,
|
|
46
|
+
onMouseDown,
|
|
47
|
+
onMouseLeave,
|
|
48
|
+
};
|
|
29
49
|
}
|
|
30
50
|
//# sourceMappingURL=useTrackHover.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useTrackHover.js","sourceRoot":"","sources":["../../../src/components/tracks/useTrackHover.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AAKrD
|
|
1
|
+
{"version":3,"file":"useTrackHover.js","sourceRoot":"","sources":["../../../src/components/tracks/useTrackHover.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AAKrD;;;;;;;;GAQG;AACH,MAAM,UAAU,aAAa,CAAC,EAC5B,KAAK,EACL,OAAO,GAIR;IACC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,GAAG,cAAc,EAAU,CAAA;IAEjE,yEAAyE;IACzE,2EAA2E;IAC3E,SAAS,KAAK,CAAC,OAAe,EAAE,IAAY;QAC1C,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,GAAG,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAA;IACtE,CAAC;IAED,SAAS,WAAW,CAAC,KAAuB,EAAE,EAAe;QAC3D,MAAM,GAAG,GAAG,KAAK,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,CAAC,qBAAqB,EAAE,CAAC,IAAI,CAAC,CAAA;QACjE,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,IAAI,GAAG,GAAG,KAAK,CAAC,UAAU,CAAA;QAC9C,KAAK,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,EAAE,SAAS,CAAC,CAAA;QACnD,IAAI,OAAO,EAAE,CAAC;YACZ,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,CAAA;QACvC,CAAC;IACH,CAAC;IAED,6EAA6E;IAC7E,qEAAqE;IACrE,SAAS,WAAW,CAAC,KAAuB,EAAE,EAAe;QAC3D,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,YAAY,iBAAiB,EAAE,CAAC;YACpE,KAAK,CAAC,cAAc,EAAE,CAAA;YACtB,EAAE,CAAC,KAAK,CAAC,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAA;YACjC,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,qBAAqB,EAAE,CAAA;YAC3C,aAAa,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC;gBAC5C,GAAG,EAAE,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC;aAC1B,CAAC,CAAC,CAAA;QACL,CAAC;IACH,CAAC;IAED,SAAS,YAAY;QACnB,WAAW,EAAE,CAAA;QACb,KAAK,CAAC,WAAW,CAAC,SAAS,EAAE,SAAS,CAAC,CAAA;IACzC,CAAC;IAED,OAAO;QACL,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS;QACpC,WAAW;QACX,WAAW;QACX,YAAY;KACb,CAAA;AACH,CAAC"}
|
|
@@ -1,9 +1,8 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
import Attributes from '@jbrowse/core/BaseFeatureWidget/BaseFeatureDetail/Attributes';
|
|
3
|
-
import BaseCard from '@jbrowse/core/BaseFeatureWidget/BaseFeatureDetail/BaseCard';
|
|
4
2
|
import { Dialog } from '@jbrowse/core/ui';
|
|
5
|
-
import { DialogContent } from '@mui/material';
|
|
3
|
+
import { DialogContent, Typography } from '@mui/material';
|
|
6
4
|
import { observer } from 'mobx-react';
|
|
5
|
+
import MetadataTable from '../../MetadataTable.js';
|
|
7
6
|
import SequenceTextArea from '../../SequenceTextArea.js';
|
|
8
7
|
const TreeNodeInfoDialog = observer(function ({ info, model, nodeName, onClose, }) {
|
|
9
8
|
const { rows } = model;
|
|
@@ -13,11 +12,13 @@ const TreeNodeInfoDialog = observer(function ({ info, model, nodeName, onClose,
|
|
|
13
12
|
onClose();
|
|
14
13
|
}, open: true, title: "Tree node info", maxWidth: "xl" },
|
|
15
14
|
React.createElement(DialogContent, null,
|
|
16
|
-
React.createElement(
|
|
17
|
-
|
|
18
|
-
React.createElement(
|
|
19
|
-
|
|
20
|
-
|
|
15
|
+
React.createElement(Typography, { variant: "h6" }, "Attributes"),
|
|
16
|
+
React.createElement(MetadataTable, { record: { nodeName, ...info } }),
|
|
17
|
+
React.createElement(Typography, { variant: "h6" }, "Sequence"),
|
|
18
|
+
res ? (React.createElement(SequenceTextArea, { str: [res] })) : (React.createElement(Typography, null, "Sequence not found")),
|
|
19
|
+
metadata ? (React.createElement(React.Fragment, null,
|
|
20
|
+
React.createElement(Typography, { variant: "h6" }, "Extra metadata"),
|
|
21
|
+
React.createElement(MetadataTable, { record: metadata }))) : null)));
|
|
21
22
|
});
|
|
22
23
|
export default TreeNodeInfoDialog;
|
|
23
24
|
//# sourceMappingURL=TreeNodeInfoDialog.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TreeNodeInfoDialog.js","sourceRoot":"","sources":["../../../../src/components/tree/dialogs/TreeNodeInfoDialog.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,OAAO,
|
|
1
|
+
{"version":3,"file":"TreeNodeInfoDialog.js","sourceRoot":"","sources":["../../../../src/components/tree/dialogs/TreeNodeInfoDialog.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,MAAM,wBAAyB,CAAA;AACnD,OAAO,gBAAgB,MAAM,2BAA4B,CAAA;AAIzD,MAAM,kBAAkB,GAAG,QAAQ,CAAC,UAAU,EAC5C,IAAI,EACJ,KAAK,EACL,QAAQ,EACR,OAAO,GAMR;IACC,MAAM,EAAE,IAAI,EAAE,GAAG,KAAK,CAAA;IACtB,MAAM,QAAQ,GAAG,KAAK,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAA;IAC1C,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,QAAQ,CAAC,CAAA;IAC7C,OAAO,CACL,oBAAC,MAAM,IACL,OAAO,EAAE,GAAG,EAAE;YACZ,OAAO,EAAE,CAAA;QACX,CAAC,EACD,IAAI,QACJ,KAAK,EAAC,gBAAgB,EACtB,QAAQ,EAAC,IAAI;QAEb,oBAAC,aAAa;YACZ,oBAAC,UAAU,IAAC,OAAO,EAAC,IAAI,iBAAwB;YAChD,oBAAC,aAAa,IAAC,MAAM,EAAE,EAAE,QAAQ,EAAE,GAAG,IAAI,EAAE,GAAI;YAChD,oBAAC,UAAU,IAAC,OAAO,EAAC,IAAI,eAAsB;YAC7C,GAAG,CAAC,CAAC,CAAC,CACL,oBAAC,gBAAgB,IAAC,GAAG,EAAE,CAAC,GAAG,CAAC,GAAI,CACjC,CAAC,CAAC,CAAC,CACF,oBAAC,UAAU,6BAAgC,CAC5C;YACA,QAAQ,CAAC,CAAC,CAAC,CACV;gBACE,oBAAC,UAAU,IAAC,OAAO,EAAC,IAAI,qBAA4B;gBACpD,oBAAC,aAAa,IAAC,MAAM,EAAE,QAAQ,GAAI,CAClC,CACJ,CAAC,CAAC,CAAC,IAAI,CACM,CACT,CACV,CAAA;AACH,CAAC,CAAC,CAAA;AAEF,eAAe,kBAAkB,CAAA"}
|
package/dist/constants.d.ts
CHANGED
|
@@ -45,7 +45,7 @@ export declare const maxNeighborJoiningRows = 500;
|
|
|
45
45
|
export declare const rowTintAlpha = 0.25;
|
|
46
46
|
export declare const cladeHighlightColor = "#fff3c4";
|
|
47
47
|
export declare const cladeHighlightAlpha = 0.6;
|
|
48
|
-
export declare const maxInlineSnapshotBytes =
|
|
48
|
+
export declare const maxInlineSnapshotBytes = 50000;
|
|
49
49
|
export declare const rowPanelHeaderHeight = 56;
|
|
50
50
|
export declare const treeScaleBarHeight = 22;
|
|
51
51
|
export declare const defaultFeaturePanelWidth = 200;
|
package/dist/constants.js
CHANGED
|
@@ -90,12 +90,12 @@ export const rowTintAlpha = 0.25;
|
|
|
90
90
|
// and the opacity a producer's own color takes when it carries none.
|
|
91
91
|
export const cladeHighlightColor = '#fff3c4';
|
|
92
92
|
export const cladeHighlightAlpha = 0.6;
|
|
93
|
-
// The largest inline document
|
|
94
|
-
// locally-opened file stays in the
|
|
95
|
-
//
|
|
96
|
-
//
|
|
97
|
-
//
|
|
98
|
-
export const maxInlineSnapshotBytes =
|
|
93
|
+
// The largest inline document a snapshot carries by default, which keeps a
|
|
94
|
+
// jbrowse session small. A larger pasted or locally-opened file stays in the
|
|
95
|
+
// live model and out of the snapshot, and `unshareableData` warns using the
|
|
96
|
+
// same number. `MSAModelF({ maxInlineSnapshotBytes })` sets another; the demo
|
|
97
|
+
// app's links hold far more.
|
|
98
|
+
export const maxInlineSnapshotBytes = 50_000;
|
|
99
99
|
// Height of the band the `rowPanels` headers draw in, above the strips in the
|
|
100
100
|
// top area beside the tree ruler and the minimap. A panel wider than the band
|
|
101
101
|
// is tall writes its header across, where it has more room.
|
package/dist/constants.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"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"}
|
package/dist/element.d.ts
CHANGED
|
@@ -1,9 +1,13 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Registers a custom element that renders MSAViewer, for pages with no React.
|
|
3
3
|
* Attributes: msa-url, tree-url, gff-url, color-scheme, height, hide-header,
|
|
4
|
-
* theme, tree-area-width and reference-row. Properties: msa, tree and gff text,
|
|
5
|
-
*
|
|
6
|
-
*
|
|
4
|
+
* theme, tree-area-width and reference-row. Properties: msa, tree and gff text,
|
|
5
|
+
* features, colorScheme, highlights, columnTracks, residueMappings and
|
|
6
|
+
* selection. The
|
|
7
|
+
* colorScheme property takes a `{map}` the color-scheme attribute cannot hold,
|
|
8
|
+
* and wins over the attribute while set. Events: cell-hover, cell-click,
|
|
9
|
+
* viewport-change and selection-change, each with the MSAViewer callback's
|
|
10
|
+
* value as detail.
|
|
7
11
|
*
|
|
8
12
|
* Inside a <nightingale-manager>, the element registers with it and speaks its
|
|
9
13
|
* protocol: it follows the display-start, display-end and highlight attributes
|
package/dist/element.js
CHANGED
|
@@ -48,9 +48,13 @@ function residueRange(model, row, viewport) {
|
|
|
48
48
|
/**
|
|
49
49
|
* Registers a custom element that renders MSAViewer, for pages with no React.
|
|
50
50
|
* Attributes: msa-url, tree-url, gff-url, color-scheme, height, hide-header,
|
|
51
|
-
* theme, tree-area-width and reference-row. Properties: msa, tree and gff text,
|
|
52
|
-
*
|
|
53
|
-
*
|
|
51
|
+
* theme, tree-area-width and reference-row. Properties: msa, tree and gff text,
|
|
52
|
+
* features, colorScheme, highlights, columnTracks, residueMappings and
|
|
53
|
+
* selection. The
|
|
54
|
+
* colorScheme property takes a `{map}` the color-scheme attribute cannot hold,
|
|
55
|
+
* and wins over the attribute while set. Events: cell-hover, cell-click,
|
|
56
|
+
* viewport-change and selection-change, each with the MSAViewer callback's
|
|
57
|
+
* value as detail.
|
|
54
58
|
*
|
|
55
59
|
* Inside a <nightingale-manager>, the element registers with it and speaks its
|
|
56
60
|
* protocol: it follows the display-start, display-end and highlight attributes
|
|
@@ -89,6 +93,18 @@ export function defineMsaElement(tagName = 'jbrowse-msa') {
|
|
|
89
93
|
set gff(value) {
|
|
90
94
|
this.#setData({ gff: value });
|
|
91
95
|
}
|
|
96
|
+
get features() {
|
|
97
|
+
return this.#data.features;
|
|
98
|
+
}
|
|
99
|
+
set features(value) {
|
|
100
|
+
this.#setData({ features: value });
|
|
101
|
+
}
|
|
102
|
+
get colorScheme() {
|
|
103
|
+
return this.#data.colorScheme;
|
|
104
|
+
}
|
|
105
|
+
set colorScheme(value) {
|
|
106
|
+
this.#setData({ colorScheme: value });
|
|
107
|
+
}
|
|
92
108
|
get highlights() {
|
|
93
109
|
return this.#data.highlights;
|
|
94
110
|
}
|
|
@@ -107,6 +123,13 @@ export function defineMsaElement(tagName = 'jbrowse-msa') {
|
|
|
107
123
|
set residueMappings(value) {
|
|
108
124
|
this.#setData({ residueMappings: value });
|
|
109
125
|
}
|
|
126
|
+
// the viewer's selection, which the reader's drags change
|
|
127
|
+
get selection() {
|
|
128
|
+
return this.#model ? this.#model.selection : this.#data.selection;
|
|
129
|
+
}
|
|
130
|
+
set selection(value) {
|
|
131
|
+
this.#setData({ selection: value });
|
|
132
|
+
}
|
|
110
133
|
get #referenceRow() {
|
|
111
134
|
return this.getAttribute('reference-row') ?? undefined;
|
|
112
135
|
}
|
|
@@ -121,7 +144,9 @@ export function defineMsaElement(tagName = 'jbrowse-msa') {
|
|
|
121
144
|
msaFilehandle: location(this.getAttribute('msa-url')),
|
|
122
145
|
treeFilehandle: location(this.getAttribute('tree-url')),
|
|
123
146
|
gffFilehandle: location(this.getAttribute('gff-url')),
|
|
124
|
-
colorScheme: this.
|
|
147
|
+
colorScheme: this.#data.colorScheme ??
|
|
148
|
+
this.getAttribute('color-scheme') ??
|
|
149
|
+
undefined,
|
|
125
150
|
height: numberAttribute(this.getAttribute('height')),
|
|
126
151
|
treeAreaWidth: numberAttribute(this.getAttribute('tree-area-width')),
|
|
127
152
|
hideHeader: this.hasAttribute('hide-header'),
|
|
@@ -137,6 +162,9 @@ export function defineMsaElement(tagName = 'jbrowse-msa') {
|
|
|
137
162
|
this.#emit('viewport-change', viewport);
|
|
138
163
|
this.#reportRange(viewport);
|
|
139
164
|
},
|
|
165
|
+
onSelectionChange: selection => {
|
|
166
|
+
this.#emit('selection-change', selection);
|
|
167
|
+
},
|
|
140
168
|
onModel: model => {
|
|
141
169
|
this.#model = model;
|
|
142
170
|
this.#followRange();
|
package/dist/element.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"element.js","sourceRoot":"","sources":["../src/element.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAE3B,OAAO,EAAE,KAAK,EAAE,MAAM,YAAa,CAAA;
|
|
1
|
+
{"version":3,"file":"element.js","sourceRoot":"","sources":["../src/element.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { Annotation, Feature } from './types.ts';
|
|
2
|
+
/**
|
|
3
|
+
* The `features` layer as the annotations a GFF would parse to. Every field
|
|
4
|
+
* but the placement is also an attribute, as a string like a GFF value, so an
|
|
5
|
+
* encoding reads `type` or a host's own field the way it reads a GFF column 9
|
|
6
|
+
* key.
|
|
7
|
+
*/
|
|
8
|
+
export declare function featuresToAnnotations(features: Feature[]): Annotation[];
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
const placement = new Set(['row', 'start', 'end']);
|
|
2
|
+
// The colors and labels are maps keyed by annotation, and a getter read
|
|
3
|
+
// outside a reaction recomputes on every read. Caching on the frozen feature
|
|
4
|
+
// gives it one annotation however often the layer converts.
|
|
5
|
+
const converted = new WeakMap();
|
|
6
|
+
/**
|
|
7
|
+
* The `features` layer as the annotations a GFF would parse to. Every field
|
|
8
|
+
* but the placement is also an attribute, as a string like a GFF value, so an
|
|
9
|
+
* encoding reads `type` or a host's own field the way it reads a GFF column 9
|
|
10
|
+
* key.
|
|
11
|
+
*/
|
|
12
|
+
export function featuresToAnnotations(features) {
|
|
13
|
+
return features.map(feature => {
|
|
14
|
+
const cached = converted.get(feature);
|
|
15
|
+
if (cached) {
|
|
16
|
+
return cached;
|
|
17
|
+
}
|
|
18
|
+
const annotation = featureAnnotation(feature);
|
|
19
|
+
converted.set(feature, annotation);
|
|
20
|
+
return annotation;
|
|
21
|
+
});
|
|
22
|
+
}
|
|
23
|
+
function featureAnnotation(feature) {
|
|
24
|
+
const { row, start, end, name, description, type, strand, color } = feature;
|
|
25
|
+
const accession = name ?? `${row}:${start}-${end}`;
|
|
26
|
+
const attributes = Object.fromEntries(Object.entries(feature)
|
|
27
|
+
.filter(([key, value]) => !placement.has(key) && value !== undefined)
|
|
28
|
+
.map(([key, value]) => [key, String(value)]));
|
|
29
|
+
return {
|
|
30
|
+
id: row,
|
|
31
|
+
accession,
|
|
32
|
+
name: name ?? accession,
|
|
33
|
+
description: description ?? name ?? accession,
|
|
34
|
+
featureType: type,
|
|
35
|
+
start,
|
|
36
|
+
end,
|
|
37
|
+
strand: strand === '+' ? 1 : strand === '-' ? -1 : undefined,
|
|
38
|
+
color,
|
|
39
|
+
attributes,
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
//# sourceMappingURL=featuresLayer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"featuresLayer.js","sourceRoot":"","sources":["../src/featuresLayer.ts"],"names":[],"mappings":"AAEA,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC,CAAA;AAElD,wEAAwE;AACxE,6EAA6E;AAC7E,4DAA4D;AAC5D,MAAM,SAAS,GAAG,IAAI,OAAO,EAAuB,CAAA;AAEpD;;;;;GAKG;AACH,MAAM,UAAU,qBAAqB,CAAC,QAAmB;IACvD,OAAO,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE;QAC5B,MAAM,MAAM,GAAG,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;QACrC,IAAI,MAAM,EAAE,CAAC;YACX,OAAO,MAAM,CAAA;QACf,CAAC;QACD,MAAM,UAAU,GAAG,iBAAiB,CAAC,OAAO,CAAC,CAAA;QAC7C,SAAS,CAAC,GAAG,CAAC,OAAO,EAAE,UAAU,CAAC,CAAA;QAClC,OAAO,UAAU,CAAA;IACnB,CAAC,CAAC,CAAA;AACJ,CAAC;AAED,SAAS,iBAAiB,CAAC,OAAgB;IACzC,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,OAAO,CAAA;IAC3E,MAAM,SAAS,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,KAAK,IAAI,GAAG,EAAE,CAAA;IAClD,MAAM,UAAU,GAAG,MAAM,CAAC,WAAW,CACnC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC;SACpB,MAAM,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,KAAK,KAAK,SAAS,CAAC;SACpE,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAC/C,CAAA;IACD,OAAO;QACL,EAAE,EAAE,GAAG;QACP,SAAS;QACT,IAAI,EAAE,IAAI,IAAI,SAAS;QACvB,WAAW,EAAE,WAAW,IAAI,IAAI,IAAI,SAAS;QAC7C,WAAW,EAAE,IAAI;QACjB,KAAK;QACL,GAAG;QACH,MAAM,EAAE,MAAM,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS;QAC5D,KAAK;QACL,UAAU;KACX,CAAA;AACH,CAAC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -19,4 +19,4 @@ export type { InterProScanResults } from 'msa-parsers';
|
|
|
19
19
|
export type { ColumnCounts } from './columnCounts.ts';
|
|
20
20
|
export type { ColumnStats } from './columnStats.ts';
|
|
21
21
|
export type { ResolvedScale, ScaleSpec } from './scales.ts';
|
|
22
|
-
export type { Accession, Annotation, Arc, ArcSpec, ArcTrackModel, BasicTrack, BasicTrackModel, Cell, Clade, CladeMark, ColumnTrackSpec, DomainBand, Encoding, EncodingChannel, Highlight, Legend, LegendEntry, Node, MappedStructure, NodeWithIds, NodeWithIdsAndLength, Region, ResidueEncoding, ResidueMapping, ResidueMappingProblem, ResidueSegment, ResolvedClade, ResolvedEncoding, ResolvedHighlight, ResolvedRowPanel, RowPanelSpec, RowResidue, StructureResidue, TextTrackModel, TidyDomainAnnotation, TrackKind, TreeOrder, TreeRoot, UnshareableData, Viewport, } from './types.ts';
|
|
22
|
+
export type { Accession, Annotation, Arc, ArcSpec, ArcTrackModel, BasicTrack, BasicTrackModel, Cell, Clade, CladeMark, ColorScheme, ColumnTrackSpec, DomainBand, Encoding, EncodingChannel, Feature, Highlight, Legend, LegendEntry, MsaSelection, Node, MappedStructure, NodeWithIds, NodeWithIdsAndLength, Region, ResidueEncoding, ResidueMapping, ResidueMappingProblem, ResidueSegment, ResolvedClade, ResolvedEncoding, ResolvedHighlight, ResolvedRowPanel, ResolvedSelection, RowDataInput, RowPanelSpec, RowResidue, StructureResidue, TextTrackModel, TidyDomainAnnotation, TrackKind, TreeOrder, TreeRoot, UnshareableData, Viewport, } from './types.ts';
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
* data will not be persisted in saved session snapshots, it will be fetched
|
|
6
6
|
* from msaFilehandle at startup
|
|
7
7
|
*/
|
|
8
|
-
export declare function DataModelF(): import("@jbrowse/mobx-state-tree").IModelType<{
|
|
8
|
+
export declare function DataModelF(maxInlineBytes?: number): import("@jbrowse/mobx-state-tree").IModelType<{
|
|
9
9
|
/**
|
|
10
10
|
* #property
|
|
11
11
|
*/
|
package/dist/model/DataModel.js
CHANGED
|
@@ -7,7 +7,7 @@ import { maxInlineSnapshotBytes } from '../constants.js';
|
|
|
7
7
|
* data will not be persisted in saved session snapshots, it will be fetched
|
|
8
8
|
* from msaFilehandle at startup
|
|
9
9
|
*/
|
|
10
|
-
export function DataModelF() {
|
|
10
|
+
export function DataModelF(maxInlineBytes = maxInlineSnapshotBytes) {
|
|
11
11
|
return types
|
|
12
12
|
.model({
|
|
13
13
|
/**
|
|
@@ -54,11 +54,11 @@ export function DataModelF() {
|
|
|
54
54
|
},
|
|
55
55
|
}))
|
|
56
56
|
.postProcessSnapshot(snap =>
|
|
57
|
-
// drops any field over
|
|
57
|
+
// drops any field over maxInlineBytes; the parent model's
|
|
58
58
|
// `unshareableData` reports what was dropped
|
|
59
59
|
Object.fromEntries(Object.entries(snap).map(([key, text]) => [
|
|
60
60
|
key,
|
|
61
|
-
text && text.length >
|
|
61
|
+
text && text.length > maxInlineBytes ? undefined : text,
|
|
62
62
|
])));
|
|
63
63
|
}
|
|
64
64
|
//# sourceMappingURL=DataModel.js.map
|