@searchspring/snap-controller 0.43.0 → 0.44.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.
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 +67 -44
  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 +67 -44
  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
@@ -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;
@@ -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"}
@@ -4,7 +4,7 @@ export class AbstractController {
4
4
  this.type = 'abstract';
5
5
  this.targeters = {};
6
6
  this._initialized = false;
7
- this.handleError = (err) => {
7
+ this.handleError = (err, details) => {
8
8
  let event;
9
9
  if (err instanceof ErrorEvent) {
10
10
  event = err;
@@ -12,11 +12,12 @@ export class AbstractController {
12
12
  else if (err instanceof Error) {
13
13
  event = new ErrorEvent('error', {
14
14
  error: err,
15
+ message: err.message,
15
16
  });
16
17
  }
17
- else if (typeof err === 'string') {
18
+ else if (typeof err === 'string' || typeof err == 'number') {
18
19
  event = new ErrorEvent('error', {
19
- error: new Error(err),
20
+ error: new Error(err.toString()),
20
21
  });
21
22
  }
22
23
  else if (typeof err === 'object' && Object.keys(err).length) {
@@ -30,12 +31,19 @@ export class AbstractController {
30
31
  if (event) {
31
32
  const { filename, colno, lineno, error: { stack }, message, timeStamp, } = event;
32
33
  const beaconPayload = {
33
- filename: filename || `${this.id} (${this.type.charAt(0).toUpperCase() + this.type.slice(1)}Controller)`,
34
+ filename,
34
35
  stack,
35
36
  message,
36
37
  colno,
37
38
  lineno,
38
39
  errortimestamp: timeStamp,
40
+ details,
41
+ context: {
42
+ controller: {
43
+ id: this.id,
44
+ type: this.type,
45
+ },
46
+ },
39
47
  };
40
48
  this.tracker.track.error(beaconPayload);
41
49
  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;;;;uBAsDpB,UAAU,KAAG,IAAI;;MAS5B;IAEF,MAAM,IAAI,IAAI;IAgBR,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IA0E3B,cAAc,QAAa,QAAQ,IAAI,CAAC,CAwBtC;IAEF,MAAM,QAAa,QAAQ,IAAI,CAAC,CA4G9B;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"}
@@ -56,9 +56,9 @@ export class AutocompleteController extends AbstractController {
56
56
  await timeout(INPUT_DELAY);
57
57
  }
58
58
  if (this.config.settings.integratedSpellCorrection) {
59
- // if integratedSpellCorrection is set, set fallbackQuery to the first suggestion as long as its value differs
60
- if (input && this.store.terms.length && this.store.terms[0].value != input.value) {
61
- actionUrl = actionUrl?.set(PARAM_FALLBACK_QUERY, this.store.terms[0].value);
59
+ //set fallbackQuery to the correctedQuery
60
+ if (this.store.search.correctedQuery) {
61
+ actionUrl = actionUrl?.set(PARAM_FALLBACK_QUERY, this.store.search.correctedQuery.string);
62
62
  }
63
63
  }
64
64
  else if (this.store.search.originalQuery) {
@@ -114,9 +114,9 @@ export class AutocompleteController extends AbstractController {
114
114
  await timeout(INPUT_DELAY);
115
115
  }
116
116
  if (this.config.settings.integratedSpellCorrection) {
117
- // if integratedSpellCorrection is set, set fallbackQuery to the first suggestion as long as its value differs
118
- if (input && this.store.terms.length && this.store.terms[0].value != input.value) {
119
- addHiddenFormInput(form, PARAM_FALLBACK_QUERY, this.store.terms[0].value);
117
+ //set fallbackQuery to the correctedQuery
118
+ if (this.store.search.correctedQuery) {
119
+ addHiddenFormInput(form, PARAM_FALLBACK_QUERY, this.store.search.correctedQuery.string);
120
120
  }
121
121
  }
122
122
  else if (this.store.search.originalQuery) {
@@ -173,8 +173,8 @@ export class AutocompleteController extends AbstractController {
173
173
  this.setFocused(e.target);
174
174
  }
175
175
  const value = e.target.value;
176
- // prevent search when value is unchanged
177
- if (this.store.state.input == value && this.store.loaded) {
176
+ // prevent search when value is unchanged or empty
177
+ if (((!this.store.state.input && !value) || this.store.state.input == value) && this.store.loaded) {
178
178
  return;
179
179
  }
180
180
  this.store.state.input = value;
@@ -184,25 +184,24 @@ export class AutocompleteController extends AbstractController {
184
184
  input.value = value;
185
185
  });
186
186
  }
187
+ // TODO cancel any current requests?
187
188
  clearTimeout(this.handlers.input.timeoutDelay);
188
- // input is empty
189
+ const trendingResultsEnabled = this.store.trending?.length && this.config.settings?.trending?.showResults;
190
+ const historyResultsEnabled = this.store.history?.length && this.config.settings?.history?.showResults;
191
+ this.urlManager.reset().go();
189
192
  if (!value) {
190
- // TODO cancel any current requests?
191
- // reset the store (in case input was just cleared)
193
+ // there is no input value - reset state of store
192
194
  this.store.reset();
193
- if (this.store.trending?.length && this.config.settings?.trending?.showResults) {
195
+ // show results for trending or history (if configured) - trending has priority
196
+ if (trendingResultsEnabled) {
194
197
  this.store.trending[0].preview();
195
198
  }
196
- else if (this.store.history?.length && this.config.settings?.history?.showResults) {
199
+ else if (historyResultsEnabled) {
197
200
  this.store.history[0].preview();
198
201
  }
199
- else {
200
- // reset urlManager when a preview is not available to do so
201
- this.urlManager.reset().go();
202
- }
203
202
  }
204
203
  else {
205
- this.store.resetTerms();
204
+ // new query in the input - trigger a new search via UrlManager
206
205
  this.handlers.input.timeoutDelay = setTimeout(() => {
207
206
  this.store.state.locks.terms.unlock();
208
207
  this.store.state.locks.facets.unlock();
@@ -247,7 +246,12 @@ export class AutocompleteController extends AbstractController {
247
246
  this.store.updateTrendingTerms(terms);
248
247
  };
249
248
  this.search = async () => {
249
+ // if urlManager has no query, there will be no need to get params and no query
250
+ if (!this.urlManager.state.query) {
251
+ return;
252
+ }
250
253
  const params = this.params;
254
+ // if params have no query do not search
251
255
  if (!params?.search?.query?.string) {
252
256
  return;
253
257
  }
@@ -324,29 +328,44 @@ export class AutocompleteController extends AbstractController {
324
328
  }
325
329
  catch (err) {
326
330
  if (err) {
327
- switch (err) {
328
- case 429:
329
- this.store.error = {
330
- code: 429,
331
- type: ErrorType.WARNING,
332
- message: 'Too many requests try again later',
333
- };
334
- this.log.warn(this.store.error);
335
- break;
336
- case 500:
337
- this.store.error = {
338
- code: 500,
339
- type: ErrorType.ERROR,
340
- message: 'Invalid Search Request or Service Unavailable',
341
- };
342
- this.log.error(this.store.error);
343
- break;
344
- default:
345
- this.log.error(err);
346
- break;
331
+ if (err.err && err.fetchDetails) {
332
+ switch (err.fetchDetails.status) {
333
+ case 429: {
334
+ this.store.error = {
335
+ code: 429,
336
+ type: ErrorType.WARNING,
337
+ message: 'Too many requests try again later',
338
+ };
339
+ break;
340
+ }
341
+ case 500: {
342
+ this.store.error = {
343
+ code: 500,
344
+ type: ErrorType.ERROR,
345
+ message: 'Invalid Search Request or Service Unavailable',
346
+ };
347
+ break;
348
+ }
349
+ default: {
350
+ this.store.error = {
351
+ type: ErrorType.ERROR,
352
+ message: err.err.message,
353
+ };
354
+ break;
355
+ }
356
+ }
357
+ this.log.error(this.store.error);
358
+ this.handleError(err.err, err.fetchDetails);
359
+ }
360
+ else {
361
+ this.store.error = {
362
+ type: ErrorType.ERROR,
363
+ message: `Something went wrong... - ${err}`,
364
+ };
365
+ this.log.error(err);
366
+ this.handleError(err);
347
367
  }
348
368
  this.store.loading = false;
349
- this.handleError(err);
350
369
  }
351
370
  }
352
371
  };
@@ -508,6 +527,7 @@ export class AutocompleteController extends AbstractController {
508
527
  else if (form) {
509
528
  form.addEventListener('submit', this.handlers.input.formSubmit);
510
529
  formActionUrl = form.action || '';
530
+ // serializeForm will include additional form element in our urlManager as globals
511
531
  if (this.config.settings?.serializeForm) {
512
532
  bindFormParameters(form, this.handlers.input.formElementChange, function (elem) {
513
533
  return elem != input;
@@ -528,10 +548,12 @@ export class AutocompleteController extends AbstractController {
528
548
  };
529
549
  }));
530
550
  }
531
- if (document.activeElement === input) {
551
+ // if the input is currently focused, trigger setFocues which will eventually trigger keyup - but not if loading
552
+ if (document.activeElement === input && !this.store.loading) {
532
553
  this.setFocused(input);
533
554
  }
534
555
  });
556
+ // get trending terms - this is at the bottom because urlManager changes need to be in place before creating the store
535
557
  if (this.config.settings?.trending?.limit && this.config.settings?.trending?.limit > 0 && !this.store.trending?.length) {
536
558
  this.searchTrending();
537
559
  }
@@ -554,7 +576,7 @@ async function timeout(time) {
554
576
  });
555
577
  }
556
578
  // for grabbing other parameters from the form and using them in UrlManager
557
- const INPUT_TYPE_BLACKLIST = ['file', 'reset', 'submit', 'button', 'image', 'password'];
579
+ const INPUT_TYPE_BLOCKLIST = ['file', 'reset', 'submit', 'button', 'image', 'password'];
558
580
  function getFormParameters(form, filterFn) {
559
581
  const parameters = {};
560
582
  if (typeof form == 'object' && form.nodeName == 'FORM') {
@@ -563,7 +585,7 @@ function getFormParameters(form, filterFn) {
563
585
  if (typeof filterFn == 'function' && !filterFn(elem)) {
564
586
  continue;
565
587
  }
566
- if (elem.name && !INPUT_TYPE_BLACKLIST.includes(elem.type)) {
588
+ if (elem.name && !INPUT_TYPE_BLOCKLIST.includes(elem.type)) {
567
589
  if ((elem.type != 'checkbox' && elem.type != 'radio') || elem.checked) {
568
590
  parameters[elem.name] = elem.value;
569
591
  }
@@ -572,6 +594,7 @@ function getFormParameters(form, filterFn) {
572
594
  }
573
595
  return parameters;
574
596
  }
597
+ // this picks up changes to the form
575
598
  function bindFormParameters(form, fn, filterFn) {
576
599
  if (typeof form == 'object' && form.nodeName == 'FORM') {
577
600
  for (let i = form.elements.length - 1; i >= 0; i--) {
@@ -579,7 +602,7 @@ function bindFormParameters(form, fn, filterFn) {
579
602
  if (typeof filterFn == 'function' && !filterFn(elem)) {
580
603
  continue;
581
604
  }
582
- if (elem.name && !INPUT_TYPE_BLACKLIST.includes(elem.type)) {
605
+ if (elem.name && !INPUT_TYPE_BLOCKLIST.includes(elem.type)) {
583
606
  elem.addEventListener('change', fn);
584
607
  }
585
608
  }
@@ -589,7 +612,7 @@ function unbindFormParameters(form, fn) {
589
612
  if (typeof form == 'object' && form.nodeName == 'FORM') {
590
613
  for (let i = form.elements.length - 1; i >= 0; i--) {
591
614
  const elem = form.elements[i];
592
- if (elem.name && !INPUT_TYPE_BLACKLIST.includes(elem.type)) {
615
+ if (elem.name && !INPUT_TYPE_BLOCKLIST.includes(elem.type)) {
593
616
  elem.removeEventListener('change', fn);
594
617
  }
595
618
  }
@@ -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"}
@@ -125,29 +125,44 @@ export class FinderController extends AbstractController {
125
125
  }
126
126
  catch (err) {
127
127
  if (err) {
128
- switch (err) {
129
- case 429:
130
- this.store.error = {
131
- code: 429,
132
- type: ErrorType.WARNING,
133
- message: 'Too many requests try again later',
134
- };
135
- this.log.warn(this.store.error);
136
- break;
137
- case 500:
138
- this.store.error = {
139
- code: 500,
140
- type: ErrorType.ERROR,
141
- message: 'Invalid Search Request or Service Unavailable',
142
- };
143
- this.log.error(this.store.error);
144
- break;
145
- default:
146
- this.log.error(err);
147
- break;
128
+ if (err.err && err.fetchDetails) {
129
+ switch (err.fetchDetails.status) {
130
+ case 429: {
131
+ this.store.error = {
132
+ code: 429,
133
+ type: ErrorType.WARNING,
134
+ message: 'Too many requests try again later',
135
+ };
136
+ break;
137
+ }
138
+ case 500: {
139
+ this.store.error = {
140
+ code: 500,
141
+ type: ErrorType.ERROR,
142
+ message: 'Invalid Search Request or Service Unavailable',
143
+ };
144
+ break;
145
+ }
146
+ default: {
147
+ this.store.error = {
148
+ type: ErrorType.ERROR,
149
+ message: err.err.message,
150
+ };
151
+ break;
152
+ }
153
+ }
154
+ this.log.error(this.store.error);
155
+ this.handleError(err.err, err.fetchDetails);
156
+ }
157
+ else {
158
+ this.store.error = {
159
+ type: ErrorType.ERROR,
160
+ message: `Something went wrong... - ${err}`,
161
+ };
162
+ this.log.error(err);
163
+ this.handleError(err);
148
164
  }
149
165
  this.store.loading = false;
150
- this.handleError(err);
151
166
  }
152
167
  }
153
168
  };
@@ -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"}