|
@@ -1,5 +1,5 @@
|
|
import React from "react";
|
|
import React from "react";
|
|
-import { AppState, Device, ExcalidrawProps } from "../types";
|
|
|
|
|
|
+import { AppProps, AppState, Device, ExcalidrawProps } from "../types";
|
|
import { ActionManager } from "../actions/manager";
|
|
import { ActionManager } from "../actions/manager";
|
|
import { t } from "../i18n";
|
|
import { t } from "../i18n";
|
|
import Stack from "./Stack";
|
|
import Stack from "./Stack";
|
|
@@ -45,10 +45,12 @@ type MobileMenuProps = {
|
|
isMobile: boolean,
|
|
isMobile: boolean,
|
|
appState: AppState,
|
|
appState: AppState,
|
|
) => JSX.Element | null;
|
|
) => JSX.Element | null;
|
|
|
|
+ renderMenuLinks?: ExcalidrawProps["renderMenuLinks"];
|
|
renderCustomStats?: ExcalidrawProps["renderCustomStats"];
|
|
renderCustomStats?: ExcalidrawProps["renderCustomStats"];
|
|
renderSidebars: () => JSX.Element | null;
|
|
renderSidebars: () => JSX.Element | null;
|
|
device: Device;
|
|
device: Device;
|
|
renderWelcomeScreen?: boolean;
|
|
renderWelcomeScreen?: boolean;
|
|
|
|
+ UIOptions: AppProps["UIOptions"];
|
|
};
|
|
};
|
|
|
|
|
|
export const MobileMenu = ({
|
|
export const MobileMenu = ({
|
|
@@ -66,10 +68,12 @@ export const MobileMenu = ({
|
|
renderCustomFooter,
|
|
renderCustomFooter,
|
|
onImageAction,
|
|
onImageAction,
|
|
renderTopRightUI,
|
|
renderTopRightUI,
|
|
|
|
+ renderMenuLinks,
|
|
renderCustomStats,
|
|
renderCustomStats,
|
|
renderSidebars,
|
|
renderSidebars,
|
|
device,
|
|
device,
|
|
renderWelcomeScreen,
|
|
renderWelcomeScreen,
|
|
|
|
+ UIOptions,
|
|
}: MobileMenuProps) => {
|
|
}: MobileMenuProps) => {
|
|
const renderToolbar = () => {
|
|
const renderToolbar = () => {
|
|
return (
|
|
return (
|
|
@@ -111,8 +115,8 @@ export const MobileMenu = ({
|
|
/>
|
|
/>
|
|
</Stack.Row>
|
|
</Stack.Row>
|
|
</Island>
|
|
</Island>
|
|
- {renderTopRightUI && renderTopRightUI(true, appState)}
|
|
|
|
<div className="mobile-misc-tools-container">
|
|
<div className="mobile-misc-tools-container">
|
|
|
|
+ {renderTopRightUI && renderTopRightUI(true, appState)}
|
|
<PenModeButton
|
|
<PenModeButton
|
|
checked={appState.penMode}
|
|
checked={appState.penMode}
|
|
onChange={onPenModeToggle}
|
|
onChange={onPenModeToggle}
|
|
@@ -192,12 +196,14 @@ export const MobileMenu = ({
|
|
{!appState.viewModeEnabled && actionManager.renderAction("loadScene")}
|
|
{!appState.viewModeEnabled && actionManager.renderAction("loadScene")}
|
|
{renderJSONExportDialog()}
|
|
{renderJSONExportDialog()}
|
|
{renderImageExportDialog()}
|
|
{renderImageExportDialog()}
|
|
- <MenuItem
|
|
|
|
- label={t("buttons.exportImage")}
|
|
|
|
- icon={ExportImageIcon}
|
|
|
|
- dataTestId="image-export-button"
|
|
|
|
- onClick={() => setAppState({ openDialog: "imageExport" })}
|
|
|
|
- />
|
|
|
|
|
|
+ {UIOptions.canvasActions.saveAsImage && (
|
|
|
|
+ <MenuItem
|
|
|
|
+ label={t("buttons.exportImage")}
|
|
|
|
+ icon={ExportImageIcon}
|
|
|
|
+ dataTestId="image-export-button"
|
|
|
|
+ onClick={() => setAppState({ openDialog: "imageExport" })}
|
|
|
|
+ />
|
|
|
|
+ )}
|
|
{onCollabButtonClick && (
|
|
{onCollabButtonClick && (
|
|
<CollabButton
|
|
<CollabButton
|
|
isCollaborating={isCollaborating}
|
|
isCollaborating={isCollaborating}
|
|
@@ -207,8 +213,16 @@ export const MobileMenu = ({
|
|
)}
|
|
)}
|
|
{actionManager.renderAction("toggleShortcuts", undefined, true)}
|
|
{actionManager.renderAction("toggleShortcuts", undefined, true)}
|
|
{!appState.viewModeEnabled && actionManager.renderAction("clearCanvas")}
|
|
{!appState.viewModeEnabled && actionManager.renderAction("clearCanvas")}
|
|
- <Separator />
|
|
|
|
- <MenuLinks />
|
|
|
|
|
|
+ {typeof renderMenuLinks === "undefined" ? ( //zsviczian
|
|
|
|
+ <Separator />
|
|
|
|
+ ) : (
|
|
|
|
+ renderMenuLinks && <Separator />
|
|
|
|
+ )}
|
|
|
|
+ {typeof renderMenuLinks === "undefined" ? ( //zsviczian
|
|
|
|
+ <MenuLinks />
|
|
|
|
+ ) : (
|
|
|
|
+ renderMenuLinks && renderMenuLinks(device.isMobile, appState)
|
|
|
|
+ )}
|
|
<Separator />
|
|
<Separator />
|
|
{!appState.viewModeEnabled && (
|
|
{!appState.viewModeEnabled && (
|
|
<div style={{ marginBottom: ".5rem" }}>
|
|
<div style={{ marginBottom: ".5rem" }}>
|