"use client"; import { ContextMenuCheckboxItem, ContextMenuContent, ContextMenuItem, ContextMenuSeparator, } from "@/components/ui/context-menu"; import { usePreviewViewport } from "@/preview/components/preview-viewport"; import { useEditor } from "@/editor/use-editor"; import type { PreviewOverlayControl } from "@/preview/overlays"; import { toast } from "sonner"; export function PreviewContextMenu({ onToggleFullscreen, containerRef, overlayControls, onOverlayVisibilityChange, }: { onToggleFullscreen: () => void; containerRef: React.RefObject; overlayControls: PreviewOverlayControl[]; onOverlayVisibilityChange: (params: { overlayId: string; isVisible: boolean; }) => void; }) { const editor = useEditor(); const viewport = usePreviewViewport(); const handleCopySnapshot = async () => { const result = await editor.renderer.copySnapshot(); if (!result.success) { toast.error("Failed to copy snapshot", { description: result.error ?? "Please try again", }); return; } }; const handleSaveSnapshot = async () => { const result = await editor.renderer.saveSnapshot(); if (!result.success) { toast.error("Failed to save snapshot", { description: result.error ?? "Please try again", }); return; } }; return ( Fit to screen Full screen Save snapshot Copy snapshot {overlayControls.length > 0 ? : null} {overlayControls.map((overlayControl) => ( onOverlayVisibilityChange({ overlayId: overlayControl.id, isVisible: !!checked, }) } > {overlayControl.label} ))} ); }