| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132 | 
							- import { useContext } from 'react'
 
- import {
 
-   create,
 
-   useStore as useZustandStore,
 
- } from 'zustand'
 
- import { debounce } from 'lodash-es'
 
- import type { Viewport } from 'reactflow'
 
- import type {
 
-   HelpLineHorizontalPosition,
 
-   HelpLineVerticalPosition,
 
- } from './help-line/types'
 
- import type {
 
-   Edge,
 
-   HistoryWorkflowData,
 
-   Node,
 
-   RunFile,
 
-   ToolWithProvider,
 
-   WorkflowRunningData,
 
- } from './types'
 
- import { WorkflowContext } from './context'
 
- type Shape = {
 
-   appId: string
 
-   workflowRunningData?: WorkflowRunningData
 
-   setWorkflowRunningData: (workflowData: WorkflowRunningData) => void
 
-   historyWorkflowData?: HistoryWorkflowData
 
-   setHistoryWorkflowData: (historyWorkflowData: HistoryWorkflowData) => void
 
-   showRunHistory: boolean
 
-   setShowRunHistory: (showRunHistory: boolean) => void
 
-   showFeaturesPanel: boolean
 
-   setShowFeaturesPanel: (showFeaturesPanel: boolean) => void
 
-   helpLineHorizontal?: HelpLineHorizontalPosition
 
-   setHelpLineHorizontal: (helpLineHorizontal?: HelpLineHorizontalPosition) => void
 
-   helpLineVertical?: HelpLineVerticalPosition
 
-   setHelpLineVertical: (helpLineVertical?: HelpLineVerticalPosition) => void
 
-   draftUpdatedAt: number
 
-   setDraftUpdatedAt: (draftUpdatedAt: number) => void
 
-   publishedAt: number
 
-   setPublishedAt: (publishedAt: number) => void
 
-   showInputsPanel: boolean
 
-   setShowInputsPanel: (showInputsPanel: boolean) => void
 
-   inputs: Record<string, string>
 
-   setInputs: (inputs: Record<string, string>) => void
 
-   files: RunFile[]
 
-   setFiles: (files: RunFile[]) => void
 
-   backupDraft?: {
 
-     nodes: Node[]
 
-     edges: Edge[]
 
-     viewport: Viewport
 
-     features: Record<string, any>
 
-   }
 
-   setBackupDraft: (backupDraft?: Shape['backupDraft']) => void
 
-   notInitialWorkflow: boolean
 
-   setNotInitialWorkflow: (notInitialWorkflow: boolean) => void
 
-   nodesDefaultConfigs: Record<string, any>
 
-   setNodesDefaultConfigs: (nodesDefaultConfigs: Record<string, any>) => void
 
-   nodeAnimation: boolean
 
-   setNodeAnimation: (nodeAnimation: boolean) => void
 
-   isRestoring: boolean
 
-   setIsRestoring: (isRestoring: boolean) => void
 
-   debouncedSyncWorkflowDraft: (fn: () => void) => void
 
-   buildInTools: ToolWithProvider[]
 
-   setBuildInTools: (tools: ToolWithProvider[]) => void
 
-   customTools: ToolWithProvider[]
 
-   setCustomTools: (tools: ToolWithProvider[]) => void
 
-   clipboardElements: Node[]
 
-   setClipboardElements: (clipboardElements: Node[]) => void
 
-   shortcutsDisabled: boolean
 
-   setShortcutsDisabled: (shortcutsDisabled: boolean) => void
 
- }
 
- export const createWorkflowStore = () => {
 
-   return create<Shape>(set => ({
 
-     appId: '',
 
-     workflowData: undefined,
 
-     setWorkflowRunningData: workflowRunningData => set(() => ({ workflowRunningData })),
 
-     historyWorkflowData: undefined,
 
-     setHistoryWorkflowData: historyWorkflowData => set(() => ({ historyWorkflowData })),
 
-     showRunHistory: false,
 
-     setShowRunHistory: showRunHistory => set(() => ({ showRunHistory })),
 
-     showFeaturesPanel: false,
 
-     setShowFeaturesPanel: showFeaturesPanel => set(() => ({ showFeaturesPanel })),
 
-     helpLineHorizontal: undefined,
 
-     setHelpLineHorizontal: helpLineHorizontal => set(() => ({ helpLineHorizontal })),
 
-     helpLineVertical: undefined,
 
-     setHelpLineVertical: helpLineVertical => set(() => ({ helpLineVertical })),
 
-     draftUpdatedAt: 0,
 
-     setDraftUpdatedAt: draftUpdatedAt => set(() => ({ draftUpdatedAt: draftUpdatedAt ? draftUpdatedAt * 1000 : 0 })),
 
-     publishedAt: 0,
 
-     setPublishedAt: publishedAt => set(() => ({ publishedAt: publishedAt ? publishedAt * 1000 : 0 })),
 
-     showInputsPanel: false,
 
-     setShowInputsPanel: showInputsPanel => set(() => ({ showInputsPanel })),
 
-     inputs: {},
 
-     setInputs: inputs => set(() => ({ inputs })),
 
-     files: [],
 
-     setFiles: files => set(() => ({ files })),
 
-     backupDraft: undefined,
 
-     setBackupDraft: backupDraft => set(() => ({ backupDraft })),
 
-     notInitialWorkflow: false,
 
-     setNotInitialWorkflow: notInitialWorkflow => set(() => ({ notInitialWorkflow })),
 
-     nodesDefaultConfigs: {},
 
-     setNodesDefaultConfigs: nodesDefaultConfigs => set(() => ({ nodesDefaultConfigs })),
 
-     nodeAnimation: false,
 
-     setNodeAnimation: nodeAnimation => set(() => ({ nodeAnimation })),
 
-     isRestoring: false,
 
-     setIsRestoring: isRestoring => set(() => ({ isRestoring })),
 
-     debouncedSyncWorkflowDraft: debounce((syncWorkflowDraft) => {
 
-       syncWorkflowDraft()
 
-     }, 5000),
 
-     buildInTools: [],
 
-     setBuildInTools: buildInTools => set(() => ({ buildInTools })),
 
-     customTools: [],
 
-     setCustomTools: customTools => set(() => ({ customTools })),
 
-     clipboardElements: [],
 
-     setClipboardElements: clipboardElements => set(() => ({ clipboardElements })),
 
-     shortcutsDisabled: false,
 
-     setShortcutsDisabled: shortcutsDisabled => set(() => ({ shortcutsDisabled })),
 
-   }))
 
- }
 
- export function useStore<T>(selector: (state: Shape) => T): T {
 
-   const store = useContext(WorkflowContext)
 
-   if (!store)
 
-     throw new Error('Missing WorkflowContext.Provider in the tree')
 
-   return useZustandStore(store, selector)
 
- }
 
- export const useWorkflowStore = () => {
 
-   return useContext(WorkflowContext)!
 
- }
 
 
  |