'use client' import type { FC } from 'react' import React, { useCallback, useMemo, useState } from 'react' import { useTranslation } from 'react-i18next' import s from './index.module.css' import NoData from './no-data' import Firecrawl from './firecrawl' import Watercrawl from './watercrawl' import JinaReader from './jina-reader' import cn from '@/utils/classnames' import { useModalContext } from '@/context/modal-context' import type { CrawlOptions, CrawlResultItem } from '@/models/datasets' import { DataSourceProvider } from '@/models/common' import { ENABLE_WEBSITE_FIRECRAWL, ENABLE_WEBSITE_JINAREADER, ENABLE_WEBSITE_WATERCRAWL } from '@/config' import type { DataSourceAuth } from '@/app/components/header/account-setting/data-source-page-new/types' type Props = { onPreview: (payload: CrawlResultItem) => void checkedCrawlResult: CrawlResultItem[] onCheckedCrawlResultChange: (payload: CrawlResultItem[]) => void onCrawlProviderChange: (provider: DataSourceProvider) => void onJobIdChange: (jobId: string) => void crawlOptions: CrawlOptions onCrawlOptionsChange: (payload: CrawlOptions) => void authedDataSourceList: DataSourceAuth[] } const Website: FC = ({ onPreview, checkedCrawlResult, onCheckedCrawlResultChange, onCrawlProviderChange, onJobIdChange, crawlOptions, onCrawlOptionsChange, authedDataSourceList, }) => { const { t } = useTranslation() const { setShowAccountSettingModal } = useModalContext() const [selectedProvider, setSelectedProvider] = useState(DataSourceProvider.jinaReader) const availableProviders = useMemo(() => authedDataSourceList.filter((item) => { return [ DataSourceProvider.jinaReader, DataSourceProvider.fireCrawl, DataSourceProvider.waterCrawl].includes(item.provider as DataSourceProvider) && item.credentials_list.length > 0 }), [authedDataSourceList]) const handleOnConfig = useCallback(() => { setShowAccountSettingModal({ payload: 'data-source', }) }, [setShowAccountSettingModal]) const source = availableProviders.find(source => source.provider === selectedProvider) return (
{t('datasetCreation.stepOne.website.chooseProvider')}
{ENABLE_WEBSITE_JINAREADER && } {ENABLE_WEBSITE_FIRECRAWL && } {ENABLE_WEBSITE_WATERCRAWL && }
{source && selectedProvider === DataSourceProvider.fireCrawl && ( )} {source && selectedProvider === DataSourceProvider.waterCrawl && ( )} {source && selectedProvider === DataSourceProvider.jinaReader && ( )} {!source && ( )}
) } export default React.memo(Website)