UNPKG

@assistant-ui/react

Version:

React components for AI chat.

56 lines (55 loc) 1.98 kB
"use client"; // src/context/providers/MessageRuntimeProvider.tsx import { useEffect, useState } from "react"; import { create } from "zustand"; import { MessageContext } from "../react/MessageContext.mjs"; import { makeMessageUtilsStore } from "../stores/MessageUtils.mjs"; import { writableStore } from "../ReadonlyStore.mjs"; import { jsx } from "react/jsx-runtime"; var useMessageRuntimeStore = (runtime) => { const [store] = useState(() => create(() => runtime)); useEffect(() => { writableStore(store).setState(runtime, true); }, [runtime, store]); return store; }; var useMessageStore = (runtime) => { const [store] = useState(() => create(() => runtime.getState())); useEffect(() => { const updateState = () => writableStore(store).setState(runtime.getState(), true); updateState(); return runtime.subscribe(updateState); }, [runtime, store]); return store; }; var useMessageUtilsStore = () => { const [store] = useState(() => makeMessageUtilsStore()); return store; }; var useEditComposerStore = (useMessageRuntime) => { const runtime = useMessageRuntime.getState().composer; const [store] = useState(() => create(() => runtime.getState())); useEffect(() => { const updateState = () => writableStore(store).setState(runtime.getState()); updateState(); return runtime.subscribe(updateState); }, [runtime, store]); return store; }; var MessageRuntimeProvider = ({ runtime, children }) => { const useMessageRuntime = useMessageRuntimeStore(runtime); const useMessage = useMessageStore(runtime); const useMessageUtils = useMessageUtilsStore(); const useEditComposer = useEditComposerStore(useMessageRuntime); const [context] = useState(() => { return { useMessageRuntime, useMessage, useMessageUtils, useEditComposer }; }); return /* @__PURE__ */ jsx(MessageContext.Provider, { value: context, children }); }; export { MessageRuntimeProvider }; //# sourceMappingURL=MessageRuntimeProvider.mjs.map