import type { FC } from 'react' import type { Dataset } from './index' import type { EventEmitterValue } from '@/context/event-emitter' import { Popover, PopoverContent, PopoverTrigger } from '@langgenius/dify-ui/popover' import { useState } from 'react' import { useTranslation } from 'react-i18next' import { useEventEmitterContextContext } from '@/context/event-emitter' import { UPDATE_DATASETS_EVENT_EMITTER } from '../../constants' import { useSelectOrDelete, useTrigger } from '../../hooks' import { DELETE_CONTEXT_BLOCK_COMMAND } from './index' type ContextBlockComponentProps = { nodeKey: string datasets?: Dataset[] onAddContext: () => void canNotAddContext?: boolean } const ContextBlockComponent: FC = ({ nodeKey, datasets = [], onAddContext, canNotAddContext, }) => { const { t } = useTranslation() const [ref, isSelected] = useSelectOrDelete(nodeKey, DELETE_CONTEXT_BLOCK_COMMAND) const [triggerRef, open, setOpen] = useTrigger() const { eventEmitter } = useEventEmitterContextContext() const [localDatasets, setLocalDatasets] = useState(datasets) eventEmitter?.useSubscription((event?: EventEmitterValue) => { if (typeof event === 'string') return if (event?.type === UPDATE_DATASETS_EVENT_EMITTER && Array.isArray(event.payload)) setLocalDatasets(event.payload as Dataset[]) }) return (
{t('promptEditor.context.item.title', { ns: 'common' })}
{!canNotAddContext && ( e.preventDefault()} > {localDatasets.length} )} />
{t('promptEditor.context.modal.title', { ns: 'common', num: localDatasets.length })}
{ localDatasets.map(dataset => (
{dataset.name}
)) }
{t('promptEditor.context.modal.footer', { ns: 'common' })}
)}
) } export default ContextBlockComponent