@searchspring/snap-controller 0.43.1 → 0.44.1

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.
Files changed (29) hide show
  1. package/dist/cjs/Abstract/AbstractController.d.ts +3 -1
  2. package/dist/cjs/Abstract/AbstractController.d.ts.map +1 -1
  3. package/dist/cjs/Abstract/AbstractController.js +12 -4
  4. package/dist/cjs/Autocomplete/AutocompleteController.d.ts.map +1 -1
  5. package/dist/cjs/Autocomplete/AutocompleteController.js +44 -34
  6. package/dist/cjs/Finder/FinderController.d.ts.map +1 -1
  7. package/dist/cjs/Finder/FinderController.js +36 -21
  8. package/dist/cjs/Recommendation/RecommendationController.d.ts.map +1 -1
  9. package/dist/cjs/Recommendation/RecommendationController.js +36 -21
  10. package/dist/cjs/Search/SearchController.d.ts +1 -0
  11. package/dist/cjs/Search/SearchController.d.ts.map +1 -1
  12. package/dist/cjs/Search/SearchController.js +81 -39
  13. package/dist/cjs/types.d.ts +3 -3
  14. package/dist/cjs/types.d.ts.map +1 -1
  15. package/dist/esm/Abstract/AbstractController.d.ts +3 -1
  16. package/dist/esm/Abstract/AbstractController.d.ts.map +1 -1
  17. package/dist/esm/Abstract/AbstractController.js +12 -4
  18. package/dist/esm/Autocomplete/AutocompleteController.d.ts.map +1 -1
  19. package/dist/esm/Autocomplete/AutocompleteController.js +44 -34
  20. package/dist/esm/Finder/FinderController.d.ts.map +1 -1
  21. package/dist/esm/Finder/FinderController.js +36 -21
  22. package/dist/esm/Recommendation/RecommendationController.d.ts.map +1 -1
  23. package/dist/esm/Recommendation/RecommendationController.js +36 -21
  24. package/dist/esm/Search/SearchController.d.ts +1 -0
  25. package/dist/esm/Search/SearchController.d.ts.map +1 -1
  26. package/dist/esm/Search/SearchController.js +79 -38
  27. package/dist/esm/types.d.ts +3 -3
  28. package/dist/esm/types.d.ts.map +1 -1
  29. package/package.json +11 -10
@@ -25,7 +25,9 @@ export declare abstract class AbstractController {
25
25
  };
26
26
  protected _initialized: boolean;
27
27
  get initialized(): boolean;
28
- handleError: (err: unknown) => void;
28
+ handleError: (err: unknown, details?: {
29
+ [any: string]: unknown;
30
+ } | undefined) => void;
29
31
  constructor(config: ControllerConfig, { client, store, urlManager, eventManager, profiler, logger, tracker }: ControllerServices, context?: ContextVariables);
30
32
  createTargeter(target: Target, onTarget: OnTarget, document?: Document): DomTargeter | undefined;
31
33
  addTargeter(target: DomTargeter): DomTargeter | undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"AbstractController.d.ts","sourceRoot":"","sources":["../../../src/Abstract/AbstractController.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAEzD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAC;AACxD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AACnE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AACjE,OAAO,KAAK,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,kCAAkC,CAAC;AACjF,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AAC5D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAC;AACxD,OAAO,KAAK,EAAE,OAAO,EAAmB,MAAM,4BAA4B,CAAC;AAC3E,OAAO,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAC;AAEnE,OAAO,KAAK,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,WAAW,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAEpH,8BAAsB,kBAAkB;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,SAAc;IAClB,MAAM,EAAE,gBAAgB,CAAC;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,aAAa,CAAC;IACrB,UAAU,EAAE,UAAU,CAAC;IACvB,YAAY,EAAE,YAAY,CAAC;IAC3B,QAAQ,EAAE,QAAQ,CAAC;IACnB,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,gBAAgB,CAAC;IAE1B,SAAS,EAAE;QACjB,CAAC,GAAG,EAAE,MAAM,GAAG,WAAW,CAAC;KAC3B,CAAM;IAEP,SAAS,CAAC,YAAY,UAAS;IAE/B,IAAI,WAAW,IAAI,OAAO,CAEzB;IAEM,WAAW,QAAS,OAAO,KAAG,IAAI,CA4CvC;gBAGD,MAAM,EAAE,gBAAgB,EACxB,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,kBAAkB,EAC1F,OAAO,GAAE,gBAAqB;IA2DxB,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAAC,EAAE,QAAQ,GAAG,WAAW,GAAG,SAAS;IAIhG,WAAW,CAAC,MAAM,EAAE,WAAW,GAAG,WAAW,GAAG,SAAS;IASnD,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAgD3B,QAAQ,IAAI,IAAI;aAMP,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IAE1B,MAAM,CAAC,IAAI,EAAE,cAAc,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAIrE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI;IAIpD,GAAG,CAAC,WAAW,EAAE,WAAW,GAAG,IAAI;CAoC1C"}
1
+ {"version":3,"file":"AbstractController.d.ts","sourceRoot":"","sources":["../../../src/Abstract/AbstractController.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAEzD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAC;AACxD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AACnE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AACjE,OAAO,KAAK,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,kCAAkC,CAAC;AACjF,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AAC5D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAC;AACxD,OAAO,KAAK,EAAE,OAAO,EAAmB,MAAM,4BAA4B,CAAC;AAC3E,OAAO,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAC;AAEnE,OAAO,KAAK,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,WAAW,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAEpH,8BAAsB,kBAAkB;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,SAAc;IAClB,MAAM,EAAE,gBAAgB,CAAC;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,aAAa,CAAC;IACrB,UAAU,EAAE,UAAU,CAAC;IACvB,YAAY,EAAE,YAAY,CAAC;IAC3B,QAAQ,EAAE,QAAQ,CAAC;IACnB,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,gBAAgB,CAAC;IAE1B,SAAS,EAAE;QACjB,CAAC,GAAG,EAAE,MAAM,GAAG,WAAW,CAAC;KAC3B,CAAM;IAEP,SAAS,CAAC,YAAY,UAAS;IAE/B,IAAI,WAAW,IAAI,OAAO,CAEzB;IAEM,WAAW,QAAS,OAAO;;sBAAyC,IAAI,CAoD7E;gBAGD,MAAM,EAAE,gBAAgB,EACxB,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,kBAAkB,EAC1F,OAAO,GAAE,gBAAqB;IA2DxB,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAAC,EAAE,QAAQ,GAAG,WAAW,GAAG,SAAS;IAIhG,WAAW,CAAC,MAAM,EAAE,WAAW,GAAG,WAAW,GAAG,SAAS;IASnD,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAgD3B,QAAQ,IAAI,IAAI;aAMP,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IAE1B,MAAM,CAAC,IAAI,EAAE,cAAc,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAIrE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI;IAIpD,GAAG,CAAC,WAAW,EAAE,WAAW,GAAG,IAAI;CAoC1C"}
@@ -55,7 +55,7 @@ var AbstractController = /** @class */ (function () {
55
55
  this.type = 'abstract';
56
56
  this.targeters = {};
57
57
  this._initialized = false;
58
- this.handleError = function (err) {
58
+ this.handleError = function (err, details) {
59
59
  var event;
60
60
  if (err instanceof ErrorEvent) {
61
61
  event = err;
@@ -63,11 +63,12 @@ var AbstractController = /** @class */ (function () {
63
63
  else if (err instanceof Error) {
64
64
  event = new ErrorEvent('error', {
65
65
  error: err,
66
+ message: err.message,
66
67
  });
67
68
  }
68
- else if (typeof err === 'string') {
69
+ else if (typeof err === 'string' || typeof err == 'number') {
69
70
  event = new ErrorEvent('error', {
70
- error: new Error(err),
71
+ error: new Error(err.toString()),
71
72
  });
72
73
  }
73
74
  else if (typeof err === 'object' && Object.keys(err).length) {
@@ -81,12 +82,19 @@ var AbstractController = /** @class */ (function () {
81
82
  if (event) {
82
83
  var filename = event.filename, colno = event.colno, lineno = event.lineno, stack = event.error.stack, message = event.message, timeStamp = event.timeStamp;
83
84
  var beaconPayload = {
84
- filename: filename || "".concat(_this.id, " (").concat(_this.type.charAt(0).toUpperCase() + _this.type.slice(1), "Controller)"),
85
+ filename: filename,
85
86
  stack: stack,
86
87
  message: message,
87
88
  colno: colno,
88
89
  lineno: lineno,
89
90
  errortimestamp: timeStamp,
91
+ details: details,
92
+ context: {
93
+ controller: {
94
+ id: _this.id,
95
+ type: _this.type,
96
+ },
97
+ },
90
98
  };
91
99
  _this.tracker.track.error(beaconPayload);
92
100
  _this.eventManager.fire('error', { controller: _this, error: err });
@@ -1 +1 @@
1
- {"version":3,"file":"AutocompleteController.d.ts","sourceRoot":"","sources":["../../../src/Autocomplete/AutocompleteController.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,YAAY,EAA0B,MAAM,+BAA+B,CAAC;AACrF,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;AA0B/B,aAAK,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;IA6D3B,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,aAAa,KAAG,IAAI;;;;uBA8DpB,UAAU,KAAG,IAAI;;MAS5B;IAEF,MAAM,IAAI,IAAI;IAgBR,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IA6E3B,cAAc,QAAa,QAAQ,IAAI,CAAC,CAwBtC;IAEF,MAAM,QAAa,QAAQ,IAAI,CAAC,CAkH9B;CACF"}
1
+ {"version":3,"file":"AutocompleteController.d.ts","sourceRoot":"","sources":["../../../src/Autocomplete/AutocompleteController.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,YAAY,EAA0B,MAAM,+BAA+B,CAAC;AACrF,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;AA0B/B,aAAK,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;IA6D3B,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,aAAa,KAAG,IAAI;;;;uBAwDpB,UAAU,KAAG,IAAI;;MAS5B;IAEF,MAAM,IAAI,IAAI;IAgBR,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IA6E3B,cAAc,QAAa,QAAQ,IAAI,CAAC,CAwBtC;IAEF,MAAM,QAAa,QAAQ,IAAI,CAAC,CAmI9B;CACF"}
@@ -139,9 +139,9 @@ var AutocompleteController = /** @class */ (function (_super) {
139
139
  return [3 /*break*/, 2];
140
140
  case 4:
141
141
  if (this.config.settings.integratedSpellCorrection) {
142
- // if integratedSpellCorrection is set, set fallbackQuery to the first suggestion as long as its value differs
143
- if (input && this.store.terms.length && this.store.terms[0].value != input.value) {
144
- actionUrl = actionUrl === null || actionUrl === void 0 ? void 0 : actionUrl.set(PARAM_FALLBACK_QUERY, this.store.terms[0].value);
142
+ //set fallbackQuery to the correctedQuery
143
+ if (this.store.search.correctedQuery) {
144
+ actionUrl = actionUrl === null || actionUrl === void 0 ? void 0 : actionUrl.set(PARAM_FALLBACK_QUERY, this.store.search.correctedQuery.string);
145
145
  }
146
146
  }
147
147
  else if (this.store.search.originalQuery) {
@@ -219,9 +219,9 @@ var AutocompleteController = /** @class */ (function (_super) {
219
219
  return [3 /*break*/, 2];
220
220
  case 4:
221
221
  if (this.config.settings.integratedSpellCorrection) {
222
- // if integratedSpellCorrection is set, set fallbackQuery to the first suggestion as long as its value differs
223
- if (input && this.store.terms.length && this.store.terms[0].value != input.value) {
224
- addHiddenFormInput(form, PARAM_FALLBACK_QUERY, this.store.terms[0].value);
222
+ //set fallbackQuery to the correctedQuery
223
+ if (this.store.search.correctedQuery) {
224
+ addHiddenFormInput(form, PARAM_FALLBACK_QUERY, this.store.search.correctedQuery.string);
225
225
  }
226
226
  }
227
227
  else if (this.store.search.originalQuery) {
@@ -302,10 +302,10 @@ var AutocompleteController = /** @class */ (function (_super) {
302
302
  clearTimeout(_this.handlers.input.timeoutDelay);
303
303
  var trendingResultsEnabled = ((_c = _this.store.trending) === null || _c === void 0 ? void 0 : _c.length) && ((_e = (_d = _this.config.settings) === null || _d === void 0 ? void 0 : _d.trending) === null || _e === void 0 ? void 0 : _e.showResults);
304
304
  var historyResultsEnabled = ((_f = _this.store.history) === null || _f === void 0 ? void 0 : _f.length) && ((_h = (_g = _this.config.settings) === null || _g === void 0 ? void 0 : _g.history) === null || _h === void 0 ? void 0 : _h.showResults);
305
+ _this.urlManager.reset().go();
305
306
  if (!value) {
306
- // there is no input value - reset state of store and UrlManager
307
+ // there is no input value - reset state of store
307
308
  _this.store.reset();
308
- _this.urlManager.reset().go();
309
309
  // show results for trending or history (if configured) - trending has priority
310
310
  if (trendingResultsEnabled) {
311
311
  _this.store.trending[0].preview();
@@ -316,14 +316,9 @@ var AutocompleteController = /** @class */ (function (_super) {
316
316
  }
317
317
  else {
318
318
  // new query in the input - trigger a new search via UrlManager
319
- _this.store.resetTerms();
320
319
  _this.handlers.input.timeoutDelay = setTimeout(function () {
321
320
  _this.store.state.locks.terms.unlock();
322
321
  _this.store.state.locks.facets.unlock();
323
- // must reset query to ensure funcitonality when trending/history term is equal to the typed term
324
- if (trendingResultsEnabled || historyResultsEnabled) {
325
- _this.urlManager.set({ query: '' }).go();
326
- }
327
322
  _this.urlManager.set({ query: _this.store.state.input }).go();
328
323
  }, exports.INPUT_DELAY);
329
324
  }
@@ -484,29 +479,44 @@ var AutocompleteController = /** @class */ (function (_super) {
484
479
  case 15:
485
480
  err_6 = _d.sent();
486
481
  if (err_6) {
487
- switch (err_6) {
488
- case 429:
489
- this.store.error = {
490
- code: 429,
491
- type: snap_store_mobx_1.ErrorType.WARNING,
492
- message: 'Too many requests try again later',
493
- };
494
- this.log.warn(this.store.error);
495
- break;
496
- case 500:
497
- this.store.error = {
498
- code: 500,
499
- type: snap_store_mobx_1.ErrorType.ERROR,
500
- message: 'Invalid Search Request or Service Unavailable',
501
- };
502
- this.log.error(this.store.error);
503
- break;
504
- default:
505
- this.log.error(err_6);
506
- break;
482
+ if (err_6.err && err_6.fetchDetails) {
483
+ switch (err_6.fetchDetails.status) {
484
+ case 429: {
485
+ this.store.error = {
486
+ code: 429,
487
+ type: snap_store_mobx_1.ErrorType.WARNING,
488
+ message: 'Too many requests try again later',
489
+ };
490
+ break;
491
+ }
492
+ case 500: {
493
+ this.store.error = {
494
+ code: 500,
495
+ type: snap_store_mobx_1.ErrorType.ERROR,
496
+ message: 'Invalid Search Request or Service Unavailable',
497
+ };
498
+ break;
499
+ }
500
+ default: {
501
+ this.store.error = {
502
+ type: snap_store_mobx_1.ErrorType.ERROR,
503
+ message: err_6.err.message,
504
+ };
505
+ break;
506
+ }
507
+ }
508
+ this.log.error(this.store.error);
509
+ this.handleError(err_6.err, err_6.fetchDetails);
510
+ }
511
+ else {
512
+ this.store.error = {
513
+ type: snap_store_mobx_1.ErrorType.ERROR,
514
+ message: "Something went wrong... - ".concat(err_6),
515
+ };
516
+ this.log.error(err_6);
517
+ this.handleError(err_6);
507
518
  }
508
519
  this.store.loading = false;
509
- this.handleError(err_6);
510
520
  }
511
521
  return [3 /*break*/, 16];
512
522
  case 16: return [2 /*return*/];
@@ -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;IA2C3B,IAAI,MAAM,IAAI,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CA+BhC;IAED,IAAI,QAAa,QAAQ,IAAI,CAAC,CAe5B;IAEF,KAAK,QAAO,IAAI,CAId;IAEF,MAAM,QAAa,QAAQ,IAAI,CAAC,CAiH9B;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,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;IA2C3B,IAAI,MAAM,IAAI,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CA+BhC;IAED,IAAI,QAAa,QAAQ,IAAI,CAAC,CAe5B;IAEF,KAAK,QAAO,IAAI,CAId;IAEF,MAAM,QAAa,QAAQ,IAAI,CAAC,CAkI9B;CACF"}
@@ -238,29 +238,44 @@ var FinderController = /** @class */ (function (_super) {
238
238
  case 17:
239
239
  err_5 = _b.sent();
240
240
  if (err_5) {
241
- switch (err_5) {
242
- case 429:
243
- this.store.error = {
244
- code: 429,
245
- type: snap_store_mobx_1.ErrorType.WARNING,
246
- message: 'Too many requests try again later',
247
- };
248
- this.log.warn(this.store.error);
249
- break;
250
- case 500:
251
- this.store.error = {
252
- code: 500,
253
- type: snap_store_mobx_1.ErrorType.ERROR,
254
- message: 'Invalid Search Request or Service Unavailable',
255
- };
256
- this.log.error(this.store.error);
257
- break;
258
- default:
259
- this.log.error(err_5);
260
- break;
241
+ if (err_5.err && err_5.fetchDetails) {
242
+ switch (err_5.fetchDetails.status) {
243
+ case 429: {
244
+ this.store.error = {
245
+ code: 429,
246
+ type: snap_store_mobx_1.ErrorType.WARNING,
247
+ message: 'Too many requests try again later',
248
+ };
249
+ break;
250
+ }
251
+ case 500: {
252
+ this.store.error = {
253
+ code: 500,
254
+ type: snap_store_mobx_1.ErrorType.ERROR,
255
+ message: 'Invalid Search Request or Service Unavailable',
256
+ };
257
+ break;
258
+ }
259
+ default: {
260
+ this.store.error = {
261
+ type: snap_store_mobx_1.ErrorType.ERROR,
262
+ message: err_5.err.message,
263
+ };
264
+ break;
265
+ }
266
+ }
267
+ this.log.error(this.store.error);
268
+ this.handleError(err_5.err, err_5.fetchDetails);
269
+ }
270
+ else {
271
+ this.store.error = {
272
+ type: snap_store_mobx_1.ErrorType.ERROR,
273
+ message: "Something went wrong... - ".concat(err_5),
274
+ };
275
+ this.log.error(err_5);
276
+ this.handleError(err_5);
261
277
  }
262
278
  this.store.loading = false;
263
- this.handleError(err_5);
264
279
  }
265
280
  return [3 /*break*/, 18];
266
281
  case 18: return [2 /*return*/];
@@ -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,8BAA8B,EAAkC,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAErI,aAAK,0BAA0B,GAAG;IACjC,OAAO,EAAE;QACR,KAAK,EAAE,CAAC,CAAC,EAAE,UAAU,EAAE,MAAM,EAAE,GAAG,KAAK,WAAW,GAAG,SAAS,CAAC;QAC/D,MAAM,EAAE,CAAC,MAAM,EAAE,GAAG,KAAK,WAAW,GAAG,SAAS,CAAC;QACjD,UAAU,EAAE,CAAC,MAAM,EAAE,GAAG,KAAK,WAAW,GAAG,SAAS,CAAC;KACrD,CAAC;IACF,KAAK,EAAE,CAAC,CAAC,EAAE,UAAU,KAAK,WAAW,GAAG,SAAS,CAAC;IAClD,UAAU,EAAE,MAAM,WAAW,GAAG,SAAS,CAAC;IAC1C,MAAM,EAAE,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,KAAK,WAAW,GAAG,SAAS,CAAC;CACzD,CAAC;AAEF,aAAK,6BAA6B,GAAG;IACpC,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;CAChB,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;IA8B3B,KAAK,EAAE,0BAA0B,CAiM5B;IAEL,IAAI,MAAM,IAAI,6BAA6B,CA0B1C;IAED,MAAM,QAAa,QAAQ,IAAI,CAAC,CAsG9B;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,8BAA8B,EAAkC,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAErI,aAAK,0BAA0B,GAAG;IACjC,OAAO,EAAE;QACR,KAAK,EAAE,CAAC,CAAC,EAAE,UAAU,EAAE,MAAM,EAAE,GAAG,KAAK,WAAW,GAAG,SAAS,CAAC;QAC/D,MAAM,EAAE,CAAC,MAAM,EAAE,GAAG,KAAK,WAAW,GAAG,SAAS,CAAC;QACjD,UAAU,EAAE,CAAC,MAAM,EAAE,GAAG,KAAK,WAAW,GAAG,SAAS,CAAC;KACrD,CAAC;IACF,KAAK,EAAE,CAAC,CAAC,EAAE,UAAU,KAAK,WAAW,GAAG,SAAS,CAAC;IAClD,UAAU,EAAE,MAAM,WAAW,GAAG,SAAS,CAAC;IAC1C,MAAM,EAAE,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,KAAK,WAAW,GAAG,SAAS,CAAC;CACzD,CAAC;AAEF,aAAK,6BAA6B,GAAG;IACpC,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;CAChB,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;IA8B3B,KAAK,EAAE,0BAA0B,CAiM5B;IAEL,IAAI,MAAM,IAAI,6BAA6B,CA0B1C;IAED,MAAM,QAAa,QAAQ,IAAI,CAAC,CAuH9B;CACF"}
@@ -387,29 +387,44 @@ var RecommendationController = /** @class */ (function (_super) {
387
387
  case 17:
388
388
  err_4 = _a.sent();
389
389
  if (err_4) {
390
- switch (err_4) {
391
- case 429:
392
- this.store.error = {
393
- code: 429,
394
- type: snap_store_mobx_1.ErrorType.WARNING,
395
- message: 'Too many requests try again later',
396
- };
397
- this.log.warn(this.store.error);
398
- break;
399
- case 500:
400
- this.store.error = {
401
- code: 500,
402
- type: snap_store_mobx_1.ErrorType.ERROR,
403
- message: 'Invalid Search Request or Service Unavailable',
404
- };
405
- this.log.error(this.store.error);
406
- break;
407
- default:
408
- this.log.error(err_4);
409
- break;
390
+ if (err_4.err && err_4.fetchDetails) {
391
+ switch (err_4.fetchDetails.status) {
392
+ case 429: {
393
+ this.store.error = {
394
+ code: 429,
395
+ type: snap_store_mobx_1.ErrorType.WARNING,
396
+ message: 'Too many requests try again later',
397
+ };
398
+ break;
399
+ }
400
+ case 500: {
401
+ this.store.error = {
402
+ code: 500,
403
+ type: snap_store_mobx_1.ErrorType.ERROR,
404
+ message: 'Invalid Search Request or Service Unavailable',
405
+ };
406
+ break;
407
+ }
408
+ default: {
409
+ this.store.error = {
410
+ type: snap_store_mobx_1.ErrorType.ERROR,
411
+ message: err_4.err.message,
412
+ };
413
+ break;
414
+ }
415
+ }
416
+ this.log.error(this.store.error);
417
+ this.handleError(err_4.err, err_4.fetchDetails);
418
+ }
419
+ else {
420
+ this.store.error = {
421
+ type: snap_store_mobx_1.ErrorType.ERROR,
422
+ message: "Something went wrong... - ".concat(err_4),
423
+ };
424
+ this.log.error(err_4);
425
+ this.handleError(err_4);
410
426
  }
411
427
  this.store.loading = false;
412
- this.handleError(err_4);
413
428
  }
414
429
  return [3 /*break*/, 18];
415
430
  case 18: return [2 /*return*/];
@@ -22,5 +22,6 @@ export declare class SearchController extends AbstractController {
22
22
  search: () => Promise<void>;
23
23
  }
24
24
  export declare function getStorableRequestParams(request: SearchRequestModel): SearchRequestModel;
25
+ export declare function generateHrefSelector(element: HTMLElement, href: string, levels?: number): string | undefined;
25
26
  export {};
26
27
  //# sourceMappingURL=SearchController.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"SearchController.d.ts","sourceRoot":"","sources":["../../../src/Search/SearchController.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AACpE,OAAO,EAAE,YAAY,EAA0B,MAAM,+BAA+B,CAAC;AAErF,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,EAAE,kBAAkB,EAA2E,MAAM,2BAA2B,CAAC;AAqB7I,aAAK,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;IAqI3B,KAAK,EAAE,kBAAkB,CAoCvB;IAEF,IAAI,MAAM,IAAI,kBAAkB,CAgD/B;IAED,MAAM,QAAa,QAAQ,IAAI,CAAC,CAuN9B;CACF;AAED,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,kBAAkB,GAAG,kBAAkB,CAiBxF"}
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,EAA0B,MAAM,+BAA+B,CAAC;AAErF,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,EAAE,kBAAkB,EAA2E,MAAM,2BAA2B,CAAC;AAqB7I,aAAK,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;IA2I3B,KAAK,EAAE,kBAAkB,CA8CvB;IAEF,IAAI,MAAM,IAAI,kBAAkB,CAgD/B;IAED,MAAM,QAAa,QAAQ,IAAI,CAAC,CAwO9B;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"}
@@ -74,8 +74,9 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
74
74
  return (mod && mod.__esModule) ? mod : { "default": mod };
75
75
  };
76
76
  Object.defineProperty(exports, "__esModule", { value: true });
77
- exports.getStorableRequestParams = exports.SearchController = void 0;
77
+ exports.generateHrefSelector = exports.getStorableRequestParams = exports.SearchController = void 0;
78
78
  var deepmerge_1 = __importDefault(require("deepmerge"));
79
+ var css_escape_1 = __importDefault(require("css.escape"));
79
80
  var AbstractController_1 = require("../Abstract/AbstractController");
80
81
  var snap_store_mobx_1 = require("@searchspring/snap-store-mobx");
81
82
  var getParams_1 = require("../utils/getParams");
@@ -111,17 +112,26 @@ var SearchController = /** @class */ (function (_super) {
111
112
  click: function (e, result) {
112
113
  var _a, _b;
113
114
  var target = e.target;
114
- var href = (target === null || target === void 0 ? void 0 : target.getAttribute('href')) || ((_a = result.mappings.core) === null || _a === void 0 ? void 0 : _a.url);
115
+ var resultHref = (_a = result.mappings.core) === null || _a === void 0 ? void 0 : _a.url;
116
+ var elemHref = target === null || target === void 0 ? void 0 : target.getAttribute('href');
117
+ // the href that should be used for restoration - if the elemHref contains the resultHref - use resultHref
118
+ var storedHref = (elemHref === null || elemHref === void 0 ? void 0 : elemHref.indexOf(resultHref)) != -1 ? resultHref : elemHref || resultHref;
115
119
  var scrollMap = {};
116
120
  // generate the selector using element class and parent classes
117
- var selector = generateHrefSelector(target, href);
121
+ var selector = generateHrefSelector(target, storedHref);
118
122
  var domRect = selector ? (_b = document === null || document === void 0 ? void 0 : document.querySelector(selector)) === null || _b === void 0 ? void 0 : _b.getBoundingClientRect() : undefined;
119
123
  // store element position data to scrollMap
120
- if (selector && href && domRect) {
121
- var stringyParams = JSON.parse(_this.storage.get('lastStringyParams'));
122
- var storableRequestParams = getStorableRequestParams(stringyParams);
123
- var storableStringyParams = JSON.stringify(storableRequestParams);
124
- scrollMap[storableStringyParams] = { domRect: domRect, href: href, selector: selector };
124
+ if (selector || storedHref || domRect) {
125
+ try {
126
+ var stringyParams = JSON.parse(_this.storage.get('lastStringyParams'));
127
+ var storableRequestParams = getStorableRequestParams(stringyParams);
128
+ var storableStringyParams = JSON.stringify(storableRequestParams);
129
+ scrollMap[storableStringyParams] = { domRect: domRect, href: storedHref, selector: selector };
130
+ }
131
+ catch (err) {
132
+ // failed to get lastStringParams
133
+ _this.log.warn('Failed to save scollMap!', err);
134
+ }
125
135
  }
126
136
  // store position data or empty object
127
137
  _this.storage.set('scrollMap', scrollMap);
@@ -130,7 +140,7 @@ var SearchController = /** @class */ (function (_super) {
130
140
  var event = _this.tracker.track.product.click({
131
141
  intellisuggestData: intellisuggestData,
132
142
  intellisuggestSignature: intellisuggestSignature,
133
- href: href,
143
+ href: elemHref || resultHref,
134
144
  });
135
145
  _this.eventManager.fire('track.product.click', { controller: _this, event: e, result: result, trackEvent: event });
136
146
  return event;
@@ -337,29 +347,44 @@ var SearchController = /** @class */ (function (_super) {
337
347
  case 26:
338
348
  err_4 = _x.sent();
339
349
  if (err_4) {
340
- switch (err_4) {
341
- case 429:
342
- this.store.error = {
343
- code: 429,
344
- type: snap_store_mobx_1.ErrorType.WARNING,
345
- message: 'Too many requests try again later',
346
- };
347
- this.log.warn(this.store.error);
348
- break;
349
- case 500:
350
- this.store.error = {
351
- code: 500,
352
- type: snap_store_mobx_1.ErrorType.ERROR,
353
- message: 'Invalid Search Request or Service Unavailable',
354
- };
355
- this.log.error(this.store.error);
356
- break;
357
- default:
358
- this.log.error(err_4);
359
- break;
350
+ if (err_4.err && err_4.fetchDetails) {
351
+ switch (err_4.fetchDetails.status) {
352
+ case 429: {
353
+ this.store.error = {
354
+ code: 429,
355
+ type: snap_store_mobx_1.ErrorType.WARNING,
356
+ message: 'Too many requests try again later',
357
+ };
358
+ break;
359
+ }
360
+ case 500: {
361
+ this.store.error = {
362
+ code: 500,
363
+ type: snap_store_mobx_1.ErrorType.ERROR,
364
+ message: 'Invalid Search Request or Service Unavailable',
365
+ };
366
+ break;
367
+ }
368
+ default: {
369
+ this.store.error = {
370
+ type: snap_store_mobx_1.ErrorType.ERROR,
371
+ message: err_4.err.message,
372
+ };
373
+ break;
374
+ }
375
+ }
376
+ this.log.error(this.store.error);
377
+ this.handleError(err_4.err, err_4.fetchDetails);
378
+ }
379
+ else {
380
+ this.store.error = {
381
+ type: snap_store_mobx_1.ErrorType.ERROR,
382
+ message: "Something went wrong... - ".concat(err_4),
383
+ };
384
+ this.log.error(err_4);
385
+ this.handleError(err_4);
360
386
  }
361
387
  this.store.loading = false;
362
- this.handleError(err_4);
363
388
  }
364
389
  return [3 /*break*/, 27];
365
390
  case 27: return [2 /*return*/];
@@ -459,7 +484,7 @@ var SearchController = /** @class */ (function (_super) {
459
484
  case 0:
460
485
  scrollToPosition = function () {
461
486
  return new Promise(function (resolve) { return __awaiter(_this, void 0, void 0, function () {
462
- var offset, maxCheckTime, checkTime, maxScrolls, maxCheckCount, scrollBackCount, scrolledElem, checkAndScroll;
487
+ var offset, maxCheckTime, checkTime, maxScrolls, maxCheckCount, scrollBackCount, checkCount, scrolledElem, checkAndScroll;
463
488
  var _a;
464
489
  return __generator(this, function (_b) {
465
490
  switch (_b.label) {
@@ -468,15 +493,21 @@ var SearchController = /** @class */ (function (_super) {
468
493
  maxCheckTime = 500;
469
494
  checkTime = 50;
470
495
  maxScrolls = Math.ceil(maxCheckTime / checkTime);
471
- maxCheckCount = maxScrolls + 1;
496
+ maxCheckCount = maxScrolls + 2;
472
497
  scrollBackCount = 0;
498
+ checkCount = 0;
473
499
  scrolledElem = undefined;
474
500
  checkAndScroll = function () {
475
501
  var elem = document.querySelector(element === null || element === void 0 ? void 0 : element.selector);
476
- if (elem)
502
+ if (elem) {
477
503
  scrollBackCount++;
478
- if (elem && scrollBackCount < maxCheckCount) {
504
+ }
505
+ else {
506
+ checkCount++;
507
+ }
508
+ if (elem) {
479
509
  var y = elem.getBoundingClientRect().y;
510
+ // if the offset is off, we need to scroll into position (can be caused by lazy loaded images)
480
511
  if (y > offset + 1 || y < offset - 1) {
481
512
  elem.scrollIntoView();
482
513
  // after scrolling into view, use top value with offset (for when element at bottom)
@@ -490,7 +521,7 @@ var SearchController = /** @class */ (function (_super) {
490
521
  };
491
522
  _b.label = 1;
492
523
  case 1:
493
- if (!(checkAndScroll() || scrollBackCount <= maxScrolls)) return [3 /*break*/, 3];
524
+ if (!(checkAndScroll() || (scrollBackCount <= maxScrolls && checkCount <= maxCheckCount))) return [3 /*break*/, 3];
494
525
  return [4 /*yield*/, new Promise(function (resolve) { return setTimeout(resolve, checkTime); })];
495
526
  case 2:
496
527
  _b.sent();
@@ -598,17 +629,28 @@ function generateHrefSelector(element, href, levels) {
598
629
  if (levels === void 0) { levels = 7; }
599
630
  var level = 0;
600
631
  var elem = element;
601
- while (elem && level < levels) {
632
+ while (elem && level <= levels) {
602
633
  // check within
603
- var innerElemHref = elem.querySelector("[href*=\"".concat(href, "\"]"));
604
- if (innerElemHref && elem.classList.value) {
605
- return "".concat(elem.tagName, ".").concat(elem.classList.value.replace(/\s/g, '.'), " [href*=\"").concat(href, "\"]");
634
+ var innerHrefElem = elem.querySelector("[href*=\"".concat(href, "\"]"));
635
+ if (innerHrefElem) {
636
+ // innerHrefElem was found! now get selectors up to elem that contained it
637
+ var selector = '';
638
+ var parentElem = innerHrefElem;
639
+ while (parentElem && parentElem != elem.parentElement) {
640
+ var classNames = parentElem.classList.value.trim().split(' ');
641
+ // document.querySelector does not appreciate special characters - must escape them
642
+ var escapedClassSelector = classNames.reduce(function (classes, classname) { return (classname.trim() ? "".concat(classes, ".").concat((0, css_escape_1.default)(classname.trim())) : classes); }, '');
643
+ selector = "".concat(parentElem.tagName).concat(escapedClassSelector).concat(selector ? " ".concat(selector) : '');
644
+ parentElem = parentElem.parentElement;
645
+ }
646
+ return "".concat(selector, "[href*=\"").concat(href, "\"]");
606
647
  }
607
648
  elem = elem.parentElement;
608
649
  level++;
609
650
  }
610
651
  return;
611
652
  }
653
+ exports.generateHrefSelector = generateHrefSelector;
612
654
  function backFillSize(pages, pageSize) {
613
655
  var totalResults = pages * pageSize;
614
656
  var numPages = Math.ceil(totalResults / API_LIMIT);
@@ -28,9 +28,9 @@ export declare type RestorePositionObj = {
28
28
  element?: ElementPositionObj;
29
29
  };
30
30
  export declare type ElementPositionObj = {
31
- href: string;
32
- selector: string;
33
- domRect: DOMRect;
31
+ href?: string;
32
+ selector?: string;
33
+ domRect?: DOMRect;
34
34
  };
35
35
  export declare enum ControllerTypes {
36
36
  search = "search",
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"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"}
@@ -25,7 +25,9 @@ export declare abstract class AbstractController {
25
25
  };
26
26
  protected _initialized: boolean;
27
27
  get initialized(): boolean;
28
- handleError: (err: unknown) => void;
28
+ handleError: (err: unknown, details?: {
29
+ [any: string]: unknown;
30
+ } | undefined) => void;
29
31
  constructor(config: ControllerConfig, { client, store, urlManager, eventManager, profiler, logger, tracker }: ControllerServices, context?: ContextVariables);
30
32
  createTargeter(target: Target, onTarget: OnTarget, document?: Document): DomTargeter | undefined;
31
33
  addTargeter(target: DomTargeter): DomTargeter | undefined;