react-msaview 3.0.3 → 3.1.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 +45 -31
- package/dist/calculateBlocks.d.ts +12 -0
- package/dist/calculateBlocks.js +23 -0
- package/dist/calculateBlocks.js.map +1 -0
- package/dist/components/ExportSVGDialog.d.ts +6 -0
- package/dist/components/ExportSVGDialog.js +26 -0
- package/dist/components/ExportSVGDialog.js.map +1 -0
- package/dist/components/MSAPanel/MSABlock.js +2 -2
- package/dist/components/MSAPanel/MSABlock.js.map +1 -1
- package/dist/components/MSAPanel/renderMSABlock.d.ts +4 -1
- package/dist/components/MSAPanel/renderMSABlock.js +8 -6
- package/dist/components/MSAPanel/renderMSABlock.js.map +1 -1
- package/dist/components/MSAPanel/renderMSAMouseover.js +0 -1
- package/dist/components/MSAPanel/renderMSAMouseover.js.map +1 -1
- package/dist/components/MinimapSVG.d.ts +6 -0
- package/dist/components/MinimapSVG.js +25 -0
- package/dist/components/MinimapSVG.js.map +1 -0
- package/dist/components/TreePanel/TreeCanvasBlock.js +0 -1
- package/dist/components/TreePanel/TreeCanvasBlock.js.map +1 -1
- package/dist/components/TreePanel/renderTreeCanvas.d.ts +13 -8
- package/dist/components/TreePanel/renderTreeCanvas.js +43 -17
- package/dist/components/TreePanel/renderTreeCanvas.js.map +1 -1
- package/dist/components/ZoomControls.js +15 -14
- package/dist/components/ZoomControls.js.map +1 -1
- package/dist/model.d.ts +72 -66
- package/dist/model.js +81 -70
- package/dist/model.js.map +1 -1
- package/dist/parsers/ClustalMSA.d.ts +18 -5
- package/dist/renderToSvg.d.ts +6 -0
- package/dist/renderToSvg.js +62 -0
- package/dist/renderToSvg.js.map +1 -0
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/package.json +4 -1
- package/src/calculateBlocks.ts +58 -0
- package/src/components/ExportSVGDialog.tsx +61 -0
- package/src/components/MSAPanel/MSABlock.tsx +2 -2
- package/src/components/MSAPanel/renderMSABlock.ts +14 -6
- package/src/components/MSAPanel/renderMSAMouseover.ts +0 -1
- package/src/components/MinimapSVG.tsx +57 -0
- package/src/components/TreePanel/TreeCanvasBlock.tsx +0 -1
- package/src/components/TreePanel/renderTreeCanvas.ts +53 -17
- package/src/components/ZoomControls.tsx +21 -13
- package/src/declare.d.ts +1 -0
- package/src/model.ts +86 -88
- package/src/renderToSvg.tsx +102 -0
- package/src/version.ts +1 -1
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export declare function blocksY({ mapHeight, blockSize, viewportY, viewportHeight, }: {
|
|
2
|
+
mapHeight: number;
|
|
3
|
+
blockSize: number;
|
|
4
|
+
viewportY: number;
|
|
5
|
+
viewportHeight: number;
|
|
6
|
+
}): number[];
|
|
7
|
+
export declare function blocksX({ mapWidth, blockSize, viewportX, viewportWidth, }: {
|
|
8
|
+
mapWidth: number;
|
|
9
|
+
blockSize: number;
|
|
10
|
+
viewportX: number;
|
|
11
|
+
viewportWidth: number;
|
|
12
|
+
}): number[];
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
export function blocksY({ mapHeight, blockSize, viewportY, viewportHeight, }) {
|
|
2
|
+
const clampedViewportY = Math.max(0, Math.min(viewportY, mapHeight * blockSize - viewportHeight));
|
|
3
|
+
// Calculate visible tile ranges
|
|
4
|
+
const minTileY = Math.floor(clampedViewportY / blockSize);
|
|
5
|
+
const maxTileY = Math.floor((clampedViewportY + viewportHeight - 1) / blockSize);
|
|
6
|
+
// Generate list of visible tiles
|
|
7
|
+
const blocksY = [];
|
|
8
|
+
for (let tileY = minTileY; tileY <= maxTileY; tileY++) {
|
|
9
|
+
blocksY.push(tileY * blockSize);
|
|
10
|
+
}
|
|
11
|
+
return blocksY;
|
|
12
|
+
}
|
|
13
|
+
export function blocksX({ mapWidth, blockSize, viewportX, viewportWidth, }) {
|
|
14
|
+
const clampedViewportX = Math.max(0, Math.min(viewportX, mapWidth - viewportWidth));
|
|
15
|
+
const minTileX = Math.floor(clampedViewportX / blockSize);
|
|
16
|
+
const maxTileX = Math.floor((clampedViewportX + viewportWidth - 1) / blockSize);
|
|
17
|
+
const blocksX = [];
|
|
18
|
+
for (let tileX = minTileX; tileX <= maxTileX; tileX++) {
|
|
19
|
+
blocksX.push(tileX * blockSize);
|
|
20
|
+
}
|
|
21
|
+
return blocksX;
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=calculateBlocks.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"calculateBlocks.js","sourceRoot":"","sources":["../src/calculateBlocks.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,OAAO,CAAC,EACtB,SAAS,EACT,SAAS,EACT,SAAS,EACT,cAAc,GAMf;IACC,MAAM,gBAAgB,GAAG,IAAI,CAAC,GAAG,CAC/B,CAAC,EACD,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,SAAS,GAAG,SAAS,GAAG,cAAc,CAAC,CAC5D,CAAA;IAED,gCAAgC;IAChC,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,gBAAgB,GAAG,SAAS,CAAC,CAAA;IACzD,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CACzB,CAAC,gBAAgB,GAAG,cAAc,GAAG,CAAC,CAAC,GAAG,SAAS,CACpD,CAAA;IAED,iCAAiC;IACjC,MAAM,OAAO,GAAG,EAAE,CAAA;IAClB,KAAK,IAAI,KAAK,GAAG,QAAQ,EAAE,KAAK,IAAI,QAAQ,EAAE,KAAK,EAAE,EAAE,CAAC;QACtD,OAAO,CAAC,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC,CAAA;IACjC,CAAC;IAED,OAAO,OAAO,CAAA;AAChB,CAAC;AAED,MAAM,UAAU,OAAO,CAAC,EACtB,QAAQ,EACR,SAAS,EACT,SAAS,EACT,aAAa,GAMd;IACC,MAAM,gBAAgB,GAAG,IAAI,CAAC,GAAG,CAC/B,CAAC,EACD,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,QAAQ,GAAG,aAAa,CAAC,CAC9C,CAAA;IAED,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,gBAAgB,GAAG,SAAS,CAAC,CAAA;IACzD,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CACzB,CAAC,gBAAgB,GAAG,aAAa,GAAG,CAAC,CAAC,GAAG,SAAS,CACnD,CAAA;IACD,MAAM,OAAO,GAAG,EAAE,CAAA;IAClB,KAAK,IAAI,KAAK,GAAG,QAAQ,EAAE,KAAK,IAAI,QAAQ,EAAE,KAAK,EAAE,EAAE,CAAC;QACtD,OAAO,CAAC,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC,CAAA;IACjC,CAAC;IAED,OAAO,OAAO,CAAA;AAChB,CAAC"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import React, { useState } from 'react';
|
|
2
|
+
import { Dialog, ErrorMessage } from '@jbrowse/core/ui';
|
|
3
|
+
import { DialogContent, DialogActions, Button, Checkbox, FormControlLabel, useTheme, Typography, } from '@mui/material';
|
|
4
|
+
export default function ExportSVGDialog({ model, onClose, }) {
|
|
5
|
+
const [includeMinimap, setIncludeMinimap] = useState(true);
|
|
6
|
+
const [error, setError] = useState();
|
|
7
|
+
const theme = useTheme();
|
|
8
|
+
return (React.createElement(Dialog, { onClose: () => onClose(), open: true, title: "Export SVG" },
|
|
9
|
+
React.createElement(DialogContent, null,
|
|
10
|
+
React.createElement(Typography, null, "Export SVG of current view"),
|
|
11
|
+
error ? React.createElement(ErrorMessage, { error: error }) : null,
|
|
12
|
+
React.createElement(FormControlLabel, { control: React.createElement(Checkbox, { checked: includeMinimap, onChange: event => setIncludeMinimap(event.target.checked) }), label: "Include minimap?" })),
|
|
13
|
+
React.createElement(DialogActions, null,
|
|
14
|
+
React.createElement(Button, { variant: "contained", color: "primary", onClick: async () => {
|
|
15
|
+
try {
|
|
16
|
+
await model.exportSVG({ theme, includeMinimap });
|
|
17
|
+
}
|
|
18
|
+
catch (e) {
|
|
19
|
+
console.error(e);
|
|
20
|
+
setError(e);
|
|
21
|
+
}
|
|
22
|
+
onClose();
|
|
23
|
+
} }, "Submit"),
|
|
24
|
+
React.createElement(Button, { variant: "contained", color: "secondary", onClick: () => onClose() }, "Cancel"))));
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=ExportSVGDialog.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ExportSVGDialog.js","sourceRoot":"","sources":["../../src/components/ExportSVGDialog.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AACvC,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAA;AACvD,OAAO,EACL,aAAa,EACb,aAAa,EACb,MAAM,EACN,QAAQ,EACR,gBAAgB,EAChB,QAAQ,EACR,UAAU,GACX,MAAM,eAAe,CAAA;AAGtB,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,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,EAAW,CAAA;IAC7C,MAAM,KAAK,GAAG,QAAQ,EAAE,CAAA;IACxB,OAAO,CACL,oBAAC,MAAM,IAAC,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,EAAE,EAAE,IAAI,QAAC,KAAK,EAAC,YAAY;QACvD,oBAAC,aAAa;YACZ,oBAAC,UAAU,qCAAwC;YAClD,KAAK,CAAC,CAAC,CAAC,oBAAC,YAAY,IAAC,KAAK,EAAE,KAAK,GAAI,CAAC,CAAC,CAAC,IAAI;YAC9C,oBAAC,gBAAgB,IACf,OAAO,EACL,oBAAC,QAAQ,IACP,OAAO,EAAE,cAAc,EACvB,QAAQ,EAAE,KAAK,CAAC,EAAE,CAAC,iBAAiB,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,GAC1D,EAEJ,KAAK,EAAC,kBAAkB,GACxB,CACY;QAChB,oBAAC,aAAa;YACZ,oBAAC,MAAM,IACL,OAAO,EAAC,WAAW,EACnB,KAAK,EAAC,SAAS,EACf,OAAO,EAAE,KAAK,IAAI,EAAE;oBAClB,IAAI,CAAC;wBACH,MAAM,KAAK,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,cAAc,EAAE,CAAC,CAAA;oBAClD,CAAC;oBAAC,OAAO,CAAC,EAAE,CAAC;wBACX,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;wBAChB,QAAQ,CAAC,CAAC,CAAC,CAAA;oBACb,CAAC;oBACD,OAAO,EAAE,CAAA;gBACX,CAAC,aAGM;YACT,oBAAC,MAAM,IAAC,OAAO,EAAC,WAAW,EAAC,KAAK,EAAC,WAAW,EAAC,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,EAAE,aAE7D,CACK,CACT,CACV,CAAA;AACH,CAAC"}
|
|
@@ -3,7 +3,7 @@ import { autorun } from 'mobx';
|
|
|
3
3
|
import { useTheme } from '@mui/material';
|
|
4
4
|
import { observer } from 'mobx-react';
|
|
5
5
|
// locals
|
|
6
|
-
import {
|
|
6
|
+
import { renderMSABlock } from './renderMSABlock';
|
|
7
7
|
import { colorContrast } from '../../util';
|
|
8
8
|
const MSABlock = observer(function ({ model, offsetX, offsetY, }) {
|
|
9
9
|
const { colWidth, rowHeight, scrollY, scrollX, colorScheme, blockSize, highResScaleFactor, } = model;
|
|
@@ -17,7 +17,7 @@ const MSABlock = observer(function ({ model, offsetX, offsetY, }) {
|
|
|
17
17
|
return;
|
|
18
18
|
}
|
|
19
19
|
return autorun(() => {
|
|
20
|
-
|
|
20
|
+
renderMSABlock({
|
|
21
21
|
ctx,
|
|
22
22
|
offsetX,
|
|
23
23
|
offsetY,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MSABlock.js","sourceRoot":"","sources":["../../../src/components/MSAPanel/MSABlock.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,OAAO,CAAA;AACzD,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAA;AAC9B,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AACxC,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AAErC,SAAS;AACT,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"MSABlock.js","sourceRoot":"","sources":["../../../src/components/MSAPanel/MSABlock.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,OAAO,CAAA;AACzD,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAA;AAC9B,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AACxC,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AAErC,SAAS;AACT,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AAEjD,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AAE1C,MAAM,QAAQ,GAAG,QAAQ,CAAC,UAAU,EAClC,KAAK,EACL,OAAO,EACP,OAAO,GAKR;IACC,MAAM,EACJ,QAAQ,EACR,SAAS,EACT,OAAO,EACP,OAAO,EACP,WAAW,EACX,SAAS,EACT,kBAAkB,GACnB,GAAG,KAAK,CAAA;IACT,MAAM,KAAK,GAAG,QAAQ,EAAE,CAAA;IAExB,MAAM,cAAc,GAAG,OAAO,CAC5B,GAAG,EAAE,CAAC,aAAa,CAAC,WAAW,EAAE,KAAK,CAAC,EACvC,CAAC,WAAW,EAAE,KAAK,CAAC,CACrB,CAAA;IAED,MAAM,GAAG,GAAG,MAAM,CAAoB,IAAI,CAAC,CAAA;IAC3C,SAAS,CAAC,GAAG,EAAE;;QACb,MAAM,GAAG,GAAG,MAAA,GAAG,CAAC,OAAO,0CAAE,UAAU,CAAC,IAAI,CAAC,CAAA;QACzC,IAAI,CAAC,GAAG,EAAE,CAAC;YACT,OAAM;QACR,CAAC;QACD,OAAO,OAAO,CAAC,GAAG,EAAE;YAClB,cAAc,CAAC;gBACb,GAAG;gBACH,OAAO;gBACP,OAAO;gBACP,cAAc;gBACd,KAAK;aACN,CAAC,CAAA;QACJ,CAAC,CAAC,CAAA;IACJ,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,cAAc,CAAC,CAAC,CAAA;IAC7C,OAAO,CACL,gCACE,GAAG,EAAE,GAAG,EACR,WAAW,EAAE,KAAK,CAAC,EAAE;YACnB,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;gBACjB,OAAM;YACR,CAAC;YACD,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,GAAG,CAAC,OAAO,CAAC,qBAAqB,EAAE,CAAA;YACzD,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,GAAG,IAAI,GAAG,OAAO,CAAA;YAC7C,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,GAAG,GAAG,GAAG,OAAO,CAAA;YAC5C,KAAK,CAAC,WAAW,CACf,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,QAAQ,CAAC,GAAG,CAAC,EACjC,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,SAAS,CAAC,CAC/B,CAAA;QACH,CAAC,EACD,YAAY,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,WAAW,EAAE,EACvC,KAAK,EAAE,SAAS,GAAG,kBAAkB,EACrC,MAAM,EAAE,SAAS,GAAG,kBAAkB,EACtC,KAAK,EAAE;YACL,QAAQ,EAAE,UAAU;YACpB,GAAG,EAAE,OAAO,GAAG,OAAO;YACtB,IAAI,EAAE,OAAO,GAAG,OAAO;YACvB,KAAK,EAAE,SAAS;YAChB,MAAM,EAAE,SAAS;SAClB,GACD,CACH,CAAA;AACH,CAAC,CAAC,CAAA;AAEF,eAAe,QAAQ,CAAA"}
|
|
@@ -1,8 +1,11 @@
|
|
|
1
1
|
import { MsaViewModel } from '../../model';
|
|
2
|
-
export declare function
|
|
2
|
+
export declare function renderMSABlock({ model, offsetX, offsetY, contrastScheme, ctx, highResScaleFactorOverride, blockSizeXOverride, blockSizeYOverride, }: {
|
|
3
3
|
offsetX: number;
|
|
4
4
|
offsetY: number;
|
|
5
5
|
model: MsaViewModel;
|
|
6
6
|
contrastScheme: Record<string, string>;
|
|
7
7
|
ctx: CanvasRenderingContext2D;
|
|
8
|
+
highResScaleFactorOverride?: number;
|
|
9
|
+
blockSizeXOverride?: number;
|
|
10
|
+
blockSizeYOverride?: number;
|
|
8
11
|
}): void;
|
|
@@ -1,18 +1,20 @@
|
|
|
1
1
|
import { getClustalXColor, getPercentIdentityColor } from '../../colorSchemes';
|
|
2
|
-
export function
|
|
2
|
+
export function renderMSABlock({ model, offsetX, offsetY, contrastScheme, ctx, highResScaleFactorOverride, blockSizeXOverride, blockSizeYOverride, }) {
|
|
3
3
|
const { hierarchy, colWidth, blockSize, rowHeight, fontSize, highResScaleFactor, } = model;
|
|
4
|
+
const k = highResScaleFactorOverride || highResScaleFactor;
|
|
5
|
+
const bx = blockSizeXOverride || blockSize;
|
|
6
|
+
const by = blockSizeYOverride || blockSize;
|
|
4
7
|
ctx.resetTransform();
|
|
5
|
-
ctx.scale(
|
|
6
|
-
ctx.clearRect(0, 0,
|
|
8
|
+
ctx.scale(k, k);
|
|
9
|
+
ctx.clearRect(0, 0, bx, by);
|
|
7
10
|
ctx.translate(-offsetX, rowHeight / 2 - offsetY);
|
|
8
11
|
ctx.textAlign = 'center';
|
|
9
12
|
ctx.font = ctx.font.replace(/\d+px/, `${fontSize}px`);
|
|
10
13
|
const leaves = hierarchy.leaves();
|
|
11
|
-
const b = blockSize;
|
|
12
14
|
const yStart = Math.max(0, Math.floor((offsetY - rowHeight) / rowHeight));
|
|
13
|
-
const yEnd = Math.max(0, Math.ceil((offsetY +
|
|
15
|
+
const yEnd = Math.max(0, Math.ceil((offsetY + by + rowHeight) / rowHeight));
|
|
14
16
|
const xStart = Math.max(0, Math.floor(offsetX / colWidth));
|
|
15
|
-
const xEnd = Math.max(0, Math.ceil((offsetX +
|
|
17
|
+
const xEnd = Math.max(0, Math.ceil((offsetX + bx) / colWidth));
|
|
16
18
|
const visibleLeaves = leaves.slice(yStart, yEnd);
|
|
17
19
|
drawTiles({
|
|
18
20
|
model,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"renderMSABlock.js","sourceRoot":"","sources":["../../../src/components/MSAPanel/renderMSABlock.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,gBAAgB,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAA;AAI9E,MAAM,UAAU,
|
|
1
|
+
{"version":3,"file":"renderMSABlock.js","sourceRoot":"","sources":["../../../src/components/MSAPanel/renderMSABlock.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,7 +4,6 @@ export function renderMouseover({ ctx, model, }) {
|
|
|
4
4
|
mouseCol2, minimapHeight, totalTrackAreaHeight, } = model;
|
|
5
5
|
ctx.resetTransform();
|
|
6
6
|
ctx.clearRect(0, 0, width, height);
|
|
7
|
-
console.log({ mouseCol });
|
|
8
7
|
if (mouseCol !== undefined) {
|
|
9
8
|
ctx.fillStyle = 'rgba(0,0,0,0.15)';
|
|
10
9
|
const x = (mouseCol - 1) * colWidth + scrollX + treeAreaWidth + resizeHandleWidth;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"renderMSAMouseover.js","sourceRoot":"","sources":["../../../src/components/MSAPanel/renderMSAMouseover.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,eAAe,CAAC,EAC9B,GAAG,EACH,KAAK,GAIN;IACC,MAAM,EACJ,QAAQ,EACR,QAAQ,EACR,aAAa,EACb,iBAAiB,EACjB,KAAK,EACL,MAAM,EACN,SAAS,EACT,OAAO,EACP,OAAO,EACP,QAAQ;IACR,mBAAmB;IACnB,SAAS,EACT,aAAa,EACb,oBAAoB,GACrB,GAAG,KAAK,CAAA;IACT,GAAG,CAAC,cAAc,EAAE,CAAA;IACpB,GAAG,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,CAAA;
|
|
1
|
+
{"version":3,"file":"renderMSAMouseover.js","sourceRoot":"","sources":["../../../src/components/MSAPanel/renderMSAMouseover.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,eAAe,CAAC,EAC9B,GAAG,EACH,KAAK,GAIN;IACC,MAAM,EACJ,QAAQ,EACR,QAAQ,EACR,aAAa,EACb,iBAAiB,EACjB,KAAK,EACL,MAAM,EACN,SAAS,EACT,OAAO,EACP,OAAO,EACP,QAAQ;IACR,mBAAmB;IACnB,SAAS,EACT,aAAa,EACb,oBAAoB,GACrB,GAAG,KAAK,CAAA;IACT,GAAG,CAAC,cAAc,EAAE,CAAA;IACpB,GAAG,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,CAAA;IAElC,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;QAC3B,GAAG,CAAC,SAAS,GAAG,kBAAkB,CAAA;QAClC,MAAM,CAAC,GACL,CAAC,QAAQ,GAAG,CAAC,CAAC,GAAG,QAAQ,GAAG,OAAO,GAAG,aAAa,GAAG,iBAAiB,CAAA;QAEzE,GAAG,CAAC,QAAQ,CAAC,CAAC,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAA;IAClD,CAAC;IAED,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;QAC3B,GAAG,CAAC,SAAS,GAAG,kBAAkB,CAAA;QAClC,MAAM,CAAC,GACL,QAAQ,GAAG,SAAS,GAAG,OAAO,GAAG,aAAa,GAAG,oBAAoB,CAAA;QACvE,GAAG,CAAC,QAAQ,CAAC,aAAa,GAAG,iBAAiB,EAAE,CAAC,EAAE,KAAK,EAAE,SAAS,CAAC,CAAA;IACtE,CAAC;IACD,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;QAC5B,GAAG,CAAC,SAAS,GAAG,qBAAqB,CAAA;QACrC,MAAM,CAAC,GACL,CAAC,SAAS,GAAG,CAAC,CAAC,GAAG,QAAQ,GAAG,OAAO,GAAG,aAAa,GAAG,iBAAiB,CAAA;QAE1E,GAAG,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAA;IACtC,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { observer } from 'mobx-react';
|
|
3
|
+
const MinimapSVG = observer(function ({ model }) {
|
|
4
|
+
const { scrollX, msaAreaWidth: W, minimapHeight: H, colWidth, numColumns, } = model;
|
|
5
|
+
const BAR_HEIGHT = 12;
|
|
6
|
+
const H2 = H - 12;
|
|
7
|
+
const unit = W / numColumns / colWidth;
|
|
8
|
+
const left = -scrollX;
|
|
9
|
+
const right = left + W;
|
|
10
|
+
const s = left * unit;
|
|
11
|
+
const e = right * unit;
|
|
12
|
+
const fill = 'rgba(66, 119, 127, 0.3)';
|
|
13
|
+
return (React.createElement(React.Fragment, null,
|
|
14
|
+
React.createElement("rect", { x: 0, y: 0, width: W, height: BAR_HEIGHT, stroke: "#555", fill: "none" }),
|
|
15
|
+
React.createElement("rect", { x: Math.max(0, s), y: 0, width: e - s, height: BAR_HEIGHT, fill: fill, stroke: "#555" }),
|
|
16
|
+
React.createElement("g", { transform: `translate(0 ${BAR_HEIGHT})` },
|
|
17
|
+
React.createElement("polygon", { fill: fill, points: [
|
|
18
|
+
[e, 0],
|
|
19
|
+
[s, 0],
|
|
20
|
+
[0, H2],
|
|
21
|
+
[W, H2],
|
|
22
|
+
].toString() }))));
|
|
23
|
+
});
|
|
24
|
+
export default MinimapSVG;
|
|
25
|
+
//# sourceMappingURL=MinimapSVG.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MinimapSVG.js","sourceRoot":"","sources":["../../src/components/MinimapSVG.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AAGrC,MAAM,UAAU,GAAG,QAAQ,CAAC,UAAU,EAAE,KAAK,EAA2B;IACtE,MAAM,EACJ,OAAO,EACP,YAAY,EAAE,CAAC,EACf,aAAa,EAAE,CAAC,EAChB,QAAQ,EACR,UAAU,GACX,GAAG,KAAK,CAAA;IAET,MAAM,UAAU,GAAG,EAAE,CAAA;IACrB,MAAM,EAAE,GAAG,CAAC,GAAG,EAAE,CAAA;IAEjB,MAAM,IAAI,GAAG,CAAC,GAAG,UAAU,GAAG,QAAQ,CAAA;IACtC,MAAM,IAAI,GAAG,CAAC,OAAO,CAAA;IACrB,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,CAAA;IACtB,MAAM,CAAC,GAAG,IAAI,GAAG,IAAI,CAAA;IACrB,MAAM,CAAC,GAAG,KAAK,GAAG,IAAI,CAAA;IACtB,MAAM,IAAI,GAAG,yBAAyB,CAAA;IAEtC,OAAO,CACL;QACE,8BACE,CAAC,EAAE,CAAC,EACJ,CAAC,EAAE,CAAC,EACJ,KAAK,EAAE,CAAC,EACR,MAAM,EAAE,UAAU,EAClB,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,GAAG,CAAC,EACZ,MAAM,EAAE,UAAU,EAClB,IAAI,EAAE,IAAI,EACV,MAAM,EAAC,MAAM,GACb;QACF,2BAAG,SAAS,EAAE,eAAe,UAAU,GAAG;YACxC,iCACE,IAAI,EAAE,IAAI,EACV,MAAM,EAAE;oBACN,CAAC,CAAC,EAAE,CAAC,CAAC;oBACN,CAAC,CAAC,EAAE,CAAC,CAAC;oBACN,CAAC,CAAC,EAAE,EAAE,CAAC;oBACP,CAAC,CAAC,EAAE,EAAE,CAAC;iBACR,CAAC,QAAQ,EAAE,GACZ,CACA,CACH,CACJ,CAAA;AACH,CAAC,CAAC,CAAA;AAEF,eAAe,UAAU,CAAA"}
|
|
@@ -97,7 +97,6 @@ const TreeCanvasBlock = observer(function ({ model, offsetY, }) {
|
|
|
97
97
|
return;
|
|
98
98
|
}
|
|
99
99
|
const ret = hoverNameClickMap(event) || hoverBranchClickMap(event);
|
|
100
|
-
console.log({ ret });
|
|
101
100
|
ref.current.style.cursor = ret ? 'pointer' : 'default';
|
|
102
101
|
setHoverElt(hoverNameClickMap(event));
|
|
103
102
|
}, onClick: event => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TreeCanvasBlock.js","sourceRoot":"","sources":["../../../src/components/TreePanel/TreeCanvasBlock.tsx"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"TreeCanvasBlock.js","sourceRoot":"","sources":["../../../src/components/TreePanel/TreeCanvasBlock.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import RBush from 'rbush';
|
|
2
|
-
import { MsaViewModel } from '../../model';
|
|
3
2
|
import { Theme } from '@mui/material';
|
|
3
|
+
import { MsaViewModel } from '../../model';
|
|
4
4
|
export declare const padding = 600;
|
|
5
5
|
interface ClickEntry {
|
|
6
6
|
name: string;
|
|
@@ -11,31 +11,36 @@ interface ClickEntry {
|
|
|
11
11
|
minY: number;
|
|
12
12
|
maxY: number;
|
|
13
13
|
}
|
|
14
|
-
export declare function renderTree({ offsetY, ctx, model, theme, }: {
|
|
14
|
+
export declare function renderTree({ offsetY, ctx, model, theme, blockSizeYOverride, }: {
|
|
15
15
|
offsetY: number;
|
|
16
16
|
ctx: CanvasRenderingContext2D;
|
|
17
17
|
model: MsaViewModel;
|
|
18
18
|
theme: Theme;
|
|
19
|
+
blockSizeYOverride?: number;
|
|
19
20
|
}): void;
|
|
20
|
-
export declare function renderNodeBubbles({ ctx, clickMap, offsetY, model, }: {
|
|
21
|
+
export declare function renderNodeBubbles({ ctx, clickMap, offsetY, model, blockSizeYOverride, }: {
|
|
21
22
|
ctx: CanvasRenderingContext2D;
|
|
22
|
-
clickMap
|
|
23
|
+
clickMap?: RBush<ClickEntry>;
|
|
23
24
|
offsetY: number;
|
|
24
25
|
model: MsaViewModel;
|
|
25
26
|
theme: Theme;
|
|
27
|
+
blockSizeYOverride?: number;
|
|
26
28
|
}): void;
|
|
27
|
-
export declare function renderTreeLabels({ theme, model, offsetY, ctx, clickMap, }: {
|
|
29
|
+
export declare function renderTreeLabels({ theme, model, offsetY, ctx, clickMap, blockSizeYOverride, }: {
|
|
28
30
|
model: MsaViewModel;
|
|
29
31
|
offsetY: number;
|
|
30
32
|
ctx: CanvasRenderingContext2D;
|
|
31
|
-
clickMap
|
|
33
|
+
clickMap?: RBush<ClickEntry>;
|
|
32
34
|
theme: Theme;
|
|
35
|
+
blockSizeYOverride?: number;
|
|
33
36
|
}): void;
|
|
34
|
-
export declare function renderTreeCanvas({ model, clickMap, ctx, offsetY, theme, }: {
|
|
37
|
+
export declare function renderTreeCanvas({ model, clickMap, ctx, offsetY, theme, highResScaleFactorOverride, blockSizeYOverride, }: {
|
|
35
38
|
model: MsaViewModel;
|
|
36
39
|
offsetY: number;
|
|
37
40
|
ctx: CanvasRenderingContext2D;
|
|
38
|
-
clickMap
|
|
41
|
+
clickMap?: RBush<ClickEntry>;
|
|
39
42
|
theme: Theme;
|
|
43
|
+
highResScaleFactorOverride?: number;
|
|
44
|
+
blockSizeYOverride?: number;
|
|
40
45
|
}): void;
|
|
41
46
|
export {};
|
|
@@ -2,8 +2,9 @@ export const padding = 600;
|
|
|
2
2
|
const extendBounds = 5;
|
|
3
3
|
const radius = 2.5;
|
|
4
4
|
const d = radius * 2;
|
|
5
|
-
export function renderTree({ offsetY, ctx, model, theme, }) {
|
|
5
|
+
export function renderTree({ offsetY, ctx, model, theme, blockSizeYOverride, }) {
|
|
6
6
|
const { hierarchy, showBranchLen, blockSize } = model;
|
|
7
|
+
const by = blockSizeYOverride || blockSize;
|
|
7
8
|
ctx.strokeStyle = theme.palette.text.primary;
|
|
8
9
|
for (const { source, target } of hierarchy.links()) {
|
|
9
10
|
const y = showBranchLen ? 'len' : 'y';
|
|
@@ -16,7 +17,7 @@ export function renderTree({ offsetY, ctx, model, theme, }) {
|
|
|
16
17
|
// 1d line intersection to check if line crosses block at all, this is
|
|
17
18
|
// an optimization that allows us to skip drawing most tree links
|
|
18
19
|
// outside the block
|
|
19
|
-
if (offsetY +
|
|
20
|
+
if (offsetY + by >= y1 && y2 >= offsetY) {
|
|
20
21
|
ctx.beginPath();
|
|
21
22
|
ctx.moveTo(sx, sy);
|
|
22
23
|
ctx.lineTo(sx, ty);
|
|
@@ -25,8 +26,9 @@ export function renderTree({ offsetY, ctx, model, theme, }) {
|
|
|
25
26
|
}
|
|
26
27
|
}
|
|
27
28
|
}
|
|
28
|
-
export function renderNodeBubbles({ ctx, clickMap, offsetY, model, }) {
|
|
29
|
+
export function renderNodeBubbles({ ctx, clickMap, offsetY, model, blockSizeYOverride, }) {
|
|
29
30
|
const { hierarchy, showBranchLen, collapsed, blockSize } = model;
|
|
31
|
+
const by = blockSizeYOverride || blockSize;
|
|
30
32
|
for (const node of hierarchy.descendants()) {
|
|
31
33
|
const val = showBranchLen ? 'len' : 'y';
|
|
32
34
|
const {
|
|
@@ -37,14 +39,14 @@ export function renderNodeBubbles({ ctx, clickMap, offsetY, model, }) {
|
|
|
37
39
|
const { branchset, id = '', name = '' } = data;
|
|
38
40
|
if (branchset.length &&
|
|
39
41
|
y > offsetY - extendBounds &&
|
|
40
|
-
y < offsetY +
|
|
42
|
+
y < offsetY + by + extendBounds) {
|
|
41
43
|
ctx.strokeStyle = 'black';
|
|
42
44
|
ctx.fillStyle = collapsed.includes(id) ? 'black' : 'white';
|
|
43
45
|
ctx.beginPath();
|
|
44
46
|
ctx.arc(x, y, radius, 0, 2 * Math.PI);
|
|
45
47
|
ctx.fill();
|
|
46
48
|
ctx.stroke();
|
|
47
|
-
clickMap.insert({
|
|
49
|
+
clickMap === null || clickMap === void 0 ? void 0 : clickMap.insert({
|
|
48
50
|
minX: x - radius,
|
|
49
51
|
maxX: x - radius + d,
|
|
50
52
|
minY: y - radius,
|
|
@@ -56,9 +58,10 @@ export function renderNodeBubbles({ ctx, clickMap, offsetY, model, }) {
|
|
|
56
58
|
}
|
|
57
59
|
}
|
|
58
60
|
}
|
|
59
|
-
export function renderTreeLabels({ theme, model, offsetY, ctx, clickMap, }) {
|
|
61
|
+
export function renderTreeLabels({ theme, model, offsetY, ctx, clickMap, blockSizeYOverride, }) {
|
|
60
62
|
var _a;
|
|
61
63
|
const { rowHeight, showBranchLen, treeMetadata, hierarchy, blockSize, labelsAlignRight, drawTree, structures, treeAreaWidth, margin, noTree, } = model;
|
|
64
|
+
const by = blockSizeYOverride || blockSize;
|
|
62
65
|
if (labelsAlignRight) {
|
|
63
66
|
ctx.textAlign = 'right';
|
|
64
67
|
ctx.setLineDash([1, 3]);
|
|
@@ -75,7 +78,7 @@ export function renderTreeLabels({ theme, model, offsetY, ctx, clickMap, }) {
|
|
|
75
78
|
// @ts-expect-error
|
|
76
79
|
len, } = node;
|
|
77
80
|
const displayName = ((_a = treeMetadata[name]) === null || _a === void 0 ? void 0 : _a.genome) || name;
|
|
78
|
-
if (y > offsetY - extendBounds && y < offsetY +
|
|
81
|
+
if (y > offsetY - extendBounds && y < offsetY + by + extendBounds) {
|
|
79
82
|
// note: +rowHeight/4 matches with -rowHeight/4 in msa
|
|
80
83
|
const yp = y + rowHeight / 4;
|
|
81
84
|
const xp = showBranchLen ? len : x;
|
|
@@ -85,7 +88,7 @@ export function renderTreeLabels({ theme, model, offsetY, ctx, clickMap, }) {
|
|
|
85
88
|
ctx.fillStyle = hasStructure ? 'blue' : theme.palette.text.primary;
|
|
86
89
|
if (!drawTree && !labelsAlignRight) {
|
|
87
90
|
ctx.fillText(displayName, 0, yp);
|
|
88
|
-
clickMap.insert({
|
|
91
|
+
clickMap === null || clickMap === void 0 ? void 0 : clickMap.insert({
|
|
89
92
|
minX: 0,
|
|
90
93
|
maxX: width,
|
|
91
94
|
minY: yp - height,
|
|
@@ -104,7 +107,7 @@ export function renderTreeLabels({ theme, model, offsetY, ctx, clickMap, }) {
|
|
|
104
107
|
ctx.stroke();
|
|
105
108
|
}
|
|
106
109
|
ctx.fillText(displayName, offset, yp);
|
|
107
|
-
clickMap.insert({
|
|
110
|
+
clickMap === null || clickMap === void 0 ? void 0 : clickMap.insert({
|
|
108
111
|
minX: treeAreaWidth - margin.left - width,
|
|
109
112
|
maxX: treeAreaWidth - margin.left,
|
|
110
113
|
minY: yp - height,
|
|
@@ -115,7 +118,7 @@ export function renderTreeLabels({ theme, model, offsetY, ctx, clickMap, }) {
|
|
|
115
118
|
}
|
|
116
119
|
else {
|
|
117
120
|
ctx.fillText(displayName, xp + d, yp);
|
|
118
|
-
clickMap.insert({
|
|
121
|
+
clickMap === null || clickMap === void 0 ? void 0 : clickMap.insert({
|
|
119
122
|
minX: xp + d,
|
|
120
123
|
maxX: xp + d + width,
|
|
121
124
|
minY: yp - height,
|
|
@@ -128,27 +131,50 @@ export function renderTreeLabels({ theme, model, offsetY, ctx, clickMap, }) {
|
|
|
128
131
|
}
|
|
129
132
|
ctx.setLineDash([]);
|
|
130
133
|
}
|
|
131
|
-
export function renderTreeCanvas({ model, clickMap, ctx, offsetY, theme, }) {
|
|
132
|
-
clickMap.clear();
|
|
134
|
+
export function renderTreeCanvas({ model, clickMap, ctx, offsetY, theme, highResScaleFactorOverride, blockSizeYOverride, }) {
|
|
135
|
+
clickMap === null || clickMap === void 0 ? void 0 : clickMap.clear();
|
|
133
136
|
const { noTree, drawTree, drawNodeBubbles, treeWidth, highResScaleFactor, margin, blockSize, fontSize, rowHeight,
|
|
134
137
|
// nref has to be kept as a unused var or at least reference to force
|
|
135
138
|
// redraw after canvas ref change
|
|
136
139
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
137
140
|
nref, } = model;
|
|
141
|
+
const by = blockSizeYOverride || blockSize;
|
|
138
142
|
ctx.resetTransform();
|
|
139
|
-
|
|
140
|
-
ctx.
|
|
143
|
+
const k = highResScaleFactorOverride || highResScaleFactor;
|
|
144
|
+
ctx.scale(k, k);
|
|
145
|
+
ctx.clearRect(0, 0, treeWidth + padding, by);
|
|
141
146
|
ctx.translate(margin.left, -offsetY);
|
|
147
|
+
// console.log(ctx.font)
|
|
142
148
|
const font = ctx.font;
|
|
143
149
|
ctx.font = font.replace(/\d+px/, `${fontSize}px`);
|
|
144
150
|
if (!noTree && drawTree) {
|
|
145
|
-
renderTree({
|
|
151
|
+
renderTree({
|
|
152
|
+
ctx,
|
|
153
|
+
offsetY,
|
|
154
|
+
model,
|
|
155
|
+
theme,
|
|
156
|
+
blockSizeYOverride,
|
|
157
|
+
});
|
|
146
158
|
if (drawNodeBubbles) {
|
|
147
|
-
renderNodeBubbles({
|
|
159
|
+
renderNodeBubbles({
|
|
160
|
+
ctx,
|
|
161
|
+
offsetY,
|
|
162
|
+
clickMap,
|
|
163
|
+
model,
|
|
164
|
+
theme,
|
|
165
|
+
blockSizeYOverride,
|
|
166
|
+
});
|
|
148
167
|
}
|
|
149
168
|
}
|
|
150
169
|
if (rowHeight >= 5) {
|
|
151
|
-
renderTreeLabels({
|
|
170
|
+
renderTreeLabels({
|
|
171
|
+
ctx,
|
|
172
|
+
offsetY,
|
|
173
|
+
model,
|
|
174
|
+
clickMap,
|
|
175
|
+
theme,
|
|
176
|
+
blockSizeYOverride,
|
|
177
|
+
});
|
|
152
178
|
}
|
|
153
179
|
}
|
|
154
180
|
//# sourceMappingURL=renderTreeCanvas.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"renderTreeCanvas.js","sourceRoot":"","sources":["../../../src/components/TreePanel/renderTreeCanvas.ts"],"names":[],"mappings":"AAMA,MAAM,CAAC,MAAM,OAAO,GAAG,GAAG,CAAA;AAC1B,MAAM,YAAY,GAAG,CAAC,CAAA;AACtB,MAAM,MAAM,GAAG,GAAG,CAAA;AAClB,MAAM,CAAC,GAAG,MAAM,GAAG,CAAC,CAAA;AAYpB,MAAM,UAAU,UAAU,CAAC,EACzB,OAAO,EACP,GAAG,EACH,KAAK,EACL,KAAK,
|
|
1
|
+
{"version":3,"file":"renderTreeCanvas.js","sourceRoot":"","sources":["../../../src/components/TreePanel/renderTreeCanvas.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import React from 'react';
|
|
1
|
+
import React, { Suspense, lazy, useState } from 'react';
|
|
2
2
|
import { IconButton } from '@mui/material';
|
|
3
3
|
import { observer } from 'mobx-react';
|
|
4
4
|
import CascadingMenuButton from '@jbrowse/core/ui/CascadingMenuButton';
|
|
@@ -6,8 +6,11 @@ import CascadingMenuButton from '@jbrowse/core/ui/CascadingMenuButton';
|
|
|
6
6
|
import MoreVert from '@mui/icons-material/MoreVert';
|
|
7
7
|
import ZoomIn from '@mui/icons-material/ZoomIn';
|
|
8
8
|
import ZoomOut from '@mui/icons-material/ZoomOut';
|
|
9
|
+
// lazies
|
|
10
|
+
const ExportSVGDialog = lazy(() => import('./ExportSVGDialog'));
|
|
9
11
|
const ZoomControls = observer(function ZoomControls({ model, }) {
|
|
10
12
|
const { colWidth, rowHeight } = model;
|
|
13
|
+
const [exportSvgDialogOpen, setExportSvgDialogOpen] = useState(false);
|
|
11
14
|
return (React.createElement(React.Fragment, null,
|
|
12
15
|
React.createElement(IconButton, { onClick: () => {
|
|
13
16
|
model.setColWidth(Math.ceil(colWidth * 1.5));
|
|
@@ -22,27 +25,19 @@ const ZoomControls = observer(function ZoomControls({ model, }) {
|
|
|
22
25
|
React.createElement(CascadingMenuButton, { menuItems: [
|
|
23
26
|
{
|
|
24
27
|
label: 'Decrease row height',
|
|
25
|
-
onClick: () =>
|
|
26
|
-
model.setRowHeight(Math.max(1.5, rowHeight * 0.75));
|
|
27
|
-
},
|
|
28
|
+
onClick: () => model.setRowHeight(Math.max(1.5, rowHeight * 0.75)),
|
|
28
29
|
},
|
|
29
30
|
{
|
|
30
31
|
label: 'Increase row height',
|
|
31
|
-
onClick: () =>
|
|
32
|
-
model.setRowHeight(rowHeight * 1.5);
|
|
33
|
-
},
|
|
32
|
+
onClick: () => model.setRowHeight(rowHeight * 1.5),
|
|
34
33
|
},
|
|
35
34
|
{
|
|
36
35
|
label: 'Decrease col width',
|
|
37
|
-
onClick: () =>
|
|
38
|
-
model.setColWidth(Math.max(1, colWidth * 0.75));
|
|
39
|
-
},
|
|
36
|
+
onClick: () => model.setColWidth(Math.max(1, colWidth * 0.75)),
|
|
40
37
|
},
|
|
41
38
|
{
|
|
42
39
|
label: 'Increase col width',
|
|
43
|
-
onClick: () =>
|
|
44
|
-
model.setColWidth(colWidth * 1.5);
|
|
45
|
-
},
|
|
40
|
+
onClick: () => model.setColWidth(colWidth * 1.5),
|
|
46
41
|
},
|
|
47
42
|
{
|
|
48
43
|
label: 'Reset zoom to default',
|
|
@@ -51,8 +46,14 @@ const ZoomControls = observer(function ZoomControls({ model, }) {
|
|
|
51
46
|
model.setRowHeight(20);
|
|
52
47
|
},
|
|
53
48
|
},
|
|
49
|
+
{
|
|
50
|
+
label: 'Export SVG',
|
|
51
|
+
onClick: () => setExportSvgDialogOpen(true),
|
|
52
|
+
},
|
|
54
53
|
] },
|
|
55
|
-
React.createElement(MoreVert, null))
|
|
54
|
+
React.createElement(MoreVert, null)),
|
|
55
|
+
exportSvgDialogOpen ? (React.createElement(Suspense, { fallback: null },
|
|
56
|
+
React.createElement(ExportSVGDialog, { model: model, onClose: () => setExportSvgDialogOpen(false) }))) : null));
|
|
56
57
|
});
|
|
57
58
|
export default ZoomControls;
|
|
58
59
|
//# sourceMappingURL=ZoomControls.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ZoomControls.js","sourceRoot":"","sources":["../../src/components/ZoomControls.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;
|
|
1
|
+
{"version":3,"file":"ZoomControls.js","sourceRoot":"","sources":["../../src/components/ZoomControls.tsx"],"names":[],"mappings":"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"}
|