dify/web/app/components/rag-pipeline/hooks/use-input-field-panel.ts
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

50 lines
1.6 KiB
TypeScript

import type { InputFieldEditorProps } from '../components/panel/input-field/editor'
import { useCallback, useMemo } from 'react'
import { useStore, useWorkflowStore } from '@/app/components/workflow/store'
export const useInputFieldPanel = () => {
const workflowStore = useWorkflowStore()
const showInputFieldPreviewPanel = useStore((state) => state.showInputFieldPreviewPanel)
const inputFieldEditPanelProps = useStore((state) => state.inputFieldEditPanelProps)
const isPreviewing = useMemo(() => {
return showInputFieldPreviewPanel
}, [showInputFieldPreviewPanel])
const isEditing = useMemo(() => {
return !!inputFieldEditPanelProps
}, [inputFieldEditPanelProps])
const closeAllInputFieldPanels = useCallback(() => {
const { setShowInputFieldPanel, setShowInputFieldPreviewPanel, setInputFieldEditPanelProps } =
workflowStore.getState()
setShowInputFieldPanel?.(false)
setShowInputFieldPreviewPanel?.(false)
setInputFieldEditPanelProps?.(null)
}, [workflowStore])
const toggleInputFieldPreviewPanel = useCallback(() => {
const { showInputFieldPreviewPanel, setShowInputFieldPreviewPanel } = workflowStore.getState()
setShowInputFieldPreviewPanel?.(!showInputFieldPreviewPanel)
}, [workflowStore])
const toggleInputFieldEditPanel = useCallback(
(editContent: InputFieldEditorProps | null) => {
const { setInputFieldEditPanelProps } = workflowStore.getState()
setInputFieldEditPanelProps?.(editContent)
},
[workflowStore],
)
return {
closeAllInputFieldPanels,
toggleInputFieldPreviewPanel,
toggleInputFieldEditPanel,
isPreviewing,
isEditing,
}
}