import { useCallback, useMemo } from 'react' import { useStore, useWorkflowStore } from '@/app/components/workflow/store' import type { InputFieldEditorProps } from '../components/panel/input-field/editor' 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, } }