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.6KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. import type { MutableRefObject } from 'react'
  2. import type { InputVar, ValueSelector, Variable } from '@/app/components/workflow/types'
  3. import { useMemo } from 'react'
  4. import useNodeCrud from '../_base/hooks/use-node-crud'
  5. import { type AssignerNodeType, WriteMode } from './types'
  6. import { writeModeTypesNum } from './types'
  7. type Params = {
  8. id: string,
  9. payload: AssignerNodeType,
  10. runInputData: Record<string, any>
  11. runInputDataRef: MutableRefObject<Record<string, any>>
  12. getInputVars: (textList: string[]) => InputVar[]
  13. setRunInputData: (data: Record<string, any>) => void
  14. toVarInputs: (variables: Variable[]) => InputVar[]
  15. varSelectorsToVarInputs: (variables: ValueSelector[]) => InputVar[]
  16. }
  17. const useSingleRunFormParams = ({
  18. id,
  19. payload,
  20. runInputData,
  21. setRunInputData,
  22. varSelectorsToVarInputs,
  23. }: Params) => {
  24. const { inputs } = useNodeCrud<AssignerNodeType>(id, payload)
  25. const vars = inputs.items.filter((item) => {
  26. return item.operation !== WriteMode.clear && item.operation !== WriteMode.set
  27. && item.operation !== WriteMode.removeFirst && item.operation !== WriteMode.removeLast
  28. && !writeModeTypesNum.includes(item.operation)
  29. }).map(item => item.value as ValueSelector)
  30. const forms = useMemo(() => {
  31. const varInputs = varSelectorsToVarInputs(vars)
  32. return [
  33. {
  34. inputs: varInputs,
  35. values: runInputData,
  36. onChange: setRunInputData,
  37. },
  38. ]
  39. }, [runInputData, setRunInputData, varSelectorsToVarInputs, vars])
  40. const getDependentVars = () => {
  41. return vars
  42. }
  43. return {
  44. forms,
  45. getDependentVars,
  46. }
  47. }
  48. export default useSingleRunFormParams