'use client' import type { Placement } from '@langgenius/dify-ui/dropdown-menu' import type { FC } from 'react' import { cn } from '@langgenius/dify-ui/cn' import { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuSeparator, DropdownMenuTrigger, } from '@langgenius/dify-ui/dropdown-menu' import { useSuspenseQuery } from '@tanstack/react-query' import * as React from 'react' import { useTranslation } from 'react-i18next' import { systemFeaturesQueryOptions } from '@/service/system-features' import { PluginSource } from '../types' type Props = { source: PluginSource onInfo: () => void onCheckVersion: () => void onRemove: () => void detailUrl: string placement?: Placement sideOffset?: number alignOffset?: number popupClassName?: string } const OperationDropdown: FC = ({ source, detailUrl, onInfo, onCheckVersion, onRemove, placement = 'bottom-end', sideOffset = 4, alignOffset = 0, popupClassName, }) => { const { t } = useTranslation() const [open, setOpen] = React.useState(false) const { data: enable_marketplace } = useSuspenseQuery({ ...systemFeaturesQueryOptions(), select: s => s.enable_marketplace, }) return ( {source === PluginSource.github && ( {t('detailPanel.operation.info', { ns: 'plugin' })} )} {source === PluginSource.github && ( {t('detailPanel.operation.checkUpdate', { ns: 'plugin' })} )} {(source === PluginSource.marketplace || source === PluginSource.github) && enable_marketplace && ( }> {t('detailPanel.operation.viewDetail', { ns: 'plugin' })} )} {(source === PluginSource.marketplace || source === PluginSource.github) && enable_marketplace && ( )} {t('detailPanel.operation.remove', { ns: 'plugin' })} ) } export default React.memo(OperationDropdown)