UNPKG

@copilotkit/react-ui

Version:

<img src="https://github.com/user-attachments/assets/0a6b64d9-e193-4940-a3f6-60334ac34084" alt="banner" style="border-radius: 12px; border: 2px solid #d6d4fa;" />

222 lines (220 loc) • 5.76 kB
import { Window } from "./chunk-C3GSYRC3.mjs"; import { Header } from "./chunk-GDSZGYCE.mjs"; import { Button } from "./chunk-UFN2VWSR.mjs"; import { CopilotChat } from "./chunk-QPQRLXN3.mjs"; import { Input } from "./chunk-3W6J75HS.mjs"; import { Messages } from "./chunk-HIW7RXCD.mjs"; import { AssistantMessage } from "./chunk-IHFR6PYG.mjs"; import { UserMessage } from "./chunk-RYUCX3ZK.mjs"; import { ChatContextProvider, useChatContext } from "./chunk-IEMQ2SQW.mjs"; import { __objRest, __spreadProps, __spreadValues } from "./chunk-MRXNTQOX.mjs"; // src/components/chat/Modal.tsx import React, { useMemo, useCallback, useEffect, useRef } from "react"; import { useCopilotContext } from "@copilotkit/react-core"; import { CopilotKitError, CopilotKitErrorCode, Severity, ErrorVisibility, styledConsole } from "@copilotkit/shared"; import { Fragment, jsx, jsxs } from "react/jsx-runtime"; var CopilotModalInner = (_a) => { var _b = _a, { observabilityHooks, onSetOpen, clickOutsideToClose, hitEscapeToClose, shortcut, className, children, Window: Window2, Button: Button2, Header: Header2 } = _b, chatProps = __objRest(_b, [ "observabilityHooks", "onSetOpen", "clickOutsideToClose", "hitEscapeToClose", "shortcut", "className", "children", "Window", "Button", "Header" ]); const { copilotApiConfig, setBannerError } = useCopilotContext(); const { publicApiKey } = copilotApiConfig; const triggerObservabilityHook = useCallback( (hookName, ...args) => { if (publicApiKey && (observabilityHooks == null ? void 0 : observabilityHooks[hookName])) { observabilityHooks[hookName](...args); } if ((observabilityHooks == null ? void 0 : observabilityHooks[hookName]) && !publicApiKey) { setBannerError( new CopilotKitError({ message: "observabilityHooks requires a publicApiKey to function.", code: CopilotKitErrorCode.MISSING_PUBLIC_API_KEY_ERROR, severity: Severity.CRITICAL, visibility: ErrorVisibility.BANNER }) ); styledConsole.publicApiKeyRequired("observabilityHooks"); } }, [publicApiKey, observabilityHooks, setBannerError] ); const { open } = useChatContext(); const prevOpen = useRef(open); useEffect(() => { if (prevOpen.current !== open) { onSetOpen == null ? void 0 : onSetOpen(open); if (open) { triggerObservabilityHook("onChatExpanded"); } else { triggerObservabilityHook("onChatMinimized"); } prevOpen.current = open; } }, [open, onSetOpen, triggerObservabilityHook]); const memoizedHeader = useMemo(() => /* @__PURE__ */ jsx(Header2, {}), [Header2]); const memoizedChildren = useMemo(() => children, [children]); return /* @__PURE__ */ jsxs(Fragment, { children: [ memoizedChildren, /* @__PURE__ */ jsxs("div", { className, children: [ /* @__PURE__ */ jsx(Button2, {}), /* @__PURE__ */ jsxs( Window2, { clickOutsideToClose, shortcut, hitEscapeToClose, children: [ memoizedHeader, /* @__PURE__ */ jsx(CopilotChat, __spreadProps(__spreadValues({}, chatProps), { observabilityHooks })) ] } ) ] }) ] }); }; var CopilotModal = (_a) => { var _b = _a, { instructions, defaultOpen = false, clickOutsideToClose = true, hitEscapeToClose = true, onSetOpen, onSubmitMessage, onStopGeneration, onReloadMessages, shortcut = "/", icons, labels, makeSystemMessage, onInProgress, Window: Window2 = Window, Button: Button2 = Button, Header: Header2 = Header, Messages: Messages2 = Messages, Input: Input2 = Input, AssistantMessage: AssistantMessage2 = AssistantMessage, UserMessage: UserMessage2 = UserMessage, onThumbsUp, onThumbsDown, onCopy, onRegenerate, markdownTagRenderers, className, children, observabilityHooks } = _b, props = __objRest(_b, [ "instructions", "defaultOpen", "clickOutsideToClose", "hitEscapeToClose", "onSetOpen", "onSubmitMessage", "onStopGeneration", "onReloadMessages", "shortcut", "icons", "labels", "makeSystemMessage", "onInProgress", "Window", "Button", "Header", "Messages", "Input", "AssistantMessage", "UserMessage", "onThumbsUp", "onThumbsDown", "onCopy", "onRegenerate", "markdownTagRenderers", "className", "children", "observabilityHooks" ]); const [openState, setOpenState] = React.useState(defaultOpen); return /* @__PURE__ */ jsx(ChatContextProvider, { icons, labels, open: openState, setOpen: setOpenState, children: /* @__PURE__ */ jsx( CopilotModalInner, __spreadProps(__spreadValues({ observabilityHooks, onSetOpen, clickOutsideToClose: clickOutsideToClose != null ? clickOutsideToClose : true, hitEscapeToClose: hitEscapeToClose != null ? hitEscapeToClose : true, shortcut: shortcut != null ? shortcut : "/", className, Window: Window2, Button: Button2, Header: Header2, instructions, onSubmitMessage, onStopGeneration, onReloadMessages, makeSystemMessage, onInProgress, Messages: Messages2, Input: Input2, AssistantMessage: AssistantMessage2, UserMessage: UserMessage2, onThumbsUp, onThumbsDown, onCopy, onRegenerate, markdownTagRenderers }, props), { children }) ) }); }; export { CopilotModal }; //# sourceMappingURL=chunk-7PR2KJDO.mjs.map