mirror of
https://github.com/langgenius/dify.git
synced 2026-07-29 16:29:36 +08:00
33 lines
978 B
TypeScript
33 lines
978 B
TypeScript
import { atom, useAtomValue, useSetAtom } from 'jotai'
|
|
import { selectAtom } from 'jotai/utils'
|
|
import { useCallback, useMemo } from 'react'
|
|
|
|
const expandedAtom = atom<Record<string, boolean>>({})
|
|
|
|
export function useModelProviderListExpanded(providerName: string) {
|
|
return useAtomValue(
|
|
useMemo(() => selectAtom(expandedAtom, (s) => !!s[providerName]), [providerName]),
|
|
)
|
|
}
|
|
|
|
export function useSetModelProviderListExpanded(providerName: string) {
|
|
const set = useSetAtom(expandedAtom)
|
|
return useCallback(
|
|
(expanded: boolean) => set((prev) => ({ ...prev, [providerName]: expanded })),
|
|
[providerName, set],
|
|
)
|
|
}
|
|
|
|
export function useExpandModelProviderList() {
|
|
const set = useSetAtom(expandedAtom)
|
|
return useCallback(
|
|
(providerName: string) => set((prev) => ({ ...prev, [providerName]: true })),
|
|
[set],
|
|
)
|
|
}
|
|
|
|
export function useResetModelProviderListExpanded() {
|
|
const set = useSetAtom(expandedAtom)
|
|
return useCallback(() => set({}), [set])
|
|
}
|