import type { ChangeEventHandler, ComponentProps, RefObject, } from 'react'; import { ImageCanvasMetadataModalView } from './ImageCanvasMetadataModalView'; import { ImageCanvasSidebarView } from './ImageCanvasSidebarView'; import { ImageCanvasStageView } from './ImageCanvasStageView'; import { ImageCanvasTopbarView } from './ImageCanvasTopbarView'; type AssetDragPreview = { x: number; y: number; label: string; }; type ImageCanvasEditorShellViewProps = { editorRootRef: RefObject; uploadInputRef: RefObject; uploadAccept?: string; onUploadInputChange: ChangeEventHandler; assetDragPreview: AssetDragPreview | null; sidebarProps: ComponentProps; topbarProps: ComponentProps; stageProps: ComponentProps; metadataProps: ComponentProps; }; export function ImageCanvasEditorShellView({ editorRootRef, uploadInputRef, uploadAccept = 'image/*', onUploadInputChange, assetDragPreview, sidebarProps, topbarProps, stageProps, metadataProps, }: ImageCanvasEditorShellViewProps) { const uploadInputLabel = uploadAccept.includes('video') || uploadAccept.includes('audio') ? '上传媒体文件' : '上传图片文件'; return (
{ if ( event.target instanceof Element && event.target.closest('.image-canvas-editor__metadata-dialog') ) { return; } event.preventDefault(); }} > {assetDragPreview ? ( ) : null}
); }