import { createPortal } from 'react-dom'; import { Copy } from 'lucide-react'; import { canvasDragRectBorder, canvasDragRectFill, canvasZoomBadgeBg, canvasZoomBadgeText, fontMono, fsBase, } from '../../theme.ts'; import styles from '../StagePane.module.css'; import { formatPointLiteral } from './sample-point.ts'; import type { DragState, SampleContextMenu } from './types.ts'; interface CanvasHudProps { dragRect: DragState | null; zoomLevel: number | null; sampleContextMenu: SampleContextMenu | null; onCopySample: () => void; } export function CanvasHud({ dragRect, zoomLevel, sampleContextMenu, onCopySample, }: CanvasHudProps) { return ( <> {dragRect && } {zoomLevel !== null && } {sampleContextMenu && ( )} ); } function ZoomSelectionRect({ dragRect }: { dragRect: DragState }) { return (
); } function ZoomBadge({ zoomLevel }: { zoomLevel: number }) { return (
{zoomLevel.toFixed(1)}×
); } function SampleContextMenu({ menu, onCopySample, }: { menu: SampleContextMenu; onCopySample: () => void; }) { return createPortal(
e.stopPropagation()} >
, document.body, ); }