feat: last run frontend (#21369)

The frontend of feat: Persist Variables for Enhanced Debugging Workflow (#20699).

Co-authored-by: jZonG <jzongcode@gmail.com>
This commit is contained in:
Joel
2025-06-24 09:10:30 +08:00
committed by GitHub
parent 10b738a296
commit 1a1bfd4048
122 changed files with 5888 additions and 2061 deletions

View File

@@ -0,0 +1,55 @@
import type { MutableRefObject } from 'react'
import type { InputVar, ValueSelector, Variable } from '@/app/components/workflow/types'
import { useMemo } from 'react'
import useNodeCrud from '../_base/hooks/use-node-crud'
import { type AssignerNodeType, WriteMode } from './types'
import { writeModeTypesNum } from './types'
type Params = {
id: string,
payload: AssignerNodeType,
runInputData: Record<string, any>
runInputDataRef: MutableRefObject<Record<string, any>>
getInputVars: (textList: string[]) => InputVar[]
setRunInputData: (data: Record<string, any>) => void
toVarInputs: (variables: Variable[]) => InputVar[]
varSelectorsToVarInputs: (variables: ValueSelector[]) => InputVar[]
}
const useSingleRunFormParams = ({
id,
payload,
runInputData,
setRunInputData,
varSelectorsToVarInputs,
}: Params) => {
const { inputs } = useNodeCrud<AssignerNodeType>(id, payload)
const vars = inputs.items.filter((item) => {
return item.operation !== WriteMode.clear && item.operation !== WriteMode.set
&& item.operation !== WriteMode.removeFirst && item.operation !== WriteMode.removeLast
&& !writeModeTypesNum.includes(item.operation)
}).map(item => item.value as ValueSelector)
const forms = useMemo(() => {
const varInputs = varSelectorsToVarInputs(vars)
return [
{
inputs: varInputs,
values: runInputData,
onChange: setRunInputData,
},
]
}, [runInputData, setRunInputData, varSelectorsToVarInputs, vars])
const getDependentVars = () => {
return vars
}
return {
forms,
getDependentVars,
}
}
export default useSingleRunFormParams