| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768 | 
							- import { useMemo } from 'react'
 - import { useTranslation } from 'react-i18next'
 - import { useGetLanguage } from '@/context/i18n'
 - import StartDefault from '@/app/components/workflow/nodes/start/default'
 - import EndDefault from '@/app/components/workflow/nodes/end/default'
 - import AnswerDefault from '@/app/components/workflow/nodes/answer/default'
 - import { WORKFLOW_COMMON_NODES } from '@/app/components/workflow/constants/node'
 - import type { AvailableNodesMetaData } from '@/app/components/workflow/hooks-store/store'
 - import { useIsChatMode } from './use-is-chat-mode'
 - import { BlockEnum } from '@/app/components/workflow/types'
 - 
 - export const useAvailableNodesMetaData = () => {
 -   const { t } = useTranslation()
 -   const isChatMode = useIsChatMode()
 -   const language = useGetLanguage()
 - 
 -   const mergedNodesMetaData = useMemo(() => [
 -     ...WORKFLOW_COMMON_NODES,
 -     StartDefault,
 -     ...(
 -       isChatMode
 -         ? [AnswerDefault]
 -         : [EndDefault]
 -     ),
 -   ], [isChatMode])
 - 
 -   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,
 -         [BlockEnum.VariableAssigner]: availableNodesMetaDataMap?.[BlockEnum.VariableAggregator],
 -       },
 -     }
 -   }, [availableNodesMetaData, availableNodesMetaDataMap])
 - }
 
 
  |