@searchspring/snap-controller 0.61.4 → 0.62.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.
@@ -46,14 +46,15 @@ export class FinderController extends AbstractController {
46
46
  this.store.setService('urlManager', this.urlManager);
47
47
  };
48
48
  this.search = async () => {
49
- if (!this.initialized) {
50
- await this.init();
51
- }
52
- if (this.store.state.persisted) {
53
- return;
54
- }
55
- const params = this.params;
56
49
  try {
50
+ if (!this.initialized) {
51
+ await this.init();
52
+ }
53
+ if (this.store.state.persisted) {
54
+ return;
55
+ }
56
+ const params = this.params;
57
+ this.store.loading = true;
57
58
  try {
58
59
  await this.eventManager.fire('beforeSearch', {
59
60
  controller: this,
@@ -164,9 +165,11 @@ export class FinderController extends AbstractController {
164
165
  this.log.error(err);
165
166
  this.handleError(err);
166
167
  }
167
- this.store.loading = false;
168
168
  }
169
169
  }
170
+ finally {
171
+ this.store.loading = false;
172
+ }
170
173
  };
171
174
  // deep merge config with defaults
172
175
  this.config = deepmerge(defaultConfig, this.config);
@@ -180,11 +183,7 @@ export class FinderController extends AbstractController {
180
183
  };
181
184
  });
182
185
  }
183
- this.eventManager.on('beforeSearch', async (finder, next) => {
184
- finder.controller.store.loading = true;
185
- await next();
186
- });
187
- // TODO: move this to afterStore
186
+ // TODO: remove this aftersearch when store interface changes
188
187
  this.eventManager.on('afterSearch', async (finder, next) => {
189
188
  await next();
190
189
  finder.controller.store.loading = false;
@@ -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,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AACvE,OAAO,KAAK,EAAE,8BAA8B,EAAkC,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAErI,KAAK,0BAA0B,GAAG;IACjC,OAAO,EAAE;QACR,KAAK,EAAE,CAAC,CAAC,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,KAAK,WAAW,GAAG,SAAS,CAAC;QACnE,MAAM,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,WAAW,GAAG,SAAS,CAAC;QACrD,UAAU,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,WAAW,GAAG,SAAS,CAAC;QACzD,iBAAiB,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,WAAW,GAAG,SAAS,CAAC;QAChE,aAAa,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,WAAW,GAAG,SAAS,CAAC;KAC5D,CAAC;IACF,KAAK,EAAE,CAAC,CAAC,EAAE,UAAU,KAAK,WAAW,GAAG,SAAS,CAAC;IAClD,SAAS,EAAE,CAAC,CAAC,EAAE,UAAU,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,WAAW,GAAG,SAAS,CAAC;IAC1E,UAAU,EAAE,MAAM,WAAW,GAAG,SAAS,CAAC;IAC1C,MAAM,EAAE,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,KAAK,WAAW,GAAG,SAAS,CAAC;CACzD,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;IA2C3B,KAAK,EAAE,0BAA0B,CAwS5B;IAEL,IAAI,MAAM,IAAI,qBAAqB,CA2BlC;IAED,MAAM,QAAa,QAAQ,IAAI,CAAC,CAuH9B;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,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AACvE,OAAO,KAAK,EAAE,8BAA8B,EAAiB,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAEpH,KAAK,0BAA0B,GAAG;IACjC,OAAO,EAAE;QACR,KAAK,EAAE,CAAC,CAAC,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,KAAK,WAAW,GAAG,SAAS,CAAC;QACnE,MAAM,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,WAAW,GAAG,SAAS,CAAC;QACrD,UAAU,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,WAAW,GAAG,SAAS,CAAC;QACzD,iBAAiB,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,WAAW,GAAG,SAAS,CAAC;QAChE,aAAa,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,WAAW,GAAG,SAAS,CAAC;KAC5D,CAAC;IACF,KAAK,EAAE,CAAC,CAAC,EAAE,UAAU,KAAK,WAAW,GAAG,SAAS,CAAC;IAClD,SAAS,EAAE,CAAC,CAAC,EAAE,UAAU,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,WAAW,GAAG,SAAS,CAAC;IAC1E,UAAU,EAAE,MAAM,WAAW,GAAG,SAAS,CAAC;IAC1C,MAAM,EAAE,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,KAAK,WAAW,GAAG,SAAS,CAAC;CACzD,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;IA4C3B,KAAK,EAAE,0BAA0B,CAwS5B;IAEL,IAAI,MAAM,IAAI,qBAAqB,CA2BlC;IAED,MAAM,QAAa,QAAQ,IAAI,CAAC,CA0H9B;CACF"}
@@ -65,7 +65,7 @@ export class RecommendationController extends AbstractController {
65
65
  product: {
66
66
  id: result.id,
67
67
  mappings: {
68
- core: result.display.mappings.core,
68
+ core: result.mappings.core,
69
69
  },
70
70
  seed: getSeed(),
71
71
  },
@@ -92,7 +92,7 @@ export class RecommendationController extends AbstractController {
92
92
  product: {
93
93
  id: result.id,
94
94
  mappings: {
95
- core: result.display.mappings.core,
95
+ core: result.mappings.core,
96
96
  },
97
97
  seed: getSeed(),
98
98
  },
@@ -120,7 +120,7 @@ export class RecommendationController extends AbstractController {
120
120
  product: {
121
121
  id: result.id,
122
122
  mappings: {
123
- core: result.display.mappings.core,
123
+ core: result.mappings.core,
124
124
  },
125
125
  seed: getSeed(),
126
126
  },
@@ -152,7 +152,7 @@ export class RecommendationController extends AbstractController {
152
152
  product: {
153
153
  id: result.id,
154
154
  mappings: {
155
- core: result.display.mappings.core,
155
+ core: result.mappings.core,
156
156
  },
157
157
  seed: getSeed(),
158
158
  },
@@ -184,7 +184,7 @@ export class RecommendationController extends AbstractController {
184
184
  product: {
185
185
  id: result.id,
186
186
  mappings: {
187
- core: result.display.mappings.core,
187
+ core: result.mappings.core,
188
188
  },
189
189
  seed: getSeed(),
190
190
  },
@@ -213,7 +213,7 @@ export class RecommendationController extends AbstractController {
213
213
  products: results.map((result) => ({
214
214
  id: result.id,
215
215
  mappings: {
216
- core: result.display.mappings.core,
216
+ core: result.mappings.core,
217
217
  },
218
218
  quantity: result.quantity,
219
219
  })),
@@ -311,11 +311,12 @@ export class RecommendationController extends AbstractController {
311
311
  };
312
312
  })();
313
313
  this.search = async () => {
314
- if (!this.initialized) {
315
- await this.init();
316
- }
317
- const params = this.params;
318
314
  try {
315
+ if (!this.initialized) {
316
+ await this.init();
317
+ }
318
+ const params = this.params;
319
+ this.store.loading = true;
319
320
  try {
320
321
  await this.eventManager.fire('beforeSearch', {
321
322
  controller: this,
@@ -420,21 +421,27 @@ export class RecommendationController extends AbstractController {
420
421
  this.log.error(err);
421
422
  this.handleError(err);
422
423
  }
423
- this.store.loading = false;
424
424
  }
425
425
  }
426
+ finally {
427
+ this.store.loading = false;
428
+ }
426
429
  };
427
430
  if (!config.tag) {
428
431
  throw new Error(`Invalid config passed to RecommendationController. The "tag" attribute is required.`);
429
432
  }
433
+ // attach to bfCache restore event and re-run search on the controller
434
+ // enabled by default
435
+ if (config.settings?.searchOnPageShow !== false) {
436
+ window.addEventListener('pageshow', (e) => {
437
+ if (e.persisted && !this.store.error && this.store.loaded && !this.store.loading) {
438
+ this.search();
439
+ }
440
+ });
441
+ }
430
442
  // deep merge config with defaults
431
443
  this.config = deepmerge(defaultConfig, this.config);
432
444
  this.store.setConfig(this.config);
433
- // add 'beforeSearch' middleware
434
- this.eventManager.on('beforeSearch', async (recommend, next) => {
435
- recommend.controller.store.loading = true;
436
- await next();
437
- });
438
445
  // add 'afterStore' middleware
439
446
  this.eventManager.on('afterStore', async (recommend, next) => {
440
447
  await next();
@@ -449,7 +456,6 @@ export class RecommendationController extends AbstractController {
449
456
  this.track.product.removedFromBundle(item);
450
457
  });
451
458
  });
452
- recommend.controller.store.loading = false;
453
459
  });
454
460
  // attach config plugins and event middleware
455
461
  this.use(this.config);
@@ -1 +1 @@
1
- {"version":3,"file":"SearchController.d.ts","sourceRoot":"","sources":["../../../src/Search/SearchController.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AACpE,OAAO,EAAE,YAAY,EAAa,MAAM,+BAA+B,CAAC;AAExE,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAE3C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAC9D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,KAAK,EACX,sBAAsB,EAItB,kBAAkB,EAClB,gBAAgB,EAGhB,MAAM,UAAU,CAAC;AAElB,OAAO,KAAK,EACX,kBAAkB,EAKlB,MAAM,2BAA2B,CAAC;AAmBnC,KAAK,kBAAkB,GAAG;IACzB,OAAO,EAAE;QACR,KAAK,EAAE,CAAC,CAAC,EAAE,UAAU,EAAE,MAAM,EAAE,GAAG,KAAK,WAAW,GAAG,SAAS,CAAC;KAC/D,CAAC;CACF,CAAC;AAEF,qBAAa,gBAAiB,SAAQ,kBAAkB;IAChD,IAAI,kBAA0B;IAC7B,KAAK,EAAE,WAAW,CAAC;IACnB,MAAM,EAAE,sBAAsB,CAAC;IACvC,OAAO,EAAE,YAAY,CAAC;IACtB,OAAO,CAAC,eAAe,CAAwC;gBAG9D,MAAM,EAAE,sBAAsB,EAC9B,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,kBAAkB,EAC1F,OAAO,CAAC,EAAE,gBAAgB;IAgK3B,KAAK,EAAE,kBAAkB,CA+CvB;IAEF,IAAI,MAAM,IAAI,kBAAkB,CAiD/B;IAED,MAAM,QAAa,QAAQ,IAAI,CAAC,CAkN9B;CACF;AAED,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,kBAAkB,GAAG,kBAAkB,CAiBxF;AAED,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,SAAI,GAAG,MAAM,GAAG,SAAS,CAgCvG"}
1
+ {"version":3,"file":"SearchController.d.ts","sourceRoot":"","sources":["../../../src/Search/SearchController.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AACpE,OAAO,EAAE,YAAY,EAAa,MAAM,+BAA+B,CAAC;AAExE,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,EAGtB,kBAAkB,EAClB,gBAAgB,EAGhB,MAAM,UAAU,CAAC;AAElB,OAAO,KAAK,EACX,kBAAkB,EAKlB,MAAM,2BAA2B,CAAC;AAmBnC,KAAK,kBAAkB,GAAG;IACzB,OAAO,EAAE;QACR,KAAK,EAAE,CAAC,CAAC,EAAE,UAAU,EAAE,MAAM,EAAE,GAAG,KAAK,WAAW,GAAG,SAAS,CAAC;KAC/D,CAAC;CACF,CAAC;AAEF,qBAAa,gBAAiB,SAAQ,kBAAkB;IAChD,IAAI,kBAA0B;IAC7B,KAAK,EAAE,WAAW,CAAC;IACnB,MAAM,EAAE,sBAAsB,CAAC;IACvC,OAAO,EAAE,YAAY,CAAC;IACtB,OAAO,CAAC,eAAe,CAAwC;gBAG9D,MAAM,EAAE,sBAAsB,EAC9B,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,kBAAkB,EAC1F,OAAO,CAAC,EAAE,gBAAgB;IAuJ3B,KAAK,EAAE,kBAAkB,CA+CvB;IAEF,IAAI,MAAM,IAAI,kBAAkB,CAiD/B;IAED,MAAM,QAAa,QAAQ,IAAI,CAAC,CAmN9B;CACF;AAED,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,kBAAkB,GAAG,kBAAkB,CAiBxF;AAED,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,SAAI,GAAG,MAAM,GAAG,SAAS,CAgCvG"}
@@ -67,15 +67,16 @@ export class SearchController extends AbstractController {
67
67
  },
68
68
  };
69
69
  this.search = async () => {
70
- if (!this.initialized) {
71
- await this.init();
72
- }
73
- const params = this.params;
74
- if (this.params.search?.query?.string && this.params.search?.query?.string.length) {
75
- // save it to the history store
76
- this.store.history.save(this.params.search.query.string);
77
- }
78
70
  try {
71
+ if (!this.initialized) {
72
+ await this.init();
73
+ }
74
+ const params = this.params;
75
+ if (this.params.search?.query?.string && this.params.search?.query?.string.length) {
76
+ // save it to the history store
77
+ this.store.history.save(this.params.search.query.string);
78
+ }
79
+ this.store.loading = true;
79
80
  try {
80
81
  await this.eventManager.fire('beforeSearch', {
81
82
  controller: this,
@@ -250,9 +251,11 @@ export class SearchController extends AbstractController {
250
251
  this.log.error(err);
251
252
  this.handleError(err);
252
253
  }
253
- this.store.loading = false;
254
254
  }
255
255
  }
256
+ finally {
257
+ this.store.loading = false;
258
+ }
256
259
  };
257
260
  // deep merge config with defaults
258
261
  this.config = deepmerge(defaultConfig, this.config);
@@ -267,11 +270,6 @@ export class SearchController extends AbstractController {
267
270
  });
268
271
  // set last params to undefined for compare in search
269
272
  this.storage.set('lastStringyParams', undefined);
270
- // add 'beforeSearch' middleware
271
- this.eventManager.on('beforeSearch', async (search, next) => {
272
- search.controller.store.loading = true;
273
- await next();
274
- });
275
273
  // add 'afterSearch' middleware
276
274
  this.eventManager.on('afterSearch', async (search, next) => {
277
275
  const config = search.controller.config;
@@ -306,7 +304,6 @@ export class SearchController extends AbstractController {
306
304
  this.storage.set('scrollMap', {});
307
305
  }
308
306
  await this.eventManager.fire('restorePosition', { controller: this, element: elementPosition });
309
- search.controller.store.loading = false;
310
307
  });
311
308
  // restore position
312
309
  if (this.config.settings?.restorePosition?.enabled) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@searchspring/snap-controller",
3
- "version": "0.61.4",
3
+ "version": "0.62.0",
4
4
  "description": "Snap Controllers",
5
5
  "main": "dist/cjs/index.js",
6
6
  "module": "dist/esm/index.js",
@@ -20,22 +20,22 @@
20
20
  "test:watch": "jest --watch"
21
21
  },
22
22
  "dependencies": {
23
- "@searchspring/snap-toolbox": "^0.61.4",
23
+ "@searchspring/snap-toolbox": "^0.62.0",
24
24
  "css.escape": "1.5.1",
25
25
  "deepmerge": "4.3.1"
26
26
  },
27
27
  "devDependencies": {
28
- "@searchspring/snap-client": "^0.61.4",
29
- "@searchspring/snap-event-manager": "^0.61.4",
30
- "@searchspring/snap-logger": "^0.61.4",
31
- "@searchspring/snap-profiler": "^0.61.4",
32
- "@searchspring/snap-store-mobx": "^0.61.4",
33
- "@searchspring/snap-tracker": "^0.61.4",
34
- "@searchspring/snap-url-manager": "^0.61.4"
28
+ "@searchspring/snap-client": "^0.62.0",
29
+ "@searchspring/snap-event-manager": "^0.62.0",
30
+ "@searchspring/snap-logger": "^0.62.0",
31
+ "@searchspring/snap-profiler": "^0.62.0",
32
+ "@searchspring/snap-store-mobx": "^0.62.0",
33
+ "@searchspring/snap-tracker": "^0.62.0",
34
+ "@searchspring/snap-url-manager": "^0.62.0"
35
35
  },
36
36
  "sideEffects": false,
37
37
  "files": [
38
38
  "dist/**/*"
39
39
  ],
40
- "gitHead": "13e39b72deb62eb103e39729201de494903969c1"
40
+ "gitHead": "2c9561e8b0097a44c5587bc5629068b06041385f"
41
41
  }