@projectcor/maia-components 2.11.77-1 → 2.11.78-0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/components/atoms/SessionGeneratingDot/SessionGeneratingDot.js +17 -0
- package/lib/components/atoms/SessionGeneratingDot/SessionGeneratingDot.styles.js +15 -0
- package/lib/components/atoms/SessionGeneratingDot/index.js +2 -0
- package/lib/components/atoms/SessionUnreadDot/SessionUnreadDot.js +12 -0
- package/lib/components/atoms/SessionUnreadDot/SessionUnreadDot.styles.js +8 -0
- package/lib/components/atoms/SessionUnreadDot/index.js +2 -0
- package/lib/components/molecules/ChatAIModal/ChatAIModal.js +4 -5
- package/lib/components/molecules/Sidebar/Sidebar.js +23 -8
- package/lib/components/molecules/Sidebar/Sidebar.styles.js +10 -6
- package/lib/components/organisms/ChatAI/ChatAI.js +10 -2
- package/lib/hooks/useChatManager/useChatManager.js +444 -423
- package/lib/hooks/useChatMessages/useChatMessages.js +20 -3
- package/lib/hooks/useOrchestratorStream/useOrchestratorStream.interface.js +1 -1
- package/lib/hooks/useOrchestratorStream/useOrchestratorStream.js +139 -496
- package/lib/hooks/useStreamingMessage/index.js +2 -3
- package/lib/hooks/useStreamingMessage/useStreamingMessage.js +13 -17
- package/lib/lang/br/index.js +7 -1
- package/lib/lang/en/index.js +7 -1
- package/lib/lang/es/index.js +7 -1
- package/lib/lang/fr/index.js +9 -2
- package/lib/store/sessions/activeView.js +22 -0
- package/lib/store/sessions/index.js +10 -0
- package/lib/store/sessions/sessionHitlContext.js +15 -0
- package/lib/store/sessions/sessionNotificationSound.js +57 -0
- package/lib/store/sessions/sessionNotifications.js +111 -0
- package/lib/store/sessions/sessionNotifications.types.js +2 -0
- package/lib/store/sessions/sessionStreamManager.js +576 -0
- package/lib/store/sessions/sessionStreamingText.js +80 -0
- package/lib/store/sessions/sessionUnreadPersistence.js +49 -0
- package/lib/store/sessions/sessions.types.js +29 -0
- package/lib/store/sessions/useSessionMeta.js +39 -0
- package/lib/store/sessions/useSessionStreamingText.js +18 -0
- package/lib/store/sessions/useSessionsStore.js +195 -0
- package/lib/store/useChatsStore.js +3 -1
- package/package.json +1 -1
- package/lib/hooks/useStreamingMessage/streamingStore.js +0 -69
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Store externo (module-level) para el texto en streaming, keyed por
|
|
3
|
+
* `sessionId`. A diferencia del `streamingStore` legacy (un único mensaje),
|
|
4
|
+
* acá conviven varias sesiones haciendo streaming a la vez.
|
|
5
|
+
*
|
|
6
|
+
* El texto vive fuera del array de `messages` para que solo el componente del
|
|
7
|
+
* mensaje en streaming re-renderice (vía `useSyncExternalStore`), sin disparar
|
|
8
|
+
* re-renders del árbol completo en cada token.
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
var EMPTY_SNAPSHOT = {
|
|
12
|
+
placeholderId: null,
|
|
13
|
+
text: ''
|
|
14
|
+
};
|
|
15
|
+
var snapshots = new Map();
|
|
16
|
+
var listeners = new Set();
|
|
17
|
+
var emitChange = function emitChange() {
|
|
18
|
+
listeners.forEach(function (listener) {
|
|
19
|
+
return listener();
|
|
20
|
+
});
|
|
21
|
+
};
|
|
22
|
+
export var sessionStreamingText = {
|
|
23
|
+
/** Inicia una sesión de streaming con su placeholder. */start: function start(sessionId, placeholderId) {
|
|
24
|
+
snapshots.set(sessionId, {
|
|
25
|
+
placeholderId: placeholderId,
|
|
26
|
+
text: ''
|
|
27
|
+
});
|
|
28
|
+
emitChange();
|
|
29
|
+
},
|
|
30
|
+
/** Setea el texto en vivo de la sesión. */setText: function setText(sessionId, placeholderId, text) {
|
|
31
|
+
var current = snapshots.get(sessionId);
|
|
32
|
+
if (current && current.placeholderId === placeholderId && current.text === text) {
|
|
33
|
+
return;
|
|
34
|
+
}
|
|
35
|
+
snapshots.set(sessionId, {
|
|
36
|
+
placeholderId: placeholderId,
|
|
37
|
+
text: text
|
|
38
|
+
});
|
|
39
|
+
emitChange();
|
|
40
|
+
},
|
|
41
|
+
/** Limpia el streaming de una sesión (fin, error, stop o approval). */clear: function clear(sessionId) {
|
|
42
|
+
if (!snapshots.has(sessionId)) return;
|
|
43
|
+
snapshots["delete"](sessionId);
|
|
44
|
+
emitChange();
|
|
45
|
+
},
|
|
46
|
+
/** Limpia el streaming de todas las sesiones. */clearAll: function clearAll() {
|
|
47
|
+
if (snapshots.size === 0) return;
|
|
48
|
+
snapshots.clear();
|
|
49
|
+
emitChange();
|
|
50
|
+
},
|
|
51
|
+
subscribe: function subscribe(listener) {
|
|
52
|
+
listeners.add(listener);
|
|
53
|
+
return function () {
|
|
54
|
+
listeners["delete"](listener);
|
|
55
|
+
};
|
|
56
|
+
},
|
|
57
|
+
/** Snapshot referencialmente estable por sesión mientras no cambie. */getSnapshot: function getSnapshot(sessionId) {
|
|
58
|
+
var _snapshots$get;
|
|
59
|
+
return (_snapshots$get = snapshots.get(sessionId)) !== null && _snapshots$get !== void 0 ? _snapshots$get : EMPTY_SNAPSHOT;
|
|
60
|
+
},
|
|
61
|
+
/**
|
|
62
|
+
* Texto en vivo del placeholder indicado, buscando en todas las sesiones.
|
|
63
|
+
* El placeholderId es único por stream, así que el lookup no necesita saber
|
|
64
|
+
* a qué sesión pertenece (útil para renderizar sin pasar sessionId por props).
|
|
65
|
+
*/
|
|
66
|
+
getTextByPlaceholder: function getTextByPlaceholder(placeholderId) {
|
|
67
|
+
if (!placeholderId) return '';
|
|
68
|
+
var found = '';
|
|
69
|
+
snapshots.forEach(function (snapshot) {
|
|
70
|
+
if (snapshot.placeholderId === placeholderId) {
|
|
71
|
+
found = snapshot.text;
|
|
72
|
+
}
|
|
73
|
+
});
|
|
74
|
+
return found;
|
|
75
|
+
},
|
|
76
|
+
getServerSnapshot: function getServerSnapshot() {
|
|
77
|
+
return EMPTY_SNAPSHOT;
|
|
78
|
+
}
|
|
79
|
+
};
|
|
80
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJFTVBUWV9TTkFQU0hPVCIsInBsYWNlaG9sZGVySWQiLCJ0ZXh0Iiwic25hcHNob3RzIiwiTWFwIiwibGlzdGVuZXJzIiwiU2V0IiwiZW1pdENoYW5nZSIsImZvckVhY2giLCJsaXN0ZW5lciIsInNlc3Npb25TdHJlYW1pbmdUZXh0Iiwic3RhcnQiLCJzZXNzaW9uSWQiLCJzZXQiLCJzZXRUZXh0IiwiY3VycmVudCIsImdldCIsImNsZWFyIiwiaGFzIiwiY2xlYXJBbGwiLCJzaXplIiwic3Vic2NyaWJlIiwiYWRkIiwiZ2V0U25hcHNob3QiLCJfc25hcHNob3RzJGdldCIsImdldFRleHRCeVBsYWNlaG9sZGVyIiwiZm91bmQiLCJzbmFwc2hvdCIsImdldFNlcnZlclNuYXBzaG90Il0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3N0b3JlL3Nlc3Npb25zL3Nlc3Npb25TdHJlYW1pbmdUZXh0LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgU2Vzc2lvblN0cmVhbWluZ1NuYXBzaG90IH0gZnJvbSAnLi9zZXNzaW9ucy50eXBlcydcblxuLyoqXG4gKiBTdG9yZSBleHRlcm5vIChtb2R1bGUtbGV2ZWwpIHBhcmEgZWwgdGV4dG8gZW4gc3RyZWFtaW5nLCBrZXllZCBwb3JcbiAqIGBzZXNzaW9uSWRgLiBBIGRpZmVyZW5jaWEgZGVsIGBzdHJlYW1pbmdTdG9yZWAgbGVnYWN5ICh1biDDum5pY28gbWVuc2FqZSksXG4gKiBhY8OhIGNvbnZpdmVuIHZhcmlhcyBzZXNpb25lcyBoYWNpZW5kbyBzdHJlYW1pbmcgYSBsYSB2ZXouXG4gKlxuICogRWwgdGV4dG8gdml2ZSBmdWVyYSBkZWwgYXJyYXkgZGUgYG1lc3NhZ2VzYCBwYXJhIHF1ZSBzb2xvIGVsIGNvbXBvbmVudGUgZGVsXG4gKiBtZW5zYWplIGVuIHN0cmVhbWluZyByZS1yZW5kZXJpY2UgKHbDrWEgYHVzZVN5bmNFeHRlcm5hbFN0b3JlYCksIHNpbiBkaXNwYXJhclxuICogcmUtcmVuZGVycyBkZWwgw6FyYm9sIGNvbXBsZXRvIGVuIGNhZGEgdG9rZW4uXG4gKi9cblxuY29uc3QgRU1QVFlfU05BUFNIT1Q6IFNlc3Npb25TdHJlYW1pbmdTbmFwc2hvdCA9IHsgcGxhY2Vob2xkZXJJZDogbnVsbCwgdGV4dDogJycgfVxuXG5jb25zdCBzbmFwc2hvdHMgPSBuZXcgTWFwPHN0cmluZywgU2Vzc2lvblN0cmVhbWluZ1NuYXBzaG90PigpXG5jb25zdCBsaXN0ZW5lcnMgPSBuZXcgU2V0PCgpID0+IHZvaWQ+KClcblxuY29uc3QgZW1pdENoYW5nZSA9ICgpID0+IHtcbiAgbGlzdGVuZXJzLmZvckVhY2gobGlzdGVuZXIgPT4gbGlzdGVuZXIoKSlcbn1cblxuZXhwb3J0IGNvbnN0IHNlc3Npb25TdHJlYW1pbmdUZXh0ID0ge1xuICAvKiogSW5pY2lhIHVuYSBzZXNpw7NuIGRlIHN0cmVhbWluZyBjb24gc3UgcGxhY2Vob2xkZXIuICovXG4gIHN0YXJ0KHNlc3Npb25JZDogc3RyaW5nLCBwbGFjZWhvbGRlcklkOiBzdHJpbmcpIHtcbiAgICBzbmFwc2hvdHMuc2V0KHNlc3Npb25JZCwgeyBwbGFjZWhvbGRlcklkLCB0ZXh0OiAnJyB9KVxuICAgIGVtaXRDaGFuZ2UoKVxuICB9LFxuICAvKiogU2V0ZWEgZWwgdGV4dG8gZW4gdml2byBkZSBsYSBzZXNpw7NuLiAqL1xuICBzZXRUZXh0KHNlc3Npb25JZDogc3RyaW5nLCBwbGFjZWhvbGRlcklkOiBzdHJpbmcsIHRleHQ6IHN0cmluZykge1xuICAgIGNvbnN0IGN1cnJlbnQgPSBzbmFwc2hvdHMuZ2V0KHNlc3Npb25JZClcbiAgICBpZiAoY3VycmVudCAmJiBjdXJyZW50LnBsYWNlaG9sZGVySWQgPT09IHBsYWNlaG9sZGVySWQgJiYgY3VycmVudC50ZXh0ID09PSB0ZXh0KSB7XG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgc25hcHNob3RzLnNldChzZXNzaW9uSWQsIHsgcGxhY2Vob2xkZXJJZCwgdGV4dCB9KVxuICAgIGVtaXRDaGFuZ2UoKVxuICB9LFxuICAvKiogTGltcGlhIGVsIHN0cmVhbWluZyBkZSB1bmEgc2VzacOzbiAoZmluLCBlcnJvciwgc3RvcCBvIGFwcHJvdmFsKS4gKi9cbiAgY2xlYXIoc2Vzc2lvbklkOiBzdHJpbmcpIHtcbiAgICBpZiAoIXNuYXBzaG90cy5oYXMoc2Vzc2lvbklkKSkgcmV0dXJuXG4gICAgc25hcHNob3RzLmRlbGV0ZShzZXNzaW9uSWQpXG4gICAgZW1pdENoYW5nZSgpXG4gIH0sXG4gIC8qKiBMaW1waWEgZWwgc3RyZWFtaW5nIGRlIHRvZGFzIGxhcyBzZXNpb25lcy4gKi9cbiAgY2xlYXJBbGwoKSB7XG4gICAgaWYgKHNuYXBzaG90cy5zaXplID09PSAwKSByZXR1cm5cbiAgICBzbmFwc2hvdHMuY2xlYXIoKVxuICAgIGVtaXRDaGFuZ2UoKVxuICB9LFxuICBzdWJzY3JpYmUobGlzdGVuZXI6ICgpID0+IHZvaWQpIHtcbiAgICBsaXN0ZW5lcnMuYWRkKGxpc3RlbmVyKVxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBsaXN0ZW5lcnMuZGVsZXRlKGxpc3RlbmVyKVxuICAgIH1cbiAgfSxcbiAgLyoqIFNuYXBzaG90IHJlZmVyZW5jaWFsbWVudGUgZXN0YWJsZSBwb3Igc2VzacOzbiBtaWVudHJhcyBubyBjYW1iaWUuICovXG4gIGdldFNuYXBzaG90KHNlc3Npb25JZDogc3RyaW5nKTogU2Vzc2lvblN0cmVhbWluZ1NuYXBzaG90IHtcbiAgICByZXR1cm4gc25hcHNob3RzLmdldChzZXNzaW9uSWQpID8/IEVNUFRZX1NOQVBTSE9UXG4gIH0sXG4gIC8qKlxuICAgKiBUZXh0byBlbiB2aXZvIGRlbCBwbGFjZWhvbGRlciBpbmRpY2FkbywgYnVzY2FuZG8gZW4gdG9kYXMgbGFzIHNlc2lvbmVzLlxuICAgKiBFbCBwbGFjZWhvbGRlcklkIGVzIMO6bmljbyBwb3Igc3RyZWFtLCBhc8OtIHF1ZSBlbCBsb29rdXAgbm8gbmVjZXNpdGEgc2FiZXJcbiAgICogYSBxdcOpIHNlc2nDs24gcGVydGVuZWNlICjDunRpbCBwYXJhIHJlbmRlcml6YXIgc2luIHBhc2FyIHNlc3Npb25JZCBwb3IgcHJvcHMpLlxuICAgKi9cbiAgZ2V0VGV4dEJ5UGxhY2Vob2xkZXIocGxhY2Vob2xkZXJJZDogc3RyaW5nIHwgbnVsbCk6IHN0cmluZyB7XG4gICAgaWYgKCFwbGFjZWhvbGRlcklkKSByZXR1cm4gJydcbiAgICBsZXQgZm91bmQgPSAnJ1xuICAgIHNuYXBzaG90cy5mb3JFYWNoKHNuYXBzaG90ID0+IHtcbiAgICAgIGlmIChzbmFwc2hvdC5wbGFjZWhvbGRlcklkID09PSBwbGFjZWhvbGRlcklkKSB7XG4gICAgICAgIGZvdW5kID0gc25hcHNob3QudGV4dFxuICAgICAgfVxuICAgIH0pXG4gICAgcmV0dXJuIGZvdW5kXG4gIH0sXG4gIGdldFNlcnZlclNuYXBzaG90KCk6IFNlc3Npb25TdHJlYW1pbmdTbmFwc2hvdCB7XG4gICAgcmV0dXJuIEVNUFRZX1NOQVBTSE9UXG4gIH0sXG59XG4iXSwibWFwcGluZ3MiOiJBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxJQUFNQSxjQUF3QyxHQUFHO0VBQUVDLGFBQWEsRUFBRSxJQUFJO0VBQUVDLElBQUksRUFBRTtBQUFHLENBQUM7QUFFbEYsSUFBTUMsU0FBUyxHQUFHLElBQUlDLEdBQUcsQ0FBbUMsQ0FBQztBQUM3RCxJQUFNQyxTQUFTLEdBQUcsSUFBSUMsR0FBRyxDQUFhLENBQUM7QUFFdkMsSUFBTUMsVUFBVSxHQUFHLFNBQWJBLFVBQVVBLENBQUEsRUFBUztFQUN2QkYsU0FBUyxDQUFDRyxPQUFPLENBQUMsVUFBQUMsUUFBUTtJQUFBLE9BQUlBLFFBQVEsQ0FBQyxDQUFDO0VBQUEsRUFBQztBQUMzQyxDQUFDO0FBRUQsT0FBTyxJQUFNQyxvQkFBb0IsR0FBRztFQUNsQyx5REFDQUMsS0FBSyxXQUFMQSxLQUFLQSxDQUFDQyxTQUFpQixFQUFFWCxhQUFxQixFQUFFO0lBQzlDRSxTQUFTLENBQUNVLEdBQUcsQ0FBQ0QsU0FBUyxFQUFFO01BQUVYLGFBQWEsRUFBYkEsYUFBYTtNQUFFQyxJQUFJLEVBQUU7SUFBRyxDQUFDLENBQUM7SUFDckRLLFVBQVUsQ0FBQyxDQUFDO0VBQ2QsQ0FBQztFQUNELDJDQUNBTyxPQUFPLFdBQVBBLE9BQU9BLENBQUNGLFNBQWlCLEVBQUVYLGFBQXFCLEVBQUVDLElBQVksRUFBRTtJQUM5RCxJQUFNYSxPQUFPLEdBQUdaLFNBQVMsQ0FBQ2EsR0FBRyxDQUFDSixTQUFTLENBQUM7SUFDeEMsSUFBSUcsT0FBTyxJQUFJQSxPQUFPLENBQUNkLGFBQWEsS0FBS0EsYUFBYSxJQUFJYyxPQUFPLENBQUNiLElBQUksS0FBS0EsSUFBSSxFQUFFO01BQy9FO0lBQ0Y7SUFDQUMsU0FBUyxDQUFDVSxHQUFHLENBQUNELFNBQVMsRUFBRTtNQUFFWCxhQUFhLEVBQWJBLGFBQWE7TUFBRUMsSUFBSSxFQUFKQTtJQUFLLENBQUMsQ0FBQztJQUNqREssVUFBVSxDQUFDLENBQUM7RUFDZCxDQUFDO0VBQ0QsdUVBQ0FVLEtBQUssV0FBTEEsS0FBS0EsQ0FBQ0wsU0FBaUIsRUFBRTtJQUN2QixJQUFJLENBQUNULFNBQVMsQ0FBQ2UsR0FBRyxDQUFDTixTQUFTLENBQUMsRUFBRTtJQUMvQlQsU0FBUyxVQUFPLENBQUNTLFNBQVMsQ0FBQztJQUMzQkwsVUFBVSxDQUFDLENBQUM7RUFDZCxDQUFDO0VBQ0QsaURBQ0FZLFFBQVEsV0FBUkEsUUFBUUEsQ0FBQSxFQUFHO0lBQ1QsSUFBSWhCLFNBQVMsQ0FBQ2lCLElBQUksS0FBSyxDQUFDLEVBQUU7SUFDMUJqQixTQUFTLENBQUNjLEtBQUssQ0FBQyxDQUFDO0lBQ2pCVixVQUFVLENBQUMsQ0FBQztFQUNkLENBQUM7RUFDRGMsU0FBUyxXQUFUQSxTQUFTQSxDQUFDWixRQUFvQixFQUFFO0lBQzlCSixTQUFTLENBQUNpQixHQUFHLENBQUNiLFFBQVEsQ0FBQztJQUN2QixPQUFPLFlBQU07TUFDWEosU0FBUyxVQUFPLENBQUNJLFFBQVEsQ0FBQztJQUM1QixDQUFDO0VBQ0gsQ0FBQztFQUNELHVFQUNBYyxXQUFXLFdBQVhBLFdBQVdBLENBQUNYLFNBQWlCLEVBQTRCO0lBQUEsSUFBQVksY0FBQTtJQUN2RCxRQUFBQSxjQUFBLEdBQU9yQixTQUFTLENBQUNhLEdBQUcsQ0FBQ0osU0FBUyxDQUFDLGNBQUFZLGNBQUEsY0FBQUEsY0FBQSxHQUFJeEIsY0FBYztFQUNuRCxDQUFDO0VBQ0Q7QUFDRjtBQUNBO0FBQ0E7QUFDQTtFQUNFeUIsb0JBQW9CLFdBQXBCQSxvQkFBb0JBLENBQUN4QixhQUE0QixFQUFVO0lBQ3pELElBQUksQ0FBQ0EsYUFBYSxFQUFFLE9BQU8sRUFBRTtJQUM3QixJQUFJeUIsS0FBSyxHQUFHLEVBQUU7SUFDZHZCLFNBQVMsQ0FBQ0ssT0FBTyxDQUFDLFVBQUFtQixRQUFRLEVBQUk7TUFDNUIsSUFBSUEsUUFBUSxDQUFDMUIsYUFBYSxLQUFLQSxhQUFhLEVBQUU7UUFDNUN5QixLQUFLLEdBQUdDLFFBQVEsQ0FBQ3pCLElBQUk7TUFDdkI7SUFDRixDQUFDLENBQUM7SUFDRixPQUFPd0IsS0FBSztFQUNkLENBQUM7RUFDREUsaUJBQWlCLFdBQWpCQSxpQkFBaUJBLENBQUEsRUFBNkI7SUFDNUMsT0FBTzVCLGNBQWM7RUFDdkI7QUFDRixDQUFDIiwiaWdub3JlTGlzdCI6W119
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import _toConsumableArray from "@babel/runtime/helpers/toConsumableArray";
|
|
2
|
+
var STORAGE_PREFIX = 'maia:sessions:unread';
|
|
3
|
+
var scopeKey = null;
|
|
4
|
+
var canUseStorage = function canUseStorage() {
|
|
5
|
+
return typeof window !== 'undefined' && typeof localStorage !== 'undefined';
|
|
6
|
+
};
|
|
7
|
+
var readSet = function readSet() {
|
|
8
|
+
if (!scopeKey || !canUseStorage()) return new Set();
|
|
9
|
+
try {
|
|
10
|
+
var raw = localStorage.getItem(scopeKey);
|
|
11
|
+
if (!raw) return new Set();
|
|
12
|
+
var parsed = JSON.parse(raw);
|
|
13
|
+
if (!Array.isArray(parsed)) return new Set();
|
|
14
|
+
return new Set(parsed.filter(function (id) {
|
|
15
|
+
return typeof id === 'string' && id.length > 0;
|
|
16
|
+
}));
|
|
17
|
+
} catch (_unused) {
|
|
18
|
+
return new Set();
|
|
19
|
+
}
|
|
20
|
+
};
|
|
21
|
+
var writeSet = function writeSet(ids) {
|
|
22
|
+
if (!scopeKey || !canUseStorage()) return;
|
|
23
|
+
localStorage.setItem(scopeKey, JSON.stringify(_toConsumableArray(ids)));
|
|
24
|
+
};
|
|
25
|
+
|
|
26
|
+
/** Scope de persistencia por usuario (evita mezclar unread entre cuentas en el mismo browser). */
|
|
27
|
+
export var initSessionUnreadPersistence = function initSessionUnreadPersistence(userId, companyId) {
|
|
28
|
+
scopeKey = "".concat(STORAGE_PREFIX, ":").concat(companyId, ":").concat(userId);
|
|
29
|
+
};
|
|
30
|
+
export var isPersistedSessionUnread = function isPersistedSessionUnread(sessionId) {
|
|
31
|
+
return readSet().has(sessionId);
|
|
32
|
+
};
|
|
33
|
+
export var getPersistedUnreadSessionIds = function getPersistedUnreadSessionIds() {
|
|
34
|
+
return _toConsumableArray(readSet());
|
|
35
|
+
};
|
|
36
|
+
export var setPersistedSessionUnread = function setPersistedSessionUnread(sessionId, unread) {
|
|
37
|
+
if (!sessionId) return;
|
|
38
|
+
var ids = readSet();
|
|
39
|
+
if (unread) {
|
|
40
|
+
ids.add(sessionId);
|
|
41
|
+
} else {
|
|
42
|
+
ids["delete"](sessionId);
|
|
43
|
+
}
|
|
44
|
+
writeSet(ids);
|
|
45
|
+
};
|
|
46
|
+
export var removePersistedSessionUnread = function removePersistedSessionUnread(sessionId) {
|
|
47
|
+
setPersistedSessionUnread(sessionId, false);
|
|
48
|
+
};
|
|
49
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJTVE9SQUdFX1BSRUZJWCIsInNjb3BlS2V5IiwiY2FuVXNlU3RvcmFnZSIsIndpbmRvdyIsImxvY2FsU3RvcmFnZSIsInJlYWRTZXQiLCJTZXQiLCJyYXciLCJnZXRJdGVtIiwicGFyc2VkIiwiSlNPTiIsInBhcnNlIiwiQXJyYXkiLCJpc0FycmF5IiwiZmlsdGVyIiwiaWQiLCJsZW5ndGgiLCJfdW51c2VkIiwid3JpdGVTZXQiLCJpZHMiLCJzZXRJdGVtIiwic3RyaW5naWZ5IiwiX3RvQ29uc3VtYWJsZUFycmF5IiwiaW5pdFNlc3Npb25VbnJlYWRQZXJzaXN0ZW5jZSIsInVzZXJJZCIsImNvbXBhbnlJZCIsImNvbmNhdCIsImlzUGVyc2lzdGVkU2Vzc2lvblVucmVhZCIsInNlc3Npb25JZCIsImhhcyIsImdldFBlcnNpc3RlZFVucmVhZFNlc3Npb25JZHMiLCJzZXRQZXJzaXN0ZWRTZXNzaW9uVW5yZWFkIiwidW5yZWFkIiwiYWRkIiwicmVtb3ZlUGVyc2lzdGVkU2Vzc2lvblVucmVhZCJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9zdG9yZS9zZXNzaW9ucy9zZXNzaW9uVW5yZWFkUGVyc2lzdGVuY2UudHMiXSwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgU1RPUkFHRV9QUkVGSVggPSAnbWFpYTpzZXNzaW9uczp1bnJlYWQnXG5cbmxldCBzY29wZUtleTogc3RyaW5nIHwgbnVsbCA9IG51bGxcblxuY29uc3QgY2FuVXNlU3RvcmFnZSA9ICgpOiBib29sZWFuID0+IHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnICYmIHR5cGVvZiBsb2NhbFN0b3JhZ2UgIT09ICd1bmRlZmluZWQnXG5cbmNvbnN0IHJlYWRTZXQgPSAoKTogU2V0PHN0cmluZz4gPT4ge1xuICBpZiAoIXNjb3BlS2V5IHx8ICFjYW5Vc2VTdG9yYWdlKCkpIHJldHVybiBuZXcgU2V0KClcblxuICB0cnkge1xuICAgIGNvbnN0IHJhdyA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKHNjb3BlS2V5KVxuICAgIGlmICghcmF3KSByZXR1cm4gbmV3IFNldCgpXG4gICAgY29uc3QgcGFyc2VkID0gSlNPTi5wYXJzZShyYXcpIGFzIHVua25vd25cbiAgICBpZiAoIUFycmF5LmlzQXJyYXkocGFyc2VkKSkgcmV0dXJuIG5ldyBTZXQoKVxuICAgIHJldHVybiBuZXcgU2V0KHBhcnNlZC5maWx0ZXIoKGlkKTogaWQgaXMgc3RyaW5nID0+IHR5cGVvZiBpZCA9PT0gJ3N0cmluZycgJiYgaWQubGVuZ3RoID4gMCkpXG4gIH0gY2F0Y2gge1xuICAgIHJldHVybiBuZXcgU2V0KClcbiAgfVxufVxuXG5jb25zdCB3cml0ZVNldCA9IChpZHM6IFNldDxzdHJpbmc+KTogdm9pZCA9PiB7XG4gIGlmICghc2NvcGVLZXkgfHwgIWNhblVzZVN0b3JhZ2UoKSkgcmV0dXJuXG4gIGxvY2FsU3RvcmFnZS5zZXRJdGVtKHNjb3BlS2V5LCBKU09OLnN0cmluZ2lmeShbLi4uaWRzXSkpXG59XG5cbi8qKiBTY29wZSBkZSBwZXJzaXN0ZW5jaWEgcG9yIHVzdWFyaW8gKGV2aXRhIG1lemNsYXIgdW5yZWFkIGVudHJlIGN1ZW50YXMgZW4gZWwgbWlzbW8gYnJvd3NlcikuICovXG5leHBvcnQgY29uc3QgaW5pdFNlc3Npb25VbnJlYWRQZXJzaXN0ZW5jZSA9ICh1c2VySWQ6IG51bWJlciwgY29tcGFueUlkOiBudW1iZXIpOiB2b2lkID0+IHtcbiAgc2NvcGVLZXkgPSBgJHtTVE9SQUdFX1BSRUZJWH06JHtjb21wYW55SWR9OiR7dXNlcklkfWBcbn1cblxuZXhwb3J0IGNvbnN0IGlzUGVyc2lzdGVkU2Vzc2lvblVucmVhZCA9IChzZXNzaW9uSWQ6IHN0cmluZyk6IGJvb2xlYW4gPT4gcmVhZFNldCgpLmhhcyhzZXNzaW9uSWQpXG5cbmV4cG9ydCBjb25zdCBnZXRQZXJzaXN0ZWRVbnJlYWRTZXNzaW9uSWRzID0gKCk6IHN0cmluZ1tdID0+IFsuLi5yZWFkU2V0KCldXG5cbmV4cG9ydCBjb25zdCBzZXRQZXJzaXN0ZWRTZXNzaW9uVW5yZWFkID0gKHNlc3Npb25JZDogc3RyaW5nLCB1bnJlYWQ6IGJvb2xlYW4pOiB2b2lkID0+IHtcbiAgaWYgKCFzZXNzaW9uSWQpIHJldHVyblxuICBjb25zdCBpZHMgPSByZWFkU2V0KClcbiAgaWYgKHVucmVhZCkge1xuICAgIGlkcy5hZGQoc2Vzc2lvbklkKVxuICB9IGVsc2Uge1xuICAgIGlkcy5kZWxldGUoc2Vzc2lvbklkKVxuICB9XG4gIHdyaXRlU2V0KGlkcylcbn1cblxuZXhwb3J0IGNvbnN0IHJlbW92ZVBlcnNpc3RlZFNlc3Npb25VbnJlYWQgPSAoc2Vzc2lvbklkOiBzdHJpbmcpOiB2b2lkID0+IHtcbiAgc2V0UGVyc2lzdGVkU2Vzc2lvblVucmVhZChzZXNzaW9uSWQsIGZhbHNlKVxufVxuIl0sIm1hcHBpbmdzIjoiO0FBQUEsSUFBTUEsY0FBYyxHQUFHLHNCQUFzQjtBQUU3QyxJQUFJQyxRQUF1QixHQUFHLElBQUk7QUFFbEMsSUFBTUMsYUFBYSxHQUFHLFNBQWhCQSxhQUFhQSxDQUFBO0VBQUEsT0FBa0IsT0FBT0MsTUFBTSxLQUFLLFdBQVcsSUFBSSxPQUFPQyxZQUFZLEtBQUssV0FBVztBQUFBO0FBRXpHLElBQU1DLE9BQU8sR0FBRyxTQUFWQSxPQUFPQSxDQUFBLEVBQXNCO0VBQ2pDLElBQUksQ0FBQ0osUUFBUSxJQUFJLENBQUNDLGFBQWEsQ0FBQyxDQUFDLEVBQUUsT0FBTyxJQUFJSSxHQUFHLENBQUMsQ0FBQztFQUVuRCxJQUFJO0lBQ0YsSUFBTUMsR0FBRyxHQUFHSCxZQUFZLENBQUNJLE9BQU8sQ0FBQ1AsUUFBUSxDQUFDO0lBQzFDLElBQUksQ0FBQ00sR0FBRyxFQUFFLE9BQU8sSUFBSUQsR0FBRyxDQUFDLENBQUM7SUFDMUIsSUFBTUcsTUFBTSxHQUFHQyxJQUFJLENBQUNDLEtBQUssQ0FBQ0osR0FBRyxDQUFZO0lBQ3pDLElBQUksQ0FBQ0ssS0FBSyxDQUFDQyxPQUFPLENBQUNKLE1BQU0sQ0FBQyxFQUFFLE9BQU8sSUFBSUgsR0FBRyxDQUFDLENBQUM7SUFDNUMsT0FBTyxJQUFJQSxHQUFHLENBQUNHLE1BQU0sQ0FBQ0ssTUFBTSxDQUFDLFVBQUNDLEVBQUU7TUFBQSxPQUFtQixPQUFPQSxFQUFFLEtBQUssUUFBUSxJQUFJQSxFQUFFLENBQUNDLE1BQU0sR0FBRyxDQUFDO0lBQUEsRUFBQyxDQUFDO0VBQzlGLENBQUMsQ0FBQyxPQUFBQyxPQUFBLEVBQU07SUFDTixPQUFPLElBQUlYLEdBQUcsQ0FBQyxDQUFDO0VBQ2xCO0FBQ0YsQ0FBQztBQUVELElBQU1ZLFFBQVEsR0FBRyxTQUFYQSxRQUFRQSxDQUFJQyxHQUFnQixFQUFXO0VBQzNDLElBQUksQ0FBQ2xCLFFBQVEsSUFBSSxDQUFDQyxhQUFhLENBQUMsQ0FBQyxFQUFFO0VBQ25DRSxZQUFZLENBQUNnQixPQUFPLENBQUNuQixRQUFRLEVBQUVTLElBQUksQ0FBQ1csU0FBUyxDQUFBQyxrQkFBQSxDQUFLSCxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQzFELENBQUM7O0FBRUQ7QUFDQSxPQUFPLElBQU1JLDRCQUE0QixHQUFHLFNBQS9CQSw0QkFBNEJBLENBQUlDLE1BQWMsRUFBRUMsU0FBaUIsRUFBVztFQUN2RnhCLFFBQVEsTUFBQXlCLE1BQUEsQ0FBTTFCLGNBQWMsT0FBQTBCLE1BQUEsQ0FBSUQsU0FBUyxPQUFBQyxNQUFBLENBQUlGLE1BQU0sQ0FBRTtBQUN2RCxDQUFDO0FBRUQsT0FBTyxJQUFNRyx3QkFBd0IsR0FBRyxTQUEzQkEsd0JBQXdCQSxDQUFJQyxTQUFpQjtFQUFBLE9BQWN2QixPQUFPLENBQUMsQ0FBQyxDQUFDd0IsR0FBRyxDQUFDRCxTQUFTLENBQUM7QUFBQTtBQUVoRyxPQUFPLElBQU1FLDRCQUE0QixHQUFHLFNBQS9CQSw0QkFBNEJBLENBQUE7RUFBQSxPQUFBUixrQkFBQSxDQUF1QmpCLE9BQU8sQ0FBQyxDQUFDO0FBQUEsQ0FBQztBQUUxRSxPQUFPLElBQU0wQix5QkFBeUIsR0FBRyxTQUE1QkEseUJBQXlCQSxDQUFJSCxTQUFpQixFQUFFSSxNQUFlLEVBQVc7RUFDckYsSUFBSSxDQUFDSixTQUFTLEVBQUU7RUFDaEIsSUFBTVQsR0FBRyxHQUFHZCxPQUFPLENBQUMsQ0FBQztFQUNyQixJQUFJMkIsTUFBTSxFQUFFO0lBQ1ZiLEdBQUcsQ0FBQ2MsR0FBRyxDQUFDTCxTQUFTLENBQUM7RUFDcEIsQ0FBQyxNQUFNO0lBQ0xULEdBQUcsVUFBTyxDQUFDUyxTQUFTLENBQUM7RUFDdkI7RUFDQVYsUUFBUSxDQUFDQyxHQUFHLENBQUM7QUFDZixDQUFDO0FBRUQsT0FBTyxJQUFNZSw0QkFBNEIsR0FBRyxTQUEvQkEsNEJBQTRCQSxDQUFJTixTQUFpQixFQUFXO0VBQ3ZFRyx5QkFBeUIsQ0FBQ0gsU0FBUyxFQUFFLEtBQUssQ0FBQztBQUM3QyxDQUFDIiwiaWdub3JlTGlzdCI6W119
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Estado de alto nivel de una sesión respecto al agente. Cada sesión
|
|
3
|
+
* (thread/chat) tiene su propio ciclo de vida independiente, lo que permite
|
|
4
|
+
* tener varias generando en paralelo.
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
/** Estados en los que la sesión está trabajando (mostramos indicador). */
|
|
8
|
+
export var ACTIVE_SESSION_STATUSES = ['thinking', 'writing', 'awaiting_approval'];
|
|
9
|
+
export var isActiveSessionStatus = function isActiveSessionStatus(status) {
|
|
10
|
+
return status != null && ACTIVE_SESSION_STATUSES.includes(status);
|
|
11
|
+
};
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* Metadata reactiva de una sesión (lo que la UI necesita para pintar estado,
|
|
15
|
+
* indicadores y notificaciones). El texto en vivo NO vive acá: viaja por
|
|
16
|
+
* `sessionStreamingText` para no re-renderizar listas en cada token.
|
|
17
|
+
*/
|
|
18
|
+
|
|
19
|
+
/** Snapshot del texto en streaming de una sesión (hot path). */
|
|
20
|
+
|
|
21
|
+
/** Payload consolidado que emite el manager al completar un stream. */
|
|
22
|
+
|
|
23
|
+
/**
|
|
24
|
+
* Callbacks por sesión para que `useChatManager` reaccione al ciclo de vida
|
|
25
|
+
* del stream sin acoplar la lógica de mensajes / side-effects al manager.
|
|
26
|
+
*/
|
|
27
|
+
|
|
28
|
+
/** Slice de mensajes por sesión (full store). */
|
|
29
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJBQ1RJVkVfU0VTU0lPTl9TVEFUVVNFUyIsImlzQWN0aXZlU2Vzc2lvblN0YXR1cyIsInN0YXR1cyIsImluY2x1ZGVzIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3N0b3JlL3Nlc3Npb25zL3Nlc3Npb25zLnR5cGVzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgQ2hhdE1lc3NhZ2UsIEFwcHJvdmFsUmVxdWVzdCB9IGZyb20gJy4uLy4uL3R5cGVzL0NoYXQnXG5pbXBvcnQgdHlwZSB7IFN0cmVhbUFjdGl2aXR5IH0gZnJvbSAnLi4vLi4vdHlwZXMvc3RyZWFtQWN0aXZpdHknXG5cbi8qKlxuICogRXN0YWRvIGRlIGFsdG8gbml2ZWwgZGUgdW5hIHNlc2nDs24gcmVzcGVjdG8gYWwgYWdlbnRlLiBDYWRhIHNlc2nDs25cbiAqICh0aHJlYWQvY2hhdCkgdGllbmUgc3UgcHJvcGlvIGNpY2xvIGRlIHZpZGEgaW5kZXBlbmRpZW50ZSwgbG8gcXVlIHBlcm1pdGVcbiAqIHRlbmVyIHZhcmlhcyBnZW5lcmFuZG8gZW4gcGFyYWxlbG8uXG4gKi9cbmV4cG9ydCB0eXBlIFNlc3Npb25TdGF0dXMgPSAnaWRsZScgfCAndGhpbmtpbmcnIHwgJ3dyaXRpbmcnIHwgJ2F3YWl0aW5nX2FwcHJvdmFsJyB8ICdjb21wbGV0ZScgfCAnZXJyb3InIHwgJ2NhbmNlbGxlZCdcblxuLyoqIEVzdGFkb3MgZW4gbG9zIHF1ZSBsYSBzZXNpw7NuIGVzdMOhIHRyYWJhamFuZG8gKG1vc3RyYW1vcyBpbmRpY2Fkb3IpLiAqL1xuZXhwb3J0IGNvbnN0IEFDVElWRV9TRVNTSU9OX1NUQVRVU0VTOiByZWFkb25seSBTZXNzaW9uU3RhdHVzW10gPSBbJ3RoaW5raW5nJywgJ3dyaXRpbmcnLCAnYXdhaXRpbmdfYXBwcm92YWwnXVxuXG5leHBvcnQgY29uc3QgaXNBY3RpdmVTZXNzaW9uU3RhdHVzID0gKHN0YXR1czogU2Vzc2lvblN0YXR1cyB8IHVuZGVmaW5lZCk6IGJvb2xlYW4gPT5cbiAgc3RhdHVzICE9IG51bGwgJiYgQUNUSVZFX1NFU1NJT05fU1RBVFVTRVMuaW5jbHVkZXMoc3RhdHVzKVxuXG5leHBvcnQgdHlwZSBTZXNzaW9uRXJyb3IgPSB7XG4gIHR5cGU/OiBzdHJpbmdcbiAgbWVzc2FnZT86IHN0cmluZ1xufSB8IG51bGxcblxuLyoqXG4gKiBNZXRhZGF0YSByZWFjdGl2YSBkZSB1bmEgc2VzacOzbiAobG8gcXVlIGxhIFVJIG5lY2VzaXRhIHBhcmEgcGludGFyIGVzdGFkbyxcbiAqIGluZGljYWRvcmVzIHkgbm90aWZpY2FjaW9uZXMpLiBFbCB0ZXh0byBlbiB2aXZvIE5PIHZpdmUgYWPDoTogdmlhamEgcG9yXG4gKiBgc2Vzc2lvblN0cmVhbWluZ1RleHRgIHBhcmEgbm8gcmUtcmVuZGVyaXphciBsaXN0YXMgZW4gY2FkYSB0b2tlbi5cbiAqL1xuZXhwb3J0IHR5cGUgU2Vzc2lvblJ1bnRpbWVNZXRhID0ge1xuICBzZXNzaW9uSWQ6IHN0cmluZ1xuICBzdGF0dXM6IFNlc3Npb25TdGF0dXNcbiAgLyoqIEZpZWwgYSBgc2V0TG9hZGluZ2AgZGVsIG1vdG9yIG9yaWdpbmFsOiBoYXkgdW5hIHJlcXVlc3QgZW4gdnVlbG8uICovXG4gIGlzTG9hZGluZzogYm9vbGVhblxuICAvKiogRmllbCBhIGBzZXRJc1dyaXRpbmdgOiB5YSBsbGVnYXJvbiB0b2tlbnMgeSBzZSBlc3TDoSBwaW50YW5kbyB0ZXh0by4gKi9cbiAgaXNXcml0aW5nOiBib29sZWFuXG4gIHN0cmVhbUFjdGl2aXR5OiBTdHJlYW1BY3Rpdml0eSB8IG51bGxcbiAgbG9hZGluZ01lc3NhZ2U6IHN0cmluZyB8IG51bGxcbiAgLyoqIElkIGRlbCBtZW5zYWplIHBsYWNlaG9sZGVyIHF1ZSBzZSBlc3TDoSBwaW50YW5kbyBtaWVudHJhcyBoYWNlIHN0cmVhbWluZy4gKi9cbiAgcGxhY2Vob2xkZXJJZDogc3RyaW5nIHwgbnVsbFxuICAvKiogTGEgc2VzacOzbiB0ZXJtaW7DsyBmdWVyYSBkZSBsYSB2aXN0YSBhY3RpdmEgeSBhw7puIG5vIHNlIGFicmnDsy4gKi9cbiAgdW5yZWFkOiBib29sZWFuXG4gIHN0YXJ0ZWRBdDogbnVtYmVyIHwgbnVsbFxuICBmaW5pc2hlZEF0OiBudW1iZXIgfCBudWxsXG4gIGFnZW50SWQ/OiBzdHJpbmcgfCBudW1iZXJcbiAgYWdlbnROYW1lPzogc3RyaW5nXG4gIHRpdGxlPzogc3RyaW5nIHwgbnVsbFxuICBlcnJvcjogU2Vzc2lvbkVycm9yXG59XG5cbi8qKiBTbmFwc2hvdCBkZWwgdGV4dG8gZW4gc3RyZWFtaW5nIGRlIHVuYSBzZXNpw7NuIChob3QgcGF0aCkuICovXG5leHBvcnQgdHlwZSBTZXNzaW9uU3RyZWFtaW5nU25hcHNob3QgPSB7XG4gIHBsYWNlaG9sZGVySWQ6IHN0cmluZyB8IG51bGxcbiAgdGV4dDogc3RyaW5nXG59XG5cbi8qKiBQYXlsb2FkIGNvbnNvbGlkYWRvIHF1ZSBlbWl0ZSBlbCBtYW5hZ2VyIGFsIGNvbXBsZXRhciB1biBzdHJlYW0uICovXG5leHBvcnQgdHlwZSBTZXNzaW9uRmluaXNoUGF5bG9hZCA9IHtcbiAgY29udGVudDogc3RyaW5nXG4gIHNvdXJjZXM6IHVua25vd25cbiAgbWVtb3J5U2Vzc2lvbklkOiBzdHJpbmdcbiAgYXR0YWNobWVudHM6IHVua25vd25bXSB8IG51bGxcbiAgc3VnZ2VzdGlvbnM6IHN0cmluZ1tdIHwgbnVsbFxuICBjb21wbGV0ZWRBZ2VudElkOiBzdHJpbmcgfCBudWxsXG4gIHJlc29sdmVkQ29udGV4dDogdW5rbm93blxufVxuXG4vKipcbiAqIENhbGxiYWNrcyBwb3Igc2VzacOzbiBwYXJhIHF1ZSBgdXNlQ2hhdE1hbmFnZXJgIHJlYWNjaW9uZSBhbCBjaWNsbyBkZSB2aWRhXG4gKiBkZWwgc3RyZWFtIHNpbiBhY29wbGFyIGxhIGzDs2dpY2EgZGUgbWVuc2FqZXMgLyBzaWRlLWVmZmVjdHMgYWwgbWFuYWdlci5cbiAqL1xuZXhwb3J0IHR5cGUgU2Vzc2lvblN0cmVhbUNhbGxiYWNrcyA9IHtcbiAgb25TdHJlYW1VcGRhdGU/OiAoY29udGVudDogc3RyaW5nKSA9PiB2b2lkXG4gIG9uU3RhcnRXcml0aW5nPzogKCkgPT4gdm9pZFxuICBvbkZpbmlzaFN0cmVhbT86IChwYXlsb2FkOiBTZXNzaW9uRmluaXNoUGF5bG9hZCkgPT4gdm9pZFxuICBvblN0b3A/OiAoKSA9PiB2b2lkXG4gIG9uRXJyb3I/OiAoZXJyb3JUeXBlPzogc3RyaW5nLCBlcnJvck1lc3NhZ2U/OiBzdHJpbmcpID0+IHZvaWRcbiAgb25BcHByb3ZhbFJlcXVpcmVkPzogKGFwcHJvdmFsOiBBcHByb3ZhbFJlcXVlc3QsIGFjY3VtdWxhdGVkQ29udGVudDogc3RyaW5nKSA9PiB2b2lkXG59XG5cbmV4cG9ydCB0eXBlIFN0YXJ0U3RyZWFtUmVzdWx0ID0geyBzdGFydGVkOiB0cnVlIH0gfCB7IHN0YXJ0ZWQ6IGZhbHNlOyByZWFzb246ICdsaW1pdCcgfCAnYWxyZWFkeV9hY3RpdmUnIH1cblxuLyoqIFNsaWNlIGRlIG1lbnNhamVzIHBvciBzZXNpw7NuIChmdWxsIHN0b3JlKS4gKi9cbmV4cG9ydCB0eXBlIFNlc3Npb25NZXNzYWdlc01hcCA9IFJlY29yZDxzdHJpbmcsIENoYXRNZXNzYWdlW10+XG4iXSwibWFwcGluZ3MiOiJBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBR0E7QUFDQSxPQUFPLElBQU1BLHVCQUFpRCxHQUFHLENBQUMsVUFBVSxFQUFFLFNBQVMsRUFBRSxtQkFBbUIsQ0FBQztBQUU3RyxPQUFPLElBQU1DLHFCQUFxQixHQUFHLFNBQXhCQSxxQkFBcUJBLENBQUlDLE1BQWlDO0VBQUEsT0FDckVBLE1BQU0sSUFBSSxJQUFJLElBQUlGLHVCQUF1QixDQUFDRyxRQUFRLENBQUNELE1BQU0sQ0FBQztBQUFBOztBQU81RDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQXNCQTs7QUFNQTs7QUFXQTtBQUNBO0FBQ0E7QUFDQTs7QUFZQSIsImlnbm9yZUxpc3QiOltdfQ==
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { useSessionsStore } from './useSessionsStore';
|
|
2
|
+
import { isActiveSessionStatus } from './sessions.types';
|
|
3
|
+
|
|
4
|
+
/** Metadata reactiva de una sesión (o undefined si no existe). */
|
|
5
|
+
export var useSessionMeta = function useSessionMeta(sessionId) {
|
|
6
|
+
return useSessionsStore(function (state) {
|
|
7
|
+
return sessionId ? state.meta[sessionId] : undefined;
|
|
8
|
+
});
|
|
9
|
+
};
|
|
10
|
+
|
|
11
|
+
/** Estado de streaming de la sesión activa, compatible con el motor anterior. */
|
|
12
|
+
export var useSessionStreamState = function useSessionStreamState(sessionId) {
|
|
13
|
+
var _meta$isLoading, _meta$isWriting, _meta$loadingMessage, _meta$streamActivity;
|
|
14
|
+
var meta = useSessionMeta(sessionId);
|
|
15
|
+
return {
|
|
16
|
+
isLoading: (_meta$isLoading = meta === null || meta === void 0 ? void 0 : meta.isLoading) !== null && _meta$isLoading !== void 0 ? _meta$isLoading : false,
|
|
17
|
+
isWriting: (_meta$isWriting = meta === null || meta === void 0 ? void 0 : meta.isWriting) !== null && _meta$isWriting !== void 0 ? _meta$isWriting : false,
|
|
18
|
+
loadingMessage: (_meta$loadingMessage = meta === null || meta === void 0 ? void 0 : meta.loadingMessage) !== null && _meta$loadingMessage !== void 0 ? _meta$loadingMessage : null,
|
|
19
|
+
streamActivity: (_meta$streamActivity = meta === null || meta === void 0 ? void 0 : meta.streamActivity) !== null && _meta$streamActivity !== void 0 ? _meta$streamActivity : null
|
|
20
|
+
};
|
|
21
|
+
};
|
|
22
|
+
|
|
23
|
+
/** Ids de sesiones que están generando (para indicadores / notificaciones). */
|
|
24
|
+
export var useActiveSessionIds = function useActiveSessionIds() {
|
|
25
|
+
return useSessionsStore(function (state) {
|
|
26
|
+
return Object.values(state.meta).filter(function (meta) {
|
|
27
|
+
return isActiveSessionStatus(meta.status);
|
|
28
|
+
}).map(function (meta) {
|
|
29
|
+
return meta.sessionId;
|
|
30
|
+
});
|
|
31
|
+
});
|
|
32
|
+
};
|
|
33
|
+
|
|
34
|
+
/** True si la sesión está generando (thinking / writing / awaiting approval). */
|
|
35
|
+
export var useIsSessionGenerating = function useIsSessionGenerating(sessionId) {
|
|
36
|
+
var meta = useSessionMeta(sessionId);
|
|
37
|
+
return isActiveSessionStatus(meta === null || meta === void 0 ? void 0 : meta.status);
|
|
38
|
+
};
|
|
39
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VTZXNzaW9uc1N0b3JlIiwiaXNBY3RpdmVTZXNzaW9uU3RhdHVzIiwidXNlU2Vzc2lvbk1ldGEiLCJzZXNzaW9uSWQiLCJzdGF0ZSIsIm1ldGEiLCJ1bmRlZmluZWQiLCJ1c2VTZXNzaW9uU3RyZWFtU3RhdGUiLCJfbWV0YSRpc0xvYWRpbmciLCJfbWV0YSRpc1dyaXRpbmciLCJfbWV0YSRsb2FkaW5nTWVzc2FnZSIsIl9tZXRhJHN0cmVhbUFjdGl2aXR5IiwiaXNMb2FkaW5nIiwiaXNXcml0aW5nIiwibG9hZGluZ01lc3NhZ2UiLCJzdHJlYW1BY3Rpdml0eSIsInVzZUFjdGl2ZVNlc3Npb25JZHMiLCJPYmplY3QiLCJ2YWx1ZXMiLCJmaWx0ZXIiLCJzdGF0dXMiLCJtYXAiLCJ1c2VJc1Nlc3Npb25HZW5lcmF0aW5nIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3N0b3JlL3Nlc3Npb25zL3VzZVNlc3Npb25NZXRhLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHVzZVNlc3Npb25zU3RvcmUgfSBmcm9tICcuL3VzZVNlc3Npb25zU3RvcmUnXG5pbXBvcnQgdHlwZSB7IFNlc3Npb25SdW50aW1lTWV0YSB9IGZyb20gJy4vc2Vzc2lvbnMudHlwZXMnXG5pbXBvcnQgeyBpc0FjdGl2ZVNlc3Npb25TdGF0dXMgfSBmcm9tICcuL3Nlc3Npb25zLnR5cGVzJ1xuXG4vKiogTWV0YWRhdGEgcmVhY3RpdmEgZGUgdW5hIHNlc2nDs24gKG8gdW5kZWZpbmVkIHNpIG5vIGV4aXN0ZSkuICovXG5leHBvcnQgY29uc3QgdXNlU2Vzc2lvbk1ldGEgPSAoc2Vzc2lvbklkOiBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkKTogU2Vzc2lvblJ1bnRpbWVNZXRhIHwgdW5kZWZpbmVkID0+XG4gIHVzZVNlc3Npb25zU3RvcmUoc3RhdGUgPT4gKHNlc3Npb25JZCA/IHN0YXRlLm1ldGFbc2Vzc2lvbklkXSA6IHVuZGVmaW5lZCkpXG5cbi8qKiBFc3RhZG8gZGUgc3RyZWFtaW5nIGRlIGxhIHNlc2nDs24gYWN0aXZhLCBjb21wYXRpYmxlIGNvbiBlbCBtb3RvciBhbnRlcmlvci4gKi9cbmV4cG9ydCBjb25zdCB1c2VTZXNzaW9uU3RyZWFtU3RhdGUgPSAoXG4gIHNlc3Npb25JZDogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZFxuKToge1xuICBpc0xvYWRpbmc6IGJvb2xlYW5cbiAgaXNXcml0aW5nOiBib29sZWFuXG4gIGxvYWRpbmdNZXNzYWdlOiBzdHJpbmcgfCBudWxsXG4gIHN0cmVhbUFjdGl2aXR5OiBTZXNzaW9uUnVudGltZU1ldGFbJ3N0cmVhbUFjdGl2aXR5J11cbn0gPT4ge1xuICBjb25zdCBtZXRhID0gdXNlU2Vzc2lvbk1ldGEoc2Vzc2lvbklkKVxuICByZXR1cm4ge1xuICAgIGlzTG9hZGluZzogbWV0YT8uaXNMb2FkaW5nID8/IGZhbHNlLFxuICAgIGlzV3JpdGluZzogbWV0YT8uaXNXcml0aW5nID8/IGZhbHNlLFxuICAgIGxvYWRpbmdNZXNzYWdlOiBtZXRhPy5sb2FkaW5nTWVzc2FnZSA/PyBudWxsLFxuICAgIHN0cmVhbUFjdGl2aXR5OiBtZXRhPy5zdHJlYW1BY3Rpdml0eSA/PyBudWxsLFxuICB9XG59XG5cbi8qKiBJZHMgZGUgc2VzaW9uZXMgcXVlIGVzdMOhbiBnZW5lcmFuZG8gKHBhcmEgaW5kaWNhZG9yZXMgLyBub3RpZmljYWNpb25lcykuICovXG5leHBvcnQgY29uc3QgdXNlQWN0aXZlU2Vzc2lvbklkcyA9ICgpOiBzdHJpbmdbXSA9PlxuICB1c2VTZXNzaW9uc1N0b3JlKHN0YXRlID0+XG4gICAgT2JqZWN0LnZhbHVlcyhzdGF0ZS5tZXRhKVxuICAgICAgLmZpbHRlcihtZXRhID0+IGlzQWN0aXZlU2Vzc2lvblN0YXR1cyhtZXRhLnN0YXR1cykpXG4gICAgICAubWFwKG1ldGEgPT4gbWV0YS5zZXNzaW9uSWQpXG4gIClcblxuLyoqIFRydWUgc2kgbGEgc2VzacOzbiBlc3TDoSBnZW5lcmFuZG8gKHRoaW5raW5nIC8gd3JpdGluZyAvIGF3YWl0aW5nIGFwcHJvdmFsKS4gKi9cbmV4cG9ydCBjb25zdCB1c2VJc1Nlc3Npb25HZW5lcmF0aW5nID0gKHNlc3Npb25JZDogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZCk6IGJvb2xlYW4gPT4ge1xuICBjb25zdCBtZXRhID0gdXNlU2Vzc2lvbk1ldGEoc2Vzc2lvbklkKVxuICByZXR1cm4gaXNBY3RpdmVTZXNzaW9uU3RhdHVzKG1ldGE/LnN0YXR1cylcbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUEsU0FBU0EsZ0JBQWdCLFFBQVEsb0JBQW9CO0FBRXJELFNBQVNDLHFCQUFxQixRQUFRLGtCQUFrQjs7QUFFeEQ7QUFDQSxPQUFPLElBQU1DLGNBQWMsR0FBRyxTQUFqQkEsY0FBY0EsQ0FBSUMsU0FBb0M7RUFBQSxPQUNqRUgsZ0JBQWdCLENBQUMsVUFBQUksS0FBSztJQUFBLE9BQUtELFNBQVMsR0FBR0MsS0FBSyxDQUFDQyxJQUFJLENBQUNGLFNBQVMsQ0FBQyxHQUFHRyxTQUFTO0VBQUEsQ0FBQyxDQUFDO0FBQUE7O0FBRTVFO0FBQ0EsT0FBTyxJQUFNQyxxQkFBcUIsR0FBRyxTQUF4QkEscUJBQXFCQSxDQUNoQ0osU0FBb0MsRUFNakM7RUFBQSxJQUFBSyxlQUFBLEVBQUFDLGVBQUEsRUFBQUMsb0JBQUEsRUFBQUMsb0JBQUE7RUFDSCxJQUFNTixJQUFJLEdBQUdILGNBQWMsQ0FBQ0MsU0FBUyxDQUFDO0VBQ3RDLE9BQU87SUFDTFMsU0FBUyxHQUFBSixlQUFBLEdBQUVILElBQUksYUFBSkEsSUFBSSx1QkFBSkEsSUFBSSxDQUFFTyxTQUFTLGNBQUFKLGVBQUEsY0FBQUEsZUFBQSxHQUFJLEtBQUs7SUFDbkNLLFNBQVMsR0FBQUosZUFBQSxHQUFFSixJQUFJLGFBQUpBLElBQUksdUJBQUpBLElBQUksQ0FBRVEsU0FBUyxjQUFBSixlQUFBLGNBQUFBLGVBQUEsR0FBSSxLQUFLO0lBQ25DSyxjQUFjLEdBQUFKLG9CQUFBLEdBQUVMLElBQUksYUFBSkEsSUFBSSx1QkFBSkEsSUFBSSxDQUFFUyxjQUFjLGNBQUFKLG9CQUFBLGNBQUFBLG9CQUFBLEdBQUksSUFBSTtJQUM1Q0ssY0FBYyxHQUFBSixvQkFBQSxHQUFFTixJQUFJLGFBQUpBLElBQUksdUJBQUpBLElBQUksQ0FBRVUsY0FBYyxjQUFBSixvQkFBQSxjQUFBQSxvQkFBQSxHQUFJO0VBQzFDLENBQUM7QUFDSCxDQUFDOztBQUVEO0FBQ0EsT0FBTyxJQUFNSyxtQkFBbUIsR0FBRyxTQUF0QkEsbUJBQW1CQSxDQUFBO0VBQUEsT0FDOUJoQixnQkFBZ0IsQ0FBQyxVQUFBSSxLQUFLO0lBQUEsT0FDcEJhLE1BQU0sQ0FBQ0MsTUFBTSxDQUFDZCxLQUFLLENBQUNDLElBQUksQ0FBQyxDQUN0QmMsTUFBTSxDQUFDLFVBQUFkLElBQUk7TUFBQSxPQUFJSixxQkFBcUIsQ0FBQ0ksSUFBSSxDQUFDZSxNQUFNLENBQUM7SUFBQSxFQUFDLENBQ2xEQyxHQUFHLENBQUMsVUFBQWhCLElBQUk7TUFBQSxPQUFJQSxJQUFJLENBQUNGLFNBQVM7SUFBQSxFQUFDO0VBQUEsQ0FDaEMsQ0FBQztBQUFBOztBQUVIO0FBQ0EsT0FBTyxJQUFNbUIsc0JBQXNCLEdBQUcsU0FBekJBLHNCQUFzQkEsQ0FBSW5CLFNBQW9DLEVBQWM7RUFDdkYsSUFBTUUsSUFBSSxHQUFHSCxjQUFjLENBQUNDLFNBQVMsQ0FBQztFQUN0QyxPQUFPRixxQkFBcUIsQ0FBQ0ksSUFBSSxhQUFKQSxJQUFJLHVCQUFKQSxJQUFJLENBQUVlLE1BQU0sQ0FBQztBQUM1QyxDQUFDIiwiaWdub3JlTGlzdCI6W119
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { useCallback, useSyncExternalStore } from 'react';
|
|
2
|
+
import { sessionStreamingText } from './sessionStreamingText';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Devuelve el texto en streaming de una sesión para un placeholder dado.
|
|
6
|
+
* Solo re-renderiza el componente del mensaje en streaming de esa sesión.
|
|
7
|
+
*/
|
|
8
|
+
export var useSessionStreamingText = function useSessionStreamingText(sessionId, placeholderId) {
|
|
9
|
+
var getSnapshot = useCallback(function () {
|
|
10
|
+
if (!sessionId) return sessionStreamingText.getServerSnapshot();
|
|
11
|
+
return sessionStreamingText.getSnapshot(sessionId);
|
|
12
|
+
}, [sessionId]);
|
|
13
|
+
var snapshot = useSyncExternalStore(sessionStreamingText.subscribe, getSnapshot, sessionStreamingText.getServerSnapshot);
|
|
14
|
+
if (!sessionId || !placeholderId) return '';
|
|
15
|
+
if (snapshot.placeholderId !== placeholderId) return '';
|
|
16
|
+
return snapshot.text;
|
|
17
|
+
};
|
|
18
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VDYWxsYmFjayIsInVzZVN5bmNFeHRlcm5hbFN0b3JlIiwic2Vzc2lvblN0cmVhbWluZ1RleHQiLCJ1c2VTZXNzaW9uU3RyZWFtaW5nVGV4dCIsInNlc3Npb25JZCIsInBsYWNlaG9sZGVySWQiLCJnZXRTbmFwc2hvdCIsImdldFNlcnZlclNuYXBzaG90Iiwic25hcHNob3QiLCJzdWJzY3JpYmUiLCJ0ZXh0Il0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3N0b3JlL3Nlc3Npb25zL3VzZVNlc3Npb25TdHJlYW1pbmdUZXh0LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHVzZUNhbGxiYWNrLCB1c2VTeW5jRXh0ZXJuYWxTdG9yZSB9IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgc2Vzc2lvblN0cmVhbWluZ1RleHQgfSBmcm9tICcuL3Nlc3Npb25TdHJlYW1pbmdUZXh0J1xuXG4vKipcbiAqIERldnVlbHZlIGVsIHRleHRvIGVuIHN0cmVhbWluZyBkZSB1bmEgc2VzacOzbiBwYXJhIHVuIHBsYWNlaG9sZGVyIGRhZG8uXG4gKiBTb2xvIHJlLXJlbmRlcml6YSBlbCBjb21wb25lbnRlIGRlbCBtZW5zYWplIGVuIHN0cmVhbWluZyBkZSBlc2Egc2VzacOzbi5cbiAqL1xuZXhwb3J0IGNvbnN0IHVzZVNlc3Npb25TdHJlYW1pbmdUZXh0ID0gKFxuICBzZXNzaW9uSWQ6IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQsXG4gIHBsYWNlaG9sZGVySWQ6IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWRcbik6IHN0cmluZyA9PiB7XG4gIGNvbnN0IGdldFNuYXBzaG90ID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIGlmICghc2Vzc2lvbklkKSByZXR1cm4gc2Vzc2lvblN0cmVhbWluZ1RleHQuZ2V0U2VydmVyU25hcHNob3QoKVxuICAgIHJldHVybiBzZXNzaW9uU3RyZWFtaW5nVGV4dC5nZXRTbmFwc2hvdChzZXNzaW9uSWQpXG4gIH0sIFtzZXNzaW9uSWRdKVxuXG4gIGNvbnN0IHNuYXBzaG90ID0gdXNlU3luY0V4dGVybmFsU3RvcmUoXG4gICAgc2Vzc2lvblN0cmVhbWluZ1RleHQuc3Vic2NyaWJlLFxuICAgIGdldFNuYXBzaG90LFxuICAgIHNlc3Npb25TdHJlYW1pbmdUZXh0LmdldFNlcnZlclNuYXBzaG90XG4gIClcblxuICBpZiAoIXNlc3Npb25JZCB8fCAhcGxhY2Vob2xkZXJJZCkgcmV0dXJuICcnXG4gIGlmIChzbmFwc2hvdC5wbGFjZWhvbGRlcklkICE9PSBwbGFjZWhvbGRlcklkKSByZXR1cm4gJydcbiAgcmV0dXJuIHNuYXBzaG90LnRleHRcbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUEsU0FBU0EsV0FBVyxFQUFFQyxvQkFBb0IsUUFBUSxPQUFPO0FBQ3pELFNBQVNDLG9CQUFvQixRQUFRLHdCQUF3Qjs7QUFFN0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPLElBQU1DLHVCQUF1QixHQUFHLFNBQTFCQSx1QkFBdUJBLENBQ2xDQyxTQUFvQyxFQUNwQ0MsYUFBd0MsRUFDN0I7RUFDWCxJQUFNQyxXQUFXLEdBQUdOLFdBQVcsQ0FBQyxZQUFNO0lBQ3BDLElBQUksQ0FBQ0ksU0FBUyxFQUFFLE9BQU9GLG9CQUFvQixDQUFDSyxpQkFBaUIsQ0FBQyxDQUFDO0lBQy9ELE9BQU9MLG9CQUFvQixDQUFDSSxXQUFXLENBQUNGLFNBQVMsQ0FBQztFQUNwRCxDQUFDLEVBQUUsQ0FBQ0EsU0FBUyxDQUFDLENBQUM7RUFFZixJQUFNSSxRQUFRLEdBQUdQLG9CQUFvQixDQUNuQ0Msb0JBQW9CLENBQUNPLFNBQVMsRUFDOUJILFdBQVcsRUFDWEosb0JBQW9CLENBQUNLLGlCQUN2QixDQUFDO0VBRUQsSUFBSSxDQUFDSCxTQUFTLElBQUksQ0FBQ0MsYUFBYSxFQUFFLE9BQU8sRUFBRTtFQUMzQyxJQUFJRyxRQUFRLENBQUNILGFBQWEsS0FBS0EsYUFBYSxFQUFFLE9BQU8sRUFBRTtFQUN2RCxPQUFPRyxRQUFRLENBQUNFLElBQUk7QUFDdEIsQ0FBQyIsImlnbm9yZUxpc3QiOltdfQ==
|
|
@@ -0,0 +1,195 @@
|
|
|
1
|
+
import _toConsumableArray from "@babel/runtime/helpers/toConsumableArray";
|
|
2
|
+
import _defineProperty from "@babel/runtime/helpers/defineProperty";
|
|
3
|
+
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
4
|
+
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
5
|
+
/* eslint-disable import/no-extraneous-dependencies */
|
|
6
|
+
import { create } from 'zustand';
|
|
7
|
+
import { isActiveSessionStatus } from './sessions.types';
|
|
8
|
+
import { getPersistedUnreadSessionIds, isPersistedSessionUnread, removePersistedSessionUnread, setPersistedSessionUnread } from './sessionUnreadPersistence';
|
|
9
|
+
var createInitialMeta = function createInitialMeta(sessionId) {
|
|
10
|
+
return {
|
|
11
|
+
sessionId: sessionId,
|
|
12
|
+
status: 'idle',
|
|
13
|
+
isLoading: false,
|
|
14
|
+
isWriting: false,
|
|
15
|
+
streamActivity: null,
|
|
16
|
+
loadingMessage: null,
|
|
17
|
+
placeholderId: null,
|
|
18
|
+
unread: false,
|
|
19
|
+
startedAt: null,
|
|
20
|
+
finishedAt: null,
|
|
21
|
+
error: null
|
|
22
|
+
};
|
|
23
|
+
};
|
|
24
|
+
export var useSessionsStore = create(function (set, get) {
|
|
25
|
+
return {
|
|
26
|
+
meta: {},
|
|
27
|
+
messages: {},
|
|
28
|
+
ensureSession: function ensureSession(sessionId) {
|
|
29
|
+
if (get().meta[sessionId]) return;
|
|
30
|
+
var initialMeta = createInitialMeta(sessionId);
|
|
31
|
+
if (isPersistedSessionUnread(sessionId)) {
|
|
32
|
+
initialMeta.unread = true;
|
|
33
|
+
}
|
|
34
|
+
set(function (state) {
|
|
35
|
+
return {
|
|
36
|
+
meta: _objectSpread(_objectSpread({}, state.meta), {}, _defineProperty({}, sessionId, initialMeta))
|
|
37
|
+
};
|
|
38
|
+
});
|
|
39
|
+
},
|
|
40
|
+
getMeta: function getMeta(sessionId) {
|
|
41
|
+
return get().meta[sessionId];
|
|
42
|
+
},
|
|
43
|
+
patchMeta: function patchMeta(sessionId, patch) {
|
|
44
|
+
return set(function (state) {
|
|
45
|
+
var _state$meta$sessionId;
|
|
46
|
+
var current = (_state$meta$sessionId = state.meta[sessionId]) !== null && _state$meta$sessionId !== void 0 ? _state$meta$sessionId : createInitialMeta(sessionId);
|
|
47
|
+
return {
|
|
48
|
+
meta: _objectSpread(_objectSpread({}, state.meta), {}, _defineProperty({}, sessionId, _objectSpread(_objectSpread({}, current), patch)))
|
|
49
|
+
};
|
|
50
|
+
});
|
|
51
|
+
},
|
|
52
|
+
setStatus: function setStatus(sessionId, status) {
|
|
53
|
+
return set(function (state) {
|
|
54
|
+
var _state$meta$sessionId2;
|
|
55
|
+
var current = (_state$meta$sessionId2 = state.meta[sessionId]) !== null && _state$meta$sessionId2 !== void 0 ? _state$meta$sessionId2 : createInitialMeta(sessionId);
|
|
56
|
+
var isTerminal = status === 'complete' || status === 'error' || status === 'cancelled';
|
|
57
|
+
return {
|
|
58
|
+
meta: _objectSpread(_objectSpread({}, state.meta), {}, _defineProperty({}, sessionId, _objectSpread(_objectSpread(_objectSpread({}, current), {}, {
|
|
59
|
+
status: status
|
|
60
|
+
}, status !== 'idle' && current.startedAt == null ? {
|
|
61
|
+
startedAt: Date.now()
|
|
62
|
+
} : {}), isTerminal ? {
|
|
63
|
+
finishedAt: Date.now()
|
|
64
|
+
} : {})))
|
|
65
|
+
};
|
|
66
|
+
});
|
|
67
|
+
},
|
|
68
|
+
setActivity: function setActivity(sessionId, activity, loadingMessage) {
|
|
69
|
+
return set(function (state) {
|
|
70
|
+
var _state$meta$sessionId3, _activity$message;
|
|
71
|
+
var current = (_state$meta$sessionId3 = state.meta[sessionId]) !== null && _state$meta$sessionId3 !== void 0 ? _state$meta$sessionId3 : createInitialMeta(sessionId);
|
|
72
|
+
return {
|
|
73
|
+
meta: _objectSpread(_objectSpread({}, state.meta), {}, _defineProperty({}, sessionId, _objectSpread(_objectSpread({}, current), {}, {
|
|
74
|
+
streamActivity: activity,
|
|
75
|
+
loadingMessage: loadingMessage !== undefined ? loadingMessage : (_activity$message = activity === null || activity === void 0 ? void 0 : activity.message) !== null && _activity$message !== void 0 ? _activity$message : null
|
|
76
|
+
})))
|
|
77
|
+
};
|
|
78
|
+
});
|
|
79
|
+
},
|
|
80
|
+
setError: function setError(sessionId, error) {
|
|
81
|
+
return set(function (state) {
|
|
82
|
+
var _state$meta$sessionId4;
|
|
83
|
+
var current = (_state$meta$sessionId4 = state.meta[sessionId]) !== null && _state$meta$sessionId4 !== void 0 ? _state$meta$sessionId4 : createInitialMeta(sessionId);
|
|
84
|
+
return {
|
|
85
|
+
meta: _objectSpread(_objectSpread({}, state.meta), {}, _defineProperty({}, sessionId, _objectSpread(_objectSpread({}, current), {}, {
|
|
86
|
+
error: error
|
|
87
|
+
})))
|
|
88
|
+
};
|
|
89
|
+
});
|
|
90
|
+
},
|
|
91
|
+
markUnread: function markUnread(sessionId, unread) {
|
|
92
|
+
setPersistedSessionUnread(sessionId, unread);
|
|
93
|
+
set(function (state) {
|
|
94
|
+
var _state$meta$sessionId5;
|
|
95
|
+
var current = (_state$meta$sessionId5 = state.meta[sessionId]) !== null && _state$meta$sessionId5 !== void 0 ? _state$meta$sessionId5 : createInitialMeta(sessionId);
|
|
96
|
+
return {
|
|
97
|
+
meta: _objectSpread(_objectSpread({}, state.meta), {}, _defineProperty({}, sessionId, _objectSpread(_objectSpread({}, current), {}, {
|
|
98
|
+
unread: unread
|
|
99
|
+
})))
|
|
100
|
+
};
|
|
101
|
+
});
|
|
102
|
+
},
|
|
103
|
+
hydratePersistedUnreadSessions: function hydratePersistedUnreadSessions() {
|
|
104
|
+
getPersistedUnreadSessionIds().forEach(function (sessionId) {
|
|
105
|
+
var existing = get().meta[sessionId];
|
|
106
|
+
if (existing) {
|
|
107
|
+
if (!existing.unread) {
|
|
108
|
+
set(function (state) {
|
|
109
|
+
return {
|
|
110
|
+
meta: _objectSpread(_objectSpread({}, state.meta), {}, _defineProperty({}, sessionId, _objectSpread(_objectSpread({}, existing), {}, {
|
|
111
|
+
unread: true
|
|
112
|
+
})))
|
|
113
|
+
};
|
|
114
|
+
});
|
|
115
|
+
}
|
|
116
|
+
return;
|
|
117
|
+
}
|
|
118
|
+
get().ensureSession(sessionId);
|
|
119
|
+
});
|
|
120
|
+
},
|
|
121
|
+
getActiveSessionIds: function getActiveSessionIds() {
|
|
122
|
+
return Object.values(get().meta).filter(function (meta) {
|
|
123
|
+
return isActiveSessionStatus(meta.status);
|
|
124
|
+
}).map(function (meta) {
|
|
125
|
+
return meta.sessionId;
|
|
126
|
+
});
|
|
127
|
+
},
|
|
128
|
+
getActiveCount: function getActiveCount() {
|
|
129
|
+
return Object.values(get().meta).filter(function (meta) {
|
|
130
|
+
return isActiveSessionStatus(meta.status);
|
|
131
|
+
}).length;
|
|
132
|
+
},
|
|
133
|
+
removeSession: function removeSession(sessionId) {
|
|
134
|
+
removePersistedSessionUnread(sessionId);
|
|
135
|
+
set(function (state) {
|
|
136
|
+
var nextMeta = _objectSpread({}, state.meta);
|
|
137
|
+
var nextMessages = _objectSpread({}, state.messages);
|
|
138
|
+
delete nextMeta[sessionId];
|
|
139
|
+
delete nextMessages[sessionId];
|
|
140
|
+
return {
|
|
141
|
+
meta: nextMeta,
|
|
142
|
+
messages: nextMessages
|
|
143
|
+
};
|
|
144
|
+
});
|
|
145
|
+
},
|
|
146
|
+
resetAll: function resetAll() {
|
|
147
|
+
return set({
|
|
148
|
+
meta: {},
|
|
149
|
+
messages: {}
|
|
150
|
+
});
|
|
151
|
+
},
|
|
152
|
+
setMessages: function setMessages(sessionId, messages) {
|
|
153
|
+
return set(function (state) {
|
|
154
|
+
return {
|
|
155
|
+
messages: _objectSpread(_objectSpread({}, state.messages), {}, _defineProperty({}, sessionId, messages))
|
|
156
|
+
};
|
|
157
|
+
});
|
|
158
|
+
},
|
|
159
|
+
getMessages: function getMessages(sessionId) {
|
|
160
|
+
var _get$messages$session;
|
|
161
|
+
return (_get$messages$session = get().messages[sessionId]) !== null && _get$messages$session !== void 0 ? _get$messages$session : [];
|
|
162
|
+
},
|
|
163
|
+
addMessage: function addMessage(sessionId, message) {
|
|
164
|
+
return set(function (state) {
|
|
165
|
+
var _state$messages$sessi;
|
|
166
|
+
var prev = (_state$messages$sessi = state.messages[sessionId]) !== null && _state$messages$sessi !== void 0 ? _state$messages$sessi : [];
|
|
167
|
+
var existingIndex = prev.findIndex(function (msg) {
|
|
168
|
+
return msg.id === message.id;
|
|
169
|
+
});
|
|
170
|
+
if (existingIndex >= 0) {
|
|
171
|
+
var next = _toConsumableArray(prev);
|
|
172
|
+
next[existingIndex] = message;
|
|
173
|
+
return {
|
|
174
|
+
messages: _objectSpread(_objectSpread({}, state.messages), {}, _defineProperty({}, sessionId, next))
|
|
175
|
+
};
|
|
176
|
+
}
|
|
177
|
+
return {
|
|
178
|
+
messages: _objectSpread(_objectSpread({}, state.messages), {}, _defineProperty({}, sessionId, [].concat(_toConsumableArray(prev), [message])))
|
|
179
|
+
};
|
|
180
|
+
});
|
|
181
|
+
},
|
|
182
|
+
removeMessage: function removeMessage(sessionId, messageId) {
|
|
183
|
+
return set(function (state) {
|
|
184
|
+
var prev = state.messages[sessionId];
|
|
185
|
+
if (!prev) return {};
|
|
186
|
+
return {
|
|
187
|
+
messages: _objectSpread(_objectSpread({}, state.messages), {}, _defineProperty({}, sessionId, prev.filter(function (msg) {
|
|
188
|
+
return msg.id !== messageId;
|
|
189
|
+
})))
|
|
190
|
+
};
|
|
191
|
+
});
|
|
192
|
+
}
|
|
193
|
+
};
|
|
194
|
+
});
|
|
195
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJjcmVhdGUiLCJpc0FjdGl2ZVNlc3Npb25TdGF0dXMiLCJnZXRQZXJzaXN0ZWRVbnJlYWRTZXNzaW9uSWRzIiwiaXNQZXJzaXN0ZWRTZXNzaW9uVW5yZWFkIiwicmVtb3ZlUGVyc2lzdGVkU2Vzc2lvblVucmVhZCIsInNldFBlcnNpc3RlZFNlc3Npb25VbnJlYWQiLCJjcmVhdGVJbml0aWFsTWV0YSIsInNlc3Npb25JZCIsInN0YXR1cyIsImlzTG9hZGluZyIsImlzV3JpdGluZyIsInN0cmVhbUFjdGl2aXR5IiwibG9hZGluZ01lc3NhZ2UiLCJwbGFjZWhvbGRlcklkIiwidW5yZWFkIiwic3RhcnRlZEF0IiwiZmluaXNoZWRBdCIsImVycm9yIiwidXNlU2Vzc2lvbnNTdG9yZSIsInNldCIsImdldCIsIm1ldGEiLCJtZXNzYWdlcyIsImVuc3VyZVNlc3Npb24iLCJpbml0aWFsTWV0YSIsInN0YXRlIiwiX29iamVjdFNwcmVhZCIsIl9kZWZpbmVQcm9wZXJ0eSIsImdldE1ldGEiLCJwYXRjaE1ldGEiLCJwYXRjaCIsIl9zdGF0ZSRtZXRhJHNlc3Npb25JZCIsImN1cnJlbnQiLCJzZXRTdGF0dXMiLCJfc3RhdGUkbWV0YSRzZXNzaW9uSWQyIiwiaXNUZXJtaW5hbCIsIkRhdGUiLCJub3ciLCJzZXRBY3Rpdml0eSIsImFjdGl2aXR5IiwiX3N0YXRlJG1ldGEkc2Vzc2lvbklkMyIsIl9hY3Rpdml0eSRtZXNzYWdlIiwidW5kZWZpbmVkIiwibWVzc2FnZSIsInNldEVycm9yIiwiX3N0YXRlJG1ldGEkc2Vzc2lvbklkNCIsIm1hcmtVbnJlYWQiLCJfc3RhdGUkbWV0YSRzZXNzaW9uSWQ1IiwiaHlkcmF0ZVBlcnNpc3RlZFVucmVhZFNlc3Npb25zIiwiZm9yRWFjaCIsImV4aXN0aW5nIiwiZ2V0QWN0aXZlU2Vzc2lvbklkcyIsIk9iamVjdCIsInZhbHVlcyIsImZpbHRlciIsIm1hcCIsImdldEFjdGl2ZUNvdW50IiwibGVuZ3RoIiwicmVtb3ZlU2Vzc2lvbiIsIm5leHRNZXRhIiwibmV4dE1lc3NhZ2VzIiwicmVzZXRBbGwiLCJzZXRNZXNzYWdlcyIsImdldE1lc3NhZ2VzIiwiX2dldCRtZXNzYWdlcyRzZXNzaW9uIiwiYWRkTWVzc2FnZSIsIl9zdGF0ZSRtZXNzYWdlcyRzZXNzaSIsInByZXYiLCJleGlzdGluZ0luZGV4IiwiZmluZEluZGV4IiwibXNnIiwiaWQiLCJuZXh0IiwiX3RvQ29uc3VtYWJsZUFycmF5IiwiY29uY2F0IiwicmVtb3ZlTWVzc2FnZSIsIm1lc3NhZ2VJZCJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9zdG9yZS9zZXNzaW9ucy91c2VTZXNzaW9uc1N0b3JlLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIGltcG9ydC9uby1leHRyYW5lb3VzLWRlcGVuZGVuY2llcyAqL1xuaW1wb3J0IHsgY3JlYXRlIH0gZnJvbSAnenVzdGFuZCdcbmltcG9ydCB0eXBlIHsgQ2hhdE1lc3NhZ2UgfSBmcm9tICcuLi8uLi90eXBlcy9DaGF0J1xuaW1wb3J0IHR5cGUgeyBTdHJlYW1BY3Rpdml0eSB9IGZyb20gJy4uLy4uL3R5cGVzL3N0cmVhbUFjdGl2aXR5J1xuaW1wb3J0IHR5cGUgeyBTZXNzaW9uRXJyb3IsIFNlc3Npb25NZXNzYWdlc01hcCwgU2Vzc2lvblJ1bnRpbWVNZXRhLCBTZXNzaW9uU3RhdHVzIH0gZnJvbSAnLi9zZXNzaW9ucy50eXBlcydcbmltcG9ydCB7IGlzQWN0aXZlU2Vzc2lvblN0YXR1cyB9IGZyb20gJy4vc2Vzc2lvbnMudHlwZXMnXG5pbXBvcnQge1xuICBnZXRQZXJzaXN0ZWRVbnJlYWRTZXNzaW9uSWRzLFxuICBpc1BlcnNpc3RlZFNlc3Npb25VbnJlYWQsXG4gIHJlbW92ZVBlcnNpc3RlZFNlc3Npb25VbnJlYWQsXG4gIHNldFBlcnNpc3RlZFNlc3Npb25VbnJlYWQsXG59IGZyb20gJy4vc2Vzc2lvblVucmVhZFBlcnNpc3RlbmNlJ1xuXG5jb25zdCBjcmVhdGVJbml0aWFsTWV0YSA9IChzZXNzaW9uSWQ6IHN0cmluZyk6IFNlc3Npb25SdW50aW1lTWV0YSA9PiAoe1xuICBzZXNzaW9uSWQsXG4gIHN0YXR1czogJ2lkbGUnLFxuICBpc0xvYWRpbmc6IGZhbHNlLFxuICBpc1dyaXRpbmc6IGZhbHNlLFxuICBzdHJlYW1BY3Rpdml0eTogbnVsbCxcbiAgbG9hZGluZ01lc3NhZ2U6IG51bGwsXG4gIHBsYWNlaG9sZGVySWQ6IG51bGwsXG4gIHVucmVhZDogZmFsc2UsXG4gIHN0YXJ0ZWRBdDogbnVsbCxcbiAgZmluaXNoZWRBdDogbnVsbCxcbiAgZXJyb3I6IG51bGwsXG59KVxuXG50eXBlIFNlc3Npb25zU3RhdGUgPSB7XG4gIC8qKiBNZXRhZGF0YSByZWFjdGl2YSBkZSBjYWRhIHNlc2nDs24gKGVzdGFkbywgYWN0aXZpZGFkLCB1bnJlYWQsIGV0Yy4pLiAqL1xuICBtZXRhOiBSZWNvcmQ8c3RyaW5nLCBTZXNzaW9uUnVudGltZU1ldGE+XG4gIC8qKiBNZW5zYWplcyBjb21taXRlYWRvcyBwb3Igc2VzacOzbiAoZnVsbCBzdG9yZSkuICovXG4gIG1lc3NhZ2VzOiBTZXNzaW9uTWVzc2FnZXNNYXBcbn1cblxudHlwZSBTZXNzaW9uc0FjdGlvbnMgPSB7XG4gIGVuc3VyZVNlc3Npb246IChzZXNzaW9uSWQ6IHN0cmluZykgPT4gdm9pZFxuICBnZXRNZXRhOiAoc2Vzc2lvbklkOiBzdHJpbmcpID0+IFNlc3Npb25SdW50aW1lTWV0YSB8IHVuZGVmaW5lZFxuICBwYXRjaE1ldGE6IChzZXNzaW9uSWQ6IHN0cmluZywgcGF0Y2g6IFBhcnRpYWw8U2Vzc2lvblJ1bnRpbWVNZXRhPikgPT4gdm9pZFxuICBzZXRTdGF0dXM6IChzZXNzaW9uSWQ6IHN0cmluZywgc3RhdHVzOiBTZXNzaW9uU3RhdHVzKSA9PiB2b2lkXG4gIHNldEFjdGl2aXR5OiAoc2Vzc2lvbklkOiBzdHJpbmcsIGFjdGl2aXR5OiBTdHJlYW1BY3Rpdml0eSB8IG51bGwsIGxvYWRpbmdNZXNzYWdlPzogc3RyaW5nIHwgbnVsbCkgPT4gdm9pZFxuICBzZXRFcnJvcjogKHNlc3Npb25JZDogc3RyaW5nLCBlcnJvcjogU2Vzc2lvbkVycm9yKSA9PiB2b2lkXG4gIG1hcmtVbnJlYWQ6IChzZXNzaW9uSWQ6IHN0cmluZywgdW5yZWFkOiBib29sZWFuKSA9PiB2b2lkXG4gIGh5ZHJhdGVQZXJzaXN0ZWRVbnJlYWRTZXNzaW9uczogKCkgPT4gdm9pZFxuICBnZXRBY3RpdmVTZXNzaW9uSWRzOiAoKSA9PiBzdHJpbmdbXVxuICBnZXRBY3RpdmVDb3VudDogKCkgPT4gbnVtYmVyXG4gIHJlbW92ZVNlc3Npb246IChzZXNzaW9uSWQ6IHN0cmluZykgPT4gdm9pZFxuICByZXNldEFsbDogKCkgPT4gdm9pZFxuXG4gIHNldE1lc3NhZ2VzOiAoc2Vzc2lvbklkOiBzdHJpbmcsIG1lc3NhZ2VzOiBDaGF0TWVzc2FnZVtdKSA9PiB2b2lkXG4gIGdldE1lc3NhZ2VzOiAoc2Vzc2lvbklkOiBzdHJpbmcpID0+IENoYXRNZXNzYWdlW11cbiAgYWRkTWVzc2FnZTogKHNlc3Npb25JZDogc3RyaW5nLCBtZXNzYWdlOiBDaGF0TWVzc2FnZSkgPT4gdm9pZFxuICByZW1vdmVNZXNzYWdlOiAoc2Vzc2lvbklkOiBzdHJpbmcsIG1lc3NhZ2VJZDogc3RyaW5nKSA9PiB2b2lkXG59XG5cbmV4cG9ydCBjb25zdCB1c2VTZXNzaW9uc1N0b3JlID0gY3JlYXRlPFNlc3Npb25zU3RhdGUgJiBTZXNzaW9uc0FjdGlvbnM+KChzZXQsIGdldCkgPT4gKHtcbiAgbWV0YToge30sXG4gIG1lc3NhZ2VzOiB7fSxcblxuICBlbnN1cmVTZXNzaW9uOiBzZXNzaW9uSWQgPT4ge1xuICAgIGlmIChnZXQoKS5tZXRhW3Nlc3Npb25JZF0pIHJldHVyblxuICAgIGNvbnN0IGluaXRpYWxNZXRhID0gY3JlYXRlSW5pdGlhbE1ldGEoc2Vzc2lvbklkKVxuICAgIGlmIChpc1BlcnNpc3RlZFNlc3Npb25VbnJlYWQoc2Vzc2lvbklkKSkge1xuICAgICAgaW5pdGlhbE1ldGEudW5yZWFkID0gdHJ1ZVxuICAgIH1cbiAgICBzZXQoc3RhdGUgPT4gKHsgbWV0YTogeyAuLi5zdGF0ZS5tZXRhLCBbc2Vzc2lvbklkXTogaW5pdGlhbE1ldGEgfSB9KSlcbiAgfSxcblxuICBnZXRNZXRhOiBzZXNzaW9uSWQgPT4gZ2V0KCkubWV0YVtzZXNzaW9uSWRdLFxuXG4gIHBhdGNoTWV0YTogKHNlc3Npb25JZCwgcGF0Y2gpID0+XG4gICAgc2V0KHN0YXRlID0+IHtcbiAgICAgIGNvbnN0IGN1cnJlbnQgPSBzdGF0ZS5tZXRhW3Nlc3Npb25JZF0gPz8gY3JlYXRlSW5pdGlhbE1ldGEoc2Vzc2lvbklkKVxuICAgICAgcmV0dXJuIHsgbWV0YTogeyAuLi5zdGF0ZS5tZXRhLCBbc2Vzc2lvbklkXTogeyAuLi5jdXJyZW50LCAuLi5wYXRjaCB9IH0gfVxuICAgIH0pLFxuXG4gIHNldFN0YXR1czogKHNlc3Npb25JZCwgc3RhdHVzKSA9PlxuICAgIHNldChzdGF0ZSA9PiB7XG4gICAgICBjb25zdCBjdXJyZW50ID0gc3RhdGUubWV0YVtzZXNzaW9uSWRdID8/IGNyZWF0ZUluaXRpYWxNZXRhKHNlc3Npb25JZClcbiAgICAgIGNvbnN0IGlzVGVybWluYWwgPSBzdGF0dXMgPT09ICdjb21wbGV0ZScgfHwgc3RhdHVzID09PSAnZXJyb3InIHx8IHN0YXR1cyA9PT0gJ2NhbmNlbGxlZCdcbiAgICAgIHJldHVybiB7XG4gICAgICAgIG1ldGE6IHtcbiAgICAgICAgICAuLi5zdGF0ZS5tZXRhLFxuICAgICAgICAgIFtzZXNzaW9uSWRdOiB7XG4gICAgICAgICAgICAuLi5jdXJyZW50LFxuICAgICAgICAgICAgc3RhdHVzLFxuICAgICAgICAgICAgLi4uKHN0YXR1cyAhPT0gJ2lkbGUnICYmIGN1cnJlbnQuc3RhcnRlZEF0ID09IG51bGwgPyB7IHN0YXJ0ZWRBdDogRGF0ZS5ub3coKSB9IDoge30pLFxuICAgICAgICAgICAgLi4uKGlzVGVybWluYWwgPyB7IGZpbmlzaGVkQXQ6IERhdGUubm93KCkgfSA6IHt9KSxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgfVxuICAgIH0pLFxuXG4gIHNldEFjdGl2aXR5OiAoc2Vzc2lvbklkLCBhY3Rpdml0eSwgbG9hZGluZ01lc3NhZ2UpID0+XG4gICAgc2V0KHN0YXRlID0+IHtcbiAgICAgIGNvbnN0IGN1cnJlbnQgPSBzdGF0ZS5tZXRhW3Nlc3Npb25JZF0gPz8gY3JlYXRlSW5pdGlhbE1ldGEoc2Vzc2lvbklkKVxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgbWV0YToge1xuICAgICAgICAgIC4uLnN0YXRlLm1ldGEsXG4gICAgICAgICAgW3Nlc3Npb25JZF06IHtcbiAgICAgICAgICAgIC4uLmN1cnJlbnQsXG4gICAgICAgICAgICBzdHJlYW1BY3Rpdml0eTogYWN0aXZpdHksXG4gICAgICAgICAgICBsb2FkaW5nTWVzc2FnZTogbG9hZGluZ01lc3NhZ2UgIT09IHVuZGVmaW5lZCA/IGxvYWRpbmdNZXNzYWdlIDogKGFjdGl2aXR5Py5tZXNzYWdlID8/IG51bGwpLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICB9XG4gICAgfSksXG5cbiAgc2V0RXJyb3I6IChzZXNzaW9uSWQsIGVycm9yKSA9PlxuICAgIHNldChzdGF0ZSA9PiB7XG4gICAgICBjb25zdCBjdXJyZW50ID0gc3RhdGUubWV0YVtzZXNzaW9uSWRdID8/IGNyZWF0ZUluaXRpYWxNZXRhKHNlc3Npb25JZClcbiAgICAgIHJldHVybiB7IG1ldGE6IHsgLi4uc3RhdGUubWV0YSwgW3Nlc3Npb25JZF06IHsgLi4uY3VycmVudCwgZXJyb3IgfSB9IH1cbiAgICB9KSxcblxuICBtYXJrVW5yZWFkOiAoc2Vzc2lvbklkLCB1bnJlYWQpID0+IHtcbiAgICBzZXRQZXJzaXN0ZWRTZXNzaW9uVW5yZWFkKHNlc3Npb25JZCwgdW5yZWFkKVxuICAgIHNldChzdGF0ZSA9PiB7XG4gICAgICBjb25zdCBjdXJyZW50ID0gc3RhdGUubWV0YVtzZXNzaW9uSWRdID8/IGNyZWF0ZUluaXRpYWxNZXRhKHNlc3Npb25JZClcbiAgICAgIHJldHVybiB7IG1ldGE6IHsgLi4uc3RhdGUubWV0YSwgW3Nlc3Npb25JZF06IHsgLi4uY3VycmVudCwgdW5yZWFkIH0gfSB9XG4gICAgfSlcbiAgfSxcblxuICBoeWRyYXRlUGVyc2lzdGVkVW5yZWFkU2Vzc2lvbnM6ICgpID0+IHtcbiAgICBnZXRQZXJzaXN0ZWRVbnJlYWRTZXNzaW9uSWRzKCkuZm9yRWFjaChzZXNzaW9uSWQgPT4ge1xuICAgICAgY29uc3QgZXhpc3RpbmcgPSBnZXQoKS5tZXRhW3Nlc3Npb25JZF1cbiAgICAgIGlmIChleGlzdGluZykge1xuICAgICAgICBpZiAoIWV4aXN0aW5nLnVucmVhZCkge1xuICAgICAgICAgIHNldChzdGF0ZSA9PiAoe1xuICAgICAgICAgICAgbWV0YToge1xuICAgICAgICAgICAgICAuLi5zdGF0ZS5tZXRhLFxuICAgICAgICAgICAgICBbc2Vzc2lvbklkXTogeyAuLi5leGlzdGluZywgdW5yZWFkOiB0cnVlIH0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0pKVxuICAgICAgICB9XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuICAgICAgZ2V0KCkuZW5zdXJlU2Vzc2lvbihzZXNzaW9uSWQpXG4gICAgfSlcbiAgfSxcblxuICBnZXRBY3RpdmVTZXNzaW9uSWRzOiAoKSA9PlxuICAgIE9iamVjdC52YWx1ZXMoZ2V0KCkubWV0YSlcbiAgICAgIC5maWx0ZXIobWV0YSA9PiBpc0FjdGl2ZVNlc3Npb25TdGF0dXMobWV0YS5zdGF0dXMpKVxuICAgICAgLm1hcChtZXRhID0+IG1ldGEuc2Vzc2lvbklkKSxcblxuICBnZXRBY3RpdmVDb3VudDogKCkgPT4gT2JqZWN0LnZhbHVlcyhnZXQoKS5tZXRhKS5maWx0ZXIobWV0YSA9PiBpc0FjdGl2ZVNlc3Npb25TdGF0dXMobWV0YS5zdGF0dXMpKS5sZW5ndGgsXG5cbiAgcmVtb3ZlU2Vzc2lvbjogc2Vzc2lvbklkID0+IHtcbiAgICByZW1vdmVQZXJzaXN0ZWRTZXNzaW9uVW5yZWFkKHNlc3Npb25JZClcbiAgICBzZXQoc3RhdGUgPT4ge1xuICAgICAgY29uc3QgbmV4dE1ldGEgPSB7IC4uLnN0YXRlLm1ldGEgfVxuICAgICAgY29uc3QgbmV4dE1lc3NhZ2VzID0geyAuLi5zdGF0ZS5tZXNzYWdlcyB9XG4gICAgICBkZWxldGUgbmV4dE1ldGFbc2Vzc2lvbklkXVxuICAgICAgZGVsZXRlIG5leHRNZXNzYWdlc1tzZXNzaW9uSWRdXG4gICAgICByZXR1cm4geyBtZXRhOiBuZXh0TWV0YSwgbWVzc2FnZXM6IG5leHRNZXNzYWdlcyB9XG4gICAgfSlcbiAgfSxcblxuICByZXNldEFsbDogKCkgPT4gc2V0KHsgbWV0YToge30sIG1lc3NhZ2VzOiB7fSB9KSxcblxuICBzZXRNZXNzYWdlczogKHNlc3Npb25JZCwgbWVzc2FnZXMpID0+IHNldChzdGF0ZSA9PiAoeyBtZXNzYWdlczogeyAuLi5zdGF0ZS5tZXNzYWdlcywgW3Nlc3Npb25JZF06IG1lc3NhZ2VzIH0gfSkpLFxuXG4gIGdldE1lc3NhZ2VzOiBzZXNzaW9uSWQgPT4gZ2V0KCkubWVzc2FnZXNbc2Vzc2lvbklkXSA/PyBbXSxcblxuICBhZGRNZXNzYWdlOiAoc2Vzc2lvbklkLCBtZXNzYWdlKSA9PlxuICAgIHNldChzdGF0ZSA9PiB7XG4gICAgICBjb25zdCBwcmV2ID0gc3RhdGUubWVzc2FnZXNbc2Vzc2lvbklkXSA/PyBbXVxuICAgICAgY29uc3QgZXhpc3RpbmdJbmRleCA9IHByZXYuZmluZEluZGV4KG1zZyA9PiBtc2cuaWQgPT09IG1lc3NhZ2UuaWQpXG4gICAgICBpZiAoZXhpc3RpbmdJbmRleCA+PSAwKSB7XG4gICAgICAgIGNvbnN0IG5leHQgPSBbLi4ucHJldl1cbiAgICAgICAgbmV4dFtleGlzdGluZ0luZGV4XSA9IG1lc3NhZ2VcbiAgICAgICAgcmV0dXJuIHsgbWVzc2FnZXM6IHsgLi4uc3RhdGUubWVzc2FnZXMsIFtzZXNzaW9uSWRdOiBuZXh0IH0gfVxuICAgICAgfVxuICAgICAgcmV0dXJuIHsgbWVzc2FnZXM6IHsgLi4uc3RhdGUubWVzc2FnZXMsIFtzZXNzaW9uSWRdOiBbLi4ucHJldiwgbWVzc2FnZV0gfSB9XG4gICAgfSksXG5cbiAgcmVtb3ZlTWVzc2FnZTogKHNlc3Npb25JZCwgbWVzc2FnZUlkKSA9PlxuICAgIHNldChzdGF0ZSA9PiB7XG4gICAgICBjb25zdCBwcmV2ID0gc3RhdGUubWVzc2FnZXNbc2Vzc2lvbklkXVxuICAgICAgaWYgKCFwcmV2KSByZXR1cm4ge31cbiAgICAgIHJldHVybiB7IG1lc3NhZ2VzOiB7IC4uLnN0YXRlLm1lc3NhZ2VzLCBbc2Vzc2lvbklkXTogcHJldi5maWx0ZXIobXNnID0+IG1zZy5pZCAhPT0gbWVzc2FnZUlkKSB9IH1cbiAgICB9KSxcbn0pKVxuIl0sIm1hcHBpbmdzIjoiOzs7O0FBQUE7QUFDQSxTQUFTQSxNQUFNLFFBQVEsU0FBUztBQUloQyxTQUFTQyxxQkFBcUIsUUFBUSxrQkFBa0I7QUFDeEQsU0FDRUMsNEJBQTRCLEVBQzVCQyx3QkFBd0IsRUFDeEJDLDRCQUE0QixFQUM1QkMseUJBQXlCLFFBQ3BCLDRCQUE0QjtBQUVuQyxJQUFNQyxpQkFBaUIsR0FBRyxTQUFwQkEsaUJBQWlCQSxDQUFJQyxTQUFpQjtFQUFBLE9BQTBCO0lBQ3BFQSxTQUFTLEVBQVRBLFNBQVM7SUFDVEMsTUFBTSxFQUFFLE1BQU07SUFDZEMsU0FBUyxFQUFFLEtBQUs7SUFDaEJDLFNBQVMsRUFBRSxLQUFLO0lBQ2hCQyxjQUFjLEVBQUUsSUFBSTtJQUNwQkMsY0FBYyxFQUFFLElBQUk7SUFDcEJDLGFBQWEsRUFBRSxJQUFJO0lBQ25CQyxNQUFNLEVBQUUsS0FBSztJQUNiQyxTQUFTLEVBQUUsSUFBSTtJQUNmQyxVQUFVLEVBQUUsSUFBSTtJQUNoQkMsS0FBSyxFQUFFO0VBQ1QsQ0FBQztBQUFBLENBQUM7QUE2QkYsT0FBTyxJQUFNQyxnQkFBZ0IsR0FBR2xCLE1BQU0sQ0FBa0MsVUFBQ21CLEdBQUcsRUFBRUMsR0FBRztFQUFBLE9BQU07SUFDckZDLElBQUksRUFBRSxDQUFDLENBQUM7SUFDUkMsUUFBUSxFQUFF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
|
|
@@ -8,6 +8,7 @@ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t =
|
|
|
8
8
|
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
9
9
|
import { create } from 'zustand';
|
|
10
10
|
import maia from '../services/maia';
|
|
11
|
+
import { removePersistedSessionUnread } from './sessions/sessionUnreadPersistence';
|
|
11
12
|
var DEFAULT_LIMIT = 20;
|
|
12
13
|
var initialState = {
|
|
13
14
|
chats: [],
|
|
@@ -148,6 +149,7 @@ export var useChatsStore = create(function (set, get) {
|
|
|
148
149
|
userId: userId
|
|
149
150
|
});
|
|
150
151
|
case 2:
|
|
152
|
+
removePersistedSessionUnread(chatId);
|
|
151
153
|
set(function (state) {
|
|
152
154
|
return {
|
|
153
155
|
chats: state.chats.filter(function (chat) {
|
|
@@ -247,4 +249,4 @@ export var useChatsStore = create(function (set, get) {
|
|
|
247
249
|
export var getChatsStoreState = function getChatsStoreState() {
|
|
248
250
|
return useChatsStore.getState();
|
|
249
251
|
};
|
|
250
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJjcmVhdGUiLCJtYWlhIiwiREVGQVVMVF9MSU1JVCIsImluaXRpYWxTdGF0ZSIsImNoYXRzIiwibG9hZGluZ0NoYXRzIiwiaXNMb2FkaW5nTW9yZUNoYXRzIiwibmV4dE9mZnNldCIsImxpbWl0Iiwib2Zmc2V0IiwibW91bnRDb3VudCIsInVzZUNoYXRzU3RvcmUiLCJzZXQiLCJnZXQiLCJfb2JqZWN0U3ByZWFkIiwiZmV0Y2hDaGF0cyIsIl9mZXRjaENoYXRzIiwiX2FzeW5jVG9HZW5lcmF0b3IiLCJfcmVnZW5lcmF0b3JSdW50aW1lIiwibWFyayIsIl9jYWxsZWUiLCJfcmVmIiwiYWdlbnQiLCJzZWN0aW9uIiwiX3JlZiRsaW1pdCIsIl9yZWYkb2Zmc2V0Iiwib25FcnJvciIsImxhbmciLCJfeWllbGQkbWFpYSRDaGF0cyRnZXQiLCJpdGVtcyIsIm5leHRJdGVtIiwiaGFzTW9yZSIsIl90Iiwid3JhcCIsIl9jb250ZXh0IiwicHJldiIsIm5leHQiLCJDaGF0cyIsImdldENoYXRzQnlVc2VySWQiLCJzZW50IiwiTnVtYmVyIiwiY29uc29sZSIsImVycm9yIiwic3RvcCIsIl94IiwiYXBwbHkiLCJhcmd1bWVudHMiLCJsb2FkTW9yZUNoYXRzIiwiX2xvYWRNb3JlQ2hhdHMiLCJfY2FsbGVlMiIsIl9yZWYyIiwiX2dldCIsIl95aWVsZCRtYWlhJENoYXRzJGdldDIiLCJuZXdOZXh0T2Zmc2V0IiwiX3QyIiwiX2NvbnRleHQyIiwiYWJydXB0Iiwic3RhdGUiLCJjb25jYXQiLCJfdG9Db25zdW1hYmxlQXJyYXkiLCJfeDIiLCJkZWxldGVDaGF0IiwiX2RlbGV0ZUNoYXQiLCJfY2FsbGVlMyIsIl9yZWYzIiwiY2hhdElkIiwidXNlcklkIiwiX3QzIiwiX2NvbnRleHQzIiwiZmlsdGVyIiwiY2hhdCIsInNlc3Npb25FeHRlcm5hbElkIiwiX3gzIiwidXBkYXRlQ2hhdCIsIl91cGRhdGVDaGF0IiwiX2NhbGxlZTQiLCJfcmVmNCIsIl9jdXJyZW50JHRpdGxlIiwiY3VycmVudCIsImxhc3RRdWVzdGlvbiIsIl90NCIsIl9jb250ZXh0NCIsImZpbmQiLCJjIiwiaWQiLCJ0aXRsZSIsInBhdGNoQ2hhdCIsIm1hcCIsIl94NCIsInJlc2V0IiwiYWNxdWlyZSIsInJlbGVhc2UiLCJuZXdDb3VudCIsIk1hdGgiLCJtYXgiLCJnZXRDaGF0c1N0b3JlU3RhdGUiLCJnZXRTdGF0ZSJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zdG9yZS91c2VDaGF0c1N0b3JlLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIGltcG9ydC9uby1leHRyYW5lb3VzLWRlcGVuZGVuY2llcyAqL1xuLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueSAqL1xuaW1wb3J0IHsgY3JlYXRlIH0gZnJvbSAnenVzdGFuZCdcbmltcG9ydCBtYWlhIGZyb20gJy4uL3NlcnZpY2VzL21haWEnXG5pbXBvcnQgdHlwZSB7IENoYXRMaXN0SXRlbSwgRmV0Y2hDaGF0c1BhcmFtcywgTG9hZE1vcmVDaGF0c1BhcmFtcywgRGVsZXRlQ2hhdFBhcmFtcyB9IGZyb20gJy4vY2hhdHNTdG9yZS50eXBlcydcblxuY29uc3QgREVGQVVMVF9MSU1JVCA9IDIwXG5cbnR5cGUgQ2hhdHNTdGF0ZSA9IHtcbiAgY2hhdHM6IENoYXRMaXN0SXRlbVtdXG4gIGxvYWRpbmdDaGF0czogYm9vbGVhblxuICBpc0xvYWRpbmdNb3JlQ2hhdHM6IGJvb2xlYW5cbiAgbmV4dE9mZnNldDogbnVtYmVyIHwgbnVsbFxuICBsaW1pdDogbnVtYmVyXG4gIG9mZnNldDogbnVtYmVyXG4gIG1vdW50Q291bnQ6IG51bWJlclxufVxuXG50eXBlIENoYXRzQWN0aW9ucyA9IHtcbiAgZmV0Y2hDaGF0czogKHBhcmFtczogRmV0Y2hDaGF0c1BhcmFtcykgPT4gUHJvbWlzZTx2b2lkPlxuICBsb2FkTW9yZUNoYXRzOiAocGFyYW1zOiBMb2FkTW9yZUNoYXRzUGFyYW1zKSA9PiBQcm9taXNlPHZvaWQ+XG4gIGRlbGV0ZUNoYXQ6IChwYXJhbXM6IERlbGV0ZUNoYXRQYXJhbXMpID0+IFByb21pc2U8Ym9vbGVhbj5cbiAgdXBkYXRlQ2hhdDogKGNoYXQ6IFBhcnRpYWw8Q2hhdExpc3RJdGVtPiAmIHsgc2Vzc2lvbkV4dGVybmFsSWQ6IHN0cmluZzsgaWQ6IHN0cmluZyB9KSA9PiBQcm9taXNlPGJvb2xlYW4+XG4gIHJlc2V0OiAoKSA9PiB2b2lkXG4gIGFjcXVpcmU6ICgpID0+IHZvaWRcbiAgcmVsZWFzZTogKCkgPT4gdm9pZFxufVxuXG5jb25zdCBpbml0aWFsU3RhdGU6IENoYXRzU3RhdGUgPSB7XG4gIGNoYXRzOiBbXSxcbiAgbG9hZGluZ0NoYXRzOiB0cnVlLFxuICBpc0xvYWRpbmdNb3JlQ2hhdHM6IGZhbHNlLFxuICBuZXh0T2Zmc2V0OiBudWxsLFxuICBsaW1pdDogREVGQVVMVF9MSU1JVCxcbiAgb2Zmc2V0OiAwLFxuICBtb3VudENvdW50OiAwLFxufVxuXG5leHBvcnQgY29uc3QgdXNlQ2hhdHNTdG9yZSA9IGNyZWF0ZTxDaGF0c1N0YXRlICYgQ2hhdHNBY3Rpb25zPigoc2V0LCBnZXQpID0+ICh7XG4gIC4uLmluaXRpYWxTdGF0ZSxcblxuICBmZXRjaENoYXRzOiBhc3luYyAoeyBhZ2VudCwgc2VjdGlvbiwgbGltaXQgPSBERUZBVUxUX0xJTUlULCBvZmZzZXQgPSAwLCBvbkVycm9yLCBsYW5nIH0pID0+IHtcbiAgICBzZXQoeyBsb2FkaW5nQ2hhdHM6IHRydWUgfSlcbiAgICB0cnkge1xuICAgICAgY29uc3QgeyBpdGVtcywgbmV4dEl0ZW0sIGhhc01vcmUgfSA9IGF3YWl0IG1haWEuQ2hhdHMuZ2V0Q2hhdHNCeVVzZXJJZCh7XG4gICAgICAgIGFnZW50LFxuICAgICAgICBzZWN0aW9uLFxuICAgICAgICBsaW1pdCxcbiAgICAgICAgb2Zmc2V0LFxuICAgICAgICBsYW5nLFxuICAgICAgfSlcbiAgICAgIGNvbnN0IG5leHRPZmZzZXQgPSBoYXNNb3JlICYmIG5leHRJdGVtID8gTnVtYmVyKG5leHRJdGVtKSA6IG51bGxcbiAgICAgIHNldCh7XG4gICAgICAgIGNoYXRzOiBpdGVtcyBhcyBDaGF0TGlzdEl0ZW1bXSxcbiAgICAgICAgbG9hZGluZ0NoYXRzOiBmYWxzZSxcbiAgICAgICAgbmV4dE9mZnNldCxcbiAgICAgICAgbGltaXQsXG4gICAgICAgIG9mZnNldDogbmV4dE9mZnNldCA/PyAwLFxuICAgICAgfSlcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgY29uc29sZS5lcnJvcignRXJyb3IgZmV0Y2hpbmcgY2hhdHM6JywgZXJyb3IpXG4gICAgICBzZXQoeyBsb2FkaW5nQ2hhdHM6IGZhbHNlIH0pXG4gICAgICBvbkVycm9yPy4oKVxuICAgIH1cbiAgfSxcblxuICBsb2FkTW9yZUNoYXRzOiBhc3luYyAoeyBhZ2VudCwgc2VjdGlvbiwgb25FcnJvciwgbGFuZyB9KSA9PiB7XG4gICAgY29uc3QgeyBuZXh0T2Zmc2V0LCBsaW1pdCwgaXNMb2FkaW5nTW9yZUNoYXRzIH0gPSBnZXQoKVxuICAgIGlmIChuZXh0T2Zmc2V0ID09PSBudWxsIHx8IGlzTG9hZGluZ01vcmVDaGF0cykgcmV0dXJuXG4gICAgc2V0KHsgaXNMb2FkaW5nTW9yZUNoYXRzOiB0cnVlIH0pXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHsgaXRlbXMsIG5leHRJdGVtLCBoYXNNb3JlIH0gPSBhd2FpdCBtYWlhLkNoYXRzLmdldENoYXRzQnlVc2VySWQoe1xuICAgICAgICBhZ2VudCxcbiAgICAgICAgc2VjdGlvbixcbiAgICAgICAgbGltaXQsXG4gICAgICAgIG9mZnNldDogbmV4dE9mZnNldCxcbiAgICAgICAgbGFuZyxcbiAgICAgIH0pXG4gICAgICBjb25zdCBuZXdOZXh0T2Zmc2V0ID0gaGFzTW9yZSAmJiBuZXh0SXRlbSA/IE51bWJlcihuZXh0SXRlbSkgOiBudWxsXG4gICAgICBzZXQoc3RhdGUgPT4gKHtcbiAgICAgICAgY2hhdHM6IFsuLi5zdGF0ZS5jaGF0cywgLi4uKGl0ZW1zIGFzIENoYXRMaXN0SXRlbVtdKV0sXG4gICAgICAgIGlzTG9hZGluZ01vcmVDaGF0czogZmFsc2UsXG4gICAgICAgIG5leHRPZmZzZXQ6IG5ld05leHRPZmZzZXQsXG4gICAgICAgIG9mZnNldDogbmV3TmV4dE9mZnNldCA/PyAwLFxuICAgICAgfSkpXG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGxvYWRpbmcgbW9yZSBjaGF0czonLCBlcnJvcilcbiAgICAgIHNldCh7IGlzTG9hZGluZ01vcmVDaGF0czogZmFsc2UgfSlcbiAgICAgIG9uRXJyb3I/LigpXG4gICAgfVxuICB9LFxuXG4gIGRlbGV0ZUNoYXQ6IGFzeW5jICh7IGNoYXRJZCwgdXNlcklkIH0pID0+IHtcbiAgICB0cnkge1xuICAgICAgYXdhaXQgbWFpYS5DaGF0cy5kZWxldGVDaGF0KHsgY2hhdElkLCB1c2VySWQgfSlcbiAgICAgIHNldChzdGF0ZSA9PiAoe1xuICAgICAgICBjaGF0czogc3RhdGUuY2hhdHMuZmlsdGVyKGNoYXQgPT4gY2hhdC5zZXNzaW9uRXh0ZXJuYWxJZCAhPT0gY2hhdElkKSxcbiAgICAgIH0pKVxuICAgICAgcmV0dXJuIHRydWVcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgY29uc29sZS5lcnJvcignRXJyb3IgZGVsZXRpbmcgY2hhdDonLCBlcnJvcilcbiAgICAgIHJldHVybiBmYWxzZVxuICAgIH1cbiAgfSxcblxuICB1cGRhdGVDaGF0OiBhc3luYyBjaGF0ID0+IHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgY3VycmVudCA9IGdldCgpLmNoYXRzLmZpbmQoYyA9PiBjLmlkID09PSBjaGF0LmlkKVxuICAgICAgY29uc3QgbGFzdFF1ZXN0aW9uID0gY3VycmVudD8udGl0bGUgPz8gY2hhdC50aXRsZSA/PyAnJ1xuICAgICAgYXdhaXQgbWFpYS5DaGF0cy5wYXRjaENoYXQoe1xuICAgICAgICBjaGF0SWQ6IGNoYXQuc2Vzc2lvbkV4dGVybmFsSWQsXG4gICAgICAgIGxhc3RRdWVzdGlvbixcbiAgICAgICAgLi4uKGNoYXQudGl0bGUgIT0gbnVsbCAmJiB7IHRpdGxlOiBjaGF0LnRpdGxlIH0pLFxuICAgICAgfSlcbiAgICAgIHNldChzdGF0ZSA9PiAoe1xuICAgICAgICBjaGF0czogc3RhdGUuY2hhdHMubWFwKGMgPT4gKGMuaWQgPT09IGNoYXQuaWQgPyB7IC4uLmMsIC4uLmNoYXQgfSA6IGMpKSxcbiAgICAgIH0pKVxuICAgICAgcmV0dXJuIHRydWVcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgY29uc29sZS5lcnJvcignRXJyb3IgdXBkYXRpbmcgY2hhdDonLCBlcnJvcilcbiAgICAgIHJldHVybiBmYWxzZVxuICAgIH1cbiAgfSxcblxuICByZXNldDogKCkgPT4gc2V0KHN0YXRlID0+ICh7IC4uLmluaXRpYWxTdGF0ZSwgbW91bnRDb3VudDogc3RhdGUubW91bnRDb3VudCB9KSksXG5cbiAgYWNxdWlyZTogKCkgPT4gc2V0KHN0YXRlID0+ICh7IG1vdW50Q291bnQ6IHN0YXRlLm1vdW50Q291bnQgKyAxIH0pKSxcblxuICByZWxlYXNlOiAoKSA9PiB7XG4gICAgc2V0KHN0YXRlID0+IHtcbiAgICAgIGNvbnN0IG5ld0NvdW50ID0gTWF0aC5tYXgoMCwgc3RhdGUubW91bnRDb3VudCAtIDEpXG4gICAgICBpZiAobmV3Q291bnQgPT09IDApIHtcbiAgICAgICAgcmV0dXJuIHsgLi4uaW5pdGlhbFN0YXRlLCBtb3VudENvdW50OiAwIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiB7IG1vdW50Q291bnQ6IG5ld0NvdW50IH1cbiAgICB9KVxuICB9LFxufSkpXG5cbmV4cG9ydCBjb25zdCBnZXRDaGF0c1N0b3JlU3RhdGUgPSAoKSA9PiB1c2VDaGF0c1N0b3JlLmdldFN0YXRlKClcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUE7QUFDQTtBQUNBLFNBQVNBLE1BQU0sUUFBUSxTQUFTO0FBQ2hDLE9BQU9DLElBQUksTUFBTSxrQkFBa0I7QUFHbkMsSUFBTUMsYUFB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
|
|
252
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJjcmVhdGUiLCJtYWlhIiwicmVtb3ZlUGVyc2lzdGVkU2Vzc2lvblVucmVhZCIsIkRFRkFVTFRfTElNSVQiLCJpbml0aWFsU3RhdGUiLCJjaGF0cyIsImxvYWRpbmdDaGF0cyIsImlzTG9hZGluZ01vcmVDaGF0cyIsIm5leHRPZmZzZXQiLCJsaW1pdCIsIm9mZnNldCIsIm1vdW50Q291bnQiLCJ1c2VDaGF0c1N0b3JlIiwic2V0IiwiZ2V0IiwiX29iamVjdFNwcmVhZCIsImZldGNoQ2hhdHMiLCJfZmV0Y2hDaGF0cyIsIl9hc3luY1RvR2VuZXJhdG9yIiwiX3JlZ2VuZXJhdG9yUnVudGltZSIsIm1hcmsiLCJfY2FsbGVlIiwiX3JlZiIsImFnZW50Iiwic2VjdGlvbiIsIl9yZWYkbGltaXQiLCJfcmVmJG9mZnNldCIsIm9uRXJyb3IiLCJsYW5nIiwiX3lpZWxkJG1haWEkQ2hhdHMkZ2V0IiwiaXRlbXMiLCJuZXh0SXRlbSIsImhhc01vcmUiLCJfdCIsIndyYXAiLCJfY29udGV4dCIsInByZXYiLCJuZXh0IiwiQ2hhdHMiLCJnZXRDaGF0c0J5VXNlcklkIiwic2VudCIsIk51bWJlciIsImNvbnNvbGUiLCJlcnJvciIsInN0b3AiLCJfeCIsImFwcGx5IiwiYXJndW1lbnRzIiwibG9hZE1vcmVDaGF0cyIsIl9sb2FkTW9yZUNoYXRzIiwiX2NhbGxlZTIiLCJfcmVmMiIsIl9nZXQiLCJfeWllbGQkbWFpYSRDaGF0cyRnZXQyIiwibmV3TmV4dE9mZnNldCIsIl90MiIsIl9jb250ZXh0MiIsImFicnVwdCIsInN0YXRlIiwiY29uY2F0IiwiX3RvQ29uc3VtYWJsZUFycmF5IiwiX3gyIiwiZGVsZXRlQ2hhdCIsIl9kZWxldGVDaGF0IiwiX2NhbGxlZTMiLCJfcmVmMyIsImNoYXRJZCIsInVzZXJJZCIsIl90MyIsIl9jb250ZXh0MyIsImZpbHRlciIsImNoYXQiLCJzZXNzaW9uRXh0ZXJuYWxJZCIsIl94MyIsInVwZGF0ZUNoYXQiLCJfdXBkYXRlQ2hhdCIsIl9jYWxsZWU0IiwiX3JlZjQiLCJfY3VycmVudCR0aXRsZSIsImN1cnJlbnQiLCJsYXN0UXVlc3Rpb24iLCJfdDQiLCJfY29udGV4dDQiLCJmaW5kIiwiYyIsImlkIiwidGl0bGUiLCJwYXRjaENoYXQiLCJtYXAiLCJfeDQiLCJyZXNldCIsImFjcXVpcmUiLCJyZWxlYXNlIiwibmV3Q291bnQiLCJNYXRoIiwibWF4IiwiZ2V0Q2hhdHNTdG9yZVN0YXRlIiwiZ2V0U3RhdGUiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvc3RvcmUvdXNlQ2hhdHNTdG9yZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBpbXBvcnQvbm8tZXh0cmFuZW91cy1kZXBlbmRlbmNpZXMgKi9cbi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnkgKi9cbmltcG9ydCB7IGNyZWF0ZSB9IGZyb20gJ3p1c3RhbmQnXG5pbXBvcnQgbWFpYSBmcm9tICcuLi9zZXJ2aWNlcy9tYWlhJ1xuaW1wb3J0IHR5cGUgeyBDaGF0TGlzdEl0ZW0sIEZldGNoQ2hhdHNQYXJhbXMsIExvYWRNb3JlQ2hhdHNQYXJhbXMsIERlbGV0ZUNoYXRQYXJhbXMgfSBmcm9tICcuL2NoYXRzU3RvcmUudHlwZXMnXG5pbXBvcnQgeyByZW1vdmVQZXJzaXN0ZWRTZXNzaW9uVW5yZWFkIH0gZnJvbSAnLi9zZXNzaW9ucy9zZXNzaW9uVW5yZWFkUGVyc2lzdGVuY2UnXG5cbmNvbnN0IERFRkFVTFRfTElNSVQgPSAyMFxuXG50eXBlIENoYXRzU3RhdGUgPSB7XG4gIGNoYXRzOiBDaGF0TGlzdEl0ZW1bXVxuICBsb2FkaW5nQ2hhdHM6IGJvb2xlYW5cbiAgaXNMb2FkaW5nTW9yZUNoYXRzOiBib29sZWFuXG4gIG5leHRPZmZzZXQ6IG51bWJlciB8IG51bGxcbiAgbGltaXQ6IG51bWJlclxuICBvZmZzZXQ6IG51bWJlclxuICBtb3VudENvdW50OiBudW1iZXJcbn1cblxudHlwZSBDaGF0c0FjdGlvbnMgPSB7XG4gIGZldGNoQ2hhdHM6IChwYXJhbXM6IEZldGNoQ2hhdHNQYXJhbXMpID0+IFByb21pc2U8dm9pZD5cbiAgbG9hZE1vcmVDaGF0czogKHBhcmFtczogTG9hZE1vcmVDaGF0c1BhcmFtcykgPT4gUHJvbWlzZTx2b2lkPlxuICBkZWxldGVDaGF0OiAocGFyYW1zOiBEZWxldGVDaGF0UGFyYW1zKSA9PiBQcm9taXNlPGJvb2xlYW4+XG4gIHVwZGF0ZUNoYXQ6IChjaGF0OiBQYXJ0aWFsPENoYXRMaXN0SXRlbT4gJiB7IHNlc3Npb25FeHRlcm5hbElkOiBzdHJpbmc7IGlkOiBzdHJpbmcgfSkgPT4gUHJvbWlzZTxib29sZWFuPlxuICByZXNldDogKCkgPT4gdm9pZFxuICBhY3F1aXJlOiAoKSA9PiB2b2lkXG4gIHJlbGVhc2U6ICgpID0+IHZvaWRcbn1cblxuY29uc3QgaW5pdGlhbFN0YXRlOiBDaGF0c1N0YXRlID0ge1xuICBjaGF0czogW10sXG4gIGxvYWRpbmdDaGF0czogdHJ1ZSxcbiAgaXNMb2FkaW5nTW9yZUNoYXRzOiBmYWxzZSxcbiAgbmV4dE9mZnNldDogbnVsbCxcbiAgbGltaXQ6IERFRkFVTFRfTElNSVQsXG4gIG9mZnNldDogMCxcbiAgbW91bnRDb3VudDogMCxcbn1cblxuZXhwb3J0IGNvbnN0IHVzZUNoYXRzU3RvcmUgPSBjcmVhdGU8Q2hhdHNTdGF0ZSAmIENoYXRzQWN0aW9ucz4oKHNldCwgZ2V0KSA9PiAoe1xuICAuLi5pbml0aWFsU3RhdGUsXG5cbiAgZmV0Y2hDaGF0czogYXN5bmMgKHsgYWdlbnQsIHNlY3Rpb24sIGxpbWl0ID0gREVGQVVMVF9MSU1JVCwgb2Zmc2V0ID0gMCwgb25FcnJvciwgbGFuZyB9KSA9PiB7XG4gICAgc2V0KHsgbG9hZGluZ0NoYXRzOiB0cnVlIH0pXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHsgaXRlbXMsIG5leHRJdGVtLCBoYXNNb3JlIH0gPSBhd2FpdCBtYWlhLkNoYXRzLmdldENoYXRzQnlVc2VySWQoe1xuICAgICAgICBhZ2VudCxcbiAgICAgICAgc2VjdGlvbixcbiAgICAgICAgbGltaXQsXG4gICAgICAgIG9mZnNldCxcbiAgICAgICAgbGFuZyxcbiAgICAgIH0pXG4gICAgICBjb25zdCBuZXh0T2Zmc2V0ID0gaGFzTW9yZSAmJiBuZXh0SXRlbSA/IE51bWJlcihuZXh0SXRlbSkgOiBudWxsXG4gICAgICBzZXQoe1xuICAgICAgICBjaGF0czogaXRlbXMgYXMgQ2hhdExpc3RJdGVtW10sXG4gICAgICAgIGxvYWRpbmdDaGF0czogZmFsc2UsXG4gICAgICAgIG5leHRPZmZzZXQsXG4gICAgICAgIGxpbWl0LFxuICAgICAgICBvZmZzZXQ6IG5leHRPZmZzZXQgPz8gMCxcbiAgICAgIH0pXG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGZldGNoaW5nIGNoYXRzOicsIGVycm9yKVxuICAgICAgc2V0KHsgbG9hZGluZ0NoYXRzOiBmYWxzZSB9KVxuICAgICAgb25FcnJvcj8uKClcbiAgICB9XG4gIH0sXG5cbiAgbG9hZE1vcmVDaGF0czogYXN5bmMgKHsgYWdlbnQsIHNlY3Rpb24sIG9uRXJyb3IsIGxhbmcgfSkgPT4ge1xuICAgIGNvbnN0IHsgbmV4dE9mZnNldCwgbGltaXQsIGlzTG9hZGluZ01vcmVDaGF0cyB9ID0gZ2V0KClcbiAgICBpZiAobmV4dE9mZnNldCA9PT0gbnVsbCB8fCBpc0xvYWRpbmdNb3JlQ2hhdHMpIHJldHVyblxuICAgIHNldCh7IGlzTG9hZGluZ01vcmVDaGF0czogdHJ1ZSB9KVxuICAgIHRyeSB7XG4gICAgICBjb25zdCB7IGl0ZW1zLCBuZXh0SXRlbSwgaGFzTW9yZSB9ID0gYXdhaXQgbWFpYS5DaGF0cy5nZXRDaGF0c0J5VXNlcklkKHtcbiAgICAgICAgYWdlbnQsXG4gICAgICAgIHNlY3Rpb24sXG4gICAgICAgIGxpbWl0LFxuICAgICAgICBvZmZzZXQ6IG5leHRPZmZzZXQsXG4gICAgICAgIGxhbmcsXG4gICAgICB9KVxuICAgICAgY29uc3QgbmV3TmV4dE9mZnNldCA9IGhhc01vcmUgJiYgbmV4dEl0ZW0gPyBOdW1iZXIobmV4dEl0ZW0pIDogbnVsbFxuICAgICAgc2V0KHN0YXRlID0+ICh7XG4gICAgICAgIGNoYXRzOiBbLi4uc3RhdGUuY2hhdHMsIC4uLihpdGVtcyBhcyBDaGF0TGlzdEl0ZW1bXSldLFxuICAgICAgICBpc0xvYWRpbmdNb3JlQ2hhdHM6IGZhbHNlLFxuICAgICAgICBuZXh0T2Zmc2V0OiBuZXdOZXh0T2Zmc2V0LFxuICAgICAgICBvZmZzZXQ6IG5ld05leHRPZmZzZXQgPz8gMCxcbiAgICAgIH0pKVxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBsb2FkaW5nIG1vcmUgY2hhdHM6JywgZXJyb3IpXG4gICAgICBzZXQoeyBpc0xvYWRpbmdNb3JlQ2hhdHM6IGZhbHNlIH0pXG4gICAgICBvbkVycm9yPy4oKVxuICAgIH1cbiAgfSxcblxuICBkZWxldGVDaGF0OiBhc3luYyAoeyBjaGF0SWQsIHVzZXJJZCB9KSA9PiB7XG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IG1haWEuQ2hhdHMuZGVsZXRlQ2hhdCh7IGNoYXRJZCwgdXNlcklkIH0pXG4gICAgICByZW1vdmVQZXJzaXN0ZWRTZXNzaW9uVW5yZWFkKGNoYXRJZClcbiAgICAgIHNldChzdGF0ZSA9PiAoe1xuICAgICAgICBjaGF0czogc3RhdGUuY2hhdHMuZmlsdGVyKGNoYXQgPT4gY2hhdC5zZXNzaW9uRXh0ZXJuYWxJZCAhPT0gY2hhdElkKSxcbiAgICAgIH0pKVxuICAgICAgcmV0dXJuIHRydWVcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgY29uc29sZS5lcnJvcignRXJyb3IgZGVsZXRpbmcgY2hhdDonLCBlcnJvcilcbiAgICAgIHJldHVybiBmYWxzZVxuICAgIH1cbiAgfSxcblxuICB1cGRhdGVDaGF0OiBhc3luYyBjaGF0ID0+IHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgY3VycmVudCA9IGdldCgpLmNoYXRzLmZpbmQoYyA9PiBjLmlkID09PSBjaGF0LmlkKVxuICAgICAgY29uc3QgbGFzdFF1ZXN0aW9uID0gY3VycmVudD8udGl0bGUgPz8gY2hhdC50aXRsZSA/PyAnJ1xuICAgICAgYXdhaXQgbWFpYS5DaGF0cy5wYXRjaENoYXQoe1xuICAgICAgICBjaGF0SWQ6IGNoYXQuc2Vzc2lvbkV4dGVybmFsSWQsXG4gICAgICAgIGxhc3RRdWVzdGlvbixcbiAgICAgICAgLi4uKGNoYXQudGl0bGUgIT0gbnVsbCAmJiB7IHRpdGxlOiBjaGF0LnRpdGxlIH0pLFxuICAgICAgfSlcbiAgICAgIHNldChzdGF0ZSA9PiAoe1xuICAgICAgICBjaGF0czogc3RhdGUuY2hhdHMubWFwKGMgPT4gKGMuaWQgPT09IGNoYXQuaWQgPyB7IC4uLmMsIC4uLmNoYXQgfSA6IGMpKSxcbiAgICAgIH0pKVxuICAgICAgcmV0dXJuIHRydWVcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgY29uc29sZS5lcnJvcignRXJyb3IgdXBkYXRpbmcgY2hhdDonLCBlcnJvcilcbiAgICAgIHJldHVybiBmYWxzZVxuICAgIH1cbiAgfSxcblxuICByZXNldDogKCkgPT4gc2V0KHN0YXRlID0+ICh7IC4uLmluaXRpYWxTdGF0ZSwgbW91bnRDb3VudDogc3RhdGUubW91bnRDb3VudCB9KSksXG5cbiAgYWNxdWlyZTogKCkgPT4gc2V0KHN0YXRlID0+ICh7IG1vdW50Q291bnQ6IHN0YXRlLm1vdW50Q291bnQgKyAxIH0pKSxcblxuICByZWxlYXNlOiAoKSA9PiB7XG4gICAgc2V0KHN0YXRlID0+IHtcbiAgICAgIGNvbnN0IG5ld0NvdW50ID0gTWF0aC5tYXgoMCwgc3RhdGUubW91bnRDb3VudCAtIDEpXG4gICAgICBpZiAobmV3Q291bnQgPT09IDApIHtcbiAgICAgICAgcmV0dXJuIHsgLi4uaW5pdGlhbFN0YXRlLCBtb3VudENvdW50OiAwIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiB7IG1vdW50Q291bnQ6IG5ld0NvdW50IH1cbiAgICB9KVxuICB9LFxufSkpXG5cbmV4cG9ydCBj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
|