69 lines
2.8 KiB
JavaScript
69 lines
2.8 KiB
JavaScript
import React, { createContext, useContext, useMemo, useState } from "react";
|
|
import { DEFAULT_AGENT_ID, randomUUID } from "@copilotkitnext/shared";
|
|
import { jsx } from "react/jsx-runtime";
|
|
|
|
//#region src/providers/CopilotChatConfigurationProvider.tsx
|
|
const CopilotChatDefaultLabels = {
|
|
chatInputPlaceholder: "Type a message...",
|
|
chatInputToolbarStartTranscribeButtonLabel: "Transcribe",
|
|
chatInputToolbarCancelTranscribeButtonLabel: "Cancel",
|
|
chatInputToolbarFinishTranscribeButtonLabel: "Finish",
|
|
chatInputToolbarAddButtonLabel: "Add photos or files",
|
|
chatInputToolbarToolsButtonLabel: "Tools",
|
|
assistantMessageToolbarCopyCodeLabel: "Copy",
|
|
assistantMessageToolbarCopyCodeCopiedLabel: "Copied",
|
|
assistantMessageToolbarCopyMessageLabel: "Copy",
|
|
assistantMessageToolbarThumbsUpLabel: "Good response",
|
|
assistantMessageToolbarThumbsDownLabel: "Bad response",
|
|
assistantMessageToolbarReadAloudLabel: "Read aloud",
|
|
assistantMessageToolbarRegenerateLabel: "Regenerate",
|
|
userMessageToolbarCopyMessageLabel: "Copy",
|
|
userMessageToolbarEditMessageLabel: "Edit",
|
|
chatDisclaimerText: "AI can make mistakes. Please verify important information.",
|
|
chatToggleOpenLabel: "Open chat",
|
|
chatToggleCloseLabel: "Close chat",
|
|
modalHeaderTitle: "CopilotKit Chat",
|
|
welcomeMessageText: "How can I help you today?"
|
|
};
|
|
const CopilotChatConfiguration = createContext(null);
|
|
const CopilotChatConfigurationProvider = ({ children, labels, agentId, threadId, isModalDefaultOpen }) => {
|
|
const parentConfig = useContext(CopilotChatConfiguration);
|
|
const mergedLabels = useMemo(() => ({
|
|
...CopilotChatDefaultLabels,
|
|
...parentConfig?.labels ?? {},
|
|
...labels ?? {}
|
|
}), [labels, parentConfig?.labels]);
|
|
const resolvedAgentId = agentId ?? parentConfig?.agentId ?? DEFAULT_AGENT_ID;
|
|
const resolvedThreadId = useMemo(() => {
|
|
if (threadId) return threadId;
|
|
if (parentConfig?.threadId) return parentConfig.threadId;
|
|
return randomUUID();
|
|
}, [threadId, parentConfig?.threadId]);
|
|
const [internalModalOpen, setInternalModalOpen] = useState(isModalDefaultOpen ?? true);
|
|
const resolvedIsModalOpen = parentConfig?.isModalOpen ?? internalModalOpen;
|
|
const resolvedSetModalOpen = parentConfig?.setModalOpen ?? setInternalModalOpen;
|
|
const configurationValue = useMemo(() => ({
|
|
labels: mergedLabels,
|
|
agentId: resolvedAgentId,
|
|
threadId: resolvedThreadId,
|
|
isModalOpen: resolvedIsModalOpen,
|
|
setModalOpen: resolvedSetModalOpen
|
|
}), [
|
|
mergedLabels,
|
|
resolvedAgentId,
|
|
resolvedThreadId,
|
|
resolvedIsModalOpen,
|
|
resolvedSetModalOpen
|
|
]);
|
|
return /* @__PURE__ */ jsx(CopilotChatConfiguration.Provider, {
|
|
value: configurationValue,
|
|
children
|
|
});
|
|
};
|
|
const useCopilotChatConfiguration = () => {
|
|
return useContext(CopilotChatConfiguration);
|
|
};
|
|
|
|
//#endregion
|
|
export { CopilotChatConfigurationProvider, CopilotChatDefaultLabels, useCopilotChatConfiguration };
|
|
//# sourceMappingURL=CopilotChatConfigurationProvider.mjs.map
|