import { ConfirmDialog } from "~/components/common/ConfirmDialog"; import type { ScriptItem } from "~/services/api"; export type ScriptsPendingConfirm = | { kind: "script"; script: ScriptItem } | { kind: "resource"; id: string; name: string } | { kind: "directory"; path: string } | { kind: "close-tab"; id: string; name: string }; type ScriptsPendingConfirmDialogProps = { pending: ScriptsPendingConfirm | null; onOpenChange: (open: boolean) => void; onConfirm: () => void | Promise; }; function copyFor(pending: ScriptsPendingConfirm) { switch (pending.kind) { case "script": return { title: "确定删除文件?", description: `确定删除文件"${pending.script.script_name}"吗?稳定版本会保留。`, confirmLabel: "删除", destructive: true, }; case "resource": return { title: "确定删除数据资源?", description: `确定删除数据资源"${pending.name}"吗?稳定版本会保留。`, confirmLabel: "删除", destructive: true, }; case "directory": return { title: "确定删除文件夹?", description: `确定递归删除文件夹"${pending.path}"及其内容吗?稳定版本会保留。`, confirmLabel: "删除", destructive: true, }; case "close-tab": return { title: "确定关闭标签?", description: `当前脚本有未保存修改,确定关闭 "${pending.name}" 吗?`, confirmLabel: "关闭", destructive: false, }; } } export function ScriptsPendingConfirmDialog({ pending, onOpenChange, onConfirm, }: ScriptsPendingConfirmDialogProps) { const copy = pending ? copyFor(pending) : null; return ( ); }