react-msaview 8.4.1 → 9.1.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 +19 -10
- package/bundle/index.js +74 -74
- package/bundle/index.js.map +4 -4
- package/dist/colorSchemes.js +1 -3
- package/dist/colorSchemes.js.map +1 -1
- package/dist/columnCounts.d.ts +0 -1
- package/dist/columnCounts.js +1 -1
- package/dist/columnCounts.js.map +1 -1
- package/dist/components/Loading.js +5 -5
- package/dist/components/Loading.js.map +1 -1
- package/dist/components/MSAView.js +2 -2
- package/dist/components/MSAView.js.map +1 -1
- package/dist/components/MSAViewer.d.ts +1892 -7
- package/dist/components/MSAViewer.js +144 -202
- package/dist/components/MSAViewer.js.map +1 -1
- package/dist/components/ResizeHandles.js +4 -3
- package/dist/components/ResizeHandles.js.map +1 -1
- package/dist/components/Track.js +3 -2
- package/dist/components/Track.js.map +1 -1
- package/dist/components/controls.d.ts +11 -0
- package/dist/components/controls.js +48 -0
- package/dist/components/controls.js.map +1 -0
- package/dist/components/dialogs/AnnotationFileDialog.js +5 -16
- package/dist/components/dialogs/AnnotationFileDialog.js.map +1 -1
- package/dist/components/dialogs/ExportSVGDialog.js +5 -7
- package/dist/components/dialogs/ExportSVGDialog.js.map +1 -1
- package/dist/components/dialogs/HelpDialog.d.ts +6 -0
- package/dist/components/dialogs/HelpDialog.js +30 -0
- package/dist/components/dialogs/HelpDialog.js.map +1 -0
- package/dist/components/header/FileMenu.js +33 -7
- package/dist/components/header/FileMenu.js.map +1 -1
- package/dist/components/header/Header.js +4 -6
- package/dist/components/header/Header.js.map +1 -1
- package/dist/components/header/TreeSettingsMenu.d.ts +1 -1
- package/dist/components/header/TreeSettingsMenu.js +1 -32
- package/dist/components/header/TreeSettingsMenu.js.map +1 -1
- package/dist/components/header/ZoomControls.js +28 -44
- package/dist/components/header/ZoomControls.js.map +1 -1
- package/dist/components/header/settingsMenuItems.d.ts +1 -0
- package/dist/components/header/settingsMenuItems.js +48 -1
- package/dist/components/header/settingsMenuItems.js.map +1 -1
- package/dist/components/import/data/seq2.d.ts +0 -1
- package/dist/components/import/data/seq2.js +0 -17
- package/dist/components/import/data/seq2.js.map +1 -1
- package/dist/components/msa/MSACanvas.js +2 -1
- package/dist/components/msa/MSACanvas.js.map +1 -1
- package/dist/components/msa/MSACanvasBlock.js +2 -5
- package/dist/components/msa/MSACanvasBlock.js.map +1 -1
- package/dist/components/msa/drawFeatureSpans.d.ts +50 -11
- package/dist/components/msa/drawFeatureSpans.js +99 -56
- package/dist/components/msa/drawFeatureSpans.js.map +1 -1
- package/dist/components/msa/msaRaster.d.ts +14 -1
- package/dist/components/msa/msaRaster.js +19 -9
- package/dist/components/msa/msaRaster.js.map +1 -1
- package/dist/components/msa/renderBoxFeatureCanvasBlock.d.ts +9 -0
- package/dist/components/msa/renderBoxFeatureCanvasBlock.js +19 -8
- package/dist/components/msa/renderBoxFeatureCanvasBlock.js.map +1 -1
- package/dist/components/msa/renderHighlights.d.ts +2 -2
- package/dist/components/msa/renderHighlights.js +2 -3
- package/dist/components/msa/renderHighlights.js.map +1 -1
- package/dist/components/msa/renderMSAMouseover.js +2 -1
- package/dist/components/msa/renderMSAMouseover.js.map +1 -1
- package/dist/components/renderCtx.d.ts +1 -1
- package/dist/components/rowpanels/renderFeaturePanel.d.ts +5 -1
- package/dist/components/rowpanels/renderFeaturePanel.js +12 -5
- package/dist/components/rowpanels/renderFeaturePanel.js.map +1 -1
- package/dist/components/tracks/drawTracks.d.ts +1 -53
- package/dist/components/tracks/drawTracks.js +5 -5
- package/dist/components/tracks/drawTracks.js.map +1 -1
- package/dist/components/tree/CladeLabels.d.ts +1 -1
- package/dist/components/tree/CladeLabels.js +22 -34
- package/dist/components/tree/CladeLabels.js.map +1 -1
- package/dist/components/tree/TreeCanvas.js +4 -4
- package/dist/components/tree/TreeCanvas.js.map +1 -1
- package/dist/components/tree/TreeCanvasBlock.js +4 -4
- package/dist/components/tree/TreeCanvasBlock.js.map +1 -1
- package/dist/components/tree/TreeOverview.js +10 -5
- package/dist/components/tree/TreeOverview.js.map +1 -1
- package/dist/components/tree/TreePanel.js +6 -2
- package/dist/components/tree/TreePanel.js.map +1 -1
- package/dist/components/tree/TreeRuler.js +2 -2
- package/dist/components/tree/TreeRuler.js.map +1 -1
- package/dist/components/tree/cladeBrackets.d.ts +22 -17
- package/dist/components/tree/cladeBrackets.js +40 -9
- package/dist/components/tree/cladeBrackets.js.map +1 -1
- package/dist/components/tree/clickMap.d.ts +2 -0
- package/dist/components/tree/clickMap.js.map +1 -1
- package/dist/components/tree/ellipsize.d.ts +8 -0
- package/dist/components/tree/ellipsize.js +20 -0
- package/dist/components/tree/ellipsize.js.map +1 -0
- package/dist/components/tree/renderTreeCanvas.js +30 -32
- package/dist/components/tree/renderTreeCanvas.js.map +1 -1
- package/dist/components/tree/renderTreeMouseover.js +1 -1
- package/dist/components/tree/renderTreeMouseover.js.map +1 -1
- package/dist/components/tree/renderTreeOverview.js +4 -11
- package/dist/components/tree/renderTreeOverview.js.map +1 -1
- package/dist/constants.d.ts +6 -3
- package/dist/constants.js +16 -6
- package/dist/constants.js.map +1 -1
- package/dist/element.js +3 -6
- package/dist/element.js.map +1 -1
- package/dist/exportLayout.d.ts +39 -0
- package/dist/exportLayout.js +78 -0
- package/dist/exportLayout.js.map +1 -0
- package/dist/headlessRenderEnv.d.ts +12 -39
- package/dist/headlessRenderEnv.js +18 -12
- package/dist/headlessRenderEnv.js.map +1 -1
- package/dist/hierarchy.d.ts +5 -8
- package/dist/hierarchy.js +5 -79
- package/dist/hierarchy.js.map +1 -1
- package/dist/index.d.ts +3 -1
- package/dist/index.js +4 -1
- package/dist/index.js.map +1 -1
- package/dist/measureTextCanvas.d.ts +7 -0
- package/dist/measureTextCanvas.js +10 -8
- package/dist/measureTextCanvas.js.map +1 -1
- package/dist/model/treeModel.d.ts +14 -25
- package/dist/model/treeModel.js +16 -30
- package/dist/model/treeModel.js.map +1 -1
- package/dist/model.d.ts +108 -79
- package/dist/model.js +258 -209
- package/dist/model.js.map +1 -1
- package/dist/renderToSvg.d.ts +2 -7
- package/dist/renderToSvg.js +49 -135
- package/dist/renderToSvg.js.map +1 -1
- package/dist/svgTestUtil.d.ts +48 -48
- package/dist/tipLabels.d.ts +8 -0
- package/dist/tipLabels.js +46 -0
- package/dist/tipLabels.js.map +1 -0
- package/dist/types.d.ts +0 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/dist/viewerSnapshot.d.ts +169 -0
- package/dist/viewerSnapshot.js +100 -0
- package/dist/viewerSnapshot.js.map +1 -0
- package/package.json +3 -3
- package/src/colorSchemes.ts +1 -4
- package/src/columnCounts.ts +1 -1
- package/src/components/Loading.tsx +19 -12
- package/src/components/MSAView.tsx +2 -2
- package/src/components/MSAViewer.tsx +276 -256
- package/src/components/ResizeHandles.tsx +10 -3
- package/src/components/Track.tsx +3 -2
- package/src/components/controls.ts +61 -0
- package/src/components/dialogs/AnnotationFileDialog.tsx +5 -21
- package/src/components/dialogs/ExportSVGDialog.tsx +8 -19
- package/src/components/dialogs/HelpDialog.tsx +79 -0
- package/src/components/header/FileMenu.tsx +33 -7
- package/src/components/header/Header.tsx +4 -6
- package/src/components/header/TreeSettingsMenu.tsx +2 -32
- package/src/components/header/ZoomControls.tsx +30 -66
- package/src/components/header/settingsMenuItems.ts +67 -0
- package/src/components/import/data/seq2.ts +0 -18
- package/src/components/msa/MSACanvas.tsx +2 -1
- package/src/components/msa/MSACanvasBlock.tsx +2 -6
- package/src/components/msa/drawFeatureSpans.ts +160 -79
- package/src/components/msa/msaRaster.ts +27 -9
- package/src/components/msa/renderBoxFeatureCanvasBlock.ts +39 -24
- package/src/components/msa/renderHighlights.ts +2 -3
- package/src/components/msa/renderMSAMouseover.ts +5 -1
- package/src/components/renderCtx.ts +0 -1
- package/src/components/rowpanels/renderFeaturePanel.ts +26 -7
- package/src/components/tracks/drawTracks.ts +5 -5
- package/src/components/tree/CladeLabels.tsx +30 -54
- package/src/components/tree/TreeCanvas.tsx +10 -4
- package/src/components/tree/TreeCanvasBlock.tsx +4 -4
- package/src/components/tree/TreeOverview.tsx +10 -5
- package/src/components/tree/TreePanel.tsx +8 -2
- package/src/components/tree/TreeRuler.tsx +7 -3
- package/src/components/tree/cladeBrackets.ts +59 -19
- package/src/components/tree/clickMap.ts +2 -0
- package/src/components/tree/ellipsize.ts +24 -0
- package/src/components/tree/renderTreeCanvas.ts +37 -36
- package/src/components/tree/renderTreeMouseover.ts +1 -1
- package/src/components/tree/renderTreeOverview.ts +7 -14
- package/src/constants.ts +17 -6
- package/src/element.ts +3 -7
- package/src/exportLayout.ts +134 -0
- package/src/headlessRenderEnv.ts +24 -11
- package/src/hierarchy.ts +5 -88
- package/src/index.ts +5 -5
- package/src/measureTextCanvas.ts +10 -8
- package/src/model/treeModel.ts +17 -34
- package/src/model.ts +296 -243
- package/src/renderToSvg.tsx +72 -209
- package/src/tipLabels.ts +51 -0
- package/src/types.ts +0 -1
- package/src/version.ts +1 -1
- package/src/viewerSnapshot.ts +147 -0
- package/dist/components/header/ZoomMenu.d.ts +0 -6
- package/dist/components/header/ZoomMenu.js +0 -37
- package/dist/components/header/ZoomMenu.js.map +0 -1
- package/src/components/header/ZoomMenu.tsx +0 -48
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
import { createJBrowseTheme } from '@jbrowse/core/ui/theme'
|
|
2
|
+
|
|
3
|
+
import type { MSAViewerProps } from './components/MSAViewer.tsx'
|
|
4
|
+
import type { ColorScheme, Highlight } from './types.ts'
|
|
5
|
+
|
|
6
|
+
export function colorSchemeSnapshot(scheme: ColorScheme | undefined) {
|
|
7
|
+
return typeof scheme === 'string'
|
|
8
|
+
? { colorSchemeName: scheme }
|
|
9
|
+
: scheme
|
|
10
|
+
? { customColorScheme: scheme.map }
|
|
11
|
+
: {}
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* The `highlightColumns` prop as `highlights`: one `{start, end}` per run of
|
|
16
|
+
* adjacent 1-based alignment columns
|
|
17
|
+
*/
|
|
18
|
+
export function columnHighlights(columns: number[] = []) {
|
|
19
|
+
const sorted = [...new Set(columns)].sort((a, b) => a - b)
|
|
20
|
+
const runs: { start: number; end: number }[] = []
|
|
21
|
+
for (const column of sorted) {
|
|
22
|
+
const last = runs.at(-1)
|
|
23
|
+
if (last?.end === column - 1) {
|
|
24
|
+
last.end = column
|
|
25
|
+
} else {
|
|
26
|
+
runs.push({ start: column, end: column })
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
return runs
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
export function viewerHighlights({
|
|
33
|
+
highlights = [],
|
|
34
|
+
highlightColumns,
|
|
35
|
+
}: Pick<MSAViewerProps, 'highlights' | 'highlightColumns'>): Highlight[] {
|
|
36
|
+
return [...highlights, ...columnHighlights(highlightColumns)]
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
function urlLocation(uri: string | undefined) {
|
|
40
|
+
return uri ? { uri, locationType: 'UriLocation' as const } : undefined
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
/** each filehandle prop, or the URL prop standing in for it */
|
|
44
|
+
export function fileLocations({
|
|
45
|
+
msaFilehandle,
|
|
46
|
+
treeFilehandle,
|
|
47
|
+
gffFilehandle,
|
|
48
|
+
msaUrl,
|
|
49
|
+
treeUrl,
|
|
50
|
+
gffUrl,
|
|
51
|
+
}: MSAViewerProps) {
|
|
52
|
+
return {
|
|
53
|
+
msaFilehandle: msaFilehandle ?? urlLocation(msaUrl),
|
|
54
|
+
treeFilehandle: treeFilehandle ?? urlLocation(treeUrl),
|
|
55
|
+
gffFilehandle: gffFilehandle ?? urlLocation(gffUrl),
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
export function resolveTheme(theme: MSAViewerProps['theme']) {
|
|
60
|
+
return createJBrowseTheme(
|
|
61
|
+
theme === 'dark'
|
|
62
|
+
? { palette: { mode: 'dark' } }
|
|
63
|
+
: typeof theme === 'object'
|
|
64
|
+
? theme
|
|
65
|
+
: undefined,
|
|
66
|
+
)
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
/**
|
|
70
|
+
* The model snapshot `MSAViewer` creates from its props. The CLI's `--props`
|
|
71
|
+
* reads the same JSON the R and Python widgets send, so a figure exported
|
|
72
|
+
* headlessly draws what the widget drew.
|
|
73
|
+
*/
|
|
74
|
+
export function viewerSnapshot(props: MSAViewerProps) {
|
|
75
|
+
const {
|
|
76
|
+
msa,
|
|
77
|
+
tree,
|
|
78
|
+
gff,
|
|
79
|
+
rowData,
|
|
80
|
+
colorScheme,
|
|
81
|
+
height,
|
|
82
|
+
colWidth,
|
|
83
|
+
rowHeight,
|
|
84
|
+
allowedGappyness,
|
|
85
|
+
highlightColumns,
|
|
86
|
+
highlights,
|
|
87
|
+
features,
|
|
88
|
+
selection,
|
|
89
|
+
clades,
|
|
90
|
+
relativeTo,
|
|
91
|
+
columnTracks,
|
|
92
|
+
residueMappings,
|
|
93
|
+
encodings,
|
|
94
|
+
rowPanels,
|
|
95
|
+
drawTree,
|
|
96
|
+
treeAreaWidth,
|
|
97
|
+
showBranchLen,
|
|
98
|
+
treeOrder,
|
|
99
|
+
treeRoot,
|
|
100
|
+
region,
|
|
101
|
+
residueEncoding,
|
|
102
|
+
} = props
|
|
103
|
+
const { msaFilehandle, treeFilehandle, gffFilehandle } = fileLocations(props)
|
|
104
|
+
return {
|
|
105
|
+
type: 'MsaView' as const,
|
|
106
|
+
...(msa || tree || gff || rowData
|
|
107
|
+
? {
|
|
108
|
+
data: {
|
|
109
|
+
msa: msa ?? '',
|
|
110
|
+
tree: tree ?? '',
|
|
111
|
+
gff,
|
|
112
|
+
// the row table is stored as this JSON string, which is what a
|
|
113
|
+
// shared URL and the size limit already cover
|
|
114
|
+
...(rowData ? { treeMetadata: JSON.stringify(rowData) } : {}),
|
|
115
|
+
},
|
|
116
|
+
}
|
|
117
|
+
: {}),
|
|
118
|
+
...(msaFilehandle ? { msaFilehandle } : {}),
|
|
119
|
+
...(treeFilehandle ? { treeFilehandle } : {}),
|
|
120
|
+
...(gffFilehandle ? { gffFilehandle } : {}),
|
|
121
|
+
...colorSchemeSnapshot(colorScheme),
|
|
122
|
+
...(height ? { height } : {}),
|
|
123
|
+
...(colWidth ? { colWidth } : {}),
|
|
124
|
+
...(rowHeight ? { rowHeight } : {}),
|
|
125
|
+
...(allowedGappyness !== undefined ? { allowedGappyness } : {}),
|
|
126
|
+
...(highlights || highlightColumns
|
|
127
|
+
? { highlights: viewerHighlights({ highlights, highlightColumns }) }
|
|
128
|
+
: {}),
|
|
129
|
+
...(features ? { features } : {}),
|
|
130
|
+
...(selection ? { selection } : {}),
|
|
131
|
+
...(clades ? { clades } : {}),
|
|
132
|
+
...(relativeTo ? { relativeTo } : {}),
|
|
133
|
+
...(columnTracks ? { columnTracks } : {}),
|
|
134
|
+
...(residueMappings ? { residueMappings } : {}),
|
|
135
|
+
...(encodings ? { encodings } : {}),
|
|
136
|
+
...(rowPanels ? { rowPanels } : {}),
|
|
137
|
+
...(drawTree !== undefined ? { drawTree } : {}),
|
|
138
|
+
...(treeAreaWidth ? { treeAreaWidth } : {}),
|
|
139
|
+
...(showBranchLen !== undefined ? { showBranchLen } : {}),
|
|
140
|
+
...(treeOrder ? { treeOrder } : {}),
|
|
141
|
+
...(treeRoot ? { treeRoot } : {}),
|
|
142
|
+
...(region ? { region } : {}),
|
|
143
|
+
...(residueEncoding !== undefined
|
|
144
|
+
? { bgColor: residueEncoding === 'fill' }
|
|
145
|
+
: {}),
|
|
146
|
+
}
|
|
147
|
+
}
|
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
|
-
import CascadingMenuButton from '@jbrowse/core/ui/CascadingMenuButton';
|
|
3
|
-
import MoreVert from '@mui/icons-material/MoreVert';
|
|
4
|
-
import RestartAlt from '@mui/icons-material/RestartAlt';
|
|
5
|
-
import { observer } from 'mobx-react';
|
|
6
|
-
const ZoomMenu = observer(function ({ model }) {
|
|
7
|
-
return (React.createElement(CascadingMenuButton, { tooltip: "Fit / zoom options", menuItems: [
|
|
8
|
-
{
|
|
9
|
-
label: 'Fit both vertically/horizontally',
|
|
10
|
-
onClick: () => {
|
|
11
|
-
model.fit();
|
|
12
|
-
},
|
|
13
|
-
},
|
|
14
|
-
{
|
|
15
|
-
label: 'Fit vertically',
|
|
16
|
-
onClick: () => {
|
|
17
|
-
model.fitVertically();
|
|
18
|
-
},
|
|
19
|
-
},
|
|
20
|
-
{
|
|
21
|
-
label: 'Fit horizontally',
|
|
22
|
-
onClick: () => {
|
|
23
|
-
model.fitHorizontally();
|
|
24
|
-
},
|
|
25
|
-
},
|
|
26
|
-
{
|
|
27
|
-
label: 'Reset zoom to default',
|
|
28
|
-
icon: RestartAlt,
|
|
29
|
-
onClick: () => {
|
|
30
|
-
model.resetZoom();
|
|
31
|
-
},
|
|
32
|
-
},
|
|
33
|
-
] },
|
|
34
|
-
React.createElement(MoreVert, null)));
|
|
35
|
-
});
|
|
36
|
-
export default ZoomMenu;
|
|
37
|
-
//# sourceMappingURL=ZoomMenu.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ZoomMenu.js","sourceRoot":"","sources":["../../../src/components/header/ZoomMenu.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,OAAO,mBAAmB,MAAM,sCAAsC,CAAA;AACtE,OAAO,QAAQ,MAAM,8BAA8B,CAAA;AACnD,OAAO,UAAU,MAAM,gCAAgC,CAAA;AACvD,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AAIrC,MAAM,QAAQ,GAAG,QAAQ,CAAC,UAAU,EAAE,KAAK,EAA2B;IACpE,OAAO,CACL,oBAAC,mBAAmB,IAClB,OAAO,EAAC,oBAAoB,EAC5B,SAAS,EAAE;YACT;gBACE,KAAK,EAAE,kCAAkC;gBACzC,OAAO,EAAE,GAAG,EAAE;oBACZ,KAAK,CAAC,GAAG,EAAE,CAAA;gBACb,CAAC;aACF;YACD;gBACE,KAAK,EAAE,gBAAgB;gBACvB,OAAO,EAAE,GAAG,EAAE;oBACZ,KAAK,CAAC,aAAa,EAAE,CAAA;gBACvB,CAAC;aACF;YACD;gBACE,KAAK,EAAE,kBAAkB;gBACzB,OAAO,EAAE,GAAG,EAAE;oBACZ,KAAK,CAAC,eAAe,EAAE,CAAA;gBACzB,CAAC;aACF;YAED;gBACE,KAAK,EAAE,uBAAuB;gBAC9B,IAAI,EAAE,UAAU;gBAChB,OAAO,EAAE,GAAG,EAAE;oBACZ,KAAK,CAAC,SAAS,EAAE,CAAA;gBACnB,CAAC;aACF;SACF;QAED,oBAAC,QAAQ,OAAG,CACQ,CACvB,CAAA;AACH,CAAC,CAAC,CAAA;AAEF,eAAe,QAAQ,CAAA"}
|
|
@@ -1,48 +0,0 @@
|
|
|
1
|
-
import React from 'react'
|
|
2
|
-
|
|
3
|
-
import CascadingMenuButton from '@jbrowse/core/ui/CascadingMenuButton'
|
|
4
|
-
import MoreVert from '@mui/icons-material/MoreVert'
|
|
5
|
-
import RestartAlt from '@mui/icons-material/RestartAlt'
|
|
6
|
-
import { observer } from 'mobx-react'
|
|
7
|
-
|
|
8
|
-
import type { MsaViewModel } from '../../model.ts'
|
|
9
|
-
|
|
10
|
-
const ZoomMenu = observer(function ({ model }: { model: MsaViewModel }) {
|
|
11
|
-
return (
|
|
12
|
-
<CascadingMenuButton
|
|
13
|
-
tooltip="Fit / zoom options"
|
|
14
|
-
menuItems={[
|
|
15
|
-
{
|
|
16
|
-
label: 'Fit both vertically/horizontally',
|
|
17
|
-
onClick: () => {
|
|
18
|
-
model.fit()
|
|
19
|
-
},
|
|
20
|
-
},
|
|
21
|
-
{
|
|
22
|
-
label: 'Fit vertically',
|
|
23
|
-
onClick: () => {
|
|
24
|
-
model.fitVertically()
|
|
25
|
-
},
|
|
26
|
-
},
|
|
27
|
-
{
|
|
28
|
-
label: 'Fit horizontally',
|
|
29
|
-
onClick: () => {
|
|
30
|
-
model.fitHorizontally()
|
|
31
|
-
},
|
|
32
|
-
},
|
|
33
|
-
|
|
34
|
-
{
|
|
35
|
-
label: 'Reset zoom to default',
|
|
36
|
-
icon: RestartAlt,
|
|
37
|
-
onClick: () => {
|
|
38
|
-
model.resetZoom()
|
|
39
|
-
},
|
|
40
|
-
},
|
|
41
|
-
]}
|
|
42
|
-
>
|
|
43
|
-
<MoreVert />
|
|
44
|
-
</CascadingMenuButton>
|
|
45
|
-
)
|
|
46
|
-
})
|
|
47
|
-
|
|
48
|
-
export default ZoomMenu
|