@assistant-ui/react
Version:
TypeScript/React library for AI Chat
45 lines (44 loc) • 1.45 kB
JavaScript
"use client";
// src/context/providers/MessageByIndexProvider.tsx
import {
AssistantProvider,
useAssistantApi,
useExtendedAssistantApi
} from "../react/AssistantApiContext.js";
import {
checkEventScope,
normalizeEventSelector
} from "../../types/EventTypes.js";
import { DerivedScope } from "../../utils/tap-store/derived-scopes.js";
import { jsx } from "react/jsx-runtime";
var MessageByIndexProvider = ({ index, children }) => {
const baseApi = useAssistantApi();
const api = useExtendedAssistantApi({
message: DerivedScope({
source: "thread",
query: { type: "index", index },
get: () => baseApi.thread().message({ index })
}),
composer: DerivedScope({
source: "message",
query: {},
get: () => baseApi.thread().message({ index }).composer
}),
on(selector, callback) {
const getMessage = () => baseApi.thread().message({ index });
const { event, scope } = normalizeEventSelector(selector);
if (!checkEventScope("composer", scope, event) && !checkEventScope("message", scope, event))
return baseApi.on(selector, callback);
return baseApi.on({ scope: "thread", event }, (e) => {
if (e.messageId === getMessage().getState().id) {
callback(e);
}
});
}
});
return /* @__PURE__ */ jsx(AssistantProvider, { api, children });
};
export {
MessageByIndexProvider
};
//# sourceMappingURL=MessageByIndexProvider.js.map