import { useState, useCallback } from "react" import type { AssetItem } from "../types" /** * 素材选中态管理 Hook * 封装单选、全选、取消全选等选中逻辑 */ interface UseAssetSelectionProps { filteredAssets: AssetItem[] } export function useAssetSelection({ filteredAssets }: UseAssetSelectionProps) { const [selectedIds, setSelectedIds] = useState>(new Set()) const toggleSelect = useCallback((id: string) => { setSelectedIds((prev) => { const next = new Set(prev) if (next.has(id)) next.delete(id) else next.add(id) return next }) }, []) const selectAll = useCallback(() => { setSelectedIds(new Set(filteredAssets.map((a) => a.id))) }, [filteredAssets]) const deselectAll = useCallback(() => { setSelectedIds(new Set()) }, []) return { selectedIds, setSelectedIds, toggleSelect, selectAll, deselectAll, selectedCount: selectedIds.size, } }