import { useApp } from '@tldraw/react' import { MOD_KEY, AlignType, DistributeType } from '@tldraw/core' import { observer } from 'mobx-react-lite' import { TablerIcon } from '../icons' import { Button } from '../Button' import * as React from 'react' import * as ReactContextMenu from '@radix-ui/react-context-menu' import * as Separator from '@radix-ui/react-separator' const preventDefault = (e: Event) => e.stopPropagation() interface ContextMenuProps { children: React.ReactNode collisionRef: React.RefObject } export const ContextMenu = observer(function ContextMenu({ children, collisionRef, }: ContextMenuProps) { const app = useApp() const rContent = React.useRef(null) const runAndTransition = (f: Function) => { f() app.transition('select') } return ( {children} app.transition('select')} collisionBoundary={collisionRef.current} asChild tabIndex={-1} >
{app.selectedShapes?.size > 1 && (
)} {app.selectedShapes?.size > 0 && ( <> runAndTransition(app.cut)} > Cut
{MOD_KEY} X
runAndTransition(app.copy)} > Copy
{MOD_KEY} C
)} runAndTransition(app.paste)} > Paste
{MOD_KEY} V
runAndTransition(app.api.selectAll)} > Select all
{MOD_KEY} A
{app.selectedShapes?.size > 1 && ( runAndTransition(app.api.deselectAll)} > Deselect all )} {app.selectedShapes?.size > 0 && ( <> runAndTransition(app.api.deleteShapes)} > Delete
Del
{app.selectedShapes?.size > 1 && ( <> runAndTransition(app.flipHorizontal)} > Flip horizontally runAndTransition(app.flipVertical)} > Flip vertically )} runAndTransition(app.bringToFront)} > Move to front
]
runAndTransition(app.sendToBack)} > Move to back
[
)}
) })