AppMainMenu.tsx 2.7 KB

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