@assistant-ui/react
Version:
Typescript/React library for AI Chat
57 lines (56 loc) • 1.57 kB
JavaScript
"use client";
// src/primitives/assistantModal/AssistantModalRoot.tsx
import { useEffect, useState } from "react";
import * as PopoverPrimitive from "@radix-ui/react-popover";
import { composeEventHandlers } from "@radix-ui/primitive";
import { usePopoverScope } from "./scope.mjs";
import { useThreadRuntime } from "../../context/index.mjs";
import { jsx } from "react/jsx-runtime";
var useAssistantModalOpenState = ({
defaultOpen = false,
unstable_openOnRunStart = true
}) => {
const state = useState(defaultOpen);
const [, setOpen] = state;
const threadRuntime = useThreadRuntime();
useEffect(() => {
if (!unstable_openOnRunStart) return void 0;
return threadRuntime.unstable_on("run-start", () => {
setOpen(true);
});
}, [
unstable_openOnRunStart,
setOpen,
threadRuntime,
!unstable_openOnRunStart
]);
return state;
};
var AssistantModalPrimitiveRoot = ({
__scopeAssistantModal,
defaultOpen,
unstable_openOnRunStart,
open,
onOpenChange,
...rest
}) => {
const scope = usePopoverScope(__scopeAssistantModal);
const [modalOpen, setOpen] = useAssistantModalOpenState({
defaultOpen,
unstable_openOnRunStart
});
return /* @__PURE__ */ jsx(
PopoverPrimitive.Root,
{
...scope,
open: open === void 0 ? modalOpen : open,
onOpenChange: composeEventHandlers(onOpenChange, setOpen),
...rest
}
);
};
AssistantModalPrimitiveRoot.displayName = "AssistantModalPrimitive.Root";
export {
AssistantModalPrimitiveRoot
};
//# sourceMappingURL=AssistantModalRoot.mjs.map