react-msaview 4.4.6 → 4.6.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 +9 -9
- package/bundle/index.js.LICENSE.txt +8 -8
- package/bundle/index.js.map +1 -1
- package/dist/colorSchemes.d.ts +0 -6
- package/dist/colorSchemes.js +1 -119
- package/dist/colorSchemes.js.map +1 -1
- package/dist/components/ConservationTrack.d.ts +8 -0
- package/dist/components/ConservationTrack.js +54 -0
- package/dist/components/ConservationTrack.js.map +1 -0
- package/dist/components/Loading.js +14 -2
- package/dist/components/Loading.js.map +1 -1
- package/dist/components/MSAView.js +36 -0
- package/dist/components/MSAView.js.map +1 -1
- package/dist/components/SequenceTextArea.js +3 -2
- package/dist/components/SequenceTextArea.js.map +1 -1
- package/dist/components/TextTrack.d.ts +3 -3
- package/dist/components/TextTrack.js +4 -1
- package/dist/components/TextTrack.js.map +1 -1
- package/dist/components/Track.js +21 -8
- package/dist/components/Track.js.map +1 -1
- package/dist/components/dialogs/ExportSVGDialog.js +19 -3
- package/dist/components/dialogs/ExportSVGDialog.js.map +1 -1
- package/dist/components/header/GappynessSlider.d.ts +6 -0
- package/dist/components/header/GappynessSlider.js +19 -0
- package/dist/components/header/GappynessSlider.js.map +1 -0
- package/dist/components/header/Header.js +3 -1
- package/dist/components/header/Header.js.map +1 -1
- package/dist/components/header/HeaderMenu.js +30 -14
- package/dist/components/header/HeaderMenu.js.map +1 -1
- package/dist/components/minimap/MinimapSVG.js +4 -3
- package/dist/components/minimap/MinimapSVG.js.map +1 -1
- package/dist/components/msa/MSACanvasBlock.js +56 -42
- package/dist/components/msa/MSACanvasBlock.js.map +1 -1
- package/dist/components/msa/renderMSABlock.js +71 -26
- package/dist/components/msa/renderMSABlock.js.map +1 -1
- package/dist/components/msa/renderMSAMouseover.js +8 -1
- package/dist/components/msa/renderMSAMouseover.js.map +1 -1
- package/dist/components/tracks/renderTracksSvg.d.ts +29 -0
- package/dist/components/tracks/renderTracksSvg.js +83 -0
- package/dist/components/tracks/renderTracksSvg.js.map +1 -0
- package/dist/components/tree/TreeNodeMenu.js +2 -2
- package/dist/components/tree/TreeNodeMenu.js.map +1 -1
- package/dist/components/tree/renderTreeCanvas.d.ts +0 -1
- package/dist/components/tree/renderTreeCanvas.js +23 -24
- package/dist/components/tree/renderTreeCanvas.js.map +1 -1
- package/dist/constants.d.ts +22 -0
- package/dist/constants.js +26 -0
- package/dist/constants.js.map +1 -0
- package/dist/layout.js.map +1 -1
- package/dist/model/msaModel.js +3 -2
- package/dist/model/msaModel.js.map +1 -1
- package/dist/model/treeModel.js +9 -8
- package/dist/model/treeModel.js.map +1 -1
- package/dist/model.d.ts +271 -15
- package/dist/model.js +427 -128
- package/dist/model.js.map +1 -1
- package/dist/neighborJoining.d.ts +1 -0
- package/dist/neighborJoining.js +839 -0
- package/dist/neighborJoining.js.map +1 -0
- package/dist/neighborJoining.test.d.ts +1 -0
- package/dist/neighborJoining.test.js +110 -0
- package/dist/neighborJoining.test.js.map +1 -0
- package/dist/parsers/A3mMSA.d.ts +43 -0
- package/dist/parsers/A3mMSA.js +277 -0
- package/dist/parsers/A3mMSA.js.map +1 -0
- package/dist/parsers/A3mMSA.test.d.ts +1 -0
- package/dist/parsers/A3mMSA.test.js +138 -0
- package/dist/parsers/A3mMSA.test.js.map +1 -0
- package/dist/parsers/ClustalMSA.d.ts +4 -4
- package/dist/parsers/ClustalMSA.js +3 -1
- package/dist/parsers/ClustalMSA.js.map +1 -1
- package/dist/parsers/FastaMSA.js +17 -16
- package/dist/parsers/FastaMSA.js.map +1 -1
- package/dist/renderToSvg.d.ts +1 -0
- package/dist/renderToSvg.js +48 -18
- package/dist/renderToSvg.js.map +1 -1
- package/dist/rowCoordinateCalculations.js +2 -0
- package/dist/rowCoordinateCalculations.js.map +1 -1
- package/dist/types.d.ts +2 -3
- package/dist/util.js +17 -9
- package/dist/util.js.map +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/package.json +6 -6
- package/src/colorSchemes.ts +1 -179
- package/src/components/ConservationTrack.tsx +104 -0
- package/src/components/Loading.tsx +44 -2
- package/src/components/MSAView.tsx +68 -0
- package/src/components/SequenceTextArea.tsx +3 -2
- package/src/components/TextTrack.tsx +7 -4
- package/src/components/Track.tsx +25 -9
- package/src/components/dialogs/ExportSVGDialog.tsx +25 -1
- package/src/components/header/GappynessSlider.tsx +35 -0
- package/src/components/header/Header.tsx +3 -1
- package/src/components/header/HeaderMenu.tsx +36 -15
- package/src/components/minimap/MinimapSVG.tsx +6 -3
- package/src/components/msa/MSACanvasBlock.tsx +66 -48
- package/src/components/msa/renderMSABlock.ts +103 -40
- package/src/components/msa/renderMSAMouseover.ts +9 -0
- package/src/components/tracks/renderTracksSvg.ts +157 -0
- package/src/components/tree/TreeNodeMenu.tsx +2 -2
- package/src/components/tree/renderTreeCanvas.ts +25 -34
- package/src/constants.ts +27 -0
- package/src/layout.ts +1 -6
- package/src/model/msaModel.ts +4 -2
- package/src/model/treeModel.ts +19 -8
- package/src/model.ts +517 -140
- package/src/neighborJoining.test.ts +129 -0
- package/src/neighborJoining.ts +885 -0
- package/src/parsers/A3mMSA.test.ts +164 -0
- package/src/parsers/A3mMSA.ts +321 -0
- package/src/parsers/ClustalMSA.ts +7 -5
- package/src/parsers/FastaMSA.ts +17 -17
- package/src/renderToSvg.tsx +105 -26
- package/src/rowCoordinateCalculations.ts +2 -0
- package/src/types.ts +2 -4
- package/src/util.ts +21 -8
- package/src/version.ts +1 -1
- package/dist/components/dialogs/TracklistDialog.d.ts +0 -7
- package/dist/components/dialogs/TracklistDialog.js +0 -23
- package/dist/components/dialogs/TracklistDialog.js.map +0 -1
- package/src/components/dialogs/TracklistDialog.tsx +0 -73
|
@@ -5,12 +5,12 @@ export default class ClustalMSA {
|
|
|
5
5
|
getMSA(): {
|
|
6
6
|
consensus: string;
|
|
7
7
|
alns: {
|
|
8
|
-
id: string;
|
|
8
|
+
id: string | undefined;
|
|
9
9
|
seq: string;
|
|
10
10
|
}[];
|
|
11
11
|
header: {
|
|
12
12
|
info: string;
|
|
13
|
-
version: string;
|
|
13
|
+
version: string | undefined;
|
|
14
14
|
};
|
|
15
15
|
};
|
|
16
16
|
getRow(name: string): string;
|
|
@@ -18,9 +18,9 @@ export default class ClustalMSA {
|
|
|
18
18
|
getRowData(): undefined;
|
|
19
19
|
getHeader(): {
|
|
20
20
|
info: string;
|
|
21
|
-
version: string;
|
|
21
|
+
version: string | undefined;
|
|
22
22
|
};
|
|
23
|
-
getNames(): string[];
|
|
23
|
+
getNames(): (string | undefined)[];
|
|
24
24
|
getStructures(): {};
|
|
25
25
|
get alignmentNames(): never[];
|
|
26
26
|
getTree(): NodeWithIds;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ClustalMSA.js","sourceRoot":"","sources":["../../src/parsers/ClustalMSA.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AAIlC,MAAM,CAAC,OAAO,OAAO,UAAU;IACrB,GAAG,CAA0B;IAErC,YAAY,IAAY;QACtB,IAAI,CAAC,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC,CAAA;IACxB,CAAC;IAED,MAAM;QACJ,OAAO,IAAI,CAAC,GAAG,CAAA;IACjB,CAAC;IAED,MAAM,CAAC,IAAY;QACjB,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,GAAG,IAAI,EAAE,CAAA;IAC9D,CAAC;IAED,QAAQ;QACN,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAE,CAAC,GAAG,CAAC,MAAM,CAAA;IACrC,CAAC;IAED,UAAU;QACR,OAAO,SAAS,CAAA;IAClB,CAAC;IAED,SAAS;QACP,OAAO,IAAI,CAAC,GAAG,CAAC,MAAM,CAAA;IACxB,CAAC;IAED,QAAQ;QACN,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;IACzC,CAAC;IAED,aAAa;QACX,OAAO,EAAE,CAAA;IACX,CAAC;IAED,IAAI,cAAc;QAChB,OAAO,EAAE,CAAA;IACX,CAAC;IAED,OAAO;QACL,OAAO;YACL,EAAE,EAAE,MAAM;YACV,IAAI,EAAE,MAAM;YACZ,MAAM,EAAE,IAAI;YACZ,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"ClustalMSA.js","sourceRoot":"","sources":["../../src/parsers/ClustalMSA.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AAIlC,MAAM,CAAC,OAAO,OAAO,UAAU;IACrB,GAAG,CAA0B;IAErC,YAAY,IAAY;QACtB,IAAI,CAAC,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC,CAAA;IACxB,CAAC;IAED,MAAM;QACJ,OAAO,IAAI,CAAC,GAAG,CAAA;IACjB,CAAC;IAED,MAAM,CAAC,IAAY;QACjB,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,GAAG,IAAI,EAAE,CAAA;IAC9D,CAAC;IAED,QAAQ;QACN,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAE,CAAC,GAAG,CAAC,MAAM,CAAA;IACrC,CAAC;IAED,UAAU;QACR,OAAO,SAAS,CAAA;IAClB,CAAC;IAED,SAAS;QACP,OAAO,IAAI,CAAC,GAAG,CAAC,MAAM,CAAA;IACxB,CAAC;IAED,QAAQ;QACN,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;IACzC,CAAC;IAED,aAAa;QACX,OAAO,EAAE,CAAA;IACX,CAAC;IAED,IAAI,cAAc;QAChB,OAAO,EAAE,CAAA;IACX,CAAC;IAED,OAAO;QACL,OAAO;YACL,EAAE,EAAE,MAAM;YACV,IAAI,EAAE,MAAM;YACZ,MAAM,EAAE,IAAI;YACZ,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE;iBACtB,MAAM,CAAC,CAAC,IAAI,EAAkB,EAAE,CAAC,IAAI,KAAK,SAAS,CAAC;iBACpD,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBACZ,EAAE,EAAE,IAAI;gBACR,IAAI;gBACJ,QAAQ,EAAE,EAAE;aACb,CAAC,CAAC;SACN,CAAA;IACH,CAAC;IAED,IAAI,YAAY;QACd,OAAO,IAAI,CAAC,GAAG,CAAC,SAAS,CAAA;IAC3B,CAAC;IACD,IAAI,2BAA2B;QAC7B,OAAO,SAAS,CAAA;IAClB,CAAC;IAED,IAAI,MAAM;QACR,OAAO,EAAE,CAAA;IACX,CAAC;CACF"}
|
package/dist/parsers/FastaMSA.js
CHANGED
|
@@ -1,22 +1,23 @@
|
|
|
1
|
-
function parseSmallFasta(text) {
|
|
2
|
-
return text
|
|
3
|
-
.split('>')
|
|
4
|
-
.filter(t => /\S/.test(t))
|
|
5
|
-
.map(entryText => {
|
|
6
|
-
const [defLine, ...seqLines] = entryText.split('\n');
|
|
7
|
-
const [id, ...description] = defLine.split(' ');
|
|
8
|
-
const descriptionStr = description.join(' ');
|
|
9
|
-
const seqLinesStr = seqLines.join('');
|
|
10
|
-
const sequence = seqLinesStr.replaceAll(/\s/g, '');
|
|
11
|
-
return { id, description: descriptionStr, sequence };
|
|
12
|
-
});
|
|
13
|
-
}
|
|
14
1
|
export default class FastaMSA {
|
|
15
2
|
MSA;
|
|
16
3
|
constructor(text) {
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
4
|
+
const seqdata = {};
|
|
5
|
+
for (const entry of text.split('>')) {
|
|
6
|
+
if (!/\S/.test(entry)) {
|
|
7
|
+
continue;
|
|
8
|
+
}
|
|
9
|
+
const newlineIdx = entry.indexOf('\n');
|
|
10
|
+
if (newlineIdx === -1) {
|
|
11
|
+
continue;
|
|
12
|
+
}
|
|
13
|
+
const defLine = entry.slice(0, newlineIdx);
|
|
14
|
+
const spaceIdx = defLine.indexOf(' ');
|
|
15
|
+
const id = spaceIdx === -1 ? defLine : defLine.slice(0, spaceIdx);
|
|
16
|
+
if (id) {
|
|
17
|
+
seqdata[id] = entry.slice(newlineIdx + 1).replaceAll(/\s/g, '');
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
this.MSA = { seqdata };
|
|
20
21
|
}
|
|
21
22
|
getMSA() {
|
|
22
23
|
return this.MSA;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FastaMSA.js","sourceRoot":"","sources":["../../src/parsers/FastaMSA.ts"],"names":[],"mappings":"AAEA,
|
|
1
|
+
{"version":3,"file":"FastaMSA.js","sourceRoot":"","sources":["../../src/parsers/FastaMSA.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,OAAO,OAAO,QAAQ;IACnB,GAAG,CAAqC;IAEhD,YAAY,IAAY;QACtB,MAAM,OAAO,GAA2B,EAAE,CAAA;QAC1C,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;YACpC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;gBACtB,SAAQ;YACV,CAAC;YACD,MAAM,UAAU,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;YACtC,IAAI,UAAU,KAAK,CAAC,CAAC,EAAE,CAAC;gBACtB,SAAQ;YACV,CAAC;YACD,MAAM,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,UAAU,CAAC,CAAA;YAC1C,MAAM,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;YACrC,MAAM,EAAE,GAAG,QAAQ,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAA;YACjE,IAAI,EAAE,EAAE,CAAC;gBACP,OAAO,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,CAAC,CAAA;YACjE,CAAC;QACH,CAAC;QACD,IAAI,CAAC,GAAG,GAAG,EAAE,OAAO,EAAE,CAAA;IACxB,CAAC;IAED,MAAM;QACJ,OAAO,IAAI,CAAC,GAAG,CAAA;IACjB,CAAC;IAED,UAAU;QACR,OAAO,SAAS,CAAA;IAClB,CAAC;IAED,QAAQ;QACN,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;IACtC,CAAC;IAED,MAAM,CAAC,IAAY;QACjB,OAAO,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,CAAA;IACrC,CAAC;IAED,QAAQ;QACN,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAE,CAAA;QAC9C,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,CAAA;IACjC,CAAC;IAED,aAAa;QACX,OAAO,EAAE,CAAA;IACX,CAAC;IAED,IAAI,cAAc;QAChB,OAAO,EAAE,CAAA;IACX,CAAC;IAED,SAAS;QACP,OAAO,EAAE,CAAA;IACX,CAAC;IAED,OAAO;QACL,OAAO;YACL,EAAE,EAAE,MAAM;YACV,IAAI,EAAE,MAAM;YACZ,MAAM,EAAE,IAAI;YACZ,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBACrC,EAAE,EAAE,IAAI;gBACR,QAAQ,EAAE,EAAE;gBACZ,IAAI;aACL,CAAC,CAAC;SACJ,CAAA;IACH,CAAC;IAED,IAAI,YAAY;QACd,OAAO,SAAS,CAAA;IAClB,CAAC;IACD,IAAI,2BAA2B;QAC7B,OAAO,SAAS,CAAA;IAClB,CAAC;IAED,IAAI,MAAM;QACR,OAAO,EAAE,CAAA;IACX,CAAC;CACF"}
|
package/dist/renderToSvg.d.ts
CHANGED
|
@@ -3,6 +3,7 @@ import type { Theme } from '@mui/material';
|
|
|
3
3
|
export interface ExportSvgOptions {
|
|
4
4
|
theme: Theme;
|
|
5
5
|
includeMinimap?: boolean;
|
|
6
|
+
includeTracks?: boolean;
|
|
6
7
|
exportType: string;
|
|
7
8
|
}
|
|
8
9
|
export declare function renderToSvg(model: MsaViewModel, opts: ExportSvgOptions): Promise<string>;
|
package/dist/renderToSvg.js
CHANGED
|
@@ -5,56 +5,66 @@ import { when } from 'mobx';
|
|
|
5
5
|
import MinimapSVG from './components/minimap/MinimapSVG';
|
|
6
6
|
import { renderBoxFeatureCanvasBlock } from './components/msa/renderBoxFeatureCanvasBlock';
|
|
7
7
|
import { renderMSABlock } from './components/msa/renderMSABlock';
|
|
8
|
+
import { renderAllTracks } from './components/tracks/renderTracksSvg';
|
|
8
9
|
import { renderTreeCanvas } from './components/tree/renderTreeCanvas';
|
|
9
10
|
import { colorContrast } from './util';
|
|
10
11
|
export async function renderToSvg(model, opts) {
|
|
11
12
|
await when(() => !!model.dataInitialized);
|
|
12
|
-
const { width, height, scrollX, scrollY } = model;
|
|
13
|
-
const { exportType, theme, includeMinimap } = opts;
|
|
13
|
+
const { width, height, scrollX, scrollY, totalTrackAreaHeight } = model;
|
|
14
|
+
const { exportType, theme, includeMinimap, includeTracks } = opts;
|
|
15
|
+
const trackHeight = includeTracks ? totalTrackAreaHeight : 0;
|
|
14
16
|
if (exportType === 'entire') {
|
|
15
17
|
return render({
|
|
16
18
|
width: model.totalWidth + model.treeAreaWidth,
|
|
17
|
-
height: model.totalHeight,
|
|
19
|
+
height: model.totalHeight + trackHeight,
|
|
20
|
+
contentHeight: model.totalHeight,
|
|
21
|
+
trackHeight,
|
|
18
22
|
theme,
|
|
19
23
|
model,
|
|
20
24
|
offsetY: 0,
|
|
21
25
|
offsetX: 0,
|
|
22
26
|
includeMinimap,
|
|
27
|
+
includeTracks,
|
|
23
28
|
});
|
|
24
29
|
}
|
|
25
30
|
if (exportType === 'viewport') {
|
|
26
31
|
return render({
|
|
27
32
|
width,
|
|
28
|
-
height,
|
|
33
|
+
height: height + (includeMinimap ? model.minimapHeight : 0) + trackHeight,
|
|
34
|
+
contentHeight: height,
|
|
35
|
+
trackHeight,
|
|
29
36
|
theme,
|
|
30
37
|
model,
|
|
31
|
-
offsetY: scrollY,
|
|
38
|
+
offsetY: -scrollY,
|
|
32
39
|
offsetX: -scrollX,
|
|
33
40
|
includeMinimap,
|
|
41
|
+
includeTracks,
|
|
34
42
|
});
|
|
35
43
|
}
|
|
36
44
|
throw new Error('unknown export type');
|
|
37
45
|
}
|
|
38
|
-
async function render({ width, height, offsetX, offsetY, theme, model, includeMinimap, }) {
|
|
46
|
+
async function render({ width, height, contentHeight, trackHeight, offsetX, offsetY, theme, model, includeMinimap, includeTracks, }) {
|
|
39
47
|
const { Context } = await import('svgcanvas');
|
|
40
48
|
const Wrapper = includeMinimap ? MinimapWrapper : NullWrapper;
|
|
41
49
|
return renderToStaticMarkup(React.createElement(SvgWrapper, { width: width, height: height },
|
|
42
50
|
React.createElement(Wrapper, { model: model },
|
|
43
|
-
React.createElement(
|
|
51
|
+
includeTracks && trackHeight > 0 ? (React.createElement(TrackRendering, { Context: Context, model: model, theme: theme, offsetX: offsetX, width: width, trackHeight: trackHeight })) : null,
|
|
52
|
+
React.createElement("g", { transform: trackHeight > 0 ? `translate(0 ${trackHeight})` : undefined },
|
|
53
|
+
React.createElement(CoreRendering, { Context: Context, model: model, theme: theme, offsetX: offsetX, offsetY: offsetY, width: width, contentHeight: contentHeight })))));
|
|
44
54
|
}
|
|
45
|
-
function CoreRendering({ model, theme, width,
|
|
46
|
-
const
|
|
47
|
-
const
|
|
48
|
-
const
|
|
55
|
+
function CoreRendering({ model, theme, width, contentHeight, offsetX, offsetY, Context, }) {
|
|
56
|
+
const { treeAreaWidth, colorScheme, id } = model;
|
|
57
|
+
const clipId1 = `tree-${id}`;
|
|
58
|
+
const clipId2 = `msa-${id}`;
|
|
49
59
|
const contrastScheme = colorContrast(colorScheme, theme);
|
|
50
|
-
const ctx1 = Context(width,
|
|
51
|
-
const ctx2 = Context(width,
|
|
60
|
+
const ctx1 = Context(width, contentHeight);
|
|
61
|
+
const ctx2 = Context(width, contentHeight);
|
|
52
62
|
renderBoxFeatureCanvasBlock({
|
|
53
63
|
ctx: ctx2,
|
|
54
64
|
offsetX,
|
|
55
65
|
offsetY,
|
|
56
66
|
model,
|
|
57
|
-
blockSizeYOverride:
|
|
67
|
+
blockSizeYOverride: contentHeight,
|
|
58
68
|
highResScaleFactorOverride: 1,
|
|
59
69
|
});
|
|
60
70
|
const msaAreaWidth = width - treeAreaWidth;
|
|
@@ -63,7 +73,7 @@ function CoreRendering({ model, theme, width, height, offsetX, offsetY, Context,
|
|
|
63
73
|
offsetY,
|
|
64
74
|
ctx: ctx1,
|
|
65
75
|
theme,
|
|
66
|
-
blockSizeYOverride:
|
|
76
|
+
blockSizeYOverride: contentHeight,
|
|
67
77
|
highResScaleFactorOverride: 1,
|
|
68
78
|
});
|
|
69
79
|
renderMSABlock({
|
|
@@ -74,19 +84,39 @@ function CoreRendering({ model, theme, width, height, offsetX, offsetY, Context,
|
|
|
74
84
|
contrastScheme,
|
|
75
85
|
ctx: ctx2,
|
|
76
86
|
blockSizeXOverride: msaAreaWidth,
|
|
77
|
-
blockSizeYOverride:
|
|
87
|
+
blockSizeYOverride: contentHeight,
|
|
78
88
|
highResScaleFactorOverride: 1,
|
|
79
89
|
});
|
|
80
90
|
return (React.createElement(React.Fragment, null,
|
|
81
91
|
React.createElement("defs", null,
|
|
82
92
|
React.createElement("clipPath", { id: clipId1 },
|
|
83
|
-
React.createElement("rect", { x: 0, y: 0, width: treeAreaWidth, height:
|
|
93
|
+
React.createElement("rect", { x: 0, y: 0, width: treeAreaWidth, height: contentHeight }))),
|
|
84
94
|
React.createElement("defs", null,
|
|
85
95
|
React.createElement("clipPath", { id: clipId2 },
|
|
86
|
-
React.createElement("rect", { x: 0, y: 0, width: msaAreaWidth, height:
|
|
96
|
+
React.createElement("rect", { x: 0, y: 0, width: msaAreaWidth, height: contentHeight }))),
|
|
87
97
|
React.createElement("g", { clipPath: `url(#${clipId1})`, dangerouslySetInnerHTML: { __html: ctx1.getSvg().innerHTML } }),
|
|
88
98
|
React.createElement("g", { clipPath: `url(#${clipId2})`, transform: `translate(${treeAreaWidth} 0)`, dangerouslySetInnerHTML: { __html: ctx2.getSvg().innerHTML } })));
|
|
89
99
|
}
|
|
100
|
+
function TrackRendering({ model, theme, width, trackHeight, offsetX, Context, }) {
|
|
101
|
+
const { treeAreaWidth, colorScheme, id } = model;
|
|
102
|
+
const clipId = `tracks-${id}`;
|
|
103
|
+
const contrastScheme = colorContrast(colorScheme, theme);
|
|
104
|
+
const msaAreaWidth = width - treeAreaWidth;
|
|
105
|
+
const ctx = Context(msaAreaWidth, trackHeight);
|
|
106
|
+
renderAllTracks({
|
|
107
|
+
model,
|
|
108
|
+
ctx,
|
|
109
|
+
offsetX,
|
|
110
|
+
contrastScheme,
|
|
111
|
+
blockSizeXOverride: msaAreaWidth,
|
|
112
|
+
highResScaleFactorOverride: 1,
|
|
113
|
+
});
|
|
114
|
+
return (React.createElement("g", { transform: `translate(${treeAreaWidth} 0)` },
|
|
115
|
+
React.createElement("defs", null,
|
|
116
|
+
React.createElement("clipPath", { id: clipId },
|
|
117
|
+
React.createElement("rect", { x: 0, y: 0, width: msaAreaWidth, height: trackHeight }))),
|
|
118
|
+
React.createElement("g", { clipPath: `url(#${clipId})`, dangerouslySetInnerHTML: { __html: ctx.getSvg().innerHTML } })));
|
|
119
|
+
}
|
|
90
120
|
function MinimapWrapper({ model, children, }) {
|
|
91
121
|
const { minimapHeight, treeAreaWidth } = model;
|
|
92
122
|
return (React.createElement(React.Fragment, null,
|
package/dist/renderToSvg.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"renderToSvg.js","sourceRoot":"","sources":["../src/renderToSvg.tsx"],"names":[],"mappings":"AAAA,yDAAyD;AACzD,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAA;AACzD,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAE3B,OAAO,UAAU,MAAM,iCAAiC,CAAA;AACxD,OAAO,EAAE,2BAA2B,EAAE,MAAM,8CAA8C,CAAA;AAC1F,OAAO,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAA;AAChE,OAAO,EAAE,gBAAgB,EAAE,MAAM,oCAAoC,CAAA;AACrE,OAAO,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAA;
|
|
1
|
+
{"version":3,"file":"renderToSvg.js","sourceRoot":"","sources":["../src/renderToSvg.tsx"],"names":[],"mappings":"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"}
|
|
@@ -7,6 +7,8 @@ export function mouseOverCoordToGlobalCoord(blanks, position) {
|
|
|
7
7
|
// Iterate until we reach the target mouse position
|
|
8
8
|
while (mousePosition < position) {
|
|
9
9
|
// Skip any blank positions in the sequence
|
|
10
|
+
// Check if the next position (globalPosition + 1) is blank by comparing
|
|
11
|
+
// blanks[blankArrayIndex] - 1 with current globalPosition
|
|
10
12
|
while (blankArrayIndex < blanksLen &&
|
|
11
13
|
blanks[blankArrayIndex] - 1 === globalPosition) {
|
|
12
14
|
blankArrayIndex++;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rowCoordinateCalculations.js","sourceRoot":"","sources":["../src/rowCoordinateCalculations.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAA;AAEhC,MAAM,UAAU,2BAA2B,CACzC,MAAgB,EAChB,QAAgB;IAEhB,IAAI,aAAa,GAAG,CAAC,CAAA,CAAC,wCAAwC;IAC9D,IAAI,eAAe,GAAG,CAAC,CAAA,CAAC,oCAAoC;IAC5D,IAAI,cAAc,GAAG,CAAC,CAAA,CAAC,gDAAgD;IACvE,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,CAAA;IAE/B,mDAAmD;IACnD,OAAO,aAAa,GAAG,QAAQ,EAAE,CAAC;QAChC,2CAA2C;QAC3C,OACE,eAAe,GAAG,SAAS;YAC3B,MAAM,CAAC,eAAe,CAAE,GAAG,CAAC,KAAK,cAAc,EAC/C,CAAC;YACD,eAAe,EAAE,CAAA;YACjB,cAAc,EAAE,CAAA;QAClB,CAAC;QAED,wBAAwB;QACxB,aAAa,EAAE,CAAA;QACf,cAAc,EAAE,CAAA;IAClB,CAAC;IAED,OAAO,cAAc,CAAA;AACvB,CAAC;AAED,MAAM,UAAU,6BAA6B,CAAC,GAAW,EAAE,QAAgB;IACzE,4CAA4C;IAC5C,IAAI,WAAW,GAAG,CAAC,CAAA;IACnB,8BAA8B;IAC9B,IAAI,eAAe,GAAG,CAAC,CAAA;IACvB,MAAM,cAAc,GAAG,GAAG,CAAC,MAAM,CAAA;IAEjC,gEAAgE;IAChE,OAAO,eAAe,GAAG,QAAQ,IAAI,eAAe,GAAG,cAAc,EAAE,CAAC;QACtE,mEAAmE;QACnE,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC,EAAE,CAAC;YACnC,WAAW,EAAE,CAAA;QACf,CAAC;QACD,eAAe,EAAE,CAAA;IACnB,CAAC;IAED,OAAO,WAAW,CAAA;AACpB,CAAC;AAED,MAAM,UAAU,kCAAkC,CAAC,EACjD,OAAO,EACP,QAAQ,EACR,MAAM,EACN,MAAM,GAMP;IACC,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;IAC/B,OAAO,GAAG,KAAK,SAAS;QACtB,CAAC,CAAC,+BAA+B,CAAC;YAC9B,GAAG;YACH,QAAQ;YACR,MAAM;SACP,CAAC;QACJ,CAAC,CAAC,SAAS,CAAA;AACf,CAAC;AAED,MAAM,UAAU,+BAA+B,CAAC,EAC9C,GAAG,EACH,MAAM,EACN,QAAQ,GAKT;IACC,yDAAyD;IACzD,MAAM,SAAS,GAAG,2BAA2B,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAA;IAC/D,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,CAAA;IAEzB,iDAAiD;IACjD,IAAI,SAAS,GAAG,MAAM,IAAI,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC;QAClD,OAAO,SAAS,CAAA;IAClB,CAAC;IAED,qDAAqD;IACrD,IAAI,WAAW,GAAG,CAAC,CAAA;IACnB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,IAAI,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACjD,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YACrB,WAAW,EAAE,CAAA;QACf,CAAC;IACH,CAAC;IAED,uEAAuE;IACvE,OAAO,SAAS,GAAG,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAA;AACrD,CAAC"}
|
|
1
|
+
{"version":3,"file":"rowCoordinateCalculations.js","sourceRoot":"","sources":["../src/rowCoordinateCalculations.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAA;AAEhC,MAAM,UAAU,2BAA2B,CACzC,MAAgB,EAChB,QAAgB;IAEhB,IAAI,aAAa,GAAG,CAAC,CAAA,CAAC,wCAAwC;IAC9D,IAAI,eAAe,GAAG,CAAC,CAAA,CAAC,oCAAoC;IAC5D,IAAI,cAAc,GAAG,CAAC,CAAA,CAAC,gDAAgD;IACvE,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,CAAA;IAE/B,mDAAmD;IACnD,OAAO,aAAa,GAAG,QAAQ,EAAE,CAAC;QAChC,2CAA2C;QAC3C,wEAAwE;QACxE,0DAA0D;QAC1D,OACE,eAAe,GAAG,SAAS;YAC3B,MAAM,CAAC,eAAe,CAAE,GAAG,CAAC,KAAK,cAAc,EAC/C,CAAC;YACD,eAAe,EAAE,CAAA;YACjB,cAAc,EAAE,CAAA;QAClB,CAAC;QAED,wBAAwB;QACxB,aAAa,EAAE,CAAA;QACf,cAAc,EAAE,CAAA;IAClB,CAAC;IAED,OAAO,cAAc,CAAA;AACvB,CAAC;AAED,MAAM,UAAU,6BAA6B,CAAC,GAAW,EAAE,QAAgB;IACzE,4CAA4C;IAC5C,IAAI,WAAW,GAAG,CAAC,CAAA;IACnB,8BAA8B;IAC9B,IAAI,eAAe,GAAG,CAAC,CAAA;IACvB,MAAM,cAAc,GAAG,GAAG,CAAC,MAAM,CAAA;IAEjC,gEAAgE;IAChE,OAAO,eAAe,GAAG,QAAQ,IAAI,eAAe,GAAG,cAAc,EAAE,CAAC;QACtE,mEAAmE;QACnE,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC,EAAE,CAAC;YACnC,WAAW,EAAE,CAAA;QACf,CAAC;QACD,eAAe,EAAE,CAAA;IACnB,CAAC;IAED,OAAO,WAAW,CAAA;AACpB,CAAC;AAED,MAAM,UAAU,kCAAkC,CAAC,EACjD,OAAO,EACP,QAAQ,EACR,MAAM,EACN,MAAM,GAMP;IACC,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;IAC/B,OAAO,GAAG,KAAK,SAAS;QACtB,CAAC,CAAC,+BAA+B,CAAC;YAC9B,GAAG;YACH,QAAQ;YACR,MAAM;SACP,CAAC;QACJ,CAAC,CAAC,SAAS,CAAA;AACf,CAAC;AAED,MAAM,UAAU,+BAA+B,CAAC,EAC9C,GAAG,EACH,MAAM,EACN,QAAQ,GAKT;IACC,yDAAyD;IACzD,MAAM,SAAS,GAAG,2BAA2B,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAA;IAC/D,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,CAAA;IAEzB,iDAAiD;IACjD,IAAI,SAAS,GAAG,MAAM,IAAI,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC;QAClD,OAAO,SAAS,CAAA;IAClB,CAAC;IAED,qDAAqD;IACrD,IAAI,WAAW,GAAG,CAAC,CAAA;IACnB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,IAAI,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACjD,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YACrB,WAAW,EAAE,CAAA;QACf,CAAC;IACH,CAAC;IAED,uEAAuE;IACvE,OAAO,SAAS,GAAG,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAA;AACrD,CAAC"}
|
package/dist/types.d.ts
CHANGED
|
@@ -11,13 +11,12 @@ export interface BasicTrackModel {
|
|
|
11
11
|
}
|
|
12
12
|
export interface TextTrackModel extends BasicTrackModel {
|
|
13
13
|
customColorScheme?: Record<string, string>;
|
|
14
|
-
data
|
|
14
|
+
data?: string;
|
|
15
15
|
}
|
|
16
|
-
export interface
|
|
16
|
+
export interface BasicTrack {
|
|
17
17
|
ReactComponent: React.FC<any>;
|
|
18
18
|
model: TextTrackModel;
|
|
19
19
|
}
|
|
20
|
-
export type BasicTrack = ITextTrack;
|
|
21
20
|
export interface Node {
|
|
22
21
|
children?: Node[];
|
|
23
22
|
name?: string;
|
package/dist/util.js
CHANGED
|
@@ -21,17 +21,25 @@ export function colorContrast(colorScheme, theme) {
|
|
|
21
21
|
]);
|
|
22
22
|
}
|
|
23
23
|
export function skipBlanks(blanks, arg) {
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
24
|
+
if (blanks.length === 0) {
|
|
25
|
+
return typeof arg === 'string' ? arg : arg.join('');
|
|
26
|
+
}
|
|
27
|
+
const chunks = [];
|
|
28
|
+
let lastEnd = 0;
|
|
29
|
+
for (const blankIdx of blanks) {
|
|
30
|
+
if (blankIdx > lastEnd) {
|
|
31
|
+
chunks.push(typeof arg === 'string'
|
|
32
|
+
? arg.slice(lastEnd, blankIdx)
|
|
33
|
+
: arg.slice(lastEnd, blankIdx).join(''));
|
|
32
34
|
}
|
|
35
|
+
lastEnd = blankIdx + 1;
|
|
36
|
+
}
|
|
37
|
+
if (lastEnd < arg.length) {
|
|
38
|
+
chunks.push(typeof arg === 'string'
|
|
39
|
+
? arg.slice(lastEnd)
|
|
40
|
+
: arg.slice(lastEnd).join(''));
|
|
33
41
|
}
|
|
34
|
-
return
|
|
42
|
+
return chunks.join('');
|
|
35
43
|
}
|
|
36
44
|
// basically same as setRadius from https://observablehq.com/@d3/tree-of-life
|
|
37
45
|
export function setBrLength(d, y0, k) {
|
package/dist/util.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"util.js","sourceRoot":"","sources":["../src/util.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AACvC,OAAO,WAAW,MAAM,sBAAsB,CAAA;AAC9C,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAA;AAM9B,MAAM,CAAC,CAAC,WAAW,CAAC,CAAC,CAAA;AAErB,MAAM,UAAU,SAAS,CACvB,GAAsB,EACtB,EAAsC;IAEtC,OAAO,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAA;AACxD,CAAC;AAED,MAAM,UAAU,eAAe,CAC7B,IAAU,EACV,MAAM,GAAG,MAAM,EACf,KAAK,GAAG,CAAC;IAET,MAAM,EAAE,GAAG,GAAG,MAAM,IAAI,KAAK,EAAE,CAAA;IAE/B,OAAO;QACL,GAAG,IAAI;QACP,EAAE;QACF,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,EAAE;QACrB,QAAQ,EACN,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAC1B,eAAe,CAAC,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,EAAE,EAAE,KAAK,GAAG,CAAC,CAAC,CAC5C,IAAI,EAAE;KACV,CAAA;AACH,CAAC;AAED,MAAM,UAAU,aAAa,CAC3B,WAAmC,EACnC,KAAY;IAEZ,OAAO,SAAS,CAAC,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC;QACjD,MAAM;QACN,KAAK,CAAC,OAAO,CAAC,eAAe,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,CAAC;KACrD,CAAC,CAAA;AACJ,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,MAAgB,EAAE,GAAsB;IACjE,IAAI,CAAC,GAAG,EAAE,CAAA;
|
|
1
|
+
{"version":3,"file":"util.js","sourceRoot":"","sources":["../src/util.ts"],"names":[],"mappings":"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"}
|
package/dist/version.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const version = "4.
|
|
1
|
+
export declare const version = "4.5.0";
|
package/dist/version.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export const version = '4.
|
|
1
|
+
export const version = '4.5.0';
|
|
2
2
|
//# sourceMappingURL=version.js.map
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "react-msaview",
|
|
3
3
|
"author": "Colin",
|
|
4
|
-
"version": "4.
|
|
4
|
+
"version": "4.6.0",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"repository": {
|
|
7
7
|
"type": "git",
|
|
@@ -22,15 +22,15 @@
|
|
|
22
22
|
"clean": "rimraf dist",
|
|
23
23
|
"watch": "yarn build:esm --watch",
|
|
24
24
|
"format": "prettier --write .",
|
|
25
|
-
"prebuild": "
|
|
26
|
-
"
|
|
25
|
+
"prebuild": "yarn clean",
|
|
26
|
+
"preversion": "node output-version.js > src/version.ts && git add -A src && git commit -m '[skip ci] Bump version.ts'",
|
|
27
27
|
"build:esm": "tsc",
|
|
28
28
|
"build:bundle": "webpack",
|
|
29
|
-
"build": "
|
|
30
|
-
"prepack": "
|
|
29
|
+
"build": "yarn build:esm && yarn build:bundle",
|
|
30
|
+
"prepack": "yarn build",
|
|
31
31
|
"postversion": "git push --follow-tags",
|
|
32
32
|
"statedocs": "rm -rf apidocs && mkdir apidocs && node --experimental-strip-types docgen/generateStateModelDocs.ts",
|
|
33
|
-
"poststatedocs": "
|
|
33
|
+
"poststatedocs": "yarn format",
|
|
34
34
|
"test": "vitest"
|
|
35
35
|
},
|
|
36
36
|
"peerDependencies": {
|
package/src/colorSchemes.ts
CHANGED
|
@@ -2,7 +2,7 @@ import { blue, green, orange, red } from '@mui/material/colors'
|
|
|
2
2
|
import { colord, extend } from 'colord'
|
|
3
3
|
import namesPlugin from 'colord/plugins/names'
|
|
4
4
|
|
|
5
|
-
import {
|
|
5
|
+
import { transform } from './util'
|
|
6
6
|
|
|
7
7
|
extend([namesPlugin])
|
|
8
8
|
|
|
@@ -353,181 +353,3 @@ export default transform(colorSchemes, ([key, val]) => [
|
|
|
353
353
|
key,
|
|
354
354
|
transform(val, ([letter, color]) => [letter, colord(color).toHex()]),
|
|
355
355
|
])
|
|
356
|
-
|
|
357
|
-
// info http://www.jalview.org/help/html/colourSchemes/clustal.html
|
|
358
|
-
// modifications:
|
|
359
|
-
// reference to clustalX source code scheme modifies what the jalview.org
|
|
360
|
-
// scheme says there the jalview.org colorscheme says WLVIMAFCHP but it
|
|
361
|
-
// should be WLVIMAFCHPY, colprot.xml says e.g. %#ACFHILMVWYPp" which has Y
|
|
362
|
-
export function getClustalXColor(
|
|
363
|
-
stats: Record<string, number>,
|
|
364
|
-
total: number,
|
|
365
|
-
model: { columns: Record<string, string> },
|
|
366
|
-
row: string,
|
|
367
|
-
col: number,
|
|
368
|
-
) {
|
|
369
|
-
const l = model.columns[row]![col]!
|
|
370
|
-
const {
|
|
371
|
-
W = 0,
|
|
372
|
-
L = 0,
|
|
373
|
-
V = 0,
|
|
374
|
-
I = 0,
|
|
375
|
-
M = 0,
|
|
376
|
-
A = 0,
|
|
377
|
-
F = 0,
|
|
378
|
-
C = 0,
|
|
379
|
-
H = 0,
|
|
380
|
-
P = 0,
|
|
381
|
-
R = 0,
|
|
382
|
-
K = 0,
|
|
383
|
-
Q = 0,
|
|
384
|
-
E = 0,
|
|
385
|
-
D = 0,
|
|
386
|
-
T = 0,
|
|
387
|
-
S = 0,
|
|
388
|
-
G = 0,
|
|
389
|
-
Y = 0,
|
|
390
|
-
N = 0,
|
|
391
|
-
} = stats
|
|
392
|
-
|
|
393
|
-
const WLVIMAFCHP = W + L + V + I + M + A + F + C + H + P + Y
|
|
394
|
-
|
|
395
|
-
const KR = K + R
|
|
396
|
-
const QE = Q + E
|
|
397
|
-
const ED = E + D
|
|
398
|
-
const TS = T + S
|
|
399
|
-
|
|
400
|
-
if (WLVIMAFCHP / total > 0.6) {
|
|
401
|
-
if (
|
|
402
|
-
l === 'W' ||
|
|
403
|
-
l === 'L' ||
|
|
404
|
-
l === 'V' ||
|
|
405
|
-
l === 'A' ||
|
|
406
|
-
l === 'I' ||
|
|
407
|
-
l === 'M' ||
|
|
408
|
-
l === 'F' ||
|
|
409
|
-
l === 'C'
|
|
410
|
-
) {
|
|
411
|
-
// blue from jalview.org docs
|
|
412
|
-
return 'rgb(128,179,230)'
|
|
413
|
-
}
|
|
414
|
-
}
|
|
415
|
-
|
|
416
|
-
if (
|
|
417
|
-
(l === 'K' || l === 'R') &&
|
|
418
|
-
(KR / total > 0.6 || K / total > 0.8 || R / total > 0.8 || Q / total > 0.8)
|
|
419
|
-
) {
|
|
420
|
-
return '#d88'
|
|
421
|
-
}
|
|
422
|
-
|
|
423
|
-
if (
|
|
424
|
-
l === 'E' &&
|
|
425
|
-
(KR / total > 0.6 ||
|
|
426
|
-
QE / total > 0.5 ||
|
|
427
|
-
E / total > 0.8 ||
|
|
428
|
-
Q / total > 0.8 ||
|
|
429
|
-
D / total > 0.8)
|
|
430
|
-
) {
|
|
431
|
-
return 'rgb(192, 72, 192)'
|
|
432
|
-
}
|
|
433
|
-
|
|
434
|
-
if (
|
|
435
|
-
l === 'D' &&
|
|
436
|
-
(KR / total > 0.6 ||
|
|
437
|
-
ED / total > 0.5 ||
|
|
438
|
-
K / total > 0.8 ||
|
|
439
|
-
R / total > 0.8 ||
|
|
440
|
-
Q / total > 0.8)
|
|
441
|
-
) {
|
|
442
|
-
return 'rgb(204, 77, 204)'
|
|
443
|
-
}
|
|
444
|
-
|
|
445
|
-
if (l === 'N' && (N / total > 0.5 || Y / total > 0.85)) {
|
|
446
|
-
return '#8f8'
|
|
447
|
-
}
|
|
448
|
-
if (
|
|
449
|
-
l === 'Q' &&
|
|
450
|
-
(KR / total > 0.6 ||
|
|
451
|
-
QE / total > 0.6 ||
|
|
452
|
-
Q / total > 0.85 ||
|
|
453
|
-
E / total > 0.85 ||
|
|
454
|
-
K / total > 0.85 ||
|
|
455
|
-
R / total > 0.85)
|
|
456
|
-
) {
|
|
457
|
-
return '#8f8'
|
|
458
|
-
}
|
|
459
|
-
|
|
460
|
-
if (
|
|
461
|
-
(l === 'S' || l === 'T') &&
|
|
462
|
-
// WLVIMAFCHP modified from 0.6 to 0.55 on page to match what i see in jalview
|
|
463
|
-
(WLVIMAFCHP / total > 0.6 ||
|
|
464
|
-
TS / total > 0.5 ||
|
|
465
|
-
S / total > 0.85 ||
|
|
466
|
-
T / total > 0.85)
|
|
467
|
-
) {
|
|
468
|
-
return 'rgb(26,204,26)'
|
|
469
|
-
}
|
|
470
|
-
|
|
471
|
-
if (l === 'C' && C / total > 0.85) {
|
|
472
|
-
return 'rgb(240, 128, 128)'
|
|
473
|
-
}
|
|
474
|
-
|
|
475
|
-
if (l === 'G' && G / total > 0) {
|
|
476
|
-
return 'rgb(240, 144, 72)'
|
|
477
|
-
}
|
|
478
|
-
if (l === 'P' && P / total > 0) {
|
|
479
|
-
return 'rgb(204, 204, 0)'
|
|
480
|
-
}
|
|
481
|
-
|
|
482
|
-
if (
|
|
483
|
-
(l === 'H' || l === 'Y') &&
|
|
484
|
-
(WLVIMAFCHP / total > 0.6 ||
|
|
485
|
-
W > 0.85 ||
|
|
486
|
-
Y > 0.85 ||
|
|
487
|
-
A > 0.85 ||
|
|
488
|
-
C > 0.85 ||
|
|
489
|
-
P > 0.85 ||
|
|
490
|
-
Q > 0.85 ||
|
|
491
|
-
F > 0.85 ||
|
|
492
|
-
H > 0.85 ||
|
|
493
|
-
I > 0.85 ||
|
|
494
|
-
L > 0.85 ||
|
|
495
|
-
M > 0.85 ||
|
|
496
|
-
V > 0.85)
|
|
497
|
-
) {
|
|
498
|
-
// cyan from jalview.org docs
|
|
499
|
-
return 'rgb(26, 179, 179)'
|
|
500
|
-
}
|
|
501
|
-
return undefined
|
|
502
|
-
}
|
|
503
|
-
|
|
504
|
-
// info http://www.jalview.org/help/html/colourSchemes/clustal.html
|
|
505
|
-
// modifications:
|
|
506
|
-
// reference to clustalX source code scheme modifies what the jalview.org
|
|
507
|
-
// scheme says there the jalview.org colorscheme says WLVIMAFCHP but it should
|
|
508
|
-
// be WLVIMAFCHPY, colprot.xml says e.g. %#ACFHILMVWYPp" which has Y
|
|
509
|
-
export function getPercentIdentityColor(
|
|
510
|
-
stats: Record<string, number>,
|
|
511
|
-
total: number,
|
|
512
|
-
model: { columns: Record<string, string> },
|
|
513
|
-
row: string,
|
|
514
|
-
col: number,
|
|
515
|
-
) {
|
|
516
|
-
const l = model.columns[row]![col]!
|
|
517
|
-
const entries = Object.entries(stats)
|
|
518
|
-
let ent = 0
|
|
519
|
-
let letter = ''
|
|
520
|
-
for (const entry of entries) {
|
|
521
|
-
if (entry[1] > ent && !isBlank(entry[0])) {
|
|
522
|
-
letter = entry[0]
|
|
523
|
-
ent = entry[1]
|
|
524
|
-
}
|
|
525
|
-
}
|
|
526
|
-
const proportion = ent / total
|
|
527
|
-
const thresh = `hsl(240, 30%, ${100 * Math.max(1 - ent / total / 3, 0.3)}%)`
|
|
528
|
-
if (proportion > 0.4) {
|
|
529
|
-
if (l === letter) {
|
|
530
|
-
return thresh
|
|
531
|
-
}
|
|
532
|
-
}
|
|
533
|
-
}
|