@scalemule/chat 0.0.8 → 0.0.9
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/dist/ChatClient-DQPHdUHX.d.cts +107 -0
- package/dist/ChatClient-DtUKF-4c.d.ts +107 -0
- package/dist/constants.d.ts +9 -0
- package/dist/constants.d.ts.map +1 -0
- package/dist/core/ChatClient.d.ts +96 -0
- package/dist/core/ChatClient.d.ts.map +1 -0
- package/dist/core/EventEmitter.d.ts +11 -0
- package/dist/core/EventEmitter.d.ts.map +1 -0
- package/dist/core/MessageCache.d.ts +18 -0
- package/dist/core/MessageCache.d.ts.map +1 -0
- package/dist/core/OfflineQueue.d.ts +19 -0
- package/dist/core/OfflineQueue.d.ts.map +1 -0
- package/dist/element.d.cts +2 -0
- package/dist/element.d.ts +2 -0
- package/dist/element.d.ts.map +1 -0
- package/dist/embed/index.d.ts +2 -0
- package/dist/embed/index.d.ts.map +1 -0
- package/dist/factory.d.ts +8 -0
- package/dist/factory.d.ts.map +1 -0
- package/dist/iframe.d.cts +17 -0
- package/dist/iframe.d.ts +15 -0
- package/dist/iframe.d.ts.map +1 -0
- package/dist/index.d.cts +166 -0
- package/dist/index.d.ts +8 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/react-components/ChatInput.d.ts +24 -0
- package/dist/react-components/ChatInput.d.ts.map +1 -0
- package/dist/react-components/ChatMessageItem.d.ts +24 -0
- package/dist/react-components/ChatMessageItem.d.ts.map +1 -0
- package/dist/react-components/ChatMessageList.d.ts +31 -0
- package/dist/react-components/ChatMessageList.d.ts.map +1 -0
- package/dist/react-components/ChatThread.d.ts +19 -0
- package/dist/react-components/ChatThread.d.ts.map +1 -0
- package/dist/react-components/ConversationList.d.ts +13 -0
- package/dist/react-components/ConversationList.d.ts.map +1 -0
- package/dist/react-components/EmojiPicker.d.ts +15 -0
- package/dist/react-components/EmojiPicker.d.ts.map +1 -0
- package/dist/react-components/ReactionBar.d.ts +10 -0
- package/dist/react-components/ReactionBar.d.ts.map +1 -0
- package/dist/react-components/ReportDialog.d.ts +30 -0
- package/dist/react-components/ReportDialog.d.ts.map +1 -0
- package/dist/react-components/index.d.ts +10 -0
- package/dist/react-components/index.d.ts.map +1 -0
- package/dist/react-components/theme.d.ts +19 -0
- package/dist/react-components/theme.d.ts.map +1 -0
- package/dist/react-components/utils.d.ts +4 -0
- package/dist/react-components/utils.d.ts.map +1 -0
- package/dist/react.cjs +1833 -459
- package/dist/react.d.cts +229 -0
- package/dist/react.d.ts +72 -0
- package/dist/react.d.ts.map +1 -0
- package/dist/react.js +1832 -461
- package/dist/shared/ChatController.d.ts +65 -0
- package/dist/shared/ChatController.d.ts.map +1 -0
- package/dist/shared/upload.d.ts +3 -0
- package/dist/shared/upload.d.ts.map +1 -0
- package/dist/support-widget.global.js +50 -25
- package/dist/support.d.ts +99 -0
- package/dist/support.d.ts.map +1 -0
- package/dist/transport/HttpTransport.d.ts +20 -0
- package/dist/transport/HttpTransport.d.ts.map +1 -0
- package/dist/transport/WebSocketTransport.d.ts +78 -0
- package/dist/transport/WebSocketTransport.d.ts.map +1 -0
- package/dist/types-COPVrm3K.d.cts +256 -0
- package/dist/types-COPVrm3K.d.ts +256 -0
- package/dist/types.d.ts +271 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/umd.d.ts +6 -0
- package/dist/umd.d.ts.map +1 -0
- package/dist/version.d.ts +2 -0
- package/dist/version.d.ts.map +1 -0
- package/dist/widget/icons.d.ts +8 -0
- package/dist/widget/icons.d.ts.map +1 -0
- package/dist/widget/index.d.ts +2 -0
- package/dist/widget/index.d.ts.map +1 -0
- package/dist/widget/storage.d.ts +5 -0
- package/dist/widget/storage.d.ts.map +1 -0
- package/dist/widget/styles.d.ts +3 -0
- package/dist/widget/styles.d.ts.map +1 -0
- package/package.json +1 -1
package/dist/react.d.cts
ADDED
|
@@ -0,0 +1,229 @@
|
|
|
1
|
+
import { f as Attachment, e as ChatMessage, d as Conversation, p as ReactionSummary, C as ChatConfig, R as ReadStatus, S as SendMessageOptions, A as ApiResponse, b as ConnectionStatus } from './types-COPVrm3K.cjs';
|
|
2
|
+
export { G as GetMessagesOptions, L as ListConversationsOptions, M as MessagesResponse, U as UnreadTotalResponse } from './types-COPVrm3K.cjs';
|
|
3
|
+
import React, { ReactNode } from 'react';
|
|
4
|
+
import { C as ChatClient } from './ChatClient-DQPHdUHX.cjs';
|
|
5
|
+
|
|
6
|
+
interface ChatInputProps {
|
|
7
|
+
onSend: (content: string, attachments?: Attachment[]) => void | Promise<void>;
|
|
8
|
+
onTypingChange?: (isTyping: boolean) => void;
|
|
9
|
+
onUploadAttachment?: (file: File | Blob, onProgress?: (percent: number) => void, signal?: AbortSignal) => Promise<{
|
|
10
|
+
data: Attachment | null;
|
|
11
|
+
error: {
|
|
12
|
+
message: string;
|
|
13
|
+
} | null;
|
|
14
|
+
} | undefined>;
|
|
15
|
+
onDeleteAttachment?: (fileId: string) => void | Promise<void>;
|
|
16
|
+
onValidateFile?: (file: File) => {
|
|
17
|
+
valid: boolean;
|
|
18
|
+
error?: string;
|
|
19
|
+
};
|
|
20
|
+
placeholder?: string;
|
|
21
|
+
disabled?: boolean;
|
|
22
|
+
maxAttachments?: number;
|
|
23
|
+
accept?: string;
|
|
24
|
+
}
|
|
25
|
+
declare function ChatInput({ onSend, onTypingChange, onUploadAttachment, onDeleteAttachment, onValidateFile, placeholder, disabled, maxAttachments, accept, }: ChatInputProps): React.JSX.Element;
|
|
26
|
+
|
|
27
|
+
interface UserProfile$2 {
|
|
28
|
+
display_name: string;
|
|
29
|
+
username?: string;
|
|
30
|
+
avatar_url?: string;
|
|
31
|
+
}
|
|
32
|
+
interface ChatMessageItemProps {
|
|
33
|
+
message: ChatMessage;
|
|
34
|
+
currentUserId?: string;
|
|
35
|
+
conversationId?: string;
|
|
36
|
+
profile?: UserProfile$2;
|
|
37
|
+
onAddReaction?: (messageId: string, emoji: string) => void | Promise<void>;
|
|
38
|
+
onRemoveReaction?: (messageId: string, emoji: string) => void | Promise<void>;
|
|
39
|
+
onEdit?: (messageId: string, content: string) => void | Promise<void>;
|
|
40
|
+
onDelete?: (messageId: string) => void | Promise<void>;
|
|
41
|
+
onReport?: (messageId: string) => void;
|
|
42
|
+
onFetchAttachmentUrl?: (fileId: string) => Promise<string>;
|
|
43
|
+
isOwnMessage?: boolean;
|
|
44
|
+
highlight?: boolean;
|
|
45
|
+
}
|
|
46
|
+
declare function ChatMessageItem({ message, currentUserId, conversationId, profile, onAddReaction, onRemoveReaction, onEdit, onDelete, onReport, onFetchAttachmentUrl, isOwnMessage: isOwnMessageProp, highlight, }: ChatMessageItemProps): React.JSX.Element;
|
|
47
|
+
|
|
48
|
+
interface UserProfile$1 {
|
|
49
|
+
display_name: string;
|
|
50
|
+
username?: string;
|
|
51
|
+
avatar_url?: string;
|
|
52
|
+
}
|
|
53
|
+
interface ChatMessageListProps {
|
|
54
|
+
messages: ChatMessage[];
|
|
55
|
+
currentUserId?: string;
|
|
56
|
+
conversationId?: string;
|
|
57
|
+
profiles?: Map<string, UserProfile$1>;
|
|
58
|
+
hasMore?: boolean;
|
|
59
|
+
isLoading?: boolean;
|
|
60
|
+
onLoadMore?: () => void;
|
|
61
|
+
onAddReaction?: (messageId: string, emoji: string) => void | Promise<void>;
|
|
62
|
+
onRemoveReaction?: (messageId: string, emoji: string) => void | Promise<void>;
|
|
63
|
+
onEdit?: (messageId: string, content: string) => void | Promise<void>;
|
|
64
|
+
onDelete?: (messageId: string) => void | Promise<void>;
|
|
65
|
+
onReport?: (messageId: string) => void;
|
|
66
|
+
onFetchAttachmentUrl?: (fileId: string) => Promise<string>;
|
|
67
|
+
firstUnreadMessageId?: string;
|
|
68
|
+
/** @deprecated use firstUnreadMessageId instead */
|
|
69
|
+
unreadSince?: string;
|
|
70
|
+
isNearBottom?: boolean;
|
|
71
|
+
onReachBottom?: () => void;
|
|
72
|
+
emptyState?: React.ReactNode;
|
|
73
|
+
}
|
|
74
|
+
declare function ChatMessageList({ messages, currentUserId, conversationId, profiles, hasMore, isLoading, onLoadMore, onAddReaction, onRemoveReaction, onEdit, onDelete, onReport, onFetchAttachmentUrl, firstUnreadMessageId, unreadSince, isNearBottom: isNearBottomProp, onReachBottom, emptyState, }: ChatMessageListProps): React.JSX.Element;
|
|
75
|
+
|
|
76
|
+
interface ChatTheme {
|
|
77
|
+
primary?: string;
|
|
78
|
+
ownBubble?: string;
|
|
79
|
+
ownText?: string;
|
|
80
|
+
otherBubble?: string;
|
|
81
|
+
otherText?: string;
|
|
82
|
+
surface?: string;
|
|
83
|
+
surfaceMuted?: string;
|
|
84
|
+
borderColor?: string;
|
|
85
|
+
textColor?: string;
|
|
86
|
+
mutedText?: string;
|
|
87
|
+
borderRadius?: number | string;
|
|
88
|
+
fontFamily?: string;
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
interface UserProfile {
|
|
92
|
+
display_name: string;
|
|
93
|
+
username?: string;
|
|
94
|
+
avatar_url?: string;
|
|
95
|
+
}
|
|
96
|
+
interface ChatThreadProps {
|
|
97
|
+
conversationId: string;
|
|
98
|
+
theme?: ChatTheme;
|
|
99
|
+
currentUserId?: string;
|
|
100
|
+
profiles?: Map<string, UserProfile>;
|
|
101
|
+
title?: string;
|
|
102
|
+
subtitle?: string;
|
|
103
|
+
onFetchAttachmentUrl?: (fileId: string) => Promise<string>;
|
|
104
|
+
}
|
|
105
|
+
declare function ChatThread({ conversationId, theme, currentUserId, profiles, title, subtitle, onFetchAttachmentUrl, }: ChatThreadProps): React.JSX.Element;
|
|
106
|
+
|
|
107
|
+
interface ConversationListProps {
|
|
108
|
+
conversationType?: Conversation['conversation_type'];
|
|
109
|
+
selectedConversationId?: string | null;
|
|
110
|
+
onSelect?: (conversation: Conversation) => void;
|
|
111
|
+
theme?: ChatTheme;
|
|
112
|
+
title?: string;
|
|
113
|
+
}
|
|
114
|
+
declare function ConversationList({ conversationType, selectedConversationId, onSelect, theme, title, }: ConversationListProps): React.JSX.Element;
|
|
115
|
+
|
|
116
|
+
interface EmojiPickerProps {
|
|
117
|
+
onSelect: (emoji: string) => void;
|
|
118
|
+
onClose: () => void;
|
|
119
|
+
anchorRef: React.RefObject<HTMLButtonElement | null>;
|
|
120
|
+
emojis?: string[];
|
|
121
|
+
}
|
|
122
|
+
declare function EmojiPicker({ onSelect, onClose, anchorRef, emojis, }: EmojiPickerProps): React.JSX.Element | null;
|
|
123
|
+
interface EmojiPickerTriggerProps {
|
|
124
|
+
onSelect: (emoji: string) => void;
|
|
125
|
+
emojis?: string[];
|
|
126
|
+
}
|
|
127
|
+
declare function EmojiPickerTrigger({ onSelect, emojis, }: EmojiPickerTriggerProps): React.JSX.Element;
|
|
128
|
+
|
|
129
|
+
interface ReactionBarProps {
|
|
130
|
+
reactions: ReactionSummary[];
|
|
131
|
+
currentUserId?: string;
|
|
132
|
+
onToggleReaction: (emoji: string) => void;
|
|
133
|
+
}
|
|
134
|
+
declare function ReactionBar({ reactions, currentUserId, onToggleReaction, }: ReactionBarProps): React.JSX.Element | null;
|
|
135
|
+
|
|
136
|
+
declare const REPORT_REASONS: readonly [{
|
|
137
|
+
readonly value: "spam";
|
|
138
|
+
readonly label: "Spam";
|
|
139
|
+
}, {
|
|
140
|
+
readonly value: "harassment";
|
|
141
|
+
readonly label: "Harassment";
|
|
142
|
+
}, {
|
|
143
|
+
readonly value: "hate";
|
|
144
|
+
readonly label: "Hate speech";
|
|
145
|
+
}, {
|
|
146
|
+
readonly value: "violence";
|
|
147
|
+
readonly label: "Violence";
|
|
148
|
+
}, {
|
|
149
|
+
readonly value: "other";
|
|
150
|
+
readonly label: "Other";
|
|
151
|
+
}];
|
|
152
|
+
type ReportReason = (typeof REPORT_REASONS)[number]['value'];
|
|
153
|
+
interface ReportDialogProps {
|
|
154
|
+
messageId: string;
|
|
155
|
+
onSubmit: (data: {
|
|
156
|
+
messageId: string;
|
|
157
|
+
reason: ReportReason;
|
|
158
|
+
description?: string;
|
|
159
|
+
}) => void | Promise<void>;
|
|
160
|
+
onClose: () => void;
|
|
161
|
+
}
|
|
162
|
+
declare function ReportDialog({ messageId, onSubmit, onClose, }: ReportDialogProps): React.JSX.Element;
|
|
163
|
+
|
|
164
|
+
interface ChatProviderProps {
|
|
165
|
+
config: ChatConfig;
|
|
166
|
+
children: ReactNode;
|
|
167
|
+
}
|
|
168
|
+
declare function ChatProvider({ config, children }: ChatProviderProps): React.JSX.Element;
|
|
169
|
+
/** Direct access to the ChatClient instance for custom event subscriptions (e.g., support:new). */
|
|
170
|
+
declare function useChatClient(): ChatClient;
|
|
171
|
+
declare function useChatConfig(): ChatConfig;
|
|
172
|
+
declare function useConnection(): {
|
|
173
|
+
status: ConnectionStatus;
|
|
174
|
+
connect: () => void;
|
|
175
|
+
disconnect: () => void;
|
|
176
|
+
};
|
|
177
|
+
declare function useChat(conversationId?: string): {
|
|
178
|
+
messages: ChatMessage[];
|
|
179
|
+
readStatuses: ReadStatus[];
|
|
180
|
+
isLoading: boolean;
|
|
181
|
+
error: string | null;
|
|
182
|
+
hasMore: boolean;
|
|
183
|
+
sendMessage: (content: string, options?: Partial<SendMessageOptions>) => Promise<ApiResponse<ChatMessage> | undefined>;
|
|
184
|
+
loadMore: () => Promise<void>;
|
|
185
|
+
editMessage: (messageId: string, content: string) => Promise<ApiResponse<void>>;
|
|
186
|
+
deleteMessage: (messageId: string) => Promise<ApiResponse<void>>;
|
|
187
|
+
addReaction: (messageId: string, emoji: string) => Promise<ApiResponse<void>>;
|
|
188
|
+
removeReaction: (messageId: string, emoji: string) => Promise<ApiResponse<void>>;
|
|
189
|
+
uploadAttachment: (file: File | Blob, onProgress?: (percent: number) => void, signal?: AbortSignal) => Promise<ApiResponse<Attachment>>;
|
|
190
|
+
refreshAttachmentUrl: (messageId: string, fileId: string) => Promise<ApiResponse<{
|
|
191
|
+
url: string;
|
|
192
|
+
}>>;
|
|
193
|
+
reportMessage: (messageId: string, reason: "spam" | "harassment" | "hate" | "violence" | "other", description?: string) => Promise<ApiResponse<{
|
|
194
|
+
reported: boolean;
|
|
195
|
+
}>>;
|
|
196
|
+
muteConversation: (mutedUntil?: string) => Promise<ApiResponse<{
|
|
197
|
+
muted: boolean;
|
|
198
|
+
}> | undefined>;
|
|
199
|
+
unmuteConversation: () => Promise<ApiResponse<{
|
|
200
|
+
muted: boolean;
|
|
201
|
+
}> | undefined>;
|
|
202
|
+
getReadStatus: () => Promise<ApiResponse<{
|
|
203
|
+
statuses: ReadStatus[];
|
|
204
|
+
}> | undefined>;
|
|
205
|
+
markRead: () => Promise<void>;
|
|
206
|
+
};
|
|
207
|
+
declare function usePresence(conversationId?: string): {
|
|
208
|
+
members: {
|
|
209
|
+
userId: string;
|
|
210
|
+
status: string;
|
|
211
|
+
userData?: unknown;
|
|
212
|
+
}[];
|
|
213
|
+
};
|
|
214
|
+
declare function useTyping(conversationId?: string): {
|
|
215
|
+
typingUsers: string[];
|
|
216
|
+
sendTyping: (isTyping?: boolean) => void;
|
|
217
|
+
};
|
|
218
|
+
declare function useConversations(options?: {
|
|
219
|
+
conversationType?: string;
|
|
220
|
+
}): {
|
|
221
|
+
conversations: Conversation[];
|
|
222
|
+
isLoading: boolean;
|
|
223
|
+
refresh: () => Promise<void>;
|
|
224
|
+
};
|
|
225
|
+
declare function useUnreadCount(): {
|
|
226
|
+
totalUnread: number;
|
|
227
|
+
};
|
|
228
|
+
|
|
229
|
+
export { ApiResponse, ChatClient, ChatConfig, ChatInput, ChatMessage, ChatMessageItem, ChatMessageList, ChatProvider, type ChatTheme, ChatThread, ConnectionStatus, Conversation, ConversationList, EmojiPicker, EmojiPickerTrigger, ReactionBar, ReactionSummary, ReadStatus, ReportDialog, SendMessageOptions, useChat, useChatClient, useChatConfig, useConnection, useConversations, usePresence, useTyping, useUnreadCount };
|
package/dist/react.d.ts
ADDED
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import React, { type ReactNode } from 'react';
|
|
2
|
+
import { ChatClient } from './core/ChatClient';
|
|
3
|
+
import type { ChatConfig, ChatMessage, ConnectionStatus, Conversation, ApiResponse, ReadStatus, SendMessageOptions } from './types';
|
|
4
|
+
interface ChatProviderProps {
|
|
5
|
+
config: ChatConfig;
|
|
6
|
+
children: ReactNode;
|
|
7
|
+
}
|
|
8
|
+
export declare function ChatProvider({ config, children }: ChatProviderProps): React.JSX.Element;
|
|
9
|
+
/** Direct access to the ChatClient instance for custom event subscriptions (e.g., support:new). */
|
|
10
|
+
export declare function useChatClient(): ChatClient;
|
|
11
|
+
export declare function useChatConfig(): ChatConfig;
|
|
12
|
+
export declare function useConnection(): {
|
|
13
|
+
status: ConnectionStatus;
|
|
14
|
+
connect: () => void;
|
|
15
|
+
disconnect: () => void;
|
|
16
|
+
};
|
|
17
|
+
export declare function useChat(conversationId?: string): {
|
|
18
|
+
messages: ChatMessage[];
|
|
19
|
+
readStatuses: ReadStatus[];
|
|
20
|
+
isLoading: boolean;
|
|
21
|
+
error: string | null;
|
|
22
|
+
hasMore: boolean;
|
|
23
|
+
sendMessage: (content: string, options?: Partial<SendMessageOptions>) => Promise<ApiResponse<ChatMessage> | undefined>;
|
|
24
|
+
loadMore: () => Promise<void>;
|
|
25
|
+
editMessage: (messageId: string, content: string) => Promise<ApiResponse<void>>;
|
|
26
|
+
deleteMessage: (messageId: string) => Promise<ApiResponse<void>>;
|
|
27
|
+
addReaction: (messageId: string, emoji: string) => Promise<ApiResponse<void>>;
|
|
28
|
+
removeReaction: (messageId: string, emoji: string) => Promise<ApiResponse<void>>;
|
|
29
|
+
uploadAttachment: (file: File | Blob, onProgress?: (percent: number) => void, signal?: AbortSignal) => Promise<ApiResponse<import("./types").Attachment>>;
|
|
30
|
+
refreshAttachmentUrl: (messageId: string, fileId: string) => Promise<ApiResponse<{
|
|
31
|
+
url: string;
|
|
32
|
+
}>>;
|
|
33
|
+
reportMessage: (messageId: string, reason: "spam" | "harassment" | "hate" | "violence" | "other", description?: string) => Promise<ApiResponse<{
|
|
34
|
+
reported: boolean;
|
|
35
|
+
}>>;
|
|
36
|
+
muteConversation: (mutedUntil?: string) => Promise<ApiResponse<{
|
|
37
|
+
muted: boolean;
|
|
38
|
+
}> | undefined>;
|
|
39
|
+
unmuteConversation: () => Promise<ApiResponse<{
|
|
40
|
+
muted: boolean;
|
|
41
|
+
}> | undefined>;
|
|
42
|
+
getReadStatus: () => Promise<ApiResponse<{
|
|
43
|
+
statuses: ReadStatus[];
|
|
44
|
+
}> | undefined>;
|
|
45
|
+
markRead: () => Promise<void>;
|
|
46
|
+
};
|
|
47
|
+
export declare function usePresence(conversationId?: string): {
|
|
48
|
+
members: {
|
|
49
|
+
userId: string;
|
|
50
|
+
status: string;
|
|
51
|
+
userData?: unknown;
|
|
52
|
+
}[];
|
|
53
|
+
};
|
|
54
|
+
export declare function useTyping(conversationId?: string): {
|
|
55
|
+
typingUsers: string[];
|
|
56
|
+
sendTyping: (isTyping?: boolean) => void;
|
|
57
|
+
};
|
|
58
|
+
export declare function useConversations(options?: {
|
|
59
|
+
conversationType?: string;
|
|
60
|
+
}): {
|
|
61
|
+
conversations: Conversation[];
|
|
62
|
+
isLoading: boolean;
|
|
63
|
+
refresh: () => Promise<void>;
|
|
64
|
+
};
|
|
65
|
+
export declare function useUnreadCount(): {
|
|
66
|
+
totalUnread: number;
|
|
67
|
+
};
|
|
68
|
+
export { ChatInput, ChatMessageItem, ChatMessageList, ChatThread, ConversationList, EmojiPicker, EmojiPickerTrigger, ReactionBar, ReportDialog, } from './react-components';
|
|
69
|
+
export { ChatClient } from './core/ChatClient';
|
|
70
|
+
export type { ChatConfig, ChatMessage, ConnectionStatus, Conversation, ApiResponse, SendMessageOptions, GetMessagesOptions, MessagesResponse, ReadStatus, ReactionSummary, UnreadTotalResponse, ListConversationsOptions, } from './types';
|
|
71
|
+
export type { ChatTheme } from './react-components';
|
|
72
|
+
//# sourceMappingURL=react.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"react.d.ts","sourceRoot":"","sources":["../src/react.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAOZ,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AACf,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,KAAK,EACV,UAAU,EACV,WAAW,EACX,gBAAgB,EAChB,YAAY,EACZ,WAAW,EACX,UAAU,EACV,kBAAkB,EAGnB,MAAM,SAAS,CAAC;AAmBjB,UAAU,iBAAiB;IACzB,MAAM,EAAE,UAAU,CAAC;IACnB,QAAQ,EAAE,SAAS,CAAC;CACrB;AAED,wBAAgB,YAAY,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,iBAAiB,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAUvF;AAID,mGAAmG;AACnG,wBAAgB,aAAa,IAAI,UAAU,CAE1C;AAED,wBAAgB,aAAa,IAAI,UAAU,CAE1C;AAID,wBAAgB,aAAa,IAAI;IAAE,MAAM,EAAE,gBAAgB,CAAC;IAAC,OAAO,EAAE,MAAM,IAAI,CAAC;IAAC,UAAU,EAAE,MAAM,IAAI,CAAA;CAAE,CAoBzG;AAED,wBAAgB,OAAO,CAAC,cAAc,CAAC,EAAE,MAAM;;;;;;2BAuH3B,MAAM,YAAY,OAAO,CAAC,kBAAkB,CAAC;;6BAkB3C,MAAM,WAAW,MAAM;+BAWvB,MAAM;6BAWN,MAAM,SAAS,MAAM;gCAWrB,MAAM,SAAS,MAAM;6BAW1B,IAAI,GAAG,IAAI,eAAe,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,WAAW,WAAW;sCAWpE,MAAM,UAAU,MAAM;;;+BAY3B,MAAM,UACT,MAAM,GAAG,YAAY,GAAG,MAAM,GAAG,UAAU,GAAG,OAAO,gBAC/C,MAAM;;;oCAYF,MAAM;;;;;;;;;;EAyD7B;AAED,wBAAgB,WAAW,CAAC,cAAc,CAAC,EAAE,MAAM;;gBAGrC,MAAM;gBAAU,MAAM;mBAAa,OAAO;;EAmEvD;AAED,wBAAgB,SAAS,CAAC,cAAc,CAAC,EAAE,MAAM;;;EAqDhD;AAID,wBAAgB,gBAAgB,CAAC,OAAO,CAAC,EAAE;IAAE,gBAAgB,CAAC,EAAE,MAAM,CAAA;CAAE;;;;EA+CvE;AAID,wBAAgB,cAAc;;EAmC7B;AAED,OAAO,EACL,SAAS,EACT,eAAe,EACf,eAAe,EACf,UAAU,EACV,gBAAgB,EAChB,WAAW,EACX,kBAAkB,EAClB,WAAW,EACX,YAAY,GACb,MAAM,oBAAoB,CAAC;AAG5B,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,YAAY,EACV,UAAU,EACV,WAAW,EACX,gBAAgB,EAChB,YAAY,EACZ,WAAW,EACX,kBAAkB,EAClB,kBAAkB,EAClB,gBAAgB,EAChB,UAAU,EACV,eAAe,EACf,mBAAmB,EACnB,wBAAwB,GACzB,MAAM,SAAS,CAAC;AACjB,YAAY,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC"}
|