import React from "react"; import { useDevice, useExcalidrawSetAppState } from "../App"; import DropdownMenu from "../dropdownMenu/DropdownMenu"; import * as DefaultItems from "./DefaultItems"; import { UserList } from "../UserList"; import { t } from "../../i18n"; import { HamburgerMenuIcon } from "../icons"; import { withInternalFallback } from "../hoc/withInternalFallback"; import { composeEventHandlers } from "../../utils"; import { useTunnels } from "../../context/tunnels"; import { useUIAppState } from "../../context/ui-appState"; const MainMenu = Object.assign( withInternalFallback( "MainMenu", ({ children, onSelect, }: { children?: React.ReactNode; /** * Called when any menu item is selected (clicked on). */ onSelect?: (event: Event) => void; }) => { const { MainMenuTunnel } = useTunnels(); const device = useDevice(); const appState = useUIAppState(); const setAppState = useExcalidrawSetAppState(); const onClickOutside = device.editor.isMobile ? undefined : () => setAppState({ openMenu: null }); return ( { setAppState({ openMenu: appState.openMenu === "canvas" ? null : "canvas", }); }} data-testid="main-menu-trigger" className="main-menu-trigger" > {HamburgerMenuIcon} { setAppState({ openMenu: null }); })} > {children} {device.editor.isMobile && appState.collaborators.size > 0 && (
{t("labels.collaborators")}
)}
); }, ), { Trigger: DropdownMenu.Trigger, Item: DropdownMenu.Item, ItemLink: DropdownMenu.ItemLink, ItemCustom: DropdownMenu.ItemCustom, Group: DropdownMenu.Group, Separator: DropdownMenu.Separator, DefaultItems, }, ); export default MainMenu;