@searchspring/snap-controller 0.27.5 → 0.27.8

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 (37) hide show
  1. package/dist/cjs/Abstract/AbstractController.d.ts +5 -4
  2. package/dist/cjs/Abstract/AbstractController.d.ts.map +1 -1
  3. package/dist/cjs/Autocomplete/AutocompleteController.d.ts +6 -5
  4. package/dist/cjs/Autocomplete/AutocompleteController.d.ts.map +1 -1
  5. package/dist/cjs/Autocomplete/AutocompleteController.js +43 -37
  6. package/dist/cjs/Finder/FinderController.d.ts.map +1 -1
  7. package/dist/cjs/Finder/FinderController.js +4 -1
  8. package/dist/cjs/Recommendation/RecommendationController.d.ts +26 -12
  9. package/dist/cjs/Recommendation/RecommendationController.d.ts.map +1 -1
  10. package/dist/cjs/Recommendation/RecommendationController.js +12 -11
  11. package/dist/cjs/Search/SearchController.d.ts +1 -1
  12. package/dist/cjs/Search/SearchController.d.ts.map +1 -1
  13. package/dist/cjs/Search/SearchController.js +39 -36
  14. package/dist/cjs/types.d.ts +3 -3
  15. package/dist/cjs/types.d.ts.map +1 -1
  16. package/dist/cjs/utils/getParams.d.ts +2 -1
  17. package/dist/cjs/utils/getParams.d.ts.map +1 -1
  18. package/dist/cjs/utils/getParams.js +0 -1
  19. package/dist/esm/Abstract/AbstractController.d.ts +5 -4
  20. package/dist/esm/Abstract/AbstractController.d.ts.map +1 -1
  21. package/dist/esm/Autocomplete/AutocompleteController.d.ts +6 -5
  22. package/dist/esm/Autocomplete/AutocompleteController.d.ts.map +1 -1
  23. package/dist/esm/Autocomplete/AutocompleteController.js +13 -8
  24. package/dist/esm/Finder/FinderController.d.ts.map +1 -1
  25. package/dist/esm/Finder/FinderController.js +4 -1
  26. package/dist/esm/Recommendation/RecommendationController.d.ts +26 -12
  27. package/dist/esm/Recommendation/RecommendationController.d.ts.map +1 -1
  28. package/dist/esm/Recommendation/RecommendationController.js +11 -10
  29. package/dist/esm/Search/SearchController.d.ts +1 -1
  30. package/dist/esm/Search/SearchController.d.ts.map +1 -1
  31. package/dist/esm/Search/SearchController.js +8 -5
  32. package/dist/esm/types.d.ts +3 -3
  33. package/dist/esm/types.d.ts.map +1 -1
  34. package/dist/esm/utils/getParams.d.ts +2 -1
  35. package/dist/esm/utils/getParams.d.ts.map +1 -1
  36. package/dist/esm/utils/getParams.js +0 -1
  37. package/package.json +11 -11
@@ -105,18 +105,18 @@ var SearchController = /** @class */ (function (_super) {
105
105
  _this.track = {
106
106
  product: {
107
107
  click: function (e, result) {
108
- var _a;
108
+ var _a, _b;
109
109
  // store scroll position
110
- if (_this.config.settings.infinite) {
110
+ if ((_a = _this.config.settings) === null || _a === void 0 ? void 0 : _a.infinite) {
111
111
  var stringyParams = _this.storage.get('lastStringyParams');
112
112
  var scrollMap = {};
113
113
  scrollMap[stringyParams] = window.scrollY;
114
114
  _this.storage.set('scrollMap', scrollMap);
115
115
  }
116
116
  // track
117
- var _b = result.attributes, intellisuggestData = _b.intellisuggestData, intellisuggestSignature = _b.intellisuggestSignature;
117
+ var _c = result.attributes, intellisuggestData = _c.intellisuggestData, intellisuggestSignature = _c.intellisuggestSignature;
118
118
  var target = e.target;
119
- var href = (target === null || target === void 0 ? void 0 : target.href) || ((_a = result.mappings.core) === null || _a === void 0 ? void 0 : _a.url) || undefined;
119
+ var href = (target === null || target === void 0 ? void 0 : target.href) || ((_b = result.mappings.core) === null || _b === void 0 ? void 0 : _b.url) || undefined;
120
120
  var event = _this.tracker.track.product.click({
121
121
  intellisuggestData: intellisuggestData,
122
122
  intellisuggestSignature: intellisuggestSignature,
@@ -129,32 +129,32 @@ var SearchController = /** @class */ (function (_super) {
129
129
  };
130
130
  _this.search = function () { return __awaiter(_this, void 0, void 0, function () {
131
131
  var params, err_1, stringyParams, prevStringyParams, preventBackfill, dontBackfill, searchProfile, _a, meta, response, previousResults_1, backfills, page, backfillParams, backfillResponses, afterSearchProfile, err_2, afterStoreProfile, err_3, err_4;
132
- var _b, _c, _d, _e, _f, _g, _h;
133
- return __generator(this, function (_j) {
134
- switch (_j.label) {
132
+ var _b, _c, _d, _e, _f, _g, _h, _j, _k, _l;
133
+ return __generator(this, function (_m) {
134
+ switch (_m.label) {
135
135
  case 0:
136
136
  if (!!this.initialized) return [3 /*break*/, 2];
137
137
  return [4 /*yield*/, this.init()];
138
138
  case 1:
139
- _j.sent();
140
- _j.label = 2;
139
+ _m.sent();
140
+ _m.label = 2;
141
141
  case 2:
142
142
  params = this.params;
143
- _j.label = 3;
143
+ _m.label = 3;
144
144
  case 3:
145
- _j.trys.push([3, 20, , 21]);
146
- _j.label = 4;
145
+ _m.trys.push([3, 20, , 21]);
146
+ _m.label = 4;
147
147
  case 4:
148
- _j.trys.push([4, 6, , 7]);
148
+ _m.trys.push([4, 6, , 7]);
149
149
  return [4 /*yield*/, this.eventManager.fire('beforeSearch', {
150
150
  controller: this,
151
151
  request: params,
152
152
  })];
153
153
  case 5:
154
- _j.sent();
154
+ _m.sent();
155
155
  return [3 /*break*/, 7];
156
156
  case 6:
157
- err_1 = _j.sent();
157
+ err_1 = _m.sent();
158
158
  if ((err_1 === null || err_1 === void 0 ? void 0 : err_1.message) == 'cancelled') {
159
159
  this.log.warn("'beforeSearch' middleware cancelled");
160
160
  return [2 /*return*/];
@@ -171,9 +171,9 @@ var SearchController = /** @class */ (function (_super) {
171
171
  // no param change - not searching
172
172
  return [2 /*return*/];
173
173
  }
174
- if (this.config.settings.infinite) {
175
- preventBackfill = ((_b = this.config.settings.infinite) === null || _b === void 0 ? void 0 : _b.backfill) && !this.store.results.length && ((_c = params.pagination) === null || _c === void 0 ? void 0 : _c.page) > this.config.settings.infinite.backfill;
176
- dontBackfill = !((_d = this.config.settings.infinite) === null || _d === void 0 ? void 0 : _d.backfill) && !this.store.results.length && ((_e = params.pagination) === null || _e === void 0 ? void 0 : _e.page) > 1;
174
+ if ((_b = this.config.settings) === null || _b === void 0 ? void 0 : _b.infinite) {
175
+ preventBackfill = ((_c = this.config.settings.infinite) === null || _c === void 0 ? void 0 : _c.backfill) && !this.store.results.length && ((_d = params.pagination) === null || _d === void 0 ? void 0 : _d.page) > this.config.settings.infinite.backfill;
176
+ dontBackfill = !((_e = this.config.settings.infinite) === null || _e === void 0 ? void 0 : _e.backfill) && !this.store.results.length && ((_f = params.pagination) === null || _f === void 0 ? void 0 : _f.page) > 1;
177
177
  if (preventBackfill || dontBackfill) {
178
178
  this.storage.set('scrollMap', {});
179
179
  this.urlManager.set('page', 1).go();
@@ -183,50 +183,52 @@ var SearchController = /** @class */ (function (_super) {
183
183
  searchProfile = this.profiler.create({ type: 'event', name: 'search', context: params }).start();
184
184
  return [4 /*yield*/, this.client.search(params)];
185
185
  case 8:
186
- _a = _j.sent(), meta = _a[0], response = _a[1];
186
+ _a = _m.sent(), meta = _a[0], response = _a[1];
187
+ // @ts-ignore
187
188
  if (!response.meta) {
188
189
  /**
189
190
  * MockClient will overwrite the client search() method and use
190
191
  * SearchData to return mock data which already contains meta data
191
192
  */
193
+ // @ts-ignore
192
194
  response.meta = meta;
193
195
  }
194
- if (!(this.config.settings.infinite && ((_f = params.pagination) === null || _f === void 0 ? void 0 : _f.page) > 1)) return [3 /*break*/, 11];
195
- previousResults_1 = ((_g = this.store.data) === null || _g === void 0 ? void 0 : _g.results) || [];
196
- if (!(((_h = this.config.settings) === null || _h === void 0 ? void 0 : _h.infinite.backfill) && !previousResults_1.length)) return [3 /*break*/, 10];
196
+ if (!(((_g = this.config.settings) === null || _g === void 0 ? void 0 : _g.infinite) && ((_h = params.pagination) === null || _h === void 0 ? void 0 : _h.page) > 1)) return [3 /*break*/, 11];
197
+ previousResults_1 = ((_j = this.store.data) === null || _j === void 0 ? void 0 : _j.results) || [];
198
+ if (!(((_k = this.config.settings) === null || _k === void 0 ? void 0 : _k.infinite.backfill) && !previousResults_1.length)) return [3 /*break*/, 10];
197
199
  backfills = [];
198
- for (page = 1; page < params.pagination.page; page++) {
200
+ for (page = 1; page < ((_l = params.pagination) === null || _l === void 0 ? void 0 : _l.page); page++) {
199
201
  backfillParams = (0, deepmerge_1.default)(__assign({}, params), { pagination: { page: page } });
200
202
  backfills.push(this.client.search(backfillParams));
201
203
  }
202
204
  return [4 /*yield*/, Promise.all(backfills)];
203
205
  case 9:
204
- backfillResponses = _j.sent();
206
+ backfillResponses = _m.sent();
205
207
  backfillResponses.map(function (_a) {
206
208
  var meta = _a[0], data = _a[1];
207
209
  previousResults_1 = previousResults_1.concat(data.results);
208
210
  });
209
- _j.label = 10;
211
+ _m.label = 10;
210
212
  case 10:
211
213
  response.results = __spreadArray(__spreadArray([], previousResults_1, true), (response.results || []), true);
212
- _j.label = 11;
214
+ _m.label = 11;
213
215
  case 11:
214
216
  searchProfile.stop();
215
217
  this.log.profile(searchProfile);
216
218
  afterSearchProfile = this.profiler.create({ type: 'event', name: 'afterSearch', context: params }).start();
217
- _j.label = 12;
219
+ _m.label = 12;
218
220
  case 12:
219
- _j.trys.push([12, 14, , 15]);
221
+ _m.trys.push([12, 14, , 15]);
220
222
  return [4 /*yield*/, this.eventManager.fire('afterSearch', {
221
223
  controller: this,
222
224
  request: params,
223
225
  response: response,
224
226
  })];
225
227
  case 13:
226
- _j.sent();
228
+ _m.sent();
227
229
  return [3 /*break*/, 15];
228
230
  case 14:
229
- err_2 = _j.sent();
231
+ err_2 = _m.sent();
230
232
  if ((err_2 === null || err_2 === void 0 ? void 0 : err_2.message) == 'cancelled') {
231
233
  this.log.warn("'afterSearch' middleware cancelled");
232
234
  afterSearchProfile.stop();
@@ -241,21 +243,22 @@ var SearchController = /** @class */ (function (_super) {
241
243
  afterSearchProfile.stop();
242
244
  this.log.profile(afterSearchProfile);
243
245
  // update the store
246
+ // @ts-ignore
244
247
  this.store.update(response);
245
248
  afterStoreProfile = this.profiler.create({ type: 'event', name: 'afterStore', context: params }).start();
246
- _j.label = 16;
249
+ _m.label = 16;
247
250
  case 16:
248
- _j.trys.push([16, 18, , 19]);
251
+ _m.trys.push([16, 18, , 19]);
249
252
  return [4 /*yield*/, this.eventManager.fire('afterStore', {
250
253
  controller: this,
251
254
  request: params,
252
255
  response: response,
253
256
  })];
254
257
  case 17:
255
- _j.sent();
258
+ _m.sent();
256
259
  return [3 /*break*/, 19];
257
260
  case 18:
258
- err_3 = _j.sent();
261
+ err_3 = _m.sent();
259
262
  if ((err_3 === null || err_3 === void 0 ? void 0 : err_3.message) == 'cancelled') {
260
263
  this.log.warn("'afterStore' middleware cancelled");
261
264
  afterStoreProfile.stop();
@@ -271,7 +274,7 @@ var SearchController = /** @class */ (function (_super) {
271
274
  this.log.profile(afterStoreProfile);
272
275
  return [3 /*break*/, 21];
273
276
  case 20:
274
- err_4 = _j.sent();
277
+ err_4 = _m.sent();
275
278
  if (err_4) {
276
279
  switch (err_4) {
277
280
  case 429:
@@ -392,7 +395,7 @@ var SearchController = /** @class */ (function (_super) {
392
395
  Object.defineProperty(SearchController.prototype, "params", {
393
396
  get: function () {
394
397
  var _a, _b, _c, _d;
395
- var params = (0, deepmerge_1.default)(__assign({}, (0, getParams_1.getSearchParams)(this.urlManager.state)), this.config.globals);
398
+ var params = (0, deepmerge_1.default)(__assign({}, (0, getParams_1.getSearchParams)(this.urlManager.state)), this.config.globals || {});
396
399
  // redirect setting
397
400
  if (!((_b = (_a = this.config.settings) === null || _a === void 0 ? void 0 : _a.redirects) === null || _b === void 0 ? void 0 : _b.merchandising) || this.store.loaded) {
398
401
  params.search = params.search || {};
@@ -1,7 +1,7 @@
1
1
  import type { AbstractController } from './Abstract/AbstractController';
2
2
  import type { EventManager, Middleware, Next } from '@searchspring/snap-event-manager';
3
3
  import type { Client } from '@searchspring/snap-client';
4
- import type { AbstractStore, StoreConfig, SearchStoreConfig, FinderStoreConfig, AutocompleteStoreConfig, RecommendationStoreConfig } from '@searchspring/snap-store-mobx';
4
+ import type { SearchStore, AutocompleteStore, FinderStore, RecommendationStore, StoreConfig, SearchStoreConfig, FinderStoreConfig, AutocompleteStoreConfig, RecommendationStoreConfig } from '@searchspring/snap-store-mobx';
5
5
  import type { Tracker, ProductViewEvent } from '@searchspring/snap-tracker';
6
6
  import type { Profiler } from '@searchspring/snap-profiler';
7
7
  import type { UrlManager } from '@searchspring/snap-url-manager';
@@ -12,7 +12,7 @@ declare global {
12
12
  }
13
13
  }
14
14
  export declare type NextEvent = Next;
15
- export declare type PluginFunction = (cntrlr: AbstractController, ...args: any[]) => Promise<void>;
15
+ export declare type PluginFunction = (cntrlr: AbstractController, ...args: any) => Promise<void>;
16
16
  export declare type PluginGrouping = [func: PluginFunction, ...args: unknown[]];
17
17
  export declare type BeforeSearchObj = {
18
18
  controller: AbstractController;
@@ -35,7 +35,7 @@ export declare enum ControllerTypes {
35
35
  }
36
36
  export declare type ControllerServices = {
37
37
  client: Client;
38
- store: AbstractStore;
38
+ store: SearchStore | AutocompleteStore | FinderStore | RecommendationStore;
39
39
  urlManager: UrlManager;
40
40
  eventManager: EventManager;
41
41
  profiler: Profiler;
@@ -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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"}
@@ -1,2 +1,3 @@
1
- export declare function getSearchParams(state: any): Record<string, any>;
1
+ import type { ImmutableUrlState } from '@searchspring/snap-url-manager';
2
+ export declare function getSearchParams(state: ImmutableUrlState): Record<string, any>;
2
3
  //# sourceMappingURL=getParams.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"getParams.d.ts","sourceRoot":"","sources":["../../../src/utils/getParams.ts"],"names":[],"mappings":"AAkCA,wBAAgB,eAAe,CAAC,KAAK,KAAA,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAgF1D"}
1
+ {"version":3,"file":"getParams.d.ts","sourceRoot":"","sources":["../../../src/utils/getParams.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AAqCxE,wBAAgB,eAAe,CAAC,KAAK,EAAE,iBAAiB,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAgF7E"}
@@ -1,5 +1,4 @@
1
1
  "use strict";
2
- // translate state to snAPI params
3
2
  Object.defineProperty(exports, "__esModule", { value: true });
4
3
  exports.getSearchParams = void 0;
5
4
  function getSearchParams(state) {
@@ -1,5 +1,6 @@
1
1
  import { LogMode } from '@searchspring/snap-logger';
2
2
  import { DomTargeter } from '@searchspring/snap-toolbox';
3
+ import type { Client } from '@searchspring/snap-client';
3
4
  import type { AbstractStore } from '@searchspring/snap-store-mobx';
4
5
  import type { UrlManager } from '@searchspring/snap-url-manager';
5
6
  import type { EventManager, Middleware } from '@searchspring/snap-event-manager';
@@ -12,7 +13,7 @@ export declare abstract class AbstractController {
12
13
  id: string;
13
14
  type: string;
14
15
  config: ControllerConfig;
15
- client: any;
16
+ client: Client;
16
17
  store: AbstractStore;
17
18
  urlManager: UrlManager;
18
19
  eventManager: EventManager;
@@ -27,14 +28,14 @@ export declare abstract class AbstractController {
27
28
  private _environment;
28
29
  get initialized(): boolean;
29
30
  constructor(config: ControllerConfig, { client, store, urlManager, eventManager, profiler, logger, tracker }: ControllerServices, context?: ContextVariables);
30
- createTargeter(target: Target, onTarget: OnTarget, document?: Document): DomTargeter;
31
- addTargeter(target: DomTargeter): DomTargeter;
31
+ createTargeter(target: Target, onTarget: OnTarget, document?: Document): DomTargeter | undefined;
32
+ addTargeter(target: DomTargeter): DomTargeter | undefined;
32
33
  set environment(env: LogMode);
33
34
  get environment(): LogMode;
34
35
  init(): Promise<void>;
35
36
  retarget(): void;
36
37
  abstract search(): Promise<void>;
37
- plugin(func: (cntrlr: AbstractController, ...args: any[]) => Promise<void>, ...args: unknown[]): Promise<void>;
38
+ plugin(func: (cntrlr: AbstractController, ...args: any) => Promise<void>, ...args: unknown[]): Promise<void>;
38
39
  on<T>(event: string, ...func: Middleware<T>[]): void;
39
40
  use(attachments: Attachments): void;
40
41
  }
@@ -1 +1 @@
1
- {"version":3,"file":"AbstractController.d.ts","sourceRoot":"","sources":["../../../src/Abstract/AbstractController.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,2BAA2B,CAAC;AACpD,OAAO,EAAE,WAAW,EAAgB,MAAM,4BAA4B,CAAC;AAGvE,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,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAC;AAEnE,OAAO,KAAK,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAGpG,8BAAsB,kBAAkB;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,SAAc;IAClB,MAAM,EAAE,gBAAgB,CAAC;IACzB,MAAM,MAAC;IACP,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,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,YAAY,CAAsB;IAE1C,IAAI,WAAW,IAAI,OAAO,CAEzB;gBAGA,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;IA2ExB,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAAC,EAAE,QAAQ,GAAG,WAAW;IAIpF,WAAW,CAAC,MAAM,EAAE,WAAW,GAAG,WAAW;IASpD,IAAW,WAAW,CAAC,GAAG,EAAE,OAAO,EAKlC;IAED,IAAW,WAAW,IAAI,OAAO,CAEhC;IAEY,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IA+C3B,QAAQ,IAAI,IAAI;aAMP,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IAE1B,MAAM,CAAC,IAAI,EAAE,CAAC,MAAM,EAAE,kBAAkB,EAAE,GAAG,IAAI,OAAA,KAAK,OAAO,CAAC,IAAI,CAAC,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAI7G,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,OAAO,EAAE,MAAM,2BAA2B,CAAC;AACpD,OAAO,EAAE,WAAW,EAAgB,MAAM,4BAA4B,CAAC;AAEvE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAC;AAExD,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,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAC;AAEnE,OAAO,KAAK,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAGpG,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,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,YAAY,CAAsB;IAE1C,IAAI,WAAW,IAAI,OAAO,CAEzB;gBAGA,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;IA2ExB,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;IAShE,IAAW,WAAW,CAAC,GAAG,EAAE,OAAO,EAKlC;IAED,IAAW,WAAW,IAAI,OAAO,CAEhC;IAEY,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IA+C3B,QAAQ,IAAI,IAAI;aAMP,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IAE1B,MAAM,CAAC,IAAI,EAAE,CAAC,MAAM,EAAE,kBAAkB,EAAE,GAAG,IAAI,EAAE,GAAG,KAAK,OAAO,CAAC,IAAI,CAAC,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAIlH,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,13 +1,14 @@
1
+ /// <reference types="node" />
1
2
  import { StorageStore } from '@searchspring/snap-store-mobx';
2
3
  import { AbstractController } from '../Abstract/AbstractController';
3
4
  import { ControllerTypes } from '../types';
4
- import type { AutocompleteStore } from '@searchspring/snap-store-mobx';
5
+ import { AutocompleteStore } from '@searchspring/snap-store-mobx';
5
6
  import type { AutocompleteControllerConfig, ControllerServices, ContextVariables } from '../types';
6
7
  import type { AutocompleteRequestModel } from '@searchspring/snapi-types';
7
8
  export declare const INPUT_DELAY = 200;
8
9
  declare type AutocompleteTrackMethods = {
9
10
  product: {
10
- click: (e: any, result: any) => void;
11
+ click: (e: MouseEvent, result: any) => void;
11
12
  };
12
13
  };
13
14
  export declare class AutocompleteController extends AbstractController {
@@ -22,12 +23,12 @@ export declare class AutocompleteController extends AbstractController {
22
23
  reset(): void;
23
24
  handlers: {
24
25
  input: {
25
- enterKey: (e: KeyboardEvent) => Promise<boolean>;
26
+ enterKey: (e: KeyboardEvent) => Promise<boolean | undefined>;
26
27
  escKey: (e: KeyboardEvent) => void;
27
28
  focus: (e: FocusEvent) => void;
28
- formSubmit: (e: any) => Promise<void>;
29
+ formSubmit: (e: React.FormEvent<HTMLInputElement>) => Promise<void>;
29
30
  keyUp: (e: KeyboardEvent) => void;
30
- timeoutDelay: any;
31
+ timeoutDelay: NodeJS.Timeout | undefined;
31
32
  };
32
33
  document: {
33
34
  click: (e: MouseEvent) => void;
@@ -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,KAAK,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AACvE,OAAO,KAAK,EACX,4BAA4B,EAI5B,kBAAkB,EAElB,gBAAgB,EAChB,MAAM,UAAU,CAAC;AAClB,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,2BAA2B,CAAC;AAG1E,eAAO,MAAM,WAAW,MAAM,CAAC;AAoB/B,aAAK,wBAAwB,GAAG;IAC/B,OAAO,EAAE;QACR,KAAK,EAAE,CAAC,CAAC,KAAA,EAAE,MAAM,KAAA,KAAK,IAAI,CAAC;KAC3B,CAAC;CACF,CAAC;AAEF,qBAAa,sBAAuB,SAAQ,kBAAkB;IACtD,IAAI,kBAAgC;IACpC,KAAK,EAAE,iBAAiB,CAAC;IACzB,MAAM,EAAE,4BAA4B,CAAC;IACrC,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;IAoD3B,KAAK,EAAE,wBAAwB,CAO7B;IAEF,IAAI,MAAM,IAAI,wBAAwB,CA+BrC;IAEK,UAAU,CAAC,YAAY,CAAC,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC;IAsChE,KAAK,IAAI,IAAI;IASb,QAAQ;;0BAEc,aAAa,KAAG,QAAQ,OAAO,CAAC;wBA6CxC,aAAa,KAAG,IAAI;uBAMrB,UAAU,KAAG,IAAI;oCAQL,QAAQ,IAAI,CAAC;uBAwCzB,aAAa,KAAG,IAAI;;;;uBA8CpB,UAAU,KAAG,IAAI;;MAS5B;IAEF,MAAM,IAAI,IAAI;IAYR,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IA2D3B,cAAc,QAAa,QAAQ,IAAI,CAAC,CAsBtC;IAEF,MAAM,QAAa,QAAQ,IAAI,CAAC,CA6G9B;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,EACX,4BAA4B,EAI5B,kBAAkB,EAElB,gBAAgB,EAChB,MAAM,UAAU,CAAC;AAClB,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,2BAA2B,CAAC;AAG1E,eAAO,MAAM,WAAW,MAAM,CAAC;AAoB/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;IAoD3B,KAAK,EAAE,wBAAwB,CAO7B;IAEF,IAAI,MAAM,IAAI,wBAAwB,CA+BrC;IAEK,UAAU,CAAC,YAAY,CAAC,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC;IAsChE,KAAK,IAAI,IAAI;IASb,QAAQ;;0BAEc,aAAa,KAAG,QAAQ,OAAO,GAAG,SAAS,CAAC;wBA6CpD,aAAa,KAAG,IAAI;uBAMrB,UAAU,KAAG,IAAI;4BAQN,MAAM,SAAS,CAAC,gBAAgB,CAAC,KAAG,QAAQ,IAAI,CAAC;uBA0C5D,aAAa,KAAG,IAAI;;;;uBA8CpB,UAAU,KAAG,IAAI;;MAS5B;IAEF,MAAM,IAAI,IAAI;IAYR,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IA2D3B,cAAc,QAAa,QAAQ,IAAI,CAAC,CAsBtC;IAEF,MAAM,QAAa,QAAQ,IAAI,CAAC,CAgH9B;CACF"}
@@ -51,11 +51,11 @@ export class AutocompleteController extends AbstractController {
51
51
  }
52
52
  // use corrected query and originalQuery
53
53
  if (this.store.search.originalQuery) {
54
- input.value = this.store.search.query.string;
55
- actionUrl = actionUrl.set(PARAM_ORIGINAL_QUERY, this.store.search.originalQuery.string);
54
+ input.value = this.store.search.query?.string;
55
+ actionUrl = actionUrl?.set(PARAM_ORIGINAL_QUERY, this.store.search.originalQuery.string);
56
56
  }
57
57
  }
58
- actionUrl = actionUrl.set('query', input.value);
58
+ actionUrl = actionUrl?.set('query', input.value);
59
59
  // TODO expected spell correct behavior queryAssumption
60
60
  try {
61
61
  await this.eventManager.fire('beforeSubmit', {
@@ -73,7 +73,7 @@ export class AutocompleteController extends AbstractController {
73
73
  console.error(err);
74
74
  }
75
75
  }
76
- window.location.href = actionUrl.href;
76
+ window.location.href = actionUrl?.href || '';
77
77
  }
78
78
  },
79
79
  escKey: (e) => {
@@ -102,7 +102,9 @@ export class AutocompleteController extends AbstractController {
102
102
  await timeout(INPUT_DELAY);
103
103
  }
104
104
  if (this.store.search.originalQuery) {
105
- input.value = this.store.search.query.string;
105
+ if (input) {
106
+ input.value = this.store.search.query?.string;
107
+ }
106
108
  addHiddenFormInput(form, PARAM_ORIGINAL_QUERY, this.store.search.originalQuery.string);
107
109
  }
108
110
  }
@@ -139,7 +141,7 @@ export class AutocompleteController extends AbstractController {
139
141
  return;
140
142
  }
141
143
  this.store.state.input = value;
142
- if (this.config.settings.syncInputs) {
144
+ if (this.config?.settings?.syncInputs) {
143
145
  const inputs = document.querySelectorAll(this.config.selector);
144
146
  inputs.forEach((input) => {
145
147
  input.value = value;
@@ -220,11 +222,13 @@ export class AutocompleteController extends AbstractController {
220
222
  }
221
223
  const searchProfile = this.profiler.create({ type: 'event', name: 'search', context: params }).start();
222
224
  const [meta, response] = await this.client.autocomplete(params);
225
+ // @ts-ignore
223
226
  if (!response.meta) {
224
227
  /**
225
228
  * MockClient will overwrite the client search() method and use
226
229
  * SearchData to return mock data which already contains meta data
227
230
  */
231
+ // @ts-ignore
228
232
  response.meta = meta;
229
233
  }
230
234
  searchProfile.stop();
@@ -251,6 +255,7 @@ export class AutocompleteController extends AbstractController {
251
255
  afterSearchProfile.stop();
252
256
  this.log.profile(afterSearchProfile);
253
257
  // update the store
258
+ // @ts-ignore
254
259
  this.store.update(response);
255
260
  const afterStoreProfile = this.profiler.create({ type: 'event', name: 'afterStore', context: params }).start();
256
261
  try {
@@ -433,7 +438,7 @@ export class AutocompleteController extends AbstractController {
433
438
  input.setAttribute('autocomplete', 'off');
434
439
  input.setAttribute(INPUT_ATTRIBUTE, '');
435
440
  input.addEventListener('keyup', this.handlers.input.keyUp);
436
- if (this.config.settings.initializeFromUrl && !input.value && this.store.state.input) {
441
+ if (this.config?.settings?.initializeFromUrl && !input.value && this.store.state.input) {
437
442
  input.value = this.store.state.input;
438
443
  }
439
444
  input.addEventListener('focus', this.handlers.input.focus);
@@ -461,7 +466,7 @@ export class AutocompleteController extends AbstractController {
461
466
  this.setFocused(input);
462
467
  }
463
468
  });
464
- if (this.config.settings?.trending?.limit > 0 && !this.store.trending?.length) {
469
+ if (this.config.settings?.trending?.limit && this.config.settings?.trending?.limit > 0 && !this.store.trending?.length) {
465
470
  this.searchTrending();
466
471
  }
467
472
  document.addEventListener('click', this.handlers.document.click);
@@ -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;AACjE,OAAO,KAAK,EAAE,sBAAsB,EAAmC,kBAAkB,EAAa,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAiBzI,qBAAa,gBAAiB,SAAQ,kBAAkB;IAChD,IAAI,kBAA0B;IAC9B,KAAK,EAAE,WAAW,CAAC;IAC1B,MAAM,EAAE,sBAAsB,CAAC;gBAG9B,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,CAchC;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;AACjE,OAAO,KAAK,EAAE,sBAAsB,EAAmC,kBAAkB,EAAa,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAiBzI,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,CAchC;IAED,IAAI,QAAa,QAAQ,IAAI,CAAC,CAe5B;IAEF,KAAK,QAAO,IAAI,CAId;IAEF,MAAM,QAAa,QAAQ,IAAI,CAAC,CAoH9B;CACF"}
@@ -69,12 +69,14 @@ export class FinderController extends AbstractController {
69
69
  }
70
70
  }
71
71
  const searchProfile = this.profiler.create({ type: 'event', name: 'search', context: params }).start();
72
- const [meta, response] = await this.client.search(params);
72
+ const [meta, response] = await this.client.finder(params);
73
+ // @ts-ignore
73
74
  if (!response.meta) {
74
75
  /**
75
76
  * MockClient will overwrite the client search() method and use
76
77
  * SearchData to return mock data which already contains meta data
77
78
  */
79
+ // @ts-ignore
78
80
  response.meta = meta;
79
81
  }
80
82
  searchProfile.stop();
@@ -101,6 +103,7 @@ export class FinderController extends AbstractController {
101
103
  afterSearchProfile.stop();
102
104
  this.log.profile(afterSearchProfile);
103
105
  // update the store
106
+ // @ts-ignore
104
107
  this.store.update(response);
105
108
  const afterStoreProfile = this.profiler.create({ type: 'event', name: 'afterStore', context: params }).start();
106
109
  try {
@@ -1,31 +1,45 @@
1
1
  import { AbstractController } from '../Abstract/AbstractController';
2
2
  import { ControllerTypes } from '../types';
3
- import type { BeaconEvent } from '@searchspring/snap-tracker';
3
+ import { BeaconEvent } from '@searchspring/snap-tracker';
4
4
  import type { RecommendationStore } from '@searchspring/snap-store-mobx';
5
5
  import type { RecommendationControllerConfig, ControllerServices, ContextVariables } from '../types';
6
6
  declare type RecommendationTrackMethods = {
7
7
  product: {
8
- click: (e: any, result: any) => BeaconEvent;
9
- render: (result: any) => BeaconEvent;
10
- impression: (result: any) => BeaconEvent;
8
+ click: (e: MouseEvent, result: any) => BeaconEvent | undefined;
9
+ render: (result: any) => BeaconEvent | undefined;
10
+ impression: (result: any) => BeaconEvent | undefined;
11
11
  };
12
- click: (e: any) => BeaconEvent;
13
- impression: () => BeaconEvent;
14
- render: () => BeaconEvent;
12
+ click: (e: MouseEvent) => BeaconEvent | undefined;
13
+ impression: () => BeaconEvent | undefined;
14
+ render: () => BeaconEvent | undefined;
15
+ };
16
+ declare type RecommendCombinedRequestModel = {
17
+ tag: string;
18
+ siteId: string;
19
+ product?: string;
20
+ shopper?: string;
21
+ categories?: string[];
22
+ cart?: string[];
23
+ lastViewed?: string[];
24
+ test?: boolean;
25
+ branch?: string;
15
26
  };
16
27
  export declare class RecommendationController extends AbstractController {
17
28
  type: ControllerTypes;
18
29
  store: RecommendationStore;
19
30
  config: RecommendationControllerConfig;
20
31
  events: {
21
- click: any;
22
- impression: any;
23
- render: any;
24
- product: {};
32
+ click?: BeaconEvent;
33
+ impression?: BeaconEvent;
34
+ render?: BeaconEvent;
35
+ product?: Record<string, {
36
+ impression?: BeaconEvent;
37
+ render?: BeaconEvent;
38
+ }>;
25
39
  };
26
40
  constructor(config: RecommendationControllerConfig, { client, store, urlManager, eventManager, profiler, logger, tracker }: ControllerServices, context?: ContextVariables);
27
41
  track: RecommendationTrackMethods;
28
- get params(): Record<string, any>;
42
+ get params(): RecommendCombinedRequestModel;
29
43
  search: () => Promise<void>;
30
44
  }
31
45
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"RecommendationController.d.ts","sourceRoot":"","sources":["../../../src/Recommendation/RecommendationController.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AACpE,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAG3C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAC9D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AACzE,OAAO,KAAK,EAAE,8BAA8B,EAAkC,kBAAkB,EAAa,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAEhJ,aAAK,0BAA0B,GAAG;IACjC,OAAO,EAAE;QACR,KAAK,EAAE,CAAC,CAAC,KAAA,EAAE,MAAM,KAAA,KAAK,WAAW,CAAC;QAClC,MAAM,EAAE,CAAC,MAAM,KAAA,KAAK,WAAW,CAAC;QAChC,UAAU,EAAE,CAAC,MAAM,KAAA,KAAK,WAAW,CAAC;KACpC,CAAC;IACF,KAAK,EAAE,CAAC,CAAC,KAAA,KAAK,WAAW,CAAC;IAC1B,UAAU,EAAE,MAAM,WAAW,CAAC;IAC9B,MAAM,EAAE,MAAM,WAAW,CAAC;CAC1B,CAAC;AAUF,qBAAa,wBAAyB,SAAQ,kBAAkB;IACxD,IAAI,kBAAkC;IACtC,KAAK,EAAE,mBAAmB,CAAC;IAClC,MAAM,EAAE,8BAA8B,CAAC;IACvC,MAAM;;;;;MAKJ;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,CAoK/B;IAEF,IAAI,MAAM,IAAI,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAyBhC;IAED,MAAM,QAAa,QAAQ,IAAI,CAAC,CAqG9B;CACF"}
1
+ {"version":3,"file":"RecommendationController.d.ts","sourceRoot":"","sources":["../../../src/Recommendation/RecommendationController.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AACpE,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAG3C,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AACzD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AACzE,OAAO,KAAK,EAAE,8BAA8B,EAAkC,kBAAkB,EAAa,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAEhJ,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,MAAM,WAAW,GAAG,SAAS,CAAC;CACtC,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,CAqK/B;IAEF,IAAI,MAAM,IAAI,6BAA6B,CA0B1C;IAED,MAAM,QAAa,QAAQ,IAAI,CAAC,CAqG9B;CACF"}
@@ -16,9 +16,9 @@ export class RecommendationController extends AbstractController {
16
16
  super(config, { client, store, urlManager, eventManager, profiler, logger, tracker }, context);
17
17
  this.type = ControllerTypes.recommendation;
18
18
  this.events = {
19
- click: null,
20
- impression: null,
21
- render: null,
19
+ click: undefined,
20
+ impression: undefined,
21
+ render: undefined,
22
22
  product: {},
23
23
  };
24
24
  this.track = {
@@ -29,7 +29,7 @@ export class RecommendationController extends AbstractController {
29
29
  const payload = {
30
30
  type: BeaconType.PROFILE_PRODUCT_CLICK,
31
31
  category: BeaconCategory.RECOMMENDATIONS,
32
- context: this.config.globals.siteId ? { website: { trackingCode: this.config.globals.siteId } } : null,
32
+ context: this.config.globals.siteId ? { website: { trackingCode: this.config.globals.siteId } } : undefined,
33
33
  event: {
34
34
  context: {
35
35
  action: 'navigate',
@@ -52,12 +52,12 @@ export class RecommendationController extends AbstractController {
52
52
  return event;
53
53
  },
54
54
  impression: (result) => {
55
- if (!this.store.profile.tag || !result || !this.events.impression || this.events.product[result.id]?.impression)
55
+ if (!this.store.profile.tag || !result || !this.events.impression || (this.events.product && this.events.product[result.id]?.impression))
56
56
  return;
57
57
  const payload = {
58
58
  type: BeaconType.PROFILE_PRODUCT_IMPRESSION,
59
59
  category: BeaconCategory.RECOMMENDATIONS,
60
- context: this.config.globals.siteId ? { website: { trackingCode: this.config.globals.siteId } } : null,
60
+ context: this.config.globals.siteId ? { website: { trackingCode: this.config.globals.siteId } } : undefined,
61
61
  event: {
62
62
  context: {
63
63
  placement: this.store.profile.placement,
@@ -85,7 +85,7 @@ export class RecommendationController extends AbstractController {
85
85
  const payload = {
86
86
  type: BeaconType.PROFILE_PRODUCT_RENDER,
87
87
  category: BeaconCategory.RECOMMENDATIONS,
88
- context: this.config.globals.siteId ? { website: { trackingCode: this.config.globals.siteId } } : null,
88
+ context: this.config.globals.siteId ? { website: { trackingCode: this.config.globals.siteId } } : undefined,
89
89
  event: {
90
90
  context: {
91
91
  placement: this.store.profile.placement,
@@ -114,7 +114,7 @@ export class RecommendationController extends AbstractController {
114
114
  const event = this.tracker.track.event({
115
115
  type: BeaconType.PROFILE_CLICK,
116
116
  category: BeaconCategory.RECOMMENDATIONS,
117
- context: this.config.globals.siteId ? { website: { trackingCode: this.config.globals.siteId } } : null,
117
+ context: this.config.globals.siteId ? { website: { trackingCode: this.config.globals.siteId } } : undefined,
118
118
  event: {
119
119
  context: {
120
120
  action: 'navigate',
@@ -140,7 +140,7 @@ export class RecommendationController extends AbstractController {
140
140
  const event = this.tracker.track.event({
141
141
  type: BeaconType.PROFILE_IMPRESSION,
142
142
  category: BeaconCategory.RECOMMENDATIONS,
143
- context: this.config.globals.siteId ? { website: { trackingCode: this.config.globals.siteId } } : null,
143
+ context: this.config.globals.siteId ? { website: { trackingCode: this.config.globals.siteId } } : undefined,
144
144
  event: {
145
145
  context: {
146
146
  placement: this.store.profile.placement,
@@ -165,7 +165,7 @@ export class RecommendationController extends AbstractController {
165
165
  const event = this.tracker.track.event({
166
166
  type: BeaconType.PROFILE_RENDER,
167
167
  category: BeaconCategory.RECOMMENDATIONS,
168
- context: this.config.globals.siteId ? { website: { trackingCode: this.config.globals.siteId } } : null,
168
+ context: this.config.globals.siteId ? { website: { trackingCode: this.config.globals.siteId } } : undefined,
169
169
  event: {
170
170
  context: {
171
171
  placement: this.store.profile.placement,
@@ -309,6 +309,7 @@ export class RecommendationController extends AbstractController {
309
309
  tag: this.config.tag,
310
310
  batched: this.config.batched,
311
311
  branch: this.config.branch || 'production',
312
+ order: this.context?.options?.order,
312
313
  ...this.config.globals,
313
314
  };
314
315
  const shopperId = this.tracker.context.shopperId;
@@ -7,7 +7,7 @@ import type { SearchControllerConfig, ControllerServices, ContextVariables } fro
7
7
  import type { SearchRequestModel } from '@searchspring/snapi-types';
8
8
  declare type SearchTrackMethods = {
9
9
  product: {
10
- click: (e: any, result: any) => BeaconEvent;
10
+ click: (e: MouseEvent, result: any) => BeaconEvent | undefined;
11
11
  };
12
12
  };
13
13
  export declare class SearchController extends AbstractController {
@@ -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,EAElB,gBAAgB,EAChB,MAAM,UAAU,CAAC;AAClB,OAAO,KAAK,EAAE,kBAAkB,EAAgD,MAAM,2BAA2B,CAAC;AAoBlH,aAAK,kBAAkB,GAAG;IACzB,OAAO,EAAE;QACR,KAAK,EAAE,CAAC,CAAC,KAAA,EAAE,MAAM,KAAA,KAAK,WAAW,CAAC;KAClC,CAAC;CACF,CAAC;AAEF,qBAAa,gBAAiB,SAAQ,kBAAkB;IAChD,IAAI,kBAA0B;IAC9B,KAAK,EAAE,WAAW,CAAC;IAC1B,MAAM,EAAE,sBAAsB,CAAC;IAC/B,OAAO,EAAE,YAAY,CAAC;gBAGrB,MAAM,EAAE,sBAAsB,EAC9B,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,kBAAkB,EAC1F,OAAO,CAAC,EAAE,gBAAgB;IAkF3B,KAAK,EAAE,kBAAkB,CA0BvB;IAEF,IAAI,MAAM,IAAI,kBAAkB,CAsC/B;IAED,MAAM,QAAa,QAAQ,IAAI,CAAC,CAuJ9B;CACF"}
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,EAElB,gBAAgB,EAChB,MAAM,UAAU,CAAC;AAClB,OAAO,KAAK,EAAE,kBAAkB,EAAgD,MAAM,2BAA2B,CAAC;AAoBlH,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;gBAGrB,MAAM,EAAE,sBAAsB,EAC9B,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,kBAAkB,EAC1F,OAAO,CAAC,EAAE,gBAAgB;IAkF3B,KAAK,EAAE,kBAAkB,CA0BvB;IAEF,IAAI,MAAM,IAAI,kBAAkB,CAsC/B;IAED,MAAM,QAAa,QAAQ,IAAI,CAAC,CA0J9B;CACF"}