dify/web/app/components/datasets/documents/detail/completed/hooks/use-segment-selection.ts
Stephen Zhou a84c2d36a3
style: format with vp fmt (#38803)
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
2026-07-12 15:57:46 +00:00

51 lines
1.4 KiB
TypeScript

import { useCallback, useState } from 'react'
type UseSegmentSelectionReturn = {
selectedSegmentIds: string[]
onSelectedSegmentIdsChange: (segmentIds: string[]) => void
onCancelBatchOperation: () => void
clearSelection: () => void
}
type MergeCurrentPageSelectedSegmentIdsOptions = {
selectedSegmentIds: string[]
currentPageSegmentIds: string[]
nextCurrentPageSelectedSegmentIds: string[]
}
export const mergeCurrentPageSelectedSegmentIds = ({
selectedSegmentIds,
currentPageSegmentIds,
nextCurrentPageSelectedSegmentIds,
}: MergeCurrentPageSelectedSegmentIdsOptions) => {
const currentPageSegmentIdSet = new Set(currentPageSegmentIds)
const selectedSegmentIdsOutsideCurrentPage = selectedSegmentIds.filter(
(segmentId) => !currentPageSegmentIdSet.has(segmentId),
)
return [...selectedSegmentIdsOutsideCurrentPage, ...nextCurrentPageSelectedSegmentIds]
}
export const useSegmentSelection = (): UseSegmentSelectionReturn => {
const [selectedSegmentIds, setSelectedSegmentIds] = useState<string[]>([])
const onSelectedSegmentIdsChange = useCallback((segmentIds: string[]) => {
setSelectedSegmentIds(segmentIds)
}, [])
const onCancelBatchOperation = useCallback(() => {
setSelectedSegmentIds([])
}, [])
const clearSelection = useCallback(() => {
setSelectedSegmentIds([])
}, [])
return {
selectedSegmentIds,
onSelectedSegmentIdsChange,
onCancelBatchOperation,
clearSelection,
}
}