| 
					
				 | 
			
			
				@@ -1,6 +1,7 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 'use client' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import type { FC } from 'react' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import React, { useEffect } from 'react' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import React, { useRef, useState } from 'react' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import { useGetState, useInfiniteScroll } from 'ahooks' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import cn from 'classnames' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import { useTranslation } from 'react-i18next' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import Link from 'next/link' 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -32,14 +33,33 @@ const SelectDataSet: FC<ISelectDataSetProps> = ({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   const [datasets, setDataSets] = React.useState<DataSet[] | null>(null) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   const hasNoData = !datasets || datasets?.length === 0 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   const canSelectMulti = true 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  useEffect(() => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    (async () => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      const { data } = await fetchDatasets({ url: '/datasets', params: { page: 1 } }) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      setDataSets(data) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      setLoaded(true) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      setSelected(data.filter(item => selectedIds.includes(item.id))) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    })() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  }, []) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  const listRef = useRef<HTMLDivElement>(null) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  const [page, setPage, getPage] = useGetState(1) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  const [isNoMore, setIsNoMore] = useState(false) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  useInfiniteScroll( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    async () => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      if (!isNoMore) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        const { data, has_more } = await fetchDatasets({ url: '/datasets', params: { page } }) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        setPage(getPage() + 1) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        setIsNoMore(!has_more) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        const newList = [...(datasets || []), ...data] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        setDataSets(newList) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        setLoaded(true) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        setSelected(newList.filter(item => selectedIds.includes(item.id))) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      return { list: [] } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      target: listRef, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      isNoMore: () => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        return isNoMore 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      reloadDeps: [isNoMore], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  ) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   const toggleSelect = (dataSet: DataSet) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     const isSelected = selected.some(item => item.id === dataSet.id) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     if (isSelected) { 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -83,7 +103,7 @@ const SelectDataSet: FC<ISelectDataSetProps> = ({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       {datasets && datasets?.length > 0 && ( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         <> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          <div className='mt-7 space-y-1 max-h-[286px] overflow-y-auto'> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          <div ref={listRef} className='mt-7 space-y-1 max-h-[286px] overflow-y-auto'> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             {datasets.map(item => ( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				               <div 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 key={item.id} 
			 |