dify/web/app/components/workflow/panel/global-variable-panel/index.tsx
Stephen Zhou a84c2d36a3
style: format with vp fmt (#38803)
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
2026-07-12 15:57:46 +00:00

99 lines
3.1 KiB
TypeScript

import type { GlobalVariable } from '../../types'
import { cn } from '@langgenius/dify-ui/cn'
import { RiCloseLine } from '@remixicon/react'
import { memo } from 'react'
import { useTranslation } from 'react-i18next'
import { useStore } from '@/app/components/workflow/store'
import { isInWorkflowPage } from '../../constants'
import { useIsChatMode } from '../../hooks'
import Item from './item'
const Panel = () => {
const { t } = useTranslation()
const isChatMode = useIsChatMode()
const setShowPanel = useStore((s) => s.setShowGlobalVariablePanel)
const isWorkflowPage = isInWorkflowPage()
const globalVariableList: GlobalVariable[] = [
...(isChatMode
? [
{
name: 'conversation_id',
value_type: 'string' as const,
description: t(($) => $['globalVar.fieldsDescription.conversationId'], {
ns: 'workflow',
}),
},
{
name: 'dialog_count',
value_type: 'number' as const,
description: t(($) => $['globalVar.fieldsDescription.dialogCount'], { ns: 'workflow' }),
},
]
: []),
{
name: 'user_id',
value_type: 'string',
description: t(($) => $['globalVar.fieldsDescription.userId'], { ns: 'workflow' }),
},
{
name: 'app_id',
value_type: 'string',
description: t(($) => $['globalVar.fieldsDescription.appId'], { ns: 'workflow' }),
},
{
name: 'workflow_id',
value_type: 'string',
description: t(($) => $['globalVar.fieldsDescription.workflowId'], { ns: 'workflow' }),
},
{
name: 'workflow_run_id',
value_type: 'string',
description: t(($) => $['globalVar.fieldsDescription.workflowRunId'], { ns: 'workflow' }),
},
// is workflow
...(isWorkflowPage && !isChatMode
? [
{
name: 'timestamp',
value_type: 'number' as const,
description: t(($) => $['globalVar.fieldsDescription.triggerTimestamp'], {
ns: 'workflow',
}),
},
]
: []),
]
return (
<div
className={cn(
'relative flex h-full w-[420px] flex-col rounded-l-2xl border border-components-panel-border bg-components-panel-bg-alt',
)}
>
<div className="flex shrink-0 items-center justify-between p-4 pb-0 system-xl-semibold text-text-primary">
{t(($) => $['globalVar.title'], { ns: 'workflow' })}
<div className="flex items-center">
<div
className="flex size-6 cursor-pointer items-center justify-center"
onClick={() => setShowPanel(false)}
>
<RiCloseLine className="size-4 text-text-tertiary" />
</div>
</div>
</div>
<div className="shrink-0 px-4 py-1 system-sm-regular text-text-tertiary">
{t(($) => $['globalVar.description'], { ns: 'workflow' })}
</div>
<div className="mt-4 grow overflow-y-auto rounded-b-2xl px-4">
{globalVariableList.map((item) => (
<Item key={item.name} payload={item} />
))}
</div>
</div>
)
}
export default memo(Panel)