UNPKG

@assistant-ui/react

Version:

Typescript/React library for AI Chat

57 lines 1.82 kB
"use client"; import { jsx, jsxs } from "react/jsx-runtime"; import { memo, useEffect, useMemo, useState } from "react"; import { AssistantContext } from "../react/AssistantContext"; import { makeAssistantToolUIsStore } from "../stores/AssistantToolUIs"; import { ThreadRuntimeProvider } from "./ThreadRuntimeProvider"; import { create } from "zustand"; import { writableStore } from "../ReadonlyStore"; import { ensureBinding } from "../react/utils/ensureBinding"; const useAssistantRuntimeStore = (runtime) => { const [store] = useState(() => create(() => runtime)); useEffect(() => { ensureBinding(runtime); ensureBinding(runtime.threads); writableStore(store).setState(runtime, true); }, [runtime, store]); return store; }; const useAssistantToolUIsStore = () => { return useMemo(() => makeAssistantToolUIsStore(), []); }; const getRenderComponent = (runtime) => { return runtime._core?.RenderComponent; }; const AssistantRuntimeProviderImpl = ({ children, runtime }) => { const useAssistantRuntime = useAssistantRuntimeStore(runtime); const useToolUIs = useAssistantToolUIsStore(); const [context] = useState(() => { return { useToolUIs, useAssistantRuntime }; }); const RenderComponent = getRenderComponent(runtime); return /* @__PURE__ */ jsxs(AssistantContext.Provider, { value: context, children: [ RenderComponent && /* @__PURE__ */ jsx(RenderComponent, {}), /* @__PURE__ */ jsx( ThreadRuntimeProvider, { runtime: runtime.thread, listItemRuntime: runtime.threads.mainItem, children } ) ] }); }; const AssistantRuntimeProvider = memo(AssistantRuntimeProviderImpl); export { AssistantRuntimeProvider, AssistantRuntimeProviderImpl }; //# sourceMappingURL=AssistantRuntimeProvider.js.map