react-msaview 4.4.5 → 4.5.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 +53 -10
- package/dist/components/msa/renderMSABlock.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/TreeCanvasBlock.js +1 -1
- package/dist/components/tree/TreeCanvasBlock.js.map +1 -1
- package/dist/components/tree/TreeNodeMenu.js +2 -2
- package/dist/components/tree/TreeNodeMenu.js.map +1 -1
- package/dist/components/tree/renderTreeCanvas.js +1 -1
- 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 +256 -15
- package/dist/model.js +408 -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 +3 -5
- package/dist/rowCoordinateCalculations.js.map +1 -1
- package/dist/rowCoordinateCalculations.test.js +14 -2
- package/dist/rowCoordinateCalculations.test.js.map +1 -1
- package/dist/seqCoordToRowSpecificGlobalCoord.js +9 -5
- package/dist/seqCoordToRowSpecificGlobalCoord.js.map +1 -1
- package/dist/seqCoordToRowSpecificGlobalCoord.test.js +6 -6
- 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 +82 -22
- package/src/components/tracks/renderTracksSvg.ts +157 -0
- package/src/components/tree/TreeCanvasBlock.tsx +1 -1
- package/src/components/tree/TreeNodeMenu.tsx +2 -2
- package/src/components/tree/renderTreeCanvas.ts +1 -1
- 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 +496 -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.test.ts +15 -2
- package/src/rowCoordinateCalculations.ts +3 -5
- package/src/seqCoordToRowSpecificGlobalCoord.test.ts +6 -6
- package/src/seqCoordToRowSpecificGlobalCoord.ts +9 -4
- 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++;
|
|
@@ -27,13 +29,9 @@ export function globalCoordToRowSpecificCoord(seq, position) {
|
|
|
27
29
|
// Iterate until we reach the target position or end of sequence
|
|
28
30
|
while (currentPosition < position && currentPosition < sequenceLength) {
|
|
29
31
|
// If current character is not a gap, increment the non-gap counter
|
|
30
|
-
if (seq[currentPosition]
|
|
32
|
+
if (!isBlank(seq[currentPosition])) {
|
|
31
33
|
nonGapCount++;
|
|
32
34
|
}
|
|
33
|
-
// If we've reached the target position in non-gap coordinates, break
|
|
34
|
-
else if (nonGapCount >= position) {
|
|
35
|
-
break;
|
|
36
|
-
}
|
|
37
35
|
currentPosition++;
|
|
38
36
|
}
|
|
39
37
|
return nonGapCount;
|
|
@@ -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,GAAG,CAAC,eAAe,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"}
|
|
@@ -69,11 +69,23 @@ test('with gaps in sequence', () => {
|
|
|
69
69
|
expect(globalCoordToRowSpecificCoord(sequence, 0)).toBe(0);
|
|
70
70
|
expect(globalCoordToRowSpecificCoord(sequence, 1)).toBe(1);
|
|
71
71
|
expect(globalCoordToRowSpecificCoord(sequence, 2)).toBe(2);
|
|
72
|
-
// Position
|
|
72
|
+
// Position 2 is a gap, so count before it is 2
|
|
73
73
|
expect(globalCoordToRowSpecificCoord(sequence, 3)).toBe(2);
|
|
74
74
|
expect(globalCoordToRowSpecificCoord(sequence, 4)).toBe(3);
|
|
75
75
|
expect(globalCoordToRowSpecificCoord(sequence, 5)).toBe(4);
|
|
76
|
-
// Position
|
|
76
|
+
// Position 5 is a gap, so count before it is 4
|
|
77
|
+
expect(globalCoordToRowSpecificCoord(sequence, 6)).toBe(4);
|
|
78
|
+
});
|
|
79
|
+
test('with mixed gap characters (- and .)', () => {
|
|
80
|
+
const sequence = 'AC.GT-A';
|
|
81
|
+
expect(globalCoordToRowSpecificCoord(sequence, 0)).toBe(0);
|
|
82
|
+
expect(globalCoordToRowSpecificCoord(sequence, 1)).toBe(1);
|
|
83
|
+
// Position 2 is a gap (.), so count before it is 2
|
|
84
|
+
expect(globalCoordToRowSpecificCoord(sequence, 2)).toBe(2);
|
|
85
|
+
expect(globalCoordToRowSpecificCoord(sequence, 3)).toBe(2);
|
|
86
|
+
expect(globalCoordToRowSpecificCoord(sequence, 4)).toBe(3);
|
|
87
|
+
// Position 5 is a gap (-), so count before it is 4
|
|
88
|
+
expect(globalCoordToRowSpecificCoord(sequence, 5)).toBe(4);
|
|
77
89
|
expect(globalCoordToRowSpecificCoord(sequence, 6)).toBe(4);
|
|
78
90
|
});
|
|
79
91
|
test('with no gaps in sequence', () => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rowCoordinateCalculations.test.js","sourceRoot":"","sources":["../src/rowCoordinateCalculations.test.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"rowCoordinateCalculations.test.js","sourceRoot":"","sources":["../src/rowCoordinateCalculations.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,14 +2,18 @@ import { isBlank } from './util';
|
|
|
2
2
|
export function seqCoordToRowSpecificGlobalCoord({ row, position, }) {
|
|
3
3
|
let k = 0;
|
|
4
4
|
let i = 0;
|
|
5
|
-
|
|
5
|
+
// Find the position-th non-gap character
|
|
6
|
+
while (i < row.length) {
|
|
6
7
|
if (!isBlank(row[i])) {
|
|
8
|
+
if (k === position) {
|
|
9
|
+
return i;
|
|
10
|
+
}
|
|
7
11
|
k++;
|
|
8
12
|
}
|
|
9
|
-
|
|
10
|
-
break;
|
|
11
|
-
}
|
|
13
|
+
i++;
|
|
12
14
|
}
|
|
13
|
-
return
|
|
15
|
+
// If position is 0 and we didn't find any non-gap character, return 0
|
|
16
|
+
// Otherwise return i (which is row.length at this point)
|
|
17
|
+
return position === 0 ? 0 : i;
|
|
14
18
|
}
|
|
15
19
|
//# sourceMappingURL=seqCoordToRowSpecificGlobalCoord.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"seqCoordToRowSpecificGlobalCoord.js","sourceRoot":"","sources":["../src/seqCoordToRowSpecificGlobalCoord.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAA;AAEhC,MAAM,UAAU,gCAAgC,CAAC,EAC/C,GAAG,EACH,QAAQ,GAIT;IACC,IAAI,CAAC,GAAG,CAAC,CAAA;IACT,IAAI,CAAC,GAAG,CAAC,CAAA;IACT,OAAO,CAAC,GAAG,
|
|
1
|
+
{"version":3,"file":"seqCoordToRowSpecificGlobalCoord.js","sourceRoot":"","sources":["../src/seqCoordToRowSpecificGlobalCoord.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAA;AAEhC,MAAM,UAAU,gCAAgC,CAAC,EAC/C,GAAG,EACH,QAAQ,GAIT;IACC,IAAI,CAAC,GAAG,CAAC,CAAA;IACT,IAAI,CAAC,GAAG,CAAC,CAAA;IACT,yCAAyC;IACzC,OAAO,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC;QACtB,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YACrB,IAAI,CAAC,KAAK,QAAQ,EAAE,CAAC;gBACnB,OAAO,CAAC,CAAA;YACV,CAAC;YACD,CAAC,EAAE,CAAA;QACL,CAAC;QACD,CAAC,EAAE,CAAA;IACL,CAAC;IACD,sEAAsE;IACtE,yDAAyD;IACzD,OAAO,QAAQ,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;AAC/B,CAAC"}
|
|
@@ -14,11 +14,11 @@ describe('seqCoordToRowSpecificGlobalCoord', () => {
|
|
|
14
14
|
// Position 0 (first A) -> Global index 0
|
|
15
15
|
expect(seqCoordToRowSpecificGlobalCoord({ row, position: 0 })).toBe(0);
|
|
16
16
|
// Position 1 (T after first gap) -> Global index 2
|
|
17
|
-
expect(seqCoordToRowSpecificGlobalCoord({ row, position: 1 })).toBe(
|
|
17
|
+
expect(seqCoordToRowSpecificGlobalCoord({ row, position: 1 })).toBe(2);
|
|
18
18
|
// Position 3 (C after second gap) -> Global index 5
|
|
19
|
-
expect(seqCoordToRowSpecificGlobalCoord({ row, position: 3 })).toBe(
|
|
19
|
+
expect(seqCoordToRowSpecificGlobalCoord({ row, position: 3 })).toBe(5);
|
|
20
20
|
// Position 5 (T after third gap) -> Global index 8
|
|
21
|
-
expect(seqCoordToRowSpecificGlobalCoord({ row, position: 5 })).toBe(
|
|
21
|
+
expect(seqCoordToRowSpecificGlobalCoord({ row, position: 5 })).toBe(8);
|
|
22
22
|
// Position 8 (end of sequence) -> Global index 11
|
|
23
23
|
expect(seqCoordToRowSpecificGlobalCoord({ row, position: 8 })).toBe(11);
|
|
24
24
|
});
|
|
@@ -34,9 +34,9 @@ describe('seqCoordToRowSpecificGlobalCoord', () => {
|
|
|
34
34
|
// A(0) -(1) .(2) G(3) -(4) C(5) .(6)
|
|
35
35
|
// Sequence positions: A(0) G(1) C(2)
|
|
36
36
|
expect(seqCoordToRowSpecificGlobalCoord({ row, position: 0 })).toBe(0);
|
|
37
|
-
expect(seqCoordToRowSpecificGlobalCoord({ row, position: 1 })).toBe(
|
|
38
|
-
expect(seqCoordToRowSpecificGlobalCoord({ row, position: 2 })).toBe(
|
|
39
|
-
expect(seqCoordToRowSpecificGlobalCoord({ row, position: 3 })).toBe(
|
|
37
|
+
expect(seqCoordToRowSpecificGlobalCoord({ row, position: 1 })).toBe(3);
|
|
38
|
+
expect(seqCoordToRowSpecificGlobalCoord({ row, position: 2 })).toBe(5);
|
|
39
|
+
expect(seqCoordToRowSpecificGlobalCoord({ row, position: 3 })).toBe(7);
|
|
40
40
|
});
|
|
41
41
|
});
|
|
42
42
|
//# sourceMappingURL=seqCoordToRowSpecificGlobalCoord.test.js.map
|
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.4.
|
|
1
|
+
export declare const version = "4.4.7";
|
package/dist/version.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export const version = '4.4.
|
|
1
|
+
export const version = '4.4.7';
|
|
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.5.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": {
|