import type { WorkflowProps } from '@/app/components/workflow' import { useCallback, useMemo, } from 'react' import { useFeaturesStore } from '@/app/components/base/features/hooks' import { WorkflowWithInnerContext } from '@/app/components/workflow' import { useWorkflowStore } from '@/app/components/workflow/store' import { useAvailableNodesMetaData, useConfigsMap, useDSL, useGetRunAndTraceUrl, useInspectVarsCrud, useNodesSyncDraft, useSetWorkflowVarsWithValue, useWorkflowRefreshDraft, useWorkflowRun, useWorkflowStartRun, } from '../hooks' import WorkflowChildren from './workflow-children' type WorkflowMainProps = Pick const WorkflowMain = ({ nodes, edges, viewport, }: WorkflowMainProps) => { const featuresStore = useFeaturesStore() const workflowStore = useWorkflowStore() const handleWorkflowDataUpdate = useCallback((payload: any) => { const { features, conversation_variables, environment_variables, } = payload if (features && featuresStore) { const { setFeatures } = featuresStore.getState() setFeatures(features) } if (conversation_variables) { const { setConversationVariables } = workflowStore.getState() setConversationVariables(conversation_variables) } if (environment_variables) { const { setEnvironmentVariables } = workflowStore.getState() setEnvironmentVariables(environment_variables) } }, [featuresStore, workflowStore]) const { doSyncWorkflowDraft, syncWorkflowDraftWhenPageClose, } = useNodesSyncDraft() const { handleRefreshWorkflowDraft } = useWorkflowRefreshDraft() const { handleBackupDraft, handleLoadBackupDraft, handleRestoreFromPublishedWorkflow, handleRun, handleStopRun, } = useWorkflowRun() const { handleStartWorkflowRun, handleWorkflowStartRunInChatflow, handleWorkflowStartRunInWorkflow, handleWorkflowTriggerScheduleRunInWorkflow, handleWorkflowTriggerWebhookRunInWorkflow, handleWorkflowTriggerPluginRunInWorkflow, handleWorkflowRunAllTriggersInWorkflow, } = useWorkflowStartRun() const availableNodesMetaData = useAvailableNodesMetaData() const { getWorkflowRunAndTraceUrl } = useGetRunAndTraceUrl() const { exportCheck, handleExportDSL, } = useDSL() const configsMap = useConfigsMap() const { fetchInspectVars } = useSetWorkflowVarsWithValue({ ...configsMap, }) const { hasNodeInspectVars, hasSetInspectVar, fetchInspectVarValue, editInspectVarValue, renameInspectVarName, appendNodeInspectVars, deleteInspectVar, deleteNodeInspectorVars, deleteAllInspectorVars, isInspectVarEdited, resetToLastRunVar, invalidateSysVarValues, resetConversationVar, invalidateConversationVarValues, } = useInspectVarsCrud() const hooksStore = useMemo(() => { return { syncWorkflowDraftWhenPageClose, doSyncWorkflowDraft, handleRefreshWorkflowDraft, handleBackupDraft, handleLoadBackupDraft, handleRestoreFromPublishedWorkflow, handleRun, handleStopRun, handleStartWorkflowRun, handleWorkflowStartRunInChatflow, handleWorkflowStartRunInWorkflow, handleWorkflowTriggerScheduleRunInWorkflow, handleWorkflowTriggerWebhookRunInWorkflow, handleWorkflowTriggerPluginRunInWorkflow, handleWorkflowRunAllTriggersInWorkflow, availableNodesMetaData, getWorkflowRunAndTraceUrl, exportCheck, handleExportDSL, fetchInspectVars, hasNodeInspectVars, hasSetInspectVar, fetchInspectVarValue, editInspectVarValue, renameInspectVarName, appendNodeInspectVars, deleteInspectVar, deleteNodeInspectorVars, deleteAllInspectorVars, isInspectVarEdited, resetToLastRunVar, invalidateSysVarValues, resetConversationVar, invalidateConversationVarValues, configsMap, } }, [ syncWorkflowDraftWhenPageClose, doSyncWorkflowDraft, handleRefreshWorkflowDraft, handleBackupDraft, handleLoadBackupDraft, handleRestoreFromPublishedWorkflow, handleRun, handleStopRun, handleStartWorkflowRun, handleWorkflowStartRunInChatflow, handleWorkflowStartRunInWorkflow, handleWorkflowTriggerScheduleRunInWorkflow, handleWorkflowTriggerWebhookRunInWorkflow, handleWorkflowTriggerPluginRunInWorkflow, handleWorkflowRunAllTriggersInWorkflow, availableNodesMetaData, getWorkflowRunAndTraceUrl, exportCheck, handleExportDSL, fetchInspectVars, hasNodeInspectVars, hasSetInspectVar, fetchInspectVarValue, editInspectVarValue, renameInspectVarName, appendNodeInspectVars, deleteInspectVar, deleteNodeInspectorVars, deleteAllInspectorVars, isInspectVarEdited, resetToLastRunVar, invalidateSysVarValues, resetConversationVar, invalidateConversationVarValues, configsMap, ]) return ( ) } export default WorkflowMain