import { useEditor } from '@tldraw/editor' import { ReactNode, useEffect } from 'react' import { TldrawUiButton } from '../primitives/Button/TldrawUiButton' import { TldrawUiButtonIcon } from '../primitives/Button/TldrawUiButtonIcon' import { TldrawUiMenuContextProvider } from '../primitives/menus/TldrawUiMenuContext' import { TldrawUiDropdownMenuContent, TldrawUiDropdownMenuRoot, TldrawUiDropdownMenuTrigger, } from '../primitives/TldrawUiDropdownMenu' import { DefaultDebugMenuContent } from './DefaultDebugMenuContent' /** @public */ export interface TLUiDebugMenuProps { children?: ReactNode } /** @public @react */ export function DefaultDebugMenu({ children }: TLUiDebugMenuProps) { const editor = useEditor() const content = children ?? // While the debug menu is mounted, expose the editor on `window.editor` for // console-driven debugging. We remove it on unmount so the editor isn't // retained when debug mode is turned off. useEffect(() => { const win = window as any win.editor = editor return () => { if (win.editor === editor) { delete win.editor } } }, [editor]) return ( {content} ) }