UNPKG

@assistant-ui/react

Version:

Typescript/React library for AI Chat

42 lines (41 loc) 1.4 kB
"use client"; // src/context/providers/ThreadViewportProvider.tsx import { useEffect, useState } from "react"; import { makeThreadViewportStore } from "../stores/ThreadViewport.mjs"; import { ThreadViewportContext, useThreadViewportStore } from "../react/ThreadViewportContext.mjs"; import { writableStore } from "../ReadonlyStore.mjs"; import { jsx } from "react/jsx-runtime"; var useThreadViewportStoreValue = () => { const outerViewport = useThreadViewportStore({ optional: true }); const [store] = useState(() => makeThreadViewportStore()); useEffect(() => { return outerViewport?.getState().onScrollToBottom(() => { store.getState().scrollToBottom(); }); }, [outerViewport, store]); useEffect(() => { if (!outerViewport) return; return store.subscribe((state) => { if (outerViewport.getState().isAtBottom !== state.isAtBottom) { writableStore(outerViewport).setState({ isAtBottom: state.isAtBottom }); } }); }, [store, outerViewport]); return store; }; var ThreadViewportProvider = ({ children }) => { const useThreadViewport = useThreadViewportStoreValue(); const [context] = useState(() => { return { useThreadViewport }; }); return /* @__PURE__ */ jsx(ThreadViewportContext.Provider, { value: context, children }); }; export { ThreadViewportProvider }; //# sourceMappingURL=ThreadViewportProvider.mjs.map