import { IconFontFill } from '@/components/icon-font'; import { Button } from '@/components/ui/button'; import { Switch } from '@/components/ui/switch'; import { Tooltip, TooltipContent, TooltipTrigger, } from '@/components/ui/tooltip'; import { useNavigatePage } from '@/hooks/logic-hooks/navigate-hooks'; import { IConnector } from '@/interfaces/database/knowledge'; import { delSourceModal } from '@/pages/user-setting/data-source/component/delete-source-modal'; import { useDataSourceInfo } from '@/pages/user-setting/data-source/contant'; import { useDataSourceRebuild } from '@/pages/user-setting/data-source/hooks'; import { IDataSourceBase } from '@/pages/user-setting/data-source/interface'; import { Link, Settings, Unlink } from 'lucide-react'; import { useMemo, useState } from 'react'; import { useTranslation } from 'react-i18next'; import LinkDataSourceModal from './link-data-source-modal'; export type IDataSourceNodeProps = IConnector & { icon: React.ReactNode; }; export interface ILinkDataSourceProps { data?: IConnector[]; handleLinkOrEditSubmit?: (data: IDataSourceBase[] | undefined) => void; unbindFunc?: (item: DataSourceItemProps) => void; handleAutoParse?: (option: { source_id: string; isAutoParse: boolean; }) => void; } interface DataSourceItemProps extends IDataSourceNodeProps { openLinkModalFunc?: (open: boolean, data?: IDataSourceNodeProps) => void; unbindFunc?: (item: DataSourceItemProps) => void; handleAutoParse?: (option: { source_id: string; isAutoParse: boolean; }) => void; } const DataSourceItem = (props: DataSourceItemProps) => { const { dataSourceInfo } = useDataSourceInfo(); const { t } = useTranslation(); const { id, name, icon, source, auto_parse, unbindFunc, handleAutoParse } = props; const { navigateToDataSourceDetail } = useNavigatePage(); const { handleRebuild } = useDataSourceRebuild(); const toDetail = (id: string) => { navigateToDataSourceDetail(id); }; return (