@searchspring/snap-controller 0.73.7 → 0.74.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.
@@ -88,6 +88,9 @@ var BACKGROUND_FILTERS_VALUE_FLAGS = [1, 0, '1', '0', 'true', 'false', true, fal
88
88
  var defaultConfig = {
89
89
  id: 'search',
90
90
  globals: {},
91
+ beacon: {
92
+ enabled: true,
93
+ },
91
94
  settings: {
92
95
  redirects: {
93
96
  merchandising: true,
@@ -116,8 +119,12 @@ var SearchController = /** @class */ (function (_super) {
116
119
  _this.track = {
117
120
  banner: {
118
121
  impression: function (_a) {
119
- var _b, _c, _d;
122
+ var _b, _c, _d, _e;
120
123
  var uid = _a.uid, responseId = _a.responseId;
124
+ if (!uid) {
125
+ _this.log.warn('No banner provided to track.banner.impression');
126
+ return;
127
+ }
121
128
  if ((_c = (_b = _this.events[responseId]) === null || _b === void 0 ? void 0 : _b.banner[uid]) === null || _c === void 0 ? void 0 : _c.impression) {
122
129
  return;
123
130
  }
@@ -128,12 +135,16 @@ var SearchController = /** @class */ (function (_super) {
128
135
  results: [],
129
136
  };
130
137
  _this.eventManager.fire('track.banner.impression', { controller: _this, product: { uid: uid }, trackEvent: data });
131
- _this.tracker.events[_this.page.type].impression({ data: data, siteId: (_d = _this.config.globals) === null || _d === void 0 ? void 0 : _d.siteId });
138
+ ((_d = _this.config.beacon) === null || _d === void 0 ? void 0 : _d.enabled) && _this.tracker.events[_this.page.type].impression({ data: data, siteId: (_e = _this.config.globals) === null || _e === void 0 ? void 0 : _e.siteId });
132
139
  _this.events[responseId].banner[uid] = _this.events[responseId].banner[uid] || {};
133
140
  _this.events[responseId].banner[uid].impression = true;
134
141
  },
135
142
  click: function (e, banner) {
136
143
  var _a, _b, _c;
144
+ if (!banner) {
145
+ _this.log.warn('No banner provided to track.banner.click');
146
+ return;
147
+ }
137
148
  var responseId = banner.responseId, uid = banner.uid;
138
149
  if ((0, isClickWithinBannerLink_1.isClickWithinBannerLink)(e)) {
139
150
  if ((_c = (_b = (_a = _this.events) === null || _a === void 0 ? void 0 : _a[responseId]) === null || _b === void 0 ? void 0 : _b.banner[uid]) === null || _c === void 0 ? void 0 : _c.clickThrough) {
@@ -148,15 +159,19 @@ var SearchController = /** @class */ (function (_super) {
148
159
  }
149
160
  },
150
161
  clickThrough: function (e, _a) {
151
- var _b;
162
+ var _b, _c;
152
163
  var uid = _a.uid, responseId = _a.responseId;
164
+ if (!uid) {
165
+ _this.log.warn('No banner provided to track.banner.clickThrough');
166
+ return;
167
+ }
153
168
  var banner = { uid: uid };
154
169
  var data = {
155
170
  responseId: responseId,
156
171
  banners: [banner],
157
172
  };
158
173
  _this.eventManager.fire('track.banner.clickThrough', { controller: _this, event: e, product: { uid: uid }, trackEvent: data });
159
- _this.tracker.events[_this.page.type].clickThrough({ data: data, siteId: (_b = _this.config.globals) === null || _b === void 0 ? void 0 : _b.siteId });
174
+ ((_b = _this.config.beacon) === null || _b === void 0 ? void 0 : _b.enabled) && _this.tracker.events[_this.page.type].clickThrough({ data: data, siteId: (_c = _this.config.globals) === null || _c === void 0 ? void 0 : _c.siteId });
160
175
  _this.events[responseId].banner[uid] = _this.events[responseId].banner[uid] || {};
161
176
  _this.events[responseId].banner[uid].clickThrough = true;
162
177
  setTimeout(function () {
@@ -166,7 +181,11 @@ var SearchController = /** @class */ (function (_super) {
166
181
  },
167
182
  product: {
168
183
  clickThrough: function (e, result) {
169
- var _a, _b, _c, _d, _e, _f;
184
+ var _a, _b, _c, _d, _e, _f, _g, _h;
185
+ if (!result) {
186
+ _this.log.warn('No result provided to track.product.clickThrough');
187
+ return;
188
+ }
170
189
  var responseId = result.responseId;
171
190
  var target = e.target;
172
191
  var resultHref = ((_b = (_a = result.display) === null || _a === void 0 ? void 0 : _a.mappings.core) === null || _b === void 0 ? void 0 : _b.url) || ((_c = result.mappings.core) === null || _c === void 0 ? void 0 : _c.url) || '';
@@ -194,21 +213,26 @@ var SearchController = /** @class */ (function (_super) {
194
213
  }
195
214
  // store position data or empty object
196
215
  _this.storage.set('scrollMap', scrollMap);
197
- var item = {
198
- type: result.type,
199
- uid: result.id,
200
- parentId: result.id,
201
- sku: (_e = result.mappings.core) === null || _e === void 0 ? void 0 : _e.sku,
202
- };
216
+ var type = (['product', 'banner'].includes(result.type) ? result.type : 'product');
217
+ var item = __assign({ type: type, uid: result.id ? '' + result.id : '' }, (type === 'product'
218
+ ? {
219
+ parentId: result.id ? '' + result.id : '',
220
+ sku: ((_e = result.mappings.core) === null || _e === void 0 ? void 0 : _e.sku) ? '' + ((_f = result.mappings.core) === null || _f === void 0 ? void 0 : _f.sku) : undefined,
221
+ }
222
+ : {}));
203
223
  var data = {
204
224
  responseId: responseId,
205
225
  results: [item],
206
226
  };
207
227
  _this.eventManager.fire('track.product.clickThrough', { controller: _this, event: e, product: result, trackEvent: data });
208
- _this.tracker.events[_this.page.type].clickThrough({ data: data, siteId: (_f = _this.config.globals) === null || _f === void 0 ? void 0 : _f.siteId });
228
+ ((_g = _this.config.beacon) === null || _g === void 0 ? void 0 : _g.enabled) && _this.tracker.events[_this.page.type].clickThrough({ data: data, siteId: (_h = _this.config.globals) === null || _h === void 0 ? void 0 : _h.siteId });
209
229
  },
210
230
  click: function (e, result) {
211
231
  var _a, _b, _c, _d, _e, _f;
232
+ if (!result) {
233
+ _this.log.warn('No result provided to track.product.click');
234
+ return;
235
+ }
212
236
  var responseId = result.responseId;
213
237
  if (result.type === 'banner' && (0, isClickWithinBannerLink_1.isClickWithinBannerLink)(e)) {
214
238
  if ((_c = (_b = (_a = _this.events) === null || _a === void 0 ? void 0 : _a[responseId]) === null || _b === void 0 ? void 0 : _b.product[result.id]) === null || _c === void 0 ? void 0 : _c.inlineBannerClickThrough) {
@@ -234,29 +258,38 @@ var SearchController = /** @class */ (function (_super) {
234
258
  }
235
259
  },
236
260
  impression: function (result) {
237
- var _a, _b, _c, _d;
261
+ var _a, _b, _c, _d, _e, _f;
262
+ if (!result) {
263
+ _this.log.warn('No result provided to track.product.impression');
264
+ return;
265
+ }
238
266
  var responseId = result.responseId;
239
267
  if ((_b = (_a = _this.events[responseId]) === null || _a === void 0 ? void 0 : _a.product[result.id]) === null || _b === void 0 ? void 0 : _b.impression) {
240
268
  return;
241
269
  }
242
- var item = {
243
- type: result.type,
244
- uid: result.id,
245
- parentId: result.id,
246
- sku: (_c = result.mappings.core) === null || _c === void 0 ? void 0 : _c.sku,
247
- };
270
+ var type = (['product', 'banner'].includes(result.type) ? result.type : 'product');
271
+ var item = __assign({ type: type, uid: result.id ? '' + result.id : '' }, (type === 'product'
272
+ ? {
273
+ parentId: result.id ? '' + result.id : '',
274
+ sku: ((_c = result.mappings.core) === null || _c === void 0 ? void 0 : _c.sku) ? '' + ((_d = result.mappings.core) === null || _d === void 0 ? void 0 : _d.sku) : undefined,
275
+ }
276
+ : {}));
248
277
  var data = {
249
278
  responseId: responseId,
250
279
  results: [item],
251
280
  banners: [],
252
281
  };
253
282
  _this.eventManager.fire('track.product.impression', { controller: _this, product: result, trackEvent: data });
254
- _this.tracker.events[_this.page.type].impression({ data: data, siteId: (_d = _this.config.globals) === null || _d === void 0 ? void 0 : _d.siteId });
283
+ ((_e = _this.config.beacon) === null || _e === void 0 ? void 0 : _e.enabled) && _this.tracker.events[_this.page.type].impression({ data: data, siteId: (_f = _this.config.globals) === null || _f === void 0 ? void 0 : _f.siteId });
255
284
  _this.events[responseId].product[result.id] = _this.events[responseId].product[result.id] || {};
256
285
  _this.events[responseId].product[result.id].impression = true;
257
286
  },
258
287
  addToCart: function (result) {
259
- var _a, _b, _c;
288
+ var _a, _b, _c, _d;
289
+ if (!result) {
290
+ _this.log.warn('No result provided to track.product.addToCart');
291
+ return;
292
+ }
260
293
  var responseId = result.responseId;
261
294
  var product = {
262
295
  parentId: result.id,
@@ -270,34 +303,38 @@ var SearchController = /** @class */ (function (_super) {
270
303
  results: [product],
271
304
  };
272
305
  _this.eventManager.fire('track.product.addToCart', { controller: _this, product: result, trackEvent: data });
273
- _this.tracker.events[_this.page.type].addToCart({ data: data, siteId: (_c = _this.config.globals) === null || _c === void 0 ? void 0 : _c.siteId });
306
+ ((_c = _this.config.beacon) === null || _c === void 0 ? void 0 : _c.enabled) && _this.tracker.events[_this.page.type].addToCart({ data: data, siteId: (_d = _this.config.globals) === null || _d === void 0 ? void 0 : _d.siteId });
274
307
  },
275
308
  },
276
309
  redirect: function (_a) {
277
- var _b;
310
+ var _b, _c;
278
311
  var redirectURL = _a.redirectURL, responseId = _a.responseId;
312
+ if (!redirectURL) {
313
+ _this.log.warn('No redirectURL provided to track.redirect');
314
+ return;
315
+ }
279
316
  var data = {
280
317
  responseId: responseId,
281
318
  redirect: redirectURL,
282
319
  };
283
320
  _this.eventManager.fire('track.redirect', { controller: _this, redirectURL: redirectURL, trackEvent: data });
284
- _this.tracker.events.search.redirect({ data: data, siteId: (_b = _this.config.globals) === null || _b === void 0 ? void 0 : _b.siteId });
321
+ ((_b = _this.config.beacon) === null || _b === void 0 ? void 0 : _b.enabled) && _this.tracker.events.search.redirect({ data: data, siteId: (_c = _this.config.globals) === null || _c === void 0 ? void 0 : _c.siteId });
285
322
  },
286
323
  };
287
324
  _this.search = function () { return __awaiter(_this, void 0, void 0, function () {
288
- var params_1, err_1, stringyParams, prevStringyParams, searchProfile, meta, response, preventBackfill, dontBackfill, backfillRequestsParams_1, backfillRequests, backfillResponses, backfillResults, responseId, responseId, afterSearchProfile, err_2, afterStoreProfile, err_3, err_4;
325
+ var params_1, err_1, stringyParams, prevStringyParams, searchProfile, meta, response, preventBackfill, dontBackfill, backfillRequestsParams_1, backfillRequests, backfillResponses, backfillResults, responseId, responseId, afterSearchProfile, err_2, data, afterStoreProfile, err_3, err_4;
289
326
  var _a, _b;
290
327
  var _this = this;
291
- var _c, _d, _e, _f, _g, _h, _j, _k, _l, _m;
292
- return __generator(this, function (_o) {
293
- switch (_o.label) {
328
+ var _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p;
329
+ return __generator(this, function (_q) {
330
+ switch (_q.label) {
294
331
  case 0:
295
- _o.trys.push([0, 22, 23, 24]);
332
+ _q.trys.push([0, 22, 23, 24]);
296
333
  if (!!this.initialized) return [3 /*break*/, 2];
297
334
  return [4 /*yield*/, this.init()];
298
335
  case 1:
299
- _o.sent();
300
- _o.label = 2;
336
+ _q.sent();
337
+ _q.label = 2;
301
338
  case 2:
302
339
  params_1 = this.params;
303
340
  if (((_d = (_c = params_1.search) === null || _c === void 0 ? void 0 : _c.query) === null || _d === void 0 ? void 0 : _d.string) && ((_f = (_e = params_1.search) === null || _e === void 0 ? void 0 : _e.query) === null || _f === void 0 ? void 0 : _f.string.length)) {
@@ -305,18 +342,18 @@ var SearchController = /** @class */ (function (_super) {
305
342
  this.store.history.save(params_1.search.query.string);
306
343
  }
307
344
  this.store.loading = true;
308
- _o.label = 3;
345
+ _q.label = 3;
309
346
  case 3:
310
- _o.trys.push([3, 5, , 6]);
347
+ _q.trys.push([3, 5, , 6]);
311
348
  return [4 /*yield*/, this.eventManager.fire('beforeSearch', {
312
349
  controller: this,
313
350
  request: params_1,
314
351
  })];
315
352
  case 4:
316
- _o.sent();
353
+ _q.sent();
317
354
  return [3 /*break*/, 6];
318
355
  case 5:
319
- err_1 = _o.sent();
356
+ err_1 = _q.sent();
320
357
  if ((err_1 === null || err_1 === void 0 ? void 0 : err_1.message) == 'cancelled') {
321
358
  this.log.warn("'beforeSearch' middleware cancelled");
322
359
  return [2 /*return*/];
@@ -366,7 +403,7 @@ var SearchController = /** @class */ (function (_super) {
366
403
  });
367
404
  return [4 /*yield*/, Promise.all(backfillRequests)];
368
405
  case 7:
369
- backfillResponses = _o.sent();
406
+ backfillResponses = _q.sent();
370
407
  // backfillResponses are [meta, searchResponse][]
371
408
  // set the meta and response to the first page of backfillResponses
372
409
  meta = backfillResponses[0][0];
@@ -385,12 +422,12 @@ var SearchController = /** @class */ (function (_super) {
385
422
  case 8: return [4 /*yield*/, this.client[this.page.type](params_1)];
386
423
  case 9:
387
424
  // infinite with no backfills.
388
- _a = _o.sent(), meta = _a[0], response = _a[1];
425
+ _a = _q.sent(), meta = _a[0], response = _a[1];
389
426
  responseId = response.tracking.responseId;
390
427
  this.events[responseId] = this.events[responseId] || { product: {}, banner: {} };
391
428
  // append new results to previous results
392
429
  response.results = __spreadArray(__spreadArray([], this.previousResults, true), (response.results || []), true);
393
- _o.label = 10;
430
+ _q.label = 10;
394
431
  case 10: return [3 /*break*/, 13];
395
432
  case 11:
396
433
  // normal request
@@ -398,10 +435,10 @@ var SearchController = /** @class */ (function (_super) {
398
435
  this.previousResults = [];
399
436
  return [4 /*yield*/, this.client[this.page.type](params_1)];
400
437
  case 12:
401
- _b = _o.sent(), meta = _b[0], response = _b[1];
438
+ _b = _q.sent(), meta = _b[0], response = _b[1];
402
439
  responseId = response.tracking.responseId;
403
440
  this.events[responseId] = { product: {}, banner: {} };
404
- _o.label = 13;
441
+ _q.label = 13;
405
442
  case 13:
406
443
  // MockClient will overwrite the client search() method and use SearchData to return mock data which already contains meta data
407
444
  if (!response.meta) {
@@ -410,19 +447,19 @@ var SearchController = /** @class */ (function (_super) {
410
447
  searchProfile.stop();
411
448
  this.log.profile(searchProfile);
412
449
  afterSearchProfile = this.profiler.create({ type: 'event', name: 'afterSearch', context: params_1 }).start();
413
- _o.label = 14;
450
+ _q.label = 14;
414
451
  case 14:
415
- _o.trys.push([14, 16, , 17]);
452
+ _q.trys.push([14, 16, , 17]);
416
453
  return [4 /*yield*/, this.eventManager.fire('afterSearch', {
417
454
  controller: this,
418
455
  request: params_1,
419
456
  response: response,
420
457
  })];
421
458
  case 15:
422
- _o.sent();
459
+ _q.sent();
423
460
  return [3 /*break*/, 17];
424
461
  case 16:
425
- err_2 = _o.sent();
462
+ err_2 = _q.sent();
426
463
  if ((err_2 === null || err_2 === void 0 ? void 0 : err_2.message) == 'cancelled') {
427
464
  this.log.warn("'afterSearch' middleware cancelled");
428
465
  afterSearchProfile.stop();
@@ -440,20 +477,22 @@ var SearchController = /** @class */ (function (_super) {
440
477
  this.previousResults = JSON.parse(JSON.stringify(response.results));
441
478
  // update the store
442
479
  this.store.update(response);
480
+ data = { responseId: response.tracking.responseId };
481
+ ((_o = this.config.beacon) === null || _o === void 0 ? void 0 : _o.enabled) && this.tracker.events[this.page.type].render({ data: data, siteId: (_p = this.config.globals) === null || _p === void 0 ? void 0 : _p.siteId });
443
482
  afterStoreProfile = this.profiler.create({ type: 'event', name: 'afterStore', context: params_1 }).start();
444
- _o.label = 18;
483
+ _q.label = 18;
445
484
  case 18:
446
- _o.trys.push([18, 20, , 21]);
485
+ _q.trys.push([18, 20, , 21]);
447
486
  return [4 /*yield*/, this.eventManager.fire('afterStore', {
448
487
  controller: this,
449
488
  request: params_1,
450
489
  response: response,
451
490
  })];
452
491
  case 19:
453
- _o.sent();
492
+ _q.sent();
454
493
  return [3 /*break*/, 21];
455
494
  case 20:
456
- err_3 = _o.sent();
495
+ err_3 = _q.sent();
457
496
  if ((err_3 === null || err_3 === void 0 ? void 0 : err_3.message) == 'cancelled') {
458
497
  this.log.warn("'afterStore' middleware cancelled");
459
498
  afterStoreProfile.stop();
@@ -469,7 +508,7 @@ var SearchController = /** @class */ (function (_super) {
469
508
  this.log.profile(afterStoreProfile);
470
509
  return [3 /*break*/, 24];
471
510
  case 22:
472
- err_4 = _o.sent();
511
+ err_4 = _q.sent();
473
512
  if (err_4) {
474
513
  if (err_4.err && err_4.fetchDetails) {
475
514
  switch (err_4.fetchDetails.status) {
@@ -521,7 +560,11 @@ var SearchController = /** @class */ (function (_super) {
521
560
  var products;
522
561
  var _this = this;
523
562
  return __generator(this, function (_a) {
524
- products = typeof _products.slice == 'function' ? _products.slice() : [_products];
563
+ products = typeof (_products === null || _products === void 0 ? void 0 : _products.slice) == 'function' ? _products.slice() : [_products];
564
+ if (!_products || products.length === 0) {
565
+ this.log.warn('No products provided to search controller.addToCart');
566
+ return [2 /*return*/];
567
+ }
525
568
  products.forEach(function (product) {
526
569
  _this.track.product.addToCart(product);
527
570
  });
@@ -681,23 +724,20 @@ var SearchController = /** @class */ (function (_super) {
681
724
  }); });
682
725
  }
683
726
  _this.eventManager.on('afterStore', function (search, next) { return __awaiter(_this, void 0, void 0, function () {
684
- var controller, responseId, data, config_1, nonBackgroundFilters;
685
- var _a, _b, _c, _d, _e, _f, _g, _h, _j;
686
- return __generator(this, function (_k) {
687
- switch (_k.label) {
727
+ var controller, config_1, nonBackgroundFilters;
728
+ var _a, _b, _c, _d, _e, _f, _g, _h;
729
+ return __generator(this, function (_j) {
730
+ switch (_j.label) {
688
731
  case 0: return [4 /*yield*/, next()];
689
732
  case 1:
690
- _k.sent();
733
+ _j.sent();
691
734
  controller = search.controller;
692
- responseId = search.response.tracking.responseId;
693
735
  if (controller.store.loaded && !controller.store.error) {
694
- data = { responseId: responseId };
695
- this.tracker.events[this.page.type].render({ data: data, siteId: (_a = this.config.globals) === null || _a === void 0 ? void 0 : _a.siteId });
696
736
  config_1 = search.controller.config;
697
- nonBackgroundFilters = (_c = (_b = search === null || search === void 0 ? void 0 : search.request) === null || _b === void 0 ? void 0 : _b.filters) === null || _c === void 0 ? void 0 : _c.filter(function (filter) { return !filter.background; });
698
- if (((_e = (_d = config_1 === null || config_1 === void 0 ? void 0 : config_1.settings) === null || _d === void 0 ? void 0 : _d.redirects) === null || _e === void 0 ? void 0 : _e.singleResult) &&
699
- ((_g = (_f = search === null || search === void 0 ? void 0 : search.response) === null || _f === void 0 ? void 0 : _f.search) === null || _g === void 0 ? void 0 : _g.query) &&
700
- ((_j = (_h = search === null || search === void 0 ? void 0 : search.response) === null || _h === void 0 ? void 0 : _h.pagination) === null || _j === void 0 ? void 0 : _j.totalResults) === 1 &&
737
+ nonBackgroundFilters = (_b = (_a = search === null || search === void 0 ? void 0 : search.request) === null || _a === void 0 ? void 0 : _a.filters) === null || _b === void 0 ? void 0 : _b.filter(function (filter) { return !filter.background; });
738
+ if (((_d = (_c = config_1 === null || config_1 === void 0 ? void 0 : config_1.settings) === null || _c === void 0 ? void 0 : _c.redirects) === null || _d === void 0 ? void 0 : _d.singleResult) &&
739
+ ((_f = (_e = search === null || search === void 0 ? void 0 : search.response) === null || _e === void 0 ? void 0 : _e.search) === null || _f === void 0 ? void 0 : _f.query) &&
740
+ ((_h = (_g = search === null || search === void 0 ? void 0 : search.response) === null || _g === void 0 ? void 0 : _g.pagination) === null || _h === void 0 ? void 0 : _h.totalResults) === 1 &&
701
741
  !(nonBackgroundFilters === null || nonBackgroundFilters === void 0 ? void 0 : nonBackgroundFilters.length)) {
702
742
  window.location.replace(search === null || search === void 0 ? void 0 : search.response.results[0].mappings.core.url);
703
743
  return [2 /*return*/, false];
@@ -884,8 +924,16 @@ function generateHrefSelector(element, href, levels) {
884
924
  var level = 0;
885
925
  var elem = element;
886
926
  while (elem && level <= levels) {
887
- // check within
888
- var innerHrefElem = elem.querySelector("[href*=\"".concat(href, "\"]"));
927
+ var innerHrefElem = null;
928
+ try {
929
+ innerHrefElem = elem.querySelector("[href*=\"".concat(href, "\"]"));
930
+ }
931
+ catch (e) {
932
+ try {
933
+ innerHrefElem = elem.querySelector((0, css_escape_1.default)("[href*=\"".concat(href, "\"]")));
934
+ }
935
+ catch (_a) { }
936
+ }
889
937
  if (innerHrefElem) {
890
938
  // innerHrefElem was found! now get selectors up to elem that contained it
891
939
  var selector = '';
@@ -1 +1 @@
1
- {"version":3,"file":"isClickWithinProductLink.d.ts","sourceRoot":"","sources":["../../../src/utils/isClickWithinProductLink.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,+BAA+B,CAAC;AAE7D,eAAO,MAAM,yBAAyB,MAAM,CAAC;AAC7C,eAAO,MAAM,gCAAgC,KAAK,CAAC;AAEnD,eAAO,MAAM,wBAAwB,MAAO,UAAU,UAAU,OAAO,KAAG,OAgBzE,CAAC"}
1
+ {"version":3,"file":"isClickWithinProductLink.d.ts","sourceRoot":"","sources":["../../../src/utils/isClickWithinProductLink.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,+BAA+B,CAAC;AAE7D,eAAO,MAAM,yBAAyB,MAAM,CAAC;AAC7C,eAAO,MAAM,gCAAgC,KAAK,CAAC;AAEnD,eAAO,MAAM,wBAAwB,MAAO,UAAU,UAAU,OAAO,KAAG,OAoBzE,CAAC"}
@@ -5,18 +5,20 @@ exports.CLICK_DUPLICATION_TIMEOUT = 300;
5
5
  exports.CLICK_THROUGH_CLOSEST_MAX_LEVELS = 12;
6
6
  var isClickWithinProductLink = function (e, result) {
7
7
  var _a, _b, _c;
8
- var currentElement = e.target;
9
- var href = null;
10
- var level = 0;
11
- var resultCoreUrl = ((_b = (_a = result === null || result === void 0 ? void 0 : result.display) === null || _a === void 0 ? void 0 : _a.mappings.core) === null || _b === void 0 ? void 0 : _b.url) || '';
12
- var resultDisplayUrl = ((_c = result === null || result === void 0 ? void 0 : result.mappings.core) === null || _c === void 0 ? void 0 : _c.url) || '';
13
- while (currentElement && level < exports.CLICK_THROUGH_CLOSEST_MAX_LEVELS) {
14
- href = currentElement.getAttribute('href');
15
- if (href && ((resultCoreUrl && href.includes(resultCoreUrl)) || (resultDisplayUrl && href.includes(resultDisplayUrl)))) {
16
- return true;
8
+ var resultDisplayUrl = ((_b = (_a = result === null || result === void 0 ? void 0 : result.display) === null || _a === void 0 ? void 0 : _a.mappings.core) === null || _b === void 0 ? void 0 : _b.url) || '';
9
+ var resultCoreUrl = ((_c = result === null || result === void 0 ? void 0 : result.mappings.core) === null || _c === void 0 ? void 0 : _c.url) || '';
10
+ // Get the composed path to handle shadow DOM elements
11
+ var path = e.composedPath ? e.composedPath() : [e.target];
12
+ // Check up to CLICK_THROUGH_CLOSEST_MAX_LEVELS elements in the path
13
+ var elementsToCheck = path.slice(0, exports.CLICK_THROUGH_CLOSEST_MAX_LEVELS);
14
+ for (var _i = 0, elementsToCheck_1 = elementsToCheck; _i < elementsToCheck_1.length; _i++) {
15
+ var element = elementsToCheck_1[_i];
16
+ if (element instanceof Element) {
17
+ var href = element.getAttribute('href');
18
+ if (href && ((resultCoreUrl && href.includes(resultCoreUrl)) || (resultDisplayUrl && href.includes(resultDisplayUrl)))) {
19
+ return true;
20
+ }
17
21
  }
18
- currentElement = currentElement.parentElement;
19
- level++;
20
22
  }
21
23
  return false;
22
24
  };
@@ -28,7 +28,6 @@ export declare class AutocompleteController extends AbstractController {
28
28
  store: AutocompleteStore;
29
29
  config: AutocompleteControllerConfig;
30
30
  storage: StorageStore;
31
- private lastSearchQuery;
32
31
  private events;
33
32
  constructor(config: AutocompleteControllerConfig, { client, store, urlManager, eventManager, profiler, logger, tracker }: ControllerServices, context?: ContextVariables);
34
33
  track: AutocompleteTrackMethods;
@@ -1 +1 @@
1
- {"version":3,"file":"AutocompleteController.d.ts","sourceRoot":"","sources":["../../../src/Autocomplete/AutocompleteController.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,YAAY,EAAa,OAAO,EAAE,MAAM,EAAE,0BAA0B,EAAE,MAAM,+BAA+B,CAAC;AACrH,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,EAA6C,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAE9I,OAAO,KAAK,EAAE,wBAAwB,EAA4C,MAAM,2BAA2B,CAAC;AAkBpH,eAAO,MAAM,WAAW,MAAM,CAAC;AA+B/B,KAAK,wBAAwB,GAAG;IAC/B,MAAM,EAAE;QACP,KAAK,EAAE,CAAC,CAAC,EAAE,UAAU,EAAE,mBAAmB,EAAE,0BAA0B,KAAK,IAAI,CAAC;QAChF,YAAY,EAAE,CAAC,CAAC,EAAE,UAAU,EAAE,mBAAmB,EAAE,0BAA0B,KAAK,IAAI,CAAC;QACvF,UAAU,EAAE,CAAC,mBAAmB,EAAE,0BAA0B,KAAK,IAAI,CAAC;KACtE,CAAC;IACF,OAAO,EAAE;QACR,YAAY,EAAE,CAAC,CAAC,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,GAAG,MAAM,KAAK,IAAI,CAAC;QAChE,KAAK,EAAE,CAAC,CAAC,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,GAAG,MAAM,KAAK,IAAI,CAAC;QACzD,UAAU,EAAE,CAAC,MAAM,EAAE,OAAO,GAAG,MAAM,KAAK,IAAI,CAAC;QAC/C,SAAS,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;KACtC,CAAC;IACF,QAAQ,EAAE,CAAC,EAAE,WAAW,EAAE,UAAU,EAAE,EAAE;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC;CAC7F,CAAC;AAEF,qBAAa,sBAAuB,SAAQ,kBAAkB;IACtD,IAAI,kBAAgC;IACnC,KAAK,EAAE,iBAAiB,CAAC;IACzB,MAAM,EAAE,4BAA4B,CAAC;IACtC,OAAO,EAAE,YAAY,CAAC;IAC7B,OAAO,CAAC,eAAe,CAAqB;IAE5C,OAAO,CAAC,MAAM,CAgBP;gBAGN,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;IAwE3B,KAAK,EAAE,wBAAwB,CAwI7B;IAEF,IAAI,MAAM,IAAI,wBAAwB,CAkDrC;IAEK,UAAU,CAAC,YAAY,CAAC,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC;IA2BhE,KAAK,IAAI,IAAI;IASb,QAAQ;;0BAEc,aAAa,KAAG,QAAQ,OAAO,GAAG,SAAS,CAAC;wBAiDpD,aAAa,KAAG,IAAI;uBAMrB,UAAU,KAAG,IAAI;4BAQN,MAAM,SAAS,CAAC,gBAAgB,CAAC,KAAG,QAAQ,IAAI,CAAC;mCA+ChD,MAAM,WAAW,CAAC,gBAAgB,CAAC,KAAG,IAAI;uBAqBtD,KAAK;;;;uBA0DL,UAAU,KAAG,IAAI;;MAS5B;IAEF,MAAM,IAAI,IAAI;IAgBR,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAgF3B,cAAc,QAAa,QAAQ,IAAI,CAAC,CAwBtC;IAEF,MAAM,QAAa,QAAQ,IAAI,CAAC,CA+J9B;IAEF,SAAS,cAAqB,OAAO,EAAE,GAAG,OAAO,KAAG,QAAQ,IAAI,CAAC,CAQ/D;CACF"}
1
+ {"version":3,"file":"AutocompleteController.d.ts","sourceRoot":"","sources":["../../../src/Autocomplete/AutocompleteController.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,YAAY,EAAa,OAAO,EAAE,MAAM,EAAE,0BAA0B,EAAE,MAAM,+BAA+B,CAAC;AACrH,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,EAA6C,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAE9I,OAAO,KAAK,EAAE,wBAAwB,EAA4C,MAAM,2BAA2B,CAAC;AAkBpH,eAAO,MAAM,WAAW,MAAM,CAAC;AAkC/B,KAAK,wBAAwB,GAAG;IAC/B,MAAM,EAAE;QACP,KAAK,EAAE,CAAC,CAAC,EAAE,UAAU,EAAE,mBAAmB,EAAE,0BAA0B,KAAK,IAAI,CAAC;QAChF,YAAY,EAAE,CAAC,CAAC,EAAE,UAAU,EAAE,mBAAmB,EAAE,0BAA0B,KAAK,IAAI,CAAC;QACvF,UAAU,EAAE,CAAC,mBAAmB,EAAE,0BAA0B,KAAK,IAAI,CAAC;KACtE,CAAC;IACF,OAAO,EAAE;QACR,YAAY,EAAE,CAAC,CAAC,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,GAAG,MAAM,KAAK,IAAI,CAAC;QAChE,KAAK,EAAE,CAAC,CAAC,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,GAAG,MAAM,KAAK,IAAI,CAAC;QACzD,UAAU,EAAE,CAAC,MAAM,EAAE,OAAO,GAAG,MAAM,KAAK,IAAI,CAAC;QAC/C,SAAS,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;KACtC,CAAC;IACF,QAAQ,EAAE,CAAC,EAAE,WAAW,EAAE,UAAU,EAAE,EAAE;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC;CAC7F,CAAC;AAEF,qBAAa,sBAAuB,SAAQ,kBAAkB;IACtD,IAAI,kBAAgC;IACnC,KAAK,EAAE,iBAAiB,CAAC;IACzB,MAAM,EAAE,4BAA4B,CAAC;IACtC,OAAO,EAAE,YAAY,CAAC;IAE7B,OAAO,CAAC,MAAM,CAgBP;gBAGN,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;IA8D3B,KAAK,EAAE,wBAAwB,CAkL7B;IAEF,IAAI,MAAM,IAAI,wBAAwB,CAkDrC;IAEK,UAAU,CAAC,YAAY,CAAC,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC;IA2BhE,KAAK,IAAI,IAAI;IASb,QAAQ;;0BAEc,aAAa,KAAG,QAAQ,OAAO,GAAG,SAAS,CAAC;wBAiDpD,aAAa,KAAG,IAAI;uBAMrB,UAAU,KAAG,IAAI;4BAQN,MAAM,SAAS,CAAC,gBAAgB,CAAC,KAAG,QAAQ,IAAI,CAAC;mCA+ChD,MAAM,WAAW,CAAC,gBAAgB,CAAC,KAAG,IAAI;uBAqBtD,KAAK;;;;uBA0DL,UAAU,KAAG,IAAI;;MAS5B;IAEF,MAAM,IAAI,IAAI;IAgBR,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAgF3B,cAAc,QAAa,QAAQ,IAAI,CAAC,CAwBtC;IAEF,MAAM,QAAa,QAAQ,IAAI,CAAC,CAkK9B;IAEF,SAAS,cAAqB,OAAO,EAAE,GAAG,OAAO,KAAG,QAAQ,IAAI,CAAC,CAY/D;CACF"}