mirror of
https://github.com/langgenius/dify.git
synced 2026-07-27 15:08:35 +08:00
50 lines
1.6 KiB
TypeScript
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,
|
|
}
|
|
}
|