genassist-chat-react 1.0.37 → 1.0.38
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +26 -4
- package/dist/components/AudioPlayer.d.ts +11 -0
- package/dist/components/AudioPlayer.js +199 -0
- package/dist/components/ChatMessage.d.ts +3 -0
- package/dist/components/ChatMessage.js +5 -4
- package/dist/components/GenAgentChat.js +147 -838
- package/dist/components/VoiceInput.d.ts +1 -3
- package/dist/components/VoiceInput.js +262 -48
- package/dist/hooks/useAudioRecorder.d.ts +8 -0
- package/dist/hooks/useAudioRecorder.js +124 -0
- package/dist/hooks/useChat.d.ts +1 -0
- package/dist/hooks/useChat.js +45 -9
- package/dist/hooks/useFileAttachments.d.ts +16 -0
- package/dist/hooks/useFileAttachments.js +183 -0
- package/dist/hooks/useScrollManagement.d.ts +15 -0
- package/dist/hooks/useScrollManagement.js +124 -0
- package/dist/hooks/useThinkingAnimation.d.ts +12 -0
- package/dist/hooks/useThinkingAnimation.js +53 -0
- package/dist/hooks/useViewportManager.d.ts +20 -0
- package/dist/hooks/useViewportManager.js +100 -0
- package/dist/services/chatService.d.ts +1 -0
- package/dist/services/chatService.js +67 -12
- package/dist/styles/genAgentChatStyles.d.ts +80 -0
- package/dist/styles/genAgentChatStyles.js +427 -0
- package/dist/types/index.d.ts +2 -0
- package/dist/types/index.js +1 -1
- package/package.json +6 -2
|
@@ -0,0 +1,183 @@
|
|
|
1
|
+
var __assign = (this && this.__assign) || function () {
|
|
2
|
+
__assign = Object.assign || function(t) {
|
|
3
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
4
|
+
s = arguments[i];
|
|
5
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
6
|
+
t[p] = s[p];
|
|
7
|
+
}
|
|
8
|
+
return t;
|
|
9
|
+
};
|
|
10
|
+
return __assign.apply(this, arguments);
|
|
11
|
+
};
|
|
12
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
13
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
14
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
15
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
16
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
17
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
18
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
19
|
+
});
|
|
20
|
+
};
|
|
21
|
+
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
22
|
+
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype);
|
|
23
|
+
return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
24
|
+
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
25
|
+
function step(op) {
|
|
26
|
+
if (f) throw new TypeError("Generator is already executing.");
|
|
27
|
+
while (g && (g = 0, op[0] && (_ = 0)), _) try {
|
|
28
|
+
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
29
|
+
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
30
|
+
switch (op[0]) {
|
|
31
|
+
case 0: case 1: t = op; break;
|
|
32
|
+
case 4: _.label++; return { value: op[1], done: false };
|
|
33
|
+
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
34
|
+
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
35
|
+
default:
|
|
36
|
+
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
37
|
+
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
38
|
+
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
39
|
+
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
40
|
+
if (t[2]) _.ops.pop();
|
|
41
|
+
_.trys.pop(); continue;
|
|
42
|
+
}
|
|
43
|
+
op = body.call(thisArg, _);
|
|
44
|
+
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
45
|
+
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
46
|
+
}
|
|
47
|
+
};
|
|
48
|
+
var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
|
|
49
|
+
if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
|
|
50
|
+
if (ar || !(i in from)) {
|
|
51
|
+
if (!ar) ar = Array.prototype.slice.call(from, 0, i);
|
|
52
|
+
ar[i] = from[i];
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
return to.concat(ar || Array.prototype.slice.call(from));
|
|
56
|
+
};
|
|
57
|
+
import { useState, useRef, useEffect } from 'react';
|
|
58
|
+
export function useFileAttachments(_a) {
|
|
59
|
+
var _this = this;
|
|
60
|
+
var uploadFile = _a.uploadFile, t = _a.t;
|
|
61
|
+
var _b = useState([]), attachments = _b[0], setAttachments = _b[1];
|
|
62
|
+
var _c = useState(new Set()), uploadingFiles = _c[0], setUploadingFiles = _c[1];
|
|
63
|
+
var _d = useState(null), fileErrorToast = _d[0], setFileErrorToast = _d[1];
|
|
64
|
+
var fileErrorToastTimeoutRef = useRef(null);
|
|
65
|
+
var fileInputRef = useRef(null);
|
|
66
|
+
useEffect(function () {
|
|
67
|
+
return function () {
|
|
68
|
+
if (fileErrorToastTimeoutRef.current) {
|
|
69
|
+
clearTimeout(fileErrorToastTimeoutRef.current);
|
|
70
|
+
}
|
|
71
|
+
};
|
|
72
|
+
}, []);
|
|
73
|
+
var handleFileChange = function (e) { return __awaiter(_this, void 0, void 0, function () {
|
|
74
|
+
var newFiles_1, newAttachments_1, newUploadingFiles_1, settled, fileToAttachmentMap_1, failedFileKeys_1, hasFailedUploads, error_1, finalUploadingFiles_1;
|
|
75
|
+
var _this = this;
|
|
76
|
+
return __generator(this, function (_a) {
|
|
77
|
+
switch (_a.label) {
|
|
78
|
+
case 0:
|
|
79
|
+
if (!(e.target.files && e.target.files.length > 0)) return [3 /*break*/, 5];
|
|
80
|
+
newFiles_1 = Array.from(e.target.files);
|
|
81
|
+
newAttachments_1 = newFiles_1.map(function (file) { return ({ file: file, attachment: null }); });
|
|
82
|
+
setAttachments(function (prev) { return __spreadArray(__spreadArray([], prev, true), newAttachments_1, true); });
|
|
83
|
+
newUploadingFiles_1 = new Set(uploadingFiles);
|
|
84
|
+
newFiles_1.forEach(function (file) { return newUploadingFiles_1.add(file.name); });
|
|
85
|
+
setUploadingFiles(newUploadingFiles_1);
|
|
86
|
+
_a.label = 1;
|
|
87
|
+
case 1:
|
|
88
|
+
_a.trys.push([1, 3, 4, 5]);
|
|
89
|
+
return [4 /*yield*/, Promise.allSettled(newFiles_1.map(function (file) { return __awaiter(_this, void 0, void 0, function () {
|
|
90
|
+
var _a;
|
|
91
|
+
return __generator(this, function (_b) {
|
|
92
|
+
switch (_b.label) {
|
|
93
|
+
case 0:
|
|
94
|
+
_a = { file: file };
|
|
95
|
+
return [4 /*yield*/, uploadFile(file)];
|
|
96
|
+
case 1: return [2 /*return*/, (_a.attachment = _b.sent(), _a)];
|
|
97
|
+
}
|
|
98
|
+
});
|
|
99
|
+
}); }))];
|
|
100
|
+
case 2:
|
|
101
|
+
settled = _a.sent();
|
|
102
|
+
fileToAttachmentMap_1 = new Map();
|
|
103
|
+
failedFileKeys_1 = new Set();
|
|
104
|
+
settled.forEach(function (result, index) {
|
|
105
|
+
var file = newFiles_1[index];
|
|
106
|
+
if (!file)
|
|
107
|
+
return;
|
|
108
|
+
var fileKey = "".concat(file.name, ":").concat(file.size, ":").concat(file.lastModified);
|
|
109
|
+
if (result.status === 'rejected') {
|
|
110
|
+
fileToAttachmentMap_1.set(fileKey, null);
|
|
111
|
+
failedFileKeys_1.add(fileKey);
|
|
112
|
+
return;
|
|
113
|
+
}
|
|
114
|
+
var attachment = result.value.attachment;
|
|
115
|
+
fileToAttachmentMap_1.set(fileKey, attachment);
|
|
116
|
+
if (attachment === null) {
|
|
117
|
+
failedFileKeys_1.add(fileKey);
|
|
118
|
+
}
|
|
119
|
+
});
|
|
120
|
+
hasFailedUploads = failedFileKeys_1.size > 0;
|
|
121
|
+
setAttachments(function (prev) {
|
|
122
|
+
return prev
|
|
123
|
+
.filter(function (att) {
|
|
124
|
+
var fileKey = "".concat(att.file.name, ":").concat(att.file.size, ":").concat(att.file.lastModified);
|
|
125
|
+
return !failedFileKeys_1.has(fileKey);
|
|
126
|
+
})
|
|
127
|
+
.map(function (att) {
|
|
128
|
+
var fileKey = "".concat(att.file.name, ":").concat(att.file.size, ":").concat(att.file.lastModified);
|
|
129
|
+
var uploadedAttachment = fileToAttachmentMap_1.get(fileKey);
|
|
130
|
+
if (uploadedAttachment !== undefined) {
|
|
131
|
+
return __assign(__assign({}, att), { attachment: uploadedAttachment });
|
|
132
|
+
}
|
|
133
|
+
return att;
|
|
134
|
+
});
|
|
135
|
+
});
|
|
136
|
+
if (hasFailedUploads) {
|
|
137
|
+
if (fileErrorToastTimeoutRef.current) {
|
|
138
|
+
clearTimeout(fileErrorToastTimeoutRef.current);
|
|
139
|
+
}
|
|
140
|
+
setFileErrorToast(t('fileUpload.fileTypeNotSupported', 'This file type is not supported.'));
|
|
141
|
+
fileErrorToastTimeoutRef.current = setTimeout(function () {
|
|
142
|
+
setFileErrorToast(null);
|
|
143
|
+
fileErrorToastTimeoutRef.current = null;
|
|
144
|
+
}, 4000);
|
|
145
|
+
}
|
|
146
|
+
return [3 /*break*/, 5];
|
|
147
|
+
case 3:
|
|
148
|
+
error_1 = _a.sent();
|
|
149
|
+
console.error('Error uploading file', error_1);
|
|
150
|
+
return [3 /*break*/, 5];
|
|
151
|
+
case 4:
|
|
152
|
+
finalUploadingFiles_1 = new Set(uploadingFiles);
|
|
153
|
+
newFiles_1.forEach(function (file) { return finalUploadingFiles_1.delete(file.name); });
|
|
154
|
+
setUploadingFiles(finalUploadingFiles_1);
|
|
155
|
+
if (fileInputRef.current) {
|
|
156
|
+
fileInputRef.current.value = '';
|
|
157
|
+
}
|
|
158
|
+
return [7 /*endfinally*/];
|
|
159
|
+
case 5: return [2 /*return*/];
|
|
160
|
+
}
|
|
161
|
+
});
|
|
162
|
+
}); };
|
|
163
|
+
var handleRemoveAttachment = function (fileName) {
|
|
164
|
+
setAttachments(function (prev) { return prev.filter(function (att) { return att.file.name !== fileName; }); });
|
|
165
|
+
};
|
|
166
|
+
var clearAttachments = function () {
|
|
167
|
+
setAttachments([]);
|
|
168
|
+
if (fileInputRef.current) {
|
|
169
|
+
fileInputRef.current.value = '';
|
|
170
|
+
}
|
|
171
|
+
};
|
|
172
|
+
return {
|
|
173
|
+
attachments: attachments,
|
|
174
|
+
setAttachments: setAttachments,
|
|
175
|
+
uploadingFiles: uploadingFiles,
|
|
176
|
+
fileErrorToast: fileErrorToast,
|
|
177
|
+
fileInputRef: fileInputRef,
|
|
178
|
+
handleFileChange: handleFileChange,
|
|
179
|
+
handleRemoveAttachment: handleRemoveAttachment,
|
|
180
|
+
clearAttachments: clearAttachments,
|
|
181
|
+
};
|
|
182
|
+
}
|
|
183
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlRmlsZUF0dGFjaG1lbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2hvb2tzL3VzZUZpbGVBdHRhY2htZW50cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxNQUFNLE9BQU8sQ0FBQztBQVFwRCxNQUFNLFVBQVUsa0JBQWtCLENBQUMsRUFBNEM7SUFBL0UsaUJBK0dDO1FBL0dvQyxVQUFVLGdCQUFBLEVBQUUsQ0FBQyxPQUFBO0lBQzFDLElBQUEsS0FBZ0MsUUFBUSxDQUF1QixFQUFFLENBQUMsRUFBakUsV0FBVyxRQUFBLEVBQUUsY0FBYyxRQUFzQyxDQUFDO0lBQ25FLElBQUEsS0FBc0MsUUFBUSxDQUFjLElBQUksR0FBRyxFQUFFLENBQUMsRUFBckUsY0FBYyxRQUFBLEVBQUUsaUJBQWlCLFFBQW9DLENBQUM7SUFDdkUsSUFBQSxLQUFzQyxRQUFRLENBQWdCLElBQUksQ0FBQyxFQUFsRSxjQUFjLFFBQUEsRUFBRSxpQkFBaUIsUUFBaUMsQ0FBQztJQUMxRSxJQUFNLHdCQUF3QixHQUFHLE1BQU0sQ0FBdUMsSUFBSSxDQUFDLENBQUM7SUFDcEYsSUFBTSxZQUFZLEdBQUcsTUFBTSxDQUFtQixJQUFJLENBQUMsQ0FBQztJQUVwRCxTQUFTLENBQUM7UUFDUixPQUFPO1lBQ0wsSUFBSSx3QkFBd0IsQ0FBQyxPQUFPLEVBQUUsQ0FBQztnQkFDckMsWUFBWSxDQUFDLHdCQUF3QixDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQ2pELENBQUM7UUFDSCxDQUFDLENBQUM7SUFDSixDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFFUCxJQUFNLGdCQUFnQixHQUFHLFVBQU8sQ0FBc0M7Ozs7Ozt5QkFDaEUsQ0FBQSxDQUFDLENBQUMsTUFBTSxDQUFDLEtB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QyxPQUFPLEVBQUUsQ0FBQzt3QkFDekIsWUFBWSxDQUFDLE9BQVEsQ0FBQyxLQUFLLEdBQUcsRUFBRSxDQUFDO29CQUNuQyxDQUFDOzs7OztTQUdOLENBQUM7SUFFRixJQUFNLHNCQUFzQixHQUFHLFVBQUMsUUFBZ0I7UUFDOUMsY0FBYyxDQUFDLFVBQUEsSUFBSSxJQUFJLE9BQUEsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFBLEdBQUcsSUFBSSxPQUFBLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxLQUFLLFFBQVEsRUFBMUIsQ0FBMEIsQ0FBQyxFQUE5QyxDQUE4QyxDQUFDLENBQUM7SUFDekUsQ0FBQyxDQUFDO0lBRUYsSUFBTSxnQkFBZ0IsR0FBRztRQUN2QixjQUFjLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDbkIsSUFBSSxZQUFZLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDekIsWUFBWSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEdBQUcsRUFBRSxDQUFDO1FBQ2xDLENBQUM7SUFDSCxDQUFDLENBQUM7SUFFRixPQUFPO1FBQ0wsV0FBVyxhQUFBO1FBQ1gsY0FBYyxnQkFBQTtRQUNkLGNBQWMsZ0JBQUE7UUFDZCxjQUFjLGdCQUFBO1FBQ2QsWUFBWSxjQUFBO1FBQ1osZ0JBQWdCLGtCQUFBO1FBQ2hCLHNCQUFzQix3QkFBQTtRQUN0QixnQkFBZ0Isa0JBQUE7S0FDakIsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB1c2VTdGF0ZSwgdXNlUmVmLCB1c2VFZmZlY3QgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBBdHRhY2htZW50LCBBdHRhY2htZW50V2l0aEZpbGUgfSBmcm9tICcuLi90eXBlcyc7XG5cbmludGVyZmFjZSBVc2VGaWxlQXR0YWNobWVudHNPcHRpb25zIHtcbiAgdXBsb2FkRmlsZTogKGZpbGU6IEZpbGUpID0+IFByb21pc2U8QXR0YWNobWVudCB8IG51bGw+O1xuICB0OiAoa2V5OiBzdHJpbmcsIGZhbGxiYWNrPzogc3RyaW5nKSA9PiBzdHJpbmc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB1c2VGaWxlQXR0YWNobWVudHMoeyB1cGxvYWRGaWxlLCB0IH06IFVzZUZpbGVBdHRhY2htZW50c09wdGlvbnMpIHtcbiAgY29uc3QgW2F0dGFjaG1lbnRzLCBzZXRBdHRhY2htZW50c10gPSB1c2VTdGF0ZTxBdHRhY2htZW50V2l0aEZpbGVbXT4oW10pO1xuICBjb25zdCBbdXBsb2FkaW5nRmlsZXMsIHNldFVwbG9hZGluZ0ZpbGVzXSA9IHVzZVN0YXRlPFNldDxzdHJpbmc+PihuZXcgU2V0KCkpO1xuICBjb25zdCBbZmlsZUVycm9yVG9hc3QsIHNldEZpbGVFcnJvclRvYXN0XSA9IHVzZVN0YXRlPHN0cmluZyB8IG51bGw+KG51bGwpO1xuICBjb25zdCBmaWxlRXJyb3JUb2FzdFRpbWVvdXRSZWYgPSB1c2VSZWY8UmV0dXJuVHlwZTx0eXBlb2Ygc2V0VGltZW91dD4gfCBudWxsPihudWxsKTtcbiAgY29uc3QgZmlsZUlucHV0UmVmID0gdXNlUmVmPEhUTUxJbnB1dEVsZW1lbnQ+KG51bGwpO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGlmIChmaWxlRXJyb3JUb2FzdFRpbWVvdXRSZWYuY3VycmVudCkge1xuICAgICAgICBjbGVhclRpbWVvdXQoZmlsZUVycm9yVG9hc3RUaW1lb3V0UmVmLmN1cnJlbnQpO1xuICAgICAgfVxuICAgIH07XG4gIH0sIFtdKTtcblxuICBjb25zdCBoYW5kbGVGaWxlQ2hhbmdlID0gYXN5bmMgKGU6IFJlYWN0LkNoYW5nZUV2ZW50PEhUTUxJbnB1dEVsZW1lbnQ+KSA9PiB7XG4gICAgaWYgKGUudGFyZ2V0LmZpbGVzICYmIGUudGFyZ2V0LmZpbGVzLmxlbmd0aCA+IDApIHtcbiAgICAgIGNvbnN0IG5ld0ZpbGVzID0gQXJyYXkuZnJvbShlLnRhcmdldC5maWxlcyk7XG5cbiAgICAgIGNvbnN0IG5ld0F0dGFjaG1lbnRzOiBBdHRhY2htZW50V2l0aEZpbGVbXSA9IG5ld0ZpbGVzLm1hcChmaWxlID0+ICh7IGZpbGUsIGF0dGFjaG1lbnQ6IG51bGwgfSkpO1xuICAgICAgc2V0QXR0YWNobWVudHMocHJldiA9PiBbLi4ucHJldiwgLi4ubmV3QXR0YWNobWVudHNdKTtcblxuICAgICAgY29uc3QgbmV3VXBsb2FkaW5nRmlsZXMgPSBuZXcgU2V0KHVwbG9hZGluZ0ZpbGVzKTtcbiAgICAgIG5ld0ZpbGVzLmZvckVhY2goZmlsZSA9PiBuZXdVcGxvYWRpbmdGaWxlcy5hZGQoZmlsZS5uYW1lKSk7XG4gICAgICBzZXRVcGxvYWRpbmdGaWxlcyhuZXdVcGxvYWRpbmdGaWxlcyk7XG5cbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHNldHRsZWQgPSBhd2FpdCBQcm9taXNlLmFsbFNldHRsZWQoXG4gICAgICAgICAgbmV3RmlsZXMubWFwKGFzeW5jIChmaWxlKSA9PiAoeyBmaWxlLCBhdHRhY2htZW50OiBhd2FpdCB1cGxvYWRGaWxlKGZpbGUpIH0pKVxuICAgICAgICApO1xuXG4gICAgICAgIGNvbnN0IGZpbGVUb0F0dGFjaG1lbnRNYXAgPSBuZXcgTWFwPHN0cmluZywgQXR0YWNobWVudCB8IG51bGw+KCk7XG4gICAgICAgIGNvbnN0IGZhaWxlZEZpbGVLZXlzID0gbmV3IFNldDxzdHJpbmc+KCk7XG4gICAgICAgIHNldHRsZWQuZm9yRWFjaCgocmVzdWx0LCBpbmRleCkgPT4ge1xuICAgICAgICAgIGNvbnN0IGZpbGUgPSBuZXdGaWxlc1tpbmRleF07XG4gICAgICAgICAgaWYgKCFmaWxlKSByZXR1cm47XG4gICAgICAgICAgY29uc3QgZmlsZUtleSA9IGAke2ZpbGUubmFtZX06JHtmaWxlLnNpemV9OiR7ZmlsZS5sYXN0TW9kaWZpZWR9YDtcbiAgICAgICAgICBpZiAocmVzdWx0LnN0YXR1cyA9PT0gJ3JlamVjdGVkJykge1xuICAgICAgICAgICAgZmlsZVRvQXR0YWNobWVudE1hcC5zZXQoZmlsZUtleSwgbnVsbCk7XG4gICAgICAgICAgICBmYWlsZWRGaWxlS2V5cy5hZGQoZmlsZUtleSk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuICAgICAgICAgIGNvbnN0IHsgYXR0YWNobWVudCB9ID0gcmVzdWx0LnZhbHVlO1xuICAgICAgICAgIGZpbGVUb0F0dGFjaG1lbnRNYXAuc2V0KGZpbGVLZXksIGF0dGFjaG1lbnQpO1xuICAgICAgICAgIGlmIChhdHRhY2htZW50ID09PSBudWxsKSB7XG4gICAgICAgICAgICBmYWlsZWRGaWxlS2V5cy5hZGQoZmlsZUtleSk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICBjb25zdCBoYXNGYWlsZWRVcGxvYWRzID0gZmFpbGVkRmlsZUtleXMuc2l6ZSA+IDA7XG5cbiAgICAgICAgc2V0QXR0YWNobWVudHMocHJldiA9PiB7XG4gICAgICAgICAgcmV0dXJuIHByZXZcbiAgICAgICAgICAgIC5maWx0ZXIoYXR0ID0+IHtcbiAgICAgICAgICAgICAgY29uc3QgZmlsZUtleSA9IGAke2F0dC5maWxlLm5hbWV9OiR7YXR0LmZpbGUuc2l6ZX06JHthdHQuZmlsZS5sYXN0TW9kaWZpZWR9YDtcbiAgICAgICAgICAgICAgcmV0dXJuICFmYWlsZWRGaWxlS2V5cy5oYXMoZmlsZUtleSk7XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgLm1hcChhdHQgPT4ge1xuICAgICAgICAgICAgICBjb25zdCBmaWxlS2V5ID0gYCR7YXR0LmZpbGUubmFtZX06JHthdHQuZmlsZS5zaXplfToke2F0dC5maWxlLmxhc3RNb2RpZmllZH1gO1xuICAgICAgICAgICAgICBjb25zdCB1cGxvYWRlZEF0dGFjaG1lbnQgPSBmaWxlVG9BdHRhY2htZW50TWFwLmdldChmaWxlS2V5KTtcbiAgICAgICAgICAgICAgaWYgKHVwbG9hZGVkQXR0YWNobWVudCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHsgLi4uYXR0LCBhdHRhY2htZW50OiB1cGxvYWRlZEF0dGFjaG1lbnQgfTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICByZXR1cm4gYXR0O1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGlmIChoYXNGYWlsZWRVcGxvYWRzKSB7XG4gICAgICAgICAgaWYgKGZpbGVFcnJvclRvYXN0VGltZW91dFJlZi5jdXJyZW50KSB7XG4gICAgICAgICAgICBjbGVhclRpbWVvdXQoZmlsZUVycm9yVG9hc3RUaW1lb3V0UmVmLmN1cnJlbnQpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBzZXRGaWxlRXJyb3JUb2FzdCh0KCdmaWxlVXBsb2FkLmZpbGVUeXBlTm90U3VwcG9ydGVkJywgJ1RoaXMgZmlsZSB0eXBlIGlzIG5vdCBzdXBwb3J0ZWQuJykpO1xuICAgICAgICAgIGZpbGVFcnJvclRvYXN0VGltZW91dFJlZi5jdXJyZW50ID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICBzZXRGaWxlRXJyb3JUb2FzdChudWxsKTtcbiAgICAgICAgICAgIGZpbGVFcnJvclRvYXN0VGltZW91dFJlZi5jdXJyZW50ID0gbnVsbDtcbiAgICAgICAgICB9LCA0MDAwKTtcbiAgICAgICAgfVxuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcignRXJyb3IgdXBsb2FkaW5nIGZpbGUnLCBlcnJvcik7XG4gICAgICB9IGZpbmFsbHkge1xuICAgICAgICBjb25zdCBmaW5hbFVwbG9hZGluZ0ZpbGVzID0gbmV3IFNldCh1cGxvYWRpbmdGaWxlcyk7XG4gICAgICAgIG5ld0ZpbGVzLmZvckVhY2goZmlsZSA9PiBmaW5hbFVwbG9hZGluZ0ZpbGVzLmRlbGV0ZShmaWxlLm5hbWUpKTtcbiAgICAgICAgc2V0VXBsb2FkaW5nRmlsZXMoZmluYWxVcGxvYWRpbmdGaWxlcyk7XG4gICAgICAgIGlmIChmaWxlSW5wdXRSZWYuY3VycmVudCkge1xuICAgICAgICAgIGZpbGVJbnB1dFJlZi5jdXJyZW50IS52YWx1ZSA9ICcnO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9O1xuXG4gIGNvbnN0IGhhbmRsZVJlbW92ZUF0dGFjaG1lbnQgPSAoZmlsZU5hbWU6IHN0cmluZykgPT4ge1xuICAgIHNldEF0dGFjaG1lbnRzKHByZXYgPT4gcHJldi5maWx0ZXIoYXR0ID0+IGF0dC5maWxlLm5hbWUgIT09IGZpbGVOYW1lKSk7XG4gIH07XG5cbiAgY29uc3QgY2xlYXJBdHRhY2htZW50cyA9ICgpID0+IHtcbiAgICBzZXRBdHRhY2htZW50cyhbXSk7XG4gICAgaWYgKGZpbGVJbnB1dFJlZi5jdXJyZW50KSB7XG4gICAgICBmaWxlSW5wdXRSZWYuY3VycmVudC52YWx1ZSA9ICcnO1xuICAgIH1cbiAgfTtcblxuICByZXR1cm4ge1xuICAgIGF0dGFjaG1lbnRzLFxuICAgIHNldEF0dGFjaG1lbnRzLFxuICAgIHVwbG9hZGluZ0ZpbGVzLFxuICAgIGZpbGVFcnJvclRvYXN0LFxuICAgIGZpbGVJbnB1dFJlZixcbiAgICBoYW5kbGVGaWxlQ2hhbmdlLFxuICAgIGhhbmRsZVJlbW92ZUF0dGFjaG1lbnQsXG4gICAgY2xlYXJBdHRhY2htZW50cyxcbiAgfTtcbn1cbiJdfQ==
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { ChatMessage } from '../types';
|
|
2
|
+
interface UseScrollManagementOptions {
|
|
3
|
+
messages: ChatMessage[];
|
|
4
|
+
isAgentTyping: boolean;
|
|
5
|
+
currentThinkingPartIndex: number;
|
|
6
|
+
currentThinkingPartsLength: number;
|
|
7
|
+
conversationId: string | null | undefined;
|
|
8
|
+
isFloatingOpen: boolean;
|
|
9
|
+
mode: string;
|
|
10
|
+
}
|
|
11
|
+
export declare function useScrollManagement({ messages, isAgentTyping, currentThinkingPartIndex, currentThinkingPartsLength, conversationId, isFloatingOpen, mode, }: UseScrollManagementOptions): {
|
|
12
|
+
messagesEndRef: import("react").RefObject<HTMLDivElement>;
|
|
13
|
+
chatContainerRef: import("react").RefObject<HTMLDivElement>;
|
|
14
|
+
};
|
|
15
|
+
export {};
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
import { useRef, useLayoutEffect, useEffect } from 'react';
|
|
2
|
+
export function useScrollManagement(_a) {
|
|
3
|
+
var messages = _a.messages, isAgentTyping = _a.isAgentTyping, currentThinkingPartIndex = _a.currentThinkingPartIndex, currentThinkingPartsLength = _a.currentThinkingPartsLength, conversationId = _a.conversationId, isFloatingOpen = _a.isFloatingOpen, mode = _a.mode;
|
|
4
|
+
var messagesEndRef = useRef(null);
|
|
5
|
+
var chatContainerRef = useRef(null);
|
|
6
|
+
var hasAnchoredHistory = useRef(false);
|
|
7
|
+
var isUserAtBottomRef = useRef(true);
|
|
8
|
+
var prevIsFloatingOpenRef = useRef(isFloatingOpen);
|
|
9
|
+
var anchorHistory = function () {
|
|
10
|
+
var el = chatContainerRef.current;
|
|
11
|
+
if (!el || !messages.length || hasAnchoredHistory.current)
|
|
12
|
+
return;
|
|
13
|
+
if (el.clientHeight === 0)
|
|
14
|
+
return;
|
|
15
|
+
el.scrollTop = el.scrollHeight;
|
|
16
|
+
hasAnchoredHistory.current = true;
|
|
17
|
+
isUserAtBottomRef.current = true;
|
|
18
|
+
};
|
|
19
|
+
var scrollToBottom = function (behavior, force) {
|
|
20
|
+
if (behavior === void 0) { behavior = 'smooth'; }
|
|
21
|
+
if (force === void 0) { force = false; }
|
|
22
|
+
var container = chatContainerRef.current;
|
|
23
|
+
var el = messagesEndRef.current;
|
|
24
|
+
if (!container || !el)
|
|
25
|
+
return;
|
|
26
|
+
if (!force && !isUserAtBottomRef.current) {
|
|
27
|
+
return;
|
|
28
|
+
}
|
|
29
|
+
var doScroll = function () {
|
|
30
|
+
container.scrollTo({ top: container.scrollHeight, behavior: behavior });
|
|
31
|
+
isUserAtBottomRef.current = true;
|
|
32
|
+
};
|
|
33
|
+
if (behavior === 'auto') {
|
|
34
|
+
doScroll();
|
|
35
|
+
}
|
|
36
|
+
else {
|
|
37
|
+
requestAnimationFrame(doScroll);
|
|
38
|
+
}
|
|
39
|
+
};
|
|
40
|
+
useLayoutEffect(function () {
|
|
41
|
+
if (!messages.length)
|
|
42
|
+
return;
|
|
43
|
+
if (hasAnchoredHistory.current) {
|
|
44
|
+
scrollToBottom('smooth', false);
|
|
45
|
+
}
|
|
46
|
+
else {
|
|
47
|
+
anchorHistory();
|
|
48
|
+
}
|
|
49
|
+
}, [messages]);
|
|
50
|
+
useLayoutEffect(function () {
|
|
51
|
+
if (!isAgentTyping)
|
|
52
|
+
return;
|
|
53
|
+
scrollToBottom('auto', true);
|
|
54
|
+
}, [isAgentTyping, currentThinkingPartIndex, currentThinkingPartsLength]);
|
|
55
|
+
useEffect(function () {
|
|
56
|
+
hasAnchoredHistory.current = false;
|
|
57
|
+
}, [conversationId]);
|
|
58
|
+
useEffect(function () {
|
|
59
|
+
if ((mode === 'floating' || mode === 'fullscreen') && isFloatingOpen && !prevIsFloatingOpenRef.current && messages.length > 0) {
|
|
60
|
+
hasAnchoredHistory.current = false;
|
|
61
|
+
isUserAtBottomRef.current = true;
|
|
62
|
+
var scrollWhenVisible_1 = function () {
|
|
63
|
+
var container = chatContainerRef.current;
|
|
64
|
+
if (!container) {
|
|
65
|
+
requestAnimationFrame(scrollWhenVisible_1);
|
|
66
|
+
return;
|
|
67
|
+
}
|
|
68
|
+
if (container.clientHeight === 0) {
|
|
69
|
+
requestAnimationFrame(scrollWhenVisible_1);
|
|
70
|
+
return;
|
|
71
|
+
}
|
|
72
|
+
container.scrollTop = container.scrollHeight;
|
|
73
|
+
hasAnchoredHistory.current = true;
|
|
74
|
+
isUserAtBottomRef.current = true;
|
|
75
|
+
};
|
|
76
|
+
requestAnimationFrame(function () {
|
|
77
|
+
requestAnimationFrame(scrollWhenVisible_1);
|
|
78
|
+
});
|
|
79
|
+
}
|
|
80
|
+
prevIsFloatingOpenRef.current = isFloatingOpen;
|
|
81
|
+
}, [isFloatingOpen, mode]);
|
|
82
|
+
useEffect(function () {
|
|
83
|
+
if (!messages.length)
|
|
84
|
+
return;
|
|
85
|
+
var el = chatContainerRef.current;
|
|
86
|
+
if (!el)
|
|
87
|
+
return;
|
|
88
|
+
var resizeObserver = new ResizeObserver(function () {
|
|
89
|
+
if (isUserAtBottomRef.current) {
|
|
90
|
+
anchorHistory();
|
|
91
|
+
}
|
|
92
|
+
});
|
|
93
|
+
resizeObserver.observe(el);
|
|
94
|
+
anchorHistory();
|
|
95
|
+
return function () {
|
|
96
|
+
resizeObserver.disconnect();
|
|
97
|
+
};
|
|
98
|
+
}, [messages]);
|
|
99
|
+
useEffect(function () {
|
|
100
|
+
var container = chatContainerRef.current;
|
|
101
|
+
if (!container)
|
|
102
|
+
return;
|
|
103
|
+
var isAtBottom = function (threshold) {
|
|
104
|
+
if (threshold === void 0) { threshold = 100; }
|
|
105
|
+
if (!container)
|
|
106
|
+
return true;
|
|
107
|
+
var scrollTop = container.scrollTop, scrollHeight = container.scrollHeight, clientHeight = container.clientHeight;
|
|
108
|
+
return scrollHeight - scrollTop - clientHeight <= threshold;
|
|
109
|
+
};
|
|
110
|
+
var handleScroll = function () {
|
|
111
|
+
isUserAtBottomRef.current = isAtBottom();
|
|
112
|
+
};
|
|
113
|
+
container.addEventListener('scroll', handleScroll, { passive: true });
|
|
114
|
+
handleScroll();
|
|
115
|
+
return function () {
|
|
116
|
+
container.removeEventListener('scroll', handleScroll);
|
|
117
|
+
};
|
|
118
|
+
}, []);
|
|
119
|
+
return {
|
|
120
|
+
messagesEndRef: messagesEndRef,
|
|
121
|
+
chatContainerRef: chatContainerRef,
|
|
122
|
+
};
|
|
123
|
+
}
|
|
124
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlU2Nyb2xsTWFuYWdlbWVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9ob29rcy91c2VTY3JvbGxNYW5hZ2VtZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsZUFBZSxFQUFFLFNBQVMsRUFBRSxNQUFNLE9BQU8sQ0FBQztBQWEzRCxNQUFNLFVBQVUsbUJBQW1CLENBQUMsRUFRUDtRQVAzQixRQUFRLGNBQUEsRUFDUixhQUFhLG1CQUFBLEVBQ2Isd0JBQXdCLDhCQUFBLEVBQ3hCLDBCQUEwQixnQ0FBQSxFQUMxQixjQUFjLG9CQUFBLEVBQ2QsY0FBYyxvQkFBQSxFQUNkLElBQUksVUFBQTtJQUVKLElBQU0sY0FBYyxHQUFHLE1BQU0sQ0FBaUIsSUFBSSxDQUFDLENBQUM7SUFDcEQsSUFBTSxnQkFBZ0IsR0FBRyxNQUFNLENBQWlCLElBQUksQ0FBQyxDQUFDO0lBQ3RELElBQU0sa0JBQWtCLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3pDLElBQU0saUJBQWlCLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3ZDLElBQU0scUJBQXFCLEdBQUcsTUFBTSxDQUFDLGNBQWMsQ0FBQyxDQUFDO0lBRXJELElBQU0sYUFBYSxHQUFHO1FBQ3BCLElBQU0sRUFBRSxHQUFHLGdCQUFnQixDQUFDLE9BQU8sQ0FBQztRQUNwQyxJQUFJLENBQUMsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sSUFBSSxrQkFBa0IsQ0FBQyxPQUFPO1lBQUUsT0FBTztRQUNsRSxJQUFJLEVBQUUsQ0FBQyxZQUFZLEtBQUssQ0FBQztZQUFFLE9BQU87UUFDbEMsRUFBRSxDQUFDLFNBQVMsR0FBRyxFQUFFLENBQUMsWUFBWSxDQUFDO1FBQy9CLGtCQUFrQixDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUM7UUFDbEMsaUJBQWlCLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQztJQUNuQyxDQUFDLENBQUM7SUFFRixJQUFNLGNBQWMsR0FBRyxVQUFDLFFBQW1DLEVBQUUsS0FBc0I7UUFBM0QseUJBQUEsRUFBQSxtQkFBbUM7UUFBRSxzQkFBQSxFQUFBLGFBQXNCO1FBQ2pGLElBQU0sU0FBUyxHQUFHLGdCQUFnQixDQUFDLE9BQU8sQ0FBQztRQUMzQyxJQUFNLEVBQUUsR0FBRyxjQUFjLENBQUMsT0FBTyxDQUFDO1FBQ2xDLElBQUksQ0FBQyxTQUFTLElBQUksQ0FBQyxFQUFFO1lBQUUsT0FBTztRQUU5QixJQUFJLENBQUMsS0FBSyxJQUFJLENBQUMsaUJBQWlCLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDekMsT0FBTztRQUNULENBQUM7UUFFRCxJQUFNLFFBQVEsR0FBRztZQUNmLFNBQVMsQ0FBQyxRQUFRLENBQUMsRUFBRSxHQUFHLEVBQUUsU0FBUyxDQUFDLFlBQVksRUFBRSxRQUFRLFVBQUEsRUFBRSxDQUFDLENBQUM7WUFDOUQsaUJBQWlCLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQztRQUNuQyxDQUFDLENBQUM7UUFDRixJQUFJLFFBQVEsS0FBSyxNQUFNLEVBQUUsQ0FBQztZQUN4QixRQUFRLEVBQUUsQ0FBQztRQUNiLENBQUM7YUFBTSxDQUFDO1lBQ04scUJBQXFCLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDbEMsQ0FBQztJQUNILENBQUMsQ0FBQztJQUVGLGVBQWUsQ0FBQztRQUNkLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTTtZQUFFLE9BQU87UUFDN0IsSUFBSSxrQkFBa0IsQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUMvQixjQUFjLENBQUMsUUFBUSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQ2xDLENBQUM7YUFBTSxDQUFDO1lBQ04sYUFBYSxFQUFFLENBQUM7UUFDbEIsQ0FBQztJQUNILENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7SUFFZixlQUFlLENBQUM7UUFDZCxJQUFJLENBQUMsYUFBYTtZQUFFLE9BQU87UUFDM0IsY0FBYyxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQztJQUMvQixDQUFDLEVBQUUsQ0FBQyxhQUFhLEVBQUUsd0JBQXdCLEVBQUUsMEJBQTBCLENBQUMsQ0FBQyxDQUFDO0lBRTFFLFNBQVMsQ0FBQztRQUNSLGtCQUFrQixDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7SUFDckMsQ0FBQyxFQUFFLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQztJQUVyQixTQUFTLENBQUM7UUFDUixJQUFJLENBQUMsSUFBSSxLQUFLLFVBQVUsSUFBSSxJQUFJLEtBQUssWUFBWSxDQUFDLElBQUksY0FBYyxJQUFJLENBQUMscUJBQXFCLENBQUMsT0FBTyxJQUFJLFFBQVEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDOUgsa0JBQWtCLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQztZQUNuQyxpQkFBaUIsQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDO1lBRWpDLElBQU0sbUJBQWlCLEdBQUc7Z0JBQ3hCLElBQU0sU0FBUyxHQUFHLGdCQUFnQixDQUFDLE9BQU8sQ0FBQztnQkFDM0MsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO29CQUNmLHFCQUFxQixDQUFDLG1CQUFpQixDQUFDLENBQUM7b0JBQ3pDLE9BQU87Z0JBQ1QsQ0FBQztnQkFFRCxJQUFJLFNBQVMsQ0FBQyxZQUFZLEtBQUssQ0FBQyxFQUFFLENBQUM7b0JBQ2pDLHFCQUFxQixDQUFDLG1CQUFpQixDQUFDLENBQUM7b0JBQ3pDLE9BQU87Z0JBQ1QsQ0FBQztnQkFFRCxTQUFTLENBQUMsU0FBUyxHQUFHLFNBQVMsQ0FBQyxZQUFZLENBQUM7Z0JBQzdDLGtCQUFrQixDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUM7Z0JBQ2xDLGlCQUFpQixDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUM7WUFDbkMsQ0FBQyxDQUFDO1lBRUYscUJBQXFCLENBQUM7Z0JBQ3BCLHFCQUFxQixDQUFDLG1CQUFpQixDQUFDLENBQUM7WUFDM0MsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDO1FBQ0QscUJBQXFCLENBQUMsT0FBTyxHQUFHLGNBQWMsQ0FBQztJQUNqRCxDQUFDLEVBQUUsQ0FBQyxjQUFjLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUUzQixTQUFTLENBQUM7UUFDUixJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU07WUFBRSxPQUFPO1FBQzdCLElBQU0sRUFBRSxHQUFHLGdCQUFnQixDQUFDLE9BQU8sQ0FBQztRQUNwQyxJQUFJLENBQUMsRUFBRTtZQUFFLE9BQU87UUFFaEIsSUFBTSxjQUFjLEdBQUcsSUFBSSxjQUFjLENBQUM7WUFDeEMsSUFBSSxpQkFBaUIsQ0FBQyxPQUFPLEVBQUUsQ0FBQztnQkFDOUIsYUFBYSxFQUFFLENBQUM7WUFDbEIsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDO1FBQ0gsY0FBYyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUUzQixhQUFhLEVBQUUsQ0FBQztRQUVoQixPQUFPO1lBQ0wsY0FBYyxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQzlCLENBQUMsQ0FBQztJQUNKLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7SUFFZixTQUFTLENBQUM7UUFDUixJQUFNLFNBQVMsR0FBRyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUM7UUFDM0MsSUFBSSxDQUFDLFNBQVM7WUFBRSxPQUFPO1FBRXZCLElBQU0sVUFBVSxHQUFHLFVBQUMsU0FBdUI7WUFBdkIsMEJBQUEsRUFBQSxlQUF1QjtZQUN6QyxJQUFJLENBQUMsU0FBUztnQkFBRSxPQUFPLElBQUksQ0FBQztZQUNwQixJQUFBLFNBQVMsR0FBaUMsU0FBUyxVQUExQyxFQUFFLFlBQVksR0FBbUIsU0FBUyxhQUE1QixFQUFFLFlBQVksR0FBSyxTQUFTLGFBQWQsQ0FBZTtZQUM1RCxPQUFPLFlBQVksR0FBRyxTQUFTLEdBQUcsWUFBWSxJQUFJLFNBQVMsQ0FBQztRQUM5RCxDQUFDLENBQUM7UUFDRixJQUFNLFlBQVksR0FBRztZQUNuQixpQkFBaUIsQ0FBQyxPQUFPLEdBQUcsVUFBVSxFQUFFLENBQUM7UUFDM0MsQ0FBQyxDQUFDO1FBQ0YsU0FBUyxDQUFDLGdCQUFnQixDQUFDLFFBQVEsRUFBRSxZQUFZLEVBQUUsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUN0RSxZQUFZLEVBQUUsQ0FBQztRQUVmLE9BQU87WUFDTCxTQUFTLENBQUMsbUJBQW1CLENBQUMsUUFBUSxFQUFFLFlBQVksQ0FBQyxDQUFDO1FBQ3hELENBQUMsQ0FBQztJQUNKLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUVQLE9BQU87UUFDTCxjQUFjLGdCQUFBO1FBQ2QsZ0JBQWdCLGtCQUFBO0tBQ2pCLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdXNlUmVmLCB1c2VMYXlvdXRFZmZlY3QsIHVzZUVmZmVjdCB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IENoYXRNZXNzYWdlIH0gZnJvbSAnLi4vdHlwZXMnO1xuXG5pbnRlcmZhY2UgVXNlU2Nyb2xsTWFuYWdlbWVudE9wdGlvbnMge1xuICBtZXNzYWdlczogQ2hhdE1lc3NhZ2VbXTtcbiAgaXNBZ2VudFR5cGluZzogYm9vbGVhbjtcbiAgY3VycmVudFRoaW5raW5nUGFydEluZGV4OiBudW1iZXI7XG4gIGN1cnJlbnRUaGlua2luZ1BhcnRzTGVuZ3RoOiBudW1iZXI7XG4gIGNvbnZlcnNhdGlvbklkOiBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkO1xuICBpc0Zsb2F0aW5nT3BlbjogYm9vbGVhbjtcbiAgbW9kZTogc3RyaW5nO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdXNlU2Nyb2xsTWFuYWdlbWVudCh7XG4gIG1lc3NhZ2VzLFxuICBpc0FnZW50VHlwaW5nLFxuICBjdXJyZW50VGhpbmtpbmdQYXJ0SW5kZXgsXG4gIGN1cnJlbnRUaGlua2luZ1BhcnRzTGVuZ3RoLFxuICBjb252ZXJzYXRpb25JZCxcbiAgaXNGbG9hdGluZ09wZW4sXG4gIG1vZGUsXG59OiBVc2VTY3JvbGxNYW5hZ2VtZW50T3B0aW9ucykge1xuICBjb25zdCBtZXNzYWdlc0VuZFJlZiA9IHVzZVJlZjxIVE1MRGl2RWxlbWVudD4obnVsbCk7XG4gIGNvbnN0IGNoYXRDb250YWluZXJSZWYgPSB1c2VSZWY8SFRNTERpdkVsZW1lbnQ+KG51bGwpO1xuICBjb25zdCBoYXNBbmNob3JlZEhpc3RvcnkgPSB1c2VSZWYoZmFsc2UpO1xuICBjb25zdCBpc1VzZXJBdEJvdHRvbVJlZiA9IHVzZVJlZih0cnVlKTtcbiAgY29uc3QgcHJldklzRmxvYXRpbmdPcGVuUmVmID0gdXNlUmVmKGlzRmxvYXRpbmdPcGVuKTtcblxuICBjb25zdCBhbmNob3JIaXN0b3J5ID0gKCkgPT4ge1xuICAgIGNvbnN0IGVsID0gY2hhdENvbnRhaW5lclJlZi5jdXJyZW50O1xuICAgIGlmICghZWwgfHwgIW1lc3NhZ2VzLmxlbmd0aCB8fCBoYXNBbmNob3JlZEhpc3RvcnkuY3VycmVudCkgcmV0dXJuO1xuICAgIGlmIChlbC5jbGllbnRIZWlnaHQgPT09IDApIHJldHVybjtcbiAgICBlbC5zY3JvbGxUb3AgPSBlbC5zY3JvbGxIZWlnaHQ7XG4gICAgaGFzQW5jaG9yZWRIaXN0b3J5LmN1cnJlbnQgPSB0cnVlO1xuICAgIGlzVXNlckF0Qm90dG9tUmVmLmN1cnJlbnQgPSB0cnVlO1xuICB9O1xuXG4gIGNvbnN0IHNjcm9sbFRvQm90dG9tID0gKGJlaGF2aW9yOiBTY3JvbGxCZWhhdmlvciA9ICdzbW9vdGgnLCBmb3JjZTogYm9vbGVhbiA9IGZhbHNlKSA9PiB7XG4gICAgY29uc3QgY29udGFpbmVyID0gY2hhdENvbnRhaW5lclJlZi5jdXJyZW50O1xuICAgIGNvbnN0IGVsID0gbWVzc2FnZXNFbmRSZWYuY3VycmVudDtcbiAgICBpZiAoIWNvbnRhaW5lciB8fCAhZWwpIHJldHVybjtcblxuICAgIGlmICghZm9yY2UgJiYgIWlzVXNlckF0Qm90dG9tUmVmLmN1cnJlbnQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBkb1Njcm9sbCA9ICgpID0+IHtcbiAgICAgIGNvbnRhaW5lci5zY3JvbGxUbyh7IHRvcDogY29udGFpbmVyLnNjcm9sbEhlaWdodCwgYmVoYXZpb3IgfSk7XG4gICAgICBpc1VzZXJBdEJvdHRvbVJlZi5jdXJyZW50ID0gdHJ1ZTtcbiAgICB9O1xuICAgIGlmIChiZWhhdmlvciA9PT0gJ2F1dG8nKSB7XG4gICAgICBkb1Njcm9sbCgpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoZG9TY3JvbGwpO1xuICAgIH1cbiAgfTtcblxuICB1c2VMYXlvdXRFZmZlY3QoKCkgPT4ge1xuICAgIGlmICghbWVzc2FnZXMubGVuZ3RoKSByZXR1cm47XG4gICAgaWYgKGhhc0FuY2hvcmVkSGlzdG9yeS5jdXJyZW50KSB7XG4gICAgICBzY3JvbGxUb0JvdHRvbSgnc21vb3RoJywgZmFsc2UpO1xuICAgIH0gZWxzZSB7XG4gICAgICBhbmNob3JIaXN0b3J5KCk7XG4gICAgfVxuICB9LCBbbWVzc2FnZXNdKTtcblxuICB1c2VMYXlvdXRFZmZlY3QoKCkgPT4ge1xuICAgIGlmICghaXNBZ2VudFR5cGluZykgcmV0dXJuO1xuICAgIHNjcm9sbFRvQm90dG9tKCdhdXRvJywgdHJ1ZSk7XG4gIH0sIFtpc0FnZW50VHlwaW5nLCBjdXJyZW50VGhpbmtpbmdQYXJ0SW5kZXgsIGN1cnJlbnRUaGlua2luZ1BhcnRzTGVuZ3RoXSk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBoYXNBbmNob3JlZEhpc3RvcnkuY3VycmVudCA9IGZhbHNlO1xuICB9LCBbY29udmVyc2F0aW9uSWRdKTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICgobW9kZSA9PT0gJ2Zsb2F0aW5nJyB8fCBtb2RlID09PSAnZnVsbHNjcmVlbicpICYmIGlzRmxvYXRpbmdPcGVuICYmICFwcmV2SXNGbG9hdGluZ09wZW5SZWYuY3VycmVudCAmJiBtZXNzYWdlcy5sZW5ndGggPiAwKSB7XG4gICAgICBoYXNBbmNob3JlZEhpc3RvcnkuY3VycmVudCA9IGZhbHNlO1xuICAgICAgaXNVc2VyQXRCb3R0b21SZWYuY3VycmVudCA9IHRydWU7XG5cbiAgICAgIGNvbnN0IHNjcm9sbFdoZW5WaXNpYmxlID0gKCkgPT4ge1xuICAgICAgICBjb25zdCBjb250YWluZXIgPSBjaGF0Q29udGFpbmVyUmVmLmN1cnJlbnQ7XG4gICAgICAgIGlmICghY29udGFpbmVyKSB7XG4gICAgICAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKHNjcm9sbFdoZW5WaXNpYmxlKTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoY29udGFpbmVyLmNsaWVudEhlaWdodCA9PT0gMCkge1xuICAgICAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZShzY3JvbGxXaGVuVmlzaWJsZSk7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29udGFpbmVyLnNjcm9sbFRvcCA9IGNvbnRhaW5lci5zY3JvbGxIZWlnaHQ7XG4gICAgICAgIGhhc0FuY2hvcmVkSGlzdG9yeS5jdXJyZW50ID0gdHJ1ZTtcbiAgICAgICAgaXNVc2VyQXRCb3R0b21SZWYuY3VycmVudCA9IHRydWU7XG4gICAgICB9O1xuXG4gICAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xuICAgICAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoc2Nyb2xsV2hlblZpc2libGUpO1xuICAgICAgfSk7XG4gICAgfVxuICAgIHByZXZJc0Zsb2F0aW5nT3BlblJlZi5jdXJyZW50ID0gaXNGbG9hdGluZ09wZW47XG4gIH0sIFtpc0Zsb2F0aW5nT3BlbiwgbW9kZV0pO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCFtZXNzYWdlcy5sZW5ndGgpIHJldHVybjtcbiAgICBjb25zdCBlbCA9IGNoYXRDb250YWluZXJSZWYuY3VycmVudDtcbiAgICBpZiAoIWVsKSByZXR1cm47XG5cbiAgICBjb25zdCByZXNpemVPYnNlcnZlciA9IG5ldyBSZXNpemVPYnNlcnZlcigoKSA9PiB7XG4gICAgICBpZiAoaXNVc2VyQXRCb3R0b21SZWYuY3VycmVudCkge1xuICAgICAgICBhbmNob3JIaXN0b3J5KCk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgcmVzaXplT2JzZXJ2ZXIub2JzZXJ2ZShlbCk7XG5cbiAgICBhbmNob3JIaXN0b3J5KCk7XG5cbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgcmVzaXplT2JzZXJ2ZXIuZGlzY29ubmVjdCgpO1xuICAgIH07XG4gIH0sIFttZXNzYWdlc10pO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgY29udGFpbmVyID0gY2hhdENvbnRhaW5lclJlZi5jdXJyZW50O1xuICAgIGlmICghY29udGFpbmVyKSByZXR1cm47XG5cbiAgICBjb25zdCBpc0F0Qm90dG9tID0gKHRocmVzaG9sZDogbnVtYmVyID0gMTAwKTogYm9vbGVhbiA9PiB7XG4gICAgICBpZiAoIWNvbnRhaW5lcikgcmV0dXJuIHRydWU7XG4gICAgICBjb25zdCB7IHNjcm9sbFRvcCwgc2Nyb2xsSGVpZ2h0LCBjbGllbnRIZWlnaHQgfSA9IGNvbnRhaW5lcjtcbiAgICAgIHJldHVybiBzY3JvbGxIZWlnaHQgLSBzY3JvbGxUb3AgLSBjbGllbnRIZWlnaHQgPD0gdGhyZXNob2xkO1xuICAgIH07XG4gICAgY29uc3QgaGFuZGxlU2Nyb2xsID0gKCkgPT4ge1xuICAgICAgaXNVc2VyQXRCb3R0b21SZWYuY3VycmVudCA9IGlzQXRCb3R0b20oKTtcbiAgICB9O1xuICAgIGNvbnRhaW5lci5hZGRFdmVudExpc3RlbmVyKCdzY3JvbGwnLCBoYW5kbGVTY3JvbGwsIHsgcGFzc2l2ZTogdHJ1ZSB9KTtcbiAgICBoYW5kbGVTY3JvbGwoKTtcblxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBjb250YWluZXIucmVtb3ZlRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgaGFuZGxlU2Nyb2xsKTtcbiAgICB9O1xuICB9LCBbXSk7XG5cbiAgcmV0dXJuIHtcbiAgICBtZXNzYWdlc0VuZFJlZixcbiAgICBjaGF0Q29udGFpbmVyUmVmLFxuICB9O1xufVxuIl19
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { Translations } from '../types';
|
|
2
|
+
interface UseThinkingAnimationOptions {
|
|
3
|
+
isAgentTyping: boolean;
|
|
4
|
+
thinkingPhrases: string[] | undefined;
|
|
5
|
+
thinkingDelayMs: number | undefined;
|
|
6
|
+
translations: Translations;
|
|
7
|
+
}
|
|
8
|
+
export declare function useThinkingAnimation({ isAgentTyping, thinkingPhrases, thinkingDelayMs, translations, }: UseThinkingAnimationOptions): {
|
|
9
|
+
currentThinkingParts: string[];
|
|
10
|
+
currentThinkingPartIndex: number;
|
|
11
|
+
};
|
|
12
|
+
export {};
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import { useState, useEffect, useMemo } from 'react';
|
|
2
|
+
import { getTranslationArray } from '../utils/i18n';
|
|
3
|
+
export function useThinkingAnimation(_a) {
|
|
4
|
+
var isAgentTyping = _a.isAgentTyping, thinkingPhrases = _a.thinkingPhrases, thinkingDelayMs = _a.thinkingDelayMs, translations = _a.translations;
|
|
5
|
+
var DEFAULT_THINKING_MESSAGES = useMemo(function () { return getTranslationArray('thinking.messages', translations, [
|
|
6
|
+
"Thinking…",
|
|
7
|
+
"Analyzing your question…",
|
|
8
|
+
"Searching knowledge…",
|
|
9
|
+
"Pulling relevant info…",
|
|
10
|
+
"Drafting the answer…",
|
|
11
|
+
"Double‑checking details…",
|
|
12
|
+
"Tying it together…",
|
|
13
|
+
"Almost there…",
|
|
14
|
+
]); }, [translations]);
|
|
15
|
+
var _b = useState([]), currentThinkingParts = _b[0], setCurrentThinkingParts = _b[1];
|
|
16
|
+
var _c = useState(0), currentThinkingPartIndex = _c[0], setCurrentThinkingPartIndex = _c[1];
|
|
17
|
+
useEffect(function () {
|
|
18
|
+
if (!isAgentTyping) {
|
|
19
|
+
setCurrentThinkingParts([]);
|
|
20
|
+
setCurrentThinkingPartIndex(0);
|
|
21
|
+
return;
|
|
22
|
+
}
|
|
23
|
+
var list = (thinkingPhrases && thinkingPhrases.length > 0) ? thinkingPhrases : DEFAULT_THINKING_MESSAGES;
|
|
24
|
+
var randomIndex = Math.floor(Math.random() * list.length);
|
|
25
|
+
var selectedPhrase = list[randomIndex];
|
|
26
|
+
var parts = selectedPhrase.includes('|')
|
|
27
|
+
? selectedPhrase.split('|').map(function (part) { return part.trim(); }).filter(function (part) { return part.length > 0; })
|
|
28
|
+
: [selectedPhrase.trim()];
|
|
29
|
+
setCurrentThinkingParts(parts);
|
|
30
|
+
setCurrentThinkingPartIndex(0);
|
|
31
|
+
if (parts.length <= 1)
|
|
32
|
+
return;
|
|
33
|
+
var rotDelay = Math.max(250, thinkingDelayMs || 1000);
|
|
34
|
+
var timeoutIds = [];
|
|
35
|
+
var _loop_1 = function (i) {
|
|
36
|
+
var timeoutId = setTimeout(function () {
|
|
37
|
+
setCurrentThinkingPartIndex(i);
|
|
38
|
+
}, rotDelay * i);
|
|
39
|
+
timeoutIds.push(timeoutId);
|
|
40
|
+
};
|
|
41
|
+
for (var i = 1; i < parts.length; i++) {
|
|
42
|
+
_loop_1(i);
|
|
43
|
+
}
|
|
44
|
+
return function () {
|
|
45
|
+
timeoutIds.forEach(function (id) { return clearTimeout(id); });
|
|
46
|
+
};
|
|
47
|
+
}, [isAgentTyping, thinkingPhrases, thinkingDelayMs]);
|
|
48
|
+
return {
|
|
49
|
+
currentThinkingParts: currentThinkingParts,
|
|
50
|
+
currentThinkingPartIndex: currentThinkingPartIndex,
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlVGhpbmtpbmdBbmltYXRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaG9va3MvdXNlVGhpbmtpbmdBbmltYXRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLE1BQU0sT0FBTyxDQUFDO0FBQ3JELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQVVwRCxNQUFNLFVBQVUsb0JBQW9CLENBQUMsRUFLUDtRQUo1QixhQUFhLG1CQUFBLEVBQ2IsZUFBZSxxQkFBQSxFQUNmLGVBQWUscUJBQUEsRUFDZixZQUFZLGtCQUFBO0lBRVosSUFBTSx5QkFBeUIsR0FBRyxPQUFPLENBQ3ZDLGNBQU0sT0FBQSxtQkFBbUIsQ0FBQyxtQkFBbUIsRUFBRSxZQUFZLEVBQUU7UUFDM0QsV0FBVztRQUNYLDBCQUEwQjtRQUMxQixzQkFBc0I7UUFDdEIsd0JBQXdCO1FBQ3hCLHNCQUFzQjtRQUN0QiwwQkFBMEI7UUFDMUIsb0JBQW9CO1FBQ3BCLGVBQWU7S0FDaEIsQ0FBQyxFQVRJLENBU0osRUFDRixDQUFDLFlBQVksQ0FBQyxDQUNmLENBQUM7SUFFSSxJQUFBLEtBQWtELFFBQVEsQ0FBVyxFQUFFLENBQUMsRUFBdkUsb0JBQW9CLFFBQUEsRUFBRSx1QkFBdUIsUUFBMEIsQ0FBQztJQUN6RSxJQUFBLEtBQTBELFFBQVEsQ0FBQyxDQUFDLENBQUMsRUFBcEUsd0JBQXdCLFFBQUEsRUFBRSwyQkFBMkIsUUFBZSxDQUFDO0lBRTVFLFNBQVMsQ0FBQztRQUNSLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUNuQix1QkFBdUIsQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUM1QiwyQkFBMkIsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUMvQixPQUFPO1FBQ1QsQ0FBQztRQUVELElBQU0sSUFBSSxHQUFHLENBQUMsZUFBZSxJQUFJLGVBQWUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMseUJBQXlCLENBQUM7UUFDM0csSUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzVELElBQU0sY0FBYyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUV6QyxJQUFNLEtBQUssR0FBRyxjQUFjLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQztZQUN4QyxDQUFDLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsVUFBQSxJQUFJLElBQUksT0FBQSxJQUFJLENBQUMsSUFBSSxFQUFFLEVBQVgsQ0FBVyxDQUFDLENBQUMsTUFBTSxDQUFDLFVBQUEsSUFBSSxJQUFJLE9BQUEsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQWYsQ0FBZSxDQUFDO1lBQ3BGLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBRTVCLHVCQUF1QixDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQy9CLDJCQUEyQixDQUFDLENBQUMsQ0FBQyxDQUFDO1FBRS9CLElBQUksS0FBSyxDQUFDLE1BQU0sSUFBSSxDQUFDO1lBQUUsT0FBTztRQUU5QixJQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxlQUFlLElBQUksSUFBSSxDQUFDLENBQUM7UUFDeEQsSUFBTSxVQUFVLEdBQW9DLEVBQUUsQ0FBQztnQ0FFOUMsQ0FBQztZQUNSLElBQU0sU0FBUyxHQUFHLFVBQVUsQ0FBQztnQkFDM0IsMkJBQTJCLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDakMsQ0FBQyxFQUFFLFFBQVEsR0FBRyxDQUFDLENBQUMsQ0FBQztZQUNqQixVQUFVLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDOztRQUo3QixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUU7b0JBQTVCLENBQUM7U0FLVDtRQUVELE9BQU87WUFDTCxVQUFVLENBQUMsT0FBTyxDQUFDLFVBQUEsRUFBRSxJQUFJLE9BQUEsWUFBWSxDQUFDLEVBQUUsQ0FBQyxFQUFoQixDQUFnQixDQUFDLENBQUM7UUFDN0MsQ0FBQyxDQUFDO0lBQ0osQ0FBQyxFQUFFLENBQUMsYUFBYSxFQUFFLGVBQWUsRUFBRSxlQUFlLENBQUMsQ0FBQyxDQUFDO0lBRXRELE9BQU87UUFDTCxvQkFBb0Isc0JBQUE7UUFDcEIsd0JBQXdCLDBCQUFBO0tBQ3pCLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdXNlU3RhdGUsIHVzZUVmZmVjdCwgdXNlTWVtbyB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IGdldFRyYW5zbGF0aW9uQXJyYXkgfSBmcm9tICcuLi91dGlscy9pMThuJztcbmltcG9ydCB0eXBlIHsgVHJhbnNsYXRpb25zIH0gZnJvbSAnLi4vdHlwZXMnO1xuXG5pbnRlcmZhY2UgVXNlVGhpbmtpbmdBbmltYXRpb25PcHRpb25zIHtcbiAgaXNBZ2VudFR5cGluZzogYm9vbGVhbjtcbiAgdGhpbmtpbmdQaHJhc2VzOiBzdHJpbmdbXSB8IHVuZGVmaW5lZDtcbiAgdGhpbmtpbmdEZWxheU1zOiBudW1iZXIgfCB1bmRlZmluZWQ7XG4gIHRyYW5zbGF0aW9uczogVHJhbnNsYXRpb25zO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdXNlVGhpbmtpbmdBbmltYXRpb24oe1xuICBpc0FnZW50VHlwaW5nLFxuICB0aGlua2luZ1BocmFzZXMsXG4gIHRoaW5raW5nRGVsYXlNcyxcbiAgdHJhbnNsYXRpb25zLFxufTogVXNlVGhpbmtpbmdBbmltYXRpb25PcHRpb25zKSB7XG4gIGNvbnN0IERFRkFVTFRfVEhJTktJTkdfTUVTU0FHRVMgPSB1c2VNZW1vKFxuICAgICgpID0+IGdldFRyYW5zbGF0aW9uQXJyYXkoJ3RoaW5raW5nLm1lc3NhZ2VzJywgdHJhbnNsYXRpb25zLCBbXG4gICAgICBcIlRoaW5raW5n4oCmXCIsXG4gICAgICBcIkFuYWx5emluZyB5b3VyIHF1ZXN0aW9u4oCmXCIsXG4gICAgICBcIlNlYXJjaGluZyBrbm93bGVkZ2XigKZcIixcbiAgICAgIFwiUHVsbGluZyByZWxldmFudCBpbmZv4oCmXCIsXG4gICAgICBcIkRyYWZ0aW5nIHRoZSBhbnN3ZXLigKZcIixcbiAgICAgIFwiRG91Ymxl4oCRY2hlY2tpbmcgZGV0YWlsc+KAplwiLFxuICAgICAgXCJUeWluZyBpdCB0b2dldGhlcuKAplwiLFxuICAgICAgXCJBbG1vc3QgdGhlcmXigKZcIixcbiAgICBdKSxcbiAgICBbdHJhbnNsYXRpb25zXVxuICApO1xuXG4gIGNvbnN0IFtjdXJyZW50VGhpbmtpbmdQYXJ0cywgc2V0Q3VycmVudFRoaW5raW5nUGFydHNdID0gdXNlU3RhdGU8c3RyaW5nW10+KFtdKTtcbiAgY29uc3QgW2N1cnJlbnRUaGlua2luZ1BhcnRJbmRleCwgc2V0Q3VycmVudFRoaW5raW5nUGFydEluZGV4XSA9IHVzZVN0YXRlKDApO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCFpc0FnZW50VHlwaW5nKSB7XG4gICAgICBzZXRDdXJyZW50VGhpbmtpbmdQYXJ0cyhbXSk7XG4gICAgICBzZXRDdXJyZW50VGhpbmtpbmdQYXJ0SW5kZXgoMCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgbGlzdCA9ICh0aGlua2luZ1BocmFzZXMgJiYgdGhpbmtpbmdQaHJhc2VzLmxlbmd0aCA+IDApID8gdGhpbmtpbmdQaHJhc2VzIDogREVGQVVMVF9USElOS0lOR19NRVNTQUdFUztcbiAgICBjb25zdCByYW5kb21JbmRleCA9IE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIGxpc3QubGVuZ3RoKTtcbiAgICBjb25zdCBzZWxlY3RlZFBocmFzZSA9IGxpc3RbcmFuZG9tSW5kZXhdO1xuXG4gICAgY29uc3QgcGFydHMgPSBzZWxlY3RlZFBocmFzZS5pbmNsdWRlcygnfCcpXG4gICAgICA/IHNlbGVjdGVkUGhyYXNlLnNwbGl0KCd8JykubWFwKHBhcnQgPT4gcGFydC50cmltKCkpLmZpbHRlcihwYXJ0ID0+IHBhcnQubGVuZ3RoID4gMClcbiAgICAgIDogW3NlbGVjdGVkUGhyYXNlLnRyaW0oKV07XG5cbiAgICBzZXRDdXJyZW50VGhpbmtpbmdQYXJ0cyhwYXJ0cyk7XG4gICAgc2V0Q3VycmVudFRoaW5raW5nUGFydEluZGV4KDApO1xuXG4gICAgaWYgKHBhcnRzLmxlbmd0aCA8PSAxKSByZXR1cm47XG5cbiAgICBjb25zdCByb3REZWxheSA9IE1hdGgubWF4KDI1MCwgdGhpbmtpbmdEZWxheU1zIHx8IDEwMDApO1xuICAgIGNvbnN0IHRpbWVvdXRJZHM6IFJldHVyblR5cGU8dHlwZW9mIHNldFRpbWVvdXQ+W10gPSBbXTtcblxuICAgIGZvciAobGV0IGkgPSAxOyBpIDwgcGFydHMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGNvbnN0IHRpbWVvdXRJZCA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICBzZXRDdXJyZW50VGhpbmtpbmdQYXJ0SW5kZXgoaSk7XG4gICAgICB9LCByb3REZWxheSAqIGkpO1xuICAgICAgdGltZW91dElkcy5wdXNoKHRpbWVvdXRJZCk7XG4gICAgfVxuXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIHRpbWVvdXRJZHMuZm9yRWFjaChpZCA9PiBjbGVhclRpbWVvdXQoaWQpKTtcbiAgICB9O1xuICB9LCBbaXNBZ2VudFR5cGluZywgdGhpbmtpbmdQaHJhc2VzLCB0aGlua2luZ0RlbGF5TXNdKTtcblxuICByZXR1cm4ge1xuICAgIGN1cnJlbnRUaGlua2luZ1BhcnRzLFxuICAgIGN1cnJlbnRUaGlua2luZ1BhcnRJbmRleCxcbiAgfTtcbn1cbiJdfQ==
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
interface UseViewportManagerOptions {
|
|
2
|
+
mode: string;
|
|
3
|
+
widget: boolean;
|
|
4
|
+
isFloatingOpen: boolean;
|
|
5
|
+
showResetConfirm: boolean;
|
|
6
|
+
showLanguageDropdown: boolean;
|
|
7
|
+
showMenu: boolean;
|
|
8
|
+
onExitFullscreen?: () => void;
|
|
9
|
+
setShowResetConfirm: (v: boolean) => void;
|
|
10
|
+
setShowLanguageDropdown: (v: boolean) => void;
|
|
11
|
+
setShowMenu: (v: boolean) => void;
|
|
12
|
+
}
|
|
13
|
+
export declare function useViewportManager({ mode, widget, isFloatingOpen, showResetConfirm, showLanguageDropdown, showMenu, onExitFullscreen, setShowResetConfirm, setShowLanguageDropdown, setShowMenu, }: UseViewportManagerOptions): {
|
|
14
|
+
windowWidth: number;
|
|
15
|
+
windowHeight: number;
|
|
16
|
+
isFullscreen: boolean;
|
|
17
|
+
isFullscreenToggled: boolean;
|
|
18
|
+
handleFullscreenToggle: () => void;
|
|
19
|
+
};
|
|
20
|
+
export {};
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
import { useState, useEffect, useMemo } from 'react';
|
|
2
|
+
export function useViewportManager(_a) {
|
|
3
|
+
var mode = _a.mode, widget = _a.widget, isFloatingOpen = _a.isFloatingOpen, showResetConfirm = _a.showResetConfirm, showLanguageDropdown = _a.showLanguageDropdown, showMenu = _a.showMenu, onExitFullscreen = _a.onExitFullscreen, setShowResetConfirm = _a.setShowResetConfirm, setShowLanguageDropdown = _a.setShowLanguageDropdown, setShowMenu = _a.setShowMenu;
|
|
4
|
+
var _b = useState(typeof window !== 'undefined' ? window.innerWidth : 1024), windowWidth = _b[0], setWindowWidth = _b[1];
|
|
5
|
+
var _c = useState(typeof window !== 'undefined' ? window.innerHeight : 700), windowHeight = _c[0], setWindowHeight = _c[1];
|
|
6
|
+
var _d = useState(false), isFullscreenToggled = _d[0], setIsFullscreenToggled = _d[1];
|
|
7
|
+
var isFullscreen = useMemo(function () {
|
|
8
|
+
if (mode === 'fullscreen')
|
|
9
|
+
return true;
|
|
10
|
+
if (widget)
|
|
11
|
+
return true;
|
|
12
|
+
if (isFullscreenToggled)
|
|
13
|
+
return true;
|
|
14
|
+
return windowWidth <= 768;
|
|
15
|
+
}, [windowWidth, widget, isFullscreenToggled, mode]);
|
|
16
|
+
var handleFullscreenToggle = function () {
|
|
17
|
+
setIsFullscreenToggled(function (prev) { return !prev; });
|
|
18
|
+
setShowMenu(false);
|
|
19
|
+
};
|
|
20
|
+
useEffect(function () {
|
|
21
|
+
if (typeof window === 'undefined')
|
|
22
|
+
return;
|
|
23
|
+
if (mode === 'floating' && !isFloatingOpen)
|
|
24
|
+
return;
|
|
25
|
+
var onKeyDown = function (e) {
|
|
26
|
+
if (e.key !== 'Escape')
|
|
27
|
+
return;
|
|
28
|
+
if (showResetConfirm) {
|
|
29
|
+
e.preventDefault();
|
|
30
|
+
setShowResetConfirm(false);
|
|
31
|
+
return;
|
|
32
|
+
}
|
|
33
|
+
if (showLanguageDropdown) {
|
|
34
|
+
e.preventDefault();
|
|
35
|
+
setShowLanguageDropdown(false);
|
|
36
|
+
return;
|
|
37
|
+
}
|
|
38
|
+
if (showMenu) {
|
|
39
|
+
e.preventDefault();
|
|
40
|
+
setShowMenu(false);
|
|
41
|
+
return;
|
|
42
|
+
}
|
|
43
|
+
if (!isFullscreen)
|
|
44
|
+
return;
|
|
45
|
+
if (isFullscreenToggled) {
|
|
46
|
+
e.preventDefault();
|
|
47
|
+
setIsFullscreenToggled(false);
|
|
48
|
+
return;
|
|
49
|
+
}
|
|
50
|
+
if (mode === 'fullscreen' && onExitFullscreen) {
|
|
51
|
+
e.preventDefault();
|
|
52
|
+
onExitFullscreen();
|
|
53
|
+
}
|
|
54
|
+
};
|
|
55
|
+
window.addEventListener('keydown', onKeyDown);
|
|
56
|
+
return function () { return window.removeEventListener('keydown', onKeyDown); };
|
|
57
|
+
}, [
|
|
58
|
+
isFloatingOpen,
|
|
59
|
+
isFullscreen,
|
|
60
|
+
isFullscreenToggled,
|
|
61
|
+
mode,
|
|
62
|
+
onExitFullscreen,
|
|
63
|
+
showLanguageDropdown,
|
|
64
|
+
showMenu,
|
|
65
|
+
showResetConfirm,
|
|
66
|
+
]);
|
|
67
|
+
useEffect(function () {
|
|
68
|
+
var updateViewport = function () {
|
|
69
|
+
setWindowWidth(window.innerWidth);
|
|
70
|
+
setWindowHeight(window.innerHeight);
|
|
71
|
+
};
|
|
72
|
+
updateViewport();
|
|
73
|
+
window.addEventListener('resize', updateViewport);
|
|
74
|
+
var vv = typeof window !== 'undefined' ? window.visualViewport : null;
|
|
75
|
+
vv === null || vv === void 0 ? void 0 : vv.addEventListener('resize', updateViewport);
|
|
76
|
+
vv === null || vv === void 0 ? void 0 : vv.addEventListener('scroll', updateViewport);
|
|
77
|
+
return function () {
|
|
78
|
+
window.removeEventListener('resize', updateViewport);
|
|
79
|
+
vv === null || vv === void 0 ? void 0 : vv.removeEventListener('resize', updateViewport);
|
|
80
|
+
vv === null || vv === void 0 ? void 0 : vv.removeEventListener('scroll', updateViewport);
|
|
81
|
+
};
|
|
82
|
+
}, []);
|
|
83
|
+
useEffect(function () {
|
|
84
|
+
if (isFullscreen && typeof document !== 'undefined') {
|
|
85
|
+
var originalStyle_1 = window.getComputedStyle(document.body).overflow;
|
|
86
|
+
document.body.style.overflow = 'hidden';
|
|
87
|
+
return function () {
|
|
88
|
+
document.body.style.overflow = originalStyle_1;
|
|
89
|
+
};
|
|
90
|
+
}
|
|
91
|
+
}, [isFullscreen]);
|
|
92
|
+
return {
|
|
93
|
+
windowWidth: windowWidth,
|
|
94
|
+
windowHeight: windowHeight,
|
|
95
|
+
isFullscreen: isFullscreen,
|
|
96
|
+
isFullscreenToggled: isFullscreenToggled,
|
|
97
|
+
handleFullscreenToggle: handleFullscreenToggle,
|
|
98
|
+
};
|
|
99
|
+
}
|
|
100
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlVmlld3BvcnRNYW5hZ2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2hvb2tzL3VzZVZpZXdwb3J0TWFuYWdlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsTUFBTSxPQUFPLENBQUM7QUFlckQsTUFBTSxVQUFVLGtCQUFrQixDQUFDLEVBV1A7UUFWMUIsSUFBSSxVQUFBLEVBQ0osTUFBTSxZQUFBLEVBQ04sY0FBYyxvQkFBQSxFQUNkLGdCQUFnQixzQkFBQSxFQUNoQixvQkFBb0IsMEJBQUEsRUFDcEIsUUFBUSxjQUFBLEVBQ1IsZ0JBQWdCLHNCQUFBLEVBQ2hCLG1CQUFtQix5QkFBQSxFQUNuQix1QkFBdUIsNkJBQUEsRUFDdkIsV0FBVyxpQkFBQTtJQUVMLElBQUEsS0FBZ0MsUUFBUSxDQUFDLE9BQU8sTUFBTSxLQUFLLFdBQVcsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQWpHLFdBQVcsUUFBQSxFQUFFLGNBQWMsUUFBc0UsQ0FBQztJQUNuRyxJQUFBLEtBQWtDLFFBQVEsQ0FBQyxPQUFPLE1BQU0sS0FBSyxXQUFXLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFuRyxZQUFZLFFBQUEsRUFBRSxlQUFlLFFBQXNFLENBQUM7SUFDckcsSUFBQSxLQUFnRCxRQUFRLENBQUMsS0FBSyxDQUFDLEVBQTlELG1CQUFtQixRQUFBLEVBQUUsc0JBQXNCLFFBQW1CLENBQUM7SUFFdEUsSUFBTSxZQUFZLEdBQUcsT0FBTyxDQUFDO1FBQzNCLElBQUksSUFBSSxLQUFLLFlBQVk7WUFBRSxPQUFPLElBQUksQ0FBQztRQUN2QyxJQUFJLE1BQU07WUFBRSxPQUFPLElBQUksQ0FBQztRQUN4QixJQUFJLG1CQUFtQjtZQUFFLE9BQU8sSUFB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QUFFLGNBQWMsQ0FBQyxDQUFDO1lBQ3JELEVBQUUsYUFBRixFQUFFLHVCQUFGLEVBQUUsQ0FBRSxtQkFBbUIsQ0FBQyxRQUFRLEVBQUUsY0FBYyxDQUFDLENBQUM7WUFDbEQsRUFBRSxhQUFGLEVBQUUsdUJBQUYsRUFBRSxDQUFFLG1CQUFtQixDQUFDLFFBQVEsRUFBRSxjQUFjLENBQUMsQ0FBQztRQUNwRCxDQUFDLENBQUM7SUFDSixDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFFUCxTQUFTLENBQUM7UUFDUixJQUFJLFlBQVksSUFBSSxPQUFPLFFBQVEsS0FBSyxXQUFXLEVBQUUsQ0FBQztZQUNwRCxJQUFNLGVBQWEsR0FBRyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLFFBQVEsQ0FBQztZQUN0RSxRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO1lBQ3hDLE9BQU87Z0JBQ0wsUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxHQUFHLGVBQWEsQ0FBQztZQUMvQyxDQUFDLENBQUM7UUFDSixDQUFDO0lBQ0gsQ0FBQyxFQUFFLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQztJQUVuQixPQUFPO1FBQ0wsV0FBVyxhQUFBO1FBQ1gsWUFBWSxjQUFBO1FBQ1osWUFBWSxjQUFBO1FBQ1osbUJBQW1CLHFCQUFBO1FBQ25CLHNCQUFzQix3QkFBQTtLQUN2QixDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHVzZVN0YXRlLCB1c2VFZmZlY3QsIHVzZU1lbW8gfSBmcm9tICdyZWFjdCc7XG5cbmludGVyZmFjZSBVc2VWaWV3cG9ydE1hbmFnZXJPcHRpb25zIHtcbiAgbW9kZTogc3RyaW5nO1xuICB3aWRnZXQ6IGJvb2xlYW47XG4gIGlzRmxvYXRpbmdPcGVuOiBib29sZWFuO1xuICBzaG93UmVzZXRDb25maXJtOiBib29sZWFuO1xuICBzaG93TGFuZ3VhZ2VEcm9wZG93bjogYm9vbGVhbjtcbiAgc2hvd01lbnU6IGJvb2xlYW47XG4gIG9uRXhpdEZ1bGxzY3JlZW4/OiAoKSA9PiB2b2lkO1xuICBzZXRTaG93UmVzZXRDb25maXJtOiAodjogYm9vbGVhbikgPT4gdm9pZDtcbiAgc2V0U2hvd0xhbmd1YWdlRHJvcGRvd246ICh2OiBib29sZWFuKSA9PiB2b2lkO1xuICBzZXRTaG93TWVudTogKHY6IGJvb2xlYW4pID0+IHZvaWQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB1c2VWaWV3cG9ydE1hbmFnZXIoe1xuICBtb2RlLFxuICB3aWRnZXQsXG4gIGlzRmxvYXRpbmdPcGVuLFxuICBzaG93UmVzZXRDb25maXJtLFxuICBzaG93TGFuZ3VhZ2VEcm9wZG93bixcbiAgc2hvd01lbnUsXG4gIG9uRXhpdEZ1bGxzY3JlZW4sXG4gIHNldFNob3dSZXNldENvbmZpcm0sXG4gIHNldFNob3dMYW5ndWFnZURyb3Bkb3duLFxuICBzZXRTaG93TWVudSxcbn06IFVzZVZpZXdwb3J0TWFuYWdlck9wdGlvbnMpIHtcbiAgY29uc3QgW3dpbmRvd1dpZHRoLCBzZXRXaW5kb3dXaWR0aF0gPSB1c2VTdGF0ZSh0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJyA/IHdpbmRvdy5pbm5lcldpZHRoIDogMTAyNCk7XG4gIGNvbnN0IFt3aW5kb3dIZWlnaHQsIHNldFdpbmRvd0hlaWdodF0gPSB1c2VTdGF0ZSh0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJyA/IHdpbmRvdy5pbm5lckhlaWdodCA6IDcwMCk7XG4gIGNvbnN0IFtpc0Z1bGxzY3JlZW5Ub2dnbGVkLCBzZXRJc0Z1bGxzY3JlZW5Ub2dnbGVkXSA9IHVzZVN0YXRlKGZhbHNlKTtcblxuICBjb25zdCBpc0Z1bGxzY3JlZW4gPSB1c2VNZW1vKCgpID0+IHtcbiAgICBpZiAobW9kZSA9PT0gJ2Z1bGxzY3JlZW4nKSByZXR1cm4gdHJ1ZTtcbiAgICBpZiAod2lkZ2V0KSByZXR1cm4gdHJ1ZTtcbiAgICBpZiAoaXNGdWxsc2NyZWVuVG9nZ2xlZCkgcmV0dXJuIHRydWU7XG4gICAgcmV0dXJuIHdpbmRvd1dpZHRoIDw9IDc2ODtcbiAgfSwgW3dpbmRvd1dpZHRoLCB3aWRnZXQsIGlzRnVsbHNjcmVlblRvZ2dsZWQsIG1vZGVdKTtcblxuICBjb25zdCBoYW5kbGVGdWxsc2NyZWVuVG9nZ2xlID0gKCkgPT4ge1xuICAgIHNldElzRnVsbHNjcmVlblRvZ2dsZWQocHJldiA9PiAhcHJldik7XG4gICAgc2V0U2hvd01lbnUoZmFsc2UpO1xuICB9O1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKHR5cGVvZiB3aW5kb3cgPT09ICd1bmRlZmluZWQnKSByZXR1cm47XG4gICAgaWYgKG1vZGUgPT09ICdmbG9hdGluZycgJiYgIWlzRmxvYXRpbmdPcGVuKSByZXR1cm47XG5cbiAgICBjb25zdCBvbktleURvd24gPSAoZTogS2V5Ym9hcmRFdmVudCkgPT4ge1xuICAgICAgaWYgKGUua2V5ICE9PSAnRXNjYXBlJykgcmV0dXJuO1xuXG4gICAgICBpZiAoc2hvd1Jlc2V0Q29uZmlybSkge1xuICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIHNldFNob3dSZXNldENvbmZpcm0oZmFsc2UpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBpZiAoc2hvd0xhbmd1YWdlRHJvcGRvd24pIHtcbiAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBzZXRTaG93TGFuZ3VhZ2VEcm9wZG93bihmYWxzZSk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGlmIChzaG93TWVudSkge1xuICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIHNldFNob3dNZW51KGZhbHNlKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBpZiAoIWlzRnVsbHNjcmVlbikgcmV0dXJuO1xuXG4gICAgICBpZiAoaXNGdWxsc2NyZWVuVG9nZ2xlZCkge1xuICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIHNldElzRnVsbHNjcmVlblRvZ2dsZWQoZmFsc2UpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBpZiAobW9kZSA9PT0gJ2Z1bGxzY3JlZW4nICYmIG9uRXhpdEZ1bGxzY3JlZW4pIHtcbiAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBvbkV4aXRGdWxsc2NyZWVuKCk7XG4gICAgICB9XG4gICAgfTtcblxuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdrZXlkb3duJywgb25LZXlEb3duKTtcbiAgICByZXR1cm4gKCkgPT4gd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLCBvbktleURvd24pO1xuICB9LCBbXG4gICAgaXNGbG9hdGluZ09wZW4sXG4gICAgaXNGdWxsc2NyZWVuLFxuICAgIGlzRnVsbHNjcmVlblRvZ2dsZWQsXG4gICAgbW9kZSxcbiAgICBvbkV4aXRGdWxsc2NyZWVuLFxuICAgIHNob3dMYW5ndWFnZURyb3Bkb3duLFxuICAgIHNob3dNZW51LFxuICAgIHNob3dSZXNldENvbmZpcm0sXG4gIF0pO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgdXBkYXRlVmlld3BvcnQgPSAoKSA9PiB7XG4gICAgICBzZXRXaW5kb3dXaWR0aCh3aW5kb3cuaW5uZXJXaWR0aCk7XG4gICAgICBzZXRXaW5kb3dIZWlnaHQod2luZG93LmlubmVySGVpZ2h0KTtcbiAgICB9O1xuICAgIHVwZGF0ZVZpZXdwb3J0KCk7XG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIHVwZGF0ZVZpZXdwb3J0KTtcbiAgICBjb25zdCB2diA9IHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnID8gd2luZG93LnZpc3VhbFZpZXdwb3J0IDogbnVsbDtcbiAgICB2dj8uYWRkRXZlbnRMaXN0ZW5lcigncmVzaXplJywgdXBkYXRlVmlld3BvcnQpO1xuICAgIHZ2Py5hZGRFdmVudExpc3RlbmVyKCdzY3JvbGwnLCB1cGRhdGVWaWV3cG9ydCk7XG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdyZXNpemUnLCB1cGRhdGVWaWV3cG9ydCk7XG4gICAgICB2dj8ucmVtb3ZlRXZlbnRMaXN0ZW5lcigncmVzaXplJywgdXBkYXRlVmlld3BvcnQpO1xuICAgICAgdnY/LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIHVwZGF0ZVZpZXdwb3J0KTtcbiAgICB9O1xuICB9LCBbXSk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoaXNGdWxsc2NyZWVuICYmIHR5cGVvZiBkb2N1bWVudCAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIGNvbnN0IG9yaWdpbmFsU3R5bGUgPSB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShkb2N1bWVudC5ib2R5KS5vdmVyZmxvdztcbiAgICAgIGRvY3VtZW50LmJvZHkuc3R5bGUub3ZlcmZsb3cgPSAnaGlkZGVuJztcbiAgICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgIGRvY3VtZW50LmJvZHkuc3R5bGUub3ZlcmZsb3cgPSBvcmlnaW5hbFN0eWxlO1xuICAgICAgfTtcbiAgICB9XG4gIH0sIFtpc0Z1bGxzY3JlZW5dKTtcblxuICByZXR1cm4ge1xuICAgIHdpbmRvd1dpZHRoLFxuICAgIHdpbmRvd0hlaWdodCxcbiAgICBpc0Z1bGxzY3JlZW4sXG4gICAgaXNGdWxsc2NyZWVuVG9nZ2xlZCxcbiAgICBoYW5kbGVGdWxsc2NyZWVuVG9nZ2xlLFxuICB9O1xufVxuIl19
|
|
@@ -126,6 +126,7 @@ export declare class ChatService {
|
|
|
126
126
|
isConversationFinalized(): boolean;
|
|
127
127
|
startConversation(reCaptchaToken?: string | undefined): Promise<string>;
|
|
128
128
|
sendMessage(message: string, attachments?: Attachment[], extraMetadata?: Record<string, any>, reCaptchaToken?: string): Promise<void>;
|
|
129
|
+
sendAudioMessage(audioBlob: Blob, audioFormat: string, extraMetadata?: Record<string, any>): Promise<void>;
|
|
129
130
|
uploadFile(chatId: string, file: File): Promise<FileUploadResponse | null>;
|
|
130
131
|
/**
|
|
131
132
|
* Process raw WebSocket message data. Called from useChatWebSocket hook.
|