droplinked-chatbot-next 1.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +205 -0
- package/dist/assets/animations/chat-greeting.json +1 -0
- package/dist/assets/icons/AI/AI/AIMd.d.ts +2 -0
- package/dist/assets/icons/AI/AI/AIMd.js +3 -0
- package/dist/assets/icons/AI/AI/AIMd.js.map +1 -0
- package/dist/assets/icons/Action/Refresh2/Refresh2Sm.d.ts +2 -0
- package/dist/assets/icons/Action/Refresh2/Refresh2Sm.js +3 -0
- package/dist/assets/icons/Action/Refresh2/Refresh2Sm.js.map +1 -0
- package/dist/assets/icons/Action/Send/SendSm.d.ts +2 -0
- package/dist/assets/icons/Action/Send/SendSm.js +3 -0
- package/dist/assets/icons/Action/Send/SendSm.js.map +1 -0
- package/dist/assets/icons/Navigation/ChevronLeft/ChevronleftMd.d.ts +2 -0
- package/dist/assets/icons/Navigation/ChevronLeft/ChevronleftMd.js +3 -0
- package/dist/assets/icons/Navigation/ChevronLeft/ChevronleftMd.js.map +1 -0
- package/dist/assets/icons/Navigation/ExternalArrow/ExternalarrowMd.d.ts +2 -0
- package/dist/assets/icons/Navigation/ExternalArrow/ExternalarrowMd.js +3 -0
- package/dist/assets/icons/Navigation/ExternalArrow/ExternalarrowMd.js.map +1 -0
- package/dist/assets/icons/Sign/Close/CloseMd.d.ts +2 -0
- package/dist/assets/icons/Sign/Close/CloseMd.js +3 -0
- package/dist/assets/icons/Sign/Close/CloseMd.js.map +1 -0
- package/dist/assets/icons/Sign/Help/HelpMd.d.ts +2 -0
- package/dist/assets/icons/Sign/Help/HelpMd.js +3 -0
- package/dist/assets/icons/Sign/Help/HelpMd.js.map +1 -0
- package/dist/assets/icons/Sign/Tooltip/TooltipMd.d.ts +2 -0
- package/dist/assets/icons/Sign/Tooltip/TooltipMd.js +3 -0
- package/dist/assets/icons/Sign/Tooltip/TooltipMd.js.map +1 -0
- package/dist/assets/icons/Sign/Warning/WarningMd.d.ts +2 -0
- package/dist/assets/icons/Sign/Warning/WarningMd.js +3 -0
- package/dist/assets/icons/Sign/Warning/WarningMd.js.map +1 -0
- package/dist/components/ChatDrawer.d.ts +9 -0
- package/dist/components/ChatDrawer.js +15 -0
- package/dist/components/ChatDrawer.js.map +1 -0
- package/dist/components/ChatHeader.d.ts +8 -0
- package/dist/components/ChatHeader.js +13 -0
- package/dist/components/ChatHeader.js.map +1 -0
- package/dist/components/ChatPage.d.ts +16 -0
- package/dist/components/Chatbot.d.ts +9 -0
- package/dist/components/Chatbot.js +20 -0
- package/dist/components/Chatbot.js.map +1 -0
- package/dist/components/EmbeddedChatButton.d.ts +5 -0
- package/dist/components/EmbeddedChatButton.js +13 -0
- package/dist/components/EmbeddedChatButton.js.map +1 -0
- package/dist/components/ErrorMessage.d.ts +6 -0
- package/dist/components/ErrorMessage.js +24 -0
- package/dist/components/ErrorMessage.js.map +1 -0
- package/dist/components/FloatingChatButton.d.ts +6 -0
- package/dist/components/FloatingChatButton.js +17 -0
- package/dist/components/FloatingChatButton.js.map +1 -0
- package/dist/components/GradualMessageDisplay.d.ts +9 -0
- package/dist/components/GradualMessageDisplay.js +141 -0
- package/dist/components/GradualMessageDisplay.js.map +1 -0
- package/dist/components/HeaderIconButton.d.ts +9 -0
- package/dist/components/HeaderIconButton.js +6 -0
- package/dist/components/HeaderIconButton.js.map +1 -0
- package/dist/components/HelloPage.d.ts +10 -0
- package/dist/components/MarkdownRenderer.d.ts +8 -0
- package/dist/components/MarkdownRenderer.js +40 -0
- package/dist/components/MarkdownRenderer.js.map +1 -0
- package/dist/components/MessageInput.d.ts +11 -0
- package/dist/components/MessageInput.js +52 -0
- package/dist/components/MessageInput.js.map +1 -0
- package/dist/components/MessageList.d.ts +12 -0
- package/dist/components/MessageList.js +64 -0
- package/dist/components/MessageList.js.map +1 -0
- package/dist/components/RuledGrid.d.ts +6 -0
- package/dist/components/RuledGrid.js +9 -0
- package/dist/components/RuledGrid.js.map +1 -0
- package/dist/components/TypingIndicator.d.ts +8 -0
- package/dist/components/TypingIndicator.js +92 -0
- package/dist/components/TypingIndicator.js.map +1 -0
- package/dist/components/input/EmailCapture.d.ts +6 -0
- package/dist/components/input/EmailCapture.js +15 -0
- package/dist/components/input/EmailCapture.js.map +1 -0
- package/dist/components/input/MessageInput.d.ts +11 -0
- package/dist/components/input/SuggestionChips.d.ts +7 -0
- package/dist/components/input/SuggestionChips.js +8 -0
- package/dist/components/input/SuggestionChips.js.map +1 -0
- package/dist/components/messages/ErrorMessage.d.ts +6 -0
- package/dist/components/messages/MessageItem.d.ts +10 -0
- package/dist/components/messages/MessageItem.js +20 -0
- package/dist/components/messages/MessageItem.js.map +1 -0
- package/dist/components/ui/tooltip.d.ts +11 -0
- package/dist/components/ui/tooltip.js +9 -0
- package/dist/components/ui/tooltip.js.map +1 -0
- package/dist/hooks/useChatbot.d.ts +27 -0
- package/dist/hooks/useChatbot.js +229 -0
- package/dist/hooks/useChatbot.js.map +1 -0
- package/dist/index.d.ts +19 -0
- package/dist/index.esm.js +66459 -0
- package/dist/index.esm.js.map +1 -0
- package/dist/index.js +66499 -0
- package/dist/index.js.map +1 -0
- package/dist/lib/chatbot/api/client.d.ts +30 -0
- package/dist/lib/chatbot/api/client.js +130 -0
- package/dist/lib/chatbot/api/client.js.map +1 -0
- package/dist/lib/chatbot/components/ChatDrawer.d.ts +9 -0
- package/dist/lib/chatbot/components/ChatDrawer.js +15 -0
- package/dist/lib/chatbot/components/ChatDrawer.js.map +1 -0
- package/dist/lib/chatbot/components/ChatHeader.d.ts +8 -0
- package/dist/lib/chatbot/components/ChatHeader.js +14 -0
- package/dist/lib/chatbot/components/ChatHeader.js.map +1 -0
- package/dist/lib/chatbot/components/Chatbot.d.ts +10 -0
- package/dist/lib/chatbot/components/Chatbot.js +20 -0
- package/dist/lib/chatbot/components/Chatbot.js.map +1 -0
- package/dist/lib/chatbot/components/EmbeddedChatButton.d.ts +5 -0
- package/dist/lib/chatbot/components/EmbeddedChatButton.js +13 -0
- package/dist/lib/chatbot/components/EmbeddedChatButton.js.map +1 -0
- package/dist/lib/chatbot/components/ErrorMessage.d.ts +6 -0
- package/dist/lib/chatbot/components/ErrorMessage.js +24 -0
- package/dist/lib/chatbot/components/ErrorMessage.js.map +1 -0
- package/dist/lib/chatbot/components/FloatingChatButton.d.ts +6 -0
- package/dist/lib/chatbot/components/FloatingChatButton.js +17 -0
- package/dist/lib/chatbot/components/FloatingChatButton.js.map +1 -0
- package/dist/lib/chatbot/components/GradualMessageDisplay.d.ts +9 -0
- package/dist/lib/chatbot/components/GradualMessageDisplay.js +141 -0
- package/dist/lib/chatbot/components/GradualMessageDisplay.js.map +1 -0
- package/dist/lib/chatbot/components/MarkdownRenderer.d.ts +8 -0
- package/dist/lib/chatbot/components/MarkdownRenderer.js +40 -0
- package/dist/lib/chatbot/components/MarkdownRenderer.js.map +1 -0
- package/dist/lib/chatbot/components/MessageInput.d.ts +11 -0
- package/dist/lib/chatbot/components/MessageInput.js +69 -0
- package/dist/lib/chatbot/components/MessageInput.js.map +1 -0
- package/dist/lib/chatbot/components/MessageList.d.ts +12 -0
- package/dist/lib/chatbot/components/MessageList.js +85 -0
- package/dist/lib/chatbot/components/MessageList.js.map +1 -0
- package/dist/lib/chatbot/components/RuledGrid.d.ts +6 -0
- package/dist/lib/chatbot/components/RuledGrid.js +9 -0
- package/dist/lib/chatbot/components/RuledGrid.js.map +1 -0
- package/dist/lib/chatbot/components/TypingIndicator.d.ts +14 -0
- package/dist/lib/chatbot/components/TypingIndicator.js +98 -0
- package/dist/lib/chatbot/components/TypingIndicator.js.map +1 -0
- package/dist/lib/chatbot/components/ui/tooltip.d.ts +11 -0
- package/dist/lib/chatbot/components/ui/tooltip.js +9 -0
- package/dist/lib/chatbot/components/ui/tooltip.js.map +1 -0
- package/dist/lib/chatbot/hooks/useChatbot.d.ts +25 -0
- package/dist/lib/chatbot/hooks/useChatbot.js +212 -0
- package/dist/lib/chatbot/hooks/useChatbot.js.map +1 -0
- package/dist/lib/chatbot/index.d.ts +5 -0
- package/dist/lib/chatbot/index.js +5 -0
- package/dist/lib/chatbot/index.js.map +1 -0
- package/dist/lib/chatbot/types/index.d.ts +55 -0
- package/dist/lib/chatbot/types/index.js +2 -0
- package/dist/lib/chatbot/types/index.js.map +1 -0
- package/dist/lib/chatbot/utils/helpers.d.ts +9 -0
- package/dist/lib/chatbot/utils/helpers.js +55 -0
- package/dist/lib/chatbot/utils/helpers.js.map +1 -0
- package/dist/lib/chatbot/views/ChatPage.d.ts +16 -0
- package/dist/lib/chatbot/views/ChatPage.js +9 -0
- package/dist/lib/chatbot/views/ChatPage.js.map +1 -0
- package/dist/lib/chatbot/views/HelloPage.d.ts +10 -0
- package/dist/lib/chatbot/views/HelloPage.js +33 -0
- package/dist/lib/chatbot/views/HelloPage.js.map +1 -0
- package/dist/services/api.d.ts +30 -0
- package/dist/services/axiosClient.d.ts +8 -0
- package/dist/services/axiosClient.js +38 -0
- package/dist/services/axiosClient.js.map +1 -0
- package/dist/services/client.d.ts +31 -0
- package/dist/services/client.js +52 -0
- package/dist/services/client.js.map +1 -0
- package/dist/services/http.d.ts +8 -0
- package/dist/services/http.js +38 -0
- package/dist/services/http.js.map +1 -0
- package/dist/types/index.d.ts +55 -0
- package/dist/types/index.js +2 -0
- package/dist/types/index.js.map +1 -0
- package/dist/utils/helpers.d.ts +6 -0
- package/dist/utils/helpers.js +46 -0
- package/dist/utils/helpers.js.map +1 -0
- package/dist/views/ChatPage.d.ts +16 -0
- package/dist/views/ChatPage.js +9 -0
- package/dist/views/ChatPage.js.map +1 -0
- package/dist/views/HelloPage.d.ts +7 -0
- package/dist/views/HelloPage.js +33 -0
- package/dist/views/HelloPage.js.map +1 -0
- package/package.json +70 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/lib/chatbot/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,sBAAsB,CAAA;AAGzD,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,mBAAmB,CAAA;AACxD,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,kBAAkB,CAAA;AAGtD,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAA"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
export interface Message {
|
|
2
|
+
id: string;
|
|
3
|
+
text: string;
|
|
4
|
+
sender: 'user' | 'bot';
|
|
5
|
+
timestamp: Date;
|
|
6
|
+
isError?: boolean;
|
|
7
|
+
}
|
|
8
|
+
export interface ApiResponse<T> {
|
|
9
|
+
statusCode: number;
|
|
10
|
+
status: string;
|
|
11
|
+
data: T;
|
|
12
|
+
}
|
|
13
|
+
export interface StartChatResponse {
|
|
14
|
+
message: string;
|
|
15
|
+
thread_status: string;
|
|
16
|
+
thread_id: string;
|
|
17
|
+
}
|
|
18
|
+
export interface SendMessageResponse {
|
|
19
|
+
message: string;
|
|
20
|
+
thread_status: string;
|
|
21
|
+
}
|
|
22
|
+
export interface ConversationMessage {
|
|
23
|
+
role: 'user' | 'assistant';
|
|
24
|
+
content: string;
|
|
25
|
+
timestamp: string;
|
|
26
|
+
}
|
|
27
|
+
export interface Pagination {
|
|
28
|
+
current_page: string;
|
|
29
|
+
page_size: string;
|
|
30
|
+
total_messages: number;
|
|
31
|
+
total_pages: number;
|
|
32
|
+
has_previous: boolean;
|
|
33
|
+
has_next: boolean;
|
|
34
|
+
}
|
|
35
|
+
export interface ChatHistoryResponse {
|
|
36
|
+
conversation_history: ConversationMessage[];
|
|
37
|
+
pagination: Pagination;
|
|
38
|
+
thread_status: string;
|
|
39
|
+
}
|
|
40
|
+
export interface ChatbotUser {
|
|
41
|
+
email: string;
|
|
42
|
+
isLoggedIn: boolean;
|
|
43
|
+
name?: string;
|
|
44
|
+
logoUrl?: string;
|
|
45
|
+
}
|
|
46
|
+
export interface NavigationLink {
|
|
47
|
+
label: string;
|
|
48
|
+
href: string;
|
|
49
|
+
isExternal?: boolean;
|
|
50
|
+
}
|
|
51
|
+
export interface MessageSuggestion {
|
|
52
|
+
id: string;
|
|
53
|
+
text: string;
|
|
54
|
+
}
|
|
55
|
+
export type ChatbotView = 'hello' | 'chat';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/lib/chatbot/types/index.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { NavigationLink } from '../types';
|
|
2
|
+
export declare const isValidEmail: (email: string) => boolean;
|
|
3
|
+
export declare const generateMessageId: () => string;
|
|
4
|
+
export declare const formatTimestamp: (date: Date) => string;
|
|
5
|
+
export declare const sanitizeText: (text: string) => string;
|
|
6
|
+
export declare const createDefaultNavigationLinks: () => NavigationLink[];
|
|
7
|
+
export declare const createDefaultExternalLinks: () => NavigationLink[];
|
|
8
|
+
export declare const truncateText: (text: string, maxLength: number) => string;
|
|
9
|
+
export declare const isExternalUrl: (url: string) => boolean;
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
export const isValidEmail = (email) => {
|
|
2
|
+
const emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
|
|
3
|
+
return emailRegex.test(email.trim());
|
|
4
|
+
};
|
|
5
|
+
export const generateMessageId = () => {
|
|
6
|
+
return `msg_${Date.now()}_${Math.random().toString(36).substr(2, 9)}`;
|
|
7
|
+
};
|
|
8
|
+
export const formatTimestamp = (date) => {
|
|
9
|
+
const now = new Date();
|
|
10
|
+
const diffInMinutes = Math.floor((now.getTime() - date.getTime()) / (1000 * 60));
|
|
11
|
+
if (diffInMinutes < 1)
|
|
12
|
+
return 'Just now';
|
|
13
|
+
if (diffInMinutes < 60)
|
|
14
|
+
return `${diffInMinutes}m ago`;
|
|
15
|
+
const diffInHours = Math.floor(diffInMinutes / 60);
|
|
16
|
+
if (diffInHours < 24)
|
|
17
|
+
return `${diffInHours}h ago`;
|
|
18
|
+
const diffInDays = Math.floor(diffInHours / 24);
|
|
19
|
+
if (diffInDays < 7)
|
|
20
|
+
return `${diffInDays}d ago`;
|
|
21
|
+
return date.toLocaleDateString();
|
|
22
|
+
};
|
|
23
|
+
export const sanitizeText = (text) => {
|
|
24
|
+
return text
|
|
25
|
+
.replace(/&/g, '&')
|
|
26
|
+
.replace(/</g, '<')
|
|
27
|
+
.replace(/>/g, '>')
|
|
28
|
+
.replace(/"/g, '"')
|
|
29
|
+
.replace(/'/g, ''')
|
|
30
|
+
.trim();
|
|
31
|
+
};
|
|
32
|
+
export const createDefaultNavigationLinks = () => [
|
|
33
|
+
{ label: 'Documentation', href: '/docs', isExternal: false },
|
|
34
|
+
{ label: 'Contact Us', href: '/contact', isExternal: false },
|
|
35
|
+
{ label: 'Changelog', href: '/changelog', isExternal: false }
|
|
36
|
+
];
|
|
37
|
+
export const createDefaultExternalLinks = () => [
|
|
38
|
+
{ label: 'Developer API', href: 'https://api.example.com/docs', isExternal: true },
|
|
39
|
+
{ label: 'Video Tutorials', href: 'https://youtube.com/example', isExternal: true }
|
|
40
|
+
];
|
|
41
|
+
export const truncateText = (text, maxLength) => {
|
|
42
|
+
if (text.length <= maxLength)
|
|
43
|
+
return text;
|
|
44
|
+
return text.substring(0, maxLength - 3) + '...';
|
|
45
|
+
};
|
|
46
|
+
export const isExternalUrl = (url) => {
|
|
47
|
+
try {
|
|
48
|
+
const urlObj = new URL(url, window.location.origin);
|
|
49
|
+
return urlObj.origin !== window.location.origin;
|
|
50
|
+
}
|
|
51
|
+
catch {
|
|
52
|
+
return false;
|
|
53
|
+
}
|
|
54
|
+
};
|
|
55
|
+
//# sourceMappingURL=helpers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../../../src/lib/chatbot/utils/helpers.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { ChatbotUser, Message } from "../types";
|
|
2
|
+
interface ChatPageProps {
|
|
3
|
+
messages: Message[];
|
|
4
|
+
user: ChatbotUser;
|
|
5
|
+
isLoading: boolean;
|
|
6
|
+
isTyping?: boolean;
|
|
7
|
+
isEmailSubmitting?: boolean;
|
|
8
|
+
historyMessageIds?: Set<string>;
|
|
9
|
+
currentlyProcessingMessageId?: string | null;
|
|
10
|
+
clearProcessingMessageId?: () => void;
|
|
11
|
+
onSendMessage: (text: string) => void;
|
|
12
|
+
onEmailSubmit: (email: string) => void;
|
|
13
|
+
onRetryMessage?: () => void;
|
|
14
|
+
}
|
|
15
|
+
declare function ChatPage({ messages, user, isLoading, isTyping, isEmailSubmitting, historyMessageIds, currentlyProcessingMessageId, clearProcessingMessageId, onSendMessage, onEmailSubmit, onRetryMessage }: ChatPageProps): import("react/jsx-runtime").JSX.Element;
|
|
16
|
+
export default ChatPage;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { Box, VStack } from "@chakra-ui/react";
|
|
3
|
+
import MessageInput from "../components/MessageInput";
|
|
4
|
+
import MessageList from "../components/MessageList";
|
|
5
|
+
function ChatPage({ messages, user, isLoading, isTyping = false, isEmailSubmitting = false, historyMessageIds, currentlyProcessingMessageId, clearProcessingMessageId, onSendMessage, onEmailSubmit, onRetryMessage }) {
|
|
6
|
+
return (_jsxs(VStack, { h: "full", children: [_jsx(Box, { flex: 1, w: "full", overflow: "hidden", children: _jsx(MessageList, { messages: messages, user: user, isTyping: isTyping, historyMessageIds: historyMessageIds, currentlyProcessingMessageId: currentlyProcessingMessageId, clearProcessingMessageId: clearProcessingMessageId, onRetryMessage: onRetryMessage }) }), _jsx(Box, { w: "full", pt: 4, children: _jsx(MessageInput, { onSend: onSendMessage, user: user, onEmailSubmit: onEmailSubmit, isLoading: isLoading, isEmailSubmitting: isEmailSubmitting, messages: messages }) })] }));
|
|
7
|
+
}
|
|
8
|
+
export default ChatPage;
|
|
9
|
+
//# sourceMappingURL=ChatPage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ChatPage.js","sourceRoot":"","sources":["../../../../src/lib/chatbot/views/ChatPage.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAA;AAE9C,OAAO,YAAY,MAAM,4BAA4B,CAAA;AACrD,OAAO,WAAW,MAAM,2BAA2B,CAAA;AAgBnD,SAAS,QAAQ,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,GAAG,KAAK,EAAE,iBAAiB,GAAG,KAAK,EAAE,iBAAiB,EAAE,4BAA4B,EAAE,wBAAwB,EAAE,aAAa,EAAE,aAAa,EAAE,cAAc,EAAiB;IAChO,OAAO,CACH,MAAC,MAAM,IAAC,CAAC,EAAC,MAAM,aACZ,KAAC,GAAG,IAAC,IAAI,EAAE,CAAC,EAAE,CAAC,EAAC,MAAM,EAAC,QAAQ,EAAC,QAAQ,YACpC,KAAC,WAAW,IACV,QAAQ,EAAE,QAAQ,EAClB,IAAI,EAAE,IAAI,EACV,QAAQ,EAAE,QAAQ,EAClB,iBAAiB,EAAE,iBAAiB,EACpC,4BAA4B,EAAE,4BAA4B,EAC1D,wBAAwB,EAAE,wBAAwB,EAClD,cAAc,EAAE,cAAc,GAC9B,GACA,EAEN,KAAC,GAAG,IAAC,CAAC,EAAC,MAAM,EAAC,EAAE,EAAE,CAAC,YACf,KAAC,YAAY,IACT,MAAM,EAAE,aAAa,EACrB,IAAI,EAAE,IAAI,EACV,aAAa,EAAE,aAAa,EAC5B,SAAS,EAAE,SAAS,EACpB,iBAAiB,EAAE,iBAAiB,EACpC,QAAQ,EAAE,QAAQ,GACpB,GACA,IACD,CACZ,CAAA;AACL,CAAC;AAED,eAAe,QAAQ,CAAA"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { NavigationLink } from "../types";
|
|
2
|
+
interface HelloPageProps {
|
|
3
|
+
userName?: string;
|
|
4
|
+
onStartChat: () => void;
|
|
5
|
+
isStartingChat?: boolean;
|
|
6
|
+
navigationLinks?: NavigationLink[];
|
|
7
|
+
externalLinks?: NavigationLink[];
|
|
8
|
+
}
|
|
9
|
+
declare function HelloPage({ userName, onStartChat, isStartingChat, }: HelloPageProps): import("react/jsx-runtime").JSX.Element;
|
|
10
|
+
export default HelloPage;
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { Box, Button, Flex, Link, Text, VStack } from "@chakra-ui/react";
|
|
3
|
+
import { AIMd } from "../../../assets/icons/AI/AI/AIMd";
|
|
4
|
+
import { ExternalarrowMd } from "../../../assets/icons/Navigation/ExternalArrow/ExternalarrowMd";
|
|
5
|
+
import RuledGrid from "../components/RuledGrid";
|
|
6
|
+
function HelloPage({ userName, onStartChat, isStartingChat = false, }) {
|
|
7
|
+
const navigationItems = [
|
|
8
|
+
{
|
|
9
|
+
label: "Documentation",
|
|
10
|
+
href: "https://droplinked.gitbook.io/droplinked-store-front-help-center",
|
|
11
|
+
isExternal: true,
|
|
12
|
+
},
|
|
13
|
+
{ label: "Contact Us", href: "/contact-us", isExternal: false },
|
|
14
|
+
{ label: "About Us", href: "/about", isExternal: false },
|
|
15
|
+
{ label: "Changelog", href: "/analytics/changelog", isExternal: false },
|
|
16
|
+
{
|
|
17
|
+
label: "Developer API",
|
|
18
|
+
href: "https://droplinked.gitbook.io/droplinked-store-front-help-center/library/droplinked-api-sandbox",
|
|
19
|
+
isExternal: true,
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
label: "Video Tutorials",
|
|
23
|
+
href: "https://www.youtube.com/watch?v=fuZLWeku6fw&list=PLwoJzeXHsBW6bAHmPz04RtWvpg_09-vqi",
|
|
24
|
+
isExternal: true,
|
|
25
|
+
},
|
|
26
|
+
];
|
|
27
|
+
return (_jsx(Box, { w: "full", h: "100%", overflowY: "auto", overflowX: "hidden", p: 4, children: _jsxs(VStack, { align: "stretch", justify: "flex-end", gap: 4, height: "full", children: [_jsxs(Flex, { flexDirection: "column", justifyContent: "flex-end", flexShrink: 0, paddingTop: "48px", children: [_jsx(Text, { color: "#2BCFA1", fontSize: "3xl", fontWeight: "bold", lineHeight: "40px", children: `Hi ${userName ? userName : ""} 👋🏻` }), _jsx(Text, { color: "white", fontSize: "3xl", fontWeight: "bold", lineHeight: "40px", children: "How can I help?" })] }), _jsxs(RuledGrid, { columns: 1, borderRadius: 16, bg: "#222", overflow: "hidden", children: [_jsxs(VStack, { align: "stretch", gap: 3, p: 4, children: [_jsx(Box, { p: 2.5, w: "fit-content", bg: "rgba(43, 207, 161, 0.1)", border: "1px solid", borderColor: "rgba(43, 207, 161, 0.1)", borderRadius: "lg", children: _jsx(AIMd, { color: "#2BCFA1" }) }), _jsxs(VStack, { gap: 0.5, align: "stretch", children: [_jsx(Text, { color: "white", fontSize: "base", fontWeight: "medium", lineHeight: "normal", children: "AI Merchant Assistant" }), _jsx(Text, { color: "#737373", fontSize: "sm", fontWeight: "normal", lineHeight: "tight", children: "I can help with your shop setup, payment and more" })] })] }), _jsx(Button, { w: "full", padding: "10px 14px", borderRadius: 0, variant: "ghost", _hover: { bg: "rgba(43, 207, 161, 0.1)" }, fontSize: 14, fontWeight: 500, color: "#2BCFA1", onClick: onStartChat, isLoading: isStartingChat, isDisabled: isStartingChat, _disabled: {
|
|
28
|
+
color: "#525252",
|
|
29
|
+
cursor: "not-allowed",
|
|
30
|
+
}, children: "Start Chat" })] }), _jsx(RuledGrid, { columns: 1, borderRadius: 16, bg: "#222", children: navigationItems.map((item, index) => (_jsxs(Link, { display: "flex", justifyContent: "space-between", alignItems: "center", gap: 4, padding: "12px 16px", fontSize: 14, fontWeight: 500, color: "white", textDecoration: "none", href: item.href, isExternal: item.isExternal, children: [item.label, _jsx(ExternalarrowMd, { color: "white" })] }, index))) })] }) }));
|
|
31
|
+
}
|
|
32
|
+
export default HelloPage;
|
|
33
|
+
//# sourceMappingURL=HelloPage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"HelloPage.js","sourceRoot":"","sources":["../../../../src/lib/chatbot/views/HelloPage.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AACzE,OAAO,EAAE,IAAI,EAAE,MAAM,kCAAkC,CAAC;AACxD,OAAO,EAAE,eAAe,EAAE,MAAM,gEAAgE,CAAC;AAEjG,OAAO,SAAS,MAAM,yBAAyB,CAAC;AAUhD,SAAS,SAAS,CAAC,EACf,QAAQ,EACR,WAAW,EACX,cAAc,GAAG,KAAK,GACT;IACb,MAAM,eAAe,GAAG;QACpB;YACI,KAAK,EAAE,eAAe;YACtB,IAAI,EAAE,kEAAkE;YACxE,UAAU,EAAE,IAAI;SACnB;QACD,EAAE,KAAK,EAAE,YAAY,EAAE,IAAI,EAAE,aAAa,EAAE,UAAU,EAAE,KAAK,EAAE;QAC/D,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,KAAK,EAAE;QACxD,EAAE,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,sBAAsB,EAAE,UAAU,EAAE,KAAK,EAAE;QACvE;YACI,KAAK,EAAE,eAAe;YACtB,IAAI,EAAE,iGAAiG;YACvG,UAAU,EAAE,IAAI;SACnB;QACD;YACI,KAAK,EAAE,iBAAiB;YACxB,IAAI,EAAE,qFAAqF;YAC3F,UAAU,EAAE,IAAI;SACnB;KACJ,CAAC;IAEF,OAAO,CACH,KAAC,GAAG,IAEA,CAAC,EAAC,MAAM,EACR,CAAC,EAAC,MAAM,EACR,SAAS,EAAC,MAAM,EAChB,SAAS,EAAC,QAAQ,EAElB,CAAC,EAAE,CAAC,YAEJ,MAAC,MAAM,IAAC,KAAK,EAAC,SAAS,EAAC,OAAO,EAAC,UAAU,EAAC,GAAG,EAAE,CAAC,EAAE,MAAM,EAAC,MAAM,aAE5D,MAAC,IAAI,IAED,aAAa,EAAC,QAAQ,EACtB,cAAc,EAAC,UAAU,EAEzB,UAAU,EAAE,CAAC,EACb,UAAU,EAAE,MAAM,aAElB,KAAC,IAAI,IACD,KAAK,EAAC,SAAS,EACf,QAAQ,EAAC,KAAK,EACd,UAAU,EAAC,MAAM,EACjB,UAAU,EAAC,MAAM,YAEhB,MAAM,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,OAAO,GACnC,EACP,KAAC,IAAI,IACD,KAAK,EAAC,OAAO,EACb,QAAQ,EAAC,KAAK,EACd,UAAU,EAAC,MAAM,EACjB,UAAU,EAAC,MAAM,gCAGd,IACJ,EAIP,MAAC,SAAS,IACN,OAAO,EAAE,CAAC,EACV,YAAY,EAAE,EAAE,EAChB,EAAE,EAAC,MAAM,EACT,QAAQ,EAAC,QAAQ,aAGjB,MAAC,MAAM,IAAC,KAAK,EAAC,SAAS,EAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,aAEhC,KAAC,GAAG,IAEA,CAAC,EAAE,GAAG,EACN,CAAC,EAAC,aAAa,EAEf,EAAE,EAAC,yBAAyB,EAC5B,MAAM,EAAC,WAAW,EAClB,WAAW,EAAC,yBAAyB,EACrC,YAAY,EAAC,IAAI,YAEjB,KAAC,IAAI,IAAC,KAAK,EAAC,SAAS,GAAG,GACtB,EAGN,MAAC,MAAM,IAAC,GAAG,EAAE,GAAG,EAAE,KAAK,EAAC,SAAS,aAC7B,KAAC,IAAI,IACD,KAAK,EAAC,OAAO,EACb,QAAQ,EAAC,MAAM,EACf,UAAU,EAAC,QAAQ,EACnB,UAAU,EAAC,QAAQ,sCAGhB,EACP,KAAC,IAAI,IACD,KAAK,EAAC,SAAS,EACf,QAAQ,EAAC,IAAI,EACb,UAAU,EAAC,QAAQ,EACnB,UAAU,EAAC,OAAO,kEAIf,IACF,IACJ,EAGT,KAAC,MAAM,IAEH,CAAC,EAAC,MAAM,EAER,OAAO,EAAC,WAAW,EACnB,YAAY,EAAE,CAAC,EAEf,OAAO,EAAC,OAAO,EACf,MAAM,EAAE,EAAE,EAAE,EAAE,yBAAyB,EAAE,EAEzC,QAAQ,EAAE,EAAE,EACZ,UAAU,EAAE,GAAG,EACf,KAAK,EAAC,SAAS,EAEf,OAAO,EAAE,WAAW,EACpB,SAAS,EAAE,cAAc,EACzB,UAAU,EAAE,cAAc,EAC1B,SAAS,EAAE;gCACP,KAAK,EAAE,SAAS;gCAChB,MAAM,EAAE,aAAa;6BACxB,2BAGI,IACD,EAGZ,KAAC,SAAS,IAAC,OAAO,EAAE,CAAC,EAAE,YAAY,EAAE,EAAE,EAAE,EAAE,EAAC,MAAM,YAC7C,eAAe,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,CAClC,MAAC,IAAI,IAED,OAAO,EAAC,MAAM,EACd,cAAc,EAAC,eAAe,EAC9B,UAAU,EAAC,QAAQ,EACnB,GAAG,EAAE,CAAC,EACN,OAAO,EAAC,WAAW,EACnB,QAAQ,EAAE,EAAE,EACZ,UAAU,EAAE,GAAG,EACf,KAAK,EAAC,OAAO,EACb,cAAc,EAAC,MAAM,EACrB,IAAI,EAAE,IAAI,CAAC,IAAI,EACf,UAAU,EAAE,IAAI,CAAC,UAAU,aAE1B,IAAI,CAAC,KAAK,EACX,KAAC,eAAe,IAAC,KAAK,EAAC,OAAO,GAAG,KAd5B,KAAK,CAeP,CACV,CAAC,GACM,IACP,GACP,CACT,CAAC;AACN,CAAC;AAED,eAAe,SAAS,CAAC"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { Message, StartChatResponse, SendMessageResponse, ChatHistoryResponse, ConversationMessage } from '../types';
|
|
2
|
+
export interface StartChatRequest {
|
|
3
|
+
email: string;
|
|
4
|
+
}
|
|
5
|
+
export interface SendMessageRequest {
|
|
6
|
+
thread_id: string;
|
|
7
|
+
message: string;
|
|
8
|
+
}
|
|
9
|
+
export interface GetHistoryParams {
|
|
10
|
+
thread_id: string;
|
|
11
|
+
page?: number;
|
|
12
|
+
page_size?: number;
|
|
13
|
+
order?: 'asc' | 'desc';
|
|
14
|
+
}
|
|
15
|
+
export declare class ChatbotAPI {
|
|
16
|
+
private baseUrl;
|
|
17
|
+
private apiKey?;
|
|
18
|
+
constructor(baseUrl: string, apiKey?: string);
|
|
19
|
+
private getHeaders;
|
|
20
|
+
startChatSession(request: StartChatRequest): Promise<StartChatResponse>;
|
|
21
|
+
sendMessage(request: SendMessageRequest): Promise<SendMessageResponse>;
|
|
22
|
+
getChatHistory(params: GetHistoryParams): Promise<ChatHistoryResponse>;
|
|
23
|
+
convertApiMessagesToMessages(apiMessages: ConversationMessage[]): Message[];
|
|
24
|
+
getConversationHistory(threadId: string, page?: number, pageSize?: number): Promise<Message[]>;
|
|
25
|
+
}
|
|
26
|
+
export declare const initializeChatbotAPI: (baseUrl: string, apiKey?: string) => void;
|
|
27
|
+
export declare const startChatSession: (request: StartChatRequest) => Promise<StartChatResponse>;
|
|
28
|
+
export declare const sendMessage: (request: SendMessageRequest) => Promise<SendMessageResponse>;
|
|
29
|
+
export declare const getChatHistory: (params: GetHistoryParams) => Promise<ChatHistoryResponse>;
|
|
30
|
+
export declare const getConversationHistory: (threadId: string, page?: number, pageSize?: number) => Promise<Message[]>;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { AxiosInstance, AxiosRequestConfig } from 'axios';
|
|
2
|
+
export declare const createHttpClient: (baseURL: string, apiKey?: string) => AxiosInstance;
|
|
3
|
+
export declare class ApiError extends Error {
|
|
4
|
+
status?: number;
|
|
5
|
+
data?: unknown;
|
|
6
|
+
constructor(message: string, status?: number, data?: unknown);
|
|
7
|
+
}
|
|
8
|
+
export declare const httpRequest: <T>(http: AxiosInstance, config: AxiosRequestConfig) => Promise<T>;
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import axios from 'axios';
|
|
2
|
+
export const createHttpClient = (baseURL, apiKey) => {
|
|
3
|
+
const instance = axios.create({
|
|
4
|
+
baseURL: baseURL.replace(/\/$/, ''),
|
|
5
|
+
headers: { 'Content-Type': 'application/json' },
|
|
6
|
+
});
|
|
7
|
+
instance.interceptors.request.use((config) => {
|
|
8
|
+
if (apiKey) {
|
|
9
|
+
if (!config.headers)
|
|
10
|
+
config.headers = {};
|
|
11
|
+
config.headers['Authorization'] = `Bearer ${apiKey}`;
|
|
12
|
+
}
|
|
13
|
+
return config;
|
|
14
|
+
});
|
|
15
|
+
return instance;
|
|
16
|
+
};
|
|
17
|
+
export class ApiError extends Error {
|
|
18
|
+
constructor(message, status, data) {
|
|
19
|
+
super(message);
|
|
20
|
+
this.name = 'ApiError';
|
|
21
|
+
this.status = status;
|
|
22
|
+
this.data = data;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
export const httpRequest = async (http, config) => {
|
|
26
|
+
try {
|
|
27
|
+
const res = await http.request(config);
|
|
28
|
+
return res.data.data;
|
|
29
|
+
}
|
|
30
|
+
catch (err) {
|
|
31
|
+
const e = err;
|
|
32
|
+
const status = e.response?.status;
|
|
33
|
+
const data = e.response?.data;
|
|
34
|
+
const message = data?.message || e.message || 'Request failed';
|
|
35
|
+
throw new ApiError(message, status, data);
|
|
36
|
+
}
|
|
37
|
+
};
|
|
38
|
+
//# sourceMappingURL=axiosClient.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"axiosClient.js","sourceRoot":"","sources":["../../src/services/axiosClient.ts"],"names":[],"mappings":"AAAA,OAAO,KAAwD,MAAM,OAAO,CAAA;AAG5E,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,OAAe,EAAE,MAAe,EAAiB,EAAE;IAClF,MAAM,QAAQ,GAAG,KAAK,CAAC,MAAM,CAAC;QAC5B,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC;QACnC,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;KAChD,CAAC,CAAA;IAEF,QAAQ,CAAC,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE;QAC3C,IAAI,MAAM,EAAE,CAAC;YACX,IAAI,CAAC,MAAM,CAAC,OAAO;gBAAG,MAAc,CAAC,OAAO,GAAG,EAAE,CAChD;YAAC,MAAM,CAAC,OAAe,CAAC,eAAe,CAAC,GAAG,UAAU,MAAM,EAAE,CAAA;QAChE,CAAC;QACD,OAAO,MAAM,CAAA;IACf,CAAC,CAAC,CAAA;IAEF,OAAO,QAAQ,CAAA;AACjB,CAAC,CAAA;AAED,MAAM,OAAO,QAAS,SAAQ,KAAK;IAGjC,YAAY,OAAe,EAAE,MAAe,EAAE,IAAc;QAC1D,KAAK,CAAC,OAAO,CAAC,CAAA;QACd,IAAI,CAAC,IAAI,GAAG,UAAU,CAAA;QACtB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;QACpB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;IAClB,CAAC;CACF;AAED,MAAM,CAAC,MAAM,WAAW,GAAG,KAAK,EAAK,IAAmB,EAAE,MAA0B,EAAc,EAAE;IAClG,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,OAAO,CAAiB,MAAM,CAAC,CAAA;QACtD,OAAO,GAAG,CAAC,IAAI,CAAC,IAAI,CAAA;IACtB,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,CAAC,GAAG,GAAiB,CAAA;QAC3B,MAAM,MAAM,GAAG,CAAC,CAAC,QAAQ,EAAE,MAAM,CAAA;QACjC,MAAM,IAAI,GAAG,CAAC,CAAC,QAAQ,EAAE,IAAI,CAAA;QAC7B,MAAM,OAAO,GAAI,IAAY,EAAE,OAAO,IAAI,CAAC,CAAC,OAAO,IAAI,gBAAgB,CAAA;QACvE,MAAM,IAAI,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,CAAA;IAC3C,CAAC;AACH,CAAC,CAAA"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { ChatHistoryResponse, ConversationMessage, Message, SendMessageResponse, StartChatResponse } from '../types';
|
|
2
|
+
export interface StartChatRequest {
|
|
3
|
+
email: string;
|
|
4
|
+
}
|
|
5
|
+
export interface SendMessageRequest {
|
|
6
|
+
thread_id: string;
|
|
7
|
+
message: string;
|
|
8
|
+
}
|
|
9
|
+
export interface GetHistoryParams {
|
|
10
|
+
thread_id: string;
|
|
11
|
+
page?: number;
|
|
12
|
+
page_size?: number;
|
|
13
|
+
order?: 'asc' | 'desc';
|
|
14
|
+
}
|
|
15
|
+
export declare class ChatbotAPI {
|
|
16
|
+
private http;
|
|
17
|
+
constructor(baseUrl: string, apiKey?: string);
|
|
18
|
+
startChatSession(request: StartChatRequest, opts?: {
|
|
19
|
+
signal?: AbortSignal;
|
|
20
|
+
}): Promise<StartChatResponse>;
|
|
21
|
+
sendMessage(request: SendMessageRequest, opts?: {
|
|
22
|
+
signal?: AbortSignal;
|
|
23
|
+
}): Promise<SendMessageResponse>;
|
|
24
|
+
getChatHistory(params: GetHistoryParams, opts?: {
|
|
25
|
+
signal?: AbortSignal;
|
|
26
|
+
}): Promise<ChatHistoryResponse>;
|
|
27
|
+
convertApiMessagesToMessages(apiMessages: ConversationMessage[]): Message[];
|
|
28
|
+
getConversationHistory(threadId: string, page?: number, pageSize?: number, opts?: {
|
|
29
|
+
signal?: AbortSignal;
|
|
30
|
+
}): Promise<Message[]>;
|
|
31
|
+
}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { generateMessageId } from '../utils/helpers';
|
|
2
|
+
import { createHttpClient, httpRequest } from './axiosClient';
|
|
3
|
+
export class ChatbotAPI {
|
|
4
|
+
constructor(baseUrl, apiKey) {
|
|
5
|
+
if (!baseUrl) {
|
|
6
|
+
throw new Error('API baseUrl is required but was not provided. Please check your environment variables.');
|
|
7
|
+
}
|
|
8
|
+
this.http = createHttpClient(baseUrl, apiKey);
|
|
9
|
+
}
|
|
10
|
+
async startChatSession(request, opts) {
|
|
11
|
+
return httpRequest(this.http, {
|
|
12
|
+
url: '/ai/chat/start',
|
|
13
|
+
method: 'POST',
|
|
14
|
+
data: request,
|
|
15
|
+
signal: opts?.signal,
|
|
16
|
+
});
|
|
17
|
+
}
|
|
18
|
+
async sendMessage(request, opts) {
|
|
19
|
+
return httpRequest(this.http, {
|
|
20
|
+
url: '/ai/chat/message',
|
|
21
|
+
method: 'POST',
|
|
22
|
+
data: request,
|
|
23
|
+
signal: opts?.signal,
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
async getChatHistory(params, opts) {
|
|
27
|
+
return httpRequest(this.http, {
|
|
28
|
+
url: '/ai/chat/history',
|
|
29
|
+
method: 'GET',
|
|
30
|
+
params: {
|
|
31
|
+
thread_id: params.thread_id,
|
|
32
|
+
...(params.page ? { page: params.page } : {}),
|
|
33
|
+
...(params.page_size ? { page_size: params.page_size } : {}),
|
|
34
|
+
...(params.order ? { order: params.order } : {}),
|
|
35
|
+
},
|
|
36
|
+
signal: opts?.signal,
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
convertApiMessagesToMessages(apiMessages) {
|
|
40
|
+
return apiMessages.map(msg => ({
|
|
41
|
+
id: generateMessageId(),
|
|
42
|
+
text: msg.content,
|
|
43
|
+
sender: msg.role === 'user' ? 'user' : 'bot',
|
|
44
|
+
timestamp: new Date(msg.timestamp)
|
|
45
|
+
}));
|
|
46
|
+
}
|
|
47
|
+
async getConversationHistory(threadId, page = 1, pageSize = 10, opts) {
|
|
48
|
+
const historyResponse = await this.getChatHistory({ thread_id: threadId, page, page_size: pageSize, order: 'asc' }, opts);
|
|
49
|
+
return this.convertApiMessagesToMessages(historyResponse.conversation_history);
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
//# sourceMappingURL=client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/services/client.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAA;AACpD,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAkB7D,MAAM,OAAO,UAAU;IAGnB,YAAY,OAAe,EAAE,MAAe;QACxC,IAAI,CAAC,OAAO,EAAE,CAAC;YACX,MAAM,IAAI,KAAK,CAAC,wFAAwF,CAAC,CAAA;QAC7G,CAAC;QACD,IAAI,CAAC,IAAI,GAAG,gBAAgB,CAAC,OAAO,EAAE,MAAM,CAAC,CAAA;IACjD,CAAC;IAED,KAAK,CAAC,gBAAgB,CAAC,OAAyB,EAAE,IAA+B;QAC7E,OAAO,WAAW,CAAoB,IAAI,CAAC,IAAI,EAAE;YAC7C,GAAG,EAAE,gBAAgB;YACrB,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,OAAO;YACb,MAAM,EAAE,IAAI,EAAE,MAAM;SACvB,CAAC,CAAA;IACN,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,OAA2B,EAAE,IAA+B;QAC1E,OAAO,WAAW,CAAsB,IAAI,CAAC,IAAI,EAAE;YAC/C,GAAG,EAAE,kBAAkB;YACvB,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,OAAO;YACb,MAAM,EAAE,IAAI,EAAE,MAAM;SACvB,CAAC,CAAA;IACN,CAAC;IAED,KAAK,CAAC,cAAc,CAAC,MAAwB,EAAE,IAA+B;QAC1E,OAAO,WAAW,CAAsB,IAAI,CAAC,IAAI,EAAE;YAC/C,GAAG,EAAE,kBAAkB;YACvB,MAAM,EAAE,KAAK;YACb,MAAM,EAAE;gBACJ,SAAS,EAAE,MAAM,CAAC,SAAS;gBAC3B,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC7C,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC5D,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aACnD;YACD,MAAM,EAAE,IAAI,EAAE,MAAM;SACvB,CAAC,CAAA;IACN,CAAC;IAGD,4BAA4B,CAAC,WAAkC;QAC3D,OAAO,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAC3B,EAAE,EAAE,iBAAiB,EAAE;YACvB,IAAI,EAAE,GAAG,CAAC,OAAO;YACjB,MAAM,EAAE,GAAG,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK;YAC5C,SAAS,EAAE,IAAI,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC;SACrC,CAAC,CAAC,CAAA;IACP,CAAC;IAED,KAAK,CAAC,sBAAsB,CAAC,QAAgB,EAAE,OAAe,CAAC,EAAE,WAAmB,EAAE,EAAE,IAA+B;QACnH,MAAM,eAAe,GAAG,MAAM,IAAI,CAAC,cAAc,CAC7C,EAAE,SAAS,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,EAChE,IAAI,CACP,CAAA;QACD,OAAO,IAAI,CAAC,4BAA4B,CAAC,eAAe,CAAC,oBAAoB,CAAC,CAAA;IAClF,CAAC;CACJ"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { AxiosInstance, AxiosRequestConfig } from 'axios';
|
|
2
|
+
export declare const createHttpClient: (baseURL: string, apiKey?: string) => AxiosInstance;
|
|
3
|
+
export declare class ApiError extends Error {
|
|
4
|
+
status?: number;
|
|
5
|
+
data?: unknown;
|
|
6
|
+
constructor(message: string, status?: number, data?: unknown);
|
|
7
|
+
}
|
|
8
|
+
export declare const httpRequest: <T>(http: AxiosInstance, config: AxiosRequestConfig) => Promise<T>;
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import axios from 'axios';
|
|
2
|
+
export const createHttpClient = (baseURL, apiKey) => {
|
|
3
|
+
const instance = axios.create({
|
|
4
|
+
baseURL: baseURL.replace(/\/$/, ''),
|
|
5
|
+
headers: { 'Content-Type': 'application/json' },
|
|
6
|
+
});
|
|
7
|
+
instance.interceptors.request.use((config) => {
|
|
8
|
+
if (apiKey) {
|
|
9
|
+
if (!config.headers)
|
|
10
|
+
config.headers = {};
|
|
11
|
+
config.headers['Authorization'] = `Bearer ${apiKey}`;
|
|
12
|
+
}
|
|
13
|
+
return config;
|
|
14
|
+
});
|
|
15
|
+
return instance;
|
|
16
|
+
};
|
|
17
|
+
export class ApiError extends Error {
|
|
18
|
+
constructor(message, status, data) {
|
|
19
|
+
super(message);
|
|
20
|
+
this.name = 'ApiError';
|
|
21
|
+
this.status = status;
|
|
22
|
+
this.data = data;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
export const httpRequest = async (http, config) => {
|
|
26
|
+
try {
|
|
27
|
+
const res = await http.request(config);
|
|
28
|
+
return res.data.data;
|
|
29
|
+
}
|
|
30
|
+
catch (err) {
|
|
31
|
+
const e = err;
|
|
32
|
+
const status = e.response?.status;
|
|
33
|
+
const data = e.response?.data;
|
|
34
|
+
const message = data?.message || e.message || 'Request failed';
|
|
35
|
+
throw new ApiError(message, status, data);
|
|
36
|
+
}
|
|
37
|
+
};
|
|
38
|
+
//# sourceMappingURL=http.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"http.js","sourceRoot":"","sources":["../../src/services/http.ts"],"names":[],"mappings":"AAAA,OAAO,KAAwD,MAAM,OAAO,CAAA;AAG5E,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,OAAe,EAAE,MAAe,EAAiB,EAAE;IAClF,MAAM,QAAQ,GAAG,KAAK,CAAC,MAAM,CAAC;QAC5B,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC;QACnC,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;KAChD,CAAC,CAAA;IAEF,QAAQ,CAAC,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE;QAC3C,IAAI,MAAM,EAAE,CAAC;YACX,IAAI,CAAC,MAAM,CAAC,OAAO;gBAAG,MAAc,CAAC,OAAO,GAAG,EAAE,CAChD;YAAC,MAAM,CAAC,OAAe,CAAC,eAAe,CAAC,GAAG,UAAU,MAAM,EAAE,CAAA;QAChE,CAAC;QACD,OAAO,MAAM,CAAA;IACf,CAAC,CAAC,CAAA;IAEF,OAAO,QAAQ,CAAA;AACjB,CAAC,CAAA;AAED,MAAM,OAAO,QAAS,SAAQ,KAAK;IAGjC,YAAY,OAAe,EAAE,MAAe,EAAE,IAAc;QAC1D,KAAK,CAAC,OAAO,CAAC,CAAA;QACd,IAAI,CAAC,IAAI,GAAG,UAAU,CAAA;QACtB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;QACpB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;IAClB,CAAC;CACF;AAED,MAAM,CAAC,MAAM,WAAW,GAAG,KAAK,EAAK,IAAmB,EAAE,MAA0B,EAAc,EAAE;IAClG,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,OAAO,CAAiB,MAAM,CAAC,CAAA;QACtD,OAAO,GAAG,CAAC,IAAI,CAAC,IAAI,CAAA;IACtB,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,CAAC,GAAG,GAAiB,CAAA;QAC3B,MAAM,MAAM,GAAG,CAAC,CAAC,QAAQ,EAAE,MAAM,CAAA;QACjC,MAAM,IAAI,GAAG,CAAC,CAAC,QAAQ,EAAE,IAAI,CAAA;QAC7B,MAAM,OAAO,GAAI,IAAY,EAAE,OAAO,IAAI,CAAC,CAAC,OAAO,IAAI,gBAAgB,CAAA;QACvE,MAAM,IAAI,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,CAAA;IAC3C,CAAC;AACH,CAAC,CAAA"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
export interface Message {
|
|
2
|
+
id: string;
|
|
3
|
+
text: string;
|
|
4
|
+
sender: 'user' | 'bot';
|
|
5
|
+
timestamp: Date;
|
|
6
|
+
isError?: boolean;
|
|
7
|
+
}
|
|
8
|
+
export interface ApiResponse<T> {
|
|
9
|
+
statusCode: number;
|
|
10
|
+
status: string;
|
|
11
|
+
data: T;
|
|
12
|
+
}
|
|
13
|
+
export interface StartChatResponse {
|
|
14
|
+
message: string;
|
|
15
|
+
thread_status: string;
|
|
16
|
+
thread_id: string;
|
|
17
|
+
}
|
|
18
|
+
export interface SendMessageResponse {
|
|
19
|
+
message: string;
|
|
20
|
+
thread_status: string;
|
|
21
|
+
}
|
|
22
|
+
export interface ConversationMessage {
|
|
23
|
+
role: 'user' | 'assistant';
|
|
24
|
+
content: string;
|
|
25
|
+
timestamp: string;
|
|
26
|
+
}
|
|
27
|
+
export interface Pagination {
|
|
28
|
+
current_page: string;
|
|
29
|
+
page_size: string;
|
|
30
|
+
total_messages: number;
|
|
31
|
+
total_pages: number;
|
|
32
|
+
has_previous: boolean;
|
|
33
|
+
has_next: boolean;
|
|
34
|
+
}
|
|
35
|
+
export interface ChatHistoryResponse {
|
|
36
|
+
conversation_history: ConversationMessage[];
|
|
37
|
+
pagination: Pagination;
|
|
38
|
+
thread_status: string;
|
|
39
|
+
}
|
|
40
|
+
export interface ChatbotUser {
|
|
41
|
+
email: string;
|
|
42
|
+
isLoggedIn: boolean;
|
|
43
|
+
name?: string;
|
|
44
|
+
logoUrl?: string;
|
|
45
|
+
}
|
|
46
|
+
export interface NavigationLink {
|
|
47
|
+
label: string;
|
|
48
|
+
href: string;
|
|
49
|
+
isExternal?: boolean;
|
|
50
|
+
}
|
|
51
|
+
export interface MessageSuggestion {
|
|
52
|
+
id: string;
|
|
53
|
+
text: string;
|
|
54
|
+
}
|
|
55
|
+
export type ChatbotView = 'hello' | 'chat';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export declare const isValidEmail: (email: string) => boolean;
|
|
2
|
+
export declare const generateMessageId: () => string;
|
|
3
|
+
export declare const formatTimestamp: (date: Date) => string;
|
|
4
|
+
export declare const sanitizeText: (text: string) => string;
|
|
5
|
+
export declare const truncateText: (text: string, maxLength: number) => string;
|
|
6
|
+
export declare const isExternalUrl: (url: string) => boolean;
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
export const isValidEmail = (email) => {
|
|
2
|
+
const emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
|
|
3
|
+
return emailRegex.test(email.trim());
|
|
4
|
+
};
|
|
5
|
+
export const generateMessageId = () => {
|
|
6
|
+
return `msg_${Date.now()}_${Math.random().toString(36).substr(2, 9)}`;
|
|
7
|
+
};
|
|
8
|
+
export const formatTimestamp = (date) => {
|
|
9
|
+
const now = new Date();
|
|
10
|
+
const diffInMinutes = Math.floor((now.getTime() - date.getTime()) / (1000 * 60));
|
|
11
|
+
if (diffInMinutes < 1)
|
|
12
|
+
return 'Just now';
|
|
13
|
+
if (diffInMinutes < 60)
|
|
14
|
+
return `${diffInMinutes}m ago`;
|
|
15
|
+
const diffInHours = Math.floor(diffInMinutes / 60);
|
|
16
|
+
if (diffInHours < 24)
|
|
17
|
+
return `${diffInHours}h ago`;
|
|
18
|
+
const diffInDays = Math.floor(diffInHours / 24);
|
|
19
|
+
if (diffInDays < 7)
|
|
20
|
+
return `${diffInDays}d ago`;
|
|
21
|
+
return date.toLocaleDateString();
|
|
22
|
+
};
|
|
23
|
+
export const sanitizeText = (text) => {
|
|
24
|
+
return text
|
|
25
|
+
.replace(/&/g, '&')
|
|
26
|
+
.replace(/</g, '<')
|
|
27
|
+
.replace(/>/g, '>')
|
|
28
|
+
.replace(/\"/g, '"')
|
|
29
|
+
.replace(/'/g, ''')
|
|
30
|
+
.trim();
|
|
31
|
+
};
|
|
32
|
+
export const truncateText = (text, maxLength) => {
|
|
33
|
+
if (text.length <= maxLength)
|
|
34
|
+
return text;
|
|
35
|
+
return text.substring(0, maxLength - 3) + '...';
|
|
36
|
+
};
|
|
37
|
+
export const isExternalUrl = (url) => {
|
|
38
|
+
try {
|
|
39
|
+
const urlObj = new URL(url, window.location.origin);
|
|
40
|
+
return urlObj.origin !== window.location.origin;
|
|
41
|
+
}
|
|
42
|
+
catch {
|
|
43
|
+
return false;
|
|
44
|
+
}
|
|
45
|
+
};
|
|
46
|
+
//# sourceMappingURL=helpers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../src/utils/helpers.ts"],"names":[],"mappings":"AAKA,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,KAAa,EAAW,EAAE;IACnD,MAAM,UAAU,GAAG,4BAA4B,CAAA;IAC/C,OAAO,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAA;AACxC,CAAC,CAAA;AAKD,MAAM,CAAC,MAAM,iBAAiB,GAAG,GAAW,EAAE;IAC1C,OAAO,OAAO,IAAI,CAAC,GAAG,EAAE,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAA;AACzE,CAAC,CAAA;AAKD,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,IAAU,EAAU,EAAE;IAClD,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAA;IACtB,MAAM,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC,GAAG,CAAC,IAAI,GAAG,EAAE,CAAC,CAAC,CAAA;IAEhF,IAAI,aAAa,GAAG,CAAC;QAAE,OAAO,UAAU,CAAA;IACxC,IAAI,aAAa,GAAG,EAAE;QAAE,OAAO,GAAG,aAAa,OAAO,CAAA;IAEtD,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,GAAG,EAAE,CAAC,CAAA;IAClD,IAAI,WAAW,GAAG,EAAE;QAAE,OAAO,GAAG,WAAW,OAAO,CAAA;IAElD,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,GAAG,EAAE,CAAC,CAAA;IAC/C,IAAI,UAAU,GAAG,CAAC;QAAE,OAAO,GAAG,UAAU,OAAO,CAAA;IAE/C,OAAO,IAAI,CAAC,kBAAkB,EAAE,CAAA;AACpC,CAAC,CAAA;AAKD,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,IAAY,EAAU,EAAE;IACjD,OAAO,IAAI;SACN,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC;SACtB,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC;SACrB,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC;SACrB,OAAO,CAAC,KAAK,EAAE,QAAQ,CAAC;SACxB,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC;SACvB,IAAI,EAAE,CAAA;AACf,CAAC,CAAA;AAMD,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,IAAY,EAAE,SAAiB,EAAU,EAAE;IACpE,IAAI,IAAI,CAAC,MAAM,IAAI,SAAS;QAAE,OAAO,IAAI,CAAA;IACzC,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,SAAS,GAAG,CAAC,CAAC,GAAG,KAAK,CAAA;AACnD,CAAC,CAAA;AAKD,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,GAAW,EAAW,EAAE;IAClD,IAAI,CAAC;QACD,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAA;QACnD,OAAO,MAAM,CAAC,MAAM,KAAK,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAA;IACnD,CAAC;IAAC,MAAM,CAAC;QACL,OAAO,KAAK,CAAA;IAChB,CAAC;AACL,CAAC,CAAA"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { ChatbotUser, Message } from "../types";
|
|
2
|
+
interface ChatPageProps {
|
|
3
|
+
messages: Message[];
|
|
4
|
+
user: ChatbotUser;
|
|
5
|
+
isLoading: boolean;
|
|
6
|
+
isTyping?: boolean;
|
|
7
|
+
isEmailSubmitting?: boolean;
|
|
8
|
+
historyMessageIds?: Set<string>;
|
|
9
|
+
currentlyProcessingMessageId?: string | null;
|
|
10
|
+
clearProcessingMessageId?: () => void;
|
|
11
|
+
onSendMessage: (text: string) => void;
|
|
12
|
+
onEmailSubmit: (email: string) => void;
|
|
13
|
+
onRetryMessage?: () => void;
|
|
14
|
+
}
|
|
15
|
+
declare function ChatPage({ messages, user, isLoading, isTyping, isEmailSubmitting, historyMessageIds, currentlyProcessingMessageId, clearProcessingMessageId, onSendMessage, onEmailSubmit, onRetryMessage }: ChatPageProps): import("react/jsx-runtime").JSX.Element;
|
|
16
|
+
export default ChatPage;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { Box, VStack } from "@chakra-ui/react";
|
|
3
|
+
import MessageInput from "../components/MessageInput";
|
|
4
|
+
import MessageList from "../components/MessageList";
|
|
5
|
+
function ChatPage({ messages, user, isLoading, isTyping = false, isEmailSubmitting = false, historyMessageIds, currentlyProcessingMessageId, clearProcessingMessageId, onSendMessage, onEmailSubmit, onRetryMessage }) {
|
|
6
|
+
return (_jsxs(VStack, { h: "full", children: [_jsx(Box, { flex: 1, w: "full", overflow: "hidden", children: _jsx(MessageList, { messages: messages, user: user, isTyping: isTyping, historyMessageIds: historyMessageIds, currentlyProcessingMessageId: currentlyProcessingMessageId, clearProcessingMessageId: clearProcessingMessageId, onRetryMessage: onRetryMessage }) }), _jsx(Box, { w: "full", pt: 4, children: _jsx(MessageInput, { onSend: onSendMessage, user: user, onEmailSubmit: onEmailSubmit, isLoading: isLoading, isEmailSubmitting: isEmailSubmitting, messages: messages }) })] }));
|
|
7
|
+
}
|
|
8
|
+
export default ChatPage;
|
|
9
|
+
//# sourceMappingURL=ChatPage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ChatPage.js","sourceRoot":"","sources":["../../src/views/ChatPage.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAA;AAE9C,OAAO,YAAY,MAAM,4BAA4B,CAAA;AACrD,OAAO,WAAW,MAAM,2BAA2B,CAAA;AAgBnD,SAAS,QAAQ,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,GAAG,KAAK,EAAE,iBAAiB,GAAG,KAAK,EAAE,iBAAiB,EAAE,4BAA4B,EAAE,wBAAwB,EAAE,aAAa,EAAE,aAAa,EAAE,cAAc,EAAiB;IAChO,OAAO,CACH,MAAC,MAAM,IAAC,CAAC,EAAC,MAAM,aACZ,KAAC,GAAG,IAAC,IAAI,EAAE,CAAC,EAAE,CAAC,EAAC,MAAM,EAAC,QAAQ,EAAC,QAAQ,YACpC,KAAC,WAAW,IACV,QAAQ,EAAE,QAAQ,EAClB,IAAI,EAAE,IAAI,EACV,QAAQ,EAAE,QAAQ,EAClB,iBAAiB,EAAE,iBAAiB,EACpC,4BAA4B,EAAE,4BAA4B,EAC1D,wBAAwB,EAAE,wBAAwB,EAClD,cAAc,EAAE,cAAc,GAC9B,GACA,EAEN,KAAC,GAAG,IAAC,CAAC,EAAC,MAAM,EAAC,EAAE,EAAE,CAAC,YACf,KAAC,YAAY,IACT,MAAM,EAAE,aAAa,EACrB,IAAI,EAAE,IAAI,EACV,aAAa,EAAE,aAAa,EAC5B,SAAS,EAAE,SAAS,EACpB,iBAAiB,EAAE,iBAAiB,EACpC,QAAQ,EAAE,QAAQ,GACpB,GACA,IACD,CACZ,CAAA;AACL,CAAC;AAED,eAAe,QAAQ,CAAA"}
|