'use client' // Libraries import { useRef, useState } from 'react' import { useTranslation } from 'react-i18next' import { useDebounceFn } from 'ahooks' import useSWR from 'swr' // Components import Datasets from './Datasets' import DatasetFooter from './DatasetFooter' import ApiServer from './ApiServer' import Doc from './Doc' import TabSliderNew from '@/app/components/base/tab-slider-new' import SearchInput from '@/app/components/base/search-input' import TagManagementModal from '@/app/components/base/tag-management' import TagFilter from '@/app/components/base/tag-management/filter' // Services import { fetchDatasetApiBaseUrl } from '@/service/datasets' // Hooks import { useTabSearchParams } from '@/hooks/use-tab-searchparams' import { useStore as useTagStore } from '@/app/components/base/tag-management/store' const Container = () => { const { t } = useTranslation() const showTagManagementModal = useTagStore(s => s.showTagManagementModal) const options = [ { value: 'dataset', text: t('dataset.datasets') }, { value: 'api', text: t('dataset.datasetsApi') }, ] const [activeTab, setActiveTab] = useTabSearchParams({ defaultTab: 'dataset', }) const containerRef = useRef(null) const { data } = useSWR(activeTab === 'dataset' ? null : '/datasets/api-base-info', fetchDatasetApiBaseUrl) const [keywords, setKeywords] = useState('') const [searchKeywords, setSearchKeywords] = useState('') const { run: handleSearch } = useDebounceFn(() => { setSearchKeywords(keywords) }, { wait: 500 }) const handleKeywordsChange = (value: string) => { setKeywords(value) handleSearch() } const [tagFilterValue, setTagFilterValue] = useState([]) const [tagIDs, setTagIDs] = useState([]) const { run: handleTagsUpdate } = useDebounceFn(() => { setTagIDs(tagFilterValue) }, { wait: 500 }) const handleTagsChange = (value: string[]) => { setTagFilterValue(value) handleTagsUpdate() } return (
setActiveTab(newActiveTab)} options={options} /> {activeTab === 'dataset' && (
)} {activeTab === 'api' && data && }
{activeTab === 'dataset' && ( <> {showTagManagementModal && ( )} )} {activeTab === 'api' && data && }
) } export default Container