| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071 | 
							- 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'
 - import { BlockEnum } from '@/app/components/workflow/types'
 - 
 - export const useAvailableNodesMetaData = () => {
 -   const { t } = useTranslation()
 -   const language = useGetLanguage()
 - 
 -   const mergedNodesMetaData = useMemo(() => [
 -     ...WORKFLOW_COMMON_NODES,
 -     {
 -       ...dataSourceDefault,
 -       defaultValue: {
 -         ...dataSourceDefault.defaultValue,
 -         _dataSourceStartToAdd: true,
 -       },
 -     },
 -     knowledgeBaseDefault,
 -     dataSourceEmptyDefault,
 -   ], [])
 - 
 -   const helpLinkUri = useMemo(() => {
 -     if (language === 'zh_Hans')
 -       return 'https://docs.dify.ai/zh-hans/guides/knowledge-base/knowledge-pipeline/knowledge-pipeline-orchestration#%E6%AD%A5%E9%AA%A4%E4%B8%80%EF%BC%9A%E6%95%B0%E6%8D%AE%E6%BA%90%E9%85%8D%E7%BD%AE'
 -     if (language === 'ja_JP')
 -       return 'https://docs.dify.ai/ja-jp/guides/knowledge-base/knowledge-pipeline/knowledge-pipeline-orchestration#%E3%82%B9%E3%83%86%E3%83%83%E3%83%971%EF%BC%9A%E3%83%87%E3%83%BC%E3%82%BF%E3%82%BD%E3%83%BC%E3%82%B9%E3%81%AE%E8%A8%AD%E5%AE%9A'
 - 
 -     return 'https://docs.dify.ai/en/guides/knowledge-base/knowledge-pipeline/knowledge-pipeline-orchestration#step-1%3A-data-source'
 -   }, [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,
 -       },
 -       defaultValue: {
 -         ...node.defaultValue,
 -         type: metaData.type,
 -         title,
 -       },
 -     }
 -   }), [mergedNodesMetaData, t])
 - 
 -   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,
 -         [BlockEnum.VariableAssigner]: availableNodesMetaDataMap?.[BlockEnum.VariableAggregator],
 -       },
 -     }
 -   }, [availableNodesMetaData, availableNodesMetaDataMap])
 - }
 
 
  |