@searchspring/snap-controller 0.61.5 → 0.62.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.
@@ -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,EAAkD,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAEnJ,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,2BAA2B,CAAC;AAG1E,eAAO,MAAM,WAAW,MAAM,CAAC;AA2B/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;IAuE3B,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;;;;uBAsDL,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,CAmI9B;CACF"}
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
- _d.label = 1;
388
- case 1:
389
- _d.trys.push([1, 15, , 16]);
390
- _d.label = 2;
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*/, 5];
411
- case 5:
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 6:
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 = 7;
425
- case 7:
426
- _d.trys.push([7, 9, , 10]);
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*/, 10];
447
- case 10:
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 = 11;
454
- case 11:
455
- _d.trys.push([11, 13, , 14]);
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*/, 14];
476
- case 14:
486
+ return [3 /*break*/, 15];
487
+ case 15:
477
488
  afterStoreProfile.stop();
478
489
  this.log.profile(afterStoreProfile);
479
- return [3 /*break*/, 16];
480
- case 15:
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*/, 16];
523
- case 16: return [2 /*return*/];
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 (((_b = (_a = _this.config) === null || _a === void 0 ? void 0 : _a.settings) === null || _b === void 0 ? void 0 : _b.initializeFromUrl) && !input.value && _this.store.state.input) {
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 ((_c = _this.config.settings) === null || _c === void 0 ? void 0 : _c.serializeForm) {
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,EAAmC,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAiB9H,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;IAqC3B,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,CAkI9B;CACF"}
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, 17, , 18]);
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 5:
155
+ case 4:
157
156
  _b.sent();
158
- return [3 /*break*/, 7];
159
- case 6:
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*/, 7];
170
- case 7:
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 8:
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 = 9;
184
- case 9:
185
- _b.trys.push([9, 11, , 12]);
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 10:
190
+ case 9:
192
191
  _b.sent();
193
- return [3 /*break*/, 12];
194
- case 11:
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*/, 12];
206
- case 12:
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 = 13;
214
- case 13:
215
- _b.trys.push([13, 15, , 16]);
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 14:
220
+ case 13:
222
221
  _b.sent();
223
- return [3 /*break*/, 16];
224
- case 15:
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*/, 16];
236
- case 16:
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 17:
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
- _this.eventManager.on('beforeSearch', function (finder, next) { return __awaiter(_this, void 0, void 0, function () {
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,EAAkC,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAErI,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;IA2C3B,KAAK,EAAE,0BAA0B,CAwS5B;IAEL,IAAI,MAAM,IAAI,qBAAqB,CA2BlC;IAED,MAAM,QAAa,QAAQ,IAAI,CAAC,CAuH9B;CACF"}
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, 17, , 18]);
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 5:
415
+ case 4:
416
416
  _a.sent();
417
- return [3 /*break*/, 7];
418
- case 6:
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*/, 7];
429
- case 7:
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 8:
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 = 9;
438
- case 9:
439
- _a.trys.push([9, 11, , 12]);
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 10:
445
+ case 9:
446
446
  _a.sent();
447
- return [3 /*break*/, 12];
448
- case 11:
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*/, 12];
460
- case 12:
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 = 13;
467
- case 13:
468
- _a.trys.push([13, 15, , 16]);
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 14:
474
+ case 13:
475
475
  _a.sent();
476
- return [3 /*break*/, 16];
477
- case 15:
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*/, 16];
489
- case 16:
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 17:
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
  });
@@ -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,EAItB,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;IACtB,OAAO,CAAC,eAAe,CAAwC;gBAG9D,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;IAgK3B,KAAK,EAAE,kBAAkB,CA+CvB;IAEF,IAAI,MAAM,IAAI,kBAAkB,CAiD/B;IAED,MAAM,QAAa,QAAQ,IAAI,CAAC,CAkN9B;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"}
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;IACtB,OAAO,CAAC,eAAe,CAAwC;gBAG9D,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;IAuJ3B,KAAK,EAAE,kBAAkB,CA+CvB;IAEF,IAAI,MAAM,IAAI,kBAAkB,CAiD/B;IAED,MAAM,QAAa,QAAQ,IAAI,CAAC,CAmN9B;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"}
@@ -148,38 +148,37 @@ var SearchController = /** @class */ (function (_super) {
148
148
  },
149
149
  };
150
150
  _this.search = function () { return __awaiter(_this, void 0, void 0, function () {
151
- var params, err_1, stringyParams, prevStringyParams, searchProfile, meta, response, preventBackfill, dontBackfill, backfillRequests, backfillResponses, backfillResults, afterSearchProfile, err_2, afterStoreProfile, err_3, err_4;
151
+ var params_1, err_1, stringyParams, prevStringyParams, searchProfile, meta, response, preventBackfill, dontBackfill, backfillRequests, backfillResponses, backfillResults, afterSearchProfile, err_2, afterStoreProfile, err_3, err_4;
152
152
  var _a, _b;
153
153
  var _this = this;
154
154
  var _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o;
155
155
  return __generator(this, function (_p) {
156
156
  switch (_p.label) {
157
157
  case 0:
158
+ _p.trys.push([0, 22, 23, 24]);
158
159
  if (!!this.initialized) return [3 /*break*/, 2];
159
160
  return [4 /*yield*/, this.init()];
160
161
  case 1:
161
162
  _p.sent();
162
163
  _p.label = 2;
163
164
  case 2:
164
- params = this.params;
165
+ params_1 = this.params;
165
166
  if (((_d = (_c = this.params.search) === null || _c === void 0 ? void 0 : _c.query) === null || _d === void 0 ? void 0 : _d.string) && ((_f = (_e = this.params.search) === null || _e === void 0 ? void 0 : _e.query) === null || _f === void 0 ? void 0 : _f.string.length)) {
166
167
  // save it to the history store
167
168
  this.store.history.save(this.params.search.query.string);
168
169
  }
170
+ this.store.loading = true;
169
171
  _p.label = 3;
170
172
  case 3:
171
- _p.trys.push([3, 23, , 24]);
172
- _p.label = 4;
173
- case 4:
174
- _p.trys.push([4, 6, , 7]);
173
+ _p.trys.push([3, 5, , 6]);
175
174
  return [4 /*yield*/, this.eventManager.fire('beforeSearch', {
176
175
  controller: this,
177
- request: params,
176
+ request: params_1,
178
177
  })];
179
- case 5:
178
+ case 4:
180
179
  _p.sent();
181
- return [3 /*break*/, 7];
182
- case 6:
180
+ return [3 /*break*/, 6];
181
+ case 5:
183
182
  err_1 = _p.sent();
184
183
  if ((err_1 === null || err_1 === void 0 ? void 0 : err_1.message) == 'cancelled') {
185
184
  this.log.warn("'beforeSearch' middleware cancelled");
@@ -189,19 +188,19 @@ var SearchController = /** @class */ (function (_super) {
189
188
  this.log.error("error in 'beforeSearch' middleware");
190
189
  throw err_1;
191
190
  }
192
- return [3 /*break*/, 7];
193
- case 7:
194
- stringyParams = JSON.stringify(params);
191
+ return [3 /*break*/, 6];
192
+ case 6:
193
+ stringyParams = JSON.stringify(params_1);
195
194
  prevStringyParams = this.storage.get('lastStringyParams');
196
195
  if (stringyParams == prevStringyParams) {
197
196
  // no param change - not searching
198
197
  return [2 /*return*/];
199
198
  }
200
- searchProfile = this.profiler.create({ type: 'event', name: 'search', context: params }).start();
199
+ searchProfile = this.profiler.create({ type: 'event', name: 'search', context: params_1 }).start();
201
200
  meta = {};
202
201
  response = {};
203
- if (!(((_g = this.config.settings) === null || _g === void 0 ? void 0 : _g.infinite) && ((_h = params.pagination) === null || _h === void 0 ? void 0 : _h.page) && params.pagination.page > 1)) return [3 /*break*/, 12];
204
- preventBackfill = ((_j = this.config.settings.infinite) === null || _j === void 0 ? void 0 : _j.backfill) && !this.store.results.length && params.pagination.page > this.config.settings.infinite.backfill;
202
+ if (!(((_g = this.config.settings) === null || _g === void 0 ? void 0 : _g.infinite) && ((_h = params_1.pagination) === null || _h === void 0 ? void 0 : _h.page) && params_1.pagination.page > 1)) return [3 /*break*/, 11];
203
+ preventBackfill = ((_j = this.config.settings.infinite) === null || _j === void 0 ? void 0 : _j.backfill) && !this.store.results.length && params_1.pagination.page > this.config.settings.infinite.backfill;
205
204
  dontBackfill = !((_k = this.config.settings.infinite) === null || _k === void 0 ? void 0 : _k.backfill) && !this.store.results.length;
206
205
  // if the page is higher than the backfill setting redirect back to page 1
207
206
  if (preventBackfill || dontBackfill) {
@@ -209,12 +208,12 @@ var SearchController = /** @class */ (function (_super) {
209
208
  this.urlManager.set('page', 1).go();
210
209
  return [2 /*return*/];
211
210
  }
212
- if (!(((_l = this.config.settings) === null || _l === void 0 ? void 0 : _l.infinite.backfill) && !this.previousResults.length)) return [3 /*break*/, 9];
213
- backfillRequests = Array(params.pagination.page)
211
+ if (!(((_l = this.config.settings) === null || _l === void 0 ? void 0 : _l.infinite.backfill) && !this.previousResults.length)) return [3 /*break*/, 8];
212
+ backfillRequests = Array(params_1.pagination.page)
214
213
  .fill('backfill')
215
214
  .map(function (v, i) {
216
215
  var _a, _b, _c, _d;
217
- var backfillParams = (0, deepmerge_1.default)(__assign({}, params), { pagination: { page: i + 1 }, search: { redirectResponse: 'full' } });
216
+ var backfillParams = (0, deepmerge_1.default)(__assign({}, params_1), { pagination: { page: i + 1 }, search: { redirectResponse: 'full' } });
218
217
  // don't include page parameter if on page 1
219
218
  if (i + 1 == 1) {
220
219
  (_a = backfillParams === null || backfillParams === void 0 ? void 0 : backfillParams.pagination) === null || _a === void 0 ? true : delete _a.page;
@@ -227,7 +226,7 @@ var SearchController = /** @class */ (function (_super) {
227
226
  return _this.client.search(backfillParams);
228
227
  });
229
228
  return [4 /*yield*/, Promise.all(backfillRequests)];
230
- case 8:
229
+ case 7:
231
230
  backfillResponses = _p.sent();
232
231
  // backfillResponses are [meta, searchResponse][]
233
232
  // set the meta and response to the first page of backfillResponses
@@ -239,43 +238,43 @@ var SearchController = /** @class */ (function (_super) {
239
238
  }, []);
240
239
  // overwrite pagination params to expected state
241
240
  response.pagination.totalPages = Math.ceil(response.pagination.totalResults / response.pagination.pageSize);
242
- response.pagination.page = (_m = params.pagination) === null || _m === void 0 ? void 0 : _m.page;
241
+ response.pagination.page = (_m = params_1.pagination) === null || _m === void 0 ? void 0 : _m.page;
243
242
  // set the response results with results from backfill responses
244
243
  response.results = backfillResults;
245
- return [3 /*break*/, 11];
246
- case 9: return [4 /*yield*/, this.client.search(params)];
247
- case 10:
244
+ return [3 /*break*/, 10];
245
+ case 8: return [4 /*yield*/, this.client.search(params_1)];
246
+ case 9:
248
247
  // infinite with no backfills.
249
248
  _a = _p.sent(), meta = _a[0], response = _a[1];
250
249
  // append new results to previous results
251
250
  response.results = __spreadArray(__spreadArray([], this.previousResults, true), (response.results || []), true);
252
- _p.label = 11;
253
- case 11: return [3 /*break*/, 14];
254
- case 12: return [4 /*yield*/, this.client.search(params)];
255
- case 13:
251
+ _p.label = 10;
252
+ case 10: return [3 /*break*/, 13];
253
+ case 11: return [4 /*yield*/, this.client.search(params_1)];
254
+ case 12:
256
255
  // standard request (not using infinite scroll)
257
256
  _b = _p.sent(), meta = _b[0], response = _b[1];
258
- _p.label = 14;
259
- case 14:
257
+ _p.label = 13;
258
+ case 13:
260
259
  // MockClient will overwrite the client search() method and use SearchData to return mock data which already contains meta data
261
260
  if (!response.meta) {
262
261
  response.meta = meta;
263
262
  }
264
263
  searchProfile.stop();
265
264
  this.log.profile(searchProfile);
266
- afterSearchProfile = this.profiler.create({ type: 'event', name: 'afterSearch', context: params }).start();
267
- _p.label = 15;
268
- case 15:
269
- _p.trys.push([15, 17, , 18]);
265
+ afterSearchProfile = this.profiler.create({ type: 'event', name: 'afterSearch', context: params_1 }).start();
266
+ _p.label = 14;
267
+ case 14:
268
+ _p.trys.push([14, 16, , 17]);
270
269
  return [4 /*yield*/, this.eventManager.fire('afterSearch', {
271
270
  controller: this,
272
- request: params,
271
+ request: params_1,
273
272
  response: response,
274
273
  })];
275
- case 16:
274
+ case 15:
276
275
  _p.sent();
277
- return [3 /*break*/, 18];
278
- case 17:
276
+ return [3 /*break*/, 17];
277
+ case 16:
279
278
  err_2 = _p.sent();
280
279
  if ((err_2 === null || err_2 === void 0 ? void 0 : err_2.message) == 'cancelled') {
281
280
  this.log.warn("'afterSearch' middleware cancelled");
@@ -286,8 +285,8 @@ var SearchController = /** @class */ (function (_super) {
286
285
  this.log.error("error in 'afterSearch' middleware");
287
286
  throw err_2;
288
287
  }
289
- return [3 /*break*/, 18];
290
- case 18:
288
+ return [3 /*break*/, 17];
289
+ case 17:
291
290
  afterSearchProfile.stop();
292
291
  this.log.profile(afterSearchProfile);
293
292
  // store previous results for infinite usage
@@ -296,19 +295,19 @@ var SearchController = /** @class */ (function (_super) {
296
295
  }
297
296
  // update the store
298
297
  this.store.update(response);
299
- afterStoreProfile = this.profiler.create({ type: 'event', name: 'afterStore', context: params }).start();
300
- _p.label = 19;
301
- case 19:
302
- _p.trys.push([19, 21, , 22]);
298
+ afterStoreProfile = this.profiler.create({ type: 'event', name: 'afterStore', context: params_1 }).start();
299
+ _p.label = 18;
300
+ case 18:
301
+ _p.trys.push([18, 20, , 21]);
303
302
  return [4 /*yield*/, this.eventManager.fire('afterStore', {
304
303
  controller: this,
305
- request: params,
304
+ request: params_1,
306
305
  response: response,
307
306
  })];
308
- case 20:
307
+ case 19:
309
308
  _p.sent();
310
- return [3 /*break*/, 22];
311
- case 21:
309
+ return [3 /*break*/, 21];
310
+ case 20:
312
311
  err_3 = _p.sent();
313
312
  if ((err_3 === null || err_3 === void 0 ? void 0 : err_3.message) == 'cancelled') {
314
313
  this.log.warn("'afterStore' middleware cancelled");
@@ -319,12 +318,12 @@ var SearchController = /** @class */ (function (_super) {
319
318
  this.log.error("error in 'afterStore' middleware");
320
319
  throw err_3;
321
320
  }
322
- return [3 /*break*/, 22];
323
- case 22:
321
+ return [3 /*break*/, 21];
322
+ case 21:
324
323
  afterStoreProfile.stop();
325
324
  this.log.profile(afterStoreProfile);
326
325
  return [3 /*break*/, 24];
327
- case 23:
326
+ case 22:
328
327
  err_4 = _p.sent();
329
328
  if (err_4) {
330
329
  if (err_4.err && err_4.fetchDetails) {
@@ -364,9 +363,11 @@ var SearchController = /** @class */ (function (_super) {
364
363
  this.log.error(err_4);
365
364
  this.handleError(err_4);
366
365
  }
367
- this.store.loading = false;
368
366
  }
369
367
  return [3 /*break*/, 24];
368
+ case 23:
369
+ this.store.loading = false;
370
+ return [7 /*endfinally*/];
370
371
  case 24: return [2 /*return*/];
371
372
  }
372
373
  });
@@ -384,19 +385,6 @@ var SearchController = /** @class */ (function (_super) {
384
385
  });
385
386
  // set last params to undefined for compare in search
386
387
  _this.storage.set('lastStringyParams', undefined);
387
- // add 'beforeSearch' middleware
388
- _this.eventManager.on('beforeSearch', function (search, next) { return __awaiter(_this, void 0, void 0, function () {
389
- return __generator(this, function (_a) {
390
- switch (_a.label) {
391
- case 0:
392
- search.controller.store.loading = true;
393
- return [4 /*yield*/, next()];
394
- case 1:
395
- _a.sent();
396
- return [2 /*return*/];
397
- }
398
- });
399
- }); });
400
388
  // add 'afterSearch' middleware
401
389
  _this.eventManager.on('afterSearch', function (search, next) { return __awaiter(_this, void 0, void 0, function () {
402
390
  var config, redirectURL, searchStore, nonBackgroundFilters;
@@ -447,7 +435,6 @@ var SearchController = /** @class */ (function (_super) {
447
435
  return [4 /*yield*/, this.eventManager.fire('restorePosition', { controller: this, element: elementPosition })];
448
436
  case 2:
449
437
  _a.sent();
450
- search.controller.store.loading = false;
451
438
  return [2 /*return*/];
452
439
  }
453
440
  });
@@ -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,EAAkD,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAEnJ,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,2BAA2B,CAAC;AAG1E,eAAO,MAAM,WAAW,MAAM,CAAC;AA2B/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;IAuE3B,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;;;;uBAsDL,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,CAmI9B;CACF"}
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"}
@@ -27,6 +27,10 @@ const defaultConfig = {
27
27
  merchandising: true,
28
28
  singleResult: false,
29
29
  },
30
+ bind: {
31
+ input: true,
32
+ submit: true,
33
+ },
30
34
  },
31
35
  };
32
36
  export class AutocompleteController extends AbstractController {
@@ -176,6 +180,8 @@ export class AutocompleteController extends AbstractController {
176
180
  return;
177
181
  }
178
182
  this.store.state.input = value;
183
+ // remove merch redirect to prevent race condition
184
+ this.store.merchandising.redirect = '';
179
185
  if (this.config?.settings?.syncInputs) {
180
186
  const inputs = document.querySelectorAll(this.config.selector);
181
187
  inputs.forEach((input) => {
@@ -247,16 +253,20 @@ export class AutocompleteController extends AbstractController {
247
253
  this.store.updateTrendingTerms(terms);
248
254
  };
249
255
  this.search = async () => {
250
- // if urlManager has no query, there will be no need to get params and no query
251
- if (!this.urlManager.state.query) {
252
- return;
253
- }
254
- const params = this.params;
255
- // if params have no query do not search
256
- if (!params?.search?.query?.string) {
257
- return;
258
- }
259
256
  try {
257
+ if (!this.initialized) {
258
+ await this.init();
259
+ }
260
+ // if urlManager has no query, there will be no need to get params and no query
261
+ if (!this.urlManager.state.query) {
262
+ return;
263
+ }
264
+ const params = this.params;
265
+ // if params have no query do not search
266
+ if (!params?.search?.query?.string) {
267
+ return;
268
+ }
269
+ this.store.loading = true;
260
270
  try {
261
271
  await this.eventManager.fire('beforeSearch', {
262
272
  controller: this,
@@ -366,9 +376,11 @@ export class AutocompleteController extends AbstractController {
366
376
  this.log.error(err);
367
377
  this.handleError(err);
368
378
  }
369
- this.store.loading = false;
370
379
  }
371
380
  }
381
+ finally {
382
+ this.store.loading = false;
383
+ }
372
384
  };
373
385
  // deep merge config with defaults
374
386
  this.config = deepmerge(defaultConfig, this.config);
@@ -385,25 +397,14 @@ export class AutocompleteController extends AbstractController {
385
397
  type: 'session',
386
398
  key: `ss-controller-${this.config.id}`,
387
399
  });
388
- // add 'beforeSearch' middleware
389
- this.eventManager.on('beforeSearch', async (ac, next) => {
390
- ac.controller.store.loading = true;
391
- await next();
392
- });
393
400
  // add 'afterSearch' middleware
394
401
  this.eventManager.on('afterSearch', async (ac, next) => {
395
402
  await next();
396
403
  // cancel search if no input or query doesn't match current urlState
397
404
  if (ac.response.autocomplete.query != ac.controller.urlManager.state.query) {
398
- ac.controller.store.loading = false;
399
405
  return false;
400
406
  }
401
407
  });
402
- // add 'afterStore' middleware
403
- this.eventManager.on('afterStore', async (ac, next) => {
404
- await next();
405
- ac.controller.store.loading = false;
406
- });
407
408
  this.eventManager.on('beforeSubmit', async (ac, next) => {
408
409
  await next();
409
410
  const redirectURL = ac.controller.store.merchandising?.redirect;
@@ -521,7 +522,7 @@ export class AutocompleteController extends AbstractController {
521
522
  input.setAttribute('autocorrect', 'off');
522
523
  input.setAttribute('autocapitalize', 'none');
523
524
  input.setAttribute(INPUT_ATTRIBUTE, '');
524
- input.addEventListener('input', this.handlers.input.input);
525
+ this.config.settings?.bind?.input && input.addEventListener('input', this.handlers.input.input);
525
526
  if (this.config?.settings?.initializeFromUrl && !input.value && this.store.state.input) {
526
527
  input.value = this.store.state.input;
527
528
  }
@@ -530,11 +531,11 @@ export class AutocompleteController extends AbstractController {
530
531
  const form = input.form;
531
532
  let formActionUrl;
532
533
  if (this.config.action) {
533
- input.addEventListener('keydown', this.handlers.input.enterKey);
534
+ this.config.settings?.bind?.submit && input.addEventListener('keydown', this.handlers.input.enterKey);
534
535
  formActionUrl = this.config.action;
535
536
  }
536
537
  else if (form) {
537
- form.addEventListener('submit', this.handlers.input.formSubmit);
538
+ this.config.settings?.bind?.submit && form.addEventListener('submit', this.handlers.input.formSubmit);
538
539
  formActionUrl = form.action || '';
539
540
  // serializeForm will include additional form element in our urlManager as globals
540
541
  if (this.config.settings?.serializeForm) {
@@ -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,EAAmC,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAiB9H,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;IAqC3B,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,CAkI9B;CACF"}
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"}
@@ -46,14 +46,15 @@ export class FinderController extends AbstractController {
46
46
  this.store.setService('urlManager', this.urlManager);
47
47
  };
48
48
  this.search = async () => {
49
- if (!this.initialized) {
50
- await this.init();
51
- }
52
- if (this.store.state.persisted) {
53
- return;
54
- }
55
- const params = this.params;
56
49
  try {
50
+ if (!this.initialized) {
51
+ await this.init();
52
+ }
53
+ if (this.store.state.persisted) {
54
+ return;
55
+ }
56
+ const params = this.params;
57
+ this.store.loading = true;
57
58
  try {
58
59
  await this.eventManager.fire('beforeSearch', {
59
60
  controller: this,
@@ -164,9 +165,11 @@ export class FinderController extends AbstractController {
164
165
  this.log.error(err);
165
166
  this.handleError(err);
166
167
  }
167
- this.store.loading = false;
168
168
  }
169
169
  }
170
+ finally {
171
+ this.store.loading = false;
172
+ }
170
173
  };
171
174
  // deep merge config with defaults
172
175
  this.config = deepmerge(defaultConfig, this.config);
@@ -180,11 +183,7 @@ export class FinderController extends AbstractController {
180
183
  };
181
184
  });
182
185
  }
183
- this.eventManager.on('beforeSearch', async (finder, next) => {
184
- finder.controller.store.loading = true;
185
- await next();
186
- });
187
- // TODO: move this to afterStore
186
+ // TODO: remove this aftersearch when store interface changes
188
187
  this.eventManager.on('afterSearch', async (finder, next) => {
189
188
  await next();
190
189
  finder.controller.store.loading = false;
@@ -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,EAAkC,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAErI,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;IA2C3B,KAAK,EAAE,0BAA0B,CAwS5B;IAEL,IAAI,MAAM,IAAI,qBAAqB,CA2BlC;IAED,MAAM,QAAa,QAAQ,IAAI,CAAC,CAuH9B;CACF"}
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"}
@@ -311,11 +311,12 @@ export class RecommendationController extends AbstractController {
311
311
  };
312
312
  })();
313
313
  this.search = async () => {
314
- if (!this.initialized) {
315
- await this.init();
316
- }
317
- const params = this.params;
318
314
  try {
315
+ if (!this.initialized) {
316
+ await this.init();
317
+ }
318
+ const params = this.params;
319
+ this.store.loading = true;
319
320
  try {
320
321
  await this.eventManager.fire('beforeSearch', {
321
322
  controller: this,
@@ -420,21 +421,27 @@ export class RecommendationController extends AbstractController {
420
421
  this.log.error(err);
421
422
  this.handleError(err);
422
423
  }
423
- this.store.loading = false;
424
424
  }
425
425
  }
426
+ finally {
427
+ this.store.loading = false;
428
+ }
426
429
  };
427
430
  if (!config.tag) {
428
431
  throw new Error(`Invalid config passed to RecommendationController. The "tag" attribute is required.`);
429
432
  }
433
+ // attach to bfCache restore event and re-run search on the controller
434
+ // enabled by default
435
+ if (config.settings?.searchOnPageShow !== false) {
436
+ window.addEventListener('pageshow', (e) => {
437
+ if (e.persisted && !this.store.error && this.store.loaded && !this.store.loading) {
438
+ this.search();
439
+ }
440
+ });
441
+ }
430
442
  // deep merge config with defaults
431
443
  this.config = deepmerge(defaultConfig, this.config);
432
444
  this.store.setConfig(this.config);
433
- // add 'beforeSearch' middleware
434
- this.eventManager.on('beforeSearch', async (recommend, next) => {
435
- recommend.controller.store.loading = true;
436
- await next();
437
- });
438
445
  // add 'afterStore' middleware
439
446
  this.eventManager.on('afterStore', async (recommend, next) => {
440
447
  await next();
@@ -449,7 +456,6 @@ export class RecommendationController extends AbstractController {
449
456
  this.track.product.removedFromBundle(item);
450
457
  });
451
458
  });
452
- recommend.controller.store.loading = false;
453
459
  });
454
460
  // attach config plugins and event middleware
455
461
  this.use(this.config);
@@ -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,EAItB,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;IACtB,OAAO,CAAC,eAAe,CAAwC;gBAG9D,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;IAgK3B,KAAK,EAAE,kBAAkB,CA+CvB;IAEF,IAAI,MAAM,IAAI,kBAAkB,CAiD/B;IAED,MAAM,QAAa,QAAQ,IAAI,CAAC,CAkN9B;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"}
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;IACtB,OAAO,CAAC,eAAe,CAAwC;gBAG9D,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;IAuJ3B,KAAK,EAAE,kBAAkB,CA+CvB;IAEF,IAAI,MAAM,IAAI,kBAAkB,CAiD/B;IAED,MAAM,QAAa,QAAQ,IAAI,CAAC,CAmN9B;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"}
@@ -67,15 +67,16 @@ export class SearchController extends AbstractController {
67
67
  },
68
68
  };
69
69
  this.search = async () => {
70
- if (!this.initialized) {
71
- await this.init();
72
- }
73
- const params = this.params;
74
- if (this.params.search?.query?.string && this.params.search?.query?.string.length) {
75
- // save it to the history store
76
- this.store.history.save(this.params.search.query.string);
77
- }
78
70
  try {
71
+ if (!this.initialized) {
72
+ await this.init();
73
+ }
74
+ const params = this.params;
75
+ if (this.params.search?.query?.string && this.params.search?.query?.string.length) {
76
+ // save it to the history store
77
+ this.store.history.save(this.params.search.query.string);
78
+ }
79
+ this.store.loading = true;
79
80
  try {
80
81
  await this.eventManager.fire('beforeSearch', {
81
82
  controller: this,
@@ -250,9 +251,11 @@ export class SearchController extends AbstractController {
250
251
  this.log.error(err);
251
252
  this.handleError(err);
252
253
  }
253
- this.store.loading = false;
254
254
  }
255
255
  }
256
+ finally {
257
+ this.store.loading = false;
258
+ }
256
259
  };
257
260
  // deep merge config with defaults
258
261
  this.config = deepmerge(defaultConfig, this.config);
@@ -267,11 +270,6 @@ export class SearchController extends AbstractController {
267
270
  });
268
271
  // set last params to undefined for compare in search
269
272
  this.storage.set('lastStringyParams', undefined);
270
- // add 'beforeSearch' middleware
271
- this.eventManager.on('beforeSearch', async (search, next) => {
272
- search.controller.store.loading = true;
273
- await next();
274
- });
275
273
  // add 'afterSearch' middleware
276
274
  this.eventManager.on('afterSearch', async (search, next) => {
277
275
  const config = search.controller.config;
@@ -306,7 +304,6 @@ export class SearchController extends AbstractController {
306
304
  this.storage.set('scrollMap', {});
307
305
  }
308
306
  await this.eventManager.fire('restorePosition', { controller: this, element: elementPosition });
309
- search.controller.store.loading = false;
310
307
  });
311
308
  // restore position
312
309
  if (this.config.settings?.restorePosition?.enabled) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@searchspring/snap-controller",
3
- "version": "0.61.5",
3
+ "version": "0.62.0",
4
4
  "description": "Snap Controllers",
5
5
  "main": "dist/cjs/index.js",
6
6
  "module": "dist/esm/index.js",
@@ -20,22 +20,22 @@
20
20
  "test:watch": "jest --watch"
21
21
  },
22
22
  "dependencies": {
23
- "@searchspring/snap-toolbox": "^0.61.5",
23
+ "@searchspring/snap-toolbox": "^0.62.0",
24
24
  "css.escape": "1.5.1",
25
25
  "deepmerge": "4.3.1"
26
26
  },
27
27
  "devDependencies": {
28
- "@searchspring/snap-client": "^0.61.5",
29
- "@searchspring/snap-event-manager": "^0.61.5",
30
- "@searchspring/snap-logger": "^0.61.5",
31
- "@searchspring/snap-profiler": "^0.61.5",
32
- "@searchspring/snap-store-mobx": "^0.61.5",
33
- "@searchspring/snap-tracker": "^0.61.5",
34
- "@searchspring/snap-url-manager": "^0.61.5"
28
+ "@searchspring/snap-client": "^0.62.0",
29
+ "@searchspring/snap-event-manager": "^0.62.0",
30
+ "@searchspring/snap-logger": "^0.62.0",
31
+ "@searchspring/snap-profiler": "^0.62.0",
32
+ "@searchspring/snap-store-mobx": "^0.62.0",
33
+ "@searchspring/snap-tracker": "^0.62.0",
34
+ "@searchspring/snap-url-manager": "^0.62.0"
35
35
  },
36
36
  "sideEffects": false,
37
37
  "files": [
38
38
  "dist/**/*"
39
39
  ],
40
- "gitHead": "bae1305742558d1736e535d77a76da7b845bc046"
40
+ "gitHead": "2c9561e8b0097a44c5587bc5629068b06041385f"
41
41
  }