ajaxter-chat 3.0.17 → 3.2.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.
Files changed (146) hide show
  1. package/dist/components/BlockList/index.d.ts +1 -0
  2. package/dist/components/BlockList/index.d.ts.map +1 -0
  3. package/dist/components/BlockList/index.js +55 -28
  4. package/dist/components/BlockList/index.js.map +1 -0
  5. package/dist/components/CallScreen/index.d.ts +1 -0
  6. package/dist/components/CallScreen/index.d.ts.map +1 -0
  7. package/dist/components/CallScreen/index.js +107 -39
  8. package/dist/components/CallScreen/index.js.map +1 -0
  9. package/dist/components/ChatScreen/index.d.ts +1 -0
  10. package/dist/components/ChatScreen/index.d.ts.map +1 -0
  11. package/dist/components/ChatScreen/index.js +493 -294
  12. package/dist/components/ChatScreen/index.js.map +1 -0
  13. package/dist/components/ChatWidget.d.ts +1 -0
  14. package/dist/components/ChatWidget.d.ts.map +1 -0
  15. package/dist/components/ChatWidget.js +499 -367
  16. package/dist/components/ChatWidget.js.map +1 -0
  17. package/dist/components/EmojiPicker/index.d.ts +1 -0
  18. package/dist/components/EmojiPicker/index.d.ts.map +1 -0
  19. package/dist/components/EmojiPicker/index.js +19 -7
  20. package/dist/components/EmojiPicker/index.js.map +1 -0
  21. package/dist/components/ErrorBoundary/index.d.ts +20 -0
  22. package/dist/components/ErrorBoundary/index.d.ts.map +1 -0
  23. package/dist/components/ErrorBoundary/index.js +76 -0
  24. package/dist/components/ErrorBoundary/index.js.map +1 -0
  25. package/dist/components/HomeScreen/index.d.ts +1 -0
  26. package/dist/components/HomeScreen/index.d.ts.map +1 -0
  27. package/dist/components/HomeScreen/index.js +236 -158
  28. package/dist/components/HomeScreen/index.js.map +1 -0
  29. package/dist/components/MaintenanceView/index.d.ts +1 -0
  30. package/dist/components/MaintenanceView/index.d.ts.map +1 -0
  31. package/dist/components/MaintenanceView/index.js +28 -12
  32. package/dist/components/MaintenanceView/index.js.map +1 -0
  33. package/dist/components/MiniCallBar/index.d.ts +1 -0
  34. package/dist/components/MiniCallBar/index.d.ts.map +1 -0
  35. package/dist/components/MiniCallBar/index.js +85 -37
  36. package/dist/components/MiniCallBar/index.js.map +1 -0
  37. package/dist/components/PermissionsGateScreen/index.d.ts +1 -0
  38. package/dist/components/PermissionsGateScreen/index.d.ts.map +1 -0
  39. package/dist/components/PermissionsGateScreen/index.js +82 -28
  40. package/dist/components/PermissionsGateScreen/index.js.map +1 -0
  41. package/dist/components/RecentChatsScreen/index.d.ts +1 -0
  42. package/dist/components/RecentChatsScreen/index.d.ts.map +1 -0
  43. package/dist/components/RecentChatsScreen/index.js +79 -19
  44. package/dist/components/RecentChatsScreen/index.js.map +1 -0
  45. package/dist/components/SlideNavMenu.d.ts +1 -0
  46. package/dist/components/SlideNavMenu.d.ts.map +1 -0
  47. package/dist/components/SlideNavMenu.js +82 -63
  48. package/dist/components/SlideNavMenu.js.map +1 -0
  49. package/dist/components/Tabs/BottomTabs.d.ts +1 -0
  50. package/dist/components/Tabs/BottomTabs.d.ts.map +1 -0
  51. package/dist/components/Tabs/BottomTabs.js +34 -19
  52. package/dist/components/Tabs/BottomTabs.js.map +1 -0
  53. package/dist/components/TicketDetailScreen/index.d.ts +1 -0
  54. package/dist/components/TicketDetailScreen/index.d.ts.map +1 -0
  55. package/dist/components/TicketDetailScreen/index.js +66 -27
  56. package/dist/components/TicketDetailScreen/index.js.map +1 -0
  57. package/dist/components/TicketFormScreen/index.d.ts +1 -0
  58. package/dist/components/TicketFormScreen/index.d.ts.map +1 -0
  59. package/dist/components/TicketFormScreen/index.js +99 -49
  60. package/dist/components/TicketFormScreen/index.js.map +1 -0
  61. package/dist/components/TicketScreen/index.d.ts +1 -0
  62. package/dist/components/TicketScreen/index.d.ts.map +1 -0
  63. package/dist/components/TicketScreen/index.js +95 -26
  64. package/dist/components/TicketScreen/index.js.map +1 -0
  65. package/dist/components/UserListScreen/index.d.ts +1 -0
  66. package/dist/components/UserListScreen/index.d.ts.map +1 -0
  67. package/dist/components/UserListScreen/index.js +127 -53
  68. package/dist/components/UserListScreen/index.js.map +1 -0
  69. package/dist/components/ViewerBlockedScreen/index.d.ts +1 -0
  70. package/dist/components/ViewerBlockedScreen/index.d.ts.map +1 -0
  71. package/dist/components/ViewerBlockedScreen/index.js +113 -61
  72. package/dist/components/ViewerBlockedScreen/index.js.map +1 -0
  73. package/dist/config/index.d.ts +7 -3
  74. package/dist/config/index.d.ts.map +1 -0
  75. package/dist/config/index.js +73 -22
  76. package/dist/config/index.js.map +1 -0
  77. package/dist/hooks/useChat.d.ts +9 -1
  78. package/dist/hooks/useChat.d.ts.map +1 -0
  79. package/dist/hooks/useChat.js +60 -18
  80. package/dist/hooks/useChat.js.map +1 -0
  81. package/dist/hooks/useRemoteConfig.d.ts +1 -0
  82. package/dist/hooks/useRemoteConfig.d.ts.map +1 -0
  83. package/dist/hooks/useRemoteConfig.js +22 -15
  84. package/dist/hooks/useRemoteConfig.js.map +1 -0
  85. package/dist/hooks/useSocket.d.ts +59 -0
  86. package/dist/hooks/useSocket.d.ts.map +1 -0
  87. package/dist/hooks/useSocket.js +203 -0
  88. package/dist/hooks/useSocket.js.map +1 -0
  89. package/dist/hooks/useWebRTC.d.ts +10 -2
  90. package/dist/hooks/useWebRTC.d.ts.map +1 -0
  91. package/dist/hooks/useWebRTC.js +101 -69
  92. package/dist/hooks/useWebRTC.js.map +1 -0
  93. package/dist/index.d.ts +7 -1
  94. package/dist/index.d.ts.map +1 -0
  95. package/dist/index.js +67 -21
  96. package/dist/index.js.map +1 -0
  97. package/dist/types/index.d.ts +129 -48
  98. package/dist/types/index.d.ts.map +1 -0
  99. package/dist/types/index.js +4 -1
  100. package/dist/types/index.js.map +1 -0
  101. package/dist/utils/chat.d.ts +1 -0
  102. package/dist/utils/chat.d.ts.map +1 -0
  103. package/dist/utils/chat.js +17 -7
  104. package/dist/utils/chat.js.map +1 -0
  105. package/dist/utils/fileName.d.ts +1 -0
  106. package/dist/utils/fileName.d.ts.map +1 -0
  107. package/dist/utils/fileName.js +5 -1
  108. package/dist/utils/fileName.js.map +1 -0
  109. package/dist/utils/messageSound.d.ts +1 -0
  110. package/dist/utils/messageSound.d.ts.map +1 -0
  111. package/dist/utils/messageSound.js +9 -3
  112. package/dist/utils/messageSound.js.map +1 -0
  113. package/dist/utils/presenceStatus.d.ts +1 -0
  114. package/dist/utils/presenceStatus.d.ts.map +1 -0
  115. package/dist/utils/presenceStatus.js +11 -4
  116. package/dist/utils/presenceStatus.js.map +1 -0
  117. package/dist/utils/privacyConsent.d.ts +1 -0
  118. package/dist/utils/privacyConsent.d.ts.map +1 -0
  119. package/dist/utils/privacyConsent.js +9 -3
  120. package/dist/utils/privacyConsent.js.map +1 -0
  121. package/dist/utils/reenableRequest.d.ts +1 -0
  122. package/dist/utils/reenableRequest.d.ts.map +1 -0
  123. package/dist/utils/reenableRequest.js +5 -1
  124. package/dist/utils/reenableRequest.js.map +1 -0
  125. package/dist/utils/theme.d.ts +1 -0
  126. package/dist/utils/theme.d.ts.map +1 -0
  127. package/dist/utils/theme.js +10 -4
  128. package/dist/utils/theme.js.map +1 -0
  129. package/dist/utils/widgetPermissions.d.ts +1 -0
  130. package/dist/utils/widgetPermissions.d.ts.map +1 -0
  131. package/dist/utils/widgetPermissions.js +13 -5
  132. package/dist/utils/widgetPermissions.js.map +1 -0
  133. package/dist/utils/widgetSession.d.ts +1 -0
  134. package/dist/utils/widgetSession.d.ts.map +1 -0
  135. package/dist/utils/widgetSession.js +9 -3
  136. package/dist/utils/widgetSession.js.map +1 -0
  137. package/package.json +8 -4
  138. package/src/components/ChatWidget.tsx +643 -622
  139. package/src/components/ErrorBoundary/index.tsx +62 -0
  140. package/src/config/index.ts +87 -26
  141. package/src/hooks/useChat.ts +59 -12
  142. package/src/hooks/useRemoteConfig.ts +8 -3
  143. package/src/hooks/useSocket.ts +249 -0
  144. package/src/hooks/useWebRTC.ts +99 -64
  145. package/src/index.ts +14 -3
  146. package/src/types/index.ts +177 -143
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useSocket.d.ts","sourceRoot":"","sources":["../../src/hooks/useSocket.ts"],"names":[],"mappings":"AAaA,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAEvC,MAAM,MAAM,YAAY,GAAG,YAAY,GAAG,WAAW,GAAG,cAAc,GAAG,OAAO,CAAC;AAEjF,MAAM,WAAW,gBAAgB;IAC/B,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,WAAW,GAAG,MAAM,CAAC;CAC9B;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAI,MAAM,CAAC;IACnB,SAAS,EAAG,MAAM,CAAC;IACnB,+DAA+D;IAC/D,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAM,CAAC,GAAG,EAAE,WAAW,KAAK,IAAI,CAAC;IAC3C,YAAY,CAAC,EAAG,CAAC,GAAG,EAAE,gBAAgB,KAAK,IAAI,CAAC;IAChD,YAAY,CAAC,EAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,KAAK,IAAI,CAAC;IAC1D,WAAW,CAAC,EAAI,CAAC,KAAK,EAAE,yBAAyB,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IAC5F,YAAY,CAAC,EAAG,CAAC,MAAM,EAAE,yBAAyB,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IAC7F,cAAc,CAAC,EAAC,CAAC,SAAS,EAAE,mBAAmB,EAAE,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IAC1E,SAAS,CAAC,EAAM,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IACzC,aAAa,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IACzD,YAAY,CAAC,EAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IACzD,YAAY,CAAC,EAAG,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,GAAG,MAAM,GAAG,SAAS,KAAK,IAAI,CAAC;IAC7E,eAAe,CAAC,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI,CAAC;IAC5C,eAAe,CAAC,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI,CAAC;IAC5C,kBAAkB,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;IAChD,OAAO,CAAC,EAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;CACzD;AAoCD,wBAAgB,SAAS,CAAC,IAAI,EAAE,gBAAgB;;uBA8GR,MAAM;wBAKL,MAAM;uBAKA,WAAW;8BACR,MAAM;6BACN,MAAM;8BACN,MAAM,aAAa,MAAM;8BAEzB,MAAM,gBAAgB,MAAM,UAAU,OAAO;yBAG7C,MAAM,WAAW,MAAM;4BAGnB,MAAM;8BACN,MAAM;+BAEN,MAAM,YAAY,MAAM,SAAS,MAAM;iCAG3C,MAAM,OAAO,MAAM;2BAGpB,yBAAyB,SAAS,MAAM,UAAU,MAAM,aAAa,OAAO;6BAG3E,yBAAyB,SAAS,MAAM,UAAU,MAAM;kCAGrD,mBAAmB,SAAS,MAAM;0BAGrC,MAAM,UAAU,MAAM;mCAGd,QAAQ,GAAC,MAAM,GAAC,KAAK;gCAG5B;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE;gCAG5E;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAA;KAAE;EAa/H"}
@@ -0,0 +1,203 @@
1
+ "use strict";
2
+ 'use client';
3
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
4
+ if (k2 === undefined) k2 = k;
5
+ var desc = Object.getOwnPropertyDescriptor(m, k);
6
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
7
+ desc = { enumerable: true, get: function() { return m[k]; } };
8
+ }
9
+ Object.defineProperty(o, k2, desc);
10
+ }) : (function(o, m, k, k2) {
11
+ if (k2 === undefined) k2 = k;
12
+ o[k2] = m[k];
13
+ }));
14
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
15
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
16
+ }) : function(o, v) {
17
+ o["default"] = v;
18
+ });
19
+ var __importStar = (this && this.__importStar) || (function () {
20
+ var ownKeys = function(o) {
21
+ ownKeys = Object.getOwnPropertyNames || function (o) {
22
+ var ar = [];
23
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
24
+ return ar;
25
+ };
26
+ return ownKeys(o);
27
+ };
28
+ return function (mod) {
29
+ if (mod && mod.__esModule) return mod;
30
+ var result = {};
31
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
32
+ __setModuleDefault(result, mod);
33
+ return result;
34
+ };
35
+ })();
36
+ Object.defineProperty(exports, "__esModule", { value: true });
37
+ exports.useSocket = useSocket;
38
+ /**
39
+ * useSocket — wraps socket.io-client for the ajaxter-chat npm package.
40
+ *
41
+ * The npm package fetches widget config ONCE via HTTP (GET /api/chat-config),
42
+ * then all real-time events (messages, calls, typing, presence…) flow through
43
+ * this Socket.IO connection.
44
+ *
45
+ * Install peer dep in consumer app: npm install socket.io-client
46
+ */
47
+ const react_1 = require("react");
48
+ async function createSocket(url, query) {
49
+ // Dynamic import so bundle is not broken when socket.io-client is absent
50
+ // Consumer app must have socket.io-client installed
51
+ let io;
52
+ try {
53
+ const mod = await Promise.resolve(`${'socket.io-client'}`).then(s => __importStar(require(s)));
54
+ io = (mod.default || mod);
55
+ }
56
+ catch (_a) {
57
+ throw new Error('[ajaxter-chat] socket.io-client not found. ' +
58
+ 'Run: npm install socket.io-client');
59
+ }
60
+ return io(url, {
61
+ query,
62
+ transports: ['websocket', 'polling'],
63
+ reconnection: true,
64
+ reconnectionDelay: 2000,
65
+ reconnectionAttempts: 10,
66
+ autoConnect: true,
67
+ });
68
+ }
69
+ const DEFAULT_SOCKET_URL = 'http://localhost:3005';
70
+ function useSocket(opts) {
71
+ const { widgetId, viewerUid, serverUrl = DEFAULT_SOCKET_URL, onMessage, onMessageAck, onChatPaused, onCallOffer, onCallAnswer, onIceCandidate, onCallEnd, onTypingStart, onTypingStop, onUserStatus, onTicketCreated, onTicketUpdated, onTransferAssigned, onError, } = opts;
72
+ const [status, setStatus] = (0, react_1.useState)('disconnected');
73
+ const socketRef = (0, react_1.useRef)(null);
74
+ const mountedRef = (0, react_1.useRef)(true);
75
+ const currentRoom = (0, react_1.useRef)(null);
76
+ // Stable emit helper
77
+ const emit = (0, react_1.useCallback)((event, data) => {
78
+ var _a;
79
+ if ((_a = socketRef.current) === null || _a === void 0 ? void 0 : _a.connected) {
80
+ socketRef.current.emit(event, data);
81
+ }
82
+ }, []);
83
+ (0, react_1.useEffect)(() => {
84
+ if (!widgetId || !viewerUid)
85
+ return;
86
+ mountedRef.current = true;
87
+ setStatus('connecting');
88
+ createSocket(serverUrl, { widgetId, uid: viewerUid }).then(socket => {
89
+ if (!mountedRef.current) {
90
+ socket.disconnect();
91
+ return;
92
+ }
93
+ socketRef.current = socket;
94
+ socket.on('connect', () => {
95
+ if (!mountedRef.current)
96
+ return;
97
+ setStatus('connected');
98
+ // Rejoin current room after reconnect
99
+ if (currentRoom.current) {
100
+ socket.emit('join', { roomId: currentRoom.current, widgetId });
101
+ }
102
+ });
103
+ socket.on('disconnect', () => {
104
+ if (mountedRef.current)
105
+ setStatus('disconnected');
106
+ });
107
+ socket.on('connect_error', () => {
108
+ if (mountedRef.current)
109
+ setStatus('error');
110
+ });
111
+ socket.on('message', (msg) => onMessage === null || onMessage === void 0 ? void 0 : onMessage(msg));
112
+ socket.on('message:ack', (ack) => onMessageAck === null || onMessageAck === void 0 ? void 0 : onMessageAck(ack));
113
+ socket.on('chat:paused', (p) => {
114
+ const { roomId, paused } = p;
115
+ onChatPaused === null || onChatPaused === void 0 ? void 0 : onChatPaused(roomId, paused);
116
+ });
117
+ socket.on('call-offer', (p) => {
118
+ const { offer, from, callId } = p;
119
+ onCallOffer === null || onCallOffer === void 0 ? void 0 : onCallOffer(offer, from, callId);
120
+ });
121
+ socket.on('call-answer', (p) => {
122
+ const { answer, from, callId } = p;
123
+ onCallAnswer === null || onCallAnswer === void 0 ? void 0 : onCallAnswer(answer, from, callId);
124
+ });
125
+ socket.on('ice-candidate', (p) => {
126
+ const { candidate, from } = p;
127
+ onIceCandidate === null || onIceCandidate === void 0 ? void 0 : onIceCandidate(candidate, from);
128
+ });
129
+ socket.on('call-end', (p) => {
130
+ const { callId } = p;
131
+ onCallEnd === null || onCallEnd === void 0 ? void 0 : onCallEnd(callId);
132
+ });
133
+ socket.on('typing_start', (p) => {
134
+ const { roomId, userId } = p;
135
+ onTypingStart === null || onTypingStart === void 0 ? void 0 : onTypingStart(roomId, userId);
136
+ });
137
+ socket.on('typing_stop', (p) => {
138
+ const { roomId, userId } = p;
139
+ onTypingStop === null || onTypingStop === void 0 ? void 0 : onTypingStop(roomId, userId);
140
+ });
141
+ socket.on('user:status', (p) => {
142
+ const { uid, status: s } = p;
143
+ onUserStatus === null || onUserStatus === void 0 ? void 0 : onUserStatus(uid, s);
144
+ });
145
+ socket.on('ticket:created', onTicketCreated);
146
+ socket.on('ticket:updated', onTicketUpdated);
147
+ socket.on('transfer:assigned', onTransferAssigned);
148
+ socket.on('error', (p) => {
149
+ const { code, message } = p;
150
+ onError === null || onError === void 0 ? void 0 : onError(code, message);
151
+ });
152
+ }).catch(err => {
153
+ console.error('[ajaxter-chat] Socket init error:', err.message);
154
+ if (mountedRef.current)
155
+ setStatus('error');
156
+ });
157
+ return () => {
158
+ var _a;
159
+ mountedRef.current = false;
160
+ (_a = socketRef.current) === null || _a === void 0 ? void 0 : _a.disconnect();
161
+ socketRef.current = null;
162
+ };
163
+ // eslint-disable-next-line react-hooks/exhaustive-deps
164
+ }, [widgetId, viewerUid, serverUrl]);
165
+ // ── Public API ────────────────────────────────────────────────────────────
166
+ const joinRoom = (0, react_1.useCallback)((roomId) => {
167
+ currentRoom.current = roomId;
168
+ emit('join', { roomId, widgetId });
169
+ }, [emit, widgetId]);
170
+ const leaveRoom = (0, react_1.useCallback)((roomId) => {
171
+ if (currentRoom.current === roomId)
172
+ currentRoom.current = null;
173
+ emit('leave', { roomId });
174
+ }, [emit]);
175
+ const emitMessage = (0, react_1.useCallback)((msg) => emit('message', msg), [emit]);
176
+ const emitTypingStart = (0, react_1.useCallback)((roomId) => emit('typing_start', { roomId }), [emit]);
177
+ const emitTypingStop = (0, react_1.useCallback)((roomId) => emit('typing_stop', { roomId }), [emit]);
178
+ const emitMessageRead = (0, react_1.useCallback)((roomId, messageId) => emit('message:read', { roomId, messageId }), [emit]);
179
+ const emitPauseToggle = (0, react_1.useCallback)((roomId, targetUserId, paused) => emit('chat:pause', { roomId, targetUserId, paused }), [emit]);
180
+ const emitReport = (0, react_1.useCallback)((roomId, reason) => emit('chat:report', { roomId, reason }), [emit]);
181
+ const emitBlock = (0, react_1.useCallback)((blockedUid) => emit('user:block', { blockedUid }), [emit]);
182
+ const emitUnblock = (0, react_1.useCallback)((blockedUid) => emit('user:unblock', { blockedUid }), [emit]);
183
+ const emitTransfer = (0, react_1.useCallback)((fromRoomId, toUserId, note) => emit('transfer', { fromRoomId, toUserId, note }), [emit]);
184
+ const emitAddParticipant = (0, react_1.useCallback)((roomId, uid) => emit('room:add-participant', { roomId, uid }), [emit]);
185
+ const emitCallOffer = (0, react_1.useCallback)((offer, toUid, callId, hasVideo) => emit('call-offer', { offer, to: toUid, callId, hasVideo }), [emit]);
186
+ const emitCallAnswer = (0, react_1.useCallback)((answer, toUid, callId) => emit('call-answer', { answer, to: toUid, callId }), [emit]);
187
+ const emitIceCandidate = (0, react_1.useCallback)((candidate, toUid) => emit('ice-candidate', { candidate, to: toUid }), [emit]);
188
+ const emitCallEnd = (0, react_1.useCallback)((callId, toUid) => emit('call-end', { callId, to: toUid }), [emit]);
189
+ const emitPresence = (0, react_1.useCallback)((presenceStatus) => emit('presence:update', { status: presenceStatus }), [emit]);
190
+ const emitTicketCreate = (0, react_1.useCallback)((payload) => emit('ticket:create', payload), [emit]);
191
+ const emitTicketUpdate = (0, react_1.useCallback)((payload) => emit('ticket:update', payload), [emit]);
192
+ return {
193
+ status,
194
+ joinRoom, leaveRoom,
195
+ emitMessage, emitTypingStart, emitTypingStop, emitMessageRead,
196
+ emitPauseToggle, emitReport, emitBlock, emitUnblock, emitTransfer,
197
+ emitAddParticipant,
198
+ emitCallOffer, emitCallAnswer, emitIceCandidate, emitCallEnd,
199
+ emitPresence,
200
+ emitTicketCreate, emitTicketUpdate,
201
+ };
202
+ }
203
+ //# sourceMappingURL=useSocket.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useSocket.js","sourceRoot":"","sources":["../../src/hooks/useSocket.ts"],"names":[],"mappings":"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"}
@@ -1,11 +1,19 @@
1
1
  import { CallSession, ChatUser } from '../types';
2
- export declare function useWebRTC(): {
2
+ export interface UseWebRTCOptions {
3
+ onOfferReady?: (offer: RTCSessionDescriptionInit, toUid: string, callId: string) => void;
4
+ onAnswerReady?: (answer: RTCSessionDescriptionInit, toUid: string, callId: string) => void;
5
+ onIceCandidateReady?: (candidate: RTCIceCandidateInit, toUid: string) => void;
6
+ onCallEnded?: (callId: string, toUid?: string) => void;
7
+ }
8
+ export declare function useWebRTC(opts?: UseWebRTCOptions): {
3
9
  session: CallSession;
4
10
  localVideoRef: import("react").MutableRefObject<HTMLVideoElement | null>;
5
11
  remoteVideoRef: import("react").MutableRefObject<HTMLVideoElement | null>;
6
12
  startCall: (peer: ChatUser, withVideo?: boolean) => Promise<void>;
7
- acceptCall: (offer: RTCSessionDescriptionInit, peer: ChatUser, withVideo?: boolean) => Promise<void>;
13
+ acceptCall: (offer: RTCSessionDescriptionInit, peer: ChatUser, callId: string, withVideo?: boolean) => Promise<void>;
14
+ addIceCandidate: (candidate: RTCIceCandidateInit) => Promise<void>;
8
15
  endCall: () => void;
9
16
  toggleMute: () => void;
10
17
  toggleCamera: () => void;
11
18
  };
19
+ //# sourceMappingURL=useWebRTC.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useWebRTC.d.ts","sourceRoot":"","sources":["../../src/hooks/useWebRTC.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAa,QAAQ,EAAE,MAAM,UAAU,CAAC;AAE5D,MAAM,WAAW,gBAAgB;IAC/B,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,yBAAyB,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IACzF,aAAa,CAAC,EAAE,CAAC,MAAM,EAAE,yBAAyB,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IAC3F,mBAAmB,CAAC,EAAE,CAAC,SAAS,EAAE,mBAAmB,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAC9E,WAAW,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;CACxD;AAOD,wBAAgB,SAAS,CAAC,IAAI,GAAE,gBAAqB;;;;sBA+CR,QAAQ;wBA8B1C,yBAAyB,QAC1B,QAAQ,UACN,MAAM;iCAyBsC,mBAAmB;;;;EA6C1E"}
@@ -1,112 +1,144 @@
1
- import { useState, useRef, useCallback, useEffect } from 'react';
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.useWebRTC = useWebRTC;
4
+ const react_1 = require("react");
2
5
  const ICE_SERVERS = [
3
6
  { urls: 'stun:stun.l.google.com:19302' },
4
7
  { urls: 'stun:stun1.l.google.com:19302' },
5
8
  ];
6
- export function useWebRTC() {
7
- const [session, setSession] = useState({
9
+ function useWebRTC(opts = {}) {
10
+ const { onOfferReady, onAnswerReady, onIceCandidateReady, onCallEnded } = opts;
11
+ const [session, setSession] = (0, react_1.useState)({
8
12
  state: 'idle',
9
13
  peer: null,
10
14
  startedAt: null,
11
15
  isMuted: false,
12
16
  isCameraOn: false,
13
17
  });
14
- const pcRef = useRef(null);
15
- const localStream = useRef(null);
16
- const localVideoRef = useRef(null);
17
- const remoteVideoRef = useRef(null);
18
- const updateSession = (patch) => setSession(prev => (Object.assign(Object.assign({}, prev), patch)));
19
- /** Start an outgoing call */
20
- const startCall = useCallback(async (peer, withVideo = false) => {
21
- updateSession({ state: 'calling', peer });
22
- const stream = await navigator.mediaDevices.getUserMedia({
23
- audio: true,
24
- video: withVideo,
25
- });
26
- localStream.current = stream;
27
- if (localVideoRef.current)
28
- localVideoRef.current.srcObject = stream;
18
+ const pcRef = (0, react_1.useRef)(null);
19
+ const localStream = (0, react_1.useRef)(null);
20
+ const localVideoRef = (0, react_1.useRef)(null);
21
+ const remoteVideoRef = (0, react_1.useRef)(null);
22
+ const currentCallId = (0, react_1.useRef)(null);
23
+ const peerUidRef = (0, react_1.useRef)(null);
24
+ const updateSession = (0, react_1.useCallback)((patch) => setSession(prev => (Object.assign(Object.assign({}, prev), patch))), []);
25
+ const buildPc = (0, react_1.useCallback)((peer) => {
29
26
  const pc = new RTCPeerConnection({ iceServers: ICE_SERVERS });
30
27
  pcRef.current = pc;
31
- stream.getTracks().forEach(t => pc.addTrack(t, stream));
28
+ peerUidRef.current = peer.uid;
32
29
  pc.ontrack = e => {
33
30
  if (remoteVideoRef.current)
34
31
  remoteVideoRef.current.srcObject = e.streams[0];
35
- updateSession({ state: 'connected', startedAt: new Date(), isCameraOn: withVideo });
32
+ updateSession({ state: 'connected', startedAt: new Date() });
36
33
  };
37
34
  pc.onicecandidate = e => {
38
- if (e.candidate) {
39
- // TODO: socket.emit('ice-candidate', { candidate: e.candidate, to: peer.uid });
40
- console.log('[WebRTC] ICE candidate ready — send via signalling:', e.candidate);
35
+ if (e.candidate && peerUidRef.current) {
36
+ onIceCandidateReady === null || onIceCandidateReady === void 0 ? void 0 : onIceCandidateReady(e.candidate.toJSON(), peerUidRef.current);
41
37
  }
42
38
  };
43
- const offer = await pc.createOffer();
44
- await pc.setLocalDescription(offer);
45
- // TODO: socket.emit('call-offer', { offer, to: peer.uid, from: 'me' });
46
- console.log('[WebRTC] Offer created send via signalling server:', offer);
47
- }, []);
48
- /** Accept an incoming call offer */
49
- const acceptCall = useCallback(async (offer, peer, withVideo = false) => {
39
+ pc.onconnectionstatechange = () => {
40
+ if (pc.connectionState === 'failed' || pc.connectionState === 'disconnected') {
41
+ updateSession({ state: 'ended' });
42
+ setTimeout(() => updateSession({ state: 'idle' }), 1800);
43
+ }
44
+ };
45
+ return pc;
46
+ }, [onIceCandidateReady, updateSession]);
47
+ const startCall = (0, react_1.useCallback)(async (peer, withVideo = false) => {
48
+ const callId = `call_${Date.now()}`;
49
+ currentCallId.current = callId;
50
+ updateSession({ state: 'calling', peer });
51
+ let stream;
52
+ try {
53
+ stream = await navigator.mediaDevices.getUserMedia({ audio: true, video: withVideo });
54
+ }
55
+ catch (err) {
56
+ console.error('[WebRTC] getUserMedia failed:', err);
57
+ updateSession({ state: 'idle' });
58
+ return;
59
+ }
60
+ localStream.current = stream;
61
+ if (localVideoRef.current)
62
+ localVideoRef.current.srcObject = stream;
63
+ const pc = buildPc(peer);
64
+ stream.getTracks().forEach(t => pc.addTrack(t, stream));
65
+ try {
66
+ const offer = await pc.createOffer();
67
+ await pc.setLocalDescription(offer);
68
+ onOfferReady === null || onOfferReady === void 0 ? void 0 : onOfferReady(offer, peer.uid, callId);
69
+ updateSession({ isCameraOn: withVideo });
70
+ }
71
+ catch (err) {
72
+ console.error('[WebRTC] createOffer failed:', err);
73
+ }
74
+ }, [buildPc, onOfferReady, updateSession]);
75
+ const acceptCall = (0, react_1.useCallback)(async (offer, peer, callId, withVideo = false) => {
76
+ currentCallId.current = callId;
50
77
  updateSession({ state: 'connected', peer, startedAt: new Date(), isCameraOn: withVideo });
51
- const stream = await navigator.mediaDevices.getUserMedia({ audio: true, video: withVideo });
78
+ let stream;
79
+ try {
80
+ stream = await navigator.mediaDevices.getUserMedia({ audio: true, video: withVideo });
81
+ }
82
+ catch (err) {
83
+ console.error('[WebRTC] getUserMedia failed:', err);
84
+ return;
85
+ }
52
86
  localStream.current = stream;
53
87
  if (localVideoRef.current)
54
88
  localVideoRef.current.srcObject = stream;
55
- const pc = new RTCPeerConnection({ iceServers: ICE_SERVERS });
56
- pcRef.current = pc;
89
+ const pc = buildPc(peer);
57
90
  stream.getTracks().forEach(t => pc.addTrack(t, stream));
58
- pc.ontrack = e => {
59
- if (remoteVideoRef.current)
60
- remoteVideoRef.current.srcObject = e.streams[0];
61
- };
62
- pc.onicecandidate = e => {
63
- if (e.candidate) {
64
- // TODO: socket.emit('ice-candidate', { candidate: e.candidate, to: peer.uid });
65
- }
66
- };
67
91
  await pc.setRemoteDescription(offer);
68
92
  const answer = await pc.createAnswer();
69
93
  await pc.setLocalDescription(answer);
70
- // TODO: socket.emit('call-answer', { answer, to: peer.uid });
94
+ onAnswerReady === null || onAnswerReady === void 0 ? void 0 : onAnswerReady(answer, peer.uid, callId);
95
+ }, [buildPc, onAnswerReady, updateSession]);
96
+ const addIceCandidate = (0, react_1.useCallback)(async (candidate) => {
97
+ var _a;
98
+ try {
99
+ await ((_a = pcRef.current) === null || _a === void 0 ? void 0 : _a.addIceCandidate(new RTCIceCandidate(candidate)));
100
+ }
101
+ catch (err) {
102
+ console.warn('[WebRTC] addIceCandidate failed:', err);
103
+ }
71
104
  }, []);
72
- /** Hang up */
73
- const endCall = useCallback(() => {
74
- var _a, _b;
75
- (_a = localStream.current) === null || _a === void 0 ? void 0 : _a.getTracks().forEach(t => t.stop());
76
- (_b = pcRef.current) === null || _b === void 0 ? void 0 : _b.close();
105
+ const endCall = (0, react_1.useCallback)(() => {
106
+ var _a, _b, _c;
107
+ const callId = currentCallId.current;
108
+ const peerUid = (_a = peerUidRef.current) !== null && _a !== void 0 ? _a : undefined;
109
+ (_b = localStream.current) === null || _b === void 0 ? void 0 : _b.getTracks().forEach(t => t.stop());
110
+ (_c = pcRef.current) === null || _c === void 0 ? void 0 : _c.close();
77
111
  pcRef.current = null;
78
112
  localStream.current = null;
113
+ currentCallId.current = null;
114
+ if (callId)
115
+ onCallEnded === null || onCallEnded === void 0 ? void 0 : onCallEnded(callId, peerUid);
79
116
  updateSession({ state: 'ended', peer: null, startedAt: null });
80
117
  setTimeout(() => updateSession({ state: 'idle' }), 1800);
81
- }, []);
82
- const toggleMute = useCallback(() => {
118
+ }, [onCallEnded, updateSession]);
119
+ const toggleMute = (0, react_1.useCallback)(() => {
83
120
  if (!localStream.current)
84
121
  return;
85
- const enabled = !session.isMuted;
86
- localStream.current.getAudioTracks().forEach(t => { t.enabled = enabled; });
87
- updateSession({ isMuted: !session.isMuted });
88
- }, [session.isMuted]);
89
- const toggleCamera = useCallback(() => {
122
+ const muted = !session.isMuted;
123
+ localStream.current.getAudioTracks().forEach(t => { t.enabled = !muted; });
124
+ updateSession({ isMuted: muted });
125
+ }, [session.isMuted, updateSession]);
126
+ const toggleCamera = (0, react_1.useCallback)(() => {
90
127
  if (!localStream.current)
91
128
  return;
92
- const enabled = !session.isCameraOn;
93
- localStream.current.getVideoTracks().forEach(t => { t.enabled = enabled; });
94
- updateSession({ isCameraOn: enabled });
95
- }, [session.isCameraOn]);
96
- // Cleanup on unmount
97
- useEffect(() => () => {
129
+ const on = !session.isCameraOn;
130
+ localStream.current.getVideoTracks().forEach(t => { t.enabled = on; });
131
+ updateSession({ isCameraOn: on });
132
+ }, [session.isCameraOn, updateSession]);
133
+ (0, react_1.useEffect)(() => () => {
98
134
  var _a, _b;
99
135
  (_a = localStream.current) === null || _a === void 0 ? void 0 : _a.getTracks().forEach(t => t.stop());
100
136
  (_b = pcRef.current) === null || _b === void 0 ? void 0 : _b.close();
101
137
  }, []);
102
138
  return {
103
- session,
104
- localVideoRef,
105
- remoteVideoRef,
106
- startCall,
107
- acceptCall,
108
- endCall,
109
- toggleMute,
110
- toggleCamera,
139
+ session, localVideoRef, remoteVideoRef,
140
+ startCall, acceptCall, addIceCandidate, endCall,
141
+ toggleMute, toggleCamera,
111
142
  };
112
143
  }
144
+ //# sourceMappingURL=useWebRTC.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useWebRTC.js","sourceRoot":"","sources":["../../src/hooks/useWebRTC.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -10,9 +10,11 @@ export { MaintenanceView } from './components/MaintenanceView';
10
10
  export { BottomTabs } from './components/Tabs/BottomTabs';
11
11
  export { EmojiPicker } from './components/EmojiPicker';
12
12
  export { SlideNavMenu } from './components/SlideNavMenu';
13
+ export { ErrorBoundary } from './components/ErrorBoundary';
13
14
  export { useChat } from './hooks/useChat';
14
15
  export { useWebRTC } from './hooks/useWebRTC';
15
16
  export { useRemoteConfig } from './hooks/useRemoteConfig';
17
+ export { useSocket } from './hooks/useSocket';
16
18
  export { shouldShowPrivacyNotice, dismissPrivacyNotice, getPrivacyDismissedAt } from './utils/privacyConsent';
17
19
  export { submitReenableRequest } from './utils/reenableRequest';
18
20
  export type { ReenableRequestPayload } from './utils/reenableRequest';
@@ -21,4 +23,8 @@ export { mergeTheme, darken } from './utils/theme';
21
23
  export { loadPresenceStatus, savePresenceStatus, resolveInitialPresence, syncPresenceToServer } from './utils/presenceStatus';
22
24
  export type { PresenceSyncPayload } from './utils/presenceStatus';
23
25
  export { avatarColor, initials, formatTime, formatDate, generateTranscript, downloadText, truncateWords } from './utils/chat';
24
- export type { ChatWidgetProps, ChatWidgetTheme, ChatWidgetViewer, WidgetConfig, RemoteChatData, ChatUser, ChatMessage, Ticket, RecentChat, CallSession, CallState, ChatStatus, ChatType, UserType, OnlineStatus, Screen, BottomTab, UserListContext, MessageType, LocalEnvConfig, PresenceStatus, } from './types';
26
+ export type { ChatWidgetProps, ChatWidgetTheme, ChatWidgetViewer, WidgetConfig, RemoteChatData, AjaxterConfigResponse, AjaxterInternalConfig, AjaxterWidgetSettings, AjaxterWidgetTheme, AjaxterWidgetFeatures, AjaxterMinimized, ChatUser, ChatMessage, Ticket, RecentChat, CallSession, CallState, ChatStatus, ChatType, DisplayMode, UserType, OnlineStatus, Screen, BottomTab, UserListContext, MessageType, PresenceStatus, LocalEnvConfig, } from './types';
27
+ export type { UseSocketOptions, SocketStatus, SocketMessageAck } from './hooks/useSocket';
28
+ export type { UseChatOptions } from './hooks/useChat';
29
+ export type { UseWebRTCOptions } from './hooks/useWebRTC';
30
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,EAAE,UAAU,EAAE,MAAc,yBAAyB,CAAC;AAC7D,OAAO,EAAE,cAAc,EAAE,MAAU,6BAA6B,CAAC;AACjE,OAAO,EAAE,UAAU,EAAE,MAAc,yBAAyB,CAAC;AAC7D,OAAO,EAAE,iBAAiB,EAAE,MAAO,gCAAgC,CAAC;AACpE,OAAO,EAAE,YAAY,EAAE,MAAY,2BAA2B,CAAC;AAC/D,OAAO,EAAE,eAAe,EAAE,MAAS,wBAAwB,CAAC;AAC5D,OAAO,EAAE,UAAU,EAAE,MAAc,yBAAyB,CAAC;AAC7D,OAAO,EAAE,eAAe,EAAE,MAAS,8BAA8B,CAAC;AAClE,OAAO,EAAE,UAAU,EAAE,MAAc,8BAA8B,CAAC;AAClE,OAAO,EAAE,WAAW,EAAE,MAAa,0BAA0B,CAAC;AAC9D,OAAO,EAAE,YAAY,EAAE,MAAY,2BAA2B,CAAC;AAC/D,OAAO,EAAE,aAAa,EAAE,MAAW,4BAA4B,CAAC;AAEhE,OAAO,EAAE,OAAO,EAAE,MAAiB,iBAAiB,CAAC;AACrD,OAAO,EAAE,SAAS,EAAE,MAAe,mBAAmB,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,MAAS,yBAAyB,CAAC;AAC7D,OAAO,EAAE,SAAS,EAAE,MAAe,mBAAmB,CAAC;AAEvD,OAAO,EAAE,uBAAuB,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAC9G,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAChE,YAAY,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AACtE,OAAO,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AAChE,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,MAAwB,eAAe,CAAC;AACrE,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9H,YAAY,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAClE,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,UAAU,EAAE,UAAU,EAAE,kBAAkB,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAE9H,YAAY,EAEV,eAAe,EAAE,eAAe,EAAE,gBAAgB,EAElD,YAAY,EAAE,cAAc,EAC5B,qBAAqB,EAAE,qBAAqB,EAAE,qBAAqB,EACnE,kBAAkB,EAAE,qBAAqB,EAAE,gBAAgB,EAE3D,QAAQ,EAAE,WAAW,EAAE,MAAM,EAAE,UAAU,EACzC,WAAW,EAAE,SAAS,EAEtB,UAAU,EAAE,QAAQ,EAAE,WAAW,EAAE,QAAQ,EAAE,YAAY,EACzD,MAAM,EAAE,SAAS,EAAE,eAAe,EAAE,WAAW,EAAE,cAAc,EAC/D,cAAc,GACf,MAAM,SAAS,CAAC;AAEjB,YAAY,EAAE,gBAAgB,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAC1F,YAAY,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACtD,YAAY,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC"}
package/dist/index.js CHANGED
@@ -1,21 +1,67 @@
1
- export { ChatWidget, default } from './components/ChatWidget';
2
- export { HomeScreen } from './components/HomeScreen';
3
- export { UserListScreen } from './components/UserListScreen';
4
- export { ChatScreen } from './components/ChatScreen';
5
- export { RecentChatsScreen } from './components/RecentChatsScreen';
6
- export { TicketScreen } from './components/TicketScreen';
7
- export { BlockListScreen } from './components/BlockList';
8
- export { CallScreen } from './components/CallScreen';
9
- export { MaintenanceView } from './components/MaintenanceView';
10
- export { BottomTabs } from './components/Tabs/BottomTabs';
11
- export { EmojiPicker } from './components/EmojiPicker';
12
- export { SlideNavMenu } from './components/SlideNavMenu';
13
- export { useChat } from './hooks/useChat';
14
- export { useWebRTC } from './hooks/useWebRTC';
15
- export { useRemoteConfig } from './hooks/useRemoteConfig';
16
- export { shouldShowPrivacyNotice, dismissPrivacyNotice, getPrivacyDismissedAt } from './utils/privacyConsent';
17
- export { submitReenableRequest } from './utils/reenableRequest';
18
- export { loadLocalConfig, fetchRemoteChatData } from './config';
19
- export { mergeTheme, darken } from './utils/theme';
20
- export { loadPresenceStatus, savePresenceStatus, resolveInitialPresence, syncPresenceToServer } from './utils/presenceStatus';
21
- export { avatarColor, initials, formatTime, formatDate, generateTranscript, downloadText, truncateWords } from './utils/chat';
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.truncateWords = exports.downloadText = exports.generateTranscript = exports.formatDate = exports.formatTime = exports.initials = exports.avatarColor = exports.syncPresenceToServer = exports.resolveInitialPresence = exports.savePresenceStatus = exports.loadPresenceStatus = exports.darken = exports.mergeTheme = exports.fetchRemoteChatData = exports.loadLocalConfig = exports.submitReenableRequest = exports.getPrivacyDismissedAt = exports.dismissPrivacyNotice = exports.shouldShowPrivacyNotice = exports.useSocket = exports.useRemoteConfig = exports.useWebRTC = exports.useChat = exports.ErrorBoundary = exports.SlideNavMenu = exports.EmojiPicker = exports.BottomTabs = exports.MaintenanceView = exports.CallScreen = exports.BlockListScreen = exports.TicketScreen = exports.RecentChatsScreen = exports.ChatScreen = exports.UserListScreen = exports.HomeScreen = exports.default = exports.ChatWidget = void 0;
7
+ var ChatWidget_1 = require("./components/ChatWidget");
8
+ Object.defineProperty(exports, "ChatWidget", { enumerable: true, get: function () { return ChatWidget_1.ChatWidget; } });
9
+ Object.defineProperty(exports, "default", { enumerable: true, get: function () { return __importDefault(ChatWidget_1).default; } });
10
+ var HomeScreen_1 = require("./components/HomeScreen");
11
+ Object.defineProperty(exports, "HomeScreen", { enumerable: true, get: function () { return HomeScreen_1.HomeScreen; } });
12
+ var UserListScreen_1 = require("./components/UserListScreen");
13
+ Object.defineProperty(exports, "UserListScreen", { enumerable: true, get: function () { return UserListScreen_1.UserListScreen; } });
14
+ var ChatScreen_1 = require("./components/ChatScreen");
15
+ Object.defineProperty(exports, "ChatScreen", { enumerable: true, get: function () { return ChatScreen_1.ChatScreen; } });
16
+ var RecentChatsScreen_1 = require("./components/RecentChatsScreen");
17
+ Object.defineProperty(exports, "RecentChatsScreen", { enumerable: true, get: function () { return RecentChatsScreen_1.RecentChatsScreen; } });
18
+ var TicketScreen_1 = require("./components/TicketScreen");
19
+ Object.defineProperty(exports, "TicketScreen", { enumerable: true, get: function () { return TicketScreen_1.TicketScreen; } });
20
+ var BlockList_1 = require("./components/BlockList");
21
+ Object.defineProperty(exports, "BlockListScreen", { enumerable: true, get: function () { return BlockList_1.BlockListScreen; } });
22
+ var CallScreen_1 = require("./components/CallScreen");
23
+ Object.defineProperty(exports, "CallScreen", { enumerable: true, get: function () { return CallScreen_1.CallScreen; } });
24
+ var MaintenanceView_1 = require("./components/MaintenanceView");
25
+ Object.defineProperty(exports, "MaintenanceView", { enumerable: true, get: function () { return MaintenanceView_1.MaintenanceView; } });
26
+ var BottomTabs_1 = require("./components/Tabs/BottomTabs");
27
+ Object.defineProperty(exports, "BottomTabs", { enumerable: true, get: function () { return BottomTabs_1.BottomTabs; } });
28
+ var EmojiPicker_1 = require("./components/EmojiPicker");
29
+ Object.defineProperty(exports, "EmojiPicker", { enumerable: true, get: function () { return EmojiPicker_1.EmojiPicker; } });
30
+ var SlideNavMenu_1 = require("./components/SlideNavMenu");
31
+ Object.defineProperty(exports, "SlideNavMenu", { enumerable: true, get: function () { return SlideNavMenu_1.SlideNavMenu; } });
32
+ var ErrorBoundary_1 = require("./components/ErrorBoundary");
33
+ Object.defineProperty(exports, "ErrorBoundary", { enumerable: true, get: function () { return ErrorBoundary_1.ErrorBoundary; } });
34
+ var useChat_1 = require("./hooks/useChat");
35
+ Object.defineProperty(exports, "useChat", { enumerable: true, get: function () { return useChat_1.useChat; } });
36
+ var useWebRTC_1 = require("./hooks/useWebRTC");
37
+ Object.defineProperty(exports, "useWebRTC", { enumerable: true, get: function () { return useWebRTC_1.useWebRTC; } });
38
+ var useRemoteConfig_1 = require("./hooks/useRemoteConfig");
39
+ Object.defineProperty(exports, "useRemoteConfig", { enumerable: true, get: function () { return useRemoteConfig_1.useRemoteConfig; } });
40
+ var useSocket_1 = require("./hooks/useSocket");
41
+ Object.defineProperty(exports, "useSocket", { enumerable: true, get: function () { return useSocket_1.useSocket; } });
42
+ var privacyConsent_1 = require("./utils/privacyConsent");
43
+ Object.defineProperty(exports, "shouldShowPrivacyNotice", { enumerable: true, get: function () { return privacyConsent_1.shouldShowPrivacyNotice; } });
44
+ Object.defineProperty(exports, "dismissPrivacyNotice", { enumerable: true, get: function () { return privacyConsent_1.dismissPrivacyNotice; } });
45
+ Object.defineProperty(exports, "getPrivacyDismissedAt", { enumerable: true, get: function () { return privacyConsent_1.getPrivacyDismissedAt; } });
46
+ var reenableRequest_1 = require("./utils/reenableRequest");
47
+ Object.defineProperty(exports, "submitReenableRequest", { enumerable: true, get: function () { return reenableRequest_1.submitReenableRequest; } });
48
+ var config_1 = require("./config");
49
+ Object.defineProperty(exports, "loadLocalConfig", { enumerable: true, get: function () { return config_1.loadLocalConfig; } });
50
+ Object.defineProperty(exports, "fetchRemoteChatData", { enumerable: true, get: function () { return config_1.fetchRemoteChatData; } });
51
+ var theme_1 = require("./utils/theme");
52
+ Object.defineProperty(exports, "mergeTheme", { enumerable: true, get: function () { return theme_1.mergeTheme; } });
53
+ Object.defineProperty(exports, "darken", { enumerable: true, get: function () { return theme_1.darken; } });
54
+ var presenceStatus_1 = require("./utils/presenceStatus");
55
+ Object.defineProperty(exports, "loadPresenceStatus", { enumerable: true, get: function () { return presenceStatus_1.loadPresenceStatus; } });
56
+ Object.defineProperty(exports, "savePresenceStatus", { enumerable: true, get: function () { return presenceStatus_1.savePresenceStatus; } });
57
+ Object.defineProperty(exports, "resolveInitialPresence", { enumerable: true, get: function () { return presenceStatus_1.resolveInitialPresence; } });
58
+ Object.defineProperty(exports, "syncPresenceToServer", { enumerable: true, get: function () { return presenceStatus_1.syncPresenceToServer; } });
59
+ var chat_1 = require("./utils/chat");
60
+ Object.defineProperty(exports, "avatarColor", { enumerable: true, get: function () { return chat_1.avatarColor; } });
61
+ Object.defineProperty(exports, "initials", { enumerable: true, get: function () { return chat_1.initials; } });
62
+ Object.defineProperty(exports, "formatTime", { enumerable: true, get: function () { return chat_1.formatTime; } });
63
+ Object.defineProperty(exports, "formatDate", { enumerable: true, get: function () { return chat_1.formatDate; } });
64
+ Object.defineProperty(exports, "generateTranscript", { enumerable: true, get: function () { return chat_1.generateTranscript; } });
65
+ Object.defineProperty(exports, "downloadText", { enumerable: true, get: function () { return chat_1.downloadText; } });
66
+ Object.defineProperty(exports, "truncateWords", { enumerable: true, get: function () { return chat_1.truncateWords; } });
67
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;AAAA,sDAA8D;AAArD,wGAAA,UAAU,OAAA;AAAE,sHAAA,OAAO,OAAA;AAC5B,sDAA6D;AAApD,wGAAA,UAAU,OAAA;AACnB,8DAAiE;AAAxD,gHAAA,cAAc,OAAA;AACvB,sDAA6D;AAApD,wGAAA,UAAU,OAAA;AACnB,oEAAoE;AAA3D,sHAAA,iBAAiB,OAAA;AAC1B,0DAA+D;AAAtD,4GAAA,YAAY,OAAA;AACrB,oDAA4D;AAAnD,4GAAA,eAAe,OAAA;AACxB,sDAA6D;AAApD,wGAAA,UAAU,OAAA;AACnB,gEAAkE;AAAzD,kHAAA,eAAe,OAAA;AACxB,2DAAkE;AAAzD,wGAAA,UAAU,OAAA;AACnB,wDAA8D;AAArD,0GAAA,WAAW,OAAA;AACpB,0DAA+D;AAAtD,4GAAA,YAAY,OAAA;AACrB,4DAAgE;AAAvD,8GAAA,aAAa,OAAA;AAEtB,2CAAqD;AAA5C,kGAAA,OAAO,OAAA;AAChB,+CAAuD;AAA9C,sGAAA,SAAS,OAAA;AAClB,2DAA6D;AAApD,kHAAA,eAAe,OAAA;AACxB,+CAAuD;AAA9C,sGAAA,SAAS,OAAA;AAElB,yDAA8G;AAArG,yHAAA,uBAAuB,OAAA;AAAE,sHAAA,oBAAoB,OAAA;AAAE,uHAAA,qBAAqB,OAAA;AAC7E,2DAAgE;AAAvD,wHAAA,qBAAqB,OAAA;AAE9B,mCAAgE;AAAvD,yGAAA,eAAe,OAAA;AAAE,6GAAA,mBAAmB,OAAA;AAC7C,uCAAqE;AAA5D,mGAAA,UAAU,OAAA;AAAE,+FAAA,MAAM,OAAA;AAC3B,yDAA8H;AAArH,oHAAA,kBAAkB,OAAA;AAAE,oHAAA,kBAAkB,OAAA;AAAE,wHAAA,sBAAsB,OAAA;AAAE,sHAAA,oBAAoB,OAAA;AAE7F,qCAA8H;AAArH,mGAAA,WAAW,OAAA;AAAE,gGAAA,QAAQ,OAAA;AAAE,kGAAA,UAAU,OAAA;AAAE,kGAAA,UAAU,OAAA;AAAE,0GAAA,kBAAkB,OAAA;AAAE,oGAAA,YAAY,OAAA;AAAE,qGAAA,aAAa,OAAA"}