| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153 | 
							- import { useSetModalState } from '@/hooks/common-hooks';
 - import { Node, NodeMouseHandler } from '@xyflow/react';
 - import get from 'lodash/get';
 - import { useCallback, useEffect } from 'react';
 - import { Operator } from '../constant';
 - import { BeginQuery } from '../interface';
 - import useGraphStore from '../store';
 - import { useGetBeginNodeDataQuery } from './use-get-begin-query';
 - import { useSaveGraph } from './use-save-graph';
 - 
 - export const useShowFormDrawer = () => {
 -   const {
 -     clickedNodeId: clickNodeId,
 -     setClickedNodeId,
 -     getNode,
 -   } = useGraphStore((state) => state);
 -   const {
 -     visible: formDrawerVisible,
 -     hideModal: hideFormDrawer,
 -     showModal: showFormDrawer,
 -   } = useSetModalState();
 - 
 -   const handleShow = useCallback(
 -     (node: Node) => {
 -       setClickedNodeId(node.id);
 -       showFormDrawer();
 -     },
 -     [showFormDrawer, setClickedNodeId],
 -   );
 - 
 -   return {
 -     formDrawerVisible,
 -     hideFormDrawer,
 -     showFormDrawer: handleShow,
 -     clickedNode: getNode(clickNodeId),
 -   };
 - };
 - 
 - export const useShowSingleDebugDrawer = () => {
 -   const { visible, showModal, hideModal } = useSetModalState();
 -   const { saveGraph } = useSaveGraph();
 - 
 -   const showSingleDebugDrawer = useCallback(async () => {
 -     const saveRet = await saveGraph();
 -     if (saveRet?.code === 0) {
 -       showModal();
 -     }
 -   }, [saveGraph, showModal]);
 - 
 -   return {
 -     singleDebugDrawerVisible: visible,
 -     hideSingleDebugDrawer: hideModal,
 -     showSingleDebugDrawer,
 -   };
 - };
 - 
 - const ExcludedNodes = [Operator.IterationStart, Operator.Note];
 - 
 - export function useShowDrawer({
 -   drawerVisible,
 -   hideDrawer,
 - }: {
 -   drawerVisible: boolean;
 -   hideDrawer(): void;
 - }) {
 -   const {
 -     visible: runVisible,
 -     showModal: showRunModal,
 -     hideModal: hideRunModal,
 -   } = useSetModalState();
 -   const {
 -     visible: chatVisible,
 -     showModal: showChatModal,
 -     hideModal: hideChatModal,
 -   } = useSetModalState();
 -   const {
 -     singleDebugDrawerVisible,
 -     showSingleDebugDrawer,
 -     hideSingleDebugDrawer,
 -   } = useShowSingleDebugDrawer();
 -   const { formDrawerVisible, hideFormDrawer, showFormDrawer, clickedNode } =
 -     useShowFormDrawer();
 -   const getBeginNodeDataQuery = useGetBeginNodeDataQuery();
 - 
 -   useEffect(() => {
 -     if (drawerVisible) {
 -       const query: BeginQuery[] = getBeginNodeDataQuery();
 -       if (query.length > 0) {
 -         showRunModal();
 -         hideChatModal();
 -       } else {
 -         showChatModal();
 -         hideRunModal();
 -       }
 -     }
 -   }, [
 -     hideChatModal,
 -     hideRunModal,
 -     showChatModal,
 -     showRunModal,
 -     drawerVisible,
 -     getBeginNodeDataQuery,
 -   ]);
 - 
 -   const hideRunOrChatDrawer = useCallback(() => {
 -     hideChatModal();
 -     hideRunModal();
 -     hideDrawer();
 -   }, [hideChatModal, hideDrawer, hideRunModal]);
 - 
 -   const onPaneClick = useCallback(() => {
 -     hideFormDrawer();
 -   }, [hideFormDrawer]);
 - 
 -   const onNodeClick: NodeMouseHandler = useCallback(
 -     (e, node) => {
 -       if (!ExcludedNodes.some((x) => x === node.data.label)) {
 -         hideSingleDebugDrawer();
 -         hideRunOrChatDrawer();
 -         showFormDrawer(node);
 -       }
 -       // handle single debug icon click
 -       if (
 -         get(e.target, 'dataset.play') === 'true' ||
 -         get(e.target, 'parentNode.dataset.play') === 'true'
 -       ) {
 -         showSingleDebugDrawer();
 -       }
 -     },
 -     [
 -       hideRunOrChatDrawer,
 -       hideSingleDebugDrawer,
 -       showFormDrawer,
 -       showSingleDebugDrawer,
 -     ],
 -   );
 - 
 -   return {
 -     chatVisible,
 -     runVisible,
 -     onPaneClick,
 -     singleDebugDrawerVisible,
 -     showSingleDebugDrawer,
 -     hideSingleDebugDrawer,
 -     formDrawerVisible,
 -     showFormDrawer,
 -     clickedNode,
 -     onNodeClick,
 -     hideFormDrawer,
 -     hideRunOrChatDrawer,
 -     showChatModal,
 -   };
 - }
 
 
  |