@servicetitan/titan-chat-ui-common 3.0.0
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/CHANGELOG.md +9 -0
- package/dist/index.d.ts +5 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +5 -0
- package/dist/index.js.map +1 -0
- package/dist/models/__mocks__/support-chat.mock.d.ts +9 -0
- package/dist/models/__mocks__/support-chat.mock.d.ts.map +1 -0
- package/dist/models/__mocks__/support-chat.mock.js +82 -0
- package/dist/models/__mocks__/support-chat.mock.js.map +1 -0
- package/dist/models/chat-customizations.d.ts +42 -0
- package/dist/models/chat-customizations.d.ts.map +1 -0
- package/dist/models/chat-customizations.js +2 -0
- package/dist/models/chat-customizations.js.map +1 -0
- package/dist/models/file-descriptor.d.ts +7 -0
- package/dist/models/file-descriptor.d.ts.map +1 -0
- package/dist/models/file-descriptor.js +2 -0
- package/dist/models/file-descriptor.js.map +1 -0
- package/dist/models/index.d.ts +4 -0
- package/dist/models/index.d.ts.map +1 -0
- package/dist/models/index.js +4 -0
- package/dist/models/index.js.map +1 -0
- package/dist/models/support-chat.d.ts +76 -0
- package/dist/models/support-chat.d.ts.map +1 -0
- package/dist/models/support-chat.js +75 -0
- package/dist/models/support-chat.js.map +1 -0
- package/dist/stores/__tests__/chat-ui.store.test.d.ts +2 -0
- package/dist/stores/__tests__/chat-ui.store.test.d.ts.map +1 -0
- package/dist/stores/__tests__/chat-ui.store.test.js +424 -0
- package/dist/stores/__tests__/chat-ui.store.test.js.map +1 -0
- package/dist/stores/chat-ui-backend-echo.store.d.ts +13 -0
- package/dist/stores/chat-ui-backend-echo.store.d.ts.map +1 -0
- package/dist/stores/chat-ui-backend-echo.store.js +115 -0
- package/dist/stores/chat-ui-backend-echo.store.js.map +1 -0
- package/dist/stores/chat-ui-backend.store.d.ts +6 -0
- package/dist/stores/chat-ui-backend.store.d.ts.map +1 -0
- package/dist/stores/chat-ui-backend.store.js +3 -0
- package/dist/stores/chat-ui-backend.store.js.map +1 -0
- package/dist/stores/chat-ui.store.d.ts +153 -0
- package/dist/stores/chat-ui.store.d.ts.map +1 -0
- package/dist/stores/chat-ui.store.js +683 -0
- package/dist/stores/chat-ui.store.js.map +1 -0
- package/dist/stores/index.d.ts +4 -0
- package/dist/stores/index.d.ts.map +1 -0
- package/dist/stores/index.js +4 -0
- package/dist/stores/index.js.map +1 -0
- package/dist/utils/__tests__/text-utils.test.d.ts +2 -0
- package/dist/utils/__tests__/text-utils.test.d.ts.map +1 -0
- package/dist/utils/__tests__/text-utils.test.js +59 -0
- package/dist/utils/__tests__/text-utils.test.js.map +1 -0
- package/dist/utils/test-utils.d.ts +5 -0
- package/dist/utils/test-utils.d.ts.map +1 -0
- package/dist/utils/test-utils.js +17 -0
- package/dist/utils/test-utils.js.map +1 -0
- package/dist/utils/text-utils.d.ts +6 -0
- package/dist/utils/text-utils.d.ts.map +1 -0
- package/dist/utils/text-utils.js +33 -0
- package/dist/utils/text-utils.js.map +1 -0
- package/package.json +36 -0
- package/src/cypress.d.ts +10 -0
- package/src/index.ts +4 -0
- package/src/models/__mocks__/support-chat.mock.ts +105 -0
- package/src/models/chat-customizations.ts +50 -0
- package/src/models/file-descriptor.ts +6 -0
- package/src/models/index.ts +3 -0
- package/src/models/support-chat.ts +117 -0
- package/src/stores/__tests__/chat-ui.store.test.ts +531 -0
- package/src/stores/chat-ui-backend-echo.store.ts +98 -0
- package/src/stores/chat-ui-backend.store.ts +10 -0
- package/src/stores/chat-ui.store.ts +539 -0
- package/src/stores/index.ts +11 -0
- package/src/utils/__tests__/text-utils.test.ts +70 -0
- package/src/utils/test-utils.ts +22 -0
- package/src/utils/text-utils.ts +36 -0
- package/tsconfig.json +15 -0
- package/tsconfig.tsbuildinfo +1 -0
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
import { ChatConfiguration, ChatCustomizations, ChatEndReason, ChatError, ChatErrorOptions, ChatMessageModelBase, ChatMessageModelFile, ChatMessageModelText, ChatMessageModelTimeout, ChatMessageModelWelcome, ChatMessageState, ChatParticipantIcon, ChatParticipantModel, ChatRunState, ChatTimer } from '../models';
|
|
2
|
+
import { FileDescriptor } from '../models/file-descriptor';
|
|
3
|
+
export declare const symbolAgent: unique symbol;
|
|
4
|
+
export declare const symbolUser: unique symbol;
|
|
5
|
+
export declare enum ChatUiEvent {
|
|
6
|
+
eventRun = "eventRun",
|
|
7
|
+
eventDestroy = "eventDestroy",
|
|
8
|
+
eventRestart = "eventRestart",
|
|
9
|
+
eventCancel = "eventCancel",
|
|
10
|
+
eventEndChat = "eventEndChat",
|
|
11
|
+
eventRecover = "eventRecover",
|
|
12
|
+
eventChasitorTyping = "eventChasitorTyping",
|
|
13
|
+
eventTimerRestart = "eventTimerRestart",
|
|
14
|
+
eventMessageSend = "eventMessageSend",
|
|
15
|
+
eventMessageSendRetry = "eventMessageSendRetry",
|
|
16
|
+
eventMessageSendFile = "eventMessageSendFile",
|
|
17
|
+
eventMessageSendFileRetry = "eventMessageSendFileRetry"
|
|
18
|
+
}
|
|
19
|
+
export type ChatUiEventListener<T = void> = (resolve: (value: T | PromiseLike<T>) => void, reject: (reason?: any) => void, ...args: unknown[]) => void;
|
|
20
|
+
export interface IChatUiStore<T extends ChatCustomizations = ChatCustomizations> {
|
|
21
|
+
scrollCounter: number;
|
|
22
|
+
status: ChatRunState;
|
|
23
|
+
get isStarting(): boolean;
|
|
24
|
+
get isStarted(): boolean;
|
|
25
|
+
get isError(): boolean;
|
|
26
|
+
get isEnded(): boolean;
|
|
27
|
+
get customizations(): T;
|
|
28
|
+
timer?: ChatTimer;
|
|
29
|
+
endReason?: ChatEndReason;
|
|
30
|
+
participants: {
|
|
31
|
+
[key: symbol]: ChatParticipantModel;
|
|
32
|
+
};
|
|
33
|
+
messages: ChatMessageModelBase[];
|
|
34
|
+
isAgentTyping: boolean;
|
|
35
|
+
isFilePickerEnabled: boolean;
|
|
36
|
+
file?: FileDescriptor;
|
|
37
|
+
error?: ChatError;
|
|
38
|
+
get agent(): ChatParticipantModel;
|
|
39
|
+
get user(): ChatParticipantModel;
|
|
40
|
+
on<T>(event: string, listener: ChatUiEventListener<T>): void;
|
|
41
|
+
off<T>(event: string, listener: ChatUiEventListener<T>): void;
|
|
42
|
+
setCustomizationContext(customizationContext?: T): void;
|
|
43
|
+
setIncomingSound(soundUrl: string): void;
|
|
44
|
+
setTimer(timer?: ChatTimer): void;
|
|
45
|
+
setFile(file: FileDescriptor | undefined): void;
|
|
46
|
+
setFilePickerEnabled(isEnabled: boolean): void;
|
|
47
|
+
setAgentTyping(typing: boolean): void;
|
|
48
|
+
setMessageState(message: ChatMessageModelBase, state: ChatMessageState, data?: any): void;
|
|
49
|
+
setMessages(messages: ChatMessageModelBase[]): void;
|
|
50
|
+
setAgentName(name: string): void;
|
|
51
|
+
setAgentIcon(icon: ChatParticipantIcon): void;
|
|
52
|
+
setChatError(chatError: ChatError): void;
|
|
53
|
+
setError<T = any>(message: string, options?: ChatErrorOptions<T>): void;
|
|
54
|
+
setStatus(status: ChatRunState): void;
|
|
55
|
+
resetError(runState: ChatRunState): void;
|
|
56
|
+
reset(resetStatus?: boolean): void;
|
|
57
|
+
resetFile(): void;
|
|
58
|
+
triggerScroll(): void;
|
|
59
|
+
configure(configuration?: ChatConfiguration): void;
|
|
60
|
+
run(configuration?: ChatConfiguration, data?: unknown): Promise<void>;
|
|
61
|
+
recover(): Promise<void>;
|
|
62
|
+
destroy(): Promise<void>;
|
|
63
|
+
chasitorTyping(isTyping: boolean): Promise<void>;
|
|
64
|
+
restartTimers(): Promise<void>;
|
|
65
|
+
restart(): Promise<void>;
|
|
66
|
+
cancelChat(): Promise<void>;
|
|
67
|
+
endChat(endReason?: ChatEndReason): Promise<void>;
|
|
68
|
+
sendMessageText(messageText: string): Promise<void>;
|
|
69
|
+
sendMessageRetry(message: ChatMessageModelBase): Promise<void>;
|
|
70
|
+
addMessage(isAgent: boolean, message: string, data?: any): void;
|
|
71
|
+
addMessageWelcome(message: string): void;
|
|
72
|
+
}
|
|
73
|
+
export declare const CHAT_UI_STORE_TOKEN: import("@servicetitan/react-ioc").SymbolToken<IChatUiStore<Partial<{
|
|
74
|
+
messageTemplates: import("..").ChatMessageTemplateCustomizations;
|
|
75
|
+
messages: import("..").ChatMessageCustomization[];
|
|
76
|
+
messageTyping: import("..").ChatMessageTypingCustomization;
|
|
77
|
+
input: import("..").ChatInputCustomization;
|
|
78
|
+
footerComponent: import("react").ReactNode;
|
|
79
|
+
loadingComponent: import("react").ReactNode;
|
|
80
|
+
}>>>;
|
|
81
|
+
export declare class ChatUiStore<T extends ChatCustomizations> implements IChatUiStore<T> {
|
|
82
|
+
isAgentTyping: boolean;
|
|
83
|
+
status: ChatRunState;
|
|
84
|
+
isFilePickerEnabled: boolean;
|
|
85
|
+
file?: FileDescriptor;
|
|
86
|
+
error?: ChatError;
|
|
87
|
+
endReason?: ChatEndReason;
|
|
88
|
+
messages: ChatMessageModelBase[];
|
|
89
|
+
currentFileMessage?: ChatMessageModelFile;
|
|
90
|
+
scrollCounter: number;
|
|
91
|
+
timer?: ChatTimer;
|
|
92
|
+
participants: {
|
|
93
|
+
[key: symbol]: ChatParticipantModel;
|
|
94
|
+
};
|
|
95
|
+
get agent(): ChatParticipantModel;
|
|
96
|
+
get user(): ChatParticipantModel;
|
|
97
|
+
get isStarted(): boolean;
|
|
98
|
+
get isError(): boolean;
|
|
99
|
+
get isEnded(): boolean;
|
|
100
|
+
get isStarting(): boolean;
|
|
101
|
+
get customizations(): T;
|
|
102
|
+
protected customizationContext: T;
|
|
103
|
+
private eventEmitter;
|
|
104
|
+
private incomingMessageSound?;
|
|
105
|
+
private incomingMessageSoundPromise?;
|
|
106
|
+
constructor();
|
|
107
|
+
on: <T>(event: string, listener: ChatUiEventListener<T_1>) => void;
|
|
108
|
+
off: <T>(event: string, listener: ChatUiEventListener<T_1>) => void;
|
|
109
|
+
setCustomizationContext(customizationContext?: T): void;
|
|
110
|
+
setIncomingSound(soundUrl: string): void;
|
|
111
|
+
setFile(file?: FileDescriptor): void;
|
|
112
|
+
setFilePickerEnabled(isEnabled: boolean): void;
|
|
113
|
+
setTimer(timer?: ChatTimer): void;
|
|
114
|
+
resetError(runState: ChatRunState): void;
|
|
115
|
+
setChatError(chatError: ChatError): void;
|
|
116
|
+
setError<T = any>(message: string, options?: ChatErrorOptions<T>): void;
|
|
117
|
+
setStatus(status: ChatRunState): void;
|
|
118
|
+
setMessages(messages: ChatMessageModelBase[]): void;
|
|
119
|
+
setAgentName(name: string): void;
|
|
120
|
+
setAgentIcon(icon: ChatParticipantIcon): void;
|
|
121
|
+
setAgentTyping(isAgentTyping: boolean): void;
|
|
122
|
+
setEndReason(reason?: ChatEndReason): void;
|
|
123
|
+
setEndedChatState(endReason: ChatEndReason): void;
|
|
124
|
+
configure(configuration?: ChatConfiguration): void;
|
|
125
|
+
run(configuration?: ChatConfiguration, data?: unknown): Promise<void>;
|
|
126
|
+
recover(): Promise<void>;
|
|
127
|
+
destroy(): Promise<void>;
|
|
128
|
+
restart(): Promise<void>;
|
|
129
|
+
cancelChat(): Promise<void>;
|
|
130
|
+
endChat(endReason?: ChatEndReason): Promise<void>;
|
|
131
|
+
chasitorTyping(isTyping: boolean): Promise<void>;
|
|
132
|
+
sendMessageText(message: string): Promise<void>;
|
|
133
|
+
sendMessageRetry(messageModel: ChatMessageModelBase): Promise<void>;
|
|
134
|
+
sendMessageFileRetry(messageModel: ChatMessageModelFile): Promise<void>;
|
|
135
|
+
getParticipant(participantKey: symbol): ChatParticipantModel;
|
|
136
|
+
addMessage(isAgent: boolean, message: string, data?: any): ChatMessageModelText;
|
|
137
|
+
addMessageTimeout(): ChatMessageModelTimeout | undefined;
|
|
138
|
+
addMessageWelcome(message: string): ChatMessageModelWelcome;
|
|
139
|
+
addMessageFile(file: FileDescriptor): ChatMessageModelFile;
|
|
140
|
+
restartTimers(): Promise<void>;
|
|
141
|
+
setMessageState(message: ChatMessageModelBase, state: ChatMessageState, data?: any): void;
|
|
142
|
+
resetFile(): void;
|
|
143
|
+
reset(resetStatus?: boolean): void;
|
|
144
|
+
getLastFailedMessages(): ChatMessageModelText[];
|
|
145
|
+
triggerScroll(): void;
|
|
146
|
+
protected emitAsync<T>(event: string, ...args: unknown[]): Promise<void | T>;
|
|
147
|
+
protected addMessageInternal<T extends ChatMessageModelBase>(message: Omit<T, 'id' | 'timestamp'>): T;
|
|
148
|
+
protected removeMessageByType(type: string): void;
|
|
149
|
+
private sendMessageTextInternal;
|
|
150
|
+
private createMessage;
|
|
151
|
+
private beepIncoming;
|
|
152
|
+
}
|
|
153
|
+
//# sourceMappingURL=chat-ui.store.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chat-ui.store.d.ts","sourceRoot":"","sources":["../../src/stores/chat-ui.store.ts"],"names":[],"mappings":"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"}
|