mirror of
https://github.com/excalidraw/excalidraw.git
synced 2025-04-14 16:40:58 -04:00
Some checks failed
Auto release excalidraw next / Auto-release-excalidraw-next (push) Failing after 2m36s
Build Docker image / build-docker (push) Failing after 6s
Cancel previous runs / cancel (push) Failing after 1s
Publish Docker / publish-docker (push) Failing after 31s
New Sentry production release / sentry (push) Failing after 2m3s
91 lines
2.8 KiB
TypeScript
91 lines
2.8 KiB
TypeScript
import {
|
|
loginIcon,
|
|
ExcalLogo,
|
|
eyeIcon,
|
|
} from "@excalidraw/excalidraw/components/icons";
|
|
import { MainMenu } from "@excalidraw/excalidraw/index";
|
|
import React from "react";
|
|
|
|
import { isDevEnv } from "@excalidraw/common";
|
|
|
|
import type { Theme } from "@excalidraw/element/types";
|
|
|
|
import { LanguageList } from "../app-language/LanguageList";
|
|
import { isExcalidrawPlusSignedUser } from "../app_constants";
|
|
|
|
import { saveDebugState } from "./DebugCanvas";
|
|
|
|
export const AppMainMenu: React.FC<{
|
|
onCollabDialogOpen: () => any;
|
|
isCollaborating: boolean;
|
|
isCollabEnabled: boolean;
|
|
theme: Theme | "system";
|
|
setTheme: (theme: Theme | "system") => void;
|
|
refresh: () => void;
|
|
}> = React.memo((props) => {
|
|
return (
|
|
<MainMenu>
|
|
<MainMenu.DefaultItems.LoadScene />
|
|
<MainMenu.DefaultItems.SaveToActiveFile />
|
|
<MainMenu.DefaultItems.Export />
|
|
<MainMenu.DefaultItems.SaveAsImage />
|
|
{props.isCollabEnabled && (
|
|
<MainMenu.DefaultItems.LiveCollaborationTrigger
|
|
isCollaborating={props.isCollaborating}
|
|
onSelect={() => props.onCollabDialogOpen()}
|
|
/>
|
|
)}
|
|
<MainMenu.DefaultItems.CommandPalette className="highlighted" />
|
|
<MainMenu.DefaultItems.SearchMenu />
|
|
<MainMenu.DefaultItems.Help />
|
|
<MainMenu.DefaultItems.ClearCanvas />
|
|
<MainMenu.Separator />
|
|
<MainMenu.ItemLink
|
|
icon={ExcalLogo}
|
|
href={`${
|
|
import.meta.env.VITE_APP_PLUS_LP
|
|
}/plus?utm_source=excalidraw&utm_medium=app&utm_content=hamburger`}
|
|
className=""
|
|
>
|
|
Excalidraw+
|
|
</MainMenu.ItemLink>
|
|
<MainMenu.DefaultItems.Socials />
|
|
<MainMenu.ItemLink
|
|
icon={loginIcon}
|
|
href={`${import.meta.env.VITE_APP_PLUS_APP}${
|
|
isExcalidrawPlusSignedUser ? "" : "/sign-up"
|
|
}?utm_source=signin&utm_medium=app&utm_content=hamburger`}
|
|
className="highlighted"
|
|
>
|
|
{isExcalidrawPlusSignedUser ? "Sign in" : "Sign up"}
|
|
</MainMenu.ItemLink>
|
|
{isDevEnv() && (
|
|
<MainMenu.Item
|
|
icon={eyeIcon}
|
|
onClick={() => {
|
|
if (window.visualDebug) {
|
|
delete window.visualDebug;
|
|
saveDebugState({ enabled: false });
|
|
} else {
|
|
window.visualDebug = { data: [] };
|
|
saveDebugState({ enabled: true });
|
|
}
|
|
props?.refresh();
|
|
}}
|
|
>
|
|
Visual Debug
|
|
</MainMenu.Item>
|
|
)}
|
|
<MainMenu.Separator />
|
|
<MainMenu.DefaultItems.ToggleTheme
|
|
allowSystemTheme
|
|
theme={props.theme}
|
|
onSelect={props.setTheme}
|
|
/>
|
|
<MainMenu.ItemCustom>
|
|
<LanguageList style={{ width: "100%" }} />
|
|
</MainMenu.ItemCustom>
|
|
<MainMenu.DefaultItems.ChangeCanvasBackground />
|
|
</MainMenu>
|
|
);
|
|
});
|