import React, { useCallback, useRef, useState } from 'react' import { RiMenuLine, } from '@remixicon/react' import { PortalToFollowElem, PortalToFollowElemContent, PortalToFollowElemTrigger, } from '@/app/components/base/portal-to-follow-elem' import AppIcon from '../base/app-icon' import Divider from '../base/divider' import NavLink from './navLink' import type { NavIcon } from './navLink' import cn from '@/utils/classnames' import { useDatasetDetailContextWithSelector } from '@/context/dataset-detail' import Effect from '../base/effect' import Dropdown from './dataset-info/dropdown' import type { DataSet } from '@/models/datasets' import { DOC_FORM_TEXT } from '@/models/datasets' import { useKnowledge } from '@/hooks/use-knowledge' import { useTranslation } from 'react-i18next' import { useDatasetRelatedApps } from '@/service/knowledge/use-dataset' import ExtraInfo from '../datasets/extra-info' type DatasetSidebarDropdownProps = { navigation: Array<{ name: string href: string icon: NavIcon selectedIcon: NavIcon disabled?: boolean }> } const DatasetSidebarDropdown = ({ navigation, }: DatasetSidebarDropdownProps) => { const { t } = useTranslation() const dataset = useDatasetDetailContextWithSelector(state => state.dataset) as DataSet const { data: relatedApps } = useDatasetRelatedApps(dataset.id) const [open, doSetOpen] = useState(false) const openRef = useRef(open) const setOpen = useCallback((v: boolean) => { doSetOpen(v) openRef.current = v }, [doSetOpen]) const handleTrigger = useCallback(() => { setOpen(!openRef.current) }, [setOpen]) const iconInfo = dataset.icon_info || { icon: '📙', icon_type: 'emoji', icon_background: '#FFF4ED', icon_url: '', } const isExternalProvider = dataset.provider === 'external' const { formatIndexingTechniqueAndMethod } = useKnowledge() if (!dataset) return null return ( <>
{dataset.description}
)}