fix: Inconsistency Between Actual and Debug Input Variables (#6055)

This commit is contained in:
AIxGEEK 2024-07-08 22:27:55 +08:00 committed by GitHub
parent 0046ef7707
commit 22aaf8960b
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 30 additions and 3 deletions

View File

@ -1,6 +1,6 @@
'use client'
import type { FC } from 'react'
import React, { useCallback } from 'react'
import React, { useCallback, useMemo } from 'react'
import produce from 'immer'
import cn from 'classnames'
import type { InputVar } from '../../../../types'
@ -24,14 +24,39 @@ const Form: FC<Props> = ({
values,
onChange,
}) => {
const mapKeysWithSameValueSelector = useMemo(() => {
const keysWithSameValueSelector = (key: string) => {
const targetValueSelector = inputs.find(
item => item.variable === key,
)?.value_selector
if (!targetValueSelector)
return [key]
const result: string[] = []
inputs.forEach((item) => {
if (item.value_selector?.join('.') === targetValueSelector.join('.'))
result.push(item.variable)
})
return result
}
const m = new Map()
for (const input of inputs)
m.set(input.variable, keysWithSameValueSelector(input.variable))
return m
}, [inputs])
const handleChange = useCallback((key: string) => {
const mKeys = mapKeysWithSameValueSelector.get(key) ?? [key]
return (value: any) => {
const newValues = produce(values, (draft) => {
draft[key] = value
for (const k of mKeys)
draft[k] = value
})
onChange(newValues)
}
}, [values, onChange])
}, [values, onChange, mapKeysWithSameValueSelector])
const isArrayLikeType = [InputVarType.contexts, InputVarType.iterator].includes(inputs[0]?.type)
const isContext = inputs[0]?.type === InputVarType.contexts
const handleAddContext = useCallback(() => {

View File

@ -337,6 +337,7 @@ const useOneStepRun = <T>({
variable: item.variable,
type: InputVarType.textInput,
required: true,
value_selector: item.value_selector,
}
}
return {

View File

@ -132,6 +132,7 @@ export type InputVar = {
required: boolean
hint?: string
options?: string[]
value_selector?: ValueSelector
}
export type ModelConfig = {