'use client' import type { FC } from 'react' import React, { useCallback, useRef, useState } from 'react' import { useTranslation } from 'react-i18next' import { RiDeleteBinLine, RiEditLine, RiMoreFill, } from '@remixicon/react' import ActionButton from '@/app/components/base/action-button' import { PortalToFollowElem, PortalToFollowElemContent, PortalToFollowElemTrigger, } from '@/app/components/base/portal-to-follow-elem' import cn from '@/utils/classnames' type Props = { inCard?: boolean onOpenChange?: (open: boolean) => void onEdit: () => void onRemove: () => void } const OperationDropdown: FC = ({ inCard, onOpenChange, onEdit, onRemove, }) => { const { t } = useTranslation() const [open, doSetOpen] = useState(false) const openRef = useRef(open) const setOpen = useCallback((v: boolean) => { doSetOpen(v) openRef.current = v onOpenChange?.(v) }, [doSetOpen]) const handleTrigger = useCallback(() => { setOpen(!openRef.current) }, [setOpen]) return (
{ onEdit() handleTrigger() }} >
{t('tools.mcp.operation.edit')}
{ onRemove() handleTrigger() }} >
{t('tools.mcp.operation.remove')}
) } export default React.memo(OperationDropdown)