// ============================================================ // preview-area-menu.ts — 任务输出预览区域右键菜单定义 // // 两个子场景: // [有预览图] // 打开文件所在位置 | 复制到粘贴板(图片) // [无预览图 / 未选择任务] // 打开保存路径 // // 菜单项由调用方根据当前状态动态选择。 // ============================================================ import type { ContextMenuItems } from '@/shared/components/ContextMenu'; export interface PreviewAreaMenuOptions { /** 当前是否有预览内容 */ hasPreview: boolean; onOpenFileLocation: () => void; onCopyImageToClipboard: () => void; onOpenSavePath: () => void; } /** 有预览图时 */ export function getPreviewImageMenu(opts: PreviewAreaMenuOptions): ContextMenuItems { return [ { key: 'open-file-location', label: '打开文件所在位置', onClick: opts.onOpenFileLocation, }, { key: 'copy-image', label: '复制到粘贴板(图片)', onClick: opts.onCopyImageToClipboard, }, ]; } /** 无预览图 / 未选择任务时(直接触发打开保存路径,返回单一项) */ export function getPreviewEmptyMenu(opts: PreviewAreaMenuOptions): ContextMenuItems { return [ { key: 'open-save-path', label: '打开保存路径', onClick: opts.onOpenSavePath, }, ]; }