@assistant-ui/react
Version:
TypeScript/React library for AI Chat
66 lines (65 loc) • 2.15 kB
JavaScript
"use client";
// src/context/providers/ThreadListItemProvider.tsx
import { useMemo } from "react";
import {
AssistantProvider,
useAssistantApi,
createAssistantApiField
} from "../react/AssistantApiContext.js";
import {
checkEventScope,
normalizeEventSelector
} from "../../types/EventTypes.js";
import { jsx } from "react/jsx-runtime";
var ThreadListItemByIndexProvider = ({ index, archived, children }) => {
const api = useAssistantApi();
const api2 = useMemo(() => {
const getItem = () => api.threads().item({ index, archived });
return {
threadListItem: createAssistantApiField({
source: "threads",
query: { type: "index", index, archived },
get: () => getItem()
}),
on(selector, callback) {
const { event, scope } = normalizeEventSelector(selector);
if (!checkEventScope("thread-list-item", scope, event))
return api.on(selector, callback);
return api.on({ scope: "*", event }, (e) => {
if (e.threadId === getItem().getState().id) {
callback(e);
}
});
}
};
}, [api, index, archived]);
return /* @__PURE__ */ jsx(AssistantProvider, { api: api2, children });
};
var ThreadListItemByIdProvider = ({ id, children }) => {
const api = useAssistantApi();
const api2 = useMemo(() => {
const getItem = () => api.threads().item({ id });
return {
threadListItem: createAssistantApiField({
source: "threads",
query: { type: "id", id },
get: () => getItem()
}),
on(selector, callback) {
const { event, scope } = normalizeEventSelector(selector);
if (!checkEventScope("thread-list-item", scope, event))
return api.on(selector, callback);
return api.on({ scope: "*", event }, (e) => {
if (e.threadId !== getItem().getState().id) return;
callback(e);
});
}
};
}, [api, id]);
return /* @__PURE__ */ jsx(AssistantProvider, { api: api2, children });
};
export {
ThreadListItemByIdProvider,
ThreadListItemByIndexProvider
};
//# sourceMappingURL=ThreadListItemProvider.js.map