@assistant-ui/react
Version:
React components for AI chat.
105 lines • 3.04 kB
JavaScript
// 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