diff --git a/apps/web/src/pages/editing-planner/hooks/useClipOperations/useClipBasicOps.ts b/apps/web/src/pages/editing-planner/hooks/useClipOperations/useClipBasicOps.ts deleted file mode 100644 index 015541705..000000000 --- a/apps/web/src/pages/editing-planner/hooks/useClipOperations/useClipBasicOps.ts +++ /dev/null @@ -1,86 +0,0 @@ -import { useState, useMemo, useCallback } from "react" -import { Modal } from "antd" -import type { ClipData, ClipType } from "../../types" - -interface UseClipBasicOpsParams { - clips: ClipData[] - setClips: (updater: (prev: ClipData[]) => ClipData[]) => void -} - -/** - * 片段基础操作 Hook - * 选中状态、增删改查、重排 - */ -export function useClipBasicOps({ clips, setClips }: UseClipBasicOpsParams) { - const [selectedClipId, setSelectedClipId] = useState(null) - - const selectedClip = useMemo( - () => clips.find((c) => c.id === selectedClipId) || null, - [clips, selectedClipId], - ) - - const handleClipSelect = useCallback((clipId: string) => { - setSelectedClipId(clipId) - }, []) - - const handleClipReorder = useCallback( - (fromIdx: number, toIdx: number) => { - setClips((prev) => { - const updated = [...prev] - const [moved] = updated.splice(fromIdx, 1) - updated.splice(toIdx, 0, moved) - return updated.map((c, i) => ({ ...c, order: i })) - }) - }, - [setClips], - ) - - const handleClipRemove = useCallback( - (clipId: string) => { - Modal.confirm({ - title: "删除片段", - content: "确定要删除这个片段吗?此操作可通过撤销恢复。", - okText: "删除", - okType: "danger", - cancelText: "取消", - onOk: () => { - setClips((prev) => prev.filter((c) => c.id !== clipId)) - if (selectedClipId === clipId) setSelectedClipId(null) - }, - }) - }, - [setClips, selectedClipId], - ) - - const handleClipUpdate = useCallback( - (clipId: string, data: Partial) => { - setClips((prev) => prev.map((c) => (c.id === clipId ? { ...c, ...data } : c))) - }, - [setClips], - ) - - const handleAddClip = useCallback( - (type: ClipType, duration: number) => { - const newClip: ClipData = { - id: `clip-${Date.now()}`, - type, - duration, - startOffset: 0, - order: clips.length, - } - setClips((prev) => [...prev, newClip]) - }, - [clips.length, setClips], - ) - - return { - selectedClipId, - setSelectedClipId, - selectedClip, - handleClipSelect, - handleClipReorder, - handleClipRemove, - handleClipUpdate, - handleAddClip, - } -}