UNPKG

@assistant-ui/react

Version:

Open-source TypeScript/React library for building production-grade AI chat experiences

45 lines (35 loc) • 1.3 kB
"use client"; import type { FC, PropsWithChildren } from "react"; import { useAuiState } from "@assistant-ui/store"; import type { RequireAtLeastOne } from "../../utils/RequireAtLeastOne"; type ThreadIfFilters = { empty: boolean | undefined; running: boolean | undefined; disabled: boolean | undefined; }; type UseThreadIfProps = RequireAtLeastOne<ThreadIfFilters>; const useThreadIf = (props: UseThreadIfProps) => { return useAuiState((s) => { if (props.empty === true && !s.thread.isEmpty) return false; if (props.empty === false && s.thread.isEmpty) return false; if (props.running === true && !s.thread.isRunning) return false; if (props.running === false && s.thread.isRunning) return false; if (props.disabled === true && !s.thread.isDisabled) return false; if (props.disabled === false && s.thread.isDisabled) return false; return true; }); }; export namespace ThreadPrimitiveIf { export type Props = PropsWithChildren<UseThreadIfProps>; } /** * @deprecated Use `<AuiIf condition={(s) => s.thread...} />` instead. */ export const ThreadPrimitiveIf: FC<ThreadPrimitiveIf.Props> = ({ children, ...query }) => { const result = useThreadIf(query); return result ? children : null; }; ThreadPrimitiveIf.displayName = "ThreadPrimitive.If";