@assistant-ui/react
Version:
TypeScript/React library for AI Chat
33 lines • 1.42 kB
JavaScript
"use client";
import { jsx as _jsx } from "react/jsx-runtime";
import { useEffect, useState } from "react";
import * as PopoverPrimitive from "@radix-ui/react-popover";
import { usePopoverScope } from "./scope.js";
import { useAssistantApi } from "../../context/index.js";
const useAssistantModalOpenState = ({ defaultOpen = false, unstable_openOnRunStart = true, }) => {
const state = useState(defaultOpen);
const [, setOpen] = state;
const api = useAssistantApi();
useEffect(() => {
if (!unstable_openOnRunStart)
return undefined;
return api.on("thread.run-start", () => {
setOpen(true);
});
}, [unstable_openOnRunStart, setOpen, api]);
return state;
};
export const AssistantModalPrimitiveRoot = ({ __scopeAssistantModal, defaultOpen, unstable_openOnRunStart, open, onOpenChange, ...rest }) => {
const scope = usePopoverScope(__scopeAssistantModal);
const [modalOpen, setOpen] = useAssistantModalOpenState({
defaultOpen,
unstable_openOnRunStart,
});
const openChangeHandler = (open) => {
onOpenChange?.(open);
setOpen(open);
};
return (_jsx(PopoverPrimitive.Root, { ...scope, open: open === undefined ? modalOpen : open, onOpenChange: openChangeHandler, ...rest }));
};
AssistantModalPrimitiveRoot.displayName = "AssistantModalPrimitive.Root";
//# sourceMappingURL=AssistantModalRoot.js.map