react-msaview 8.0.0 → 8.2.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 +99 -99
- package/bundle/index.js.map +3 -3
- package/dist/calculateBlocks.js +5 -3
- package/dist/calculateBlocks.js.map +1 -1
- package/dist/components/Loading.js +2 -8
- package/dist/components/Loading.js.map +1 -1
- package/dist/components/SequenceTextArea.js +0 -1
- package/dist/components/SequenceTextArea.js.map +1 -1
- package/dist/components/Track.js +2 -2
- package/dist/components/Track.js.map +1 -1
- package/dist/components/dialogs/AboutDialog.js +6 -6
- package/dist/components/dialogs/AboutDialog.js.map +1 -1
- package/dist/components/dialogs/AnnotationFileDialog.js +5 -2
- package/dist/components/dialogs/AnnotationFileDialog.js.map +1 -1
- package/dist/components/dialogs/ExportSVGDialog.js +1 -1
- package/dist/components/dialogs/FeatureDialog.js +8 -3
- package/dist/components/dialogs/FeatureDialog.js.map +1 -1
- package/dist/components/header/Header.js +1 -1
- package/dist/components/header/Header.js.map +1 -1
- package/dist/components/header/LoadWarnings.js +3 -19
- package/dist/components/header/LoadWarnings.js.map +1 -1
- package/dist/components/header/settingsMenuItems.js +3 -3
- package/dist/components/header/settingsMenuItems.js.map +1 -1
- package/dist/components/import/ImportForm.js +1 -1
- package/dist/components/import/ImportForm.js.map +1 -1
- package/dist/components/msa/MSACanvas.js +1 -3
- package/dist/components/msa/MSACanvas.js.map +1 -1
- package/dist/components/msa/drawFeatureSpans.d.ts +7 -1
- package/dist/components/msa/drawFeatureSpans.js +58 -23
- package/dist/components/msa/drawFeatureSpans.js.map +1 -1
- package/dist/components/msa/renderBoxFeatureCanvasBlock.js +7 -8
- package/dist/components/msa/renderBoxFeatureCanvasBlock.js.map +1 -1
- package/dist/components/msa/renderMSABlock.js +8 -9
- package/dist/components/msa/renderMSABlock.js.map +1 -1
- package/dist/components/tracks/drawTracks.js +8 -5
- package/dist/components/tracks/drawTracks.js.map +1 -1
- package/dist/components/tree/TreeBranchMenu.js +1 -1
- package/dist/components/tree/TreeBranchMenu.js.map +1 -1
- package/dist/components/tree/TreeCanvas.js +1 -3
- package/dist/components/tree/TreeCanvas.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/TreeNodeMenu.js +1 -1
- package/dist/components/tree/TreeNodeMenu.js.map +1 -1
- package/dist/components/tree/renderTreeCanvas.js +2 -1
- package/dist/components/tree/renderTreeCanvas.js.map +1 -1
- package/dist/constants.d.ts +1 -0
- package/dist/constants.js +4 -0
- package/dist/constants.js.map +1 -1
- package/dist/expandSpec.d.ts +46 -0
- package/dist/expandSpec.js +127 -0
- package/dist/expandSpec.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/model.d.ts +52 -33
- package/dist/model.js +232 -142
- package/dist/model.js.map +1 -1
- package/dist/svgTestUtil.d.ts +28 -24
- package/dist/types.d.ts +2 -0
- package/dist/useWheelScroll.js +0 -4
- package/dist/useWheelScroll.js.map +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/package.json +3 -3
- package/src/calculateBlocks.ts +5 -3
- package/src/components/Loading.tsx +2 -30
- package/src/components/SequenceTextArea.tsx +0 -1
- package/src/components/Track.tsx +2 -1
- package/src/components/dialogs/AboutDialog.tsx +35 -6
- package/src/components/dialogs/AnnotationFileDialog.tsx +10 -1
- package/src/components/dialogs/ExportSVGDialog.tsx +1 -1
- package/src/components/dialogs/FeatureDialog.tsx +11 -3
- package/src/components/header/Header.tsx +1 -1
- package/src/components/header/LoadWarnings.tsx +8 -21
- package/src/components/header/settingsMenuItems.ts +3 -3
- package/src/components/import/ImportForm.tsx +3 -5
- package/src/components/msa/MSACanvas.tsx +0 -3
- package/src/components/msa/drawFeatureSpans.ts +80 -25
- package/src/components/msa/renderBoxFeatureCanvasBlock.ts +7 -9
- package/src/components/msa/renderMSABlock.ts +9 -8
- package/src/components/tracks/drawTracks.ts +8 -16
- package/src/components/tree/TreeBranchMenu.tsx +1 -2
- package/src/components/tree/TreeCanvas.tsx +0 -3
- package/src/components/tree/TreeCanvasBlock.tsx +2 -2
- package/src/components/tree/TreeNodeMenu.tsx +1 -2
- package/src/components/tree/renderTreeCanvas.ts +2 -1
- package/src/constants.ts +5 -0
- package/src/expandSpec.ts +196 -0
- package/src/index.ts +8 -0
- package/src/model.ts +289 -162
- package/src/types.ts +2 -0
- package/src/useWheelScroll.ts +0 -4
- package/src/version.ts +1 -1
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The label a single-residue shorthand highlight gets, filled in from the
|
|
3
|
+
* sequence when drawn: `175` on a row reading R there becomes "R175".
|
|
4
|
+
*/
|
|
5
|
+
export const residueLabel = '{residue}{position}';
|
|
6
|
+
const span = /^(\d+)(?:-(\d+))?(?:\s+(.+))?$/;
|
|
7
|
+
function parseSpan(text, what) {
|
|
8
|
+
const match = span.exec(text.trim());
|
|
9
|
+
if (!match) {
|
|
10
|
+
throw new Error(`${what} "${text}" is not "start", "start-end" or either followed by a label`);
|
|
11
|
+
}
|
|
12
|
+
const start = Number(match[1]);
|
|
13
|
+
const end = match[2] === undefined ? start : Number(match[2]);
|
|
14
|
+
return { start, end, label: match[3] };
|
|
15
|
+
}
|
|
16
|
+
function withRow(entry, query) {
|
|
17
|
+
const { row, ...rest } = entry;
|
|
18
|
+
const resolved = row === undefined ? query : (row ?? undefined);
|
|
19
|
+
return resolved === undefined ? rest : { ...rest, row: resolved };
|
|
20
|
+
}
|
|
21
|
+
function expandHighlight(entry, query) {
|
|
22
|
+
if (typeof entry === 'object') {
|
|
23
|
+
return (entry.rows
|
|
24
|
+
? entry
|
|
25
|
+
: withRow(entry, entry.start === undefined ? undefined : query));
|
|
26
|
+
}
|
|
27
|
+
const { start, end, label } = parseSpan(String(entry), 'highlight');
|
|
28
|
+
const single = start === end && query !== undefined;
|
|
29
|
+
return {
|
|
30
|
+
...(query === undefined ? {} : { row: query }),
|
|
31
|
+
start,
|
|
32
|
+
end,
|
|
33
|
+
...(label ? { label } : single ? { label: residueLabel } : {}),
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
function expandRegion(region, query) {
|
|
37
|
+
if (typeof region === 'string') {
|
|
38
|
+
const { start, end } = parseSpan(region, 'region');
|
|
39
|
+
const parsed = { start, end };
|
|
40
|
+
return withRow(parsed, query);
|
|
41
|
+
}
|
|
42
|
+
return withRow(region, query);
|
|
43
|
+
}
|
|
44
|
+
function slug(name) {
|
|
45
|
+
return name
|
|
46
|
+
.toLowerCase()
|
|
47
|
+
.replaceAll(/[^a-z0-9]+/g, '-')
|
|
48
|
+
.replaceAll(/^-|-$/g, '');
|
|
49
|
+
}
|
|
50
|
+
function kindOf(track) {
|
|
51
|
+
if (track.kind) {
|
|
52
|
+
return track.kind;
|
|
53
|
+
}
|
|
54
|
+
if (track.values) {
|
|
55
|
+
return 'bar';
|
|
56
|
+
}
|
|
57
|
+
if (track.data !== undefined) {
|
|
58
|
+
return 'text';
|
|
59
|
+
}
|
|
60
|
+
if (track.arcs) {
|
|
61
|
+
return 'arc';
|
|
62
|
+
}
|
|
63
|
+
throw new Error(`column track "${track.name}" has no values, data or arcs to take its kind from`);
|
|
64
|
+
}
|
|
65
|
+
function expandTrack(track, query, ids) {
|
|
66
|
+
const { start, ...rest } = track;
|
|
67
|
+
const pad = start && start > 1 ? start - 1 : 0;
|
|
68
|
+
let id = track.id ?? (slug(track.name) || 'track');
|
|
69
|
+
for (let n = 2; !track.id && ids.has(id); n++) {
|
|
70
|
+
id = `${slug(track.name) || 'track'}-${n}`;
|
|
71
|
+
}
|
|
72
|
+
ids.add(id);
|
|
73
|
+
return {
|
|
74
|
+
...withRow(rest, query),
|
|
75
|
+
id,
|
|
76
|
+
kind: kindOf(track),
|
|
77
|
+
...(pad && track.values
|
|
78
|
+
? { values: [...Array(pad).fill(0), ...track.values] }
|
|
79
|
+
: {}),
|
|
80
|
+
...(pad && track.data !== undefined
|
|
81
|
+
? { data: ' '.repeat(pad) + track.data }
|
|
82
|
+
: {}),
|
|
83
|
+
};
|
|
84
|
+
}
|
|
85
|
+
function isInlineMsa(msa) {
|
|
86
|
+
return msa.includes('\n');
|
|
87
|
+
}
|
|
88
|
+
function isInlineTree(tree) {
|
|
89
|
+
return tree.trimStart().startsWith('(');
|
|
90
|
+
}
|
|
91
|
+
function uri(location) {
|
|
92
|
+
return { uri: location, locationType: 'UriLocation' };
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* Expand the short forms of an MsaView spec into the snapshot the model takes.
|
|
96
|
+
* Idempotent, and a no-op on a spec that uses none of them.
|
|
97
|
+
*/
|
|
98
|
+
export function expandSpec(spec) {
|
|
99
|
+
const { query, msa, tree, highlights, region, columnTracks, ...rest } = spec;
|
|
100
|
+
const data = {
|
|
101
|
+
...rest.data,
|
|
102
|
+
...(msa !== undefined && isInlineMsa(msa) ? { msa } : {}),
|
|
103
|
+
...(tree !== undefined && isInlineTree(tree) ? { tree } : {}),
|
|
104
|
+
};
|
|
105
|
+
const ids = new Set((columnTracks ?? []).map(t => t.id).filter(id => id !== undefined));
|
|
106
|
+
return {
|
|
107
|
+
...rest,
|
|
108
|
+
...(msa !== undefined && !isInlineMsa(msa)
|
|
109
|
+
? { msaFilehandle: uri(msa) }
|
|
110
|
+
: {}),
|
|
111
|
+
...(tree !== undefined && !isInlineTree(tree)
|
|
112
|
+
? { treeFilehandle: uri(tree) }
|
|
113
|
+
: {}),
|
|
114
|
+
...(Object.keys(data).length > 0 ? { data } : {}),
|
|
115
|
+
...(query !== undefined && rest.relativeTo === undefined
|
|
116
|
+
? { relativeTo: query }
|
|
117
|
+
: {}),
|
|
118
|
+
...(highlights
|
|
119
|
+
? { highlights: highlights.map(h => expandHighlight(h, query)) }
|
|
120
|
+
: {}),
|
|
121
|
+
...(region === undefined ? {} : { region: expandRegion(region, query) }),
|
|
122
|
+
...(columnTracks
|
|
123
|
+
? { columnTracks: columnTracks.map(t => expandTrack(t, query, ids)) }
|
|
124
|
+
: {}),
|
|
125
|
+
};
|
|
126
|
+
}
|
|
127
|
+
//# sourceMappingURL=expandSpec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"expandSpec.js","sourceRoot":"","sources":["../src/expandSpec.ts"],"names":[],"mappings":"AA8CA;;;GAGG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,qBAAqB,CAAA;AAEjD,MAAM,IAAI,GAAG,gCAAgC,CAAA;AAE7C,SAAS,SAAS,CAAC,IAAY,EAAE,IAAY;IAC3C,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAA;IACpC,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,IAAI,KAAK,CACb,GAAG,IAAI,KAAK,IAAI,6DAA6D,CAC9E,CAAA;IACH,CAAC;IACD,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;IAC9B,MAAM,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;IAC7D,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,CAAA;AACxC,CAAC;AAED,SAAS,OAAO,CAAsB,KAAQ,EAAE,KAAc;IAC5D,MAAM,EAAE,GAAG,EAAE,GAAG,IAAI,EAAE,GAAG,KAAK,CAAA;IAC9B,MAAM,QAAQ,GAAG,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,SAAS,CAAC,CAAA;IAC/D,OAAO,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,QAAQ,EAAE,CAAA;AACnE,CAAC;AAED,SAAS,eAAe,CAAC,KAAyB,EAAE,KAAc;IAChE,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,OAAO,CACL,KAAK,CAAC,IAAI;YACR,CAAC,CAAC,KAAK;YACP,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CACrD,CAAA;IAChB,CAAC;IACD,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,WAAW,CAAC,CAAA;IACnE,MAAM,MAAM,GAAG,KAAK,KAAK,GAAG,IAAI,KAAK,KAAK,SAAS,CAAA;IACnD,OAAO;QACL,GAAG,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC;QAC9C,KAAK;QACL,GAAG;QACH,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC/D,CAAA;AACH,CAAC;AAED,SAAS,YAAY,CAAC,MAAuB,EAAE,KAAc;IAC3D,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;QAC/B,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,SAAS,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAA;QAClD,MAAM,MAAM,GAAoC,EAAE,KAAK,EAAE,GAAG,EAAE,CAAA;QAC9D,OAAO,OAAO,CAAC,MAAM,EAAE,KAAK,CAAW,CAAA;IACzC,CAAC;IACD,OAAO,OAAO,CAAC,MAAM,EAAE,KAAK,CAAW,CAAA;AACzC,CAAC;AAED,SAAS,IAAI,CAAC,IAAY;IACxB,OAAO,IAAI;SACR,WAAW,EAAE;SACb,UAAU,CAAC,aAAa,EAAE,GAAG,CAAC;SAC9B,UAAU,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAA;AAC7B,CAAC;AAED,SAAS,MAAM,CAAC,KAA2B;IACzC,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;QACf,OAAO,KAAK,CAAC,IAAI,CAAA;IACnB,CAAC;IACD,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;QACjB,OAAO,KAAK,CAAA;IACd,CAAC;IACD,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QAC7B,OAAO,MAAM,CAAA;IACf,CAAC;IACD,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;QACf,OAAO,KAAK,CAAA;IACd,CAAC;IACD,MAAM,IAAI,KAAK,CACb,iBAAiB,KAAK,CAAC,IAAI,qDAAqD,CACjF,CAAA;AACH,CAAC;AAED,SAAS,WAAW,CAClB,KAA2B,EAC3B,KAAyB,EACzB,GAAgB;IAEhB,MAAM,EAAE,KAAK,EAAE,GAAG,IAAI,EAAE,GAAG,KAAK,CAAA;IAChC,MAAM,GAAG,GAAG,KAAK,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;IAC9C,IAAI,EAAE,GAAG,KAAK,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,OAAO,CAAC,CAAA;IAClD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,IAAI,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAC9C,EAAE,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,OAAO,IAAI,CAAC,EAAE,CAAA;IAC5C,CAAC;IACD,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;IACX,OAAO;QACL,GAAI,OAAO,CAAC,IAAI,EAAE,KAAK,CAA0C;QACjE,EAAE;QACF,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC;QACnB,GAAG,CAAC,GAAG,IAAI,KAAK,CAAC,MAAM;YACrB,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,GAAG,KAAK,CAAS,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,GAAG,KAAK,CAAC,MAAM,CAAC,EAAE;YAC9D,CAAC,CAAC,EAAE,CAAC;QACP,GAAG,CAAC,GAAG,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS;YACjC,CAAC,CAAC,EAAE,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,IAAI,EAAE;YACxC,CAAC,CAAC,EAAE,CAAC;KACR,CAAA;AACH,CAAC;AAED,SAAS,WAAW,CAAC,GAAW;IAC9B,OAAO,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAA;AAC3B,CAAC;AAED,SAAS,YAAY,CAAC,IAAY;IAChC,OAAO,IAAI,CAAC,SAAS,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,CAAA;AACzC,CAAC;AAED,SAAS,GAAG,CAAC,QAAgB;IAC3B,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,YAAY,EAAE,aAAsB,EAAE,CAAA;AAChE,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,UAAU,CAAC,IAAa;IACtC,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,YAAY,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,CAAA;IAC5E,MAAM,IAAI,GAAG;QACX,GAAI,IAAI,CAAC,IAA4C;QACrD,GAAG,CAAC,GAAG,KAAK,SAAS,IAAI,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACzD,GAAG,CAAC,IAAI,KAAK,SAAS,IAAI,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC9D,CAAA;IACD,MAAM,GAAG,GAAG,IAAI,GAAG,CACjB,CAAC,YAAY,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,SAAS,CAAC,CACnE,CAAA;IACD,OAAO;QACL,GAAG,IAAI;QACP,GAAG,CAAC,GAAG,KAAK,SAAS,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC;YACxC,CAAC,CAAC,EAAE,aAAa,EAAE,GAAG,CAAC,GAAG,CAAC,EAAE;YAC7B,CAAC,CAAC,EAAE,CAAC;QACP,GAAG,CAAC,IAAI,KAAK,SAAS,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC;YAC3C,CAAC,CAAC,EAAE,cAAc,EAAE,GAAG,CAAC,IAAI,CAAC,EAAE;YAC/B,CAAC,CAAC,EAAE,CAAC;QACP,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACjD,GAAG,CAAC,KAAK,KAAK,SAAS,IAAI,IAAI,CAAC,UAAU,KAAK,SAAS;YACtD,CAAC,CAAC,EAAE,UAAU,EAAE,KAAK,EAAE;YACvB,CAAC,CAAC,EAAE,CAAC;QACP,GAAG,CAAC,UAAU;YACZ,CAAC,CAAC,EAAE,UAAU,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,eAAe,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE;YAChE,CAAC,CAAC,EAAE,CAAC;QACP,GAAG,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,YAAY,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,CAAC;QACxE,GAAG,CAAC,YAAY;YACd,CAAC,CAAC,EAAE,YAAY,EAAE,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC,EAAE;YACrE,CAAC,CAAC,EAAE,CAAC;KACR,CAAA;AACH,CAAC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -2,6 +2,8 @@ export { renderToSvg } from './renderToSvg.tsx';
|
|
|
2
2
|
export type { ExportSvgOptions } from './renderToSvg.tsx';
|
|
3
3
|
export { CHAR_WIDTH_RATIO, installHeadlessRenderEnv, } from './headlessRenderEnv.ts';
|
|
4
4
|
export { maxNeighborJoiningRows } from './constants.ts';
|
|
5
|
+
export { expandSpec, residueLabel } from './expandSpec.ts';
|
|
6
|
+
export type { ColumnTrackShorthand, HighlightShorthand, MsaSpec, RegionShorthand, } from './expandSpec.ts';
|
|
5
7
|
export { default as MSAView } from './components/Loading.tsx';
|
|
6
8
|
export { default as MSAViewer } from './components/MSAViewer.tsx';
|
|
7
9
|
export type { MSAViewerProps } from './components/MSAViewer.tsx';
|
package/dist/index.js
CHANGED
|
@@ -14,6 +14,8 @@ export { CHAR_WIDTH_RATIO, installHeadlessRenderEnv, } from './headlessRenderEnv
|
|
|
14
14
|
// the row count above which calculateNeighborJoiningTreeFromMSA throws, for
|
|
15
15
|
// hosts gating their own menu item
|
|
16
16
|
export { maxNeighborJoiningRows } from './constants.js';
|
|
17
|
+
// the short forms a link or a script can write a view in; see docs/layers.md
|
|
18
|
+
export { expandSpec, residueLabel } from './expandSpec.js';
|
|
17
19
|
export { default as MSAView } from './components/Loading.js';
|
|
18
20
|
export { default as MSAViewer } from './components/MSAViewer.js';
|
|
19
21
|
export { mount } from './mount.js';
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,gFAAgF;AAChF,yDAAyD;AACzD,6EAA6E;AAC7E,+DAA+D;AAC/D,gFAAgF;AAChF,0EAA0E;AAC1E,yEAAyE;AACzE,8EAA8E;AAC9E,mEAAmE;AACnE,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAmB,CAAA;AAE/C,8EAA8E;AAC9E,yDAAyD;AACzD,OAAO,EACL,gBAAgB,EAChB,wBAAwB,GACzB,MAAM,wBAAwB,CAAA;AAC/B,4EAA4E;AAC5E,mCAAmC;AACnC,OAAO,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAA;AACvD,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,yBAA0B,CAAA;AAC7D,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,2BAA4B,CAAA;AAEjE,OAAO,EAAE,KAAK,EAAE,MAAM,YAAa,CAAA;AACnC,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAA;AAC/C,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AAGtD,OAAO,EAAqB,OAAO,IAAI,SAAS,EAAE,MAAM,YAAY,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,gFAAgF;AAChF,yDAAyD;AACzD,6EAA6E;AAC7E,+DAA+D;AAC/D,gFAAgF;AAChF,0EAA0E;AAC1E,yEAAyE;AACzE,8EAA8E;AAC9E,mEAAmE;AACnE,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAmB,CAAA;AAE/C,8EAA8E;AAC9E,yDAAyD;AACzD,OAAO,EACL,gBAAgB,EAChB,wBAAwB,GACzB,MAAM,wBAAwB,CAAA;AAC/B,4EAA4E;AAC5E,mCAAmC;AACnC,OAAO,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAA;AACvD,6EAA6E;AAC7E,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AAO1D,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,yBAA0B,CAAA;AAC7D,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,2BAA4B,CAAA;AAEjE,OAAO,EAAE,KAAK,EAAE,MAAM,YAAa,CAAA;AACnC,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAA;AAC/C,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AAGtD,OAAO,EAAqB,OAAO,IAAI,SAAS,EAAE,MAAM,YAAY,CAAA"}
|
package/dist/model.d.ts
CHANGED
|
@@ -57,7 +57,7 @@ declare function stateModelFactory(): import("@jbrowse/mobx-state-tree").IModelT
|
|
|
57
57
|
colorSchemeName: import("@jbrowse/mobx-state-tree").IOptionalIType<import("@jbrowse/mobx-state-tree").ISimpleType<string>, [undefined]>;
|
|
58
58
|
showColumnStats: import("@jbrowse/mobx-state-tree").IOptionalIType<import("@jbrowse/mobx-state-tree").ISimpleType<boolean>, [undefined]>;
|
|
59
59
|
msaFormat: import("@jbrowse/mobx-state-tree").IMaybe<import("@jbrowse/mobx-state-tree").ISimpleType<import("msa-parsers").MSAFormat>>;
|
|
60
|
-
}, "allowedGappyness" | "clades" | "colWidth" | "collapsed" | "columnTracks" | "currentAlignment" | "data" | "drawMsaLetters" | "encodings" | "gffFilehandle" | "height" | "hideGaps" | "highlightColumns" | "highlights" | "id" | "msaFilehandle" | "relativeTo" | "residueMappings" | "rowHeight" | "rowPanels" | "scrollX" | "scrollY" | "scrollZoom" | "scrollZoomAxis" | "showDomainLegend" | "showDomains" | "showOnly" | "subFeatureRows" | "trackHeights" | "treeFilehandle" | "treeMetadataFilehandle" | "turnedOffFeatures" | "turnedOffTracks" | "type"> & {
|
|
60
|
+
}, "allowedGappyness" | "clades" | "colWidth" | "collapsed" | "columnTracks" | "currentAlignment" | "data" | "drawMsaLetters" | "encodings" | "gffFilehandle" | "height" | "hideGaps" | "highlightColumns" | "highlights" | "id" | "msaFilehandle" | "region" | "relativeTo" | "residueMappings" | "rowHeight" | "rowPanels" | "scrollX" | "scrollY" | "scrollZoom" | "scrollZoomAxis" | "showDomainLegend" | "showDomains" | "showOnly" | "subFeatureRows" | "trackHeights" | "treeFilehandle" | "treeMetadataFilehandle" | "turnedOffFeatures" | "turnedOffTracks" | "type"> & {
|
|
61
61
|
/**
|
|
62
62
|
* #property
|
|
63
63
|
* id of view, randomly generated if not provided
|
|
@@ -616,6 +616,14 @@ declare function stateModelFactory(): import("@jbrowse/mobx-state-tree").IModelT
|
|
|
616
616
|
* Persists in the snapshot and the URL.
|
|
617
617
|
*/
|
|
618
618
|
highlights: import("@jbrowse/mobx-state-tree").IOptionalIType<import("@jbrowse/mobx-state-tree").IArrayType<import("@jbrowse/mobx-state-tree").IType<Highlight, Highlight, Highlight>>, [undefined]>;
|
|
619
|
+
/**
|
|
620
|
+
* #property
|
|
621
|
+
* where the view opens, in `highlights` coordinates: `{row, start,
|
|
622
|
+
* end}` zooms onto residues of that row, `{start, end}` onto alignment
|
|
623
|
+
* columns. Applied once the alignment and any tree file have loaded,
|
|
624
|
+
* then cleared, so a reloaded session keeps the reader's own scroll.
|
|
625
|
+
*/
|
|
626
|
+
region: import("@jbrowse/mobx-state-tree").IType<Region | undefined, Region | undefined, Region | undefined>;
|
|
619
627
|
/**
|
|
620
628
|
* #property
|
|
621
629
|
* clades of the tree with a mark drawn over them. `mrca` names tips
|
|
@@ -835,7 +843,7 @@ declare function stateModelFactory(): import("@jbrowse/mobx-state-tree").IModelT
|
|
|
835
843
|
/**
|
|
836
844
|
* #action
|
|
837
845
|
* record a non-fatal load problem: a layer that failed to load, a file
|
|
838
|
-
* that failed to parse
|
|
846
|
+
* that failed to parse. A message already on the list is not added again
|
|
839
847
|
*/
|
|
840
848
|
addWarning(warning: string): void;
|
|
841
849
|
/**
|
|
@@ -866,6 +874,10 @@ declare function stateModelFactory(): import("@jbrowse/mobx-state-tree").IModelT
|
|
|
866
874
|
* through it.
|
|
867
875
|
*/
|
|
868
876
|
setHighlightedColumns(columns?: number[]): void;
|
|
877
|
+
/**
|
|
878
|
+
* #action
|
|
879
|
+
*/
|
|
880
|
+
setRegion(region?: Region): void;
|
|
869
881
|
/**
|
|
870
882
|
* #action
|
|
871
883
|
*/
|
|
@@ -1353,6 +1365,36 @@ declare function stateModelFactory(): import("@jbrowse/mobx-state-tree").IModelT
|
|
|
1353
1365
|
* #getter
|
|
1354
1366
|
*/
|
|
1355
1367
|
readonly showTreeText: boolean;
|
|
1368
|
+
} & {
|
|
1369
|
+
/**
|
|
1370
|
+
* #getter
|
|
1371
|
+
* a data track's values or string, projected from its row's residues
|
|
1372
|
+
* onto alignment columns when it names a row
|
|
1373
|
+
*/
|
|
1374
|
+
readonly columnTrackContent: Map<string, {
|
|
1375
|
+
values?: number[];
|
|
1376
|
+
data?: string;
|
|
1377
|
+
arcs?: Arc[];
|
|
1378
|
+
}>;
|
|
1379
|
+
/**
|
|
1380
|
+
* #method
|
|
1381
|
+
* the height a track draws at: what the user dragged its divider to,
|
|
1382
|
+
* then the height its snapshot asked for, then its kind's default. Only
|
|
1383
|
+
* a text track falls through to rowHeight
|
|
1384
|
+
*/
|
|
1385
|
+
trackHeight(kind: TrackKind, heightKey?: string, given?: number): number;
|
|
1386
|
+
/**
|
|
1387
|
+
* #method
|
|
1388
|
+
* the track a column track spec draws as, computed once per spec. A
|
|
1389
|
+
* text track's height falls through to rowHeight, and its own computed
|
|
1390
|
+
* confines the vertical zoom to it, so a sibling keeps its object and
|
|
1391
|
+
* its canvas skips the redraw
|
|
1392
|
+
*/
|
|
1393
|
+
columnTrackModel(track: ColumnTrackSpec): BasicTrack;
|
|
1394
|
+
/**
|
|
1395
|
+
* #getter
|
|
1396
|
+
*/
|
|
1397
|
+
readonly columnTrackModels: BasicTrack[];
|
|
1356
1398
|
} & {
|
|
1357
1399
|
/**
|
|
1358
1400
|
* #getter
|
|
@@ -1383,28 +1425,6 @@ declare function stateModelFactory(): import("@jbrowse/mobx-state-tree").IModelT
|
|
|
1383
1425
|
* #getter
|
|
1384
1426
|
*/
|
|
1385
1427
|
readonly adapterTrackModels: BasicTrack[];
|
|
1386
|
-
/**
|
|
1387
|
-
* #getter
|
|
1388
|
-
* a data track's values or string, projected from its row's residues
|
|
1389
|
-
* onto alignment columns when it names a row
|
|
1390
|
-
*/
|
|
1391
|
-
readonly columnTrackContent: Map<string, {
|
|
1392
|
-
values?: number[];
|
|
1393
|
-
data?: string;
|
|
1394
|
-
arcs?: Arc[];
|
|
1395
|
-
}>;
|
|
1396
|
-
/**
|
|
1397
|
-
* #method
|
|
1398
|
-
* the height a track draws at: what the user dragged its divider to,
|
|
1399
|
-
* then the height its snapshot asked for, then its kind's default. Only
|
|
1400
|
-
* a text track falls through to rowHeight, and `??` short-circuits
|
|
1401
|
-
* before reading it, so vertical zoom does not rebuild the other tracks
|
|
1402
|
-
*/
|
|
1403
|
-
trackHeight(kind: TrackKind, heightKey?: string, given?: number): number;
|
|
1404
|
-
/**
|
|
1405
|
-
* #getter
|
|
1406
|
-
*/
|
|
1407
|
-
readonly columnTrackModels: BasicTrack[];
|
|
1408
1428
|
/**
|
|
1409
1429
|
* #getter
|
|
1410
1430
|
* the consensus secondary structure as a track, when there is one. A
|
|
@@ -1835,9 +1855,6 @@ declare function stateModelFactory(): import("@jbrowse/mobx-state-tree").IModelT
|
|
|
1835
1855
|
readonly fillPalette: {
|
|
1836
1856
|
[x: string]: string;
|
|
1837
1857
|
};
|
|
1838
|
-
readonly strokePalette: {
|
|
1839
|
-
[k: string]: string;
|
|
1840
|
-
};
|
|
1841
1858
|
/**
|
|
1842
1859
|
* #getter
|
|
1843
1860
|
* the encoding coloring the overlay's spans, undefined when none does,
|
|
@@ -1941,6 +1958,12 @@ declare function stateModelFactory(): import("@jbrowse/mobx-state-tree").IModelT
|
|
|
1941
1958
|
start: number;
|
|
1942
1959
|
end: number;
|
|
1943
1960
|
}[];
|
|
1961
|
+
/**
|
|
1962
|
+
* #method
|
|
1963
|
+
* a highlight label with `{residue}` and `{position}` filled in from the
|
|
1964
|
+
* row's letter at `start`, which is how the `175` shorthand draws "R175"
|
|
1965
|
+
*/
|
|
1966
|
+
fillHighlightLabel(label: string, row?: string, start?: number): string;
|
|
1944
1967
|
/**
|
|
1945
1968
|
* #getter
|
|
1946
1969
|
* `highlights` projected onto what is on screen: residue spans go
|
|
@@ -1957,12 +1980,6 @@ declare function stateModelFactory(): import("@jbrowse/mobx-state-tree").IModelT
|
|
|
1957
1980
|
* all-gap column.
|
|
1958
1981
|
*/
|
|
1959
1982
|
columnStatsAt(col: number): ColumnStats | undefined;
|
|
1960
|
-
/**
|
|
1961
|
-
* #getter
|
|
1962
|
-
* `columnStatsAt` for the hovered column, undefined when nothing is
|
|
1963
|
-
* hovered
|
|
1964
|
-
*/
|
|
1965
|
-
readonly mouseOverColumnStats: ColumnStats | undefined;
|
|
1966
1983
|
/**
|
|
1967
1984
|
* #method
|
|
1968
1985
|
*/
|
|
@@ -2204,6 +2221,7 @@ declare function stateModelFactory(): import("@jbrowse/mobx-state-tree").IModelT
|
|
|
2204
2221
|
relativeTo: string | undefined;
|
|
2205
2222
|
highlightColumns: number[] | undefined;
|
|
2206
2223
|
highlights: Highlight[];
|
|
2224
|
+
region: Region | undefined;
|
|
2207
2225
|
clades: Clade[];
|
|
2208
2226
|
encodings: Encoding[];
|
|
2209
2227
|
rowPanels: RowPanelSpec[];
|
|
@@ -2335,6 +2353,7 @@ declare function stateModelFactory(): import("@jbrowse/mobx-state-tree").IModelT
|
|
|
2335
2353
|
relativeTo: string | undefined;
|
|
2336
2354
|
highlightColumns: number[] | undefined;
|
|
2337
2355
|
highlights: Highlight[];
|
|
2356
|
+
region: Region | undefined;
|
|
2338
2357
|
clades: Clade[];
|
|
2339
2358
|
encodings: Encoding[];
|
|
2340
2359
|
rowPanels: RowPanelSpec[];
|