@assistant-ui/react
Version:
React components for AI chat.
39 lines (38 loc) • 1.4 kB
JavaScript
"use client";
// src/context/providers/ThreadListItemRuntimeProvider.tsx
import { useEffect, useState } from "react";
import { create } from "zustand";
import {
ThreadListItemContext
} from "../react/ThreadListItemContext.mjs";
import { writableStore } from "../ReadonlyStore.mjs";
import { jsx } from "react/jsx-runtime";
var useThreadListItemRuntimeStore = (runtime) => {
const [store] = useState(() => create(() => runtime));
useEffect(() => {
writableStore(store).setState(runtime, true);
}, [runtime, store]);
return store;
};
var useThreadListItemStore = (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 ThreadListItemRuntimeProvider = ({ runtime, children }) => {
const useThreadListItemRuntime = useThreadListItemRuntimeStore(runtime);
const useThreadListItem = useThreadListItemStore(runtime);
const [context] = useState(() => {
return { useThreadListItemRuntime, useThreadListItem };
});
return /* @__PURE__ */ jsx(ThreadListItemContext.Provider, { value: context, children });
};
export {
ThreadListItemRuntimeProvider,
useThreadListItemStore
};
//# sourceMappingURL=ThreadListItemRuntimeProvider.mjs.map