react-msaview 6.1.1 → 6.2.1
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 +92 -92
- package/bundle/index.js.map +4 -4
- package/dist/components/dialogs/ExportSVGDialog.js +48 -20
- package/dist/components/dialogs/ExportSVGDialog.js.map +1 -1
- package/dist/components/getVisibleLeaves.d.ts +8 -0
- package/dist/components/getVisibleLeaves.js +13 -6
- package/dist/components/getVisibleLeaves.js.map +1 -1
- package/dist/components/minimap/Minimap.js +1 -1
- package/dist/components/minimap/Minimap.js.map +1 -1
- package/dist/components/minimap/MinimapSVG.d.ts +4 -4
- package/dist/components/minimap/MinimapSVG.js +16 -10
- package/dist/components/minimap/MinimapSVG.js.map +1 -1
- package/dist/components/minimap/minimapLayout.d.ts +5 -8
- package/dist/components/minimap/minimapLayout.js +10 -11
- package/dist/components/minimap/minimapLayout.js.map +1 -1
- package/dist/components/msa/msaRaster.d.ts +32 -2
- package/dist/components/msa/msaRaster.js +93 -15
- package/dist/components/msa/msaRaster.js.map +1 -1
- package/dist/{renderTestEnv.d.ts → headlessRenderEnv.d.ts} +15 -13
- package/dist/{renderTestEnv.js → headlessRenderEnv.js} +22 -18
- package/dist/headlessRenderEnv.js.map +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.js +3 -0
- package/dist/index.js.map +1 -1
- package/dist/model.d.ts +25 -0
- package/dist/model.js +62 -13
- package/dist/model.js.map +1 -1
- package/dist/renderToSvg.js +115 -36
- package/dist/renderToSvg.js.map +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/package.json +3 -3
- package/src/components/dialogs/ExportSVGDialog.tsx +55 -20
- package/src/components/getVisibleLeaves.ts +25 -9
- package/src/components/minimap/Minimap.tsx +1 -4
- package/src/components/minimap/MinimapSVG.tsx +50 -35
- package/src/components/minimap/minimapLayout.test.ts +16 -5
- package/src/components/minimap/minimapLayout.ts +10 -11
- package/src/components/msa/msaRaster.ts +124 -17
- package/src/{renderTestEnv.ts → headlessRenderEnv.ts} +23 -19
- package/src/impgRender.test.tsx +2 -2
- package/src/index.ts +6 -0
- package/src/model.ts +77 -13
- package/src/modelReset.test.ts +120 -0
- package/src/renderDomainsSvg.test.tsx +2 -2
- package/src/renderMinimapSvg.test.tsx +29 -15
- package/src/renderRasterSvg.test.tsx +216 -0
- package/src/renderSequenceLogoSvg.test.tsx +6 -4
- package/src/renderToSvg.test.tsx +79 -0
- package/src/renderToSvg.tsx +201 -65
- package/src/version.ts +1 -1
- package/dist/renderTestEnv.js.map +0 -1
|
@@ -1,18 +1,33 @@
|
|
|
1
1
|
import React, { useState } from 'react';
|
|
2
2
|
import { Dialog, ErrorMessage } from '@jbrowse/core/ui';
|
|
3
|
-
import { Alert, Button, DialogActions, DialogContent, FormControl, FormControlLabel, FormLabel, Radio, RadioGroup, Typography, useTheme, } from '@mui/material';
|
|
3
|
+
import { Alert, Button, CircularProgress, DialogActions, DialogContent, FormControl, FormControlLabel, FormLabel, Radio, RadioGroup, Typography, useTheme, } from '@mui/material';
|
|
4
4
|
import Checkbox2 from '../Checkbox2.js';
|
|
5
|
+
// Run after the browser has painted. A requestAnimationFrame callback still
|
|
6
|
+
// runs *before* the frame it was queued for, so one alone hands the main thread
|
|
7
|
+
// to the render with the spinner not yet on screen; the second fires once that
|
|
8
|
+
// frame is out.
|
|
9
|
+
function afterPaint(fn) {
|
|
10
|
+
requestAnimationFrame(() => {
|
|
11
|
+
requestAnimationFrame(fn);
|
|
12
|
+
});
|
|
13
|
+
}
|
|
5
14
|
export default function ExportSVGDialog({ model, onClose, }) {
|
|
6
15
|
const [includeMinimap, setIncludeMinimap] = useState(true);
|
|
7
16
|
const [includeTracks, setIncludeTracks] = useState(true);
|
|
8
17
|
const [exportType, setExportType] = useState('viewport');
|
|
9
18
|
const [error, setError] = useState();
|
|
19
|
+
const [exporting, setExporting] = useState(false);
|
|
10
20
|
const theme = useTheme();
|
|
11
|
-
const { totalWidth, totalHeight, treeAreaWidth, turnedOnTracks, totalTrackAreaHeight, } = model;
|
|
21
|
+
const { totalWidth, totalHeight, treeAreaWidth, turnedOnTracks, totalTrackAreaHeight, numColumns, leaves, showMsaLetters, } = model;
|
|
12
22
|
const hasTracks = turnedOnTracks.length > 0;
|
|
13
23
|
const entireWidth = totalWidth + treeAreaWidth;
|
|
14
24
|
const entireHeight = totalHeight + (includeTracks ? totalTrackAreaHeight : 0);
|
|
15
|
-
|
|
25
|
+
// the background is one raster image whatever its size, so what the figure
|
|
26
|
+
// actually costs is its residue letters: each is an svg element of its own.
|
|
27
|
+
// Past roughly this many the export runs to tens of seconds and can exhaust
|
|
28
|
+
// the tab's memory outright
|
|
29
|
+
const glyphs = showMsaLetters && exportType === 'entire' ? numColumns * leaves.length : 0;
|
|
30
|
+
const isLargeExport = glyphs > 100_000;
|
|
16
31
|
return (React.createElement(Dialog, { onClose: () => {
|
|
17
32
|
onClose();
|
|
18
33
|
}, open: true, title: "Export SVG" },
|
|
@@ -37,28 +52,41 @@ export default function ExportSVGDialog({ model, onClose, }) {
|
|
|
37
52
|
React.createElement(FormControlLabel, { value: "entire", control: React.createElement(Radio, null), label: "Entire MSA" }),
|
|
38
53
|
React.createElement(FormControlLabel, { value: "viewport", control: React.createElement(Radio, null), label: "Current viewport only" })))),
|
|
39
54
|
isLargeExport ? (React.createElement(Alert, { severity: "warning", style: { marginTop: 8 } },
|
|
40
|
-
"The entire MSA is
|
|
55
|
+
"The entire MSA is ",
|
|
41
56
|
Math.round(entireWidth),
|
|
42
57
|
"x",
|
|
43
58
|
Math.round(entireHeight),
|
|
44
|
-
" pixels
|
|
59
|
+
" pixels and draws",
|
|
60
|
+
' ',
|
|
61
|
+
Math.round(glyphs / 1000),
|
|
62
|
+
"k residue letters, each its own SVG element. Export may be slow or fail \u2014 zooming out far enough to hide the letters exports the same alignment as an image instead.")) : null),
|
|
45
63
|
React.createElement(DialogActions, null,
|
|
46
|
-
React.createElement(Button, { variant: "contained", color: "primary",
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
64
|
+
React.createElement(Button, { variant: "contained", color: "primary",
|
|
65
|
+
// rendering runs on the main thread and a large figure holds it for
|
|
66
|
+
// seconds; without this the button stays live through the freeze and
|
|
67
|
+
// a second click starts a second export
|
|
68
|
+
disabled: exporting, startIcon: exporting ? React.createElement(CircularProgress, { size: 16, color: "inherit" }) : null, onClick: () => {
|
|
69
|
+
setExporting(true);
|
|
70
|
+
afterPaint(() => {
|
|
71
|
+
void model
|
|
72
|
+
.exportSVG({
|
|
73
|
+
theme,
|
|
74
|
+
includeMinimap,
|
|
75
|
+
includeTracks: hasTracks && includeTracks,
|
|
76
|
+
exportType,
|
|
77
|
+
})
|
|
78
|
+
.then(() => {
|
|
79
|
+
onClose();
|
|
80
|
+
})
|
|
81
|
+
.catch((e) => {
|
|
82
|
+
console.error(e);
|
|
83
|
+
setError(e);
|
|
84
|
+
})
|
|
85
|
+
.finally(() => {
|
|
86
|
+
setExporting(false);
|
|
87
|
+
});
|
|
60
88
|
});
|
|
61
|
-
} },
|
|
89
|
+
} }, exporting ? 'Exporting…' : 'Submit'),
|
|
62
90
|
React.createElement(Button, { variant: "contained", color: "secondary", onClick: () => {
|
|
63
91
|
onClose();
|
|
64
92
|
} }, "Cancel"))));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ExportSVGDialog.js","sourceRoot":"","sources":["../../../src/components/dialogs/ExportSVGDialog.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AAEvC,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAA;AACvD,OAAO,EACL,KAAK,EACL,MAAM,EACN,aAAa,EACb,aAAa,EACb,WAAW,EACX,gBAAgB,EAChB,SAAS,EACT,KAAK,EACL,UAAU,EACV,UAAU,EACV,QAAQ,GACT,MAAM,eAAe,CAAA;AAEtB,OAAO,SAAS,MAAM,iBAAkB,CAAA;AAIxC,MAAM,CAAC,OAAO,UAAU,eAAe,CAAC,EACtC,KAAK,EACL,OAAO,GAIR;IACC,MAAM,CAAC,cAAc,EAAE,iBAAiB,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAA;IAC1D,MAAM,CAAC,aAAa,EAAE,gBAAgB,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAA;IACxD,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,QAAQ,CAC1C,UAAU,CACX,CAAA;IACD,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,EAAW,CAAA;IAC7C,MAAM,KAAK,GAAG,QAAQ,EAAE,CAAA;IACxB,MAAM,EACJ,UAAU,EACV,WAAW,EACX,aAAa,EACb,cAAc,EACd,oBAAoB,
|
|
1
|
+
{"version":3,"file":"ExportSVGDialog.js","sourceRoot":"","sources":["../../../src/components/dialogs/ExportSVGDialog.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,12 @@
|
|
|
1
1
|
import type { MsaViewModel } from '../model.ts';
|
|
2
|
+
export declare function visibleRowRange({ model, offsetY, blockSizeY, }: {
|
|
3
|
+
model: MsaViewModel;
|
|
4
|
+
offsetY: number;
|
|
5
|
+
blockSizeY: number;
|
|
6
|
+
}): {
|
|
7
|
+
yStart: number;
|
|
8
|
+
yEnd: number;
|
|
9
|
+
};
|
|
2
10
|
export declare function getVisibleLeaves({ model, offsetY, blockSizeY, }: {
|
|
3
11
|
model: MsaViewModel;
|
|
4
12
|
offsetY: number;
|
|
@@ -1,9 +1,16 @@
|
|
|
1
|
-
// The
|
|
2
|
-
// vertical offset offsetY, padded by one row on each side.
|
|
1
|
+
// The half-open range of rows [yStart, yEnd) whose leaves intersect a block of
|
|
2
|
+
// height blockSizeY at vertical offset offsetY, padded by one row on each side.
|
|
3
|
+
// Y-axis counterpart to visibleColRange.
|
|
4
|
+
export function visibleRowRange({ model, offsetY, blockSizeY, }) {
|
|
5
|
+
const { rowHeight } = model;
|
|
6
|
+
return {
|
|
7
|
+
yStart: Math.max(0, Math.floor((offsetY - rowHeight) / rowHeight)),
|
|
8
|
+
yEnd: Math.max(0, Math.ceil((offsetY + blockSizeY + rowHeight) / rowHeight)),
|
|
9
|
+
};
|
|
10
|
+
}
|
|
11
|
+
// The leaves in that range.
|
|
3
12
|
export function getVisibleLeaves({ model, offsetY, blockSizeY, }) {
|
|
4
|
-
const {
|
|
5
|
-
|
|
6
|
-
const yEnd = Math.max(0, Math.ceil((offsetY + blockSizeY + rowHeight) / rowHeight));
|
|
7
|
-
return leaves.slice(yStart, yEnd);
|
|
13
|
+
const { yStart, yEnd } = visibleRowRange({ model, offsetY, blockSizeY });
|
|
14
|
+
return model.leaves.slice(yStart, yEnd);
|
|
8
15
|
}
|
|
9
16
|
//# sourceMappingURL=getVisibleLeaves.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getVisibleLeaves.js","sourceRoot":"","sources":["../../src/components/getVisibleLeaves.ts"],"names":[],"mappings":"AAEA,
|
|
1
|
+
{"version":3,"file":"getVisibleLeaves.js","sourceRoot":"","sources":["../../src/components/getVisibleLeaves.ts"],"names":[],"mappings":"AAEA,+EAA+E;AAC/E,gFAAgF;AAChF,yCAAyC;AACzC,MAAM,UAAU,eAAe,CAAC,EAC9B,KAAK,EACL,OAAO,EACP,UAAU,GAKX;IACC,MAAM,EAAE,SAAS,EAAE,GAAG,KAAK,CAAA;IAC3B,OAAO;QACL,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,GAAG,SAAS,CAAC,GAAG,SAAS,CAAC,CAAC;QAClE,IAAI,EAAE,IAAI,CAAC,GAAG,CACZ,CAAC,EACD,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,GAAG,UAAU,GAAG,SAAS,CAAC,GAAG,SAAS,CAAC,CAC1D;KACF,CAAA;AACH,CAAC;AAED,4BAA4B;AAC5B,MAAM,UAAU,gBAAgB,CAAC,EAC/B,KAAK,EACL,OAAO,EACP,UAAU,GAKX;IACC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,eAAe,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC,CAAA;IACxE,OAAO,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;AACzC,CAAC"}
|
|
@@ -8,7 +8,7 @@ import { MINIMAP_BAR_HEIGHT, getMinimapLayout } from './minimapLayout.js';
|
|
|
8
8
|
const Minimap = observer(function ({ model }) {
|
|
9
9
|
const { minimapHeight, msaCanvasWidth, highResScaleFactor } = model;
|
|
10
10
|
const theme = useTheme();
|
|
11
|
-
const { unit, s, w, polygonHeight, polygonPoints } = getMinimapLayout(model
|
|
11
|
+
const { unit, s, w, polygonHeight, polygonPoints } = getMinimapLayout(model);
|
|
12
12
|
// the whole alignment, sampled down to the bar: it says where the conserved
|
|
13
13
|
// blocks and the gappy stretches are, which is what a scroll aims at
|
|
14
14
|
const barWidth = Math.round(msaCanvasWidth * highResScaleFactor);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Minimap.js","sourceRoot":"","sources":["../../../src/components/minimap/Minimap.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,WAAW,EAAE,MAAM,OAAO,CAAA;AAE1C,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AACxC,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AAErC,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAA;AAC5D,OAAO,UAAU,EAAE,EAAE,kBAAkB,EAAE,MAAM,kBAAmB,CAAA;AAClE,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAA;AAClD,OAAO,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAA;AAIzE,MAAM,OAAO,GAAG,QAAQ,CAAC,UAAU,EAAE,KAAK,EAA2B;IACnE,MAAM,EAAE,aAAa,EAAE,cAAc,EAAE,kBAAkB,EAAE,GAAG,KAAK,CAAA;IACnE,MAAM,KAAK,GAAG,QAAQ,EAAE,CAAA;IACxB,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,aAAa,EAAE,aAAa,EAAE,GAAG,gBAAgB,
|
|
1
|
+
{"version":3,"file":"Minimap.js","sourceRoot":"","sources":["../../../src/components/minimap/Minimap.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import type { MsaViewModel } from '../../model.ts';
|
|
3
|
-
|
|
3
|
+
import type { Theme } from '@mui/material';
|
|
4
|
+
export default function MinimapSVG({ model, theme, }: {
|
|
4
5
|
model: MsaViewModel;
|
|
5
|
-
|
|
6
|
-
})
|
|
7
|
-
export default MinimapSVG;
|
|
6
|
+
theme: Theme;
|
|
7
|
+
}): React.JSX.Element;
|
|
@@ -1,15 +1,21 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
import {
|
|
2
|
+
import { scrollbarThumbFill } from '../DragHandle.js';
|
|
3
|
+
import { canvasHref, msaThumbnail } from '../msa/msaRaster.js';
|
|
3
4
|
import { MINIMAP_BAR_HEIGHT, getMinimapLayout } from './minimapLayout.js';
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
5
|
+
// The static counterpart to Minimap, for the SVG export. renderToSvg drives it
|
|
6
|
+
// through renderToStaticMarkup, so it reads the model once and never re-renders
|
|
7
|
+
// -- no observer wrapper.
|
|
8
|
+
export default function MinimapSVG({ model, theme, }) {
|
|
9
|
+
const { msaCanvasWidth } = model;
|
|
10
|
+
const { s, w, polygonPoints } = getMinimapLayout(model);
|
|
11
|
+
// the same downsampled alignment the live minimap draws behind its thumb;
|
|
12
|
+
// undefined wherever a canvas cannot be read back, leaving a bare outline
|
|
13
|
+
const href = canvasHref(msaThumbnail({ model, theme, height: MINIMAP_BAR_HEIGHT }));
|
|
8
14
|
return (React.createElement(React.Fragment, null,
|
|
9
|
-
React.createElement("
|
|
10
|
-
React.createElement("rect", { x:
|
|
15
|
+
href ? (React.createElement("image", { href: href, x: 0, y: 0, width: msaCanvasWidth, height: MINIMAP_BAR_HEIGHT, preserveAspectRatio: "none" })) : null,
|
|
16
|
+
React.createElement("rect", { x: 0, y: 0, width: msaCanvasWidth, height: MINIMAP_BAR_HEIGHT, stroke: "#555", fill: "none" }),
|
|
17
|
+
React.createElement("rect", { x: Math.max(0, s), y: 0, width: w, height: MINIMAP_BAR_HEIGHT, fill: scrollbarThumbFill, stroke: "#555" }),
|
|
11
18
|
React.createElement("g", { transform: `translate(0 ${MINIMAP_BAR_HEIGHT})` },
|
|
12
|
-
React.createElement("polygon", { fill:
|
|
13
|
-
}
|
|
14
|
-
export default MinimapSVG;
|
|
19
|
+
React.createElement("polygon", { fill: scrollbarThumbFill, points: polygonPoints }))));
|
|
20
|
+
}
|
|
15
21
|
//# sourceMappingURL=MinimapSVG.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MinimapSVG.js","sourceRoot":"","sources":["../../../src/components/minimap/MinimapSVG.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"MinimapSVG.js","sourceRoot":"","sources":["../../../src/components/minimap/MinimapSVG.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAmB,CAAA;AACtD,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAA;AAC9D,OAAO,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAA;AAKzE,+EAA+E;AAC/E,gFAAgF;AAChF,0BAA0B;AAC1B,MAAM,CAAC,OAAO,UAAU,UAAU,CAAC,EACjC,KAAK,EACL,KAAK,GAIN;IACC,MAAM,EAAE,cAAc,EAAE,GAAG,KAAK,CAAA;IAChC,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,aAAa,EAAE,GAAG,gBAAgB,CAAC,KAAK,CAAC,CAAA;IACvD,0EAA0E;IAC1E,0EAA0E;IAC1E,MAAM,IAAI,GAAG,UAAU,CACrB,YAAY,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,kBAAkB,EAAE,CAAC,CAC3D,CAAA;IAED,OAAO,CACL;QACG,IAAI,CAAC,CAAC,CAAC,CACN,+BACE,IAAI,EAAE,IAAI,EACV,CAAC,EAAE,CAAC,EACJ,CAAC,EAAE,CAAC,EACJ,KAAK,EAAE,cAAc,EACrB,MAAM,EAAE,kBAAkB,EAC1B,mBAAmB,EAAC,MAAM,GAC1B,CACH,CAAC,CAAC,CAAC,IAAI;QACR,8BACE,CAAC,EAAE,CAAC,EACJ,CAAC,EAAE,CAAC,EACJ,KAAK,EAAE,cAAc,EACrB,MAAM,EAAE,kBAAkB,EAC1B,MAAM,EAAC,MAAM,EACb,IAAI,EAAC,MAAM,GACX;QACF,8BACE,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,EACjB,CAAC,EAAE,CAAC,EACJ,KAAK,EAAE,CAAC,EACR,MAAM,EAAE,kBAAkB,EAC1B,IAAI,EAAE,kBAAkB,EACxB,MAAM,EAAC,MAAM,GACb;QACF,2BAAG,SAAS,EAAE,eAAe,kBAAkB,GAAG;YAChD,iCAAS,IAAI,EAAE,kBAAkB,EAAE,MAAM,EAAE,aAAa,GAAI,CAC1D,CACH,CACJ,CAAA;AACH,CAAC"}
|
|
@@ -1,15 +1,12 @@
|
|
|
1
1
|
import type { MsaViewModel } from '../../model.ts';
|
|
2
2
|
export declare const MINIMAP_BAR_HEIGHT = 12;
|
|
3
3
|
/**
|
|
4
|
-
* Viewport-rectangle and trapezoid geometry for
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
* differ: on screen the minimap sits over the alignment canvas, while the SVG
|
|
9
|
-
* export lays the whole figure out on its own grid. What the rectangle *marks*
|
|
10
|
-
* is always the on-screen viewport, so that part comes from the model.
|
|
4
|
+
* Viewport-rectangle and trapezoid geometry for the minimap, shared by the
|
|
5
|
+
* interactive Minimap and the static MinimapSVG. Both span the alignment canvas
|
|
6
|
+
* exactly -- a minimap drawn a different width than the columns it maps puts
|
|
7
|
+
* its viewport rectangle over the wrong ones.
|
|
11
8
|
*/
|
|
12
|
-
export declare function getMinimapLayout(model: MsaViewModel
|
|
9
|
+
export declare function getMinimapLayout(model: MsaViewModel): {
|
|
13
10
|
unit: number;
|
|
14
11
|
s: number;
|
|
15
12
|
w: number;
|
|
@@ -1,20 +1,19 @@
|
|
|
1
1
|
export const MINIMAP_BAR_HEIGHT = 12;
|
|
2
2
|
/**
|
|
3
|
-
* Viewport-rectangle and trapezoid geometry for
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
* differ: on screen the minimap sits over the alignment canvas, while the SVG
|
|
8
|
-
* export lays the whole figure out on its own grid. What the rectangle *marks*
|
|
9
|
-
* is always the on-screen viewport, so that part comes from the model.
|
|
3
|
+
* Viewport-rectangle and trapezoid geometry for the minimap, shared by the
|
|
4
|
+
* interactive Minimap and the static MinimapSVG. Both span the alignment canvas
|
|
5
|
+
* exactly -- a minimap drawn a different width than the columns it maps puts
|
|
6
|
+
* its viewport rectangle over the wrong ones.
|
|
10
7
|
*/
|
|
11
|
-
export function getMinimapLayout(model
|
|
8
|
+
export function getMinimapLayout(model) {
|
|
12
9
|
const { scrollX, minimapHeight, totalWidth, msaCanvasWidth } = model;
|
|
13
|
-
const unit = totalWidth > 0 ?
|
|
10
|
+
const unit = totalWidth > 0 ? msaCanvasWidth / totalWidth : 0;
|
|
14
11
|
const s = -scrollX * unit;
|
|
15
|
-
|
|
12
|
+
// the rectangle marks the visible slice of the alignment, so it can never be
|
|
13
|
+
// wider than the bar itself
|
|
14
|
+
const w = Math.min(msaCanvasWidth, Math.max(msaCanvasWidth * unit, 20));
|
|
16
15
|
const polygonHeight = minimapHeight - MINIMAP_BAR_HEIGHT;
|
|
17
|
-
const polygonPoints = `${s + w},0 ${s},0 0,${polygonHeight} ${
|
|
16
|
+
const polygonPoints = `${s + w},0 ${s},0 0,${polygonHeight} ${msaCanvasWidth},${polygonHeight}`;
|
|
18
17
|
return { unit, s, w, polygonHeight, polygonPoints };
|
|
19
18
|
}
|
|
20
19
|
//# sourceMappingURL=minimapLayout.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"minimapLayout.js","sourceRoot":"","sources":["../../../src/components/minimap/minimapLayout.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,kBAAkB,GAAG,EAAE,CAAA;AAEpC
|
|
1
|
+
{"version":3,"file":"minimapLayout.js","sourceRoot":"","sources":["../../../src/components/minimap/minimapLayout.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,kBAAkB,GAAG,EAAE,CAAA;AAEpC;;;;;GAKG;AACH,MAAM,UAAU,gBAAgB,CAAC,KAAmB;IAClD,MAAM,EAAE,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,cAAc,EAAE,GAAG,KAAK,CAAA;IACpE,MAAM,IAAI,GAAG,UAAU,GAAG,CAAC,CAAC,CAAC,CAAC,cAAc,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC,CAAA;IAC7D,MAAM,CAAC,GAAG,CAAC,OAAO,GAAG,IAAI,CAAA;IACzB,6EAA6E;IAC7E,4BAA4B;IAC5B,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,cAAc,EAAE,IAAI,CAAC,GAAG,CAAC,cAAc,GAAG,IAAI,EAAE,EAAE,CAAC,CAAC,CAAA;IACvE,MAAM,aAAa,GAAG,aAAa,GAAG,kBAAkB,CAAA;IACxD,MAAM,aAAa,GAAG,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,aAAa,IAAI,cAAc,IAAI,aAAa,EAAE,CAAA;IAC/F,OAAO,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,aAAa,EAAE,aAAa,EAAE,CAAA;AACrD,CAAC"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { MsaViewModel } from '../../model.ts';
|
|
2
2
|
import type { Theme } from '@mui/material';
|
|
3
3
|
export declare const rasterTileSize = 512;
|
|
4
|
-
type RasterCanvas = HTMLCanvasElement | OffscreenCanvas;
|
|
4
|
+
export type RasterCanvas = HTMLCanvasElement | OffscreenCanvas;
|
|
5
5
|
export interface RasterSpec {
|
|
6
6
|
rowNames: string[];
|
|
7
7
|
columns: Map<string, string>;
|
|
@@ -50,6 +50,37 @@ export declare function drawMsaRaster({ ctx, model, theme, offsetX, offsetY, }:
|
|
|
50
50
|
offsetX: number;
|
|
51
51
|
offsetY: number;
|
|
52
52
|
}): void;
|
|
53
|
+
/**
|
|
54
|
+
* A raster canvas as a PNG data URI, for embedding in the SVG export.
|
|
55
|
+
*
|
|
56
|
+
* toDataURL is the synchronous read-back and only the DOM canvas has it, so an
|
|
57
|
+
* OffscreenCanvas -- which is what the tile and thumbnail caches hold wherever
|
|
58
|
+
* it exists -- gets copied onto one first. Returns undefined wherever the
|
|
59
|
+
* read-back is unavailable (jsdom) rather than throwing, which is the signal to
|
|
60
|
+
* fall back to drawing the thing in vector.
|
|
61
|
+
*/
|
|
62
|
+
export declare function canvasHref(canvas: RasterCanvas | undefined): string | undefined;
|
|
63
|
+
/**
|
|
64
|
+
* The alignment rectangle [col0, col0+numCols) x [row0, row0+numRows) as a PNG
|
|
65
|
+
* data URI, for the SVG export.
|
|
66
|
+
*
|
|
67
|
+
* SVG has no blit, so the export cannot reuse the tile cache the live canvas
|
|
68
|
+
* draws from: one <image> is the whole background instead. That is the
|
|
69
|
+
* difference between an export that scales and one that does not -- the vector
|
|
70
|
+
* path emits a <rect> per cell, and a 200x500 alignment exhausts the heap
|
|
71
|
+
* building them.
|
|
72
|
+
*
|
|
73
|
+
* Returns undefined wherever a canvas cannot be read back (jsdom, notably),
|
|
74
|
+
* which is the signal to keep the per-cell path.
|
|
75
|
+
*/
|
|
76
|
+
export declare function rasterImageHref({ model, theme, col0, row0, numCols, numRows, }: {
|
|
77
|
+
model: MsaViewModel;
|
|
78
|
+
theme: Theme;
|
|
79
|
+
col0: number;
|
|
80
|
+
row0: number;
|
|
81
|
+
numCols: number;
|
|
82
|
+
numRows: number;
|
|
83
|
+
}): string | undefined;
|
|
53
84
|
/**
|
|
54
85
|
* The whole alignment sampled down to a strip small enough to sit behind the
|
|
55
86
|
* minimap thumb, cached alongside the block tiles because it goes stale under
|
|
@@ -60,4 +91,3 @@ export declare function msaThumbnail({ model, theme, height, }: {
|
|
|
60
91
|
theme: Theme;
|
|
61
92
|
height: number;
|
|
62
93
|
}): RasterCanvas | undefined;
|
|
63
|
-
export {};
|
|
@@ -85,23 +85,28 @@ export function rasterPixels({ spec, col0, row0, width, height, colStep = 1, row
|
|
|
85
85
|
}
|
|
86
86
|
return out;
|
|
87
87
|
}
|
|
88
|
+
// Getting a context object back is not the same as getting one that can do
|
|
89
|
+
// this: the headless render shim hands back a context carrying only measureText,
|
|
90
|
+
// which a truthiness test accepts and putImageData then does not survive. Name
|
|
91
|
+
// the methods the raster actually calls, so every caller degrades together.
|
|
92
|
+
function usableRasterCtx(ctx) {
|
|
93
|
+
const c = ctx;
|
|
94
|
+
return (!!c &&
|
|
95
|
+
typeof c.createImageData === 'function' &&
|
|
96
|
+
typeof c.putImageData === 'function' &&
|
|
97
|
+
typeof c.getImageData === 'function' &&
|
|
98
|
+
typeof c.clearRect === 'function' &&
|
|
99
|
+
typeof c.fillRect === 'function');
|
|
100
|
+
}
|
|
88
101
|
function makeRasterCanvas(width, height) {
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
? { canvas: canvas, ctx: ctx }
|
|
102
|
+
const canvas = typeof OffscreenCanvas !== 'undefined'
|
|
103
|
+
? new OffscreenCanvas(width, height)
|
|
104
|
+
: typeof document !== 'undefined'
|
|
105
|
+
? Object.assign(document.createElement('canvas'), { width, height })
|
|
94
106
|
: undefined;
|
|
95
|
-
}
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
}
|
|
99
|
-
const canvas = document.createElement('canvas');
|
|
100
|
-
canvas.width = width;
|
|
101
|
-
canvas.height = height;
|
|
102
|
-
const ctx = canvas.getContext('2d', { willReadFrequently: true });
|
|
103
|
-
return ctx
|
|
104
|
-
? { canvas: canvas, ctx: ctx }
|
|
107
|
+
const ctx = canvas?.getContext('2d', { willReadFrequently: true });
|
|
108
|
+
return usableRasterCtx(ctx)
|
|
109
|
+
? { canvas: canvas, ctx }
|
|
105
110
|
: undefined;
|
|
106
111
|
}
|
|
107
112
|
function paint(pixels, width, height) {
|
|
@@ -221,6 +226,79 @@ export function drawMsaRaster({ ctx, model, theme, offsetX, offsetY, }) {
|
|
|
221
226
|
ctx.resetTransform();
|
|
222
227
|
ctx.imageSmoothingEnabled = true;
|
|
223
228
|
}
|
|
229
|
+
/**
|
|
230
|
+
* A raster canvas as a PNG data URI, for embedding in the SVG export.
|
|
231
|
+
*
|
|
232
|
+
* toDataURL is the synchronous read-back and only the DOM canvas has it, so an
|
|
233
|
+
* OffscreenCanvas -- which is what the tile and thumbnail caches hold wherever
|
|
234
|
+
* it exists -- gets copied onto one first. Returns undefined wherever the
|
|
235
|
+
* read-back is unavailable (jsdom) rather than throwing, which is the signal to
|
|
236
|
+
* fall back to drawing the thing in vector.
|
|
237
|
+
*/
|
|
238
|
+
export function canvasHref(canvas) {
|
|
239
|
+
if (!canvas || typeof document === 'undefined') {
|
|
240
|
+
return undefined;
|
|
241
|
+
}
|
|
242
|
+
try {
|
|
243
|
+
if (canvas instanceof HTMLCanvasElement) {
|
|
244
|
+
return canvas.toDataURL('image/png');
|
|
245
|
+
}
|
|
246
|
+
const out = document.createElement('canvas');
|
|
247
|
+
out.width = canvas.width;
|
|
248
|
+
out.height = canvas.height;
|
|
249
|
+
const ctx = out.getContext('2d');
|
|
250
|
+
if (typeof ctx?.drawImage !== 'function') {
|
|
251
|
+
return undefined;
|
|
252
|
+
}
|
|
253
|
+
ctx.drawImage(canvas, 0, 0);
|
|
254
|
+
return out.toDataURL('image/png');
|
|
255
|
+
}
|
|
256
|
+
catch {
|
|
257
|
+
return undefined;
|
|
258
|
+
}
|
|
259
|
+
}
|
|
260
|
+
// A canvas much past this many pixels fails to allocate, and the browser's own
|
|
261
|
+
// per-side limit is lower still, so a raster bigger than either samples down.
|
|
262
|
+
// The result is still drawn across the same rectangle -- it loses cell-exact
|
|
263
|
+
// detail at a size where no figure could show it anyway.
|
|
264
|
+
const maxImagePixels = 64e6;
|
|
265
|
+
const maxImageSide = 16384;
|
|
266
|
+
/**
|
|
267
|
+
* The alignment rectangle [col0, col0+numCols) x [row0, row0+numRows) as a PNG
|
|
268
|
+
* data URI, for the SVG export.
|
|
269
|
+
*
|
|
270
|
+
* SVG has no blit, so the export cannot reuse the tile cache the live canvas
|
|
271
|
+
* draws from: one <image> is the whole background instead. That is the
|
|
272
|
+
* difference between an export that scales and one that does not -- the vector
|
|
273
|
+
* path emits a <rect> per cell, and a 200x500 alignment exhausts the heap
|
|
274
|
+
* building them.
|
|
275
|
+
*
|
|
276
|
+
* Returns undefined wherever a canvas cannot be read back (jsdom, notably),
|
|
277
|
+
* which is the signal to keep the per-cell path.
|
|
278
|
+
*/
|
|
279
|
+
export function rasterImageHref({ model, theme, col0, row0, numCols, numRows, }) {
|
|
280
|
+
if (numCols <= 0 || numRows <= 0 || typeof document === 'undefined') {
|
|
281
|
+
return undefined;
|
|
282
|
+
}
|
|
283
|
+
const cache = getCache(model, theme);
|
|
284
|
+
let step = 1;
|
|
285
|
+
while (Math.ceil(numCols / step) * Math.ceil(numRows / step) > maxImagePixels ||
|
|
286
|
+
Math.ceil(numCols / step) > maxImageSide ||
|
|
287
|
+
Math.ceil(numRows / step) > maxImageSide) {
|
|
288
|
+
step *= 2;
|
|
289
|
+
}
|
|
290
|
+
const width = Math.ceil(numCols / step);
|
|
291
|
+
const height = Math.ceil(numRows / step);
|
|
292
|
+
return canvasHref(paint(rasterPixels({
|
|
293
|
+
spec: cache.spec,
|
|
294
|
+
col0,
|
|
295
|
+
row0,
|
|
296
|
+
width,
|
|
297
|
+
height,
|
|
298
|
+
colStep: step,
|
|
299
|
+
rowStep: step,
|
|
300
|
+
}), width, height));
|
|
301
|
+
}
|
|
224
302
|
/**
|
|
225
303
|
* The whole alignment sampled down to a strip small enough to sit behind the
|
|
226
304
|
* minimap thumb, cached alongside the block tiles because it goes stale under
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"msaRaster.js","sourceRoot":"","sources":["../../../src/components/msa/msaRaster.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"msaRaster.js","sourceRoot":"","sources":["../../../src/components/msa/msaRaster.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
3
|
-
*
|
|
2
|
+
* DOM shims for driving `renderToSvg` outside a browser -- the SVG-export
|
|
3
|
+
* tests, the README figure generator, and react-msaview-cli all need them.
|
|
4
4
|
*
|
|
5
5
|
* jsdom implements neither DOMMatrix nor a canvas 2D context, and
|
|
6
6
|
* `@jbrowse/svgcanvas` needs both: it tracks the current transform as a real
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
* leaves the rest undefined -- every emitted transform then carries `NaN` in its
|
|
13
13
|
* x components, which no assertion on a drawn x-position can survive.
|
|
14
14
|
*/
|
|
15
|
-
export declare class
|
|
15
|
+
export declare class HeadlessDOMMatrix {
|
|
16
16
|
a: number;
|
|
17
17
|
b: number;
|
|
18
18
|
c: number;
|
|
@@ -20,24 +20,26 @@ export declare class TestDOMMatrix {
|
|
|
20
20
|
e: number;
|
|
21
21
|
f: number;
|
|
22
22
|
constructor(init?: number[]);
|
|
23
|
-
multiply(o:
|
|
24
|
-
translate(x: number, y?: number):
|
|
25
|
-
scale(x: number, y?: number):
|
|
23
|
+
multiply(o: HeadlessDOMMatrix): HeadlessDOMMatrix;
|
|
24
|
+
translate(x: number, y?: number): HeadlessDOMMatrix;
|
|
25
|
+
scale(x: number, y?: number): HeadlessDOMMatrix;
|
|
26
26
|
}
|
|
27
|
-
export declare class
|
|
27
|
+
export declare class HeadlessDOMPoint {
|
|
28
28
|
x: number;
|
|
29
29
|
y: number;
|
|
30
30
|
constructor(x?: number, y?: number);
|
|
31
|
-
matrixTransform(m:
|
|
31
|
+
matrixTransform(m: HeadlessDOMMatrix): HeadlessDOMPoint;
|
|
32
32
|
}
|
|
33
33
|
/**
|
|
34
|
-
* Install the shims
|
|
34
|
+
* Install the shims, into `globalThis` by default. A Node caller that builds
|
|
35
|
+
* its own jsdom passes that window instead, because Node has no global
|
|
36
|
+
* HTMLCanvasElement to patch.
|
|
35
37
|
*
|
|
36
38
|
* `measureText` reports 0.6em per character, close enough to a real sans-serif
|
|
37
|
-
* average for layout
|
|
38
|
-
*
|
|
39
|
+
* average for layout and, more usefully, exactly predictable: a caller can
|
|
40
|
+
* compute the width a renderer will see rather than hardcoding a number
|
|
39
41
|
* measured from one machine's fonts.
|
|
40
42
|
*/
|
|
41
|
-
export declare function
|
|
43
|
+
export declare function installHeadlessRenderEnv(win?: unknown): void;
|
|
42
44
|
/** the per-character width factor `measureText` above reports */
|
|
43
|
-
export declare const
|
|
45
|
+
export declare const CHAR_WIDTH_RATIO = 0.6;
|