@athoscommerce/snap-store-mobx 1.2.3-beta.2 → 1.2.3-beta.4
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/dist/cjs/Autocomplete/Stores/AutocompleteFacetStore.d.ts.map +1 -1
- package/dist/cjs/Autocomplete/Stores/AutocompleteFacetStore.js +4 -2
- package/dist/cjs/Chat/ChatStore.d.ts +2 -0
- package/dist/cjs/Chat/ChatStore.d.ts.map +1 -1
- package/dist/cjs/Chat/ChatStore.js +52 -5
- package/dist/cjs/Chat/Stores/ChatAttachmentStore.d.ts.map +1 -1
- package/dist/cjs/Chat/Stores/ChatAttachmentStore.js +4 -2
- package/dist/cjs/Chat/Stores/ChatSessionStore.d.ts +15 -1
- package/dist/cjs/Chat/Stores/ChatSessionStore.d.ts.map +1 -1
- package/dist/cjs/Chat/Stores/ChatSessionStore.js +79 -2
- package/dist/cjs/Search/Stores/SearchFacetStore.d.ts +11 -11
- package/dist/cjs/Search/Stores/SearchFacetStore.d.ts.map +1 -1
- package/dist/cjs/Search/Stores/SearchFacetStore.js +32 -22
- package/dist/esm/Autocomplete/Stores/AutocompleteFacetStore.d.ts.map +1 -1
- package/dist/esm/Autocomplete/Stores/AutocompleteFacetStore.js +7 -5
- package/dist/esm/Chat/ChatStore.d.ts +2 -0
- package/dist/esm/Chat/ChatStore.d.ts.map +1 -1
- package/dist/esm/Chat/ChatStore.js +51 -5
- package/dist/esm/Chat/Stores/ChatAttachmentStore.d.ts.map +1 -1
- package/dist/esm/Chat/Stores/ChatAttachmentStore.js +4 -2
- package/dist/esm/Chat/Stores/ChatSessionStore.d.ts +15 -1
- package/dist/esm/Chat/Stores/ChatSessionStore.d.ts.map +1 -1
- package/dist/esm/Chat/Stores/ChatSessionStore.js +82 -2
- package/dist/esm/Search/Stores/SearchFacetStore.d.ts +11 -11
- package/dist/esm/Search/Stores/SearchFacetStore.d.ts.map +1 -1
- package/dist/esm/Search/Stores/SearchFacetStore.js +31 -22
- package/package.json +5 -5
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AutocompleteFacetStore.d.ts","sourceRoot":"","sources":["../../../../src/Autocomplete/Stores/AutocompleteFacetStore.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,sBAAsB,EAAE,MAAM,sCAAsC,CAAC;AAC9E,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAElE,KAAK,4BAA4B,GAAG,sBAAsB,GAAG;IAC5D,KAAK,EAAE;QACN,YAAY,EAAE,sBAAsB,CAAC;KACrC,CAAC;CACF,CAAC;AACF,qBAAa,sBAAuB,SAAQ,KAAK;IAChD,MAAM,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,gBAAgB,CAE9C;gBAEW,MAAM,EAAE,4BAA4B;
|
|
1
|
+
{"version":3,"file":"AutocompleteFacetStore.d.ts","sourceRoot":"","sources":["../../../../src/Autocomplete/Stores/AutocompleteFacetStore.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,sBAAsB,EAAE,MAAM,sCAAsC,CAAC;AAC9E,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAElE,KAAK,4BAA4B,GAAG,sBAAsB,GAAG;IAC5D,KAAK,EAAE;QACN,YAAY,EAAE,sBAAsB,CAAC;KACrC,CAAC;CACF,CAAC;AACF,qBAAa,sBAAuB,SAAQ,KAAK;IAChD,MAAM,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,gBAAgB,CAE9C;gBAEW,MAAM,EAAE,4BAA4B;CAoChD"}
|
|
@@ -33,12 +33,14 @@ var AutocompleteFacetStore = /** @class */ (function (_super) {
|
|
|
33
33
|
function AutocompleteFacetStore(params) {
|
|
34
34
|
var _a = params || {}, services = _a.services, state = _a.state;
|
|
35
35
|
// allow for only a singular facet option selection at a time
|
|
36
|
-
var facets = new Stores_1.SearchFacetStore(__assign(__assign({}, params), { services:
|
|
36
|
+
var facets = new Stores_1.SearchFacetStore(__assign(__assign({}, params), { services: (services === null || services === void 0 ? void 0 : services.urlManager)
|
|
37
|
+
? __assign(__assign({}, services), { urlManager: services.urlManager.remove('filter') }) : services }));
|
|
37
38
|
// mutate facet values to add 'preview' function
|
|
38
39
|
facets.forEach(function (facet) {
|
|
39
40
|
var _a;
|
|
40
41
|
(_a = facet.values) === null || _a === void 0 ? void 0 : _a.forEach(function (value) {
|
|
41
42
|
value.preview = function () {
|
|
43
|
+
var _a;
|
|
42
44
|
facets.map(function (facet) {
|
|
43
45
|
var _a;
|
|
44
46
|
facet.filtered = false;
|
|
@@ -49,7 +51,7 @@ var AutocompleteFacetStore = /** @class */ (function (_super) {
|
|
|
49
51
|
facet.filtered = true;
|
|
50
52
|
value.filtered = true;
|
|
51
53
|
state === null || state === void 0 ? void 0 : state.autocomplete.locks.facets.lock();
|
|
52
|
-
value.url.go();
|
|
54
|
+
(_a = value.url) === null || _a === void 0 ? void 0 : _a.go();
|
|
53
55
|
};
|
|
54
56
|
});
|
|
55
57
|
});
|
|
@@ -27,6 +27,7 @@ export declare class ChatStore extends AbstractStore<ChatStoreConfig> {
|
|
|
27
27
|
get currentChat(): ChatSessionStore | undefined;
|
|
28
28
|
get chatsIds(): string[];
|
|
29
29
|
get blocked(): boolean;
|
|
30
|
+
private applyChatStatusResponse;
|
|
30
31
|
handleChatStatusResponse(response: ChatStatusResponse): boolean;
|
|
31
32
|
reset(): void;
|
|
32
33
|
setProductQuickview(product: Product): void;
|
|
@@ -46,6 +47,7 @@ export declare class ChatStore extends AbstractStore<ChatStoreConfig> {
|
|
|
46
47
|
removeFacet(key: string, value: string): void;
|
|
47
48
|
clearPendingFacets(): void;
|
|
48
49
|
isFacetSelected(key: string, value: string): boolean;
|
|
50
|
+
isFacetRemoved(key: string, value: string): boolean;
|
|
49
51
|
request(request: ChatRequestModel): void;
|
|
50
52
|
update(data: {
|
|
51
53
|
chat: ChatResponseModel;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ChatStore.d.ts","sourceRoot":"","sources":["../../../src/Chat/ChatStore.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAC3C,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AACpE,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,KAAK,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AAC7G,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAE7D,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAChE,OAAO,EAAE,OAAO,EAAY,MAAM,oCAAoC,CAAC;AAIvE,qBAAa,SAAU,SAAQ,aAAa,CAAC,eAAe,CAAC;IACrD,IAAI,CAAC,EAAE,SAAS,CAAa;IAC7B,UAAU,EAAE,MAAM,CAAM;IACxB,IAAI,EAAE,OAAO,CAAS;IACtB,OAAO,EAAE,YAAY,CAAC;IACtB,KAAK,EAAE,gBAAgB,EAAE,CAAM;IAC/B,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,OAAO,GAAG,IAAI,CAAQ;IACnC,eAAe,EAAE,OAAO,CAAS;IACjC,kBAAkB,EAAE,MAAM,EAAE,CAAM;IAClC,cAAc,EAAE,MAAM,CAAM;IAC5B,QAAQ,EAAE,kBAAkB,CAAC,UAAU,CAAC,CAA4E;IACpH,gBAAgB,EAAE,OAAO,GAAG,IAAI,CAAQ;IACxC,qBAAqB,EAAE,MAAM,GAAG,IAAI,CAAQ;IACnD,kEAAkE;IAClE,OAAO,CAAC,cAAc,CAAkC;gBAE5C,MAAM,EAAE,eAAe;
|
|
1
|
+
{"version":3,"file":"ChatStore.d.ts","sourceRoot":"","sources":["../../../src/Chat/ChatStore.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAC3C,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AACpE,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,KAAK,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AAC7G,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAE7D,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAChE,OAAO,EAAE,OAAO,EAAY,MAAM,oCAAoC,CAAC;AAIvE,qBAAa,SAAU,SAAQ,aAAa,CAAC,eAAe,CAAC;IACrD,IAAI,CAAC,EAAE,SAAS,CAAa;IAC7B,UAAU,EAAE,MAAM,CAAM;IACxB,IAAI,EAAE,OAAO,CAAS;IACtB,OAAO,EAAE,YAAY,CAAC;IACtB,KAAK,EAAE,gBAAgB,EAAE,CAAM;IAC/B,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,OAAO,GAAG,IAAI,CAAQ;IACnC,eAAe,EAAE,OAAO,CAAS;IACjC,kBAAkB,EAAE,MAAM,EAAE,CAAM;IAClC,cAAc,EAAE,MAAM,CAAM;IAC5B,QAAQ,EAAE,kBAAkB,CAAC,UAAU,CAAC,CAA4E;IACpH,gBAAgB,EAAE,OAAO,GAAG,IAAI,CAAQ;IACxC,qBAAqB,EAAE,MAAM,GAAG,IAAI,CAAQ;IACnD,kEAAkE;IAClE,OAAO,CAAC,cAAc,CAAkC;gBAE5C,MAAM,EAAE,eAAe;IAsGnC,IAAI,WAAW,IAAI,gBAAgB,GAAG,SAAS,CAE9C;IAED,IAAI,QAAQ,IAAI,MAAM,EAAE,CAEvB;IAED,IAAI,OAAO,IAAI,OAAO,CAQrB;IAED,OAAO,CAAC,uBAAuB;IAUxB,wBAAwB,CAAC,QAAQ,EAAE,kBAAkB,GAAG,OAAO;IAQ/D,KAAK,IAAI,IAAI;IAOb,mBAAmB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;IAK3C,sBAAsB,CAAC,QAAQ,EAAE,qBAAqB,GAAG,IAAI;IA8B7D,wBAAwB,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAI/C,qBAAqB,IAAI,IAAI;IAK7B,YAAY,IAAI,IAAI;IAoBpB,UAAU,CAAC,IAAI,CAAC,EAAE;QAAE,SAAS,EAAE,MAAM,CAAA;KAAE,GAAG,gBAAgB;IAyB1D,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IAa5B,gBAAgB,CAAC,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE;QAAE,WAAW,EAAE,cAAc,GAAG,gBAAgB,GAAG,mBAAmB,CAAA;KAAE,GAAG,IAAI;IAkBtH,cAAc,CAAC,MAAM,EAAE,GAAG,GAAG,IAAI;IAMjC,QAAQ,CAAC,KAAK,EAAE,GAAG,GAAG,IAAI;IAmB1B,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAuB7C,kBAAkB,IAAI,IAAI;IAc1B,eAAe,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO;IAkBpD,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO;IAInD,OAAO,CAAC,OAAO,EAAE,gBAAgB,GAAG,IAAI;IAmBxC,MAAM,CAAC,IAAI,EAAE;QAAE,IAAI,EAAE,iBAAiB,CAAC;QAAC,IAAI,EAAE,iBAAiB,CAAA;KAAE,GAAG,IAAI;CAkB/E"}
|
|
@@ -66,7 +66,10 @@ var ChatStore = /** @class */ (function (_super) {
|
|
|
66
66
|
_this.storage.set('chatStatusResponse', null);
|
|
67
67
|
}
|
|
68
68
|
else {
|
|
69
|
-
|
|
69
|
+
// Apply the stored response without persisting, so the 12-hour
|
|
70
|
+
// checkTime keeps counting from the last real API call rather
|
|
71
|
+
// than resetting on every page load.
|
|
72
|
+
_this.applyChatStatusResponse(storedChatStatus.response);
|
|
70
73
|
}
|
|
71
74
|
}
|
|
72
75
|
catch (_a) {
|
|
@@ -93,6 +96,10 @@ var ChatStore = /** @class */ (function (_super) {
|
|
|
93
96
|
latestChatId = chatId;
|
|
94
97
|
}
|
|
95
98
|
});
|
|
99
|
+
// Prefer the persisted active chat ID so switching chats survives page reloads.
|
|
100
|
+
// Fall back to the most recently created chat if the stored ID is missing or stale.
|
|
101
|
+
var storedCurrentChatId = _this.storage.get('currentChatId');
|
|
102
|
+
var activeChatId = storedCurrentChatId && _this.chats.some(function (chat) { return chat.id === storedCurrentChatId; }) ? storedCurrentChatId : latestChatId;
|
|
96
103
|
var storedMeta = _this.storage.get('meta');
|
|
97
104
|
if (storedMeta) {
|
|
98
105
|
try {
|
|
@@ -106,7 +113,7 @@ var ChatStore = /** @class */ (function (_super) {
|
|
|
106
113
|
_this.storedMetaData = metaData;
|
|
107
114
|
// Only hydrate the active chat session — inactive sessions will be
|
|
108
115
|
// hydrated lazily when switched to via switchChat()
|
|
109
|
-
var activeChat = _this.chats.find(function (chat) { return chat.id ===
|
|
116
|
+
var activeChat = _this.chats.find(function (chat) { return chat.id === activeChatId; });
|
|
110
117
|
if (activeChat) {
|
|
111
118
|
activeChat.hydrateResults(metaData);
|
|
112
119
|
activeChat.hydrated = true;
|
|
@@ -116,7 +123,7 @@ var ChatStore = /** @class */ (function (_super) {
|
|
|
116
123
|
_this.storage.set('meta', null);
|
|
117
124
|
}
|
|
118
125
|
}
|
|
119
|
-
_this.currentChatId =
|
|
126
|
+
_this.currentChatId = activeChatId;
|
|
120
127
|
(0, mobx_1.makeObservable)(_this, {
|
|
121
128
|
meta: mobx_1.observable,
|
|
122
129
|
inputValue: mobx_1.observable,
|
|
@@ -164,16 +171,22 @@ var ChatStore = /** @class */ (function (_super) {
|
|
|
164
171
|
enumerable: false,
|
|
165
172
|
configurable: true
|
|
166
173
|
});
|
|
167
|
-
ChatStore.prototype.
|
|
174
|
+
ChatStore.prototype.applyChatStatusResponse = function (response) {
|
|
168
175
|
var chatbot = response.chatbot, features = response.features;
|
|
169
176
|
var status = chatbot.status, suggestedQuestions = chatbot.suggestedQuestions, welcomeMessage = chatbot.welcomeMessage;
|
|
170
177
|
this.chatEnabled = status.enabled === true;
|
|
171
178
|
this.features = features;
|
|
172
179
|
this.suggestedQuestions = suggestedQuestions || [];
|
|
173
180
|
this.welcomeMessage = welcomeMessage || '';
|
|
174
|
-
this.storage.set('chatStatusResponse', JSON.stringify({ response: response, checkTime: Date.now() }));
|
|
175
181
|
return this.chatEnabled;
|
|
176
182
|
};
|
|
183
|
+
ChatStore.prototype.handleChatStatusResponse = function (response) {
|
|
184
|
+
var enabled = this.applyChatStatusResponse(response);
|
|
185
|
+
// Always persist on a real API response — restarts the 12-hour expiration
|
|
186
|
+
// so each new chat session refreshes the cache.
|
|
187
|
+
this.storage.set('chatStatusResponse', JSON.stringify({ response: response, checkTime: Date.now() }));
|
|
188
|
+
return enabled;
|
|
189
|
+
};
|
|
177
190
|
ChatStore.prototype.reset = function () {
|
|
178
191
|
this.chats = [];
|
|
179
192
|
this.clearProductQuickview();
|
|
@@ -233,6 +246,11 @@ var ChatStore = /** @class */ (function (_super) {
|
|
|
233
246
|
this.chats = [currentChat];
|
|
234
247
|
};
|
|
235
248
|
ChatStore.prototype.createChat = function (data) {
|
|
249
|
+
// abandon any in-flight request state from the previous chat — its
|
|
250
|
+
// response will be discarded by the controller, so the UI shouldn't
|
|
251
|
+
// keep showing its loading spinner or stale error
|
|
252
|
+
this.loading = false;
|
|
253
|
+
this.error = undefined;
|
|
236
254
|
// Prune old sessions before creating a new one to keep storage bounded
|
|
237
255
|
ChatSessionStore_1.ChatSessionStore.pruneStoredSessions(this.storage);
|
|
238
256
|
var newChat = new ChatSessionStore_1.ChatSessionStore({
|
|
@@ -244,6 +262,7 @@ var ChatStore = /** @class */ (function (_super) {
|
|
|
244
262
|
},
|
|
245
263
|
});
|
|
246
264
|
this.currentChatId = newChat.id;
|
|
265
|
+
this.storage.set('currentChatId', newChat.id);
|
|
247
266
|
this.chats.push(newChat);
|
|
248
267
|
return newChat;
|
|
249
268
|
};
|
|
@@ -256,6 +275,7 @@ var ChatStore = /** @class */ (function (_super) {
|
|
|
256
275
|
chatExists.hydrated = true;
|
|
257
276
|
}
|
|
258
277
|
this.currentChatId = id;
|
|
278
|
+
this.storage.set('currentChatId', id);
|
|
259
279
|
}
|
|
260
280
|
};
|
|
261
281
|
ChatStore.prototype.sendProductQuery = function (result, options) {
|
|
@@ -291,6 +311,13 @@ var ChatStore = /** @class */ (function (_super) {
|
|
|
291
311
|
label: facet.label,
|
|
292
312
|
count: facet.count,
|
|
293
313
|
});
|
|
314
|
+
// If re-selecting a previously removed server-side filter, remove it from removedFacets
|
|
315
|
+
if (this.currentChat) {
|
|
316
|
+
var removedIndex = this.currentChat.removedFacets.findIndex(function (rf) { return rf.key === facet.key && rf.value === facet.value; });
|
|
317
|
+
if (removedIndex !== -1) {
|
|
318
|
+
this.currentChat.removedFacets.splice(removedIndex, 1);
|
|
319
|
+
}
|
|
320
|
+
}
|
|
294
321
|
};
|
|
295
322
|
ChatStore.prototype.removeFacet = function (key, value) {
|
|
296
323
|
var _a, _b, _c;
|
|
@@ -306,6 +333,14 @@ var ChatStore = /** @class */ (function (_super) {
|
|
|
306
333
|
(_c = this.currentChat) === null || _c === void 0 ? void 0 : _c.attachments.items.splice(index, 1);
|
|
307
334
|
}
|
|
308
335
|
}
|
|
336
|
+
else if (this.currentChat) {
|
|
337
|
+
// No attachment exists — this is a server-side filtered facet.
|
|
338
|
+
// Track it as explicitly removed so the next request excludes it.
|
|
339
|
+
var alreadyRemoved = this.currentChat.removedFacets.some(function (rf) { return rf.key === key && rf.value === value; });
|
|
340
|
+
if (!alreadyRemoved) {
|
|
341
|
+
this.currentChat.removedFacets.push({ key: key, value: value });
|
|
342
|
+
}
|
|
343
|
+
}
|
|
309
344
|
};
|
|
310
345
|
ChatStore.prototype.clearPendingFacets = function () {
|
|
311
346
|
var _this = this;
|
|
@@ -318,9 +353,17 @@ var ChatStore = /** @class */ (function (_super) {
|
|
|
318
353
|
(_b = _this.currentChat) === null || _b === void 0 ? void 0 : _b.attachments.items.splice(index, 1);
|
|
319
354
|
}
|
|
320
355
|
});
|
|
356
|
+
if (this.currentChat) {
|
|
357
|
+
this.currentChat.removedFacets = [];
|
|
358
|
+
}
|
|
321
359
|
};
|
|
322
360
|
ChatStore.prototype.isFacetSelected = function (key, value) {
|
|
323
361
|
var _a;
|
|
362
|
+
// A facet that has been explicitly removed by the user is not selected,
|
|
363
|
+
// even if the server still reports it as filtered.
|
|
364
|
+
if (this.isFacetRemoved(key, value)) {
|
|
365
|
+
return false;
|
|
366
|
+
}
|
|
324
367
|
return (((_a = this.currentChat) === null || _a === void 0 ? void 0 : _a.attachments.items.some(function (item) {
|
|
325
368
|
return item.type === 'facet' &&
|
|
326
369
|
item.key === key &&
|
|
@@ -328,6 +371,10 @@ var ChatStore = /** @class */ (function (_super) {
|
|
|
328
371
|
(item.state === 'active' || item.state === 'attached');
|
|
329
372
|
})) || false);
|
|
330
373
|
};
|
|
374
|
+
ChatStore.prototype.isFacetRemoved = function (key, value) {
|
|
375
|
+
var _a;
|
|
376
|
+
return ((_a = this.currentChat) === null || _a === void 0 ? void 0 : _a.removedFacets.some(function (rf) { return rf.key === key && rf.value === value; })) || false;
|
|
377
|
+
};
|
|
331
378
|
ChatStore.prototype.request = function (request) {
|
|
332
379
|
var _this = this;
|
|
333
380
|
var _a, _b, _c;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ChatAttachmentStore.d.ts","sourceRoot":"","sources":["../../../../src/Chat/Stores/ChatAttachmentStore.ts"],"names":[],"mappings":"AAKA,KAAK,eAAe,GAAG,SAAS,GAAG,OAAO,GAAG,UAAU,GAAG,QAAQ,GAAG,OAAO,CAAC;AAC7E,KAAK,eAAe,GAAG;IACtB,OAAO,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,2BAA2B,GAAG,yBAAyB,GAAG,2BAA2B,GAAG,yBAAyB,CAAC;AAE9H,qBAAa,mBAAmB;IACxB,KAAK,EAAE,eAAe,EAAE,CAAM;;IAUrC,IAAI,QAAQ,sBAEX;IAED,IAAI,QAAQ,4BAKX;IAED,GAAG,CAAC,CAAC,SAAS,eAAe,EAAE,UAAU,EAAE,2BAA2B,GAAG,CAAC;
|
|
1
|
+
{"version":3,"file":"ChatAttachmentStore.d.ts","sourceRoot":"","sources":["../../../../src/Chat/Stores/ChatAttachmentStore.ts"],"names":[],"mappings":"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"}
|
|
@@ -123,9 +123,11 @@ var ChatAttachmentStore = /** @class */ (function () {
|
|
|
123
123
|
existingProductAttachment.requestType = attachment.requestType; // changes existing attachments to the incoming requestType
|
|
124
124
|
return existingProductAttachment;
|
|
125
125
|
}
|
|
126
|
-
//
|
|
126
|
+
// productComparison supports up to 4 products (matches ChatCompareStore.maxItems);
|
|
127
|
+
// trim oldest active/attached product attachments to keep total below the cap.
|
|
128
|
+
var COMPARISON_MAX = 4;
|
|
127
129
|
var productAttachments = this.items.filter(function (item) { return item.type === 'product' && (item.state === 'active' || item.state === 'attached'); });
|
|
128
|
-
while (productAttachments.length >=
|
|
130
|
+
while (productAttachments.length >= COMPARISON_MAX) {
|
|
129
131
|
var toRemove = productAttachments.pop();
|
|
130
132
|
if (toRemove) {
|
|
131
133
|
this.remove(toRemove.id);
|
|
@@ -3,6 +3,7 @@ import { ChatAttachmentAddAttachment, ChatAttachmentStore } from '../Stores/Chat
|
|
|
3
3
|
import type { StorageStore } from '../../Storage/StorageStore';
|
|
4
4
|
import { MetaResponseModel } from '@athoscommerce/snapi-types';
|
|
5
5
|
import { ChatCompareStore } from './ChatCompareStore';
|
|
6
|
+
import { SearchFacetStore } from '../../Search/Stores/SearchFacetStore';
|
|
6
7
|
export type ChatFeedbacks = {
|
|
7
8
|
messageId: string;
|
|
8
9
|
rating: 'UP' | 'DOWN';
|
|
@@ -16,6 +17,7 @@ export type ChatUserMessage = {
|
|
|
16
17
|
text: string;
|
|
17
18
|
attachments?: string[];
|
|
18
19
|
requestType?: string;
|
|
20
|
+
request?: Record<string, any>;
|
|
19
21
|
};
|
|
20
22
|
export type ChatProductQueryMessageData = {
|
|
21
23
|
id: string;
|
|
@@ -44,7 +46,14 @@ type ChatSessionStoreConfig = {
|
|
|
44
46
|
};
|
|
45
47
|
export type FacetsData = {
|
|
46
48
|
type: 'facets';
|
|
47
|
-
data:
|
|
49
|
+
data: SearchFacetStore;
|
|
50
|
+
filterSummary?: {
|
|
51
|
+
field: string;
|
|
52
|
+
value: string;
|
|
53
|
+
label?: string;
|
|
54
|
+
filterLabel?: string;
|
|
55
|
+
filterValue?: string;
|
|
56
|
+
}[];
|
|
48
57
|
};
|
|
49
58
|
export type ActionsData = {
|
|
50
59
|
type: 'actions';
|
|
@@ -68,6 +77,11 @@ export declare class ChatSessionStore {
|
|
|
68
77
|
dismissedSideChatMessageId: string | null;
|
|
69
78
|
activeMessageId: string | null;
|
|
70
79
|
sessionLimitReached: boolean;
|
|
80
|
+
/** Tracks server-filtered facets the user has explicitly unselected (pending next request). */
|
|
81
|
+
removedFacets: {
|
|
82
|
+
key: string;
|
|
83
|
+
value: string;
|
|
84
|
+
}[];
|
|
71
85
|
/** Whether raw stored results have been hydrated into Product/SearchResultStore instances. */
|
|
72
86
|
hydrated: boolean;
|
|
73
87
|
constructor(params: ChatSessionStoreConfig);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ChatSessionStore.d.ts","sourceRoot":"","sources":["../../../../src/Chat/Stores/ChatSessionStore.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACX,iBAAiB,EACjB,gBAAgB,EAChB,oBAAoB,EACpB,mCAAmC,EACnC,iCAAiC,EACjC,uBAAuB,EACvB,6BAA6B,EAC7B,iCAAiC,EACjC,qCAAqC,EACrC,qBAAqB,EACrB,0BAA0B,EAC1B,MAAM,4BAA4B,CAAC;AACpC,OAAO,EACN,2BAA2B,EAI3B,mBAAmB,EACnB,MAAM,+BAA+B,CAAC;AACvC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC/D,OAAO,EAAE,iBAAiB,
|
|
1
|
+
{"version":3,"file":"ChatSessionStore.d.ts","sourceRoot":"","sources":["../../../../src/Chat/Stores/ChatSessionStore.ts"],"names":[],"mappings":"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"}
|
|
@@ -17,6 +17,7 @@ var uuid_1 = require("uuid");
|
|
|
17
17
|
var ChatAttachmentStore_1 = require("../Stores/ChatAttachmentStore");
|
|
18
18
|
var ChatCompareStore_1 = require("./ChatCompareStore");
|
|
19
19
|
var SearchResultStore_1 = require("../../Search/Stores/SearchResultStore");
|
|
20
|
+
var SearchFacetStore_1 = require("../../Search/Stores/SearchFacetStore");
|
|
20
21
|
function createChatResultStore(results, meta) {
|
|
21
22
|
return new SearchResultStore_1.SearchResultStore({
|
|
22
23
|
config: {},
|
|
@@ -35,14 +36,27 @@ function createChatProduct(result, meta) {
|
|
|
35
36
|
responseId: '',
|
|
36
37
|
});
|
|
37
38
|
}
|
|
39
|
+
function createChatFacetStore(facets, meta, storage) {
|
|
40
|
+
return new SearchFacetStore_1.SearchFacetStore({
|
|
41
|
+
config: {},
|
|
42
|
+
stores: { storage: storage },
|
|
43
|
+
data: {
|
|
44
|
+
search: { facets: facets },
|
|
45
|
+
meta: meta,
|
|
46
|
+
},
|
|
47
|
+
});
|
|
48
|
+
}
|
|
38
49
|
/** Extract raw serializable data from a Product instance for storage. */
|
|
39
50
|
function serializeProduct(product) {
|
|
51
|
+
var _a, _b;
|
|
40
52
|
if (!(product instanceof SearchResultStore_1.Product))
|
|
41
53
|
return product;
|
|
42
54
|
var raw = {
|
|
43
55
|
id: product.id,
|
|
56
|
+
responseId: product.responseId,
|
|
44
57
|
mappings: product.mappings,
|
|
45
58
|
attributes: product.attributes,
|
|
59
|
+
badges: ((_b = (_a = product.badges) === null || _a === void 0 ? void 0 : _a.all) === null || _b === void 0 ? void 0 : _b.map(function (b) { return ({ tag: b.tag }); })) || [],
|
|
46
60
|
};
|
|
47
61
|
if (product.variants) {
|
|
48
62
|
raw.variants = {
|
|
@@ -131,6 +145,44 @@ function serializeChatForStorage(chat) {
|
|
|
131
145
|
}
|
|
132
146
|
});
|
|
133
147
|
}
|
|
148
|
+
/** Serialize SearchFacetStore instances in actions back to plain facet arrays for localStorage. */
|
|
149
|
+
function serializeActionsForStorage(actions) {
|
|
150
|
+
return actions.map(function (action) {
|
|
151
|
+
if (action.type === 'facets') {
|
|
152
|
+
return __assign(__assign({}, action), { data: serializeFacetStore(action.data) });
|
|
153
|
+
}
|
|
154
|
+
return action;
|
|
155
|
+
});
|
|
156
|
+
}
|
|
157
|
+
/** Convert a SearchFacetStore (or raw array) back to plain serializable facet objects. */
|
|
158
|
+
function serializeFacetStore(facetStore) {
|
|
159
|
+
return Array.from(facetStore).map(function (facet) {
|
|
160
|
+
var serialized = {
|
|
161
|
+
field: facet.field,
|
|
162
|
+
label: facet.label,
|
|
163
|
+
type: facet.type,
|
|
164
|
+
filtered: facet.filtered,
|
|
165
|
+
};
|
|
166
|
+
if (facet.values) {
|
|
167
|
+
serialized.values = facet.values.map(function (value) {
|
|
168
|
+
if (facet.type === 'range-buckets') {
|
|
169
|
+
return { low: value.low, high: value.high, label: value.label, count: value.count, filtered: value.filtered };
|
|
170
|
+
}
|
|
171
|
+
return { value: value.value, label: value.label, count: value.count, filtered: value.filtered };
|
|
172
|
+
});
|
|
173
|
+
}
|
|
174
|
+
if (facet.range) {
|
|
175
|
+
serialized.range = facet.range;
|
|
176
|
+
}
|
|
177
|
+
if (facet.active) {
|
|
178
|
+
serialized.active = facet.active;
|
|
179
|
+
}
|
|
180
|
+
if (facet.step != null) {
|
|
181
|
+
serialized.step = facet.step;
|
|
182
|
+
}
|
|
183
|
+
return serialized;
|
|
184
|
+
});
|
|
185
|
+
}
|
|
134
186
|
var ChatSessionStore = /** @class */ (function () {
|
|
135
187
|
function ChatSessionStore(params) {
|
|
136
188
|
this.chat = [];
|
|
@@ -146,6 +198,8 @@ var ChatSessionStore = /** @class */ (function () {
|
|
|
146
198
|
this.dismissedSideChatMessageId = null;
|
|
147
199
|
this.activeMessageId = null;
|
|
148
200
|
this.sessionLimitReached = false;
|
|
201
|
+
/** Tracks server-filtered facets the user has explicitly unselected (pending next request). */
|
|
202
|
+
this.removedFacets = [];
|
|
149
203
|
/** Whether raw stored results have been hydrated into Product/SearchResultStore instances. */
|
|
150
204
|
this.hydrated = true;
|
|
151
205
|
this.saveTimerId = null;
|
|
@@ -208,6 +262,7 @@ var ChatSessionStore = /** @class */ (function () {
|
|
|
208
262
|
dismissedSideChatMessageId: mobx_1.observable,
|
|
209
263
|
activeMessageId: mobx_1.observable,
|
|
210
264
|
sessionLimitReached: mobx_1.observable,
|
|
265
|
+
removedFacets: mobx_1.observable,
|
|
211
266
|
activeMessage: mobx_1.computed,
|
|
212
267
|
});
|
|
213
268
|
}
|
|
@@ -337,6 +392,7 @@ var ChatSessionStore = /** @class */ (function () {
|
|
|
337
392
|
this.attachments.reset();
|
|
338
393
|
this.chat = [];
|
|
339
394
|
this.actions = [];
|
|
395
|
+
this.removedFacets = [];
|
|
340
396
|
this.feedbacks = [];
|
|
341
397
|
this.sessionFeedback = null;
|
|
342
398
|
};
|
|
@@ -350,7 +406,7 @@ var ChatSessionStore = /** @class */ (function () {
|
|
|
350
406
|
sessionId: this.sessionId,
|
|
351
407
|
chat: serializeChatForStorage(this.chat),
|
|
352
408
|
attachments: serializeAttachmentsForStorage(this.attachments.items),
|
|
353
|
-
actions: this.actions,
|
|
409
|
+
actions: serializeActionsForStorage(this.actions),
|
|
354
410
|
feedbacks: this.feedbacks,
|
|
355
411
|
sessionFeedback: this.sessionFeedback,
|
|
356
412
|
feedbackDismissed: this.feedbackDismissed,
|
|
@@ -395,6 +451,7 @@ var ChatSessionStore = /** @class */ (function () {
|
|
|
395
451
|
};
|
|
396
452
|
/** Re-wrap raw stored results as Product / SearchResultStore instances. */
|
|
397
453
|
ChatSessionStore.prototype.hydrateResults = function (meta) {
|
|
454
|
+
var _this = this;
|
|
398
455
|
this.chat.forEach(function (message) {
|
|
399
456
|
var _a, _b, _c, _d;
|
|
400
457
|
if (message.messageType === 'productSearchResult') {
|
|
@@ -434,12 +491,20 @@ var ChatSessionStore = /** @class */ (function () {
|
|
|
434
491
|
});
|
|
435
492
|
}
|
|
436
493
|
});
|
|
494
|
+
// Re-wrap raw stored facets as SearchFacetStore instances
|
|
495
|
+
this.actions.forEach(function (action, index) {
|
|
496
|
+
var _a;
|
|
497
|
+
if (action.type === 'facets' && ((_a = action.data) === null || _a === void 0 ? void 0 : _a.length) > 0 && !(action.data instanceof SearchFacetStore_1.SearchFacetStore)) {
|
|
498
|
+
_this.actions[index] = __assign(__assign({}, action), { data: createChatFacetStore(action.data, meta, _this.storage) });
|
|
499
|
+
}
|
|
500
|
+
});
|
|
437
501
|
};
|
|
438
502
|
ChatSessionStore.prototype.request = function (request) {
|
|
439
503
|
var _this = this;
|
|
440
504
|
var _a, _b;
|
|
441
505
|
// clear the questions on new request
|
|
442
506
|
this.actions = [];
|
|
507
|
+
this.removedFacets = [];
|
|
443
508
|
this.requestType = request.data.requestType;
|
|
444
509
|
this.activeMessageId = null;
|
|
445
510
|
// remove any attachments that failed to upload
|
|
@@ -464,6 +529,17 @@ var ChatSessionStore = /** @class */ (function () {
|
|
|
464
529
|
attachments: attachments.length > 0 ? attachments : undefined,
|
|
465
530
|
text: "Filter by ".concat(filterTextArray_1.join(' and ')),
|
|
466
531
|
requestType: request.data.requestType,
|
|
532
|
+
request: request.data, // request is added here to conditionally display different text in MessageUser
|
|
533
|
+
});
|
|
534
|
+
}
|
|
535
|
+
else if (request.data.searchTerm) {
|
|
536
|
+
// for when a query is clicked from ChatInspirationResultMessage
|
|
537
|
+
this.chat.push({
|
|
538
|
+
id: (0, uuid_1.v4)(),
|
|
539
|
+
messageType: 'user',
|
|
540
|
+
text: request.data.searchTerm,
|
|
541
|
+
requestType: request.data.requestType,
|
|
542
|
+
request: request.data, // request is added here to conditionally display different text in MessageUser
|
|
467
543
|
});
|
|
468
544
|
}
|
|
469
545
|
}
|
|
@@ -575,7 +651,8 @@ var ChatSessionStore = /** @class */ (function () {
|
|
|
575
651
|
if (messageData.messageType === 'productSearchResult' && ((_a = messageData.facets) === null || _a === void 0 ? void 0 : _a.length) > 0) {
|
|
576
652
|
_this.actions.push({
|
|
577
653
|
type: 'facets',
|
|
578
|
-
data: messageData.facets,
|
|
654
|
+
data: createChatFacetStore(messageData.facets, meta, _this.storage),
|
|
655
|
+
filterSummary: messageData.filterSummary || [],
|
|
579
656
|
});
|
|
580
657
|
}
|
|
581
658
|
// convert raw results to Product instances (via SearchResultStore) so
|
|
@@ -7,7 +7,7 @@ export type SearchFacetStoreConfig = {
|
|
|
7
7
|
stores: {
|
|
8
8
|
storage: StorageStore;
|
|
9
9
|
};
|
|
10
|
-
services
|
|
10
|
+
services?: StoreServices;
|
|
11
11
|
data: {
|
|
12
12
|
search?: SearchResponseModel;
|
|
13
13
|
meta: MetaResponseModel;
|
|
@@ -18,7 +18,7 @@ export declare class SearchFacetStore extends Array {
|
|
|
18
18
|
constructor(params: SearchFacetStoreConfig);
|
|
19
19
|
}
|
|
20
20
|
export declare class Facet {
|
|
21
|
-
services
|
|
21
|
+
services?: StoreServices;
|
|
22
22
|
type: 'range' | 'value' | 'range-buckets';
|
|
23
23
|
field: string;
|
|
24
24
|
filtered: boolean;
|
|
@@ -27,9 +27,9 @@ export declare class Facet {
|
|
|
27
27
|
display: string;
|
|
28
28
|
label: string;
|
|
29
29
|
storage: StorageStore;
|
|
30
|
-
constructor(services: StoreServices, storage: StorageStore, facet: SearchResponseModelFacetValue | SearchResponseModelFacetRange, facetMeta: MetaResponseModelFacet, config: FacetStoreConfig);
|
|
30
|
+
constructor(services: StoreServices | undefined, storage: StorageStore, facet: SearchResponseModelFacetValue | SearchResponseModelFacetRange, facetMeta: MetaResponseModelFacet, config: FacetStoreConfig);
|
|
31
31
|
get clear(): {
|
|
32
|
-
url: UrlManager;
|
|
32
|
+
url: UrlManager | undefined;
|
|
33
33
|
};
|
|
34
34
|
toggleCollapse(): void;
|
|
35
35
|
}
|
|
@@ -39,7 +39,7 @@ export declare class RangeFacet extends Facet {
|
|
|
39
39
|
active?: SearchRequestModelFilterRangeAllOfValue;
|
|
40
40
|
formatSeparator: string;
|
|
41
41
|
formatValue: string;
|
|
42
|
-
constructor(services: StoreServices, storage: StorageStore, facet: SearchResponseModelFacetRange, facetMeta: MetaResponseModelFacetSlider, config: FacetStoreConfig);
|
|
42
|
+
constructor(services: StoreServices | undefined, storage: StorageStore, facet: SearchResponseModelFacetRange, facetMeta: MetaResponseModelFacetSlider, config: FacetStoreConfig);
|
|
43
43
|
get filteredCount(): number;
|
|
44
44
|
}
|
|
45
45
|
export declare class ValueFacet extends Facet {
|
|
@@ -57,7 +57,7 @@ export declare class ValueFacet extends Facet {
|
|
|
57
57
|
toggle: (val?: boolean) => void;
|
|
58
58
|
calculate: () => void;
|
|
59
59
|
};
|
|
60
|
-
constructor(services: StoreServices, storage: StorageStore, facet: SearchResponseModelFacetValue, facetMeta: MetaResponseModelFacet, config: FacetStoreConfig);
|
|
60
|
+
constructor(services: StoreServices | undefined, storage: StorageStore, facet: SearchResponseModelFacetValue, facetMeta: MetaResponseModelFacet, config: FacetStoreConfig);
|
|
61
61
|
get filteredCount(): number;
|
|
62
62
|
get refinedValues(): (FacetHierarchyValue | FacetValue | FacetRangeValue | undefined)[];
|
|
63
63
|
}
|
|
@@ -67,14 +67,14 @@ export declare class FacetValue {
|
|
|
67
67
|
filtered: boolean;
|
|
68
68
|
value: string;
|
|
69
69
|
custom: object;
|
|
70
|
-
url
|
|
70
|
+
url?: UrlManager;
|
|
71
71
|
preview?: () => void;
|
|
72
|
-
constructor(services: StoreServices, facet: ValueFacet, value: SearchResponseModelFacetValueAllOfValues);
|
|
72
|
+
constructor(services: StoreServices | undefined, facet: ValueFacet, value: SearchResponseModelFacetValueAllOfValues);
|
|
73
73
|
}
|
|
74
74
|
export declare class FacetHierarchyValue extends FacetValue {
|
|
75
75
|
level: number;
|
|
76
76
|
history: boolean;
|
|
77
|
-
constructor(services: StoreServices, facet: ValueFacet & MetaResponseModelFacetHierarchyAllOf, value: SearchResponseModelFacetValueAllOfValues, filteredValues: SearchResponseModelFacetValueAllOfValues[]);
|
|
77
|
+
constructor(services: StoreServices | undefined, facet: ValueFacet & MetaResponseModelFacetHierarchyAllOf, value: SearchResponseModelFacetValueAllOfValues, filteredValues: SearchResponseModelFacetValueAllOfValues[]);
|
|
78
78
|
}
|
|
79
79
|
export declare class FacetRangeValue {
|
|
80
80
|
label: string;
|
|
@@ -83,7 +83,7 @@ export declare class FacetRangeValue {
|
|
|
83
83
|
low: number;
|
|
84
84
|
high: number;
|
|
85
85
|
custom: object;
|
|
86
|
-
url
|
|
87
|
-
constructor(services: StoreServices, facet: ValueFacet, value: SearchResponseModelFacetValueAllOfValues);
|
|
86
|
+
url?: UrlManager;
|
|
87
|
+
constructor(services: StoreServices | undefined, facet: ValueFacet, value: SearchResponseModelFacetValueAllOfValues);
|
|
88
88
|
}
|
|
89
89
|
//# sourceMappingURL=SearchFacetStore.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SearchFacetStore.d.ts","sourceRoot":"","sources":["../../../../src/Search/Stores/SearchFacetStore.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAClE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC/D,OAAO,KAAK,EAAE,uBAAuB,EAAE,iBAAiB,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC/G,OAAO,KAAK,EACX,sBAAsB,EAEtB,4BAA4B,EAC5B,uCAAuC,EACvC,oCAAoC,EAEpC,6BAA6B,EAC7B,6BAA6B,EAE7B,wCAAwC,EACxC,uCAAuC,EACvC,mBAAmB,EACnB,iBAAiB,EACjB,MAAM,4BAA4B,CAAC;AAEpC,MAAM,MAAM,sBAAsB,GAAG;IACpC,MAAM,EAAE,iBAAiB,GAAG,uBAAuB,CAAC;IACpD,MAAM,EAAE;QACP,OAAO,EAAE,YAAY,CAAC;KACtB,CAAC;IACF,QAAQ,EAAE,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"SearchFacetStore.d.ts","sourceRoot":"","sources":["../../../../src/Search/Stores/SearchFacetStore.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAClE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC/D,OAAO,KAAK,EAAE,uBAAuB,EAAE,iBAAiB,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC/G,OAAO,KAAK,EACX,sBAAsB,EAEtB,4BAA4B,EAC5B,uCAAuC,EACvC,oCAAoC,EAEpC,6BAA6B,EAC7B,6BAA6B,EAE7B,wCAAwC,EACxC,uCAAuC,EACvC,mBAAmB,EACnB,iBAAiB,EACjB,MAAM,4BAA4B,CAAC;AAEpC,MAAM,MAAM,sBAAsB,GAAG;IACpC,MAAM,EAAE,iBAAiB,GAAG,uBAAuB,CAAC;IACpD,MAAM,EAAE;QACP,OAAO,EAAE,YAAY,CAAC;KACtB,CAAC;IACF,QAAQ,CAAC,EAAE,aAAa,CAAC;IACzB,IAAI,EAAE;QACL,MAAM,CAAC,EAAE,mBAAmB,CAAC;QAC7B,IAAI,EAAE,iBAAiB,CAAC;KACxB,CAAC;CACF,CAAC;AAEF,qBAAa,gBAAiB,SAAQ,KAAK;IAC1C,MAAM,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,gBAAgB,CAE9C;gBAEW,MAAM,EAAE,sBAAsB;CAgE1C;AAED,qBAAa,KAAK;IACV,QAAQ,CAAC,EAAE,aAAa,CAAC;IACzB,IAAI,EAAG,OAAO,GAAG,OAAO,GAAG,eAAe,CAAC;IAC3C,KAAK,EAAG,MAAM,CAAC;IACf,QAAQ,UAAS;IACjB,MAAM,KAAM;IACZ,SAAS,UAAS;IAClB,OAAO,SAAM;IACb,KAAK,SAAM;IACX,OAAO,EAAE,YAAY,CAAC;gBAG5B,QAAQ,EAAE,aAAa,GAAG,SAAS,EACnC,OAAO,EAAE,YAAY,EACrB,KAAK,EAAE,6BAA6B,GAAG,6BAA6B,EACpE,SAAS,EAAE,sBAAsB,EACjC,MAAM,EAAE,gBAAgB;IA0BzB,IAAW,KAAK;;MAIf;IAEM,cAAc;CAKrB;AAED,qBAAa,UAAW,SAAQ,KAAK;IAC7B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,uCAAuC,CAGpD;IACK,MAAM,CAAC,EAAE,uCAAuC,CAGrD;IACK,eAAe,EAAE,MAAM,CAAC;IACxB,WAAW,EAAE,MAAM,CAAC;gBAG1B,QAAQ,EAAE,aAAa,GAAG,SAAS,EACnC,OAAO,EAAE,YAAY,EACrB,KAAK,EAAE,6BAA6B,EACpC,SAAS,EAAE,4BAA4B,EACvC,MAAM,EAAE,gBAAgB;IA+BzB,IAAW,aAAa,WAEvB;CACD;AAED,qBAAa,UAAW,SAAQ,KAAK;IAC7B,MAAM,EAAE,KAAK,CAAC,mBAAmB,GAAG,UAAU,GAAG,eAAe,GAAG,SAAS,CAAC,CAAM;IAEnF,MAAM;;MAEX;IAEK,QAAQ,EAAG,uCAAuC,CAAC;IAEnD,QAAQ,EAAE;QAChB,OAAO,EAAE,OAAO,CAAC;QACjB,OAAO,EAAE,OAAO,CAAC;QACjB,KAAK,EAAE,MAAM,CAAC;QACd,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC;QAC9B,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;QAClC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC;QAChC,SAAS,EAAE,MAAM,IAAI,CAAC;KACtB,CAwCC;gBAGD,QAAQ,EAAE,aAAa,GAAG,SAAS,EACnC,OAAO,EAAE,YAAY,EACrB,KAAK,EAAE,6BAA6B,EACpC,SAAS,EAAE,sBAAsB,EACjC,MAAM,EAAE,gBAAgB;IAmDzB,IAAW,aAAa,WAEvB;IAED,IAAW,aAAa,uEAavB;CACD;AAED,qBAAa,UAAU;IACf,KAAK,EAAG,MAAM,CAAC;IACf,KAAK,EAAG,MAAM,CAAC;IACf,QAAQ,EAAG,OAAO,CAAC;IACnB,KAAK,EAAG,MAAM,CAAC;IACf,MAAM,EAAG,MAAM,CAAC;IAChB,GAAG,CAAC,EAAE,UAAU,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;gBAEhB,QAAQ,EAAE,aAAa,GAAG,SAAS,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,wCAAwC;CAgBnH;AAED,qBAAa,mBAAoB,SAAQ,UAAU;IAC3C,KAAK,SAAK;IACV,OAAO,UAAS;gBAGtB,QAAQ,EAAE,aAAa,GAAG,SAAS,EACnC,KAAK,EAAE,UAAU,GAAG,oCAAoC,EACxD,KAAK,EAAE,wCAAwC,EAC/C,cAAc,EAAE,wCAAwC,EAAE;CAwB3D;AAED,qBAAa,eAAe;IACpB,KAAK,EAAG,MAAM,CAAC;IACf,KAAK,EAAG,MAAM,CAAC;IACf,QAAQ,EAAG,OAAO,CAAC;IACnB,GAAG,EAAG,MAAM,CAAC;IACb,IAAI,EAAG,MAAM,CAAC;IACd,MAAM,EAAG,MAAM,CAAC;IAChB,GAAG,CAAC,EAAE,UAAU,CAAC;gBAEZ,QAAQ,EAAE,aAAa,GAAG,SAAS,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,wCAAwC;CAkBnH"}
|