import type { FC } from 'react' import { useTranslation } from 'react-i18next' import { memo } from 'react' import { RiAddLine } from '@remixicon/react' import type { DataSourceNodeType } from './types' import type { NodePanelProps } from '@/app/components/workflow/types' import { BoxGroupField } from '@/app/components/workflow/nodes/_base/components/layout' import OutputVars, { VarItem } from '@/app/components/workflow/nodes/_base/components/output-vars' import TagInput from '@/app/components/base/tag-input' import FieldList from '@/app/components/rag-pipeline/components/input-field/field-list/field-list-container' import { useFieldList } from '@/app/components/rag-pipeline/components/input-field/field-list/hooks' import InputFieldEditor from '@/app/components/rag-pipeline/components/input-field/editor' import { useNodesReadOnly } from '@/app/components/workflow/hooks' import { useConfig } from './hooks/use-config' import { OUTPUT_VARIABLES_MAP } from './constants' import ActionButton from '@/app/components/base/action-button' const Panel: FC> = ({ id, data }) => { const { t } = useTranslation() const { nodesReadOnly } = useNodesReadOnly() const { variables, provider_type, fileExtensions = [], } = data const { handleInputFieldVariablesChange, handleFileExtensionsChange, } = useConfig(id) const isLocalFile = provider_type === 'local_file' const { inputFields, handleListSortChange, handleRemoveField, handleOpenInputFieldEditor, showInputFieldEditor, editingField, handleSubmitField, handleCancelInputFieldEditor, } = useFieldList(variables, handleInputFieldVariablesChange, id) return (
{ !isLocalFile && ( { e.stopPropagation() handleOpenInputFieldEditor() }} > ), }, supportCollapse: true, }} > ) } { isLocalFile && (
) } { isLocalFile && ( ({ name: item.name, type: item.type, description: item.description, }))} /> ) } {showInputFieldEditor && ( )}
) } export default memo(Panel)