@searchspring/snap-controller 0.30.1 → 0.32.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"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,EAAE,sBAAsB,EAAkD,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAE7I,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"}
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,EAAE,sBAAsB,EAAkD,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAE7I,OAAO,KAAK,EAAE,kBAAkB,EAA2E,MAAM,2BAA2B,CAAC;AAoB7I,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;IAmG3B,KAAK,EAAE,kBAAkB,CAwCvB;IAEF,IAAI,MAAM,IAAI,kBAAkB,CAsC/B;IAED,MAAM,QAAa,QAAQ,IAAI,CAAC,CA0J9B;CACF"}
@@ -100,23 +100,37 @@ var SearchController = /** @class */ (function (_super) {
100
100
  __extends(SearchController, _super);
101
101
  function SearchController(config, _a, context) {
102
102
  var client = _a.client, store = _a.store, urlManager = _a.urlManager, eventManager = _a.eventManager, profiler = _a.profiler, logger = _a.logger, tracker = _a.tracker;
103
- var _this = _super.call(this, config, { client: client, store: store, urlManager: urlManager, eventManager: eventManager, profiler: profiler, logger: logger, tracker: tracker }, context) || this;
103
+ var _this = this;
104
+ var _b, _c, _d;
105
+ _this = _super.call(this, config, { client: client, store: store, urlManager: urlManager, eventManager: eventManager, profiler: profiler, logger: logger, tracker: tracker }, context) || this;
104
106
  _this.type = types_1.ControllerTypes.search;
105
107
  _this.track = {
106
108
  product: {
107
109
  click: function (e, result) {
108
- var _a, _b;
110
+ var _a, _b, _c, _d;
109
111
  // store scroll position
110
112
  if ((_a = _this.config.settings) === null || _a === void 0 ? void 0 : _a.infinite) {
111
113
  var stringyParams = _this.storage.get('lastStringyParams');
114
+ var paramsObj = JSON.parse(stringyParams);
115
+ if ((_b = paramsObj === null || paramsObj === void 0 ? void 0 : paramsObj.search) === null || _b === void 0 ? void 0 : _b.redirectResponse) {
116
+ (_c = paramsObj === null || paramsObj === void 0 ? void 0 : paramsObj.search) === null || _c === void 0 ? true : delete _c.redirectResponse;
117
+ if ((paramsObj === null || paramsObj === void 0 ? void 0 : paramsObj.search) && Object.keys(paramsObj === null || paramsObj === void 0 ? void 0 : paramsObj.search).length === 0) {
118
+ // if redirectResponse was the only key, also delete the empty search object
119
+ delete paramsObj.search;
120
+ }
121
+ }
122
+ if (paramsObj === null || paramsObj === void 0 ? void 0 : paramsObj.personalization) {
123
+ paramsObj === null || paramsObj === void 0 ? true : delete paramsObj.personalization;
124
+ }
125
+ stringyParams = JSON.stringify(paramsObj);
112
126
  var scrollMap = {};
113
127
  scrollMap[stringyParams] = window.scrollY;
114
128
  _this.storage.set('scrollMap', scrollMap);
115
129
  }
116
130
  // track
117
- var _c = result.attributes, intellisuggestData = _c.intellisuggestData, intellisuggestSignature = _c.intellisuggestSignature;
131
+ var _e = result.attributes, intellisuggestData = _e.intellisuggestData, intellisuggestSignature = _e.intellisuggestSignature;
118
132
  var target = e.target;
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;
133
+ var href = (target === null || target === void 0 ? void 0 : target.href) || ((_d = result.mappings.core) === null || _d === void 0 ? void 0 : _d.url) || undefined;
120
134
  var event = _this.tracker.track.product.click({
121
135
  intellisuggestData: intellisuggestData,
122
136
  intellisuggestSignature: intellisuggestSignature,
@@ -129,32 +143,32 @@ var SearchController = /** @class */ (function (_super) {
129
143
  };
130
144
  _this.search = function () { return __awaiter(_this, void 0, void 0, function () {
131
145
  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, _j, _k, _l;
133
- return __generator(this, function (_m) {
134
- switch (_m.label) {
146
+ var _b, _c, _d, _e, _f, _g, _h, _j, _k;
147
+ return __generator(this, function (_l) {
148
+ switch (_l.label) {
135
149
  case 0:
136
150
  if (!!this.initialized) return [3 /*break*/, 2];
137
151
  return [4 /*yield*/, this.init()];
138
152
  case 1:
139
- _m.sent();
140
- _m.label = 2;
153
+ _l.sent();
154
+ _l.label = 2;
141
155
  case 2:
142
156
  params = this.params;
143
- _m.label = 3;
157
+ _l.label = 3;
144
158
  case 3:
145
- _m.trys.push([3, 20, , 21]);
146
- _m.label = 4;
159
+ _l.trys.push([3, 20, , 21]);
160
+ _l.label = 4;
147
161
  case 4:
148
- _m.trys.push([4, 6, , 7]);
162
+ _l.trys.push([4, 6, , 7]);
149
163
  return [4 /*yield*/, this.eventManager.fire('beforeSearch', {
150
164
  controller: this,
151
165
  request: params,
152
166
  })];
153
167
  case 5:
154
- _m.sent();
168
+ _l.sent();
155
169
  return [3 /*break*/, 7];
156
170
  case 6:
157
- err_1 = _m.sent();
171
+ err_1 = _l.sent();
158
172
  if ((err_1 === null || err_1 === void 0 ? void 0 : err_1.message) == 'cancelled') {
159
173
  this.log.warn("'beforeSearch' middleware cancelled");
160
174
  return [2 /*return*/];
@@ -183,7 +197,7 @@ var SearchController = /** @class */ (function (_super) {
183
197
  searchProfile = this.profiler.create({ type: 'event', name: 'search', context: params }).start();
184
198
  return [4 /*yield*/, this.client.search(params)];
185
199
  case 8:
186
- _a = _m.sent(), meta = _a[0], response = _a[1];
200
+ _a = _l.sent(), meta = _a[0], response = _a[1];
187
201
  // @ts-ignore
188
202
  if (!response.meta) {
189
203
  /**
@@ -194,41 +208,41 @@ var SearchController = /** @class */ (function (_super) {
194
208
  response.meta = meta;
195
209
  }
196
210
  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];
211
+ previousResults_1 = JSON.parse(JSON.stringify(this.store.results)) || [];
212
+ if (!(((_j = this.config.settings) === null || _j === void 0 ? void 0 : _j.infinite.backfill) && !previousResults_1.length)) return [3 /*break*/, 10];
199
213
  backfills = [];
200
- for (page = 1; page < ((_l = params.pagination) === null || _l === void 0 ? void 0 : _l.page); page++) {
214
+ for (page = 1; page < ((_k = params.pagination) === null || _k === void 0 ? void 0 : _k.page); page++) {
201
215
  backfillParams = (0, deepmerge_1.default)(__assign({}, params), { pagination: { page: page } });
202
216
  backfills.push(this.client.search(backfillParams));
203
217
  }
204
218
  return [4 /*yield*/, Promise.all(backfills)];
205
219
  case 9:
206
- backfillResponses = _m.sent();
220
+ backfillResponses = _l.sent();
207
221
  backfillResponses.map(function (_a) {
208
222
  var meta = _a[0], data = _a[1];
209
223
  previousResults_1 = previousResults_1.concat(data.results);
210
224
  });
211
- _m.label = 10;
225
+ _l.label = 10;
212
226
  case 10:
213
227
  response.results = __spreadArray(__spreadArray([], previousResults_1, true), (response.results || []), true);
214
- _m.label = 11;
228
+ _l.label = 11;
215
229
  case 11:
216
230
  searchProfile.stop();
217
231
  this.log.profile(searchProfile);
218
232
  afterSearchProfile = this.profiler.create({ type: 'event', name: 'afterSearch', context: params }).start();
219
- _m.label = 12;
233
+ _l.label = 12;
220
234
  case 12:
221
- _m.trys.push([12, 14, , 15]);
235
+ _l.trys.push([12, 14, , 15]);
222
236
  return [4 /*yield*/, this.eventManager.fire('afterSearch', {
223
237
  controller: this,
224
238
  request: params,
225
239
  response: response,
226
240
  })];
227
241
  case 13:
228
- _m.sent();
242
+ _l.sent();
229
243
  return [3 /*break*/, 15];
230
244
  case 14:
231
- err_2 = _m.sent();
245
+ err_2 = _l.sent();
232
246
  if ((err_2 === null || err_2 === void 0 ? void 0 : err_2.message) == 'cancelled') {
233
247
  this.log.warn("'afterSearch' middleware cancelled");
234
248
  afterSearchProfile.stop();
@@ -246,19 +260,19 @@ var SearchController = /** @class */ (function (_super) {
246
260
  // @ts-ignore
247
261
  this.store.update(response);
248
262
  afterStoreProfile = this.profiler.create({ type: 'event', name: 'afterStore', context: params }).start();
249
- _m.label = 16;
263
+ _l.label = 16;
250
264
  case 16:
251
- _m.trys.push([16, 18, , 19]);
265
+ _l.trys.push([16, 18, , 19]);
252
266
  return [4 /*yield*/, this.eventManager.fire('afterStore', {
253
267
  controller: this,
254
268
  request: params,
255
269
  response: response,
256
270
  })];
257
271
  case 17:
258
- _m.sent();
272
+ _l.sent();
259
273
  return [3 /*break*/, 19];
260
274
  case 18:
261
- err_3 = _m.sent();
275
+ err_3 = _l.sent();
262
276
  if ((err_3 === null || err_3 === void 0 ? void 0 : err_3.message) == 'cancelled') {
263
277
  this.log.warn("'afterStore' middleware cancelled");
264
278
  afterStoreProfile.stop();
@@ -274,7 +288,7 @@ var SearchController = /** @class */ (function (_super) {
274
288
  this.log.profile(afterStoreProfile);
275
289
  return [3 /*break*/, 21];
276
290
  case 20:
277
- err_4 = _m.sent();
291
+ err_4 = _l.sent();
278
292
  if (err_4) {
279
293
  switch (err_4) {
280
294
  case 429:
@@ -306,6 +320,12 @@ var SearchController = /** @class */ (function (_super) {
306
320
  }); };
307
321
  // deep merge config with defaults
308
322
  _this.config = (0, deepmerge_1.default)(defaultConfig, _this.config);
323
+ if (((_b = _this.config.settings) === null || _b === void 0 ? void 0 : _b.infinite) && typeof _this.config.settings.infinite.restorePosition == 'undefined') {
324
+ _this.config.settings.infinite.restorePosition = true;
325
+ }
326
+ if ((window === null || window === void 0 ? void 0 : window.history) && ((_d = (_c = _this.config.settings) === null || _c === void 0 ? void 0 : _c.infinite) === null || _d === void 0 ? void 0 : _d.restorePosition)) {
327
+ window.history.scrollRestoration = 'manual';
328
+ }
309
329
  _this.store.setConfig(_this.config);
310
330
  _this.storage = new snap_store_mobx_1.StorageStore({
311
331
  type: snap_store_mobx_1.StorageType.SESSION,
@@ -355,18 +375,26 @@ var SearchController = /** @class */ (function (_super) {
355
375
  });
356
376
  }); });
357
377
  _this.eventManager.on('afterStore', function (search, next) { return __awaiter(_this, void 0, void 0, function () {
358
- var stringyParams, scrollMap_1, scrollToPosition_1, checkCount_1, heightCheck_1;
378
+ var requestParams, stringyParams, scrollMap_1, scrollToPosition_1, checkCount_1, heightCheck_1;
359
379
  var _this = this;
360
- var _a;
361
- return __generator(this, function (_b) {
362
- switch (_b.label) {
380
+ var _a, _b, _c;
381
+ return __generator(this, function (_d) {
382
+ switch (_d.label) {
363
383
  case 0: return [4 /*yield*/, next()];
364
384
  case 1:
365
- _b.sent();
385
+ _d.sent();
366
386
  search.controller.store.loading = false;
367
- stringyParams = JSON.stringify(search.request);
368
- this.storage.set('lastStringyParams', stringyParams);
369
- if (((_a = this.config.settings) === null || _a === void 0 ? void 0 : _a.infinite) && window.scrollY === 0) {
387
+ // save last params
388
+ this.storage.set('lastStringyParams', JSON.stringify(search.request));
389
+ requestParams = __assign({}, search.request);
390
+ if (requestParams.personalization) {
391
+ delete requestParams.personalization;
392
+ }
393
+ if ((_a = requestParams === null || requestParams === void 0 ? void 0 : requestParams.search) === null || _a === void 0 ? void 0 : _a.redirectResponse) {
394
+ delete requestParams.search.redirectResponse;
395
+ }
396
+ stringyParams = JSON.stringify(requestParams);
397
+ if ((_c = (_b = this.config.settings) === null || _b === void 0 ? void 0 : _b.infinite) === null || _c === void 0 ? void 0 : _c.restorePosition) {
370
398
  scrollMap_1 = this.storage.get('scrollMap') || {};
371
399
  scrollToPosition_1 = scrollMap_1[stringyParams];
372
400
  if (scrollToPosition_1) {
@@ -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,EAAE,sBAAsB,EAAkD,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAE7I,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"}
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,EAAE,sBAAsB,EAAkD,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAE7I,OAAO,KAAK,EAAE,kBAAkB,EAA2E,MAAM,2BAA2B,CAAC;AAoB7I,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;IAmG3B,KAAK,EAAE,kBAAkB,CAwCvB;IAEF,IAAI,MAAM,IAAI,kBAAkB,CAsC/B;IAED,MAAM,QAAa,QAAQ,IAAI,CAAC,CA0J9B;CACF"}
@@ -28,7 +28,19 @@ export class SearchController extends AbstractController {
28
28
  click: (e, result) => {
29
29
  // store scroll position
30
30
  if (this.config.settings?.infinite) {
31
- const stringyParams = this.storage.get('lastStringyParams');
31
+ let stringyParams = this.storage.get('lastStringyParams');
32
+ const paramsObj = JSON.parse(stringyParams);
33
+ if (paramsObj?.search?.redirectResponse) {
34
+ delete paramsObj?.search?.redirectResponse;
35
+ if (paramsObj?.search && Object.keys(paramsObj?.search).length === 0) {
36
+ // if redirectResponse was the only key, also delete the empty search object
37
+ delete paramsObj.search;
38
+ }
39
+ }
40
+ if (paramsObj?.personalization) {
41
+ delete paramsObj?.personalization;
42
+ }
43
+ stringyParams = JSON.stringify(paramsObj);
32
44
  const scrollMap = {};
33
45
  scrollMap[stringyParams] = window.scrollY;
34
46
  this.storage.set('scrollMap', scrollMap);
@@ -100,7 +112,7 @@ export class SearchController extends AbstractController {
100
112
  // if params.page > 1 and infinite setting exists we should append results
101
113
  if (this.config.settings?.infinite && params.pagination?.page > 1) {
102
114
  // if no results fetch results...
103
- let previousResults = this.store.data?.results || [];
115
+ let previousResults = JSON.parse(JSON.stringify(this.store.results)) || [];
104
116
  if (this.config.settings?.infinite.backfill && !previousResults.length) {
105
117
  // figure out how many pages of results to backfill and wait on all responses
106
118
  const backfills = [];
@@ -192,6 +204,12 @@ export class SearchController extends AbstractController {
192
204
  };
193
205
  // deep merge config with defaults
194
206
  this.config = deepmerge(defaultConfig, this.config);
207
+ if (this.config.settings?.infinite && typeof this.config.settings.infinite.restorePosition == 'undefined') {
208
+ this.config.settings.infinite.restorePosition = true;
209
+ }
210
+ if (window?.history && this.config.settings?.infinite?.restorePosition) {
211
+ window.history.scrollRestoration = 'manual';
212
+ }
195
213
  this.store.setConfig(this.config);
196
214
  this.storage = new StorageStore({
197
215
  type: StorageType.SESSION,
@@ -226,10 +244,17 @@ export class SearchController extends AbstractController {
226
244
  await next();
227
245
  search.controller.store.loading = false;
228
246
  // save last params
229
- const stringyParams = JSON.stringify(search.request);
230
- this.storage.set('lastStringyParams', stringyParams);
231
- if (this.config.settings?.infinite && window.scrollY === 0) {
232
- // browser didn't jump
247
+ this.storage.set('lastStringyParams', JSON.stringify(search.request));
248
+ const requestParams = { ...search.request };
249
+ if (requestParams.personalization) {
250
+ delete requestParams.personalization;
251
+ }
252
+ if (requestParams?.search?.redirectResponse) {
253
+ delete requestParams.search.redirectResponse;
254
+ }
255
+ const stringyParams = JSON.stringify(requestParams);
256
+ if (this.config.settings?.infinite?.restorePosition) {
257
+ // restore the scroll position saved previously
233
258
  const scrollMap = this.storage.get('scrollMap') || {};
234
259
  // interval we ony need to keep checking until the page height > than our stored value
235
260
  const scrollToPosition = scrollMap[stringyParams];
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@searchspring/snap-controller",
3
- "version": "0.30.1",
3
+ "version": "0.32.0",
4
4
  "description": "Snap Controllers",
5
5
  "main": "dist/cjs/index.js",
6
6
  "module": "dist/esm/index.js",
@@ -20,21 +20,21 @@
20
20
  "test:watch": "jest --watch"
21
21
  },
22
22
  "dependencies": {
23
- "@searchspring/snap-toolbox": "^0.30.1",
23
+ "@searchspring/snap-toolbox": "^0.32.0",
24
24
  "deepmerge": "4.2.2"
25
25
  },
26
26
  "devDependencies": {
27
- "@searchspring/snap-client": "^0.30.1",
28
- "@searchspring/snap-event-manager": "^0.30.1",
29
- "@searchspring/snap-logger": "^0.30.1",
30
- "@searchspring/snap-profiler": "^0.30.1",
31
- "@searchspring/snap-store-mobx": "^0.30.1",
32
- "@searchspring/snap-tracker": "^0.30.1",
33
- "@searchspring/snap-url-manager": "^0.30.1"
27
+ "@searchspring/snap-client": "^0.32.0",
28
+ "@searchspring/snap-event-manager": "^0.32.0",
29
+ "@searchspring/snap-logger": "^0.32.0",
30
+ "@searchspring/snap-profiler": "^0.32.0",
31
+ "@searchspring/snap-store-mobx": "^0.32.0",
32
+ "@searchspring/snap-tracker": "^0.32.0",
33
+ "@searchspring/snap-url-manager": "^0.32.0"
34
34
  },
35
35
  "sideEffects": false,
36
36
  "files": [
37
37
  "dist/**/*"
38
38
  ],
39
- "gitHead": "eb57d83253765d71e049f861c65e113f11cc28e3"
39
+ "gitHead": "d63f3b80dca47a54658a6e61c1311044028ff060"
40
40
  }