react-msaview 7.0.0 → 8.0.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/README.md +11 -10
- package/bundle/index.js +122 -111
- package/bundle/index.js.map +4 -4
- package/dist/colorSchemes.js +1 -2
- package/dist/colorSchemes.js.map +1 -1
- package/dist/columnStats.d.ts +28 -0
- package/dist/columnStats.js +34 -0
- package/dist/columnStats.js.map +1 -0
- package/dist/components/DragHandle.d.ts +3 -2
- package/dist/components/DragHandle.js +11 -5
- package/dist/components/DragHandle.js.map +1 -1
- package/dist/components/Loading.js.map +1 -1
- package/dist/components/MSAView.js +17 -6
- package/dist/components/MSAView.js.map +1 -1
- package/dist/components/MSAViewer.d.ts +64 -7
- package/dist/components/MSAViewer.js +128 -23
- package/dist/components/MSAViewer.js.map +1 -1
- package/dist/components/PortalTooltip.d.ts +11 -0
- package/dist/components/PortalTooltip.js +29 -0
- package/dist/components/PortalTooltip.js.map +1 -0
- package/dist/components/ResizeHandles.js +11 -29
- package/dist/components/ResizeHandles.js.map +1 -1
- package/dist/components/SequenceTextArea.js +3 -3
- package/dist/components/SequenceTextArea.js.map +1 -1
- package/dist/components/Track.js +41 -22
- package/dist/components/Track.js.map +1 -1
- package/dist/components/dialogs/ExportSVGDialog.js +5 -3
- package/dist/components/dialogs/ExportSVGDialog.js.map +1 -1
- package/dist/components/dialogs/TrackInfoDialog.js +1 -1
- package/dist/components/dialogs/TrackInfoDialog.js.map +1 -1
- package/dist/components/header/GappynessSlider.js +6 -11
- package/dist/components/header/GappynessSlider.js.map +1 -1
- package/dist/components/header/Header.js +3 -0
- package/dist/components/header/Header.js.map +1 -1
- package/dist/components/header/LoadWarnings.js +3 -4
- package/dist/components/header/LoadWarnings.js.map +1 -1
- package/dist/components/header/ScrollZoomIcons.d.ts +6 -0
- package/dist/components/header/ScrollZoomIcons.js +35 -0
- package/dist/components/header/ScrollZoomIcons.js.map +1 -0
- package/dist/components/header/TreeSettingsMenu.js +1 -3
- package/dist/components/header/TreeSettingsMenu.js.map +1 -1
- package/dist/components/header/UnshareableDataWarning.js +2 -4
- package/dist/components/header/UnshareableDataWarning.js.map +1 -1
- package/dist/components/header/ZoomControls.js +49 -6
- package/dist/components/header/ZoomControls.js.map +1 -1
- package/dist/components/header/getAnnotationsMenu.js +3 -6
- package/dist/components/header/getAnnotationsMenu.js.map +1 -1
- package/dist/components/header/settingsMenuItems.js +10 -7
- package/dist/components/header/settingsMenuItems.js.map +1 -1
- package/dist/components/import/util.js +1 -2
- package/dist/components/import/util.js.map +1 -1
- package/dist/components/minimap/Minimap.js +1 -2
- package/dist/components/minimap/Minimap.js.map +1 -1
- package/dist/components/msa/AnnotationLegend.js +27 -19
- package/dist/components/msa/AnnotationLegend.js.map +1 -1
- package/dist/components/msa/MSACanvas.js +1 -1
- package/dist/components/msa/MSACanvas.js.map +1 -1
- package/dist/components/msa/MSACanvasBlock.js +13 -15
- package/dist/components/msa/MSACanvasBlock.js.map +1 -1
- package/dist/components/msa/MSAMouseoverCanvas.js +2 -1
- package/dist/components/msa/MSAMouseoverCanvas.js.map +1 -1
- package/dist/components/msa/domainBandCursor.d.ts +7 -11
- package/dist/components/msa/domainBandCursor.js +7 -11
- package/dist/components/msa/domainBandCursor.js.map +1 -1
- package/dist/components/msa/drawFeatureSpans.d.ts +53 -0
- package/dist/components/msa/drawFeatureSpans.js +78 -0
- package/dist/components/msa/drawFeatureSpans.js.map +1 -0
- package/dist/components/msa/legendRows.d.ts +8 -0
- package/dist/components/msa/legendRows.js +16 -0
- package/dist/components/msa/legendRows.js.map +1 -0
- package/dist/components/msa/msaRaster.d.ts +24 -31
- package/dist/components/msa/msaRaster.js +30 -39
- package/dist/components/msa/msaRaster.js.map +1 -1
- package/dist/components/msa/packDomainLanes.d.ts +20 -0
- package/dist/components/msa/packDomainLanes.js +33 -0
- package/dist/components/msa/packDomainLanes.js.map +1 -0
- package/dist/components/msa/renderBoxFeatureCanvasBlock.d.ts +3 -1
- package/dist/components/msa/renderBoxFeatureCanvasBlock.js +51 -87
- package/dist/components/msa/renderBoxFeatureCanvasBlock.js.map +1 -1
- package/dist/components/msa/renderHighlights.d.ts +15 -13
- package/dist/components/msa/renderHighlights.js +43 -20
- package/dist/components/msa/renderHighlights.js.map +1 -1
- package/dist/components/msa/renderMSABlock.js +5 -4
- package/dist/components/msa/renderMSABlock.js.map +1 -1
- package/dist/components/msa/tileColor.js +4 -7
- package/dist/components/msa/tileColor.js.map +1 -1
- package/dist/components/msa/useMsaBlockMouse.d.ts +5 -3
- package/dist/components/msa/useMsaBlockMouse.js +6 -6
- package/dist/components/msa/useMsaBlockMouse.js.map +1 -1
- package/dist/components/rowpanels/RowPanelBlock.d.ts +9 -0
- package/dist/components/rowpanels/RowPanelBlock.js +86 -0
- package/dist/components/rowpanels/RowPanelBlock.js.map +1 -0
- package/dist/components/rowpanels/RowPanelHeaders.d.ts +12 -0
- package/dist/components/rowpanels/RowPanelHeaders.js +38 -0
- package/dist/components/rowpanels/RowPanelHeaders.js.map +1 -0
- package/dist/components/{msa/ColumnStats.d.ts → rowpanels/RowPanels.d.ts} +2 -2
- package/dist/components/rowpanels/RowPanels.js +32 -0
- package/dist/components/rowpanels/RowPanels.js.map +1 -0
- package/dist/components/rowpanels/headerLayout.d.ts +1 -0
- package/dist/components/rowpanels/headerLayout.js +5 -0
- package/dist/components/rowpanels/headerLayout.js.map +1 -0
- package/dist/components/rowpanels/renderFeaturePanel.d.ts +21 -0
- package/dist/components/rowpanels/renderFeaturePanel.js +37 -0
- package/dist/components/rowpanels/renderFeaturePanel.js.map +1 -0
- package/dist/components/rowpanels/renderRowPanel.d.ts +23 -0
- package/dist/components/rowpanels/renderRowPanel.js +22 -0
- package/dist/components/rowpanels/renderRowPanel.js.map +1 -0
- package/dist/components/rowpanels/renderStrip.d.ts +20 -0
- package/dist/components/rowpanels/renderStrip.js +26 -0
- package/dist/components/rowpanels/renderStrip.js.map +1 -0
- package/dist/components/tracks/TrackBlocks.js +3 -5
- package/dist/components/tracks/TrackBlocks.js.map +1 -1
- package/dist/components/tracks/TrackTooltipContent.d.ts +15 -0
- package/dist/components/tracks/TrackTooltipContent.js +109 -0
- package/dist/components/tracks/TrackTooltipContent.js.map +1 -0
- package/dist/components/tracks/drawTracks.d.ts +4 -4
- package/dist/components/tracks/drawTracks.js +17 -34
- package/dist/components/tracks/drawTracks.js.map +1 -1
- package/dist/components/tracks/useTrackHover.d.ts +22 -0
- package/dist/components/tracks/useTrackHover.js +30 -0
- package/dist/components/tracks/useTrackHover.js.map +1 -0
- package/dist/components/tree/CladeLabels.d.ts +12 -0
- package/dist/components/tree/CladeLabels.js +48 -0
- package/dist/components/tree/CladeLabels.js.map +1 -0
- package/dist/components/tree/TreeCanvas.js +4 -1
- package/dist/components/tree/TreeCanvas.js.map +1 -1
- package/dist/components/tree/TreeCanvasBlock.js +4 -21
- package/dist/components/tree/TreeCanvasBlock.js.map +1 -1
- package/dist/components/tree/TreeOverview.d.ts +14 -0
- package/dist/components/tree/TreeOverview.js +75 -0
- package/dist/components/tree/TreeOverview.js.map +1 -0
- package/dist/components/tree/TreeRuler.js +9 -13
- package/dist/components/tree/TreeRuler.js.map +1 -1
- package/dist/components/tree/cladeBrackets.d.ts +25 -0
- package/dist/components/tree/cladeBrackets.js +51 -0
- package/dist/components/tree/cladeBrackets.js.map +1 -0
- package/dist/components/tree/dialogs/TreeNodeInfoDialog.js +2 -2
- package/dist/components/tree/dialogs/TreeNodeInfoDialog.js.map +1 -1
- package/dist/components/tree/renderTreeCanvas.js +158 -24
- package/dist/components/tree/renderTreeCanvas.js.map +1 -1
- package/dist/components/tree/renderTreeOverview.d.ts +52 -0
- package/dist/components/tree/renderTreeOverview.js +138 -0
- package/dist/components/tree/renderTreeOverview.js.map +1 -0
- package/dist/components/tree/useTreeHover.js +2 -4
- package/dist/components/tree/useTreeHover.js.map +1 -1
- package/dist/constants.d.ts +15 -0
- package/dist/constants.js +48 -22
- package/dist/constants.js.map +1 -1
- package/dist/createPaletteMap.d.ts +7 -6
- package/dist/createPaletteMap.js +10 -9
- package/dist/createPaletteMap.js.map +1 -1
- package/dist/element.d.ts +13 -0
- package/dist/element.js +269 -0
- package/dist/element.js.map +1 -0
- package/dist/featureFields.d.ts +11 -0
- package/dist/featureFields.js +17 -0
- package/dist/featureFields.js.map +1 -0
- package/dist/flatToTree.js +1 -2
- package/dist/flatToTree.js.map +1 -1
- package/dist/ggplotPalettes.d.ts +10 -0
- package/dist/ggplotPalettes.js +58 -0
- package/dist/ggplotPalettes.js.map +1 -1
- package/dist/hierarchy.d.ts +27 -0
- package/dist/hierarchy.js +66 -9
- package/dist/hierarchy.js.map +1 -1
- package/dist/index.d.ts +9 -1
- package/dist/index.js +5 -3
- package/dist/index.js.map +1 -1
- package/dist/model/DataModel.js +2 -5
- package/dist/model/DataModel.js.map +1 -1
- package/dist/model/msaModel.d.ts +3 -2
- package/dist/model/msaModel.js +3 -2
- package/dist/model/msaModel.js.map +1 -1
- package/dist/model/treeModel.d.ts +30 -0
- package/dist/model/treeModel.js +37 -1
- package/dist/model/treeModel.js.map +1 -1
- package/dist/model.d.ts +531 -275
- package/dist/model.js +1295 -547
- package/dist/model.js.map +1 -1
- package/dist/mount.d.ts +11 -0
- package/dist/mount.js +22 -0
- package/dist/mount.js.map +1 -0
- package/dist/neighborJoining.js +8 -32
- package/dist/neighborJoining.js.map +1 -1
- package/dist/renderToStaticMarkup.d.ts +10 -19
- package/dist/renderToStaticMarkup.js +13 -24
- package/dist/renderToStaticMarkup.js.map +1 -1
- package/dist/renderToSvg.js +180 -56
- package/dist/renderToSvg.js.map +1 -1
- package/dist/rowCoordinateCalculations.d.ts +4 -6
- package/dist/rowCoordinateCalculations.js +4 -6
- package/dist/rowCoordinateCalculations.js.map +1 -1
- package/dist/scales.d.ts +22 -0
- package/dist/scales.js +30 -0
- package/dist/scales.js.map +1 -0
- package/dist/seqPosToGlobalCol.d.ts +2 -3
- package/dist/seqPosToGlobalCol.js +2 -3
- package/dist/seqPosToGlobalCol.js.map +1 -1
- package/dist/sequenceLogo.d.ts +6 -11
- package/dist/sequenceLogo.js +6 -11
- package/dist/sequenceLogo.js.map +1 -1
- package/dist/stripDefault.d.ts +7 -14
- package/dist/stripDefault.js +7 -14
- package/dist/stripDefault.js.map +1 -1
- package/dist/svgTestUtil.d.ts +172 -52
- package/dist/types.d.ts +219 -21
- package/dist/umd.d.ts +2 -0
- package/dist/umd.js +4 -2
- package/dist/umd.js.map +1 -1
- package/dist/useCanvasAutorun.d.ts +5 -10
- package/dist/useCanvasAutorun.js +5 -10
- package/dist/useCanvasAutorun.js.map +1 -1
- package/dist/useMsaSvgFigure.d.ts +20 -0
- package/dist/useMsaSvgFigure.js +46 -0
- package/dist/useMsaSvgFigure.js.map +1 -0
- package/dist/util.d.ts +5 -6
- package/dist/util.js +13 -6
- package/dist/util.js.map +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/package.json +19 -12
- package/src/colorSchemes.ts +1 -2
- package/src/columnStats.ts +58 -0
- package/src/components/DragHandle.tsx +18 -7
- package/src/components/Loading.tsx +2 -6
- package/src/components/MSAView.tsx +19 -5
- package/src/components/MSAViewer.tsx +240 -28
- package/src/components/PortalTooltip.tsx +47 -0
- package/src/components/ResizeHandles.tsx +17 -32
- package/src/components/SequenceTextArea.tsx +3 -3
- package/src/components/Track.tsx +55 -18
- package/src/components/dialogs/ExportSVGDialog.tsx +7 -2
- package/src/components/dialogs/TrackInfoDialog.tsx +1 -1
- package/src/components/header/GappynessSlider.tsx +6 -11
- package/src/components/header/Header.tsx +6 -0
- package/src/components/header/LoadWarnings.tsx +3 -4
- package/src/components/header/ScrollZoomIcons.tsx +52 -0
- package/src/components/header/TreeSettingsMenu.tsx +1 -3
- package/src/components/header/UnshareableDataWarning.tsx +2 -4
- package/src/components/header/ZoomControls.tsx +74 -14
- package/src/components/header/getAnnotationsMenu.ts +3 -6
- package/src/components/header/settingsMenuItems.ts +11 -6
- package/src/components/import/ImportFormExamples.tsx +2 -2
- package/src/components/import/util.ts +1 -2
- package/src/components/minimap/Minimap.tsx +1 -2
- package/src/components/msa/AnnotationLegend.tsx +48 -38
- package/src/components/msa/MSACanvas.tsx +3 -5
- package/src/components/msa/MSACanvasBlock.tsx +13 -16
- package/src/components/msa/MSAMouseoverCanvas.tsx +2 -1
- package/src/components/msa/domainBandCursor.ts +7 -11
- package/src/components/msa/drawFeatureSpans.ts +150 -0
- package/src/components/msa/legendRows.ts +24 -0
- package/src/components/msa/msaRaster.ts +30 -39
- package/src/components/msa/packDomainLanes.ts +36 -0
- package/src/components/msa/renderBoxFeatureCanvasBlock.ts +69 -123
- package/src/components/msa/renderHighlights.ts +53 -20
- package/src/components/msa/renderMSABlock.ts +5 -3
- package/src/components/msa/tileColor.ts +4 -7
- package/src/components/msa/useMsaBlockMouse.ts +6 -6
- package/src/components/rowpanels/RowPanelBlock.tsx +139 -0
- package/src/components/rowpanels/RowPanelHeaders.tsx +57 -0
- package/src/components/rowpanels/RowPanels.tsx +77 -0
- package/src/components/rowpanels/headerLayout.ts +5 -0
- package/src/components/rowpanels/renderFeaturePanel.ts +66 -0
- package/src/components/rowpanels/renderRowPanel.ts +41 -0
- package/src/components/rowpanels/renderStrip.ts +46 -0
- package/src/components/tracks/TrackBlocks.tsx +3 -5
- package/src/components/tracks/TrackTooltipContent.tsx +156 -0
- package/src/components/tracks/drawTracks.ts +17 -34
- package/src/components/tracks/useTrackHover.ts +42 -0
- package/src/components/tree/CladeLabels.tsx +77 -0
- package/src/components/tree/TreeCanvas.tsx +2 -0
- package/src/components/tree/TreeCanvasBlock.tsx +8 -32
- package/src/components/tree/TreeOverview.tsx +106 -0
- package/src/components/tree/TreeRuler.tsx +11 -22
- package/src/components/tree/cladeBrackets.ts +73 -0
- package/src/components/tree/dialogs/TreeNodeInfoDialog.tsx +2 -2
- package/src/components/tree/renderTreeCanvas.ts +240 -20
- package/src/components/tree/renderTreeOverview.ts +212 -0
- package/src/components/tree/useTreeHover.ts +2 -4
- package/src/constants.ts +56 -22
- package/src/createPaletteMap.ts +10 -9
- package/src/element.ts +321 -0
- package/src/featureFields.ts +19 -0
- package/src/flatToTree.ts +1 -2
- package/src/ggplotPalettes.ts +60 -0
- package/src/hierarchy.ts +77 -9
- package/src/index.ts +31 -7
- package/src/model/DataModel.ts +2 -5
- package/src/model/msaModel.ts +3 -2
- package/src/model/treeModel.ts +42 -0
- package/src/model.ts +1523 -560
- package/src/mount.tsx +32 -0
- package/src/neighborJoining.ts +8 -32
- package/src/renderToStaticMarkup.ts +13 -24
- package/src/renderToSvg.tsx +335 -68
- package/src/rowCoordinateCalculations.ts +4 -6
- package/src/scales.ts +47 -0
- package/src/seqPosToGlobalCol.ts +2 -3
- package/src/sequenceLogo.ts +6 -11
- package/src/stripDefault.ts +7 -14
- package/src/types.ts +258 -45
- package/src/umd.ts +4 -2
- package/src/useCanvasAutorun.ts +5 -10
- package/src/useMsaSvgFigure.ts +72 -0
- package/src/util.ts +15 -6
- package/src/version.ts +1 -1
- package/dist/components/msa/ColumnStats.js +0 -42
- package/dist/components/msa/ColumnStats.js.map +0 -1
- package/src/components/msa/ColumnStats.tsx +0 -54
|
@@ -2,29 +2,20 @@ import type React from 'react';
|
|
|
2
2
|
/**
|
|
3
3
|
* Render a React element to a static markup string, for the SVG export.
|
|
4
4
|
*
|
|
5
|
-
* Inlined
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
* never renders. The export path is the only caller, so nothing here or in
|
|
11
|
-
* jbrowse-plugin-msaview/-tview failed to build, lint, typecheck, or boot; the
|
|
12
|
-
* published 3.4.0 and 2.2.1 bundles simply threw the first time a user asked
|
|
13
|
-
* for an SVG on a v5 host.
|
|
14
|
-
*
|
|
15
|
-
* A rendering library asking its host for a renderer was the odd coupling. Both
|
|
16
|
-
* `react-dom` and `react-dom/client` are long-established host externals, so
|
|
17
|
-
* this costs a few hundred bytes in the plugin bundle and no duplicate react.
|
|
5
|
+
* Inlined because core removed `renderToStaticMarkup` from the
|
|
6
|
+
* `@jbrowse/core/util` barrel in jbrowse-components 0d034e2bd8; see the
|
|
7
|
+
* `@jbrowse/core` note in CLAUDE.md. `react-dom` and `react-dom/client` are
|
|
8
|
+
* host externals, so this adds a few hundred bytes to the plugin bundle and no
|
|
9
|
+
* duplicate react.
|
|
18
10
|
*/
|
|
19
11
|
export declare function renderToStaticMarkup(node: React.ReactElement): string;
|
|
20
12
|
/**
|
|
21
13
|
* Rewrites every color an SVG 1.1 presentation attribute cannot hold.
|
|
22
14
|
*
|
|
23
|
-
* `fill`, `stroke` and `stop-color` take a
|
|
24
|
-
*
|
|
25
|
-
*
|
|
26
|
-
*
|
|
27
|
-
*
|
|
28
|
-
* the matching -opacity attribute, unless the element already carries one.
|
|
15
|
+
* `fill`, `stroke` and `stop-color` take a keyword, a hex triplet or rgb(). MUI
|
|
16
|
+
* palette values use rgba() and the percent-identity scheme uses hsl(), and
|
|
17
|
+
* Illustrator and older Inkscape drop an element whose fill they cannot parse.
|
|
18
|
+
* Alpha moves to the matching -opacity attribute unless the element already
|
|
19
|
+
* carries one.
|
|
29
20
|
*/
|
|
30
21
|
export declare function svgSafeColors(html: string): string;
|
|
@@ -4,19 +4,11 @@ import { createRoot } from 'react-dom/client';
|
|
|
4
4
|
/**
|
|
5
5
|
* Render a React element to a static markup string, for the SVG export.
|
|
6
6
|
*
|
|
7
|
-
* Inlined
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
* never renders. The export path is the only caller, so nothing here or in
|
|
13
|
-
* jbrowse-plugin-msaview/-tview failed to build, lint, typecheck, or boot; the
|
|
14
|
-
* published 3.4.0 and 2.2.1 bundles simply threw the first time a user asked
|
|
15
|
-
* for an SVG on a v5 host.
|
|
16
|
-
*
|
|
17
|
-
* A rendering library asking its host for a renderer was the odd coupling. Both
|
|
18
|
-
* `react-dom` and `react-dom/client` are long-established host externals, so
|
|
19
|
-
* this costs a few hundred bytes in the plugin bundle and no duplicate react.
|
|
7
|
+
* Inlined because core removed `renderToStaticMarkup` from the
|
|
8
|
+
* `@jbrowse/core/util` barrel in jbrowse-components 0d034e2bd8; see the
|
|
9
|
+
* `@jbrowse/core` note in CLAUDE.md. `react-dom` and `react-dom/client` are
|
|
10
|
+
* host externals, so this adds a few hundred bytes to the plugin bundle and no
|
|
11
|
+
* duplicate react.
|
|
20
12
|
*/
|
|
21
13
|
export function renderToStaticMarkup(node) {
|
|
22
14
|
const div = document.createElement('div');
|
|
@@ -29,11 +21,9 @@ export function renderToStaticMarkup(node) {
|
|
|
29
21
|
html = div.innerHTML;
|
|
30
22
|
}
|
|
31
23
|
finally {
|
|
32
|
-
//
|
|
33
|
-
//
|
|
34
|
-
//
|
|
35
|
-
// model and re-rendering into a dead div on every pan and zoom, once per
|
|
36
|
-
// export ever taken. The markup is a string by here and needs no DOM.
|
|
24
|
+
// effects run in a client root, so every `observer` holds a MobX reaction;
|
|
25
|
+
// a mounted export of a large alignment would keep tens of thousands of
|
|
26
|
+
// detached nodes re-rendering on every pan and zoom
|
|
37
27
|
root.unmount();
|
|
38
28
|
}
|
|
39
29
|
return html;
|
|
@@ -43,12 +33,11 @@ const colorAttr = /\b(fill|stroke|stop-color)="([^"]+)"/g;
|
|
|
43
33
|
/**
|
|
44
34
|
* Rewrites every color an SVG 1.1 presentation attribute cannot hold.
|
|
45
35
|
*
|
|
46
|
-
* `fill`, `stroke` and `stop-color` take a
|
|
47
|
-
*
|
|
48
|
-
*
|
|
49
|
-
*
|
|
50
|
-
*
|
|
51
|
-
* the matching -opacity attribute, unless the element already carries one.
|
|
36
|
+
* `fill`, `stroke` and `stop-color` take a keyword, a hex triplet or rgb(). MUI
|
|
37
|
+
* palette values use rgba() and the percent-identity scheme uses hsl(), and
|
|
38
|
+
* Illustrator and older Inkscape drop an element whose fill they cannot parse.
|
|
39
|
+
* Alpha moves to the matching -opacity attribute unless the element already
|
|
40
|
+
* carries one.
|
|
52
41
|
*/
|
|
53
42
|
export function svgSafeColors(html) {
|
|
54
43
|
return html.replaceAll(tag, el => el.replaceAll(colorAttr, (match, attr, value) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"renderToStaticMarkup.js","sourceRoot":"","sources":["../src/renderToStaticMarkup.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAC/B,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAA;AACrC,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAI7C
|
|
1
|
+
{"version":3,"file":"renderToStaticMarkup.js","sourceRoot":"","sources":["../src/renderToStaticMarkup.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAC/B,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAA;AACrC,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAI7C;;;;;;;;GAQG;AACH,MAAM,UAAU,oBAAoB,CAAC,IAAwB;IAC3D,MAAM,GAAG,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAA;IACzC,MAAM,IAAI,GAAG,UAAU,CAAC,GAAG,CAAC,CAAA;IAC5B,IAAI,IAAY,CAAA;IAChB,IAAI,CAAC;QACH,SAAS,CAAC,GAAG,EAAE;YACb,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;QACnB,CAAC,CAAC,CAAA;QACF,IAAI,GAAG,GAAG,CAAC,SAAS,CAAA;IACtB,CAAC;YAAS,CAAC;QACT,2EAA2E;QAC3E,wEAAwE;QACxE,oDAAoD;QACpD,IAAI,CAAC,OAAO,EAAE,CAAA;IAChB,CAAC;IACD,OAAO,IAAI,CAAA;AACb,CAAC;AAED,MAAM,GAAG,GAAG,kBAAkB,CAAA;AAC9B,MAAM,SAAS,GAAG,uCAAuC,CAAA;AAEzD;;;;;;;;GAQG;AACH,MAAM,UAAU,aAAa,CAAC,IAAY;IACxC,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,CAC/B,EAAE,CAAC,UAAU,CAAC,SAAS,EAAE,CAAC,KAAK,EAAE,IAAY,EAAE,KAAa,EAAE,EAAE;QAC9D,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;YAChC,OAAO,KAAK,CAAA;QACd,CAAC;QACD,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,CAAA;QAC3B,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,CAAC;YACrB,OAAO,KAAK,CAAA;QACd,CAAC;QACD,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,EAAE,CAAA;QAC3B,MAAM,GAAG,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAA;QAClC,OAAO,KAAK,KAAK,CAAC,IAAI,EAAE,CAAC,QAAQ,CAAC,GAAG,IAAI,WAAW,CAAC;YACnD,CAAC,CAAC,GAAG,IAAI,KAAK,GAAG,GAAG;YACpB,CAAC,CAAC,GAAG,IAAI,KAAK,GAAG,KAAK,IAAI,aAAa,KAAK,GAAG,CAAA;IACnD,CAAC,CAAC,CACH,CAAA;AACH,CAAC"}
|
package/dist/renderToSvg.js
CHANGED
|
@@ -3,33 +3,44 @@ import React from 'react';
|
|
|
3
3
|
import { when } from 'mobx';
|
|
4
4
|
import { visibleRowRange } from './components/getVisibleLeaves.js';
|
|
5
5
|
import MinimapSVG from './components/minimap/MinimapSVG.js';
|
|
6
|
+
import { legendRows } from './components/msa/legendRows.js';
|
|
6
7
|
import { rasterImageHref, rasterSupported } from './components/msa/msaRaster.js';
|
|
7
8
|
import { renderBoxFeatureCanvasBlock } from './components/msa/renderBoxFeatureCanvasBlock.js';
|
|
8
9
|
import { renderPersistentHighlights } from './components/msa/renderHighlights.js';
|
|
9
10
|
import { renderMSABlock } from './components/msa/renderMSABlock.js';
|
|
10
11
|
import { visibleColRange } from './components/msa/visibleColRange.js';
|
|
12
|
+
import { headerRunsAcross } from './components/rowpanels/headerLayout.js';
|
|
13
|
+
import { renderRowPanels } from './components/rowpanels/renderRowPanel.js';
|
|
11
14
|
import { renderAllTracks } from './components/tracks/drawTracks.js';
|
|
15
|
+
import { bracketGap, cladeHeight, cladeInGutter, cladeLabelHorizontal, cladeLabelOffset, } from './components/tree/cladeBrackets.js';
|
|
12
16
|
import { renderTreeCanvas } from './components/tree/renderTreeCanvas.js';
|
|
17
|
+
import { renderTreeOverview } from './components/tree/renderTreeOverview.js';
|
|
18
|
+
import { treeScaleBarHeight } from './constants.js';
|
|
19
|
+
import { measureTextCanvas } from './measureTextCanvas.js';
|
|
13
20
|
import { renderToStaticMarkup, svgSafeColors } from './renderToStaticMarkup.js';
|
|
14
|
-
|
|
15
|
-
//
|
|
21
|
+
import { outlineColor } from './util.js';
|
|
22
|
+
// legend geometry, shared by the width calculation and the renderer so the
|
|
23
|
+
// reserved column on the right exactly fits the drawn legends
|
|
16
24
|
const LEGEND_PAD = 8;
|
|
17
25
|
const LEGEND_ROW_H = 16;
|
|
18
26
|
const LEGEND_SWATCH = 12;
|
|
19
27
|
const LEGEND_FONT = 12;
|
|
20
28
|
const LEGEND_CHAR_W = 7;
|
|
29
|
+
// the width of a character as a fraction of the font size, close enough for a
|
|
30
|
+
// sans-serif average
|
|
31
|
+
const CHAR_WIDTH = 0.6;
|
|
21
32
|
const LEGEND_MAX_W = 360;
|
|
22
33
|
const LEGEND_TEXT_X = LEGEND_PAD + LEGEND_SWATCH + 6;
|
|
23
|
-
function getLegendWidth(
|
|
24
|
-
const maxLen =
|
|
34
|
+
function getLegendWidth(rows) {
|
|
35
|
+
const maxLen = rows.reduce((a, r) => Math.max(a, r.label.length), 0);
|
|
25
36
|
const w = LEGEND_TEXT_X + LEGEND_PAD + maxLen * LEGEND_CHAR_W;
|
|
26
37
|
return Math.min(LEGEND_MAX_W, Math.max(120, w));
|
|
27
38
|
}
|
|
28
|
-
function legendHeight(
|
|
29
|
-
return LEGEND_PAD * 2 +
|
|
39
|
+
function legendHeight(rows) {
|
|
40
|
+
return LEGEND_PAD * 2 + rows.length * LEGEND_ROW_H;
|
|
30
41
|
}
|
|
31
42
|
function getLayout(model, opts) {
|
|
32
|
-
const { scrollX, scrollY, totalWidth, totalHeight, treeAreaWidth, totalTrackAreaHeight, minimapHeight, msaAreaHeight, msaCanvasWidth, showHorizontalScrollbar, } = model;
|
|
43
|
+
const { scrollX, scrollY, totalWidth, totalHeight, treeAreaWidth, rowPanelsWidth, rowPanelsHeaderHeight, totalTrackAreaHeight, minimapHeight, msaAreaHeight, msaCanvasWidth, showHorizontalScrollbar, treeOverviewHeight, treeScaleBar, } = model;
|
|
33
44
|
const trackHeight = opts.includeTracks ? totalTrackAreaHeight : 0;
|
|
34
45
|
// the minimap reflects the live viewport scroll position, so it's only
|
|
35
46
|
// meaningful for a viewport export, never for the entire alignment -- and
|
|
@@ -38,9 +49,10 @@ function getLayout(model, opts) {
|
|
|
38
49
|
const includeMinimap = opts.exportType === 'viewport' &&
|
|
39
50
|
!!opts.includeMinimap &&
|
|
40
51
|
showHorizontalScrollbar;
|
|
41
|
-
const
|
|
42
|
-
|
|
43
|
-
|
|
52
|
+
const rows = legendRows(model.legends);
|
|
53
|
+
const legendWidth = rows.length > 0 ? getLegendWidth(rows) : 0;
|
|
54
|
+
const topHeight = Math.max(includeMinimap ? minimapHeight : 0, rowPanelsHeaderHeight, treeOverviewHeight + (treeScaleBar ? treeScaleBarHeight : 0));
|
|
55
|
+
const gutterWidth = treeAreaWidth + rowPanelsWidth;
|
|
44
56
|
// width stays content-only; the legend occupies an extra column added at the
|
|
45
57
|
// svg root in MsaSvg. The viewport export takes the alignment canvas's own
|
|
46
58
|
// size rather than the widget's -- the widget box also covers the header, the
|
|
@@ -48,22 +60,24 @@ function getLayout(model, opts) {
|
|
|
48
60
|
// columns the scrollbars hide on screen
|
|
49
61
|
return opts.exportType === 'entire'
|
|
50
62
|
? {
|
|
51
|
-
width: totalWidth +
|
|
63
|
+
width: totalWidth + gutterWidth,
|
|
52
64
|
msaAreaWidth: totalWidth,
|
|
53
|
-
height: totalHeight + trackHeight,
|
|
65
|
+
height: totalHeight + trackHeight + topHeight,
|
|
54
66
|
contentHeight: totalHeight,
|
|
55
67
|
trackHeight,
|
|
68
|
+
topHeight,
|
|
56
69
|
offsetX: 0,
|
|
57
70
|
offsetY: 0,
|
|
58
71
|
includeMinimap,
|
|
59
72
|
legendWidth,
|
|
60
73
|
}
|
|
61
74
|
: {
|
|
62
|
-
width: msaCanvasWidth +
|
|
75
|
+
width: msaCanvasWidth + gutterWidth,
|
|
63
76
|
msaAreaWidth: msaCanvasWidth,
|
|
64
|
-
height: msaAreaHeight +
|
|
77
|
+
height: msaAreaHeight + topHeight + trackHeight,
|
|
65
78
|
contentHeight: msaAreaHeight,
|
|
66
79
|
trackHeight,
|
|
80
|
+
topHeight,
|
|
67
81
|
offsetX: -scrollX,
|
|
68
82
|
offsetY: -scrollY,
|
|
69
83
|
includeMinimap,
|
|
@@ -86,18 +100,18 @@ export async function renderToSvg(model, opts) {
|
|
|
86
100
|
const markup = renderToStaticMarkup(React.createElement(MsaSvg, { model: model, theme: opts.theme, Context: Context, layout: getLayout(model, opts), layers: layers }));
|
|
87
101
|
return svgSafeColors(markup.replaceAll(/<g data-layer="([^"]+)"><\/g>/g, (match, id) => {
|
|
88
102
|
const ctx = layers.get(id);
|
|
89
|
-
return ctx ? `<g>${ctx.getSvg().innerHTML}</g>` : match;
|
|
103
|
+
return ctx ? `<g id="${id}">${ctx.getSvg().innerHTML}</g>` : match;
|
|
90
104
|
}));
|
|
91
105
|
}
|
|
92
106
|
function MsaSvg({ model, theme, Context, layout, layers, }) {
|
|
93
|
-
const { width, trackHeight, includeMinimap, legendWidth } = layout;
|
|
94
|
-
const { treeAreaWidth,
|
|
107
|
+
const { width, trackHeight, includeMinimap, legendWidth, topHeight } = layout;
|
|
108
|
+
const { treeAreaWidth, rowPanelsWidth } = model;
|
|
95
109
|
const totalWidth = width + legendWidth;
|
|
96
|
-
const legendTop =
|
|
97
|
-
// a short alignment with many
|
|
110
|
+
const legendTop = topHeight;
|
|
111
|
+
// a short alignment with many legend entries has a key taller than its rows,
|
|
98
112
|
// and the page has to hold the whole key
|
|
99
113
|
const height = legendWidth > 0
|
|
100
|
-
? Math.max(layout.height, legendTop + legendHeight(
|
|
114
|
+
? Math.max(layout.height, legendTop + legendHeight(legendRows(model.legends)))
|
|
101
115
|
: layout.height;
|
|
102
116
|
const props = { Context, model, theme, layout, layers };
|
|
103
117
|
const body = (React.createElement(React.Fragment, null,
|
|
@@ -106,35 +120,124 @@ function MsaSvg({ model, theme, Context, layout, layers, }) {
|
|
|
106
120
|
React.createElement(CoreRendering, { ...props }))));
|
|
107
121
|
return (React.createElement("svg", { width: totalWidth, height: height, xmlns: "http://www.w3.org/2000/svg", xmlnsXlink: "http://www.w3.org/1999/xlink", viewBox: `0 0 ${totalWidth} ${height}` },
|
|
108
122
|
React.createElement("rect", { width: "100%", height: "100%", fill: theme.palette.background.default }),
|
|
109
|
-
|
|
110
|
-
React.createElement("g", { transform: `translate(${treeAreaWidth} 0)` },
|
|
111
|
-
React.createElement(MinimapSVG, { model: model, theme: theme })),
|
|
112
|
-
React.createElement(
|
|
113
|
-
|
|
123
|
+
topHeight > 0 ? (React.createElement(React.Fragment, null,
|
|
124
|
+
includeMinimap ? (React.createElement("g", { id: "minimap-panel", transform: `translate(${treeAreaWidth + rowPanelsWidth} 0)` },
|
|
125
|
+
React.createElement(MinimapSVG, { model: model, theme: theme }))) : null,
|
|
126
|
+
React.createElement(RowPanelHeadersSVG, { model: model, theme: theme, bandHeight: topHeight }),
|
|
127
|
+
model.showTreeOverview ? (React.createElement(TreeOverviewSVG, { model: model, theme: theme, Context: Context, layers: layers })) : null,
|
|
128
|
+
React.createElement(TreeScaleBarSVG, { model: model, theme: theme }),
|
|
129
|
+
React.createElement("g", { transform: `translate(0 ${topHeight})` }, body))) : (body),
|
|
130
|
+
legendWidth > 0 ? (React.createElement("g", { id: "legend-panel", transform: `translate(${width} ${legendTop})` },
|
|
114
131
|
React.createElement(LegendSVG, { model: model, theme: theme, width: legendWidth }))) : null));
|
|
115
132
|
}
|
|
116
|
-
//
|
|
117
|
-
//
|
|
133
|
+
// The tree overview in the top band, over the tree column, where the live view
|
|
134
|
+
// puts it. It is part of the figure rather than chrome: the inset is what says
|
|
135
|
+
// where the focused clade sits in the whole tree.
|
|
136
|
+
function TreeOverviewSVG({ model, theme, Context, layers, }) {
|
|
137
|
+
const { treeAreaWidth, overviewHeight, id } = model;
|
|
138
|
+
const ctx = new Context(treeAreaWidth, overviewHeight);
|
|
139
|
+
renderTreeOverview({
|
|
140
|
+
model,
|
|
141
|
+
ctx,
|
|
142
|
+
theme,
|
|
143
|
+
width: treeAreaWidth,
|
|
144
|
+
height: overviewHeight,
|
|
145
|
+
});
|
|
146
|
+
return (React.createElement(ClipGroup, { panelId: "tree-overview", clipId: `tree-overview-${id}`, width: treeAreaWidth, height: overviewHeight, ctx: ctx, layers: layers }));
|
|
147
|
+
}
|
|
148
|
+
// The branch-length scale bar under the tree overview, where the live view puts
|
|
149
|
+
// it (see TreeRuler). A phylogram whose branch lengths are drawn to a scale
|
|
150
|
+
// nothing states is a figure a reader cannot measure, so the export carries the
|
|
151
|
+
// bar even though it is chrome on screen.
|
|
152
|
+
function TreeScaleBarSVG({ model, theme, }) {
|
|
153
|
+
const { marginLeft, treeScaleBar: bar, treeOverviewHeight } = model;
|
|
154
|
+
if (!bar) {
|
|
155
|
+
return null;
|
|
156
|
+
}
|
|
157
|
+
const y = treeOverviewHeight + treeScaleBarHeight;
|
|
158
|
+
const color = theme.palette.text.primary;
|
|
159
|
+
return (React.createElement("g", { id: "tree-scalebar" },
|
|
160
|
+
React.createElement("text", { x: marginLeft, y: y - 9, fontSize: 10, fill: color }, bar.label),
|
|
161
|
+
React.createElement("path", { d: `M${marginLeft} ${y - 7} v6 h${bar.px} v-6`, fill: "none", stroke: color })));
|
|
162
|
+
}
|
|
163
|
+
// Each strip's header over the column it names, turned on its side, where the
|
|
164
|
+
// live view puts it (see RowPanelHeaders). The baseline runs up the figure, so
|
|
165
|
+
// the name sits to the left of it, the way TrackLabelsSVG offsets a horizontal
|
|
166
|
+
// baseline by a third of the font size.
|
|
167
|
+
function RowPanelHeadersSVG({ model, theme, bandHeight, }) {
|
|
168
|
+
const { resolvedRowPanels, treeAreaWidth, fontSize } = model;
|
|
169
|
+
const y = bandHeight - 4;
|
|
170
|
+
return resolvedRowPanels.length === 0 ? null : (React.createElement("g", { id: "rowpanel-headers" }, resolvedRowPanels.map(panel => {
|
|
171
|
+
const across = headerRunsAcross(panel.width);
|
|
172
|
+
const size = across ? fontSize : Math.min(fontSize, panel.width);
|
|
173
|
+
const center = treeAreaWidth + panel.offsetX + panel.width / 2;
|
|
174
|
+
const x = across ? center : center + size / 3;
|
|
175
|
+
const room = across ? panel.width : y - LEGEND_PAD;
|
|
176
|
+
const maxChars = Math.floor(room / (size * CHAR_WIDTH));
|
|
177
|
+
return size < 5 ? null : (React.createElement("text", { key: panel.id, x: x, y: y, ...(across
|
|
178
|
+
? { textAnchor: 'middle' }
|
|
179
|
+
: { transform: `rotate(-90 ${x} ${y})` }), fontSize: size, fill: theme.palette.text.primary }, panel.header.length > maxChars
|
|
180
|
+
? `${panel.header.slice(0, Math.max(1, maxChars - 1))}…`
|
|
181
|
+
: panel.header));
|
|
182
|
+
})));
|
|
183
|
+
}
|
|
184
|
+
// A label past the room it has, cut to what fits with an ellipsis. The measure
|
|
185
|
+
// is the one cladeGutterWidth sizes the gutter with, so a label the gutter
|
|
186
|
+
// holds keeps every character.
|
|
187
|
+
function clipCladeLabel(label, room, fontSize) {
|
|
188
|
+
const width = measureTextCanvas(label, fontSize);
|
|
189
|
+
if (width <= room) {
|
|
190
|
+
return label;
|
|
191
|
+
}
|
|
192
|
+
const fits = Math.floor((label.length * room) / width);
|
|
193
|
+
return `${label.slice(0, Math.max(1, fits - 1))}…`;
|
|
194
|
+
}
|
|
195
|
+
// Each bracket's label in the gutter beside its bar, where the live view puts
|
|
196
|
+
// it (see CladeLabels). The canvas layer draws the bar; a label longer than the
|
|
197
|
+
// gutter or the clade is clipped, since text that overruns runs off the figure.
|
|
198
|
+
function CladeLabelsSVG({ model, theme, offsetY, }) {
|
|
199
|
+
const { resolvedClades, cladeGutterWidth, rowHeight, treeAreaWidth, fontSize, } = model;
|
|
200
|
+
if (cladeGutterWidth === 0) {
|
|
201
|
+
return null;
|
|
202
|
+
}
|
|
203
|
+
const gutterLeft = treeAreaWidth - cladeGutterWidth;
|
|
204
|
+
return (React.createElement("g", { id: "clade-labels" }, resolvedClades.map((clade, index) => {
|
|
205
|
+
const { label, markColor, rows } = clade;
|
|
206
|
+
if (!label || !cladeInGutter(clade)) {
|
|
207
|
+
return null;
|
|
208
|
+
}
|
|
209
|
+
const left = gutterLeft + cladeLabelOffset(clade);
|
|
210
|
+
const top = rows[0] * rowHeight - offsetY;
|
|
211
|
+
const height = cladeHeight(clade, rowHeight);
|
|
212
|
+
const horizontal = cladeLabelHorizontal(clade, rowHeight, fontSize);
|
|
213
|
+
const room = horizontal ? treeAreaWidth - left - bracketGap : height;
|
|
214
|
+
const x = horizontal ? left : left + fontSize;
|
|
215
|
+
const y = horizontal ? top + height / 2 + fontSize / 3 : top + height;
|
|
216
|
+
return (React.createElement("text", { key: `${rows[0]}-${rows[1]}-${index}`, x: x, y: y, transform: horizontal ? undefined : `rotate(-90 ${x} ${y})`, fontSize: fontSize, fill: markColor ?? theme.palette.text.primary }, clipCladeLabel(label, room, fontSize)));
|
|
217
|
+
})));
|
|
218
|
+
}
|
|
219
|
+
// the color keys drawn as a reserved column to the right of the alignment,
|
|
220
|
+
// mirroring the on-screen AnnotationLegend overlay
|
|
118
221
|
function LegendSVG({ model, theme, width, }) {
|
|
119
|
-
const
|
|
120
|
-
const boxHeight = legendHeight(
|
|
222
|
+
const rows = legendRows(model.legends);
|
|
223
|
+
const boxHeight = legendHeight(rows);
|
|
121
224
|
// the column is capped at LEGEND_MAX_W, so a name too long for it has to be
|
|
122
225
|
// clipped here -- text that overruns the reserved width runs off the figure
|
|
123
226
|
const maxChars = Math.floor((width - LEGEND_TEXT_X - LEGEND_PAD) / LEGEND_CHAR_W);
|
|
124
227
|
return (React.createElement("g", null,
|
|
125
228
|
React.createElement("rect", { x: 0, y: 0, width: width - 4, height: boxHeight, fill: theme.palette.background.paper, stroke: theme.palette.divider, rx: 2 }),
|
|
126
|
-
|
|
229
|
+
rows.map((row, i) => {
|
|
127
230
|
const y = LEGEND_PAD + i * LEGEND_ROW_H;
|
|
128
|
-
return (React.createElement("g", { key:
|
|
129
|
-
React.createElement("rect", { x: LEGEND_PAD, y: y, width: LEGEND_SWATCH, height: LEGEND_SWATCH, fill:
|
|
130
|
-
React.createElement("text", { x: LEGEND_TEXT_X, y: y + LEGEND_SWATCH - 1, fontSize: LEGEND_FONT, fill: theme.palette.text.primary },
|
|
131
|
-
? `${
|
|
132
|
-
:
|
|
231
|
+
return (React.createElement("g", { key: row.key },
|
|
232
|
+
row.color ? (React.createElement("rect", { x: LEGEND_PAD, y: y, width: LEGEND_SWATCH, height: LEGEND_SWATCH, fill: row.color, stroke: outlineColor(row.color) })) : null,
|
|
233
|
+
React.createElement("text", { x: row.color ? LEGEND_TEXT_X : LEGEND_PAD, y: y + LEGEND_SWATCH - 1, fontSize: LEGEND_FONT, fontWeight: row.color ? undefined : 'bold', fill: theme.palette.text.primary }, row.label.length > maxChars
|
|
234
|
+
? `${row.label.slice(0, Math.max(1, maxChars - 1))}…`
|
|
235
|
+
: row.label)));
|
|
133
236
|
})));
|
|
134
237
|
}
|
|
135
238
|
function CoreRendering({ model, theme, layout, Context, layers }) {
|
|
136
239
|
const { contentHeight, offsetX, offsetY, msaAreaWidth } = layout;
|
|
137
|
-
const { treeAreaWidth, id } = model;
|
|
240
|
+
const { treeAreaWidth, rowPanelsWidth, id } = model;
|
|
138
241
|
const treeCtx = new Context(treeAreaWidth, contentHeight);
|
|
139
242
|
renderTreeCanvas({
|
|
140
243
|
model,
|
|
@@ -144,10 +247,24 @@ function CoreRendering({ model, theme, layout, Context, layers }) {
|
|
|
144
247
|
blockSizeYOverride: contentHeight,
|
|
145
248
|
highResScaleFactorOverride: 1,
|
|
146
249
|
});
|
|
250
|
+
const rowPanelsCtx = rowPanelsWidth
|
|
251
|
+
? new Context(rowPanelsWidth, contentHeight)
|
|
252
|
+
: undefined;
|
|
253
|
+
if (rowPanelsCtx) {
|
|
254
|
+
renderRowPanels({
|
|
255
|
+
model,
|
|
256
|
+
theme,
|
|
257
|
+
ctx: rowPanelsCtx,
|
|
258
|
+
offsetY,
|
|
259
|
+
blockSizeYOverride: contentHeight,
|
|
260
|
+
highResScaleFactorOverride: 1,
|
|
261
|
+
});
|
|
262
|
+
}
|
|
147
263
|
const raster = rasterBackground({ model, theme, layout });
|
|
148
264
|
const msaCtx = new Context(msaAreaWidth, contentHeight);
|
|
149
265
|
renderBoxFeatureCanvasBlock({
|
|
150
266
|
model,
|
|
267
|
+
theme,
|
|
151
268
|
ctx: msaCtx,
|
|
152
269
|
offsetX,
|
|
153
270
|
offsetY,
|
|
@@ -179,19 +296,19 @@ function CoreRendering({ model, theme, layout, Context, layers }) {
|
|
|
179
296
|
height: contentHeight,
|
|
180
297
|
});
|
|
181
298
|
return (React.createElement(React.Fragment, null,
|
|
182
|
-
React.createElement(ClipGroup, { clipId: `tree-${id}`, width: treeAreaWidth, height: contentHeight, ctx: treeCtx, layers: layers }),
|
|
183
|
-
React.createElement(
|
|
299
|
+
React.createElement(ClipGroup, { panelId: "tree-panel", clipId: `tree-${id}`, width: treeAreaWidth, height: contentHeight, ctx: treeCtx, layers: layers }),
|
|
300
|
+
React.createElement(CladeLabelsSVG, { model: model, theme: theme, offsetY: offsetY }),
|
|
301
|
+
rowPanelsCtx ? (React.createElement(ClipGroup, { panelId: "rowpanels-panel", clipId: `rowpanels-${id}`, width: rowPanelsWidth, height: contentHeight, transform: `translate(${treeAreaWidth} 0)`, ctx: rowPanelsCtx, layers: layers })) : null,
|
|
302
|
+
React.createElement(ClipGroup, { panelId: "msa-panel", clipId: `msa-${id}`, width: msaAreaWidth, height: contentHeight, transform: `translate(${treeAreaWidth + rowPanelsWidth} 0)`, ctx: msaCtx, layers: layers, underlay: raster })));
|
|
184
303
|
}
|
|
185
304
|
/**
|
|
186
|
-
* The alignment background as a single <image>,
|
|
187
|
-
*
|
|
188
|
-
*
|
|
305
|
+
* The alignment background as a single <image>, under the live canvas's
|
|
306
|
+
* conditions: no domain overlay boxes, background coloring on, and a canvas
|
|
307
|
+
* that reads back.
|
|
189
308
|
*
|
|
190
|
-
*
|
|
191
|
-
*
|
|
192
|
-
*
|
|
193
|
-
* image-rendering keeps those edges hard rather than smearing them, making it
|
|
194
|
-
* pixel-for-pixel what the rects drew.
|
|
309
|
+
* The vector path's <rect> per cell exhausts the heap on a real alignment. The
|
|
310
|
+
* image is one pixel per cell, and image-rendering keeps the upscaled cell
|
|
311
|
+
* edges hard, so it matches the rects pixel for pixel.
|
|
195
312
|
*/
|
|
196
313
|
function rasterBackground({ model, theme, layout, }) {
|
|
197
314
|
const { contentHeight, offsetX, offsetY, msaAreaWidth } = layout;
|
|
@@ -223,7 +340,7 @@ function rasterBackground({ model, theme, layout, }) {
|
|
|
223
340
|
}
|
|
224
341
|
function TrackRendering({ model, theme, layout, Context, layers }) {
|
|
225
342
|
const { trackHeight, offsetX, msaAreaWidth } = layout;
|
|
226
|
-
const { treeAreaWidth, id } = model;
|
|
343
|
+
const { treeAreaWidth, rowPanelsWidth, id } = model;
|
|
227
344
|
const ctx = new Context(msaAreaWidth, trackHeight);
|
|
228
345
|
renderAllTracks({
|
|
229
346
|
model,
|
|
@@ -235,8 +352,8 @@ function TrackRendering({ model, theme, layout, Context, layers }) {
|
|
|
235
352
|
});
|
|
236
353
|
return (React.createElement(React.Fragment, null,
|
|
237
354
|
React.createElement(TrackLabelsSVG, { model: model, theme: theme }),
|
|
238
|
-
React.createElement("g", { transform: `translate(${treeAreaWidth} 0)` },
|
|
239
|
-
React.createElement(ClipGroup, { clipId: `tracks-${id}`, width: msaAreaWidth, height: trackHeight, ctx: ctx, layers: layers }))));
|
|
355
|
+
React.createElement("g", { transform: `translate(${treeAreaWidth + rowPanelsWidth} 0)` },
|
|
356
|
+
React.createElement(ClipGroup, { panelId: "tracks-panel", clipId: `tracks-${id}`, width: msaAreaWidth, height: trackHeight, ctx: ctx, layers: layers }))));
|
|
240
357
|
}
|
|
241
358
|
// Each track's name in the tree-width column beside it, where the live view puts
|
|
242
359
|
// it (see TrackLabel). Without these the figure has an unlabeled bar chart and
|
|
@@ -246,26 +363,33 @@ function TrackLabelsSVG({ model, theme, }) {
|
|
|
246
363
|
if (!drawLabels) {
|
|
247
364
|
return null;
|
|
248
365
|
}
|
|
249
|
-
|
|
250
|
-
return (React.createElement(React.Fragment, null, turnedOnTracks.map(track => {
|
|
366
|
+
const labels = turnedOnTracks.map((track, i) => {
|
|
251
367
|
const { id, name, height } = track.model;
|
|
252
368
|
const size = Math.min(height, fontSize);
|
|
253
|
-
const
|
|
254
|
-
|
|
369
|
+
const top = turnedOnTracks
|
|
370
|
+
.slice(0, i)
|
|
371
|
+
.reduce((acc, t) => acc + t.model.height, 0);
|
|
372
|
+
return { id, name, size, baseline: top + height / 2 + size / 3 };
|
|
373
|
+
});
|
|
374
|
+
return (React.createElement(React.Fragment, null, labels.map(({ id, name, size, baseline }) => {
|
|
255
375
|
return size < 5 ? null : (React.createElement("text", { key: id, x: treeAreaWidth - 4, y: baseline, fontSize: size, textAnchor: "end", fill: theme.palette.text.primary }, name));
|
|
256
376
|
})));
|
|
257
377
|
}
|
|
258
378
|
// Clips a svgcanvas Context to its box and leaves a placeholder for renderToSvg
|
|
259
379
|
// to splice the layer's own markup into. `underlay` draws beneath that markup,
|
|
260
380
|
// inside the same clip, for the parts of a layer React emits directly.
|
|
261
|
-
|
|
262
|
-
|
|
381
|
+
//
|
|
382
|
+
// `panelId` names the spliced group in the output, the same name in every
|
|
383
|
+
// export, so a figure can be taken apart in Illustrator or svgutils. `clipId`
|
|
384
|
+
// carries the model id, which keeps two viewers on one page from colliding.
|
|
385
|
+
function ClipGroup({ panelId, clipId, width, height, transform, ctx, layers, underlay, }) {
|
|
386
|
+
layers.set(panelId, ctx);
|
|
263
387
|
return (React.createElement(React.Fragment, null,
|
|
264
388
|
React.createElement("defs", null,
|
|
265
389
|
React.createElement("clipPath", { id: clipId },
|
|
266
390
|
React.createElement("rect", { x: 0, y: 0, width: width, height: height }))),
|
|
267
391
|
React.createElement("g", { clipPath: `url(#${clipId})`, transform: transform },
|
|
268
392
|
underlay,
|
|
269
|
-
React.createElement("g", { "data-layer":
|
|
393
|
+
React.createElement("g", { "data-layer": panelId }))));
|
|
270
394
|
}
|
|
271
395
|
//# sourceMappingURL=renderToSvg.js.map
|
package/dist/renderToSvg.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"renderToSvg.js","sourceRoot":"","sources":["../src/renderToSvg.tsx"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"renderToSvg.js","sourceRoot":"","sources":["../src/renderToSvg.tsx"],"names":[],"mappings":"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"}
|
|
@@ -38,9 +38,8 @@ export declare function globalColToVisibleCol(blanks: number[], globalCol: numbe
|
|
|
38
38
|
* that is its own visible index; for a hidden one it is the index of the next
|
|
39
39
|
* visible column, i.e. where the hidden column collapses to.
|
|
40
40
|
*
|
|
41
|
-
*
|
|
42
|
-
*
|
|
43
|
-
* in a hidden column.
|
|
41
|
+
* Spans use this, since globalColToVisibleCol drops a span whenever either end
|
|
42
|
+
* lands in a hidden column.
|
|
44
43
|
*
|
|
45
44
|
* @param blanks - Sorted array of global column indices that are hidden
|
|
46
45
|
* @param globalCol - The global column index in the full MSA
|
|
@@ -50,9 +49,8 @@ export declare function visibleColsBefore(blanks: number[], globalCol: number):
|
|
|
50
49
|
* The ungapped position a row holds at a global column, or undefined when that
|
|
51
50
|
* column is a gap in the row or past its end.
|
|
52
51
|
*
|
|
53
|
-
*
|
|
54
|
-
*
|
|
55
|
-
* the whole frame.
|
|
52
|
+
* Binary-searches the row's ascending seqPos index; it runs on every mouse
|
|
53
|
+
* move, and scanning a 30k-column row per event takes the whole frame.
|
|
56
54
|
*
|
|
57
55
|
* @param index - The row's seqPos -> global column index (buildSeqPosIndex)
|
|
58
56
|
* @param globalCol - The global column index in the full MSA
|
|
@@ -70,9 +70,8 @@ function countBlanksBefore(blanks, globalCol) {
|
|
|
70
70
|
* that is its own visible index; for a hidden one it is the index of the next
|
|
71
71
|
* visible column, i.e. where the hidden column collapses to.
|
|
72
72
|
*
|
|
73
|
-
*
|
|
74
|
-
*
|
|
75
|
-
* in a hidden column.
|
|
73
|
+
* Spans use this, since globalColToVisibleCol drops a span whenever either end
|
|
74
|
+
* lands in a hidden column.
|
|
76
75
|
*
|
|
77
76
|
* @param blanks - Sorted array of global column indices that are hidden
|
|
78
77
|
* @param globalCol - The global column index in the full MSA
|
|
@@ -84,9 +83,8 @@ export function visibleColsBefore(blanks, globalCol) {
|
|
|
84
83
|
* The ungapped position a row holds at a global column, or undefined when that
|
|
85
84
|
* column is a gap in the row or past its end.
|
|
86
85
|
*
|
|
87
|
-
*
|
|
88
|
-
*
|
|
89
|
-
* the whole frame.
|
|
86
|
+
* Binary-searches the row's ascending seqPos index; it runs on every mouse
|
|
87
|
+
* move, and scanning a 30k-column row per event takes the whole frame.
|
|
90
88
|
*
|
|
91
89
|
* @param index - The row's seqPos -> global column index (buildSeqPosIndex)
|
|
92
90
|
* @param globalCol - The global column index in the full MSA
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rowCoordinateCalculations.js","sourceRoot":"","sources":["../src/rowCoordinateCalculations.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH;;;;GAIG;AACH,SAAS,cAAc,CAAC,GAAW,EAAE,IAA4B;IAC/D,IAAI,IAAI,GAAG,CAAC,CAAA;IACZ,IAAI,KAAK,GAAG,GAAG,CAAA;IACf,OAAO,IAAI,GAAG,KAAK,EAAE,CAAC;QACpB,MAAM,GAAG,GAAG,CAAC,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,CAAA;QAChC,IAAI,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;YACd,KAAK,GAAG,GAAG,CAAA;QACb,CAAC;aAAM,CAAC;YACN,IAAI,GAAG,GAAG,GAAG,CAAC,CAAA;QAChB,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAA;AACb,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,qBAAqB,CAAC,MAAgB,EAAE,UAAkB;IACxE,2EAA2E;IAC3E,4EAA4E;IAC5E,6EAA6E;IAC7E,OAAO,CACL,UAAU,GAAG,cAAc,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAE,GAAG,CAAC,GAAG,UAAU,CAAC,CAC7E,CAAA;AACH,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,qBAAqB,CACnC,MAAgB,EAChB,SAAiB;IAEjB,MAAM,YAAY,GAAG,iBAAiB,CAAC,MAAM,EAAE,SAAS,CAAC,CAAA;IACzD,OAAO,MAAM,CAAC,YAAY,CAAC,KAAK,SAAS;QACvC,CAAC,CAAC,SAAS,CAAC,mBAAmB;QAC/B,CAAC,CAAC,SAAS,GAAG,YAAY,CAAA;AAC9B,CAAC;AAED,SAAS,iBAAiB,CAAC,MAAgB,EAAE,SAAiB;IAC5D,OAAO,cAAc,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAE,IAAI,SAAS,CAAC,CAAA;AACpE,CAAC;AAED
|
|
1
|
+
{"version":3,"file":"rowCoordinateCalculations.js","sourceRoot":"","sources":["../src/rowCoordinateCalculations.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH;;;;GAIG;AACH,SAAS,cAAc,CAAC,GAAW,EAAE,IAA4B;IAC/D,IAAI,IAAI,GAAG,CAAC,CAAA;IACZ,IAAI,KAAK,GAAG,GAAG,CAAA;IACf,OAAO,IAAI,GAAG,KAAK,EAAE,CAAC;QACpB,MAAM,GAAG,GAAG,CAAC,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,CAAA;QAChC,IAAI,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;YACd,KAAK,GAAG,GAAG,CAAA;QACb,CAAC;aAAM,CAAC;YACN,IAAI,GAAG,GAAG,GAAG,CAAC,CAAA;QAChB,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAA;AACb,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,qBAAqB,CAAC,MAAgB,EAAE,UAAkB;IACxE,2EAA2E;IAC3E,4EAA4E;IAC5E,6EAA6E;IAC7E,OAAO,CACL,UAAU,GAAG,cAAc,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAE,GAAG,CAAC,GAAG,UAAU,CAAC,CAC7E,CAAA;AACH,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,qBAAqB,CACnC,MAAgB,EAChB,SAAiB;IAEjB,MAAM,YAAY,GAAG,iBAAiB,CAAC,MAAM,EAAE,SAAS,CAAC,CAAA;IACzD,OAAO,MAAM,CAAC,YAAY,CAAC,KAAK,SAAS;QACvC,CAAC,CAAC,SAAS,CAAC,mBAAmB;QAC/B,CAAC,CAAC,SAAS,GAAG,YAAY,CAAA;AAC9B,CAAC;AAED,SAAS,iBAAiB,CAAC,MAAgB,EAAE,SAAiB;IAC5D,OAAO,cAAc,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAE,IAAI,SAAS,CAAC,CAAA;AACpE,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,iBAAiB,CAAC,MAAgB,EAAE,SAAiB;IACnE,OAAO,SAAS,GAAG,iBAAiB,CAAC,MAAM,EAAE,SAAS,CAAC,CAAA;AACzD,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,iBAAiB,CAC/B,KAA6B,EAC7B,SAAiB;IAEjB,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,SAAS,CAAA;IAClB,CAAC;IACD,MAAM,MAAM,GAAG,cAAc,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAE,IAAI,SAAS,CAAC,CAAA;IACxE,OAAO,KAAK,CAAC,MAAM,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAA;AACzD,CAAC"}
|