rohit-chat-widget 1.0.7 → 1.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.
@@ -1 +1 @@
1
- {"version":3,"file":"MessageInput.d.ts","sourceRoot":"","sources":["../../../src/components/MessageInput/MessageInput.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA2B,MAAM,OAAO,CAAC;AAQhD,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;CAC5C;AAED,eAAO,MAAM,YAAY,EAAE,KAAK,CAAC,EAAE,CAAC,iBAAiB,CA2JpD,CAAC;AAEF,eAAe,YAAY,CAAC"}
1
+ {"version":3,"file":"MessageInput.d.ts","sourceRoot":"","sources":["../../../src/components/MessageInput/MessageInput.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA2B,MAAM,OAAO,CAAC;AAShD,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;CAC5C;AAED,eAAO,MAAM,YAAY,EAAE,KAAK,CAAC,EAAE,CAAC,iBAAiB,CAiMpD,CAAC;AAEF,eAAe,YAAY,CAAC"}
@@ -6,6 +6,7 @@ import { addNewMessage, updateMessageStatus } from '@/store/slices/messagesSlice
6
6
  import { v4 as uuidv4 } from 'uuid';
7
7
  import styles from './MessageInput.module.scss';
8
8
  import { selectThread, selectUserInfo } from '@/store';
9
+ import { getApiConfig } from '@/services/api/backendApi';
9
10
  export const MessageInput = ({ disabled = false, className, onMessageSent }) => {
10
11
  const [message, setMessage] = useState('');
11
12
  const [isSending, setIsSending] = useState(false);
@@ -47,41 +48,70 @@ export const MessageInput = ({ disabled = false, className, onMessageSent }) =>
47
48
  };
48
49
  const handleSubmit = async (e) => {
49
50
  e.preventDefault();
50
- if (!message.trim() || disabled || isSending)
51
+ if ((!message.trim() && !selectedFile) || disabled || isSending)
51
52
  return;
52
53
  // Prevent submission on Shift+Enter
53
54
  if (e.nativeEvent instanceof KeyboardEvent && e.nativeEvent.shiftKey)
54
55
  return;
55
- const tempId = `local-${uuidv4()}`;
56
- // Optimistically add pending message to store so it appears in the list
57
- dispatch(addNewMessage({
58
- id: tempId,
59
- content: message.trim(),
60
- senderDisplayName: userInformation?.firstName + " " + userInformation?.lastName || 'You',
61
- senderACSId: thread.acsUserId,
62
- version: 1,
63
- createdOn: new Date().toISOString(),
64
- updatedOn: new Date().toISOString(),
65
- status: 'pending',
66
- isDoubleTickVisible: false
67
- }));
68
- setMessage('');
69
56
  setIsSending(true);
70
57
  try {
71
- const result = await sendMessage(message.trim());
72
- if (result.success) {
73
- dispatch(updateMessageStatus({ id: tempId, status: 'sent', isDoubleTickVisible: true }));
58
+ // If there's a file, upload it first
59
+ if (selectedFile) {
60
+ const formData = new FormData();
61
+ formData.append('file', selectedFile);
62
+ formData.append('threadId', thread.threadId);
63
+ formData.append('acsToken', thread.acsAccessToken);
64
+ const apiConfig = getApiConfig();
65
+ const uploadUrl = `${apiConfig.baseUrl}/chat/send-attachment`;
66
+ const uploadResponse = await fetch(uploadUrl, {
67
+ method: 'POST',
68
+ headers: {
69
+ 'api_secret_key': apiConfig.apiKey,
70
+ },
71
+ body: formData,
72
+ });
73
+ if (!uploadResponse.ok) {
74
+ throw new Error('File upload failed');
75
+ }
76
+ const uploadResult = await uploadResponse.json();
77
+ console.log('File uploaded successfully:', uploadResult);
78
+ // Clear the file after successful upload
79
+ setSelectedFile(null);
80
+ if (fileInputRef.current) {
81
+ fileInputRef.current.value = '';
82
+ }
74
83
  onMessageSent?.(true);
75
84
  }
76
- else {
77
- console.error('Failed to send message:', result.error);
78
- dispatch(updateMessageStatus({ id: tempId, status: 'failed' }));
79
- onMessageSent?.(false);
85
+ // If there's a text message, send it
86
+ if (message.trim()) {
87
+ const tempId = `local-${uuidv4()}`;
88
+ // Optimistically add pending message to store so it appears in the list
89
+ dispatch(addNewMessage({
90
+ id: tempId,
91
+ content: message.trim(),
92
+ senderDisplayName: userInformation?.firstName + " " + userInformation?.lastName || 'You',
93
+ senderACSId: thread.acsUserId,
94
+ version: 1,
95
+ createdOn: new Date().toISOString(),
96
+ updatedOn: new Date().toISOString(),
97
+ status: 'pending',
98
+ isDoubleTickVisible: false
99
+ }));
100
+ setMessage('');
101
+ const result = await sendMessage(message.trim());
102
+ if (result.success) {
103
+ dispatch(updateMessageStatus({ id: tempId, status: 'sent', isDoubleTickVisible: true }));
104
+ onMessageSent?.(true);
105
+ }
106
+ else {
107
+ console.error('Failed to send message:', result.error);
108
+ dispatch(updateMessageStatus({ id: tempId, status: 'failed' }));
109
+ onMessageSent?.(false);
110
+ }
80
111
  }
81
112
  }
82
113
  catch (error) {
83
- console.error('Error sending message:', error);
84
- dispatch(updateMessageStatus({ id: tempId, status: 'failed' }));
114
+ console.error('Error sending:', error);
85
115
  onMessageSent?.(false);
86
116
  }
87
117
  finally {
@@ -1 +1 @@
1
- {"version":3,"file":"MessageInput.js","sourceRoot":"","sources":["../../../src/components/MessageInput/MessageInput.tsx"],"names":[],"mappings":";AAAA,OAAc,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AAChD,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AAClF,OAAO,EAAE,EAAE,IAAI,MAAM,EAAE,MAAM,MAAM,CAAC;AACpC,OAAO,MAAM,MAAM,4BAA4B,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAQvD,MAAM,CAAC,MAAM,YAAY,GAAgC,CAAC,EACxD,QAAQ,GAAG,KAAK,EAChB,SAAS,EACT,aAAa,EACd,EAAE,EAAE;IACH,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAC;IAC3C,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAClD,MAAM,CAAC,YAAY,EAAE,eAAe,CAAC,GAAG,QAAQ,CAAc,IAAI,CAAC,CAAC;IACpE,MAAM,YAAY,GAAG,MAAM,CAAmB,IAAI,CAAC,CAAC;IACpD,MAAM,EAAE,WAAW,EAAE,aAAa,EAAE,GAAG,WAAW,EAAE,CAAC;IACrD,MAAM,QAAQ,GAAG,WAAW,EAAE,CAAC;IAC/B,MAAM,MAAM,GAAG,WAAW,CAAC,YAAY,CAAC,CAAC;IACzC,MAAM,eAAe,GAAG,WAAW,CAAC,cAAc,CAAC,CAAA;IAEnD,MAAM,gBAAgB,GAAG,CAAC,CAAsC,EAAE,EAAE;QAClE,MAAM,IAAI,GAAG,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC;QACjC,IAAI,IAAI,EAAE,CAAC;YACT,mEAAmE;YACnE,IAAI,IAAI,CAAC,IAAI,GAAG,EAAE,GAAG,IAAI,GAAG,IAAI,EAAE,CAAC;gBACjC,KAAK,CAAC,kCAAkC,CAAC,CAAC;gBAC1C,OAAO;YACT,CAAC;YACD,eAAe,CAAC,IAAI,CAAC,CAAC;QACxB,CAAC;IACH,CAAC,CAAC;IAEF,MAAM,gBAAgB,GAAG,GAAG,EAAE;QAC5B,eAAe,CAAC,IAAI,CAAC,CAAC;QACtB,IAAI,YAAY,CAAC,OAAO,EAAE,CAAC;YACzB,YAAY,CAAC,OAAO,CAAC,KAAK,GAAG,EAAE,CAAC;QAClC,CAAC;IACH,CAAC,CAAC;IAEF,MAAM,aAAa,GAAG,CAAC,CAA2C,EAAE,EAAE;QACpE,IAAI,CAAC,CAAC,GAAG,KAAK,OAAO,EAAE,CAAC;YACtB,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAC;gBACf,oDAAoD;gBACpD,OAAO;YACT,CAAC;iBAAM,CAAC;gBACN,yDAAyD;gBACzD,CAAC,CAAC,cAAc,EAAE,CAAC;gBACnB,YAAY,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;QACH,CAAC;IACH,CAAC,CAAC;IAEF,MAAM,YAAY,GAAG,KAAK,EAAE,CAAkB,EAAE,EAAE;QAChD,CAAC,CAAC,cAAc,EAAE,CAAC;QACnB,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,QAAQ,IAAI,SAAS;YAAE,OAAO;QAErD,oCAAoC;QACpC,IAAI,CAAC,CAAC,WAAW,YAAY,aAAa,IAAI,CAAC,CAAC,WAAW,CAAC,QAAQ;YAAE,OAAO;QAE7E,MAAM,MAAM,GAAG,SAAS,MAAM,EAAE,EAAE,CAAC;QAEnC,wEAAwE;QACxE,QAAQ,CAAC,aAAa,CAAC;YACrB,EAAE,EAAE,MAAM;YACV,OAAO,EAAE,OAAO,CAAC,IAAI,EAAE;YACvB,iBAAiB,EAAE,eAAe,EAAE,SAAS,GAAG,GAAG,GAAG,eAAe,EAAE,QAAQ,IAAI,KAAK;YACxF,WAAW,EAAE,MAAM,CAAC,SAAU;YAC9B,OAAO,EAAE,CAAC;YACV,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACnC,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACnC,MAAM,EAAE,SAAS;YACjB,mBAAmB,EAAG,KAAK;SAC5B,CAAC,CAAC,CAAC;QACJ,UAAU,CAAC,EAAE,CAAC,CAAC;QACf,YAAY,CAAC,IAAI,CAAC,CAAC;QACnB,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;YAEjD,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;gBACnB,QAAQ,CAAC,mBAAmB,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,mBAAmB,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;gBACzF,aAAa,EAAE,CAAC,IAAI,CAAC,CAAC;YACxB,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,KAAK,CAAC,yBAAyB,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;gBACvD,QAAQ,CAAC,mBAAmB,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC;gBAChE,aAAa,EAAE,CAAC,KAAK,CAAC,CAAC;YACzB,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,wBAAwB,EAAE,KAAK,CAAC,CAAC;YAC/C,QAAQ,CAAC,mBAAmB,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC;YAChE,aAAa,EAAE,CAAC,KAAK,CAAC,CAAC;QACzB,CAAC;gBAAS,CAAC;YACT,YAAY,CAAC,KAAK,CAAC,CAAC;QACtB,CAAC;IACH,CAAC,CAAC;IAEF,OAAO,CACL,eAAK,SAAS,EAAE,GAAG,MAAM,CAAC,qBAAqB,IAAI,SAAS,IAAI,EAAE,EAAE,aAClE,gBAAM,QAAQ,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,CAAC,gBAAgB,aAC7D,YAAY,IAAI,CACf,eAAK,SAAS,EAAE,MAAM,CAAC,WAAW,aAChC,eAAM,SAAS,EAAE,MAAM,CAAC,QAAQ,YAAG,YAAY,CAAC,IAAI,GAAQ,EAC5D,iBACE,IAAI,EAAC,QAAQ,EACb,OAAO,EAAE,gBAAgB,EACzB,SAAS,EAAE,MAAM,CAAC,gBAAgB,gBACvB,aAAa,uBAGjB,IACL,CACP,EACD,eAAK,SAAS,EAAE,MAAM,CAAC,YAAY,aACjC,gBACE,GAAG,EAAE,YAAY,EACjB,IAAI,EAAC,MAAM;gCACX,sBAAsB;gCACtB,QAAQ,EAAE,gBAAgB,EAC1B,SAAS,EAAE,MAAM,CAAC,SAAS,EAC3B,QAAQ,EAAE,QAAQ,IAAI,SAAS,iBACnB,MAAM,EAClB,QAAQ,EAAE,CAAC,CAAC,EACZ,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,GAC1B,EACF,iBACE,IAAI,EAAC,QAAQ,EACb,OAAO,EAAE,GAAG,EAAE,CAAC,YAAY,CAAC,OAAO,EAAE,KAAK,EAAE,EAC5C,SAAS,EAAE,MAAM,CAAC,YAAY,EAC9B,QAAQ,EAAE,QAAQ,IAAI,SAAS,gBACpB,cAAc,YAEzB,YAAG,SAAS,EAAC,kBAAkB,iBAAa,MAAM,GAAG,GAC9C,EACT,mBACE,KAAK,EAAE,OAAO,EACd,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAC3C,SAAS,EAAE,aAAa,EACxB,WAAW,EAAC,2CAA2C,EACvD,SAAS,EAAE,MAAM,CAAC,YAAY,EAC9B,IAAI,EAAE,CAAC,EACP,KAAK,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,EACzB,QAAQ,EAAE,QAAQ,IAAI,SAAS,GAC/B,EACF,iBACE,IAAI,EAAC,QAAQ,EACb,SAAS,EAAE,MAAM,CAAC,UAAU,EAC5B,QAAQ,EAAE,QAAQ,IAAI,SAAS,IAAI,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,YAAY,CAAC,gBAC1D,cAAc,YAEzB,cAAK,KAAK,EAAC,IAAI,EAAC,MAAM,EAAC,IAAI,EAAC,OAAO,EAAC,WAAW,EAAC,IAAI,EAAC,MAAM,EAAC,KAAK,EAAC,4BAA4B,EAAC,SAAS,EAAE,MAAM,CAAC,QAAQ,YACvH,eAAM,CAAC,EAAC,+1BAA+1B,EAAC,IAAI,EAAC,SAAS,GAAG,GACr3B,GACC,IACL,IACD,EAGP,eAAK,SAAS,EAAE,MAAM,CAAC,SAAS,4BACnB,eAAM,SAAS,EAAE,MAAM,CAAC,UAAU,2BAAmB,SAAG,eAAM,SAAS,EAAE,MAAM,CAAC,SAAS,qCAA6B,IAC7H,IACF,CACP,CAAC;AACJ,CAAC,CAAC;AAEF,eAAe,YAAY,CAAC"}
1
+ {"version":3,"file":"MessageInput.js","sourceRoot":"","sources":["../../../src/components/MessageInput/MessageInput.tsx"],"names":[],"mappings":"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"}
package/lib/index.esm.js CHANGED
@@ -6958,6 +6958,7 @@ const updateApiConfig = (baseUrl, apiKey) => {
6958
6958
  globalConfig.baseUrl = baseUrl;
6959
6959
  globalConfig.apiKey = apiKey;
6960
6960
  };
6961
+ const getApiConfig = () => globalConfig;
6961
6962
  const backendApi = createApi({
6962
6963
  reducerPath: 'backendApi',
6963
6964
  baseQuery: fetchBaseQuery({
@@ -20770,41 +20771,70 @@ const MessageInput = ({ disabled = false, className, onMessageSent }) => {
20770
20771
  };
20771
20772
  const handleSubmit = async (e) => {
20772
20773
  e.preventDefault();
20773
- if (!message.trim() || disabled || isSending)
20774
+ if ((!message.trim() && !selectedFile) || disabled || isSending)
20774
20775
  return;
20775
20776
  // Prevent submission on Shift+Enter
20776
20777
  if (e.nativeEvent instanceof KeyboardEvent && e.nativeEvent.shiftKey)
20777
20778
  return;
20778
- const tempId = `local-${v4()}`;
20779
- // Optimistically add pending message to store so it appears in the list
20780
- dispatch(addNewMessage({
20781
- id: tempId,
20782
- content: message.trim(),
20783
- senderDisplayName: userInformation?.firstName + " " + userInformation?.lastName || 'You',
20784
- senderACSId: thread.acsUserId,
20785
- version: 1,
20786
- createdOn: new Date().toISOString(),
20787
- updatedOn: new Date().toISOString(),
20788
- status: 'pending',
20789
- isDoubleTickVisible: false
20790
- }));
20791
- setMessage('');
20792
20779
  setIsSending(true);
20793
20780
  try {
20794
- const result = await sendMessage(message.trim());
20795
- if (result.success) {
20796
- dispatch(updateMessageStatus({ id: tempId, status: 'sent', isDoubleTickVisible: true }));
20781
+ // If there's a file, upload it first
20782
+ if (selectedFile) {
20783
+ const formData = new FormData();
20784
+ formData.append('file', selectedFile);
20785
+ formData.append('threadId', thread.threadId);
20786
+ formData.append('acsToken', thread.acsAccessToken);
20787
+ const apiConfig = getApiConfig();
20788
+ const uploadUrl = `${apiConfig.baseUrl}/chat/send-attachment`;
20789
+ const uploadResponse = await fetch(uploadUrl, {
20790
+ method: 'POST',
20791
+ headers: {
20792
+ 'api_secret_key': apiConfig.apiKey,
20793
+ },
20794
+ body: formData,
20795
+ });
20796
+ if (!uploadResponse.ok) {
20797
+ throw new Error('File upload failed');
20798
+ }
20799
+ const uploadResult = await uploadResponse.json();
20800
+ console.log('File uploaded successfully:', uploadResult);
20801
+ // Clear the file after successful upload
20802
+ setSelectedFile(null);
20803
+ if (fileInputRef.current) {
20804
+ fileInputRef.current.value = '';
20805
+ }
20797
20806
  onMessageSent?.(true);
20798
20807
  }
20799
- else {
20800
- console.error('Failed to send message:', result.error);
20801
- dispatch(updateMessageStatus({ id: tempId, status: 'failed' }));
20802
- onMessageSent?.(false);
20808
+ // If there's a text message, send it
20809
+ if (message.trim()) {
20810
+ const tempId = `local-${v4()}`;
20811
+ // Optimistically add pending message to store so it appears in the list
20812
+ dispatch(addNewMessage({
20813
+ id: tempId,
20814
+ content: message.trim(),
20815
+ senderDisplayName: userInformation?.firstName + " " + userInformation?.lastName || 'You',
20816
+ senderACSId: thread.acsUserId,
20817
+ version: 1,
20818
+ createdOn: new Date().toISOString(),
20819
+ updatedOn: new Date().toISOString(),
20820
+ status: 'pending',
20821
+ isDoubleTickVisible: false
20822
+ }));
20823
+ setMessage('');
20824
+ const result = await sendMessage(message.trim());
20825
+ if (result.success) {
20826
+ dispatch(updateMessageStatus({ id: tempId, status: 'sent', isDoubleTickVisible: true }));
20827
+ onMessageSent?.(true);
20828
+ }
20829
+ else {
20830
+ console.error('Failed to send message:', result.error);
20831
+ dispatch(updateMessageStatus({ id: tempId, status: 'failed' }));
20832
+ onMessageSent?.(false);
20833
+ }
20803
20834
  }
20804
20835
  }
20805
20836
  catch (error) {
20806
- console.error('Error sending message:', error);
20807
- dispatch(updateMessageStatus({ id: tempId, status: 'failed' }));
20837
+ console.error('Error sending:', error);
20808
20838
  onMessageSent?.(false);
20809
20839
  }
20810
20840
  finally {
@@ -21165,5 +21195,5 @@ const applyDefaultTheme = () => {
21165
21195
  styleManager.setTheme(defaultTheme);
21166
21196
  };
21167
21197
 
21168
- export { ChatContainer, ChatHeader, ChatService, ChatWidget, DropdownMenu, ErrorBoundary, ErrorDisplay, LoadingIndicator, MenuItem, MessageBubble, MessageInput, MessageList, StyleManager, acsClientService, addNewMessage, applyDefaultTheme, backendApi, backendApi$1 as backendApiReducer, chatService, clearError, ChatWidget as default, defaultTheme, finishInitialization, formatDate, formatTime, getRelativeTime, isValidUUID, resetMessages, sanitizeInput, selectContinuationToken, selectError, selectIsInitialized, selectIsInitializing, selectIsLoadingPage, selectMessages, setContinuationToken, setError, setIsInitialized, setPageMessages, startInitialization, startLoadingPage, store, useAppDispatch, useAppSelector, useChatInit, useGetMessagesQuery, useInitiateChatMutation, useLazyGetMessagesQuery, useSendMessageMutation, validateEmail, validateMessage };
21198
+ export { ChatContainer, ChatHeader, ChatService, ChatWidget, DropdownMenu, ErrorBoundary, ErrorDisplay, LoadingIndicator, MenuItem, MessageBubble, MessageInput, MessageList, StyleManager, acsClientService, addNewMessage, applyDefaultTheme, backendApi, backendApi$1 as backendApiReducer, chatService, clearError, ChatWidget as default, defaultTheme, finishInitialization, formatDate, formatTime, getApiConfig, getRelativeTime, isValidUUID, resetMessages, sanitizeInput, selectContinuationToken, selectError, selectIsInitialized, selectIsInitializing, selectIsLoadingPage, selectMessages, setContinuationToken, setError, setIsInitialized, setPageMessages, startInitialization, startLoadingPage, store, useAppDispatch, useAppSelector, useChatInit, useGetMessagesQuery, useInitiateChatMutation, useLazyGetMessagesQuery, useSendMessageMutation, validateEmail, validateMessage };
21169
21199
  //# sourceMappingURL=index.esm.js.map