// ============================================================
// media-card-menu.ts — 画布媒体卡片右键菜单定义
//
// Assets 阶段：
//   复制文件路径 | 在文件夹中打开
//
// 非 Assets 阶段（Storyboard / Keyframe / Video 等）：
//   标记为待审核 | 标记为通过 | 标记为返修 | 标记为已弃用 | —— | 复制文件路径 | 在文件夹中打开
//
// 通用操作（复制路径、在文件夹中打开）统一放到底部分隔线以下。
// ============================================================

import type { ContextMenuItems } from '@/shared/components/ContextMenu';
import type { AuditStatus } from '../../stores/useCanvasStore';

/** 审核状态 → 菜单显示文本 */
const AUDIT_LABELS: Record<AuditStatus, string> = {
    pending: '标记为待审核',
    approved: '标记为通过',
    rework: '标记为返修',
    deprecated: '标记为已弃用',
};

export interface MediaCardMenuOptions {
    /** 是否可审核（非 Assets 阶段为 true） */
    isAuditable: boolean;
    onSetAudit: (status: AuditStatus) => void;
    onCopyPath: () => void;
    onOpenFolder: () => void;
}

export function getMediaCardMenuItems(opts: MediaCardMenuOptions): ContextMenuItems {
    const items: ContextMenuItems = [];

    if (opts.isAuditable) {
        const statuses: AuditStatus[] = ['pending', 'approved', 'rework', 'deprecated'];
        for (const status of statuses) {
            items.push({
                key: `audit-${status}`,
                label: AUDIT_LABELS[status],
                onClick: () => opts.onSetAudit(status),
            });
        }
        items.push('divider');
    }

    // 底部通用操作
    items.push(
        { key: 'copy-path', label: '复制文件路径', onClick: opts.onCopyPath },
        { key: 'open-folder', label: '在文件夹中打开', onClick: opts.onOpenFolder },
    );

    return items;
}
