({
inputAnchor,
inputParam,
data,
disabled = false,
isAdditionalParams = false,
disablePadding = false,
parentParamForArray = null,
arrayIndex = null,
onHideNodeInfoDialog,
onCustomDataChange
})
| 128 | // ===========================|| NodeInputHandler ||=========================== // |
| 129 | |
| 130 | const NodeInputHandler = ({ |
| 131 | inputAnchor, |
| 132 | inputParam, |
| 133 | data, |
| 134 | disabled = false, |
| 135 | isAdditionalParams = false, |
| 136 | disablePadding = false, |
| 137 | parentParamForArray = null, |
| 138 | arrayIndex = null, |
| 139 | onHideNodeInfoDialog, |
| 140 | onCustomDataChange |
| 141 | }) => { |
| 142 | const { id: chatflowIdFromParams } = useParams() |
| 143 | const canvasChatflow = useSelector((state) => state.canvas.chatflow) |
| 144 | const chatflowId = chatflowIdFromParams || canvasChatflow?.id |
| 145 | |
| 146 | const theme = useTheme() |
| 147 | const customization = useSelector((state) => state.customization) |
| 148 | const ref = useRef(null) |
| 149 | const { reactFlowInstance, deleteEdge, onNodeDataChange } = useContext(flowContext) |
| 150 | const updateNodeInternals = useUpdateNodeInternals() |
| 151 | |
| 152 | useNotifier() |
| 153 | const dispatch = useDispatch() |
| 154 | const enqueueSnackbar = (...args) => dispatch(enqueueSnackbarAction(...args)) |
| 155 | const closeSnackbar = (...args) => dispatch(closeSnackbarAction(...args)) |
| 156 | |
| 157 | const [position, setPosition] = useState(0) |
| 158 | const [showExpandDialog, setShowExpandDialog] = useState(false) |
| 159 | const [expandDialogProps, setExpandDialogProps] = useState({}) |
| 160 | const [showExpandRichDialog, setShowExpandRichDialog] = useState(false) |
| 161 | const [expandRichDialogProps, setExpandRichDialogProps] = useState({}) |
| 162 | const [showAsyncOptionDialog, setAsyncOptionEditDialog] = useState('') |
| 163 | const [asyncOptionEditDialogProps, setAsyncOptionEditDialogProps] = useState({}) |
| 164 | const [reloadTimestamp, setReloadTimestamp] = useState(Date.now().toString()) |
| 165 | const [showFormatPromptValuesDialog, setShowFormatPromptValuesDialog] = useState(false) |
| 166 | const [formatPromptValuesDialogProps, setFormatPromptValuesDialogProps] = useState({}) |
| 167 | const [showPromptHubDialog, setShowPromptHubDialog] = useState(false) |
| 168 | const [showManageScrapedLinksDialog, setShowManageScrapedLinksDialog] = useState(false) |
| 169 | const [manageScrapedLinksDialogProps, setManageScrapedLinksDialogProps] = useState({}) |
| 170 | const [showInputHintDialog, setShowInputHintDialog] = useState(false) |
| 171 | const [inputHintDialogProps, setInputHintDialogProps] = useState({}) |
| 172 | const [showConditionDialog, setShowConditionDialog] = useState(false) |
| 173 | const [conditionDialogProps, setConditionDialogProps] = useState({}) |
| 174 | const [isNvidiaNIMDialogOpen, setIsNvidiaNIMDialogOpen] = useState(false) |
| 175 | const [tabValue, setTabValue] = useState(0) |
| 176 | |
| 177 | // Webhook secret — holds plaintext only for the current session (generate/regenerate response). |
| 178 | // Cleared on page reload; the configured state comes from canvasChatflow.webhookSecretConfigured. |
| 179 | const [webhookSecretPlaintext, setWebhookSecretPlaintext] = useState(null) |
| 180 | |
| 181 | const handleSetWebhookSecret = async () => { |
| 182 | if (!chatflowId) return |
| 183 | try { |
| 184 | const resp = await chatflowsApi.setWebhookSecret(chatflowId) |
| 185 | setWebhookSecretPlaintext(resp.data.webhookSecret) |
| 186 | dispatch({ type: SET_CHATFLOW, chatflow: { ...canvasChatflow, webhookSecretConfigured: true } }) |
| 187 | enqueueSnackbar({ |
nothing calls this directly
no test coverage detected