mirror of
https://github.com/langgenius/dify.git
synced 2026-02-06 11:01:30 +08:00
Some checks are pending
Build and Push API & Web / build (api, DIFY_API_IMAGE_NAME, linux/amd64, build-api-amd64) (push) Waiting to run
Build and Push API & Web / build (api, DIFY_API_IMAGE_NAME, linux/arm64, build-api-arm64) (push) Waiting to run
Build and Push API & Web / build (web, DIFY_WEB_IMAGE_NAME, linux/amd64, build-web-amd64) (push) Waiting to run
Build and Push API & Web / build (web, DIFY_WEB_IMAGE_NAME, linux/arm64, build-web-arm64) (push) Waiting to run
Build and Push API & Web / create-manifest (api, DIFY_API_IMAGE_NAME, merge-api-images) (push) Blocked by required conditions
Build and Push API & Web / create-manifest (web, DIFY_WEB_IMAGE_NAME, merge-web-images) (push) Blocked by required conditions
37 lines
1.1 KiB
TypeScript
37 lines
1.1 KiB
TypeScript
import {
|
|
createContext,
|
|
useEffect,
|
|
useRef,
|
|
} from 'react'
|
|
import { useStore } from 'reactflow'
|
|
import {
|
|
createHooksStore,
|
|
} from './store'
|
|
import type { Shape } from './store'
|
|
|
|
type HooksStore = ReturnType<typeof createHooksStore>
|
|
export const HooksStoreContext = createContext<HooksStore | null | undefined>(null)
|
|
type HooksStoreContextProviderProps = Partial<Shape> & {
|
|
children: React.ReactNode
|
|
}
|
|
export const HooksStoreContextProvider = ({ children, ...restProps }: HooksStoreContextProviderProps) => {
|
|
const storeRef = useRef<HooksStore | undefined>(undefined)
|
|
const d3Selection = useStore(s => s.d3Selection)
|
|
const d3Zoom = useStore(s => s.d3Zoom)
|
|
|
|
useEffect(() => {
|
|
if (storeRef.current && d3Selection && d3Zoom)
|
|
storeRef.current.getState().refreshAll(restProps)
|
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
}, [d3Selection, d3Zoom])
|
|
|
|
if (!storeRef.current)
|
|
storeRef.current = createHooksStore(restProps)
|
|
|
|
return (
|
|
<HooksStoreContext.Provider value={storeRef.current}>
|
|
{children}
|
|
</HooksStoreContext.Provider>
|
|
)
|
|
}
|