| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182 | 
							- import { useMemo } from 'react'
 - import { useTranslation } from 'react-i18next'
 - import { useGetLanguage } from '@/context/i18n'
 - import knowledgeBaseDefault from '@/app/components/workflow/nodes/knowledge-base/default'
 - import dataSourceDefault from '@/app/components/workflow/nodes/data-source/default'
 - import dataSourceEmptyDefault from '@/app/components/workflow/nodes/data-source-empty/default'
 - import { WORKFLOW_COMMON_NODES } from '@/app/components/workflow/constants/node'
 - import type { AvailableNodesMetaData } from '@/app/components/workflow/hooks-store/store'
 - 
 - export const useAvailableNodesMetaData = () => {
 -   const { t } = useTranslation()
 -   const language = useGetLanguage()
 - 
 -   const mergedNodesMetaData = useMemo(() => [
 -     ...WORKFLOW_COMMON_NODES,
 -     {
 -       ...dataSourceDefault,
 -       defaultValue: {
 -         ...dataSourceDefault.defaultValue,
 -         _dataSourceStartToAdd: true,
 -       },
 -       metaData: {
 -         ...dataSourceDefault.metaData,
 -         isStart: true,
 -         isRequired: true,
 -       },
 -     },
 -     {
 -       ...knowledgeBaseDefault,
 -       metaData: {
 -         ...knowledgeBaseDefault.metaData,
 -         isRequired: true,
 -       },
 -     },
 -     {
 -       ...dataSourceEmptyDefault,
 -       metaData: {
 -         ...dataSourceEmptyDefault.metaData,
 -         isUndeletable: true,
 -       },
 -     },
 -   ], [])
 - 
 -   const prefixLink = useMemo(() => {
 -     if (language === 'zh_Hans')
 -       return 'https://docs.dify.ai/zh-hans/guides/workflow/node/'
 - 
 -     return 'https://docs.dify.ai/guides/workflow/node/'
 -   }, [language])
 - 
 -   const availableNodesMetaData = useMemo(() => mergedNodesMetaData.map((node) => {
 -     const { metaData } = node
 -     const title = t(`workflow.blocks.${metaData.type}`)
 -     const description = t(`workflow.blocksAbout.${metaData.type}`)
 -     return {
 -       ...node,
 -       metaData: {
 -         ...metaData,
 -         title,
 -         description,
 -         helpLinkUri: `${prefixLink}${metaData.helpLinkUri}`,
 -       },
 -       defaultValue: {
 -         ...node.defaultValue,
 -         type: metaData.type,
 -         title,
 -       },
 -     }
 -   }), [mergedNodesMetaData, t, prefixLink])
 - 
 -   const availableNodesMetaDataMap = useMemo(() => availableNodesMetaData.reduce((acc, node) => {
 -     acc![node.metaData.type] = node
 -     return acc
 -   }, {} as AvailableNodesMetaData['nodesMap']), [availableNodesMetaData])
 - 
 -   return useMemo(() => {
 -     return {
 -       nodes: availableNodesMetaData,
 -       nodesMap: availableNodesMetaDataMap,
 -     }
 -   }, [availableNodesMetaData, availableNodesMetaDataMap])
 - }
 
 
  |