You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

use-single-run-form-params.ts 1.7KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. import type { MutableRefObject } from 'react'
  2. import type { InputVar, Variable } from '@/app/components/workflow/types'
  3. import { useCallback, useMemo } from 'react'
  4. import useNodeCrud from '../_base/hooks/use-node-crud'
  5. import type { CodeNodeType } from './types'
  6. type Params = {
  7. id: string,
  8. payload: CodeNodeType,
  9. runInputData: Record<string, any>
  10. runInputDataRef: MutableRefObject<Record<string, any>>
  11. getInputVars: (textList: string[]) => InputVar[]
  12. setRunInputData: (data: Record<string, any>) => void
  13. toVarInputs: (variables: Variable[]) => InputVar[]
  14. }
  15. const useSingleRunFormParams = ({
  16. id,
  17. payload,
  18. runInputData,
  19. toVarInputs,
  20. setRunInputData,
  21. }: Params) => {
  22. const { inputs } = useNodeCrud<CodeNodeType>(id, payload)
  23. const varInputs = toVarInputs(inputs.variables)
  24. const setInputVarValues = useCallback((newPayload: Record<string, any>) => {
  25. setRunInputData(newPayload)
  26. }, [setRunInputData])
  27. const inputVarValues = (() => {
  28. const vars: Record<string, any> = {}
  29. Object.keys(runInputData)
  30. .forEach((key) => {
  31. vars[key] = runInputData[key]
  32. })
  33. return vars
  34. })()
  35. const forms = useMemo(() => {
  36. return [
  37. {
  38. inputs: varInputs,
  39. values: inputVarValues,
  40. onChange: setInputVarValues,
  41. },
  42. ]
  43. }, [inputVarValues, setInputVarValues, varInputs])
  44. const getDependentVars = () => {
  45. return payload.variables.map(v => v.value_selector)
  46. }
  47. const getDependentVar = (variable: string) => {
  48. const varItem = payload.variables.find(v => v.variable === variable)
  49. if (varItem)
  50. return varItem.value_selector
  51. }
  52. return {
  53. forms,
  54. getDependentVars,
  55. getDependentVar,
  56. }
  57. }
  58. export default useSingleRunFormParams