import React from "react"; import { useDevice, useExcalidrawAppState, 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 { mainMenuTunnel } from "../tunnels"; 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 device = useDevice(); const appState = useExcalidrawAppState(); const setAppState = useExcalidrawSetAppState(); const onClickOutside = device.isMobile ? undefined : () => setAppState({ openMenu: null }); return ( { setAppState({ openMenu: appState.openMenu === "canvas" ? null : "canvas", }); }} > {HamburgerMenuIcon} { setAppState({ openMenu: null }); })} > {children} {device.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;