2
0

AppMainMenu.tsx 2.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. import {
  2. loginIcon,
  3. ExcalLogo,
  4. eyeIcon,
  5. } from "@excalidraw/excalidraw/components/icons";
  6. import { MainMenu } from "@excalidraw/excalidraw/index";
  7. import React from "react";
  8. import { isDevEnv } from "@excalidraw/common";
  9. import type { Theme } from "@excalidraw/element/types";
  10. import { LanguageList } from "../app-language/LanguageList";
  11. import { isExcalidrawPlusSignedUser } from "../app_constants";
  12. import { saveDebugState } from "./DebugCanvas";
  13. export const AppMainMenu: React.FC<{
  14. onCollabDialogOpen: () => any;
  15. isCollaborating: boolean;
  16. isCollabEnabled: boolean;
  17. theme: Theme | "system";
  18. setTheme: (theme: Theme | "system") => void;
  19. refresh: () => void;
  20. }> = React.memo((props) => {
  21. return (
  22. <MainMenu>
  23. <MainMenu.DefaultItems.LoadScene />
  24. <MainMenu.DefaultItems.SaveToActiveFile />
  25. <MainMenu.DefaultItems.Export />
  26. <MainMenu.DefaultItems.SaveAsImage />
  27. {props.isCollabEnabled && (
  28. <MainMenu.DefaultItems.LiveCollaborationTrigger
  29. isCollaborating={props.isCollaborating}
  30. onSelect={() => props.onCollabDialogOpen()}
  31. />
  32. )}
  33. <MainMenu.DefaultItems.CommandPalette className="highlighted" />
  34. <MainMenu.DefaultItems.SearchMenu />
  35. <MainMenu.DefaultItems.Help />
  36. <MainMenu.DefaultItems.ClearCanvas />
  37. <MainMenu.Separator />
  38. <MainMenu.ItemLink
  39. icon={ExcalLogo}
  40. href={`${
  41. import.meta.env.VITE_APP_PLUS_LP
  42. }/plus?utm_source=excalidraw&utm_medium=app&utm_content=hamburger`}
  43. className=""
  44. >
  45. Excalidraw+
  46. </MainMenu.ItemLink>
  47. <MainMenu.DefaultItems.Socials />
  48. <MainMenu.ItemLink
  49. icon={loginIcon}
  50. href={`${import.meta.env.VITE_APP_PLUS_APP}${
  51. isExcalidrawPlusSignedUser ? "" : "/sign-up"
  52. }?utm_source=signin&utm_medium=app&utm_content=hamburger`}
  53. className="highlighted"
  54. >
  55. {isExcalidrawPlusSignedUser ? "Sign in" : "Sign up"}
  56. </MainMenu.ItemLink>
  57. {isDevEnv() && (
  58. <MainMenu.Item
  59. icon={eyeIcon}
  60. onClick={() => {
  61. if (window.visualDebug) {
  62. delete window.visualDebug;
  63. saveDebugState({ enabled: false });
  64. } else {
  65. window.visualDebug = { data: [] };
  66. saveDebugState({ enabled: true });
  67. }
  68. props?.refresh();
  69. }}
  70. >
  71. Visual Debug
  72. </MainMenu.Item>
  73. )}
  74. <MainMenu.Separator />
  75. <MainMenu.DefaultItems.ToggleTheme
  76. allowSystemTheme
  77. theme={props.theme}
  78. onSelect={props.setTheme}
  79. />
  80. <MainMenu.ItemCustom>
  81. <LanguageList style={{ width: "100%" }} />
  82. </MainMenu.ItemCustom>
  83. <MainMenu.DefaultItems.ChangeCanvasBackground />
  84. </MainMenu>
  85. );
  86. });