video-flow-b/components/ui/replace-scene-panel.tsx
2025-08-13 22:14:19 +08:00

77 lines
1.6 KiB
TypeScript

import { ReplacePanel } from './replace-panel';
interface Shot {
id: string;
videoUrl?: string;
thumbnailUrl: string;
isGenerating: boolean;
isSelected: boolean;
}
interface Scene {
id: string;
name: string;
avatarUrl: string;
}
interface ReplaceScenePanelProps {
shots: Shot[];
scene: Scene;
onClose: () => void;
onConfirm: (selectedShots: string[], addToLibrary: boolean) => void;
}
// Mock数据
export const mockShots: Shot[] = [
{
id: '1',
thumbnailUrl: '/assets/3dr_chihiro.png',
videoUrl: 'https://video-base-imf.oss-ap-southeast-7.aliyuncs.com/uploads/FJ1-0-20250725023719.mp4',
isGenerating: false,
isSelected: true,
},
{
id: '2',
thumbnailUrl: '/assets/3dr_mono.png',
isGenerating: true,
isSelected: true,
},
{
id: '3',
thumbnailUrl: '/assets/3dr_howlcastle.png',
videoUrl: 'https://video-base-imf.oss-ap-southeast-7.aliyuncs.com/uploads/FJ3-0-20250725023725.mp4',
isGenerating: false,
isSelected: true,
},
{
id: '4',
thumbnailUrl: '/assets/3dr_spirited.jpg',
isGenerating: true,
isSelected: true,
},
];
export const mockScene: Scene = {
id: '1',
name: '场景 1',
avatarUrl: '/assets/3dr_howlbg.jpg',
};
export function ReplaceScenePanel({
shots = mockShots,
scene = mockScene,
onClose,
onConfirm,
}: ReplaceScenePanelProps) {
return (
<ReplacePanel
title="替换新场景"
shots={shots}
item={scene}
showAddToLibrary={false}
onClose={onClose}
onConfirm={onConfirm}
isLoading={false}
/>
);
}