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.

index.tsx 1.3KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. import {
  2. useMemo,
  3. } from 'react'
  4. import type { NodeSelectorProps } from './main'
  5. import NodeSelector from './main'
  6. import { useHooksStore } from '@/app/components/workflow/hooks-store/store'
  7. import { BlockEnum } from '@/app/components/workflow/types'
  8. import { useStore } from '../store'
  9. const NodeSelectorWrapper = (props: NodeSelectorProps) => {
  10. const availableNodesMetaData = useHooksStore(s => s.availableNodesMetaData)
  11. const dataSourceList = useStore(s => s.dataSourceList)
  12. const blocks = useMemo(() => {
  13. const result = availableNodesMetaData?.nodes || []
  14. return result.filter((block) => {
  15. if (block.metaData.type === BlockEnum.Start)
  16. return false
  17. if (block.metaData.type === BlockEnum.DataSource)
  18. return false
  19. if (block.metaData.type === BlockEnum.Tool)
  20. return false
  21. if (block.metaData.type === BlockEnum.IterationStart)
  22. return false
  23. if (block.metaData.type === BlockEnum.LoopStart)
  24. return false
  25. if (block.metaData.type === BlockEnum.DataSourceEmpty)
  26. return false
  27. return true
  28. })
  29. }, [availableNodesMetaData?.nodes])
  30. return (
  31. <NodeSelector
  32. {...props}
  33. blocks={blocks}
  34. dataSources={dataSourceList || []}
  35. />
  36. )
  37. }
  38. export default NodeSelectorWrapper