mirror of
https://github.com/langgenius/dify.git
synced 2026-07-28 23:59:34 +08:00
Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: fatelei <fatelei@gmail.com> Co-authored-by: Copilot <198982749+Copilot@users.noreply.github.com> Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com> Co-authored-by: 盐粒 Yanli <yanli@dify.ai> Co-authored-by: Charles Yao <chongbinyao33@gmail.com> Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com> Co-authored-by: yunlu.wen <yunlu.wen@dify.ai> Co-authored-by: yyh <92089059+lyzno1@users.noreply.github.com> Co-authored-by: Jingyi <jingyi.qi@dify.ai> Co-authored-by: yyh <yuanyouhuilyz@gmail.com> Co-authored-by: Joel <iamjoel007@gmail.com> Co-authored-by: hjlarry <hjlarry@163.com> Co-authored-by: Asuka Minato <i@asukaminato.eu.org> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Xiyuan Chen <52963600+GareArc@users.noreply.github.com> Co-authored-by: gigglewang <gigglewang@dify.ai> Co-authored-by: chariri <w@chariri.moe> Co-authored-by: Evan <2869018789@qq.com> Co-authored-by: zyssyz123 <916125788@qq.com>
42 lines
1.2 KiB
TypeScript
42 lines
1.2 KiB
TypeScript
import type { Shape } from './store'
|
|
import {
|
|
createContext,
|
|
useEffect,
|
|
useRef,
|
|
} from 'react'
|
|
import { useStore } from 'reactflow'
|
|
import {
|
|
createHooksStore,
|
|
} 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)
|
|
const { accessControl } = restProps
|
|
|
|
useEffect(() => {
|
|
if (storeRef.current && d3Selection && d3Zoom)
|
|
storeRef.current.getState().refreshAll(restProps)
|
|
}, [d3Selection, d3Zoom])
|
|
|
|
useEffect(() => {
|
|
if (storeRef.current && accessControl)
|
|
storeRef.current.getState().refreshAll({ accessControl })
|
|
}, [accessControl])
|
|
|
|
if (!storeRef.current)
|
|
storeRef.current = createHooksStore(restProps)
|
|
|
|
return (
|
|
<HooksStoreContext.Provider value={storeRef.current}>
|
|
{children}
|
|
</HooksStoreContext.Provider>
|
|
)
|
|
}
|