@searchspring/snap-controller 0.61.5 → 0.63.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/dist/cjs/Autocomplete/AutocompleteController.d.ts.map +1 -1
- package/dist/cjs/Autocomplete/AutocompleteController.js +52 -65
- package/dist/cjs/Finder/FinderController.d.ts.map +1 -1
- package/dist/cjs/Finder/FinderController.js +30 -41
- package/dist/cjs/Recommendation/RecommendationController.d.ts.map +1 -1
- package/dist/cjs/Recommendation/RecommendationController.js +39 -42
- package/dist/cjs/Search/SearchController.d.ts +0 -1
- package/dist/cjs/Search/SearchController.d.ts.map +1 -1
- package/dist/cjs/Search/SearchController.js +67 -97
- package/dist/esm/Autocomplete/AutocompleteController.d.ts.map +1 -1
- package/dist/esm/Autocomplete/AutocompleteController.js +25 -24
- package/dist/esm/Finder/FinderController.d.ts.map +1 -1
- package/dist/esm/Finder/FinderController.js +12 -13
- package/dist/esm/Recommendation/RecommendationController.d.ts.map +1 -1
- package/dist/esm/Recommendation/RecommendationController.js +17 -11
- package/dist/esm/Search/SearchController.d.ts +0 -1
- package/dist/esm/Search/SearchController.d.ts.map +1 -1
- package/dist/esm/Search/SearchController.js +15 -26
- package/package.json +10 -10
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AutocompleteController.d.ts","sourceRoot":"","sources":["../../../src/Autocomplete/AutocompleteController.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,YAAY,EAAa,MAAM,+BAA+B,CAAC;AACxE,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AAEpE,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAE3C,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAClE,OAAO,KAAK,EAAE,4BAA4B,
|
|
1
|
+
{"version":3,"file":"AutocompleteController.d.ts","sourceRoot":"","sources":["../../../src/Autocomplete/AutocompleteController.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,YAAY,EAAa,MAAM,+BAA+B,CAAC;AACxE,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AAEpE,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAE3C,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAClE,OAAO,KAAK,EAAE,4BAA4B,EAAiC,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAElI,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,2BAA2B,CAAC;AAG1E,eAAO,MAAM,WAAW,MAAM,CAAC;AA+B/B,KAAK,wBAAwB,GAAG;IAC/B,OAAO,EAAE;QACR,KAAK,EAAE,CAAC,CAAC,EAAE,UAAU,EAAE,MAAM,EAAE,GAAG,KAAK,IAAI,CAAC;KAC5C,CAAC;CACF,CAAC;AAEF,qBAAa,sBAAuB,SAAQ,kBAAkB;IACtD,IAAI,kBAAgC;IACnC,KAAK,EAAE,iBAAiB,CAAC;IACzB,MAAM,EAAE,4BAA4B,CAAC;IACtC,OAAO,EAAE,YAAY,CAAC;gBAG5B,MAAM,EAAE,4BAA4B,EACpC,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,kBAAkB,EAC1F,OAAO,CAAC,EAAE,gBAAgB;IAwD3B,KAAK,EAAE,wBAAwB,CAO7B;IAEF,IAAI,MAAM,IAAI,wBAAwB,CA0CrC;IAEK,UAAU,CAAC,YAAY,CAAC,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC;IA2BhE,KAAK,IAAI,IAAI;IASb,QAAQ;;0BAEc,aAAa,KAAG,QAAQ,OAAO,GAAG,SAAS,CAAC;wBAkDpD,aAAa,KAAG,IAAI;uBAMrB,UAAU,KAAG,IAAI;4BAQN,MAAM,SAAS,CAAC,gBAAgB,CAAC,KAAG,QAAQ,IAAI,CAAC;mCAgDhD,MAAM,WAAW,CAAC,gBAAgB,CAAC,KAAG,IAAI;uBAqBtD,KAAK;;;;uBAyDL,UAAU,KAAG,IAAI;;MAS5B;IAEF,MAAM,IAAI,IAAI;IAgBR,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAgF3B,cAAc,QAAa,QAAQ,IAAI,CAAC,CAwBtC;IAEF,MAAM,QAAa,QAAQ,IAAI,CAAC,CA0I9B;CACF"}
|
|
@@ -95,6 +95,10 @@ var defaultConfig = {
|
|
|
95
95
|
merchandising: true,
|
|
96
96
|
singleResult: false,
|
|
97
97
|
},
|
|
98
|
+
bind: {
|
|
99
|
+
input: true,
|
|
100
|
+
submit: true,
|
|
101
|
+
},
|
|
98
102
|
},
|
|
99
103
|
};
|
|
100
104
|
var AutocompleteController = /** @class */ (function (_super) {
|
|
@@ -290,6 +294,8 @@ var AutocompleteController = /** @class */ (function (_super) {
|
|
|
290
294
|
return;
|
|
291
295
|
}
|
|
292
296
|
_this.store.state.input = value;
|
|
297
|
+
// remove merch redirect to prevent race condition
|
|
298
|
+
_this.store.merchandising.redirect = '';
|
|
293
299
|
if ((_b = (_a = _this.config) === null || _a === void 0 ? void 0 : _a.settings) === null || _b === void 0 ? void 0 : _b.syncInputs) {
|
|
294
300
|
var inputs = document.querySelectorAll(_this.config.selector);
|
|
295
301
|
inputs.forEach(function (input) {
|
|
@@ -375,6 +381,13 @@ var AutocompleteController = /** @class */ (function (_super) {
|
|
|
375
381
|
return __generator(this, function (_d) {
|
|
376
382
|
switch (_d.label) {
|
|
377
383
|
case 0:
|
|
384
|
+
_d.trys.push([0, 16, 17, 18]);
|
|
385
|
+
if (!!this.initialized) return [3 /*break*/, 2];
|
|
386
|
+
return [4 /*yield*/, this.init()];
|
|
387
|
+
case 1:
|
|
388
|
+
_d.sent();
|
|
389
|
+
_d.label = 2;
|
|
390
|
+
case 2:
|
|
378
391
|
// if urlManager has no query, there will be no need to get params and no query
|
|
379
392
|
if (!this.urlManager.state.query) {
|
|
380
393
|
return [2 /*return*/];
|
|
@@ -384,20 +397,18 @@ var AutocompleteController = /** @class */ (function (_super) {
|
|
|
384
397
|
if (!((_c = (_b = params === null || params === void 0 ? void 0 : params.search) === null || _b === void 0 ? void 0 : _b.query) === null || _c === void 0 ? void 0 : _c.string)) {
|
|
385
398
|
return [2 /*return*/];
|
|
386
399
|
}
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
_d.
|
|
391
|
-
case 2:
|
|
392
|
-
_d.trys.push([2, 4, , 5]);
|
|
400
|
+
this.store.loading = true;
|
|
401
|
+
_d.label = 3;
|
|
402
|
+
case 3:
|
|
403
|
+
_d.trys.push([3, 5, , 6]);
|
|
393
404
|
return [4 /*yield*/, this.eventManager.fire('beforeSearch', {
|
|
394
405
|
controller: this,
|
|
395
406
|
request: params,
|
|
396
407
|
})];
|
|
397
|
-
case 3:
|
|
398
|
-
_d.sent();
|
|
399
|
-
return [3 /*break*/, 5];
|
|
400
408
|
case 4:
|
|
409
|
+
_d.sent();
|
|
410
|
+
return [3 /*break*/, 6];
|
|
411
|
+
case 5:
|
|
401
412
|
err_3 = _d.sent();
|
|
402
413
|
if ((err_3 === null || err_3 === void 0 ? void 0 : err_3.message) == 'cancelled') {
|
|
403
414
|
this.log.warn("'beforeSearch' middleware cancelled");
|
|
@@ -407,11 +418,11 @@ var AutocompleteController = /** @class */ (function (_super) {
|
|
|
407
418
|
this.log.error("error in 'beforeSearch' middleware");
|
|
408
419
|
throw err_3;
|
|
409
420
|
}
|
|
410
|
-
return [3 /*break*/,
|
|
411
|
-
case
|
|
421
|
+
return [3 /*break*/, 6];
|
|
422
|
+
case 6:
|
|
412
423
|
searchProfile = this.profiler.create({ type: 'event', name: 'search', context: params }).start();
|
|
413
424
|
return [4 /*yield*/, this.client.autocomplete(params)];
|
|
414
|
-
case
|
|
425
|
+
case 7:
|
|
415
426
|
_a = _d.sent(), meta = _a[0], response = _a[1];
|
|
416
427
|
// @ts-ignore : MockClient will overwrite the client search() method and use SearchData to return mock data which already contains meta data
|
|
417
428
|
if (!response.meta) {
|
|
@@ -421,18 +432,18 @@ var AutocompleteController = /** @class */ (function (_super) {
|
|
|
421
432
|
searchProfile.stop();
|
|
422
433
|
this.log.profile(searchProfile);
|
|
423
434
|
afterSearchProfile = this.profiler.create({ type: 'event', name: 'afterSearch', context: params }).start();
|
|
424
|
-
_d.label =
|
|
425
|
-
case
|
|
426
|
-
_d.trys.push([
|
|
435
|
+
_d.label = 8;
|
|
436
|
+
case 8:
|
|
437
|
+
_d.trys.push([8, 10, , 11]);
|
|
427
438
|
return [4 /*yield*/, this.eventManager.fire('afterSearch', {
|
|
428
439
|
controller: this,
|
|
429
440
|
request: params,
|
|
430
441
|
response: response,
|
|
431
442
|
})];
|
|
432
|
-
case 8:
|
|
433
|
-
_d.sent();
|
|
434
|
-
return [3 /*break*/, 10];
|
|
435
443
|
case 9:
|
|
444
|
+
_d.sent();
|
|
445
|
+
return [3 /*break*/, 11];
|
|
446
|
+
case 10:
|
|
436
447
|
err_4 = _d.sent();
|
|
437
448
|
if ((err_4 === null || err_4 === void 0 ? void 0 : err_4.message) == 'cancelled') {
|
|
438
449
|
this.log.warn("'afterSearch' middleware cancelled");
|
|
@@ -443,25 +454,25 @@ var AutocompleteController = /** @class */ (function (_super) {
|
|
|
443
454
|
this.log.error("error in 'afterSearch' middleware");
|
|
444
455
|
throw err_4;
|
|
445
456
|
}
|
|
446
|
-
return [3 /*break*/,
|
|
447
|
-
case
|
|
457
|
+
return [3 /*break*/, 11];
|
|
458
|
+
case 11:
|
|
448
459
|
afterSearchProfile.stop();
|
|
449
460
|
this.log.profile(afterSearchProfile);
|
|
450
461
|
// update the store
|
|
451
462
|
this.store.update(response);
|
|
452
463
|
afterStoreProfile = this.profiler.create({ type: 'event', name: 'afterStore', context: params }).start();
|
|
453
|
-
_d.label =
|
|
454
|
-
case
|
|
455
|
-
_d.trys.push([
|
|
464
|
+
_d.label = 12;
|
|
465
|
+
case 12:
|
|
466
|
+
_d.trys.push([12, 14, , 15]);
|
|
456
467
|
return [4 /*yield*/, this.eventManager.fire('afterStore', {
|
|
457
468
|
controller: this,
|
|
458
469
|
request: params,
|
|
459
470
|
response: response,
|
|
460
471
|
})];
|
|
461
|
-
case 12:
|
|
462
|
-
_d.sent();
|
|
463
|
-
return [3 /*break*/, 14];
|
|
464
472
|
case 13:
|
|
473
|
+
_d.sent();
|
|
474
|
+
return [3 /*break*/, 15];
|
|
475
|
+
case 14:
|
|
465
476
|
err_5 = _d.sent();
|
|
466
477
|
if ((err_5 === null || err_5 === void 0 ? void 0 : err_5.message) == 'cancelled') {
|
|
467
478
|
this.log.warn("'afterStore' middleware cancelled");
|
|
@@ -472,12 +483,12 @@ var AutocompleteController = /** @class */ (function (_super) {
|
|
|
472
483
|
this.log.error("error in 'afterStore' middleware");
|
|
473
484
|
throw err_5;
|
|
474
485
|
}
|
|
475
|
-
return [3 /*break*/,
|
|
476
|
-
case
|
|
486
|
+
return [3 /*break*/, 15];
|
|
487
|
+
case 15:
|
|
477
488
|
afterStoreProfile.stop();
|
|
478
489
|
this.log.profile(afterStoreProfile);
|
|
479
|
-
return [3 /*break*/,
|
|
480
|
-
case
|
|
490
|
+
return [3 /*break*/, 18];
|
|
491
|
+
case 16:
|
|
481
492
|
err_6 = _d.sent();
|
|
482
493
|
if (err_6) {
|
|
483
494
|
if (err_6.err && err_6.fetchDetails) {
|
|
@@ -517,10 +528,12 @@ var AutocompleteController = /** @class */ (function (_super) {
|
|
|
517
528
|
this.log.error(err_6);
|
|
518
529
|
this.handleError(err_6);
|
|
519
530
|
}
|
|
520
|
-
this.store.loading = false;
|
|
521
531
|
}
|
|
522
|
-
return [3 /*break*/,
|
|
523
|
-
case
|
|
532
|
+
return [3 /*break*/, 18];
|
|
533
|
+
case 17:
|
|
534
|
+
this.store.loading = false;
|
|
535
|
+
return [7 /*endfinally*/];
|
|
536
|
+
case 18: return [2 /*return*/];
|
|
524
537
|
}
|
|
525
538
|
});
|
|
526
539
|
}); };
|
|
@@ -539,19 +552,6 @@ var AutocompleteController = /** @class */ (function (_super) {
|
|
|
539
552
|
type: 'session',
|
|
540
553
|
key: "ss-controller-".concat(_this.config.id),
|
|
541
554
|
});
|
|
542
|
-
// add 'beforeSearch' middleware
|
|
543
|
-
_this.eventManager.on('beforeSearch', function (ac, next) { return __awaiter(_this, void 0, void 0, function () {
|
|
544
|
-
return __generator(this, function (_a) {
|
|
545
|
-
switch (_a.label) {
|
|
546
|
-
case 0:
|
|
547
|
-
ac.controller.store.loading = true;
|
|
548
|
-
return [4 /*yield*/, next()];
|
|
549
|
-
case 1:
|
|
550
|
-
_a.sent();
|
|
551
|
-
return [2 /*return*/];
|
|
552
|
-
}
|
|
553
|
-
});
|
|
554
|
-
}); });
|
|
555
555
|
// add 'afterSearch' middleware
|
|
556
556
|
_this.eventManager.on('afterSearch', function (ac, next) { return __awaiter(_this, void 0, void 0, function () {
|
|
557
557
|
return __generator(this, function (_a) {
|
|
@@ -561,25 +561,12 @@ var AutocompleteController = /** @class */ (function (_super) {
|
|
|
561
561
|
_a.sent();
|
|
562
562
|
// cancel search if no input or query doesn't match current urlState
|
|
563
563
|
if (ac.response.autocomplete.query != ac.controller.urlManager.state.query) {
|
|
564
|
-
ac.controller.store.loading = false;
|
|
565
564
|
return [2 /*return*/, false];
|
|
566
565
|
}
|
|
567
566
|
return [2 /*return*/];
|
|
568
567
|
}
|
|
569
568
|
});
|
|
570
569
|
}); });
|
|
571
|
-
// add 'afterStore' middleware
|
|
572
|
-
_this.eventManager.on('afterStore', function (ac, next) { return __awaiter(_this, void 0, void 0, function () {
|
|
573
|
-
return __generator(this, function (_a) {
|
|
574
|
-
switch (_a.label) {
|
|
575
|
-
case 0: return [4 /*yield*/, next()];
|
|
576
|
-
case 1:
|
|
577
|
-
_a.sent();
|
|
578
|
-
ac.controller.store.loading = false;
|
|
579
|
-
return [2 /*return*/];
|
|
580
|
-
}
|
|
581
|
-
});
|
|
582
|
-
}); });
|
|
583
570
|
_this.eventManager.on('beforeSubmit', function (ac, next) { return __awaiter(_this, void 0, void 0, function () {
|
|
584
571
|
var redirectURL, results, singleResultUrl;
|
|
585
572
|
var _a, _b, _c, _d, _e, _f, _g, _h;
|
|
@@ -734,14 +721,14 @@ var AutocompleteController = /** @class */ (function (_super) {
|
|
|
734
721
|
this.unbind();
|
|
735
722
|
inputs = document.querySelectorAll(this.config.selector);
|
|
736
723
|
inputs.forEach(function (input) {
|
|
737
|
-
var _a, _b, _c;
|
|
724
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j;
|
|
738
725
|
input.setAttribute('spellcheck', 'false');
|
|
739
726
|
input.setAttribute('autocomplete', 'off');
|
|
740
727
|
input.setAttribute('autocorrect', 'off');
|
|
741
728
|
input.setAttribute('autocapitalize', 'none');
|
|
742
729
|
input.setAttribute(INPUT_ATTRIBUTE, '');
|
|
743
|
-
input.addEventListener('input', _this.handlers.input.input);
|
|
744
|
-
if (((
|
|
730
|
+
((_b = (_a = _this.config.settings) === null || _a === void 0 ? void 0 : _a.bind) === null || _b === void 0 ? void 0 : _b.input) && input.addEventListener('input', _this.handlers.input.input);
|
|
731
|
+
if (((_d = (_c = _this.config) === null || _c === void 0 ? void 0 : _c.settings) === null || _d === void 0 ? void 0 : _d.initializeFromUrl) && !input.value && _this.store.state.input) {
|
|
745
732
|
input.value = _this.store.state.input;
|
|
746
733
|
}
|
|
747
734
|
input.addEventListener('focus', _this.handlers.input.focus);
|
|
@@ -749,14 +736,14 @@ var AutocompleteController = /** @class */ (function (_super) {
|
|
|
749
736
|
var form = input.form;
|
|
750
737
|
var formActionUrl;
|
|
751
738
|
if (_this.config.action) {
|
|
752
|
-
input.addEventListener('keydown', _this.handlers.input.enterKey);
|
|
739
|
+
((_f = (_e = _this.config.settings) === null || _e === void 0 ? void 0 : _e.bind) === null || _f === void 0 ? void 0 : _f.submit) && input.addEventListener('keydown', _this.handlers.input.enterKey);
|
|
753
740
|
formActionUrl = _this.config.action;
|
|
754
741
|
}
|
|
755
742
|
else if (form) {
|
|
756
|
-
form.addEventListener('submit', _this.handlers.input.formSubmit);
|
|
743
|
+
((_h = (_g = _this.config.settings) === null || _g === void 0 ? void 0 : _g.bind) === null || _h === void 0 ? void 0 : _h.submit) && form.addEventListener('submit', _this.handlers.input.formSubmit);
|
|
757
744
|
formActionUrl = form.action || '';
|
|
758
745
|
// serializeForm will include additional form element in our urlManager as globals
|
|
759
|
-
if ((
|
|
746
|
+
if ((_j = _this.config.settings) === null || _j === void 0 ? void 0 : _j.serializeForm) {
|
|
760
747
|
bindFormParameters(form, _this.handlers.input.formElementChange, function (elem) {
|
|
761
748
|
return elem != input;
|
|
762
749
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FinderController.d.ts","sourceRoot":"","sources":["../../../src/Finder/FinderController.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AAEpE,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAC3C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAEjE,OAAO,KAAK,EAAE,sBAAsB,
|
|
1
|
+
{"version":3,"file":"FinderController.d.ts","sourceRoot":"","sources":["../../../src/Finder/FinderController.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AAEpE,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAC3C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAEjE,OAAO,KAAK,EAAE,sBAAsB,EAAkB,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAiB7G,qBAAa,gBAAiB,SAAQ,kBAAkB;IAChD,IAAI,kBAA0B;IAC7B,KAAK,EAAE,WAAW,CAAC;IACnB,MAAM,EAAE,sBAAsB,CAAC;gBAGtC,MAAM,EAAE,sBAAsB,EAC9B,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,kBAAkB,EAC1F,OAAO,CAAC,EAAE,gBAAgB;IA+B3B,IAAI,MAAM,IAAI,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CA+BhC;IAED,IAAI,QAAa,QAAQ,IAAI,CAAC,CAkB5B;IAEF,KAAK,QAAO,IAAI,CAId;IAEF,MAAM,QAAa,QAAQ,IAAI,CAAC,CAoI9B;CACF"}
|
|
@@ -133,6 +133,7 @@ var FinderController = /** @class */ (function (_super) {
|
|
|
133
133
|
return __generator(this, function (_b) {
|
|
134
134
|
switch (_b.label) {
|
|
135
135
|
case 0:
|
|
136
|
+
_b.trys.push([0, 16, 17, 18]);
|
|
136
137
|
if (!!this.initialized) return [3 /*break*/, 2];
|
|
137
138
|
return [4 /*yield*/, this.init()];
|
|
138
139
|
case 1:
|
|
@@ -143,20 +144,18 @@ var FinderController = /** @class */ (function (_super) {
|
|
|
143
144
|
return [2 /*return*/];
|
|
144
145
|
}
|
|
145
146
|
params = this.params;
|
|
147
|
+
this.store.loading = true;
|
|
146
148
|
_b.label = 3;
|
|
147
149
|
case 3:
|
|
148
|
-
_b.trys.push([3,
|
|
149
|
-
_b.label = 4;
|
|
150
|
-
case 4:
|
|
151
|
-
_b.trys.push([4, 6, , 7]);
|
|
150
|
+
_b.trys.push([3, 5, , 6]);
|
|
152
151
|
return [4 /*yield*/, this.eventManager.fire('beforeSearch', {
|
|
153
152
|
controller: this,
|
|
154
153
|
request: params,
|
|
155
154
|
})];
|
|
156
|
-
case
|
|
155
|
+
case 4:
|
|
157
156
|
_b.sent();
|
|
158
|
-
return [3 /*break*/,
|
|
159
|
-
case
|
|
157
|
+
return [3 /*break*/, 6];
|
|
158
|
+
case 5:
|
|
160
159
|
err_2 = _b.sent();
|
|
161
160
|
if ((err_2 === null || err_2 === void 0 ? void 0 : err_2.message) == 'cancelled') {
|
|
162
161
|
this.log.warn("'beforeSearch' middleware cancelled");
|
|
@@ -166,11 +165,11 @@ var FinderController = /** @class */ (function (_super) {
|
|
|
166
165
|
this.log.error("error in 'beforeSearch' middleware");
|
|
167
166
|
throw err_2;
|
|
168
167
|
}
|
|
169
|
-
return [3 /*break*/,
|
|
170
|
-
case
|
|
168
|
+
return [3 /*break*/, 6];
|
|
169
|
+
case 6:
|
|
171
170
|
searchProfile = this.profiler.create({ type: 'event', name: 'search', context: params }).start();
|
|
172
171
|
return [4 /*yield*/, this.client.finder(params)];
|
|
173
|
-
case
|
|
172
|
+
case 7:
|
|
174
173
|
_a = _b.sent(), meta = _a[0], response = _a[1];
|
|
175
174
|
// @ts-ignore : MockClient will overwrite the client search() method and use SearchData to return mock data which already contains meta data
|
|
176
175
|
if (!response.meta) {
|
|
@@ -180,18 +179,18 @@ var FinderController = /** @class */ (function (_super) {
|
|
|
180
179
|
searchProfile.stop();
|
|
181
180
|
this.log.profile(searchProfile);
|
|
182
181
|
afterSearchProfile = this.profiler.create({ type: 'event', name: 'afterSearch', context: params }).start();
|
|
183
|
-
_b.label =
|
|
184
|
-
case
|
|
185
|
-
_b.trys.push([
|
|
182
|
+
_b.label = 8;
|
|
183
|
+
case 8:
|
|
184
|
+
_b.trys.push([8, 10, , 11]);
|
|
186
185
|
return [4 /*yield*/, this.eventManager.fire('afterSearch', {
|
|
187
186
|
controller: this,
|
|
188
187
|
request: params,
|
|
189
188
|
response: response,
|
|
190
189
|
})];
|
|
191
|
-
case
|
|
190
|
+
case 9:
|
|
192
191
|
_b.sent();
|
|
193
|
-
return [3 /*break*/,
|
|
194
|
-
case
|
|
192
|
+
return [3 /*break*/, 11];
|
|
193
|
+
case 10:
|
|
195
194
|
err_3 = _b.sent();
|
|
196
195
|
if ((err_3 === null || err_3 === void 0 ? void 0 : err_3.message) == 'cancelled') {
|
|
197
196
|
this.log.warn("'afterSearch' middleware cancelled");
|
|
@@ -202,26 +201,26 @@ var FinderController = /** @class */ (function (_super) {
|
|
|
202
201
|
this.log.error("error in 'afterSearch' middleware");
|
|
203
202
|
throw err_3;
|
|
204
203
|
}
|
|
205
|
-
return [3 /*break*/,
|
|
206
|
-
case
|
|
204
|
+
return [3 /*break*/, 11];
|
|
205
|
+
case 11:
|
|
207
206
|
afterSearchProfile.stop();
|
|
208
207
|
this.log.profile(afterSearchProfile);
|
|
209
208
|
// update the store
|
|
210
209
|
// @ts-ignore : MockClient will overwrite the client search() method and use SearchData to return mock data which already contains meta data
|
|
211
210
|
this.store.update(response);
|
|
212
211
|
afterStoreProfile = this.profiler.create({ type: 'event', name: 'afterStore', context: params }).start();
|
|
213
|
-
_b.label =
|
|
214
|
-
case
|
|
215
|
-
_b.trys.push([
|
|
212
|
+
_b.label = 12;
|
|
213
|
+
case 12:
|
|
214
|
+
_b.trys.push([12, 14, , 15]);
|
|
216
215
|
return [4 /*yield*/, this.eventManager.fire('afterStore', {
|
|
217
216
|
controller: this,
|
|
218
217
|
request: params,
|
|
219
218
|
response: response,
|
|
220
219
|
})];
|
|
221
|
-
case
|
|
220
|
+
case 13:
|
|
222
221
|
_b.sent();
|
|
223
|
-
return [3 /*break*/,
|
|
224
|
-
case
|
|
222
|
+
return [3 /*break*/, 15];
|
|
223
|
+
case 14:
|
|
225
224
|
err_4 = _b.sent();
|
|
226
225
|
if ((err_4 === null || err_4 === void 0 ? void 0 : err_4.message) == 'cancelled') {
|
|
227
226
|
this.log.warn("'afterStore' middleware cancelled");
|
|
@@ -232,12 +231,12 @@ var FinderController = /** @class */ (function (_super) {
|
|
|
232
231
|
this.log.error("error in 'afterStore' middleware");
|
|
233
232
|
throw err_4;
|
|
234
233
|
}
|
|
235
|
-
return [3 /*break*/,
|
|
236
|
-
case
|
|
234
|
+
return [3 /*break*/, 15];
|
|
235
|
+
case 15:
|
|
237
236
|
afterStoreProfile.stop();
|
|
238
237
|
this.log.profile(afterStoreProfile);
|
|
239
238
|
return [3 /*break*/, 18];
|
|
240
|
-
case
|
|
239
|
+
case 16:
|
|
241
240
|
err_5 = _b.sent();
|
|
242
241
|
if (err_5) {
|
|
243
242
|
if (err_5.err && err_5.fetchDetails) {
|
|
@@ -277,9 +276,11 @@ var FinderController = /** @class */ (function (_super) {
|
|
|
277
276
|
this.log.error(err_5);
|
|
278
277
|
this.handleError(err_5);
|
|
279
278
|
}
|
|
280
|
-
this.store.loading = false;
|
|
281
279
|
}
|
|
282
280
|
return [3 /*break*/, 18];
|
|
281
|
+
case 17:
|
|
282
|
+
this.store.loading = false;
|
|
283
|
+
return [7 /*endfinally*/];
|
|
283
284
|
case 18: return [2 /*return*/];
|
|
284
285
|
}
|
|
285
286
|
});
|
|
@@ -293,19 +294,7 @@ var FinderController = /** @class */ (function (_super) {
|
|
|
293
294
|
return __assign(__assign({}, translatorConfig), { urlRoot: _this.config.url });
|
|
294
295
|
});
|
|
295
296
|
}
|
|
296
|
-
|
|
297
|
-
return __generator(this, function (_a) {
|
|
298
|
-
switch (_a.label) {
|
|
299
|
-
case 0:
|
|
300
|
-
finder.controller.store.loading = true;
|
|
301
|
-
return [4 /*yield*/, next()];
|
|
302
|
-
case 1:
|
|
303
|
-
_a.sent();
|
|
304
|
-
return [2 /*return*/];
|
|
305
|
-
}
|
|
306
|
-
});
|
|
307
|
-
}); });
|
|
308
|
-
// TODO: move this to afterStore
|
|
297
|
+
// TODO: remove this aftersearch when store interface changes
|
|
309
298
|
_this.eventManager.on('afterSearch', function (finder, next) { return __awaiter(_this, void 0, void 0, function () {
|
|
310
299
|
return __generator(this, function (_a) {
|
|
311
300
|
switch (_a.label) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RecommendationController.d.ts","sourceRoot":"","sources":["../../../src/Recommendation/RecommendationController.ts"],"names":[],"mappings":"AAGA,OAAO,EAAa,OAAO,EAAE,MAAM,+BAA+B,CAAC;AACnE,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AACzD,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AACpE,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAE3C,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AAEzE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AACvE,OAAO,KAAK,EAAE,8BAA8B,
|
|
1
|
+
{"version":3,"file":"RecommendationController.d.ts","sourceRoot":"","sources":["../../../src/Recommendation/RecommendationController.ts"],"names":[],"mappings":"AAGA,OAAO,EAAa,OAAO,EAAE,MAAM,+BAA+B,CAAC;AACnE,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AACzD,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AACpE,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAE3C,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AAEzE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AACvE,OAAO,KAAK,EAAE,8BAA8B,EAAiB,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAEpH,KAAK,0BAA0B,GAAG;IACjC,OAAO,EAAE;QACR,KAAK,EAAE,CAAC,CAAC,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,KAAK,WAAW,GAAG,SAAS,CAAC;QACnE,MAAM,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,WAAW,GAAG,SAAS,CAAC;QACrD,UAAU,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,WAAW,GAAG,SAAS,CAAC;QACzD,iBAAiB,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,WAAW,GAAG,SAAS,CAAC;QAChE,aAAa,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,WAAW,GAAG,SAAS,CAAC;KAC5D,CAAC;IACF,KAAK,EAAE,CAAC,CAAC,EAAE,UAAU,KAAK,WAAW,GAAG,SAAS,CAAC;IAClD,SAAS,EAAE,CAAC,CAAC,EAAE,UAAU,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,WAAW,GAAG,SAAS,CAAC;IAC1E,UAAU,EAAE,MAAM,WAAW,GAAG,SAAS,CAAC;IAC1C,MAAM,EAAE,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,KAAK,WAAW,GAAG,SAAS,CAAC;CACzD,CAAC;AAUF,qBAAa,wBAAyB,SAAQ,kBAAkB;IACxD,IAAI,kBAAkC;IACrC,KAAK,EAAE,mBAAmB,CAAC;IAC3B,MAAM,EAAE,8BAA8B,CAAC;IAE/C,MAAM,EAAE;QACP,KAAK,CAAC,EAAE,WAAW,CAAC;QACpB,UAAU,CAAC,EAAE,WAAW,CAAC;QACzB,MAAM,CAAC,EAAE,WAAW,CAAC;QACrB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE;YAAE,UAAU,CAAC,EAAE,WAAW,CAAC;YAAC,MAAM,CAAC,EAAE,WAAW,CAAA;SAAE,CAAC,CAAC;KAC7E,CAKC;gBAGD,MAAM,EAAE,8BAA8B,EACtC,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,kBAAkB,EAC1F,OAAO,CAAC,EAAE,gBAAgB;IA4C3B,KAAK,EAAE,0BAA0B,CAwS5B;IAEL,IAAI,MAAM,IAAI,qBAAqB,CA2BlC;IAED,MAAM,QAAa,QAAQ,IAAI,CAAC,CA0H9B;CACF"}
|
|
@@ -82,6 +82,7 @@ var RecommendationController = /** @class */ (function (_super) {
|
|
|
82
82
|
__extends(RecommendationController, _super);
|
|
83
83
|
function RecommendationController(config, _a, context) {
|
|
84
84
|
var client = _a.client, store = _a.store, urlManager = _a.urlManager, eventManager = _a.eventManager, profiler = _a.profiler, logger = _a.logger, tracker = _a.tracker;
|
|
85
|
+
var _b;
|
|
85
86
|
var _this = _super.call(this, config, { client: client, store: store, urlManager: urlManager, eventManager: eventManager, profiler: profiler, logger: logger, tracker: tracker }, context) || this;
|
|
86
87
|
_this.type = types_1.ControllerTypes.recommendation;
|
|
87
88
|
_this.events = {
|
|
@@ -395,6 +396,7 @@ var RecommendationController = /** @class */ (function (_super) {
|
|
|
395
396
|
return __generator(this, function (_a) {
|
|
396
397
|
switch (_a.label) {
|
|
397
398
|
case 0:
|
|
399
|
+
_a.trys.push([0, 16, 17, 18]);
|
|
398
400
|
if (!!this.initialized) return [3 /*break*/, 2];
|
|
399
401
|
return [4 /*yield*/, this.init()];
|
|
400
402
|
case 1:
|
|
@@ -402,20 +404,18 @@ var RecommendationController = /** @class */ (function (_super) {
|
|
|
402
404
|
_a.label = 2;
|
|
403
405
|
case 2:
|
|
404
406
|
params = this.params;
|
|
407
|
+
this.store.loading = true;
|
|
405
408
|
_a.label = 3;
|
|
406
409
|
case 3:
|
|
407
|
-
_a.trys.push([3,
|
|
408
|
-
_a.label = 4;
|
|
409
|
-
case 4:
|
|
410
|
-
_a.trys.push([4, 6, , 7]);
|
|
410
|
+
_a.trys.push([3, 5, , 6]);
|
|
411
411
|
return [4 /*yield*/, this.eventManager.fire('beforeSearch', {
|
|
412
412
|
controller: this,
|
|
413
413
|
request: params,
|
|
414
414
|
})];
|
|
415
|
-
case
|
|
415
|
+
case 4:
|
|
416
416
|
_a.sent();
|
|
417
|
-
return [3 /*break*/,
|
|
418
|
-
case
|
|
417
|
+
return [3 /*break*/, 6];
|
|
418
|
+
case 5:
|
|
419
419
|
err_1 = _a.sent();
|
|
420
420
|
if ((err_1 === null || err_1 === void 0 ? void 0 : err_1.message) == 'cancelled') {
|
|
421
421
|
this.log.warn("'beforeSearch' middleware cancelled");
|
|
@@ -425,27 +425,27 @@ var RecommendationController = /** @class */ (function (_super) {
|
|
|
425
425
|
this.log.error("error in 'beforeSearch' middleware");
|
|
426
426
|
throw err_1;
|
|
427
427
|
}
|
|
428
|
-
return [3 /*break*/,
|
|
429
|
-
case
|
|
428
|
+
return [3 /*break*/, 6];
|
|
429
|
+
case 6:
|
|
430
430
|
searchProfile = this.profiler.create({ type: 'event', name: 'search', context: params }).start();
|
|
431
431
|
return [4 /*yield*/, this.client.recommend(params)];
|
|
432
|
-
case
|
|
432
|
+
case 7:
|
|
433
433
|
response = _a.sent();
|
|
434
434
|
searchProfile.stop();
|
|
435
435
|
this.log.profile(searchProfile);
|
|
436
436
|
afterSearchProfile = this.profiler.create({ type: 'event', name: 'afterSearch', context: params }).start();
|
|
437
|
-
_a.label =
|
|
438
|
-
case
|
|
439
|
-
_a.trys.push([
|
|
437
|
+
_a.label = 8;
|
|
438
|
+
case 8:
|
|
439
|
+
_a.trys.push([8, 10, , 11]);
|
|
440
440
|
return [4 /*yield*/, this.eventManager.fire('afterSearch', {
|
|
441
441
|
controller: this,
|
|
442
442
|
request: params,
|
|
443
443
|
response: response,
|
|
444
444
|
})];
|
|
445
|
-
case
|
|
445
|
+
case 9:
|
|
446
446
|
_a.sent();
|
|
447
|
-
return [3 /*break*/,
|
|
448
|
-
case
|
|
447
|
+
return [3 /*break*/, 11];
|
|
448
|
+
case 10:
|
|
449
449
|
err_2 = _a.sent();
|
|
450
450
|
if ((err_2 === null || err_2 === void 0 ? void 0 : err_2.message) == 'cancelled') {
|
|
451
451
|
this.log.warn("'afterSearch' middleware cancelled");
|
|
@@ -456,25 +456,25 @@ var RecommendationController = /** @class */ (function (_super) {
|
|
|
456
456
|
this.log.error("error in 'afterSearch' middleware");
|
|
457
457
|
throw err_2;
|
|
458
458
|
}
|
|
459
|
-
return [3 /*break*/,
|
|
460
|
-
case
|
|
459
|
+
return [3 /*break*/, 11];
|
|
460
|
+
case 11:
|
|
461
461
|
afterSearchProfile.stop();
|
|
462
462
|
this.log.profile(afterSearchProfile);
|
|
463
463
|
// update the store
|
|
464
464
|
this.store.update(response);
|
|
465
465
|
afterStoreProfile = this.profiler.create({ type: 'event', name: 'afterStore', context: params }).start();
|
|
466
|
-
_a.label =
|
|
467
|
-
case
|
|
468
|
-
_a.trys.push([
|
|
466
|
+
_a.label = 12;
|
|
467
|
+
case 12:
|
|
468
|
+
_a.trys.push([12, 14, , 15]);
|
|
469
469
|
return [4 /*yield*/, this.eventManager.fire('afterStore', {
|
|
470
470
|
controller: this,
|
|
471
471
|
request: params,
|
|
472
472
|
response: response,
|
|
473
473
|
})];
|
|
474
|
-
case
|
|
474
|
+
case 13:
|
|
475
475
|
_a.sent();
|
|
476
|
-
return [3 /*break*/,
|
|
477
|
-
case
|
|
476
|
+
return [3 /*break*/, 15];
|
|
477
|
+
case 14:
|
|
478
478
|
err_3 = _a.sent();
|
|
479
479
|
if ((err_3 === null || err_3 === void 0 ? void 0 : err_3.message) == 'cancelled') {
|
|
480
480
|
this.log.warn("'afterStore' middleware cancelled");
|
|
@@ -485,12 +485,12 @@ var RecommendationController = /** @class */ (function (_super) {
|
|
|
485
485
|
this.log.error("error in 'afterStore' middleware");
|
|
486
486
|
throw err_3;
|
|
487
487
|
}
|
|
488
|
-
return [3 /*break*/,
|
|
489
|
-
case
|
|
488
|
+
return [3 /*break*/, 15];
|
|
489
|
+
case 15:
|
|
490
490
|
afterStoreProfile.stop();
|
|
491
491
|
this.log.profile(afterStoreProfile);
|
|
492
492
|
return [3 /*break*/, 18];
|
|
493
|
-
case
|
|
493
|
+
case 16:
|
|
494
494
|
err_4 = _a.sent();
|
|
495
495
|
if (err_4) {
|
|
496
496
|
if (err_4.err && err_4.fetchDetails) {
|
|
@@ -530,9 +530,11 @@ var RecommendationController = /** @class */ (function (_super) {
|
|
|
530
530
|
this.log.error(err_4);
|
|
531
531
|
this.handleError(err_4);
|
|
532
532
|
}
|
|
533
|
-
this.store.loading = false;
|
|
534
533
|
}
|
|
535
534
|
return [3 /*break*/, 18];
|
|
535
|
+
case 17:
|
|
536
|
+
this.store.loading = false;
|
|
537
|
+
return [7 /*endfinally*/];
|
|
536
538
|
case 18: return [2 /*return*/];
|
|
537
539
|
}
|
|
538
540
|
});
|
|
@@ -540,22 +542,18 @@ var RecommendationController = /** @class */ (function (_super) {
|
|
|
540
542
|
if (!config.tag) {
|
|
541
543
|
throw new Error("Invalid config passed to RecommendationController. The \"tag\" attribute is required.");
|
|
542
544
|
}
|
|
545
|
+
// attach to bfCache restore event and re-run search on the controller
|
|
546
|
+
// enabled by default
|
|
547
|
+
if (((_b = config.settings) === null || _b === void 0 ? void 0 : _b.searchOnPageShow) !== false) {
|
|
548
|
+
window.addEventListener('pageshow', function (e) {
|
|
549
|
+
if (e.persisted && !_this.store.error && _this.store.loaded && !_this.store.loading) {
|
|
550
|
+
_this.search();
|
|
551
|
+
}
|
|
552
|
+
});
|
|
553
|
+
}
|
|
543
554
|
// deep merge config with defaults
|
|
544
555
|
_this.config = (0, deepmerge_1.default)(defaultConfig, _this.config);
|
|
545
556
|
_this.store.setConfig(_this.config);
|
|
546
|
-
// add 'beforeSearch' middleware
|
|
547
|
-
_this.eventManager.on('beforeSearch', function (recommend, next) { return __awaiter(_this, void 0, void 0, function () {
|
|
548
|
-
return __generator(this, function (_a) {
|
|
549
|
-
switch (_a.label) {
|
|
550
|
-
case 0:
|
|
551
|
-
recommend.controller.store.loading = true;
|
|
552
|
-
return [4 /*yield*/, next()];
|
|
553
|
-
case 1:
|
|
554
|
-
_a.sent();
|
|
555
|
-
return [2 /*return*/];
|
|
556
|
-
}
|
|
557
|
-
});
|
|
558
|
-
}); });
|
|
559
557
|
// add 'afterStore' middleware
|
|
560
558
|
_this.eventManager.on('afterStore', function (recommend, next) { return __awaiter(_this, void 0, void 0, function () {
|
|
561
559
|
var _this = this;
|
|
@@ -578,7 +576,6 @@ var RecommendationController = /** @class */ (function (_super) {
|
|
|
578
576
|
_this.track.product.removedFromBundle(item);
|
|
579
577
|
});
|
|
580
578
|
});
|
|
581
|
-
recommend.controller.store.loading = false;
|
|
582
579
|
return [2 /*return*/];
|
|
583
580
|
}
|
|
584
581
|
});
|
|
@@ -15,7 +15,6 @@ export declare class SearchController extends AbstractController {
|
|
|
15
15
|
store: SearchStore;
|
|
16
16
|
config: SearchControllerConfig;
|
|
17
17
|
storage: StorageStore;
|
|
18
|
-
private previousResults;
|
|
19
18
|
constructor(config: SearchControllerConfig, { client, store, urlManager, eventManager, profiler, logger, tracker }: ControllerServices, context?: ContextVariables);
|
|
20
19
|
track: SearchTrackMethods;
|
|
21
20
|
get params(): SearchRequestModel;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SearchController.d.ts","sourceRoot":"","sources":["../../../src/Search/SearchController.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AACpE,OAAO,EAAE,YAAY,EAAa,MAAM,+BAA+B,CAAC;AAExE,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAE3C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAC9D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,KAAK,EACX,sBAAsB,
|
|
1
|
+
{"version":3,"file":"SearchController.d.ts","sourceRoot":"","sources":["../../../src/Search/SearchController.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AACpE,OAAO,EAAE,YAAY,EAAa,MAAM,+BAA+B,CAAC;AAExE,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAE3C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAC9D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,KAAK,EACX,sBAAsB,EAGtB,kBAAkB,EAClB,gBAAgB,EAGhB,MAAM,UAAU,CAAC;AAElB,OAAO,KAAK,EACX,kBAAkB,EAKlB,MAAM,2BAA2B,CAAC;AAmBnC,KAAK,kBAAkB,GAAG;IACzB,OAAO,EAAE;QACR,KAAK,EAAE,CAAC,CAAC,EAAE,UAAU,EAAE,MAAM,EAAE,GAAG,KAAK,WAAW,GAAG,SAAS,CAAC;KAC/D,CAAC;CACF,CAAC;AAEF,qBAAa,gBAAiB,SAAQ,kBAAkB;IAChD,IAAI,kBAA0B;IAC7B,KAAK,EAAE,WAAW,CAAC;IACnB,MAAM,EAAE,sBAAsB,CAAC;IACvC,OAAO,EAAE,YAAY,CAAC;gBAGrB,MAAM,EAAE,sBAAsB,EAC9B,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,kBAAkB,EAC1F,OAAO,CAAC,EAAE,gBAAgB;IAsJ3B,KAAK,EAAE,kBAAkB,CA+CvB;IAEF,IAAI,MAAM,IAAI,kBAAkB,CAiD/B;IAED,MAAM,QAAa,QAAQ,IAAI,CAAC,CA2M9B;CACF;AAED,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,kBAAkB,GAAG,kBAAkB,CAiBxF;AAED,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,SAAI,GAAG,MAAM,GAAG,SAAS,CAgCvG"}
|