import clsx from "clsx"; import { DEFAULT_SIDEBAR, LIBRARY_SIDEBAR_TAB } from "../constants"; import { useTunnels } from "../context/tunnels"; import { useUIAppState } from "../context/ui-appState"; import { t } from "../i18n"; import type { MarkOptional, Merge } from "../utility-types"; import { composeEventHandlers } from "../utils"; import { useExcalidrawSetAppState } from "./App"; import { withInternalFallback } from "./hoc/withInternalFallback"; import { LibraryMenu } from "./LibraryMenu"; import type { SidebarProps, SidebarTriggerProps } from "./Sidebar/common"; import { Sidebar } from "./Sidebar/Sidebar"; const DefaultSidebarTrigger = withInternalFallback( "DefaultSidebarTrigger", ( props: Omit & React.HTMLAttributes, ) => { const { DefaultSidebarTriggerTunnel } = useTunnels(); return ( ); }, ); DefaultSidebarTrigger.displayName = "DefaultSidebarTrigger"; const DefaultTabTriggers = ({ children, ...rest }: { children: React.ReactNode } & React.HTMLAttributes) => { const { DefaultSidebarTabTriggersTunnel } = useTunnels(); return ( {children} ); }; DefaultTabTriggers.displayName = "DefaultTabTriggers"; export const DefaultSidebar = Object.assign( withInternalFallback( "DefaultSidebar", ({ children, className, onDock, docked, ...rest }: Merge< MarkOptional, "children">, { /** pass `false` to disable docking */ onDock?: SidebarProps["onDock"] | false; } >) => { const appState = useUIAppState(); const setAppState = useExcalidrawSetAppState(); const { DefaultSidebarTabTriggersTunnel } = useTunnels(); return ( { setAppState({ defaultSidebarDockedPreference: docked }); }) } > {rest.__fallback && (
{t("toolBar.library")}
)}
{children}
); }, ), { Trigger: DefaultSidebarTrigger, TabTriggers: DefaultTabTriggers, }, );