UNPKG

@assistant-ui/react

Version:

React components for AI chat.

105 lines 3.04 kB
// src/api/ThreadListRuntime.ts import { LazyMemoizeSubject } from "./subscribable/LazyMemoizeSubject.mjs"; import { ThreadListItemRuntimeImpl } from "./ThreadListItemRuntime.mjs"; import { SKIP_UPDATE } from "./subscribable/SKIP_UPDATE.mjs"; var getThreadListState = (threadList) => { return { threads: threadList.threads, archivedThreads: threadList.archivedThreads }; }; var THREAD_MANAGER_PATH = { ref: "ThreadList" }; var ThreadListRuntimeImpl = class { constructor(_core) { this._core = _core; const stateBinding = new LazyMemoizeSubject({ path: THREAD_MANAGER_PATH, getState: () => getThreadListState(_core), subscribe: (callback) => _core.subscribe(callback) }); this._getState = stateBinding.getState.bind(stateBinding); } get path() { return THREAD_MANAGER_PATH; } _getState; getState() { return this._getState(); } rename(threadId, newTitle) { return this._core.rename(threadId, newTitle); } archive(threadId) { return this._core.archive(threadId); } unarchive(threadId) { return this._core.unarchive(threadId); } delete(threadId) { return this._core.delete(threadId); } subscribe(callback) { return this._core.subscribe(callback); } getThreadListItemByIndex(idx) { return new ThreadListItemRuntimeImpl( new LazyMemoizeSubject({ path: { ref: this.path.ref + `${this.path.ref}.threadItems[${idx}]`, threadSelector: { type: "index", index: idx } }, getState: () => { const threads = this._core.threads; const thread = threads[idx]; if (!thread) return SKIP_UPDATE; return thread; }, subscribe: (callback) => this._core.subscribe(callback) }), this._core ); } getThreadListArchivedItemByIndex(idx) { return new ThreadListItemRuntimeImpl( new LazyMemoizeSubject({ path: { ref: this.path.ref + `${this.path.ref}.archivedThreadItems[${idx}]`, threadSelector: { type: "archiveIndex", index: idx } }, getState: () => { const threads = this._core.archivedThreads; const thread = threads[idx]; if (!thread) return SKIP_UPDATE; return thread; }, subscribe: (callback) => this._core.subscribe(callback) }), this._core ); } getThreadListItemById(threadId) { return new ThreadListItemRuntimeImpl( new LazyMemoizeSubject({ path: { ref: this.path.ref + `${this.path.ref}.threadItems[threadId=${threadId}]`, threadSelector: { type: "threadId", threadId } }, getState: () => { const threadItem = this._core.getThreadMetadataById(threadId); if (!threadItem) return SKIP_UPDATE; return threadItem; }, subscribe: (callback) => this._core.subscribe(callback) }), this._core ); } }; export { ThreadListRuntimeImpl }; //# sourceMappingURL=ThreadListRuntime.mjs.map