import { cloneDeep } from "lodash"; import { forwardRef, useEffect, useState } from "react"; import ShadTooltip from "../../components/ShadTooltipComponent"; import CodeAreaComponent from "../../components/codeAreaComponent"; import DictComponent from "../../components/dictComponent"; import Dropdown from "../../components/dropdownComponent"; import FloatComponent from "../../components/floatComponent"; import IconComponent from "../../components/genericIconComponent"; import InputFileComponent from "../../components/inputFileComponent"; import InputGlobalComponent from "../../components/inputGlobalComponent"; import InputListComponent from "../../components/inputListComponent"; import IntComponent from "../../components/intComponent"; import KeypairListComponent from "../../components/keypairListComponent"; import PromptAreaComponent from "../../components/promptComponent"; import TextAreaComponent from "../../components/textAreaComponent"; import ToggleShadComponent from "../../components/toggleShadComponent"; import { Badge } from "../../components/ui/badge"; import { Button } from "../../components/ui/button"; import { Table, TableBody, TableCell, TableHead, TableHeader, TableRow, } from "../../components/ui/table"; import { LANGFLOW_SUPPORTED_TYPES, limitScrollFieldsModal, } from "../../constants/constants"; import useFlowStore from "../../stores/flowStore"; import { NodeDataType } from "../../types/flow"; import { convertObjToArray, convertValuesToNumbers, hasDuplicateKeys, scapedJSONStringfy, } from "../../utils/reactflowUtils"; import { classNames } from "../../utils/utils"; import BaseModal from "../baseModal"; const EditNodeModal = forwardRef( ( { data, nodeLength, open, setOpen, }: { data: NodeDataType; nodeLength: number; open: boolean; setOpen: (open: boolean) => void; }, ref ) => { const [myData, setMyData] = useState(data); const edges = useFlowStore((state) => state.edges); const setNode = useFlowStore((state) => state.setNode); function changeAdvanced(n) { setMyData((old) => { let newData = cloneDeep(old); newData.node!.template[n].advanced = !newData.node!.template[n].advanced; return newData; }); } const handleOnNewValue = (newValue: any, name) => { setMyData((old) => { let newData = cloneDeep(old); newData.node!.template[name].value = newValue; return newData; }); }; useEffect(() => { if (open) { setMyData(data); // reset data to what it is on node when opening modal } }, [open]); const [errorDuplicateKey, setErrorDuplicateKey] = useState(false); return ( { setMyData(data); }} > <> {myData.type} ID: {myData.id}
Parameters
limitScrollFieldsModal ? "overflow-scroll overflow-x-hidden custom-scroll" : "" )} > {nodeLength > 0 && (
PARAM VALUE SHOW {Object.keys(myData.node!.template) .filter( (templateParam) => templateParam.charAt(0) !== "_" && myData.node?.template[templateParam].show && LANGFLOW_SUPPORTED_TYPES.has( myData.node.template[templateParam].type ) ) .map((templateParam, index) => { let id = { inputTypes: myData.node!.template[templateParam].input_types, type: myData.node!.template[templateParam].type, id: myData.id, fieldName: templateParam, }; let disabled = edges.some( (edge) => edge.targetHandle === scapedJSONStringfy( myData.node!.template[templateParam].proxy ? { ...id, proxy: myData.node?.template[templateParam] .proxy, } : id ) ) ?? false; return ( ); })}
)}
); } ); export default EditNodeModal;