@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.
- package/dist/cjs/Autocomplete/AutocompleteController.d.ts +0 -1
- package/dist/cjs/Autocomplete/AutocompleteController.d.ts.map +1 -1
- package/dist/cjs/Autocomplete/AutocompleteController.js +91 -66
- package/dist/cjs/Finder/FinderController.d.ts.map +1 -1
- package/dist/cjs/Finder/FinderController.js +3 -0
- package/dist/cjs/Recommendation/RecommendationController.d.ts.map +1 -1
- package/dist/cjs/Recommendation/RecommendationController.js +67 -57
- package/dist/cjs/Search/SearchController.d.ts.map +1 -1
- package/dist/cjs/Search/SearchController.js +112 -64
- package/dist/cjs/utils/isClickWithinProductLink.d.ts.map +1 -1
- package/dist/cjs/utils/isClickWithinProductLink.js +13 -11
- package/dist/esm/Autocomplete/AutocompleteController.d.ts +0 -1
- package/dist/esm/Autocomplete/AutocompleteController.d.ts.map +1 -1
- package/dist/esm/Autocomplete/AutocompleteController.js +68 -26
- package/dist/esm/Finder/FinderController.d.ts.map +1 -1
- package/dist/esm/Finder/FinderController.js +3 -0
- package/dist/esm/Recommendation/RecommendationController.d.ts.map +1 -1
- package/dist/esm/Recommendation/RecommendationController.js +47 -21
- package/dist/esm/Search/SearchController.d.ts.map +1 -1
- package/dist/esm/Search/SearchController.js +76 -20
- package/dist/esm/utils/isClickWithinProductLink.d.ts.map +1 -1
- package/dist/esm/utils/isClickWithinProductLink.js +12 -11
- package/package.json +10 -10
|
@@ -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: (
|
|
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: (
|
|
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
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
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: (
|
|
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
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
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: (
|
|
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: (
|
|
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: (
|
|
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 (
|
|
293
|
-
switch (
|
|
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
|
-
|
|
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
|
-
|
|
300
|
-
|
|
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
|
-
|
|
345
|
+
_q.label = 3;
|
|
309
346
|
case 3:
|
|
310
|
-
|
|
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
|
-
|
|
353
|
+
_q.sent();
|
|
317
354
|
return [3 /*break*/, 6];
|
|
318
355
|
case 5:
|
|
319
|
-
err_1 =
|
|
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 =
|
|
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 =
|
|
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
|
-
|
|
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 =
|
|
438
|
+
_b = _q.sent(), meta = _b[0], response = _b[1];
|
|
402
439
|
responseId = response.tracking.responseId;
|
|
403
440
|
this.events[responseId] = { product: {}, banner: {} };
|
|
404
|
-
|
|
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
|
-
|
|
450
|
+
_q.label = 14;
|
|
414
451
|
case 14:
|
|
415
|
-
|
|
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
|
-
|
|
459
|
+
_q.sent();
|
|
423
460
|
return [3 /*break*/, 17];
|
|
424
461
|
case 16:
|
|
425
|
-
err_2 =
|
|
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
|
-
|
|
483
|
+
_q.label = 18;
|
|
445
484
|
case 18:
|
|
446
|
-
|
|
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
|
-
|
|
492
|
+
_q.sent();
|
|
454
493
|
return [3 /*break*/, 21];
|
|
455
494
|
case 20:
|
|
456
|
-
err_3 =
|
|
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 =
|
|
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,
|
|
685
|
-
var _a, _b, _c, _d, _e, _f, _g, _h
|
|
686
|
-
return __generator(this, function (
|
|
687
|
-
switch (
|
|
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
|
-
|
|
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 = (
|
|
698
|
-
if (((
|
|
699
|
-
((
|
|
700
|
-
((
|
|
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
|
-
|
|
888
|
-
|
|
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,
|
|
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
|
|
9
|
-
var
|
|
10
|
-
|
|
11
|
-
var
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
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;
|
|
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"}
|