@searchspring/snap-controller 0.39.2 → 0.40.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.
@@ -81,6 +81,7 @@ var snap_store_mobx_1 = require("@searchspring/snap-store-mobx");
81
81
  var getParams_1 = require("../utils/getParams");
82
82
  var types_1 = require("../types");
83
83
  var HEIGHT_CHECK_INTERVAL = 50;
84
+ var API_LIMIT = 500;
84
85
  var defaultConfig = {
85
86
  id: 'search',
86
87
  globals: {},
@@ -135,34 +136,38 @@ var SearchController = /** @class */ (function (_super) {
135
136
  },
136
137
  };
137
138
  _this.search = function () { return __awaiter(_this, void 0, void 0, function () {
138
- var params, err_1, stringyParams, prevStringyParams, searchProfile, meta_1, response_1, preventBackfill, dontBackfill, previousResults, backfills, pageSize, meta_2, pagesNeeded1, totalResultsNeeded, apiLimit, backfillParams, pagesNeeded, lastPageCount, i, backfillParams, backfillResults_1, backfillResponses, afterSearchProfile, err_2, afterStoreProfile, err_3, err_4;
139
- var _a, _b;
140
- var _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t;
141
- return __generator(this, function (_u) {
142
- switch (_u.label) {
139
+ var params, err_1, stringyParams, prevStringyParams, searchProfile, meta_1, response_1, preventBackfill, dontBackfill, backfills, pageSize, meta_2, pagesNeeded, _a, backFillPageSize, backFillPages, i, backfillParams, backfillResults_1, backfillResponses, afterSearchProfile, err_2, afterStoreProfile, err_3, err_4;
140
+ var _b, _c;
141
+ var _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w;
142
+ return __generator(this, function (_x) {
143
+ switch (_x.label) {
143
144
  case 0:
144
145
  if (!!this.initialized) return [3 /*break*/, 2];
145
146
  return [4 /*yield*/, this.init()];
146
147
  case 1:
147
- _u.sent();
148
- _u.label = 2;
148
+ _x.sent();
149
+ _x.label = 2;
149
150
  case 2:
150
151
  params = this.params;
151
- _u.label = 3;
152
+ if (((_e = (_d = this.params.search) === null || _d === void 0 ? void 0 : _d.query) === null || _e === void 0 ? void 0 : _e.string) && ((_g = (_f = this.params.search) === null || _f === void 0 ? void 0 : _f.query) === null || _g === void 0 ? void 0 : _g.string.length)) {
153
+ // save it to the history store
154
+ this.store.history.save(this.params.search.query.string);
155
+ }
156
+ _x.label = 3;
152
157
  case 3:
153
- _u.trys.push([3, 26, , 27]);
154
- _u.label = 4;
158
+ _x.trys.push([3, 26, , 27]);
159
+ _x.label = 4;
155
160
  case 4:
156
- _u.trys.push([4, 6, , 7]);
161
+ _x.trys.push([4, 6, , 7]);
157
162
  return [4 /*yield*/, this.eventManager.fire('beforeSearch', {
158
163
  controller: this,
159
164
  request: params,
160
165
  })];
161
166
  case 5:
162
- _u.sent();
167
+ _x.sent();
163
168
  return [3 /*break*/, 7];
164
169
  case 6:
165
- err_1 = _u.sent();
170
+ err_1 = _x.sent();
166
171
  if ((err_1 === null || err_1 === void 0 ? void 0 : err_1.message) == 'cancelled') {
167
172
  this.log.warn("'beforeSearch' middleware cancelled");
168
173
  return [2 /*return*/];
@@ -180,65 +185,61 @@ var SearchController = /** @class */ (function (_super) {
180
185
  return [2 /*return*/];
181
186
  }
182
187
  searchProfile = this.profiler.create({ type: 'event', name: 'search', context: params }).start();
183
- if (!(((_c = this.config.settings) === null || _c === void 0 ? void 0 : _c.infinite) && ((_d = params.pagination) === null || _d === void 0 ? void 0 : _d.page) > 1)) return [3 /*break*/, 15];
184
- preventBackfill = ((_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) > this.config.settings.infinite.backfill;
185
- dontBackfill = !((_g = this.config.settings.infinite) === null || _g === void 0 ? void 0 : _g.backfill) && !this.store.results.length && ((_h = params.pagination) === null || _h === void 0 ? void 0 : _h.page) > 1;
186
- //if the page is higher than the backfill setting redirect back to page 1
188
+ if (!(((_h = this.config.settings) === null || _h === void 0 ? void 0 : _h.infinite) && ((_j = params.pagination) === null || _j === void 0 ? void 0 : _j.page) && params.pagination.page > 1)) return [3 /*break*/, 15];
189
+ preventBackfill = ((_k = this.config.settings.infinite) === null || _k === void 0 ? void 0 : _k.backfill) && !this.store.results.length && params.pagination.page > this.config.settings.infinite.backfill;
190
+ dontBackfill = !((_l = this.config.settings.infinite) === null || _l === void 0 ? void 0 : _l.backfill) && !this.store.results.length;
191
+ // if the page is higher than the backfill setting redirect back to page 1
187
192
  if (preventBackfill || dontBackfill) {
188
193
  this.storage.set('scrollMap', {});
189
194
  this.urlManager.set('page', 1).go();
190
195
  return [2 /*return*/];
191
196
  }
192
- previousResults = this.previousResults;
193
197
  backfills = [];
194
- pageSize = ((_j = params.pagination) === null || _j === void 0 ? void 0 : _j.pageSize) || this.store.pagination.pageSize || this.store.pagination.defaultPageSize;
195
- if (!(((_k = this.config.settings) === null || _k === void 0 ? void 0 : _k.infinite.backfill) && !previousResults.length)) return [3 /*break*/, 10];
198
+ pageSize = ((_m = params.pagination) === null || _m === void 0 ? void 0 : _m.pageSize) || this.store.pagination.pageSize || this.store.pagination.defaultPageSize;
199
+ if (!(((_o = this.config.settings) === null || _o === void 0 ? void 0 : _o.infinite.backfill) && !this.previousResults.length)) return [3 /*break*/, 10];
196
200
  if (!!pageSize) return [3 /*break*/, 9];
197
201
  return [4 /*yield*/, this.client.meta()];
198
202
  case 8:
199
- meta_2 = _u.sent();
200
- pageSize = (_l = meta_2.pagination) === null || _l === void 0 ? void 0 : _l.defaultPageSize;
201
- _u.label = 9;
203
+ meta_2 = _x.sent();
204
+ pageSize = (_p = meta_2.pagination) === null || _p === void 0 ? void 0 : _p.defaultPageSize;
205
+ _x.label = 9;
202
206
  case 9:
203
- pagesNeeded1 = ((_m = params.pagination) === null || _m === void 0 ? void 0 : _m.page) && ((_o = params.pagination) === null || _o === void 0 ? void 0 : _o.page) > ((_p = this.config.settings) === null || _p === void 0 ? void 0 : _p.infinite.backfill)
204
- ? (_q = this.config.settings) === null || _q === void 0 ? void 0 : _q.infinite.backfill
205
- : (_r = params.pagination) === null || _r === void 0 ? void 0 : _r.page;
206
- totalResultsNeeded = pageSize * (pagesNeeded1 || 1);
207
- apiLimit = 500;
208
- // our search api is limited to a certain amount per request.
209
- //so we will need to make more than one request if totalresultsneeded is greater.
210
- if (totalResultsNeeded < apiLimit) {
211
- backfillParams = (0, deepmerge_1.default)(__assign({}, params), { pagination: { pageSize: totalResultsNeeded, page: 1 } });
207
+ // restricting pageSize to the limit
208
+ pageSize = pageSize > API_LIMIT ? API_LIMIT : pageSize;
209
+ pagesNeeded = ((_q = params.pagination) === null || _q === void 0 ? void 0 : _q.page) && ((_r = params.pagination) === null || _r === void 0 ? void 0 : _r.page) > ((_s = this.config.settings) === null || _s === void 0 ? void 0 : _s.infinite.backfill)
210
+ ? (_t = this.config.settings) === null || _t === void 0 ? void 0 : _t.infinite.backfill
211
+ : (_u = params.pagination) === null || _u === void 0 ? void 0 : _u.page;
212
+ _a = backFillSize(pagesNeeded, pageSize), backFillPageSize = _a.size, backFillPages = _a.pages;
213
+ for (i = 1; i <= backFillPages; i++) {
214
+ backfillParams = (0, deepmerge_1.default)(__assign({}, params), { pagination: { pageSize: backFillPageSize, page: i } });
212
215
  backfills.push(this.client.search(backfillParams));
213
216
  }
214
- else {
215
- pagesNeeded = Math.ceil(totalResultsNeeded / apiLimit);
216
- lastPageCount = apiLimit - (pagesNeeded * apiLimit - totalResultsNeeded);
217
- for (i = 1; i <= pagesNeeded; i++) {
218
- backfillParams = (0, deepmerge_1.default)(__assign({}, params), { pagination: { pageSize: i < pagesNeeded ? apiLimit : lastPageCount, page: i } });
219
- backfills.push(this.client.search(backfillParams));
220
- }
221
- }
222
- _u.label = 10;
217
+ _x.label = 10;
223
218
  case 10:
224
219
  if (!(backfills && backfills.length)) return [3 /*break*/, 12];
225
220
  backfillResults_1 = [];
226
221
  return [4 /*yield*/, Promise.all(backfills)];
227
222
  case 11:
228
- backfillResponses = _u.sent();
223
+ backfillResponses = _x.sent();
229
224
  backfillResponses.map(function (_a) {
230
- var Bmeta = _a[0], Bresponse = _a[1];
225
+ var metaBackfill = _a[0], responseBackfill = _a[1];
231
226
  if (!meta_1) {
232
- meta_1 = Bmeta;
227
+ meta_1 = metaBackfill;
233
228
  }
234
229
  if (!response_1) {
235
- response_1 = Bresponse;
236
- backfillResults_1 = response_1.results;
230
+ response_1 = responseBackfill;
237
231
  }
238
- else {
239
- backfillResults_1 = backfillResults_1.concat(Bresponse.results);
232
+ // push results to array
233
+ if (responseBackfill.results) {
234
+ backfillResults_1.push.apply(backfillResults_1, responseBackfill.results);
240
235
  }
241
236
  });
237
+ // overwrite pagination params to expected state
238
+ response_1.pagination.pageSize = pageSize;
239
+ response_1.pagination.totalPages = Math.ceil(response_1.pagination.totalResults / response_1.pagination.pageSize);
240
+ response_1.pagination.page = (_v = params.pagination) === null || _v === void 0 ? void 0 : _v.page;
241
+ // set the response results with results from backfill responses
242
+ response_1.results = backfillResults_1;
242
243
  if (!response_1.meta) {
243
244
  /**
244
245
  * MockClient will overwrite the client search() method and use
@@ -247,17 +248,11 @@ var SearchController = /** @class */ (function (_super) {
247
248
  // @ts-ignore
248
249
  response_1.meta = meta_1;
249
250
  }
250
- //we need to overwrite the pagination params so the ui doesnt get confused.
251
- response_1.pagination.pageSize = pageSize;
252
- response_1.pagination.totalPages = Math.ceil(response_1.pagination.totalResults / response_1.pagination.pageSize);
253
- response_1.pagination.page = (_s = params.pagination) === null || _s === void 0 ? void 0 : _s.page;
254
- //set the response results after all backfill promises are resolved.
255
- response_1.results = backfillResults_1;
256
251
  return [3 /*break*/, 14];
257
252
  case 12: return [4 /*yield*/, this.client.search(params)];
258
253
  case 13:
259
254
  // infinite with no backfills.
260
- _a = _u.sent(), meta_1 = _a[0], response_1 = _a[1];
255
+ _b = _x.sent(), meta_1 = _b[0], response_1 = _b[1];
261
256
  // @ts-ignore
262
257
  if (!response_1.meta) {
263
258
  /**
@@ -268,13 +263,13 @@ var SearchController = /** @class */ (function (_super) {
268
263
  response_1.meta = meta_1;
269
264
  }
270
265
  //append new results to previous results
271
- response_1.results = __spreadArray(__spreadArray([], previousResults, true), (response_1.results || []), true);
272
- _u.label = 14;
266
+ response_1.results = __spreadArray(__spreadArray([], this.previousResults, true), (response_1.results || []), true);
267
+ _x.label = 14;
273
268
  case 14: return [3 /*break*/, 17];
274
269
  case 15: return [4 /*yield*/, this.client.search(params)];
275
270
  case 16:
276
271
  //standard.
277
- _b = _u.sent(), meta_1 = _b[0], response_1 = _b[1];
272
+ _c = _x.sent(), meta_1 = _c[0], response_1 = _c[1];
278
273
  // @ts-ignore
279
274
  if (!response_1.meta) {
280
275
  /**
@@ -284,24 +279,24 @@ var SearchController = /** @class */ (function (_super) {
284
279
  // @ts-ignore
285
280
  response_1.meta = meta_1;
286
281
  }
287
- _u.label = 17;
282
+ _x.label = 17;
288
283
  case 17:
289
284
  searchProfile.stop();
290
285
  this.log.profile(searchProfile);
291
286
  afterSearchProfile = this.profiler.create({ type: 'event', name: 'afterSearch', context: params }).start();
292
- _u.label = 18;
287
+ _x.label = 18;
293
288
  case 18:
294
- _u.trys.push([18, 20, , 21]);
289
+ _x.trys.push([18, 20, , 21]);
295
290
  return [4 /*yield*/, this.eventManager.fire('afterSearch', {
296
291
  controller: this,
297
292
  request: params,
298
293
  response: response_1,
299
294
  })];
300
295
  case 19:
301
- _u.sent();
296
+ _x.sent();
302
297
  return [3 /*break*/, 21];
303
298
  case 20:
304
- err_2 = _u.sent();
299
+ err_2 = _x.sent();
305
300
  if ((err_2 === null || err_2 === void 0 ? void 0 : err_2.message) == 'cancelled') {
306
301
  this.log.warn("'afterSearch' middleware cancelled");
307
302
  afterSearchProfile.stop();
@@ -316,25 +311,25 @@ var SearchController = /** @class */ (function (_super) {
316
311
  afterSearchProfile.stop();
317
312
  this.log.profile(afterSearchProfile);
318
313
  // store previous results for infinite usage
319
- if ((_t = this.config.settings) === null || _t === void 0 ? void 0 : _t.infinite) {
314
+ if ((_w = this.config.settings) === null || _w === void 0 ? void 0 : _w.infinite) {
320
315
  this.previousResults = JSON.parse(JSON.stringify(response_1.results));
321
316
  }
322
317
  // update the store
323
318
  this.store.update(response_1);
324
319
  afterStoreProfile = this.profiler.create({ type: 'event', name: 'afterStore', context: params }).start();
325
- _u.label = 22;
320
+ _x.label = 22;
326
321
  case 22:
327
- _u.trys.push([22, 24, , 25]);
322
+ _x.trys.push([22, 24, , 25]);
328
323
  return [4 /*yield*/, this.eventManager.fire('afterStore', {
329
324
  controller: this,
330
325
  request: params,
331
326
  response: response_1,
332
327
  })];
333
328
  case 23:
334
- _u.sent();
329
+ _x.sent();
335
330
  return [3 /*break*/, 25];
336
331
  case 24:
337
- err_3 = _u.sent();
332
+ err_3 = _x.sent();
338
333
  if ((err_3 === null || err_3 === void 0 ? void 0 : err_3.message) == 'cancelled') {
339
334
  this.log.warn("'afterStore' middleware cancelled");
340
335
  afterStoreProfile.stop();
@@ -350,7 +345,7 @@ var SearchController = /** @class */ (function (_super) {
350
345
  this.log.profile(afterStoreProfile);
351
346
  return [3 /*break*/, 27];
352
347
  case 26:
353
- err_4 = _u.sent();
348
+ err_4 = _x.sent();
354
349
  if (err_4) {
355
350
  switch (err_4) {
356
351
  case 429:
@@ -408,7 +403,7 @@ var SearchController = /** @class */ (function (_super) {
408
403
  }); });
409
404
  // add 'afterSearch' middleware
410
405
  _this.eventManager.on('afterSearch', function (search, next) { return __awaiter(_this, void 0, void 0, function () {
411
- var config, redirectURL, searchStore;
406
+ var config, redirectURL, searchStore, nonBackgroundFilters;
412
407
  var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p;
413
408
  return __generator(this, function (_q) {
414
409
  switch (_q.label) {
@@ -420,10 +415,12 @@ var SearchController = /** @class */ (function (_super) {
420
415
  window.location.replace(redirectURL);
421
416
  return [2 /*return*/, false];
422
417
  }
423
- if (((_h = (_g = config === null || config === void 0 ? void 0 : config.settings) === null || _g === void 0 ? void 0 : _g.redirects) === null || _h === void 0 ? void 0 : _h.singleResult) &&
424
- ((_k = (_j = search === null || search === void 0 ? void 0 : search.response) === null || _j === void 0 ? void 0 : _j.search) === null || _k === void 0 ? void 0 : _k.query) &&
425
- ((_m = (_l = search === null || search === void 0 ? void 0 : search.response) === null || _l === void 0 ? void 0 : _l.pagination) === null || _m === void 0 ? void 0 : _m.totalResults) === 1 &&
426
- !((_p = (_o = search === null || search === void 0 ? void 0 : search.response) === null || _o === void 0 ? void 0 : _o.filters) === null || _p === void 0 ? void 0 : _p.length)) {
418
+ nonBackgroundFilters = (_h = (_g = search === null || search === void 0 ? void 0 : search.request) === null || _g === void 0 ? void 0 : _g.filters) === null || _h === void 0 ? void 0 : _h.filter(function (filter) { return !filter.background; });
419
+ if (((_k = (_j = config === null || config === void 0 ? void 0 : config.settings) === null || _j === void 0 ? void 0 : _j.redirects) === null || _k === void 0 ? void 0 : _k.singleResult) &&
420
+ ((_m = (_l = search === null || search === void 0 ? void 0 : search.response) === null || _l === void 0 ? void 0 : _l.search) === null || _m === void 0 ? void 0 : _m.query) &&
421
+ ((_p = (_o = search === null || search === void 0 ? void 0 : search.response) === null || _o === void 0 ? void 0 : _o.pagination) === null || _p === void 0 ? void 0 : _p.totalResults) === 1 &&
422
+ !(nonBackgroundFilters === null || nonBackgroundFilters === void 0 ? void 0 : nonBackgroundFilters.length) &&
423
+ !search.controller.previousResults.length) {
427
424
  window.location.replace(search === null || search === void 0 ? void 0 : search.response.results[0].mappings.core.url);
428
425
  return [2 /*return*/, false];
429
426
  }
@@ -542,3 +539,10 @@ function getStorableRequestParams(request) {
542
539
  };
543
540
  }
544
541
  exports.getStorableRequestParams = getStorableRequestParams;
542
+ function backFillSize(pages, pageSize) {
543
+ var totalResults = pages * pageSize;
544
+ var numPages = Math.ceil(totalResults / API_LIMIT);
545
+ while (totalResults % numPages)
546
+ numPages++;
547
+ return { size: totalResults / numPages, pages: numPages };
548
+ }
@@ -6,6 +6,7 @@ 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';
8
8
  import type { Logger } from '@searchspring/snap-logger';
9
+ import type { SearchRequestModel } from '@searchspring/snapi-types';
9
10
  export declare type PluginFunction = (cntrlr: AbstractController, ...args: any) => Promise<void> | void;
10
11
  export declare type PluginGrouping = [func: PluginFunction, ...args: unknown[]];
11
12
  export declare type BeforeSearchObj = {
@@ -15,6 +16,7 @@ export declare type BeforeSearchObj = {
15
16
  export declare type AfterSearchObj = {
16
17
  controller: AbstractController;
17
18
  response: any;
19
+ request: SearchRequestModel;
18
20
  };
19
21
  export declare type AfterStoreObj = {
20
22
  controller: AbstractController;
@@ -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 +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;AAuB/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,CA0CrC;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;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;;;;uBA8CpB,UAAU,KAAG,IAAI;;MAS5B;IAEF,MAAM,IAAI,IAAI;IAgBR,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAwE3B,cAAc,QAAa,QAAQ,IAAI,CAAC,CAwBtC;IAEF,MAAM,QAAa,QAAQ,IAAI,CAAC,CAiH9B;CACF"}
1
+ {"version":3,"file":"AutocompleteController.d.ts","sourceRoot":"","sources":["../../../src/Autocomplete/AutocompleteController.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,YAAY,EAA8C,MAAM,+BAA+B,CAAC;AACzG,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;AAuB/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,CA0CrC;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;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;;;;uBAiDpB,UAAU,KAAG,IAAI;;MAS5B;IAEF,MAAM,IAAI,IAAI;IAgBR,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAwE3B,cAAc,QAAa,QAAQ,IAAI,CAAC,CAwBtC;IAEF,MAAM,QAAa,QAAQ,IAAI,CAAC,CAiH9B;CACF"}
@@ -189,8 +189,12 @@ export class AutocompleteController extends AbstractController {
189
189
  if (this.store.trending?.length && this.config.settings?.trending?.showResults) {
190
190
  this.store.trending[0].preview();
191
191
  }
192
+ else if (this.store.history?.length && this.config.settings?.history?.showResults) {
193
+ this.store.history[0].preview();
194
+ }
192
195
  }
193
196
  else {
197
+ this.store.resetTerms();
194
198
  this.handlers.input.timeoutDelay = setTimeout(() => {
195
199
  this.store.state.locks.terms.unlock();
196
200
  this.store.state.locks.facets.unlock();
@@ -1,6 +1,6 @@
1
+ import { BeaconEvent } from '@searchspring/snap-tracker';
1
2
  import { AbstractController } from '../Abstract/AbstractController';
2
3
  import { ControllerTypes } from '../types';
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 = {
@@ -1 +1 @@
1
- {"version":3,"file":"RecommendationController.d.ts","sourceRoot":"","sources":["../../../src/Recommendation/RecommendationController.ts"],"names":[],"mappings":"AAGA,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;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,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,CAsG9B;CACF"}
1
+ {"version":3,"file":"RecommendationController.d.ts","sourceRoot":"","sources":["../../../src/Recommendation/RecommendationController.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AACzD,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AACpE,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAG3C,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,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,CAgM5B;IAEL,IAAI,MAAM,IAAI,6BAA6B,CA0B1C;IAED,MAAM,QAAa,QAAQ,IAAI,CAAC,CAsG9B;CACF"}